<?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>115395</bug_id>
          
          <creation_ts>2013-04-29 18:42:54 -0700</creation_ts>
          <short_desc>Add API to allow WebKit2 banners to get mouse events</short_desc>
          <delta_ts>2013-04-30 18:23:55 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>bdakin</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rego+ews</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>882892</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-04-29 18:42:54 -0700</bug_when>
    <thetext>Add API to allow WebKit2 banners to get mouse events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882894</commentid>
    <comment_count>1</comment_count>
      <attachid>200072</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-04-29 18:49:38 -0700</bug_when>
    <thetext>Created attachment 200072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882898</commentid>
    <comment_count>2</comment_count>
      <attachid>200072</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-04-29 19:01:45 -0700</bug_when>
    <thetext>Comment on attachment 200072
Patch

Attachment 200072 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/248051</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882899</commentid>
    <comment_count>3</comment_count>
      <attachid>200072</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-04-29 19:02:28 -0700</bug_when>
    <thetext>Comment on attachment 200072
Patch

Attachment 200072 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/229676</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882916</commentid>
    <comment_count>4</comment_count>
      <attachid>200072</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2013-04-29 20:38:02 -0700</bug_when>
    <thetext>Comment on attachment 200072
Patch

r=me! You mentioned that you know how to fix the broken builds though, so it would be good to do that before you check in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>883360</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-04-30 18:23:55 -0700</bug_when>
    <thetext>Committed r149417: &lt;http://trac.webkit.org/changeset/149417&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200072</attachid>
            <date>2013-04-29 18:49:38 -0700</date>
            <delta_ts>2013-04-29 20:38:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115395-20130429184854.patch</filename>
            <type>text/plain</type>
            <size>52305</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTM0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEzLTA0LTI5ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIEFQSSB0byBhbGxvdyBXZWJLaXQy
