<?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>7487</bug_id>
          
          <creation_ts>2006-02-26 21:38:21 -0800</creation_ts>
          <short_desc>platformize KWQTextCodec</short_desc>
          <delta_ts>2006-02-27 08:28:39 -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="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>34087</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-26 21:38:21 -0800</bug_when>
    <thetext>KWQTextCodec needs to be converted to follow WebCore/platform conventions, and to use portable APIs as much as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34089</commentid>
    <comment_count>1</comment_count>
      <attachid>6752</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-26 21:48:10 -0800</bug_when>
    <thetext>Created attachment 6752
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34092</commentid>
    <comment_count>2</comment_count>
      <attachid>6752</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-26 22:16:22 -0800</bug_when>
    <thetext>Comment on attachment 6752
the patch

Saw QTextencoding in a comment. Please remove.

+#include &lt;TextEncoding.h&gt;

Should use &quot;&quot; not &lt;&gt;.

+    if (enc.isNull() || enc.isEmpty())

Above code is silly, since isEmpty includes isNull.

+    StreamingTextDecoder *m_decoder;

* should be next to type name.

To answer your question:

+        // FIXME: we have an alias table already, do we need to consult icu&apos;s as well?
+        // do they know extra aliases?

Yes, ICU does have some extra aliases that our table does not. Alexy Prosukaryov recently added that instead of adding the aliases to our table (not sure the bug number but it should be in change log). I&apos;m not entirely comfortable with a mix of our own aliases and ICU&apos;s.

There&apos;s a mention of TextEncoding::heuristicContentMatch in a comment. I think that&apos;s a Qt thing and should not be mentioned in a comment any more.

ExtraCFEncodings.h should just have the macros; I don&apos;t see any reason it needs to include CoreFoundation.h.

+// Since they are macros, they won&apos;t cause a compile failure even a the CFString constant is added.

The above comment should say &quot;if the&quot;.

Why all the WebCore:: in WebCoreFrameBridge.mm? I think that entire file has &quot;using namespace WebCore&quot; and the explicit namespace prefixes are not needed.

character-sets.txt is missing from the patch -- it&apos;s being deleted but not added.

Looks fine, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34177</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-27 08:28:39 -0800</bug_when>
    <thetext>Maciej landed this last night.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6752</attachid>
            <date>2006-02-26 21:48:10 -0800</date>
            <delta_ts>2006-02-26 22:16:22 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>text-encoding-redux.patch.txt</filename>
            <type>text/plain</type>
            <size>259901</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2h0bWwvSFRNTEZvcm1FbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a2h0bWwvaHRtbC9IVE1MRm9ybUVsZW1lbnRJbXBsLmNwcAkocmV2aXNpb24gMTI5OTYpCisrKyBr
aHRtbC9odG1sL0hUTUxGb3JtRWxlbWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3
ICszNyw3IEBACiAKICNpbmNsdWRlICJGcmFtZS5oIgogCi0jaW5jbHVkZSA8cXRleHRjb2RlYy5o
PgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgImh0bWxuYW1lcy5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Nyw3ICs1Nyw2IEBAIEhUTUxGb3JtRWxlbWVudEltcGw6
OkhUTUxGb3JtRWxlbWVudEltcGwKICAgICBtX2lucmVzZXQgPSBmYWxzZTsKICAgICBtX2VuY3R5
cGUgPSAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIjsKICAgICBtX2JvdW5kYXJ5
ID0gIi0tLS0tLS0tLS0weEtoVG1MYk91TmRBclkiOwotICAgIG1fYWNjZXB0Y2hhcnNldCA9ICJV
TktOT1dOIjsKICAgICBtX21hbGZvcm1lZCA9IGZhbHNlOwogfQogCkBAIC0xOTAsMzEgKzE4OSwy
NyBAQCBib29sIEhUTUxGb3JtRWxlbWVudEltcGw6OmZvcm1EYXRhKEZvcm1ECiB7CiAgICAgUUNT
dHJpbmcgZW5jX3N0cmluZyA9ICIiOyAvLyB1c2VkIGZvciBub24tbXVsdGlwYXJ0IGRhdGEKIAot
ICAgIC8vIGZpbmQgb3V0IHRoZSBRVGV4dGNvZGVjIHRvIHVzZQorICAgIC8vIGZpbmQgb3V0IHRo
ZSBRVGV4dGVuY29kaW5nIHRvIHVzZQogICAgIFFTdHJpbmcgc3RyID0gbV9hY2NlcHRjaGFyc2V0
LnFzdHJpbmcoKTsKICAgICBzdHIucmVwbGFjZSgnLCcsICcgJyk7CiAgICAgUVN0cmluZ0xpc3Qg
Y2hhcnNldHMgPSBRU3RyaW5nTGlzdDo6c3BsaXQoJyAnLCBzdHIpOwotICAgIFFUZXh0Q29kZWMq
IGNvZGVjID0gMDsKKyAgICBUZXh0RW5jb2RpbmcgZW5jb2RpbmcoSW52YWxpZEVuY29kaW5nKTsK
ICAgICBGcmFtZSAqZnJhbWUgPSBnZXREb2N1bWVudCgpLT5mcmFtZSgpOwogICAgIGZvciAoUVN0
cmluZ0xpc3Q6Okl0ZXJhdG9yIGl0ID0gY2hhcnNldHMuYmVnaW4oKTsgaXQgIT0gY2hhcnNldHMu
ZW5kKCk7ICsraXQpIHsKLSAgICAgICAgUVN0cmluZyBlbmMgPSAoKml0KTsKLSAgICAgICAgaWYg
KGVuYy5jb250YWlucygiVU5LTk9XTiIpKSB7Ci0gICAgICAgICAgICAvLyB1c2Ugc3RhbmRhcmQg
ZG9jdW1lbnQgZW5jb2RpbmcKLSAgICAgICAgICAgIGVuYyA9ICJJU08tODg1OS0xIjsKLSAgICAg
ICAgICAgIGlmIChmcmFtZSkKLSAgICAgICAgICAgICAgICBlbmMgPSBmcmFtZS0+ZW5jb2Rpbmco
KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoKGNvZGVjID0gUVRleHRDb2RlYzo6Y29kZWNGb3JO
YW1lKGVuYy5sYXRpbjEoKSkpKQorICAgICAgICBpZiAoKGVuY29kaW5nID0gVGV4dEVuY29kaW5n
KCgqaXQpLmxhdGluMSgpKSkuaXNWYWxpZCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQog
Ci0gICAgaWYgKCFjb2RlYykKLSAgICAgICAgY29kZWMgPSBRVGV4dENvZGVjOjpjb2RlY0Zvckxv
Y2FsZSgpOwotCisgICAgaWYgKCFlbmNvZGluZy5pc1ZhbGlkKCkpIHsKKyAgICAgICAgaWYgKGZy
YW1lKQorICAgICAgICAgICAgZW5jb2RpbmcgPSBUZXh0RW5jb2RpbmcoZnJhbWUtPmVuY29kaW5n
KCkubGF0aW4xKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbmNvZGluZyA9IFRleHRF
bmNvZGluZyhMYXRpbjFFbmNvZGluZyk7CisgICAgfQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGZvcm1FbGVtZW50cy5zaXplKCk7ICsraSkgewogICAgICAgICBIVE1MR2VuZXJpY0Zv
cm1FbGVtZW50SW1wbCogY3VycmVudCA9IGZvcm1FbGVtZW50c1tpXTsKLSAgICAgICAgRm9ybURh
dGFMaXN0IGxzdChjb2RlYyk7CisgICAgICAgIEZvcm1EYXRhTGlzdCBsc3QoZW5jb2RpbmcpOwog
CiAgICAgICAgIGlmICghY3VycmVudC0+ZGlzYWJsZWQoKSAmJiBjdXJyZW50LT5hcHBlbmRGb3Jt
RGF0YShsc3QsIG1fbXVsdGlwYXJ0KSkgewogICAgICAgICAgICAgZm9yIChRVmFsdWVMaXN0Q29u
c3RJdGVyYXRvcjxGb3JtRGF0YUxpc3RJdGVtPiBpdCA9IGxzdC5iZWdpbigpOyBpdCAhPSBsc3Qu
ZW5kKCk7ICsraXQpIHsKQEAgLTI1Niw3ICsyNTEsNyBAQCBib29sIEhUTUxGb3JtRWxlbWVudElt
cGw6OmZvcm1EYXRhKEZvcm1ECiAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGluZ3MgaWYg
dGhlIGZpbGVuYW1lIGluY2x1ZGVzIGNoYXJhY3RlcnMgeW91IGNhbid0IGVuY29kZQogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIHdlYnNpdGUncyBjaGFyYWN0ZXIgc2V0LgogICAg
ICAgICAgICAgICAgICAgICAgICAgaHN0ciArPSAiOyBmaWxlbmFtZT1cIiI7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBoc3RyICs9IGNvZGVjLT5mcm9tVW5pY29kZShwYXRoLm1pZChwYXRoLmZp
bmRSZXYoJy8nKSArIDEpLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhzdHIgKz0g
ZW5jb2RpbmcuZnJvbVVuaWNvZGUocGF0aC5taWQocGF0aC5maW5kUmV2KCcvJykgKyAxKSwgdHJ1
ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBoc3RyICs9ICJcIiI7CiAKICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmKCFzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50SW1wbCo+KGN1cnJl
bnQpLT52YWx1ZSgpLmlzRW1wdHkoKSkKSW5kZXg6IGtodG1sL2h0bWwvRm9ybURhdGFMaXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga2h0bWwvaHRtbC9Gb3JtRGF0YUxpc3QuaAkocmV2aXNpb24gMTI5OTYp
CisrKyBraHRtbC9odG1sL0Zvcm1EYXRhTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICsz
MCw3IEBACiAjaW5jbHVkZSA8UVN0cmluZy5oPgogI2luY2x1ZGUgPHF2YWx1ZWxpc3QuaD4KICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotCi1jbGFzcyBRVGV4dENvZGVjOworI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgogCiBuYW1lc3BhY2UgRE9NIHsKIApAQCAtNDUsNyArNDQsNyBAQCBz
dHJ1Y3QgRm9ybURhdGFMaXN0SXRlbSB7CiAKIGNsYXNzIEZvcm1EYXRhTGlzdCB7CiBwdWJsaWM6
Ci0gICAgRm9ybURhdGFMaXN0KFFUZXh0Q29kZWMgKik7CisgICAgRm9ybURhdGFMaXN0KGNvbnN0
IFRleHRFbmNvZGluZyYpOwogCiAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IERPTVN0cmluZyAm
a2V5LCBjb25zdCBET01TdHJpbmcgJnZhbHVlKQogICAgICAgICB7IGFwcGVuZFN0cmluZyhrZXku
cXN0cmluZygpKTsgYXBwZW5kU3RyaW5nKHZhbHVlLnFzdHJpbmcoKSk7IH0KQEAgLTY2LDcgKzY1
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGVuZFN0cmluZyhjb25zdCBRQ1N0cmluZyAmcyk7
CiAgICAgdm9pZCBhcHBlbmRTdHJpbmcoY29uc3QgUVN0cmluZyAmcyk7CiAKLSAgICBRVGV4dENv
ZGVjICptX2NvZGVjOworICAgIFRleHRFbmNvZGluZyBtX2VuY29kaW5nOwogICAgIFFWYWx1ZUxp
c3Q8Rm9ybURhdGFMaXN0SXRlbT4gbV9saXN0OwogfTsKIApJbmRleDoga2h0bWwvaHRtbC9Gb3Jt
RGF0YUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL2h0bWwvRm9ybURhdGFMaXN0LmNwcAko
cmV2aXNpb24gMTI5OTYpCisrKyBraHRtbC9odG1sL0Zvcm1EYXRhTGlzdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDEyICsyNiwxMiBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRm9ybURhdGFMaXN0LmgiCi0jaW5jbHVkZSA8cXRleHRjb2RlYy5oPgorI2luY2x1ZGUgPFRl
eHRFbmNvZGluZy5oPgogCiBuYW1lc3BhY2UgRE9NIHsKIAotRm9ybURhdGFMaXN0OjpGb3JtRGF0
YUxpc3QoUVRleHRDb2RlYyAqYykKLSAgICA6IG1fY29kZWMoYykKK0Zvcm1EYXRhTGlzdDo6Rm9y
bURhdGFMaXN0KGNvbnN0IFRleHRFbmNvZGluZyYgYykKKyAgICA6IG1fZW5jb2RpbmcoYykKIHsK
IH0KIApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgUUNTdHJpbmcgZml4TGluZUJyZWFrcyhjb25z
dCBRQ1N0CiAKIHZvaWQgRm9ybURhdGFMaXN0OjphcHBlbmRTdHJpbmcoY29uc3QgUVN0cmluZyAm
cykKIHsKLSAgICBRQ1N0cmluZyBjc3RyID0gZml4TGluZUJyZWFrcyhtX2NvZGVjLT5mcm9tVW5p
Y29kZShzLCB0cnVlKSk7CisgICAgUUNTdHJpbmcgY3N0ciA9IGZpeExpbmVCcmVha3MobV9lbmNv
ZGluZy5mcm9tVW5pY29kZShzLCB0cnVlKSk7CiAgICAgY3N0ci50cnVuY2F0ZShjc3RyLmxlbmd0
aCgpKTsKICAgICBtX2xpc3QuYXBwZW5kKGNzdHIpOwogfQpJbmRleDoga2h0bWwvaHRtbC9odG1s
dG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9odG1sL2h0bWx0b2tlbml6ZXIuY3Bw
CShyZXZpc2lvbiAxMjk5NikKKysrIGtodG1sL2h0bWwvaHRtbHRva2VuaXplci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgdGl0bGVFbmQgW10g
PSAiPC90aXRsZQogLy8gVGhlcmUgbWF5IGJlIGJldHRlciBlcXVpdmFsZW50cwogCiAvLyBXZSBu
ZWVkIHRoaXMgZm9yIGVudGl0aWVzIGF0IGxlYXN0LiBGb3Igbm9uLWVudGl0eSB0ZXh0LCB3ZSBj
b3VsZAotLy8gaGFuZGxlIHRoaXMgaW4gdGhlIHRleHQgY29kZWMuCisvLyBoYW5kbGUgdGhpcyBp
biB0aGUgdGV4dCBlbmNvZGluZy4KIAogLy8gVG8gY292ZXIgbm9uLWVudGl0eSB0ZXh0LCBJIHRo
aW5rIHRoaXMgZnVuY3Rpb24gd291bGQgbmVlZCB0byBiZSBjYWxsZWQKIC8vIGluIG1vcmUgcGxh
Y2VzLiBUaGVyZSBzZWVtIHRvIGJlIHNvbWUgcGxhY2VzIHRoYXQgZG9uJ3QgY2FsbCBmaXhVcENo
YXIuCkluZGV4OiBraHRtbC9lY21hL2tqc19kb20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL2Vj
bWEva2pzX2RvbS5jcHAJKHJldmlzaW9uIDEyOTk2KQorKysga2h0bWwvZWNtYS9ranNfZG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODk0LDcgKzg5NCw3IEBAIEpTVmFsdWUgKkRPTURvY3VtZW50
OjpnZXRWYWx1ZVByb3BlcnR5KEUKICAgY2FzZSBBY3R1YWxFbmNvZGluZzoKICAgY2FzZSBJbnB1
dEVuY29kaW5nOgogICAgIGlmIChEZWNvZGVyKiBkZWNvZGVyID0gZG9jLmRlY29kZXIoKSkKLSAg
ICAgIHJldHVybiBqc1N0cmluZyhkZWNvZGVyLT5lbmNvZGluZygpKTsKKyAgICAgIHJldHVybiBq
c1N0cmluZyhkZWNvZGVyLT5lbmNvZGluZ05hbWUoKSk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwog
ICBjYXNlIERlZmF1bHRDaGFyc2V0OgogICAgIGlmIChGcmFtZSAqZnJhbWUgPSBkb2MuZnJhbWUo
KSkKQEAgLTkzNiw3ICs5MzYsNyBAQCB2b2lkIERPTURvY3VtZW50OjpwdXRWYWx1ZVByb3BlcnR5
KEV4ZWNTCiAgICAgICBkb2Muc2V0U2VsZWN0ZWRTdHlsZXNoZWV0U2V0KHZhbHVlLT50b1N0cmlu
ZyhleGVjKS5kb21TdHJpbmcoKSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIENoYXJzZXQ6Ci0g
ICAgICBkb2MuZGVjb2RlcigpLT5zZXRFbmNvZGluZyh2YWx1ZS0+dG9TdHJpbmcoZXhlYykuY3N0
cmluZygpLmNfc3RyKCksIERlY29kZXI6OlVzZXJDaG9zZW5FbmNvZGluZyk7CisgICAgICBkb2Mu
ZGVjb2RlcigpLT5zZXRFbmNvZGluZ05hbWUodmFsdWUtPnRvU3RyaW5nKGV4ZWMpLmNzdHJpbmco
KS5jX3N0cigpLCBEZWNvZGVyOjpVc2VyQ2hvc2VuRW5jb2RpbmcpOwogICAgICAgYnJlYWs7CiAg
IH0KIH0KSW5kZXg6IGtodG1sL3hzbC94c2x0X3Byb2Nlc3NvcmltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGtodG1sL3hzbC94c2x0X3Byb2Nlc3NvcmltcGwuY3BwCShyZXZpc2lvbiAxMjk5NikKKysr
IGtodG1sL3hzbC94c2x0X3Byb2Nlc3NvcmltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTks
NyArMjE5LDcgQEAgUmVmUHRyPERvY3VtZW50SW1wbD4gWFNMVFByb2Nlc3NvckltcGw6OgogICAg
IHJlc3VsdC0+ZGV0ZXJtaW5lUGFyc2VNb2RlKGRvY3VtZW50U291cmNlKTsgLy8gTWFrZSBzdXJl
IHdlIHBhcnNlIGluIHRoZSBjb3JyZWN0IG1vZGUuCiAgICAgCiAgICAgUmVmUHRyPERlY29kZXI+
IGRlY29kZXIgPSBuZXcgRGVjb2RlcjsKLSAgICBkZWNvZGVyLT5zZXRFbmNvZGluZyhzb3VyY2VF
bmNvZGluZy5pc0VtcHR5KCkgPyAiVVRGLTgiIDogc291cmNlRW5jb2RpbmcubGF0aW4xKCksIERl
Y29kZXI6OkVuY29kaW5nRnJvbVhNTEhlYWRlcik7CisgICAgZGVjb2Rlci0+c2V0RW5jb2RpbmdO
YW1lKHNvdXJjZUVuY29kaW5nLmlzRW1wdHkoKSA/ICJVVEYtOCIgOiBzb3VyY2VFbmNvZGluZy5s
YXRpbjEoKSwgRGVjb2Rlcjo6RW5jb2RpbmdGcm9tWE1MSGVhZGVyKTsKICAgICByZXN1bHQtPnNl
dERlY29kZXIoZGVjb2Rlci5nZXQoKSk7CiAgICAgCiAgICAgcmVzdWx0LT53cml0ZShkb2N1bWVu
dFNvdXJjZSk7CkluZGV4OiBraHRtbC9taXNjL2RlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGto
dG1sL21pc2MvZGVjb2Rlci5jcHAJKHJldmlzaW9uIDEyOTk2KQorKysga2h0bWwvbWlzYy9kZWNv
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTksMTEgKzE5LDcgQEAKICAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCiAg
ICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLwotLy8gS0RFIEhUTUwgV2lkZ2V0IC0tIGRlY29kZXIgZm9yIGlucHV0IHN0cmVhbQogCi0v
LyNkZWZpbmUgREVDT0RFX0RFQlVHCiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJk
ZWNvZGVyLmgiCkBAIC0zMyw3ICsyOSw4IEBACiAjaW5jbHVkZSA8a2xvY2FsZS5oPgogI2luY2x1
ZGUgPGt4bWxjb3JlL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDxxcmVnZXhwLmg+Ci0jaW5jbHVk
ZSA8cXRleHRjb2RlYy5oPgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgIlN0
cmVhbWluZ1RleHREZWNvZGVyLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTEwNiw3ICsxMDMsNyBAQCBjb25zdCB1bnNpZ25lZCBj
aGFyIEthbmppQ29kZTo6a2FuamlfbWFwCiAgKi8KIAogLyoKLSAqIE1heWJlIHdlIHNob3VsZCB1
c2UgUVRleHRDb2RlYzo6aGV1cmlzdGljQ29udGVudE1hdGNoKCkKKyAqIE1heWJlIHdlIHNob3Vs
ZCB1c2UgVGV4dEVuY29kaW5nOjpoZXVyaXN0aWNDb250ZW50TWF0Y2goKQogICogQnV0IGl0IGZh
aWxzIGRldGVjdGlvbi4gSXQncyBub3QgdXNlZnVsLgogICovCiAKQEAgLTI2MSw1NyArMjU4LDQw
IEBAIGJyZWFrQnJlYWs6CiB9CiAKIERlY29kZXI6OkRlY29kZXIoKSAKKyAgOiBtX2VuY29kaW5n
KExhdGluMUVuY29kaW5nKQorICAsIG1fZGVjb2RlcihuZXcgU3RyZWFtaW5nVGV4dERlY29kZXIo
bV9lbmNvZGluZykpCisgICwgZW5jKDApCisgICwgbV90eXBlKERlZmF1bHRFbmNvZGluZykKKyAg
LCBib2R5KGZhbHNlKQorICAsIGJlZ2lubmluZyh0cnVlKQogewotICAgIG1fY29kZWMgPSBRVGV4
dENvZGVjOjpjb2RlY0Zvck5hbWUoImlzbzg4NTktMSIpOyAvLyBsYXRpbjEKLSAgICBtX2RlY29k
ZXIgPSBtX2NvZGVjLT5tYWtlRGVjb2RlcigpOwotICAgIGVuYyA9IDA7Ci0gICAgbV90eXBlID0g
RGVmYXVsdEVuY29kaW5nOwotICAgIGJvZHkgPSBmYWxzZTsKLSAgICBiZWdpbm5pbmcgPSB0cnVl
OwotICAgIHZpc3VhbFJUTCA9IGZhbHNlOwogfQogRGVjb2Rlcjo6fkRlY29kZXIoKQogewogICAg
IGRlbGV0ZSBtX2RlY29kZXI7CiB9CiAKLXZvaWQgRGVjb2Rlcjo6c2V0RW5jb2RpbmcoY29uc3Qg
Y2hhciAqX2VuY29kaW5nLCBFbmNvZGluZ1R5cGUgdHlwZSkKK3ZvaWQgRGVjb2Rlcjo6c2V0RW5j
b2RpbmdOYW1lKGNvbnN0IGNoYXIqIF9lbmNvZGluZywgRW5jb2RpbmdTb3VyY2UgdHlwZSkKIHsK
LSNpZmRlZiBERUNPREVfREVCVUcKLSAgICBrZERlYnVnKDYwMDUpIDw8ICJzZXRFbmNvZGluZyAi
IDw8IF9lbmNvZGluZyA8PCAiICIgPDwgdHlwZSA8PCBlbmRsOwotI2VuZGlmCiAgICAgZW5jID0g
X2VuY29kaW5nOwotI2lmZGVmIERFQ09ERV9ERUJVRwotICAgIGtkRGVidWcoNjAwNSkgPDwgIm9s
ZCBlbmNvZGluZyBpczoiIDw8IG1fY29kZWMtPm5hbWUoKSA8PCBlbmRsOwotI2VuZGlmCiAgICAg
ZW5jID0gZW5jLmxvd2VyKCk7Ci0jaWZkZWYgREVDT0RFX0RFQlVHCi0gICAga2REZWJ1Zyg2MDA1
KSA8PCAicmVxdWVzdGluZzoiIDw8IGVuYyA8PCBlbmRsOwotI2VuZGlmCi0gICAgaWYoZW5jLmlz
TnVsbCgpIHx8IGVuYy5pc0VtcHR5KCkpCisKKyAgICBpZiAoZW5jLmlzTnVsbCgpIHx8IGVuYy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFFUZXh0Q29kZWMgKmNvZGVjID0gKHR5
cGUgPT0gRW5jb2RpbmdGcm9tTWV0YVRhZyB8fCB0eXBlID09IEVuY29kaW5nRnJvbVhNTEhlYWRl
cikKLSAgICAgICAgPyBRVGV4dENvZGVjOjpjb2RlY0Zvck5hbWVFaWdodEJpdE9ubHkoZW5jKQot
ICAgICAgICA6IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZShlbmMpOwotICAgIGlmIChjb2RlYykg
ewotICAgICAgICBlbmMgPSBjb2RlYy0+bmFtZSgpOwotICAgICAgICB2aXN1YWxSVEwgPSBjb2Rl
Yy0+dXNlc1Zpc3VhbE9yZGVyaW5nKCk7Ci0gICAgfQorICAgIFRleHRFbmNvZGluZyBlbmNvZGlu
ZyA9IFRleHRFbmNvZGluZyhlbmMsIHR5cGUgPT0gRW5jb2RpbmdGcm9tTWV0YVRhZyB8fCB0eXBl
ID09IEVuY29kaW5nRnJvbVhNTEhlYWRlcik7CiAKLSAgICBpZiggY29kZWMgKSB7IC8vIGluIGNh
c2UgdGhlIGNvZGVjIGRpZG4ndCBleGlzdCwgd2Uga2VlcCB0aGUgb2xkIG9uZSAoZml4ZXMgc29t
ZSBzaXRlcyBzcGVjaWZ5aW5nIGludmFsaWQgY29kZWNzKQotICAgICAgICBtX2NvZGVjID0gY29k
ZWM7CisgICAgLy8gaW4gY2FzZSB0aGUgZW5jb2RpbmcgZGlkbid0IGV4aXN0LCB3ZSBrZWVwIHRo
ZSBvbGQgb25lIChmaXhlcyBzb21lIHNpdGVzIHNwZWNpZnlpbmcgaW52YWxpZCBlbmNvZGluZ3Mp
CisgICAgaWYgKGVuY29kaW5nLmlzVmFsaWQoKSkgeworICAgICAgICBlbmMgPSBlbmNvZGluZy5u
YW1lKCk7CisgICAgICAgIG1fZW5jb2RpbmcgPSBlbmNvZGluZzsKICAgICAgICAgbV90eXBlID0g
dHlwZTsKICAgICAgICAgZGVsZXRlIG1fZGVjb2RlcjsKLSAgICAgICAgbV9kZWNvZGVyID0gbV9j
b2RlYy0+bWFrZURlY29kZXIoKTsKKyAgICAgICAgbV9kZWNvZGVyID0gbmV3IFN0cmVhbWluZ1Rl
eHREZWNvZGVyKG1fZW5jb2RpbmcpOwogICAgIH0KLSAgICAKLSNpZmRlZiBERUNPREVfREVCVUcK
LSAgICBrZERlYnVnKDYwMDUpIDw8ICJEZWNvZGVyOjplbmNvZGluZyB1c2VkIGlzICIgPDwgbV9j
b2RlYy0+bmFtZSgpIDw8IGVuZGw7Ci0jZW5kaWYKIH0KIAotY29uc3QgY2hhciAqRGVjb2Rlcjo6
ZW5jb2RpbmcoKSBjb25zdAorY29uc3QgY2hhciogRGVjb2Rlcjo6ZW5jb2RpbmdOYW1lKCkgY29u
c3QKIHsKICAgICByZXR1cm4gZW5jOwogfQpAQCAtNDE0LDExICszOTQsMTEgQEAgUVN0cmluZyBE
ZWNvZGVyOjpkZWNvZGUoY29uc3QgY2hhciAqZGF0YQogICAgICAgICAgICAgLy8gSWYgd2UgZm91
bmQgYSBCT00sIHVzZSB0aGUgZW5jb2RpbmcgaXQgaW1wbGllcy4KICAgICAgICAgICAgIGlmIChh
dXRvRGV0ZWN0ZWRFbmNvZGluZyAhPSAwKSB7CiAgICAgICAgICAgICAgICAgbV90eXBlID0gQXV0
b0RldGVjdGVkRW5jb2Rpbmc7Ci0gICAgICAgICAgICAgICAgbV9jb2RlYyA9IFFUZXh0Q29kZWM6
OmNvZGVjRm9yTmFtZShhdXRvRGV0ZWN0ZWRFbmNvZGluZyk7Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKG1fY29kZWMpOwotICAgICAgICAgICAgICAgIGVuYyA9IG1fY29kZWMtPm5hbWUoKTsKKyAg
ICAgICAgICAgICAgICBtX2VuY29kaW5nID0gVGV4dEVuY29kaW5nKGF1dG9EZXRlY3RlZEVuY29k
aW5nKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9lbmNvZGluZy5pc1ZhbGlkKCkpOworICAg
ICAgICAgICAgICAgIGVuYyA9IG1fZW5jb2RpbmcubmFtZSgpOwogICAgICAgICAgICAgICAgIGRl
bGV0ZSBtX2RlY29kZXI7Ci0gICAgICAgICAgICAgICAgbV9kZWNvZGVyID0gbV9jb2RlYy0+bWFr
ZURlY29kZXIoKTsKKyAgICAgICAgICAgICAgICBtX2RlY29kZXIgPSBuZXcgU3RyZWFtaW5nVGV4
dERlY29kZXIobV9lbmNvZGluZyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
YmVnaW5uaW5nID0gZmFsc2U7CkBAIC00NzQsMTMgKzQ1NCwxMyBAQCBRU3RyaW5nIERlY29kZXI6
OmRlY29kZShjb25zdCBjaGFyICpkYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVu
OwogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBvcyA9IGZpbmRYTUxFbmNvZGluZyhzdHIs
IGxlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zICE9IC0xKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldEVuY29kaW5nKHN0ci5taWQocG9zLCBsZW4pLCBFbmNvZGlu
Z0Zyb21YTUxIZWFkZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuY29kaW5n
TmFtZShzdHIubWlkKHBvcywgbGVuKSwgRW5jb2RpbmdGcm9tWE1MSGVhZGVyKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChtX3R5cGUgIT0gRW5jb2RpbmdGcm9tWE1MSGVhZGVyKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuY29kaW5nKCJVVEYtOCIsIEVuY29kaW5nRnJv
bVhNTEhlYWRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RW5jb2RpbmdOYW1l
KCJVVEYtOCIsIEVuY29kaW5nRnJvbVhNTEhlYWRlcik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBjb250aW51ZSBsb29raW5nIGZvciBhIGNoYXJzZXQgLSBpdCBtYXkgYmUgc3BlY2lmaWVk
IGluIGFuIEhUVFAtRXF1aXYgbWV0YQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHB0
clswXSA9PSAwICYmIHB0clsxXSA9PSAnPycgJiYgcHRyWzJdID09IDAgJiYgcHRyWzNdID09ICd4
JyAmJiBwdHJbNF0gPT0gMCAmJiBwdHJbNV0gPT0gJ20nICYmIHB0cls2XSA9PSAwICYmIHB0cls3
XSA9PSAnbCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVURi0xNiB3aXRob3V0IEJP
TQotICAgICAgICAgICAgICAgICAgICAgICAgc2V0RW5jb2RpbmcoKChwdHIgLSBidWZmZXIubGF0
aW4xKCkpICUgMikgPyAiVVRGLTE2TEUiIDogIlVURi0xNkJFIiwgQXV0b0RldGVjdGVkRW5jb2Rp
bmcpOworICAgICAgICAgICAgICAgICAgICAgICAgc2V0RW5jb2RpbmdOYW1lKCgocHRyIC0gYnVm
ZmVyLmxhdGluMSgpKSAlIDIpID8gIlVURi0xNkxFIiA6ICJVVEYtMTZCRSIsIEF1dG9EZXRlY3Rl
ZEVuY29kaW5nKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZm91bmQ7CiAgICAgICAg
ICAgICAgICAgICAgIH0KIApAQCAtNTI4LDEwICs1MDgsNyBAQCBRU3RyaW5nIERlY29kZXI6OmRl
Y29kZShjb25zdCBjaGFyICpkYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzdHJbZW5kcG9zXSAhPSAnICcgJiYgc3RyW2VuZHBvc10gIT0gJyInICYmIHN0cltlbmRwb3Nd
ICE9ICdcJycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0cltlbmRw
b3NdICE9ICc7JyAmJiBzdHJbZW5kcG9zXSAhPSAnPicpICkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW5kcG9zKys7Ci0jaWZkZWYgREVDT0RFX0RFQlVHCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAga2REZWJ1ZyggNjAwNSApIDw8ICJEZWNvZGVyOiBmb3VuZCBjaGFyc2V0
OiAiIDw8IHN0ci5taWQocG9zLCBlbmRwb3MtcG9zKSA8PCBlbmRsOwotI2VuZGlmCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0RW5jb2Rpbmcoc3RyLm1pZChwb3MsIGVuZHBvcy1wb3Mp
LCBFbmNvZGluZ0Zyb21NZXRhVGFnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRF
bmNvZGluZ05hbWUoc3RyLm1pZChwb3MsIGVuZHBvcy1wb3MpLCBFbmNvZGluZ0Zyb21NZXRhVGFn
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggbV90eXBlID09IEVuY29kaW5nRnJv
bU1ldGFUYWcgKSBnb3RvIGZvdW5kOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBlbmRwb3MgPj0gc3RyLmxlbmd0aCgpIHx8IHN0cltlbmRwb3NdID09ICcvJyB8fCBzdHJbZW5k
cG9zXSA9PSAnPicgKSBicmVhazsKQEAgLTU0NCw5ICs1MjEsNiBAQCBRU3RyaW5nIERlY29kZXI6
OmRlY29kZShjb25zdCBjaGFyICpkYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGVuZCB8fCB0YWcgIT0gaHRtbFRhZykgJiYgIXdpdGhpblRpdGxlICYmCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHRhZyAhPSBoZWFkVGFnKSAmJiBpc2FscGhhKHRtcFswXSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSB0cnVlOwotI2lmZGVmIERFQ09ERV9ERUJV
RwotICAgICAgICAgICAgICAgICAgICAgICAga2REZWJ1ZyggNjAwNSApIDw8ICJEZWNvZGVyOiBu
byBjaGFyc2V0IGZvdW5kIChiYWlsaW5nIGJlY2F1c2Ugb2YgXCIiIDw8IHRhZy5xc3RyaW5nKCku
YXNjaWkoKSA8PCAiXCIpLiIgPDwgZW5kbDsKLSNlbmRpZgogICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byBmb3VuZDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0K
QEAgLTU1OSwxMyArNTMzLDEwIEBAIFFTdHJpbmcgRGVjb2Rlcjo6ZGVjb2RlKGNvbnN0IGNoYXIg
KmRhdGEKIAogIGZvdW5kOgogICAgIC8vIERvIHRoZSBhdXRvLWRldGVjdCBpZiBvdXIgZGVmYXVs
dCBlbmNvZGluZyBpcyBvbmUgb2YgdGhlIEphcGFuZXNlIG9uZXMuCi0gICAgaWYgKG1fdHlwZSAh
PSBVc2VyQ2hvc2VuRW5jb2RpbmcgJiYgbV90eXBlICE9IEF1dG9EZXRlY3RlZEVuY29kaW5nICYm
IG1fY29kZWMgJiYgbV9jb2RlYy0+aXNKYXBhbmVzZSgpKQorICAgIGlmIChtX3R5cGUgIT0gVXNl
ckNob3NlbkVuY29kaW5nICYmIG1fdHlwZSAhPSBBdXRvRGV0ZWN0ZWRFbmNvZGluZyAmJiBtX2Vu
Y29kaW5nLmlzSmFwYW5lc2UoKSkKICAgICB7Ci0jaWZkZWYgREVDT0RFX0RFQlVHCi0gICAgICAg
IGtkRGVidWcoIDYwMDUgKSA8PCAiRGVjb2RlcjogdXNlIGF1dG8tZGV0ZWN0ICgiIDw8IHN0cmxl
bihkYXRhKSA8PCAiKSIgPDwgZW5kbDsKLSNlbmRpZgogICAgICAgICBjb25zdCBjaGFyICphdXRv
RGV0ZWN0ZWRFbmNvZGluZzsKLSAgICAgICAgc3dpdGNoICggS2FuamlDb2RlOjpqdWRnZSggZGF0
YSwgbGVuICkgKSB7CisgICAgICAgIHN3aXRjaCAoS2FuamlDb2RlOjpqdWRnZShkYXRhLCBsZW4p
KSB7CiAgICAgICAgIGNhc2UgS2FuamlDb2RlOjpKSVM6CiAgICAgICAgICAgICBhdXRvRGV0ZWN0
ZWRFbmNvZGluZyA9ICJqaXM3IjsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTc5LDI4ICs1NTAs
MjQgQEAgUVN0cmluZyBEZWNvZGVyOjpkZWNvZGUoY29uc3QgY2hhciAqZGF0YQogICAgICAgICAg
ICAgYXV0b0RldGVjdGVkRW5jb2RpbmcgPSBOVUxMOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KLSNpZmRlZiBERUNPREVfREVCVUcKLSAgICAgICAga2REZWJ1ZyggNjAwNSApIDw8ICJE
ZWNvZGVyOiBhdXRvIGRldGVjdCBlbmNvZGluZyBpcyAiCi0gICAgICAgICAgICA8PCAoYXV0b0Rl
dGVjdGVkRW5jb2RpbmcgPyBhdXRvRGV0ZWN0ZWRFbmNvZGluZyA6ICJOVUxMIikgPDwgZW5kbDsK
LSNlbmRpZgogICAgICAgICBpZiAoYXV0b0RldGVjdGVkRW5jb2RpbmcgIT0gMCkgewotICAgICAg
ICAgICAgc2V0RW5jb2RpbmcoYXV0b0RldGVjdGVkRW5jb2RpbmcsIEF1dG9EZXRlY3RlZEVuY29k
aW5nKTsKKyAgICAgICAgICAgIHNldEVuY29kaW5nTmFtZShhdXRvRGV0ZWN0ZWRFbmNvZGluZywg
QXV0b0RldGVjdGVkRW5jb2RpbmcpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gaWYgd2Ug
c3RpbGwgaGF2ZW4ndCBmb3VuZCBhbiBlbmNvZGluZyBsYXRpbjEgd2lsbCBiZSB1c2VkLi4uCi0g
ICAgLy8gdGhpcyBpcyBhY2NvcmRpbmcgdG8gSFRNTDQuMCBzcGVjcwotICAgIGlmICghbV9jb2Rl
YykKKyAgICAvLyBpZiB3ZSBzdGlsbCBoYXZlbid0IGZvdW5kIGFuIGVuY29kaW5nLCBhc3N1bWUg
bGF0aW4xCisgICAgaWYgKCFtX2VuY29kaW5nLmlzVmFsaWQoKSkKICAgICB7Ci0gICAgICAgIGlm
KGVuYy5pc0VtcHR5KCkpIGVuYyA9ICJpc284ODU5LTEiOwotICAgICAgICBtX2NvZGVjID0gUVRl
eHRDb2RlYzo6Y29kZWNGb3JOYW1lKGVuYyk7CisgICAgICAgIGlmIChlbmMuaXNFbXB0eSgpKSAK
KyAgICAgICAgICAgIGVuYyA9ICJpc284ODU5LTEiOworICAgICAgICBtX2VuY29kaW5nID0gVGV4
dEVuY29kaW5nKGVuYyk7CiAgICAgICAgIC8vIGJlIHN1cmUgbm90IHRvIGNyYXNoCi0gICAgICAg
IGlmKCFtX2NvZGVjKSB7CisgICAgICAgIGlmICghbV9lbmNvZGluZy5pc1ZhbGlkKCkpIHsKICAg
ICAgICAgICAgIGVuYyA9ICJpc284ODU5LTEiOwotICAgICAgICAgICAgbV9jb2RlYyA9IFFUZXh0
Q29kZWM6OmNvZGVjRm9yTmFtZShlbmMpOworICAgICAgICAgICAgbV9lbmNvZGluZyA9IFRleHRF
bmNvZGluZyhMYXRpbjFFbmNvZGluZyk7CiAgICAgICAgIH0KICAgICAgICAgZGVsZXRlIG1fZGVj
b2RlcjsKLSAgICAgICAgbV9kZWNvZGVyID0gbV9jb2RlYy0+bWFrZURlY29kZXIoKTsKKyAgICAg
ICAgbV9kZWNvZGVyID0gbmV3IFN0cmVhbWluZ1RleHREZWNvZGVyKG1fZW5jb2RpbmcpOwogICAg
IH0KICAgICBRU3RyaW5nIG91dDsKIApJbmRleDoga2h0bWwvbWlzYy9kZWNvZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga2h0bWwvbWlzYy9kZWNvZGVyLmgJKHJldmlzaW9uIDEyOTk2KQorKysga2h0bWwv
bWlzYy9kZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDE4ICsyMiwyMCBAQAogI2lmbmRl
ZiBLSFRNTERFQ09ERVJfSAogI2RlZmluZSBLSFRNTERFQ09ERVJfSAogCi0jaW5jbHVkZSA8UVN0
cmluZy5oPgotY2xhc3MgUVRleHRDb2RlYzsKLWNsYXNzIFFUZXh0RGVjb2RlcjsKKyNpbmNsdWRl
ICJRU3RyaW5nLmgiCisjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAKIG5hbWVzcGFjZSBraHRt
bCB7CisKKyAgICBjbGFzcyBTdHJlYW1pbmdUZXh0RGVjb2RlcjsgICAgCisgICAgCiAvKioKICAq
IEBpbnRlcm5hbAogICovCiBjbGFzcyBEZWNvZGVyIDogcHVibGljIFNoYXJlZDxEZWNvZGVyPgog
ewogcHVibGljOgotICAgIGVudW0gRW5jb2RpbmdUeXBlIHsKKyAgICBlbnVtIEVuY29kaW5nU291
cmNlIHsKICAgICAgICAgRGVmYXVsdEVuY29kaW5nLAogICAgICAgICBBdXRvRGV0ZWN0ZWRFbmNv
ZGluZywKICAgICAgICAgRW5jb2RpbmdGcm9tWE1MSGVhZGVyLApAQCAtNDUsMjMgKzQ3LDIxIEBA
IHB1YmxpYzoKICAgICBEZWNvZGVyKCk7CiAgICAgfkRlY29kZXIoKTsKIAotICAgIHZvaWQgc2V0
RW5jb2RpbmcoY29uc3QgY2hhciAqZW5jb2RpbmcsIEVuY29kaW5nVHlwZSB0eXBlKTsKLSAgICBj
b25zdCBjaGFyICplbmNvZGluZygpIGNvbnN0OwotCi0gICAgUVN0cmluZyBkZWNvZGUoY29uc3Qg
Y2hhciAqZGF0YSwgaW50IGxlbik7Ci0KLSAgICBib29sIHZpc3VhbGx5T3JkZXJlZCgpIGNvbnN0
IHsgcmV0dXJuIHZpc3VhbFJUTDsgfQorICAgIHZvaWQgc2V0RW5jb2RpbmdOYW1lKGNvbnN0IGNo
YXIqIGVuY29kaW5nLCBFbmNvZGluZ1NvdXJjZSB0eXBlKTsKKyAgICBjb25zdCBjaGFyKiBlbmNv
ZGluZ05hbWUoKSBjb25zdDsKIAotICAgIGNvbnN0IFFUZXh0Q29kZWMgKmNvZGVjKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlYzsgfQorICAgIGJvb2wgdmlzdWFsbHlPcmRlcmVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmNvZGluZy51c2VzVmlzdWFsT3JkZXJpbmcoKTsgfQorICAgIGNvbnN0IFRleHRF
bmNvZGluZyYgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX2VuY29kaW5nOyB9CiAKKyAgICBR
U3RyaW5nIGRlY29kZShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKTsKICAgICBRU3RyaW5nIGZs
dXNoKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICAvLyBjb2RlYyB1c2VkIGZvciBkZWNvZGlu
Zy4gZGVmYXVsdCBpcyBMYXRpbjEuCi0gICAgUVRleHRDb2RlYyAqbV9jb2RlYzsKLSAgICBRVGV4
dERlY29kZXIgKm1fZGVjb2RlcjsKKyAgICAvLyBlbmNvZGluZyB1c2VkIGZvciBkZWNvZGluZy4g
ZGVmYXVsdCBpcyBMYXRpbjEuCisgICAgVGV4dEVuY29kaW5nIG1fZW5jb2Rpbmc7CisgICAgU3Ry
ZWFtaW5nVGV4dERlY29kZXIgKm1fZGVjb2RlcjsKICAgICBRQ1N0cmluZyBlbmM7Ci0gICAgRW5j
b2RpbmdUeXBlIG1fdHlwZTsKKyAgICBFbmNvZGluZ1NvdXJjZSBtX3R5cGU7CiAKICAgICAvLyBP
dXIgdmVyc2lvbiBvZiBRU3RyaW5nIHdvcmtzIHdlbGwgZm9yIGFsbC04LWJpdCBjaGFyYWN0ZXJz
LCBhbmQgYWxsb3dzIG51bGwgY2hhcmFjdGVycy4KICAgICAvLyBUaGlzIHdvcmtzIGJldHRlciB0
aGFuIFFDU3RyaW5nIHdoZW4gdGhlcmUgYXJlIG51bGwgY2hhcmFjdGVycyBpbnZvbHZlZC4KQEAg
LTY5LDcgKzY5LDYgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBib2R5OwogICAgIGJvb2wgYmVn
aW5uaW5nOwotICAgIGJvb2wgdmlzdWFsUlRMOwogfTsKIAogfQpJbmRleDogcGxhdGZvcm0vQ2hh
cnNldE5hbWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9DaGFyc2V0TmFtZXMuY3BwCShy
ZXZpc2lvbiAxMjk4OCkKKysrIHBsYXRmb3JtL0NoYXJzZXROYW1lcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzIEFwcGxlIENvbXB1
dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA1IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQG55cG9wLmNvbT4uCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC0yNSwxMzkgKzI1LDEzOSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJLV1FDaGFyc2V0cy5oIgorI2luY2x1ZGUgIkNoYXJzZXROYW1lcy5oIgog
CisjaW5jbHVkZSA8a3htbGNvcmUvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWNudi5o
PgogI2luY2x1ZGUgPHVuaWNvZGUvdXR5cGVzLmg+CiAKKyNpZiBfX0FQUExFX18KKyNpbmNsdWRl
ICJFeHRyYUNGRW5jb2RpbmdzLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIEtYTUxDb3JlIHsKKwor
ICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OlRleHRFbmNvZGluZ0lE
PiB7CisgICAgICAgIHR5cGVkZWYgUHRySGFzaDxXZWJDb3JlOjpUZXh0RW5jb2RpbmdJRD4gSGFz
aDsKKyAgICB9OworCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpU
ZXh0RW5jb2RpbmdJRD4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpUZXh0RW5jb2RpbmdJ
RD4geworICAgICAgICBzdGF0aWMgVHJhaXRUeXBlIGRlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIFdl
YkNvcmU6OkludmFsaWRFbmNvZGluZzsgfQorICAgIH07CisgICAgCit9IC8vIG5hbWVzcGFjZSBL
WE1MQ29yZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKIHN0cnVjdCBDaGFyc2V0RW50cnkgewot
ICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICAgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZzsKLSAg
ICBLV1FFbmNvZGluZ0ZsYWdzIGZsYWdzOworICAgIGNvbnN0IGNoYXIqIG5hbWU7CisgICAgVGV4
dEVuY29kaW5nSUQgZW5jb2Rpbmc7CisgICAgaW50IGZsYWdzOyAvLyBhY3R1YWxseSBUZXh0RW5j
b2RpbmdGbGFncwogfTsKIAotLy8gVW50aWwgdGhlcmUncyBhIENGU3RyaW5nIGNvbnN0YW50IGZv
ciB0aGVzZSBlbmNvZGluZ3MsIHRoaXMgd29ya3MuCi0vLyBTaW5jZSB0aGV5IGFyZSBtYWNyb3Ms
IHRoZXkgd29uJ3QgY2F1c2UgYSBjb21waWxlIGZhaWx1cmUgZXZlbiBhIHRoZSBDRlN0cmluZyBj
b25zdGFudCBpcyBhZGRlZC4KLSNkZWZpbmUga0NGU3RyaW5nRW5jb2RpbmdCaWc1X0RPU1Zhcmlh
bnQgKGtUZXh0RW5jb2RpbmdCaWc1IHwgKGtCaWc1X0RPU1ZhcmlhbnQgPDwgMTYpKQotI2RlZmlu
ZSBrQ0ZTdHJpbmdFbmNvZGluZ0VVQ19DTl9ET1NWYXJpYW50IChrVGV4dEVuY29kaW5nRVVDX0NO
IHwgKGtFVUNfQ05fRE9TVmFyaWFudCA8PCAxNikpCi0jZGVmaW5lIGtDRlN0cmluZ0VuY29kaW5n
RVVDX0tSX0RPU1ZhcmlhbnQgKGtUZXh0RW5jb2RpbmdFVUNfS1IgfCAoa0VVQ19LUl9ET1NWYXJp
YW50IDw8IDE2KSkKLSNkZWZpbmUga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEwIGtUZXh0RW5j
b2RpbmdJU09MYXRpbjEwCi0jZGVmaW5lIGtDRlN0cmluZ0VuY29kaW5nS09JOF9VIGtUZXh0RW5j
b2RpbmdLT0k4X1UKLSNkZWZpbmUga0NGU3RyaW5nRW5jb2RpbmdTaGlmdEpJU19ET1NWYXJpYW50
IChrVGV4dEVuY29kaW5nU2hpZnRKSVMgfCAoa1NoaWZ0SklTX0RPU1ZhcmlhbnQgPDwgMTYpKQot
CiAvLyBUaGUgZm9sbG93aW5nIGF1dG9nZW5lcmF0ZWQgZmlsZSBpbmNsdWRlcyB0aGUgY2hhcnNl
dCBkYXRhLgotI2luY2x1ZGUgIktXUUNoYXJzZXREYXRhLmMiCisjaW5jbHVkZSAiQ2hhcnNldERh
dGEuY3BwIgogCi1zdGF0aWMgQm9vbGVhbiBlbmNvZGluZ05hbWVzRXF1YWwoY29uc3Qgdm9pZCAq
dmFsdWUxLCBjb25zdCB2b2lkICp2YWx1ZTIpOwotc3RhdGljIENGSGFzaENvZGUgZW5jb2RpbmdO
YW1lSGFzaChjb25zdCB2b2lkICp2YWx1ZSk7CisvLyBHb2xkZW4gcmF0aW8gLSBhcmJpdHJhcnkg
c3RhcnQgdmFsdWUgdG8gYXZvaWQgbWFwcGluZyBhbGwgMCdzIHRvIGFsbCAwJ3MKKy8vIG9yIGFu
eXRoaW5nIGxpa2UgdGhhdC4KK2NvbnN0IHVuc2lnbmVkIFBISSA9IDB4OWUzNzc5YjlVOwogCi1z
dGF0aWMgY29uc3QgQ0ZEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzIGVuY29kaW5nTmFtZUtleUNhbGxi
YWNrcyA9IHsgMCwgTlVMTCwgTlVMTCwgTlVMTCwgZW5jb2RpbmdOYW1lc0VxdWFsLCBlbmNvZGlu
Z05hbWVIYXNoIH07CitzdHJ1Y3QgRW5jb2RpbmdIYXNoIHsKKyAgICBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIpCisgICAgeworICAgICAgICBjaGFyIGMx
OworICAgICAgICBjaGFyIGMyOworICAgICAgICAKKyAgICAgICAgZG8geworICAgICAgICAgICAg
ZG8geworICAgICAgICAgICAgICAgIGMxID0gKnMxKys7CisgICAgICAgICAgICB9IHdoaWxlIChj
MSAmJiAhaXNhbG51bShjMSkpOworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGMy
ID0gKnMyKys7CisgICAgICAgICAgICB9IHdoaWxlIChjMiAmJiAhaXNhbG51bShjMikpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAodG9sb3dlcihjMSkgIT0gdG9sb3dlcihjMikpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IHdoaWxlIChjMSAmJiBjMik7
CisKKyAgICAgICAgcmV0dXJuICFjMSAmJiAhYzI7CisgICAgfQorCisgICAgLy8gVGhpcyBoYXNo
IGFsZ29yaXRobSBjb21lcyBmcm9tOgorICAgIC8vIGh0dHA6Ly9idXJ0bGVidXJ0bGUubmV0L2Jv
Yi9oYXNoL2hhc2hmYXEuaHRtbAorICAgIC8vIGh0dHA6Ly9idXJ0bGVidXJ0bGUubmV0L2JvYi9o
YXNoL2Rvb2JzLmh0bWwKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBjaGFyKiBzKQor
ICAgIHsKKyAgICAgICAgdW5zaWduZWQgaCA9IFBISTsKKyAgICAgICAgCisgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpICE9IDE2OyArK2kpIHsKKyAgICAgICAgICAgIGNoYXIgYzsKKyAgICAgICAg
ICAgIGRvIHsKKyAgICAgICAgICAgICAgICBjID0gKnMrKzsKKyAgICAgICAgICAgIH0gd2hpbGUg
KGMgJiYgIWlzYWxudW0oYykpOworICAgICAgICAgICAgaWYgKCFjKSB7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBoICs9IHRvbG93ZXIoYyk7Cisg
ICAgICAgICAgICBoICs9IChoIDw8IDEwKTsgCisgICAgICAgICAgICBoIF49IChoID4+IDYpOyAK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaCArPSAoaCA8PCAzKTsKKyAgICAgICAgaCBe
PSAoaCA+PiAxMSk7CisgICAgICAgIGggKz0gKGggPDwgMTUpOworICAgICAgICAKKyAgICAgICAg
cmV0dXJuIGg7CisgICAgfQorfTsKIAotc3RhdGljIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgbmFt
ZVRvVGFibGUgPSBOVUxMOwotc3RhdGljIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgZW5jb2RpbmdU
b1RhYmxlID0gTlVMTDsKK3N0YXRpYyBIYXNoTWFwPGNvbnN0IGNoYXIqLCBjb25zdCBDaGFyc2V0
RW50cnkqLCBFbmNvZGluZ0hhc2g+KiBuYW1lTWFwOworc3RhdGljIEhhc2hNYXA8VGV4dEVuY29k
aW5nSUQsIGNvbnN0IENoYXJzZXRFbnRyeSo+KiBlbmNvZGluZ01hcDsKIAogc3RhdGljIHZvaWQg
YnVpbGREaWN0aW9uYXJpZXMoKQogewotICAgIG5hbWVUb1RhYmxlID0gQ0ZEaWN0aW9uYXJ5Q3Jl
YXRlTXV0YWJsZShOVUxMLCAwLCAmZW5jb2RpbmdOYW1lS2V5Q2FsbGJhY2tzLCBOVUxMKTsKLSAg
ICBlbmNvZGluZ1RvVGFibGUgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKE5VTEwsIDAsIE5V
TEwsIE5VTEwpOworICAgIG5hbWVNYXAgPSBuZXcgSGFzaE1hcDxjb25zdCBjaGFyKiwgY29uc3Qg
Q2hhcnNldEVudHJ5KiwgRW5jb2RpbmdIYXNoPigpOworICAgIGVuY29kaW5nTWFwID0gbmV3IEhh
c2hNYXA8VGV4dEVuY29kaW5nSUQsIGNvbnN0IENoYXJzZXRFbnRyeSo+KCk7CiAKLSAgICBmb3Ig
KGludCBpID0gMDsgdGFibGVbaV0ubmFtZSAhPSBOVUxMOyBpKyspIHsKLSAgICAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUobmFtZVRvVGFibGUsIHRhYmxlW2ldLm5hbWUsICZ0YWJsZVtpXSk7Ci0g
ICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGVuY29kaW5nVG9UYWJsZSwgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkICo+KHRhYmxlW2ldLmVuY29kaW5nKSwgJnRhYmxlW2ldKTsKKyAgICBmb3IgKGlu
dCBpID0gMDsgdGFibGVbaV0ubmFtZTsgKytpKSB7CisgICAgICAgIG5hbWVNYXAtPmFkZCh0YWJs
ZVtpXS5uYW1lLCAmdGFibGVbaV0pOworICAgICAgICBlbmNvZGluZ01hcC0+YWRkKHRhYmxlW2ld
LmVuY29kaW5nLCAmdGFibGVbaV0pOwogICAgIH0KIH0KIAotQ0ZTdHJpbmdFbmNvZGluZyBLV1FD
RlN0cmluZ0VuY29kaW5nRnJvbUlBTkFDaGFyc2V0TmFtZShjb25zdCBjaGFyICpuYW1lLCBLV1FF
bmNvZGluZ0ZsYWdzICpmbGFncykKK1RleHRFbmNvZGluZ0lEIHRleHRFbmNvZGluZ0lERnJvbUNo
YXJzZXROYW1lKGNvbnN0IGNoYXIqIG5hbWUsIFRleHRFbmNvZGluZ0ZsYWdzKiBmbGFncykKIHsK
LSAgICBpZiAobmFtZVRvVGFibGUgPT0gTlVMTCkgeworICAgIGlmICghbmFtZU1hcCkKICAgICAg
ICAgYnVpbGREaWN0aW9uYXJpZXMoKTsKLSAgICB9CiAKLSAgICBjb25zdCB2b2lkICp2YWx1ZTsK
LSAgICBpZiAoIUNGRGljdGlvbmFyeUdldFZhbHVlSWZQcmVzZW50KG5hbWVUb1RhYmxlLCBuYW1l
LCAmdmFsdWUpKSB7CisgICAgY29uc3QgQ2hhcnNldEVudHJ5KiBlbnRyeSA9IG5hbWVNYXAtPmdl
dChuYW1lKTsKKyAgICBpZiAoIWVudHJ5KSB7CiAgICAgICAgIFVFcnJvckNvZGUgZXJyID0gVV9a
RVJPX0VSUk9SOworICAgICAgICAvLyBGSVhNRTogd2UgaGF2ZSBhbiBhbGlhcyB0YWJsZSBhbHJl
YWR5LCBkbyB3ZSBuZWVkIHRvIGNvbnN1bHQgaWN1J3MgYXMgd2VsbD8KKyAgICAgICAgLy8gZG8g
dGhleSBrbm93IGV4dHJhIGFsaWFzZXM/CiAgICAgICAgIG5hbWUgPSB1Y252X2dldFN0YW5kYXJk
TmFtZShuYW1lLCAiSUFOQSIsICZlcnIpOwogICAgICAgICAKLSAgICAgICAgaWYgKCFuYW1lIHx8
ICFDRkRpY3Rpb25hcnlHZXRWYWx1ZUlmUHJlc2VudChuYW1lVG9UYWJsZSwgbmFtZSwgJnZhbHVl
KSkgewotICAgICAgICAgICAgaWYgKGZsYWdzKSB7CisgICAgICAgIGlmICghbmFtZSB8fCAhKGVu
dHJ5ID0gbmFtZU1hcC0+Z2V0KG5hbWUpKSkgeworICAgICAgICAgICAgaWYgKGZsYWdzKQogICAg
ICAgICAgICAgICAgICpmbGFncyA9IE5vRW5jb2RpbmdGbGFnczsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJldHVybiBrQ0ZTdHJpbmdFbmNvZGluZ0ludmFsaWRJZDsKKyAgICAgICAgICAg
IHJldHVybiBJbnZhbGlkRW5jb2Rpbmc7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGZsYWdz
KSB7Ci0gICAgICAgICpmbGFncyA9IHN0YXRpY19jYXN0PGNvbnN0IENoYXJzZXRFbnRyeSAqPih2
YWx1ZSktPmZsYWdzOwotICAgIH0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ2hhcnNl
dEVudHJ5ICo+KHZhbHVlKS0+ZW5jb2Rpbmc7Ci19CiAKLWNvbnN0IGNoYXIgKktXUUNGU3RyaW5n
RW5jb2RpbmdUb0lBTkFDaGFyc2V0TmFtZShDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nKQotewot
ICAgIGlmIChlbmNvZGluZ1RvVGFibGUgPT0gTlVMTCkgewotICAgICAgICBidWlsZERpY3Rpb25h
cmllcygpOwotICAgIH0KLSAgICAKLSAgICBjb25zdCB2b2lkICp2YWx1ZTsKLSAgICBpZiAoIUNG
RGljdGlvbmFyeUdldFZhbHVlSWZQcmVzZW50KGVuY29kaW5nVG9UYWJsZSwgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkICo+KGVuY29kaW5nKSwgJnZhbHVlKSkgewotICAgICAgICByZXR1cm4gTlVMTDsK
LSAgICB9Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENoYXJzZXRFbnRyeSAqPih2YWx1
ZSktPm5hbWU7CisgICAgaWYgKGZsYWdzKQorICAgICAgICAqZmxhZ3MgPSAoVGV4dEVuY29kaW5n
RmxhZ3MpZW50cnktPmZsYWdzOworICAgIHJldHVybiBlbnRyeS0+ZW5jb2Rpbmc7CiB9CiAKLXN0
YXRpYyBCb29sZWFuIGVuY29kaW5nTmFtZXNFcXVhbChjb25zdCB2b2lkICp2YWx1ZTEsIGNvbnN0
IHZvaWQgKnZhbHVlMikKK2NvbnN0IGNoYXIqIGNoYXJzZXROYW1lRnJvbVRleHRFbmNvZGluZ0lE
KFRleHRFbmNvZGluZ0lEIGVuY29kaW5nKQogewotICAgIGNvbnN0IGNoYXIgKnMxID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhciAqPih2YWx1ZTEpOwotICAgIGNvbnN0IGNoYXIgKnMyID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhciAqPih2YWx1ZTIpOworICAgIGlmICghZW5jb2RpbmdNYXApCisgICAg
ICAgIGJ1aWxkRGljdGlvbmFyaWVzKCk7CiAgICAgCi0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAg
Y2hhciBjMTsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgYzEgPSAqczErKzsKLSAgICAgICAg
fSB3aGlsZSAoYzEgJiYgIWlzYWxudW0oYzEpKTsKLSAgICAgICAgY2hhciBjMjsKLSAgICAgICAg
ZG8gewotICAgICAgICAgICAgYzIgPSAqczIrKzsKLSAgICAgICAgfSB3aGlsZSAoYzIgJiYgIWlz
YWxudW0oYzIpKTsKLSAgICAgICAgCi0gICAgICAgIGlmICh0b2xvd2VyKGMxKSAhPSB0b2xvd2Vy
KGMyKSkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICBpZiAoIWMxIHx8ICFjMikgewotICAgICAgICAgICAgcmV0dXJuICFjMSAmJiAhYzI7
Ci0gICAgICAgIH0KLSAgICB9CisgICAgY29uc3QgQ2hhcnNldEVudHJ5KiBlbnRyeSA9IGVuY29k
aW5nTWFwLT5nZXQoZW5jb2RpbmcpOworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybiAw
OworICAgIHJldHVybiBlbnRyeS0+bmFtZTsKIH0KIAotLy8gR29sZGVuIHJhdGlvIC0gYXJiaXRy
YXJ5IHN0YXJ0IHZhbHVlIHRvIGF2b2lkIG1hcHBpbmcgYWxsIDAncyB0byBhbGwgMCdzCi0vLyBv
ciBhbnl0aGluZyBsaWtlIHRoYXQuCi1jb25zdCB1bnNpZ25lZCBQSEkgPSAweDllMzc3OWI5VTsK
LQotLy8gVGhpcyBoYXNoIGFsZ29yaXRobSBjb21lcyBmcm9tOgotLy8gaHR0cDovL2J1cnRsZWJ1
cnRsZS5uZXQvYm9iL2hhc2gvaGFzaGZhcS5odG1sCi0vLyBodHRwOi8vYnVydGxlYnVydGxlLm5l
dC9ib2IvaGFzaC9kb29icy5odG1sCi1zdGF0aWMgQ0ZIYXNoQ29kZSBlbmNvZGluZ05hbWVIYXNo
KGNvbnN0IHZvaWQgKnZhbHVlKQotewotICAgIGNvbnN0IGNoYXIgKnMgPSBzdGF0aWNfY2FzdDxj
b25zdCBjaGFyICo+KHZhbHVlKTsKLSAgICAKLSAgICBDRkhhc2hDb2RlIGggPSBQSEk7Ci0KLSAg
ICBmb3IgKGludCBpID0gMDsgaSAhPSAxNjsgKytpKSB7Ci0gICAgICAgIGNoYXIgYzsKLSAgICAg
ICAgZG8gewotICAgICAgICAgICAgYyA9ICpzKys7Ci0gICAgICAgIH0gd2hpbGUgKGMgJiYgIWlz
YWxudW0oYykpOwotICAgICAgICBpZiAoIWMpIHsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGggKz0gdG9sb3dlcihjKTsKLSAgICAgICAgaCArPSAoaCA8PCAxMCk7IAot
ICAgICAgICBoIF49IChoID4+IDYpOyAKLSAgICB9Ci0KLSAgICBoICs9IChoIDw8IDMpOwotICAg
IGggXj0gKGggPj4gMTEpOwotICAgIGggKz0gKGggPDwgMTUpOwotIAotICAgIHJldHVybiBoOwot
fQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogcGxhdGZvcm0vbWFjL1FTdHJpbmdNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbWFjL1FTdHJpbmdNYWMubW0JKHJldmlzaW9uIDEy
OTk2KQorKysgcGxhdGZvcm0vbWFjL1FTdHJpbmdNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4
LDcgKzI4LDkgQEAKIAogI2ltcG9ydCA8a3htbGNvcmUvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0jaW1wb3J0ICJLV1FUZXh0Q29kZWMuaCIKKyNpbXBv
cnQgIlRleHRFbmNvZGluZy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBR
U3RyaW5nOjpzZXRCdWZmZXJGcm9tQ0ZTdHJpbmcoQ0ZTdHJpbmdSZWYgY2ZzKQogewpAQCAtMTAw
LDEyICsxMDIsMyBAQCBRQ1N0cmluZyBRU3RyaW5nOjp1dGY4KGludCAmbGVuZ3RoKSBjb25zCiAg
ICAgcmV0dXJuIHFjczsKIH0KIAotUVN0cmluZyBRU3RyaW5nOjpmcm9tVXRmOChjb25zdCBjaGFy
ICpjaHMpCi17Ci0gICAgcmV0dXJuIFFUZXh0Q29kZWMoa0NGU3RyaW5nRW5jb2RpbmdVVEY4KS50
b1VuaWNvZGUoY2hzLCBzdHJsZW4oY2hzKSk7Ci19Ci0KLVFTdHJpbmcgUVN0cmluZzo6ZnJvbVV0
ZjgoY29uc3QgY2hhciAqY2hzLCBpbnQgbGVuKQotewotICAgIHJldHVybiBRVGV4dENvZGVjKGtD
RlN0cmluZ0VuY29kaW5nVVRGOCkudG9Vbmljb2RlKGNocywgbGVuKTsKLX0KSW5kZXg6IHBsYXRm
b3JtL21hYy9tYWMtZW5jb2RpbmdzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9tYWMvbWFj
LWVuY29kaW5ncy50eHQJKHJldmlzaW9uIDEyOTg4KQorKysgcGxhdGZvcm0vbWFjL21hYy1lbmNv
ZGluZ3MudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgSklTX1gwMjA4Xzgz
LCBJc0phcGFuZXNlOiBKSVNfWDAyMDgtMTk4MwogSklTX1gwMjA4XzkwLCBJc0phcGFuZXNlOiBK
SVNfWDAyMDgtMTk5MAogSklTX1gwMjEyXzkwLCBJc0phcGFuZXNlOiBKSVNfWDAyMTItMTk5MAog
SklTX0M2MjI2Xzc4LCBJc0phcGFuZXNlOiBKSVNfQzYyMjYtMTk3OAotU2hpZnRKSVNfWDAyMTNf
MDAsIElzSmFwYW5lc2U6IFNoaWZ0X0pJU19YMDIxMy0yMDAwCitTaGlmdEpJU19YMDIxM18wMCwg
SXNKYXBhbmVzZXxCYWNrc2xhc2hJc1llbjogU2hpZnRfSklTX1gwMjEzLTIwMDAKIEdCXzIzMTJf
ODAKIEdCS185NQogR0JfMTgwMzBfMjAwMDogR0IxODAzMApAQCAtMTMxLDcgKzEzMSw3IEBAIElT
T18yMDIyX0NOOiBJU08tMjAyMi1DTgogSVNPXzIwMjJfQ05fRVhUOiBJU08tMjAyMi1DTi1FWFQK
IElTT18yMDIyX0tSOiBJU08tMjAyMi1LUgogCi1FVUNfSlAsIElzSmFwYW5lc2U6IEVVQy1KUCwg
eGV1YywgeGV1Y2pwCitFVUNfSlAsIElzSmFwYW5lc2V8QmFja3NsYXNoSXNZZW46IEVVQy1KUCwg
eGV1YywgeGV1Y2pwCiBFVUNfQ05fRE9TVmFyaWFudDogRVVDLUNOLCBjbmdiLCBjc2diMjMxMjgw
LCBnYjIzMTIsIGdiMjMxMjgwLCBnYmssIHhldWNjbiwgeGdiawogRVVDX1RXOiBFVUMtVFcKIEVV
Q19LUl9ET1NWYXJpYW50OiBFVUMtS1IsIGNwOTQ5LCBrc2M1NjAxCkluZGV4OiBwbGF0Zm9ybS9t
YWMvVGV4dEVuY29kaW5nTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9tYWMvVGV4dEVu
Y29kaW5nTWFjLmNwcAkocmV2aXNpb24gMTI5ODgpCisrKyBwbGF0Zm9ybS9tYWMvVGV4dEVuY29k
aW5nTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDEzNyAr
MjQsMjggQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiS1dRVGV4dENv
ZGVjLmgiCisjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAKICNpbmNsdWRlIDxreG1sY29yZS9B
c3NlcnRpb25zLmg+Ci0jaW5jbHVkZSAiS1dRQ2hhcnNldHMuaCIKLSNpbmNsdWRlICJLV1FMb2dn
aW5nLmgiCi0jaW5jbHVkZSA8dW5pY29kZS91Y252Lmg+Ci0jaW5jbHVkZSA8dW5pY29kZS91dHlw
ZXMuaD4KKyNpbmNsdWRlIDxreG1sY29yZS9IYXNoU2V0Lmg+CisjaW5jbHVkZSAiUVN0cmluZy5o
IgorI2luY2x1ZGUgIlN0cmVhbWluZ1RleHREZWNvZGVyLmgiCiAKLWNvbnN0IFVuaUNoYXIgcmVw
bGFjZW1lbnRDaGFyYWN0ZXIgPSAweEZGRkQ7Ci1jb25zdCBVbmlDaGFyIEJPTSA9IDB4RkVGRjsK
K25hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IGludCBDb252ZXJzaW9uQnVmZmVy
U2l6ZSA9IDE2Mzg0OwotCi1jbGFzcyBLV1FUZXh0RGVjb2RlciA6IHB1YmxpYyBRVGV4dERlY29k
ZXIgewotcHVibGljOgotICAgIEtXUVRleHREZWNvZGVyKENGU3RyaW5nRW5jb2RpbmcsIEtXUUVu
Y29kaW5nRmxhZ3MpOwotICAgIH5LV1FUZXh0RGVjb2RlcigpOwotICAgIAotICAgIFFTdHJpbmcg
dG9Vbmljb2RlKGNvbnN0IGNoYXIgKmNocywgaW50IGxlbiwgYm9vbCBmbHVzaCk7Ci0KLXByaXZh
dGU6Ci0gICAgUVN0cmluZyBjb252ZXJ0KGNvbnN0IGNoYXIgKmNocywgaW50IGxlbiwgYm9vbCBm
bHVzaCkKLSAgICAgICAgeyByZXR1cm4gY29udmVydChyZWludGVycHJldF9jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIgKj4oY2hzKSwgbGVuLCBmbHVzaCk7IH0KLSAgICBRU3RyaW5nIGNvbnZlcnQo
Y29uc3QgdW5zaWduZWQgY2hhciAqY2hzLCBpbnQgbGVuLCBib29sIGZsdXNoKTsKLSAgICBRU3Ry
aW5nIGNvbnZlcnRMYXRpbjEoY29uc3QgdW5zaWduZWQgY2hhciAqY2hzLCBpbnQgbGVuKTsKLSAg
ICBRU3RyaW5nIGNvbnZlcnRVVEYxNihjb25zdCB1bnNpZ25lZCBjaGFyICpjaHMsIGludCBsZW4p
OwotICAgIAotICAgIC8vIElDVSBkZWNvZGluZy4KLSAgICBRU3RyaW5nIGNvbnZlcnRVc2luZ0lD
VShjb25zdCB1bnNpZ25lZCBjaGFyICpjaHMsIGludCBsZW4sIGJvb2wgZmx1c2gpOwotICAgIFVF
cnJvckNvZGUgY3JlYXRlSUNVQ29udmVydGVyKCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBlbmRP
bWl0dGluZ1Vud2FudGVkKFFTdHJpbmcgJnMsIGNvbnN0IFVuaUNoYXIgKmNoYXJhY3RlcnMsIGlu
dCBieXRlQ291bnQpOwotICAgIAotICAgIEtXUVRleHREZWNvZGVyKGNvbnN0IEtXUVRleHREZWNv
ZGVyICYpOwotICAgIEtXUVRleHREZWNvZGVyICZvcGVyYXRvcj0oY29uc3QgS1dRVGV4dERlY29k
ZXIgJik7Ci0KLSAgICBDRlN0cmluZ0VuY29kaW5nIF9lbmNvZGluZzsKLSAgICBib29sIF9saXR0
bGVFbmRpYW47Ci0gICAgYm9vbCBfYXRTdGFydDsKLSAgICBib29sIF9lcnJvcjsKLQotICAgIHVu
c2lnbmVkIF9udW1CdWZmZXJlZEJ5dGVzOwotICAgIHVuc2lnbmVkIGNoYXIgX2J1ZmZlcmVkQnl0
ZXNbMTZdOyAvLyBiaWdnZXIgdGhhbiBhbnkgc2luZ2xlIG11bHRpLWJ5dGUgY2hhcmFjdGVyCi0K
LSAgICAvLyBJQ1UgZGVjb2RpbmcuCi0gICAgVUNvbnZlcnRlciAqX2NvbnZlcnRlcklDVTsKLSAg
ICBzdGF0aWMgVUNvbnZlcnRlciAqX2NhY2hlZENvbnZlcnRlcklDVTsKLSAgICBzdGF0aWMgQ0ZT
dHJpbmdFbmNvZGluZyBfY2FjaGVkQ29udmVydGVyRW5jb2Rpbmc7Ci19OwotCi1VQ29udmVydGVy
ICpLV1FUZXh0RGVjb2Rlcjo6X2NhY2hlZENvbnZlcnRlcklDVTsKLUNGU3RyaW5nRW5jb2Rpbmcg
S1dRVGV4dERlY29kZXI6Ol9jYWNoZWRDb252ZXJ0ZXJFbmNvZGluZyA9IGtDRlN0cmluZ0VuY29k
aW5nSW52YWxpZElkOwotCi1zdGF0aWMgQm9vbGVhbiBRVGV4dENvZGVjc0VxdWFsKGNvbnN0IHZv
aWQgKnZhbHVlMSwgY29uc3Qgdm9pZCAqdmFsdWUyKTsKLXN0YXRpYyBDRkhhc2hDb2RlIFFUZXh0
Q29kZWNIYXNoKGNvbnN0IHZvaWQgKnZhbHVlKTsKLQotc3RhdGljIFFUZXh0Q29kZWMgKmNvZGVj
Rm9yQ0ZTdHJpbmdFbmNvZGluZyhDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nLCBLV1FFbmNvZGlu
Z0ZsYWdzIGZsYWdzKQotewotICAgIGlmIChlbmNvZGluZyA9PSBrQ0ZTdHJpbmdFbmNvZGluZ0lu
dmFsaWRJZCkgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIGNv
bnN0IENGRGljdGlvbmFyeUtleUNhbGxCYWNrcyBRVGV4dENvZGVjS2V5Q2FsbGJhY2tzID0geyAw
LCBOVUxMLCBOVUxMLCBOVUxMLCBRVGV4dENvZGVjc0VxdWFsLCBRVGV4dENvZGVjSGFzaCB9Owot
ICAgIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGVuY29kaW5nVG9Db2RlYyA9IENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgJlFUZXh0Q29kZWNLZXlDYWxsYmFja3MsIE5V
TEwpOwotICAgIAotICAgIFFUZXh0Q29kZWMga2V5KGVuY29kaW5nLCBmbGFncyk7Ci0gICAgY29u
c3Qgdm9pZCAqdmFsdWU7Ci0gICAgaWYgKENGRGljdGlvbmFyeUdldFZhbHVlSWZQcmVzZW50KGVu
Y29kaW5nVG9Db2RlYywgJmtleSwgJnZhbHVlKSkgewotICAgICAgICByZXR1cm4gY29uc3RfY2Fz
dDxRVGV4dENvZGVjICo+KHN0YXRpY19jYXN0PGNvbnN0IFFUZXh0Q29kZWMgKj4odmFsdWUpKTsK
LSAgICB9Ci0gICAgUVRleHRDb2RlYyAqY29kZWMgPSBuZXcgUVRleHRDb2RlYyhlbmNvZGluZywg
ZmxhZ3MpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGVuY29kaW5nVG9Db2RlYywgY29kZWMs
IGNvZGVjKTsKLSAgICByZXR1cm4gY29kZWM7Ci19Ci0KLVFUZXh0Q29kZWMqIFFUZXh0Q29kZWM6
OmNvZGVjRm9yTmFtZShjb25zdCBjaGFyKiBuYW1lKQorc3RhdGljIGlubGluZSBUZXh0RW5jb2Rp
bmdJRCBlZmZlY3RpdmVFbmNvZGluZyhUZXh0RW5jb2RpbmdJRCBlbmNvZGluZykKIHsKLSAgICBL
V1FFbmNvZGluZ0ZsYWdzIGZsYWdzOwotICAgIENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcgPSBL
V1FDRlN0cmluZ0VuY29kaW5nRnJvbUlBTkFDaGFyc2V0TmFtZShuYW1lLCAmZmxhZ3MpOwotICAg
IHJldHVybiBjb2RlY0ZvckNGU3RyaW5nRW5jb2RpbmcoZW5jb2RpbmcsIGZsYWdzKTsKLX0KLQot
UVRleHRDb2RlYyogUVRleHRDb2RlYzo6dXRmOENvZGVjKCkKLXsKLSAgICByZXR1cm4gY29kZWNG
b3JDRlN0cmluZ0VuY29kaW5nKGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgTm9FbmNvZGluZ0ZsYWdz
KTsKLX0KLQotUVRleHRDb2RlYyogUVRleHRDb2RlYzo6Y29kZWNGb3JOYW1lRWlnaHRCaXRPbmx5
KGNvbnN0IGNoYXIqIG5hbWUpCi17Ci0gICAgS1dRRW5jb2RpbmdGbGFncyBmbGFnczsKLSAgICBD
RlN0cmluZ0VuY29kaW5nIGVuY29kaW5nID0gS1dRQ0ZTdHJpbmdFbmNvZGluZ0Zyb21JQU5BQ2hh
cnNldE5hbWUobmFtZSwgJmZsYWdzKTsKLSAgICBzd2l0Y2ggKGVuY29kaW5nKSB7Ci0gICAgICAg
IGNhc2Uga0NGU3RyaW5nRW5jb2RpbmdVbmljb2RlOgotICAgICAgICAgICAgZW5jb2RpbmcgPSBr
Q0ZTdHJpbmdFbmNvZGluZ1VURjg7Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0
dXJuIGNvZGVjRm9yQ0ZTdHJpbmdFbmNvZGluZyhlbmNvZGluZywgZmxhZ3MpOwotfQotCi1RVGV4
dENvZGVjKiBRVGV4dENvZGVjOjpjb2RlY0ZvckxvY2FsZSgpCi17Ci0gICAgcmV0dXJuIGNvZGVj
Rm9yQ0ZTdHJpbmdFbmNvZGluZyhDRlN0cmluZ0dldFN5c3RlbUVuY29kaW5nKCksIE5vRW5jb2Rp
bmdGbGFncyk7Ci19Ci0KLWNvbnN0IGNoYXIqIFFUZXh0Q29kZWM6Om5hbWUoKSBjb25zdAotewot
ICAgIHJldHVybiBLV1FDRlN0cmluZ0VuY29kaW5nVG9JQU5BQ2hhcnNldE5hbWUoX2VuY29kaW5n
KTsKLX0KLQotUVRleHREZWNvZGVyKiBRVGV4dENvZGVjOjptYWtlRGVjb2RlcigpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG5ldyBLV1FUZXh0RGVjb2RlcihfZW5jb2RpbmcsIF9mbGFncyk7Ci19Ci0K
LWlubGluZSBDRlN0cmluZ0VuY29kaW5nIGVmZmVjdGl2ZUVuY29kaW5nKENGU3RyaW5nRW5jb2Rp
bmcgZSkKLXsKLSAgICBzd2l0Y2ggKGUpIHsKLSAgICAgICAgY2FzZSBrQ0ZTdHJpbmdFbmNvZGlu
Z0lTT0xhdGluMToKLSAgICAgICAgY2FzZSBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJOgotICAgICAg
ICAgICAgZSA9IGtDRlN0cmluZ0VuY29kaW5nV2luZG93c0xhdGluMTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICByZXR1cm4gZTsKKyAgICBpZiAoZW5jb2RpbmcgPT0gTGF0aW4xRW5j
b2RpbmcgfHwgZW5jb2RpbmcgPT0gQVNDSUlFbmNvZGluZykKKyAgICAgICAgcmV0dXJuIFdpbkxh
dGluMUVuY29kaW5nOworICAgIHJldHVybiBlbmNvZGluZzsKIH0KIAotUUNTdHJpbmcgUVRleHRD
b2RlYzo6ZnJvbVVuaWNvZGUoY29uc3QgUVN0cmluZyAmcWNzLCBib29sIGFsbG93RW50aXRpZXMp
IGNvbnN0CitRQ1N0cmluZyBUZXh0RW5jb2Rpbmc6OmZyb21Vbmljb2RlKGNvbnN0IFFTdHJpbmcg
JnFjcywgYm9vbCBhbGxvd0VudGl0aWVzKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgcmVhbGx5IHVzZSB0aGUgc2FtZSBBUEkgaW4gYm90aCBkaXJlY3Rpb25zLgogICAgIC8vIEN1
cnJlbnRseSB3ZSB1c2UgSUNVIHRvIGRlY29kZSBhbmQgQ0ZTdHJpbmcgdG8gZW5jb2RlOyBpdCB3
b3VsZCBiZSBiZXR0ZXIgdG8gZW5jb2RlIHdpdGggSUNVIHRvby4KICAgICAKLSAgICBDRlN0cmlu
Z0VuY29kaW5nIGVuY29kaW5nID0gZWZmZWN0aXZlRW5jb2RpbmcoX2VuY29kaW5nKTsKKyAgICBU
ZXh0RW5jb2RpbmdJRCBlbmNvZGluZyA9IGVmZmVjdGl2ZUVuY29kaW5nKG1fZW5jb2RpbmdJRCk7
CiAKICAgICAvLyBGSVhNRTogU2luY2UgdGhlcmUncyBubyAiZm9yY2UgQVNDSUkgcmFuZ2UiIG1v
ZGUgaW4gQ0ZTdHJpbmcsIHdlIGNoYW5nZSB0aGUgYmFja3NsYXNoIGludG8gYSB5ZW4gc2lnbi4K
ICAgICAvLyBFbmNvZGluZyB3aWxsIGNoYW5nZSB0aGUgeWVuIHNpZ24gYmFjayBpbnRvIGEgYmFj
a3NsYXNoLgpAQCAtMTkyLDM2NSArODMsNCBAQCBRQ1N0cmluZyBRVGV4dENvZGVjOjpmcm9tVW5p
Y29kZShjb25zdCBRCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUVN0cmluZyBRVGV4dENvZGVj
Ojp0b1VuaWNvZGUoY29uc3QgY2hhciAqY2hzLCBpbnQgbGVuKSBjb25zdAotewotICAgIHJldHVy
biBLV1FUZXh0RGVjb2RlcihfZW5jb2RpbmcsIF9mbGFncykudG9Vbmljb2RlKGNocywgbGVuLCB0
cnVlKTsKLX0KLQotUVN0cmluZyBRVGV4dENvZGVjOjp0b1VuaWNvZGUoY29uc3QgQnl0ZUFycmF5
ICZxYmEsIGludCBsZW4pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEtXUVRleHREZWNvZGVyKF9lbmNv
ZGluZywgX2ZsYWdzKS50b1VuaWNvZGUocWJhLCBsZW4sIHRydWUpOwotfQotCi1RQ2hhciBRVGV4
dENvZGVjOjpiYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sKCkgY29uc3QKLXsKLSAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIHB1dCB0aGlzIGluZm9ybWF0aW9uIGludG8gS1dRQ2hhcnNldERhdGEgaW5z
dGVhZCBvZiBoYXZpbmcgYSBzd2l0Y2ggaGVyZS4KLSAgICBzd2l0Y2ggKF9lbmNvZGluZykgewot
ICAgICAgICBjYXNlIGtDRlN0cmluZ0VuY29kaW5nU2hpZnRKSVNfWDAyMTNfMDA6Ci0gICAgICAg
IGNhc2Uga0NGU3RyaW5nRW5jb2RpbmdFVUNfSlA6Ci0gICAgICAgICAgICByZXR1cm4gMHgwMEE1
OyAvLyB5ZW4gc2lnbgotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuICdcXCc7
Ci0gICAgfQotfQotCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgUVRleHRDb2RlYyAmYSwgY29uc3Qg
UVRleHRDb2RlYyAmYikKLXsKLSAgICByZXR1cm4gYS5fZW5jb2RpbmcgPT0gYi5fZW5jb2Rpbmcg
JiYgYS5fZmxhZ3MgPT0gYi5fZmxhZ3M7Ci19Ci0KLS8vIEdvbGRlbiByYXRpbyAtIGFyYml0cmFy
eSBzdGFydCB2YWx1ZSB0byBhdm9pZCBtYXBwaW5nIGFsbCAwJ3MgdG8gYWxsIDAncwotLy8gb3Ig
YW55dGhpbmcgbGlrZSB0aGF0LgotY29uc3QgdW5zaWduZWQgUEhJID0gMHg5ZTM3NzliOVU7Ci0K
LS8vIFBhdWwgSHNpZWgncyBTdXBlckZhc3RIYXNoCi0vLyBodHRwOi8vd3d3LmF6aWxsaW9ubW9u
a2V5cy5jb20vcWVkL2hhc2guaHRtbAotLy8gQWRhcHRlZCBhc3N1bWluZyBfZW5jb2RpbmcgaXMg
MzIgYml0cyBhbmQgX2ZsYWdzIGlzIGF0IG1vc3QgMTYgYml0cwotdW5zaWduZWQgUVRleHRDb2Rl
Yzo6aGFzaCgpIGNvbnN0Ci17Ci0gICAgdWludDMyX3QgaGFzaCA9IFBISTsKLSAgICB1aW50MzJf
dCB0bXA7Ci0gICAgCi0gICAgaGFzaCArPSBfZW5jb2RpbmcgJiAweGZmZmY7Ci0gICAgdG1wID0g
KChfZW5jb2RpbmcgPj4gMTYpIDw8IDExKSBeIGhhc2g7Ci0gICAgaGFzaCA9IChoYXNoIDw8IDE2
KSBeIHRtcDsKLSAgICBoYXNoICs9IGhhc2ggPj4gMTE7Ci0gICAgCi0gICAgaGFzaCArPSBfZmxh
Z3MgJiAweGZmZmY7Ci0gICAgaGFzaCBePSBoYXNoIDw8IDExOwotICAgIGhhc2ggKz0gaGFzaCA+
PiAxNzsKLQotICAgIC8vIEZvcmNlICJhdmFsYW5jaGluZyIgb2YgZmluYWwgMTI3IGJpdHMKLSAg
ICBoYXNoIF49IGhhc2ggPDwgMzsKLSAgICBoYXNoICs9IGhhc2ggPj4gNTsKLSAgICBoYXNoIF49
IGhhc2ggPDwgMjsKLSAgICBoYXNoICs9IGhhc2ggPj4gMTU7Ci0gICAgaGFzaCBePSBoYXNoIDw8
IDEwOwotCi0gICAgcmV0dXJuIGhhc2g7Ci19Ci0KLXN0YXRpYyBCb29sZWFuIFFUZXh0Q29kZWNz
RXF1YWwoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKLXsKLSAgICByZXR1cm4gKnN0YXRp
Y19jYXN0PGNvbnN0IFFUZXh0Q29kZWMgKj4oYSkgPT0gKnN0YXRpY19jYXN0PGNvbnN0IFFUZXh0
Q29kZWMgKj4oYik7Ci19Ci0KLXN0YXRpYyBDRkhhc2hDb2RlIFFUZXh0Q29kZWNIYXNoKGNvbnN0
IHZvaWQgKnZhbHVlKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBRVGV4dENvZGVj
ICo+KHZhbHVlKS0+aGFzaCgpOwotfQotCi0vLyA9PT09PT09PT09PT09PT09Ci0KLVFUZXh0RGVj
b2Rlcjo6flFUZXh0RGVjb2RlcigpCi17Ci19Ci0KLS8vID09PT09PT09PT09PT09PT0KLQotS1dR
VGV4dERlY29kZXI6OktXUVRleHREZWNvZGVyKENGU3RyaW5nRW5jb2RpbmcgZSwgS1dRRW5jb2Rp
bmdGbGFncyBmKQotICAgIDogX2VuY29kaW5nKGUpLCBfbGl0dGxlRW5kaWFuKGYgJiA6OkxpdHRs
ZUVuZGlhbiksIF9hdFN0YXJ0KHRydWUpLCBfZXJyb3IoZmFsc2UpCi0gICAgLCBfbnVtQnVmZmVy
ZWRCeXRlcygwKSwgX2NvbnZlcnRlcklDVSgwKQotewotfQotCi1LV1FUZXh0RGVjb2Rlcjo6fktX
UVRleHREZWNvZGVyKCkKLXsKLSAgICBpZiAoX2NvbnZlcnRlcklDVSkgewotICAgICAgICBpZiAo
X2NhY2hlZENvbnZlcnRlcklDVSAhPSAwKSB7Ci0gICAgICAgICAgICB1Y252X2Nsb3NlKF9jYWNo
ZWRDb252ZXJ0ZXJJQ1UpOwotICAgICAgICB9Ci0gICAgICAgIF9jYWNoZWRDb252ZXJ0ZXJJQ1Ug
PSBfY29udmVydGVySUNVOwotICAgICAgICBfY2FjaGVkQ29udmVydGVyRW5jb2RpbmcgPSBfZW5j
b2Rpbmc7Ci0gICAgfQotfQotCi1RU3RyaW5nIEtXUVRleHREZWNvZGVyOjpjb252ZXJ0TGF0aW4x
KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMsIGludCBsZW5ndGgpCi17Ci0gICAgQVNTRVJUKF9udW1C
dWZmZXJlZEJ5dGVzID09IDApOwotCi0gICAgcmV0dXJuIFFTdHJpbmcocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyICo+KHMpLCBsZW5ndGgpOwotfQotCi1RU3RyaW5nIEtXUVRleHREZWNvZGVy
Ojpjb252ZXJ0VVRGMTYoY29uc3QgdW5zaWduZWQgY2hhciAqcywgaW50IGxlbmd0aCkKLXsKLSAg
ICBBU1NFUlQoX251bUJ1ZmZlcmVkQnl0ZXMgPT0gMCB8fCBfbnVtQnVmZmVyZWRCeXRlcyA9PSAx
KTsKLQotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAgPSBzOwotICAgIHVuc2lnbmVkIGxlbiA9
IGxlbmd0aDsKLSAgICAKLSAgICBRU3RyaW5nIHJlc3VsdCgiIik7Ci0gICAgCi0gICAgcmVzdWx0
LnJlc2VydmUobGVuZ3RoIC8gMik7Ci0KLSAgICBpZiAoX251bUJ1ZmZlcmVkQnl0ZXMgIT0gMCAm
JiBsZW4gIT0gMCkgewotICAgICAgICBBU1NFUlQoX251bUJ1ZmZlcmVkQnl0ZXMgPT0gMSk7Ci0g
ICAgICAgIFVuaUNoYXIgYzsKLSAgICAgICAgaWYgKF9saXR0bGVFbmRpYW4pIHsKLSAgICAgICAg
ICAgIGMgPSBfYnVmZmVyZWRCeXRlc1swXSB8IChwWzBdIDw8IDgpOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgYyA9IChfYnVmZmVyZWRCeXRlc1swXSA8PCA4KSB8IHBbMF07Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKGMpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVpbnRl
cnByZXRfY2FzdDxRQ2hhciAqPigmYyksIDEpOwotICAgICAgICB9Ci0gICAgICAgIF9udW1CdWZm
ZXJlZEJ5dGVzID0gMDsKLSAgICAgICAgcCArPSAxOwotICAgICAgICBsZW4gLT0gMTsKLSAgICB9
Ci0gICAgCi0gICAgd2hpbGUgKGxlbiA+IDEpIHsKLSAgICAgICAgVW5pQ2hhciBidWZmZXJbQ29u
dmVyc2lvbkJ1ZmZlclNpemVdOwotICAgICAgICBpbnQgcnVuTGVuZ3RoID0gTUlOKGxlbiAvIDIs
IHNpemVvZihidWZmZXIpIC8gc2l6ZW9mKGJ1ZmZlclswXSkpOwotICAgICAgICBpbnQgYnVmZmVy
TGVuZ3RoID0gMDsKLSAgICAgICAgaWYgKF9saXR0bGVFbmRpYW4pIHsKLSAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgcnVuTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBVbmlD
aGFyIGMgPSBwWzBdIHwgKHBbMV0gPDwgOCk7Ci0gICAgICAgICAgICAgICAgcCArPSAyOwotICAg
ICAgICAgICAgICAgIGlmIChjICYmIGMgIT0gQk9NKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1
ZmZlcltidWZmZXJMZW5ndGgrK10gPSBjOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcnVu
TGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBVbmlDaGFyIGMgPSAocFswXSA8PCA4KSB8
IHBbMV07Ci0gICAgICAgICAgICAgICAgcCArPSAyOwotICAgICAgICAgICAgICAgIGlmIChjICYm
IGMgIT0gQk9NKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltidWZmZXJMZW5ndGgrK10g
PSBjOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICByZXN1bHQuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8UUNoYXIgKj4oYnVmZmVyKSwgYnVmZmVy
TGVuZ3RoKTsKLSAgICAgICAgbGVuIC09IHJ1bkxlbmd0aCAqIDI7Ci0gICAgfQotICAgIAotICAg
IGlmIChsZW4pIHsKLSAgICAgICAgQVNTRVJUKF9udW1CdWZmZXJlZEJ5dGVzID09IDApOwotICAg
ICAgICBfbnVtQnVmZmVyZWRCeXRlcyA9IDE7Ci0gICAgICAgIF9idWZmZXJlZEJ5dGVzWzBdID0g
cFswXTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotVUVycm9yQ29kZSBL
V1FUZXh0RGVjb2Rlcjo6Y3JlYXRlSUNVQ29udmVydGVyKCkKLXsKLSAgICBjb25zdCBDRlN0cmlu
Z0VuY29kaW5nIGVuY29kaW5nID0gZWZmZWN0aXZlRW5jb2RpbmcoX2VuY29kaW5nKTsKLSAgICBj
b25zdCBjaGFyICplbmNvZGluZ05hbWUgPSBLV1FDRlN0cmluZ0VuY29kaW5nVG9JQU5BQ2hhcnNl
dE5hbWUoZW5jb2RpbmcpOwotCi0gICAgYm9vbCBjYWNoZWRFbmNvZGluZ0VxdWFsID0gX2NhY2hl
ZENvbnZlcnRlckVuY29kaW5nID09IGVuY29kaW5nOwotICAgIF9jYWNoZWRDb252ZXJ0ZXJFbmNv
ZGluZyA9IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElkOwotCi0gICAgaWYgKGNhY2hlZEVuY29k
aW5nRXF1YWwgJiYgX2NhY2hlZENvbnZlcnRlcklDVSkgewotICAgICAgICBfY29udmVydGVySUNV
ID0gX2NhY2hlZENvbnZlcnRlcklDVTsKLSAgICAgICAgX2NhY2hlZENvbnZlcnRlcklDVSA9IDA7
Ci0gICAgICAgIExPRyhUZXh0Q29udmVyc2lvbiwgInVzaW5nIGNhY2hlZCBJQ1UgY29udmVydGVy
IGZvciBlbmNvZGluZzogJXMiLCBlbmNvZGluZ05hbWUpOwotICAgIH0gZWxzZSB7ICAgIAotICAg
ICAgICBVRXJyb3JDb2RlIGVyciA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgQVNTRVJUKCFfY29u
dmVydGVySUNVKTsKLSAgICAgICAgTE9HKFRleHRDb252ZXJzaW9uLCAiY3JlYXRpbmcgSUNVIGNv
bnZlcnRlciBmb3IgZW5jb2Rpbmc6ICVzIiwgZW5jb2RpbmdOYW1lKTsKLSAgICAgICAgX2NvbnZl
cnRlcklDVSA9IHVjbnZfb3BlbihlbmNvZGluZ05hbWUsICZlcnIpOwotICAgICAgICBpZiAoZXJy
ID09IFVfQU1CSUdVT1VTX0FMSUFTX1dBUk5JTkcpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigi
SUNVIGFtYmlndW91cyBhbGlhcyB3YXJuaW5nIGZvciBlbmNvZGluZzogJXMiLCBlbmNvZGluZ05h
bWUpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghX2NvbnZlcnRlcklDVSkgewotICAgICAgICAg
ICAgTE9HX0VSUk9SKCJ0aGUgSUNVIENvbnZlcnRlciB3b24ndCBjb252ZXJ0IGZyb20gdGV4dCBl
bmNvZGluZyAweCVYLCBlcnJvciAlZCIsIGVuY29kaW5nLCBlcnIpOwotICAgICAgICAgICAgcmV0
dXJuIGVycjsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gVV9aRVJPX0VSUk9S
OwotfQotCi0vLyBXZSBzdHJpcCByZXBsYWNlbWVudCBjaGFyYWN0ZXJzIGJlY2F1c2UgdGhlIElD
VSBjb252ZXJ0ZXIgZm9yIFVURi04IGNvbnZlcnRzCi0vLyBpbnZhbGlkIHNlcXVlbmNlcyBpbnRv
IHJlcGxhY2VtZW50IGNoYXJhY3RlcnMsIGJ1dCBvdGhlciBicm93c2VycyBkaXNjYXJkIHRoZW0u
Ci0vLyBXZSBzdHJpcCBCT00gY2hhcmFjdGVycyBiZWNhdXNlIHRoZXkgY2FuIHNob3cgdXAgYm90
aCBhdCB0aGUgc3RhcnQgb2YgY29udGVudAotLy8gYW5kIGluc2lkZSBjb250ZW50LCBhbmQgd2Ug
bmV2ZXIgd2FudCB0aGVtIHRvIGVuZCB1cCBpbiB0aGUgZGVjb2RlZCB0ZXh0Lgotc3RhdGljIGlu
bGluZSBib29sIHVud2FudGVkKFVuaUNoYXIgYykKLXsKLSAgICBzd2l0Y2ggKGMpIHsKLSAgICAg
ICAgY2FzZSByZXBsYWNlbWVudENoYXJhY3RlcjoKLSAgICAgICAgY2FzZSBCT006Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci19Ci0KLXZvaWQgS1dRVGV4dERlY29kZXI6OmFwcGVuZE9taXR0aW5nVW53
YW50ZWQoUVN0cmluZyAmcywgY29uc3QgVW5pQ2hhciAqY2hhcmFjdGVycywgaW50IGJ5dGVDb3Vu
dCkKLXsKLSAgICBBU1NFUlQoYnl0ZUNvdW50ICUgc2l6ZW9mKFVuaUNoYXIpID09IDApOwotICAg
IGludCBzdGFydCA9IDA7Ci0gICAgaW50IGNoYXJhY3RlckNvdW50ID0gYnl0ZUNvdW50IC8gc2l6
ZW9mKFVuaUNoYXIpOwotICAgIGZvciAoaW50IGkgPSAwOyBpICE9IGNoYXJhY3RlckNvdW50OyAr
K2kpIHsKLSAgICAgICAgaWYgKHVud2FudGVkKGNoYXJhY3RlcnNbaV0pKSB7Ci0gICAgICAgICAg
ICBpZiAoc3RhcnQgIT0gaSkgewotICAgICAgICAgICAgICAgIHMuYXBwZW5kKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgUUNoYXIgKj4oJmNoYXJhY3RlcnNbc3RhcnRdKSwgaSAtIHN0YXJ0KTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0YXJ0ID0gaSArIDE7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgaWYgKHN0YXJ0ICE9IGNoYXJhY3RlckNvdW50KSB7Ci0gICAgICAgIHMuYXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgUUNoYXIgKj4oJmNoYXJhY3RlcnNbc3RhcnRdKSwgY2hhcmFj
dGVyQ291bnQgLSBzdGFydCk7Ci0gICAgfQotfQotCi1RU3RyaW5nIEtXUVRleHREZWNvZGVyOjpj
b252ZXJ0VXNpbmdJQ1UoY29uc3QgdW5zaWduZWQgY2hhciAqY2hzLCBpbnQgbGVuLCBib29sIGZs
dXNoKQotewotICAgIC8vIEdldCBhIGNvbnZlcnRlciBmb3IgdGhlIHBhc3NlZC1pbiBlbmNvZGlu
Zy4KLSAgICBpZiAoIV9jb252ZXJ0ZXJJQ1UgJiYgVV9GQUlMVVJFKGNyZWF0ZUlDVUNvbnZlcnRl
cigpKSkgewotICAgICAgICByZXR1cm4gUVN0cmluZygpOwotICAgIH0KLSAgICBBU1NFUlQoX2Nv
bnZlcnRlcklDVSk7Ci0KLSAgICBRU3RyaW5nIHJlc3VsdCgiIik7Ci0gICAgcmVzdWx0LnJlc2Vy
dmUobGVuKTsKLQotICAgIFVDaGFyIGJ1ZmZlcltDb252ZXJzaW9uQnVmZmVyU2l6ZV07Ci0gICAg
Y29uc3QgY2hhciAqc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KGNocyk7
Ci0gICAgY29uc3QgY2hhciAqc291cmNlTGltaXQgPSBzb3VyY2UgKyBsZW47Ci0gICAgaW50MzJf
dCAqb2Zmc2V0cyA9IE5VTEw7Ci0gICAgVUVycm9yQ29kZSBlcnI7Ci0gICAgCi0gICAgZG8gewot
ICAgICAgICBVQ2hhciAqdGFyZ2V0ID0gYnVmZmVyOwotICAgICAgICBjb25zdCBVQ2hhciAqdGFy
Z2V0TGltaXQgPSB0YXJnZXQgKyBDb252ZXJzaW9uQnVmZmVyU2l6ZTsKLSAgICAgICAgZXJyID0g
VV9aRVJPX0VSUk9SOwotICAgICAgICB1Y252X3RvVW5pY29kZShfY29udmVydGVySUNVLCAmdGFy
Z2V0LCB0YXJnZXRMaW1pdCwgJnNvdXJjZSwgc291cmNlTGltaXQsIG9mZnNldHMsIGZsdXNoLCAm
ZXJyKTsKLSAgICAgICAgaW50IGNvdW50ID0gdGFyZ2V0IC0gYnVmZmVyOwotICAgICAgICBhcHBl
bmRPbWl0dGluZ1Vud2FudGVkKHJlc3VsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFy
ICo+KGJ1ZmZlciksIGNvdW50ICogc2l6ZW9mKFVuaUNoYXIpKTsKLSAgICB9IHdoaWxlIChlcnIg
PT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpOwotCi0gICAgaWYgKFVfRkFJTFVSRShlcnIpKSB7
Ci0gICAgICAgIC8vIGZsdXNoIHRoZSBjb252ZXJ0ZXIgc28gaXQgY2FuIGJlIHJldXNlZCwgYW5k
IG5vdCBiZSBib3RoZXJlZCBieSB0aGlzIGVycm9yLgotICAgICAgICBkbyB7Ci0gICAgICAgICAg
ICBVQ2hhciAqdGFyZ2V0ID0gYnVmZmVyOwotICAgICAgICAgICAgY29uc3QgVUNoYXIgKnRhcmdl
dExpbWl0ID0gdGFyZ2V0ICsgQ29udmVyc2lvbkJ1ZmZlclNpemU7Ci0gICAgICAgICAgICBlcnIg
PSBVX1pFUk9fRVJST1I7Ci0gICAgICAgICAgICB1Y252X3RvVW5pY29kZShfY29udmVydGVySUNV
LCAmdGFyZ2V0LCB0YXJnZXRMaW1pdCwgJnNvdXJjZSwgc291cmNlTGltaXQsIG9mZnNldHMsIHRy
dWUsICZlcnIpOwotICAgICAgICB9IHdoaWxlIChzb3VyY2UgPCBzb3VyY2VMaW1pdCk7Ci0gICAg
ICAgIExPR19FUlJPUigiSUNVIGNvbnZlcnNpb24gZXJyb3IiKTsKLSAgICAgICAgcmV0dXJuIFFT
dHJpbmcoKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUVN0cmluZyBL
V1FUZXh0RGVjb2Rlcjo6Y29udmVydChjb25zdCB1bnNpZ25lZCBjaGFyICpjaHMsIGludCBsZW4s
IGJvb2wgZmx1c2gpCi17Ci0gICAgLy8jZGVmaW5lIFBBUlRJQUxfQ0hBUkFDVEVSX0hBTkRMSU5H
X1RFU1RfQ0hVTktfU0laRSAxMDAwCi0KLSAgICBzd2l0Y2ggKF9lbmNvZGluZykgewotICAgIGNh
c2Uga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjE6Ci0gICAgY2FzZSBrQ0ZTdHJpbmdFbmNvZGlu
Z1dpbmRvd3NMYXRpbjE6Ci0gICAgICAgIHJldHVybiBjb252ZXJ0TGF0aW4xKGNocywgbGVuKTsK
LQotICAgIGNhc2Uga0NGU3RyaW5nRW5jb2RpbmdVbmljb2RlOgotICAgICAgICByZXR1cm4gY29u
dmVydFVURjE2KGNocywgbGVuKTsKLQotICAgIGRlZmF1bHQ6Ci0jaWYgUEFSVElBTF9DSEFSQUNU
RVJfSEFORExJTkdfVEVTVF9DSFVOS19TSVpFCi0gICAgICAgIFFTdHJpbmcgcmVzdWx0OwotICAg
ICAgICBpbnQgY2h1bmtTaXplOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBsZW47IGkg
Kz0gY2h1bmtTaXplKSB7Ci0gICAgICAgICAgICBjaHVua1NpemUgPSBsZW4gLSBpOwotICAgICAg
ICAgICAgaWYgKGNodW5rU2l6ZSA+IFBBUlRJQUxfQ0hBUkFDVEVSX0hBTkRMSU5HX1RFU1RfQ0hV
TktfU0laRSkgewotICAgICAgICAgICAgICAgIGNodW5rU2l6ZSA9IFBBUlRJQUxfQ0hBUkFDVEVS
X0hBTkRMSU5HX1RFU1RfQ0hVTktfU0laRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
c3VsdCArPSBjb252ZXJ0VXNpbmdJQ1UoY2hzICsgaSwgY2h1bmtTaXplLCBmbHVzaCAmJiAoaSAr
IGNodW5rU2l6ZSA9PSBsZW4pKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0Owot
I2Vsc2UKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRVc2luZ0lDVShjaHMsIGxlbiwgZmx1c2gpOwot
I2VuZGlmCi0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBRU3Ry
aW5nKCk7Ci19Ci0KLVFTdHJpbmcgS1dRVGV4dERlY29kZXI6OnRvVW5pY29kZShjb25zdCBjaGFy
ICpjaHMsIGludCBsZW4sIGJvb2wgZmx1c2gpCi17Ci0gICAgQVNTRVJUX0FSRyhsZW4sIGxlbiA+
PSAwKTsKLSAgICAKLSAgICBpZiAoX2Vycm9yIHx8ICFjaHMpIHsKLSAgICAgICAgcmV0dXJuIFFT
dHJpbmcoKTsKLSAgICB9Ci0gICAgaWYgKGxlbiA8PSAwICYmICFmbHVzaCkgewotICAgICAgICBy
ZXR1cm4gIiI7Ci0gICAgfQotCi0gICAgLy8gSGFuZGxlIG5vcm1hbCBjYXNlLgotICAgIGlmICgh
X2F0U3RhcnQpIHsKLSAgICAgICAgcmV0dXJuIGNvbnZlcnQoY2hzLCBsZW4sIGZsdXNoKTsKLSAg
ICB9Ci0KLSAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgZm91bmQgYSBCT00uCi0gICAgaW50IG51
bUJ1ZmZlcmVkQnl0ZXMgPSBfbnVtQnVmZmVyZWRCeXRlczsKLSAgICBpbnQgYnVmMUxlbiA9IG51
bUJ1ZmZlcmVkQnl0ZXM7Ci0gICAgaW50IGJ1ZjJMZW4gPSBsZW47Ci0gICAgY29uc3QgdW5zaWdu
ZWQgY2hhciAqYnVmMSA9IF9idWZmZXJlZEJ5dGVzOwotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg
KmJ1ZjIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4oY2hzKTsKLSAg
ICB1bnNpZ25lZCBjaGFyIGMxID0gYnVmMUxlbiA/ICgtLWJ1ZjFMZW4sICpidWYxKyspIDogYnVm
MkxlbiA/ICgtLWJ1ZjJMZW4sICpidWYyKyspIDogMDsKLSAgICB1bnNpZ25lZCBjaGFyIGMyID0g
YnVmMUxlbiA/ICgtLWJ1ZjFMZW4sICpidWYxKyspIDogYnVmMkxlbiA/ICgtLWJ1ZjJMZW4sICpi
dWYyKyspIDogMDsKLSAgICB1bnNpZ25lZCBjaGFyIGMzID0gYnVmMUxlbiA/ICgtLWJ1ZjFMZW4s
ICpidWYxKyspIDogYnVmMkxlbiA/ICgtLWJ1ZjJMZW4sICpidWYyKyspIDogMDsKLSAgICBpbnQg
Qk9NTGVuZ3RoID0gMDsKLSAgICBpZiAoYzEgPT0gMHhGRiAmJiBjMiA9PSAweEZFKSB7Ci0gICAg
ICAgIF9lbmNvZGluZyA9IGtDRlN0cmluZ0VuY29kaW5nVW5pY29kZTsKLSAgICAgICAgX2xpdHRs
ZUVuZGlhbiA9IHRydWU7Ci0gICAgICAgIEJPTUxlbmd0aCA9IDI7Ci0gICAgfSBlbHNlIGlmIChj
MSA9PSAweEZFICYmIGMyID09IDB4RkYpIHsKLSAgICAgICAgX2VuY29kaW5nID0ga0NGU3RyaW5n
RW5jb2RpbmdVbmljb2RlOwotICAgICAgICBfbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAgICAg
IEJPTUxlbmd0aCA9IDI7Ci0gICAgfSBlbHNlIGlmIChjMSA9PSAweEVGICYmIGMyID09IDB4QkIg
JiYgYzMgPT0gMHhCRikgewotICAgICAgICBfZW5jb2RpbmcgPSBrQ0ZTdHJpbmdFbmNvZGluZ1VU
Rjg7Ci0gICAgICAgIEJPTUxlbmd0aCA9IDM7Ci0gICAgfQotCi0gICAgLy8gSGFuZGxlIGNhc2Ug
d2hlcmUgd2UgZm91bmQgYSBCT00uCi0gICAgaWYgKEJPTUxlbmd0aCAhPSAwKSB7Ci0gICAgICAg
IEFTU0VSVChudW1CdWZmZXJlZEJ5dGVzICsgbGVuID49IEJPTUxlbmd0aCk7Ci0gICAgICAgIGlu
dCBza2lwID0gQk9NTGVuZ3RoIC0gbnVtQnVmZmVyZWRCeXRlczsKLSAgICAgICAgX251bUJ1ZmZl
cmVkQnl0ZXMgPSAwOwotICAgICAgICBfYXRTdGFydCA9IGZhbHNlOwotICAgICAgICByZXR1cm4g
bGVuID09IHNraXAgPyBRU3RyaW5nKCIiKSA6IGNvbnZlcnQoY2hzICsgc2tpcCwgbGVuIC0gc2tp
cCwgZmx1c2gpOwotICAgIH0KLQotICAgIC8vIEhhbmRsZSBjYXNlIHdoZXJlIHdlIGtub3cgdGhl
cmUgaXMgbm8gQk9NIGNvbWluZy4KLSAgICBjb25zdCBpbnQgYnVmZmVyU2l6ZSA9IHNpemVvZihf
YnVmZmVyZWRCeXRlcyk7Ci0gICAgaWYgKG51bUJ1ZmZlcmVkQnl0ZXMgKyBsZW4gPiBidWZmZXJT
aXplIHx8IGZsdXNoKSB7Ci0gICAgICAgIF9hdFN0YXJ0ID0gZmFsc2U7Ci0gICAgICAgIGlmIChu
dW1CdWZmZXJlZEJ5dGVzID09IDApIHsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0KGNocywg
bGVuLCBmbHVzaCk7Ci0gICAgICAgIH0KLSAgICAgICAgdW5zaWduZWQgY2hhciBidWZmZXJlZEJ5
dGVzW3NpemVvZihfYnVmZmVyZWRCeXRlcyldOwotICAgICAgICBtZW1jcHkoYnVmZmVyZWRCeXRl
cywgX2J1ZmZlcmVkQnl0ZXMsIG51bUJ1ZmZlcmVkQnl0ZXMpOwotICAgICAgICBfbnVtQnVmZmVy
ZWRCeXRlcyA9IDA7Ci0gICAgICAgIHJldHVybiBjb252ZXJ0KGJ1ZmZlcmVkQnl0ZXMsIG51bUJ1
ZmZlcmVkQnl0ZXMsIGZhbHNlKSArIGNvbnZlcnQoY2hzLCBsZW4sIGZsdXNoKTsKLSAgICB9Ci0K
LSAgICAvLyBDb250aW51ZSB0byBsb29rIGZvciB0aGUgQk9NLgotICAgIG1lbWNweSgmX2J1ZmZl
cmVkQnl0ZXNbbnVtQnVmZmVyZWRCeXRlc10sIGNocywgbGVuKTsKLSAgICBfbnVtQnVmZmVyZWRC
eXRlcyArPSBsZW47Ci0gICAgcmV0dXJuICIiOwotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogcGxhdGZvcm0vbWFjL0V4dHJhQ0ZFbmNvZGluZ3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0
Zm9ybS9tYWMvRXh0cmFDRkVuY29kaW5ncy5oCShyZXZpc2lvbiAwKQorKysgcGxhdGZvcm0vbWFj
L0V4dHJhQ0ZFbmNvZGluZ3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBFeHRyYUNGRW5jb2RpbmdzX0gKKyNkZWZpbmUg
RXh0cmFDRkVuY29kaW5nc19ICisKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRh
dGlvbi5oPgorCisvLyBVbnRpbCB0aGVyZSdzIGEgQ0ZTdHJpbmcgY29uc3RhbnQgZm9yIHRoZXNl
IGVuY29kaW5ncywgdGhpcyB3b3Jrcy4KKy8vIFNpbmNlIHRoZXkgYXJlIG1hY3JvcywgdGhleSB3
b24ndCBjYXVzZSBhIGNvbXBpbGUgZmFpbHVyZSBldmVuIGEgdGhlIENGU3RyaW5nIGNvbnN0YW50
IGlzIGFkZGVkLgorI2RlZmluZSBrQ0ZTdHJpbmdFbmNvZGluZ0JpZzVfRE9TVmFyaWFudCAoa1Rl
eHRFbmNvZGluZ0JpZzUgfCAoa0JpZzVfRE9TVmFyaWFudCA8PCAxNikpCisjZGVmaW5lIGtDRlN0
cmluZ0VuY29kaW5nRVVDX0NOX0RPU1ZhcmlhbnQgKGtUZXh0RW5jb2RpbmdFVUNfQ04gfCAoa0VV
Q19DTl9ET1NWYXJpYW50IDw8IDE2KSkKKyNkZWZpbmUga0NGU3RyaW5nRW5jb2RpbmdFVUNfS1Jf
RE9TVmFyaWFudCAoa1RleHRFbmNvZGluZ0VVQ19LUiB8IChrRVVDX0tSX0RPU1ZhcmlhbnQgPDwg
MTYpKQorI2RlZmluZSBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMTAga1RleHRFbmNvZGluZ0lT
T0xhdGluMTAKKyNkZWZpbmUga0NGU3RyaW5nRW5jb2RpbmdLT0k4X1Uga1RleHRFbmNvZGluZ0tP
SThfVQorI2RlZmluZSBrQ0ZTdHJpbmdFbmNvZGluZ1NoaWZ0SklTX0RPU1ZhcmlhbnQgKGtUZXh0
RW5jb2RpbmdTaGlmdEpJUyB8IChrU2hpZnRKSVNfRE9TVmFyaWFudCA8PCAxNikpCisKKyNlbmRp
ZiAvLyBFeHRyYUNGRW5jb2RpbmdzX0gKSW5kZXg6IHBsYXRmb3JtL1FTdHJpbmcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHBsYXRmb3JtL1FTdHJpbmcuY3BwCShyZXZpc2lvbiAxMjk5NikKKysrIHBsYXRm
b3JtL1FTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNs
dWRlICJLV1FMb2dnaW5nLmgiCiAjaW5jbHVkZSAiS1dRUmVnRXhwLmgiCi0jaW5jbHVkZSAiS1dR
VGV4dENvZGVjLmgiCisjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSA8a2pzL2R0
b2EuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGFyZy5oPgpAQCAtMjYzNiwz
ICsyNjM2LDEzIEBAIHZvaWQgZnJlZUhhbmRsZShLV1FTdHJpbmdEYXRhICoqX2ZyZWUpCiAgICAg
ICAgIGZyZWVOb2RlQWxsb2NhdGlvblBhZ2VzID0gcGFnZU5vZGU7CiAgICAgfQogfQorCitRU3Ry
aW5nIFFTdHJpbmc6OmZyb21VdGY4KGNvbnN0IGNoYXIgKmNocykKK3sKKyAgICByZXR1cm4gV2Vi
Q29yZTo6VGV4dEVuY29kaW5nKFdlYkNvcmU6OlVURjhFbmNvZGluZykudG9Vbmljb2RlKGNocywg
c3RybGVuKGNocykpOworfQorCitRU3RyaW5nIFFTdHJpbmc6OmZyb21VdGY4KGNvbnN0IGNoYXIg
KmNocywgaW50IGxlbikKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEVuY29kaW5nKFdlYkNv
cmU6OlVURjhFbmNvZGluZykudG9Vbmljb2RlKGNocywgbGVuKTsKK30KSW5kZXg6IHBsYXRmb3Jt
L1RleHRFbmNvZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL1RleHRFbmNvZGluZy5oCShy
ZXZpc2lvbiAxMjk3NSkKKysrIHBsYXRmb3JtL1RleHRFbmNvZGluZy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNTUgKzIzLDg5IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
ICAqLwogCi0jaWZuZGVmIFFURVhUQ09ERUNfSF8KLSNkZWZpbmUgUVRFWFRDT0RFQ19IXworI2lm
bmRlZiBUZXh0RW5jb2RpbmdfSAorI2RlZmluZSBUZXh0RW5jb2RpbmdfSAogCi0jaW5jbHVkZSAi
S1dRQ2hhcnNldHMuaCIKICNpbmNsdWRlICJRU3RyaW5nLmgiCiAjaW5jbHVkZSAiS1dRQ1N0cmlu
Zy5oIgogCi1jbGFzcyBRVGV4dERlY29kZXI7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFFUZXh0Q29kZWMgewotcHVibGljOgotICAgIHN0YXRpYyBRVGV4dENvZGVjKiBjb2RlY0Zvck5h
bWUoY29uc3QgY2hhciAqKTsKLSAgICBzdGF0aWMgUVRleHRDb2RlYyogY29kZWNGb3JOYW1lRWln
aHRCaXRPbmx5KGNvbnN0IGNoYXIgKik7Ci0gICAgc3RhdGljIFFUZXh0Q29kZWMqIGNvZGVjRm9y
TG9jYWxlKCk7Ci0gICAgc3RhdGljIFFUZXh0Q29kZWMqIHV0ZjhDb2RlYygpOworICAgIGNsYXNz
IFN0cmVhbWluZ1RleHREZWNvZGVyOwogCi0jaWYgX19BUFBMRV9fCi0gICAgZXhwbGljaXQgUVRl
eHRDb2RlYyhDRlN0cmluZ0VuY29kaW5nIGUsIEtXUUVuY29kaW5nRmxhZ3MgZiA9IE5vRW5jb2Rp
bmdGbGFncykgOiBfZW5jb2RpbmcoZSksIF9mbGFncyhmKSB7IH0KLSNlbmRpZgotCi0gICAgY29u
c3QgY2hhciAqbmFtZSgpIGNvbnN0OwotICAgIGJvb2wgdXNlc1Zpc3VhbE9yZGVyaW5nKCkgY29u
c3QgeyByZXR1cm4gX2ZsYWdzICYgVmlzdWFsT3JkZXJpbmc7IH0KLSAgICBib29sIGlzSmFwYW5l
c2UoKSBjb25zdCB7IHJldHVybiBfZmxhZ3MgJiBJc0phcGFuZXNlOyB9CisjaWZkZWYgX19BUFBM
RV9fCisgICAgdHlwZWRlZiBDRlN0cmluZ0VuY29kaW5nIFRleHRFbmNvZGluZ0lEOwogICAgIAot
ICAgIFFDaGFyIGJhY2tzbGFzaEFzQ3VycmVuY3lTeW1ib2woKSBjb25zdDsKLQotICAgIFFUZXh0
RGVjb2RlciAqbWFrZURlY29kZXIoKSBjb25zdDsKLQotICAgIFFDU3RyaW5nIGZyb21Vbmljb2Rl
KGNvbnN0IFFTdHJpbmcgJnN0ciwgYm9vbCBhbGxvd0VudGl0aWVzID0gZmFsc2UpIGNvbnN0Owor
ICAgIGNvbnN0IFRleHRFbmNvZGluZ0lEIEludmFsaWRFbmNvZGluZyA9IGtDRlN0cmluZ0VuY29k
aW5nSW52YWxpZElkOworICAgIGNvbnN0IFRleHRFbmNvZGluZ0lEIFVURjhFbmNvZGluZyA9IGtD
RlN0cmluZ0VuY29kaW5nVVRGODsKKyAgICBjb25zdCBUZXh0RW5jb2RpbmdJRCBVVEYxNkVuY29k
aW5nID0ga0NGU3RyaW5nRW5jb2RpbmdVbmljb2RlOworICAgIGNvbnN0IFRleHRFbmNvZGluZ0lE
IExhdGluMUVuY29kaW5nID0ga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjE7CisgICAgY29uc3Qg
VGV4dEVuY29kaW5nSUQgQVNDSUlFbmNvZGluZyA9IGtDRlN0cmluZ0VuY29kaW5nQVNDSUk7Cisg
ICAgY29uc3QgVGV4dEVuY29kaW5nSUQgV2luTGF0aW4xRW5jb2RpbmcgPSBrQ0ZTdHJpbmdFbmNv
ZGluZ1dpbmRvd3NMYXRpbjE7CisjZWxzZQorICAgIGVudW0gVGV4dEVuY29kaW5nSUQgeworICAg
ICAgICBJbnZhbGlkRW5jb2RpbmcgPSAtMSwKKyAgICAgICAgVVRGOEVuY29kaW5nLAorICAgICAg
ICBVVEYxNkVuY29kaW5nLAorICAgICAgICBMYXRpbjFFbmNvZGluZywKKyAgICAgICAgQVNDSUlF
bmNvZGluZywKKyAgICAgICAgV2luTGF0aW4xRW5jb2RpbmcKKyAgICB9OworI2VuZGlmCiAKLSAg
ICBRU3RyaW5nIHRvVW5pY29kZShjb25zdCBjaGFyICosIGludCkgY29uc3Q7Ci0gICAgUVN0cmlu
ZyB0b1VuaWNvZGUoY29uc3QgQnl0ZUFycmF5ICYsIGludCkgY29uc3Q7CisgICAgZW51bSBUZXh0
RW5jb2RpbmdGbGFncyB7CisgICAgICAgIE5vRW5jb2RpbmdGbGFncyA9IDAsCisgICAgICAgIFZp
c3VhbE9yZGVyaW5nID0gMSwKKyAgICAgICAgQmlnRW5kaWFuID0gMiwKKyAgICAgICAgTGl0dGxl
RW5kaWFuID0gNCwKKyAgICAgICAgSXNKYXBhbmVzZSA9IDgsCisgICAgICAgIEJhY2tzbGFzaElz
WWVuID0gMTYKKyAgICB9OworCisgICAgY2xhc3MgVGV4dEVuY29kaW5nIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIGVudW0geyAKKyAgICAgICAgICAgIEVpZ2h0Qml0T25seSA9IHRydWUgCisgICAg
ICAgIH07CisKKyAgICAgICAgZXhwbGljaXQgVGV4dEVuY29kaW5nKFRleHRFbmNvZGluZ0lEIGVu
Y29kaW5nSUQsIFRleHRFbmNvZGluZ0ZsYWdzIGZsYWdzID0gTm9FbmNvZGluZ0ZsYWdzKSAKKyAg
ICAgICAgICAgIDogbV9lbmNvZGluZ0lEKGVuY29kaW5nSUQpCisgICAgICAgICAgICAsIG1fZmxh
Z3MoZmxhZ3MpIAorICAgICAgICB7IAorICAgICAgICB9CisKKyAgICAgICAgZXhwbGljaXQgVGV4
dEVuY29kaW5nKGNvbnN0IGNoYXIqLCBib29sIGVpZ2h0Qml0T25seSA9IGZhbHNlKTsKKworICAg
ICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2VuY29kaW5nSUQgIT0gSW52YWxp
ZEVuY29kaW5nOyB9CisgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKKyAgICAgICAg
Ym9vbCB1c2VzVmlzdWFsT3JkZXJpbmcoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgVmlzdWFs
T3JkZXJpbmc7IH0KKyAgICAgICAgYm9vbCBpc0phcGFuZXNlKCkgY29uc3QgeyByZXR1cm4gbV9m
bGFncyAmIElzSmFwYW5lc2U7IH0KKyAgICAgICAgCisgICAgICAgIFFDaGFyIGJhY2tzbGFzaEFz
Q3VycmVuY3lTeW1ib2woKSBjb25zdDsKKyAgICAgICAgCisgICAgICAgIFFDU3RyaW5nIGZyb21V
bmljb2RlKGNvbnN0IFFTdHJpbmcmLCBib29sIGFsbG93RW50aXRpZXMgPSBmYWxzZSkgY29uc3Q7
CisKKyAgICAgICAgUVN0cmluZyB0b1VuaWNvZGUoY29uc3QgY2hhciosIGludCBsZW5ndGgpIGNv
bnN0OworICAgICAgICBRU3RyaW5nIHRvVW5pY29kZShjb25zdCBCeXRlQXJyYXkmLCBpbnQgbGVu
Z3RoKSBjb25zdDsKKworICAgICAgICBUZXh0RW5jb2RpbmdJRCBlbmNvZGluZ0lEKCkgY29uc3Qg
eyByZXR1cm4gbV9lbmNvZGluZ0lEOyB9CisgICAgICAgIFRleHRFbmNvZGluZ0ZsYWdzIGZsYWdz
KCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQorICAgICAgICAKKyAgICBwcml2YXRlOgorICAg
ICAgICBUZXh0RW5jb2RpbmdJRCBtX2VuY29kaW5nSUQ7CisgICAgICAgIFRleHRFbmNvZGluZ0Zs
YWdzIG1fZmxhZ3M7CisgICAgfTsKKworICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
VGV4dEVuY29kaW5nJiBhLCBjb25zdCBUZXh0RW5jb2RpbmcmIGIpCisgICAgeworICAgICAgICBy
ZXR1cm4gYS5lbmNvZGluZ0lEKCkgPT0gYi5lbmNvZGluZ0lEKCkgJiYgYS5mbGFncygpID09IGIu
ZmxhZ3MoKTsKKyAgICB9CiAgICAgCi0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBR
VGV4dENvZGVjICYsIGNvbnN0IFFUZXh0Q29kZWMgJik7Ci0gICAgdW5zaWduZWQgaGFzaCgpIGNv
bnN0OworICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVGV4dEVuY29kaW5nJiBhLCBj
b25zdCBUZXh0RW5jb2RpbmcmIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS5lbmNvZGluZ0lE
KCkgIT0gYi5lbmNvZGluZ0lEKCkgfHwgYS5mbGFncygpICE9IGIuZmxhZ3MoKTsKKyAgICB9CiAg
ICAgCi1wcml2YXRlOgotI2lmIF9fQVBQTEVfXwotICAgIENGU3RyaW5nRW5jb2RpbmcgX2VuY29k
aW5nOwotI2VuZGlmCi0gICAgS1dRRW5jb2RpbmdGbGFncyBfZmxhZ3M7Ci19OwotCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFFUZXh0Q29kZWMgJmEsIGNvbnN0IFFUZXh0Q29kZWMgJmIp
IHsgcmV0dXJuICEoYSA9PSBiKTsgfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1jbGFzcyBR
VGV4dERlY29kZXIgewotcHVibGljOgotICAgIHZpcnR1YWwgflFUZXh0RGVjb2RlcigpOwotICAg
IHZpcnR1YWwgUVN0cmluZyB0b1VuaWNvZGUoY29uc3QgY2hhciAqLCBpbnQsIGJvb2wgZmx1c2gg
PSBmYWxzZSkgPSAwOwotfTsKLQotI2VuZGlmCisjZW5kaWYgLy8gVGV4dEVuY29kaW5nX0gKSW5k
ZXg6IHBsYXRmb3JtL3dpbi93aW4tZW5jb2RpbmdzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9y
bS93aW4vd2luLWVuY29kaW5ncy50eHQJKHJldmlzaW9uIDApCisrKyBwbGF0Zm9ybS93aW4vd2lu
LWVuY29kaW5ncy50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKKyMgVGhlIGl0ZW1z
IG9uIHRoZSBsZWZ0IGFyZSBuYW1lcyBvZiBUZXh0RW5jb2RpbmdJRCB2YWx1ZXMKKyMgVGhlIGl0
ZW1zIG9uIHRoZSByaWdodCBhcmUgSUFOQSBjaGFyYWN0ZXIgc2V0IG5hbWVzLiBOYW1lcyBsaXN0
ZWQgaW4gY2hhcmFjdGVyLXNldHMudHh0IGFyZSBub3QKKyMgcmVwZWF0ZWQgaGVyZTsgbWVudGlv
bmluZyBhbnkgb25lIGNoYXJhY3RlciBzZXQgZnJvbSBhIGdyb3VwIGluIHRoZXJlIHB1bGxzIGlu
IGFsbCB0aGUgYWxpYXNlcyBpbgorIyB0aGF0IGdyb3VwLgorCitXaW5MYXRpbjFFbmNvZGluZzog
d2luZG93cy0xMjUyLCB3aW5sYXRpbjEsIHhhbnNpCitMYXRpbjFFbmNvZGluZzogSVNPLTg4NTkt
MSwgODg1OTEKK0FTQ0lJRW5jb2Rpbmc6IFVTLUFTQ0lJLCBpc29pcjZ1cworVVRGMTZFbmNvZGlu
ZzogSVNPLTEwNjQ2LVVDUy0yLCB1Y3MyLCB1bmljb2RlLCB1dGYxNgorVVRGMTZFbmNvZGluZywg
QmlnRW5kaWFuOiBVVEYtMTZCRSwgdW5pY29kZWZmZmUKK1VURjE2RW5jb2RpbmcsIExpdHRsZUVu
ZGlhbjogVVRGLTE2TEUsIHVuaWNvZGVmZWZmCitVVEY4RW5jb2Rpbmc6IFVURi04LCB1bmljb2Rl
MTF1dGY4LCB1bmljb2RlMjB1dGY4LCB4dW5pY29kZTIwdXRmOApJbmRleDogcGxhdGZvcm0vbWFr
ZS1jaGFyc2V0LXRhYmxlLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL21ha2UtY2hhcnNldC10
YWJsZS5wbAkocmV2aXNpb24gMTI5ODgpCisrKyBwbGF0Zm9ybS9tYWtlLWNoYXJzZXQtdGFibGUu
cGwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDM4ICsyMCw0MCBAQCBzdWIgZXJyb3IgKCQpCiAKIHN1
YiBlbWl0X2xpbmUKIHsKLSAgICBteSAoJG5hbWUsICRlbmNvZGluZywgJGZsYWdzKSA9IEBfOwor
ICAgIG15ICgkbmFtZSwgJHByZWZpeCwgJGVuY29kaW5nLCAkZmxhZ3MpID0gQF87CiAgCiAgICAg
ZXJyb3IgIiRuYW1lIHNob3dzIHVwIHR3aWNlIGluIG91dHB1dCIgaWYgJG5hbWVzV3JpdHRlbnsk
bmFtZX07CiAgICAgJG5hbWVzV3JpdHRlbnskbmFtZX0gPSAxOwogICAgIAotICAgICRvdXRwdXQg
Lj0gIiAgICB7IFwiJG5hbWVcIiwga0NGU3RyaW5nRW5jb2RpbmckZW5jb2RpbmcsICRmbGFncyB9
LFxuIjsKKyAgICAkb3V0cHV0IC49ICIgICAgeyBcIiRuYW1lXCIsICRwcmVmaXgkZW5jb2Rpbmcs
ICRmbGFncyB9LFxuIjsKIH0KIAotc3ViIHByb2Nlc3NfbWFjX2VuY29kaW5ncworc3ViIHByb2Nl
c3NfcGxhdGZvcm1fZW5jb2RpbmdzCiB7Ci0gICAgbXkgKCRmaWxlbmFtZSkgPSBAXzsKKyAgICBt
eSAoJGZpbGVuYW1lLCAkUGxhdGZvcm1QcmVmaXgpID0gQF87CisgICAgbXkgJGJhc2VGaWxlbmFt
ZSA9ICRmaWxlbmFtZTsKKyAgICAkYmFzZUZpbGVuYW1lID1+IHN8LiovfHw7CiAgICAgCi0gICAg
bXkgJXNlZW5NYWNOYW1lczsKKyAgICBteSAlc2VlblBsYXRmb3JtTmFtZXM7CiAgICAgbXkgJXNl
ZW5JQU5BTmFtZXM7CiAgICAgCi0gICAgb3BlbiBNQUNfRU5DT0RJTkdTLCAkZmlsZW5hbWUgb3Ig
ZGllOworICAgIG9wZW4gUExBVEZPUk1fRU5DT0RJTkdTLCAkZmlsZW5hbWUgb3IgZGllOwogICAg
IAotICAgIHdoaWxlICg8TUFDX0VOQ09ESU5HUz4pIHsKKyAgICB3aGlsZSAoPFBMQVRGT1JNX0VO
Q09ESU5HUz4pIHsKICAgICAgICAgY2hvbXA7CiAgICAgICAgIHMvXCMuKiQvLzsKICAgICAgICAg
cy9ccyskLy87Ci0JaWYgKG15ICgkTWFjTmFtZSwgdW5kZWYsICRmbGFncywgJElBTkFOYW1lcykg
PSAvXiguKz8pKCwgKC4rKSk/OiAoLispJC8pIHsKKwlpZiAobXkgKCRQbGF0Zm9ybU5hbWUsIHVu
ZGVmLCAkZmxhZ3MsICRJQU5BTmFtZXMpID0gL14oLis/KSgsICguKykpPzogKC4rKSQvKSB7CiAg
ICAgICAgICAgICBteSAlYWxpYXNlczsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbXkgJE1h
Y05hbWVXaXRoRmxhZ3MgPSAkTWFjTmFtZTsKKyAgICAgICAgICAgIG15ICRQbGF0Zm9ybU5hbWVX
aXRoRmxhZ3MgPSAkUGxhdGZvcm1OYW1lOwogICAgICAgICAgICAgaWYgKCRmbGFncykgewotICAg
ICAgICAgICAgICAgICRNYWNOYW1lV2l0aEZsYWdzIC49ICIsICIgLiAkZmxhZ3M7CisgICAgICAg
ICAgICAgICAgJFBsYXRmb3JtTmFtZVdpdGhGbGFncyAuPSAiLCAiIC4gJGZsYWdzOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAkZmxhZ3MgPSAiTm9FbmNvZGluZ0ZsYWdz
IjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVycm9yICJDRlN0cmluZyBlbmNvZGluZyBu
YW1lICRNYWNOYW1lIGlzIG1lbnRpb25lZCB0d2ljZSBpbiBtYWMtZW5jb2RpbmdzLnR4dCIgaWYg
JHNlZW5NYWNOYW1lc3skTWFjTmFtZVdpdGhGbGFnc307Ci0gICAgICAgICAgICAkc2Vlbk1hY05h
bWVzeyRNYWNOYW1lV2l0aEZsYWdzfSA9IDE7CisgICAgICAgICAgICBlcnJvciAiQ0ZTdHJpbmcg
ZW5jb2RpbmcgbmFtZSAkUGxhdGZvcm1OYW1lIGlzIG1lbnRpb25lZCB0d2ljZSBpbiAkYmFzZUZp
bGVuYW1lIiBpZiAkc2VlblBsYXRmb3JtTmFtZXN7JFBsYXRmb3JtTmFtZVdpdGhGbGFnc307Cisg
ICAgICAgICAgICAkc2VlblBsYXRmb3JtTmFtZXN7JFBsYXRmb3JtTmFtZVdpdGhGbGFnc30gPSAx
OwogCiAgICAgICAgICAgICAjIEJ1aWxkIHRoZSBhbGlhc2VzIGxpc3QuCiAgICAgICAgICAgICAj
IEFsc28gY2hlY2sgdGhhdCBubyB0d28gbmFtZXMgYXJlIHBhcnQgb2YgdGhlIHNhbWUgZW50cnkg
aW4gdGhlIGNoYXJzZXRzIGZpbGUuCkBAIC02MiwxNyArNjQsMTcgQEAgc3ViIHByb2Nlc3NfbWFj
X2VuY29kaW5ncwogICAgICAgICAgICAgZm9yIG15ICRuYW1lIChASUFOQU5hbWVzKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKCRmaXJzdE5hbWUgZXEgIiIpIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCRuYW1lICF+IC9eWy1BLVphLXowLTlfXSskLykgewotICAgICAgICAgICAgICAgICAgICAg
ICAgZXJyb3IgIiRuYW1lLCBpbiBtYWMtZW5jb2RpbmdzLnR4dCwgaGFzIGlsbGVnYWwgY2hhcmFj
dGVycyBpbiBpdCI7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciAiJG5hbWUsIGluICRi
YXNlRmlsZW5hbWUsIGhhcyBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaXQiOwogICAgICAgICAgICAg
ICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAkZmlyc3ROYW1lID0gJG5hbWU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKCRuYW1lICF+IC9eW2EtejAtOV0rJC8pIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGVycm9yICIkbmFtZSwgaW4gbWFjLWVuY29kaW5ncy50eHQsIGhhcyBpbGxl
Z2FsIGNoYXJhY3RlcnMgaW4gaXQgKG11c3QgYmUgYWxsIGxvd2VyY2FzZSBhbHBoYW51bWVyaWMp
IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yICIkbmFtZSwgaW4gJGJhc2VGaWxlbmFt
ZSwgaGFzIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBpdCAobXVzdCBiZSBhbGwgbG93ZXJjYXNlIGFs
cGhhbnVtZXJpYykiOwogICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAoJG5hbWUgbGUgJHByZXZOYW1lKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciAiJG5hbWUgY29tZXMgYWZ0ZXIgJHByZXZO
YW1lIGluIG1hYy1lbmNvZGluZ3MudHh0LCBidXQgZXZlcnl0aGluZyBtdXN0IGJlIGluIGFscGhh
YmV0aWNhbCBvcmRlciI7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciAiJG5hbWUgY29t
ZXMgYWZ0ZXIgJHByZXZOYW1lIGluICRiYXNlRmlsZW5hbWUsIGJ1dCBldmVyeXRoaW5nIG11c3Qg
YmUgaW4gYWxwaGFiZXRpY2FsIG9yZGVyIjsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAkcHJldk5hbWUgPSAkbmFtZTsKICAgICAgICAgICAgICAgICB9CkBAIC04
Miw3ICs4NCw3IEBAIHN1YiBwcm9jZXNzX21hY19lbmNvZGluZ3MKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAkY2Fub25pY2FsRmlyc3ROYW1lID0gJGNhbm9uaWNhbE5hbWUgaWYg
JGNhbm9uaWNhbEZpcnN0TmFtZSBlcSAiIjsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBlcnJvciAiJG5hbWUgaXMgbWVudGlvbmVkIHR3aWNlIGluIG1hYy1lbmNvZGluZ3MudHh0
IiBpZiAkc2VlbklBTkFOYW1lc3skY2Fub25pY2FsTmFtZX07CisgICAgICAgICAgICAgICAgZXJy
b3IgIiRuYW1lIGlzIG1lbnRpb25lZCB0d2ljZSBpbiAkYmFzZUZpbGVuYW1lIiBpZiAkc2VlbklB
TkFOYW1lc3skY2Fub25pY2FsTmFtZX07CiAgICAgICAgICAgICAgICAgJHNlZW5JQU5BTmFtZXN7
JGNhbm9uaWNhbE5hbWV9ID0gMTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAk
YWxpYXNlc3skY2Fub25pY2FsTmFtZX0gPSAxOwpAQCAtOTUsMjcgKzk3LDI3IEBAIHN1YiBwcm9j
ZXNzX21hY19lbmNvZGluZ3MKICAgICAgICAgICAgICAgICAgICAgaWYgKCRhbGlhc2VzRnJvbUNo
YXJzZXRzRmlsZXskb3RoZXJOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGFsaWFz
ZXNGcm9tQ2hhcnNldHNGaWxleyRjYW5vbmljYWxOYW1lfSBlcSAkYWxpYXNlc0Zyb21DaGFyc2V0
c0ZpbGV7JG90aGVyTmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICYmICRjYW5vbmljYWxO
YW1lIGxlICRvdGhlck5hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yICJtYWMt
ZW5jb2RpbmdzLnR4dCBsaXN0cyBib3RoICRuYW1lIGFuZCAkb3RoZXJOYW1lIHVuZGVyICRNYWNO
YW1lLCBidXQgdGhhdCBhbGlhc2luZyBpcyBhbHJlYWR5IHNwZWNpZmllZCBpbiBjaGFyYWN0ZXIt
c2V0cy50eHQiOworICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgIiRiYXNlRmlsZW5hbWUg
bGlzdHMgYm90aCAkbmFtZSBhbmQgJG90aGVyTmFtZSB1bmRlciAkUGxhdGZvcm1OYW1lLCBidXQg
dGhhdCBhbGlhc2luZyBpcyBhbHJlYWR5IHNwZWNpZmllZCBpbiBjaGFyYWN0ZXItc2V0cy50eHQi
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgICAgICAjIHdyaXRlIG91dAotICAgICAgICAgICAgZW1p
dF9saW5lKCRmaXJzdE5hbWUsICRNYWNOYW1lLCAkZmxhZ3MpOworICAgICAgICAgICAgZW1pdF9s
aW5lKCRmaXJzdE5hbWUsICRQbGF0Zm9ybVByZWZpeCwgJFBsYXRmb3JtTmFtZSwgJGZsYWdzKTsK
ICAgICAgICAgICAgIGZvciBteSAkYWxpYXMgKHNvcnQga2V5cyAlYWxpYXNlcykgewotICAgICAg
ICAgICAgICAgIGVtaXRfbGluZSgkYWxpYXMsICRNYWNOYW1lLCAkZmxhZ3MpIGlmICRhbGlhcyBu
ZSAkY2Fub25pY2FsRmlyc3ROYW1lOworICAgICAgICAgICAgICAgIGVtaXRfbGluZSgkYWxpYXMs
ICRQbGF0Zm9ybVByZWZpeCwgJFBsYXRmb3JtTmFtZSwgJGZsYWdzKSBpZiAkYWxpYXMgbmUgJGNh
bm9uaWNhbEZpcnN0TmFtZTsKICAgICAgICAgICAgIH0KIAl9IGVsc2lmICgvXihbYS16QS1aMC05
X10rKSgsICguKykpPyQvKSB7Ci0gICAgICAgICAgICBteSAkTWFjTmFtZSA9ICQxOworICAgICAg
ICAgICAgbXkgJFBsYXRmb3JtTmFtZSA9ICQxOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBl
cnJvciAiQ0ZTdHJpbmcgZW5jb2RpbmcgbmFtZSAkTWFjTmFtZSBpcyBtZW50aW9uZWQgdHdpY2Ug
aW4gbWFjLWVuY29kaW5ncy50eHQiIGlmICRzZWVuTWFjTmFtZXN7JE1hY05hbWV9OwotICAgICAg
ICAgICAgJHNlZW5NYWNOYW1lc3skTWFjTmFtZX0gPSAxOworICAgICAgICAgICAgZXJyb3IgIlBs
YXRmb3JtIGVuY29kaW5nIG5hbWUgJFBsYXRmb3JtTmFtZSBpcyBtZW50aW9uZWQgdHdpY2UgaW4g
JGJhc2VGaWxlbmFtZSIgaWYgJHNlZW5QbGF0Zm9ybU5hbWVzeyRQbGF0Zm9ybU5hbWV9OworICAg
ICAgICAgICAgJHNlZW5QbGF0Zm9ybU5hbWVzeyRQbGF0Zm9ybU5hbWV9ID0gMTsKICAgICAgICAg
fSBlbHNpZiAoLy4vKSB7Ci0gICAgICAgICAgICBlcnJvciAic3ludGF4IGVycm9yIGluIG1hYy1l
bmNvZGluZ3MudHh0LCBsaW5lICQuIjsKKyAgICAgICAgICAgIGVycm9yICJzeW50YXggZXJyb3Ig
aW4gcGxhdGZvcm0tZW5jb2RpbmdzLnR4dCwgbGluZSAkLiI7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgCi0gICAgY2xvc2UgTUFDX0VOQ09ESU5HUzsKKyAgICBjbG9zZSBQTEFURk9STV9FTkNPRElO
R1M7CiB9CiAKIHN1YiBwcm9jZXNzX2lhbmFfY2hhcnNldCAKQEAgLTE3NywxMCArMTc5LDEwIEBA
IHN1YiBwcm9jZXNzX2lhbmFfY2hhcnNldHMKICMgUHJvZ3JhbSBib2R5CiAKIHByb2Nlc3NfaWFu
YV9jaGFyc2V0cygkQVJHVlswXSk7Ci1wcm9jZXNzX21hY19lbmNvZGluZ3MoJEFSR1ZbMV0pOwor
cHJvY2Vzc19wbGF0Zm9ybV9lbmNvZGluZ3MoJEFSR1ZbMV0sICRBUkdWWzJdKTsKIAogZXhpdCAx
IGlmICRlcnJvcjsKIAogcHJpbnQgInN0YXRpYyBjb25zdCBDaGFyc2V0RW50cnkgdGFibGVbXSA9
IHtcbiI7CiBwcmludCAkb3V0cHV0OwotcHJpbnQgIiAgICB7IDAsIGtDRlN0cmluZ0VuY29kaW5n
SW52YWxpZElkLCBOb0VuY29kaW5nRmxhZ3MgfVxufTtcbiI7CitwcmludCAiICAgIHsgMCwgV2Vi
Q29yZTo6SW52YWxpZEVuY29kaW5nLCBOb0VuY29kaW5nRmxhZ3MgfVxufTtcbiI7CkluZGV4OiBw
bGF0Zm9ybS9LVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vS1VSTC5oCShyZXZpc2lvbiAx
Mjk5NikKKysrIHBsYXRmb3JtL0tVUkwuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsNyBA
QAogI2RlZmluZSBLVVJMX0hfCiAKICNpbmNsdWRlICJRU3RyaW5nLmgiCi0KLWNsYXNzIFFUZXh0
Q29kZWM7CisjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAKICNpZiBfX0FQUExFX18KICNpZmRl
ZiBfX09CSkNfXwpAQCAtNDMsMTEgKzQyLDExIEBAIGNsYXNzIE5TVVJMOwogY2xhc3MgS1VSTCB7
CiBwdWJsaWM6CiAgICAgS1VSTCgpOwotICAgIEtVUkwoY29uc3QgY2hhciAqKTsKLSAgICBLVVJM
KGNvbnN0IEtVUkwgJiwgY29uc3QgUVN0cmluZyAmLCBjb25zdCBRVGV4dENvZGVjICogPSAwKTsK
LSAgICBLVVJMKGNvbnN0IFFTdHJpbmcgJik7CisgICAgS1VSTChjb25zdCBjaGFyKik7CisgICAg
S1VSTChjb25zdCBLVVJMJiwgY29uc3QgUVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlRleHRFbmNv
ZGluZyYgZW5jb2RpbmcgPSBXZWJDb3JlOjpUZXh0RW5jb2RpbmcoV2ViQ29yZTo6VVRGOEVuY29k
aW5nKSk7CisgICAgS1VSTChjb25zdCBRU3RyaW5nJik7CiAjaWYgX19BUFBMRV9fCi0gICAgS1VS
TChOU1VSTCAqKTsKKyAgICBLVVJMKE5TVVJMKik7CiAjZW5kaWYKICAgICAKICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiB1cmxTdHJpbmcuaXNFbXB0eSgpOyB9IApAQCAtODcsNyAr
ODYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7CiAKLSAgICBz
dGF0aWMgUVN0cmluZyBkZWNvZGVfc3RyaW5nKGNvbnN0IFFTdHJpbmcgJiwgY29uc3QgUVRleHRD
b2RlYyAqID0gMCk7CisgICAgc3RhdGljIFFTdHJpbmcgZGVjb2RlX3N0cmluZyhjb25zdCBRU3Ry
aW5nICYsIGNvbnN0IFdlYkNvcmU6OlRleHRFbmNvZGluZyYgZW5jb2RpbmcgPSBXZWJDb3JlOjpU
ZXh0RW5jb2RpbmcoV2ViQ29yZTo6VVRGOEVuY29kaW5nKSk7CiAgICAgc3RhdGljIFFTdHJpbmcg
ZW5jb2RlX3N0cmluZyhjb25zdCBRU3RyaW5nICYpOwogICAgIAogICAgIGZyaWVuZCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgS1VSTCAmLCBjb25zdCBLVVJMICYpOwpJbmRleDogcGxhdGZvcm0vU3Ry
ZWFtaW5nVGV4dERlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL1N0cmVhbWluZ1Rl
eHREZWNvZGVyLmNwcAkocmV2aXNpb24gMTI5NzUpCisrKyBwbGF0Zm9ybS9TdHJlYW1pbmdUZXh0
RGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCwyNzcg
KzI0LDQ4IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIktXUVRleHRD
b2RlYy5oIgorI2luY2x1ZGUgIlN0cmVhbWluZ1RleHREZWNvZGVyLmgiCiAKICNpbmNsdWRlIDxr
eG1sY29yZS9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSAiS1dRQ2hhcnNldHMuaCIKLSNpbmNsdWRl
ICJLV1FMb2dnaW5nLmgiCi0jaW5jbHVkZSA8dW5pY29kZS91Y252Lmg+Ci0jaW5jbHVkZSA8dW5p
Y29kZS91dHlwZXMuaD4KIAotY29uc3QgVW5pQ2hhciByZXBsYWNlbWVudENoYXJhY3RlciA9IDB4
RkZGRDsKLWNvbnN0IFVuaUNoYXIgQk9NID0gMHhGRUZGOworbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgY29uc3QgaW50IENvbnZlcnNpb25CdWZmZXJTaXplID0gMTYzODQ7Ci0KLWNsYXNz
IEtXUVRleHREZWNvZGVyIDogcHVibGljIFFUZXh0RGVjb2RlciB7Ci1wdWJsaWM6Ci0gICAgS1dR
VGV4dERlY29kZXIoQ0ZTdHJpbmdFbmNvZGluZywgS1dRRW5jb2RpbmdGbGFncyk7Ci0gICAgfktX
UVRleHREZWNvZGVyKCk7Ci0gICAgCi0gICAgUVN0cmluZyB0b1VuaWNvZGUoY29uc3QgY2hhciAq
Y2hzLCBpbnQgbGVuLCBib29sIGZsdXNoKTsKLQotcHJpdmF0ZToKLSAgICBRU3RyaW5nIGNvbnZl
cnQoY29uc3QgY2hhciAqY2hzLCBpbnQgbGVuLCBib29sIGZsdXNoKQotICAgICAgICB7IHJldHVy
biBjb252ZXJ0KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihjaHMpLCBs
ZW4sIGZsdXNoKTsgfQotICAgIFFTdHJpbmcgY29udmVydChjb25zdCB1bnNpZ25lZCBjaGFyICpj
aHMsIGludCBsZW4sIGJvb2wgZmx1c2gpOwotICAgIFFTdHJpbmcgY29udmVydExhdGluMShjb25z
dCB1bnNpZ25lZCBjaGFyICpjaHMsIGludCBsZW4pOwotICAgIFFTdHJpbmcgY29udmVydFVURjE2
KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNocywgaW50IGxlbik7Ci0gICAgCi0gICAgLy8gSUNVIGRl
Y29kaW5nLgotICAgIFFTdHJpbmcgY29udmVydFVzaW5nSUNVKGNvbnN0IHVuc2lnbmVkIGNoYXIg
KmNocywgaW50IGxlbiwgYm9vbCBmbHVzaCk7Ci0gICAgVUVycm9yQ29kZSBjcmVhdGVJQ1VDb252
ZXJ0ZXIoKTsKLQotICAgIHN0YXRpYyB2b2lkIGFwcGVuZE9taXR0aW5nVW53YW50ZWQoUVN0cmlu
ZyAmcywgY29uc3QgVW5pQ2hhciAqY2hhcmFjdGVycywgaW50IGJ5dGVDb3VudCk7Ci0gICAgCi0g
ICAgS1dRVGV4dERlY29kZXIoY29uc3QgS1dRVGV4dERlY29kZXIgJik7Ci0gICAgS1dRVGV4dERl
Y29kZXIgJm9wZXJhdG9yPShjb25zdCBLV1FUZXh0RGVjb2RlciAmKTsKLQotICAgIENGU3RyaW5n
RW5jb2RpbmcgX2VuY29kaW5nOwotICAgIGJvb2wgX2xpdHRsZUVuZGlhbjsKLSAgICBib29sIF9h
dFN0YXJ0OwotICAgIGJvb2wgX2Vycm9yOwotCi0gICAgdW5zaWduZWQgX251bUJ1ZmZlcmVkQnl0
ZXM7Ci0gICAgdW5zaWduZWQgY2hhciBfYnVmZmVyZWRCeXRlc1sxNl07IC8vIGJpZ2dlciB0aGFu
IGFueSBzaW5nbGUgbXVsdGktYnl0ZSBjaGFyYWN0ZXIKLQotICAgIC8vIElDVSBkZWNvZGluZy4K
LSAgICBVQ29udmVydGVyICpfY29udmVydGVySUNVOwotICAgIHN0YXRpYyBVQ29udmVydGVyICpf
Y2FjaGVkQ29udmVydGVySUNVOwotICAgIHN0YXRpYyBDRlN0cmluZ0VuY29kaW5nIF9jYWNoZWRD
b252ZXJ0ZXJFbmNvZGluZzsKLX07Ci0KLVVDb252ZXJ0ZXIgKktXUVRleHREZWNvZGVyOjpfY2Fj
aGVkQ29udmVydGVySUNVOwotQ0ZTdHJpbmdFbmNvZGluZyBLV1FUZXh0RGVjb2Rlcjo6X2NhY2hl
ZENvbnZlcnRlckVuY29kaW5nID0ga0NGU3RyaW5nRW5jb2RpbmdJbnZhbGlkSWQ7Ci0KLXN0YXRp
YyBCb29sZWFuIFFUZXh0Q29kZWNzRXF1YWwoY29uc3Qgdm9pZCAqdmFsdWUxLCBjb25zdCB2b2lk
ICp2YWx1ZTIpOwotc3RhdGljIENGSGFzaENvZGUgUVRleHRDb2RlY0hhc2goY29uc3Qgdm9pZCAq
dmFsdWUpOwotCi1zdGF0aWMgUVRleHRDb2RlYyAqY29kZWNGb3JDRlN0cmluZ0VuY29kaW5nKENG
U3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcsIEtXUUVuY29kaW5nRmxhZ3MgZmxhZ3MpCi17Ci0gICAg
aWYgKGVuY29kaW5nID09IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElkKSB7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgY29uc3QgQ0ZEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzIFFUZXh0Q29kZWNLZXlDYWxsYmFja3MgPSB7IDAsIE5VTEwsIE5VTEwsIE5VTEwsIFFU
ZXh0Q29kZWNzRXF1YWwsIFFUZXh0Q29kZWNIYXNoIH07Ci0gICAgc3RhdGljIENGTXV0YWJsZURp
Y3Rpb25hcnlSZWYgZW5jb2RpbmdUb0NvZGVjID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShO
VUxMLCAwLCAmUVRleHRDb2RlY0tleUNhbGxiYWNrcywgTlVMTCk7Ci0gICAgCi0gICAgUVRleHRD
b2RlYyBrZXkoZW5jb2RpbmcsIGZsYWdzKTsKLSAgICBjb25zdCB2b2lkICp2YWx1ZTsKLSAgICBp
ZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWVJZlByZXNlbnQoZW5jb2RpbmdUb0NvZGVjLCAma2V5LCAm
dmFsdWUpKSB7Ci0gICAgICAgIHJldHVybiBjb25zdF9jYXN0PFFUZXh0Q29kZWMgKj4oc3RhdGlj
X2Nhc3Q8Y29uc3QgUVRleHRDb2RlYyAqPih2YWx1ZSkpOwotICAgIH0KLSAgICBRVGV4dENvZGVj
ICpjb2RlYyA9IG5ldyBRVGV4dENvZGVjKGVuY29kaW5nLCBmbGFncyk7Ci0gICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoZW5jb2RpbmdUb0NvZGVjLCBjb2RlYywgY29kZWMpOwotICAgIHJldHVybiBj
b2RlYzsKLX0KLQotUVRleHRDb2RlYyogUVRleHRDb2RlYzo6Y29kZWNGb3JOYW1lKGNvbnN0IGNo
YXIqIG5hbWUpCi17Ci0gICAgS1dRRW5jb2RpbmdGbGFncyBmbGFnczsKLSAgICBDRlN0cmluZ0Vu
Y29kaW5nIGVuY29kaW5nID0gS1dRQ0ZTdHJpbmdFbmNvZGluZ0Zyb21JQU5BQ2hhcnNldE5hbWUo
bmFtZSwgJmZsYWdzKTsKLSAgICByZXR1cm4gY29kZWNGb3JDRlN0cmluZ0VuY29kaW5nKGVuY29k
aW5nLCBmbGFncyk7Ci19Ci0KLVFUZXh0Q29kZWMqIFFUZXh0Q29kZWM6OnV0ZjhDb2RlYygpCi17
Ci0gICAgcmV0dXJuIGNvZGVjRm9yQ0ZTdHJpbmdFbmNvZGluZyhrQ0ZTdHJpbmdFbmNvZGluZ1VU
RjgsIE5vRW5jb2RpbmdGbGFncyk7Ci19Ci0KLVFUZXh0Q29kZWMqIFFUZXh0Q29kZWM6OmNvZGVj
Rm9yTmFtZUVpZ2h0Qml0T25seShjb25zdCBjaGFyKiBuYW1lKQotewotICAgIEtXUUVuY29kaW5n
RmxhZ3MgZmxhZ3M7Ci0gICAgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyA9IEtXUUNGU3RyaW5n
RW5jb2RpbmdGcm9tSUFOQUNoYXJzZXROYW1lKG5hbWUsICZmbGFncyk7Ci0gICAgc3dpdGNoIChl
bmNvZGluZykgewotICAgICAgICBjYXNlIGtDRlN0cmluZ0VuY29kaW5nVW5pY29kZToKLSAgICAg
ICAgICAgIGVuY29kaW5nID0ga0NGU3RyaW5nRW5jb2RpbmdVVEY4OwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIHJldHVybiBjb2RlY0ZvckNGU3RyaW5nRW5jb2RpbmcoZW5jb2Rpbmcs
IGZsYWdzKTsKLX0KLQotUVRleHRDb2RlYyogUVRleHRDb2RlYzo6Y29kZWNGb3JMb2NhbGUoKQot
ewotICAgIHJldHVybiBjb2RlY0ZvckNGU3RyaW5nRW5jb2RpbmcoQ0ZTdHJpbmdHZXRTeXN0ZW1F
bmNvZGluZygpLCBOb0VuY29kaW5nRmxhZ3MpOwotfQotCi1jb25zdCBjaGFyKiBRVGV4dENvZGVj
OjpuYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gS1dRQ0ZTdHJpbmdFbmNvZGluZ1RvSUFOQUNo
YXJzZXROYW1lKF9lbmNvZGluZyk7Ci19Ci0KLVFUZXh0RGVjb2RlciogUVRleHRDb2RlYzo6bWFr
ZURlY29kZXIoKSBjb25zdAotewotICAgIHJldHVybiBuZXcgS1dRVGV4dERlY29kZXIoX2VuY29k
aW5nLCBfZmxhZ3MpOwotfQotCi1pbmxpbmUgQ0ZTdHJpbmdFbmNvZGluZyBlZmZlY3RpdmVFbmNv
ZGluZyhDRlN0cmluZ0VuY29kaW5nIGUpCi17Ci0gICAgc3dpdGNoIChlKSB7Ci0gICAgICAgIGNh
c2Uga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjE6Ci0gICAgICAgIGNhc2Uga0NGU3RyaW5nRW5j
b2RpbmdBU0NJSToKLSAgICAgICAgICAgIGUgPSBrQ0ZTdHJpbmdFbmNvZGluZ1dpbmRvd3NMYXRp
bjE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIGU7Ci19Ci0KLVFDU3Ry
aW5nIFFUZXh0Q29kZWM6OmZyb21Vbmljb2RlKGNvbnN0IFFTdHJpbmcgJnFjcywgYm9vbCBhbGxv
d0VudGl0aWVzKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVhbGx5IHVzZSB0
aGUgc2FtZSBBUEkgaW4gYm90aCBkaXJlY3Rpb25zLgotICAgIC8vIEN1cnJlbnRseSB3ZSB1c2Ug
SUNVIHRvIGRlY29kZSBhbmQgQ0ZTdHJpbmcgdG8gZW5jb2RlOyBpdCB3b3VsZCBiZSBiZXR0ZXIg
dG8gZW5jb2RlIHdpdGggSUNVIHRvby4KLSAgICAKLSAgICBDRlN0cmluZ0VuY29kaW5nIGVuY29k
aW5nID0gZWZmZWN0aXZlRW5jb2RpbmcoX2VuY29kaW5nKTsKLQotICAgIC8vIEZJWE1FOiBTaW5j
ZSB0aGVyZSdzIG5vICJmb3JjZSBBU0NJSSByYW5nZSIgbW9kZSBpbiBDRlN0cmluZywgd2UgY2hh
bmdlIHRoZSBiYWNrc2xhc2ggaW50byBhIHllbiBzaWduLgotICAgIC8vIEVuY29kaW5nIHdpbGwg
Y2hhbmdlIHRoZSB5ZW4gc2lnbiBiYWNrIGludG8gYSBiYWNrc2xhc2guCi0gICAgUVN0cmluZyBj
b3B5ID0gcWNzOwotICAgIGNvcHkucmVwbGFjZShRQ2hhcignXFwnKSwgYmFja3NsYXNoQXNDdXJy
ZW5jeVN5bWJvbCgpKTsKLSAgICBDRlN0cmluZ1JlZiBjZnMgPSBjb3B5LmdldENGU3RyaW5nKCk7
Ci0gICAgCi0gICAgQ0ZJbmRleCBzdGFydFBvcyA9IDA7Ci0gICAgQ0ZJbmRleCBjaGFyYWN0ZXJz
TGVmdCA9IENGU3RyaW5nR2V0TGVuZ3RoKGNmcyk7Ci0gICAgUUNTdHJpbmcgcmVzdWx0KDEpOyAv
LyBmb3IgdHJhaWxuZyB6ZXJvCi0KLSAgICB3aGlsZSAoY2hhcmFjdGVyc0xlZnQgPiAwKSB7Ci0g
ICAgICAgIENGUmFuZ2UgcmFuZ2UgPSBDRlJhbmdlTWFrZShzdGFydFBvcywgY2hhcmFjdGVyc0xl
ZnQpOwotICAgICAgICBDRkluZGV4IGJ1ZmZlckxlbmd0aDsKLSAgICAgICAgQ0ZTdHJpbmdHZXRC
eXRlcyhjZnMsIHJhbmdlLCBlbmNvZGluZywgYWxsb3dFbnRpdGllcyA/IDAgOiAnPycsIGZhbHNl
LCBOVUxMLCAweDdGRkZGRkZGLCAmYnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgCi0gICAgICAgIFFD
U3RyaW5nIGNodW5rKGJ1ZmZlckxlbmd0aCArIDEpOwotICAgICAgICBDRkluZGV4IGNoYXJhY3Rl
cnNDb252ZXJ0ZWQgPSBDRlN0cmluZ0dldEJ5dGVzKGNmcywgcmFuZ2UsIGVuY29kaW5nLCBhbGxv
d0VudGl0aWVzID8gMCA6ICc/JywgZmFsc2UsIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hh
ciAqPihjaHVuay5kYXRhKCkpLCBidWZmZXJMZW5ndGgsICZidWZmZXJMZW5ndGgpOwotICAgICAg
ICBjaHVua1tidWZmZXJMZW5ndGhdID0gMDsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChjaHVuayk7
Ci0gICAgICAgIAotICAgICAgICBpZiAoY2hhcmFjdGVyc0NvbnZlcnRlZCAhPSBjaGFyYWN0ZXJz
TGVmdCkgewotICAgICAgICAgICAgLy8gRklYTUU6IHN1cHBvcnQgc3Vycm9nYXRlIHBhaXJzCi0g
ICAgICAgICAgICBVbmlDaGFyIGJhZENoYXIgPSBDRlN0cmluZ0dldENoYXJhY3RlckF0SW5kZXgo
Y2ZzLCBzdGFydFBvcyArIGNoYXJhY3RlcnNDb252ZXJ0ZWQpOwotICAgICAgICAgICAgY2hhciBi
dWZbMTZdOwotICAgICAgICAgICAgc3ByaW50ZihidWYsICImIyV1OyIsIGJhZENoYXIpOwotICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChidWYpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAr
K2NoYXJhY3RlcnNDb252ZXJ0ZWQ7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHN0YXJ0
UG9zICs9IGNoYXJhY3RlcnNDb252ZXJ0ZWQ7Ci0gICAgICAgIGNoYXJhY3RlcnNMZWZ0IC09IGNo
YXJhY3RlcnNDb252ZXJ0ZWQ7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVFTdHJp
bmcgUVRleHRDb2RlYzo6dG9Vbmljb2RlKGNvbnN0IGNoYXIgKmNocywgaW50IGxlbikgY29uc3QK
LXsKLSAgICByZXR1cm4gS1dRVGV4dERlY29kZXIoX2VuY29kaW5nLCBfZmxhZ3MpLnRvVW5pY29k
ZShjaHMsIGxlbiwgdHJ1ZSk7Ci19Ci0KLVFTdHJpbmcgUVRleHRDb2RlYzo6dG9Vbmljb2RlKGNv
bnN0IEJ5dGVBcnJheSAmcWJhLCBpbnQgbGVuKSBjb25zdAorU3RyZWFtaW5nVGV4dERlY29kZXI6
OlN0cmVhbWluZ1RleHREZWNvZGVyKGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcpCisgICAg
OiBtX2VuY29kaW5nKGVuY29kaW5nKQorICAgICwgbV9saXR0bGVFbmRpYW4oZW5jb2RpbmcuZmxh
Z3MoKSAmIExpdHRsZUVuZGlhbikKKyAgICAsIG1fYXRTdGFydCh0cnVlKQorICAgICwgbV9lcnJv
cihmYWxzZSkKKyAgICAsIG1fbnVtQnVmZmVyZWRCeXRlcygwKQorICAgICwgbV9jb252ZXJ0ZXJJ
Q1UoMCkKIHsKLSAgICByZXR1cm4gS1dRVGV4dERlY29kZXIoX2VuY29kaW5nLCBfZmxhZ3MpLnRv
VW5pY29kZShxYmEsIGxlbiwgdHJ1ZSk7CiB9CiAKLVFDaGFyIFFUZXh0Q29kZWM6OmJhY2tzbGFz
aEFzQ3VycmVuY3lTeW1ib2woKSBjb25zdAorUVN0cmluZyBTdHJlYW1pbmdUZXh0RGVjb2Rlcjo6
Y29udmVydExhdGluMShjb25zdCB1bnNpZ25lZCBjaGFyKiBzLCBpbnQgbGVuZ3RoKQogewotICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgcHV0IHRoaXMgaW5mb3JtYXRpb24gaW50byBLV1FDaGFyc2V0
RGF0YSBpbnN0ZWFkIG9mIGhhdmluZyBhIHN3aXRjaCBoZXJlLgotICAgIHN3aXRjaCAoX2VuY29k
aW5nKSB7Ci0gICAgICAgIGNhc2Uga0NGU3RyaW5nRW5jb2RpbmdTaGlmdEpJU19YMDIxM18wMDoK
LSAgICAgICAgY2FzZSBrQ0ZTdHJpbmdFbmNvZGluZ0VVQ19KUDoKLSAgICAgICAgICAgIHJldHVy
biAweDAwQTU7IC8vIHllbiBzaWduCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1
cm4gJ1xcJzsKLSAgICB9Ci19Ci0KLWJvb2wgb3BlcmF0b3I9PShjb25zdCBRVGV4dENvZGVjICZh
LCBjb25zdCBRVGV4dENvZGVjICZiKQotewotICAgIHJldHVybiBhLl9lbmNvZGluZyA9PSBiLl9l
bmNvZGluZyAmJiBhLl9mbGFncyA9PSBiLl9mbGFnczsKKyAgICBBU1NFUlQobV9udW1CdWZmZXJl
ZEJ5dGVzID09IDApOworICAgIHJldHVybiBRU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhciAqPihzKSwgbGVuZ3RoKTsKIH0KIAotLy8gR29sZGVuIHJhdGlvIC0gYXJiaXRyYXJ5IHN0
YXJ0IHZhbHVlIHRvIGF2b2lkIG1hcHBpbmcgYWxsIDAncyB0byBhbGwgMCdzCi0vLyBvciBhbnl0
aGluZyBsaWtlIHRoYXQuCi1jb25zdCB1bnNpZ25lZCBQSEkgPSAweDllMzc3OWI5VTsKLQotLy8g
UGF1bCBIc2llaCdzIFN1cGVyRmFzdEhhc2gKLS8vIGh0dHA6Ly93d3cuYXppbGxpb25tb25rZXlz
LmNvbS9xZWQvaGFzaC5odG1sCi0vLyBBZGFwdGVkIGFzc3VtaW5nIF9lbmNvZGluZyBpcyAzMiBi
aXRzIGFuZCBfZmxhZ3MgaXMgYXQgbW9zdCAxNiBiaXRzCi11bnNpZ25lZCBRVGV4dENvZGVjOjpo
YXNoKCkgY29uc3QKLXsKLSAgICB1aW50MzJfdCBoYXNoID0gUEhJOwotICAgIHVpbnQzMl90IHRt
cDsKLSAgICAKLSAgICBoYXNoICs9IF9lbmNvZGluZyAmIDB4ZmZmZjsKLSAgICB0bXAgPSAoKF9l
bmNvZGluZyA+PiAxNikgPDwgMTEpIF4gaGFzaDsKLSAgICBoYXNoID0gKGhhc2ggPDwgMTYpIF4g
dG1wOwotICAgIGhhc2ggKz0gaGFzaCA+PiAxMTsKK3N0YXRpYyBjb25zdCBVQ2hhciByZXBsYWNl
bWVudENoYXJhY3RlciA9IDB4RkZGRDsKK3N0YXRpYyBjb25zdCBVQ2hhciBCT00gPSAweEZFRkY7
CitzdGF0aWMgY29uc3QgaW50IENvbnZlcnNpb25CdWZmZXJTaXplID0gMTYzODQ7CiAgICAgCi0g
ICAgaGFzaCArPSBfZmxhZ3MgJiAweGZmZmY7Ci0gICAgaGFzaCBePSBoYXNoIDw8IDExOwotICAg
IGhhc2ggKz0gaGFzaCA+PiAxNzsKLQotICAgIC8vIEZvcmNlICJhdmFsYW5jaGluZyIgb2YgZmlu
YWwgMTI3IGJpdHMKLSAgICBoYXNoIF49IGhhc2ggPDwgMzsKLSAgICBoYXNoICs9IGhhc2ggPj4g
NTsKLSAgICBoYXNoIF49IGhhc2ggPDwgMjsKLSAgICBoYXNoICs9IGhhc2ggPj4gMTU7Ci0gICAg
aGFzaCBePSBoYXNoIDw8IDEwOwotCi0gICAgcmV0dXJuIGhhc2g7Ci19Ci0KLXN0YXRpYyBCb29s
ZWFuIFFUZXh0Q29kZWNzRXF1YWwoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKLXsKLSAg
ICByZXR1cm4gKnN0YXRpY19jYXN0PGNvbnN0IFFUZXh0Q29kZWMgKj4oYSkgPT0gKnN0YXRpY19j
YXN0PGNvbnN0IFFUZXh0Q29kZWMgKj4oYik7Ci19Ci0KLXN0YXRpYyBDRkhhc2hDb2RlIFFUZXh0
Q29kZWNIYXNoKGNvbnN0IHZvaWQgKnZhbHVlKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBRVGV4dENvZGVjICo+KHZhbHVlKS0+aGFzaCgpOwotfQotCi0vLyA9PT09PT09PT09PT09
PT09Ci0KLVFUZXh0RGVjb2Rlcjo6flFUZXh0RGVjb2RlcigpCi17Ci19Ci0KLS8vID09PT09PT09
PT09PT09PT0KLQotS1dRVGV4dERlY29kZXI6OktXUVRleHREZWNvZGVyKENGU3RyaW5nRW5jb2Rp
bmcgZSwgS1dRRW5jb2RpbmdGbGFncyBmKQotICAgIDogX2VuY29kaW5nKGUpLCBfbGl0dGxlRW5k
aWFuKGYgJiA6OkxpdHRsZUVuZGlhbiksIF9hdFN0YXJ0KHRydWUpLCBfZXJyb3IoZmFsc2UpCi0g
ICAgLCBfbnVtQnVmZmVyZWRCeXRlcygwKSwgX2NvbnZlcnRlcklDVSgwKQotewotfQorc3RhdGlj
IFVDb252ZXJ0ZXIqIGNhY2hlZENvbnZlcnRlcklDVTsKK3N0YXRpYyBUZXh0RW5jb2RpbmdJRCBj
YWNoZWRDb252ZXJ0ZXJFbmNvZGluZyA9IEludmFsaWRFbmNvZGluZzsKIAotS1dRVGV4dERlY29k
ZXI6On5LV1FUZXh0RGVjb2RlcigpCitTdHJlYW1pbmdUZXh0RGVjb2Rlcjo6flN0cmVhbWluZ1Rl
eHREZWNvZGVyKCkKIHsKLSAgICBpZiAoX2NvbnZlcnRlcklDVSkgewotICAgICAgICBpZiAoX2Nh
Y2hlZENvbnZlcnRlcklDVSAhPSAwKSB7Ci0gICAgICAgICAgICB1Y252X2Nsb3NlKF9jYWNoZWRD
b252ZXJ0ZXJJQ1UpOwotICAgICAgICB9Ci0gICAgICAgIF9jYWNoZWRDb252ZXJ0ZXJJQ1UgPSBf
Y29udmVydGVySUNVOwotICAgICAgICBfY2FjaGVkQ29udmVydGVyRW5jb2RpbmcgPSBfZW5jb2Rp
bmc7CisgICAgaWYgKG1fY29udmVydGVySUNVKSB7CisgICAgICAgIGlmIChjYWNoZWRDb252ZXJ0
ZXJJQ1UgIT0gMCkKKyAgICAgICAgICAgIHVjbnZfY2xvc2UoY2FjaGVkQ29udmVydGVySUNVKTsK
KyAgICAgICAgY2FjaGVkQ29udmVydGVySUNVID0gbV9jb252ZXJ0ZXJJQ1U7CisgICAgICAgIGNh
Y2hlZENvbnZlcnRlckVuY29kaW5nID0gbV9lbmNvZGluZy5lbmNvZGluZ0lEKCk7CiAgICAgfQog
fQogCi1RU3RyaW5nIEtXUVRleHREZWNvZGVyOjpjb252ZXJ0TGF0aW4xKGNvbnN0IHVuc2lnbmVk
IGNoYXIgKnMsIGludCBsZW5ndGgpCi17Ci0gICAgQVNTRVJUKF9udW1CdWZmZXJlZEJ5dGVzID09
IDApOwotCi0gICAgcmV0dXJuIFFTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+
KHMpLCBsZW5ndGgpOwotfQotCi1RU3RyaW5nIEtXUVRleHREZWNvZGVyOjpjb252ZXJ0VVRGMTYo
Y29uc3QgdW5zaWduZWQgY2hhciAqcywgaW50IGxlbmd0aCkKK1FTdHJpbmcgU3RyZWFtaW5nVGV4
dERlY29kZXI6OmNvbnZlcnRVVEYxNihjb25zdCB1bnNpZ25lZCBjaGFyICpzLCBpbnQgbGVuZ3Ro
KQogewotICAgIEFTU0VSVChfbnVtQnVmZmVyZWRCeXRlcyA9PSAwIHx8IF9udW1CdWZmZXJlZEJ5
dGVzID09IDEpOworICAgIEFTU0VSVChtX251bUJ1ZmZlcmVkQnl0ZXMgPT0gMCB8fCBtX251bUJ1
ZmZlcmVkQnl0ZXMgPT0gMSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwID0gczsKICAg
ICB1bnNpZ25lZCBsZW4gPSBsZW5ndGg7CkBAIC0zMDMsNDEgKzc0LDM5IEBAIFFTdHJpbmcgS1dR
VGV4dERlY29kZXI6OmNvbnZlcnRVVEYxNihjb24KICAgICAKICAgICByZXN1bHQucmVzZXJ2ZShs
ZW5ndGggLyAyKTsKIAotICAgIGlmIChfbnVtQnVmZmVyZWRCeXRlcyAhPSAwICYmIGxlbiAhPSAw
KSB7Ci0gICAgICAgIEFTU0VSVChfbnVtQnVmZmVyZWRCeXRlcyA9PSAxKTsKLSAgICAgICAgVW5p
Q2hhciBjOwotICAgICAgICBpZiAoX2xpdHRsZUVuZGlhbikgewotICAgICAgICAgICAgYyA9IF9i
dWZmZXJlZEJ5dGVzWzBdIHwgKHBbMF0gPDwgOCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBjID0gKF9idWZmZXJlZEJ5dGVzWzBdIDw8IDgpIHwgcFswXTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoYykgeworICAgIGlmIChtX251bUJ1ZmZlcmVkQnl0ZXMgIT0gMCAmJiBsZW4gIT0g
MCkgeworICAgICAgICBBU1NFUlQobV9udW1CdWZmZXJlZEJ5dGVzID09IDEpOworICAgICAgICBV
Q2hhciBjOworICAgICAgICBpZiAobV9saXR0bGVFbmRpYW4pCisgICAgICAgICAgICBjID0gbV9i
dWZmZXJlZEJ5dGVzWzBdIHwgKHBbMF0gPDwgOCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGMgPSAobV9idWZmZXJlZEJ5dGVzWzBdIDw8IDgpIHwgcFswXTsKKworICAgICAgICBpZiAoYykK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxRQ2hhciAqPigmYyks
IDEpOwotICAgICAgICB9Ci0gICAgICAgIF9udW1CdWZmZXJlZEJ5dGVzID0gMDsKKworICAgICAg
ICBtX251bUJ1ZmZlcmVkQnl0ZXMgPSAwOwogICAgICAgICBwICs9IDE7CiAgICAgICAgIGxlbiAt
PSAxOwogICAgIH0KICAgICAKICAgICB3aGlsZSAobGVuID4gMSkgewotICAgICAgICBVbmlDaGFy
IGJ1ZmZlcltDb252ZXJzaW9uQnVmZmVyU2l6ZV07CisgICAgICAgIFVDaGFyIGJ1ZmZlcltDb252
ZXJzaW9uQnVmZmVyU2l6ZV07CiAgICAgICAgIGludCBydW5MZW5ndGggPSBNSU4obGVuIC8gMiwg
c2l6ZW9mKGJ1ZmZlcikgLyBzaXplb2YoYnVmZmVyWzBdKSk7CiAgICAgICAgIGludCBidWZmZXJM
ZW5ndGggPSAwOwotICAgICAgICBpZiAoX2xpdHRsZUVuZGlhbikgeworICAgICAgICBpZiAobV9s
aXR0bGVFbmRpYW4pIHsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcnVuTGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgICAgICBVbmlDaGFyIGMgPSBwWzBdIHwgKHBbMV0gPDwgOCk7
CisgICAgICAgICAgICAgICAgVUNoYXIgYyA9IHBbMF0gfCAocFsxXSA8PCA4KTsKICAgICAgICAg
ICAgICAgICBwICs9IDI7Ci0gICAgICAgICAgICAgICAgaWYgKGMgJiYgYyAhPSBCT00pIHsKKyAg
ICAgICAgICAgICAgICBpZiAoYyAmJiBjICE9IEJPTSkKICAgICAgICAgICAgICAgICAgICAgYnVm
ZmVyW2J1ZmZlckxlbmd0aCsrXSA9IGM7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBydW5M
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIFVuaUNoYXIgYyA9IChwWzBdIDw8IDgpIHwg
cFsxXTsKKyAgICAgICAgICAgICAgICBVQ2hhciBjID0gKHBbMF0gPDwgOCkgfCBwWzFdOwogICAg
ICAgICAgICAgICAgIHAgKz0gMjsKLSAgICAgICAgICAgICAgICBpZiAoYyAmJiBjICE9IEJPTSkg
eworICAgICAgICAgICAgICAgIGlmIChjICYmIGMgIT0gQk9NKQogICAgICAgICAgICAgICAgICAg
ICBidWZmZXJbYnVmZmVyTGVuZ3RoKytdID0gYzsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmVzdWx0LmFwcGVuZChyZWludGVycHJldF9jYXN0
PFFDaGFyICo+KGJ1ZmZlciksIGJ1ZmZlckxlbmd0aCk7CkBAIC0zNDUsMzUgKzExNCw0MSBAQCBR
U3RyaW5nIEtXUVRleHREZWNvZGVyOjpjb252ZXJ0VVRGMTYoY29uCiAgICAgfQogICAgIAogICAg
IGlmIChsZW4pIHsKLSAgICAgICAgQVNTRVJUKF9udW1CdWZmZXJlZEJ5dGVzID09IDApOwotICAg
ICAgICBfbnVtQnVmZmVyZWRCeXRlcyA9IDE7Ci0gICAgICAgIF9idWZmZXJlZEJ5dGVzWzBdID0g
cFswXTsKKyAgICAgICAgQVNTRVJUKG1fbnVtQnVmZmVyZWRCeXRlcyA9PSAwKTsKKyAgICAgICAg
bV9udW1CdWZmZXJlZEJ5dGVzID0gMTsKKyAgICAgICAgbV9idWZmZXJlZEJ5dGVzWzBdID0gcFsw
XTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVUVycm9yQ29kZSBLV1FU
ZXh0RGVjb2Rlcjo6Y3JlYXRlSUNVQ29udmVydGVyKCkKK3N0YXRpYyBpbmxpbmUgVGV4dEVuY29k
aW5nIGVmZmVjdGl2ZUVuY29kaW5nKGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcpCiB7Ci0g
ICAgY29uc3QgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyA9IGVmZmVjdGl2ZUVuY29kaW5nKF9l
bmNvZGluZyk7Ci0gICAgY29uc3QgY2hhciAqZW5jb2RpbmdOYW1lID0gS1dRQ0ZTdHJpbmdFbmNv
ZGluZ1RvSUFOQUNoYXJzZXROYW1lKGVuY29kaW5nKTsKKyAgICBUZXh0RW5jb2RpbmdJRCBpZCA9
IGVuY29kaW5nLmVuY29kaW5nSUQoKTsKKyAgICBpZiAoaWQgPT0gTGF0aW4xRW5jb2RpbmcgfHwg
aWQgPT0gQVNDSUlFbmNvZGluZykKKyAgICAgICAgaWQgPSBXaW5MYXRpbjFFbmNvZGluZzsKKyAg
ICByZXR1cm4gVGV4dEVuY29kaW5nKGlkLCBlbmNvZGluZy5mbGFncygpKTsKK30KIAotICAgIGJv
b2wgY2FjaGVkRW5jb2RpbmdFcXVhbCA9IF9jYWNoZWRDb252ZXJ0ZXJFbmNvZGluZyA9PSBlbmNv
ZGluZzsKLSAgICBfY2FjaGVkQ29udmVydGVyRW5jb2RpbmcgPSBrQ0ZTdHJpbmdFbmNvZGluZ0lu
dmFsaWRJZDsKK1VFcnJvckNvZGUgU3RyZWFtaW5nVGV4dERlY29kZXI6OmNyZWF0ZUlDVUNvbnZl
cnRlcigpCit7CisgICAgVGV4dEVuY29kaW5nIGVuY29kaW5nID0gZWZmZWN0aXZlRW5jb2Rpbmco
bV9lbmNvZGluZyk7CisgICAgY29uc3QgY2hhciogZW5jb2RpbmdOYW1lID0gZW5jb2RpbmcubmFt
ZSgpOwogCi0gICAgaWYgKGNhY2hlZEVuY29kaW5nRXF1YWwgJiYgX2NhY2hlZENvbnZlcnRlcklD
VSkgewotICAgICAgICBfY29udmVydGVySUNVID0gX2NhY2hlZENvbnZlcnRlcklDVTsKLSAgICAg
ICAgX2NhY2hlZENvbnZlcnRlcklDVSA9IDA7Ci0gICAgICAgIExPRyhUZXh0Q29udmVyc2lvbiwg
InVzaW5nIGNhY2hlZCBJQ1UgY29udmVydGVyIGZvciBlbmNvZGluZzogJXMiLCBlbmNvZGluZ05h
bWUpOworICAgIGJvb2wgY2FjaGVkRW5jb2RpbmdFcXVhbCA9IGNhY2hlZENvbnZlcnRlckVuY29k
aW5nID09IGVuY29kaW5nLmVuY29kaW5nSUQoKTsKKyAgICBjYWNoZWRDb252ZXJ0ZXJFbmNvZGlu
ZyA9IEludmFsaWRFbmNvZGluZzsKKworICAgIGlmIChjYWNoZWRFbmNvZGluZ0VxdWFsICYmIGNh
Y2hlZENvbnZlcnRlcklDVSkgeworICAgICAgICBtX2NvbnZlcnRlcklDVSA9IGNhY2hlZENvbnZl
cnRlcklDVTsKKyAgICAgICAgY2FjaGVkQ29udmVydGVySUNVID0gMDsKICAgICB9IGVsc2UgeyAg
ICAKICAgICAgICAgVUVycm9yQ29kZSBlcnIgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIEFTU0VS
VCghX2NvbnZlcnRlcklDVSk7Ci0gICAgICAgIExPRyhUZXh0Q29udmVyc2lvbiwgImNyZWF0aW5n
IElDVSBjb252ZXJ0ZXIgZm9yIGVuY29kaW5nOiAlcyIsIGVuY29kaW5nTmFtZSk7Ci0gICAgICAg
IF9jb252ZXJ0ZXJJQ1UgPSB1Y252X29wZW4oZW5jb2RpbmdOYW1lLCAmZXJyKTsKLSAgICAgICAg
aWYgKGVyciA9PSBVX0FNQklHVU9VU19BTElBU19XQVJOSU5HKSB7CisgICAgICAgIEFTU0VSVCgh
bV9jb252ZXJ0ZXJJQ1UpOworICAgICAgICBtX2NvbnZlcnRlcklDVSA9IHVjbnZfb3BlbihlbmNv
ZGluZ05hbWUsICZlcnIpOworICAgICAgICBpZiAoZXJyID09IFVfQU1CSUdVT1VTX0FMSUFTX1dB
Uk5JTkcpCiAgICAgICAgICAgICBMT0dfRVJST1IoIklDVSBhbWJpZ3VvdXMgYWxpYXMgd2Fybmlu
ZyBmb3IgZW5jb2Rpbmc6ICVzIiwgZW5jb2RpbmdOYW1lKTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoIV9jb252ZXJ0ZXJJQ1UpIHsKKworICAgICAgICBpZiAoIW1fY29udmVydGVySUNVKSB7CiAg
ICAgICAgICAgICBMT0dfRVJST1IoInRoZSBJQ1UgQ29udmVydGVyIHdvbid0IGNvbnZlcnQgZnJv
bSB0ZXh0IGVuY29kaW5nIDB4JVgsIGVycm9yICVkIiwgZW5jb2RpbmcsIGVycik7CiAgICAgICAg
ICAgICByZXR1cm4gZXJyOwogICAgICAgICB9CkBAIC0zODYsNDEgKzE2MSwzMyBAQCBVRXJyb3JD
b2RlIEtXUVRleHREZWNvZGVyOjpjcmVhdGVJQ1VDb252CiAvLyBpbnZhbGlkIHNlcXVlbmNlcyBp
bnRvIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMsIGJ1dCBvdGhlciBicm93c2VycyBkaXNjYXJkIHRo
ZW0uCiAvLyBXZSBzdHJpcCBCT00gY2hhcmFjdGVycyBiZWNhdXNlIHRoZXkgY2FuIHNob3cgdXAg
Ym90aCBhdCB0aGUgc3RhcnQgb2YgY29udGVudAogLy8gYW5kIGluc2lkZSBjb250ZW50LCBhbmQg
d2UgbmV2ZXIgd2FudCB0aGVtIHRvIGVuZCB1cCBpbiB0aGUgZGVjb2RlZCB0ZXh0Lgotc3RhdGlj
IGlubGluZSBib29sIHVud2FudGVkKFVuaUNoYXIgYykKK3N0YXRpYyBpbmxpbmUgYm9vbCB1bndh
bnRlZChVQ2hhciBjKQogewotICAgIHN3aXRjaCAoYykgewotICAgICAgICBjYXNlIHJlcGxhY2Vt
ZW50Q2hhcmFjdGVyOgotICAgICAgICBjYXNlIEJPTToKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAg
ICByZXR1cm4gYyA9PSByZXBsYWNlbWVudENoYXJhY3RlciB8fCBjID09IEJPTTsKIH0KIAotdm9p
ZCBLV1FUZXh0RGVjb2Rlcjo6YXBwZW5kT21pdHRpbmdVbndhbnRlZChRU3RyaW5nICZzLCBjb25z
dCBVbmlDaGFyICpjaGFyYWN0ZXJzLCBpbnQgYnl0ZUNvdW50KQordm9pZCBTdHJlYW1pbmdUZXh0
RGVjb2Rlcjo6YXBwZW5kT21pdHRpbmdVbndhbnRlZChRU3RyaW5nICZzLCBjb25zdCBVQ2hhciAq
Y2hhcmFjdGVycywgaW50IGJ5dGVDb3VudCkKIHsKLSAgICBBU1NFUlQoYnl0ZUNvdW50ICUgc2l6
ZW9mKFVuaUNoYXIpID09IDApOworICAgIEFTU0VSVChieXRlQ291bnQgJSBzaXplb2YoVUNoYXIp
ID09IDApOwogICAgIGludCBzdGFydCA9IDA7Ci0gICAgaW50IGNoYXJhY3RlckNvdW50ID0gYnl0
ZUNvdW50IC8gc2l6ZW9mKFVuaUNoYXIpOworICAgIGludCBjaGFyYWN0ZXJDb3VudCA9IGJ5dGVD
b3VudCAvIHNpemVvZihVQ2hhcik7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gY2hhcmFjdGVy
Q291bnQ7ICsraSkgewogICAgICAgICBpZiAodW53YW50ZWQoY2hhcmFjdGVyc1tpXSkpIHsKLSAg
ICAgICAgICAgIGlmIChzdGFydCAhPSBpKSB7CisgICAgICAgICAgICBpZiAoc3RhcnQgIT0gaSkK
ICAgICAgICAgICAgICAgICBzLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IFFDaGFyICo+
KCZjaGFyYWN0ZXJzW3N0YXJ0XSksIGkgLSBzdGFydCk7Ci0gICAgICAgICAgICB9CiAgICAgICAg
ICAgICBzdGFydCA9IGkgKyAxOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChzdGFydCAhPSBj
aGFyYWN0ZXJDb3VudCkgeworICAgIGlmIChzdGFydCAhPSBjaGFyYWN0ZXJDb3VudCkKICAgICAg
ICAgcy5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBRQ2hhciAqPigmY2hhcmFjdGVyc1tz
dGFydF0pLCBjaGFyYWN0ZXJDb3VudCAtIHN0YXJ0KTsKLSAgICB9CiB9CiAKLVFTdHJpbmcgS1dR
VGV4dERlY29kZXI6OmNvbnZlcnRVc2luZ0lDVShjb25zdCB1bnNpZ25lZCBjaGFyICpjaHMsIGlu
dCBsZW4sIGJvb2wgZmx1c2gpCitRU3RyaW5nIFN0cmVhbWluZ1RleHREZWNvZGVyOjpjb252ZXJ0
VXNpbmdJQ1UoY29uc3QgdW5zaWduZWQgY2hhciAqY2hzLCBpbnQgbGVuLCBib29sIGZsdXNoKQog
ewogICAgIC8vIEdldCBhIGNvbnZlcnRlciBmb3IgdGhlIHBhc3NlZC1pbiBlbmNvZGluZy4KLSAg
ICBpZiAoIV9jb252ZXJ0ZXJJQ1UgJiYgVV9GQUlMVVJFKGNyZWF0ZUlDVUNvbnZlcnRlcigpKSkg
eworICAgIGlmICghbV9jb252ZXJ0ZXJJQ1UgJiYgVV9GQUlMVVJFKGNyZWF0ZUlDVUNvbnZlcnRl
cigpKSkKICAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKLSAgICB9CisKICAgICBBU1NFUlQoX2Nv
bnZlcnRlcklDVSk7CiAKICAgICBRU3RyaW5nIHJlc3VsdCgiIik7CkBAIC00MzYsOSArMjAzLDkg
QEAgUVN0cmluZyBLV1FUZXh0RGVjb2Rlcjo6Y29udmVydFVzaW5nSUNVKAogICAgICAgICBVQ2hh
ciAqdGFyZ2V0ID0gYnVmZmVyOwogICAgICAgICBjb25zdCBVQ2hhciAqdGFyZ2V0TGltaXQgPSB0
YXJnZXQgKyBDb252ZXJzaW9uQnVmZmVyU2l6ZTsKICAgICAgICAgZXJyID0gVV9aRVJPX0VSUk9S
OwotICAgICAgICB1Y252X3RvVW5pY29kZShfY29udmVydGVySUNVLCAmdGFyZ2V0LCB0YXJnZXRM
aW1pdCwgJnNvdXJjZSwgc291cmNlTGltaXQsIG9mZnNldHMsIGZsdXNoLCAmZXJyKTsKKyAgICAg
ICAgdWNudl90b1VuaWNvZGUobV9jb252ZXJ0ZXJJQ1UsICZ0YXJnZXQsIHRhcmdldExpbWl0LCAm
c291cmNlLCBzb3VyY2VMaW1pdCwgb2Zmc2V0cywgZmx1c2gsICZlcnIpOwogICAgICAgICBpbnQg
Y291bnQgPSB0YXJnZXQgLSBidWZmZXI7Ci0gICAgICAgIGFwcGVuZE9taXR0aW5nVW53YW50ZWQo
cmVzdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIgKj4oYnVmZmVyKSwgY291bnQg
KiBzaXplb2YoVW5pQ2hhcikpOworICAgICAgICBhcHBlbmRPbWl0dGluZ1Vud2FudGVkKHJlc3Vs
dCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhciAqPihidWZmZXIpLCBjb3VudCAqIHNpemVv
ZihVQ2hhcikpOwogICAgIH0gd2hpbGUgKGVyciA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUik7
CiAKICAgICBpZiAoVV9GQUlMVVJFKGVycikpIHsKQEAgLTQ0Nyw3ICsyMTQsNyBAQCBRU3RyaW5n
IEtXUVRleHREZWNvZGVyOjpjb252ZXJ0VXNpbmdJQ1UoCiAgICAgICAgICAgICBVQ2hhciAqdGFy
Z2V0ID0gYnVmZmVyOwogICAgICAgICAgICAgY29uc3QgVUNoYXIgKnRhcmdldExpbWl0ID0gdGFy
Z2V0ICsgQ29udmVyc2lvbkJ1ZmZlclNpemU7CiAgICAgICAgICAgICBlcnIgPSBVX1pFUk9fRVJS
T1I7Ci0gICAgICAgICAgICB1Y252X3RvVW5pY29kZShfY29udmVydGVySUNVLCAmdGFyZ2V0LCB0
YXJnZXRMaW1pdCwgJnNvdXJjZSwgc291cmNlTGltaXQsIG9mZnNldHMsIHRydWUsICZlcnIpOwor
ICAgICAgICAgICAgdWNudl90b1VuaWNvZGUobV9jb252ZXJ0ZXJJQ1UsICZ0YXJnZXQsIHRhcmdl
dExpbWl0LCAmc291cmNlLCBzb3VyY2VMaW1pdCwgb2Zmc2V0cywgdHJ1ZSwgJmVycik7CiAgICAg
ICAgIH0gd2hpbGUgKHNvdXJjZSA8IHNvdXJjZUxpbWl0KTsKICAgICAgICAgTE9HX0VSUk9SKCJJ
Q1UgY29udmVyc2lvbiBlcnJvciIpOwogICAgICAgICByZXR1cm4gUVN0cmluZygpOwpAQCAtNDU2
LDE2ICsyMjMsMTYgQEAgUVN0cmluZyBLV1FUZXh0RGVjb2Rlcjo6Y29udmVydFVzaW5nSUNVKAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVFTdHJpbmcgS1dRVGV4dERlY29kZXI6OmNvbnZlcnQo
Y29uc3QgdW5zaWduZWQgY2hhciAqY2hzLCBpbnQgbGVuLCBib29sIGZsdXNoKQorUVN0cmluZyBT
dHJlYW1pbmdUZXh0RGVjb2Rlcjo6Y29udmVydChjb25zdCB1bnNpZ25lZCBjaGFyICpjaHMsIGlu
dCBsZW4sIGJvb2wgZmx1c2gpCiB7CiAgICAgLy8jZGVmaW5lIFBBUlRJQUxfQ0hBUkFDVEVSX0hB
TkRMSU5HX1RFU1RfQ0hVTktfU0laRSAxMDAwCiAKLSAgICBzd2l0Y2ggKF9lbmNvZGluZykgewot
ICAgIGNhc2Uga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjE6Ci0gICAgY2FzZSBrQ0ZTdHJpbmdF
bmNvZGluZ1dpbmRvd3NMYXRpbjE6CisgICAgc3dpdGNoIChtX2VuY29kaW5nLmVuY29kaW5nSUQo
KSkgeworICAgIGNhc2UgTGF0aW4xRW5jb2Rpbmc6CisgICAgY2FzZSBXaW5MYXRpbjFFbmNvZGlu
ZzoKICAgICAgICAgcmV0dXJuIGNvbnZlcnRMYXRpbjEoY2hzLCBsZW4pOwogCi0gICAgY2FzZSBr
Q0ZTdHJpbmdFbmNvZGluZ1VuaWNvZGU6CisgICAgY2FzZSBVVEYxNkVuY29kaW5nOgogICAgICAg
ICByZXR1cm4gY29udmVydFVURjE2KGNocywgbGVuKTsKIAogICAgIGRlZmF1bHQ6CkBAIC00ODgs
NDIgKzI1NSw0MCBAQCBRU3RyaW5nIEtXUVRleHREZWNvZGVyOjpjb252ZXJ0KGNvbnN0IHVuCiAg
ICAgcmV0dXJuIFFTdHJpbmcoKTsKIH0KIAotUVN0cmluZyBLV1FUZXh0RGVjb2Rlcjo6dG9Vbmlj
b2RlKGNvbnN0IGNoYXIgKmNocywgaW50IGxlbiwgYm9vbCBmbHVzaCkKK1FTdHJpbmcgU3RyZWFt
aW5nVGV4dERlY29kZXI6OnRvVW5pY29kZShjb25zdCBjaGFyICpjaHMsIGludCBsZW4sIGJvb2wg
Zmx1c2gpCiB7CiAgICAgQVNTRVJUX0FSRyhsZW4sIGxlbiA+PSAwKTsKICAgICAKLSAgICBpZiAo
X2Vycm9yIHx8ICFjaHMpIHsKKyAgICBpZiAobV9lcnJvciB8fCAhY2hzKQogICAgICAgICByZXR1
cm4gUVN0cmluZygpOwotICAgIH0KLSAgICBpZiAobGVuIDw9IDAgJiYgIWZsdXNoKSB7CisKKyAg
ICBpZiAobGVuIDw9IDAgJiYgIWZsdXNoKQogICAgICAgICByZXR1cm4gIiI7Ci0gICAgfQogCiAg
ICAgLy8gSGFuZGxlIG5vcm1hbCBjYXNlLgotICAgIGlmICghX2F0U3RhcnQpIHsKKyAgICBpZiAo
IW1fYXRTdGFydCkKICAgICAgICAgcmV0dXJuIGNvbnZlcnQoY2hzLCBsZW4sIGZsdXNoKTsKLSAg
ICB9CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgZm91bmQgYSBCT00uCi0gICAgaW50IG51
bUJ1ZmZlcmVkQnl0ZXMgPSBfbnVtQnVmZmVyZWRCeXRlczsKKyAgICBpbnQgbnVtQnVmZmVyZWRC
eXRlcyA9IG1fbnVtQnVmZmVyZWRCeXRlczsKICAgICBpbnQgYnVmMUxlbiA9IG51bUJ1ZmZlcmVk
Qnl0ZXM7CiAgICAgaW50IGJ1ZjJMZW4gPSBsZW47Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciAq
YnVmMSA9IF9idWZmZXJlZEJ5dGVzOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZjEgPSBt
X2J1ZmZlcmVkQnl0ZXM7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmMiA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihjaHMpOwogICAgIHVuc2lnbmVkIGNoYXIg
YzEgPSBidWYxTGVuID8gKC0tYnVmMUxlbiwgKmJ1ZjErKykgOiBidWYyTGVuID8gKC0tYnVmMkxl
biwgKmJ1ZjIrKykgOiAwOwogICAgIHVuc2lnbmVkIGNoYXIgYzIgPSBidWYxTGVuID8gKC0tYnVm
MUxlbiwgKmJ1ZjErKykgOiBidWYyTGVuID8gKC0tYnVmMkxlbiwgKmJ1ZjIrKykgOiAwOwogICAg
IHVuc2lnbmVkIGNoYXIgYzMgPSBidWYxTGVuID8gKC0tYnVmMUxlbiwgKmJ1ZjErKykgOiBidWYy
TGVuID8gKC0tYnVmMkxlbiwgKmJ1ZjIrKykgOiAwOwogICAgIGludCBCT01MZW5ndGggPSAwOwog
ICAgIGlmIChjMSA9PSAweEZGICYmIGMyID09IDB4RkUpIHsKLSAgICAgICAgX2VuY29kaW5nID0g
a0NGU3RyaW5nRW5jb2RpbmdVbmljb2RlOwotICAgICAgICBfbGl0dGxlRW5kaWFuID0gdHJ1ZTsK
KyAgICAgICAgbV9lbmNvZGluZyA9IFRleHRFbmNvZGluZyhVVEYxNkVuY29kaW5nLCBMaXR0bGVF
bmRpYW4pOworICAgICAgICBtX2xpdHRsZUVuZGlhbiA9IHRydWU7CiAgICAgICAgIEJPTUxlbmd0
aCA9IDI7CiAgICAgfSBlbHNlIGlmIChjMSA9PSAweEZFICYmIGMyID09IDB4RkYpIHsKLSAgICAg
ICAgX2VuY29kaW5nID0ga0NGU3RyaW5nRW5jb2RpbmdVbmljb2RlOwotICAgICAgICBfbGl0dGxl
RW5kaWFuID0gZmFsc2U7CisgICAgICAgIG1fZW5jb2RpbmcgPSBUZXh0RW5jb2RpbmcoVVRGMTZF
bmNvZGluZywgQmlnRW5kaWFuKTsKKyAgICAgICAgbV9saXR0bGVFbmRpYW4gPSBmYWxzZTsKICAg
ICAgICAgQk9NTGVuZ3RoID0gMjsKICAgICB9IGVsc2UgaWYgKGMxID09IDB4RUYgJiYgYzIgPT0g
MHhCQiAmJiBjMyA9PSAweEJGKSB7Ci0gICAgICAgIF9lbmNvZGluZyA9IGtDRlN0cmluZ0VuY29k
aW5nVVRGODsKKyAgICAgICAgbV9lbmNvZGluZyA9IFRleHRFbmNvZGluZyhVVEY4RW5jb2Rpbmcp
OwogICAgICAgICBCT01MZW5ndGggPSAzOwogICAgIH0KIApAQCAtNTMxLDI2ICsyOTYsMjggQEAg
UVN0cmluZyBLV1FUZXh0RGVjb2Rlcjo6dG9Vbmljb2RlKGNvbnN0IAogICAgIGlmIChCT01MZW5n
dGggIT0gMCkgewogICAgICAgICBBU1NFUlQobnVtQnVmZmVyZWRCeXRlcyArIGxlbiA+PSBCT01M
ZW5ndGgpOwogICAgICAgICBpbnQgc2tpcCA9IEJPTUxlbmd0aCAtIG51bUJ1ZmZlcmVkQnl0ZXM7
Ci0gICAgICAgIF9udW1CdWZmZXJlZEJ5dGVzID0gMDsKLSAgICAgICAgX2F0U3RhcnQgPSBmYWxz
ZTsKKyAgICAgICAgbV9udW1CdWZmZXJlZEJ5dGVzID0gMDsKKyAgICAgICAgbV9hdFN0YXJ0ID0g
ZmFsc2U7CiAgICAgICAgIHJldHVybiBsZW4gPT0gc2tpcCA/IFFTdHJpbmcoIiIpIDogY29udmVy
dChjaHMgKyBza2lwLCBsZW4gLSBza2lwLCBmbHVzaCk7CiAgICAgfQogCiAgICAgLy8gSGFuZGxl
IGNhc2Ugd2hlcmUgd2Uga25vdyB0aGVyZSBpcyBubyBCT00gY29taW5nLgotICAgIGNvbnN0IGlu
dCBidWZmZXJTaXplID0gc2l6ZW9mKF9idWZmZXJlZEJ5dGVzKTsKKyAgICBjb25zdCBpbnQgYnVm
ZmVyU2l6ZSA9IHNpemVvZihtX2J1ZmZlcmVkQnl0ZXMpOwogICAgIGlmIChudW1CdWZmZXJlZEJ5
dGVzICsgbGVuID4gYnVmZmVyU2l6ZSB8fCBmbHVzaCkgewotICAgICAgICBfYXRTdGFydCA9IGZh
bHNlOworICAgICAgICBtX2F0U3RhcnQgPSBmYWxzZTsKICAgICAgICAgaWYgKG51bUJ1ZmZlcmVk
Qnl0ZXMgPT0gMCkgewogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnQoY2hzLCBsZW4sIGZsdXNo
KTsKICAgICAgICAgfQotICAgICAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcmVkQnl0ZXNbc2l6ZW9m
KF9idWZmZXJlZEJ5dGVzKV07Ci0gICAgICAgIG1lbWNweShidWZmZXJlZEJ5dGVzLCBfYnVmZmVy
ZWRCeXRlcywgbnVtQnVmZmVyZWRCeXRlcyk7Ci0gICAgICAgIF9udW1CdWZmZXJlZEJ5dGVzID0g
MDsKKyAgICAgICAgdW5zaWduZWQgY2hhciBidWZmZXJlZEJ5dGVzW3NpemVvZihtX2J1ZmZlcmVk
Qnl0ZXMpXTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlcmVkQnl0ZXMsIG1fYnVmZmVyZWRCeXRlcywg
bnVtQnVmZmVyZWRCeXRlcyk7CisgICAgICAgIG1fbnVtQnVmZmVyZWRCeXRlcyA9IDA7CiAgICAg
ICAgIHJldHVybiBjb252ZXJ0KGJ1ZmZlcmVkQnl0ZXMsIG51bUJ1ZmZlcmVkQnl0ZXMsIGZhbHNl
KSArIGNvbnZlcnQoY2hzLCBsZW4sIGZsdXNoKTsKICAgICB9CiAKICAgICAvLyBDb250aW51ZSB0
byBsb29rIGZvciB0aGUgQk9NLgotICAgIG1lbWNweSgmX2J1ZmZlcmVkQnl0ZXNbbnVtQnVmZmVy
ZWRCeXRlc10sIGNocywgbGVuKTsKLSAgICBfbnVtQnVmZmVyZWRCeXRlcyArPSBsZW47CisgICAg
bWVtY3B5KCZtX2J1ZmZlcmVkQnl0ZXNbbnVtQnVmZmVyZWRCeXRlc10sIGNocywgbGVuKTsKKyAg
ICBtX251bUJ1ZmZlcmVkQnl0ZXMgKz0gbGVuOwogICAgIHJldHVybiAiIjsKIH0KKyAgICAKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IHBsYXRmb3JtL1RleHRFbmNvZGluZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gcGxhdGZvcm0vVGV4dEVuY29kaW5nLmNwcAkocmV2aXNpb24gMTI5NzUpCisr
KyBwbGF0Zm9ybS9UZXh0RW5jb2RpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjQsNTMzICsyNCw1NSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJLV1FUZXh0Q29kZWMuaCIKKyNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKIAorI2lu
Y2x1ZGUgIkNoYXJzZXROYW1lcy5oIgogI2luY2x1ZGUgPGt4bWxjb3JlL0Fzc2VydGlvbnMuaD4K
LSNpbmNsdWRlICJLV1FDaGFyc2V0cy5oIgotI2luY2x1ZGUgIktXUUxvZ2dpbmcuaCIKLSNpbmNs
dWRlIDx1bmljb2RlL3VjbnYuaD4KLSNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgorI2luY2x1
ZGUgPGt4bWxjb3JlL0hhc2hTZXQuaD4KKyNpbmNsdWRlICJTdHJlYW1pbmdUZXh0RGVjb2Rlci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IFVuaUNoYXIgcmVwbGFjZW1lbnRDaGFy
YWN0ZXIgPSAweEZGRkQ7CiBjb25zdCBVbmlDaGFyIEJPTSA9IDB4RkVGRjsKIAogc3RhdGljIGNv
bnN0IGludCBDb252ZXJzaW9uQnVmZmVyU2l6ZSA9IDE2Mzg0OwogCi1jbGFzcyBLV1FUZXh0RGVj
b2RlciA6IHB1YmxpYyBRVGV4dERlY29kZXIgewotcHVibGljOgotICAgIEtXUVRleHREZWNvZGVy
KENGU3RyaW5nRW5jb2RpbmcsIEtXUUVuY29kaW5nRmxhZ3MpOwotICAgIH5LV1FUZXh0RGVjb2Rl
cigpOwotICAgIAotICAgIFFTdHJpbmcgdG9Vbmljb2RlKGNvbnN0IGNoYXIgKmNocywgaW50IGxl
biwgYm9vbCBmbHVzaCk7Ci0KLXByaXZhdGU6Ci0gICAgUVN0cmluZyBjb252ZXJ0KGNvbnN0IGNo
YXIgKmNocywgaW50IGxlbiwgYm9vbCBmbHVzaCkKLSAgICAgICAgeyByZXR1cm4gY29udmVydChy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4oY2hzKSwgbGVuLCBmbHVzaCk7
IH0KLSAgICBRU3RyaW5nIGNvbnZlcnQoY29uc3QgdW5zaWduZWQgY2hhciAqY2hzLCBpbnQgbGVu
LCBib29sIGZsdXNoKTsKLSAgICBRU3RyaW5nIGNvbnZlcnRMYXRpbjEoY29uc3QgdW5zaWduZWQg
Y2hhciAqY2hzLCBpbnQgbGVuKTsKLSAgICBRU3RyaW5nIGNvbnZlcnRVVEYxNihjb25zdCB1bnNp
Z25lZCBjaGFyICpjaHMsIGludCBsZW4pOwotICAgIAotICAgIC8vIElDVSBkZWNvZGluZy4KLSAg
ICBRU3RyaW5nIGNvbnZlcnRVc2luZ0lDVShjb25zdCB1bnNpZ25lZCBjaGFyICpjaHMsIGludCBs
ZW4sIGJvb2wgZmx1c2gpOwotICAgIFVFcnJvckNvZGUgY3JlYXRlSUNVQ29udmVydGVyKCk7Ci0K
LSAgICBzdGF0aWMgdm9pZCBhcHBlbmRPbWl0dGluZ1Vud2FudGVkKFFTdHJpbmcgJnMsIGNvbnN0
IFVuaUNoYXIgKmNoYXJhY3RlcnMsIGludCBieXRlQ291bnQpOwotICAgIAotICAgIEtXUVRleHRE
ZWNvZGVyKGNvbnN0IEtXUVRleHREZWNvZGVyICYpOwotICAgIEtXUVRleHREZWNvZGVyICZvcGVy
YXRvcj0oY29uc3QgS1dRVGV4dERlY29kZXIgJik7Ci0KLSAgICBDRlN0cmluZ0VuY29kaW5nIF9l
bmNvZGluZzsKLSAgICBib29sIF9saXR0bGVFbmRpYW47Ci0gICAgYm9vbCBfYXRTdGFydDsKLSAg
ICBib29sIF9lcnJvcjsKLQotICAgIHVuc2lnbmVkIF9udW1CdWZmZXJlZEJ5dGVzOwotICAgIHVu
c2lnbmVkIGNoYXIgX2J1ZmZlcmVkQnl0ZXNbMTZdOyAvLyBiaWdnZXIgdGhhbiBhbnkgc2luZ2xl
IG11bHRpLWJ5dGUgY2hhcmFjdGVyCi0KLSAgICAvLyBJQ1UgZGVjb2RpbmcuCi0gICAgVUNvbnZl
cnRlciAqX2NvbnZlcnRlcklDVTsKLSAgICBzdGF0aWMgVUNvbnZlcnRlciAqX2NhY2hlZENvbnZl
cnRlcklDVTsKLSAgICBzdGF0aWMgQ0ZTdHJpbmdFbmNvZGluZyBfY2FjaGVkQ29udmVydGVyRW5j
b2Rpbmc7Ci19OwotCi1VQ29udmVydGVyICpLV1FUZXh0RGVjb2Rlcjo6X2NhY2hlZENvbnZlcnRl
cklDVTsKLUNGU3RyaW5nRW5jb2RpbmcgS1dRVGV4dERlY29kZXI6Ol9jYWNoZWRDb252ZXJ0ZXJF
bmNvZGluZyA9IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElkOwotCi1zdGF0aWMgQm9vbGVhbiBR
VGV4dENvZGVjc0VxdWFsKGNvbnN0IHZvaWQgKnZhbHVlMSwgY29uc3Qgdm9pZCAqdmFsdWUyKTsK
LXN0YXRpYyBDRkhhc2hDb2RlIFFUZXh0Q29kZWNIYXNoKGNvbnN0IHZvaWQgKnZhbHVlKTsKLQot
c3RhdGljIFFUZXh0Q29kZWMgKmNvZGVjRm9yQ0ZTdHJpbmdFbmNvZGluZyhDRlN0cmluZ0VuY29k
aW5nIGVuY29kaW5nLCBLV1FFbmNvZGluZ0ZsYWdzIGZsYWdzKQotewotICAgIGlmIChlbmNvZGlu
ZyA9PSBrQ0ZTdHJpbmdFbmNvZGluZ0ludmFsaWRJZCkgewotICAgICAgICByZXR1cm4gMDsKLSAg
ICB9Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0IENGRGljdGlvbmFyeUtleUNhbGxCYWNrcyBRVGV4
dENvZGVjS2V5Q2FsbGJhY2tzID0geyAwLCBOVUxMLCBOVUxMLCBOVUxMLCBRVGV4dENvZGVjc0Vx
dWFsLCBRVGV4dENvZGVjSGFzaCB9OwotICAgIHN0YXRpYyBDRk11dGFibGVEaWN0aW9uYXJ5UmVm
IGVuY29kaW5nVG9Db2RlYyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgJlFU
ZXh0Q29kZWNLZXlDYWxsYmFja3MsIE5VTEwpOwotICAgIAotICAgIFFUZXh0Q29kZWMga2V5KGVu
Y29kaW5nLCBmbGFncyk7Ci0gICAgY29uc3Qgdm9pZCAqdmFsdWU7Ci0gICAgaWYgKENGRGljdGlv
bmFyeUdldFZhbHVlSWZQcmVzZW50KGVuY29kaW5nVG9Db2RlYywgJmtleSwgJnZhbHVlKSkgewot
ICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxRVGV4dENvZGVjICo+KHN0YXRpY19jYXN0PGNvbnN0
IFFUZXh0Q29kZWMgKj4odmFsdWUpKTsKLSAgICB9Ci0gICAgUVRleHRDb2RlYyAqY29kZWMgPSBu
ZXcgUVRleHRDb2RlYyhlbmNvZGluZywgZmxhZ3MpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KGVuY29kaW5nVG9Db2RlYywgY29kZWMsIGNvZGVjKTsKLSAgICByZXR1cm4gY29kZWM7Ci19Ci0K
LVFUZXh0Q29kZWMqIFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZShjb25zdCBjaGFyKiBuYW1lKQot
ewotICAgIEtXUUVuY29kaW5nRmxhZ3MgZmxhZ3M7Ci0gICAgQ0ZTdHJpbmdFbmNvZGluZyBlbmNv
ZGluZyA9IEtXUUNGU3RyaW5nRW5jb2RpbmdGcm9tSUFOQUNoYXJzZXROYW1lKG5hbWUsICZmbGFn
cyk7Ci0gICAgcmV0dXJuIGNvZGVjRm9yQ0ZTdHJpbmdFbmNvZGluZyhlbmNvZGluZywgZmxhZ3Mp
OwotfQotCi1RVGV4dENvZGVjKiBRVGV4dENvZGVjOjp1dGY4Q29kZWMoKQotewotICAgIHJldHVy
biBjb2RlY0ZvckNGU3RyaW5nRW5jb2Rpbmcoa0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBOb0VuY29k
aW5nRmxhZ3MpOwotfQotCi1RVGV4dENvZGVjKiBRVGV4dENvZGVjOjpjb2RlY0Zvck5hbWVFaWdo
dEJpdE9ubHkoY29uc3QgY2hhciogbmFtZSkKLXsKLSAgICBLV1FFbmNvZGluZ0ZsYWdzIGZsYWdz
OwotICAgIENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcgPSBLV1FDRlN0cmluZ0VuY29kaW5nRnJv
bUlBTkFDaGFyc2V0TmFtZShuYW1lLCAmZmxhZ3MpOwotICAgIHN3aXRjaCAoZW5jb2RpbmcpIHsK
LSAgICAgICAgY2FzZSBrQ0ZTdHJpbmdFbmNvZGluZ1VuaWNvZGU6Ci0gICAgICAgICAgICBlbmNv
ZGluZyA9IGtDRlN0cmluZ0VuY29kaW5nVVRGODsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICByZXR1cm4gY29kZWNGb3JDRlN0cmluZ0VuY29kaW5nKGVuY29kaW5nLCBmbGFncyk7Ci19
Ci0KLVFUZXh0Q29kZWMqIFFUZXh0Q29kZWM6OmNvZGVjRm9yTG9jYWxlKCkKLXsKLSAgICByZXR1
cm4gY29kZWNGb3JDRlN0cmluZ0VuY29kaW5nKENGU3RyaW5nR2V0U3lzdGVtRW5jb2RpbmcoKSwg
Tm9FbmNvZGluZ0ZsYWdzKTsKLX0KLQotY29uc3QgY2hhciogUVRleHRDb2RlYzo6bmFtZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIEtXUUNGU3RyaW5nRW5jb2RpbmdUb0lBTkFDaGFyc2V0TmFtZShf
ZW5jb2RpbmcpOwotfQotCi1RVGV4dERlY29kZXIqIFFUZXh0Q29kZWM6Om1ha2VEZWNvZGVyKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbmV3IEtXUVRleHREZWNvZGVyKF9lbmNvZGluZywgX2ZsYWdz
KTsKLX0KLQotaW5saW5lIENGU3RyaW5nRW5jb2RpbmcgZWZmZWN0aXZlRW5jb2RpbmcoQ0ZTdHJp
bmdFbmNvZGluZyBlKQotewotICAgIHN3aXRjaCAoZSkgewotICAgICAgICBjYXNlIGtDRlN0cmlu
Z0VuY29kaW5nSVNPTGF0aW4xOgotICAgICAgICBjYXNlIGtDRlN0cmluZ0VuY29kaW5nQVNDSUk6
Ci0gICAgICAgICAgICBlID0ga0NGU3RyaW5nRW5jb2RpbmdXaW5kb3dzTGF0aW4xOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBlOwotfQotCi1RQ1N0cmluZyBRVGV4dENv
ZGVjOjpmcm9tVW5pY29kZShjb25zdCBRU3RyaW5nICZxY3MsIGJvb2wgYWxsb3dFbnRpdGllcykg
Y29uc3QKLXsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlYWxseSB1c2UgdGhlIHNhbWUgQVBJ
IGluIGJvdGggZGlyZWN0aW9ucy4KLSAgICAvLyBDdXJyZW50bHkgd2UgdXNlIElDVSB0byBkZWNv
ZGUgYW5kIENGU3RyaW5nIHRvIGVuY29kZTsgaXQgd291bGQgYmUgYmV0dGVyIHRvIGVuY29kZSB3
aXRoIElDVSB0b28uCi0gICAgCi0gICAgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyA9IGVmZmVj
dGl2ZUVuY29kaW5nKF9lbmNvZGluZyk7Ci0KLSAgICAvLyBGSVhNRTogU2luY2UgdGhlcmUncyBu
byAiZm9yY2UgQVNDSUkgcmFuZ2UiIG1vZGUgaW4gQ0ZTdHJpbmcsIHdlIGNoYW5nZSB0aGUgYmFj
a3NsYXNoIGludG8gYSB5ZW4gc2lnbi4KLSAgICAvLyBFbmNvZGluZyB3aWxsIGNoYW5nZSB0aGUg
eWVuIHNpZ24gYmFjayBpbnRvIGEgYmFja3NsYXNoLgotICAgIFFTdHJpbmcgY29weSA9IHFjczsK
LSAgICBjb3B5LnJlcGxhY2UoUUNoYXIoJ1xcJyksIGJhY2tzbGFzaEFzQ3VycmVuY3lTeW1ib2wo
KSk7Ci0gICAgQ0ZTdHJpbmdSZWYgY2ZzID0gY29weS5nZXRDRlN0cmluZygpOwotICAgIAotICAg
IENGSW5kZXggc3RhcnRQb3MgPSAwOwotICAgIENGSW5kZXggY2hhcmFjdGVyc0xlZnQgPSBDRlN0
cmluZ0dldExlbmd0aChjZnMpOwotICAgIFFDU3RyaW5nIHJlc3VsdCgxKTsgLy8gZm9yIHRyYWls
bmcgemVybwotCi0gICAgd2hpbGUgKGNoYXJhY3RlcnNMZWZ0ID4gMCkgewotICAgICAgICBDRlJh
bmdlIHJhbmdlID0gQ0ZSYW5nZU1ha2Uoc3RhcnRQb3MsIGNoYXJhY3RlcnNMZWZ0KTsKLSAgICAg
ICAgQ0ZJbmRleCBidWZmZXJMZW5ndGg7Ci0gICAgICAgIENGU3RyaW5nR2V0Qnl0ZXMoY2ZzLCBy
YW5nZSwgZW5jb2RpbmcsIGFsbG93RW50aXRpZXMgPyAwIDogJz8nLCBmYWxzZSwgTlVMTCwgMHg3
RkZGRkZGRiwgJmJ1ZmZlckxlbmd0aCk7Ci0gICAgICAgIAotICAgICAgICBRQ1N0cmluZyBjaHVu
ayhidWZmZXJMZW5ndGggKyAxKTsKLSAgICAgICAgQ0ZJbmRleCBjaGFyYWN0ZXJzQ29udmVydGVk
ID0gQ0ZTdHJpbmdHZXRCeXRlcyhjZnMsIHJhbmdlLCBlbmNvZGluZywgYWxsb3dFbnRpdGllcyA/
IDAgOiAnPycsIGZhbHNlLCByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIgKj4oY2h1bmsu
ZGF0YSgpKSwgYnVmZmVyTGVuZ3RoLCAmYnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgY2h1bmtbYnVm
ZmVyTGVuZ3RoXSA9IDA7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoY2h1bmspOwotICAgICAgICAK
LSAgICAgICAgaWYgKGNoYXJhY3RlcnNDb252ZXJ0ZWQgIT0gY2hhcmFjdGVyc0xlZnQpIHsKLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBzdXBwb3J0IHN1cnJvZ2F0ZSBwYWlycwotICAgICAgICAgICAg
VW5pQ2hhciBiYWRDaGFyID0gQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJBdEluZGV4KGNmcywgc3RhcnRQ
b3MgKyBjaGFyYWN0ZXJzQ29udmVydGVkKTsKLSAgICAgICAgICAgIGNoYXIgYnVmWzE2XTsKLSAg
ICAgICAgICAgIHNwcmludGYoYnVmLCAiJiMldTsiLCBiYWRDaGFyKTsKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoYnVmKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgKytjaGFyYWN0ZXJz
Q29udmVydGVkOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGFydFBvcyArPSBjaGFy
YWN0ZXJzQ29udmVydGVkOwotICAgICAgICBjaGFyYWN0ZXJzTGVmdCAtPSBjaGFyYWN0ZXJzQ29u
dmVydGVkOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1RU3RyaW5nIFFUZXh0Q29k
ZWM6OnRvVW5pY29kZShjb25zdCBjaGFyICpjaHMsIGludCBsZW4pIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIEtXUVRleHREZWNvZGVyKF9lbmNvZGluZywgX2ZsYWdzKS50b1VuaWNvZGUoY2hzLCBsZW4s
IHRydWUpOwotfQotCi1RU3RyaW5nIFFUZXh0Q29kZWM6OnRvVW5pY29kZShjb25zdCBCeXRlQXJy
YXkgJnFiYSwgaW50IGxlbikgY29uc3QKLXsKLSAgICByZXR1cm4gS1dRVGV4dERlY29kZXIoX2Vu
Y29kaW5nLCBfZmxhZ3MpLnRvVW5pY29kZShxYmEsIGxlbiwgdHJ1ZSk7Ci19Ci0KLVFDaGFyIFFU
ZXh0Q29kZWM6OmJhY2tzbGFzaEFzQ3VycmVuY3lTeW1ib2woKSBjb25zdAorVGV4dEVuY29kaW5n
OjpUZXh0RW5jb2RpbmcoY29uc3QgY2hhciogbmFtZSwgYm9vbCBlaWdodEJpdE9ubHkpCiB7Ci0g
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBwdXQgdGhpcyBpbmZvcm1hdGlvbiBpbnRvIEtXUUNoYXJz
ZXREYXRhIGluc3RlYWQgb2YgaGF2aW5nIGEgc3dpdGNoIGhlcmUuCi0gICAgc3dpdGNoIChfZW5j
b2RpbmcpIHsKLSAgICAgICAgY2FzZSBrQ0ZTdHJpbmdFbmNvZGluZ1NoaWZ0SklTX1gwMjEzXzAw
OgotICAgICAgICBjYXNlIGtDRlN0cmluZ0VuY29kaW5nRVVDX0pQOgotICAgICAgICAgICAgcmV0
dXJuIDB4MDBBNTsgLy8geWVuIHNpZ24KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiAnXFwnOwotICAgIH0KKyAgICBtX2VuY29kaW5nSUQgPSB0ZXh0RW5jb2RpbmdJREZyb21D
aGFyc2V0TmFtZShuYW1lLCAmbV9mbGFncyk7CisgICAgaWYgKGVpZ2h0Qml0T25seSAmJiBtX2Vu
Y29kaW5nSUQgPT0gVVRGMTZFbmNvZGluZykKKyAgICAgICAgbV9lbmNvZGluZ0lEID0gVVRGOEVu
Y29kaW5nOwogfQogCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgUVRleHRDb2RlYyAmYSwgY29uc3Qg
UVRleHRDb2RlYyAmYikKK2NvbnN0IGNoYXIqIFRleHRFbmNvZGluZzo6bmFtZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGEuX2VuY29kaW5nID09IGIuX2VuY29kaW5nICYmIGEuX2ZsYWdzID09IGIu
X2ZsYWdzOworICAgIHJldHVybiBjaGFyc2V0TmFtZUZyb21UZXh0RW5jb2RpbmdJRChtX2VuY29k
aW5nSUQpOwogfQogCi0vLyBHb2xkZW4gcmF0aW8gLSBhcmJpdHJhcnkgc3RhcnQgdmFsdWUgdG8g
YXZvaWQgbWFwcGluZyBhbGwgMCdzIHRvIGFsbCAwJ3MKLS8vIG9yIGFueXRoaW5nIGxpa2UgdGhh
dC4KLWNvbnN0IHVuc2lnbmVkIFBISSA9IDB4OWUzNzc5YjlVOwotCi0vLyBQYXVsIEhzaWVoJ3Mg
U3VwZXJGYXN0SGFzaAotLy8gaHR0cDovL3d3dy5hemlsbGlvbm1vbmtleXMuY29tL3FlZC9oYXNo
Lmh0bWwKLS8vIEFkYXB0ZWQgYXNzdW1pbmcgX2VuY29kaW5nIGlzIDMyIGJpdHMgYW5kIF9mbGFn
cyBpcyBhdCBtb3N0IDE2IGJpdHMKLXVuc2lnbmVkIFFUZXh0Q29kZWM6Omhhc2goKSBjb25zdAor
aW5saW5lIFRleHRFbmNvZGluZ0lEIGVmZmVjdGl2ZUVuY29kaW5nKFRleHRFbmNvZGluZ0lEIGVu
Y29kaW5nKQogewotICAgIHVpbnQzMl90IGhhc2ggPSBQSEk7Ci0gICAgdWludDMyX3QgdG1wOwot
ICAgIAotICAgIGhhc2ggKz0gX2VuY29kaW5nICYgMHhmZmZmOwotICAgIHRtcCA9ICgoX2VuY29k
aW5nID4+IDE2KSA8PCAxMSkgXiBoYXNoOwotICAgIGhhc2ggPSAoaGFzaCA8PCAxNikgXiB0bXA7
Ci0gICAgaGFzaCArPSBoYXNoID4+IDExOwotICAgIAotICAgIGhhc2ggKz0gX2ZsYWdzICYgMHhm
ZmZmOwotICAgIGhhc2ggXj0gaGFzaCA8PCAxMTsKLSAgICBoYXNoICs9IGhhc2ggPj4gMTc7Ci0K
LSAgICAvLyBGb3JjZSAiYXZhbGFuY2hpbmciIG9mIGZpbmFsIDEyNyBiaXRzCi0gICAgaGFzaCBe
PSBoYXNoIDw8IDM7Ci0gICAgaGFzaCArPSBoYXNoID4+IDU7Ci0gICAgaGFzaCBePSBoYXNoIDw8
IDI7Ci0gICAgaGFzaCArPSBoYXNoID4+IDE1OwotICAgIGhhc2ggXj0gaGFzaCA8PCAxMDsKLQot
ICAgIHJldHVybiBoYXNoOwotfQotCi1zdGF0aWMgQm9vbGVhbiBRVGV4dENvZGVjc0VxdWFsKGNv
bnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCi17Ci0gICAgcmV0dXJuICpzdGF0aWNfY2FzdDxj
b25zdCBRVGV4dENvZGVjICo+KGEpID09ICpzdGF0aWNfY2FzdDxjb25zdCBRVGV4dENvZGVjICo+
KGIpOwotfQotCi1zdGF0aWMgQ0ZIYXNoQ29kZSBRVGV4dENvZGVjSGFzaChjb25zdCB2b2lkICp2
YWx1ZSkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUVRleHRDb2RlYyAqPih2YWx1
ZSktPmhhc2goKTsKKyAgICBpZiAoZW5jb2RpbmcgPT0gTGF0aW4xRW5jb2RpbmcgfHwgZW5jb2Rp
bmcgPT0gQVNDSUlFbmNvZGluZykKKyAgICAgICAgcmV0dXJuIFdpbkxhdGluMUVuY29kaW5nOwor
ICAgIHJldHVybiBlbmNvZGluZzsKIH0KIAotLy8gPT09PT09PT09PT09PT09PQotCi1RVGV4dERl
Y29kZXI6On5RVGV4dERlY29kZXIoKQorUUNoYXIgVGV4dEVuY29kaW5nOjpiYWNrc2xhc2hBc0N1
cnJlbmN5U3ltYm9sKCkgY29uc3QKIHsKKyAgICBpZiAobV9mbGFncyAmIEJhY2tzbGFzaElzWWVu
KQorICAgICAgICByZXR1cm4gMHgwMEE1OyAvLyB5ZW4gc2lnbgorIAorICAgIHJldHVybiAnXFwn
OwogfQogCi0vLyA9PT09PT09PT09PT09PT09Ci0KLUtXUVRleHREZWNvZGVyOjpLV1FUZXh0RGVj
b2RlcihDRlN0cmluZ0VuY29kaW5nIGUsIEtXUUVuY29kaW5nRmxhZ3MgZikKLSAgICA6IF9lbmNv
ZGluZyhlKSwgX2xpdHRsZUVuZGlhbihmICYgOjpMaXR0bGVFbmRpYW4pLCBfYXRTdGFydCh0cnVl
KSwgX2Vycm9yKGZhbHNlKQotICAgICwgX251bUJ1ZmZlcmVkQnl0ZXMoMCksIF9jb252ZXJ0ZXJJ
Q1UoMCkKK1FTdHJpbmcgVGV4dEVuY29kaW5nOjp0b1VuaWNvZGUoY29uc3QgY2hhciAqY2hzLCBp
bnQgbGVuKSBjb25zdAogeworICAgIHJldHVybiBTdHJlYW1pbmdUZXh0RGVjb2RlcigqdGhpcyku
dG9Vbmljb2RlKGNocywgbGVuLCB0cnVlKTsKIH0KIAotS1dRVGV4dERlY29kZXI6On5LV1FUZXh0
RGVjb2RlcigpCitRU3RyaW5nIFRleHRFbmNvZGluZzo6dG9Vbmljb2RlKGNvbnN0IEJ5dGVBcnJh
eSAmcWJhLCBpbnQgbGVuKSBjb25zdAogewotICAgIGlmIChfY29udmVydGVySUNVKSB7Ci0gICAg
ICAgIGlmIChfY2FjaGVkQ29udmVydGVySUNVICE9IDApIHsKLSAgICAgICAgICAgIHVjbnZfY2xv
c2UoX2NhY2hlZENvbnZlcnRlcklDVSk7Ci0gICAgICAgIH0KLSAgICAgICAgX2NhY2hlZENvbnZl
cnRlcklDVSA9IF9jb252ZXJ0ZXJJQ1U7Ci0gICAgICAgIF9jYWNoZWRDb252ZXJ0ZXJFbmNvZGlu
ZyA9IF9lbmNvZGluZzsKLSAgICB9CisgICAgcmV0dXJuIFN0cmVhbWluZ1RleHREZWNvZGVyKCp0
aGlzKS50b1VuaWNvZGUocWJhLCBsZW4sIHRydWUpOwogfQogCi1RU3RyaW5nIEtXUVRleHREZWNv
ZGVyOjpjb252ZXJ0TGF0aW4xKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMsIGludCBsZW5ndGgpCi17
Ci0gICAgQVNTRVJUKF9udW1CdWZmZXJlZEJ5dGVzID09IDApOwotCi0gICAgcmV0dXJuIFFTdHJp
bmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KHMpLCBsZW5ndGgpOwotfQotCi1RU3Ry
aW5nIEtXUVRleHREZWNvZGVyOjpjb252ZXJ0VVRGMTYoY29uc3QgdW5zaWduZWQgY2hhciAqcywg
aW50IGxlbmd0aCkKLXsKLSAgICBBU1NFUlQoX251bUJ1ZmZlcmVkQnl0ZXMgPT0gMCB8fCBfbnVt
QnVmZmVyZWRCeXRlcyA9PSAxKTsKLQotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAgPSBzOwot
ICAgIHVuc2lnbmVkIGxlbiA9IGxlbmd0aDsKLSAgICAKLSAgICBRU3RyaW5nIHJlc3VsdCgiIik7
Ci0gICAgCi0gICAgcmVzdWx0LnJlc2VydmUobGVuZ3RoIC8gMik7Ci0KLSAgICBpZiAoX251bUJ1
ZmZlcmVkQnl0ZXMgIT0gMCAmJiBsZW4gIT0gMCkgewotICAgICAgICBBU1NFUlQoX251bUJ1ZmZl
cmVkQnl0ZXMgPT0gMSk7Ci0gICAgICAgIFVuaUNoYXIgYzsKLSAgICAgICAgaWYgKF9saXR0bGVF
bmRpYW4pIHsKLSAgICAgICAgICAgIGMgPSBfYnVmZmVyZWRCeXRlc1swXSB8IChwWzBdIDw8IDgp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYyA9IChfYnVmZmVyZWRCeXRlc1swXSA8
PCA4KSB8IHBbMF07Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGMpIHsKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxRQ2hhciAqPigmYyksIDEpOwotICAgICAgICB9
Ci0gICAgICAgIF9udW1CdWZmZXJlZEJ5dGVzID0gMDsKLSAgICAgICAgcCArPSAxOwotICAgICAg
ICBsZW4gLT0gMTsKLSAgICB9Ci0gICAgCi0gICAgd2hpbGUgKGxlbiA+IDEpIHsKLSAgICAgICAg
VW5pQ2hhciBidWZmZXJbQ29udmVyc2lvbkJ1ZmZlclNpemVdOwotICAgICAgICBpbnQgcnVuTGVu
Z3RoID0gTUlOKGxlbiAvIDIsIHNpemVvZihidWZmZXIpIC8gc2l6ZW9mKGJ1ZmZlclswXSkpOwot
ICAgICAgICBpbnQgYnVmZmVyTGVuZ3RoID0gMDsKLSAgICAgICAgaWYgKF9saXR0bGVFbmRpYW4p
IHsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcnVuTGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgICAgICBVbmlDaGFyIGMgPSBwWzBdIHwgKHBbMV0gPDwgOCk7Ci0gICAgICAgICAg
ICAgICAgcCArPSAyOwotICAgICAgICAgICAgICAgIGlmIChjICYmIGMgIT0gQk9NKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGJ1ZmZlcltidWZmZXJMZW5ndGgrK10gPSBjOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgcnVuTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBVbmlDaGFy
IGMgPSAocFswXSA8PCA4KSB8IHBbMV07Ci0gICAgICAgICAgICAgICAgcCArPSAyOwotICAgICAg
ICAgICAgICAgIGlmIChjICYmIGMgIT0gQk9NKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZl
cltidWZmZXJMZW5ndGgrK10gPSBjOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICByZXN1bHQuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8UUNoYXIg
Kj4oYnVmZmVyKSwgYnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgbGVuIC09IHJ1bkxlbmd0aCAqIDI7
Ci0gICAgfQotICAgIAotICAgIGlmIChsZW4pIHsKLSAgICAgICAgQVNTRVJUKF9udW1CdWZmZXJl
ZEJ5dGVzID09IDApOwotICAgICAgICBfbnVtQnVmZmVyZWRCeXRlcyA9IDE7Ci0gICAgICAgIF9i
dWZmZXJlZEJ5dGVzWzBdID0gcFswXTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotVUVycm9yQ29kZSBLV1FUZXh0RGVjb2Rlcjo6Y3JlYXRlSUNVQ29udmVydGVyKCkKLXsK
LSAgICBjb25zdCBDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nID0gZWZmZWN0aXZlRW5jb2Rpbmco
X2VuY29kaW5nKTsKLSAgICBjb25zdCBjaGFyICplbmNvZGluZ05hbWUgPSBLV1FDRlN0cmluZ0Vu
Y29kaW5nVG9JQU5BQ2hhcnNldE5hbWUoZW5jb2RpbmcpOwotCi0gICAgYm9vbCBjYWNoZWRFbmNv
ZGluZ0VxdWFsID0gX2NhY2hlZENvbnZlcnRlckVuY29kaW5nID09IGVuY29kaW5nOwotICAgIF9j
YWNoZWRDb252ZXJ0ZXJFbmNvZGluZyA9IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElkOwotCi0g
ICAgaWYgKGNhY2hlZEVuY29kaW5nRXF1YWwgJiYgX2NhY2hlZENvbnZlcnRlcklDVSkgewotICAg
ICAgICBfY29udmVydGVySUNVID0gX2NhY2hlZENvbnZlcnRlcklDVTsKLSAgICAgICAgX2NhY2hl
ZENvbnZlcnRlcklDVSA9IDA7Ci0gICAgICAgIExPRyhUZXh0Q29udmVyc2lvbiwgInVzaW5nIGNh
Y2hlZCBJQ1UgY29udmVydGVyIGZvciBlbmNvZGluZzogJXMiLCBlbmNvZGluZ05hbWUpOwotICAg
IH0gZWxzZSB7ICAgIAotICAgICAgICBVRXJyb3JDb2RlIGVyciA9IFVfWkVST19FUlJPUjsKLSAg
ICAgICAgQVNTRVJUKCFfY29udmVydGVySUNVKTsKLSAgICAgICAgTE9HKFRleHRDb252ZXJzaW9u
LCAiY3JlYXRpbmcgSUNVIGNvbnZlcnRlciBmb3IgZW5jb2Rpbmc6ICVzIiwgZW5jb2RpbmdOYW1l
KTsKLSAgICAgICAgX2NvbnZlcnRlcklDVSA9IHVjbnZfb3BlbihlbmNvZGluZ05hbWUsICZlcnIp
OwotICAgICAgICBpZiAoZXJyID09IFVfQU1CSUdVT1VTX0FMSUFTX1dBUk5JTkcpIHsKLSAgICAg
ICAgICAgIExPR19FUlJPUigiSUNVIGFtYmlndW91cyBhbGlhcyB3YXJuaW5nIGZvciBlbmNvZGlu
ZzogJXMiLCBlbmNvZGluZ05hbWUpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghX2NvbnZlcnRl
cklDVSkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJ0aGUgSUNVIENvbnZlcnRlciB3b24ndCBj
b252ZXJ0IGZyb20gdGV4dCBlbmNvZGluZyAweCVYLCBlcnJvciAlZCIsIGVuY29kaW5nLCBlcnIp
OwotICAgICAgICAgICAgcmV0dXJuIGVycjsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBy
ZXR1cm4gVV9aRVJPX0VSUk9SOwotfQotCi0vLyBXZSBzdHJpcCByZXBsYWNlbWVudCBjaGFyYWN0
ZXJzIGJlY2F1c2UgdGhlIElDVSBjb252ZXJ0ZXIgZm9yIFVURi04IGNvbnZlcnRzCi0vLyBpbnZh
bGlkIHNlcXVlbmNlcyBpbnRvIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMsIGJ1dCBvdGhlciBicm93
c2VycyBkaXNjYXJkIHRoZW0uCi0vLyBXZSBzdHJpcCBCT00gY2hhcmFjdGVycyBiZWNhdXNlIHRo
ZXkgY2FuIHNob3cgdXAgYm90aCBhdCB0aGUgc3RhcnQgb2YgY29udGVudAotLy8gYW5kIGluc2lk
ZSBjb250ZW50LCBhbmQgd2UgbmV2ZXIgd2FudCB0aGVtIHRvIGVuZCB1cCBpbiB0aGUgZGVjb2Rl
ZCB0ZXh0Lgotc3RhdGljIGlubGluZSBib29sIHVud2FudGVkKFVuaUNoYXIgYykKLXsKLSAgICBz
d2l0Y2ggKGMpIHsKLSAgICAgICAgY2FzZSByZXBsYWNlbWVudENoYXJhY3RlcjoKLSAgICAgICAg
Y2FzZSBCT006Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLXZvaWQgS1dRVGV4dERlY29kZXI6
OmFwcGVuZE9taXR0aW5nVW53YW50ZWQoUVN0cmluZyAmcywgY29uc3QgVW5pQ2hhciAqY2hhcmFj
dGVycywgaW50IGJ5dGVDb3VudCkKLXsKLSAgICBBU1NFUlQoYnl0ZUNvdW50ICUgc2l6ZW9mKFVu
aUNoYXIpID09IDApOwotICAgIGludCBzdGFydCA9IDA7Ci0gICAgaW50IGNoYXJhY3RlckNvdW50
ID0gYnl0ZUNvdW50IC8gc2l6ZW9mKFVuaUNoYXIpOwotICAgIGZvciAoaW50IGkgPSAwOyBpICE9
IGNoYXJhY3RlckNvdW50OyArK2kpIHsKLSAgICAgICAgaWYgKHVud2FudGVkKGNoYXJhY3RlcnNb
aV0pKSB7Ci0gICAgICAgICAgICBpZiAoc3RhcnQgIT0gaSkgewotICAgICAgICAgICAgICAgIHMu
YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgUUNoYXIgKj4oJmNoYXJhY3RlcnNbc3RhcnRd
KSwgaSAtIHN0YXJ0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0YXJ0ID0gaSArIDE7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHN0YXJ0ICE9IGNoYXJhY3RlckNvdW50KSB7Ci0g
ICAgICAgIHMuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgUUNoYXIgKj4oJmNoYXJhY3Rl
cnNbc3RhcnRdKSwgY2hhcmFjdGVyQ291bnQgLSBzdGFydCk7Ci0gICAgfQotfQotCi1RU3RyaW5n
IEtXUVRleHREZWNvZGVyOjpjb252ZXJ0VXNpbmdJQ1UoY29uc3QgdW5zaWduZWQgY2hhciAqY2hz
LCBpbnQgbGVuLCBib29sIGZsdXNoKQotewotICAgIC8vIEdldCBhIGNvbnZlcnRlciBmb3IgdGhl
IHBhc3NlZC1pbiBlbmNvZGluZy4KLSAgICBpZiAoIV9jb252ZXJ0ZXJJQ1UgJiYgVV9GQUlMVVJF
KGNyZWF0ZUlDVUNvbnZlcnRlcigpKSkgewotICAgICAgICByZXR1cm4gUVN0cmluZygpOwotICAg
IH0KLSAgICBBU1NFUlQoX2NvbnZlcnRlcklDVSk7Ci0KLSAgICBRU3RyaW5nIHJlc3VsdCgiIik7
Ci0gICAgcmVzdWx0LnJlc2VydmUobGVuKTsKLQotICAgIFVDaGFyIGJ1ZmZlcltDb252ZXJzaW9u
QnVmZmVyU2l6ZV07Ci0gICAgY29uc3QgY2hhciAqc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyICo+KGNocyk7Ci0gICAgY29uc3QgY2hhciAqc291cmNlTGltaXQgPSBzb3VyY2Ug
KyBsZW47Ci0gICAgaW50MzJfdCAqb2Zmc2V0cyA9IE5VTEw7Ci0gICAgVUVycm9yQ29kZSBlcnI7
Ci0gICAgCi0gICAgZG8gewotICAgICAgICBVQ2hhciAqdGFyZ2V0ID0gYnVmZmVyOwotICAgICAg
ICBjb25zdCBVQ2hhciAqdGFyZ2V0TGltaXQgPSB0YXJnZXQgKyBDb252ZXJzaW9uQnVmZmVyU2l6
ZTsKLSAgICAgICAgZXJyID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1Y252X3RvVW5pY29kZShf
Y29udmVydGVySUNVLCAmdGFyZ2V0LCB0YXJnZXRMaW1pdCwgJnNvdXJjZSwgc291cmNlTGltaXQs
IG9mZnNldHMsIGZsdXNoLCAmZXJyKTsKLSAgICAgICAgaW50IGNvdW50ID0gdGFyZ2V0IC0gYnVm
ZmVyOwotICAgICAgICBhcHBlbmRPbWl0dGluZ1Vud2FudGVkKHJlc3VsdCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVbmlDaGFyICo+KGJ1ZmZlciksIGNvdW50ICogc2l6ZW9mKFVuaUNoYXIpKTsK
LSAgICB9IHdoaWxlIChlcnIgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpOwotCi0gICAgaWYg
KFVfRkFJTFVSRShlcnIpKSB7Ci0gICAgICAgIC8vIGZsdXNoIHRoZSBjb252ZXJ0ZXIgc28gaXQg
Y2FuIGJlIHJldXNlZCwgYW5kIG5vdCBiZSBib3RoZXJlZCBieSB0aGlzIGVycm9yLgotICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICBVQ2hhciAqdGFyZ2V0ID0gYnVmZmVyOwotICAgICAgICAgICAg
Y29uc3QgVUNoYXIgKnRhcmdldExpbWl0ID0gdGFyZ2V0ICsgQ29udmVyc2lvbkJ1ZmZlclNpemU7
Ci0gICAgICAgICAgICBlcnIgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgICAgICB1Y252X3RvVW5p
Y29kZShfY29udmVydGVySUNVLCAmdGFyZ2V0LCB0YXJnZXRMaW1pdCwgJnNvdXJjZSwgc291cmNl
TGltaXQsIG9mZnNldHMsIHRydWUsICZlcnIpOwotICAgICAgICB9IHdoaWxlIChzb3VyY2UgPCBz
b3VyY2VMaW1pdCk7Ci0gICAgICAgIExPR19FUlJPUigiSUNVIGNvbnZlcnNpb24gZXJyb3IiKTsK
LSAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotUVN0cmluZyBLV1FUZXh0RGVjb2Rlcjo6Y29udmVydChjb25zdCB1bnNpZ25lZCBj
aGFyICpjaHMsIGludCBsZW4sIGJvb2wgZmx1c2gpCi17Ci0gICAgLy8jZGVmaW5lIFBBUlRJQUxf
Q0hBUkFDVEVSX0hBTkRMSU5HX1RFU1RfQ0hVTktfU0laRSAxMDAwCi0KLSAgICBzd2l0Y2ggKF9l
bmNvZGluZykgewotICAgIGNhc2Uga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjE6Ci0gICAgY2Fz
ZSBrQ0ZTdHJpbmdFbmNvZGluZ1dpbmRvd3NMYXRpbjE6Ci0gICAgICAgIHJldHVybiBjb252ZXJ0
TGF0aW4xKGNocywgbGVuKTsKLQotICAgIGNhc2Uga0NGU3RyaW5nRW5jb2RpbmdVbmljb2RlOgot
ICAgICAgICByZXR1cm4gY29udmVydFVURjE2KGNocywgbGVuKTsKLQotICAgIGRlZmF1bHQ6Ci0j
aWYgUEFSVElBTF9DSEFSQUNURVJfSEFORExJTkdfVEVTVF9DSFVOS19TSVpFCi0gICAgICAgIFFT
dHJpbmcgcmVzdWx0OwotICAgICAgICBpbnQgY2h1bmtTaXplOwotICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSAhPSBsZW47IGkgKz0gY2h1bmtTaXplKSB7Ci0gICAgICAgICAgICBjaHVua1NpemUg
PSBsZW4gLSBpOwotICAgICAgICAgICAgaWYgKGNodW5rU2l6ZSA+IFBBUlRJQUxfQ0hBUkFDVEVS
X0hBTkRMSU5HX1RFU1RfQ0hVTktfU0laRSkgewotICAgICAgICAgICAgICAgIGNodW5rU2l6ZSA9
IFBBUlRJQUxfQ0hBUkFDVEVSX0hBTkRMSU5HX1RFU1RfQ0hVTktfU0laRTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJlc3VsdCArPSBjb252ZXJ0VXNpbmdJQ1UoY2hzICsgaSwgY2h1bmtT
aXplLCBmbHVzaCAmJiAoaSArIGNodW5rU2l6ZSA9PSBsZW4pKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRVc2luZ0lDVShj
aHMsIGxlbiwgZmx1c2gpOwotI2VuZGlmCi0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBRU3RyaW5nKCk7Ci19Ci0KLVFTdHJpbmcgS1dRVGV4dERlY29kZXI6OnRv
VW5pY29kZShjb25zdCBjaGFyICpjaHMsIGludCBsZW4sIGJvb2wgZmx1c2gpCi17Ci0gICAgQVNT
RVJUX0FSRyhsZW4sIGxlbiA+PSAwKTsKLSAgICAKLSAgICBpZiAoX2Vycm9yIHx8ICFjaHMpIHsK
LSAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKLSAgICB9Ci0gICAgaWYgKGxlbiA8PSAwICYmICFm
bHVzaCkgewotICAgICAgICByZXR1cm4gIiI7Ci0gICAgfQotCi0gICAgLy8gSGFuZGxlIG5vcm1h
bCBjYXNlLgotICAgIGlmICghX2F0U3RhcnQpIHsKLSAgICAgICAgcmV0dXJuIGNvbnZlcnQoY2hz
LCBsZW4sIGZsdXNoKTsKLSAgICB9Ci0KLSAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgZm91bmQg
YSBCT00uCi0gICAgaW50IG51bUJ1ZmZlcmVkQnl0ZXMgPSBfbnVtQnVmZmVyZWRCeXRlczsKLSAg
ICBpbnQgYnVmMUxlbiA9IG51bUJ1ZmZlcmVkQnl0ZXM7Ci0gICAgaW50IGJ1ZjJMZW4gPSBsZW47
Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmMSA9IF9idWZmZXJlZEJ5dGVzOwotICAgIGNv
bnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZjIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIgKj4oY2hzKTsKLSAgICB1bnNpZ25lZCBjaGFyIGMxID0gYnVmMUxlbiA/ICgtLWJ1ZjFM
ZW4sICpidWYxKyspIDogYnVmMkxlbiA/ICgtLWJ1ZjJMZW4sICpidWYyKyspIDogMDsKLSAgICB1
bnNpZ25lZCBjaGFyIGMyID0gYnVmMUxlbiA/ICgtLWJ1ZjFMZW4sICpidWYxKyspIDogYnVmMkxl
biA/ICgtLWJ1ZjJMZW4sICpidWYyKyspIDogMDsKLSAgICB1bnNpZ25lZCBjaGFyIGMzID0gYnVm
MUxlbiA/ICgtLWJ1ZjFMZW4sICpidWYxKyspIDogYnVmMkxlbiA/ICgtLWJ1ZjJMZW4sICpidWYy
KyspIDogMDsKLSAgICBpbnQgQk9NTGVuZ3RoID0gMDsKLSAgICBpZiAoYzEgPT0gMHhGRiAmJiBj
MiA9PSAweEZFKSB7Ci0gICAgICAgIF9lbmNvZGluZyA9IGtDRlN0cmluZ0VuY29kaW5nVW5pY29k
ZTsKLSAgICAgICAgX2xpdHRsZUVuZGlhbiA9IHRydWU7Ci0gICAgICAgIEJPTUxlbmd0aCA9IDI7
Ci0gICAgfSBlbHNlIGlmIChjMSA9PSAweEZFICYmIGMyID09IDB4RkYpIHsKLSAgICAgICAgX2Vu
Y29kaW5nID0ga0NGU3RyaW5nRW5jb2RpbmdVbmljb2RlOwotICAgICAgICBfbGl0dGxlRW5kaWFu
ID0gZmFsc2U7Ci0gICAgICAgIEJPTUxlbmd0aCA9IDI7Ci0gICAgfSBlbHNlIGlmIChjMSA9PSAw
eEVGICYmIGMyID09IDB4QkIgJiYgYzMgPT0gMHhCRikgewotICAgICAgICBfZW5jb2RpbmcgPSBr
Q0ZTdHJpbmdFbmNvZGluZ1VURjg7Ci0gICAgICAgIEJPTUxlbmd0aCA9IDM7Ci0gICAgfQotCi0g
ICAgLy8gSGFuZGxlIGNhc2Ugd2hlcmUgd2UgZm91bmQgYSBCT00uCi0gICAgaWYgKEJPTUxlbmd0
aCAhPSAwKSB7Ci0gICAgICAgIEFTU0VSVChudW1CdWZmZXJlZEJ5dGVzICsgbGVuID49IEJPTUxl
bmd0aCk7Ci0gICAgICAgIGludCBza2lwID0gQk9NTGVuZ3RoIC0gbnVtQnVmZmVyZWRCeXRlczsK
LSAgICAgICAgX251bUJ1ZmZlcmVkQnl0ZXMgPSAwOwotICAgICAgICBfYXRTdGFydCA9IGZhbHNl
OwotICAgICAgICByZXR1cm4gbGVuID09IHNraXAgPyBRU3RyaW5nKCIiKSA6IGNvbnZlcnQoY2hz
ICsgc2tpcCwgbGVuIC0gc2tpcCwgZmx1c2gpOwotICAgIH0KLQotICAgIC8vIEhhbmRsZSBjYXNl
IHdoZXJlIHdlIGtub3cgdGhlcmUgaXMgbm8gQk9NIGNvbWluZy4KLSAgICBjb25zdCBpbnQgYnVm
ZmVyU2l6ZSA9IHNpemVvZihfYnVmZmVyZWRCeXRlcyk7Ci0gICAgaWYgKG51bUJ1ZmZlcmVkQnl0
ZXMgKyBsZW4gPiBidWZmZXJTaXplIHx8IGZsdXNoKSB7Ci0gICAgICAgIF9hdFN0YXJ0ID0gZmFs
c2U7Ci0gICAgICAgIGlmIChudW1CdWZmZXJlZEJ5dGVzID09IDApIHsKLSAgICAgICAgICAgIHJl
dHVybiBjb252ZXJ0KGNocywgbGVuLCBmbHVzaCk7Ci0gICAgICAgIH0KLSAgICAgICAgdW5zaWdu
ZWQgY2hhciBidWZmZXJlZEJ5dGVzW3NpemVvZihfYnVmZmVyZWRCeXRlcyldOwotICAgICAgICBt
ZW1jcHkoYnVmZmVyZWRCeXRlcywgX2J1ZmZlcmVkQnl0ZXMsIG51bUJ1ZmZlcmVkQnl0ZXMpOwot
ICAgICAgICBfbnVtQnVmZmVyZWRCeXRlcyA9IDA7Ci0gICAgICAgIHJldHVybiBjb252ZXJ0KGJ1
ZmZlcmVkQnl0ZXMsIG51bUJ1ZmZlcmVkQnl0ZXMsIGZhbHNlKSArIGNvbnZlcnQoY2hzLCBsZW4s
IGZsdXNoKTsKLSAgICB9Ci0KLSAgICAvLyBDb250aW51ZSB0byBsb29rIGZvciB0aGUgQk9NLgot
ICAgIG1lbWNweSgmX2J1ZmZlcmVkQnl0ZXNbbnVtQnVmZmVyZWRCeXRlc10sIGNocywgbGVuKTsK
LSAgICBfbnVtQnVmZmVyZWRCeXRlcyArPSBsZW47Ci0gICAgcmV0dXJuICIiOwotfQorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogcGxhdGZvcm0vS1VSTC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
cGxhdGZvcm0vS1VSTC5jcHAJKHJldmlzaW9uIDEyOTk2KQorKysgcGxhdGZvcm0vS1VSTC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxNCBAQAogCiAjaW5jbHVkZSA8a3htbGNvcmUv
QXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgIktXUVJlZ0V4cC5oIgotI2luY2x1ZGUgIktXUVRleHRD
b2RlYy5oIgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgPGt4bWxjb3JlL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KICNpbmNsdWRlIDx1dGlsaXR5Pgog
CiB1c2luZyBzdGQ6OnBhaXI7CiB1c2luZyBzdGQ6Om1ha2VfcGFpcjsKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiB0eXBlZGVmIGVudW0gewogICAgIC8vIGFscGhhIApAQCAtMTk3LDggKzE5
OCw4IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGNoYXJhY3RlckNsYXMKICAgICAvKiAy
NTIgKi8gQmFkQ2hhciwgLyogMjUzICovIEJhZENoYXIsIC8qIDI1NCAqLyBCYWRDaGFyLCAvKiAy
NTUgKi8gQmFkQ2hhcgogfTsKIAotc3RhdGljIGludCBjb3B5UGF0aFJlbW92aW5nRG90cyhjaGFy
ICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgaW50IHNyY1N0YXJ0LCBpbnQgc3JjRW5kKTsKLXN0YXRp
YyBjaGFyICplbmNvZGVSZWxhdGl2ZVN0cmluZyhjb25zdCBLVVJMICZiYXNlLCBjb25zdCBRU3Ry
aW5nICZyZWwsIGNvbnN0IFFUZXh0Q29kZWMgKmNvZGVjKTsKK3N0YXRpYyBpbnQgY29weVBhdGhS
ZW1vdmluZ0RvdHMoY2hhciogZHN0LCBjb25zdCBjaGFyKiBzcmMsIGludCBzcmNTdGFydCwgaW50
IHNyY0VuZCk7CitzdGF0aWMgY2hhciogZW5jb2RlUmVsYXRpdmVTdHJpbmcoY29uc3QgS1VSTCAm
YmFzZSwgY29uc3QgUVN0cmluZyYgcmVsLCBjb25zdCBXZWJDb3JlOjpUZXh0RW5jb2RpbmcmIGVu
Y29kaW5nKTsKIHN0YXRpYyBRU3RyaW5nIHN1YnN0aXR1dGVCYWNrc2xhc2hlcyhjb25zdCBRU3Ry
aW5nICZzdHJpbmcpOwogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNTY2hlbWVGaXJzdENoYXIodW5z
aWduZWQgY2hhciBjKSB7IHJldHVybiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NdICYgU2NoZW1lRmly
c3RDaGFyOyB9CkBAIC0yNTcsNyArMjU4LDcgQEAgS1VSTDo6S1VSTChjb25zdCBRU3RyaW5nICZ1
cmwpCiAgICAgICAgIHBhcnNlKHVybC5hc2NpaSgpLCAmdXJsKTsKIH0KIAotS1VSTDo6S1VSTChj
b25zdCBLVVJMICZiYXNlLCBjb25zdCBRU3RyaW5nICZyZWxhdGl2ZSwgY29uc3QgUVRleHRDb2Rl
YyAqY29kZWMpCitLVVJMOjpLVVJMKGNvbnN0IEtVUkwgJmJhc2UsIGNvbnN0IFFTdHJpbmcgJnJl
bGF0aXZlLCBjb25zdCBXZWJDb3JlOjpUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQogewogICAgIC8v
IEFsbG93IGF0IGxlc3QgYWJzb2x1dGUgVVJMcyB0byByZXNvbHZlIGFnYWluc3QgYW4gZW1wdHkg
VVJMLgogICAgIGlmICghYmFzZS5tX2lzVmFsaWQgJiYgIWJhc2UuaXNFbXB0eSgpKSB7CkBAIC0y
ODMsNyArMjg0LDcgQEAgS1VSTDo6S1VSTChjb25zdCBLVVJMICZiYXNlLCBjb25zdCBRU3RyaQog
ICAgICAgICBzdHJCdWZmZXIgPSAwOwogICAgICAgICBzdHIgPSByZWwuYXNjaWkoKTsKICAgICB9
IGVsc2UgewotICAgICAgICBzdHJCdWZmZXIgPSBlbmNvZGVSZWxhdGl2ZVN0cmluZyhiYXNlLCBy
ZWwsIGNvZGVjKTsKKyAgICAgICAgc3RyQnVmZmVyID0gZW5jb2RlUmVsYXRpdmVTdHJpbmcoYmFz
ZSwgcmVsLCBlbmNvZGluZyk7CiAgICAgICAgIHN0ciA9IHN0ckJ1ZmZlcjsKICAgICB9CiAgICAg
CkBAIC03MjIsOSArNzIzLDkgQEAgUVN0cmluZyBLVVJMOjpwcmV0dHlVUkwoKSBjb25zdAogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLVFTdHJpbmcgS1VSTDo6ZGVjb2RlX3N0cmluZyhjb25zdCBR
U3RyaW5nICZ1cmxTdHJpbmcsIGNvbnN0IFFUZXh0Q29kZWMgKmNvZGVjKQorUVN0cmluZyBLVVJM
OjpkZWNvZGVfc3RyaW5nKGNvbnN0IFFTdHJpbmcmIHVybFN0cmluZywgY29uc3QgV2ViQ29yZTo6
VGV4dEVuY29kaW5nJiBlbmNvZGluZykKIHsKLSAgICBzdGF0aWMgY29uc3QgUVRleHRDb2RlYyog
VVRGOENvZGVjID0gUVRleHRDb2RlYzo6dXRmOENvZGVjKCk7CisgICAgc3RhdGljIGNvbnN0IFdl
YkNvcmU6OlRleHRFbmNvZGluZyB1dGY4RW5jb2RpbmcoVVRGOEVuY29kaW5nKTsKIAogICAgIFFT
dHJpbmcgcmVzdWx0KCIiKTsKIApAQCAtNzYzLDcgKzc2NCw3IEBAIFFTdHJpbmcgS1VSTDo6ZGVj
b2RlX3N0cmluZyhjb25zdCBRU3RyaW4KICAgICAgICAgfQogCiAgICAgICAgIC8vIERlY29kZSB0
aGUgYnl0ZXMgaW50byBVbmljb2RlIGNoYXJhY3RlcnMuCi0gICAgICAgIFFTdHJpbmcgZGVjb2Rl
ZCA9IChjb2RlYyA/IGNvZGVjIDogVVRGOENvZGVjKS0+dG9Vbmljb2RlKGJ1ZmZlciwgcCAtIGJ1
ZmZlcik7CisgICAgICAgIFFTdHJpbmcgZGVjb2RlZCA9IChlbmNvZGluZy5pc1ZhbGlkKCkgPyBl
bmNvZGluZyA6IHV0ZjhFbmNvZGluZykudG9Vbmljb2RlKGJ1ZmZlciwgcCAtIGJ1ZmZlcik7CiAg
ICAgICAgIGlmIChkZWNvZGVkLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KQEAgLTE0MTMsMjIgKzE0MTQsMjIgQEAgc3RhdGljIFFTdHJpbmcgZW5jb2RlSG9z
dG5hbWVzKGNvbnN0IFFTdAogICAgIHJldHVybiBzOwogfQogCi1zdGF0aWMgY2hhciAqZW5jb2Rl
UmVsYXRpdmVTdHJpbmcoY29uc3QgS1VSTCAmYmFzZSwgY29uc3QgUVN0cmluZyAmcmVsLCBjb25z
dCBRVGV4dENvZGVjICpjb2RlYykKK3N0YXRpYyBjaGFyICplbmNvZGVSZWxhdGl2ZVN0cmluZyhj
b25zdCBLVVJMICZiYXNlLCBjb25zdCBRU3RyaW5nICZyZWwsIGNvbnN0IFdlYkNvcmU6OlRleHRF
bmNvZGluZyYgZW5jb2RpbmcpCiB7CiAgICAgUVN0cmluZyBzID0gZW5jb2RlSG9zdG5hbWVzKHJl
bCk7CiAKICAgICBjaGFyICpzdHJCdWZmZXI7CiAKLSAgICBzdGF0aWMgY29uc3QgUVRleHRDb2Rl
YyogVVRGOENvZGVjID0gUVRleHRDb2RlYzo6dXRmOENvZGVjKCk7CisgICAgc3RhdGljIGNvbnN0
IFdlYkNvcmU6OlRleHRFbmNvZGluZyB1dGY4RW5jb2RpbmcoVVRGOEVuY29kaW5nKTsKIAotICAg
IGNvbnN0IFFUZXh0Q29kZWMgKnBhdGhDb2RlYyA9IGNvZGVjID8gY29kZWMgOiBVVEY4Q29kZWM7
Ci0gICAgY29uc3QgUVRleHRDb2RlYyAqb3RoZXJDb2RlYyA9IHBhdGhDb2RlYzsKKyAgICBXZWJD
b3JlOjpUZXh0RW5jb2RpbmcgcGF0aEVuY29kaW5nID0gZW5jb2RpbmcuaXNWYWxpZCgpID8gZW5j
b2RpbmcgOiB1dGY4RW5jb2Rpbmc7CisgICAgV2ViQ29yZTo6VGV4dEVuY29kaW5nIG90aGVyRW5j
b2RpbmcgPSBwYXRoRW5jb2Rpbmc7CiAgICAgCiAgICAgLy8gQWx3YXlzIHVzZSBVVEYtOCBmb3Ig
bWFpbHRvIFVSTHMgYmVjYXVzZSB0aGF0J3Mgd2hhdCBtYWlsIGFwcGxpY2F0aW9ucyBleHBlY3Qu
CiAgICAgLy8gQWx3YXlzIHVzZSBVVEYtOCBmb3IgcGF0aHMgaW4gZmlsZSBhbmQgaGVscCBVUkxz
LCBzaW5jZSB0aGV5IGFyZSBsb2NhbCBmaWxlc3lzdGVtIHBhdGhzLAogICAgIC8vIGFuZCBoZWxw
IGNvbnRlbnQgaXMgb2Z0ZW4gZGVmaW5lZCB3aXRoIHRoaXMgaW4gbWluZCwgYnV0IHVzZSBuYXRp
dmUgZW5jb2RpbmcgZm9yIHRoZQogICAgIC8vIG5vbi1wYXRoIHBhcnRzIG9mIHRoZSBVUkwuCi0g
ICAgaWYgKHBhdGhDb2RlYyAhPSBVVEY4Q29kZWMpIHsKKyAgICBpZiAocGF0aEVuY29kaW5nICE9
IHV0ZjhFbmNvZGluZykgewogICAgICAgICBRU3RyaW5nIHByb3RvY29sOwogICAgICAgICBpZiAo
cmVsLmxlbmd0aCgpID4gMCAmJiBpc1NjaGVtZUZpcnN0Q2hhcihyZWwuYXQoMCkubGF0aW4xKCkp
KSB7CiAgICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDE7IGkgPCByZWwubGVuZ3RoKCk7IGkrKykg
ewpAQCAtMTQ0NywyNiArMTQ0OCwyNiBAQCBzdGF0aWMgY2hhciAqZW5jb2RlUmVsYXRpdmVTdHJp
bmcoY29uc3QgCiAgICAgICAgIH0KICAgICAgICAgcHJvdG9jb2wgPSBwcm90b2NvbC5sb3dlcigp
OwogICAgICAgICBpZiAocHJvdG9jb2wgPT0gImZpbGUiIHx8IHByb3RvY29sID09ICJoZWxwIikg
ewotICAgICAgICAgICAgcGF0aENvZGVjID0gVVRGOENvZGVjOworICAgICAgICAgICAgcGF0aEVu
Y29kaW5nID0gdXRmOEVuY29kaW5nOwogICAgICAgICB9IGVsc2UgaWYgKHByb3RvY29sID09ICJt
YWlsdG8iKSB7Ci0gICAgICAgICAgICBwYXRoQ29kZWMgPSBVVEY4Q29kZWM7Ci0gICAgICAgICAg
ICBvdGhlckNvZGVjID0gVVRGOENvZGVjOworICAgICAgICAgICAgcGF0aEVuY29kaW5nID0gdXRm
OEVuY29kaW5nOworICAgICAgICAgICAgb3RoZXJFbmNvZGluZyA9IHV0ZjhFbmNvZGluZzsKICAg
ICAgICAgfQogICAgIH0KICAgICAKICAgICBpbnQgcGF0aEVuZCA9IC0xOwotICAgIGlmICgqcGF0
aENvZGVjICE9ICpvdGhlckNvZGVjKSB7CisgICAgaWYgKHBhdGhFbmNvZGluZyAhPSBvdGhlckVu
Y29kaW5nKSB7CiAgICAgICAgIHBhdGhFbmQgPSBzLmZpbmQoUVJlZ0V4cCgiWz8jXSIpKTsKICAg
ICB9CiAgICAgaWYgKHBhdGhFbmQgPT0gLTEpIHsKLSAgICAgICAgUUNTdHJpbmcgZGVjb2RlZCA9
IHBhdGhDb2RlYy0+ZnJvbVVuaWNvZGUocyk7CisgICAgICAgIFFDU3RyaW5nIGRlY29kZWQgPSBw
YXRoRW5jb2RpbmcuZnJvbVVuaWNvZGUocyk7CiAgICAgICAgIGludCBkZWNvZGVkTGVuZ3RoID0g
ZGVjb2RlZC5sZW5ndGgoKTsKICAgICAgICAgc3RyQnVmZmVyID0gc3RhdGljX2Nhc3Q8Y2hhciAq
PihmYXN0TWFsbG9jKGRlY29kZWRMZW5ndGggKyAxKSk7CiAgICAgICAgIG1lbWNweShzdHJCdWZm
ZXIsIGRlY29kZWQsIGRlY29kZWRMZW5ndGgpOwogICAgICAgICBzdHJCdWZmZXJbZGVjb2RlZExl
bmd0aF0gPSAwOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFFDU3RyaW5nIHBhdGhEZWNvZGVkID0g
cGF0aENvZGVjLT5mcm9tVW5pY29kZShzLmxlZnQocGF0aEVuZCkpOwotICAgICAgICBRQ1N0cmlu
ZyBvdGhlckRlY29kZWQgPSBvdGhlckNvZGVjLT5mcm9tVW5pY29kZShzLm1pZChwYXRoRW5kKSk7
CisgICAgICAgIFFDU3RyaW5nIHBhdGhEZWNvZGVkID0gcGF0aEVuY29kaW5nLmZyb21Vbmljb2Rl
KHMubGVmdChwYXRoRW5kKSk7CisgICAgICAgIFFDU3RyaW5nIG90aGVyRGVjb2RlZCA9IG90aGVy
RW5jb2RpbmcuZnJvbVVuaWNvZGUocy5taWQocGF0aEVuZCkpOwogICAgICAgICBpbnQgcGF0aERl
Y29kZWRMZW5ndGggPSBwYXRoRGVjb2RlZC5sZW5ndGgoKTsKICAgICAgICAgaW50IG90aGVyRGVj
b2RlZExlbmd0aCA9IG90aGVyRGVjb2RlZC5sZW5ndGgoKTsKICAgICAgICAgc3RyQnVmZmVyID0g
c3RhdGljX2Nhc3Q8Y2hhciAqPihmYXN0TWFsbG9jKHBhdGhEZWNvZGVkTGVuZ3RoICsgb3RoZXJE
ZWNvZGVkTGVuZ3RoICsgMSkpOwpJbmRleDogcGxhdGZvcm0vU3RyZWFtaW5nVGV4dERlY29kZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9TdHJlYW1pbmdUZXh0RGVjb2Rlci5oCShyZXZpc2lv
biAxMjk3NSkKKysrIHBsYXRmb3JtL1N0cmVhbWluZ1RleHREZWNvZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1
dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw1NSArMjMsNDggQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAogICovCiAKLSNpZm5kZWYgUVRFWFRDT0RFQ19IXwotI2RlZmluZSBRVEVYVENPREVDX0hfCisj
aWZuZGVmIFN0cmVhbWluZ1RleHREZWNvZGVyX0gKKyNkZWZpbmUgU3RyZWFtaW5nVGV4dERlY29k
ZXJfSAogCi0jaW5jbHVkZSAiS1dRQ2hhcnNldHMuaCIKLSNpbmNsdWRlICJRU3RyaW5nLmgiCi0j
aW5jbHVkZSAiS1dRQ1N0cmluZy5oIgotCi1jbGFzcyBRVGV4dERlY29kZXI7Ci0KLWNsYXNzIFFU
ZXh0Q29kZWMgewotcHVibGljOgotICAgIHN0YXRpYyBRVGV4dENvZGVjKiBjb2RlY0Zvck5hbWUo
Y29uc3QgY2hhciAqKTsKLSAgICBzdGF0aWMgUVRleHRDb2RlYyogY29kZWNGb3JOYW1lRWlnaHRC
aXRPbmx5KGNvbnN0IGNoYXIgKik7Ci0gICAgc3RhdGljIFFUZXh0Q29kZWMqIGNvZGVjRm9yTG9j
YWxlKCk7Ci0gICAgc3RhdGljIFFUZXh0Q29kZWMqIHV0ZjhDb2RlYygpOwotCi0jaWYgX19BUFBM
RV9fCi0gICAgZXhwbGljaXQgUVRleHRDb2RlYyhDRlN0cmluZ0VuY29kaW5nIGUsIEtXUUVuY29k
aW5nRmxhZ3MgZiA9IE5vRW5jb2RpbmdGbGFncykgOiBfZW5jb2RpbmcoZSksIF9mbGFncyhmKSB7
IH0KLSNlbmRpZgotCi0gICAgY29uc3QgY2hhciAqbmFtZSgpIGNvbnN0OwotICAgIGJvb2wgdXNl
c1Zpc3VhbE9yZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gX2ZsYWdzICYgVmlzdWFsT3JkZXJpbmc7
IH0KLSAgICBib29sIGlzSmFwYW5lc2UoKSBjb25zdCB7IHJldHVybiBfZmxhZ3MgJiBJc0phcGFu
ZXNlOyB9CisjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSA8a3htbGNvcmUvTm9u
Y29weWFibGUuaD4KKyNpbmNsdWRlIDx1bmljb2RlL3VjbnYuaD4KKyNpbmNsdWRlIDx1bmljb2Rl
L3V0eXBlcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTdHJlYW1pbmdU
ZXh0RGVjb2RlciA6IE5vbmNvcHlhYmxlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFN0cmVhbWlu
Z1RleHREZWNvZGVyKGNvbnN0IFRleHRFbmNvZGluZyYpOworICAgICAgICB+U3RyZWFtaW5nVGV4
dERlY29kZXIoKTsKKyAgICAgICAgCisgICAgICAgIFFTdHJpbmcgdG9Vbmljb2RlKGNvbnN0IGNo
YXIqIGNocywgaW50IGxlbiwgYm9vbCBmbHVzaCA9IGZhbHNlKTsKKyAgICAgICAgCisgICAgcHJp
dmF0ZToKKyAgICAgICAgUVN0cmluZyBjb252ZXJ0KGNvbnN0IGNoYXIgKmNocywgaW50IGxlbiwg
Ym9vbCBmbHVzaCkKKyAgICAgICAgICAgIHsgcmV0dXJuIGNvbnZlcnQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1bnNpZ25lZCBjaGFyICo+KGNocyksIGxlbiwgZmx1c2gpOyB9CisgICAgICAgIFFT
dHJpbmcgY29udmVydChjb25zdCB1bnNpZ25lZCBjaGFyICpjaHMsIGludCBsZW4sIGJvb2wgZmx1
c2gpOworICAgICAgICBRU3RyaW5nIGNvbnZlcnRMYXRpbjEoY29uc3QgdW5zaWduZWQgY2hhciAq
Y2hzLCBpbnQgbGVuKTsKKyAgICAgICAgUVN0cmluZyBjb252ZXJ0VVRGMTYoY29uc3QgdW5zaWdu
ZWQgY2hhciAqY2hzLCBpbnQgbGVuKTsKKyAgICAgICAgCisgICAgICAgIC8vIElDVSBkZWNvZGlu
Zy4KKyAgICAgICAgUVN0cmluZyBjb252ZXJ0VXNpbmdJQ1UoY29uc3QgdW5zaWduZWQgY2hhciAq
Y2hzLCBpbnQgbGVuLCBib29sIGZsdXNoKTsKKyAgICAgICAgVUVycm9yQ29kZSBjcmVhdGVJQ1VD
b252ZXJ0ZXIoKTsKKworICAgICAgICBzdGF0aWMgdm9pZCBhcHBlbmRPbWl0dGluZ1Vud2FudGVk
KFFTdHJpbmcgJnMsIGNvbnN0IFVuaUNoYXIgKmNoYXJhY3RlcnMsIGludCBieXRlQ291bnQpOwor
CisgICAgICAgIFRleHRFbmNvZGluZyBtX2VuY29kaW5nOworICAgICAgICBib29sIG1fbGl0dGxl
RW5kaWFuOworICAgICAgICBib29sIG1fYXRTdGFydDsKKyAgICAgICAgYm9vbCBtX2Vycm9yOwor
ICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgbV9udW1CdWZmZXJlZEJ5dGVzOworICAgICAgICB1
bnNpZ25lZCBjaGFyIG1fYnVmZmVyZWRCeXRlc1sxNl07IC8vIGJpZ2dlciB0aGFuIGFueSBzaW5n
bGUgbXVsdGktYnl0ZSBjaGFyYWN0ZXIKKyAgICAgICAgCisgICAgICAgIC8vIElDVSBkZWNvZGlu
Zy4KKyAgICAgICAgVUNvbnZlcnRlciAqbV9jb252ZXJ0ZXJJQ1U7CisgICAgfTsKICAgICAKLSAg
ICBRQ2hhciBiYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sKCkgY29uc3Q7Cit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLSAgICBRVGV4dERlY29kZXIgKm1ha2VEZWNvZGVyKCkgY29uc3Q7Ci0KLSAg
ICBRQ1N0cmluZyBmcm9tVW5pY29kZShjb25zdCBRU3RyaW5nICZzdHIsIGJvb2wgYWxsb3dFbnRp
dGllcyA9IGZhbHNlKSBjb25zdDsKLQotICAgIFFTdHJpbmcgdG9Vbmljb2RlKGNvbnN0IGNoYXIg
KiwgaW50KSBjb25zdDsKLSAgICBRU3RyaW5nIHRvVW5pY29kZShjb25zdCBCeXRlQXJyYXkgJiwg
aW50KSBjb25zdDsKLSAgICAKLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFFUZXh0
Q29kZWMgJiwgY29uc3QgUVRleHRDb2RlYyAmKTsKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7
Ci0gICAgCi1wcml2YXRlOgotI2lmIF9fQVBQTEVfXwotICAgIENGU3RyaW5nRW5jb2RpbmcgX2Vu
Y29kaW5nOwotI2VuZGlmCi0gICAgS1dRRW5jb2RpbmdGbGFncyBfZmxhZ3M7Ci19OwotCi1pbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFFUZXh0Q29kZWMgJmEsIGNvbnN0IFFUZXh0Q29kZWMg
JmIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQotCi1jbGFzcyBRVGV4dERlY29kZXIgewotcHVibGlj
OgotICAgIHZpcnR1YWwgflFUZXh0RGVjb2RlcigpOwotICAgIHZpcnR1YWwgUVN0cmluZyB0b1Vu
aWNvZGUoY29uc3QgY2hhciAqLCBpbnQsIGJvb2wgZmx1c2ggPSBmYWxzZSkgPSAwOwotfTsKLQot
I2VuZGlmCisjZW5kaWYgLy8gU3RyZWFtaW5nVGV4dERlY29kZXJfSApJbmRleDogcGxhdGZvcm0v
Q2hhcnNldE5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vQ2hhcnNldE5hbWVzLmgJKHJl
dmlzaW9uIDEyOTg4KQorKysgcGxhdGZvcm0vQ2hhcnNldE5hbWVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzIEFwcGxlIENvbXB1dGVy
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2
IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyNCArMjMsMTYgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAog
ICovCiAKLSNpZm5kZWYgS1dRQ0hBUlNFVFNfSF8KLSNkZWZpbmUgS1dRQ0hBUlNFVFNfSF8KKyNp
Zm5kZWYgQ2hhcnNldE5hbWVzX0gKKyNkZWZpbmUgQ2hhcnNldE5hbWVzX0gKIAotI2lmIF9fQVBQ
TEVfXwotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+Ci0jZW5kaWYK
LQotZW51bSBLV1FFbmNvZGluZ0ZsYWdzIHsKLSAgICBOb0VuY29kaW5nRmxhZ3MgPSAwLAotICAg
IFZpc3VhbE9yZGVyaW5nID0gMSwKLSAgICBCaWdFbmRpYW4gPSAyLAotICAgIExpdHRsZUVuZGlh
biA9IDQsCi0gICAgSXNKYXBhbmVzZSA9IDgKLX07Ci0KLSNpZiBfX0FQUExFX18KLUNGU3RyaW5n
RW5jb2RpbmcgS1dRQ0ZTdHJpbmdFbmNvZGluZ0Zyb21JQU5BQ2hhcnNldE5hbWUoY29uc3QgY2hh
ciAqLCBLV1FFbmNvZGluZ0ZsYWdzICpmbGFncyA9IDApOwotY29uc3QgY2hhciAqS1dRQ0ZTdHJp
bmdFbmNvZGluZ1RvSUFOQUNoYXJzZXROYW1lKENGU3RyaW5nRW5jb2RpbmcpOwotI2VuZGlmCisj
aW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAKLSNlbmRpZiAvKiBLV1FDSEFSU0VUU19IXyAqLwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitUZXh0RW5jb2RpbmdJRCB0ZXh0RW5jb2RpbmdJREZyb21D
aGFyc2V0TmFtZShjb25zdCBjaGFyKiwgVGV4dEVuY29kaW5nRmxhZ3MqIGZsYWdzID0gMCk7Citj
b25zdCBjaGFyKiBjaGFyc2V0TmFtZUZyb21UZXh0RW5jb2RpbmdJRChUZXh0RW5jb2RpbmdJRCk7
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENoYXNlck5hbWVzX0gKSW5k
ZXg6IHJlbmRlcmluZy9yZW5kZXJfb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcv
cmVuZGVyX29iamVjdC5jcHAJKHJldmlzaW9uIDEyOTk2KQorKysgcmVuZGVyaW5nL3JlbmRlcl9v
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBACiAjaW5jbHVkZSAiVmlz
aWJsZVBvc2l0aW9uLmgiCiAjaW5jbHVkZSA8cW1hdHJpeC5oPgogI2luY2x1ZGUgPHFwYWludGVy
Lmg+Ci0jaW5jbHVkZSA8cXRleHRjb2RlYy5oPgorI2luY2x1ZGUgPFRleHRFbmNvZGluZy5oPgog
I2luY2x1ZGUgPHF0ZXh0c3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI1MDQs
MTAgKzI1MDQsNyBAQCBRQ2hhciBSZW5kZXJPYmplY3Q6OmJhY2tzbGFzaEFzQ3VycmVuY3lTCiAg
ICAgRGVjb2RlciAqZGVjb2RlciA9IGRvY3VtZW50LT5kZWNvZGVyKCk7CiAgICAgaWYgKCFkZWNv
ZGVyKQogICAgICAgICByZXR1cm4gJ1xcJzsKLSAgICBjb25zdCBRVGV4dENvZGVjICpjb2RlYyA9
IGRlY29kZXItPmNvZGVjKCk7Ci0gICAgaWYgKCFjb2RlYykKLSAgICAgICAgcmV0dXJuICdcXCc7
Ci0gICAgcmV0dXJuIGNvZGVjLT5iYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sKCk7CisgICAgcmV0
dXJuIGRlY29kZXItPmVuY29kaW5nKCkuYmFja3NsYXNoQXNDdXJyZW5jeVN5bWJvbCgpOwogfQog
CiB2b2lkIFJlbmRlck9iamVjdDo6aW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlICppbWFnZSkKSW5k
ZXg6IGRvbS9Eb2N1bWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRvbS9Eb2N1bWVudEltcGwu
Y3BwCShyZXZpc2lvbiAxMjk5NikKKysrIGRvbS9Eb2N1bWVudEltcGwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDk3LDcgKzI0OTcsOSBAQCB2b2lkIERvY3VtZW50SW1wbDo6c2V0RGVjb2RlcihE
ZWNvZGVyICpkCiAKIFFTdHJpbmcgRG9jdW1lbnRJbXBsOjpjb21wbGV0ZVVSTChjb25zdCBRU3Ry
aW5nICZVUkwpCiB7Ci0gICAgcmV0dXJuIEtVUkwoYmFzZVVSTCgpLCBVUkwsIG1fZGVjb2RlciA/
IG1fZGVjb2Rlci0+Y29kZWMoKSA6IDApLnVybCgpOworICAgIGlmICghbV9kZWNvZGVyKQorICAg
ICAgICByZXR1cm4gS1VSTChiYXNlVVJMKCksIFVSTCkudXJsKCk7CisgICAgcmV0dXJuIEtVUkwo
YmFzZVVSTCgpLCBVUkwsIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKSkudXJsKCk7CiB9CiAKIERPTVN0
cmluZyBEb2N1bWVudEltcGw6OmNvbXBsZXRlVVJMKGNvbnN0IERPTVN0cmluZyAmVVJMKQpJbmRl
eDogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTI5OTYpCisrKyBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDEx
IEBACiAJCTY1NTJFN0FCMDk2QUExMUIwMDA2RjI0OCAvKiBXZWJDb3JlRnJhbWVOYW1lc3BhY2Vz
Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTUyRTdB
OTA5NkFBMTFCMDAwNkYyNDggLyogV2ViQ29yZUZyYW1lTmFtZXNwYWNlcy5tICovOyB9OwogCQk2
NTc0M0I1MjA5NzA3NkY4MDAxRTdDRUYgLyogUmVuZGVyU1ZHVGV4dC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTc0M0I1MDA5NzA3NkY4MDAxRTdD
RUYgLyogUmVuZGVyU1ZHVGV4dC5jcHAgKi87IH07CiAJCTY1NzQzQjUzMDk3MDc2RjgwMDFFN0NF
RiAvKiBSZW5kZXJTVkdUZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NTc0M0I1MTA5NzA3NkY4MDAxRTdDRUYgLyogUmVuZGVyU1ZHVGV4dC5oICov
OyB9OworCQk2NTc2RjlENjA5QjI0ODRBMDAwMDQxRjcgLyogVGV4dEVuY29kaW5nTWFjLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NzZGOUQ1MDlC
MjQ4NEEwMDAwNDFGNyAvKiBUZXh0RW5jb2RpbmdNYWMuY3BwICovOyB9OworCQk2NTdCRDc0RDA5
QUZEQzU0MDA1QTIwNTYgLyogU3RyZWFtaW5nVGV4dERlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU3QkQ3NDkwOUFGREM1NDAwNUEyMDU2
IC8qIFN0cmVhbWluZ1RleHREZWNvZGVyLmNwcCAqLzsgfTsKKwkJNjU3QkQ3NEUwOUFGREM1NDAw
NUEyMDU2IC8qIFN0cmVhbWluZ1RleHREZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTdCRDc0QTA5QUZEQzU0MDA1QTIwNTYgLyogU3RyZWFt
aW5nVGV4dERlY29kZXIuaCAqLzsgfTsKKwkJNjU3QkQ3NEYwOUFGREM1NDAwNUEyMDU2IC8qIFRl
eHRFbmNvZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NTdCRDc0QjA5QUZEQzU0MDA1QTIwNTYgLyogVGV4dEVuY29kaW5nLmNwcCAqLzsgfTsK
KwkJNjU3QkQ3NTAwOUFGREM1NDAwNUEyMDU2IC8qIFRleHRFbmNvZGluZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU3QkQ3NEMwOUFGREM1NDAwNUEy
MDU2IC8qIFRleHRFbmNvZGluZy5oICovOyB9OwogCQk2NTgyQTEzRjA5OTk5Q0Q2MDBCRUVCNkQg
LyogUVN0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NTgyQTEzRDA5OTk5Q0Q2MDBCRUVCNkQgLyogUVN0cmluZy5jcHAgKi87IH07CiAJCTY1
ODJBMTQwMDk5OTlDRDYwMEJFRUI2RCAvKiBRU3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTgyQTEzRTA5OTk5Q0Q2MDBCRUVCNkQgLyogUVN0
cmluZy5oICovOyB9OwogCQk2NTgyQTE1NzA5OTk5RDZEMDBCRUVCNkQgLyogQ29sb3JNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTgyQTE0OTA5
OTk5RDZDMDBCRUVCNkQgLyogQ29sb3JNYWMubW0gKi87IH07CkBAIC02Nyw2ICs3MiwxMiBAQAog
CQk2NUNCRkVGOTA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Q0JGRUY3MDk3NEY2MDcwMDFEQUMy
NSAvKiBGcmFtZVZpZXcuY3BwICovOyB9OwogCQk2NUNCRkVGQTA5NzRGNjA3MDAxREFDMjUgLyog
RnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NUNCRkVGODA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmggKi87IH07CiAJCTY1RDFD
MUNBMDk5MzJCMjIwMDBDQjMyNCAvKiBQbHVnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RDFDMUM5MDk5MzJCMjIwMDBDQjMyNCAvKiBQbHVnaW4u
aCAqLzsgfTsKKwkJNjVGNTM3RDkwOUIyQjIwRjAwRjNEQzRBIC8qIENoYXJzZXROYW1lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVGNTM3RDgwOUIy
QjIwRjAwRjNEQzRBIC8qIENoYXJzZXROYW1lcy5oICovOyB9OworCQk2NUY1MzgyMjA5QjJCNTU3
MDBGM0RDNEEgLyogY2hhcmFjdGVyLXNldHMudHh0IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUY1MzgyMDA5QjJCNTU3MDBGM0RDNEEgLyogY2hhcmFj
dGVyLXNldHMudHh0ICovOyB9OworCQk2NUY1MzgyMzA5QjJCNTU3MDBGM0RDNEEgLyogbWFrZS1j
aGFyc2V0LXRhYmxlLnBsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NUY1MzgyMTA5QjJCNTU3MDBGM0RDNEEgLyogbWFrZS1jaGFyc2V0LXRhYmxlLnBs
ICovOyB9OworCQk2NUY1MzgyNTA5QjJCNTc1MDBGM0RDNEEgLyogbWFjLWVuY29kaW5ncy50eHQg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RjUzODI0
MDlCMkI1NzUwMEYzREM0QSAvKiBtYWMtZW5jb2RpbmdzLnR4dCAqLzsgfTsKKwkJNjVGNTM4Njkw
OUIyQkZEQTAwRjNEQzRBIC8qIEV4dHJhQ0ZFbmNvZGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RjUzODY4MDlCMkJGREEwMEYzREM0QSAvKiBF
eHRyYUNGRW5jb2RpbmdzLmggKi87IH07CisJCTY1RjUzODZCMDlCMkMwNUUwMEYzREM0QSAvKiBD
aGFyc2V0TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjVGNTM4NkEwOUIyQzA1RTAwRjNEQzRBIC8qIENoYXJzZXROYW1lcy5jcHAgKi87IH07
CiAJCTY1RkVBODY5MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RkVBODY4MDk4MzNBREUwMEJFRDRBQiAv
KiBQYWdlLmNwcCAqLzsgfTsKIAkJN0U2RkVFRDgwODk4NTgyMzAwQzQ0QzNGIC8qIFdlYkNvcmVT
Y3JpcHREZWJ1Z2dlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0U2RkVFRDYwODk4NTgyMzAwQzQ0QzNGIC8qIFdlYkNvcmVTY3JpcHREZWJ1Z2dlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFNkZF
RUQ5MDg5ODU4MjMwMEM0NEMzRiAvKiBXZWJDb3JlU2NyaXB0RGVidWdnZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTZGRUVENzA4OTg1ODIzMDBD
NDRDM0YgLyogV2ViQ29yZVNjcmlwdERlYnVnZ2VyLm1tICovOyB9OwpAQCAtMjI0LDcgKzIzNSw2
IEBACiAJCTkzRjE5OTIwMDgyNDVFNTkwMDFFOUFCQyAvKiBkb21feG1saW1wbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUyM0QzMDAwMkRFNDQ3NjAx
ODYzNUNBIC8qIGRvbV94bWxpbXBsLmggKi87IH07CiAJCTkzRjE5OTIxMDgyNDVFNTkwMDFFOUFC
QyAvKiB4bWxfdG9rZW5pemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNTIzRDMwQTAyREU0NDc2MDE4NjM1Q0EgLyogeG1sX3Rva2VuaXplci5oICov
OyB9OwogCQk5M0YxOTkyOTA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRQ1N0cmluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU4Nzg2ODMwMkRFM0I4NjAx
RUE0MTIyIC8qIEtXUUNTdHJpbmcuaCAqLzsgfTsKLQkJOTNGMTk5MkEwODI0NUU1OTAwMUU5QUJD
IC8qIEtXUUNoYXJzZXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNTg3ODRDQzAyREUzNzU5MDFFQTQxMjIgLyogS1dRQ2hhcnNldHMuaCAqLzsgfTsK
IAkJOTNGMTk5MkMwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NjgwMDJERTNCODYwMUVB
NDEyMiAvKiBLV1FDb2xsZWN0aW9uLmggKi87IH07CiAJCTkzRjE5OTJFMDgyNDVFNTkwMDFFOUFC
QyAvKiBLV1FDb21ib0JveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjU4Nzg2ODIwMkRFM0I4NjAxRUE0MTIyIC8qIEtXUUNvbWJvQm94LmggKi87IH07
CiAJCTkzRjE5OTJGMDgyNDVFNTkwMDFFOUFCQyAvKiBDdXJzb3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4Njg0MDJERTNCODYwMUVBNDEyMiAv
KiBDdXJzb3IuaCAqLzsgfTsKQEAgLTI2MCw3ICsyNzAsNiBAQAogCQk5M0YxOTk4RjA4MjQ1RTU5
MDAxRTlBQkMgLyogS1dRU2lnbmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNTExN0JDOTAyRjlGRkVGMDE4NjM1Q0UgLyogS1dRU2lnbmFsLmggKi87
IH07CiAJCTkzRjE5OTkxMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FTbG90LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTExN0JDQjAyRjlGRkVGMDE4NjM1
Q0UgLyogS1dRU2xvdC5oICovOyB9OwogCQk5M0YxOTk5NzA4MjQ1RTU5MDAxRTlBQkMgLyogS1dR
VGV4dEFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY1ODc4NTM1MDJERTM3NTkwMUVBNDEyMiAvKiBLV1FUZXh0QXJlYS5oICovOyB9OwotCQk5M0Yx
OTk5ODA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRVGV4dENvZGVjLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODZCRDAyREUzQjg2MDFFQTQxMjIgLyog
S1dRVGV4dENvZGVjLmggKi87IH07CiAJCTkzRjE5OTk5MDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FU
ZXh0RWRpdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjU4Nzg2QkUwMkRFM0I4NjAxRUE0MTIyIC8qIEtXUVRleHRFZGl0LmggKi87IH07CiAJCTkzRjE5
OTlBMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FUZXh0RmllbGQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NTFCMDJERTM3NTkwMUVBNDEyMiAvKiBL
V1FUZXh0RmllbGQuaCAqLzsgfTsKIAkJOTNGMTk5OUIwODI0NUU1OTAwMUU5QUJDIC8qIEtXUVRl
eHRTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY1ODc4NkJGMDJERTNCODYwMUVBNDEyMiAvKiBLV1FUZXh0U3RyZWFtLmggKi87IH07CkBAIC0z
MjMsNyArMzMyLDYgQEAKIAkJOTNGMTlBMDkwODI0NUU1OTAwMUU5QUJDIC8qIHNvdXRoV2VzdFJl
c2l6ZUN1cnNvci50aWZmIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NEMwRkEyQzA1MkI5NjZEMDAwNDQwQTEgLyogc291dGhXZXN0UmVzaXplQ3Vyc29y
LnRpZmYgKi87IH07CiAJCTkzRjE5QTBBMDgyNDVFNTkwMDFFOUFCQyAvKiB3YWl0Q3Vyc29yLnRp
ZmYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0QzBG
QTJEMDUyQjk2NkQwMDA0NDBBMSAvKiB3YWl0Q3Vyc29yLnRpZmYgKi87IH07CiAJCTkzRjE5QTBC
MDgyNDVFNTkwMDFFOUFCQyAvKiB3ZXN0UmVzaXplQ3Vyc29yLnRpZmYgaW4gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0QzBGQTJFMDUyQjk2NkQwMDA0NDBB
MSAvKiB3ZXN0UmVzaXplQ3Vyc29yLnRpZmYgKi87IH07Ci0JCTkzRjE5QTEzMDgyNDVFNTkwMDFF
OUFCQyAvKiBLV1FDaGFyc2V0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNTg3ODRDRDAyREUzNzU5MDFFQTQxMjIgLyogS1dRQ2hhcnNldHMuY3Bw
ICovOyB9OwogCQk5M0YxOUExNzA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRQ29tYm9Cb3gubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODREMjAyREUz
NzU5MDFFQTQxMjIgLyogS1dRQ29tYm9Cb3gubW0gKi87IH07CiAJCTkzRjE5QTE4MDgyNDVFNTkw
MDFFOUFCQyAvKiBLV1FDU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY1ODc4NEQ1MDJERTM3NTkwMUVBNDEyMiAvKiBLV1FDU3RyaW5nLmNw
cCAqLzsgfTsKIAkJOTNGMTlBMUUwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUZvbnQubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODRFMDAyREUzNzU5
MDFFQTQxMjIgLyogS1dRRm9udC5tbSAqLzsgfTsKQEAgLTM0NCw3ICszNTIsNiBAQAogCQk5M0Yx
OUE0MjA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRUGFpbnRlci5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NTFGMDJERTM3NTkwMUVBNDEyMiAvKiBL
V1FQYWludGVyLm1tICovOyB9OwogCQk5M0YxOUE0QTA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRUmVn
RXhwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1
ODc4NTJCMDJERTM3NTkwMUVBNDEyMiAvKiBLV1FSZWdFeHAuY3BwICovOyB9OwogCQk5M0YxOUE1
MTA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRVGV4dEFyZWEubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODUzNjAyREUzNzU5MDFFQTQxMjIgLyogS1dR
VGV4dEFyZWEubW0gKi87IH07Ci0JCTkzRjE5QTUyMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FUZXh0
Q29kZWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjU4Nzg1MzcwMkRFMzc1OTAxRUE0MTIyIC8qIEtXUVRleHRDb2RlYy5jcHAgKi87IH07CiAJCTkz
RjE5QTUzMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FUZXh0RWRpdC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NTM4MDJERTM3NTkwMUVBNDEyMiAv
KiBLV1FUZXh0RWRpdC5tbSAqLzsgfTsKIAkJOTNGMTlBNTQwODI0NUU1OTAwMUU5QUJDIC8qIEtX
UVRleHRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjU4Nzg1MzkwMkRFMzc1OTAxRUE0MTIyIC8qIEtXUVRleHRTdHJlYW0uY3BwICovOyB9
OwogCQk5M0YxOUE1NjA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRVmFsdWVMaXN0SW1wbC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODUzQzAyREUz
NzU5MDFFQTQxMjIgLyogS1dRVmFsdWVMaXN0SW1wbC5jcHAgKi87IH07CkBAIC0xMTM5LDYgKzEx
NDYsMTEgQEAKIAkJNjU1MkU3QTkwOTZBQTExQjAwMDZGMjQ4IC8qIFdlYkNvcmVGcmFtZU5hbWVz
cGFjZXMubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdlYkNvcmVGcmFt
ZU5hbWVzcGFjZXMubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU3NDNCNTAwOTcw
NzZGODAwMUU3Q0VGIC8qIFJlbmRlclNWR1RleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1RleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2NTc0M0I1MTA5NzA3NkY4MDAxRTdDRUYgLyogUmVuZGVyU1ZHVGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHVGV4dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk2NTc2RjlENTA5QjI0ODRBMDAwMDQxRjcgLyogVGV4dEVuY29k
aW5nTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0RW5j
b2RpbmdNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTdCRDc0OTA5QUZE
QzU0MDA1QTIwNTYgLyogU3RyZWFtaW5nVGV4dERlY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN0cmVhbWluZ1RleHREZWNvZGVyLmNwcDsgcGF0aCA9IHBs
YXRmb3JtL1N0cmVhbWluZ1RleHREZWNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNjU3QkQ3NEEwOUFGREM1NDAwNUEyMDU2IC8qIFN0cmVhbWluZ1RleHREZWNvZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHJlYW1pbmdUZXh0RGVjb2Rlci5o
OyBwYXRoID0gcGxhdGZvcm0vU3RyZWFtaW5nVGV4dERlY29kZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNjU3QkQ3NEIwOUFGREM1NDAwNUEyMDU2IC8qIFRleHRFbmNvZGluZy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVGV4dEVuY29kaW5nLmNw
cDsgcGF0aCA9IHBsYXRmb3JtL1RleHRFbmNvZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTY1N0JENzRDMDlBRkRDNTQwMDVBMjA1NiAvKiBUZXh0RW5jb2RpbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRleHRFbmNvZGluZy5oOyBwYXRoID0gcGxh
dGZvcm0vVGV4dEVuY29kaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1ODJB
MTNEMDk5OTlDRDYwMEJFRUI2RCAvKiBRU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBRU3RyaW5nLmNwcDsgcGF0aCA9IHBsYXRmb3JtL1FTdHJpbmcuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTgyQTEzRTA5OTk5Q0Q2MDBCRUVCNkQg
LyogUVN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUVN0cmluZy5o
OyBwYXRoID0gcGxhdGZvcm0vUVN0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2NTgyQTE0OTA5OTk5RDZDMDBCRUVCNkQgLyogQ29sb3JNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29sb3JNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMTc1LDYgKzExODcsMTIgQEAKIAkJNjVDQkZFRjcwOTc0RjYwNzAwMURB
QzI1IC8qIEZyYW1lVmlldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRnJhbWVWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVDQkZFRjgw
OTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRnJhbWVWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1RDFD
MUM5MDk5MzJCMjIwMDBDQjMyNCAvKiBQbHVnaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBsdWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NUY1MzdE
ODA5QjJCMjBGMDBGM0RDNEEgLyogQ2hhcnNldE5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBDaGFyc2V0TmFtZXMuaDsgcGF0aCA9IHBsYXRmb3JtL0NoYXJzZXROYW1l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NUY1MzgyMDA5QjJCNTU3MDBGM0RD
NEEgLyogY2hhcmFjdGVyLXNldHMudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSAiY2hhcmFj
dGVyLXNldHMudHh0IjsgcGF0aCA9ICJwbGF0Zm9ybS9jaGFyYWN0ZXItc2V0cy50eHQiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NUY1MzgyMTA5QjJCNTU3MDBGM0RDNEEgLyogbWFr
ZS1jaGFyc2V0LXRhYmxlLnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSAi
bWFrZS1jaGFyc2V0LXRhYmxlLnBsIjsgcGF0aCA9ICJwbGF0Zm9ybS9tYWtlLWNoYXJzZXQtdGFi
bGUucGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NUY1MzgyNDA5QjJCNTc1MDBG
M0RDNEEgLyogbWFjLWVuY29kaW5ncy50eHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJtYWMt
ZW5jb2RpbmdzLnR4dCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1RjUzODY4MDlC
MkJGREEwMEYzREM0QSAvKiBFeHRyYUNGRW5jb2RpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFeHRyYUNGRW5jb2RpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTY1RjUzODZBMDlCMkMwNUUwMEYzREM0QSAvKiBDaGFyc2V0TmFtZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENoYXJzZXROYW1lcy5jcHA7IHBhdGgg
PSBwbGF0Zm9ybS9DaGFyc2V0TmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2NUY4MDY5NzA1NEQ5Rjg2MDA4QkY3NzYgLyogS1dRRXhjZXB0aW9ucy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEtXUUV4Y2Vw
dGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwogCQk2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdFNkZFRUQ2MDg5ODU4MjMwMEM0NEMzRiAvKiBXZWJDb3JlU2NyaXB0RGVi
dWdnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDb3JlU2NyaXB0RGVidWdnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC0yMTc2LDE2ICsyMTk0LDEyIEBACiAJCUY1MjNE
MzA4MDJERTQ0NzYwMTg2MzVDQSAvKiBkb20yX3ZpZXdzaW1wbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBkb20yX3ZpZXdzaW1wbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjUy
M0QzMDkwMkRFNDQ3NjAxODYzNUNBIC8qIHhtbF90b2tlbml6ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0geG1sX3Rva2VuaXplci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwogCQlGNTIzRDMwQTAyREU0NDc2MDE4NjM1Q0EgLyogeG1sX3Rva2VuaXplci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSB4bWxfdG9rZW5pemVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwotCQlGNTUwRDcwQjAyRTEzMjgxMDE4NjM1Q0EgLyogbWFjLWVuY29kaW5ncy50eHQgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIm1hYy1lbmNvZGluZ3MudHh0Ijsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0J
CUY1NTBENzBDMDJFMTMyODEwMTg2MzVDQSAvKiBtYWtlLWNoYXJzZXQtdGFibGUucGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBwYXRoID0gIm1ha2UtY2hh
cnNldC10YWJsZS5wbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwogCQlGNTUxN0RDMjAzMUFCNTYzMDFBODAxODAgLyogV2ViQ29yZUhpc3Rv
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkNvcmVIaXN0b3J5Lmg7
IHBhdGggPSBrd3EvV2ViQ29yZUhpc3RvcnkuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OwogCQlGNTUxN0RDMzAzMUFCNTYzMDFBODAxODAgLyogV2ViQ29yZUhpc3RvcnkubSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgbmFtZSA9IFdlYkNvcmVIaXN0b3J5Lm07IHBhdGggPSBr
d3EvV2ViQ29yZUhpc3RvcnkubTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlGNTYy
MzRERjAzMDI2RDczMDE2MjlCNDcgLyogV2ViQ29yZUVuY29kaW5ncy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRW5jb2RpbmdzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owog
CQlGNTYyMzRFMDAzMDI2RDczMDE2MjlCNDcgLyogV2ViQ29yZUVuY29kaW5ncy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNv
cmVFbmNvZGluZ3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwogCQlGNTY1QUU4NTAyRUNBNTgzMDE4NjM1Q0EgLyogV2ViQ29yZVNldHRp
bmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkNvcmVTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU2NUFFODYwMkVDQTU4MzAxODYzNUNBIC8qIFdlYkNvcmVT
ZXR0aW5ncy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYkNvcmVTZXR0aW5ncy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCUY1ODc4NENDMDJERTM3NTkwMUVBNDEy
MiAvKiBLV1FDaGFyc2V0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBLV1FDaGFyc2V0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJRjU4Nzg0Q0QwMkRFMzc1OTAxRUE0MTIyIC8q
IEtXUUNoYXJzZXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEtXUUNoYXJzZXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1ODc4NEQyMDJERTM3NTkwMUVBNDEy
MiAvKiBLV1FDb21ib0JveC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEtXUUNvbWJvQm94Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4Nzg0RDUwMkRFMzc1OTAx
RUE0MTIyIC8qIEtXUUNTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS1dRQ1N0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlGNTg3ODREQTAyREUzNzU5
MDFFQTQxMjIgLyogS1dRRGVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEtXUURlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTIyMTMsNyArMjIyNyw2IEBACiAJCUY1ODc4NTJC
MDJERTM3NTkwMUVBNDEyMiAvKiBLV1FSZWdFeHAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS1dRUmVnRXhwLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1ODc4NTM1
MDJERTM3NTkwMUVBNDEyMiAvKiBLV1FUZXh0QXJlYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLV1FUZXh0QXJlYS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4Nzg1MzYwMkRF
Mzc1OTAxRUE0MTIyIC8qIEtXUVRleHRBcmVhLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gS1dRVGV4dEFyZWEubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQlGNTg3ODUz
NzAyREUzNzU5MDFFQTQxMjIgLyogS1dRVGV4dENvZGVjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtXUVRleHRDb2RlYy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlG
NTg3ODUzODAyREUzNzU5MDFFQTQxMjIgLyogS1dRVGV4dEVkaXQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLV1FUZXh0RWRpdC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07
CiAJCUY1ODc4NTM5MDJERTM3NTkwMUVBNDEyMiAvKiBLV1FUZXh0U3RyZWFtLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtXUVRleHRT
dHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJRjU4Nzg1M0IwMkRFMzc1OTAxRUE0MTIyIC8qIEtXUVZhbHVlTGlzdEltcGwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS1dR
VmFsdWVMaXN0SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKQEAgLTIyNTcsNyArMjI3MCw2IEBACiAJCUY1ODc4NkFDMDJERTNCODYw
MUVBNDEyMiAvKiBLV1FQdHJMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEtXUVB0ckxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1ODc4NkFEMDJERTNCODYwMUVBNDEy
MiAvKiBLV1FQdHJRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBLV1FQdHJRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4Nzg2QjMwMkRFM0I4NjAxRUE0MTIyIC8q
IEtXUVJlZ0V4cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBLV1FSZWdFeHAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07Ci0JCUY1ODc4NkJEMDJERTNCODYwMUVBNDEyMiAvKiBLV1FUZXh0
Q29kZWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gS1dRVGV4dENvZGVjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQlGNTg3ODZCRTAyREUzQjg2MDFFQTQxMjIgLyogS1dRVGV4dEVk
aXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
S1dRVGV4dEVkaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CiAJCUY1ODc4NkJGMDJERTNCODYwMUVBNDEyMiAvKiBLV1FUZXh0U3RyZWFt
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtX
UVRleHRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CiAJCUY1ODc4NkMyMDJERTNCODYwMUVBNDEyMiAvKiBLV1FWYWx1ZUxpc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS1dR
VmFsdWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwpAQCAtMjI2Nyw3ICsyMjc5LDYgQEAKIAkJRjVCMkE0RkQwMkUyMjIwRjAxODYz
NUNCIC8qIFdlYkNvcmVDYWNoZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVDYWNoZS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1QjJBNTJCMDJFMjI1
NzMwMTg2MzVDQiAvKiBXZWJDb3JlSmF2YVNjcmlwdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlSmF2YVNjcmlwdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjVCMkE1
MkMwMkUyMjU3MzAxODYzNUNCIC8qIFdlYkNvcmVKYXZhU2NyaXB0Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZUphdmFT
Y3JpcHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwotCQlGNUJGQUFDMTAzMDlDREY2MDE4NjM1Q0UgLyogY2hhcmFjdGVyLXNldHMudHh0
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJjaGFyYWN0ZXItc2V0
cy50eHQiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKIAkJRjVDMjg2OTMwMjg0NkRDRDAxODYzNUNBIC8qIEFwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBBcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
azsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMu
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQlGNUMyODY5NDAyODQ2
RENEMDE4NjM1Q0EgLyogQ2FyYm9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ2FyYm9u
LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCUY1QzI4Njk1MDI4NDZEQ0Qw
MTg2MzVDQSAvKiBDb2NvYS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENvY29hLmZyYW1l
d29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvY29hLmZyYW1ld29yazsg
c291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTIzNzAsNiArMjM4MSw5IEBACiAJCTY1
ODJBMTQ4MDk5OTlENkMwMEJFRUI2RCAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTY1RjUzODY4MDlCMkJGREEwMEYzREM0QSAvKiBFeHRyYUNG
RW5jb2RpbmdzLmggKi8sCisJCQkJNjVGNTM4MjQwOUIyQjU3NTAwRjNEQzRBIC8qIG1hYy1lbmNv
ZGluZ3MudHh0ICovLAorCQkJCTY1NzZGOUQ1MDlCMjQ4NEEwMDAwNDFGNyAvKiBUZXh0RW5jb2Rp
bmdNYWMuY3BwICovLAogCQkJCTY1ODJBMTQ5MDk5OTlENkMwMEJFRUI2RCAvKiBDb2xvck1hYy5t
bSAqLywKIAkJCQlGNTg3ODRGMDAyREUzNzU5MDFFQTQxMjIgLyogQ3Vyc29yTWFjLm1tICovLAog
CQkJCTY1ODJBMTRBMDk5OTlENkMwMEJFRUI2RCAvKiBGbG9hdFBvaW50TWFjLm1tICovLApAQCAt
MzI4NSw2ICszMjk5LDkgQEAKIAkJQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIzIC8qIHBsYXRmb3Jt
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2NUY1Mzg2
QTA5QjJDMDVFMDBGM0RDNEEgLyogQ2hhcnNldE5hbWVzLmNwcCAqLywKKwkJCQk2NUY1MzgyMDA5
QjJCNTU3MDBGM0RDNEEgLyogY2hhcmFjdGVyLXNldHMudHh0ICovLAorCQkJCTY1RjUzODIxMDlC
MkI1NTcwMEYzREM0QSAvKiBtYWtlLWNoYXJzZXQtdGFibGUucGwgKi8sCiAJCQkJQkM2RDZFMjUw
OUFGOTQzNTAwRjU5NzU5IC8qIFNjcm9sbFZpZXcuaCAqLywKIAkJCQk5MzAzMkNDQzA5QUVDMzYy
MDBGODJBMTggLyogY2cgKi8sCiAJCQkJNjU4MkExNDgwOTk5OUQ2QzAwQkVFQjZEIC8qIG1hYyAq
LywKQEAgLTMyOTcsNiArMzMxNCw3IEBACiAJCQkJOTNDRDRGRDgwOTk1RjlFQTAwN0VDQzk3IC8q
IEF0b21pY1N0cmluZy5oICovLAogCQkJCTkzQ0Q0RkQ5MDk5NUY5RUEwMDdFQ0M5NyAvKiBBdG9t
aWNTdHJpbmdJbXBsLmggKi8sCiAJCQkJQkMwNzU5ODUwOTg4NjFBNDAwNDA3QjQ4IC8qIEJydXNo
LmggKi8sCisJCQkJNjVGNTM3RDgwOUIyQjIwRjAwRjNEQzRBIC8qIENoYXJzZXROYW1lcy5oICov
LAogCQkJCUJDQzhDRkM4MDk4NkNEMjQwMDE0MEJGMiAvKiBDb2xvci5jcHAgKi8sCiAJCQkJQkND
OENGQzkwOTg2Q0QyNDAwMTQwQkYyIC8qIENvbG9yLmggKi8sCiAJCQkJQkNDOENGQ0EwOTg2Q0Qy
NDAwMTQwQkYyIC8qIENvbG9yRGF0YS5ncGVyZiAqLywKQEAgLTMzNDEsMTEgKzMzNTksMTUgQEAK
IAkJCQlCQ0ZCMkY0MDA5N0EyNEI1MDBCQTcwM0QgLyogU2VnbWVudGVkU3RyaW5nLmggKi8sCiAJ
CQkJQkNGQjJFODMwOTc5RkQ0RjAwQkE3MDNEIC8qIFNoYXJlZC5oICovLAogCQkJCTkzMzA5RUEw
MDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRUaW1lci5oICovLAorCQkJCTY1N0JENzQ5MDlBRkRD
NTQwMDVBMjA1NiAvKiBTdHJlYW1pbmdUZXh0RGVjb2Rlci5jcHAgKi8sCisJCQkJNjU3QkQ3NEEw
OUFGREM1NDAwNUEyMDU2IC8qIFN0cmVhbWluZ1RleHREZWNvZGVyLmggKi8sCiAJCQkJOTNDRDRG
REEwOTk1RjlFQTAwN0VDQzk3IC8qIFN0cmluZy5jcHAgKi8sCiAJCQkJOTNDRDRGREMwOTk1RjlF
QTAwN0VDQzk3IC8qIFN0cmluZ0ltcGwuY3BwICovLAogCQkJCTkzQ0Q0RkREMDk5NUY5RUEwMDdF
Q0M5NyAvKiBTdHJpbmdJbXBsLmggKi8sCiAJCQkJOTNFNjJEOTkwOTg1RjQxNjAwRTFCNUUzIC8q
IFN5c3RlbVRpbWUuaCAqLywKIAkJCQk5MzMwOUVBMTA5OUVCNzhDMDA1NkU1ODEgLyogVGltZXIu
Y3BwICovLAorCQkJCTY1N0JENzRCMDlBRkRDNTQwMDVBMjA1NiAvKiBUZXh0RW5jb2RpbmcuY3Bw
ICovLAorCQkJCTY1N0JENzRDMDlBRkRDNTQwMDVBMjA1NiAvKiBUZXh0RW5jb2RpbmcuaCAqLywK
IAkJCQk5MzA1QjI0QzA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCAqLywKIAkJCQk5MzVDNDc2
QTA5QUM0RDRGMDBBNkFBQjQgLyogV2hlZWxFdmVudC5oICovLAogCQkJCTkzODBGNDcxMDlBMTFB
QjQwMDFGREIzNCAvKiBXaWRnZXQuY3BwICovLApAQCAtMzM2Niw5ICszMzg4LDYgQEAKIAkJRjUy
M0QxNTAwMkRFNDI3MTAxODYzNUNBIC8qIG90aGVyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlGNUJGQUFDMTAzMDlDREY2MDE4NjM1Q0UgLyogY2hhcmFj
dGVyLXNldHMudHh0ICovLAotCQkJCUY1ODc4NENEMDJERTM3NTkwMUVBNDEyMiAvKiBLV1FDaGFy
c2V0cy5jcHAgKi8sCi0JCQkJRjU4Nzg0Q0MwMkRFMzc1OTAxRUE0MTIyIC8qIEtXUUNoYXJzZXRz
LmggKi8sCiAJCQkJMkQ5MDY2MEIwNjY1RDkzNzAwNkI2RjFBIC8qIEtXUUNsaXBib2FyZC5oICov
LAogCQkJCTJEOTA2NjBDMDY2NUQ5MzcwMDZCNkYxQSAvKiBLV1FDbGlwYm9hcmQubW0gKi8sCiAJ
CQkJRjU4Nzg0REEwMkRFMzc1OTAxRUE0MTIyIC8qIEtXUURlZi5oICovLApAQCAtMzQwMyw4ICsz
NDIyLDYgQEAKIAkJCQlGNTg3ODU0MDAyREUzNzU5MDFFQTQxMjIgLyogS1dRVmlldy5oICovLAog
CQkJCUY1ODc4NTQzMDJERTM3NTkwMUVBNDEyMiAvKiBLV1FXaW5kb3dXaWRnZXQuaCAqLywKIAkJ
CQlGNTg3ODU0NDAyREUzNzU5MDFFQTQxMjIgLyogS1dRV2luZG93V2lkZ2V0Lm1tICovLAotCQkJ
CUY1NTBENzBCMDJFMTMyODEwMTg2MzVDQSAvKiBtYWMtZW5jb2RpbmdzLnR4dCAqLywKLQkJCQlG
NTUwRDcwQzAyRTEzMjgxMDE4NjM1Q0EgLyogbWFrZS1jaGFyc2V0LXRhYmxlLnBsICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBvdGhlcjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zODYw
LDggKzM4NzcsNiBAQAogCQkJCUJDODZGQjhFMDYxRjVDMjMwMDZCQjgyMiAvKiBLV1FTbGlkZXIu
bW0gKi8sCiAJCQkJRjUxMTdCQ0MwMkY5RkZFRjAxODYzNUNFIC8qIEtXUVNsb3QuY3BwICovLAog
CQkJCUY1MTE3QkNCMDJGOUZGRUYwMTg2MzVDRSAvKiBLV1FTbG90LmggKi8sCi0JCQkJRjU4Nzg1
MzcwMkRFMzc1OTAxRUE0MTIyIC8qIEtXUVRleHRDb2RlYy5jcHAgKi8sCi0JCQkJRjU4Nzg2QkQw
MkRFM0I4NjAxRUE0MTIyIC8qIEtXUVRleHRDb2RlYy5oICovLAogCQkJCUY1ODc4NkJFMDJERTNC
ODYwMUVBNDEyMiAvKiBLV1FUZXh0RWRpdC5oICovLAogCQkJCUY1ODc4NTM4MDJERTM3NTkwMUVB
NDEyMiAvKiBLV1FUZXh0RWRpdC5tbSAqLywKIAkJCQlGNTg3ODUzOTAyREUzNzU5MDFFQTQxMjIg
LyogS1dRVGV4dFN0cmVhbS5jcHAgKi8sCkBAIC0zOTIxLDcgKzM5MzYsNiBAQAogCQkJCTkzRjE5
OTIwMDgyNDVFNTkwMDFFOUFCQyAvKiBkb21feG1saW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTNGMTk5MjEwODI0NUU1OTAwMUU5QUJDIC8qIHhtbF90b2tlbml6ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzRjE5OTI5MDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FDU3RyaW5nLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk5M0YxOTkyQTA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRQ2hhcnNldHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzRjE5OTJDMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FDb2xsZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTkyRTA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRQ29t
Ym9Cb3guaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OTJGMDgyNDVFNTkwMDFFOUFCQyAvKiBD
dXJzb3IuaCBpbiBIZWFkZXJzICovLApAQCAtMzk1Nyw3ICszOTcxLDYgQEAKIAkJCQk5M0YxOTk4
RjA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRU2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Yx
OTk5MTA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRU2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNG
MTk5OTcwODI0NUU1OTAwMUU5QUJDIC8qIEtXUVRleHRBcmVhLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk5M0YxOTk5ODA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRVGV4dENvZGVjLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5M0YxOTk5OTA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRVGV4dEVkaXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzRjE5OTlBMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FUZXh0RmllbGQuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzRjE5OTlCMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FUZXh0U3Ry
ZWFtLmggaW4gSGVhZGVycyAqLywKQEAgLTQ0MDYsNyArNDQxOSwxMSBAQAogCQkJCTY1OTM5MjM4
MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzZENkREMzA5
QUY5MDY2MDBGNTk3NTkgLyogRm9udC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1MzY3M0YwOUFF
RDc5MjAwRDM1Q0Q2IC8qIFNjcm9sbEJhck1vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTY1N0JE
NzRFMDlBRkRDNTQwMDVBMjA1NiAvKiBTdHJlYW1pbmdUZXh0RGVjb2Rlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNjU3QkQ3NTAwOUFGREM1NDAwNUEyMDU2IC8qIFRleHRFbmNvZGluZy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM2RDZFMjYwOUFGOTQzNTAwRjU5NzU5IC8qIFNjcm9sbFZpZXcuaCBp
biBIZWFkZXJzICovLAorCQkJCTY1RjUzN0Q5MDlCMkIyMEYwMEYzREM0QSAvKiBDaGFyc2V0TmFt
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTY1RjUzODY5MDlCMkJGREEwMEYzREM0QSAvKiBFeHRy
YUNGRW5jb2RpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTQ0MzAsNyArNDQ0Nyw3IEBACiAJCQkJ
OTMyRkMxNkIwODI0QTkwMTAwNUIzQzc1IC8qIGtqc190cmF2ZXJzYWwubHV0LmggKi8sCiAJCQkJ
OTMyRkMxNkQwODI0QTkwNjAwNUIzQzc1IC8qIGtqc192aWV3cy5sdXQuaCAqLywKIAkJCQk5MzJG
QzE2RjA4MjRBOTBEMDA1QjNDNzUgLyoga2pzX3dpbmRvdy5sdXQuaCAqLywKLQkJCQk5MzJGQzBE
MjA4MjRBMkM0MDA1QjNDNzUgLyogS1dRQ2hhcnNldERhdGEuYyAqLywKKwkJCQk5MzJGQzBEMjA4
MjRBMkM0MDA1QjNDNzUgLyogQ2hhcnNldERhdGEuY3BwICovLAogCQkJCTkzMkZDMERBMDgyNEEz
MzcwMDVCM0M3NSAvKiBDb2xvckRhdGEuYyAqLywKIAkJCQk5MzJGQzM4RjA4MjRCQTMwMDA1QjND
NzUgLyogdG9rZW5pemVyLmNwcCAqLywKIAkJCQk5MzJGQzE3MTA4MjRBOTEzMDA1QjNDNzUgLyog
SlNYTUxIdHRwUmVxdWVzdC5sdXQuaCAqLywKQEAgLTQ1NzMsNiArNDU5MCw5IEBACiAJCQkJQkNF
QTQ3OUYwOTdDQUFDODAwOTRDOUU0IC8qIGNzc3ZhbHVlcy5pbiBpbiBSZXNvdXJjZXMgKi8sCiAJ
CQkJQkNDOENGQ0QwOTg2Q0QyNDAwMTQwQkYyIC8qIENvbG9yRGF0YS5ncGVyZiBpbiBSZXNvdXJj
ZXMgKi8sCiAJCQkJQTc2MzhBOTIwOTk1OTJDMzAwMDdFMTRGIC8qIFdLRGlzcGxhY2VtZW50TWFw
RmlsdGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAqLywKKwkJCQk2NUY1MzgyMjA5QjJCNTU3MDBG
M0RDNEEgLyogY2hhcmFjdGVyLXNldHMudHh0IGluIFJlc291cmNlcyAqLywKKwkJCQk2NUY1Mzgy
MzA5QjJCNTU3MDBGM0RDNEEgLyogbWFrZS1jaGFyc2V0LXRhYmxlLnBsIGluIFJlc291cmNlcyAq
LywKKwkJCQk2NUY1MzgyNTA5QjJCNTc1MDBGM0RDNEEgLyogbWFjLWVuY29kaW5ncy50eHQgaW4g
UmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtNDYyNiwyMyArNDY0NiwyMyBAQAogCQkJc2hlbGxQYXRoID0gL2Jp
bi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0gImdwZXJmIC1DRW90IC1MIEFOU0ktQyAtayBcIipcIiAt
TiBmaW5kRG9jdHlwZUVudHJ5IC1GICxQdWJJREluZm86OmVBbG1vc3RTdGFuZGFyZHMsUHViSURJ
bmZvOjplQWxtb3N0U3RhbmRhcmRzIGtodG1sL2h0bWwvZG9jdHlwZXMuZ3BlcmYgPiBcIiRERVJJ
VkVEX0ZJTEVfRElSL2RvY3R5cGVzLmNwcFwiIjsKIAkJfTsKLQkJOTMyRkMwRDIwODI0QTJDNDAw
NUIzQzc1IC8qIEtXUUNoYXJzZXREYXRhLmMgKi8gPSB7CisJCTkzMkZDMEQyMDgyNEEyQzQwMDVC
M0M3NSAvKiBDaGFyc2V0RGF0YS5jcHAgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1
aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAo
CiAJCQkpOwogCQkJaW5wdXRQYXRocyA9ICgKLQkJCQkia3dxL21ha2UtY2hhcnNldC10YWJsZS5w
bCIsCi0JCQkJImt3cS9jaGFyYWN0ZXItc2V0cy50eHQiLAotCQkJCSJrd3EvbWFjLWVuY29kaW5n
cy50eHQiLAorCQkJCSJwbGF0Zm9ybS9tYWtlLWNoYXJzZXQtdGFibGUucGwiLAorCQkJCSJwbGF0
Zm9ybS9jaGFyYWN0ZXItc2V0cy50eHQiLAorCQkJCSJwbGF0Zm9ybS9tYWMvbWFjLWVuY29kaW5n
cy50eHQiLAogCQkJKTsKLQkJCW5hbWUgPSBLV1FDaGFyc2V0RGF0YS5jOworCQkJbmFtZSA9IENo
YXJzZXREYXRhLmNwcDsKIAkJCW91dHB1dFBhdGhzID0gKAotCQkJCSIkKERFUklWRURfRklMRV9E
SVIpL0tXUUNoYXJzZXREYXRhLmMiLAorCQkJCSIkKERFUklWRURfRklMRV9ESVIpL0NoYXJzZXRE
YXRhLmNwcCIsCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwotCQkJc2hlbGxTY3JpcHQgPSAicGVybCBrd3Ev
bWFrZS1jaGFyc2V0LXRhYmxlLnBsIGt3cS9jaGFyYWN0ZXItc2V0cy50eHQga3dxL21hYy1lbmNv
ZGluZ3MudHh0ID4gXCIkREVSSVZFRF9GSUxFX0RJUi9LV1FDaGFyc2V0RGF0YS5jXCIiOworCQkJ
c2hlbGxTY3JpcHQgPSAicGVybCBwbGF0Zm9ybS9tYWtlLWNoYXJzZXQtdGFibGUucGwgcGxhdGZv
cm0vY2hhcmFjdGVyLXNldHMudHh0IHBsYXRmb3JtL21hYy9tYWMtZW5jb2RpbmdzLnR4dCBrQ0ZT
dHJpbmdFbmNvZGluZyA+IFwiJERFUklWRURfRklMRV9ESVIvQ2hhcnNldERhdGEuY3BwXCIiOwog
CQl9OwogCQk5MzJGQzBEQTA4MjRBMzM3MDA1QjNDNzUgLyogQ29sb3JEYXRhLmMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CkBAIC01MDQwLDcgKzUwNjAsNiBAQAog
CQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OwogCQkJZmlsZXMgPSAoCi0JCQkJOTNGMTlBMTMwODI0NUU1OTAwMUU5QUJDIC8qIEtX
UUNoYXJzZXRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5QTE3MDgyNDVFNTkwMDFFOUFC
QyAvKiBLV1FDb21ib0JveC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5QTE4MDgyNDVFNTkw
MDFFOUFCQyAvKiBLV1FDU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5QTFFMDgy
NDVFNTkwMDFFOUFCQyAvKiBLV1FGb250Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC01MDYxLDcgKzUw
ODAsNiBAQAogCQkJCTkzRjE5QTQyMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FQYWludGVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlBNEEwODI0NUU1OTAwMUU5QUJDIC8qIEtXUVJlZ0V4cC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUE1MTA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRVGV4
dEFyZWEubW0gaW4gU291cmNlcyAqLywKLQkJCQk5M0YxOUE1MjA4MjQ1RTU5MDAxRTlBQkMgLyog
S1dRVGV4dENvZGVjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5QTUzMDgyNDVFNTkwMDFF
OUFCQyAvKiBLV1FUZXh0RWRpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5QTU0MDgyNDVF
NTkwMDFFOUFCQyAvKiBLV1FUZXh0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5
QTU2MDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FWYWx1ZUxpc3RJbXBsLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtNTUxOSw2ICs1NTM3LDEwIEBACiAJCQkJNjU5MzkyM0EwOUFFNDM1QzAwMkM1MzFGIC8q
IEtVUkxNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzZENkREMjA5QUY5MDY2MDBGNTk3NTkg
LyogRm9udC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzUzNjc2QjA5QUVEODhCMDBEMzVDRDYg
LyogU2Nyb2xsVmlld01hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTY1N0JENzREMDlBRkRDNTQw
MDVBMjA1NiAvKiBTdHJlYW1pbmdUZXh0RGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2
NTdCRDc0RjA5QUZEQzU0MDA1QTIwNTYgLyogVGV4dEVuY29kaW5nLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTY1NzZGOUQ2MDlCMjQ4NEEwMDAwNDFGNyAvKiBUZXh0RW5jb2RpbmdNYWMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNjVGNTM4NkIwOUIyQzA1RTAwRjNEQzRBIC8qIENoYXJzZXROYW1l
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFu
Z2VMb2cJKHJldmlzaW9uIDEyOTk2KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTM1IEBACisyMDA2LTAyLTI2ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBw
bGF0Zm9ybWl6ZSBLV1FUZXh0Q29kZWMKKyAgICAgICAgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3
aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD03NDg3CisgICAgICAgIAorICAgICAgICBJIHJlbmFtZWQg
UVRleHRDb2RlYyB0byBUZXh0RW5jb2RpbmcgYW5kIFFUZXh0RGVjb2RlciB0bworICAgICAgICBT
dHJlYW1pbmdUZXh0RGVjb2Rlci4gSSBhbHNvIG1hZGUgYSBidW5jaCBvZiBvdGhlciBjaGFuZ2Vz
IHRvIG1ha2UKKyAgICAgICAgdGhlIEFQSSBtb3JlIHNlbnNpYmxlLgorICAgICAgICAKKyAgICAg
ICAgKiBGb3J3YXJkaW5nSGVhZGVycy9xdGV4dGNvZGVjLmg6IFJlbW92ZWQuCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJyaWRnZS9tYWMv
TWFjRnJhbWUubW06CisgICAgICAgICogYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW06
CisgICAgICAgICgtW1dlYkNvcmVGcmFtZUJyaWRnZSBVUkxXaXRoQXR0cmlidXRlU3RyaW5nOl0p
OgorICAgICAgICAoLVtXZWJDb3JlRnJhbWVCcmlkZ2UgdGV4dEVuY29kaW5nXSk6CisgICAgICAg
ICgrW1dlYkNvcmVGcmFtZUJyaWRnZSBzdHJpbmdXaXRoRGF0YTp0ZXh0RW5jb2Rpbmc6XSk6Cisg
ICAgICAgICgrW1dlYkNvcmVGcmFtZUJyaWRnZSBzdHJpbmdXaXRoRGF0YTp0ZXh0RW5jb2RpbmdO
YW1lOl0pOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRJbXBsOjpjb21wbGV0ZVVSTCk6CisgICAgICAgICoga2h0bWwvZWNtYS9ranNf
ZG9tLmNwcDoKKyAgICAgICAgKEtKUzo6RE9NRG9jdW1lbnQ6OmdldFZhbHVlUHJvcGVydHkpOgor
ICAgICAgICAoS0pTOjpET01Eb2N1bWVudDo6cHV0VmFsdWVQcm9wZXJ0eSk6CisgICAgICAgICog
a2h0bWwvaHRtbC9Gb3JtRGF0YUxpc3QuY3BwOgorICAgICAgICAoRE9NOjpGb3JtRGF0YUxpc3Q6
OkZvcm1EYXRhTGlzdCk6CisgICAgICAgIChET006OkZvcm1EYXRhTGlzdDo6YXBwZW5kU3RyaW5n
KToKKyAgICAgICAgKiBraHRtbC9odG1sL0Zvcm1EYXRhTGlzdC5oOgorICAgICAgICAqIGtodG1s
L2h0bWwvSFRNTEZvcm1FbGVtZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUVsZW1lbnRJbXBsOjpIVE1MRm9ybUVsZW1lbnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtRWxlbWVudEltcGw6OmZvcm1EYXRhKToKKyAgICAgICAgKiBraHRtbC9odG1sL2h0bWx0
b2tlbml6ZXIuY3BwOgorICAgICAgICAqIGtodG1sL21pc2MvZGVjb2Rlci5jcHA6CisgICAgICAg
IChEZWNvZGVyOjpEZWNvZGVyKToKKyAgICAgICAgKERlY29kZXI6OnNldEVuY29kaW5nTmFtZSk6
CisgICAgICAgIChEZWNvZGVyOjplbmNvZGluZ05hbWUpOgorICAgICAgICAoRGVjb2Rlcjo6ZGVj
b2RlKToKKyAgICAgICAgKiBraHRtbC9taXNjL2RlY29kZXIuaDoKKyAgICAgICAgKGtodG1sOjpE
ZWNvZGVyOjopOgorICAgICAgICAoa2h0bWw6OkRlY29kZXI6OnZpc3VhbGx5T3JkZXJlZCk6Cisg
ICAgICAgIChraHRtbDo6RGVjb2Rlcjo6ZW5jb2RpbmcpOgorICAgICAgICAqIGtodG1sL3hzbC94
c2x0X3Byb2Nlc3NvcmltcGwuY3BwOgorICAgICAgICAoRE9NOjpYU0xUUHJvY2Vzc29ySW1wbDo6
Y3JlYXRlRG9jdW1lbnRGcm9tU291cmNlKToKKyAgICAgICAgKiBrd3EvS1dRQ2hhcnNldHMuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIGt3cS9LV1FDaGFyc2V0cy5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGt3cS9LV1FUZXh0Q29kZWMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGt3cS9LV1FUZXh0
Q29kZWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBrd3EvV2ViQ29yZVRleHREZWNvZGVyLmg6Cisg
ICAgICAgICoga3dxL1dlYkNvcmVUZXh0RGVjb2Rlci5tbToKKyAgICAgICAgKiBrd3EvY2FuLWNv
bnZlcnQubW06IFJlbW92ZWQuCisgICAgICAgICoga3dxL2NoYXJhY3Rlci1zZXRzLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiBrd3EvbWFjLWVuY29kaW5ncy50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICoga3dxL21ha2UtY2hhcnNldC10YWJsZS5wbDogUmVtb3ZlZC4KKyAgICAgICAgKiBsb2FkZXIv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHls
ZVNoZWV0OjpDYWNoZWRDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENT
U1N0eWxlU2hlZXQ6OnNldENoYXJzZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5
bGVTaGVldDo6ZGF0YSk6CisgICAgICAgICogbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuaDoK
KyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFNjcmlwdDo6Q2FjaGVkU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlw
dDo6c2V0Q2hhcnNldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmRhdGEpOgor
ICAgICAgICAqIGxvYWRlci9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVk
WFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0
OjpzZXRDaGFyc2V0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6Z290b0FuY2hvcik6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZW5jb2RpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWU6OmJhY2tzbGFzaEFzQ3VycmVuY3lTeW1ib2wpOgorICAgICAgICAqIHBsYXRmb3JtL0No
YXJzZXROYW1lcy5jcHA6IEFkZGVkLgorICAgICAgICAoS1hNTENvcmU6Oik6CisgICAgICAgIChX
ZWJDb3JlOjpFbmNvZGluZ0hhc2g6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkVuY29kaW5n
SGFzaDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZERpY3Rpb25hcmllcyk6CisgICAg
ICAgIChXZWJDb3JlOjp0ZXh0RW5jb2RpbmdJREZyb21DaGFyc2V0TmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjaGFyc2V0TmFtZUZyb21UZXh0RW5jb2RpbmdJRCk6CisgICAgICAgICogcGxhdGZv
cm0vQ2hhcnNldE5hbWVzLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL0tVUkwuY3BwOgor
ICAgICAgICAoS1VSTDo6S1VSTCk6CisgICAgICAgIChLVVJMOjpkZWNvZGVfc3RyaW5nKToKKyAg
ICAgICAgKGVuY29kZVJlbGF0aXZlU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMLmg6
CisgICAgICAgICogcGxhdGZvcm0vUVN0cmluZy5jcHA6CisgICAgICAgIChRU3RyaW5nOjpmcm9t
VXRmOCk6CisgICAgICAgICogcGxhdGZvcm0vU3RyZWFtaW5nVGV4dERlY29kZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmVhbWluZ1RleHREZWNvZGVyOjpTdHJlYW1pbmdUZXh0
RGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHJlYW1pbmdUZXh0RGVjb2Rlcjo6Y29udmVy
dExhdGluMSk6CisgICAgICAgIChXZWJDb3JlOjpTdHJlYW1pbmdUZXh0RGVjb2Rlcjo6flN0cmVh
bWluZ1RleHREZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0cmVhbWluZ1RleHREZWNvZGVy
Ojpjb252ZXJ0VVRGMTYpOgorICAgICAgICAoV2ViQ29yZTo6ZWZmZWN0aXZlRW5jb2RpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U3RyZWFtaW5nVGV4dERlY29kZXI6OmNyZWF0ZUlDVUNvbnZlcnRl
cik6CisgICAgICAgIChXZWJDb3JlOjp1bndhbnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTdHJl
YW1pbmdUZXh0RGVjb2Rlcjo6YXBwZW5kT21pdHRpbmdVbndhbnRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHJlYW1pbmdUZXh0RGVjb2Rlcjo6Y29udmVydFVzaW5nSUNVKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0cmVhbWluZ1RleHREZWNvZGVyOjpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0cmVhbWluZ1RleHREZWNvZGVyOjp0b1VuaWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL1N0
cmVhbWluZ1RleHREZWNvZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3RyZWFtaW5n
VGV4dERlY29kZXI6OmNvbnZlcnQpOgorICAgICAgICAqIHBsYXRmb3JtL1RleHRFbmNvZGluZy5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29kaW5nOjpUZXh0RW5jb2Rpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29kaW5nOjpuYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OmVmZmVjdGl2ZUVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFbmNvZGluZzo6
YmFja3NsYXNoQXNDdXJyZW5jeVN5bWJvbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RW5jb2Rp
bmc6OnRvVW5pY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vVGV4dEVuY29kaW5nLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFbmNvZGluZzo6
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFbmNvZGluZzo6VGV4dEVuY29kaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRFbmNvZGluZzo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0RW5jb2Rpbmc6OnVzZXNWaXN1YWxPcmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
RW5jb2Rpbmc6OmlzSmFwYW5lc2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29kaW5nOjpl
bmNvZGluZ0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFbmNvZGluZzo6ZmxhZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciE9
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaGFyYWN0ZXItc2V0cy50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9FeHRyYUNGRW5jb2RpbmdzLmg6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9RU3RyaW5nTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXh0RW5j
b2RpbmdNYWMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmVmZmVjdGl2ZUVuY29kaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFbmNvZGluZzo6ZnJvbVVuaWNvZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9jYW4tY29udmVydC5tbTogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWFjL21hYy1lbmNvZGluZ3MudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWtl
LWNoYXJzZXQtdGFibGUucGw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3dpbi93aW4tZW5j
b2RpbmdzLnR4dDogQWRkZWQuCisgICAgICAgICogcmVuZGVyaW5nL3JlbmRlcl9vYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpiYWNrc2xhc2hBc0N1cnJlbmN5U3lt
Ym9sKToKKyAgICAgICAgKiB4bWwveG1saHR0cHJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVl
c3Q6OnNsb3REYXRhKToKKwogMjAwNi0wMi0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgLSB0cnkgYWdhaW4gYWZ0ZXIgc2VlaW5nIGVycm9ycyBmcm9tIGJ1aWxk
Ym90CkluZGV4OiBicmlkZ2UvbWFjL01hY0ZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJyaWRnZS9t
YWMvTWFjRnJhbWUubW0JKHJldmlzaW9uIDEyOTk2KQorKysgYnJpZGdlL21hYy9NYWNGcmFtZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQAogI2ltcG9ydCAiS1dRUGFnZVN0YXRl
LmgiCiAjaW1wb3J0ICJLV1FSZWdFeHAuaCIKICNpbXBvcnQgIktXUVNjcm9sbEJhci5oIgotI2lt
cG9ydCAiS1dRVGV4dENvZGVjLmgiCisjaW1wb3J0ICJUZXh0RW5jb2RpbmcuaCIKICNpbXBvcnQg
IktXUVdpbmRvd1dpZGdldC5oIgogI2ltcG9ydCAiS2V5RXZlbnQuaCIKICNpbXBvcnQgIk1vdXNl
RXZlbnQuaCIKSW5kZXg6IGJyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGJyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tCShyZXZpc2lvbiAxMjk5NikK
KysrIGJyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw3ICszNSw3IEBACiAjaW1wb3J0ICJIVE1MRm9ybUVsZW1lbnRJbXBsLmgiCiAjaW1wb3J0ICJI
VE1MSW5wdXRFbGVtZW50SW1wbC5oIgogI2ltcG9ydCAiS1dRQWNjT2JqZWN0Q2FjaGUuaCIKLSNp
bXBvcnQgIktXUUNoYXJzZXRzLmgiCisjaW1wb3J0ICJDaGFyc2V0TmFtZXMuaCIKICNpbXBvcnQg
IktXUUNsaXBib2FyZC5oIgogI2ltcG9ydCAiS1dRRWRpdENvbW1hbmQuaCIKICNpbXBvcnQgIktX
UUZvbnQuaCIKQEAgLTQzLDcgKzQzLDcgQEAKICNpbXBvcnQgIktXUUxvYWRlci5oIgogI2ltcG9y
dCAiS1dRUGFnZVN0YXRlLmgiCiAjaW1wb3J0ICJLV1FSZW5kZXJUcmVlRGVidWcuaCIKLSNpbXBv
cnQgIktXUVRleHRDb2RlYy5oIgorI2ltcG9ydCAiVGV4dEVuY29kaW5nLmgiCiAjaW1wb3J0ICJL
V1FWaWV3LmgiCiAjaW1wb3J0ICJNYWNGcmFtZS5oIgogI2ltcG9ydCAiTm9kZUltcGwuaCIKQEAg
LTEzODksOCArMTM4OSw5IEBAIHN0YXRpYyBIVE1MRm9ybUVsZW1lbnRJbXBsICpmb3JtRWxlbWVu
dEYKICAgICBpZiAoIWRvYykgewogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KKyAgICAvLyBG
SVhNRTogaXMgcGFyc2VVUkwgYXBwcm9wcmlhdGUgaGVyZT8KICAgICBRU3RyaW5nIHJlbCA9IHBh
cnNlVVJMKFFTdHJpbmc6OmZyb21OU1N0cmluZyhzdHJpbmcpKS5xc3RyaW5nKCk7Ci0gICAgcmV0
dXJuIEtVUkwoZG9jLT5iYXNlVVJMKCksIHJlbCwgZG9jLT5kZWNvZGVyKCkgPyBkb2MtPmRlY29k
ZXIoKS0+Y29kZWMoKSA6IDApLmdldE5TVVJMKCk7CisgICAgcmV0dXJuIEtVUkwoZG9jLT5jb21w
bGV0ZVVSTChyZWwpKS5nZXROU1VSTCgpOwogfQogCiAtIChCT09MKXNlYXJjaEZvcjooTlNTdHJp
bmcgKilzdHJpbmcgZGlyZWN0aW9uOihCT09MKWZvcndhcmQgY2FzZVNlbnNpdGl2ZTooQk9PTClj
YXNlRmxhZyB3cmFwOihCT09MKXdyYXBGbGFnCkBAIC0xNDQyLDcgKzE0NDMsNyBAQCBzdGF0aWMg
SFRNTEZvcm1FbGVtZW50SW1wbCAqZm9ybUVsZW1lbnRGCiAKIC0gKENGU3RyaW5nRW5jb2Rpbmcp
dGV4dEVuY29kaW5nCiB7Ci0gICAgcmV0dXJuIEtXUUNGU3RyaW5nRW5jb2RpbmdGcm9tSUFOQUNo
YXJzZXROYW1lKG1fZnJhbWUtPmVuY29kaW5nKCkubGF0aW4xKCkpOworICAgIHJldHVybiBXZWJD
b3JlOjpUZXh0RW5jb2RpbmcobV9mcmFtZS0+ZW5jb2RpbmcoKS5sYXRpbjEoKSkuZW5jb2RpbmdJ
RCgpOwogfQogCiAtIChOU1ZpZXcgKiluZXh0S2V5VmlldwpAQCAtMTY3MCwxNSArMTY3MSwxNSBA
QCBzdGF0aWMgSFRNTEZvcm1FbGVtZW50SW1wbCAqZm9ybUVsZW1lbnRGCiAKICsgKE5TU3RyaW5n
ICopc3RyaW5nV2l0aERhdGE6KE5TRGF0YSAqKWRhdGEgdGV4dEVuY29kaW5nOihDRlN0cmluZ0Vu
Y29kaW5nKXRleHRFbmNvZGluZwogewotICAgIGlmICh0ZXh0RW5jb2RpbmcgPT0ga0NGU3RyaW5n
RW5jb2RpbmdJbnZhbGlkSWQgfHwgdGV4dEVuY29kaW5nID09IGtDRlN0cmluZ0VuY29kaW5nSVNP
TGF0aW4xKSB7CisgICAgaWYgKHRleHRFbmNvZGluZyA9PSBrQ0ZTdHJpbmdFbmNvZGluZ0ludmFs
aWRJZCkKICAgICAgICAgdGV4dEVuY29kaW5nID0ga0NGU3RyaW5nRW5jb2RpbmdXaW5kb3dzTGF0
aW4xOwotICAgIH0KLSAgICByZXR1cm4gUVRleHRDb2RlYyh0ZXh0RW5jb2RpbmcpLnRvVW5pY29k
ZSgoY29uc3QgY2hhciopW2RhdGEgYnl0ZXNdLCBbZGF0YSBsZW5ndGhdKS5nZXROU1N0cmluZygp
OworCisgICAgcmV0dXJuIFdlYkNvcmU6OlRleHRFbmNvZGluZyh0ZXh0RW5jb2RpbmcpLnRvVW5p
Y29kZSgoY29uc3QgY2hhciopW2RhdGEgYnl0ZXNdLCBbZGF0YSBsZW5ndGhdKS5nZXROU1N0cmlu
ZygpOwogfQogCiArIChOU1N0cmluZyAqKXN0cmluZ1dpdGhEYXRhOihOU0RhdGEgKilkYXRhIHRl
eHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopdGV4dEVuY29kaW5nTmFtZQogewotICAgIENGU3Ry
aW5nRW5jb2RpbmcgdGV4dEVuY29kaW5nID0gS1dRQ0ZTdHJpbmdFbmNvZGluZ0Zyb21JQU5BQ2hh
cnNldE5hbWUoW3RleHRFbmNvZGluZ05hbWUgbG9zc3lDU3RyaW5nXSk7CisgICAgQ0ZTdHJpbmdF
bmNvZGluZyB0ZXh0RW5jb2RpbmcgPSBXZWJDb3JlOjpUZXh0RW5jb2RpbmcoW3RleHRFbmNvZGlu
Z05hbWUgbG9zc3lDU3RyaW5nXSkuZW5jb2RpbmdJRCgpOwogICAgIHJldHVybiBbV2ViQ29yZUZy
YW1lQnJpZGdlIHN0cmluZ1dpdGhEYXRhOmRhdGEgdGV4dEVuY29kaW5nOnRleHRFbmNvZGluZ107
CiB9CiAKSW5kZXg6IEZvcndhcmRpbmdIZWFkZXJzL3F0ZXh0Y29kZWMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBGb3J3YXJkaW5nSGVhZGVycy9xdGV4dGNvZGVjLmgJKHJldmlzaW9uIDEyOTk2KQorKysgRm9y
d2FyZGluZ0hlYWRlcnMvcXRleHRjb2RlYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAK
LSNpbmNsdWRlICJLV1FUZXh0Q29kZWMuaCIKSW5kZXg6IHhtbC94bWxodHRwcmVxdWVzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0geG1sL3htbGh0dHByZXF1ZXN0LmNwcAkocmV2aXNpb24gMTI5OTYpCisr
KyB4bWwveG1saHR0cHJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
CiAjaW5jbHVkZSA8a2lvL2pvYi5oPgogI2luY2x1ZGUgPGtqcy9wcm90ZWN0Lmg+CiAjaW5jbHVk
ZSA8cXJlZ2V4cC5oPgotI2luY2x1ZGUgPHF0ZXh0Y29kZWMuaD4KKyNpbmNsdWRlICJUZXh0RW5j
b2RpbmcuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEtJTzsKIApAQCAtMjU3LDExICsyNTcsMTEgQEAg
dm9pZCBYTUxIdHRwUmVxdWVzdDo6c2VuZChjb25zdCBET01TdHJpbgogICAgICAgaWYgKGNoYXJz
ZXQuaXNFbXB0eSgpKQogICAgICAgICBjaGFyc2V0ID0gIlVURi04IjsKICAgICAgIAotICAgICAg
UVRleHRDb2RlYyAqY29kZWMgPSBRVGV4dENvZGVjOjpjb2RlY0Zvck5hbWUoY2hhcnNldC5sYXRp
bjEoKSk7Ci0gICAgICBpZiAoIWNvZGVjKSAgIC8vIEZJWE1FOiByZXBvcnQgYW4gZXJyb3I/Ci0g
ICAgICAgIGNvZGVjID0gUVRleHRDb2RlYzo6Y29kZWNGb3JOYW1lKCJVVEYtOCIpOworICAgICAg
VGV4dEVuY29kaW5nIGVuY29kaW5nID0gVGV4dEVuY29kaW5nKGNoYXJzZXQubGF0aW4xKCkpOwor
ICAgICAgaWYgKCFlbmNvZGluZy5pc1ZhbGlkKCkpICAgLy8gRklYTUU6IHJlcG9ydCBhbiBlcnJv
cj8KKyAgICAgICAgZW5jb2RpbmcgPSBUZXh0RW5jb2RpbmcoVVRGOEVuY29kaW5nKTsKIAotICAg
ICAgam9iID0gaHR0cF9wb3N0KHVybCwgY29kZWMtPmZyb21Vbmljb2RlKF9ib2R5LnFzdHJpbmco
KSksIGZhbHNlKTsKKyAgICAgIGpvYiA9IGh0dHBfcG9zdCh1cmwsIGVuY29kaW5nLmZyb21Vbmlj
b2RlKF9ib2R5LnFzdHJpbmcoKSksIGZhbHNlKTsKICAgfQogICBlbHNlCiAgICAgIGpvYiA9IGdl
dCh1cmwsIGZhbHNlLCBmYWxzZSk7CkBAIC01MTQsMTAgKzUxNCwxMCBAQCB2b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpzbG90RGF0YShKb2IqLCBjb25zCiAgICAgCiAgICAgZGVjb2RlciA9IG5ldyBEZWNv
ZGVyOwogICAgIGlmICghZW5jb2RpbmcuaXNFbXB0eSgpKQotICAgICAgZGVjb2Rlci0+c2V0RW5j
b2RpbmcoZW5jb2RpbmcubGF0aW4xKCksIERlY29kZXI6OkVuY29kaW5nRnJvbUhUVFBIZWFkZXIp
OworICAgICAgZGVjb2Rlci0+c2V0RW5jb2RpbmdOYW1lKGVuY29kaW5nLmxhdGluMSgpLCBEZWNv
ZGVyOjpFbmNvZGluZ0Zyb21IVFRQSGVhZGVyKTsKICAgICBlbHNlCiAgICAgICAvLyBvbmx5IGFs
bG93IERlY29kZXIgdG8gbG9vayBpbnNpZGUgdGhlIHJlc3BvbnNlIGlmIGl0J3MgWE1MCi0gICAg
ICBkZWNvZGVyLT5zZXRFbmNvZGluZygiVVRGLTgiLCByZXNwb25zZUlzWE1MKCkgPyBEZWNvZGVy
OjpEZWZhdWx0RW5jb2RpbmcgOiBEZWNvZGVyOjpFbmNvZGluZ0Zyb21IVFRQSGVhZGVyKTsKKyAg
ICAgIGRlY29kZXItPnNldEVuY29kaW5nTmFtZSgiVVRGLTgiLCByZXNwb25zZUlzWE1MKCkgPyBE
ZWNvZGVyOjpEZWZhdWx0RW5jb2RpbmcgOiBEZWNvZGVyOjpFbmNvZGluZ0Zyb21IVFRQSGVhZGVy
KTsKICAgfQogICBpZiAobGVuID09IDApCiAgICAgcmV0dXJuOwpJbmRleDoga3dxL1dlYkNvcmVU
ZXh0RGVjb2Rlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrd3EvV2ViQ29yZVRleHREZWNvZGVyLm1tCShy
ZXZpc2lvbiAxMjk5NikKKysrIGt3cS9XZWJDb3JlVGV4dERlY29kZXIubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDEwIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYkNv
cmVUZXh0RGVjb2Rlci5oIgogCi0jaW1wb3J0ICJLV1FUZXh0Q29kZWMuaCIKKyNpbXBvcnQgIlRl
eHRFbmNvZGluZy5oIgorI2ltcG9ydCAiU3RyZWFtaW5nVGV4dERlY29kZXIuaCIKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlVGV4dERlY29kZXIK
IApAQCAtMzQsMTEgKzM3LDExIEBACiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICAK
LSAgICBRVGV4dENvZGVjICpjb2RlYyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZShbZW5jb2Rp
bmdOYW1lIGNTdHJpbmdVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ10pOwotICAg
IGlmICghY29kZWMpCi0gICAgICAgIGNvZGVjID0gUVRleHRDb2RlYzo6Y29kZWNGb3JOYW1lKCJJ
U08tODg1OS0xIik7CisgICAgV2ViQ29yZTo6VGV4dEVuY29kaW5nIGVuY29kaW5nID0gV2ViQ29y
ZTo6VGV4dEVuY29kaW5nKFtlbmNvZGluZ05hbWUgY1N0cmluZ1VzaW5nRW5jb2Rpbmc6TlNBU0NJ
SVN0cmluZ0VuY29kaW5nXSk7CisgICAgaWYgKCFlbmNvZGluZy5pc1ZhbGlkKCkpCisgICAgICAg
IGVuY29kaW5nID0gV2ViQ29yZTo6VGV4dEVuY29kaW5nKExhdGluMUVuY29kaW5nKTsKICAgICAK
LSAgICBfZGVjb2RlciA9IGNvZGVjLT5tYWtlRGVjb2RlcigpOworICAgIF9kZWNvZGVyID0gbmV3
IFN0cmVhbWluZ1RleHREZWNvZGVyKGVuY29kaW5nKTsKICAgICAKICAgICByZXR1cm4gc2VsZjsK
IH0KSW5kZXg6IGt3cS9jYW4tY29udmVydC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrd3EvY2FuLWNvbnZl
cnQubW0JKHJldmlzaW9uIDEyOTk2KQorKysga3dxL2Nhbi1jb252ZXJ0Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQyICswLDAgQEAKLS8qIGNkIGludG8gdGhlIGt3cSBkaXJlY3RvcnksIGFuZCB1
c2UgdGhpcyBjb21tYW5kOgotCi1tYWtlICYmIGcrKyBjYW4tY29udmVydC5tbSAtZnJhbWV3b3Jr
IENhcmJvbiAmJiAuL2Eub3V0ICYmIHJtIGEub3V0Ci0KLSovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+Ci0KLWNvbnN0IGludCBOb0VuY29kaW5nRmxh
Z3MgPSAwOwotY29uc3QgaW50IEJpZ0VuZGlhbiA9IDA7Ci1jb25zdCBpbnQgSXNKYXBhbmVzZSA9
IDA7Ci1jb25zdCBpbnQgTGl0dGxlRW5kaWFuID0gMDsKLWNvbnN0IGludCBWaXN1YWxPcmRlcmlu
ZyA9IDA7Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBjb25zdCBjaGFyICpjaGFyc2V0OwotICAg
IFRleHRFbmNvZGluZyBlbmNvZGluZzsKLSAgICBpbnQgZmxhZ3M7Ci19IENoYXJzZXRFbnRyeTsK
LQotI2RlZmluZSBrQ0ZTdHJpbmdFbmNvZGluZ0JpZzVfRE9TVmFyaWFudCAoa1RleHRFbmNvZGlu
Z0JpZzUgfCAoa0JpZzVfRE9TVmFyaWFudCA8PCAxNikpCi0jZGVmaW5lIGtDRlN0cmluZ0VuY29k
aW5nRVVDX0NOX0RPU1ZhcmlhbnQgKGtUZXh0RW5jb2RpbmdFVUNfQ04gfCAoa0VVQ19DTl9ET1NW
YXJpYW50IDw8IDE2KSkKLSNkZWZpbmUga0NGU3RyaW5nRW5jb2RpbmdFVUNfS1JfRE9TVmFyaWFu
dCAoa1RleHRFbmNvZGluZ0VVQ19LUiB8IChrRVVDX0tSX0RPU1ZhcmlhbnQgPDwgMTYpKQotI2Rl
ZmluZSBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMTAga1RleHRFbmNvZGluZ0lTT0xhdGluMTAK
LSNkZWZpbmUga0NGU3RyaW5nRW5jb2RpbmdLT0k4X1Uga1RleHRFbmNvZGluZ0tPSThfVQotI2Rl
ZmluZSBrQ0ZTdHJpbmdFbmNvZGluZ1NoaWZ0SklTX0RPU1ZhcmlhbnQgKGtUZXh0RW5jb2RpbmdT
aGlmdEpJUyB8IChrU2hpZnRKSVNfRE9TVmFyaWFudCA8PCAxNikpCi0KLSNpbmNsdWRlICJLV1FD
aGFyc2V0RGF0YS5jIgotCi1pbnQgbWFpbigpCi17Ci0gICAgaW50IGk7Ci0gICAgZm9yIChpID0g
MDsgdGFibGVbaV0uY2hhcnNldDsgKytpKSB7Ci0gICAgICAgIFRFQ09iamVjdFJlZiBjOwotICAg
ICAgICBpZiAodGFibGVbaV0uZW5jb2RpbmcgIT0ga0NGU3RyaW5nRW5jb2RpbmdVbmljb2RlCi0g
ICAgICAgICAgICAmJiBURUNDcmVhdGVDb252ZXJ0ZXIoJmMsIHRhYmxlW2ldLmVuY29kaW5nLAot
ICAgICAgICAgICAgICAgIENyZWF0ZVRleHRFbmNvZGluZyhrVGV4dEVuY29kaW5nVW5pY29kZURl
ZmF1bHQsIGtUZXh0RW5jb2RpbmdEZWZhdWx0VmFyaWFudCwga1VuaWNvZGUxNkJpdEZvcm1hdCkp
ICE9IG5vRXJyKSB7Ci0gICAgICAgICAgICBwcmludGYoImNhbid0IGRvICVzXG4iLCB0YWJsZVtp
XS5jaGFyc2V0KTsKLSAgICAgICAgfQotICAgIH0KLX0KSW5kZXg6IGt3cS9tYWtlLWNoYXJzZXQt
dGFibGUucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga3dxL21ha2UtY2hhcnNldC10YWJsZS5wbAkocmV2aXNp
b24gMTI5OTYpCisrKyBrd3EvbWFrZS1jaGFyc2V0LXRhYmxlLnBsCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDE4NiArMCwwIEBACi0jIS91c3IvYmluL3BlcmwgLXcKLQotdXNlIHN0cmljdDsKLQotCi1t
eSAkTUFDX1NVUFBPUlRFRF9PTkxZID0gMTsKLQotbXkgJWFsaWFzZXNGcm9tQ2hhcnNldHNGaWxl
OwotbXkgJW5hbWVzV3JpdHRlbjsKLQotbXkgJG91dHB1dCA9ICIiOwotCi1teSAkZXJyb3IgPSAw
OwotCi1zdWIgZXJyb3IgKCQpCi17Ci0gICAgcHJpbnQgU1RERVJSIEBfLCAiXG4iOwotICAgICRl
cnJvciA9IDE7Ci19Ci0KLXN1YiBlbWl0X2xpbmUKLXsKLSAgICBteSAoJG5hbWUsICRlbmNvZGlu
ZywgJGZsYWdzKSA9IEBfOwotIAotICAgIGVycm9yICIkbmFtZSBzaG93cyB1cCB0d2ljZSBpbiBv
dXRwdXQiIGlmICRuYW1lc1dyaXR0ZW57JG5hbWV9OwotICAgICRuYW1lc1dyaXR0ZW57JG5hbWV9
ID0gMTsKLSAgICAKLSAgICAkb3V0cHV0IC49ICIgICAgeyBcIiRuYW1lXCIsIGtDRlN0cmluZ0Vu
Y29kaW5nJGVuY29kaW5nLCAkZmxhZ3MgfSxcbiI7Ci19Ci0KLXN1YiBwcm9jZXNzX21hY19lbmNv
ZGluZ3MKLXsKLSAgICBteSAoJGZpbGVuYW1lKSA9IEBfOwotICAgIAotICAgIG15ICVzZWVuTWFj
TmFtZXM7Ci0gICAgbXkgJXNlZW5JQU5BTmFtZXM7Ci0gICAgCi0gICAgb3BlbiBNQUNfRU5DT0RJ
TkdTLCAkZmlsZW5hbWUgb3IgZGllOwotICAgIAotICAgIHdoaWxlICg8TUFDX0VOQ09ESU5HUz4p
IHsKLSAgICAgICAgY2hvbXA7Ci0gICAgICAgIHMvXCMuKiQvLzsKLSAgICAgICAgcy9ccyskLy87
Ci0JaWYgKG15ICgkTWFjTmFtZSwgdW5kZWYsICRmbGFncywgJElBTkFOYW1lcykgPSAvXiguKz8p
KCwgKC4rKSk/OiAoLispJC8pIHsKLSAgICAgICAgICAgIG15ICVhbGlhc2VzOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBteSAkTWFjTmFtZVdpdGhGbGFncyA9ICRNYWNOYW1lOwotICAgICAg
ICAgICAgaWYgKCRmbGFncykgewotICAgICAgICAgICAgICAgICRNYWNOYW1lV2l0aEZsYWdzIC49
ICIsICIgLiAkZmxhZ3M7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICRm
bGFncyA9ICJOb0VuY29kaW5nRmxhZ3MiOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZXJy
b3IgIkNGU3RyaW5nIGVuY29kaW5nIG5hbWUgJE1hY05hbWUgaXMgbWVudGlvbmVkIHR3aWNlIGlu
IG1hYy1lbmNvZGluZ3MudHh0IiBpZiAkc2Vlbk1hY05hbWVzeyRNYWNOYW1lV2l0aEZsYWdzfTsK
LSAgICAgICAgICAgICRzZWVuTWFjTmFtZXN7JE1hY05hbWVXaXRoRmxhZ3N9ID0gMTsKLQotICAg
ICAgICAgICAgIyBCdWlsZCB0aGUgYWxpYXNlcyBsaXN0LgotICAgICAgICAgICAgIyBBbHNvIGNo
ZWNrIHRoYXQgbm8gdHdvIG5hbWVzIGFyZSBwYXJ0IG9mIHRoZSBzYW1lIGVudHJ5IGluIHRoZSBj
aGFyc2V0cyBmaWxlLgotCSAgICBteSBASUFOQU5hbWVzID0gc3BsaXQgIiwgIiwgJElBTkFOYW1l
czsKLSAgICAgICAgICAgIG15ICRmaXJzdE5hbWUgPSAiIjsKLSAgICAgICAgICAgIG15ICRjYW5v
bmljYWxGaXJzdE5hbWUgPSAiIjsKLSAgICAgICAgICAgIG15ICRwcmV2TmFtZSA9ICIiOwotICAg
ICAgICAgICAgZm9yIG15ICRuYW1lIChASUFOQU5hbWVzKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCRmaXJzdE5hbWUgZXEgIiIpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1lICF+IC9e
Wy1BLVphLXowLTlfXSskLykgewotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgIiRuYW1l
LCBpbiBtYWMtZW5jb2RpbmdzLnR4dCwgaGFzIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBpdCI7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICRmaXJzdE5hbWUgPSAkbmFtZTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoJG5hbWUgIX4gL15bYS16MC05XSskLykgewot
ICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgIiRuYW1lLCBpbiBtYWMtZW5jb2RpbmdzLnR4
dCwgaGFzIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBpdCAobXVzdCBiZSBhbGwgbG93ZXJjYXNlIGFs
cGhhbnVtZXJpYykiOwotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoJG5hbWUgbGUgJHByZXZOYW1lKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciAiJG5hbWUgY29tZXMgYWZ0ZXIgJHByZXZO
YW1lIGluIG1hYy1lbmNvZGluZ3MudHh0LCBidXQgZXZlcnl0aGluZyBtdXN0IGJlIGluIGFscGhh
YmV0aWNhbCBvcmRlciI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgJHByZXZOYW1lID0gJG5hbWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIG15ICRjYW5vbmljYWxOYW1lID0gbGMgJG5hbWU7Ci0gICAgICAg
ICAgICAgICAgJGNhbm9uaWNhbE5hbWUgPX4gdHIvLV8vL2Q7Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgJGNhbm9uaWNhbEZpcnN0TmFtZSA9ICRjYW5vbmljYWxOYW1lIGlmICRj
YW5vbmljYWxGaXJzdE5hbWUgZXEgIiI7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgZXJyb3IgIiRuYW1lIGlzIG1lbnRpb25lZCB0d2ljZSBpbiBtYWMtZW5jb2RpbmdzLnR4dCIg
aWYgJHNlZW5JQU5BTmFtZXN7JGNhbm9uaWNhbE5hbWV9OwotICAgICAgICAgICAgICAgICRzZWVu
SUFOQU5hbWVzeyRjYW5vbmljYWxOYW1lfSA9IDE7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgJGFsaWFzZXN7JGNhbm9uaWNhbE5hbWV9ID0gMTsKLSAgICAgICAgICAgICAgICBu
ZXh0IGlmICEkYWxpYXNlc0Zyb21DaGFyc2V0c0ZpbGV7JGNhbm9uaWNhbE5hbWV9OwotICAgICAg
ICAgICAgICAgIGZvciBteSAkYWxpYXMgKEB7JGFsaWFzZXNGcm9tQ2hhcnNldHNGaWxleyRjYW5v
bmljYWxOYW1lfX0pIHsKLSAgICAgICAgICAgICAgICAgICAgJGFsaWFzZXN7JGFsaWFzfSA9IDE7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciBteSAkb3RoZXJOYW1lIChA
SUFOQU5hbWVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5leHQgaWYgJGNhbm9uaWNhbE5hbWUg
ZXEgJG90aGVyTmFtZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRhbGlhc2VzRnJvbUNoYXJz
ZXRzRmlsZXskb3RoZXJOYW1lfQotICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGFsaWFzZXNG
cm9tQ2hhcnNldHNGaWxleyRjYW5vbmljYWxOYW1lfSBlcSAkYWxpYXNlc0Zyb21DaGFyc2V0c0Zp
bGV7JG90aGVyTmFtZX0KLSAgICAgICAgICAgICAgICAgICAgICAgICYmICRjYW5vbmljYWxOYW1l
IGxlICRvdGhlck5hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yICJtYWMtZW5j
b2RpbmdzLnR4dCBsaXN0cyBib3RoICRuYW1lIGFuZCAkb3RoZXJOYW1lIHVuZGVyICRNYWNOYW1l
LCBidXQgdGhhdCBhbGlhc2luZyBpcyBhbHJlYWR5IHNwZWNpZmllZCBpbiBjaGFyYWN0ZXItc2V0
cy50eHQiOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICAjIHdyaXRlIG91dAotICAgICAgICAg
ICAgZW1pdF9saW5lKCRmaXJzdE5hbWUsICRNYWNOYW1lLCAkZmxhZ3MpOwotICAgICAgICAgICAg
Zm9yIG15ICRhbGlhcyAoc29ydCBrZXlzICVhbGlhc2VzKSB7Ci0gICAgICAgICAgICAgICAgZW1p
dF9saW5lKCRhbGlhcywgJE1hY05hbWUsICRmbGFncykgaWYgJGFsaWFzIG5lICRjYW5vbmljYWxG
aXJzdE5hbWU7Ci0gICAgICAgICAgICB9Ci0JfSBlbHNpZiAoL14oW2EtekEtWjAtOV9dKykoLCAo
LispKT8kLykgewotICAgICAgICAgICAgbXkgJE1hY05hbWUgPSAkMTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgZXJyb3IgIkNGU3RyaW5nIGVuY29kaW5nIG5hbWUgJE1hY05hbWUgaXMgbWVu
dGlvbmVkIHR3aWNlIGluIG1hYy1lbmNvZGluZ3MudHh0IiBpZiAkc2Vlbk1hY05hbWVzeyRNYWNO
YW1lfTsKLSAgICAgICAgICAgICRzZWVuTWFjTmFtZXN7JE1hY05hbWV9ID0gMTsKLSAgICAgICAg
fSBlbHNpZiAoLy4vKSB7Ci0gICAgICAgICAgICBlcnJvciAic3ludGF4IGVycm9yIGluIG1hYy1l
bmNvZGluZ3MudHh0LCBsaW5lICQuIjsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBjbG9z
ZSBNQUNfRU5DT0RJTkdTOwotfQotCi1zdWIgcHJvY2Vzc19pYW5hX2NoYXJzZXQgCi17Ci0gICAg
bXkgKCRjYW5vbmljYWxfbmFtZSwgQGFsaWFzZXMpID0gQF87Ci0gICAgCi0gICAgcmV0dXJuIGlm
ICEkY2Fub25pY2FsX25hbWU7Ci0gICAgCi0gICAgbXkgQG5hbWVzID0gc29ydCAkY2Fub25pY2Fs
X25hbWUsIEBhbGlhc2VzOwotICAgIAotICAgIGZvciBteSAkbmFtZSAoQG5hbWVzKSB7Ci0gICAg
ICAgICRhbGlhc2VzRnJvbUNoYXJzZXRzRmlsZXskbmFtZX0gPSBcQG5hbWVzOwotICAgIH0KLX0K
LQotc3ViIHByb2Nlc3NfaWFuYV9jaGFyc2V0cwotewotICAgIG15ICgkZmlsZW5hbWUpID0gQF87
Ci0gICAgCi0gICAgb3BlbiBDSEFSU0VUUywgJGZpbGVuYW1lIG9yIGRpZTsKLSAgICAKLSAgICBt
eSAlc2VlbjsKLSAgICAKLSAgICBteSAkY2Fub25pY2FsX25hbWU7Ci0gICAgbXkgQGFsaWFzZXM7
Ci0gICAgCi0gICAgbXkgJWV4Y2VwdGlvbnMgPSAoIGlzb2lyOTEgPT4gMSwgaXNvaXI5MiA9PiAx
ICk7Ci0gICAgCi0gICAgd2hpbGUgKDxDSEFSU0VUUz4pIHsKLSAgICAgICAgY2hvbXA7Ci0JaWYg
KChteSAkbmV3X2Nhbm9uaWNhbF9uYW1lKSA9IC9OYW1lOiAoW14gXHRdKikuKi8pIHsKLSAgICAg
ICAgICAgICRuZXdfY2Fub25pY2FsX25hbWUgPSBsYyAkbmV3X2Nhbm9uaWNhbF9uYW1lOwotICAg
ICAgICAgICAgJG5ld19jYW5vbmljYWxfbmFtZSA9fiB0ci9hLXowLTkvL2NkOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBlcnJvciAic2F3ICRuZXdfY2Fub25pY2FsX25hbWUgdHdpY2UgaW4g
Y2hhcmFjdGVyLXNldHMudHh0IiwgaWYgJHNlZW57JG5ld19jYW5vbmljYWxfbmFtZX07Ci0gICAg
ICAgICAgICAkc2VlbnskbmV3X2Nhbm9uaWNhbF9uYW1lfSA9ICRuZXdfY2Fub25pY2FsX25hbWU7
Ci0gICAgICAgICAgICAKLQkgICAgcHJvY2Vzc19pYW5hX2NoYXJzZXQgJGNhbm9uaWNhbF9uYW1l
LCBAYWxpYXNlczsKLQkgICAgCi0JICAgICRjYW5vbmljYWxfbmFtZSA9ICRuZXdfY2Fub25pY2Fs
X25hbWU7Ci0JICAgIEBhbGlhc2VzID0gKCk7Ci0JfSBlbHNpZiAoKG15ICRuZXdfYWxpYXMpID0g
L0FsaWFzOiAoW14gXHRdKikuKi8pIHsKLSAgICAgICAgICAgIG5leHQgaWYgJG5ld19hbGlhcyBl
cSAiTm9uZSI7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgICRuZXdfYWxpYXMgPSBsYyAkbmV3
X2FsaWFzOwotICAgICAgICAgICAgJG5ld19hbGlhcyA9fiB0ci9hLXowLTkvL2NkOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBlcnJvciAic2F3ICRuZXdfYWxpYXMgdHdpY2UgaW4gY2hhcmFj
dGVyLXNldHMudHh0ICRzZWVueyRuZXdfYWxpYXN9LCAkY2Fub25pY2FsX25hbWUiLCBpZiAkc2Vl
bnskbmV3X2FsaWFzfSAmJiAkc2VlbnskbmV3X2FsaWFzfSBuZSAkY2Fub25pY2FsX25hbWUgJiYg
ISRleGNlcHRpb25zeyRuZXdfYWxpYXN9OwotICAgICAgICAgICAgcHVzaCBAYWxpYXNlcywgJG5l
d19hbGlhcyBpZiAhJHNlZW57JG5ld19hbGlhc307Ci0gICAgICAgICAgICAkc2VlbnskbmV3X2Fs
aWFzfSA9ICRjYW5vbmljYWxfbmFtZTsgICAgICAgICAgICAKLQl9Ci0gICAgfQotICAgIAotICAg
IHByb2Nlc3NfaWFuYV9jaGFyc2V0ICRjYW5vbmljYWxfbmFtZSwgQGFsaWFzZXM7Ci0gICAgCi0g
ICAgY2xvc2UgQ0hBUlNFVFM7Ci19Ci0KLSMgUHJvZ3JhbSBib2R5Ci0KLXByb2Nlc3NfaWFuYV9j
aGFyc2V0cygkQVJHVlswXSk7Ci1wcm9jZXNzX21hY19lbmNvZGluZ3MoJEFSR1ZbMV0pOwotCi1l
eGl0IDEgaWYgJGVycm9yOwotCi1wcmludCAic3RhdGljIGNvbnN0IENoYXJzZXRFbnRyeSB0YWJs
ZVtdID0ge1xuIjsKLXByaW50ICRvdXRwdXQ7Ci1wcmludCAiICAgIHsgMCwga0NGU3RyaW5nRW5j
b2RpbmdJbnZhbGlkSWQsIE5vRW5jb2RpbmdGbGFncyB9XG59O1xuIjsKSW5kZXg6IGt3cS9LV1FD
aGFyc2V0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGt3cS9LV1FDaGFyc2V0cy5oCShyZXZpc2lvbiAxMjk5
NikKKysrIGt3cS9LV1FDaGFyc2V0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgS1dRQ0hBUlNFVFNfSF8KLSNkZWZpbmUgS1dR
Q0hBUlNFVFNfSF8KLQotI2lmIF9fQVBQTEVfXwotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0Nv
cmVGb3VuZGF0aW9uLmg+Ci0jZW5kaWYKLQotZW51bSBLV1FFbmNvZGluZ0ZsYWdzIHsKLSAgICBO
b0VuY29kaW5nRmxhZ3MgPSAwLAotICAgIFZpc3VhbE9yZGVyaW5nID0gMSwKLSAgICBCaWdFbmRp
YW4gPSAyLAotICAgIExpdHRsZUVuZGlhbiA9IDQsCi0gICAgSXNKYXBhbmVzZSA9IDgKLX07Ci0K
LSNpZiBfX0FQUExFX18KLUNGU3RyaW5nRW5jb2RpbmcgS1dRQ0ZTdHJpbmdFbmNvZGluZ0Zyb21J
QU5BQ2hhcnNldE5hbWUoY29uc3QgY2hhciAqLCBLV1FFbmNvZGluZ0ZsYWdzICpmbGFncyA9IDAp
OwotY29uc3QgY2hhciAqS1dRQ0ZTdHJpbmdFbmNvZGluZ1RvSUFOQUNoYXJzZXROYW1lKENGU3Ry
aW5nRW5jb2RpbmcpOwotI2VuZGlmCi0KLSNlbmRpZiAvKiBLV1FDSEFSU0VUU19IXyAqLwpJbmRl
eDoga3dxL0tXUUNoYXJzZXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrd3EvS1dRQ2hhcnNldHMuY3Bw
CShyZXZpc2lvbiAxMjk5NikKKysrIGt3cS9LV1FDaGFyc2V0cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQWxl
eGV5IFByb3NrdXJ5YWtvdiA8YXBAbnlwb3AuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIktXUUNoYXJzZXRzLmgiCi0KLSNpbmNsdWRlIDx1bmljb2RlL3VjbnYu
aD4KLSNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgotCi1zdHJ1Y3QgQ2hhcnNldEVudHJ5IHsK
LSAgICBjb25zdCBjaGFyICpuYW1lOwotICAgIENGU3RyaW5nRW5jb2RpbmcgZW5jb2Rpbmc7Ci0g
ICAgS1dRRW5jb2RpbmdGbGFncyBmbGFnczsKLX07Ci0KLS8vIFVudGlsIHRoZXJlJ3MgYSBDRlN0
cmluZyBjb25zdGFudCBmb3IgdGhlc2UgZW5jb2RpbmdzLCB0aGlzIHdvcmtzLgotLy8gU2luY2Ug
dGhleSBhcmUgbWFjcm9zLCB0aGV5IHdvbid0IGNhdXNlIGEgY29tcGlsZSBmYWlsdXJlIGV2ZW4g
YSB0aGUgQ0ZTdHJpbmcgY29uc3RhbnQgaXMgYWRkZWQuCi0jZGVmaW5lIGtDRlN0cmluZ0VuY29k
aW5nQmlnNV9ET1NWYXJpYW50IChrVGV4dEVuY29kaW5nQmlnNSB8IChrQmlnNV9ET1NWYXJpYW50
IDw8IDE2KSkKLSNkZWZpbmUga0NGU3RyaW5nRW5jb2RpbmdFVUNfQ05fRE9TVmFyaWFudCAoa1Rl
eHRFbmNvZGluZ0VVQ19DTiB8IChrRVVDX0NOX0RPU1ZhcmlhbnQgPDwgMTYpKQotI2RlZmluZSBr
Q0ZTdHJpbmdFbmNvZGluZ0VVQ19LUl9ET1NWYXJpYW50IChrVGV4dEVuY29kaW5nRVVDX0tSIHwg
KGtFVUNfS1JfRE9TVmFyaWFudCA8PCAxNikpCi0jZGVmaW5lIGtDRlN0cmluZ0VuY29kaW5nSVNP
TGF0aW4xMCBrVGV4dEVuY29kaW5nSVNPTGF0aW4xMAotI2RlZmluZSBrQ0ZTdHJpbmdFbmNvZGlu
Z0tPSThfVSBrVGV4dEVuY29kaW5nS09JOF9VCi0jZGVmaW5lIGtDRlN0cmluZ0VuY29kaW5nU2hp
ZnRKSVNfRE9TVmFyaWFudCAoa1RleHRFbmNvZGluZ1NoaWZ0SklTIHwgKGtTaGlmdEpJU19ET1NW
YXJpYW50IDw8IDE2KSkKLQotLy8gVGhlIGZvbGxvd2luZyBhdXRvZ2VuZXJhdGVkIGZpbGUgaW5j
bHVkZXMgdGhlIGNoYXJzZXQgZGF0YS4KLSNpbmNsdWRlICJLV1FDaGFyc2V0RGF0YS5jIgotCi1z
dGF0aWMgQm9vbGVhbiBlbmNvZGluZ05hbWVzRXF1YWwoY29uc3Qgdm9pZCAqdmFsdWUxLCBjb25z
dCB2b2lkICp2YWx1ZTIpOwotc3RhdGljIENGSGFzaENvZGUgZW5jb2RpbmdOYW1lSGFzaChjb25z
dCB2b2lkICp2YWx1ZSk7Ci0KLXN0YXRpYyBjb25zdCBDRkRpY3Rpb25hcnlLZXlDYWxsQmFja3Mg
ZW5jb2RpbmdOYW1lS2V5Q2FsbGJhY2tzID0geyAwLCBOVUxMLCBOVUxMLCBOVUxMLCBlbmNvZGlu
Z05hbWVzRXF1YWwsIGVuY29kaW5nTmFtZUhhc2ggfTsKLQotc3RhdGljIENGTXV0YWJsZURpY3Rp
b25hcnlSZWYgbmFtZVRvVGFibGUgPSBOVUxMOwotc3RhdGljIENGTXV0YWJsZURpY3Rpb25hcnlS
ZWYgZW5jb2RpbmdUb1RhYmxlID0gTlVMTDsKLQotc3RhdGljIHZvaWQgYnVpbGREaWN0aW9uYXJp
ZXMoKQotewotICAgIG5hbWVUb1RhYmxlID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShOVUxM
LCAwLCAmZW5jb2RpbmdOYW1lS2V5Q2FsbGJhY2tzLCBOVUxMKTsKLSAgICBlbmNvZGluZ1RvVGFi
bGUgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKE5VTEwsIDAsIE5VTEwsIE5VTEwpOwotCi0g
ICAgZm9yIChpbnQgaSA9IDA7IHRhYmxlW2ldLm5hbWUgIT0gTlVMTDsgaSsrKSB7Ci0gICAgICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKG5hbWVUb1RhYmxlLCB0YWJsZVtpXS5uYW1lLCAmdGFibGVb
aV0pOwotICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShlbmNvZGluZ1RvVGFibGUsIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCAqPih0YWJsZVtpXS5lbmNvZGluZyksICZ0YWJsZVtpXSk7Ci0gICAg
fQotfQotCi1DRlN0cmluZ0VuY29kaW5nIEtXUUNGU3RyaW5nRW5jb2RpbmdGcm9tSUFOQUNoYXJz
ZXROYW1lKGNvbnN0IGNoYXIgKm5hbWUsIEtXUUVuY29kaW5nRmxhZ3MgKmZsYWdzKQotewotICAg
IGlmIChuYW1lVG9UYWJsZSA9PSBOVUxMKSB7Ci0gICAgICAgIGJ1aWxkRGljdGlvbmFyaWVzKCk7
Ci0gICAgfQotCi0gICAgY29uc3Qgdm9pZCAqdmFsdWU7Ci0gICAgaWYgKCFDRkRpY3Rpb25hcnlH
ZXRWYWx1ZUlmUHJlc2VudChuYW1lVG9UYWJsZSwgbmFtZSwgJnZhbHVlKSkgewotICAgICAgICBV
RXJyb3JDb2RlIGVyciA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgbmFtZSA9IHVjbnZfZ2V0U3Rh
bmRhcmROYW1lKG5hbWUsICJJQU5BIiwgJmVycik7Ci0gICAgICAgIAotICAgICAgICBpZiAoIW5h
bWUgfHwgIUNGRGljdGlvbmFyeUdldFZhbHVlSWZQcmVzZW50KG5hbWVUb1RhYmxlLCBuYW1lLCAm
dmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoZmxhZ3MpIHsKLSAgICAgICAgICAgICAgICAqZmxh
Z3MgPSBOb0VuY29kaW5nRmxhZ3M7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4g
a0NGU3RyaW5nRW5jb2RpbmdJbnZhbGlkSWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGZs
YWdzKSB7Ci0gICAgICAgICpmbGFncyA9IHN0YXRpY19jYXN0PGNvbnN0IENoYXJzZXRFbnRyeSAq
Pih2YWx1ZSktPmZsYWdzOwotICAgIH0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ2hh
cnNldEVudHJ5ICo+KHZhbHVlKS0+ZW5jb2Rpbmc7Ci19Ci0KLWNvbnN0IGNoYXIgKktXUUNGU3Ry
aW5nRW5jb2RpbmdUb0lBTkFDaGFyc2V0TmFtZShDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nKQot
ewotICAgIGlmIChlbmNvZGluZ1RvVGFibGUgPT0gTlVMTCkgewotICAgICAgICBidWlsZERpY3Rp
b25hcmllcygpOwotICAgIH0KLSAgICAKLSAgICBjb25zdCB2b2lkICp2YWx1ZTsKLSAgICBpZiAo
IUNGRGljdGlvbmFyeUdldFZhbHVlSWZQcmVzZW50KGVuY29kaW5nVG9UYWJsZSwgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkICo+KGVuY29kaW5nKSwgJnZhbHVlKSkgewotICAgICAgICByZXR1cm4gTlVM
TDsKLSAgICB9Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENoYXJzZXRFbnRyeSAqPih2
YWx1ZSktPm5hbWU7Ci19Ci0KLXN0YXRpYyBCb29sZWFuIGVuY29kaW5nTmFtZXNFcXVhbChjb25z
dCB2b2lkICp2YWx1ZTEsIGNvbnN0IHZvaWQgKnZhbHVlMikKLXsKLSAgICBjb25zdCBjaGFyICpz
MSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4odmFsdWUxKTsKLSAgICBjb25zdCBjaGFyICpz
MiA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4odmFsdWUyKTsKLSAgICAKLSAgICB3aGlsZSAo
MSkgewotICAgICAgICBjaGFyIGMxOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBjMSA9ICpz
MSsrOwotICAgICAgICB9IHdoaWxlIChjMSAmJiAhaXNhbG51bShjMSkpOwotICAgICAgICBjaGFy
IGMyOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBjMiA9ICpzMisrOwotICAgICAgICB9IHdo
aWxlIChjMiAmJiAhaXNhbG51bShjMikpOwotICAgICAgICAKLSAgICAgICAgaWYgKHRvbG93ZXIo
YzEpICE9IHRvbG93ZXIoYzIpKSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIGlmICghYzEgfHwgIWMyKSB7Ci0gICAgICAgICAgICByZXR1
cm4gIWMxICYmICFjMjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotLy8gR29sZGVuIHJhdGlvIC0g
YXJiaXRyYXJ5IHN0YXJ0IHZhbHVlIHRvIGF2b2lkIG1hcHBpbmcgYWxsIDAncyB0byBhbGwgMCdz
Ci0vLyBvciBhbnl0aGluZyBsaWtlIHRoYXQuCi1jb25zdCB1bnNpZ25lZCBQSEkgPSAweDllMzc3
OWI5VTsKLQotLy8gVGhpcyBoYXNoIGFsZ29yaXRobSBjb21lcyBmcm9tOgotLy8gaHR0cDovL2J1
cnRsZWJ1cnRsZS5uZXQvYm9iL2hhc2gvaGFzaGZhcS5odG1sCi0vLyBodHRwOi8vYnVydGxlYnVy
dGxlLm5ldC9ib2IvaGFzaC9kb29icy5odG1sCi1zdGF0aWMgQ0ZIYXNoQ29kZSBlbmNvZGluZ05h
bWVIYXNoKGNvbnN0IHZvaWQgKnZhbHVlKQotewotICAgIGNvbnN0IGNoYXIgKnMgPSBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyICo+KHZhbHVlKTsKLSAgICAKLSAgICBDRkhhc2hDb2RlIGggPSBQSEk7
Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSAhPSAxNjsgKytpKSB7Ci0gICAgICAgIGNoYXIgYzsK
LSAgICAgICAgZG8gewotICAgICAgICAgICAgYyA9ICpzKys7Ci0gICAgICAgIH0gd2hpbGUgKGMg
JiYgIWlzYWxudW0oYykpOwotICAgICAgICBpZiAoIWMpIHsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGggKz0gdG9sb3dlcihjKTsKLSAgICAgICAgaCArPSAoaCA8PCAx
MCk7IAotICAgICAgICBoIF49IChoID4+IDYpOyAKLSAgICB9Ci0KLSAgICBoICs9IChoIDw8IDMp
OwotICAgIGggXj0gKGggPj4gMTEpOwotICAgIGggKz0gKGggPDwgMTUpOwotIAotICAgIHJldHVy
biBoOwotfQpJbmRleDoga3dxL0tXUVRleHRDb2RlYy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3dxL0tX
UVRleHRDb2RlYy5jcHAJKHJldmlzaW9uIDEyOTk2KQorKysga3dxL0tXUVRleHRDb2RlYy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNTU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJLV1FUZXh0Q29kZWMuaCIKLQotI2luY2x1ZGUg
PGt4bWxjb3JlL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlICJLV1FDaGFyc2V0cy5oIgotI2luY2x1
ZGUgIktXUUxvZ2dpbmcuaCIKLSNpbmNsdWRlIDx1bmljb2RlL3VjbnYuaD4KLSNpbmNsdWRlIDx1
bmljb2RlL3V0eXBlcy5oPgotCi1jb25zdCBVbmlDaGFyIHJlcGxhY2VtZW50Q2hhcmFjdGVyID0g
MHhGRkZEOwotY29uc3QgVW5pQ2hhciBCT00gPSAweEZFRkY7Ci0KLXN0YXRpYyBjb25zdCBpbnQg
Q29udmVyc2lvbkJ1ZmZlclNpemUgPSAxNjM4NDsKLQotY2xhc3MgS1dRVGV4dERlY29kZXIgOiBw
dWJsaWMgUVRleHREZWNvZGVyIHsKLXB1YmxpYzoKLSAgICBLV1FUZXh0RGVjb2RlcihDRlN0cmlu
Z0VuY29kaW5nLCBLV1FFbmNvZGluZ0ZsYWdzKTsKLSAgICB+S1dRVGV4dERlY29kZXIoKTsKLSAg
ICAKLSAgICBRU3RyaW5nIHRvVW5pY29kZShjb25zdCBjaGFyICpjaHMsIGludCBsZW4sIGJvb2wg
Zmx1c2gpOwotCi1wcml2YXRlOgotICAgIFFTdHJpbmcgY29udmVydChjb25zdCBjaGFyICpjaHMs
IGludCBsZW4sIGJvb2wgZmx1c2gpCi0gICAgICAgIHsgcmV0dXJuIGNvbnZlcnQocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyICo+KGNocyksIGxlbiwgZmx1c2gpOyB9Ci0gICAg
UVN0cmluZyBjb252ZXJ0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNocywgaW50IGxlbiwgYm9vbCBm
bHVzaCk7Ci0gICAgUVN0cmluZyBjb252ZXJ0TGF0aW4xKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNo
cywgaW50IGxlbik7Ci0gICAgUVN0cmluZyBjb252ZXJ0VVRGMTYoY29uc3QgdW5zaWduZWQgY2hh
ciAqY2hzLCBpbnQgbGVuKTsKLSAgICAKLSAgICAvLyBJQ1UgZGVjb2RpbmcuCi0gICAgUVN0cmlu
ZyBjb252ZXJ0VXNpbmdJQ1UoY29uc3QgdW5zaWduZWQgY2hhciAqY2hzLCBpbnQgbGVuLCBib29s
IGZsdXNoKTsKLSAgICBVRXJyb3JDb2RlIGNyZWF0ZUlDVUNvbnZlcnRlcigpOwotCi0gICAgc3Rh
dGljIHZvaWQgYXBwZW5kT21pdHRpbmdVbndhbnRlZChRU3RyaW5nICZzLCBjb25zdCBVbmlDaGFy
ICpjaGFyYWN0ZXJzLCBpbnQgYnl0ZUNvdW50KTsKLSAgICAKLSAgICBLV1FUZXh0RGVjb2Rlcihj
b25zdCBLV1FUZXh0RGVjb2RlciAmKTsKLSAgICBLV1FUZXh0RGVjb2RlciAmb3BlcmF0b3I9KGNv
bnN0IEtXUVRleHREZWNvZGVyICYpOwotCi0gICAgQ0ZTdHJpbmdFbmNvZGluZyBfZW5jb2Rpbmc7
Ci0gICAgYm9vbCBfbGl0dGxlRW5kaWFuOwotICAgIGJvb2wgX2F0U3RhcnQ7Ci0gICAgYm9vbCBf
ZXJyb3I7Ci0KLSAgICB1bnNpZ25lZCBfbnVtQnVmZmVyZWRCeXRlczsKLSAgICB1bnNpZ25lZCBj
aGFyIF9idWZmZXJlZEJ5dGVzWzE2XTsgLy8gYmlnZ2VyIHRoYW4gYW55IHNpbmdsZSBtdWx0aS1i
eXRlIGNoYXJhY3RlcgotCi0gICAgLy8gSUNVIGRlY29kaW5nLgotICAgIFVDb252ZXJ0ZXIgKl9j
b252ZXJ0ZXJJQ1U7Ci0gICAgc3RhdGljIFVDb252ZXJ0ZXIgKl9jYWNoZWRDb252ZXJ0ZXJJQ1U7
Ci0gICAgc3RhdGljIENGU3RyaW5nRW5jb2RpbmcgX2NhY2hlZENvbnZlcnRlckVuY29kaW5nOwot
fTsKLQotVUNvbnZlcnRlciAqS1dRVGV4dERlY29kZXI6Ol9jYWNoZWRDb252ZXJ0ZXJJQ1U7Ci1D
RlN0cmluZ0VuY29kaW5nIEtXUVRleHREZWNvZGVyOjpfY2FjaGVkQ29udmVydGVyRW5jb2Rpbmcg
PSBrQ0ZTdHJpbmdFbmNvZGluZ0ludmFsaWRJZDsKLQotc3RhdGljIEJvb2xlYW4gUVRleHRDb2Rl
Y3NFcXVhbChjb25zdCB2b2lkICp2YWx1ZTEsIGNvbnN0IHZvaWQgKnZhbHVlMik7Ci1zdGF0aWMg
Q0ZIYXNoQ29kZSBRVGV4dENvZGVjSGFzaChjb25zdCB2b2lkICp2YWx1ZSk7Ci0KLXN0YXRpYyBR
VGV4dENvZGVjICpjb2RlY0ZvckNGU3RyaW5nRW5jb2RpbmcoQ0ZTdHJpbmdFbmNvZGluZyBlbmNv
ZGluZywgS1dRRW5jb2RpbmdGbGFncyBmbGFncykKLXsKLSAgICBpZiAoZW5jb2RpbmcgPT0ga0NG
U3RyaW5nRW5jb2RpbmdJbnZhbGlkSWQpIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAg
IAotICAgIHN0YXRpYyBjb25zdCBDRkRpY3Rpb25hcnlLZXlDYWxsQmFja3MgUVRleHRDb2RlY0tl
eUNhbGxiYWNrcyA9IHsgMCwgTlVMTCwgTlVMTCwgTlVMTCwgUVRleHRDb2RlY3NFcXVhbCwgUVRl
eHRDb2RlY0hhc2ggfTsKLSAgICBzdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBlbmNvZGlu
Z1RvQ29kZWMgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKE5VTEwsIDAsICZRVGV4dENvZGVj
S2V5Q2FsbGJhY2tzLCBOVUxMKTsKLSAgICAKLSAgICBRVGV4dENvZGVjIGtleShlbmNvZGluZywg
ZmxhZ3MpOwotICAgIGNvbnN0IHZvaWQgKnZhbHVlOwotICAgIGlmIChDRkRpY3Rpb25hcnlHZXRW
YWx1ZUlmUHJlc2VudChlbmNvZGluZ1RvQ29kZWMsICZrZXksICZ2YWx1ZSkpIHsKLSAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8UVRleHRDb2RlYyAqPihzdGF0aWNfY2FzdDxjb25zdCBRVGV4dENv
ZGVjICo+KHZhbHVlKSk7Ci0gICAgfQotICAgIFFUZXh0Q29kZWMgKmNvZGVjID0gbmV3IFFUZXh0
Q29kZWMoZW5jb2RpbmcsIGZsYWdzKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShlbmNvZGlu
Z1RvQ29kZWMsIGNvZGVjLCBjb2RlYyk7Ci0gICAgcmV0dXJuIGNvZGVjOwotfQotCi1RVGV4dENv
ZGVjKiBRVGV4dENvZGVjOjpjb2RlY0Zvck5hbWUoY29uc3QgY2hhciogbmFtZSkKLXsKLSAgICBL
V1FFbmNvZGluZ0ZsYWdzIGZsYWdzOwotICAgIENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcgPSBL
V1FDRlN0cmluZ0VuY29kaW5nRnJvbUlBTkFDaGFyc2V0TmFtZShuYW1lLCAmZmxhZ3MpOwotICAg
IHJldHVybiBjb2RlY0ZvckNGU3RyaW5nRW5jb2RpbmcoZW5jb2RpbmcsIGZsYWdzKTsKLX0KLQot
UVRleHRDb2RlYyogUVRleHRDb2RlYzo6dXRmOENvZGVjKCkKLXsKLSAgICByZXR1cm4gY29kZWNG
b3JDRlN0cmluZ0VuY29kaW5nKGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgTm9FbmNvZGluZ0ZsYWdz
KTsKLX0KLQotUVRleHRDb2RlYyogUVRleHRDb2RlYzo6Y29kZWNGb3JOYW1lRWlnaHRCaXRPbmx5
KGNvbnN0IGNoYXIqIG5hbWUpCi17Ci0gICAgS1dRRW5jb2RpbmdGbGFncyBmbGFnczsKLSAgICBD
RlN0cmluZ0VuY29kaW5nIGVuY29kaW5nID0gS1dRQ0ZTdHJpbmdFbmNvZGluZ0Zyb21JQU5BQ2hh
cnNldE5hbWUobmFtZSwgJmZsYWdzKTsKLSAgICBzd2l0Y2ggKGVuY29kaW5nKSB7Ci0gICAgICAg
IGNhc2Uga0NGU3RyaW5nRW5jb2RpbmdVbmljb2RlOgotICAgICAgICAgICAgZW5jb2RpbmcgPSBr
Q0ZTdHJpbmdFbmNvZGluZ1VURjg7Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0
dXJuIGNvZGVjRm9yQ0ZTdHJpbmdFbmNvZGluZyhlbmNvZGluZywgZmxhZ3MpOwotfQotCi1RVGV4
dENvZGVjKiBRVGV4dENvZGVjOjpjb2RlY0ZvckxvY2FsZSgpCi17Ci0gICAgcmV0dXJuIGNvZGVj
Rm9yQ0ZTdHJpbmdFbmNvZGluZyhDRlN0cmluZ0dldFN5c3RlbUVuY29kaW5nKCksIE5vRW5jb2Rp
bmdGbGFncyk7Ci19Ci0KLWNvbnN0IGNoYXIqIFFUZXh0Q29kZWM6Om5hbWUoKSBjb25zdAotewot
ICAgIHJldHVybiBLV1FDRlN0cmluZ0VuY29kaW5nVG9JQU5BQ2hhcnNldE5hbWUoX2VuY29kaW5n
KTsKLX0KLQotUVRleHREZWNvZGVyKiBRVGV4dENvZGVjOjptYWtlRGVjb2RlcigpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG5ldyBLV1FUZXh0RGVjb2RlcihfZW5jb2RpbmcsIF9mbGFncyk7Ci19Ci0K
LWlubGluZSBDRlN0cmluZ0VuY29kaW5nIGVmZmVjdGl2ZUVuY29kaW5nKENGU3RyaW5nRW5jb2Rp
bmcgZSkKLXsKLSAgICBzd2l0Y2ggKGUpIHsKLSAgICAgICAgY2FzZSBrQ0ZTdHJpbmdFbmNvZGlu
Z0lTT0xhdGluMToKLSAgICAgICAgY2FzZSBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJOgotICAgICAg
ICAgICAgZSA9IGtDRlN0cmluZ0VuY29kaW5nV2luZG93c0xhdGluMTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICByZXR1cm4gZTsKLX0KLQotUUNTdHJpbmcgUVRleHRDb2RlYzo6ZnJv
bVVuaWNvZGUoY29uc3QgUVN0cmluZyAmcWNzLCBib29sIGFsbG93RW50aXRpZXMpIGNvbnN0Ci17
Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWFsbHkgdXNlIHRoZSBzYW1lIEFQSSBpbiBib3Ro
IGRpcmVjdGlvbnMuCi0gICAgLy8gQ3VycmVudGx5IHdlIHVzZSBJQ1UgdG8gZGVjb2RlIGFuZCBD
RlN0cmluZyB0byBlbmNvZGU7IGl0IHdvdWxkIGJlIGJldHRlciB0byBlbmNvZGUgd2l0aCBJQ1Ug
dG9vLgotICAgIAotICAgIENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcgPSBlZmZlY3RpdmVFbmNv
ZGluZyhfZW5jb2RpbmcpOwotCi0gICAgLy8gRklYTUU6IFNpbmNlIHRoZXJlJ3Mgbm8gImZvcmNl
IEFTQ0lJIHJhbmdlIiBtb2RlIGluIENGU3RyaW5nLCB3ZSBjaGFuZ2UgdGhlIGJhY2tzbGFzaCBp
bnRvIGEgeWVuIHNpZ24uCi0gICAgLy8gRW5jb2Rpbmcgd2lsbCBjaGFuZ2UgdGhlIHllbiBzaWdu
IGJhY2sgaW50byBhIGJhY2tzbGFzaC4KLSAgICBRU3RyaW5nIGNvcHkgPSBxY3M7Ci0gICAgY29w
eS5yZXBsYWNlKFFDaGFyKCdcXCcpLCBiYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sKCkpOwotICAg
IENGU3RyaW5nUmVmIGNmcyA9IGNvcHkuZ2V0Q0ZTdHJpbmcoKTsKLSAgICAKLSAgICBDRkluZGV4
IHN0YXJ0UG9zID0gMDsKLSAgICBDRkluZGV4IGNoYXJhY3RlcnNMZWZ0ID0gQ0ZTdHJpbmdHZXRM
ZW5ndGgoY2ZzKTsKLSAgICBRQ1N0cmluZyByZXN1bHQoMSk7IC8vIGZvciB0cmFpbG5nIHplcm8K
LQotICAgIHdoaWxlIChjaGFyYWN0ZXJzTGVmdCA+IDApIHsKLSAgICAgICAgQ0ZSYW5nZSByYW5n
ZSA9IENGUmFuZ2VNYWtlKHN0YXJ0UG9zLCBjaGFyYWN0ZXJzTGVmdCk7Ci0gICAgICAgIENGSW5k
ZXggYnVmZmVyTGVuZ3RoOwotICAgICAgICBDRlN0cmluZ0dldEJ5dGVzKGNmcywgcmFuZ2UsIGVu
Y29kaW5nLCBhbGxvd0VudGl0aWVzID8gMCA6ICc/JywgZmFsc2UsIE5VTEwsIDB4N0ZGRkZGRkYs
ICZidWZmZXJMZW5ndGgpOwotICAgICAgICAKLSAgICAgICAgUUNTdHJpbmcgY2h1bmsoYnVmZmVy
TGVuZ3RoICsgMSk7Ci0gICAgICAgIENGSW5kZXggY2hhcmFjdGVyc0NvbnZlcnRlZCA9IENGU3Ry
aW5nR2V0Qnl0ZXMoY2ZzLCByYW5nZSwgZW5jb2RpbmcsIGFsbG93RW50aXRpZXMgPyAwIDogJz8n
LCBmYWxzZSwgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyICo+KGNodW5rLmRhdGEoKSks
IGJ1ZmZlckxlbmd0aCwgJmJ1ZmZlckxlbmd0aCk7Ci0gICAgICAgIGNodW5rW2J1ZmZlckxlbmd0
aF0gPSAwOwotICAgICAgICByZXN1bHQuYXBwZW5kKGNodW5rKTsKLSAgICAgICAgCi0gICAgICAg
IGlmIChjaGFyYWN0ZXJzQ29udmVydGVkICE9IGNoYXJhY3RlcnNMZWZ0KSB7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogc3VwcG9ydCBzdXJyb2dhdGUgcGFpcnMKLSAgICAgICAgICAgIFVuaUNoYXIg
YmFkQ2hhciA9IENGU3RyaW5nR2V0Q2hhcmFjdGVyQXRJbmRleChjZnMsIHN0YXJ0UG9zICsgY2hh
cmFjdGVyc0NvbnZlcnRlZCk7Ci0gICAgICAgICAgICBjaGFyIGJ1ZlsxNl07Ci0gICAgICAgICAg
ICBzcHJpbnRmKGJ1ZiwgIiYjJXU7IiwgYmFkQ2hhcik7Ci0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKGJ1Zik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgICsrY2hhcmFjdGVyc0NvbnZlcnRl
ZDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3RhcnRQb3MgKz0gY2hhcmFjdGVyc0Nv
bnZlcnRlZDsKLSAgICAgICAgY2hhcmFjdGVyc0xlZnQgLT0gY2hhcmFjdGVyc0NvbnZlcnRlZDsK
LSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUVN0cmluZyBRVGV4dENvZGVjOjp0b1Vu
aWNvZGUoY29uc3QgY2hhciAqY2hzLCBpbnQgbGVuKSBjb25zdAotewotICAgIHJldHVybiBLV1FU
ZXh0RGVjb2RlcihfZW5jb2RpbmcsIF9mbGFncykudG9Vbmljb2RlKGNocywgbGVuLCB0cnVlKTsK
LX0KLQotUVN0cmluZyBRVGV4dENvZGVjOjp0b1VuaWNvZGUoY29uc3QgQnl0ZUFycmF5ICZxYmEs
IGludCBsZW4pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEtXUVRleHREZWNvZGVyKF9lbmNvZGluZywg
X2ZsYWdzKS50b1VuaWNvZGUocWJhLCBsZW4sIHRydWUpOwotfQotCi1RQ2hhciBRVGV4dENvZGVj
OjpiYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHB1dCB0aGlzIGluZm9ybWF0aW9uIGludG8gS1dRQ2hhcnNldERhdGEgaW5zdGVhZCBv
ZiBoYXZpbmcgYSBzd2l0Y2ggaGVyZS4KLSAgICBzd2l0Y2ggKF9lbmNvZGluZykgewotICAgICAg
ICBjYXNlIGtDRlN0cmluZ0VuY29kaW5nU2hpZnRKSVNfWDAyMTNfMDA6Ci0gICAgICAgIGNhc2Ug
a0NGU3RyaW5nRW5jb2RpbmdFVUNfSlA6Ci0gICAgICAgICAgICByZXR1cm4gMHgwMEE1OyAvLyB5
ZW4gc2lnbgotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuICdcXCc7Ci0gICAg
fQotfQotCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgUVRleHRDb2RlYyAmYSwgY29uc3QgUVRleHRD
b2RlYyAmYikKLXsKLSAgICByZXR1cm4gYS5fZW5jb2RpbmcgPT0gYi5fZW5jb2RpbmcgJiYgYS5f
ZmxhZ3MgPT0gYi5fZmxhZ3M7Ci19Ci0KLS8vIEdvbGRlbiByYXRpbyAtIGFyYml0cmFyeSBzdGFy
dCB2YWx1ZSB0byBhdm9pZCBtYXBwaW5nIGFsbCAwJ3MgdG8gYWxsIDAncwotLy8gb3IgYW55dGhp
bmcgbGlrZSB0aGF0LgotY29uc3QgdW5zaWduZWQgUEhJID0gMHg5ZTM3NzliOVU7Ci0KLS8vIFBh
dWwgSHNpZWgncyBTdXBlckZhc3RIYXNoCi0vLyBodHRwOi8vd3d3LmF6aWxsaW9ubW9ua2V5cy5j
b20vcWVkL2hhc2guaHRtbAotLy8gQWRhcHRlZCBhc3N1bWluZyBfZW5jb2RpbmcgaXMgMzIgYml0
cyBhbmQgX2ZsYWdzIGlzIGF0IG1vc3QgMTYgYml0cwotdW5zaWduZWQgUVRleHRDb2RlYzo6aGFz
aCgpIGNvbnN0Ci17Ci0gICAgdWludDMyX3QgaGFzaCA9IFBISTsKLSAgICB1aW50MzJfdCB0bXA7
Ci0gICAgCi0gICAgaGFzaCArPSBfZW5jb2RpbmcgJiAweGZmZmY7Ci0gICAgdG1wID0gKChfZW5j
b2RpbmcgPj4gMTYpIDw8IDExKSBeIGhhc2g7Ci0gICAgaGFzaCA9IChoYXNoIDw8IDE2KSBeIHRt
cDsKLSAgICBoYXNoICs9IGhhc2ggPj4gMTE7Ci0gICAgCi0gICAgaGFzaCArPSBfZmxhZ3MgJiAw
eGZmZmY7Ci0gICAgaGFzaCBePSBoYXNoIDw8IDExOwotICAgIGhhc2ggKz0gaGFzaCA+PiAxNzsK
LQotICAgIC8vIEZvcmNlICJhdmFsYW5jaGluZyIgb2YgZmluYWwgMTI3IGJpdHMKLSAgICBoYXNo
IF49IGhhc2ggPDwgMzsKLSAgICBoYXNoICs9IGhhc2ggPj4gNTsKLSAgICBoYXNoIF49IGhhc2gg
PDwgMjsKLSAgICBoYXNoICs9IGhhc2ggPj4gMTU7Ci0gICAgaGFzaCBePSBoYXNoIDw8IDEwOwot
Ci0gICAgcmV0dXJuIGhhc2g7Ci19Ci0KLXN0YXRpYyBCb29sZWFuIFFUZXh0Q29kZWNzRXF1YWwo
Y29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKLXsKLSAgICByZXR1cm4gKnN0YXRpY19jYXN0
PGNvbnN0IFFUZXh0Q29kZWMgKj4oYSkgPT0gKnN0YXRpY19jYXN0PGNvbnN0IFFUZXh0Q29kZWMg
Kj4oYik7Ci19Ci0KLXN0YXRpYyBDRkhhc2hDb2RlIFFUZXh0Q29kZWNIYXNoKGNvbnN0IHZvaWQg
KnZhbHVlKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBRVGV4dENvZGVjICo+KHZh
bHVlKS0+aGFzaCgpOwotfQotCi0vLyA9PT09PT09PT09PT09PT09Ci0KLVFUZXh0RGVjb2Rlcjo6
flFUZXh0RGVjb2RlcigpCi17Ci19Ci0KLS8vID09PT09PT09PT09PT09PT0KLQotS1dRVGV4dERl
Y29kZXI6OktXUVRleHREZWNvZGVyKENGU3RyaW5nRW5jb2RpbmcgZSwgS1dRRW5jb2RpbmdGbGFn
cyBmKQotICAgIDogX2VuY29kaW5nKGUpLCBfbGl0dGxlRW5kaWFuKGYgJiA6OkxpdHRsZUVuZGlh
biksIF9hdFN0YXJ0KHRydWUpLCBfZXJyb3IoZmFsc2UpCi0gICAgLCBfbnVtQnVmZmVyZWRCeXRl
cygwKSwgX2NvbnZlcnRlcklDVSgwKQotewotfQotCi1LV1FUZXh0RGVjb2Rlcjo6fktXUVRleHRE
ZWNvZGVyKCkKLXsKLSAgICBpZiAoX2NvbnZlcnRlcklDVSkgewotICAgICAgICBpZiAoX2NhY2hl
ZENvbnZlcnRlcklDVSAhPSAwKSB7Ci0gICAgICAgICAgICB1Y252X2Nsb3NlKF9jYWNoZWRDb252
ZXJ0ZXJJQ1UpOwotICAgICAgICB9Ci0gICAgICAgIF9jYWNoZWRDb252ZXJ0ZXJJQ1UgPSBfY29u
dmVydGVySUNVOwotICAgICAgICBfY2FjaGVkQ29udmVydGVyRW5jb2RpbmcgPSBfZW5jb2Rpbmc7
Ci0gICAgfQotfQotCi1RU3RyaW5nIEtXUVRleHREZWNvZGVyOjpjb252ZXJ0TGF0aW4xKGNvbnN0
IHVuc2lnbmVkIGNoYXIgKnMsIGludCBsZW5ndGgpCi17Ci0gICAgQVNTRVJUKF9udW1CdWZmZXJl
ZEJ5dGVzID09IDApOwotCi0gICAgcmV0dXJuIFFTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyICo+KHMpLCBsZW5ndGgpOwotfQotCi1RU3RyaW5nIEtXUVRleHREZWNvZGVyOjpjb252
ZXJ0VVRGMTYoY29uc3QgdW5zaWduZWQgY2hhciAqcywgaW50IGxlbmd0aCkKLXsKLSAgICBBU1NF
UlQoX251bUJ1ZmZlcmVkQnl0ZXMgPT0gMCB8fCBfbnVtQnVmZmVyZWRCeXRlcyA9PSAxKTsKLQot
ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAgPSBzOwotICAgIHVuc2lnbmVkIGxlbiA9IGxlbmd0
aDsKLSAgICAKLSAgICBRU3RyaW5nIHJlc3VsdCgiIik7Ci0gICAgCi0gICAgcmVzdWx0LnJlc2Vy
dmUobGVuZ3RoIC8gMik7Ci0KLSAgICBpZiAoX251bUJ1ZmZlcmVkQnl0ZXMgIT0gMCAmJiBsZW4g
IT0gMCkgewotICAgICAgICBBU1NFUlQoX251bUJ1ZmZlcmVkQnl0ZXMgPT0gMSk7Ci0gICAgICAg
IFVuaUNoYXIgYzsKLSAgICAgICAgaWYgKF9saXR0bGVFbmRpYW4pIHsKLSAgICAgICAgICAgIGMg
PSBfYnVmZmVyZWRCeXRlc1swXSB8IChwWzBdIDw8IDgpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgYyA9IChfYnVmZmVyZWRCeXRlc1swXSA8PCA4KSB8IHBbMF07Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKGMpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVpbnRlcnByZXRf
Y2FzdDxRQ2hhciAqPigmYyksIDEpOwotICAgICAgICB9Ci0gICAgICAgIF9udW1CdWZmZXJlZEJ5
dGVzID0gMDsKLSAgICAgICAgcCArPSAxOwotICAgICAgICBsZW4gLT0gMTsKLSAgICB9Ci0gICAg
Ci0gICAgd2hpbGUgKGxlbiA+IDEpIHsKLSAgICAgICAgVW5pQ2hhciBidWZmZXJbQ29udmVyc2lv
bkJ1ZmZlclNpemVdOwotICAgICAgICBpbnQgcnVuTGVuZ3RoID0gTUlOKGxlbiAvIDIsIHNpemVv
ZihidWZmZXIpIC8gc2l6ZW9mKGJ1ZmZlclswXSkpOwotICAgICAgICBpbnQgYnVmZmVyTGVuZ3Ro
ID0gMDsKLSAgICAgICAgaWYgKF9saXR0bGVFbmRpYW4pIHsKLSAgICAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgcnVuTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBVbmlDaGFyIGMg
PSBwWzBdIHwgKHBbMV0gPDwgOCk7Ci0gICAgICAgICAgICAgICAgcCArPSAyOwotICAgICAgICAg
ICAgICAgIGlmIChjICYmIGMgIT0gQk9NKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlclti
dWZmZXJMZW5ndGgrK10gPSBjOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcnVuTGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgICAgICBVbmlDaGFyIGMgPSAocFswXSA8PCA4KSB8IHBbMV07
Ci0gICAgICAgICAgICAgICAgcCArPSAyOwotICAgICAgICAgICAgICAgIGlmIChjICYmIGMgIT0g
Qk9NKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltidWZmZXJMZW5ndGgrK10gPSBjOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXN1
bHQuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8UUNoYXIgKj4oYnVmZmVyKSwgYnVmZmVyTGVuZ3Ro
KTsKLSAgICAgICAgbGVuIC09IHJ1bkxlbmd0aCAqIDI7Ci0gICAgfQotICAgIAotICAgIGlmIChs
ZW4pIHsKLSAgICAgICAgQVNTRVJUKF9udW1CdWZmZXJlZEJ5dGVzID09IDApOwotICAgICAgICBf
bnVtQnVmZmVyZWRCeXRlcyA9IDE7Ci0gICAgICAgIF9idWZmZXJlZEJ5dGVzWzBdID0gcFswXTsK
LSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotVUVycm9yQ29kZSBLV1FUZXh0
RGVjb2Rlcjo6Y3JlYXRlSUNVQ29udmVydGVyKCkKLXsKLSAgICBjb25zdCBDRlN0cmluZ0VuY29k
aW5nIGVuY29kaW5nID0gZWZmZWN0aXZlRW5jb2RpbmcoX2VuY29kaW5nKTsKLSAgICBjb25zdCBj
aGFyICplbmNvZGluZ05hbWUgPSBLV1FDRlN0cmluZ0VuY29kaW5nVG9JQU5BQ2hhcnNldE5hbWUo
ZW5jb2RpbmcpOwotCi0gICAgYm9vbCBjYWNoZWRFbmNvZGluZ0VxdWFsID0gX2NhY2hlZENvbnZl
cnRlckVuY29kaW5nID09IGVuY29kaW5nOwotICAgIF9jYWNoZWRDb252ZXJ0ZXJFbmNvZGluZyA9
IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElkOwotCi0gICAgaWYgKGNhY2hlZEVuY29kaW5nRXF1
YWwgJiYgX2NhY2hlZENvbnZlcnRlcklDVSkgewotICAgICAgICBfY29udmVydGVySUNVID0gX2Nh
Y2hlZENvbnZlcnRlcklDVTsKLSAgICAgICAgX2NhY2hlZENvbnZlcnRlcklDVSA9IDA7Ci0gICAg
ICAgIExPRyhUZXh0Q29udmVyc2lvbiwgInVzaW5nIGNhY2hlZCBJQ1UgY29udmVydGVyIGZvciBl
bmNvZGluZzogJXMiLCBlbmNvZGluZ05hbWUpOwotICAgIH0gZWxzZSB7ICAgIAotICAgICAgICBV
RXJyb3JDb2RlIGVyciA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgQVNTRVJUKCFfY29udmVydGVy
SUNVKTsKLSAgICAgICAgTE9HKFRleHRDb252ZXJzaW9uLCAiY3JlYXRpbmcgSUNVIGNvbnZlcnRl
ciBmb3IgZW5jb2Rpbmc6ICVzIiwgZW5jb2RpbmdOYW1lKTsKLSAgICAgICAgX2NvbnZlcnRlcklD
VSA9IHVjbnZfb3BlbihlbmNvZGluZ05hbWUsICZlcnIpOwotICAgICAgICBpZiAoZXJyID09IFVf
QU1CSUdVT1VTX0FMSUFTX1dBUk5JTkcpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiSUNVIGFt
YmlndW91cyBhbGlhcyB3YXJuaW5nIGZvciBlbmNvZGluZzogJXMiLCBlbmNvZGluZ05hbWUpOwot
ICAgICAgICB9Ci0gICAgICAgIGlmICghX2NvbnZlcnRlcklDVSkgewotICAgICAgICAgICAgTE9H
X0VSUk9SKCJ0aGUgSUNVIENvbnZlcnRlciB3b24ndCBjb252ZXJ0IGZyb20gdGV4dCBlbmNvZGlu
ZyAweCVYLCBlcnJvciAlZCIsIGVuY29kaW5nLCBlcnIpOwotICAgICAgICAgICAgcmV0dXJuIGVy
cjsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gVV9aRVJPX0VSUk9SOwotfQot
Ci0vLyBXZSBzdHJpcCByZXBsYWNlbWVudCBjaGFyYWN0ZXJzIGJlY2F1c2UgdGhlIElDVSBjb252
ZXJ0ZXIgZm9yIFVURi04IGNvbnZlcnRzCi0vLyBpbnZhbGlkIHNlcXVlbmNlcyBpbnRvIHJlcGxh
Y2VtZW50IGNoYXJhY3RlcnMsIGJ1dCBvdGhlciBicm93c2VycyBkaXNjYXJkIHRoZW0uCi0vLyBX
ZSBzdHJpcCBCT00gY2hhcmFjdGVycyBiZWNhdXNlIHRoZXkgY2FuIHNob3cgdXAgYm90aCBhdCB0
aGUgc3RhcnQgb2YgY29udGVudAotLy8gYW5kIGluc2lkZSBjb250ZW50LCBhbmQgd2UgbmV2ZXIg
d2FudCB0aGVtIHRvIGVuZCB1cCBpbiB0aGUgZGVjb2RlZCB0ZXh0Lgotc3RhdGljIGlubGluZSBi
b29sIHVud2FudGVkKFVuaUNoYXIgYykKLXsKLSAgICBzd2l0Y2ggKGMpIHsKLSAgICAgICAgY2Fz
ZSByZXBsYWNlbWVudENoYXJhY3RlcjoKLSAgICAgICAgY2FzZSBCT006Ci0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci19Ci0KLXZvaWQgS1dRVGV4dERlY29kZXI6OmFwcGVuZE9taXR0aW5nVW53YW50ZWQo
UVN0cmluZyAmcywgY29uc3QgVW5pQ2hhciAqY2hhcmFjdGVycywgaW50IGJ5dGVDb3VudCkKLXsK
LSAgICBBU1NFUlQoYnl0ZUNvdW50ICUgc2l6ZW9mKFVuaUNoYXIpID09IDApOwotICAgIGludCBz
dGFydCA9IDA7Ci0gICAgaW50IGNoYXJhY3RlckNvdW50ID0gYnl0ZUNvdW50IC8gc2l6ZW9mKFVu
aUNoYXIpOwotICAgIGZvciAoaW50IGkgPSAwOyBpICE9IGNoYXJhY3RlckNvdW50OyArK2kpIHsK
LSAgICAgICAgaWYgKHVud2FudGVkKGNoYXJhY3RlcnNbaV0pKSB7Ci0gICAgICAgICAgICBpZiAo
c3RhcnQgIT0gaSkgewotICAgICAgICAgICAgICAgIHMuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgUUNoYXIgKj4oJmNoYXJhY3RlcnNbc3RhcnRdKSwgaSAtIHN0YXJ0KTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHN0YXJ0ID0gaSArIDE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
aWYgKHN0YXJ0ICE9IGNoYXJhY3RlckNvdW50KSB7Ci0gICAgICAgIHMuYXBwZW5kKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgUUNoYXIgKj4oJmNoYXJhY3RlcnNbc3RhcnRdKSwgY2hhcmFjdGVyQ291
bnQgLSBzdGFydCk7Ci0gICAgfQotfQotCi1RU3RyaW5nIEtXUVRleHREZWNvZGVyOjpjb252ZXJ0
VXNpbmdJQ1UoY29uc3QgdW5zaWduZWQgY2hhciAqY2hzLCBpbnQgbGVuLCBib29sIGZsdXNoKQot
ewotICAgIC8vIEdldCBhIGNvbnZlcnRlciBmb3IgdGhlIHBhc3NlZC1pbiBlbmNvZGluZy4KLSAg
ICBpZiAoIV9jb252ZXJ0ZXJJQ1UgJiYgVV9GQUlMVVJFKGNyZWF0ZUlDVUNvbnZlcnRlcigpKSkg
ewotICAgICAgICByZXR1cm4gUVN0cmluZygpOwotICAgIH0KLSAgICBBU1NFUlQoX2NvbnZlcnRl
cklDVSk7Ci0KLSAgICBRU3RyaW5nIHJlc3VsdCgiIik7Ci0gICAgcmVzdWx0LnJlc2VydmUobGVu
KTsKLQotICAgIFVDaGFyIGJ1ZmZlcltDb252ZXJzaW9uQnVmZmVyU2l6ZV07Ci0gICAgY29uc3Qg
Y2hhciAqc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KGNocyk7Ci0gICAg
Y29uc3QgY2hhciAqc291cmNlTGltaXQgPSBzb3VyY2UgKyBsZW47Ci0gICAgaW50MzJfdCAqb2Zm
c2V0cyA9IE5VTEw7Ci0gICAgVUVycm9yQ29kZSBlcnI7Ci0gICAgCi0gICAgZG8gewotICAgICAg
ICBVQ2hhciAqdGFyZ2V0ID0gYnVmZmVyOwotICAgICAgICBjb25zdCBVQ2hhciAqdGFyZ2V0TGlt
aXQgPSB0YXJnZXQgKyBDb252ZXJzaW9uQnVmZmVyU2l6ZTsKLSAgICAgICAgZXJyID0gVV9aRVJP
X0VSUk9SOwotICAgICAgICB1Y252X3RvVW5pY29kZShfY29udmVydGVySUNVLCAmdGFyZ2V0LCB0
YXJnZXRMaW1pdCwgJnNvdXJjZSwgc291cmNlTGltaXQsIG9mZnNldHMsIGZsdXNoLCAmZXJyKTsK
LSAgICAgICAgaW50IGNvdW50ID0gdGFyZ2V0IC0gYnVmZmVyOwotICAgICAgICBhcHBlbmRPbWl0
dGluZ1Vud2FudGVkKHJlc3VsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyICo+KGJ1
ZmZlciksIGNvdW50ICogc2l6ZW9mKFVuaUNoYXIpKTsKLSAgICB9IHdoaWxlIChlcnIgPT0gVV9C
VUZGRVJfT1ZFUkZMT1dfRVJST1IpOwotCi0gICAgaWYgKFVfRkFJTFVSRShlcnIpKSB7Ci0gICAg
ICAgIC8vIGZsdXNoIHRoZSBjb252ZXJ0ZXIgc28gaXQgY2FuIGJlIHJldXNlZCwgYW5kIG5vdCBi
ZSBib3RoZXJlZCBieSB0aGlzIGVycm9yLgotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBVQ2hh
ciAqdGFyZ2V0ID0gYnVmZmVyOwotICAgICAgICAgICAgY29uc3QgVUNoYXIgKnRhcmdldExpbWl0
ID0gdGFyZ2V0ICsgQ29udmVyc2lvbkJ1ZmZlclNpemU7Ci0gICAgICAgICAgICBlcnIgPSBVX1pF
Uk9fRVJST1I7Ci0gICAgICAgICAgICB1Y252X3RvVW5pY29kZShfY29udmVydGVySUNVLCAmdGFy
Z2V0LCB0YXJnZXRMaW1pdCwgJnNvdXJjZSwgc291cmNlTGltaXQsIG9mZnNldHMsIHRydWUsICZl
cnIpOwotICAgICAgICB9IHdoaWxlIChzb3VyY2UgPCBzb3VyY2VMaW1pdCk7Ci0gICAgICAgIExP
R19FUlJPUigiSUNVIGNvbnZlcnNpb24gZXJyb3IiKTsKLSAgICAgICAgcmV0dXJuIFFTdHJpbmco
KTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUVN0cmluZyBLV1FUZXh0
RGVjb2Rlcjo6Y29udmVydChjb25zdCB1bnNpZ25lZCBjaGFyICpjaHMsIGludCBsZW4sIGJvb2wg
Zmx1c2gpCi17Ci0gICAgLy8jZGVmaW5lIFBBUlRJQUxfQ0hBUkFDVEVSX0hBTkRMSU5HX1RFU1Rf
Q0hVTktfU0laRSAxMDAwCi0KLSAgICBzd2l0Y2ggKF9lbmNvZGluZykgewotICAgIGNhc2Uga0NG
U3RyaW5nRW5jb2RpbmdJU09MYXRpbjE6Ci0gICAgY2FzZSBrQ0ZTdHJpbmdFbmNvZGluZ1dpbmRv
d3NMYXRpbjE6Ci0gICAgICAgIHJldHVybiBjb252ZXJ0TGF0aW4xKGNocywgbGVuKTsKLQotICAg
IGNhc2Uga0NGU3RyaW5nRW5jb2RpbmdVbmljb2RlOgotICAgICAgICByZXR1cm4gY29udmVydFVU
RjE2KGNocywgbGVuKTsKLQotICAgIGRlZmF1bHQ6Ci0jaWYgUEFSVElBTF9DSEFSQUNURVJfSEFO
RExJTkdfVEVTVF9DSFVOS19TSVpFCi0gICAgICAgIFFTdHJpbmcgcmVzdWx0OwotICAgICAgICBp
bnQgY2h1bmtTaXplOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBsZW47IGkgKz0gY2h1
bmtTaXplKSB7Ci0gICAgICAgICAgICBjaHVua1NpemUgPSBsZW4gLSBpOwotICAgICAgICAgICAg
aWYgKGNodW5rU2l6ZSA+IFBBUlRJQUxfQ0hBUkFDVEVSX0hBTkRMSU5HX1RFU1RfQ0hVTktfU0la
RSkgewotICAgICAgICAgICAgICAgIGNodW5rU2l6ZSA9IFBBUlRJQUxfQ0hBUkFDVEVSX0hBTkRM
SU5HX1RFU1RfQ0hVTktfU0laRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJlc3VsdCAr
PSBjb252ZXJ0VXNpbmdJQ1UoY2hzICsgaSwgY2h1bmtTaXplLCBmbHVzaCAmJiAoaSArIGNodW5r
U2l6ZSA9PSBsZW4pKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UK
LSAgICAgICAgcmV0dXJuIGNvbnZlcnRVc2luZ0lDVShjaHMsIGxlbiwgZmx1c2gpOwotI2VuZGlm
Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBRU3RyaW5nKCk7
Ci19Ci0KLVFTdHJpbmcgS1dRVGV4dERlY29kZXI6OnRvVW5pY29kZShjb25zdCBjaGFyICpjaHMs
IGludCBsZW4sIGJvb2wgZmx1c2gpCi17Ci0gICAgQVNTRVJUX0FSRyhsZW4sIGxlbiA+PSAwKTsK
LSAgICAKLSAgICBpZiAoX2Vycm9yIHx8ICFjaHMpIHsKLSAgICAgICAgcmV0dXJuIFFTdHJpbmco
KTsKLSAgICB9Ci0gICAgaWYgKGxlbiA8PSAwICYmICFmbHVzaCkgewotICAgICAgICByZXR1cm4g
IiI7Ci0gICAgfQotCi0gICAgLy8gSGFuZGxlIG5vcm1hbCBjYXNlLgotICAgIGlmICghX2F0U3Rh
cnQpIHsKLSAgICAgICAgcmV0dXJuIGNvbnZlcnQoY2hzLCBsZW4sIGZsdXNoKTsKLSAgICB9Ci0K
LSAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgZm91bmQgYSBCT00uCi0gICAgaW50IG51bUJ1ZmZl
cmVkQnl0ZXMgPSBfbnVtQnVmZmVyZWRCeXRlczsKLSAgICBpbnQgYnVmMUxlbiA9IG51bUJ1ZmZl
cmVkQnl0ZXM7Ci0gICAgaW50IGJ1ZjJMZW4gPSBsZW47Ci0gICAgY29uc3QgdW5zaWduZWQgY2hh
ciAqYnVmMSA9IF9idWZmZXJlZEJ5dGVzOwotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZjIg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4oY2hzKTsKLSAgICB1bnNp
Z25lZCBjaGFyIGMxID0gYnVmMUxlbiA/ICgtLWJ1ZjFMZW4sICpidWYxKyspIDogYnVmMkxlbiA/
ICgtLWJ1ZjJMZW4sICpidWYyKyspIDogMDsKLSAgICB1bnNpZ25lZCBjaGFyIGMyID0gYnVmMUxl
biA/ICgtLWJ1ZjFMZW4sICpidWYxKyspIDogYnVmMkxlbiA/ICgtLWJ1ZjJMZW4sICpidWYyKysp
IDogMDsKLSAgICB1bnNpZ25lZCBjaGFyIGMzID0gYnVmMUxlbiA/ICgtLWJ1ZjFMZW4sICpidWYx
KyspIDogYnVmMkxlbiA/ICgtLWJ1ZjJMZW4sICpidWYyKyspIDogMDsKLSAgICBpbnQgQk9NTGVu
Z3RoID0gMDsKLSAgICBpZiAoYzEgPT0gMHhGRiAmJiBjMiA9PSAweEZFKSB7Ci0gICAgICAgIF9l
bmNvZGluZyA9IGtDRlN0cmluZ0VuY29kaW5nVW5pY29kZTsKLSAgICAgICAgX2xpdHRsZUVuZGlh
biA9IHRydWU7Ci0gICAgICAgIEJPTUxlbmd0aCA9IDI7Ci0gICAgfSBlbHNlIGlmIChjMSA9PSAw
eEZFICYmIGMyID09IDB4RkYpIHsKLSAgICAgICAgX2VuY29kaW5nID0ga0NGU3RyaW5nRW5jb2Rp
bmdVbmljb2RlOwotICAgICAgICBfbGl0dGxlRW5kaWFuID0gZmFsc2U7Ci0gICAgICAgIEJPTUxl
bmd0aCA9IDI7Ci0gICAgfSBlbHNlIGlmIChjMSA9PSAweEVGICYmIGMyID09IDB4QkIgJiYgYzMg
PT0gMHhCRikgewotICAgICAgICBfZW5jb2RpbmcgPSBrQ0ZTdHJpbmdFbmNvZGluZ1VURjg7Ci0g
ICAgICAgIEJPTUxlbmd0aCA9IDM7Ci0gICAgfQotCi0gICAgLy8gSGFuZGxlIGNhc2Ugd2hlcmUg
d2UgZm91bmQgYSBCT00uCi0gICAgaWYgKEJPTUxlbmd0aCAhPSAwKSB7Ci0gICAgICAgIEFTU0VS
VChudW1CdWZmZXJlZEJ5dGVzICsgbGVuID49IEJPTUxlbmd0aCk7Ci0gICAgICAgIGludCBza2lw
ID0gQk9NTGVuZ3RoIC0gbnVtQnVmZmVyZWRCeXRlczsKLSAgICAgICAgX251bUJ1ZmZlcmVkQnl0
ZXMgPSAwOwotICAgICAgICBfYXRTdGFydCA9IGZhbHNlOwotICAgICAgICByZXR1cm4gbGVuID09
IHNraXAgPyBRU3RyaW5nKCIiKSA6IGNvbnZlcnQoY2hzICsgc2tpcCwgbGVuIC0gc2tpcCwgZmx1
c2gpOwotICAgIH0KLQotICAgIC8vIEhhbmRsZSBjYXNlIHdoZXJlIHdlIGtub3cgdGhlcmUgaXMg
bm8gQk9NIGNvbWluZy4KLSAgICBjb25zdCBpbnQgYnVmZmVyU2l6ZSA9IHNpemVvZihfYnVmZmVy
ZWRCeXRlcyk7Ci0gICAgaWYgKG51bUJ1ZmZlcmVkQnl0ZXMgKyBsZW4gPiBidWZmZXJTaXplIHx8
IGZsdXNoKSB7Ci0gICAgICAgIF9hdFN0YXJ0ID0gZmFsc2U7Ci0gICAgICAgIGlmIChudW1CdWZm
ZXJlZEJ5dGVzID09IDApIHsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0KGNocywgbGVuLCBm
bHVzaCk7Ci0gICAgICAgIH0KLSAgICAgICAgdW5zaWduZWQgY2hhciBidWZmZXJlZEJ5dGVzW3Np
emVvZihfYnVmZmVyZWRCeXRlcyldOwotICAgICAgICBtZW1jcHkoYnVmZmVyZWRCeXRlcywgX2J1
ZmZlcmVkQnl0ZXMsIG51bUJ1ZmZlcmVkQnl0ZXMpOwotICAgICAgICBfbnVtQnVmZmVyZWRCeXRl
cyA9IDA7Ci0gICAgICAgIHJldHVybiBjb252ZXJ0KGJ1ZmZlcmVkQnl0ZXMsIG51bUJ1ZmZlcmVk
Qnl0ZXMsIGZhbHNlKSArIGNvbnZlcnQoY2hzLCBsZW4sIGZsdXNoKTsKLSAgICB9Ci0KLSAgICAv
LyBDb250aW51ZSB0byBsb29rIGZvciB0aGUgQk9NLgotICAgIG1lbWNweSgmX2J1ZmZlcmVkQnl0
ZXNbbnVtQnVmZmVyZWRCeXRlc10sIGNocywgbGVuKTsKLSAgICBfbnVtQnVmZmVyZWRCeXRlcyAr
PSBsZW47Ci0gICAgcmV0dXJuICIiOwotfQpJbmRleDoga3dxL2NoYXJhY3Rlci1zZXRzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBrd3EvY2hhcmFjdGVyLXNldHMudHh0CShyZXZpc2lvbiAxMjk5NikKKysr
IGt3cS9jaGFyYWN0ZXItc2V0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTg2OCArMCwwIEBA
Ci0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLUNIQVJBQ1RFUiBTRVRTCi0KLShsYXN0IHVwZGF0ZWQgMjggSmFudWFy
eSAyMDA1KQotCi1UaGVzZSBhcmUgdGhlIG9mZmljaWFsIG5hbWVzIGZvciBjaGFyYWN0ZXIgc2V0
cyB0aGF0IG1heSBiZSB1c2VkIGluCi10aGUgSW50ZXJuZXQgYW5kIG1heSBiZSByZWZlcnJlZCB0
byBpbiBJbnRlcm5ldCBkb2N1bWVudGF0aW9uLiAgVGhlc2UKLW5hbWVzIGFyZSBleHByZXNzZWQg
aW4gQU5TSV9YMy40LTE5Njggd2hpY2ggaXMgY29tbW9ubHkgY2FsbGVkCi1VUy1BU0NJSSBvciBz
aW1wbHkgQVNDSUkuICBUaGUgY2hhcmFjdGVyIHNldCBtb3N0IGNvbW1vbmx5IHVzZSBpbiB0aGUK
LUludGVybmV0IGFuZCB1c2VkIGVzcGVjaWFsbHkgaW4gcHJvdG9jb2wgc3RhbmRhcmRzIGlzIFVT
LUFTQ0lJLCB0aGlzCi1pcyBzdHJvbmdseSBlbmNvdXJhZ2VkLiAgVGhlIHVzZSBvZiB0aGUgbmFt
ZSBVUy1BU0NJSSBpcyBhbHNvCi1lbmNvdXJhZ2VkLgotCi1UaGUgY2hhcmFjdGVyIHNldCBuYW1l
cyBtYXkgYmUgdXAgdG8gNDAgY2hhcmFjdGVycyB0YWtlbiBmcm9tIHRoZQotcHJpbnRhYmxlIGNo
YXJhY3RlcnMgb2YgVVMtQVNDSUkuICBIb3dldmVyLCBubyBkaXN0aW5jdGlvbiBpcyBtYWRlCi1i
ZXR3ZWVuIHVzZSBvZiB1cHBlciBhbmQgbG93ZXIgY2FzZSBsZXR0ZXJzLgotCi1UaGUgTUlCZW51
bSB2YWx1ZSBpcyBhIHVuaXF1ZSB2YWx1ZSBmb3IgdXNlIGluIE1JQnMgdG8gaWRlbnRpZnkgY29k
ZWQKLWNoYXJhY3RlciBzZXRzLgotCi1UaGUgdmFsdWUgc3BhY2UgZm9yIE1JQmVudW0gdmFsdWVz
IGhhcyBiZWVuIGRpdmlkZWQgaW50byB0aHJlZQotcmVnaW9ucy4gVGhlIGZpcnN0IHJlZ2lvbiAo
My05OTkpIGNvbnNpc3RzIG9mIGNvZGVkIGNoYXJhY3RlciBzZXRzCi10aGF0IGhhdmUgYmVlbiBz
dGFuZGFyZGl6ZWQgYnkgc29tZSBzdGFuZGFyZCBzZXR0aW5nIG9yZ2FuaXphdGlvbi4KLVRoaXMg
cmVnaW9uIGlzIGludGVuZGVkIGZvciBzdGFuZGFyZHMgdGhhdCBkbyBub3QgaGF2ZSBzdWJzZXQK
LWltcGxlbWVudGF0aW9ucy4gVGhlIHNlY29uZCByZWdpb24gKDEwMDAtMTk5OSkgaXMgZm9yIHRo
ZSBVbmljb2RlIGFuZAotSVNPL0lFQyAxMDY0NiBjb2RlZCBjaGFyYWN0ZXIgc2V0cyB0b2dldGhl
ciB3aXRoIGEgc3BlY2lmaWNhdGlvbiBvZiBhCi0oc2V0IG9mKSBzdWItcmVwZXJ0b2lyZXMgdGhh
dCBtYXkgb2NjdXIuICBUaGUgdGhpcmQgcmVnaW9uICg+MTk5OSkgaXMKLWludGVuZGVkIGZvciB2
ZW5kb3Igc3BlY2lmaWMgY29kZWQgY2hhcmFjdGVyIHNldHMuCi0KLQlBc3NpZ25lZCBNSUIgZW51
bSBOdW1iZXJzCi0JLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCTAtMgkJUmVzZXJ2ZWQKLQkz
LTk5OQkJU2V0IEJ5IFN0YW5kYXJkcyBPcmdhbml6YXRpb25zCi0JMTAwMC0xOTk5CVVuaWNvZGUg
LyAxMDY0NgotCTIwMDAtMjk5OQlWZW5kb3IKLQotVGhlIGFsaWFzZXMgdGhhdCBzdGFydCB3aXRo
ICJjcyIgaGF2ZSBiZWVuIGFkZGVkIGZvciB1c2Ugd2l0aCB0aGUKLUlBTkEtQ0hBUlNFVC1NSUIg
YXMgb3JpZ2luYWxseSBkZWZpbmVkIGluIFJGQzM4MDgsIGFuZCBhcyBjdXJyZW50bHkKLW1haW50
YWluZWQgYnkgSUFOQSBhdCBodHRwOi8vd3d3L2lhbmEub3JnL2Fzc2lnbm1lbnRzL2lhbmFjaGFy
c2V0LW1pYi4KLU5vdGUgdGhhdCB0aGUgaWFuYWNoYXJzZXQtbWliIG5lZWRzIHRvIGJlIGtlcHQg
aW4gc3luYyB3aXRoIHRoaXMKLXJlZ2lzdHJ5LiAgVGhlc2UgYWxpYXNlcyB0aGF0IHN0YXJ0IHdp
dGggImNzIiBjb250YWluIHRoZSBzdGFuZGFyZCAKLW51bWJlcnMgYWxvbmcgd2l0aCBzdWdnZXN0
aXZlIG5hbWVzIGluIG9yZGVyIHRvIGZhY2lsaXRhdGUgYXBwbGljYXRpb25zIAotdGhhdCB3YW50
IHRvIGRpc3BsYXkgdGhlIG5hbWVzIGluIHVzZXIgaW50ZXJmYWNlcy4gIFRoZSAiY3MiIHN0YW5k
cyAKLWZvciBjaGFyYWN0ZXIgc2V0IGFuZCBpcyBwcm92aWRlZCBmb3IgYXBwbGljYXRpb25zIHRo
YXQgbmVlZCBhIGxvd2VyIAotY2FzZSBmaXJzdCBsZXR0ZXIgYnV0IHdhbnQgdG8gdXNlIG1peGVk
IGNhc2UgdGhlcmVhZnRlciB0aGF0IGNhbm5vdCAKLWNvbnRhaW4gYW55IHNwZWNpYWwgY2hhcmFj
dGVycywgc3VjaCBhcyB1bmRlcmJhciAoIl8iKSBhbmQgZGFzaCAoIi0iKS4gIAotCi1JZiB0aGUg
Y2hhcmFjdGVyIHNldCBpcyBmcm9tIGFuIElTTyBzdGFuZGFyZCwgaXRzIGNzIGFsaWFzIGlzIHRo
ZSBJU08KLXN0YW5kYXJkIG51bWJlciBvciBuYW1lLiAgSWYgdGhlIGNoYXJhY3RlciBzZXQgaXMg
bm90IGZyb20gYW4gSVNPCi1zdGFuZGFyZCwgYnV0IGlzIHJlZ2lzdGVyZWQgd2l0aCBJU08gKElQ
U0ovSVRTQ0ogaXMgdGhlIGN1cnJlbnQgSVNPCi1SZWdpc3RyYXRpb24gQXV0aG9yaXR5KSwgdGhl
IElTTyBSZWdpc3RyeSBudW1iZXIgaXMgc3BlY2lmaWVkIGFzCi1JU09ubm4gZm9sbG93ZWQgYnkg
bGV0dGVycyBzdWdnZXN0aXZlIG9mIHRoZSBuYW1lIG9yIHN0YW5kYXJkcyBudW1iZXIKLW9mIHRo
ZSBjb2RlIHNldC4gIFdoZW4gYSBuYXRpb25hbCBvciBpbnRlcm5hdGlvbmFsIHN0YW5kYXJkIGlz
Ci1yZXZpc2VkLCB0aGUgeWVhciBvZiByZXZpc2lvbiBpcyBhZGRlZCB0byB0aGUgY3MgYWxpYXMg
b2YgdGhlIG5ldwotY2hhcmFjdGVyIHNldCBlbnRyeSBpbiB0aGUgSUFOQSBSZWdpc3RyeSBpbiBv
cmRlciB0byBkaXN0aW5ndWlzaCB0aGUKLXJldmlzZWQgY2hhcmFjdGVyIHNldCBmcm9tIHRoZSBv
cmlnaW5hbCBjaGFyYWN0ZXIgc2V0LgotCi0KLUNoYXJhY3RlciBTZXQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyZW5jZQotLS0tLS0tLS0tLS0tLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tCi0K
LU5hbWU6IEFOU0lfWDMuNC0xOTY4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
UkZDMTM0NSxLWFMyXQotTUlCZW51bTogMwotU291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczog
aXNvLWlyLTYKLUFsaWFzOiBBTlNJX1gzLjQtMTk4NgotQWxpYXM6IElTT182NDYuaXJ2OjE5OTEK
LUFsaWFzOiBBU0NJSQotQWxpYXM6IElTTzY0Ni1VUwotQWxpYXM6IFVTLUFTQ0lJIChwcmVmZXJy
ZWQgTUlNRSBuYW1lKQotQWxpYXM6IHVzCi1BbGlhczogSUJNMzY3Ci1BbGlhczogY3AzNjcKLUFs
aWFzOiBjc0FTQ0lJCi0KLU5hbWU6IElTTy0xMDY0Ni1VVEYtMQotTUlCZW51bTogMjcKLVNvdXJj
ZTogVW5pdmVyc2FsIFRyYW5zZmVyIEZvcm1hdCAoMSksIHRoaXMgaXMgdGhlIG11bHRpYnl0ZQot
ICAgICAgICBlbmNvZGluZywgdGhhdCBzdWJzZXRzIEFTQ0lJLTcuIEl0IGRvZXMgbm90IGhhdmUg
Ynl0ZQotICAgICAgICBvcmRlcmluZyBpc3N1ZXMuCi1BbGlhczogY3NJU08xMDY0NlVURjEKLQot
TmFtZTogSVNPXzY0Ni5iYXNpYzoxOTgzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
UkZDMTM0NSxLWFMyXQotTUlCZW51bTogMjgKLVNvdXJjZTogRUNNQSByZWdpc3RyeQotQWxpYXM6
IHJlZgotQWxpYXM6IGNzSVNPNjQ2YmFzaWMxOTgzCi0KLU5hbWU6IElOVkFSSUFOVCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06
IDI5Ci1BbGlhczogY3NJTlZBUklBTlQKLQotTmFtZTogSVNPXzY0Ni5pcnY6MTk4MyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogMzAKLVNv
dXJjZTogRUNNQSByZWdpc3RyeQotQWxpYXM6IGlzby1pci0yCi1BbGlhczogaXJ2Ci1BbGlhczog
Y3NJU08ySW50bFJlZlZlcnNpb24KLQotTmFtZTogQlNfNDczMCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogMjAKLVNvdXJj
ZTogRUNNQSByZWdpc3RyeQotQWxpYXM6IGlzby1pci00Ci1BbGlhczogSVNPNjQ2LUdCCi1BbGlh
czogZ2IKLUFsaWFzOiB1awotQWxpYXM6IGNzSVNPNFVuaXRlZEtpbmdkb20KLQotTmFtZTogTkFU
Uy1TRUZJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxL
WFMyXQotTUlCZW51bTogMzEKLVNvdXJjZTogRUNNQSByZWdpc3RyeQotQWxpYXM6IGlzby1pci04
LTEKLUFsaWFzOiBjc05BVFNTRUZJCi0KLU5hbWU6IE5BVFMtU0VGSS1BREQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDMyCi1Tb3Vy
Y2U6IEVDTUEgcmVnaXN0cnkKLUFsaWFzOiBpc28taXItOC0yCi1BbGlhczogY3NOQVRTU0VGSUFE
RAotCi1OYW1lOiBOQVRTLURBTk8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAzMwotU291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1B
bGlhczogaXNvLWlyLTktMQotQWxpYXM6IGNzTkFUU0RBTk8KLQotTmFtZTogTkFUUy1EQU5PLUFE
RCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlC
ZW51bTogMzQKLVNvdXJjZTogRUNNQSByZWdpc3RyeQotQWxpYXM6IGlzby1pci05LTIKLUFsaWFz
OiBjc05BVFNEQU5PQURECi0KLU5hbWU6IFNFTl84NTAyMDBfQiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDM1Ci1Tb3VyY2U6IEVD
TUEgcmVnaXN0cnkKLUFsaWFzOiBpc28taXItMTAKLUFsaWFzOiBGSQotQWxpYXM6IElTTzY0Ni1G
SQotQWxpYXM6IElTTzY0Ni1TRQotQWxpYXM6IHNlCi1BbGlhczogY3NJU08xMFN3ZWRpc2gKLQot
TmFtZTogU0VOXzg1MDIwMF9DICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
UkZDMTM0NSxLWFMyXQotTUlCZW51bTogMjEKLVNvdXJjZTogRUNNQSByZWdpc3RyeQotQWxpYXM6
IGlzby1pci0xMQotQWxpYXM6IElTTzY0Ni1TRTIKLUFsaWFzOiBzZTIKLUFsaWFzOiBjc0lTTzEx
U3dlZGlzaEZvck5hbWVzCi0KLU5hbWU6IEtTX0NfNTYwMS0xOTg3ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDM2Ci1Tb3VyY2U6IEVD
TUEgcmVnaXN0cnkKLUFsaWFzOiBpc28taXItMTQ5Ci1BbGlhczogS1NfQ181NjAxLTE5ODkKLUFs
aWFzOiBLU0NfNTYwMQotQWxpYXM6IGtvcmVhbgotQWxpYXM6IGNzS1NDNTYwMTE5ODcKLQotTmFt
ZTogSVNPLTIwMjItS1IgIChwcmVmZXJyZWQgTUlNRSBuYW1lKSAgICAgICAgICAgICAgICBbUkZD
MTU1NyxDaG9pXQotTUlCZW51bTogMzcKLVNvdXJjZTogUkZDLTE1NTcgKHNlZSBhbHNvIEtTX0Nf
NTYwMS0xOTg3KQotQWxpYXM6IGNzSVNPMjAyMktSCi0KLU5hbWU6IEVVQy1LUiAgKHByZWZlcnJl
ZCBNSU1FIG5hbWUpICAgICAgICAgICAgICAgICAgICAgW1JGQzE1NTcsQ2hvaV0KLU1JQmVudW06
IDM4Ci1Tb3VyY2U6IFJGQy0xNTU3IChzZWUgYWxzbyBLU19DXzU4NjEtMTk5MikKLUFsaWFzOiBj
c0VVQ0tSCi0KLU5hbWU6IElTTy0yMDIyLUpQICAocHJlZmVycmVkIE1JTUUgbmFtZSkgICAgICAg
ICAgICAgICBbUkZDMTQ2OCxNdXJhaV0KLU1JQmVudW06IDM5Ci1Tb3VyY2U6IFJGQy0xNDY4IChz
ZWUgYWxzbyBSRkMtMjIzNykKLUFsaWFzOiBjc0lTTzIwMjJKUAotCi1OYW1lOiBJU08tMjAyMi1K
UC0yICAocHJlZmVycmVkIE1JTUUgbmFtZSkgICAgICAgICAgICAgIFtSRkMxNTU0LE9odGFdCi1N
SUJlbnVtOiA0MAotU291cmNlOiBSRkMtMTU1NAotQWxpYXM6IGNzSVNPMjAyMkpQMgotCi1OYW1l
OiBJU08tMjAyMi1DTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
W1JGQzE5MjJdCi1NSUJlbnVtOiAxMDQKLVNvdXJjZTogUkZDLTE5MjIKLQotTmFtZTogSVNPLTIw
MjItQ04tRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxOTIy
XQotTUlCZW51bTogMTA1Ci1Tb3VyY2U6IFJGQy0xOTIyCi0KLU5hbWU6IEpJU19DNjIyMC0xOTY5
LWpwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVu
dW06IDQxCi1Tb3VyY2U6IEVDTUEgcmVnaXN0cnkKLUFsaWFzOiBKSVNfQzYyMjAtMTk2OQotQWxp
YXM6IGlzby1pci0xMwotQWxpYXM6IGthdGFrYW5hCi1BbGlhczogeDAyMDEtNwotQWxpYXM6IGNz
SVNPMTNKSVNDNjIyMGpwCi0KLU5hbWU6IEpJU19DNjIyMC0xOTY5LXJvICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDQyCi1Tb3VyY2U6IEVD
TUEgcmVnaXN0cnkKLUFsaWFzOiBpc28taXItMTQKLUFsaWFzOiBqcAotQWxpYXM6IElTTzY0Ni1K
UAotQWxpYXM6IGNzSVNPMTRKSVNDNjIyMHJvCi0KLU5hbWU6IElUICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDIy
Ci1Tb3VyY2U6IEVDTUEgcmVnaXN0cnkKLUFsaWFzOiBpc28taXItMTUKLUFsaWFzOiBJU082NDYt
SVQKLUFsaWFzOiBjc0lTTzE1SXRhbGlhbgotCi1OYW1lOiBQVCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiA0Mwot
U291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczogaXNvLWlyLTE2Ci1BbGlhczogSVNPNjQ2LVBU
Ci1BbGlhczogY3NJU08xNlBvcnR1Z3Vlc2UKLQotTmFtZTogRVMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogMjMK
LVNvdXJjZTogRUNNQSByZWdpc3RyeQotQWxpYXM6IGlzby1pci0xNwotQWxpYXM6IElTTzY0Ni1F
UwotQWxpYXM6IGNzSVNPMTdTcGFuaXNoCi0KLU5hbWU6IGdyZWVrNy1vbGQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDQ0Ci1T
b3VyY2U6IEVDTUEgcmVnaXN0cnkKLUFsaWFzOiBpc28taXItMTgKLUFsaWFzOiBjc0lTTzE4R3Jl
ZWs3T2xkCi0KLU5hbWU6IGxhdGluLWdyZWVrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDQ1Ci1Tb3VyY2U6IEVDTUEgcmVnaXN0
cnkKLUFsaWFzOiBpc28taXItMTkKLUFsaWFzOiBjc0lTTzE5TGF0aW5HcmVlawotCi1OYW1lOiBE
SU5fNjYwMDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1
LEtYUzJdCi1NSUJlbnVtOiAyNAotU291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczogaXNvLWly
LTIxCi1BbGlhczogZGUKLUFsaWFzOiBJU082NDYtREUKLUFsaWFzOiBjc0lTTzIxR2VybWFuCi0K
LU5hbWU6IE5GX1pfNjItMDEwXygxOTczKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
W1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDQ2Ci1Tb3VyY2U6IEVDTUEgcmVnaXN0cnkKLUFsaWFz
OiBpc28taXItMjUKLUFsaWFzOiBJU082NDYtRlIxCi1BbGlhczogY3NJU08yNUZyZW5jaAotCi1O
YW1lOiBMYXRpbi1ncmVlay0xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtS
RkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiA0NwotU291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczog
aXNvLWlyLTI3Ci1BbGlhczogY3NJU08yN0xhdGluR3JlZWsxCi0KLU5hbWU6IElTT181NDI3ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1J
QmVudW06IDQ4Ci1Tb3VyY2U6IEVDTUEgcmVnaXN0cnkKLUFsaWFzOiBpc28taXItMzcKLUFsaWFz
OiBjc0lTTzU0MjdDeXJpbGxpYwotCi1OYW1lOiBKSVNfQzYyMjYtMTk3OCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiA0OQotU291cmNl
OiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczogaXNvLWlyLTQyCi1BbGlhczogY3NJU080MkpJU0M2MjI2
MTk3OAotCi1OYW1lOiBCU192aWV3ZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiA1MAotU291cmNlOiBFQ01BIHJlZ2lzdHJ5
Ci1BbGlhczogaXNvLWlyLTQ3Ci1BbGlhczogY3NJU080N0JTVmlld2RhdGEKLQotTmFtZTogSU5J
UyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxL
WFMyXQotTUlCZW51bTogNTEKLVNvdXJjZTogRUNNQSByZWdpc3RyeQotQWxpYXM6IGlzby1pci00
OQotQWxpYXM6IGNzSVNPNDlJTklTCi0KLU5hbWU6IElOSVMtOCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDUyCi1Tb3Vy
Y2U6IEVDTUEgcmVnaXN0cnkKLUFsaWFzOiBpc28taXItNTAKLUFsaWFzOiBjc0lTTzUwSU5JUzgK
LQotTmFtZTogSU5JUy1jeXJpbGxpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogNTMKLVNvdXJjZTogRUNNQSByZWdpc3RyeQotQWxp
YXM6IGlzby1pci01MQotQWxpYXM6IGNzSVNPNTFJTklTQ3lyaWxsaWMKLQotTmFtZTogSVNPXzU0
Mjc6MTk4MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMy
XQotTUlCZW51bTogNTQKLVNvdXJjZTogRUNNQSByZWdpc3RyeQotQWxpYXM6IGlzby1pci01NAot
QWxpYXM6IElTTzU0MjdDeXJpbGxpYzE5ODEKLQotTmFtZTogSVNPXzU0Mjg6MTk4MCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogNTUK
LVNvdXJjZTogRUNNQSByZWdpc3RyeQotQWxpYXM6IGlzby1pci01NQotQWxpYXM6IGNzSVNPNTQy
OEdyZWVrCi0KLU5hbWU6IEdCXzE5ODgtODAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDU2Ci1Tb3VyY2U6IEVDTUEgcmVnaXN0
cnkKLUFsaWFzOiBpc28taXItNTcKLUFsaWFzOiBjbgotQWxpYXM6IElTTzY0Ni1DTgotQWxpYXM6
IGNzSVNPNTdHQjE5ODgKLQotTmFtZTogR0JfMjMxMi04MCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogNTcKLVNvdXJjZTogRUNN
QSByZWdpc3RyeQotQWxpYXM6IGlzby1pci01OAotQWxpYXM6IGNoaW5lc2UKLUFsaWFzOiBjc0lT
TzU4R0IyMzEyODAKLQotTmFtZTogTlNfNDU1MS0xICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogMjUKLVNvdXJjZTogRUNNQSBy
ZWdpc3RyeQotQWxpYXM6IGlzby1pci02MAotQWxpYXM6IElTTzY0Ni1OTwotQWxpYXM6IG5vCi1B
bGlhczogY3NJU082MERhbmlzaE5vcndlZ2lhbgotQWxpYXM6IGNzSVNPNjBOb3J3ZWdpYW4xCi0K
LU5hbWU6IE5TXzQ1NTEtMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiA1OAotU291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlh
czogSVNPNjQ2LU5PMgotQWxpYXM6IGlzby1pci02MQotQWxpYXM6IG5vMgotQWxpYXM6IGNzSVNP
NjFOb3J3ZWdpYW4yCi0KLU5hbWU6IE5GX1pfNjItMDEwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAyNgotU291cmNlOiBFQ01B
IHJlZ2lzdHJ5Ci1BbGlhczogaXNvLWlyLTY5Ci1BbGlhczogSVNPNjQ2LUZSCi1BbGlhczogZnIK
LUFsaWFzOiBjc0lTTzY5RnJlbmNoCi0KLU5hbWU6IHZpZGVvdGV4LXN1cHBsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiA1OQotU291
cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczogaXNvLWlyLTcwCi1BbGlhczogY3NJU083MFZpZGVv
dGV4U3VwcDEKLQotTmFtZTogUFQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDYwCi1Tb3VyY2U6IEVDTUEgcmVn
aXN0cnkKLUFsaWFzOiBpc28taXItODQKLUFsaWFzOiBJU082NDYtUFQyCi1BbGlhczogY3NJU084
NFBvcnR1Z3Vlc2UyCi0KLU5hbWU6IEVTMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiA2MQotU291cmNlOiBFQ01B
IHJlZ2lzdHJ5Ci1BbGlhczogaXNvLWlyLTg1Ci1BbGlhczogSVNPNjQ2LUVTMgotQWxpYXM6IGNz
SVNPODVTcGFuaXNoMgotCi1OYW1lOiBNU1pfNzc5NS4zICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogNjIKLVNvdXJjZTogRUNN
QSByZWdpc3RyeQotQWxpYXM6IGlzby1pci04NgotQWxpYXM6IElTTzY0Ni1IVQotQWxpYXM6IGh1
Ci1BbGlhczogY3NJU084Nkh1bmdhcmlhbgotCi1OYW1lOiBKSVNfQzYyMjYtMTk4MyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogNjMK
LVNvdXJjZTogRUNNQSByZWdpc3RyeQotQWxpYXM6IGlzby1pci04NwotQWxpYXM6IHgwMjA4Ci1B
bGlhczogSklTX1gwMjA4LTE5ODMKLUFsaWFzOiBjc0lTTzg3SklTWDAyMDgKLQotTmFtZTogZ3Jl
ZWs3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUs
S1hTMl0KLU1JQmVudW06IDY0Ci1Tb3VyY2U6IEVDTUEgcmVnaXN0cnkKLUFsaWFzOiBpc28taXIt
ODgKLUFsaWFzOiBjc0lTTzg4R3JlZWs3Ci0KLU5hbWU6IEFTTU9fNDQ5ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiA2NQot
U291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczogSVNPXzkwMzYKLUFsaWFzOiBhcmFiaWM3Ci1B
bGlhczogaXNvLWlyLTg5Ci1BbGlhczogY3NJU084OUFTTU80NDkKLQotTmFtZTogaXNvLWlyLTkw
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0K
LU1JQmVudW06IDY2Ci1Tb3VyY2U6IEVDTUEgcmVnaXN0cnkKLUFsaWFzOiBjc0lTTzkwCi0KLU5h
bWU6IEpJU19DNjIyOS0xOTg0LWEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtS
RkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiA2NwotU291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczog
aXNvLWlyLTkxCi1BbGlhczoganAtb2NyLWEKLUFsaWFzOiBjc0lTTzkxSklTQzYyMjkxOTg0YQot
Ci1OYW1lOiBKSVNfQzYyMjktMTk4NC1iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogNjgKLVNvdXJjZTogRUNNQSByZWdpc3RyeQotQWxp
YXM6IGlzby1pci05MgotQWxpYXM6IElTTzY0Ni1KUC1PQ1ItQgotQWxpYXM6IGpwLW9jci1iCi1B
bGlhczogY3NJU085MkpJU0M2Mjk5MTk4NGIKLQotTmFtZTogSklTX0M2MjI5LTE5ODQtYi1hZGQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDY5
Ci1Tb3VyY2U6IEVDTUEgcmVnaXN0cnkKLUFsaWFzOiBpc28taXItOTMKLUFsaWFzOiBqcC1vY3It
Yi1hZGQKLUFsaWFzOiBjc0lTTzkzSklTNjIyOTE5ODRiYWRkCi0KLU5hbWU6IEpJU19DNjIyOS0x
OTg0LWhhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1N
SUJlbnVtOiA3MAotU291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczogaXNvLWlyLTk0Ci1BbGlh
czoganAtb2NyLWhhbmQKLUFsaWFzOiBjc0lTTzk0SklTNjIyOTE5ODRoYW5kCi0KLU5hbWU6IEpJ
U19DNjIyOS0xOTg0LWhhbmQtYWRkICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1
LEtYUzJdCi1NSUJlbnVtOiA3MQotU291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczogaXNvLWly
LTk1Ci1BbGlhczoganAtb2NyLWhhbmQtYWRkCi1BbGlhczogY3NJU085NUpJUzYyMjkxOTg0aGFu
ZGFkZAotCi1OYW1lOiBKSVNfQzYyMjktMTk4NC1rYW5hICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogNzIKLVNvdXJjZTogRUNNQSByZWdpc3Ry
eQotQWxpYXM6IGlzby1pci05NgotQWxpYXM6IGNzSVNPOTZKSVNDNjIyOTE5ODRrYW5hCi0KLU5h
bWU6IElTT18yMDMzLTE5ODMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtS
RkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiA3MwotU291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczog
aXNvLWlyLTk4Ci1BbGlhczogZTEzYgotQWxpYXM6IGNzSVNPMjAzMwotCi1OYW1lOiBBTlNJX1gz
LjExMC0xOTgzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMy
XQotTUlCZW51bTogNzQKLVNvdXJjZTogRUNNQSByZWdpc3RyeQotQWxpYXM6IGlzby1pci05OQot
QWxpYXM6IENTQV9UNTAwLTE5ODMKLUFsaWFzOiBOQVBMUFMKLUFsaWFzOiBjc0lTTzk5TkFQTFBT
Ci0KLU5hbWU6IElTT184ODU5LTE6MTk4NyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiA0Ci1Tb3VyY2U6IEVDTUEgcmVnaXN0cnkKLUFs
aWFzOiBpc28taXItMTAwCi1BbGlhczogSVNPXzg4NTktMQotQWxpYXM6IElTTy04ODU5LTEgKHBy
ZWZlcnJlZCBNSU1FIG5hbWUpCi1BbGlhczogbGF0aW4xCi1BbGlhczogbDEKLUFsaWFzOiBJQk04
MTkKLUFsaWFzOiBDUDgxOQotQWxpYXM6IGNzSVNPTGF0aW4xCi0KLU5hbWU6IElTT184ODU5LTI6
MTk4NyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1N
SUJlbnVtOiA1Ci1Tb3VyY2U6IEVDTUEgcmVnaXN0cnkKLUFsaWFzOiBpc28taXItMTAxCi1BbGlh
czogSVNPXzg4NTktMgotQWxpYXM6IElTTy04ODU5LTIgKHByZWZlcnJlZCBNSU1FIG5hbWUpCi1B
bGlhczogbGF0aW4yCi1BbGlhczogbDIKLUFsaWFzOiBjc0lTT0xhdGluMgotCi1OYW1lOiBULjYx
LTdiaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxL
WFMyXQotTUlCZW51bTogNzUKLVNvdXJjZTogRUNNQSByZWdpc3RyeQotQWxpYXM6IGlzby1pci0x
MDIKLUFsaWFzOiBjc0lTTzEwMlQ2MTdiaXQKLQotTmFtZTogVC42MS04Yml0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDc2
Ci1BbGlhczogVC42MQotU291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczogaXNvLWlyLTEwMwot
QWxpYXM6IGNzSVNPMTAzVDYxOGJpdAotCi1OYW1lOiBJU09fODg1OS0zOjE5ODggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogNgotU291
cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczogaXNvLWlyLTEwOQotQWxpYXM6IElTT184ODU5LTMK
LUFsaWFzOiBJU08tODg1OS0zIChwcmVmZXJyZWQgTUlNRSBuYW1lKQotQWxpYXM6IGxhdGluMwot
QWxpYXM6IGwzCi1BbGlhczogY3NJU09MYXRpbjMKLQotTmFtZTogSVNPXzg4NTktNDoxOTg4ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06
IDcKLVNvdXJjZTogRUNNQSByZWdpc3RyeQotQWxpYXM6IGlzby1pci0xMTAKLUFsaWFzOiBJU09f
ODg1OS00Ci1BbGlhczogSVNPLTg4NTktNCAocHJlZmVycmVkIE1JTUUgbmFtZSkKLUFsaWFzOiBs
YXRpbjQKLUFsaWFzOiBsNAotQWxpYXM6IGNzSVNPTGF0aW40Ci0KLU5hbWU6IEVDTUEtY3lyaWxs
aWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi1NSUJlbnVtOiA3NwotU291
cmNlOiBJU08gcmVnaXN0cnkgKGZvcm1lcmx5IEVDTUEgcmVnaXN0cnkpCi0gICAgICAgICBodHRw
Oi8vd3d3Lml0c2NqLmlwc2ouanAvSVNPLUlSLzExMS5wZGYKLUFsaWFzOiBpc28taXItMTExCi1B
bGlhczogS09JOC1FCi1BbGlhczogY3NJU08xMTFFQ01BQ3lyaWxsaWMKLQotTmFtZTogQ1NBX1oy
NDMuNC0xOTg1LTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hT
Ml0KLU1JQmVudW06IDc4Ci1Tb3VyY2U6IEVDTUEgcmVnaXN0cnkKLUFsaWFzOiBpc28taXItMTIx
Ci1BbGlhczogSVNPNjQ2LUNBCi1BbGlhczogY3NhNy0xCi1BbGlhczogY2EKLUFsaWFzOiBjc0lT
TzEyMUNhbmFkaWFuMQotCi1OYW1lOiBDU0FfWjI0My40LTE5ODUtMiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogNzkKLVNvdXJjZTogRUNN
QSByZWdpc3RyeQotQWxpYXM6IGlzby1pci0xMjIKLUFsaWFzOiBJU082NDYtQ0EyCi1BbGlhczog
Y3NhNy0yCi1BbGlhczogY3NJU08xMjJDYW5hZGlhbjIKLQotTmFtZTogQ1NBX1oyNDMuNC0xOTg1
LWdyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVu
dW06IDgwCi1Tb3VyY2U6IEVDTUEgcmVnaXN0cnkKLUFsaWFzOiBpc28taXItMTIzCi1BbGlhczog
Y3NJU08xMjNDU0FaMjQzNDE5ODVncgotCi1OYW1lOiBJU09fODg1OS02OjE5ODcgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogOQotU291
cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczogaXNvLWlyLTEyNwotQWxpYXM6IElTT184ODU5LTYK
LUFsaWFzOiBJU08tODg1OS02IChwcmVmZXJyZWQgTUlNRSBuYW1lKQotQWxpYXM6IEVDTUEtMTE0
Ci1BbGlhczogQVNNTy03MDgKLUFsaWFzOiBhcmFiaWMKLUFsaWFzOiBjc0lTT0xhdGluQXJhYmlj
Ci0KLU5hbWU6IElTT184ODU5LTYtRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtSRkMxNTU2LElBTkFdCi1NSUJlbnVtOiA4MQotU291cmNlOiBSRkMxNTU2Ci1BbGlhczog
Y3NJU084ODU5NkUKLUFsaWFzOiBJU08tODg1OS02LUUgKHByZWZlcnJlZCBNSU1FIG5hbWUpCi0K
LU5hbWU6IElTT184ODU5LTYtSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtSRkMxNTU2LElBTkFdCi1NSUJlbnVtOiA4MgotU291cmNlOiBSRkMxNTU2Ci1BbGlhczogY3NJ
U084ODU5NkkKLUFsaWFzOiBJU08tODg1OS02LUkgKHByZWZlcnJlZCBNSU1FIG5hbWUpCi0KLU5h
bWU6IElTT184ODU5LTc6MTk4NyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTk0NyxS
RkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAxMAotU291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczog
aXNvLWlyLTEyNgotQWxpYXM6IElTT184ODU5LTcKLUFsaWFzOiBJU08tODg1OS03IChwcmVmZXJy
ZWQgTUlNRSBuYW1lKQotQWxpYXM6IEVMT1RfOTI4Ci1BbGlhczogRUNNQS0xMTgKLUFsaWFzOiBn
cmVlawotQWxpYXM6IGdyZWVrOAotQWxpYXM6IGNzSVNPTGF0aW5HcmVlawotCi1OYW1lOiBULjEw
MS1HMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUs
S1hTMl0KLU1JQmVudW06IDgzCi1Tb3VyY2U6IEVDTUEgcmVnaXN0cnkKLUFsaWFzOiBpc28taXIt
MTI4Ci1BbGlhczogY3NJU08xMjhUMTAxRzIKLQotTmFtZTogSVNPXzg4NTktODoxOTg4ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAx
MQotU291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczogaXNvLWlyLTEzOAotQWxpYXM6IElTT184
ODU5LTgKLUFsaWFzOiBJU08tODg1OS04IChwcmVmZXJyZWQgTUlNRSBuYW1lKQotQWxpYXM6IGhl
YnJldwotQWxpYXM6IGNzSVNPTGF0aW5IZWJyZXcKLQotTmFtZTogSVNPXzg4NTktOC1FICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxNTU2LE51c3NiYWNoZXJdCi1NSUJlbnVt
OiA4NAotU291cmNlOiBSRkMxNTU2Ci1BbGlhczogY3NJU084ODU5OEUKLUFsaWFzOiBJU08tODg1
OS04LUUgKHByZWZlcnJlZCBNSU1FIG5hbWUpCi0KLU5hbWU6IElTT184ODU5LTgtSSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTU1NixOdXNzYmFjaGVyXQotTUlCZW51bTog
ODUKLVNvdXJjZTogUkZDMTU1NgotQWxpYXM6IGNzSVNPODg1OThJCi1BbGlhczogSVNPLTg4NTkt
OC1JIChwcmVmZXJyZWQgTUlNRSBuYW1lKQotCi1OYW1lOiBDU05fMzY5MTAzICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDg2
Ci1Tb3VyY2U6IEVDTUEgcmVnaXN0cnkKLUFsaWFzOiBpc28taXItMTM5Ci1BbGlhczogY3NJU08x
MzlDU04zNjkxMDMKLQotTmFtZTogSlVTX0kuQjEuMDAyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiA4NwotU291cmNlOiBFQ01B
IHJlZ2lzdHJ5Ci1BbGlhczogaXNvLWlyLTE0MQotQWxpYXM6IElTTzY0Ni1ZVQotQWxpYXM6IGpz
Ci1BbGlhczogeXUKLUFsaWFzOiBjc0lTTzE0MUpVU0lCMTAwMgotCi1OYW1lOiBJU09fNjkzNy0y
LWFkZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0K
LU1JQmVudW06IDE0Ci1Tb3VyY2U6IEVDTUEgcmVnaXN0cnkgYW5kIElTTyA2OTM3LTI6MTk4Mwot
QWxpYXM6IGlzby1pci0xNDIKLUFsaWFzOiBjc0lTT1RleHRDb21tCi0KLU5hbWU6IElFQ19QMjct
MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMy
XQotTUlCZW51bTogODgKLVNvdXJjZTogRUNNQSByZWdpc3RyeQotQWxpYXM6IGlzby1pci0xNDMK
LUFsaWFzOiBjc0lTTzE0M0lFQ1AyNzEKLQotTmFtZTogSVNPXzg4NTktNToxOTg4ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiA4Ci1T
b3VyY2U6IEVDTUEgcmVnaXN0cnkKLUFsaWFzOiBpc28taXItMTQ0Ci1BbGlhczogSVNPXzg4NTkt
NQotQWxpYXM6IElTTy04ODU5LTUgKHByZWZlcnJlZCBNSU1FIG5hbWUpCi1BbGlhczogY3lyaWxs
aWMKLUFsaWFzOiBjc0lTT0xhdGluQ3lyaWxsaWMKLQotTmFtZTogSlVTX0kuQjEuMDAzLXNlcmIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVt
OiA4OQotU291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczogaXNvLWlyLTE0NgotQWxpYXM6IHNl
cmJpYW4KLUFsaWFzOiBjc0lTTzE0NlNlcmJpYW4KLQotTmFtZTogSlVTX0kuQjEuMDAzLW1hYyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVt
OiA5MAotU291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczogbWFjZWRvbmlhbgotQWxpYXM6IGlz
by1pci0xNDcKLUFsaWFzOiBjc0lTTzE0N01hY2Vkb25pYW4KLQotTmFtZTogSVNPXzg4NTktOTox
OTg5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1N
SUJlbnVtOiAxMgotU291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczogaXNvLWlyLTE0OAotQWxp
YXM6IElTT184ODU5LTkKLUFsaWFzOiBJU08tODg1OS05IChwcmVmZXJyZWQgTUlNRSBuYW1lKQot
QWxpYXM6IGxhdGluNQotQWxpYXM6IGw1Ci1BbGlhczogY3NJU09MYXRpbjUKLQotTmFtZTogZ3Jl
ZWstY2NpdHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1
LEtYUzJdCi1NSUJlbnVtOiA5MQotU291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczogaXNvLWly
LTE1MAotQWxpYXM6IGNzSVNPMTUwCi1BbGlhczogY3NJU08xNTBHcmVla0NDSVRUCi0KLU5hbWU6
IE5DX05DMDAtMTA6ODEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZD
MTM0NSxLWFMyXQotTUlCZW51bTogOTIKLVNvdXJjZTogRUNNQSByZWdpc3RyeQotQWxpYXM6IGN1
YmEKLUFsaWFzOiBpc28taXItMTUxCi1BbGlhczogSVNPNjQ2LUNVCi1BbGlhczogY3NJU08xNTFD
dWJhCi0KLU5hbWU6IElTT182OTM3LTItMjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogOTMKLVNvdXJjZTogRUNNQSByZWdpc3Ry
eQotQWxpYXM6IGlzby1pci0xNTIKLUFsaWFzOiBjc0lTTzY5MzdBZGQKLQotTmFtZTogR09TVF8x
OTc2OC03NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtY
UzJdCi1NSUJlbnVtOiA5NAotU291cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczogU1RfU0VWXzM1
OC04OAotQWxpYXM6IGlzby1pci0xNTMKLUFsaWFzOiBjc0lTTzE1M0dPU1QxOTc2ODc0Ci0KLU5h
bWU6IElTT184ODU5LXN1cHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
UkZDMTM0NSxLWFMyXQotTUlCZW51bTogOTUKLVNvdXJjZTogRUNNQSByZWdpc3RyeQotQWxpYXM6
IGlzby1pci0xNTQKLUFsaWFzOiBsYXRpbjEtMi01Ci1BbGlhczogY3NJU084ODU5U3VwcAotCi1O
YW1lOiBJU09fMTAzNjctYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
W1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDk2Ci1Tb3VyY2U6IEVDTUEgcmVnaXN0cnkKLUFsaWFz
OiBpc28taXItMTU1Ci1BbGlhczogY3NJU08xMDM2N0JveAotCi1OYW1lOiBJU08tODg1OS0xMCAo
cHJlZmVycmVkIE1JTUUgbmFtZSkJCQkgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAxMwotU291
cmNlOiBFQ01BIHJlZ2lzdHJ5Ci1BbGlhczogaXNvLWlyLTE1NwotQWxpYXM6IGw2Ci1BbGlhczog
SVNPXzg4NTktMTA6MTk5MgotQWxpYXM6IGNzSVNPTGF0aW42Ci1BbGlhczogbGF0aW42Ci0KLU5h
bWU6IGxhdGluLWxhcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
UkZDMTM0NSxLWFMyXQotTUlCZW51bTogOTcKLVNvdXJjZTogRUNNQSByZWdpc3RyeQotQWxpYXM6
IGxhcAotQWxpYXM6IGlzby1pci0xNTgKLUFsaWFzOiBjc0lTTzE1OExhcAotCi1OYW1lOiBKSVNf
WDAyMTItMTk5MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUs
S1hTMl0KLU1JQmVudW06IDk4Ci1Tb3VyY2U6IEVDTUEgcmVnaXN0cnkKLUFsaWFzOiB4MDIxMgot
QWxpYXM6IGlzby1pci0xNTkKLUFsaWFzOiBjc0lTTzE1OUpJU1gwMjEyMTk5MAotCi1OYW1lOiBE
U18yMDg5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEz
NDUsS1hTMl0KLU1JQmVudW06IDk5Ci1Tb3VyY2U6IERhbmlzaCBTdGFuZGFyZCwgRFMgMjA4OSwg
RmVicnVhcnkgMTk3NAotQWxpYXM6IERTMjA4OQotQWxpYXM6IElTTzY0Ni1ESwotQWxpYXM6IGRr
Ci1BbGlhczogY3NJU082NDZEYW5pc2gKLQotTmFtZTogdXMtZGsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAxMDAK
LUFsaWFzOiBjc1VTREsKLQotTmFtZTogZGstdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAxMDEKLUFsaWFzOiBj
c0RLVVMKLQotTmFtZTogSklTX1gwMjAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAxNQotU291cmNlOiBKSVMgWCAwMjAx
LTE5NzYuICAgT25lIGJ5dGUgb25seSwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIAotICAgICAgICBK
SVMvUm9tYW4gKHNpbWlsYXIgdG8gQVNDSUkpIHBsdXMgZWlnaHQtYml0IGhhbGYtd2lkdGggCi0g
ICAgICAgIEthdGFrYW5hCi1BbGlhczogWDAyMDEKLUFsaWFzOiBjc0hhbGZXaWR0aEthdGFrYW5h
Ci0KLU5hbWU6IEtTQzU2MzYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogMTAyCi1BbGlhczogSVNPNjQ2LUtSCi1BbGlh
czogY3NLU0M1NjM2Ci0KLU5hbWU6IElTTy0xMDY0Ni1VQ1MtMgotTUlCZW51bTogMTAwMAotU291
cmNlOiB0aGUgMi1vY3RldCBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUsIGFrYSBVbmljb2RlCi0g
ICAgICAgIHRoaXMgbmVlZHMgdG8gc3BlY2lmeSBuZXR3b3JrIGJ5dGUgb3JkZXI6IHRoZSBzdGFu
ZGFyZAotICAgICAgICBkb2VzIG5vdCBzcGVjaWZ5IChpdCBpcyBhIDE2LWJpdCBpbnRlZ2VyIHNw
YWNlKQotQWxpYXM6IGNzVW5pY29kZQotCi1OYW1lOiBJU08tMTA2NDYtVUNTLTQKLU1JQmVudW06
IDEwMDEKLVNvdXJjZTogdGhlIGZ1bGwgY29kZSBzcGFjZS4gKHNhbWUgY29tbWVudCBhYm91dCBi
eXRlIG9yZGVyLAotICAgICAgICB0aGVzZSBhcmUgMzEtYml0IG51bWJlcnMuCi1BbGlhczogY3NV
Q1M0Ci0KLU5hbWU6IERFQy1NQ1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogMjAwOAotU291cmNlOiBWQVgvVk1TIFVz
ZXIncyBNYW51YWwsIAotICAgICAgICBPcmRlciBOdW1iZXI6IEFJLVk1MTdBLVRFLCBBcHJpbCAx
OTg2LgotQWxpYXM6IGRlYwotQWxpYXM6IGNzREVDTUNTCi0KLU5hbWU6IGhwLXJvbWFuOCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSFAtUENMNSxSRkMxMzQ1LEtYUzJdCi1NSUJl
bnVtOiAyMDA0Ci1Tb3VyY2U6IExhc2VySmV0IElJUCBQcmludGVyIFVzZXIncyBNYW51YWwsIAot
ICAgICAgICBIUCBwYXJ0IG5vIDMzNDcxLTkwOTAxLCBIZXdsZXQtUGFja2FyZCwgSnVuZSAxOTg5
LgotQWxpYXM6IHJvbWFuOAotQWxpYXM6IHI4Ci1BbGlhczogY3NIUFJvbWFuOAotCi1OYW1lOiBt
YWNpbnRvc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEz
NDUsS1hTMl0KLU1JQmVudW06IDIwMjcKLVNvdXJjZTogVGhlIFVuaWNvZGUgU3RhbmRhcmQgdmVy
MS4wLCBJU0JOIDAtMjAxLTU2Nzg4LTEsIE9jdCAxOTkxCi1BbGlhczogbWFjCi1BbGlhczogY3NN
YWNpbnRvc2gKLQotTmFtZTogSUJNMDM3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAyMDI4Ci1Tb3VyY2U6IElCTSBO
TFMgUk0gVm9sMiBTRTA5LTgwMDItMDEsIE1hcmNoIDE5OTAKLUFsaWFzOiBjcDAzNwotQWxpYXM6
IGViY2RpYy1jcC11cwotQWxpYXM6IGViY2RpYy1jcC1jYQotQWxpYXM6IGViY2RpYy1jcC13dAot
QWxpYXM6IGViY2RpYy1jcC1ubAotQWxpYXM6IGNzSUJNMDM3Ci0KLU5hbWU6IElCTTAzOCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQot
TUlCZW51bTogMjAyOQotU291cmNlOiBJQk0gMzE3NCBDaGFyYWN0ZXIgU2V0IFJlZiwgR0EyNy0z
ODMxLTAyLCBNYXJjaCAxOTkwCi1BbGlhczogRUJDRElDLUlOVAotQWxpYXM6IGNwMDM4Ci1BbGlh
czogY3NJQk0wMzgKLQotTmFtZTogSUJNMjczICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAyMDMwCi1Tb3VyY2U6IElC
TSBOTFMgUk0gVm9sMiBTRTA5LTgwMDItMDEsIE1hcmNoIDE5OTAKLUFsaWFzOiBDUDI3MwotQWxp
YXM6IGNzSUJNMjczCi0KLU5hbWU6IElCTTI3NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogMjAzMQotU291cmNlOiBJ
Qk0gMzE3NCBDaGFyYWN0ZXIgU2V0IFJlZiwgR0EyNy0zODMxLTAyLCBNYXJjaCAxOTkwCi1BbGlh
czogRUJDRElDLUJFCi1BbGlhczogQ1AyNzQKLUFsaWFzOiBjc0lCTTI3NAotCi1OYW1lOiBJQk0y
NzUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUs
S1hTMl0KLU1JQmVudW06IDIwMzIKLVNvdXJjZTogSUJNIE5MUyBSTSBWb2wyIFNFMDktODAwMi0w
MSwgTWFyY2ggMTk5MAotQWxpYXM6IEVCQ0RJQy1CUgotQWxpYXM6IGNwMjc1Ci1BbGlhczogY3NJ
Qk0yNzUKLQotTmFtZTogSUJNMjc3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAyMDMzCi1Tb3VyY2U6IElCTSBOTFMg
Uk0gVm9sMiBTRTA5LTgwMDItMDEsIE1hcmNoIDE5OTAKLUFsaWFzOiBFQkNESUMtQ1AtREsKLUFs
aWFzOiBFQkNESUMtQ1AtTk8KLUFsaWFzOiBjc0lCTTI3NwotCi1OYW1lOiBJQk0yNzggICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1J
QmVudW06IDIwMzQKLVNvdXJjZTogSUJNIE5MUyBSTSBWb2wyIFNFMDktODAwMi0wMSwgTWFyY2gg
MTk5MAotQWxpYXM6IENQMjc4Ci1BbGlhczogZWJjZGljLWNwLWZpCi1BbGlhczogZWJjZGljLWNw
LXNlCi1BbGlhczogY3NJQk0yNzgKLQotTmFtZTogSUJNMjgwICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAyMDM1Ci1T
b3VyY2U6IElCTSBOTFMgUk0gVm9sMiBTRTA5LTgwMDItMDEsIE1hcmNoIDE5OTAKLUFsaWFzOiBD
UDI4MAotQWxpYXM6IGViY2RpYy1jcC1pdAotQWxpYXM6IGNzSUJNMjgwCi0KLU5hbWU6IElCTTI4
MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxL
WFMyXQotTUlCZW51bTogMjAzNgotU291cmNlOiBJQk0gMzE3NCBDaGFyYWN0ZXIgU2V0IFJlZiwg
R0EyNy0zODMxLTAyLCBNYXJjaCAxOTkwCi1BbGlhczogRUJDRElDLUpQLUUKLUFsaWFzOiBjcDI4
MQotQWxpYXM6IGNzSUJNMjgxCi0KLU5hbWU6IElCTTI4NCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogMjAzNwotU291
cmNlOiBJQk0gTkxTIFJNIFZvbDIgU0UwOS04MDAyLTAxLCBNYXJjaCAxOTkwCi1BbGlhczogQ1Ay
ODQKLUFsaWFzOiBlYmNkaWMtY3AtZXMKLUFsaWFzOiBjc0lCTTI4NAotCi1OYW1lOiBJQk0yODUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hT
Ml0KLU1JQmVudW06IDIwMzgKLVNvdXJjZTogSUJNIE5MUyBSTSBWb2wyIFNFMDktODAwMi0wMSwg
TWFyY2ggMTk5MAotQWxpYXM6IENQMjg1Ci1BbGlhczogZWJjZGljLWNwLWdiCi1BbGlhczogY3NJ
Qk0yODUKLQotTmFtZTogSUJNMjkwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAyMDM5Ci1Tb3VyY2U6IElCTSAzMTc0
IENoYXJhY3RlciBTZXQgUmVmLCBHQTI3LTM4MzEtMDIsIE1hcmNoIDE5OTAKLUFsaWFzOiBjcDI5
MAotQWxpYXM6IEVCQ0RJQy1KUC1rYW5hCi1BbGlhczogY3NJQk0yOTAKLQotTmFtZTogSUJNMjk3
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtY
UzJdCi1NSUJlbnVtOiAyMDQwCi1Tb3VyY2U6IElCTSBOTFMgUk0gVm9sMiBTRTA5LTgwMDItMDEs
IE1hcmNoIDE5OTAKLUFsaWFzOiBjcDI5NwotQWxpYXM6IGViY2RpYy1jcC1mcgotQWxpYXM6IGNz
SUJNMjk3Ci0KLU5hbWU6IElCTTQyMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogMjA0MQotU291cmNlOiBJQk0gTkxT
IFJNIFZvbDIgU0UwOS04MDAyLTAxLCBNYXJjaCAxOTkwLCAKLSAgICAgICAgSUJNIE5MUyBSTSBw
IDExLTExCi1BbGlhczogY3A0MjAKLUFsaWFzOiBlYmNkaWMtY3AtYXIxCi1BbGlhczogY3NJQk00
MjAKLQotTmFtZTogSUJNNDIzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAyMDQyCi1Tb3VyY2U6IElCTSBOTFMgUk0g
Vm9sMiBTRTA5LTgwMDItMDEsIE1hcmNoIDE5OTAKLUFsaWFzOiBjcDQyMwotQWxpYXM6IGViY2Rp
Yy1jcC1ncgotQWxpYXM6IGNzSUJNNDIzCi0KLU5hbWU6IElCTTQyNCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogMjA0
MwotU291cmNlOiBJQk0gTkxTIFJNIFZvbDIgU0UwOS04MDAyLTAxLCBNYXJjaCAxOTkwCi1BbGlh
czogY3A0MjQKLUFsaWFzOiBlYmNkaWMtY3AtaGUKLUFsaWFzOiBjc0lCTTQyNAotCi1OYW1lOiBJ
Qk00MzcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEz
NDUsS1hTMl0KLU1JQmVudW06IDIwMTEKLVNvdXJjZTogSUJNIE5MUyBSTSBWb2wyIFNFMDktODAw
Mi0wMSwgTWFyY2ggMTk5MAotQWxpYXM6IGNwNDM3Ci1BbGlhczogNDM3Ci1BbGlhczogY3NQQzhD
b2RlUGFnZTQzNwotCi1OYW1lOiBJQk01MDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDIwNDQKLVNvdXJjZTogSUJN
IE5MUyBSTSBWb2wyIFNFMDktODAwMi0wMSwgTWFyY2ggMTk5MAotQWxpYXM6IENQNTAwCi1BbGlh
czogZWJjZGljLWNwLWJlCi1BbGlhczogZWJjZGljLWNwLWNoCi1BbGlhczogY3NJQk01MDAKLQot
TmFtZTogSUJNNzc1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgW0hQLVBDTDVdCi1NSUJlbnVtOiAyMDg3Ci1Tb3VyY2U6IEhQIFBDTCA1IENvbXBhcmlz
b24gR3VpZGUgKFAvTiA1MDIxLTAzMjkpIHBwIEItMTMsIDE5OTYKLUFsaWFzOiBjcDc3NQotQWxp
YXM6IGNzUEM3NzVCYWx0aWMKLQotTmFtZTogSUJNODUwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAyMDA5Ci1Tb3Vy
Y2U6IElCTSBOTFMgUk0gVm9sMiBTRTA5LTgwMDItMDEsIE1hcmNoIDE5OTAKLUFsaWFzOiBjcDg1
MAotQWxpYXM6IDg1MAotQWxpYXM6IGNzUEM4NTBNdWx0aWxpbmd1YWwKLQotTmFtZTogSUJNODUx
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtY
UzJdCi1NSUJlbnVtOiAyMDQ1Ci1Tb3VyY2U6IElCTSBOTFMgUk0gVm9sMiBTRTA5LTgwMDItMDEs
IE1hcmNoIDE5OTAKLUFsaWFzOiBjcDg1MQotQWxpYXM6IDg1MQotQWxpYXM6IGNzSUJNODUxCi0K
LU5hbWU6IElCTTg1MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogMjAxMAotU291cmNlOiBJQk0gTkxTIFJNIFZvbDIg
U0UwOS04MDAyLTAxLCBNYXJjaCAxOTkwCi1BbGlhczogY3A4NTIKLUFsaWFzOiA4NTIKLUFsaWFz
OiBjc1BDcDg1MgotCi1OYW1lOiBJQk04NTUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDIwNDYKLVNvdXJjZTogSUJN
IE5MUyBSTSBWb2wyIFNFMDktODAwMi0wMSwgTWFyY2ggMTk5MAotQWxpYXM6IGNwODU1Ci1BbGlh
czogODU1Ci1BbGlhczogY3NJQk04NTUKLQotTmFtZTogSUJNODU3ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAyMDQ3
Ci1Tb3VyY2U6IElCTSBOTFMgUk0gVm9sMiBTRTA5LTgwMDItMDEsIE1hcmNoIDE5OTAKLUFsaWFz
OiBjcDg1NwotQWxpYXM6IDg1NwotQWxpYXM6IGNzSUJNODU3Ci0KLU5hbWU6IElCTTg2MCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQot
TUlCZW51bTogMjA0OAotU291cmNlOiBJQk0gTkxTIFJNIFZvbDIgU0UwOS04MDAyLTAxLCBNYXJj
aCAxOTkwCi1BbGlhczogY3A4NjAKLUFsaWFzOiA4NjAKLUFsaWFzOiBjc0lCTTg2MAotCi1OYW1l
OiBJQk04NjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JG
QzEzNDUsS1hTMl0KLU1JQmVudW06IDIwNDkKLVNvdXJjZTogSUJNIE5MUyBSTSBWb2wyIFNFMDkt
ODAwMi0wMSwgTWFyY2ggMTk5MAotQWxpYXM6IGNwODYxCi1BbGlhczogODYxCi1BbGlhczogY3At
aXMKLUFsaWFzOiBjc0lCTTg2MQotCi1OYW1lOiBJQk04NjIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDIwMTMKLVNv
dXJjZTogSUJNIE5MUyBSTSBWb2wyIFNFMDktODAwMi0wMSwgTWFyY2ggMTk5MAotQWxpYXM6IGNw
ODYyCi1BbGlhczogODYyCi1BbGlhczogY3NQQzg2MkxhdGluSGVicmV3Ci0KLU5hbWU6IElCTTg2
MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxL
WFMyXQotTUlCZW51bTogMjA1MAotU291cmNlOiBJQk0gS2V5Ym9hcmQgbGF5b3V0cyBhbmQgY29k
ZSBwYWdlcywgUE4gMDdHNDU4NiBKdW5lIDE5OTEKLUFsaWFzOiBjcDg2MwotQWxpYXM6IDg2Mwot
QWxpYXM6IGNzSUJNODYzCi0KLU5hbWU6IElCTTg2NCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogMjA1MQotU291cmNl
OiBJQk0gS2V5Ym9hcmQgbGF5b3V0cyBhbmQgY29kZSBwYWdlcywgUE4gMDdHNDU4NiBKdW5lIDE5
OTEKLUFsaWFzOiBjcDg2NAotQWxpYXM6IGNzSUJNODY0Ci0KLU5hbWU6IElCTTg2NSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlC
ZW51bTogMjA1MgotU291cmNlOiBJQk0gRE9TIDMuMyBSZWYgKEFicmlkZ2VkKSwgOTRYOTU3NSAo
RmViIDE5ODcpCi1BbGlhczogY3A4NjUKLUFsaWFzOiA4NjUKLUFsaWFzOiBjc0lCTTg2NQotCi1O
YW1lOiBJQk04NjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFtQb25kXQotTUlCZW51bTogMjA4NgotU291cmNlOiBJQk0gTkxERyBWb2x1bWUgMiAo
U0UwOS04MDAyLTAzKSBBdWd1c3QgMTk5NAotQWxpYXM6IGNwODY2Ci1BbGlhczogODY2Ci1BbGlh
czogY3NJQk04NjYKLQotTmFtZTogSUJNODY4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAyMDUzCi1Tb3VyY2U6IElC
TSBOTFMgUk0gVm9sMiBTRTA5LTgwMDItMDEsIE1hcmNoIDE5OTAKLUFsaWFzOiBDUDg2OAotQWxp
YXM6IGNwLWFyCi1BbGlhczogY3NJQk04NjgKLQotTmFtZTogSUJNODY5ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAy
MDU0Ci1Tb3VyY2U6IElCTSBLZXlib2FyZCBsYXlvdXRzIGFuZCBjb2RlIHBhZ2VzLCBQTiAwN0c0
NTg2IEp1bmUgMTk5MQotQWxpYXM6IGNwODY5Ci1BbGlhczogODY5Ci1BbGlhczogY3AtZ3IKLUFs
aWFzOiBjc0lCTTg2OQotCi1OYW1lOiBJQk04NzAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hTMl0KLU1JQmVudW06IDIwNTUKLVNvdXJjZTog
SUJNIE5MUyBSTSBWb2wyIFNFMDktODAwMi0wMSwgTWFyY2ggMTk5MAotQWxpYXM6IENQODcwCi1B
bGlhczogZWJjZGljLWNwLXJvZWNlCi1BbGlhczogZWJjZGljLWNwLXl1Ci1BbGlhczogY3NJQk04
NzAKLQotTmFtZTogSUJNODcxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAyMDU2Ci1Tb3VyY2U6IElCTSBOTFMgUk0g
Vm9sMiBTRTA5LTgwMDItMDEsIE1hcmNoIDE5OTAKLUFsaWFzOiBDUDg3MQotQWxpYXM6IGViY2Rp
Yy1jcC1pcwotQWxpYXM6IGNzSUJNODcxCi0KLU5hbWU6IElCTTg4MCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlCZW51bTogMjA1
NwotU291cmNlOiBJQk0gTkxTIFJNIFZvbDIgU0UwOS04MDAyLTAxLCBNYXJjaCAxOTkwCi1BbGlh
czogY3A4ODAKLUFsaWFzOiBFQkNESUMtQ3lyaWxsaWMKLUFsaWFzOiBjc0lCTTg4MAotCi1OYW1l
OiBJQk04OTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JG
QzEzNDUsS1hTMl0KLU1JQmVudW06IDIwNTgKLVNvdXJjZTogSUJNIE5MUyBSTSBWb2wyIFNFMDkt
ODAwMi0wMSwgTWFyY2ggMTk5MAotQWxpYXM6IGNwODkxCi1BbGlhczogY3NJQk04OTEKLQotTmFt
ZTogSUJNOTAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtS
RkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAyMDU5Ci1Tb3VyY2U6IElCTSBOTFMgUk0gVm9sMiBTRTA5
LTgwMDItMDEsIE1hcmNoIDE5OTAKLUFsaWFzOiBjcDkwMwotQWxpYXM6IGNzSUJNOTAzCi0KLU5h
bWU6IElCTTkwNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
UkZDMTM0NSxLWFMyXQotTUlCZW51bTogMjA2MAotU291cmNlOiBJQk0gTkxTIFJNIFZvbDIgU0Uw
OS04MDAyLTAxLCBNYXJjaCAxOTkwCi1BbGlhczogY3A5MDQKLUFsaWFzOiA5MDQKLUFsaWFzOiBj
c0lCQk05MDQKLQotTmFtZTogSUJNOTA1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAyMDYxCi1Tb3VyY2U6IElCTSAz
MTc0IENoYXJhY3RlciBTZXQgUmVmLCBHQTI3LTM4MzEtMDIsIE1hcmNoIDE5OTAKLUFsaWFzOiBD
UDkwNQotQWxpYXM6IGViY2RpYy1jcC10cgotQWxpYXM6IGNzSUJNOTA1Ci0KLU5hbWU6IElCTTkx
OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxL
WFMyXQotTUlCZW51bTogMjA2MgotU291cmNlOiBJQk0gTkxTIFJNIFZvbDIgU0UwOS04MDAyLTAx
LCBNYXJjaCAxOTkwCi1BbGlhczogQ1A5MTgKLUFsaWFzOiBlYmNkaWMtY3AtYXIyCi1BbGlhczog
Y3NJQk05MTgKLQotTmFtZTogSUJNMTAyNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAyMDYzCi1Tb3VyY2U6IElCTSBO
TFMgUk0gVm9sMiBTRTA5LTgwMDItMDEsIE1hcmNoIDE5OTAKLUFsaWFzOiBDUDEwMjYKLUFsaWFz
OiBjc0lCTTEwMjYKLQotTmFtZTogRUJDRElDLUFULURFICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAyMDY0Ci1Tb3VyY2U6IElC
TSAzMjcwIENoYXIgU2V0IFJlZiBDaCAxMCwgR0EyNy0yODM3LTksIEFwcmlsIDE5ODcKLUFsaWFz
OiBjc0lCTUVCQ0RJQ0FUREUKLQotTmFtZTogRUJDRElDLUFULURFLUEgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAyMDY1IAotU291
cmNlOiBJQk0gMzI3MCBDaGFyIFNldCBSZWYgQ2ggMTAsIEdBMjctMjgzNy05LCBBcHJpbCAxOTg3
IAotQWxpYXM6IGNzRUJDRElDQVRERUEKLQotTmFtZTogRUJDRElDLUNBLUZSICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAyMDY2
Ci1Tb3VyY2U6IElCTSAzMjcwIENoYXIgU2V0IFJlZiBDaCAxMCwgR0EyNy0yODM3LTksIEFwcmls
IDE5ODcKLUFsaWFzOiBjc0VCQ0RJQ0NBRlIKLQotTmFtZTogRUJDRElDLURLLU5PICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVtOiAy
MDY3Ci1Tb3VyY2U6IElCTSAzMjcwIENoYXIgU2V0IFJlZiBDaCAxMCwgR0EyNy0yODM3LTksIEFw
cmlsIDE5ODcKLUFsaWFzOiBjc0VCQ0RJQ0RLTk8KLQotTmFtZTogRUJDRElDLURLLU5PLUEgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtYUzJdCi1NSUJlbnVt
OiAyMDY4Ci1Tb3VyY2U6IElCTSAzMjcwIENoYXIgU2V0IFJlZiBDaCAxMCwgR0EyNy0yODM3LTks
IEFwcmlsIDE5ODcKLUFsaWFzOiBjc0VCQ0RJQ0RLTk9BCi0KLU5hbWU6IEVCQ0RJQy1GSS1TRSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQotTUlC
ZW51bTogMjA2OQotU291cmNlOiBJQk0gMzI3MCBDaGFyIFNldCBSZWYgQ2ggMTAsIEdBMjctMjgz
Ny05LCBBcHJpbCAxOTg3Ci1BbGlhczogY3NFQkNESUNGSVNFCi0KLU5hbWU6IEVCQ0RJQy1GSS1T
RS1BICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxLWFMyXQot
TUlCZW51bTogMjA3MAotU291cmNlOiBJQk0gMzI3MCBDaGFyIFNldCBSZWYgQ2ggMTAsIEdBMjct
MjgzNy05LCBBcHJpbCAxOTg3Ci1BbGlhczogY3NFQkNESUNGSVNFQQotCi1OYW1lOiBFQkNESUMt
RlIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUsS1hT
Ml0KLU1JQmVudW06IDIwNzEKLVNvdXJjZTogSUJNIDMyNzAgQ2hhciBTZXQgUmVmIENoIDEwLCBH
QTI3LTI4MzctOSwgQXByaWwgMTk4NwotQWxpYXM6IGNzRUJDRElDRlIKLQotTmFtZTogRUJDRElD
LUlUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtY
UzJdCi1NSUJlbnVtOiAyMDcyCi1Tb3VyY2U6IElCTSAzMjcwIENoYXIgU2V0IFJlZiBDaCAxMCwg
R0EyNy0yODM3LTksIEFwcmlsIDE5ODcKLUFsaWFzOiBjc0VCQ0RJQ0lUCi0KLU5hbWU6IEVCQ0RJ
Qy1QVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTM0NSxL
WFMyXQotTUlCZW51bTogMjA3MwotU291cmNlOiBJQk0gMzI3MCBDaGFyIFNldCBSZWYgQ2ggMTAs
IEdBMjctMjgzNy05LCBBcHJpbCAxOTg3Ci1BbGlhczogY3NFQkNESUNQVAotCi1OYW1lOiBFQkNE
SUMtRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEzNDUs
S1hTMl0KLU1JQmVudW06IDIwNzQKLVNvdXJjZTogSUJNIDMyNzAgQ2hhciBTZXQgUmVmIENoIDEw
LCBHQTI3LTI4MzctOSwgQXByaWwgMTk4NwotQWxpYXM6IGNzRUJDRElDRVMKLQotTmFtZTogRUJD
RElDLUVTLUEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1
LEtYUzJdCi1NSUJlbnVtOiAyMDc1Ci1Tb3VyY2U6IElCTSAzMjcwIENoYXIgU2V0IFJlZiBDaCAx
MCwgR0EyNy0yODM3LTksIEFwcmlsIDE5ODcKLUFsaWFzOiBjc0VCQ0RJQ0VTQQotCi1OYW1lOiBF
QkNESUMtRVMtUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzEz
NDUsS1hTMl0KLU1JQmVudW06IDIwNzYKLVNvdXJjZTogSUJNIDMyNzAgQ2hhciBTZXQgUmVmIENo
IDEwLCBHQTI3LTI4MzctOSwgQXByaWwgMTk4NwotQWxpYXM6IGNzRUJDRElDRVNTCi0KLU5hbWU6
IEVCQ0RJQy1VSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZD
MTM0NSxLWFMyXQotTUlCZW51bTogMjA3NwotU291cmNlOiBJQk0gMzI3MCBDaGFyIFNldCBSZWYg
Q2ggMTAsIEdBMjctMjgzNy05LCBBcHJpbCAxOTg3Ci1BbGlhczogY3NFQkNESUNVSwotCi1OYW1l
OiBFQkNESUMtVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JG
QzEzNDUsS1hTMl0KLU1JQmVudW06IDIwNzgKLVNvdXJjZTogSUJNIDMyNzAgQ2hhciBTZXQgUmVm
IENoIDEwLCBHQTI3LTI4MzctOSwgQXByaWwgMTk4NwotQWxpYXM6IGNzRUJDRElDVVMKLQotTmFt
ZTogVU5LTk9XTi04QklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW1JGQzE0MjhdCi1NSUJlbnVtOiAyMDc5Ci1BbGlhczogY3NVbmtub3duOEJpVAotCi1OYW1l
OiBNTkVNT05JQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JG
QzEzNDUsS1hTMl0KLU1JQmVudW06IDIwODAKLVNvdXJjZTogUkZDIDEzNDUsIGFsc28ga25vd24g
YXMgIm1uZW1vbmljK2FzY2lpKzM4IgotQWxpYXM6IGNzTW5lbW9uaWMKLQotTmFtZTogTU5FTSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMxMzQ1LEtY
UzJdCi1NSUJlbnVtOiAyMDgxCi1Tb3VyY2U6IFJGQyAxMzQ1LCBhbHNvIGtub3duIGFzICJtbmVt
b25pYythc2NpaSs4MjAwIgotQWxpYXM6IGNzTW5lbQotCi1OYW1lOiBWSVNDSUkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTQ1Nl0KLU1JQmVu
dW06IDIwODIKLVNvdXJjZTogUkZDIDE0NTYKLUFsaWFzOiBjc1ZJU0NJSQotCi1OYW1lOiBWSVFS
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZD
MTQ1Nl0KLU1JQmVudW06IDIwODMKLVNvdXJjZTogUkZDIDE0NTYKLUFsaWFzOiBjc1ZJUVIKLQot
TmFtZTogS09JOC1SICAocHJlZmVycmVkIE1JTUUgbmFtZSkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgW1JGQzE0ODldCi1NSUJlbnVtOiAyMDg0Ci1Tb3VyY2U6IFJGQyAxNDg5LCBiYXNlZCBv
biBHT1NULTE5NzY4LTc0LCBJU08tNjkzNy84LCAKLSAgICAgICAgSU5JUy1DeXJpbGxpYywgSVNP
LTU0MjcuCi1BbGlhczogY3NLT0k4UgotCi1OYW1lOiBLT0k4LVUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMjMxOV0KLU1JQmVudW06IDIwODgK
LVNvdXJjZTogUkZDIDIzMTkKLQotTmFtZTogSUJNMDA4NTgKLU1JQmVudW06IDIwODkKLVNvdXJj
ZTogSUJNIFNlZSAoaHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jaGFyc2V0LXJlZy9J
Qk0wMDg1OCkgICAgW01haGRpXQotQWxpYXM6IENDU0lEMDA4NTgKLUFsaWFzOiBDUDAwODU4Ci1B
bGlhczogUEMtTXVsdGlsaW5ndWFsLTg1MCtldXJvCi0KLU5hbWU6IElCTTAwOTI0Ci1NSUJlbnVt
OiAyMDkwCi1Tb3VyY2U6IElCTSBTZWUgKGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMv
Y2hhcnNldC1yZWcvSUJNMDA5MjQpICAgIFtNYWhkaV0KLUFsaWFzOiBDQ1NJRDAwOTI0Ci1BbGlh
czogQ1AwMDkyNAotQWxpYXM6IGViY2RpYy1MYXRpbjktLWV1cm8KLQotTmFtZTogSUJNMDExNDAK
LU1JQmVudW06IDIwOTEKLVNvdXJjZTogSUJNIFNlZSAoaHR0cDovL3d3dy5pYW5hLm9yZy9hc3Np
Z25tZW50cy9jaGFyc2V0LXJlZy9JQk0wMTE0MCkgICAgW01haGRpXQotQWxpYXM6IENDU0lEMDEx
NDAKLUFsaWFzOiBDUDAxMTQwCi1BbGlhczogZWJjZGljLXVzLTM3K2V1cm8KLQotTmFtZTogSUJN
MDExNDEKLU1JQmVudW06IDIwOTIKLVNvdXJjZTogSUJNIFNlZSAoaHR0cDovL3d3dy5pYW5hLm9y
Zy9hc3NpZ25tZW50cy9jaGFyc2V0LXJlZy9JQk0wMTE0MSkgICAgW01haGRpXQotQWxpYXM6IEND
U0lEMDExNDEKLUFsaWFzOiBDUDAxMTQxCi1BbGlhczogZWJjZGljLWRlLTI3MytldXJvCi0KLU5h
bWU6IElCTTAxMTQyCi1NSUJlbnVtOiAyMDkzCi1Tb3VyY2U6IElCTSBTZWUgKGh0dHA6Ly93d3cu
aWFuYS5vcmcvYXNzaWdubWVudHMvY2hhcnNldC1yZWcvSUJNMDExNDIpICAgIFtNYWhkaV0KLUFs
aWFzOiBDQ1NJRDAxMTQyCi1BbGlhczogQ1AwMTE0MgotQWxpYXM6IGViY2RpYy1kay0yNzcrZXVy
bwotQWxpYXM6IGViY2RpYy1uby0yNzcrZXVybwotCi1OYW1lOiBJQk0wMTE0MwotTUlCZW51bTog
MjA5NAotU291cmNlOiBJQk0gU2VlIChodHRwOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2No
YXJzZXQtcmVnL0lCTTAxMTQzKSAgICBbTWFoZGldCi1BbGlhczogQ0NTSUQwMTE0MwotQWxpYXM6
IENQMDExNDMKLUFsaWFzOiBlYmNkaWMtZmktMjc4K2V1cm8KLUFsaWFzOiBlYmNkaWMtc2UtMjc4
K2V1cm8KLQotTmFtZTogSUJNMDExNDQKLU1JQmVudW06IDIwOTUKLVNvdXJjZTogSUJNIFNlZSAo
aHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jaGFyc2V0LXJlZy9JQk0wMTE0NCkgICAg
W01haGRpXQotQWxpYXM6IENDU0lEMDExNDQKLUFsaWFzOiBDUDAxMTQ0Ci1BbGlhczogZWJjZGlj
LWl0LTI4MCtldXJvCi0KLU5hbWU6IElCTTAxMTQ1Ci1NSUJlbnVtOiAyMDk2Ci1Tb3VyY2U6IElC
TSBTZWUgKGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvY2hhcnNldC1yZWcvSUJNMDEx
NDUpICAgIFtNYWhkaV0KLUFsaWFzOiBDQ1NJRDAxMTQ1Ci1BbGlhczogQ1AwMTE0NQotQWxpYXM6
IGViY2RpYy1lcy0yODQrZXVybwotCi1OYW1lOiBJQk0wMTE0NgotTUlCZW51bTogMjA5NwotU291
cmNlOiBJQk0gU2VlIChodHRwOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2NoYXJzZXQtcmVn
L0lCTTAxMTQ2KSAgICBbTWFoZGldCi1BbGlhczogQ0NTSUQwMTE0NgotQWxpYXM6IENQMDExNDYK
LUFsaWFzOiBlYmNkaWMtZ2ItMjg1K2V1cm8KLQotTmFtZTogSUJNMDExNDcKLU1JQmVudW06IDIw
OTgKLVNvdXJjZTogSUJNIFNlZSAoaHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jaGFy
c2V0LXJlZy9JQk0wMTE0NykgICAgW01haGRpXQotQWxpYXM6IENDU0lEMDExNDcKLUFsaWFzOiBD
UDAxMTQ3Ci1BbGlhczogZWJjZGljLWZyLTI5NytldXJvCi0KLU5hbWU6IElCTTAxMTQ4Ci1NSUJl
bnVtOiAyMDk5Ci1Tb3VyY2U6IElCTSBTZWUgKGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVu
dHMvY2hhcnNldC1yZWcvSUJNMDExNDgpICAgIFtNYWhkaV0KLUFsaWFzOiBDQ1NJRDAxMTQ4Ci1B
bGlhczogQ1AwMTE0OAotQWxpYXM6IGViY2RpYy1pbnRlcm5hdGlvbmFsLTUwMCtldXJvCi0KLU5h
bWU6IElCTTAxMTQ5Ci1NSUJlbnVtOiAyMTAwCi1Tb3VyY2U6IElCTSBTZWUgKGh0dHA6Ly93d3cu
aWFuYS5vcmcvYXNzaWdubWVudHMvY2hhcnNldC1yZWcvSUJNMDExNDkpICAgIFtNYWhkaV0KLUFs
aWFzOiBDQ1NJRDAxMTQ5Ci1BbGlhczogQ1AwMTE0OQotQWxpYXM6IGViY2RpYy1pcy04NzErZXVy
bwotCi1OYW1lOiBCaWc1LUhLU0NTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbWWlja10KLU1JQmVudW06IDIxMDEKLVNvdXJjZTogICBTZWUgKGh0dHA6
Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvY2hhcnNldC1yZWcvQmlnNS1IS1NDUykgCi1BbGlh
czogTm9uZQotCi1OYW1lOiBJQk0xMDQ3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW1JvYnJpZ2Fkb10KLU1JQmVudW06IDIxMDIKLVNvdXJjZTogSUJNMTA0
NyAoRUJDRElDIExhdGluIDEvT3BlbiBTeXN0ZW1zKQotaHR0cDovL3d3dy0xLmlibS5jb20vc2Vy
dmVycy9lc2VydmVyL2lzZXJpZXMvc29mdHdhcmUvZ2xvYmFsaXphdGlvbi9wZGYvY3AwMTA0N3ou
cGRmCi1BbGlhczogSUJNLTEwNDcKLQotTmFtZTogUFRDUDE1NCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVXNrb3ZdCi1NSUJlbnVtOiAyMTAzCi1T
b3VyY2U6IFNlZSAoaHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jaGFyc2V0LXJlZy9Q
VENQMTU0KQotQWxpYXM6IGNzUFRDUDE1NAotQWxpYXM6IFBUMTU0Ci1BbGlhczogQ1AxNTQKLUFs
aWFzOiBDeXJpbGxpYy1Bc2lhbgotCi1OYW1lOiAgQW1pZ2EtMTI1MQotTUlCZW51bTogIDIxMDQK
LVNvdXJjZTogIFNlZSAoaHR0cDovL3d3dy5hbWlnYS51bHRyYW5ldC5ydS9BbWlnYS0xMjUxLmh0
bWwpCi1BbGlhczogIEFtaTEyNTEKLUFsaWFzOiAgQW1pZ2ExMjUxCi1BbGlhczogIEFtaS0xMjUx
Ci0oQWxpYXNlcyBhcmUgcHJvdmlkZWQgZm9yIGhpc3RvcmljYWwgcmVhc29ucyBhbmQgc2hvdWxk
IG5vdCBiZSB1c2VkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbTWFseXNoZXZdCi0JCQkJCQkJCQkJCQkJCQkgIAotTmFtZTog
IEtPSTctc3dpdGNoZWQKLU1JQmVudW06ICAyMTA1Ci1Tb3VyY2U6ICBTZWUgPGh0dHA6Ly93d3cu
aWFuYS5vcmcvYXNzaWdubWVudHMvY2hhcnNldC1yZWcvS09JNy1zd2l0Y2hlZD4KLUFsaWFzZXM6
ICBOb25lCi0KLU5hbWU6IFVOSUNPREUtMS0xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtSRkMxNjQxXQotTUlCZW51bTogMTAxMAotU291cmNlOiBSRkMgMTY0
MQotQWxpYXM6IGNzVW5pY29kZTExCi0KLU5hbWU6IFNDU1UKLU1JQmVudW06IDEwMTEKLVNvdXJj
ZTogU0NTVSBTZWUgKGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvY2hhcnNldC1yZWcv
U0NTVSkgICAgIFtTY2hlcmVyXQotQWxpYXM6IE5vbmUgCi0KLU5hbWU6IFVURi03ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtSRkMyMTUyXQotTUlC
ZW51bTogMTAxMgotU291cmNlOiBSRkMgMjE1MgotQWxpYXM6IE5vbmUKLQotTmFtZTogVVRGLTE2
QkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzI3
ODFdCi1NSUJlbnVtOiAxMDEzCi1Tb3VyY2U6IFJGQyAyNzgxCi1BbGlhczogTm9uZQotCi1OYW1l
OiBVVEYtMTZMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbUkZDMjc4MV0KLU1JQmVudW06IDEwMTQKLVNvdXJjZTogUkZDIDI3ODEKLUFsaWFzOiBOb25l
Ci0KLU5hbWU6IFVURi0xNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFtSRkMyNzgxXQotTUlCZW51bTogMTAxNQotU291cmNlOiBSRkMgMjc4MQotQWxp
YXM6IE5vbmUKLQotTmFtZTogQ0VTVS04ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtQaGlwcHNdCi1NSUJlbnVtOiAxMDE2Ci1Tb3VyY2U6IDxodHRw
Oi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvcmVwb3J0cy90cjI2PgotQWxpYXM6IGNzQ0VTVS04
Ci0KLU5hbWU6IFVURi0zMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgW0RhdmlzXSAKLU1JQmVudW06IDEwMTcKLVNvdXJjZTogPGh0dHA6Ly93d3cu
dW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyMTkvPgotQWxpYXM6IE5vbmUKLQotTmFtZTog
VVRGLTMyQkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbRGF2aXNdCi1NSUJlbnVtOiAxMDE4Ci1Tb3VyY2U6IDxodHRwOi8vd3d3LnVuaWNvZGUub3Jn
L3VuaWNvZGUvcmVwb3J0cy90cjE5Lz4KLUFsaWFzOiBOb25lCi0KLU5hbWU6IFVURi0zMkxFICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RhdmlzXQot
TUlCZW51bTogMTAxOQotU291cmNlOiA8aHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3Jl
cG9ydHMvdHIxOS8+Ci1BbGlhczogTm9uZQotCi1OYW1lOiBCT0NVLTEgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU2NoZXJlcl0KLU1JQmVudW06IDEw
MjAKLVNvdXJjZTogaHR0cDovL3d3dy51bmljb2RlLm9yZy9ub3Rlcy90bjYvCi1BbGlhczogY3NC
T0NVLTEKLQotTmFtZTogVU5JQ09ERS0xLTEtVVRGLTcgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW1JGQzE2NDJdCi1NSUJlbnVtOiAxMDMKLVNvdXJjZTogUkZDIDE2NDIK
LUFsaWFzOiBjc1VuaWNvZGUxMVVURjcKLQotTmFtZTogVVRGLTggICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JGQzM2MjldCi1NSUJlbnVtOiAxMDYK
LVNvdXJjZTogUkZDIDM2MjkKLUFsaWFzOiBOb25lIAotCi1OYW1lOiBJU08tODg1OS0xMwotTUlC
ZW51bTogMTA5Ci1Tb3VyY2U6IElTTyBTZWUgKGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVu
dHMvY2hhcnNldC1yZWcvaXNvLTg4NTktMTMpW1R1bWFzb25pc10gCi1BbGlhczogTm9uZQotCi1O
YW1lOiBJU08tODg1OS0xNAotTUlCZW51bTogMTEwCi1Tb3VyY2U6IElTTyBTZWUgKGh0dHA6Ly93
d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvY2hhcnNldC1yZWcvaXNvLTg4NTktMTQpIFtTaW1vbnNl
bl0KLUFsaWFzOiBpc28taXItMTk5Ci1BbGlhczogSVNPXzg4NTktMTQ6MTk5OAotQWxpYXM6IElT
T184ODU5LTE0Ci1BbGlhczogbGF0aW44Ci1BbGlhczogaXNvLWNlbHRpYwotQWxpYXM6IGw4Ci0K
LU5hbWU6IElTTy04ODU5LTE1Ci1NSUJlbnVtOiAxMTEKLVNvdXJjZTogSVNPIAotICAgICAgICBQ
bGVhc2Ugc2VlOiA8aHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jaGFyc2V0LXJlZy9J
U08tODg1OS0xNT4KLUFsaWFzOiBJU09fODg1OS0xNQotQWxpYXM6IExhdGluLTkKLQotTmFtZTog
SVNPLTg4NTktMTYKLU1JQmVudW06IDExMgotU291cmNlOiBJU08KLUFsaWFzOiBpc28taXItMjI2
Ci1BbGlhczogSVNPXzg4NTktMTY6MjAwMQotQWxpYXM6IElTT184ODU5LTE2Ci1BbGlhczogbGF0
aW4xMAotQWxpYXM6IGwxMCAKLQotTmFtZTogR0JLICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAotTUlCZW51bTogMTEzCi1Tb3VyY2U6IENoaW5lc2UgSVQg
U3RhbmRhcmRpemF0aW9uIFRlY2huaWNhbCBDb21taXR0ZWUgIAotICAgICAgICBQbGVhc2Ugc2Vl
OiA8aHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jaGFyc2V0LXJlZy9HQks+Ci1BbGlh
czogQ1A5MzYKLUFsaWFzOiBNUzkzNgotQWxpYXM6IHdpbmRvd3MtOTM2Ci0KLU5hbWU6IEdCMTgw
MzAKLU1JQmVudW06IDExNAotU291cmNlOiBDaGluZXNlIElUIFN0YW5kYXJkaXphdGlvbiBUZWNo
bmljYWwgQ29tbWl0dGVlCi0gICAgICAgIFBsZWFzZSBzZWU6IDxodHRwOi8vd3d3LmlhbmEub3Jn
L2Fzc2lnbm1lbnRzL2NoYXJzZXQtcmVnL0dCMTgwMzA+Ci1BbGlhczogTm9uZQotCi1OYW1lOiAg
T1NEX0VCQ0RJQ19ERjA0XzE1Ci1NSUJlbnVtOiAgMTE1Ci1Tb3VyY2U6ICBGdWppdHN1LVNpZW1l
bnMgc3RhbmRhcmQgbWFpbmZyYW1lIEVCQ0RJQyBlbmNvZGluZwotICAgICAgICAgUGxlYXNlIHNl
ZTogPGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvY2hhcnNldC1yZWcvT1NELUVCQ0RJ
Qy1ERjA0LTE1PgotQWxpYXM6ICAgTm9uZQotCi1OYW1lOiAgT1NEX0VCQ0RJQ19ERjAzX0lSVgot
TUlCZW51bTogIDExNgotU291cmNlOiAgRnVqaXRzdS1TaWVtZW5zIHN0YW5kYXJkIG1haW5mcmFt
ZSBFQkNESUMgZW5jb2RpbmcKLSAgICAgICAgIFBsZWFzZSBzZWU6IDxodHRwOi8vd3d3LmlhbmEu
b3JnL2Fzc2lnbm1lbnRzL2NoYXJzZXQtcmVnL09TRC1FQkNESUMtREYwMy1JUlY+Ci1BbGlhczog
IE5vbmUKLQotTmFtZTogIE9TRF9FQkNESUNfREYwNF8xCi1NSUJlbnVtOiAgMTE3Ci1Tb3VyY2U6
ICBGdWppdHN1LVNpZW1lbnMgc3RhbmRhcmQgbWFpbmZyYW1lIEVCQ0RJQyBlbmNvZGluZwotICAg
ICAgICAgUGxlYXNlIHNlZTogPGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvY2hhcnNl
dC1yZWcvT1NELUVCQ0RJQy1ERjA0LTE+Ci1BbGlhczogIE5vbmUgICAKLQotTmFtZTogSklTX0Vu
Y29kaW5nCi1NSUJlbnVtOiAxNgotU291cmNlOiBKSVMgWCAwMjAyLTE5OTEuICBVc2VzIElTTyAy
MDIyIGVzY2FwZSBzZXF1ZW5jZXMgdG8KLSAgICAgICAgc2hpZnQgY29kZSBzZXRzIGFzIGRvY3Vt
ZW50ZWQgaW4gSklTIFggMDIwMi0xOTkxLgotQWxpYXM6IGNzSklTRW5jb2RpbmcKLQotTmFtZTog
U2hpZnRfSklTICAocHJlZmVycmVkIE1JTUUgbmFtZSkKLU1JQmVudW06IDE3Ci1Tb3VyY2U6IFRo
aXMgY2hhcnNldCBpcyBhbiBleHRlbnNpb24gb2YgY3NIYWxmV2lkdGhLYXRha2FuYSBieQotICAg
ICAgICBhZGRpbmcgZ3JhcGhpYyBjaGFyYWN0ZXJzIGluIEpJUyBYIDAyMDguICBUaGUgQ0NTJ3Mg
YXJlCi0gICAgICAgIEpJUyBYMDIwMToxOTk3IGFuZCBKSVMgWDAyMDg6MTk5Ny4gIFRoZQotICAg
ICAgICBjb21wbGV0ZSBkZWZpbml0aW9uIGlzIHNob3duIGluIEFwcGVuZGl4IDEgb2YgSklTCi0g
ICAgICAgIFgwMjA4OjE5OTcuCi0gICAgICAgIFRoaXMgY2hhcnNldCBjYW4gYmUgdXNlZCBmb3Ig
dGhlIHRvcC1sZXZlbCBtZWRpYSB0eXBlICJ0ZXh0Ii4KLUFsaWFzOiBNU19LYW5qaSAKLUFsaWFz
OiBjc1NoaWZ0SklTCi0KLU5hbWU6IEV4dGVuZGVkX1VOSVhfQ29kZV9QYWNrZWRfRm9ybWF0X2Zv
cl9KYXBhbmVzZQotTUlCZW51bTogMTgKLVNvdXJjZTogU3RhbmRhcmRpemVkIGJ5IE9TRiwgVU5J
WCBJbnRlcm5hdGlvbmFsLCBhbmQgVU5JWCBTeXN0ZW1zCi0gICAgICAgIExhYm9yYXRvcmllcyBQ
YWNpZmljLiAgVXNlcyBJU08gMjAyMiBydWxlcyB0byBzZWxlY3QKLSAgICAgICAgICAgICAgIGNv
ZGUgc2V0IDA6IFVTLUFTQ0lJIChhIHNpbmdsZSA3LWJpdCBieXRlIHNldCkKLSAgICAgICAgICAg
ICAgIGNvZGUgc2V0IDE6IEpJUyBYMDIwOC0xOTkwIChhIGRvdWJsZSA4LWJpdCBieXRlIHNldCkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0ZWQgdG8gQTAtRkYgaW4gYm90aCBi
eXRlcwotICAgICAgICAgICAgICAgY29kZSBzZXQgMjogSGFsZiBXaWR0aCBLYXRha2FuYSAoYSBz
aW5nbGUgNy1iaXQgYnl0ZSBzZXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJp
bmcgU1MyIGFzIHRoZSBjaGFyYWN0ZXIgcHJlZml4Ci0gICAgICAgICAgICAgICBjb2RlIHNldCAz
OiBKSVMgWDAyMTItMTk5MCAoYSBkb3VibGUgNy1iaXQgYnl0ZSBzZXQpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXN0cmljdGVkIHRvIEEwLUZGIGluIGJvdGggYnl0ZXMKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcXVpcmluZyBTUzMgYXMgdGhlIGNoYXJhY3RlciBwcmVmaXgK
LUFsaWFzOiBjc0VVQ1BrZEZtdEphcGFuZXNlCi1BbGlhczogRVVDLUpQICAocHJlZmVycmVkIE1J
TUUgbmFtZSkKLQotTmFtZTogRXh0ZW5kZWRfVU5JWF9Db2RlX0ZpeGVkX1dpZHRoX2Zvcl9KYXBh
bmVzZQotTUlCZW51bTogMTkKLVNvdXJjZTogVXNlZCBpbiBKYXBhbi4gIEVhY2ggY2hhcmFjdGVy
IGlzIDIgb2N0ZXRzLgotICAgICAgICAgICAgICAgIGNvZGUgc2V0IDA6IFVTLUFTQ0lJIChhIHNp
bmdsZSA3LWJpdCBieXRlIHNldCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFzdCBi
eXRlID0gMDAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDJuZCBieXRlID0gMjAtN0UK
LSAgICAgICAgICAgICAgICBjb2RlIHNldCAxOiBKSVMgWDAyMDgtMTk5MCAoYSBkb3VibGUgNy1i
aXQgYnl0ZSBzZXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3RlZCAgdG8g
QTAtRkYgaW4gYm90aCBieXRlcyAKLSAgICAgICAgICAgICAgICBjb2RlIHNldCAyOiBIYWxmIFdp
ZHRoIEthdGFrYW5hIChhIHNpbmdsZSA3LWJpdCBieXRlIHNldCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDFzdCBieXRlID0gMDAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDJuZCBieXRlID0gQTAtRkYKLSAgICAgICAgICAgICAgICBjb2RlIHNldCAzOiBKSVMgWDAyMTIt
MTk5MCAoYSBkb3VibGUgNy1iaXQgYnl0ZSBzZXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdHJpY3RlZCB0byBBMC1GRiBpbiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGUgZmlyc3QgYnl0ZQotICAgICAgICAgICAgICAgIGFuZCAyMS03RSBpbiB0aGUgc2Vjb25kIGJ5
dGUKLUFsaWFzOiBjc0VVQ0ZpeFdpZEphcGFuZXNlCi0KLU5hbWU6IElTTy0xMDY0Ni1VQ1MtQmFz
aWMKLU1JQmVudW06IDEwMDIKLVNvdXJjZTogQVNDSUkgc3Vic2V0IG9mIFVuaWNvZGUuICBCYXNp
YyBMYXRpbiA9IGNvbGxlY3Rpb24gMQotICAgICAgICBTZWUgSVNPIDEwNjQ2LCBBcHBlbmRpeCBB
Ci1BbGlhczogY3NVbmljb2RlQVNDSUkKLQotTmFtZTogSVNPLTEwNjQ2LVVuaWNvZGUtTGF0aW4x
Ci1NSUJlbnVtOiAxMDAzCi1Tb3VyY2U6IElTTyBMYXRpbi0xIHN1YnNldCBvZiBVbmljb2RlLiBC
YXNpYyBMYXRpbiBhbmQgTGF0aW4tMSAKLSAgICAgICAgIFN1cHBsZW1lbnQgID0gY29sbGVjdGlv
bnMgMSBhbmQgMi4gIFNlZSBJU08gMTA2NDYsIAotICAgICAgICAgQXBwZW5kaXggQS4gIFNlZSBS
RkMgMTgxNS4KLUFsaWFzOiBjc1VuaWNvZGVMYXRpbjEKLUFsaWFzOiBJU08tMTA2NDYKLQotTmFt
ZTogSVNPLTEwNjQ2LUotMQotU291cmNlOiBJU08gMTA2NDYgSmFwYW5lc2UsIHNlZSBSRkMgMTgx
NS4KLQotTmFtZTogSVNPLVVuaWNvZGUtSUJNLTEyNjEKLU1JQmVudW06IDEwMDUKLVNvdXJjZTog
SUJNIExhdGluLTIsIC0zLCAtNSwgRXh0ZW5kZWQgUHJlc2VudGF0aW9uIFNldCwgR0NTR0lEOiAx
MjYxCi1BbGlhczogY3NVbmljb2RlSUJNMTI2MQotCi1OYW1lOiBJU08tVW5pY29kZS1JQk0tMTI2
OAotTUlCZW51bTogMTAwNgotU291cmNlOiBJQk0gTGF0aW4tNCBFeHRlbmRlZCBQcmVzZW50YXRp
b24gU2V0LCBHQ1NHSUQ6IDEyNjgKLUFsaWFzOiBjc1VuaWNvZGVJQk0xMjY4Ci0KLU5hbWU6IElT
Ty1Vbmljb2RlLUlCTS0xMjc2Ci1NSUJlbnVtOiAxMDA3Ci1Tb3VyY2U6IElCTSBDeXJpbGxpYyBH
cmVlayBFeHRlbmRlZCBQcmVzZW50YXRpb24gU2V0LCBHQ1NHSUQ6IDEyNzYKLUFsaWFzOiBjc1Vu
aWNvZGVJQk0xMjc2Ci0KLU5hbWU6IElTTy1Vbmljb2RlLUlCTS0xMjY0Ci1NSUJlbnVtOiAxMDA4
Ci1Tb3VyY2U6IElCTSBBcmFiaWMgUHJlc2VudGF0aW9uIFNldCwgR0NTR0lEOiAxMjY0Ci1BbGlh
czogY3NVbmljb2RlSUJNMTI2NAotCi1OYW1lOiBJU08tVW5pY29kZS1JQk0tMTI2NQotTUlCZW51
bTogMTAwOQotU291cmNlOiBJQk0gSGVicmV3IFByZXNlbnRhdGlvbiBTZXQsIEdDU0dJRDogMTI2
NQotQWxpYXM6IGNzVW5pY29kZUlCTTEyNjUKLQotTmFtZTogSVNPLTg4NTktMS1XaW5kb3dzLTMu
MC1MYXRpbi0xICAgICAgICAgICAgICAgICAgICAgICAgICAgW0hQLVBDTDVdIAotTUlCZW51bTog
MjAwMAotU291cmNlOiBFeHRlbmRlZCBJU08gODg1OS0xIExhdGluLTEgZm9yIFdpbmRvd3MgMy4w
LiAgCi0gICAgICAgIFBDTCBTeW1ib2wgU2V0IGlkOiA5VQotQWxpYXM6IGNzV2luZG93czMwTGF0
aW4xCi0KLU5hbWU6IElTTy04ODU5LTEtV2luZG93cy0zLjEtTGF0aW4tMSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtIUC1QQ0w1XSAKLU1JQmVudW06IDIwMDEKLVNvdXJjZTogRXh0ZW5kZWQg
SVNPIDg4NTktMSBMYXRpbi0xIGZvciBXaW5kb3dzIDMuMS4gIAotICAgICAgICBQQ0wgU3ltYm9s
IFNldCBpZDogMTlVCi1BbGlhczogY3NXaW5kb3dzMzFMYXRpbjEKLQotTmFtZTogSVNPLTg4NTkt
Mi1XaW5kb3dzLUxhdGluLTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0hQLVBDTDVd
IAotTUlCZW51bTogMjAwMgotU291cmNlOiBFeHRlbmRlZCBJU08gODg1OS0yLiAgTGF0aW4tMiBm
b3IgV2luZG93cyAzLjEuCi0gICAgICAgIFBDTCBTeW1ib2wgU2V0IGlkOiA5RQotQWxpYXM6IGNz
V2luZG93czMxTGF0aW4yCi0KLU5hbWU6IElTTy04ODU5LTktV2luZG93cy1MYXRpbi01ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFtIUC1QQ0w1XSAKLU1JQmVudW06IDIwMDMKLVNvdXJj
ZTogRXh0ZW5kZWQgSVNPIDg4NTktOS4gIExhdGluLTUgZm9yIFdpbmRvd3MgMy4xCi0gICAgICAg
IFBDTCBTeW1ib2wgU2V0IGlkOiA1VAotQWxpYXM6IGNzV2luZG93czMxTGF0aW41Ci0KLU5hbWU6
IEFkb2JlLVN0YW5kYXJkLUVuY29kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW0Fkb2JlXQotTUlCZW51bTogMjAwNQotU291cmNlOiBQb3N0U2NyaXB0IExhbmd1YWdlIFJl
ZmVyZW5jZSBNYW51YWwKLSAgICAgICAgUENMIFN5bWJvbCBTZXQgaWQ6IDEwSgotQWxpYXM6IGNz
QWRvYmVTdGFuZGFyZEVuY29kaW5nCi0KLU5hbWU6IFZlbnR1cmEtVVMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtIUC1QQ0w1XQotTUlCZW51bTogMjAwNgot
U291cmNlOiBWZW50dXJhIFVTLiAgQVNDSUkgcGx1cyBjaGFyYWN0ZXJzIHR5cGljYWxseSB1c2Vk
IGluIAotICAgICAgICBwdWJsaXNoaW5nLCBsaWtlIHBpbGNyb3csIGNvcHlyaWdodCwgcmVnaXN0
ZXJlZCwgdHJhZGUgbWFyaywgCi0gICAgICAgIHNlY3Rpb24sIGRhZ2dlciwgYW5kIGRvdWJsZSBk
YWdnZXIgaW4gdGhlIHJhbmdlIEEwIChoZXgpIAotICAgICAgICB0byBGRiAoaGV4KS4gIAotICAg
ICAgICBQQ0wgU3ltYm9sIFNldCBpZDogMTRKCi1BbGlhczogY3NWZW50dXJhVVMgIAotCi1OYW1l
OiBWZW50dXJhLUludGVybmF0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbSFAtUENMNV0KLU1JQmVudW06IDIwMDcKLVNvdXJjZTogVmVudHVyYSBJbnRlcm5hdGlvbmFs
LiAgQVNDSUkgcGx1cyBjb2RlZCBjaGFyYWN0ZXJzIHNpbWlsYXIgCi0gICAgICAgIHRvIFJvbWFu
OC4KLSAgICAgICAgUENMIFN5bWJvbCBTZXQgaWQ6IDEzSgotQWxpYXM6IGNzVmVudHVyYUludGVy
bmF0aW9uYWwKLQotTmFtZTogUEM4LURhbmlzaC1Ob3J3ZWdpYW4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW0hQLVBDTDVdCi1NSUJlbnVtOiAyMDEyCi1Tb3VyY2U6IFBDIERh
bmlzaCBOb3J3ZWdpYW4KLSAgICAgICAgOC1iaXQgUEMgc2V0IGZvciBEYW5pc2ggTm9yd2VnaWFu
Ci0gICAgICAgIFBDTCBTeW1ib2wgU2V0IGlkOiAxMVUKLUFsaWFzOiBjc1BDOERhbmlzaE5vcndl
Z2lhbgotCi1OYW1lOiBQQzgtVHVya2lzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbSFAtUENMNV0KLU1JQmVudW06IDIwMTQKLVNvdXJjZTogUEMgTGF0aW4g
VHVya2lzaC4gIFBDTCBTeW1ib2wgU2V0IGlkOiA5VAotQWxpYXM6IGNzUEM4VHVya2lzaAotCi1O
YW1lOiBJQk0tU3ltYm9scyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtJQk0tQ0lEVF0gCi1NSUJlbnVtOiAyMDE1Ci1Tb3VyY2U6IFByZXNlbnRhdGlvbiBTZXQs
IENQR0lEOiAyNTkKLUFsaWFzOiBjc0lCTVN5bWJvbHMKLQotTmFtZTogSUJNLVRoYWkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSUJNLUNJRFRdIAotTUlC
ZW51bTogMjAxNgotU291cmNlOiBQcmVzZW50YXRpb24gU2V0LCBDUEdJRDogODM4Ci1BbGlhczog
Y3NJQk1UaGFpCi0KLU5hbWU6IEhQLUxlZ2FsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtIUC1QQ0w1XQotTUlCZW51bTogMjAxNwotU291cmNlOiBQQ0wg
NSBDb21wYXJpc29uIEd1aWRlLCBIZXdsZXR0LVBhY2thcmQsCi0gICAgICAgIEhQIHBhcnQgbnVt
YmVyIDU5NjEtMDUxMCwgT2N0b2JlciAxOTkyCi0gICAgICAgIFBDTCBTeW1ib2wgU2V0IGlkOiAx
VQotQWxpYXM6IGNzSFBMZWdhbAotCi1OYW1lOiBIUC1QaS1mb250ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSFAtUENMNV0KLU1JQmVudW06IDIwMTgKLVNv
dXJjZTogUENMIDUgQ29tcGFyaXNvbiBHdWlkZSwgSGV3bGV0dC1QYWNrYXJkLAotICAgICAgICBI
UCBwYXJ0IG51bWJlciA1OTYxLTA1MTAsIE9jdG9iZXIgMTk5MgotICAgICAgICBQQ0wgU3ltYm9s
IFNldCBpZDogMTVVCi1BbGlhczogY3NIUFBpRm9udAotCi1OYW1lOiBIUC1NYXRoOCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSFAtUENMNV0KLU1JQmVu
dW06IDIwMTkKLVNvdXJjZTogUENMIDUgQ29tcGFyaXNvbiBHdWlkZSwgSGV3bGV0dC1QYWNrYXJk
LAotICAgICAgICBIUCBwYXJ0IG51bWJlciA1OTYxLTA1MTAsIE9jdG9iZXIgMTk5MgotICAgICAg
ICBQQ0wgU3ltYm9sIFNldCBpZDogOE0KLUFsaWFzOiBjc0hQTWF0aDgKLQotTmFtZTogQWRvYmUt
U3ltYm9sLUVuY29kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQWRv
YmVdCi1NSUJlbnVtOiAyMDIwCi1Tb3VyY2U6IFBvc3RTY3JpcHQgTGFuZ3VhZ2UgUmVmZXJlbmNl
IE1hbnVhbAotICAgICAgICBQQ0wgU3ltYm9sIFNldCBpZDogNU0KLUFsaWFzOiBjc0hQUFNNYXRo
Ci0KLU5hbWU6IEhQLURlc2tUb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFtIUC1QQ0w1XQotTUlCZW51bTogMjAyMQotU291cmNlOiBQQ0wgNSBDb21wYXJp
c29uIEd1aWRlLCBIZXdsZXR0LVBhY2thcmQsCi0gICAgICAgIEhQIHBhcnQgbnVtYmVyIDU5NjEt
MDUxMCwgT2N0b2JlciAxOTkyCi0gICAgICAgIFBDTCBTeW1ib2wgU2V0IGlkOiA3SgotQWxpYXM6
IGNzSFBEZXNrdG9wCi0KLU5hbWU6IFZlbnR1cmEtTWF0aCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtIUC1QQ0w1XQotTUlCZW51bTogMjAyMgotU291cmNlOiBQ
Q0wgNSBDb21wYXJpc29uIEd1aWRlLCBIZXdsZXR0LVBhY2thcmQsCi0gICAgICAgIEhQIHBhcnQg
bnVtYmVyIDU5NjEtMDUxMCwgT2N0b2JlciAxOTkyCi0gICAgICAgIFBDTCBTeW1ib2wgU2V0IGlk
OiA2TQotQWxpYXM6IGNzVmVudHVyYU1hdGgKLQotTmFtZTogTWljcm9zb2Z0LVB1Ymxpc2hpbmcg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0hQLVBDTDVdCi1NSUJlbnVtOiAy
MDIzCi1Tb3VyY2U6IFBDTCA1IENvbXBhcmlzb24gR3VpZGUsIEhld2xldHQtUGFja2FyZCwKLSAg
ICAgICAgSFAgcGFydCBudW1iZXIgNTk2MS0wNTEwLCBPY3RvYmVyIDE5OTIKLSAgICAgICAgUENM
IFN5bWJvbCBTZXQgaWQ6IDZKCi1BbGlhczogY3NNaWNyb3NvZnRQdWJsaXNoaW5nCi0KLU5hbWU6
IFdpbmRvd3MtMzFKCi1NSUJlbnVtOiAyMDI0Ci1Tb3VyY2U6IFdpbmRvd3MgSmFwYW5lc2UuICBB
IGZ1cnRoZXIgZXh0ZW5zaW9uIG9mIFNoaWZ0X0pJUwotICAgICAgICB0byBpbmNsdWRlIE5FQyBz
cGVjaWFsIGNoYXJhY3RlcnMgKFJvdyAxMyksIE5FQwotICAgICAgICBzZWxlY3Rpb24gb2YgSUJN
IGV4dGVuc2lvbnMgKFJvd3MgODkgdG8gOTIpLCBhbmQgSUJNCi0gICAgICAgIGV4dGVuc2lvbnMg
KFJvd3MgMTE1IHRvIDExOSkuICBUaGUgQ0NTJ3MgYXJlCi0gICAgICAgIEpJUyBYMDIwMToxOTk3
LCBKSVMgWDAyMDg6MTk5NywgYW5kIHRoZXNlIGV4dGVuc2lvbnMuCi0gICAgICAgIFRoaXMgY2hh
cnNldCBjYW4gYmUgdXNlZCBmb3IgdGhlIHRvcC1sZXZlbCBtZWRpYSB0eXBlICJ0ZXh0IiwKLSAg
ICAgICAgYnV0IGl0IGlzIG9mIGxpbWl0ZWQgb3Igc3BlY2lhbGl6ZWQgdXNlIChzZWUgUkZDMjI3
OCkuCi0gICAgICAgIFBDTCBTeW1ib2wgU2V0IGlkOiAxOUsKLUFsaWFzOiBjc1dpbmRvd3MzMUoK
LQotTmFtZTogR0IyMzEyICAocHJlZmVycmVkIE1JTUUgbmFtZSkKLU1JQmVudW06IDIwMjUKLVNv
dXJjZTogQ2hpbmVzZSBmb3IgUGVvcGxlJ3MgUmVwdWJsaWMgb2YgQ2hpbmEgKFBSQykgbWl4ZWQg
b25lIGJ5dGUsIAotICAgICAgICB0d28gYnl0ZSBzZXQ6IAotICAgICAgICAgIDIwLTdFID0gb25l
IGJ5dGUgQVNDSUkgCi0gICAgICAgICAgQTEtRkUgPSB0d28gYnl0ZSBQUkMgS2FuamkgCi0gICAg
ICAgIFNlZSBHQiAyMzEyLTgwIAotICAgICAgICBQQ0wgU3ltYm9sIFNldCBJZDogMThDCi1BbGlh
czogY3NHQjIzMTIKLQotTmFtZTogQmlnNSAgKHByZWZlcnJlZCBNSU1FIG5hbWUpCi1NSUJlbnVt
OiAyMDI2Ci1Tb3VyY2U6IENoaW5lc2UgZm9yIFRhaXdhbiBNdWx0aS1ieXRlIHNldC4KLSAgICAg
ICAgUENMIFN5bWJvbCBTZXQgSWQ6IDE4VAotQWxpYXM6IGNzQmlnNQotCi1OYW1lOiB3aW5kb3dz
LTEyNTAKLU1JQmVudW06IDIyNTAKLVNvdXJjZTogTWljcm9zb2Z0ICAoaHR0cDovL3d3dy5pYW5h
Lm9yZy9hc3NpZ25tZW50cy9jaGFyc2V0LXJlZy93aW5kb3dzLTEyNTApIFtMYXpoaW50c2V2YV0K
LUFsaWFzOiBOb25lCi0KLU5hbWU6IHdpbmRvd3MtMTI1MQotTUlCZW51bTogMjI1MQotU291cmNl
OiBNaWNyb3NvZnQgIChodHRwOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2NoYXJzZXQtcmVn
L3dpbmRvd3MtMTI1MSkgW0xhemhpbnRzZXZhXQotQWxpYXM6IE5vbmUKLQotTmFtZTogd2luZG93
cy0xMjUyCi1NSUJlbnVtOiAyMjUyCi1Tb3VyY2U6IE1pY3Jvc29mdCAgKGh0dHA6Ly93d3cuaWFu
YS5vcmcvYXNzaWdubWVudHMvY2hhcnNldC1yZWcvd2luZG93cy0xMjUyKSAgICAgICBbV2VuZHRd
Ci1BbGlhczogTm9uZQotCi1OYW1lOiB3aW5kb3dzLTEyNTMKLU1JQmVudW06IDIyNTMKLVNvdXJj
ZTogTWljcm9zb2Z0ICAoaHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jaGFyc2V0LXJl
Zy93aW5kb3dzLTEyNTMpIFtMYXpoaW50c2V2YV0KLUFsaWFzOiBOb25lCi0KLU5hbWU6IHdpbmRv
d3MtMTI1NAotTUlCZW51bTogMjI1NAotU291cmNlOiBNaWNyb3NvZnQgIChodHRwOi8vd3d3Lmlh
bmEub3JnL2Fzc2lnbm1lbnRzL2NoYXJzZXQtcmVnL3dpbmRvd3MtMTI1NCkgW0xhemhpbnRzZXZh
XQotQWxpYXM6IE5vbmUKLQotTmFtZTogd2luZG93cy0xMjU1Ci1NSUJlbnVtOiAyMjU1Ci1Tb3Vy
Y2U6IE1pY3Jvc29mdCAgKGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvY2hhcnNldC1y
ZWcvd2luZG93cy0xMjU1KSBbTGF6aGludHNldmFdCi1BbGlhczogTm9uZQotCi1OYW1lOiB3aW5k
b3dzLTEyNTYKLU1JQmVudW06IDIyNTYKLVNvdXJjZTogTWljcm9zb2Z0ICAoaHR0cDovL3d3dy5p
YW5hLm9yZy9hc3NpZ25tZW50cy9jaGFyc2V0LXJlZy93aW5kb3dzLTEyNTYpIFtMYXpoaW50c2V2
YV0KLUFsaWFzOiBOb25lIAotCi1OYW1lOiB3aW5kb3dzLTEyNTcKLU1JQmVudW06IDIyNTcKLVNv
dXJjZTogTWljcm9zb2Z0ICAoaHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jaGFyc2V0
LXJlZy93aW5kb3dzLTEyNTcpIFtMYXpoaW50c2V2YV0KLUFsaWFzOiBOb25lCi0KLU5hbWU6IHdp
bmRvd3MtMTI1OAotTUlCZW51bTogMjI1OAotU291cmNlOiBNaWNyb3NvZnQgIChodHRwOi8vd3d3
LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2NoYXJzZXQtcmVnL3dpbmRvd3MtMTI1OCkgW0xhemhpbnRz
ZXZhXQotQWxpYXM6IE5vbmUKLQotTmFtZTogVElTLTYyMAotTUlCZW51bTogMjI1OQotU291cmNl
OiBUaGFpIEluZHVzdHJpYWwgU3RhbmRhcmRzIEluc3RpdHV0ZSAoVElTSSkJICAgICBbVGFudHNl
dHRoaV0KLQotTmFtZTogSFotR0ItMjMxMgotTUlCZW51bTogMjA4NQotU291cmNlOiBSRkMgMTg0
MiwgUkZDIDE4NDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUkZDMTg0MiwgUkZDMTg0
M10KLQotCi1SRUZFUkVOQ0VTCi0tLS0tLS0tLS0tCi0KLVtSRkMxMzQ1XSAgU2ltb25zZW4sIEsu
LCAiQ2hhcmFjdGVyIE1uZW1vbmljcyAmIENoYXJhY3RlciBTZXRzIiwKLSAgICAgICAgICAgUkZD
IDEzNDUsIFJhdGlvbmVsIEFsbWVuIFBsYW5sYWVnbmluZywgUmF0aW9uZWwgQWxtZW4KLSAgICAg
ICAgICAgUGxhbmxhZWduaW5nLCBKdW5lIDE5OTIuCi0KLVtSRkMxNDI4XSAgVmF1ZHJldWlsLCBH
LiwgIlRyYW5zaXRpb24gb2YgSW50ZXJuZXQgTWFpbCBmcm9tCi0gICAgICAgICAgIEp1c3QtU2Vu
ZC04IHRvIDhiaXQtU01UUC9NSU1FIiwgUkZDMTQyOCwgQ05SSSwgRmVicnVhcnkKLSAgICAgICAg
ICAgMTk5My4KLQotW1JGQzE0NTZdICBWaWV0bmFtZXNlIFN0YW5kYXJkaXphdGlvbiBXb3JraW5n
IEdyb3VwLCAiQ29udmVudGlvbnMgZm9yCi0gICAgICAgICAgIEVuY29kaW5nIHRoZSBWaWV0bmFt
ZXNlIExhbmd1YWdlIFZJU0NJSTogVklldG5hbWVzZSAKLSAgICAgICAgICAgU3RhbmRhcmQgQ29k
ZSBmb3IgSW5mb3JtYXRpb24gSW50ZXJjaGFuZ2UgVklRUjogVklldG5hbWVzZSAKLSAgICAgICAg
ICAgUXVvdGVkLVJlYWRhYmxlIFNwZWNpZmljYXRpb24gUmV2aXNpb24gMS4xIiwgUkZDIDE0NTYs
IE1heQotICAgICAgICAgICAxOTkzLgotCi1bUkZDMTQ2OF0gIE11cmFpLCBKLiwgQ3Jpc3Bpbiwg
TS4sIGFuZCBFLiB2YW4gZGVyIFBvZWwsICJKYXBhbmVzZQotICAgICAgICAgICBDaGFyYWN0ZXIg
RW5jb2RpbmcgZm9yIEludGVybmV0IE1lc3NhZ2VzIiwgUkZDIDE0NjgsCi0gICAgICAgICAgIEtl
aW8gVW5pdmVyc2l0eSwgUGFuZGEgUHJvZ3JhbW1pbmcsIEp1bmUgMTk5My4KLQotW1JGQzE0ODld
ICBDaGVybm92LCBBLiwgIlJlZ2lzdHJhdGlvbiBvZiBhIEN5cmlsbGljIENoYXJhY3RlciBTZXQi
LAotICAgICAgICAgICBSRkMxNDg5LCBSRUxDT00gRGV2ZWxvcG1lbnQgVGVhbSwgSnVseSAxOTkz
LiAKLQotW1JGQzE1NTRdICBPaHRhLCBNLiwgYW5kIEsuIEhhbmRhLCAiSVNPLTIwMjItSlAtMjog
TXVsdGlsaW5ndWFsCi0gICAgICAgICAgIEV4dGVuc2lvbiBvZiBJU08tMjAyMi1KUCIsIFJGQzE1
NTQsIFRva3lvIEluc3RpdHV0ZSBvZgotICAgICAgICAgICBUZWNobm9sb2d5LCBFVEwsIERlY2Vt
YmVyIDE5OTMuIAotCi1bUkZDMTU1Nl0gIE51c3NiYWNoZXIsIEguLCAiSGFuZGxpbmcgb2YgQmkt
ZGlyZWN0aW9uYWwgVGV4dHMgaW4gTUlNRSIsCi0gICAgICAgICAgIFJGQzE1NTYsIElzcmFlbGkg
SW50ZXItVW5pdmVyc2l0eSwgRGVjZW1iZXIgMTk5My4gCi0KLVtSRkMxNTU3XSAgQ2hvaSwgVS4s
IENob24sIEsuLCBhbmQgSC4gUGFyaywgIktvcmVhbiBDaGFyYWN0ZXIgRW5jb2RpbmcKLSAgICAg
ICAgICAgZm9yIEludGVybmV0IE1lc3NhZ2VzIiwgS0FJU1QsIFNvbHZpdCBDaG9zdW4gTWVkaWEs
Ci0gICAgICAgICAgIERlY2VtYmVyIDE5OTMuCi0KLVtSRkMxNjQxXSAgR29sZHNtaXRoLCBELiwg
YW5kIE0uIERhdmlzLCAiVXNpbmcgVW5pY29kZSB3aXRoIE1JTUUiLAotICAgICAgICAgICBSRkMx
NjQxLCBUYWxpZ2VudCwgSW5jLiwgSnVseSAxOTk0LiAKLQotW1JGQzE2NDJdICBHb2xkc21pdGgs
IEQuLCBhbmQgTS4gRGF2aXMsICJVVEYtNyIsIFJGQzE2NDIsIFRhbGlnZW50LAotICAgICAgICAg
ICBJbmMuLCBKdWx5IDE5OTQuCi0KLVtSRkMxODE1XSAgT2h0YSwgTS4sICJDaGFyYWN0ZXIgU2V0
cyBJU08tMTA2NDYgYW5kIElTTy0xMDY0Ni1KLTEiLAotICAgICAgICAgICBSRkMgMTgxNSwgVG9r
eW8gSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIEp1bHkgMTk5NS4KLQotCi1bQWRvYmVdICAgIEFk
b2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLCBQb3N0U2NyaXB0IExhbmd1YWdlIFJlZmVyZW5jZQot
ICAgICAgICAgICBNYW51YWwsIHNlY29uZCBlZGl0aW9uLCBBZGRpc29uLVdlc2xleSBQdWJsaXNo
aW5nIENvbXBhbnksCi0gICAgICAgICAgIEluYy4sIDE5OTAuCi0KLVtFQ01BIFJlZ2lzdHJ5XSAg
SVNPLUlSOiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyIG9mIEVzY2FwZSBTZXF1ZW5jZXMKLSAgICAg
ICAgICAgaHR0cDovL3d3dy5pdHNjai5pcHNqLm9yLmpwL0lTTy1JRS8gIE5vdGU6IFRoZSBjdXJy
ZW50Ci0gICAgICAgICAgIHJlZ2lzdHJhdGlvbiBhdXRob3JpdHkgaXMgSVBTSi9JVFNDSiwgSmFw
YW4uCi0KLVtIUC1QQ0w1XSAgSGV3bGV0dC1QYWNrYXJkIENvbXBhbnksICJIUCBQQ0wgNSBDb21w
YXJpc29uIEd1aWRlIiwgCi0gICAgICAgICAgIChQL04gNTAyMS0wMzI5KSBwcCBCLTEzLCAxOTk2
LgotCi1bSUJNLUNJRFRdIElCTSBDb3Jwb3JhdGlvbiwgIkFCT1VUIFRZUEU6IElCTSdzIFRlY2hu
aWNhbCBSZWZlcmVuY2UKLSAgICAgICAgICAgZm9yIENvcmUgSW50ZXJjaGFuZ2UgRGlnaXRpemVk
IFR5cGUiLCBQdWJsaWNhdGlvbiBudW1iZXIKLSAgICAgICAgICAgUzU0NC0zNzA4LTAxCi0KLVtS
RkMxODQyXSAgV2VpLCBZLiwgSi4gTGksIGFuZCBZLiBKaWFuZywgIkFTQ0lJIFByaW50YWJsZQot
ICAgICAgICAgICBDaGFyYWN0ZXJzLUJhc2VkIENoaW5lc2UgQ2hhcmFjdGVyIEVuY29kaW5nIGZv
ciBJbnRlcm5ldAotICAgICAgICAgICBNZXNzYWdlcyIsIFJGQyAxODQyLCBIYXJ2YXJkIFVuaXZl
cnNpdHksIFJpY2UgVW5pdmVyc2l0eSwKLSAgICAgICAgICAgVW5pdmVyc2l0eSBvZiBNYXJ5bGFu
ZCwgQXVndXN0IDE5OTUuCi0KLVtSRkMxODQzXSAgTGVlLCBGLiwgIkhaIC0gQSBEYXRhIEZvcm1h
dCBmb3IgRXhjaGFuZ2luZyBGaWxlcyBvZgotICAgICAgICAgICBBcmJpdHJhcmlseSBNaXhlZCBD
aGluZXNlIGFuZCBBU0NJSSBDaGFyYWN0ZXJzIiwgUkZDIDE4NDMsCi0gICAgICAgICAgIFN0YW5m
b3JkIFVuaXZlcnNpdHksIEF1Z3VzdCAxOTk1LgotCi1bUkZDMjE1Ml0gIEdvbGRzbWl0aCwgRC4s
IE0uIERhdmlzLCAiVVRGLTc6IEEgTWFpbC1TYWZlIFRyYW5zZm9ybWF0aW9uCi0JICAgRm9ybWF0
IG9mIFVuaWNvZGUiLCBSRkMgMjE1MiwgQXBwbGUgQ29tcHV0ZXIsIEluYy4sCi0JICAgVGFsaWdl
bnQgSW5jLiwgTWF5IDE5OTcuCi0KLVtSRkMyMjc5XSAgWWVyZ2VhdSwgRi4sICJVVEYtOCwgQSBU
cmFuc2Zvcm1hdGlvbiBGb3JtYXQgb2YgSVNPIDEwNjQ2IiwKLSAgICAgICAgICAgUkZDIDIyNzks
IEFsaXMgVGVjaG5vbG9naWVzLCBKYW51YXJ5LCAxOTk4LgotCi1bUkZDMjc4MV0gIEhvZmZtYW4s
IFAuLCBZZXJnZWF1LCBGLiwgIlVURi0xNiwgYW4gZW5jb2Rpbmcgb2YgSVNPIDEwNjQ2IiwKLSAg
ICAgICAgICAgUkZDIDI3ODEsIEZlYnJ1YXJ5IDIwMDAuCi0KLVtSRkMzNjI5XSAgWWVyZ2VhdSwg
Ri4sICJVVEYtOCwgYSB0cmFuc2Zvcm1hdGlvbiBmb3JtYXQgb2YgSVNPIDEwNjQ2IiwKLSAgICAg
ICAgICAgUkZDMzYyOSwgTm92ZW1iZXIgMjAwMy4KLQotUEVPUExFCi0tLS0tLS0KLQotW0tYUzJd
IEtlbGQgU2ltb25zZW4gPEtlbGQuU2ltb25zZW5AZGt1dWcuZGs+Ci0KLVtDaG9pXSBXb29oeW9u
ZyBDaG9pIDx3aGNob2lAY29zbW9zLmthaXN0LmFjLmtyPgotCi1bRGF2aXNdIE1hcmsgRGF2aXMs
IDxtYXJrQHVuaWNvZGUub3JnPiwgQXByaWwgMjAwMi4KLQotW0xhemhpbnRzZXZhXSBLYXR5YSBM
YXpoaW50c2V2YSwgPGthdHlhbEBNSUNST1NPRlQuY29tPiwgTWF5IDE5OTYuCi0KLVtNYWhkaV0g
VGFtZXIgTWFoZGksIDx0YW1lckBjYS5pYm0uY29tPiwgQXVndXN0IDIwMDAuCi0KLVtNYWx5c2hl
dl0gTWljaGFlbCBNYWx5c2hldiwgPG1pY2hhZWxfbWFseXNoZXZAbWFpbC5ydT4sIEphbnVhcnkg
MjAwNAotCi1bTXVyYWldIEp1biBNdXJhaSA8anVuQHdpZGUuYWQuanA+Ci0KLVtOdXNzYmFjaGVy
XSBIYW5rIE51c3NiYWNoZXIsIDxoYW5rQHZtLnRhdS5hYy5pbD4KLQotW09odGFdIE1hc2F0YWth
IE9odGEsIDxtb2h0YUBjYy50aXRlY2guYWMuanA+LCBKdWx5IDE5OTUuCi0KLVtQaGlwcHNdIFRv
YnkgUGhpcHBzLCA8dHBoaXBwc0BwZW9wbGVzb2Z0LmNvbT4sIE1hcmNoIDIwMDIuCi0KLVtQb25k
XSBSaWNrIFBvbmQsIDxyaWNrcG9uZEB2bmV0LmlibS5jb20+LCBNYXJjaCAxOTk3LgotCi1bUm9i
cmlnYWRvXSBSZXVlbCBSb2JyaWdhZG8sIDxyZXVlbHJAY2EuaWJtLmNvbT4sIFNlcHRlbWJlciAy
MDAyLgotCi1bU2NoZXJlcl0gTWFya3VzIFNjaGVyZXIsIDxtYXJrdXMuc2NoZXJlckBqdGNzdi5j
b20+LCBBdWd1c3QgMjAwMCwgCi0gICAgICAgICAgU2VwdGVtYmVyIDIwMDIuCi0KLVtTaW1vbnNl
bl0gS2VsZCBTaW1vbnNlbiwgPEtlbGQuU2ltb25zZW5AcmFwLmRrPiwgQXVndXN0IDIwMDAuCi0K
LVtUYW50c2V0dGhpXSBUcmluIFRhbnRzZXR0aGksIDx0cmluQG1vemFydC5pbmV0LmNvLnRoPiwg
U2VwdGVtYmVyIDE5OTguCi0KLVtUdW1hc29uaXNdIFZsYWRhcyBUdW1hc29uaXMsIDx2bGFkYXMu
dHVtYXNvbmlzQG1hZi52dS5sdD4sIEF1Z3VzdCAyMDAwLgotCi1bVXNrb3ZdIEFsZXhhbmRlciBV
c2tvdiwgPGF1c2tvdkBpZGMua3o+LCBTZXB0ZW1iZXIgMjAwMi4KLQotW1dlbmR0XSBDaHJpcyBX
ZW5kdCwgPGNocmlzdHdAbWljcm9zb2Z0LmNvbT4sIERlY2VtYmVyIDE5OTkuCi0KLVtZaWNrXSBO
aWNreSBZaWNrLCA8Y2xpYWNAaXRzZC5nY24uZ292LmhrPiwgT2N0b2JlciAyMDAwLgotCi1bXQot
Ci0KLQotCi0KLQotCkluZGV4OiBrd3EvbWFjLWVuY29kaW5ncy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a3dxL21hYy1lbmNvZGluZ3MudHh0CShyZXZpc2lvbiAxMjk5NikKKysrIGt3cS9tYWMtZW5jb2Rp
bmdzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxNjIgKzAsMCBAQAotIyBUaGUgaXRlbXMgb24g
dGhlIGxlZnQgYXJlIG5hbWVzIG9mIENGU3RyaW5nRW5jb2RpbmcgdmFsdWVzICh3aXRob3V0IHRo
ZSBsZWFkaW5nIGtDRlN0cmluZ0VuY29kaW5nKS4KLSMgVGhlIGl0ZW1zIG9uIHRoZSByaWdodCBh
cmUgSUFOQSBjaGFyYWN0ZXIgc2V0IG5hbWVzLiBOYW1lcyBsaXN0ZWQgaW4gY2hhcmFjdGVyLXNl
dHMudHh0IGFyZSBub3QKLSMgcmVwZWF0ZWQgaGVyZTsgbWVudGlvbmluZyBhbnkgb25lIGNoYXJh
Y3RlciBzZXQgZnJvbSBhIGdyb3VwIGluIHRoZXJlIHB1bGxzIGluIGFsbCB0aGUgYWxpYXNlcyBp
bgotIyB0aGF0IGdyb3VwLgotCi1NYWNSb21hbjogbWFjaW50b3NoLCB4bWFjcm9tYW4KLVdpbmRv
d3NMYXRpbjE6IHdpbmRvd3MtMTI1Miwgd2lubGF0aW4xLCB4YW5zaQotSVNPTGF0aW4xOiBJU08t
ODg1OS0xLCA4ODU5MQotTmV4dFN0ZXBMYXRpbjogeC1uZXh0c3RlcAotQVNDSUk6IFVTLUFTQ0lJ
LCBpc29pcjZ1cwotVW5pY29kZTogSVNPLTEwNjQ2LVVDUy0yLCB1Y3MyLCB1bmljb2RlLCB1dGYx
NgotVW5pY29kZSwgQmlnRW5kaWFuOiBVVEYtMTZCRSwgdW5pY29kZWZmZmUKLVVuaWNvZGUsIExp
dHRsZUVuZGlhbjogVVRGLTE2TEUsIHVuaWNvZGVmZWZmCi1VVEY4OiBVVEYtOCwgdW5pY29kZTEx
dXRmOCwgdW5pY29kZTIwdXRmOCwgeHVuaWNvZGUyMHV0ZjgKLU5vbkxvc3N5QVNDSUkKLQotTWFj
SmFwYW5lc2UsIElzSmFwYW5lc2U6IHgtbWFjLWphcGFuZXNlCi1NYWNDaGluZXNlVHJhZDogeC1t
YWMtY2hpbmVzZXRyYWQsIHhtYWN0cmFkY2hpbmVzZQotTWFjS29yZWFuOiB4LW1hYy1rb3JlYW4K
LU1hY0FyYWJpYzogeC1tYWMtYXJhYmljCi1NYWNIZWJyZXc6IHgtbWFjLWhlYnJldwotTWFjR3Jl
ZWs6IHgtbWFjLWdyZWVrCi1NYWNDeXJpbGxpYzogeC1tYWMtY3lyaWxsaWMsIG1hY2N5cmlsbGlj
LCB4bWFjdWtyYWluaWFuCi1NYWNEZXZhbmFnYXJpOiB4LW1hYy1kZXZhbmFnYXJpCi1NYWNHdXJt
dWtoaTogeC1tYWMtZ3VybXVraGkKLU1hY0d1amFyYXRpOiB4LW1hYy1ndWphcmF0aQotTWFjT3Jp
eWEKLU1hY0JlbmdhbGkKLU1hY1RhbWlsCi1NYWNUZWx1Z3UKLU1hY0thbm5hZGEKLU1hY01hbGF5
YWxhbQotTWFjU2luaGFsZXNlCi1NYWNCdXJtZXNlCi1NYWNLaG1lcgotTWFjVGhhaTogeC1tYWMt
dGhhaQotTWFjTGFvdGlhbgotTWFjR2VvcmdpYW4KLU1hY0FybWVuaWFuCi1NYWNDaGluZXNlU2lt
cDogeC1tYWMtY2hpbmVzZXNpbXAsIHhtYWNzaW1wY2hpbmVzZQotTWFjVGliZXRhbjogeC1tYWMt
dGliZXRhbgotTWFjTW9uZ29saWFuCi1NYWNFdGhpb3BpYwotTWFjQ2VudHJhbEV1clJvbWFuOiB4
LW1hYy1jZW50cmFsZXVycm9tYW4sIHhtYWNjZQotTWFjVmlldG5hbWVzZQotTWFjRXh0QXJhYmlj
Ci0KLU1hY1N5bWJvbDogeC1tYWMtc3ltYm9sCi1NYWNEaW5nYmF0czogeC1tYWMtZGluZ2JhdHMK
LU1hY1R1cmtpc2g6IHgtbWFjLXR1cmtpc2gKLU1hY0Nyb2F0aWFuOiB4LW1hYy1jcm9hdGlhbgot
TWFjSWNlbGFuZGljOiB4LW1hYy1pY2VsYW5kaWMKLU1hY1JvbWFuaWFuOiB4LW1hYy1yb21hbmlh
bgotTWFjQ2VsdGljCi1NYWNHYWVsaWMKLQotTWFjRmFyc2k6IHgtbWFjLWZhcnNpCi0KLU1hY1Vr
cmFpbmlhbgotCi1NYWNJbnVpdAotTWFjVlQxMDA6IHgtbWFjLXZ0MTAwCi0KLUlTT0xhdGluMjog
SVNPLTg4NTktMgotSVNPTGF0aW4zOiBJU08tODg1OS0zCi1JU09MYXRpbjQ6IElTTy04ODU5LTQK
LUlTT0xhdGluQ3lyaWxsaWM6IElTTy04ODU5LTUKLUlTT0xhdGluQXJhYmljOiBJU08tODg1OS02
Ci1JU09MYXRpbkdyZWVrOiBJU08tODg1OS03Ci1JU09MYXRpbkhlYnJldzogSVNPLTg4NTktOC1J
LCBsb2dpY2FsCi1JU09MYXRpbkhlYnJldywgVmlzdWFsT3JkZXJpbmc6IElTTy04ODU5LTgsIGRv
czg2MiwgdmlzdWFsCi1JU09MYXRpbjU6IElTTy04ODU5LTkKLUlTT0xhdGluNjogSVNPLTg4NTkt
MTAKLUlTT0xhdGluVGhhaTogSVNPLTg4NTktMTEKLUlTT0xhdGluNzogSVNPLTg4NTktMTMKLUlT
T0xhdGluODogSVNPLTg4NTktMTQKLUlTT0xhdGluOTogSVNPLTg4NTktMTUsIGNzaXNvbGF0aW45
LCBsOQotSVNPTGF0aW4xMDogSVNPLTg4NTktMTYKLQotRE9TTGF0aW5VUzogY3A0MzcKLURPU0dy
ZWVrOiBjcDczNywgaWJtNzM3Ci1ET1NCYWx0aWNSaW06IGNwNTAwLCBjcDc3NQotRE9TTGF0aW4x
OiBjcDg1MAotRE9TR3JlZWsxCi1ET1NMYXRpbjI6IGNwODUyCi1ET1NDeXJpbGxpYwotRE9TVHVy
a2lzaDogY3A4NTcKLURPU1BvcnR1Z3Vlc2UKLURPU0ljZWxhbmRpYzogY3A4NjEKLURPU0hlYnJl
dwotRE9TQ2FuYWRpYW5GcmVuY2gKLURPU0FyYWJpYzogY3A4NjQsIGRvczcyMAotRE9TTm9yZGlj
Ci1ET1NSdXNzaWFuOiBjcDg2NgotRE9TR3JlZWsyOiBjcDg2OQotRE9TVGhhaTogY3A4NzQsIGRv
czg3NCwgdGlzNjIwLCB3aW5kb3dzODc0Ci1ET1NKYXBhbmVzZSwgSXNKYXBhbmVzZTogY3A5MzIs
IGNzd2luZG93czMxaiwgeG1zY3A5MzIKLURPU0NoaW5lc2VTaW1wbGlmCi1ET1NLb3JlYW4KLURP
U0NoaW5lc2VUcmFkOiBjcDk1MAotV2luZG93c0xhdGluMjogd2luZG93cy0xMjUwLCB3aW5sYXRp
bjIsIHhjcDEyNTAKLVdpbmRvd3NDeXJpbGxpYzogd2luZG93cy0xMjUxLCB3aW5jeXJpbGxpYywg
eGNwMTI1MQotV2luZG93c0dyZWVrOiB3aW5kb3dzLTEyNTMsIHdpbmdyZWVrCi1XaW5kb3dzTGF0
aW41OiB3aW5kb3dzLTEyNTQsIHdpbnR1cmtpc2gKLVdpbmRvd3NIZWJyZXc6IHdpbmRvd3MtMTI1
NSwgd2luaGVicmV3Ci1XaW5kb3dzQXJhYmljOiB3aW5kb3dzLTEyNTYsIGNwMTI1Niwgd2luYXJh
YmljCi1XaW5kb3dzQmFsdGljUmltOiB3aW5kb3dzLTEyNTcsIHdpbmJhbHRpYwotV2luZG93c0tv
cmVhbkpvaGFiOiBqb2hhYgotV2luZG93c1ZpZXRuYW1lc2U6IHdpbmRvd3MtMTI1OCwgd2ludmll
dG5hbWVzZQotCi1KSVNfWDAyMDFfNzYsIElzSmFwYW5lc2U6IEpJU19YMDIwMQotSklTX1gwMjA4
XzgzLCBJc0phcGFuZXNlOiBKSVNfWDAyMDgtMTk4MwotSklTX1gwMjA4XzkwLCBJc0phcGFuZXNl
OiBKSVNfWDAyMDgtMTk5MAotSklTX1gwMjEyXzkwLCBJc0phcGFuZXNlOiBKSVNfWDAyMTItMTk5
MAotSklTX0M2MjI2Xzc4LCBJc0phcGFuZXNlOiBKSVNfQzYyMjYtMTk3OAotU2hpZnRKSVNfWDAy
MTNfMDAsIElzSmFwYW5lc2U6IFNoaWZ0X0pJU19YMDIxMy0yMDAwCi1HQl8yMzEyXzgwCi1HQktf
OTUKLUdCXzE4MDMwXzIwMDA6IEdCMTgwMzAKLUtTQ181NjAxXzg3Ci1LU0NfNTYwMV85Ml9Kb2hh
YgotQ05TXzExNjQzXzkyX1AxCi1DTlNfMTE2NDNfOTJfUDIKLUNOU18xMTY0M185Ml9QMwotCi1J
U09fMjAyMl9KUCwgSXNKYXBhbmVzZTogSVNPLTIwMjItSlAsIGppczcKLUlTT18yMDIyX0pQXzIs
IElzSmFwYW5lc2U6IElTTy0yMDIyLUpQLTIKLUlTT18yMDIyX0pQXzEsIElzSmFwYW5lc2U6IElT
Ty0yMDIyLUpQLTEKLUlTT18yMDIyX0pQXzMsIElzSmFwYW5lc2U6IElTTy0yMDIyLUpQLTMKLUlT
T18yMDIyX0NOOiBJU08tMjAyMi1DTgotSVNPXzIwMjJfQ05fRVhUOiBJU08tMjAyMi1DTi1FWFQK
LUlTT18yMDIyX0tSOiBJU08tMjAyMi1LUgotCi1FVUNfSlAsIElzSmFwYW5lc2U6IEVVQy1KUCwg
eGV1YywgeGV1Y2pwCi1FVUNfQ05fRE9TVmFyaWFudDogRVVDLUNOLCBjbmdiLCBjc2diMjMxMjgw
LCBnYjIzMTIsIGdiMjMxMjgwLCBnYmssIHhldWNjbiwgeGdiawotRVVDX1RXOiBFVUMtVFcKLUVV
Q19LUl9ET1NWYXJpYW50OiBFVUMtS1IsIGNwOTQ5LCBrc2M1NjAxCi0KLVNoaWZ0SklTX0RPU1Zh
cmlhbnQsIElzSmFwYW5lc2U6IFNoaWZ0X0pJUywgc2ppcywgeHNqaXMKLUtPSThfUjogS09JOC1S
LCBrb2ksIGtvaTgKLUJpZzVfRE9TVmFyaWFudDogQmlnNSwgY25iaWc1LCB4eGJpZzUKLU1hY1Jv
bWFuTGF0aW4xOiB4LW1hYy1yb21hbi1sYXRpbjEKLUhaX0dCXzIzMTI6IEhaLUdCLTIzMTIKLUJp
ZzVfSEtTQ1NfMTk5OTogQmlnNS1IS1NDUwotS09JOF9VOiBLT0k4LVUKLQotRUJDRElDX1VTCi1F
QkNESUNfQ1AwMzc6IGNwMDM3Ci0KLSMgSSBnb3QgdGhlc2UgYWRkaXRpb25hbCBpdGVtcyBmcm9t
IHRoZSBQZXJsIG1vZHVsZSBJMThOLUNoYXJzZXQtMS4xNywKLSMgYnV0IGNvdWxkIG5vdCBmaWd1
cmUgb3V0IHdoYXQgdG8gZG8gd2l0aCB0aGVtLgotIwotIyBBZG9iZS1TdGFuZGFyZC1FbmNvZGlu
ZyA9PT0gYWRvYmUtc3RhbmRhcmQKLSMgQWRvYmUtU3ltYm9sLUVuY29kaW5nID09PSBhZG9iZS1z
eW1ib2wKLSMgRUJDRElDLUVTID09PSBlYmNkaWMtY3AtZXMKLSMgRUJDRElDLUZSID09PSBlYmNk
aWMtY3AtZnIKLSMgRUJDRElDLUlUID09PSBlYmNkaWMtY3AtaXQKLSMgRUJDRElDLVVLID09PSBl
YmNkaWMtY3AtZ2IKLSMgRUJDRElDLVVTID09PSBlYmNkaWMtY3AtdXMKLSMgRUJDRElDLUZJLVNF
ID09PSBlYmNkaWMtY3AtZmkKLSMgVVRGLTcgPT09IFVuaWNvZGUtMi0wLXV0Zi03Ci0jIElTTy0x
MDY0Ni1VQ1MtNCA9PT0gdWNzNApJbmRleDoga3dxL0tXUVRleHRDb2RlYy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGt3cS9LV1FUZXh0Q29kZWMuaAkocmV2aXNpb24gMTI5OTYpCisrKyBrd3EvS1dRVGV4dENv
ZGVjLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2lmbmRlZiBRVEVYVENPREVDX0hfCi0jZGVmaW5lIFFURVhUQ09ERUNfSF8KLQotI2luY2x1
ZGUgIktXUUNoYXJzZXRzLmgiCi0jaW5jbHVkZSAiUVN0cmluZy5oIgotI2luY2x1ZGUgIktXUUNT
dHJpbmcuaCIKLQotY2xhc3MgUVRleHREZWNvZGVyOwotCi1jbGFzcyBRVGV4dENvZGVjIHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUVRleHRDb2RlYyogY29kZWNGb3JOYW1lKGNvbnN0IGNoYXIgKik7
Ci0gICAgc3RhdGljIFFUZXh0Q29kZWMqIGNvZGVjRm9yTmFtZUVpZ2h0Qml0T25seShjb25zdCBj
aGFyICopOwotICAgIHN0YXRpYyBRVGV4dENvZGVjKiBjb2RlY0ZvckxvY2FsZSgpOwotICAgIHN0
YXRpYyBRVGV4dENvZGVjKiB1dGY4Q29kZWMoKTsKLQotI2lmIF9fQVBQTEVfXwotICAgIGV4cGxp
Y2l0IFFUZXh0Q29kZWMoQ0ZTdHJpbmdFbmNvZGluZyBlLCBLV1FFbmNvZGluZ0ZsYWdzIGYgPSBO
b0VuY29kaW5nRmxhZ3MpIDogX2VuY29kaW5nKGUpLCBfZmxhZ3MoZikgeyB9Ci0jZW5kaWYKLQot
ICAgIGNvbnN0IGNoYXIgKm5hbWUoKSBjb25zdDsKLSAgICBib29sIHVzZXNWaXN1YWxPcmRlcmlu
ZygpIGNvbnN0IHsgcmV0dXJuIF9mbGFncyAmIFZpc3VhbE9yZGVyaW5nOyB9Ci0gICAgYm9vbCBp
c0phcGFuZXNlKCkgY29uc3QgeyByZXR1cm4gX2ZsYWdzICYgSXNKYXBhbmVzZTsgfQotICAgIAot
ICAgIFFDaGFyIGJhY2tzbGFzaEFzQ3VycmVuY3lTeW1ib2woKSBjb25zdDsKLQotICAgIFFUZXh0
RGVjb2RlciAqbWFrZURlY29kZXIoKSBjb25zdDsKLQotICAgIFFDU3RyaW5nIGZyb21Vbmljb2Rl
KGNvbnN0IFFTdHJpbmcgJnN0ciwgYm9vbCBhbGxvd0VudGl0aWVzID0gZmFsc2UpIGNvbnN0Owot
Ci0gICAgUVN0cmluZyB0b1VuaWNvZGUoY29uc3QgY2hhciAqLCBpbnQpIGNvbnN0OwotICAgIFFT
dHJpbmcgdG9Vbmljb2RlKGNvbnN0IEJ5dGVBcnJheSAmLCBpbnQpIGNvbnN0OwotICAgIAotICAg
IGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgUVRleHRDb2RlYyAmLCBjb25zdCBRVGV4dENv
ZGVjICYpOwotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKLSAgICAKLXByaXZhdGU6Ci0jaWYg
X19BUFBMRV9fCi0gICAgQ0ZTdHJpbmdFbmNvZGluZyBfZW5jb2Rpbmc7Ci0jZW5kaWYKLSAgICBL
V1FFbmNvZGluZ0ZsYWdzIF9mbGFnczsKLX07Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgUVRleHRDb2RlYyAmYSwgY29uc3QgUVRleHRDb2RlYyAmYikgeyByZXR1cm4gIShhID09IGIp
OyB9Ci0KLWNsYXNzIFFUZXh0RGVjb2RlciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+UVRleHRE
ZWNvZGVyKCk7Ci0gICAgdmlydHVhbCBRU3RyaW5nIHRvVW5pY29kZShjb25zdCBjaGFyICosIGlu
dCwgYm9vbCBmbHVzaCA9IGZhbHNlKSA9IDA7Ci19OwotCi0jZW5kaWYKSW5kZXg6IGt3cS9XZWJD
b3JlVGV4dERlY29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrd3EvV2ViQ29yZVRleHREZWNvZGVyLmgJ
KHJldmlzaW9uIDEyOTk2KQorKysga3dxL1dlYkNvcmVUZXh0RGVjb2Rlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiwxNSArMjYsMTggQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgogCiAjaWZkZWYgX19jcGx1c3BsdXMKLSAgICBjbGFzcyBRVGV4dERlY29kZXI7CituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisgICAgY2xhc3MgU3RyZWFtaW5nVGV4dERlY29kZXI7Cit9Cit0eXBlZGVm
IFdlYkNvcmU6OlN0cmVhbWluZ1RleHREZWNvZGVyIFBsYXRmb3JtRGVjb2RlcjsKICNlbHNlCi0g
ICAgQGNsYXNzIFFUZXh0RGVjb2RlcjsKKyAgICBAY2xhc3MgUGxhdGZvcm1EZWNvZGVyOwogI2Vu
ZGlmCiAKIEBpbnRlcmZhY2UgV2ViQ29yZVRleHREZWNvZGVyIDogTlNPYmplY3QKIHsKIEBwcml2
YXRlCi0gICAgUVRleHREZWNvZGVyICpfZGVjb2RlcjsKKyAgICBQbGF0Zm9ybURlY29kZXIgKl9k
ZWNvZGVyOwogfQogCiAtIChXZWJDb3JlVGV4dERlY29kZXIgKilpbml0V2l0aEVuY29kaW5nTmFt
ZTooTlNTdHJpbmcgKillbmNvZGluZ05hbWU7CkluZGV4OiBsb2FkZXIvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGxvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmgJKHJldmlz
aW9uIDEyOTk2KQorKysgbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsOCArMjgsNyBAQAogI2RlZmluZSBLSFRNTF9DYWNoZWRDU1NTdHlsZVNoZWV0X2gK
IAogI2luY2x1ZGUgIkNhY2hlZE9iamVjdC5oIgotCi1jbGFzcyBRVGV4dENvZGVjOworI2luY2x1
ZGUgIlRleHRFbmNvZGluZy5oIgogCiBuYW1lc3BhY2Uga2h0bWwKIHsKQEAgLTU3LDcgKzU2LDcg
QEAgbmFtZXNwYWNlIGtodG1sCiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIERPTVN0cmluZyBt
X3NoZWV0OwotICAgICAgICBRVGV4dENvZGVjKiBtX2NvZGVjOworICAgICAgICBUZXh0RW5jb2Rp
bmcgbV9lbmNvZGluZzsKICAgICB9OwogCiB9CkluZGV4OiBsb2FkZXIvQ2FjaGVkU2NyaXB0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gbG9hZGVyL0NhY2hlZFNjcmlwdC5oCShyZXZpc2lvbiAxMjk5NikKKysr
IGxvYWRlci9DYWNoZWRTY3JpcHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsNyBAQAog
I2RlZmluZSBLSFRNTF9DYWNoZWRTY3JpcHRfaAogCiAjaW5jbHVkZSAiQ2FjaGVkT2JqZWN0Lmgi
Ci0KLWNsYXNzIFFUZXh0Q29kZWM7CisjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBEb2NMb2FkZXI7CkBAIC01Nyw3ICs1Niw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAJU3RyaW5nIG1fc2NyaXB0OwotICAg
ICAgICBRVGV4dENvZGVjKiBtX2NvZGVjOworICAgICAgICBUZXh0RW5jb2RpbmcgbV9lbmNvZGlu
ZzsKICAgICAgICAgYm9vbCBtX2Vycm9yT2NjdXJyZWQ7CiAgICAgfTsKIH0KSW5kZXg6IGxvYWRl
ci9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsb2FkZXIvQ2FjaGVkWFNM
U3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDEyOTk2KQorKysgbG9hZGVyL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgQ2FjaGVkWFNM
U3R5bGVTaGVldDo6ZGVyZWYoQ2FjaGVkT2IKIHZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6c2V0
Q2hhcnNldCggY29uc3QgUVN0cmluZyAmY2hzICkKIHsKICAgICBpZiAoIWNocy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1fZGVjb2Rlci0+c2V0RW5jb2RpbmcoY2hzLmxhdGluMSgpLCBEZWNvZGVyOjpF
bmNvZGluZ0Zyb21IVFRQSGVhZGVyKTsKKyAgICAgICAgbV9kZWNvZGVyLT5zZXRFbmNvZGluZ05h
bWUoY2hzLmxhdGluMSgpLCBEZWNvZGVyOjpFbmNvZGluZ0Zyb21IVFRQSGVhZGVyKTsKIH0KIAog
dm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpkYXRhKEJ5dGVBcnJheSYgZGF0YSwgYm9vbCBlb2Yp
CkluZGV4OiBsb2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbG9h
ZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAxMjk5NikKKysrIGxvYWRlci9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMzAgKzMzLDI5IEBA
CiAjaW5jbHVkZSAiQ2FjaGVkT2JqZWN0Q2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAiS1dRTG9h
ZGVyLmgiCiAjaW5jbHVkZSAibG9hZGVyLmgiCi0jaW5jbHVkZSA8cXRleHRjb2RlYy5oPgorI2lu
Y2x1ZGUgPFRleHRFbmNvZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhY2hlZENT
U1N0eWxlU2hlZXQ6OkNhY2hlZENTU1N0eWxlU2hlZXQoRG9jTG9hZGVyKiBkbCwgY29uc3QgRE9N
U3RyaW5nICZ1cmwsIEtJTzo6Q2FjaGVDb250cm9sIF9jYWNoZVBvbGljeSwgdGltZV90IF9leHBp
cmVEYXRlLCBjb25zdCBRU3RyaW5nJiBjaGFyc2V0KQotICAgIDogQ2FjaGVkT2JqZWN0KHVybCwg
Q1NTU3R5bGVTaGVldCwgX2NhY2hlUG9saWN5LCBfZXhwaXJlRGF0ZSksIG1fY29kZWMoMCkKKyAg
ICA6IENhY2hlZE9iamVjdCh1cmwsIENTU1N0eWxlU2hlZXQsIF9jYWNoZVBvbGljeSwgX2V4cGly
ZURhdGUpCisgICAgLCBtX2VuY29kaW5nKGNoYXJzZXQubGF0aW4xKCkpCiB7CiAgICAgLy8gSXQn
cyBjc3Mgd2Ugd2FudC4KICAgICBzZXRBY2NlcHQoInRleHQvY3NzIik7CiAgICAgLy8gbG9hZCB0
aGUgZmlsZQogICAgIENhY2hlOjpsb2FkZXIoKS0+bG9hZChkbCwgdGhpcywgZmFsc2UpOwogICAg
IG1fbG9hZGluZyA9IHRydWU7Ci0gICAgaWYgKCFjaGFyc2V0LmlzRW1wdHkoKSkKLSAgICAgICAg
bV9jb2RlYyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZShjaGFyc2V0LmxhdGluMSgpKTsKLSAg
ICBpZiAoIW1fY29kZWMpCi0gICAgICAgIG1fY29kZWMgPSBRVGV4dENvZGVjOjpjb2RlY0Zvck5h
bWUoImlzbzg4NTktMSIpOworICAgIGlmICghbV9lbmNvZGluZy5pc1ZhbGlkKCkpCisgICAgICAg
IG1fZW5jb2RpbmcgPSBUZXh0RW5jb2RpbmcoTGF0aW4xRW5jb2RpbmcpOwogfQogCiBDYWNoZWRD
U1NTdHlsZVNoZWV0OjpDYWNoZWRDU1NTdHlsZVNoZWV0KGNvbnN0IERPTVN0cmluZyAmdXJsLCBj
b25zdCBRU3RyaW5nICZzdHlsZXNoZWV0X2RhdGEpCiAgICAgOiBDYWNoZWRPYmplY3QodXJsLCBD
U1NTdHlsZVNoZWV0LCBLSU86OkNDX1ZlcmlmeSwgMCwgc3R5bGVzaGVldF9kYXRhLmxlbmd0aCgp
KQorICAgICwgbV9lbmNvZGluZyhJbnZhbGlkRW5jb2RpbmcpCiB7CiAgICAgbV9sb2FkaW5nID0g
ZmFsc2U7CiAgICAgbV9zdGF0dXMgPSBQZXJzaXN0ZW50OwotICAgIG1fY29kZWMgPSAwOwogICAg
IG1fc2hlZXQgPSBET01TdHJpbmcoc3R5bGVzaGVldF9kYXRhKTsKIH0KIApAQCAtNzksMTIgKzc4
LDEyIEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZGVyZWYoQ2FjaGVkT2IKICAgICAgIGRl
bGV0ZSB0aGlzOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldENoYXJzZXQoIGNv
bnN0IFFTdHJpbmcgJmNocyApCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldENoYXJzZXQo
Y29uc3QgUVN0cmluZyYgY2hzKQogewogICAgIGlmICghY2hzLmlzRW1wdHkoKSkgewotICAgICAg
ICBRVGV4dENvZGVjICpjb2RlYyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZShjaHMubGF0aW4x
KCkpOwotICAgICAgICBpZiAoY29kZWMpCi0gICAgICAgICAgICBtX2NvZGVjID0gY29kZWM7Cisg
ICAgICAgIFRleHRFbmNvZGluZyBlbmNvZGluZyA9IFRleHRFbmNvZGluZyhjaHMubGF0aW4xKCkp
OworICAgICAgICBpZiAoZW5jb2RpbmcuaXNWYWxpZCgpKQorICAgICAgICAgICAgbV9lbmNvZGlu
ZyA9IGVuY29kaW5nOwogICAgIH0KIH0KIApAQCAtOTQsNyArOTMsNyBAQCB2b2lkIENhY2hlZENT
U1N0eWxlU2hlZXQ6OmRhdGEoQnl0ZUFycmF5CiAgICAgICAgIHJldHVybjsKIAogICAgIHNldFNp
emUoZGF0YS5zaXplKCkpOwotICAgIG1fc2hlZXQgPSBET01TdHJpbmcobV9jb2RlYy0+dG9Vbmlj
b2RlKGRhdGEuZGF0YSgpLCBzaXplKCkpKTsKKyAgICBtX3NoZWV0ID0gRE9NU3RyaW5nKG1fZW5j
b2RpbmcudG9Vbmljb2RlKGRhdGEuZGF0YSgpLCBzaXplKCkpKTsKICAgICBtX2xvYWRpbmcgPSBm
YWxzZTsKIAogICAgIGNoZWNrTm90aWZ5KCk7CkluZGV4OiBsb2FkZXIvQ2FjaGVkU2NyaXB0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBsb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcAkocmV2aXNpb24gMTI5OTYp
CisrKyBsb2FkZXIvQ2FjaGVkU2NyaXB0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMy
LDEzIEBACiAjaW5jbHVkZSAiQ2FjaGVkT2JqZWN0Q2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVk
T2JqZWN0Q2xpZW50V2Fsa2VyLmgiCiAjaW5jbHVkZSAibG9hZGVyLmgiCi0jaW5jbHVkZSA8cXRl
eHRjb2RlYy5oPgorI2luY2x1ZGUgPFRleHRFbmNvZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIENhY2hlZFNjcmlwdDo6Q2FjaGVkU2NyaXB0KERvY0xvYWRlciogZGwsIGNvbnN0IERP
TVN0cmluZyAmdXJsLCBLSU86OkNhY2hlQ29udHJvbCBfY2FjaGVQb2xpY3ksIHRpbWVfdCBfZXhw
aXJlRGF0ZSwgY29uc3QgUVN0cmluZyYgY2hhcnNldCkKLSAgICA6IENhY2hlZE9iamVjdCh1cmws
IFNjcmlwdCwgX2NhY2hlUG9saWN5LCBfZXhwaXJlRGF0ZSksIG1fY29kZWMoMCkKKyAgICA6IENh
Y2hlZE9iamVjdCh1cmwsIFNjcmlwdCwgX2NhY2hlUG9saWN5LCBfZXhwaXJlRGF0ZSkKKyAgICAs
IG1fZW5jb2RpbmcoY2hhcnNldC5sYXRpbjEoKSkKIHsKICAgICAvLyBJdCdzIGphdmFzY3JpcHQg
d2Ugd2FudC4KICAgICAvLyBCdXQgc29tZSB3ZWJzaXRlcyB0aGluayB0aGVpciBzY3JpcHRzIGFy
ZSA8c29tZSB3cm9uZyBtaW1ldHlwZSBoZXJlPgpAQCAtNDcsMTkgKzQ4LDE3IEBAIENhY2hlZFNj
cmlwdDo6Q2FjaGVkU2NyaXB0KERvY0xvYWRlciogZGwKICAgICAvLyBsb2FkIHRoZSBmaWxlCiAg
ICAgQ2FjaGU6OmxvYWRlcigpLT5sb2FkKGRsLCB0aGlzLCBmYWxzZSk7CiAgICAgbV9sb2FkaW5n
ID0gdHJ1ZTsKLSAgICBpZiAoIWNoYXJzZXQuaXNFbXB0eSgpKQotICAgICAgICBtX2NvZGVjID0g
UVRleHRDb2RlYzo6Y29kZWNGb3JOYW1lKGNoYXJzZXQubGF0aW4xKCkpOwotICAgIGlmICghbV9j
b2RlYykKLSAgICAgICAgbV9jb2RlYyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZSgiaXNvODg1
OS0xIik7CisgICAgaWYgKCFtX2VuY29kaW5nLmlzVmFsaWQoKSkKKyAgICAgICAgbV9lbmNvZGlu
ZyA9IFRleHRFbmNvZGluZyhMYXRpbjFFbmNvZGluZyk7CiB9CiAKIENhY2hlZFNjcmlwdDo6Q2Fj
aGVkU2NyaXB0KGNvbnN0IERPTVN0cmluZyAmdXJsLCBjb25zdCBRU3RyaW5nICZzY3JpcHRfZGF0
YSkKICAgICA6IENhY2hlZE9iamVjdCh1cmwsIFNjcmlwdCwgS0lPOjpDQ19WZXJpZnksIDAsIHNj
cmlwdF9kYXRhLmxlbmd0aCgpKQorICAgICwgbV9lbmNvZGluZyhJbnZhbGlkRW5jb2RpbmcpCiB7
CiAgICAgbV9lcnJvck9jY3VycmVkID0gZmFsc2U7CiAgICAgbV9sb2FkaW5nID0gZmFsc2U7CiAg
ICAgbV9zdGF0dXMgPSBQZXJzaXN0ZW50OwotICAgIG1fY29kZWMgPSAwOwogICAgIG1fc2NyaXB0
ID0gRE9NU3RyaW5nKHNjcmlwdF9kYXRhKTsKIH0KIApAQCAtODIsMTMgKzgxLDExIEBAIHZvaWQg
Q2FjaGVkU2NyaXB0OjpkZXJlZihDYWNoZWRPYmplY3RDbGkKICAgICAgIGRlbGV0ZSB0aGlzOwog
fQogCi12b2lkIENhY2hlZFNjcmlwdDo6c2V0Q2hhcnNldCggY29uc3QgUVN0cmluZyAmY2hzICkK
K3ZvaWQgQ2FjaGVkU2NyaXB0OjpzZXRDaGFyc2V0KGNvbnN0IFFTdHJpbmcgJmNocykKIHsKLSAg
ICBpZiAoIWNocy5pc0VtcHR5KCkpIHsKLSAgICAgICAgUVRleHRDb2RlYyAqY29kZWMgPSBRVGV4
dENvZGVjOjpjb2RlY0Zvck5hbWUoY2hzLmxhdGluMSgpKTsKLSAgICAgICAgaWYgKGNvZGVjKQot
ICAgICAgICAgICAgbV9jb2RlYyA9IGNvZGVjOwotICAgIH0KKyAgICBUZXh0RW5jb2RpbmcgZW5j
b2RpbmcgPSBUZXh0RW5jb2RpbmcoY2hzLmxhdGluMSgpKTsKKyAgICBpZiAoZW5jb2RpbmcuaXNW
YWxpZCgpKQorICAgICAgICBtX2VuY29kaW5nID0gZW5jb2Rpbmc7CiB9CiAKIHZvaWQgQ2FjaGVk
U2NyaXB0OjpkYXRhKEJ5dGVBcnJheSYgZGF0YSwgYm9vbCBlb2YgKQpAQCAtOTYsNyArOTMsNyBA
QCB2b2lkIENhY2hlZFNjcmlwdDo6ZGF0YShCeXRlQXJyYXkmIGRhdGEsCiAgICAgaWYgKCFlb2Yp
CiAgICAgICAgIHJldHVybjsKICAgICBzZXRTaXplKGRhdGEuc2l6ZSgpKTsKLSAgICBtX3Njcmlw
dCA9IFN0cmluZyhtX2NvZGVjLT50b1VuaWNvZGUoZGF0YS5kYXRhKCksIHNpemUoKSkpOworICAg
IG1fc2NyaXB0ID0gU3RyaW5nKG1fZW5jb2RpbmcudG9Vbmljb2RlKGRhdGEuZGF0YSgpLCBzaXpl
KCkpKTsKICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKICAgICBjaGVja05vdGlmeSgpOwogfQpJbmRl
eDogcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9u
IDEyOTk2KQorKysgcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcg
QEAKICNpbmNsdWRlIDxrbG9jYWxlLmg+CiAjaW5jbHVkZSA8a3htbGNvcmUvQXNzZXJ0aW9ucy5o
PgogI2luY2x1ZGUgPHFwdHJsaXN0Lmg+Ci0jaW5jbHVkZSA8cXRleHRjb2RlYy5oPgorI2luY2x1
ZGUgPFRleHRFbmNvZGluZy5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPG1h
dGguaD4KIApAQCAtNjUxLDE1ICs2NTEsMTUgQEAgdm9pZCBGcmFtZTo6YmVnaW4oIGNvbnN0IEtV
UkwgJnVybCwgaW50IAogICAgIGQtPm1fdmlldy0+cmVzaXplQ29udGVudHMoIDAsIDAgKTsKIH0K
IAotdm9pZCBGcmFtZTo6d3JpdGUoIGNvbnN0IGNoYXIgKnN0ciwgaW50IGxlbiApCit2b2lkIEZy
YW1lOjp3cml0ZShjb25zdCBjaGFyKiBzdHIsIGludCBsZW4pCiB7CiAgICAgaWYgKCAhZC0+bV9k
ZWNvZGVyICkgewogICAgICAgICBkLT5tX2RlY29kZXIgPSBuZXcgRGVjb2RlcjsKICAgICAgICAg
aWYgKCFkLT5tX2VuY29kaW5nLmlzTnVsbCgpKQotICAgICAgICAgICAgZC0+bV9kZWNvZGVyLT5z
ZXRFbmNvZGluZyhkLT5tX2VuY29kaW5nLmxhdGluMSgpLAorICAgICAgICAgICAgZC0+bV9kZWNv
ZGVyLT5zZXRFbmNvZGluZ05hbWUoZC0+bV9lbmNvZGluZy5sYXRpbjEoKSwKICAgICAgICAgICAg
ICAgICBkLT5tX2hhdmVFbmNvZGluZyA/IERlY29kZXI6OlVzZXJDaG9zZW5FbmNvZGluZyA6IERl
Y29kZXI6OkVuY29kaW5nRnJvbUhUVFBIZWFkZXIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBkLT5tX2RlY29kZXItPnNldEVuY29kaW5nKHNldHRpbmdzKCktPmVuY29kaW5nKCkubGF0aW4x
KCksIERlY29kZXI6OkRlZmF1bHRFbmNvZGluZyk7CisgICAgICAgICAgICBkLT5tX2RlY29kZXIt
PnNldEVuY29kaW5nTmFtZShzZXR0aW5ncygpLT5lbmNvZGluZygpLmxhdGluMSgpLCBEZWNvZGVy
OjpEZWZhdWx0RW5jb2RpbmcpOwogCiAgICAgICAgIGlmIChkLT5tX2RvYykKICAgICAgICAgICAg
IGQtPm1fZG9jLT5zZXREZWNvZGVyKGQtPm1fZGVjb2Rlci5nZXQoKSk7CkBAIC03NjIsNyArNzYy
LDcgQEAgdm9pZCBGcmFtZTo6Z290b0FuY2hvcigpCiAgICAgICAgIC8vIERlY29kaW5nIGhlcmUg
aGFzIHRvIG1hdGNoIGVuY29kaW5nIGluIGNvbXBsZXRlVVJMLCB3aGljaCBtZWFucyBpdCBoYXMg
dG8gdXNlIHRoZQogICAgICAgICAvLyBwYWdlJ3MgZW5jb2RpbmcgcmF0aGVyIHRoYW4gVVRGLTgu
CiAgICAgICAgIGlmIChkLT5tX2RlY29kZXIpCi0gICAgICAgICAgICBnb3RvQW5jaG9yKEtVUkw6
OmRlY29kZV9zdHJpbmcocmVmLCBkLT5tX2RlY29kZXItPmNvZGVjKCkpKTsKKyAgICAgICAgICAg
IGdvdG9BbmNob3IoS1VSTDo6ZGVjb2RlX3N0cmluZyhyZWYsIGQtPm1fZGVjb2Rlci0+ZW5jb2Rp
bmcoKSkpOwogICAgIH0KIH0KIApAQCAtMTAyNiwxMyArMTAyNiwxMyBAQCB2b2lkIEZyYW1lOjpz
bG90UmVkaXJlY3Rpb24oS0lPOjpKb2IqLCBjCiAKIFFTdHJpbmcgRnJhbWU6OmVuY29kaW5nKCkg
Y29uc3QKIHsKLSAgICBpZihkLT5tX2hhdmVFbmNvZGluZyAmJiAhZC0+bV9lbmNvZGluZy5pc0Vt
cHR5KCkpCisgICAgaWYgKGQtPm1faGF2ZUVuY29kaW5nICYmICFkLT5tX2VuY29kaW5nLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGQtPm1fZW5jb2Rpbmc7CiAKLSAgICBpZihkLT5tX2RlY29k
ZXIgJiYgZC0+bV9kZWNvZGVyLT5lbmNvZGluZygpKQotICAgICAgICByZXR1cm4gUVN0cmluZyhk
LT5tX2RlY29kZXItPmVuY29kaW5nKCkpOworICAgIGlmIChkLT5tX2RlY29kZXIgJiYgZC0+bV9k
ZWNvZGVyLT5lbmNvZGluZygpLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIFFTdHJpbmcoZC0+
bV9kZWNvZGVyLT5lbmNvZGluZ05hbWUoKSk7CiAKLSAgICByZXR1cm4oc2V0dGluZ3MoKS0+ZW5j
b2RpbmcoKSk7CisgICAgcmV0dXJuIHNldHRpbmdzKCktPmVuY29kaW5nKCk7CiB9CiAKIHZvaWQg
RnJhbWU6OnNldFVzZXJTdHlsZVNoZWV0KGNvbnN0IEtVUkwmIHVybCkKQEAgLTMyMjcsMTEgKzMy
MjcsOCBAQCBRQ2hhciBGcmFtZTo6YmFja3NsYXNoQXNDdXJyZW5jeVN5bWJvbCgpCiAgICAgRGVj
b2RlciAqZGVjb2RlciA9IGRvYy0+ZGVjb2RlcigpOwogICAgIGlmICghZGVjb2RlcikKICAgICAg
ICAgcmV0dXJuICdcXCc7Ci0gICAgY29uc3QgUVRleHRDb2RlYyAqY29kZWMgPSBkZWNvZGVyLT5j
b2RlYygpOwotICAgIGlmICghY29kZWMpCi0gICAgICAgIHJldHVybiAnXFwnOwogCi0gICAgcmV0
dXJuIGNvZGVjLT5iYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sKCk7CisgICAgcmV0dXJuIGRlY29k
ZXItPmVuY29kaW5nKCkuYmFja3NsYXNoQXNDdXJyZW5jeVN5bWJvbCgpOwogfQogCiBib29sIEZy
YW1lOjptYXJrZWRUZXh0VXNlc1VuZGVybGluZXMoKSBjb25zdAo=
</data>
<flag name="review"
          id="1719"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>