<?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>41045</bug_id>
          
          <creation_ts>2010-06-22 23:52:14 -0700</creation_ts>
          <short_desc>Rename HTML5Lexer to HTMLTokenizer</short_desc>
          <delta_ts>2010-06-23 00:35:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>241693</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-22 23:52:14 -0700</bug_when>
    <thetext>Rename HTML5Lexer to HTMLTokenizer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241694</commentid>
    <comment_count>1</comment_count>
      <attachid>59482</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-22 23:53:34 -0700</bug_when>
    <thetext>Created attachment 59482
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241697</commentid>
    <comment_count>2</comment_count>
      <attachid>59482</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-22 23:57:38 -0700</bug_when>
    <thetext>Comment on attachment 59482
Patch

Ok.  Renaming &quot;lexer&quot; to &quot;tokenizer&quot; and m_lexer to m_tokenizer will be needed too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241700</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-23 00:03:10 -0700</bug_when>
    <thetext>Committed r61665: &lt;http://trac.webkit.org/changeset/61665&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241721</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-23 00:35:51 -0700</bug_when>
    <thetext>Attachment 59482 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3330604</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59482</attachid>
            <date>2010-06-22 23:53:34 -0700</date>
            <delta_ts>2010-06-22 23:57:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41045-20100622235333.patch</filename>
            <type>text/plain</type>
            <size>152412</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTY2MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTEgQEAKKzIwMTAtMDYtMjIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5h