IGJhbm5lcnMgdG8gZ2V0IG1vdXNlIGV2ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1Mzk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnJvb3RWaWV3
VG9Ub3RhbENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAg
ICAgIEFkZCBhbmQgZXhwb3NlIHJvb3RWaWV3VG9Ub3RhbENvbnRlbnRzKCkuCisKIDIwMTMtMDQt
MjkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRG9u
J3QgZG8gQ0dDb250ZXh0IGZsaXBwaW5nIHdoZW4gcGFpbnRpbmcgc3ViZnJhbWVzIGluIFdlYktp
dDEgb24gcG9zdC1Nb3VudGFpbkxpb24gT1NlcwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJl
dmlzaW9uIDE0OTMxOCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0zNzEsOSArMzcxLDEwIEBAIF9fWk43V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEx
NWNvbnRlbnRzUmUKIF9fWk43V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWExNWRpZEFkZFNjcm9sbGJh
ckVQTlNfOVNjcm9sbGJhckVOU18yMFNjcm9sbGJhck9yaWVudGF0aW9uRQogX19aTjdXZWJDb3Jl
MTRTY3JvbGxhYmxlQXJlYTE2aGFuZGxlV2hlZWxFdmVudEVSS05TXzE4UGxhdGZvcm1XaGVlbEV2
ZW50RQogX19aTjdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTE3d2lsbEVuZExpdmVSZXNpemVFdgor
X19aTjdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTE5aW52YWxpZGF0ZVNjcm9sbGJhckVQTlNfOVNj
cm9sbGJhckVSS05TXzdJbnRSZWN0RQogX19aTjdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTE5d2ls
bFJlbW92ZVNjcm9sbGJhckVQTlNfOVNjcm9sbGJhckVOU18yMFNjcm9sbGJhck9yaWVudGF0aW9u
RQogX19aTjdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTE5d2lsbFN0YXJ0TGl2ZVJlc2l6ZUV2Ci1f
X1pON1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMTlpbnZhbGlkYXRlU2Nyb2xsYmFyRVBOU185U2Ny
b2xsYmFyRVJLTlNfN0ludFJlY3RFCitfX1pOSzdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTE3dG90
YWxDb250ZW50c1NpemVFdgogX19aTks3V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyMW1vdXNlRW50
ZXJlZFNjcm9sbGJhckVQTlNfOVNjcm9sbGJhckUKIF9fWk43V2ViQ29yZTE0U2Nyb2xsYWJsZUFy
ZWEyMmludmFsaWRhdGVTY3JvbGxDb3JuZXJFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTE0
U2Nyb2xsYWJsZUFyZWEyNHNldFNjcm9sbGJhck92ZXJsYXlTdHlsZUVOU18yMVNjcm9sbGJhck92
ZXJsYXlTdHlsZUUKQEAgLTEyNDMsNiArMTI0NCw3IEBAIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZp
ZXcxNndpbmRvd1RvQ29udGUKIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxNndpbmRvd1RvQ29u
dGVudHNFUktOU184SW50UG9pbnRFCiBfX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MThjb250ZW50
c1RvUm9vdFZpZXdFUktOU183SW50UmVjdEUKIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxOGNv
bnRlbnRzVG9Sb290Vmlld0VSS05TXzhJbnRQb2ludEUKK19fWk5LN1dlYkNvcmUxMFNjcm9sbFZp
ZXcyM3Jvb3RWaWV3VG9Ub3RhbENvbnRlbnRzRVJLTlNfOEludFBvaW50RQogX19aTks3V2ViQ29y
ZTEwU2Nyb2xsVmlldzMwc2Nyb2xsT2Zmc2V0UmVsYXRpdmVUb0RvY3VtZW50RXYKIF9fWk5LN1dl
YkNvcmUxMFN0b3JhZ2VNYXA2bGVuZ3RoRXYKIF9fWk5LN1dlYkNvcmUxMFN0b3JhZ2VNYXA3Z2V0
SXRlbUVSS04zV1RGNlN0cmluZ0UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwCShyZXZpc2lvbiAxNDkzMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM1LDYgKzczNSwxMiBAQCBJbnRSZWN0IFNj
cm9sbFZpZXc6OmNvbnRlbnRzVG9Sb290VmlldyhjCiAgICAgcmV0dXJuIGNvbnZlcnRUb1Jvb3RW
aWV3KHZpZXdSZWN0KTsKIH0KIAorSW50UG9pbnQgU2Nyb2xsVmlldzo6cm9vdFZpZXdUb1RvdGFs
Q29udGVudHMoY29uc3QgSW50UG9pbnQmIHJvb3RWaWV3UG9pbnQpIGNvbnN0Cit7CisgICAgSW50
UG9pbnQgdmlld1BvaW50ID0gY29udmVydEZyb21Sb290Vmlldyhyb290Vmlld1BvaW50KTsKKyAg
ICByZXR1cm4gdmlld1BvaW50ICsgc2Nyb2xsT2Zmc2V0KCk7Cit9CisKIEludFBvaW50IFNjcm9s
bFZpZXc6OndpbmRvd1RvQ29udGVudHMoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSBjb25z
dAogewogICAgIGlmIChkZWxlZ2F0ZXNTY3JvbGxpbmcoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmgJKHJldmlzaW9uIDE0OTMxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjE1LDYgKzIxNSw4IEBAIHB1
YmxpYzoKICAgICBJbnRSZWN0IHJvb3RWaWV3VG9Db250ZW50cyhjb25zdCBJbnRSZWN0JikgY29u
c3Q7CiAgICAgSW50UmVjdCBjb250ZW50c1RvUm9vdFZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0
OwogCisgICAgSW50UG9pbnQgcm9vdFZpZXdUb1RvdGFsQ29udGVudHMoY29uc3QgSW50UG9pbnQm
KSBjb25zdDsKKwogICAgIC8vIEV2ZW50IGNvb3JkaW5hdGVzIGFyZSBhc3N1bWVkIHRvIGJlIGlu
IHRoZSBjb29yZGluYXRlIHNwYWNlIG9mIGEgd2luZG93IHRoYXQgY29udGFpbnMKICAgICAvLyB0
aGUgZW50aXJlIHdpZGdldCBoaWVyYXJjaHkuIEl0IGlzIHVwIHRvIHRoZSBwbGF0Zm9ybSB0byBk
ZWNpZGUgd2hhdCB0aGUgcHJlY2lzZSBkZWZpbml0aW9uCiAgICAgLy8gb2YgY29udGFpbmluZyB3
aW5kb3cgaXMuIChGb3IgZXhhbXBsZSBvbiBNYWMgaXQgaXMgdGhlIGNvbnRhaW5pbmcgTlNXaW5k
b3cuKQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ5MzQ0KQorKysgU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTMtMDQtMjkgIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgQVBJIHRvIGFsbG93IFdl
YktpdDIgYmFubmVycyB0byBnZXQgbW91c2UgZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTUzOTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAg
ICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6CisgICAgICAgIEFkZCBiYW5uZXIgdHlwZS4KKworICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIGZp
bGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUFQSUNhc3QuaDoKKyAgICAgICAgQWRkIGNvbnZlcnNpb24uCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1
bmRsZVBhZ2VTZXRUb3BPdmVyaGFuZ0ltYWdlKToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldEJv
dHRvbU92ZXJoYW5nSW1hZ2UpOgorICAgICAgICBGaXggcGFyYW1ldGVyIG5hbWVzIHRvIGJlIGNv
bnNpc3RlbnQuCisKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldEhlYWRlckJhbm5lcik6CisgICAg
ICAgIChXS0J1bmRsZVBhZ2VTZXRGb290ZXJCYW5uZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VCYW5uZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdLQnVuZGxlUGFnZUJhbm5lckdldFR5cGVJRCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VCYW5uZXIuaDogQWRkZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFu
bmVyTWFjLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbTogQWRkZWQuCisgICAgICAgIChQYWdlQmFu
bmVyQ2xpZW50SW1wbCk6CisgICAgICAgIChQYWdlQmFubmVyQ2xpZW50SW1wbDo6Y3JlYXRlKToK
KyAgICAgICAgKFBhZ2VCYW5uZXJDbGllbnRJbXBsOjpQYWdlQmFubmVyQ2xpZW50SW1wbCk6Cisg
ICAgICAgIChQYWdlQmFubmVyQ2xpZW50SW1wbDo6cGFnZUJhbm5lckRlc3Ryb3llZCk6CisgICAg
ICAgIChQYWdlQmFubmVyQ2xpZW50SW1wbDo6bW91c2VFdmVudCk6CisgICAgICAgIChXS0J1bmRs
ZVBhZ2VCYW5uZXJDcmVhdGVCYW5uZXJXaXRoQ0FMYXllcik6CisgICAgICAgIChXS0J1bmRsZVBh
Z2VCYW5uZXJHZXRMYXllcik6CisgICAgICAgIEFkZCBiYW5uZXIgQVBJLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VCYW5uZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1BhZ2VCYW5uZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFn
ZUJhbm5lcjo6flBhZ2VCYW5uZXIpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQmFubmVyOjphZGRU
b1BhZ2UpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQmFubmVyOjpkZXRhY2hGcm9tUGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VCYW5uZXI6OmRpZENoYW5nZURldmljZVNjYWxlRmFjdG9yKToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUJhbm5lcjo6bW91c2VFdmVudCk6CisgICAgICAgIEFkZCBu
b24tbWFjIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6fldlYlBhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRIZWFkZXJQYWdlQmFubmVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6aGVhZGVyUGFnZUJhbm5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnNldEZvb3RlclBhZ2VCYW5uZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb290ZXJQ
YWdlQmFubmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bW91c2VFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1vdXNlRXZlbnRTeW5jRm9yVGVzdGluZyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgQWRkIGJhbm5lciBzZXR0
ZXIvZ2V0dGVycyBhbmQgZ2l2ZSB0aGUgYmFubmVycyBhIGNoYW5jZSB0byBoYW5kbGUgbW91c2Ug
ZXZlbnRzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QYWdlQmFubmVyTWFj
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUJhbm5lcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUJhbm5lcjo6UGFnZUJhbm5lcik6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VCYW5uZXI6OmFkZFRvUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VCYW5uZXI6OmRldGFj
aEZyb21QYWdlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUJhbm5lcjo6ZGlkQ2hhbmdlRGV2aWNl
U2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQmFubmVyOjptb3VzZUV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUJhbm5lcjo6bGF5ZXIpOgorICAgICAgICBBZGQgTWFjIGlt
cGxlbWVudGF0aW9uLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVIZWFkZXJBbmRGb290ZXJM
YXllcnNGb3JEZXZpY2VTY2FsZUNoYW5nZSk6CisgICAgICAgIE5vdGlmeSBiYW5uZXJzIHdoZW4g
dGhlIGRldmljZSBzY2FsZSBjaGFuZ2VzLgorCiAyMDEzLTA0LTI5ICBDaHJpcyBGbGVpemFjaCAg
PGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgV0VCIFNQRUVDSDogbmVlZCB0byBpZGVu
dGlmeSB0aGUgZGVmYXVsdCB2b2ljZSBwZXIgbGFuZ3VhZ2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJT2JqZWN0LmgJKHJldmlzaW9uIDE0OTMxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEyMiw3IEBAIHB1YmxpYzoKICAg
ICAgICAgVHlwZUJ1bmRsZU5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIFR5cGVCdW5kbGVOb2Rl
SGFuZGxlLAogICAgICAgICBUeXBlQnVuZGxlUGFnZSwKKyAgICAgICAgVHlwZUJ1bmRsZVBhZ2VC
YW5uZXIsCiAgICAgICAgIFR5cGVCdW5kbGVQYWdlR3JvdXAsCiAgICAgICAgIFR5cGVCdW5kbGVQ
YWdlT3ZlcmxheSwKICAgICAgICAgVHlwZUJ1bmRsZVJhbmdlSGFuZGxlLApJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkocmV2aXNpb24gMTQ5MzE4KQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiArMTQ4
LDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVJbnNwZQogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKiBXS0J1bmRsZU5hdmln
YXRpb25BY3Rpb25SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZU5vZGVI
YW5kbGUqIFdLQnVuZGxlTm9kZUhhbmRsZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLQnVuZGxlUGFnZSogV0tCdW5kbGVQYWdlUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tCdW5kbGVQYWdlQmFubmVyKiBXS0J1bmRsZVBhZ2VCYW5uZXJSZWY7CiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZVBhZ2VHcm91cCogV0tCdW5kbGVQYWdlR3JvdXBSZWY7
CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZVBhZ2VPdmVybGF5KiBXS0J1bmRs
ZVBhZ2VPdmVybGF5UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVSYW5n
ZUhhbmRsZSogV0tCdW5kbGVSYW5nZUhhbmRsZVJlZjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0OTMxOCkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNTcwLDEyICs1NzAsMTkgQEAKIAkJNzYyQjc0OEQxMjBCQzc1QzAwODE5
MzM5IC8qIFdLUHJlZmVyZW5jZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NjJCNzQ4NDEyMEJCQTJEMDA4MTkzMzkgLyogV0tQcmVmZXJl
bmNlc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3ODAxQzA5OTE0MjI5MEM0MDBGQUY5QUYgLyogV2ViSGl0VGVzdFJlc3VsdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3ODAxQzA5NTE0
MjI5MEM0MDBGQUY5QUYgLyogV2ViSGl0VGVzdFJlc3VsdC5jcHAgKi87IH07CiAJCTc4MDFDMDlB
MTQyMjkwQzQwMEZBRjlBRiAvKiBXZWJIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3ODAxQzA5NjE0MjI5MEM0MDBGQUY5QUYgLyog
V2ViSGl0VGVzdFJlc3VsdC5oICovOyB9OworCQk3QzM4NzQzNDE3MkY1NjE1MDAxQkQ4OEEgLyog
UGFnZUJhbm5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzM4NzQzMzE3MkY1NjE1MDAxQkQ4OEEgLyogUGFnZUJhbm5lci5jcHAgKi87IH07CisJ
CTdDNkQzN0ZDMTcyRjU1NUYwMDlEMjg0NyAvKiBQYWdlQmFubmVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M2RDM3RkExNzJGNTU1RjAwOUQy
ODQ3IC8qIFBhZ2VCYW5uZXJNYWMubW0gKi87IH07CiAJCTdDQjE2RkVGMTcyNEJBMjMwMDdBMEE5
NSAvKiBjb20uYXBwbGUuaXN0LmRzLmFwcGxlY29ubmVjdC53ZWJwbHVnaW4uc2IgaW4gQ29weSBQ
bHVnLWluIFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0NCMTZGRTIxNzI0QjlCNTAwN0EwQTk1IC8qIGNvbS5hcHBsZS5pc3QuZHMuYXBwbGVjb25u
ZWN0LndlYnBsdWdpbi5zYiAqLzsgfTsKIAkJN0NCMTZGRjAxNzI0QkEyNDAwN0EwQTk1IC8qIGNv
bS5hcHBsZS5RdWlja1RpbWUgUGx1Z2luLnBsdWdpbi5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJv
eCBQcm9maWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0IxNkZFMzE3
MjRCOUI1MDA3QTBBOTUgLyogY29tLmFwcGxlLlF1aWNrVGltZSBQbHVnaW4ucGx1Z2luLnNiICov
OyB9OwogCQk3Q0IxNkZGMTE3MjRCQTI2MDA3QTBBOTUgLyogY29tLmFwcGxlLldlYktpdC5wbHVn
aW4tY29tbW9uLnNiIGluIENvcHkgUGx1Zy1pbiBTYW5kYm94IFByb2ZpbGVzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQjE2RkU0MTcyNEI5QjUwMDdBMEE5NSAvKiBjb20u
YXBwbGUuV2ViS2l0LnBsdWdpbi1jb21tb24uc2IgKi87IH07CiAJCTdDQjE2RkYyMTcyNEJBMjgw
MDdBMEE5NSAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIucGx1Z2luLnNiIGluIENvcHkg
UGx1Zy1pbiBTYW5kYm94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDQjE2RkU1MTcyNEI5QjUwMDdBMEE5NSAvKiBjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5
ZXIucGx1Z2luLnNiICovOyB9OwogCQk3Q0IxNkZGMzE3MjRCQTJGMDA3QTBBOTUgLyogY29tLm1p
Y3Jvc29mdC5TaWx2ZXJsaWdodFBsdWdpbi5zYiBpbiBDb3B5IFBsdWctaW4gU2FuZGJveCBQcm9m
aWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0IxNkZFNjE3MjRCOUI1
MDA3QTBBOTUgLyogY29tLm1pY3Jvc29mdC5TaWx2ZXJsaWdodFBsdWdpbi5zYiAqLzsgfTsKIAkJ
N0NCMTZGRjQxNzI0QkEzMDAwN0EwQTk1IC8qIGNvbS5vcmFjbGUuamF2YS5KYXZhQXBwbGV0UGx1
Z2luLnNiIGluIENvcHkgUGx1Zy1pbiBTYW5kYm94IFByb2ZpbGVzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDQjE2RkU3MTcyNEI5QjUwMDdBMEE5NSAvKiBjb20ub3JhY2xl
LmphdmEuSmF2YUFwcGxldFBsdWdpbi5zYiAqLzsgfTsKKwkJN0NGNDdGRjYxNzI3NUI3MTAwOEFD
QjkxIC8qIFdLQnVuZGxlUGFnZUJhbm5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0Y0N0ZGNDE3Mjc1QjcxMDA4QUNCOTEgLyogV0tCdW5kbGVQ
YWdlQmFubmVyLmNwcCAqLzsgfTsKKwkJN0NGNDdGRjcxNzI3NUI3MTAwOEFDQjkxIC8qIFdLQnVu
ZGxlUGFnZUJhbm5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0NGNDdGRjUxNzI3NUI3MTAwOEFDQjkxIC8qIFdLQnVuZGxlUGFnZUJhbm5lci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDRjQ3RkZC
MTcyNzVDNTcwMDhBQ0I5MSAvKiBQYWdlQmFubmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0Y0N0ZGOTE3Mjc1QzU3MDA4QUNCOTEgLyogUGFnZUJh
bm5lci5oICovOyB9OworCQk3Q0Y0N0ZGRTE3Mjc2QUUzMDA4QUNCOTEgLyogV0tCdW5kbGVQYWdl
QmFubmVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0NGNDdGRkMxNzI3NkFFMzAwOEFDQjkxIC8qIFdLQnVuZGxlUGFnZUJhbm5lck1hYy5tbSAq
LzsgfTsKKwkJN0NGNDdGRkYxNzI3NkFFMzAwOEFDQjkxIC8qIFdLQnVuZGxlUGFnZUJhbm5lck1h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NGNDdG
RkQxNzI3NkFFMzAwOEFDQjkxIC8qIFdLQnVuZGxlUGFnZUJhbm5lck1hYy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCThDRkVDRTk0MTQ5MEYxNDAw
MDJBQUEzMiAvKiBFZGl0b3JTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4Q0ZFQ0U5MzE0OTBGMTQwMDAyQUFBMzIgLyogRWRpdG9yU3RhdGUu
Y3BwICovOyB9OwogCQk4REMyRUY1MzA0ODZBNjk0MDA5OEIyMTYgLyogSW5mb1BsaXN0LnN0cmlu
Z3MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OUMx
NjY2RkU4NDExNThDMDJBQUMwNyAvKiBJbmZvUGxpc3Quc3RyaW5ncyAqLzsgfTsKIAkJOTA5ODU0
RUMxMkJDNEUxNzAwMEFEMDgwIC8qIFdlYk1lbW9yeVNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTA1NjIwRTgxMkJDMjQ4QjAwMDc5OUI2
IC8qIFdlYk1lbW9yeVNhbXBsZXIuY3BwICovOyB9OwpAQCAtMjAzNSwxMiArMjA0MiwxOSBAQAog
CQk3NjJCNzQ4NDEyMEJCQTJEMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcmVmZXJlbmNlc1ByaXZhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzgwMUMwOTUxNDIyOTBDNDAwRkFGOUFGIC8qIFdl
YkhpdFRlc3RSZXN1bHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViSGl0VGVzdFJlc3VsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc4MDFD
MDk2MTQyMjkwQzQwMEZBRjlBRiAvKiBXZWJIaXRUZXN0UmVzdWx0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkhpdFRlc3RSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0MzODc0MzMxNzJGNTYxNTAwMUJEODhBIC8qIFBhZ2VCYW5uZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUJhbm5lci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNkQzN0ZBMTcyRjU1NUYwMDlEMjg0NyAvKiBQYWdl
QmFubmVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFn
ZUJhbm5lck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NCMTZGRTIxNzI0
QjlCNTAwN0EwQTk1IC8qIGNvbS5hcHBsZS5pc3QuZHMuYXBwbGVjb25uZWN0LndlYnBsdWdpbi5z
YiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuaXN0LmRzLmFwcGxlY29ubmVjdC53
ZWJwbHVnaW4uc2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQjE2RkUzMTcyNEI5
QjUwMDdBMEE5NSAvKiBjb20uYXBwbGUuUXVpY2tUaW1lIFBsdWdpbi5wbHVnaW4uc2IgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gImNvbS5hcHBsZS5RdWlja1RpbWUgUGx1Z2luLnBsdWdpbi5zYiI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQjE2RkU0MTcyNEI5QjUwMDdBMEE5NSAv
KiBjb20uYXBwbGUuV2ViS2l0LnBsdWdpbi1jb21tb24uc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gImNvbS5hcHBsZS5XZWJLaXQucGx1Z2luLWNvbW1vbi5zYiI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDQjE2RkU1MTcyNEI5QjUwMDdBMEE5NSAvKiBjb20ubWFjcm9tZWRpYS5G
bGFzaCBQbGF5ZXIucGx1Z2luLnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJjb20ubWFjcm9t
ZWRpYS5GbGFzaCBQbGF5ZXIucGx1Z2luLnNiIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0NCMTZGRTYxNzI0QjlCNTAwN0EwQTk1IC8qIGNvbS5taWNyb3NvZnQuU2lsdmVybGlnaHRQ
bHVnaW4uc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLm1pY3Jvc29mdC5TaWx2ZXJsaWdo
dFBsdWdpbi5zYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NCMTZGRTcxNzI0QjlC
NTAwN0EwQTk1IC8qIGNvbS5vcmFjbGUuamF2YS5KYXZhQXBwbGV0UGx1Z2luLnNiICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IGNvbS5vcmFjbGUuamF2YS5KYXZhQXBwbGV0UGx1Z2luLnNiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0Y0N0ZGNDE3Mjc1QjcxMDA4QUNCOTEgLyogV0tC
dW5kbGVQYWdlQmFubmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdLQnVuZGxlUGFnZUJhbm5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdD
RjQ3RkY1MTcyNzVCNzEwMDhBQ0I5MSAvKiBXS0J1bmRsZVBhZ2VCYW5uZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVQYWdlQmFubmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdDRjQ3RkY5MTcyNzVDNTcwMDhBQ0I5MSAvKiBQYWdlQmFubmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VCYW5uZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NGNDdGRkMxNzI3NkFFMzAwOEFDQjkxIC8qIFdLQnVu
ZGxlUGFnZUJhbm5lck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdLQnVuZGxlUGFnZUJhbm5lck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0NGNDdGRkQxNzI3NkFFMzAwOEFDQjkxIC8qIFdLQnVuZGxlUGFnZUJhbm5lck1hYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZVBhZ2VCYW5uZXJNYWMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOENGRUNFOTMxNDkwRjE0MDAwMkFBQTMyIC8q
IEVkaXRvclN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVk
aXRvclN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOERDMkVGNUEwNDg2
QTY5NDAwOThCMjE2IC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0
aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThEQzJFRjVCMDQ4
NkE2OTQwMDk4QjIxNiAvKiBXZWJLaXQyLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IGluY2x1ZGVJbklu
ZGV4ID0gMDsgcGF0aCA9IFdlYktpdDIuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwpAQCAtMzc4OCw2ICszODAyLDggQEAKIAkJOTM5NEFFNDExNzAyQjI1QjAw
MzQ0MjMyIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJN0NGNDdGRkQxNzI3NkFFMzAwOEFDQjkxIC8qIFdLQnVuZGxlUGFnZUJhbm5lck1hYy5o
ICovLAorCQkJCTdDRjQ3RkZDMTcyNzZBRTMwMDhBQ0I5MSAvKiBXS0J1bmRsZVBhZ2VCYW5uZXJN
YWMubW0gKi8sCiAJCQkJOTM5NEFFNDIxNzAyQjI1QjAwMzQ0MjMyIC8qIFdLQnVuZGxlUGFnZVBy
aXZhdGVNYWMuaCAqLywKIAkJCQk5Mzk0QUU0MzE3MDJCMjVCMDAzNDQyMzIgLyogV0tCdW5kbGVQ
YWdlUHJpdmF0ZU1hYy5tbSAqLywKIAkJCSk7CkBAIC0zOTIxLDYgKzM5MzcsOCBAQAogCQkJCTFB
MTg2RUU4MTJFRjc2MTgwMDhFNUYzNyAvKiBMYXllclRyZWVIb3N0LmggKi8sCiAJCQkJMUE5MEMy
MzYxMjY1MDcxNzAwM0U0NEQ0IC8qIFBhZ2VPdmVybGF5LmNwcCAqLywKIAkJCQkxQTkwQzIzNTEy
NjUwNzE3MDAzRTQ0RDQgLyogUGFnZU92ZXJsYXkuaCAqLywKKwkJCQk3QzM4NzQzMzE3MkY1NjE1
MDAxQkQ4OEEgLyogUGFnZUJhbm5lci5jcHAgKi8sCisJCQkJN0NGNDdGRjkxNzI3NUM1NzAwOEFD
QjkxIC8qIFBhZ2VCYW5uZXIuaCAqLywKIAkJCQlCQzcyQjlGODExRTY0NzZCMDAxRUI0RUEgLyog
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwICovLAogCQkJCUJDNzJCOUY5MTFFNjQ3NkIwMDFF
QjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oICovLAogCQkJCTUxODcxQjU5MTI3Q0I4
OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi8sCkBAIC00NDE1LDYgKzQ0MzMsOCBA
QAogCQkJCUJDNTc0NTBCMTI2M0IxNTUwMDZGMEYxMiAvKiBXS0J1bmRsZU5vZGVIYW5kbGVQcml2
YXRlLmggKi8sCiAJCQkJQkMyMDUyODAxMUM5NDI4NDAwOEYzMzc1IC8qIFdLQnVuZGxlUGFnZS5j
cHAgKi8sCiAJCQkJQkMyMDUyN0YxMUM5NDI4NDAwOEYzMzc1IC8qIFdLQnVuZGxlUGFnZS5oICov
LAorCQkJCTdDRjQ3RkY0MTcyNzVCNzEwMDhBQ0I5MSAvKiBXS0J1bmRsZVBhZ2VCYW5uZXIuY3Bw
ICovLAorCQkJCTdDRjQ3RkY1MTcyNzVCNzEwMDhBQ0I5MSAvKiBXS0J1bmRsZVBhZ2VCYW5uZXIu
aCAqLywKIAkJCQlCQzdCNjMzQzEyQTQ1RDEyMDBEMTc0QTQgLyogV0tCdW5kbGVQYWdlR3JvdXAu
Y3BwICovLAogCQkJCUJDN0I2MzNCMTJBNDVEMTIwMEQxNzRBNCAvKiBXS0J1bmRsZVBhZ2VHcm91
cC5oICovLAogCQkJCTFBMjJGMTAwMTI4OUZDRDkwMDg1RTc0RiAvKiBXS0J1bmRsZVBhZ2VPdmVy
bGF5LmNwcCAqLywKQEAgLTQ2NDEsNiArNDY2MSw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkx
QTk3RTA3MzE2QTVGNTc4MDAwQkM5RTUgLyogTGF5ZXJUcmVlSG9zdE1hYy5oICovLAogCQkJCTFB
OTdFMDc0MTZBNUY1NzgwMDBCQzlFNSAvKiBMYXllclRyZWVIb3N0TWFjLm1tICovLAorCQkJCTdD
NkQzN0ZBMTcyRjU1NUYwMDlEMjg0NyAvKiBQYWdlQmFubmVyTWFjLm1tICovLAogCQkJCTFBQjE2
QUVDMTY0QjQxRTQwMDI5MEQ2MiAvKiBSZW1vdGVHcmFwaGljc0xheWVyLmggKi8sCiAJCQkJMUFC
MTZBRUIxNjRCNDFFNDAwMjkwRDYyIC8qIFJlbW90ZUdyYXBoaWNzTGF5ZXIubW0gKi8sCiAJCQkJ
MUFCMTZBRTgxNjRCM0E4ODAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZUNvbnRleHQuaCAqLywK
QEAgLTU1NDUsNiArNTU2Niw4IEBACiAJCQkJQkNCNjM0NzgxMTZCRjEwNjAwNjAzMjE1IC8qIFdl
YktpdDJfQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5QkE1MDUxNjk3QzQ1MzAwRTQ0NjE2IC8q
IFdlYktpdDJJbml0aWFsaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzU5NTM0MjEwRkMwNDUy
MDA5OEY4MkQgLyogV2ViTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3Q0Y0N0ZG
RjE3Mjc2QUUzMDA4QUNCOTEgLyogV0tCdW5kbGVQYWdlQmFubmVyTWFjLmggaW4gSGVhZGVycyAq
LywKKwkJCQk3Q0Y0N0ZGNzE3Mjc1QjcxMDA4QUNCOTEgLyogV0tCdW5kbGVQYWdlQmFubmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzM0QzQTNDMjEzMzk2MEIwMDA3MDlCRTQgLyogV2ViTWVkaWFD
YWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzRDNBM0M5MTMzOTYxNzkwMDcwOUJF
NCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
M0QzQTNCQjEzMzk2MDYyMDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC01NjEzLDYgKzU2MzYsNyBAQAogCQkJCTI5Q0Q1NUFBMTI4RTI5NEYw
MDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0REQjMyRDEyNEVDMkUxMDA0OEQxM0MgLyogV0tBUElDYXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTJFMzRFNTEzMEI0RDA1MDBBQkQxOUEgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0NGNDdGRkIxNzI3NUM1NzAwOEFDQjkxIC8qIFBh
Z2VCYW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NUY0MTI0RkYwMjcwMDY4RjIwQSAv
KiBXS0FycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNThGNjEyQTg4QTU0MDA2Mjk1MzAg
LyogV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4
RjgxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTY0ODUsNiArNjUwOSw3IEBACiAJCQkJMUE2NDI5MkQxMkRFNUY5
ODAwQ0FBRTJDIC8qIEJhY2tpbmdTdG9yZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQzQx
QUM4MTI2M0M4ODMwMDA1NEU5NCAvKiBCaW5hcnlTZW1hcGhvcmUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNGMTg2MzgxNjdEMDcxRTAwQTFBODVBIC8qIENhY2hlTW9kZWwuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJN0NGNDdGRkUxNzI3NkFFMzAwOEFDQjkxIC8qIFdLQnVuZGxlUGFnZUJhbm5l
ck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQTJFNTFFMTJFNEMwNUUwMEJDNDk2NiAvKiBD
R1V0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJEOTU3MDEyODQ4NTY0MDAxRUI5
NjIgLyogQ2hpbGRQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlGNTRGODhGMTY0ODhF
ODcwMDdERjgxQSAvKiBDaGlsZFByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTY1MDYs
NiArNjUzMSw3IEBACiAJCQkJNTE4RThGMDcxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxOEU4RjA5MTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9h
ZEF1dGhlbnRpY2F0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOEU4RjBEMTZC
MjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdDRjQ3
RkY2MTcyNzVCNzEwMDhBQ0I5MSAvKiBXS0J1bmRsZVBhZ2VCYW5uZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTE4RThGMEIxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkTWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQUI3RDRDQjEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQ
cm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUQyNUU5NTE2N0FCMDgxMDBFQTlCQ0QgLyog
RG93bmxvYWRQcm94eU1hcC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTY2NTMsNiArNjY3OSw3IEBA
CiAJCQkJRTFDQzFCOTExMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mb01hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBRTExN0Y2MTFEQkIzMDkwMDk4MTYxNSAvKiBQcm9jZXNzTGF1bmNoZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFCMUQxMTJGNUZFNjAwMzM3QkFCIC8qIFByb2Nl
c3NMYXVuY2hlck1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdDMzg3NDM0MTcyRjU2MTUwMDFC
RDg4QSAvKiBQYWdlQmFubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjE2QUVEMTY0QjQx
RTQwMDI5MEQ2MiAvKiBSZW1vdGVHcmFwaGljc0xheWVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFCMTZBRTkxNjRCM0E4ODAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZUNvbnRleHQubW0gaW4g
U291cmNlcyAqLywKIAkJCQkxQUIxNkFERDE2NDg1OTg0MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywKQEAgLTY4MDksNiArNjgzNiw3IEBACiAJ
CQkJNTFBOUUxMjgxMzE1RUQzNTAwOUU3MDMxIC8qIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBOUUxMDUxMzE1Q0NGQzAw
OUU3MDMxIC8qIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MUE5RTEyQTEzMTVFRDM1MDA5RTcwMzEgLyogV2ViS2V5VmFsdWVTdG9yYWdlTWFu
YWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDNkQzN0ZD
MTcyRjU1NUYwMDlEMjg0NyAvKiBQYWdlQmFubmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM5QkE1MDQxNjk3QzQ1MzAwRTQ0NjE2IC8qIFdlYktpdDJJbml0aWFsaXplLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDQjlFNzYyMTEyMzJCOUUwMEExMzdFMCAvKiBXZWJMb2FkZXJDbGllbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzNEM0EzQzExMzM5NjBCMDAwNzA5QkU0IC8qIFdlYk1l
ZGlhQ2FjaGVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlQVBJQ2FzdC5oCShyZXZpc2lvbiAxNDkzMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlv
bjsKIGNsYXNzIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTsKIGNsYXNzIEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOworY2xhc3MgUGFn
ZUJhbm5lcjsKIGNsYXNzIFBhZ2VPdmVybGF5OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJ
bnNwZWN0b3I7CkBAIC02Myw2ICs2NCw3IEBAIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUhp
dFRlc3RSZXN1bHQKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUluc3BlY3RvclJlZiwgV2Vi
SW5zcGVjdG9yKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvblJl
ZiwgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKQogV0tfQUREX0FQSV9NQVBQSU5HKFdL
QnVuZGxlTm9kZUhhbmRsZVJlZiwgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKQorV0tfQUREX0FQ
SV9NQVBQSU5HKFdLQnVuZGxlUGFnZUJhbm5lclJlZiwgUGFnZUJhbm5lcikKIFdLX0FERF9BUElf
TUFQUElORyhXS0J1bmRsZVBhZ2VHcm91cFJlZiwgV2ViUGFnZUdyb3VwUHJveHkpCiBXS19BRERf
QVBJX01BUFBJTkcoV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiwgUGFnZU92ZXJsYXkpCiBXS19BRERf
QVBJX01BUFBJTkcoV0tCdW5kbGVQYWdlUmVmLCBXZWJQYWdlKQpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gMTQ5MzE4KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUJhY2tGb3J3
YXJkTGlzdC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oIgorI2luY2x1
ZGUgIlBhZ2VCYW5uZXIuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0Fy
cmF5LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCkBAIC0zMjUsMjYgKzMyNiwzNiBA
QCB2b2lkIFdLQnVuZGxlUGFnZVVuaW5zdGFsbFBhZ2VPdmVybGF5V2l0CiAgICAgdG9JbXBsKHBh
Z2VSZWYpLT51bmluc3RhbGxQYWdlT3ZlcmxheSh0b0ltcGwocGFnZU92ZXJsYXlSZWYpLCB0cnVl
KTsKIH0KIAotdm9pZCBXS0J1bmRsZVBhZ2VTZXRUb3BPdmVyaGFuZ0ltYWdlKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBXS0ltYWdlUmVmIGltYWdlKQordm9pZCBXS0J1bmRsZVBhZ2VTZXRUb3BPdmVy
aGFuZ0ltYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0ltYWdlUmVmIGltYWdlUmVmKQog
ewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB0b0ltcGwocGFnZSktPnNldFRvcE92ZXJoYW5nSW1h
Z2UodG9JbXBsKGltYWdlKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRUb3BPdmVyaGFuZ0lt
YWdlKHRvSW1wbChpbWFnZVJlZikpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocGFnZSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGltYWdlKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CisgICAg
VU5VU0VEX1BBUkFNKGltYWdlUmVmKTsKICNlbmRpZgogfQogCi12b2lkIFdLQnVuZGxlUGFnZVNl
dEJvdHRvbU92ZXJoYW5nSW1hZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLSW1hZ2VSZWYgaW1h
Z2UpCit2b2lkIFdLQnVuZGxlUGFnZVNldEJvdHRvbU92ZXJoYW5nSW1hZ2UoV0tCdW5kbGVQYWdl
UmVmIHBhZ2VSZWYsIFdLSW1hZ2VSZWYgaW1hZ2VSZWYpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQot
ICAgIHRvSW1wbChwYWdlKS0+c2V0Qm90dG9tT3ZlcmhhbmdJbWFnZSh0b0ltcGwoaW1hZ2UpKTsK
KyAgICB0b0ltcGwocGFnZVJlZiktPnNldEJvdHRvbU92ZXJoYW5nSW1hZ2UodG9JbXBsKGltYWdl
UmVmKSk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKLSAgICBVTlVTRURfUEFSQU0o
aW1hZ2UpOworICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKKyAgICBVTlVTRURfUEFSQU0oaW1h
Z2VSZWYpOwogI2VuZGlmCiB9CiAKK3ZvaWQgV0tCdW5kbGVQYWdlU2V0SGVhZGVyQmFubmVyKFdL
QnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VCYW5uZXJSZWYgYmFubmVyUmVmKQor
eworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0SGVhZGVyUGFnZUJhbm5lcih0b0ltcGwoYmFubmVy
UmVmKSk7Cit9CisKK3ZvaWQgV0tCdW5kbGVQYWdlU2V0Rm9vdGVyQmFubmVyKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VCYW5uZXJSZWYgYmFubmVyUmVmKQoreworICAgIHRv
SW1wbChwYWdlUmVmKS0+c2V0Rm9vdGVyUGFnZUJhbm5lcih0b0ltcGwoYmFubmVyUmVmKSk7Cit9
CisKIGJvb2wgV0tCdW5kbGVQYWdlSGFzTG9jYWxEYXRhRm9yVVJMKFdLQnVuZGxlUGFnZVJlZiBw
YWdlUmVmLCBXS1VSTFJlZiB1cmxSZWYpCiB7CiAgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+
aGFzTG9jYWxEYXRhRm9yVVJMKFdlYkNvcmU6OktVUkwoV2ViQ29yZTo6S1VSTCgpLCB0b1dURlN0
cmluZyh1cmxSZWYpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgJKHJldmlzaW9u
IDE0OTMxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzNiw2ICs0MzYsOSBAQCBXS19F
WFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VVbmluc3RhbGxQYWdlCiBXS19FWFBPUlQgdm9pZCBXS0J1
bmRsZVBhZ2VTZXRUb3BPdmVyaGFuZ0ltYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0ltYWdl
UmVmIGltYWdlKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldEJvdHRvbU92ZXJoYW5n
SW1hZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLSW1hZ2VSZWYgaW1hZ2UpOwogCitXS19FWFBP
UlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRIZWFkZXJCYW5uZXIoV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IFdLQnVuZGxlUGFnZUJhbm5lclJlZiBiYW5uZXIpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQ
YWdlU2V0Rm9vdGVyQmFubmVyKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVBhZ2VCYW5u
ZXJSZWYgYmFubmVyKTsKKwogV0tfRVhQT1JUIGJvb2wgV0tCdW5kbGVQYWdlSGFzTG9jYWxEYXRh
Rm9yVVJMKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiB1cmwpOwogV0tfRVhQT1JUIGJv
b2wgV0tCdW5kbGVQYWdlQ2FuSGFuZGxlUmVxdWVzdChXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlQmFubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUJhbm5lci5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZUJhbm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0J1bmRsZVBhZ2VC
YW5uZXIuaCIKKworI2luY2x1ZGUgIlBhZ2VCYW5uZXIuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKKworV0tUeXBlSUQgV0tCdW5kbGVQYWdlQmFubmVyR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1
cm4gdG9BUEkoUGFnZUJhbm5lcjo6QVBJVHlwZSk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUJhbm5lci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlQmFubmVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUJhbm5lci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQnVuZGxlUGFn
ZUJhbm5lcl9oCisjZGVmaW5lIFdLQnVuZGxlUGFnZUJhbm5lcl9oCisKKyNpbmNsdWRlIDxXZWJL
aXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tFdmVudC5oPgorI2luY2x1ZGUgPFdl
YktpdDIvV0tHZW9tZXRyeS5oPgorCisjaWZuZGVmIF9fY3BsdXNwbHVzCisjaW5jbHVkZSA8c3Rk
Ym9vbC5oPgorI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5k
aWYKKworLy8gUGFnZSBiYW5uZXIgY2xpZW50LgordHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdl
QmFubmVyTW91c2VEb3duQ2FsbGJhY2spKFdLQnVuZGxlUGFnZUJhbm5lclJlZiBwYWdlQmFubmVy
LCBXS1BvaW50IHBvc2l0aW9uLCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24sIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdlQmFubmVyTW91
c2VVcENhbGxiYWNrKShXS0J1bmRsZVBhZ2VCYW5uZXJSZWYgcGFnZUJhbm5lciwgV0tQb2ludCBw
b3NpdGlvbiwgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKK3R5cGVkZWYgYm9vbCAoKldLQnVuZGxlUGFnZUJhbm5lck1vdXNlTW92ZWRDYWxs
YmFjaykoV0tCdW5kbGVQYWdlQmFubmVyUmVmIHBhZ2VCYW5uZXIsIFdLUG9pbnQgcG9zaXRpb24s
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdlQmFu
bmVyTW91c2VEcmFnZ2VkQ2FsbGJhY2spKFdLQnVuZGxlUGFnZUJhbm5lclJlZiBwYWdlQmFubmVy
LCBXS1BvaW50IHBvc2l0aW9uLCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24sIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOworCitzdHJ1Y3QgV0tCdW5kbGVQYWdlQmFubmVyQ2xpZW50IHsK
KyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworICAg
IFdLQnVuZGxlUGFnZUJhbm5lck1vdXNlRG93bkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbW91c2VEb3duOworICAgIFdLQnVuZGxlUGFnZUJhbm5lck1vdXNlVXBDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VVcDsKKyAgICBXS0J1
bmRsZVBhZ2VCYW5uZXJNb3VzZU1vdmVkQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1vdXNlTW92ZWQ7CisgICAgV0tCdW5kbGVQYWdlQmFubmVyTW91c2VEcmFnZ2VkQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VzZURyYWdnZWQ7Cit9OwordHlw
ZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlQmFubmVyQ2xpZW50IFdLQnVuZGxlUGFnZUJhbm5lckNs
aWVudDsKKworZW51bSB7IGtXS0J1bmRsZVBhZ2VCYW5uZXJDbGllbnRDdXJyZW50VmVyc2lvbiA9
IDAgfTsKKyAgICAKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VCYW5uZXJHZXRUeXBl
SUQoKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdLQnVu
ZGxlUGFnZUJhbm5lcl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRs
ZVBhZ2VCYW5uZXJNYWMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQnVuZGxl
UGFnZUJhbm5lck1hY19oCisjZGVmaW5lIFdLQnVuZGxlUGFnZUJhbm5lck1hY19oCisKKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlQmFu
bmVyLmg+CisKK0BjbGFzcyBDQUxheWVyOworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAi
QyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS0J1bmRsZVBhZ2VCYW5uZXJSZWYgV0tCdW5kbGVQ
YWdlQmFubmVyQ3JlYXRlQmFubmVyV2l0aENBTGF5ZXIoQ0FMYXllciAqbGF5ZXIsIGludCBoZWln
aHQsIFdLQnVuZGxlUGFnZUJhbm5lckNsaWVudCAqIGNsaWVudCk7CisKK1dLX0VYUE9SVCBDQUxh
eWVyICogV0tCdW5kbGVQYWdlQmFubmVyR2V0TGF5ZXIoV0tCdW5kbGVQYWdlQmFubmVyUmVmIHBh
Z2VCYW5uZXIpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisKKyNlbmRpZiAv
KiBXS0J1bmRsZVBhZ2VCYW5uZXJNYWNfaCAqLwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJh
bm5lck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0J1bmRsZVBhZ2VCYW5uZXJNYWMuaCIK
KworI2luY2x1ZGUgIlBhZ2VCYW5uZXIuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNs
dWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2NsYXNz
IFBhZ2VCYW5uZXJDbGllbnRJbXBsIDogcHVibGljIFBhZ2VCYW5uZXI6OkNsaWVudCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZUJhbm5lckNsaWVudEltcGw+IGNyZWF0ZShX
S0J1bmRsZVBhZ2VCYW5uZXJDbGllbnQqIGNsaWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgUGFnZUJhbm5lckNsaWVudEltcGwoY2xpZW50KSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIGV4cGxpY2l0IFBhZ2VCYW5uZXJDbGllbnRJbXBsKFdLQnVuZGxlUGFnZUJhbm5l
ckNsaWVudCogY2xpZW50KQorICAgICAgICA6IG1fY2xpZW50KCkKKyAgICB7CisgICAgICAgIGlm
IChjbGllbnQpCisgICAgICAgICAgICBtX2NsaWVudCA9ICpjbGllbnQ7CisgICAgfQorCisgICAg
Ly8gUGFnZUJhbm5lcjo6Q2xpZW50LgorICAgIHZpcnR1YWwgdm9pZCBwYWdlQmFubmVyRGVzdHJv
eWVkKFBhZ2VCYW5uZXIqKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgfQorICAg
IAorICAgIHZpcnR1YWwgYm9vbCBtb3VzZUV2ZW50KFBhZ2VCYW5uZXIqIHBhZ2VCYW5uZXIsIFdl
YkV2ZW50OjpUeXBlIHR5cGUsIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBidXR0b24sIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb3NpdGlvbikKKyAgICB7CisgICAgICAgIHN3aXRjaCAodHlwZSkg
eworICAgICAgICBjYXNlIFdlYkV2ZW50OjpNb3VzZURvd246IHsKKyAgICAgICAgICAgIGlmICgh
bV9jbGllbnQubW91c2VEb3duKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICAgICAgcmV0dXJuIG1fY2xpZW50Lm1vdXNlRG93bih0b0FQSShwYWdlQmFubmVyKSwgdG9B
UEkocG9zaXRpb24pLCB0b0FQSShidXR0b24pLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIFdlYkV2ZW50OjpNb3VzZVVwOiB7CisgICAgICAgICAgICBpZiAo
IW1fY2xpZW50Lm1vdXNlVXApCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgICAgICByZXR1cm4gbV9jbGllbnQubW91c2VVcCh0b0FQSShwYWdlQmFubmVyKSwgdG9BUEko
cG9zaXRpb24pLCB0b0FQSShidXR0b24pLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIFdlYkV2ZW50OjpNb3VzZU1vdmU6IHsKKyAgICAgICAgICAgIGlmIChi
dXR0b24gPT0gV2ViTW91c2VFdmVudDo6Tm9CdXR0b24pIHsKKyAgICAgICAgICAgICAgICBpZiAo
IW1fY2xpZW50Lm1vdXNlTW92ZWQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICAgICAgICAgIHJldHVybiBtX2NsaWVudC5tb3VzZU1vdmVkKHRvQVBJKHBhZ2VC
YW5uZXIpLCB0b0FQSShwb3NpdGlvbiksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBUaGlzIGlzIGEgTW91c2VNb3ZlIGV2ZW50IHdpdGggYSBt
b3VzZSBidXR0b24gcHJlc3NlZC4gQ2FsbCBtb3VzZURyYWdnZWQuCisgICAgICAgICAgICBpZiAo
IW1fY2xpZW50Lm1vdXNlRHJhZ2dlZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgICAgIHJldHVybiBtX2NsaWVudC5tb3VzZURyYWdnZWQodG9BUEkocGFnZUJhbm5l
ciksIHRvQVBJKHBvc2l0aW9uKSwgdG9BUEkoYnV0dG9uKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7
CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIFdLQnVuZGxlUGFnZUJhbm5lckNsaWVudCBt
X2NsaWVudDsKK307CisKK1dLQnVuZGxlUGFnZUJhbm5lclJlZiBXS0J1bmRsZVBhZ2VCYW5uZXJD
cmVhdGVCYW5uZXJXaXRoQ0FMYXllcihDQUxheWVyICpsYXllciwgaW50IGhlaWdodCwgV0tCdW5k
bGVQYWdlQmFubmVyQ2xpZW50ICogd2tDbGllbnQpCit7CisgICAgaWYgKHdrQ2xpZW50ICYmIHdr
Q2xpZW50LT52ZXJzaW9uKQorICAgICAgICByZXR1cm4gMDsKKworICAgIE93blB0cjxQYWdlQmFu
bmVyQ2xpZW50SW1wbD4gY2xpZW50SW1wbCA9IFBhZ2VCYW5uZXJDbGllbnRJbXBsOjpjcmVhdGUo
d2tDbGllbnQpOworICAgIHJldHVybiB0b0FQSShQYWdlQmFubmVyOjpjcmVhdGUobGF5ZXIsIGhl
aWdodCwgY2xpZW50SW1wbC5sZWFrUHRyKCkpLmxlYWtSZWYoKSk7Cit9CisKK0NBTGF5ZXIgKiBX
S0J1bmRsZVBhZ2VCYW5uZXJHZXRMYXllcihXS0J1bmRsZVBhZ2VCYW5uZXJSZWYgcGFnZUJhbm5l
cikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHBhZ2VCYW5uZXIpLT5sYXllcigpOworfQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VCYW5uZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlQmFubmVyLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlQmFu
bmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhZ2VCYW5uZXIuaCIKKworI2luY2x1ZGUgIldl
YlBhZ2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1BhZ2VCYW5uZXI6On5QYWdlQmFubmVy
KCkKK3sKKyAgICBBU1NFUlQoIW1fd2ViUGFnZSk7CisgICAgbV9jbGllbnQtPnBhZ2VCYW5uZXJE
ZXN0cm95ZWQodGhpcyk7Cit9CisKKyNpZiAhUExBVEZPUk0oTUFDKQordm9pZCBQYWdlQmFubmVy
OjphZGRUb1BhZ2UoVHlwZSwgV2ViUGFnZSopCit7Cit9CisKK3ZvaWQgUGFnZUJhbm5lcjo6ZGV0
YWNoRnJvbVBhZ2UoKQoreworfQorCit2b2lkIFBhZ2VCYW5uZXI6OmRpZENoYW5nZURldmljZVNj
YWxlRmFjdG9yKGZsb2F0KQoreworfQorCitib29sIFBhZ2VCYW5uZXI6Om1vdXNlRXZlbnQoY29u
c3QgV2ViTW91c2VFdmVudCYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1BhZ2VCYW5uZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvUGFnZUJhbm5lci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1BhZ2VCYW5uZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQYWdlQmFubmVyX2gKKyNkZWZpbmUgUGFnZUJhbm5l
cl9oCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJFdmVudC5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKKyNpZiBQTEFURk9STShNQUMpCitPQkpDX0NMQVNT
IENBTGF5ZXI7CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2VuZGlmCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBQYWdlQmFubmVyIDogcHVibGlj
IFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZUJ1bmRsZVBhZ2VCYW5uZXI+IHsKK3B1Ymxp
YzoKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBOb3RTZXQsCisgICAgICAgIEhlYWRlciwKKyAg
ICAgICAgRm9vdGVyCisgICAgfTsKKworICAgIGNsYXNzIENsaWVudCB7CisgICAgcHJvdGVjdGVk
OgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KKyAgICAKKyAgICBwdWJsaWM6CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYWdlQmFubmVyRGVzdHJveWVkKFBhZ2VCYW5uZXIqKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgYm9vbCBtb3VzZUV2ZW50KFBhZ2VCYW5uZXIqLCBXZWJFdmVudDo6VHlw
ZSwgV2ViTW91c2VFdmVudDo6QnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpID0gMDsK
KyAgICB9OworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBhZ2VC
YW5uZXI+IGNyZWF0ZShDQUxheWVyKiwgaW50IGhlaWdodCwgQ2xpZW50Kik7CisgICAgQ0FMYXll
ciAqbGF5ZXIoKTsKKyNlbmRpZgorCisgICAgdmlydHVhbCB+UGFnZUJhbm5lcigpOworCisgICAg
dm9pZCBhZGRUb1BhZ2UoVHlwZSwgV2ViUGFnZSopOworICAgIHZvaWQgZGV0YWNoRnJvbVBhZ2Uo
KTsKKworICAgIGJvb2wgbW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jik7CisgICAgdm9p
ZCBkaWRDaGFuZ2VEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3Rvcik7CisKK3ByaXZh
dGU6CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGV4cGxpY2l0IFBhZ2VCYW5uZXIoQ0FMYXllcios
IGludCBoZWlnaHQsIENsaWVudCopOworI2VuZGlmCisKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBD
bGllbnQqIG1fY2xpZW50OworICAgIFdlYlBhZ2UqIG1fd2ViUGFnZTsKKworI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9sYXllcjsKKyAgICBpbnQgbV9oZWlnaHQ7
CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUGFnZUJh
bm5lcl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCShyZXZpc2lvbiAxNDkzMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNs
dWRlICJMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIKICNpbmNs
dWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJQ
YWdlQmFubmVyLmgiCiAjaW5jbHVkZSAiUGFnZU92ZXJsYXkuaCIKICNpbmNsdWRlICJQbHVnaW5Q
cm94eS5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKQEAgLTQyNCw2ICs0MjUsMTEgQEAgV2Vi
UGFnZTo6fldlYlBhZ2UoKQogICAgIGZvciAoSGFzaFNldDxQbHVnaW5WaWV3Kj46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbV9wbHVnaW5WaWV3cy5iZWdpbigpLCBlbmQgPSBtX3BsdWdpblZpZXdzLmVu
ZCgpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICgqaXQpLT53ZWJQYWdlRGVzdHJveWVkKCk7
CiAKKyAgICBpZiAobV9oZWFkZXJCYW5uZXIpCisgICAgICAgIG1faGVhZGVyQmFubmVyLT5kZXRh
Y2hGcm9tUGFnZSgpOworICAgIGlmIChtX2Zvb3RlckJhbm5lcikKKyAgICAgICAgbV9mb290ZXJC
YW5uZXItPmRldGFjaEZyb21QYWdlKCk7CisKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2U6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9wYWdlSUQpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRvbmUgaW4gdGhl
IG9iamVjdCBkZXN0cnVjdG9ycywgYW5kIHRoZSBvYmplY3RzIHRoZW1zZWx2ZXMgc2hvdWxkIGJl
IG1lc3NhZ2UgcmVjZWl2ZXJzLgpAQCAtMTQwMyw2ICsxNDA5LDM4IEBAIHZvaWQgV2ViUGFnZTo6
dW5pbnN0YWxsUGFnZU92ZXJsYXkoUGFnZU8KICAgICBtX2RyYXdpbmdBcmVhLT5kaWRVbmluc3Rh
bGxQYWdlT3ZlcmxheShwYWdlT3ZlcmxheSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0SGVhZGVy
UGFnZUJhbm5lcihQYXNzUmVmUHRyPFBhZ2VCYW5uZXI+IHBhZ2VCYW5uZXIpCit7CisgICAgaWYg
KG1faGVhZGVyQmFubmVyKSB7CisgICAgICAgIG1faGVhZGVyQmFubmVyLT5kZXRhY2hGcm9tUGFn
ZSgpOworICAgICAgICBtX2hlYWRlckJhbm5lciA9IDA7CisgICAgfQorCisgICAgbV9oZWFkZXJC
YW5uZXIgPSBwYWdlQmFubmVyOworICAgIG1faGVhZGVyQmFubmVyLT5hZGRUb1BhZ2UoUGFnZUJh
bm5lcjo6SGVhZGVyLCB0aGlzKTsKK30KKworUGFnZUJhbm5lciogV2ViUGFnZTo6aGVhZGVyUGFn
ZUJhbm5lcigpCit7CisgICAgcmV0dXJuIG1faGVhZGVyQmFubmVyLmdldCgpOworfQorCit2b2lk
IFdlYlBhZ2U6OnNldEZvb3RlclBhZ2VCYW5uZXIoUGFzc1JlZlB0cjxQYWdlQmFubmVyPiBwYWdl
QmFubmVyKQoreworICAgIGlmIChtX2Zvb3RlckJhbm5lcikgeworICAgICAgICBtX2Zvb3RlckJh
bm5lci0+ZGV0YWNoRnJvbVBhZ2UoKTsKKyAgICAgICAgbV9mb290ZXJCYW5uZXIgPSAwOworICAg
IH0KKworICAgIG1fZm9vdGVyQmFubmVyID0gcGFnZUJhbm5lcjsKKyAgICBtX2Zvb3RlckJhbm5l
ci0+YWRkVG9QYWdlKFBhZ2VCYW5uZXI6OkZvb3RlciwgdGhpcyk7Cit9CisKK1BhZ2VCYW5uZXIq
IFdlYlBhZ2U6OmZvb3RlclBhZ2VCYW5uZXIoKQoreworICAgIHJldHVybiBtX2Zvb3RlckJhbm5l
ci5nZXQoKTsKK30KKwogUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c2NhbGVkU25hcHNo
b3RXaXRoT3B0aW9ucyhjb25zdCBJbnRSZWN0JiByZWN0LCBkb3VibGUgc2NhbGVGYWN0b3IsIFNu
YXBzaG90T3B0aW9ucyBvcHRpb25zKQogewogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9t
YWluRnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCk7CkBAIC0xNTkzLDYgKzE2MzEsMTEgQEAgdm9p
ZCBXZWJQYWdlOjptb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAorICAgIGlmICghaGFuZGxlZCAmJiBtX2hlYWRlckJhbm5lcikKKyAgICAg
ICAgaGFuZGxlZCA9IG1faGVhZGVyQmFubmVyLT5tb3VzZUV2ZW50KG1vdXNlRXZlbnQpOworICAg
IGlmICghaGFuZGxlZCAmJiBtX2Zvb3RlckJhbm5lcikKKyAgICAgICAgaGFuZGxlZCA9IG1fZm9v
dGVyQmFubmVyLT5tb3VzZUV2ZW50KG1vdXNlRXZlbnQpOworCiAgICAgaWYgKCFoYW5kbGVkICYm
IGNhbkhhbmRsZVVzZXJFdmVudHMoKSkgewogICAgICAgICBDdXJyZW50RXZlbnQgY3VycmVudEV2
ZW50KG1vdXNlRXZlbnQpOwogCkBAIC0xNjE4LDYgKzE2NjEsMTAgQEAgdm9pZCBXZWJQYWdlOjpt
b3VzZUV2ZW50U3luY0ZvclRlc3RpbmcoYwogICAgICAgICAgICAgaWYgKChoYW5kbGVkID0gKCpp
dCktPm1vdXNlRXZlbnQobW91c2VFdmVudCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
IH0KKyAgICBpZiAoIWhhbmRsZWQgJiYgbV9oZWFkZXJCYW5uZXIpCisgICAgICAgIGhhbmRsZWQg
PSBtX2hlYWRlckJhbm5lci0+bW91c2VFdmVudChtb3VzZUV2ZW50KTsKKyAgICBpZiAoIWhhbmRs
ZWQgJiYgbV9mb290ZXJCYW5uZXIpCisgICAgICAgIGhhbmRsZWQgPSBtX2Zvb3RlckJhbm5lci0+
bW91c2VFdmVudChtb3VzZUV2ZW50KTsKIAogICAgIGlmICghaGFuZGxlZCkgewogICAgICAgICBD
dXJyZW50RXZlbnQgY3VycmVudEV2ZW50KG1vdXNlRXZlbnQpOwpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAxNDkzMTgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzEsNiArMTMxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBEcmF3aW5nQXJl
YTsKIGNsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOworY2xhc3MgUGFnZUJhbm5lcjsKIGNsYXNzIFBh
Z2VPdmVybGF5OwogY2xhc3MgUGx1Z2luVmlldzsKIGNsYXNzIFNlc3Npb25TdGF0ZTsKQEAgLTM4
Myw3ICszODQsMTMgQEAgcHVibGljOgogICAgIHZvaWQgdW5pbnN0YWxsUGFnZU92ZXJsYXkoUGFn
ZU92ZXJsYXkqLCBib29sIHNob3VsZEZhZGVPdXQgPSBmYWxzZSk7CiAgICAgYm9vbCBoYXNQYWdl
T3ZlcmxheSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZU92ZXJsYXlzLnNpemUoKTsgfQogICAgIFBh
Z2VPdmVybGF5TGlzdCYgcGFnZU92ZXJsYXlzKCkgeyByZXR1cm4gbV9wYWdlT3ZlcmxheXM7IH0K
LSAgICAKKworICAgIHZvaWQgc2V0SGVhZGVyUGFnZUJhbm5lcihQYXNzUmVmUHRyPFBhZ2VCYW5u
ZXI+KTsKKyAgICBQYWdlQmFubmVyKiBoZWFkZXJQYWdlQmFubmVyKCk7CisgICAgdm9pZCBzZXRG
b290ZXJQYWdlQmFubmVyKFBhc3NSZWZQdHI8UGFnZUJhbm5lcj4pOworICAgIFBhZ2VCYW5uZXIq
IGZvb3RlclBhZ2VCYW5uZXIoKTsKKworCiAgICAgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuVG9X
aW5kb3coY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHdp
bmRvd1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKIApAQCAtOTA2LDYgKzkxMyw5
IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1faGVhZGVyTGF5ZXI7CiAgICAg
UmV0YWluUHRyPENBTGF5ZXI+IG1fZm9vdGVyTGF5ZXI7CiAKKyAgICBSZWZQdHI8UGFnZUJhbm5l
cj4gbV9oZWFkZXJCYW5uZXI7CisgICAgUmVmUHRyPFBhZ2VCYW5uZXI+IG1fZm9vdGVyQmFubmVy
OworCiAgICAgV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCogbV9rZXlib2FyZEV2ZW50QmVpbmdJbnRl
cnByZXRlZDsKIAogI2VsaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiAoUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShFRkwpKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9QYWdlQmFubmVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvUGFnZUJhbm5lck1hYy5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGFnZUJhbm5lck1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJQYWdlQmFubmVyLmgiCisKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5
ZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitQYXNzUmVmUHRyPFBhZ2VCYW5uZXI+IFBhZ2VCYW5uZXI6OmNyZWF0ZShDQUxheWVyKiBsYXll
ciwgaW50IGhlaWdodCwgQ2xpZW50KiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBQYWdlQmFubmVyKGxheWVyLCBoZWlnaHQsIGNsaWVudCkpOworfQorCitQYWdlQmFubmVyOjpQ
YWdlQmFubmVyKENBTGF5ZXIqIGxheWVyLCBpbnQgaGVpZ2h0LCBDbGllbnQqIGNsaWVudCkKKyAg
ICA6IG1fdHlwZShOb3RTZXQpCisgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3dlYlBh
Z2UoMCkKKyAgICAsIG1fbGF5ZXIobGF5ZXIpCisgICAgLCBtX2hlaWdodChoZWlnaHQpCit7Cit9
CisKK3ZvaWQgUGFnZUJhbm5lcjo6YWRkVG9QYWdlKFR5cGUgdHlwZSwgV2ViUGFnZSogd2ViUGFn
ZSkKK3sKKyAgICBtX3R5cGUgPSB0eXBlOworICAgIG1fd2ViUGFnZSA9IHdlYlBhZ2U7CisKKyAg
ICBBU1NFUlQobV90eXBlICE9IE5vdFNldCk7CisgICAgQVNTRVJUKG1fd2ViUGFnZSk7CisKKyAg
ICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgSGVhZGVyOiB7CisgICAgICAgIEZyYW1lVmll
dyogZnJhbWVWaWV3ID0gbV93ZWJQYWdlLT5tYWluRnJhbWVWaWV3KCk7CisgICAgICAgIGlmICgh
ZnJhbWVWaWV3KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZyYW1lVmlldy0+c2V0
SGVhZGVySGVpZ2h0KG1faGVpZ2h0KTsKKworICAgICAgICBHcmFwaGljc0xheWVyKiBwYXJlbnRM
YXllciA9IGZyYW1lVmlldy0+c2V0V2FudHNMYXllckZvckhlYWRlcihtX2xheWVyKTsKKyAgICAg
ICAgaWYgKCFwYXJlbnRMYXllcikgeworICAgICAgICAgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgp
LT5yZW1vdmVMYXlvdXRNaWxlc3RvbmVzKERpZEZpcnN0Rmx1c2hGb3JIZWFkZXJMYXllcik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX3dlYlBhZ2UtPmNvcmVQ
YWdlKCktPmFkZExheW91dE1pbGVzdG9uZXMoRGlkRmlyc3RGbHVzaEZvckhlYWRlckxheWVyKTsK
KworICAgICAgICBtX2xheWVyLmdldCgpLmJvdW5kcyA9IENHUmVjdE1ha2UoMCwgMCwgcGFyZW50
TGF5ZXItPnNpemUoKS53aWR0aCgpLCBwYXJlbnRMYXllci0+c2l6ZSgpLmhlaWdodCgpKTsKKyAg
ICAgICAgW3BhcmVudExheWVyLT5wbGF0Zm9ybUxheWVyKCkgYWRkU3VibGF5ZXI6bV9sYXllci5n
ZXQoKV07CisKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRm9vdGVyOiB7CisgICAg
ICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV93ZWJQYWdlLT5tYWluRnJhbWVWaWV3KCk7Cisg
ICAgICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZy
YW1lVmlldy0+c2V0Rm9vdGVySGVpZ2h0KG1faGVpZ2h0KTsKKworICAgICAgICBHcmFwaGljc0xh
eWVyKiBwYXJlbnRMYXllciA9IGZyYW1lVmlldy0+c2V0V2FudHNMYXllckZvckZvb3RlcihtX2xh
eWVyKTsKKyAgICAgICAgaWYgKCFwYXJlbnRMYXllcikKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBtX2xheWVyLmdldCgpLmJvdW5kcyA9IENHUmVjdE1ha2UoMCwgMCwgcGFyZW50TGF5
ZXItPnNpemUoKS53aWR0aCgpLCBwYXJlbnRMYXllci0+c2l6ZSgpLmhlaWdodCgpKTsKKyAgICAg
ICAgW3BhcmVudExheWVyLT5wbGF0Zm9ybUxheWVyKCkgYWRkU3VibGF5ZXI6bV9sYXllci5nZXQo
KV07CisKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTm90U2V0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgUGFnZUJhbm5lcjo6ZGV0YWNo
RnJvbVBhZ2UoKQoreworICAgIG1fdHlwZSA9IE5vdFNldDsKKyAgICBtX3dlYlBhZ2UgPSAwOwor
fQorCit2b2lkIFBhZ2VCYW5uZXI6OmRpZENoYW5nZURldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNj
YWxlRmFjdG9yKQoreworICAgIG1fbGF5ZXIuZ2V0KCkuY29udGVudHNTY2FsZSA9IHNjYWxlRmFj
dG9yOworICAgIFttX2xheWVyLmdldCgpIHNldE5lZWRzRGlzcGxheV07Cit9CisKK2Jvb2wgUGFn
ZUJhbm5lcjo6bW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQorewor
ICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV93ZWJQYWdlLT5tYWluRnJhbWVWaWV3KCk7Cisg
ICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEludFBvaW50
IHBvc2l0aW9uSW5CYW5uZXJTcGFjZTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2Fz
ZSBIZWFkZXI6IHsKKyAgICAgICAgcG9zaXRpb25JbkJhbm5lclNwYWNlID0gZnJhbWVWaWV3LT5y
b290Vmlld1RvVG90YWxDb250ZW50cyhtb3VzZUV2ZW50LnBvc2l0aW9uKCkpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBGb290ZXI6IHsKKyAgICAgICAgcG9zaXRpb25JbkJhbm5l
clNwYWNlID0gZnJhbWVWaWV3LT5yb290Vmlld1RvVG90YWxDb250ZW50cyhtb3VzZUV2ZW50LnBv
c2l0aW9uKCkpIC0gSW50U2l6ZSgwLCBmcmFtZVZpZXctPnRvdGFsQ29udGVudHNTaXplKCkuaGVp
Z2h0KCkgLSBtX2hlaWdodCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIE5vdFNl
dDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgaWYgKHBvc2l0
aW9uSW5CYW5uZXJTcGFjZS55KCkgPCAwIHx8IHBvc2l0aW9uSW5CYW5uZXJTcGFjZS55KCkgPiBt
X2hlaWdodCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fY2xpZW50LT5t
b3VzZUV2ZW50KHRoaXMsIG1vdXNlRXZlbnQudHlwZSgpLCBtb3VzZUV2ZW50LmJ1dHRvbigpLCBw
b3NpdGlvbkluQmFubmVyU3BhY2UpOworfQorCitDQUxheWVyICpQYWdlQmFubmVyOjpsYXllcigp
Cit7CisgICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQkocmV2aXNpb24gMTQ5MzE4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJFZGl0b3JTdGF0ZS5o
IgogI2ltcG9ydCAiUERGS2l0SW1wb3J0cy5oIgorI2ltcG9ydCAiUGFnZUJhbm5lci5oIgogI2lt
cG9ydCAiUGx1Z2luVmlldy5oIgogI2ltcG9ydCAiUHJpbnRJbmZvLmgiCiAjaW1wb3J0ICJXS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0LmgiCkBAIC01MCwyMSArNTEsMjEgQEAKICNpbXBvcnQg
PFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbnZlcnRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9I
aXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvTmV0d29ya2luZ0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUGx1Z2luRG9jdW1lbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyT2JqZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jl
bmRlclN0eWxlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1Njcm9sbFZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVJbmhlcml0ZWRE
YXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9XaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlVW5pdHMu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvV2luZG93c0tleWJvYXJkQ29kZXMuaD4KICNpbXBvcnQgPFdl
YktpdFN5c3RlbUludGVyZmFjZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTg4
MSw2ICs4ODIsMTEgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVIZWFkZXJBbmRGb290ZXJMYXllcgog
ICAgICAgICBtX2Zvb3RlckxheWVyLmdldCgpLmNvbnRlbnRzU2NhbGUgPSBzY2FsZUZhY3RvcjsK
ICAgICAgICAgW21fZm9vdGVyTGF5ZXIuZ2V0KCkgc2V0TmVlZHNEaXNwbGF5XTsKICAgICB9Cisg
ICAgCisgICAgaWYgKG1faGVhZGVyQmFubmVyKQorICAgICAgICBtX2hlYWRlckJhbm5lci0+ZGlk
Q2hhbmdlRGV2aWNlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IpOworICAgIGlmIChtX2Zvb3RlckJh
bm5lcikKKyAgICAgICAgbV9mb290ZXJCYW5uZXItPmRpZENoYW5nZURldmljZVNjYWxlRmFjdG9y
KHNjYWxlRmFjdG9yKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGlu
Z1BERkRvY3VtZW50KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZv
LCBWZWN0b3I8SW50UmVjdD4mIHJlc3VsdFBhZ2VSZWN0cykK
</data>
<flag name="review"
          id="221580"
          type_id="1"
          status="+"
          setter="bdakin"
    />
    <flag name="commit-queue"
          id="221581"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>