<?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>90873</bug_id>
          
          <creation_ts>2012-07-10 05:25:48 -0700</creation_ts>
          <short_desc>[WK2] WebKitTestRunner needs to print information about Web intents</short_desc>
          <delta_ts>2012-07-23 13:38:06 -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>bdakin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>kenneth</cc>
    
    <cc>menard</cc>
    
    <cc>ming.jin.web</cc>
    
    <cc>mjs</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>665677</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-10 05:25:48 -0700</bug_when>
    <thetext>The tests under webintents/* expect the WebKitTestRunner to print out information about new intent requests and new intent services registration.

Several test cases should start passing once the information is printed by WTR.
We will then need to implement testRunner.deliverWebIntent() and testRunner.sendWebIntentResponse() to get more test cases to pass (probably in a separate patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665687</commentid>
    <comment_count>1</comment_count>
      <attachid>151446</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-10 05:46:41 -0700</bug_when>
    <thetext>Created attachment 151446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665689</commentid>
    <comment_count>2</comment_count>
      <attachid>151446</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-10 05:57:52 -0700</bug_when>
    <thetext>Comment on attachment 151446
Patch

Attachment 151446 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13186087</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665742</commentid>
    <comment_count>3</comment_count>
      <attachid>151456</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-10 07:19:16 -0700</bug_when>
    <thetext>Created attachment 151456
Patch

Should fix Qt-WK2 build issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665745</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-10 07:22:25 -0700</bug_when>
    <thetext>Attachment 151456 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebKit2/WebProcess/qt/QtBuiltinBundlePage.cpp:80:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 1 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665748</commentid>
    <comment_count>5</comment_count>
      <attachid>151458</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-10 07:25:31 -0700</bug_when>
    <thetext>Created attachment 151458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667271</commentid>
    <comment_count>6</comment_count>
      <attachid>151458</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-11 18:06:47 -0700</bug_when>
    <thetext>Comment on attachment 151458
Patch

Though this is a little huge to review, looks good to me. BTW, I wonder how many test cases are covered by this patch? If this patch can cover webintents test cases, please write it to ChangeLog as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667419</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-11 22:49:53 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 151458 [details])
&gt; Though this is a little huge to review, looks good to me. BTW, I wonder how many test cases are covered by this patch? If this patch can cover webintents test cases, please write it to ChangeLog as well.

The Changelog already states:
&quot;Print out information about new intents requests and intent services registrations in WebKitTestRunner. This is expected by tests under webintents/*.&quot;

So the change is covered by pretty much all the tests under webintents/*. How do you suggest I improve the changelog?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675953</commentid>
    <comment_count>8</comment_count>
      <attachid>151458</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 13:37:59 -0700</bug_when>
    <thetext>Comment on attachment 151458
Patch

Clearing flags on attachment: 151458

Committed r123374: &lt;http://trac.webkit.org/changeset/123374&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675954</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 13:38:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151446</attachid>
            <date>2012-07-10 05:46:41 -0700</date>
            <delta_ts>2012-07-10 07:19:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>90873_wk2_intents_wtr.patch</filename>
            <type>text/plain</type>
            <size>54066</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMWQ0NzA4OC4uN2Y2NjI5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTE1Myw2ICsxNTMsOCBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVk
L1dlYkdyYXBoaWNzQ29udGV4dC5jcHAKICAgICBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5jcHAK
ICAgICBTaGFyZWQvV2ViSW1hZ2UuY3BwCisgICAgU2hhcmVkL1dlYkludGVudERhdGEuY3BwCisg
ICAgU2hhcmVkL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcAogICAgIFNoYXJlZC9XZWJLZXlib2Fy
ZEV2ZW50LmNwcAogICAgIFNoYXJlZC9XZWJMYXllclRyZWVJbmZvLmNwcAogICAgIFNoYXJlZC9X
ZWJNZW1vcnlTYW1wbGVyLmNwcApAQCAtMjQ1LDggKzI0Nyw2IEBAIFNFVChXZWJLaXQyX1NPVVJD
RVMKICAgICBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJJ
Y29uRGF0YWJhc2VDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNw
cAotICAgIFVJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcAotICAgIFVJUHJvY2Vzcy9XZWJJbnRl
bnRTZXJ2aWNlSW5mby5jcHAKICAgICBVSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdl
clByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHAKICAgICBV
SVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGFiNmNiNDMuLjVjMmYx
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OSBAQAorMjAxMi0wNy0xMCAgQ2hyaXN0b3BoZSBE
dW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtXSzJdIFdlYktp
dFRlc3RSdW5uZXIgbmVlZHMgdG8gcHJpbnQgaW5mb3JtYXRpb24gYWJvdXQgV2ViIGludGVudHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwODczCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEJ1bmRs
ZSBBUEkgZm9yIFdlYiBJbnRlbnRzLiBUaGlzIGlzIG5lZWRlZCBieSB0aGUgV2ViS2l0VGVzdFJ1
bm5lcgorICAgICAgICB0byBwcmludCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbmV3IGludGVudCBy
ZXF1ZXN0cyBhbmQgdGhlIGludGVudAorICAgICAgICBzZXJ2aWNlIHJlZ2lzdHJhdGlvbnMuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogTW92ZSBXZWJJbnRlbnREYXRhIGFuZCBXZWJJbnRl
bnRTZXJ2aWNlSW5mbyBmcm9tCisgICAgICAgIFVJUHJvY2Vzcy8gdG8gU2hhcmVkLy4KKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBNb3ZlIFdlYkludGVudERhdGEgYW5kIFdlYkludGVu
dFNlcnZpY2VJbmZvIGZyb20KKyAgICAgICAgVUlQcm9jZXNzLyB0byBTaGFyZWQvLgorICAgICAg
ICAqIFNoYXJlZC9BUElDbGllbnRUcmFpdHMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSW50ZW50
RGF0YS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50
RGF0YS5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnRE
YXRhOjpXZWJJbnRlbnREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6ZGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OnN1Z2dlc3Rpb25zKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6ZXh0cmEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnRlbnREYXRhOjpleHRyYXMpOgorICAgICAgICAqIFNoYXJlZC9XZWJJbnRlbnREYXRhLmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkludGVudERhdGEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnRlbnREYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRh
Ojp+V2ViSW50ZW50RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OmFjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OnBheWxvYWRUeXBlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6c2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkludGVudERhdGE6OnN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6dHlw
ZSk6CisgICAgICAgICogU2hhcmVkL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnRTZXJ2aWNlSW5mbzo6
V2ViSW50ZW50U2VydmljZUluZm8pOgorICAgICAgICAqIFNoYXJlZC9XZWJJbnRlbnRTZXJ2aWNl
SW5mby5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudFNl
cnZpY2VJbmZvLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViSW50ZW50U2Vydmlj
ZUluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnRTZXJ2aWNlSW5mbzo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50U2VydmljZUluZm86On5XZWJJbnRlbnRTZXJ2aWNl
SW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudFNlcnZpY2VJbmZvOjphY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnRTZXJ2aWNlSW5mbzo6cGF5bG9hZFR5cGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnRlbnRTZXJ2aWNlSW5mbzo6aHJlZik6CisgICAgICAgIChXZWJL
aXQ6OldlYkludGVudFNlcnZpY2VJbmZvOjp0aXRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
dGVudFNlcnZpY2VJbmZvOjpkaXNwb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVu
dFNlcnZpY2VJbmZvOjp0eXBlKToKKyAgICAgICAgKiBUYXJnZXQucHJpOiBNb3ZlIFdlYkludGVu
dERhdGEgYW5kIFdlYkludGVudFNlcnZpY2VJbmZvIGZyb20KKyAgICAgICAgVUlQcm9jZXNzLyB0
byBTaGFyZWQvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19sb2FkZXJfY2xpZW50LmNwcDoKKyAgICAgICAg
KGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSk6CisgICAgICAgIChyZWdpc3RlckludGVudFNlcnZp
Y2VGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyQ2xpZW50OjpyZWdpc3RlckludGVudFNlcnZp
Y2VGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oOgorICAg
ICAgICAoV2ViTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWdpc3RlckludGVudFNlcnZp
Y2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUlu
dGVudEZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgIChXZWJQYWdlUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVJbnRlbnRG
b3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoSW50ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlZ2lzdGVySW50ZW50
U2VydmljZSk6CisKIDIwMTItMDctMTAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjIxNzguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA2YzA2ZDVhLi5hNDgyY2E1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ2Miw2ICs0NjIsMTAgQEAgd2Via2l0Ml9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViSW1hZ2UuaCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuY3Bw
IFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5oIFwKKwlTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViSW50ZW50U2VydmljZUluZm8uY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViSW50ZW50U2VydmljZUluZm8uaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YktleWJvYXJkRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTW91c2VFdmVu
dC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmgg
XApAQCAtODUwLDEwICs4NTQsNiBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2VDbGllbnQuaCBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclByb3h5LmggXAotCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnRlbnREYXRhLmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEu
aCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcCBc
Ci0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudFNlcnZpY2VJbmZvLmggXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclBy
b3h5LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYUNhY2hlTWFuYWdlclBy
b3h5LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJh
aXRzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmgKaW5kZXggZDIx
ODA3OC4uZTJjY2UxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVu
dFRyYWl0cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuaApA
QCAtMzgsNyArMzgsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xpZW50SW50ZXJmYWNlPiBzdHJ1
Y3QgQVBJQ2xpZW50VHJhaXRzIHsKIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGllbnRJbnRlcmZhY2U+
IGNvbnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8Q2xpZW50SW50ZXJmYWNlPjo6aW50ZXJmYWNl
U2l6ZXNCeVZlcnNpb25bXSA9IHsgc2l6ZW9mKENsaWVudEludGVyZmFjZSkgfTsKIAogdGVtcGxh
dGU8PiBzdHJ1Y3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudD4gewot
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgaW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bM107CisgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBpbnRlcmZhY2VTaXplc0J5VmVyc2lvbls0XTsKIH07CiAKIHRl
bXBsYXRlPD4gc3RydWN0IEFQSUNsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRD
bGllbnQ+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjEyOGRiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnRl
bnREYXRhLmgiCisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisKKyNpbmNsdWRlICJJbW11dGFi
bGVBcnJheS5oIgorI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJX
ZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1dlYkludGVudERhdGE6OldlYkludGVudERhdGEoY29uc3QgSW50ZW50RGF0YSYgc3RvcmUpCisg
ICAgOiBtX3N0b3JlKHN0b3JlKQoreworfQorCitQYXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gV2ViSW50ZW50RGF0YTo6ZGF0YSgpIGNvbnN0Cit7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGFDb3B5ID0gbV9zdG9yZS5kYXRhOworICAgIHJldHVybiBXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmFkb3B0KGRhdGFDb3B5KTsKK30KKworUGFzc1JlZlB0cjxJbW11dGFibGVBcnJh
eT4gV2ViSW50ZW50RGF0YTo6c3VnZ2VzdGlvbnMoKSBjb25zdAoreworICAgIGNvbnN0IHNpemVf
dCBudW1TdWdnZXN0aW9ucyA9IG1fc3RvcmUuc3VnZ2VzdGlvbnMuc2l6ZSgpOworICAgIFZlY3Rv
cjxSZWZQdHI8QVBJT2JqZWN0PiA+IHdrU3VnZ2VzdGlvbnMobnVtU3VnZ2VzdGlvbnMpOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1TdWdnZXN0aW9uczsgKytpKQorICAgICAgICB3
a1N1Z2dlc3Rpb25zW2ldID0gV2ViVVJMOjpjcmVhdGUobV9zdG9yZS5zdWdnZXN0aW9uc1tpXSk7
CisgICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjphZG9wdCh3a1N1Z2dlc3Rpb25zKTsKK30KKwor
U3RyaW5nIFdlYkludGVudERhdGE6OmV4dHJhKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAorewor
ICAgIHJldHVybiBtX3N0b3JlLmV4dHJhcy5nZXQoa2V5KTsKK30KKworUGFzc1JlZlB0cjxJbW11
dGFibGVEaWN0aW9uYXJ5PiBXZWJJbnRlbnREYXRhOjpleHRyYXMoKSBjb25zdAoreworICAgIElt
bXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgd2tFeHRyYXM7CisgICAgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fc3RvcmUuZXh0cmFzLmVuZCgpOworICAg
IGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdG9y
ZS5leHRyYXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICB3a0V4dHJhcy5zZXQo
aXQtPmZpcnN0LCBXZWJTdHJpbmc6OmNyZWF0ZShpdC0+c2Vjb25kKSk7CisgICAgcmV0dXJuIElt
bXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KHdrRXh0cmFzKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFMpCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViSW50ZW50RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRl
Y2Y0YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50
RGF0YS5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwg
Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
SW50ZW50RGF0YV9oCisjZGVmaW5lIFdlYkludGVudERhdGFfaAorCisjaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiSW50ZW50RGF0YS5o
IgorI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJbnRlbnREYXRh
IDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJ
VHlwZSA9IFR5cGVJbnRlbnREYXRhOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW50ZW50
RGF0YT4gY3JlYXRlKGNvbnN0IEludGVudERhdGEmIHN0b3JlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnRlbnREYXRhKHN0b3JlKSk7CisgICAgfQorCisgICAgdmly
dHVhbCB+V2ViSW50ZW50RGF0YSgpIHsgfQorCisgICAgY29uc3QgU3RyaW5nJiBhY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3N0b3JlLmFjdGlvbjsgfQorICAgIGNvbnN0IFN0cmluZyYgcGF5bG9h
ZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLnR5cGU7IH0KKyAgICBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBzZXJ2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS5zZXJ2aWNlOyB9CisgICAg
UGFzc1JlZlB0cjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEoKSBjb25zdDsKKyAgICBT
dHJpbmcgZXh0cmEoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW1t
dXRhYmxlRGljdGlvbmFyeT4gZXh0cmFzKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbW11dGFi
bGVBcnJheT4gc3VnZ2VzdGlvbnMoKSBjb25zdDsKKworICAgIGNvbnN0IEludGVudERhdGEmIHN0
b3JlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZTsgfQorCitwcml2YXRlOgorICAgIFdlYkludGVu
dERhdGEoY29uc3QgSW50ZW50RGF0YSYpOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBJbnRlbnREYXRhIG1fc3RvcmU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykKKwor
I2VuZGlmIC8vIFdlYkludGVudERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJ
bnRlbnRTZXJ2aWNlSW5mby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ODQzMjljNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRl
bnRTZXJ2aWNlSW5mby5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkludGVudFNlcnZpY2VJbmZvLmgiCisK
KyNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2Vi
SW50ZW50U2VydmljZUluZm86OldlYkludGVudFNlcnZpY2VJbmZvKGNvbnN0IEludGVudFNlcnZp
Y2VJbmZvJiBzdG9yZSkKKyAgICA6IG1fc3RvcmUoc3RvcmUpCit7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnRTZXJ2aWNlSW5mby5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkludGVudFNlcnZpY2VJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uODY5NDYwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJJbnRlbnRTZXJ2aWNlSW5mby5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSW50ZW50U2VydmljZUluZm9faAorI2RlZmluZSBX
ZWJJbnRlbnRTZXJ2aWNlSW5mb19oCisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQorCisj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiSW50ZW50U2VydmljZUluZm8uaCIKKyNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViSW50ZW50U2VydmljZUluZm8gOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUludGVudFNlcnZpY2VJbmZvOworCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViSW50ZW50U2VydmljZUluZm8+IGNyZWF0ZShjb25zdCBJbnRl
bnRTZXJ2aWNlSW5mbyYgc3RvcmUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYkludGVudFNlcnZpY2VJbmZvKHN0b3JlKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+V2Vi
SW50ZW50U2VydmljZUluZm8oKSB7IH0KKworICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9zdG9yZS5hY3Rpb247IH0KKyAgICBjb25zdCBTdHJpbmcmIHBheWxvYWRU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS50eXBlOyB9CisgICAgY29uc3QgV2ViQ29yZTo6
S1VSTCYgaHJlZigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUuaHJlZjsgfQorICAgIGNvbnN0IFN0
cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLnRpdGxlOyB9CisgICAgY29uc3Qg
U3RyaW5nJiBkaXNwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUuZGlzcG9zaXRpb247
IH0KKworcHJpdmF0ZToKKyAgICBXZWJJbnRlbnRTZXJ2aWNlSW5mbyhjb25zdCBJbnRlbnRTZXJ2
aWNlSW5mbyYpOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElU
eXBlOyB9CisKKyAgICBJbnRlbnRTZXJ2aWNlSW5mbyBtX3N0b3JlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQorCisjZW5k
aWYgLy8gV2ViSW50ZW50U2VydmljZUluZm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggMmNhOGMyZS4uY2Qy
MjRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0xMTIsNiArMTEyLDggQEAgSEVBREVSUyArPSBcCiAgICAg
U2hhcmVkL1dlYkdyYXBoaWNzQ29udGV4dC5oIFwKICAgICBTaGFyZWQvV2ViSGl0VGVzdFJlc3Vs
dC5oIFwKICAgICBTaGFyZWQvV2ViSW1hZ2UuaCBcCisgICAgU2hhcmVkL1dlYkludGVudERhdGEu
aCBcCisgICAgU2hhcmVkL1dlYkludGVudFNlcnZpY2VJbmZvLmggXAogICAgIFNoYXJlZC9XZWJM
YXllclRyZWVJbmZvLmggXAogICAgIFNoYXJlZC9XZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmggXAog
ICAgIFNoYXJlZC9XZWJOdW1iZXIuaCBcCkBAIC0yNjMsOCArMjY1LDYgQEAgSEVBREVSUyArPSBc
CiAgICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5oIFwKICAgICBVSVByb2Nlc3MvV2ViSWNv
bkRhdGFiYXNlQ2xpZW50LmggXAogICAgIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oIFwK
LSAgICBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oIFwKLSAgICBVSVByb2Nlc3MvV2ViSW50ZW50
U2VydmljZUluZm8uaCBcCiAgICAgVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQ
cm94eS5oIFwKICAgICBVSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuaCBcCiAgICAgVUlQ
cm9jZXNzL1dlYkxvYWRlckNsaWVudC5oIFwKQEAgLTQ4Nyw2ICs0ODcsOCBAQCBTT1VSQ0VTICs9
IFwKICAgICBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5jcHAgXAogICAgIFNoYXJlZC9XZWJLZXli
b2FyZEV2ZW50LmNwcCBcCiAgICAgU2hhcmVkL1dlYkltYWdlLmNwcCBcCisgICAgU2hhcmVkL1dl
YkludGVudERhdGEuY3BwIFwKKyAgICBTaGFyZWQvV2ViSW50ZW50U2VydmljZUluZm8uY3BwIFwK
ICAgICBTaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5jcHAgXAogICAgIFNoYXJlZC9XZWJNb3VzZUV2
ZW50LmNwcCBcCiAgICAgU2hhcmVkL1dlYk5ldHdvcmtJbmZvLmNwcCBcCkBAIC02MjYsOCArNjI4
LDYgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3Mv
V2ViSW5zcGVjdG9yUHJveHkuY3BwIFwKLSAgICBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAg
XAotICAgIFVJUHJvY2Vzcy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAgXAogICAgIFVJUHJvY2Vz
cy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvV2Vi
TGF5ZXJUcmVlUmVuZGVyZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNw
cCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKaW5kZXggMTJhN2I2My4u
ZmRhY2Y4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaApAQCAtNzMs
OCArNzMsOCBAQCB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tCYQogdHlwZWRlZiB2b2lkICgqV0tQYWdl
RGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdl
LCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2
b2lkICgqV0tQYWdlV2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtQ2FsbGJhY2spKFdLUGFnZVJl
ZiBwYWdlLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbSwgV0tUeXBlUmVmIHVzZXJEYXRh
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVBsdWdpbkRp
ZEZhaWxDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRXJyb3JDb2RlIGVycm9yQ29kZSwgV0tT
dHJpbmdSZWYgbWltZVR5cGUsIFdLU3RyaW5nUmVmIHBsdWdpbklkZW50aWZpZXIsIFdLU3RyaW5n
UmVmIHBsdWdpblZlcnNpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lk
ICgqV0tQYWdlRGlkUmVjZWl2ZUludGVudEZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdl
LCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0ludGVudERhdGFSZWYgaW50ZW50LCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLUGFnZVJlZ2lzdGVySW50ZW50U2VydmljZUZv
ckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0ludGVu
dFNlcnZpY2VJbmZvUmVmIHNlcnZpY2VJbmZvLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5
cGVkZWYgdm9pZCAoKldLUGFnZURpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZUNhbGxiYWNrKShXS1Bh
Z2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVmIGludGVudCwgV0tU
eXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAo
KldLUGFnZVJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBw
YWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0ludGVudFNlcnZpY2VJbmZvUmVmIHNlcnZpY2VJbmZv
LCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogCiAvLyBEZXBy
ZWNhdGVkCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luQ2Fs
bGJhY2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVm
IG1pbWVUeXBlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVudC5jcHAK
aW5kZXggM2MyOGYyOS4uY2M4YjEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVudC5jcHAKQEAgLTQ4LDcg
KzQ4LDcgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tQYWdlUmVmLCBX
S1N0cmluZ1JlZiB0aXRsZSwgV0tGcmFtZVJlZiBmcmEKIH0KIAogI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKLXN0YXRpYyB2b2lkIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS1BhZ2VSZWYgcGFn
ZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVmIGludGVudCwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK3N0YXRpYyB2b2lkIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS1BhZ2VS
ZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVmIGludGVudCwgV0tUeXBl
UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3
ID0gc3RhdGljX2Nhc3Q8RXZhc19PYmplY3QqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSk7CiAgICAgRXdrX0ludGVudCogZXdrSW50ZW50ID0gZXdrX2ludGVudF9uZXcoaW50ZW50KTsK
QEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdL
UGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0ludGVudEQKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLXN0YXRpYyB2b2lkIHJlZ2lzdGVySW50ZW50U2Vydmlj
ZUZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0ludGVudFNlcnZp
Y2VJbmZvUmVmIHNlcnZpY2VJbmZvLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQorc3RhdGljIHZv
aWQgcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVS
ZWYgZnJhbWUsIFdLSW50ZW50U2VydmljZUluZm9SZWYgc2VydmljZUluZm8sIFdLVHlwZVJlZiwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IHN0
YXRpY19jYXN0PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwog
ICAgIEV3a19JbnRlbnRfU2VydmljZSogZXdrSW50ZW50U2VydmljZSA9IGV3a19pbnRlbnRfc2Vy
dmljZV9uZXcoc2VydmljZUluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkludGVudERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVu
dERhdGEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjEyOGRiLi4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwg
Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0lO
VEVOVFMpCi0KLSNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgotI2luY2x1ZGUgIkltbXV0YWJs
ZURpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJXZWJVUkwu
aCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkludGVudERhdGE6OldlYkludGVudERhdGEo
Y29uc3QgSW50ZW50RGF0YSYgc3RvcmUpCi0gICAgOiBtX3N0b3JlKHN0b3JlKQotewotfQotCi1Q
YXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gV2ViSW50ZW50RGF0YTo6ZGF0YSgp
IGNvbnN0Ci17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFDb3B5ID0gbV9zdG9yZS5kYXRhOwot
ICAgIHJldHVybiBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFDb3B5KTsKLX0K
LQotUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gV2ViSW50ZW50RGF0YTo6c3VnZ2VzdGlvbnMo
KSBjb25zdAotewotICAgIGNvbnN0IHNpemVfdCBudW1TdWdnZXN0aW9ucyA9IG1fc3RvcmUuc3Vn
Z2VzdGlvbnMuc2l6ZSgpOwotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0PiA+IHdrU3VnZ2Vz
dGlvbnMobnVtU3VnZ2VzdGlvbnMpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1T
dWdnZXN0aW9uczsgKytpKQotICAgICAgICB3a1N1Z2dlc3Rpb25zW2ldID0gV2ViVVJMOjpjcmVh
dGUobV9zdG9yZS5zdWdnZXN0aW9uc1tpXSk7Ci0gICAgcmV0dXJuIEltbXV0YWJsZUFycmF5Ojph
ZG9wdCh3a1N1Z2dlc3Rpb25zKTsKLX0KLQotU3RyaW5nIFdlYkludGVudERhdGE6OmV4dHJhKGNv
bnN0IFN0cmluZyYga2V5KSBjb25zdAotewotICAgIHJldHVybiBtX3N0b3JlLmV4dHJhcy5nZXQo
a2V5KTsKLX0KLQotUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBXZWJJbnRlbnREYXRh
OjpleHRyYXMoKSBjb25zdAotewotICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgd2tF
eHRyYXM7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IG1fc3RvcmUuZXh0cmFzLmVuZCgpOwotICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdG9yZS5leHRyYXMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQotICAgICAgICB3a0V4dHJhcy5zZXQoaXQtPmZpcnN0LCBXZWJTdHJpbmc6OmNyZWF0ZShp
dC0+c2Vjb25kKSk7Ci0gICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KHdrRXh0
cmFzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
X0lOVEVOVFMpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRl
bnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWNmNGFlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkludGVudERhdGFfaAotI2Rl
ZmluZSBXZWJJbnRlbnREYXRhX2gKLQotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLQotI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIkludGVudERhdGEuaCIKLSNpbmNsdWRlICJXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViSW50ZW50RGF0YSA6IHB1YmxpYyBBUElPYmpl
Y3QgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlSW50ZW50
RGF0YTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkludGVudERhdGE+IGNyZWF0ZShjb25z
dCBJbnRlbnREYXRhJiBzdG9yZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViSW50ZW50RGF0YShzdG9yZSkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgfldlYkludGVudERh
dGEoKSB7IH0KLQotICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9z
dG9yZS5hY3Rpb247IH0KLSAgICBjb25zdCBTdHJpbmcmIHBheWxvYWRUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdG9yZS50eXBlOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6S1VSTCYgc2VydmljZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUuc2VydmljZTsgfQotICAgIFBhc3NSZWZQdHI8V2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGV4dHJhKGNvbnN0
IFN0cmluZyYga2V5KSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+
IGV4dHJhcygpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IHN1Z2dlc3Rp
b25zKCkgY29uc3Q7Ci0KLSAgICBjb25zdCBJbnRlbnREYXRhJiBzdG9yZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RvcmU7IH0KLQotcHJpdmF0ZToKLSAgICBXZWJJbnRlbnREYXRhKGNvbnN0IEludGVu
dERhdGEmKTsKLQotICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlw
ZTsgfQotCi0gICAgSW50ZW50RGF0YSBtX3N0b3JlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFMpCi0KLSNlbmRpZiAvLyBXZWJJbnRl
bnREYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnRT
ZXJ2aWNlSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50U2Vydmlj
ZUluZm8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDMyOWM1Li4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50U2VydmljZUluZm8uaCIKLQotI2lm
IEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJJbnRl
bnRTZXJ2aWNlSW5mbzo6V2ViSW50ZW50U2VydmljZUluZm8oY29uc3QgSW50ZW50U2VydmljZUlu
Zm8mIHN0b3JlKQotICAgIDogbV9zdG9yZShzdG9yZSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudFNlcnZpY2VJbmZvLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50U2VydmljZUluZm8uaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggODY5NDYwMS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW50ZW50U2VydmljZUluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViSW50ZW50U2VydmljZUluZm9faAot
I2RlZmluZSBXZWJJbnRlbnRTZXJ2aWNlSW5mb19oCi0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNf
VEFHKQotCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiSW50ZW50U2VydmljZUlu
Zm8uaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgV2ViSW50ZW50U2VydmljZUluZm8gOiBwdWJsaWMgQVBJT2JqZWN0IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUludGVudFNlcnZpY2VJbmZv
OwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW50ZW50U2VydmljZUluZm8+IGNyZWF0ZShj
b25zdCBJbnRlbnRTZXJ2aWNlSW5mbyYgc3RvcmUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkludGVudFNlcnZpY2VJbmZvKHN0b3JlKSk7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB+V2ViSW50ZW50U2VydmljZUluZm8oKSB7IH0KLQotICAgIGNvbnN0IFN0cmluZyYgYWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS5hY3Rpb247IH0KLSAgICBjb25zdCBTdHJpbmcm
IHBheWxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS50eXBlOyB9Ci0gICAgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgaHJlZigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUuaHJlZjsgfQotICAg
IGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLnRpdGxlOyB9Ci0g
ICAgY29uc3QgU3RyaW5nJiBkaXNwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUuZGlz
cG9zaXRpb247IH0KLQotcHJpdmF0ZToKLSAgICBXZWJJbnRlbnRTZXJ2aWNlSW5mbyhjb25zdCBJ
bnRlbnRTZXJ2aWNlSW5mbyYpOwotCi0gICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBBUElUeXBlOyB9Ci0KLSAgICBJbnRlbnRTZXJ2aWNlSW5mbyBtX3N0b3JlOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFNfVEFH
KQotCi0jZW5kaWYgLy8gV2ViSW50ZW50U2VydmljZUluZm9faApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcAppbmRleCAyODllODc5Li40ZDNjNDU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcApAQCAtMTY5LDIy
ICsxNjksMjIgQEAgdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTU0ZvckZyYW1lKFdl
YlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnIKIH0KIAogI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKLXZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUo
V2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViSW50ZW50RGF0YSog
aW50ZW50RGF0YSkKK3ZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJh
bWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViSW50ZW50RGF0
YSogaW50ZW50RGF0YSwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50
LmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGll
bnQuZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRv
QVBJKGludGVudERhdGEpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlSW50ZW50Rm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoaW50
ZW50RGF0YSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi12b2lkIFdlYkxvYWRlckNsaWVudDo6
cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFt
ZVByb3h5KiBmcmFtZSwgV2ViSW50ZW50U2VydmljZUluZm8qIHNlcnZpY2VJbmZvKQordm9pZCBX
ZWJMb2FkZXJDbGllbnQ6OnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKFdlYlBhZ2VQcm94
eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFdlYkludGVudFNlcnZpY2VJbmZvKiBzZXJ2
aWNlSW5mbywgQVBJT2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LnJlZ2lz
dGVySW50ZW50U2VydmljZUZvckZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVu
dC5yZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUp
LCB0b0FQSShzZXJ2aWNlSW5mbyksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50
LnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSks
IHRvQVBJKHNlcnZpY2VJbmZvKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5jbGllbnRJbmZv
KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50
LmgKaW5kZXggZjhlNDRjNy4uZjEyOTFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJMb2FkZXJDbGllbnQuaApAQCAtNzMsMTEgKzczLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkq
LCBBUElPYmplY3QqKTsKICAgICB2b2lkIGRpZERldGVjdFhTU0ZvckZyYW1lKFdlYlBhZ2VQcm94
eSosIFdlYkZyYW1lUHJveHkqLCBBUElPYmplY3QqKTsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJh
bWVQcm94eSosIFdlYkludGVudERhdGEqKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnRlbnRGb3JG
cmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViSW50ZW50RGF0YSosIEFQSU9i
amVjdCopOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAgIHZvaWQg
cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94
eSosIFdlYkludGVudFNlcnZpY2VJbmZvKik7CisgICAgdm9pZCByZWdpc3RlckludGVudFNlcnZp
Y2VGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViSW50ZW50U2Vydmlj
ZUluZm8qLCBBUElPYmplY3QqKTsKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IGRpZEZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lIGFuZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXQgc2hvdWxkIGJlIG1lcmdlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggODU3MDllZi4uNDcyMTMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE4OTQsMTMgKzE4OTQsMTggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZpbmlzaFByb2dyZXNzKCkKIH0KIAogI2lmIEVOQUJMRShXRUJfSU5URU5U
U19UQUcpCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgSW50ZW50U2VydmljZUluZm8mIHNlcnZpY2VJbmZvKQor
dm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IEludGVudFNlcnZpY2VJbmZvJiBzZXJ2aWNlSW5mbywgQ29yZUlQQzo6
QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7CisgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNl
ckRhdGE7CisgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1
c2VyRGF0YSwgbV9wcm9jZXNzLT5jb250ZXh0KCkpOworICAgIGlmICghYXJndW1lbnRzLT5kZWNv
ZGUobWVzc2FnZURlY29kZXIpKQorICAgICAgICByZXR1cm47CisKICAgICBXZWJGcmFtZVByb3h5
KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVD
SyhmcmFtZSk7CiAKICAgICBSZWZQdHI8V2ViSW50ZW50U2VydmljZUluZm8+IHdlYkludGVudFNl
cnZpY2VJbmZvID0gV2ViSW50ZW50U2VydmljZUluZm86OmNyZWF0ZShzZXJ2aWNlSW5mbyk7Ci0g
ICAgbV9sb2FkZXJDbGllbnQucmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUodGhpcywgZnJh
bWUsIHdlYkludGVudFNlcnZpY2VJbmZvLmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC5yZWdp
c3RlckludGVudFNlcnZpY2VGb3JGcmFtZSh0aGlzLCBmcmFtZSwgd2ViSW50ZW50U2VydmljZUlu
Zm8uZ2V0KCksIHVzZXJEYXRhLmdldCgpKTsKIH0KICNlbmRpZgogCkBAIC0yMTc1LDEzICsyMTgw
LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXRlY3RYU1NGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kCiB9CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IEludGVudERhdGEmIGludGVudERhdGEpCit2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEludGVu
dERhdGEmIGludGVudERhdGEsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzKQog
eworICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFdlYkNvbnRleHRVc2VyTWVz
c2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIG1fcHJvY2Vzcy0+Y29udGV4dCgp
KTsKKyAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1l
KGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCiAgICAgUmVmUHRyPFdlYklu
dGVudERhdGE+IHdlYkludGVudERhdGEgPSBXZWJJbnRlbnREYXRhOjpjcmVhdGUoaW50ZW50RGF0
YSk7Ci0gICAgbV9sb2FkZXJDbGllbnQuZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHRoaXMsIGZy
YW1lLCB3ZWJJbnRlbnREYXRhLmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC5kaWRSZWNlaXZl
SW50ZW50Rm9yRnJhbWUodGhpcywgZnJhbWUsIHdlYkludGVudERhdGEuZ2V0KCksIHVzZXJEYXRh
LmdldCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggNTdhYjg2Yy4uMmMwNGZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtNzQ5LDEwICs3NDksMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZp
bmlzaFByb2dyZXNzKCk7CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgdm9pZCBkaWRS
ZWNlaXZlSW50ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgSW50ZW50RGF0YSYp
OworICAgIHZvaWQgZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IEludGVudERhdGEmLCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICNlbmRpZgogI2lm
IEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi0gICAgdm9pZCByZWdpc3RlckludGVudFNlcnZpY2VG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnRTZXJ2aWNlSW5mbyYpOworICAg
IHZvaWQgcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgSW50ZW50U2VydmljZUluZm8mLCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICNlbmRp
ZgogICAgIAogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRf
dCBmcmFtZUlELCB1aW50MzJfdCBuYXZpZ2F0aW9uVHlwZSwgdWludDMyX3QgbW9kaWZpZXJzLCBp
bnQzMl90IG1vdXNlQnV0dG9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBib29sJiByZWNlaXZl
ZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2Fk
SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggMDM0MTI3Ni4uN2YwZDU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC05NywxMCArOTcsMTAgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgSW50ZW50IG1lc3NhZ2VzCiAjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTKQotICAgIERpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCBXZWJLaXQ6OkludGVudERhdGEgaW50ZW50KQorICAgIERpZFJlY2VpdmVJbnRlbnRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkludGVudERhdGEgaW50ZW50LCBXZWJL
aXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKQogI2VuZGlmCiAj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLSAgICBSZWdpc3RlckludGVudFNlcnZpY2VGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkludGVudFNlcnZpY2VJbmZvIHNlcnZpY2VJ
bmZvKTsKKyAgICBSZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCBXZWJLaXQ6OkludGVudFNlcnZpY2VJbmZvIHNlcnZpY2VJbmZvLCBXZWJLaXQ6OkluamVjdGVk
QnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKTsKICNlbmRpZgogCiAgICAgIyBQcm9n
cmVzcyBtZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKaW5kZXggMTUzMTc0Yi4uZjcw
ZDViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCkBAIC0xMDksNiArMTA5LDggQEAgdHlw
ZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25G
cm9tR2xvYmFsT2JqZWN0Q2FsbGIKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZFJlY29u
bmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0Q2FsbGJhY2spKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VXaWxsRGVzdHJveUdsb2JhbE9i
amVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbkNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwog
dHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdlU2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9t
TG9jYWxVUkxDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmLCBXS1N0cmluZ1JlZiB1cmwsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkUmVjZWl2
ZUludGVudEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lLCBXS0ludGVudERhdGFSZWYgaW50ZW50LCBXS1R5cGVSZWYqIHVzZXJEYXRh
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVJl
Z2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0ludGVudFNlcnZpY2VJbmZvUmVmIHNlcnZpY2VJ
bmZvLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogc3Ry
dWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lv
bjsKQEAgLTE0NywxMCArMTQ5LDE0IEBAIHN0cnVjdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQg
ewogICAgIC8vIFZlcnNpb24gMgogICAgIFdLQnVuZGxlUGFnZURpZEZpbmlzaFByb2dyZXNzQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaFByb2dyZXNz
OwogICAgIFdLQnVuZGxlUGFnZVNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJM
Q2FsbGJhY2sgICAgICAgICAgICAgIHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2Fs
VVJMOworCisgICAgLy8gVmVyc2lvbiAzCisgICAgV0tCdW5kbGVQYWdlRGlkUmVjZWl2ZUludGVu
dEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZUlu
dGVudEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZVJlZ2lzdGVySW50ZW50U2VydmljZUZvckZy
YW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVySW50ZW50U2VydmljZUZv
ckZyYW1lOwogfTsKIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCBXS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnQ7CiAKLWVudW0geyBrV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
Q3VycmVudFZlcnNpb24gPSAyIH07CitlbnVtIHsga1dLQnVuZGxlUGFnZUxvYWRlckNsaWVudEN1
cnJlbnRWZXJzaW9uID0gMyB9OwogCiBlbnVtIHsKICAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rp
b25QYXNzVGhyb3VnaCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmNwcAppbmRleCAyOTYzZGMyLi43NGY4ZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC0zMyw2ICszMywxMyBAQAogI2lu
Y2x1ZGUgIldlYkVycm9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5oIgorI2VuZGlm
CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKKyNpbmNsdWRlICJXZWJJbnRlbnRTZXJ2aWNl
SW5mby5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTE4Nyw2ICsxOTQsMzAgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQ6OmRpZERldGVjdFhTU0ZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW0KICAg
ICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6
OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUs
IFdlYkludGVudERhdGEqIGludGVudCwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQorewor
ICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKQorICAgICAgICByZXR1
cm47CisKKyAgICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAwOworICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShp
bnRlbnQpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHVzZXJE
YXRhID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7Cit9CisjZW5kaWYKKworI2lm
IEVOQUJMRShXRUJfSU5URU5UU19UQUcpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJh
bWUqIGZyYW1lLCBXZWJJbnRlbnRTZXJ2aWNlSW5mbyogc2VydmljZSwgUmVmUHRyPEFQSU9iamVj
dD4mIHVzZXJEYXRhKQoreworICAgIGlmICghbV9jbGllbnQucmVnaXN0ZXJJbnRlbnRTZXJ2aWNl
Rm9yRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFz
cyA9IDA7CisgICAgbV9jbGllbnQucmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUodG9BUEko
cGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VydmljZSksICZ1c2VyRGF0YVRvUGFzcywgbV9j
bGllbnQuY2xpZW50SW5mbyk7CisgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRh
dGFUb1Bhc3MpKTsKK30KKyNlbmRpZgorCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJh
bWUsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRp
ZEZpcnN0TGF5b3V0Rm9yRnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaAppbmRleCAyOTlmMTlkLi40MDMwMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKQEAgLTQ2LDYgKzQ2LDEyIEBAIGNsYXNz
IEFQSU9iamVjdDsKIGNsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNs
YXNzIFdlYlBhZ2U7CiBjbGFzcyBXZWJGcmFtZTsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCitj
bGFzcyBXZWJJbnRlbnREYXRhOworI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykK
K2NsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOworI2VuZGlmCiAKIGNsYXNzIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LCBrV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Q3VycmVudFZlcnNpb24+IHsKIHB1Ymxp
YzoKQEAgLTY1LDYgKzcxLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29u
dGVudEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmplY3Q+JiB1c2Vy
RGF0YSk7CiAgICAgdm9pZCBkaWREZXRlY3RYU1NGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUq
LCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQorICAgIHZvaWQgZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSos
IFdlYkludGVudERhdGEqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOworI2VuZGlmCisj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKKyAgICB2b2lkIHJlZ2lzdGVySW50ZW50U2Vydmlj
ZUZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFdlYkludGVudFNlcnZpY2VJbmZvKiwgUmVm
UHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKKyNlbmRpZgorCiAgICAgdm9pZCBkaWRGaXJzdExh
eW91dEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmplY3Q+JiB1c2Vy
RGF0YSk7CiAgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShX
ZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwogICAgIHZv
aWQgZGlkTGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDlhN2QyOTMuLjkxOGU3NGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC03NSwxMCArNzUsMTUgQEAKIAogI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKICNpbmNsdWRlICJJbnRlbnREYXRhLmgiCi0jaW5jbHVkZSAiSW50ZW50U2Vy
dmljZUluZm8uaCIKKyNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnRlbnRSZXF1ZXN0Lmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcp
CisjaW5jbHVkZSAiSW50ZW50U2VydmljZUluZm8uaCIKKyNpbmNsdWRlICJXZWJJbnRlbnRTZXJ2
aWNlSW5mby5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTE1NjcsNyArMTU3MiwxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaEludGVudChQYXNzUmVmUHRyPEludGVudFJlcXVlc3Q+IHJlcXVlc3QpCiAg
ICAgaW50ZW50RGF0YS5leHRyYXMgPSBjb3JlSW50ZW50LT5leHRyYXMoKTsKICAgICBpbnRlbnRE
YXRhLnN1Z2dlc3Rpb25zID0gY29yZUludGVudC0+c3VnZ2VzdGlvbnMoKTsKIAotICAgIHdlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUludGVudEZvckZyYW1l
KG1fZnJhbWUtPmZyYW1lSUQoKSwgaW50ZW50RGF0YSkpOworICAgIFJlZlB0cjxBUElPYmplY3Q+
IHVzZXJEYXRhOworICAgIFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3ZWJJbnRlbnQgPSBXZWJJbnRl
bnREYXRhOjpjcmVhdGUoaW50ZW50RGF0YSk7CisgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVM
b2FkZXJDbGllbnQoKS5kaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwg
d2ViSW50ZW50LmdldCgpLCB1c2VyRGF0YSk7CisKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlE
KCksIGludGVudERhdGEsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRh
LmdldCgpKSkpOwogfQogI2VuZGlmCiAKQEAgLTE1ODUsNyArMTU5NCwxMSBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpyZWdpc3RlckludGVudFNlcnZpY2UoY29uc3QgU3RyaW5nJiBhY3Rp
b24sIGNvbnN0IFN0cgogICAgIHNlcnZpY2VJbmZvLnRpdGxlID0gdGl0bGU7CiAgICAgc2Vydmlj
ZUluZm8uZGlzcG9zaXRpb24gPSBkaXNwb3NpdGlvbjsKIAotICAgIHdlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUobV9mcmFt
ZS0+ZnJhbWVJRCgpLCBzZXJ2aWNlSW5mbykpOworICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJE
YXRhOworICAgIFJlZlB0cjxXZWJJbnRlbnRTZXJ2aWNlSW5mbz4gd2ViSW50ZW50U2VydmljZUlu
Zm8gPSBXZWJJbnRlbnRTZXJ2aWNlSW5mbzo6Y3JlYXRlKHNlcnZpY2VJbmZvKTsKKyAgICB3ZWJQ
YWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLnJlZ2lzdGVySW50ZW50U2VydmljZUZv
ckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUsIHdlYkludGVudFNlcnZpY2VJbmZvLmdldCgpLCB1c2Vy
RGF0YSk7CisKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lz
dGVySW50ZW50U2VydmljZUZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgc2VydmljZUluZm8s
IEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBhZjYyZDA2Li5lMjI0NTA1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjQgQEAKIDIwMTItMDctMTAgIENocmlzdG9waGUg
RHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAorICAgICAgICBbV0syXSBXZWJL
aXRUZXN0UnVubmVyIG5lZWRzIHRvIHByaW50IGluZm9ybWF0aW9uIGFib3V0IFdlYiBpbnRlbnRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDg3Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByaW50IG91
dCBpbmZvcm1hdGlvbiBhYm91dCBuZXcgaW50ZW50cyByZXF1ZXN0cyBhbmQgaW50ZW50CisgICAg
ICAgIHNlcnZpY2VzIHJlZ2lzdHJhdGlvbnMgaW4gV2ViS2l0VGVzdFJ1bm5lci4gVGhpcyBpcyBl
eHBlY3RlZAorICAgICAgICBieSB0ZXN0cyB1bmRlciB3ZWJpbnRlbnRzLyouCisKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6
CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKToK
KyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJh
bWUpOgorICAgICAgICAoV1RSKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpy
ZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDoKKyAgICAgICAgKEluamVjdGVk
QnVuZGxlUGFnZSk6CisKKzIwMTItMDctMTAgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhl
LmR1bWV6QGludGVsLmNvbT4KKwogICAgICAgICBbRUZMXSBXZWJLaXQgRFJUIGFuZCBXVFIgZmFp
bCB0byBidWlsZCBkdWUgdG8gdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBXVEY6Ok1ENTo6KgogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA4NjgKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IGRjMmFkM2QuLmM1YmQxNDAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHAKQEAgLTQ5LDYgKzQ5LDEzIEBACiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2luY2x1ZGUg
PFdlYktpdDIvV0tJbnRlbnREYXRhLmg+CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFNf
VEFHKQorI2luY2x1ZGUgPFdlYktpdDIvV0tJbnRlbnRTZXJ2aWNlSW5mby5oPgorI2VuZGlmCisK
IHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtMjQxLDcgKzI0OCw5
IEBAIEluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlKQogICAgICAgICAwLCAvLyBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0ds
b2JhbE9iamVjdAogICAgICAgICAwLCAvLyB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdp
bmRvd0V4dGVuc2lvbgogICAgICAgICBkaWRGaW5pc2hQcm9ncmVzcywgLy8gZGlkRmluaXNoUHJv
Z3Jlc3MKLSAgICAgICAgMCAvLyBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVS
TAorICAgICAgICAwLCAvLyBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTAor
ICAgICAgICBkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUsIC8vIGRpZFJlY2VpdmVJbnRlbnRGb3JG
cmFtZQorICAgICAgICByZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZSAvLyByZWdpc3Rlcklu
dGVudFNlcnZpY2VGb3JGcmFtZQogICAgIH07CiAgICAgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRl
ckNsaWVudChtX3BhZ2UsICZsb2FkZXJDbGllbnQpOwogCkBAIC00MTYsNiArNDI1LDc1IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hQcm9ncmVzcyhXS0J1bmRsZVBhZ2VSZWYs
IGNvbnN0IHZvaWQgKmNsaWVudEluCiAgICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdl
Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRGaW5pc2hQcm9ncmVzcygpOwog
fQogCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdL
QnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0ludGVudERhdGFS
ZWYgaW50ZW50LCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQor
eworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
c3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIlJlY2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj0iKTsK
KyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tBY3Rpb24oQWRvcHRXSywgV0tJbnRlbnRE
YXRhQ29weUFjdGlvbihpbnRlbnQpKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3Ry
aW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcod2tBY3Rpb24uZ2V0KCkpKTsKKyAgICBJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiB0eXBlPSIp
OworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1R5cGUoQWRvcHRXSywgV0tJbnRlbnRE
YXRhQ29weVR5cGUoaW50ZW50KSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmlu
Z0J1aWxkZXIoKS0+YXBwZW5kKHRvV1RGU3RyaW5nKHdrVHlwZS5nZXQoKSkpOworICAgIEluamVj
dGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiXG4iKTsKKworICAg
IC8vIEZJWE1FOiBQcmludCBudW1iZXIgb2YgcG9ydHMgd2hlbiBleHBvc2VkIGluIFdlYktpdDIK
KworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3a1NlcnZpY2VVcmwoQWRvcHRXSywgV0tJbnRl
bnREYXRhQ29weVNlcnZpY2UoaW50ZW50KSk7CisgICAgaWYgKHdrU2VydmljZVVybCkgeworICAg
ICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tTZXJ2aWNlKEFkb3B0V0ssIFdLVVJMQ29w
eVN0cmluZyh3a1NlcnZpY2VVcmwuZ2V0KCkpKTsKKyAgICAgICAgaWYgKHdrU2VydmljZSAmJiAh
V0tTdHJpbmdJc0VtcHR5KHdrU2VydmljZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiRXhwbGljaXQgaW50ZW50
IHNlcnZpY2U6ICIpOworICAgICAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmlu
Z0J1aWxkZXIoKS0+YXBwZW5kKHRvV1RGU3RyaW5nKHdrU2VydmljZS5nZXQoKSkpOworICAgICAg
ICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJc
biIpOworICAgICAgICB9CisgICAgfQorCisgICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVm
PiB3a0V4dHJhcyhBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5RXh0cmFzKGludGVudCkpOworICAg
IFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrRXh0cmFLZXlzKEFkb3B0V0ssIFdLRGljdGlvbmFy
eUNvcHlLZXlzKHdrRXh0cmFzLmdldCgpKSk7CisgICAgY29uc3Qgc2l6ZV90IG51bUV4dHJhS2V5
cyA9IFdLQXJyYXlHZXRTaXplKHdrRXh0cmFLZXlzLmdldCgpKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG51bUV4dHJhS2V5czsgKytpKSB7CisgICAgICAgIFdLU3RyaW5nUmVmIHdrS2V5
ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3a0V4dHJh
S2V5cy5nZXQoKSwgaSkpOworICAgICAgICBXS1N0cmluZ1JlZiB3a1ZhbHVlID0gc3RhdGljX2Nh
c3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkod2tFeHRyYXMuZ2V0KCks
IHdrS2V5KSk7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVy
KCktPmFwcGVuZCgiRXh0cmFzWyIpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
c3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcod2tLZXkpKTsKKyAgICAgICAgSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJdID0gIik7Cisg
ICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0
b1dURlN0cmluZyh3a1ZhbHVlKSk7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5z
dHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiXG4iKTsKKyAgICB9CisKKyAgICBXS1JldGFpblB0cjxX
S0FycmF5UmVmPiB3a1N1Z2dlc3Rpb25zKEFkb3B0V0ssIFdLSW50ZW50RGF0YUNvcHlTdWdnZXN0
aW9ucyhpbnRlbnQpKTsKKyAgICBjb25zdCBzaXplX3QgbnVtU3VnZ2VzdGlvbnMgPSBXS0FycmF5
R2V0U2l6ZSh3a1N1Z2dlc3Rpb25zLmdldCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG51bVN1Z2dlc3Rpb25zOyArK2kpIHsKKyAgICAgICAgV0tTdHJpbmdSZWYgd2tTdWdnZXN0aW9u
ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3a1N1Z2dl
c3Rpb25zLmdldCgpLCBpKSk7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJp
bmdCdWlsZGVyKCktPmFwcGVuZCgiSGF2ZSBzdWdnZXN0aW9uICIpOworICAgICAgICBJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcod2tT
dWdnZXN0aW9uKSk7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWls
ZGVyKCktPmFwcGVuZCgiXG4iKTsKKyAgICB9CisjZW5kaWYKK30KKwordm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2U6OnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0ludGVudFNlcnZpY2VJbmZvUmVmIHNlcnZp
Y2VJbmZvLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorewor
I2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJSZWdpc3RlcmVkIFdlYiBJbnRlbnQgU2VydmljZTog
YWN0aW9uPSIpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a0FjdGlvbihBZG9wdFdL
LCBXS0ludGVudFNlcnZpY2VJbmZvQ29weUFjdGlvbihzZXJ2aWNlSW5mbykpOworICAgIEluamVj
dGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmluZyh3
a0FjdGlvbi5nZXQoKSkpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWls
ZGVyKCktPmFwcGVuZCgiIHR5cGU9Iik7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdr
VHlwZShBZG9wdFdLLCBXS0ludGVudFNlcnZpY2VJbmZvQ29weVR5cGUoc2VydmljZUluZm8pKTsK
KyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9X
VEZTdHJpbmcod2tUeXBlLmdldCgpKSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0
cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIgdGl0bGU9Iik7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IHdrVGl0bGUoQWRvcHRXSywgV0tJbnRlbnRTZXJ2aWNlSW5mb0NvcHlUaXRsZShzZXJ2
aWNlSW5mbykpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCkt
PmFwcGVuZCh0b1dURlN0cmluZyh3a1RpdGxlLmdldCgpKSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6
OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIgdXJsPSIpOworICAgIFdLUmV0YWlu
UHRyPFdLVVJMUmVmPiB3a1VybChBZG9wdFdLLCBXS0ludGVudFNlcnZpY2VJbmZvQ29weUhyZWYo
c2VydmljZUluZm8pKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRl
cigpLT5hcHBlbmQodG9XVEZTdHJpbmcoYWRvcHRXSyhXS1VSTENvcHlTdHJpbmcod2tVcmwuZ2V0
KCkpKSkpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFw
cGVuZCgiIGRpc3Bvc2l0aW9uPSIpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a0Rp
c3Bvc2l0aW9uKEFkb3B0V0ssIFdLSW50ZW50U2VydmljZUluZm9Db3B5RGlzcG9zaXRpb24oc2Vy
dmljZUluZm8pKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigp
LT5hcHBlbmQodG9XVEZTdHJpbmcod2tEaXNwb3NpdGlvbi5nZXQoKSkpOworICAgIEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiXG4iKTsKKyNlbmRpZgor
fQorCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJh
bWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJl
ZiosIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRC
dW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRGaW5pc2hEb2N1
bWVudExvYWRGb3JGcmFtZShmcmFtZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAppbmRleCA0ZTFmY2Ux
Li44MjRiMWRmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKQEAgLTcyLDYgKzcyLDggQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlQ29udGVudExlbmd0aEZvclJlc291cmNlKFdL
QnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgdWludDY0X3QgaWRlbnRpZmllciwgdWlu
dDY0X3QgbGVuZ3RoLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9h
ZEZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgdWludDY0X3Qg
aWRlbnRpZmllciwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkRm9y
UmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCBpZGVu
dGlmaWVyLCBXS0Vycm9yUmVmLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVj
ZWl2ZUludGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgV0tJ
bnRlbnREYXRhUmVmLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZy
YW1lUmVmLCBXS0ludGVudFNlcnZpY2VJbmZvUmVmLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkKik7
CiAKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFt
ZVJlZik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmKTsK
</data>
<flag name="commit-queue"
          id="159900"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151456</attachid>
            <date>2012-07-10 07:19:16 -0700</date>
            <delta_ts>2012-07-10 07:25:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>90873_wk2_intents_wtr.patch</filename>
            <type>text/plain</type>
            <size>54849</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMWQ0NzA4OC4uN2Y2NjI5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTE1Myw2ICsxNTMsOCBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVk
L1dlYkdyYXBoaWNzQ29udGV4dC5jcHAKICAgICBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5jcHAK
ICAgICBTaGFyZWQvV2ViSW1hZ2UuY3BwCisgICAgU2hhcmVkL1dlYkludGVudERhdGEuY3BwCisg
ICAgU2hhcmVkL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcAogICAgIFNoYXJlZC9XZWJLZXlib2Fy
ZEV2ZW50LmNwcAogICAgIFNoYXJlZC9XZWJMYXllclRyZWVJbmZvLmNwcAogICAgIFNoYXJlZC9X
ZWJNZW1vcnlTYW1wbGVyLmNwcApAQCAtMjQ1LDggKzI0Nyw2IEBAIFNFVChXZWJLaXQyX1NPVVJD
RVMKICAgICBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJJ
Y29uRGF0YWJhc2VDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNw
cAotICAgIFVJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcAotICAgIFVJUHJvY2Vzcy9XZWJJbnRl
bnRTZXJ2aWNlSW5mby5jcHAKICAgICBVSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdl
clByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHAKICAgICBV
SVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGFiNmNiNDMuLjMyYjZm
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAorMjAxMi0wNy0xMCAgQ2hyaXN0b3BoZSBE
dW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtXSzJdIFdlYktp
dFRlc3RSdW5uZXIgbmVlZHMgdG8gcHJpbnQgaW5mb3JtYXRpb24gYWJvdXQgV2ViIGludGVudHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwODczCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEJ1bmRs
ZSBBUEkgZm9yIFdlYiBJbnRlbnRzLiBUaGlzIGlzIG5lZWRlZCBieSB0aGUgV2ViS2l0VGVzdFJ1
bm5lcgorICAgICAgICB0byBwcmludCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbmV3IGludGVudCBy
ZXF1ZXN0cyBhbmQgdGhlIGludGVudAorICAgICAgICBzZXJ2aWNlIHJlZ2lzdHJhdGlvbnMuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogTW92ZSBXZWJJbnRlbnREYXRhIGFuZCBXZWJJbnRl
bnRTZXJ2aWNlSW5mbyBmcm9tCisgICAgICAgIFVJUHJvY2Vzcy8gdG8gU2hhcmVkLy4KKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBNb3ZlIFdlYkludGVudERhdGEgYW5kIFdlYkludGVu
dFNlcnZpY2VJbmZvIGZyb20KKyAgICAgICAgVUlQcm9jZXNzLyB0byBTaGFyZWQvLgorICAgICAg
ICAqIFNoYXJlZC9BUElDbGllbnRUcmFpdHMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSW50ZW50
RGF0YS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50
RGF0YS5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnRE
YXRhOjpXZWJJbnRlbnREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6ZGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OnN1Z2dlc3Rpb25zKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6ZXh0cmEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnRlbnREYXRhOjpleHRyYXMpOgorICAgICAgICAqIFNoYXJlZC9XZWJJbnRlbnREYXRhLmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkludGVudERhdGEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnRlbnREYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRh
Ojp+V2ViSW50ZW50RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OmFjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OnBheWxvYWRUeXBlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6c2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkludGVudERhdGE6OnN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6dHlw
ZSk6CisgICAgICAgICogU2hhcmVkL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnRTZXJ2aWNlSW5mbzo6
V2ViSW50ZW50U2VydmljZUluZm8pOgorICAgICAgICAqIFNoYXJlZC9XZWJJbnRlbnRTZXJ2aWNl
SW5mby5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudFNl
cnZpY2VJbmZvLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViSW50ZW50U2Vydmlj
ZUluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnRTZXJ2aWNlSW5mbzo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50U2VydmljZUluZm86On5XZWJJbnRlbnRTZXJ2aWNl
SW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudFNlcnZpY2VJbmZvOjphY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnRTZXJ2aWNlSW5mbzo6cGF5bG9hZFR5cGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnRlbnRTZXJ2aWNlSW5mbzo6aHJlZik6CisgICAgICAgIChXZWJL
aXQ6OldlYkludGVudFNlcnZpY2VJbmZvOjp0aXRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
dGVudFNlcnZpY2VJbmZvOjpkaXNwb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVu
dFNlcnZpY2VJbmZvOjp0eXBlKToKKyAgICAgICAgKiBUYXJnZXQucHJpOiBNb3ZlIFdlYkludGVu
dERhdGEgYW5kIFdlYkludGVudFNlcnZpY2VJbmZvIGZyb20KKyAgICAgICAgVUlQcm9jZXNzLyB0
byBTaGFyZWQvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19sb2FkZXJfY2xpZW50LmNwcDoKKyAgICAgICAg
KGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSk6CisgICAgICAgIChyZWdpc3RlckludGVudFNlcnZp
Y2VGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyQ2xpZW50OjpyZWdpc3RlckludGVudFNlcnZp
Y2VGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oOgorICAg
ICAgICAoV2ViTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWdpc3RlckludGVudFNlcnZp
Y2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUlu
dGVudEZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgIChXZWJQYWdlUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVJbnRlbnRG
b3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoSW50ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlZ2lzdGVySW50ZW50
U2VydmljZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9xdC9RdEJ1aWx0aW5CdW5kbGVQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UXRCdWlsdGluQnVuZGxlUGFnZTo6UXRCdWlsdGluQnVuZGxl
UGFnZSk6CisKIDIwMTItMDctMTAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjIxNzguCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktp
dDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA2YzA2ZDVhLi5hNDgyY2E1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ2Miw2ICs0NjIsMTAgQEAgd2Via2l0Ml9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViSW1hZ2UuaCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuY3BwIFwK
KwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5oIFwKKwlTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViSW50ZW50U2VydmljZUluZm8uY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViSW50ZW50U2VydmljZUluZm8uaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYktl
eWJvYXJkRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTW91c2VFdmVudC5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmggXApA
QCAtODUwLDEwICs4NTQsNiBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2VDbGllbnQuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkluc3BlY3RvclByb3h5LmggXAotCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRl
bnREYXRhLmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuaCBc
Ci0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcCBcCi0J
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudFNlcnZpY2VJbmZvLmggXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5
LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmgKaW5kZXggZDIxODA3
OC4uZTJjY2UxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRy
YWl0cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuaApAQCAt
MzgsNyArMzgsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xpZW50SW50ZXJmYWNlPiBzdHJ1Y3Qg
QVBJQ2xpZW50VHJhaXRzIHsKIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGllbnRJbnRlcmZhY2U+IGNv
bnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8Q2xpZW50SW50ZXJmYWNlPjo6aW50ZXJmYWNlU2l6
ZXNCeVZlcnNpb25bXSA9IHsgc2l6ZW9mKENsaWVudEludGVyZmFjZSkgfTsKIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudD4gewotICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgaW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bM107CisgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBpbnRlcmZhY2VTaXplc0J5VmVyc2lvbls0XTsKIH07CiAKIHRlbXBs
YXRlPD4gc3RydWN0IEFQSUNsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGll
bnQ+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjEyOGRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnRlbnRE
YXRhLmgiCisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisKKyNpbmNsdWRlICJJbW11dGFibGVB
cnJheS5oIgorI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJXZWJT
dHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dl
YkludGVudERhdGE6OldlYkludGVudERhdGEoY29uc3QgSW50ZW50RGF0YSYgc3RvcmUpCisgICAg
OiBtX3N0b3JlKHN0b3JlKQoreworfQorCitQYXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gV2ViSW50ZW50RGF0YTo6ZGF0YSgpIGNvbnN0Cit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IGRhdGFDb3B5ID0gbV9zdG9yZS5kYXRhOworICAgIHJldHVybiBXZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmFkb3B0KGRhdGFDb3B5KTsKK30KKworUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4g
V2ViSW50ZW50RGF0YTo6c3VnZ2VzdGlvbnMoKSBjb25zdAoreworICAgIGNvbnN0IHNpemVfdCBu
dW1TdWdnZXN0aW9ucyA9IG1fc3RvcmUuc3VnZ2VzdGlvbnMuc2l6ZSgpOworICAgIFZlY3RvcjxS
ZWZQdHI8QVBJT2JqZWN0PiA+IHdrU3VnZ2VzdGlvbnMobnVtU3VnZ2VzdGlvbnMpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1TdWdnZXN0aW9uczsgKytpKQorICAgICAgICB3a1N1
Z2dlc3Rpb25zW2ldID0gV2ViVVJMOjpjcmVhdGUobV9zdG9yZS5zdWdnZXN0aW9uc1tpXSk7Cisg
ICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjphZG9wdCh3a1N1Z2dlc3Rpb25zKTsKK30KKworU3Ry
aW5nIFdlYkludGVudERhdGE6OmV4dHJhKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAoreworICAg
IHJldHVybiBtX3N0b3JlLmV4dHJhcy5nZXQoa2V5KTsKK30KKworUGFzc1JlZlB0cjxJbW11dGFi
bGVEaWN0aW9uYXJ5PiBXZWJJbnRlbnREYXRhOjpleHRyYXMoKSBjb25zdAoreworICAgIEltbXV0
YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgd2tFeHRyYXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fc3RvcmUuZXh0cmFzLmVuZCgpOworICAgIGZv
ciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdG9yZS5l
eHRyYXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICB3a0V4dHJhcy5zZXQoaXQt
PmZpcnN0LCBXZWJTdHJpbmc6OmNyZWF0ZShpdC0+c2Vjb25kKSk7CisgICAgcmV0dXJuIEltbXV0
YWJsZURpY3Rpb25hcnk6OmFkb3B0KHdrRXh0cmFzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFMpCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViSW50ZW50RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlY2Y0
YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50RGF0
YS5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSW50
ZW50RGF0YV9oCisjZGVmaW5lIFdlYkludGVudERhdGFfaAorCisjaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiSW50ZW50RGF0YS5oIgor
I2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJbnRlbnREYXRhIDog
cHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlw
ZSA9IFR5cGVJbnRlbnREYXRhOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW50ZW50RGF0
YT4gY3JlYXRlKGNvbnN0IEludGVudERhdGEmIHN0b3JlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJJbnRlbnREYXRhKHN0b3JlKSk7CisgICAgfQorCisgICAgdmlydHVh
bCB+V2ViSW50ZW50RGF0YSgpIHsgfQorCisgICAgY29uc3QgU3RyaW5nJiBhY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3N0b3JlLmFjdGlvbjsgfQorICAgIGNvbnN0IFN0cmluZyYgcGF5bG9hZFR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLnR5cGU7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpL
VVJMJiBzZXJ2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS5zZXJ2aWNlOyB9CisgICAgUGFz
c1JlZlB0cjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEoKSBjb25zdDsKKyAgICBTdHJp
bmcgZXh0cmEoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW1tdXRh
YmxlRGljdGlvbmFyeT4gZXh0cmFzKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbW11dGFibGVB
cnJheT4gc3VnZ2VzdGlvbnMoKSBjb25zdDsKKworICAgIGNvbnN0IEludGVudERhdGEmIHN0b3Jl
KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZTsgfQorCitwcml2YXRlOgorICAgIFdlYkludGVudERh
dGEoY29uc3QgSW50ZW50RGF0YSYpOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBJbnRlbnREYXRhIG1fc3RvcmU7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykKKworI2Vu
ZGlmIC8vIFdlYkludGVudERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkludGVudFNlcnZpY2VJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRl
bnRTZXJ2aWNlSW5mby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQz
MjljNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnRT
ZXJ2aWNlSW5mby5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkludGVudFNlcnZpY2VJbmZvLmgiCisKKyNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViSW50
ZW50U2VydmljZUluZm86OldlYkludGVudFNlcnZpY2VJbmZvKGNvbnN0IEludGVudFNlcnZpY2VJ
bmZvJiBzdG9yZSkKKyAgICA6IG1fc3RvcmUoc3RvcmUpCit7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnRTZXJ2aWNlSW5mby5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkludGVudFNlcnZpY2VJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODY5NDYwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJJbnRlbnRTZXJ2aWNlSW5mby5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViSW50ZW50U2VydmljZUluZm9faAorI2RlZmluZSBXZWJJ
bnRlbnRTZXJ2aWNlSW5mb19oCisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQorCisjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiSW50ZW50U2VydmljZUluZm8uaCIKKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
SW50ZW50U2VydmljZUluZm8gOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUludGVudFNlcnZpY2VJbmZvOworCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViSW50ZW50U2VydmljZUluZm8+IGNyZWF0ZShjb25zdCBJbnRlbnRT
ZXJ2aWNlSW5mbyYgc3RvcmUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YkludGVudFNlcnZpY2VJbmZvKHN0b3JlKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+V2ViSW50
ZW50U2VydmljZUluZm8oKSB7IH0KKworICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9zdG9yZS5hY3Rpb247IH0KKyAgICBjb25zdCBTdHJpbmcmIHBheWxvYWRUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS50eXBlOyB9CisgICAgY29uc3QgV2ViQ29yZTo6S1VS
TCYgaHJlZigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUuaHJlZjsgfQorICAgIGNvbnN0IFN0cmlu
ZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLnRpdGxlOyB9CisgICAgY29uc3QgU3Ry
aW5nJiBkaXNwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUuZGlzcG9zaXRpb247IH0K
KworcHJpdmF0ZToKKyAgICBXZWJJbnRlbnRTZXJ2aWNlSW5mbyhjb25zdCBJbnRlbnRTZXJ2aWNl
SW5mbyYpOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBl
OyB9CisKKyAgICBJbnRlbnRTZXJ2aWNlSW5mbyBtX3N0b3JlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQorCisjZW5kaWYg
Ly8gV2ViSW50ZW50U2VydmljZUluZm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFy
Z2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggMmNhOGMyZS4uY2QyMjRl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9UYXJnZXQucHJpCkBAIC0xMTIsNiArMTEyLDggQEAgSEVBREVSUyArPSBcCiAgICAgU2hh
cmVkL1dlYkdyYXBoaWNzQ29udGV4dC5oIFwKICAgICBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5o
IFwKICAgICBTaGFyZWQvV2ViSW1hZ2UuaCBcCisgICAgU2hhcmVkL1dlYkludGVudERhdGEuaCBc
CisgICAgU2hhcmVkL1dlYkludGVudFNlcnZpY2VJbmZvLmggXAogICAgIFNoYXJlZC9XZWJMYXll
clRyZWVJbmZvLmggXAogICAgIFNoYXJlZC9XZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmggXAogICAg
IFNoYXJlZC9XZWJOdW1iZXIuaCBcCkBAIC0yNjMsOCArMjY1LDYgQEAgSEVBREVSUyArPSBcCiAg
ICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5oIFwKICAgICBVSVByb2Nlc3MvV2ViSWNvbkRh
dGFiYXNlQ2xpZW50LmggXAogICAgIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oIFwKLSAg
ICBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oIFwKLSAgICBVSVByb2Nlc3MvV2ViSW50ZW50U2Vy
dmljZUluZm8uaCBcCiAgICAgVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94
eS5oIFwKICAgICBVSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuaCBcCiAgICAgVUlQcm9j
ZXNzL1dlYkxvYWRlckNsaWVudC5oIFwKQEAgLTQ4Nyw2ICs0ODcsOCBAQCBTT1VSQ0VTICs9IFwK
ICAgICBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5jcHAgXAogICAgIFNoYXJlZC9XZWJLZXlib2Fy
ZEV2ZW50LmNwcCBcCiAgICAgU2hhcmVkL1dlYkltYWdlLmNwcCBcCisgICAgU2hhcmVkL1dlYklu
dGVudERhdGEuY3BwIFwKKyAgICBTaGFyZWQvV2ViSW50ZW50U2VydmljZUluZm8uY3BwIFwKICAg
ICBTaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5jcHAgXAogICAgIFNoYXJlZC9XZWJNb3VzZUV2ZW50
LmNwcCBcCiAgICAgU2hhcmVkL1dlYk5ldHdvcmtJbmZvLmNwcCBcCkBAIC02MjYsOCArNjI4LDYg
QEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAgXAogICAg
IFVJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yUHJveHkuY3BwIFwKLSAgICBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAgXAot
ICAgIFVJUHJvY2Vzcy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAgXAogICAgIFVJUHJvY2Vzcy9X
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViTGF5
ZXJUcmVlUmVuZGVyZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKaW5kZXggMTJhN2I2My4uZmRh
Y2Y4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaApAQCAtNzMsOCAr
NzMsOCBAQCB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRl
bUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tCYQogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlk
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBX
S1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lk
ICgqV0tQYWdlV2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtQ2FsbGJhY2spKFdLUGFnZVJlZiBw
YWdlLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVBsdWdpbkRpZEZh
aWxDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRXJyb3JDb2RlIGVycm9yQ29kZSwgV0tTdHJp
bmdSZWYgbWltZVR5cGUsIFdLU3RyaW5nUmVmIHBsdWdpbklkZW50aWZpZXIsIFdLU3RyaW5nUmVm
IHBsdWdpblZlcnNpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgq
V0tQYWdlRGlkUmVjZWl2ZUludGVudEZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBX
S0ZyYW1lUmVmIGZyYW1lLCBXS0ludGVudERhdGFSZWYgaW50ZW50LCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLUGFnZVJlZ2lzdGVySW50ZW50U2VydmljZUZvckZy
YW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0ludGVudFNl
cnZpY2VJbmZvUmVmIHNlcnZpY2VJbmZvLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVk
ZWYgdm9pZCAoKldLUGFnZURpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZUNhbGxiYWNrKShXS1BhZ2VS
ZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVmIGludGVudCwgV0tUeXBl
UmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldL
UGFnZVJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdl
LCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0ludGVudFNlcnZpY2VJbmZvUmVmIHNlcnZpY2VJbmZvLCBX
S1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogCiAvLyBEZXByZWNh
dGVkCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luQ2FsbGJh
Y2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1p
bWVUeXBlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVudC5jcHAKaW5k
ZXggM2MyOGYyOS4uY2M4YjEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVudC5jcHAKQEAgLTQ4LDcgKzQ4
LDcgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tQYWdlUmVmLCBXS1N0
cmluZ1JlZiB0aXRsZSwgV0tGcmFtZVJlZiBmcmEKIH0KIAogI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKLXN0YXRpYyB2b2lkIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwg
V0tGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVmIGludGVudCwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKK3N0YXRpYyB2b2lkIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS1BhZ2VSZWYg
cGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVmIGludGVudCwgV0tUeXBlUmVm
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0g
c3RhdGljX2Nhc3Q8RXZhc19PYmplY3QqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7
CiAgICAgRXdrX0ludGVudCogZXdrSW50ZW50ID0gZXdrX2ludGVudF9uZXcoaW50ZW50KTsKQEAg
LTU4LDcgKzU4LDcgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLUGFn
ZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0ludGVudEQKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTX1RBRykKLXN0YXRpYyB2b2lkIHJlZ2lzdGVySW50ZW50U2VydmljZUZv
ckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0ludGVudFNlcnZpY2VJ
bmZvUmVmIHNlcnZpY2VJbmZvLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQorc3RhdGljIHZvaWQg
cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYg
ZnJhbWUsIFdLSW50ZW50U2VydmljZUluZm9SZWYgc2VydmljZUluZm8sIFdLVHlwZVJlZiwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IHN0YXRp
Y19jYXN0PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwogICAg
IEV3a19JbnRlbnRfU2VydmljZSogZXdrSW50ZW50U2VydmljZSA9IGV3a19pbnRlbnRfc2Vydmlj
ZV9uZXcoc2VydmljZUluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkludGVudERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERh
dGEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjEyOGRiLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCi0KLSNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgotI2luY2x1ZGUgIkltbXV0YWJsZURp
Y3Rpb25hcnkuaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJXZWJVUkwuaCIK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkludGVudERhdGE6OldlYkludGVudERhdGEoY29u
c3QgSW50ZW50RGF0YSYgc3RvcmUpCi0gICAgOiBtX3N0b3JlKHN0b3JlKQotewotfQotCi1QYXNz
UmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gV2ViSW50ZW50RGF0YTo6ZGF0YSgpIGNv
bnN0Ci17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFDb3B5ID0gbV9zdG9yZS5kYXRhOwotICAg
IHJldHVybiBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFDb3B5KTsKLX0KLQot
UGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gV2ViSW50ZW50RGF0YTo6c3VnZ2VzdGlvbnMoKSBj
b25zdAotewotICAgIGNvbnN0IHNpemVfdCBudW1TdWdnZXN0aW9ucyA9IG1fc3RvcmUuc3VnZ2Vz
dGlvbnMuc2l6ZSgpOwotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0PiA+IHdrU3VnZ2VzdGlv
bnMobnVtU3VnZ2VzdGlvbnMpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1TdWdn
ZXN0aW9uczsgKytpKQotICAgICAgICB3a1N1Z2dlc3Rpb25zW2ldID0gV2ViVVJMOjpjcmVhdGUo
bV9zdG9yZS5zdWdnZXN0aW9uc1tpXSk7Ci0gICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjphZG9w
dCh3a1N1Z2dlc3Rpb25zKTsKLX0KLQotU3RyaW5nIFdlYkludGVudERhdGE6OmV4dHJhKGNvbnN0
IFN0cmluZyYga2V5KSBjb25zdAotewotICAgIHJldHVybiBtX3N0b3JlLmV4dHJhcy5nZXQoa2V5
KTsKLX0KLQotUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBXZWJJbnRlbnREYXRhOjpl
eHRyYXMoKSBjb25zdAotewotICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgd2tFeHRy
YXM7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1f
c3RvcmUuZXh0cmFzLmVuZCgpOwotICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV9zdG9yZS5leHRyYXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQotICAgICAgICB3a0V4dHJhcy5zZXQoaXQtPmZpcnN0LCBXZWJTdHJpbmc6OmNyZWF0ZShpdC0+
c2Vjb25kKSk7Ci0gICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KHdrRXh0cmFz
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lO
VEVOVFMpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnRE
YXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWNmNGFlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkludGVudERhdGFfaAotI2RlZmlu
ZSBXZWJJbnRlbnREYXRhX2gKLQotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLQotI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIkludGVudERhdGEuaCIKLSNpbmNsdWRlICJXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViSW50ZW50RGF0YSA6IHB1YmxpYyBBUElPYmplY3Qg
ewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlSW50ZW50RGF0
YTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkludGVudERhdGE+IGNyZWF0ZShjb25zdCBJ
bnRlbnREYXRhJiBzdG9yZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
SW50ZW50RGF0YShzdG9yZSkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgfldlYkludGVudERhdGEo
KSB7IH0KLQotICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdG9y
ZS5hY3Rpb247IH0KLSAgICBjb25zdCBTdHJpbmcmIHBheWxvYWRUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9zdG9yZS50eXBlOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6S1VSTCYgc2VydmljZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RvcmUuc2VydmljZTsgfQotICAgIFBhc3NSZWZQdHI8V2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBkYXRhKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGV4dHJhKGNvbnN0IFN0
cmluZyYga2V5KSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGV4
dHJhcygpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IHN1Z2dlc3Rpb25z
KCkgY29uc3Q7Ci0KLSAgICBjb25zdCBJbnRlbnREYXRhJiBzdG9yZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RvcmU7IH0KLQotcHJpdmF0ZToKLSAgICBXZWJJbnRlbnREYXRhKGNvbnN0IEludGVudERh
dGEmKTsKLQotICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsg
fQotCi0gICAgSW50ZW50RGF0YSBtX3N0b3JlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFMpCi0KLSNlbmRpZiAvLyBXZWJJbnRlbnRE
YXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnRTZXJ2
aWNlSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50U2VydmljZUlu
Zm8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDMyOWM1Li4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50U2VydmljZUluZm8uaCIKLQotI2lmIEVO
QUJMRShXRUJfSU5URU5UU19UQUcpCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJJbnRlbnRT
ZXJ2aWNlSW5mbzo6V2ViSW50ZW50U2VydmljZUluZm8oY29uc3QgSW50ZW50U2VydmljZUluZm8m
IHN0b3JlKQotICAgIDogbV9zdG9yZShzdG9yZSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudFNlcnZpY2VJbmZvLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50U2VydmljZUluZm8uaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODY5NDYwMS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW50ZW50U2VydmljZUluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViSW50ZW50U2VydmljZUluZm9faAotI2Rl
ZmluZSBXZWJJbnRlbnRTZXJ2aWNlSW5mb19oCi0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFH
KQotCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiSW50ZW50U2VydmljZUluZm8u
aCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y2xhc3MgV2ViSW50ZW50U2VydmljZUluZm8gOiBwdWJsaWMgQVBJT2JqZWN0IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUludGVudFNlcnZpY2VJbmZvOwot
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW50ZW50U2VydmljZUluZm8+IGNyZWF0ZShjb25z
dCBJbnRlbnRTZXJ2aWNlSW5mbyYgc3RvcmUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYkludGVudFNlcnZpY2VJbmZvKHN0b3JlKSk7Ci0gICAgfQotCi0gICAgdmlydHVh
bCB+V2ViSW50ZW50U2VydmljZUluZm8oKSB7IH0KLQotICAgIGNvbnN0IFN0cmluZyYgYWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS5hY3Rpb247IH0KLSAgICBjb25zdCBTdHJpbmcmIHBh
eWxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS50eXBlOyB9Ci0gICAgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgaHJlZigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUuaHJlZjsgfQotICAgIGNv
bnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLnRpdGxlOyB9Ci0gICAg
Y29uc3QgU3RyaW5nJiBkaXNwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUuZGlzcG9z
aXRpb247IH0KLQotcHJpdmF0ZToKLSAgICBXZWJJbnRlbnRTZXJ2aWNlSW5mbyhjb25zdCBJbnRl
bnRTZXJ2aWNlSW5mbyYpOwotCi0gICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBBUElUeXBlOyB9Ci0KLSAgICBJbnRlbnRTZXJ2aWNlSW5mbyBtX3N0b3JlOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQot
Ci0jZW5kaWYgLy8gV2ViSW50ZW50U2VydmljZUluZm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcAppbmRleCAyODllODc5Li40ZDNjNDU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcApAQCAtMTY5LDIyICsx
NjksMjIgQEAgdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTU0ZvckZyYW1lKFdlYlBh
Z2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnIKIH0KIAogI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKLXZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV2Vi
UGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViSW50ZW50RGF0YSogaW50
ZW50RGF0YSkKK3ZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUo
V2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViSW50ZW50RGF0YSog
aW50ZW50RGF0YSwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRp
ZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJ
KGludGVudERhdGEpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRSZWNl
aXZlSW50ZW50Rm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoaW50ZW50
RGF0YSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi12b2lkIFdlYkxvYWRlckNsaWVudDo6cmVn
aXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgV2ViSW50ZW50U2VydmljZUluZm8qIHNlcnZpY2VJbmZvKQordm9pZCBXZWJM
b2FkZXJDbGllbnQ6OnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKFdlYlBhZ2VQcm94eSog
cGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFdlYkludGVudFNlcnZpY2VJbmZvKiBzZXJ2aWNl
SW5mbywgQVBJT2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LnJlZ2lzdGVy
SW50ZW50U2VydmljZUZvckZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5y
ZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0
b0FQSShzZXJ2aWNlSW5mbyksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LnJl
Z2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRv
QVBJKHNlcnZpY2VJbmZvKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmgK
aW5kZXggZjhlNDRjNy4uZjEyOTFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJM
b2FkZXJDbGllbnQuaApAQCAtNzMsMTEgKzczLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJ1
bkluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBB
UElPYmplY3QqKTsKICAgICB2b2lkIGRpZERldGVjdFhTU0ZvckZyYW1lKFdlYlBhZ2VQcm94eSos
IFdlYkZyYW1lUHJveHkqLCBBUElPYmplY3QqKTsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0g
ICAgdm9pZCBkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQ
cm94eSosIFdlYkludGVudERhdGEqKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFt
ZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViSW50ZW50RGF0YSosIEFQSU9iamVj
dCopOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAgIHZvaWQgcmVn
aXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSos
IFdlYkludGVudFNlcnZpY2VJbmZvKik7CisgICAgdm9pZCByZWdpc3RlckludGVudFNlcnZpY2VG
b3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViSW50ZW50U2VydmljZUlu
Zm8qLCBBUElPYmplY3QqKTsKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IGRpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEZvckZyYW1lIGFuZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQgc2hvdWxkIGJlIG1lcmdlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggODU3MDllZi4uNDcyMTMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE4OTQsMTMgKzE4OTQsMTggQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEZpbmlzaFByb2dyZXNzKCkKIH0KIAogI2lmIEVOQUJMRShXRUJfSU5URU5UU19U
QUcpCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgSW50ZW50U2VydmljZUluZm8mIHNlcnZpY2VJbmZvKQordm9p
ZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IEludGVudFNlcnZpY2VJbmZvJiBzZXJ2aWNlSW5mbywgQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7CisgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRh
dGE7CisgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2Vy
RGF0YSwgbV9wcm9jZXNzLT5jb250ZXh0KCkpOworICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUo
bWVzc2FnZURlY29kZXIpKQorICAgICAgICByZXR1cm47CisKICAgICBXZWJGcmFtZVByb3h5KiBm
cmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhm
cmFtZSk7CiAKICAgICBSZWZQdHI8V2ViSW50ZW50U2VydmljZUluZm8+IHdlYkludGVudFNlcnZp
Y2VJbmZvID0gV2ViSW50ZW50U2VydmljZUluZm86OmNyZWF0ZShzZXJ2aWNlSW5mbyk7Ci0gICAg
bV9sb2FkZXJDbGllbnQucmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUodGhpcywgZnJhbWUs
IHdlYkludGVudFNlcnZpY2VJbmZvLmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC5yZWdpc3Rl
ckludGVudFNlcnZpY2VGb3JGcmFtZSh0aGlzLCBmcmFtZSwgd2ViSW50ZW50U2VydmljZUluZm8u
Z2V0KCksIHVzZXJEYXRhLmdldCgpKTsKIH0KICNlbmRpZgogCkBAIC0yMTc1LDEzICsyMTgwLDE4
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXRlY3RYU1NGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kCiB9CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
Ci12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IEludGVudERhdGEmIGludGVudERhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEludGVudERh
dGEmIGludGVudERhdGEsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzKQogewor
ICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFdlYkNvbnRleHRVc2VyTWVzc2Fn
ZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIG1fcHJvY2Vzcy0+Y29udGV4dCgpKTsK
KyAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1lKGZy
YW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCiAgICAgUmVmUHRyPFdlYkludGVu
dERhdGE+IHdlYkludGVudERhdGEgPSBXZWJJbnRlbnREYXRhOjpjcmVhdGUoaW50ZW50RGF0YSk7
Ci0gICAgbV9sb2FkZXJDbGllbnQuZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHRoaXMsIGZyYW1l
LCB3ZWJJbnRlbnREYXRhLmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC5kaWRSZWNlaXZlSW50
ZW50Rm9yRnJhbWUodGhpcywgZnJhbWUsIHdlYkludGVudERhdGEuZ2V0KCksIHVzZXJEYXRhLmdl
dCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggNTdhYjg2Yy4uMmMwNGZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtNzQ5LDEwICs3NDksMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpbmlz
aFByb2dyZXNzKCk7CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgdm9pZCBkaWRSZWNl
aXZlSW50ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgSW50ZW50RGF0YSYpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IEludGVudERhdGEmLCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICNlbmRpZgogI2lmIEVO
QUJMRShXRUJfSU5URU5UU19UQUcpCi0gICAgdm9pZCByZWdpc3RlckludGVudFNlcnZpY2VGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnRTZXJ2aWNlSW5mbyYpOworICAgIHZv
aWQgcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
SW50ZW50U2VydmljZUluZm8mLCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICNlbmRpZgog
ICAgIAogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBm
cmFtZUlELCB1aW50MzJfdCBuYXZpZ2F0aW9uVHlwZSwgdWludDMyX3QgbW9kaWZpZXJzLCBpbnQz
Ml90IG1vdXNlQnV0dG9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBib29sJiByZWNlaXZlZFBv
bGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2FkSUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggMDM0MTI3Ni4uN2YwZDU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC05NywxMCArOTcsMTAgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgSW50ZW50IG1lc3NhZ2VzCiAjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQotICAgIERpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBXZWJLaXQ6OkludGVudERhdGEgaW50ZW50KQorICAgIERpZFJlY2VpdmVJbnRlbnRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkludGVudERhdGEgaW50ZW50LCBXZWJLaXQ6
OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKQogI2VuZGlmCiAjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLSAgICBSZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkludGVudFNlcnZpY2VJbmZvIHNlcnZpY2VJbmZv
KTsKKyAgICBSZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBX
ZWJLaXQ6OkludGVudFNlcnZpY2VJbmZvIHNlcnZpY2VJbmZvLCBXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKTsKICNlbmRpZgogCiAgICAgIyBQcm9ncmVz
cyBtZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKaW5kZXggMTUzMTc0Yi4uZjcwZDVi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCkBAIC0xMDksNiArMTA5LDggQEAgdHlwZWRl
ZiB2b2lkICgqV0tCdW5kbGVQYWdlV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9t
R2xvYmFsT2JqZWN0Q2FsbGIKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZFJlY29ubmVj
dERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VXaWxsRGVzdHJveUdsb2JhbE9iamVj
dEZvckRPTVdpbmRvd0V4dGVuc2lvbkNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tC
dW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlw
ZWRlZiBib29sICgqV0tCdW5kbGVQYWdlU2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9j
YWxVUkxDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmLCBXS1N0cmluZ1JlZiB1cmwsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkUmVjZWl2ZUlu
dGVudEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lLCBXS0ludGVudERhdGFSZWYgaW50ZW50LCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVJlZ2lz
dGVySW50ZW50U2VydmljZUZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0ludGVudFNlcnZpY2VJbmZvUmVmIHNlcnZpY2VJbmZv
LCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogc3RydWN0
IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsK
QEAgLTE0NywxMCArMTQ5LDE0IEBAIHN0cnVjdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgewog
ICAgIC8vIFZlcnNpb24gMgogICAgIFdLQnVuZGxlUGFnZURpZEZpbmlzaFByb2dyZXNzQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaFByb2dyZXNzOwog
ICAgIFdLQnVuZGxlUGFnZVNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMQ2Fs
bGJhY2sgICAgICAgICAgICAgIHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJM
OworCisgICAgLy8gVmVyc2lvbiAzCisgICAgV0tCdW5kbGVQYWdlRGlkUmVjZWl2ZUludGVudEZv
ckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZUludGVu
dEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZVJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1l
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVySW50ZW50U2VydmljZUZvckZy
YW1lOwogfTsKIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCBXS0J1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ7CiAKLWVudW0geyBrV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Q3Vy
cmVudFZlcnNpb24gPSAyIH07CitlbnVtIHsga1dLQnVuZGxlUGFnZUxvYWRlckNsaWVudEN1cnJl
bnRWZXJzaW9uID0gMyB9OwogCiBlbnVtIHsKICAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Q
YXNzVGhyb3VnaCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LmNwcAppbmRleCAyOTYzZGMyLi43NGY4ZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC0zMyw2ICszMywxMyBAQAogI2luY2x1
ZGUgIldlYkVycm9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5oIgorI2VuZGlmCisj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKKyNpbmNsdWRlICJXZWJJbnRlbnRTZXJ2aWNlSW5m
by5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTE4Nyw2ICsxOTQsMzAgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ6OmRpZERldGVjdFhTU0ZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW0KICAgICB1
c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCisjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRp
ZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIFdl
YkludGVudERhdGEqIGludGVudCwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQoreworICAg
IGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKQorICAgICAgICByZXR1cm47
CisKKyAgICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAwOworICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVJbnRlbnRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShpbnRl
bnQpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHVzZXJEYXRh
ID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7Cit9CisjZW5kaWYKKworI2lmIEVO
QUJMRShXRUJfSU5URU5UU19UQUcpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUq
IGZyYW1lLCBXZWJJbnRlbnRTZXJ2aWNlSW5mbyogc2VydmljZSwgUmVmUHRyPEFQSU9iamVjdD4m
IHVzZXJEYXRhKQoreworICAgIGlmICghbV9jbGllbnQucmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9y
RnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9
IDA7CisgICAgbV9jbGllbnQucmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUodG9BUEkocGFn
ZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VydmljZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGll
bnQuY2xpZW50SW5mbyk7CisgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFU
b1Bhc3MpKTsKK30KKyNlbmRpZgorCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUs
IFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRpZEZp
cnN0TGF5b3V0Rm9yRnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuaAppbmRleCAyOTlmMTlkLi40MDMwMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKQEAgLTQ2LDYgKzQ2LDEyIEBAIGNsYXNzIEFQ
SU9iamVjdDsKIGNsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNz
IFdlYlBhZ2U7CiBjbGFzcyBXZWJGcmFtZTsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCitjbGFz
cyBXZWJJbnRlbnREYXRhOworI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKK2Ns
YXNzIFdlYkludGVudFNlcnZpY2VJbmZvOworI2VuZGlmCiAKIGNsYXNzIEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LCBrV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Q3VycmVudFZlcnNpb24+IHsKIHB1YmxpYzoK
QEAgLTY1LDYgKzcxLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVu
dEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0
YSk7CiAgICAgdm9pZCBkaWREZXRlY3RYU1NGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBS
ZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQor
ICAgIHZvaWQgZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFdl
YkludGVudERhdGEqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOworI2VuZGlmCisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKKyAgICB2b2lkIHJlZ2lzdGVySW50ZW50U2VydmljZUZv
ckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFdlYkludGVudFNlcnZpY2VJbmZvKiwgUmVmUHRy
PEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKKyNlbmRpZgorCiAgICAgdm9pZCBkaWRGaXJzdExheW91
dEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0
YSk7CiAgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXZWJQ
YWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwogICAgIHZvaWQg
ZGlkTGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCmluZGV4IDlhN2QyOTMuLjkxOGU3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCkBAIC03NSwxMCArNzUsMTUgQEAKIAogI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKICNpbmNsdWRlICJJbnRlbnREYXRhLmgiCi0jaW5jbHVkZSAiSW50ZW50U2Vydmlj
ZUluZm8uaCIKKyNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnRlbnRSZXF1ZXN0Lmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCisj
aW5jbHVkZSAiSW50ZW50U2VydmljZUluZm8uaCIKKyNpbmNsdWRlICJXZWJJbnRlbnRTZXJ2aWNl
SW5mby5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTE1NjcsNyArMTU3MiwxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaEludGVudChQYXNzUmVmUHRyPEludGVudFJlcXVlc3Q+IHJlcXVlc3QpCiAgICAg
aW50ZW50RGF0YS5leHRyYXMgPSBjb3JlSW50ZW50LT5leHRyYXMoKTsKICAgICBpbnRlbnREYXRh
LnN1Z2dlc3Rpb25zID0gY29yZUludGVudC0+c3VnZ2VzdGlvbnMoKTsKIAotICAgIHdlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUludGVudEZvckZyYW1lKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgaW50ZW50RGF0YSkpOworICAgIFJlZlB0cjxBUElPYmplY3Q+IHVz
ZXJEYXRhOworICAgIFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3ZWJJbnRlbnQgPSBXZWJJbnRlbnRE
YXRhOjpjcmVhdGUoaW50ZW50RGF0YSk7CisgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2Fk
ZXJDbGllbnQoKS5kaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgd2Vi
SW50ZW50LmdldCgpLCB1c2VyRGF0YSk7CisKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCks
IGludGVudERhdGEsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdl
dCgpKSkpOwogfQogI2VuZGlmCiAKQEAgLTE1ODUsNyArMTU5NCwxMSBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpyZWdpc3RlckludGVudFNlcnZpY2UoY29uc3QgU3RyaW5nJiBhY3Rpb24s
IGNvbnN0IFN0cgogICAgIHNlcnZpY2VJbmZvLnRpdGxlID0gdGl0bGU7CiAgICAgc2VydmljZUlu
Zm8uZGlzcG9zaXRpb24gPSBkaXNwb3NpdGlvbjsKIAotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUobV9mcmFtZS0+
ZnJhbWVJRCgpLCBzZXJ2aWNlSW5mbykpOworICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRh
OworICAgIFJlZlB0cjxXZWJJbnRlbnRTZXJ2aWNlSW5mbz4gd2ViSW50ZW50U2VydmljZUluZm8g
PSBXZWJJbnRlbnRTZXJ2aWNlSW5mbzo6Y3JlYXRlKHNlcnZpY2VJbmZvKTsKKyAgICB3ZWJQYWdl
LT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZy
YW1lKHdlYlBhZ2UsIG1fZnJhbWUsIHdlYkludGVudFNlcnZpY2VJbmZvLmdldCgpLCB1c2VyRGF0
YSk7CisKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVy
SW50ZW50U2VydmljZUZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgc2VydmljZUluZm8sIElu
amVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvUXRCdWlsdGlu
QnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1F0QnVpbHRpbkJ1
bmRsZVBhZ2UuY3BwCmluZGV4IGUyMGViMTYuLmMwNTAwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvcXQvUXRCdWlsdGluQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9RdEJ1aWx0aW5CdW5kbGVQYWdlLmNwcApAQCAtNzYsNiAr
NzYsOCBAQCBRdEJ1aWx0aW5CdW5kbGVQYWdlOjpRdEJ1aWx0aW5CdW5kbGVQYWdlKFF0QnVpbHRp
bkJ1bmRsZSogYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZQogICAgICAgICAwLCAvLyB3aWxsRGVzdHJv
eUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbgogICAgICAgICAwLCAvLyBkaWRGaW5p
c2hQcm9ncmVzcwogICAgICAgICAwLCAvLyBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21M
b2NhbFVSTAorICAgICAgICAwLCAvLyBkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUKKyAgICAgICAg
MCAgLy8gcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUKICAgICB9OwogICAgIFdLQnVuZGxl
UGFnZVNldFBhZ2VMb2FkZXJDbGllbnQobV9wYWdlLCAmbG9hZGVyQ2xpZW50KTsKIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhZjYyZDA2Li5l
MjI0NTA1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsMjQgQEAKIDIwMTItMDctMTAgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3Rv
cGhlLmR1bWV6QGludGVsLmNvbT4KIAorICAgICAgICBbV0syXSBXZWJLaXRUZXN0UnVubmVyIG5l
ZWRzIHRvIHByaW50IGluZm9ybWF0aW9uIGFib3V0IFdlYiBpbnRlbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDg3MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByaW50IG91dCBpbmZvcm1hdGlvbiBh
Ym91dCBuZXcgaW50ZW50cyByZXF1ZXN0cyBhbmQgaW50ZW50CisgICAgICAgIHNlcnZpY2VzIHJl
Z2lzdHJhdGlvbnMgaW4gV2ViS2l0VGVzdFJ1bm5lci4gVGhpcyBpcyBleHBlY3RlZAorICAgICAg
ICBieSB0ZXN0cyB1bmRlciB3ZWJpbnRlbnRzLyouCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKToKKyAgICAgICAgKFdUUjo6
SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUpOgorICAgICAgICAo
V1RSKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpyZWdpc3RlckludGVudFNl
cnZpY2VGb3JGcmFtZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDoKKyAgICAgICAgKEluamVjdGVkQnVuZGxlUGFnZSk6CisK
KzIwMTItMDctMTAgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNv
bT4KKwogICAgICAgICBbRUZMXSBXZWJLaXQgRFJUIGFuZCBXVFIgZmFpbCB0byBidWlsZCBkdWUg
dG8gdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBXVEY6Ok1ENTo6KgogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA4NjgKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
Y3BwCmluZGV4IGRjMmFkM2QuLmM1YmQxNDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAg
LTQ5LDYgKzQ5LDEzIEBACiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaCIKICNl
bmRpZgogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2luY2x1ZGUgPFdlYktpdDIvV0tJbnRl
bnREYXRhLmg+CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQorI2luY2x1ZGUg
PFdlYktpdDIvV0tJbnRlbnRTZXJ2aWNlSW5mby5oPgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtMjQxLDcgKzI0OCw5IEBAIEluamVjdGVkQnVu
ZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAgICAg
ICAwLCAvLyBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdAogICAg
ICAgICAwLCAvLyB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbgog
ICAgICAgICBkaWRGaW5pc2hQcm9ncmVzcywgLy8gZGlkRmluaXNoUHJvZ3Jlc3MKLSAgICAgICAg
MCAvLyBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTAorICAgICAgICAwLCAv
LyBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTAorICAgICAgICBkaWRSZWNl
aXZlSW50ZW50Rm9yRnJhbWUsIC8vIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZQorICAgICAgICBy
ZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZSAvLyByZWdpc3RlckludGVudFNlcnZpY2VGb3JG
cmFtZQogICAgIH07CiAgICAgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudChtX3BhZ2Us
ICZsb2FkZXJDbGllbnQpOwogCkBAIC00MTYsNiArNDI1LDc1IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlOjpkaWRGaW5pc2hQcm9ncmVzcyhXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZvaWQgKmNs
aWVudEluCiAgICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2
b2lkKj4oY2xpZW50SW5mbykpLT5kaWRGaW5pc2hQcm9ncmVzcygpOwogfQogCit2b2lkIEluamVj
dGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0ludGVudERhdGFSZWYgaW50ZW50LCBXS1R5
cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigp
LT5hcHBlbmQoIlJlY2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj0iKTsKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gd2tBY3Rpb24oQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weUFjdGlvbihp
bnRlbnQpKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5h
cHBlbmQodG9XVEZTdHJpbmcod2tBY3Rpb24uZ2V0KCkpKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6
c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiB0eXBlPSIpOworICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiB3a1R5cGUoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weVR5cGUoaW50
ZW50KSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBw
ZW5kKHRvV1RGU3RyaW5nKHdrVHlwZS5nZXQoKSkpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiXG4iKTsKKworICAgIC8vIEZJWE1FOiBQcmlu
dCBudW1iZXIgb2YgcG9ydHMgd2hlbiBleHBvc2VkIGluIFdlYktpdDIKKworICAgIFdLUmV0YWlu
UHRyPFdLVVJMUmVmPiB3a1NlcnZpY2VVcmwoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weVNlcnZp
Y2UoaW50ZW50KSk7CisgICAgaWYgKHdrU2VydmljZVVybCkgeworICAgICAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gd2tTZXJ2aWNlKEFkb3B0V0ssIFdLVVJMQ29weVN0cmluZyh3a1NlcnZp
Y2VVcmwuZ2V0KCkpKTsKKyAgICAgICAgaWYgKHdrU2VydmljZSAmJiAhV0tTdHJpbmdJc0VtcHR5
KHdrU2VydmljZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQo
KS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiRXhwbGljaXQgaW50ZW50IHNlcnZpY2U6ICIpOwor
ICAgICAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBw
ZW5kKHRvV1RGU3RyaW5nKHdrU2VydmljZS5nZXQoKSkpOworICAgICAgICAgICAgSW5qZWN0ZWRC
dW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJcbiIpOworICAgICAgICB9
CisgICAgfQorCisgICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiB3a0V4dHJhcyhBZG9w
dFdLLCBXS0ludGVudERhdGFDb3B5RXh0cmFzKGludGVudCkpOworICAgIFdLUmV0YWluUHRyPFdL
QXJyYXlSZWY+IHdrRXh0cmFLZXlzKEFkb3B0V0ssIFdLRGljdGlvbmFyeUNvcHlLZXlzKHdrRXh0
cmFzLmdldCgpKSk7CisgICAgY29uc3Qgc2l6ZV90IG51bUV4dHJhS2V5cyA9IFdLQXJyYXlHZXRT
aXplKHdrRXh0cmFLZXlzLmdldCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUV4
dHJhS2V5czsgKytpKSB7CisgICAgICAgIFdLU3RyaW5nUmVmIHdrS2V5ID0gc3RhdGljX2Nhc3Q8
V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3a0V4dHJhS2V5cy5nZXQoKSwgaSkp
OworICAgICAgICBXS1N0cmluZ1JlZiB3a1ZhbHVlID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+
KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkod2tFeHRyYXMuZ2V0KCksIHdrS2V5KSk7CisgICAg
ICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiRXh0
cmFzWyIpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigp
LT5hcHBlbmQodG9XVEZTdHJpbmcod2tLZXkpKTsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJdID0gIik7CisgICAgICAgIEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmluZyh3a1Zh
bHVlKSk7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCkt
PmFwcGVuZCgiXG4iKTsKKyAgICB9CisKKyAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3a1N1
Z2dlc3Rpb25zKEFkb3B0V0ssIFdLSW50ZW50RGF0YUNvcHlTdWdnZXN0aW9ucyhpbnRlbnQpKTsK
KyAgICBjb25zdCBzaXplX3QgbnVtU3VnZ2VzdGlvbnMgPSBXS0FycmF5R2V0U2l6ZSh3a1N1Z2dl
c3Rpb25zLmdldCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVN1Z2dlc3Rpb25z
OyArK2kpIHsKKyAgICAgICAgV0tTdHJpbmdSZWYgd2tTdWdnZXN0aW9uID0gc3RhdGljX2Nhc3Q8
V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3a1N1Z2dlc3Rpb25zLmdldCgpLCBp
KSk7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFw
cGVuZCgiSGF2ZSBzdWdnZXN0aW9uICIpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcod2tTdWdnZXN0aW9uKSk7Cisg
ICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgi
XG4iKTsKKyAgICB9CisjZW5kaWYKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnJlZ2lz
dGVySW50ZW50U2VydmljZUZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lLCBXS0ludGVudFNlcnZpY2VJbmZvUmVmIHNlcnZpY2VJbmZvLCBXS1R5cGVS
ZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworI2lmIEVOQUJMRShXRUJf
SU5URU5UU19UQUcpCisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIo
KS0+YXBwZW5kKCJSZWdpc3RlcmVkIFdlYiBJbnRlbnQgU2VydmljZTogYWN0aW9uPSIpOworICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a0FjdGlvbihBZG9wdFdLLCBXS0ludGVudFNlcnZp
Y2VJbmZvQ29weUFjdGlvbihzZXJ2aWNlSW5mbykpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmluZyh3a0FjdGlvbi5nZXQoKSkp
OworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgi
IHR5cGU9Iik7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrVHlwZShBZG9wdFdLLCBX
S0ludGVudFNlcnZpY2VJbmZvQ29weVR5cGUoc2VydmljZUluZm8pKTsKKyAgICBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcod2tUeXBl
LmdldCgpKSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+
YXBwZW5kKCIgdGl0bGU9Iik7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrVGl0bGUo
QWRvcHRXSywgV0tJbnRlbnRTZXJ2aWNlSW5mb0NvcHlUaXRsZShzZXJ2aWNlSW5mbykpOworICAg
IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0
cmluZyh3a1RpdGxlLmdldCgpKSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmlu
Z0J1aWxkZXIoKS0+YXBwZW5kKCIgdXJsPSIpOworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3
a1VybChBZG9wdFdLLCBXS0ludGVudFNlcnZpY2VJbmZvQ29weUhyZWYoc2VydmljZUluZm8pKTsK
KyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9X
VEZTdHJpbmcoYWRvcHRXSyhXS1VSTENvcHlTdHJpbmcod2tVcmwuZ2V0KCkpKSkpOworICAgIElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiIGRpc3Bvc2l0
aW9uPSIpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a0Rpc3Bvc2l0aW9uKEFkb3B0
V0ssIFdLSW50ZW50U2VydmljZUluZm9Db3B5RGlzcG9zaXRpb24oc2VydmljZUluZm8pKTsKKyAg
ICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZT
dHJpbmcod2tEaXNwb3NpdGlvbi5nZXQoKSkpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQo
KS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiXG4iKTsKKyNlbmRpZgorfQorCiB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCiB7CiAgICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZShmcmFtZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAppbmRleCA0ZTFmY2UxLi44MjRiMWRmIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmgKQEAgLTcyLDYgKzcyLDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlQ29udGVudExlbmd0aEZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiwg
V0tCdW5kbGVGcmFtZVJlZiwgdWludDY0X3QgaWRlbnRpZmllciwgdWludDY0X3QgbGVuZ3RoLCBj
b25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvclJlc291cmNlKFdL
QnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgdWludDY0X3QgaWRlbnRpZmllciwgY29u
c3Qgdm9pZCopOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkRm9yUmVzb3VyY2UoV0tCdW5k
bGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBXS0Vycm9y
UmVmLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUludGVudEZvckZy
YW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgV0tJbnRlbnREYXRhUmVmLCBX
S1R5cGVSZWYqLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJJbnRlbnRT
ZXJ2aWNlRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCBXS0ludGVu
dFNlcnZpY2VJbmZvUmVmLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkKik7CiAKICAgICB2b2lkIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZik7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS0J1
bmRsZUZyYW1lUmVmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151458</attachid>
            <date>2012-07-10 07:25:31 -0700</date>
            <delta_ts>2012-07-23 13:37:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>90873_wk2_intents_wtr.patch</filename>
            <type>text/plain</type>
            <size>54849</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMWQ0NzA4OC4uN2Y2NjI5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTE1Myw2ICsxNTMsOCBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVk
L1dlYkdyYXBoaWNzQ29udGV4dC5jcHAKICAgICBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5jcHAK
ICAgICBTaGFyZWQvV2ViSW1hZ2UuY3BwCisgICAgU2hhcmVkL1dlYkludGVudERhdGEuY3BwCisg
ICAgU2hhcmVkL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcAogICAgIFNoYXJlZC9XZWJLZXlib2Fy
ZEV2ZW50LmNwcAogICAgIFNoYXJlZC9XZWJMYXllclRyZWVJbmZvLmNwcAogICAgIFNoYXJlZC9X
ZWJNZW1vcnlTYW1wbGVyLmNwcApAQCAtMjQ1LDggKzI0Nyw2IEBAIFNFVChXZWJLaXQyX1NPVVJD
RVMKICAgICBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJJ
Y29uRGF0YWJhc2VDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNw
cAotICAgIFVJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcAotICAgIFVJUHJvY2Vzcy9XZWJJbnRl
bnRTZXJ2aWNlSW5mby5jcHAKICAgICBVSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdl
clByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHAKICAgICBV
SVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGFiNmNiNDMuLjMyYjZm
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAorMjAxMi0wNy0xMCAgQ2hyaXN0b3BoZSBE
dW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtXSzJdIFdlYktp
dFRlc3RSdW5uZXIgbmVlZHMgdG8gcHJpbnQgaW5mb3JtYXRpb24gYWJvdXQgV2ViIGludGVudHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwODczCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEJ1bmRs
ZSBBUEkgZm9yIFdlYiBJbnRlbnRzLiBUaGlzIGlzIG5lZWRlZCBieSB0aGUgV2ViS2l0VGVzdFJ1
bm5lcgorICAgICAgICB0byBwcmludCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbmV3IGludGVudCBy
ZXF1ZXN0cyBhbmQgdGhlIGludGVudAorICAgICAgICBzZXJ2aWNlIHJlZ2lzdHJhdGlvbnMuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogTW92ZSBXZWJJbnRlbnREYXRhIGFuZCBXZWJJbnRl
bnRTZXJ2aWNlSW5mbyBmcm9tCisgICAgICAgIFVJUHJvY2Vzcy8gdG8gU2hhcmVkLy4KKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBNb3ZlIFdlYkludGVudERhdGEgYW5kIFdlYkludGVu
dFNlcnZpY2VJbmZvIGZyb20KKyAgICAgICAgVUlQcm9jZXNzLyB0byBTaGFyZWQvLgorICAgICAg
ICAqIFNoYXJlZC9BUElDbGllbnRUcmFpdHMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSW50ZW50
RGF0YS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50
RGF0YS5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnRE
YXRhOjpXZWJJbnRlbnREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6ZGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OnN1Z2dlc3Rpb25zKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6ZXh0cmEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnRlbnREYXRhOjpleHRyYXMpOgorICAgICAgICAqIFNoYXJlZC9XZWJJbnRlbnREYXRhLmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkludGVudERhdGEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnRlbnREYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRh
Ojp+V2ViSW50ZW50RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OmFjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OnBheWxvYWRUeXBlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6c2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkludGVudERhdGE6OnN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6dHlw
ZSk6CisgICAgICAgICogU2hhcmVkL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnRTZXJ2aWNlSW5mbzo6
V2ViSW50ZW50U2VydmljZUluZm8pOgorICAgICAgICAqIFNoYXJlZC9XZWJJbnRlbnRTZXJ2aWNl
SW5mby5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudFNl
cnZpY2VJbmZvLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViSW50ZW50U2Vydmlj
ZUluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnRTZXJ2aWNlSW5mbzo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50U2VydmljZUluZm86On5XZWJJbnRlbnRTZXJ2aWNl
SW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudFNlcnZpY2VJbmZvOjphY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnRTZXJ2aWNlSW5mbzo6cGF5bG9hZFR5cGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnRlbnRTZXJ2aWNlSW5mbzo6aHJlZik6CisgICAgICAgIChXZWJL
aXQ6OldlYkludGVudFNlcnZpY2VJbmZvOjp0aXRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
dGVudFNlcnZpY2VJbmZvOjpkaXNwb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVu
dFNlcnZpY2VJbmZvOjp0eXBlKToKKyAgICAgICAgKiBUYXJnZXQucHJpOiBNb3ZlIFdlYkludGVu
dERhdGEgYW5kIFdlYkludGVudFNlcnZpY2VJbmZvIGZyb20KKyAgICAgICAgVUlQcm9jZXNzLyB0
byBTaGFyZWQvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19sb2FkZXJfY2xpZW50LmNwcDoKKyAgICAgICAg
KGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSk6CisgICAgICAgIChyZWdpc3RlckludGVudFNlcnZp
Y2VGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyQ2xpZW50OjpyZWdpc3RlckludGVudFNlcnZp
Y2VGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oOgorICAg
ICAgICAoV2ViTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWdpc3RlckludGVudFNlcnZp
Y2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUlu
dGVudEZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgIChXZWJQYWdlUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVJbnRlbnRG
b3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoSW50ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlZ2lzdGVySW50ZW50
U2VydmljZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9xdC9RdEJ1aWx0aW5CdW5kbGVQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UXRCdWlsdGluQnVuZGxlUGFnZTo6UXRCdWlsdGluQnVuZGxl
UGFnZSk6CisKIDIwMTItMDctMTAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjIxNzguCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktp
dDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA2YzA2ZDVhLi5hNDgyY2E1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ2Miw2ICs0NjIsMTAgQEAgd2Via2l0Ml9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViSW1hZ2UuaCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuY3BwIFwK
KwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5oIFwKKwlTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViSW50ZW50U2VydmljZUluZm8uY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViSW50ZW50U2VydmljZUluZm8uaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYktl
eWJvYXJkRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTW91c2VFdmVudC5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmggXApA
QCAtODUwLDEwICs4NTQsNiBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2VDbGllbnQuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkluc3BlY3RvclByb3h5LmggXAotCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRl
bnREYXRhLmNwcCBcCi0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuaCBc
Ci0JU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcCBcCi0J
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudFNlcnZpY2VJbmZvLmggXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5
LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmgKaW5kZXggZDIxODA3
OC4uZTJjY2UxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRy
YWl0cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMuaApAQCAt
MzgsNyArMzgsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xpZW50SW50ZXJmYWNlPiBzdHJ1Y3Qg
QVBJQ2xpZW50VHJhaXRzIHsKIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGllbnRJbnRlcmZhY2U+IGNv
bnN0IHNpemVfdCBBUElDbGllbnRUcmFpdHM8Q2xpZW50SW50ZXJmYWNlPjo6aW50ZXJmYWNlU2l6
ZXNCeVZlcnNpb25bXSA9IHsgc2l6ZW9mKENsaWVudEludGVyZmFjZSkgfTsKIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudD4gewotICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgaW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bM107CisgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBpbnRlcmZhY2VTaXplc0J5VmVyc2lvbls0XTsKIH07CiAKIHRlbXBs
YXRlPD4gc3RydWN0IEFQSUNsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGll
bnQ+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjEyOGRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnRlbnRE
YXRhLmgiCisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisKKyNpbmNsdWRlICJJbW11dGFibGVB
cnJheS5oIgorI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJXZWJT
dHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dl
YkludGVudERhdGE6OldlYkludGVudERhdGEoY29uc3QgSW50ZW50RGF0YSYgc3RvcmUpCisgICAg
OiBtX3N0b3JlKHN0b3JlKQoreworfQorCitQYXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gV2ViSW50ZW50RGF0YTo6ZGF0YSgpIGNvbnN0Cit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IGRhdGFDb3B5ID0gbV9zdG9yZS5kYXRhOworICAgIHJldHVybiBXZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmFkb3B0KGRhdGFDb3B5KTsKK30KKworUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4g
V2ViSW50ZW50RGF0YTo6c3VnZ2VzdGlvbnMoKSBjb25zdAoreworICAgIGNvbnN0IHNpemVfdCBu
dW1TdWdnZXN0aW9ucyA9IG1fc3RvcmUuc3VnZ2VzdGlvbnMuc2l6ZSgpOworICAgIFZlY3RvcjxS
ZWZQdHI8QVBJT2JqZWN0PiA+IHdrU3VnZ2VzdGlvbnMobnVtU3VnZ2VzdGlvbnMpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1TdWdnZXN0aW9uczsgKytpKQorICAgICAgICB3a1N1
Z2dlc3Rpb25zW2ldID0gV2ViVVJMOjpjcmVhdGUobV9zdG9yZS5zdWdnZXN0aW9uc1tpXSk7Cisg
ICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjphZG9wdCh3a1N1Z2dlc3Rpb25zKTsKK30KKworU3Ry
aW5nIFdlYkludGVudERhdGE6OmV4dHJhKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAoreworICAg
IHJldHVybiBtX3N0b3JlLmV4dHJhcy5nZXQoa2V5KTsKK30KKworUGFzc1JlZlB0cjxJbW11dGFi
bGVEaWN0aW9uYXJ5PiBXZWJJbnRlbnREYXRhOjpleHRyYXMoKSBjb25zdAoreworICAgIEltbXV0
YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgd2tFeHRyYXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fc3RvcmUuZXh0cmFzLmVuZCgpOworICAgIGZv
ciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdG9yZS5l
eHRyYXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICB3a0V4dHJhcy5zZXQoaXQt
PmZpcnN0LCBXZWJTdHJpbmc6OmNyZWF0ZShpdC0+c2Vjb25kKSk7CisgICAgcmV0dXJuIEltbXV0
YWJsZURpY3Rpb25hcnk6OmFkb3B0KHdrRXh0cmFzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFMpCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViSW50ZW50RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlY2Y0
YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50RGF0
YS5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSW50
ZW50RGF0YV9oCisjZGVmaW5lIFdlYkludGVudERhdGFfaAorCisjaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiSW50ZW50RGF0YS5oIgor
I2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJbnRlbnREYXRhIDog
cHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlw
ZSA9IFR5cGVJbnRlbnREYXRhOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW50ZW50RGF0
YT4gY3JlYXRlKGNvbnN0IEludGVudERhdGEmIHN0b3JlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJJbnRlbnREYXRhKHN0b3JlKSk7CisgICAgfQorCisgICAgdmlydHVh
bCB+V2ViSW50ZW50RGF0YSgpIHsgfQorCisgICAgY29uc3QgU3RyaW5nJiBhY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3N0b3JlLmFjdGlvbjsgfQorICAgIGNvbnN0IFN0cmluZyYgcGF5bG9hZFR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLnR5cGU7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpL
VVJMJiBzZXJ2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS5zZXJ2aWNlOyB9CisgICAgUGFz
c1JlZlB0cjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEoKSBjb25zdDsKKyAgICBTdHJp
bmcgZXh0cmEoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW1tdXRh
YmxlRGljdGlvbmFyeT4gZXh0cmFzKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbW11dGFibGVB
cnJheT4gc3VnZ2VzdGlvbnMoKSBjb25zdDsKKworICAgIGNvbnN0IEludGVudERhdGEmIHN0b3Jl
KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZTsgfQorCitwcml2YXRlOgorICAgIFdlYkludGVudERh
dGEoY29uc3QgSW50ZW50RGF0YSYpOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBJbnRlbnREYXRhIG1fc3RvcmU7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykKKworI2Vu
ZGlmIC8vIFdlYkludGVudERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkludGVudFNlcnZpY2VJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRl
bnRTZXJ2aWNlSW5mby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQz
MjljNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnRT
ZXJ2aWNlSW5mby5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkludGVudFNlcnZpY2VJbmZvLmgiCisKKyNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViSW50
ZW50U2VydmljZUluZm86OldlYkludGVudFNlcnZpY2VJbmZvKGNvbnN0IEludGVudFNlcnZpY2VJ
bmZvJiBzdG9yZSkKKyAgICA6IG1fc3RvcmUoc3RvcmUpCit7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnRTZXJ2aWNlSW5mby5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkludGVudFNlcnZpY2VJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODY5NDYwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJJbnRlbnRTZXJ2aWNlSW5mby5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViSW50ZW50U2VydmljZUluZm9faAorI2RlZmluZSBXZWJJ
bnRlbnRTZXJ2aWNlSW5mb19oCisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQorCisjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiSW50ZW50U2VydmljZUluZm8uaCIKKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
SW50ZW50U2VydmljZUluZm8gOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUludGVudFNlcnZpY2VJbmZvOworCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViSW50ZW50U2VydmljZUluZm8+IGNyZWF0ZShjb25zdCBJbnRlbnRT
ZXJ2aWNlSW5mbyYgc3RvcmUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YkludGVudFNlcnZpY2VJbmZvKHN0b3JlKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+V2ViSW50
ZW50U2VydmljZUluZm8oKSB7IH0KKworICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9zdG9yZS5hY3Rpb247IH0KKyAgICBjb25zdCBTdHJpbmcmIHBheWxvYWRUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS50eXBlOyB9CisgICAgY29uc3QgV2ViQ29yZTo6S1VS
TCYgaHJlZigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUuaHJlZjsgfQorICAgIGNvbnN0IFN0cmlu
ZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLnRpdGxlOyB9CisgICAgY29uc3QgU3Ry
aW5nJiBkaXNwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUuZGlzcG9zaXRpb247IH0K
KworcHJpdmF0ZToKKyAgICBXZWJJbnRlbnRTZXJ2aWNlSW5mbyhjb25zdCBJbnRlbnRTZXJ2aWNl
SW5mbyYpOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBl
OyB9CisKKyAgICBJbnRlbnRTZXJ2aWNlSW5mbyBtX3N0b3JlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQorCisjZW5kaWYg
Ly8gV2ViSW50ZW50U2VydmljZUluZm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFy
Z2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggMmNhOGMyZS4uY2QyMjRl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9UYXJnZXQucHJpCkBAIC0xMTIsNiArMTEyLDggQEAgSEVBREVSUyArPSBcCiAgICAgU2hh
cmVkL1dlYkdyYXBoaWNzQ29udGV4dC5oIFwKICAgICBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5o
IFwKICAgICBTaGFyZWQvV2ViSW1hZ2UuaCBcCisgICAgU2hhcmVkL1dlYkludGVudERhdGEuaCBc
CisgICAgU2hhcmVkL1dlYkludGVudFNlcnZpY2VJbmZvLmggXAogICAgIFNoYXJlZC9XZWJMYXll
clRyZWVJbmZvLmggXAogICAgIFNoYXJlZC9XZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmggXAogICAg
IFNoYXJlZC9XZWJOdW1iZXIuaCBcCkBAIC0yNjMsOCArMjY1LDYgQEAgSEVBREVSUyArPSBcCiAg
ICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5oIFwKICAgICBVSVByb2Nlc3MvV2ViSWNvbkRh
dGFiYXNlQ2xpZW50LmggXAogICAgIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oIFwKLSAg
ICBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oIFwKLSAgICBVSVByb2Nlc3MvV2ViSW50ZW50U2Vy
dmljZUluZm8uaCBcCiAgICAgVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94
eS5oIFwKICAgICBVSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuaCBcCiAgICAgVUlQcm9j
ZXNzL1dlYkxvYWRlckNsaWVudC5oIFwKQEAgLTQ4Nyw2ICs0ODcsOCBAQCBTT1VSQ0VTICs9IFwK
ICAgICBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5jcHAgXAogICAgIFNoYXJlZC9XZWJLZXlib2Fy
ZEV2ZW50LmNwcCBcCiAgICAgU2hhcmVkL1dlYkltYWdlLmNwcCBcCisgICAgU2hhcmVkL1dlYklu
dGVudERhdGEuY3BwIFwKKyAgICBTaGFyZWQvV2ViSW50ZW50U2VydmljZUluZm8uY3BwIFwKICAg
ICBTaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5jcHAgXAogICAgIFNoYXJlZC9XZWJNb3VzZUV2ZW50
LmNwcCBcCiAgICAgU2hhcmVkL1dlYk5ldHdvcmtJbmZvLmNwcCBcCkBAIC02MjYsOCArNjI4LDYg
QEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAgXAogICAg
IFVJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yUHJveHkuY3BwIFwKLSAgICBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAgXAot
ICAgIFVJUHJvY2Vzcy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAgXAogICAgIFVJUHJvY2Vzcy9X
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViTGF5
ZXJUcmVlUmVuZGVyZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKaW5kZXggMTJhN2I2My4uZmRh
Y2Y4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaApAQCAtNzMsOCAr
NzMsOCBAQCB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRl
bUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tCYQogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlk
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBX
S1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lk
ICgqV0tQYWdlV2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtQ2FsbGJhY2spKFdLUGFnZVJlZiBw
YWdlLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVBsdWdpbkRpZEZh
aWxDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRXJyb3JDb2RlIGVycm9yQ29kZSwgV0tTdHJp
bmdSZWYgbWltZVR5cGUsIFdLU3RyaW5nUmVmIHBsdWdpbklkZW50aWZpZXIsIFdLU3RyaW5nUmVm
IHBsdWdpblZlcnNpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgq
V0tQYWdlRGlkUmVjZWl2ZUludGVudEZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBX
S0ZyYW1lUmVmIGZyYW1lLCBXS0ludGVudERhdGFSZWYgaW50ZW50LCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLUGFnZVJlZ2lzdGVySW50ZW50U2VydmljZUZvckZy
YW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0ludGVudFNl
cnZpY2VJbmZvUmVmIHNlcnZpY2VJbmZvLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVk
ZWYgdm9pZCAoKldLUGFnZURpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZUNhbGxiYWNrKShXS1BhZ2VS
ZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVmIGludGVudCwgV0tUeXBl
UmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldL
UGFnZVJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdl
LCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0ludGVudFNlcnZpY2VJbmZvUmVmIHNlcnZpY2VJbmZvLCBX
S1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogCiAvLyBEZXByZWNh
dGVkCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luQ2FsbGJh
Y2tfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1p
bWVUeXBlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVudC5jcHAKaW5k
ZXggM2MyOGYyOS4uY2M4YjEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfbG9hZGVyX2NsaWVudC5jcHAKQEAgLTQ4LDcgKzQ4
LDcgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tQYWdlUmVmLCBXS1N0
cmluZ1JlZiB0aXRsZSwgV0tGcmFtZVJlZiBmcmEKIH0KIAogI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKLXN0YXRpYyB2b2lkIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwg
V0tGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVmIGludGVudCwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKK3N0YXRpYyB2b2lkIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS1BhZ2VSZWYg
cGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVmIGludGVudCwgV0tUeXBlUmVm
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0g
c3RhdGljX2Nhc3Q8RXZhc19PYmplY3QqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7
CiAgICAgRXdrX0ludGVudCogZXdrSW50ZW50ID0gZXdrX2ludGVudF9uZXcoaW50ZW50KTsKQEAg
LTU4LDcgKzU4LDcgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLUGFn
ZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0ludGVudEQKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTX1RBRykKLXN0YXRpYyB2b2lkIHJlZ2lzdGVySW50ZW50U2VydmljZUZv
ckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0ludGVudFNlcnZpY2VJ
bmZvUmVmIHNlcnZpY2VJbmZvLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQorc3RhdGljIHZvaWQg
cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYg
ZnJhbWUsIFdLSW50ZW50U2VydmljZUluZm9SZWYgc2VydmljZUluZm8sIFdLVHlwZVJlZiwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IHN0YXRp
Y19jYXN0PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwogICAg
IEV3a19JbnRlbnRfU2VydmljZSogZXdrSW50ZW50U2VydmljZSA9IGV3a19pbnRlbnRfc2Vydmlj
ZV9uZXcoc2VydmljZUluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkludGVudERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERh
dGEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjEyOGRiLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgiCi0KLSNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCi0KLSNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgotI2luY2x1ZGUgIkltbXV0YWJsZURp
Y3Rpb25hcnkuaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJXZWJVUkwuaCIK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkludGVudERhdGE6OldlYkludGVudERhdGEoY29u
c3QgSW50ZW50RGF0YSYgc3RvcmUpCi0gICAgOiBtX3N0b3JlKHN0b3JlKQotewotfQotCi1QYXNz
UmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gV2ViSW50ZW50RGF0YTo6ZGF0YSgpIGNv
bnN0Ci17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFDb3B5ID0gbV9zdG9yZS5kYXRhOwotICAg
IHJldHVybiBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFDb3B5KTsKLX0KLQot
UGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gV2ViSW50ZW50RGF0YTo6c3VnZ2VzdGlvbnMoKSBj
b25zdAotewotICAgIGNvbnN0IHNpemVfdCBudW1TdWdnZXN0aW9ucyA9IG1fc3RvcmUuc3VnZ2Vz
dGlvbnMuc2l6ZSgpOwotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0PiA+IHdrU3VnZ2VzdGlv
bnMobnVtU3VnZ2VzdGlvbnMpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1TdWdn
ZXN0aW9uczsgKytpKQotICAgICAgICB3a1N1Z2dlc3Rpb25zW2ldID0gV2ViVVJMOjpjcmVhdGUo
bV9zdG9yZS5zdWdnZXN0aW9uc1tpXSk7Ci0gICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjphZG9w
dCh3a1N1Z2dlc3Rpb25zKTsKLX0KLQotU3RyaW5nIFdlYkludGVudERhdGE6OmV4dHJhKGNvbnN0
IFN0cmluZyYga2V5KSBjb25zdAotewotICAgIHJldHVybiBtX3N0b3JlLmV4dHJhcy5nZXQoa2V5
KTsKLX0KLQotUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBXZWJJbnRlbnREYXRhOjpl
eHRyYXMoKSBjb25zdAotewotICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgd2tFeHRy
YXM7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1f
c3RvcmUuZXh0cmFzLmVuZCgpOwotICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV9zdG9yZS5leHRyYXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQotICAgICAgICB3a0V4dHJhcy5zZXQoaXQtPmZpcnN0LCBXZWJTdHJpbmc6OmNyZWF0ZShpdC0+
c2Vjb25kKSk7Ci0gICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KHdrRXh0cmFz
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lO
VEVOVFMpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnRE
YXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWNmNGFlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkludGVudERhdGFfaAotI2RlZmlu
ZSBXZWJJbnRlbnREYXRhX2gKLQotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLQotI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIkludGVudERhdGEuaCIKLSNpbmNsdWRlICJXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViSW50ZW50RGF0YSA6IHB1YmxpYyBBUElPYmplY3Qg
ewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlSW50ZW50RGF0
YTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkludGVudERhdGE+IGNyZWF0ZShjb25zdCBJ
bnRlbnREYXRhJiBzdG9yZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
SW50ZW50RGF0YShzdG9yZSkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgfldlYkludGVudERhdGEo
KSB7IH0KLQotICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdG9y
ZS5hY3Rpb247IH0KLSAgICBjb25zdCBTdHJpbmcmIHBheWxvYWRUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9zdG9yZS50eXBlOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6S1VSTCYgc2VydmljZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RvcmUuc2VydmljZTsgfQotICAgIFBhc3NSZWZQdHI8V2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBkYXRhKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGV4dHJhKGNvbnN0IFN0
cmluZyYga2V5KSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGV4
dHJhcygpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IHN1Z2dlc3Rpb25z
KCkgY29uc3Q7Ci0KLSAgICBjb25zdCBJbnRlbnREYXRhJiBzdG9yZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RvcmU7IH0KLQotcHJpdmF0ZToKLSAgICBXZWJJbnRlbnREYXRhKGNvbnN0IEludGVudERh
dGEmKTsKLQotICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsg
fQotCi0gICAgSW50ZW50RGF0YSBtX3N0b3JlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFMpCi0KLSNlbmRpZiAvLyBXZWJJbnRlbnRE
YXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnRTZXJ2
aWNlSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50U2VydmljZUlu
Zm8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDMyOWM1Li4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50U2VydmljZUluZm8uaCIKLQotI2lmIEVO
QUJMRShXRUJfSU5URU5UU19UQUcpCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJJbnRlbnRT
ZXJ2aWNlSW5mbzo6V2ViSW50ZW50U2VydmljZUluZm8oY29uc3QgSW50ZW50U2VydmljZUluZm8m
IHN0b3JlKQotICAgIDogbV9zdG9yZShzdG9yZSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudFNlcnZpY2VJbmZvLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50U2VydmljZUluZm8uaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODY5NDYwMS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW50ZW50U2VydmljZUluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViSW50ZW50U2VydmljZUluZm9faAotI2Rl
ZmluZSBXZWJJbnRlbnRTZXJ2aWNlSW5mb19oCi0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFH
KQotCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiSW50ZW50U2VydmljZUluZm8u
aCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y2xhc3MgV2ViSW50ZW50U2VydmljZUluZm8gOiBwdWJsaWMgQVBJT2JqZWN0IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUludGVudFNlcnZpY2VJbmZvOwot
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW50ZW50U2VydmljZUluZm8+IGNyZWF0ZShjb25z
dCBJbnRlbnRTZXJ2aWNlSW5mbyYgc3RvcmUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYkludGVudFNlcnZpY2VJbmZvKHN0b3JlKSk7Ci0gICAgfQotCi0gICAgdmlydHVh
bCB+V2ViSW50ZW50U2VydmljZUluZm8oKSB7IH0KLQotICAgIGNvbnN0IFN0cmluZyYgYWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS5hY3Rpb247IH0KLSAgICBjb25zdCBTdHJpbmcmIHBh
eWxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS50eXBlOyB9Ci0gICAgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgaHJlZigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUuaHJlZjsgfQotICAgIGNv
bnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLnRpdGxlOyB9Ci0gICAg
Y29uc3QgU3RyaW5nJiBkaXNwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUuZGlzcG9z
aXRpb247IH0KLQotcHJpdmF0ZToKLSAgICBXZWJJbnRlbnRTZXJ2aWNlSW5mbyhjb25zdCBJbnRl
bnRTZXJ2aWNlSW5mbyYpOwotCi0gICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBBUElUeXBlOyB9Ci0KLSAgICBJbnRlbnRTZXJ2aWNlSW5mbyBtX3N0b3JlOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQot
Ci0jZW5kaWYgLy8gV2ViSW50ZW50U2VydmljZUluZm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcAppbmRleCAyODllODc5Li40ZDNjNDU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcApAQCAtMTY5LDIyICsx
NjksMjIgQEAgdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTU0ZvckZyYW1lKFdlYlBh
Z2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnIKIH0KIAogI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKLXZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV2Vi
UGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViSW50ZW50RGF0YSogaW50
ZW50RGF0YSkKK3ZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUo
V2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViSW50ZW50RGF0YSog
aW50ZW50RGF0YSwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRp
ZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJ
KGludGVudERhdGEpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5kaWRSZWNl
aXZlSW50ZW50Rm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoaW50ZW50
RGF0YSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi12b2lkIFdlYkxvYWRlckNsaWVudDo6cmVn
aXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgV2ViSW50ZW50U2VydmljZUluZm8qIHNlcnZpY2VJbmZvKQordm9pZCBXZWJM
b2FkZXJDbGllbnQ6OnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKFdlYlBhZ2VQcm94eSog
cGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFdlYkludGVudFNlcnZpY2VJbmZvKiBzZXJ2aWNl
SW5mbywgQVBJT2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LnJlZ2lzdGVy
SW50ZW50U2VydmljZUZvckZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5y
ZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0
b0FQSShzZXJ2aWNlSW5mbyksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LnJl
Z2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRv
QVBJKHNlcnZpY2VJbmZvKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmgK
aW5kZXggZjhlNDRjNy4uZjEyOTFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJM
b2FkZXJDbGllbnQuaApAQCAtNzMsMTEgKzczLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJ1
bkluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBB
UElPYmplY3QqKTsKICAgICB2b2lkIGRpZERldGVjdFhTU0ZvckZyYW1lKFdlYlBhZ2VQcm94eSos
IFdlYkZyYW1lUHJveHkqLCBBUElPYmplY3QqKTsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0g
ICAgdm9pZCBkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQ
cm94eSosIFdlYkludGVudERhdGEqKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFt
ZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViSW50ZW50RGF0YSosIEFQSU9iamVj
dCopOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAgIHZvaWQgcmVn
aXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSos
IFdlYkludGVudFNlcnZpY2VJbmZvKik7CisgICAgdm9pZCByZWdpc3RlckludGVudFNlcnZpY2VG
b3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViSW50ZW50U2VydmljZUlu
Zm8qLCBBUElPYmplY3QqKTsKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IGRpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEZvckZyYW1lIGFuZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXQgc2hvdWxkIGJlIG1lcmdlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggODU3MDllZi4uNDcyMTMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE4OTQsMTMgKzE4OTQsMTggQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEZpbmlzaFByb2dyZXNzKCkKIH0KIAogI2lmIEVOQUJMRShXRUJfSU5URU5UU19U
QUcpCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgSW50ZW50U2VydmljZUluZm8mIHNlcnZpY2VJbmZvKQordm9p
ZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IEludGVudFNlcnZpY2VJbmZvJiBzZXJ2aWNlSW5mbywgQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7CisgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRh
dGE7CisgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2Vy
RGF0YSwgbV9wcm9jZXNzLT5jb250ZXh0KCkpOworICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUo
bWVzc2FnZURlY29kZXIpKQorICAgICAgICByZXR1cm47CisKICAgICBXZWJGcmFtZVByb3h5KiBm
cmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhm
cmFtZSk7CiAKICAgICBSZWZQdHI8V2ViSW50ZW50U2VydmljZUluZm8+IHdlYkludGVudFNlcnZp
Y2VJbmZvID0gV2ViSW50ZW50U2VydmljZUluZm86OmNyZWF0ZShzZXJ2aWNlSW5mbyk7Ci0gICAg
bV9sb2FkZXJDbGllbnQucmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUodGhpcywgZnJhbWUs
IHdlYkludGVudFNlcnZpY2VJbmZvLmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC5yZWdpc3Rl
ckludGVudFNlcnZpY2VGb3JGcmFtZSh0aGlzLCBmcmFtZSwgd2ViSW50ZW50U2VydmljZUluZm8u
Z2V0KCksIHVzZXJEYXRhLmdldCgpKTsKIH0KICNlbmRpZgogCkBAIC0yMTc1LDEzICsyMTgwLDE4
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXRlY3RYU1NGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kCiB9CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
Ci12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IEludGVudERhdGEmIGludGVudERhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEludGVudERh
dGEmIGludGVudERhdGEsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzKQogewor
ICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFdlYkNvbnRleHRVc2VyTWVzc2Fn
ZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIG1fcHJvY2Vzcy0+Y29udGV4dCgpKTsK
KyAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1lKGZy
YW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCiAgICAgUmVmUHRyPFdlYkludGVu
dERhdGE+IHdlYkludGVudERhdGEgPSBXZWJJbnRlbnREYXRhOjpjcmVhdGUoaW50ZW50RGF0YSk7
Ci0gICAgbV9sb2FkZXJDbGllbnQuZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHRoaXMsIGZyYW1l
LCB3ZWJJbnRlbnREYXRhLmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC5kaWRSZWNlaXZlSW50
ZW50Rm9yRnJhbWUodGhpcywgZnJhbWUsIHdlYkludGVudERhdGEuZ2V0KCksIHVzZXJEYXRhLmdl
dCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggNTdhYjg2Yy4uMmMwNGZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtNzQ5LDEwICs3NDksMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpbmlz
aFByb2dyZXNzKCk7CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgdm9pZCBkaWRSZWNl
aXZlSW50ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgSW50ZW50RGF0YSYpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IEludGVudERhdGEmLCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICNlbmRpZgogI2lmIEVO
QUJMRShXRUJfSU5URU5UU19UQUcpCi0gICAgdm9pZCByZWdpc3RlckludGVudFNlcnZpY2VGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnRTZXJ2aWNlSW5mbyYpOworICAgIHZv
aWQgcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
SW50ZW50U2VydmljZUluZm8mLCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICNlbmRpZgog
ICAgIAogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBm
cmFtZUlELCB1aW50MzJfdCBuYXZpZ2F0aW9uVHlwZSwgdWludDMyX3QgbW9kaWZpZXJzLCBpbnQz
Ml90IG1vdXNlQnV0dG9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBib29sJiByZWNlaXZlZFBv
bGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2FkSUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggMDM0MTI3Ni4uN2YwZDU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC05NywxMCArOTcsMTAgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgSW50ZW50IG1lc3NhZ2VzCiAjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQotICAgIERpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBXZWJLaXQ6OkludGVudERhdGEgaW50ZW50KQorICAgIERpZFJlY2VpdmVJbnRlbnRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkludGVudERhdGEgaW50ZW50LCBXZWJLaXQ6
OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKQogI2VuZGlmCiAjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLSAgICBSZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkludGVudFNlcnZpY2VJbmZvIHNlcnZpY2VJbmZv
KTsKKyAgICBSZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBX
ZWJLaXQ6OkludGVudFNlcnZpY2VJbmZvIHNlcnZpY2VJbmZvLCBXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKTsKICNlbmRpZgogCiAgICAgIyBQcm9ncmVz
cyBtZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKaW5kZXggMTUzMTc0Yi4uZjcwZDVi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCkBAIC0xMDksNiArMTA5LDggQEAgdHlwZWRl
ZiB2b2lkICgqV0tCdW5kbGVQYWdlV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9t
R2xvYmFsT2JqZWN0Q2FsbGIKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZFJlY29ubmVj
dERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlLCBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VXaWxsRGVzdHJveUdsb2JhbE9iamVj
dEZvckRPTVdpbmRvd0V4dGVuc2lvbkNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tC
dW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlw
ZWRlZiBib29sICgqV0tCdW5kbGVQYWdlU2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9j
YWxVUkxDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmLCBXS1N0cmluZ1JlZiB1cmwsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkUmVjZWl2ZUlu
dGVudEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lLCBXS0ludGVudERhdGFSZWYgaW50ZW50LCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVJlZ2lz
dGVySW50ZW50U2VydmljZUZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0ludGVudFNlcnZpY2VJbmZvUmVmIHNlcnZpY2VJbmZv
LCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogc3RydWN0
IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsK
QEAgLTE0NywxMCArMTQ5LDE0IEBAIHN0cnVjdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgewog
ICAgIC8vIFZlcnNpb24gMgogICAgIFdLQnVuZGxlUGFnZURpZEZpbmlzaFByb2dyZXNzQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaFByb2dyZXNzOwog
ICAgIFdLQnVuZGxlUGFnZVNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMQ2Fs
bGJhY2sgICAgICAgICAgICAgIHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJM
OworCisgICAgLy8gVmVyc2lvbiAzCisgICAgV0tCdW5kbGVQYWdlRGlkUmVjZWl2ZUludGVudEZv
ckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZUludGVu
dEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZVJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1l
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVySW50ZW50U2VydmljZUZvckZy
YW1lOwogfTsKIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCBXS0J1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ7CiAKLWVudW0geyBrV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Q3Vy
cmVudFZlcnNpb24gPSAyIH07CitlbnVtIHsga1dLQnVuZGxlUGFnZUxvYWRlckNsaWVudEN1cnJl
bnRWZXJzaW9uID0gMyB9OwogCiBlbnVtIHsKICAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Q
YXNzVGhyb3VnaCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LmNwcAppbmRleCAyOTYzZGMyLi43NGY4ZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC0zMyw2ICszMywxMyBAQAogI2luY2x1
ZGUgIldlYkVycm9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5oIgorI2VuZGlmCisj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKKyNpbmNsdWRlICJXZWJJbnRlbnRTZXJ2aWNlSW5m
by5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTE4Nyw2ICsxOTQsMzAgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ6OmRpZERldGVjdFhTU0ZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW0KICAgICB1
c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCisjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRp
ZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIFdl
YkludGVudERhdGEqIGludGVudCwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQoreworICAg
IGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKQorICAgICAgICByZXR1cm47
CisKKyAgICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAwOworICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVJbnRlbnRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShpbnRl
bnQpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHVzZXJEYXRh
ID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7Cit9CisjZW5kaWYKKworI2lmIEVO
QUJMRShXRUJfSU5URU5UU19UQUcpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUq
IGZyYW1lLCBXZWJJbnRlbnRTZXJ2aWNlSW5mbyogc2VydmljZSwgUmVmUHRyPEFQSU9iamVjdD4m
IHVzZXJEYXRhKQoreworICAgIGlmICghbV9jbGllbnQucmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9y
RnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9
IDA7CisgICAgbV9jbGllbnQucmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUodG9BUEkocGFn
ZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc2VydmljZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGll
bnQuY2xpZW50SW5mbyk7CisgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFU
b1Bhc3MpKTsKK30KKyNlbmRpZgorCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUs
IFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRpZEZp
cnN0TGF5b3V0Rm9yRnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuaAppbmRleCAyOTlmMTlkLi40MDMwMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKQEAgLTQ2LDYgKzQ2LDEyIEBAIGNsYXNzIEFQ
SU9iamVjdDsKIGNsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNz
IFdlYlBhZ2U7CiBjbGFzcyBXZWJGcmFtZTsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCitjbGFz
cyBXZWJJbnRlbnREYXRhOworI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKK2Ns
YXNzIFdlYkludGVudFNlcnZpY2VJbmZvOworI2VuZGlmCiAKIGNsYXNzIEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LCBrV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Q3VycmVudFZlcnNpb24+IHsKIHB1YmxpYzoK
QEAgLTY1LDYgKzcxLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVu
dEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0
YSk7CiAgICAgdm9pZCBkaWREZXRlY3RYU1NGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBS
ZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQor
ICAgIHZvaWQgZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFdl
YkludGVudERhdGEqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOworI2VuZGlmCisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKKyAgICB2b2lkIHJlZ2lzdGVySW50ZW50U2VydmljZUZv
ckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFdlYkludGVudFNlcnZpY2VJbmZvKiwgUmVmUHRy
PEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKKyNlbmRpZgorCiAgICAgdm9pZCBkaWRGaXJzdExheW91
dEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0
YSk7CiAgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXZWJQ
YWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwogICAgIHZvaWQg
ZGlkTGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCmluZGV4IDlhN2QyOTMuLjkxOGU3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCkBAIC03NSwxMCArNzUsMTUgQEAKIAogI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKICNpbmNsdWRlICJJbnRlbnREYXRhLmgiCi0jaW5jbHVkZSAiSW50ZW50U2Vydmlj
ZUluZm8uaCIKKyNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnRlbnRSZXF1ZXN0Lmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCisj
aW5jbHVkZSAiSW50ZW50U2VydmljZUluZm8uaCIKKyNpbmNsdWRlICJXZWJJbnRlbnRTZXJ2aWNl
SW5mby5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTE1NjcsNyArMTU3MiwxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaEludGVudChQYXNzUmVmUHRyPEludGVudFJlcXVlc3Q+IHJlcXVlc3QpCiAgICAg
aW50ZW50RGF0YS5leHRyYXMgPSBjb3JlSW50ZW50LT5leHRyYXMoKTsKICAgICBpbnRlbnREYXRh
LnN1Z2dlc3Rpb25zID0gY29yZUludGVudC0+c3VnZ2VzdGlvbnMoKTsKIAotICAgIHdlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUludGVudEZvckZyYW1lKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgaW50ZW50RGF0YSkpOworICAgIFJlZlB0cjxBUElPYmplY3Q+IHVz
ZXJEYXRhOworICAgIFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3ZWJJbnRlbnQgPSBXZWJJbnRlbnRE
YXRhOjpjcmVhdGUoaW50ZW50RGF0YSk7CisgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2Fk
ZXJDbGllbnQoKS5kaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgd2Vi
SW50ZW50LmdldCgpLCB1c2VyRGF0YSk7CisKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCks
IGludGVudERhdGEsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdl
dCgpKSkpOwogfQogI2VuZGlmCiAKQEAgLTE1ODUsNyArMTU5NCwxMSBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpyZWdpc3RlckludGVudFNlcnZpY2UoY29uc3QgU3RyaW5nJiBhY3Rpb24s
IGNvbnN0IFN0cgogICAgIHNlcnZpY2VJbmZvLnRpdGxlID0gdGl0bGU7CiAgICAgc2VydmljZUlu
Zm8uZGlzcG9zaXRpb24gPSBkaXNwb3NpdGlvbjsKIAotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUobV9mcmFtZS0+
ZnJhbWVJRCgpLCBzZXJ2aWNlSW5mbykpOworICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRh
OworICAgIFJlZlB0cjxXZWJJbnRlbnRTZXJ2aWNlSW5mbz4gd2ViSW50ZW50U2VydmljZUluZm8g
PSBXZWJJbnRlbnRTZXJ2aWNlSW5mbzo6Y3JlYXRlKHNlcnZpY2VJbmZvKTsKKyAgICB3ZWJQYWdl
LT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLnJlZ2lzdGVySW50ZW50U2VydmljZUZvckZy
YW1lKHdlYlBhZ2UsIG1fZnJhbWUsIHdlYkludGVudFNlcnZpY2VJbmZvLmdldCgpLCB1c2VyRGF0
YSk7CisKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVy
SW50ZW50U2VydmljZUZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgc2VydmljZUluZm8sIElu
amVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvUXRCdWlsdGlu
QnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1F0QnVpbHRpbkJ1
bmRsZVBhZ2UuY3BwCmluZGV4IGUyMGViMTYuLmQ1YzYwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvcXQvUXRCdWlsdGluQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9RdEJ1aWx0aW5CdW5kbGVQYWdlLmNwcApAQCAtNzYsNiAr
NzYsOCBAQCBRdEJ1aWx0aW5CdW5kbGVQYWdlOjpRdEJ1aWx0aW5CdW5kbGVQYWdlKFF0QnVpbHRp
bkJ1bmRsZSogYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZQogICAgICAgICAwLCAvLyB3aWxsRGVzdHJv
eUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbgogICAgICAgICAwLCAvLyBkaWRGaW5p
c2hQcm9ncmVzcwogICAgICAgICAwLCAvLyBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21M
b2NhbFVSTAorICAgICAgICAwLCAvLyBkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUKKyAgICAgICAg
MCwgLy8gcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlRm9yRnJhbWUKICAgICB9OwogICAgIFdLQnVuZGxl
UGFnZVNldFBhZ2VMb2FkZXJDbGllbnQobV9wYWdlLCAmbG9hZGVyQ2xpZW50KTsKIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhZjYyZDA2Li5l
MjI0NTA1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsMjQgQEAKIDIwMTItMDctMTAgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3Rv
cGhlLmR1bWV6QGludGVsLmNvbT4KIAorICAgICAgICBbV0syXSBXZWJLaXRUZXN0UnVubmVyIG5l
ZWRzIHRvIHByaW50IGluZm9ybWF0aW9uIGFib3V0IFdlYiBpbnRlbnRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDg3MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByaW50IG91dCBpbmZvcm1hdGlvbiBh
Ym91dCBuZXcgaW50ZW50cyByZXF1ZXN0cyBhbmQgaW50ZW50CisgICAgICAgIHNlcnZpY2VzIHJl
Z2lzdHJhdGlvbnMgaW4gV2ViS2l0VGVzdFJ1bm5lci4gVGhpcyBpcyBleHBlY3RlZAorICAgICAg
ICBieSB0ZXN0cyB1bmRlciB3ZWJpbnRlbnRzLyouCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKToKKyAgICAgICAgKFdUUjo6
SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUpOgorICAgICAgICAo
V1RSKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpyZWdpc3RlckludGVudFNl
cnZpY2VGb3JGcmFtZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDoKKyAgICAgICAgKEluamVjdGVkQnVuZGxlUGFnZSk6CisK
KzIwMTItMDctMTAgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNv
bT4KKwogICAgICAgICBbRUZMXSBXZWJLaXQgRFJUIGFuZCBXVFIgZmFpbCB0byBidWlsZCBkdWUg
dG8gdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBXVEY6Ok1ENTo6KgogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA4NjgKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
Y3BwCmluZGV4IGRjMmFkM2QuLmM1YmQxNDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAg
LTQ5LDYgKzQ5LDEzIEBACiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaCIKICNl
bmRpZgogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2luY2x1ZGUgPFdlYktpdDIvV0tJbnRl
bnREYXRhLmg+CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQorI2luY2x1ZGUg
PFdlYktpdDIvV0tJbnRlbnRTZXJ2aWNlSW5mby5oPgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtMjQxLDcgKzI0OCw5IEBAIEluamVjdGVkQnVu
ZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAgICAg
ICAwLCAvLyBkaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdAogICAg
ICAgICAwLCAvLyB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbgog
ICAgICAgICBkaWRGaW5pc2hQcm9ncmVzcywgLy8gZGlkRmluaXNoUHJvZ3Jlc3MKLSAgICAgICAg
MCAvLyBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTAorICAgICAgICAwLCAv
LyBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTAorICAgICAgICBkaWRSZWNl
aXZlSW50ZW50Rm9yRnJhbWUsIC8vIGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZQorICAgICAgICBy
ZWdpc3RlckludGVudFNlcnZpY2VGb3JGcmFtZSAvLyByZWdpc3RlckludGVudFNlcnZpY2VGb3JG
cmFtZQogICAgIH07CiAgICAgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudChtX3BhZ2Us
ICZsb2FkZXJDbGllbnQpOwogCkBAIC00MTYsNiArNDI1LDc1IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlOjpkaWRGaW5pc2hQcm9ncmVzcyhXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZvaWQgKmNs
aWVudEluCiAgICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2
b2lkKj4oY2xpZW50SW5mbykpLT5kaWRGaW5pc2hQcm9ncmVzcygpOwogfQogCit2b2lkIEluamVj
dGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0ludGVudERhdGFSZWYgaW50ZW50LCBXS1R5
cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigp
LT5hcHBlbmQoIlJlY2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj0iKTsKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gd2tBY3Rpb24oQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weUFjdGlvbihp
bnRlbnQpKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5h
cHBlbmQodG9XVEZTdHJpbmcod2tBY3Rpb24uZ2V0KCkpKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6
c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiB0eXBlPSIpOworICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiB3a1R5cGUoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weVR5cGUoaW50
ZW50KSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBw
ZW5kKHRvV1RGU3RyaW5nKHdrVHlwZS5nZXQoKSkpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiXG4iKTsKKworICAgIC8vIEZJWE1FOiBQcmlu
dCBudW1iZXIgb2YgcG9ydHMgd2hlbiBleHBvc2VkIGluIFdlYktpdDIKKworICAgIFdLUmV0YWlu
UHRyPFdLVVJMUmVmPiB3a1NlcnZpY2VVcmwoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weVNlcnZp
Y2UoaW50ZW50KSk7CisgICAgaWYgKHdrU2VydmljZVVybCkgeworICAgICAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gd2tTZXJ2aWNlKEFkb3B0V0ssIFdLVVJMQ29weVN0cmluZyh3a1NlcnZp
Y2VVcmwuZ2V0KCkpKTsKKyAgICAgICAgaWYgKHdrU2VydmljZSAmJiAhV0tTdHJpbmdJc0VtcHR5
KHdrU2VydmljZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQo
KS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiRXhwbGljaXQgaW50ZW50IHNlcnZpY2U6ICIpOwor
ICAgICAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBw
ZW5kKHRvV1RGU3RyaW5nKHdrU2VydmljZS5nZXQoKSkpOworICAgICAgICAgICAgSW5qZWN0ZWRC
dW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJcbiIpOworICAgICAgICB9
CisgICAgfQorCisgICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiB3a0V4dHJhcyhBZG9w
dFdLLCBXS0ludGVudERhdGFDb3B5RXh0cmFzKGludGVudCkpOworICAgIFdLUmV0YWluUHRyPFdL
QXJyYXlSZWY+IHdrRXh0cmFLZXlzKEFkb3B0V0ssIFdLRGljdGlvbmFyeUNvcHlLZXlzKHdrRXh0
cmFzLmdldCgpKSk7CisgICAgY29uc3Qgc2l6ZV90IG51bUV4dHJhS2V5cyA9IFdLQXJyYXlHZXRT
aXplKHdrRXh0cmFLZXlzLmdldCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUV4
dHJhS2V5czsgKytpKSB7CisgICAgICAgIFdLU3RyaW5nUmVmIHdrS2V5ID0gc3RhdGljX2Nhc3Q8
V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3a0V4dHJhS2V5cy5nZXQoKSwgaSkp
OworICAgICAgICBXS1N0cmluZ1JlZiB3a1ZhbHVlID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+
KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkod2tFeHRyYXMuZ2V0KCksIHdrS2V5KSk7CisgICAg
ICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiRXh0
cmFzWyIpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigp
LT5hcHBlbmQodG9XVEZTdHJpbmcod2tLZXkpKTsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJdID0gIik7CisgICAgICAgIEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmluZyh3a1Zh
bHVlKSk7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCkt
PmFwcGVuZCgiXG4iKTsKKyAgICB9CisKKyAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3a1N1
Z2dlc3Rpb25zKEFkb3B0V0ssIFdLSW50ZW50RGF0YUNvcHlTdWdnZXN0aW9ucyhpbnRlbnQpKTsK
KyAgICBjb25zdCBzaXplX3QgbnVtU3VnZ2VzdGlvbnMgPSBXS0FycmF5R2V0U2l6ZSh3a1N1Z2dl
c3Rpb25zLmdldCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVN1Z2dlc3Rpb25z
OyArK2kpIHsKKyAgICAgICAgV0tTdHJpbmdSZWYgd2tTdWdnZXN0aW9uID0gc3RhdGljX2Nhc3Q8
V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3a1N1Z2dlc3Rpb25zLmdldCgpLCBp
KSk7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFw
cGVuZCgiSGF2ZSBzdWdnZXN0aW9uICIpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcod2tTdWdnZXN0aW9uKSk7Cisg
ICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgi
XG4iKTsKKyAgICB9CisjZW5kaWYKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnJlZ2lz
dGVySW50ZW50U2VydmljZUZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lLCBXS0ludGVudFNlcnZpY2VJbmZvUmVmIHNlcnZpY2VJbmZvLCBXS1R5cGVS
ZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworI2lmIEVOQUJMRShXRUJf
SU5URU5UU19UQUcpCisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIo
KS0+YXBwZW5kKCJSZWdpc3RlcmVkIFdlYiBJbnRlbnQgU2VydmljZTogYWN0aW9uPSIpOworICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a0FjdGlvbihBZG9wdFdLLCBXS0ludGVudFNlcnZp
Y2VJbmZvQ29weUFjdGlvbihzZXJ2aWNlSW5mbykpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmluZyh3a0FjdGlvbi5nZXQoKSkp
OworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgi
IHR5cGU9Iik7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrVHlwZShBZG9wdFdLLCBX
S0ludGVudFNlcnZpY2VJbmZvQ29weVR5cGUoc2VydmljZUluZm8pKTsKKyAgICBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcod2tUeXBl
LmdldCgpKSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+
YXBwZW5kKCIgdGl0bGU9Iik7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrVGl0bGUo
QWRvcHRXSywgV0tJbnRlbnRTZXJ2aWNlSW5mb0NvcHlUaXRsZShzZXJ2aWNlSW5mbykpOworICAg
IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0
cmluZyh3a1RpdGxlLmdldCgpKSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmlu
Z0J1aWxkZXIoKS0+YXBwZW5kKCIgdXJsPSIpOworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3
a1VybChBZG9wdFdLLCBXS0ludGVudFNlcnZpY2VJbmZvQ29weUhyZWYoc2VydmljZUluZm8pKTsK
KyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9X
VEZTdHJpbmcoYWRvcHRXSyhXS1VSTENvcHlTdHJpbmcod2tVcmwuZ2V0KCkpKSkpOworICAgIElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiIGRpc3Bvc2l0
aW9uPSIpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a0Rpc3Bvc2l0aW9uKEFkb3B0
V0ssIFdLSW50ZW50U2VydmljZUluZm9Db3B5RGlzcG9zaXRpb24oc2VydmljZUluZm8pKTsKKyAg
ICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZT
dHJpbmcod2tEaXNwb3NpdGlvbi5nZXQoKSkpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQo
KS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiXG4iKTsKKyNlbmRpZgorfQorCiB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCiB7CiAgICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZShmcmFtZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAppbmRleCA0ZTFmY2UxLi44MjRiMWRmIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmgKQEAgLTcyLDYgKzcyLDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlQ29udGVudExlbmd0aEZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiwg
V0tCdW5kbGVGcmFtZVJlZiwgdWludDY0X3QgaWRlbnRpZmllciwgdWludDY0X3QgbGVuZ3RoLCBj
b25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvclJlc291cmNlKFdL
QnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgdWludDY0X3QgaWRlbnRpZmllciwgY29u
c3Qgdm9pZCopOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkRm9yUmVzb3VyY2UoV0tCdW5k
bGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBXS0Vycm9y
UmVmLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUludGVudEZvckZy
YW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgV0tJbnRlbnREYXRhUmVmLCBX
S1R5cGVSZWYqLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJJbnRlbnRT
ZXJ2aWNlRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCBXS0ludGVu
dFNlcnZpY2VJbmZvUmVmLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkKik7CiAKICAgICB2b2lkIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZik7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS0J1
bmRsZUZyYW1lUmVmKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>