<?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>25370</bug_id>
          
          <creation_ts>2009-04-24 10:52:28 -0700</creation_ts>
          <short_desc>Introduce ScriptEventListener to abstract away attribute event listener creation.</short_desc>
          <delta_ts>2009-04-24 15:01:09 -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>WebCore Misc.</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>
          <dependson>21260</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>118673</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-04-24 10:52:28 -0700</bug_when>
    <thetext>Remove direct references to JSLazyEventListener, introduced by http://trac.webkit.org/changeset/42633.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118674</commentid>
    <comment_count>1</comment_count>
      <attachid>29749</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-04-24 10:54:24 -0700</bug_when>
    <thetext>Created attachment 29749
Refactor away direct refs to JSLazyEventListener, v1.

 WebCore/ChangeLog                           |   37 +++++++++++
 WebCore/GNUmakefile.am                      |    2 +
 WebCore/WebCore.pro                         |    1 +
 WebCore/WebCore.vcproj/WebCore.vcproj       |    8 +++
 WebCore/WebCore.xcodeproj/project.pbxproj   |    8 +++
 WebCore/bindings/js/JSDOMGlobalObject.cpp   |    1 -
 WebCore/bindings/js/JSLazyEventListener.cpp |   47 --------------
 WebCore/bindings/js/JSLazyEventListener.h   |    4 -
 WebCore/bindings/js/ScriptController.cpp    |    1 -
 WebCore/bindings/js/ScriptEventListener.cpp |   92 +++++++++++++++++++++++++++
 WebCore/bindings/js/ScriptEventListener.h   |   49 ++++++++++++++
 WebCore/bindings/v8/ScriptEventListener.cpp |   61 ++++++++++++++++++
 WebCore/bindings/v8/ScriptEventListener.h   |   49 ++++++++++++++
 WebCore/dom/Document.cpp                    |    2 +-
 WebCore/html/HTMLBodyElement.cpp            |    2 +-
 WebCore/html/HTMLButtonElement.cpp          |    2 +-
 WebCore/html/HTMLElement.cpp                |    2 +-
 WebCore/html/HTMLFormElement.cpp            |    2 +-
 WebCore/html/HTMLFrameElementBase.cpp       |    2 +-
 WebCore/html/HTMLFrameSetElement.cpp        |    2 +-
 WebCore/html/HTMLImageElement.cpp           |    2 +-
 WebCore/html/HTMLInputElement.cpp           |    2 +-
 WebCore/html/HTMLObjectElement.cpp          |    2 +-
 WebCore/html/HTMLScriptElement.cpp          |    2 +-
 WebCore/html/HTMLSelectElement.cpp          |    2 +-
 WebCore/html/HTMLTextAreaElement.cpp        |    2 +-
 WebCore/svg/SVGElement.cpp                  |    2 +-
 WebCore/svg/SVGSVGElement.cpp               |    2 +-
 28 files changed, 322 insertions(+), 68 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118700</commentid>
    <comment_count>2</comment_count>
      <attachid>29749</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-24 12:41:26 -0700</bug_when>
    <thetext>Comment on attachment 29749
Refactor away direct refs to JSLazyEventListener, v1.

Looks fine to me.

Why are you pulling:
Document* document = node-&gt;document();
 45 
into a local in all these functions. I don&apos;t ever see it used (except to take up 3 lines of source) :)

I don&apos;t think these will compile for v8:
    PassRefPtr&lt;JSLazyEventListener&gt; createAttributeEventListener(Node*, Attribute*);
 45     PassRefPtr&lt;JSLazyEventListener&gt; createAttributeEventListener(Frame*, Attribute*);
Since you&apos;re returning V8LazyEventListener.

Looks fine to me though, assuming you fix the above (and that you&apos;ve run the tests).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118750</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-04-24 15:01:09 -0700</bug_when>
    <thetext>Issues addressed, landed as http://trac.webkit.org/changeset/42843.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29749</attachid>
            <date>2009-04-24 10:54:24 -0700</date>
            <delta_ts>2009-04-24 12:41:26 -0700</delta_ts>
            <desc>Refactor away direct refs to JSLazyEventListener, v1.</desc>
            <filename>Refactor-away-direct-refs-to-JSLazyEventListener-v1..patch</filename>
            <type>text/plain</type>
            <size>29261</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">MjhlZTI5ZTRiZjE4MjM4YWNkY2Y4NDkxOWYwNzIxMWM1NjYzMzhiMQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMTYyZjJlLi5iYjI1ZTYx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQwIEBACisyMDA5LTA0LTI0ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1MzcwCisgICAg
