<?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>160891</bug_id>
          
          <creation_ts>2016-08-15 22:27:03 -0700</creation_ts>
          <short_desc>[Cocoa] Remove dependency on Objective-C bindings in WebKit2 editing code</short_desc>
          <delta_ts>2016-10-21 22:29:49 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>160654</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1220357</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-15 22:27:03 -0700</bug_when>
    <thetext>[Cocoa] Remove dependency on Objective-C bindings in WebKit2 editing code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220366</commentid>
    <comment_count>1</comment_count>
      <attachid>286152</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-15 22:54:00 -0700</bug_when>
    <thetext>Created attachment 286152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220467</commentid>
    <comment_count>2</comment_count>
      <attachid>286152</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-16 09:57:43 -0700</bug_when>
    <thetext>Comment on attachment 286152
Patch

Clearing flags on attachment: 286152

Committed r204508: &lt;http://trac.webkit.org/changeset/204508&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220468</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-16 09:57:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243273</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-21 22:29:49 -0700</bug_when>
    <thetext>The untested code I landed here caused bug 163839.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286152</attachid>
            <date>2016-08-15 22:54:00 -0700</date>
            <delta_ts>2016-08-16 09:57:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160891-20160815225215.patch</filename>
            <type>text/plain</type>
            <size>65827</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQ2MWFhOWVlMTVjNTNh
