<?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>66739</bug_id>
          
          <creation_ts>2011-08-22 17:45:59 -0700</creation_ts>
          <short_desc>Remove WebCore/editing/android and other Android-specific directories</short_desc>
          <delta_ts>2011-08-23 03:34:48 -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>
          
          <blocked>66688</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>peter</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>455110</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-22 17:45:59 -0700</bug_when>
    <thetext>Remove WebCore/editing/android and other Android-specific directories</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455112</commentid>
    <comment_count>1</comment_count>
      <attachid>104778</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-22 17:47:03 -0700</bug_when>
    <thetext>Created attachment 104778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455115</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-22 17:48:08 -0700</bug_when>
    <thetext>@Peter: Please check whether we can remove all these files!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455262</commentid>
    <comment_count>3</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2011-08-23 02:09:19 -0700</bug_when>
    <thetext>LGTM. Steve, could you verify?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455273</commentid>
    <comment_count>4</comment_count>
      <attachid>104778</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-08-23 02:31:52 -0700</bug_when>
    <thetext>Comment on attachment 104778
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455284</commentid>
    <comment_count>5</comment_count>
      <attachid>104778</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-23 03:34:44 -0700</bug_when>
    <thetext>Comment on attachment 104778
Patch

Clearing flags on attachment: 104778

Committed r93590: &lt;http://trac.webkit.org/changeset/93590&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455285</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-23 03:34:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104778</attachid>
            <date>2011-08-22 17:47:03 -0700</date>
            <delta_ts>2011-08-23 03:34:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66739-20110822174702.patch</filename>
            <type>text/plain</type>
            <size>51999</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTM1NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTEtMDgtMjIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZW1vdmUgV2ViQ29yZS9lZGl0aW5nL2FuZHJvaWQgYW5kIG90aGVyIEFuZHJvaWQtc3BlY2lmaWMg
