<?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>43427</bug_id>
          
          <creation_ts>2010-08-03 09:24:57 -0700</creation_ts>
          <short_desc>[Qt] Move Qt&apos;s popup menu implementation from WebCore to WebKit layer</short_desc>
          <delta_ts>2010-08-25 00:53:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>43428</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Luiz Agostini">luiz</reporter>
          <assigned_to name="Luiz Agostini">luiz</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>259502</commentid>
    <comment_count>0</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-08-03 09:24:57 -0700</bug_when>
    <thetext>This is the last preparation step before going into actual WebKit2 popup menu API.

Now that the popup menu classes in WebCore/platform has changed a lot (bug 42592), QtAbstarctWebPopup became redundant and unnecessary. There is no need to keep any Qt specific code for popup menus in WebCore/platform and some layering violations may be removed.

No changes are needed in platform plugins interface. This change will not affect plugins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260766</commentid>
    <comment_count>1</comment_count>
      <attachid>63616</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-08-05 12:24:05 -0700</bug_when>
    <thetext>Created attachment 63616
patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261184</commentid>
    <comment_count>2</comment_count>
      <attachid>63616</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-06 04:16:06 -0700</bug_when>
    <thetext>Comment on attachment 63616
patch 1

Clearing flags on attachment: 63616

Committed r64829: &lt;http://trac.webkit.org/changeset/64829&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261185</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-06 04:16:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261244</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-06 07:30:33 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/64829 might have broken GTK Linux 32-bit Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/64829
http://trac.webkit.org/changeset/64830</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63616</attachid>
            <date>2010-08-05 12:24:05 -0700</date>
            <delta_ts>2010-08-06 04:16:06 -0700</delta_ts>
            <desc>patch 1</desc>
            <filename>0001-Qt-Move-Qt-s-popup-menu-implementation-from-WebCore-.patch</filename>
            <type>text/plain</type>
            <size>52918</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSAwOWFhZTQ1YjNmM2E5YjBhZGQxYzBkOWRjNDU1Y2E0YThlOWQ4OTg0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFRodSwgNSBBdWcgMjAxMCAxNjowMzo1MSAtMDMwMApTdWJqZWN0OiBbUEFU