ZDZmNTQ3NTdmZGZiY2ZkNjliYTEzODA3Ni4uNmNmNWM5YmIwZmJlOGRiYTQxYWU4M2Q5YWEyMjE3
ODZjNzJmMDg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE2LTA4LTE1ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFJlbW92ZSBkZXBl
bmRlbmN5IG9uIE9iamVjdGl2ZS1DIGJpbmRpbmdzIGluIFdlYktpdDIgZWRpdGluZyBjb2RlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA4OTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUmVtb3ZlZCBFZGl0b3JDb2NvYS5oLgorCisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuY3BwOiBSZW1vdmVkIG1lbWJlciBpbml0aWFsaXphdGlvbiBm
b3IgbWVtYmVycyBub3cKKyAgICAgICAgaW5pdGlhbGl6ZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRp
b24uCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOiBBZGRlZCBGcmFnbWVudEFuZFJlc291
cmNlcyBzdHJ1Y3QsIGNyZWF0ZUZyYWdtZW50CisgICAgICAgIG1lbWJlciBmdW5jdGlvbiwgYW5k
IF9XZWJDcmVhdGVGcmFnbWVudCBmdW5jdGlvbi4gQWxzbyBpbml0aWFsaXplIGFsbCB0aGUKKyAg
ICAgICAgc2NhbGFyIGRhdGEgbWVtYmVycyBoZXJlIGluc3RlYWQgb2YgaW4gdGhlIGNvbnN0cnVj
dG9yLgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5oOiBSZW1vdmVkLiBU
aGlzIHdhcyB1bnVzZWQuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjcmVhdGVGcmFnbWVudCk6IEFkZGVkLiBDYWxs
cyB0aHJvdWdoIHRvIFdlYktpdExlZ2FjeQorICAgICAgICB1c2luZyBzb2Z0IGxpbmtpbmcgZm9y
IG5vdywgYnV0IGxhdGVyIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBoZXJlIGluIFdlYkNvcmUuCisK
KyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKTogQ2FsbCBjcmVhdGVGcmFnbWVu
dC4KKworICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMpOiBDYWxsIGNyZWF0ZUZy
YWdtZW50LgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOiBSZW1vdmVkIGRvY3Vt
ZW50RnJhZ21lbnRGcm9tQXR0cmlidXRlZFN0cmluZworICAgICAgICBpbXBsZW1lbnRhdGlvbi4K
KworICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6IFJlbW92ZWQgZG9jdW1lbnRGcmFnbWVu
dEZyb21BdHRyaWJ1dGVkU3RyaW5nLgorICAgICAgICBUd28gcmVhc29uczogVGhlIGZpcnN0IGlz
IHRoYXQgdGhpcyBpcyBub3cgaW1wbGVtZW50ZWQgaW4gV2ViQ29yZS4gV2hpbGUKKyAgICAgICAg
dGhlcmUgaXMgYSBjYWxsIHRocm91Z2ggdG8gV2ViS2l0TGVnYWN5LCBpdCdzIGEgdGVtcG9yYXJ5
IHRoaW5nIGFuZCBkb25lCisgICAgICAgIHdpdGggc29mdCBsaW5raW5nLiBUaGUgc2Vjb25kIHJl
YXNvbiBpcyB0aGF0IHRoaXMgcmV0dXJuZWQgYSByYXcgcG9pbnRlciwKKyAgICAgICAgd2hpY2gg
aXMgbm90IHNhZmUgaW4gZ2VuZXJhbC4gV2FzIHNhZmUgaGVyZSBiZWNhdXNlIGl0IHdhcyByZXR1
cm5pbmcgYQorICAgICAgICBwb2ludGVyIG93bmVkIGJ5IGFuIGF1dG9yZWxlYXNlZCBPYmplY3Rp
dmUtQyBvYmplY3QuCisKIDIwMTYtMDgtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBEcm9wIHVudXNlZCBFdmVudFRhcmdldDo6aGFzQWN0aXZlRXZlbnRMaXN0
ZW5lcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGQ2NWYxYzQ2MmIwMmZkZGZiNDVlYWNiOTAwZWI1
MTViODc1Y2U1M2UuLjVlNWQwNmIyMjkzOWRmYjg5ZDY2YjNkNDYzMDgxZjdlNjYyMTE0ODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxNi0wOC0xNSAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBSZW1vdmUgZGVwZW5kZW5jeSBv
biBPYmplY3RpdmUtQyBiaW5kaW5ncyBpbiBXZWJLaXQyIGVkaXRpbmcgY29kZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODkxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaDogUmVtb3ZlZCBkb2N1bWVudEZyYWdtZW50RnJvbUF0dHJpYnV0ZWRT
dHJpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06Cisg
ICAgICAgIChhdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24pOiBSZXBsYWNl
ZCB0aGUKKyAgICAgICAgY3JlYXRlRXhjbHVkZWRFbGVtZW50c0ZvckF0dHJpYnV0ZWRTdHJpbmdD
b252ZXJzaW9uIGZ1bmN0aW9uIHdpdGggdGhpcyBvbmUuCisgICAgICAgIE5vIGdvb2QgcmVhc29u
IHRvIGtlZXAgdGhlIGFycmF5IGFyb3VuZCBpbnN0ZWFkIG9mIHRoZSBkaWN0aW9uYXJ5LgorICAg
ICAgICAoX1dlYkNyZWF0ZUZyYWdtZW50KTogUmVuYW1lZCBmcm9tIGRvY3VtZW50RnJhZ21lbnRG
cm9tQXR0cmlidXRlZFN0cmluZy4KKyAgICAgICAgVGhpcyBpcyBub3cgYSBnbG9iYWwgZnVuY3Rp
b24gZXhwb3J0ZWQgc28gaXQgY2FuIGJlIGNhbGxlZCBieSBXZWJDb3JlIHdpdGgKKyAgICAgICAg
YSBkaWZmZXJlbnQgd2F5IG9mIHJldHVybmluZyBpdHMgdmFsdWUuCisKKyAgICAgICAgKiBXZWJL
aXQuZXhwOiBBZGRlZCBfV2ViQ3JlYXRlRnJhZ21lbnQuCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfZG9jdW1lbnRGcmFnbWVudEZy
b21QYXN0ZWJvYXJkOmZvclR5cGU6aW5Db250ZXh0OnN1YnJlc291cmNlczpdKToKKyAgICAgICAg
UmVtb3ZlZCBsb25nLWFnby1vYnNvbGV0ZSB3b3JrYXJvdW5kIGZvciBSYWRhciBidWcgNTA1MjM2
OS4KKwogMjAxNi0wOC0xNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIEFub3RoZXIgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQ1YTkyZDY0Yjg0ZWQ1
MzViMDUxNWYyNzBhYzFmNzE5MGFmOWFhZTIuLmY5YzkwYzMzZDgyMmZlYWMzZjE4MzMxZGYxMTEx
NWQ2MjIwYzhjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0wOC0xNSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBSZW1vdmUgZGVw
ZW5kZW5jeSBvbiBPYmplY3RpdmUtQyBiaW5kaW5ncyBpbiBXZWJLaXQyIGVkaXRpbmcgY29kZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODkxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOiBSZW1vdmVkIGRvY3VtZW50RnJh
Z21lbnRGcm9tQXR0cmlidXRlZFN0cmluZy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJFZGl0b3JDbGllbnRJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYkVk
aXRvckNsaWVudDo6ZG9jdW1lbnRGcmFnbWVudEZyb21BdHRyaWJ1dGVkU3RyaW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGll
bnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUV4Y2x1ZGVkRWxlbWVudHNGb3JBdHRy
aWJ1dGVkU3RyaW5nQ29udmVyc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkVk
aXRvckNsaWVudDo6ZG9jdW1lbnRGcmFnbWVudEZyb21BdHRyaWJ1dGVkU3RyaW5nKTogRGVsZXRl
ZC4KKwogMjAxNi0wOC0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJlbmFtZSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlIHRvIFNvY2tldFN0
cmVhbUhhbmRsZSBhbmQgU29ja2V0U3RyZWFtSGFuZGxlIHRvIFNvY2tldFN0cmVhbUhhbmRsZUlt
cGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAzNDE0MWMxNTEzZjU3MWI4ZGZkOGRlOTBmZTM5ZTNiYTNmMDU4NWNmLi4zNDczYTNk
MzM4YzMwZmRhMWUxODAwMDc4NTgwOWEyYTdiZTc1ZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTQ5Nyw3ICsxMTQ5Nyw2
IEBACiAJCTlCNTMyRUExMUJBOTI4NTcwMDM4QTgyNyAvKiBTbG90QXNzaWdubWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbG90QXNzaWdubWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNTMyRUEyMUJBOTI4NTcwMDM4QTgyNyAvKiBT
bG90QXNzaWdubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbG90QXNz
aWdubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjU1RUVFODFCM0U4ODk4
MDA1MzQyQkMgLyogRWRpdG9yQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBFZGl0b3JDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
OUI1NUVFRUExQjNGM0ZFRjAwNTM0MkJDIC8qIEVkaXRvckNvY29hLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEVkaXRvckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNTZDOUE4MUM4
OTMxMjgwMEM0NTZERiAvKiBMaWZlY3ljbGVDYWxsYmFja1F1ZXVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IExpZmVjeWNsZUNhbGxiYWNrUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OUI1NkM5QTkxQzg5MzI5QTAwQzQ1NkRGIC8qIExpZmVjeWNsZUNhbGxiYWNrUXVldWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlmZWN5Y2xlQ2FsbGJhY2tRdWV1
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNjlEM0IxMUI5OEZGMEEwMEUz
NTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxT
bG90RWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODM1Myw3ICsx
ODM1Miw2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlDNTIyN0RFRjFDM0M2REQ3MDBGNUVENTQg
LyogRGF0YURldGVjdGlvbi5oICovLAogCQkJCUM1MjI3REYwMUMzQzZERDcwMEY1RUQ1NCAvKiBE
YXRhRGV0ZWN0aW9uLm1tICovLAotCQkJCTlCNTVFRUVBMUIzRjNGRUYwMDUzNDJCQyAvKiBFZGl0
b3JDb2NvYS5oICovLAogCQkJCTlCNTVFRUU4MUIzRTg4OTgwMDUzNDJCQyAvKiBFZGl0b3JDb2Nv
YS5tbSAqLywKIAkJCQk3QzNFNTEwODE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5o
ICovLAogCQkJCTdDM0U1MTA5MThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVyLm1tICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDkzOWY1OGVhZmE3YjBhNzVlYjc0MmQ5
ZTIyNTgyYWU3ZDg1NGQ1YjcuLjQyN2ViMjlkYzU1NDE5NTc5ODY4ZmFiNzFkOGFjNzUwZTYwMTJm
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTExMDgsMTggKzExMDgsMTAgQEAg
dm9pZCBFZGl0b3I6OnJlYXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cjxFZGl0Q29tbWFuZENvbXBv
c2l0aW9uPiBjbWQpCiAKIEVkaXRvcjo6RWRpdG9yKEZyYW1lJiBmcmFtZSkKICAgICA6IG1fZnJh
bWUoZnJhbWUpCi0gICAgLCBtX2lnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKGZhbHNl
KQotICAgIC8vIFRoaXMgaXMgb2ZmIGJ5IGRlZmF1bHQsIHNpbmNlIG1vc3QgZWRpdG9ycyB3YW50
IHRoaXMgYmVoYXZpb3IgKHRoaXMgbWF0Y2hlcyBJRSBidXQgbm90IEZGKS4KLSAgICAsIG1fc2hv
dWxkU3R5bGVXaXRoQ1NTKGZhbHNlKQogICAgICwgbV9raWxsUmluZyhzdGQ6Om1ha2VfdW5pcXVl
PEtpbGxSaW5nPigpKQogICAgICwgbV9zcGVsbENoZWNrZXIoc3RkOjptYWtlX3VuaXF1ZTxTcGVs
bENoZWNrZXI+KGZyYW1lKSkKICAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcihzdGQ6
Om1ha2VfdW5pcXVlPEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI+KGZyYW1lKSkKLSAgICAsIG1f
YXJlTWFya2VkVGV4dE1hdGNoZXNIaWdobGlnaHRlZChmYWxzZSkKLSAgICAsIG1fZGVmYXVsdFBh
cmFncmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc0RpdikKLSAgICAsIG1f
b3ZlcndyaXRlTW9kZUVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2VkaXRvclVJVXBkYXRlVGltZXIo
KnRoaXMsICZFZGl0b3I6OmVkaXRvclVJVXBkYXRlVGltZXJGaXJlZCkKLSAgICAsIG1fZWRpdG9y
VUlVcGRhdGVUaW1lclNob3VsZENoZWNrU3BlbGxpbmdBbmRHcmFtbWFyKGZhbHNlKQotICAgICwg
bV9lZGl0b3JVSVVwZGF0ZVRpbWVyV2FzVHJpZ2dlcmVkQnlEaWN0YXRpb24oZmFsc2UpCiAjaWYg
RU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiAhUExBVEZPUk0oSU9TKQogICAg
ICwgbV90ZWxlcGhvbmVOdW1iZXJEZXRlY3Rpb25VcGRhdGVUaW1lcigqdGhpcywgJkVkaXRvcjo6
c2NhblNlbGVjdGlvbkZvclRlbGVwaG9uZU51bWJlcnMpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCmluZGV4IDc3ZjRiNDA4YmYyZGM1ZWQxN2UyZmVlMjVhMmZjMjRlOWQ5ODZkM2UuLjA1
NmIyMWIzMTZmY2M4M2YzZDlhYjcxNGJiNTUxYWQwNTViZTI3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRl
ZiBFZGl0b3JfaAotI2RlZmluZSBFZGl0b3JfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJD
b2xvci5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oIgpAQCAtOTcsNiAr
OTYsMTMgQEAgZW51bSBjbGFzcyBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIHsKICAgICBJZ25vcmVC
bG9ja3F1b3RlLAogfTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorc3RydWN0IEZyYWdtZW50QW5k
UmVzb3VyY2VzIHsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQ7CisgICAg
VmVjdG9yPFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiByZXNvdXJjZXM7Cit9OworI2VuZGlmCisK
IGNsYXNzIEVkaXRvciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBA
IC0xOTcsNiArMjAzLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVhcHBsaWVkRWRpdGluZyhQYXNz
UmVmUHRyPEVkaXRDb21tYW5kQ29tcG9zaXRpb24+KTsKICAgICB2b2lkIHVuYXBwbGllZFNwZWxs
Q29ycmVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb25PZkNvcnJlY3RlZCwg
Y29uc3QgU3RyaW5nJiBjb3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbik7CiAKKyAg
ICAvLyBUaGlzIGlzIG9mZiBieSBkZWZhdWx0LCBzaW5jZSBtb3N0IGVkaXRvcnMgd2FudCB0aGlz
IGJlaGF2aW9yIChvcmlnaW5hbGx5IG1hdGNoZWQgSUUgYnV0IG5vdCBGaXJlZm94KS4KICAgICB2
b2lkIHNldFNob3VsZFN0eWxlV2l0aENTUyhib29sIGZsYWcpIHsgbV9zaG91bGRTdHlsZVdpdGhD
U1MgPSBmbGFnOyB9CiAgICAgYm9vbCBzaG91bGRTdHlsZVdpdGhDU1MoKSBjb25zdCB7IHJldHVy
biBtX3Nob3VsZFN0eWxlV2l0aENTUzsgfQogCkBAIC0yNjUsNyArMjcyLDcgQEAgcHVibGljOgog
CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkdmFuY2VUb05l
eHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uID0gZmFsc2UpOwotI2VuZGlm
IC8vICFQTEFURk9STShJT1MpCisjZW5kaWYKICAgICB2b2lkIHNob3dTcGVsbGluZ0d1ZXNzUGFu
ZWwoKTsKICAgICBib29sIHNwZWxsaW5nUGFuZWxJc1Nob3dpbmcoKTsKIApAQCAtNDk4LDYgKzUw
NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFJhbmdlPiBhZGp1c3RlZFNlbGVjdGlvblJhbmdl
KCk7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VS
ZXNvdXJjZUFuZEFkZFJlc291cmNlKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+JiYpOwogICAgIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhOU0F0
dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgRnJhZ21lbnRBbmRSZXNvdXJjZXMgY3JlYXRlRnJhZ21l
bnQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwogICAgIHZvaWQgZmlsbEluVXNlclZpc2libGVGb3Jt
KFBhc3RlYm9hcmRVUkwmKTsKICNlbmRpZgogCkBAIC01MDksMjEgKzUxNywyMSBAQCBwcml2YXRl
OgogICAgIHVuc2lnbmVkIG1fY29tcG9zaXRpb25TdGFydDsKICAgICB1bnNpZ25lZCBtX2NvbXBv
c2l0aW9uRW5kOwogICAgIFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4gbV9jdXN0b21Db21w
b3NpdGlvblVuZGVybGluZXM7Ci0gICAgYm9vbCBtX2lnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9u
Q2hhbmdlOwotICAgIGJvb2wgbV9zaG91bGRTdGFydE5ld0tpbGxSaW5nU2VxdWVuY2Uge2ZhbHNl
fTsKLSAgICBib29sIG1fc2hvdWxkU3R5bGVXaXRoQ1NTOworICAgIGJvb2wgbV9pZ25vcmVDb21w
b3NpdGlvblNlbGVjdGlvbkNoYW5nZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZFN0YXJ0
TmV3S2lsbFJpbmdTZXF1ZW5jZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZFN0eWxlV2l0
aENTUyB7IGZhbHNlIH07CiAgICAgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPEtpbGxSaW5nPiBtX2tp
bGxSaW5nOwogICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxTcGVsbENoZWNrZXI+IG1fc3BlbGxD
aGVja2VyOwogICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyPiBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBt
X21hcms7Ci0gICAgYm9vbCBtX2FyZU1hcmtlZFRleHRNYXRjaGVzSGlnaGxpZ2h0ZWQ7Ci0gICAg
RWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9yIG1fZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcjsKLSAg
ICBib29sIG1fb3ZlcndyaXRlTW9kZUVuYWJsZWQ7CisgICAgYm9vbCBtX2FyZU1hcmtlZFRleHRN
YXRjaGVzSGlnaGxpZ2h0ZWQgeyBmYWxzZSB9OworICAgIEVkaXRvclBhcmFncmFwaFNlcGFyYXRv
ciBtX2RlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IgeyBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJ
c0RpdiB9OworICAgIGJvb2wgbV9vdmVyd3JpdGVNb2RlRW5hYmxlZCB7IGZhbHNlIH07CiAKICAg
ICBWaXNpYmxlU2VsZWN0aW9uIG1fb2xkU2VsZWN0aW9uRm9yRWRpdG9yVUlVcGRhdGU7CiAgICAg
VGltZXIgbV9lZGl0b3JVSVVwZGF0ZVRpbWVyOwotICAgIGJvb2wgbV9lZGl0b3JVSVVwZGF0ZVRp
bWVyU2hvdWxkQ2hlY2tTcGVsbGluZ0FuZEdyYW1tYXI7Ci0gICAgYm9vbCBtX2VkaXRvclVJVXBk
YXRlVGltZXJXYXNUcmlnZ2VyZWRCeURpY3RhdGlvbjsKKyAgICBib29sIG1fZWRpdG9yVUlVcGRh
dGVUaW1lclNob3VsZENoZWNrU3BlbGxpbmdBbmRHcmFtbWFyIHsgZmFsc2UgfTsKKyAgICBib29s
IG1fZWRpdG9yVUlVcGRhdGVUaW1lcldhc1RyaWdnZXJlZEJ5RGljdGF0aW9uIHsgZmFsc2UgfTsK
ICAgICBib29sIG1faXNIYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlIHsgZmFsc2UgfTsKIAogI2lm
IEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgIVBMQVRGT1JNKElPUykKQEAg
LTU1Nyw0ICs1NjUsOCBAQCBpbmxpbmUgYm9vbCBFZGl0b3I6Om1hcmtlZFRleHRNYXRjaGVzQXJl
SGlnaGxpZ2h0ZWQoKSBjb25zdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAv
LyBFZGl0b3JfaAorI2lmIFBMQVRGT1JNKENPQ09BKQorLy8gVGhpcyBmdW5jdGlvbiBpcyBkZWNs
YXJlZCBoZXJlIGJ1dCBkZWZpbmVkIGluIHRoZSBXZWJLaXRMZWdhY3kgZnJhbWV3b3JrLgorLy8g
RklYTUU6IEdldCByaWQgb2YgdGhpcyBhbmQgY2hhbmdlIHRoaXMgc28gaXQgZG9lc24ndCB1c2Ug
V2ViS2l0TGVnYWN5LgorZXh0ZXJuICJDIiB2b2lkIF9XZWJDcmVhdGVGcmFnbWVudChXZWJDb3Jl
OjpEb2N1bWVudCYsIE5TQXR0cmlidXRlZFN0cmluZyAqLCBXZWJDb3JlOjpGcmFnbWVudEFuZFJl
c291cmNlcyYpOworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNv
Y29hLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExMmE1ZDZkNzBhMWNjMTYzYzg5
NTAzYWM0ZTE3MWFkNDY0Mjc4MjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNywgMjAwOCwgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRWRpdG9y
Q29jb2FfaAotI2RlZmluZSBFZGl0b3JDb2NvYV9oCi0KLSNpbmNsdWRlICJFZGl0b3IuaCIKLQot
I2lmIFBMQVRGT1JNKElPUykKLQotdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgTlNVbmRlcmxp
bmVTdHlsZSkgewotICAgIE5TVW5kZXJsaW5lU3R5bGVOb25lICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDB4MDAsCi0gICAgTlNVbmRlcmxpbmVTdHlsZVNpbmdsZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMHgwMSwKLSAgICBOU1VuZGVybGluZVN0eWxlVGhpY2sgTlNf
RU5VTV9BVkFJTEFCTEVfSU9TKDdfMCkgICAgPSAweDAyLAotICAgIE5TVW5kZXJsaW5lU3R5bGVE
b3VibGUgTlNfRU5VTV9BVkFJTEFCTEVfSU9TKDdfMCkgICA9IDB4MDksCi0gICAgCi0gICAgTlNV
bmRlcmxpbmVQYXR0ZXJuU29saWQgTlNfRU5VTV9BVkFJTEFCTEVfSU9TKDdfMCkgICAgICA9IDB4
MDAwMCwKLSAgICBOU1VuZGVybGluZVBhdHRlcm5Eb3QgTlNfRU5VTV9BVkFJTEFCTEVfSU9TKDdf
MCkgICAgICAgID0gMHgwMTAwLAotICAgIE5TVW5kZXJsaW5lUGF0dGVybkRhc2ggTlNfRU5VTV9B
VkFJTEFCTEVfSU9TKDdfMCkgICAgICAgPSAweDAyMDAsCi0gICAgTlNVbmRlcmxpbmVQYXR0ZXJu
RGFzaERvdCBOU19FTlVNX0FWQUlMQUJMRV9JT1MoN18wKSAgICA9IDB4MDMwMCwKLSAgICBOU1Vu
ZGVybGluZVBhdHRlcm5EYXNoRG90RG90IE5TX0VOVU1fQVZBSUxBQkxFX0lPUyg3XzApID0gMHgw
NDAwLAotICAgIAotICAgIE5TVW5kZXJsaW5lQnlXb3JkIE5TX0VOVU1fQVZBSUxBQkxFX0lPUyg3
XzApID0gMHg4MDAwCi19OwotCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQppbmRleCAxNjU0N2ZkNjg2N2U3ZmQ3NzZmOTU5OTM4
NmIyYjA5YzE4ZDk0MWI4Li4yMWE4NzhjNGVkMjg3NmRlMjU2NDlkNjhmNzRjZmNlYzA4NjdjZjdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzLCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
Ni0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjYsOCArMjYsMTAgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiRWRpdG9yLmgiCiAKKyNpbXBvcnQgIkFyY2hpdmVSZXNvdXJjZS5oIgogI2ltcG9ydCAi
Q1NTVmFsdWVMaXN0LmgiCiAjaW1wb3J0ICJDU1NWYWx1ZVBvb2wuaCIKKyNpbXBvcnQgIkRvY3Vt
ZW50RnJhZ21lbnQuaCIKICNpbXBvcnQgIkVkaXRpbmdTdHlsZS5oIgogI2ltcG9ydCAiRnJhbWUu
aCIKICNpbXBvcnQgIkZyYW1lU2VsZWN0aW9uLmgiCkBAIC0zOCwxMCArNDAsMTQgQEAKICNpbXBv
cnQgIlRleHQuaCIKICNpbXBvcnQgImh0bWxlZGl0aW5nLmgiCiAKK1NPRlRfTElOS19GUkFNRVdP
UksoV2ViS2l0TGVnYWN5KQorCitTT0ZUX0xJTksoV2ViS2l0TGVnYWN5LCBfV2ViQ3JlYXRlRnJh
Z21lbnQsIHZvaWQsIChXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nLCBXZWJDb3JlOjpGcmFnbWVudEFuZFJlc291cmNlcyYgcmVzdWx0KSwgKGRv
Y3VtZW50LCBzdHJpbmcsIHJlc3VsdCkpCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRklY
TUU6IFRoaXMgZmlndXJlcyBvdXQgdGhlIGN1cnJlbnQgc3R5bGUgYnkgaW5zZXJ0aW5nIGEgPHNw
YW4+IQotY29uc3QgUmVuZGVyU3R5bGUqIEVkaXRvcjo6c3R5bGVGb3JTZWxlY3Rpb25TdGFydChG
cmFtZSogZnJhbWUsIE5vZGUgKiZub2RlVG9SZW1vdmUpCitjb25zdCBSZW5kZXJTdHlsZSogRWRp
dG9yOjpzdHlsZUZvclNlbGVjdGlvblN0YXJ0KEZyYW1lKiBmcmFtZSwgTm9kZSomIG5vZGVUb1Jl
bW92ZSkKIHsKICAgICBub2RlVG9SZW1vdmUgPSBudWxscHRyOwogICAgIApAQCAtOTcsNCArMTAz
LDEzIEBAIHZvaWQgRWRpdG9yOjpnZXRUZXh0RGVjb3JhdGlvbkF0dHJpYnV0ZXNSZXNwZWN0aW5n
VHlwaW5nU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmCiAgICAgfQogfQogCitGcmFnbWVudEFuZFJl
c291cmNlcyBFZGl0b3I6OmNyZWF0ZUZyYWdtZW50KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5n
KQoreworICAgIC8vIEZJWE1FOiBUaGUgYWxnb3JpdGhtIHRvIGNvbnZlcnQgYW4gYXR0cmlidXRl
ZCBzdHJpbmcgaW50byBIVE1MIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBoZXJlIGluIFdlYkNvcmUu
CisgICAgLy8gRm9yIG5vdywgdGhvdWdoLCB3ZSBjYWxsIGludG8gV2ViS2l0TGVnYWN5LCB3aGlj
aCBpbiB0dXJuIGNhbGxzIGludG8gQXBwS2l0L1RleHRLaXQuCisgICAgRnJhZ21lbnRBbmRSZXNv
dXJjZXMgcmVzdWx0OworICAgIF9XZWJDcmVhdGVGcmFnbWVudCgqbV9mcmFtZS5kb2N1bWVudCgp
LCBzdHJpbmcsIHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IGY1ZWE0ZDQ1N2IxMzViYWJiZDQ1YTEw
NDM3NDhlNDYwYjQ5N2E3YTMuLjk2YjcyMGM3Yjg2ZTdkOTE3MTA5MGIzMTRlNDE1YzhmZTcxMTA4
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTU2NiwxMSAr
NTY2LDEwIEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBFZGl0b3I6OmNyZWF0ZUZyYWdtZW50
QW5kQWRkUmVzb3VyY2VzKE5TQXR0cmlidXRlZFN0cmluCiAgICAgaWYgKHdhc0ltYWdlc0VuYWJs
ZWQpCiAgICAgICAgIGNhY2hlZFJlc291cmNlTG9hZGVyLnNldEltYWdlc0VuYWJsZWQoZmFsc2Up
OwogCi0gICAgVmVjdG9yPFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiByZXNvdXJjZXM7Ci0gICAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY2xpZW50KCktPmRvY3VtZW50RnJh
Z21lbnRGcm9tQXR0cmlidXRlZFN0cmluZyhzdHJpbmcsIHJlc291cmNlcyk7CisgICAgYXV0byBm
cmFnbWVudEFuZFJlc291cmNlcyA9IGNyZWF0ZUZyYWdtZW50KHN0cmluZyk7CiAKICAgICBpZiAo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KSkgewotICAgICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzKSB7CisgICAgICAg
IGZvciAoYXV0byYgcmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291cmNlcy5yZXNvdXJjZXMpIHsK
ICAgICAgICAgICAgIGlmIChyZXNvdXJjZSkKICAgICAgICAgICAgICAgICBsb2FkZXItPmFkZEFy
Y2hpdmVSZXNvdXJjZShyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQpAQCAt
NTgxLDcgKzU4MCw3IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBFZGl0b3I6OmNyZWF0ZUZy
YWdtZW50QW5kQWRkUmVzb3VyY2VzKE5TQXR0cmlidXRlZFN0cmluCiAgICAgaWYgKCF3YXNEZWZl
cnJpbmdDYWxsYmFja3MpCiAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5zZXREZWZlcnNMb2FkaW5n
KGZhbHNlKTsKICAgICAKLSAgICByZXR1cm4gZnJhZ21lbnQ7CisgICAgcmV0dXJuIFdURk1vdmUo
ZnJhZ21lbnRBbmRSZXNvdXJjZXMuZnJhZ21lbnQpOwogfQogCiBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gRWRpdG9yOjpjcmVhdGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJj
ZShSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiYmIHJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IGJmNDdjMGNkNmY1NzM0NDYwNjU1YTFmYzQ0ZDkxYzUy
N2EzN2FiYWMuLmM2NDc4N2Q5MDU2YzdjNzFjNzEyOWE5YmUyZjJjYTIyMzc5OTM4M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTY1OSwxMSArNjU5LDEwIEBA
IFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBFZGl0b3I6OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVz
b3VyY2VzKE5TQXR0cmlidXRlZFN0cmluCiAgICAgaWYgKCF3YXNEZWZlcnJpbmdDYWxsYmFja3Mp
CiAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5zZXREZWZlcnNMb2FkaW5nKHRydWUpOwogCi0gICAg
VmVjdG9yPFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiByZXNvdXJjZXM7Ci0gICAgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY2xpZW50KCktPmRvY3VtZW50RnJhZ21lbnRGcm9t
QXR0cmlidXRlZFN0cmluZyhzdHJpbmcsIHJlc291cmNlcyk7CisgICAgYXV0byBmcmFnbWVudEFu
ZFJlc291cmNlcyA9IGNyZWF0ZUZyYWdtZW50KHN0cmluZyk7CiAKICAgICBpZiAoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkgewotICAg
ICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzKSB7CisgICAgICAgIGZvciAoYXV0
byYgcmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291cmNlcy5yZXNvdXJjZXMpIHsKICAgICAgICAg
ICAgIGlmIChyZXNvdXJjZSkKICAgICAgICAgICAgICAgICBsb2FkZXItPmFkZEFyY2hpdmVSZXNv
dXJjZShyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQpAQCAtNjcyLDcgKzY3
MSw3IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBFZGl0b3I6OmNyZWF0ZUZyYWdtZW50QW5k
QWRkUmVzb3VyY2VzKE5TQXR0cmlidXRlZFN0cmluCiAgICAgaWYgKCF3YXNEZWZlcnJpbmdDYWxs
YmFja3MpCiAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5zZXREZWZlcnNMb2FkaW5nKGZhbHNlKTsK
IAotICAgIHJldHVybiBmcmFnbWVudDsKKyAgICByZXR1cm4gV1RGTW92ZShmcmFnbWVudEFuZFJl
c291cmNlcy5mcmFnbWVudCk7CiB9CiAKIHZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0
aEF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nLCBN
YWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggOTM2YWM0ODVhNDdjZDgyMWEyZDc4NjhlMmU3MTQx
YzQ4MDUzMTYzNC4uNDY3YzM5NzQ5MzRlMzZjZTY5NGMzZmNiZjFhNzJhMzRhMWQzMTNhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtNTEwLDExICs1MTAsMTAgQEAgcHVi
bGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBOU1N0cmluZyogdXNlclZp
c2libGVTdHJpbmcoTlNVUkwqKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgRG9j
dW1lbnRGcmFnbWVudCogZG9jdW1lbnRGcmFnbWVudEZyb21BdHRyaWJ1dGVkU3RyaW5nKE5TQXR0
cmlidXRlZFN0cmluZyosIFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4mKSBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9OworICAgIE5TU3RyaW5nKiB1c2VyVmlzaWJsZVN0cmluZyhO
U1VSTCAqKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdm9pZCBzZXRJbnNlcnRp
b25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfTsKLSAgICBOU1VSTCAqY2Fu
b25pY2FsaXplVVJMKE5TVVJMKikgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIE5T
VVJMICpjYW5vbmljYWxpemVVUkxTdHJpbmcoTlNTdHJpbmcqKSBvdmVycmlkZSB7IHJldHVybiBu
dWxscHRyOyB9CisgICAgTlNVUkwgKmNhbm9uaWNhbGl6ZVVSTChOU1VSTCAqKSBvdmVycmlkZSB7
IHJldHVybiBudWxscHRyOyB9CisgICAgTlNVUkwgKmNhbm9uaWNhbGl6ZVVSTFN0cmluZyhOU1N0
cmluZyAqKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFVTRShB
UFBLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCAwNWIwODBhMThlNWM5M2Nl
ZjRmOTYyODI4NzQzNDBmZmYwMDlhZTgzLi5jYmNhZGY0NmZkNGY2NTEzODM3MWU5ODMzYjcxYzAx
MTMzZGIyYTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI0LDExICsyNCw5
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEVkaXRvckNsaWVudF9oCi0jZGVm
aW5lIEVkaXRvckNsaWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkVkaXRvckluc2Vy
dEFjdGlvbi5oIgotI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlRleHRBZmZpbml0
eS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2luZy5oIgogI2luY2x1ZGUgIlVuZG9TdGVwLmgiCkBA
IC0zNiw3ICszNCw2IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi1PQkpDX0NMQVNTIE5TQXR0cmlidXRlZFN0cmluZzsKIE9CSkNfQ0xBU1MgTlNTdHJp
bmc7CiBPQkpDX0NMQVNTIE5TVVJMOwogI2VuZGlmCkBAIC0xNDMsNyArMTQwLDYgQEAgcHVibGlj
OgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCBOU1N0cmluZyogdXNlclZpc2li
bGVTdHJpbmcoTlNVUkwqKSA9IDA7Ci0gICAgdmlydHVhbCBEb2N1bWVudEZyYWdtZW50KiBkb2N1
bWVudEZyYWdtZW50RnJvbUF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nKiwgVmVj
dG9yPCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwog
ICAgIHZpcnR1YWwgTlNVUkwqIGNhbm9uaWNhbGl6ZVVSTChOU1VSTCopID0gMDsKICAgICB2aXJ0
dWFsIE5TVVJMKiBjYW5vbmljYWxpemVVUkxTdHJpbmcoTlNTdHJpbmcqKSA9IDA7CkBAIC0xOTAs
NSArMTg2LDMgQEAgcHVibGljOgogfTsKIAogfQotCi0jZW5kaWYgLy8gRWRpdG9yQ2xpZW50X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKaW5kZXggOTk3MGViNDg4NWUzYmY1ZGFkNTFjNjk4ZTgzMzI1MmNjMjJiZWNhOC4uNGI3YjIz
ZDQ0ODM0ZjgyOTY3ZmEwMmY2NTU2Y2I2MmYwNzIxMjZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQzLDcgKzQzLDcg
QEAKIEBjbGFzcyBXZWJWaWV3OwogQGNsYXNzIFdlYkVkaXRvclVuZG9UYXJnZXQ7CiAKLWNsYXNz
IFdlYkVkaXRvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpFZGl0b3JDbGllbnQsIHB1YmxpYyBX
ZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCB7CitjbGFzcyBXZWJFZGl0b3JDbGllbnQgZmluYWwg
OiBwdWJsaWMgV2ViQ29yZTo6RWRpdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNr
ZXJDbGllbnQgewogcHVibGljOgogICAgIFdlYkVkaXRvckNsaWVudChXZWJWaWV3ICopOwogICAg
IHZpcnR1YWwgfldlYkVkaXRvckNsaWVudCgpOwpAQCAtNTEsMTQwICs1MSwxNDEgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkQ2hlY2tTdWNjZWVkKGludCBzZXF1ZW5jZSwgTlNBcnJheSAqcmVzdWx0
cyk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygpIG92ZXJyaWRlOwotICAgIGJv
b2wgaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBvdmVycmlkZTsKLSAgICB2b2lk
IHRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCkgb3ZlcnJpZGU7Ci0gICAgaW50IHNwZWxs
Q2hlY2tlckRvY3VtZW50VGFnKCkgb3ZlcnJpZGU7Ci0KLSAgICBib29sIHNtYXJ0SW5zZXJ0RGVs
ZXRlRW5hYmxlZCgpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3Bh
Y2VFbmFibGVkKCkgb3ZlcnJpZGU7Ci0KLSAgICBib29sIHNob3VsZERlbGV0ZVJhbmdlKFdlYkNv
cmU6OlJhbmdlKikgb3ZlcnJpZGU7Ci0KLSAgICBib29sIHNob3VsZEJlZ2luRWRpdGluZyhXZWJD
b3JlOjpSYW5nZSopIG92ZXJyaWRlOwotICAgIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhXZWJDb3Jl
OjpSYW5nZSopIG92ZXJyaWRlOwotICAgIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJDb3JlOjpO
b2RlKiwgV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIG92ZXJy
aWRlOwotICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpS
YW5nZSosIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBz
aG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYkNvcmU6OlJhbmdlKiBmcm9tUmFuZ2UsIFdlYkNv
cmU6OlJhbmdlKiB0b1JhbmdlLCBXZWJDb3JlOjpFQWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3Rp
bmcpIG92ZXJyaWRlOwotCi0gICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKFdlYkNvcmU6OlN0eWxl
UHJvcGVydGllcyosIFdlYkNvcmU6OlJhbmdlKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRBcHBs
eVN0eWxlKCkgb3ZlcnJpZGU7Ci0KLSAgICBib29sIHNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRl
KFdlYkNvcmU6OlJhbmdlKiwgV2ViQ29yZTo6UmFuZ2UqIHJhbmdlVG9CZVJlcGxhY2VkKSBvdmVy
cmlkZTsKLQotICAgIHZvaWQgZGlkQmVnaW5FZGl0aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
aWRFbmRFZGl0aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2Fy
ZERhdGEpIG92ZXJyaWRlOwotCi0gICAgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJM
ICopIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQqIGRvY3VtZW50RnJh
Z21lbnRGcm9tQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKiwgVmVjdG9yPCBS
ZWZQdHI8V2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlPj4mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNl
dEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgTlNVUkwg
KmNhbm9uaWNhbGl6ZVVSTChOU1VSTCAqKSBvdmVycmlkZTsKLSAgICBOU1VSTCAqY2Fub25pY2Fs
aXplVVJMU3RyaW5nKE5TU3RyaW5nICopIG92ZXJyaWRlOworICAgIGJvb2wgaXNHcmFtbWFyQ2hl
Y2tpbmdFbmFibGVkKCkgZmluYWw7CisgICAgdm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKSBm
aW5hbDsKKyAgICBib29sIGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgZmluYWw7
CisgICAgdm9pZCB0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpIGZpbmFsOworICAgIGlu
dCBzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpIGZpbmFsOworCisgICAgYm9vbCBzbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQoKSBmaW5hbDsKKyAgICBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZCgpIGZpbmFsOworCisgICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShXZWJDb3Jl
OjpSYW5nZSopIGZpbmFsOworCisgICAgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoV2ViQ29yZTo6
UmFuZ2UqKSBmaW5hbDsKKyAgICBib29sIHNob3VsZEVuZEVkaXRpbmcoV2ViQ29yZTo6UmFuZ2Uq
KSBmaW5hbDsKKyAgICBib29sIHNob3VsZEluc2VydE5vZGUoV2ViQ29yZTo6Tm9kZSosIFdlYkNv
cmU6OlJhbmdlKiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbDsKKyAgICBib29s
IHNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3Jl
OjpFZGl0b3JJbnNlcnRBY3Rpb24pIGZpbmFsOworICAgIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRSYW5nZShXZWJDb3JlOjpSYW5nZSogZnJvbVJhbmdlLCBXZWJDb3JlOjpSYW5nZSogdG9SYW5n
ZSwgV2ViQ29yZTo6RUFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBmaW5hbDsKKworICAg
IGJvb2wgc2hvdWxkQXBwbHlTdHlsZShXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXMqLCBXZWJDb3Jl
OjpSYW5nZSopIGZpbmFsOworICAgIHZvaWQgZGlkQXBwbHlTdHlsZSgpIGZpbmFsOworCisgICAg
Ym9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShXZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6
OlJhbmdlKiByYW5nZVRvQmVSZXBsYWNlZCkgZmluYWw7CisKKyAgICB2b2lkIGRpZEJlZ2luRWRp
dGluZygpIGZpbmFsOworICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOworICAgIHZvaWQg
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlJhbmdlKikgZmluYWw7Cisg
ICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOworICAgIHZvaWQg
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKworICAgIE5TU3RyaW5nICp1c2VyVmlzaWJs
ZVN0cmluZyhOU1VSTCAqKSBmaW5hbDsKKyAgICB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgTlNVUkwgKmNhbm9uaWNhbGl6ZVVSTChOU1VSTCAq
KSBmaW5hbDsKKyAgICBOU1VSTCAqY2Fub25pY2FsaXplVVJMU3RyaW5nKE5TU3RyaW5nICopIGZp
bmFsOwogICAgIAogI2lmIFVTRShBUFBLSVQpCi0gICAgdm9pZCB1cHBlcmNhc2VXb3JkKCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBsb3dlcmNhc2VXb3JkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjYXBp
dGFsaXplV29yZCgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBwZXJjYXNlV29yZCgpIGZpbmFsOwor
ICAgIHZvaWQgbG93ZXJjYXNlV29yZCgpIGZpbmFsOworICAgIHZvaWQgY2FwaXRhbGl6ZVdvcmQo
KSBmaW5hbDsKICNlbmRpZgogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQot
ICAgIHZvaWQgc2hvd1N1YnN0aXR1dGlvbnNQYW5lbChib29sIHNob3cpIG92ZXJyaWRlOwotICAg
IGJvb2wgc3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0
b2dnbGVTbWFydEluc2VydERlbGV0ZSgpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNBdXRvbWF0aWNR
dW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHRvZ2dsZUF1dG9t
YXRpY1F1b3RlU3Vic3RpdHV0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0F1dG9tYXRpY0xp
bmtEZXRlY3Rpb25FbmFibGVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0
dXRpb25FbmFibGVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNEYXNoU3Vi
c3RpdHV0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVu
dEVuYWJsZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNl
bWVudCgpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25F
bmFibGVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJl
Y3Rpb24oKSBvdmVycmlkZTsKKyAgICB2b2lkIHNob3dTdWJzdGl0dXRpb25zUGFuZWwoYm9vbCBz
aG93KSBmaW5hbDsKKyAgICBib29sIHN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZygpIGZpbmFs
OworICAgIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKSBmaW5hbDsKKyAgICBib29sIGlz
QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkgZmluYWw7CisgICAgdm9pZCB0b2dn
bGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbigpIGZpbmFsOworICAgIGJvb2wgaXNBdXRvbWF0
aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpIGZpbmFsOworICAgIHZvaWQgdG9nZ2xlQXV0b21hdGlj
TGlua0RldGVjdGlvbigpIGZpbmFsOworICAgIGJvb2wgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uRW5hYmxlZCgpIGZpbmFsOworICAgIHZvaWQgdG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1
dGlvbigpIGZpbmFsOworICAgIGJvb2wgaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVk
KCkgZmluYWw7CisgICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQoKSBmaW5h
bDsKKyAgICBib29sIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpIGZpbmFs
OworICAgIHZvaWQgdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCkgZmluYWw7CiAj
ZW5kaWYKIAotICAgIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIG92ZXJyaWRlIHsg
cmV0dXJuIHRoaXM7IH0KKyAgICBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSBmaW5h
bCB7IHJldHVybiB0aGlzOyB9CiAKLSAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygp
IG92ZXJyaWRlOwotICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihXZWJDb3JlOjpG
cmFtZSopIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uQW5kVXBkYXRlTGF5
b3V0KCkgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBkaXNjYXJkZWRDb21wb3NpdGlvbihXZWJDb3Jl
OjpGcmFtZSopIG92ZXJyaWRlOworICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkg
ZmluYWw7CisgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKFdlYkNvcmU6OkZyYW1l
KikgZmluYWw7CisgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVMYXlvdXQoKSBm
aW5hbCB7IH0KKyAgICB2b2lkIGRpc2NhcmRlZENvbXBvc2l0aW9uKFdlYkNvcmU6OkZyYW1lKikg
ZmluYWw7CiAKLSAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxXZWJDb3JlOjpV
bmRvU3RlcD4pIG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChQYXNzUmVmUHRy
PFdlYkNvcmU6OlVuZG9TdGVwPikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGVhclVuZG9SZWRvT3Bl
cmF0aW9ucygpIG92ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChQYXNzUmVmUHRy
PFdlYkNvcmU6OlVuZG9TdGVwPikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFBh
c3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyVW5kb1Jl
ZG9PcGVyYXRpb25zKCkgZmluYWw7CiAKLSAgICBib29sIGNhbkNvcHlDdXQoV2ViQ29yZTo6RnJh
bWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjYW5QYXN0
ZShXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBib29sIGNhblVuZG8oKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGNhblJlZG8oKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGNhbkNvcHlDdXQoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRl
ZmF1bHRWYWx1ZSkgY29uc3QgZmluYWw7CisgICAgYm9vbCBjYW5QYXN0ZShXZWJDb3JlOjpGcmFt
ZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGNhblVuZG8oKSBj
b25zdCBmaW5hbDsKKyAgICBib29sIGNhblJlZG8oKSBjb25zdCBmaW5hbDsKICAgICAKLSAgICB2
b2lkIHVuZG8oKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZG8oKSBvdmVycmlkZTsKKyAgICB2b2lk
IHVuZG8oKSBmaW5hbDsKKyAgICB2b2lkIHJlZG8oKSBmaW5hbDsKICAgICAKLSAgICB2b2lkIGhh
bmRsZUtleWJvYXJkRXZlbnQoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCopIG92ZXJyaWRlOwotICAg
IHZvaWQgaGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKFdlYkNvcmU6OktleWJvYXJkRXZlbnQqKSBv
dmVycmlkZTsKKyAgICB2b2lkIGhhbmRsZUtleWJvYXJkRXZlbnQoV2ViQ29yZTo6S2V5Ym9hcmRF
dmVudCopIGZpbmFsOworICAgIHZvaWQgaGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKFdlYkNvcmU6
OktleWJvYXJkRXZlbnQqKSBmaW5hbDsKIAotICAgIHZvaWQgdGV4dEZpZWxkRGlkQmVnaW5FZGl0
aW5nKFdlYkNvcmU6OkVsZW1lbnQqKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleHRGaWVsZERpZEVu
ZEVkaXRpbmcoV2ViQ29yZTo6RWxlbWVudCopIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4dERpZENo
YW5nZUluVGV4dEZpZWxkKFdlYkNvcmU6OkVsZW1lbnQqKSBvdmVycmlkZTsKLSAgICBib29sIGRv
VGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChXZWJDb3JlOjpFbGVtZW50KiwgV2ViQ29yZTo6S2V5
Ym9hcmRFdmVudCopIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4dFdpbGxCZURlbGV0ZWRJblRleHRG
aWVsZChXZWJDb3JlOjpFbGVtZW50Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXh0RGlkQ2hhbmdl
SW5UZXh0QXJlYShXZWJDb3JlOjpFbGVtZW50Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBvdmVyZmxv
d1Njcm9sbFBvc2l0aW9uQ2hhbmdlZCgpIG92ZXJyaWRlIHsgfTsKKyAgICB2b2lkIHRleHRGaWVs
ZERpZEJlZ2luRWRpdGluZyhXZWJDb3JlOjpFbGVtZW50KikgZmluYWw7CisgICAgdm9pZCB0ZXh0
RmllbGREaWRFbmRFZGl0aW5nKFdlYkNvcmU6OkVsZW1lbnQqKSBmaW5hbDsKKyAgICB2b2lkIHRl
eHREaWRDaGFuZ2VJblRleHRGaWVsZChXZWJDb3JlOjpFbGVtZW50KikgZmluYWw7CisgICAgYm9v
bCBkb1RleHRGaWVsZENvbW1hbmRGcm9tRXZlbnQoV2ViQ29yZTo6RWxlbWVudCosIFdlYkNvcmU6
OktleWJvYXJkRXZlbnQqKSBmaW5hbDsKKyAgICB2b2lkIHRleHRXaWxsQmVEZWxldGVkSW5UZXh0
RmllbGQoV2ViQ29yZTo6RWxlbWVudCopIGZpbmFsOworICAgIHZvaWQgdGV4dERpZENoYW5nZUlu
VGV4dEFyZWEoV2ViQ29yZTo6RWxlbWVudCopIGZpbmFsOworICAgIHZvaWQgb3ZlcmZsb3dTY3Jv
bGxQb3NpdGlvbkNoYW5nZWQoKSBmaW5hbCB7IH07CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAg
dm9pZCBzdGFydERlbGF5aW5nQW5kQ29hbGVzY2luZ0NvbnRlbnRDaGFuZ2VOb3RpZmljYXRpb25z
KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wRGVsYXlpbmdBbmRDb2FsZXNjaW5nQ29udGVudENo
YW5nZU5vdGlmaWNhdGlvbnMoKSBvdmVycmlkZTsKLSAgICB2b2lkIHdyaXRlRGF0YVRvUGFzdGVi
b2FyZChOU0RpY3Rpb25hcnkqKSBvdmVycmlkZTsKLSAgICBOU0FycmF5KiBzdXBwb3J0ZWRQYXN0
ZWJvYXJkVHlwZXNGb3JDdXJyZW50U2VsZWN0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgTlNBcnJheSog
cmVhZERhdGFGcm9tUGFzdGVib2FyZChOU1N0cmluZyogdHlwZSwgaW50IGluZGV4KSBvdmVycmlk
ZTsKLSAgICBib29sIGhhc1JpY2hseUVkaXRhYmxlU2VsZWN0aW9uKCkgb3ZlcnJpZGU7Ci0gICAg
aW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KCkgb3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6RG9j
dW1lbnRGcmFnbWVudCogZG9jdW1lbnRGcmFnbWVudEZyb21EZWxlZ2F0ZShpbnQgaW5kZXgpIG92
ZXJyaWRlOwotICAgIGJvb2wgcGVyZm9ybXNUd29TdGVwUGFzdGUoV2ViQ29yZTo6RG9jdW1lbnRG
cmFnbWVudCopIG92ZXJyaWRlOwotICAgIGludCBwYXN0ZWJvYXJkQ2hhbmdlQ291bnQoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHN0YXJ0RGVsYXlpbmdBbmRDb2FsZXNjaW5nQ29udGVudENoYW5nZU5v
dGlmaWNhdGlvbnMoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BEZWxheWluZ0FuZENvYWxlc2NpbmdD
b250ZW50Q2hhbmdlTm90aWZpY2F0aW9ucygpIGZpbmFsOworICAgIHZvaWQgd3JpdGVEYXRhVG9Q
YXN0ZWJvYXJkKE5TRGljdGlvbmFyeSopIGZpbmFsOworICAgIE5TQXJyYXkqIHN1cHBvcnRlZFBh
c3RlYm9hcmRUeXBlc0ZvckN1cnJlbnRTZWxlY3Rpb24oKSBmaW5hbDsKKyAgICBOU0FycmF5KiBy
ZWFkRGF0YUZyb21QYXN0ZWJvYXJkKE5TU3RyaW5nKiB0eXBlLCBpbnQgaW5kZXgpIGZpbmFsOwor
ICAgIGJvb2wgaGFzUmljaGx5RWRpdGFibGVTZWxlY3Rpb24oKSBmaW5hbDsKKyAgICBpbnQgZ2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQoKSBmaW5hbDsKKyAgICBXZWJDb3JlOjpEb2N1bWVudEZyYWdt
ZW50KiBkb2N1bWVudEZyYWdtZW50RnJvbURlbGVnYXRlKGludCBpbmRleCkgZmluYWw7CisgICAg
Ym9vbCBwZXJmb3Jtc1R3b1N0ZXBQYXN0ZShXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50KikgZmlu
YWw7CisgICAgaW50IHBhc3RlYm9hcmRDaGFuZ2VDb3VudCgpIGZpbmFsOwogI2VuZGlmCiAgICAg
Ci0gICAgYm9vbCBzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbihXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdUeXBlKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGlnbm9yZVdvcmRJ
blNwZWxsRG9jdW1lbnQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBsZWFybldv
cmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJp
bmcoU3RyaW5nVmlldywgaW50KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQqIG1pc3NwZWxsaW5n
TGVuZ3RoKSBvdmVycmlkZTsKLSAgICBTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9y
TWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjaGVja0dy
YW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4m
LCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKSBvdmVycmlk
ZTsKLSAgICBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiBjaGVja1RleHRPZlBh
cmFncmFwaChTdHJpbmdWaWV3LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2lu
Z1R5cGVzLCBjb25zdCBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJiBjdXJyZW50U2VsZWN0aW9u
KSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhj
b25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpHcmFtbWFyRGV0YWlsJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgc2hvd1NwZWxsaW5nVUkoYm9vbCBzaG93KSBvdmVycmlkZTsK
LSAgICBib29sIHNwZWxsaW5nVUlJc1Nob3dpbmcoKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEd1
ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBj
b25zdCBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJiBjdXJyZW50U2VsZWN0aW9uLCBWZWN0b3I8
U3RyaW5nPiYgZ3Vlc3Nlcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHdpbGxTZXRJbnB1dE1ldGhv
ZFN0YXRlKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5h
YmxlZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhQYXNzUmVm
UHRyPFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3Q+LCBjb25zdCBXZWJDb3JlOjpWaXNpYmxl
U2VsZWN0aW9uJiBjdXJyZW50U2VsZWN0aW9uKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZEVy
YXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGUp
IGNvbnN0IGZpbmFsOworICAgIHZvaWQgaWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBT
dHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGxlYXJuV29yZChjb25zdCBTdHJpbmcmKSBmaW5hbDsK
KyAgICB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxs
aW5nTG9jYXRpb24sIGludCogbWlzc3BlbGxpbmdMZW5ndGgpIGZpbmFsOworICAgIFN0cmluZyBn
ZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKSBm
aW5hbDsKKyAgICB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcsIFZlY3RvcjxX
ZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJh
ZEdyYW1tYXJMZW5ndGgpIGZpbmFsOworICAgIFZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdS
ZXN1bHQ+IGNoZWNrVGV4dE9mUGFyYWdyYXBoKFN0cmluZ1ZpZXcsIFdlYkNvcmU6OlRleHRDaGVj
a2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIGNvbnN0IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rp
b24mIGN1cnJlbnRTZWxlY3Rpb24pIGZpbmFsOworICAgIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdp
dGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRh
aWwmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQo
Y29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBzaG93U3BlbGxpbmdVSShib29sIHNob3cp
IGZpbmFsOworICAgIGJvb2wgc3BlbGxpbmdVSUlzU2hvd2luZygpIGZpbmFsOworICAgIHZvaWQg
Z2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRl
eHQsIGNvbnN0IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24mIGN1cnJlbnRTZWxlY3Rpb24sIFZl
Y3RvcjxTdHJpbmc+JiBndWVzc2VzKSBmaW5hbDsKKworICAgIHZvaWQgd2lsbFNldElucHV0TWV0
aG9kU3RhdGUoKSBmaW5hbDsKKyAgICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFi
bGVkKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFBhc3NSZWZQdHI8
V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdD4sIGNvbnN0IFdlYkNvcmU6OlZpc2libGVTZWxl
Y3Rpb24mIGN1cnJlbnRTZWxlY3Rpb24pIGZpbmFsOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAotICAgIHZvaWQgcmVxdWVz
dENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3Qg
V2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgaGFuZGxlUmVxdWVz
dGVkQ2FuZGlkYXRlcyhOU0ludGVnZXIsIE5TQXJyYXk8TlNUZXh0Q2hlY2tpbmdSZXN1bHQgKj4g
Kik7Ci0gICAgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFdlYkNv
cmU6OlRleHRDaGVja2luZ1Jlc3VsdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVBY2NlcHRl
ZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCkgZmlu
YWw7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVnaXN0ZXJVbmRvT3JSZWRvU3RlcChQYXNzUmVmUHRy
PFdlYkNvcmU6OlVuZG9TdGVwPiwgYm9vbCBpc1JlZG8pOwogCiAgICAgV2ViVmlldyAqbV93ZWJW
aWV3OwogICAgIFJldGFpblB0cjxXZWJFZGl0b3JVbmRvVGFyZ2V0PiBtX3VuZG9UYXJnZXQ7Ci0g
ICAgYm9vbCBtX2hhdmVVbmRvUmVkb09wZXJhdGlvbnM7CisgICAgYm9vbCBtX2hhdmVVbmRvUmVk
b09wZXJhdGlvbnMgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdS
ZXF1ZXN0PiBtX3RleHRDaGVja2luZ1JlcXVlc3Q7CisKICNpZiBQTEFURk9STShJT1MpCi0gICAg
Ym9vbCBtX2RlbGF5aW5nQ29udGVudENoYW5nZU5vdGlmaWNhdGlvbnM7Ci0gICAgYm9vbCBtX2hh
c0RlbGF5ZWRDb250ZW50Q2hhbmdlTm90aWZpY2F0aW9uOworICAgIGJvb2wgbV9kZWxheWluZ0Nv
bnRlbnRDaGFuZ2VOb3RpZmljYXRpb25zIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzRGVsYXll
ZENvbnRlbnRDaGFuZ2VOb3RpZmljYXRpb24geyBmYWxzZSB9OwogI2VuZGlmCiAKICAgICBXZWJD
b3JlOjpWaXNpYmxlU2VsZWN0aW9uIG1fbGFzdFNlbGVjdGlvbkZvclJlcXVlc3RlZENhbmRpZGF0
ZXM7CisKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxMjAwCiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX3BhcmFncmFwaENvbnRleHRG
b3JDYW5kaWRhdGVSZXF1ZXN0OwogICAgIE5TUmFuZ2UgbV9yYW5nZUZvckNhbmRpZGF0ZXM7CkBA
IC0xOTQsNyArMTk1LDYgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyRmFjdG9yeTxXZWJFZGl0b3JD
bGllbnQ+IG1fd2Vha1B0ckZhY3Rvcnk7CiB9OwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCiBpbmxp
bmUgTlNTZWxlY3Rpb25BZmZpbml0eSBraXQoV2ViQ29yZTo6RUFmZmluaXR5IGFmZmluaXR5KQog
ewogICAgIHN3aXRjaCAoYWZmaW5pdHkpIHsKQEAgLTIxOCw3ICsyMTgsNiBAQCBpbmxpbmUgV2Vi
Q29yZTo6RUFmZmluaXR5IGNvcmUoTlNTZWxlY3Rpb25BZmZpbml0eSBhZmZpbml0eSkKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gV2ViQ29yZTo6RUFmZmluaXR5OjpVUFNU
UkVBTTsKIH0KLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggMzBhMzA1
ZmM1Y2M3NWVjOTFmODE0ZDgxYjljNTdmZjA0MDUxMjkwZS4uODI2ZTU5NTczNWUxYThmNjJkMzQz
YWNiNDkzZTQzZGY0NGEzNzU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2ltcG9ydCAiRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJET01Eb2N1bWVudEZyYWdt
ZW50SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTURvY3VtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQg
IkRPTUhUTUxFbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUhUTUxJbnB1dEVsZW1lbnRJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NSFRNTFRleHRBcmVhRWxlbWVudEludGVybmFsLmgiCkBA
IC05OCw4ICs5OSw3IEBAIEBlbmQKICNlbmRpZgogCiBAaW50ZXJmYWNlIE5TQXR0cmlidXRlZFN0
cmluZyAoV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRGV0YWlscykKLS0gKGlkKV9pbml0V2l0aERPTVJh
bmdlOihET01SYW5nZSopcmFuZ2U7Ci0tIChET01Eb2N1bWVudEZyYWdtZW50KilfZG9jdW1lbnRG
cm9tUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgZG9jdW1lbnQ6KERPTURvY3VtZW50Kilkb2N1bWVudCBk
b2N1bWVudEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWRpY3Qgc3VicmVzb3VyY2VzOihOU0Fy
cmF5ICoqKXN1YnJlc291cmNlczsKKy0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRG
cm9tUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgZG9jdW1lbnQ6KERPTURvY3VtZW50ICopZG9jdW1lbnQg
ZG9jdW1lbnRBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKilhdHRyaWJ1dGVzIHN1YnJlc291cmNl
czooTlNBcnJheSAqKilzdWJyZXNvdXJjZXM7CiBAZW5kCiAKIHN0YXRpYyBXZWJWaWV3SW5zZXJ0
QWN0aW9uIGtpdChFZGl0b3JJbnNlcnRBY3Rpb24gY29yZUFjdGlvbikKQEAgLTE1OSw4ICsxNTks
NiBAQCAtIChVbmRvU3RlcCAqKXN0ZXAKIEBlbmQKIAogQGludGVyZmFjZSBXZWJFZGl0b3JVbmRv
VGFyZ2V0IDogTlNPYmplY3QKLXsKLX0KIAogLSAodm9pZCl1bmRvRWRpdGluZzooaWQpYXJnOwog
LSAodm9pZClyZWRvRWRpdGluZzooaWQpYXJnOwpAQCAtMTg2LDExICsxODQsNiBAQCBAZW5kCiBX
ZWJFZGl0b3JDbGllbnQ6OldlYkVkaXRvckNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQogICAgIDog
bV93ZWJWaWV3KHdlYlZpZXcpCiAgICAgLCBtX3VuZG9UYXJnZXQoYWRvcHROUyhbW1dlYkVkaXRv
clVuZG9UYXJnZXQgYWxsb2NdIGluaXRdKSkKLSAgICAsIG1faGF2ZVVuZG9SZWRvT3BlcmF0aW9u
cyhmYWxzZSkKLSNpZiBQTEFURk9STShJT1MpCi0gICAgLCBtX2RlbGF5aW5nQ29udGVudENoYW5n
ZU5vdGlmaWNhdGlvbnMoMCkKLSAgICAsIG1faGFzRGVsYXllZENvbnRlbnRDaGFuZ2VOb3RpZmlj
YXRpb24oMCkKLSNlbmRpZgogICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0aGlzKQogewogfQpAQCAt
MjA1LDYgKzE5OCw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc0NvbnRpbnVvdXNTcGVsbENo
ZWNraW5nRW5hYmxlZCgpCiB9CiAKICNpZiAhUExBVEZPUk0oSU9TKQorCiB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKQogewogICAgIFttX3dlYlZp
ZXcgdG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmc6bmlsXTsKQEAgLTIyNCw2ICsyMTgsNyBA
QCBpbnQgV2ViRWRpdG9yQ2xpZW50OjpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpCiB7CiAgICAg
cmV0dXJuIFttX3dlYlZpZXcgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWddOwogfQorCiAjZW5kaWYK
IAogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZERlbGV0ZVJhbmdlKFJhbmdlKiByYW5nZSkK
QEAgLTMxMiw2ICszMDcsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlkQmVnaW5FZGl0aW5n
KCkKIH0KIAogI2lmIFBMQVRGT1JNKElPUykKKwogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnN0YXJ0
RGVsYXlpbmdBbmRDb2FsZXNjaW5nQ29udGVudENoYW5nZU5vdGlmaWNhdGlvbnMoKQogewogICAg
IG1fZGVsYXlpbmdDb250ZW50Q2hhbmdlTm90aWZpY2F0aW9ucyA9IHRydWU7CkBAIC0zMjYsNiAr
MzIyLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnN0b3BEZWxheWluZ0FuZENvYWxlc2NpbmdD
b250ZW50Q2hhbmdlTm90aWZpY2F0aW9ucygpCiAgICAgCiAgICAgbV9oYXNEZWxheWVkQ29udGVu
dENoYW5nZU5vdGlmaWNhdGlvbiA9IGZhbHNlOwogfQorCiAjZW5kaWYKIAogdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpCkBAIC00MTgsNDIgKzQxNSw0MCBA
QCBOU1VSTCAqV2ViRWRpdG9yQ2xpZW50OjpjYW5vbmljYWxpemVVUkxTdHJpbmcoTlNTdHJpbmcg
KlVSTFN0cmluZykKICAgICByZXR1cm4gVVJMOwogfQogCi1zdGF0aWMgTlNBcnJheSAqY3JlYXRl
RXhjbHVkZWRFbGVtZW50c0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCkKK3N0YXRpYyBO
U0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbigpCiB7
Ci0gICAgTlNBcnJheSAqZWxlbWVudHMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0
czogCisgICAgTlNBcnJheSAqZXhjbHVkZWRFbGVtZW50cyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhPYmplY3RzOgogICAgICAgICAvLyBPbWl0IHN0eWxlIHNpbmNlIHdlIHdhbnQgc3R5bGUg
dG8gYmUgaW5saW5lIHNvIHRoZSBmcmFnbWVudCBjYW4gYmUgZWFzaWx5IGluc2VydGVkLgotICAg
ICAgICBAInN0eWxlIiwgCisgICAgICAgIEAic3R5bGUiLAogICAgICAgICAvLyBPbWl0IHhtbCBz
byB0aGUgcmVzdWx0IGlzIG5vdCBYSFRNTC4KLSAgICAgICAgQCJ4bWwiLCAKKyAgICAgICAgQCJ4
bWwiLAogICAgICAgICAvLyBPbWl0IHRhZ3MgdGhhdCB3aWxsIGdldCBzdHJpcHBlZCB3aGVuIGNv
bnZlcnRlZCB0byBhIGZyYWdtZW50IGFueXdheS4KICAgICAgICAgQCJkb2N0eXBlIiwgQCJodG1s
IiwgQCJoZWFkIiwgQCJib2R5IiwgCiAgICAgICAgIC8vIE9taXQgZGVwcmVjYXRlZCB0YWdzLgog
ICAgICAgICBAImFwcGxldCIsIEAiYmFzZWZvbnQiLCBAImNlbnRlciIsIEAiZGlyIiwgQCJmb250
IiwgQCJpc2luZGV4IiwgQCJtZW51IiwgQCJzIiwgQCJzdHJpa2UiLCBAInUiLCAKICAgICAgICAg
Ly8gT21pdCBvYmplY3Qgc28gbm8gZmlsZSBhdHRhY2htZW50cyBhcmUgcGFydCBvZiB0aGUgZnJh
Z21lbnQuCiAgICAgICAgIEAib2JqZWN0IiwgbmlsXTsKLSAgICBDRlJldGFpbihlbGVtZW50cyk7
Ci0gICAgcmV0dXJuIGVsZW1lbnRzOwotfQogCiAjaWYgUExBVEZPUk0oSU9TKQotc3RhdGljIE5T
U3RyaW5nICpOU0V4Y2x1ZGVkRWxlbWVudHNEb2N1bWVudEF0dHJpYnV0ZSA9IEAiRXhjbHVkZWRF
bGVtZW50cyI7CisgICAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgTlNFeGNsdWRlZEVsZW1lbnRz
RG9jdW1lbnRBdHRyaWJ1dGUgPSBAIkV4Y2x1ZGVkRWxlbWVudHMiOwogI2VuZGlmCiAKLURvY3Vt
ZW50RnJhZ21lbnQqIFdlYkVkaXRvckNsaWVudDo6ZG9jdW1lbnRGcmFnbWVudEZyb21BdHRyaWJ1
dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8UmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4+JiByZXNvdXJjZXMpCi17Ci0gICAgc3RhdGljIE5TQXJyYXkgKmV4Y2x1ZGVk
RWxlbWVudHMgPSBjcmVhdGVFeGNsdWRlZEVsZW1lbnRzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZl
cnNpb24oKTsKLSAgICAKICAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbTlNEaWN0aW9u
YXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmV4Y2x1ZGVkRWxlbWVudHMgZm9yS2V5Ok5TRXhjbHVk
ZWRFbGVtZW50c0RvY3VtZW50QXR0cmlidXRlXTsKIAotICAgIE5TQXJyYXkgKnN1YlJlc291cmNl
czsKLSAgICBET01Eb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCA9IFtzdHJpbmcgX2RvY3VtZW50
RnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50OltbbV93ZWJW
aWV3IG1haW5GcmFtZV0gRE9NRG9jdW1lbnRdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50QXR0cmlidXRlczpkaWN0aW9uYXJ5Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnJlc291cmNlczomc3Vi
UmVzb3VyY2VzXTsKLSAgICBmb3IgKFdlYlJlc291cmNlKiByZXNvdXJjZSBpbiBzdWJSZXNvdXJj
ZXMpCi0gICAgICAgIHJlc291cmNlcy5hcHBlbmQoW3Jlc291cmNlIF9jb3JlUmVzb3VyY2VdKTsK
KyAgICBbZXhjbHVkZWRFbGVtZW50cyByZWxlYXNlXTsKIAotICAgIHJldHVybiBjb3JlKGZyYWdt
ZW50KTsKKyAgICByZXR1cm4gZGljdGlvbmFyeTsKK30KKwordm9pZCBfV2ViQ3JlYXRlRnJhZ21l
bnQoRG9jdW1lbnQmIGRvY3VtZW50LCBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgRnJhZ21l
bnRBbmRSZXNvdXJjZXMmIHJlc3VsdCkKK3sKKyAgICBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpkb2N1
bWVudEF0dHJpYnV0ZXMgPSBbYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9u
KCkgcmV0YWluXTsKKyAgICBOU0FycmF5ICpzdWJyZXNvdXJjZXM7CisgICAgRE9NRG9jdW1lbnRG
cmFnbWVudCogZnJhZ21lbnQgPSBbc3RyaW5nIF9kb2N1bWVudEZyb21SYW5nZTpOU01ha2VSYW5n
ZSgwLCBbc3RyaW5nIGxlbmd0aF0pCisgICAgICAgIGRvY3VtZW50OmtpdCgmZG9jdW1lbnQpIGRv
Y3VtZW50QXR0cmlidXRlczpkb2N1bWVudEF0dHJpYnV0ZXMgc3VicmVzb3VyY2VzOiZzdWJyZXNv
dXJjZXNdOworICAgIHJlc3VsdC5mcmFnbWVudCA9IGNvcmUoZnJhZ21lbnQpOworICAgIGZvciAo
V2ViUmVzb3VyY2UqIHJlc291cmNlIGluIHN1YnJlc291cmNlcykKKyAgICAgICAgcmVzdWx0LnJl
c291cmNlcy5hcHBlbmQoW3Jlc291cmNlIF9jb3JlUmVzb3VyY2VdKTsKIH0KIAogdm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OnNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKQEAgLTQ2NSw2ICs0NjAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5z
ZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogfQogCiAjaWYg
VVNFKEFQUEtJVCkKKwogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwcGVyY2FzZVdvcmQoKQogewog
ICAgIFttX3dlYlZpZXcgdXBwZXJjYXNlV29yZDpuaWxdOwpAQCAtNDc5LDkgKzQ3NSwxMSBAQCB2
b2lkIFdlYkVkaXRvckNsaWVudDo6Y2FwaXRhbGl6ZVdvcmQoKQogewogICAgIFttX3dlYlZpZXcg
Y2FwaXRhbGl6ZVdvcmQ6bmlsXTsKIH0KKwogI2VuZGlmCiAKICNpZiBVU0UoQVVUT01BVElDX1RF
WFRfUkVQTEFDRU1FTlQpCisKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzaG93U3Vic3RpdHV0aW9u
c1BhbmVsKGJvb2wgc2hvdykKIHsKICAgICBOU1BhbmVsICpzcGVsbGluZ1BhbmVsID0gW1tOU1Nw
ZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHN1YnN0aXR1dGlvbnNQYW5lbF07CkBAIC01
NTAsNiArNTQ4LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZUF1dG9tYXRpY1NwZWxs
aW5nQ29ycmVjdGlvbigpCiB7CiAgICAgW21fd2ViVmlldyB0b2dnbGVBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3Rpb246bmlsXTsKIH0KKwogI2VuZGlmIC8vIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBM
QUNFTUVOVCkKIAogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydE5vZGUoTm9kZSAq
bm9kZSwgUmFuZ2UqIHJlcGxhY2luZ1JhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24gZ2l2ZW5BY3Rp
b24pCkBAIC02MTIsMTMgKzYxMSwxNSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJV
bmRvT3JSZWRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwLCBib29sIGlzUgogICAgIEFT
U0VSVChzdGVwKTsKICAgICAKICAgICBOU1VuZG9NYW5hZ2VyICp1bmRvTWFuYWdlciA9IFttX3dl
YlZpZXcgdW5kb01hbmFnZXJdOworCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIC8vIFdoaWxlIHdl
IGFyZSB1bmRvaW5nLCB3ZSBzaG91bGRuJ3QgYmUgYXNrZWQgdG8gcmVnaXN0ZXIgYW5vdGhlciBV
bmRvIG9wZXJhdGlvbiwgd2Ugc2hvdWxkbid0IGV2ZW4gYmUgdG91Y2hpbmcgdGhlIERPTS4gIEJ1
dAotICAgIC8vIGp1c3QgaW4gY2FzZSB0aGlzIGhhcHBlbnMsIHJldHVybiB0byBhdm9pZCBwdXR0
aW5nIHRoZSB1bmRvIG1hbmFnZXIgaW50byBhbiBpbmNvbnNpc3RlbnQgc3RhdGUuICBTYW1lIGZv
ciBiZWluZwotICAgIC8vIGFza2VkIHRvIHJlZ2lzdGVyIGEgUmVkbyBvcGVyYXRpb24gaW4gdGhl
IG1pZHN0IG9mIGFub3RoZXIgUmVkby4KKyAgICAvLyBXaGlsZSB3ZSBhcmUgdW5kb2luZywgd2Ug
c2hvdWxkbid0IGJlIGFza2VkIHRvIHJlZ2lzdGVyIGFub3RoZXIgVW5kbyBvcGVyYXRpb24sIHdl
IHNob3VsZG4ndCBldmVuIGJlIHRvdWNoaW5nIHRoZSBET00uCisgICAgLy8gQnV0IGp1c3QgaW4g
Y2FzZSB0aGlzIGhhcHBlbnMsIHJldHVybiB0byBhdm9pZCBwdXR0aW5nIHRoZSB1bmRvIG1hbmFn
ZXIgaW50byBhbiBpbmNvbnNpc3RlbnQgc3RhdGUuCisgICAgLy8gU2FtZSBmb3IgYmVpbmcgYXNr
ZWQgdG8gcmVnaXN0ZXIgYSBSZWRvIG9wZXJhdGlvbiBpbiB0aGUgbWlkc3Qgb2YgYW5vdGhlciBS
ZWRvLgogICAgIGlmICgoW3VuZG9NYW5hZ2VyIGlzVW5kb2luZ10gJiYgIWlzUmVkbykgfHwgKFt1
bmRvTWFuYWdlciBpc1JlZG9pbmddICYmIGlzUmVkbykpCiAgICAgICAgIHJldHVybjsKICNlbmRp
ZgorCiAgICAgTlNTdHJpbmcgKmFjdGlvbk5hbWUgPSB1bmRvTmFtZUZvckVkaXRBY3Rpb24oc3Rl
cC0+ZWRpdGluZ0FjdGlvbigpKTsKICAgICBXZWJVbmRvU3RlcCAqd2ViRW50cnkgPSBbV2ViVW5k
b1N0ZXAgc3RlcFdpdGhVbmRvU3RlcDpzdGVwXTsKICAgICBbdW5kb01hbmFnZXIgcmVnaXN0ZXJV
bmRvV2l0aFRhcmdldDptX3VuZG9UYXJnZXQuZ2V0KCkgc2VsZWN0b3I6KGlzUmVkbyA/IEBzZWxl
Y3RvcihyZWRvRWRpdGluZzopIDogQHNlbGVjdG9yKHVuZG9FZGl0aW5nOikpIG9iamVjdDp3ZWJF
bnRyeV07CkBAIC04MTcsNyArODE4LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndyaXRlRGF0
YVRvUGFzdGVib2FyZChOU0RpY3Rpb25hcnkqIHJlcHJlc2VudGF0aW9uKQogICAgICAgICBbW21f
d2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gd3JpdGVEYXRhVG9QYXN0ZWJvYXJkOnJl
cHJlc2VudGF0aW9uXTsKIH0KIAotTlNBcnJheSogV2ViRWRpdG9yQ2xpZW50OjpzdXBwb3J0ZWRQ
YXN0ZWJvYXJkVHlwZXNGb3JDdXJyZW50U2VsZWN0aW9uKCkgCitOU0FycmF5ICpXZWJFZGl0b3JD
bGllbnQ6OnN1cHBvcnRlZFBhc3RlYm9hcmRUeXBlc0ZvckN1cnJlbnRTZWxlY3Rpb24oKQogewog
ICAgIGlmIChbW21fd2ViVmlldyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzdXBwb3J0ZWRQYXN0ZWJvYXJkVHlwZXNGb3JDdXJyZW50U2VsZWN0
aW9uKV0pIAogICAgICAgICByZXR1cm4gW1ttX3dlYlZpZXcgX1VJS2l0RGVsZWdhdGVGb3J3YXJk
ZXJdIHN1cHBvcnRlZFBhc3RlYm9hcmRUeXBlc0ZvckN1cnJlbnRTZWxlY3Rpb25dOyAKQEAgLTgy
NSw3ICs4MjYsNyBAQCBOU0FycmF5KiBXZWJFZGl0b3JDbGllbnQ6OnN1cHBvcnRlZFBhc3RlYm9h
cmRUeXBlc0ZvckN1cnJlbnRTZWxlY3Rpb24oKQogICAgIHJldHVybiBuaWw7IAogfQogCi1OU0Fy
cmF5KiBXZWJFZGl0b3JDbGllbnQ6OnJlYWREYXRhRnJvbVBhc3RlYm9hcmQoTlNTdHJpbmcqIHR5
cGUsIGludCBpbmRleCkKK05TQXJyYXkgKldlYkVkaXRvckNsaWVudDo6cmVhZERhdGFGcm9tUGFz
dGVib2FyZChOU1N0cmluZyogdHlwZSwgaW50IGluZGV4KQogewogICAgIGlmIChbW21fd2ViVmll
dyBfVUlLaXREZWxlZ2F0ZUZvcndhcmRlcl0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihy
ZWFkRGF0YUZyb21QYXN0ZWJvYXJkOndpdGhJbmRleDopXSkKICAgICAgICAgcmV0dXJuIFtbbV93
ZWJWaWV3IF9VSUtpdERlbGVnYXRlRm9yd2FyZGVyXSByZWFkRGF0YUZyb21QYXN0ZWJvYXJkOnR5
cGUgd2l0aEluZGV4OmluZGV4XTsKQEAgLTg1Nyw3ICs4NTgsNyBAQCBXZWJDb3JlOjpEb2N1bWVu
dEZyYWdtZW50KiBXZWJFZGl0b3JDbGllbnQ6OmRvY3VtZW50RnJhZ21lbnRGcm9tRGVsZWdhdGUo
aW50IGluZAogICAgICAgICAgICAgcmV0dXJuIGNvcmUoZnJhZ21lbnRGcm9tRGVsZWdhdGUpOwog
ICAgIH0KICAgICAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogYm9v
bCBXZWJFZGl0b3JDbGllbnQ6OnBlcmZvcm1zVHdvU3RlcFBhc3RlKFdlYkNvcmU6OkRvY3VtZW50
RnJhZ21lbnQqIGZyYWdtZW50KQpAQCAtMTEzMiw2ICsxMTMzLDcgQEAgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKKwogdm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OnJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHNlbGVjdGlvbikKIHsKICAgICBpZiAoIVttX3dlYlZpZXcgc2hvdWxkUmVxdWVz
dENhbmRpZGF0ZXNdKQpAQCAtMTIxOSw5ICsxMjIxLDExIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3Vs
dCBhCiAKICAgICBmcmFtZS0+ZWRpdG9yKCkuaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoYWNjZXB0
ZWRDYW5kaWRhdGUpOwogfQorCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAogCiAjaWYgIVBMQVRGT1JNKElPUykKKwog
QGludGVyZmFjZSBXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIDogTlNPYmplY3QKIHsKICAg
ICBXZWJFZGl0b3JDbGllbnQqIF9jbGllbnQ7CkBAIC0xMjU3LDYgKzEyNjEsNyBAQCB2b2lkIFdl
YkVkaXRvckNsaWVudDo6ZGlkQ2hlY2tTdWNjZWVkKGludCBzZXF1ZW5jZSwgTlNBcnJheSogcmVz
dWx0cykKICAgICBtX3RleHRDaGVja2luZ1JlcXVlc3QtPmRpZFN1Y2NlZWQoY29yZShyZXN1bHRz
LCBtX3RleHRDaGVja2luZ1JlcXVlc3QtPmRhdGEoKS5tYXNrKCkpKTsKICAgICBtX3RleHRDaGVj
a2luZ1JlcXVlc3QgPSBudWxscHRyOwogfQorCiAjZW5kaWYKIAogdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dENoZWNr
aW5nUmVxdWVzdD4gcmVxdWVzdCwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgY3VycmVudFNlbGVj
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5leHAgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJLaXQuZXhwCmluZGV4IDM2ZjhhOTFmZGU2ZmM4ZmFkOGQ3NTNlNjg3MDMw
M2QwOWMxNTI4ZmIuLjE0NjU5NjIzNDBjM2VlZjUxYzkxNTZhN2Q4OGQ1MTk0ZjNiN2NhZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5leHAKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViS2l0LmV4cApAQCAtMTAyLDYgKzEwMiw3IEBAIF9XZWJWaWV3RGlkRW5kRWRpdGlu
Z05vdGlmaWNhdGlvbgogX1dlYlZpZXdQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlv
bgogX1dlYlZpZXdQcm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24KIF9XZWJWaWV3V2lsbENsb3Nl
Tm90aWZpY2F0aW9uCitfX1dlYkNyZWF0ZUZyYWdtZW50CiBfX1dlYkhUTUxWaWV3UHJpbnRpbmdN
YXhpbXVtU2hyaW5rRmFjdG9yCiBfX1dlYkhUTUxWaWV3UHJpbnRpbmdNaW5pbXVtU2hyaW5rRmFj
dG9yCiBfX1dlYlZpZXdEaWRTdGFydEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdOb3RpZmljYXRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDhiZGQ3NDBjYjlh
YzlhZThjYzkxYTBkOGU4ZTllMTlhNmUyNDNkZGMuLjdiZDQ5N2YwYzUxMDU3Y2ZiZDVlNjg1NDhh
ODBlYTUzYWIwODc5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQpAQCAtMjU1NywxMCArMjU1Nyw3IEBAIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1l
bnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvCiAgICAgICAg
IHJldHVybiBbW3NlbGYgX2ZyYW1lXSBfZG9jdW1lbnRGcmFnbWVudFdpdGhNYXJrdXBTdHJpbmc6
SFRNTFN0cmluZyBiYXNlVVJMU3RyaW5nOm5pbF07CiAgICAgfQogCi0gICAgLy8gVGhlIF9oYXNI
VE1MRG9jdW1lbnQgY2xhdXNlIGhlcmUgaXMgYSB3b3JrYXJvdW5kIGZvciBhIGJ1ZyBpbiBOU0F0
dHJpYnV0ZWRTdHJpbmc6IFJhZGFyIDUwNTIzNjkuCi0gICAgLy8gSWYgd2UgY2FsbCBfZG9jdW1l
bnRGcm9tUmFuZ2Ugb24gYW4gWE1MIGRvY3VtZW50IHdlJ2xsIGdldCAic2V0SW5uZXJIVE1MOiBt
ZXRob2Qgbm90IGZvdW5kIi4KLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBidWcgNTA1
MjM2OSBpcyBmaXhlZC4KLSAgICBpZiAoW3NlbGYgX2hhc0hUTUxEb2N1bWVudF0gJiYgKHBib2Fy
ZFR5cGUgPT0gTlNSVEZQYm9hcmRUeXBlIHx8IHBib2FyZFR5cGUgPT0gTlNSVEZEUGJvYXJkVHlw
ZSkpIHsKKyAgICBpZiAocGJvYXJkVHlwZSA9PSBOU1JURlBib2FyZFR5cGUgfHwgcGJvYXJkVHlw
ZSA9PSBOU1JURkRQYm9hcmRUeXBlKSB7CiAgICAgICAgIE5TQXR0cmlidXRlZFN0cmluZyAqc3Ry
aW5nID0gbmlsOwogICAgICAgICBpZiAocGJvYXJkVHlwZSA9PSBOU1JURkRQYm9hcmRUeXBlKQog
ICAgICAgICAgICAgc3RyaW5nID0gW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRo
UlRGRDpbcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpOU1JURkRQYm9hcmRUeXBlXSBkb2N1bWVudEF0
dHJpYnV0ZXM6TlVMTF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA2MWYwYTgxOWYzMzA3YmU5
N2VmNmQ4NDc0Zjg5OTZiYWU3ZjBlZmVmLi4xY2E3OWI2YmU4N2FlMGU1OGFhNzY4MzBlYWQzNjc0
NGU3MTRiODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkVkaXRvckNs
aWVudF9oCi0jZGVmaW5lIFdlYkVkaXRvckNsaWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tl
ckNsaWVudC5oPgpAQCAtMzMsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
V2ViUGFnZTsKIAotY2xhc3MgV2ViRWRpdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkVkaXRv
ckNsaWVudCwgcHVibGljIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50IHsKK2NsYXNzIFdlYkVk
aXRvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpFZGl0b3JDbGllbnQsIHB1YmxpYyBX
ZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgV2ViRWRpdG9yQ2xpZW50
KFdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCkBAIC00MSw4NSArNDAsODUg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBib29sIHNob3VsZERlbGV0ZVJhbmdl
KFdlYkNvcmU6OlJhbmdlKikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzbWFydEluc2VydERlbGV0ZUVu
YWJsZWQoKSBvdmVycmlkZTsKLSAgICBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5h
YmxlZCgpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCkg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSBvdmVycmlkZTsK
LSAgICB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygpIG92ZXJyaWRlOwotICAgIGludCBzcGVs
bENoZWNrZXJEb2N1bWVudFRhZygpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkRGVsZXRlUmFu
Z2UoV2ViQ29yZTo6UmFuZ2UqKSBmaW5hbDsKKyAgICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZCgpIGZpbmFsOworICAgIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVk
KCkgZmluYWw7CisgICAgYm9vbCBpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGZp
bmFsOworICAgIHZvaWQgdG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKSBmaW5hbDsKKyAg
ICBib29sIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpIGZpbmFsOworICAgIHZvaWQgdG9nZ2xl
R3JhbW1hckNoZWNraW5nKCkgZmluYWw7CisgICAgaW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFn
KCkgZmluYWw7CiAgICAgCi0gICAgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoV2ViQ29yZTo6UmFu
Z2UqKSBvdmVycmlkZTsKLSAgICBib29sIHNob3VsZEVuZEVkaXRpbmcoV2ViQ29yZTo6UmFuZ2Uq
KSBvdmVycmlkZTsKLSAgICBib29sIHNob3VsZEluc2VydE5vZGUoV2ViQ29yZTo6Tm9kZSosIFdl
YkNvcmU6OlJhbmdlKiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBvdmVycmlkZTsKLSAg
ICBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6UmFuZ2UqLCBX
ZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIG92ZXJyaWRlOwotICAgIGJvb2wgc2hvdWxkQ2hh
bmdlU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpSYW5nZSogZnJvbVJhbmdlLCBXZWJDb3JlOjpSYW5n
ZSogdG9SYW5nZSwgV2ViQ29yZTo6RUFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBvdmVy
cmlkZTsKKyAgICBib29sIHNob3VsZEJlZ2luRWRpdGluZyhXZWJDb3JlOjpSYW5nZSopIGZpbmFs
OworICAgIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhXZWJDb3JlOjpSYW5nZSopIGZpbmFsOworICAg
IGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJDb3JlOjpOb2RlKiwgV2ViQ29yZTo6UmFuZ2UqLCBX
ZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIGZpbmFsOworICAgIGJvb2wgc2hvdWxkSW5zZXJ0
VGV4dChjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6OkVkaXRvckluc2Vy
dEFjdGlvbikgZmluYWw7CisgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYkNv
cmU6OlJhbmdlKiBmcm9tUmFuZ2UsIFdlYkNvcmU6OlJhbmdlKiB0b1JhbmdlLCBXZWJDb3JlOjpF
QWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpIGZpbmFsOwogICAgIAotICAgIGJvb2wgc2hv
dWxkQXBwbHlTdHlsZShXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXMqLCBXZWJDb3JlOjpSYW5nZSop
IG92ZXJyaWRlOwotICAgIHZvaWQgZGlkQXBwbHlTdHlsZSgpIG92ZXJyaWRlOwotICAgIGJvb2wg
c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpSYW5n
ZSopIG92ZXJyaWRlOwotCi0gICAgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVz
cG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkQ2hhbmdlU2VsZWN0aW9uQW5kVXBkYXRlTGF5b3V0KCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaXNjYXJkZWRDb21wb3NpdGlvbihXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkRW5kRWRpdGluZygpIG92ZXJyaWRlOwotICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlJhbmdlKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFz
dGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZEFwcGx5U3R5bGUoV2ViQ29yZTo6
U3R5bGVQcm9wZXJ0aWVzKiwgV2ViQ29yZTo6UmFuZ2UqKSBmaW5hbDsKKyAgICB2b2lkIGRpZEFw
cGx5U3R5bGUoKSBmaW5hbDsKKyAgICBib29sIHNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKFdl
YkNvcmU6OlJhbmdlKiwgV2ViQ29yZTo6UmFuZ2UqKSBmaW5hbDsKKworICAgIHZvaWQgZGlkQmVn
aW5FZGl0aW5nKCkgZmluYWw7CisgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBm
aW5hbDsKKyAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oV2ViQ29yZTo6RnJhbWUq
KSBmaW5hbDsKKyAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbkFuZFVwZGF0ZUxheW91dCgpIGZp
bmFsOworICAgIHZvaWQgZGlzY2FyZGVkQ29tcG9zaXRpb24oV2ViQ29yZTo6RnJhbWUqKSBmaW5h
bDsKKyAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZChXZWJDb3JlOjpSYW5nZSopIGZpbmFsOworICAgIHZvaWQgZGlk
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCi0gICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyUmVk
b1N0ZXAoUGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4pIG92ZXJyaWRlOwotICAgIHZvaWQg
Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKSBvdmVycmlkZTsKLQotICAgIGJvb2wgY2FuQ29weUN1
dChXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBib29sIGNhblBhc3RlKFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0
IG92ZXJyaWRlOwotICAgIGJvb2wgY2FuVW5kbygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wg
Y2FuUmVkbygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChQYXNz
UmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlclJlZG9T
dGVwKFBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KSBmaW5hbDsKKyAgICB2b2lkIGNsZWFy
VW5kb1JlZG9PcGVyYXRpb25zKCkgZmluYWw7CisKKyAgICBib29sIGNhbkNvcHlDdXQoV2ViQ29y
ZTo6RnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QgZmluYWw7CisgICAgYm9vbCBjYW5Q
YXN0ZShXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdCBmaW5hbDsKKyAg
ICBib29sIGNhblVuZG8oKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGNhblJlZG8oKSBjb25zdCBm
aW5hbDsKICAgICAKLSAgICB2b2lkIHVuZG8oKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZG8oKSBv
dmVycmlkZTsKKyAgICB2b2lkIHVuZG8oKSBmaW5hbDsKKyAgICB2b2lkIHJlZG8oKSBmaW5hbDsK
IAotICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRFdmVudChXZWJDb3JlOjpLZXlib2FyZEV2ZW50Kikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oV2ViQ29yZTo6S2V5
Ym9hcmRFdmVudCopIG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRFdmVudChXZWJD
b3JlOjpLZXlib2FyZEV2ZW50KikgZmluYWw7CisgICAgdm9pZCBoYW5kbGVJbnB1dE1ldGhvZEtl
eWRvd24oV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCopIGZpbmFsOwogICAgIAotICAgIHZvaWQgdGV4
dEZpZWxkRGlkQmVnaW5FZGl0aW5nKFdlYkNvcmU6OkVsZW1lbnQqKSBvdmVycmlkZTsKLSAgICB2
b2lkIHRleHRGaWVsZERpZEVuZEVkaXRpbmcoV2ViQ29yZTo6RWxlbWVudCopIG92ZXJyaWRlOwot
ICAgIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEZpZWxkKFdlYkNvcmU6OkVsZW1lbnQqKSBvdmVy
cmlkZTsKLSAgICBib29sIGRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChXZWJDb3JlOjpFbGVt
ZW50KiwgV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCopIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4dFdp
bGxCZURlbGV0ZWRJblRleHRGaWVsZChXZWJDb3JlOjpFbGVtZW50Kikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShXZWJDb3JlOjpFbGVtZW50Kikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBvdmVyZmxvd1Njcm9sbFBvc2l0aW9uQ2hhbmdlZCgpIG92ZXJyaWRlOworICAg
IHZvaWQgdGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKFdlYkNvcmU6OkVsZW1lbnQqKSBmaW5hbDsK
KyAgICB2b2lkIHRleHRGaWVsZERpZEVuZEVkaXRpbmcoV2ViQ29yZTo6RWxlbWVudCopIGZpbmFs
OworICAgIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEZpZWxkKFdlYkNvcmU6OkVsZW1lbnQqKSBm
aW5hbDsKKyAgICBib29sIGRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChXZWJDb3JlOjpFbGVt
ZW50KiwgV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCopIGZpbmFsOworICAgIHZvaWQgdGV4dFdpbGxC
ZURlbGV0ZWRJblRleHRGaWVsZChXZWJDb3JlOjpFbGVtZW50KikgZmluYWw7CisgICAgdm9pZCB0
ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShXZWJDb3JlOjpFbGVtZW50KikgZmluYWw7CisgICAgdm9p
ZCBvdmVyZmxvd1Njcm9sbFBvc2l0aW9uQ2hhbmdlZCgpIGZpbmFsOwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICopIG92ZXJyaWRl
OwotICAgIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQqIGRvY3VtZW50RnJhZ21lbnRGcm9tQXR0
cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKiwgVmVjdG9yPCBSZWZQdHI8V2ViQ29y
ZTo6QXJjaGl2ZVJlc291cmNlPj4mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEluc2VydGlvblBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgTlNV
UkwqIGNhbm9uaWNhbGl6ZVVSTChOU1VSTCopIG92ZXJyaWRlOwotICAgIE5TVVJMKiBjYW5vbmlj
YWxpemVVUkxTdHJpbmcoTlNTdHJpbmcqKSBvdmVycmlkZTsKKyAgICBOU1N0cmluZyAqdXNlclZp
c2libGVTdHJpbmcoTlNVUkwgKikgZmluYWw7CisgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIGZpbmFsOworICAgIE5TVVJMICpjYW5v
bmljYWxpemVVUkwoTlNVUkwgKikgZmluYWw7CisgICAgTlNVUkwgKmNhbm9uaWNhbGl6ZVVSTFN0
cmluZyhOU1N0cmluZyAqKSBmaW5hbDsKICNlbmRpZgogCiAjaWYgVVNFKEFQUEtJVCkKLSAgICB2
b2lkIHVwcGVyY2FzZVdvcmQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGxvd2VyY2FzZVdvcmQoKSBv
dmVycmlkZTsKLSAgICB2b2lkIGNhcGl0YWxpemVXb3JkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1
cHBlcmNhc2VXb3JkKCkgZmluYWw7CisgICAgdm9pZCBsb3dlcmNhc2VXb3JkKCkgZmluYWw7Cisg
ICAgdm9pZCBjYXBpdGFsaXplV29yZCgpIGZpbmFsOwogI2VuZGlmCisKICNpZiBVU0UoQVVUT01B
VElDX1RFWFRfUkVQTEFDRU1FTlQpCi0gICAgdm9pZCBzaG93U3Vic3RpdHV0aW9uc1BhbmVsKGJv
b2wgc2hvdykgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmco
KSBvdmVycmlkZTsKLSAgICB2b2lkIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCkgb3ZlcnJpZGU7
Ci0gICAgYm9vbCBpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpIG92ZXJyaWRl
OwotICAgIHZvaWQgdG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24oKSBvdmVycmlkZTsK
LSAgICBib29sIGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb24oKSBvdmVycmlkZTsKLSAgICBib29s
IGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSBvdmVycmlkZTsKLSAgICB2b2lk
IHRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKSBvdmVycmlkZTsKLSAgICBib29sIGlz
QXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgdG9n
Z2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0F1dG9t
YXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHRvZ2ds
ZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQgc2hvd1N1
YnN0aXR1dGlvbnNQYW5lbChib29sIHNob3cpIGZpbmFsOworICAgIGJvb2wgc3Vic3RpdHV0aW9u
c1BhbmVsSXNTaG93aW5nKCkgZmluYWw7CisgICAgdm9pZCB0b2dnbGVTbWFydEluc2VydERlbGV0
ZSgpIGZpbmFsOworICAgIGJvb2wgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQo
KSBmaW5hbDsKKyAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uKCkgZmlu
YWw7CisgICAgYm9vbCBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkgZmluYWw7Cisg
ICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uKCkgZmluYWw7CisgICAgYm9vbCBp
c0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkgZmluYWw7CisgICAgdm9pZCB0b2dn
bGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uKCkgZmluYWw7CisgICAgYm9vbCBpc0F1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSBmaW5hbDsKKyAgICB2b2lkIHRvZ2dsZUF1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudCgpIGZpbmFsOworICAgIGJvb2wgaXNBdXRvbWF0aWNTcGVsbGluZ0Nv
cnJlY3Rpb25FbmFibGVkKCkgZmluYWw7CisgICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3Rpb24oKSBmaW5hbDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtMTI4
LDQ3ICsxMjcsNDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUdsb2JhbFNlbGVjdGlvbihX
ZWJDb3JlOjpGcmFtZSopOwogI2VuZGlmCiAKLSAgICBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENo
ZWNrZXIoKSAgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfQorICAgIFRleHRDaGVja2VyQ2xpZW50
KiB0ZXh0Q2hlY2tlcigpIGZpbmFsIHsgcmV0dXJuIHRoaXM7IH0KKworICAgIGJvb2wgc2hvdWxk
RXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24oV2ViQ29yZTo6VGV4dENoZWNraW5nVHlw
ZSkgY29uc3QgZmluYWw7CisgICAgdm9pZCBpZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0
IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgbGVhcm5Xb3JkKGNvbnN0IFN0cmluZyYpIGZpbmFs
OworICAgIHZvaWQgY2hlY2tTcGVsbGluZ09mU3RyaW5nKFN0cmluZ1ZpZXcsIGludCogbWlzc3Bl
bGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCkgZmluYWw7CisgICAgU3RyaW5n
IGdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYg
bWlzc3BlbGxlZFdvcmQpIGZpbmFsOworICAgIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3Ry
aW5nVmlldywgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFy
TG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkgZmluYWw7CiAKLSAgICBib29sIHNob3Vs
ZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRDaGVja2luZ1R5
cGUpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgaWdub3JlV29yZEluU3BlbGxEb2N1bWVudChj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGxlYXJuV29yZChjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3LCBp
bnQqIG1pc3NwZWxsaW5nTG9jYXRpb24sIGludCogbWlzc3BlbGxpbmdMZW5ndGgpIG92ZXJyaWRl
OwotICAgIFN0cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChj
b25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKSBvdmVycmlkZTsKLSAgICB2b2lkIGNoZWNrR3Jh
bW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcsIFZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYs
IGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpIG92ZXJyaWRl
OwogI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCi0gICAgVmVjdG9yPFdlYkNvcmU6OlRl
eHRDaGVja2luZ1Jlc3VsdD4gY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nVmlldywgV2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgY29uc3QgV2ViQ29yZTo6Vmlz
aWJsZVNlbGVjdGlvbiYgY3VycmVudFNlbGVjdGlvbikgb3ZlcnJpZGU7CisgICAgVmVjdG9yPFdl
YkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4gY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nVmll
dywgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgY29uc3QgV2Vi
Q29yZTo6VmlzaWJsZVNlbGVjdGlvbiYgY3VycmVudFNlbGVjdGlvbikgZmluYWw7CiAjZW5kaWYK
LSAgICB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcm
LCBjb25zdCBXZWJDb3JlOjpHcmFtbWFyRGV0YWlsJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRh
dGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2hvd1NwZWxsaW5nVUkoYm9vbCBzaG93KSBvdmVycmlkZTsKLSAgICBib29sIHNw
ZWxsaW5nVUlJc1Nob3dpbmcoKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEd1ZXNzZXNGb3JXb3Jk
KGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBjb25zdCBXZWJDb3Jl
OjpWaXNpYmxlU2VsZWN0aW9uJiBjdXJyZW50U2VsZWN0aW9uLCBWZWN0b3I8U3RyaW5nPiYgZ3Vl
c3Nlcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpIG92ZXJy
aWRlOwotICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpIG92ZXJyaWRl
OwotICAgIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OlRleHRDaGVja2luZ1JlcXVlc3Q+LCBjb25zdCBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9u
JiBjdXJyZW50U2VsZWN0aW9uKSBvdmVycmlkZTsKKworICAgIHZvaWQgdXBkYXRlU3BlbGxpbmdV
SVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJE
ZXRhaWwmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdv
cmQoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBzaG93U3BlbGxpbmdVSShib29sIHNo
b3cpIGZpbmFsOworICAgIGJvb2wgc3BlbGxpbmdVSUlzU2hvd2luZygpIGZpbmFsOworICAgIHZv
aWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNv
bnRleHQsIGNvbnN0IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24mIGN1cnJlbnRTZWxlY3Rpb24s
IFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxTZXRJbnB1dE1l
dGhvZFN0YXRlKCkgZmluYWw7CisgICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5h
YmxlZCkgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdD4sIGNvbnN0IFdlYkNvcmU6OlZpc2li
bGVTZWxlY3Rpb24mIGN1cnJlbnRTZWxlY3Rpb24pIGZpbmFsOwogCiAjaWYgUExBVEZPUk0oR1RL
KQotICAgIGJvb2wgc2hvdWxkU2hvd1VuaWNvZGVNZW51KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBz
aG91bGRTaG93VW5pY29kZU1lbnUoKSBmaW5hbDsKICNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9T
KQotICAgIHZvaWQgc3RhcnREZWxheWluZ0FuZENvYWxlc2NpbmdDb250ZW50Q2hhbmdlTm90aWZp
Y2F0aW9ucygpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RvcERlbGF5aW5nQW5kQ29hbGVzY2luZ0Nv
bnRlbnRDaGFuZ2VOb3RpZmljYXRpb25zKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3cml0ZURhdGFU
b1Bhc3RlYm9hcmQoTlNEaWN0aW9uYXJ5Kikgb3ZlcnJpZGU7Ci0gICAgTlNBcnJheSAqc3VwcG9y
dGVkUGFzdGVib2FyZFR5cGVzRm9yQ3VycmVudFNlbGVjdGlvbigpIG92ZXJyaWRlOwotICAgIE5T
QXJyYXkgKnJlYWREYXRhRnJvbVBhc3RlYm9hcmQoTlNTdHJpbmcqIHR5cGUsIGludCBpbmRleCkg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBoYXNSaWNobHlFZGl0YWJsZVNlbGVjdGlvbigpIG92ZXJyaWRl
OwotICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudCgpIG92ZXJyaWRlOwotICAgIFdlYkNv
cmU6OkRvY3VtZW50RnJhZ21lbnQqIGRvY3VtZW50RnJhZ21lbnRGcm9tRGVsZWdhdGUoaW50IGlu
ZGV4KSBvdmVycmlkZTsKLSAgICBib29sIHBlcmZvcm1zVHdvU3RlcFBhc3RlKFdlYkNvcmU6OkRv
Y3VtZW50RnJhZ21lbnQqKSBvdmVycmlkZTsKLSAgICBpbnQgcGFzdGVib2FyZENoYW5nZUNvdW50
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydERlbGF5aW5nQW5kQ29hbGVzY2luZ0NvbnRlbnRD
aGFuZ2VOb3RpZmljYXRpb25zKCkgZmluYWw7CisgICAgdm9pZCBzdG9wRGVsYXlpbmdBbmRDb2Fs
ZXNjaW5nQ29udGVudENoYW5nZU5vdGlmaWNhdGlvbnMoKSBmaW5hbDsKKyAgICB2b2lkIHdyaXRl
RGF0YVRvUGFzdGVib2FyZChOU0RpY3Rpb25hcnkqKSBmaW5hbDsKKyAgICBOU0FycmF5ICpzdXBw
b3J0ZWRQYXN0ZWJvYXJkVHlwZXNGb3JDdXJyZW50U2VsZWN0aW9uKCkgZmluYWw7CisgICAgTlNB
cnJheSAqcmVhZERhdGFGcm9tUGFzdGVib2FyZChOU1N0cmluZyogdHlwZSwgaW50IGluZGV4KSBm
aW5hbDsKKyAgICBib29sIGhhc1JpY2hseUVkaXRhYmxlU2VsZWN0aW9uKCkgZmluYWw7CisgICAg
aW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KCkgZmluYWw7CisgICAgV2ViQ29yZTo6RG9jdW1l
bnRGcmFnbWVudCogZG9jdW1lbnRGcmFnbWVudEZyb21EZWxlZ2F0ZShpbnQgaW5kZXgpIGZpbmFs
OworICAgIGJvb2wgcGVyZm9ybXNUd29TdGVwUGFzdGUoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVu
dCopIGZpbmFsOworICAgIGludCBwYXN0ZWJvYXJkQ2hhbmdlQ291bnQoKSBmaW5hbDsKICNlbmRp
ZgogCi0gICAgYm9vbCBzdXBwb3J0c0dsb2JhbFNlbGVjdGlvbigpIG92ZXJyaWRlOworICAgIGJv
b2wgc3VwcG9ydHNHbG9iYWxTZWxlY3Rpb24oKSBmaW5hbDsKIAogICAgIFdlYlBhZ2UqIG1fcGFn
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViRWRpdG9yQ2xp
ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYkVkaXRvckNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYkVkaXRvckNsaWVudElPUy5tbQppbmRleCBlZTRmOTBjMjM1
OTFhZGU2MmZiOWVkYWI4NzIzNmExYzI3NTRjNjI4Li4yZjM3OWJhNjc0OWZmYjE5ZGI4MWQ1ZWNl
MTlmOTUyY2U4YWI2YjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJFZGl0b3JDbGllbnRJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViRWRpdG9yQ2xpZW50SU9TLm1tCkBA
IC02NSwxMiArNjUsNiBAQCBOU1VSTCAqV2ViRWRpdG9yQ2xpZW50OjpjYW5vbmljYWxpemVVUkxT
dHJpbmcoTlNTdHJpbmcgKikKICAgICByZXR1cm4gbmlsOwogfQogCi1Eb2N1bWVudEZyYWdtZW50
KiBXZWJFZGl0b3JDbGllbnQ6OmRvY3VtZW50RnJhZ21lbnRGcm9tQXR0cmlidXRlZFN0cmluZyhO
U0F0dHJpYnV0ZWRTdHJpbmcgKiwgVmVjdG9yPFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4mKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIHZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCiB7
CiAgICAgLy8gVGhpcyBpcyB1c2VkIG9ubHkgYnkgTWFpbCwgbm8gbmVlZCB0byBpbXBsZW1lbnQg
aXQgbm93LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IDIyODdmNjcy
OWJhODA3MTk0NmM4NDZjZjg5ODVjNjY2ODM1MTk0NzIuLjJjNmFhZDhhZmVlYTlhNTRlZDA2MjM0
MGMwZmNjMzYxNTljNTYxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0K
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDEwLCAyMDExIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MTAtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0zMiwzMyArMzIsMTcgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIAot
I2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0ICJXZWJQYWdlLmgiCi0j
aW1wb3J0ICJXZWJGcmFtZS5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNp
bXBvcnQgIldlYlByb2Nlc3MuaCIKLSNpbXBvcnQgPFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
RE9NRG9jdW1lbnRGcmFnbWVudEludGVybmFsLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0RPTURvY3Vt
ZW50SW50ZXJuYWwuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
Q29yZU5TVVJMRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1AaW50ZXJm
YWNlIE5TQXR0cmlidXRlZFN0cmluZyAoV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRGV0YWlscykKLS0g
KERPTURvY3VtZW50RnJhZ21lbnQqKV9kb2N1bWVudEZyb21SYW5nZTooTlNSYW5nZSlyYW5nZSBk
b2N1bWVudDooRE9NRG9jdW1lbnQqKWRvY3VtZW50IGRvY3VtZW50QXR0cmlidXRlczooTlNEaWN0
aW9uYXJ5ICopZGljdCBzdWJyZXNvdXJjZXM6KE5TQXJyYXkgKiopc3VicmVzb3VyY2VzOwotQGVu
ZAotCi1AaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJSZXNvdXJjZUludGVybmFsKQotLSAoV2ViQ29y
ZTo6QXJjaGl2ZVJlc291cmNlKilfY29yZVJlc291cmNlOwotQGVuZAotCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKICAgICAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtl
eWJvYXJkRXZlbnQqIGV2ZW50KQpAQCAtOTAsNDMgKzc0LDYgQEAgTlNVUkwgKldlYkVkaXRvckNs
aWVudDo6Y2Fub25pY2FsaXplVVJMU3RyaW5nKE5TU3RyaW5nICpVUkxTdHJpbmcpCiAgICAgICAg
IFVSTCA9IFVSTEJ5Q2Fub25pY2FsaXppbmdVUkwoVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhVUkxT
dHJpbmcsIG5pbCkpOwogICAgIHJldHVybiBVUkw7CiB9Ci0gICAgCi1zdGF0aWMgTlNBcnJheSAq
Y3JlYXRlRXhjbHVkZWRFbGVtZW50c0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJzaW9uKCkKLXsK
LSAgICBOU0FycmF5ICplbGVtZW50cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3Rz
OiAKLSAgICAgICAgLy8gT21pdCBzdHlsZSBzaW5jZSB3ZSB3YW50IHN0eWxlIHRvIGJlIGlubGlu
ZSBzbyB0aGUgZnJhZ21lbnQgY2FuIGJlIGVhc2lseSBpbnNlcnRlZC4KLSAgICAgICAgQCJzdHls
ZSIsIAotICAgICAgICAvLyBPbWl0IHhtbCBzbyB0aGUgcmVzdWx0IGlzIG5vdCBYSFRNTC4KLSAg
ICAgICAgQCJ4bWwiLCAKLSAgICAgICAgLy8gT21pdCB0YWdzIHRoYXQgd2lsbCBnZXQgc3RyaXBw
ZWQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBmcmFnbWVudCBhbnl3YXkuCi0gICAgICAgIEAiZG9jdHlw
ZSIsIEAiaHRtbCIsIEAiaGVhZCIsIEAiYm9keSIsIAotICAgICAgICAvLyBPbWl0IGRlcHJlY2F0
ZWQgdGFncy4KLSAgICAgICAgQCJhcHBsZXQiLCBAImJhc2Vmb250IiwgQCJjZW50ZXIiLCBAImRp
ciIsIEAiZm9udCIsIEAiaXNpbmRleCIsIEAibWVudSIsIEAicyIsIEAic3RyaWtlIiwgQCJ1Iiwg
Ci0gICAgICAgIC8vIE9taXQgb2JqZWN0IHNvIG5vIGZpbGUgYXR0YWNobWVudHMgYXJlIHBhcnQg
b2YgdGhlIGZyYWdtZW50LgotICAgICAgICBAIm9iamVjdCIsIG5pbF07Ci0gICAgQ0ZSZXRhaW4o
ZWxlbWVudHMpOwotICAgIHJldHVybiBlbGVtZW50czsKLX0KLQotRG9jdW1lbnRGcmFnbWVudCog
V2ViRWRpdG9yQ2xpZW50Ojpkb2N1bWVudEZyYWdtZW50RnJvbUF0dHJpYnV0ZWRTdHJpbmcoTlNB
dHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4m
IHJlc291cmNlcykKLXsKLSAgICBzdGF0aWMgTlNBcnJheSAqZXhjbHVkZWRFbGVtZW50cyA9IGNy
ZWF0ZUV4Y2x1ZGVkRWxlbWVudHNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbigpOwotICAg
IAotICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFy
eVdpdGhPYmplY3Q6ZXhjbHVkZWRFbGVtZW50cyBmb3JLZXk6TlNFeGNsdWRlZEVsZW1lbnRzRG9j
dW1lbnRBdHRyaWJ1dGVdOwotICAgIAotICAgIE5TQXJyYXkgKnN1YlJlc291cmNlczsKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpOwotCi0g
ICAgLy8gRklYTUU6IElzbnRlYWQgb2YgY2FsbGluZyB0aGlzIFdlYktpdDEgbWV0aG9kLCB0aGUg
Y29kZSBzaG91bGQgYmUgZmFjdG9yZWQgb3V0IGFuZCBtb3ZlZCBpbnRvIFdlYkNvcmUuCi0gICAg
RE9NRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQgPSBbc3RyaW5nIF9kb2N1bWVudEZyb21SYW5n
ZTpOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudDpraXQoZG9jdW1lbnQpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50QXR0cmli
dXRlczpkaWN0aW9uYXJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1YnJlc291cmNlczomc3ViUmVzb3VyY2VzXTsKLSAgICBmb3IgKGlkIHJlc291
cmNlIGluIHN1YlJlc291cmNlcykKLSAgICAgICAgcmVzb3VyY2VzLmFwcGVuZChbcmVzb3VyY2Ug
X2NvcmVSZXNvdXJjZV0pOwotCi0gICAgcmV0dXJuIGNvcmUoZnJhZ21lbnQpOwotfQogCiB2b2lk
IFdlYkVkaXRvckNsaWVudDo6c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQog
ewpAQCAtMTM0LDcgKzgxLDYgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldEluc2VydGlvblBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi0KIHN0
YXRpYyB2b2lkIGNoYW5nZVdvcmRDYXNlKFdlYlBhZ2UqIHBhZ2UsIFNFTCBzZWxlY3RvcikKIHsK
ICAgICBGcmFtZSYgZnJhbWUgPSBwYWdlLT5jb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKQEAgLTE0Nyw3ICs5Myw2IEBAIHN0YXRpYyB2b2lkIGNoYW5n
ZVdvcmRDYXNlKFdlYlBhZ2UqIHBhZ2UsIFNFTCBzZWxlY3RvcikKICAgICBwYWdlLT5yZXBsYWNl
U2VsZWN0aW9uV2l0aFRleHQoJmZyYW1lLCBbc2VsZWN0ZWRTdHJpbmcgcGVyZm9ybVNlbGVjdG9y
OnNlbGVjdG9yXSk7CiB9CiAKLSNpZiBVU0UoQVBQS0lUKQogdm9pZCBXZWJFZGl0b3JDbGllbnQ6
OnVwcGVyY2FzZVdvcmQoKQogewogICAgIGNoYW5nZVdvcmRDYXNlKG1fcGFnZSwgQHNlbGVjdG9y
KHVwcGVyY2FzZVN0cmluZykpOwpAQCAtMTYyLDkgKzEwNyw5IEBAIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpjYXBpdGFsaXplV29yZCgpCiB7CiAgICAgY2hhbmdlV29yZENhc2UobV9wYWdlLCBAc2Vs
ZWN0b3IoY2FwaXRhbGl6ZWRTdHJpbmcpKTsKIH0KLSNlbmRpZgogCiAjaWYgVVNFKEFVVE9NQVRJ
Q19URVhUX1JFUExBQ0VNRU5UKQorCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2hvd1N1YnN0aXR1
dGlvbnNQYW5lbChib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC0yNDgsNiArMTkz
LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVj
dGlvbigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KKwogI2VuZGlmIC8vIFVTRShBVVRP
TUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>