ZGlyZWN0b3JpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY2NzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm93IHRoYXQgQW5kcm9pZCBzaGFyZXMgbW9yZSBjb2RlIHdpdGggQ2hyb21pdW0sIHdlIGRv
bid0IG5lZWQgdGhlc2UKKyAgICAgICAgQW5kcm9pZC1zcGVjaWZpYyBmaWxlcy4KKworICAgICAg
ICAqIHd0Zi9hbmRyb2lkOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi9hbmRyb2lkL0FuZHJvaWRU
aHJlYWRpbmcuaDogUmVtb3ZlZC4KKyAgICAgICAgKiB3dGYvYW5kcm9pZC9NYWluVGhyZWFkQW5k
cm9pZC5jcHA6IFJlbW92ZWQuCisKIDIwMTEtMDgtMjIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBTYW1wbGluZyBjb3VudGVyIHN1cHBvcnQgaXMgaW4gdGhlIGJ5
dGVjb2RlIGRpcmVjdG9yeQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9hbmRyb2lk
L0FuZHJvaWRUaHJlYWRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL2FuZHJvaWQvQW5kcm9pZFRocmVhZGluZy5oCShyZXZpc2lvbiA5MzU2NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvYW5kcm9pZC9BbmRyb2lkVGhyZWFkaW5nLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAyMDA5LCBUaGUgQW5kcm9p
ZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBBbmRyb2lkVGhyZWFkaW5nX2gK
LSNkZWZpbmUgQW5kcm9pZFRocmVhZGluZ19oCi0KLW5hbWVzcGFjZSBXVEYgewotCi0vLyBBbiBp
bnRlcmZhY2UgdG8gdGhlIGVtYmVkZGluZyBsYXllciwgd2hpY2ggcHJvdmlkZXMgdGhyZWFkaW5n
IHN1cHBvcnQuCi1jbGFzcyBBbmRyb2lkVGhyZWFkaW5nIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
dm9pZCBzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKCk7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEFuZHJvaWRUaHJlYWRpbmdfaApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9hbmRyb2lkL01haW5UaHJlYWRBbmRyb2lkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2FuZHJvaWQvTWFpblRocmVhZEFu
ZHJvaWQuY3BwCShyZXZpc2lvbiA5MzU2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
YW5kcm9pZC9NYWluVGhyZWFkQW5kcm9pZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNDIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAyMDA5LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9q
ZWN0Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIE9XTkVSIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIK
LQotI2luY2x1ZGUgIkFuZHJvaWRUaHJlYWRpbmcuaCIKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXZv
aWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSgpCi17Ci19Ci0KLXZvaWQgc2NoZWR1bGVE
aXNwYXRjaEZ1bmN0aW9uc09uTWFpblRocmVhZCgpCi17Ci0gICAgQW5kcm9pZFRocmVhZGluZzo6
c2NoZWR1bGVEaXNwYXRjaEZ1bmN0aW9uc09uTWFpblRocmVhZCgpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzNTY3KQorKysgU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDgtMjIg
IEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgV2ViQ29y
ZS9lZGl0aW5nL2FuZHJvaWQgYW5kIG90aGVyIEFuZHJvaWQtc3BlY2lmaWMgZGlyZWN0b3JpZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NzM5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm93IHRoYXQg
QW5kcm9pZCBzaGFyZXMgbW9yZSBjb2RlIHdpdGggQ2hyb21pdW0sIHdlIGRvbid0IG5lZWQgdGhl
c2UKKyAgICAgICAgQW5kcm9pZC1zcGVjaWZpYyBmaWxlcy4KKworICAgICAgICAqIGVkaXRpbmcv
YW5kcm9pZDogUmVtb3ZlZC4KKyAgICAgICAgKiBlZGl0aW5nL2FuZHJvaWQvRWRpdG9yQW5kcm9p
ZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaGlzdG9yeS9hbmRyb2lkOiBSZW1vdmVkLgorICAg
ICAgICAqIGhpc3RvcnkvYW5kcm9pZC9BbmRyb2lkV2ViSGlzdG9yeUJyaWRnZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIGhpc3RvcnkvYW5kcm9pZC9IaXN0b3J5SXRlbUFuZHJvaWQuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIHBhZ2UvYW5kcm9pZDogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL2Fu
ZHJvaWQvRHJhZ0NvbnRyb2xsZXJBbmRyb2lkLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdl
L2FuZHJvaWQvRXZlbnRIYW5kbGVyQW5kcm9pZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9hbmRyb2lkOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvYW5kcm9pZC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oOiBSZW1vdmVkLgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvYW5kcm9pZC9Db29raWVKYXJBbmRyb2lkLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2FuZHJvaWQvUHJveHlTZXJ2ZXJBbmRyb2lkLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2FuZHJvaWQvUmVzb3VyY2VF
cnJvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvYW5kcm9pZC9SZXNv
dXJjZUhhbmRsZUFuZHJvaWQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvYW5kcm9pZC9SZXNvdXJjZUxvYWRlckFuZHJvaWQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2FuZHJvaWQvUmVzb3VyY2VSZXF1ZXN0Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9hbmRyb2lkL1Jlc291cmNlUmVxdWVzdEFuZHJvaWQuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvYW5kcm9pZC9SZXNvdXJjZVJl
c3BvbnNlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9hbmRyb2lkOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvYW5kcm9pZC9IeXBoZW5hdGlvbkFuZHJvaWQu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvYW5kcm9pZC9UZXh0QnJlYWtJ
dGVyYXRvckludGVybmFsSUNVLmNwcDogUmVtb3ZlZC4KKwogMjAxMS0wOC0yMiAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBzaG93TW9kYWxEaWFsb2cgZG9l
cyBub3QgY29ycmVjdGx5IHJldHVybiB0aGUgZGVmaW5lZCByZXR1cm5WYWx1ZSBpbiBjYXNlIGRv
bWFpbiByZWxheGluZyBpcyB1c2VkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2FuZHJv
aWQvRWRpdG9yQW5kcm9pZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9hbmRyb2lkL0VkaXRvckFuZHJvaWQuY3BwCShyZXZpc2lvbiA5MzU2NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvYW5kcm9pZC9FZGl0b3JBbmRyb2lkLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IDIwMDksIFRoZSBBbmRyb2lkIE9wZW4g
U291cmNlIFByb2plY3QKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiRWRpdG9yLmgiCi0KLSNpbmNsdWRlICJDbGlwYm9hcmRBbmRyb2lkLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENs
aXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSopCi17Ci0gICAgcmV0
dXJuIG5ldyBDbGlwYm9hcmRBbmRyb2lkKHBvbGljeSwgQ2xpcGJvYXJkOjpDb3B5QW5kUGFzdGUp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L2FuZHJvaWQvQW5kcm9pZFdlYkhpc3RvcnlCcmlkZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L2FuZHJvaWQvQW5kcm9pZFdlYkhpc3RvcnlCcmlkZ2UuaAkocmV2
aXNpb24gOTM1NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L2FuZHJvaWQvQW5kcm9pZFdl
Ykhpc3RvcnlCcmlkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IDIwMDksIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIg
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIEFuZHJvaWRXZWJIaXN0b3J5QnJpZGdlX2gKLSNkZWZpbmUgQW5kcm9pZFdlYkhpc3Rv
cnlCcmlkZ2VfaAotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBIaXN0b3J5SXRlbTsKLQotY2xhc3MgQW5kcm9pZFdlYkhpc3RvcnlC
cmlkZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxBbmRyb2lkV2ViSGlzdG9yeUJyaWRnZT4gewotcHVi
bGljOgotICAgIEFuZHJvaWRXZWJIaXN0b3J5QnJpZGdlKEhpc3RvcnlJdGVtKiBpdGVtKQotICAg
ICAgICA6IG1fc2NhbGUoMTAwKQotICAgICAgICAsIG1fc2NyZWVuV2lkdGhTY2FsZSgxMDApCi0g
ICAgICAgICwgbV9hY3RpdmUoZmFsc2UpCi0gICAgICAgICwgbV9oaXN0b3J5SXRlbShpdGVtKSB7
IH0KLSAgICB2aXJ0dWFsIH5BbmRyb2lkV2ViSGlzdG9yeUJyaWRnZSgpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSogaXRlbSkgPSAwOwotCi0gICAg
dm9pZCBzZXRTY2FsZShpbnQgcykgeyBtX3NjYWxlID0gczsgfQotICAgIHZvaWQgc2V0U2NyZWVu
V2lkdGhTY2FsZShpbnQgcykgeyBtX3NjcmVlbldpZHRoU2NhbGUgPSBzOyB9Ci0gICAgaW50IHNj
YWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZTsgfQotICAgIGludCBzY3JlZW5XaWR0aFNjYWxl
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JlZW5XaWR0aFNjYWxlOyB9Ci0gICAgdm9pZCBkZXRhY2hI
aXN0b3J5SXRlbSgpIHsgbV9oaXN0b3J5SXRlbSA9IDA7IH0KLSAgICBIaXN0b3J5SXRlbSogaGlz
dG9yeUl0ZW0oKSBjb25zdCB7IHJldHVybiBtX2hpc3RvcnlJdGVtOyB9Ci0gICAgdm9pZCBzZXRB
Y3RpdmUoKSB7IG1fYWN0aXZlID0gdHJ1ZTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgaW50IG1fc2Nh
bGU7Ci0gICAgaW50IG1fc2NyZWVuV2lkdGhTY2FsZTsKLSAgICBib29sIG1fYWN0aXZlOwotICAg
IEhpc3RvcnlJdGVtKiBtX2hpc3RvcnlJdGVtOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gQW5kcm9pZFdlYkhpc3RvcnlCcmlkZ2VfaApJbmRleDogU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9hbmRyb2lkL0hpc3RvcnlJdGVtQW5kcm9pZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9hbmRyb2lkL0hpc3RvcnlJdGVtQW5kcm9pZC5jcHAJ
KHJldmlzaW9uIDkzNTY1KQorKysgU291cmNlL1dlYkNvcmUvaGlzdG9yeS9hbmRyb2lkL0hpc3Rv
cnlJdGVtQW5kcm9pZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAyMDA5LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVS
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgQW5kcm9pZFdlYkhpc3RvcnlCcmlkZ2U7Ci0KLUFuZHJvaWRX
ZWJIaXN0b3J5QnJpZGdlKiBIaXN0b3J5SXRlbTo6YnJpZGdlKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fYnJpZGdlKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbV9icmlkZ2UuZ2V0KCk7
Ci19Ci0KLXZvaWQgSGlzdG9yeUl0ZW06OnNldEJyaWRnZShBbmRyb2lkV2ViSGlzdG9yeUJyaWRn
ZSogYnJpZGdlKQotewotICAgIG1fYnJpZGdlID0gYWRvcHRSZWYoYnJpZGdlKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuZHJvaWQv
RHJhZ0NvbnRyb2xsZXJBbmRyb2lkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL2FuZHJvaWQvRHJhZ0NvbnRyb2xsZXJBbmRyb2lkLmNwcAkocmV2aXNpb24gOTM1NjUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuZHJvaWQvRHJhZ0NvbnRyb2xsZXJBbmRyb2lkLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IDIwMDksIFRo
ZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXIuaCIKLQotI2luY2x1ZGUgIkRyYWdEYXRhLmgiCi0j
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ib29s
IERyYWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKERyYWdEYXRhKikKLXsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0gICAgCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0
aW9uKERyYWdEYXRhKiBkcmFnRGF0YSkKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBsb2dpYyBpcyBp
bmNvbXBsZXRlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBpZiAoZHJhZ0RhdGEtPmNvbnRh
aW5zVVJMKCkpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKLQotICAgIHJldHVy
biBEcmFnT3BlcmF0aW9uTm9uZTsKLX0KLQotdm9pZCBEcmFnQ29udHJvbGxlcjo6Y2xlYW51cEFm
dGVyU3lzdGVtRHJhZygpCi17Ci19Ci0KLWNvbnN0IGZsb2F0IERyYWdDb250cm9sbGVyOjpEcmFn
SW1hZ2VBbHBoYSA9IDEuMGY7Ci1zdGF0aWMgSW50U2l6ZSBkdW1teTsKLWNvbnN0IEludFNpemUm
IERyYWdDb250cm9sbGVyOjptYXhEcmFnSW1hZ2VTaXplKCkgeyByZXR1cm4gZHVtbXk7IH0KLWNv
bnN0IGludCBEcmFnQ29udHJvbGxlcjo6RHJhZ0ljb25SaWdodEluc2V0ID0gMDsKLWNvbnN0IGlu
dCBEcmFnQ29udHJvbGxlcjo6RHJhZ0ljb25Cb3R0b21JbnNldCA9IDA7Ci1jb25zdCBpbnQgRHJh
Z0NvbnRyb2xsZXI6OkxpbmtEcmFnQm9yZGVySW5zZXQgPSAwOwotY29uc3QgaW50IERyYWdDb250
cm9sbGVyOjpNYXhPcmlnaW5hbEltYWdlQXJlYSA9IDA7Ci0KLX0gIC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuZHJvaWQvRXZlbnRIYW5kbGVyQW5kcm9p
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9hbmRyb2lkL0V2ZW50SGFu
ZGxlckFuZHJvaWQuY3BwCShyZXZpc2lvbiA5MzU2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5kcm9pZC9FdmVudEhhbmRsZXJBbmRyb2lkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMzEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAyMDA5LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQ
cm9qZWN0Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotI2RlZmluZSBMT0dfVEFHICJXZWJDb3JlIgotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCi0KLSNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIK
LSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKLSNpbmNsdWRl
ICJNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2lu
Y2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxF
dmVudC5oIgotI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWJvb2wgRXZlbnRIYW5kbGVyOjp0YWJzVG9BbGxGb3JtQ29udHJvbHMoS2V5Ym9hcmRFdmVu
dCopIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgRXZlbnRIYW5kbGVyOjpm
b2N1c0RvY3VtZW50VmlldygpCi17Ci0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCkpCi0gICAgICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRGb2N1c2VkRnJhbWUobV9m
cmFtZSk7Ci19Ci0KLWJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2lkZ2V0TW91c2VEb3duRXZlbnRU
b1dpZGdldChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKLXsKLSAg
ICAvLyBGaWd1cmUgb3V0IHdoaWNoIHZpZXcgdG8gc2VuZCB0aGUgZXZlbnQgdG8uCi0gICAgUmVu
ZGVyT2JqZWN0KiB0YXJnZXQgPSB0YXJnZXROb2RlKGV2ZW50KSA/IHRhcmdldE5vZGUoZXZlbnQp
LT5yZW5kZXJlcigpIDogMDsKLSAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0LT5pc1dpZGdldCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHBhc3NNb3VzZURvd25FdmVudFRv
V2lkZ2V0KHRvUmVuZGVyV2lkZ2V0KHRhcmdldCktPndpZGdldCgpKTsKLX0KLQotYm9vbCBFdmVu
dEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lkZ2V0KFJlbmRlcldpZGdldCog
cmVuZGVyV2lkZ2V0KQotewotICAgIHJldHVybiBwYXNzTW91c2VEb3duRXZlbnRUb1dpZGdldChy
ZW5kZXJXaWRnZXQtPndpZGdldCgpKTsKLX0KLQotLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRv
IHJvdXRlIHRoZSBtb3VzZSBkb3duIGV2ZW50IHRvIHRoZSBuYXRpdmUgd2lkZ2V0cywgaXQgc2Vl
bXMgbGlrZSBhCi0vLyB3b3JrIGFyb3VuZCBmb3IgdGhlIE1hYyBwbGF0Zm9ybSB3aGljaCBkb2Vz
IG5vdCBzdXBwb3J0IGRvdWJsZSBjbGlja3MsIGJ1dCBicm93c2VycyBkby4KLWJvb2wgRXZlbnRI
YW5kbGVyOjpwYXNzTW91c2VEb3duRXZlbnRUb1dpZGdldChXaWRnZXQqKQotewotICAgIC8vIHJl
dHVybiBmYWxzZSBzbyB0aGUgbm9ybWFsIHByb3BvZ2F0aW9uIGhhbmRsZXMgdGhlIGV2ZW50Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRBY3RpdmF0ZWRW
aWV3KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk
IGZvciBtb3VzZSBldmVudHMgYnkgRnJhbWVWaWV3OjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoKS4K
LS8vIEl0IGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQgZXZlbnRzIGFyZSBzeW5jJ2VkIGNvcnJlY3Rs
eSBiZXR3ZWVuIGZyYW1lcy4gRm9yIGV4YW1wbGUKLS8vIGlmIHRoZSB1c2VyIHByZXNzZXMgZG93
biBpbiBvbmUgZnJhbWUgYW5kIHVwIGluIGFub3RoZXIgZnJhbWUsIHRoaXMgZnVuY3Rpb24gd2ls
bAotLy8gcmV0dXJucyB0cnVlLCBhbmQgcGFzcyB0aGUgZXZlbnQgdG8gdGhlIGNvcnJlY3QgZnJh
bWUuCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSosIEhpdFRlc3RSZXN1bHQqKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0vLyBUaGlzIGlzIGNh
bGxlZCB0byByb3V0ZSB3aGVlbCBldmVudHMgdG8gY2hpbGQgd2lkZ2V0cyB3aGVuIHRoZXkgYXJl
IFJlbmRlcldpZGdldAotLy8gYXMgdGhlIHBhcmVudCB1c3VhbGx5IGdldHMgd2hlZWwgZXZlbnQu
IERvbid0IGhhdmUgYSBtb3VzZSB3aXRoIGEgd2hlZWwgdG8gY29uZmlybQotLy8gdGhlIG9wZXJh
dGlvbiBvZiB0aGlzIGZ1bmN0aW9uLgotYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2ZW50
VG9XaWRnZXQoUGxhdGZvcm1XaGVlbEV2ZW50JiwgV2lkZ2V0KikKLXsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NN
b3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1l
diwgRnJhbWUqIHN1YmZyYW1lKQotewotICAgIHJldHVybiBwYXNzU3ViZnJhbWVFdmVudFRvU3Vi
ZnJhbWUobWV2LCBzdWJmcmFtZSk7Ci19Ci0KLWJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VN
b3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgCi0g
ICAgRnJhbWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KikKLXsKLSAgICByZXR1cm4gcGFzc1N1
YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1ldiwgc3ViZnJhbWUpOwotfQotCi1ib29sIEV2ZW50SGFu
ZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFtZSkKLXsKLSAgICByZXR1cm4gcGFzc1N1YmZy
YW1lRXZlbnRUb1N1YmZyYW1lKG1ldiwgc3ViZnJhbWUpOwotfQotCi1jbGFzcyBDbGlwYm9hcmQg
OiBwdWJsaWMgUmVmQ291bnRlZDxDbGlwYm9hcmQ+IHsKLX07Ci0KLVBhc3NSZWZQdHI8Q2xpcGJv
YXJkPiBFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gUGFzc1JlZlB0cjxDbGlwYm9hcmQ+KDApOwotfQotCi11bnNpZ25lZCBFdmVudEhh
bmRsZXI6OmFjY2Vzc0tleU1vZGlmaWVycygpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6QWx0S2V5OwotfQotCi1jb25zdCBkb3VibGUgRXZlbnRIYW5kbGVyOjpUZXh0RHJh
Z0RlbGF5ID0gMC4wOwotCi19ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9hbmRyb2lkL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9hbmRyb2lkL0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgJKHJldmlzaW9uIDkzNTY1KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9hbmRyb2lkL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAyMDA5LCBUaGUg
QW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlX2gKLSNkZWZpbmUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VfaAotCi0jaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgOiBwdWJsaWMgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VCYXNlIHsKLX07Ci0KLX0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2FuZHJvaWQvQ29va2llSmFyQW5kcm9pZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9hbmRyb2lkL0Nvb2tpZUphckFuZHJv
aWQuY3BwCShyZXZpc2lvbiA5MzU2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvYW5kcm9pZC9Db29raWVKYXJBbmRyb2lkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IDIwMDcsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFBy
b2plY3QKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgT1dORVIgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJDb29raWVKYXIu
aCIKLQotI2luY2x1ZGUgIlBsYXRmb3JtQnJpZGdlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotdm9pZCBzZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHZhbHVlKQotewotICAgIFBsYXRmb3JtQnJpZGdlOjpzZXRDb29raWVzKGRv
Y3VtZW50LCB1cmwsIHZhbHVlKTsKLX0KLQotU3RyaW5nIGNvb2tpZXMoY29uc3QgRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtQnJpZGdl
Ojpjb29raWVzKGRvY3VtZW50LCB1cmwpOwotfQotCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwpCi17
Ci0gICAgLy8gRklYTUU6IGluY2x1ZGUgSHR0cE9ubHkgY29va2llLgotICAgIHJldHVybiBQbGF0
Zm9ybUJyaWRnZTo6Y29va2llcyhkb2N1bWVudCwgdXJsKTsKLX0KLQotYm9vbCBjb29raWVzRW5h
YmxlZChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtQnJp
ZGdlOjpjb29raWVzRW5hYmxlZChkb2N1bWVudCk7Ci19Ci0KLXZvaWQgZ2V0SG9zdG5hbWVzV2l0
aENvb2tpZXMoSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCi17Ci0gICAgLy8gRklYTUU6IE5v
dCB5ZXQgaW1wbGVtZW50ZWQKLX0KLQotdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29u
c3QgU3RyaW5nJiBob3N0bmFtZSkKLXsKLSAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRl
ZAotfQotCi12b2lkIGRlbGV0ZUFsbENvb2tpZXMoKQotewotICAgIC8vIEZJWE1FOiBOb3QgeWV0
IGltcGxlbWVudGVkCi19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvYW5kcm9pZC9Qcm94eVNlcnZlckFuZHJvaWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYW5kcm9pZC9Qcm94eVNlcnZlckFuZHJvaWQuY3BwCShy
ZXZpc2lvbiA5MzU2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYW5kcm9p
ZC9Qcm94eVNlcnZlckFuZHJvaWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAot
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIlByb3h5U2VydmVyLmgiCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9y
VVJMKGNvbnN0IEtVUkwmLCBjb25zdCBOZXR3b3JraW5nQ29udGV4dCopCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gVmVjdG9yPFByb3h5U2VydmVyPigpOwotfQotCi19Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2FuZHJvaWQvUmVzb3VyY2VFcnJv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYW5kcm9p
ZC9SZXNvdXJjZUVycm9yLmgJKHJldmlzaW9uIDkzNTY1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9hbmRyb2lkL1Jlc291cmNlRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IDIwMDksIFRoZSBBbmRyb2lkIE9wZW4gU291
cmNlIFByb2plY3QKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFJlc291cmNlRXJyb3JfaAotI2Rl
ZmluZSBSZXNvdXJjZUVycm9yX2gKLQotI2luY2x1ZGUgIlJlc291cmNlRXJyb3JCYXNlLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUmVzb3VyY2VFcnJvciA6IHB1YmxpYyBSZXNv
dXJjZUVycm9yQmFzZSB7Ci1wdWJsaWM6Ci0gICAgUmVzb3VyY2VFcnJvcigpIHsgfQotCi0gICAg
UmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3Qg
U3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQot
ICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJM
LCBsb2NhbGl6ZWREZXNjcmlwdGlvbikgeyB9Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBSZXNvdXJj
ZUVycm9yX2hfCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2FuZHJvaWQv
UmVzb3VyY2VIYW5kbGVBbmRyb2lkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2FuZHJvaWQvUmVzb3VyY2VIYW5kbGVBbmRyb2lkLmNwcAkocmV2aXNp
b24gOTM1NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2FuZHJvaWQvUmVz
b3VyY2VIYW5kbGVBbmRyb2lkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxNTQgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAyMDA5LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IE9XTkVSIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCi0K
LSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgotI2luY2x1ZGUgIkRvY3VtZW50TG9h
ZGVyLmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgotI2lu
Y2x1ZGUgIk1haW5SZXNvdXJjZUxvYWRlci5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
Ci0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZUludGVybmFsLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJBbmRyb2lkLmgiCi0jaW5j
bHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291cmNlSGFuZGxl
SW50ZXJuYWwoKQotewotfQotCi1SZXNvdXJjZUhhbmRsZTo6flJlc291cmNlSGFuZGxlKCkKLXsK
LX0KLQotYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQpCi17Ci0gICAgTWFpblJlc291cmNlTG9hZGVyKiBtYWluTG9hZGVyID0gY29udGV4dC0+bWFp
blJlc291cmNlTG9hZGVyKCk7Ci0gICAgYm9vbCBpc01haW5SZXNvdXJjZSA9IHN0YXRpY19jYXN0
PHZvaWQqPihtYWluTG9hZGVyKSA9PSBzdGF0aWNfY2FzdDx2b2lkKj4oY2xpZW50KCkpOwotICAg
IFJlZlB0cjxSZXNvdXJjZUxvYWRlckFuZHJvaWQ+IGxvYWRlciA9IFJlc291cmNlTG9hZGVyQW5k
cm9pZDo6c3RhcnQodGhpcywgZC0+bV9maXJzdFJlcXVlc3QsIGNvbnRleHQtPmZyYW1lTG9hZGVy
Q2xpZW50KCksIGlzTWFpblJlc291cmNlLCBmYWxzZSk7Ci0KLSAgICBpZiAobG9hZGVyKSB7Ci0g
ICAgICAgIGQtPm1fbG9hZGVyID0gbG9hZGVyLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIFJlc291cmNlSGFuZGxl
OjpjYW5jZWwoKQotewotICAgIGlmIChkLT5tX2xvYWRlcikKLSAgICAgICAgZC0+bV9sb2FkZXIt
PmNhbmNlbCgpOwotfQotCi1QYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVzb3VyY2VIYW5kbGU6
OmJ1ZmZlcmVkRGF0YSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsK
LX0KLQotYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3VwcG9ydHNCdWZmZXJlZERhdGEoKQotewotICAg
IC8vIFdlIGRvbid0IHN1cHBvcnQgYnVmZmVyaW5nIGRhdGEgb24gdGhlIG5hdGl2ZSBzaWRlLgot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIFJlc291
cmNlSGFuZGxlOjpwbGF0Zm9ybVNldERlZmVyc0xvYWRpbmcoYm9vbCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi0vLyBUaGlzIHN0YXRpYyBtZXRob2QgaXMgY2FsbGVkIHRvIGNoZWNr
IHRvIHNlZSBpZiBhIFBPU1QgcmVzcG9uc2UgaXMgaW4KLS8vIHRoZSBjYWNoZS4gVGhlIEpOSSBj
YWxsIHRocm91Z2ggdG8gdGhlIEhUVFAgY2FjaGUgc3RvcmVkIG9uIHRoZSBKYXZhCi0vLyBzaWRl
IG1heSBiZSBzbG93LCBidXQgaXMgb25seSB1c2VkIGR1cmluZyBhIG5hdmlnYXRpb24gdG8KLS8v
IGEgUE9TVCByZXNwb25zZS4KLWJvb2wgUmVzb3VyY2VIYW5kbGU6OndpbGxMb2FkRnJvbUNhY2hl
KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRnJhbWUqKQotewotICAgIC8vIHNldCB0aGUgY2Fj
aGUgcG9saWN5IGNvcnJlY3RseSwgY29waWVkIGZyb20KLSAgICAvLyBuZXR3b3JrL21hYy9SZXNv
dXJjZUhhbmRsZU1hYy5tbQotICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmV0dXJuQ2FjaGVE
YXRhRG9udExvYWQpOwotICAgIEZvcm1EYXRhKiBmb3JtRGF0YSA9IHJlcXVlc3QuaHR0cEJvZHko
KTsKLSAgICByZXR1cm4gUmVzb3VyY2VMb2FkZXJBbmRyb2lkOjp3aWxsTG9hZEZyb21DYWNoZShy
ZXF1ZXN0LnVybCgpLCBmb3JtRGF0YSA/IGZvcm1EYXRhLT5pZGVudGlmaWVyKCkgOiAwKTsKLX0K
LQotYm9vbCBSZXNvdXJjZUhhbmRsZTo6bG9hZHNCbG9ja2VkKCkKLXsKLSAgICAvLyBGSVhNRSwg
bmVlZCB0byBjaGVjayB3aGV0aGVyIGNvbm5lY3Rpb24gcGlwZSBpcyBibG9ja2VkLgotICAgIC8v
IHJldHVybiBmYWxzZSBmb3Igbm93Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0vLyBDbGFzcyB0
byBoYW5kbGUgc3luY2hyb25pemVkIGxvYWRpbmcgb2YgcmVzb3VyY2VzLgotY2xhc3MgU3luY0xv
YWRlciA6IHB1YmxpYyBSZXNvdXJjZUhhbmRsZUNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgU3luY0xv
YWRlcihSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFdU
Rjo6VmVjdG9yPGNoYXI+JiBkYXRhKQotICAgIHsKLSAgICAgICAgbV9lcnJvciA9ICZlcnJvcjsK
LSAgICAgICAgbV9yZXNwb25zZSA9ICZyZXNwb25zZTsKLSAgICAgICAgbV9kYXRhID0gJmRhdGE7
Ci0gICAgfQotICAgIH5TeW5jTG9hZGVyKCkge30KLQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKLSAgICB7Ci0gICAgICAgICptX3Jlc3BvbnNlID0gcmVzcG9uc2U7Ci0gICAgfQotCi0g
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQotICAgIHsKLSAgICAgICAg
bV9kYXRhLT5hcHBlbmQoZGF0YSwgbGVuKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQotICAgIHsK
LSAgICAgICAgKm1fZXJyb3IgPSBlcnJvcjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgUmVzb3Vy
Y2VFcnJvciogbV9lcnJvcjsKLSAgICBSZXNvdXJjZVJlc3BvbnNlKiBtX3Jlc3BvbnNlOwotICAg
IFdURjo6VmVjdG9yPGNoYXI+KiBtX2RhdGE7Ci19OwotCi12b2lkIFJlc291cmNlSGFuZGxlOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCi0gICAgICAgIFN0b3JlZENyZWRlbnRpYWxzLCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFdURjo6VmVj
dG9yPGNoYXI+JiBkYXRhKQotewotICAgIFN5bmNMb2FkZXIgcyhlcnJvciwgcmVzcG9uc2UsIGRh
dGEpOwotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaCA9IGFkb3B0UmVmKG5ldyBSZXNvdXJj
ZUhhbmRsZShyZXF1ZXN0LCAmcywgZmFsc2UsIGZhbHNlKSk7Ci0gICAgLy8gVGhpcyBibG9ja3Mg
dW50aWwgdGhlIGxvYWQgaXMgZmluaXNoZWQuCi0gICAgLy8gVXNlIHRoZSByZXF1ZXN0IG93bmVk
IGJ5IHRoZSBSZXNvdXJjZUhhbmRsZS4gVGhpcyBoYXMgaGFkIHRoZSB1c2VybmFtZQotICAgIC8v
IGFuZCBwYXNzd29yZCAoaWYgcHJlc2VudCkgc3RyaXBwZWQgZnJvbSB0aGUgVVJMIGluCi0gICAg
Ly8gUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCgpLiBUaGlz
IG1hdGNoZXMgdGhlCi0gICAgLy8gYmVoYXZpb3VyIGluIHRoZSBhc3luY2hyb25vdXMgY2FzZS4K
LSAgICBSZXNvdXJjZUxvYWRlckFuZHJvaWQ6OnN0YXJ0KGguZ2V0KCksIHJlcXVlc3QsIGNvbnRl
eHQtPmZyYW1lTG9hZGVyQ2xpZW50KCksIGZhbHNlLCB0cnVlKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9hbmRyb2lk
L1Jlc291cmNlTG9hZGVyQW5kcm9pZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvYW5kcm9pZC9SZXNvdXJjZUxvYWRlckFuZHJvaWQuaAkocmV2aXNpb24g
OTM1NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2FuZHJvaWQvUmVzb3Vy
Y2VMb2FkZXJBbmRyb2lkLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAyMDA5LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVS
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBSZXNvdXJjZUxvYWRlckFuZHJvaWRfaAotI2RlZmluZSBSZXNvdXJjZUxvYWRlckFu
ZHJvaWRfaAotCi0jaW5jbHVkZSA8UmVzb3VyY2VSZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50OwotY2xhc3MgUmVzb3VyY2VIYW5kbGU7
Ci0KLWNsYXNzIFJlc291cmNlTG9hZGVyQW5kcm9pZCA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291
cmNlTG9hZGVyQW5kcm9pZD4gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlc291
cmNlTG9hZGVyQW5kcm9pZD4gc3RhcnQoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBGcmFtZUxvYWRlckNsaWVudCosIGJvb2wgaXNNYWluUmVzb3VyY2UsIGJvb2wgaXNT
eW5jKTsKLSAgICB2aXJ0dWFsIH5SZXNvdXJjZUxvYWRlckFuZHJvaWQoKSB7IH0KLQotICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWwoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRvd25sb2FkRmlsZSgp
ID0gMDsKLQotICAgIC8vIENhbGwgdG8gamF2YSB0byBmaW5kIG91dCBpZiB0aGlzIFVSTCBpcyBp
biB0aGUgY2FjaGUKLSAgICBzdGF0aWMgYm9vbCB3aWxsTG9hZEZyb21DYWNoZShjb25zdCBXZWJD
b3JlOjpLVVJMJiwgaW50NjRfdCBpZGVudGlmaWVyKTsKLXByb3RlY3RlZDoKLSAgICBSZXNvdXJj
ZUxvYWRlckFuZHJvaWQoKSB7IH0KLX07Ci0KLX0KLSNlbmRpZiAvLyBSZXNvdXJjZUxvYWRlckFu
ZHJvaWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYW5kcm9pZC9SZXNv
dXJjZVJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2FuZHJvaWQvUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9uIDkzNTY1KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9hbmRyb2lkL1Jlc291cmNlUmVxdWVzdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgMjAwOSwgVGhlIEFu
ZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgUmVzb3VyY2VSZXF1ZXN0X2gKLSNkZWZpbmUgUmVzb3VyY2VSZXF1ZXN0X2gKLQotI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJlc291cmNlUmVxdWVzdCA6IHB1YmxpYyBS
ZXNvdXJjZVJlcXVlc3RCYXNlIHsKLXB1YmxpYzoKLSAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3Qg
U3RyaW5nJiB1cmwpCi0gICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKFBhcnNlZFVS
TFN0cmluZywgdXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkgeyB9Ci0KLSAgICBSZXNvdXJj
ZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsKSA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBVc2VQ
cm90b2NvbENhY2hlUG9saWN5KSB7IH0KLQotICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5
IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCi0gICAgICAgIDogUmVzb3VyY2VSZXF1
ZXN0QmFzZSh1cmwsIHBvbGljeSkKLSAgICB7Ci0gICAgICAgIHNldEhUVFBSZWZlcnJlcihyZWZl
cnJlcik7Ci0gICAgfQotCi0gICAgUmVzb3VyY2VSZXF1ZXN0KCkgOiBSZXNvdXJjZVJlcXVlc3RC
YXNlKEtVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkgeyB9Ci0KLSAgICB2b2lkIGRvVXBk
YXRlUGxhdGZvcm1SZXF1ZXN0KCkgeyB9Ci0gICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVxdWVz
dCgpIHsgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlcXVlc3RCYXNl
OwotCi0gICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRvUGxh
dGZvcm1Db3B5RGF0YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4g
ZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQotICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KFBh
c3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgeyB9Ci19OwotCi1zdHJ1
Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhIDogcHVibGljIENyb3NzVGhyZWFkUmVz
b3VyY2VSZXF1ZXN0RGF0YUJhc2UgewotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gUmVzb3VyY2VSZXF1ZXN0X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvYW5kcm9pZC9SZXNvdXJjZVJlcXVlc3RBbmRyb2lkLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2FuZHJvaWQvUmVzb3VyY2VSZXF1ZXN0
QW5kcm9pZC5jcHAJKHJldmlzaW9uIDkzNTY1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9hbmRyb2lkL1Jlc291cmNlUmVxdWVzdEFuZHJvaWQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgMjAwOSwgVGhlIEFuZHJvaWQgT3Bl
biBTb3VyY2UgUHJvamVjdAotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJS
ZXNvdXJjZVJlcXVlc3QuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11bnNpZ25lZCBpbml0
aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0KCkKLXsKLSNpZiBVU0UoQ0hS
T01FX05FVFdPUktfU1RBQ0spCi0gICAgLy8gVGhlIGNocm9taXVtIG5ldHdvcmsgc3RhY2sgYWxy
ZWFkeSBoYW5kbGVzIGxpbWl0aW5nIHRoZSBudW1iZXIgb2YKLSAgICAvLyBwYXJhbGxlbCByZXF1
ZXN0cyBwZXIgaG9zdCwgc28gdGhlcmUncyBubyBuZWVkIHRvIGRvIGl0IGhlcmUuICBUaGVyZWZv
cmUsCi0gICAgLy8gdGhpcyBpcyBzZXQgdG8gYSBoaWdoIHZhbHVlIHRoYXQgc2hvdWxkIG5ldmVy
IGJlIGhpdCBpbiBwcmFjdGljZS4KLSAgICByZXR1cm4gMTAwMDA7Ci0jZWxzZQotICAgIC8vIFRo
aXMgaXMgdXNlZCBieSB0aGUgbG9hZGVyIHRvIGNvbnRyb2wgdGhlIG51bWJlciBvZiBwYXJhbGxl
bCBsb2FkCi0gICAgLy8gcmVxdWVzdHMuIE91ciBqYXZhIGZyYW1ld29yayBoYXMgNCB0aHJlYWRz
IHRoYXQgY2FuIGVhY2ggcGlwZWxpbmUgdXAgdG8KLSAgICAvLyA1IHJlcXVlc3RzLiBVc2UgMjAg
YXMgYSBtYXhpbXVtIG51bWJlci4KLSAgICByZXR1cm4gMjA7Ci0jZW5kaWYKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9h
bmRyb2lkL1Jlc291cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2FuZHJvaWQvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiA5MzU2
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYW5kcm9pZC9SZXNvdXJjZVJl
c3BvbnNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAyMDA5LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKiBDb3B5cmlnaHQgKEMp
IDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVS
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBSZXNvdXJjZVJlc3BvbnNlX2gKLSNkZWZpbmUgUmVzb3VyY2VSZXNwb25zZV9oCi0K
LSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2VC
YXNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUmVzb3VyY2VSZXNwb25zZSA6
IHB1YmxpYyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7Ci1wdWJsaWM6Ci0gICAgUmVzb3VyY2VSZXNw
b25zZSgpIDogUmVzb3VyY2VSZXNwb25zZUJhc2UoKSB7IH0KLQotICAgIFJlc291cmNlUmVzcG9u
c2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhw
ZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSkKLSAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSh1cmwsIG1pbWVUeXBl
LCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwgZmlsZW5hbWUpIHsgfQotCi1wcml2
YXRlOgotICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZTsKLQotICAgIHZvaWQg
ZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNlKCkKLSAgICB7Ci0gICAgICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgfQotCi0gICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VE
YXRhPiBkb1BsYXRmb3JtQ29weURhdGEoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVz
cG9uc2VEYXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9Ci0gICAgdm9pZCBkb1BsYXRm
b3JtQWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPikgeyB9
Ci19OwotCi1zdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YSA6IHB1YmxpYyBD
cm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhQmFzZSB7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBSZXNvdXJjZVJlc3BvbnNlX2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvYW5kcm9pZC9IeXBoZW5hdGlvbkFuZHJvaWQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvYW5kcm9pZC9IeXBoZW5hdGlv
bkFuZHJvaWQuY3BwCShyZXZpc2lvbiA5MzU2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvYW5kcm9pZC9IeXBoZW5hdGlvbkFuZHJvaWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDEwMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IDIwMTAsIFRoZSBBbmRyb2lkIE9wZW4gU291
cmNlIFByb2plY3QKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkh5cGhl
bmF0aW9uLmgiCi0KLS8vIEZvciBleHRlcm5hbCBoeXBoZW5hdGlvbiBsaWJyYXJ5LgotI2luY2x1
ZGUgImh5cGhlbi5oIgotI2luY2x1ZGUgPHV0aWxzL0Fzc2V0TWFuYWdlci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
ZXh0ZXJuIGFuZHJvaWQ6OkFzc2V0TWFuYWdlciogZ2xvYmFsQXNzZXRNYW5hZ2VyKCk7Ci0KLXVz
aW5nIG5hbWVzcGFjZSBXVEY7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIEh5cGhl
bkRpY3QqIGxvYWRIeXBoZW5hdGlvbkRpY3Rpb25hcnkoKQotewotICAgIGFuZHJvaWQ6OkFzc2V0
TWFuYWdlciogYW0gPSBnbG9iYWxBc3NldE1hbmFnZXIoKTsKLSAgICAvLyBPbmx5IHN1cHBvcnQg
RW5nbGlzaCBmb3Igbm93LgotICAgIGFuZHJvaWQ6OkFzc2V0KiBhID0gYW0tPm9wZW4oIndlYmtp
dC9oeXBoX2VuX1VTLmRpYyIsCi0gICAgICAgIGFuZHJvaWQ6OkFzc2V0OjpBQ0NFU1NfQlVGRkVS
KTsKLSAgICBpZiAoIWEpIHsKLSAgICAgICAgLy8gQXNzZXQgd2Via2l0L2h5cGhfZW5fVVMuZGlj
IG5vdCBmb3VuZCEKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGNvbnN0IENTdHJpbmcg
ZGljdENvbnRlbnRzID0gU3RyaW5nKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhLT5nZXRCdWZm
ZXIoZmFsc2UpKSwKLSAgICAgICAgYS0+Z2V0TGVuZ3RoKCkpLnV0ZjgoKTsKLSAgICBIeXBoZW5E
aWN0KiBkaWN0ID0gaG5qX2h5cGhlbl9sb2FkX2Zyb21fYnVmZmVyKGRpY3RDb250ZW50cy5kYXRh
KCksCi0gICAgICAgIGRpY3RDb250ZW50cy5sZW5ndGgoKSk7Ci0gICAgZGVsZXRlIGE7Ci0KLSAg
ICByZXR1cm4gZGljdDsKLX0KLQotYm9vbCBjYW5IeXBoZW5hdGUoY29uc3QgQXRvbWljU3RyaW5n
JiAvKiBsb2NhbGVJZGVudGlmaWVyICovKQotewotICAgIC8vIEZJWE1FOiBDaGVjayB0aGF0IHRo
ZSBsb2NhbGUgaWRlbnRpZmllciBtYXRjaGVzIHRoZSBhdmFpbGFibGUgZGljdGlvbmFyeS4KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotc2l6ZV90IGxhc3RIeXBoZW5Mb2NhdGlvbihjb25zdCBVQ2hh
ciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCwgc2l6ZV90IGJlZm9yZUluZGV4LCBjb25zdCBB
dG9taWNTdHJpbmcmIC8qIGxvY2FsZUlkZW50aWZpZXIgKi8pCi17Ci0gICAgc3RhdGljIGNvbnN0
IHNpemVfdCBtaW5Xb3JkTGVuID0gNTsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFdvcmRM
ZW4gPSAxMDA7Ci0gICAgaWYgKGJlZm9yZUluZGV4IDw9IDAgfHwgbGVuZ3RoIDwgbWluV29yZExl
biB8fCBsZW5ndGggPiBtYXhXb3JkTGVuKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHN0YXRp
YyBIeXBoZW5EaWN0KiBkaWN0ID0gbG9hZEh5cGhlbmF0aW9uRGljdGlvbmFyeSgpOwotICAgIGlm
ICghZGljdCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjaGFyIHdvcmRbbWF4V29yZExlbl07
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBjb25z
dCBVQ2hhciBjaCA9IGNoYXJhY3RlcnNbaV07Ci0gICAgICAgIC8vIE9ubHkgRW5nbGlzaCBmb3Ig
bm93LgotICAgICAgICAvLyBUbyByZWFsbHkgbWFrZSBpdCBsYW5ndWFnZSBhd2FyZSwgd2UgbmVl
ZCBzb21ldGhpbmcgbGlrZSBsYW5ndWFnZQotICAgICAgICAvLyBkZXRlY3Rpb24gb3IgcmVseSBv
biB0aGUgbGFuZ0F0dHIgaW4gdGhlIGh0bWwgZWxlbWVudC4gIFRob3VnaAotICAgICAgICAvLyBz
ZWVtcyByaWdodCBub3cgdGhlIGxhbmdBdHRyIGlzIG5vdCB1c2VkIG9yIHF1aXRlIGltcGxlbWVu
dGVkIGluCi0gICAgICAgIC8vIHdlYmtpdC4KLSAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGEoY2gp
KQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHdvcmRbaV0gPSBjaDsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgY29uc3QgaW50IGV4dHJhQnVmZmVyID0gNTsKLSAgICBjaGFyIGh5cGhlbnNb
bWF4V29yZExlbiArIGV4dHJhQnVmZmVyXTsKLSAgICBpZiAoIWhual9oeXBoZW5faHlwaGVuYXRl
KGRpY3QsIHdvcmQsIGxlbmd0aCwgaHlwaGVucykpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IGJlZm9yZUluZGV4IC0gMTsgaSA+IDA7IC0taSkgewotICAgICAgICAgICAgaWYgKGh5cGhlbnNb
aV0gJiAxKQotICAgICAgICAgICAgICAgIHJldHVybiBpICsgMTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiAwOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2FuZHJvaWQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5h
bElDVS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9hbmRy
b2lkL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuY3BwCShyZXZpc2lvbiA5MzU2NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvYW5kcm9pZC9UZXh0QnJlYWtJdGVyYXRvcklu
dGVybmFsSUNVLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IDIwMDcsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1Uu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBjaGFyKiBjdXJyZW50U2VhcmNoTG9j
YWxlSUQoKQotewotICAgIC8vIEZJWE1FOiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUuCi0gICAg
cmV0dXJuICIiOwotfQotCi1jb25zdCBjaGFyKiBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKQot
ewotICAgIC8vIEZJWE1FOiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUuCi0gICAgcmV0dXJuICJl
bl91cyI7Ci19Ci0KLX0K
</data>

          </attachment>
      

    </bug>

</bugzilla>