Q0hdIFtRdF0gTW92ZSBRdCdzIHBvcHVwIG1lbnUgaW1wbGVtZW50YXRpb24gZnJvbSBXZWJDb3Jl
IHRvIFdlYktpdCBsYXllcgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQzNDI3CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkFmdGVyIFBvcHVwTWVudSBjaGFu
Z2VzIGluIGJ1ZyA0MjU5MiBjbGFzcyBRdEFic3RyYWN0V2ViUG9wdXAgYmVjYW1lIHVuZWNlc3Nh
cnkgYW5kCnRoZXJlIGlzIG5vIG5lZWQgdG8ga2VlcCBhbnkgUXQgc3BlY2lmaWMgY29kZSBmb3Ig
cG9wdXAgbWVudXMgaW4gV2ViQ29yZS9wbGF0Zm9ybS9xdC4KClBvcHVwTWVudVF0IGhhcyBiZWVu
IG1vdmVkIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS9xdCB0byBXZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQgYW5kCmFzc3VtZWQgdGhlIHJlc3BvbnNpYmlsaXRpZXMgb2YgUXRBYnN0cmFjdFdlYlBvcHVw
LiBTZWFyY2hQb3B1cE1lbnVRdCBoYXMgYmVlbiBtb3ZlZAp0byBXZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQgYXMgd2VsbC4KCldlYkNvcmU6CgpBbGwgY2xhc3NlcyB0aGF0IHByZXZpb3VzbHkgaW5o
ZXJpdGVkIGZyb20gUXRBYnN0cmFjdFdlYlBvcHVwIG5vdyBpbmhlcml0IGZyb20KUVdlYlNlbGVj
dE1ldGhvZCBhbmQgUXRQbGF0Zm9ybVBsdWdpbidzIG1ldGhvZCBjcmVhdGVTZWxlY3RJbnB1dE1l
dGhvZCBub3cgcmV0dXJucyBhbgppbnN0YW5jZSBvZiBjbGFzcyBRV2ViU2VsZWN0TWV0aG9kIGlu
c3RlYWQgb2YgUXRBYnN0cmFjdFdlYlBvcHVwLgoKKiBXZWJDb3JlLnBybzoKKiBwbGF0Zm9ybS9x
dC9Qb3B1cE1lbnVRdC5jcHA6IFJlbW92ZWQuCiogcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuaDog
UmVtb3ZlZC4KKiBwbGF0Zm9ybS9xdC9RdEFic3RyYWN0V2ViUG9wdXAuY3BwOiBSZW1vdmVkLgoq
IHBsYXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5oOiBSZW1vdmVkLgoqIHBsYXRmb3JtL3F0
L1NlYXJjaFBvcHVwTWVudVF0LmNwcDogUmVtb3ZlZC4KKiBwbGF0Zm9ybS9xdC9TZWFyY2hQb3B1
cE1lbnVRdC5oOiBSZW1vdmVkLgoKV2ViS2l0L3F0OgoKQWxsIGNsYXNzZXMgdGhhdCBwcmV2aW91
c2x5IGluaGVyaXRlZCBmcm9tIFF0QWJzdHJhY3RXZWJQb3B1cCBub3cgaW5oZXJpdCBmcm9tClFX
ZWJTZWxlY3RNZXRob2QgYW5kIFF0UGxhdGZvcm1QbHVnaW4ncyBtZXRob2QgY3JlYXRlU2VsZWN0
SW5wdXRNZXRob2Qgbm93IHJldHVybnMgYW4KaW5zdGFuY2Ugb2YgY2xhc3MgUVdlYlNlbGVjdE1l
dGhvZCBpbnN0ZWFkIG9mIFF0QWJzdHJhY3RXZWJQb3B1cC4KCiogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwOgooV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVNlbGVjdFBv
cHVwKToKKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjcmVhdGVQb3B1cE1lbnUpOgooV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudSk6CiogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuaDoKKiBXZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVRdC5jcHA6IEFk
ZGVkLgooU2VsZWN0RGF0YTo6U2VsZWN0RGF0YSk6CihTZWxlY3REYXRhOjppdGVtVGV4dCk6CihT
ZWxlY3REYXRhOjppdGVtVG9vbFRpcCk6CihTZWxlY3REYXRhOjppdGVtSXNFbmFibGVkKToKKFNl
bGVjdERhdGE6Oml0ZW1Db3VudCk6CihTZWxlY3REYXRhOjppdGVtSXNTZWxlY3RlZCk6CihTZWxl
Y3REYXRhOjptdWx0aXBsZSk6CihTZWxlY3REYXRhOjppdGVtVHlwZSk6CihXZWJDb3JlOjpQb3B1
cE1lbnVRdDo6UG9wdXBNZW51UXQpOgooV2ViQ29yZTo6UG9wdXBNZW51UXQ6On5Qb3B1cE1lbnVR
dCk6CihXZWJDb3JlOjpQb3B1cE1lbnVRdDo6ZGlzY29ubmVjdENsaWVudCk6CihXZWJDb3JlOjpQ
b3B1cE1lbnVRdDo6c2hvdyk6CihXZWJDb3JlOjpQb3B1cE1lbnVRdDo6ZGlkSGlkZSk6CihXZWJD
b3JlOjpQb3B1cE1lbnVRdDo6aGlkZSk6CihXZWJDb3JlOjpQb3B1cE1lbnVRdDo6dXBkYXRlRnJv
bUVsZW1lbnQpOgooV2ViQ29yZTo6UG9wdXBNZW51UXQ6OnNlbGVjdEl0ZW0pOgoqIFdlYkNvcmVT
dXBwb3J0L1BvcHVwTWVudVF0Lmg6IEFkZGVkLgoqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tX
ZWJQb3B1cC5jcHA6CihXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXBDb21ibzo6aGlkZVBvcHVw
KToKKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6UXRGYWxsYmFja1dlYlBvcHVwKToKKFdl
YkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6c2hvdyk6CihXZWJDb3JlOjpRdEZhbGxiYWNrV2Vi
UG9wdXA6OnBvcHVsYXRlKToKKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6YWN0aXZlQ2hh
bmdlZCk6CihXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnBhZ2VDbGllbnQpOgoqIFdlYkNv
cmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5oOgooV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBv
cHVwOjpzZXRHZW9tZXRyeSk6CihXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6Omdlb21ldHJ5
KToKKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6c2V0Rm9udCk6CihXZWJDb3JlOjpRdEZh
bGxiYWNrV2ViUG9wdXA6OmZvbnQpOgoqIFdlYkNvcmVTdXBwb3J0L1F0TWFlbW9XZWJQb3B1cC5j
cHA6CihXZWJDb3JlOjpNYWVtbzVQb3B1cDo6cG9wdWxhdGVMaXN0KToKKFdlYkNvcmU6OlF0TWFl
bW9XZWJQb3B1cDo6UXRNYWVtb1dlYlBvcHVwKToKKFdlYkNvcmU6OlF0TWFlbW9XZWJQb3B1cDo6
Y3JlYXRlU2luZ2xlU2VsZWN0aW9uUG9wdXApOgooV2ViQ29yZTo6UXRNYWVtb1dlYlBvcHVwOjpj
cmVhdGVNdWx0aXBsZVNlbGVjdGlvblBvcHVwKToKKFdlYkNvcmU6OlF0TWFlbW9XZWJQb3B1cDo6
Y3JlYXRlUG9wdXApOgooV2ViQ29yZTo6UXRNYWVtb1dlYlBvcHVwOjpzaG93KToKKFdlYkNvcmU6
OlF0TWFlbW9XZWJQb3B1cDo6cG9wdXBDbG9zZWQpOgooV2ViQ29yZTo6UXRNYWVtb1dlYlBvcHVw
OjppdGVtQ2xpY2tlZCk6CihXZWJDb3JlOjpNYWVtbzVTaW5nbGVTZWxlY3Rpb25Qb3B1cDo6TWFl
bW81U2luZ2xlU2VsZWN0aW9uUG9wdXApOgooV2ViQ29yZTo6TWFlbW81TXVsdGlwbGVTZWxlY3Rp
b25Qb3B1cDo6TWFlbW81TXVsdGlwbGVTZWxlY3Rpb25Qb3B1cCk6CiogV2ViQ29yZVN1cHBvcnQv
UXRNYWVtb1dlYlBvcHVwLmg6CihXZWJDb3JlOjpNYWVtbzVQb3B1cDo6TWFlbW81UG9wdXApOgoq
IFdlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uY3BwOgooV2ViQ29yZTo6UXRQbGF0Zm9y
bVBsdWdpbjo6Y3JlYXRlU2VsZWN0SW5wdXRNZXRob2QpOgoqIFdlYkNvcmVTdXBwb3J0L1F0UGxh
dGZvcm1QbHVnaW4uaDoKKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVRdC5jcHA6IEFk
ZGVkLgooV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51UXQ6OlNlYXJjaFBvcHVwTWVudVF0KToKKFdl
YkNvcmU6OlNlYXJjaFBvcHVwTWVudVF0Ojpwb3B1cE1lbnUpOgooV2ViQ29yZTo6U2VhcmNoUG9w
dXBNZW51UXQ6OnNhdmVSZWNlbnRTZWFyY2hlcyk6CihXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVR
dDo6bG9hZFJlY2VudFNlYXJjaGVzKToKKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVF0OjplbmFi
bGVkKToKKiBXZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVRdC5oOiBBZGRlZC4KLS0tCiBX
ZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjYgKysr
KwogV2ViQ29yZS9XZWJDb3JlLnBybyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA4
ICstCiBXZWJDb3JlL3BsYXRmb3JtL3F0L1BvcHVwTWVudVF0LmNwcCAgICAgICAgICAgICB8ICAg
ODggLS0tLS0tLS0tLS0tLQogV2ViQ29yZS9wbGF0Zm9ybS9xdC9Qb3B1cE1lbnVRdC5oICAgICAg
ICAgICAgICAgfCAgIDQ5IC0tLS0tLS0KIFdlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdl
YlBvcHVwLmNwcCAgICAgIHwgICA4MiAtLS0tLS0tLS0tLS0KIFdlYkNvcmUvcGxhdGZvcm0vcXQv
UXRBYnN0cmFjdFdlYlBvcHVwLmggICAgICAgIHwgICA3NSAtLS0tLS0tLS0tLQogV2ViQ29yZS9w
bGF0Zm9ybS9xdC9TZWFyY2hQb3B1cE1lbnVRdC5jcHAgICAgICAgfCAgIDQ5IC0tLS0tLS0KIFdl
YkNvcmUvcGxhdGZvcm0vcXQvU2VhcmNoUG9wdXBNZW51UXQuaCAgICAgICAgIHwgICA0NCAtLS0t
LS0tCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
NzcgKysrKysrKysrKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5j
cHAgICAgIHwgICAxMCArLQogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0
LmggICAgICAgfCAgICA0ICstCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51UXQu
Y3BwICAgICAgICB8ICAxNTggKysrKysrKysrKysrKysrKysrKysrKysKIFdlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9Qb3B1cE1lbnVRdC5oICAgICAgICAgIHwgICA1OSArKysrKysrKysKIFdlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwIHwgICA0OCArKysrLS0t
CiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmggICB8ICAgMjYg
KysrLQogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0TWFlbW9XZWJQb3B1cC5jcHAgICAgfCAg
IDMzICsrKy0tLQogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0TWFlbW9XZWJQb3B1cC5oICAg
ICAgfCAgIDIwICsrLS0KIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2lu
LmNwcCAgIHwgICA3NSArLS0tLS0tLS0tLS0KIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBs
YXRmb3JtUGx1Z2luLmggICAgIHwgICAyMiArLS0tCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
U2VhcmNoUG9wdXBNZW51UXQuY3BwICB8ICAgNDkgKysrKysrKwogV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L1NlYXJjaFBvcHVwTWVudVF0LmggICAgfCAgIDQzICsrKysrKwogMjEgZmlsZXMgY2hh
bmdlZCwgNTAyIGluc2VydGlvbnMoKyksIDU0MyBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEw
MDY0NCBXZWJDb3JlL3BsYXRmb3JtL3F0L1BvcHVwTWVudVF0LmNwcAogZGVsZXRlIG1vZGUgMTAw
NjQ0IFdlYkNvcmUvcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuaAogZGVsZXRlIG1vZGUgMTAwNjQ0
IFdlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmNwcAogZGVsZXRlIG1vZGUg
MTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmgKIGRlbGV0ZSBt
b2RlIDEwMDY0NCBXZWJDb3JlL3BsYXRmb3JtL3F0L1NlYXJjaFBvcHVwTWVudVF0LmNwcAogZGVs
ZXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vcXQvU2VhcmNoUG9wdXBNZW51UXQuaAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVRdC5j
cHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51
UXQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQ
b3B1cE1lbnVRdC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvU2VhcmNoUG9wdXBNZW51UXQuaAoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY5N2ExMi4uZGQ1Mjc5NCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAor
MjAxMC0wOC0wNSAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIE1v
dmUgUXQncyBwb3B1cCBtZW51IGltcGxlbWVudGF0aW9uIGZyb20gV2ViQ29yZSB0byBXZWJLaXQg
bGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQz
NDI3CisKKyAgICAgICAgQWZ0ZXIgUG9wdXBNZW51IGNoYW5nZXMgaW4gYnVnIDQyNTkyIGNsYXNz
IFF0QWJzdHJhY3RXZWJQb3B1cCBiZWNhbWUgdW5lY2Vzc2FyeSBhbmQKKyAgICAgICAgdGhlcmUg
aXMgbm8gbmVlZCB0byBrZWVwIGFueSBRdCBzcGVjaWZpYyBjb2RlIGZvciBwb3B1cCBtZW51cyBp
biBXZWJDb3JlL3BsYXRmb3JtL3F0LgorCisgICAgICAgIFBvcHVwTWVudVF0IGhhcyBiZWVuIG1v
dmVkIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS9xdCB0byBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQg
YW5kCisgICAgICAgIGFzc3VtZWQgdGhlIHJlc3BvbnNpYmlsaXRpZXMgb2YgUXRBYnN0cmFjdFdl
YlBvcHVwLiBTZWFyY2hQb3B1cE1lbnVRdCBoYXMgYmVlbiBtb3ZlZAorICAgICAgICB0byBXZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQgYXMgd2VsbC4KKworICAgICAgICBBbGwgY2xhc3NlcyB0aGF0
IHByZXZpb3VzbHkgaW5oZXJpdGVkIGZyb20gUXRBYnN0cmFjdFdlYlBvcHVwIG5vdyBpbmhlcml0
IGZyb20gCisgICAgICAgIFFXZWJTZWxlY3RNZXRob2QgYW5kIFF0UGxhdGZvcm1QbHVnaW4ncyBt
ZXRob2QgY3JlYXRlU2VsZWN0SW5wdXRNZXRob2Qgbm93IHJldHVybnMgYW4KKyAgICAgICAgaW5z
dGFuY2Ugb2YgY2xhc3MgUVdlYlNlbGVjdE1ldGhvZCBpbnN0ZWFkIG9mIFF0QWJzdHJhY3RXZWJQ
b3B1cC4KKworICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Bv
cHVwTWVudVF0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Qb3B1cE1lbnVR
dC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmg6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvU2VhcmNoUG9wdXBNZW51UXQuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NlYXJjaFBvcHVwTWVudVF0Lmg6IFJlbW92
ZWQuCisKIDIwMTAtMDgtMDMgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgTm90IHJldmlld2VkOiBzcGVjdWxhdGl2ZSBjaHJvbWl1bSB0ZXN0cyBmaXgu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpp
bmRleCAwYmViNWZmLi5iNzNlN2ZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTE3MTQsNyArMTcxNCw2IEBAIEhFQURFUlMgKz0g
XAogICAgIHBsYXRmb3JtL1BvcHVwTWVudS5oIFwKICAgICBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRR
dC5oIFwKICAgICBwbGF0Zm9ybS9xdC9RV2ViUGFnZUNsaWVudC5oIFwKLSAgICBwbGF0Zm9ybS9x
dC9RdEFic3RyYWN0V2ViUG9wdXAuaCBcCiAgICAgcGxhdGZvcm0vcXQvUXRTdHlsZU9wdGlvbldl
YkNvbWJvQm94LmggXAogICAgIHBsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuaCBcCiAgICAgcGxh
dGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5oIFwKQEAgLTIxNTEsNiArMjE1MCw4IEBAIEhFQURF
UlMgKz0gXAogICAgICQkUFdELy4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRRdC5oIFwKICAgICAkJFBXRC8uLi9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUGFnZUNsaWVudFF0LmggXAogICAgICQkUFdELy4uL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9RdFBsYXRmb3JtUGx1Z2luLmggXAorICAgICQkUFdELy4uL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9Qb3B1cE1lbnVRdC5oIFwKKyAgICAkJFBXRC8uLi9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvU2VhcmNoUG9wdXBNZW51UXQuaCBcCiAgICAgJCRQV0QvcGxhdGZvcm0vbmV0d29yay9x
dC9EbnNQcmVmZXRjaEhlbHBlci5oCiAKIFNPVVJDRVMgKz0gXApAQCAtMjIxMywxMyArMjIxNCwx
MCBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9xdC9QbGF0Zm9ybVNjcmVlblF0LmNwcCBc
CiAgICAgcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaEV2ZW50UXQuY3BwIFwKICAgICBwbGF0Zm9y
bS9xdC9QbGF0Zm9ybVRvdWNoUG9pbnRRdC5jcHAgXAotICAgIHBsYXRmb3JtL3F0L1BvcHVwTWVu
dVF0LmNwcCBcCi0gICAgcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmNwcCBcCiAgICAg
cGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1Njcm9sbGJh
clF0LmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAgXAogICAgIHBs
YXRmb3JtL3F0L1Njcm9sbFZpZXdRdC5jcHAgXAotICAgIHBsYXRmb3JtL3F0L1NlYXJjaFBvcHVw
TWVudVF0LmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvU2hhcmVkVGltZXJRdC5jcHAgXAogICAgIHBs
YXRmb3JtL3F0L1NvdW5kUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9xdC9Mb2dnaW5nUXQuY3BwIFwK
QEAgLTIyNDEsNyArMjIzOSw5IEBAIFNPVVJDRVMgKz0gXAogICAgIC4uL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHAgXAogICAgIC4uL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuY3BwIFwKKyAgICAuLi9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51UXQuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5jcHAgXAorICAgIC4uL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVRdC5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9BcGkv
cXdlYmZyYW1lLmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L0FwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNw
cCBcCiAgICAgLi4vV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9Qb3B1cE1lbnVRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bv
cHVwTWVudVF0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU5MDU1Ni4uMDAw
MDAwMAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BvcHVwTWVudVF0LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgcG9w
dXAgbWVudSBpbXBsZW1lbnRhdGlvbiBmb3IgPHNlbGVjdD4gZWxlbWVudHMgaW4gV2ViQ29yZS4K
LSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUg
Q29tcHV0ZXIsIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2Uu
ZW1tZWxAZ21haWwuY29tIAotICogQ295cHJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFu
biA8emltbWVybWFubkBrZGUub3JnPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlBvcHVwTWVudVF0LmgiCi0KLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJDaHJvbWVD
bGllbnRRdC5oIgotI2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1ZGUgIlBvcHVwTWVudUNs
aWVudC5oIgotI2luY2x1ZGUgIlFXZWJQYWdlQ2xpZW50LmgiCi0jaW5jbHVkZSAiUXRBYnN0cmFj
dFdlYlBvcHVwLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUG9wdXBNZW51UXQ6OlBvcHVw
TWVudVF0KFBvcHVwTWVudUNsaWVudCogY2xpZW50KQotICAgIDogbV9wb3B1cENsaWVudChjbGll
bnQpCi0gICAgLCBtX3BvcHVwKDApCi17Ci19Ci0KLVBvcHVwTWVudVF0Ojp+UG9wdXBNZW51UXQo
KQotewotICAgIGRlbGV0ZSBtX3BvcHVwOwotfQotCi0KLXZvaWQgUG9wdXBNZW51UXQ6OmRpc2Nv
bm5lY3RDbGllbnQoKQotewotICAgIG1fcG9wdXBDbGllbnQgPSAwOwotfQotCi12b2lkIFBvcHVw
TWVudVF0OjpzaG93KGNvbnN0IEludFJlY3QmIHJlY3QsIEZyYW1lVmlldyogdmlldywgaW50IGlu
ZGV4KQotewotICAgIENocm9tZUNsaWVudFF0KiBjaHJvbWVDbGllbnQgPSBzdGF0aWNfY2FzdDxD
aHJvbWVDbGllbnRRdCo+KAotICAgICAgICB2aWV3LT5mcmFtZSgpLT5wYWdlKCktPmNocm9tZSgp
LT5jbGllbnQoKSk7Ci0gICAgQVNTRVJUKGNocm9tZUNsaWVudCk7Ci0KLSAgICBpZiAoIW1fcG9w
dXApCi0gICAgICAgIG1fcG9wdXAgPSBjaHJvbWVDbGllbnQtPmNyZWF0ZVNlbGVjdFBvcHVwKCk7
Ci0KLSAgICBtX3BvcHVwLT5tX3BvcHVwQ2xpZW50ID0gbV9wb3B1cENsaWVudDsKLSAgICBtX3Bv
cHVwLT5tX2N1cnJlbnRJbmRleCA9IGluZGV4OwotICAgIG1fcG9wdXAtPm1fcGFnZUNsaWVudCA9
IGNocm9tZUNsaWVudC0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7Ci0KLSAgICBRUmVjdCBnZW9tZXRy
eShyZWN0KTsKLSAgICBnZW9tZXRyeS5tb3ZlVG9wTGVmdCh2aWV3LT5jb250ZW50c1RvV2luZG93
KHJlY3QudG9wTGVmdCgpKSk7Ci0gICAgbV9wb3B1cC0+bV9nZW9tZXRyeSA9IGdlb21ldHJ5Owot
Ci0gICAgbV9wb3B1cC0+c2hvdygpOwotCi19Ci0KLXZvaWQgUG9wdXBNZW51UXQ6OmhpZGUoKQot
ewotICAgIG1fcG9wdXAtPmhpZGUoKTsKLX0KLQotdm9pZCBQb3B1cE1lbnVRdDo6dXBkYXRlRnJv
bUVsZW1lbnQoKQotewotICAgIG1fcG9wdXBDbGllbnQtPnNldFRleHRGcm9tSXRlbShtX3BvcHVw
Q2xpZW50LT5zZWxlY3RlZEluZGV4KCkpOwotfQotCi19Ci0KLS8vIHZpbTogdHM9NCBzdz00IGV0
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BvcHVwTWVudVF0LmggYi9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1BvcHVwTWVudVF0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDI1YTlmNzYuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Qb3B1cE1lbnVRdC5o
CisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYg
UG9wdXBNZW51UXRfaAotI2RlZmluZSBQb3B1cE1lbnVRdF9oCi0KLSNpbmNsdWRlICJQb3B1cE1l
bnUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGcmFtZVZpZXc7Ci1jbGFzcyBR
dEFic3RyYWN0V2ViUG9wdXA7Ci1jbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBQb3B1cE1lbnVDbGll
bnQ7Ci0KLWNsYXNzIFBvcHVwTWVudVF0IDogcHVibGljIFBvcHVwTWVudSB7Ci1wdWJsaWM6Ci0g
ICAgUG9wdXBNZW51UXQoUG9wdXBNZW51Q2xpZW50Kik7Ci0gICAgflBvcHVwTWVudVF0KCk7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgc2hvdyhjb25zdCBJbnRSZWN0JiwgRnJhbWVWaWV3KiwgaW50IGlu
ZGV4KTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVG
cm9tRWxlbWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCk7Ci0KLXBy
aXZhdGU6Ci0gICAgUG9wdXBNZW51Q2xpZW50KiBtX3BvcHVwQ2xpZW50OwotICAgIFF0QWJzdHJh
Y3RXZWJQb3B1cCogbV9wb3B1cDsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFBvcHVwTWVudVF0X2gK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMzFhYjI4ZC4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSAqCi0gKi8KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJRdEFic3Ry
YWN0V2ViUG9wdXAuaCIKLQotI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgotCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotUXRBYnN0cmFjdFdlYlBvcHVwOjpRdEFic3RyYWN0V2ViUG9wdXAo
KQotICAgIDogbV9wb3B1cENsaWVudCgwKQotICAgICwgbV9wYWdlQ2xpZW50KDApCi0gICAgLCBt
X2N1cnJlbnRJbmRleCgtMSkKLXsKLX0KLQotUXRBYnN0cmFjdFdlYlBvcHVwOjp+UXRBYnN0cmFj
dFdlYlBvcHVwKCkKLXsKLX0KLQotdm9pZCBRdEFic3RyYWN0V2ViUG9wdXA6OnBvcHVwRGlkSGlk
ZSgpCi17Ci0gICAgUV9BU1NFUlQobV9wb3B1cENsaWVudCk7Ci0gICAgbV9wb3B1cENsaWVudC0+
cG9wdXBEaWRIaWRlKCk7Ci19Ci0KLXZvaWQgUXRBYnN0cmFjdFdlYlBvcHVwOjp2YWx1ZUNoYW5n
ZWQoaW50IGluZGV4KQotewotICAgIFFfQVNTRVJUKG1fcG9wdXBDbGllbnQpOwotICAgIG1fcG9w
dXBDbGllbnQtPnZhbHVlQ2hhbmdlZChpbmRleCk7Ci19Ci0KLXZvaWQgUXRBYnN0cmFjdFdlYlBv
cHVwOjpzZWxlY3RJdGVtKGludCBpbmRleCwgYm9vbCBhbGxvd011bHRpcGx5U2VsZWN0aW9ucywg
Ym9vbCBzaGlmdCkKLXsKLSNpZiBFTkFCTEUoTk9fTElTVEJPWF9SRU5ERVJJTkcpCi0gICAgTGlz
dFBvcHVwTWVudUNsaWVudCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8TGlzdFBvcHVwTWVudUNsaWVu
dCo+KG1fcG9wdXBDbGllbnQpOwotICAgIGlmIChjbGllbnQpIHsKLSAgICAgICAgY2xpZW50LT5s
aXN0Qm94U2VsZWN0SXRlbShpbmRleCwgYWxsb3dNdWx0aXBseVNlbGVjdGlvbnMsIHNoaWZ0KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIHZhbHVlQ2hhbmdlZChpbmRleCk7
Ci19Ci0KLWJvb2wgUXRBYnN0cmFjdFdlYlBvcHVwOjptdWx0aXBsZSgpCi17Ci0jaWYgRU5BQkxF
KE5PX0xJU1RCT1hfUkVOREVSSU5HKQotICAgIExpc3RQb3B1cE1lbnVDbGllbnQqIGNsaWVudCA9
IHN0YXRpY19jYXN0PExpc3RQb3B1cE1lbnVDbGllbnQqPihtX3BvcHVwQ2xpZW50KTsKLSAgICBy
ZXR1cm4gY2xpZW50ICYmIGNsaWVudC0+bXVsdGlwbGUoKTsKLSNlbHNlCi0gICAgcmV0dXJuIGZh
bHNlOwotI2VuZGlmCi19Ci0KLVF0QWJzdHJhY3RXZWJQb3B1cDo6SXRlbVR5cGUgUXRBYnN0cmFj
dFdlYlBvcHVwOjppdGVtVHlwZShpbnQgaWR4KSBjb25zdAotewotICAgIGlmIChtX3BvcHVwQ2xp
ZW50LT5pdGVtSXNTZXBhcmF0b3IoaWR4KSkKLSAgICAgICAgcmV0dXJuIFNlcGFyYXRvcjsKLSAg
ICBpZiAobV9wb3B1cENsaWVudC0+aXRlbUlzTGFiZWwoaWR4KSkKLSAgICAgICAgcmV0dXJuIEdy
b3VwOwotICAgIHJldHVybiBPcHRpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRBYnN0cmFjdFdlYlBvcHVwLmggYi9XZWJD
b3JlL3BsYXRmb3JtL3F0L1F0QWJzdHJhY3RXZWJQb3B1cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1ZjZmNjE5Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRB
YnN0cmFjdFdlYlBvcHVwLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSAqCi0gKi8KLSNpZm5kZWYgUXRBYnN0cmFjdFdlYlBvcHVwX2gKLSNkZWZpbmUgUXRBYnN0cmFj
dFdlYlBvcHVwX2gKLQotI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgotCi0jaW5jbHVkZSA8
UUZvbnQ+Ci0jaW5jbHVkZSA8UUxpc3Q+Ci0jaW5jbHVkZSA8UVJlY3Q+Ci0jaW5jbHVkZSA8UVdp
ZGdldD4KLQotY2xhc3MgUVdlYlBhZ2VDbGllbnQ7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgUXRBYnN0cmFjdFdlYlBvcHVwIHsKLXB1YmxpYzoKLSAgICBlbnVtIEl0ZW1UeXBlIHsg
T3B0aW9uLCBHcm91cCwgU2VwYXJhdG9yIH07Ci0KLSAgICBJdGVtVHlwZSBpdGVtVHlwZShpbnQp
IGNvbnN0OwotICAgIFFTdHJpbmcgaXRlbVRleHQoaW50IGlkeCkgY29uc3QgeyByZXR1cm4gbV9w
b3B1cENsaWVudC0+aXRlbVRleHQoaWR4KTsgfQotICAgIFFTdHJpbmcgaXRlbVRvb2xUaXAoaW50
IGlkeCkgY29uc3QgeyByZXR1cm4gbV9wb3B1cENsaWVudC0+aXRlbVRvb2xUaXAoaWR4KTsgfQot
ICAgIGJvb2wgaXRlbUlzRW5hYmxlZChpbnQgaWR4KSBjb25zdCB7IHJldHVybiBtX3BvcHVwQ2xp
ZW50LT5pdGVtSXNFbmFibGVkKGlkeCk7IH0KLSAgICBpbnQgaXRlbUNvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9wb3B1cENsaWVudC0+bGlzdFNpemUoKTsgfQotICAgIGJvb2wgaXRlbUlzU2VsZWN0
ZWQoaW50IGlkeCkgY29uc3QgeyByZXR1cm4gbV9wb3B1cENsaWVudC0+aXRlbUlzU2VsZWN0ZWQo
aWR4KTsgfQotCi0KLSAgICBRV2ViUGFnZUNsaWVudCogcGFnZUNsaWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZUNsaWVudDsgfQotICAgIFFSZWN0IGdlb21ldHJ5KCkgY29uc3QgeyByZXR1cm4g
bV9nZW9tZXRyeTsgfQotICAgIGludCBjdXJyZW50SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRJbmRleDsgfQotCi0gICAgUXRBYnN0cmFjdFdlYlBvcHVwKCk7Ci0gICAgdmlydHVhbCB+
UXRBYnN0cmFjdFdlYlBvcHVwKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2hvdygpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgaGlkZSgpID0gMDsKLQotICAgIHZvaWQgcG9wdXBEaWRIaWRlKCk7Ci0g
ICAgdm9pZCB2YWx1ZUNoYW5nZWQoaW50IGluZGV4KTsKLQotICAgIHZvaWQgc2VsZWN0SXRlbShp
bnQgaW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBseVNlbGVjdGlvbnMsIGJvb2wgc2hpZnQpOwotICAg
IGJvb2wgbXVsdGlwbGUoKTsKLQotCi0gICAgUUZvbnQgZm9udCgpIHsgcmV0dXJuIG1fcG9wdXBD
bGllbnQtPm1lbnVTdHlsZSgpLmZvbnQoKS5mb250KCk7IH0KLQotcHJpdmF0ZToKLSAgICBmcmll
bmQgY2xhc3MgUG9wdXBNZW51UXQ7Ci0gICAgUG9wdXBNZW51Q2xpZW50KiBtX3BvcHVwQ2xpZW50
OwotICAgIFFXZWJQYWdlQ2xpZW50KiBtX3BhZ2VDbGllbnQ7Ci0gICAgaW50IG1fY3VycmVudElu
ZGV4OwotICAgIFFSZWN0IG1fZ2VvbWV0cnk7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBRdEFic3Ry
YWN0V2ViUG9wdXBfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TZWFyY2hQb3B1
cE1lbnVRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1NlYXJjaFBvcHVwTWVudVF0LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA1ZDA4YS4uMDAwMDAwMAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL3F0L1NlYXJjaFBvcHVwTWVudVF0LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgQyAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2Rl
Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTZWFyY2hQ
b3B1cE1lbnVRdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNlYXJjaFBvcHVwTWVudVF0
OjpTZWFyY2hQb3B1cE1lbnVRdChQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fcG9w
dXAoYWRvcHRSZWYobmV3IFBvcHVwTWVudVF0KGNsaWVudCkpKQotewotfQotCi1Qb3B1cE1lbnUq
IFNlYXJjaFBvcHVwTWVudVF0Ojpwb3B1cE1lbnUoKQotewotICAgIHJldHVybiBtX3BvcHVwLmdl
dCgpOwotfQotCi12b2lkIFNlYXJjaFBvcHVwTWVudVF0OjpzYXZlUmVjZW50U2VhcmNoZXMoY29u
c3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQotewotfQotCi12b2lkIFNl
YXJjaFBvcHVwTWVudVF0Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwg
VmVjdG9yPFN0cmluZz4mKQotewotfQotCi1ib29sIFNlYXJjaFBvcHVwTWVudVF0OjplbmFibGVk
KCkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9TZWFyY2hQb3B1cE1lbnVRdC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TZWFyY2hQ
b3B1cE1lbnVRdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmJlYWZkLi4wMDAw
MDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2VhcmNoUG9wdXBNZW51UXQuaAorKysgL2Rl
di9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBTZWFy
Y2hQb3B1cE1lbnVRdF9oCi0jZGVmaW5lIFNlYXJjaFBvcHVwTWVudVF0X2gKLQotI2luY2x1ZGUg
IlBvcHVwTWVudVF0LmgiCi0jaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51LmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgU2VhcmNoUG9wdXBNZW51UXQgOiBwdWJsaWMgU2VhcmNoUG9w
dXBNZW51IHsKLXB1YmxpYzoKLSAgICBTZWFyY2hQb3B1cE1lbnVRdChQb3B1cE1lbnVDbGllbnQq
KTsKLQotICAgIHZpcnR1YWwgUG9wdXBNZW51KiBwb3B1cE1lbnUoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNl
YXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0
ZW1zKTsKLSAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOwotCi1wcml2YXRlOgotICAgIFJlZlB0
cjxQb3B1cE1lbnVRdD4gbV9wb3B1cDsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFNlYXJjaFBvcHVw
TWVudVF0X2gKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hh
bmdlTG9nCmluZGV4IDRhNzBjNGMuLjI3YmU5ZGMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEwLTA4
LTA1ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gTW92ZSBRdCdz
IHBvcHVwIG1lbnUgaW1wbGVtZW50YXRpb24gZnJvbSBXZWJDb3JlIHRvIFdlYktpdCBsYXllcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0MjcKKwor
ICAgICAgICBBZnRlciBQb3B1cE1lbnUgY2hhbmdlcyBpbiBidWcgNDI1OTIgY2xhc3MgUXRBYnN0
cmFjdFdlYlBvcHVwIGJlY2FtZSB1bmVjZXNzYXJ5IGFuZAorICAgICAgICB0aGVyZSBpcyBubyBu
ZWVkIHRvIGtlZXAgYW55IFF0IHNwZWNpZmljIGNvZGUgZm9yIHBvcHVwIG1lbnVzIGluIFdlYkNv
cmUvcGxhdGZvcm0vcXQuCisKKyAgICAgICAgUG9wdXBNZW51UXQgaGFzIGJlZW4gbW92ZWQgZnJv
bSBXZWJDb3JlL3BsYXRmb3JtL3F0IHRvIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydCBhbmQKKyAg
ICAgICAgYXNzdW1lZCB0aGUgcmVzcG9uc2liaWxpdGllcyBvZiBRdEFic3RyYWN0V2ViUG9wdXAu
IFNlYXJjaFBvcHVwTWVudVF0IGhhcyBiZWVuIG1vdmVkCisgICAgICAgIHRvIFdlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydCBhcyB3ZWxsLgorCisgICAgICAgIEFsbCBjbGFzc2VzIHRoYXQgcHJldmlv
dXNseSBpbmhlcml0ZWQgZnJvbSBRdEFic3RyYWN0V2ViUG9wdXAgbm93IGluaGVyaXQgZnJvbQor
ICAgICAgICBRV2ViU2VsZWN0TWV0aG9kIGFuZCBRdFBsYXRmb3JtUGx1Z2luJ3MgbWV0aG9kIGNy
ZWF0ZVNlbGVjdElucHV0TWV0aG9kIG5vdyByZXR1cm5zIGFuCisgICAgICAgIGluc3RhbmNlIG9m
IGNsYXNzIFFXZWJTZWxlY3RNZXRob2QgaW5zdGVhZCBvZiBRdEFic3RyYWN0V2ViUG9wdXAuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y3JlYXRlU2VsZWN0UG9wdXApOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnRRdDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1Bv
cHVwTWVudVF0LmNwcDogQWRkZWQuCisgICAgICAgIChTZWxlY3REYXRhOjpTZWxlY3REYXRhKToK
KyAgICAgICAgKFNlbGVjdERhdGE6Oml0ZW1UZXh0KToKKyAgICAgICAgKFNlbGVjdERhdGE6Oml0
ZW1Ub29sVGlwKToKKyAgICAgICAgKFNlbGVjdERhdGE6Oml0ZW1Jc0VuYWJsZWQpOgorICAgICAg
ICAoU2VsZWN0RGF0YTo6aXRlbUNvdW50KToKKyAgICAgICAgKFNlbGVjdERhdGE6Oml0ZW1Jc1Nl
bGVjdGVkKToKKyAgICAgICAgKFNlbGVjdERhdGE6Om11bHRpcGxlKToKKyAgICAgICAgKFNlbGVj
dERhdGE6Oml0ZW1UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudVF0OjpQb3B1cE1l
bnVRdCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVRdDo6flBvcHVwTWVudVF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudVF0OjpkaXNjb25uZWN0Q2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwTWVudVF0OjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVu
dVF0OjpkaWRIaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudVF0OjpoaWRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudVF0Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpQb3B1cE1lbnVRdDo6c2VsZWN0SXRlbSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvUG9wdXBNZW51UXQuaDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRG
YWxsYmFja1dlYlBvcHVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1
cENvbWJvOjpoaWRlUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVw
OjpRdEZhbGxiYWNrV2ViUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBv
cHVwOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6cG9wdWxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjphY3RpdmVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6cGFnZUNsaWVudCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmg6CisgICAgICAgIChX
ZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnNldEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6Z2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UXRG
YWxsYmFja1dlYlBvcHVwOjpzZXRGb250KToKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tX
ZWJQb3B1cDo6Zm9udCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRNYWVtb1dlYlBvcHVw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hZW1vNVBvcHVwOjpwb3B1bGF0ZUxpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UXRNYWVtb1dlYlBvcHVwOjpRdE1hZW1vV2ViUG9wdXApOgorICAgICAg
ICAoV2ViQ29yZTo6UXRNYWVtb1dlYlBvcHVwOjpjcmVhdGVTaW5nbGVTZWxlY3Rpb25Qb3B1cCk6
CisgICAgICAgIChXZWJDb3JlOjpRdE1hZW1vV2ViUG9wdXA6OmNyZWF0ZU11bHRpcGxlU2VsZWN0
aW9uUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UXRNYWVtb1dlYlBvcHVwOjpjcmVhdGVQb3B1
cCk6CisgICAgICAgIChXZWJDb3JlOjpRdE1hZW1vV2ViUG9wdXA6OnNob3cpOgorICAgICAgICAo
V2ViQ29yZTo6UXRNYWVtb1dlYlBvcHVwOjpwb3B1cENsb3NlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpRdE1hZW1vV2ViUG9wdXA6Oml0ZW1DbGlja2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hZW1v
NVNpbmdsZVNlbGVjdGlvblBvcHVwOjpNYWVtbzVTaW5nbGVTZWxlY3Rpb25Qb3B1cCk6CisgICAg
ICAgIChXZWJDb3JlOjpNYWVtbzVNdWx0aXBsZVNlbGVjdGlvblBvcHVwOjpNYWVtbzVNdWx0aXBs
ZVNlbGVjdGlvblBvcHVwKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdE1hZW1vV2ViUG9w
dXAuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hZW1vNVBvcHVwOjpNYWVtbzVQb3B1cCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpRdFBsYXRmb3JtUGx1Z2luOjpjcmVhdGVTZWxlY3RJbnB1dE1ldGhvZCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1NlYXJjaFBvcHVwTWVudVF0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpT
ZWFyY2hQb3B1cE1lbnVRdDo6U2VhcmNoUG9wdXBNZW51UXQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VhcmNoUG9wdXBNZW51UXQ6OnBvcHVwTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQ
b3B1cE1lbnVRdDo6c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJj
aFBvcHVwTWVudVF0Ojpsb2FkUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Vh
cmNoUG9wdXBNZW51UXQ6OmVuYWJsZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1NlYXJj
aFBvcHVwTWVudVF0Lmg6IEFkZGVkLgorCiAyMDEwLTA4LTAzICBLaW0gR3LDtm5ob2xtICA8a2lt
LjEuZ3JvbmhvbG1Abm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNt
YW5uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0
LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKaW5kZXgg
YTBiYWM3Mi4uM2RjMGM2ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuY3BwCkBAIC01OTEsMTYgKzU5MSwxNiBAQCBJbnRSZWN0IENocm9tZUNsaWVudFF0Ojp2
aXNpYmxlUmVjdEZvclRpbGVkQmFja2luZ1N0b3JlKCkgY29uc3QKIH0KICNlbmRpZgogCi1RdEFi
c3RyYWN0V2ViUG9wdXAqIENocm9tZUNsaWVudFF0OjpjcmVhdGVTZWxlY3RQb3B1cCgpCitRV2Vi
U2VsZWN0TWV0aG9kKiBDaHJvbWVDbGllbnRRdDo6Y3JlYXRlU2VsZWN0UG9wdXAoKSBjb25zdAog
ewotICAgIFF0QWJzdHJhY3RXZWJQb3B1cCogcmVzdWx0ID0gbV9wbGF0Zm9ybVBsdWdpbi5jcmVh
dGVTZWxlY3RJbnB1dE1ldGhvZCgpOworICAgIFFXZWJTZWxlY3RNZXRob2QqIHJlc3VsdCA9IG1f
cGxhdGZvcm1QbHVnaW4uY3JlYXRlU2VsZWN0SW5wdXRNZXRob2QoKTsKICAgICBpZiAocmVzdWx0
KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAjaWYgZGVmaW5lZChRX1dTX01BRU1PXzUpCiAg
ICAgcmV0dXJuIG5ldyBRdE1hZW1vV2ViUG9wdXA7CiAjZWxpZiAhZGVmaW5lZChRVF9OT19DT01C
T0JPWCkKLSAgICByZXR1cm4gbmV3IFF0RmFsbGJhY2tXZWJQb3B1cDsKKyAgICByZXR1cm4gbmV3
IFF0RmFsbGJhY2tXZWJQb3B1cCh0aGlzKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYK
QEAgLTYzMiwxMiArNjMyLDEyIEBAIGJvb2wgQ2hyb21lQ2xpZW50UXQ6OnNlbGVjdEl0ZW1Xcml0
aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkKIAogUGFzc1JlZlB0cjxQb3B1cE1lbnU+IENocm9tZUNs
aWVudFF0OjpjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb3B1cE1lbnVRdChjbGllbnQpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFBvcHVwTWVudVF0KGNsaWVudCwgdGhpcykpOwogfQogCiBQYXNzUmVm
UHRyPFNlYXJjaFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVu
dShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNlYXJjaFBvcHVwTWVudVF0KGNsaWVudCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2VhcmNoUG9wdXBNZW51UXQoY3JlYXRlUG9wdXBNZW51KGNsaWVudCkpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudFF0LmggYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
aAppbmRleCBhYWIyODEzLi5jMTA5NTdjIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuaApAQCAtMTc0LDcgKzE3NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVw
TWVudUNsaWVudCopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNoUG9w
dXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7CiAK
LSAgICAgICAgUXRBYnN0cmFjdFdlYlBvcHVwKiBjcmVhdGVTZWxlY3RQb3B1cCgpOworICAgICAg
ICBRV2ViU2VsZWN0TWV0aG9kKiBjcmVhdGVTZWxlY3RQb3B1cCgpIGNvbnN0OwogCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMoRnJhbWUqLCBjb25zdCBW
aWV3cG9ydEFyZ3VtZW50cyYpIGNvbnN0OwogCkBAIC0xODgsNyArMTg4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIG1lbnVCYXJWaXNpYmxlOwogICAgICAgICBRRXZlbnRM
b29wKiBtX2V2ZW50TG9vcDsKIAotICAgICAgICBRdFBsYXRmb3JtUGx1Z2luIG1fcGxhdGZvcm1Q
bHVnaW47CisgICAgICAgIG11dGFibGUgUXRQbGF0Zm9ybVBsdWdpbiBtX3BsYXRmb3JtUGx1Z2lu
OwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Qb3B1
cE1lbnVRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51UXQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2YTBmYWMKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51UXQuY3BwCkBAIC0wLDAgKzEs
MTU4IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHBvcHVwIG1lbnUgaW1wbGVt
ZW50YXRpb24gZm9yIDxzZWxlY3Q+IGVsZW1lbnRzIGluIFdlYkNvcmUuCisgKgorICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNv
bQorICogQ295cHJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBvcHVwTWVudVF0Lmgi
CisKKyNpbmNsdWRlICJDaHJvbWVDbGllbnRRdC5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgor
I2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgorI2luY2x1ZGUgIlF0RmFsbGJhY2tXZWJQb3B1
cC5oIgorCisjaW5jbHVkZSAicXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgiCisKK2NsYXNzIFNlbGVj
dERhdGEgOiBwdWJsaWMgUVdlYlNlbGVjdERhdGEgeworcHVibGljOgorICAgIFNlbGVjdERhdGEo
V2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiYgZGF0YSkgOiBkKGRhdGEpIHt9CisKKyAgICB2aXJ0
dWFsIEl0ZW1UeXBlIGl0ZW1UeXBlKGludCkgY29uc3Q7CisgICAgdmlydHVhbCBRU3RyaW5nIGl0
ZW1UZXh0KGludCBpZHgpIGNvbnN0IHsgcmV0dXJuIFFTdHJpbmcoZCA/IGQtPml0ZW1UZXh0KGlk
eCkgOiAiIik7IH0KKyAgICB2aXJ0dWFsIFFTdHJpbmcgaXRlbVRvb2xUaXAoaW50IGlkeCkgY29u
c3QgeyByZXR1cm4gUVN0cmluZyhkID8gZC0+aXRlbVRvb2xUaXAoaWR4KSA6ICIiKTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpdGVtSXNFbmFibGVkKGludCBpZHgpIGNvbnN0IHsgcmV0dXJuIGQgPyBk
LT5pdGVtSXNFbmFibGVkKGlkeCkgOiBmYWxzZTsgfQorICAgIHZpcnR1YWwgaW50IGl0ZW1Db3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIGQgPyBkLT5saXN0U2l6ZSgpIDogMDsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpdGVtSXNTZWxlY3RlZChpbnQgaWR4KSBjb25zdCB7IHJldHVybiBkID8gZC0+aXRlbUlz
U2VsZWN0ZWQoaWR4KSA6IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIG11bHRpcGxlKCkgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiYgZDsKK307CisK
K2Jvb2wgU2VsZWN0RGF0YTo6bXVsdGlwbGUoKSBjb25zdAoreworICAgIGlmICghZCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisjaWYgRU5BQkxFKE5PX0xJU1RCT1hfUkVOREVSSU5HKQorICAg
IFdlYkNvcmU6Okxpc3RQb3B1cE1lbnVDbGllbnQqIGNsaWVudCA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6Okxpc3RQb3B1cE1lbnVDbGllbnQqPihkKTsKKyAgICByZXR1cm4gY2xpZW50ICYmIGNsaWVu
dC0+bXVsdGlwbGUoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK1Nl
bGVjdERhdGE6Okl0ZW1UeXBlIFNlbGVjdERhdGE6Oml0ZW1UeXBlKGludCBpZHgpIGNvbnN0Cit7
CisgICAgaWYgKCFkKQorICAgICAgICByZXR1cm4gU2VsZWN0RGF0YTo6T3B0aW9uOworCisgICAg
aWYgKGQtPml0ZW1Jc1NlcGFyYXRvcihpZHgpKQorICAgICAgICByZXR1cm4gU2VsZWN0RGF0YTo6
U2VwYXJhdG9yOworICAgIGlmIChkLT5pdGVtSXNMYWJlbChpZHgpKQorICAgICAgICByZXR1cm4g
U2VsZWN0RGF0YTo6R3JvdXA7CisgICAgcmV0dXJuIFNlbGVjdERhdGE6Ok9wdGlvbjsKK30KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQb3B1cE1lbnVRdDo6UG9wdXBNZW51UXQoUG9wdXBNZW51
Q2xpZW50KiBjbGllbnQsIGNvbnN0IENocm9tZUNsaWVudFF0KiBjaHJvbWVDbGllbnQpCisgICAg
OiBtX3BvcHVwQ2xpZW50KGNsaWVudCkKKyAgICAsIG1fcG9wdXAoMCkKKyAgICAsIG1fc2VsZWN0
RGF0YSgwKQorICAgICwgbV9jaHJvbWVDbGllbnQoY2hyb21lQ2xpZW50KQoreworfQorCitQb3B1
cE1lbnVRdDo6flBvcHVwTWVudVF0KCkKK3sKKyAgICBkZWxldGUgbV9zZWxlY3REYXRhOworICAg
IGRlbGV0ZSBtX3BvcHVwOworfQorCit2b2lkIFBvcHVwTWVudVF0OjpkaXNjb25uZWN0Q2xpZW50
KCkKK3sKKyAgICBtX3BvcHVwQ2xpZW50ID0gMDsKK30KKwordm9pZCBQb3B1cE1lbnVRdDo6c2hv
dyhjb25zdCBJbnRSZWN0JiByZWN0LCBGcmFtZVZpZXcqIHZpZXcsIGludCBpbmRleCkKK3sKKyAg
ICBpZiAoIW1fcG9wdXBDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9wb3B1
cCkgeworICAgICAgICBtX3BvcHVwID0gbV9jaHJvbWVDbGllbnQtPmNyZWF0ZVNlbGVjdFBvcHVw
KCk7CisgICAgICAgIGNvbm5lY3QobV9wb3B1cCwgU0lHTkFMKGRpZEhpZGUoKSksIHRoaXMsIFNM
T1QoZGlkSGlkZSgpKSk7CisgICAgICAgIGNvbm5lY3QobV9wb3B1cCwgU0lHTkFMKHNlbGVjdEl0
ZW0oaW50LCBib29sLCBib29sKSksIHRoaXMsIFNMT1Qoc2VsZWN0SXRlbShpbnQsIGJvb2wsIGJv
b2wpKSk7CisgICAgfQorCisgICAgaWYgKFF0RmFsbGJhY2tXZWJQb3B1cCogZmFsbGJhY2sgPSBx
b2JqZWN0X2Nhc3Q8UXRGYWxsYmFja1dlYlBvcHVwKj4obV9wb3B1cCkpIHsKKyAgICAgICAgUVJl
Y3QgZ2VvbWV0cnkocmVjdCk7CisgICAgICAgIGdlb21ldHJ5Lm1vdmVUb3BMZWZ0KHZpZXctPmNv
bnRlbnRzVG9XaW5kb3cocmVjdC50b3BMZWZ0KCkpKTsKKyAgICAgICAgZmFsbGJhY2stPnNldEdl
b21ldHJ5KGdlb21ldHJ5KTsKKyAgICAgICAgZmFsbGJhY2stPnNldEZvbnQobV9wb3B1cENsaWVu
dC0+bWVudVN0eWxlKCkuZm9udCgpLmZvbnQoKSk7CisgICAgfQorCisgICAgaWYgKG1fc2VsZWN0
RGF0YSkKKyAgICAgICAgZGVsZXRlIG1fc2VsZWN0RGF0YTsKKyAgICBtX3NlbGVjdERhdGEgPSBu
ZXcgU2VsZWN0RGF0YShtX3BvcHVwQ2xpZW50KTsKKyAgICBtX3BvcHVwLT5zaG93KCptX3NlbGVj
dERhdGEpOworfQorCit2b2lkIFBvcHVwTWVudVF0OjpkaWRIaWRlKCkKK3sKKyAgICBpZiAobV9w
b3B1cENsaWVudCkKKyAgICAgICAgbV9wb3B1cENsaWVudC0+cG9wdXBEaWRIaWRlKCk7Cit9CisK
K3ZvaWQgUG9wdXBNZW51UXQ6OmhpZGUoKQoreworICAgIGlmICghbV9wb3B1cCkKKyAgICAgICAg
bV9wb3B1cC0+aGlkZSgpOworfQorCit2b2lkIFBvcHVwTWVudVF0Ojp1cGRhdGVGcm9tRWxlbWVu
dCgpCit7CisgICAgaWYgKG1fcG9wdXBDbGllbnQpCisgICAgICAgIG1fcG9wdXBDbGllbnQtPnNl
dFRleHRGcm9tSXRlbShtX3BvcHVwQ2xpZW50LT5zZWxlY3RlZEluZGV4KCkpOworfQorCit2b2lk
IFBvcHVwTWVudVF0OjpzZWxlY3RJdGVtKGludCBpbmRleCwgYm9vbCBjdHJsLCBib29sIHNoaWZ0
KQoreworICAgIGlmICghbV9wb3B1cENsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisjaWYgRU5B
QkxFKE5PX0xJU1RCT1hfUkVOREVSSU5HKQorICAgIExpc3RQb3B1cE1lbnVDbGllbnQqIGNsaWVu
dCA9IHN0YXRpY19jYXN0PExpc3RQb3B1cE1lbnVDbGllbnQqPihtX3BvcHVwQ2xpZW50KTsKKyAg
ICBpZiAoY2xpZW50KSB7CisgICAgICAgIGNsaWVudC0+bGlzdEJveFNlbGVjdEl0ZW0oaW5kZXgs
IGN0cmwsIHNoaWZ0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgbV9w
b3B1cENsaWVudC0+dmFsdWVDaGFuZ2VkKGluZGV4KTsKK30KKworfQorCisvLyB2aW06IHRzPTQg
c3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BvcHVwTWVudVF0
LmggYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51UXQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzdmMzIzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L1BvcHVwTWVudVF0LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpZm5kZWYgUG9wdXBNZW51UXRfaAorI2RlZmluZSBQb3B1cE1lbnVRdF9oCisK
KyNpbmNsdWRlICJQb3B1cE1lbnUuaCIKKyNpbmNsdWRlIDxRT2JqZWN0PgorCitjbGFzcyBRV2Vi
U2VsZWN0RGF0YTsKK2NsYXNzIFFXZWJTZWxlY3RNZXRob2Q7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgQ2hyb21lQ2xpZW50UXQ7CitjbGFzcyBGcmFtZVZpZXc7CitjbGFzcyBQb3B1
cE1lbnVDbGllbnQ7CisKK2NsYXNzIFBvcHVwTWVudVF0IDogcHVibGljIFFPYmplY3QsIHB1Ymxp
YyBQb3B1cE1lbnUgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgUG9wdXBNZW51UXQoUG9w
dXBNZW51Q2xpZW50KiwgY29uc3QgQ2hyb21lQ2xpZW50UXQqKTsKKyAgICB+UG9wdXBNZW51UXQo
KTsKKworICAgIHZpcnR1YWwgdm9pZCBzaG93KGNvbnN0IEludFJlY3QmLCBGcmFtZVZpZXcqLCBp
bnQgaW5kZXgpOworICAgIHZpcnR1YWwgdm9pZCBoaWRlKCk7CisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUZyb21FbGVtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RDbGllbnQoKTsK
KworcHJpdmF0ZSBzbG90czoKKyAgICB2b2lkIGRpZEhpZGUoKTsKKyAgICB2b2lkIHNlbGVjdEl0
ZW0oaW50IGluZGV4LCBib29sIGN0cmwsIGJvb2wgc2hpZnQpOworCitwcml2YXRlOgorICAgIFBv
cHVwTWVudUNsaWVudCogbV9wb3B1cENsaWVudDsKKyAgICBRV2ViU2VsZWN0TWV0aG9kKiBtX3Bv
cHVwOworICAgIFFXZWJTZWxlY3REYXRhKiBtX3NlbGVjdERhdGE7CisgICAgY29uc3QgQ2hyb21l
Q2xpZW50UXQqIG1fY2hyb21lQ2xpZW50OworfTsKKworfQorCisjZW5kaWYgLy8gUG9wdXBNZW51
UXRfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQ
b3B1cC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNw
cAppbmRleCA1OWFjODdiLi4yMTY3OGM3IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcApAQCAtMjMsOCArMjMsNyBAQAogCiAjaWZuZGVmIFFU
X05PX0NPTUJPQk9YCiAKLSNpbmNsdWRlICJIb3N0V2luZG93LmgiCi0jaW5jbHVkZSAiUG9wdXBN
ZW51Q2xpZW50LmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50UXQuaCIKICNpbmNsdWRlICJRV2Vi
UGFnZUNsaWVudC5oIgogI2luY2x1ZGUgInFncmFwaGljc3dlYnZpZXcuaCIKICNpbmNsdWRlIDxR
QWJzdHJhY3RJdGVtVmlldz4KQEAgLTc5LDcgKzc4LDcgQEAgdm9pZCBRdEZhbGxiYWNrV2ViUG9w
dXBDb21ibzo6aGlkZVBvcHVwKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9vd25lclBvcHVw
Lm1fcG9wdXBWaXNpYmxlID0gZmFsc2U7Ci0gICAgbV9vd25lclBvcHVwLnBvcHVwRGlkSGlkZSgp
OworICAgIGVtaXQgbV9vd25lclBvcHVwLmRpZEhpZGUoKTsKICAgICBtX293bmVyUG9wdXAuZGVz
dHJveVBvcHVwKCk7CiB9CiAKQEAgLTk3LDEwICs5NiwxMCBAQCBib29sIFF0RmFsbGJhY2tXZWJQ
b3B1cENvbWJvOjpldmVudEZpbHRlcihRT2JqZWN0KiB3YXRjaGVkLCBRRXZlbnQqIGV2ZW50KQog
CiAvLyBRdEZhbGxiYWNrV2ViUG9wdXAKIAotUXRGYWxsYmFja1dlYlBvcHVwOjpRdEZhbGxiYWNr
V2ViUG9wdXAoKQotICAgIDogUXRBYnN0cmFjdFdlYlBvcHVwKCkKLSAgICAsIG1fcG9wdXBWaXNp
YmxlKGZhbHNlKQorUXRGYWxsYmFja1dlYlBvcHVwOjpRdEZhbGxiYWNrV2ViUG9wdXAoY29uc3Qg
Q2hyb21lQ2xpZW50UXQqIGNocm9tZUNsaWVudCkKKyAgICA6IG1fcG9wdXBWaXNpYmxlKGZhbHNl
KQogICAgICwgbV9jb21ibygwKQorICAgICwgbV9jaHJvbWVDbGllbnQoY2hyb21lQ2xpZW50KQog
ewogfQogCkBAIC0xMDksNyArMTA4LDcgQEAgUXRGYWxsYmFja1dlYlBvcHVwOjp+UXRGYWxsYmFj
a1dlYlBvcHVwKCkKICAgICBkZXN0cm95UG9wdXAoKTsKIH0KIAotdm9pZCBRdEZhbGxiYWNrV2Vi
UG9wdXA6OnNob3coKQordm9pZCBRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3coY29uc3QgUVdlYlNl
bGVjdERhdGEmIGRhdGEpCiB7CiAgICAgaWYgKCFwYWdlQ2xpZW50KCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTEyMyw4ICsxMjIsNyBAQCB2b2lkIFF0RmFsbGJhY2tXZWJQb3B1cDo6c2hvdygpCiAg
ICAgY29ubmVjdChtX2NvbWJvLCBTSUdOQUwoYWN0aXZhdGVkKGludCkpLAogICAgICAgICAgICAg
U0xPVChhY3RpdmVDaGFuZ2VkKGludCkpLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CiAKLSAgICBw
b3B1bGF0ZSgpOwotICAgIG1fY29tYm8tPnNldEN1cnJlbnRJbmRleChjdXJyZW50SW5kZXgoKSk7
CisgICAgcG9wdWxhdGUoZGF0YSk7CiAKICAgICBRUmVjdCByZWN0ID0gZ2VvbWV0cnkoKTsKICAg
ICBpZiAoUUdyYXBoaWNzV2ViVmlldyAqd2ViVmlldyA9IHFvYmplY3RfY2FzdDxRR3JhcGhpY3NX
ZWJWaWV3Kj4ocGFnZUNsaWVudCgpLT5wbHVnaW5QYXJlbnQoKSkpIHsKQEAgLTIxMiw3ICsyMTAs
NyBAQCB2b2lkIFF0RmFsbGJhY2tXZWJQb3B1cDo6ZGVzdHJveVBvcHVwKCkKICAgICB9CiB9CiAK
LXZvaWQgUXRGYWxsYmFja1dlYlBvcHVwOjpwb3B1bGF0ZSgpCit2b2lkIFF0RmFsbGJhY2tXZWJQ
b3B1cDo6cG9wdWxhdGUoY29uc3QgUVdlYlNlbGVjdERhdGEmIGRhdGEpCiB7CiAgICAgUVN0YW5k
YXJkSXRlbU1vZGVsKiBtb2RlbCA9IHFvYmplY3RfY2FzdDxRU3RhbmRhcmRJdGVtTW9kZWwqPiht
X2NvbWJvLT5tb2RlbCgpKTsKICAgICBRX0FTU0VSVChtb2RlbCk7CkBAIC0yMjAsMjEgKzIxOCwy
OCBAQCB2b2lkIFF0RmFsbGJhY2tXZWJQb3B1cDo6cG9wdWxhdGUoKQogI2lmICFkZWZpbmVkKFFf
V1NfUzYwKQogICAgIG1fY29tYm8tPnNldEZvbnQoZm9udCgpKTsKICNlbmRpZgotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgaXRlbUNvdW50KCk7ICsraSkgewotICAgICAgICBzd2l0Y2ggKGl0ZW1U
eXBlKGkpKSB7Ci0gICAgICAgIGNhc2UgU2VwYXJhdG9yOgorCisgICAgaW50IGN1cnJlbnRJbmRl
eCA9IC0xOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGF0YS5pdGVtQ291bnQoKTsgKytpKSB7
CisgICAgICAgIHN3aXRjaCAoZGF0YS5pdGVtVHlwZShpKSkgeworICAgICAgICBjYXNlIFFXZWJT
ZWxlY3REYXRhOjpTZXBhcmF0b3I6CiAgICAgICAgICAgICBtX2NvbWJvLT5pbnNlcnRTZXBhcmF0
b3IoaSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHcm91cDoKLSAgICAgICAg
ICAgIG1fY29tYm8tPmluc2VydEl0ZW0oaSwgaXRlbVRleHQoaSkpOworICAgICAgICBjYXNlIFFX
ZWJTZWxlY3REYXRhOjpHcm91cDoKKyAgICAgICAgICAgIG1fY29tYm8tPmluc2VydEl0ZW0oaSwg
ZGF0YS5pdGVtVGV4dChpKSk7CiAgICAgICAgICAgICBtb2RlbC0+aXRlbShpKS0+c2V0RW5hYmxl
ZChmYWxzZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBPcHRpb246Ci0gICAg
ICAgICAgICBtX2NvbWJvLT5pbnNlcnRJdGVtKGksIGl0ZW1UZXh0KGkpKTsKLSAgICAgICAgICAg
IG1vZGVsLT5pdGVtKGkpLT5zZXRFbmFibGVkKGl0ZW1Jc0VuYWJsZWQoaSkpOworICAgICAgICBj
YXNlIFFXZWJTZWxlY3REYXRhOjpPcHRpb246CisgICAgICAgICAgICBtX2NvbWJvLT5pbnNlcnRJ
dGVtKGksIGRhdGEuaXRlbVRleHQoaSkpOworICAgICAgICAgICAgbW9kZWwtPml0ZW0oaSktPnNl
dEVuYWJsZWQoZGF0YS5pdGVtSXNFbmFibGVkKGkpKTsKKyAgICAgICAgICAgIGlmIChkYXRhLml0
ZW1Jc1NlbGVjdGVkKGkpKQorICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRleCA9IGk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KKworICAgIGlmIChjdXJyZW50SW5kZXgg
Pj0gMCkKKyAgICAgICAgbV9jb21iby0+c2V0Q3VycmVudEluZGV4KGN1cnJlbnRJbmRleCk7CiB9
CiAKIHZvaWQgUXRGYWxsYmFja1dlYlBvcHVwOjphY3RpdmVDaGFuZ2VkKGludCBpbmRleCkKQEAg
LTI0Miw3ICsyNDcsMTIgQEAgdm9pZCBRdEZhbGxiYWNrV2ViUG9wdXA6OmFjdGl2ZUNoYW5nZWQo
aW50IGluZGV4KQogICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIHZh
bHVlQ2hhbmdlZChpbmRleCk7CisgICAgZW1pdCBzZWxlY3RJdGVtKGluZGV4LCBmYWxzZSwgZmFs
c2UpOworfQorCitRV2ViUGFnZUNsaWVudCogUXRGYWxsYmFja1dlYlBvcHVwOjpwYWdlQ2xpZW50
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jaHJvbWVDbGllbnQtPnBsYXRmb3JtUGFnZUNsaWVu
dCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxs
YmFja1dlYlBvcHVwLmggYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBv
cHVwLmgKaW5kZXggZTZjMzcxZi4uN2M5OGZiNCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5oCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaApAQCAtMjAsNyArMjAsOSBAQAogI2lmbmRlZiBRdEZh
bGxiYWNrV2ViUG9wdXBfaAogI2RlZmluZSBRdEZhbGxiYWNrV2ViUG9wdXBfaAogCi0jaW5jbHVk
ZSAiUXRBYnN0cmFjdFdlYlBvcHVwLmgiCisjaW5jbHVkZSAiUGxhdGZvcm0uaCIKKyNpbmNsdWRl
ICJxd2Via2l0cGxhdGZvcm1wbHVnaW4uaCIKKwogI2luY2x1ZGUgPFFDb21ib0JveD4KIAogI2lm
bmRlZiBRVF9OT19DT01CT0JPWApAQCAtMjksMjEgKzMxLDMwIEBAIFFUX0JFR0lOX05BTUVTUEFD
RQogY2xhc3MgUUdyYXBoaWNzUHJveHlXaWRnZXQ7CiBRVF9FTkRfTkFNRVNQQUNFCiAKK2NsYXNz
IFFXZWJQYWdlQ2xpZW50OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENocm9tZUNs
aWVudFF0OwogY2xhc3MgUXRGYWxsYmFja1dlYlBvcHVwQ29tYm87CiAKLWNsYXNzIFF0RmFsbGJh
Y2tXZWJQb3B1cCA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgUXRBYnN0cmFjdFdlYlBvcHVwIHsK
K2NsYXNzIFF0RmFsbGJhY2tXZWJQb3B1cCA6IHB1YmxpYyBRV2ViU2VsZWN0TWV0aG9kIHsKICAg
ICBRX09CSkVDVAogcHVibGljOgotICAgIFF0RmFsbGJhY2tXZWJQb3B1cCgpOworICAgIFF0RmFs
bGJhY2tXZWJQb3B1cChjb25zdCBDaHJvbWVDbGllbnRRdCopOwogICAgIH5RdEZhbGxiYWNrV2Vi
UG9wdXAoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7CisgICAgdmlydHVhbCB2b2lkIHNo
b3coY29uc3QgUVdlYlNlbGVjdERhdGEmKTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOwogCiAg
ICAgdm9pZCBkZXN0cm95UG9wdXAoKTsKIAorICAgIHZvaWQgc2V0R2VvbWV0cnkoY29uc3QgUVJl
Y3QmIHJlY3QpIHsgbV9nZW9tZXRyeSA9IHJlY3Q7IH0KKyAgICBRUmVjdCBnZW9tZXRyeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZ2VvbWV0cnk7IH0KKworICAgIHZvaWQgc2V0Rm9udChjb25zdCBRRm9u
dCYgZm9udCkgeyBtX2ZvbnQgPSBmb250OyB9CisgICAgUUZvbnQgZm9udCgpIGNvbnN0IHsgcmV0
dXJuIG1fZm9udDsgfQorCiBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQgYWN0aXZlQ2hhbmdlZChp
bnQpOwogCkBAIC01MSw4ICs2MiwxMyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBRdEZh
bGxiYWNrV2ViUG9wdXBDb21ibzsKICAgICBib29sIG1fcG9wdXBWaXNpYmxlOwogICAgIFF0RmFs
bGJhY2tXZWJQb3B1cENvbWJvKiBtX2NvbWJvOworICAgIGNvbnN0IENocm9tZUNsaWVudFF0KiBt
X2Nocm9tZUNsaWVudDsKKyAgICBRUmVjdCBtX2dlb21ldHJ5OworICAgIFFGb250IG1fZm9udDsK
KworICAgIFFXZWJQYWdlQ2xpZW50KiBwYWdlQ2xpZW50KCkgY29uc3Q7CiAKLSAgICB2b2lkIHBv
cHVsYXRlKCk7CisgICAgdm9pZCBwb3B1bGF0ZShjb25zdCBRV2ViU2VsZWN0RGF0YSYpOwogI2lm
IEVOQUJMRShTWU1CSUFOX0RJQUxPR19QUk9WSURFUlMpCiAgICAgdm9pZCBzaG93UzYwQnJvd3Nl
ckRpYWxvZygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UXRNYWVtb1dlYlBvcHVwLmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdE1hZW1vV2Vi
UG9wdXAuY3BwCmluZGV4IDI5YTE2Y2IuLjkwYWYwYzYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9RdE1hZW1vV2ViUG9wdXAuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9RdE1hZW1vV2ViUG9wdXAuY3BwCkBAIC00MSwxMSArNDEsMTEgQEAgdm9pZCBNYWVt
bzVQb3B1cDo6cG9wdWxhdGVMaXN0KCkKIHsKICAgICBRTGlzdFdpZGdldEl0ZW0qIGxpc3RJdGVt
OwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9kYXRhLml0ZW1Db3VudCgpOyArK2kpIHsKLSAg
ICAgICAgaWYgKG1fZGF0YS5pdGVtVHlwZShpKSA9PSBRdEFic3RyYWN0V2ViUG9wdXA6Ok9wdGlv
bikgeworICAgICAgICBpZiAobV9kYXRhLml0ZW1UeXBlKGkpID09IFFXZWJTZWxlY3REYXRhOjpP
cHRpb24pIHsKICAgICAgICAgICAgIGxpc3RJdGVtID0gbmV3IFFMaXN0V2lkZ2V0SXRlbShtX2Rh
dGEuaXRlbVRleHQoaSkpOwogICAgICAgICAgICAgbV9saXN0LT5hZGRJdGVtKGxpc3RJdGVtKTsK
ICAgICAgICAgICAgIGxpc3RJdGVtLT5zZXRTZWxlY3RlZChtX2RhdGEuaXRlbUlzU2VsZWN0ZWQo
aSkpOwotICAgICAgICB9IGVsc2UgaWYgKG1fZGF0YS5pdGVtVHlwZShpKSA9PSBRdEFic3RyYWN0
V2ViUG9wdXA6Okdyb3VwKSB7CisgICAgICAgIH0gZWxzZSBpZiAobV9kYXRhLml0ZW1UeXBlKGkp
ID09IFFXZWJTZWxlY3REYXRhOjpHcm91cCkgewogICAgICAgICAgICAgbGlzdEl0ZW0gPSBuZXcg
UUxpc3RXaWRnZXRJdGVtKG1fZGF0YS5pdGVtVGV4dChpKSk7CiAgICAgICAgICAgICBtX2xpc3Qt
PmFkZEl0ZW0obGlzdEl0ZW0pOwogICAgICAgICAgICAgbGlzdEl0ZW0tPnNldFNlbGVjdGVkKGZh
bHNlKTsKQEAgLTYyLDggKzYyLDcgQEAgdm9pZCBNYWVtbzVQb3B1cDo6b25JdGVtU2VsZWN0ZWQo
UUxpc3RXaWRnZXRJdGVtKiBpdGVtKQogfQogCiBRdE1hZW1vV2ViUG9wdXA6OlF0TWFlbW9XZWJQ
b3B1cCgpCi0gICAgOiBRdEFic3RyYWN0V2ViUG9wdXAoKQotICAgICwgbV9wb3B1cCgwKQorICAg
IDogbV9wb3B1cCgwKQogewogfQogCkBAIC03MywzMCArNzIsMzAgQEAgUXRNYWVtb1dlYlBvcHVw
Ojp+UXRNYWVtb1dlYlBvcHVwKCkKICAgICAgICAgbV9wb3B1cC0+ZGVsZXRlTGF0ZXIoKTsKIH0K
IAotTWFlbW81UG9wdXAqIFF0TWFlbW9XZWJQb3B1cDo6Y3JlYXRlU2luZ2xlU2VsZWN0aW9uUG9w
dXAoKQorTWFlbW81UG9wdXAqIFF0TWFlbW9XZWJQb3B1cDo6Y3JlYXRlU2luZ2xlU2VsZWN0aW9u
UG9wdXAoY29uc3QgUVdlYlNlbGVjdERhdGEmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIG5ldyBNYWVt
bzVTaW5nbGVTZWxlY3Rpb25Qb3B1cCgqdGhpcyk7CisgICAgcmV0dXJuIG5ldyBNYWVtbzVTaW5n
bGVTZWxlY3Rpb25Qb3B1cChkYXRhKTsKIH0KIAotTWFlbW81UG9wdXAqIFF0TWFlbW9XZWJQb3B1
cDo6Y3JlYXRlTXVsdGlwbGVTZWxlY3Rpb25Qb3B1cCgpCitNYWVtbzVQb3B1cCogUXRNYWVtb1dl
YlBvcHVwOjpjcmVhdGVNdWx0aXBsZVNlbGVjdGlvblBvcHVwKGNvbnN0IFFXZWJTZWxlY3REYXRh
JiBkYXRhKQogewotICAgIHJldHVybiBuZXcgTWFlbW81TXVsdGlwbGVTZWxlY3Rpb25Qb3B1cCgq
dGhpcyk7CisgICAgcmV0dXJuIG5ldyBNYWVtbzVNdWx0aXBsZVNlbGVjdGlvblBvcHVwKGRhdGEp
OwogfQogCi1NYWVtbzVQb3B1cCogUXRNYWVtb1dlYlBvcHVwOjpjcmVhdGVQb3B1cCgpCitNYWVt
bzVQb3B1cCogUXRNYWVtb1dlYlBvcHVwOjpjcmVhdGVQb3B1cChjb25zdCBRV2ViU2VsZWN0RGF0
YSYgZGF0YSkKIHsKLSAgICBNYWVtbzVQb3B1cCogcmVzdWx0ID0gbXVsdGlwbGUoKSA/IGNyZWF0
ZU11bHRpcGxlU2VsZWN0aW9uUG9wdXAoKSA6IGNyZWF0ZVNpbmdsZVNlbGVjdGlvblBvcHVwKCk7
CisgICAgTWFlbW81UG9wdXAqIHJlc3VsdCA9IGRhdGEubXVsdGlwbGUoKSA/IGNyZWF0ZU11bHRp
cGxlU2VsZWN0aW9uUG9wdXAoZGF0YSkgOiBjcmVhdGVTaW5nbGVTZWxlY3Rpb25Qb3B1cChkYXRh
KTsKICAgICBjb25uZWN0KHJlc3VsdCwgU0lHTkFMKGZpbmlzaGVkKGludCkpLCB0aGlzLCBTTE9U
KHBvcHVwQ2xvc2VkKCkpKTsKICAgICBjb25uZWN0KHJlc3VsdCwgU0lHTkFMKGl0ZW1DbGlja2Vk
KGludCkpLCB0aGlzLCBTTE9UKGl0ZW1DbGlja2VkKGludCkpKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi12b2lkIFF0TWFlbW9XZWJQb3B1cDo6c2hvdygpCit2b2lkIFF0TWFlbW9XZWJQb3B1
cDo6c2hvdyhjb25zdCBRV2ViU2VsZWN0RGF0YSYgZGF0YSkKIHsKLSAgICBpZiAoIXBhZ2VDbGll
bnQoKSB8fCBtX3BvcHVwKQorICAgIGlmIChtX3BvcHVwKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3BvcHVwID0gY3JlYXRlUG9wdXAoKTsKKyAgICBtX3BvcHVwID0gY3JlYXRlUG9wdXAoZGF0
YSk7CiAgICAgbV9wb3B1cC0+c2hvdygpOwogfQogCkBAIC0xMTUsMTUgKzExNCwxNSBAQCB2b2lk
IFF0TWFlbW9XZWJQb3B1cDo6cG9wdXBDbG9zZWQoKQogCiAgICAgbV9wb3B1cC0+ZGVsZXRlTGF0
ZXIoKTsKICAgICBtX3BvcHVwID0gMDsKLSAgICBwb3B1cERpZEhpZGUoKTsKKyAgICBlbWl0IGRp
ZEhpZGUoKTsKIH0KIAogdm9pZCBRdE1hZW1vV2ViUG9wdXA6Oml0ZW1DbGlja2VkKGludCBpZHgp
CiB7Ci0gICAgc2VsZWN0SXRlbShpZHgsIHRydWUsIGZhbHNlKTsKKyAgICBlbWl0IHNlbGVjdEl0
ZW0oaWR4LCB0cnVlLCBmYWxzZSk7CiB9CiAKLU1hZW1vNVNpbmdsZVNlbGVjdGlvblBvcHVwOjpN
YWVtbzVTaW5nbGVTZWxlY3Rpb25Qb3B1cChRdEFic3RyYWN0V2ViUG9wdXAmIGRhdGEpCitNYWVt
bzVTaW5nbGVTZWxlY3Rpb25Qb3B1cDo6TWFlbW81U2luZ2xlU2VsZWN0aW9uUG9wdXAoY29uc3Qg
UVdlYlNlbGVjdERhdGEmIGRhdGEpCiAgICAgOiBNYWVtbzVQb3B1cChkYXRhKQogewogICAgIC8v
IHdlIHRyeSB0byBnZXQgdGhlIHN0YW5kYXJkIGxpc3QgdGl0bGUgdGhlIHdlYiBicm93c2VyIGlz
IHVzaW5nCkBAIC0xNzAsNyArMTY5LDcgQEAgcHJpdmF0ZToKICAgICBRUGl4bWFwIHRpY2tNYXJr
OwogfTsKIAotTWFlbW81TXVsdGlwbGVTZWxlY3Rpb25Qb3B1cDo6TWFlbW81TXVsdGlwbGVTZWxl
Y3Rpb25Qb3B1cChRdEFic3RyYWN0V2ViUG9wdXAmIGRhdGEpCitNYWVtbzVNdWx0aXBsZVNlbGVj
dGlvblBvcHVwOjpNYWVtbzVNdWx0aXBsZVNlbGVjdGlvblBvcHVwKGNvbnN0IFFXZWJTZWxlY3RE
YXRhJiBkYXRhKQogICAgIDogTWFlbW81UG9wdXAoZGF0YSkKIHsKICAgICAvLyB3ZSB0cnkgdG8g
Z2V0IHRoZSBzdGFuZGFyZCBsaXN0IHRpdGxlIHRoZSB3ZWIgYnJvd3NlciBpcyB1c2luZwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0TWFlbW9XZWJQb3B1cC5oIGIvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0TWFlbW9XZWJQb3B1cC5oCmluZGV4IGExNjNhMjAuLjU0
MzNiNzUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdE1hZW1vV2ViUG9w
dXAuaAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRNYWVtb1dlYlBvcHVwLmgKQEAg
LTIwLDcgKzIwLDcgQEAKICNpZm5kZWYgUXRNYWVtb1dlYlBvcHVwX2gKICNkZWZpbmUgUXRNYWVt
b1dlYlBvcHVwX2gKIAotI2luY2x1ZGUgIlF0QWJzdHJhY3RXZWJQb3B1cC5oIgorI2luY2x1ZGUg
InF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oIgogCiAjaW5jbHVkZSA8UURpYWxvZz4KIApAQCAtMzMs
NyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNYWVtbzVQb3B1cCA6IHB1Ymxp
YyBRRGlhbG9nIHsKICAgICBRX09CSkVDVAogcHVibGljOgotICAgIE1hZW1vNVBvcHVwKFF0QWJz
dHJhY3RXZWJQb3B1cCYgZGF0YSkgOiBtX2RhdGEoZGF0YSkge30KKyAgICBNYWVtbzVQb3B1cChj
b25zdCBRV2ViU2VsZWN0RGF0YSYgZGF0YSkgOiBtX2RhdGEoZGF0YSkge30KIAogc2lnbmFsczoK
ICAgICB2b2lkIGl0ZW1DbGlja2VkKGludCBpZHgpOwpAQCAtNDQsMTggKzQ0LDE4IEBAIHByb3Rl
Y3RlZCBzbG90czoKIHByb3RlY3RlZDoKICAgICB2b2lkIHBvcHVsYXRlTGlzdCgpOwogCi0gICAg
UXRBYnN0cmFjdFdlYlBvcHVwJiBtX2RhdGE7CisgICAgY29uc3QgUVdlYlNlbGVjdERhdGEmIG1f
ZGF0YTsKICAgICBRTGlzdFdpZGdldCogbV9saXN0OwogfTsKIAogCi1jbGFzcyBRdE1hZW1vV2Vi
UG9wdXAgOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIFF0QWJzdHJhY3RXZWJQb3B1cCB7CitjbGFz
cyBRdE1hZW1vV2ViUG9wdXAgOiBwdWJsaWMgUVdlYlNlbGVjdE1ldGhvZCB7CiAgICAgUV9PQkpF
Q1QKIHB1YmxpYzoKICAgICBRdE1hZW1vV2ViUG9wdXAoKTsKICAgICB+UXRNYWVtb1dlYlBvcHVw
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2hvdygpOworICAgIHZpcnR1YWwgdm9pZCBzaG93KGNv
bnN0IFFXZWJTZWxlY3REYXRhJiBkYXRhKTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOwogCiBw
cml2YXRlIHNsb3RzOgpAQCAtNjUsMjMgKzY1LDIzIEBAIHByaXZhdGUgc2xvdHM6CiBwcml2YXRl
OgogICAgIE1hZW1vNVBvcHVwKiBtX3BvcHVwOwogCi0gICAgTWFlbW81UG9wdXAqIGNyZWF0ZVBv
cHVwKCk7Ci0gICAgTWFlbW81UG9wdXAqIGNyZWF0ZVNpbmdsZVNlbGVjdGlvblBvcHVwKCk7Ci0g
ICAgTWFlbW81UG9wdXAqIGNyZWF0ZU11bHRpcGxlU2VsZWN0aW9uUG9wdXAoKTsKKyAgICBNYWVt
bzVQb3B1cCogY3JlYXRlUG9wdXAoY29uc3QgUVdlYlNlbGVjdERhdGEmIGRhdGEpOworICAgIE1h
ZW1vNVBvcHVwKiBjcmVhdGVTaW5nbGVTZWxlY3Rpb25Qb3B1cChjb25zdCBRV2ViU2VsZWN0RGF0
YSYgZGF0YSk7CisgICAgTWFlbW81UG9wdXAqIGNyZWF0ZU11bHRpcGxlU2VsZWN0aW9uUG9wdXAo
Y29uc3QgUVdlYlNlbGVjdERhdGEmIGRhdGEpOwogfTsKIAogCiBjbGFzcyBNYWVtbzVTaW5nbGVT
ZWxlY3Rpb25Qb3B1cCA6IHB1YmxpYyBNYWVtbzVQb3B1cCB7CiAgICAgUV9PQkpFQ1QKIHB1Ymxp
YzoKLSAgICBNYWVtbzVTaW5nbGVTZWxlY3Rpb25Qb3B1cChRdEFic3RyYWN0V2ViUG9wdXAmIGRh
dGEpOworICAgIE1hZW1vNVNpbmdsZVNlbGVjdGlvblBvcHVwKGNvbnN0IFFXZWJTZWxlY3REYXRh
JiBkYXRhKTsKIH07CiAKIAogY2xhc3MgTWFlbW81TXVsdGlwbGVTZWxlY3Rpb25Qb3B1cCA6IHB1
YmxpYyBNYWVtbzVQb3B1cCB7CiAgICAgUV9PQkpFQ1QKIHB1YmxpYzoKLSAgICBNYWVtbzVNdWx0
aXBsZVNlbGVjdGlvblBvcHVwKFF0QWJzdHJhY3RXZWJQb3B1cCYgZGF0YSk7CisgICAgTWFlbW81
TXVsdGlwbGVTZWxlY3Rpb25Qb3B1cChjb25zdCBRV2ViU2VsZWN0RGF0YSYgZGF0YSk7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdp
bi5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5jcHAKaW5k
ZXggY2NjYjA3Yy4uZmQ4NmU5MSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1F0UGxhdGZvcm1QbHVnaW4uY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBs
YXRmb3JtUGx1Z2luLmNwcApAQCAtMjksNzAgKzI5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTZWxlY3REYXRhIDogcHVibGljIFFXZWJTZWxlY3REYXRhIHsKLXB1YmxpYzoK
LSAgICBTZWxlY3REYXRhKFF0QWJzdHJhY3RXZWJQb3B1cCogZGF0YSkgOiBkKGRhdGEpIHt9Ci0K
LSAgICB2aXJ0dWFsIEl0ZW1UeXBlIGl0ZW1UeXBlKGludCkgY29uc3Q7Ci0gICAgdmlydHVhbCBR
U3RyaW5nIGl0ZW1UZXh0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gZC0+aXRlbVRleHQoaW5k
ZXgpOyB9Ci0gICAgdmlydHVhbCBRU3RyaW5nIGl0ZW1Ub29sVGlwKGludCBpbmRleCkgY29uc3Qg
eyByZXR1cm4gZC0+aXRlbVRvb2xUaXAoaW5kZXgpOyB9Ci0gICAgdmlydHVhbCBib29sIGl0ZW1J
c0VuYWJsZWQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBkLT5pdGVtSXNFbmFibGVkKGluZGV4
KTsgfQotICAgIHZpcnR1YWwgaW50IGl0ZW1Db3VudCgpIGNvbnN0IHsgcmV0dXJuIGQtPml0ZW1D
b3VudCgpOyB9Ci0gICAgdmlydHVhbCBib29sIGl0ZW1Jc1NlbGVjdGVkKGludCBpbmRleCkgY29u
c3QgeyByZXR1cm4gZC0+aXRlbUlzU2VsZWN0ZWQoaW5kZXgpOyB9Ci0gICAgdmlydHVhbCBib29s
IG11bHRpcGxlKCkgY29uc3QgeyByZXR1cm4gZC0+bXVsdGlwbGUoKTsgfQotCi1wcml2YXRlOgot
ICAgIFF0QWJzdHJhY3RXZWJQb3B1cCogZDsKLX07Ci0KLVFXZWJTZWxlY3REYXRhOjpJdGVtVHlw
ZSBTZWxlY3REYXRhOjppdGVtVHlwZShpbnQgaW5kZXgpIGNvbnN0Ci17Ci0gICAgc3dpdGNoIChk
LT5pdGVtVHlwZShpbmRleCkpIHsKLSAgICBjYXNlIFF0QWJzdHJhY3RXZWJQb3B1cDo6U2VwYXJh
dG9yOiByZXR1cm4gU2VwYXJhdG9yOwotICAgIGNhc2UgUXRBYnN0cmFjdFdlYlBvcHVwOjpHcm91
cDogcmV0dXJuIEdyb3VwOwotICAgIGRlZmF1bHQ6IHJldHVybiBPcHRpb247Ci0gICAgfQotfQot
Ci1TZWxlY3RJbnB1dE1ldGhvZFdyYXBwZXI6OlNlbGVjdElucHV0TWV0aG9kV3JhcHBlcihRV2Vi
U2VsZWN0TWV0aG9kKiBwbHVnaW4pCi0gICAgOiBtX3BsdWdpbihwbHVnaW4pCi0gICAgLCBtX3Nl
bGVjdERhdGEoMCkKLXsKLSAgICBtX3BsdWdpbi0+c2V0UGFyZW50KHRoaXMpOwotICAgIGNvbm5l
Y3QobV9wbHVnaW4sIFNJR05BTChkaWRIaWRlKCkpLCB0aGlzLCBTTE9UKGRpZEhpZGUoKSkpOwot
ICAgIGNvbm5lY3QobV9wbHVnaW4sIFNJR05BTChzZWxlY3RJdGVtKGludCwgYm9vbCwgYm9vbCkp
LCB0aGlzLCBTTE9UKHNlbGVjdEl0ZW0oaW50LCBib29sLCBib29sKSkpOwotfQotCi1TZWxlY3RJ
bnB1dE1ldGhvZFdyYXBwZXI6On5TZWxlY3RJbnB1dE1ldGhvZFdyYXBwZXIoKQotewotICAgIGRl
bGV0ZSBtX3NlbGVjdERhdGE7Ci19Ci0KLXZvaWQgU2VsZWN0SW5wdXRNZXRob2RXcmFwcGVyOjpz
aG93KCkKLXsKLSAgICBpZiAobV9zZWxlY3REYXRhKQotICAgICAgICBkZWxldGUgbV9zZWxlY3RE
YXRhOwotICAgIG1fc2VsZWN0RGF0YSA9IG5ldyBTZWxlY3REYXRhKHRoaXMpOwotICAgIG1fcGx1
Z2luLT5zaG93KCptX3NlbGVjdERhdGEpOwotfQotCi12b2lkIFNlbGVjdElucHV0TWV0aG9kV3Jh
cHBlcjo6aGlkZSgpCi17Ci0gICAgbV9wbHVnaW4tPmhpZGUoKTsKLX0KLQotdm9pZCBTZWxlY3RJ
bnB1dE1ldGhvZFdyYXBwZXI6OnNlbGVjdEl0ZW0oaW50IGluZGV4LCBib29sIGFsbG93TXVsdGlw
bHlTZWxlY3Rpb25zLCBib29sIHNoaWZ0KQotewotICAgIFF0QWJzdHJhY3RXZWJQb3B1cDo6c2Vs
ZWN0SXRlbShpbmRleCwgYWxsb3dNdWx0aXBseVNlbGVjdGlvbnMsIHNoaWZ0KTsKLX0KLQotdm9p
ZCBTZWxlY3RJbnB1dE1ldGhvZFdyYXBwZXI6OmRpZEhpZGUoKQotewotICAgIFF0QWJzdHJhY3RX
ZWJQb3B1cDo6cG9wdXBEaWRIaWRlKCk7Ci19Ci0KLS8vIFF0UGxhdGZvcm1QbHVnaW4KLQogYm9v
bCBRdFBsYXRmb3JtUGx1Z2luOjpsb2FkKGNvbnN0IFFTdHJpbmcmIGZpbGUpCiB7CiAgICAgbV9s
b2FkZXIuc2V0RmlsZU5hbWUoZmlsZSk7CkBAIC0xNTIsMTcgKzg4LDEwIEBAIFFXZWJLaXRQbGF0
Zm9ybVBsdWdpbiogUXRQbGF0Zm9ybVBsdWdpbjo6cGx1Z2luKCkKICAgICByZXR1cm4gbV9wbHVn
aW47CiB9CiAKLVF0QWJzdHJhY3RXZWJQb3B1cCogUXRQbGF0Zm9ybVBsdWdpbjo6Y3JlYXRlU2Vs
ZWN0SW5wdXRNZXRob2QoKQorUVdlYlNlbGVjdE1ldGhvZCogUXRQbGF0Zm9ybVBsdWdpbjo6Y3Jl
YXRlU2VsZWN0SW5wdXRNZXRob2QoKQogewogICAgIFFXZWJLaXRQbGF0Zm9ybVBsdWdpbiogcCA9
IHBsdWdpbigpOwotICAgIGlmICghcCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBRV2ViU2Vs
ZWN0TWV0aG9kKiBzZWxlY3RvciA9IHAtPmNyZWF0ZVNlbGVjdElucHV0TWV0aG9kKCk7Ci0gICAg
aWYgKCFzZWxlY3RvcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gbmV3IFNlbGVj
dElucHV0TWV0aG9kV3JhcHBlcihzZWxlY3Rvcik7CisgICAgcmV0dXJuIHAgPyBwLT5jcmVhdGVT
ZWxlY3RJbnB1dE1ldGhvZCgpIDogMDsKIH0KIAogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1F0UGxhdGZvcm1QbHVnaW4uaAppbmRleCAyZGU0ODU5Li45YmRhYjc1IDEwMDY0NAotLS0gYS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5oCisrKyBiL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmgKQEAgLTIxLDggKzIxLDYgQEAKICNp
Zm5kZWYgUXRQbGF0Zm9ybVBsdWdpbl9oCiAjZGVmaW5lIFF0UGxhdGZvcm1QbHVnaW5faAogCi0j
aW5jbHVkZSAiUXRBYnN0cmFjdFdlYlBvcHVwLmgiCi0jaW5jbHVkZSA8UU9iamVjdD4KICNpbmNs
dWRlIDxRUGx1Z2luTG9hZGVyPgogCiBjbGFzcyBRV2ViU2VsZWN0TWV0aG9kOwpAQCAtMzIsMzAg
KzMwLDEyIEBAIGNsYXNzIFFXZWJTZWxlY3REYXRhOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFNlbGVjdElucHV0TWV0aG9kV3JhcHBlciA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMg
UXRBYnN0cmFjdFdlYlBvcHVwIHsKLSAgICBRX09CSkVDVAotcHVibGljOgotICAgIFNlbGVjdElu
cHV0TWV0aG9kV3JhcHBlcihRV2ViU2VsZWN0TWV0aG9kKiBwbHVnaW4pOwotICAgIH5TZWxlY3RJ
bnB1dE1ldGhvZFdyYXBwZXIoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7Ci0gICAgdmly
dHVhbCB2b2lkIGhpZGUoKTsKLQotcHJpdmF0ZSBRX1NMT1RTOgotICAgIHZvaWQgc2VsZWN0SXRl
bShpbnQgaW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBseVNlbGVjdGlvbnMsIGJvb2wgc2hpZnQpOwot
ICAgIHZvaWQgZGlkSGlkZSgpOwotCi1wcml2YXRlOgotICAgIFFXZWJTZWxlY3RNZXRob2QqIG1f
cGx1Z2luOwotICAgIFFXZWJTZWxlY3REYXRhKiBtX3NlbGVjdERhdGE7Ci19OwotCiBjbGFzcyBR
dFBsYXRmb3JtUGx1Z2luIHsKIHB1YmxpYzoKICAgICBRdFBsYXRmb3JtUGx1Z2luKCkgOiBtX2xv
YWRlZChmYWxzZSksIG1fcGx1Z2luKDApIHt9CiAgICAgflF0UGxhdGZvcm1QbHVnaW4oKTsKIAot
ICAgIFF0QWJzdHJhY3RXZWJQb3B1cCogY3JlYXRlU2VsZWN0SW5wdXRNZXRob2QoKTsKKyAgICBR
V2ViU2VsZWN0TWV0aG9kKiBjcmVhdGVTZWxlY3RJbnB1dE1ldGhvZCgpOwogICAgIFFXZWJOb3Rp
ZmljYXRpb25QcmVzZW50ZXIqIGNyZWF0ZU5vdGlmaWNhdGlvblByZXNlbnRlcigpOwogCiAgICAg
UVdlYktpdFBsYXRmb3JtUGx1Z2luKiBwbHVnaW4oKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvU2VhcmNoUG9wdXBNZW51UXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjYzNDM3Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvU2VhcmNoUG9wdXBNZW51UXQuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgQyAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAx
MCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnVRdC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1NlYXJjaFBvcHVwTWVudVF0OjpTZWFyY2hQb3B1cE1lbnVRdChQYXNzUmVm
UHRyPFBvcHVwTWVudT4gcG9wdXApCisgICAgOiBtX3BvcHVwKHBvcHVwKQoreworfQorCitQb3B1
cE1lbnUqIFNlYXJjaFBvcHVwTWVudVF0Ojpwb3B1cE1lbnUoKQoreworICAgIHJldHVybiBtX3Bv
cHVwLmdldCgpOworfQorCit2b2lkIFNlYXJjaFBvcHVwTWVudVF0OjpzYXZlUmVjZW50U2VhcmNo
ZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQoreworfQorCit2
b2lkIFNlYXJjaFBvcHVwTWVudVF0Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3Ry
aW5nJiwgVmVjdG9yPFN0cmluZz4mKQoreworfQorCitib29sIFNlYXJjaFBvcHVwTWVudVF0Ojpl
bmFibGVkKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudVF0LmggYi9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51UXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xMWE5NjQxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1NlYXJjaFBvcHVwTWVudVF0LmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcyku
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaWZuZGVmIFNlYXJjaFBvcHVwTWVudVF0X2gKKyNkZWZpbmUgU2VhcmNoUG9wdXBNZW51
UXRfaAorCisjaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgU2VhcmNoUG9wdXBNZW51UXQgOiBwdWJsaWMgU2VhcmNoUG9wdXBNZW51IHsK
K3B1YmxpYzoKKyAgICBTZWFyY2hQb3B1cE1lbnVRdChQYXNzUmVmUHRyPFBvcHVwTWVudT4gcG9w
dXApOworCisgICAgdmlydHVhbCBQb3B1cE1lbnUqIHBvcHVwTWVudSgpOworICAgIHZpcnR1YWwg
dm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50
U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNo
SXRlbXMpOworICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCk7CisKK3ByaXZhdGU6CisgICAgUmVm
UHRyPFBvcHVwTWVudT4gbV9wb3B1cDsKK307CisKK30KKworI2VuZGlmIC8vIFNlYXJjaFBvcHVw
TWVudVF0X2gKLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>