ICAgIEludHJvZHVjZSBTY3JpcHRFdmVudExpc3RlbmVyIHRvIHJlZmFjdG9yIGF3YXkgZGlyZWN0
IHJlZmVyZW5jZXMgdG8KKyAgICAgICAgSlNMYXp5RXZlbnRMaXN0ZW5lciBpbiBXZWJDb3JlIGNv
ZGUuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkZWQgU2NyaXB0RXZlbnRMaXN0ZW5l
ciB0byBwcm9qZWN0LgorICAgICAgICAqIFdlYkNvcmUucHJvOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHA6IFJlbW92ZWQgdW51c2VkIEpTTGF6eUV2ZW50TGlzdGVuZXIg
aW5jbHVkZS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcDog
TW92ZWQgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lciBoZWxwZXJzCisgICAgICAgICAgICB0
byBTY3JpcHRFdmVudExpc3RlbmVyLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50
TGlzdGVuZXIuaDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHA6IFJlbW92ZWQgdW51c2VkIEpTTGF6eUV2ZW50TGlzdGVuZXIgaW5jbHVkZS4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcDogQWRkZWQuCisgICAgICAg
ICogYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcDogQWRkZWQuCisgICAgICAgICogYmlu
ZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOiBSZW5hbWVkIEpTTGF6eUV2ZW50TGlzdGVuZXIgaW5jbHVkZSB0byBTY3JpcHRF
dmVudExpc3RlbmVyLgorICAgICAgICAqIGh0bWwvSFRNTEJvZHlFbGVtZW50LmNwcDogRGl0dG8u
CisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHA6IERpdHRvLgorICAgICAgICAq
IGh0bWwvSFRNTEVsZW1lbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxl
bWVudC5jcHA6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3Bw
OiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOiBEaXR0by4K
KyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmNwcDogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5j
cHA6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOiBEaXR0by4K
KyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBzdmcvU1ZHRWxlbWVudC5jcHA6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50
LmNwcDogRGl0dG8uCisKIDIwMDktMDQtMjQgIEFkZWxlIFBldGVyc29uICA8YWRlbGVAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMjY5Mzgx
NS4uZTZkM2U3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zNzIsNiArMzcyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5oIFwKIAlXZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuaCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3Rl
bmVyLmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmggXAog
CVdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBcCiAJV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRJbnN0YW5jZS5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJD
b3JlL1dlYkNvcmUucHJvCmluZGV4IDYyNDExNzMuLmI2NzgxYmMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNDk2LDYgKzQ5Niw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxGcmFtZS5jcHAgXAog
ICAgIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5jcHAgXAogICAgIGJpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwIFwKKyAgICBiaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVy
LmNwcCBcCiAgICAgYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBcCiAgICAgYmlu
ZGluZ3MvanMvU2NyaXB0T2JqZWN0LmNwcCBcCiAgICAgYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0
UXVhcmFudGluZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXgg
OTc4Y2Y1MS4uMzM2NjI3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBA
IC0xMzgwNyw2ICsxMzgwNywxNCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUN
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcU2NyaXB0RXZlbnRMaXN0ZW5lci5j
cHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cYmluZGluZ3NcanNcU2NyaXB0RXZlbnRMaXN0ZW5lci5oIg0KKwkJCQkJPg0KKwkJCQk8
L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFNj
cmlwdEZ1bmN0aW9uQ2FsbC5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFlYzY4OTYuLjhkYWU0MjYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MTksNiArNjE5
LDggQEAKIAkJMzdGODE4RkUwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25zZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RjgxOEZD
MEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UubW0gKi87IH07CiAJCTQxMDAy
Q0NEMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMDAyQ0NCMEY2NkVERUYwMDlFNjYw
RCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuaCAqLzsgfTsKIAkJNDEwMDJDQ0UwRjY2RURFRjAwOUU2
NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTAwMkNDQzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVu
Y3Rpb25DYWxsLmNwcCAqLzsgfTsKKwkJNDExMDQ2NDEwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlw
dEV2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxMTA0NjNGMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3RlbmVyLmgg
Ki87IH07CisJCTQxMTA0NjQyMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3RlbmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTA0
NjQwMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3RlbmVyLmNwcCAqLzsgfTsKIAkJ
NDEyN0Q1MzcwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMjdENTM2MEY4QUFCMUQwMEU0MjRG
NSAvKiBTY3JpcHRTdGF0ZS5jcHAgKi87IH07CiAJCTQxMkE2ODQ3MEY2QjAzREQwMDBFQTY2RSAv
KiBTY3JpcHRPYmplY3RRdWFyYW50aW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxMkE2ODQ2MEY2QjAzREQwMDBFQTY2RSAvKiBTY3JpcHRPYmpl
Y3RRdWFyYW50aW5lLmNwcCAqLzsgfTsKIAkJNDE1RTNFRjYwRjhENjdGRTAwN0VFQjUwIC8qIE1l
c3NhZ2VQb3J0UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNUUzRUY1MEY4RDY3RkUwMDdFRUI1MCAvKiBNZXNzYWdlUG9ydFByb3h5LmggKi87
IH07CkBAIC01NTMzLDYgKzU1MzUsOCBAQAogCQkzN0Y4MThGQzBENjU3NjA2MDA1RTFGMDUgLyog
V2ViQ29yZVVSTFJlc3BvbnNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViQ29yZVVSTFJlc3BvbnNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTAwMkNDQjBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTAwMkNDQzBGNjZFREVGMDA5RTY2MEQgLyogU2NyaXB0
RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNj
cmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTA0
NjNGMEZBMjIyQTYwMEJBNDM2QSAvKiBTY3JpcHRFdmVudExpc3RlbmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEV2ZW50TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDExMDQ2NDAwRkEyMjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50
TGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0
RXZlbnRMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjdENTM2
MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTY3JpcHRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMkE2ODQ2MEY2QjAzREQwMDBFQTY2RSAvKiBTY3JpcHRPYmplY3RRdWFyYW50aW5l
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE9iamVjdFF1
YXJhbnRpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTVFM0VGNTBGOEQ2
N0ZFMDA3RUVCNTAgLyogTWVzc2FnZVBvcnRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZXNzYWdlUG9ydFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMzQwNCw2ICsxMzQwOCw4IEBACiAJCQkJNjU0ODhENkEwREQ1QTgzRDAwOUQ4M0IyIC8q
IFN0cmluZ1NvdXJjZVByb3ZpZGVyLmggKi8sCiAJCQkJRTFBNjQzRkMwRUMwOTdBMDAwNzc5NjY4
IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovLAogCQkJCUUxQTY0M0YxMEVDMDk3MjUw
MDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggKi8sCisJCQkJNDExMDQ2M0YwRkEy
MjJBNjAwQkE0MzZBIC8qIFNjcmlwdEV2ZW50TGlzdGVuZXIuaCAqLywKKwkJCQk0MTEwNDY0MDBG
QTIyMkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IGpzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2NTMzLDYgKzE2NTM5
LDcgQEAKIAkJCQk5M0I3MEQ3MDA5RUIwQzdDMDA5RDg0NjggLyogU2NyaXB0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDhBNDg0NzgwRTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMUM5RDlCMEVCMzY4MTIwMEU0MDlEQiAvKiBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTEwNDY0MTBGQTIy
MkE2MDBCQTQzNkEgLyogU2NyaXB0RXZlbnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDEwMDJDQ0QwRjY2RURFRjAwOUU2NjBEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM0Q0MxMTcwRURDQUM3MzAwQTY1OEYyIC8qIFNjcmlwdEluc3RhbmNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MUYwNjZFNDBGNjRCQ0Y2MDBBMDdFQUMgLyogU2NyaXB0T2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTE4NTg0LDYgKzE4NTkxLDcgQEAKIAkJCQk5M0I3MEQ2
RjA5RUIwQzdDMDA5RDg0NjggLyogU2NyaXB0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBODNFMUM3NDBFNDkwNDJDMDAxNDBCOUMgLyogU2NyaXB0Q29udHJvbGxlck1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTA4QTQ4NDc3MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3JpcHRFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMTA0NjQyMEZBMjIyQTYwMEJBNDM2QSAvKiBT
Y3JpcHRFdmVudExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMUM5REIwMEVCMzY5
OTUwMEU0MDlEQiAvKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxMDAyQ0NFMEY2NkVERUYwMDlFNjYwRCAvKiBTY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDFGMDY2RTUwRjY0QkNGNjAwQTA3RUFDIC8qIFNjcmlwdE9iamVj
dC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHAKaW5kZXggYzI2YjgzYi4uMmRkZDIwOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgi
Ci0jaW5jbHVkZSAiSlNMYXp5RXZlbnRMaXN0ZW5lci5oIgogCiAjaWYgRU5BQkxFKFdPUktFUlMp
CiAjaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0LmgiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xh
enlFdmVudExpc3RlbmVyLmNwcAppbmRleCBlZTc1YWY5Li4yYzc5Yzk2IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTM0LDEzICszNCw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciBldmVu
dExpc3RlbmVyQ291bnRlcigiSlNMYXp5RXZlbnRMaXN0ZW5lciIpOwogI2VuZGlmCiAKLXN0YXRp
YyBjb25zdCBTdHJpbmcmIGV2ZW50UGFyYW1ldGVyTmFtZShib29sIGlzU1ZHRXZlbnQpCi17Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGV2ZW50U3RyaW5nLCAoImV2ZW50
IikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBldnRTdHJpbmcsICgi
ZXZ0IikpOwotICAgIHJldHVybiBpc1NWR0V2ZW50ID8gZXZ0U3RyaW5nIDogZXZlbnRTdHJpbmc7
Ci19Ci0KIEpTTGF6eUV2ZW50TGlzdGVuZXI6OkpTTGF6eUV2ZW50TGlzdGVuZXIoY29uc3QgU3Ry
aW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgZXZlbnRQYXJhbWV0ZXJOYW1lLCBjb25z
dCBTdHJpbmcmIGNvZGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vZGUqIG5v
ZGUsIGludCBsaW5lTnVtYmVyKQogICAgIDogSlNFdmVudExpc3RlbmVyKDAsIGdsb2JhbE9iamVj
dCwgdHJ1ZSkKICAgICAsIG1fZnVuY3Rpb25OYW1lKGZ1bmN0aW9uTmFtZSkKQEAgLTEzMyw0NCAr
MTI2LDQgQEAgdm9pZCBKU0xhenlFdmVudExpc3RlbmVyOjpwYXJzZUNvZGUoKSBjb25zdAogICAg
IG1fZXZlbnRQYXJhbWV0ZXJOYW1lID0gU3RyaW5nKCk7CiB9CiAKLVBhc3NSZWZQdHI8SlNMYXp5
RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBub2RlLCBB
dHRyaWJ1dGUqIGF0dHIpCi17Ci0gICAgQVNTRVJUKG5vZGUpOwotCi0gICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gbm9kZS0+ZG9jdW1lbnQoKTsKLQotICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50
LT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgU2Ny
aXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9IGZyYW1lLT5zY3JpcHQoKTsKLSAgICBp
ZiAoIXNjcmlwdENvbnRyb2xsZXItPmlzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIEpTRE9NV2luZG93KiBnbG9iYWxPYmplY3QgPSBzY3JpcHRDb250cm9sbGVyLT5nbG9iYWxP
YmplY3QoKTsKLSAgICAKLSAgICAvLyBFbnN1cmUgdGhhdCAnbm9kZScgaGFzIGEgSmF2YVNjcmlw
dCB3cmFwcGVyIHRvIG1hcmsgdGhlIGV2ZW50IGxpc3RlbmVyIHdlJ3JlIGNyZWF0aW5nLgotICAg
IHsKLSAgICAgICAgSlNMb2NrIGxvY2soZmFsc2UpOwotICAgICAgICB0b0pTKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBub2RlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gSlNMYXp5RXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBldmVudFBhcmFtZXRl
ck5hbWUobm9kZS0+aXNTVkdFbGVtZW50KCkpLCBhdHRyLT52YWx1ZSgpLCBnbG9iYWxPYmplY3Qs
IG5vZGUsIHNjcmlwdENvbnRyb2xsZXItPmV2ZW50SGFuZGxlckxpbmVOdW1iZXIoKSk7Ci19Ci0K
LVBhc3NSZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0
ZW5lcihGcmFtZSogZnJhbWUsIEF0dHJpYnV0ZSogYXR0cikKLXsKLSAgICBpZiAoIWZyYW1lKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xs
ZXIgPSBmcmFtZS0+c2NyaXB0KCk7Ci0gICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5pc0VuYWJs
ZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyAnZ2xvYmFsT2JqZWN0JyBpcyB0aGUg
SmF2YVNjcmlwdCB3cmFwcGVyIHRoYXQgd2lsbCBtYXJrIHRoZSBldmVudCBsaXN0ZW5lciB3ZSdy
ZSBjcmVhdGluZy4KLSAgICBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0ID0gc2NyaXB0Q29udHJv
bGxlci0+Z2xvYmFsT2JqZWN0KCk7Ci0KLSAgICByZXR1cm4gSlNMYXp5RXZlbnRMaXN0ZW5lcjo6
Y3JlYXRlKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBldmVudFBhcmFtZXRlck5hbWUoZnJh
bWUtPmRvY3VtZW50KCktPmlzU1ZHRG9jdW1lbnQoKSksIGF0dHItPnZhbHVlKCksIGdsb2JhbE9i
amVjdCwgMCwgc2NyaXB0Q29udHJvbGxlci0+ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpKTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0xhenlFdmVudExpc3RlbmVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50
TGlzdGVuZXIuaAppbmRleCA0MGMzOTQ2Li5hNTMwNGNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTGF6eUV2ZW50TGlzdGVuZXIuaApAQCAtMjUsNyArMjUsNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSAgICBjbGFzcyBBdHRyaWJ1dGU7CiAgICAgY2xhc3MgTm9kZTsKIAogICAgIGNs
YXNzIEpTTGF6eUV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgSlNFdmVudExpc3RlbmVyIHsKQEAgLTUy
LDkgKzUxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBOb2RlKiBtX29yaWdpbmFs
Tm9kZTsKICAgICB9OwogCi0gICAgUGFzc1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVh
dGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKE5vZGUqLCBBdHRyaWJ1dGUqKTsKLSAgICBQYXNzUmVm
UHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoRnJh
bWUqLCBBdHRyaWJ1dGUqKTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
SlNFdmVudExpc3RlbmVyX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
CmluZGV4IDBhYjllZTUuLjIzOTg2OTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgot
I2luY2x1ZGUgIkpTTGF6eUV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJOUF9qc29iamVjdC5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjAwNGNiNjYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgorCisjaW5jbHVkZSAiQXR0
cmlidXRlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU05vZGUuaCIKKyNp
bmNsdWRlICJGcmFtZS5oIgorCisjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KKwordXNpbmcg
bmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgU3Ry
aW5nJiBldmVudFBhcmFtZXRlck5hbWUoYm9vbCBpc1NWR0V2ZW50KQoreworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBldmVudFN0cmluZywgKCJldmVudCIpKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZXZ0U3RyaW5nLCAoImV2dCIpKTsKKyAg
ICByZXR1cm4gaXNTVkdFdmVudCA/IGV2dFN0cmluZyA6IGV2ZW50U3RyaW5nOworfQorCitQYXNz
UmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
Tm9kZSogbm9kZSwgQXR0cmlidXRlKiBhdHRyKQoreworICAgIEFTU0VSVChub2RlKTsKKworICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUtPmRvY3VtZW50KCk7CisKKyAgICBGcmFtZSogZnJh
bWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2Ny
aXB0KCk7CisgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5pc0VuYWJsZWQoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0ID0gc2NyaXB0Q29udHJv
bGxlci0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICAvLyBFbnN1cmUgdGhhdCAnbm9kZScgaGFzIGEg
SmF2YVNjcmlwdCB3cmFwcGVyIHRvIG1hcmsgdGhlIGV2ZW50IGxpc3RlbmVyIHdlJ3JlIGNyZWF0
aW5nLgorICAgIHsKKyAgICAgICAgSlNMb2NrIGxvY2soZmFsc2UpOworICAgICAgICB0b0pTKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBub2RlKTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNM
YXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBldmVu
dFBhcmFtZXRlck5hbWUobm9kZS0+aXNTVkdFbGVtZW50KCkpLCBhdHRyLT52YWx1ZSgpLCBnbG9i
YWxPYmplY3QsIG5vZGUsIHNjcmlwdENvbnRyb2xsZXItPmV2ZW50SGFuZGxlckxpbmVOdW1iZXIo
KSk7Cit9CisKK1Bhc3NSZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihGcmFtZSogZnJhbWUsIEF0dHJpYnV0ZSogYXR0cikKK3sKKyAgICBpZiAo
IWZyYW1lKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlw
dENvbnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7CisgICAgaWYgKCFzY3JpcHRDb250cm9sbGVy
LT5pc0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyAnZ2xvYmFsT2JqZWN0
JyBpcyB0aGUgSmF2YVNjcmlwdCB3cmFwcGVyIHRoYXQgd2lsbCBtYXJrIHRoZSBldmVudCBsaXN0
ZW5lciB3ZSdyZSBjcmVhdGluZy4KKyAgICBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0ID0gc2Ny
aXB0Q29udHJvbGxlci0+Z2xvYmFsT2JqZWN0KCk7CisKKyAgICByZXR1cm4gSlNMYXp5RXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBldmVudFBhcmFtZXRl
ck5hbWUoZnJhbWUtPmRvY3VtZW50KCktPmlzU1ZHRG9jdW1lbnQoKSksIGF0dHItPnZhbHVlKCks
IGdsb2JhbE9iamVjdCwgMCwgc2NyaXB0Q29udHJvbGxlci0+ZXZlbnRIYW5kbGVyTGluZU51bWJl
cigpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdEV2ZW50TGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44
Mjk5ZDI5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVu
dExpc3RlbmVyLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2NyaXB0RXZlbnRMaXN0ZW5lcl9o
CisjZGVmaW5lIFNjcmlwdEV2ZW50TGlzdGVuZXJfaAorCisjaW5jbHVkZSAiSlNMYXp5RXZlbnRM
aXN0ZW5lci5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisgICAgY2xhc3MgQXR0cmlidXRlOworICAgIGNsYXNzIEZyYW1lOworICAgIGNs
YXNzIE5vZGU7CisKKyAgICBQYXNzUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoTm9kZSosIEF0dHJpYnV0ZSopOworICAgIFBhc3NSZWZQdHI8
SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihGcmFtZSos
IEF0dHJpYnV0ZSopOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTY3Jp
cHRFdmVudExpc3RlbmVyX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
RXZlbnRMaXN0ZW5lci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVu
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1YzBmNGEKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3Bw
CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2NyaXB0RXZl
bnRMaXN0ZW5lci5oIgorCisjaW5jbHVkZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NS
ZWZQdHI8VjhMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihO
b2RlKiBub2RlLCBBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgQVNTRVJUKG5vZGUpOworCisgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gbm9kZS0+ZG9jdW1lbnQoKTsKKworICAgIEZyYW1lKiBmcmFt
ZSA9IGRvY3VtZW50LT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiAw
OworCisgICAgcmV0dXJuIFY4TGF6eUV2ZW50TGlzdGVuZXI6OmNyZWF0ZShmcmFtZSwgYXR0ci0+
dmFsdWUoKSwgYXR0ci0+bG9jYWxOYW1lKCkuc3RyaW5nKCkpOworfQorCitQYXNzUmVmUHRyPFY4
TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoRnJhbWUqIGZy
YW1lLCBBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICByZXR1cm4gVjhMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGZyYW1lLCBhdHRy
LT52YWx1ZSgpLCBhdHRyLT5sb2NhbE5hbWUoKS5zdHJpbmcoKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRM
aXN0ZW5lci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ4YzcxMAotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5oCkBAIC0wLDAgKzEs
NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFNjcmlwdEV2ZW50TGlzdGVuZXJfaAorI2RlZmluZSBTY3JpcHRFdmVudExp
c3RlbmVyX2gKKworI2luY2x1ZGUgIlY4TGF6eUV2ZW50TGlzdGVuZXIuaCIKKworI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEF0
dHJpYnV0ZTsKKyAgICBjbGFzcyBGcmFtZTsKKyAgICBjbGFzcyBOb2RlOworCisgICAgUGFzc1Jl
ZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKE5v
ZGUqLCBBdHRyaWJ1dGUqKTsKKyAgICBQYXNzUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNy
ZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoRnJhbWUqLCBBdHRyaWJ1dGUqKTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2NyaXB0RXZlbnRMaXN0ZW5lcl9oCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggM2RmZjZhNC4uZDU0NjFkMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNzgsNyArNzgsNyBAQAog
I2luY2x1ZGUgIkltYWdlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTTGF6eUV2ZW50TGlzdGVu
ZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiS2V5Ym9h
cmRFdmVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQu
aCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwIGIvV2ViQ29y
ZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKaW5kZXggMjEzNTU0My4uZjI2NTNlZiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxCb2R5RWxlbWVudC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJGcmFtZVZp
ZXcuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50QmFzZS5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgotI2luY2x1ZGUgIkpTTGF6eUV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJTY3Jp
cHRFdmVudExpc3RlbmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MQnV0
dG9uRWxlbWVudC5jcHAKaW5kZXggNmRlZDc3Ni4uZjhhODk1OCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRv
bkVsZW1lbnQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiRm9ybURhdGFMaXN0Lmgi
CiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0j
aW5jbHVkZSAiSlNMYXp5RXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlz
dGVuZXIuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyQnV0
dG9uLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5k
ZXggMjI4YzczNi4uOWEzNDc0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC0zNyw3ICszNyw3IEBA
CiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgotI2luY2x1ZGUgIkpTTGF6eUV2ZW50TGlzdGVuZXIu
aCIKKyNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyV29y
ZEJyZWFrLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0LmgiCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDc3ZmExNWQuLjY3NjkxOGEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwCkBAIC00Miw3ICs0Miw3IEBACiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKLSNpbmNsdWRlICJKU0xhenlFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RXZl
bnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
RWxlbWVudEJhc2UuY3BwCmluZGV4IGQ5NTFhOTIuLjJlMjRhZjkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnRCYXNlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZVNldEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKLSNpbmNsdWRlICJKU0xhenlFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiU2NyaXB0
RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyRnJhbWUuaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVTZXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcApp
bmRleCAwNjA1ZTRlLi45OTlkNzBlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
U2V0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3Bw
CkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSlNMYXp5RXZlbnRMaXN0
ZW5lci5oIgorI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJMZW5n
dGguaCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggZmIzMTZlNy4uNTczNTkwMSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkhUTUxEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgotI2luY2x1ZGUgIkpTTGF6eUV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRFdmVu
dExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKIAogdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAyNTExNDA0Li5mMzRjNmU2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAi
SFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSlNMYXp5RXZlbnRMaXN0ZW5lci5oIgorI2luY2x1
ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAj
aW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0
bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDk5OGIwMDMuLmYyY2E2ODkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkhUTUxG
b3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUxvYWRlci5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgotI2luY2x1ZGUgIkpTTGF6eUV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJT
Y3JpcHRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyUGFydE9iamVjdC5oIgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRt
bC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggNjA3OGJkZi4uMjMxMDhhZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTFNjcmlwdEVsZW1lbnQuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0j
aW5jbHVkZSAiSlNMYXp5RXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlz
dGVuZXIuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwv
SFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IGVjYzlhMGIuLjA1YzJlODQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50LmNwcApAQCAtNDIsNyArNDIsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiSlNMYXp5RXZlbnRMaXN0ZW5lci5oIgorI2luY2x1
ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAj
aW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmNwcAppbmRleCA5YjdkY2Y3Li42NGU4MWExIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiRm9ybURhdGFM
aXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNs
dWRlICJKU0xhenlFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5l
ci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1
ZGUgIlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgiCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDI0MmFm
MzIuLmMyMTYxMTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgotI2luY2x1ZGUgIkpTTGF6eUV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRF
dmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJS
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmNwcAppbmRleCBjNWUzNDJjLi40YmU1N2RkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNw
cApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSlNMYXp5RXZlbnRMaXN0
ZW5lci5oIgorI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJSZW5k
ZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jvb3QuaCIKICNp
bmNsdWRlICJTVkdBbmdsZS5oIgo=
</data>
<flag name="review"
          id="14880"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>