bWUgSFRNTDVMZXhlciB0byBIVE1MVG9rZW5pemVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTA0NQorCisgICAgICAgIFRoaXMgbWlnaHQgYmUgc2xp
Z2h0bHkgY29uZnVzaW5nIGdpdmVuIHRoYXQgdGhlIG9sZCBjbGFzcyB3YXMgY2FsbGVkCisgICAg
ICAgIEhUTUxUb2tlbml6ZXIsIGJ1dCBpdCBtYXRjaGVzIHRoZSB0ZXJtaW5vbG9neSBpbiB0aGUg
SFRNTDUgc3BlYy4KKworICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBodG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTDVEb2N1bWVudFBhcnNlcjo6SFRNTDVEb2N1bWVudFBhcnNlcik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNURvY3VtZW50UGFyc2VyOjpwdW1wTGV4ZXIpOgorICAgICAgICAqIGh0bWwv
SFRNTDVEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGh0bWwvSFRNTDVMZXhlci5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogaHRtbC9IVE1MNUxleGVyLmg6IFJlbW92ZWQuCisgICAgICAgICog
aHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1UHJl
bG9hZFNjYW5uZXI6OnByb2Nlc3NUb2tlbik6CisgICAgICAgICogaHRtbC9IVE1MNVByZWxvYWRT
Y2FubmVyLmg6CisgICAgICAgICogaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUw1VHJlZUJ1aWxkZXI6OkhUTUw1VHJlZUJ1aWxkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTDVUcmVlQnVpbGRlcjo6aGFuZGxlU2NyaXB0U3RhcnRUYWcpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTDVUcmVlQnVpbGRlcjo6YWRqdXN0ZWRMZXhlclN0YXRlKToKKyAgICAg
ICAgKiBodG1sL0hUTUw1VHJlZUJ1aWxkZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUb2tlbml6
ZXIuY3BwOiBDb3BpZWQgZnJvbSBXZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTmFtZXM6OmlzRW5kVGFnQnVmZmVyaW5nU3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRva2VuaXplcjo6SFRNTFRva2VuaXplcik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVG9rZW5pemVyOjp+SFRNTFRva2VuaXplcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VG9rZW5pemVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpwcm9j
ZXNzRW50aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjp0ZW1wb3JhcnlCdWZmZXJJcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjphZGRUb1Bvc3NpYmxlRW5kVGFnKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OmlzQXBwcm9wcmlhdGVFbmRUYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6ZW1pdENoYXJhY3Rlcik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVG9rZW5pemVyOjplbWl0Q29kZVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUb2tlbml6ZXI6OmVtaXRQYXJzZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
b2tlbml6ZXI6OmVtaXRDdXJyZW50VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2Vu
aXplcjo6c2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4pOgorICAgICAgICAqIGh0bWwv
SFRNTFRva2VuaXplci5oOiBDb3BpZWQgZnJvbSBXZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5oLgor
CiAyMDEwLTA2LTIyICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViQ29yZS9BbmRyb2lkLm1rCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvQW5kcm9pZC5tawkocmV2aXNpb24gNjE2NjMpCisrKyBXZWJDb3JlL0Fu
ZHJvaWQubWsJKHdvcmtpbmcgY29weSkKQEAgLTI1MCw3ICsyNTAsNyBAQCBMT0NBTF9TUkNfRklM
RVMgOj0gJChMT0NBTF9TUkNfRklMRVMpIFwKIAlodG1sL0ZpbGVMaXN0LmNwcCBcCiAJaHRtbC9G
b3JtRGF0YUxpc3QuY3BwIFwKIAlodG1sL0hUTUw1RW50aXR5UGFyc2VyLmNwcCBcCi0JaHRtbC9I
VE1MNUxleGVyLmNwcCBcCisJaHRtbC9IVE1MVG9rZW5pemVyLmNwcCBcCiAJaHRtbC9IVE1MNURv
Y3VtZW50UGFyc2VyLmNwcCBcCiAJaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmNwcCBcCiAJaHRt
bC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAgXApJbmRleDogV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA2MTY2MykKKysr
IFdlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTkwNyw3ICs5MDcsNyBA
QCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9GaWxlTGlzdC5jcHAKICAgICBodG1sL0Zv
cm1EYXRhTGlzdC5jcHAKICAgICBodG1sL0hUTUw1RW50aXR5UGFyc2VyLmNwcAotICAgIGh0bWwv
SFRNTDVMZXhlci5jcHAKKyAgICBodG1sL0hUTUxUb2tlbml6ZXIuY3BwCiAgICAgaHRtbC9IVE1M
NURvY3VtZW50UGFyc2VyLmNwcAogICAgIGh0bWwvSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAKICAg
ICBodG1sL0hUTUw1U2NyaXB0UnVubmVyLmNwcApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA2MTY2MykK
KysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEwODgsOCArMTA4
OCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9odG1sL0Zvcm1EYXRhTGlzdC5o
IFwKIAlXZWJDb3JlL2h0bWwvSFRNTDVFbnRpdHlQYXJzZXIuY3BwIFwKIAlXZWJDb3JlL2h0bWwv
SFRNTDVFbnRpdHlQYXJzZXIuaCBcCi0JV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuY3BwIFwKLQlX
ZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5oIFwKKwlXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5j
cHAgXAorCVdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmggXAogCVdlYkNvcmUvaHRtbC9IVE1M
NVRva2VuLmggXAogCVdlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcCBcCiAJV2Vi
Q29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuaCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
Z3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNjE2NjMp
CisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTQ3Myw4ICsxNDcz
LDggQEAKICAgICAgICAgICAgICdodG1sL0Zvcm1EYXRhTGlzdC5oJywKICAgICAgICAgICAgICdo
dG1sL0hUTUw1RW50aXR5UGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MNUVudGl0
eVBhcnNlci5oJywKLSAgICAgICAgICAgICdodG1sL0hUTUw1TGV4ZXIuY3BwJywKLSAgICAgICAg
ICAgICdodG1sL0hUTUw1TGV4ZXIuaCcsCisgICAgICAgICAgICAnaHRtbC9IVE1MVG9rZW5pemVy
LmNwcCcsCisgICAgICAgICAgICAnaHRtbC9IVE1MVG9rZW5pemVyLmgnLAogICAgICAgICAgICAg
J2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTDVE
b2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICdodG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIu
Y3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLnBybwkocmV2aXNpb24gNjE2NjMpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MTIsNyArNjEyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgaHRtbC9GaWxl
VGhyZWFkLmNwcCBcCiAgICAgaHRtbC9Gb3JtRGF0YUxpc3QuY3BwIFwKICAgICBodG1sL0hUTUw1
RW50aXR5UGFyc2VyLmNwcCBcCi0gICAgaHRtbC9IVE1MNUxleGVyLmNwcCBcCisgICAgaHRtbC9I
VE1MVG9rZW5pemVyLmNwcCBcCiAgICAgaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcCBcCiAg
ICAgaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmNwcCBcCiAgICAgaHRtbC9IVE1MNVNjcmlwdFJ1
bm5lci5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZp
c2lvbiA2MTY2MykKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdv
cmtpbmcgY29weSkKQEAgLTMzMzkzLDExICszMzM5MywxMSBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+
DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUw1TGV4ZXIuY3BwIg0K
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTFRva2VuaXplci5jcHAiDQogCQkJCT4NCiAJ
CQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUw1TGV4
ZXIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUxUb2tlbml6ZXIuaCINCiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2MTY2MykKKysrIFdlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNTY1LDggKzI1NjUs
OCBAQAogCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdERDREODUwRkRGNEQ2RTAw
RUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCAqLzsgfTsKIAkJOTdFNzkzNjUxMUM2MDMwOTAwRTY0OUJD
IC8qIEhUTUw1UHJlbG9hZFNjYW5uZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTdFNzkzNjMxMUM2MDMwOTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9h
ZFNjYW5uZXIuY3BwICovOyB9OwogCQk5N0U3OTM2NjExQzYwMzA5MDBFNjQ5QkMgLyogSFRNTDVQ
cmVsb2FkU2Nhbm5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTdFNzkzNjQxMUM2MDMwOTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9hZFNjYW5uZXIuaCAq
LzsgfTsKLQkJOTdFOEIzNTYxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUw1TGV4ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdFOEIzNTQxMUEyM0NF
MjAwMTY5NDA5IC8qIEhUTUw1TGV4ZXIuY3BwICovOyB9OwotCQk5N0U4QjM1NzExQTIzQ0UyMDAx
Njk0MDkgLyogSFRNTDVMZXhlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTdFOEIzNTUxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUw1TGV4ZXIuaCAqLzsg
fTsKKwkJOTdFOEIzNTYxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUxUb2tlbml6ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdFOEIzNTQxMUEyM0NF
MjAwMTY5NDA5IC8qIEhUTUxUb2tlbml6ZXIuY3BwICovOyB9OworCQk5N0U4QjM1NzExQTIzQ0Uy
MDAxNjk0MDkgLyogSFRNTFRva2VuaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTdFOEIzNTUxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUxUb2tlbml6
ZXIuaCAqLzsgfTsKIAkJOTdFOEIzQzMxMUEyODkwODAwMTY5NDA5IC8qIEhUTUw1VG9rZW4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RThCM0MyMTFB
Mjg5MDgwMDE2OTQwOSAvKiBIVE1MNVRva2VuLmggKi87IH07CiAJCTk3RUY3REZFMTA3RTU1Qjcw
MEQ3QzQ5QyAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0VGN0RGRDEwN0U1NUI3MDBEN0M0OUMgLyogU2Ny
aXB0Q29udHJvbGxlckJhc2UuY3BwICovOyB9OwogCQk5RjZGQzE5NjExMjJFODJBMDBFODAxOTYg
LyogU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUY2RkMxOTQxMTIyRTgyQTAwRTgwMTk2IC8qIFNjcmlwdERlYnVnU2Vy
dmVyLmNwcCAqLzsgfTsKQEAgLTgxNzEsOCArODE3MSw4IEBACiAJCTk3REQ0RDg1MEZERjRENkUw
MEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFhTU0F1ZGl0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdFNzkzNjMxMUM2
MDMwOTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9hZFNjYW5uZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk3RTc5MzY0MTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVByZWxv
YWRTY2FubmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUw1UHJlbG9h
ZFNjYW5uZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTdFOEIzNTQxMUEyM0NF
MjAwMTY5NDA5IC8qIEhUTUw1TGV4ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSFRNTDVMZXhlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3
RThCMzU1MTFBMjNDRTIwMDE2OTQwOSAvKiBIVE1MNUxleGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEhUTUw1TGV4ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTdFOEIzNTQxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUxUb2tlbml6ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFRva2VuaXplci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3RThCMzU1MTFBMjNDRTIwMDE2OTQwOSAvKiBIVE1MVG9r
ZW5pemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxUb2tlbml6ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdFOEIzQzIxMUEyODkwODAwMTY5NDA5
IC8qIEhUTUw1VG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTDVU
b2tlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0VGN0RGRDEwN0U1NUI3MDBE
N0M0OUMgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5RjZGQzE5NDExMjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM0ODEsOCArMTM0ODEs
OCBAQAogCQkJCUE4NzEwMzg5MTFBMjk0NzAwMERCRDUwRSAvKiBIVE1MNURvY3VtZW50UGFyc2Vy
LmggKi8sCiAJCQkJOTc2RTg5NUUxMUMwQ0EzQTAwRUE5Q0E5IC8qIEhUTUw1RW50aXR5UGFyc2Vy
LmNwcCAqLywKIAkJCQk5NzZFODk1RjExQzBDQTNBMDBFQTlDQTkgLyogSFRNTDVFbnRpdHlQYXJz
ZXIuaCAqLywKLQkJCQk5N0U4QjM1NDExQTIzQ0UyMDAxNjk0MDkgLyogSFRNTDVMZXhlci5jcHAg
Ki8sCi0JCQkJOTdFOEIzNTUxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUw1TGV4ZXIuaCAqLywKKwkJ
CQk5N0U4QjM1NDExQTIzQ0UyMDAxNjk0MDkgLyogSFRNTFRva2VuaXplci5jcHAgKi8sCisJCQkJ
OTdFOEIzNTUxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUxUb2tlbml6ZXIuaCAqLywKIAkJCQk5N0U3
OTM2MzExQzYwMzA5MDBFNjQ5QkMgLyogSFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAgKi8sCiAJCQkJ
OTdFNzkzNjQxMUM2MDMwOTAwRTY0OUJDIC8qIEhUTUw1UHJlbG9hZFNjYW5uZXIuaCAqLywKIAkJ
CQlBODNCM0FFRTExQURFRkY1MDA0NTg4MDkgLyogSFRNTDVTY3JpcHRSdW5uZXIuY3BwICovLApA
QCAtMTgwNDcsNyArMTgwNDcsNyBAQAogCQkJCUJDM0JDMjlDMEU5MUFCMEYwMDgzNTU4OCAvKiBI
b3N0V2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxMDM4QjExQTI5NDcwMDBEQkQ1MEUg
LyogSFRNTDVEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RTg5NjExMUMw
Q0EzQTAwRUE5Q0E5IC8qIEhUTUw1RW50aXR5UGFyc2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk5
N0U4QjM1NzExQTIzQ0UyMDAxNjk0MDkgLyogSFRNTDVMZXhlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJOTdFOEIzNTcxMUEyM0NFMjAwMTY5NDA5IC8qIEhUTUxUb2tlbml6ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3RTc5MzY2MTFDNjAzMDkwMEU2NDlCQyAvKiBIVE1MNVByZWxvYWRTY2FubmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODNCM0FGMTExQURFRkY1MDA0NTg4MDkgLyogSFRNTDVT
Y3JpcHRSdW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4N0YxNjM1MTFBRTg0MTMwMENCQjJF
NSAvKiBIVE1MNVNjcmlwdFJ1bm5lckhvc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjAzODgsNyAr
MjAzODgsNyBAQAogCQkJCTkzMDdGMUQ3MEFGMkQ1OTAwMERCQTMxQSAvKiBIaXRUZXN0UmVzdWx0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzEwMzhBMTFBMjk0NzAwMERCRDUwRSAvKiBIVE1M
NURvY3VtZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NkU4OTYwMTFDMENBM0Ew
MEVBOUNBOSAvKiBIVE1MNUVudGl0eVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk5N0U4
QjM1NjExQTIzQ0UyMDAxNjk0MDkgLyogSFRNTDVMZXhlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk5N0U4QjM1NjExQTIzQ0UyMDAxNjk0MDkgLyogSFRNTFRva2VuaXplci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5N0U3OTM2NTExQzYwMzA5MDBFNjQ5QkMgLyogSFRNTDVQcmVsb2FkU2Nhbm5l
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODNCM0FGMDExQURFRkY1MDA0NTg4MDkgLyogSFRN
TDVTY3JpcHRSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3OUM2MjUxMUE5RDFGNzAw
NTkyMzdBIC8qIEhUTUw1VHJlZUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwCShyZXZpc2lvbiA2MTY2MykKKysrIFdlYkNvcmUv
aHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAs
NyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkhUTUxQYXJzZXJTY2hlZHVsZXIuaCIKLSNpbmNsdWRlICJIVE1MNUxleGVyLmgiCisjaW5jbHVk
ZSAiSFRNTFRva2VuaXplci5oIgogI2luY2x1ZGUgIkhUTUw1UHJlbG9hZFNjYW5uZXIuaCIKICNp
bmNsdWRlICJIVE1MNVNjcmlwdFJ1bm5lci5oIgogI2luY2x1ZGUgIkhUTUw1VHJlZUJ1aWxkZXIu
aCIKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKIAogSFRNTDVEb2N1bWVudFBhcnNlcjo6SFRN
TDVEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHJlcG9ydEVycm9y
cykKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX2xleGVyKG5ldyBIVE1MNUxl
eGVyKQorICAgICwgbV9sZXhlcihuZXcgSFRNTFRva2VuaXplcikKICAgICAsIG1fc2NyaXB0UnVu
bmVyKG5ldyBIVE1MNVNjcmlwdFJ1bm5lcihkb2N1bWVudCwgdGhpcykpCiAgICAgLCBtX3RyZWVD
b25zdHJ1Y3RvcihuZXcgSFRNTDVUcmVlQnVpbGRlcihtX2xleGVyLmdldCgpLCBkb2N1bWVudCwg
cmVwb3J0RXJyb3JzKSkKICAgICAsIG1fcGFyc2VyU2NoZWR1bGVyKG5ldyBIVE1MUGFyc2VyU2No
ZWR1bGVyKHRoaXMpKQpAQCAtODEsNyArODEsNyBAQCBIVE1MNURvY3VtZW50UGFyc2VyOjpIVE1M
NURvY3VtZW50UGFyc2VyCiAvLyBtaW5pbWl6ZSBjb2RlIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhl
c2UgY29uc3RydWN0b3JzLgogSFRNTDVEb2N1bWVudFBhcnNlcjo6SFRNTDVEb2N1bWVudFBhcnNl
cihEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9u
IHNjcmlwdGluZ1Blcm1pc3Npb24pCiAgICAgOiBtX2RvY3VtZW50KGZyYWdtZW50LT5kb2N1bWVu
dCgpKQotICAgICwgbV9sZXhlcihuZXcgSFRNTDVMZXhlcikKKyAgICAsIG1fbGV4ZXIobmV3IEhU
TUxUb2tlbml6ZXIpCiAgICAgLCBtX3RyZWVDb25zdHJ1Y3RvcihuZXcgSFRNTDVUcmVlQnVpbGRl
cihtX2xleGVyLmdldCgpLCBmcmFnbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbikpCiAgICAgLCBt
X2VuZFdhc0RlbGF5ZWQoZmFsc2UpCiAgICAgLCBtX3dyaXRlTmVzdGluZ0xldmVsKDApCkBAIC0x
ODMsNyArMTgzLDcgQEAgdm9pZCBIVE1MNURvY3VtZW50UGFyc2VyOjpwdW1wTGV4ZXIoU3luYwog
ICAgIH0KIAogICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsKLSAgICAgICAgQVNTRVJU
KG1fbGV4ZXItPnN0YXRlKCkgPT0gSFRNTDVMZXhlcjo6RGF0YVN0YXRlKTsKKyAgICAgICAgQVNT
RVJUKG1fbGV4ZXItPnN0YXRlKCkgPT0gSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKICAgICAg
ICAgaWYgKCFtX3ByZWxvYWRTY2FubmVyKSB7CiAgICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVy
LnNldChuZXcgSFRNTDVQcmVsb2FkU2Nhbm5lcihtX2RvY3VtZW50KSk7CiAgICAgICAgICAgICBt
X3ByZWxvYWRTY2FubmVyLT5hcHBlbmRUb0VuZChtX2lucHV0LmN1cnJlbnQoKSk7CkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmgJKHJldmlzaW9uIDYxNjYzKQorKysgV2ViQ29yZS9o
dG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBA
QCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBIVE1MRG9j
dW1lbnQ7CiBjbGFzcyBIVE1MUGFyc2VyU2NoZWR1bGVyOwotY2xhc3MgSFRNTDVMZXhlcjsKK2Ns
YXNzIEhUTUxUb2tlbml6ZXI7CiBjbGFzcyBIVE1MNVNjcmlwdFJ1bm5lcjsKIGNsYXNzIEhUTUw1
VHJlZUJ1aWxkZXI7CiBjbGFzcyBIVE1MNVByZWxvYWRTY2FubmVyOwpAQCAtMTE4LDcgKzExOCw3
IEBAIHByaXZhdGU6CiAgICAgLy8gV2UgbXVzdCBzdXBwb3J0IHBhcnNpbmcgaW50byBhIERvY3Vt
ZW50KiBhbmQgbm90IGp1c3QgSFRNTERvY3VtZW50KgogICAgIC8vIHRvIHN1cHBvcnQgRG9jdW1l
bnRGcmFnbWVudCAod2hpY2ggaGFzIGEgRG9jdW1lbnQqKS4KICAgICBEb2N1bWVudCogbV9kb2N1
bWVudDsKLSAgICBPd25QdHI8SFRNTDVMZXhlcj4gbV9sZXhlcjsKKyAgICBPd25QdHI8SFRNTFRv
a2VuaXplcj4gbV9sZXhlcjsKICAgICBPd25QdHI8SFRNTDVTY3JpcHRSdW5uZXI+IG1fc2NyaXB0
UnVubmVyOwogICAgIE93blB0cjxIVE1MNVRyZWVCdWlsZGVyPiBtX3RyZWVDb25zdHJ1Y3RvcjsK
ICAgICBPd25QdHI8SFRNTDVQcmVsb2FkU2Nhbm5lcj4gbV9wcmVsb2FkU2Nhbm5lcjsKSW5kZXg6
IFdlYkNvcmUvaHRtbC9IVE1MNUxleGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTDVMZXhlci5jcHAJKHJldmlzaW9uIDYxNjYzKQorKysgV2ViQ29yZS9odG1sL0hUTUw1TGV4
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0OTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuIGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLwot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkhUTUw1TGV4ZXIuaCIKLQotI2luY2x1ZGUgIkF0b21pY1N0cmlu
Zy5oIgotI2luY2x1ZGUgIkhUTUw1RW50aXR5UGFyc2VyLmgiCi0jaW5jbHVkZSAiSFRNTDVUb2tl
bi5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFt
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L1VuaWNvZGUuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotCi1uYW1lc3BhY2UgewotCi1pbmxpbmUg
VUNoYXIgdG9Mb3dlckNhc2UoVUNoYXIgY2MpCi17Ci0gICAgQVNTRVJUKGNjID49ICdBJyAmJiBj
YyA8PSAnWicpOwotICAgIGNvbnN0IGludCBsb3dlckNhc2VPZmZzZXQgPSAweDIwOwotICAgIHJl
dHVybiBjYyArIGxvd2VyQ2FzZU9mZnNldDsKLX0KLQotaW5saW5lIHZvaWQgYWR2YW5jZVN0cmlu
Z0FuZEFTU0VSVElnbm9yaW5nQ2FzZShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgY29uc3QgY2hh
ciogZXhwZWN0ZWRDaGFyYWN0ZXJzKQotewotICAgIHdoaWxlICgqZXhwZWN0ZWRDaGFyYWN0ZXJz
KQotICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSgqZXhwZWN0ZWRD
aGFyYWN0ZXJzKyspOwotfQotCi1pbmxpbmUgYm9vbCB2ZWN0b3JFcXVhbHNTdHJpbmcoY29uc3Qg
VmVjdG9yPFVDaGFyLCAzMj4mIHZlY3RvciwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAg
aWYgKHZlY3Rvci5zaXplKCkgIT0gc3RyaW5nLmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgY29uc3QgVUNoYXIqIHN0cmluZ0RhdGEgPSBzdHJpbmcuY2hhcmFjdGVycygpOwot
ICAgIGNvbnN0IFVDaGFyKiB2ZWN0b3JEYXRhID0gdmVjdG9yLmRhdGEoKTsKLSAgICAvLyBGSVhN
RTogSXMgdGhlcmUgYSBoaWdoZXItbGV2ZWwgZnVuY3Rpb24gd2Ugc2hvdWxkIGJlIGNhbGxpbmcg
aGVyZT8KLSAgICByZXR1cm4gIW1lbWNtcChzdHJpbmdEYXRhLCB2ZWN0b3JEYXRhLCB2ZWN0b3Iu
c2l6ZSgpICogc2l6ZW9mKFVDaGFyKSk7Ci19Ci0KLWlubGluZSBib29sIGlzRW5kVGFnQnVmZmVy
aW5nU3RhdGUoSFRNTDVMZXhlcjo6U3RhdGUgc3RhdGUpCi17Ci0gICAgc3dpdGNoIChzdGF0ZSkg
ewotICAgIGNhc2UgSFRNTDVMZXhlcjo6UkNEQVRBRW5kVGFnT3BlblN0YXRlOgotICAgIGNhc2Ug
SFRNTDVMZXhlcjo6UkNEQVRBRW5kVGFnTmFtZVN0YXRlOgotICAgIGNhc2UgSFRNTDVMZXhlcjo6
UkFXVEVYVEVuZFRhZ09wZW5TdGF0ZToKLSAgICBjYXNlIEhUTUw1TGV4ZXI6OlJBV1RFWFRFbmRU
YWdOYW1lU3RhdGU6Ci0gICAgY2FzZSBIVE1MNUxleGVyOjpTY3JpcHREYXRhRW5kVGFnT3BlblN0
YXRlOgotICAgIGNhc2UgSFRNTDVMZXhlcjo6U2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZToKLSAg
ICBjYXNlIEhUTUw1TGV4ZXI6OlNjcmlwdERhdGFFc2NhcGVkRW5kVGFnT3BlblN0YXRlOgotICAg
IGNhc2UgSFRNTDVMZXhlcjo6U2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGU6Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci19Ci0KLX0KLQotSFRNTDVMZXhlcjo6SFRNTDVMZXhlcigpCi17Ci0gICAgcmVzZXQoKTsK
LX0KLQotSFRNTDVMZXhlcjo6fkhUTUw1TGV4ZXIoKQotewotfQotCi12b2lkIEhUTUw1TGV4ZXI6
OnJlc2V0KCkKLXsKLSAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgIG1fdG9rZW4gPSAwOwot
ICAgIG1fbGluZU51bWJlciA9IDA7Ci0gICAgbV9za2lwTGVhZGluZ05ld0xpbmVGb3JMaXN0aW5n
ID0gZmFsc2U7Ci0gICAgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9ICdcMCc7Ci19Ci0K
LWlubGluZSBib29sIEhUTUw1TGV4ZXI6OnByb2Nlc3NFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UpCi17Ci0gICAgYm9vbCBub3RFbm91Z2hDaGFyYWN0ZXJzID0gZmFsc2U7Ci0gICAgdW5z
aWduZWQgdmFsdWUgPSBjb25zdW1lSFRNTDVFbnRpdHkoc291cmNlLCBub3RFbm91Z2hDaGFyYWN0
ZXJzKTsKLSAgICBpZiAobm90RW5vdWdoQ2hhcmFjdGVycykKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIGVtaXRDaGFyYWN0ZXIoJyYnKTsKLSAgICBlbHNl
Ci0gICAgICAgIGVtaXRDb2RlUG9pbnQodmFsdWUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi0j
aWYgQ09NUElMRVIoTVNWQykKLS8vIFdlIG5lZWQgdG8gZGlzYWJsZSB0aGUgInVucmVhY2hhYmxl
IGNvZGUiIHdhcm5pbmcgYmVjYXVzZSB3ZSB3YW50IHRvIGFzc2VydAotLy8gdGhhdCBzb21lIGNv
ZGUgcG9pbnRzIGFyZW4ndCByZWFjaGVkIGluIHRoZSBzdGF0ZSBtYWNoaW5lLgotI3ByYWdtYSB3
YXJuaW5nKGRpc2FibGU6IDQ3MDIpCi0jZW5kaWYKLQotI2RlZmluZSBCRUdJTl9TVEFURShzdGF0
ZU5hbWUpIGNhc2Ugc3RhdGVOYW1lOiBzdGF0ZU5hbWU6Ci0jZGVmaW5lIEVORF9TVEFURSgpIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyBicmVhazsKLQotLy8gV2UgdXNlIHRoaXMgbWFjcm8gd2hlbiB0
aGUgSFRNTDUgc3BlYyBzYXlzICJyZWNvbnN1bWUgdGhlIGN1cnJlbnQgaW5wdXQKLS8vIGNoYXJh
Y3RlciBpbiB0aGUgPG11bWJsZT4gc3RhdGUuIgotI2RlZmluZSBSRUNPTlNVTUVfSU4oc3RhdGVO
YW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICBtX3N0YXRlID0gc3RhdGVOYW1lOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBnb3RvIHN0YXRlTmFt
ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgIH0gd2hpbGUgKGZhbHNlKQotCi0vLyBXZSB1c2UgdGhpcyBtYWNybyB3aGVuIHRoZSBIVE1M
NSBzcGVjIHNheXMgImNvbnN1bWUgdGhlIG5leHQgaW5wdXQKLS8vIGNoYXJhY3RlciAuLi4gYW5k
IHN3aXRjaCB0byB0aGUgPG11bWJsZT4gc3RhdGUuIgotI2RlZmluZSBBRFZBTkNFX1RPKHN0YXRl
TmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
IGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICBtX3N0YXRlID0gc3RhdGVOYW1lOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoIW1faW5w
dXRTdHJlYW1QcmVwcm9jZXNzb3IuYWR2YW5jZShzb3VyY2UsIG1fbGluZU51bWJlcikpICAgICAg
XAotICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNv
dXJjZSk7ICAgICAgICAgICAgICAgXAotICAgICAgICBjYyA9IG1faW5wdXRTdHJlYW1QcmVwcm9j
ZXNzb3IubmV4dElucHV0Q2hhcmFjdGVyKCk7ICAgICAgICAgICAgICAgXAotICAgICAgICBnb3Rv
IHN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIH0gd2hpbGUgKGZhbHNlKQotCi0vLyBTb21ldGltZXMgdGhlcmUncyBtb3Jl
IGNvbXBsaWNhdGVkIGxvZ2ljIGluIHRoZSBzcGVjIHRoYXQgc2VwYXJhdGVzIHdoZW4KLS8vIHdl
IGNvbnN1bWUgdGhlIG5leHQgaW5wdXQgY2hhcmFjdGVyIGFuZCB3aGVuIHdlIHN3aXRjaCB0byBh
IHBhcnRpY3VsYXIKLS8vIHN0YXRlLiAgV2UgaGFuZGxlIHRob3NlIGNhc2VzIGJ5IGFkdmFuY2lu
ZyB0aGUgc291cmNlIGRpcmVjdGx5IGFuZCB1c2luZwotLy8gdGhpcyBtYWNybyB0byBzd2l0Y2gg
dG8gdGhlIGluZGljYXRlZCBzdGF0ZS4KLSNkZWZpbmUgU1dJVENIX1RPKHN0YXRlTmFtZSkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBkbyB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgbV9zdGF0ZSA9IHN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5
KCkgfHwgIW1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IucGVlayhzb3VyY2UsIG1fbGluZU51bWJl
cikpIFwKLSAgICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tl
bihzb3VyY2UpOyAgICAgICAgICAgICAgIFwKLSAgICAgICAgY2MgPSBtX2lucHV0U3RyZWFtUHJl
cHJvY2Vzc29yLm5leHRJbnB1dENoYXJhY3RlcigpOyAgICAgICAgICAgICAgIFwKLSAgICAgICAg
Z290byBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICB9IHdoaWxlIChmYWxzZSkKLQotLy8gV2UgdXNlIHRoaXMgbWFjcm8g
d2hlbiB0aGUgSFRNTDUgc3BlYyBzYXlzICJFbWl0IHRoZSBjdXJyZW50IDxtdW1ibGU+Ci0vLyB0
b2tlbi4gU3dpdGNoIHRvIHRoZSA8bXVtYmxlPiBzdGF0ZS4iICBXZSB1c2UgdGhlIHdvcmQgInJl
c3VtZSIgaW5zdGVhZCBvZgotLy8gc3dpdGNoIHRvIGluZGljYXRlIHRoYXQgdGhpcyBtYWNybyBh
Y3R1YWxseSByZXR1cm5zIGFuZCB0aGF0IHdlJ2xsIGVuZCB1cAotLy8gaW4gdGhlIHN0YXRlIHdo
ZW4gd2UgInJlc3VtZSIgKGkuZS4sIGFyZSBjYWxsZWQgYWdhaW4pLgotI2RlZmluZSBFTUlUX0FO
RF9SRVNVTUVfSU4oc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBtX3N0YXRlID0gc3RhdGVOYW1lOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBz
b3VyY2UuYWR2YW5jZShtX2xpbmVOdW1iZXIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gdHJ1ZTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
IH0gd2hpbGUgKGZhbHNlKQotCi0jZGVmaW5lIF9GTFVTSF9CVUZGRVJFRF9FTkRfVEFHKCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZG8geyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgIEFTU0VSVChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVUb2tlbjo6Q2hhcmFj
dGVyIHx8ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICBtX3Rva2VuLT50eXBlKCkg
PT0gSFRNTDVUb2tlbjo6VW5pbml0aWFsaXplZCk7ICAgICAgICAgICAgICBcCi0gICAgICAgIHNv
dXJjZS5hZHZhbmNlKG1fbGluZU51bWJlcik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVUb2tlbjo6Q2hh
cmFjdGVyKSAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKG1fYnVmZmVyZWRFbmRUYWdOYW1lKTsgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2Up
Ci0KLSNkZWZpbmUgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oc3RhdGVOYW1lKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbV9z
dGF0ZSA9IHN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgX0ZMVVNIX0JVRkZFUkVEX0VORF9UQUcoKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5
KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgICAgIHx8ICFtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLnBlZWsoc291cmNlLCBtX2xpbmVO
dW1iZXIpKSAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFy
YWN0ZXJUb2tlbihzb3VyY2UpOyAgICAgICAgICAgICAgIFwKLSAgICAgICAgY2MgPSBtX2lucHV0
U3RyZWFtUHJlcHJvY2Vzc29yLm5leHRJbnB1dENoYXJhY3RlcigpOyAgICAgICAgICAgICAgIFwK
LSAgICAgICAgZ290byBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlIChmYWxzZSkKLQotI2RlZmluZSBGTFVT
SF9FTUlUX0FORF9SRVNVTUVfSU4oc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBtX3N0YXRlID0gc3RhdGVOYW1l
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICBfRkxVU0hfQlVGRkVSRURfRU5EX1RBRygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKGZhbHNlKQot
Ci1ib29sIEhUTUw1TGV4ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRN
TDVUb2tlbiYgdG9rZW4pCi17Ci0gICAgLy8gSWYgd2UgaGF2ZSBhIHRva2VuIGluIHByb2dyZXNz
LCB0aGVuIHdlJ3JlIHN1cHBvc2VkIHRvIGJlIGNhbGxlZCBiYWNrCi0gICAgLy8gd2l0aCB0aGUg
c2FtZSB0b2tlbiBzbyB3ZSBjYW4gZmluaXNoIGl0LgotICAgIEFTU0VSVCghbV90b2tlbiB8fCBt
X3Rva2VuID09ICZ0b2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gSFRNTDVUb2tlbjo6VW5pbml0aWFs
aXplZCk7Ci0gICAgbV90b2tlbiA9ICZ0b2tlbjsKLQotICAgIGlmICghbV9idWZmZXJlZEVuZFRh
Z05hbWUuaXNFbXB0eSgpICYmICFpc0VuZFRhZ0J1ZmZlcmluZ1N0YXRlKG1fc3RhdGUpKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBjYWxsIGZsdXNoQnVmZmVyZWRFbmRUYWcoKS4K
LSAgICAgICAgLy8gV2Ugc3RhcnRlZCBhbiBlbmQgdGFnIGR1cmluZyBvdXIgbGFzdCBpdGVyYXRp
b24uCi0gICAgICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKG1fYnVmZmVyZWRFbmRUYWdOYW1lKTsK
LSAgICAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKLSAgICAgICAgaWYgKG1fc3Rh
dGUgPT0gRGF0YVN0YXRlKSB7Ci0gICAgICAgICAgICAvLyBXZSdyZSBiYWNrIGluIHRoZSBkYXRh
IHN0YXRlLCBzbyB3ZSBtdXN0IGJlIGRvbmUgd2l0aCB0aGUgdGFnLgotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoc291cmNlLmlzRW1wdHkoKSB8
fCAhbV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5wZWVrKHNvdXJjZSwgbV9saW5lTnVtYmVyKSkK
LSAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7
Ci0gICAgVUNoYXIgY2MgPSBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLm5leHRJbnB1dENoYXJh
Y3RlcigpOwotCi0gICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjcGFyc2luZy1tYWluLWluYm9k
eQotICAgIC8vIE5vdGUgdGhhdCB0aGlzIGxvZ2ljIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBnZW5l
cmljIFxyXG4gY29sbGFwc2luZwotICAgIC8vIGhhbmRsZWQgaW4gdGhlIGlucHV0IHN0cmVhbSBw
cmVwcm9jZXNzb3IuICBUaGlzIGxvZ2ljIGlzIGhlcmUgYXMgYW4KLSAgICAvLyAiYXV0aG9yaW5n
IGNvbnZlbmllbmNlIiBzbyBmb2xrcyBjYW4gd3JpdGU6Ci0gICAgLy8KLSAgICAvLyA8cHJlPgot
ICAgIC8vIGxvcmVtIGlwc3VtCi0gICAgLy8gbG9yZW0gaXBzdW0KLSAgICAvLyA8L3ByZT4KLSAg
ICAvLwotICAgIC8vIHdpdGhvdXQgZ2V0dGluZyBhbiBleHRyYSBuZXdsaW5lIGF0IHRoZSBzdGFy
dCBvZiB0aGVpciA8cHJlPiBlbGVtZW50LgotICAgIGlmIChtX3NraXBMZWFkaW5nTmV3TGluZUZv
ckxpc3RpbmcpIHsKLSAgICAgICAgbV9za2lwTGVhZGluZ05ld0xpbmVGb3JMaXN0aW5nID0gZmFs
c2U7Ci0gICAgICAgIGlmIChtX3N0YXRlID09IERhdGFTdGF0ZSAmJiBjYyA9PSAnXG4nKQotICAg
ICAgICAgICAgQURWQU5DRV9UTyhEYXRhU3RhdGUpOwotICAgIH0KLQotICAgIC8vIFNvdXJjZTog
aHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jdG9rZW5p
c2F0aW9uMAotICAgIHN3aXRjaCAobV9zdGF0ZSkgewotICAgIEJFR0lOX1NUQVRFKERhdGFTdGF0
ZSkgewotICAgICAgICBpZiAoY2MgPT0gJyYnKQotICAgICAgICAgICAgQURWQU5DRV9UTyhDaGFy
YWN0ZXJSZWZlcmVuY2VJbkRhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc8Jykg
ewotICAgICAgICAgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MNVRva2VuOjpDaGFyYWN0
ZXIpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgYnVuY2ggb2YgY2hhcmFjdGVyIHRv
a2VucyBxdWV1ZWQgdXAgdGhhdCB3ZQotICAgICAgICAgICAgICAgIC8vIGFyZSBlbWl0dGluZyBs
YXppbHkgaGVyZS4KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnT3BlblN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhE
YXRhU3RhdGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJ
Tl9TVEFURShDaGFyYWN0ZXJSZWZlcmVuY2VJbkRhdGFTdGF0ZSkgewotICAgICAgICBpZiAoIXBy
b2Nlc3NFbnRpdHkoc291cmNlKSkKLSAgICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVy
ZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOwotICAgICAgICBTV0lUQ0hfVE8oRGF0YVN0YXRlKTsK
LSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKFJDREFUQVN0YXRlKSB7
Ci0gICAgICAgIGlmIChjYyA9PSAnJicpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJhY3Rl
clJlZmVyZW5jZUluUkNEQVRBU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnPCcpCi0g
ICAgICAgICAgICBBRFZBTkNFX1RPKFJDREFUQUxlc3NUaGFuU2lnblN0YXRlKTsKLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oUkNEQVRBU3RhdGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0K
LSAgICBCRUdJTl9TVEFURShDaGFyYWN0ZXJSZWZlcmVuY2VJblJDREFUQVN0YXRlKSB7Ci0gICAg
ICAgIGlmICghcHJvY2Vzc0VudGl0eShzb3VyY2UpKQotICAgICAgICAgICAgcmV0dXJuIHNob3Vs
ZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7Ci0gICAgICAgIFNXSVRDSF9UTyhS
Q0RBVEFTdGF0ZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShS
QVdURVhUU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICc8JykKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oUkFXVEVYVExlc3NUaGFuU2lnblN0YXRlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkFXVEVYVFN0
YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RB
VEUoU2NyaXB0RGF0YVN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnPCcpCi0gICAgICAgICAg
ICBBRFZBTkNFX1RPKFNjcmlwdERhdGFMZXNzVGhhblNpZ25TdGF0ZSk7Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RP
KFNjcmlwdERhdGFTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQot
ICAgIEJFR0lOX1NUQVRFKFBMQUlOVEVYVFN0YXRlKSB7Ci0gICAgICAgIGVtaXRDaGFyYWN0ZXIo
Y2MpOwotICAgICAgICBBRFZBTkNFX1RPKFBMQUlOVEVYVFN0YXRlKTsKLSAgICB9Ci0gICAgRU5E
X1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKFRhZ09wZW5TdGF0ZSkgewotICAgICAgICBpZiAo
Y2MgPT0gJyEnKQotICAgICAgICAgICAgQURWQU5DRV9UTyhNYXJrdXBEZWNsYXJhdGlvbk9wZW5T
dGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oRW5kVGFnT3BlblN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9
ICdaJykgewotICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5TdGFydFRhZyh0b0xvd2VyQ2FzZShj
YykpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOwotICAgICAgICB9IGVs
c2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmJl
Z2luU3RhcnRUYWcoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOwot
ICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc/JykgewotICAgICAgICAgICAgZW1pdFBhcnNlRXJy
b3IoKTsKLSAgICAgICAgICAgIC8vIFRoZSBzcGVjIGNvbnN1bWVzIHRoZSBjdXJyZW50IGNoYXJh
Y3RlciBiZWZvcmUgc3dpdGNoaW5nCi0gICAgICAgICAgICAvLyB0byB0aGUgYm9ndXMgY29tbWVu
dCBzdGF0ZSwgYnV0IGl0J3MgZWFzaWVyIHRvIGltcGxlbWVudAotICAgICAgICAgICAgLy8gaWYg
d2UgcmVjb25zdW1lIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4KLSAgICAgICAgICAgIFJFQ09OU1VN
RV9JTihCb2d1c0NvbW1lbnRTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBl
bWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwotICAgICAg
ICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5E
X1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKEVuZFRhZ09wZW5TdGF0ZSkgewotICAgICAgICBp
ZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5F
bmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnTmFtZVN0
YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7Ci0gICAg
ICAgICAgICBtX3Rva2VuLT5iZWdpbkVuZFRhZyhjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RP
KFRhZ05hbWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAg
ICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhEYXRhU3RhdGUp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAg
ICAgICAgIFJFQ09OU1VNRV9JTihCb2d1c0NvbW1lbnRTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgfQotICAgIEVORF9TVEFURSgp
Ci0KLSAgICBCRUdJTl9TVEFURShUYWdOYW1lU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICdc
eDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKLSAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJy8nKQotICAgICAgICAgICAgQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0
VGFnU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICBFTUlU
X0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYm
IGNjIDw9ICdaJykgewotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKHRvTG93ZXJD
YXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUoY2MpOwotICAgICAg
ICAgICAgQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJ
WE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAg
QkVHSU5fU1RBVEUoUkNEQVRBTGVzc1RoYW5TaWduU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09
ICcvJykgewotICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAg
ICAgIEFTU0VSVChtX2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAg
QURWQU5DRV9UTyhSQ0RBVEFFbmRUYWdPcGVuU3RhdGUpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFJD
REFUQVN0YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVH
SU5fU1RBVEUoUkNEQVRBRW5kVGFnT3BlblN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA+PSAnQScg
JiYgY2MgPD0gJ1onKSB7Ci0gICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2Mp
OwotICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOwotICAg
ICAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpOwotICAgICAgICB9IGVs
c2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAgICAgIG1fdGVtcG9yYXJ5
QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsK
LSAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRlKTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAgIGVt
aXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihSQ0RBVEFTdGF0ZSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKFJD
REFUQUVuZFRhZ05hbWVTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICda
JykgewotICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAg
ICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFE
VkFOQ0VfVE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA+
PSAnYScgJiYgY2MgPD0gJ3onKSB7Ci0gICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBl
bmQoY2MpOwotICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7Ci0gICAgICAgICAg
ICBBRFZBTkNFX1RPKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgw
QycgfHwgY2MgPT0gJyAnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRU
YWcoKSkKLSAgICAgICAgICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oQmVmb3JlQXR0
cmlidXRlTmFtZVN0YXRlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy8nKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKLSAgICAgICAgICAgICAg
ICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGlz
QXBwcm9wcmlhdGVFbmRUYWcoKSkKLSAgICAgICAgICAgICAgICAgICAgRkxVU0hfRU1JVF9BTkRf
UkVTVU1FX0lOKERhdGFTdGF0ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbWl0Q2hh
cmFjdGVyKCc8Jyk7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcvJyk7Ci0gICAgICAgICAg
ICBtX3Rva2VuLT5hcHBlbmRUb0NoYXJhY3RlcihtX3RlbXBvcmFyeUJ1ZmZlcik7Ci0gICAgICAg
ICAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwotICAgICAgICAgICAgUkVDT05TVU1F
X0lOKFJDREFUQVN0YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0g
ICAgQkVHSU5fU1RBVEUoUkFXVEVYVExlc3NUaGFuU2lnblN0YXRlKSB7Ci0gICAgICAgIGlmIChj
YyA9PSAnLycpIHsKLSAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7Ci0gICAg
ICAgICAgICBBU1NFUlQobV9idWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0eSgpKTsKLSAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oUkFXVEVYVEVuZFRhZ09wZW5TdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVf
SU4oUkFXVEVYVFN0YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0g
ICAgQkVHSU5fU1RBVEUoUkFXVEVYVEVuZFRhZ09wZW5TdGF0ZSkgewotICAgICAgICBpZiAoY2Mg
Pj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBw
ZW5kKGNjKTsKLSAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2Mp
KTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgewotICAgICAgICAgICAgbV90
ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRU
YWcoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhSQVdURVhURW5kVGFnTmFtZVN0YXRlKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAgICAg
ICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihSQVdU
RVhUU3RhdGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJ
Tl9TVEFURShSQVdURVhURW5kVGFnTmFtZVN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA+PSAnQScg
JiYgY2MgPD0gJ1onKSB7Ci0gICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2Mp
OwotICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOwotICAg
ICAgICAgICAgQURWQU5DRV9UTyhSQVdURVhURW5kVGFnTmFtZVN0YXRlKTsKLSAgICAgICAgfSBl
bHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7Ci0gICAgICAgICAgICBtX3RlbXBvcmFy
eUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFJBV1RFWFRFbmRUYWdOYW1lU3RhdGUpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScg
fHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykgewotICAgICAgICAgICAgICAgIGlmIChpc0Fw
cHJvcHJpYXRlRW5kVGFnKCkpCi0gICAgICAgICAgICAgICAgICAgIEZMVVNIX0FORF9BRFZBTkNF
X1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNj
ID09ICcvJykgewotICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCi0g
ICAgICAgICAgICAgICAgICAgIEZMVVNIX0FORF9BRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRU
YWdTdGF0ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAg
ICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCi0gICAgICAgICAgICAgICAgICAgIEZM
VVNIX0VNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZW1pdENoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgZW1pdENoYXJhY3RlcignLycp
OwotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlCdWZm
ZXIpOwotICAgICAgICAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKLSAgICAgICAg
ICAgIFJFQ09OU1VNRV9JTihSQVdURVhUU3RhdGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVO
RF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhTGVzc1RoYW5TaWduU3RhdGUp
IHsKLSAgICAgICAgaWYgKGNjID09ICcvJykgewotICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZm
ZXIuY2xlYXIoKTsKLSAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0Vt
cHR5KCkpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRW5kVGFnT3BlblN0YXRl
KTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnIScpIHsKLSAgICAgICAgICAgIGVtaXRDaGFy
YWN0ZXIoJzwnKTsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJyEnKTsKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZVN0YXJ0U3RhdGUpOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgUkVDT05TVU1F
X0lOKFNjcmlwdERhdGFTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkK
LQotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFbmRUYWdPcGVuU3RhdGUpIHsKLSAgICAgICAg
aWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVm
ZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJD
YXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFbmRUYWdOYW1lU3Rh
dGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAg
ICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICBhZGRUb1Bv
c3NpYmxlRW5kVGFnKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVuZFRh
Z05hbWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVy
KCc8Jyk7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcvJyk7Ci0gICAgICAgICAgICBSRUNP
TlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RB
VEUoKQotCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZSkgewotICAg
ICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgbV90ZW1wb3Jh
cnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9M
b3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVuZFRhZ05h
bWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6Jykgewot
ICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgIGFk
ZFRvUG9zc2libGVFbmRUYWcoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRh
RW5kVGFnTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChjYyA9
PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpIHsK
LSAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQotICAgICAgICAgICAg
ICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwot
ICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICBpZiAo
aXNBcHByb3ByaWF0ZUVuZFRhZygpKQotICAgICAgICAgICAgICAgICAgICBGTFVTSF9BTkRfQURW
QU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwotICAgICAgICAgICAgfSBlbHNlIGlm
IChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygp
KQotICAgICAgICAgICAgICAgICAgICBGTFVTSF9FTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRl
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAgICAg
ICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
Q2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsKLSAgICAgICAgICAgIG1fYnVmZmVyZWRFbmRU
YWdOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRl
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUo
U2NyaXB0RGF0YUVzY2FwZVN0YXJ0U3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICctJykgewot
ICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNj
cmlwdERhdGFFc2NhcGVTdGFydERhc2hTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgp
Ci0KLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoU3RhdGUpIHsKLSAg
ICAgICAgaWYgKGNjID09ICctJykgewotICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZSk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7
Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNj
YXBlZFN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnLScpIHsKLSAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZERh
c2hTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKQotICAgICAgICAgICAgQURW
QU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6
IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJ
Tl9TVEFURShTY3JpcHREYXRhRXNjYXBlZERhc2hTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0g
Jy0nKSB7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oU2NyaXB0RGF0YUVzY2FwZWREYXNoRGFzaFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlm
IChjYyA9PSAnPCcpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkTGVz
c1RoYW5TaWduU3RhdGUpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0
ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsK
LSAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICB9
Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVkRGFz
aERhc2hTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJy0nKSB7Ci0gICAgICAgICAgICBlbWl0
Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRE
YXNoRGFzaFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpCi0gICAgICAgICAg
ICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOwotICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwot
ICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhU3RhdGUpOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RP
KFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBI
YW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5f
U1RBVEUoU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSkgewotICAgICAgICBpZiAo
Y2MgPT0gJy8nKSB7Ci0gICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOwotICAg
ICAgICAgICAgQVNTRVJUKG1fYnVmZmVyZWRFbmRUYWdOYW1lLmlzRW1wdHkoKSk7Ci0gICAgICAg
ICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnT3BlblN0YXRlKTsKLSAgICAg
ICAgfSBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7Ci0gICAgICAgICAgICBlbWl0
Q2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAg
ICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICBtX3RlbXBvcmFyeUJ1
ZmZlci5hcHBlbmQodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2Ny
aXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID49
ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAg
ICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZm
ZXIuY2xlYXIoKTsKLSAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAgICAg
ICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2Fw
ZWRFbmRUYWdPcGVuU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicp
IHsKLSAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAg
ICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZB
TkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNl
IGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7Ci0gICAgICAgICAgICBtX3RlbXBvcmFyeUJ1
ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAgICAg
ICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3Jp
cHREYXRhRXNjYXBlZFN0YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQot
Ci0gICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpIHsKLSAg
ICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAgIG1fdGVtcG9y
YXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRv
TG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVk
RW5kVGFnTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0g
J3onKSB7Ci0gICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAg
ICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNj
cmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8
fCBjYyA9PSAnICcpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygp
KQotICAgICAgICAgICAgICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1
dGVOYW1lU3RhdGUpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLycpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQotICAgICAgICAgICAgICAgICAg
ICBGTFVTSF9BTkRfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwotICAgICAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNBcHBy
b3ByaWF0ZUVuZFRhZygpKQotICAgICAgICAgICAgICAgICAgICBGTFVTSF9FTUlUX0FORF9SRVNV
TUVfSU4oRGF0YVN0YXRlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVtaXRDaGFyYWN0
ZXIoJzwnKTsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsKLSAgICAgICAgICAg
IG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAgICBSRUNPTlNVTUVfSU4o
U2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRF
KCkKLQotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKSB7
Ci0gICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBD
JyB8fCBjYyA9PSAnICcgfHwgY2MgPT0gJy8nIHx8IGNjID09ICc+JykgewotICAgICAgICAgICAg
ZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBpZiAodGVtcG9yYXJ5QnVmZmVySXMoc2Ny
aXB0VGFnLmxvY2FsTmFtZSgpKSkKLSAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERh
dGFEb3VibGVFc2NhcGVkU3RhdGUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
Y2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7
Ci0gICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQodG9Mb3dlckNhc2UoY2MpKTsK
LSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUp
OwotICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAg
ICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBw
ZW5kKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0
YXJ0U3RhdGUpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3Jp
cHREYXRhRXNjYXBlZFN0YXRlKTsKLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lO
X1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09
ICctJykgewotICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZB
TkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaFN0YXRlKTsKLSAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnPCcpIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAg
ICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRl
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAg
ICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKLSAgICAg
ICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICB9Ci0gICAg
RU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFz
aFN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnLScpIHsKLSAgICAgICAgICAgIGVtaXRDaGFy
YWN0ZXIoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBl
ZERhc2hEYXNoU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykgewotICAgICAg
ICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERh
dGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlw
dERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBI
YW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5f
U1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoRGFzaFN0YXRlKSB7Ci0gICAgICAgIGlm
IChjYyA9PSAnLScpIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAg
ICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNoU3RhdGUpOwotICAg
ICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykgewotICAgICAgICAgICAgZW1pdENoYXJhY3Rlcihj
Yyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1Ro
YW5TaWduU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAg
ICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFT
dGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsK
LSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgfQot
ICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBl
ZExlc3NUaGFuU2lnblN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnLycpIHsKLSAgICAgICAg
ICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xl
YXIoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0
YXRlKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0
YURvdWJsZUVzY2FwZWRTdGF0ZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJ
Tl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpIHsKLSAgICAgICAgaWYgKGNj
ID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJyB8
fCBjYyA9PSAnLycgfHwgY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNj
KTsKLSAgICAgICAgICAgIGlmICh0ZW1wb3JhcnlCdWZmZXJJcyhzY3JpcHRUYWcubG9jYWxOYW1l
KCkpKQotICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRh
RG91YmxlRXNjYXBlZFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2Mg
PD0gJ1onKSB7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIG1f
dGVtcG9yYXJ5QnVmZmVyLmFwcGVuZCh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgQURW
QU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpOwotICAgICAgICB9IGVsc2Ug
aWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIo
Y2MpOwotICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0YXRlKTsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRT
dGF0ZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShCZWZvcmVB
dHRyaWJ1dGVOYW1lU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAn
XHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJy8n
KQotICAgICAgICAgICAgQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwotICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4o
RGF0YVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewot
ICAgICAgICAgICAgbV90b2tlbi0+YWRkTmV3QXR0cmlidXRlKCk7Ci0gICAgICAgICAgICBtX3Rv
a2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAnPCcgfHwgY2MgPT0g
Jz0nKQotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rv
a2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0
cmlidXRlTmFtZShjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0
ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0g
ICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShBdHRyaWJ1dGVOYW1lU3Rh
dGUpIHsKLSAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0g
J1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1
dGVOYW1lU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCi0gICAgICAgICAgICBB
RFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNj
ID09ICc9JykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0
ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIEVNSVRfQU5EX1JF
U1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0g
J1onKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUodG9Mb3dl
ckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wn
JyB8fCBjYyA9PSAnPCcgfHwgY2MgPT0gJz0nKQotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2MpOwot
ICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwotICAgICAgICB9Ci0g
ICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RB
VEUoKQotCi0gICAgQkVHSU5fU1RBVEUoQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUpIHsKLSAgICAg
ICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNj
ID09ICcgJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUp
OwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKFNl
bGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc9JykKLSAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSk7Ci0gICAgICAg
IGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRh
U3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7Ci0gICAg
ICAgICAgICBtX3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKLSAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgQURW
QU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JykKLSAgICAgICAgICAg
ICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgbV90b2tlbi0+YWRkTmV3QXR0cmli
dXRlKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2MpOwot
ICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwotICAgICAgICB9Ci0g
ICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RB
VEUoKQotCi0gICAgQkVHSU5fU1RBVEUoQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSkgewotICAg
ICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwg
Y2MgPT0gJyAnKQotICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0
YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKQotICAgICAgICAgICAgQURWQU5DRV9U
TyhBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gJyYnKQotICAgICAgICAgICAgUkVDT05TVU1FX0lOKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRT
dGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICdcJycpCi0gICAgICAgICAgICBBRFZBTkNF
X1RPKEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChj
YyA9PSAnPicpIHsKLSAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBF
TUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGlmIChjYyA9PSAnPCcgfHwgY2MgPT0gJz0nIHx8IGNjID09ICdgJykKLSAgICAgICAgICAg
ICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRy
aWJ1dGVWYWx1ZShjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlVW5x
dW90ZWRTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJF
R0lOX1NUQVRFKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUpIHsKLSAgICAgICAgaWYg
KGNjID09ICciJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1
b3RlZFN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyYnKSB7Ci0gICAgICAgICAgICBt
X2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gJyInOwotICAgICAgICAgICAgQURWQU5DRV9U
TyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUpOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjYyk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUpOwot
ICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0K
LSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoQXR0cmlidXRlVmFsdWVTaW5nbGVR
dW90ZWRTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJ1wnJykKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAo
Y2MgPT0gJyYnKSB7Ci0gICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0g
J1wnJzsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1
dGVWYWx1ZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvQXR0cmlidXRlVmFsdWUoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1
dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTog
SGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lO
X1NUQVRFKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0g
J1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQotICAg
ICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwotICAgICAgICBl
bHNlIGlmIChjYyA9PSAnJicpIHsKLSAgICAgICAgICAgIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFy
YWN0ZXIgPSAnPic7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUlu
QXR0cmlidXRlVmFsdWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKQotICAg
ICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JyB8fCBj
YyA9PSAnPScgfHwgY2MgPT0gJ2AnKQotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7
Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNjKTsKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKTsKLSAgICAgICAg
fQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICB9Ci0gICAgRU5E
X1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRl
VmFsdWVTdGF0ZSkgewotICAgICAgICBib29sIG5vdEVub3VnaENoYXJhY3RlcnMgPSBmYWxzZTsK
LSAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBjb25zdW1lSFRNTDVFbnRpdHkoc291cmNlLCBub3RF
bm91Z2hDaGFyYWN0ZXJzLCBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyKTsKLSAgICAgICAg
aWYgKG5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1
ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoJyYnKTsKLSAgICAgICAgZWxz
ZSBpZiAodmFsdWUgPCAweEZGRkYpCi0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJp
YnV0ZVZhbHVlKHZhbHVlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb0F0dHJpYnV0ZVZhbHVlKFUxNl9MRUFEKHZhbHVlKSk7Ci0gICAgICAgICAgICBtX3Rv
a2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKFUxNl9UUkFJTCh2YWx1ZSkpOwotICAgICAgICB9
Ci0gICAgICAgIC8vIFdlJ3JlIHN1cHBvc2VkIHRvIHN3aXRjaCBiYWNrIHRvIHRoZSBhdHRyaWJ1
dGUgdmFsdWUgc3RhdGUgdGhhdAotICAgICAgICAvLyB3ZSB3ZXJlIGluIHdoZW4gd2Ugd2VyZSBz
d2l0Y2hlZCBpbnRvIHRoaXMgc3RhdGUuICBSYXRoZXIgdGhhbgotICAgICAgICAvLyBrZWVwaW5n
IHRyYWNrIG9mIHRoaXMgZXhwbGljdGx5LCB3ZSBvYnNlcnZlIHRoYXQgdGhlIHByZXZpb3VzCi0g
ICAgICAgIC8vIHN0YXRlIGNhbiBiZSBkZXRlcm1pbmVkIGJ5IG1fYWRkaXRpb25hbEFsbG93ZWRD
aGFyYWN0ZXIuCi0gICAgICAgIGlmIChtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID09ICci
JykKLSAgICAgICAgICAgIFNXSVRDSF9UTyhBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRl
KTsKLSAgICAgICAgZWxzZSBpZiAobV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAnXCcn
KQotICAgICAgICAgICAgU1dJVENIX1RPKEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUp
OwotICAgICAgICBlbHNlIGlmIChtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID09ICc+JykK
LSAgICAgICAgICAgIFNXSVRDSF9UTyhBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3RhdGUpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0gICAg
RU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKEFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWRT
dGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9
PSAnXHgwQycgfHwgY2MgPT0gJyAnKQotICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRy
aWJ1dGVOYW1lU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCi0gICAgICAgICAg
ICBBRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYg
KGNjID09ICc+JykKLSAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAg
ICBSRUNPTlNVTUVfSU4oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKLSAgICAgICAgfQotICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICB9Ci0gICAgRU5EX1NUQVRF
KCkKLQotICAgIEJFR0lOX1NUQVRFKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSkgewotICAgICAg
ICBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAg
ICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgUkVDT05TVU1FX0lOKEJl
Zm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhh
bmRsZSBFT0YgcHJvcGVybHkuCi0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9T
VEFURShCb2d1c0NvbW1lbnRTdGF0ZSkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBzdGF0ZSBp
c24ndCBjb3JyZWN0IGJlY2F1c2Ugd2UnbGwgdGVybWluYXRlIHRoZQotICAgICAgICAvLyBjb21t
ZW50IGVhcmx5IGlmIHdlIGRvbid0IGhhdmUgdGhlIHdob2xlIGlucHV0IHN0cmVhbSBhdmFpbGFi
bGUuCi0gICAgICAgIG1fdG9rZW4tPmJlZ2luQ29tbWVudCgpOwotICAgICAgICB3aGlsZSAoIXNv
dXJjZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGNjID0gbV9pbnB1dFN0cmVhbVByZXByb2Nl
c3Nvci5uZXh0SW5wdXRDaGFyYWN0ZXIoKTsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnPicpCi0g
ICAgICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Ci0gICAgICAgICAg
ICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwotICAgICAgICAgICAgbV9pbnB1dFN0cmVh
bVByZXByb2Nlc3Nvci5hZHZhbmNlKHNvdXJjZSwgbV9saW5lTnVtYmVyKTsKLSAgICAgICAgICAg
IC8vIFdlIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlICh3aGljaCBpbmRpY2F0ZXMgdGhhdCB8c291
cmNlfCBpcwotICAgICAgICAgICAgLy8gZW1wdHkpIGJlY2F1c2UgaXQncyBjaGVja2VkIGJ5IHRo
ZSBsb29wIGNvbmRpdGlvbiBhYm92ZS4KLSAgICAgICAgfQotICAgICAgICBtX3N0YXRlID0gRGF0
YVN0YXRlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBF
T0YgcHJvcGVybHkuCi0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShN
YXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0ZSkgewotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgZGFzaERhc2hTdHJpbmcsICgiLS0iKSk7Ci0gICAgICAgIERFRklORV9TVEFUSUNf
TE9DQUwoU3RyaW5nLCBkb2N0eXBlU3RyaW5nLCAoImRvY3R5cGUiKSk7Ci0gICAgICAgIGlmIChj
YyA9PSAnLScpIHsKLSAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0
IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWQoZGFzaERhc2hTdHJpbmcpOwotICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7Ci0gICAgICAgICAgICAg
ICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoJy0nKTsKLSAgICAgICAgICAgICAgICBzb3VyY2Uu
YWR2YW5jZUFuZEFTU0VSVCgnLScpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luQ29t
bWVudCgpOwotICAgICAgICAgICAgICAgIFNXSVRDSF9UTyhDb21tZW50U3RhcnRTdGF0ZSk7Ci0g
ICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3Vn
aENoYXJhY3RlcnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENo
YXJhY3RlclRva2VuKHNvdXJjZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ0QnIHx8IGNj
ID09ICdkJykgewotICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQg
cmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZShkb2N0eXBlU3RyaW5nKTsKLSAg
ICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgewotICAg
ICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2Uoc291cmNlLCAi
ZG9jdHlwZSIpOwotICAgICAgICAgICAgICAgIFNXSVRDSF9UTyhET0NUWVBFU3RhdGUpOwotICAg
ICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hD
aGFyYWN0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFy
YWN0ZXJUb2tlbihzb3VyY2UpOwotICAgICAgICB9Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgICAgIC8vIEZJWE1FOiBXZSdyZSBzdGlsbCBtaXNzaW5nIHRoZSBiaXRzIGFib3V0IHRo
ZSBpbnNlcnRpb24gbW9kZSBiZWluZyBpbiBmb3JlaWduIGNvbnRlbnQ6Ci0gICAgICAgIC8vIGh0
dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdl
L3Rva2VuaXphdGlvbi5odG1sI21hcmt1cC1kZWNsYXJhdGlvbi1vcGVuLXN0YXRlCi0gICAgICAg
IGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgIFJFQ09OU1VNRV9JTihCb2d1c0NvbW1lbnRTdGF0
ZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShDb21tZW50U3Rh
cnRTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJy0nKQotICAgICAgICAgICAgQURWQU5DRV9U
TyhDb21tZW50U3RhcnREYXNoU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsK
LSAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBFTUlUX0FORF9SRVNV
TUVfSU4oRGF0YVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0
ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0g
ICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShDb21tZW50U3RhcnREYXNo
U3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICctJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8o
Q29tbWVudEVuZFN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAg
ICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERh
dGFTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRU
b0NvbW1lbnQoJy0nKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7
Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgfQotICAgIEVORF9TVEFURSgp
Ci0KLSAgICBCRUdJTl9TVEFURShDb21tZW50U3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICct
JykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZERhc2hTdGF0ZSk7Ci0gICAgICAg
IGVsc2UgewotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKLSAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICAvLyBG
SVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAg
IEJFR0lOX1NUQVRFKENvbW1lbnRFbmREYXNoU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICct
JykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZFN0YXRlKTsKLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAg
ICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RP
KENvbW1lbnRTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0Yg
cHJvcGVybHkuCi0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShDb21t
ZW50RW5kU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIEVNSVRf
QU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnXHgwOScg
fHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpIHsKLSAgICAgICAg
ICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1l
bnQoJy0nKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwotICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQ29tbWVudEVuZFNwYWNlU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICch
JykgewotICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oQ29tbWVudEVuZEJhbmdTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy0nKSB7
Ci0gICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9Db21tZW50KCctJyk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQo
Y2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kU3RhdGUpOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9D
b21tZW50KCctJyk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwot
ICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOwotICAgICAgICB9Ci0gICAgICAg
IC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RBVEUoKQot
Ci0gICAgQkVHSU5fU1RBVEUoQ29tbWVudEVuZEJhbmdTdGF0ZSkgewotICAgICAgICBpZiAoY2Mg
PT0gJy0nKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAg
ICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwotICAgICAgICAgICAgbV90
b2tlbi0+YXBwZW5kVG9Db21tZW50KCchJyk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1l
bnRFbmREYXNoU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAgICAg
ICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwotICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9Db21tZW50KCctJyk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0Nv
bW1lbnQoJyEnKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAg
Ly8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgfQotICAgIEVORF9TVEFURSgpCi0K
LSAgICBCRUdJTl9TVEFURShDb21tZW50RW5kU3BhY2VTdGF0ZSkgewotICAgICAgICBpZiAoY2Mg
PT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKSB7
Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwotICAgICAgICAgICAg
QURWQU5DRV9UTyhDb21tZW50RW5kU3BhY2VTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gJy0nKQotICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kRGFzaFN0YXRlKTsKLSAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lO
KERhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9Db21tZW50KGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKLSAg
ICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICB9Ci0g
ICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKERPQ1RZUEVTdGF0ZSkgewotICAgICAg
ICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2Mg
PT0gJyAnKQotICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFTmFtZVN0YXRlKTsK
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAg
ICAgUkVDT05TVU1FX0lOKEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUpOwotICAgICAgICB9Ci0gICAg
ICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RBVEUo
KQotCi0gICAgQkVHSU5fU1RBVEUoQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSkgewotICAgICAgICBp
ZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0g
JyAnKQotICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFTmFtZVN0YXRlKTsKLSAg
ICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgbV90
b2tlbi0+YmVnaW5ET0NUWVBFKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBBRFZBTkNF
X1RPKERPQ1RZUEVOYW1lU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+Jykgewot
ICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2lu
RE9DVFlQRSgpOwotICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAg
ICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKGNjKTsKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oRE9DVFlQRU5hbWVTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhh
bmRsZSBFT0YgcHJvcGVybHkuCi0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9T
VEFURShET0NUWVBFTmFtZVN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2Mg
PT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0gICAgICAgICAgICBBRFZB
TkNFX1RPKEFmdGVyRE9DVFlQRU5hbWVTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc+
JykKLSAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICBl
bHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb05hbWUodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9D
VFlQRU5hbWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb05hbWUoY2MpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRl
KTsKLSAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAg
ICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRU5hbWVT
dGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9
PSAnXHgwQycgfHwgY2MgPT0gJyAnKQotICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZ
UEVOYW1lU3RhdGUpOwotICAgICAgICBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgRU1JVF9B
TkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHB1YmxpY1N0cmluZywgKCJwdWJsaWMiKSk7Ci0gICAg
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3lzdGVtU3RyaW5nLCAoInN5c3Rl
bSIpKTsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnUCcgfHwgY2MgPT0gJ3AnKSB7Ci0gICAgICAg
ICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNl
Lmxvb2tBaGVhZElnbm9yaW5nQ2FzZShwdWJsaWNTdHJpbmcpOwotICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgewotICAgICAgICAgICAgICAg
ICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdub3JpbmdDYXNlKHNvdXJjZSwgInB1YmxpYyIp
OwotICAgICAgICAgICAgICAgICAgICBTV0lUQ0hfVE8oQWZ0ZXJET0NUWVBFUHVibGljS2V5d29y
ZFN0YXRlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRT
dHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBz
aG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOwotICAgICAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSAnUycgfHwgY2MgPT0gJ3MnKSB7Ci0gICAgICAgICAgICAgICAgU2VnbWVu
dGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZElnbm9y
aW5nQ2FzZShzeXN0ZW1TdHJpbmcpOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2Vn
bWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgewotICAgICAgICAgICAgICAgICAgICBhZHZhbmNlU3Ry
aW5nQW5kQVNTRVJUSWdub3JpbmdDYXNlKHNvdXJjZSwgInN5c3RlbSIpOwotICAgICAgICAgICAg
ICAgICAgICBTV0lUQ0hfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtS2V5d29yZFN0YXRlKTsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3Vn
aENoYXJhY3RlcnMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVy
ZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZW1p
dFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKLSAgICAgICAgfQotICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICB9Ci0gICAgRU5EX1NUQVRF
KCkKLQotICAgIEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVB1YmxpY0tleXdvcmRTdGF0ZSkgewot
ICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycg
fHwgY2MgPT0gJyAnKQotICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFUHVibGlj
SWRlbnRpZmllclN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKSB7Ci0gICAgICAg
ICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRl
bnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1
YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gJ1wnJykgewotICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIG1f
dG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICBB
RFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOwotICAg
ICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3Io
KTsKLSAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICBF
TUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJr
cygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7Ci0gICAgICAg
IH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgfQotICAgIEVO
RF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmll
clN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNj
ID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZURP
Q1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicp
IHsKLSAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5n
KCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyRG91Ymxl
UXVvdGVkU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKLSAgICAgICAg
ICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAg
ICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUp
OwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgZW1pdFBhcnNl
RXJyb3IoKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAg
ICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3Jj
ZVF1aXJrcygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgfQot
ICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShET0NUWVBFUHVibGljSWRlbnRpZmll
ckRvdWJsZVF1b3RlZFN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnIicpCi0gICAgICAgICAg
ICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7Ci0gICAgICAg
IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAg
ICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICBFTUlUX0FO
RF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvUHVibGljSWRlbnRpZmllcihjYyk7Ci0gICAgICAgICAgICBBRFZBTkNF
X1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOwotICAgICAgICB9
Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRf
U1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTaW5nbGVR
dW90ZWRTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJ1wnJykKLSAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQWZ0ZXJET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKTsKLSAgICAgICAgZWxzZSBp
ZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAg
ICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VN
RV9JTihEYXRhU3RhdGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9D
VFlQRVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgfQotICAgIEVORF9TVEFURSgp
Ci0KLSAgICBCRUdJTl9TVEFURShBZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpIHsK
LSAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMn
IHx8IGNjID09ICcgJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmV0d2VlbkRPQ1RZUEVQdWJs
aWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4n
KQotICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Ci0gICAgICAgIGVs
c2UgaWYgKGNjID09ICciJykgewotICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAg
ICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAg
ICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3Rh
dGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKLSAgICAgICAgICAgIGVtaXRQ
YXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9F
bXB0eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRp
ZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGVt
aXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwot
ICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgfQotICAgIEVORF9TVEFU
RSgpCi0KLSAgICBCRUdJTl9TVEFURShCZXR3ZWVuRE9DVFlQRVB1YmxpY0FuZFN5c3RlbUlkZW50
aWZpZXJzU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScg
fHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmV0
d2VlbkRPQ1RZUEVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlKTsKLSAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0
ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICciJykgewotICAgICAgICAgICAgbV90b2tlbi0+
c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gJ1wnJykgewotICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRl
bnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5
c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VR
dWlya3MoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwotICAg
ICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAg
ICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFU3lzdGVtS2V5d29y
ZFN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNj
ID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0gICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZURP
Q1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicp
IHsKLSAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5z
ZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgQURWQU5DRV9U
TyhET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSAnXCcnKSB7Ci0gICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAg
ICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRT
dGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICBlbWl0
UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAg
ICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPnNl
dEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRl
KTsKLSAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAg
ICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEJFR0lOX1NUQVRFKEJlZm9yZURPQ1RZUEVTeXN0
ZW1JZGVudGlmaWVyU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAn
XHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oQmVmb3JlRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7Ci0gICAgICAgIGlmIChjYyA9
PSAnIicpIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5
U3RyaW5nKCk7Ci0gICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVy
RG91YmxlUXVvdGVkU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKLSAg
ICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0g
ICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVk
U3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgZW1p
dFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0g
ICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5z
ZXRGb3JjZVF1aXJrcygpOwotICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0
ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0g
ICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShET0NUWVBFU3lzdGVtSWRl
bnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnIicpCi0gICAg
ICAgICAgICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7Ci0g
ICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3Io
KTsKLSAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7Ci0gICAgICAgICAgICBF
TUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIG1fdG9rZW4tPmFwcGVuZFRvU3lzdGVtSWRlbnRpZmllcihjYyk7Ci0gICAgICAgICAgICBB
RFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOwotICAg
ICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgIH0KLSAg
ICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJT
aW5nbGVRdW90ZWRTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJ1wnJykKLSAgICAgICAgICAg
IEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKLSAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAg
ICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKLSAgICAgICAgICAgIEVNSVRfQU5E
X1JFU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV90
b2tlbi0+YXBwZW5kVG9TeXN0ZW1JZGVudGlmaWVyKGNjKTsKLSAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7Ci0gICAgICAgIH0K
LSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgfQotICAgIEVORF9T
VEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3Rh
dGUpIHsKLSAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0g
J1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBF
U3lzdGVtSWRlbnRpZmllclN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQotICAg
ICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9n
dXNET0NUWVBFU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9G
IHByb3Blcmx5LgotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgQkVHSU5fU1RBVEUoQm9n
dXNET0NUWVBFU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIEVN
SVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwotICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9D
VFlQRVN0YXRlKTsKLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAg
fQotICAgIEVORF9TVEFURSgpCi0KLSAgICBCRUdJTl9TVEFURShDREFUQVNlY3Rpb25TdGF0ZSkg
ewotICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICBBRFZBTkNFX1RPKENEQVRBU2Vj
dGlvblN0YXRlKTsKLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIH0KLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotaW5saW5lIGJvb2wgSFRN
TDVMZXhlcjo6dGVtcG9yYXJ5QnVmZmVySXMoY29uc3QgU3RyaW5nJiBleHBlY3RlZFN0cmluZykK
LXsKLSAgICByZXR1cm4gdmVjdG9yRXF1YWxzU3RyaW5nKG1fdGVtcG9yYXJ5QnVmZmVyLCBleHBl
Y3RlZFN0cmluZyk7Ci19Ci0KLWlubGluZSB2b2lkIEhUTUw1TGV4ZXI6OmFkZFRvUG9zc2libGVF
bmRUYWcoVUNoYXIgY2MpCi17Ci0gICAgQVNTRVJUKGlzRW5kVGFnQnVmZmVyaW5nU3RhdGUobV9z
dGF0ZSkpOwotICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmFwcGVuZChjYyk7Ci19Ci0KLWlubGlu
ZSBib29sIEhUTUw1TGV4ZXI6OmlzQXBwcm9wcmlhdGVFbmRUYWcoKQotewotICAgIHJldHVybiBt
X2J1ZmZlcmVkRW5kVGFnTmFtZSA9PSBtX2FwcHJvcHJpYXRlRW5kVGFnTmFtZTsKLX0KLQotaW5s
aW5lIHZvaWQgSFRNTDVMZXhlcjo6ZW1pdENoYXJhY3RlcihVQ2hhciBjaGFyYWN0ZXIpCi17Ci0g
ICAgaWYgKG1fdG9rZW4tPnR5cGUoKSAhPSBIVE1MNVRva2VuOjpDaGFyYWN0ZXIpIHsKLSAgICAg
ICAgbV90b2tlbi0+YmVnaW5DaGFyYWN0ZXIoY2hhcmFjdGVyKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBtX3Rva2VuLT5hcHBlbmRUb0NoYXJhY3RlcihjaGFyYWN0ZXIpOwotfQotCi1p
bmxpbmUgdm9pZCBIVE1MNUxleGVyOjplbWl0Q29kZVBvaW50KHVuc2lnbmVkIHZhbHVlKQotewot
ICAgIGlmICh2YWx1ZSA8IDB4RkZGRikgewotICAgICAgICBlbWl0Q2hhcmFjdGVyKHZhbHVlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBlbWl0Q2hhcmFjdGVyKFUxNl9MRUFEKHZhbHVl
KSk7Ci0gICAgZW1pdENoYXJhY3RlcihVMTZfVFJBSUwodmFsdWUpKTsKLX0KLQotaW5saW5lIHZv
aWQgSFRNTDVMZXhlcjo6ZW1pdFBhcnNlRXJyb3IoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19Ci0KLWlubGluZSB2b2lkIEhUTUw1TGV4ZXI6OmVtaXRDdXJyZW50VG9rZW4oKQotewotICAg
IEFTU0VSVChtX3Rva2VuLT50eXBlKCkgIT0gSFRNTDVUb2tlbjo6VW5pbml0aWFsaXplZCk7Ci0g
ICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MNVRva2VuOjpTdGFydFRhZykKLSAgICAgICAg
bV9hcHByb3ByaWF0ZUVuZFRhZ05hbWUgPSBtX3Rva2VuLT5uYW1lKCk7Ci19Ci0KLWlubGluZSBi
b29sIEhUTUw1TGV4ZXI6OnNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKGNvbnN0IFNl
Z21lbnRlZFN0cmluZyYgc291cmNlKQotewotICAgIHJldHVybiBzb3VyY2UuaXNDbG9zZWQoKSAm
JiBtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVUb2tlbjo6Q2hhcmFjdGVyOwotfQotCi19Ci0KSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MNUxleGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUw1TGV4ZXIuaAkocmV2aXNpb24gNjE2NjMpCisrKyBXZWJDb3JlL2h0bWwvSFRNTDVMZXhl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSFRNTDVMZXhlcl9oCi0jZGVmaW5l
IEhUTUw1TGV4ZXJfaAotCi0jaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCi0jaW5jbHVkZSAiU2Vn
bWVudGVkU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEhUTUw1VG9rZW47
Ci0KLWNsYXNzIEhUTUw1TGV4ZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewotcHVibGljOgotICAg
IGVudW0gU3RhdGUgewotICAgICAgICBEYXRhU3RhdGUsCi0gICAgICAgIENoYXJhY3RlclJlZmVy
ZW5jZUluRGF0YVN0YXRlLAotICAgICAgICBSQ0RBVEFTdGF0ZSwKLSAgICAgICAgQ2hhcmFjdGVy
UmVmZXJlbmNlSW5SQ0RBVEFTdGF0ZSwKLSAgICAgICAgUkFXVEVYVFN0YXRlLAotICAgICAgICBT
Y3JpcHREYXRhU3RhdGUsCi0gICAgICAgIFBMQUlOVEVYVFN0YXRlLAotICAgICAgICBUYWdPcGVu
U3RhdGUsCi0gICAgICAgIEVuZFRhZ09wZW5TdGF0ZSwKLSAgICAgICAgVGFnTmFtZVN0YXRlLAot
ICAgICAgICBSQ0RBVEFMZXNzVGhhblNpZ25TdGF0ZSwKLSAgICAgICAgUkNEQVRBRW5kVGFnT3Bl
blN0YXRlLAotICAgICAgICBSQ0RBVEFFbmRUYWdOYW1lU3RhdGUsCi0gICAgICAgIFJBV1RFWFRM
ZXNzVGhhblNpZ25TdGF0ZSwKLSAgICAgICAgUkFXVEVYVEVuZFRhZ09wZW5TdGF0ZSwKLSAgICAg
ICAgUkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSwKLSAgICAgICAgU2NyaXB0RGF0YUxlc3NUaGFuU2ln
blN0YXRlLAotICAgICAgICBTY3JpcHREYXRhRW5kVGFnT3BlblN0YXRlLAotICAgICAgICBTY3Jp
cHREYXRhRW5kVGFnTmFtZVN0YXRlLAotICAgICAgICBTY3JpcHREYXRhRXNjYXBlU3RhcnRTdGF0
ZSwKLSAgICAgICAgU2NyaXB0RGF0YUVzY2FwZVN0YXJ0RGFzaFN0YXRlLAotICAgICAgICBTY3Jp
cHREYXRhRXNjYXBlZFN0YXRlLAotICAgICAgICBTY3JpcHREYXRhRXNjYXBlZERhc2hTdGF0ZSwK
LSAgICAgICAgU2NyaXB0RGF0YUVzY2FwZWREYXNoRGFzaFN0YXRlLAotICAgICAgICBTY3JpcHRE
YXRhRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlLAotICAgICAgICBTY3JpcHREYXRhRXNjYXBlZEVu
ZFRhZ09wZW5TdGF0ZSwKLSAgICAgICAgU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUs
Ci0gICAgICAgIFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlLAotICAgICAgICBTY3Jp
cHREYXRhRG91YmxlRXNjYXBlZFN0YXRlLAotICAgICAgICBTY3JpcHREYXRhRG91YmxlRXNjYXBl
ZERhc2hTdGF0ZSwKLSAgICAgICAgU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoRGFzaFN0YXRl
LAotICAgICAgICBTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlLAotICAg
ICAgICBTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUsCi0gICAgICAgIEJlZm9yZUF0dHJp
YnV0ZU5hbWVTdGF0ZSwKLSAgICAgICAgQXR0cmlidXRlTmFtZVN0YXRlLAotICAgICAgICBBZnRl
ckF0dHJpYnV0ZU5hbWVTdGF0ZSwKLSAgICAgICAgQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSwK
LSAgICAgICAgQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWRTdGF0ZSwKLSAgICAgICAgQXR0cmli
dXRlVmFsdWVTaW5nbGVRdW90ZWRTdGF0ZSwKLSAgICAgICAgQXR0cmlidXRlVmFsdWVVbnF1b3Rl
ZFN0YXRlLAotICAgICAgICBDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUs
Ci0gICAgICAgIEFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSwKLSAgICAgICAgU2VsZkNs
b3NpbmdTdGFydFRhZ1N0YXRlLAotICAgICAgICBCb2d1c0NvbW1lbnRTdGF0ZSwKLSAgICAgICAg
TWFya3VwRGVjbGFyYXRpb25PcGVuU3RhdGUsCi0gICAgICAgIENvbW1lbnRTdGFydFN0YXRlLAot
ICAgICAgICBDb21tZW50U3RhcnREYXNoU3RhdGUsCi0gICAgICAgIENvbW1lbnRTdGF0ZSwKLSAg
ICAgICAgQ29tbWVudEVuZERhc2hTdGF0ZSwKLSAgICAgICAgQ29tbWVudEVuZFN0YXRlLAotICAg
ICAgICBDb21tZW50RW5kQmFuZ1N0YXRlLAotICAgICAgICBDb21tZW50RW5kU3BhY2VTdGF0ZSwK
LSAgICAgICAgRE9DVFlQRVN0YXRlLAotICAgICAgICBCZWZvcmVET0NUWVBFTmFtZVN0YXRlLAot
ICAgICAgICBET0NUWVBFTmFtZVN0YXRlLAotICAgICAgICBBZnRlckRPQ1RZUEVOYW1lU3RhdGUs
Ci0gICAgICAgIEFmdGVyRE9DVFlQRVB1YmxpY0tleXdvcmRTdGF0ZSwKLSAgICAgICAgQmVmb3Jl
RE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSwKLSAgICAgICAgRE9DVFlQRVB1YmxpY0lkZW50
aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSwKLSAgICAgICAgRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJT
aW5nbGVRdW90ZWRTdGF0ZSwKLSAgICAgICAgQWZ0ZXJET0NUWVBFUHVibGljSWRlbnRpZmllclN0
YXRlLAotICAgICAgICBCZXR3ZWVuRE9DVFlQRVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzU3Rh
dGUsCi0gICAgICAgIEFmdGVyRE9DVFlQRVN5c3RlbUtleXdvcmRTdGF0ZSwKLSAgICAgICAgQmVm
b3JlRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSwKLSAgICAgICAgRE9DVFlQRVN5c3RlbUlk
ZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSwKLSAgICAgICAgRE9DVFlQRVN5c3RlbUlkZW50aWZp
ZXJTaW5nbGVRdW90ZWRTdGF0ZSwKLSAgICAgICAgQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmll
clN0YXRlLAotICAgICAgICBCb2d1c0RPQ1RZUEVTdGF0ZSwKLSAgICAgICAgQ0RBVEFTZWN0aW9u
U3RhdGUsCi0gICAgfTsKLQotICAgIEhUTUw1TGV4ZXIoKTsKLSAgICB+SFRNTDVMZXhlcigpOwot
Ci0gICAgdm9pZCByZXNldCgpOwotCi0gICAgLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUg
aWYgaXQgZW1pdHMgYSB0b2tlbi4gIE90aGVyd2lzZSwgY2FsbGVycwotICAgIC8vIG11c3QgcHJv
dmlkZSB0aGUgc2FtZSAoaW4gcHJvZ3Jlc3MpIHRva2VuIG9uIHRoZSBuZXh0IGNhbGwgKHVubGVz
cwotICAgIC8vIHRoZXkgY2FsbCByZXNldCgpIGZpcnN0KS4KLSAgICBib29sIG5leHRUb2tlbihT
ZWdtZW50ZWRTdHJpbmcmLCBIVE1MNVRva2VuJik7Ci0KLSAgICBpbnQgbGluZU51bWJlcigpIGNv
bnN0IHsgcmV0dXJuIG1fbGluZU51bWJlcjsgfQotICAgIGludCBjb2x1bW5OdW1iZXIoKSBjb25z
dCB7IHJldHVybiAxOyB9IC8vIE1hdGNoZXMgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmggYmVo
YXZpb3IuCi0KLSAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAg
ICB2b2lkIHNldFN0YXRlKFN0YXRlIHN0YXRlKSB7IG1fc3RhdGUgPSBzdGF0ZTsgfQotCi0gICAg
Ly8gSGFjayB0byBza2lwIGxlYWRpbmcgbmV3bGluZSBpbiA8cHJlPi88bGlzdGluZz4gZm9yIGF1
dGhvcmluZyBlYXNlLgotICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBw
cy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3Rva2VuaXphdGlvbi5odG1sI3BhcnNpbmctbWFpbi1p
bmJvZHkKLSAgICB2b2lkIHNraXBMZWFkaW5nTmV3TGluZUZvckxpc3RpbmcoKSB7IG1fc2tpcExl
YWRpbmdOZXdMaW5lRm9yTGlzdGluZyA9IHRydWU7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBodHRw
Oi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNwcmVwcm9jZXNz
aW5nLXRoZS1pbnB1dC1zdHJlYW0KLSAgICBjbGFzcyBJbnB1dFN0cmVhbVByZXByb2Nlc3NvciA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7Ci0gICAgcHVibGljOgotICAgICAgICBJbnB1dFN0cmVhbVBy
ZXByb2Nlc3NvcigpCi0gICAgICAgICAgICA6IG1fbmV4dElucHV0Q2hhcmFjdGVyKCdcMCcpCi0g
ICAgICAgICAgICAsIG1fc2tpcE5leHROZXdMaW5lKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAg
IH0KLQotICAgICAgICBVQ2hhciBuZXh0SW5wdXRDaGFyYWN0ZXIoKSBjb25zdCB7IHJldHVybiBt
X25leHRJbnB1dENoYXJhY3RlcjsgfQotCi0gICAgICAgIC8vIFJldHVybnMgd2hldGhlciB3ZSBz
dWNjZWVkZWQgaW4gcGVla2luZyBhdCB0aGUgbmV4dCBjaGFyYWN0ZXIuCi0gICAgICAgIC8vIFRo
ZSBvbmx5IHdheSB3ZSBjYW4gZmFpbCB0byBwZWVrIGlzIGlmIHRoZXJlIGFyZSBubyBtb3JlCi0g
ICAgICAgIC8vIGNoYXJhY3RlcnMgaW4gfHNvdXJjZXwgKGFmdGVyIGNvbGxhcHNpbmcgXHJcbiwg
ZXRjKS4KLSAgICAgICAgYm9vbCBwZWVrKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBpbnQmIGxp
bmVOdW1iZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fbmV4dElucHV0Q2hhcmFjdGVyID0g
KnNvdXJjZTsKLSAgICAgICAgICAgIGlmIChtX25leHRJbnB1dENoYXJhY3RlciA9PSAnXG4nICYm
IG1fc2tpcE5leHROZXdMaW5lKSB7Ci0gICAgICAgICAgICAgICAgbV9za2lwTmV4dE5ld0xpbmUg
PSBmYWxzZTsKLSAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZVBhc3ROZXdsaW5lKGxpbmVO
dW1iZXIpOwotICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgbV9uZXh0SW5wdXRDaGFy
YWN0ZXIgPSAqc291cmNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1fbmV4dElu
cHV0Q2hhcmFjdGVyID09ICdccicpIHsKLSAgICAgICAgICAgICAgICBtX25leHRJbnB1dENoYXJh
Y3RlciA9ICdcbic7Ci0gICAgICAgICAgICAgICAgbV9za2lwTmV4dE5ld0xpbmUgPSB0cnVlOwot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX3NraXBOZXh0TmV3TGluZSA9
IGZhbHNlOwotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgc3BlYyBpbmRpY2F0ZXMgdGhh
dCB0aGUgc3Vycm9nYXRlIHBhaXIgcmFuZ2UgYXMgd2VsbCBhcwotICAgICAgICAgICAgICAgIC8v
IGEgbnVtYmVyIG9mIHNwZWNpZmljIGNoYXJhY3RlciB2YWx1ZXMgYXJlIHBhcnNlIGVycm9ycyBh
bmQgc2hvdWxkIGJlIHJlcGxhY2VkCi0gICAgICAgICAgICAgICAgLy8gYnkgdGhlIHJlcGxhY2Vt
ZW50IGNoYXJhY3Rlci4gV2Ugc3VzcGVjdCB0aGlzIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBzcGVj
IGFzIGRvaW5nCi0gICAgICAgICAgICAgICAgLy8gdGhhdCBmaWx0ZXJpbmcgYnJlYWtzIHN1cnJv
Z2F0ZSBwYWlyIGhhbmRsaW5nIGFuZCBjYXVzZXMgdXMgbm90IHRvIG1hdGNoIE1pbmVmaWVsZC4K
LSAgICAgICAgICAgICAgICBpZiAobV9uZXh0SW5wdXRDaGFyYWN0ZXIgPT0gJ1wwJykKLSAgICAg
ICAgICAgICAgICAgICAgbV9uZXh0SW5wdXRDaGFyYWN0ZXIgPSAweEZGRkQ7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJl
dHVybnMgd2hldGhlciB0aGVyZSBhcmUgbW9yZSBjaGFyYWN0ZXJzIGluIHxzb3VyY2V8IGFmdGVy
IGFkdmFuY2luZy4KLSAgICAgICAgYm9vbCBhZHZhbmNlKFNlZ21lbnRlZFN0cmluZyYgc291cmNl
LCBpbnQmIGxpbmVOdW1iZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNl
KGxpbmVOdW1iZXIpOwotICAgICAgICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHBlZWsoc291cmNlLCBs
aW5lTnVtYmVyKTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgLy8gaHR0cDov
L3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jbmV4dC1pbnB1dC1j
aGFyYWN0ZXIKLSAgICAgICAgVUNoYXIgbV9uZXh0SW5wdXRDaGFyYWN0ZXI7Ci0gICAgICAgIGJv
b2wgbV9za2lwTmV4dE5ld0xpbmU7Ci0gICAgfTsKLQotICAgIGlubGluZSB2b2lkIGVtaXRDaGFy
YWN0ZXIoVUNoYXIpOwotICAgIGlubGluZSB2b2lkIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgaW5s
aW5lIHZvaWQgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgIGlubGluZSB2b2lkIGVtaXRDb2RlUG9p
bnQodW5zaWduZWQpOwotCi0gICAgaW5saW5lIGJvb2wgcHJvY2Vzc0VudGl0eShTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSk7Ci0KLSAgICBpbmxpbmUgYm9vbCB0ZW1wb3JhcnlCdWZmZXJJcyhjb25z
dCBTdHJpbmcmKTsKLQotICAgIC8vIFNvbWV0aW1lcyB3ZSBzcGVjdWxhdGl2ZWx5IGNvbnN1bWUg
aW5wdXQgY2hhcmFjdGVycyBhbmQgd2UgZG9uJ3QKLSAgICAvLyBrbm93IHdoZXRoZXIgdGhleSBy
ZXByZXNlbnQgZW5kIHRhZ3Mgb3IgUkNEQVRBLCBldGMuICBUaGVzZQotICAgIC8vIGZ1bmN0aW9u
cyBoZWxwIG1hbmFnZSB0aGVzZSBzdGF0ZS4KLSAgICBpbmxpbmUgdm9pZCBhZGRUb1Bvc3NpYmxl
RW5kVGFnKFVDaGFyIGNjKTsKLSAgICBpbmxpbmUgYm9vbCBpc0FwcHJvcHJpYXRlRW5kVGFnKCk7
Ci0KLSAgICBpbmxpbmUgYm9vbCBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihjb25z
dCBTZWdtZW50ZWRTdHJpbmcmKTsKLQotICAgIFN0YXRlIG1fc3RhdGU7Ci0KLSAgICBWZWN0b3I8
VUNoYXIsIDMyPiBtX2FwcHJvcHJpYXRlRW5kVGFnTmFtZTsKLQotICAgIC8vIG1fdG9rZW4gaXMg
b3duZWQgYnkgdGhlIGNhbGxlci4gIElmIG5leHRUb2tlbiBpcyBub3Qgb24gdGhlIHN0YWNrLAot
ICAgIC8vIHRoaXMgbWVtYmVyIG1pZ2h0IGJlIHBvaW50aW5nIHRvIHVuYWxsb2NhdGVkIG1lbW9y
eS4KLSAgICBIVE1MNVRva2VuKiBtX3Rva2VuOwotICAgIGludCBtX2xpbmVOdW1iZXI7Ci0KLSAg
ICBib29sIG1fc2tpcExlYWRpbmdOZXdMaW5lRm9yTGlzdGluZzsKLQotICAgIC8vIGh0dHA6Ly93
d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3RlbXBvcmFyeS1idWZm
ZXIKLSAgICBWZWN0b3I8VUNoYXIsIDMyPiBtX3RlbXBvcmFyeUJ1ZmZlcjsKLQotICAgIC8vIFdl
IG9jY2F0aW9uYWxseSB3YW50IHRvIGVtaXQgYm90aCBhIGNoYXJhY3RlciB0b2tlbiBhbmQgYW4g
ZW5kIHRhZwotICAgIC8vIHRva2VuIChlLmcuLCB3aGVuIGxleGluZyBzY3JpcHQpLiAgV2UgYnVm
ZmVyIHRoZSBuYW1lIG9mIHRoZSBlbmQgdGFnCi0gICAgLy8gdG9rZW4gaGVyZSBzbyB3ZSByZW1l
bWJlciBpdCBuZXh0IHRpbWUgd2UgcmUtZW50ZXIgdGhlIGxleGVyLgotICAgIFZlY3RvcjxVQ2hh
ciwgMzI+IG1fYnVmZmVyZWRFbmRUYWdOYW1lOwotCi0gICAgLy8gaHR0cDovL3d3dy53aGF0d2cu
b3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jYWRkaXRpb25hbC1hbGxvd2VkLWNoYXJh
Y3RlcgotICAgIFVDaGFyIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXI7Ci0KLSAgICAvLyBo
dHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNwcmVwcm9j
ZXNzaW5nLXRoZS1pbnB1dC1zdHJlYW0KLSAgICBJbnB1dFN0cmVhbVByZXByb2Nlc3NvciBtX2lu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yOwotfTsKLQotfQotCi0jZW5kaWYKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTDVQcmVsb2FkU2Nhbm5lci5jcHAJKHJldmlzaW9uIDYxNjYzKQorKysgV2ViQ29yZS9odG1s
L0hUTUw1UHJlbG9hZFNjYW5uZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksOCArMTU5LDgg
QEAgdm9pZCBIVE1MNVByZWxvYWRTY2FubmVyOjpwcm9jZXNzVG9rZW4oKQogICAgIGlmICh0YXNr
LnRhZ05hbWUoKSA9PSBzY3JpcHRUYWcpIHsKICAgICAgICAgLy8gVGhlIHRyZWUgYnVpbGRlciBo
YW5kbGVzIHNjcmlwdFRhZyBzZXBhcmF0ZWx5IGZyb20gdGhlIG90aGVyIGxleGVyCiAgICAgICAg
IC8vIHN0YXRlIGFkanVzdG1lbnRzLCBzbyB3ZSBuZWVkIHRvIGhhbmRsZSBpdCBzZXBhcmF0ZWx5
IHRvby4KLSAgICAgICAgQVNTRVJUKG1fbGV4ZXIuc3RhdGUoKSA9PSBIVE1MNUxleGVyOjpEYXRh
U3RhdGUpOwotICAgICAgICBtX2xleGVyLnNldFN0YXRlKEhUTUw1TGV4ZXI6OlNjcmlwdERhdGFT
dGF0ZSk7CisgICAgICAgIEFTU0VSVChtX2xleGVyLnN0YXRlKCkgPT0gSFRNTFRva2VuaXplcjo6
RGF0YVN0YXRlKTsKKyAgICAgICAgbV9sZXhlci5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpTY3Jp
cHREYXRhU3RhdGUpOwogICAgIH0KIAogICAgIGlmICh0YXNrLnRhZ05hbWUoKSA9PSBib2R5VGFn
KQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUw1UHJlbG9hZFNjYW5uZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTDVQcmVsb2FkU2Nhbm5lci5oCShyZXZpc2lvbiA2MTY2MykKKysr
IFdlYkNvcmUvaHRtbC9IVE1MNVByZWxvYWRTY2FubmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDcgKzI4LDcgQEAKICNkZWZpbmUgSFRNTDVQcmVsb2FkU2Nhbm5lcl9oCiAKICNpbmNsdWRlICJD
U1NQcmVsb2FkU2Nhbm5lci5oIgotI2luY2x1ZGUgIkhUTUw1TGV4ZXIuaCIKKyNpbmNsdWRlICJI
VE1MVG9rZW5pemVyLmgiCiAjaW5jbHVkZSAiSFRNTDVUb2tlbi5oIgogI2luY2x1ZGUgIlNlZ21l
bnRlZFN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNTIsNyArNTIs
NyBAQCBwcml2YXRlOgogCiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CiAgICAgU2VnbWVudGVk
U3RyaW5nIG1fc291cmNlOwotICAgIEhUTUw1TGV4ZXIgbV9sZXhlcjsKKyAgICBIVE1MVG9rZW5p
emVyIG1fbGV4ZXI7CiAgICAgSFRNTDVUb2tlbiBtX3Rva2VuOwogICAgIENTU1ByZWxvYWRTY2Fu
bmVyIG1fY3NzU2Nhbm5lcjsKICAgICBib29sIG1fYm9keVNlZW47CkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUw1
VHJlZUJ1aWxkZXIuY3BwCShyZXZpc2lvbiA2MTY2MykKKysrIFdlYkNvcmUvaHRtbC9IVE1MNVRy
ZWVCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUg
IkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKLSNpbmNsdWRlICJIVE1MNUxleGVyLmgiCisjaW5jbHVkZSAiSFRNTFRva2VuaXplci5o
IgogI2luY2x1ZGUgIkhUTUw1VG9rZW4uaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuaCIKQEAgLTQ1LDcgKzQ1LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIGNvbnN0IGludCB1bmluaXRpYWxpemVk
TGluZU51bWJlclZhbHVlID0gLTE7CiAKLUhUTUw1VHJlZUJ1aWxkZXI6OkhUTUw1VHJlZUJ1aWxk
ZXIoSFRNTDVMZXhlciogbGV4ZXIsIEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgcmVwb3J0
RXJyb3JzKQorSFRNTDVUcmVlQnVpbGRlcjo6SFRNTDVUcmVlQnVpbGRlcihIVE1MVG9rZW5pemVy
KiBsZXhlciwgSFRNTERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCByZXBvcnRFcnJvcnMpCiAgICAg
OiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9yZXBvcnRFcnJvcnMocmVwb3J0RXJyb3Jz
KQogICAgICwgbV9pc1BhdXNlZChmYWxzZSkKQEAgLTYwLDcgKzYwLDcgQEAgSFRNTDVUcmVlQnVp
bGRlcjo6SFRNTDVUcmVlQnVpbGRlcihIVE1MNQogCiAvLyBGSVhNRTogTWVtYmVyIHZhcmlhYmxl
cyBzaG91bGQgYmUgZ3JvdXBlZCBpbnRvIHNlbGYtaW5pdGlhbGl6aW5nIHN0cnVjdHMgdG8KIC8v
IG1pbmltaXplIGNvZGUgZHVwbGljYXRpb24gYmV0d2VlbiB0aGVzZSBjb25zdHJ1Y3RvcnMuCi1I
VE1MNVRyZWVCdWlsZGVyOjpIVE1MNVRyZWVCdWlsZGVyKEhUTUw1TGV4ZXIqIGxleGVyLCBEb2N1
bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlw
dGluZ1Blcm1pc3Npb24pCitIVE1MNVRyZWVCdWlsZGVyOjpIVE1MNVRyZWVCdWlsZGVyKEhUTUxU
b2tlbml6ZXIqIGxleGVyLCBEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRnJhZ21lbnRTY3Jp
cHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCiAgICAgOiBtX2RvY3VtZW50KGZy
YWdtZW50LT5kb2N1bWVudCgpKQogICAgICwgbV9yZXBvcnRFcnJvcnMoZmFsc2UpIC8vIEZJWE1F
OiBXaHkgbm90IHJlcG9ydCBlcnJvcnMgaW4gZnJhZ21lbnRzPwogICAgICwgbV9pc1BhdXNlZChm
YWxzZSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0VG9PbGRTdHlsZShI
VE1MNVRva2VuCiB2b2lkIEhUTUw1VHJlZUJ1aWxkZXI6OmhhbmRsZVNjcmlwdFN0YXJ0VGFnKCkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOyAvLyBUaGUgSFRNTCBmcmdtZW50IGNhc2U/Ci0gICAg
bV9sZXhlci0+c2V0U3RhdGUoSFRNTDVMZXhlcjo6U2NyaXB0RGF0YVN0YXRlKTsKKyAgICBtX2xl
eGVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpTY3JpcHREYXRhU3RhdGUpOwogICAgIG5vdElt
cGxlbWVudGVkKCk7IC8vIFNhdmUgaW5zZXJ0aW9uIG1vZGUuCiB9CiAKQEAgLTE1MSwxNyArMTUx
LDE3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gSFRNTDVUcmVlQnVpbGRlcjo6dGEKICAgICByZXR1
cm4gbV9zY3JpcHRUb1Byb2Nlc3MucmVsZWFzZSgpOwogfQogCi1IVE1MNUxleGVyOjpTdGF0ZSBI
VE1MNVRyZWVCdWlsZGVyOjphZGp1c3RlZExleGVyU3RhdGUoSFRNTDVMZXhlcjo6U3RhdGUgc3Rh
dGUsIGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgRnJhbWUqIGZyYW1lKQorSFRNTFRva2Vu
aXplcjo6U3RhdGUgSFRNTDVUcmVlQnVpbGRlcjo6YWRqdXN0ZWRMZXhlclN0YXRlKEhUTUxUb2tl
bml6ZXI6OlN0YXRlIHN0YXRlLCBjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUsIEZyYW1lKiBm
cmFtZSkKIHsKICAgICBpZiAodGFnTmFtZSA9PSB0ZXh0YXJlYVRhZyB8fCB0YWdOYW1lID09IHRp
dGxlVGFnKQotICAgICAgICByZXR1cm4gSFRNTDVMZXhlcjo6UkNEQVRBU3RhdGU7CisgICAgICAg
IHJldHVybiBIVE1MVG9rZW5pemVyOjpSQ0RBVEFTdGF0ZTsKIAogICAgIGlmICh0YWdOYW1lID09
IHN0eWxlVGFnIHx8IHRhZ05hbWUgPT0gaWZyYW1lVGFnIHx8IHRhZ05hbWUgPT0geG1wVGFnIHx8
IHRhZ05hbWUgPT0gbm9lbWJlZFRhZwogICAgICAgICB8fCB0YWdOYW1lID09IG5vZnJhbWVzVGFn
IHx8ICh0YWdOYW1lID09IG5vc2NyaXB0VGFnICYmIGlzU2NyaXB0aW5nRmxhZ0VuYWJsZWQoZnJh
bWUpKSkKLSAgICAgICAgcmV0dXJuIEhUTUw1TGV4ZXI6OlJBV1RFWFRTdGF0ZTsKKyAgICAgICAg
cmV0dXJuIEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRTdGF0ZTsKIAogICAgIGlmICh0YWdOYW1lID09
IHBsYWludGV4dFRhZykKLSAgICAgICAgcmV0dXJuIEhUTUw1TGV4ZXI6OlBMQUlOVEVYVFN0YXRl
OworICAgICAgICByZXR1cm4gSFRNTFRva2VuaXplcjo6UExBSU5URVhUU3RhdGU7CiAKICAgICBy
ZXR1cm4gc3RhdGU7CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmgJKHJldmlzaW9uIDYx
NjYzKQorKysgV2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBIVE1MNVRyZWVCdWlsZGVyX2gKIAogI2luY2x1ZGUg
IkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIgotI2luY2x1ZGUgIkhUTUw1TGV4ZXIuaCIK
KyNpbmNsdWRlICJIVE1MVG9rZW5pemVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBA
IC00OCw4ICs0OCw4IEBAIGNsYXNzIE5vZGU7CiBjbGFzcyBIVE1MNVRyZWVCdWlsZGVyIDogcHVi
bGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICAvLyBGSVhNRTogUmVwbGFjZSBjb25zdHJ1
Y3RvcnMgd2l0aCBjcmVhdGUoKSBmdW5jdGlvbnMgcmV0dXJuaW5nIFBhc3NPd25QdHJzCi0gICAg
SFRNTDVUcmVlQnVpbGRlcihIVE1MNUxleGVyKiwgSFRNTERvY3VtZW50KiwgYm9vbCByZXBvcnRF
cnJvcnMpOwotICAgIEhUTUw1VHJlZUJ1aWxkZXIoSFRNTDVMZXhlciosIERvY3VtZW50RnJhZ21l
bnQqLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24pOworICAgIEhUTUw1VHJlZUJ1aWxkZXIo
SFRNTFRva2VuaXplciosIEhUTUxEb2N1bWVudCosIGJvb2wgcmVwb3J0RXJyb3JzKTsKKyAgICBI
VE1MNVRyZWVCdWlsZGVyKEhUTUxUb2tlbml6ZXIqLCBEb2N1bWVudEZyYWdtZW50KiwgRnJhZ21l
bnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKICAgICB+SFRNTDVUcmVlQnVpbGRlcigpOwogCiAgICAg
dm9pZCBzZXRQYXVzZWQoYm9vbCBwYXVzZWQpIHsgbV9pc1BhdXNlZCA9IHBhdXNlZDsgfQpAQCAt
NjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gRG9uZSwgY2xvc2UgYW55IG9wZW4gdGFncywg
ZXRjLgogICAgIHZvaWQgZmluaXNoZWQoKTsKIAotICAgIHN0YXRpYyBIVE1MNUxleGVyOjpTdGF0
ZSBhZGp1c3RlZExleGVyU3RhdGUoSFRNTDVMZXhlcjo6U3RhdGUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdGFnTmFtZSwgRnJhbWUqKTsKKyAgICBzdGF0aWMgSFRNTFRva2VuaXplcjo6U3RhdGUgYWRq
dXN0ZWRMZXhlclN0YXRlKEhUTUxUb2tlbml6ZXI6OlN0YXRlLCBjb25zdCBBdG9taWNTdHJpbmcm
IHRhZ05hbWUsIEZyYW1lKik7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGRpcnR5LCByb3R0
ZW4gaGFjayB0byBrZWVwIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgaGFwcHkKICAgICAvLyB1bnRp
bCB3ZSBzdG9wIHVzaW5nIHRoZSBsZWdhY3kgcGFyc2VyLiBETyBOT1QgQ0FMTCBUSElTIE1FVEhP
RC4KQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEhUTUw1IHNwZWMgcmVxdWly
ZXMgdGhhdCB3ZSBiZSBhYmxlIHRvIGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhlIGxleGVyCiAgICAg
Ly8gZnJvbSB3aXRoaW4gcGFyc2VyIGFjdGlvbnMuCi0gICAgSFRNTDVMZXhlciogbV9sZXhlcjsK
KyAgICBIVE1MVG9rZW5pemVyKiBtX2xleGVyOwogCiAgICAgLy8gV2UncmUgcmUtdXNpbmcgbG9n
aWMgZnJvbSB0aGUgb2xkIExlZ2FjeUhUTUxUcmVlQ29uc3RydWN0b3Igd2hpbGUgdGhpcyBjbGFz
cyBpcyBiZWluZyB3cml0dGVuLgogICAgIE93blB0cjxMZWdhY3lIVE1MVHJlZUNvbnN0cnVjdG9y
PiBtX2xlZ2FjeVRyZWVDb25zdHJ1Y3RvcjsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5p
emVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAJKHJl
dmlzaW9uIDYxNjYzKQkoZnJvbSBXZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5jcHA6NjE2NjMpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxNDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4gaHR0
cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSFRNTDVMZXhlci5o
IgorCisjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCisjaW5jbHVkZSAiSFRNTDVFbnRpdHlQYXJz
ZXIuaCIKKyNpbmNsdWRlICJIVE1MNVRva2VuLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
KyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V1RGOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CisKK25hbWVzcGFjZSB7CisKK2lubGluZSBVQ2hhciB0b0xvd2VyQ2FzZShVQ2hhciBjYykKK3sK
KyAgICBBU1NFUlQoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJyk7CisgICAgY29uc3QgaW50IGxvd2Vy
Q2FzZU9mZnNldCA9IDB4MjA7CisgICAgcmV0dXJuIGNjICsgbG93ZXJDYXNlT2Zmc2V0OworfQor
CitpbmxpbmUgdm9pZCBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdub3JpbmdDYXNlKFNlZ21lbnRl
ZFN0cmluZyYgc291cmNlLCBjb25zdCBjaGFyKiBleHBlY3RlZENoYXJhY3RlcnMpCit7CisgICAg
d2hpbGUgKCpleHBlY3RlZENoYXJhY3RlcnMpCisgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNT
RVJUSWdub3JpbmdDYXNlKCpleHBlY3RlZENoYXJhY3RlcnMrKyk7Cit9CisKK2lubGluZSBib29s
IHZlY3RvckVxdWFsc1N0cmluZyhjb25zdCBWZWN0b3I8VUNoYXIsIDMyPiYgdmVjdG9yLCBjb25z
dCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBpZiAodmVjdG9yLnNpemUoKSAhPSBzdHJpbmcubGVu
Z3RoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjb25zdCBVQ2hhciogc3RyaW5nRGF0
YSA9IHN0cmluZy5jaGFyYWN0ZXJzKCk7CisgICAgY29uc3QgVUNoYXIqIHZlY3RvckRhdGEgPSB2
ZWN0b3IuZGF0YSgpOworICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhIGhpZ2hlci1sZXZlbCBmdW5j
dGlvbiB3ZSBzaG91bGQgYmUgY2FsbGluZyBoZXJlPworICAgIHJldHVybiAhbWVtY21wKHN0cmlu
Z0RhdGEsIHZlY3RvckRhdGEsIHZlY3Rvci5zaXplKCkgKiBzaXplb2YoVUNoYXIpKTsKK30KKwor
aW5saW5lIGJvb2wgaXNFbmRUYWdCdWZmZXJpbmdTdGF0ZShIVE1MNUxleGVyOjpTdGF0ZSBzdGF0
ZSkKK3sKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBIVE1MNUxleGVyOjpSQ0RBVEFF
bmRUYWdPcGVuU3RhdGU6CisgICAgY2FzZSBIVE1MNUxleGVyOjpSQ0RBVEFFbmRUYWdOYW1lU3Rh
dGU6CisgICAgY2FzZSBIVE1MNUxleGVyOjpSQVdURVhURW5kVGFnT3BlblN0YXRlOgorICAgIGNh
c2UgSFRNTDVMZXhlcjo6UkFXVEVYVEVuZFRhZ05hbWVTdGF0ZToKKyAgICBjYXNlIEhUTUw1TGV4
ZXI6OlNjcmlwdERhdGFFbmRUYWdPcGVuU3RhdGU6CisgICAgY2FzZSBIVE1MNUxleGVyOjpTY3Jp
cHREYXRhRW5kVGFnTmFtZVN0YXRlOgorICAgIGNhc2UgSFRNTDVMZXhlcjo6U2NyaXB0RGF0YUVz
Y2FwZWRFbmRUYWdPcGVuU3RhdGU6CisgICAgY2FzZSBIVE1MNUxleGVyOjpTY3JpcHREYXRhRXNj
YXBlZEVuZFRhZ05hbWVTdGF0ZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworfQorCitIVE1MNUxleGVyOjpIVE1M
NUxleGVyKCkKK3sKKyAgICByZXNldCgpOworfQorCitIVE1MNUxleGVyOjp+SFRNTDVMZXhlcigp
Cit7Cit9CisKK3ZvaWQgSFRNTDVMZXhlcjo6cmVzZXQoKQoreworICAgIG1fc3RhdGUgPSBEYXRh
U3RhdGU7CisgICAgbV90b2tlbiA9IDA7CisgICAgbV9saW5lTnVtYmVyID0gMDsKKyAgICBtX3Nr
aXBMZWFkaW5nTmV3TGluZUZvckxpc3RpbmcgPSBmYWxzZTsKKyAgICBtX2FkZGl0aW9uYWxBbGxv
d2VkQ2hhcmFjdGVyID0gJ1wwJzsKK30KKworaW5saW5lIGJvb2wgSFRNTDVMZXhlcjo6cHJvY2Vz
c0VudGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKK3sKKyAgICBib29sIG5vdEVub3VnaENo
YXJhY3RlcnMgPSBmYWxzZTsKKyAgICB1bnNpZ25lZCB2YWx1ZSA9IGNvbnN1bWVIVE1MNUVudGl0
eShzb3VyY2UsIG5vdEVub3VnaENoYXJhY3RlcnMpOworICAgIGlmIChub3RFbm91Z2hDaGFyYWN0
ZXJzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgZW1p
dENoYXJhY3RlcignJicpOworICAgIGVsc2UKKyAgICAgICAgZW1pdENvZGVQb2ludCh2YWx1ZSk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNpZiBDT01QSUxFUihNU1ZDKQorLy8gV2UgbmVlZCB0
byBkaXNhYmxlIHRoZSAidW5yZWFjaGFibGUgY29kZSIgd2FybmluZyBiZWNhdXNlIHdlIHdhbnQg
dG8gYXNzZXJ0CisvLyB0aGF0IHNvbWUgY29kZSBwb2ludHMgYXJlbid0IHJlYWNoZWQgaW4gdGhl
IHN0YXRlIG1hY2hpbmUuCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDcwMikKKyNlbmRpZgor
CisjZGVmaW5lIEJFR0lOX1NUQVRFKHN0YXRlTmFtZSkgY2FzZSBzdGF0ZU5hbWU6IHN0YXRlTmFt
ZToKKyNkZWZpbmUgRU5EX1NUQVRFKCkgQVNTRVJUX05PVF9SRUFDSEVEKCk7IGJyZWFrOworCisv
LyBXZSB1c2UgdGhpcyBtYWNybyB3aGVuIHRoZSBIVE1MNSBzcGVjIHNheXMgInJlY29uc3VtZSB0
aGUgY3VycmVudCBpbnB1dAorLy8gY2hhcmFjdGVyIGluIHRoZSA8bXVtYmxlPiBzdGF0ZS4iCisj
ZGVmaW5lIFJFQ09OU1VNRV9JTihzdGF0ZU5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1fc3RhdGUg
PSBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIGdvdG8gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKy8vIFdlIHVz
ZSB0aGlzIG1hY3JvIHdoZW4gdGhlIEhUTUw1IHNwZWMgc2F5cyAiY29uc3VtZSB0aGUgbmV4dCBp
bnB1dAorLy8gY2hhcmFjdGVyIC4uLiBhbmQgc3dpdGNoIHRvIHRoZSA8bXVtYmxlPiBzdGF0ZS4i
CisjZGVmaW5lIEFEVkFOQ0VfVE8oc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1fc3Rh
dGUgPSBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIGlmICghbV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5hZHZhbmNlKHNv
dXJjZSwgbV9saW5lTnVtYmVyKSkgICAgICBcCisgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1p
dEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsgICAgICAgICAgICAgICBcCisgICAgICAg
IGNjID0gbV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5uZXh0SW5wdXRDaGFyYWN0ZXIoKTsgICAg
ICAgICAgICAgICBcCisgICAgICAgIGdvdG8gc3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
Ky8vIFNvbWV0aW1lcyB0aGVyZSdzIG1vcmUgY29tcGxpY2F0ZWQgbG9naWMgaW4gdGhlIHNwZWMg
dGhhdCBzZXBhcmF0ZXMgd2hlbgorLy8gd2UgY29uc3VtZSB0aGUgbmV4dCBpbnB1dCBjaGFyYWN0
ZXIgYW5kIHdoZW4gd2Ugc3dpdGNoIHRvIGEgcGFydGljdWxhcgorLy8gc3RhdGUuICBXZSBoYW5k
bGUgdGhvc2UgY2FzZXMgYnkgYWR2YW5jaW5nIHRoZSBzb3VyY2UgZGlyZWN0bHkgYW5kIHVzaW5n
CisvLyB0aGlzIG1hY3JvIHRvIHN3aXRjaCB0byB0aGUgaW5kaWNhdGVkIHN0YXRlLgorI2RlZmlu
ZSBTV0lUQ0hfVE8oc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtX3N0YXRlID0gc3Rh
dGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSB8fCAhbV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nv
ci5wZWVrKHNvdXJjZSwgbV9saW5lTnVtYmVyKSkgXAorICAgICAgICAgICAgcmV0dXJuIHNob3Vs
ZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7ICAgICAgICAgICAgICAgXAorICAg
ICAgICBjYyA9IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IubmV4dElucHV0Q2hhcmFjdGVyKCk7
ICAgICAgICAgICAgICAgXAorICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNl
KQorCisvLyBXZSB1c2UgdGhpcyBtYWNybyB3aGVuIHRoZSBIVE1MNSBzcGVjIHNheXMgIkVtaXQg
dGhlIGN1cnJlbnQgPG11bWJsZT4KKy8vIHRva2VuLiBTd2l0Y2ggdG8gdGhlIDxtdW1ibGU+IHN0
YXRlLiIgIFdlIHVzZSB0aGUgd29yZCAicmVzdW1lIiBpbnN0ZWFkIG9mCisvLyBzd2l0Y2ggdG8g
aW5kaWNhdGUgdGhhdCB0aGlzIG1hY3JvIGFjdHVhbGx5IHJldHVybnMgYW5kIHRoYXQgd2UnbGwg
ZW5kIHVwCisvLyBpbiB0aGUgc3RhdGUgd2hlbiB3ZSAicmVzdW1lIiAoaS5lLiwgYXJlIGNhbGxl
ZCBhZ2FpbikuCisjZGVmaW5lIEVNSVRfQU5EX1JFU1VNRV9JTihzdGF0ZU5hbWUpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIG1fc3RhdGUgPSBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIHNvdXJjZS5hZHZhbmNlKG1fbGluZU51bWJlcik7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVtaXRDdXJyZW50
VG9rZW4oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgX0ZM
VVNIX0JVRkZFUkVEX0VORF9UQUcoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgQVNTRVJUKG1fdG9rZW4tPnR5
cGUoKSA9PSBIVE1MNVRva2VuOjpDaGFyYWN0ZXIgfHwgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgICAgIG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MNVRva2VuOjpVbmluaXRpYWxpemVkKTsg
ICAgICAgICAgICAgIFwKKyAgICAgICAgc291cmNlLmFkdmFuY2UobV9saW5lTnVtYmVyKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKG1fdG9rZW4t
PnR5cGUoKSA9PSBIVE1MNVRva2VuOjpDaGFyYWN0ZXIpICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV90b2tlbi0+YmVnaW5FbmRUYWcobV9idWZm
ZXJlZEVuZFRhZ05hbWUpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9idWZm
ZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBGTFVTSF9BTkRfQURWQU5DRV9U
TyhzdGF0ZU5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBtX3N0YXRlID0gc3RhdGVOYW1lOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfRkxVU0hfQlVGRkVS
RURfRU5EX1RBRygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfHwgIW1faW5wdXRTdHJlYW1QcmVwcm9j
ZXNzb3IucGVlayhzb3VyY2UsIG1fbGluZU51bWJlcikpICAgICAgXAorICAgICAgICAgICAgcmV0
dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7ICAgICAgICAgICAg
ICAgXAorICAgICAgICBjYyA9IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IubmV4dElucHV0Q2hh
cmFjdGVyKCk7ICAgICAgICAgICAgICAgXAorICAgICAgICBnb3RvIHN0YXRlTmFtZTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hp
bGUgKGZhbHNlKQorCisjZGVmaW5lIEZMVVNIX0VNSVRfQU5EX1JFU1VNRV9JTihzdGF0ZU5hbWUp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIG1fc3RhdGUgPSBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9GTFVTSF9CVUZGRVJFRF9FTkRfVEFHKCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiB0
cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKK2Jvb2wgSFRNTDVMZXhlcjo6bmV4dFRva2VuKFNl
Z21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MNVRva2VuJiB0b2tlbikKK3sKKyAgICAvLyBJZiB3
ZSBoYXZlIGEgdG9rZW4gaW4gcHJvZ3Jlc3MsIHRoZW4gd2UncmUgc3VwcG9zZWQgdG8gYmUgY2Fs
bGVkIGJhY2sKKyAgICAvLyB3aXRoIHRoZSBzYW1lIHRva2VuIHNvIHdlIGNhbiBmaW5pc2ggaXQu
CisgICAgQVNTRVJUKCFtX3Rva2VuIHx8IG1fdG9rZW4gPT0gJnRva2VuIHx8IHRva2VuLnR5cGUo
KSA9PSBIVE1MNVRva2VuOjpVbmluaXRpYWxpemVkKTsKKyAgICBtX3Rva2VuID0gJnRva2VuOwor
CisgICAgaWYgKCFtX2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkgJiYgIWlzRW5kVGFnQnVm
ZmVyaW5nU3RhdGUobV9zdGF0ZSkpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGNh
bGwgZmx1c2hCdWZmZXJlZEVuZFRhZygpLgorICAgICAgICAvLyBXZSBzdGFydGVkIGFuIGVuZCB0
YWcgZHVyaW5nIG91ciBsYXN0IGl0ZXJhdGlvbi4KKyAgICAgICAgbV90b2tlbi0+YmVnaW5FbmRU
YWcobV9idWZmZXJlZEVuZFRhZ05hbWUpOworICAgICAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5j
bGVhcigpOworICAgICAgICBpZiAobV9zdGF0ZSA9PSBEYXRhU3RhdGUpIHsKKyAgICAgICAgICAg
IC8vIFdlJ3JlIGJhY2sgaW4gdGhlIGRhdGEgc3RhdGUsIHNvIHdlIG11c3QgYmUgZG9uZSB3aXRo
IHRoZSB0YWcuCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmIChzb3VyY2UuaXNFbXB0eSgpIHx8ICFtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLnBl
ZWsoc291cmNlLCBtX2xpbmVOdW1iZXIpKQorICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZl
cmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsKKyAgICBVQ2hhciBjYyA9IG1faW5wdXRTdHJlYW1Q
cmVwcm9jZXNzb3IubmV4dElucHV0Q2hhcmFjdGVyKCk7CisKKyAgICAvLyBodHRwOi8vd3d3Lndo
YXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90b2tlbml6YXRp
b24uaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5CisgICAgLy8gTm90ZSB0aGF0IHRoaXMgbG9naWMg
aXMgZGlmZmVyZW50IHRoYW4gdGhlIGdlbmVyaWMgXHJcbiBjb2xsYXBzaW5nCisgICAgLy8gaGFu
ZGxlZCBpbiB0aGUgaW5wdXQgc3RyZWFtIHByZXByb2Nlc3Nvci4gIFRoaXMgbG9naWMgaXMgaGVy
ZSBhcyBhbgorICAgIC8vICJhdXRob3JpbmcgY29udmVuaWVuY2UiIHNvIGZvbGtzIGNhbiB3cml0
ZToKKyAgICAvLworICAgIC8vIDxwcmU+CisgICAgLy8gbG9yZW0gaXBzdW0KKyAgICAvLyBsb3Jl
bSBpcHN1bQorICAgIC8vIDwvcHJlPgorICAgIC8vCisgICAgLy8gd2l0aG91dCBnZXR0aW5nIGFu
IGV4dHJhIG5ld2xpbmUgYXQgdGhlIHN0YXJ0IG9mIHRoZWlyIDxwcmU+IGVsZW1lbnQuCisgICAg
aWYgKG1fc2tpcExlYWRpbmdOZXdMaW5lRm9yTGlzdGluZykgeworICAgICAgICBtX3NraXBMZWFk
aW5nTmV3TGluZUZvckxpc3RpbmcgPSBmYWxzZTsKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0gRGF0
YVN0YXRlICYmIGNjID09ICdcbicpCisgICAgICAgICAgICBBRFZBTkNFX1RPKERhdGFTdGF0ZSk7
CisgICAgfQorCisgICAgLy8gU291cmNlOiBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2Vi
LWFwcHMvY3VycmVudC13b3JrLyN0b2tlbmlzYXRpb24wCisgICAgc3dpdGNoIChtX3N0YXRlKSB7
CisgICAgQkVHSU5fU1RBVEUoRGF0YVN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnJicpCisg
ICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUluRGF0YVN0YXRlKTsKKyAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnKSB7CisgICAgICAgICAgICBpZiAobV90b2tlbi0+dHlw
ZSgpID09IEhUTUw1VG9rZW46OkNoYXJhY3RlcikgeworICAgICAgICAgICAgICAgIC8vIFdlIGhh
dmUgYSBidW5jaCBvZiBjaGFyYWN0ZXIgdG9rZW5zIHF1ZXVlZCB1cCB0aGF0IHdlCisgICAgICAg
ICAgICAgICAgLy8gYXJlIGVtaXR0aW5nIGxhemlseSBoZXJlLgorICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQURWQU5DRV9UTyhUYWdPcGVu
U3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7
CisgICAgICAgICAgICBBRFZBTkNFX1RPKERhdGFTdGF0ZSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVyZW5jZUluRGF0
YVN0YXRlKSB7CisgICAgICAgIGlmICghcHJvY2Vzc0VudGl0eShzb3VyY2UpKQorICAgICAgICAg
ICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7CisgICAg
ICAgIFNXSVRDSF9UTyhEYXRhU3RhdGUpOworICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAg
QkVHSU5fU1RBVEUoUkNEQVRBU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICcmJykKKyAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5SQ0RBVEFTdGF0ZSk7CisgICAg
ICAgIGVsc2UgaWYgKGNjID09ICc8JykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRBTGVz
c1RoYW5TaWduU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0
ZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFTdGF0ZSk7CisgICAgICAgIH0K
KyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVy
ZW5jZUluUkNEQVRBU3RhdGUpIHsKKyAgICAgICAgaWYgKCFwcm9jZXNzRW50aXR5KHNvdXJjZSkp
CisgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291
cmNlKTsKKyAgICAgICAgU1dJVENIX1RPKFJDREFUQVN0YXRlKTsKKyAgICB9CisgICAgRU5EX1NU
QVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFJBV1RFWFRTdGF0ZSkgeworICAgICAgICBpZiAoY2Mg
PT0gJzwnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhSQVdURVhUTGVzc1RoYW5TaWduU3RhdGUp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAg
ICAgICAgQURWQU5DRV9UTyhSQVdURVhUU3RhdGUpOworICAgICAgICB9CisgICAgfQorICAgIEVO
RF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhU3RhdGUpIHsKKyAgICAgICAg
aWYgKGNjID09ICc8JykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUxlc3NUaGFu
U2lnblN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNj
KTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YVN0YXRlKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoUExBSU5URVhUU3RhdGUp
IHsKKyAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgIEFEVkFOQ0VfVE8oUExBSU5U
RVhUU3RhdGUpOworICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoVGFn
T3BlblN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnIScpCisgICAgICAgICAgICBBRFZBTkNF
X1RPKE1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0g
Jy8nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhFbmRUYWdPcGVuU3RhdGUpOworICAgICAgICBl
bHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5i
ZWdpblN0YXJ0VGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFRh
Z05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6Jykg
eworICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5TdGFydFRhZyhjYyk7CisgICAgICAgICAgICBB
RFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz8nKSB7
CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgLy8gVGhlIHNwZWMg
Y29uc3VtZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGJlZm9yZSBzd2l0Y2hpbmcKKyAgICAgICAg
ICAgIC8vIHRvIHRoZSBib2d1cyBjb21tZW50IHN0YXRlLCBidXQgaXQncyBlYXNpZXIgdG8gaW1w
bGVtZW50CisgICAgICAgICAgICAvLyBpZiB3ZSByZWNvbnN1bWUgdGhlIGN1cnJlbnQgY2hhcmFj
dGVyLgorICAgICAgICAgICAgUkVDT05TVU1FX0lOKEJvZ3VzQ29tbWVudFN0YXRlKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBl
bWl0Q2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoRW5k
VGFnT3BlblN0YXRlKSB7CisgICAgICAgIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7Cisg
ICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOworICAgICAg
ICAgICAgQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID49
ICdhJyAmJiBjYyA8PSAneicpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKGNj
KTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAg
ICAgICBBRFZBTkNFX1RPKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgUkVDT05TVU1FX0lOKEJvZ3VzQ29tbWVu
dFN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJs
eS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFRhZ05hbWVTdGF0
ZSkgeworICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAn
XHgwQycgfHwgY2MgPT0gJyAnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1
dGVOYW1lU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCisgICAgICAgICAgICBB
RFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNj
ID09ICc+JykKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAg
ICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CisgICAgICAgICAgICBtX3Rv
a2VuLT5hcHBlbmRUb05hbWUodG9Mb3dlckNhc2UoY2MpKTsKKyAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvTmFtZShjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7
CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAg
fQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShSQ0RBVEFMZXNzVGhhblNpZ25T
dGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJy8nKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFy
eUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVyZWRFbmRUYWdOYW1l
LmlzRW1wdHkoKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFJDREFUQUVuZFRhZ09wZW5TdGF0
ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7Cisg
ICAgICAgICAgICBSRUNPTlNVTUVfSU4oUkNEQVRBU3RhdGUpOworICAgICAgICB9CisgICAgfQor
ICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShSQ0RBVEFFbmRUYWdPcGVuU3RhdGUp
IHsKKyAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgIG1f
dGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5k
VGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFJDREFUQUVuZFRh
Z05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6Jykg
eworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKKyAgICAgICAgICAg
IGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFF
bmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdENoYXJh
Y3RlcignPCcpOworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignLycpOworICAgICAgICAgICAg
UkVDT05TVU1FX0lOKFJDREFUQVN0YXRlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTkRfU1RB
VEUoKQorCisgICAgQkVHSU5fU1RBVEUoUkNEQVRBRW5kVGFnTmFtZVN0YXRlKSB7CisgICAgICAg
IGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1
ZmZlci5hcHBlbmQoY2MpOworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2Vy
Q2FzZShjYykpOworICAgICAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFFbmRUYWdOYW1lU3RhdGUp
OworICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKKyAgICAgICAg
ICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3Np
YmxlRW5kVGFnKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnTmFtZVN0
YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwg
Y2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQorICAgICAgICAgICAgICAgICAgICBGTFVT
SF9BTkRfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICAgICAg
fSBlbHNlIGlmIChjYyA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0
ZUVuZFRhZygpKQorICAgICAgICAgICAgICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhTZWxm
Q2xvc2luZ1N0YXJ0VGFnU3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicp
IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQorICAgICAgICAg
ICAgICAgICAgICBGTFVTSF9FTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJy8nKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1f
dGVtcG9yYXJ5QnVmZmVyKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFy
KCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oUkNEQVRBU3RhdGUpOworICAgICAgICB9Cisg
ICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShSQVdURVhUTGVzc1RoYW5T
aWduU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICcvJykgeworICAgICAgICAgICAgbV90ZW1w
b3JhcnlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlcmVkRW5kVGFn
TmFtZS5pc0VtcHR5KCkpOworICAgICAgICAgICAgQURWQU5DRV9UTyhSQVdURVhURW5kVGFnT3Bl
blN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwn
KTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihSQVdURVhUU3RhdGUpOworICAgICAgICB9Cisg
ICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShSQVdURVhURW5kVGFnT3Bl
blN0YXRlKSB7CisgICAgICAgIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CisgICAgICAg
ICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOworICAgICAgICAgICAgYWRkVG9Qb3Nz
aWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOworICAgICAgICAgICAgQURWQU5DRV9UTyhSQVdU
RVhURW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2Mg
PD0gJ3onKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOworICAg
ICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RP
KFJBV1RFWFRFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ZW1pdENoYXJhY3RlcignPCcpOworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignLycpOworICAg
ICAgICAgICAgUkVDT05TVU1FX0lOKFJBV1RFWFRTdGF0ZSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFJBV1RFWFRFbmRUYWdOYW1lU3RhdGUp
IHsKKyAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgIG1f
dGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5k
VGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFJBV1RFWFRFbmRU
YWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicp
IHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAg
ICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkFXVEVY
VEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoY2Mg
PT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKSB7
CisgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAgICAgICAgICAg
ICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgaWYg
KGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAgICAgICAgICAgICAgICAgICAgRkxVU0hfQU5EX0FE
VkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWco
KSkKKyAgICAgICAgICAgICAgICAgICAgRkxVU0hfRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0
ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7CisgICAg
ICAgICAgICBlbWl0Q2hhcmFjdGVyKCcvJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRU
b0NoYXJhY3RlcihtX3RlbXBvcmFyeUJ1ZmZlcik7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRW5k
VGFnTmFtZS5jbGVhcigpOworICAgICAgICAgICAgUkVDT05TVU1FX0lOKFJBV1RFWFRTdGF0ZSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFNj
cmlwdERhdGFMZXNzVGhhblNpZ25TdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJy8nKSB7Cisg
ICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAgQVNTRVJU
KG1fYnVmZmVyZWRFbmRUYWdOYW1lLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RP
KFNjcmlwdERhdGFFbmRUYWdPcGVuU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICch
JykgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOworICAgICAgICAgICAgZW1pdENo
YXJhY3RlcignIScpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlU3Rh
cnRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8
Jyk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVu
ZFRhZ09wZW5TdGF0ZSkgeworICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewor
ICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgIGFk
ZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKKyAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0g
J2EnICYmIGNjIDw9ICd6JykgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5k
KGNjKTsKKyAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOworICAgICAgICAgICAg
QURWQU5DRV9UTyhTY3JpcHREYXRhRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0
ZXIoJy8nKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOworICAg
ICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHRE
YXRhRW5kVGFnTmFtZVN0YXRlKSB7CisgICAgICAgIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1on
KSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOworICAgICAgICAg
ICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOworICAgICAgICAgICAgQURW
QU5DRV9UTyhTY3JpcHREYXRhRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChj
YyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5h
cHBlbmQoY2MpOworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7CisgICAgICAg
ICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2Mg
PT0gJ1x4MEMnIHx8IGNjID09ICcgJykgeworICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJp
YXRlRW5kVGFnKCkpCisgICAgICAgICAgICAgICAgICAgIEZMVVNIX0FORF9BRFZBTkNFX1RPKEJl
Zm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcv
JykgeworICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCisgICAgICAg
ICAgICAgICAgICAgIEZMVVNIX0FORF9BRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0
ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAgICAgICAgICAg
IGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCisgICAgICAgICAgICAgICAgICAgIEZMVVNIX0VN
SVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZW1pdENoYXJhY3RlcignPCcpOworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignLycpOworICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlCdWZmZXIpOwor
ICAgICAgICAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKKyAgICAgICAgICAgIFJF
Q09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9T
VEFURSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlU3RhcnRTdGF0ZSkgewor
ICAgICAgICBpZiAoY2MgPT0gJy0nKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsK
KyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZVN0YXJ0RGFzaFN0YXRlKTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRl
KTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFF
c2NhcGVTdGFydERhc2hTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJy0nKSB7CisgICAgICAg
ICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0
YUVzY2FwZWREYXNoRGFzaFN0YXRlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBSRUNP
TlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAg
IEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09
ICctJykgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZB
TkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRGFzaFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChj
YyA9PSAnPCcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkTGVzc1Ro
YW5TaWduU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIo
Y2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAg
ICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICB9Cisg
ICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVkRGFzaFN0
YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnLScpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0
ZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNo
U3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykKKyAgICAgICAgICAgIEFEVkFO
Q0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RP
KFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBI
YW5kbGUgRU9GIHByb3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5f
U1RBVEUoU2NyaXB0RGF0YUVzY2FwZWREYXNoRGFzaFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9
PSAnLScpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgQURW
QU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpOworICAgICAgICB9IGVsc2Ug
aWYgKGNjID09ICc8JykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRM
ZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAg
ICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERh
dGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNj
KTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CisgICAg
ICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAgfQorICAg
IEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFu
U2lnblN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnLycpIHsKKyAgICAgICAgICAgIG1fdGVt
cG9yYXJ5QnVmZmVyLmNsZWFyKCk7CisgICAgICAgICAgICBBU1NFUlQobV9idWZmZXJlZEVuZFRh
Z05hbWUuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2Fw
ZWRFbmRUYWdPcGVuU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8
PSAnWicpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVt
aXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsK
KyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZCh0b0xvd2VyQ2FzZShjYykpOwor
ICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgeworICAgICAgICAg
ICAgZW1pdENoYXJhY3RlcignPCcpOworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Cisg
ICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAgbV90ZW1w
b3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0
YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ZW1pdENoYXJhY3RlcignPCcpOworICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFF
c2NhcGVkU3RhdGUpOworICAgICAgICB9CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBC
RUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ09wZW5TdGF0ZSkgeworICAgICAgICBp
ZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZm
ZXIuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNh
c2UoY2MpKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdO
YW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsK
KyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBh
ZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0
YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ZW1pdENoYXJhY3RlcignPCcpOworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignLycpOworICAg
ICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOworICAgICAgICB9
CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNj
YXBlZEVuZFRhZ05hbWVTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICda
JykgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKKyAgICAgICAg
ICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKKyAgICAgICAgICAgIEFE
VkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVs
c2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5
QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsK
KyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9
PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykgeworICAgICAgICAgICAgICAg
IGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCisgICAgICAgICAgICAgICAgICAgIEZMVVNIX0FO
RF9BRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKGNjID09ICcvJykgeworICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5k
VGFnKCkpCisgICAgICAgICAgICAgICAgICAgIEZMVVNIX0FORF9BRFZBTkNFX1RPKFNlbGZDbG9z
aW5nU3RhcnRUYWdTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+Jykgewor
ICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCisgICAgICAgICAgICAg
ICAgICAgIEZMVVNIX0VNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOworICAgICAgICAgICAgZW1pdENoYXJh
Y3RlcignLycpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0ZXIobV90ZW1w
b3JhcnlCdWZmZXIpOworICAgICAgICAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsK
KyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0
YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBj
YyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJyB8fCBjYyA9PSAnLycgfHwg
Y2MgPT0gJz4nKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAg
IGlmICh0ZW1wb3JhcnlCdWZmZXJJcyhzY3JpcHRUYWcubG9jYWxOYW1lKCkpKQorICAgICAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0
YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CisgICAg
ICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVy
LmFwcGVuZCh0b0xvd2VyQ2FzZShjYykpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHRE
YXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2En
ICYmIGNjIDw9ICd6JykgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAg
ICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOworICAgICAgICAgICAgQURWQU5DRV9U
TyhTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZSk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOworICAgIH0KKyAg
ICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRT
dGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJy0nKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFj
dGVyKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRE
YXNoU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykgeworICAgICAgICAgICAg
ZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3Vi
bGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFE
b3VibGVFc2NhcGVkU3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUg
RU9GIHByb3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUo
U2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICct
JykgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNF
X1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaERhc2hTdGF0ZSk7CisgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJzwnKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0
ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CisgICAg
ICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAgfQorICAg
IEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlZERh
c2hEYXNoU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICctJykgeworICAgICAgICAgICAgZW1p
dENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVF
c2NhcGVkRGFzaERhc2hTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7Cisg
ICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2Ny
aXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHRE
YXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFu
ZGxlIEVPRiBwcm9wZXJseS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NU
QVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpIHsKKyAgICAgICAg
aWYgKGNjID09ICcvJykgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAg
ICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAgQURWQU5DRV9UTyhT
Y3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICB9Cisg
ICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVF
bmRTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBj
YyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnIHx8IGNjID09ICcvJyB8fCBjYyA9PSAnPicpIHsKKyAg
ICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgaWYgKHRlbXBvcmFyeUJ1
ZmZlcklzKHNjcmlwdFRhZy5sb2NhbE5hbWUoKSkpCisgICAgICAgICAgICAgICAgQURWQU5DRV9U
TyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOworICAgICAgICB9
IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgIGVtaXRDaGFy
YWN0ZXIoY2MpOworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHRvTG93ZXJD
YXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVF
bmRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6Jykgewor
ICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1
ZmZlci5hcHBlbmQoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91Ymxl
RXNjYXBlRW5kU3RhdGUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFJFQ09OU1VNRV9J
TihTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkK
KworICAgIEJFR0lOX1NUQVRFKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSkgeworICAgICAgICBp
ZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0g
JyAnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwor
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCisgICAgICAgICAgICBBRFZBTkNFX1RPKFNlbGZD
bG9zaW5nU3RhcnRUYWdTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAg
ICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChj
YyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hZGROZXdBdHRy
aWJ1dGUoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xv
d2VyQ2FzZShjYykpOworICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAn
XCcnIHx8IGNjID09ICc8JyB8fCBjYyA9PSAnPScpCisgICAgICAgICAgICAgICAgZW1pdFBhcnNl
RXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOworICAgICAg
ICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKGNjKTsKKyAgICAgICAgICAgIEFE
VkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhN
RTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJF
R0lOX1NUQVRFKEF0dHJpYnV0ZU5hbWVTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJ1x4MDkn
IHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQorICAgICAgICAg
ICAgQURWQU5DRV9UTyhBZnRlckF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYg
KGNjID09ICcvJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0
YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz0nKQorICAgICAgICAgICAgQURWQU5DRV9U
TyhCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4n
KQorICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIGVs
c2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOworICAgICAgICAgICAgQURWQU5D
RV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
aWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JyB8fCBjYyA9PSAnPScpCisg
ICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvQXR0cmlidXRlTmFtZShjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0
ZU5hbWVTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJv
cGVybHkuCisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShBZnRlckF0
dHJpYnV0ZU5hbWVTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdc
eDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQorICAgICAgICAgICAgQURWQU5DRV9U
TyhBZnRlckF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykK
KyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJz0nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRy
aWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAg
ICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID49
ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0
ZSgpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKHRvTG93ZXJD
YXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycg
fHwgY2MgPT0gJzwnKQorICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAg
ICAgICBtX3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvQXR0cmlidXRlTmFtZShjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0
ZU5hbWVTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJv
cGVybHkuCisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShCZWZvcmVB
dHRyaWJ1dGVWYWx1ZVN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0g
J1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAgICAgICBBRFZBTkNF
X1RPKEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAn
IicpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3Rh
dGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnJicpCisgICAgICAgICAgICBSRUNPTlNVTUVf
SU4oQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0g
J1wnJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWRT
dGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAgICAgICAgZW1pdFBh
cnNlRXJyb3IoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGNjID09ICc8JyB8fCBjYyA9PSAnPScg
fHwgY2MgPT0gJ2AnKQorICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAg
ICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNjKTsKKyAgICAgICAgICAgIEFE
VkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQXR0cmlidXRlVmFsdWVEb3VibGVR
dW90ZWRTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJyInKQorICAgICAgICAgICAgQURWQU5D
RV9UTyhBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpOworICAgICAgICBlbHNlIGlmIChj
YyA9PSAnJicpIHsKKyAgICAgICAgICAgIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSAn
Iic7CisgICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRl
VmFsdWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBl
bmRUb0F0dHJpYnV0ZVZhbHVlKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRl
VmFsdWVEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEhh
bmRsZSBFT0YgcHJvcGVybHkuCisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9T
VEFURShBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9
PSAnXCcnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVk
U3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnJicpIHsKKyAgICAgICAgICAgIG1fYWRk
aXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSAnXCcnOworICAgICAgICAgICAgQURWQU5DRV9UTyhD
aGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjYyk7CisgICAg
ICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUpOworICAg
ICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIH0KKyAg
ICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0
YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09
ICdceDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJp
YnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICcmJykgeworICAgICAgICAg
ICAgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9ICc+JzsKKyAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAg
fSBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0
YVN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoY2MgPT0gJyInIHx8IGNj
ID09ICdcJycgfHwgY2MgPT0gJzwnIHx8IGNjID09ICc9JyB8fCBjYyA9PSAnYCcpCisgICAgICAg
ICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
QXR0cmlidXRlVmFsdWUoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1
ZVVucXVvdGVkU3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9G
IHByb3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQ2hh
cmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKSB7CisgICAgICAgIGJvb2wgbm90
RW5vdWdoQ2hhcmFjdGVycyA9IGZhbHNlOworICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IGNvbnN1
bWVIVE1MNUVudGl0eShzb3VyY2UsIG5vdEVub3VnaENoYXJhY3RlcnMsIG1fYWRkaXRpb25hbEFs
bG93ZWRDaGFyYWN0ZXIpOworICAgICAgICBpZiAobm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAg
ICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOwor
ICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1
dGVWYWx1ZSgnJicpOworICAgICAgICBlbHNlIGlmICh2YWx1ZSA8IDB4RkZGRikKKyAgICAgICAg
ICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUodmFsdWUpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoVTE2X0xFQUQo
dmFsdWUpKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoVTE2
X1RSQUlMKHZhbHVlKSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gV2UncmUgc3VwcG9zZWQgdG8g
c3dpdGNoIGJhY2sgdG8gdGhlIGF0dHJpYnV0ZSB2YWx1ZSBzdGF0ZSB0aGF0CisgICAgICAgIC8v
IHdlIHdlcmUgaW4gd2hlbiB3ZSB3ZXJlIHN3aXRjaGVkIGludG8gdGhpcyBzdGF0ZS4gIFJhdGhl
ciB0aGFuCisgICAgICAgIC8vIGtlZXBpbmcgdHJhY2sgb2YgdGhpcyBleHBsaWN0bHksIHdlIG9i
c2VydmUgdGhhdCB0aGUgcHJldmlvdXMKKyAgICAgICAgLy8gc3RhdGUgY2FuIGJlIGRldGVybWlu
ZWQgYnkgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3Rlci4KKyAgICAgICAgaWYgKG1fYWRkaXRp
b25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJyInKQorICAgICAgICAgICAgU1dJVENIX1RPKEF0dHJp
YnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICBlbHNlIGlmIChtX2FkZGl0aW9u
YWxBbGxvd2VkQ2hhcmFjdGVyID09ICdcJycpCisgICAgICAgICAgICBTV0lUQ0hfVE8oQXR0cmli
dXRlVmFsdWVTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKG1fYWRkaXRpb25h
bEFsbG93ZWRDaGFyYWN0ZXIgPT0gJz4nKQorICAgICAgICAgICAgU1dJVENIX1RPKEF0dHJpYnV0
ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUo
QWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnXHgw
OScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAg
ICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2Ug
aWYgKGNjID09ICcvJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRh
Z1N0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgRU1JVF9B
TkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZW1p
dFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihCZWZvcmVBdHRyaWJ1dGVO
YW1lU3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Bl
cmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoU2VsZkNsb3Np
bmdTdGFydFRhZ1N0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0
YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Cisg
ICAgICAgICAgICBSRUNPTlNVTUVfSU4oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAg
ICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICB9CisgICAg
RU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEJvZ3VzQ29tbWVudFN0YXRlKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHN0YXRlIGlzbid0IGNvcnJlY3QgYmVjYXVzZSB3ZSdsbCB0ZXJt
aW5hdGUgdGhlCisgICAgICAgIC8vIGNvbW1lbnQgZWFybHkgaWYgd2UgZG9uJ3QgaGF2ZSB0aGUg
d2hvbGUgaW5wdXQgc3RyZWFtIGF2YWlsYWJsZS4KKyAgICAgICAgbV90b2tlbi0+YmVnaW5Db21t
ZW50KCk7CisgICAgICAgIHdoaWxlICghc291cmNlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
Y2MgPSBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLm5leHRJbnB1dENoYXJhY3RlcigpOworICAg
ICAgICAgICAgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVf
SU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7
CisgICAgICAgICAgICBtX2lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmFkdmFuY2Uoc291cmNlLCBt
X2xpbmVOdW1iZXIpOworICAgICAgICAgICAgLy8gV2UgaWdub3JlIHRoZSByZXR1cm4gdmFsdWUg
KHdoaWNoIGluZGljYXRlcyB0aGF0IHxzb3VyY2V8IGlzCisgICAgICAgICAgICAvLyBlbXB0eSkg
YmVjYXVzZSBpdCdzIGNoZWNrZWQgYnkgdGhlIGxvb3AgY29uZGl0aW9uIGFib3ZlLgorICAgICAg
ICB9CisgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICB9CisgICAgRU5EX1NU
QVRFKCkKKworICAgIEJFR0lOX1NUQVRFKE1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRlKSB7Cisg
ICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBkYXNoRGFzaFN0cmluZywgKCItLSIp
KTsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRvY3R5cGVTdHJpbmcsICgi
ZG9jdHlwZSIpKTsKKyAgICAgICAgaWYgKGNjID09ICctJykgeworICAgICAgICAgICAgU2VnbWVu
dGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZChkYXNo
RGFzaFN0cmluZyk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6
RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnLScp
OworICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKCctJyk7CisgICAgICAg
ICAgICAgICAgbV90b2tlbi0+YmVnaW5Db21tZW50KCk7CisgICAgICAgICAgICAgICAgU1dJVENI
X1RPKENvbW1lbnRTdGFydFN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09
IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsKKyAgICAgICAg
fSBlbHNlIGlmIChjYyA9PSAnRCcgfHwgY2MgPT0gJ2QnKSB7CisgICAgICAgICAgICBTZWdtZW50
ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkSWdub3Jp
bmdDYXNlKGRvY3R5cGVTdHJpbmcpOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50
ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CisgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFT
U0VSVElnbm9yaW5nQ2FzZShzb3VyY2UsICJkb2N0eXBlIik7CisgICAgICAgICAgICAgICAgU1dJ
VENIX1RPKERPQ1RZUEVTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBT
ZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7CisgICAgICAgIH0K
KyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgLy8gRklYTUU6IFdlJ3JlIHN0aWxs
IG1pc3NpbmcgdGhlIGJpdHMgYWJvdXQgdGhlIGluc2VydGlvbiBtb2RlIGJlaW5nIGluIGZvcmVp
Z24gY29udGVudDoKKyAgICAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1h
cHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjbWFya3VwLWRlY2xh
cmF0aW9uLW9wZW4tc3RhdGUKKyAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgUkVD
T05TVU1FX0lOKEJvZ3VzQ29tbWVudFN0YXRlKTsKKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKwor
ICAgIEJFR0lOX1NUQVRFKENvbW1lbnRTdGFydFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAn
LScpCisgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGFydERhc2hTdGF0ZSk7CisgICAg
ICAgIGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsK
KyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhN
RTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJF
R0lOX1NUQVRFKENvbW1lbnRTdGFydERhc2hTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJy0n
KQorICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kU3RhdGUpOworICAgICAgICBlbHNl
IGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAg
ICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOworICAgICAgICAgICAgbV90
b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVu
dFN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJs
eS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKENvbW1lbnRTdGF0
ZSkgeworICAgICAgICBpZiAoY2MgPT0gJy0nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhDb21t
ZW50RW5kRGFzaFN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb0NvbW1lbnQoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUp
OworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAg
IH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQ29tbWVudEVuZERhc2hTdGF0
ZSkgeworICAgICAgICBpZiAoY2MgPT0gJy0nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhDb21t
ZW50RW5kU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvQ29tbWVudCgnLScpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNj
KTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKKyAgICAgICAgfQorICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICB9CisgICAgRU5EX1NUQVRF
KCkKKworICAgIEJFR0lOX1NUQVRFKENvbW1lbnRFbmRTdGF0ZSkgeworICAgICAgICBpZiAoY2Mg
PT0gJz4nKQorICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAg
ICAgIGVsc2UgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMn
IHx8IGNjID09ICcgJykgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAg
ICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOworICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9Db21tZW50KCctJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1l
bnQoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kU3BhY2VTdGF0ZSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJyEnKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJv
cigpOworICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kQmFuZ1N0YXRlKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChjYyA9PSAnLScpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7
CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKKyAgICAgICAgICAg
IG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKENv
bW1lbnRFbmRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0UGFyc2VF
cnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CisgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKKyAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRT
dGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHku
CisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShDb21tZW50RW5kQmFu
Z1N0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnLScpIHsKKyAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQ29tbWVudCgnLScpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21t
ZW50KCctJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJyEnKTsKKyAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZERhc2hTdGF0ZSk7CisgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0
ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50
KCctJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKKyAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnIScpOworICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9Db21tZW50KGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0
YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4K
KyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKENvbW1lbnRFbmRTcGFj
ZVN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNj
ID09ICdceDBDJyB8fCBjYyA9PSAnICcpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
Q29tbWVudChjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmRTcGFjZVN0YXRl
KTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLScpCisgICAgICAgICAgICBBRFZBTkNFX1RP
KENvbW1lbnRFbmREYXNoU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAg
ICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOworICAgICAgICAgICAgQURW
QU5DRV9UTyhDb21tZW50U3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5k
bGUgRU9GIHByb3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RB
VEUoRE9DVFlQRVN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4
MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAgICAgICBBRFZBTkNFX1RP
KEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVt
aXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oQmVmb3JlRE9DVFlQRU5h
bWVTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVy
bHkuCisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShCZWZvcmVET0NU
WVBFTmFtZVN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEn
IHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEJl
Zm9yZURPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2Mg
PD0gJ1onKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUodG9Mb3dlckNhc2Uo
Y2MpKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAgICAg
IH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwor
ICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKCk7CisgICAgICAgICAgICBtX3Rva2Vu
LT5zZXRGb3JjZVF1aXJrcygpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFT
dGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZ
UEUoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAg
ICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICB9CisgICAg
RU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKERPQ1RZUEVOYW1lU3RhdGUpIHsKKyAgICAg
ICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNj
ID09ICcgJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFTmFtZVN0YXRlKTsK
KyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1F
X0lOKERhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicp
IHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZSh0b0xvd2VyQ2FzZShjYykpOwor
ICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShjYyk7CisgICAgICAgICAgICBB
RFZBTkNFX1RPKERPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1F
OiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVH
SU5fU1RBVEUoQWZ0ZXJET0NUWVBFTmFtZVN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnXHgw
OScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAg
ICAgICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAgICAgIGlmIChjYyA9
PSAnPicpCisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcHVibGlj
U3RyaW5nLCAoInB1YmxpYyIpKTsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBzeXN0ZW1TdHJpbmcsICgic3lzdGVtIikpOworICAgICAgICAgICAgaWYgKGNjID09ICdQ
JyB8fCBjYyA9PSAncCcpIHsKKyAgICAgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tB
aGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkSWdub3JpbmdDYXNlKHB1YmxpY1N0
cmluZyk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRp
ZE1hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25v
cmluZ0Nhc2Uoc291cmNlLCAicHVibGljIik7CisgICAgICAgICAgICAgICAgICAgIFNXSVRDSF9U
TyhBZnRlckRPQ1RZUEVQdWJsaWNLZXl3b3JkU3RhdGUpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2Vu
KHNvdXJjZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdTJyB8fCBjYyA9PSAncycp
IHsKKyAgICAgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1
bHQgPSBzb3VyY2UubG9va0FoZWFkSWdub3JpbmdDYXNlKHN5c3RlbVN0cmluZyk7CisgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CisgICAg
ICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2Uoc291cmNl
LCAic3lzdGVtIik7CisgICAgICAgICAgICAgICAgICAgIFNXSVRDSF9UTyhBZnRlckRPQ1RZUEVT
eXN0ZW1LZXl3b3JkU3RhdGUpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09
IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90
b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NU
WVBFU3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Bl
cmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQWZ0ZXJET0NU
WVBFUHVibGljS2V5d29yZFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2Mg
PT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAgICAgICBBRFZB
TkNFX1RPKEJlZm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpOworICAgICAgICBlbHNl
IGlmIChjYyA9PSAnIicpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAg
ICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOworICAgICAg
ICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRl
KTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7CisgICAgICAgICAgICBlbWl0UGFy
c2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1w
dHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZp
ZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7Cisg
ICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9y
Y2VRdWlya3MoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAg
ICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEJv
Z3VzRE9DVFlQRVN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVP
RiBwcm9wZXJseS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEJl
Zm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICdc
eDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKKyAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7Cisg
ICAgICAgIGVsc2UgaWYgKGNjID09ICciJykgeworICAgICAgICAgICAgbV90b2tlbi0+c2V0UHVi
bGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9D
VFlQRVB1YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gJ1wnJykgeworICAgICAgICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmll
clRvRW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lk
ZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4n
KSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+
c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3Rh
dGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAg
ICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICBBRFZBTkNF
X1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFu
ZGxlIEVPRiBwcm9wZXJseS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NU
QVRFKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpIHsKKyAgICAgICAg
aWYgKGNjID09ICciJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFUHVibGlj
SWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAg
ICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWly
a3MoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVy
KGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJEb3Vi
bGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0Yg
cHJvcGVybHkuCisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShET0NU
WVBFUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKSB7CisgICAgICAgIGlmIChjYyA9
PSAnXCcnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlm
aWVyU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgIGVt
aXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwor
ICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1B1YmxpY0lkZW50aWZpZXIoY2MpOwor
ICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3Rl
ZFN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJs
eS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQ
RVB1YmxpY0lkZW50aWZpZXJTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNj
ID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQorICAgICAgICAgICAgQURW
QU5DRV9UTyhCZXR3ZWVuRE9DVFlQRVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzU3RhdGUpOwor
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVf
SU4oRGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKSB7CisgICAgICAgICAg
ICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRp
ZmllclRvRW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3Rl
bUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
J1wnJykgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9r
ZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICBBRFZB
TkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1f
dG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9D
VFlQRVN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9w
ZXJseS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEJldHdlZW5E
T0NUWVBFUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnNTdGF0ZSkgeworICAgICAgICBpZiAoY2Mg
PT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQor
ICAgICAgICAgICAgQURWQU5DRV9UTyhCZXR3ZWVuRE9DVFlQRVB1YmxpY0FuZFN5c3RlbUlkZW50
aWZpZXJzU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICBF
TUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyIn
KSB7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmlu
ZygpOworICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJs
ZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7CisgICAgICAg
ICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOworICAgICAg
ICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRl
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAg
ICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOworICAgICAgICAgICAgQURWQU5DRV9U
TyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEhhbmRs
ZSBFT0YgcHJvcGVybHkuCisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFU
RShBZnRlckRPQ1RZUEVTeXN0ZW1LZXl3b3JkU3RhdGUpIHsKKyAgICAgICAgaWYgKGNjID09ICdc
eDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKKyAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7Cisg
ICAgICAgIGVsc2UgaWYgKGNjID09ICciJykgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3Io
KTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5n
KCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91Ymxl
UXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKKyAgICAgICAg
ICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVu
dGlmaWVyVG9FbXB0eVN0cmluZygpOworICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lz
dGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9
PSAnPicpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rv
a2VuLT5zZXRGb3JjZVF1aXJrcygpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERh
dGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigp
OworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIEFE
VkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1F
OiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVH
SU5fU1RBVEUoQmVmb3JlRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSkgeworICAgICAgICBp
ZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0g
JyAnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmll
clN0YXRlKTsKKyAgICAgICAgaWYgKGNjID09ICciJykgeworICAgICAgICAgICAgbV90b2tlbi0+
c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gJ1wnJykgeworICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRl
bnRpZmllclRvRW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5
c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gJz4nKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90
b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihE
YXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3Io
KTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CisgICAgICAgICAgICBB
RFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhN
RTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJF
R0lOX1NUQVRFKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpIHsKKyAg
ICAgICAgaWYgKGNjID09ICciJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBF
U3lzdGVtSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7Cisg
ICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9y
Y2VRdWlya3MoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9TeXN0ZW1JZGVu
dGlmaWVyKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZp
ZXJEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEhhbmRs
ZSBFT0YgcHJvcGVybHkuCisgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFU
RShET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKSB7CisgICAgICAgIGlm
IChjYyA9PSAnXCcnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVTeXN0ZW1J
ZGVudGlmaWVyU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAg
ICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJr
cygpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1N5c3RlbUlkZW50aWZpZXIo
Y2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmds
ZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBw
cm9wZXJseS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEFmdGVy
RE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSkgeworICAgICAgICBpZiAoY2MgPT0gJ1x4MDkn
IHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQorICAgICAgICAg
ICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOworICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0
YVN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwor
ICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CisgICAgICAgIH0KKyAg
ICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAgfQorICAgIEVORF9TVEFU
RSgpCisKKyAgICBCRUdJTl9TVEFURShCb2d1c0RPQ1RZUEVTdGF0ZSkgeworICAgICAgICBpZiAo
Y2MgPT0gJz4nKQorICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Cisg
ICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOworICAgICAgICAvLyBGSVhNRTog
SGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lO
X1NUQVRFKENEQVRBU2VjdGlvblN0YXRlKSB7CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgICAgIEFEVkFOQ0VfVE8oQ0RBVEFTZWN0aW9uU3RhdGUpOworICAgIH0KKyAgICBFTkRfU1RB
VEUoKQorCisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitpbmxpbmUgYm9vbCBIVE1MNUxleGVyOjp0ZW1wb3JhcnlCdWZmZXJJcyhjb25z
dCBTdHJpbmcmIGV4cGVjdGVkU3RyaW5nKQoreworICAgIHJldHVybiB2ZWN0b3JFcXVhbHNTdHJp
bmcobV90ZW1wb3JhcnlCdWZmZXIsIGV4cGVjdGVkU3RyaW5nKTsKK30KKworaW5saW5lIHZvaWQg
SFRNTDVMZXhlcjo6YWRkVG9Qb3NzaWJsZUVuZFRhZyhVQ2hhciBjYykKK3sKKyAgICBBU1NFUlQo
aXNFbmRUYWdCdWZmZXJpbmdTdGF0ZShtX3N0YXRlKSk7CisgICAgbV9idWZmZXJlZEVuZFRhZ05h
bWUuYXBwZW5kKGNjKTsKK30KKworaW5saW5lIGJvb2wgSFRNTDVMZXhlcjo6aXNBcHByb3ByaWF0
ZUVuZFRhZygpCit7CisgICAgcmV0dXJuIG1fYnVmZmVyZWRFbmRUYWdOYW1lID09IG1fYXBwcm9w
cmlhdGVFbmRUYWdOYW1lOworfQorCitpbmxpbmUgdm9pZCBIVE1MNUxleGVyOjplbWl0Q2hhcmFj
dGVyKFVDaGFyIGNoYXJhY3RlcikKK3sKKyAgICBpZiAobV90b2tlbi0+dHlwZSgpICE9IEhUTUw1
VG9rZW46OkNoYXJhY3RlcikgeworICAgICAgICBtX3Rva2VuLT5iZWdpbkNoYXJhY3RlcihjaGFy
YWN0ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fdG9rZW4tPmFwcGVuZFRvQ2hh
cmFjdGVyKGNoYXJhY3Rlcik7Cit9CisKK2lubGluZSB2b2lkIEhUTUw1TGV4ZXI6OmVtaXRDb2Rl
UG9pbnQodW5zaWduZWQgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlIDwgMHhGRkZGKSB7CisgICAg
ICAgIGVtaXRDaGFyYWN0ZXIodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVt
aXRDaGFyYWN0ZXIoVTE2X0xFQUQodmFsdWUpKTsKKyAgICBlbWl0Q2hhcmFjdGVyKFUxNl9UUkFJ
TCh2YWx1ZSkpOworfQorCitpbmxpbmUgdm9pZCBIVE1MNUxleGVyOjplbWl0UGFyc2VFcnJvcigp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworaW5saW5lIHZvaWQgSFRNTDVMZXhlcjo6
ZW1pdEN1cnJlbnRUb2tlbigpCit7CisgICAgQVNTRVJUKG1fdG9rZW4tPnR5cGUoKSAhPSBIVE1M
NVRva2VuOjpVbmluaXRpYWxpemVkKTsKKyAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUw1
VG9rZW46OlN0YXJ0VGFnKQorICAgICAgICBtX2FwcHJvcHJpYXRlRW5kVGFnTmFtZSA9IG1fdG9r
ZW4tPm5hbWUoKTsKK30KKworaW5saW5lIGJvb2wgSFRNTDVMZXhlcjo6c2hvdWxkRW1pdEJ1ZmZl
cmVkQ2hhcmFjdGVyVG9rZW4oY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCit7CisgICAg
cmV0dXJuIHNvdXJjZS5pc0Nsb3NlZCgpICYmIG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MNVRva2Vu
OjpDaGFyYWN0ZXI7Cit9CisKK30KKwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAkocmV2aXNp
b24gNjE2NjMpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDcgKzI2LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiSFRNTDVMZXhlci5oIgorI2luY2x1ZGUgIkhUTUxUb2tlbml6ZXIuaCIKIAogI2luY2x1ZGUg
IkF0b21pY1N0cmluZy5oIgogI2luY2x1ZGUgIkhUTUw1RW50aXR5UGFyc2VyLmgiCkBAIC02OSwx
NyArNjksMTcgQEAgaW5saW5lIGJvb2wgdmVjdG9yRXF1YWxzU3RyaW5nKGNvbnN0IFZlYwogICAg
IHJldHVybiAhbWVtY21wKHN0cmluZ0RhdGEsIHZlY3RvckRhdGEsIHZlY3Rvci5zaXplKCkgKiBz
aXplb2YoVUNoYXIpKTsKIH0KIAotaW5saW5lIGJvb2wgaXNFbmRUYWdCdWZmZXJpbmdTdGF0ZShI
VE1MNUxleGVyOjpTdGF0ZSBzdGF0ZSkKK2lubGluZSBib29sIGlzRW5kVGFnQnVmZmVyaW5nU3Rh
dGUoSFRNTFRva2VuaXplcjo6U3RhdGUgc3RhdGUpCiB7CiAgICAgc3dpdGNoIChzdGF0ZSkgewot
ICAgIGNhc2UgSFRNTDVMZXhlcjo6UkNEQVRBRW5kVGFnT3BlblN0YXRlOgotICAgIGNhc2UgSFRN
TDVMZXhlcjo6UkNEQVRBRW5kVGFnTmFtZVN0YXRlOgotICAgIGNhc2UgSFRNTDVMZXhlcjo6UkFX
VEVYVEVuZFRhZ09wZW5TdGF0ZToKLSAgICBjYXNlIEhUTUw1TGV4ZXI6OlJBV1RFWFRFbmRUYWdO
YW1lU3RhdGU6Ci0gICAgY2FzZSBIVE1MNUxleGVyOjpTY3JpcHREYXRhRW5kVGFnT3BlblN0YXRl
OgotICAgIGNhc2UgSFRNTDVMZXhlcjo6U2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZToKLSAgICBj
YXNlIEhUTUw1TGV4ZXI6OlNjcmlwdERhdGFFc2NhcGVkRW5kVGFnT3BlblN0YXRlOgotICAgIGNh
c2UgSFRNTDVMZXhlcjo6U2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGU6CisgICAgY2Fz
ZSBIVE1MVG9rZW5pemVyOjpSQ0RBVEFFbmRUYWdPcGVuU3RhdGU6CisgICAgY2FzZSBIVE1MVG9r
ZW5pemVyOjpSQ0RBVEFFbmRUYWdOYW1lU3RhdGU6CisgICAgY2FzZSBIVE1MVG9rZW5pemVyOjpS
QVdURVhURW5kVGFnT3BlblN0YXRlOgorICAgIGNhc2UgSFRNTFRva2VuaXplcjo6UkFXVEVYVEVu
ZFRhZ05hbWVTdGF0ZToKKyAgICBjYXNlIEhUTUxUb2tlbml6ZXI6OlNjcmlwdERhdGFFbmRUYWdP
cGVuU3RhdGU6CisgICAgY2FzZSBIVE1MVG9rZW5pemVyOjpTY3JpcHREYXRhRW5kVGFnTmFtZVN0
YXRlOgorICAgIGNhc2UgSFRNTFRva2VuaXplcjo6U2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdPcGVu
U3RhdGU6CisgICAgY2FzZSBIVE1MVG9rZW5pemVyOjpTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05h
bWVTdGF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtODgsMTYgKzg4LDE2IEBAIGlubGluZSBib29sIGlzRW5kVGFnQnVmZmVy
aW5nU3RhdGUoSFRNTDUKIAogfQogCi1IVE1MNUxleGVyOjpIVE1MNUxleGVyKCkKK0hUTUxUb2tl
bml6ZXI6OkhUTUxUb2tlbml6ZXIoKQogewogICAgIHJlc2V0KCk7CiB9CiAKLUhUTUw1TGV4ZXI6
On5IVE1MNUxleGVyKCkKK0hUTUxUb2tlbml6ZXI6On5IVE1MVG9rZW5pemVyKCkKIHsKIH0KIAot
dm9pZCBIVE1MNUxleGVyOjpyZXNldCgpCit2b2lkIEhUTUxUb2tlbml6ZXI6OnJlc2V0KCkKIHsK
ICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwogICAgIG1fdG9rZW4gPSAwOwpAQCAtMTA2LDcgKzEw
Niw3IEBAIHZvaWQgSFRNTDVMZXhlcjo6cmVzZXQoKQogICAgIG1fYWRkaXRpb25hbEFsbG93ZWRD
aGFyYWN0ZXIgPSAnXDAnOwogfQogCi1pbmxpbmUgYm9vbCBIVE1MNUxleGVyOjpwcm9jZXNzRW50
aXR5KFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQoraW5saW5lIGJvb2wgSFRNTFRva2VuaXplcjo6
cHJvY2Vzc0VudGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKIHsKICAgICBib29sIG5vdEVu
b3VnaENoYXJhY3RlcnMgPSBmYWxzZTsKICAgICB1bnNpZ25lZCB2YWx1ZSA9IGNvbnN1bWVIVE1M
NUVudGl0eShzb3VyY2UsIG5vdEVub3VnaENoYXJhY3RlcnMpOwpAQCAtMjAxLDcgKzIwMSw3IEBA
IGlubGluZSBib29sIEhUTUw1TGV4ZXI6OnByb2Nlc3NFbnRpdHkoU2UKICAgICAgICAgcmV0dXJu
IHRydWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAotYm9vbCBIVE1MNUxleGVyOjpuZXh0VG9rZW4o
U2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1VG9rZW4mIHRva2VuKQorYm9vbCBIVE1MVG9r
ZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1VG9rZW4mIHRv
a2VuKQogewogICAgIC8vIElmIHdlIGhhdmUgYSB0b2tlbiBpbiBwcm9ncmVzcywgdGhlbiB3ZSdy
ZSBzdXBwb3NlZCB0byBiZSBjYWxsZWQgYmFjawogICAgIC8vIHdpdGggdGhlIHNhbWUgdG9rZW4g
c28gd2UgY2FuIGZpbmlzaCBpdC4KQEAgLTE0MzcsMjMgKzE0MzcsMjMgQEAgYm9vbCBIVE1MNUxl
eGVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5s
aW5lIGJvb2wgSFRNTDVMZXhlcjo6dGVtcG9yYXJ5QnVmZmVySXMoY29uc3QgU3RyaW5nJiBleHBl
Y3RlZFN0cmluZykKK2lubGluZSBib29sIEhUTUxUb2tlbml6ZXI6OnRlbXBvcmFyeUJ1ZmZlcklz
KGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRTdHJpbmcpCiB7CiAgICAgcmV0dXJuIHZlY3RvckVxdWFs
c1N0cmluZyhtX3RlbXBvcmFyeUJ1ZmZlciwgZXhwZWN0ZWRTdHJpbmcpOwogfQogCi1pbmxpbmUg
dm9pZCBIVE1MNUxleGVyOjphZGRUb1Bvc3NpYmxlRW5kVGFnKFVDaGFyIGNjKQoraW5saW5lIHZv
aWQgSFRNTFRva2VuaXplcjo6YWRkVG9Qb3NzaWJsZUVuZFRhZyhVQ2hhciBjYykKIHsKICAgICBB
U1NFUlQoaXNFbmRUYWdCdWZmZXJpbmdTdGF0ZShtX3N0YXRlKSk7CiAgICAgbV9idWZmZXJlZEVu
ZFRhZ05hbWUuYXBwZW5kKGNjKTsKIH0KIAotaW5saW5lIGJvb2wgSFRNTDVMZXhlcjo6aXNBcHBy
b3ByaWF0ZUVuZFRhZygpCitpbmxpbmUgYm9vbCBIVE1MVG9rZW5pemVyOjppc0FwcHJvcHJpYXRl
RW5kVGFnKCkKIHsKICAgICByZXR1cm4gbV9idWZmZXJlZEVuZFRhZ05hbWUgPT0gbV9hcHByb3By
aWF0ZUVuZFRhZ05hbWU7CiB9CiAKLWlubGluZSB2b2lkIEhUTUw1TGV4ZXI6OmVtaXRDaGFyYWN0
ZXIoVUNoYXIgY2hhcmFjdGVyKQoraW5saW5lIHZvaWQgSFRNTFRva2VuaXplcjo6ZW1pdENoYXJh
Y3RlcihVQ2hhciBjaGFyYWN0ZXIpCiB7CiAgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSAhPSBIVE1M
NVRva2VuOjpDaGFyYWN0ZXIpIHsKICAgICAgICAgbV90b2tlbi0+YmVnaW5DaGFyYWN0ZXIoY2hh
cmFjdGVyKTsKQEAgLTE0NjIsNyArMTQ2Miw3IEBAIGlubGluZSB2b2lkIEhUTUw1TGV4ZXI6OmVt
aXRDaGFyYWN0ZXIoVUMKICAgICBtX3Rva2VuLT5hcHBlbmRUb0NoYXJhY3RlcihjaGFyYWN0ZXIp
OwogfQogCi1pbmxpbmUgdm9pZCBIVE1MNUxleGVyOjplbWl0Q29kZVBvaW50KHVuc2lnbmVkIHZh
bHVlKQoraW5saW5lIHZvaWQgSFRNTFRva2VuaXplcjo6ZW1pdENvZGVQb2ludCh1bnNpZ25lZCB2
YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPCAweEZGRkYpIHsKICAgICAgICAgZW1pdENoYXJhY3Rl
cih2YWx1ZSk7CkBAIC0xNDcyLDE5ICsxNDcyLDE5IEBAIGlubGluZSB2b2lkIEhUTUw1TGV4ZXI6
OmVtaXRDb2RlUG9pbnQodW4KICAgICBlbWl0Q2hhcmFjdGVyKFUxNl9UUkFJTCh2YWx1ZSkpOwog
fQogCi1pbmxpbmUgdm9pZCBIVE1MNUxleGVyOjplbWl0UGFyc2VFcnJvcigpCitpbmxpbmUgdm9p
ZCBIVE1MVG9rZW5pemVyOjplbWl0UGFyc2VFcnJvcigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotaW5saW5lIHZvaWQgSFRNTDVMZXhlcjo6ZW1pdEN1cnJlbnRUb2tlbigpCitpbmxp
bmUgdm9pZCBIVE1MVG9rZW5pemVyOjplbWl0Q3VycmVudFRva2VuKCkKIHsKICAgICBBU1NFUlQo
bV90b2tlbi0+dHlwZSgpICE9IEhUTUw1VG9rZW46OlVuaW5pdGlhbGl6ZWQpOwogICAgIGlmICht
X3Rva2VuLT50eXBlKCkgPT0gSFRNTDVUb2tlbjo6U3RhcnRUYWcpCiAgICAgICAgIG1fYXBwcm9w
cmlhdGVFbmRUYWdOYW1lID0gbV90b2tlbi0+bmFtZSgpOwogfQogCi1pbmxpbmUgYm9vbCBIVE1M
NUxleGVyOjpzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihjb25zdCBTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSkKK2lubGluZSBib29sIEhUTUxUb2tlbml6ZXI6OnNob3VsZEVtaXRCdWZm
ZXJlZENoYXJhY3RlclRva2VuKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogewogICAg
IHJldHVybiBzb3VyY2UuaXNDbG9zZWQoKSAmJiBtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVUb2tl
bjo6Q2hhcmFjdGVyOwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5oCShyZXZpc2lvbiA2MTY2MykJ
KGZyb20gV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuaDo2MTY2MykKKysrIFdlYkNvcmUvaHRtbC9I
VE1MVG9rZW5pemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBIVE1MNUxleGVy
X2gKKyNkZWZpbmUgSFRNTDVMZXhlcl9oCisKKyNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKKyNp
bmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
SFRNTDVUb2tlbjsKKworY2xhc3MgSFRNTDVMZXhlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Citw
dWJsaWM6CisgICAgZW51bSBTdGF0ZSB7CisgICAgICAgIERhdGFTdGF0ZSwKKyAgICAgICAgQ2hh
cmFjdGVyUmVmZXJlbmNlSW5EYXRhU3RhdGUsCisgICAgICAgIFJDREFUQVN0YXRlLAorICAgICAg
ICBDaGFyYWN0ZXJSZWZlcmVuY2VJblJDREFUQVN0YXRlLAorICAgICAgICBSQVdURVhUU3RhdGUs
CisgICAgICAgIFNjcmlwdERhdGFTdGF0ZSwKKyAgICAgICAgUExBSU5URVhUU3RhdGUsCisgICAg
ICAgIFRhZ09wZW5TdGF0ZSwKKyAgICAgICAgRW5kVGFnT3BlblN0YXRlLAorICAgICAgICBUYWdO
YW1lU3RhdGUsCisgICAgICAgIFJDREFUQUxlc3NUaGFuU2lnblN0YXRlLAorICAgICAgICBSQ0RB
VEFFbmRUYWdPcGVuU3RhdGUsCisgICAgICAgIFJDREFUQUVuZFRhZ05hbWVTdGF0ZSwKKyAgICAg
ICAgUkFXVEVYVExlc3NUaGFuU2lnblN0YXRlLAorICAgICAgICBSQVdURVhURW5kVGFnT3BlblN0
YXRlLAorICAgICAgICBSQVdURVhURW5kVGFnTmFtZVN0YXRlLAorICAgICAgICBTY3JpcHREYXRh
TGVzc1RoYW5TaWduU3RhdGUsCisgICAgICAgIFNjcmlwdERhdGFFbmRUYWdPcGVuU3RhdGUsCisg
ICAgICAgIFNjcmlwdERhdGFFbmRUYWdOYW1lU3RhdGUsCisgICAgICAgIFNjcmlwdERhdGFFc2Nh
cGVTdGFydFN0YXRlLAorICAgICAgICBTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoU3RhdGUsCisg
ICAgICAgIFNjcmlwdERhdGFFc2NhcGVkU3RhdGUsCisgICAgICAgIFNjcmlwdERhdGFFc2NhcGVk
RGFzaFN0YXRlLAorICAgICAgICBTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUsCisgICAg
ICAgIFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUsCisgICAgICAgIFNjcmlwdERh
dGFFc2NhcGVkRW5kVGFnT3BlblN0YXRlLAorICAgICAgICBTY3JpcHREYXRhRXNjYXBlZEVuZFRh
Z05hbWVTdGF0ZSwKKyAgICAgICAgU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUsCisg
ICAgICAgIFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUsCisgICAgICAgIFNjcmlwdERhdGFE
b3VibGVFc2NhcGVkRGFzaFN0YXRlLAorICAgICAgICBTY3JpcHREYXRhRG91YmxlRXNjYXBlZERh
c2hEYXNoU3RhdGUsCisgICAgICAgIFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWdu
U3RhdGUsCisgICAgICAgIFNjcmlwdERhdGFEb3VibGVFc2NhcGVFbmRTdGF0ZSwKKyAgICAgICAg
QmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlLAorICAgICAgICBBdHRyaWJ1dGVOYW1lU3RhdGUsCisg
ICAgICAgIEFmdGVyQXR0cmlidXRlTmFtZVN0YXRlLAorICAgICAgICBCZWZvcmVBdHRyaWJ1dGVW
YWx1ZVN0YXRlLAorICAgICAgICBBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRlLAorICAg
ICAgICBBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlLAorICAgICAgICBBdHRyaWJ1dGVW
YWx1ZVVucXVvdGVkU3RhdGUsCisgICAgICAgIENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRl
VmFsdWVTdGF0ZSwKKyAgICAgICAgQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlLAorICAg
ICAgICBTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUsCisgICAgICAgIEJvZ3VzQ29tbWVudFN0YXRl
LAorICAgICAgICBNYXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0ZSwKKyAgICAgICAgQ29tbWVudFN0
YXJ0U3RhdGUsCisgICAgICAgIENvbW1lbnRTdGFydERhc2hTdGF0ZSwKKyAgICAgICAgQ29tbWVu
dFN0YXRlLAorICAgICAgICBDb21tZW50RW5kRGFzaFN0YXRlLAorICAgICAgICBDb21tZW50RW5k
U3RhdGUsCisgICAgICAgIENvbW1lbnRFbmRCYW5nU3RhdGUsCisgICAgICAgIENvbW1lbnRFbmRT
cGFjZVN0YXRlLAorICAgICAgICBET0NUWVBFU3RhdGUsCisgICAgICAgIEJlZm9yZURPQ1RZUEVO
YW1lU3RhdGUsCisgICAgICAgIERPQ1RZUEVOYW1lU3RhdGUsCisgICAgICAgIEFmdGVyRE9DVFlQ
RU5hbWVTdGF0ZSwKKyAgICAgICAgQWZ0ZXJET0NUWVBFUHVibGljS2V5d29yZFN0YXRlLAorICAg
ICAgICBCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlLAorICAgICAgICBET0NUWVBF
UHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlLAorICAgICAgICBET0NUWVBFUHVibGlj
SWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlLAorICAgICAgICBBZnRlckRPQ1RZUEVQdWJsaWNJ
ZGVudGlmaWVyU3RhdGUsCisgICAgICAgIEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVtSWRl
bnRpZmllcnNTdGF0ZSwKKyAgICAgICAgQWZ0ZXJET0NUWVBFU3lzdGVtS2V5d29yZFN0YXRlLAor
ICAgICAgICBCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlLAorICAgICAgICBET0NU
WVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlLAorICAgICAgICBET0NUWVBFU3lz
dGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlLAorICAgICAgICBBZnRlckRPQ1RZUEVTeXN0
ZW1JZGVudGlmaWVyU3RhdGUsCisgICAgICAgIEJvZ3VzRE9DVFlQRVN0YXRlLAorICAgICAgICBD
REFUQVNlY3Rpb25TdGF0ZSwKKyAgICB9OworCisgICAgSFRNTDVMZXhlcigpOworICAgIH5IVE1M
NUxleGVyKCk7CisKKyAgICB2b2lkIHJlc2V0KCk7CisKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHJl
dHVybnMgdHJ1ZSBpZiBpdCBlbWl0cyBhIHRva2VuLiAgT3RoZXJ3aXNlLCBjYWxsZXJzCisgICAg
Ly8gbXVzdCBwcm92aWRlIHRoZSBzYW1lIChpbiBwcm9ncmVzcykgdG9rZW4gb24gdGhlIG5leHQg
Y2FsbCAodW5sZXNzCisgICAgLy8gdGhleSBjYWxsIHJlc2V0KCkgZmlyc3QpLgorICAgIGJvb2wg
bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYsIEhUTUw1VG9rZW4mKTsKKworICAgIGludCBsaW5l
TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CisgICAgaW50IGNvbHVtbk51
bWJlcigpIGNvbnN0IHsgcmV0dXJuIDE7IH0gLy8gTWF0Y2hlcyBMZWdhY3lIVE1MRG9jdW1lbnRQ
YXJzZXIuaCBiZWhhdmlvci4KKworICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZTsgfQorICAgIHZvaWQgc2V0U3RhdGUoU3RhdGUgc3RhdGUpIHsgbV9zdGF0ZSA9IHN0YXRl
OyB9CisKKyAgICAvLyBIYWNrIHRvIHNraXAgbGVhZGluZyBuZXdsaW5lIGluIDxwcmU+LzxsaXN0
aW5nPiBmb3IgYXV0aG9yaW5nIGVhc2UuCisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3Nw
ZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjcGFy
c2luZy1tYWluLWluYm9keQorICAgIHZvaWQgc2tpcExlYWRpbmdOZXdMaW5lRm9yTGlzdGluZygp
IHsgbV9za2lwTGVhZGluZ05ld0xpbmVGb3JMaXN0aW5nID0gdHJ1ZTsgfQorCitwcml2YXRlOgor
ICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
I3ByZXByb2Nlc3NpbmctdGhlLWlucHV0LXN0cmVhbQorICAgIGNsYXNzIElucHV0U3RyZWFtUHJl
cHJvY2Vzc29yIDogcHVibGljIE5vbmNvcHlhYmxlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIElu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yKCkKKyAgICAgICAgICAgIDogbV9uZXh0SW5wdXRDaGFyYWN0
ZXIoJ1wwJykKKyAgICAgICAgICAgICwgbV9za2lwTmV4dE5ld0xpbmUoZmFsc2UpCisgICAgICAg
IHsKKyAgICAgICAgfQorCisgICAgICAgIFVDaGFyIG5leHRJbnB1dENoYXJhY3RlcigpIGNvbnN0
IHsgcmV0dXJuIG1fbmV4dElucHV0Q2hhcmFjdGVyOyB9CisKKyAgICAgICAgLy8gUmV0dXJucyB3
aGV0aGVyIHdlIHN1Y2NlZWRlZCBpbiBwZWVraW5nIGF0IHRoZSBuZXh0IGNoYXJhY3Rlci4KKyAg
ICAgICAgLy8gVGhlIG9ubHkgd2F5IHdlIGNhbiBmYWlsIHRvIHBlZWsgaXMgaWYgdGhlcmUgYXJl
IG5vIG1vcmUKKyAgICAgICAgLy8gY2hhcmFjdGVycyBpbiB8c291cmNlfCAoYWZ0ZXIgY29sbGFw
c2luZyBcclxuLCBldGMpLgorICAgICAgICBib29sIHBlZWsoU2VnbWVudGVkU3RyaW5nJiBzb3Vy
Y2UsIGludCYgbGluZU51bWJlcikKKyAgICAgICAgeworICAgICAgICAgICAgbV9uZXh0SW5wdXRD
aGFyYWN0ZXIgPSAqc291cmNlOworICAgICAgICAgICAgaWYgKG1fbmV4dElucHV0Q2hhcmFjdGVy
ID09ICdcbicgJiYgbV9za2lwTmV4dE5ld0xpbmUpIHsKKyAgICAgICAgICAgICAgICBtX3NraXBO
ZXh0TmV3TGluZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlUGFzdE5l
d2xpbmUobGluZU51bWJlcik7CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBtX25l
eHRJbnB1dENoYXJhY3RlciA9ICpzb3VyY2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAobV9uZXh0SW5wdXRDaGFyYWN0ZXIgPT0gJ1xyJykgeworICAgICAgICAgICAgICAgIG1fbmV4
dElucHV0Q2hhcmFjdGVyID0gJ1xuJzsKKyAgICAgICAgICAgICAgICBtX3NraXBOZXh0TmV3TGlu
ZSA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1fc2tpcE5l
eHROZXdMaW5lID0gZmFsc2U7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBzcGVjIGlu
ZGljYXRlcyB0aGF0IHRoZSBzdXJyb2dhdGUgcGFpciByYW5nZSBhcyB3ZWxsIGFzCisgICAgICAg
ICAgICAgICAgLy8gYSBudW1iZXIgb2Ygc3BlY2lmaWMgY2hhcmFjdGVyIHZhbHVlcyBhcmUgcGFy
c2UgZXJyb3JzIGFuZCBzaG91bGQgYmUgcmVwbGFjZWQKKyAgICAgICAgICAgICAgICAvLyBieSB0
aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyLiBXZSBzdXNwZWN0IHRoaXMgaXMgYSBwcm9ibGVtIHdp
dGggdGhlIHNwZWMgYXMgZG9pbmcKKyAgICAgICAgICAgICAgICAvLyB0aGF0IGZpbHRlcmluZyBi
cmVha3Mgc3Vycm9nYXRlIHBhaXIgaGFuZGxpbmcgYW5kIGNhdXNlcyB1cyBub3QgdG8gbWF0Y2gg
TWluZWZpZWxkLgorICAgICAgICAgICAgICAgIGlmIChtX25leHRJbnB1dENoYXJhY3RlciA9PSAn
XDAnKQorICAgICAgICAgICAgICAgICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9IDB4RkZGRDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJlIGFyZSBtb3JlIGNoYXJhY3RlcnMgaW4gfHNv
dXJjZXwgYWZ0ZXIgYWR2YW5jaW5nLgorICAgICAgICBib29sIGFkdmFuY2UoU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UsIGludCYgbGluZU51bWJlcikKKyAgICAgICAgeworICAgICAgICAgICAgc291
cmNlLmFkdmFuY2UobGluZU51bWJlcik7CisgICAgICAgICAgICBpZiAoc291cmNlLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gcGVl
ayhzb3VyY2UsIGxpbmVOdW1iZXIpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNu
ZXh0LWlucHV0LWNoYXJhY3RlcgorICAgICAgICBVQ2hhciBtX25leHRJbnB1dENoYXJhY3RlcjsK
KyAgICAgICAgYm9vbCBtX3NraXBOZXh0TmV3TGluZTsKKyAgICB9OworCisgICAgaW5saW5lIHZv
aWQgZW1pdENoYXJhY3RlcihVQ2hhcik7CisgICAgaW5saW5lIHZvaWQgZW1pdFBhcnNlRXJyb3Io
KTsKKyAgICBpbmxpbmUgdm9pZCBlbWl0Q3VycmVudFRva2VuKCk7CisgICAgaW5saW5lIHZvaWQg
ZW1pdENvZGVQb2ludCh1bnNpZ25lZCk7CisKKyAgICBpbmxpbmUgYm9vbCBwcm9jZXNzRW50aXR5
KFNlZ21lbnRlZFN0cmluZyYgc291cmNlKTsKKworICAgIGlubGluZSBib29sIHRlbXBvcmFyeUJ1
ZmZlcklzKGNvbnN0IFN0cmluZyYpOworCisgICAgLy8gU29tZXRpbWVzIHdlIHNwZWN1bGF0aXZl
bHkgY29uc3VtZSBpbnB1dCBjaGFyYWN0ZXJzIGFuZCB3ZSBkb24ndAorICAgIC8vIGtub3cgd2hl
dGhlciB0aGV5IHJlcHJlc2VudCBlbmQgdGFncyBvciBSQ0RBVEEsIGV0Yy4gIFRoZXNlCisgICAg
Ly8gZnVuY3Rpb25zIGhlbHAgbWFuYWdlIHRoZXNlIHN0YXRlLgorICAgIGlubGluZSB2b2lkIGFk
ZFRvUG9zc2libGVFbmRUYWcoVUNoYXIgY2MpOworICAgIGlubGluZSBib29sIGlzQXBwcm9wcmlh
dGVFbmRUYWcoKTsKKworICAgIGlubGluZSBib29sIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3Rl
clRva2VuKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpOworCisgICAgU3RhdGUgbV9zdGF0ZTsKKwor
ICAgIFZlY3RvcjxVQ2hhciwgMzI+IG1fYXBwcm9wcmlhdGVFbmRUYWdOYW1lOworCisgICAgLy8g
bV90b2tlbiBpcyBvd25lZCBieSB0aGUgY2FsbGVyLiAgSWYgbmV4dFRva2VuIGlzIG5vdCBvbiB0
aGUgc3RhY2ssCisgICAgLy8gdGhpcyBtZW1iZXIgbWlnaHQgYmUgcG9pbnRpbmcgdG8gdW5hbGxv
Y2F0ZWQgbWVtb3J5LgorICAgIEhUTUw1VG9rZW4qIG1fdG9rZW47CisgICAgaW50IG1fbGluZU51
bWJlcjsKKworICAgIGJvb2wgbV9za2lwTGVhZGluZ05ld0xpbmVGb3JMaXN0aW5nOworCisgICAg
Ly8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jdGVt
cG9yYXJ5LWJ1ZmZlcgorICAgIFZlY3RvcjxVQ2hhciwgMzI+IG1fdGVtcG9yYXJ5QnVmZmVyOwor
CisgICAgLy8gV2Ugb2NjYXRpb25hbGx5IHdhbnQgdG8gZW1pdCBib3RoIGEgY2hhcmFjdGVyIHRv
a2VuIGFuZCBhbiBlbmQgdGFnCisgICAgLy8gdG9rZW4gKGUuZy4sIHdoZW4gbGV4aW5nIHNjcmlw
dCkuICBXZSBidWZmZXIgdGhlIG5hbWUgb2YgdGhlIGVuZCB0YWcKKyAgICAvLyB0b2tlbiBoZXJl
IHNvIHdlIHJlbWVtYmVyIGl0IG5leHQgdGltZSB3ZSByZS1lbnRlciB0aGUgbGV4ZXIuCisgICAg
VmVjdG9yPFVDaGFyLCAzMj4gbV9idWZmZXJlZEVuZFRhZ05hbWU7CisKKyAgICAvLyBodHRwOi8v
d3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNhZGRpdGlvbmFsLWFs
bG93ZWQtY2hhcmFjdGVyCisgICAgVUNoYXIgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlcjsK
KworICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdv
cmsvI3ByZXByb2Nlc3NpbmctdGhlLWlucHV0LXN0cmVhbQorICAgIElucHV0U3RyZWFtUHJlcHJv
Y2Vzc29yIG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I7Cit9OworCit9CisKKyNlbmRpZgpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTFRva2VuaXplci5oCShyZXZpc2lvbiA2MTY2MykKKysrIFdlYkNvcmUvaHRtbC9IVE1M
VG9rZW5pemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBIVE1MNVRva2VuOwogCi1jbGFzcyBIVE1MNUxleGVyIDogcHVibGlj
IE5vbmNvcHlhYmxlIHsKK2NsYXNzIEhUTUxUb2tlbml6ZXIgOiBwdWJsaWMgTm9uY29weWFibGUg
ewogcHVibGljOgogICAgIGVudW0gU3RhdGUgewogICAgICAgICBEYXRhU3RhdGUsCkBAIC0xMTAs
OCArMTEwLDggQEAgcHVibGljOgogICAgICAgICBDREFUQVNlY3Rpb25TdGF0ZSwKICAgICB9Owog
Ci0gICAgSFRNTDVMZXhlcigpOwotICAgIH5IVE1MNUxleGVyKCk7CisgICAgSFRNTFRva2VuaXpl
cigpOworICAgIH5IVE1MVG9rZW5pemVyKCk7CiAKICAgICB2b2lkIHJlc2V0KCk7CiAK
</data>
<flag name="review"
          id="46362"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>