<?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>7867</bug_id>
          
          <creation_ts>2006-03-19 22:24:55 -0800</creation_ts>
          <short_desc>get rid of macro hacks for DOM, KDOM, KSVG, khtml, DOMString, QString</short_desc>
          <delta_ts>2006-03-20 17:16:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>36971</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-19 22:24:55 -0800</bug_when>
    <thetext>Now that I did the global rename, it&apos;s time to remove the config.h hacks for the namespaces and classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36972</commentid>
    <comment_count>1</comment_count>
      <attachid>7184</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-19 22:36:54 -0800</bug_when>
    <thetext>Created attachment 7184
patch with detailed change log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37029</commentid>
    <comment_count>2</comment_count>
      <attachid>7184</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-03-20 10:10:01 -0800</bug_when>
    <thetext>Comment on attachment 7184
patch with detailed change log

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7184</attachid>
            <date>2006-03-19 22:36:54 -0800</date>
            <delta_ts>2006-03-20 10:10:01 -0800</delta_ts>
            <desc>patch with detailed change log</desc>
            <filename>ConfigMacroPatch.txt</filename>
            <type>text/plain</type>
            <size>128584</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2VjbWEva2pzX2Nzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9r
anNfY3NzLmNwcAkocmV2aXNpb24gMTMzOTMpCisrKyBraHRtbC9lY21hL2tqc19jc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAKIHN0YXRpYyBTdHJpbmcgY3NzUHJvcGVy
dHlOYW1lKGNvbnN0IElkZW50aWZpZXIgJnAsIGJvb2wgKmhhZFBpeGVsT3JQb3NQcmVmaXggPSAw
KQogewotICAgIERlcHJlY2F0ZWRTdHJpbmcgcHJvcCA9IHAuZGVwcmVjYXRlZFN0cmluZygpOwor
ICAgIERlcHJlY2F0ZWRTdHJpbmcgcHJvcCA9IHA7CiAKICAgICBpbnQgaSA9IHByb3AubGVuZ3Ro
KCk7CiAgICAgd2hpbGUgKC0taSkgewpAQCAtMTgyLDE3ICsxODIsMTcgQEAKIHZvaWQgRE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbjo6cHV0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAm
cHJvcGVydHlOYW1lLCBKU1ZhbHVlICp2YWx1ZSwgaW50IGF0dHIgKQogewogI2lmZGVmIEtKU19W
RVJCT1NFCi0gIGtkRGVidWcoNjA3MCkgPDwgIkRPTUNTU1N0eWxlRGVjbGFyYXRpb246OnB1dCAi
IDw8IHByb3BlcnR5TmFtZS5kZXByZWNhdGVkU3RyaW5nKCkgPDwgZW5kbDsKKyAga2REZWJ1Zyg2
MDcwKSA8PCAiRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0ICIgPDwgcHJvcGVydHlOYW1lIDw8
IGVuZGw7CiAjZW5kaWYKICAgRE9NRXhjZXB0aW9uVHJhbnNsYXRvciBleGNlcHRpb24oZXhlYyk7
CiAgIENTU1N0eWxlRGVjbGFyYXRpb24gJnN0eWxlRGVjbCA9ICptX2ltcGw7CiAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gImNzc1RleHQiKSB7Ci0gICAgc3R5bGVEZWNsLnNldENzc1RleHQodmFsdWUt
PnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpLCBleGNlcHRpb24pOworICAgIHN0eWxlRGVjbC5z
ZXRDc3NUZXh0KHZhbHVlLT50b1N0cmluZyhleGVjKSwgZXhjZXB0aW9uKTsKICAgfSBlbHNlIHsK
ICAgICBpZiAoaXNDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkgewogICAgICAgYm9vbCBw
aXhlbE9yUG9zOwogICAgICAgU3RyaW5nIHByb3AgPSBjc3NQcm9wZXJ0eU5hbWUocHJvcGVydHlO
YW1lLCAmcGl4ZWxPclBvcyk7Ci0gICAgICBTdHJpbmcgcHJvcHZhbHVlID0gdmFsdWUtPnRvU3Ry
aW5nKGV4ZWMpLmRvbVN0cmluZygpOworICAgICAgU3RyaW5nIHByb3B2YWx1ZSA9IHZhbHVlLT50
b1N0cmluZyhleGVjKTsKICAgICAgIGlmIChwaXhlbE9yUG9zKQogCXByb3B2YWx1ZSArPSAicHgi
OwogI2lmZGVmIEtKU19WRVJCT1NFCkBAIC0yMjMsNyArMjIzLDcgQEAKICAgRE9NRXhjZXB0aW9u
VHJhbnNsYXRvciBleGNlcHRpb24oZXhlYyk7CiAgIENTU1N0eWxlRGVjbGFyYXRpb24gJnN0eWxl
RGVjbCA9ICpzdGF0aWNfY2FzdDxET01DU1NTdHlsZURlY2xhcmF0aW9uICo+KHRoaXNPYmopLT5p
bXBsKCk7CiAgIFVTdHJpbmcgc3RyID0gYXJnc1swXS0+dG9TdHJpbmcoZXhlYyk7Ci0gIFdlYkNv
cmU6OlN0cmluZyBzID0gc3RyLmRvbVN0cmluZygpOworICBXZWJDb3JlOjpTdHJpbmcgcyA9IHN0
cjsKIAogICBzd2l0Y2ggKGlkKSB7CiAgICAgY2FzZSBET01DU1NTdHlsZURlY2xhcmF0aW9uOjpH
ZXRQcm9wZXJ0eVZhbHVlOgpAQCAtMjM5LDcgKzIzOSw3IEBACiAgICAgY2FzZSBET01DU1NTdHls
ZURlY2xhcmF0aW9uOjpJc1Byb3BlcnR5SW1wbGljaXQ6CiAgICAgICByZXR1cm4ganNCb29sZWFu
KHN0eWxlRGVjbC5pc1Byb3BlcnR5SW1wbGljaXQocykpOwogICAgIGNhc2UgRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6U2V0UHJvcGVydHk6Ci0gICAgICBzdHlsZURlY2wuc2V0UHJvcGVydHkocywg
YXJnc1sxXS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCksIGFyZ3NbMl0tPnRvU3RyaW5nKGV4
ZWMpLmRvbVN0cmluZygpLCBleGNlcHRpb24pOworICAgICAgc3R5bGVEZWNsLnNldFByb3BlcnR5
KHMsIGFyZ3NbMV0tPnRvU3RyaW5nKGV4ZWMpLCBhcmdzWzJdLT50b1N0cmluZyhleGVjKSwgZXhj
ZXB0aW9uKTsKICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGNhc2UgRE9NQ1NTU3R5
bGVEZWNsYXJhdGlvbjo6SXRlbToKICAgICAgIHJldHVybiBqc1N0cmluZ09yTnVsbChzdHlsZURl
Y2wuaXRlbShhcmdzWzBdLT50b0ludDMyKGV4ZWMpKSk7CkBAIC0zNjQsNyArMzY0LDcgQEAKIEpT
VmFsdWUgKkRPTVN0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSAqZXhlYywgSlNP
YmplY3QgKm9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNv
bnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgRE9NU3R5bGVTaGVldExpc3QgKnRoaXNPYmog
PSBzdGF0aWNfY2FzdDxET01TdHlsZVNoZWV0TGlzdCAqPihzbG90LnNsb3RCYXNlKCkpOwotICBF
bGVtZW50ICplbGVtZW50ID0gdGhpc09iai0+bV9kb2MtPmdldEVsZW1lbnRCeUlkKHByb3BlcnR5
TmFtZS5kb21TdHJpbmcoKS5pbXBsKCkpOworICBFbGVtZW50ICplbGVtZW50ID0gdGhpc09iai0+
bV9kb2MtPmdldEVsZW1lbnRCeUlkKHByb3BlcnR5TmFtZSk7CiAgIHJldHVybiB0b0pTKGV4ZWMs
IHN0YXRpY19jYXN0PEhUTUxTdHlsZUVsZW1lbnQgKj4oZWxlbWVudCktPnNoZWV0KCkpOwogfQog
CkBAIC0zOTgsNyArMzk4LDcgQEAKICAgLy8gIyMjIEJhZCBpbXBsZW1lbnRhdGlvbiBiZWNhdXNl
IHJldHVybnMgYSBzaW5nbGUgZWxlbWVudCAoYXJlIElEcyBhbHdheXMgdW5pcXVlPykKICAgLy8g
YW5kIGRvZXNuJ3QgbG9vayBmb3IgbmFtZSBhdHRyaWJ1dGUgKHNlZSBpbXBsZW1lbnRhdGlvbiBh
Ym92ZSkuCiAgIC8vIEJ1dCB1bmljaXR5IG9mIHN0eWxlc2hlZXQgaWRzIGlzIGdvb2QgcHJhY3Rp
Y2UgYW55d2F5IDspCi0gIEVsZW1lbnQgKmVsZW1lbnQgPSBtX2RvYy0+Z2V0RWxlbWVudEJ5SWQo
cHJvcGVydHlOYW1lLmRvbVN0cmluZygpLmltcGwoKSk7CisgIEVsZW1lbnQgKmVsZW1lbnQgPSBt
X2RvYy0+Z2V0RWxlbWVudEJ5SWQocHJvcGVydHlOYW1lKTsKICAgaWYgKGVsZW1lbnQgJiYgZWxl
bWVudC0+aGFzVGFnTmFtZShzdHlsZVRhZykpIHsKICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBu
YW1lR2V0dGVyKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUwNCw3ICs1MDQsNyBAQAogewogICBN
ZWRpYUxpc3QgJm1lZGlhTGlzdCA9ICptX2ltcGw7CiAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gIm1l
ZGlhVGV4dCIpCi0gICAgbWVkaWFMaXN0LnNldE1lZGlhVGV4dCh2YWx1ZS0+dG9TdHJpbmcoZXhl
YykuZG9tU3RyaW5nKCkpOworICAgIG1lZGlhTGlzdC5zZXRNZWRpYVRleHQodmFsdWUtPnRvU3Ry
aW5nKGV4ZWMpKTsKICAgZWxzZQogICAgIERPTU9iamVjdDo6cHV0KGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIGF0dHIpOwogfQpAQCAtNTIzLDEwICs1MjMsMTAgQEAKICAgICBjYXNlIERPTU1l
ZGlhTGlzdDo6SXRlbToKICAgICAgIHJldHVybiBqc1N0cmluZ09yTnVsbChtZWRpYUxpc3QuaXRl
bShhcmdzWzBdLT50b0ludDMyKGV4ZWMpKSk7CiAgICAgY2FzZSBET01NZWRpYUxpc3Q6OkRlbGV0
ZU1lZGl1bToKLSAgICAgIG1lZGlhTGlzdC5kZWxldGVNZWRpdW0oYXJnc1swXS0+dG9TdHJpbmco
ZXhlYykuZG9tU3RyaW5nKCkpOworICAgICAgbWVkaWFMaXN0LmRlbGV0ZU1lZGl1bShhcmdzWzBd
LT50b1N0cmluZyhleGVjKSk7CiAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBjYXNl
IERPTU1lZGlhTGlzdDo6QXBwZW5kTWVkaXVtOgotICAgICAgbWVkaWFMaXN0LmFwcGVuZE1lZGl1
bShhcmdzWzBdLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKSk7CisgICAgICBtZWRpYUxpc3Qu
YXBwZW5kTWVkaXVtKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpKTsKICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAg
LTU5MywxMyArNTkzLDEzIEBACiAgIENTU1N0eWxlU2hlZXQgJnN0eWxlU2hlZXQgPSAqc3RhdGlj
X2Nhc3Q8Q1NTU3R5bGVTaGVldCAqPihzdGF0aWNfY2FzdDxET01DU1NTdHlsZVNoZWV0ICo+KHRo
aXNPYmopLT5pbXBsKCkpOwogICBzd2l0Y2ggKGlkKSB7CiAgICAgY2FzZSBET01DU1NTdHlsZVNo
ZWV0OjpJbnNlcnRSdWxlOgotICAgICAgcmV0dXJuIGpzTnVtYmVyKHN0eWxlU2hlZXQuaW5zZXJ0
UnVsZShhcmdzWzBdLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKSwgYXJnc1sxXS0+dG9JbnQz
MihleGVjKSwgZXhjZXB0aW9uKSk7CisgICAgICByZXR1cm4ganNOdW1iZXIoc3R5bGVTaGVldC5p
bnNlcnRSdWxlKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLCBhcmdzWzFdLT50b0ludDMyKGV4ZWMp
LCBleGNlcHRpb24pKTsKICAgICBjYXNlIERPTUNTU1N0eWxlU2hlZXQ6OkRlbGV0ZVJ1bGU6CiAg
ICAgICBzdHlsZVNoZWV0LmRlbGV0ZVJ1bGUoYXJnc1swXS0+dG9JbnQzMihleGVjKSwgZXhjZXB0
aW9uKTsKICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGNhc2UgRE9NQ1NTU3R5bGVT
aGVldDo6QWRkUnVsZTogewogICAgICAgaW50IGluZGV4ID0gYXJncy5zaXplKCkgPj0gMyA/IGFy
Z3NbMl0tPnRvSW50MzIoZXhlYykgOiAtMTsKLSAgICAgIHN0eWxlU2hlZXQuYWRkUnVsZShhcmdz
WzBdLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKSwgYXJnc1sxXS0+dG9TdHJpbmcoZXhlYyku
ZG9tU3RyaW5nKCksIGluZGV4LCBleGNlcHRpb24pOworICAgICAgc3R5bGVTaGVldC5hZGRSdWxl
KGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLCBhcmdzWzFdLT50b1N0cmluZyhleGVjKSwgaW5kZXgs
IGV4Y2VwdGlvbik7CiAgICAgICAvLyBBcyBwZXIgTWljcm9zb2Z0IGRvY3VtZW50YXRpb24sIGFs
d2F5cyByZXR1cm4gLTEuCiAgICAgICByZXR1cm4ganNOdW1iZXIoLTEpOwogICAgIH0KQEAgLTg0
OCwxNyArODQ4LDE3IEBACiAgIHN3aXRjaCAodG9rZW4pIHsKICAgLy8gZm9yIFNUWUxFX1JVTEU6
CiAgIGNhc2UgU3R5bGVfU2VsZWN0b3JUZXh0OgotICAgIHN0YXRpY19jYXN0PENTU1N0eWxlUnVs
ZSAqPihtX2ltcGwuZ2V0KCkpLT5zZXRTZWxlY3RvclRleHQodmFsdWUtPnRvU3RyaW5nKGV4ZWMp
LmRvbVN0cmluZygpKTsKKyAgICBzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUgKj4obV9pbXBsLmdl
dCgpKS0+c2V0U2VsZWN0b3JUZXh0KHZhbHVlLT50b1N0cmluZyhleGVjKSk7CiAgICAgcmV0dXJu
OwogCiAgIC8vIGZvciBQQUdFX1JVTEU6CiAgIGNhc2UgUGFnZV9TZWxlY3RvclRleHQ6Ci0gICAg
c3RhdGljX2Nhc3Q8Q1NTUGFnZVJ1bGUgKj4obV9pbXBsLmdldCgpKS0+c2V0U2VsZWN0b3JUZXh0
KHZhbHVlLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKSk7CisgICAgc3RhdGljX2Nhc3Q8Q1NT
UGFnZVJ1bGUgKj4obV9pbXBsLmdldCgpKS0+c2V0U2VsZWN0b3JUZXh0KHZhbHVlLT50b1N0cmlu
ZyhleGVjKSk7CiAgICAgcmV0dXJuOwogCiAgIC8vIGZvciBDSEFSU0VUX1JVTEU6CiAgIGNhc2Ug
Q2hhcnNldF9FbmNvZGluZzoKLSAgICBzdGF0aWNfY2FzdDxDU1NDaGFyc2V0UnVsZSAqPihtX2lt
cGwuZ2V0KCkpLT5zZXRFbmNvZGluZyh2YWx1ZS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCkp
OworICAgIHN0YXRpY19jYXN0PENTU0NoYXJzZXRSdWxlICo+KG1faW1wbC5nZXQoKSktPnNldEVu
Y29kaW5nKHZhbHVlLT50b1N0cmluZyhleGVjKSk7CiAgICAgcmV0dXJuOwogICB9CiB9CkBAIC04
NzIsNyArODcyLDcgQEAKICAgaWYgKGNzc1J1bGUudHlwZSgpID09IFdlYkNvcmU6Ok1FRElBX1JV
TEUpIHsKICAgICBDU1NNZWRpYVJ1bGUgJnJ1bGUgPSBzdGF0aWNfY2FzdDxDU1NNZWRpYVJ1bGUg
Jj4oY3NzUnVsZSk7CiAgICAgaWYgKGlkID09IERPTUNTU1J1bGU6Ok1lZGlhX0luc2VydFJ1bGUp
Ci0gICAgICByZXR1cm4ganNOdW1iZXIocnVsZS5pbnNlcnRSdWxlKGFyZ3NbMF0tPnRvU3RyaW5n
KGV4ZWMpLmRvbVN0cmluZygpLCBhcmdzWzFdLT50b0ludDMyKGV4ZWMpKSk7CisgICAgICByZXR1
cm4ganNOdW1iZXIocnVsZS5pbnNlcnRSdWxlKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLCBhcmdz
WzFdLT50b0ludDMyKGV4ZWMpKSk7CiAgICAgZWxzZSBpZiAoaWQgPT0gRE9NQ1NTUnVsZTo6TWVk
aWFfRGVsZXRlUnVsZSkKICAgICAgIHJ1bGUuZGVsZXRlUnVsZShhcmdzWzBdLT50b0ludDMyKGV4
ZWMpKTsKICAgfQpAQCAtOTY5LDcgKzk2OSw3IEBACiB7CiAgIENTU1ZhbHVlICZjc3NWYWx1ZSA9
ICptX2ltcGw7CiAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gImNzc1RleHQiKQotICAgIGNzc1ZhbHVl
LnNldENzc1RleHQodmFsdWUtPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpKTsKKyAgICBjc3NW
YWx1ZS5zZXRDc3NUZXh0KHZhbHVlLT50b1N0cmluZyhleGVjKSk7CiAgIGVsc2UKICAgICBET01P
YmplY3Q6OnB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyKTsKIH0KQEAgLTEwODEs
NyArMTA4MSw3IEBACiAgICAgY2FzZSBET01DU1NQcmltaXRpdmVWYWx1ZTo6R2V0RmxvYXRWYWx1
ZToKICAgICAgIHJldHVybiBqc051bWJlcih2YWwuZ2V0RmxvYXRWYWx1ZShhcmdzWzBdLT50b0lu
dDMyKGV4ZWMpKSk7CiAgICAgY2FzZSBET01DU1NQcmltaXRpdmVWYWx1ZTo6U2V0U3RyaW5nVmFs
dWU6Ci0gICAgICB2YWwuc2V0U3RyaW5nVmFsdWUoYXJnc1swXS0+dG9JbnQzMihleGVjKSwgYXJn
c1sxXS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCksIGV4Y2VwdGlvbik7CisgICAgICB2YWwu
c2V0U3RyaW5nVmFsdWUoYXJnc1swXS0+dG9JbnQzMihleGVjKSwgYXJnc1sxXS0+dG9TdHJpbmco
ZXhlYyksIGV4Y2VwdGlvbik7CiAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBjYXNl
IERPTUNTU1ByaW1pdGl2ZVZhbHVlOjpHZXRTdHJpbmdWYWx1ZToKICAgICAgIHJldHVybiBqc1N0
cmluZ09yTnVsbCh2YWwuZ2V0U3RyaW5nVmFsdWUoKSk7CkluZGV4OiBraHRtbC9lY21hL2tqc19u
YXZpZ2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL2VjbWEva2pzX25hdmlnYXRvci5jcHAJ
KHJldmlzaW9uIDEzMzkzKQorKysga2h0bWwvZWNtYS9ranNfbmF2aWdhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
Imtqc19uYXZpZ2F0b3IuaCIKIAorI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgogI2luY2x1ZGUg
IkNvb2tpZUphci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIK
QEAgLTI3MSwxMCArMjcyLDExIEBACiAKIEpTVmFsdWUgKlBsdWdpbnM6Om5hbWVHZXR0ZXIoRXhl
Y1N0YXRlICpleGVjLCBKU09iamVjdCAqb3JpZ2luYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIEF0b21pY1N0
cmluZyBhdG9taWNQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWU7CiAgICAgVmVjdG9yPFBsdWdp
bkluZm8qPjo6aXRlcmF0b3IgZW5kID0gcGx1Z2lucy0+ZW5kKCk7CiAgICAgZm9yIChWZWN0b3I8
UGx1Z2luSW5mbyo+OjppdGVyYXRvciBpdHIgPSBwbHVnaW5zLT5iZWdpbigpOyBpdHIgIT0gZW5k
OyBpdHIrKykgewogICAgICAgICBQbHVnaW5JbmZvICpwbCA9ICppdHI7Ci0gICAgICAgIGlmIChw
bC0+bmFtZSA9PSBwcm9wZXJ0eU5hbWUuZG9tU3RyaW5nKCkpCisgICAgICAgIGlmIChwbC0+bmFt
ZSA9PSBhdG9taWNQcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICByZXR1cm4gbmV3IFBsdWdpbihl
eGVjLCBwbCk7CiAgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMjk5LDkgKzMw
MSwxMCBAQAogICAgICAgICB9CiAKICAgICAgICAgLy8gcGx1Z2luW25hbWVdCisgICAgICAgIEF0
b21pY1N0cmluZyBhdG9taWNQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWU7CiAgICAgICAgIFZl
Y3RvcjxQbHVnaW5JbmZvKj46Oml0ZXJhdG9yIGVuZCA9IHBsdWdpbnMtPmVuZCgpOwogICAgICAg
ICBmb3IgKFZlY3RvcjxQbHVnaW5JbmZvKj46Oml0ZXJhdG9yIGl0ciA9IHBsdWdpbnMtPmJlZ2lu
KCk7IGl0ciAhPSBlbmQ7IGl0cisrKSB7Ci0gICAgICAgICAgICBpZiAoKCppdHIpLT5uYW1lID09
IHByb3BlcnR5TmFtZS5kb21TdHJpbmcoKSkgeworICAgICAgICAgICAgaWYgKCgqaXRyKS0+bmFt
ZSA9PSBhdG9taWNQcm9wZXJ0eU5hbWUpIHsKICAgICAgICAgICAgICAgICBzbG90LnNldEN1c3Rv
bSh0aGlzLCBuYW1lR2V0dGVyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgIH0KQEAgLTMzMiwxMCArMzM1LDExIEBACiAKIEpTVmFsdWUgKk1pbWVUeXBlczo6bmFt
ZUdldHRlcihFeGVjU3RhdGUgKmV4ZWMsIEpTT2JqZWN0ICpvcmlnaW5hbE9iamVjdCwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Cisg
ICAgQXRvbWljU3RyaW5nIGF0b21pY1Byb3BlcnR5TmFtZSA9IHByb3BlcnR5TmFtZTsKICAgICBW
ZWN0b3I8TWltZUNsYXNzSW5mbyo+OjppdGVyYXRvciBlbmQgPSBtaW1lcy0+ZW5kKCk7CiAgICAg
Zm9yIChWZWN0b3I8TWltZUNsYXNzSW5mbyo+OjppdGVyYXRvciBpdHIgPSBtaW1lcy0+YmVnaW4o
KTsgaXRyICE9IGVuZDsgaXRyKyspIHsKICAgICAgICAgTWltZUNsYXNzSW5mbyAqbSA9ICgqaXRy
KTsKLSAgICAgICAgaWYgKG0tPnR5cGUgPT0gcHJvcGVydHlOYW1lLmRvbVN0cmluZygpKQorICAg
ICAgICBpZiAobS0+dHlwZSA9PSBhdG9taWNQcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICByZXR1
cm4gbmV3IE1pbWVUeXBlKGV4ZWMsIG0pOwogICAgIH0KICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKQEAgLTM1Nyw5ICszNjEsMTAgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8vIG1pbWVUeXBl
c1tuYW1lXQorICAgICAgICBBdG9taWNTdHJpbmcgYXRvbWljUHJvcGVydHlOYW1lID0gcHJvcGVy
dHlOYW1lOwogICAgICAgICBWZWN0b3I8TWltZUNsYXNzSW5mbyo+OjppdGVyYXRvciBlbmQgPSBt
aW1lcy0+ZW5kKCk7CiAgICAgICAgIGZvciAoVmVjdG9yPE1pbWVDbGFzc0luZm8qPjo6aXRlcmF0
b3IgaXRyID0gbWltZXMtPmJlZ2luKCk7IGl0ciAhPSBlbmQ7IGl0cisrKSB7Ci0gICAgICAgICAg
ICBpZiAoKCppdHIpLT50eXBlID09IHByb3BlcnR5TmFtZS5kb21TdHJpbmcoKSkgeworICAgICAg
ICAgICAgaWYgKCgqaXRyKS0+dHlwZSA9PSBhdG9taWNQcm9wZXJ0eU5hbWUpIHsKICAgICAgICAg
ICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBuYW1lR2V0dGVyKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTQwNywxMCArNDEyLDExIEBACiBKU1Zh
bHVlICpQbHVnaW46Om5hbWVHZXR0ZXIoRXhlY1N0YXRlICpleGVjLCBKU09iamVjdCAqb3JpZ2lu
YWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIFBsdWdpbiAqdGhpc09iaiA9IHN0YXRpY19jYXN0PFBsdWdpbiAq
PihzbG90LnNsb3RCYXNlKCkpOworICAgIEF0b21pY1N0cmluZyBhdG9taWNQcm9wZXJ0eU5hbWUg
PSBwcm9wZXJ0eU5hbWU7CiAgICAgVmVjdG9yPE1pbWVDbGFzc0luZm8qPjo6aXRlcmF0b3IgZW5k
ID0gdGhpc09iai0+bV9pbmZvLT5taW1lcy5lbmQoKTsKICAgICBmb3IgKFZlY3RvcjxNaW1lQ2xh
c3NJbmZvKj46Oml0ZXJhdG9yIGl0ciA9IHRoaXNPYmotPm1faW5mby0+bWltZXMuYmVnaW4oKTsg
aXRyICE9IGVuZDsgaXRyKyspIHsKICAgICAgICAgTWltZUNsYXNzSW5mbyAqbSA9ICgqaXRyKTsK
LSAgICAgICAgaWYgKG0tPnR5cGUgPT0gcHJvcGVydHlOYW1lLmRvbVN0cmluZygpKQorICAgICAg
ICBpZiAobS0+dHlwZSA9PSBhdG9taWNQcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICByZXR1cm4g
bmV3IE1pbWVUeXBlKGV4ZWMsIG0pOwogICAgIH0KICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
QEAgLTQzMyw5ICs0MzksMTAgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8vIHBsdWdpblsibmFt
ZSJdCisgICAgICAgIEF0b21pY1N0cmluZyBhdG9taWNQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5h
bWU7CiAgICAgICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvKj46Oml0ZXJhdG9yIGVuZCA9IG1faW5m
by0+bWltZXMuZW5kKCk7CiAgICAgICAgIGZvciAoVmVjdG9yPE1pbWVDbGFzc0luZm8qPjo6aXRl
cmF0b3IgaXRyID0gbV9pbmZvLT5taW1lcy5iZWdpbigpOyBpdHIgIT0gZW5kOyBpdHIrKykgewot
ICAgICAgICAgICAgaWYgKCgqaXRyKS0+dHlwZSA9PSBwcm9wZXJ0eU5hbWUuZG9tU3RyaW5nKCkp
IHsKKyAgICAgICAgICAgIGlmICgoKml0ciktPnR5cGUgPT0gYXRvbWljUHJvcGVydHlOYW1lKSB7
CiAgICAgICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpcywgbmFtZUdldHRlcik7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkluZGV4OiBraHRtbC9lY21h
L2tqc19yYW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9ranNfcmFuZ2UuY3BwCShy
ZXZpc2lvbiAxMzM5MykKKysrIGtodG1sL2VjbWEva2pzX3JhbmdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTcyLDcgKzE3Miw3IEBACiAgICAgICByYW5nZS5kZXRhY2goZXhjZXB0aW9uKTsKICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRE9NUmFuZ2U6OkNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudDoK
LSAgICAgIHJlc3VsdCA9IHRvSlMoZXhlYywgcmFuZ2UuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50
KGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpLCBleGNlcHRpb24pKTsKKyAgICAg
IHJlc3VsdCA9IHRvSlMoZXhlYywgcmFuZ2UuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGFyZ3Nb
MF0tPnRvU3RyaW5nKGV4ZWMpLCBleGNlcHRpb24pKTsKICAgICAgIGJyZWFrOwogICB9OwogCklu
ZGV4OiBraHRtbC9lY21hL2tqc192aWV3cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9r
anNfdmlld3MuY3BwCShyZXZpc2lvbiAxMzM5MykKKysrIGtodG1sL2VjbWEva2pzX3ZpZXdzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQAogICAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOyAvLyB0aHJvdyBleGNlcHRpb24/CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
IGFyZzAtPmdldERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0
cygpOwotICAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGFic3RyYWN0Vmlldy5nZXRDb21wdXRl
ZFN0eWxlKGFyZzAsIGFyZ3NbMV0tPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpLmltcGwoKSkp
OworICAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGFic3RyYWN0Vmlldy5nZXRDb21wdXRlZFN0
eWxlKGFyZzAsIFdlYkNvcmU6OlN0cmluZyhhcmdzWzFdLT50b1N0cmluZyhleGVjKSkuaW1wbCgp
KSk7CiAgICAgICAgIH0KICAgICAgIH0KICAgICBjYXNlIERPTUFic3RyYWN0Vmlldzo6R2V0TWF0
Y2hlZENTU1J1bGVzOiB7CkBAIC05OCw4ICs5OCw3IEBACiAgICAgICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsgLy8gdGhyb3cgZXhjZXB0aW9uPwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIC8vIE5vIG5lZWQgdG8gdXBkYXRlIGxheW91dCwgc2luY2Ugd2UganVzdCB3YW50IHRoZSBi
YWNrLWVuZCBydWxlcy4KLSAgICAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGFic3RyYWN0Vmll
dy5nZXRNYXRjaGVkQ1NTUnVsZXMoYXJnMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmdzWzFdLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKS5pbXBsKCkpLmdldCgp
KTsKKyAgICAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGFic3RyYWN0Vmlldy5nZXRNYXRjaGVk
Q1NTUnVsZXMoYXJnMCwgV2ViQ29yZTo6U3RyaW5nKGFyZ3NbMV0tPnRvU3RyaW5nKGV4ZWMpKS5p
bXBsKCkpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KICAgfQpJbmRleDoga2h0bWwvZWNtYS9K
U1hNTEh0dHBSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9lY21hL0pTWE1MSHR0cFJl
cXVlc3QuY3BwCShyZXZpc2lvbiAxMzM5MykKKysrIGtodG1sL2VjbWEvSlNYTUxIdHRwUmVxdWVz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NCwxNCArMTg0LDE0IEBACiAgIGNhc2UgSlNYTUxI
dHRwUmVxdWVzdDo6R2V0UmVzcG9uc2VIZWFkZXI6CiAgICAgaWYgKGFyZ3Muc2l6ZSgpICE9IDEp
CiAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICByZXR1cm4ganNTdHJpbmdPclVuZGVm
aW5lZChyZXF1ZXN0LT5tX2ltcGwtPmdldFJlc3BvbnNlSGVhZGVyKGFyZ3NbMF0tPnRvU3RyaW5n
KGV4ZWMpLmRvbVN0cmluZygpKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nT3JVbmRlZmluZWQocmVx
dWVzdC0+bV9pbXBsLT5nZXRSZXNwb25zZUhlYWRlcihhcmdzWzBdLT50b1N0cmluZyhleGVjKSkp
OwogICBjYXNlIEpTWE1MSHR0cFJlcXVlc3Q6Ok9wZW46CiAgICAgewogICAgICAgaWYgKGFyZ3Mu
c2l6ZSgpIDwgMiB8fCBhcmdzLnNpemUoKSA+IDUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgIAotICAgICAgU3RyaW5nIG1ldGhvZCA9IGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMp
LmRvbVN0cmluZygpOwotICAgICAgS1VSTCB1cmwgPSBLVVJMKFdpbmRvdzo6cmV0cmlldmVBY3Rp
dmUoZXhlYyktPmZyYW1lKCktPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGFyZ3NbMV0tPnRvU3Ry
aW5nKGV4ZWMpLmRlcHJlY2F0ZWRTdHJpbmcoKSkpOworICAgICAgU3RyaW5nIG1ldGhvZCA9IGFy
Z3NbMF0tPnRvU3RyaW5nKGV4ZWMpOworICAgICAgS1VSTCB1cmwgPSBLVVJMKFdpbmRvdzo6cmV0
cmlldmVBY3RpdmUoZXhlYyktPmZyYW1lKCktPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKERlcHJl
Y2F0ZWRTdHJpbmcoYXJnc1sxXS0+dG9TdHJpbmcoZXhlYykpKSk7CiAKICAgICAgIGJvb2wgYXN5
bmMgPSB0cnVlOwogICAgICAgaWYgKGFyZ3Muc2l6ZSgpID49IDMpCkBAIC0xOTksMTEgKzE5OSwx
MSBAQAogICAgIAogICAgICAgU3RyaW5nIHVzZXI7CiAgICAgICBpZiAoYXJncy5zaXplKCkgPj0g
NCkKLSAgICAgICAgdXNlciA9IGFyZ3NbM10tPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpOwor
ICAgICAgICB1c2VyID0gYXJnc1szXS0+dG9TdHJpbmcoZXhlYyk7CiAgICAgICAKICAgICAgIFN0
cmluZyBwYXNzd29yZDsKICAgICAgIGlmIChhcmdzLnNpemUoKSA+PSA1KQotICAgICAgICBwYXNz
d29yZCA9IGFyZ3NbNF0tPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpOworICAgICAgICBwYXNz
d29yZCA9IGFyZ3NbNF0tPnRvU3RyaW5nKGV4ZWMpOwogCiAgICAgICByZXF1ZXN0LT5tX2ltcGwt
Pm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jLCB1c2VyLCBwYXNzd29yZCk7CiAKQEAgLTIyNSw3ICsy
MjUsNyBAQAogICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAg
IGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgYm9k
eSA9IGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpOworICAgICAgICAgICAgYm9k
eSA9IGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpOwogICAgICAgICB9CiAgICAgICB9CiAKQEAgLTIz
NiwxMiArMjM2LDEyIEBACiAgIGNhc2UgSlNYTUxIdHRwUmVxdWVzdDo6U2V0UmVxdWVzdEhlYWRl
cjoKICAgICBpZiAoYXJncy5zaXplKCkgIT0gMikKICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotICAgIHJlcXVlc3QtPm1faW1wbC0+c2V0UmVxdWVzdEhlYWRlcihhcmdzWzBdLT50b1N0cmlu
ZyhleGVjKS5kb21TdHJpbmcoKSwgYXJnc1sxXS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCkp
OworICAgIHJlcXVlc3QtPm1faW1wbC0+c2V0UmVxdWVzdEhlYWRlcihhcmdzWzBdLT50b1N0cmlu
ZyhleGVjKSwgYXJnc1sxXS0+dG9TdHJpbmcoZXhlYykpOwogICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICBjYXNlIEpTWE1MSHR0cFJlcXVlc3Q6Ok92ZXJyaWRlTUlNRVR5cGU6CiAgICAgaWYg
KGFyZ3Muc2l6ZSgpICE9IDEpCiAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICByZXF1
ZXN0LT5tX2ltcGwtPm92ZXJyaWRlTUlNRVR5cGUoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykuZG9t
U3RyaW5nKCkpOworICAgIHJlcXVlc3QtPm1faW1wbC0+b3ZlcnJpZGVNSU1FVHlwZShhcmdzWzBd
LT50b1N0cmluZyhleGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgIH0KIApJbmRl
eDoga2h0bWwvZWNtYS9ranNfaHRtbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9ranNf
aHRtbC5jcHAJKHJldmlzaW9uIDEzMzkzKQorKysga2h0bWwvZWNtYS9ranNfaHRtbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExNiwxNyArMTE2LDE2IEBACiAgIGNhc2UgSlNIVE1MRG9jdW1lbnQ6
OldyaXRlTG46IHsKICAgICAvLyBET00gb25seSBzcGVjaWZpZXMgc2luZ2xlIHN0cmluZyBhcmd1
bWVudCwgYnV0IE5TICYgSUUgYWxsb3cgbXVsdGlwbGUKICAgICAvLyBvciBubyBhcmd1bWVudHMK
LSAgICBVU3RyaW5nIHN0ciA9ICIiOworICAgIFN0cmluZyBzdHIgPSAiIjsKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGFyZ3Muc2l6ZSgpOyBpKyspCiAgICAgICBzdHIgKz0gYXJnc1tpXS0+dG9T
dHJpbmcoZXhlYyk7CiAgICAgaWYgKGlkID09IEpTSFRNTERvY3VtZW50OjpXcml0ZUxuKQogICAg
ICAgc3RyICs9ICJcbiI7Ci0gICAgLy9rZERlYnVnKCkgPDwgImRvY3VtZW50LndyaXRlOiAiIDw8
IHN0ci5hc2NpaSgpIDw8IGVuZGw7Ci0gICAgZG9jLndyaXRlKHN0ci5kb21TdHJpbmcoKSk7Cisg
ICAgZG9jLndyaXRlKHN0cik7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgIH0KICAgY2Fz
ZSBKU0hUTUxEb2N1bWVudDo6R2V0RWxlbWVudHNCeU5hbWU6Ci0gICAgcmV0dXJuIHRvSlMoZXhl
YywgZG9jLmdldEVsZW1lbnRzQnlOYW1lKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmlu
ZygpKS5nZXQoKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgZG9jLmdldEVsZW1lbnRzQnlOYW1l
KGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpKS5nZXQoKSk7CiAgIGNhc2UgSlNIVE1MRG9jdW1lbnQ6
OkNhcHR1cmVFdmVudHM6CiAgIGNhc2UgSlNIVE1MRG9jdW1lbnQ6OlJlbGVhc2VFdmVudHM6CiAg
ICAgLy8gRG8gbm90aGluZyBmb3Igbm93LiBUaGVzZSBhcmUgTlMtc3BlY2lmaWMgbGVnYWN5IGNh
bGxzLgpAQCAtMTk0LDcgKzE5Myw3IEBACiAgIEpTSFRNTERvY3VtZW50ICp0aGlzT2JqID0gc3Rh
dGljX2Nhc3Q8SlNIVE1MRG9jdW1lbnQgKj4oc2xvdC5zbG90QmFzZSgpKTsKICAgSFRNTERvY3Vt
ZW50ICZkb2MgPSAqc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50ICo+KHRoaXNPYmotPmltcGwoKSk7
CiAKLSAgU3RyaW5nIG5hbWUgPSBwcm9wZXJ0eU5hbWUuZG9tU3RyaW5nKCk7CisgIFN0cmluZyBu
YW1lID0gcHJvcGVydHlOYW1lOwogICBSZWZQdHI8V2ViQ29yZTo6SFRNTENvbGxlY3Rpb24+IGNv
bGxlY3Rpb24gPSBkb2MuZG9jdW1lbnROYW1lZEl0ZW1zKG5hbWUpOwogCiAgIGlmIChjb2xsZWN0
aW9uLT5sZW5ndGgoKSA9PSAxKSB7CkBAIC0zMDIsNyArMzAxLDcgQEAKIHsKICAgSFRNTERvY3Vt
ZW50ICZkb2MgPSAqc3RhdGljX2Nhc3Q8SFRNTERvY3VtZW50ICo+KGltcGwoKSk7CiAKLSAgU3Ry
aW5nIG5hbWUgPSBwcm9wZXJ0eU5hbWUuZG9tU3RyaW5nKCk7CisgIFN0cmluZyBuYW1lID0gcHJv
cGVydHlOYW1lOwogICBpZiAoZG9jLmhhc05hbWVkSXRlbShuYW1lKSB8fCBkb2MuaGFzRG9jRXh0
cmFOYW1lZEl0ZW0obmFtZSkpIHsKICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBuYW1lZEl0ZW1H
ZXR0ZXIpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMzM0LDIyICszMzMsMjIgQEAKIAogICBzd2l0
Y2ggKHRva2VuKSB7CiAgIGNhc2UgVGl0bGU6Ci0gICAgZG9jLnNldFRpdGxlKHZhbHVlLT50b1N0
cmluZyhleGVjKS5kb21TdHJpbmcoKSk7CisgICAgZG9jLnNldFRpdGxlKHZhbHVlLT50b1N0cmlu
ZyhleGVjKSk7CiAgICAgYnJlYWs7CiAgIGNhc2UgQm9keToKICAgICBkb2Muc2V0Qm9keSh0b0hU
TUxFbGVtZW50KHZhbHVlKSwgZXhjZXB0aW9uKTsKICAgICBicmVhazsKICAgY2FzZSBEb21haW46
IC8vIG5vdCBwYXJ0IG9mIHRoZSBET00KLSAgICBkb2Muc2V0RG9tYWluKHZhbHVlLT50b1N0cmlu
ZyhleGVjKS5kb21TdHJpbmcoKSk7CisgICAgZG9jLnNldERvbWFpbih2YWx1ZS0+dG9TdHJpbmco
ZXhlYykpOwogICAgIGJyZWFrOwogICBjYXNlIENvb2tpZToKLSAgICBkb2Muc2V0Q29va2llKHZh
bHVlLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKSk7CisgICAgZG9jLnNldENvb2tpZSh2YWx1
ZS0+dG9TdHJpbmcoZXhlYykpOwogICAgIGJyZWFrOwogICBjYXNlIExvY2F0aW9uOiB7CiAgICAg
RnJhbWUgKmZyYW1lID0gZG9jLmZyYW1lKCk7CiAgICAgaWYgKGZyYW1lKQogICAgIHsKLSAgICAg
IERlcHJlY2F0ZWRTdHJpbmcgc3RyID0gdmFsdWUtPnRvU3RyaW5nKGV4ZWMpLmRlcHJlY2F0ZWRT
dHJpbmcoKTsKKyAgICAgIERlcHJlY2F0ZWRTdHJpbmcgc3RyID0gdmFsdWUtPnRvU3RyaW5nKGV4
ZWMpOwogCiAgICAgICAvLyBXaGVuIGFzc2lnbmluZyBsb2NhdGlvbiwgSUUgYW5kIE1vemlsbGEg
Ym90aCByZXNvbHZlIHRoZSBVUkwKICAgICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBmcmFtZSB3aGVy
ZSB0aGUgSmF2YVNjcmlwdCBpcyBleGVjdXRpbmcgbm90CkBAIC0zNjYsMTggKzM2NSwxOCBAQAog
ICB9CiAgIGNhc2UgQmdDb2xvcjoKICAgICBpZiAoYm9keUVsZW1lbnQpCi0gICAgICBib2R5RWxl
bWVudC0+c2V0QmdDb2xvcih2YWx1ZS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCkpOworICAg
ICAgYm9keUVsZW1lbnQtPnNldEJnQ29sb3IodmFsdWUtPnRvU3RyaW5nKGV4ZWMpKTsKICAgICBi
cmVhazsKICAgY2FzZSBGZ0NvbG9yOgogICAgIGlmIChib2R5RWxlbWVudCkKLSAgICAgIGJvZHlF
bGVtZW50LT5zZXRUZXh0KHZhbHVlLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKSk7CisgICAg
ICBib2R5RWxlbWVudC0+c2V0VGV4dCh2YWx1ZS0+dG9TdHJpbmcoZXhlYykpOwogICAgIGJyZWFr
OwogICBjYXNlIEFsaW5rQ29sb3I6CiAgICAgaWYgKGJvZHlFbGVtZW50KSB7CiAgICAgICAvLyB0
aGlzIGNoZWNrIGlzIGEgYml0IHNpbGx5LCBidXQgc29tZSBiZW5jaG1hcmtzIGxpa2UgdG8gc2V0
IHRoZQogICAgICAgLy8gZG9jdW1lbnQncyBsaW5rIGNvbG9ycyBvdmVyIGFuZCBvdmVyIHRvIHRo
ZSBzYW1lIHZhbHVlIGFuZCB3ZQogICAgICAgLy8gZG9uJ3Qgd2FudCB0byBpbmN1ciBhIHN0eWxl
IHVwZGF0ZSBlYWNoIHRpbWUuCi0gICAgICBTdHJpbmcgbmV3Q29sb3IgPSB2YWx1ZS0+dG9TdHJp
bmcoZXhlYykuZG9tU3RyaW5nKCk7CisgICAgICBTdHJpbmcgbmV3Q29sb3IgPSB2YWx1ZS0+dG9T
dHJpbmcoZXhlYyk7CiAgICAgICBpZiAoYm9keUVsZW1lbnQtPmFMaW5rKCkgIT0gbmV3Q29sb3Ip
CiAgICAgICAgIGJvZHlFbGVtZW50LT5zZXRBTGluayhuZXdDb2xvcik7CiAgICAgfQpAQCAtMzg3
LDcgKzM4Niw3IEBACiAgICAgICAvLyB0aGlzIGNoZWNrIGlzIGEgYml0IHNpbGx5LCBidXQgc29t
ZSBiZW5jaG1hcmtzIGxpa2UgdG8gc2V0IHRoZQogICAgICAgLy8gZG9jdW1lbnQncyBsaW5rIGNv
bG9ycyBvdmVyIGFuZCBvdmVyIHRvIHRoZSBzYW1lIHZhbHVlIGFuZCB3ZQogICAgICAgLy8gZG9u
J3Qgd2FudCB0byBpbmN1ciBhIHN0eWxlIHVwZGF0ZSBlYWNoIHRpbWUuCi0gICAgICBTdHJpbmcg
bmV3Q29sb3IgPSB2YWx1ZS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCk7CisgICAgICBTdHJp
bmcgbmV3Q29sb3IgPSB2YWx1ZS0+dG9TdHJpbmcoZXhlYyk7CiAgICAgICBpZiAoYm9keUVsZW1l
bnQtPmxpbmsoKSAhPSBuZXdDb2xvcikKICAgICAgICAgYm9keUVsZW1lbnQtPnNldExpbmsobmV3
Q29sb3IpOwogICAgIH0KQEAgLTM5NywxNyArMzk2LDE3IEBACiAgICAgICAvLyB0aGlzIGNoZWNr
IGlzIGEgYml0IHNpbGx5LCBidXQgc29tZSBiZW5jaG1hcmtzIGxpa2UgdG8gc2V0IHRoZQogICAg
ICAgLy8gZG9jdW1lbnQncyBsaW5rIGNvbG9ycyBvdmVyIGFuZCBvdmVyIHRvIHRoZSBzYW1lIHZh
bHVlIGFuZCB3ZQogICAgICAgLy8gZG9uJ3Qgd2FudCB0byBpbmN1ciBhIHN0eWxlIHVwZGF0ZSBl
YWNoIHRpbWUuCi0gICAgICBTdHJpbmcgbmV3Q29sb3IgPSB2YWx1ZS0+dG9TdHJpbmcoZXhlYyku
ZG9tU3RyaW5nKCk7CisgICAgICBTdHJpbmcgbmV3Q29sb3IgPSB2YWx1ZS0+dG9TdHJpbmcoZXhl
Yyk7CiAgICAgICBpZiAoYm9keUVsZW1lbnQtPnZMaW5rKCkgIT0gbmV3Q29sb3IpCiAgICAgICAg
IGJvZHlFbGVtZW50LT5zZXRWTGluayhuZXdDb2xvcik7CiAgICAgfQogICAgIGJyZWFrOwogICBj
YXNlIERpcjoKLSAgICBib2R5LT5zZXREaXIodmFsdWUtPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmlu
ZygpKTsKKyAgICBib2R5LT5zZXREaXIodmFsdWUtPnRvU3RyaW5nKGV4ZWMpKTsKICAgICBicmVh
azsKICAgY2FzZSBEZXNpZ25Nb2RlOgogICAgIHsKLSAgICAgIFN0cmluZyBtb2RlU3RyaW5nID0g
dmFsdWUtPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpOworICAgICAgU3RyaW5nIG1vZGVTdHJp
bmcgPSB2YWx1ZS0+dG9TdHJpbmcoZXhlYyk7CiAgICAgICBEb2N1bWVudDo6SW5oZXJpdGVkQm9v
bCBtb2RlOwogICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1vZGVTdHJpbmcsICJvbiIpKQog
ICAgICAgICBtb2RlID0gRG9jdW1lbnQ6Om9uOwpAQCAtMTIwOSw3ICsxMjA4LDcgQEAKICAgICBK
U0hUTUxFbGVtZW50ICp0aGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNIVE1MRWxlbWVudCAqPihzbG90
LnNsb3RCYXNlKCkpOwogICAgIEhUTUxFbGVtZW50ICplbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRN
TEVsZW1lbnQgKj4odGhpc09iai0+aW1wbCgpKTsKIAotICAgIE5vZGUgKmZyYW1lID0gZWxlbWVu
dC0+Y2hpbGRyZW4oKS0+bmFtZWRJdGVtKHByb3BlcnR5TmFtZS5kb21TdHJpbmcoKSk7CisgICAg
Tm9kZSAqZnJhbWUgPSBlbGVtZW50LT5jaGlsZHJlbigpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1l
KTsKICAgICBpZiAoRG9jdW1lbnQqIGRvYyA9IHN0YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnQg
Kj4oZnJhbWUpLT5jb250ZW50RG9jdW1lbnQoKSkKICAgICAgICAgaWYgKFdpbmRvdyAqd2luZG93
ID0gV2luZG93OjpyZXRyaWV2ZVdpbmRvdyhkb2MtPmZyYW1lKCkpKQogICAgICAgICAgICAgcmV0
dXJuIHdpbmRvdzsKQEAgLTEyNjUsNyArMTI2NCw3IEBACiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZWxlbWVudC5oYXNMb2NhbE5hbWUoZnJhbWVz
ZXRUYWcpKSB7Ci0gICAgICAgIE5vZGUgKmZyYW1lID0gZWxlbWVudC5jaGlsZHJlbigpLT5uYW1l
ZEl0ZW0ocHJvcGVydHlOYW1lLmRvbVN0cmluZygpKTsKKyAgICAgICAgTm9kZSAqZnJhbWUgPSBl
bGVtZW50LmNoaWxkcmVuKCktPm5hbWVkSXRlbShwcm9wZXJ0eU5hbWUpOwogICAgICAgICBpZiAo
ZnJhbWUgJiYgZnJhbWUtPmhhc1RhZ05hbWUoZnJhbWVUYWcpKSB7CiAgICAgICAgICAgICBzbG90
LnNldEN1c3RvbSh0aGlzLCBmcmFtZXNldE5hbWVHZXR0ZXIpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC0yNDA4LDcgKzI0MDcsNyBAQAogICAgIH0KICAgICBlbHNlIGlmIChlbGVtZW50
Lmhhc0xvY2FsTmFtZShjYW52YXNUYWcpKSB7CiAgICAgICAgIGlmIChpZCA9PSBKU0hUTUxFbGVt
ZW50OjpHZXRDb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgc3RhdGljX2Nh
c3Q8SFRNTENhbnZhc0VsZW1lbnQqPigmZWxlbWVudCktPmdldENvbnRleHQoYXJnc1swXS0+dG9T
dHJpbmcoZXhlYykuZG9tU3RyaW5nKCkpKTsKKyAgICAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMs
IHN0YXRpY19jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4oJmVsZW1lbnQpLT5nZXRDb250ZXh0KGFy
Z3NbMF0tPnRvU3RyaW5nKGV4ZWMpKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CkBAIC0zMTEyLDcgKzMxMTEsNyBAQAogdm9pZCBKU0hUTUxFbGVtZW50OjpwdXRWYWx1ZVBy
b3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRva2VuLCBKU1ZhbHVlICp2YWx1ZSwgaW50KQog
ewogICAgIERPTUV4Y2VwdGlvblRyYW5zbGF0b3IgZXhjZXB0aW9uKGV4ZWMpOwotICAgIFdlYkNv
cmU6OlN0cmluZyBzdHIgPSB2YWx1ZS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCk7CisgICAg
V2ViQ29yZTo6U3RyaW5nIHN0ciA9IHZhbHVlLT50b1N0cmluZyhleGVjKTsKICAKICAgICAvLyBD
aGVjayBvdXIgc2V0IG9mIGdlbmVyaWMgcHJvcGVydGllcyBmaXJzdC4KICAgICBIVE1MRWxlbWVu
dCAmZWxlbWVudCA9ICpzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCAqPihpbXBsKCkpOwpAQCAtMzI3
NSw3ICszMjc0LDcgQEAKICAgICB1bnNpZ25lZCBpbnQgdSA9IGFyZ3NbMV0tPnRvU3RyaW5nKGV4
ZWMpLnRvVUludDMyKCZvayk7CiAgICAgaWYgKG9rKQogICAgIHsKLSAgICAgIFdlYkNvcmU6OlN0
cmluZyBwc3RyID0gcy5kb21TdHJpbmcoKTsKKyAgICAgIFdlYkNvcmU6OlN0cmluZyBwc3RyID0g
czsKICAgICAgIE5vZGUgKm5vZGUgPSBjb2xsZWN0aW9uLm5hbWVkSXRlbShwc3RyKTsKICAgICAg
IHdoaWxlIChub2RlKSB7CiAgICAgICAgIGlmICghdSkKQEAgLTMyOTAsNyArMzI4OSw3IEBACiAK
IEpTVmFsdWUgKkpTSFRNTENvbGxlY3Rpb246OmdldE5hbWVkSXRlbXMoRXhlY1N0YXRlICpleGVj
LCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7Ci0gICAgRGVwcmVjYXRl
ZFZhbHVlTGlzdDwgUmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtcyA9IG1faW1wbC0+bmFtZWRJdGVt
cyhBdG9taWNTdHJpbmcocHJvcGVydHlOYW1lLmRvbVN0cmluZygpKSk7CisgICAgRGVwcmVjYXRl
ZFZhbHVlTGlzdDwgUmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtcyA9IG1faW1wbC0+bmFtZWRJdGVt
cyhwcm9wZXJ0eU5hbWUpOwogCiAgICAgaWYgKG5hbWVkSXRlbXMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTMzMTEsNyArMzMxMCw3IEBACiAgIGNhc2UgSlNI
VE1MQ29sbGVjdGlvbjo6SXRlbToKICAgICByZXR1cm4gdG9KUyhleGVjLGNvbGwuaXRlbShhcmdz
WzBdLT50b1VJbnQzMihleGVjKSkpOwogICBjYXNlIEpTSFRNTENvbGxlY3Rpb246OlRhZ3M6Ci0g
ICAgcmV0dXJuIHRvSlMoZXhlYywgY29sbC5iYXNlKCktPmdldEVsZW1lbnRzQnlUYWdOYW1lKGFy
Z3NbMF0tPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpKS5nZXQoKSk7CisgICAgcmV0dXJuIHRv
SlMoZXhlYywgY29sbC5iYXNlKCktPmdldEVsZW1lbnRzQnlUYWdOYW1lKGFyZ3NbMF0tPnRvU3Ry
aW5nKGV4ZWMpKS5nZXQoKSk7CiAgIGNhc2UgSlNIVE1MQ29sbGVjdGlvbjo6TmFtZWRJdGVtOgog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0hUTUxDb2xsZWN0aW9uICo+KHRoaXNPYmopLT5nZXRO
YW1lZEl0ZW1zKGV4ZWMsIElkZW50aWZpZXIoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykpKTsKICAg
ZGVmYXVsdDoKQEAgLTM0NTIsOSArMzQ1MSw5IEBACiAgICAgUmVmUHRyPFRleHQ+IHQgPSBtX2Rv
Yy0+Y3JlYXRlVGV4dE5vZGUoIiIpOwogICAgIG9wdC0+YXBwZW5kQ2hpbGQodCwgZXhjZXB0aW9u
KTsKICAgICBpZiAoZXhjZXB0aW9uID09IDAgJiYgc3ogPiAwKQotICAgICAgdC0+c2V0RGF0YShh
cmdzWzBdLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKSwgZXhjZXB0aW9uKTsgLy8gc2V0IHRo
ZSB0ZXh0CisgICAgICB0LT5zZXREYXRhKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLCBleGNlcHRp
b24pOyAvLyBzZXQgdGhlIHRleHQKICAgICBpZiAoZXhjZXB0aW9uID09IDAgJiYgc3ogPiAxKQot
ICAgICAgb3B0LT5zZXRWYWx1ZShhcmdzWzFdLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKSk7
CisgICAgICBvcHQtPnNldFZhbHVlKGFyZ3NbMV0tPnRvU3RyaW5nKGV4ZWMpKTsKICAgICBpZiAo
ZXhjZXB0aW9uID09IDAgJiYgc3ogPiAyKQogICAgICAgb3B0LT5zZXREZWZhdWx0U2VsZWN0ZWQo
YXJnc1syXS0+dG9Cb29sZWFuKGV4ZWMpKTsKICAgICBpZiAoZXhjZXB0aW9uID09IDAgJiYgc3og
PiAzKQpJbmRleDoga2h0bWwvZWNtYS9ranNfZXZlbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRt
bC9lY21hL2tqc19ldmVudHMuY3BwCShyZXZpc2lvbiAxMzM5MykKKysrIGtodG1sL2VjbWEva2pz
X2V2ZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSwxNiArMTExLDE2IEBACiAKICAgICAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICBKU09iamVjdCogZXhj
ZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCktPnRvT2JqZWN0KGV4ZWMpOwotICAgICAgICAgICAg
U3RyaW5nIG1lc3NhZ2UgPSBleGNlcHRpb24tPmdldChleGVjLCBtZXNzYWdlUHJvcGVydHlOYW1l
KS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCk7CisgICAgICAgICAgICBTdHJpbmcgbWVzc2Fn
ZSA9IGV4Y2VwdGlvbi0+Z2V0KGV4ZWMsIG1lc3NhZ2VQcm9wZXJ0eU5hbWUpLT50b1N0cmluZyhl
eGVjKTsKICAgICAgICAgICAgIGludCBsaW5lTnVtYmVyID0gZXhjZXB0aW9uLT5nZXQoZXhlYywg
ImxpbmUiKS0+dG9JbnQzMihleGVjKTsKLSAgICAgICAgICAgIFN0cmluZyBzb3VyY2VVUkwgPSBl
eGNlcHRpb24tPmdldChleGVjLCAic291cmNlVVJMIiktPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmlu
ZygpOworICAgICAgICAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IGV4Y2VwdGlvbi0+Z2V0KGV4ZWMs
ICJzb3VyY2VVUkwiKS0+dG9TdHJpbmcoZXhlYyk7CiAgICAgICAgICAgICBpZiAoSW50ZXJwcmV0
ZXI6OnNob3VsZFByaW50RXhjZXB0aW9ucygpKQogICAgICAgICAgICAgICAgIHByaW50ZigiKGV2
ZW50IGhhbmRsZXIpOiVzXG4iLCBtZXNzYWdlLmRlcHJlY2F0ZWRTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgICAgIGZyYW1lLT5hZGRNZXNzYWdlVG9Db25zb2xlKG1lc3NhZ2UsIGxp
bmVOdW1iZXIsIHNvdXJjZVVSTCk7CiAgICAgICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCFyZXR2YWwtPmlzVW5kZWZpbmVk
T3JOdWxsKCkgJiYgZXZlbnQtPnN0b3Jlc1Jlc3VsdEFzU3RyaW5nKCkpCi0gICAgICAgICAgICAg
ICAgZXZlbnQtPnN0b3JlUmVzdWx0KHJldHZhbC0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCkp
OworICAgICAgICAgICAgICAgIGV2ZW50LT5zdG9yZVJlc3VsdChyZXR2YWwtPnRvU3RyaW5nKGV4
ZWMpKTsKICAgICAgICAgICAgIGlmIChodG1sKSB7CiAgICAgICAgICAgICAgICAgYm9vbCByZXR2
YWxib29sOwogICAgICAgICAgICAgICAgIGlmIChyZXR2YWwtPmdldEJvb2xlYW4ocmV0dmFsYm9v
bCkgJiYgIXJldHZhbGJvb2wpCkBAIC0zOTUsNyArMzk1LDcgQEAKICAgRXZlbnQgJmV2ZW50ID0g
Km1faW1wbDsKICAgc3dpdGNoICh0b2tlbikgewogICBjYXNlIFR5cGU6Ci0gICAgcmV0dXJuIGpz
U3RyaW5nKGV2ZW50LnR5cGUoKS5kb21TdHJpbmcoKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKGV2
ZW50LnR5cGUoKSk7CiAgIGNhc2UgVGFyZ2V0OgogICBjYXNlIFNyY0VsZW1lbnQ6IC8qTVNJRSBl
eHRlbnNpb24gLSAidGhlIG9iamVjdCB0aGF0IGZpcmVkIHRoZSBldmVudCIqLwogICAgIHJldHVy
biB0b0pTKGV4ZWMsIGV2ZW50LnRhcmdldCgpKTsKQEAgLTQ3Nyw3ICs0NzcsNyBAQAogICAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAg
IGNhc2UgRE9NRXZlbnQ6OkluaXRFdmVudDoKLSAgICAgIGV2ZW50LmluaXRFdmVudChBdG9taWNT
dHJpbmcoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCkpLCBhcmdzWzFdLT50b0Jv
b2xlYW4oZXhlYyksIGFyZ3NbMl0tPnRvQm9vbGVhbihleGVjKSk7CisgICAgICBldmVudC5pbml0
RXZlbnQoQXRvbWljU3RyaW5nKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpKSwgYXJnc1sxXS0+dG9C
b29sZWFuKGV4ZWMpLCBhcmdzWzJdLT50b0Jvb2xlYW4oZXhlYykpOwogICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgIH07CiAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtNjEyLDcgKzYx
Miw3IEBACiAgIFVJRXZlbnQgJnVpRXZlbnQgPSAqc3RhdGljX2Nhc3Q8VUlFdmVudCAqPihzdGF0
aWNfY2FzdDxET01VSUV2ZW50ICo+KHRoaXNPYmopLT5pbXBsKCkpOwogICBzd2l0Y2ggKGlkKSB7
CiAgICAgY2FzZSBET01VSUV2ZW50OjpJbml0VUlFdmVudDoKLSAgICAgIHVpRXZlbnQuaW5pdFVJ
RXZlbnQoQXRvbWljU3RyaW5nKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpKSwK
KyAgICAgIHVpRXZlbnQuaW5pdFVJRXZlbnQoQXRvbWljU3RyaW5nKGFyZ3NbMF0tPnRvU3RyaW5n
KGV4ZWMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1sxXS0+dG9Cb29sZWFuKGV4
ZWMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzJdLT50b0Jvb2xlYW4oZXhlYyks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvQWJzdHJhY3RWaWV3KGFyZ3NbM10pLApAQCAt
NzEyLDcgKzcxMiw3IEBACiAgIE1vdXNlRXZlbnQgJm1vdXNlRXZlbnQgPSAqc3RhdGljX2Nhc3Q8
TW91c2VFdmVudCAqPihzdGF0aWNfY2FzdDxET01Nb3VzZUV2ZW50ICo+KHRoaXNPYmopLT5pbXBs
KCkpOwogICBzd2l0Y2ggKGlkKSB7CiAgICAgY2FzZSBET01Nb3VzZUV2ZW50OjpJbml0TW91c2VF
dmVudDoKLSAgICAgIG1vdXNlRXZlbnQuaW5pdE1vdXNlRXZlbnQoQXRvbWljU3RyaW5nKGFyZ3Nb
MF0tPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpKSwgLy8gdHlwZUFyZworICAgICAgbW91c2VF
dmVudC5pbml0TW91c2VFdmVudChBdG9taWNTdHJpbmcoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykp
LCAvLyB0eXBlQXJnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbMV0tPnRv
Qm9vbGVhbihleGVjKSwgLy8gY2FuQnViYmxlQXJnCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFyZ3NbMl0tPnRvQm9vbGVhbihleGVjKSwgLy8gY2FuY2VsYWJsZUFyZwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0b0Fic3RyYWN0VmlldyhhcmdzWzNdKSwgLy8gdmll
d0FyZwpAQCAtNzk1LDExICs3OTUsMTEgQEAKICAgS2V5Ym9hcmRFdmVudCAmZXZlbnQgPSAqc3Rh
dGljX2Nhc3Q8S2V5Ym9hcmRFdmVudCAqPihzdGF0aWNfY2FzdDxET01VSUV2ZW50ICo+KHRoaXNP
YmopLT5pbXBsKCkpOwogICBzd2l0Y2ggKGlkKSB7CiAgICAgY2FzZSBET01LZXlib2FyZEV2ZW50
OjpJbml0S2V5Ym9hcmRFdmVudDoKLSAgICAgIGV2ZW50LmluaXRLZXlib2FyZEV2ZW50KEF0b21p
Y1N0cmluZyhhcmdzWzBdLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKSksIC8vIHR5cGVBcmcK
KyAgICAgIGV2ZW50LmluaXRLZXlib2FyZEV2ZW50KEF0b21pY1N0cmluZyhhcmdzWzBdLT50b1N0
cmluZyhleGVjKSksIC8vIHR5cGVBcmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFy
Z3NbMV0tPnRvQm9vbGVhbihleGVjKSwgLy8gY2FuQnViYmxlQXJnCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcmdzWzJdLT50b0Jvb2xlYW4oZXhlYyksIC8vIGNhbmNlbGFibGVBcmcK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvQWJzdHJhY3RWaWV3KGFyZ3NbM10pLCAv
LyB2aWV3QXJnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzRdLT50b1N0cmlu
ZyhleGVjKS5kb21TdHJpbmcoKSwgLy8ga2V5SWRlbnRpZmllcgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXJnc1s0XS0+dG9TdHJpbmcoZXhlYyksIC8vIGtleUlkZW50aWZpZXIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbNV0tPnRvSW50MzIoZXhlYyksIC8vIGtl
eUxvY2F0aW9uQXJnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzZdLT50b0Jv
b2xlYW4oZXhlYyksIC8vIGN0cmxLZXlBcmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFyZ3NbN10tPnRvQm9vbGVhbihleGVjKSwgLy8gYWx0S2V5QXJnCkBAIC04ODIsMTIgKzg4Miwx
MiBAQAogICAgICAgICBjYXNlIERyb3BFZmZlY3Q6CiAgICAgICAgICAgICAvLyBjYW4gbmV2ZXIg
c2V0IHRoaXMgd2hlbiBub3QgZm9yIGRyYWdnaW5nLCB0aHVzIGdldHRpbmcgYWx3YXlzIHJldHVy
bnMgTlVMTCBzdHJpbmcKICAgICAgICAgICAgIGlmIChjbGlwYm9hcmQtPmlzRm9yRHJhZ2dpbmco
KSkKLSAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPnNldERyb3BFZmZlY3QodmFsdWUtPnRvU3Ry
aW5nKGV4ZWMpLmRvbVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPnNldERy
b3BFZmZlY3QodmFsdWUtPnRvU3RyaW5nKGV4ZWMpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEVmZmVjdEFsbG93ZWQ6CiAgICAgICAgICAgICAvLyBjYW4gbmV2ZXIgc2V0IHRo
aXMgd2hlbiBub3QgZm9yIGRyYWdnaW5nLCB0aHVzIGdldHRpbmcgYWx3YXlzIHJldHVybnMgTlVM
TCBzdHJpbmcKICAgICAgICAgICAgIGlmIChjbGlwYm9hcmQtPmlzRm9yRHJhZ2dpbmcoKSkKLSAg
ICAgICAgICAgICAgICBjbGlwYm9hcmQtPnNldEVmZmVjdEFsbG93ZWQodmFsdWUtPnRvU3RyaW5n
KGV4ZWMpLmRvbVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPnNldEVmZmVj
dEFsbG93ZWQodmFsdWUtPnRvU3RyaW5nKGV4ZWMpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
IH0KIH0KQEAgLTkwNCw3ICs5MDQsNyBAQAogICAgICAgICAgICAgICAgIGNiLT5jbGlwYm9hcmQt
PmNsZWFyQWxsRGF0YSgpOwogICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICAgICAgICAgICAgfSBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICAg
ICAgY2ItPmNsaXBib2FyZC0+Y2xlYXJEYXRhKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLmRvbVN0
cmluZygpKTsKKyAgICAgICAgICAgICAgICBjYi0+Y2xpcGJvYXJkLT5jbGVhckRhdGEoYXJnc1sw
XS0+dG9TdHJpbmcoZXhlYykpOwogICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihleGVjLCBTeW50YXhFcnJvciwgImNsZWFyRGF0YTogSW52YWxpZCBudW1iZXIgb2YgYXJndW1l
bnRzIik7CkBAIC05MTMsNyArOTEzLDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGFy
Z3Muc2l6ZSgpID09IDEpIHsKICAgICAgICAgICAgICAgICBib29sIHN1Y2Nlc3M7Ci0gICAgICAg
ICAgICAgICAgV2ViQ29yZTo6U3RyaW5nIHJlc3VsdCA9IGNiLT5jbGlwYm9hcmQtPmdldERhdGEo
YXJnc1swXS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCksIHN1Y2Nlc3MpOworICAgICAgICAg
ICAgICAgIFdlYkNvcmU6OlN0cmluZyByZXN1bHQgPSBjYi0+Y2xpcGJvYXJkLT5nZXREYXRhKGFy
Z3NbMF0tPnRvU3RyaW5nKGV4ZWMpLCBzdWNjZXNzKTsKICAgICAgICAgICAgICAgICBpZiAoc3Vj
Y2VzcykgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNTdHJpbmcocmVzdWx0KTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtOTI1LDcgKzkyNSw3IEBACiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDbGlwYm9hcmQ6OlNldERhdGE6CiAgICAgICAgICAgICBpZiAoYXJncy5zaXpl
KCkgPT0gMikgewotICAgICAgICAgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oY2ItPmNsaXBib2Fy
ZC0+c2V0RGF0YShhcmdzWzBdLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKSwgYXJnc1sxXS0+
dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4ganNC
b29sZWFuKGNiLT5jbGlwYm9hcmQtPnNldERhdGEoYXJnc1swXS0+dG9TdHJpbmcoZXhlYyksIGFy
Z3NbMV0tPnRvU3RyaW5nKGV4ZWMpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yLCAic2V0RGF0YTogSW52
YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIik7CiAgICAgICAgICAgICB9CkluZGV4OiBraHRtbC9l
Y21hL2tqc193aW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL2VjbWEva2pzX3dpbmRvdy5j
cHAJKHJldmlzaW9uIDEzMzkzKQorKysga2h0bWwvZWNtYS9ranNfd2luZG93LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcxLDcgKzQ3MSw3IEBACiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gbWFwOwogCi0gICAgRGVwcmVjYXRlZFN0cmluZ0xpc3QgZmVhdHVyZXMgPSBEZXByZWNhdGVk
U3RyaW5nTGlzdDo6c3BsaXQoJzsnLCBmZWF0dXJlc0FyZy0+dG9TdHJpbmcoZXhlYykuZGVwcmVj
YXRlZFN0cmluZygpKTsKKyAgICBEZXByZWNhdGVkU3RyaW5nTGlzdCBmZWF0dXJlcyA9IERlcHJl
Y2F0ZWRTdHJpbmdMaXN0OjpzcGxpdCgnOycsIGZlYXR1cmVzQXJnLT50b1N0cmluZyhleGVjKSk7
CiAgICAgRGVwcmVjYXRlZFN0cmluZ0xpc3Q6OkNvbnN0SXRlcmF0b3IgZW5kID0gZmVhdHVyZXMu
ZW5kKCk7CiAgICAgZm9yIChEZXByZWNhdGVkU3RyaW5nTGlzdDo6Q29uc3RJdGVyYXRvciBpdCA9
IGZlYXR1cmVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBEZXByZWNhdGVk
U3RyaW5nIHMgPSAqaXQ7CkBAIC02NDAsNyArNjQwLDcgQEAKICAgICB3YXJncy5sb2NhdGlvbkJh
clZpc2libGUgPSBmYWxzZTsKICAgICB3YXJncy5mdWxsc2NyZWVuID0gZmFsc2U7CiAgICAgCi0g
ICAgRnJhbWUgKmRpYWxvZ1BhcnQgPSBjcmVhdGVOZXdXaW5kb3coZXhlYywgb3BlbmVyV2luZG93
LCBVUkwuZGVwcmVjYXRlZFN0cmluZygpLCAiIiwgd2FyZ3MsIGFyZ3NbMV0pOworICAgIEZyYW1l
ICpkaWFsb2dQYXJ0ID0gY3JlYXRlTmV3V2luZG93KGV4ZWMsIG9wZW5lcldpbmRvdywgVVJMLCAi
Iiwgd2FyZ3MsIGFyZ3NbMV0pOwogICAgIGlmICghZGlhbG9nUGFydCkKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAKQEAgLTg3Niw3ICs4NzYsNyBAQAogCiBKU1ZhbHVlKiBXaW5kb3c6
OmNoaWxkRnJhbWVHZXR0ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICByZXR1cm4g
cmV0cmlldmUoc3RhdGljX2Nhc3Q8V2luZG93Kj4oc2xvdC5zbG90QmFzZSgpKS0+bV9mcmFtZS0+
dHJlZSgpLT5jaGlsZChBdG9taWNTdHJpbmcocHJvcGVydHlOYW1lLmRvbVN0cmluZygpKSkpOwor
ICAgIHJldHVybiByZXRyaWV2ZShzdGF0aWNfY2FzdDxXaW5kb3cqPihzbG90LnNsb3RCYXNlKCkp
LT5tX2ZyYW1lLT50cmVlKCktPmNoaWxkKEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9
CiAKIEpTVmFsdWUqIFdpbmRvdzo6bmFtZWRGcmFtZUdldHRlcihFeGVjU3RhdGUqLCBKU09iamVj
dCosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90KQpAQCAtODg1LDcgKzg4NSw3IEBACiAgICAgLy8gVGhlcmUncyBubyBwb2ludCBpbiBjaGVj
a2luZyBmb3IgY2hpbGQgZnJhbWVzIHR3aWNlLiBJIHN1c3BlY3QgdGhpcyBzaG91bGQgYmUgdXNp
bmcKICAgICAvLyBmaW5kIGluc3RlYWQgb2YgImNoaWxkIi4gQnV0IEkgZG9uJ3Qgd2FudCB0byBj
aGFuZ2UgdGhlIGJlaGF2aW9yIHdpdGhvdXQgdGVzdGluZywKICAgICAvLyBzbyBJJ20gbGVhdmlu
ZyB0aGlzIGFzLWlzIGZvciBub3cuCi0gICAgcmV0dXJuIHJldHJpZXZlKHN0YXRpY19jYXN0PFdp
bmRvdyo+KHNsb3Quc2xvdEJhc2UoKSktPm1fZnJhbWUtPnRyZWUoKS0+Y2hpbGQoQXRvbWljU3Ry
aW5nKHByb3BlcnR5TmFtZS5kb21TdHJpbmcoKSkpKTsKKyAgICByZXR1cm4gcmV0cmlldmUoc3Rh
dGljX2Nhc3Q8V2luZG93Kj4oc2xvdC5zbG90QmFzZSgpKS0+bV9mcmFtZS0+dHJlZSgpLT5jaGls
ZChBdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpOwogfQogCiBKU1ZhbHVlKiBXaW5kb3c6Omlu
ZGV4R2V0dGVyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0
IFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTg5OSw3ICs4OTksNyBAQAogICBEb2N1bWVudCAqZG9j
ID0gdGhpc09iai0+bV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgQVNTRVJUKHRoaXNPYmotPmlzU2Fm
ZVNjcmlwdChleGVjKSAmJiBkb2MgJiYgZG9jLT5pc0hUTUxEb2N1bWVudCgpKTsKIAotICBTdHJp
bmcgbmFtZSA9IHByb3BlcnR5TmFtZS5kb21TdHJpbmcoKTsKKyAgU3RyaW5nIG5hbWUgPSBwcm9w
ZXJ0eU5hbWU7CiAgIFJlZlB0cjxXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbj4gY29sbGVjdGlvbiA9
IGRvYy0+d2luZG93TmFtZWRJdGVtcyhuYW1lKTsKICAgaWYgKGNvbGxlY3Rpb24tPmxlbmd0aCgp
ID09IDEpCiAgICAgcmV0dXJuIHRvSlMoZXhlYywgY29sbGVjdGlvbi0+Zmlyc3RJdGVtKCkpOwpA
QCAtOTQwLDcgKzk0MCw3IEBACiAgIC8vIG5hbWluZyBmcmFtZXMgdGhpbmdzIHRoYXQgY29uZmxp
Y3Qgd2l0aCB3aW5kb3cgcHJvcGVydGllcyB0aGF0CiAgIC8vIGFyZSBpbiBNb3ogYnV0IG5vdCBJ
RS4gU2luY2Ugd2UgaGF2ZSBzb21lIG9mIHRoZXNlLCB3ZSBoYXZlIHRvIGRvCiAgIC8vIGl0IHRo
ZSBNb3ogd2F5LgotICBBdG9taWNTdHJpbmcgYXRvbWljUHJvcGVydHlOYW1lID0gQXRvbWljU3Ry
aW5nKHByb3BlcnR5TmFtZS5kb21TdHJpbmcoKSk7CisgIEF0b21pY1N0cmluZyBhdG9taWNQcm9w
ZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWU7CiAgIGlmIChtX2ZyYW1lLT50cmVlKCktPmNoaWxkKGF0
b21pY1Byb3BlcnR5TmFtZSkpIHsKICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBjaGlsZEZyYW1l
R2V0dGVyKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwMjEsMTUgKzEwMjEsMTUgQEAKICAgewog
ICAgIHN3aXRjaCggZW50cnktPnZhbHVlICkgewogICAgIGNhc2UgU3RhdHVzOgotICAgICAgbV9m
cmFtZS0+c2V0SlNTdGF0dXNCYXJUZXh0KHZhbHVlLT50b1N0cmluZyhleGVjKS5kZXByZWNhdGVk
U3RyaW5nKCkpOworICAgICAgbV9mcmFtZS0+c2V0SlNTdGF0dXNCYXJUZXh0KHZhbHVlLT50b1N0
cmluZyhleGVjKSk7CiAgICAgICByZXR1cm47CiAgICAgY2FzZSBEZWZhdWx0U3RhdHVzOgotICAg
ICAgbV9mcmFtZS0+c2V0SlNEZWZhdWx0U3RhdHVzQmFyVGV4dCh2YWx1ZS0+dG9TdHJpbmcoZXhl
YykuZGVwcmVjYXRlZFN0cmluZygpKTsKKyAgICAgIG1fZnJhbWUtPnNldEpTRGVmYXVsdFN0YXR1
c0JhclRleHQodmFsdWUtPnRvU3RyaW5nKGV4ZWMpKTsKICAgICAgIHJldHVybjsKICAgICBjYXNl
IExvY2F0aW9uXzogewogICAgICAgRnJhbWUqIHAgPSBXaW5kb3c6OnJldHJpZXZlQWN0aXZlKGV4
ZWMpLT5tX2ZyYW1lOwogICAgICAgaWYgKHApIHsKLSAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBk
c3RVcmwgPSBwLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh2YWx1ZS0+dG9TdHJpbmcoZXhlYyku
ZGVwcmVjYXRlZFN0cmluZygpKTsKKyAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBkc3RVcmwgPSBw
LT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChEZXByZWNhdGVkU3RyaW5nKHZhbHVlLT50b1N0cmlu
ZyhleGVjKSkpOwogICAgICAgICBpZiAoIWRzdFVybC5zdGFydHNXaXRoKCJqYXZhc2NyaXB0OiIs
IGZhbHNlKSB8fCBpc1NhZmVTY3JpcHQoZXhlYykpCiAgICAgICAgIHsKICAgICAgICAgICBib29s
IHVzZXJHZXN0dXJlID0gc3RhdGljX2Nhc3Q8U2NyaXB0SW50ZXJwcmV0ZXIgKj4oZXhlYy0+ZHlu
YW1pY0ludGVycHJldGVyKCkpLT53YXNSdW5CeVVzZXJHZXN0dXJlKCk7CkBAIC0xMTQ5LDcgKzEx
NDksNyBAQAogICAgICAgcmV0dXJuOwogICAgIGNhc2UgTmFtZToKICAgICAgIGlmIChpc1NhZmVT
Y3JpcHQoZXhlYykpCi0gICAgICAgIG1fZnJhbWUtPnRyZWUoKS0+c2V0TmFtZSh2YWx1ZS0+dG9T
dHJpbmcoZXhlYykuZGVwcmVjYXRlZFN0cmluZygpKTsKKyAgICAgICAgbV9mcmFtZS0+dHJlZSgp
LT5zZXROYW1lKHZhbHVlLT50b1N0cmluZyhleGVjKSk7CiAgICAgICByZXR1cm47CiAgICAgZGVm
YXVsdDoKICAgICAgIGJyZWFrOwpAQCAtMTUzMiw3ICsxNTMyLDcgQEAKICAgRnJhbWVWaWV3ICp3
aWRnZXQgPSBmcmFtZS0+dmlldygpOwogICBKU1ZhbHVlICp2ID0gYXJnc1swXTsKICAgVVN0cmlu
ZyBzID0gdi0+dG9TdHJpbmcoZXhlYyk7Ci0gIFN0cmluZyBzdHIgPSBzLmRvbVN0cmluZygpOwor
ICBTdHJpbmcgc3RyID0gczsKICAgU3RyaW5nIHN0cjI7CiAKICAgc3dpdGNoIChpZCkgewpAQCAt
MTU0OSw3ICsxNTQ5LDcgQEAKICAgewogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQo
KSkKICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVSZW5kZXJpbmcoKTsKLSAgICBTdHJp
bmcgbWVzc2FnZSA9IGFyZ3Muc2l6ZSgpID49IDIgPyBhcmdzWzFdLT50b1N0cmluZyhleGVjKS5k
b21TdHJpbmcoKSA6IFN0cmluZygpOworICAgIFN0cmluZyBtZXNzYWdlID0gYXJncy5zaXplKCkg
Pj0gMiA/IGFyZ3NbMV0tPnRvU3RyaW5nKGV4ZWMpIDogVVN0cmluZygpOwogICAgIGJvb2wgb2sg
PSBmcmFtZS0+cnVuSmF2YVNjcmlwdFByb21wdChzdHIsIG1lc3NhZ2UsIHN0cjIpOwogICAgIGlm
IChvaykKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKHN0cjIpOwpAQCAtMTU1OSwxMiArMTU1OSwx
MiBAQAogICBjYXNlIFdpbmRvdzo6T3BlbjoKICAgewogICAgICAgQXRvbWljU3RyaW5nIGZyYW1l
TmFtZSA9IGFyZ3NbMV0tPmlzVW5kZWZpbmVkT3JOdWxsKCkKLSAgICAgICAgPyAiX2JsYW5rIiA6
IEF0b21pY1N0cmluZyhhcmdzWzFdLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKSk7CisgICAg
ICAgID8gIl9ibGFuayIgOiBBdG9taWNTdHJpbmcoYXJnc1sxXS0+dG9TdHJpbmcoZXhlYykpOwog
ICAgICAgaWYgKCFhbGxvd1BvcFVwKGV4ZWMsIHdpbmRvdykgJiYgIWZyYW1lLT50cmVlKCktPmZp
bmQoZnJhbWVOYW1lKSkKICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgIAog
ICAgICAgV2luZG93QXJncyB3aW5kb3dBcmdzOwotICAgICAgU3RyaW5nIGZlYXR1cmVzID0gYXJn
c1syXS0+aXNVbmRlZmluZWRPck51bGwoKSA/IFN0cmluZygpIDogYXJnc1syXS0+dG9TdHJpbmco
ZXhlYykuZG9tU3RyaW5nKCk7CisgICAgICBTdHJpbmcgZmVhdHVyZXMgPSBhcmdzWzJdLT5pc1Vu
ZGVmaW5lZE9yTnVsbCgpID8gVVN0cmluZygpIDogYXJnc1syXS0+dG9TdHJpbmcoZXhlYyk7CiAg
ICAgICBwYXJzZVdpbmRvd0ZlYXR1cmVzKGZlYXR1cmVzLCB3aW5kb3dBcmdzKTsKICAgICAgIGNv
bnN0cmFpblRvVmlzaWJsZShzY3JlZW5SZWN0KHdpZGdldCksIHdpbmRvd0FyZ3MpOwogICAgICAg
CkBAIC0xNzg1LDE0ICsxNzg1LDE0IEBACiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICAgICAgaWYgKEpTRXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIgPSBXaW5kb3c6OnJldHJp
ZXZlQWN0aXZlKGV4ZWMpLT5nZXRKU0V2ZW50TGlzdGVuZXIoYXJnc1sxXSkpCiAgICAgICAgICAg
ICBpZiAoRG9jdW1lbnQgKmRvYyA9IGZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgICAg
IGRvYy0+YWRkV2luZG93RXZlbnRMaXN0ZW5lcihBdG9taWNTdHJpbmcoYXJnc1swXS0+dG9TdHJp
bmcoZXhlYykuZG9tU3RyaW5nKCkpLCBsaXN0ZW5lciwgYXJnc1syXS0+dG9Cb29sZWFuKGV4ZWMp
KTsKKyAgICAgICAgICAgICAgICBkb2MtPmFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoQXRvbWljU3Ry
aW5nKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpKSwgbGlzdGVuZXIsIGFyZ3NbMl0tPnRvQm9vbGVh
bihleGVjKSk7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICBjYXNlIFdpbmRvdzo6
UmVtb3ZlRXZlbnRMaXN0ZW5lcjoKICAgICAgICAgaWYgKCF3aW5kb3ctPmlzU2FmZVNjcmlwdChl
eGVjKSkKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICBpZiAoSlNF
dmVudExpc3RlbmVyICpsaXN0ZW5lciA9IFdpbmRvdzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmdl
dEpTRXZlbnRMaXN0ZW5lcihhcmdzWzFdKSkKICAgICAgICAgICAgIGlmIChEb2N1bWVudCAqZG9j
ID0gZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgICAgICAgICAgZG9jLT5yZW1vdmVXaW5kb3dF
dmVudExpc3RlbmVyKEF0b21pY1N0cmluZyhhcmdzWzBdLT50b1N0cmluZyhleGVjKS5kb21TdHJp
bmcoKSksIGxpc3RlbmVyLCBhcmdzWzJdLT50b0Jvb2xlYW4oZXhlYykpOworICAgICAgICAgICAg
ICAgIGRvYy0+cmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcihBdG9taWNTdHJpbmcoYXJnc1swXS0+
dG9TdHJpbmcoZXhlYykpLCBsaXN0ZW5lciwgYXJnc1syXS0+dG9Cb29sZWFuKGV4ZWMpKTsKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgIGNhc2UgV2luZG93OjpTaG93TW9kYWxEaWFs
b2c6CiAgICAgcmV0dXJuIHNob3dNb2RhbERpYWxvZyhleGVjLCB3aW5kb3csIGFyZ3MpOwpAQCAt
MTgyNyw3ICsxODI3LDcgQEAKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkg
ewogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24o
KS0+dG9PYmplY3QoZXhlYyk7CiAgICAgICAgICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24o
KTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IGV4Y2VwdGlvbi0+Z2V0KGV4ZWMs
IG1lc3NhZ2VQcm9wZXJ0eU5hbWUpLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKTsKKyAgICAg
ICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IGV4Y2VwdGlvbi0+Z2V0KGV4ZWMsIG1lc3NhZ2VQ
cm9wZXJ0eU5hbWUpLT50b1N0cmluZyhleGVjKTsKICAgICAgICAgICAgICAgICBpbnQgbGluZU51
bWJlciA9IGV4Y2VwdGlvbi0+Z2V0KGV4ZWMsICJsaW5lIiktPnRvSW50MzIoZXhlYyk7CiAgICAg
ICAgICAgICAgICAgaWYgKEludGVycHJldGVyOjpzaG91bGRQcmludEV4Y2VwdGlvbnMoKSkKICAg
ICAgICAgICAgICAgICAgICAgcHJpbnRmKCIodGltZXIpOiVzXG4iLCBtZXNzYWdlLmRlcHJlY2F0
ZWRTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTE4NzIsNyArMTg3Miw3IEBACiAKIGludCBX
aW5kb3c6Omluc3RhbGxUaW1lb3V0KGNvbnN0IFVTdHJpbmcmIGhhbmRsZXIsIGludCB0LCBib29s
IHNpbmdsZVNob3QpCiB7Ci0gICAgcmV0dXJuIGluc3RhbGxUaW1lb3V0KG5ldyBTY2hlZHVsZWRB
Y3Rpb24oaGFuZGxlci5kZXByZWNhdGVkU3RyaW5nKCkpLCB0LCBzaW5nbGVTaG90KTsKKyAgICBy
ZXR1cm4gaW5zdGFsbFRpbWVvdXQobmV3IFNjaGVkdWxlZEFjdGlvbihoYW5kbGVyKSwgdCwgc2lu
Z2xlU2hvdCk7CiB9CiAKIGludCBXaW5kb3c6Omluc3RhbGxUaW1lb3V0KEpTVmFsdWUqIGZ1bmMs
IGNvbnN0IExpc3QmIGFyZ3MsIGludCB0LCBib29sIHNpbmdsZVNob3QpCkBAIC0yMDA1LDcgKzIw
MDUsNyBAQAogICAKIEpTVmFsdWUqIEZyYW1lQXJyYXk6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiwg
SlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKLSAgICByZXR1cm4gV2luZG93OjpyZXRyaWV2ZShzdGF0aWNfY2FzdDxG
cmFtZUFycmF5Kj4oc2xvdC5zbG90QmFzZSgpKS0+bV9mcmFtZS0+dHJlZSgpLT5jaGlsZChBdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lLmRvbVN0cmluZygpKSkpOworICAgIHJldHVybiBXaW5kb3c6
OnJldHJpZXZlKHN0YXRpY19jYXN0PEZyYW1lQXJyYXkqPihzbG90LnNsb3RCYXNlKCkpLT5tX2Zy
YW1lLT50cmVlKCktPmNoaWxkKEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKIGJv
b2wgRnJhbWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC0yMDIyLDcg
KzIwMjIsNyBAQAogICB9CiAKICAgLy8gY2hlY2sgZm9yIHRoZSBuYW1lIG9yIG51bWJlcgotICBp
ZiAobV9mcmFtZS0+dHJlZSgpLT5jaGlsZChBdG9taWNTdHJpbmcocHJvcGVydHlOYW1lLmRvbVN0
cmluZygpKSkpIHsKKyAgaWYgKG1fZnJhbWUtPnRyZWUoKS0+Y2hpbGQocHJvcGVydHlOYW1lKSkg
ewogICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIG5hbWVHZXR0ZXIpOwogICAgIHJldHVybiB0cnVl
OwogICB9CkBAIC0yMTIyLDcgKzIxMjIsNyBAQAogICBpZiAoIW1fZnJhbWUpCiAgICAgcmV0dXJu
OwogCi0gIERlcHJlY2F0ZWRTdHJpbmcgc3RyID0gdi0+dG9TdHJpbmcoZXhlYykuZGVwcmVjYXRl
ZFN0cmluZygpOworICBEZXByZWNhdGVkU3RyaW5nIHN0ciA9IHYtPnRvU3RyaW5nKGV4ZWMpOwog
ICBLVVJMIHVybCA9IG1fZnJhbWUtPnVybCgpOwogICBjb25zdCBIYXNoRW50cnkgKmVudHJ5ID0g
TG9va3VwOjpmaW5kRW50cnkoJkxvY2F0aW9uVGFibGUsIHApOwogICBpZiAoZW50cnkpCkBAIC0y
MjAzLDcgKzIyMDMsNyBAQAogICAgIHN3aXRjaCAoaWQpIHsKICAgICBjYXNlIExvY2F0aW9uOjpS
ZXBsYWNlOgogICAgIHsKLSAgICAgIERlcHJlY2F0ZWRTdHJpbmcgc3RyID0gYXJnc1swXS0+dG9T
dHJpbmcoZXhlYykuZGVwcmVjYXRlZFN0cmluZygpOworICAgICAgRGVwcmVjYXRlZFN0cmluZyBz
dHIgPSBhcmdzWzBdLT50b1N0cmluZyhleGVjKTsKICAgICAgIEZyYW1lKiBwID0gV2luZG93Ojpy
ZXRyaWV2ZUFjdGl2ZShleGVjKS0+ZnJhbWUoKTsKICAgICAgIGlmICggcCApIHsKICAgICAgICAg
Y29uc3QgV2luZG93KiB3aW5kb3cgPSBXaW5kb3c6OnJldHJpZXZlV2luZG93KGZyYW1lKTsKQEAg
LTIyMjksNyArMjIyOSw3IEBACiAgICAgICAgIEZyYW1lICpwID0gV2luZG93OjpyZXRyaWV2ZUFj
dGl2ZShleGVjKS0+ZnJhbWUoKTsKICAgICAgICAgaWYgKHApIHsKICAgICAgICAgICAgIGNvbnN0
IFdpbmRvdyAqd2luZG93ID0gV2luZG93OjpyZXRyaWV2ZVdpbmRvdyhmcmFtZSk7Ci0gICAgICAg
ICAgICBEZXByZWNhdGVkU3RyaW5nIGRzdFVybCA9IHAtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJM
KGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLmRlcHJlY2F0ZWRTdHJpbmcoKSk7CisgICAgICAgICAg
ICBEZXByZWNhdGVkU3RyaW5nIGRzdFVybCA9IHAtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKERl
cHJlY2F0ZWRTdHJpbmcoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykpKTsKICAgICAgICAgICAgIGlm
ICghZHN0VXJsLnN0YXJ0c1dpdGgoImphdmFzY3JpcHQ6IiwgZmFsc2UpIHx8ICh3aW5kb3cgJiYg
d2luZG93LT5pc1NhZmVTY3JpcHQoZXhlYykpKSB7CiAgICAgICAgICAgICAgICAgYm9vbCB1c2Vy
R2VzdHVyZSA9IHN0YXRpY19jYXN0PFNjcmlwdEludGVycHJldGVyICo+KGV4ZWMtPmR5bmFtaWNJ
bnRlcnByZXRlcigpKS0+d2FzUnVuQnlVc2VyR2VzdHVyZSgpOwogICAgICAgICAgICAgICAgIC8v
IFdlIHdhbnQgYSBuZXcgaGlzdG9yeSBpdGVtIGlmIHRoaXMgSlMgd2FzIGNhbGxlZCB2aWEgYSB1
c2VyIGdlc3R1cmUKQEAgLTIzNTgsNyArMjM1OCw3IEBACiAgICAgICAgICAgICAgICAgcy5zZXRQ
b3NpdGlvbih0b05vZGUoYXJnc1swXSksIGFyZ3NbMV0tPnRvSW50MzIoZXhlYykpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTZWxlY3Rpb246Ok1vZGlmeToKLSAg
ICAgICAgICAgICAgICBzLm1vZGlmeShhcmdzWzBdLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmco
KSwgYXJnc1sxXS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCksIGFyZ3NbMl0tPnRvU3RyaW5n
KGV4ZWMpLmRvbVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBzLm1vZGlmeShhcmdzWzBdLT50
b1N0cmluZyhleGVjKSwgYXJnc1sxXS0+dG9TdHJpbmcoZXhlYyksIGFyZ3NbMl0tPnRvU3RyaW5n
KGV4ZWMpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU2VsZWN0
aW9uOjpHZXRSYW5nZUF0OgogICAgICAgICAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIHMuZ2V0
UmFuZ2VBdChhcmdzWzBdLT50b0ludDMyKGV4ZWMpKS5nZXQoKSk7CkluZGV4OiBraHRtbC9lY21h
L2tqc19iaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9lY21hL2tqc19iaW5kaW5nLmNw
cAkocmV2aXNpb24gMTMzOTMpCisrKyBraHRtbC9lY21hL2tqc19iaW5kaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsOCArMjgsOSBAQAogCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2lu
Y2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiZG9tMl9ldmVudHNpbXBsLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgImRvbTJfZXZl
bnRzaW1wbC5oIgogI2luY2x1ZGUgImtqc19kb20uaCIKICNpbmNsdWRlICJranNfd2luZG93Lmgi
CiAjaW5jbHVkZSA8a2pzL2NvbGxlY3Rvci5oPgpAQCAtMjMzLDczICsyMzQsNiBAQAogCiAvLy8v
Ly8KIAotVVN0cmluZzo6VVN0cmluZyhjb25zdCBEZXByZWNhdGVkU3RyaW5nICZkKQotewotICAv
LyByZWludGVycHJldF9jYXN0IGlzIHVnbHkgYnV0IGluIHRoaXMgY2FzZSBzYWZlLCBzaW5jZSBR
Q2hhciBhbmQgVUNoYXIgaGF2ZSB0aGUgc2FtZSBtZW1vcnkgbGF5b3V0Ci0gIG1fcmVwID0gVVN0
cmluZzo6UmVwOjpjcmVhdGVDb3B5aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIgKj4o
ZC51bmljb2RlKCkpLCBkLmxlbmd0aCgpKTsKLX0KLQotVVN0cmluZzo6VVN0cmluZyhjb25zdCBT
dHJpbmcgJmQpCi17Ci0gIGlmIChkLmlzTnVsbCgpKSB7Ci0gICAgbV9yZXAgPSAmUmVwOjpudWxs
OwotICAgIHJldHVybjsKLSAgfQotICAvLyByZWludGVycHJldF9jYXN0IGlzIHVnbHkgYnV0IGlu
IHRoaXMgY2FzZSBzYWZlLCBzaW5jZSBRQ2hhciBhbmQgVUNoYXIgaGF2ZSB0aGUgc2FtZSBtZW1v
cnkgbGF5b3V0Ci0gIG1fcmVwID0gVVN0cmluZzo6UmVwOjpjcmVhdGVDb3B5aW5nKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUNoYXIgKj4oZC51bmljb2RlKCkpLCBkLmxlbmd0aCgpKTsKLX0KLQot
VVN0cmluZzo6VVN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcgJmQpCi17Ci0gIGlmIChkLmlzTnVs
bCgpKSB7Ci0gICAgbV9yZXAgPSAmUmVwOjpudWxsOwotICAgIHJldHVybjsKLSAgfQotICAvLyBy
ZWludGVycHJldF9jYXN0IGlzIHVnbHkgYnV0IGluIHRoaXMgY2FzZSBzYWZlLCBzaW5jZSBRQ2hh
ciBhbmQgVUNoYXIgaGF2ZSB0aGUgc2FtZSBtZW1vcnkgbGF5b3V0Ci0gIG1fcmVwID0gVVN0cmlu
Zzo6UmVwOjpjcmVhdGVDb3B5aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIgKj4oZC5k
b21TdHJpbmcoKS51bmljb2RlKCkpLCBkLmRvbVN0cmluZygpLmxlbmd0aCgpKTsKLX0KLQotU3Ry
aW5nIFVTdHJpbmc6OmRvbVN0cmluZygpIGNvbnN0Ci17Ci0gIGlmIChpc051bGwoKSkKLSAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci0gIGlmIChpc0VtcHR5KCkpCi0gICAgcmV0dXJuICIiOwotICByZXR1
cm4gU3RyaW5nKChRQ2hhciopIGRhdGEoKSwgc2l6ZSgpKTsKLX0KLQotRGVwcmVjYXRlZFN0cmlu
ZyBVU3RyaW5nOjpkZXByZWNhdGVkU3RyaW5nKCkgY29uc3QKLXsKLSAgaWYgKGlzTnVsbCgpKQot
ICAgIHJldHVybiBEZXByZWNhdGVkU3RyaW5nKCk7Ci0gIGlmIChpc0VtcHR5KCkpCi0gICAgcmV0
dXJuICIiOwotICByZXR1cm4gRGVwcmVjYXRlZFN0cmluZygoUUNoYXIqKSBkYXRhKCksIHNpemUo
KSk7Ci19Ci0KLVFDb25zdFN0cmluZyBVU3RyaW5nOjpxY29uc3RzdHJpbmcoKSBjb25zdAotewot
ICByZXR1cm4gUUNvbnN0U3RyaW5nKChRQ2hhciopIGRhdGEoKSwgc2l6ZSgpKTsKLX0KLQotU3Ry
aW5nIElkZW50aWZpZXI6OmRvbVN0cmluZygpIGNvbnN0Ci17Ci0gIGlmIChpc051bGwoKSkKLSAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0gIGlmIChpc0VtcHR5KCkpCi0gICAgcmV0dXJuICIiOwotICBy
ZXR1cm4gU3RyaW5nKChRQ2hhciopIGRhdGEoKSwgc2l6ZSgpKTsKLX0KLQotRGVwcmVjYXRlZFN0
cmluZyBJZGVudGlmaWVyOjpkZXByZWNhdGVkU3RyaW5nKCkgY29uc3QKLXsKLSAgaWYgKGlzTnVs
bCgpKQotICAgIHJldHVybiBEZXByZWNhdGVkU3RyaW5nKCk7Ci0gIGlmIChpc0VtcHR5KCkpCi0g
ICAgcmV0dXJuICIiOwotICByZXR1cm4gRGVwcmVjYXRlZFN0cmluZygoUUNoYXIqKSBkYXRhKCks
IHNpemUoKSk7Ci19Ci0KIEpTVmFsdWUgKmpzU3RyaW5nT3JOdWxsKGNvbnN0IFN0cmluZyAmcykK
IHsKICAgICBpZiAocy5pc051bGwoKSkKQEAgLTMxOCw3ICsyNTIsNyBAQAogewogICAgIGlmICh2
YWwtPmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIHZhbC0+
dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCk7CisgICAgcmV0dXJuIHZhbC0+dG9TdHJpbmcoZXhl
Yyk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZXhjZXB0aW9uTmFtZXNbXSA9IHsK
SW5kZXg6IGtodG1sL2VjbWEva2pzX2RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9r
anNfZG9tLmNwcAkocmV2aXNpb24gMTMzOTMpCisrKyBraHRtbC9lY21hL2tqc19kb20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDksMTAgKzI0OSwxMCBAQAogICBOb2RlICZub2RlID0gKm1faW1w
bDsKICAgc3dpdGNoICh0b2tlbikgewogICBjYXNlIE5vZGVWYWx1ZToKLSAgICBub2RlLnNldE5v
ZGVWYWx1ZSh2YWx1ZS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCksIGV4Y2VwdGlvbik7Cisg
ICAgbm9kZS5zZXROb2RlVmFsdWUodmFsdWUtPnRvU3RyaW5nKGV4ZWMpLCBleGNlcHRpb24pOwog
ICAgIGJyZWFrOwogICBjYXNlIFByZWZpeDoKLSAgICBub2RlLnNldFByZWZpeCh2YWx1ZS0+dG9T
dHJpbmcoZXhlYykuZG9tU3RyaW5nKCkuaW1wbCgpLCBleGNlcHRpb24pOworICAgIG5vZGUuc2V0
UHJlZml4KHZhbHVlLT50b1N0cmluZyhleGVjKSwgZXhjZXB0aW9uKTsKICAgICBicmVhazsKICAg
Y2FzZSBUZXh0Q29udGVudDoKICAgICBub2RlLnNldFRleHRDb250ZW50KHZhbHVlVG9TdHJpbmdX
aXRoTnVsbENoZWNrKGV4ZWMsIHZhbHVlKSwgZXhjZXB0aW9uKTsKQEAgLTI3Miw3ICsyNzIsNyBA
QAogewogICBpZiAoIW1faW1wbCkKICAgICByZXR1cm4gIm51bGwiOwotICByZXR1cm4gIltvYmpl
Y3QgIiArIChtX2ltcGwtPmlzRWxlbWVudE5vZGUoKSA/IG1faW1wbC0+bm9kZU5hbWUoKSA6IGNs
YXNzTmFtZSgpKSArICJdIjsKKyAgcmV0dXJuICJbb2JqZWN0ICIgKyAobV9pbXBsLT5pc0VsZW1l
bnROb2RlKCkgPyBVU3RyaW5nKG1faW1wbC0+bm9kZU5hbWUoKSkgOiBjbGFzc05hbWUoKSkgKyAi
XSI7CiB9CiAKIEpTVmFsdWUgKkRPTU5vZGVQcm90b0Z1bmM6OmNhbGxBc0Z1bmN0aW9uKEV4ZWNT
dGF0ZSAqZXhlYywgSlNPYmplY3QgKnRoaXNPYmosIGNvbnN0IExpc3QgJmFyZ3MpCkBAIC0yOTIs
NyArMjkyLDcgQEAKICAgICAgIG5vZGUubm9ybWFsaXplKCk7CiAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKICAgICBjYXNlIERPTU5vZGU6OklzU3VwcG9ydGVkOgotICAgICAgICByZXR1cm4g
anNCb29sZWFuKG5vZGUuaXNTdXBwb3J0ZWQoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykuZG9tU3Ry
aW5nKCksCisgICAgICAgIHJldHVybiBqc0Jvb2xlYW4obm9kZS5pc1N1cHBvcnRlZChhcmdzWzBd
LT50b1N0cmluZyhleGVjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKGV4ZWMsIGFyZ3NbMV0pKSk7CiAgICAgY2Fz
ZSBET01Ob2RlOjpJc1NhbWVOb2RlOgogICAgICAgICByZXR1cm4ganNCb29sZWFuKG5vZGUuaXNT
YW1lTm9kZSh0b05vZGUoYXJnc1swXSkpKTsKQEAgLTY3OCwxMyArNjc4LDEzIEBACiAgICAgICAg
IGNhc2UgRE9NRXZlbnRUYXJnZXROb2RlOjpBZGRFdmVudExpc3RlbmVyOiB7CiAgICAgICAgICAg
ICBKU0V2ZW50TGlzdGVuZXIgKmxpc3RlbmVyID0gV2luZG93OjpyZXRyaWV2ZUFjdGl2ZShleGVj
KS0+Z2V0SlNFdmVudExpc3RlbmVyKGFyZ3NbMV0pOwogICAgICAgICAgICAgaWYgKGxpc3RlbmVy
KQotICAgICAgICAgICAgICAgIG5vZGUtPmFkZEV2ZW50TGlzdGVuZXIoQXRvbWljU3RyaW5nKGFy
Z3NbMF0tPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpKSwgbGlzdGVuZXIsYXJnc1syXS0+dG9C
b29sZWFuKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5hZGRFdmVudExpc3RlbmVyKGFy
Z3NbMF0tPnRvU3RyaW5nKGV4ZWMpLCBsaXN0ZW5lcixhcmdzWzJdLT50b0Jvb2xlYW4oZXhlYykp
OwogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBET01FdmVudFRhcmdldE5vZGU6OlJlbW92ZUV2ZW50TGlzdGVuZXI6IHsKICAgICAgICAg
ICAgIEpTRXZlbnRMaXN0ZW5lciAqbGlzdGVuZXIgPSBXaW5kb3c6OnJldHJpZXZlQWN0aXZlKGV4
ZWMpLT5nZXRKU0V2ZW50TGlzdGVuZXIoYXJnc1sxXSk7CiAgICAgICAgICAgICBpZiAobGlzdGVu
ZXIpCi0gICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihBdG9taWNTdHJp
bmcoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCkpLCBsaXN0ZW5lcixhcmdzWzJd
LT50b0Jvb2xlYW4oZXhlYykpOworICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZUV2ZW50TGlz
dGVuZXIoYXJnc1swXS0+dG9TdHJpbmcoZXhlYyksIGxpc3RlbmVyLGFyZ3NbMl0tPnRvQm9vbGVh
bihleGVjKSk7CiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIERPTUV2ZW50VGFyZ2V0Tm9kZTo6RGlzcGF0Y2hFdmVudDoKQEAgLTczNSw3
ICs3MzUsNyBAQAogSlNWYWx1ZSAqRE9NTm9kZUxpc3Q6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlICpl
eGVjLCBKU09iamVjdCAqb3JpZ2luYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQogewogICBET01Ob2RlTGlzdCAqdGhpc09i
aiA9IHN0YXRpY19jYXN0PERPTU5vZGVMaXN0ICo+KHNsb3Quc2xvdEJhc2UoKSk7Ci0gIHJldHVy
biB0b0pTKGV4ZWMsIHRoaXNPYmotPm1faW1wbC0+aXRlbUJ5SWQocHJvcGVydHlOYW1lLmRvbVN0
cmluZygpLmltcGwoKSkpOworICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5tX2ltcGwtPml0
ZW1CeUlkKHByb3BlcnR5TmFtZSkpOwogfQogCiBib29sIERPTU5vZGVMaXN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTc1OCw3ICs3NTgsNyBAQAogICBpZiAob2sgJiYgaWR4
IDwgbGlzdC5sZW5ndGgoKSkgewogICAgIHNsb3Quc2V0Q3VzdG9tSW5kZXgodGhpcywgaWR4LCBp
bmRleEdldHRlcik7CiAgICAgcmV0dXJuIHRydWU7Ci0gIH0gZWxzZSBpZiAobGlzdC5pdGVtQnlJ
ZChwcm9wZXJ0eU5hbWUuZG9tU3RyaW5nKCkuaW1wbCgpKSkgeworICB9IGVsc2UgaWYgKGxpc3Qu
aXRlbUJ5SWQoU3RyaW5nKHByb3BlcnR5TmFtZSkuaW1wbCgpKSkgewogICAgIHNsb3Quc2V0Q3Vz
dG9tKHRoaXMsIG5hbWVHZXR0ZXIpOwogICAgIHJldHVybiB0cnVlOwogICB9CkBAIC05MzIsNyAr
OTMyLDcgQEAKICAgRG9jdW1lbnQgJmRvYyA9ICpzdGF0aWNfY2FzdDxEb2N1bWVudCAqPihpbXBs
KCkpOwogICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgY2FzZSBTZWxlY3RlZFN0eWxlc2hlZXRTZXQ6
Ci0gICAgICBkb2Muc2V0U2VsZWN0ZWRTdHlsZXNoZWV0U2V0KHZhbHVlLT50b1N0cmluZyhleGVj
KS5kb21TdHJpbmcoKSk7CisgICAgICBkb2Muc2V0U2VsZWN0ZWRTdHlsZXNoZWV0U2V0KHZhbHVl
LT50b1N0cmluZyhleGVjKSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIENoYXJzZXQ6CiAgICAg
ICBkb2MuZGVjb2RlcigpLT5zZXRFbmNvZGluZ05hbWUodmFsdWUtPnRvU3RyaW5nKGV4ZWMpLmNz
dHJpbmcoKS5jX3N0cigpLCBEZWNvZGVyOjpVc2VyQ2hvc2VuRW5jb2RpbmcpOwpAQCAtOTQ4LDcg
Kzk0OCw3IEBACiAgIE5vZGUgJm5vZGUgPSAqc3RhdGljX2Nhc3Q8RE9NTm9kZSAqPih0aGlzT2Jq
KS0+aW1wbCgpOwogICBEb2N1bWVudCAmZG9jID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQgJj4obm9k
ZSk7CiAgIFVTdHJpbmcgc3RyID0gYXJnc1swXS0+dG9TdHJpbmcoZXhlYyk7Ci0gIFdlYkNvcmU6
OlN0cmluZyBzID0gc3RyLmRvbVN0cmluZygpOworICBXZWJDb3JlOjpTdHJpbmcgcyA9IHN0cjsK
IAogICBzd2l0Y2goaWQpIHsKICAgY2FzZSBET01Eb2N1bWVudDo6QWRvcHROb2RlOgpAQCAtOTY0
LDcgKzk2NCw3IEBACiAgIGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZUNEQVRBU2VjdGlvbjoKICAg
ICByZXR1cm4gdG9KUyhleGVjLCBkb2MuY3JlYXRlQ0RBVEFTZWN0aW9uKHMsIGV4Y2VwdGlvbikp
OwogICBjYXNlIERPTURvY3VtZW50OjpDcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246Ci0gICAg
cmV0dXJuIHRvSlMoZXhlYywgZG9jLmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihhcmdzWzBd
LT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKSwgYXJnc1sxXS0+dG9TdHJpbmcoZXhlYykuZG9t
U3RyaW5nKCksIGV4Y2VwdGlvbikpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIGRvYy5jcmVhdGVQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24oYXJnc1swXS0+dG9TdHJpbmcoZXhlYyksIGFyZ3NbMV0tPnRv
U3RyaW5nKGV4ZWMpLCBleGNlcHRpb24pKTsKICAgY2FzZSBET01Eb2N1bWVudDo6Q3JlYXRlQXR0
cmlidXRlOgogICAgIHJldHVybiB0b0pTKGV4ZWMsZG9jLmNyZWF0ZUF0dHJpYnV0ZShzLCBleGNl
cHRpb24pKTsKICAgY2FzZSBET01Eb2N1bWVudDo6Q3JlYXRlRW50aXR5UmVmZXJlbmNlOgpAQCAt
OTc2LDEzICs5NzYsMTMgQEAKICAgY2FzZSBET01Eb2N1bWVudDo6SW1wb3J0Tm9kZTogLy8gRE9N
MgogICAgIHJldHVybiB0b0pTKGV4ZWMsZG9jLmltcG9ydE5vZGUodG9Ob2RlKGFyZ3NbMF0pLCBh
cmdzWzFdLT50b0Jvb2xlYW4oZXhlYyksIGV4Y2VwdGlvbikpOwogICBjYXNlIERPTURvY3VtZW50
OjpDcmVhdGVFbGVtZW50TlM6IC8vIERPTTIKLSAgICByZXR1cm4gdG9KUyhleGVjLGRvYy5jcmVh
dGVFbGVtZW50TlMocywgYXJnc1sxXS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCksIGV4Y2Vw
dGlvbikpOworICAgIHJldHVybiB0b0pTKGV4ZWMsZG9jLmNyZWF0ZUVsZW1lbnROUyhzLCBhcmdz
WzFdLT50b1N0cmluZyhleGVjKSwgZXhjZXB0aW9uKSk7CiAgIGNhc2UgRE9NRG9jdW1lbnQ6OkNy
ZWF0ZUF0dHJpYnV0ZU5TOiAvLyBET00yCi0gICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuY3JlYXRl
QXR0cmlidXRlTlMocywgYXJnc1sxXS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCksIGV4Y2Vw
dGlvbikpOworICAgIHJldHVybiB0b0pTKGV4ZWMsZG9jLmNyZWF0ZUF0dHJpYnV0ZU5TKHMsIGFy
Z3NbMV0tPnRvU3RyaW5nKGV4ZWMpLCBleGNlcHRpb24pKTsKICAgY2FzZSBET01Eb2N1bWVudDo6
R2V0RWxlbWVudHNCeVRhZ05hbWVOUzogLy8gRE9NMgotICAgIHJldHVybiB0b0pTKGV4ZWMsZG9j
LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMocywgYXJnc1sxXS0+dG9TdHJpbmcoZXhlYykuZG9tU3Ry
aW5nKCkpLmdldCgpKTsKKyAgICByZXR1cm4gdG9KUyhleGVjLGRvYy5nZXRFbGVtZW50c0J5VGFn
TmFtZU5TKHMsIGFyZ3NbMV0tPnRvU3RyaW5nKGV4ZWMpKS5nZXQoKSk7CiAgIGNhc2UgRE9NRG9j
dW1lbnQ6OkdldEVsZW1lbnRCeUlkOgotICAgIHJldHVybiB0b0pTKGV4ZWMsZG9jLmdldEVsZW1l
bnRCeUlkKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpLmltcGwoKSkpOworICAg
IHJldHVybiB0b0pTKGV4ZWMsZG9jLmdldEVsZW1lbnRCeUlkKGFyZ3NbMF0tPnRvU3RyaW5nKGV4
ZWMpKSk7CiAgIGNhc2UgRE9NRG9jdW1lbnQ6OkNyZWF0ZVJhbmdlOgogICAgIHJldHVybiB0b0pT
KGV4ZWMsIGRvYy5jcmVhdGVSYW5nZSgpLmdldCgpKTsKICAgY2FzZSBET01Eb2N1bWVudDo6Q3Jl
YXRlTm9kZUl0ZXJhdG9yOiB7CkBAIC0xMDA5LDI2ICsxMDA5LDI2IEBACiAgICAgcmV0dXJuIHRv
SlMoZXhlYywgZG9jLmNyZWF0ZUV2ZW50KHMsIGV4Y2VwdGlvbikuZ2V0KCkpOwogICBjYXNlIERP
TURvY3VtZW50OjpHZXRPdmVycmlkZVN0eWxlOgogICAgIGlmIChFbGVtZW50ICplbGVtZW50MCA9
IHRvRWxlbWVudChhcmdzWzBdKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuZ2V0T3Zl
cnJpZGVTdHlsZShlbGVtZW50MCwgYXJnc1sxXS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCkp
KTsKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYyxkb2MuZ2V0T3ZlcnJpZGVTdHlsZShlbGVtZW50
MCwgYXJnc1sxXS0+dG9TdHJpbmcoZXhlYykpKTsKICAgICAvLyBGSVhNRTogSXMgdW5kZWZpbmVk
IHJpZ2h0IGhlcmUsIG9yIHNob3VsZCB3ZSByYWlzZSBhbiBleGNlcHRpb24/CiAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAgIGNhc2UgRE9NRG9jdW1lbnQ6OkV4ZWNDb21tYW5kOiB7Ci0gICAg
cmV0dXJuIGpzQm9vbGVhbihkb2MuZXhlY0NvbW1hbmQoYXJnc1swXS0+dG9TdHJpbmcoZXhlYyku
ZG9tU3RyaW5nKCksIGFyZ3NbMV0tPnRvQm9vbGVhbihleGVjKSwgYXJnc1syXS0+dG9TdHJpbmco
ZXhlYykuZG9tU3RyaW5nKCkpKTsKKyAgICByZXR1cm4ganNCb29sZWFuKGRvYy5leGVjQ29tbWFu
ZChhcmdzWzBdLT50b1N0cmluZyhleGVjKSwgYXJnc1sxXS0+dG9Cb29sZWFuKGV4ZWMpLCBhcmdz
WzJdLT50b1N0cmluZyhleGVjKSkpOwogICB9CiAgIGNhc2UgRE9NRG9jdW1lbnQ6OlF1ZXJ5Q29t
bWFuZEVuYWJsZWQ6IHsKLSAgICByZXR1cm4ganNCb29sZWFuKGRvYy5xdWVyeUNvbW1hbmRFbmFi
bGVkKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpKSk7CisgICAgcmV0dXJuIGpz
Qm9vbGVhbihkb2MucXVlcnlDb21tYW5kRW5hYmxlZChhcmdzWzBdLT50b1N0cmluZyhleGVjKSkp
OwogICB9CiAgIGNhc2UgRE9NRG9jdW1lbnQ6OlF1ZXJ5Q29tbWFuZEluZGV0ZXJtOiB7Ci0gICAg
cmV0dXJuIGpzQm9vbGVhbihkb2MucXVlcnlDb21tYW5kSW5kZXRlcm0oYXJnc1swXS0+dG9TdHJp
bmcoZXhlYykuZG9tU3RyaW5nKCkpKTsKKyAgICByZXR1cm4ganNCb29sZWFuKGRvYy5xdWVyeUNv
bW1hbmRJbmRldGVybShhcmdzWzBdLT50b1N0cmluZyhleGVjKSkpOwogICB9CiAgIGNhc2UgRE9N
RG9jdW1lbnQ6OlF1ZXJ5Q29tbWFuZFN0YXRlOiB7Ci0gICAgcmV0dXJuIGpzQm9vbGVhbihkb2Mu
cXVlcnlDb21tYW5kU3RhdGUoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCkpKTsK
KyAgICByZXR1cm4ganNCb29sZWFuKGRvYy5xdWVyeUNvbW1hbmRTdGF0ZShhcmdzWzBdLT50b1N0
cmluZyhleGVjKSkpOwogICB9CiAgIGNhc2UgRE9NRG9jdW1lbnQ6OlF1ZXJ5Q29tbWFuZFN1cHBv
cnRlZDogewotICAgIHJldHVybiBqc0Jvb2xlYW4oZG9jLnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZChh
cmdzWzBdLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKSkpOworICAgIHJldHVybiBqc0Jvb2xl
YW4oZG9jLnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZChhcmdzWzBdLT50b1N0cmluZyhleGVjKSkpOwog
ICB9CiAgIGNhc2UgRE9NRG9jdW1lbnQ6OlF1ZXJ5Q29tbWFuZFZhbHVlOiB7Ci0gICAgV2ViQ29y
ZTo6U3RyaW5nIGNvbW1hbmRWYWx1ZShkb2MucXVlcnlDb21tYW5kVmFsdWUoYXJnc1swXS0+dG9T
dHJpbmcoZXhlYykuZG9tU3RyaW5nKCkpKTsKKyAgICBXZWJDb3JlOjpTdHJpbmcgY29tbWFuZFZh
bHVlKGRvYy5xdWVyeUNvbW1hbmRWYWx1ZShhcmdzWzBdLT50b1N0cmluZyhleGVjKSkpOwogICAg
IC8vIE1ldGhvZCByZXR1cm5zIG51bGwgU3RyaW5nIHRvIHNpZ25hbCBjb21tYW5kIGlzIHVuc3Vw
cG9ydGVkLgogICAgIC8vIE1pY3Jvc29mdCBkb2N1bWVudGF0aW9uIGZvciB0aGlzIG1ldGhvZCBz
YXlzOgogICAgIC8vICJJZiBub3Qgc3VwcG9ydGVkIFtmb3IgYSBjb21tYW5kIGlkZW50aWZpZXJd
LCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgQm9vbGVhbiBzZXQgdG8gZmFsc2UuIgpAQCAtMTE2NCw3
ICsxMTY0LDcgQEAKICAgRE9NRWxlbWVudCAqdGhpc09iaiA9IHN0YXRpY19jYXN0PERPTUVsZW1l
bnQgKj4oc2xvdC5zbG90QmFzZSgpKTsKIAogICBFbGVtZW50ICplbGVtZW50ID0gc3RhdGljX2Nh
c3Q8RWxlbWVudCAqPih0aGlzT2JqLT5pbXBsKCkpOwotICBXZWJDb3JlOjpTdHJpbmcgYXR0ciA9
IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShwcm9wZXJ0eU5hbWUuZG9tU3RyaW5nKCkpOworICBXZWJD
b3JlOjpTdHJpbmcgYXR0ciA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShwcm9wZXJ0eU5hbWUpOwog
ICByZXR1cm4ganNTdHJpbmdPck51bGwoYXR0cik7CiB9CiAKQEAgLTExOTAsNyArMTE5MCw3IEBA
CiAKICAgLy8gRklYTUU6IGRvIHdlIHJlYWxseSB3YW50IHRvIGRvIHRoaXMgYXR0cmlidXRlIGxv
b2t1cCB0aGluZz8gTW96aWxsYSBkb2Vzbid0IGRvIGl0LAogICAvLyBhbmQgaXQgc2VlbXMgbGlr
ZSBpdCBjb3VsZCBpbnRlcmZlcmUgd2l0aCBYQkwuCi0gIFdlYkNvcmU6OlN0cmluZyBhdHRyID0g
ZWxlbWVudC5nZXRBdHRyaWJ1dGUocHJvcGVydHlOYW1lLmRvbVN0cmluZygpKTsKKyAgV2ViQ29y
ZTo6U3RyaW5nIGF0dHIgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShwcm9wZXJ0eU5hbWUpOwogICBp
ZiAoIWF0dHIuaXNOdWxsKCkpIHsKICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBhdHRyaWJ1dGVH
ZXR0ZXIpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTI5NCw3ICsxMjk0LDcgQEAKIEpTVmFsdWUg
KkRPTU5hbWVkTm9kZU1hcDo6bmFtZUdldHRlcihFeGVjU3RhdGUgKmV4ZWMsIEpTT2JqZWN0ICpv
cmlnaW5hbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgIERPTU5hbWVkTm9kZU1hcCAqdGhpc09iaiA9IHN0YXRpY19j
YXN0PERPTU5hbWVkTm9kZU1hcCAqPihzbG90LnNsb3RCYXNlKCkpOwotICByZXR1cm4gdG9KUyhl
eGVjLCB0aGlzT2JqLT5tX2ltcGwtPmdldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWUuZG9tU3RyaW5n
KCkpKTsKKyAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+bV9pbXBsLT5nZXROYW1lZEl0ZW0o
cHJvcGVydHlOYW1lKSk7CiB9CiAKIGJvb2wgRE9NTmFtZWROb2RlTWFwOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKQEAgLTEzMTYsNyArMTMxNiw3IEBACiAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBpZiAobV9pbXBsLT5nZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lLmRv
bVN0cmluZygpKSkgeworICAgIGlmIChtX2ltcGwtPmdldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWUp
KSB7CiAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBuYW1lR2V0dGVyKTsKICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTEzMzMsMTkgKzEzMzMsMTkgQEAKICAgTmFtZWROb2RlTWFwICZt
YXAgPSAqc3RhdGljX2Nhc3Q8RE9NTmFtZWROb2RlTWFwICo+KHRoaXNPYmopLT5pbXBsKCk7CiAg
IHN3aXRjaCAoaWQpIHsKICAgICBjYXNlIERPTU5hbWVkTm9kZU1hcDo6R2V0TmFtZWRJdGVtOgot
ICAgICAgcmV0dXJuIHRvSlMoZXhlYywgbWFwLmdldE5hbWVkSXRlbShhcmdzWzBdLT50b1N0cmlu
ZyhleGVjKS5kb21TdHJpbmcoKSkpOworICAgICAgcmV0dXJuIHRvSlMoZXhlYywgbWFwLmdldE5h
bWVkSXRlbShhcmdzWzBdLT50b1N0cmluZyhleGVjKSkpOwogICAgIGNhc2UgRE9NTmFtZWROb2Rl
TWFwOjpTZXROYW1lZEl0ZW06CiAgICAgICByZXR1cm4gdG9KUyhleGVjLCBtYXAuc2V0TmFtZWRJ
dGVtKHRvTm9kZShhcmdzWzBdKSwgZXhjZXB0aW9uKS5nZXQoKSk7CiAgICAgY2FzZSBET01OYW1l
ZE5vZGVNYXA6OlJlbW92ZU5hbWVkSXRlbToKLSAgICAgIHJldHVybiB0b0pTKGV4ZWMsIG1hcC5y
ZW1vdmVOYW1lZEl0ZW0oYXJnc1swXS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCksIGV4Y2Vw
dGlvbikuZ2V0KCkpOworICAgICAgcmV0dXJuIHRvSlMoZXhlYywgbWFwLnJlbW92ZU5hbWVkSXRl
bShhcmdzWzBdLT50b1N0cmluZyhleGVjKSwgZXhjZXB0aW9uKS5nZXQoKSk7CiAgICAgY2FzZSBE
T01OYW1lZE5vZGVNYXA6Okl0ZW06CiAgICAgICByZXR1cm4gdG9KUyhleGVjLCBtYXAuaXRlbShh
cmdzWzBdLT50b0ludDMyKGV4ZWMpKSk7CiAgICAgY2FzZSBET01OYW1lZE5vZGVNYXA6OkdldE5h
bWVkSXRlbU5TOiAvLyBET00yCi0gICAgICByZXR1cm4gdG9KUyhleGVjLCBtYXAuZ2V0TmFtZWRJ
dGVtTlModmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soZXhlYywgYXJnc1swXSksIGFyZ3NbMV0t
PnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpKSk7CisgICAgICByZXR1cm4gdG9KUyhleGVjLCBt
YXAuZ2V0TmFtZWRJdGVtTlModmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soZXhlYywgYXJnc1sw
XSksIGFyZ3NbMV0tPnRvU3RyaW5nKGV4ZWMpKSk7CiAgICAgY2FzZSBET01OYW1lZE5vZGVNYXA6
OlNldE5hbWVkSXRlbU5TOiAvLyBET00yCiAgICAgICByZXR1cm4gdG9KUyhleGVjLCBtYXAuc2V0
TmFtZWRJdGVtTlModG9Ob2RlKGFyZ3NbMF0pLCBleGNlcHRpb24pLmdldCgpKTsKICAgICBjYXNl
IERPTU5hbWVkTm9kZU1hcDo6UmVtb3ZlTmFtZWRJdGVtTlM6IC8vIERPTTIKLSAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIG1hcC5yZW1vdmVOYW1lZEl0ZW1OUyh2YWx1ZVRvU3RyaW5nV2l0aE51bGxD
aGVjayhleGVjLCBhcmdzWzBdKSwgYXJnc1sxXS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCks
IGV4Y2VwdGlvbikuZ2V0KCkpOworICAgICAgcmV0dXJuIHRvSlMoZXhlYywgbWFwLnJlbW92ZU5h
bWVkSXRlbU5TKHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKGV4ZWMsIGFyZ3NbMF0pLCBhcmdz
WzFdLT50b1N0cmluZyhleGVjKSwgZXhjZXB0aW9uKS5nZXQoKSk7CiAgIH0KICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiB9CkBAIC0xNTk2LDEyICsxNTk2LDEyIEBACiAgIC8vIEZvciBJRSBjb21w
YXRpYmlsaXR5LCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gbG9vayB1cCBlbGVtZW50cyBpbiBhCiAg
IC8vIGRvY3VtZW50LmZvcm1OYW1lLm5hbWUgcmVzdWx0IGJ5IGlkIGFzIHdlbGwgYXMgYmUgaW5k
ZXguCiAKKyAgQXRvbWljU3RyaW5nIGF0b21pY1Byb3BlcnR5TmFtZSA9IHByb3BlcnR5TmFtZTsK
ICAgRGVwcmVjYXRlZFZhbHVlTGlzdENvbnN0SXRlcmF0b3I8IFJlZlB0cjxOb2RlPiA+IGVuZCA9
IG1fbm9kZXMuZW5kKCk7CiAgIGludCBpID0gMDsKICAgZm9yIChEZXByZWNhdGVkVmFsdWVMaXN0
Q29uc3RJdGVyYXRvcjwgUmVmUHRyPE5vZGU+ID4gaXQgPSBtX25vZGVzLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCwgKytpKSB7CiAgICAgTm9kZSAqbm9kZSA9ICgqaXQpLmdldCgpOwotICAgIGlm
IChub2RlLT5oYXNBdHRyaWJ1dGVzKCkgJiYKLSAgICAgICAgbm9kZS0+YXR0cmlidXRlcygpLT5p
ZCgpID09IHByb3BlcnR5TmFtZS5kb21TdHJpbmcoKSkgeworICAgIGlmIChub2RlLT5oYXNBdHRy
aWJ1dGVzKCkgJiYgbm9kZS0+YXR0cmlidXRlcygpLT5pZCgpID09IGF0b21pY1Byb3BlcnR5TmFt
ZSkgewogICAgICAgc2xvdC5zZXRDdXN0b21JbmRleCh0aGlzLCBpLCBpbmRleEdldHRlcik7CiAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBraHRtbC9lY21hL2tqc19iaW5kaW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9ranNfYmluZGluZy5oCShyZXZpc2lvbiAxMzM5MykK
KysrIGtodG1sL2VjbWEva2pzX2JpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQs
NyBAQAogICAgIGNsYXNzIEV2ZW50OwogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIE5vZGU7
CisgICAgY2xhc3MgU3RyaW5nOwogCiAgICAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIH0K
SW5kZXg6IGtodG1sL2VjbWEvSlNYU0xUUHJvY2Vzc29yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRt
bC9lY21hL0pTWFNMVFByb2Nlc3Nvci5jcHAJKHJldmlzaW9uIDEzMzkzKQorKysga2h0bWwvZWNt
YS9KU1hTTFRQcm9jZXNzb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsOSArMTEzLDkgQEAK
ICAgICAgICAgewogICAgICAgICAgICAgaWYgKGFyZ3NbMV0tPmlzVW5kZWZpbmVkT3JOdWxsKCkg
fHwgYXJnc1syXS0+aXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsgLy8gVGhyb3cgZXhjZXB0aW9uPwotICAgICAgICAgICAgU3RyaW5nIG5h
bWVzcGFjZVVSSSA9IGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpOwotICAgICAg
ICAgICAgU3RyaW5nIGxvY2FsTmFtZSA9IGFyZ3NbMV0tPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmlu
ZygpOwotICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gYXJnc1syXS0+dG9TdHJpbmcoZXhlYyku
ZG9tU3RyaW5nKCk7CisgICAgICAgICAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gYXJnc1swXS0+
dG9TdHJpbmcoZXhlYyk7CisgICAgICAgICAgICBTdHJpbmcgbG9jYWxOYW1lID0gYXJnc1sxXS0+
dG9TdHJpbmcoZXhlYyk7CisgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBhcmdzWzJdLT50b1N0
cmluZyhleGVjKTsKICAgICAgICAgICAgIHByb2Nlc3Nvci5zZXRQYXJhbWV0ZXIobmFtZXNwYWNl
VVJJLmltcGwoKSwgbG9jYWxOYW1lLmltcGwoKSwgdmFsdWUuaW1wbCgpKTsKICAgICAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9CkBAIC0xMjMsOCArMTIzLDggQEAKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKGFyZ3NbMV0tPmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgICAgICAgICBTdHJpbmcg
bmFtZXNwYWNlVVJJID0gYXJnc1swXS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCk7Ci0gICAg
ICAgICAgICBTdHJpbmcgbG9jYWxOYW1lID0gYXJnc1sxXS0+dG9TdHJpbmcoZXhlYykuZG9tU3Ry
aW5nKCk7CisgICAgICAgICAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gYXJnc1swXS0+dG9TdHJp
bmcoZXhlYyk7CisgICAgICAgICAgICBTdHJpbmcgbG9jYWxOYW1lID0gYXJnc1sxXS0+dG9TdHJp
bmcoZXhlYyk7CiAgICAgICAgICAgICBTdHJpbmdJbXBsICp2YWx1ZSA9IHByb2Nlc3Nvci5nZXRQ
YXJhbWV0ZXIobmFtZXNwYWNlVVJJLmltcGwoKSwgbG9jYWxOYW1lLmltcGwoKSkuZ2V0KCk7CiAg
ICAgICAgICAgICBpZiAodmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKFVT
dHJpbmcoU3RyaW5nKHZhbHVlKSkpOwpAQCAtMTM0LDggKzEzNCw4IEBACiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmIChhcmdzWzFdLT5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICAgICAgU3RyaW5nIG5hbWVzcGFjZVVS
SSA9IGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpOwotICAgICAgICAgICAgU3Ry
aW5nIGxvY2FsTmFtZSA9IGFyZ3NbMV0tPnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpOworICAg
ICAgICAgICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpOwor
ICAgICAgICAgICAgU3RyaW5nIGxvY2FsTmFtZSA9IGFyZ3NbMV0tPnRvU3RyaW5nKGV4ZWMpOwog
ICAgICAgICAgICAgcHJvY2Vzc29yLnJlbW92ZVBhcmFtZXRlcihuYW1lc3BhY2VVUkkuaW1wbCgp
LCBsb2NhbE5hbWUuaW1wbCgpKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICAgICAgICB9CkluZGV4OiBraHRtbC9lY21hL2tqc19wcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a2h0bWwvZWNtYS9ranNfcHJveHkuY3BwCShyZXZpc2lvbiAxMzM5MykKKysrIGtodG1sL2VjbWEv
a2pzX3Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQAogICAgIFVTdHJp
bmcgZXJyb3JNZXNzYWdlID0gY29tcC52YWx1ZSgpLT50b1N0cmluZyhtX3NjcmlwdC0+Z2xvYmFs
RXhlYygpKTsKICAgICBpbnQgbGluZU51bWJlciA9IGNvbXAudmFsdWUoKS0+dG9PYmplY3QobV9z
Y3JpcHQtPmdsb2JhbEV4ZWMoKSktPmdldChtX3NjcmlwdC0+Z2xvYmFsRXhlYygpLCAibGluZSIp
LT50b0ludDMyKG1fc2NyaXB0LT5nbG9iYWxFeGVjKCkpOwogICAgIFVTdHJpbmcgc291cmNlVVJM
ID0gY29tcC52YWx1ZSgpLT50b09iamVjdChtX3NjcmlwdC0+Z2xvYmFsRXhlYygpKS0+Z2V0KG1f
c2NyaXB0LT5nbG9iYWxFeGVjKCksICJzb3VyY2VVUkwiKS0+dG9TdHJpbmcobV9zY3JpcHQtPmds
b2JhbEV4ZWMoKSk7Ci0gICAgbV9mcmFtZS0+YWRkTWVzc2FnZVRvQ29uc29sZShlcnJvck1lc3Nh
Z2UuZG9tU3RyaW5nKCksIGxpbmVOdW1iZXIsIHNvdXJjZVVSTC5kb21TdHJpbmcoKSk7CisgICAg
bV9mcmFtZS0+YWRkTWVzc2FnZVRvQ29uc29sZShlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNv
dXJjZVVSTCk7CiAgIH0KIAogICByZXR1cm4gMDsKSW5kZXg6IGtodG1sL2VjbWEvSlNET01QYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL2VjbWEvSlNET01QYXJzZXIuY3BwCShyZXZpc2lv
biAxMzM5MykKKysrIGtodG1sL2VjbWEvSlNET01QYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04Myw4ICs4Myw4IEBACiAgICAgICAgIGlmIChhcmdzLnNpemUoKSAhPSAyKQogICAgICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICAgIERlcHJlY2F0ZWRTdHJpbmcgc3RyID0g
YXJnc1swXS0+dG9TdHJpbmcoZXhlYykuZGVwcmVjYXRlZFN0cmluZygpOwotICAgICAgRGVwcmVj
YXRlZFN0cmluZyBjb250ZW50VHlwZSA9IGFyZ3NbMV0tPnRvU3RyaW5nKGV4ZWMpLmRlcHJlY2F0
ZWRTdHJpbmcoKS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAgIERlcHJlY2F0ZWRTdHJpbmcgc3Ry
ID0gYXJnc1swXS0+dG9TdHJpbmcoZXhlYyk7CisgICAgICBEZXByZWNhdGVkU3RyaW5nIGNvbnRl
bnRUeXBlID0gRGVwcmVjYXRlZFN0cmluZyhhcmdzWzFdLT50b1N0cmluZyhleGVjKSkuc3RyaXBX
aGl0ZVNwYWNlKCk7CiAKICAgICAgIGlmIChET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlw
ZShjb250ZW50VHlwZSkpIHsKICAgICAgICAgUmVmUHRyPERvY3VtZW50PiBkb2MgPSBwYXJzZXIt
PmRvYy0+aW1wbGVtZW50YXRpb24oKS0+Y3JlYXRlRG9jdW1lbnQoKTsKSW5kZXg6IHBsYXRmb3Jt
L1N0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vU3RyaW5nLmNwcAkocmV2aXNpb24g
MTMzOTMpCisrKyBwbGF0Zm9ybS9TdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsy
MywxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAKKyNpbmNsdWRlIDxranMvaWRlbnRpZmllci5oPgorCit1c2luZyBuYW1lc3BhY2UgS0pTOwor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZzo6U3RyaW5nKGNvbnN0IFFDaGFyKiBzdHIs
IHVuc2lnbmVkIGxlbikKQEAgLTE4OSw4ICsxOTMsNiBAQAogICAgIHJldHVybiBtX2ltcGwtPmNv
cHkoKTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KIGJvb2wgU3RyaW5nOjppc0VtcHR5KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gKCFtX2ltcGwgfHwgbV9pbXBsLT5sID09IDApOwpAQCAtMjEz
LDggKzIxNSw2IEBACiB9CiAjZW5kaWYKIAotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCiBib29s
IG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBEZXByZWNhdGVkU3RyaW5nJiBiKQog
ewogICAgIHVuc2lnbmVkIGwgPSBhLmxlbmd0aCgpOwpAQCAtMjI1LDQgKzIyNSw0MCBAQAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorU3RyaW5nOjpTdHJpbmcoY29uc3QgSWRlbnRpZmllciYgc3Ry
KQoreworICAgIGlmIChzdHIuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBp
ZiAoc3RyLmlzRW1wdHkoKSkKKyAgICAgICAgbV9pbXBsID0gU3RyaW5nSW1wbDo6ZW1wdHkoKTsK
KyAgICBlbHNlIAorICAgICAgICBtX2ltcGwgPSBuZXcgU3RyaW5nSW1wbChyZWludGVycHJldF9j
YXN0PGNvbnN0IFFDaGFyKj4oc3RyLmRhdGEoKSksIHN0ci5zaXplKCkpOwogfQorCitTdHJpbmc6
OlN0cmluZyhjb25zdCBVU3RyaW5nJiBzdHIpCit7CisgICAgaWYgKHN0ci5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChzdHIuaXNFbXB0eSgpKQorICAgICAgICBtX2lt
cGwgPSBTdHJpbmdJbXBsOjplbXB0eSgpOworICAgIGVsc2UgCisgICAgICAgIG1faW1wbCA9IG5l
dyBTdHJpbmdJbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgUUNoYXIqPihzdHIuZGF0YSgpKSwg
c3RyLnNpemUoKSk7Cit9CisKK1N0cmluZzo6b3BlcmF0b3IgSWRlbnRpZmllcigpIGNvbnN0Cit7
CisgICAgaWYgKCFtX2ltcGwpCisgICAgICAgIHJldHVybiBJZGVudGlmaWVyKCk7CisgICAgcmV0
dXJuIElkZW50aWZpZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBLSlM6OlVDaGFyKj4obV9pbXBs
LT51bmljb2RlKCkpLCBtX2ltcGwtPmxlbmd0aCgpKTsKK30KKworU3RyaW5nOjpvcGVyYXRvciBV
U3RyaW5nKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faW1wbCkKKyAgICAgICAgcmV0dXJuIFVTdHJp
bmcoKTsKKyAgICByZXR1cm4gVVN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IEtKUzo6VUNo
YXIqPihtX2ltcGwtPnVuaWNvZGUoKSksIG1faW1wbC0+bGVuZ3RoKCkpOworfQorCit9CkluZGV4
OiBwbGF0Zm9ybS9BdG9taWNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9BdG9taWNT
dHJpbmcuaAkocmV2aXNpb24gMTMzOTMpCisrKyBwbGF0Zm9ybS9BdG9taWNTdHJpbmcuaAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNiArMzcsOCBAQAogICAgIEF0b21pY1N0cmluZyhjb25zdCBRQ2hh
ciogcywgaW50IGxlbmd0aCkgOiBtX3N0cmluZyhhZGQocywgbGVuZ3RoKSkgeyB9CiAgICAgQXRv
bWljU3RyaW5nKGNvbnN0IHVuc2lnbmVkIHNob3J0KiBzLCBpbnQgbGVuZ3RoKSA6IG1fc3RyaW5n
KGFkZCgoUUNoYXIqKXMsIGxlbmd0aCkpIHsgfQogICAgIEF0b21pY1N0cmluZyhjb25zdCBEZXBy
ZWNhdGVkU3RyaW5nJiBzKSA6IG1fc3RyaW5nKGFkZChzLnVuaWNvZGUoKSwgcy5sZW5ndGgoKSkp
IHsgfQorICAgIEF0b21pY1N0cmluZyhjb25zdCBLSlM6OlVTdHJpbmcmIHMpIDogbV9zdHJpbmco
YWRkKHMpKSB7IH0KKyAgICBBdG9taWNTdHJpbmcoY29uc3QgS0pTOjpJZGVudGlmaWVyJiBzKSA6
IG1fc3RyaW5nKGFkZChzKSkgeyB9CiAgICAgQXRvbWljU3RyaW5nKFN0cmluZ0ltcGwqIGltcCkg
OiBtX3N0cmluZyhhZGQoaW1wKSkgeyB9CiAgICAgQXRvbWljU3RyaW5nKEF0b21pY1N0cmluZ0lt
cGwqIGltcCkgOiBtX3N0cmluZyhpbXApIHsgfQogICAgIGV4cGxpY2l0IEF0b21pY1N0cmluZyhj
b25zdCBTdHJpbmcmIHMpIDogbV9zdHJpbmcoYWRkKHMuaW1wbCgpKSkgeyB9CkBAIC00NSw2ICs0
Nyw5IEBACiAgICAgY29uc3QgU3RyaW5nJiBkb21TdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZzsgfTsKICAgICBEZXByZWNhdGVkU3RyaW5nIGRlcHJlY2F0ZWRTdHJpbmcoKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZy5kZXByZWNhdGVkU3RyaW5nKCk7IH07CiAgICAgCisgICAgb3BlcmF0
b3IgS0pTOjpJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgb3BlcmF0b3IgS0pTOjpVU3RyaW5nKCkg
Y29uc3Q7CisKICAgICBBdG9taWNTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCAqPihtX3N0cmluZy5pbXBsKCkpOyB9CiAgICAgCiAg
ICAgY29uc3QgUUNoYXIqIHVuaWNvZGUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy51bmljb2Rl
KCk7IH0KQEAgLTg2LDYgKzkxLDggQEAKICAgICBzdGF0aWMgU3RyaW5nSW1wbCogYWRkKGNvbnN0
IGNoYXIqKTsKICAgICBzdGF0aWMgU3RyaW5nSW1wbCogYWRkKGNvbnN0IFFDaGFyKiwgaW50IGxl
bmd0aCk7CiAgICAgc3RhdGljIFN0cmluZ0ltcGwqIGFkZChTdHJpbmdJbXBsKik7CisgICAgc3Rh
dGljIFN0cmluZ0ltcGwqIGFkZChjb25zdCBLSlM6OlVTdHJpbmcmKTsKKyAgICBzdGF0aWMgU3Ry
aW5nSW1wbCogYWRkKGNvbnN0IEtKUzo6SWRlbnRpZmllciYpOwogfTsKIAogaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikg
eyByZXR1cm4gYS5pbXBsKCkgPT0gYi5pbXBsKCk7IH0KSW5kZXg6IHBsYXRmb3JtL1N0cmluZ0lt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL1N0cmluZ0ltcGwuY3BwCShyZXZpc2lvbiAx
MzM5MykKKysrIHBsYXRmb3JtL1N0cmluZ0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwx
MCArMjksMTIgQEAKIAogI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgogI2luY2x1ZGUgIkxlbmd0
aC5oIgorI2luY2x1ZGUgPGtqcy9pZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8a3htbGNvcmUvQXNz
ZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5o
PgogCit1c2luZyBuYW1lc3BhY2UgS0pTOwogdXNpbmcgbmFtZXNwYWNlIEtYTUxDb3JlOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOTAsNyArMzkyLDcgQEAKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgdWJya19zZXRUZXh0KGl0ZXJhdG9y
LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3RyaW5nKSwgbGVuZ3RoLCAmc3RhdHVz
KTsKKyAgICB1YnJrX3NldFRleHQoaXRlcmF0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgOjpV
Q2hhcio+KHN0cmluZyksIGxlbmd0aCwgJnN0YXR1cyk7CiAgICAgaWYgKHN0YXR1cyAhPSBVX1pF
Uk9fRVJST1IpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC01NDQsNyArNTQ2LDcgQEAKICAgICBy
ZXR1cm4gLTE7CiB9CiAKLS8vIFRoaXMgd2FzIGNvcGllZCBmcm9tIEtXUSdzIERlcHJlY2F0ZWRT
dHJpbmcgYW5kIG1hZGUgdG8gd29yayBoZXJlIHcvIHNtYWxsIG1vZGlmaWNhdGlvbnMuCisvLyBU
aGlzIHdhcyBjb3BpZWQgZnJvbSBEZXByZWNhdGVkU3RyaW5nIGFuZCBtYWRlIHRvIHdvcmsgaGVy
ZSB3LyBzbWFsbCBtb2RpZmljYXRpb25zLgogLy8gRklYTUUgY29tbWVudHMgd2VyZSBmcm9tIHRo
ZSBEZXByZWNhdGVkU3RyaW5nIHZlcnNpb24uCiBpbnQgU3RyaW5nSW1wbDo6ZmluZChjb25zdCBT
dHJpbmdJbXBsKiBzdHIsIGludCBpbmRleCwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBjb25zdAogewpA
QCAtODQwLDYgKzg0MiwxNiBAQAogICAgIHJldHVybiBidWZmZXI7CiB9CiAKK1N0cmluZ0ltcGw6
OlN0cmluZ0ltcGwoY29uc3QgSWRlbnRpZmllciYgc3RyKQoreworICAgIGluaXRXaXRoUUNoYXIo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBRQ2hhcio+KHN0ci5kYXRhKCkpLCBzdHIuc2l6ZSgpKTsK
K30KKworU3RyaW5nSW1wbDo6U3RyaW5nSW1wbChjb25zdCBVU3RyaW5nJiBzdHIpCit7CisgICAg
aW5pdFdpdGhRQ2hhcihyZWludGVycHJldF9jYXN0PGNvbnN0IFFDaGFyKj4oc3RyLmRhdGEoKSks
IHN0ci5zaXplKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBL
WE1MQ29yZSB7CkluZGV4OiBwbGF0Zm9ybS9EZXByZWNhdGVkU3RyaW5nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gcGxhdGZvcm0vRGVwcmVjYXRlZFN0cmluZy5oCShyZXZpc2lvbiAxMzM5MykKKysrIHBsYXRm
b3JtL0RlcHJlY2F0ZWRTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsMTEgQEAK
ICNlbmRpZgogI2VuZGlmCiAKK25hbWVzcGFjZSBLSlMgeworICAgIGNsYXNzIElkZW50aWZpZXI7
CisgICAgY2xhc3MgVVN0cmluZzsKK30KKwogY2xhc3MgUUNoYXIgewogcHVibGljOgogCkBAIC00
MDEsMTEgKzQwNiw5IEBACiAgICAgS1dRU3RyaW5nRGF0YSAmb3BlcmF0b3I9KGNvbnN0IEtXUVN0
cmluZ0RhdGEgJik7CiB9OwogCi0jZGVmaW5lIFFTVFJJTkdfTlVMTCBEZXByZWNhdGVkU3RyaW5n
KCkKLQogY2xhc3MgRGVwcmVjYXRlZFN0cmluZyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0
IGNoYXIgKiBjb25zdCBudWxsOyAvLyBub3QgYSBEZXByZWNhdGVkU3RyaW5nIGFzIGluIFF0IChj
YW4ndCBoYXZlIHN0YXRpYyBjb25zdHJ1Y3RvciksIGJ1dCBjbG9zZSBlbm91Z2ggdG8gYmUgY29t
cGF0aWJsZSBpbiBtb3N0IGNhc2VzCisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBudWxs
OwogCiAgICAgRGVwcmVjYXRlZFN0cmluZygpOwogICAgIERlcHJlY2F0ZWRTdHJpbmcoUUNoYXIp
OwpAQCAtNDEzLDEyICs0MTYsMTcgQEAKICAgICBEZXByZWNhdGVkU3RyaW5nKGNvbnN0IFFDaGFy
ICosIHVuc2lnbmVkKTsKICAgICBEZXByZWNhdGVkU3RyaW5nKGNvbnN0IGNoYXIgKik7CiAgICAg
RGVwcmVjYXRlZFN0cmluZyhjb25zdCBjaGFyICosIGludCBsZW4pOworICAgIERlcHJlY2F0ZWRT
dHJpbmcoY29uc3QgS0pTOjpJZGVudGlmaWVyJik7CisgICAgRGVwcmVjYXRlZFN0cmluZyhjb25z
dCBLSlM6OlVTdHJpbmcmKTsKICAgICAKICAgICBEZXByZWNhdGVkU3RyaW5nKGNvbnN0IERlcHJl
Y2F0ZWRTdHJpbmcgJik7CiAgICAgRGVwcmVjYXRlZFN0cmluZyAmb3BlcmF0b3I9KGNvbnN0IERl
cHJlY2F0ZWRTdHJpbmcgJik7CiAKICAgICB+RGVwcmVjYXRlZFN0cmluZygpOwogCisgICAgb3Bl
cmF0b3IgS0pTOjpJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgb3BlcmF0b3IgS0pTOjpVU3RyaW5n
KCkgY29uc3Q7CisKICAgICBzdGF0aWMgRGVwcmVjYXRlZFN0cmluZyBmcm9tTGF0aW4xKGNvbnN0
IGNoYXIgKik7CiAgICAgc3RhdGljIERlcHJlY2F0ZWRTdHJpbmcgZnJvbUxhdGluMShjb25zdCBj
aGFyICosIGludCBsZW4pOwogICAgIHN0YXRpYyBEZXByZWNhdGVkU3RyaW5nIGZyb21VdGY4KGNv
bnN0IGNoYXIgKik7CkluZGV4OiBwbGF0Zm9ybS9BdG9taWNTdHJpbmcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHBsYXRmb3JtL0F0b21pY1N0cmluZy5jcHAJKHJldmlzaW9uIDEzMzkzKQorKysgcGxhdGZv
cm0vQXRvbWljU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDEzIEBACiAj
ZW5kaWYKIAogI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgorCiAjaW5jbHVkZSAiU3RhdGljQ29u
c3RydWN0b3JzLmgiCi0KKyNpbmNsdWRlIDxranMvaWRlbnRpZmllci5oPgogI2luY2x1ZGUgPGt4
bWxjb3JlL0hhc2hTZXQuaD4KIAordXNpbmcgbmFtZXNwYWNlIEtKUzsKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgCiBzdGF0aWMgSGFzaFNldDxTdHJpbmdJbXBsKj4qIHN0cmluZ1RhYmxlOwpA
QCAtMTU3LDcgKzE2MCwyNiBAQAogICAgIHN0cmluZ1RhYmxlLT5yZW1vdmUocik7CiB9CiAKK1N0
cmluZ0ltcGwqIEF0b21pY1N0cmluZzo6YWRkKGNvbnN0IEtKUzo6SWRlbnRpZmllciYgc3RyKQor
eworICAgIHJldHVybiBhZGQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBRQ2hhcio+KHN0ci5kYXRh
KCkpLCBzdHIuc2l6ZSgpKTsKK30KIAorU3RyaW5nSW1wbCogQXRvbWljU3RyaW5nOjphZGQoY29u
c3QgS0pTOjpVU3RyaW5nJiBzdHIpCit7CisgICAgcmV0dXJuIGFkZChyZWludGVycHJldF9jYXN0
PGNvbnN0IFFDaGFyKj4oc3RyLmRhdGEoKSksIHN0ci5zaXplKCkpOworfQorCitBdG9taWNTdHJp
bmc6Om9wZXJhdG9yIElkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBkb21TdHJpbmco
KTsKK30KKworQXRvbWljU3RyaW5nOjpvcGVyYXRvciBVU3RyaW5nKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZG9tU3RyaW5nKCk7Cit9CisKIERFRklORV9HTE9CQUwoQXRvbWljU3RyaW5nLCBudWxs
QXRvbSkKIERFRklORV9HTE9CQUwoQXRvbWljU3RyaW5nLCBlbXB0eUF0b20sICIiKQogREVGSU5F
X0dMT0JBTChBdG9taWNTdHJpbmcsIHRleHRBdG9tLCAiI3RleHQiKQpJbmRleDogcGxhdGZvcm0v
UGxhdGZvcm1TdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9QbGF0Zm9ybVN0cmluZy5o
CShyZXZpc2lvbiAxMzM5MykKKysrIHBsYXRmb3JtL1BsYXRmb3JtU3RyaW5nLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDkgKzQ1LDE0IEBACiAgICAgU3RyaW5nKCkgeyB9IC8vIGdpdmVzIG51bGwg
c3RyaW5nLCBkaXN0aW5ndWlzaGFibGUgZnJvbSBhbiBlbXB0eSBzdHJpbmcKICAgICBTdHJpbmco
Y29uc3QgUUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIFN0cmluZyhjb25zdCBEZXByZWNh
dGVkU3RyaW5nJik7CisgICAgU3RyaW5nKGNvbnN0IEtKUzo6SWRlbnRpZmllciYpOworICAgIFN0
cmluZyhjb25zdCBLSlM6OlVTdHJpbmcmKTsKICAgICBTdHJpbmcoY29uc3QgY2hhciopOwogICAg
IFN0cmluZyhTdHJpbmdJbXBsKiBpKSA6IG1faW1wbChpKSB7IH0KIAorICAgIG9wZXJhdG9yIEtK
Uzo6SWRlbnRpZmllcigpIGNvbnN0OworICAgIG9wZXJhdG9yIEtKUzo6VVN0cmluZygpIGNvbnN0
OworCiAgICAgU3RyaW5nJiBvcGVyYXRvciArPShjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQg
aW5zZXJ0KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHBvcyk7CkluZGV4OiBwbGF0Zm9ybS9EZXBy
ZWNhdGVkU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9EZXByZWNhdGVkU3RyaW5n
LmNwcAkocmV2aXNpb24gMTMzOTMpCisrKyBwbGF0Zm9ybS9EZXByZWNhdGVkU3RyaW5nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVndWxhckV4cHJl
c3Npb24uaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDxranMvZHRvYS5o
PgorI2luY2x1ZGUgPGtqcy9pZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNs
dWRlIDxzdGRhcmcuaD4KICNpZmRlZiBXSU4zMgogI2luY2x1ZGUgIldpbmRvd3MuaCIKICNlbmRp
ZgogCit1c2luZyBuYW1lc3BhY2UgS0pTOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKICNk
ZWZpbmUgQ0hFQ0tfRk9SX0hBTkRMRV9MRUFLUyAwCkBAIC0yNjU3LDMgKzI2NTksNDIgQEAKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCitEZXByZWNhdGVkU3RyaW5nOjpEZXByZWNhdGVkU3RyaW5n
KGNvbnN0IElkZW50aWZpZXImIHN0cikKK3sKKyAgICBpZiAoc3RyLmlzTnVsbCgpKSB7CisgICAg
ICAgIGludGVybmFsRGF0YS5kZXJlZigpOworICAgICAgICBkYXRhSGFuZGxlID0gbWFrZVNoYXJl
ZE51bGxIYW5kbGUoKTsKKyAgICAgICAgZGF0YUhhbmRsZVswXS0+cmVmKCk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgZGF0YUhhbmRsZSA9IGFsbG9jYXRlSGFuZGxlKCk7CisgICAgICAgICpkYXRh
SGFuZGxlID0gJmludGVybmFsRGF0YTsKKyAgICAgICAgaW50ZXJuYWxEYXRhLmluaXRpYWxpemUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBRQ2hhcio+KHN0ci5kYXRhKCkpLCBzdHIuc2l6ZSgpKTsK
KyAgICB9Cit9CisKK0RlcHJlY2F0ZWRTdHJpbmc6OkRlcHJlY2F0ZWRTdHJpbmcoY29uc3QgVVN0
cmluZyYgc3RyKQoreworICAgIGlmIChzdHIuaXNOdWxsKCkpIHsKKyAgICAgICAgaW50ZXJuYWxE
YXRhLmRlcmVmKCk7CisgICAgICAgIGRhdGFIYW5kbGUgPSBtYWtlU2hhcmVkTnVsbEhhbmRsZSgp
OworICAgICAgICBkYXRhSGFuZGxlWzBdLT5yZWYoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBk
YXRhSGFuZGxlID0gYWxsb2NhdGVIYW5kbGUoKTsKKyAgICAgICAgKmRhdGFIYW5kbGUgPSAmaW50
ZXJuYWxEYXRhOworICAgICAgICBpbnRlcm5hbERhdGEuaW5pdGlhbGl6ZShyZWludGVycHJldF9j
YXN0PGNvbnN0IFFDaGFyKj4oc3RyLmRhdGEoKSksIHN0ci5zaXplKCkpOworICAgIH0KK30KKwor
RGVwcmVjYXRlZFN0cmluZzo6b3BlcmF0b3IgSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgaWYg
KGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gSWRlbnRpZmllcigpOworICAgIHJldHVybiBJZGVu
dGlmaWVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgS0pTOjpVQ2hhcio+KHVuaWNvZGUoKSksIGxl
bmd0aCgpKTsKK30KKworRGVwcmVjYXRlZFN0cmluZzo6b3BlcmF0b3IgVVN0cmluZygpIGNvbnN0
Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gVVN0cmluZygpOworICAgIHJl
dHVybiBVU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgS0pTOjpVQ2hhcio+KHVuaWNvZGUo
KSksIGxlbmd0aCgpKTsKK30KSW5kZXg6IHBsYXRmb3JtL1N0cmluZ0ltcGwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBwbGF0Zm9ybS9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDEzMzkzKQorKysgcGxhdGZvcm0v
U3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw4IEBACiAgICAgU3RyaW5n
SW1wbCgpIDogbCgwKSwgcygwKSwgX2hhc2goMCksIF9pblRhYmxlKGZhbHNlKSB7IH0KIHB1Ymxp
YzoKICAgICBTdHJpbmdJbXBsKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcmKTsKKyAgICBTdHJpbmdJ
bXBsKGNvbnN0IEtKUzo6SWRlbnRpZmllciYpOworICAgIFN0cmluZ0ltcGwoY29uc3QgS0pTOjpV
U3RyaW5nJik7CiAgICAgU3RyaW5nSW1wbChjb25zdCBRQ2hhciosIHVuc2lnbmVkIGxlbik7CiAg
ICAgU3RyaW5nSW1wbChjb25zdCBjaGFyKik7CiAgICAgU3RyaW5nSW1wbChjb25zdCBjaGFyKiwg
dW5zaWduZWQgbGVuKTsKSW5kZXg6IGNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNvbmZpZy5oCShy
ZXZpc2lvbiAxMzM5MykKKysrIGNvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNSArMjMs
NiBAQAogI2RlZmluZSBLSFRNTF9OT19YQkwgMQogI2RlZmluZSBLSFRNTF9YU0xUIDEKIAotLy8g
VGVtcG9yYXJ5IGRlZmluZXMgdG8gaGVscCB0aGUgbmFtZXNwYWNlIG1lcmdpbmcgYW5kIHBsYXRm
b3JtIHByb2plY3RzLgotI2RlZmluZSBET00gV2ViQ29yZQotI2RlZmluZSBLRE9NIFdlYkNvcmUK
LSNkZWZpbmUgS1NWRyBXZWJDb3JlCi0jZGVmaW5lIGtodG1sIFdlYkNvcmUKLSNkZWZpbmUgRE9N
U3RyaW5nIFN0cmluZwotI2RlZmluZSBRU3RyaW5nIERlcHJlY2F0ZWRTdHJpbmcKLSNkZWZpbmUg
cXN0cmluZygpIGRlcHJlY2F0ZWRTdHJpbmcoKQotCiAjaWYgX19BUFBMRV9fCiAjZGVmaW5lIEhB
VkVfRlVOQ19VU0xFRVAgMQogI2VuZGlmCkluZGV4OiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQkocmV2aXNpb24gMTMzOTMpCisrKyBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQkod29ya2luZyBjb3B5KQpAQCAtNzcyLDEyICs3NzIsMTIgQEAKICAgfSBlbHNpZiAoJHR5
cGUgZXEgImZsb2F0IikgewogICAgIHJldHVybiAiJHZhbHVlLT50b051bWJlcihleGVjKSI7CiAg
IH0gZWxzaWYgKCR0eXBlIGVxICJBdG9taWNTdHJpbmciKSB7Ci0gICAgcmV0dXJuICJBdG9taWNT
dHJpbmcoJHZhbHVlLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKSkiOworICAgIHJldHVybiAi
JHZhbHVlLT50b1N0cmluZyhleGVjKSI7CiAgIH0gZWxzaWYgKCR0eXBlIGVxICJET01TdHJpbmci
KSB7CiAgICAgaWYgKCRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb252ZXJ0TnVs
bFRvTnVsbFN0cmluZyJ9KSB7CiAgICAgICByZXR1cm4gInZhbHVlVG9TdHJpbmdXaXRoTnVsbENo
ZWNrKGV4ZWMsICR2YWx1ZSkiOwogICAgIH0gZWxzZSB7Ci0gICAgICByZXR1cm4gIiR2YWx1ZS0+
dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCkiOworICAgICAgcmV0dXJuICIkdmFsdWUtPnRvU3Ry
aW5nKGV4ZWMpIjsKICAgICB9CiAgIH0gZWxzaWYgKCR0eXBlIGVxICJ2aWV3czo6QWJzdHJhY3RW
aWV3IikgewogICAgICRpbXBsSW5jbHVkZXN7Imtqc192aWV3cy5oIn0gPSAxOwpJbmRleDogYmlu
ZGluZ3MvanMvSlNET01FdmVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL2pzL0pTRE9N
RXZlbnRzLmNwcAkocmV2aXNpb24gMTMzOTMpCisrKyBiaW5kaW5ncy9qcy9KU0RPTUV2ZW50cy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAK
LS8vIFRoZSBmaWxlcyBiZWxvdyBhcmUgZ2VuZXJhdGVkIGJ5IGEgc2NyaXB0LgorLy8gVGhlIGZp
bGVzIGJlbG93IGFyZSBhbGwgZ2VuZXJhdGVkIGJ5IGEgc2NyaXB0LgogCiAjaW5jbHVkZSAiSlNN
dXRhdGlvbkV2ZW50LmNwcCIKICNpbmNsdWRlICJKU1doZWVsRXZlbnQuY3BwIgpJbmRleDogYmlu
ZGluZ3MvanMvSlNET01IVE1MLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9KU0RPTUhU
TUwuY3BwCShyZXZpc2lvbiAxMzM5MykKKysrIGJpbmRpbmdzL2pzL0pTRE9NSFRNTC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLS8vIFRo
ZSBmaWxlcyBiZWxvdyBhcmUgZ2VuZXJhdGVkIGJ5IGEgc2NyaXB0LgorLy8gVGhlIGZpbGVzIGJl
bG93IGFyZSBhbGwgZ2VuZXJhdGVkIGJ5IGEgc2NyaXB0LgogCiAjaW5jbHVkZSAiSlNDYW52YXNH
cmFkaWVudC5jcHAiCiAjaW5jbHVkZSAiSlNDYW52YXNQYXR0ZXJuLmNwcCIKSW5kZXg6IGJpbmRp
bmdzL2pzL0pTRE9NQ29yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvanMvSlNET01Db3Jl
LmNwcAkocmV2aXNpb24gMTMzOTMpCisrKyBiaW5kaW5ncy9qcy9KU0RPTUNvcmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0vLyBUaGUg
ZmlsZXMgYmVsb3cgYXJlIGdlbmVyYXRlZCBieSBhIHNjcmlwdC4KKy8vIFRoZSBmaWxlcyBiZWxv
dyBhcmUgYWxsIGdlbmVyYXRlZCBieSBhIHNjcmlwdC4KIAogI2luY2x1ZGUgIkpTQXR0ci5jcHAi
CiAjaW5jbHVkZSAiSlNDaGFyYWN0ZXJEYXRhLmNwcCIKSW5kZXg6IGJpbmRpbmdzL2pzL0pTQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvanMv
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAkocmV2aXNpb24gMTMzOTMpCisrKyBi
aW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MiwxMyArNzIsMTMgQEAKICAgICAgICAgICAgIHN3aXRjaCAoYXJncy5zaXplKCkp
IHsKICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgIGlmIChhcmdz
WzBdLT5pc1N0cmluZygpKQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ry
b2tlQ29sb3IoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoYXJnc1swXS0+dG9TdHJpbmco
ZXhlYykpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihhcmdzWzBdLT50b051bWJlcihleGVjKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGFyZ3NbMF0tPmlzU3RyaW5nKCkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihhcmdzWzBdLT50b1N0cmluZyhleGVjKS5kb21T
dHJpbmcoKSwgYXJnc1sxXS0+dG9OdW1iZXIoZXhlYykpOworICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoYXJnc1swXS0+dG9TdHJpbmcoZXhlYyksIGFyZ3Nb
MV0tPnRvTnVtYmVyKGV4ZWMpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoYXJnc1swXS0+dG9OdW1iZXIo
ZXhlYyksIGFyZ3NbMV0tPnRvTnVtYmVyKGV4ZWMpKTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMDQsMTMgKzEwNCwxMyBAQAogICAgICAgICAgICAgc3dpdGNoIChhcmdzLnNpemUo
KSkgewogICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgaWYgKGFy
Z3NbMF0tPmlzU3RyaW5nKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRG
aWxsQ29sb3IoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKGFyZ3NbMF0tPnRvU3RyaW5nKGV4
ZWMpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+c2V0RmlsbENvbG9yKGFyZ3NbMF0tPnRvTnVtYmVyKGV4ZWMpKTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAg
ICAgICAgICBpZiAoYXJnc1swXS0+aXNTdHJpbmcoKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPnNldEZpbGxDb2xvcihhcmdzWzBdLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmco
KSwgYXJnc1sxXS0+dG9OdW1iZXIoZXhlYykpOworICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+c2V0RmlsbENvbG9yKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLCBhcmdzWzFdLT50b051
bWJlcihleGVjKSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihhcmdzWzBdLT50b051bWJlcihleGVjKSwgYXJn
c1sxXS0+dG9OdW1iZXIoZXhlYykpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE0
Myw3ICsxNDMsNyBAQAogICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGFyZ3NbM10tPmlzU3RyaW5nKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5zZXRTaGFkb3coYXJnc1swXS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbMV0tPnRvTnVtYmVy
KGV4ZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbMl0tPnRvTnVtYmVyKGV4
ZWMpLCBhcmdzWzNdLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXJnc1syXS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbM10tPnRvU3RyaW5n
KGV4ZWMpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+c2V0U2hhZG93KGFyZ3NbMF0tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzFdLT50
b051bWJlcihleGVjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzJdLT50b051
bWJlcihleGVjKSwgYXJnc1szXS0+dG9OdW1iZXIoZXhlYykpOwpAQCAtMTUxLDcgKzE1MSw3IEBA
CiAgICAgICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgICAgICBpZiAoYXJnc1sz
XS0+aXNTdHJpbmcoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRv
dyhhcmdzWzBdLT50b051bWJlcihleGVjKSwgYXJnc1sxXS0+dG9OdW1iZXIoZXhlYyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1syXS0+dG9OdW1iZXIoZXhlYyksIGFyZ3NbM10t
PnRvU3RyaW5nKGV4ZWMpLmRvbVN0cmluZygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFyZ3NbMl0tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzNdLT50b1N0cmluZyhleGVjKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzRdLT50b051bWJlcihleGVjKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFNo
YWRvdyhhcmdzWzBdLT50b051bWJlcihleGVjKSwgYXJnc1sxXS0+dG9OdW1iZXIoZXhlYyksCkBA
IC0yMTcsNyArMjE3LDcgQEAKICAgICAgICAgICAgICAgICBhcmdzWzNdLT50b051bWJlcihleGVj
KSwgYXJnc1s0XS0+dG9OdW1iZXIoZXhlYyksCiAgICAgICAgICAgICAgICAgYXJnc1s1XS0+dG9O
dW1iZXIoZXhlYyksIGFyZ3NbNl0tPnRvTnVtYmVyKGV4ZWMpLAogICAgICAgICAgICAgICAgIGFy
Z3NbN10tPnRvTnVtYmVyKGV4ZWMpLCBhcmdzWzhdLT50b051bWJlcihleGVjKSwKLSAgICAgICAg
ICAgICAgICBhcmdzWzldLT50b1N0cmluZyhleGVjKS5kb21TdHJpbmcoKSk7CisgICAgICAgICAg
ICAgICAgYXJnc1s5XS0+dG9TdHJpbmcoZXhlYykpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkNyZWF0
ZVBhdHRlcm46CkBAIC0yMjgsNyArMjI4LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5jcmVhdGVQYXR0ZXJuKHN0YXRpY19jYXN0PEhUTUxJ
bWFnZUVsZW1lbnQqPihzdGF0aWNfY2FzdDxKU0hUTUxFbGVtZW50Kj4oYXJnc1swXSktPmltcGwo
KSksCi0gICAgICAgICAgICAgICAgYXJnc1sxXS0+dG9TdHJpbmcoZXhlYykuZG9tU3RyaW5nKCkp
LmdldCgpKTsKKyAgICAgICAgICAgICAgICBhcmdzWzFdLT50b1N0cmluZyhleGVjKSkuZ2V0KCkp
OwogICAgIH0KIAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMjU0LDcgKzI1NCw3IEBA
CiBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gdG9IVE1MQ2FudmFzU3R5bGUoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmlzU3RyaW5nKCkp
Ci0gICAgICAgIHJldHVybiBuZXcgQ2FudmFzU3R5bGUodmFsdWUtPnRvU3RyaW5nKGV4ZWMpLmRv
bVN0cmluZygpKTsKKyAgICAgICAgcmV0dXJuIG5ldyBDYW52YXNTdHlsZSh2YWx1ZS0+dG9TdHJp
bmcoZXhlYykpOwogICAgIGlmICghdmFsdWUtPmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiAw
OwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBzdGF0aWNfY2FzdDxKU09iamVjdCo+KHZhbHVlKTsK
SW5kZXg6IGh0bWwvQ2FudmFzR3JhZGllbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGh0bWwvQ2FudmFz
R3JhZGllbnQuaWRsCShyZXZpc2lvbiAxMzM5MykKKysrIGh0bWwvQ2FudmFzR3JhZGllbnQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw0ICsyNiwzIEBACiAgICAgfTsKIAogfQotCkluZGV4OiBo
dG1sL0NhbnZhc1BhdHRlcm4uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGh0bWwvQ2FudmFzUGF0dGVybi5p
ZGwJKHJldmlzaW9uIDEzMzkzKQorKysgaHRtbC9DYW52YXNQYXR0ZXJuLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjQsNCArMjQsMyBAQAogICAgIH07CiAKIH0KLQpJbmRleDogaHRtbC9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGh0bWwvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmlkbAkocmV2aXNpb24gMTMzOTMpCisrKyBodG1sL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTc5LDQgKzc5LDMgQEAKICAgICB9OwogCiB9
Ci0KSW5kZXg6IGRvbS9QbGF0Zm9ybVdoZWVsRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRvbS9Q
bGF0Zm9ybVdoZWVsRXZlbnQuaWRsCShyZXZpc2lvbiAxMzM5MykKKysrIGRvbS9QbGF0Zm9ybVdo
ZWVsRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw0ICszOSwzIEBACiAgICAgfTsKIAog
fQotCkluZGV4OiBkb20vRG9jdW1lbnRUeXBlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vRG9jdW1l
bnRUeXBlLmlkbAkocmV2aXNpb24gMTMzOTMpCisrKyBkb20vRG9jdW1lbnRUeXBlLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNCArMzYsMyBAQAogICAgIH07CiAKIH0KLQpJbmRleDogZG9tL0RP
TUltcGxlbWVudGF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vRE9NSW1wbGVtZW50YXRpb24u
aWRsCShyZXZpc2lvbiAxMzM5MykKKysrIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDQgKzQ5LDMgQEAKICAgICB9OwogCiB9Ci0KSW5kZXg6IGRvbS9FbnRp
dHkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGRvbS9FbnRpdHkuaWRsCShyZXZpc2lvbiAxMzM5MykKKysr
IGRvbS9FbnRpdHkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw0ICsyNiwzIEBACiAgICAgfTsK
IAogfQotCkluZGV4OiBkb20vVGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZG9tL1RleHQuaWRsCShy
ZXZpc2lvbiAxMzM5MykKKysrIGRvbS9UZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksNCAr
MjksMyBAQAogICAgIH07CiAKIH0KLQpJbmRleDogZG9tL0VsZW1lbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGRvbS9FbGVtZW50LmlkbAkocmV2aXNpb24gMTMzOTMpCisrKyBkb20vRWxlbWVudC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDQgKzgyLDMgQEAKICAgICB9OwogCiB9Ci0KSW5kZXg6IGRv
bS9Ob3RhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZG9tL05vdGF0aW9uLmlkbAkocmV2aXNpb24g
MTMzOTMpCisrKyBkb20vTm90YXRpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw0ICsyNSwz
IEBACiAgICAgfTsKIAogfQotCkluZGV4OiBkb20vTXV0YXRpb25FdmVudC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gZG9tL011dGF0aW9uRXZlbnQuaWRsCShyZXZpc2lvbiAxMzM5MykKKysrIGRvbS9NdXRh
dGlvbkV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDUsNCArNDUsMyBAQAogICAgIH07CiAK
IH0KLQpJbmRleDogZG9tL0F0dHIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRvbS9BdHRyLmlkbAkocmV2
aXNpb24gMTMzOTMpCisrKyBkb20vQXR0ci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDQgKzM4
LDMgQEAKICAgICB9OwogCiB9Ci0KSW5kZXg6IGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaWRsCShyZXZpc2lvbiAx
MzM5MykKKysrIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw0ICszNCwzIEBACiAgICAgfTsKIAogfQotCkluZGV4OiBkb20vUXVhbGlmaWVkTmFtZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gZG9tL1F1YWxpZmllZE5hbWUuY3BwCShyZXZpc2lvbiAxMzM5MykK
KysrIGRvbS9RdWFsaWZpZWROYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDcgKzE2Nyw3
IEBACiB7CiAgICAgU3RyaW5nIGxvY2FsID0gbG9jYWxOYW1lKCk7CiAgICAgaWYgKGhhc1ByZWZp
eCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKHByZWZpeCgpKSArICI6IiArIGxvY2FsOworICAg
ICAgICByZXR1cm4gcHJlZml4KCkgKyAiOiIgKyBsb2NhbDsKICAgICByZXR1cm4gbG9jYWw7CiB9
CiAKSW5kZXg6IGRvbS9DaGFyYWN0ZXJEYXRhLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vQ2hhcmFj
dGVyRGF0YS5pZGwJKHJldmlzaW9uIDEzMzkzKQorKysgZG9tL0NoYXJhY3RlckRhdGEuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC00OSw0ICs0OSwzIEBACiAgICAgfTsKIAogfQotCkluZGV4OiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzM5MykKKysrIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTA2Niw3ICs1MDY2LDcgQEAK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNo
ZWxsUGF0aCA9IC9iaW4vc2g7Ci0JCQlzaGVsbFNjcmlwdCA9ICJrc3ZnMi9zY3JpcHRzL21ha2Vf
bmFtZXMucGwgLS10YWdzIGtzdmcyL3N2Zy9zdmd0YWdzLmluIC0tYXR0cnMga3N2ZzIvc3ZnL3N2
Z2F0dHJzLmluIFxcXG4gICAgLS1uYW1lc3BhY2UgU1ZHIC0tY3BwTmFtZXNwYWNlIEtTVkcgLS1u
YW1lc3BhY2VVUkkgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIFxcXG4gICAgLS1mYWN0
b3J5IC0tYXR0cnNOdWxsTmFtZXNwYWNlIC0tb3V0cHV0IFwiJERFUklWRURfRklMRV9ESVJcIlxu
dG91Y2ggV2ViQ29yZStTVkcvU1ZHTmFtZXNXcmFwcGVyLmNwcFxudG91Y2ggV2ViQ29yZStTVkcv
U1ZHRWxlbWVudEZhY3RvcnlXcmFwcGVyLmNwcFxuIjsKKwkJCXNoZWxsU2NyaXB0ID0gImtzdmcy
L3NjcmlwdHMvbWFrZV9uYW1lcy5wbCAtLXRhZ3Mga3N2ZzIvc3ZnL3N2Z3RhZ3MuaW4gLS1hdHRy
cyBrc3ZnMi9zdmcvc3ZnYXR0cnMuaW4gXFxcbiAgICAtLW5hbWVzcGFjZSBTVkcgLS1jcHBOYW1l
c3BhY2UgV2ViQ29yZSAtLW5hbWVzcGFjZVVSSSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
XCIgXFxcbiAgICAtLWZhY3RvcnkgLS1hdHRyc051bGxOYW1lc3BhY2UgLS1vdXRwdXQgXCIkREVS
SVZFRF9GSUxFX0RJUlwiXG50b3VjaCBXZWJDb3JlK1NWRy9TVkdOYW1lc1dyYXBwZXIuY3BwXG50
b3VjaCBXZWJDb3JlK1NWRy9TVkdFbGVtZW50RmFjdG9yeVdyYXBwZXIuY3BwXG4iOwogCQl9Owog
CQlBODhBRDUyNTA5NTI0QTM0MDAxREQxOTYgLyogWExpbmtOYW1lcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKQEAgLTUwODUsNyArNTA4NSw3IEBACiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlzaGVsbFBhdGgg
PSAvYmluL3NoOwotCQkJc2hlbGxTY3JpcHQgPSAia3N2ZzIvc2NyaXB0cy9tYWtlX25hbWVzLnBs
IC0tYXR0cnMga3N2ZzIvbWlzYy94bGlua2F0dHJzLmluIC0tbmFtZXNwYWNlIFhMaW5rIC0tY3Bw
TmFtZXNwYWNlIERPTSAtLW5hbWVzcGFjZVVSSSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxp
bmtcIiAtLW91dHB1dCBcIiRERVJJVkVEX0ZJTEVfRElSXCJcbnRvdWNoIFdlYkNvcmUrU1ZHL1hM
aW5rTmFtZXNXcmFwcGVyLmNwcCI7CisJCQlzaGVsbFNjcmlwdCA9ICJrc3ZnMi9zY3JpcHRzL21h
a2VfbmFtZXMucGwgLS1hdHRycyBrc3ZnMi9taXNjL3hsaW5rYXR0cnMuaW4gLS1uYW1lc3BhY2Ug
WExpbmsgLS1jcHBOYW1lc3BhY2UgV2ViQ29yZSAtLW5hbWVzcGFjZVVSSSBcImh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmtcIiAtLW91dHB1dCBcIiRERVJJVkVEX0ZJTEVfRElSXCJcbnRvdWNo
IFdlYkNvcmUrU1ZHL1hMaW5rTmFtZXNXcmFwcGVyLmNwcCI7CiAJCX07CiAJCUE4OEFENTI5MDk1
MjRBNEEwMDFERDE5NiAvKiBrc3ZnY3NzcHJvcGVydGllcy5jL2ggKi8gPSB7CiAJCQlpc2EgPSBQ
QlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CkBAIC01MTAzLDcgKzUxMDMsNyBAQAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQkJc2hlbGxQYXRoID0g
L2Jpbi9zaDsKLQkJCXNoZWxsU2NyaXB0ID0gImVjaG8gXCJGaXJzdCBjaGVja2luZyBmb3IgZHVw
bGljYXRlIENTU1Byb3BlcnR5TmFtZXMgYmV0d2VlbiBodG1sIGFuZCBTVkcuLi5cIlxuY2F0IGNz
cy9DU1NQcm9wZXJ0eU5hbWVzLmluIGtzdmcyL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluIHwgc29y
dCB8IHVuaXEgLWMgfCBncmVwIC12IDEgfCBhd2sgJ3twcmludCAkMjt9JyB8IGdyZXAgLUUgJ15b
XiNdJ1xuaWYgWyAkPyAtZXEgMCBdOyB0aGVuXG5cdGVjaG8gXCJEdXBsaWNhdGUgcHJvcGVydHkh
XCI7XG5cdGV4aXQgMTtcbmZpXG5cbmNhdCBrc3ZnMi9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbiA+
IFwiJERFUklWRURfRklMRV9ESVIva3N2Z2Nzc3Byb3BlcnRpZXMuaW5cIlxuY2QgXCIkREVSSVZF
RF9GSUxFX0RJUlwiXG5cIiRTUkNST09UL2tzdmcyL3NjcmlwdHMvY3NzbWFrZXByb3BzXCIgLW4g
S1NWRyAtZiBrc3ZnY3NzcHJvcGVydGllcy5pbiI7CisJCQlzaGVsbFNjcmlwdCA9ICJjYXQgY3Nz
L0NTU1Byb3BlcnR5TmFtZXMuaW4ga3N2ZzIvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4gfCBzb3J0
IHwgdW5pcSAtYyB8IGdyZXAgLXYgMSB8IGF3ayAne3ByaW50ICQyO30nIHwgZ3JlcCAtRSAnXlte
I10nXG5pZiBbICQ/IC1lcSAwIF07IHRoZW5cblx0ZWNobyBcIkR1cGxpY2F0ZSBwcm9wZXJ0eSFc
Ijtcblx0ZXhpdCAxO1xuZmlcblxuY2F0IGtzdmcyL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluID4g
XCIkREVSSVZFRF9GSUxFX0RJUi9rc3ZnY3NzcHJvcGVydGllcy5pblwiXG5jZCBcIiRERVJJVkVE
X0ZJTEVfRElSXCJcblwiJFNSQ1JPT1Qva3N2ZzIvc2NyaXB0cy9jc3NtYWtlcHJvcHNcIiAtbiBT
VkcgLWYga3N2Z2Nzc3Byb3BlcnRpZXMuaW5cbiI7CiAJCX07CiAJCUE4OEFENTJCMDk1MjRBNTIw
MDFERDE5NiAvKiBrc3ZnY3NzdmFsdWVzLmMvaCAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2Ny
aXB0QnVpbGRQaGFzZTsKQEAgLTUxMjEsNyArNTEyMSw3IEBACiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwot
CQkJc2hlbGxTY3JpcHQgPSAiZWNobyBcIkZpcnN0IGNoZWNraW5nIGZvciBkdXBsaWNhdGUgQ1NT
VmFsdWVLZXl3b3JkcyBiZXR3ZWVuIGh0bWwgYW5kIFNWRy4uLlwiXG5jYXQgY3NzL0NTU1ZhbHVl
S2V5d29yZHMuaW4ga3N2ZzIvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gfCBzb3J0IHwgdW5pcSAt
YyB8IGdyZXAgLXYgMSB8IGF3ayAne3ByaW50ICQyO30nIHwgZ3JlcCAtRSAnXlteI10nXG5pZiBb
ICQ/IC1lcSAwIF07IHRoZW5cblx0ZWNobyBcIkR1cGxpY2F0ZSB2YWx1ZSFcIjtcblx0ZXhpdCAx
O1xuZmlcblxuIyBMb3dlciBjYXNlIGFsbCB0aGUgdmFsdWVzLCBhcyBDU1MgdmFsdWVzIGFyZSBj
YXNlLWluc2Vuc2l0aXZlXG5jYXQga3N2ZzIvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gfCBwZXJs
IC1wZSAnJF8gPSBsYzsnID4gXCIkREVSSVZFRF9GSUxFX0RJUi9rc3ZnY3NzdmFsdWVzLmluXCJc
bmNkIFwiJERFUklWRURfRklMRV9ESVJcIlxuXCIkU1JDUk9PVC9rc3ZnMi9zY3JpcHRzL2Nzc21h
a2V2YWx1ZXNcIiAtbiBLU1ZHIC1mIGtzdmdjc3N2YWx1ZXMuaW4iOworCQkJc2hlbGxTY3JpcHQg
PSAiY2F0IGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluIGtzdmcyL2Nzcy9DU1NWYWx1ZUtleXdvcmRz
LmluIHwgc29ydCB8IHVuaXEgLWMgfCBncmVwIC12IDEgfCBhd2sgJ3twcmludCAkMjt9JyB8IGdy
ZXAgLUUgJ15bXiNdJ1xuaWYgWyAkPyAtZXEgMCBdOyB0aGVuXG5cdGVjaG8gXCJEdXBsaWNhdGUg
dmFsdWUhXCI7XG5cdGV4aXQgMTtcbmZpXG5cbiMgTG93ZXIgY2FzZSBhbGwgdGhlIHZhbHVlcywg
YXMgQ1NTIHZhbHVlcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZVxuY2F0IGtzdmcyL2Nzcy9DU1NWYWx1
ZUtleXdvcmRzLmluIHwgcGVybCAtcGUgJyRfID0gbGM7JyA+IFwiJERFUklWRURfRklMRV9ESVIv
a3N2Z2Nzc3ZhbHVlcy5pblwiXG5jZCBcIiRERVJJVkVEX0ZJTEVfRElSXCJcblwiJFNSQ1JPT1Qv
a3N2ZzIvc2NyaXB0cy9jc3NtYWtldmFsdWVzXCIgLW4gU1ZHIC1mIGtzdmdjc3N2YWx1ZXMuaW5c
biI7CiAJCX07CiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIApJ
bmRleDogQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIENoYW5nZUxvZwkocmV2aXNpb24gMTMzOTMp
CisrKyBDaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSwyNTYgQEAKIDIwMDYtMDMt
MTkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4u
b3JnL3Nob3dfYnVnLmNnaT9pZD03ODY3CisgICAgICAgICAgZ2V0IHJpZCBvZiBtYWNybyBoYWNr
cyBmb3IgRE9NLCBLRE9NLCBLU1ZHLCBraHRtbCwgRE9NU3RyaW5nLCBRU3RyaW5nCisKKyAgICAg
ICAgKiBjb25maWcuaDogUmVtb3ZlIHRoZSBkZWZpbmVzIGZvciBET00sIEtET00sIEtTVkcsIGto
dG1sLCBET01TdHJpbmcsIFFTdHJpbmcsCisgICAgICAgIGFuZCBxc3RyaW5nKCkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFBhc3MgaW4gV2ViQ29yZSBp
bnN0ZWFkIG9mIEtTVkcgYXMgdGhlCisgICAgICAgIG5hbWVzcGFjZSBmb3IgU1ZHIG5hbWVzLgor
ICAgICAgICAqIGtzdmcyL3NjcmlwdHMvbWFrZV9uYW1lcy5wbDogTWFkZSBhIGNvdXBsZSBjaGFu
Z2VzIHRvIHRyaWNrIHRoZSBTVkcgbmFtZXMgaW50bworICAgICAgICByZWNvbXBpbGluZywgc2lu
Y2UgdGhleSBhcmUgaW4gYSBkaWZmZXJlbnQgbmFtZXNwYWNlIG5vdy4KKworICAgICAgICAqIEZv
cndhcmRpbmdIZWFkZXJzL2tqcy9pZGVudGlmaWVyLmg6IEFkZGVkLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01Db3JlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUV2ZW50
cy5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01IVE1MLmNwcDoKKyAgICAgICAgKiBk
b20vQXR0ci5pZGw6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuaWRsOgorICAgICAgICAq
IGRvbS9ET01JbXBsZW1lbnRhdGlvbi5pZGw6CisgICAgICAgICogZG9tL0RvY3VtZW50VHlwZS5p
ZGw6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9FbnRpdHkuaWRs
OgorICAgICAgICAqIGRvbS9NdXRhdGlvbkV2ZW50LmlkbDoKKyAgICAgICAgKiBkb20vTm90YXRp
b24uaWRsOgorICAgICAgICAqIGRvbS9QbGF0Zm9ybVdoZWVsRXZlbnQuaWRsOgorICAgICAgICAq
IGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaWRsOgorICAgICAgICAqIGRvbS9UZXh0LmlkbDoK
KyAgICAgICAgKiBodG1sL0NhbnZhc0dyYWRpZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0NhbnZh
c1BhdHRlcm4uaWRsOgorICAgICAgICAqIGh0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlk
bDoKKyAgICAgICAgVG91Y2hlZCwgdG8gZ2V0IENvZGVHZW5lcmF0b3JKUy5wbSBjaGFuZ2VzIHRv
IHRha2UgZWZmZWN0LgorIAorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICog
Y3NzL2Nzc192YWx1ZWltcGwuY3BwOiAoV2ViQ29yZTo6cHJvcGVydHlJRCk6CisgICAgICAgIENo
YW5nZWQgY2FsbHMgdG8gZ2V0IENTUyBwcm9wZXJ0eSB2YWx1ZXMgdG8gdXNlIGFuIGV4cGxpY2l0
IFNWRzo6IG5hbWVzcGFjZSwKKyAgICAgICAgdG8gbWF0Y2ggd2hhdCB0aGUgc2NyaXB0IHdyaXRl
cyBvdXQuCisKKyAgICAgICAgKiBraHRtbC9lY21hL2tqc19iaW5kaW5nLmg6IEFkZGVkIGZvcndh
cmQgZGVjbGFyYXRpb24gb2YgV2ViQ29yZTo6U3RyaW5nLgorCisgICAgICAgICoga3N2ZzIvc2Ny
aXB0cy9jc3NtYWtlZ2V0IHJpZCBvZiBtYWNybyBoYWNrcyBmb3IgRE9NLCBLRE9NLCBLU1ZHLCBr
aHRtbCwgRE9NU3RyaW5nLCBRU3RyaW5nCisgICAgICAgICAgcHJvcHM6IE1hZGUgdGhpcyBjb21w
aWxlIHdpdGggd2FybmluZ3MgYW5kIHN0cmljdCB0dXJuZWQgb24uCisgICAgICAgIFJlYWxseSBq
dXN0IGEgdHJpY2sgdG8gZ2V0IHByb3BlcnRpZXMgdG8gcmVjb21waWxlLCB3aGljaCB0dXJuZWQg
b3V0IHRvIGJlIHVubmVlZGVkLgorICAgICAgICAqIGtzdmcyL3NjcmlwdHMvY3NzbWFrZXZhbHVl
czogRGl0dG8uCisKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAg
ICAoU1ZHQUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFNWR0FFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0
ZVRyYW5zZm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5pbWF0
aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChTVkdBbmltYXRpb25FbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHA6
CisgICAgICAgIChTVkdDbGlwUGF0aEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAg
ICAgICAgKiBrc3ZnMi9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZC5jcHA6CisgICAgICAgIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFNWR0ZFQmxlbmRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6
CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6
CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHA6CisgICAgICAg
IChTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAg
KiBrc3ZnMi9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUp
OgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwOgor
ICAgICAgICAoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpTVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQpOgorICAgICAgICAoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpzdHJpbmdU
b0NoYW5uZWwpOgorICAgICAgICAoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmZp
bHRlckVmZmVjdCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHA6CisgICAg
ICAgIChTVkdGRUZsb29kRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwOgorICAgICAgICAoU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFNWR0ZFSW1hZ2VFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFTGlnaHRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFNWR0ZFTGlnaHRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAg
ICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFNWR0ZF
T2Zmc2V0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFNWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChTVkdGRVRpbGVFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcDoK
KyAgICAgICAgKFNWR0ZpbHRlckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFNWR0dyYWRp
ZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQb2x5RWxlbWVudC5j
cHA6CisgICAgICAgIChTVkdQb2x5RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGtzdmcyL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHA6CisgICAgICAgIChTVkdTdG9wRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTdHls
ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVGVzdHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAg
KiBrc3ZnMi9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFNWR1RleHRD
b250ZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFNWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHVmlld0VsZW1lbnQuY3BwOgorICAgICAgICAoU1ZHVmlld0VsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHWm9vbUFuZFBhbi5jcHA6CisgICAg
ICAgIChTVkdab29tQW5kUGFuOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIENoYW5n
ZWQgY29kZSB0aGF0IGNvbnZlcnRzIGFuIEF0b21pY1N0cmluZyB0byBhIFN0cmluZyB0byBkbyBp
dCBpbiBhCisgICAgICAgIG1vcmUtZWZmaWNpZW50IGZhc2hpb24gdGhhdCB3b3JrcyBldmVuIHdp
dGggYWxsIHRoZSBuZXcgY29udmVyc2lvbnMuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmdldFN0cmluZyk6IFJlbW92ZWQgdW5uZWVkZWQgLmRlcHJlY2F0
ZWRTdHJpbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpiZWdpbik6IFJlbW92ZWQgdGhl
IG9ubHkgdXNlIG9mIFFTVFJJTkdfTlVMTC4KKworICAgICAgICAqIHBsYXRmb3JtL0F0b21pY1N0
cmluZy5oOiBBZGRlZCBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIEtKUzo6SWRlbnRpZmllcgorICAg
ICAgICBhbmQgS0pTOjpVU3RyaW5nLgorICAgICAgICAqIHBsYXRmb3JtL0F0b21pY1N0cmluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNTdHJpbmc6OmFkZCk6IEFkZGVkIG92ZXJsb2Fk
cyBmb3IgSWRlbnRpZmllciBhbmQgVVN0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY1N0
cmluZzo6b3BlcmF0b3IgSWRlbnRpZmllcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXRv
bWljU3RyaW5nOjpvcGVyYXRvciBVU3RyaW5nKTogQWRkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9EZXByZWNhdGVkU3RyaW5nLmg6IEFkZGVkIGNvbnZlcnNpb24gdG8gYW5kIGZyb20gS0pTOjpJ
ZGVudGlmaWVyCisgICAgICAgIGFuZCBLSlM6OlVTdHJpbmcuCisgICAgICAgICogcGxhdGZvcm0v
RGVwcmVjYXRlZFN0cmluZy5jcHA6CisgICAgICAgIChEZXByZWNhdGVkU3RyaW5nOjpEZXByZWNh
dGVkU3RyaW5nKTogQWRkZWQgb3ZlcmxvYWRzIGZvciBJZGVudGlmaWVyIGFuZCBVU3RyaW5nLgor
ICAgICAgICAoRGVwcmVjYXRlZFN0cmluZzo6b3BlcmF0b3IgSWRlbnRpZmllcik6IEFkZGVkLgor
ICAgICAgICAoRGVwcmVjYXRlZFN0cmluZzo6b3BlcmF0b3IgVVN0cmluZyk6IEFkZGVkLgorCisg
ICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TdHJpbmcuaDogQWRkZWQgY29udmVyc2lvbiB0byBh
bmQgZnJvbSBLSlM6OklkZW50aWZpZXIKKyAgICAgICAgYW5kIEtKUzo6VVN0cmluZy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9TdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nOjpTdHJp
bmcpOiBBZGRlZCBvdmVybG9hZHMgZm9yIElkZW50aWZpZXIgYW5kIFVTdHJpbmcuCisgICAgICAg
IChXZWJDb3JlOjpTdHJpbmc6Om9wZXJhdG9yIElkZW50aWZpZXIpOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0cmluZzo6b3BlcmF0b3IgVVN0cmluZyk6IEFkZGVkLgorCisgICAgICAgICog
cGxhdGZvcm0vU3RyaW5nSW1wbC5oOiBBZGRlZCBjb25zdHJ1Y3RvcnMgdGhhdCB0YWtlIEtKUzo6
SWRlbnRpZmllcgorICAgICAgICBhbmQgS0pTOjpVU3RyaW5nCisgICAgICAgICogcGxhdGZvcm0v
U3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRXb3JkQnJlYWtJdGVyYXRvcik6
IENoYW5nZWQgYSB1c2Ugb2YgVUNoYXIgdG8gc2F5IDo6VUNoYXIKKyAgICAgICAgaW5zdGVhZCBi
ZWNhdXNlIG9mIGFtYmlndWl0eSB3aXRoIEtKUzo6VUNoYXIuCisgICAgICAgIChXZWJDb3JlOjpT
dHJpbmdJbXBsOjpTdHJpbmdJbXBsKTogQWRkZWQgb3ZlcmxvYWRzIGZvciBJZGVudGlmaWVyIGFu
ZCBTdHJpbmcuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlUHJvdG9GdW5jOjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjp0b0hU
TUxDYW52YXNTdHlsZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG06CisgICAgICAgICogYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW06CisgICAg
ICAgIChhZURlc2NGcm9tSlNWYWx1ZSk6CisgICAgICAgICgtW1dlYkNvcmVGcmFtZUJyaWRnZSBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0dXJlOl0p
OgorICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1
YWxpZmllZE5hbWU6OnRvU3RyaW5nKToKKyAgICAgICAgKiBraHRtbC9lY21hL0pTRE9NUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEtKUzo6RE9NUGFyc2VyUHJvdG9GdW5jOjpjYWxsQXNGdW5jdGlvbik6
CisgICAgICAgICoga2h0bWwvZWNtYS9KU1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKEtK
Uzo6SlNYTUxIdHRwUmVxdWVzdFByb3RvRnVuYzo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAq
IGtodG1sL2VjbWEvSlNYU0xUUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKEtKUzo6WFNMVFByb2Nl
c3NvclByb3RvRnVuYzo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAqIGtodG1sL2VjbWEva2pz
X2JpbmRpbmcuY3BwOgorICAgICAgICAoS0pTOjp2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayk6
CisgICAgICAgICoga2h0bWwvZWNtYS9ranNfY3NzLmNwcDoKKyAgICAgICAgKEtKUzo6Y3NzUHJv
cGVydHlOYW1lKToKKyAgICAgICAgKEtKUzo6RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0KToK
KyAgICAgICAgKEtKUzo6RE9NQ1NTU3R5bGVEZWNsYXJhdGlvblByb3RvRnVuYzo6Y2FsbEFzRnVu
Y3Rpb24pOgorICAgICAgICAoS0pTOjpET01TdHlsZVNoZWV0TGlzdDo6bmFtZUdldHRlcik6Cisg
ICAgICAgIChLSlM6OkRPTVN0eWxlU2hlZXRMaXN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoS0pTOjpET01NZWRpYUxpc3Q6OnB1dCk6CisgICAgICAgIChLSlM6OktKUzo6RE9NTWVk
aWFMaXN0UHJvdG9GdW5jOjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChLSlM6OkRPTUNTU1N0
eWxlU2hlZXRQcm90b0Z1bmM6OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKEtKUzo6RE9NQ1NT
UnVsZTo6cHV0VmFsdWVQcm9wZXJ0eSk6CisgICAgICAgIChLSlM6OkRPTUNTU1J1bGVGdW5jOjpj
YWxsQXNGdW5jdGlvbik6CisgICAgICAgIChLSlM6OkRPTUNTU1ZhbHVlOjpwdXQpOgorICAgICAg
ICAoS0pTOjpET01DU1NQcmltaXRpdmVWYWx1ZVByb3RvRnVuYzo6Y2FsbEFzRnVuY3Rpb24pOgor
ICAgICAgICAqIGtodG1sL2VjbWEva2pzX2RvbS5jcHA6CisgICAgICAgIChLSlM6OkRPTU5vZGU6
OnB1dFZhbHVlUHJvcGVydHkpOgorICAgICAgICAoS0pTOjpET01Ob2RlOjp0b1N0cmluZyk6Cisg
ICAgICAgIChLSlM6OkRPTU5vZGVQcm90b0Z1bmM6OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAg
KEtKUzo6RE9NRXZlbnRUYXJnZXROb2RlUHJvdG9GdW5jOjpjYWxsQXNGdW5jdGlvbik6CisgICAg
ICAgIChLSlM6OkRPTU5vZGVMaXN0OjpuYW1lR2V0dGVyKToKKyAgICAgICAgKEtKUzo6RE9NTm9k
ZUxpc3Q6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChLSlM6OkRPTURvY3VtZW50Ojpw
dXRWYWx1ZVByb3BlcnR5KToKKyAgICAgICAgKEtKUzo6RE9NRG9jdW1lbnRQcm90b0Z1bmM6OmNh
bGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKEtKUzo6RE9NRWxlbWVudDo6YXR0cmlidXRlR2V0dGVy
KToKKyAgICAgICAgKEtKUzo6RE9NRWxlbWVudDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEtKUzo6RE9NTmFtZWROb2RlTWFwOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKEtKUzo6RE9N
TmFtZWROb2RlTWFwOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoS0pTOjpET01OYW1l
ZE5vZGVNYXBQcm90b0Z1bmM6OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKEtKUzo6RE9NTmFt
ZWROb2Rlc0NvbGxlY3Rpb246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICoga2h0bWwv
ZWNtYS9ranNfZXZlbnRzLmNwcDoKKyAgICAgICAgKEtKUzo6SlNBYnN0cmFjdEV2ZW50TGlzdGVu
ZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKEtKUzo6RE9NRXZlbnQ6OmdldFZhbHVlUHJvcGVy
dHkpOgorICAgICAgICAoS0pTOjpET01FdmVudFByb3RvRnVuYzo6Y2FsbEFzRnVuY3Rpb24pOgor
ICAgICAgICAoS0pTOjpET01VSUV2ZW50UHJvdG9GdW5jOjpjYWxsQXNGdW5jdGlvbik6CisgICAg
ICAgIChLSlM6OkRPTU1vdXNlRXZlbnRQcm90b0Z1bmM6OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAg
ICAgKEtKUzo6RE9NS2V5Ym9hcmRFdmVudFByb3RvRnVuYzo6Y2FsbEFzRnVuY3Rpb24pOgorICAg
ICAgICAoS0pTOjpDbGlwYm9hcmQ6OnB1dFZhbHVlUHJvcGVydHkpOgorICAgICAgICAoS0pTOjpD
bGlwYm9hcmRQcm90b0Z1bmM6OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKiBraHRtbC9lY21h
L2tqc19odG1sLmNwcDoKKyAgICAgICAgKEtKUzo6SFRNTERvY0Z1bmN0aW9uOjpjYWxsQXNGdW5j
dGlvbik6CisgICAgICAgIChLSlM6OkpTSFRNTERvY3VtZW50OjpuYW1lZEl0ZW1HZXR0ZXIpOgor
ICAgICAgICAoS0pTOjpKU0hUTUxEb2N1bWVudDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEtKUzo6SlNIVE1MRG9jdW1lbnQ6OnB1dFZhbHVlUHJvcGVydHkpOgorICAgICAgICAoS0pT
OjpKU0hUTUxFbGVtZW50OjpmcmFtZXNldE5hbWVHZXR0ZXIpOgorICAgICAgICAoS0pTOjpKU0hU
TUxFbGVtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoS0pTOjpIVE1MRWxlbWVu
dEZ1bmN0aW9uOjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChLSlM6OkpTSFRNTEVsZW1lbnQ6
OnB1dFZhbHVlUHJvcGVydHkpOgorICAgICAgICAoS0pTOjpKU0hUTUxDb2xsZWN0aW9uOjpjYWxs
QXNGdW5jdGlvbik6CisgICAgICAgIChLSlM6OkpTSFRNTENvbGxlY3Rpb246OmdldE5hbWVkSXRl
bXMpOgorICAgICAgICAoS0pTOjpIVE1MQ29sbGVjdGlvblByb3RvRnVuYzo6Y2FsbEFzRnVuY3Rp
b24pOgorICAgICAgICAoS0pTOjpPcHRpb25Db25zdHJ1Y3RvckltcDo6Y29uc3RydWN0KToKKyAg
ICAgICAgKiBraHRtbC9lY21hL2tqc19uYXZpZ2F0b3IuY3BwOgorICAgICAgICAoS0pTOjpQbHVn
aW5zOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKEtKUzo6UGx1Z2luczo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEtKUzo6TWltZVR5cGVzOjpuYW1lR2V0dGVyKToKKyAgICAgICAgKEtK
Uzo6TWltZVR5cGVzOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoS0pTOjpQbHVnaW46
Om5hbWVHZXR0ZXIpOgorICAgICAgICAoS0pTOjpQbHVnaW46OmdldE93blByb3BlcnR5U2xvdCk6
CisgICAgICAgICoga2h0bWwvZWNtYS9ranNfcHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
S0pTUHJveHk6OmV2YWx1YXRlKToKKyAgICAgICAgKiBraHRtbC9lY21hL2tqc19yYW5nZS5jcHA6
CisgICAgICAgIChLSlM6OkRPTVJhbmdlUHJvdG9GdW5jOjpjYWxsQXNGdW5jdGlvbik6CisgICAg
ICAgICoga2h0bWwvZWNtYS9ranNfdmlld3MuY3BwOgorICAgICAgICAoS0pTOjpET01BYnN0cmFj
dFZpZXdQcm90b0Z1bmM6OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKiBraHRtbC9lY21hL2tq
c193aW5kb3cuY3BwOgorICAgICAgICAoS0pTOjpwYXJzZU1vZGFsRGlhbG9nRmVhdHVyZXMpOgor
ICAgICAgICAoS0pTOjpzaG93TW9kYWxEaWFsb2cpOgorICAgICAgICAoS0pTOjpXaW5kb3c6OmNo
aWxkRnJhbWVHZXR0ZXIpOgorICAgICAgICAoS0pTOjpXaW5kb3c6Om5hbWVkRnJhbWVHZXR0ZXIp
OgorICAgICAgICAoS0pTOjpXaW5kb3c6Om5hbWVkSXRlbUdldHRlcik6CisgICAgICAgIChLSlM6
OldpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEtKUzo6V2luZG93OjpwdXQp
OgorICAgICAgICAoS0pTOjpXaW5kb3dGdW5jOjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgIChL
SlM6OlNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZSk6CisgICAgICAgIChLSlM6OldpbmRvdzo6aW5z
dGFsbFRpbWVvdXQpOgorICAgICAgICAoS0pTOjpGcmFtZUFycmF5OjpuYW1lR2V0dGVyKToKKyAg
ICAgICAgKEtKUzo6RnJhbWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEtK
Uzo6TG9jYXRpb246OnB1dCk6CisgICAgICAgIChLSlM6OkxvY2F0aW9uRnVuYzo6Y2FsbEFzRnVu
Y3Rpb24pOgorICAgICAgICAoS0pTOjpTZWxlY3Rpb25GdW5jOjpjYWxsQXNGdW5jdGlvbik6Cisg
ICAgICAgIFJlbW92ZWQgZXhwbGljaXQgY2FsbHMgdG8gZG9tU3RyaW5nKCksIHNvbWV0aW1lcyBy
ZXBsYWNpbmcgd2l0aCBleHBsaWNpdCBjYWxscyB0byB0aGUKKyAgICAgICAgU3RyaW5nKCkgY29u
c3RydWN0b3IuIE90aGVyIHNpbWlsYXIgY2hhbmdlcyBmb3IgQXRvbWljU3RyaW5nIGFuZCBEZXBy
ZWNhdGVkU3RyaW5nIHVzZS4KKworMjAwNi0wMy0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKICAgICAgICAgLSBnbG9iYWwgcmVuYW1lLCBkb25lIGJ5IHNjcmlwdAogCiAgICAg
ICAgICogPGxvdHMgb2YgZmlsZXM+OiBSZW5hbWVkIFhYWEltcGwgdG8gWFhYLCBhbmQgYSBudW1i
ZXIgb2Ygb3RoZXIgcmVuYW1lcy4KSW5kZXg6IGNzcy9jc3NfdmFsdWVpbXBsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBjc3MvY3NzX3ZhbHVlaW1wbC5jcHAJKHJldmlzaW9uIDEzMzkzKQorKysgY3NzL2Nz
c192YWx1ZWltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBACiAgICAgaW50
IGlkID0gZ2V0UHJvcGVydHlJRChidWZmZXIsIGxlbik7CiAjaWYgU1ZHX1NVUFBPUlQKICAgICBp
ZiAoaWQgPT0gMCkKLSAgICAgICAgaWQgPSBnZXRTVkdDU1NQcm9wZXJ0eUlEKGJ1ZmZlciwgbGVu
KTsKKyAgICAgICAgaWQgPSBTVkc6OmdldFNWR0NTU1Byb3BlcnR5SUQoYnVmZmVyLCBsZW4pOwog
I2VuZGlmCiAgICAgcmV0dXJuIGlkOwogfQpJbmRleDogY3NzL0NTU0dyYW1tYXIueQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBjc3MvQ1NTR3JhbW1hci55CShyZXZpc2lvbiAxMzM5MykKKysrIGNzcy9DU1NHcmFt
bWFyLnkJKHdvcmtpbmcgY29weSkKQEAgLTgzMSw3ICs4MzEsNyBAQAogICAgICAgICAkJCA9IGdl
dFByb3BlcnR5SUQoIHN0ci5sb3dlcigpLmxhdGluMSgpLCBzdHIubGVuZ3RoKCkgKTsKICNpZiBT
VkdfU1VQUE9SVAogICAgICAgaWYgKCQkID09IDApCi0gICAgICAgICAgJCQgPSBnZXRTVkdDU1NQ
cm9wZXJ0eUlEKHN0ci5sb3dlcigpLmxhdGluMSgpLCBzdHIubGVuZ3RoKCkpOworICAgICAgICAg
ICQkID0gU1ZHOjpnZXRTVkdDU1NQcm9wZXJ0eUlEKHN0ci5sb3dlcigpLmxhdGluMSgpLCBzdHIu
bGVuZ3RoKCkpOwogI2VuZGlmCiAgICAgfQogICA7CkBAIC04ODcsNyArODg3LDcgQEAKICAgICAg
ICQkLmlkID0gZ2V0VmFsdWVJRCggc3RyLmxvd2VyKCkubGF0aW4xKCksIHN0ci5sZW5ndGgoKSAp
OwogI2lmIFNWR19TVVBQT1JUCiAgICAgICBpZiAoJCQuaWQgPT0gMCkKLSAgICAgICAgICAkJC5p
ZCA9IGdldFNWR0NTU1ZhbHVlSUQoc3RyLmxvd2VyKCkubGF0aW4xKCksIHN0ci5sZW5ndGgoKSk7
CisgICAgICAgICAgJCQuaWQgPSBTVkc6OmdldFNWR0NTU1ZhbHVlSUQoc3RyLmxvd2VyKCkubGF0
aW4xKCksIHN0ci5sZW5ndGgoKSk7CiAjZW5kaWYKICAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0lERU5UOwogICAgICAgJCQuc3RyaW5nID0gJDE7CkluZGV4OiBrc3ZnMi9z
dmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGtzdmcyL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJKHJldmlz
aW9uIDEzMzkzKQorKysga3N2ZzIvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQAogCiB2b2lkIFNWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUgKmF0dHIpCiB7Ci0gICAgU3RyaW5nIHZhbHVlKGF0dHItPnZhbHVlKCkpOworICAg
IGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1l
KCkgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKQogICAgIHsKICAgICAgICAgaWYodmFsdWUgPT0gImlk
ZW50aXR5IikKSW5kZXg6IGtzdmcyL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgJKHJl
dmlzaW9uIDEzMzkzKQorKysga3N2ZzIvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNyw4ICsxNyw2IEBACiAgQm9zdG9uLCBNQSAwMjExMS0xMzA3
LCBVU0EuCiAgKi8KIAotCi0KICNpZm5kZWYgS1NWR19TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnRJbXBsX0gKICNkZWZpbmUgS1NWR19TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnRJbXBsX0gK
ICNpZiBTVkdfU1VQUE9SVApAQCAtMjYsMTYgKzI0LDE0IEBACiAjaW5jbHVkZSAiU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiS0NhbnZhc0ZpbHRlcnMu
aCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBTVkdBbmltYXRlZE51bWJlcjsKICAgICBjbGFzcyBTVkdBbmltYXRlZFN0cmluZzsKICAgICBj
bGFzcyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOwogICAgIAotICAgIGNsYXNzIFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMKLSAgICB7Ci1wdWJsaWM6Ci0gICAgICAgIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dChjb25zdCBXZWJDb3JlOjpRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBXZWJDb3JlOjpEb2N1bWVu
dCAqZG9jKTsKKyAgICBjbGFzcyBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQgOiBwdWJsaWMg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQoKTsKICAgICAgICAgCiAgICAgICAgIC8vICdTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQnIGZ1bmN0aW9ucwpAQCAtNDUsMjMgKzQxLDIyIEBACiAgICAgICAgIFNWR0FuaW1hdGVkRW51
bWVyYXRpb24qIHlDaGFubmVsU2VsZWN0b3IoKSBjb25zdDsKICAgICAgICAgU1ZHQW5pbWF0ZWRO
dW1iZXIqIHNjYWxlKCkgY29uc3Q7CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgS0NDaGFubmVs
U2VsZWN0b3JUeXBlIHN0cmluZ1RvQ2hhbm5lbChXZWJDb3JlOjpTdHJpbmcgJmtleSk7CisgICAg
ICAgIHN0YXRpYyBLQ0NoYW5uZWxTZWxlY3RvclR5cGUgc3RyaW5nVG9DaGFubmVsKGNvbnN0IFN0
cmluZyYpOwogICAgICAgICAKICAgICAgICAgLy8gRGVyaXZlZCBmcm9tOiAnRWxlbWVudCcKLSAg
ICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKFdlYkNvcmU6Ok1hcHBlZEF0
dHJpYnV0ZSAqYXR0cik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgS0NhbnZhc0ZF
RGlzcGxhY2VtZW50TWFwKiBmaWx0ZXJFZmZlY3QoKSBjb25zdDsKICAgICAgICAgCi1wcml2YXRl
OgorICAgIHByaXZhdGU6CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkU3RyaW5n
PiBtX2luMTsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4y
OwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX3hDaGFu
bmVsU2VsZWN0b3I7CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRp
b24+IG1feUNoYW5uZWxTZWxlY3RvcjsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U1ZHQW5pbWF0
ZWROdW1iZXI+IG1fc2NhbGU7Ci0gICAgICAgIG11dGFibGUgS0NhbnZhc0ZFRGlzcGxhY2VtZW50
TWFwICptX2ZpbHRlckVmZmVjdDsKKyAgICAgICAgbXV0YWJsZSBLQ2FudmFzRkVEaXNwbGFjZW1l
bnRNYXAqIG1fZmlsdGVyRWZmZWN0OwogICAgIH07Ci19OworfQogCiAjZW5kaWYgLy8gU1ZHX1NV
UFBPUlQKICNlbmRpZiAvLyBLU1ZHX1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudEltcGxfSAot
CkluZGV4OiBrc3ZnMi9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0ga3N2ZzIvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiAx
MzM5MykKKysrIGtzdmcyL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQAogCiB2b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKLSAgICBT
dHJpbmcgdmFsdWUoYXR0ci0+dmFsdWUoKSk7CisgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0
dHItPnZhbHVlKCk7CiAgICAgCiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0
dHIpCiAgICAgICAgIHgoKS0+YmFzZVZhbCgpLT5wYXJzZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5n
KCksIHRoaXMsIExNX1dJRFRIKTsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzM5MykKKysrIGtzdmcyL3N2Zy9TVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OlNW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudChjb25zdCBXZWJDb3JlOjpRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBXZWJDb3JlOjpEb2N1bWVudCogZG9jKSA6IAorU1ZHRkVEaXNwbGFjZW1lbnRNYXBF
bGVtZW50OjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvYykgOiAKIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcyh0YWdOYW1lLCBkb2MpCiB7CiAgICAgbV9maWx0ZXJFZmZlY3QgPSAwOwpAQCAtODAs
NyArODAsNyBAQAogICAgIHJldHVybiBsYXp5X2NyZWF0ZTxTVkdBbmltYXRlZE51bWJlcj4obV9z
Y2FsZSwgZHVtbXkpOwogfQogCi1LQ0NoYW5uZWxTZWxlY3RvclR5cGUgU1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50OjpzdHJpbmdUb0NoYW5uZWwoV2ViQ29yZTo6U3RyaW5nJiBrZXkpCitLQ0No
YW5uZWxTZWxlY3RvclR5cGUgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpzdHJpbmdUb0No
YW5uZWwoY29uc3QgU3RyaW5nJiBrZXkpCiB7CiAgICAgaWYoa2V5ID09ICJSIikKICAgICAgICAg
cmV0dXJuIENTX1JFRDsKQEAgLTk0LDkgKzk0LDkgQEAKICAgICByZXR1cm4gKEtDQ2hhbm5lbFNl
bGVjdG9yVHlwZSktMTsKIH0KIAotdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKFdlYkNvcmU6Ok1hcHBlZEF0dHJpYnV0ZSogYXR0cikKK3ZvaWQg
U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUqIGF0dHIpCiB7Ci0gICAgV2ViQ29yZTo6U3RyaW5nIHZhbHVlKGF0dHItPnZhbHVl
KCkpOworICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChh
dHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRyKQogICAgICAgICB4
Q2hhbm5lbFNlbGVjdG9yKCktPnNldEJhc2VWYWwoc3RyaW5nVG9DaGFubmVsKHZhbHVlKSk7CiAg
ICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0
cikKQEAgLTExOSw4ICsxMTksOCBAQAogICAgICAgICByZXR1cm4gMDsKICAgICBtX2ZpbHRlckVm
ZmVjdC0+c2V0WENoYW5uZWxTZWxlY3RvcigoS0NDaGFubmVsU2VsZWN0b3JUeXBlKSh4Q2hhbm5l
bFNlbGVjdG9yKCktPmJhc2VWYWwoKSkpOwogICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRZQ2hhbm5l
bFNlbGVjdG9yKChLQ0NoYW5uZWxTZWxlY3RvclR5cGUpKHlDaGFubmVsU2VsZWN0b3IoKS0+YmFz
ZVZhbCgpKSk7Ci0gICAgbV9maWx0ZXJFZmZlY3QtPnNldEluKFdlYkNvcmU6OlN0cmluZyhpbjEo
KS0+YmFzZVZhbCgpKS5kZXByZWNhdGVkU3RyaW5nKCkpOwotICAgIG1fZmlsdGVyRWZmZWN0LT5z
ZXRJbjIoV2ViQ29yZTo6U3RyaW5nKGluMigpLT5iYXNlVmFsKCkpLmRlcHJlY2F0ZWRTdHJpbmco
KSk7CisgICAgbV9maWx0ZXJFZmZlY3QtPnNldEluKFN0cmluZyhpbjEoKS0+YmFzZVZhbCgpKS5k
ZXByZWNhdGVkU3RyaW5nKCkpOworICAgIG1fZmlsdGVyRWZmZWN0LT5zZXRJbjIoU3RyaW5nKGlu
MigpLT5iYXNlVmFsKCkpLmRlcHJlY2F0ZWRTdHJpbmcoKSk7CiAgICAgbV9maWx0ZXJFZmZlY3Qt
PnNldFNjYWxlKHNjYWxlKCktPmJhc2VWYWwoKSk7CiAgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVz
KG1fZmlsdGVyRWZmZWN0KTsKICAgICByZXR1cm4gbV9maWx0ZXJFZmZlY3Q7CkluZGV4OiBrc3Zn
Mi9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0Zp
bHRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzM5MykKKysrIGtzdmcyL3N2Zy9TVkdGaWx0ZXJF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBACiAKIHZvaWQgU1ZH
RmlsdGVyRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRy
KQogewotICAgIFN0cmluZyB2YWx1ZShhdHRyLT52YWx1ZSgpKTsKKyAgICBjb25zdCBTdHJpbmcm
IHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
OjpmaWx0ZXJVbml0c0F0dHIpCiAgICAgewogICAgICAgICBpZih2YWx1ZSA9PSAidXNlclNwYWNl
T25Vc2UiKQpJbmRleDoga3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0ga3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzkzKQor
Kysga3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3
LDcgKzc3LDcgQEAKIAogdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKLSAgICBTdHJpbmcgdmFsdWUoYXR0ci0+dmFs
dWUoKSk7CisgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYg
KGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Z3JhZGllbnRVbml0c0F0dHIpIHsKICAgICAgICAg
aWYodmFsdWUgPT0gInVzZXJTcGFjZU9uVXNlIikKICAgICAgICAgICAgIGdyYWRpZW50VW5pdHMo
KS0+c2V0QmFzZVZhbChTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKTsKSW5kZXg6IGtzdmcy
L3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIv
c3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gMTMzOTMpCisrKyBr
c3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MSwxNyArNjEsMTcgQEAKIAogdm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewotICAgIFN0cmluZyB2
YWx1ZShhdHRyLT52YWx1ZSgpKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp0
eXBlQXR0cikgewotICAgICAgICBpZih2YWx1ZSA9PSAidHJhbnNsYXRlIikKKyAgICAgICAgY29u
c3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CisgICAgICAgIGlmICh2YWx1ZSA9PSAi
dHJhbnNsYXRlIikKICAgICAgICAgICAgIG1fdHlwZSA9IFNWR19UUkFOU0ZPUk1fVFJBTlNMQVRF
OwotICAgICAgICBlbHNlIGlmKHZhbHVlID09ICJzY2FsZSIpCisgICAgICAgIGVsc2UgaWYgKHZh
bHVlID09ICJzY2FsZSIpCiAgICAgICAgICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX1NDQUxF
OwotICAgICAgICBlbHNlIGlmKHZhbHVlID09ICJyb3RhdGUiKQorICAgICAgICBlbHNlIGlmICh2
YWx1ZSA9PSAicm90YXRlIikKICAgICAgICAgICAgIG1fdHlwZSA9IFNWR19UUkFOU0ZPUk1fUk9U
QVRFOwotICAgICAgICBlbHNlIGlmKHZhbHVlID09ICJza2V3WCIpCisgICAgICAgIGVsc2UgaWYg
KHZhbHVlID09ICJza2V3WCIpCiAgICAgICAgICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX1NL
RVdYOwotICAgICAgICBlbHNlIGlmKHZhbHVlID09ICJza2V3WSIpCisgICAgICAgIGVsc2UgaWYg
KHZhbHVlID09ICJza2V3WSIpCiAgICAgICAgICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX1NL
RVdZOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKGF0dHIpOwpJbmRleDoga3N2ZzIvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLmNwcAkocmV2aXNpb24gMTMzOTMpCisrKyBrc3ZnMi9zdmcvU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAKIAog
Ym9vbCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShN
YXBwZWRBdHRyaWJ1dGUgKmF0dHIpCiB7Ci0gICAgU3RyaW5nIHZhbHVlKGF0dHItPnZhbHVlKCkp
OworICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRy
LT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyKSB7CiAg
ICAgICAgIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKS0+c2V0QmFzZVZhbCh2YWx1ZSA9PSAi
dHJ1ZSIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdUZXN0cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR1Rlc3RzLmNwcAkocmV2aXNpb24gMTMzOTMp
CisrKyBrc3ZnMi9zdmcvU1ZHVGVzdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3
IEBACiAKIGJvb2wgU1ZHVGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0
ZSAqYXR0cikKIHsKLSAgICBTdHJpbmcgdmFsdWUoYXR0ci0+dmFsdWUoKSk7CisgICAgY29uc3Qg
U3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBT
VkdOYW1lczo6cmVxdWlyZWRGZWF0dXJlc0F0dHIpIHsKICAgICAgICAgcmVxdWlyZWRGZWF0dXJl
cygpLT5yZXNldCh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2
ZzIvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzOTMpCisrKyBrc3ZnMi9zdmcv
U1ZHTWFza0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBACiAKIHZv
aWQgU1ZHTWFza0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAq
YXR0cikKIHsKLSAgICBTdHJpbmcgdmFsdWUoYXR0ci0+dmFsdWUoKSk7CisgICAgY29uc3QgU3Ry
aW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdO
YW1lczo6eEF0dHIpCiAgICAgICAgIHgoKS0+YmFzZVZhbCgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZh
bHVlLmltcGwoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5QXR0
cikKSW5kZXg6IGtzdmcyL3N2Zy9TVkdBRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIv
c3ZnL1NWR0FFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzOTMpCisrKyBrc3ZnMi9zdmcvU1ZHQUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBACiAKIHZvaWQgU1ZHQUVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKLSAg
ICBTdHJpbmcgdmFsdWUoYXR0ci0+dmFsdWUoKSk7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZShhdHRyLT52YWx1ZSgpKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp0
YXJnZXRBdHRyKSB7CiAgICAgICAgIHRhcmdldCgpLT5zZXRCYXNlVmFsKHZhbHVlLmltcGwoKSk7
CiAgICAgfSBlbHNlIHsKQEAgLTk0LDcgKzk0LDcgQEAKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICB1cmwgPSBwYXJzZVVSTChocmVmKCktPmJhc2VWYWwoKSkuZGVwcmVj
YXRlZFN0cmluZygpOwotICAgICAgICB1dGFyZ2V0ID0gU3RyaW5nKGdldEF0dHJpYnV0ZShTVkdO
YW1lczo6dGFyZ2V0QXR0cikpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKKyAgICAgICAgdXRhcmdldCA9
IGdldEF0dHJpYnV0ZShTVkdOYW1lczo6dGFyZ2V0QXR0cikuZGVwcmVjYXRlZFN0cmluZygpOwog
CiAgICAgICAgIGlmKGUgJiYgZS0+YnV0dG9uKCkgPT0gMSkKICAgICAgICAgICAgIHV0YXJnZXQg
PSAiX2JsYW5rIjsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCShyZXZpc2lv
biAxMzM5MykKKysrIGtzdmcyL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05OCw4ICs5OCw2IEBACiAKIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpCiB7Ci0gICAgU3RyaW5n
IHZhbHVlKGF0dHItPnZhbHVlKCkpOwotICAgIAogICAgIC8vaWYgKGF0dHItPm5hbWUoKSA9PSBT
VkdOYW1lczo6bGVuZ3RoQWRqdXN0QXR0cikKICAgICAvLyAgICB4KCktPmJhc2VWYWwoKS0+c2V0
VmFsdWVBc1N0cmluZyh2YWx1ZS5pbXBsKCkpOwogICAgIC8vZWxzZQpJbmRleDoga3N2ZzIvc3Zn
L1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0ZF
TWVyZ2VOb2RlRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzkzKQorKysga3N2ZzIvc3ZnL1NWR0ZF
TWVyZ2VOb2RlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAKIAog
dm9pZCBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0
dHJpYnV0ZSAqYXR0cikKIHsKLSAgICBTdHJpbmcgdmFsdWUoYXR0ci0+dmFsdWUoKSk7CisgICAg
Y29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6aW5BdHRyKQogICAgICAgICBpbjEoKS0+c2V0QmFzZVZhbCh2YWx1ZS5p
bXBsKCkpOwogICAgIGVsc2UKSW5kZXg6IGtzdmcyL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24g
MTMzOTMpCisrKyBrc3ZnMi9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Nyw3ICs2Nyw3IEBACiAKIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKLSAgICBTdHJpbmcgdmFsdWUoYXR0
ci0+dmFsdWUoKSk7CisgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIp
CiAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW8oKS0+YmFzZVZhbCgpLT5wYXJzZVByZXNlcnZl
QXNwZWN0UmF0aW8odmFsdWUuaW1wbCgpKTsKICAgICBlbHNlCkluZGV4OiBrc3ZnMi9zdmcvU1ZH
Vmlld0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdWaWV3RWxlbWVudC5j
cHAJKHJldmlzaW9uIDEzMzkzKQorKysga3N2ZzIvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQAogCiB2b2lkIFNWR1ZpZXdFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpCiB7Ci0gICAgU3RyaW5nIHZh
bHVlKGF0dHItPnZhbHVlKCkpOworICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1
ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnZpZXdUYXJnZXRBdHRyKSB7
CiAgICAgICAgIHZpZXdUYXJnZXQoKS0+cmVzZXQodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpKTsK
ICAgICB9IGVsc2UgewpJbmRleDoga3N2ZzIvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAJKHJldmlz
aW9uIDEzMzkzKQorKysga3N2ZzIvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAKIAogdm9pZCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKLSAgICBTdHJp
bmcgdmFsdWUoYXR0ci0+dmFsdWUoKSk7CisgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHIt
PnZhbHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6b3BlcmF0b3JBdHRy
KQogICAgIHsKICAgICAgICAgaWYodmFsdWUgPT0gIm92ZXIiKQpJbmRleDoga3N2ZzIvc3ZnL1NW
R0ZFRmxvb2RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHRkVGbG9vZEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxMzM5MykKKysrIGtzdmcyL3N2Zy9TVkdGRUZsb29kRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAKIAogdm9pZCBTVkdGRUZsb29k
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewot
ICAgIFN0cmluZyB2YWx1ZShhdHRyLT52YWx1ZSgpKTsKKyAgICBjb25zdCBTdHJpbmcmIHZhbHVl
ID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjppbkF0
dHIpCiAgICAgICAgIGluMSgpLT5zZXRCYXNlVmFsKHZhbHVlLmltcGwoKSk7CiAgICAgZWxzZQpJ
bmRleDoga3N2ZzIvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtz
dmcyL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMTMzOTMpCisrKyBrc3Zn
Mi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCwxMSAr
MTI4LDExIEBACiAKIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewotICAgIFN0cmluZyB2YWx1ZShhdHRyLT52YWx1
ZSgpKTsKKyAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAo
YXR0ci0+bmFtZSgpLm1hdGNoZXMoWExpbmtOYW1lczo6aHJlZkF0dHIpKQotICAgICAgICAgICAg
bV9ocmVmID0gdmFsdWUuZGVwcmVjYXRlZFN0cmluZygpOworICAgICAgICBtX2hyZWYgPSB2YWx1
ZS5kZXByZWNhdGVkU3RyaW5nKCk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05h
bWVzOjphdHRyaWJ1dGVOYW1lQXR0cikKLSAgICAgICAgICAgIG1fYXR0cmlidXRlTmFtZSA9IHZh
bHVlLmRlcHJlY2F0ZWRTdHJpbmcoKTsKKyAgICAgICAgbV9hdHRyaWJ1dGVOYW1lID0gdmFsdWUu
ZGVwcmVjYXRlZFN0cmluZygpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1l
czo6YXR0cmlidXRlVHlwZUF0dHIpCiAgICAgewogICAgICAgICBpZih2YWx1ZSA9PSAiQ1NTIikK
SW5kZXg6IGtzdmcyL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIv
c3ZnL1NWR1N0b3BFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzOTMpCisrKyBrc3ZnMi9zdmcvU1ZH
U3RvcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBACiAKIHZvaWQg
U1ZHU3RvcEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0
cikKIHsKLSAgICBTdHJpbmcgdmFsdWUoYXR0ci0+dmFsdWUoKSk7CisgICAgY29uc3QgU3RyaW5n
JiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1l
czo6b2Zmc2V0QXR0cikgewogICAgICAgICBpZih2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkuZW5k
c1dpdGgoRGVwcmVjYXRlZFN0cmluZzo6ZnJvbUxhdGluMSgiJSIpKSkKICAgICAgICAgICAgIG9m
ZnNldCgpLT5zZXRCYXNlVmFsKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKS5sZWZ0KHZhbHVlLmxl
bmd0aCgpIC0gMSkudG9Eb3VibGUoKSAvIDEwMC4pOwpJbmRleDoga3N2ZzIvc3ZnL1NWR0NsaXBQ
YXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDEzMzkzKQorKysga3N2ZzIvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAKIAogdm9pZCBTVkdDbGlwUGF0aEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKLSAg
ICBTdHJpbmcgdmFsdWUoYXR0ci0+dmFsdWUoKSk7CisgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9
IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Y2xpcFBh
dGhVbml0c0F0dHIpCiAgICAgewogICAgICAgICBpZih2YWx1ZSA9PSAidXNlclNwYWNlT25Vc2Ui
KQpJbmRleDoga3N2ZzIvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtz
dmcyL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzOTMpCisrKyBrc3ZnMi9z
dmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAK
IAogdm9pZCBTVkdGRVRpbGVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRy
aWJ1dGUgKmF0dHIpCiB7Ci0gICAgU3RyaW5nIHZhbHVlKGF0dHItPnZhbHVlKCkpOworICAgIGNv
bnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OmluQXR0cikKICAgICAgICAgaW4xKCktPnNldEJhc2VWYWwodmFsdWUuaW1w
bCgpKTsKICAgICBlbHNlCkluZGV4OiBrc3ZnMi9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxMzM5MykKKysrIGtzdmcyL3N2Zy9TVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQAogCiB2b2lk
IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBl
ZEF0dHJpYnV0ZSAqYXR0cikKIHsgICAgCi0gICAgU3RyaW5nIHZhbHVlKGF0dHItPnZhbHVlKCkp
OworICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRy
LT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmluQXR0cikKICAgICAgICAgaW4xKCktPnNldEJhc2VWYWwo
dmFsdWUuaW1wbCgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnN1
cmZhY2VTY2FsZUF0dHIpCkluZGV4OiBrc3ZnMi9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTMzOTMpCisrKyBrc3ZnMi9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQAogCiB2b2lkIFNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlICphdHRyKQogewotICAgIFN0cmluZyB2YWx1ZShhdHRyLT52YWx1ZSgpKTsKKyAgICBj
b25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjppbkF0dHIpCiAgICAgICAgIGluMSgpLT5zZXRCYXNlVmFsKHZhbHVlLmlt
cGwoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpzdXJmYWNlU2Nh
bGVBdHRyKQpJbmRleDoga3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGtzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzOTMpCisrKyBr
c3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDEyICs4
MCwxMiBAQAogCiB2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKLSAgICBTdHJpbmcgdmFsdWUoYXR0ci0+dmFsdWUoKSk7
CisgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgLy8gaWQgYW5k
IGNsYXNzIGFyZSBoYW5kbGVkIGJ5IFN0eWxlZEVsZW1lbnQKICAgICBEZXByZWNhdGVkU3RyaW5n
IHFQcm9wID0gYXR0ci0+bmFtZSgpLmxvY2FsTmFtZSgpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKLSAg
ICBpbnQgcHJvcElkID0gV2ViQ29yZTo6Z2V0UHJvcGVydHlJRChxUHJvcC5hc2NpaSgpLCBxUHJv
cC5sZW5ndGgoKSk7CisgICAgaW50IHByb3BJZCA9IGdldFByb3BlcnR5SUQocVByb3AuYXNjaWko
KSwgcVByb3AubGVuZ3RoKCkpOwogICAgIGlmIChwcm9wSWQgPT0gMCkKLSAgICAgICAgcHJvcElk
ID0gZ2V0U1ZHQ1NTUHJvcGVydHlJRChxUHJvcC5hc2NpaSgpLCBxUHJvcC5sZW5ndGgoKSk7Cisg
ICAgICAgIHByb3BJZCA9IFNWRzo6Z2V0U1ZHQ1NTUHJvcGVydHlJRChxUHJvcC5hc2NpaSgpLCBx
UHJvcC5sZW5ndGgoKSk7CiAgICAgaWYocHJvcElkID4gMCkgewogICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShhdHRyLCBwcm9wSWQsIHZhbHVlKTsKICAgICAgICAgc2V0Q2hhbmdlZCgpOwpJbmRleDog
a3N2ZzIvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBrc3ZnMi9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
MzM5MykKKysrIGtzdmcyL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAKIAogdm9pZCBTVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQog
ewotICAgIFN0cmluZyB2YWx1ZShhdHRyLT52YWx1ZSgpKTsKKyAgICBjb25zdCBTdHJpbmcmIHZh
bHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpp
bkF0dHIpCiAgICAgICAgIGluMSgpLT5zZXRCYXNlVmFsKHZhbHVlLmltcGwoKSk7CiAgICAgZWxz
ZQpJbmRleDoga3N2ZzIvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGtzdmcyL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTMzOTMp
CisrKyBrc3ZnMi9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkyLDcgKzkyLDcgQEAKIAogdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpCiB7Ci0gICAgU3RyaW5nIHZhbHVl
KGF0dHItPnZhbHVlKCkpOworICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgp
OwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKQogICAgIHsKICAg
ICAgICAgaWYodmFsdWUgPT0gImZyYWN0YWxOb2lzZSIpCkluZGV4OiBrc3ZnMi9zdmcvU1ZHWm9v
bUFuZFBhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR1pvb21BbmRQYW4uY3BwCShy
ZXZpc2lvbiAxMzM5MykKKysrIGtzdmcyL3N2Zy9TVkdab29tQW5kUGFuLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTIsNyArNTIsNyBAQAogCiBib29sIFNWR1pvb21BbmRQYW46OnBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKLSAgICBTdHJpbmcgdmFsdWUoYXR0
ci0+dmFsdWUoKSk7CisgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6em9vbUFuZFBhbkF0dHIpIHsKICAgICAg
ICAgaWYodmFsdWUgPT0gImRpc2FibGUiKQogICAgICAgICAgICAgc2V0Wm9vbUFuZFBhbihTVkdf
Wk9PTUFORFBBTl9ESVNBQkxFKTsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAkocmV2aXNp
b24gMTMzOTMpCisrKyBrc3ZnMi9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTMsNyArMTEzLDcgQEAKIAogdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewotICAgIFN0cmluZyB2YWx1
ZShhdHRyLT52YWx1ZSgpKTsKKyAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUo
KTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjphemltdXRoQXR0cikKICAgICAg
ICAgYXppbXV0aCgpLT5zZXRCYXNlVmFsKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKS50b0RvdWJs
ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmVsZXZhdGlvbkF0
dHIpCkluZGV4OiBrc3ZnMi9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtz
dmcyL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzkzKQorKysga3N2ZzIvc3Zn
L1NWR1BvbHlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQAogdm9p
ZCBTVkdQb2x5RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICph
dHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnBvaW50c0F0dHIpCi0g
ICAgICAgIHBhcnNlUG9pbnRzKFN0cmluZyhhdHRyLT52YWx1ZSgpKS5kZXByZWNhdGVkU3RyaW5n
KCkpOworICAgICAgICBwYXJzZVBvaW50cyhhdHRyLT52YWx1ZSgpLmRlcHJlY2F0ZWRTdHJpbmco
KSk7CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgaWYoU1ZHVGVzdHM6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKGF0dHIpKSByZXR1cm47CkluZGV4OiBrc3ZnMi9zdmcvU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDEzMzkzKQorKysga3N2ZzIvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQAogCiB2b2lkIFNWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0
dHIpCiB7Ci0gICAgU3RyaW5nIHZhbHVlKGF0dHItPnZhbHVlKCkpOworICAgIGNvbnN0IFN0cmlu
ZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFt
ZXM6OnR5cGVBdHRyKQogICAgIHsKICAgICAgICAgaWYodmFsdWUgPT0gIm1hdHJpeCIpCkluZGV4
OiBrc3ZnMi9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2
Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDEzMzkzKQorKysga3N2ZzIvc3ZnL1NW
R0ZFQmxlbmRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQAogCiB2
b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1
dGUgKmF0dHIpCiB7Ci0gICAgU3RyaW5nIHZhbHVlKGF0dHItPnZhbHVlKCkpOworICAgIGNvbnN0
IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0g
U1ZHTmFtZXM6Om1vZGVBdHRyKQogICAgIHsKICAgICAgICAgaWYodmFsdWUgPT0gIm5vcm1hbCIp
CkluZGV4OiBrc3ZnMi9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBrc3ZnMi9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkocmV2aXNpb24gMTMz
OTMpCisrKyBrc3ZnMi9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzcsNyArNzcsNyBAQAogCiB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewotICAgIFN0cmlu
ZyB2YWx1ZShhdHRyLT52YWx1ZSgpKTsKKyAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+
dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpzdGREZXZpYXRpb25B
dHRyKSB7CiAgICAgICAgIERlcHJlY2F0ZWRTdHJpbmdMaXN0IG51bWJlcnMgPSBEZXByZWNhdGVk
U3RyaW5nTGlzdDo6c3BsaXQoJyAnLCB2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkpOwogICAgICAg
ICBzdGREZXZpYXRpb25YKCktPnNldEJhc2VWYWwobnVtYmVyc1swXS50b0RvdWJsZSgpKTsKSW5k
ZXg6IGtzdmcyL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcy
L3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMzM5MykKKysrIGtzdmcyL3N2
Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBA
CiAKIHZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUgKmF0dHIpCiB7Ci0gICAgU3RyaW5nIHZhbHVlKGF0dHItPnZhbHVlKCkpOworICAg
IGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1l
KCkgPT0gU1ZHTmFtZXM6OmR4QXR0cikKICAgICAgICAgZHgoKS0+c2V0QmFzZVZhbCh2YWx1ZS5k
ZXByZWNhdGVkU3RyaW5nKCkudG9Eb3VibGUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjpkeUF0dHIpCkluZGV4OiBrc3ZnMi9zY3JpcHRzL2Nzc21ha2V2YWx1ZXMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga3N2ZzIvc2NyaXB0cy9jc3NtYWtldmFsdWVzCShyZXZpc2lvbiAxMzM5
MykKKysrIGtzdmcyL3NjcmlwdHMvY3NzbWFrZXZhbHVlcwkod29ya2luZyBjb3B5KQpAQCAtMSw0
ICsxLDQgQEAKLSMhL3Vzci9iaW4vcGVybAorIyEvdXNyL2Jpbi9wZXJsIC13CiAjCiAjICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBsaWJyYXJpZXMKICMKQEAgLTIxLDYgKzIxLDggQEAK
ICMgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICMKIAordXNlIHN0cmljdDsKKwogbXkg
JG5zRnVsbCA9ICRBUkdWWzFdOwogbXkgJG5zID0gJG5zRnVsbDsgJG5zID1+IHMvSy8vOwogbXkg
JGJhc2VuYW1lID0gImNzc3ZhbHVlcyI7CkBAIC0zNiw1MSArMzgsNTMgQEAKIG15ICRmaWxlZ3Bl
cmYgPSAiJGJhc2VuYW1lLmdwZXJmIjsKIAogb3BlbiBJTiwgJGZpbGVpbiBvciBkaWUgIkNhbid0
IG9wZW4gJGZpbGVpblxuIjsKLW9wZW4gaGVhZGVyLCAiPiRmaWxlaCIgb3IgZGllICJDYW4ndCBv
cGVuICRmaWxlaFxuIjsKLW9wZW4gb3V0LCAiPiRmaWxlZ3BlcmYiIG9yIGRpZSAiQ2FuJ3Qgb3Bl
biAkZmlsZWdwZXJmXG4iOworb3BlbiBIRUFERVIsICI+JGZpbGVoIiBvciBkaWUgIkNhbid0IG9w
ZW4gJGZpbGVoXG4iOworb3BlbiBPVVQsICI+JGZpbGVncGVyZiIgb3IgZGllICJDYW4ndCBvcGVu
ICRmaWxlZ3BlcmZcbiI7CiAKLXByaW50IG91dCAiJXtcbi8qIFRoaXMgZmlsZSBpcyBhdXRvbWF0
aWNhbGx5IGdlbmVyYXRlZCBmcm9tICRmaWxlaW4gYnkgY3NzbWFrZXZhbHVlcywgZG8gbm90IGVk
aXQgKi9cbiNpbmNsdWRlIFwiJGZpbGVoXCJcbiV9XG4iOwotcHJpbnQgb3V0ICJzdHJ1Y3QgY3Nz
X3ZhbCB7XG4gICAgaW50IG5hbWU7XG4gICAgaW50IGlkO1xufTtcblxuIjsKLXByaW50IG91dCAi
c3RhdGljIGNvbnN0IHN0cnVjdCBjc3NfdmFsICpmaW5kJHtuc31WYWwgKHJlZ2lzdGVyIGNvbnN0
IGNoYXIgKnN0ciwgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGxlbik7XG5cbiUlXG4iOworcHJpbnQg
T1VUICIle1xuLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gJGZp
bGVpbiBieSBjc3NtYWtldmFsdWVzLCBkbyBub3QgZWRpdCAqL1xuI2luY2x1ZGUgXCIkZmlsZWhc
IlxuJX1cbiI7CitwcmludCBPVVQgInN0cnVjdCBjc3NfdmFsIHtcbiAgICBpbnQgbmFtZTtcbiAg
ICBpbnQgaWQ7XG59O1xuXG4iOworcHJpbnQgT1VUICJzdGF0aWMgY29uc3Qgc3RydWN0IGNzc192
YWwgKmZpbmQke25zfVZhbCAocmVnaXN0ZXIgY29uc3QgY2hhciAqc3RyLCByZWdpc3RlciB1bnNp
Z25lZCBpbnQgbGVuKTtcblxuJSVcbiI7CiAKLXByaW50IGhlYWRlciAiLyogVGhpcyBmaWxlIGlz
IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gJGZpbGVpbiBieSBjc3NtYWtldmFsdWVzLCBk
byBub3QgZWRpdCAqL1xuLyogQ29weXJpZ2h0IDE5OTkgTGFycyBLbm9sbCAqL1xuXG4jaWZuZGVm
ICR7bnNGdWxsfV9DU1NWQUxVRVNfSFxuI2RlZmluZSAke25zRnVsbH1fQ1NTVkFMVUVTX0hcblxu
IjsKK3ByaW50IEhFQURFUiAiLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVk
IGZyb20gJGZpbGVpbiBieSBjc3NtYWtldmFsdWVzLCBkbyBub3QgZWRpdCAqL1xuLyogQ29weXJp
Z2h0IDE5OTkgTGFycyBLbm9sbCAqL1xuXG4jaWZuZGVmICR7bnNGdWxsfV9DU1NWQUxVRVNfSFxu
I2RlZmluZSAke25zRnVsbH1fQ1NTVkFMVUVTX0hcblxuIjsKIAogbXkgJWFtYXAgPSAoKTsKIAot
JG51bSA9IDA7CitteSAkbnVtID0gMDsKIGlmICgkbnNGdWxsIG5lICJLRE9NIikgewogCSRudW0g
PSAxMDAwMTsgIyBCaWdnZXIgdGhhbiBhbGwgdmFsdWVzIGZyb20gSFRNTCBDU1MKIAotCXByaW50
IGhlYWRlciAiI2RlZmluZSAke25zfUNTU19WQUxfSU5WQUxJRCAwXG4iOwotCXByaW50IGhlYWRl
ciAiI2RlZmluZSAke25zfUNTU19WQUxfTUlOICRudW1cbiI7CisJcHJpbnQgSEVBREVSICIjZGVm
aW5lICR7bnN9Q1NTX1ZBTF9JTlZBTElEIDBcbiI7CisJcHJpbnQgSEVBREVSICIjZGVmaW5lICR7
bnN9Q1NTX1ZBTF9NSU4gJG51bVxuIjsKIAogICAgICRudW0gPSAkbnVtIC0gMTsKIH0gZWxzZSB7
Ci0JcHJpbnQgaGVhZGVyICIjZGVmaW5lIENTU19WQUxfSU5WQUxJRCAwXG4iOwotCXByaW50IGhl
YWRlciAiI2RlZmluZSBDU1NfVkFMX01JTiAxXG4iOworCXByaW50IEhFQURFUiAiI2RlZmluZSBD
U1NfVkFMX0lOVkFMSUQgMFxuIjsKKwlwcmludCBIRUFERVIgIiNkZWZpbmUgQ1NTX1ZBTF9NSU4g
MVxuIjsKIH0KIAorbXkgQGEgPSAoKTsKKwogd2hpbGUgKDxJTj4pIHsKICAgICBjaG9tcDsKLSAg
ICAkcHJvcCA9ICRfOworICAgIG15ICRwcm9wID0gJF87CiAKIAlpZihub3QoJHByb3AgPX4gLyMv
KSBhbmQgKGxlbmd0aCgkcHJvcCkgPiAwKSkgewogCSAgICAkbnVtID0gJG51bSArIDE7CiAKLQkg
ICAgJHVwID0gdWMoJHByb3ApOworCSAgICBteSAkdXAgPSB1YygkcHJvcCk7CiAJICAgIHB1c2go
QGEsICR1cCk7CiAKLQkJJHB1cCA9ICR1cDsKKwkJbXkgJHB1cCA9ICR1cDsKIAkJJHB1cCA9fiBz
Ly0vXy9nOwogCiAJICAgICRhbWFweyRwdXB9ID0gJG51bTsKIAkJCiAJCWlmICgkbnNGdWxsIGVx
ICJLRE9NIikgewotCSAgICAJcHJpbnQgb3V0ICRwcm9wIC4gIiwgQ1NTX1ZBTF8iIC4gJHB1cCAu
ICJcbiI7Ci0JCSAgICBwcmludCBoZWFkZXIgIiNkZWZpbmUgQ1NTX1ZBTF8iIC4gJHB1cCAuICIg
IiAuICRudW0gLiAiXG4iOworCSAgICAJcHJpbnQgT1VUICRwcm9wIC4gIiwgQ1NTX1ZBTF8iIC4g
JHB1cCAuICJcbiI7CisJCSAgICBwcmludCBIRUFERVIgIiNkZWZpbmUgQ1NTX1ZBTF8iIC4gJHB1
cCAuICIgIiAuICRudW0gLiAiXG4iOwogCQl9IGVsc2UgewotCSAgICAJcHJpbnQgb3V0ICRwcm9w
IC4gIiwgJHtuc31DU1NfVkFMXyIgLiAkcHVwIC4gIlxuIjsKLQkJICAgIHByaW50IGhlYWRlciAi
I2RlZmluZSAke25zfUNTU19WQUxfIiAuICRwdXAgLiAiICIgLiAkbnVtIC4gIlxuIjsKKwkgICAg
CXByaW50IE9VVCAkcHJvcCAuICIsICR7bnN9Q1NTX1ZBTF8iIC4gJHB1cCAuICJcbiI7CisJCSAg
ICBwcmludCBIRUFERVIgIiNkZWZpbmUgJHtuc31DU1NfVkFMXyIgLiAkcHVwIC4gIiAiIC4gJG51
bSAuICJcbiI7CiAJCX0KICAgICB9CiB9CkBAIC04OCwyMSArOTIsMjEgQEAKIGNsb3NlKElOKTsK
IAogaWYgKCRuc0Z1bGwgZXEgIktET00iKSB7Ci0JcHJpbnQgaGVhZGVyICIjZGVmaW5lIENTU19W
QUxfTUFYICRudW1cbiI7CisJcHJpbnQgSEVBREVSICIjZGVmaW5lIENTU19WQUxfTUFYICRudW1c
biI7CiB9IGVsc2UgewotCXByaW50IGhlYWRlciAiI2RlZmluZSAke25zfUNTU19WQUxfTUFYICRu
dW1cbiI7CisJcHJpbnQgSEVBREVSICIjZGVmaW5lICR7bnN9Q1NTX1ZBTF9NQVggJG51bVxuIjsK
IH0KIAotcHJpbnQgb3V0ICIlJVxuIjsKLWNsb3NlIG91dDsKK3ByaW50IE9VVCAiJSVcbiI7Citj
bG9zZSBPVVQ7CiAKLXByaW50IGhlYWRlciAiXG5uYW1lc3BhY2UgJHtuc0Z1bGx9XG57XG4iOwot
cHJpbnQgaGVhZGVyICIgICAgY29uc3QgY2hhciogZ2V0U1ZHQ1NTVmFsdWVOYW1lKHVuc2lnbmVk
IHNob3J0IGlkKTtcbiI7Ci1wcmludCBoZWFkZXIgIiAgICBpbnQgZ2V0U1ZHQ1NTVmFsdWVJRChj
b25zdCBjaGFyICp0YWdTdHIsIGludCBsZW4pO1xuIjsKLXByaW50IGhlYWRlciAifVxuIjsKK3By
aW50IEhFQURFUiAiXG5uYW1lc3BhY2UgJHtuc0Z1bGx9XG57XG4iOworcHJpbnQgSEVBREVSICIg
ICAgY29uc3QgY2hhciogZ2V0U1ZHQ1NTVmFsdWVOYW1lKHVuc2lnbmVkIHNob3J0IGlkKTtcbiI7
CitwcmludCBIRUFERVIgIiAgICBpbnQgZ2V0U1ZHQ1NTVmFsdWVJRChjb25zdCBjaGFyICp0YWdT
dHIsIGludCBsZW4pO1xuIjsKK3ByaW50IEhFQURFUiAifVxuIjsKIAotcHJpbnQgaGVhZGVyICJc
biNlbmRpZlxuIjsKLWNsb3NlIGhlYWRlcjsKK3ByaW50IEhFQURFUiAiXG4jZW5kaWZcbiI7Citj
bG9zZSBIRUFERVI7CiAKIG15ICRyZXN1bHQgPSBzeXN0ZW0oIi9iaW4vc2giLCAiLWMiLCAiZ3Bl
cmYgLWMgLWEgLUwgJ0FOU0ktQycgLVAgLUcgLUQgLUUgLUMgLW8gLXQgLWsgJyonIC1OZmluZCR7
bnN9VmFsIC1IaGFzaF92YWwgLVd3b3JkbGlzdF92YWwgLVFzcG9vbF92YWwgLXMgMyAkZmlsZWdw
ZXJmID4gJGZpbGVjIik7CiBpZiAoJHJlc3VsdCkgewpAQCAtMTIyLDcgKzEyNiw3IEBACiBteSAl
aG1hcCA9ICgpOwogb3BlbihJTiwgIjwgJGZpbGVjIik7CiB3aGlsZSg8SU4+KSB7Ci0JJGxvb2tG
b3IgPSAiQ1NTX1ZBTF8iOworCW15ICRsb29rRm9yID0gIkNTU19WQUxfIjsKIAlpZiAoJG5zRnVs
bCBuZSAiS0RPTSIpIHsKIAkJJGxvb2tGb3IgPSAkbnMgLiAkbG9va0ZvcjsKIAl9CkBAIC0xMzgs
NyArMTQyLDcgQEAKIHByaW50IE9VVCAiXG5cbnN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCB2
YWxMaXN0W10gPSB7XG4iOwogcHJpbnQgT1VUICIgICAgNjU1MzUsXG4iOwogCi13aGlsZShkZWZp
bmVkICgkbGluZSA9IHNoaWZ0IEBhKSkgeword2hpbGUoZGVmaW5lZCAobXkgJGxpbmUgPSBzaGlm
dCBAYSkpIHsKICAgICBteSAkbCA9ICRsaW5lOwogCiAJaWYobm90KCRsID1+IC8jLykgYW5kIChs
ZW5ndGgoJGwpID4gMCkpIHsKQEAgLTE1MCw3ICsxNTQsNyBAQAogCX0KIH0KIAotJGxvb2tGb3Ig
PSAiQ1NTX1ZBTF9NQVgiOworbXkgJGxvb2tGb3IgPSAiQ1NTX1ZBTF9NQVgiOwogaWYgKCRuc0Z1
bGwgbmUgIktET00iKSB7CiAJJGxvb2tGb3IgPSAkbnMgLiAkbG9va0ZvcjsKIH0KSW5kZXg6IGtz
dmcyL3NjcmlwdHMvY3NzbWFrZXByb3BzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3NjcmlwdHMvY3Nz
bWFrZXByb3BzCShyZXZpc2lvbiAxMzM5MykKKysrIGtzdmcyL3NjcmlwdHMvY3NzbWFrZXByb3Bz
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyEvdXNyL2Jpbi9wZXJsCisjIS91c3Iv
YmluL3BlcmwgLXcKICMKICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxpYnJhcmll
cwogIwpAQCAtMjEsNiArMjEsOCBAQAogIyAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgog
IwogCit1c2Ugc3RyaWN0OworCiBteSAkbnNGdWxsID0gJEFSR1ZbMV07CiBteSAkbnMgPSAkbnNG
dWxsOyAkbnMgPX4gcy9LLy87CiBteSAkYmFzZW5hbWUgPSAiY3NzcHJvcGVydGllcyI7CkBAIC0z
Niw1MSArMzgsNTIgQEAKIG15ICRmaWxlZ3BlcmYgPSAiJGJhc2VuYW1lLmdwZXJmIjsKIAogb3Bl
biBJTiwgJGZpbGVpbiBvciBkaWUgIkNhbid0IG9wZW4gJGZpbGVpblxuIjsKLW9wZW4gaGVhZGVy
LCAiPiRmaWxlaCIgb3IgZGllICJDYW4ndCBvcGVuICRmaWxlaFxuIjsKLW9wZW4gb3V0LCAiPiRm
aWxlZ3BlcmYiIG9yIGRpZSAiQ2FuJ3Qgb3BlbiAkZmlsZWdwZXJmXG4iOworb3BlbiBIRUFERVIs
ICI+JGZpbGVoIiBvciBkaWUgIkNhbid0IG9wZW4gJGZpbGVoXG4iOworb3BlbiBPVVQsICI+JGZp
bGVncGVyZiIgb3IgZGllICJDYW4ndCBvcGVuICRmaWxlZ3BlcmZcbiI7CiAKLXByaW50IG91dCAi
JXtcbi8qIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tICRmaWxlaW4g
YnkgY3NzbWFrZXByb3BzLCBkbyBub3QgZWRpdCAqL1xuI2luY2x1ZGUgXCIkZmlsZWhcIlxuJX1c
biI7Ci1wcmludCBvdXQgInN0cnVjdCBjc3NfcHJvcCB7XG4gICAgaW50IG5hbWU7XG4gICAgaW50
IGlkO1xufTtcblxuIjsKLXByaW50IG91dCAic3RhdGljIGNvbnN0IHN0cnVjdCBjc3NfcHJvcCAq
ZmluZCR7bnN9UHJvcCAocmVnaXN0ZXIgY29uc3QgY2hhciAqc3RyLCByZWdpc3RlciB1bnNpZ25l
ZCBpbnQgbGVuKTtcblxuJSVcbiI7CitwcmludCBPVVQgIiV7XG4vKiBUaGlzIGZpbGUgaXMgYXV0
b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSAkZmlsZWluIGJ5IGNzc21ha2Vwcm9wcywgZG8gbm90
IGVkaXQgKi9cbiNpbmNsdWRlIFwiJGZpbGVoXCJcbiV9XG4iOworcHJpbnQgT1VUICJzdHJ1Y3Qg
Y3NzX3Byb3Age1xuICAgIGludCBuYW1lO1xuICAgIGludCBpZDtcbn07XG5cbiI7CitwcmludCBP
VVQgInN0YXRpYyBjb25zdCBzdHJ1Y3QgY3NzX3Byb3AgKmZpbmQke25zfVByb3AgKHJlZ2lzdGVy
IGNvbnN0IGNoYXIgKnN0ciwgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGxlbik7XG5cbiUlXG4iOwog
Ci1wcmludCBoZWFkZXIgIi8qIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBm
cm9tICRmaWxlaW4gYnkgY3NzbWFrZXByb3BzLCBkbyBub3QgZWRpdCAqL1xuLyogQ29weXJpZ2h0
IDE5OTkgTGFycyBLbm9sbCAqL1xuXG4jaWZuZGVmICR7bnNGdWxsfV9DU1NQUk9QRVJUSUVTX0hc
biNkZWZpbmUgJHtuc0Z1bGx9X0NTU1BST1BFUlRJRVNfSFxuXG4iOworcHJpbnQgSEVBREVSICIv
KiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSAkZmlsZWluIGJ5IGNz
c21ha2Vwcm9wcywgZG8gbm90IGVkaXQgKi9cbi8qIENvcHlyaWdodCAxOTk5IExhcnMgS25vbGwg
Ki9cblxuI2lmbmRlZiAke25zRnVsbH1fQ1NTUFJPUEVSVElFU19IXG4jZGVmaW5lICR7bnNGdWxs
fV9DU1NQUk9QRVJUSUVTX0hcblxuIjsKIAogbXkgJWFtYXAgPSAoKTsKK215IEBhID0gKCk7CiAK
LSRudW0gPSAwOworbXkgJG51bSA9IDA7CiBpZiAoJG5zRnVsbCBuZSAiS0RPTSIpIHsKIAkkbnVt
ID0gMTAwMDE7ICMgQmlnZ2VyIHRoYW4gYWxsIHByb3BlcnRpZXMgZnJvbSBIVE1MIENTUwogCi0J
cHJpbnQgaGVhZGVyICIjZGVmaW5lICR7bnN9Q1NTX1BST1BfSU5WQUxJRCAwXG4iOwotCXByaW50
IGhlYWRlciAiI2RlZmluZSAke25zfUNTU19QUk9QX01JTiAkbnVtXG4iOworCXByaW50IEhFQURF
UiAiI2RlZmluZSAke25zfUNTU19QUk9QX0lOVkFMSUQgMFxuIjsKKwlwcmludCBIRUFERVIgIiNk
ZWZpbmUgJHtuc31DU1NfUFJPUF9NSU4gJG51bVxuIjsKIAogCSRudW0gPSAkbnVtIC0gMTsKIH0g
ZWxzZSB7Ci0JcHJpbnQgaGVhZGVyICIjZGVmaW5lIENTU19QUk9QX0lOVkFMSUQgMFxuIjsKLQlw
cmludCBoZWFkZXIgIiNkZWZpbmUgQ1NTX1BST1BfTUlOIDFcbiI7CisJcHJpbnQgSEVBREVSICIj
ZGVmaW5lIENTU19QUk9QX0lOVkFMSUQgMFxuIjsKKwlwcmludCBIRUFERVIgIiNkZWZpbmUgQ1NT
X1BST1BfTUlOIDFcbiI7CiB9CiAKIHdoaWxlICg8SU4+KSB7CiAgICAgY2hvbXA7Ci0gICAgJHBy
b3AgPSAkXzsKKyAgICBteSAkcHJvcCA9ICRfOwogCiAJaWYobm90KCRwcm9wID1+IC8jLykgYW5k
IChsZW5ndGgoJHByb3ApID4gMCkpIHsKIAkgICAgJG51bSA9ICRudW0gKyAxOwogCi0JICAgICR1
cCA9IHVjKCRwcm9wKTsKKwkgICAgbXkgJHVwID0gdWMoJHByb3ApOwogCSAgICBwdXNoKEBhLCAk
dXApOwogCi0JCSRwdXAgPSAkdXA7CisJCW15ICRwdXAgPSAkdXA7CiAJCSRwdXAgPX4gcy8tL18v
ZzsKIAogCSAgICAkYW1hcHskcHVwfSA9ICRudW07CiAJCQogCQlpZiAoJG5zRnVsbCBlcSAiS0RP
TSIpIHsKLQkgICAgCXByaW50IG91dCAkcHJvcCAuICIsIENTU19QUk9QXyIgLiAkcHVwIC4gIlxu
IjsKLQkJICAgIHByaW50IGhlYWRlciAiI2RlZmluZSBDU1NfUFJPUF8iIC4gJHB1cCAuICIgIiAu
ICRudW0gLiAiXG4iOworCSAgICAJcHJpbnQgT1VUICRwcm9wIC4gIiwgQ1NTX1BST1BfIiAuICRw
dXAgLiAiXG4iOworCQkgICAgcHJpbnQgSEVBREVSICIjZGVmaW5lIENTU19QUk9QXyIgLiAkcHVw
IC4gIiAiIC4gJG51bSAuICJcbiI7CiAJCX0gZWxzZSB7Ci0JICAgIAlwcmludCBvdXQgJHByb3Ag
LiAiLCAke25zfUNTU19QUk9QXyIgLiAkcHVwIC4gIlxuIjsKLQkJICAgIHByaW50IGhlYWRlciAi
I2RlZmluZSAke25zfUNTU19QUk9QXyIgLiAkcHVwIC4gIiAiIC4gJG51bSAuICJcbiI7CisJICAg
IAlwcmludCBPVVQgJHByb3AgLiAiLCAke25zfUNTU19QUk9QXyIgLiAkcHVwIC4gIlxuIjsKKwkJ
ICAgIHByaW50IEhFQURFUiAiI2RlZmluZSAke25zfUNTU19QUk9QXyIgLiAkcHVwIC4gIiAiIC4g
JG51bSAuICJcbiI7CiAJCX0KICAgICB9CiB9CkBAIC04OCwyMSArOTEsMjEgQEAKIGNsb3NlKElO
KTsKIAogaWYgKCRuc0Z1bGwgZXEgIktET00iKSB7Ci0JcHJpbnQgaGVhZGVyICIjZGVmaW5lIENT
U19QUk9QX01BWCAkbnVtXG4iOworCXByaW50IEhFQURFUiAiI2RlZmluZSBDU1NfUFJPUF9NQVgg
JG51bVxuIjsKIH0gZWxzZSB7Ci0JcHJpbnQgaGVhZGVyICIjZGVmaW5lICR7bnN9Q1NTX1BST1Bf
TUFYICRudW1cbiI7CisJcHJpbnQgSEVBREVSICIjZGVmaW5lICR7bnN9Q1NTX1BST1BfTUFYICRu
dW1cbiI7CiB9CiAKLXByaW50IG91dCAiJSVcbiI7Ci1jbG9zZSBvdXQ7CitwcmludCBPVVQgIiUl
XG4iOworY2xvc2UgT1VUOwogCi1wcmludCBoZWFkZXIgIlxubmFtZXNwYWNlICR7bnNGdWxsfVxu
e1xuIjsKLXByaW50IGhlYWRlciAiICAgIGNvbnN0IGNoYXIgKmdldFNWR0NTU1Byb3BlcnR5TmFt
ZSh1bnNpZ25lZCBzaG9ydCBpZCk7XG4iOwotcHJpbnQgaGVhZGVyICIgICAgaW50IGdldFNWR0NT
U1Byb3BlcnR5SUQoY29uc3QgY2hhciAqdGFnU3RyLCBpbnQgbGVuKTtcbiI7Ci1wcmludCBoZWFk
ZXIgIn1cbiI7CitwcmludCBIRUFERVIgIlxubmFtZXNwYWNlICR7bnNGdWxsfVxue1xuIjsKK3By
aW50IEhFQURFUiAiICAgIGNvbnN0IGNoYXIgKmdldFNWR0NTU1Byb3BlcnR5TmFtZSh1bnNpZ25l
ZCBzaG9ydCBpZCk7XG4iOworcHJpbnQgSEVBREVSICIgICAgaW50IGdldFNWR0NTU1Byb3BlcnR5
SUQoY29uc3QgY2hhciAqdGFnU3RyLCBpbnQgbGVuKTtcbiI7CitwcmludCBIRUFERVIgIn1cbiI7
CiAKLXByaW50IGhlYWRlciAiXG4jZW5kaWZcbiI7Ci1jbG9zZSBoZWFkZXI7CitwcmludCBIRUFE
RVIgIlxuI2VuZGlmXG4iOworY2xvc2UgSEVBREVSOwogCiBteSAkcmVzdWx0ID0gc3lzdGVtKCIv
YmluL3NoIiwgIi1jIiwgImdwZXJmIC1jIC1hIC1MICdBTlNJLUMnIC1QIC1HIC1EIC1FIC1DIC1v
IC10IC1rICcqJyAtTmZpbmQke25zfVByb3AgLUhoYXNoX3Byb3AgLVd3b3JkbGlzdF9wcm9wIC1R
c3Bvb2xfcHJvcCAtcyAzICRmaWxlZ3BlcmYgPiAkZmlsZWMiKTsKIGlmICgkcmVzdWx0KSB7CkBA
IC0xMjIsNyArMTI1LDcgQEAKIG15ICVobWFwID0gKCk7CiBvcGVuKElOLCAiPCAkZmlsZWMiKTsK
IHdoaWxlKDxJTj4pIHsKLQkkbG9va0ZvciA9ICJDU1NfUFJPUF8iOworCW15ICRsb29rRm9yID0g
IkNTU19QUk9QXyI7CiAJaWYgKCRuc0Z1bGwgbmUgIktET00iKSB7CiAJCSRsb29rRm9yID0gJG5z
IC4gJGxvb2tGb3I7CiAJfQpAQCAtMTM4LDcgKzE0MSw3IEBACiBwcmludCBPVVQgIlxuXG5zdGF0
aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgcHJvcExpc3RbXSA9IHtcbiI7CiBwcmludCBPVVQgIiAg
ICA2NTUzNSxcbiI7CiAKLXdoaWxlKGRlZmluZWQgKCRsaW5lID0gc2hpZnQgQGEpKSB7Cit3aGls
ZShkZWZpbmVkIChteSAkbGluZSA9IHNoaWZ0IEBhKSkgewogICAgIG15ICRsID0gJGxpbmU7CiAK
IAlpZihub3QoJGwgPX4gLyMvKSBhbmQgKGxlbmd0aCgkbCkgPiAwKSkgewpAQCAtMTUwLDcgKzE1
Myw3IEBACiAJfQogfQogCi0kbG9va0ZvciA9ICJDU1NfUFJPUF9NQVgiOworbXkgJGxvb2tGb3Ig
PSAiQ1NTX1BST1BfTUFYIjsKIGlmICgkbnNGdWxsIG5lICJLRE9NIikgewogCSRsb29rRm9yID0g
JG5zIC4gJGxvb2tGb3I7CiB9CkluZGV4OiBrc3ZnMi9zY3JpcHRzL21ha2VfbmFtZXMucGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga3N2ZzIvc2NyaXB0cy9tYWtlX25hbWVzLnBsCShyZXZpc2lvbiAxMzM5MykK
KysrIGtzdmcyL3NjcmlwdHMvbWFrZV9uYW1lcy5wbAkod29ya2luZyBjb3B5KQpAQCAtNDAwLDcg
KzQwMCw3IEBACiAke25hbWVzcGFjZX1FbGVtZW50ICoke25hbWVzcGFjZX1FbGVtZW50RmFjdG9y
eTo6Y3JlYXRlJHtuYW1lc3BhY2V9RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSwg
RG9jdW1lbnQqIGRvYywgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiB7CiAgICAgaWYgKCFkb2MpCi0g
ICAgICAgIHJldHVybiAwOyAvLyBEb24ndCBhbGxvdyBlbGVtZW50cyB0byBldmVyIGJlIG1hZGUg
d2l0aG91dCBoYXZpbmcgYSBkb2MuCisgICAgICAgIHJldHVybiAwOyAvLyBEbyBub3QgYWxsb3cg
ZWxlbWVudHMgdG8gZXZlciBiZSBtYWRlIHdpdGhvdXQgaGF2aW5nIGEgZG9jLgogCiAgICAgY3Jl
YXRlRnVuY3Rpb25NYXBJZk5lY2Vzc2FyeSgpOwogICAgIENvbnN0cnVjdG9yRnVuYyBmdW5jID0g
Z0Z1bmN0aW9uTWFwLT5nZXQocU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKQEAgLTQ1Niw1ICs0
NTYsMyBAQAogCiAJcmVzdG9yZVNURE9VVCgpOwogfQotCi0KSW5kZXg6IGJyaWRnZS9tYWMvV2Vi
Q29yZUZyYW1lQnJpZGdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJyaWRnZS9tYWMvV2ViQ29yZUZyYW1l
QnJpZGdlLm1tCShyZXZpc2lvbiAxMzM5MykKKysrIGJyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJp
ZGdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNyArMTk3LDcgQEAKICAgICAgICAgICAgIGFl
RGVzYyA9IFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIGRlc2NyaXB0b3JXaXRoQm9vbGVhbjpqc1Zh
bHVlLT5nZXRCb29sZWFuKCldOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3Ry
aW5nVHlwZToKLSAgICAgICAgICAgIGFlRGVzYyA9IFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIGRl
c2NyaXB0b3JXaXRoU3RyaW5nOmpzVmFsdWUtPmdldFN0cmluZygpLmRvbVN0cmluZygpXTsKKyAg
ICAgICAgICAgIGFlRGVzYyA9IFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIGRlc2NyaXB0b3JXaXRo
U3RyaW5nOlN0cmluZyhqc1ZhbHVlLT5nZXRTdHJpbmcoKSldOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgTnVtYmVyVHlwZTogewogICAgICAgICAgICAgRmxvYXQ2NCB2YWx1ZSA9
IGpzVmFsdWUtPmdldE51bWJlcigpOwpAQCAtMTMwOSw3ICsxMzA5LDcgQEAKICAgICBpZiAoIXJl
c3VsdCB8fCAhcmVzdWx0LT5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gMDsKICAgICBKU0xv
Y2sgbG9jazsKLSAgICByZXR1cm4gcmVzdWx0LT5nZXRTdHJpbmcoKS5kb21TdHJpbmcoKTsKKyAg
ICByZXR1cm4gU3RyaW5nKHJlc3VsdC0+Z2V0U3RyaW5nKCkpOwogfQogCiAtIChOU0FwcGxlRXZl
bnREZXNjcmlwdG9yICopYWVEZXNjQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5T
U3RyaW5nICopc3RyaW5nCkluZGV4OiBGb3J3YXJkaW5nSGVhZGVycy9ranMvaWRlbnRpZmllci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEZvcndhcmRpbmdIZWFkZXJzL2tqcy9pZGVudGlmaWVyLmgJKHJldmlz
aW9uIDApCisrKyBGb3J3YXJkaW5nSGVhZGVycy9ranMvaWRlbnRpZmllci5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvaWRlbnRpZmllci5oPgoK
UHJvcGVydHkgY2hhbmdlcyBvbjogRm9yd2FyZGluZ0hlYWRlcnMva2pzL2lkZW50aWZpZXIuaApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBwYWdlL0Zy
YW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMTMzOTMpCisr
KyBwYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgxLDcgKzM4MSw3IEBACiAgICAg
VVN0cmluZyB1c3RyaW5nOwogICAgIGlmICghcmVzdWx0LT5nZXRTdHJpbmcodXN0cmluZykpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzdHJpbmcgPSB1c3RyaW5nLmRlcHJlY2F0ZWRTdHJp
bmcoKTsKKyAgICBzdHJpbmcgPSB1c3RyaW5nOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02
MTMsOSArNjEzLDkgQEAKICAgZC0+bV9iTG9hZGluZ01haW5SZXNvdXJjZSA9IHRydWU7CiAKICAg
S1VSTCByZWYodXJsKTsKLSAgcmVmLnNldFVzZXIoUVNUUklOR19OVUxMKTsKLSAgcmVmLnNldFBh
c3MoUVNUUklOR19OVUxMKTsKLSAgcmVmLnNldFJlZihRU1RSSU5HX05VTEwpOworICByZWYuc2V0
VXNlcihEZXByZWNhdGVkU3RyaW5nKCkpOworICByZWYuc2V0UGFzcyhEZXByZWNhdGVkU3RyaW5n
KCkpOworICByZWYuc2V0UmVmKERlcHJlY2F0ZWRTdHJpbmcoKSk7CiAgIGQtPm1fcmVmZXJyZXIg
PSByZWYudXJsKCk7CiAgIGQtPm1fdXJsID0gdXJsOwogICBLVVJMIGJhc2V1cmw7Cg==
</data>
<flag name="review"
          id="1889"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>