<?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>121560</bug_id>
          
          <creation_ts>2013-09-18 10:46:30 -0700</creation_ts>
          <short_desc>Rename RenderBR to RenderLineBreak</short_desc>
          <delta_ts>2013-09-18 11:03:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mario</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>930676</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-18 10:46:30 -0700</bug_when>
    <thetext>It now represents both hard (br) and soft (wbr) line breaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930678</commentid>
    <comment_count>1</comment_count>
      <attachid>212004</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-18 10:50:30 -0700</bug_when>
    <thetext>Created attachment 212004
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930683</commentid>
    <comment_count>2</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-18 11:03:55 -0700</bug_when>
    <thetext>https://trac.webkit.org/r156054</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212004</attachid>
            <date>2013-09-18 10:50:30 -0700</date>
            <delta_ts>2013-09-18 10:51:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>rename-renderbr.patch</filename>
            <type>text/plain</type>
            <size>57186</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjA1MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTE4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgUmVuZGVyQlIgdG8g
UmVuZGVyTGluZUJyZWFrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjE1NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJdCBub3cgcmVwcmVzZW50cyBib3RoIGhhcmQgKGJyKSBhbmQgc29mdCAod2JyKSBs
aW5lIGJyZWFrcy4KKwogMjAxMy0wOS0xOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgUXQgKGFuZCBvdGhlcikgcG9y
dHMgYWZ0ZXIgMTU2MDQ5LgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE1NjA0
NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0y
MTE2LDcgKzIxMTYsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcmVuZGVyaW5nL0xpbmVX
aWR0aC5jcHAKICAgICByZW5kZXJpbmcvUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNwcAogICAgIHJl
bmRlcmluZy9SZW5kZXJBcmVuYS5jcHAKLSAgICByZW5kZXJpbmcvUmVuZGVyQlIuY3BwCiAgICAg
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTIxNTEsNiAr
MjE1MCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5ZXJG
aWx0ZXJJbmZvLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAog
ICAgIHJlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKKyAgICByZW5kZXJpbmcvUmVuZGVy
TGluZUJyZWFrLmNwcAogICAgIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAogICAgIHJlbmRl
cmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTU2MDQ1KQor
KysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAt
NDM5NSw4ICs0Mzk1LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94UmVnaW9uSW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaCBcCi0JU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJSLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJSLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJDb21iaW5lVGV4dC5jcHAgXApAQCAtNDQ1Niw2ICs0NDU0LDggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuaCBcCisJU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwIFwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTU2MDQ1KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTE1NCw3ICsxMTU0LDYgQEAgU09VUkNFUyArPSBcCiAg
ICAgcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgXAogICAgIHJlbmRlcmluZy9S
ZW5kZXJCb3guY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIFwK
LSAgICByZW5kZXJpbmcvUmVuZGVyQlIuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyQnV0dG9u
LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcCBcCiAgICAgcmVuZGVy
aW5nL1JlbmRlckNvdW50ZXIuY3BwIFwKQEAgLTExODIsNiArMTE4MSw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uY3BwIFwKICAgICByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJMaW5l
Qm94TGlzdC5jcHAgXAorICAgIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIFwKICAgICBy
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRl
bS5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBcCkBAIC0yNDIzLDcg
KzI0MjMsNiBAQCBIRUFERVJTICs9IFwKICAgICByZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBcCiAg
ICAgcmVuZGVyaW5nL1JlbmRlckJveC5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuaCBcCi0gICAgcmVuZGVyaW5nL1JlbmRlckJSLmggXAogICAgIHJlbmRlcmluZy9SZW5k
ZXJCdXR0b24uaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmggXAogICAgIHJl
bmRlcmluZy9SZW5kZXJDb3VudGVyLmggXApAQCAtMjQ1MCw2ICsyNDQ5LDcgQEAgSEVBREVSUyAr
PSBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIFwKICAgICByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVyTGluZUJv
eExpc3QuaCBcCisgICAgcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oIFwKICAgICByZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaCBcCiAg
ICAgcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE1NjA0NSkKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNCArMSw0IEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1
dGYtOCI/PgorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDxQcm9qZWN0
IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8v
c2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdy
b3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgogICAgIDxQcm9qZWN0Q29uZmlndXJh
dGlvbiBJbmNsdWRlPSJEZWJ1Z1N1ZmZpeHxXaW4zMiI+CkBAIC05NzM4LDcgKzk3MzgsNyBAQAog
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgog
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAg
ICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xSZW5k
ZXJCUi5jcHAiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlckxp
bmVCcmVhay5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KQEAgLTE5OTU3LDcgKzE5OTU3LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xSZW5kZXJCbG9jay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cmVuZGVyaW5nXFJlbmRlckJveC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVu
ZGVyaW5nXFJlbmRlckJveE1vZGVsT2JqZWN0LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxyZW5kZXJpbmdcUmVuZGVyQlIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xSZW5kZXJCdXR0b24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xSZW5kZXJDb21iaW5lVGV4dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccmVuZGVyaW5nXFJlbmRlckNvdW50ZXIuaCIgLz4KQEAgLTE5OTg3LDYgKzE5OTg2LDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJMYXllck1vZGVs
T2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVy
TGluZUJveExpc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xS
ZW5kZXJMaXN0Qm94LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
UmVuZGVyTGluZUJyZWFrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJp
bmdcUmVuZGVyTGlzdEl0ZW0uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRl
cmluZ1xSZW5kZXJMaXN0TWFya2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
ZW5kZXJpbmdcUmVuZGVyTWFycXVlZS5oIiAvPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU2MDQ1KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC01MTIyLDggKzUxMjIsOCBAQAogCQlCQ0VBNDg2MDA5N0Q5MzAyMDA5NEM5RTQg
LyogUmVuZGVyQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRUE0ODIxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9jay5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODYxMDk3RDkz
MDIwMDk0QzlFNCAvKiBSZW5kZXJCb3guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4MjIwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJveC5j
cHAgKi87IH07CiAJCUJDRUE0ODYyMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCb3guaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODIzMDk3RDkz
MDIwMDk0QzlFNCAvKiBSZW5kZXJCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQlCQ0VBNDg2MzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQlIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4
MjQwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJSLmNwcCAqLzsgfTsKLQkJQkNFQTQ4NjQwOTdE
OTMwMjAwOTRDOUU0IC8qIFJlbmRlckJSLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgyNTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQlIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQ0VBNDg2
MzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyTGluZUJyZWFrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODI0MDk3RDkzMDIwMDk0QzlFNCAv
KiBSZW5kZXJMaW5lQnJlYWsuY3BwICovOyB9OworCQlCQ0VBNDg2NDA5N0Q5MzAyMDA5NEM5RTQg
LyogUmVuZGVyTGluZUJyZWFrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0VBNDgyNTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyTGluZUJyZWFrLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNFQTQ4
NjUwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJ1dHRvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgyNjA5N0Q5MzAyMDA5NEM5RTQgLyog
UmVuZGVyQnV0dG9uLmNwcCAqLzsgfTsKIAkJQkNFQTQ4NjYwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlckJ1dHRvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNFQTQ4MjcwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJ1dHRvbi5oICovOyB9OwogCQlC
Q0VBNDg2NzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVmlldy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgyODA5N0Q5MzAyMDA5NEM5RTQg
LyogUmVuZGVyVmlldy5jcHAgKi87IH07CkBAIC0xMTk3MCw4ICsxMTk3MCw4IEBACiAJCUJDRUE0
ODIxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkNFQTQ4MjIwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJveC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyQm94LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4MjMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJveC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyQm94Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUJDRUE0ODI0MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCUi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyQlIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0VBNDgyNTA5N0Q5MzAyMDA5NEM5RTQgLyog
UmVuZGVyQlIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckJSLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRUE0ODI0MDk3RDkzMDIwMDk0QzlFNCAv
KiBSZW5kZXJMaW5lQnJlYWsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbmRlckxpbmVCcmVhay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
RUE0ODI1MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJMaW5lQnJlYWsuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckxpbmVCcmVhay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQ0VBNDgyNjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQnV0dG9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJCdXR0b24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VBNDgyNzA5N0Q5MzAyMDA5NEM5RTQg
LyogUmVuZGVyQnV0dG9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5k
ZXJCdXR0b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4MjgwOTdEOTMw
MjAwOTRDOUU0IC8qIFJlbmRlclZpZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlclZpZXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjA0MjEsOCArMjA0MjEsNiBAQAogCQkJCUJDOTZEQjQ1MEYzQTg4MjIwMDU3M0NCMyAvKiBSZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAgKi8sCiAJCQkJQkM5NkRCNDIwRjNBODgwRTAwNTczQ0IzIC8q
IFJlbmRlckJveE1vZGVsT2JqZWN0LmggKi8sCiAJCQkJQkNFQjE3OUIxNDMzNzlGNTAwNTJFQUU5
IC8qIFJlbmRlckJveFJlZ2lvbkluZm8uaCAqLywKLQkJCQlCQ0VBNDgyNDA5N0Q5MzAyMDA5NEM5
RTQgLyogUmVuZGVyQlIuY3BwICovLAotCQkJCUJDRUE0ODI1MDk3RDkzMDIwMDk0QzlFNCAvKiBS
ZW5kZXJCUi5oICovLAogCQkJCUJDRUE0ODI2MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCdXR0
b24uY3BwICovLAogCQkJCUJDRUE0ODI3MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCdXR0b24u
aCAqLywKIAkJCQlCQ0U0NDEzMTEyRjc0OEUyMDA5Qjg0QjggLyogUmVuZGVyQ29tYmluZVRleHQu
Y3BwICovLApAQCAtMjA0ODAsNiArMjA0NzgsOCBAQAogCQkJCTNDMjQ0RkU0QTM3NUFDNjMzRjg4
QkU2RiAvKiBSZW5kZXJMYXllck1vZGVsT2JqZWN0LmggKi8sCiAJCQkJQkMzM0ZCMUEwRjMwRUU4
NTAwMkNERDdDIC8qIFJlbmRlckxpbmVCb3hMaXN0LmNwcCAqLywKIAkJCQkwQkUwMzBBMTBGMzEx
MkZCMDAzQzFBNDYgLyogUmVuZGVyTGluZUJveExpc3QuaCAqLywKKwkJCQlCQ0VBNDgyNDA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVyTGluZUJyZWFrLmNwcCAqLywKKwkJCQlCQ0VBNDgyNTA5N0Q5
MzAyMDA5NEM5RTQgLyogUmVuZGVyTGluZUJyZWFrLmggKi8sCiAJCQkJQUJCNTQxOUMwQUNEREZF
NDAwMjgyMEVCIC8qIFJlbmRlckxpc3RCb3guY3BwICovLAogCQkJCUFCQjU0MTlEMEFDRERGRTQw
MDI4MjBFQiAvKiBSZW5kZXJMaXN0Qm94LmggKi8sCiAJCQkJQThFQTdBNDgwQTE5MUE1MjAwQThF
RjVGIC8qIFJlbmRlckxpc3RJdGVtLmNwcCAqLywKQEAgLTIzNTkwLDcgKzIzNTkwLDcgQEAKIAkJ
CQlCQ0VBNDg2MjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQm94LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzk2REI0MzBGM0E4ODBFMDA1NzNDQjMgLyogUmVuZGVyQm94TW9kZWxPYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDRUIxNzlDMTQzMzc5RjUwMDUyRUFFOSAvKiBSZW5kZXJCb3hS
ZWdpb25JbmZvLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQ0VBNDg2NDA5N0Q5MzAyMDA5NEM5RTQg
LyogUmVuZGVyQlIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDRUE0ODY0MDk3RDkzMDIwMDk0QzlF
NCAvKiBSZW5kZXJMaW5lQnJlYWsuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODY2MDk3RDkz
MDIwMDk0QzlFNCAvKiBSZW5kZXJCdXR0b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTQ0MTM0
MTJGNzQ4RTIwMDlCODRCOCAvKiBSZW5kZXJDb21iaW5lVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTM5MkYxNDIwQUQxODVGNDAwNjkxQkQ0IC8qIFJlbmRlckNvdW50ZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjY3ODgsNyArMjY3ODgsNyBAQAogCQkJCUJDRUE0ODUyMDk3RDkzMDIwMDk0QzlF
NCAvKiBSZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4
NjEwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJveC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
Qzk2REI0NjBGM0E4ODIyMDA1NzNDQjMgLyogUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJQkNFQTQ4NjMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJSLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUJDRUE0ODYzMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJMaW5l
QnJlYWsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NjUwOTdEOTMwMjAwOTRDOUU0IC8q
IFJlbmRlckJ1dHRvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzI3N0U1NDE3RDAxOENDMDAx
NTUzNEQgLyogSlNNZWRpYVN0cmVhbVRyYWNrRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNFNDQxMzMxMkY3NDhFMjAwOUI4NEI4IC8qIFJlbmRlckNvbWJpbmVUZXh0LmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAxNTYwNDUpCisrKyBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw2IEBACiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCi0jaW5jbHVk
ZSAiUmVuZGVyQlIuaCIKICNpbmNsdWRlICJSZW5kZXJCdXR0b24uaCIKICNpbmNsdWRlICJSZW5k
ZXJGaWVsZHNldC5oIgogI2luY2x1ZGUgIlJlbmRlckZpbGVVcGxvYWRDb250cm9sLmgiCkBAIC03
Myw2ICs3Miw3IEBACiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJ
bmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlckxpbmVC
cmVhay5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RCb3guaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0
TWFya2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1MQmxvY2suaCIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uLmNwcAkocmV2aXNpb24gMTU2MDQ1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Bv
c2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIklu
bGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUG9zaXRpb25J
dGVyYXRvci5oIgotI2luY2x1ZGUgIlJlbmRlckJSLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2su
aCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKKyNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsu
aCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oIgogI2luY2x1ZGUgIlRleHQuaCIKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIGJvb2wg
aGFzSW5saW5lQm94V3JhcHBlcihSZW5kZXJPYgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBp
ZiAocmVuZGVyZXIuaXNUZXh0KCkgJiYgdG9SZW5kZXJUZXh0KHJlbmRlcmVyKS5maXJzdFRleHRC
b3goKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlbmRlcmVyLmlzTGluZUJyZWFr
KCkgJiYgdG9SZW5kZXJCUihyZW5kZXJlcikuaW5saW5lQm94V3JhcHBlcigpKQorICAgIGlmIChy
ZW5kZXJlci5pc0xpbmVCcmVhaygpICYmIHRvUmVuZGVyTGluZUJyZWFrKHJlbmRlcmVyKS5pbmxp
bmVCb3hXcmFwcGVyKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsK
IH0KQEAgLTg1Nyw3ICs4NTcsNyBAQCBib29sIFBvc2l0aW9uOjpoYXNSZW5kZXJlZE5vbkFub255
bW91c0RlCiAgICAgZm9yIChSZW5kZXJPYmplY3QgKm8gPSByZW5kZXJlci0+Zmlyc3RDaGlsZCgp
OyBvICYmIG8gIT0gc3RvcDsgbyA9IG8tPm5leHRJblByZU9yZGVyKCkpCiAgICAgICAgIGlmIChv
LT5ub25Qc2V1ZG9Ob2RlKCkpIHsKICAgICAgICAgICAgIGlmICgoby0+aXNUZXh0KCkgJiYgYm91
bmRpbmdCb3hMb2dpY2FsSGVpZ2h0KG8sIHRvUmVuZGVyVGV4dChvKS0+bGluZXNCb3VuZGluZ0Jv
eCgpKSkKLSAgICAgICAgICAgICAgICB8fCAoby0+aXNMaW5lQnJlYWsoKSAmJiBib3VuZGluZ0Jv
eExvZ2ljYWxIZWlnaHQobywgdG9SZW5kZXJCUihvKS0+bGluZXNCb3VuZGluZ0JveCgpKSkKKyAg
ICAgICAgICAgICAgICB8fCAoby0+aXNMaW5lQnJlYWsoKSAmJiBib3VuZGluZ0JveExvZ2ljYWxI
ZWlnaHQobywgdG9SZW5kZXJMaW5lQnJlYWsobyktPmxpbmVzQm91bmRpbmdCb3goKSkpCiAgICAg
ICAgICAgICAgICAgfHwgKG8tPmlzQm94KCkgJiYgdG9SZW5kZXJCb3gobyktPnBpeGVsU25hcHBl
ZExvZ2ljYWxIZWlnaHQoKSkKICAgICAgICAgICAgICAgICB8fCAoby0+aXNSZW5kZXJJbmxpbmUo
KSAmJiBpc0VtcHR5SW5saW5lKG8pICYmIGJvdW5kaW5nQm94TG9naWNhbEhlaWdodChvLCB0b1Jl
bmRlcklubGluZShvKS0+bGluZXNCb3VuZGluZ0JveCgpKSkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0xMTk1LDcgKzExOTUsNyBAQCB2b2lkIFBvc2l0aW9uOjpnZXRJbmxpbmVC
b3hBbmRPZmZzZXQoRUFmCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGRlcHJlY2F0ZWRO
b2RlKCktPnJlbmRlcmVyKCk7CiAKICAgICBpZiAocmVuZGVyZXItPmlzQlIoKSkKLSAgICAgICAg
aW5saW5lQm94ID0gIWNhcmV0T2Zmc2V0ID8gdG9SZW5kZXJCUihyZW5kZXJlciktPmlubGluZUJv
eFdyYXBwZXIoKSA6IG51bGxwdHI7CisgICAgICAgIGlubGluZUJveCA9ICFjYXJldE9mZnNldCA/
IHRvUmVuZGVyTGluZUJyZWFrKHJlbmRlcmVyKS0+aW5saW5lQm94V3JhcHBlcigpIDogbnVsbHB0
cjsKICAgICBlbHNlIGlmIChyZW5kZXJlci0+aXNUZXh0KCkpIHsKICAgICAgICAgUmVuZGVyVGV4
dCogdGV4dFJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KHJlbmRlcmVyKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxCUkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTYwNDUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsy
Nyw3IEBACiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVl
S2V5d29yZHMuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJSZW5kZXJCUi5o
IgorI2luY2x1ZGUgIlJlbmRlckxpbmVCcmVhay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTc2LDcgKzc2LDcgQEAgUmVuZGVyT2JqZWN0KiBIVE1MQlJFbGVtZW50OjpjcmVhdGVSZW5k
ZQogICAgIGlmIChzdHlsZS5oYXNDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJPYmpl
Y3Q6OmNyZWF0ZU9iamVjdCgqdGhpcywgc3R5bGUpOwogCi0gICAgcmV0dXJuIG5ldyAoYXJlbmEp
IFJlbmRlckJSKCp0aGlzKTsKKyAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyTGluZUJyZWFr
KCp0aGlzKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE1NjA0NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBACiAjaW5jbHVkZSAiSFRNTFRlbXBsYXRlRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiTm9kZVRyYXZlcnNhbC5oIgotI2luY2x1ZGUgIlJlbmRlckJSLmgiCisjaW5jbHVkZSAiUmVu
ZGVyTGluZUJyZWFrLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUg
IlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNzkxLDcg
Kzc5MSw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QKIFJlbmRl
ck9iamVjdCogSFRNTEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiBhcmVuYSwg
UmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIGlmIChoYXNMb2NhbE5hbWUod2JyVGFnKSkKLSAg
ICAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckJSKCp0aGlzKTsKKyAgICAgICAgcmV0dXJu
IG5ldyAoYXJlbmEpIFJlbmRlckxpbmVCcmVhaygqdGhpcyk7CiAgICAgcmV0dXJuIFJlbmRlck9i
amVjdDo6Y3JlYXRlT2JqZWN0KCp0aGlzLCBzdHlsZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVCb3guY3BwCShyZXZpc2lvbiAxNTYwNDUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcs
OCBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNpbmNsdWRl
ICJSZW5kZXJBcmVuYS5oIgotI2luY2x1ZGUgIlJlbmRlckJSLmgiCiAjaW5jbHVkZSAiUmVuZGVy
QmxvY2suaCIKKyNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsuaCIKICNpbmNsdWRlICJSb290SW5s
aW5lQm94LmgiCiAKICNpZm5kZWYgTkRFQlVHCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBJbmxp
bmVCb3g6OmRlbGV0ZUxpbmUoUmVuZGVyQXJlbmEmIAogICAgICAgICBpZiAobV9yZW5kZXJlci5p
c0JveCgpKQogICAgICAgICAgICAgdG9SZW5kZXJCb3gocmVuZGVyZXIoKSkuc2V0SW5saW5lQm94
V3JhcHBlcigwKTsKICAgICAgICAgZWxzZSBpZiAocmVuZGVyZXIoKS5pc0xpbmVCcmVhaygpKQot
ICAgICAgICAgICAgdG9SZW5kZXJCUihyZW5kZXJlcigpKS5zZXRJbmxpbmVCb3hXcmFwcGVyKDAp
OworICAgICAgICAgICAgdG9SZW5kZXJMaW5lQnJlYWsocmVuZGVyZXIoKSkuc2V0SW5saW5lQm94
V3JhcHBlcigwKTsKICAgICB9CiAgICAgZGVzdHJveShhcmVuYSk7CiB9CkBAIC0yMDMsNyArMjAz
LDcgQEAgdm9pZCBJbmxpbmVCb3g6OmV4dHJhY3RMaW5lKCkKICAgICBpZiAobV9yZW5kZXJlci5p
c0JveCgpKQogICAgICAgICB0b1JlbmRlckJveChyZW5kZXJlcigpKS5zZXRJbmxpbmVCb3hXcmFw
cGVyKDApOwogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuaXNMaW5lQnJlYWsoKSkKLSAgICAgICAg
dG9SZW5kZXJCUihyZW5kZXJlcigpKS5zZXRJbmxpbmVCb3hXcmFwcGVyKDApOworICAgICAgICB0
b1JlbmRlckxpbmVCcmVhayhyZW5kZXJlcigpKS5zZXRJbmxpbmVCb3hXcmFwcGVyKDApOwogfQog
CiB2b2lkIElubGluZUJveDo6YXR0YWNoTGluZSgpCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBJ
bmxpbmVCb3g6OmF0dGFjaExpbmUoKQogICAgIGlmIChtX3JlbmRlcmVyLmlzQm94KCkpCiAgICAg
ICAgIHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLnNldElubGluZUJveFdyYXBwZXIodGhpcyk7CiAg
ICAgZWxzZSBpZiAocmVuZGVyZXIoKS5pc0xpbmVCcmVhaygpKQotICAgICAgICB0b1JlbmRlckJS
KHJlbmRlcmVyKCkpLnNldElubGluZUJveFdyYXBwZXIodGhpcyk7CisgICAgICAgIHRvUmVuZGVy
TGluZUJyZWFrKHJlbmRlcmVyKCkpLnNldElubGluZUJveFdyYXBwZXIodGhpcyk7CiB9CiAKIHZv
aWQgSW5saW5lQm94OjphZGp1c3RQb3NpdGlvbihmbG9hdCBkeCwgZmxvYXQgZHkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCShyZXZpc2lvbiAxNTYw
NDUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDkgKzM3LDkgQEAKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNpbmNs
dWRlICJSZW5kZXJlZERvY3VtZW50TWFya2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIK
LSNpbmNsdWRlICJSZW5kZXJCUi5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyQ29tYmluZVRleHQuaCIKKyNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsuaCIKICNp
bmNsdWRlICJSZW5kZXJSdWJ5UnVuLmgiCiAjaW5jbHVkZSAiUmVuZGVyUnVieVRleHQuaCIKICNp
bmNsdWRlICJSZW5kZXJUaGVtZS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJSLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QlIuY3BwCShyZXZpc2lvbiAxNTYwNDUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQlIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE5MCArMCwwIEBACi0vKioKLSAqIENvcHly
aWdodCAoQykgMjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChD
KSAyMDA2LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJSZW5kZXJCUi5oIgotCi0jaW5jbHVkZSAiRG9jdW1lbnQu
aCIKLSNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgotI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCi0j
aW5jbHVkZSAiUm9vdElubGluZUJveC5oIgotI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBpbnQgaW52YWxpZExpbmVIZWln
aHQgPSAtMTsKLQotUmVuZGVyQlI6OlJlbmRlckJSKEhUTUxFbGVtZW50JiBlbGVtZW50KQotICAg
IDogUmVuZGVyQm94TW9kZWxPYmplY3QoJmVsZW1lbnQpCi0gICAgLCBtX2lubGluZUJveFdyYXBw
ZXIobnVsbHB0cikKLSAgICAsIG1fY2FjaGVkTGluZUhlaWdodChpbnZhbGlkTGluZUhlaWdodCkK
LSAgICAsIG1faXNXQlIoZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6d2JyVGFnKSkKLXsK
LSAgICBzZXRJc0xpbmVCcmVhaygpOwotfQotCi1SZW5kZXJCUjo6flJlbmRlckJSKCkKLXsKLSAg
ICBpZiAobV9pbmxpbmVCb3hXcmFwcGVyKQotICAgICAgICBtX2lubGluZUJveFdyYXBwZXItPmRl
c3Ryb3kocmVuZGVyQXJlbmEoKSk7Ci19Ci0KLUxheW91dFVuaXQgUmVuZGVyQlI6OmxpbmVIZWln
aHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIC8qZGlyZWN0aW9uKi8sIExpbmVQ
b3NpdGlvbk1vZGUgLypsaW5lUG9zaXRpb25Nb2RlKi8pIGNvbnN0Ci17Ci0gICAgaWYgKGZpcnN0
TGluZSAmJiBkb2N1bWVudCgpLnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPnVzZXNGaXJzdExpbmVS
dWxlcygpKSB7Ci0gICAgICAgIFJlbmRlclN0eWxlKiBzID0gc3R5bGUoZmlyc3RMaW5lKTsKLSAg
ICAgICAgaWYgKHMgIT0gc3R5bGUoKSkKLSAgICAgICAgICAgIHJldHVybiBzLT5jb21wdXRlZExp
bmVIZWlnaHQoJnZpZXcoKSk7Ci0gICAgfQotCi0gICAgaWYgKG1fY2FjaGVkTGluZUhlaWdodCA9
PSBpbnZhbGlkTGluZUhlaWdodCkKLSAgICAgICAgbV9jYWNoZWRMaW5lSGVpZ2h0ID0gc3R5bGUo
KS0+Y29tcHV0ZWRMaW5lSGVpZ2h0KCZ2aWV3KCkpOwotICAgIAotICAgIHJldHVybiBtX2NhY2hl
ZExpbmVIZWlnaHQ7Ci19Ci0KLWludCBSZW5kZXJCUjo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFz
ZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGly
ZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0Ci17Ci0gICAg
Y29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gc3R5bGUoZmlyc3RMaW5lKS0+Zm9udE1l
dHJpY3MoKTsKLSAgICByZXR1cm4gZm9udE1ldHJpY3MuYXNjZW50KGJhc2VsaW5lVHlwZSkgKyAo
bGluZUhlaWdodChmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkgLSBmb250
TWV0cmljcy5oZWlnaHQoKSkgLyAyOwotfQotCi1JbmxpbmVCb3gqIFJlbmRlckJSOjpjcmVhdGVJ
bmxpbmVCb3goKQotewotICAgIHJldHVybiBuZXcgKHJlbmRlckFyZW5hKCkpIElubGluZUJveCgq
dGhpcyk7Ci19Ci0KLXZvaWQgUmVuZGVyQlI6OnNldElubGluZUJveFdyYXBwZXIoSW5saW5lQm94
KiBpbmxpbmVCb3gpCi17Ci0gICAgQVNTRVJUKCFpbmxpbmVCb3ggfHwgIW1faW5saW5lQm94V3Jh
cHBlcik7Ci0gICAgbV9pbmxpbmVCb3hXcmFwcGVyID0gaW5saW5lQm94OwotfQotCi12b2lkIFJl
bmRlckJSOjpyZXBsYWNlSW5saW5lQm94V3JhcHBlcihJbmxpbmVCb3gqIGlubGluZUJveCkKLXsK
LSAgICBkZWxldGVJbmxpbmVCb3hXcmFwcGVyKCk7Ci0gICAgc2V0SW5saW5lQm94V3JhcHBlcihp
bmxpbmVCb3gpOwotfQotCi12b2lkIFJlbmRlckJSOjpkZWxldGVJbmxpbmVCb3hXcmFwcGVyKCkK
LXsKLSAgICBpZiAoIW1faW5saW5lQm94V3JhcHBlcikKLSAgICAgICAgcmV0dXJuOwotICAgIGlm
ICghZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpKQotICAgICAgICBtX2lubGluZUJveFdyYXBwZXIt
PnJlbW92ZSgpOwotICAgIG1faW5saW5lQm94V3JhcHBlci0+ZGVzdHJveShyZW5kZXJBcmVuYSgp
KTsKLSAgICBtX2lubGluZUJveFdyYXBwZXIgPSBudWxscHRyOwotfQotCi12b2lkIFJlbmRlckJS
OjpkaXJ0eUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpCi17Ci0gICAgaWYgKCFtX2lubGluZUJv
eFdyYXBwZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoZnVsbExheW91dCkgewotICAgICAg
ICBtX2lubGluZUJveFdyYXBwZXItPmRlc3Ryb3kocmVuZGVyQXJlbmEoKSk7Ci0gICAgICAgIG1f
aW5saW5lQm94V3JhcHBlciA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
bV9pbmxpbmVCb3hXcmFwcGVyLT5kaXJ0eUxpbmVCb3hlcygpOwotfQotCi1pbnQgUmVuZGVyQlI6
OmNhcmV0TWluT2Zmc2V0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotaW50IFJlbmRl
ckJSOjpjYXJldE1heE9mZnNldCgpIGNvbnN0Ci17IAotICAgIHJldHVybiAxOwotfQotCi1ib29s
IFJlbmRlckJSOjpjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdAotewotICAgIHJldHVybiB0cnVl
OwotfQotCi1WaXNpYmxlUG9zaXRpb24gUmVuZGVyQlI6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmKQotewotICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgRE9X
TlNUUkVBTSk7Ci19Ci0KLXZvaWQgUmVuZGVyQlI6OnNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlv
blN0YXRlIHN0YXRlKQotewotICAgIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzZXRTZWxlY3Rpb25T
dGF0ZShzdGF0ZSk7Ci0gICAgaWYgKCFtX2lubGluZUJveFdyYXBwZXIpCi0gICAgICAgIHJldHVy
bjsKLSAgICBtX2lubGluZUJveFdyYXBwZXItPnJvb3QoKS5zZXRIYXNTZWxlY3RlZENoaWxkcmVu
KHN0YXRlICE9IFNlbGVjdGlvbk5vbmUpOwotfQotCi1MYXlvdXRSZWN0IFJlbmRlckJSOjpsb2Nh
bENhcmV0UmVjdChJbmxpbmVCb3gqIGlubGluZUJveCwgaW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRV
bml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChjYXJldE9m
ZnNldCwgIWNhcmV0T2Zmc2V0KTsKLSAgICBBU1NFUlRfVU5VU0VEKGlubGluZUJveCwgaW5saW5l
Qm94ID09IG1faW5saW5lQm94V3JhcHBlcik7Ci0gICAgaWYgKCFpbmxpbmVCb3gpCi0gICAgICAg
IHJldHVybiBMYXlvdXRSZWN0KCk7Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2FyZXRX
aWR0aCA9IDE7Ci0gICAgY29uc3QgUm9vdElubGluZUJveCYgcm9vdEJveCA9IGlubGluZUJveC0+
cm9vdCgpOwotICAgIHJldHVybiByb290Qm94LmNvbXB1dGVDYXJldFJlY3QoaW5saW5lQm94LT5s
b2dpY2FsTGVmdCgpLCBjYXJldFdpZHRoLCBleHRyYVdpZHRoVG9FbmRPZkxpbmUpOwotfQotCi1J
bnRSZWN0IFJlbmRlckJSOjpsaW5lc0JvdW5kaW5nQm94KCkgY29uc3QKLXsKLSAgICBpZiAoIW1f
aW5saW5lQm94V3JhcHBlcikKLSAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKLQotICAgIGZsb2F0
IGxvZ2ljYWxMZWZ0U2lkZSA9IG1faW5saW5lQm94V3JhcHBlci0+bG9naWNhbExlZnQoKTsKLSAg
ICBmbG9hdCBsb2dpY2FsUmlnaHRTaWRlID0gbV9pbmxpbmVCb3hXcmFwcGVyLT5sb2dpY2FsUmln
aHQoKTsKLQotICAgIGJvb2wgaXNIb3Jpem9udGFsID0gc3R5bGUoKS0+aXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKTsKLQotICAgIGZsb2F0IHggPSBpc0hvcml6b250YWwgPyBsb2dpY2FsTGVmdFNp
ZGUgOiBtX2lubGluZUJveFdyYXBwZXItPngoKTsKLSAgICBmbG9hdCB5ID0gaXNIb3Jpem9udGFs
ID8gbV9pbmxpbmVCb3hXcmFwcGVyLT55KCkgOiBsb2dpY2FsTGVmdFNpZGU7Ci0gICAgZmxvYXQg
d2lkdGggPSBpc0hvcml6b250YWwgPyBsb2dpY2FsUmlnaHRTaWRlIC0gbG9naWNhbExlZnRTaWRl
IDogbV9pbmxpbmVCb3hXcmFwcGVyLT5sb2dpY2FsQm90dG9tKCkgLSB4OwotICAgIGZsb2F0IGhl
aWdodCA9IGlzSG9yaXpvbnRhbCA/IG1faW5saW5lQm94V3JhcHBlci0+bG9naWNhbEJvdHRvbSgp
IC0geSA6IGxvZ2ljYWxSaWdodFNpZGUgLSBsb2dpY2FsTGVmdFNpZGU7Ci0gICAgcmV0dXJuIGVu
Y2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKLX0KLQotdm9p
ZCBSZW5kZXJCUjo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2lubGlu
ZUJveFdyYXBwZXIpCi0gICAgICAgIHJldHVybjsKLSAgICByZWN0cy5hcHBlbmQoZW5jbG9zaW5n
SW50UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQgKyBtX2lubGluZUJveFdyYXBwZXIt
PnRvcExlZnQoKSwgbV9pbmxpbmVCb3hXcmFwcGVyLT5zaXplKCkpKSk7Ci19Ci0KLXZvaWQgUmVu
ZGVyQlI6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNG
aXhlZCkgY29uc3QKLXsKLSAgICBpZiAoIW1faW5saW5lQm94V3JhcHBlcikKLSAgICAgICAgcmV0
dXJuOwotICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChtX2lu
bGluZUJveFdyYXBwZXItPnRvcExlZnQoKSwgbV9pbmxpbmVCb3hXcmFwcGVyLT5zaXplKCkpLCAw
IC8qIG1vZGUgKi8sIHdhc0ZpeGVkKSk7Ci19Ci0KLXZvaWQgUmVuZGVyQlI6OnVwZGF0ZUZyb21T
dHlsZSgpCi17Ci0gICAgbV9jYWNoZWRMaW5lSGVpZ2h0ID0gaW52YWxpZExpbmVIZWlnaHQ7Ci19
Ci0KLUludFJlY3QgUmVuZGVyQlI6OmJvcmRlckJvdW5kaW5nQm94KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gSW50UmVjdChJbnRQb2ludCgpLCBsaW5lc0JvdW5kaW5nQm94KCkuc2l6ZSgpKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJSLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJSLmgJKHJldmlzaW9uIDE1NjA0NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCUi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBSZW5kZXJCUl9o
Ci0jZGVmaW5lIFJlbmRlckJSX2gKLQotI2luY2x1ZGUgIlJlbmRlckJveE1vZGVsT2JqZWN0Lmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSFRNTEVsZW1lbnQ7Ci1jbGFzcyBQb3Np
dGlvbjsKLQotLy8gRklYTUU6IFJlbmFtZSB0aGlzIHRvIFJlbmRlckxpbmVCcmVhay4KLWNsYXNz
IFJlbmRlckJSIEZJTkFMIDogcHVibGljIFJlbmRlckJveE1vZGVsT2JqZWN0IHsKLXB1YmxpYzoK
LSAgICBleHBsaWNpdCBSZW5kZXJCUihIVE1MRWxlbWVudCYpOwotICAgIHZpcnR1YWwgflJlbmRl
ckJSKCk7Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX2lzV0JSID8gIlJlbmRlcldvcmRCcmVhayIgOiAiUmVuZGVyQlIiOyB9Ci0KLSAgICBJ
bmxpbmVCb3gqIGNyZWF0ZUlubGluZUJveCgpOwotICAgIElubGluZUJveCogaW5saW5lQm94V3Jh
cHBlcigpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQm94V3JhcHBlcjsgfQotICAgIHZvaWQgc2V0
SW5saW5lQm94V3JhcHBlcihJbmxpbmVCb3gqKTsKLSAgICB2b2lkIGRlbGV0ZUlubGluZUJveFdy
YXBwZXIoKTsKLSAgICB2b2lkIHJlcGxhY2VJbmxpbmVCb3hXcmFwcGVyKElubGluZUJveCopOwot
ICAgIHZvaWQgZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KTsKLQotICAgIEludFJlY3Qg
bGluZXNCb3VuZGluZ0JveCgpIGNvbnN0OwotCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVj
dHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBPVkVSUklERTsKLQotcHJpdmF0ZToK
LSAgICB2b2lkIG5vZGUoKSBjb25zdCBXVEZfREVMRVRFRF9GVU5DVElPTjsKLQotICAgIHZpcnR1
YWwgYm9vbCBpc1dCUigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1faXNXQlI7IH0KLQotICAg
IHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9p
bnQmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGludCBjYXJldE1pbk9mZnNldCgpIGNvbnN0IE9W
RVJSSURFOwotICAgIHZpcnR1YWwgaW50IGNhcmV0TWF4T2Zmc2V0KCkgY29uc3QgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqLCBpbnQgY2Fy
ZXRPZmZzZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlKSBPVkVSUklE
RTsKLQotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBM
aW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3QgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5l
LCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3QgT1ZFUlJJREU7Ci0K
LSAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luVG9wKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gMDsgfQotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5Cb3R0b20oKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkxlZnQoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdp
blJpZ2h0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBtYXJnaW5CZWZvcmUoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiAwOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkFmdGVyKGNvbnN0IFJlbmRl
clN0eWxlKikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBtYXJnaW5TdGFydChjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIDA7IH0KLSAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luRW5kKGNvbnN0IFJlbmRlclN0
eWxlKikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgTGF5b3V0VW5p
dCBvZmZzZXRXaWR0aCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGxpbmVzQm91bmRpbmdCb3go
KS53aWR0aCgpOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldEhlaWdodCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIGxpbmVzQm91bmRpbmdCb3goKS5oZWlnaHQoKTsgfQotICAgIHZp
cnR1YWwgSW50UmVjdCBib3JkZXJCb3VuZGluZ0JveCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBmcmFtZVJlY3RGb3JTdGlja3lQb3NpdGlvbmluZygpIGNvbnN0IE9W
RVJSSURFIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KLSAg
ICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIExheW91dFJl
Y3QoKTsgfQotCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21TdHlsZSgpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
ZmFsc2U7IH0KLQotICAgIElubGluZUJveCogbV9pbmxpbmVCb3hXcmFwcGVyOwotICAgIG11dGFi
bGUgaW50IG1fY2FjaGVkTGluZUhlaWdodDsKLSAgICBib29sIG1faXNXQlI7Ci19OwotCi1pbmxp
bmUgUmVuZGVyQlImIHRvUmVuZGVyQlIoUmVuZGVyT2JqZWN0JiBvYmplY3QpCi17IAotICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG9iamVjdC5pc0xpbmVCcmVhaygpKTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyQlImPihvYmplY3QpOwotfQotCi1pbmxpbmUgY29u
c3QgUmVuZGVyQlImIHRvUmVuZGVyQlIoY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QpCi17Ci0g
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ob2JqZWN0LmlzTGluZUJyZWFrKCkp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJCUiY+KG9iamVjdCk7Ci19Ci0K
LWlubGluZSBSZW5kZXJCUiogdG9SZW5kZXJCUihSZW5kZXJPYmplY3QqIG9iamVjdCkKLXsgCi0g
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ob2JqZWN0LT5pc0xpbmVCcmVhaygp
KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyQlIqPihvYmplY3QpOwotfQotCi1pbmxp
bmUgY29uc3QgUmVuZGVyQlIqIHRvUmVuZGVyQlIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3Qp
Ci17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ob2JqZWN0LT5pc0xpbmVC
cmVhaygpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVyQlIqPihvYmplY3Qp
OwotfQotCi0vLyBUaGlzIHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNh
c3QuCi12b2lkIHRvUmVuZGVyQlIoY29uc3QgUmVuZGVyQlImKTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gUmVuZGVyQlJfaApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHJldmlzaW9uIDE1NjA0
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsMTIgQEAKICNpbmNsdWRlICJMaW5lTGF5b3V0
U3RhdGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIK
LSNpbmNsdWRlICJSZW5kZXJCUi5oIgogI2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0LmgiCiAj
aW5jbHVkZSAiUmVuZGVyQ291bnRlci5oIgogI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIK
ICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2lu
Y2x1ZGUgIlJlbmRlckxpbmVCcmVhay5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RNYXJrZXIuaCIK
ICNpbmNsdWRlICJSZW5kZXJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJSdWJ5UnVuLmgiCkBA
IC0yNzEsNyArMjcxLDcgQEAgc3RhdGljIGlubGluZSBJbmxpbmVCb3gqIGNyZWF0ZUlubGluZUJv
eAogICAgICAgICByZXR1cm4gdG9SZW5kZXJCb3gob2JqKS0+Y3JlYXRlSW5saW5lQm94KCk7CiAK
ICAgICBpZiAob2JqLT5pc0xpbmVCcmVhaygpKSB7Ci0gICAgICAgIElubGluZUJveCogaW5saW5l
Qm94ID0gdG9SZW5kZXJCUihvYmopLT5jcmVhdGVJbmxpbmVCb3goKTsKKyAgICAgICAgSW5saW5l
Qm94KiBpbmxpbmVCb3ggPSB0b1JlbmRlckxpbmVCcmVhayhvYmopLT5jcmVhdGVJbmxpbmVCb3go
KTsKICAgICAgICAgLy8gV2Ugb25seSB0cmVhdCBhIGJveCBhcyB0ZXh0IGZvciBhIDxicj4gaWYg
d2UgYXJlIG9uIGEgbGluZSBieSBvdXJzZWxmIG9yIGluIHN0cmljdCBtb2RlCiAgICAgICAgIC8v
IChOb3RlIHRoZSB1c2Ugb2Ygc3RyaWN0IG1vZGUuIEluICJhbG1vc3Qgc3RyaWN0IiBtb2RlLCB3
ZSBkb24ndCB0cmVhdCB0aGUgYm94IGZvciA8YnI+IGFzIHRleHQuKQogICAgICAgICBpbmxpbmVC
b3gtPnNldEJlaGF2ZXNMaWtlVGV4dChpc09ubHlSdW4gfHwgb2JqLT5kb2N1bWVudCgpLmluTm9R
dWlya3NNb2RlKCkgfHwgb2JqLT5pc0xpbmVCcmVha09wcG9ydHVuaXR5KCkpOwpAQCAtMjk3LDcg
KzI5Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkaXJ0eUxpbmVCb3hlc0ZvclJlbmQKICAgICAg
ICAgdXBkYXRlQ291bnRlcklmTmVlZGVkKHJlbmRlclRleHQpOwogICAgICAgICByZW5kZXJUZXh0
LT5kaXJ0eUxpbmVCb3hlcyhmdWxsTGF5b3V0KTsKICAgICB9IGVsc2UgaWYgKG8tPmlzTGluZUJy
ZWFrKCkpCi0gICAgICAgIHRvUmVuZGVyQlIobyktPmRpcnR5TGluZUJveGVzKGZ1bGxMYXlvdXQp
OworICAgICAgICB0b1JlbmRlckxpbmVCcmVhayhvKS0+ZGlydHlMaW5lQm94ZXMoZnVsbExheW91
dCk7CiAgICAgZWxzZQogICAgICAgICB0b1JlbmRlcklubGluZShvKS0+ZGlydHlMaW5lQm94ZXMo
ZnVsbExheW91dCk7CiB9CkBAIC05MjksNyArOTI5LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y29t
cHV0ZUJsb2NrRGlyZWN0aW9uUAogICAgICAgICBlbHNlIGlmIChyLT5tX29iamVjdC0+aXNCb3go
KSkKICAgICAgICAgICAgIHRvUmVuZGVyQm94KHItPm1fb2JqZWN0KS0+cG9zaXRpb25MaW5lQm94
KHItPm1fYm94KTsKICAgICAgICAgZWxzZSBpZiAoci0+bV9vYmplY3QtPmlzTGluZUJyZWFrKCkp
Ci0gICAgICAgICAgICB0b1JlbmRlckJSKHItPm1fb2JqZWN0KS0+cmVwbGFjZUlubGluZUJveFdy
YXBwZXIoci0+bV9ib3gpOworICAgICAgICAgICAgdG9SZW5kZXJMaW5lQnJlYWsoci0+bV9vYmpl
Y3QpLT5yZXBsYWNlSW5saW5lQm94V3JhcHBlcihyLT5tX2JveCk7CiAgICAgfQogICAgIC8vIFBv
c2l0aW9uZWQgb2JqZWN0cyBhbmQgemVyby1sZW5ndGggdGV4dCBub2RlcyBkZXN0cm95IHRoZWly
IGJveGVzIGluCiAgICAgLy8gcG9zaXRpb24oKSwgd2hpY2ggdW5uZWNlc3NhcmlseSBkaXJ0aWVz
IHRoZSBsaW5lLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAJKHJldmlzaW9uIDE1NjA0NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMiArMzAsMTIgQEAKICNpbmNsdWRlICJJ
bmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckFyZW5h
LmgiCi0jaW5jbHVkZSAiUmVuZGVyQlIuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2lu
Y2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJGdWxsU2NyZWVuLmgi
CiAjaW5jbHVkZSAiUmVuZGVyR2VvbWV0cnlNYXAuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5o
IgorI2luY2x1ZGUgIlJlbmRlckxpbmVCcmVhay5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgi
CiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5o
IgpAQCAtNjA3LDcgKzYwNyw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpnZW5lcmF0ZUN1bGxlZExp
bmVCb3gKICAgICAgICAgICAgICAgICAgICAgeWllbGQoRmxvYXRSZWN0KGxvZ2ljYWxUb3AsIGNo
aWxkVGV4dC0+eSgpLCBsb2dpY2FsSGVpZ2h0LCBjaGlsZFRleHQtPmxvZ2ljYWxXaWR0aCgpKSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoY3Vyci0+aXNMaW5lQnJlYWsoKSkg
ewotICAgICAgICAgICAgaWYgKElubGluZUJveCogaW5saW5lQm94ID0gdG9SZW5kZXJCUihjdXJy
KS0+aW5saW5lQm94V3JhcHBlcigpKSB7CisgICAgICAgICAgICBpZiAoSW5saW5lQm94KiBpbmxp
bmVCb3ggPSB0b1JlbmRlckxpbmVCcmVhayhjdXJyKS0+aW5saW5lQm94V3JhcHBlcigpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgdXNlIGEgaGVscGVyIHRvIHNoYXJl
IHRoZXNlIHdpdGggdGV4dCBwYXRoLgogICAgICAgICAgICAgICAgIGNvbnN0IFJvb3RJbmxpbmVC
b3gmIHJvb3RCb3ggPSBpbmxpbmVCb3gtPnJvb3QoKTsKICAgICAgICAgICAgICAgICBpbnQgbG9n
aWNhbFRvcCA9IHJvb3RCb3gubG9naWNhbFRvcCgpICsgKHJvb3RCb3gucmVuZGVyZXIoKS5zdHls
ZShyb290Qm94LmlzRmlyc3RMaW5lU3R5bGUoKSktPmZvbnQoKS5mb250TWV0cmljcygpLmFzY2Vu
dCgpIC0gY29udGFpbmVyLT5zdHlsZShyb290Qm94LmlzRmlyc3RMaW5lU3R5bGUoKSktPmZvbnQo
KS5mb250TWV0cmljcygpLmFzY2VudCgpKTsKQEAgLTkwOCw3ICs5MDgsNyBAQCBJbmxpbmVCb3gq
IFJlbmRlcklubGluZTo6Y3VsbGVkSW5saW5lRmlyCiAgICAgICAgIGlmIChjdXJyLT5pc0JveCgp
KQogICAgICAgICAgICAgcmV0dXJuIHRvUmVuZGVyQm94KGN1cnIpLT5pbmxpbmVCb3hXcmFwcGVy
KCk7CiAgICAgICAgIGlmIChjdXJyLT5pc0xpbmVCcmVhaygpKSB7Ci0gICAgICAgICAgICBSZW5k
ZXJCUiogcmVuZGVyQlIgPSB0b1JlbmRlckJSKGN1cnIpOworICAgICAgICAgICAgUmVuZGVyTGlu
ZUJyZWFrKiByZW5kZXJCUiA9IHRvUmVuZGVyTGluZUJyZWFrKGN1cnIpOwogICAgICAgICAgICAg
aWYgKHJlbmRlckJSLT5pbmxpbmVCb3hXcmFwcGVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlbmRlckJSLT5pbmxpbmVCb3hXcmFwcGVyKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoY3Vyci0+
aXNSZW5kZXJJbmxpbmUoKSkgewpAQCAtOTM2LDcgKzkzNiw3IEBAIElubGluZUJveCogUmVuZGVy
SW5saW5lOjpjdWxsZWRJbmxpbmVMYXMKICAgICAgICAgaWYgKGN1cnItPmlzQm94KCkpCiAgICAg
ICAgICAgICByZXR1cm4gdG9SZW5kZXJCb3goY3VyciktPmlubGluZUJveFdyYXBwZXIoKTsKICAg
ICAgICAgaWYgKGN1cnItPmlzTGluZUJyZWFrKCkpIHsKLSAgICAgICAgICAgIFJlbmRlckJSKiBy
ZW5kZXJCUiA9IHRvUmVuZGVyQlIoY3Vycik7CisgICAgICAgICAgICBSZW5kZXJMaW5lQnJlYWsq
IHJlbmRlckJSID0gdG9SZW5kZXJMaW5lQnJlYWsoY3Vycik7CiAgICAgICAgICAgICBpZiAocmVu
ZGVyQlItPmlubGluZUJveFdyYXBwZXIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVy
QlItPmlubGluZUJveFdyYXBwZXIoKTsKICAgICAgICAgfSBlbHNlIGlmIChjdXJyLT5pc1JlbmRl
cklubGluZSgpKSB7CkBAIC0xMzE1LDcgKzEzMTUsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6ZGly
dHlMaW5lQm94ZXMoYm9vbCBmCiAgICAgICAgICAgICAgICAgICAgIGZvciAoSW5saW5lVGV4dEJv
eCogY2hpbGRUZXh0ID0gY3VyclRleHQtPmZpcnN0VGV4dEJveCgpOyBjaGlsZFRleHQ7IGNoaWxk
VGV4dCA9IGNoaWxkVGV4dC0+bmV4dFRleHRCb3goKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGNoaWxkVGV4dC0+cm9vdCgpLm1hcmtEaXJ0eSgpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY3Vyci0+aXNMaW5lQnJlYWsoKSkgewotICAgICAgICAgICAgICAgICAgICBSZW5kZXJCUiog
Y3VyckJSID0gdG9SZW5kZXJCUihjdXJyKTsKKyAgICAgICAgICAgICAgICAgICAgUmVuZGVyTGlu
ZUJyZWFrKiBjdXJyQlIgPSB0b1JlbmRlckxpbmVCcmVhayhjdXJyKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGN1cnJCUi0+aW5saW5lQm94V3JhcHBlcigpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgY3VyckJSLT5pbmxpbmVCb3hXcmFwcGVyKCktPnJvb3QoKS5tYXJrRGlydHkoKTsKICAg
ICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlu
ZUJveExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaW5lQm94TGlzdC5jcHAJKHJldmlzaW9uIDE1NjA0NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMz
LDggQEAKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKLSNpbmNsdWRlICJSZW5kZXJCUi5oIgogI2luY2x1
ZGUgIlJlbmRlcklubGluZS5oIgorI2luY2x1ZGUgIlJlbmRlckxpbmVCcmVhay5oIgogI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCiAKQEAgLTM0Myw3
ICszNDMsNyBAQCB2b2lkIFJlbmRlckxpbmVCb3hMaXN0OjpkaXJ0eUxpbmVzRnJvbUNoCiAgICAg
ICAgICAgICBpZiAod3JhcHBlcikKICAgICAgICAgICAgICAgICBib3ggPSAmd3JhcHBlci0+cm9v
dCgpOwogICAgICAgICB9IGlmIChjdXJyLT5pc0xpbmVCcmVhaygpKSB7Ci0gICAgICAgICAgICBJ
bmxpbmVCb3gqIHdyYXBwZXIgPSB0b1JlbmRlckJSKGN1cnIpLT5pbmxpbmVCb3hXcmFwcGVyKCk7
CisgICAgICAgICAgICBJbmxpbmVCb3gqIHdyYXBwZXIgPSB0b1JlbmRlckxpbmVCcmVhayhjdXJy
KS0+aW5saW5lQm94V3JhcHBlcigpOwogICAgICAgICAgICAgaWYgKHdyYXBwZXIpCiAgICAgICAg
ICAgICAgICAgYm94ID0gJndyYXBwZXItPnJvb3QoKTsKICAgICAgICAgfSBlbHNlIGlmIChjdXJy
LT5pc1RleHQoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVC
cmVhay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
bmVCcmVhay5jcHAJKHJldmlzaW9uIDE1NjA0NSkJKGZyb20gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJSLmNwcDoxNTYwNDUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJyZWFrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5MCBAQAorLyoqCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqIENvcHly
aWdodCAoQykgMjAwNiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVuZGVyQlIuaCIKKworI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJCbG9j
ay5oIgorI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJWaXNpYmxlUG9zaXRp
b24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgaW50IGludmFsaWRM
aW5lSGVpZ2h0ID0gLTE7CisKK1JlbmRlckJSOjpSZW5kZXJCUihIVE1MRWxlbWVudCYgZWxlbWVu
dCkKKyAgICA6IFJlbmRlckJveE1vZGVsT2JqZWN0KCZlbGVtZW50KQorICAgICwgbV9pbmxpbmVC
b3hXcmFwcGVyKG51bGxwdHIpCisgICAgLCBtX2NhY2hlZExpbmVIZWlnaHQoaW52YWxpZExpbmVI
ZWlnaHQpCisgICAgLCBtX2lzV0JSKGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OndiclRh
ZykpCit7CisgICAgc2V0SXNMaW5lQnJlYWsoKTsKK30KKworUmVuZGVyQlI6On5SZW5kZXJCUigp
Cit7CisgICAgaWYgKG1faW5saW5lQm94V3JhcHBlcikKKyAgICAgICAgbV9pbmxpbmVCb3hXcmFw
cGVyLT5kZXN0cm95KHJlbmRlckFyZW5hKCkpOworfQorCitMYXlvdXRVbml0IFJlbmRlckJSOjps
aW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSAvKmRpcmVjdGlvbiov
LCBMaW5lUG9zaXRpb25Nb2RlIC8qbGluZVBvc2l0aW9uTW9kZSovKSBjb25zdAoreworICAgIGlm
IChmaXJzdExpbmUgJiYgZG9jdW1lbnQoKS5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT51c2VzRmly
c3RMaW5lUnVsZXMoKSkgeworICAgICAgICBSZW5kZXJTdHlsZSogcyA9IHN0eWxlKGZpcnN0TGlu
ZSk7CisgICAgICAgIGlmIChzICE9IHN0eWxlKCkpCisgICAgICAgICAgICByZXR1cm4gcy0+Y29t
cHV0ZWRMaW5lSGVpZ2h0KCZ2aWV3KCkpOworICAgIH0KKworICAgIGlmIChtX2NhY2hlZExpbmVI
ZWlnaHQgPT0gaW52YWxpZExpbmVIZWlnaHQpCisgICAgICAgIG1fY2FjaGVkTGluZUhlaWdodCA9
IHN0eWxlKCktPmNvbXB1dGVkTGluZUhlaWdodCgmdmlldygpKTsKKyAgICAKKyAgICByZXR1cm4g
bV9jYWNoZWRMaW5lSGVpZ2h0OworfQorCitpbnQgUmVuZGVyQlI6OmJhc2VsaW5lUG9zaXRpb24o
Rm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25N
b2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAor
eworICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKGZpcnN0TGluZSkt
PmZvbnRNZXRyaWNzKCk7CisgICAgcmV0dXJuIGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5
cGUpICsgKGxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUp
IC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMjsKK30KKworSW5saW5lQm94KiBSZW5kZXJCUjo6
Y3JlYXRlSW5saW5lQm94KCkKK3sKKyAgICByZXR1cm4gbmV3IChyZW5kZXJBcmVuYSgpKSBJbmxp
bmVCb3goKnRoaXMpOworfQorCit2b2lkIFJlbmRlckJSOjpzZXRJbmxpbmVCb3hXcmFwcGVyKElu
bGluZUJveCogaW5saW5lQm94KQoreworICAgIEFTU0VSVCghaW5saW5lQm94IHx8ICFtX2lubGlu
ZUJveFdyYXBwZXIpOworICAgIG1faW5saW5lQm94V3JhcHBlciA9IGlubGluZUJveDsKK30KKwor
dm9pZCBSZW5kZXJCUjo6cmVwbGFjZUlubGluZUJveFdyYXBwZXIoSW5saW5lQm94KiBpbmxpbmVC
b3gpCit7CisgICAgZGVsZXRlSW5saW5lQm94V3JhcHBlcigpOworICAgIHNldElubGluZUJveFdy
YXBwZXIoaW5saW5lQm94KTsKK30KKwordm9pZCBSZW5kZXJCUjo6ZGVsZXRlSW5saW5lQm94V3Jh
cHBlcigpCit7CisgICAgaWYgKCFtX2lubGluZUJveFdyYXBwZXIpCisgICAgICAgIHJldHVybjsK
KyAgICBpZiAoIWRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkKKyAgICAgICAgbV9pbmxpbmVCb3hX
cmFwcGVyLT5yZW1vdmUoKTsKKyAgICBtX2lubGluZUJveFdyYXBwZXItPmRlc3Ryb3kocmVuZGVy
QXJlbmEoKSk7CisgICAgbV9pbmxpbmVCb3hXcmFwcGVyID0gbnVsbHB0cjsKK30KKwordm9pZCBS
ZW5kZXJCUjo6ZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KQoreworICAgIGlmICghbV9p
bmxpbmVCb3hXcmFwcGVyKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGZ1bGxMYXlvdXQpIHsK
KyAgICAgICAgbV9pbmxpbmVCb3hXcmFwcGVyLT5kZXN0cm95KHJlbmRlckFyZW5hKCkpOworICAg
ICAgICBtX2lubGluZUJveFdyYXBwZXIgPSBudWxscHRyOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIG1faW5saW5lQm94V3JhcHBlci0+ZGlydHlMaW5lQm94ZXMoKTsKK30KKworaW50IFJl
bmRlckJSOjpjYXJldE1pbk9mZnNldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK2lu
dCBSZW5kZXJCUjo6Y2FyZXRNYXhPZmZzZXQoKSBjb25zdAoreyAKKyAgICByZXR1cm4gMTsKK30K
KworYm9vbCBSZW5kZXJCUjo6Y2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJSOjpwb3NpdGlvbkZvclBvaW50
KGNvbnN0IExheW91dFBvaW50JikKK3sKKyAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9u
KDAsIERPV05TVFJFQU0pOworfQorCit2b2lkIFJlbmRlckJSOjpzZXRTZWxlY3Rpb25TdGF0ZShT
ZWxlY3Rpb25TdGF0ZSBzdGF0ZSkKK3sKKyAgICBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2V0U2Vs
ZWN0aW9uU3RhdGUoc3RhdGUpOworICAgIGlmICghbV9pbmxpbmVCb3hXcmFwcGVyKQorICAgICAg
ICByZXR1cm47CisgICAgbV9pbmxpbmVCb3hXcmFwcGVyLT5yb290KCkuc2V0SGFzU2VsZWN0ZWRD
aGlsZHJlbihzdGF0ZSAhPSBTZWxlY3Rpb25Ob25lKTsKK30KKworTGF5b3V0UmVjdCBSZW5kZXJC
Ujo6bG9jYWxDYXJldFJlY3QoSW5saW5lQm94KiBpbmxpbmVCb3gsIGludCBjYXJldE9mZnNldCwg
TGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKQoreworICAgIEFTU0VSVF9VTlVTRUQo
Y2FyZXRPZmZzZXQsICFjYXJldE9mZnNldCk7CisgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVCb3gs
IGlubGluZUJveCA9PSBtX2lubGluZUJveFdyYXBwZXIpOworICAgIGlmICghaW5saW5lQm94KQor
ICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOworCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGNhcmV0V2lkdGggPSAxOworICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBpbmxp
bmVCb3gtPnJvb3QoKTsKKyAgICByZXR1cm4gcm9vdEJveC5jb21wdXRlQ2FyZXRSZWN0KGlubGlu
ZUJveC0+bG9naWNhbExlZnQoKSwgY2FyZXRXaWR0aCwgZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKTsK
K30KKworSW50UmVjdCBSZW5kZXJCUjo6bGluZXNCb3VuZGluZ0JveCgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX2lubGluZUJveFdyYXBwZXIpCisgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisKKyAg
ICBmbG9hdCBsb2dpY2FsTGVmdFNpZGUgPSBtX2lubGluZUJveFdyYXBwZXItPmxvZ2ljYWxMZWZ0
KCk7CisgICAgZmxvYXQgbG9naWNhbFJpZ2h0U2lkZSA9IG1faW5saW5lQm94V3JhcHBlci0+bG9n
aWNhbFJpZ2h0KCk7CisKKyAgICBib29sIGlzSG9yaXpvbnRhbCA9IHN0eWxlKCktPmlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCk7CisKKyAgICBmbG9hdCB4ID0gaXNIb3Jpem9udGFsID8gbG9naWNh
bExlZnRTaWRlIDogbV9pbmxpbmVCb3hXcmFwcGVyLT54KCk7CisgICAgZmxvYXQgeSA9IGlzSG9y
aXpvbnRhbCA/IG1faW5saW5lQm94V3JhcHBlci0+eSgpIDogbG9naWNhbExlZnRTaWRlOworICAg
IGZsb2F0IHdpZHRoID0gaXNIb3Jpem9udGFsID8gbG9naWNhbFJpZ2h0U2lkZSAtIGxvZ2ljYWxM
ZWZ0U2lkZSA6IG1faW5saW5lQm94V3JhcHBlci0+bG9naWNhbEJvdHRvbSgpIC0geDsKKyAgICBm
bG9hdCBoZWlnaHQgPSBpc0hvcml6b250YWwgPyBtX2lubGluZUJveFdyYXBwZXItPmxvZ2ljYWxC
b3R0b20oKSAtIHkgOiBsb2dpY2FsUmlnaHRTaWRlIC0gbG9naWNhbExlZnRTaWRlOworICAgIHJl
dHVybiBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7Cit9
CisKK3ZvaWQgUmVuZGVyQlI6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAoreworICAgIGlmICgh
bV9pbmxpbmVCb3hXcmFwcGVyKQorICAgICAgICByZXR1cm47CisgICAgcmVjdHMuYXBwZW5kKGVu
Y2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0ICsgbV9pbmxpbmVCb3hX
cmFwcGVyLT50b3BMZWZ0KCksIG1faW5saW5lQm94V3JhcHBlci0+c2l6ZSgpKSkpOworfQorCit2
b2lkIFJlbmRlckJSOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9v
bCogd2FzRml4ZWQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lubGluZUJveFdyYXBwZXIpCisgICAg
ICAgIHJldHVybjsKKyAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJl
Y3QobV9pbmxpbmVCb3hXcmFwcGVyLT50b3BMZWZ0KCksIG1faW5saW5lQm94V3JhcHBlci0+c2l6
ZSgpKSwgMCAvKiBtb2RlICovLCB3YXNGaXhlZCkpOworfQorCit2b2lkIFJlbmRlckJSOjp1cGRh
dGVGcm9tU3R5bGUoKQoreworICAgIG1fY2FjaGVkTGluZUhlaWdodCA9IGludmFsaWRMaW5lSGVp
Z2h0OworfQorCitJbnRSZWN0IFJlbmRlckJSOjpib3JkZXJCb3VuZGluZ0JveCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQoKSwgbGluZXNCb3VuZGluZ0JveCgpLnNpemUo
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjAsNyArMjAsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZW5k
ZXJCUi5oIgorI2luY2x1ZGUgIlJlbmRlckxpbmVCcmVhay5oIgogCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBpbnQgaW52YWxpZExpbmVIZWlnaHQgPSAtMTsK
IAotUmVuZGVyQlI6OlJlbmRlckJSKEhUTUxFbGVtZW50JiBlbGVtZW50KQorUmVuZGVyTGluZUJy
ZWFrOjpSZW5kZXJMaW5lQnJlYWsoSFRNTEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgOiBSZW5kZXJC
b3hNb2RlbE9iamVjdCgmZWxlbWVudCkKICAgICAsIG1faW5saW5lQm94V3JhcHBlcihudWxscHRy
KQogICAgICwgbV9jYWNoZWRMaW5lSGVpZ2h0KGludmFsaWRMaW5lSGVpZ2h0KQpAQCAtNDEsMTMg
KzQxLDEzIEBAIFJlbmRlckJSOjpSZW5kZXJCUihIVE1MRWxlbWVudCYgZWxlbWVudCkKICAgICBz
ZXRJc0xpbmVCcmVhaygpOwogfQogCi1SZW5kZXJCUjo6flJlbmRlckJSKCkKK1JlbmRlckxpbmVC
cmVhazo6flJlbmRlckxpbmVCcmVhaygpCiB7CiAgICAgaWYgKG1faW5saW5lQm94V3JhcHBlcikK
ICAgICAgICAgbV9pbmxpbmVCb3hXcmFwcGVyLT5kZXN0cm95KHJlbmRlckFyZW5hKCkpOwogfQog
Ci1MYXlvdXRVbml0IFJlbmRlckJSOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSAvKmRpcmVjdGlvbiovLCBMaW5lUG9zaXRpb25Nb2RlIC8qbGluZVBvc2l0aW9u
TW9kZSovKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVIZWlnaHQoYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIC8qZGlyZWN0aW9uKi8sIExpbmVQb3NpdGlv
bk1vZGUgLypsaW5lUG9zaXRpb25Nb2RlKi8pIGNvbnN0CiB7CiAgICAgaWYgKGZpcnN0TGluZSAm
JiBkb2N1bWVudCgpLnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPnVzZXNGaXJzdExpbmVSdWxlcygp
KSB7CiAgICAgICAgIFJlbmRlclN0eWxlKiBzID0gc3R5bGUoZmlyc3RMaW5lKTsKQEAgLTYxLDMw
ICs2MSwzMCBAQCBMYXlvdXRVbml0IFJlbmRlckJSOjpsaW5lSGVpZ2h0KGJvb2wgZmlyCiAgICAg
cmV0dXJuIG1fY2FjaGVkTGluZUhlaWdodDsKIH0KIAotaW50IFJlbmRlckJSOjpiYXNlbGluZVBv
c2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkg
Y29uc3QKK2ludCBSZW5kZXJMaW5lQnJlYWs6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5l
IGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlv
biwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIGNvbnN0
IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlKGZpcnN0TGluZSktPmZvbnRNZXRyaWNz
KCk7CiAgICAgcmV0dXJuIGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5cGUpICsgKGxpbmVI
ZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpIC0gZm9udE1ldHJp
Y3MuaGVpZ2h0KCkpIC8gMjsKIH0KIAotSW5saW5lQm94KiBSZW5kZXJCUjo6Y3JlYXRlSW5saW5l
Qm94KCkKK0lubGluZUJveCogUmVuZGVyTGluZUJyZWFrOjpjcmVhdGVJbmxpbmVCb3goKQogewog
ICAgIHJldHVybiBuZXcgKHJlbmRlckFyZW5hKCkpIElubGluZUJveCgqdGhpcyk7CiB9CiAKLXZv
aWQgUmVuZGVyQlI6OnNldElubGluZUJveFdyYXBwZXIoSW5saW5lQm94KiBpbmxpbmVCb3gpCit2
b2lkIFJlbmRlckxpbmVCcmVhazo6c2V0SW5saW5lQm94V3JhcHBlcihJbmxpbmVCb3gqIGlubGlu
ZUJveCkKIHsKICAgICBBU1NFUlQoIWlubGluZUJveCB8fCAhbV9pbmxpbmVCb3hXcmFwcGVyKTsK
ICAgICBtX2lubGluZUJveFdyYXBwZXIgPSBpbmxpbmVCb3g7CiB9CiAKLXZvaWQgUmVuZGVyQlI6
OnJlcGxhY2VJbmxpbmVCb3hXcmFwcGVyKElubGluZUJveCogaW5saW5lQm94KQordm9pZCBSZW5k
ZXJMaW5lQnJlYWs6OnJlcGxhY2VJbmxpbmVCb3hXcmFwcGVyKElubGluZUJveCogaW5saW5lQm94
KQogewogICAgIGRlbGV0ZUlubGluZUJveFdyYXBwZXIoKTsKICAgICBzZXRJbmxpbmVCb3hXcmFw
cGVyKGlubGluZUJveCk7CiB9CiAKLXZvaWQgUmVuZGVyQlI6OmRlbGV0ZUlubGluZUJveFdyYXBw
ZXIoKQordm9pZCBSZW5kZXJMaW5lQnJlYWs6OmRlbGV0ZUlubGluZUJveFdyYXBwZXIoKQogewog
ICAgIGlmICghbV9pbmxpbmVCb3hXcmFwcGVyKQogICAgICAgICByZXR1cm47CkBAIC05NCw3ICs5
NCw3IEBAIHZvaWQgUmVuZGVyQlI6OmRlbGV0ZUlubGluZUJveFdyYXBwZXIoKQogICAgIG1faW5s
aW5lQm94V3JhcHBlciA9IG51bGxwdHI7CiB9CiAKLXZvaWQgUmVuZGVyQlI6OmRpcnR5TGluZUJv
eGVzKGJvb2wgZnVsbExheW91dCkKK3ZvaWQgUmVuZGVyTGluZUJyZWFrOjpkaXJ0eUxpbmVCb3hl
cyhib29sIGZ1bGxMYXlvdXQpCiB7CiAgICAgaWYgKCFtX2lubGluZUJveFdyYXBwZXIpCiAgICAg
ICAgIHJldHVybjsKQEAgLTEwNiwyNyArMTA2LDI3IEBAIHZvaWQgUmVuZGVyQlI6OmRpcnR5TGlu
ZUJveGVzKGJvb2wgZnVsbEwKICAgICBtX2lubGluZUJveFdyYXBwZXItPmRpcnR5TGluZUJveGVz
KCk7CiB9CiAKLWludCBSZW5kZXJCUjo6Y2FyZXRNaW5PZmZzZXQoKSBjb25zdAoraW50IFJlbmRl
ckxpbmVCcmVhazo6Y2FyZXRNaW5PZmZzZXQoKSBjb25zdAogewogICAgIHJldHVybiAwOwogfQog
Ci1pbnQgUmVuZGVyQlI6OmNhcmV0TWF4T2Zmc2V0KCkgY29uc3QKK2ludCBSZW5kZXJMaW5lQnJl
YWs6OmNhcmV0TWF4T2Zmc2V0KCkgY29uc3QKIHsgCiAgICAgcmV0dXJuIDE7CiB9CiAKLWJvb2wg
UmVuZGVyQlI6OmNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0Citib29sIFJlbmRlckxpbmVCcmVh
azo6Y2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
VmlzaWJsZVBvc2l0aW9uIFJlbmRlckJSOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBv
aW50JikKK1Zpc2libGVQb3NpdGlvbiBSZW5kZXJMaW5lQnJlYWs6OnBvc2l0aW9uRm9yUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmKQogewogICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24o
MCwgRE9XTlNUUkVBTSk7CiB9CiAKLXZvaWQgUmVuZGVyQlI6OnNldFNlbGVjdGlvblN0YXRlKFNl
bGVjdGlvblN0YXRlIHN0YXRlKQordm9pZCBSZW5kZXJMaW5lQnJlYWs6OnNldFNlbGVjdGlvblN0
YXRlKFNlbGVjdGlvblN0YXRlIHN0YXRlKQogewogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpz
ZXRTZWxlY3Rpb25TdGF0ZShzdGF0ZSk7CiAgICAgaWYgKCFtX2lubGluZUJveFdyYXBwZXIpCkBA
IC0xMzQsNyArMTM0LDcgQEAgdm9pZCBSZW5kZXJCUjo6c2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0
aQogICAgIG1faW5saW5lQm94V3JhcHBlci0+cm9vdCgpLnNldEhhc1NlbGVjdGVkQ2hpbGRyZW4o
c3RhdGUgIT0gU2VsZWN0aW9uTm9uZSk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyQlI6OmxvY2Fs
Q2FyZXRSZWN0KElubGluZUJveCogaW5saW5lQm94LCBpbnQgY2FyZXRPZmZzZXQsIExheW91dFVu
aXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkKK0xheW91dFJlY3QgUmVuZGVyTGluZUJyZWFrOjps
b2NhbENhcmV0UmVjdChJbmxpbmVCb3gqIGlubGluZUJveCwgaW50IGNhcmV0T2Zmc2V0LCBMYXlv
dXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjYXJl
dE9mZnNldCwgIWNhcmV0T2Zmc2V0KTsKICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUJveCwgaW5s
aW5lQm94ID09IG1faW5saW5lQm94V3JhcHBlcik7CkBAIC0xNDYsNyArMTQ2LDcgQEAgTGF5b3V0
UmVjdCBSZW5kZXJCUjo6bG9jYWxDYXJldFJlY3QoSW5saQogICAgIHJldHVybiByb290Qm94LmNv
bXB1dGVDYXJldFJlY3QoaW5saW5lQm94LT5sb2dpY2FsTGVmdCgpLCBjYXJldFdpZHRoLCBleHRy
YVdpZHRoVG9FbmRPZkxpbmUpOwogfQogCi1JbnRSZWN0IFJlbmRlckJSOjpsaW5lc0JvdW5kaW5n
Qm94KCkgY29uc3QKK0ludFJlY3QgUmVuZGVyTGluZUJyZWFrOjpsaW5lc0JvdW5kaW5nQm94KCkg
Y29uc3QKIHsKICAgICBpZiAoIW1faW5saW5lQm94V3JhcHBlcikKICAgICAgICAgcmV0dXJuIElu
dFJlY3QoKTsKQEAgLTE2MywyNiArMTYzLDI2IEBAIEludFJlY3QgUmVuZGVyQlI6OmxpbmVzQm91
bmRpbmdCb3goKSBjb24KICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoeCwg
eSwgd2lkdGgsIGhlaWdodCkpOwogfQogCi12b2lkIFJlbmRlckJSOjphYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNl
dCkgY29uc3QKK3ZvaWQgUmVuZGVyTGluZUJyZWFrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRS
ZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QK
IHsKICAgICBpZiAoIW1faW5saW5lQm94V3JhcHBlcikKICAgICAgICAgcmV0dXJuOwogICAgIHJl
Y3RzLmFwcGVuZChlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdChhY2N1bXVsYXRlZE9mZnNldCAr
IG1faW5saW5lQm94V3JhcHBlci0+dG9wTGVmdCgpLCBtX2lubGluZUJveFdyYXBwZXItPnNpemUo
KSkpKTsKIH0KIAotdm9pZCBSZW5kZXJCUjo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJMaW5lQnJlYWs6OmFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29u
c3QKIHsKICAgICBpZiAoIW1faW5saW5lQm94V3JhcHBlcikKICAgICAgICAgcmV0dXJuOwogICAg
IHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChtX2lubGluZUJveFdy
YXBwZXItPnRvcExlZnQoKSwgbV9pbmxpbmVCb3hXcmFwcGVyLT5zaXplKCkpLCAwIC8qIG1vZGUg
Ki8sIHdhc0ZpeGVkKSk7CiB9CiAKLXZvaWQgUmVuZGVyQlI6OnVwZGF0ZUZyb21TdHlsZSgpCit2
b2lkIFJlbmRlckxpbmVCcmVhazo6dXBkYXRlRnJvbVN0eWxlKCkKIHsKICAgICBtX2NhY2hlZExp
bmVIZWlnaHQgPSBpbnZhbGlkTGluZUhlaWdodDsKIH0KIAotSW50UmVjdCBSZW5kZXJCUjo6Ym9y
ZGVyQm91bmRpbmdCb3goKSBjb25zdAorSW50UmVjdCBSZW5kZXJMaW5lQnJlYWs6OmJvcmRlckJv
dW5kaW5nQm94KCkgY29uc3QKIHsKICAgICByZXR1cm4gSW50UmVjdChJbnRQb2ludCgpLCBsaW5l
c0JvdW5kaW5nQm94KCkuc2l6ZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaW5lQnJlYWsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGluZUJyZWFrLmgJKHJldmlzaW9uIDE1NjA0NSkJKGZyb20gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJSLmg6MTU2MDQ1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpbmVCcmVhay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lm
bmRlZiBSZW5kZXJCUl9oCisjZGVmaW5lIFJlbmRlckJSX2gKKworI2luY2x1ZGUgIlJlbmRlckJv
eE1vZGVsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFRNTEVsZW1l
bnQ7CitjbGFzcyBQb3NpdGlvbjsKKworLy8gRklYTUU6IFJlbmFtZSB0aGlzIHRvIFJlbmRlckxp
bmVCcmVhay4KK2NsYXNzIFJlbmRlckJSIEZJTkFMIDogcHVibGljIFJlbmRlckJveE1vZGVsT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBSZW5kZXJCUihIVE1MRWxlbWVudCYpOworICAg
IHZpcnR1YWwgflJlbmRlckJSKCk7CisKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCB7IHJldHVybiBtX2lzV0JSID8gIlJlbmRlcldvcmRCcmVhayIgOiAiUmVuZGVy
QlIiOyB9CisKKyAgICBJbmxpbmVCb3gqIGNyZWF0ZUlubGluZUJveCgpOworICAgIElubGluZUJv
eCogaW5saW5lQm94V3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQm94V3JhcHBlcjsg
fQorICAgIHZvaWQgc2V0SW5saW5lQm94V3JhcHBlcihJbmxpbmVCb3gqKTsKKyAgICB2b2lkIGRl
bGV0ZUlubGluZUJveFdyYXBwZXIoKTsKKyAgICB2b2lkIHJlcGxhY2VJbmxpbmVCb3hXcmFwcGVy
KElubGluZUJveCopOworICAgIHZvaWQgZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KTsK
KworICAgIEludFJlY3QgbGluZXNCb3VuZGluZ0JveCgpIGNvbnN0OworCisgICAgdmlydHVhbCB2
b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBPVkVSUklE
RTsKKworcHJpdmF0ZToKKyAgICB2b2lkIG5vZGUoKSBjb25zdCBXVEZfREVMRVRFRF9GVU5DVElP
TjsKKworICAgIHZpcnR1YWwgYm9vbCBpc1dCUigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1f
aXNXQlI7IH0KKworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCBjYXJldE1pbk9m
ZnNldCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IGNhcmV0TWF4T2Zmc2V0KCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJbmxp
bmVCb3gqLCBpbnQgY2FyZXRPZmZzZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGlu
ZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlv
blN0YXRlKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJv
b2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUs
IGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29u
c3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luVG9wKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5Cb3R0
b20oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBMYXlvdXRVbml0
IG1hcmdpbkxlZnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBM
YXlvdXRVbml0IG1hcmdpblJpZ2h0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorICAg
IHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkFm
dGVyKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorICAg
IHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5TdGFydChjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luRW5k
KGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorICAgIHZp
cnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRXaWR0aCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGxp
bmVzQm91bmRpbmdCb3goKS53aWR0aCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNl
dEhlaWdodCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGxpbmVzQm91bmRpbmdCb3goKS5oZWln
aHQoKTsgfQorICAgIHZpcnR1YWwgSW50UmVjdCBib3JkZXJCb3VuZGluZ0JveCgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBmcmFtZVJlY3RGb3JTdGlja3lQb3NpdGlv
bmluZygpIGNvbnN0IE9WRVJSSURFIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBMYXlv
dXRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIExheW91dFJlY3QoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21TdHls
ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIElubGluZUJveCogbV9pbmxpbmVCb3hXcmFw
cGVyOworICAgIG11dGFibGUgaW50IG1fY2FjaGVkTGluZUhlaWdodDsKKyAgICBib29sIG1faXNX
QlI7Cit9OworCitpbmxpbmUgUmVuZGVyQlImIHRvUmVuZGVyQlIoUmVuZGVyT2JqZWN0JiBvYmpl
Y3QpCit7IAorICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG9iamVjdC5pc0xp
bmVCcmVhaygpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyQlImPihvYmplY3QpOwor
fQorCitpbmxpbmUgY29uc3QgUmVuZGVyQlImIHRvUmVuZGVyQlIoY29uc3QgUmVuZGVyT2JqZWN0
JiBvYmplY3QpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ob2JqZWN0
LmlzTGluZUJyZWFrKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJCUiY+
KG9iamVjdCk7Cit9CisKK2lubGluZSBSZW5kZXJCUiogdG9SZW5kZXJCUihSZW5kZXJPYmplY3Qq
IG9iamVjdCkKK3sgCisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ob2JqZWN0
LT5pc0xpbmVCcmVhaygpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyQlIqPihvYmpl
Y3QpOworfQorCitpbmxpbmUgY29uc3QgUmVuZGVyQlIqIHRvUmVuZGVyQlIoY29uc3QgUmVuZGVy
T2JqZWN0KiBvYmplY3QpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
b2JqZWN0LT5pc0xpbmVCcmVhaygpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVu
ZGVyQlIqPihvYmplY3QpOworfQorCisvLyBUaGlzIHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFu
IHVubmVjZXNzYXJ5IGNhc3QuCit2b2lkIHRvUmVuZGVyQlIoY29uc3QgUmVuZGVyQlImKTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVuZGVyQlJfaApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaAkod29ya2luZyBjb3B5KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xOSw4ICsxOSw4IEBACiAgKgogICovCiAKLSNpZm5kZWYgUmVuZGVyQlJfaAotI2Rl
ZmluZSBSZW5kZXJCUl9oCisjaWZuZGVmIFJlbmRlckxpbmVCcmVha19oCisjZGVmaW5lIFJlbmRl
ckxpbmVCcmVha19oCiAKICNpbmNsdWRlICJSZW5kZXJCb3hNb2RlbE9iamVjdC5oIgogCkBAIC0y
OSwxMiArMjksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSFRNTEVsZW1lbnQ7CiBj
bGFzcyBQb3NpdGlvbjsKIAotLy8gRklYTUU6IFJlbmFtZSB0aGlzIHRvIFJlbmRlckxpbmVCcmVh
ay4KLWNsYXNzIFJlbmRlckJSIEZJTkFMIDogcHVibGljIFJlbmRlckJveE1vZGVsT2JqZWN0IHsK
K2NsYXNzIFJlbmRlckxpbmVCcmVhayBGSU5BTCA6IHB1YmxpYyBSZW5kZXJCb3hNb2RlbE9iamVj
dCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUmVuZGVyQlIoSFRNTEVsZW1lbnQmKTsKLSAgICB2
aXJ0dWFsIH5SZW5kZXJCUigpOworICAgIGV4cGxpY2l0IFJlbmRlckxpbmVCcmVhayhIVE1MRWxl
bWVudCYpOworICAgIHZpcnR1YWwgflJlbmRlckxpbmVCcmVhaygpOwogCisgICAgLy8gRklYTUU6
IFRoZSBsaWVzIGhlcmUga2VlcCByZW5kZXIgdHJlZSBkdW1wIGJhc2VkIHRlc3QgcmVzdWx0cyB1
bmNoYW5nZWQuCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1dCUiA/ICJSZW5kZXJXb3JkQnJlYWsiIDogIlJlbmRlckJSIjsgfQogCiAgICAg
SW5saW5lQm94KiBjcmVhdGVJbmxpbmVCb3goKTsKQEAgLTg2LDMzICs4NiwzMyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9pc1dCUjsKIH07CiAKLWlubGluZSBSZW5kZXJCUiYgdG9SZW5kZXJCUihS
ZW5kZXJPYmplY3QmIG9iamVjdCkKK2lubGluZSBSZW5kZXJMaW5lQnJlYWsmIHRvUmVuZGVyTGlu
ZUJyZWFrKFJlbmRlck9iamVjdCYgb2JqZWN0KQogeyAKICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihvYmplY3QuaXNMaW5lQnJlYWsoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PFJlbmRlckJSJj4ob2JqZWN0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyTGlu
ZUJyZWFrJj4ob2JqZWN0KTsKIH0KIAotaW5saW5lIGNvbnN0IFJlbmRlckJSJiB0b1JlbmRlckJS
KGNvbnN0IFJlbmRlck9iamVjdCYgb2JqZWN0KQoraW5saW5lIGNvbnN0IFJlbmRlckxpbmVCcmVh
ayYgdG9SZW5kZXJMaW5lQnJlYWsoY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QpCiB7CiAgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ob2JqZWN0LmlzTGluZUJyZWFrKCkpOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJCUiY+KG9iamVjdCk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlbmRlckxpbmVCcmVhayY+KG9iamVjdCk7CiB9CiAKLWlu
bGluZSBSZW5kZXJCUiogdG9SZW5kZXJCUihSZW5kZXJPYmplY3QqIG9iamVjdCkKK2lubGluZSBS
ZW5kZXJMaW5lQnJlYWsqIHRvUmVuZGVyTGluZUJyZWFrKFJlbmRlck9iamVjdCogb2JqZWN0KQog
eyAKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihvYmplY3QtPmlzTGluZUJy
ZWFrKCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJCUio+KG9iamVjdCk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlckxpbmVCcmVhayo+KG9iamVjdCk7CiB9CiAKLWlubGlu
ZSBjb25zdCBSZW5kZXJCUiogdG9SZW5kZXJCUihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkK
K2lubGluZSBjb25zdCBSZW5kZXJMaW5lQnJlYWsqIHRvUmVuZGVyTGluZUJyZWFrKGNvbnN0IFJl
bmRlck9iamVjdCogb2JqZWN0KQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKG9iamVjdC0+aXNMaW5lQnJlYWsoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IFJlbmRlckJSKj4ob2JqZWN0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVy
TGluZUJyZWFrKj4ob2JqZWN0KTsKIH0KIAogLy8gVGhpcyB3aWxsIGNhdGNoIGFueW9uZSBkb2lu
ZyBhbiB1bm5lY2Vzc2FyeSBjYXN0Lgotdm9pZCB0b1JlbmRlckJSKGNvbnN0IFJlbmRlckJSJik7
Cit2b2lkIHRvUmVuZGVyTGluZUJyZWFrKGNvbnN0IFJlbmRlckxpbmVCcmVhayYpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBSZW5kZXJCUl9oCisjZW5kaWYgLy8gUmVu
ZGVyTGluZUJyZWFrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3RDaGlsZExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCShyZXZpc2lvbiAxNTYwNDUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsOCArMjgsOCBAQAogI2luY2x1ZGUgIlJlbmRlck9iamVjdENoaWxkTGlzdC5oIgogCiAj
aW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgIlJlbmRlckJSLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyQ291bnRlci5oIgorI2luY2x1ZGUgIlJlbmRlckxpbmVCcmVhay5oIgogI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVmlldy5oIgpAQCAtNzcsNyArNzcsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVj
dENoaWxkTGlzdDo6cmVtCiAgICAgaWYgKG9sZENoaWxkLT5pc0JveCgpKQogICAgICAgICB0b1Jl
bmRlckJveChvbGRDaGlsZCktPmRlbGV0ZUxpbmVCb3hXcmFwcGVyKCk7CiAgICAgZWxzZSBpZiAo
b2xkQ2hpbGQtPmlzTGluZUJyZWFrKCkpCi0gICAgICAgIHRvUmVuZGVyQlIob2xkQ2hpbGQpLT5k
ZWxldGVJbmxpbmVCb3hXcmFwcGVyKCk7CisgICAgICAgIHRvUmVuZGVyTGluZUJyZWFrKG9sZENo
aWxkKS0+ZGVsZXRlSW5saW5lQm94V3JhcHBlcigpOwogCiAgICAgLy8gSWYgb2xkQ2hpbGQgaXMg
dGhlIHN0YXJ0IG9yIGVuZCBvZiB0aGUgc2VsZWN0aW9uLCB0aGVuIGNsZWFyIHRoZSBzZWxlY3Rp
b24gdG8KICAgICAvLyBhdm9pZCBwcm9ibGVtcyBvZiBpbnZhbGlkIHBvaW50ZXJzLgpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAkocmV2aXNp
b24gMTU2MDQ1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMSArMzYsMTEgQEAKICNpbmNsdWRlICJJbmxpbmVU
ZXh0Qm94LmgiCiAjaW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCiAjaW5jbHVkZSAiUHNldWRvRWxl
bWVudC5oIgotI2luY2x1ZGUgIlJlbmRlckJSLmgiCiAjaW5jbHVkZSAiUmVuZGVyRGV0YWlsc01h
cmtlci5oIgogI2luY2x1ZGUgIlJlbmRlckZpbGVVcGxvYWRDb250cm9sLmgiCiAjaW5jbHVkZSAi
UmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5k
ZXJMaW5lQnJlYWsuaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0SXRlbS5oIgogI2luY2x1ZGUgIlJl
bmRlckxpc3RNYXJrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKQEAg
LTI1Miw3ICsyNTIsNyBAQCB2b2lkIFJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0
CiAgICAgICAgIGlmIChhZGp1c3RGb3JUYWJsZUNlbGxzICYmICF0ZXh0LmZpcnN0VGV4dEJveCgp
KQogICAgICAgICAgICAgYWRqdXN0Rm9yVGFibGVDZWxscyA9IGZhbHNlOwogICAgIH0gZWxzZSBp
ZiAoby5pc0JSKCkpIHsKLSAgICAgICAgY29uc3QgUmVuZGVyQlImIGJyID0gdG9SZW5kZXJCUihv
KTsKKyAgICAgICAgY29uc3QgUmVuZGVyTGluZUJyZWFrJiBiciA9IHRvUmVuZGVyTGluZUJyZWFr
KG8pOwogICAgICAgICBJbnRSZWN0IGxpbmVzQm94ID0gYnIubGluZXNCb3VuZGluZ0JveCgpOwog
ICAgICAgICByID0gSW50UmVjdChsaW5lc0JveC54KCksIGxpbmVzQm94LnkoKSwgbGluZXNCb3gu
d2lkdGgoKSwgbGluZXNCb3guaGVpZ2h0KCkpOwogICAgICAgICBpZiAoIWJyLmlubGluZUJveFdy
YXBwZXIoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9u
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0Fs
bEluT25lLmNwcAkocmV2aXNpb24gMTU2MDQ1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcmluZ0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQAog
I2luY2x1ZGUgIkxheW91dFN0YXRlLmNwcCIKICNpbmNsdWRlICJQb2ludGVyRXZlbnRzSGl0UnVs
ZXMuY3BwIgogI2luY2x1ZGUgIlJlbmRlckFyZW5hLmNwcCIKLSNpbmNsdWRlICJSZW5kZXJCUi5j
cHAiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suY3BwIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxv
dy5jcHAiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCIKQEAgLTcwLDYgKzY5
LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIgogI2luY2x1ZGUgIlJl
bmRlckxheWVyTW9kZWxPYmplY3QuY3BwIgogI2luY2x1ZGUgIlJlbmRlckxpbmVCb3hMaXN0LmNw
cCIKKyNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsuY3BwIgogI2luY2x1ZGUgIlJlbmRlckxpc3RC
b3guY3BwIgogI2luY2x1ZGUgIlJlbmRlckxpc3RJdGVtLmNwcCIKICNpbmNsdWRlICJSZW5kZXJM
aXN0TWFya2VyLmNwcCIK
</data>
<flag name="review"
          id="234154"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>