<?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>200034</bug_id>
          
          <creation_ts>2019-07-23 09:30:56 -0700</creation_ts>
          <short_desc>StringBuilder::append(makeString(...)) is inefficient</short_desc>
          <delta_ts>2019-07-29 13:13:17 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1555051</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-07-23 09:30:56 -0700</bug_when>
    <thetext>Now that we have StringBuilder::flexibleAppend(), we should replace the inefficient use of StringBuilder::append(makeString(...)) to avoid the unneeded string allocation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555052</commentid>
    <comment_count>1</comment_count>
      <attachid>374684</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-07-23 09:34:24 -0700</bug_when>
    <thetext>Created attachment 374684
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556422</commentid>
    <comment_count>2</comment_count>
      <attachid>375042</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-07-28 11:14:03 -0700</bug_when>
    <thetext>Created attachment 375042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556425</commentid>
    <comment_count>3</comment_count>
      <attachid>375044</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-07-28 12:36:54 -0700</bug_when>
    <thetext>Created attachment 375044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556462</commentid>
    <comment_count>4</comment_count>
      <attachid>375044</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-07-28 17:28:52 -0700</bug_when>
    <thetext>Comment on attachment 375044
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=375044&amp;action=review

Nice

&gt; Source/WebCore/ChangeLog:14
&gt; +        A lot more can be done to improve the efficiency of StringBuilder use in the WHLSL code including:

Good tips. I might look into doing some of these. Metal codegen is one of the most expensive phases in WHLSL codegen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556654</commentid>
    <comment_count>5</comment_count>
      <attachid>375091</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-07-29 12:34:27 -0700</bug_when>
    <thetext>Created attachment 375091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556667</commentid>
    <comment_count>6</comment_count>
      <attachid>375091</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-29 13:12:32 -0700</bug_when>
    <thetext>Comment on attachment 375091
Patch

Clearing flags on attachment: 375091

Committed r247917: &lt;https://trac.webkit.org/changeset/247917&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556668</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-29 13:12:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1556670</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-29 13:13:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/53675482&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374684</attachid>
            <date>2019-07-23 09:34:24 -0700</date>
            <delta_ts>2019-07-23 10:08:24 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>84348</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50
cnlQb2ludFNjYWZmb2xkaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAJKHJl
dmlzaW9uIDI0NzU0NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQz
LDcgKzE0Myw3IEBAIFN0cmluZyBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OnJlc291cmNlSGUKIHsK
ICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2xheW91dC5zaXplKCk7ICsraSkgewotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChtYWtlU3RyaW5nKCJzdHJ1Y3QgIiwgbV9uYW1lZEJpbmRHcm91cHNbaV0uc3RydWN0TmFtZSwg
IiB7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInN0cnVjdCAi
LCBtX25hbWVkQmluZEdyb3Vwc1tpXS5zdHJ1Y3ROYW1lLCAiIHtcbiIpOwogICAgICAgICBWZWN0
b3I8c3RkOjpwYWlyPHVuc2lnbmVkLCBTdHJpbmc+PiBzdHJ1Y3RJdGVtczsKICAgICAgICAgZm9y
IChzaXplX3QgaiA9IDA7IGogPCBtX2xheW91dFtpXS5iaW5kaW5ncy5zaXplKCk7ICsraikgewog
ICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fcmVzb3VyY2VNYXAuZmluZCgmbV9sYXlvdXRb
aV0uYmluZGluZ3Nbal0pOwpAQCAtMTcxLDcgKzE3MSw3IEBAIFN0cmluZyBFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc6OnJlc291cmNlSGUKICAgICAgICAgICAgIHJldHVybiBsZWZ0LmZpcnN0IDwgcmln
aHQuZmlyc3Q7CiAgICAgICAgIH0pOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0cnVjdEl0
ZW0gOiBzdHJ1Y3RJdGVtcykKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VT
dHJpbmcoIiAgICAiLCBzdHJ1Y3RJdGVtLnNlY29uZCwgJ1xuJykpOworICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIHN0cnVjdEl0ZW0uc2Vjb25kLCAnXG4n
KTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn07XG5cbiIpOwogICAgIH0KICAgICBy
ZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIE9wdGlv
bmFsPFN0cmluZz4gRW50cnlQb2ludFNjYWZmb2xkaW5nOjoKICAgICAgICAgaWYgKGkpCiAgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKICAgICAgICAgYXV0byYgbmFtZWRC
aW5kR3JvdXAgPSBtX25hbWVkQmluZEdyb3Vwc1tpXTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZygiZGV2aWNlICIsIG5hbWVkQmluZEdyb3VwLnN0cnVjdE5hbWUsICIm
ICIsIG5hbWVkQmluZEdyb3VwLnZhcmlhYmxlTmFtZSwgIiBbW2J1ZmZlcigiLCBuYW1lZEJpbmRH
cm91cC5hcmd1bWVudEJ1ZmZlckluZGV4LCAiKV1dIikpOworICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKCJkZXZpY2UgIiwgbmFtZWRCaW5kR3JvdXAuc3RydWN0TmFtZSwgIiYg
IiwgbmFtZWRCaW5kR3JvdXAudmFyaWFibGVOYW1lLCAiIFtbYnVmZmVyKCIsIG5hbWVkQmluZEdy
b3VwLmFyZ3VtZW50QnVmZmVySW5kZXgsICIpXV0iKTsKICAgICB9CiAgICAgcmV0dXJuIHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAgLTI0Myw3ICsyNDMsNyBAQCBPcHRpb25hbDxTdHJp
bmc+IEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6CiAgICAgICAgIGlmIChpbnRlcm5hbFR5cGUuaXNO
dWxsKCkpCiAgICAgICAgICAgICBpbnRlcm5hbFR5cGUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFt
ZUZvclR5cGUoKml0ZW0udW5uYW1lZFR5cGUpOwogICAgICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9
IG5hbWVkQnVpbHRJbi52YXJpYWJsZU5hbWU7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KG1ha2VTdHJpbmcoaW50ZXJuYWxUeXBlLCAnICcsIHZhcmlhYmxlTmFtZSwgJyAnLCBhdHRyaWJ1
dGVGb3JTZW1hbnRpYyhidWlsdEluU2VtYW50aWMpKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQoaW50ZXJuYWxUeXBlLCAnICcsIHZhcmlhYmxlTmFtZSwgJyAnLCBhdHRy
aWJ1dGVGb3JTZW1hbnRpYyhidWlsdEluU2VtYW50aWMpKTsKICAgICB9CiAgICAgcmV0dXJuIHN0
cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAgLTI3Miw3ICsyNzIsNyBAQCBTdHJpbmcgRW50
cnlQb2ludFNjYWZmb2xkaW5nOjptYW5nbGVkSW5wCiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVE
ZWZpbml0aW9uKTsKICAgICAgICAgYXV0byogbmV4dCA9IHN0cnVjdHVyZURlZmluaXRpb24tPmZp
bmQocGF0aFtpXSk7CiAgICAgICAgIEFTU0VSVChuZXh0KTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQobWFrZVN0cmluZygnLicsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0
dXJlRWxlbWVudCgqbmV4dCkpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgnLicsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudCgqbmV4dCkp
OwogICAgICAgICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gbnVsbHB0cjsKICAgICAgICAgYXV0byYg
dW5pZnlOb2RlID0gbmV4dC0+dHlwZSgpLnVuaWZ5Tm9kZSgpOwogICAgICAgICBpZiAoaXM8QVNU
OjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpIHsKQEAgLTI5Niw3ICsyOTYsNyBAQCBTdHJpbmcgRW50
cnlQb2ludFNjYWZmb2xkaW5nOjptYW5nbGVkT3V0CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVE
ZWZpbml0aW9uKTsKICAgICAgICAgYXV0byogbmV4dCA9IHN0cnVjdHVyZURlZmluaXRpb24tPmZp
bmQoY29tcG9uZW50KTsKICAgICAgICAgQVNTRVJUKG5leHQpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKCcuJywgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1
Y3R1cmVFbGVtZW50KCpuZXh0KSkpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKCcuJywgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpuZXh0
KSk7CiAgICAgICAgIHN0cnVjdHVyZURlZmluaXRpb24gPSBudWxscHRyOwogICAgICAgICBhdXRv
JiB1bmlmeU5vZGUgPSBuZXh0LT50eXBlKCkudW5pZnlOb2RlKCk7CiAgICAgICAgIGlmIChpczxB
U1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKSkgewpAQCAtMzEzLDcgKzMxMyw3IEBAIFN0cmluZyBF
bnRyeVBvaW50U2NhZmZvbGRpbmc6OnVucGFja1Jlc28KIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0
cmluZ0J1aWxkZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVmaW5p
dGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1ha2VTdHJpbmcobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCptX2Z1bmN0aW9u
RGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0tPnR5cGUoKSksICcgJywgbV9wYXJhbWV0ZXJWYXJp
YWJsZXNbaV0sICI7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
bV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCptX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJh
bWV0ZXJzKClbaV0tPnR5cGUoKSksICcgJywgbV9wYXJhbWV0ZXJWYXJpYWJsZXNbaV0sICI7XG4i
KTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sYXlvdXQuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgYXV0byB2YXJpYWJsZU5hbWUgPSBtX25hbWVkQmluZEdyb3Vwc1tpXS52YXJpYWJs
ZU5hbWU7CkBAIC0zMzAsMTYgKzMzMCwxOCBAQCBTdHJpbmcgRW50cnlQb2ludFNjYWZmb2xkaW5n
Ojp1bnBhY2tSZXNvCiAgICAgICAgICAgICAgICAgYXV0byYgdW5uYW1lZFR5cGUgPSAqbV9lbnRy
eVBvaW50SXRlbXMuaW5wdXRzW2l0ZXJhdG9yLT52YWx1ZV0udW5uYW1lZFR5cGU7CiAgICAgICAg
ICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZv
clR5cGUoZG93bmNhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5
cGUoKSk7CiAKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5n
KCJzaXplX3QgIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9ICIsIHZhcmlhYmxlTmFtZSwgJy4n
LCBsZW5ndGhFbGVtZW50TmFtZSwgIi55O1xuIikpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9ICIsIGxlbmd0
aFRlbXBvcmFyeU5hbWUsICIgPDwgMzI7XG4iKSk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQobWFrZVN0cmluZyhsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gIiwgbGVuZ3Ro
VGVtcG9yYXJ5TmFtZSwgIiB8ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBsZW5ndGhFbGVtZW50TmFt
ZSwgIi54O1xuIikpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VT
dHJpbmcobGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIg
LyBzaXplb2YoIiwgbWFuZ2xlZFR5cGVOYW1lLCAiKTtcbiIpKTsKLSAgICAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJpZiAoIiwgbGVuZ3RoVGVtcG9yYXJ5TmFt
ZSwgIiA+IDB4RkZGRkZGRkYpICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPSAweEZGRkZGRkZG
O1xuIikpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmco
bWFuZ2xlZElucHV0UGF0aChwYXRoKSwgIiA9IHsgIiwgdmFyaWFibGVOYW1lLCAnLicsIGVsZW1l
bnROYW1lLCAiLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwg
IikgfTtcbiIpKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KAorICAgICAgICAgICAgICAgICAgICAic2l6ZV90ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIg
PSAiLCB2YXJpYWJsZU5hbWUsICcuJywgbGVuZ3RoRWxlbWVudE5hbWUsICIueTtcbiIsCisgICAg
ICAgICAgICAgICAgICAgIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPSAiLCBsZW5ndGhUZW1wb3Jh
cnlOYW1lLCAiIDw8IDMyO1xuIiwKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoVGVtcG9yYXJ5
TmFtZSwgIiA9ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgfCAiLCB2YXJpYWJsZU5hbWUsICcu
JywgbGVuZ3RoRWxlbWVudE5hbWUsICIueDtcbiIsCisgICAgICAgICAgICAgICAgICAgIGxlbmd0
aFRlbXBvcmFyeU5hbWUsICIgPSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiIC8gc2l6ZW9mKCIs
IG1hbmdsZWRUeXBlTmFtZSwgIik7XG4iLAorICAgICAgICAgICAgICAgICAgICAiaWYgKCIsIGxl
bmd0aFRlbXBvcmFyeU5hbWUsICIgPiAweEZGRkZGRkZGKSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1l
LCAiID0gMHhGRkZGRkZGRjtcbiIsCisgICAgICAgICAgICAgICAgICAgIG1hbmdsZWRJbnB1dFBh
dGgocGF0aCksICIgPSB7ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KCIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIpIH07XG4iCisgICAg
ICAgICAgICAgICAgKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYXV0
byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tpdGVyYXRvci0+dmFsdWVdLnBhdGg7
CiAgICAgICAgICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRCaW5kR3JvdXBzW2ld
Lm5hbWVkQmluZGluZ3Nbal0uZWxlbWVudE5hbWU7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5nbGVkSW5wdXRQYXRoKHBhdGgpLCAiID0gIiwgdmFy
aWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIikpOworICAgICAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWFuZ2xlZElucHV0UGF0aChwYXRoKSwgIiA9ICIs
IHZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIjtcbiIpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQpAQCAtMzQ5LDcgKzM1MSw3IEBAIFN0cmluZyBFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc6OnVucGFja1Jlc28KICAgICAgICAgYXV0byYgcGF0aCA9IGl0ZW0ucGF0aDsKICAg
ICAgICAgYXV0byYgdmFyaWFibGVOYW1lID0gbmFtZWRCdWlsdEluLnZhcmlhYmxlTmFtZTsKICAg
ICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUoKml0ZW0udW5uYW1lZFR5cGUpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtl
U3RyaW5nKG1hbmdsZWRJbnB1dFBhdGgocGF0aCksICIgPSAiLCBtYW5nbGVkVHlwZU5hbWUsICco
JywgdmFyaWFibGVOYW1lLCAiKTtcbiIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZChtYW5nbGVkSW5wdXRQYXRoKHBhdGgpLCAiID0gIiwgbWFuZ2xlZFR5cGVOYW1lLCAn
KCcsIHZhcmlhYmxlTmFtZSwgIik7XG4iKTsKICAgICB9CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKTsKIH0KQEAgLTM4NywyNiArMzg5LDI4IEBAIFN0cmluZyBWZXJ0ZXhFbnRy
eVBvaW50U2NhZmZvbGRpbmc6OmhlbHAKIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxk
ZXI7CiAKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJzdHJ1Y3QgIiwgbV9z
dGFnZUluU3RydWN0TmFtZSwgIiB7XG4iKSk7CisgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgic3RydWN0ICIsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICIge1xuIik7CiAgICAgZm9yIChh
dXRvJiBuYW1lZFN0YWdlSW4gOiBtX25hbWVkU3RhZ2VJbnMpIHsKICAgICAgICAgYXV0byBtYW5n
bGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm1fZW50cnlQb2lu
dEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc10udW5uYW1l
ZFR5cGUpOwogICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbmFtZWRTdGFnZUluLmVsZW1lbnRO
YW1lOwogICAgICAgICBhdXRvIGF0dHJpYnV0ZUluZGV4ID0gbmFtZWRTdGFnZUluLmF0dHJpYnV0
ZUluZGV4OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgIiwg
bWFuZ2xlZFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAiIFtbYXR0cmlidXRlKCIsIGF0dHJp
YnV0ZUluZGV4LCAiKV1dO1xuIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKCIgICAgIiwgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAiIFtbYXR0cmli
dXRlKCIsIGF0dHJpYnV0ZUluZGV4LCAiKV1dO1xuIik7CiAgICAgfQotICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCJ9O1xuXG4iKTsKLQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJp
bmcoInN0cnVjdCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICIge1xuIikpOworICAgIHN0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICJ9O1xuXG4iCisgICAgICAgICJzdHJ1Y3Qg
IiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAiIHtcbiIKKyAgICApOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkgewogICAgICAg
ICBhdXRvJiBvdXRwdXRJdGVtID0gbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1tpXTsKICAgICAg
ICAgYXV0byYgaW50ZXJuYWxUeXBlTmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmludGVybmFsVHlw
ZU5hbWU7CiAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5lbGVt
ZW50TmFtZTsKICAgICAgICAgYXV0byBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVGb3JTZW1hbnRpYygq
b3V0cHV0SXRlbS5zZW1hbnRpYyk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VT
dHJpbmcoIiAgICAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAnICcsIGF0
dHJpYnV0ZSwgIjtcbiIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgi
ICAgICIsIGludGVybmFsVHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICcgJywgYXR0cmlidXRl
LCAiO1xuIik7CiAgICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9O1xuXG4iKTsKLQot
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJlc291cmNlSGVscGVyVHlwZXMoKSk7CisgICAgc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgIn07XG5cbiIsCisgICAgICAgIHJl
c291cmNlSGVscGVyVHlwZXMoKQorICAgICk7CiAKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50
b1N0cmluZygpOwogfQpAQCAtNDE1LDEyICs0MTksMTIgQEAgU3RyaW5nIFZlcnRleEVudHJ5UG9p
bnRTY2FmZm9sZGluZzo6c2lnbgogewogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsK
IAotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInZlcnRleCAiLCBtX3JldHVy
blN0cnVjdE5hbWUsICcgJywgZnVuY3Rpb25OYW1lLCAnKCcsIG1fc3RhZ2VJblN0cnVjdE5hbWUs
ICcgJywgbV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgIiBbW3N0YWdlX2luXV0iKSk7CisgICAgc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidmVydGV4ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwg
JyAnLCBmdW5jdGlvbk5hbWUsICcoJywgbV9zdGFnZUluU3RydWN0TmFtZSwgJyAnLCBtX3N0YWdl
SW5QYXJhbWV0ZXJOYW1lLCAiIFtbc3RhZ2VfaW5dXSIpOwogICAgIGlmIChhdXRvIHJlc291cmNl
U2lnbmF0dXJlID0gdGhpcy0+cmVzb3VyY2VTaWduYXR1cmUoKSkKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQobWFrZVN0cmluZygiLCAiLCAqcmVzb3VyY2VTaWduYXR1cmUpKTsKKyAgICAg
ICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiLCAiLCAqcmVzb3VyY2VTaWduYXR1cmUp
OwogICAgIGlmIChhdXRvIGJ1aWx0SW5zU2lnbmF0dXJlID0gdGhpcy0+YnVpbHRJbnNTaWduYXR1
cmUoKSkKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiLCAiLCAqYnVp
bHRJbnNTaWduYXR1cmUpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSIpOworICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIsICIsICpidWlsdEluc1NpZ25hdHVyZSk7
CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKIAogICAgIHJldHVybiBzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC00MzQsNyArNDM4LDcgQEAgU3RyaW5nIFZlcnRleEVudHJ5
UG9pbnRTY2FmZm9sZGluZzo6dW5wYQogICAgIGZvciAoYXV0byYgbmFtZWRTdGFnZUluIDogbV9u
YW1lZFN0YWdlSW5zKSB7CiAgICAgICAgIGF1dG8mIHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5p
bnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRlbXNdLnBhdGg7CiAgICAgICAg
IGF1dG8mIGVsZW1lbnROYW1lID0gbmFtZWRTdGFnZUluLmVsZW1lbnROYW1lOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1hbmdsZWRJbnB1dFBhdGgocGF0aCksICIg
PSAiLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIikpOwor
ICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRJbnB1dFBhdGgocGF0
aCksICIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xu
Iik7CiAgICAgfQogCiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTQ0
MywxNyArNDQ3LDE4IEBAIFN0cmluZyBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OnVucGEK
IFN0cmluZyBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OnBhY2soY29uc3QgU3RyaW5nJiBp
bnB1dFZhcmlhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBvdXRwdXRWYXJpYWJsZU5hbWUpCiB7CiAg
ICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KG1ha2VTdHJpbmcobV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIG91dHB1dFZhcmlhYmxlTmFtZSwg
IjtcbiIpKTsKKworICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV9yZXR1cm5TdHJ1
Y3ROYW1lLCAnICcsIG91dHB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOwogICAgIGlmIChtX2VudHJ5
UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKSA9PSAxICYmICFtX2VudHJ5UG9pbnRJdGVtcy5vdXRw
dXRzWzBdLnBhdGguc2l6ZSgpKSB7CiAgICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbV9uYW1l
ZE91dHB1dHNbMF0uZWxlbWVudE5hbWU7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1h
a2VTdHJpbmcob3V0cHV0VmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW5w
dXRWYXJpYWJsZU5hbWUsICI7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQob3V0cHV0VmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW5wdXRW
YXJpYWJsZU5hbWUsICI7XG4iKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJp
bmcoKTsKICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVt
cy5vdXRwdXRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbV9u
YW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7CiAgICAgICAgIGF1dG8mIGludGVybmFsVHlwZU5h
bWUgPSBtX25hbWVkT3V0cHV0c1tpXS5pbnRlcm5hbFR5cGVOYW1lOwogICAgICAgICBhdXRvJiBw
YXRoID0gbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1tpXS5wYXRoOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG91dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50
TmFtZSwgIiA9ICIsIGludGVybmFsVHlwZU5hbWUsICcoJywgaW5wdXRWYXJpYWJsZU5hbWUsIG1h
bmdsZWRPdXRwdXRQYXRoKHBhdGgpLCAiKTtcbiIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZChvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAi
LCBpbnRlcm5hbFR5cGVOYW1lLCAnKCcsIGlucHV0VmFyaWFibGVOYW1lLCBtYW5nbGVkT3V0cHV0
UGF0aChwYXRoKSwgIik7XG4iKTsKICAgICB9CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKTsKIH0KQEAgLTQ5MywyNiArNDk4LDI4IEBAIFN0cmluZyBGcmFnbWVudEVudHJ5UG9p
bnRTY2FmZm9sZGluZzo6aGUKIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAK
LSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJzdHJ1Y3QgIiwgbV9zdGFnZUlu
U3RydWN0TmFtZSwgIiB7XG4iKSk7CisgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgi
c3RydWN0ICIsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICIge1xuIik7CiAgICAgZm9yIChhdXRvJiBu
YW1lZFN0YWdlSW4gOiBtX25hbWVkU3RhZ2VJbnMpIHsKICAgICAgICAgYXV0byBtYW5nbGVkVHlw
ZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm1fZW50cnlQb2ludEl0ZW1z
LmlucHV0c1tuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc10udW5uYW1lZFR5cGUp
OwogICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbmFtZWRTdGFnZUluLmVsZW1lbnROYW1lOwog
ICAgICAgICBhdXRvIGF0dHJpYnV0ZUluZGV4ID0gbmFtZWRTdGFnZUluLmF0dHJpYnV0ZUluZGV4
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgIiwgbWFuZ2xl
ZFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAiIFtbdXNlcih1c2VyIiwgYXR0cmlidXRlSW5k
ZXgsICIpXV07XG4iKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAg
ICAiLCBtYW5nbGVkVHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICIgW1t1c2VyKHVzZXIiLCBh
dHRyaWJ1dGVJbmRleCwgIildXTtcbiIpOwogICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgifTtcblxuIik7Ci0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJzdHJ1
Y3QgIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAiIHtcbiIpKTsKKyAgICBzdHJpbmdCdWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKAorICAgICAgICAifTtcblxuIgorICAgICAgICAic3RydWN0ICIsIG1fcmV0
dXJuU3RydWN0TmFtZSwgIiB7XG4iCisgICAgKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byYg
b3V0cHV0SXRlbSA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbaV07CiAgICAgICAgIGF1dG8m
IGludGVybmFsVHlwZU5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5pbnRlcm5hbFR5cGVOYW1lOwog
ICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7
CiAgICAgICAgIGF1dG8gYXR0cmlidXRlID0gYXR0cmlidXRlRm9yU2VtYW50aWMoKm91dHB1dEl0
ZW0uc2VtYW50aWMpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIg
ICAgIiwgaW50ZXJuYWxUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgJyAnLCBhdHRyaWJ1dGUs
ICI7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICAiLCBp
bnRlcm5hbFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAnICcsIGF0dHJpYnV0ZSwgIjtcbiIp
OwogICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifTtcblxuIik7Ci0KLSAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChyZXNvdXJjZUhlbHBlclR5cGVzKCkpOworICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICJ9O1xuXG4iLAorICAgICAgICByZXNvdXJjZUhl
bHBlclR5cGVzKCkKKyAgICApOwogCiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KTsKIH0KQEAgLTUyMSwxMiArNTI4LDEyIEBAIFN0cmluZyBGcmFnbWVudEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZzo6c2kKIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAKLSAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJmcmFnbWVudCAiLCBtX3JldHVyblN0cnVj
dE5hbWUsICcgJywgZnVuY3Rpb25OYW1lLCAnKCcsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICcgJywg
bV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgIiBbW3N0YWdlX2luXV0iKSk7CisgICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZCgiZnJhZ21lbnQgIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcs
IGZ1bmN0aW9uTmFtZSwgJygnLCBtX3N0YWdlSW5TdHJ1Y3ROYW1lLCAnICcsIG1fc3RhZ2VJblBh
cmFtZXRlck5hbWUsICIgW1tzdGFnZV9pbl1dIik7CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VTaWdu
YXR1cmUgPSB0aGlzLT5yZXNvdXJjZVNpZ25hdHVyZSgpKQotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChtYWtlU3RyaW5nKCIsICIsICpyZXNvdXJjZVNpZ25hdHVyZSkpOworICAgICAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIsICIsICpyZXNvdXJjZVNpZ25hdHVyZSk7CiAg
ICAgaWYgKGF1dG8gYnVpbHRJbnNTaWduYXR1cmUgPSB0aGlzLT5idWlsdEluc1NpZ25hdHVyZSgp
KQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIsICIsICpidWlsdElu
c1NpZ25hdHVyZSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIik7CisgICAgICAgIHN0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiwgIiwgKmJ1aWx0SW5zU2lnbmF0dXJlKTsKKyAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwogCiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIu
dG9TdHJpbmcoKTsKIH0KQEAgLTU0MCw3ICs1NDcsNyBAQCBTdHJpbmcgRnJhZ21lbnRFbnRyeVBv
aW50U2NhZmZvbGRpbmc6OnVuCiAgICAgZm9yIChhdXRvJiBuYW1lZFN0YWdlSW4gOiBtX25hbWVk
U3RhZ2VJbnMpIHsKICAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0
c1tuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9pbnRJdGVtc10ucGF0aDsKICAgICAgICAgYXV0
byYgZWxlbWVudE5hbWUgPSBuYW1lZFN0YWdlSW4uZWxlbWVudE5hbWU7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWFuZ2xlZElucHV0UGF0aChwYXRoKSwgIiA9ICIs
IG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICcuJywgZWxlbWVudE5hbWUsICI7XG4iKSk7CisgICAg
ICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWFuZ2xlZElucHV0UGF0aChwYXRoKSwg
IiA9ICIsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICcuJywgZWxlbWVudE5hbWUsICI7XG4iKTsK
ICAgICB9CiAKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwpAQCAtNTQ5LDE3
ICs1NTYsMTggQEAgU3RyaW5nIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjp1bgogU3Ry
aW5nIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjpwYWNrKGNvbnN0IFN0cmluZyYgaW5w
dXRWYXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgb3V0cHV0VmFyaWFibGVOYW1lKQogewogICAg
IFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCht
YWtlU3RyaW5nKG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBvdXRwdXRWYXJpYWJsZU5hbWUsICI7
XG4iKSk7CisKKyAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fcmV0dXJuU3RydWN0
TmFtZSwgJyAnLCBvdXRwdXRWYXJpYWJsZU5hbWUsICI7XG4iKTsKICAgICBpZiAobV9lbnRyeVBv
aW50SXRlbXMub3V0cHV0cy5zaXplKCkgPT0gMSAmJiAhbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0
c1swXS5wYXRoLnNpemUoKSkgewogICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG1fbmFtZWRP
dXRwdXRzWzBdLmVsZW1lbnROYW1lOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtl
U3RyaW5nKG91dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGlucHV0
VmFyaWFibGVOYW1lLCAiO1xuIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKG91dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGlucHV0VmFy
aWFibGVOYW1lLCAiO1xuIik7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5n
KCk7CiAgICAgfQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMu
b3V0cHV0cy5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG1fbmFt
ZWRPdXRwdXRzW2ldLmVsZW1lbnROYW1lOwogICAgICAgICBhdXRvJiBpbnRlcm5hbFR5cGVOYW1l
ID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKICAgICAgICAgYXV0byYgcGF0
aCA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbaV0ucGF0aDsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQobWFrZVN0cmluZyhvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5h
bWUsICIgPSAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnKCcsIGlucHV0VmFyaWFibGVOYW1lLCBtYW5n
bGVkT3V0cHV0UGF0aChwYXRoKSwgIik7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxl
eGlibGVBcHBlbmQob3V0cHV0VmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwg
aW50ZXJuYWxUeXBlTmFtZSwgJygnLCBpbnB1dFZhcmlhYmxlTmFtZSwgbWFuZ2xlZE91dHB1dFBh
dGgocGF0aCksICIpO1xuIik7CiAgICAgfQogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3Ry
aW5nKCk7CiB9CkBAIC01NzgsMTggKzU4NiwxOCBAQCBTdHJpbmcgQ29tcHV0ZUVudHJ5UG9pbnRT
Y2FmZm9sZGluZzo6c2lnCiB7CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogCi0g
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygia2VybmVsIHZvaWQgIiwgZnVuY3Rp
b25OYW1lLCAnKCcpKTsKKyAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJrZXJuZWwg
dm9pZCAiLCBmdW5jdGlvbk5hbWUsICcoJyk7CiAgICAgYm9vbCBlbXB0eSA9IHRydWU7CiAgICAg
aWYgKGF1dG8gcmVzb3VyY2VTaWduYXR1cmUgPSB0aGlzLT5yZXNvdXJjZVNpZ25hdHVyZSgpKSB7
CiAgICAgICAgIGVtcHR5ID0gZmFsc2U7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1h
a2VTdHJpbmcoKnJlc291cmNlU2lnbmF0dXJlKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCpyZXNvdXJjZVNpZ25hdHVyZSk7CiAgICAgfQogICAgIGlmIChhdXRvIGJ1aWx0SW5zU2ln
bmF0dXJlID0gdGhpcy0+YnVpbHRJbnNTaWduYXR1cmUoKSkgewogICAgICAgICBpZiAoIWVtcHR5
KQogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7CiAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCpidWlsdEluc1NpZ25hdHVyZSk7CiAgICAgfQotICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCIpIik7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKIAogICAg
IHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TEZ1bmN0aW9uV3JpdGVyLmNwcAkocmV2aXNpb24gMjQ3NTQ1KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBGdW5jdGlvbkRlY2xhcmF0aW9uV3JpdGVy
Ojp2aXNpdChBUwogCiAgICAgYXV0byBpdGVyYXRvciA9IG1fZnVuY3Rpb25NYXBwaW5nLmZpbmQo
JmZ1bmN0aW9uRGVjbGFyYXRpb24pOwogICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX2Z1bmN0aW9u
TWFwcGluZy5lbmQoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShmdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSks
ICcgJywgaXRlcmF0b3ItPnZhbHVlLCAnKCcpKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGZ1bmN0aW9uRGVjbGFyYXRp
b24udHlwZSgpKSwgJyAnLCBpdGVyYXRvci0+dmFsdWUsICcoJyk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkg
ewogICAgICAgICBpZiAoaSkKICAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwg
Iik7CkBAIC05MSwxNCArOTEsMTQgQEAgcHVibGljOgogICAgICAgICAsIG1fZnVuY3Rpb25NYXBw
aW5nKGZ1bmN0aW9uTWFwcGluZykKICAgICAgICAgLCBtX2xheW91dChsYXlvdXQpCiAgICAgewot
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoCisgICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKICAgICAgICAgICAgICJ0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD5cbiIKICAgICAgICAgICAgICJpbmxpbmUgdm9pZCAiLCBtZW1zZXRaZXJvRnVuY3Rpb25O
YW1lLCAiKHRocmVhZCBUJiB2YWx1ZSlcbiIKICAgICAgICAgICAgICJ7XG4iCiAgICAgICAgICAg
ICAiICAgIHRocmVhZCBjaGFyKiBwdHIgPSBzdGF0aWNfY2FzdDx0aHJlYWQgY2hhcio+KHN0YXRp
Y19jYXN0PHRocmVhZCB2b2lkKj4oJnZhbHVlKSk7XG4iCiAgICAgICAgICAgICAiICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKFQpOyArK2kpXG4iCiAgICAgICAgICAgICAiICAgICAg
ICBwdHJbaV0gPSAwO1xuIgotICAgICAgICAgICAgIn1cbiIpKTsKKyAgICAgICAgICAgICJ9XG4i
KTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIG1lbXNldFplcm9G
dW5jdGlvbk5hbWUgPSAibWVtc2V0WmVybyI7CkBAIC0yMzAsMTAgKzIzMCwxMSBAQCB2b2lkIEZ1
bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgICAgIGlmICghZW50cnlQb2lu
dFNjYWZmb2xkaW5nKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2VudHJ5UG9pbnRT
Y2FmZm9sZGluZyA9IFdURk1vdmUoZW50cnlQb2ludFNjYWZmb2xkaW5nKTsKLSAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+aGVscGVyVHlwZXMo
KSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+c2ln
bmF0dXJlKGl0ZXJhdG9yLT52YWx1ZSksICIge1xuIikpOwotICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1fZW50cnlQb2ludFNjYWZmb2xkaW5nLT51bnBhY2soKSk7CisgICAgICAgIG1f
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgIG1fZW50cnlQb2ludFNj
YWZmb2xkaW5nLT5oZWxwZXJUeXBlcygpLCAnXG4nLAorICAgICAgICAgICAgbV9lbnRyeVBvaW50
U2NhZmZvbGRpbmctPnNpZ25hdHVyZShpdGVyYXRvci0+dmFsdWUpLCAiIHtcbiIsCisgICAgICAg
ICAgICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+dW5wYWNrKCkKKyAgICAgICAgKTsKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygp
LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdmFyaWFibGVN
YXBwaW5nLmFkZCgmZnVuY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMoKVtpXSwgbV9lbnRyeVBv
aW50U2NhZmZvbGRpbmctPnBhcmFtZXRlclZhcmlhYmxlcygpW2ldKTsKICAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CkBAIC0yNDQsNyAr
MjQ1LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgICAg
ICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZyA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgQVNTRVJUKG1fZW50cnlQb2ludFNjYWZmb2xkaW5nID09IG51bGxwdHIpOwotICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKGZ1bmN0aW9uRGVmaW5pdGlvbi50eXBlKCkpLCAnICcsIGl0ZXJhdG9yLT52YWx1ZSwg
JygnKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1l
ci5tYW5nbGVkTmFtZUZvclR5cGUoZnVuY3Rpb25EZWZpbml0aW9uLnR5cGUoKSksICcgJywgaXRl
cmF0b3ItPnZhbHVlLCAnKCcpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0
aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGF1
dG8mIHBhcmFtZXRlciA9IGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV07CiAgICAg
ICAgICAgICBpZiAoaSkKQEAgLTI1Miw3ICsyNTMsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlcjo6dmlzaXQoQVNUCiAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlck5hbWUgPSBnZW5l
cmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV92
YXJpYWJsZU1hcHBpbmcuYWRkKCZwYXJhbWV0ZXIsIHBhcmFtZXRlck5hbWUpOwogICAgICAgICAg
ICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICAg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtX3R5cGVOYW1lci5tYW5n
bGVkTmFtZUZvclR5cGUoKnBhcmFtZXRlci0+dHlwZSgpKSwgJyAnLCBwYXJhbWV0ZXJOYW1lKSk7
CisgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKCpwYXJhbWV0ZXItPnR5cGUoKSksICcgJywgcGFyYW1ldGVyTmFt
ZSk7CiAgICAgICAgIH0KICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSB7XG4iKTsK
ICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpKTsK
QEAgLTI4OCw4ICsyODksMTAgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0
KEFTVAogICAgICAgICBicmVhazsKICAgICBjYXNlIEJyZWFrQ29udGV4dDo6TG9vcDoKICAgICAg
ICAgQVNTRVJUKG1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZS5sZW5ndGgoKSk7
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtX2JyZWFrT3V0T2ZD
dXJyZW50TG9vcEVhcmx5VmFyaWFibGUsICIgPSB0cnVlO1xuIikpOwotICAgICAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKCJicmVhaztcbiIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxl
eGlibGVBcHBlbmQoCisgICAgICAgICAgICBtX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFy
aWFibGUsICIgPSB0cnVlO1xuIgorICAgICAgICAgICAgImJyZWFrO1xuIgorICAgICAgICApOwog
ICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC0zMTUsMjAgKzMxOCwyMyBAQCB2b2lkIEZ1bmN0
aW9uRGVmaW5pdGlvbldyaXRlcjo6ZW1pdExvb3AoCiB7CiAgICAgU2V0Rm9yU2NvcGU8U3RyaW5n
PiBsb29wVmFyaWFibGVTY29wZShtX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUs
IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpKTsKIAotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQobWFrZVN0cmluZygiYm9vbCAiLCBtX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFi
bGUsICIgPSBmYWxzZTtcbiIpKTsKLQotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIndoaWxl
ICh0cnVlKSB7XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAg
ICAgICJib29sICIsIG1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgIiA9IGZh
bHNlO1xuIiwKKyAgICAgICAgIndoaWxlICh0cnVlKSB7XG4iCisgICAgKTsKIAogICAgIGlmIChs
b29wQ29uZGl0aW9uTG9jYXRpb24gPT0gTG9vcENvbmRpdGlvbkxvY2F0aW9uOjpCZWZvcmVCb2R5
ICYmIGNvbmRpdGlvbkV4cHJlc3Npb24pIHsKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpj
b25kaXRpb25FeHByZXNzaW9uKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtl
U3RyaW5nKCJpZiAoISIsIHRha2VMYXN0VmFsdWUoKSwgIikgYnJlYWs7XG4iKSk7CisgICAgICAg
IG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiaWYgKCEiLCB0YWtlTGFzdFZhbHVlKCks
ICIpIGJyZWFrO1xuIik7CiAgICAgfQogCiAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiZG8g
e1xuIik7CiAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uYWw8QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250
ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4dCwgQnJlYWtDb250ZXh0OjpMb29wKTsKICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoYm9keSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgifSB3aGls
ZShmYWxzZSk7IFxuIik7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJp
ZiAoIiwgbV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCAiKSBicmVhaztcbiIp
KTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICJ9IHdoaWxl
KGZhbHNlKTsgXG4iCisgICAgICAgICJpZiAoIiwgbV9icmVha091dE9mQ3VycmVudExvb3BFYXJs
eVZhcmlhYmxlLCAiKSBicmVhaztcbiIKKyAgICApOwogCiAgICAgaWYgKGluY3JlbWVudCkgewog
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmluY3JlbWVudCk7CkBAIC0zMzksNyArMzQ1LDcg
QEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmVtaXRMb29wKAogCiAgICAgaWYgKGxv
b3BDb25kaXRpb25Mb2NhdGlvbiA9PSBMb29wQ29uZGl0aW9uTG9jYXRpb246OkFmdGVyQm9keSAm
JiBjb25kaXRpb25FeHByZXNzaW9uKSB7CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqY29u
ZGl0aW9uRXhwcmVzc2lvbik7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0
cmluZygiaWYgKCEiLCB0YWtlTGFzdFZhbHVlKCksICIpIGJyZWFrO1xuIikpOworICAgICAgICBt
X3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImlmICghIiwgdGFrZUxhc3RWYWx1ZSgpLCAi
KSBicmVhaztcbiIpOwogICAgIH0KIAogICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIn0gXG4i
KTsKQEAgLTM3Myw3ICszNzksNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlz
aXQoQVNUCiB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpJZlN0YXRl
bWVudCYgaWZTdGF0ZW1lbnQpCiB7CiAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50
LmNvbmRpdGlvbmFsKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygi
aWYgKCIsIHRha2VMYXN0VmFsdWUoKSwgIikge1xuIikpOworICAgIG1fc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZCgiaWYgKCIsIHRha2VMYXN0VmFsdWUoKSwgIikge1xuIik7CiAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmJvZHkoKSk7CiAgICAgaWYgKGlmU3RhdGVtZW50
LmVsc2VCb2R5KCkpIHsKICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgifSBlbHNlIHtc
biIpOwpAQCAtMzg4LDEwICszOTQsMTIgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OnZpc2l0KEFTVAogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnJldHVyblN0YXRlbWVudC52
YWx1ZSgpKTsKICAgICAgICAgaWYgKG1fZW50cnlQb2ludFNjYWZmb2xkaW5nKSB7CiAgICAgICAg
ICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAg
ICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+
cGFjayh0YWtlTGFzdFZhbHVlKCksIHZhcmlhYmxlTmFtZSkpOwotICAgICAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJyZXR1cm4gIiwgdmFyaWFibGVOYW1lLCAiO1xu
IikpOworICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAg
ICAgICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xkaW5nLT5wYWNrKHRha2VMYXN0VmFsdWUoKSwg
dmFyaWFibGVOYW1lKSwKKyAgICAgICAgICAgICAgICAicmV0dXJuICIsIHZhcmlhYmxlTmFtZSwg
IjtcbiIKKyAgICAgICAgICAgICk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJyZXR1cm4gIiwgdGFrZUxhc3RWYWx1ZSgpLCAi
O1xuIikpOworICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJyZXR1
cm4gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xuIik7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoInJldHVybjtcbiIpOwogfQpAQCAtNDAwLDcgKzQwOCw3IEBAIHZv
aWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKIHsKICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoc3dpdGNoU3RhdGVtZW50LnZhbHVlKCkpOwogCi0gICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtYWtlU3RyaW5nKCJzd2l0Y2ggKCIsIHRha2VMYXN0VmFsdWUoKSwgIikgeyIpKTsK
KyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInN3aXRjaCAoIiwgdGFrZUxhc3RW
YWx1ZSgpLCAiKSB7Iik7CiAgICAgZm9yIChhdXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVt
ZW50LnN3aXRjaENhc2VzKCkpCiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNl
KTsKICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsKQEAgLTQwOSw3ICs0MTcsNyBA
QCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiB2b2lkIEZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpTd2l0Y2hDYXNlJiBzd2l0Y2hDYXNlKQogewog
ICAgIGlmIChzd2l0Y2hDYXNlLnZhbHVlKCkpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQobWFrZVN0cmluZygiY2FzZSAiLCBjb25zdGFudEV4cHJlc3Npb25TdHJpbmcoKnN3aXRjaENh
c2UudmFsdWUoKSksICI6XG4iKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgiY2FzZSAiLCBjb25zdGFudEV4cHJlc3Npb25TdHJpbmcoKnN3aXRjaENhc2UudmFsdWUo
KSksICI6XG4iKTsKICAgICBlbHNlCiAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImRl
ZmF1bHQ6XG4iKTsKICAgICBTZXRGb3JTY29wZTxPcHRpb25hbDxCcmVha0NvbnRleHQ+PiBicmVh
a0NvbnRleHQobV9jdXJyZW50QnJlYWtDb250ZXh0LCBCcmVha0NvbnRleHQ6OlN3aXRjaCk7CkBA
IC00MzIsNyArNDQwLDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFT
VAogewogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7
CiAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUoaW50ZWdlckxpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0g
c3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBpbnRlZ2VyTGl0ZXJhbC52YWx1
ZSgpLCAiKTtcbiIpKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWFuZ2xl
ZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmdsZWRU
eXBlTmFtZSwgIj4oIiwgaW50ZWdlckxpdGVyYWwudmFsdWUoKSwgIik7XG4iKTsKICAgICBhcHBl
bmRSaWdodFZhbHVlKGludGVnZXJMaXRlcmFsLCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC00NDAs
NyArNDQ4LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogewog
ICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAg
YXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUodW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbC5yZXNvbHZlZFR5cGUoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZChtYWtlU3RyaW5nKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIg
PSBzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIHVuc2lnbmVkSW50ZWdlckxp
dGVyYWwudmFsdWUoKSwgIik7XG4iKSk7CisgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSBzdGF0aWNfY2FzdDwi
LCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSwg
Iik7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWwsIHZh
cmlhYmxlTmFtZSk7CiB9CiAKQEAgLTQ0OCw3ICs0NTYsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5p
dGlvbldyaXRlcjo6dmlzaXQoQVNUCiB7CiAgICAgYXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZShmbG9hdExpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUsICcgJywg
dmFyaWFibGVOYW1lLCAiID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBm
bG9hdExpdGVyYWwudmFsdWUoKSwgIik7XG4iKSk7CisgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSBzdGF0aWNf
Y2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIGZsb2F0TGl0ZXJhbC52YWx1ZSgpLCAiKTtc
biIpOwogICAgIGFwcGVuZFJpZ2h0VmFsdWUoZmxvYXRMaXRlcmFsLCB2YXJpYWJsZU5hbWUpOwog
fQogCkBAIC00NTksMTIgKzQ2NywxMSBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6
dmlzaXQoQVNUCiAgICAgYm9vbCBpc0FycmF5UmVmZXJlbmNlVHlwZSA9IGlzPEFTVDo6QXJyYXlS
ZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSk7CiAKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdl
bmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFr
ZVN0cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobnVsbExpdGVyYWwucmVzb2x2
ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIpKTsKKyAgICBtX3N0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKG51bGxMaXRl
cmFsLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiKTsKICAgICBpZiAo
aXNBcnJheVJlZmVyZW5jZVR5cGUpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInsg
bnVsbHB0ciwgMCB9Iik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInsgbnVsbHB0
ciwgMCB9O1xuIik7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJu
dWxscHRyIik7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiO1xuIik7CisgICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoIm51bGxwdHI7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVl
KG51bGxMaXRlcmFsLCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC00NzIsNyArNDc5LDcgQEAgdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogewogICAgIGF1dG8gdmFyaWFi
bGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlw
ZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoYm9vbGVhbkxpdGVyYWwucmVz
b2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5n
bGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xl
ZFR5cGVOYW1lLCAiPigiLCBib29sZWFuTGl0ZXJhbC52YWx1ZSgpID8gInRydWUiIDogImZhbHNl
IiwgIik7XG4iKSk7CisgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRU
eXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSBzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlw
ZU5hbWUsICI+KCIsIGJvb2xlYW5MaXRlcmFsLnZhbHVlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiLCAi
KTtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFsdWUoYm9vbGVhbkxpdGVyYWwsIHZhcmlhYmxlTmFt
ZSk7CiB9CiAKQEAgLTQ4Miw3ICs0ODksNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRl
cjo6dmlzaXQoQVNUCiAgICAgQVNTRVJUKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJh
dGlvbkRlZmluaXRpb24oKSk7CiAgICAgYXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRW
YXJpYWJsZU5hbWUoKTsKICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZShlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwucmVzb2x2ZWRUeXBlKCkp
OwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUs
ICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwgbWFuZ2xlZFR5cGVOYW1lLCAnLicsIG1fdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yRW51bWVyYXRpb25NZW1iZXIoKmVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKSwgIjtcbiIpKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQobWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIs
IG1hbmdsZWRUeXBlTmFtZSwgJy4nLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvckVudW1lcmF0
aW9uTWVtYmVyKCplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSks
ICI7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCwg
dmFyaWFibGVOYW1lKTsKIH0KIApAQCAtNTA1LDggKzUxMiwxMCBAQCB2b2lkIEZ1bmN0aW9uRGVm
aW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgYXV0byBwb2ludGVyTmFtZSA9IGdlbmVyYXRl
TmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLnJlc29sdmVkVHlw
ZSgpKTsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2UuYmFz
ZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInRocmVhZCAiLCBt
YW5nbGVkVHlwZU5hbWUsICIqICIsIHBvaW50ZXJOYW1lLCAiID0gJiIsIHRha2VMYXN0VmFsdWUo
KSwgIi0+IiwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KGdsb2Jh
bFZhcmlhYmxlUmVmZXJlbmNlLnN0cnVjdEZpZWxkKCkpLCAiO1xuIikpOwotICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFsdWVOYW1l
LCAiID0gIiwgIioiLCBwb2ludGVyTmFtZSwgIjtcbiIpKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQoCisgICAgICAgICJ0aHJlYWQgIiwgbWFuZ2xlZFR5cGVOYW1lLCAiKiAi
LCBwb2ludGVyTmFtZSwgIiA9ICYiLCB0YWtlTGFzdFZhbHVlKCksICItPiIsIG1fdHlwZU5hbWVy
Lm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5z
dHJ1Y3RGaWVsZCgpKSwgIjtcbiIsCisgICAgICAgIG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YWx1
ZU5hbWUsICIgPSAiLCAiKiIsIHBvaW50ZXJOYW1lLCAiO1xuIgorICAgICk7CiAgICAgYXBwZW5k
TGVmdFZhbHVlKGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLCB2YWx1ZU5hbWUsIHBvaW50ZXJOYW1l
KTsKIH0KIApAQCAtNTM1LDkgKzU0NCw5IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1QKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5ODE2MCBJbXBsZW1lbnQgcXVhbGlmaWVycy4KICAgICBpZiAodmFyaWFibGVE
ZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKSB7CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgq
dmFyaWFibGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKTsKLSAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqdmFy
aWFibGVEZWNsYXJhdGlvbi50eXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIsIHRha2VM
YXN0VmFsdWUoKSwgIjtcbiIpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqdmFyaWFibGVEZWNsYXJhdGlvbi50
eXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIsIHRha2VMYXN0VmFsdWUoKSwgIjtcbiIp
OwogICAgIH0gZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmco
bV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUo
KSksICcgJywgdmFyaWFibGVOYW1lLCAiO1xuIikpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCp2YXJpYWJsZURl
Y2xhcmF0aW9uLnR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiO1xuIik7CiB9CiAKIHZvaWQg
RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9u
JiBhc3NpZ25tZW50RXhwcmVzc2lvbikKQEAgLTU0Niw3ICs1NTUsNyBAQCB2b2lkIEZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgYXV0byBwb2ludGVyTmFtZSA9IHRha2VM
YXN0TGVmdFZhbHVlKCk7CiAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGFzc2lnbm1lbnRFeHByZXNz
aW9uLnJpZ2h0KCkpOwogICAgIGF1dG8gcmlnaHROYW1lID0gdGFrZUxhc3RWYWx1ZSgpOwotICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiaWYgKCIsIHBvaW50ZXJOYW1lLCAi
KSAqIiwgcG9pbnRlck5hbWUsICIgPSAiLCByaWdodE5hbWUsICI7XG4iKSk7CisgICAgbV9zdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJpZiAoIiwgcG9pbnRlck5hbWUsICIpICoiLCBwb2lu
dGVyTmFtZSwgIiA9ICIsIHJpZ2h0TmFtZSwgIjtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFsdWUo
YXNzaWdubWVudEV4cHJlc3Npb24sIHJpZ2h0TmFtZSk7CiB9CiAKQEAgLTU2MSw4ICs1NzAsOCBA
QCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgQVNTRVJUKGl0
ZXJhdG9yICE9IG1fZnVuY3Rpb25NYXBwaW5nLmVuZCgpKTsKICAgICBhdXRvIHZhcmlhYmxlTmFt
ZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIGlmICghbWF0Y2hlcyhjYWxsRXhw
cmVzc2lvbi5yZXNvbHZlZFR5cGUoKSwgbV9pbnRyaW5zaWNzLnZvaWRUeXBlKCkpKQotICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV90eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JUeXBlKGNhbGxFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5h
bWUsICIgPSAiKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKGl0ZXJh
dG9yLT52YWx1ZSwgJygnKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoY2FsbEV4cHJlc3Npb24ucmVzb2x2ZWRU
eXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIpOworICAgIG1fc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZChpdGVyYXRvci0+dmFsdWUsICcoJyk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhcmd1bWVudE5hbWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChpKQogICAg
ICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKQEAgLTU4OCwxMCArNTk3LDEy
IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICBhdXRvIHJp
Z2h0ID0gdGFrZUxhc3RWYWx1ZSgpOwogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVO
ZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0byBwb2ludGVyTmFtZSA9IGdlbmVyYXRlTmV4dFZh
cmlhYmxlTmFtZSgpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZGVyZWZlcmVuY2VFeHByZXNzaW9uLnBvaW50ZXIo
KS5yZXNvbHZlZFR5cGUoKSksICcgJywgcG9pbnRlck5hbWUsICIgPSAiLCByaWdodCwgIjtcbiIp
KTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV90eXBlTmFtZXIubWFu
Z2xlZE5hbWVGb3JUeXBlKGRlcmVmZXJlbmNlRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcg
JywgdmFyaWFibGVOYW1lLCAiO1xuIikpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFr
ZVN0cmluZygiaWYgKCIsIHBvaW50ZXJOYW1lLCAiKSAiLCB2YXJpYWJsZU5hbWUsICIgPSAqIiwg
cmlnaHQsICI7XG4iKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJl
bHNlICIsIG1lbXNldFplcm9GdW5jdGlvbk5hbWUsICcoJywgdmFyaWFibGVOYW1lLCAiKTtcbiIp
KTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgIG1fdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZShkZXJlZmVyZW5jZUV4cHJlc3Npb24ucG9pbnRlcigpLnJl
c29sdmVkVHlwZSgpKSwgJyAnLCBwb2ludGVyTmFtZSwgIiA9ICIsIHJpZ2h0LCAiO1xuIiwKKyAg
ICAgICAgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGRlcmVmZXJlbmNlRXhwcmVzc2lv
bi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiO1xuIiwKKyAgICAgICAgImlm
ICgiLCBwb2ludGVyTmFtZSwgIikgIiwgdmFyaWFibGVOYW1lLCAiID0gKiIsIHJpZ2h0LCAiO1xu
IiwKKyAgICAgICAgImVsc2UgIiwgbWVtc2V0WmVyb0Z1bmN0aW9uTmFtZSwgJygnLCB2YXJpYWJs
ZU5hbWUsICIpO1xuIgorICAgICk7CiAgICAgYXBwZW5kTGVmdFZhbHVlKGRlcmVmZXJlbmNlRXhw
cmVzc2lvbiwgdmFyaWFibGVOYW1lLCBwb2ludGVyTmFtZSk7CiB9CiAKQEAgLTYwMiw3ICs2MTMs
NyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KGxvZ2ljYWxFeHByZXNzaW9uLnJpZ2h0KCkpOwogICAgIGF1dG8gcmlnaHQg
PSB0YWtlTGFzdFZhbHVlKCk7CiAgICAgYXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRW
YXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV90
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGxvZ2ljYWxFeHByZXNzaW9uLnJlc29sdmVkVHlw
ZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiLCBsZWZ0KSk7CisgICAgbV9zdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShsb2dpY2Fs
RXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwgbGVm
dCk7CiAgICAgc3dpdGNoIChsb2dpY2FsRXhwcmVzc2lvbi50eXBlKCkpIHsKICAgICBjYXNlIEFT
VDo6TG9naWNhbEV4cHJlc3Npb246OlR5cGU6OkFuZDoKICAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgiICYmICIpOwpAQCAtNjEyLDcgKzYyMyw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0
aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiIHx8
ICIpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCht
YWtlU3RyaW5nKHJpZ2h0LCAiO1xuIikpOworICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZChyaWdodCwgIjtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFsdWUobG9naWNhbEV4cHJlc3Np
b24sIHZhcmlhYmxlTmFtZSk7CiB9CiAKQEAgLTYyMSw3ICs2MzIsNyBAQCB2b2lkIEZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGxvZ2lj
YWxOb3RFeHByZXNzaW9uLm9wZXJhbmQoKSk7CiAgICAgYXV0byBvcGVyYW5kID0gdGFrZUxhc3RW
YWx1ZSgpOwogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1l
KCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1fdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZShsb2dpY2FsTm90RXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcg
JywgdmFyaWFibGVOYW1lLCAiID0gISIsIG9wZXJhbmQsICI7XG4iKSk7CisgICAgbV9zdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShsb2dp
Y2FsTm90RXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0g
ISIsIG9wZXJhbmQsICI7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKGxvZ2ljYWxOb3RFeHBy
ZXNzaW9uLCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC02MzUsMTYgKzY0NiwxOCBAQCB2b2lkIEZ1
bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgYXV0byBtYW5nbGVkVHlwZU5h
bWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobWFrZUFycmF5UmVmZXJlbmNlRXhw
cmVzc2lvbi5yZXNvbHZlZFR5cGUoKSk7CiAgICAgaWYgKGlzPEFTVDo6UG9pbnRlclR5cGU+KG1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkucmVzb2x2ZWRUeXBlKCkpKSB7
CiAgICAgICAgIGF1dG8gcHRyVmFsdWUgPSB0YWtlTGFzdFZhbHVlKCk7Ci0gICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFi
bGVOYW1lLCAiO1xuIikpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJp
bmcoImlmICgiLCBwdHJWYWx1ZSwgIikgIiwgdmFyaWFibGVOYW1lLCAiID0geyAiLCBwdHJWYWx1
ZSwgIiwgMX07XG4iKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmlu
ZygiZWxzZSAiLCB2YXJpYWJsZU5hbWUsICIgPSB7IG51bGxwdHIsIDAgfTtcbiIpKTsKKyAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgbWFuZ2xlZFR5
cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIjtcbiIsCisgICAgICAgICAgICAiaWYgKCIsIHB0
clZhbHVlLCAiKSAiLCB2YXJpYWJsZU5hbWUsICIgPSB7ICIsIHB0clZhbHVlLCAiLCAxfTtcbiIs
CisgICAgICAgICAgICAiZWxzZSAiLCB2YXJpYWJsZU5hbWUsICIgPSB7IG51bGxwdHIsIDAgfTtc
biIKKyAgICAgICAgKTsKICAgICB9IGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlUeXBlPihtYWtlQXJy
YXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLnJlc29sdmVkVHlwZSgpKSkgewogICAg
ICAgICBhdXRvIGxWYWx1ZSA9IHRha2VMYXN0TGVmdFZhbHVlKCk7CiAgICAgICAgIGF1dG8mIGFy
cmF5VHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPihtYWtlQXJyYXlSZWZlcmVuY2VFeHBy
ZXNzaW9uLmxlZnRWYWx1ZSgpLnJlc29sdmVkVHlwZSgpKTsKLSAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUs
ICIgPSB7ICIsIGxWYWx1ZSwgIi0+ZGF0YSgpLCAiLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSwg
IiB9O1xuIikpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWFuZ2xl
ZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHsgIiwgbFZhbHVlLCAiLT5kYXRhKCks
ICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiIH07XG4iKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBhdXRvIGxWYWx1ZSA9IHRha2VMYXN0TGVmdFZhbHVlKCk7Ci0gICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVO
YW1lLCAiID0geyAiLCBsVmFsdWUsICIsIDEgfTtcbiIpKTsKKyAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIg
PSB7ICIsIGxWYWx1ZSwgIiwgMSB9O1xuIik7CiAgICAgfQogICAgIGFwcGVuZFJpZ2h0VmFsdWUo
bWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiwgdmFyaWFibGVOYW1lKTsKIH0KQEAgLTY1NCw3
ICs2NjcsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KG1ha2VQb2ludGVyRXhwcmVzc2lvbi5sZWZ0VmFsdWUoKSk7CiAg
ICAgYXV0byBwb2ludGVyID0gdGFrZUxhc3RMZWZ0VmFsdWUoKTsKICAgICBhdXRvIHZhcmlhYmxl
TmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobWFrZVBvaW50
ZXJFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiLCBw
b2ludGVyLCAiO1xuIikpOworICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobWFrZVBvaW50ZXJFeHByZXNzaW9uLnJlc29sdmVk
VHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiLCBwb2ludGVyLCAiO1xuIik7CiAgICAg
YXBwZW5kUmlnaHRWYWx1ZShtYWtlUG9pbnRlckV4cHJlc3Npb24sIHZhcmlhYmxlTmFtZSk7CiB9
CiAKQEAgLTY3MCwxNSArNjgzLDIwIEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2
aXNpdChBU1QKICAgICBhdXRvIGNoZWNrID0gdGFrZUxhc3RWYWx1ZSgpOwogCiAgICAgYXV0byB2
YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHRl
cm5hcnlFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICI7XG4i
KSk7Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoImlmICgiLCBjaGVj
aywgIikge1xuIikpOworICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAg
ICAgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHRlcm5hcnlFeHByZXNzaW9uLnJlc29s
dmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICI7XG4iCisgICAgICAgICJpZiAoIiwgY2hl
Y2ssICIpIHtcbiIKKyAgICApOwogICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0ZXJuYXJ5RXhwcmVz
c2lvbi5ib2R5RXhwcmVzc2lvbigpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VT
dHJpbmcodmFyaWFibGVOYW1lLCAiID0gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xuIikpOwotICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIn0gZWxzZSB7XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgIHZhcmlhYmxlTmFtZSwgIiA9ICIsIHRha2VMYXN0
VmFsdWUoKSwgIjtcbiIKKyAgICAgICAgIn0gZWxzZSB7XG4iCisgICAgKTsKICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQodGVybmFyeUV4cHJlc3Npb24uZWxzZUV4cHJlc3Npb24oKSk7Ci0gICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKHZhcmlhYmxlTmFtZSwgIiA9ICIsIHRha2VM
YXN0VmFsdWUoKSwgIjtcbiIpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsK
KyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgIHZhcmlhYmxlTmFt
ZSwgIiA9ICIsIHRha2VMYXN0VmFsdWUoKSwgIjtcbiIKKyAgICAgICAgIn1cbiIKKyAgICApOwog
ICAgIGFwcGVuZFJpZ2h0VmFsdWUodGVybmFyeUV4cHJlc3Npb24sIHZhcmlhYmxlTmFtZSk7CiB9
CiAKQEAgLTY4OCw3ICs3MDYsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlz
aXQoQVNUCiAgICAgYXV0byBpdGVyYXRvciA9IG1fdmFyaWFibGVNYXBwaW5nLmZpbmQodmFyaWFi
bGVSZWZlcmVuY2UudmFyaWFibGUoKSk7CiAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fdmFyaWFi
bGVNYXBwaW5nLmVuZCgpKTsKICAgICBhdXRvIHBvaW50ZXJOYW1lID0gZ2VuZXJhdGVOZXh0VmFy
aWFibGVOYW1lKCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJ0aHJl
YWQgIiwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHZhcmlhYmxlUmVmZXJlbmNlLnJl
c29sdmVkVHlwZSgpKSwgIiogIiwgcG9pbnRlck5hbWUsICIgPSAmIiwgaXRlcmF0b3ItPnZhbHVl
LCAiO1xuIikpOworICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidGhyZWFkICIs
IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSh2YXJpYWJsZVJlZmVyZW5jZS5yZXNvbHZl
ZFR5cGUoKSksICIqICIsIHBvaW50ZXJOYW1lLCAiID0gJiIsIGl0ZXJhdG9yLT52YWx1ZSwgIjtc
biIpOwogICAgIGFwcGVuZExlZnRWYWx1ZSh2YXJpYWJsZVJlZmVyZW5jZSwgaXRlcmF0b3ItPnZh
bHVlLCBwb2ludGVyTmFtZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZl
RnVuY3Rpb25Xcml0ZXIuY3BwCShyZXZpc2lvbiAyNDc1NDUpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTI1LDE5ICsxMjUsMjMgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVu
Y3Rpb24oQVNUOjpOYXRpdmVGdQogICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmlz
Q2FzdCgpKSB7CiAgICAgICAgIGF1dG8gbWV0YWxSZXR1cm5OYW1lID0gdHlwZU5hbWVyLm1hbmds
ZWROYW1lRm9yVHlwZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7CiAgICAgICAg
IGlmICghbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKSB7Ci0g
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1ldGFsUmV0dXJuTmFt
ZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICIoKSB7XG4iKSk7Ci0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgIiwgbWV0YWxSZXR1cm5OYW1lLCAiIHg7
XG4iKSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAg
IiwgbWVtc2V0WmVyb0Z1bmN0aW9uTmFtZSwgIih4KTtcbiIpKTsKLSAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIgICAgcmV0dXJuIHg7XG4iKTsKLSAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQoCisgICAgICAgICAgICAgICAgbWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0
aW9uTmFtZSwgIigpIHtcbiIKKyAgICAgICAgICAgICAgICAiICAgICIsIG1ldGFsUmV0dXJuTmFt
ZSwgIiB4O1xuIgorICAgICAgICAgICAgICAgICIgICAgIiwgbWVtc2V0WmVyb0Z1bmN0aW9uTmFt
ZSwgIih4KTtcbiIKKyAgICAgICAgICAgICAgICAiICAgIHJldHVybiB4O1xuIik7CisgICAgICAg
ICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICk7CiAgICAgICAgICAgICByZXR1cm4gc3RyaW5n
QnVpbGRlci50b1N0cmluZygpOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgYXV0
byBtZXRhbFBhcmFtZXRlck5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtZXRhbFJldHVybk5hbWUsICcgJywgb3V0
cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB4KSB7XG4iKSk7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8IiwgbWV0YWxSZXR1cm5OYW1lLCAiPih4KTtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIn1cbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KAorICAgICAgICAgICAgbWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwg
JygnLCBtZXRhbFBhcmFtZXRlck5hbWUsICIgeCkge1xuIgorICAgICAgICAgICAgIiAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8IiwgbWV0YWxSZXR1cm5OYW1lLCAiPih4KTtcbiIKKyAgICAgICAgICAg
ICJ9XG4iCisgICAgICAgICk7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5n
KCk7CiAgICAgfQogCkBAIC0xNDUsOSArMTQ5LDExIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0
aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRl
ck5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpKTsKICAgICAgICAgYXV0byBtZXRhbFJldHVy
bk5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24udHlwZSgpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyht
ZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1l
dGVyTmFtZSwgIiB4KSB7XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VT
dHJpbmcoIiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8IiwgbWV0YWxSZXR1cm5OYW1lLCAiPih4KTtc
biIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOworICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgbWV0YWxSZXR1cm5OYW1lLCAn
ICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlck5hbWUsICIgeCkge1xu
IgorICAgICAgICAgICAgIiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8IiwgbWV0YWxSZXR1cm5OYW1l
LCAiPih4KTtcbiIKKyAgICAgICAgICAgICJ9XG4iCisgICAgICAgICk7CiAgICAgICAgIHJldHVy
biBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCkBAIC0xNjAsMTYgKzE2NiwyMCBA
QCBTdHJpbmcgd3JpdGVOYXRpdmVGdW5jdGlvbihBU1Q6Ok5hdGl2ZUZ1CiAgICAgICAgIGF1dG8m
IHVubmFtZWRQYXJhbWV0ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4ocGFyYW1l
dGVyVHlwZSk7CiAgICAgICAgIGlmIChpczxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFBhcmFtZXRl
clR5cGUpKSB7CiAgICAgICAgICAgICBhdXRvJiBhcnJheVBhcmFtZXRlclR5cGUgPSBkb3duY2Fz
dDxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFBhcmFtZXRlclR5cGUpOwotICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygidWludCAiLCBvdXRwdXRGdW5jdGlvbk5hbWUs
ICcoJywgbWV0YWxQYXJhbWV0ZXJOYW1lLCAiKSB7XG4iKSk7Ci0gICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgcmV0dXJuICIsIGFycmF5UGFyYW1ldGVyVHlw
ZS5udW1FbGVtZW50cygpLCAiO1xuIikpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIn1cbiIpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAg
ICAgICAgICAgICAgICAidWludCAiLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJh
bWV0ZXJOYW1lLCAiKSB7XG4iCisgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gIiwgYXJyYXlQ
YXJhbWV0ZXJUeXBlLm51bUVsZW1lbnRzKCksICI7XG4iCisgICAgICAgICAgICAgICAgIn1cbiIK
KyAgICAgICAgICAgICk7CiAgICAgICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmlu
ZygpOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VU
eXBlPih1bm5hbWVkUGFyYW1ldGVyVHlwZSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChtYWtlU3RyaW5nKCJ1aW50ICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFt
ZXRlck5hbWUsICIgdikge1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtl
U3RyaW5nKCIgICAgcmV0dXJuIHYubGVuZ3RoO1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgifVxuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisg
ICAgICAgICAgICAidWludCAiLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0
ZXJOYW1lLCAiIHYpIHtcbiIKKyAgICAgICAgICAgICIgICAgcmV0dXJuIHYubGVuZ3RoO1xuIgor
ICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKTsKICAgICB9CiAKQEAgLTE5NSwxMCArMjA1LDEyIEBAIFN0cmluZyB3cml0
ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgICAgIGF1dG8gZmllbGROYW1l
ID0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkuc3Vic3RyaW5nKCJvcGVyYXRvci4i
X3N0ci5sZW5ndGgoKSk7CiAgICAgICAgICAgICBmaWVsZE5hbWUgPSBmaWVsZE5hbWUuc3Vic3Ry
aW5nKDAsIGZpZWxkTmFtZS5sZW5ndGgoKSAtIDEpOwogICAgICAgICAgICAgYXV0byBtZXRhbEZp
ZWxkTmFtZSA9IG1hbmdsZWRGaWVsZE5hbWUoZmllbGROYW1lKTsKLSAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1
bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHYsICIsIG1ldGFsUGFyYW1l
dGVyMk5hbWUsICIgbikge1xuIikpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
bWFrZVN0cmluZygiICAgIHYuIiwgbWV0YWxGaWVsZE5hbWUsICIgPSBuO1xuIikpOwotICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIHJldHVybiB2O1xuIikp
OwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOworICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgICAgICBtZXRhbFJldHVy
bk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyMU5hbWUs
ICIgdiwgIiwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiBuKSB7XG4iCisgICAgICAgICAgICAgICAg
IiAgICB2LiIsIG1ldGFsRmllbGROYW1lLCAiID0gbjtcbiIKKyAgICAgICAgICAgICAgICAiICAg
IHJldHVybiB2O1xuIgorICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICApOwogICAg
ICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICAgICAgfQogCkBA
IC0yMDcsOSArMjE5LDExIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6TmF0aXZl
RnUKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlck5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlw
ZSgpKTsKICAgICAgICAgYXV0byBtZXRhbFJldHVybk5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JUeXBlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKTsKICAgICAgICAgYXV0
byBtZXRhbEZpZWxkTmFtZSA9IG1hbmdsZWRGaWVsZE5hbWUoZmllbGROYW1lKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtZXRhbFJldHVybk5hbWUsICcgJywgb3V0
cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB2KSB7XG4iKSk7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICByZXR1cm4gdi4iLCBt
ZXRhbEZpZWxkTmFtZSwgIjtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1c
biIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAg
bWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFt
ZXRlck5hbWUsICIgdikge1xuIgorICAgICAgICAgICAgIiAgICByZXR1cm4gdi4iLCBtZXRhbEZp
ZWxkTmFtZSwgIjtcbiIKKyAgICAgICAgICAgICJ9XG4iCisgICAgICAgICk7CiAgICAgICAgIHJl
dHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCkBAIC0yMzEsOSArMjQ1LDEx
IEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICBtZXRhbEZpZWxkTmFtZSA9IGZpZWxkTmFtZTsKIAotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRw
dXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXJOYW1lLCAiIHYpIHtcbiIpKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIHJldHVybiAmKHYtPiIs
IG1ldGFsRmllbGROYW1lLCAiKTtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
In1cbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAg
ICAgbWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBh
cmFtZXRlck5hbWUsICIgdikge1xuIgorICAgICAgICAgICAgIiAgICByZXR1cm4gJih2LT4iLCBt
ZXRhbEZpZWxkTmFtZSwgIik7XG4iCisgICAgICAgICAgICAifVxuIgorICAgICAgICApOwogICAg
ICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIApAQCAtMjQyLDEx
ICsyNTgsMTMgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAg
ICAgICBhdXRvIG1ldGFsUGFyYW1ldGVyMU5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JU
eXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpKTsK
ICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlcjJOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yVHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMV0tPnR5cGUo
KSk7CiAgICAgICAgIGF1dG8gbWV0YWxSZXR1cm5OYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yVHlwZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1
bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHYsICIsIG1ldGFsUGFyYW1l
dGVyMk5hbWUsICIgbikge1xuIikpOwogICAgICAgICBBU1NFUlQoaXM8QVNUOjpBcnJheVJlZmVy
ZW5jZVR5cGU+KCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlw
ZSgpKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKG4gPCB2Lmxlbmd0
aCkgcmV0dXJuICYodi5wb2ludGVyW25dKTtcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiICAgIHJldHVybiBudWxscHRyO1xuIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJ9XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAg
ICAgICAgIG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0
YWxQYXJhbWV0ZXIxTmFtZSwgIiB2LCAiLCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAiIG4pIHtcbiIK
KyAgICAgICAgICAgICIgICAgaWYgKG4gPCB2Lmxlbmd0aCkgcmV0dXJuICYodi5wb2ludGVyW25d
KTtcbiIKKyAgICAgICAgICAgICIgICAgcmV0dXJuIG51bGxwdHI7XG4iCisgICAgICAgICAgICAi
fVxuIgorICAgICAgICApOwogICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygp
OwogICAgIH0KIApAQCAtMjczLDE3ICsyOTEsMjEgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rp
b24oQVNUOjpOYXRpdmVGdQogICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJvd3MgPSBudW1iZXJP
Zk1hdHJpeFJvd3MoKTsKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZDb2x1bW5zID0gbnVtYmVy
T2ZNYXRyaXhDb2x1bW5zKCk7CiAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0
cmluZyhtZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFs
UGFyYW1ldGVyMU5hbWUsICIgbSwgIiwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiBpKSB7XG4iKSk7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBpZiAoaSA+PSAi
LCBudW1iZXJPZlJvd3MsICIpIHJldHVybiAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7XG4iKSk7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICAiLCBtZXRhbFJl
dHVybk5hbWUsICIgcmVzdWx0O1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
ICAgIHJlc3VsdFswXSA9IG1baV07XG4iKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
bWFrZVN0cmluZygiICAgIHJlc3VsdFsxXSA9IG1baSArICIsIG51bWJlck9mUm93cywgIl07XG4i
KSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBt
ZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1l
dGVyMU5hbWUsICIgbSwgIiwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiBpKSB7XG4iCisgICAgICAg
ICAgICAiICAgIGlmIChpID49ICIsIG51bWJlck9mUm93cywgIikgcmV0dXJuICIsIG1ldGFsUmV0
dXJuTmFtZSwgIigwKTtcbiIKKyAgICAgICAgICAgICIgICAgIiwgbWV0YWxSZXR1cm5OYW1lLCAi
IHJlc3VsdDtcbiIKKyAgICAgICAgICAgICIgICAgcmVzdWx0WzBdID0gbVtpXTtcbiIKKyAgICAg
ICAgICAgICIgICAgcmVzdWx0WzFdID0gbVtpICsgIiwgbnVtYmVyT2ZSb3dzLCAiXTtcbiIKKyAg
ICAgICAgKTsKICAgICAgICAgaWYgKG51bWJlck9mQ29sdW1ucyA+PSAzKQotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIHJlc3VsdFsyXSA9IG1baSArICIs
IG51bWJlck9mUm93cyAqIDIsICJdO1xuIikpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZCgiICAgIHJlc3VsdFsyXSA9IG1baSArICIsIG51bWJlck9mUm93cyAqIDIs
ICJdO1xuIik7CiAgICAgICAgIGlmIChudW1iZXJPZkNvbHVtbnMgPj0gNCkKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICByZXN1bHRbM10gPSBtW2kgKyAi
LCBudW1iZXJPZlJvd3MgKiAzLCAiXTtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiAgICByZXR1cm4gcmVzdWx0O1xuIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCJ9XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICBy
ZXN1bHRbM10gPSBtW2kgKyAiLCBudW1iZXJPZlJvd3MgKiAzLCAiXTtcbiIpOworICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgKKyAgICAgICAgICAgICIgICAgcmV0dXJuIHJlc3VsdDtcbiIp
OworICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAKQEAgLTI5NywxNiArMzE5LDIwIEBAIFN0cmluZyB3
cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgdW5zaWduZWQgbnVtYmVy
T2ZSb3dzID0gbnVtYmVyT2ZNYXRyaXhSb3dzKCk7CiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9m
Q29sdW1ucyA9IG51bWJlck9mTWF0cml4Q29sdW1ucygpOwogCi0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1ha2VTdHJpbmcobWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9u
TmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIG0sICIsIG1ldGFsUGFyYW1ldGVyMk5h
bWUsICIgaSwgIiwgbWV0YWxQYXJhbWV0ZXIzTmFtZSwgIiB2KSB7XG4iKSk7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBpZiAoaSA+PSAiLCBudW1iZXJPZlJv
d3MsICIpIHJldHVybiBtO1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtl
U3RyaW5nKCIgICAgbVtpXSA9IHZbMF07XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1ha2VTdHJpbmcoIiAgICBtW2kgKyAiLCBudW1iZXJPZlJvd3MsICJdID0gdlsxXTtcbiIp
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgIG1l
dGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0
ZXIxTmFtZSwgIiBtLCAiLCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAiIGksICIsIG1ldGFsUGFyYW1l
dGVyM05hbWUsICIgdikge1xuIgorICAgICAgICAgICAgIiAgICBpZiAoaSA+PSAiLCBudW1iZXJP
ZlJvd3MsICIpIHJldHVybiBtO1xuIgorICAgICAgICAgICAgIiAgICBtW2ldID0gdlswXTtcbiIK
KyAgICAgICAgICAgICIgICAgbVtpICsgIiwgbnVtYmVyT2ZSb3dzLCAiXSA9IHZbMV07XG4iCisg
ICAgICAgICk7CiAgICAgICAgIGlmIChudW1iZXJPZkNvbHVtbnMgPj0gMykKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBtW2kgKyAiLCBudW1iZXJPZlJv
d3MgKiAyLCAiXSA9IHZbMl07XG4iKSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKCIgICAgbVtpICsgIiwgbnVtYmVyT2ZSb3dzICogMiwgIl0gPSB2WzJdO1xuIik7
CiAgICAgICAgIGlmIChudW1iZXJPZkNvbHVtbnMgPj0gNCkKLSAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBtW2kgKyAiLCBudW1iZXJPZlJvd3MgKiAzLCAi
XSA9IHZbM107XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgcmV0dXJu
IG07Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICBtW2kgKyAiLCBudW1iZXJPZlJvd3Mg
KiAzLCAiXSA9IHZbM107XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCisgICAg
ICAgICAgICAiICAgIHJldHVybiBtOyIKKyAgICAgICAgICAgICJ9XG4iCisgICAgICAgICk7CiAg
ICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCkBAIC0zMTUs
OSArMzQxLDExIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAg
ICAgICAgICAgIGF1dG8gb3BlcmF0b3JOYW1lID0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5u
YW1lKCkuc3Vic3RyaW5nKCJvcGVyYXRvciJfc3RyLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGF1
dG8gbWV0YWxQYXJhbWV0ZXJOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSk7CiAgICAgICAg
ICAgICBhdXRvIG1ldGFsUmV0dXJuTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUo
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpOwotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQobWFrZVN0cmluZyhtZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rp
b25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB4KSB7XG4iKSk7Ci0gICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgcmV0dXJuICIsIG9wZXJhdG9y
TmFtZSwgIng7XG4iKSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7
CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAg
ICAgIG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQ
YXJhbWV0ZXJOYW1lLCAiIHgpIHtcbiIKKyAgICAgICAgICAgICAgICAiICAgIHJldHVybiAiLCBv
cGVyYXRvck5hbWUsICJ4O1xuIgorICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAp
OwogICAgICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICAgICAg
fQogCkBAIC0zMjYsOSArMzU0LDExIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6
TmF0aXZlRnUKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlcjFOYW1lID0gdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClb
MF0tPnR5cGUoKSk7CiAgICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0ZXIyTmFtZSA9IHR5cGVOYW1l
ci5tYW5nbGVkTmFtZUZvclR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVy
cygpWzFdLT50eXBlKCkpOwogICAgICAgICBhdXRvIG1ldGFsUmV0dXJuTmFtZSA9IHR5cGVOYW1l
ci5tYW5nbGVkTmFtZUZvclR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1ldGFsUmV0dXJuTmFtZSwg
JyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXIxTmFtZSwgIiB4LCAi
LCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAiIHkpIHtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQobWFrZVN0cmluZygiICAgIHJldHVybiB4ICIsIG9wZXJhdG9yTmFtZSwgIiB5O1xu
IikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgICAgIHN0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBtZXRhbFJldHVybk5hbWUsICcg
Jywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyMU5hbWUsICIgeCwgIiwg
bWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiB5KSB7XG4iCisgICAgICAgICAgICAiICAgIHJldHVybiB4
ICIsIG9wZXJhdG9yTmFtZSwgIiB5O1xuIgorICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgKTsK
ICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAKQEAgLTM1
OSw5ICszODksMTEgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQog
ICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6
ZSgpID09IDEpOwogICAgICAgICBhdXRvIG1ldGFsUGFyYW1ldGVyTmFtZSA9IHR5cGVOYW1lci5t
YW5nbGVkTmFtZUZvclR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygp
WzBdLT50eXBlKCkpOwogICAgICAgICBhdXRvIG1ldGFsUmV0dXJuTmFtZSA9IHR5cGVOYW1lci5t
YW5nbGVkTmFtZUZvclR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1ldGFsUmV0dXJuTmFtZSwgJyAn
LCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXJOYW1lLCAiIHgpIHtcbiIp
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIHJldHVybiAi
LCBtYXBGdW5jdGlvbk5hbWUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkpLCAiKHgp
O1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgICAgIHN0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBtZXRhbFJldHVybk5hbWUs
ICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB4KSB7
XG4iCisgICAgICAgICAgICAiICAgIHJldHVybiAiLCBtYXBGdW5jdGlvbk5hbWUobmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkpLCAiKHgpO1xuIgorICAgICAgICAgICAgIn1cbiIKKyAg
ICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9
CiAKQEAgLTM3MCwzNSArNDAyLDQzIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6
TmF0aXZlRnUKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlcjFOYW1lID0gdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClb
MF0tPnR5cGUoKSk7CiAgICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0ZXIyTmFtZSA9IHR5cGVOYW1l
ci5tYW5nbGVkTmFtZUZvclR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVy
cygpWzFdLT50eXBlKCkpOwogICAgICAgICBhdXRvIG1ldGFsUmV0dXJuTmFtZSA9IHR5cGVOYW1l
ci5tYW5nbGVkTmFtZUZvclR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1ldGFsUmV0dXJuTmFtZSwg
JyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXIxTmFtZSwgIiB4LCAi
LCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAiIHkpIHtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQobWFrZVN0cmluZygiICAgIHJldHVybiAiLCBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLm5hbWUoKSwgIih4LCB5KTtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
In1cbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAg
ICAgbWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBh
cmFtZXRlcjFOYW1lLCAiIHgsICIsIG1ldGFsUGFyYW1ldGVyMk5hbWUsICIgeSkge1xuIgorICAg
ICAgICAgICAgIiAgICByZXR1cm4gIiwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCks
ICIoeCwgeSk7XG4iCisgICAgICAgICAgICAifVxuIgorICAgICAgICApOwogICAgICAgICByZXR1
cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIAogICAgIGlmIChuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiQWxsTWVtb3J5QmFycmllcldpdGhHcm91cFN5bmMi
KSB7CiAgICAgICAgIEFTU0VSVCghbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJz
KCkuc2l6ZSgpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygidm9p
ZCAiLCBvdXRwdXRGdW5jdGlvbk5hbWUsICIoKSB7XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIgICAgdGhyZWFkZ3JvdXBfYmFycmllcihtZW1fZmxhZ3M6Om1lbV9kZXZpY2Up
O1xuIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgdGhyZWFkZ3JvdXBfYmFy
cmllcihtZW1fZmxhZ3M6Om1lbV90aHJlYWRncm91cCk7XG4iKTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiAgICB0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX3RleHR1
cmUpO1xuIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAg
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgICJ2b2lkICIsIG91dHB1
dEZ1bmN0aW9uTmFtZSwgIigpIHtcbiIKKyAgICAgICAgICAgICIgICAgdGhyZWFkZ3JvdXBfYmFy
cmllcihtZW1fZmxhZ3M6Om1lbV9kZXZpY2UpO1xuIgorICAgICAgICAgICAgIiAgICB0aHJlYWRn
cm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX3RocmVhZGdyb3VwKTtcbiIKKyAgICAgICAgICAg
ICIgICAgdGhyZWFkZ3JvdXBfYmFycmllcihtZW1fZmxhZ3M6Om1lbV90ZXh0dXJlKTtcbiIKKyAg
ICAgICAgICAgICJ9XG4iCisgICAgICAgICk7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVy
LnRvU3RyaW5nKCk7CiAgICAgfQogCiAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
bmFtZSgpID09ICJEZXZpY2VNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyIpIHsKICAgICAgICAg
QVNTRVJUKCFuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJ2b2lkICIsIG91dHB1dEZ1
bmN0aW9uTmFtZSwgIigpIHtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAg
ICB0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX2RldmljZSk7XG4iKTsKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgInZvaWQgIiwgb3V0cHV0RnVuY3Rpb25OYW1lLCAi
KCkge1xuIgorICAgICAgICAgICAgIiAgICB0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6
bWVtX2RldmljZSk7XG4iCisgICAgICAgICAgICAifVxuIgorICAgICAgICApOwogICAgICAgICBy
ZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIAogICAgIGlmIChuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR3JvdXBNZW1vcnlCYXJyaWVyV2l0aEdyb3Vw
U3luYyIpIHsKICAgICAgICAgQVNTRVJUKCFuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFt
ZXRlcnMoKS5zaXplKCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5n
KCJ2b2lkICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgIigpIHtcbiIpKTsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIiAgICB0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX3Ro
cmVhZGdyb3VwKTtcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7Cisg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICAidm9pZCAi
LCBvdXRwdXRGdW5jdGlvbk5hbWUsICIoKSB7XG4iCisgICAgICAgICAgICAiICAgIHRocmVhZGdy
b3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fdGhyZWFkZ3JvdXApO1xuIgorICAgICAgICAgICAg
In1cbiIKKyAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KTsKICAgICB9CiAKQEAgLTQxMywxMCArNDUzLDEyIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0
aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgICAgIGF1dG8mIGZvdXJ0aEFyZ3VtZW50UG9pbnRl
ciA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
LnBhcmFtZXRlcnMoKVszXS0+dHlwZSgpKTsKICAgICAgICAgICAgIGF1dG8gZm91cnRoQXJndW1l
bnRBZGRyZXNzU3BhY2UgPSBmb3VydGhBcmd1bWVudFBvaW50ZXIuYWRkcmVzc1NwYWNlKCk7CiAg
ICAgICAgICAgICBhdXRvIGZvdXJ0aEFyZ3VtZW50UG9pbnRlZSA9IHR5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUoZm91cnRoQXJndW1lbnRQb2ludGVyLmVsZW1lbnRUeXBlKCkpOwotICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygidm9pZCAiLCBvdXRwdXRGdW5j
dGlvbk5hbWUsICcoJywgdG9TdHJpbmcoZmlyc3RBcmd1bWVudEFkZHJlc3NTcGFjZSksICcgJywg
Zmlyc3RBcmd1bWVudFBvaW50ZWUsICIqIG9iamVjdCwgIiwgc2Vjb25kQXJndW1lbnQsICIgY29t
cGFyZSwgIiwgdGhpcmRBcmd1bWVudCwgIiBkZXNpcmVkLCAiLCB0b1N0cmluZyhmb3VydGhBcmd1
bWVudEFkZHJlc3NTcGFjZSksICcgJywgZm91cnRoQXJndW1lbnRQb2ludGVlLCAiKiBvdXQpIHtc
biIpKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgYXRvbWljX2NvbXBh
cmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdChvYmplY3QsICZjb21wYXJlLCBkZXNpcmVkLCBtZW1v
cnlfb3JkZXJfcmVsYXhlZCwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpO1xuIik7Ci0gICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgICpvdXQgPSBjb21wYXJlO1xuIik7Ci0gICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgICAgICJ2b2lkICIsIG91dHB1dEZ1bmN0
aW9uTmFtZSwgJygnLCB0b1N0cmluZyhmaXJzdEFyZ3VtZW50QWRkcmVzc1NwYWNlKSwgJyAnLCBm
aXJzdEFyZ3VtZW50UG9pbnRlZSwgIiogb2JqZWN0LCAiLCBzZWNvbmRBcmd1bWVudCwgIiBjb21w
YXJlLCAiLCB0aGlyZEFyZ3VtZW50LCAiIGRlc2lyZWQsICIsIHRvU3RyaW5nKGZvdXJ0aEFyZ3Vt
ZW50QWRkcmVzc1NwYWNlKSwgJyAnLCBmb3VydGhBcmd1bWVudFBvaW50ZWUsICIqIG91dCkge1xu
IgorICAgICAgICAgICAgICAgICIgICAgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBs
aWNpdChvYmplY3QsICZjb21wYXJlLCBkZXNpcmVkLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCwgbWVt
b3J5X29yZGVyX3JlbGF4ZWQpO1xuIgorICAgICAgICAgICAgICAgICIgICAgKm91dCA9IGNvbXBh
cmU7XG4iCisgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICk7CiAgICAgICAgICAg
ICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAgICAgICB9CiAKQEAgLTQyOSw5
ICs0NzEsMTEgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAg
ICAgICBhdXRvIHRoaXJkQXJndW1lbnRBZGRyZXNzU3BhY2UgPSB0aGlyZEFyZ3VtZW50UG9pbnRl
ci5hZGRyZXNzU3BhY2UoKTsKICAgICAgICAgYXV0byB0aGlyZEFyZ3VtZW50UG9pbnRlZSA9IHR5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUodGhpcmRBcmd1bWVudFBvaW50ZXIuZWxlbWVudFR5
cGUoKSk7CiAgICAgICAgIGF1dG8gbmFtZSA9IGF0b21pY05hbWUobmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5uYW1lKCkuc3Vic3RyaW5nKCJJbnRlcmxvY2tlZCJfc3RyLmxlbmd0aCgpKSk7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInZvaWQgIiwgb3V0cHV0RnVu
Y3Rpb25OYW1lLCAnKCcsIHRvU3RyaW5nKGZpcnN0QXJndW1lbnRBZGRyZXNzU3BhY2UpLCAnICcs
IGZpcnN0QXJndW1lbnRQb2ludGVlLCAiKiBvYmplY3QsICIsIHNlY29uZEFyZ3VtZW50LCAiIG9w
ZXJhbmQsICIsIHRvU3RyaW5nKHRoaXJkQXJndW1lbnRBZGRyZXNzU3BhY2UpLCAnICcsIHRoaXJk
QXJndW1lbnRQb2ludGVlLCAiKiBvdXQpIHtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZygiICAgICpvdXQgPSBhdG9taWNfIiwgbmFtZSwgIl9leHBsaWNpdChv
YmplY3QsIG9wZXJhbmQsIG1lbW9yeV9vcmRlcl9yZWxheGVkKTtcbiIpKTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxl
QXBwZW5kKAorICAgICAgICAgICAgInZvaWQgIiwgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIHRv
U3RyaW5nKGZpcnN0QXJndW1lbnRBZGRyZXNzU3BhY2UpLCAnICcsIGZpcnN0QXJndW1lbnRQb2lu
dGVlLCAiKiBvYmplY3QsICIsIHNlY29uZEFyZ3VtZW50LCAiIG9wZXJhbmQsICIsIHRvU3RyaW5n
KHRoaXJkQXJndW1lbnRBZGRyZXNzU3BhY2UpLCAnICcsIHRoaXJkQXJndW1lbnRQb2ludGVlLCAi
KiBvdXQpIHtcbiIKKyAgICAgICAgICAgICIgICAgKm91dCA9IGF0b21pY18iLCBuYW1lLCAiX2V4
cGxpY2l0KG9iamVjdCwgb3BlcmFuZCwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpO1xuIgorICAgICAg
ICAgICAgIn1cbiIKKyAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKTsKICAgICB9CiAKQEAgLTQ1MSwyMSArNDk1LDIzIEBAIFN0cmluZyB3cml0ZU5hdGl2
ZUZ1bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSA0KQogICAgICAgICAgICAgbWV0YWxQYXJhbWV0
ZXI0TmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ucGFyYW1ldGVycygpWzNdLT50eXBlKCkpOwogICAgICAgICBhdXRvIG1ldGFsUmV0
dXJuTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUocmV0dXJuVHlwZSk7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWV0YWxSZXR1cm5OYW1lLCAnICcs
IG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHRoZVRleHR1
cmUsICIsIG1ldGFsUGFyYW1ldGVyMk5hbWUsICIgdGhlU2FtcGxlciwgIiwgbWV0YWxQYXJhbWV0
ZXIzTmFtZSwgIiBsb2NhdGlvbiIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZChtZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFs
UGFyYW1ldGVyMU5hbWUsICIgdGhlVGV4dHVyZSwgIiwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiB0
aGVTYW1wbGVyLCAiLCBtZXRhbFBhcmFtZXRlcjNOYW1lLCAiIGxvY2F0aW9uIik7CiAgICAgICAg
IGlmICghbWV0YWxQYXJhbWV0ZXI0TmFtZS5pc051bGwoKSkKLSAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiwgIiwgbWV0YWxQYXJhbWV0ZXI0TmFtZSwgIiBvZmZz
ZXQiKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIHtcbiIpOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIHJldHVybiB0aGVUZXh0dXJlLnNhbXBsZSh0aGVTYW1w
bGVyLCAiKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiwgIiwg
bWV0YWxQYXJhbWV0ZXI0TmFtZSwgIiBvZmZzZXQiKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoCisgICAgICAgICAgICAiKSB7XG4iCisgICAgICAgICAgICAiICAgIHJldHVybiB0aGVU
ZXh0dXJlLnNhbXBsZSh0aGVTYW1wbGVyLCAiCisgICAgICAgICk7CiAgICAgICAgIGlmICh0ZXh0
dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQobG9jYXRpb25W
ZWN0b3JMZW5ndGggPiAxKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VT
dHJpbmcoImxvY2F0aW9uLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAsIGxvY2F0aW9uVmVjdG9y
TGVuZ3RoIC0gMSksICIsIGxvY2F0aW9uLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9u
VmVjdG9yTGVuZ3RoIC0gMSwgMSkpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoImxvY2F0aW9uLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAsIGxvY2F0aW9uVmVj
dG9yTGVuZ3RoIC0gMSksICIsIGxvY2F0aW9uLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0
aW9uVmVjdG9yTGVuZ3RoIC0gMSwgMSkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCJsb2NhdGlvbiIpOwogICAgICAgICBpZiAoIW1ldGFsUGFyYW1l
dGVyNE5hbWUuaXNOdWxsKCkpCiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCBv
ZmZzZXQiKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIikiKTsKICAgICAgICAgaWYg
KCF0ZXh0dXJlVHlwZS5pc0RlcHRoVGV4dHVyZSgpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQobWFrZVN0cmluZygiLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAsIHJldHVyblZl
Y3Rvckxlbmd0aCkpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
Ii4iLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCByZXR1cm5WZWN0b3JMZW5ndGgpKTsKICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIjtcbiIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgifVxuIik7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CkBA
IC00ODMsMzcgKzUyOSw0MSBAQCBTdHJpbmcgd3JpdGVOYXRpdmVGdW5jdGlvbihBU1Q6Ok5hdGl2
ZUZ1CiAgICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0ZXIxTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUodGV4dHVyZVR5cGUpOwogICAgICAgICBhdXRvIG1ldGFsUGFyYW1ldGVyMk5h
bWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGxvY2F0aW9uVHlwZSk7CiAgICAgICAg
IGF1dG8gbWV0YWxSZXR1cm5OYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShyZXR1
cm5UeXBlKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtZXRhbFJl
dHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyMU5h
bWUsICIgdGhlVGV4dHVyZSwgIiwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiBsb2NhdGlvbikge1xu
IikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1ldGFsUmV0dXJuTmFt
ZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXIxTmFtZSwgIiB0
aGVUZXh0dXJlLCAiLCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAiIGxvY2F0aW9uKSB7XG4iKTsKICAg
ICAgICAgaWYgKHRleHR1cmVUeXBlLmlzVGV4dHVyZUFycmF5KCkpIHsKICAgICAgICAgICAgIEFT
U0VSVChsb2NhdGlvblZlY3Rvckxlbmd0aCA+IDEpOwogICAgICAgICAgICAgU3RyaW5nIGRpbWVu
c2lvbnNbXSA9IHsgIndpZHRoIl9zdHIsICJoZWlnaHQiX3N0ciwgImRlcHRoIl9zdHIgfTsKICAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAxOyAr
K2kpIHsKICAgICAgICAgICAgICAgICBhdXRvIHN1ZmZpeCA9ICJ4eXp3Il9zdHIuc3Vic3RyaW5n
KGksIDEpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmco
IiAgICBpZiAobG9jYXRpb24uIiwgc3VmZml4LCAiIDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4obG9jYXRpb24uIiwgc3VmZml4LCAiKSA+PSB0aGVUZXh0dXJlLmdldF8iLCBkaW1lbnNpb25z
W2ldLCAiKCkpIHJldHVybiAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7XG4iKSk7CisgICAgICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIGlmIChsb2NhdGlvbi4i
LCBzdWZmaXgsICIgPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90Pihsb2NhdGlvbi4iLCBzdWZm
aXgsICIpID49IHRoZVRleHR1cmUuZ2V0XyIsIGRpbWVuc2lvbnNbaV0sICIoKSkgcmV0dXJuICIs
IG1ldGFsUmV0dXJuTmFtZSwgIigwKTtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YXV0byBzdWZmaXggPSAieHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAt
IDEsIDEpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAg
IGlmIChsb2NhdGlvbi4iLCBzdWZmaXgsICIgPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90Pihs
b2NhdGlvbi4iLCBzdWZmaXgsICIpID49IHRoZVRleHR1cmUuZ2V0X2FycmF5X3NpemUoKSkgcmV0
dXJuICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTtcbiIpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICBpZiAobG9jYXRpb24uIiwgc3VmZml4LCAiIDwgMCB8
fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obG9jYXRpb24uIiwgc3VmZml4LCAiKSA+PSB0aGVUZXh0
dXJlLmdldF9hcnJheV9zaXplKCkpIHJldHVybiAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7XG4i
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0
aCA9PSAxKQotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmco
IiAgICBpZiAobG9jYXRpb24gPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90Pihsb2NhdGlvbikg
Pj0gdGhlVGV4dHVyZS5nZXRfd2lkdGgoKSkgcmV0dXJuICIsIG1ldGFsUmV0dXJuTmFtZSwgIigw
KTtcbiIpKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIg
ICAgaWYgKGxvY2F0aW9uIDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obG9jYXRpb24pID49
IHRoZVRleHR1cmUuZ2V0X3dpZHRoKCkpIHJldHVybiAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7
XG4iKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKG1ha2VTdHJpbmcoIiAgICBpZiAobG9jYXRpb24ueCA8IDAgfHwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGxvY2F0aW9uLngpID49IHRoZVRleHR1cmUuZ2V0X3dpZHRoKCkpIHJldHVybiAi
LCBtZXRhbFJldHVybk5hbWUsICIoMCk7XG4iKSk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIGlmIChsb2NhdGlvbi55IDwgMCB8fCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4obG9jYXRpb24ueSkgPj0gdGhlVGV4dHVyZS5nZXRfaGVpZ2h0KCkpIHJl
dHVybiAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7XG4iKSk7CisgICAgICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAo
bG9jYXRpb24ueCA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxvY2F0aW9uLngpID49IHRo
ZVRleHR1cmUuZ2V0X3dpZHRoKCkpIHJldHVybiAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7XG4i
CisgICAgICAgICAgICAgICAgICAgICIgICAgaWYgKGxvY2F0aW9uLnkgPCAwIHx8IHN0YXRpY19j
YXN0PHVpbnQzMl90Pihsb2NhdGlvbi55KSA+PSB0aGVUZXh0dXJlLmdldF9oZWlnaHQoKSkgcmV0
dXJuICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTtcbiIKKyAgICAgICAgICAgICAgICApOwogICAg
ICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA+PSAzKQotICAgICAgICAgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgaWYgKGxvY2F0aW9u
LnogPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90Pihsb2NhdGlvbi56KSA+PSB0aGVUZXh0dXJl
LmdldF9kZXB0aCgpKSByZXR1cm4gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApO1xuIikpOworICAg
ICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgaWYgKGxv
Y2F0aW9uLnogPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90Pihsb2NhdGlvbi56KSA+PSB0aGVU
ZXh0dXJlLmdldF9kZXB0aCgpKSByZXR1cm4gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApO1xuIik7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
IiAgICByZXR1cm4gdGhlVGV4dHVyZS5yZWFkKCIpOwogICAgICAgICBpZiAodGV4dHVyZVR5cGUu
aXNUZXh0dXJlQXJyYXkoKSkgewogICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uVmVjdG9yTGVu
Z3RoID4gMSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJ1
aW50IiwgdmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIobG9jYXRpb24u
IiwgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIiks
IHVpbnQobG9jYXRpb24uIiwgInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5n
dGggLSAxLCAxKSwgIikiKSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKCJ1aW50IiwgdmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIobG9j
YXRpb24uIiwgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAx
KSwgIiksIHVpbnQobG9jYXRpb24uIiwgInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0
b3JMZW5ndGggLSAxLCAxKSwgJyknKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJ1aW50IiwgdmVjdG9yU3VmZml4KGxvY2F0aW9u
VmVjdG9yTGVuZ3RoKSwgIihsb2NhdGlvbikiKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIpIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ1aW50
IiwgdmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoKSwgIihsb2NhdGlvbikiKTsKKyAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKICAgICAgICAgaWYgKCF0ZXh0dXJlVHlw
ZS5pc0RlcHRoVGV4dHVyZSgpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFr
ZVN0cmluZygiLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAsIHJldHVyblZlY3Rvckxlbmd0aCkp
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIjtcbiIpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxl
QXBwZW5kKCIuIiwgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgcmV0dXJuVmVjdG9yTGVuZ3RoKSk7
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAorICAgICAgICAgICAgIjtcbiIKKyAgICAg
ICAgICAgICJ9XG4iCisgICAgICAgICk7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRv
U3RyaW5nKCk7CiAgICAgfQogCkBAIC01MjEsOSArNTcxLDExIEBAIFN0cmluZyB3cml0ZU5hdGl2
ZUZ1bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgYXV0byBtZXRhbFBh
cmFtZXRlck5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpKTsKICAgICAgICAgYXV0byBtZXRh
bFJldHVybk5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24udHlwZSgpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0
cmluZyhtZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFs
UGFyYW1ldGVyTmFtZSwgIiB4KSB7XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCIgICAgcmV0dXJuIGF0b21pY19sb2FkX2V4cGxpY2l0KHgsIG1lbW9yeV9vcmRlcl9yZWxheGVk
KTtcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgICAgIHN0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBtZXRhbFJldHVybk5hbWUs
ICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB4KSB7
XG4iCisgICAgICAgICAgICAiICAgIHJldHVybiBhdG9taWNfbG9hZF9leHBsaWNpdCh4LCBtZW1v
cnlfb3JkZXJfcmVsYXhlZCk7XG4iCisgICAgICAgICAgICAifVxuIgorICAgICAgICApOwogICAg
ICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIApAQCAtNTMxLDkg
KzU4Myw5IEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAgICAg
ICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9
PSAyKTsKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlcjFOYW1lID0gdHlwZU5hbWVyLm1hbmds
ZWROYW1lRm9yVHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0t
PnR5cGUoKSk7CiAgICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0ZXIyTmFtZSA9IHR5cGVOYW1lci5t
YW5nbGVkTmFtZUZvclR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygp
WzFdLT50eXBlKCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJ2
b2lkICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHgs
ICIsIG1ldGFsUGFyYW1ldGVyMk5hbWUsICIgeSkge1xuIikpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiICAgIGF0b21pY19zdG9yZV9leHBsaWNpdCh4LCB5LCBtZW1vcnlfb3JkZXJf
cmVsYXhlZCk7XG4iKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOworICAg
ICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ2b2lkICIsIG91dHB1dEZ1bmN0aW9u
TmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHgsICIsIG1ldGFsUGFyYW1ldGVyMk5h
bWUsICIgeSkge1xuIgorICAgICAgICAgICAgIiAgICBhdG9taWNfc3RvcmVfZXhwbGljaXQoeCwg
eSwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpO1xuIgorICAgICAgICAgICAgIn1cbiIpOwogICAgICAg
ICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIApAQCAtNTY4LDQ1ICs2
MjAsNTUgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAg
ICBBU1NFUlQoaW5kZXggPT0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCku
c2l6ZSgpKTsKIAogICAgICAgICBhdXRvIG1ldGFsUGFyYW1ldGVyMU5hbWUgPSB0eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKHRleHR1cmVUeXBlKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZygidm9pZCAiLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQ
YXJhbWV0ZXIxTmFtZSwgIiB0aGVUZXh0dXJlIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKCJ2b2lkICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFt
ZXRlcjFOYW1lLCAiIHRoZVRleHR1cmUiKTsKICAgICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5pc1dy
aXRhYmxlVGV4dHVyZSgpICYmIHRleHR1cmVUeXBlLnRleHR1cmVEaW1lbnNpb24oKSAhPSAxKQog
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgdWludCBtaXBMZXZlbCIpOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIsICIsIHdpZHRoVHlwZU5hbWUs
ICIgd2lkdGgiKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiwgIiwg
d2lkdGhUeXBlTmFtZSwgIiB3aWR0aCIpOwogICAgICAgICBpZiAoIWhlaWdodFR5cGVOYW1lLmlz
TnVsbCgpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiLCAi
LCBoZWlnaHRUeXBlTmFtZSwgIiBoZWlnaHQiKSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKCIsICIsIGhlaWdodFR5cGVOYW1lLCAiIGhlaWdodCIpOwogICAgICAg
ICBpZiAoIWRlcHRoVHlwZU5hbWUuaXNOdWxsKCkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChtYWtlU3RyaW5nKCIsICIsIGRlcHRoVHlwZU5hbWUsICIgZGVwdGgiKSk7CisgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIsICIsIGRlcHRoVHlwZU5hbWUs
ICIgZGVwdGgiKTsKICAgICAgICAgaWYgKCFlbGVtZW50c1R5cGVOYW1lLmlzTnVsbCgpKQotICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiLCAiLCBlbGVtZW50c1R5
cGVOYW1lLCAiIGVsZW1lbnRzIikpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZCgiLCAiLCBlbGVtZW50c1R5cGVOYW1lLCAiIGVsZW1lbnRzIik7CiAgICAgICAgIGlm
ICghbnVtYmVyT2ZMZXZlbHNUeXBlTmFtZS5pc051bGwoKSkKLSAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiwgIiwgbnVtYmVyT2ZMZXZlbHNUeXBlTmFtZSwgIiBu
dW1iZXJPZkxldmVscyIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIikge1xuIik7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKHdpZHRoKVxuIik7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgICAgICp3aWR0aCA9IHRoZVRleHR1cmUuZ2V0
X3dpZHRoKCIpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiLCAi
LCBudW1iZXJPZkxldmVsc1R5cGVOYW1lLCAiIG51bWJlck9mTGV2ZWxzIik7CisgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKAorICAgICAgICAgICAgIikge1xuIgorICAgICAgICAgICAgIiAg
ICBpZiAod2lkdGgpXG4iCisgICAgICAgICAgICAiICAgICAgICAqd2lkdGggPSB0aGVUZXh0dXJl
LmdldF93aWR0aCgiCisgICAgICAgICk7CiAgICAgICAgIGlmICghdGV4dHVyZVR5cGUuaXNXcml0
YWJsZVRleHR1cmUoKSAmJiB0ZXh0dXJlVHlwZS50ZXh0dXJlRGltZW5zaW9uKCkgIT0gMSkKICAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJtaXBMZXZlbCIpOwogICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIpOwogICAgICAgICBpZiAoIWhlaWdodFR5cGVOYW1lLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlmIChoZWln
aHQpXG4iKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgICAgICpoZWln
aHQgPSB0aGVUZXh0dXJlLmdldF9oZWlnaHQoIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgKKyAgICAgICAgICAgICAgICAiICAgIGlmIChoZWlnaHQpXG4iCisgICAgICAgICAg
ICAgICAgIiAgICAgICAgKmhlaWdodCA9IHRoZVRleHR1cmUuZ2V0X2hlaWdodCgiCisgICAgICAg
ICAgICApOwogICAgICAgICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5pc1dyaXRhYmxlVGV4dHVyZSgp
ICYmIHRleHR1cmVUeXBlLnRleHR1cmVEaW1lbnNpb24oKSAhPSAxKQogICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJtaXBMZXZlbCIpOwogICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIik7XG4iKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWRlcHRoVHlwZU5h
bWUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYg
KGRlcHRoKVxuIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgICAgICAq
ZGVwdGggPSB0aGVUZXh0dXJlLmdldF9kZXB0aCgiKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKAorICAgICAgICAgICAgICAgICIgICAgaWYgKGRlcHRoKVxuIgorICAgICAgICAg
ICAgICAgICIgICAgICAgICpkZXB0aCA9IHRoZVRleHR1cmUuZ2V0X2RlcHRoKCIKKyAgICAgICAg
ICAgICk7CiAgICAgICAgICAgICBpZiAoIXRleHR1cmVUeXBlLmlzV3JpdGFibGVUZXh0dXJlKCkg
JiYgdGV4dHVyZVR5cGUudGV4dHVyZURpbWVuc2lvbigpICE9IDEpCiAgICAgICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIm1pcExldmVsIik7CiAgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiKTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmICghZWxlbWVudHNUeXBl
TmFtZS5pc051bGwoKSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBp
ZiAoZWxlbWVudHMpXG4iKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAg
ICAgICplbGVtZW50cyA9IHRoZVRleHR1cmUuZ2V0X2FycmF5X3NpemUoKTtcbiIpOworICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCisgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudHMpXG4iCisgICAgICAgICAgICAgICAgIiAgICAgICAgKmVsZW1lbnRzID0gdGhlVGV4dHVy
ZS5nZXRfYXJyYXlfc2l6ZSgpO1xuIgorICAgICAgICAgICAgKTsKICAgICAgICAgfQogICAgICAg
ICBpZiAoIW51bWJlck9mTGV2ZWxzVHlwZU5hbWUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKG51bWJlck9mTGV2ZWxzKVxuIik7Ci0gICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgICAgICAqbnVtYmVyT2ZMZXZlbHMgPSB0aGVU
ZXh0dXJlLmdldF9udW1fbWlwX2xldmVscygpO1xuIik7CisgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAiICAgIGlmIChudW1iZXJPZkxldmVscylcbiIK
KyAgICAgICAgICAgICAgICAiICAgICAgICAqbnVtYmVyT2ZMZXZlbHMgPSB0aGVUZXh0dXJlLmdl
dF9udW1fbWlwX2xldmVscygpO1xuIgorICAgICAgICAgICAgKTsKICAgICAgICAgfQogICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCk7CkBAIC02NjEsMzcgKzcyMyw0MSBAQCBTdHJpbmcgd3JpdGVOYXRpdmVG
dW5jdGlvbihBU1Q6Ok5hdGl2ZUZ1CiAgICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0ZXIyTmFtZSA9
IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoaXRlbVR5cGUpOwogICAgICAgICBhdXRvIG1l
dGFsUGFyYW1ldGVyM05hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGxvY2F0aW9u
VHlwZSk7CiAgICAgICAgIGF1dG8gbWV0YWxJbm5lclR5cGVOYW1lID0gdHlwZU5hbWVyLm1hbmds
ZWROYW1lRm9yVHlwZShpdGVtVmVjdG9ySW5uZXJUeXBlKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQobWFrZVN0cmluZygidm9pZCAiLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0
YWxQYXJhbWV0ZXIxTmFtZSwgIiB0aGVUZXh0dXJlLCAiLCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAi
IGl0ZW0sICIsIG1ldGFsUGFyYW1ldGVyM05hbWUsICIgbG9jYXRpb24pIHtcbiIpKTsKKyAgICAg
ICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidm9pZCAiLCBvdXRwdXRGdW5jdGlvbk5h
bWUsICcoJywgbWV0YWxQYXJhbWV0ZXIxTmFtZSwgIiB0aGVUZXh0dXJlLCAiLCBtZXRhbFBhcmFt
ZXRlcjJOYW1lLCAiIGl0ZW0sICIsIG1ldGFsUGFyYW1ldGVyM05hbWUsICIgbG9jYXRpb24pIHtc
biIpOwogICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNUZXh0dXJlQXJyYXkoKSkgewogICAgICAg
ICAgICAgQVNTRVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID4gMSk7CiAgICAgICAgICAgICBTdHJp
bmcgZGltZW5zaW9uc1tdID0geyAid2lkdGgiX3N0ciwgImhlaWdodCJfc3RyLCAiZGVwdGgiX3N0
ciB9OwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhdGlvblZlY3Rvckxlbmd0
aCAtIDE7ICsraSkgewogICAgICAgICAgICAgICAgIGF1dG8gc3VmZml4ID0gInh5enciX3N0ci5z
dWJzdHJpbmcoaSwgMSk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFr
ZVN0cmluZygiICAgIGlmIChsb2NhdGlvbi4iLCBzdWZmaXgsICIgPj0gdGhlVGV4dHVyZS5nZXRf
IiwgZGltZW5zaW9uc1tpXSwgIigpKSByZXR1cm47XG4iKSk7CisgICAgICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIGlmIChsb2NhdGlvbi4iLCBzdWZmaXgsICIg
Pj0gdGhlVGV4dHVyZS5nZXRfIiwgZGltZW5zaW9uc1tpXSwgIigpKSByZXR1cm47XG4iKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGF1dG8gc3VmZml4ID0gInh5enciX3N0ci5zdWJzdHJp
bmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBpZiAobG9jYXRpb24uIiwgc3VmZml4LCAiID49IHRo
ZVRleHR1cmUuZ2V0X2FycmF5X3NpemUoKSkgcmV0dXJuO1xuIikpOworICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIGlmIChsb2NhdGlvbi4iLCBzdWZmaXgsICIg
Pj0gdGhlVGV4dHVyZS5nZXRfYXJyYXlfc2l6ZSgpKSByZXR1cm47XG4iKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA9PSAxKQotICAgICAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBpZiAobG9jYXRp
b24gPj0gdGhlVGV4dHVyZS5nZXRfd2lkdGgoKSkgcmV0dXJuO1xuIikpOworICAgICAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKGxvY2F0aW9uID49IHRoZVRleHR1cmUu
Z2V0X3dpZHRoKCkpIHJldHVybjtcbiIpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIGlmIChsb2NhdGlvbi54
ID49IHRoZVRleHR1cmUuZ2V0X3dpZHRoKCkpIHJldHVybjtcbiIpKTsKLSAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgaWYgKGxvY2F0aW9uLnkgPj0g
dGhlVGV4dHVyZS5nZXRfaGVpZ2h0KCkpIHJldHVybjtcbiIpKTsKKyAgICAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAobG9jYXRp
b24ueCA+PSB0aGVUZXh0dXJlLmdldF93aWR0aCgpKSByZXR1cm47XG4iCisgICAgICAgICAgICAg
ICAgICAgICIgICAgaWYgKGxvY2F0aW9uLnkgPj0gdGhlVGV4dHVyZS5nZXRfaGVpZ2h0KCkpIHJl
dHVybjtcbiIKKyAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgIGlmIChsb2NhdGlv
blZlY3Rvckxlbmd0aCA+PSAzKQotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChtYWtlU3RyaW5nKCIgICAgaWYgKGxvY2F0aW9uLnogPj0gdGhlVGV4dHVyZS5nZXRfZGVw
dGgoKSkgcmV0dXJuO1xuIikpOworICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiICAgIGlmIChsb2NhdGlvbi56ID49IHRoZVRleHR1cmUuZ2V0X2RlcHRoKCkpIHJldHVy
bjtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKG1ha2VTdHJpbmcoIiAgICB0aGVUZXh0dXJlLndyaXRlKHZlYzwiLCBtZXRhbElubmVy
VHlwZU5hbWUsICIsIDQ+KGl0ZW0iKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQoIiAgICB0aGVUZXh0dXJlLndyaXRlKHZlYzwiLCBtZXRhbElubmVyVHlwZU5hbWUsICIs
IDQ+KGl0ZW0iKTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0IC0gaXRlbVZlY3Rvckxl
bmd0aDsgKytpKQogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgMCIpOwogICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSwgIik7CiAgICAgICAgIGlmICh0ZXh0dXJlVHlw
ZS5pc1RleHR1cmVBcnJheSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQobG9jYXRpb25WZWN0b3JM
ZW5ndGggPiAxKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmco
InVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIihsb2NhdGlv
bi4iLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAi
KSwgdWludChsb2NhdGlvbi4iLCAieHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxl
bmd0aCAtIDEsIDEpLCAiKSIpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIihs
b2NhdGlvbi4iLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAt
IDEpLCAiKSwgdWludChsb2NhdGlvbi4iLCAieHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZl
Y3Rvckxlbmd0aCAtIDEsIDEpLCAnKScpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRp
b25WZWN0b3JMZW5ndGgpLCAiKGxvY2F0aW9uKSIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIik7XG4iKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOworICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZp
eChsb2NhdGlvblZlY3Rvckxlbmd0aCksICIobG9jYXRpb24pIik7CisgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKAorICAgICAgICAgICAgIik7XG4iKTsKKyAgICAgICAgICAgICJ9XG4iCisg
ICAgICAgICk7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAg
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TFR5cGVOYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCShyZXZpc2lvbiAyNDc1NDUpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NSw3ICszNTUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0
aW9uKQogICAgIHsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJz
dHJ1Y3QgIiwgbV9tYW5nbGVkTmFtZUZvck5hbWVkVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9uKSwg
IjtcbiIpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJzdHJ1Y3Qg
IiwgbV9tYW5nbGVkTmFtZUZvck5hbWVkVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9uKSwgIjtcbiIp
OwogICAgIH0KIAogICAgIHN0ZDo6ZnVuY3Rpb248U3RyaW5nKEFTVDo6TmFtZWRUeXBlJik+IG1f
bWFuZ2xlZE5hbWVGb3JOYW1lZFR5cGU7CkBAIC0zODAsMjIgKzM4MCwyNCBAQCB2b2lkIFR5cGVO
YW1lcjo6ZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvCiAgICAgaWYgKGlzPFJlZmVyZW5jZVR5cGVO
YW1lTm9kZT4oYmFzZVR5cGVOYW1lTm9kZSkpIHsKICAgICAgICAgYXV0byYgbmFtZWRUeXBlID0g
ZG93bmNhc3Q8UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihiYXNlVHlwZU5hbWVOb2RlKS5uYW1lZFR5
cGUoKTsKICAgICAgICAgZW1pdE5hbWVkVHlwZURlZmluaXRpb24obmFtZWRUeXBlLCBlbWl0dGVk
TmFtZWRUeXBlcywgZW1pdHRlZFVubmFtZWRUeXBlcywgc3RyaW5nQnVpbGRlcik7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInR5cGVkZWYgIiwgbWFuZ2xlZE5hbWVG
b3JUeXBlKG5hbWVkVHlwZSksICcgJywgYmFzZVR5cGVOYW1lTm9kZS5tYW5nbGVkTmFtZSgpLCAi
O1xuIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ0eXBlZGVmICIs
IG1hbmdsZWROYW1lRm9yVHlwZShuYW1lZFR5cGUpLCAnICcsIGJhc2VUeXBlTmFtZU5vZGUubWFu
Z2xlZE5hbWUoKSwgIjtcbiIpOwogICAgIH0gZWxzZSBpZiAoaXM8UG9pbnRlclR5cGVOYW1lTm9k
ZT4oYmFzZVR5cGVOYW1lTm9kZSkpIHsKICAgICAgICAgYXV0byYgcG9pbnRlclR5cGUgPSBkb3du
Y2FzdDxQb2ludGVyVHlwZU5hbWVOb2RlPihiYXNlVHlwZU5hbWVOb2RlKTsKICAgICAgICAgQVNT
RVJUKGJhc2VUeXBlTmFtZU5vZGUucGFyZW50KCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChtYWtlU3RyaW5nKCJ0eXBlZGVmICIsIHRvU3RyaW5nKHBvaW50ZXJUeXBlLmFkZHJlc3NT
cGFjZSgpKSwgIiAiLCBwb2ludGVyVHlwZS5wYXJlbnQoKS0+bWFuZ2xlZE5hbWUoKSwgIiogIiwg
cG9pbnRlclR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZCgidHlwZWRlZiAiLCB0b1N0cmluZyhwb2ludGVyVHlwZS5hZGRyZXNz
U3BhY2UoKSksICcgJywgcG9pbnRlclR5cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIqICIs
IHBvaW50ZXJUeXBlLm1hbmdsZWROYW1lKCksICI7XG4iKTsKICAgICB9IGVsc2UgaWYgKGlzPEFy
cmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihiYXNlVHlwZU5hbWVOb2RlKSkgewogICAgICAgICBh
dXRvJiBhcnJheVJlZmVyZW5jZVR5cGUgPSBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGVOYW1l
Tm9kZT4oYmFzZVR5cGVOYW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2Rl
LnBhcmVudCgpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygic3Ry
dWN0ICIsIGFycmF5UmVmZXJlbmNlVHlwZS5tYW5nbGVkTmFtZSgpLCAieyBcbiIpKTsKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgICIsIHRvU3RyaW5nKGFycmF5
UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSksICIgIiwgYXJyYXlSZWZlcmVuY2VUeXBlLnBh
cmVudCgpLT5tYW5nbGVkTmFtZSgpLCAiKiBwb2ludGVyO1xuIikpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiICAgIHVpbnQzMl90IGxlbmd0aDtcbiIpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgifTtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKAorICAgICAgICAgICAgInN0cnVjdCAiLCBhcnJheVJlZmVyZW5jZVR5cGUubWFuZ2xlZE5h
bWUoKSwgInsgXG4iCisgICAgICAgICAgICAiICAgICIsIHRvU3RyaW5nKGFycmF5UmVmZXJlbmNl
VHlwZS5hZGRyZXNzU3BhY2UoKSksICcgJywgYXJyYXlSZWZlcmVuY2VUeXBlLnBhcmVudCgpLT5t
YW5nbGVkTmFtZSgpLCAiKiBwb2ludGVyO1xuIgorICAgICAgICAgICAgIiAgICB1aW50MzJfdCBs
ZW5ndGg7XG4iCisgICAgICAgICAgICAifTtcbiIKKyAgICAgICAgKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBhdXRvJiBhcnJheVR5cGUgPSBkb3duY2FzdDxBcnJheVR5cGVOYW1lTm9kZT4oYmFz
ZVR5cGVOYW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2RlLnBhcmVudCgp
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygidHlwZWRlZiBhcnJh
eTwiLCBhcnJheVR5cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIsICIsIGFycmF5VHlwZS5u
dW1FbGVtZW50cygpLCAiPiAiLCBhcnJheVR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpKTsKKyAg
ICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidHlwZWRlZiBhcnJheTwiLCBhcnJh
eVR5cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIsICIsIGFycmF5VHlwZS5udW1FbGVtZW50
cygpLCAiPiAiLCBhcnJheVR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpOwogICAgIH0KICAgICBl
bWl0dGVkVW5uYW1lZFR5cGVzLmFkZCgmYmFzZVR5cGVOYW1lTm9kZSk7CiB9CkBAIC00MTEsMjEg
KzQxMywyMSBAQCB2b2lkIFR5cGVOYW1lcjo6ZW1pdE5hbWVkVHlwZURlZmluaXRpb24oCiAgICAg
aWYgKGlzPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihuYW1lZFR5cGUpKSB7CiAgICAgICAg
IGF1dG8mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25E
ZWZpbml0aW9uPihuYW1lZFR5cGUpOwogICAgICAgICBhdXRvJiBiYXNlVHlwZSA9IGVudW1lcmF0
aW9uRGVmaW5pdGlvbi50eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKG1ha2VTdHJpbmcoImVudW0gY2xhc3MgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKGVudW1l
cmF0aW9uRGVmaW5pdGlvbiksICIgOiAiLCBtYW5nbGVkTmFtZUZvclR5cGUoZG93bmNhc3Q8QVNU
OjpOYW1lZFR5cGU+KGJhc2VUeXBlKSksICIge1xuIikpOworICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKCJlbnVtIGNsYXNzICIsIG1hbmdsZWROYW1lRm9yVHlwZShlbnVtZXJh
dGlvbkRlZmluaXRpb24pLCAiIDogIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKGRvd25jYXN0PEFTVDo6
TmFtZWRUeXBlPihiYXNlVHlwZSkpLCAiIHtcbiIpOwogICAgICAgICBmb3IgKGF1dG8mIGVudW1l
cmF0aW9uTWVtYmVyIDogZW51bWVyYXRpb25EZWZpbml0aW9uLmVudW1lcmF0aW9uTWVtYmVycygp
KQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgICIsIG1h
bmdsZWROYW1lRm9yRW51bWVyYXRpb25NZW1iZXIoZW51bWVyYXRpb25NZW1iZXIpLCAiLFxuIikp
OworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIG1hbmds
ZWROYW1lRm9yRW51bWVyYXRpb25NZW1iZXIoZW51bWVyYXRpb25NZW1iZXIpLCAiLFxuIik7CiAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9O1xuIik7CiAgICAgfSBlbHNlIGlmIChpczxB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKSkgewogICAgICAgICAvLyBOYXRp
dmUgdHlwZXMgYWxyZWFkeSBoYXZlIGRlZmluaXRpb25zLiBUaGVyZSdzIG5vdGhpbmcgdG8gZG8u
CiAgICAgfSBlbHNlIGlmIChpczxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSkp
IHsKICAgICAgICAgYXV0byYgc3RydWN0dXJlRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6U3Ry
dWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQobWFrZVN0cmluZygic3RydWN0ICIsIG1hbmdsZWROYW1lRm9yVHlwZShzdHJ1Y3R1cmVEZWZp
bml0aW9uKSwgIiB7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
InN0cnVjdCAiLCBtYW5nbGVkTmFtZUZvclR5cGUoc3RydWN0dXJlRGVmaW5pdGlvbiksICIge1xu
Iik7CiAgICAgICAgIGZvciAoYXV0byYgc3RydWN0dXJlRWxlbWVudCA6IHN0cnVjdHVyZURlZmlu
aXRpb24uc3RydWN0dXJlRWxlbWVudHMoKSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1ha2VTdHJpbmcoIiAgICAiLCBtYW5nbGVkTmFtZUZvclR5cGUoc3RydWN0dXJlRWxlbWVu
dC50eXBlKCkpLCAnICcsIG1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChzdHJ1Y3R1cmVF
bGVtZW50KSwgIjtcbiIpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoIiAgICAiLCBtYW5nbGVkTmFtZUZvclR5cGUoc3RydWN0dXJlRWxlbWVudC50eXBlKCkpLCAn
ICcsIG1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChzdHJ1Y3R1cmVFbGVtZW50KSwgIjtc
biIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifTtcbiIpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIGF1dG8mIHR5cGVEZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpUeXBlRGVmaW5p
dGlvbj4obmFtZWRUeXBlKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmlu
ZygidHlwZWRlZiAiLCBtYW5nbGVkTmFtZUZvclR5cGUodHlwZURlZmluaXRpb24udHlwZSgpKSwg
JyAnLCBtYW5nbGVkTmFtZUZvclR5cGUodHlwZURlZmluaXRpb24pLCAiO1xuIikpOworICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ0eXBlZGVmICIsIG1hbmdsZWROYW1lRm9y
VHlwZSh0eXBlRGVmaW5pdGlvbi50eXBlKCkpLCAnICcsIG1hbmdsZWROYW1lRm9yVHlwZSh0eXBl
RGVmaW5pdGlvbiksICI7XG4iKTsKICAgICB9CiAgICAgZW1pdHRlZE5hbWVkVHlwZXMuYWRkKCZu
YW1lZFR5cGUpOwogfQpAQCAtNDgxLDExICs0ODMsNyBAQCBTdHJpbmcgVHlwZU5hbWVyOjptYW5n
bGVkTmFtZUZvclN0cnVjdHVyCiBTdHJpbmcgVHlwZU5hbWVyOjptZXRhbFR5cGVzKCkKIHsKICAg
ICBWaXNpdG9yOjp2aXNpdChtX3Byb2dyYW0pOwotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVp
bGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtZXRhbFR5cGVEZWNsYXJhdGlvbnMoKSk7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQobWV0YWxUeXBlRGVmaW5pdGlvbnMoKSk7Ci0gICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhtZXRhbFR5cGVEZWNsYXJhdGlvbnMoKSwg
J1xuJywgbWV0YWxUeXBlRGVmaW5pdGlvbnMoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIE1ldGFs
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcAkocmV2aXNpb24gMjQ3NTQ1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNjYsMTQgKzEz
NjYsMTIgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxvZ0xheWVySW5mbwogICAgIGFi
c29sdXRlQm91bmRzLm1vdmUobGF5ZXIub2Zmc2V0RnJvbUFuY2VzdG9yKG1fcmVuZGVyVmlldy5s
YXllcigpKSk7CiAgICAgCiAgICAgU3RyaW5nQnVpbGRlciBsb2dTdHJpbmc7Ci0gICAgbG9nU3Ry
aW5nLmFwcGVuZChtYWtlU3RyaW5nKHBhZCgnICcsIDEyICsgZGVwdGggKiAyLCBoZXgocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KCZsYXllcikpKSwgIiBpZCAiLCBiYWNraW5nLT5ncmFwaGlj
c0xheWVyKCktPnByaW1hcnlMYXllcklEKCksICIgKCIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRX
aWR0aChhYnNvbHV0ZUJvdW5kcy54KCkudG9GbG9hdCgpLCAzKSwgJywnLCBGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkV2lkdGgoYWJzb2x1dGVCb3VuZHMueSgpLnRvRmxvYXQoKSwgMyksICctJywgRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGFic29sdXRlQm91bmRzLm1heFgoKS50b0Zsb2F0KCks
IDMpLCAnLCcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChhYnNvbHV0ZUJvdW5kcy5tYXhZ
KCkudG9GbG9hdCgpLCAzKSwgIikgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGJhY2tp
bmctPmJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlKCkgLyAxMDI0LCAyKSwgIktCIikpOworICAg
IGxvZ1N0cmluZy5mbGV4aWJsZUFwcGVuZChwYWQoJyAnLCAxMiArIGRlcHRoICogMiwgaGV4KHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PigmbGF5ZXIpKSksICIgaWQgIiwgYmFja2luZy0+Z3Jh
cGhpY3NMYXllcigpLT5wcmltYXJ5TGF5ZXJJRCgpLCAiICgiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkV2lkdGgoYWJzb2x1dGVCb3VuZHMueCgpLnRvRmxvYXQoKSwgMyksICcsJywgRm9ybWF0dGVk
TnVtYmVyOjpmaXhlZFdpZHRoKGFic29sdXRlQm91bmRzLnkoKS50b0Zsb2F0KCksIDMpLCAnLScs
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChhYnNvbHV0ZUJvdW5kcy5tYXhYKCkudG9GbG9h
dCgpLCAzKSwgJywnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYWJzb2x1dGVCb3VuZHMu
bWF4WSgpLnRvRmxvYXQoKSwgMyksICIpICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChi
YWNraW5nLT5iYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgpIC8gMTAyNCwgMiksICJLQiIpOwog
CiAgICAgaWYgKCFsYXllci5yZW5kZXJlcigpLnN0eWxlKCkuaGFzQXV0b1pJbmRleCgpKQotICAg
ICAgICBsb2dTdHJpbmcuYXBwZW5kKG1ha2VTdHJpbmcoIiB6LWluZGV4OiAiLCBsYXllci5yZW5k
ZXJlcigpLnN0eWxlKCkuekluZGV4KCkpKTsKKyAgICAgICAgbG9nU3RyaW5nLmZsZXhpYmxlQXBw
ZW5kKCIgei1pbmRleDogIiwgbGF5ZXIucmVuZGVyZXIoKS5zdHlsZSgpLnpJbmRleCgpKTsKIAot
ICAgIGxvZ1N0cmluZy5hcHBlbmRMaXRlcmFsKCIgKCIpOwotICAgIGxvZ1N0cmluZy5hcHBlbmQo
bG9nUmVhc29uc0ZvckNvbXBvc2l0aW5nKGxheWVyKSk7Ci0gICAgbG9nU3RyaW5nLmFwcGVuZExp
dGVyYWwoIikgIik7CisgICAgbG9nU3RyaW5nLmZsZXhpYmxlQXBwZW5kKCIgKCIsIGxvZ1JlYXNv
bnNGb3JDb21wb3NpdGluZyhsYXllciksICIpICIpOwogCiAgICAgaWYgKGJhY2tpbmctPmdyYXBo
aWNzTGF5ZXIoKS0+Y29udGVudHNPcGFxdWUoKSB8fCBiYWNraW5nLT5wYWludHNJbnRvQ29tcG9z
aXRlZEFuY2VzdG9yKCkgfHwgYmFja2luZy0+Zm9yZWdyb3VuZExheWVyKCkgfHwgYmFja2luZy0+
YmFja2dyb3VuZExheWVyKCkpIHsKICAgICAgICAgbG9nU3RyaW5nLmFwcGVuZCgnWycpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjQ3NTQ1KQorKysg
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OTg1LDcgKzQ5ODUsNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjpvbmdvaW5nTG9hZHNEZXNjcmlwdGlv
CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdbJyk7CiAKICAgICAgICAgZm9yIChhdXRvJiBpbmZv
IDogcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmludGVybWVkaWF0ZUxv
YWRJbmZvcm1hdGlvbkZyb21SZXNvdXJjZUxvYWRJZGVudGlmaWVyKGlkZW50aWZpZXIpKQotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiWyIsIChpbnQpaW5mby50eXBlLCAi
LFwiIiwgaW5mby5yZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiXCIsXCIiLCBpbmZvLnJlcXVlc3Qu
aHR0cE1ldGhvZCgpLCAiXCIsIiwgaW5mby5yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCAiXSIp
KTsKKyAgICAgICAgICAgIGJ1aWxkZXIuZmxleGlibGVBcHBlbmQoJ1snLCAoaW50KWluZm8udHlw
ZSwgIixcIiIsIGluZm8ucmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgIlwiLFwiIiwgaW5mby5yZXF1
ZXN0Lmh0dHBNZXRob2QoKSwgIlwiLCIsIGluZm8ucmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwg
J10nKTsKIAogICAgICAgICBidWlsZGVyLmFwcGVuZCgnXScpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375042</attachid>
            <date>2019-07-28 11:14:03 -0700</date>
            <delta_ts>2019-07-28 12:36:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200034-20190728111401.patch</filename>
            <type>text/plain</type>
            <size>90683</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Nzg5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE5LTA3LTI4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQo
bWFrZVN0cmluZyguLi4pKSBpcyBpbmVmZmljaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMDM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0
YWw6OkVudHJ5UG9pbnRTY2FmZm9sZGluZzo6cmVzb3VyY2VIZWxwZXJUeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkVudHJ5UG9pbnRTY2FmZm9sZGluZzo6cmVzb3VyY2VT
aWduYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc6OmJ1aWx0SW5zU2lnbmF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpN
ZXRhbDo6RW50cnlQb2ludFNjYWZmb2xkaW5nOjptYW5nbGVkSW5wdXRQYXRoKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RW50cnlQb2ludFNjYWZmb2xkaW5nOjptYW5nbGVkT3V0
cHV0UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkVudHJ5UG9pbnRTY2Fm
Zm9sZGluZzo6dW5wYWNrUmVzb3VyY2VzQW5kTmFtZWRCdWlsdElucyk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6TWV0YWw6OlZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6aGVscGVyVHlw
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpWZXJ0ZXhFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc6OnNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlZl
cnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6dW5wYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpNZXRhbDo6VmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjpwYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6Omhl
bHBlclR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RnJhZ21lbnRFbnRy
eVBvaW50U2NhZmZvbGRpbmc6OnNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
TWV0YWw6OkZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjp1bnBhY2spOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6cGFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkNvbXB1dGVFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc6OnNpZ25hdHVyZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0
YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0
YWw6OkZ1bmN0aW9uRGVjbGFyYXRpb25Xcml0ZXI6OnZpc2l0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpNZXRhbDo6RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjpGdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OnZpc2l0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RnVu
Y3Rpb25EZWZpbml0aW9uV3JpdGVyOjplbWl0TG9vcCk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRhbENvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6Ok1ldGFsOjpnZW5lcmF0ZU1ldGFsQ29kZVNoYXJlZCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OndyaXRlTmF0aXZlRnVuY3Rpb24pOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6TWV0YWxUeXBlRGVjbGFyYXRpb25Xcml0
ZXI6OnZpc2l0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6VHlwZU5hbWVyOjpl
bWl0VW5uYW1lZFR5cGVEZWZpbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6VHlwZU5hbWVyOjplbWl0TmFtZWRUeXBlRGVmaW5pdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6bWV0YWxUeXBlcyk6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OlR5cGVzOjphcHBlbmROYW1lVG8pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjps
b2dMYXllckluZm8pOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6b25nb2luZ0xvYWRzRGVzY3JpcHRpb25zIGNvbnN0KToKKwog
MjAxOS0wNy0yNyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V0hMU0xdIFJlbW92ZSBVbm5hbWVkVHlwZSBjb3B5L21vdmUgY29uc3RydWN0b3JzIGFuZCBtYXJr
IGNsYXNzZXMgYXMgZmluYWwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAJKHJldmlzaW9uIDI0Nzg5MykKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTU4LDggKzE1OCw3IEBAIHN0cnVjdCBUeXBlcyB7CiAKICAgICBzdGF0aWMgdm9p
ZCBhcHBlbmROYW1lVG8oU3RyaW5nQnVpbGRlciYgYnVpbGRlcikKICAgICB7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kKFRva2VuOjp0eXBlTmFtZSh0KSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCIsICIpOworICAgICAgICBidWlsZGVyLmZsZXhpYmxlQXBwZW5kKFRva2VuOjp0eXBlTmFtZSh0
KSwgIiwgIik7CiAgICAgICAgIFR5cGVzPHRzLi4uPjo6YXBwZW5kTmFtZVRvKGJ1aWxkZXIpOwog
ICAgIH0KIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRp
bmcuY3BwCShyZXZpc2lvbiAyNDc4OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBTdHJpbmcgRW50cnlQb2ludFNjYWZmb2xkaW5nOjpyZXNv
dXJjZUhlCiB7CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9sYXlvdXQuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQobWFrZVN0cmluZygic3RydWN0ICIsIG1fbmFtZWRCaW5kR3JvdXBzW2ldLnN0
cnVjdE5hbWUsICIge1xuIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KCJzdHJ1Y3QgIiwgbV9uYW1lZEJpbmRHcm91cHNbaV0uc3RydWN0TmFtZSwgIiB7XG4iKTsKICAg
ICAgICAgVmVjdG9yPHN0ZDo6cGFpcjx1bnNpZ25lZCwgU3RyaW5nPj4gc3RydWN0SXRlbXM7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbV9sYXlvdXRbaV0uYmluZGluZ3Muc2l6ZSgp
OyArK2opIHsKICAgICAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNlTWFwLmZpbmQo
Jm1fbGF5b3V0W2ldLmJpbmRpbmdzW2pdKTsKQEAgLTE3MSw3ICsxNzEsNyBAQCBTdHJpbmcgRW50
cnlQb2ludFNjYWZmb2xkaW5nOjpyZXNvdXJjZUhlCiAgICAgICAgICAgICByZXR1cm4gbGVmdC5m
aXJzdCA8IHJpZ2h0LmZpcnN0OwogICAgICAgICB9KTsKICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBzdHJ1Y3RJdGVtIDogc3RydWN0SXRlbXMpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChtYWtlU3RyaW5nKCIgICAgIiwgc3RydWN0SXRlbS5zZWNvbmQsICdcbicpKTsKKyAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICAiLCBzdHJ1Y3RJdGVtLnNl
Y29uZCwgJ1xuJyk7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9O1xuXG4iKTsKICAg
ICB9CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTE4Nyw3ICsxODcs
NyBAQCBPcHRpb25hbDxTdHJpbmc+IEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6CiAgICAgICAgIGlm
IChpKQogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7CiAgICAgICAgIGF1
dG8mIG5hbWVkQmluZEdyb3VwID0gbV9uYW1lZEJpbmRHcm91cHNbaV07Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoImRldmljZSAiLCBuYW1lZEJpbmRHcm91cC5zdHJ1
Y3ROYW1lLCAiJiAiLCBuYW1lZEJpbmRHcm91cC52YXJpYWJsZU5hbWUsICIgW1tidWZmZXIoIiwg
bmFtZWRCaW5kR3JvdXAuYXJndW1lbnRCdWZmZXJJbmRleCwgIildXSIpKTsKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiZGV2aWNlICIsIG5hbWVkQmluZEdyb3VwLnN0cnVj
dE5hbWUsICImICIsIG5hbWVkQmluZEdyb3VwLnZhcmlhYmxlTmFtZSwgIiBbW2J1ZmZlcigiLCBu
YW1lZEJpbmRHcm91cC5hcmd1bWVudEJ1ZmZlckluZGV4LCAiKV1dIik7CiAgICAgfQogICAgIHJl
dHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC0yNDMsNyArMjQzLDcgQEAgT3B0
aW9uYWw8U3RyaW5nPiBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OgogICAgICAgICBpZiAoaW50ZXJu
YWxUeXBlLmlzTnVsbCgpKQogICAgICAgICAgICAgaW50ZXJuYWxUeXBlID0gbV90eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKCppdGVtLnVubmFtZWRUeXBlKTsKICAgICAgICAgYXV0byB2YXJp
YWJsZU5hbWUgPSBuYW1lZEJ1aWx0SW4udmFyaWFibGVOYW1lOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKGludGVybmFsVHlwZSwgJyAnLCB2YXJpYWJsZU5hbWUsICcg
JywgYXR0cmlidXRlRm9yU2VtYW50aWMoYnVpbHRJblNlbWFudGljKSkpOworICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKGludGVybmFsVHlwZSwgJyAnLCB2YXJpYWJsZU5hbWUs
ICcgJywgYXR0cmlidXRlRm9yU2VtYW50aWMoYnVpbHRJblNlbWFudGljKSk7CiAgICAgfQogICAg
IHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC0yNzIsNyArMjcyLDcgQEAg
U3RyaW5nIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6bWFuZ2xlZElucAogICAgICAgICBBU1NFUlQo
c3RydWN0dXJlRGVmaW5pdGlvbik7CiAgICAgICAgIGF1dG8qIG5leHQgPSBzdHJ1Y3R1cmVEZWZp
bml0aW9uLT5maW5kKHBhdGhbaV0pOwogICAgICAgICBBU1NFUlQobmV4dCk7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoJy4nLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFt
ZUZvclN0cnVjdHVyZUVsZW1lbnQoKm5leHQpKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxl
eGlibGVBcHBlbmQoJy4nLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVsZW1l
bnQoKm5leHQpKTsKICAgICAgICAgc3RydWN0dXJlRGVmaW5pdGlvbiA9IG51bGxwdHI7CiAgICAg
ICAgIGF1dG8mIHVuaWZ5Tm9kZSA9IG5leHQtPnR5cGUoKS51bmlmeU5vZGUoKTsKICAgICAgICAg
aWYgKGlzPEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKSB7CkBAIC0yOTYsNyArMjk2LDcgQEAg
U3RyaW5nIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6bWFuZ2xlZE91dAogICAgICAgICBBU1NFUlQo
c3RydWN0dXJlRGVmaW5pdGlvbik7CiAgICAgICAgIGF1dG8qIG5leHQgPSBzdHJ1Y3R1cmVEZWZp
bml0aW9uLT5maW5kKGNvbXBvbmVudCk7CiAgICAgICAgIEFTU0VSVChuZXh0KTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygnLicsIG1fdHlwZU5hbWVyLm1hbmdsZWRO
YW1lRm9yU3RydWN0dXJlRWxlbWVudCgqbmV4dCkpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZCgnLicsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxl
bWVudCgqbmV4dCkpOwogICAgICAgICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gbnVsbHB0cjsKICAg
ICAgICAgYXV0byYgdW5pZnlOb2RlID0gbmV4dC0+dHlwZSgpLnVuaWZ5Tm9kZSgpOwogICAgICAg
ICBpZiAoaXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpIHsKQEAgLTMxMyw3ICszMTMsNyBA
QCBTdHJpbmcgRW50cnlQb2ludFNjYWZmb2xkaW5nOjp1bnBhY2tSZXNvCiB7CiAgICAgU3RyaW5n
QnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5j
dGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKQotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgq
bV9mdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpW2ldLT50eXBlKCkpLCAnICcsIG1fcGFy
YW1ldGVyVmFyaWFibGVzW2ldLCAiO1xuIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbV9mdW5jdGlvbkRlZmlu
aXRpb24ucGFyYW1ldGVycygpW2ldLT50eXBlKCkpLCAnICcsIG1fcGFyYW1ldGVyVmFyaWFibGVz
W2ldLCAiO1xuIik7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGF5b3V0LnNpemUo
KTsgKytpKSB7CiAgICAgICAgIGF1dG8gdmFyaWFibGVOYW1lID0gbV9uYW1lZEJpbmRHcm91cHNb
aV0udmFyaWFibGVOYW1lOwpAQCAtMzMwLDE2ICszMzAsMTggQEAgU3RyaW5nIEVudHJ5UG9pbnRT
Y2FmZm9sZGluZzo6dW5wYWNrUmVzbwogICAgICAgICAgICAgICAgIGF1dG8mIHVubmFtZWRUeXBl
ID0gKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tpdGVyYXRvci0+dmFsdWVdLnVubmFtZWRUeXBl
OwogICAgICAgICAgICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFu
Z2xlZE5hbWVGb3JUeXBlKGRvd25jYXN0PEFTVDo6UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUp
LmVsZW1lbnRUeXBlKCkpOwogCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
bWFrZVN0cmluZygic2l6ZV90ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPSAiLCB2YXJpYWJs
ZU5hbWUsICcuJywgbGVuZ3RoRWxlbWVudE5hbWUsICIueTtcbiIpKTsKLSAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKGxlbmd0aFRlbXBvcmFyeU5hbWUsICIg
PSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiIDw8IDMyO1xuIikpOwotICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9
ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgfCAiLCB2YXJpYWJsZU5hbWUsICcuJywgbGVuZ3Ro
RWxlbWVudE5hbWUsICIueDtcbiIpKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChtYWtlU3RyaW5nKGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPSAiLCBsZW5ndGhUZW1wb3Jh
cnlOYW1lLCAiIC8gc2l6ZW9mKCIsIG1hbmdsZWRUeXBlTmFtZSwgIik7XG4iKSk7Ci0gICAgICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiaWYgKCIsIGxlbmd0aFRl
bXBvcmFyeU5hbWUsICIgPiAweEZGRkZGRkZGKSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0g
MHhGRkZGRkZGRjtcbiIpKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCht
YWtlU3RyaW5nKG1hbmdsZWRJbnB1dFBhdGgocGF0aCksICIgPSB7ICIsIHZhcmlhYmxlTmFtZSwg
Jy4nLCBlbGVtZW50TmFtZSwgIiwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCIsIGxlbmd0aFRlbXBv
cmFyeU5hbWUsICIpIH07XG4iKSk7CisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgInNpemVfdCAiLCBsZW5ndGhUZW1wb3Jh
cnlOYW1lLCAiID0gIiwgdmFyaWFibGVOYW1lLCAnLicsIGxlbmd0aEVsZW1lbnROYW1lLCAiLnk7
XG4iLAorICAgICAgICAgICAgICAgICAgICBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gIiwgbGVu
Z3RoVGVtcG9yYXJ5TmFtZSwgIiA8PCAzMjtcbiIsCisgICAgICAgICAgICAgICAgICAgIGxlbmd0
aFRlbXBvcmFyeU5hbWUsICIgPSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiIHwgIiwgdmFyaWFi
bGVOYW1lLCAnLicsIGxlbmd0aEVsZW1lbnROYW1lLCAiLng7XG4iLAorICAgICAgICAgICAgICAg
ICAgICBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiAv
IHNpemVvZigiLCBtYW5nbGVkVHlwZU5hbWUsICIpO1xuIiwKKyAgICAgICAgICAgICAgICAgICAg
ImlmICgiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID4gMHhGRkZGRkZGRikgIiwgbGVuZ3RoVGVt
cG9yYXJ5TmFtZSwgIiA9IDB4RkZGRkZGRkY7XG4iLAorICAgICAgICAgICAgICAgICAgICBtYW5n
bGVkSW5wdXRQYXRoKHBhdGgpLCAiID0geyAiLCB2YXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5h
bWUsICIsIHN0YXRpY19jYXN0PHVpbnQzMl90PigiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiKSB9
O1xuIgorICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIGF1dG8mIHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbaXRlcmF0b3ItPnZh
bHVlXS5wYXRoOwogICAgICAgICAgICAgICAgIGF1dG8gZWxlbWVudE5hbWUgPSBtX25hbWVkQmlu
ZEdyb3Vwc1tpXS5uYW1lZEJpbmRpbmdzW2pdLmVsZW1lbnROYW1lOwotICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWFuZ2xlZElucHV0UGF0aChwYXRoKSwg
IiA9ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIjtcbiIpKTsKKyAgICAgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRJbnB1dFBhdGgocGF0
aCksICIgPSAiLCB2YXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICI7XG4iKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTM0OSw3ICszNTEsNyBAQCBTdHJpbmcgRW50
cnlQb2ludFNjYWZmb2xkaW5nOjp1bnBhY2tSZXNvCiAgICAgICAgIGF1dG8mIHBhdGggPSBpdGVt
LnBhdGg7CiAgICAgICAgIGF1dG8mIHZhcmlhYmxlTmFtZSA9IG5hbWVkQnVpbHRJbi52YXJpYWJs
ZU5hbWU7CiAgICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKCppdGVtLnVubmFtZWRUeXBlKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZyhtYW5nbGVkSW5wdXRQYXRoKHBhdGgpLCAiID0gIiwgbWFuZ2xlZFR5
cGVOYW1lLCAnKCcsIHZhcmlhYmxlTmFtZSwgIik7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQobWFuZ2xlZElucHV0UGF0aChwYXRoKSwgIiA9ICIsIG1hbmdsZWRU
eXBlTmFtZSwgJygnLCB2YXJpYWJsZU5hbWUsICIpO1xuIik7CiAgICAgfQogICAgIHJldHVybiBz
dHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC0zODcsMjYgKzM4OSwyOCBAQCBTdHJpbmcg
VmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjpoZWxwCiB7CiAgICAgU3RyaW5nQnVpbGRlciBz
dHJpbmdCdWlsZGVyOwogCi0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygic3Ry
dWN0ICIsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICIge1xuIikpOworICAgIHN0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQoInN0cnVjdCAiLCBtX3N0YWdlSW5TdHJ1Y3ROYW1lLCAiIHtcbiIpOwog
ICAgIGZvciAoYXV0byYgbmFtZWRTdGFnZUluIDogbV9uYW1lZFN0YWdlSW5zKSB7CiAgICAgICAg
IGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpt
X2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRl
bXNdLnVubmFtZWRUeXBlKTsKICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG5hbWVkU3RhZ2VJ
bi5lbGVtZW50TmFtZTsKICAgICAgICAgYXV0byBhdHRyaWJ1dGVJbmRleCA9IG5hbWVkU3RhZ2VJ
bi5hdHRyaWJ1dGVJbmRleDsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmlu
ZygiICAgICIsIG1hbmdsZWRUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgIiBbW2F0dHJpYnV0
ZSgiLCBhdHRyaWJ1dGVJbmRleCwgIildXTtcbiIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZCgiICAgICIsIG1hbmdsZWRUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwg
IiBbW2F0dHJpYnV0ZSgiLCBhdHRyaWJ1dGVJbmRleCwgIildXTtcbiIpOwogICAgIH0KLSAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgifTtcblxuIik7Ci0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChtYWtlU3RyaW5nKCJzdHJ1Y3QgIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAiIHtcbiIpKTsKKyAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAifTtcblxuIgorICAgICAg
ICAic3RydWN0ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgIiB7XG4iCisgICAgKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgYXV0byYgb3V0cHV0SXRlbSA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNb
aV07CiAgICAgICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5p
bnRlcm5hbFR5cGVOYW1lOwogICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1
dHNbaV0uZWxlbWVudE5hbWU7CiAgICAgICAgIGF1dG8gYXR0cmlidXRlID0gYXR0cmlidXRlRm9y
U2VtYW50aWMoKm91dHB1dEl0ZW0uc2VtYW50aWMpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChtYWtlU3RyaW5nKCIgICAgIiwgaW50ZXJuYWxUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFt
ZSwgJyAnLCBhdHRyaWJ1dGUsICI7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoIiAgICAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAnICcs
IGF0dHJpYnV0ZSwgIjtcbiIpOwogICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifTtc
blxuIik7Ci0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyZXNvdXJjZUhlbHBlclR5cGVzKCkp
OworICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICJ9O1xuXG4iLAor
ICAgICAgICByZXNvdXJjZUhlbHBlclR5cGVzKCkKKyAgICApOwogCiAgICAgcmV0dXJuIHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAgLTQxNSwxMiArNDE5LDEyIEBAIFN0cmluZyBWZXJ0
ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OnNpZ24KIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmlu
Z0J1aWxkZXI7CiAKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJ2ZXJ0ZXgg
IiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIGZ1bmN0aW9uTmFtZSwgJygnLCBtX3N0YWdlSW5T
dHJ1Y3ROYW1lLCAnICcsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICIgW1tzdGFnZV9pbl1dIikp
OworICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInZlcnRleCAiLCBtX3JldHVyblN0
cnVjdE5hbWUsICcgJywgZnVuY3Rpb25OYW1lLCAnKCcsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICcg
JywgbV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgIiBbW3N0YWdlX2luXV0iKTsKICAgICBpZiAoYXV0
byByZXNvdXJjZVNpZ25hdHVyZSA9IHRoaXMtPnJlc291cmNlU2lnbmF0dXJlKCkpCi0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiwgIiwgKnJlc291cmNlU2lnbmF0dXJl
KSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiwgIiwgKnJlc291cmNl
U2lnbmF0dXJlKTsKICAgICBpZiAoYXV0byBidWlsdEluc1NpZ25hdHVyZSA9IHRoaXMtPmJ1aWx0
SW5zU2lnbmF0dXJlKCkpCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmco
IiwgIiwgKmJ1aWx0SW5zU2lnbmF0dXJlKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiki
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiLCAiLCAqYnVpbHRJbnNT
aWduYXR1cmUpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcpJyk7CiAKICAgICByZXR1cm4g
c3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQpAQCAtNDM0LDcgKzQzOCw3IEBAIFN0cmluZyBW
ZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OnVucGEKICAgICBmb3IgKGF1dG8mIG5hbWVkU3Rh
Z2VJbiA6IG1fbmFtZWRTdGFnZUlucykgewogICAgICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBv
aW50SXRlbXMuaW5wdXRzW25hbWVkU3RhZ2VJbi5pbmRleEluRW50cnlQb2ludEl0ZW1zXS5wYXRo
OwogICAgICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG5hbWVkU3RhZ2VJbi5lbGVtZW50TmFtZTsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5nbGVkSW5wdXRQYXRo
KHBhdGgpLCAiID0gIiwgbV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwg
IjtcbiIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkSW5w
dXRQYXRoKHBhdGgpLCAiID0gIiwgbV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgJy4nLCBlbGVtZW50
TmFtZSwgIjtcbiIpOwogICAgIH0KIAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5n
KCk7CkBAIC00NDMsMTcgKzQ0NywxOCBAQCBTdHJpbmcgVmVydGV4RW50cnlQb2ludFNjYWZmb2xk
aW5nOjp1bnBhCiBTdHJpbmcgVmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjpwYWNrKGNvbnN0
IFN0cmluZyYgaW5wdXRWYXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgb3V0cHV0VmFyaWFibGVO
YW1lKQogewogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBvdXRwdXRWYXJp
YWJsZU5hbWUsICI7XG4iKSk7CisKKyAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1f
cmV0dXJuU3RydWN0TmFtZSwgJyAnLCBvdXRwdXRWYXJpYWJsZU5hbWUsICI7XG4iKTsKICAgICBp
ZiAobV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCkgPT0gMSAmJiAhbV9lbnRyeVBvaW50
SXRlbXMub3V0cHV0c1swXS5wYXRoLnNpemUoKSkgewogICAgICAgICBhdXRvJiBlbGVtZW50TmFt
ZSA9IG1fbmFtZWRPdXRwdXRzWzBdLmVsZW1lbnROYW1lOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChtYWtlU3RyaW5nKG91dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwg
IiA9ICIsIGlucHV0VmFyaWFibGVOYW1lLCAiO1xuIikpOworICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKG91dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9
ICIsIGlucHV0VmFyaWFibGVOYW1lLCAiO1xuIik7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRy
eVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvJiBlbGVtZW50
TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVsZW1lbnROYW1lOwogICAgICAgICBhdXRvJiBpbnRl
cm5hbFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJuYWxUeXBlTmFtZTsKICAgICAg
ICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNbaV0ucGF0aDsKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhvdXRwdXRWYXJpYWJsZU5hbWUsICcu
JywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnKCcsIGlucHV0VmFyaWFi
bGVOYW1lLCBtYW5nbGVkT3V0cHV0UGF0aChwYXRoKSwgIik7XG4iKSk7CisgICAgICAgIHN0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQob3V0cHV0VmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnRO
YW1lLCAiID0gIiwgaW50ZXJuYWxUeXBlTmFtZSwgJygnLCBpbnB1dFZhcmlhYmxlTmFtZSwgbWFu
Z2xlZE91dHB1dFBhdGgocGF0aCksICIpO1xuIik7CiAgICAgfQogICAgIHJldHVybiBzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC00OTMsMjYgKzQ5OCwyOCBAQCBTdHJpbmcgRnJhZ21l
bnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmhlCiB7CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdC
dWlsZGVyOwogCi0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygic3RydWN0ICIs
IG1fc3RhZ2VJblN0cnVjdE5hbWUsICIge1xuIikpOworICAgIHN0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoInN0cnVjdCAiLCBtX3N0YWdlSW5TdHJ1Y3ROYW1lLCAiIHtcbiIpOwogICAgIGZv
ciAoYXV0byYgbmFtZWRTdGFnZUluIDogbV9uYW1lZFN0YWdlSW5zKSB7CiAgICAgICAgIGF1dG8g
bWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCptX2VudHJ5
UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRlbXNdLnVu
bmFtZWRUeXBlKTsKICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG5hbWVkU3RhZ2VJbi5lbGVt
ZW50TmFtZTsKICAgICAgICAgYXV0byBhdHRyaWJ1dGVJbmRleCA9IG5hbWVkU3RhZ2VJbi5hdHRy
aWJ1dGVJbmRleDsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAg
ICIsIG1hbmdsZWRUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgIiBbW3VzZXIodXNlciIsIGF0
dHJpYnV0ZUluZGV4LCAiKV1dO1xuIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxl
QXBwZW5kKCIgICAgIiwgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAiIFtbdXNl
cih1c2VyIiwgYXR0cmlidXRlSW5kZXgsICIpXV07XG4iKTsKICAgICB9Ci0gICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIn07XG5cbiIpOwotCi0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0
cmluZygic3RydWN0ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgIiB7XG4iKSk7CisgICAgc3RyaW5n
QnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgIn07XG5cbiIKKyAgICAgICAgInN0cnVj
dCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICIge1xuIgorICAgICk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIGF1dG8mIG91dHB1dEl0ZW0gPSBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzW2ldOwogICAg
ICAgICBhdXRvJiBpbnRlcm5hbFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJuYWxU
eXBlTmFtZTsKICAgICAgICAgYXV0byBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVs
ZW1lbnROYW1lOwogICAgICAgICBhdXRvIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUZvclNlbWFudGlj
KCpvdXRwdXRJdGVtLnNlbWFudGljKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFr
ZVN0cmluZygiICAgICIsIGludGVybmFsVHlwZU5hbWUsICcgJywgZWxlbWVudE5hbWUsICcgJywg
YXR0cmlidXRlLCAiO1xuIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KCIgICAgIiwgaW50ZXJuYWxUeXBlTmFtZSwgJyAnLCBlbGVtZW50TmFtZSwgJyAnLCBhdHRyaWJ1
dGUsICI7XG4iKTsKICAgICB9Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn07XG5cbiIpOwot
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocmVzb3VyY2VIZWxwZXJUeXBlcygpKTsKKyAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAifTtcblxuIiwKKyAgICAgICAg
cmVzb3VyY2VIZWxwZXJUeXBlcygpCisgICAgKTsKIAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVy
LnRvU3RyaW5nKCk7CiB9CkBAIC01MjEsMTIgKzUyOCwxMiBAQCBTdHJpbmcgRnJhZ21lbnRFbnRy
eVBvaW50U2NhZmZvbGRpbmc6OnNpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVy
OwogCi0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiZnJhZ21lbnQgIiwgbV9y
ZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIGZ1bmN0aW9uTmFtZSwgJygnLCBtX3N0YWdlSW5TdHJ1Y3RO
YW1lLCAnICcsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICIgW1tzdGFnZV9pbl1dIikpOworICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImZyYWdtZW50ICIsIG1fcmV0dXJuU3RydWN0
TmFtZSwgJyAnLCBmdW5jdGlvbk5hbWUsICcoJywgbV9zdGFnZUluU3RydWN0TmFtZSwgJyAnLCBt
X3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAiIFtbc3RhZ2VfaW5dXSIpOwogICAgIGlmIChhdXRvIHJl
c291cmNlU2lnbmF0dXJlID0gdGhpcy0+cmVzb3VyY2VTaWduYXR1cmUoKSkKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiLCAiLCAqcmVzb3VyY2VTaWduYXR1cmUpKTsK
KyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiLCAiLCAqcmVzb3VyY2VTaWdu
YXR1cmUpOwogICAgIGlmIChhdXRvIGJ1aWx0SW5zU2lnbmF0dXJlID0gdGhpcy0+YnVpbHRJbnNT
aWduYXR1cmUoKSkKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiLCAi
LCAqYnVpbHRJbnNTaWduYXR1cmUpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSIpOwor
ICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIsICIsICpidWlsdEluc1NpZ25h
dHVyZSk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJyknKTsKIAogICAgIHJldHVybiBzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC01NDAsNyArNTQ3LDcgQEAgU3RyaW5nIEZyYWdt
ZW50RW50cnlQb2ludFNjYWZmb2xkaW5nOjp1bgogICAgIGZvciAoYXV0byYgbmFtZWRTdGFnZUlu
IDogbV9uYW1lZFN0YWdlSW5zKSB7CiAgICAgICAgIGF1dG8mIHBhdGggPSBtX2VudHJ5UG9pbnRJ
dGVtcy5pbnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5FbnRyeVBvaW50SXRlbXNdLnBhdGg7CiAg
ICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbmFtZWRTdGFnZUluLmVsZW1lbnROYW1lOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1hbmdsZWRJbnB1dFBhdGgocGF0
aCksICIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xu
IikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRJbnB1dFBh
dGgocGF0aCksICIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAnLicsIGVsZW1lbnROYW1l
LCAiO1xuIik7CiAgICAgfQogCiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsK
QEAgLTU0OSwxNyArNTU2LDE4IEBAIFN0cmluZyBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGlu
Zzo6dW4KIFN0cmluZyBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6cGFjayhjb25zdCBT
dHJpbmcmIGlucHV0VmFyaWFibGVOYW1lLCBjb25zdCBTdHJpbmcmIG91dHB1dFZhcmlhYmxlTmFt
ZSkKIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQobWFrZVN0cmluZyhtX3JldHVyblN0cnVjdE5hbWUsICcgJywgb3V0cHV0VmFyaWFi
bGVOYW1lLCAiO1xuIikpOworCisgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3Jl
dHVyblN0cnVjdE5hbWUsICcgJywgb3V0cHV0VmFyaWFibGVOYW1lLCAiO1xuIik7CiAgICAgaWYg
KG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpID09IDEgJiYgIW1fZW50cnlQb2ludEl0
ZW1zLm91dHB1dHNbMF0ucGF0aC5zaXplKCkpIHsKICAgICAgICAgYXV0byYgZWxlbWVudE5hbWUg
PSBtX25hbWVkT3V0cHV0c1swXS5lbGVtZW50TmFtZTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZyhvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIg
PSAiLCBpbnB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZChvdXRwdXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAi
LCBpbnB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpOwogICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRl
ci50b1N0cmluZygpOwogICAgIH0KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cnlQ
b2ludEl0ZW1zLm91dHB1dHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byYgZWxlbWVudE5h
bWUgPSBtX25hbWVkT3V0cHV0c1tpXS5lbGVtZW50TmFtZTsKICAgICAgICAgYXV0byYgaW50ZXJu
YWxUeXBlTmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmludGVybmFsVHlwZU5hbWU7CiAgICAgICAg
IGF1dG8mIHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzW2ldLnBhdGg7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcob3V0cHV0VmFyaWFibGVOYW1lLCAnLics
IGVsZW1lbnROYW1lLCAiID0gIiwgaW50ZXJuYWxUeXBlTmFtZSwgJygnLCBpbnB1dFZhcmlhYmxl
TmFtZSwgbWFuZ2xlZE91dHB1dFBhdGgocGF0aCksICIpO1xuIikpOworICAgICAgICBzdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKG91dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFt
ZSwgIiA9ICIsIGludGVybmFsVHlwZU5hbWUsICcoJywgaW5wdXRWYXJpYWJsZU5hbWUsIG1hbmds
ZWRPdXRwdXRQYXRoKHBhdGgpLCAiKTtcbiIpOwogICAgIH0KICAgICByZXR1cm4gc3RyaW5nQnVp
bGRlci50b1N0cmluZygpOwogfQpAQCAtNTc4LDE4ICs1ODYsMTggQEAgU3RyaW5nIENvbXB1dGVF
bnRyeVBvaW50U2NhZmZvbGRpbmc6OnNpZwogewogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVp
bGRlcjsKIAotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoImtlcm5lbCB2b2lk
ICIsIGZ1bmN0aW9uTmFtZSwgJygnKSk7CisgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgia2VybmVsIHZvaWQgIiwgZnVuY3Rpb25OYW1lLCAnKCcpOwogICAgIGJvb2wgZW1wdHkgPSB0
cnVlOwogICAgIGlmIChhdXRvIHJlc291cmNlU2lnbmF0dXJlID0gdGhpcy0+cmVzb3VyY2VTaWdu
YXR1cmUoKSkgewogICAgICAgICBlbXB0eSA9IGZhbHNlOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChtYWtlU3RyaW5nKCpyZXNvdXJjZVNpZ25hdHVyZSkpOworICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgqcmVzb3VyY2VTaWduYXR1cmUpOwogICAgIH0KICAgICBpZiAoYXV0byBi
dWlsdEluc1NpZ25hdHVyZSA9IHRoaXMtPmJ1aWx0SW5zU2lnbmF0dXJlKCkpIHsKICAgICAgICAg
aWYgKCFlbXB0eSkKICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsICIpOwogICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgqYnVpbHRJbnNTaWduYXR1cmUpOwogICAgIH0KLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcp
Jyk7CiAKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAJKHJldmlzaW9uIDI0Nzg5MykKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgRnVuY3Rpb25EZWNsYXJh
dGlvbldyaXRlcjo6dmlzaXQoQVMKIAogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2Z1bmN0aW9uTWFw
cGluZy5maW5kKCZmdW5jdGlvbkRlY2xhcmF0aW9uKTsKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0g
bV9mdW5jdGlvbk1hcHBpbmcuZW5kKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFr
ZVN0cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZnVuY3Rpb25EZWNsYXJhdGlv
bi50eXBlKCkpLCAnICcsIGl0ZXJhdG9yLT52YWx1ZSwgJygnKSk7CisgICAgbV9zdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShmdW5jdGlv
bkRlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgaXRlcmF0b3ItPnZhbHVlLCAnKCcpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKCIsICIpOwpAQCAtOTEsMTQgKzkxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2Z1
bmN0aW9uTWFwcGluZyhmdW5jdGlvbk1hcHBpbmcpCiAgICAgICAgICwgbV9sYXlvdXQobGF5b3V0
KQogICAgIHsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKAorICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCiAgICAgICAgICAgICAidGVtcGxh
dGUgPHR5cGVuYW1lIFQ+XG4iCiAgICAgICAgICAgICAiaW5saW5lIHZvaWQgIiwgbWVtc2V0WmVy
b0Z1bmN0aW9uTmFtZSwgIih0aHJlYWQgVCYgdmFsdWUpXG4iCiAgICAgICAgICAgICAie1xuIgog
ICAgICAgICAgICAgIiAgICB0aHJlYWQgY2hhciogcHRyID0gc3RhdGljX2Nhc3Q8dGhyZWFkIGNo
YXIqPihzdGF0aWNfY2FzdDx0aHJlYWQgdm9pZCo+KCZ2YWx1ZSkpO1xuIgogICAgICAgICAgICAg
IiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihUKTsgKytpKVxuIgogICAgICAgICAg
ICAgIiAgICAgICAgcHRyW2ldID0gMDtcbiIKLSAgICAgICAgICAgICJ9XG4iKSk7CisgICAgICAg
ICAgICAifVxuIik7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBt
ZW1zZXRaZXJvRnVuY3Rpb25OYW1lID0gIm1lbXNldFplcm8iOwpAQCAtMjI5LDEwICsyMjksMTEg
QEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgICAgICBpZiAo
IWVudHJ5UG9pbnRTY2FmZm9sZGluZykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9l
bnRyeVBvaW50U2NhZmZvbGRpbmcgPSBXVEZNb3ZlKGVudHJ5UG9pbnRTY2FmZm9sZGluZyk7Ci0g
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9lbnRyeVBvaW50U2NhZmZvbGRpbmctPmhl
bHBlclR5cGVzKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV9lbnRyeVBvaW50U2NhZmZv
bGRpbmctPnNpZ25hdHVyZShpdGVyYXRvci0+dmFsdWUpLCAiIHtcbiIpKTsKLSAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+dW5wYWNrKCkpOwor
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBtX2Vu
dHJ5UG9pbnRTY2FmZm9sZGluZy0+aGVscGVyVHlwZXMoKSwgJ1xuJywKKyAgICAgICAgICAgIG1f
ZW50cnlQb2ludFNjYWZmb2xkaW5nLT5zaWduYXR1cmUoaXRlcmF0b3ItPnZhbHVlKSwgIiB7XG4i
LAorICAgICAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmctPnVucGFjaygpCisgICAgICAg
ICk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25EZWZpbml0aW9uLnBh
cmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X3ZhcmlhYmxlTWFwcGluZy5hZGQoJmZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0s
IG1fZW50cnlQb2ludFNjYWZmb2xkaW5nLT5wYXJhbWV0ZXJWYXJpYWJsZXMoKVtpXSk7CiAgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwpA
QCAtMjQzLDcgKzI0NCw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChB
U1QKICAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmcgPSBudWxscHRyOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIEFTU0VSVChtX2VudHJ5UG9pbnRTY2FmZm9sZGluZyA9PSBudWxscHRyKTsK
LSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1fdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZShmdW5jdGlvbkRlZmluaXRpb24udHlwZSgpKSwgJyAnLCBpdGVyYXRv
ci0+dmFsdWUsICcoJykpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
bV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGZ1bmN0aW9uRGVmaW5pdGlvbi50eXBlKCkp
LCAnICcsIGl0ZXJhdG9yLT52YWx1ZSwgJygnKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgICAgICBhdXRvJiBwYXJhbWV0ZXIgPSBmdW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygp
W2ldOwogICAgICAgICAgICAgaWYgKGkpCkBAIC0yNTEsNyArMjUyLDcgQEAgdm9pZCBGdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJO
YW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgICAgICAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fdmFyaWFibGVNYXBwaW5nLmFkZCgmcGFyYW1ldGVyLCBwYXJhbWV0ZXJOYW1lKTsK
ICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7Ci0gICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV90eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpwYXJhbWV0ZXItPnR5cGUoKSksICcgJywgcGFyYW1l
dGVyTmFtZSkpOworICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqcGFyYW1ldGVyLT50eXBlKCkpLCAnICcsIHBh
cmFtZXRlck5hbWUpOwogICAgICAgICB9CiAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
Iikge1xuIik7CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24u
YmxvY2soKSk7CkBAIC0yODcsOCArMjg4LDEwIEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyOjp2aXNpdChBU1QKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCcmVha0NvbnRleHQ6Okxv
b3A6CiAgICAgICAgIEFTU0VSVChtX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUu
bGVuZ3RoKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV9i
cmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCAiID0gdHJ1ZTtcbiIpKTsKLSAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiYnJlYWs7XG4iKTsKKyAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgbV9icmVha091dE9mQ3VycmVudExv
b3BFYXJseVZhcmlhYmxlLCAiID0gdHJ1ZTtcbiIKKyAgICAgICAgICAgICJicmVhaztcbiIKKyAg
ICAgICAgKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAtMzE0LDIwICszMTcsMjMgQEAg
dm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmVtaXRMb29wKAogewogICAgIFNldEZvclNj
b3BlPFN0cmluZz4gbG9vcFZhcmlhYmxlU2NvcGUobV9icmVha091dE9mQ3VycmVudExvb3BFYXJs
eVZhcmlhYmxlLCBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKSk7CiAKLSAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoImJvb2wgIiwgbV9icmVha091dE9mQ3VycmVudExvb3BF
YXJseVZhcmlhYmxlLCAiID0gZmFsc2U7XG4iKSk7Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJ3aGlsZSAodHJ1ZSkge1xuIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKAorICAgICAgICAiYm9vbCAiLCBtX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFi
bGUsICIgPSBmYWxzZTtcbiIsCisgICAgICAgICJ3aGlsZSAodHJ1ZSkge1xuIgorICAgICk7CiAK
ICAgICBpZiAobG9vcENvbmRpdGlvbkxvY2F0aW9uID09IExvb3BDb25kaXRpb25Mb2NhdGlvbjo6
QmVmb3JlQm9keSAmJiBjb25kaXRpb25FeHByZXNzaW9uKSB7CiAgICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdCgqY29uZGl0aW9uRXhwcmVzc2lvbik7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZygiaWYgKCEiLCB0YWtlTGFzdFZhbHVlKCksICIpIGJyZWFrO1xuIikp
OworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImlmICghIiwgdGFrZUxh
c3RWYWx1ZSgpLCAiKSBicmVhaztcbiIpOwogICAgIH0KIAogICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoImRvIHtcbiIpOwogICAgIFNldEZvclNjb3BlPE9wdGlvbmFsPEJyZWFrQ29udGV4dD4+
IGJyZWFrQ29udGV4dChtX2N1cnJlbnRCcmVha0NvbnRleHQsIEJyZWFrQ29udGV4dDo6TG9vcCk7
CiAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGJvZHkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoIn0gd2hpbGUoZmFsc2UpOyBcbiIpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFr
ZVN0cmluZygiaWYgKCIsIG1fYnJlYWtPdXRPZkN1cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgIikg
YnJlYWs7XG4iKSk7CisgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAg
ICAifSB3aGlsZShmYWxzZSk7IFxuIgorICAgICAgICAiaWYgKCIsIG1fYnJlYWtPdXRPZkN1cnJl
bnRMb29wRWFybHlWYXJpYWJsZSwgIikgYnJlYWs7XG4iCisgICAgKTsKIAogICAgIGlmIChpbmNy
ZW1lbnQpIHsKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCppbmNyZW1lbnQpOwpAQCAtMzM4
LDcgKzM0NCw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjplbWl0TG9vcCgKIAog
ICAgIGlmIChsb29wQ29uZGl0aW9uTG9jYXRpb24gPT0gTG9vcENvbmRpdGlvbkxvY2F0aW9uOjpB
ZnRlckJvZHkgJiYgY29uZGl0aW9uRXhwcmVzc2lvbikgewogICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoKmNvbmRpdGlvbkV4cHJlc3Npb24pOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1ha2VTdHJpbmcoImlmICghIiwgdGFrZUxhc3RWYWx1ZSgpLCAiKSBicmVhaztcbiIpKTsK
KyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJpZiAoISIsIHRha2VMYXN0
VmFsdWUoKSwgIikgYnJlYWs7XG4iKTsKICAgICB9CiAKICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJ9IFxuIik7CkBAIC0zNzIsNyArMzc4LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXI6OnZpc2l0KEFTVAogdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFT
VDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50KQogewogICAgIGNoZWNrRXJyb3JBbmRWaXNpdChp
ZlN0YXRlbWVudC5jb25kaXRpb25hbCgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1h
a2VTdHJpbmcoImlmICgiLCB0YWtlTGFzdFZhbHVlKCksICIpIHtcbiIpKTsKKyAgICBtX3N0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImlmICgiLCB0YWtlTGFzdFZhbHVlKCksICIpIHtcbiIp
OwogICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpZlN0YXRlbWVudC5ib2R5KCkpOwogICAgIGlmIChp
ZlN0YXRlbWVudC5lbHNlQm9keSgpKSB7CiAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
In0gZWxzZSB7XG4iKTsKQEAgLTM4NywxMCArMzkzLDEyIEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0
aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpyZXR1cm5T
dGF0ZW1lbnQudmFsdWUoKSk7CiAgICAgICAgIGlmIChtX2VudHJ5UG9pbnRTY2FmZm9sZGluZykg
ewogICAgICAgICAgICAgYXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5h
bWUoKTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobV9lbnRyeVBvaW50U2Nh
ZmZvbGRpbmctPnBhY2sodGFrZUxhc3RWYWx1ZSgpLCB2YXJpYWJsZU5hbWUpKTsKLSAgICAgICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygicmV0dXJuICIsIHZhcmlhYmxl
TmFtZSwgIjtcbiIpKTsKKyAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgKKyAgICAgICAgICAgICAgICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+cGFjayh0YWtlTGFz
dFZhbHVlKCksIHZhcmlhYmxlTmFtZSksCisgICAgICAgICAgICAgICAgInJldHVybiAiLCB2YXJp
YWJsZU5hbWUsICI7XG4iCisgICAgICAgICAgICApOwogICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygicmV0dXJuICIsIHRha2VMYXN0
VmFsdWUoKSwgIjtcbiIpKTsKKyAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgicmV0dXJuICIsIHRha2VMYXN0VmFsdWUoKSwgIjtcbiIpOwogICAgIH0gZWxzZQogICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJyZXR1cm47XG4iKTsKIH0KQEAgLTM5OSw3ICs0
MDcsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiB7CiAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaFN0YXRlbWVudC52YWx1ZSgpKTsKIAotICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygic3dpdGNoICgiLCB0YWtlTGFzdFZhbHVlKCks
ICIpIHsiKSk7CisgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJzd2l0Y2ggKCIs
IHRha2VMYXN0VmFsdWUoKSwgIikgeyIpOwogICAgIGZvciAoYXV0byYgc3dpdGNoQ2FzZSA6IHN3
aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpKQogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
c3dpdGNoQ2FzZSk7CiAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CkBAIC00MDgs
NyArNDE2LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYgc3dpdGNo
Q2FzZSkKIHsKICAgICBpZiAoc3dpdGNoQ2FzZS52YWx1ZSgpKQotICAgICAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoImNhc2UgIiwgY29uc3RhbnRFeHByZXNzaW9uU3RyaW5n
KCpzd2l0Y2hDYXNlLnZhbHVlKCkpLCAiOlxuIikpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQoImNhc2UgIiwgY29uc3RhbnRFeHByZXNzaW9uU3RyaW5nKCpzd2l0Y2hD
YXNlLnZhbHVlKCkpLCAiOlxuIik7CiAgICAgZWxzZQogICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKCJkZWZhdWx0OlxuIik7CiAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uYWw8QnJlYWtDb250
ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4dCwgQnJlYWtDb250ZXh0OjpT
d2l0Y2gpOwpAQCAtNDI1LDcgKzQzMyw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1QKIHsKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlh
YmxlTmFtZSgpOwogICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKGludGVnZXJMaXRlcmFsLnJlc29sdmVkVHlwZSgpKTsKLSAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxl
TmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFtZSwgIj4oIiwgaW50ZWdlckxp
dGVyYWwudmFsdWUoKSwgIik7XG4iKSk7CisgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSBzdGF0aWNfY2FzdDwi
LCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIGludGVnZXJMaXRlcmFsLnZhbHVlKCksICIpO1xuIik7
CiAgICAgYXBwZW5kUmlnaHRWYWx1ZShpbnRlZ2VyTGl0ZXJhbCwgdmFyaWFibGVOYW1lKTsKIH0K
IApAQCAtNDMzLDcgKzQ0MSw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNp
dChBU1QKIHsKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFt
ZSgpOwogICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFi
bGVOYW1lLCAiID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCB1bnNpZ25l
ZEludGVnZXJMaXRlcmFsLnZhbHVlKCksICIpO1xuIikpOworICAgIG1fc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gc3Rh
dGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCB1bnNpZ25lZEludGVnZXJMaXRlcmFs
LnZhbHVlKCksICIpO1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZSh1bnNpZ25lZEludGVnZXJM
aXRlcmFsLCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC00NDEsNyArNDQ5LDcgQEAgdm9pZCBGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogewogICAgIGF1dG8gdmFyaWFibGVOYW1l
ID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUg
PSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZmxvYXRMaXRlcmFsLnJlc29sdmVkVHlw
ZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWFuZ2xlZFR5cGVO
YW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFt
ZSwgIj4oIiwgZmxvYXRMaXRlcmFsLnZhbHVlKCksICIpO1xuIikpOworICAgIG1fc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAi
ID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBmbG9hdExpdGVyYWwudmFs
dWUoKSwgIik7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKGZsb2F0TGl0ZXJhbCwgdmFyaWFi
bGVOYW1lKTsKIH0KIApAQCAtNDUyLDEyICs0NjAsMTEgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIGJvb2wgaXNBcnJheVJlZmVyZW5jZVR5cGUgPSBpczxB
U1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwogCiAgICAgYXV0byB2YXJpYWJs
ZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKG1ha2VTdHJpbmcobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKG51bGxMaXRl
cmFsLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiKSk7CisgICAgbV9z
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlw
ZShudWxsTGl0ZXJhbC5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0gIik7
CiAgICAgaWYgKGlzQXJyYXlSZWZlcmVuY2VUeXBlKQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKCJ7IG51bGxwdHIsIDAgfSIpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCJ7IG51bGxwdHIsIDAgfTtcbiIpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgibnVsbHB0ciIpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIjtcbiIpOwor
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJudWxscHRyO1xuIik7CiAgICAgYXBwZW5k
UmlnaHRWYWx1ZShudWxsTGl0ZXJhbCwgdmFyaWFibGVOYW1lKTsKIH0KIApAQCAtNDY1LDcgKzQ3
Miw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKIHsKICAgICBh
dXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIGF1dG8g
bWFuZ2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGJvb2xlYW5M
aXRlcmFsLnJlc29sdmVkVHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VT
dHJpbmcobWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHN0YXRpY19jYXN0
PCIsIG1hbmdsZWRUeXBlTmFtZSwgIj4oIiwgYm9vbGVhbkxpdGVyYWwudmFsdWUoKSA/ICJ0cnVl
IiA6ICJmYWxzZSIsICIpO1xuIikpOworICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gc3RhdGljX2Nhc3Q8Iiwg
bWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBib29sZWFuTGl0ZXJhbC52YWx1ZSgpID8gInRydWUiIDog
ImZhbHNlIiwgIik7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKGJvb2xlYW5MaXRlcmFsLCB2
YXJpYWJsZU5hbWUpOwogfQogCkBAIC00NzUsNyArNDgyLDcgQEAgdm9pZCBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIEFTU0VSVChlbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2Vu
ZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLnJlc29s
dmVkVHlwZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWFuZ2xl
ZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIsIG1hbmdsZWRUeXBlTmFtZSwgIjo6
IiwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JFbnVtZXJhdGlvbk1lbWJlcigqZW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uTWVtYmVyKCkpLCAiO1xuIikpOworICAgIG1fc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVO
YW1lLCAiID0gIiwgbWFuZ2xlZFR5cGVOYW1lLCAiOjoiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFt
ZUZvckVudW1lcmF0aW9uTWVtYmVyKCplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRp
b25NZW1iZXIoKSksICI7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKGVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbCwgdmFyaWFibGVOYW1lKTsKIH0KIApAQCAtNDk4LDggKzUwNSwxMCBAQCB2b2lk
IEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgYXV0byBwb2ludGVyTmFt
ZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIGF1dG8gbWFuZ2xlZFR5cGVOYW1l
ID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNl
LnJlc29sdmVkVHlwZSgpKTsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZ2xvYmFsVmFyaWFibGVS
ZWZlcmVuY2UuYmFzZSgpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmco
InRocmVhZCAiLCBtYW5nbGVkVHlwZU5hbWUsICIqICIsIHBvaW50ZXJOYW1lLCAiID0gJiIsIHRh
a2VMYXN0VmFsdWUoKSwgIi0+IiwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVF
bGVtZW50KGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLnN0cnVjdEZpZWxkKCkpLCAiO1xuIikpOwot
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUsICcg
JywgdmFsdWVOYW1lLCAiID0gIiwgIioiLCBwb2ludGVyTmFtZSwgIjtcbiIpKTsKKyAgICBtX3N0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICJ0aHJlYWQgIiwgbWFuZ2xlZFR5
cGVOYW1lLCAiKiAiLCBwb2ludGVyTmFtZSwgIiA9ICYiLCB0YWtlTGFzdFZhbHVlKCksICItPiIs
IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChnbG9iYWxWYXJpYWJs
ZVJlZmVyZW5jZS5zdHJ1Y3RGaWVsZCgpKSwgIjtcbiIsCisgICAgICAgIG1hbmdsZWRUeXBlTmFt
ZSwgJyAnLCB2YWx1ZU5hbWUsICIgPSAiLCAiKiIsIHBvaW50ZXJOYW1lLCAiO1xuIgorICAgICk7
CiAgICAgYXBwZW5kTGVmdFZhbHVlKGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLCB2YWx1ZU5hbWUs
IHBvaW50ZXJOYW1lKTsKIH0KIApAQCAtNTI4LDkgKzUzNyw5IEBAIHZvaWQgRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE2MCBJbXBsZW1lbnQgcXVhbGlmaWVycy4KICAgICBp
ZiAodmFyaWFibGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKSB7CiAgICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdCgqdmFyaWFibGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKTsKLSAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yVHlwZSgqdmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwg
IiA9ICIsIHRha2VMYXN0VmFsdWUoKSwgIjtcbiIpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqdmFyaWFibGVE
ZWNsYXJhdGlvbi50eXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIsIHRha2VMYXN0VmFs
dWUoKSwgIjtcbiIpOwogICAgIH0gZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KG1ha2VTdHJpbmcobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCp2YXJpYWJsZURlY2xh
cmF0aW9uLnR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiO1xuIikpOworICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBl
KCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiO1xuIik7
CiB9CiAKIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6OkFzc2lnbm1l
bnRFeHByZXNzaW9uJiBhc3NpZ25tZW50RXhwcmVzc2lvbikKQEAgLTUzOSw3ICs1NDgsNyBAQCB2
b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgYXV0byBwb2ludGVy
TmFtZSA9IHRha2VMYXN0TGVmdFZhbHVlKCk7CiAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGFzc2ln
bm1lbnRFeHByZXNzaW9uLnJpZ2h0KCkpOwogICAgIGF1dG8gcmlnaHROYW1lID0gdGFrZUxhc3RW
YWx1ZSgpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiaWYgKCIsIHBv
aW50ZXJOYW1lLCAiKSAqIiwgcG9pbnRlck5hbWUsICIgPSAiLCByaWdodE5hbWUsICI7XG4iKSk7
CisgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJpZiAoIiwgcG9pbnRlck5hbWUs
ICIpICoiLCBwb2ludGVyTmFtZSwgIiA9ICIsIHJpZ2h0TmFtZSwgIjtcbiIpOwogICAgIGFwcGVu
ZFJpZ2h0VmFsdWUoYXNzaWdubWVudEV4cHJlc3Npb24sIHJpZ2h0TmFtZSk7CiB9CiAKQEAgLTU1
NCw4ICs1NjMsOCBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAg
ICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fZnVuY3Rpb25NYXBwaW5nLmVuZCgpKTsKICAgICBhdXRv
IHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIGlmICghbWF0
Y2hlcyhjYWxsRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSwgbV9pbnRyaW5zaWNzLnZvaWRUeXBl
KCkpKQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV90eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGNhbGxFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAn
LCB2YXJpYWJsZU5hbWUsICIgPSAiKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtl
U3RyaW5nKGl0ZXJhdG9yLT52YWx1ZSwgJygnKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoY2FsbEV4cHJlc3Np
b24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIpOworICAgIG1fc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChpdGVyYXRvci0+dmFsdWUsICcoJyk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudE5hbWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGlmIChpKQogICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAiKTsKQEAgLTU4
MSwxMCArNTkwLDEyIEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QK
ICAgICBhdXRvIHJpZ2h0ID0gdGFrZUxhc3RWYWx1ZSgpOwogICAgIGF1dG8gdmFyaWFibGVOYW1l
ID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0byBwb2ludGVyTmFtZSA9IGdl
bmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFr
ZVN0cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZGVyZWZlcmVuY2VFeHByZXNz
aW9uLnBvaW50ZXIoKS5yZXNvbHZlZFR5cGUoKSksICcgJywgcG9pbnRlck5hbWUsICIgPSAiLCBy
aWdodCwgIjtcbiIpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV90
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGRlcmVmZXJlbmNlRXhwcmVzc2lvbi5yZXNvbHZl
ZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiO1xuIikpOwotICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQobWFrZVN0cmluZygiaWYgKCIsIHBvaW50ZXJOYW1lLCAiKSAiLCB2YXJpYWJsZU5h
bWUsICIgPSAqIiwgcmlnaHQsICI7XG4iKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCht
YWtlU3RyaW5nKCJlbHNlICIsIG1lbXNldFplcm9GdW5jdGlvbk5hbWUsICcoJywgdmFyaWFibGVO
YW1lLCAiKTtcbiIpKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAg
ICAgIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShkZXJlZmVyZW5jZUV4cHJlc3Npb24u
cG9pbnRlcigpLnJlc29sdmVkVHlwZSgpKSwgJyAnLCBwb2ludGVyTmFtZSwgIiA9ICIsIHJpZ2h0
LCAiO1xuIiwKKyAgICAgICAgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGRlcmVmZXJl
bmNlRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiO1xuIiwK
KyAgICAgICAgImlmICgiLCBwb2ludGVyTmFtZSwgIikgIiwgdmFyaWFibGVOYW1lLCAiID0gKiIs
IHJpZ2h0LCAiO1xuIiwKKyAgICAgICAgImVsc2UgIiwgbWVtc2V0WmVyb0Z1bmN0aW9uTmFtZSwg
JygnLCB2YXJpYWJsZU5hbWUsICIpO1xuIgorICAgICk7CiAgICAgYXBwZW5kTGVmdFZhbHVlKGRl
cmVmZXJlbmNlRXhwcmVzc2lvbiwgdmFyaWFibGVOYW1lLCBwb2ludGVyTmFtZSk7CiB9CiAKQEAg
LTU5NSw3ICs2MDYsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNU
CiAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGxvZ2ljYWxFeHByZXNzaW9uLnJpZ2h0KCkpOwogICAg
IGF1dG8gcmlnaHQgPSB0YWtlTGFzdFZhbHVlKCk7CiAgICAgYXV0byB2YXJpYWJsZU5hbWUgPSBn
ZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1h
a2VTdHJpbmcobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGxvZ2ljYWxFeHByZXNzaW9u
LnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiLCBsZWZ0KSk7CisgICAg
bV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZShsb2dpY2FsRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1l
LCAiID0gIiwgbGVmdCk7CiAgICAgc3dpdGNoIChsb2dpY2FsRXhwcmVzc2lvbi50eXBlKCkpIHsK
ICAgICBjYXNlIEFTVDo6TG9naWNhbEV4cHJlc3Npb246OlR5cGU6OkFuZDoKICAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgiICYmICIpOwpAQCAtNjA1LDcgKzYxNiw3IEBAIHZvaWQgRnVu
Y3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICAgICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgiIHx8ICIpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKHJpZ2h0LCAiO1xuIikpOworICAgIG1fc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZChyaWdodCwgIjtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFsdWUobG9n
aWNhbEV4cHJlc3Npb24sIHZhcmlhYmxlTmFtZSk7CiB9CiAKQEAgLTYxNCw3ICs2MjUsNyBAQCB2
b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGxvZ2ljYWxOb3RFeHByZXNzaW9uLm9wZXJhbmQoKSk7CiAgICAgYXV0byBvcGVyYW5k
ID0gdGFrZUxhc3RWYWx1ZSgpOwogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0
VmFyaWFibGVOYW1lKCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShsb2dpY2FsTm90RXhwcmVzc2lvbi5yZXNvbHZl
ZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAiID0gISIsIG9wZXJhbmQsICI7XG4iKSk7Cisg
ICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yVHlwZShsb2dpY2FsTm90RXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFi
bGVOYW1lLCAiID0gISIsIG9wZXJhbmQsICI7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKGxv
Z2ljYWxOb3RFeHByZXNzaW9uLCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC02MjgsMTYgKzYzOSwx
OCBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgYXV0byBt
YW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSk7CiAgICAgaWYgKGlzPEFTVDo6UG9p
bnRlclR5cGU+KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkucmVzb2x2
ZWRUeXBlKCkpKSB7CiAgICAgICAgIGF1dG8gcHRyVmFsdWUgPSB0YWtlTGFzdFZhbHVlKCk7Ci0g
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUs
ICcgJywgdmFyaWFibGVOYW1lLCAiO1xuIikpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1ha2VTdHJpbmcoImlmICgiLCBwdHJWYWx1ZSwgIikgIiwgdmFyaWFibGVOYW1lLCAiID0g
eyAiLCBwdHJWYWx1ZSwgIiwgMX07XG4iKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQobWFrZVN0cmluZygiZWxzZSAiLCB2YXJpYWJsZU5hbWUsICIgPSB7IG51bGxwdHIsIDAgfTtc
biIpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAg
ICAgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIjtcbiIsCisgICAgICAgICAg
ICAiaWYgKCIsIHB0clZhbHVlLCAiKSAiLCB2YXJpYWJsZU5hbWUsICIgPSB7ICIsIHB0clZhbHVl
LCAiLCAxfTtcbiIsCisgICAgICAgICAgICAiZWxzZSAiLCB2YXJpYWJsZU5hbWUsICIgPSB7IG51
bGxwdHIsIDAgfTtcbiIKKyAgICAgICAgKTsKICAgICB9IGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlU
eXBlPihtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLnJlc29sdmVkVHlw
ZSgpKSkgewogICAgICAgICBhdXRvIGxWYWx1ZSA9IHRha2VMYXN0TGVmdFZhbHVlKCk7CiAgICAg
ICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPihtYWtlQXJyYXlS
ZWZlcmVuY2VFeHByZXNzaW9uLmxlZnRWYWx1ZSgpLnJlc29sdmVkVHlwZSgpKTsKLSAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2
YXJpYWJsZU5hbWUsICIgPSB7ICIsIGxWYWx1ZSwgIi0+ZGF0YSgpLCAiLCBhcnJheVR5cGUubnVt
RWxlbWVudHMoKSwgIiB9O1xuIikpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQobWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHsgIiwgbFZhbHVl
LCAiLT5kYXRhKCksICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiIH07XG4iKTsKICAgICB9
IGVsc2UgewogICAgICAgICBhdXRvIGxWYWx1ZSA9IHRha2VMYXN0TGVmdFZhbHVlKCk7Ci0gICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUsICcg
JywgdmFyaWFibGVOYW1lLCAiID0geyAiLCBsVmFsdWUsICIsIDEgfTtcbiIpKTsKKyAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJp
YWJsZU5hbWUsICIgPSB7ICIsIGxWYWx1ZSwgIiwgMSB9O1xuIik7CiAgICAgfQogICAgIGFwcGVu
ZFJpZ2h0VmFsdWUobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiwgdmFyaWFibGVOYW1lKTsK
IH0KQEAgLTY0Nyw3ICs2NjAsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlz
aXQoQVNUCiAgICAgY2hlY2tFcnJvckFuZFZpc2l0KG1ha2VQb2ludGVyRXhwcmVzc2lvbi5sZWZ0
VmFsdWUoKSk7CiAgICAgYXV0byBwb2ludGVyID0gdGFrZUxhc3RMZWZ0VmFsdWUoKTsKICAgICBh
dXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUobWFrZVBvaW50ZXJFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5h
bWUsICIgPSAiLCBwb2ludGVyLCAiO1xuIikpOworICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobWFrZVBvaW50ZXJFeHByZXNz
aW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiLCBwb2ludGVyLCAi
O1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZShtYWtlUG9pbnRlckV4cHJlc3Npb24sIHZhcmlh
YmxlTmFtZSk7CiB9CiAKQEAgLTY2MywxNSArNjc2LDIwIEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0
aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICBhdXRvIGNoZWNrID0gdGFrZUxhc3RWYWx1ZSgpOwog
CiAgICAgYXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV90eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JUeXBlKHRlcm5hcnlFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJs
ZU5hbWUsICI7XG4iKSk7Ci0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmco
ImlmICgiLCBjaGVjaywgIikge1xuIikpOworICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgKKyAgICAgICAgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHRlcm5hcnlFeHBy
ZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICI7XG4iCisgICAgICAg
ICJpZiAoIiwgY2hlY2ssICIpIHtcbiIKKyAgICApOwogICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0
ZXJuYXJ5RXhwcmVzc2lvbi5ib2R5RXhwcmVzc2lvbigpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKG1ha2VTdHJpbmcodmFyaWFibGVOYW1lLCAiID0gIiwgdGFrZUxhc3RWYWx1ZSgpLCAi
O1xuIikpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIn0gZWxzZSB7XG4iKTsKKyAgICBt
X3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgIHZhcmlhYmxlTmFtZSwgIiA9
ICIsIHRha2VMYXN0VmFsdWUoKSwgIjtcbiIKKyAgICAgICAgIn0gZWxzZSB7XG4iCisgICAgKTsK
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQodGVybmFyeUV4cHJlc3Npb24uZWxzZUV4cHJlc3Npb24o
KSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKHZhcmlhYmxlTmFtZSwg
IiA9ICIsIHRha2VMYXN0VmFsdWUoKSwgIjtcbiIpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJ9XG4iKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAg
IHZhcmlhYmxlTmFtZSwgIiA9ICIsIHRha2VMYXN0VmFsdWUoKSwgIjtcbiIKKyAgICAgICAgIn1c
biIKKyAgICApOwogICAgIGFwcGVuZFJpZ2h0VmFsdWUodGVybmFyeUV4cHJlc3Npb24sIHZhcmlh
YmxlTmFtZSk7CiB9CiAKQEAgLTY4MSw3ICs2OTksNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlcjo6dmlzaXQoQVNUCiAgICAgYXV0byBpdGVyYXRvciA9IG1fdmFyaWFibGVNYXBwaW5n
LmZpbmQodmFyaWFibGVSZWZlcmVuY2UudmFyaWFibGUoKSk7CiAgICAgQVNTRVJUKGl0ZXJhdG9y
ICE9IG1fdmFyaWFibGVNYXBwaW5nLmVuZCgpKTsKICAgICBhdXRvIHBvaW50ZXJOYW1lID0gZ2Vu
ZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtl
U3RyaW5nKCJ0aHJlYWQgIiwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHZhcmlhYmxl
UmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKSwgIiogIiwgcG9pbnRlck5hbWUsICIgPSAmIiwgaXRl
cmF0b3ItPnZhbHVlLCAiO1xuIikpOworICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgidGhyZWFkICIsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSh2YXJpYWJsZVJlZmVy
ZW5jZS5yZXNvbHZlZFR5cGUoKSksICIqICIsIHBvaW50ZXJOYW1lLCAiID0gJiIsIGl0ZXJhdG9y
LT52YWx1ZSwgIjtcbiIpOwogICAgIGFwcGVuZExlZnRWYWx1ZSh2YXJpYWJsZVJlZmVyZW5jZSwg
aXRlcmF0b3ItPnZhbHVlLCBwb2ludGVyTmFtZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9X
SExTTE1ldGFsQ29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI0Nzg5MykKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxDb2RlR2VuZXJhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMjYgKzQzLDI3IEBAIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBkdW1wTWV0YWxDb2RlID0gZmEKIAogc3RhdGljIFN0cmluZyBnZW5lcmF0ZU1ldGFsQ29k
ZVNoYXJlZChTdHJpbmcmJiBtZXRhbFR5cGVzLCBTdHJpbmcmJiBtZXRhbEZ1bmN0aW9ucykKIHsK
LSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiNpbmNsdWRlIDxtZXRhbF9zdGRsaWI+XG4iKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiI2luY2x1ZGUgPG1ldGFsX2F0b21pYz5cbiIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCIjaW5jbHVkZSA8bWV0YWxfbWF0aD5cbiIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIj
aW5jbHVkZSA8bWV0YWxfcmVsYXRpb25hbD5cbiIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCIjaW5jbHVkZSA8bWV0YWxfY29tcHV0ZT5cbiIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCIjaW5jbHVkZSA8bWV0YWxfdGV4dHVyZT5cbiIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCJcbiIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ1c2luZyBuYW1lc3BhY2UgbWV0YWw7
XG4iKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXG4iKTsKLQotICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKFdURk1vdmUobWV0YWxUeXBlcykpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KFdURk1vdmUobWV0YWxGdW5jdGlvbnMpKTsKKyAgICBhdXRvIGdlbmVyYXRlZE1ldGFsQ29kZSA9
IG1ha2VTdHJpbmcoCisgICAgICAgICIjaW5jbHVkZSA8bWV0YWxfc3RkbGliPlxuIgorICAgICAg
ICAiI2luY2x1ZGUgPG1ldGFsX2F0b21pYz5cbiIKKyAgICAgICAgIiNpbmNsdWRlIDxtZXRhbF9t
YXRoPlxuIgorICAgICAgICAiI2luY2x1ZGUgPG1ldGFsX3JlbGF0aW9uYWw+XG4iCisgICAgICAg
ICIjaW5jbHVkZSA8bWV0YWxfY29tcHV0ZT5cbiIKKyAgICAgICAgIiNpbmNsdWRlIDxtZXRhbF90
ZXh0dXJlPlxuIgorICAgICAgICAiXG4iCisgICAgICAgICJ1c2luZyBuYW1lc3BhY2UgbWV0YWw7
XG4iCisgICAgICAgICJcbiIsCisKKyAgICAgICAgV1RGTW92ZShtZXRhbFR5cGVzKSwKKyAgICAg
ICAgV1RGTW92ZShtZXRhbEZ1bmN0aW9ucykKKyAgICApOwogCiAgICAgaWYgKGR1bXBNZXRhbENv
ZGUpIHsKICAgICAgICAgZGF0YUxvZ0xuKCJHZW5lcmF0ZWQgTWV0YWwgY29kZTogIik7Ci0gICAg
ICAgIGRhdGFMb2dMbihzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgICAgICBkYXRhTG9n
TG4oZ2VuZXJhdGVkTWV0YWxDb2RlKTsKICAgICB9CiAKLSAgICByZXR1cm4gc3RyaW5nQnVpbGRl
ci50b1N0cmluZygpOworICAgIHJldHVybiBnZW5lcmF0ZWRNZXRhbENvZGU7CiB9CiAKIFJlbmRl
ck1ldGFsQ29kZSBnZW5lcmF0ZU1ldGFsQ29kZShQcm9ncmFtJiBwcm9ncmFtLCBNYXRjaGVkUmVu
ZGVyU2VtYW50aWNzJiYgbWF0Y2hlZFNlbWFudGljcywgTGF5b3V0JiBsYXlvdXQpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0
aW9uV3JpdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAkocmV2aXNpb24gMjQ3
ODkzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xO
YXRpdmVGdW5jdGlvbldyaXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNywxOCArMTI3LDIw
IEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgYXV0
byYgcmV0dXJuVHlwZSA9IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpOwogICAgICAg
ICBhdXRvIG1ldGFsUmV0dXJuTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUocmV0
dXJuVHlwZSk7CiAgICAgICAgIGlmICghbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0
ZXJzKCkuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3Ry
aW5nKG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICIoKSB7XG4iKSk7
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgIiwgbWV0
YWxSZXR1cm5OYW1lLCAiIHg7XG4iKSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChtYWtlU3RyaW5nKCIgICAgIiwgbWVtc2V0WmVyb0Z1bmN0aW9uTmFtZSwgIih4KTtcbiIpKTsK
LSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgcmV0dXJuIHg7XG4iKTsKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICAgICAgbWV0YWxSZXR1cm5OYW1l
LCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgIigpIHtcbiIKKyAgICAgICAgICAgICAgICAiICAg
ICIsIG1ldGFsUmV0dXJuTmFtZSwgIiB4O1xuIgorICAgICAgICAgICAgICAgICIgICAgIiwgbWVt
c2V0WmVyb0Z1bmN0aW9uTmFtZSwgIih4KTtcbiIKKyAgICAgICAgICAgICAgICAiICAgIHJldHVy
biB4O1xuIgorICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICApOwogICAgICAgICAg
ICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICAgICAgfQogCiAgICAgICAg
IEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0g
MSk7CiAgICAgICAgIGF1dG8mIHBhcmFtZXRlclR5cGUgPSAqbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKTsKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRl
ck5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHBhcmFtZXRlclR5cGUpOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1ldGFsUmV0dXJuTmFtZSwgJyAn
LCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXJOYW1lLCAiIHgpIHtcbiIp
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtZXRhbFJldHVybk5hbWUs
ICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB4KSB7
XG4iKTsKIAogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGlzRW51bWVyYXRpb25EZWZpbml0
aW9uID0gW10gKGF1dG8mIHR5cGUpIHsKQEAgLTE1MSwxNSArMTUzLDE3IEBAIFN0cmluZyB3cml0
ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgICAgICAgICBib29sIGhhc1pl
cm9DYXNlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBtZW1iZXIgOiBlbnVt
ZXJhdGlvbkRlZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJzKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgaGFzWmVyb0Nhc2UgfD0gIW1lbWJlci5nZXQoKS52YWx1ZSgpOwotICAgICAgICAgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgICAgIGNhc2UgIiwg
bWVtYmVyLmdldCgpLnZhbHVlKCksICI6IGJyZWFrO1xuIikpOworICAgICAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgICAgIGNhc2UgIiwgbWVtYmVyLmdl
dCgpLnZhbHVlKCksICI6IGJyZWFrO1xuIikpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKGhhc1plcm9DYXNlLCBoYXNaZXJvQ2FzZSk7CiAgICAgICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAgICAgZGVmYXVsdDogeCA9IDA7IGJy
ZWFrOyB9XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8IiwgbWV0YWxS
ZXR1cm5OYW1lLCAiPih4KTtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1c
biIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAg
IiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8IiwgbWV0YWxSZXR1cm5OYW1lLCAiPih4KTtcbiIKKyAg
ICAgICAgICAgICJ9XG4iCisgICAgICAgICk7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVy
LnRvU3RyaW5nKCk7CiAgICAgfQogCkBAIC0xNjcsOSArMTcxLDExIEBAIFN0cmluZyB3cml0ZU5h
dGl2ZUZ1bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgYXV0byBtZXRh
bFBhcmFtZXRlck5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpKTsKICAgICAgICAgYXV0byBt
ZXRhbFJldHVybk5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24udHlwZSgpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFr
ZVN0cmluZyhtZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1l
dGFsUGFyYW1ldGVyTmFtZSwgIiB4KSB7XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1ha2VTdHJpbmcoIiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8IiwgbWV0YWxSZXR1cm5OYW1l
LCAiPih4KTtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOworICAg
ICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgbWV0YWxSZXR1
cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlck5hbWUs
ICIgeCkge1xuIgorICAgICAgICAgICAgIiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8IiwgbWV0YWxS
ZXR1cm5OYW1lLCAiPih4KTtcbiIKKyAgICAgICAgICAgICJ9XG4iCisgICAgICAgICk7CiAgICAg
ICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCkBAIC0xODIsMTYg
KzE4OCwyMCBAQCBTdHJpbmcgd3JpdGVOYXRpdmVGdW5jdGlvbihBU1Q6Ok5hdGl2ZUZ1CiAgICAg
ICAgIGF1dG8mIHVubmFtZWRQYXJhbWV0ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlw
ZT4ocGFyYW1ldGVyVHlwZSk7CiAgICAgICAgIGlmIChpczxBU1Q6OkFycmF5VHlwZT4odW5uYW1l
ZFBhcmFtZXRlclR5cGUpKSB7CiAgICAgICAgICAgICBhdXRvJiBhcnJheVBhcmFtZXRlclR5cGUg
PSBkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFBhcmFtZXRlclR5cGUpOwotICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygidWludCAiLCBvdXRwdXRGdW5j
dGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXJOYW1lLCAiKSB7XG4iKSk7Ci0gICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgcmV0dXJuICIsIGFycmF5UGFy
YW1ldGVyVHlwZS5udW1FbGVtZW50cygpLCAiO1xuIikpOwotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIn1cbiIpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgKKyAgICAgICAgICAgICAgICAidWludCAiLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywg
bWV0YWxQYXJhbWV0ZXJOYW1lLCAiKSB7XG4iCisgICAgICAgICAgICAgICAgIiAgICByZXR1cm4g
IiwgYXJyYXlQYXJhbWV0ZXJUeXBlLm51bUVsZW1lbnRzKCksICI7XG4iCisgICAgICAgICAgICAg
ICAgIn1cbiIKKyAgICAgICAgICAgICk7CiAgICAgICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRl
ci50b1N0cmluZygpOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKGlzPEFTVDo6QXJyYXlS
ZWZlcmVuY2VUeXBlPih1bm5hbWVkUGFyYW1ldGVyVHlwZSkpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJ1aW50ICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBt
ZXRhbFBhcmFtZXRlck5hbWUsICIgdikge1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChtYWtlU3RyaW5nKCIgICAgcmV0dXJuIHYubGVuZ3RoO1xuIikpOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQoCisgICAgICAgICAgICAidWludCAiLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0
YWxQYXJhbWV0ZXJOYW1lLCAiIHYpIHtcbiIKKyAgICAgICAgICAgICIgICAgcmV0dXJuIHYubGVu
Z3RoO1xuIgorICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0
cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAKQEAgLTIxNywxMCArMjI3LDEyIEBAIFN0
cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgICAgIGF1dG8g
ZmllbGROYW1lID0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkuc3Vic3RyaW5nKCJv
cGVyYXRvci4iX3N0ci5sZW5ndGgoKSk7CiAgICAgICAgICAgICBmaWVsZE5hbWUgPSBmaWVsZE5h
bWUuc3Vic3RyaW5nKDAsIGZpZWxkTmFtZS5sZW5ndGgoKSAtIDEpOwogICAgICAgICAgICAgYXV0
byBtZXRhbEZpZWxkTmFtZSA9IG1hbmdsZWRGaWVsZE5hbWUoZmllbGROYW1lKTsKLSAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWV0YWxSZXR1cm5OYW1lLCAnICcs
IG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHYsICIsIG1l
dGFsUGFyYW1ldGVyMk5hbWUsICIgbikge1xuIikpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQobWFrZVN0cmluZygiICAgIHYuIiwgbWV0YWxGaWVsZE5hbWUsICIgPSBuO1xuIikp
OwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIHJldHVy
biB2O1xuIikpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOworICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgICAgICBt
ZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1l
dGVyMU5hbWUsICIgdiwgIiwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiBuKSB7XG4iCisgICAgICAg
ICAgICAgICAgIiAgICB2LiIsIG1ldGFsRmllbGROYW1lLCAiID0gbjtcbiIKKyAgICAgICAgICAg
ICAgICAiICAgIHJldHVybiB2O1xuIgorICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAg
ICApOwogICAgICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICAg
ICAgfQogCkBAIC0yMjksOSArMjQxLDExIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFT
VDo6TmF0aXZlRnUKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlck5hbWUgPSB0eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMo
KVswXS0+dHlwZSgpKTsKICAgICAgICAgYXV0byBtZXRhbFJldHVybk5hbWUgPSB0eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKTsKICAg
ICAgICAgYXV0byBtZXRhbEZpZWxkTmFtZSA9IG1hbmdsZWRGaWVsZE5hbWUoZmllbGROYW1lKTsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtZXRhbFJldHVybk5hbWUs
ICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB2KSB7
XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICByZXR1
cm4gdi4iLCBtZXRhbEZpZWxkTmFtZSwgIjtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIn1cbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAg
ICAgICAgICAgbWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBt
ZXRhbFBhcmFtZXRlck5hbWUsICIgdikge1xuIgorICAgICAgICAgICAgIiAgICByZXR1cm4gdi4i
LCBtZXRhbEZpZWxkTmFtZSwgIjtcbiIKKyAgICAgICAgICAgICJ9XG4iCisgICAgICAgICk7CiAg
ICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCkBAIC0yNTMs
OSArMjY3LDExIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtZXRhbEZpZWxkTmFtZSA9IGZpZWxkTmFtZTsKIAot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1ldGFsUmV0dXJuTmFtZSwg
JyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXJOYW1lLCAiIHYpIHtc
biIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIHJldHVy
biAmKHYtPiIsIG1ldGFsRmllbGROYW1lLCAiKTtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIn1cbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAor
ICAgICAgICAgICAgbWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygn
LCBtZXRhbFBhcmFtZXRlck5hbWUsICIgdikge1xuIgorICAgICAgICAgICAgIiAgICByZXR1cm4g
Jih2LT4iLCBtZXRhbEZpZWxkTmFtZSwgIik7XG4iCisgICAgICAgICAgICAifVxuIgorICAgICAg
ICApOwogICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIApA
QCAtMjY0LDExICsyODAsMTMgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRp
dmVGdQogICAgICAgICBhdXRvIG1ldGFsUGFyYW1ldGVyMU5hbWUgPSB0eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+
dHlwZSgpKTsKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlcjJOYW1lID0gdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClb
MV0tPnR5cGUoKSk7CiAgICAgICAgIGF1dG8gbWV0YWxSZXR1cm5OYW1lID0gdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWV0YWxSZXR1cm5OYW1lLCAnICcs
IG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHYsICIsIG1l
dGFsUGFyYW1ldGVyMk5hbWUsICIgbikge1xuIikpOwogICAgICAgICBBU1NFUlQoaXM8QVNUOjpB
cnJheVJlZmVyZW5jZVR5cGU+KCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMo
KVswXS0+dHlwZSgpKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKG4g
PCB2Lmxlbmd0aCkgcmV0dXJuICYodi5wb2ludGVyW25dKTtcbiIpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiICAgIHJldHVybiBudWxscHRyO1xuIik7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgKKyAgICAgICAgICAgIG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUs
ICcoJywgbWV0YWxQYXJhbWV0ZXIxTmFtZSwgIiB2LCAiLCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAi
IG4pIHtcbiIKKyAgICAgICAgICAgICIgICAgaWYgKG4gPCB2Lmxlbmd0aCkgcmV0dXJuICYodi5w
b2ludGVyW25dKTtcbiIKKyAgICAgICAgICAgICIgICAgcmV0dXJuIG51bGxwdHI7XG4iCisgICAg
ICAgICAgICAifVxuIgorICAgICAgICApOwogICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50
b1N0cmluZygpOwogICAgIH0KIApAQCAtMjk1LDE3ICszMTMsMjEgQEAgU3RyaW5nIHdyaXRlTmF0
aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJvd3Mg
PSBudW1iZXJPZk1hdHJpeFJvd3MoKTsKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZDb2x1bW5z
ID0gbnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCk7CiAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQobWFrZVN0cmluZyhtZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAn
KCcsIG1ldGFsUGFyYW1ldGVyMU5hbWUsICIgbSwgIiwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiBp
KSB7XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBp
ZiAoaSA+PSAiLCBudW1iZXJPZlJvd3MsICIpIHJldHVybiAiLCBtZXRhbFJldHVybk5hbWUsICIo
MCk7XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICAi
LCBtZXRhbFJldHVybk5hbWUsICIgcmVzdWx0O1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiICAgIHJlc3VsdFswXSA9IG1baV07XG4iKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQobWFrZVN0cmluZygiICAgIHJlc3VsdFsxXSA9IG1baSArICIsIG51bWJlck9mUm93
cywgIl07XG4iKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAg
ICAgICAgICBtZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1l
dGFsUGFyYW1ldGVyMU5hbWUsICIgbSwgIiwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiBpKSB7XG4i
CisgICAgICAgICAgICAiICAgIGlmIChpID49ICIsIG51bWJlck9mUm93cywgIikgcmV0dXJuICIs
IG1ldGFsUmV0dXJuTmFtZSwgIigwKTtcbiIKKyAgICAgICAgICAgICIgICAgIiwgbWV0YWxSZXR1
cm5OYW1lLCAiIHJlc3VsdDtcbiIKKyAgICAgICAgICAgICIgICAgcmVzdWx0WzBdID0gbVtpXTtc
biIKKyAgICAgICAgICAgICIgICAgcmVzdWx0WzFdID0gbVtpICsgIiwgbnVtYmVyT2ZSb3dzLCAi
XTtcbiIKKyAgICAgICAgKTsKICAgICAgICAgaWYgKG51bWJlck9mQ29sdW1ucyA+PSAzKQotICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIHJlc3VsdFsyXSA9
IG1baSArICIsIG51bWJlck9mUm93cyAqIDIsICJdO1xuIikpOworICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIHJlc3VsdFsyXSA9IG1baSArICIsIG51bWJlck9m
Um93cyAqIDIsICJdO1xuIik7CiAgICAgICAgIGlmIChudW1iZXJPZkNvbHVtbnMgPj0gNCkKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICByZXN1bHRbM10g
PSBtW2kgKyAiLCBudW1iZXJPZlJvd3MgKiAzLCAiXTtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiAgICByZXR1cm4gcmVzdWx0O1xuIik7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoIiAgICByZXN1bHRbM10gPSBtW2kgKyAiLCBudW1iZXJPZlJvd3MgKiAzLCAiXTtcbiIpOwor
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKKyAgICAgICAgICAgICIgICAgcmV0dXJuIHJl
c3VsdDtcbiIpOworICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgKTsKICAgICAgICAgcmV0dXJu
IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAKQEAgLTMxOSwxNiArMzQxLDIwIEBA
IFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZSb3dzID0gbnVtYmVyT2ZNYXRyaXhSb3dzKCk7CiAgICAgICAgIHVuc2lnbmVk
IG51bWJlck9mQ29sdW1ucyA9IG51bWJlck9mTWF0cml4Q29sdW1ucygpOwogCi0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1
dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIG0sICIsIG1ldGFsUGFy
YW1ldGVyMk5hbWUsICIgaSwgIiwgbWV0YWxQYXJhbWV0ZXIzTmFtZSwgIiB2KSB7XG4iKSk7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBpZiAoaSA+PSAiLCBu
dW1iZXJPZlJvd3MsICIpIHJldHVybiBtO1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChtYWtlU3RyaW5nKCIgICAgbVtpXSA9IHZbMF07XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBtW2kgKyAiLCBudW1iZXJPZlJvd3MsICJdID0g
dlsxXTtcbiIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAg
ICAgICAgIG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0
YWxQYXJhbWV0ZXIxTmFtZSwgIiBtLCAiLCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAiIGksICIsIG1l
dGFsUGFyYW1ldGVyM05hbWUsICIgdikge1xuIgorICAgICAgICAgICAgIiAgICBpZiAoaSA+PSAi
LCBudW1iZXJPZlJvd3MsICIpIHJldHVybiBtO1xuIgorICAgICAgICAgICAgIiAgICBtW2ldID0g
dlswXTtcbiIKKyAgICAgICAgICAgICIgICAgbVtpICsgIiwgbnVtYmVyT2ZSb3dzLCAiXSA9IHZb
MV07XG4iCisgICAgICAgICk7CiAgICAgICAgIGlmIChudW1iZXJPZkNvbHVtbnMgPj0gMykKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBtW2kgKyAiLCBu
dW1iZXJPZlJvd3MgKiAyLCAiXSA9IHZbMl07XG4iKSk7CisgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgbVtpICsgIiwgbnVtYmVyT2ZSb3dzICogMiwgIl0gPSB2
WzJdO1xuIik7CiAgICAgICAgIGlmIChudW1iZXJPZkNvbHVtbnMgPj0gNCkKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBtW2kgKyAiLCBudW1iZXJPZlJv
d3MgKiAzLCAiXSA9IHZbM107XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIg
ICAgcmV0dXJuIG07Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICBtW2kgKyAiLCBudW1i
ZXJPZlJvd3MgKiAzLCAiXSA9IHZbM107XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoCisgICAgICAgICAgICAiICAgIHJldHVybiBtOyIKKyAgICAgICAgICAgICJ9XG4iCisgICAg
ICAgICk7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQog
CkBAIC0zMzcsOSArMzYzLDExIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6TmF0
aXZlRnUKICAgICAgICAgICAgIGF1dG8gb3BlcmF0b3JOYW1lID0gbmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5uYW1lKCkuc3Vic3RyaW5nKCJvcGVyYXRvciJfc3RyLmxlbmd0aCgpKTsKICAgICAg
ICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0ZXJOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSk7
CiAgICAgICAgICAgICBhdXRvIG1ldGFsUmV0dXJuTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFt
ZUZvclR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpOwotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtZXRhbFJldHVybk5hbWUsICcgJywgb3V0
cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB4KSB7XG4iKSk7Ci0g
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgcmV0dXJuICIs
IG9wZXJhdG9yTmFtZSwgIng7XG4iKSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgifVxuIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAg
ICAgICAgICAgICAgIG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICco
JywgbWV0YWxQYXJhbWV0ZXJOYW1lLCAiIHgpIHtcbiIKKyAgICAgICAgICAgICAgICAiICAgIHJl
dHVybiAiLCBvcGVyYXRvck5hbWUsICJ4O1xuIgorICAgICAgICAgICAgICAgICJ9XG4iCisgICAg
ICAgICAgICApOwogICAgICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsK
ICAgICAgICAgfQogCkBAIC0zNDgsOSArMzc2LDExIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0
aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlcjFOYW1lID0gdHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJh
bWV0ZXJzKClbMF0tPnR5cGUoKSk7CiAgICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0ZXIyTmFtZSA9
IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
cGFyYW1ldGVycygpWzFdLT50eXBlKCkpOwogICAgICAgICBhdXRvIG1ldGFsUmV0dXJuTmFtZSA9
IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50
eXBlKCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1ldGFsUmV0
dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXIxTmFt
ZSwgIiB4LCAiLCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAiIHkpIHtcbiIpKTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIHJldHVybiB4ICIsIG9wZXJhdG9yTmFt
ZSwgIiB5O1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAg
ICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBtZXRhbFJldHVy
bk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyMU5hbWUs
ICIgeCwgIiwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiB5KSB7XG4iCisgICAgICAgICAgICAiICAg
IHJldHVybiB4ICIsIG9wZXJhdG9yTmFtZSwgIiB5O1xuIgorICAgICAgICAgICAgIn1cbiIKKyAg
ICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9
CiAKQEAgLTM4MSw5ICs0MTEsMTEgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpO
YXRpdmVGdQogICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0
ZXJzKCkuc2l6ZSgpID09IDEpOwogICAgICAgICBhdXRvIG1ldGFsUGFyYW1ldGVyTmFtZSA9IHR5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFy
YW1ldGVycygpWzBdLT50eXBlKCkpOwogICAgICAgICBhdXRvIG1ldGFsUmV0dXJuTmFtZSA9IHR5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBl
KCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1ldGFsUmV0dXJu
TmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXJOYW1lLCAi
IHgpIHtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAg
IHJldHVybiAiLCBtYXBGdW5jdGlvbk5hbWUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1l
KCkpLCAiKHgpO1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7Cisg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBtZXRhbFJl
dHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyTmFt
ZSwgIiB4KSB7XG4iCisgICAgICAgICAgICAiICAgIHJldHVybiAiLCBtYXBGdW5jdGlvbk5hbWUo
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkpLCAiKHgpO1xuIgorICAgICAgICAgICAg
In1cbiIKKyAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KTsKICAgICB9CiAKQEAgLTM5MiwzNSArNDI0LDQzIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0
aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlcjFOYW1lID0gdHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJh
bWV0ZXJzKClbMF0tPnR5cGUoKSk7CiAgICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0ZXIyTmFtZSA9
IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
cGFyYW1ldGVycygpWzFdLT50eXBlKCkpOwogICAgICAgICBhdXRvIG1ldGFsUmV0dXJuTmFtZSA9
IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50
eXBlKCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1ldGFsUmV0
dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXIxTmFt
ZSwgIiB4LCAiLCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAiIHkpIHtcbiIpKTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIHJldHVybiAiLCBuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLm5hbWUoKSwgIih4LCB5KTtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIn1cbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAor
ICAgICAgICAgICAgbWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygn
LCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHgsICIsIG1ldGFsUGFyYW1ldGVyMk5hbWUsICIgeSkg
e1xuIgorICAgICAgICAgICAgIiAgICByZXR1cm4gIiwgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi5uYW1lKCksICIoeCwgeSk7XG4iCisgICAgICAgICAgICAifVxuIgorICAgICAgICApOwogICAg
ICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIAogICAgIGlmIChu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiQWxsTWVtb3J5QmFycmllcldpdGhH
cm91cFN5bmMiKSB7CiAgICAgICAgIEFTU0VSVCghbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5w
YXJhbWV0ZXJzKCkuc2l6ZSgpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0
cmluZygidm9pZCAiLCBvdXRwdXRGdW5jdGlvbk5hbWUsICIoKSB7XG4iKSk7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgdGhyZWFkZ3JvdXBfYmFycmllcihtZW1fZmxhZ3M6Om1l
bV9kZXZpY2UpO1xuIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgdGhyZWFk
Z3JvdXBfYmFycmllcihtZW1fZmxhZ3M6Om1lbV90aHJlYWRncm91cCk7XG4iKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICB0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6
bWVtX3RleHR1cmUpO1xuIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsK
KyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgICJ2b2lk
ICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgIigpIHtcbiIKKyAgICAgICAgICAgICIgICAgdGhyZWFk
Z3JvdXBfYmFycmllcihtZW1fZmxhZ3M6Om1lbV9kZXZpY2UpO1xuIgorICAgICAgICAgICAgIiAg
ICB0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX3RocmVhZGdyb3VwKTtcbiIKKyAg
ICAgICAgICAgICIgICAgdGhyZWFkZ3JvdXBfYmFycmllcihtZW1fZmxhZ3M6Om1lbV90ZXh0dXJl
KTtcbiIKKyAgICAgICAgICAgICJ9XG4iCisgICAgICAgICk7CiAgICAgICAgIHJldHVybiBzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCiAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ubmFtZSgpID09ICJEZXZpY2VNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyIpIHsK
ICAgICAgICAgQVNTRVJUKCFuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5z
aXplKCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJ2b2lkICIs
IG91dHB1dEZ1bmN0aW9uTmFtZSwgIigpIHtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIiAgICB0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX2RldmljZSk7XG4i
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOworICAgICAgICBzdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgInZvaWQgIiwgb3V0cHV0RnVuY3Rp
b25OYW1lLCAiKCkge1xuIgorICAgICAgICAgICAgIiAgICB0aHJlYWRncm91cF9iYXJyaWVyKG1l
bV9mbGFnczo6bWVtX2RldmljZSk7XG4iCisgICAgICAgICAgICAifVxuIgorICAgICAgICApOwog
ICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIAogICAgIGlm
IChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAiR3JvdXBNZW1vcnlCYXJyaWVy
V2l0aEdyb3VwU3luYyIpIHsKICAgICAgICAgQVNTRVJUKCFuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCht
YWtlU3RyaW5nKCJ2b2lkICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgIigpIHtcbiIpKTsKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICB0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFn
czo6bWVtX3RocmVhZGdyb3VwKTtcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
fVxuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAg
ICAidm9pZCAiLCBvdXRwdXRGdW5jdGlvbk5hbWUsICIoKSB7XG4iCisgICAgICAgICAgICAiICAg
IHRocmVhZGdyb3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fdGhyZWFkZ3JvdXApO1xuIgorICAg
ICAgICAgICAgIn1cbiIKKyAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIu
dG9TdHJpbmcoKTsKICAgICB9CiAKQEAgLTQzNSwxMCArNDc1LDEyIEBAIFN0cmluZyB3cml0ZU5h
dGl2ZUZ1bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgICAgIGF1dG8mIGZvdXJ0aEFyZ3Vt
ZW50UG9pbnRlciA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KCpuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLnBhcmFtZXRlcnMoKVszXS0+dHlwZSgpKTsKICAgICAgICAgICAgIGF1dG8gZm91
cnRoQXJndW1lbnRBZGRyZXNzU3BhY2UgPSBmb3VydGhBcmd1bWVudFBvaW50ZXIuYWRkcmVzc1Nw
YWNlKCk7CiAgICAgICAgICAgICBhdXRvIGZvdXJ0aEFyZ3VtZW50UG9pbnRlZSA9IHR5cGVOYW1l
ci5tYW5nbGVkTmFtZUZvclR5cGUoZm91cnRoQXJndW1lbnRQb2ludGVyLmVsZW1lbnRUeXBlKCkp
OwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygidm9pZCAiLCBv
dXRwdXRGdW5jdGlvbk5hbWUsICcoJywgdG9TdHJpbmcoZmlyc3RBcmd1bWVudEFkZHJlc3NTcGFj
ZSksICcgJywgZmlyc3RBcmd1bWVudFBvaW50ZWUsICIqIG9iamVjdCwgIiwgc2Vjb25kQXJndW1l
bnQsICIgY29tcGFyZSwgIiwgdGhpcmRBcmd1bWVudCwgIiBkZXNpcmVkLCAiLCB0b1N0cmluZyhm
b3VydGhBcmd1bWVudEFkZHJlc3NTcGFjZSksICcgJywgZm91cnRoQXJndW1lbnRQb2ludGVlLCAi
KiBvdXQpIHtcbiIpKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgYXRv
bWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2Vha19leHBsaWNpdChvYmplY3QsICZjb21wYXJlLCBkZXNp
cmVkLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpO1xuIik7Ci0g
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgICpvdXQgPSBjb21wYXJlO1xuIik7
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgICAgICJ2b2lkICIsIG91
dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCB0b1N0cmluZyhmaXJzdEFyZ3VtZW50QWRkcmVzc1NwYWNl
KSwgJyAnLCBmaXJzdEFyZ3VtZW50UG9pbnRlZSwgIiogb2JqZWN0LCAiLCBzZWNvbmRBcmd1bWVu
dCwgIiBjb21wYXJlLCAiLCB0aGlyZEFyZ3VtZW50LCAiIGRlc2lyZWQsICIsIHRvU3RyaW5nKGZv
dXJ0aEFyZ3VtZW50QWRkcmVzc1NwYWNlKSwgJyAnLCBmb3VydGhBcmd1bWVudFBvaW50ZWUsICIq
IG91dCkge1xuIgorICAgICAgICAgICAgICAgICIgICAgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vf
d2Vha19leHBsaWNpdChvYmplY3QsICZjb21wYXJlLCBkZXNpcmVkLCBtZW1vcnlfb3JkZXJfcmVs
YXhlZCwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpO1xuIgorICAgICAgICAgICAgICAgICIgICAgKm91
dCA9IGNvbXBhcmU7XG4iCisgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICk7CiAg
ICAgICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAgICAgICB9CiAK
QEAgLTQ1MSw5ICs0OTMsMTEgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRp
dmVGdQogICAgICAgICBhdXRvIHRoaXJkQXJndW1lbnRBZGRyZXNzU3BhY2UgPSB0aGlyZEFyZ3Vt
ZW50UG9pbnRlci5hZGRyZXNzU3BhY2UoKTsKICAgICAgICAgYXV0byB0aGlyZEFyZ3VtZW50UG9p
bnRlZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUodGhpcmRBcmd1bWVudFBvaW50ZXIu
ZWxlbWVudFR5cGUoKSk7CiAgICAgICAgIGF1dG8gbmFtZSA9IGF0b21pY05hbWUobmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkuc3Vic3RyaW5nKCJJbnRlcmxvY2tlZCJfc3RyLmxlbmd0
aCgpKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInZvaWQgIiwg
b3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIHRvU3RyaW5nKGZpcnN0QXJndW1lbnRBZGRyZXNzU3Bh
Y2UpLCAnICcsIGZpcnN0QXJndW1lbnRQb2ludGVlLCAiKiBvYmplY3QsICIsIHNlY29uZEFyZ3Vt
ZW50LCAiIG9wZXJhbmQsICIsIHRvU3RyaW5nKHRoaXJkQXJndW1lbnRBZGRyZXNzU3BhY2UpLCAn
ICcsIHRoaXJkQXJndW1lbnRQb2ludGVlLCAiKiBvdXQpIHtcbiIpKTsKLSAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgICpvdXQgPSBhdG9taWNfIiwgbmFtZSwgIl9l
eHBsaWNpdChvYmplY3QsIG9wZXJhbmQsIG1lbW9yeV9vcmRlcl9yZWxheGVkKTtcbiIpKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgInZvaWQgIiwgb3V0cHV0RnVuY3Rpb25OYW1l
LCAnKCcsIHRvU3RyaW5nKGZpcnN0QXJndW1lbnRBZGRyZXNzU3BhY2UpLCAnICcsIGZpcnN0QXJn
dW1lbnRQb2ludGVlLCAiKiBvYmplY3QsICIsIHNlY29uZEFyZ3VtZW50LCAiIG9wZXJhbmQsICIs
IHRvU3RyaW5nKHRoaXJkQXJndW1lbnRBZGRyZXNzU3BhY2UpLCAnICcsIHRoaXJkQXJndW1lbnRQ
b2ludGVlLCAiKiBvdXQpIHtcbiIKKyAgICAgICAgICAgICIgICAgKm91dCA9IGF0b21pY18iLCBu
YW1lLCAiX2V4cGxpY2l0KG9iamVjdCwgb3BlcmFuZCwgbWVtb3J5X29yZGVyX3JlbGF4ZWQpO1xu
IgorICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAKQEAgLTQ3MywyMyArNTE3LDI3IEBAIFN0cmluZyB3
cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgaWYgKG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSA0KQogICAgICAgICAgICAgbWV0
YWxQYXJhbWV0ZXI0TmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzNdLT50eXBlKCkpOwogICAgICAgICBhdXRv
IG1ldGFsUmV0dXJuTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUocmV0dXJuVHlw
ZSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWV0YWxSZXR1cm5O
YW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAi
IHRoZVRleHR1cmUsICIsIG1ldGFsUGFyYW1ldGVyMk5hbWUsICIgdGhlU2FtcGxlciwgIiwgbWV0
YWxQYXJhbWV0ZXIzTmFtZSwgIiBsb2NhdGlvbiIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZChtZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAn
KCcsIG1ldGFsUGFyYW1ldGVyMU5hbWUsICIgdGhlVGV4dHVyZSwgIiwgbWV0YWxQYXJhbWV0ZXIy
TmFtZSwgIiB0aGVTYW1wbGVyLCAiLCBtZXRhbFBhcmFtZXRlcjNOYW1lLCAiIGxvY2F0aW9uIik7
CiAgICAgICAgIGlmICghbWV0YWxQYXJhbWV0ZXI0TmFtZS5pc051bGwoKSkKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiwgIiwgbWV0YWxQYXJhbWV0ZXI0TmFt
ZSwgIiBvZmZzZXQiKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIHtcbiIpOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIHJldHVybiB0aGVUZXh0dXJlLnNhbXBs
ZSh0aGVTYW1wbGVyLCAiKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoIiwgIiwgbWV0YWxQYXJhbWV0ZXI0TmFtZSwgIiBvZmZzZXQiKTsKKyAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoCisgICAgICAgICAgICAiKSB7XG4iCisgICAgICAgICAgICAiICAgIHJl
dHVybiB0aGVUZXh0dXJlLnNhbXBsZSh0aGVTYW1wbGVyLCAiCisgICAgICAgICk7CiAgICAgICAg
IGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQo
bG9jYXRpb25WZWN0b3JMZW5ndGggPiAxKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1ha2VTdHJpbmcoImxvY2F0aW9uLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAsIGxvY2F0
aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIsIGxvY2F0aW9uLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5n
KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSwgMSkpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoImxvY2F0aW9uLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAsIGxv
Y2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIsIGxvY2F0aW9uLiIsICJ4eXp3Il9zdHIuc3Vic3Ry
aW5nKGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSwgMSkpOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJsb2NhdGlvbiIpOwogICAgICAgICBpZiAoIW1l
dGFsUGFyYW1ldGVyNE5hbWUuaXNOdWxsKCkpCiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiLCBvZmZzZXQiKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIikiKTsKICAg
ICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5pc0RlcHRoVGV4dHVyZSgpKQotICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAs
IHJldHVyblZlY3Rvckxlbmd0aCkpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIjtc
biIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIuIiwgInh5enciX3N0ci5zdWJzdHJpbmcoMCwg
cmV0dXJuVmVjdG9yTGVuZ3RoKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAorICAg
ICAgICAgICAgIjtcbiIKKyAgICAgICAgICAgICJ9XG4iCisgICAgICAgICk7CiAgICAgICAgIHJl
dHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCkBAIC01MDUsMzcgKzU1Myw0
MSBAQCBTdHJpbmcgd3JpdGVOYXRpdmVGdW5jdGlvbihBU1Q6Ok5hdGl2ZUZ1CiAgICAgICAgIGF1
dG8gbWV0YWxQYXJhbWV0ZXIxTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUodGV4
dHVyZVR5cGUpOwogICAgICAgICBhdXRvIG1ldGFsUGFyYW1ldGVyMk5hbWUgPSB0eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKGxvY2F0aW9uVHlwZSk7CiAgICAgICAgIGF1dG8gbWV0YWxSZXR1
cm5OYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShyZXR1cm5UeXBlKTsKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtZXRhbFJldHVybk5hbWUsICcgJywg
b3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyMU5hbWUsICIgdGhlVGV4dHVy
ZSwgIiwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiBsb2NhdGlvbikge1xuIikpOworICAgICAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRG
dW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXIxTmFtZSwgIiB0aGVUZXh0dXJlLCAiLCBt
ZXRhbFBhcmFtZXRlcjJOYW1lLCAiIGxvY2F0aW9uKSB7XG4iKTsKICAgICAgICAgaWYgKHRleHR1
cmVUeXBlLmlzVGV4dHVyZUFycmF5KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvblZl
Y3Rvckxlbmd0aCA+IDEpOwogICAgICAgICAgICAgU3RyaW5nIGRpbWVuc2lvbnNbXSA9IHsgIndp
ZHRoIl9zdHIsICJoZWlnaHQiX3N0ciwgImRlcHRoIl9zdHIgfTsKICAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAxOyArK2kpIHsKICAgICAgICAg
ICAgICAgICBhdXRvIHN1ZmZpeCA9ICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGksIDEpOwotICAgICAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBpZiAobG9jYXRp
b24uIiwgc3VmZml4LCAiIDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obG9jYXRpb24uIiwg
c3VmZml4LCAiKSA+PSB0aGVUZXh0dXJlLmdldF8iLCBkaW1lbnNpb25zW2ldLCAiKCkpIHJldHVy
biAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7XG4iKSk7CisgICAgICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIGlmIChsb2NhdGlvbi4iLCBzdWZmaXgsICIgPCAw
IHx8IHN0YXRpY19jYXN0PHVpbnQzMl90Pihsb2NhdGlvbi4iLCBzdWZmaXgsICIpID49IHRoZVRl
eHR1cmUuZ2V0XyIsIGRpbWVuc2lvbnNbaV0sICIoKSkgcmV0dXJuICIsIG1ldGFsUmV0dXJuTmFt
ZSwgIigwKTtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYXV0byBzdWZmaXggPSAi
eHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpOwotICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIGlmIChsb2NhdGlvbi4i
LCBzdWZmaXgsICIgPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90Pihsb2NhdGlvbi4iLCBzdWZm
aXgsICIpID49IHRoZVRleHR1cmUuZ2V0X2FycmF5X3NpemUoKSkgcmV0dXJuICIsIG1ldGFsUmV0
dXJuTmFtZSwgIigwKTtcbiIpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQoIiAgICBpZiAobG9jYXRpb24uIiwgc3VmZml4LCAiIDwgMCB8fCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4obG9jYXRpb24uIiwgc3VmZml4LCAiKSA+PSB0aGVUZXh0dXJlLmdldF9hcnJheV9z
aXplKCkpIHJldHVybiAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7XG4iKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA9PSAxKQotICAgICAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBpZiAobG9jYXRp
b24gPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90Pihsb2NhdGlvbikgPj0gdGhlVGV4dHVyZS5n
ZXRfd2lkdGgoKSkgcmV0dXJuICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTtcbiIpKTsKKyAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgaWYgKGxvY2F0aW9u
IDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obG9jYXRpb24pID49IHRoZVRleHR1cmUuZ2V0
X3dpZHRoKCkpIHJldHVybiAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7XG4iKTsKICAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJp
bmcoIiAgICBpZiAobG9jYXRpb24ueCA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxvY2F0
aW9uLngpID49IHRoZVRleHR1cmUuZ2V0X3dpZHRoKCkpIHJldHVybiAiLCBtZXRhbFJldHVybk5h
bWUsICIoMCk7XG4iKSk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFr
ZVN0cmluZygiICAgIGlmIChsb2NhdGlvbi55IDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
bG9jYXRpb24ueSkgPj0gdGhlVGV4dHVyZS5nZXRfaGVpZ2h0KCkpIHJldHVybiAiLCBtZXRhbFJl
dHVybk5hbWUsICIoMCk7XG4iKSk7CisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAobG9jYXRpb24ueCA8IDAg
fHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxvY2F0aW9uLngpID49IHRoZVRleHR1cmUuZ2V0X3dp
ZHRoKCkpIHJldHVybiAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7XG4iCisgICAgICAgICAgICAg
ICAgICAgICIgICAgaWYgKGxvY2F0aW9uLnkgPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90Pihs
b2NhdGlvbi55KSA+PSB0aGVUZXh0dXJlLmdldF9oZWlnaHQoKSkgcmV0dXJuICIsIG1ldGFsUmV0
dXJuTmFtZSwgIigwKTtcbiIKKyAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgIGlm
IChsb2NhdGlvblZlY3Rvckxlbmd0aCA+PSAzKQotICAgICAgICAgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgaWYgKGxvY2F0aW9uLnogPCAwIHx8IHN0YXRp
Y19jYXN0PHVpbnQzMl90Pihsb2NhdGlvbi56KSA+PSB0aGVUZXh0dXJlLmdldF9kZXB0aCgpKSBy
ZXR1cm4gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApO1xuIikpOworICAgICAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgaWYgKGxvY2F0aW9uLnogPCAwIHx8
IHN0YXRpY19jYXN0PHVpbnQzMl90Pihsb2NhdGlvbi56KSA+PSB0aGVUZXh0dXJlLmdldF9kZXB0
aCgpKSByZXR1cm4gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApO1xuIik7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICByZXR1cm4gdGhl
VGV4dHVyZS5yZWFkKCIpOwogICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNUZXh0dXJlQXJyYXko
KSkgewogICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID4gMSk7Ci0gICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJ1aW50IiwgdmVjdG9yU3Vm
Zml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIobG9jYXRpb24uIiwgInh5enciX3N0ci5z
dWJzdHJpbmcoMCwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIiksIHVpbnQobG9jYXRpb24u
IiwgInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKSwgIiki
KSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ1aW50IiwgdmVj
dG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIobG9jYXRpb24uIiwgInh5enci
X3N0ci5zdWJzdHJpbmcoMCwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIiksIHVpbnQobG9j
YXRpb24uIiwgInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAx
KSwgJyknKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChtYWtlU3RyaW5nKCJ1aW50IiwgdmVjdG9yU3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoKSwg
Iihsb2NhdGlvbikiKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIik7CisgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ1aW50IiwgdmVjdG9yU3VmZml4
KGxvY2F0aW9uVmVjdG9yTGVuZ3RoKSwgIihsb2NhdGlvbikiKTsKKyAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoJyknKTsKICAgICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5pc0RlcHRoVGV4dHVy
ZSgpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiLiIsICJ4
eXp3Il9zdHIuc3Vic3RyaW5nKDAsIHJldHVyblZlY3Rvckxlbmd0aCkpKTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIjtcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
fVxuIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCcuJywgInh5
enciX3N0ci5zdWJzdHJpbmcoMCwgcmV0dXJuVmVjdG9yTGVuZ3RoKSk7CisgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKAorICAgICAgICAgICAgIjtcbiIKKyAgICAgICAgICAgICJ9XG4iCisg
ICAgICAgICk7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAg
fQogCkBAIC01NDMsOSArNTk1LDExIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6
TmF0aXZlRnUKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1l
dGVycygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlck5hbWUgPSB0
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBh
cmFtZXRlcnMoKVswXS0+dHlwZSgpKTsKICAgICAgICAgYXV0byBtZXRhbFJldHVybk5hbWUgPSB0
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlw
ZSgpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtZXRhbFJldHVy
bk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyTmFtZSwg
IiB4KSB7XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgcmV0dXJuIGF0
b21pY19sb2FkX2V4cGxpY2l0KHgsIG1lbW9yeV9vcmRlcl9yZWxheGVkKTtcbiIpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxl
eGlibGVBcHBlbmQoCisgICAgICAgICAgICBtZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVu
Y3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB4KSB7XG4iCisgICAgICAgICAg
ICAiICAgIHJldHVybiBhdG9taWNfbG9hZF9leHBsaWNpdCh4LCBtZW1vcnlfb3JkZXJfcmVsYXhl
ZCk7XG4iCisgICAgICAgICAgICAifVxuIgorICAgICAgICApOwogICAgICAgICByZXR1cm4gc3Ry
aW5nQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIApAQCAtNTUzLDkgKzYwNyw5IEBAIFN0cmlu
ZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgQVNTRVJUKG5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAyKTsKICAgICAgICAg
YXV0byBtZXRhbFBhcmFtZXRlcjFOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgq
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSk7CiAgICAg
ICAgIGF1dG8gbWV0YWxQYXJhbWV0ZXIyTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzFdLT50eXBlKCkpOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJ2b2lkICIsIG91dHB1dEZ1
bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHgsICIsIG1ldGFsUGFyYW1l
dGVyMk5hbWUsICIgeSkge1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAg
IGF0b21pY19zdG9yZV9leHBsaWNpdCh4LCB5LCBtZW1vcnlfb3JkZXJfcmVsYXhlZCk7XG4iKTsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOworICAgICAgICBzdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKCJ2b2lkICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRh
bFBhcmFtZXRlcjFOYW1lLCAiIHgsICIsIG1ldGFsUGFyYW1ldGVyMk5hbWUsICIgeSkge1xuIgor
ICAgICAgICAgICAgIiAgICBhdG9taWNfc3RvcmVfZXhwbGljaXQoeCwgeSwgbWVtb3J5X29yZGVy
X3JlbGF4ZWQpO1xuIgorICAgICAgICAgICAgIn1cbiIpOwogICAgICAgICByZXR1cm4gc3RyaW5n
QnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIApAQCAtNTkwLDQ1ICs2NDQsNTUgQEAgU3RyaW5n
IHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAgICBBU1NFUlQoaW5kZXgg
PT0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpKTsKIAogICAg
ICAgICBhdXRvIG1ldGFsUGFyYW1ldGVyMU5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JU
eXBlKHRleHR1cmVUeXBlKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmlu
Zygidm9pZCAiLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXIxTmFtZSwg
IiB0aGVUZXh0dXJlIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ2
b2lkICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHRo
ZVRleHR1cmUiKTsKICAgICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5pc1dyaXRhYmxlVGV4dHVyZSgp
ICYmIHRleHR1cmVUeXBlLnRleHR1cmVEaW1lbnNpb24oKSAhPSAxKQogICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiwgdWludCBtaXBMZXZlbCIpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIsICIsIHdpZHRoVHlwZU5hbWUsICIgd2lkdGgiKSk7Cisg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiwgIiwgd2lkdGhUeXBlTmFtZSwg
IiB3aWR0aCIpOwogICAgICAgICBpZiAoIWhlaWdodFR5cGVOYW1lLmlzTnVsbCgpKQotICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiLCAiLCBoZWlnaHRUeXBlTmFt
ZSwgIiBoZWlnaHQiKSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KCIsICIsIGhlaWdodFR5cGVOYW1lLCAiIGhlaWdodCIpOwogICAgICAgICBpZiAoIWRlcHRoVHlw
ZU5hbWUuaXNOdWxsKCkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3Ry
aW5nKCIsICIsIGRlcHRoVHlwZU5hbWUsICIgZGVwdGgiKSk7CisgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIsICIsIGRlcHRoVHlwZU5hbWUsICIgZGVwdGgiKTsKICAg
ICAgICAgaWYgKCFlbGVtZW50c1R5cGVOYW1lLmlzTnVsbCgpKQotICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiLCAiLCBlbGVtZW50c1R5cGVOYW1lLCAiIGVsZW1l
bnRzIikpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiLCAiLCBl
bGVtZW50c1R5cGVOYW1lLCAiIGVsZW1lbnRzIik7CiAgICAgICAgIGlmICghbnVtYmVyT2ZMZXZl
bHNUeXBlTmFtZS5pc051bGwoKSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1h
a2VTdHJpbmcoIiwgIiwgbnVtYmVyT2ZMZXZlbHNUeXBlTmFtZSwgIiBudW1iZXJPZkxldmVscyIp
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIikge1xuIik7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKHdpZHRoKVxuIik7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIgICAgICAgICp3aWR0aCA9IHRoZVRleHR1cmUuZ2V0X3dpZHRoKCIpOworICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiLCAiLCBudW1iZXJPZkxldmVs
c1R5cGVOYW1lLCAiIG51bWJlck9mTGV2ZWxzIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKAorICAgICAgICAgICAgIikge1xuIgorICAgICAgICAgICAgIiAgICBpZiAod2lkdGgpXG4i
CisgICAgICAgICAgICAiICAgICAgICAqd2lkdGggPSB0aGVUZXh0dXJlLmdldF93aWR0aCgiCisg
ICAgICAgICk7CiAgICAgICAgIGlmICghdGV4dHVyZVR5cGUuaXNXcml0YWJsZVRleHR1cmUoKSAm
JiB0ZXh0dXJlVHlwZS50ZXh0dXJlRGltZW5zaW9uKCkgIT0gMSkKICAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCJtaXBMZXZlbCIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiKTtcbiIpOwogICAgICAgICBpZiAoIWhlaWdodFR5cGVOYW1lLmlzTnVsbCgpKSB7Ci0gICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlmIChoZWlnaHQpXG4iKTsKLSAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgICAgICpoZWlnaHQgPSB0aGVUZXh0dXJl
LmdldF9oZWlnaHQoIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKKyAgICAg
ICAgICAgICAgICAiICAgIGlmIChoZWlnaHQpXG4iCisgICAgICAgICAgICAgICAgIiAgICAgICAg
KmhlaWdodCA9IHRoZVRleHR1cmUuZ2V0X2hlaWdodCgiCisgICAgICAgICAgICApOwogICAgICAg
ICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5pc1dyaXRhYmxlVGV4dHVyZSgpICYmIHRleHR1cmVUeXBl
LnRleHR1cmVEaW1lbnNpb24oKSAhPSAxKQogICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCJtaXBMZXZlbCIpOwogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7
XG4iKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWRlcHRoVHlwZU5hbWUuaXNOdWxsKCkpIHsK
LSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKGRlcHRoKVxuIik7Ci0g
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgICAgICAqZGVwdGggPSB0aGVUZXh0
dXJlLmdldF9kZXB0aCgiKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAorICAg
ICAgICAgICAgICAgICIgICAgaWYgKGRlcHRoKVxuIgorICAgICAgICAgICAgICAgICIgICAgICAg
ICpkZXB0aCA9IHRoZVRleHR1cmUuZ2V0X2RlcHRoKCIKKyAgICAgICAgICAgICk7CiAgICAgICAg
ICAgICBpZiAoIXRleHR1cmVUeXBlLmlzV3JpdGFibGVUZXh0dXJlKCkgJiYgdGV4dHVyZVR5cGUu
dGV4dHVyZURpbWVuc2lvbigpICE9IDEpCiAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIm1pcExldmVsIik7CiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKTtc
biIpOwogICAgICAgICB9CiAgICAgICAgIGlmICghZWxlbWVudHNUeXBlTmFtZS5pc051bGwoKSkg
ewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBpZiAoZWxlbWVudHMpXG4i
KTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgICAgICplbGVtZW50cyA9
IHRoZVRleHR1cmUuZ2V0X2FycmF5X3NpemUoKTtcbiIpOworICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoCisgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxlbWVudHMpXG4iCisgICAg
ICAgICAgICAgICAgIiAgICAgICAgKmVsZW1lbnRzID0gdGhlVGV4dHVyZS5nZXRfYXJyYXlfc2l6
ZSgpO1xuIgorICAgICAgICAgICAgKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIW51bWJlck9m
TGV2ZWxzVHlwZU5hbWUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIgICAgaWYgKG51bWJlck9mTGV2ZWxzKVxuIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiICAgICAgICAqbnVtYmVyT2ZMZXZlbHMgPSB0aGVUZXh0dXJlLmdldF9udW1f
bWlwX2xldmVscygpO1xuIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKKyAg
ICAgICAgICAgICAgICAiICAgIGlmIChudW1iZXJPZkxldmVscylcbiIKKyAgICAgICAgICAgICAg
ICAiICAgICAgICAqbnVtYmVyT2ZMZXZlbHMgPSB0aGVUZXh0dXJlLmdldF9udW1fbWlwX2xldmVs
cygpO1xuIgorICAgICAgICAgICAgKTsKICAgICAgICAgfQogICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgifVxuIik7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7
CkBAIC02ODMsMzcgKzc0Nyw0MSBAQCBTdHJpbmcgd3JpdGVOYXRpdmVGdW5jdGlvbihBU1Q6Ok5h
dGl2ZUZ1CiAgICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0ZXIyTmFtZSA9IHR5cGVOYW1lci5tYW5n
bGVkTmFtZUZvclR5cGUoaXRlbVR5cGUpOwogICAgICAgICBhdXRvIG1ldGFsUGFyYW1ldGVyM05h
bWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGxvY2F0aW9uVHlwZSk7CiAgICAgICAg
IGF1dG8gbWV0YWxJbm5lclR5cGVOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShp
dGVtVmVjdG9ySW5uZXJUeXBlKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0
cmluZygidm9pZCAiLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXIxTmFt
ZSwgIiB0aGVUZXh0dXJlLCAiLCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAiIGl0ZW0sICIsIG1ldGFs
UGFyYW1ldGVyM05hbWUsICIgbG9jYXRpb24pIHtcbiIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZCgidm9pZCAiLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQ
YXJhbWV0ZXIxTmFtZSwgIiB0aGVUZXh0dXJlLCAiLCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAiIGl0
ZW0sICIsIG1ldGFsUGFyYW1ldGVyM05hbWUsICIgbG9jYXRpb24pIHtcbiIpOwogICAgICAgICBp
ZiAodGV4dHVyZVR5cGUuaXNUZXh0dXJlQXJyYXkoKSkgewogICAgICAgICAgICAgQVNTRVJUKGxv
Y2F0aW9uVmVjdG9yTGVuZ3RoID4gMSk7CiAgICAgICAgICAgICBTdHJpbmcgZGltZW5zaW9uc1td
ID0geyAid2lkdGgiX3N0ciwgImhlaWdodCJfc3RyLCAiZGVwdGgiX3N0ciB9OwogICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDE7ICsraSkgewog
ICAgICAgICAgICAgICAgIGF1dG8gc3VmZml4ID0gInh5enciX3N0ci5zdWJzdHJpbmcoaSwgMSk7
Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIGlm
IChsb2NhdGlvbi4iLCBzdWZmaXgsICIgPj0gdGhlVGV4dHVyZS5nZXRfIiwgZGltZW5zaW9uc1tp
XSwgIigpKSByZXR1cm47XG4iKSk7CisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgiICAgIGlmIChsb2NhdGlvbi4iLCBzdWZmaXgsICIgPj0gdGhlVGV4dHVyZS5n
ZXRfIiwgZGltZW5zaW9uc1tpXSwgIigpKSByZXR1cm47XG4iKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGF1dG8gc3VmZml4ID0gInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0
b3JMZW5ndGggLSAxLCAxKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VT
dHJpbmcoIiAgICBpZiAobG9jYXRpb24uIiwgc3VmZml4LCAiID49IHRoZVRleHR1cmUuZ2V0X2Fy
cmF5X3NpemUoKSkgcmV0dXJuO1xuIikpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgiICAgIGlmIChsb2NhdGlvbi4iLCBzdWZmaXgsICIgPj0gdGhlVGV4dHVyZS5n
ZXRfYXJyYXlfc2l6ZSgpKSByZXR1cm47XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA9PSAxKQotICAgICAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBpZiAobG9jYXRpb24gPj0gdGhlVGV4dHVy
ZS5nZXRfd2lkdGgoKSkgcmV0dXJuO1xuIikpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIgICAgaWYgKGxvY2F0aW9uID49IHRoZVRleHR1cmUuZ2V0X3dpZHRoKCkpIHJl
dHVybjtcbiIpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIGlmIChsb2NhdGlvbi54ID49IHRoZVRleHR1cmUu
Z2V0X3dpZHRoKCkpIHJldHVybjtcbiIpKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChtYWtlU3RyaW5nKCIgICAgaWYgKGxvY2F0aW9uLnkgPj0gdGhlVGV4dHVyZS5nZXRf
aGVpZ2h0KCkpIHJldHVybjtcbiIpKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgKKyAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAobG9jYXRpb24ueCA+PSB0aGVUZXh0
dXJlLmdldF93aWR0aCgpKSByZXR1cm47XG4iCisgICAgICAgICAgICAgICAgICAgICIgICAgaWYg
KGxvY2F0aW9uLnkgPj0gdGhlVGV4dHVyZS5nZXRfaGVpZ2h0KCkpIHJldHVybjtcbiIKKyAgICAg
ICAgICAgICAgICApOwogICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvblZlY3Rvckxlbmd0aCA+
PSAzKQotICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5n
KCIgICAgaWYgKGxvY2F0aW9uLnogPj0gdGhlVGV4dHVyZS5nZXRfZGVwdGgoKSkgcmV0dXJuO1xu
IikpOworICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlmIChs
b2NhdGlvbi56ID49IHRoZVRleHR1cmUuZ2V0X2RlcHRoKCkpIHJldHVybjtcbiIpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJp
bmcoIiAgICB0aGVUZXh0dXJlLndyaXRlKHZlYzwiLCBtZXRhbElubmVyVHlwZU5hbWUsICIsIDQ+
KGl0ZW0iKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICB0aGVU
ZXh0dXJlLndyaXRlKHZlYzwiLCBtZXRhbElubmVyVHlwZU5hbWUsICIsIDQ+KGl0ZW0iKTsKICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0IC0gaXRlbVZlY3Rvckxlbmd0aDsgKytpKQogICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgMCIpOwogICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiKSwgIik7CiAgICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJh
eSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQobG9jYXRpb25WZWN0b3JMZW5ndGggPiAxKTsKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInVpbnQiLCB2ZWN0b3JT
dWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIihsb2NhdGlvbi4iLCAieHl6dyJfc3Ry
LnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAiKSwgdWludChsb2NhdGlv
bi4iLCAieHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpLCAi
KSIpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInVpbnQiLCB2
ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIihsb2NhdGlvbi4iLCAieHl6
dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAiKSwgdWludChs
b2NhdGlvbi4iLCAieHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEs
IDEpLCAnKScpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1ha2VTdHJpbmcoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGgp
LCAiKGxvY2F0aW9uKSIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4iKTsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOworICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rv
ckxlbmd0aCksICIobG9jYXRpb24pIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAor
ICAgICAgICAgICAgIik7XG4iKTsKKyAgICAgICAgICAgICJ9XG4iCisgICAgICAgICk7CiAgICAg
ICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwv
V0hMU0xUeXBlTmFtZXIuY3BwCShyZXZpc2lvbiAyNDc4OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2MSw3ICszNjEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgdmlzaXQo
QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0aW9uKQogICAgIHsKLSAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJzdHJ1Y3QgIiwgbV9tYW5n
bGVkTmFtZUZvck5hbWVkVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9uKSwgIjtcbiIpKTsKKyAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJzdHJ1Y3QgIiwgbV9tYW5nbGVkTmFt
ZUZvck5hbWVkVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9uKSwgIjtcbiIpOwogICAgIH0KIAogICAg
IHN0ZDo6ZnVuY3Rpb248U3RyaW5nKEFTVDo6TmFtZWRUeXBlJik+IG1fbWFuZ2xlZE5hbWVGb3JO
YW1lZFR5cGU7CkBAIC0zODYsMjIgKzM4NiwyNCBAQCB2b2lkIFR5cGVOYW1lcjo6ZW1pdFVubmFt
ZWRUeXBlRGVmaW5pdGlvCiAgICAgaWYgKGlzPFJlZmVyZW5jZVR5cGVOYW1lTm9kZT4oYmFzZVR5
cGVOYW1lTm9kZSkpIHsKICAgICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8UmVmZXJl
bmNlVHlwZU5hbWVOb2RlPihiYXNlVHlwZU5hbWVOb2RlKS5uYW1lZFR5cGUoKTsKICAgICAgICAg
ZW1pdE5hbWVkVHlwZURlZmluaXRpb24obmFtZWRUeXBlLCBlbWl0dGVkTmFtZWRUeXBlcywgZW1p
dHRlZFVubmFtZWRUeXBlcywgc3RyaW5nQnVpbGRlcik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKG1ha2VTdHJpbmcoInR5cGVkZWYgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKG5hbWVkVHlw
ZSksICcgJywgYmFzZVR5cGVOYW1lTm9kZS5tYW5nbGVkTmFtZSgpLCAiO1xuIikpOworICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ0eXBlZGVmICIsIG1hbmdsZWROYW1lRm9y
VHlwZShuYW1lZFR5cGUpLCAnICcsIGJhc2VUeXBlTmFtZU5vZGUubWFuZ2xlZE5hbWUoKSwgIjtc
biIpOwogICAgIH0gZWxzZSBpZiAoaXM8UG9pbnRlclR5cGVOYW1lTm9kZT4oYmFzZVR5cGVOYW1l
Tm9kZSkpIHsKICAgICAgICAgYXV0byYgcG9pbnRlclR5cGUgPSBkb3duY2FzdDxQb2ludGVyVHlw
ZU5hbWVOb2RlPihiYXNlVHlwZU5hbWVOb2RlKTsKICAgICAgICAgQVNTRVJUKGJhc2VUeXBlTmFt
ZU5vZGUucGFyZW50KCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5n
KCJ0eXBlZGVmICIsIHRvU3RyaW5nKHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKSwgIiAiLCBw
b2ludGVyVHlwZS5wYXJlbnQoKS0+bWFuZ2xlZE5hbWUoKSwgIiogIiwgcG9pbnRlclR5cGUubWFu
Z2xlZE5hbWUoKSwgIjtcbiIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgidHlwZWRlZiAiLCB0b1N0cmluZyhwb2ludGVyVHlwZS5hZGRyZXNzU3BhY2UoKSksICcgJywg
cG9pbnRlclR5cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIqICIsIHBvaW50ZXJUeXBlLm1h
bmdsZWROYW1lKCksICI7XG4iKTsKICAgICB9IGVsc2UgaWYgKGlzPEFycmF5UmVmZXJlbmNlVHlw
ZU5hbWVOb2RlPihiYXNlVHlwZU5hbWVOb2RlKSkgewogICAgICAgICBhdXRvJiBhcnJheVJlZmVy
ZW5jZVR5cGUgPSBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4oYmFzZVR5cGVO
YW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2RlLnBhcmVudCgpKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygic3RydWN0ICIsIGFycmF5UmVm
ZXJlbmNlVHlwZS5tYW5nbGVkTmFtZSgpLCAieyBcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQobWFrZVN0cmluZygiICAgICIsIHRvU3RyaW5nKGFycmF5UmVmZXJlbmNlVHlwZS5h
ZGRyZXNzU3BhY2UoKSksICIgIiwgYXJyYXlSZWZlcmVuY2VUeXBlLnBhcmVudCgpLT5tYW5nbGVk
TmFtZSgpLCAiKiBwb2ludGVyO1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
ICAgIHVpbnQzMl90IGxlbmd0aDtcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
fTtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAg
ICAgInN0cnVjdCAiLCBhcnJheVJlZmVyZW5jZVR5cGUubWFuZ2xlZE5hbWUoKSwgInsgXG4iCisg
ICAgICAgICAgICAiICAgICIsIHRvU3RyaW5nKGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3Bh
Y2UoKSksICcgJywgYXJyYXlSZWZlcmVuY2VUeXBlLnBhcmVudCgpLT5tYW5nbGVkTmFtZSgpLCAi
KiBwb2ludGVyO1xuIgorICAgICAgICAgICAgIiAgICB1aW50MzJfdCBsZW5ndGg7XG4iCisgICAg
ICAgICAgICAifTtcbiIKKyAgICAgICAgKTsKICAgICB9IGVsc2UgewogICAgICAgICBhdXRvJiBh
cnJheVR5cGUgPSBkb3duY2FzdDxBcnJheVR5cGVOYW1lTm9kZT4oYmFzZVR5cGVOYW1lTm9kZSk7
CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2RlLnBhcmVudCgpKTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygidHlwZWRlZiBhcnJheTwiLCBhcnJheVR5cGUu
cGFyZW50KCktPm1hbmdsZWROYW1lKCksICIsICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAi
PiAiLCBhcnJheVR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpKTsKKyAgICAgICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZCgidHlwZWRlZiBhcnJheTwiLCBhcnJheVR5cGUucGFyZW50KCkt
Pm1hbmdsZWROYW1lKCksICIsICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiPiAiLCBhcnJh
eVR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpOwogICAgIH0KICAgICBlbWl0dGVkVW5uYW1lZFR5
cGVzLmFkZCgmYmFzZVR5cGVOYW1lTm9kZSk7CiB9CkBAIC00MTcsMjEgKzQxOSwyMSBAQCB2b2lk
IFR5cGVOYW1lcjo6ZW1pdE5hbWVkVHlwZURlZmluaXRpb24oCiAgICAgaWYgKGlzPEFTVDo6RW51
bWVyYXRpb25EZWZpbml0aW9uPihuYW1lZFR5cGUpKSB7CiAgICAgICAgIGF1dG8mIGVudW1lcmF0
aW9uRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihuYW1l
ZFR5cGUpOwogICAgICAgICBhdXRvJiBiYXNlVHlwZSA9IGVudW1lcmF0aW9uRGVmaW5pdGlvbi50
eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJp
bmcoImVudW0gY2xhc3MgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKGVudW1lcmF0aW9uRGVmaW5pdGlv
biksICIgOiAiLCBtYW5nbGVkTmFtZUZvclR5cGUoZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KGJh
c2VUeXBlKSksICIge1xuIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KCJlbnVtIGNsYXNzICIsIG1hbmdsZWROYW1lRm9yVHlwZShlbnVtZXJhdGlvbkRlZmluaXRpb24p
LCAiIDogIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihiYXNl
VHlwZSkpLCAiIHtcbiIpOwogICAgICAgICBmb3IgKGF1dG8mIGVudW1lcmF0aW9uTWVtYmVyIDog
ZW51bWVyYXRpb25EZWZpbml0aW9uLmVudW1lcmF0aW9uTWVtYmVycygpKQotICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgICIsIG1hbmdsZWROYW1lRm9yRW51
bWVyYXRpb25NZW1iZXIoZW51bWVyYXRpb25NZW1iZXIpLCAiID0gIiwgZW51bWVyYXRpb25NZW1i
ZXIuZ2V0KCkudmFsdWUoKSwgIixcbiIpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxl
eGlibGVBcHBlbmQoIiAgICAiLCBtYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKGVudW1l
cmF0aW9uTWVtYmVyKSwgIiA9ICIsIGVudW1lcmF0aW9uTWVtYmVyLmdldCgpLnZhbHVlKCksICIs
XG4iKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn07XG4iKTsKICAgICB9IGVsc2Ug
aWYgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpKSB7CiAgICAgICAg
IC8vIE5hdGl2ZSB0eXBlcyBhbHJlYWR5IGhhdmUgZGVmaW5pdGlvbnMuIFRoZXJlJ3Mgbm90aGlu
ZyB0byBkby4KICAgICB9IGVsc2UgaWYgKGlzPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFt
ZWRUeXBlKSkgewogICAgICAgICBhdXRvJiBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gZG93bmNhc3Q8
QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJzdHJ1Y3QgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKHN0cnVj
dHVyZURlZmluaXRpb24pLCAiIHtcbiIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZCgic3RydWN0ICIsIG1hbmdsZWROYW1lRm9yVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9u
KSwgIiB7XG4iKTsKICAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmVFbGVtZW50IDogc3RydWN0
dXJlRGVmaW5pdGlvbi5zdHJ1Y3R1cmVFbGVtZW50cygpKQotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgICIsIG1hbmdsZWROYW1lRm9yVHlwZShzdHJ1Y3R1
cmVFbGVtZW50LnR5cGUoKSksICcgJywgbWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KHN0
cnVjdHVyZUVsZW1lbnQpLCAiO1xuIikpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgiICAgICIsIG1hbmdsZWROYW1lRm9yVHlwZShzdHJ1Y3R1cmVFbGVtZW50LnR5
cGUoKSksICcgJywgbWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KHN0cnVjdHVyZUVsZW1l
bnQpLCAiO1xuIik7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9O1xuIik7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgYXV0byYgdHlwZURlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OlR5
cGVEZWZpbml0aW9uPihuYW1lZFR5cGUpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCht
YWtlU3RyaW5nKCJ0eXBlZGVmICIsIG1hbmdsZWROYW1lRm9yVHlwZSh0eXBlRGVmaW5pdGlvbi50
eXBlKCkpLCAnICcsIG1hbmdsZWROYW1lRm9yVHlwZSh0eXBlRGVmaW5pdGlvbiksICI7XG4iKSk7
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInR5cGVkZWYgIiwgbWFuZ2xl
ZE5hbWVGb3JUeXBlKHR5cGVEZWZpbml0aW9uLnR5cGUoKSksICcgJywgbWFuZ2xlZE5hbWVGb3JU
eXBlKHR5cGVEZWZpbml0aW9uKSwgIjtcbiIpOwogICAgIH0KICAgICBlbWl0dGVkTmFtZWRUeXBl
cy5hZGQoJm5hbWVkVHlwZSk7CiB9CkBAIC00ODcsMTEgKzQ4OSw3IEBAIFN0cmluZyBUeXBlTmFt
ZXI6Om1hbmdsZWROYW1lRm9yU3RydWN0dXIKIFN0cmluZyBUeXBlTmFtZXI6Om1ldGFsVHlwZXMo
KQogewogICAgIFZpc2l0b3I6OnZpc2l0KG1fcHJvZ3JhbSk7Ci0gICAgU3RyaW5nQnVpbGRlciBz
dHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ldGFsVHlwZURlY2xhcmF0
aW9ucygpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChtZXRhbFR5cGVEZWZpbml0aW9ucygpKTsKLSAgICByZXR1cm4gc3RyaW5nQnVp
bGRlci50b1N0cmluZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKG1ldGFsVHlwZURlY2xhcmF0
aW9ucygpLCAnXG4nLCBtZXRhbFR5cGVEZWZpbml0aW9ucygpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgTWV0YWwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCShyZXZpc2lvbiAyNDc4OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2
NiwxNCArMTM2NiwxMiBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bG9nTGF5ZXJJbmZv
CiAgICAgYWJzb2x1dGVCb3VuZHMubW92ZShsYXllci5vZmZzZXRGcm9tQW5jZXN0b3IobV9yZW5k
ZXJWaWV3LmxheWVyKCkpKTsKICAgICAKICAgICBTdHJpbmdCdWlsZGVyIGxvZ1N0cmluZzsKLSAg
ICBsb2dTdHJpbmcuYXBwZW5kKG1ha2VTdHJpbmcocGFkKCcgJywgMTIgKyBkZXB0aCAqIDIsIGhl
eChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJmxheWVyKSkpLCAiIGlkICIsIGJhY2tpbmct
PmdyYXBoaWNzTGF5ZXIoKS0+cHJpbWFyeUxheWVySUQoKSwgIiAoIiwgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFdpZHRoKGFic29sdXRlQm91bmRzLngoKS50b0Zsb2F0KCksIDMpLCAnLCcsIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRXaWR0aChhYnNvbHV0ZUJvdW5kcy55KCkudG9GbG9hdCgpLCAzKSwg
Jy0nLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYWJzb2x1dGVCb3VuZHMubWF4WCgpLnRv
RmxvYXQoKSwgMyksICcsJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGFic29sdXRlQm91
bmRzLm1heFkoKS50b0Zsb2F0KCksIDMpLCAiKSAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lk
dGgoYmFja2luZy0+YmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUoKSAvIDEwMjQsIDIpLCAiS0Ii
KSk7CisgICAgbG9nU3RyaW5nLmZsZXhpYmxlQXBwZW5kKHBhZCgnICcsIDEyICsgZGVwdGggKiAy
LCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCZsYXllcikpKSwgIiBpZCAiLCBiYWNr
aW5nLT5ncmFwaGljc0xheWVyKCktPnByaW1hcnlMYXllcklEKCksICIgKCIsIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRXaWR0aChhYnNvbHV0ZUJvdW5kcy54KCkudG9GbG9hdCgpLCAzKSwgJywnLCBG
b3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYWJzb2x1dGVCb3VuZHMueSgpLnRvRmxvYXQoKSwg
MyksICctJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGFic29sdXRlQm91bmRzLm1heFgo
KS50b0Zsb2F0KCksIDMpLCAnLCcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChhYnNvbHV0
ZUJvdW5kcy5tYXhZKCkudG9GbG9hdCgpLCAzKSwgIikgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFdpZHRoKGJhY2tpbmctPmJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlKCkgLyAxMDI0LCAyKSwg
IktCIik7CiAKICAgICBpZiAoIWxheWVyLnJlbmRlcmVyKCkuc3R5bGUoKS5oYXNBdXRvWkluZGV4
KCkpCi0gICAgICAgIGxvZ1N0cmluZy5hcHBlbmQobWFrZVN0cmluZygiIHotaW5kZXg6ICIsIGxh
eWVyLnJlbmRlcmVyKCkuc3R5bGUoKS56SW5kZXgoKSkpOworICAgICAgICBsb2dTdHJpbmcuZmxl
eGlibGVBcHBlbmQoIiB6LWluZGV4OiAiLCBsYXllci5yZW5kZXJlcigpLnN0eWxlKCkuekluZGV4
KCkpOwogCi0gICAgbG9nU3RyaW5nLmFwcGVuZExpdGVyYWwoIiAoIik7Ci0gICAgbG9nU3RyaW5n
LmFwcGVuZChsb2dSZWFzb25zRm9yQ29tcG9zaXRpbmcobGF5ZXIpKTsKLSAgICBsb2dTdHJpbmcu
YXBwZW5kTGl0ZXJhbCgiKSAiKTsKKyAgICBsb2dTdHJpbmcuZmxleGlibGVBcHBlbmQoIiAoIiwg
bG9nUmVhc29uc0ZvckNvbXBvc2l0aW5nKGxheWVyKSwgIikgIik7CiAKICAgICBpZiAoYmFja2lu
Zy0+Z3JhcGhpY3NMYXllcigpLT5jb250ZW50c09wYXF1ZSgpIHx8IGJhY2tpbmctPnBhaW50c0lu
dG9Db21wb3NpdGVkQW5jZXN0b3IoKSB8fCBiYWNraW5nLT5mb3JlZ3JvdW5kTGF5ZXIoKSB8fCBi
YWNraW5nLT5iYWNrZ3JvdW5kTGF5ZXIoKSkgewogICAgICAgICBsb2dTdHJpbmcuYXBwZW5kKCdb
Jyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAyNDc4
OTMpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUwMDEsNyArNTAwMSw3IEBAIFN0cmluZyBJbnRlcm5hbHM6Om9uZ29pbmdMb2Fkc0Rl
c2NyaXB0aW8KICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1snKTsKIAogICAgICAgICBmb3IgKGF1
dG8mIGluZm8gOiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aW50ZXJt
ZWRpYXRlTG9hZEluZm9ybWF0aW9uRnJvbVJlc291cmNlTG9hZElkZW50aWZpZXIoaWRlbnRpZmll
cikpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJbIiwgKGludClpbmZv
LnR5cGUsICIsXCIiLCBpbmZvLnJlcXVlc3QudXJsKCkuc3RyaW5nKCksICJcIixcIiIsIGluZm8u
cmVxdWVzdC5odHRwTWV0aG9kKCksICJcIiwiLCBpbmZvLnJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCksICJdIikpOworICAgICAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnWycsIChpbnQp
aW5mby50eXBlLCAiLFwiIiwgaW5mby5yZXF1ZXN0LnVybCgpLnN0cmluZygpLCAiXCIsXCIiLCBp
bmZvLnJlcXVlc3QuaHR0cE1ldGhvZCgpLCAiXCIsIiwgaW5mby5yZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpLCAnXScpOwogCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCddJyk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375044</attachid>
            <date>2019-07-28 12:36:54 -0700</date>
            <delta_ts>2019-07-29 12:34:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200034-20190728123653.patch</filename>
            <type>text/plain</type>
            <size>91615</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Nzg5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBACisyMDE5LTA3LTI4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQo
bWFrZVN0cmluZyguLi4pKSBpcyBpbmVmZmljaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMDM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSB1c2VzIG9mIFN0cmluZ0J1aWxkZXI6OmFw
cGVuZChtYWtlU3RyaW5nKC4uLikpIHdpdGggU3RyaW5nQnVpbGRlcjo6ZmxleGlibEFwcGVuZCgu
Li4pLgorICAgICAgICBXaGVyZSBwb3NzaWJsZSwgYWxzbyBtZXJnZWQgY29uc2VjdXRpdmUgY2Fs
bHMgdG8gU3RyaW5nQnVpbGRlcjo6YXBwZW5kKC4uLikgaW50byBhIHNpbmdsZSBjYWxsCisgICAg
ICAgIHRvIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxBcHBlbmQoLi4uKSB0byBhdm9pZCB1bm5lY2Vz
c2FyeSBhZGRpdGlvbmFsIG92ZXJmbG93IGNoZWNrcyBhbmQgcmVzaXplcy4KKyAgICAgICAgQWxz
byB3aGVyZSBwb3NzaWJsZSwgcmVwbGFjZWQgU3RyaW5nQnVpbGRlciB3aXRoIG1ha2VTdHJpbmco
KSBpZiBubyBicmFuY2hpbmcgd2FzIHVzZWQgZHVyaW5nCisgICAgICAgIGNvbnN0cnVjdGlvbi4K
KyAgICAgICAgCisgICAgICAgIEEgbG90IG1vcmUgY2FuIGJlIGRvbmUgdG8gaW1wcm92ZSB0aGUg
ZWZmaWNpZW5jeSBvZiBTdHJpbmdCdWlsZGVyIHVzZSBpbiB0aGUgV0hMU0wgY29kZSBpbmNsdWRp
bmc6CisgICAgICAgIC0gVXNpbmcgU3RyaW5nVmlldyBtb3JlIHByZXZlbGVudGx5LCBlc3BlY2lh
bGx5IHdoZW4gcGFzc2luZyBhIHN1YnN0cmluZyB0byB0aGUgU3RyaW5nQnVpbGRlci4KKyAgICAg
ICAgLSBQYXNzaW5nIGV4aXN0aW5nIFN0cmluZ0J1aWxkZXJzIHRvIGZ1bmN0aW9ucyBmb3IgdGhl
bSB0byB1c2UgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGEgU3RyaW5nIGFuZCAKKyAgICAgICAgICB0
aGVuIGFwcGVuZGluZyB0aGF0IHRvIGFub3RoZXIgU3RyaW5nQnVpbGRlci4KKyAgICAgICAgLSBV
c2luZyBjdXN0b20gU3RyaW5nVHlwZUFkYXB0ZXJzIGZvciBnZW5lcmF0ZWQgbmFtZXMsIHJhdGhl
ciB0aGFuIHN0b3JpbmcgdGhlbSBhcyBTdHJpbmdzLiAKKworICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RW50cnlQb2ludFNjYWZmb2xkaW5nOjpyZXNvdXJjZUhl
bHBlclR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RW50cnlQb2ludFNj
YWZmb2xkaW5nOjpyZXNvdXJjZVNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
TWV0YWw6OkVudHJ5UG9pbnRTY2FmZm9sZGluZzo6YnVpbHRJbnNTaWduYXR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpFbnRyeVBvaW50U2NhZmZvbGRpbmc6Om1hbmdsZWRJ
bnB1dFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc6Om1hbmdsZWRPdXRwdXRQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpN
ZXRhbDo6RW50cnlQb2ludFNjYWZmb2xkaW5nOjp1bnBhY2tSZXNvdXJjZXNBbmROYW1lZEJ1aWx0
SW5zKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6VmVydGV4RW50cnlQb2ludFNj
YWZmb2xkaW5nOjpoZWxwZXJUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6
OlZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6c2lnbmF0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpNZXRhbDo6VmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjp1bnBhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRp
bmc6OnBhY2spOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpGcmFnbWVudEVudHJ5
UG9pbnRTY2FmZm9sZGluZzo6aGVscGVyVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
Ok1ldGFsOjpGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6c2lnbmF0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6
OnVucGFjayk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkZyYWdtZW50RW50cnlQ
b2ludFNjYWZmb2xkaW5nOjpwYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6
Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZzo6c2lnbmF0dXJlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RnVuY3Rpb25EZWNsYXJhdGlvbldyaXRlcjo6dmlzaXQp
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpGdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXI6OkZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
TWV0YWw6OkZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQpOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6Ok1ldGFsOjpGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmVtaXRMb29wKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OmdlbmVyYXRlTWV0YWxDb2Rl
U2hhcmVkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2
ZUZ1bmN0aW9uV3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6d3Jp
dGVOYXRpdmVGdW5jdGlvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwv
V0hMU0xUeXBlTmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNZXRh
bFR5cGVEZWNsYXJhdGlvbldyaXRlcjo6dmlzaXQpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
Ok1ldGFsOjpUeXBlTmFtZXI6OmVtaXRVbm5hbWVkVHlwZURlZmluaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpUeXBlTmFtZXI6OmVtaXROYW1lZFR5cGVEZWZpbml0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6VHlwZU5hbWVyOjptZXRhbFR5cGVz
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6VHlwZXM6OmFwcGVuZE5hbWVUbyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OmxvZ0xheWVySW5mbyk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpvbmdvaW5nTG9hZHNEZXNj
cmlwdGlvbnMgY29uc3QpOgorCiAyMDE5LTA3LTI3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBw
bGUuY29tPgogCiAgICAgICAgIFtXSExTTF0gUmVtb3ZlIFVubmFtZWRUeXBlIGNvcHkvbW92ZSBj
b25zdHJ1Y3RvcnMgYW5kIG1hcmsgY2xhc3NlcyBhcyBmaW5hbApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAkocmV2aXNp
b24gMjQ3ODkzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
YXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsOCArMTU4LDcgQEAgc3RydWN0IFR5cGVz
IHsKIAogICAgIHN0YXRpYyB2b2lkIGFwcGVuZE5hbWVUbyhTdHJpbmdCdWlsZGVyJiBidWlsZGVy
KQogICAgIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoVG9rZW46OnR5cGVOYW1lKHQpKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIiwgIik7CisgICAgICAgIGJ1aWxkZXIuZmxleGlibGVBcHBl
bmQoVG9rZW46OnR5cGVOYW1lKHQpLCAiLCAiKTsKICAgICAgICAgVHlwZXM8dHMuLi4+OjphcHBl
bmROYW1lVG8oYnVpbGRlcik7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TEVudHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAJKHJldmlzaW9uIDI0Nzg5MykKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xk
aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIFN0cmluZyBFbnRyeVBv
aW50U2NhZmZvbGRpbmc6OnJlc291cmNlSGUKIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1
aWxkZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xheW91dC5zaXplKCk7ICsraSkg
ewotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJzdHJ1Y3QgIiwgbV9u
YW1lZEJpbmRHcm91cHNbaV0uc3RydWN0TmFtZSwgIiB7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoInN0cnVjdCAiLCBtX25hbWVkQmluZEdyb3Vwc1tpXS5zdHJ1
Y3ROYW1lLCAiIHtcbiIpOwogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPHVuc2lnbmVkLCBTdHJp
bmc+PiBzdHJ1Y3RJdGVtczsKICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBtX2xheW91
dFtpXS5iaW5kaW5ncy5zaXplKCk7ICsraikgewogICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9
IG1fcmVzb3VyY2VNYXAuZmluZCgmbV9sYXlvdXRbaV0uYmluZGluZ3Nbal0pOwpAQCAtMTcxLDcg
KzE3MSw3IEBAIFN0cmluZyBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OnJlc291cmNlSGUKICAgICAg
ICAgICAgIHJldHVybiBsZWZ0LmZpcnN0IDwgcmlnaHQuZmlyc3Q7CiAgICAgICAgIH0pOwogICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0cnVjdEl0ZW0gOiBzdHJ1Y3RJdGVtcykKLSAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICAiLCBzdHJ1Y3RJdGVtLnNl
Y29uZCwgJ1xuJykpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgi
ICAgICIsIHN0cnVjdEl0ZW0uc2Vjb25kLCAnXG4nKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIn07XG5cbiIpOwogICAgIH0KICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmlu
ZygpOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIE9wdGlvbmFsPFN0cmluZz4gRW50cnlQb2ludFNjYWZm
b2xkaW5nOjoKICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgiLCAiKTsKICAgICAgICAgYXV0byYgbmFtZWRCaW5kR3JvdXAgPSBtX25hbWVkQmluZEdyb3Vw
c1tpXTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiZGV2aWNlICIs
IG5hbWVkQmluZEdyb3VwLnN0cnVjdE5hbWUsICImICIsIG5hbWVkQmluZEdyb3VwLnZhcmlhYmxl
TmFtZSwgIiBbW2J1ZmZlcigiLCBuYW1lZEJpbmRHcm91cC5hcmd1bWVudEJ1ZmZlckluZGV4LCAi
KV1dIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJkZXZpY2UgIiwg
bmFtZWRCaW5kR3JvdXAuc3RydWN0TmFtZSwgIiYgIiwgbmFtZWRCaW5kR3JvdXAudmFyaWFibGVO
YW1lLCAiIFtbYnVmZmVyKCIsIG5hbWVkQmluZEdyb3VwLmFyZ3VtZW50QnVmZmVySW5kZXgsICIp
XV0iKTsKICAgICB9CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAg
LTI0Myw3ICsyNDMsNyBAQCBPcHRpb25hbDxTdHJpbmc+IEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6
CiAgICAgICAgIGlmIChpbnRlcm5hbFR5cGUuaXNOdWxsKCkpCiAgICAgICAgICAgICBpbnRlcm5h
bFR5cGUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKml0ZW0udW5uYW1lZFR5cGUp
OwogICAgICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IG5hbWVkQnVpbHRJbi52YXJpYWJsZU5hbWU7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoaW50ZXJuYWxUeXBlLCAn
ICcsIHZhcmlhYmxlTmFtZSwgJyAnLCBhdHRyaWJ1dGVGb3JTZW1hbnRpYyhidWlsdEluU2VtYW50
aWMpKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoaW50ZXJuYWxUeXBl
LCAnICcsIHZhcmlhYmxlTmFtZSwgJyAnLCBhdHRyaWJ1dGVGb3JTZW1hbnRpYyhidWlsdEluU2Vt
YW50aWMpKTsKICAgICB9CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0K
QEAgLTI3Miw3ICsyNzIsNyBAQCBTdHJpbmcgRW50cnlQb2ludFNjYWZmb2xkaW5nOjptYW5nbGVk
SW5wCiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKICAgICAgICAgYXV0byog
bmV4dCA9IHN0cnVjdHVyZURlZmluaXRpb24tPmZpbmQocGF0aFtpXSk7CiAgICAgICAgIEFTU0VS
VChuZXh0KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygnLicsIG1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudCgqbmV4dCkpKTsKKyAgICAg
ICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnLicsIG1fdHlwZU5hbWVyLm1hbmdsZWRO
YW1lRm9yU3RydWN0dXJlRWxlbWVudCgqbmV4dCkpOwogICAgICAgICBzdHJ1Y3R1cmVEZWZpbml0
aW9uID0gbnVsbHB0cjsKICAgICAgICAgYXV0byYgdW5pZnlOb2RlID0gbmV4dC0+dHlwZSgpLnVu
aWZ5Tm9kZSgpOwogICAgICAgICBpZiAoaXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpIHsK
QEAgLTI5Niw3ICsyOTYsNyBAQCBTdHJpbmcgRW50cnlQb2ludFNjYWZmb2xkaW5nOjptYW5nbGVk
T3V0CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKICAgICAgICAgYXV0byog
bmV4dCA9IHN0cnVjdHVyZURlZmluaXRpb24tPmZpbmQoY29tcG9uZW50KTsKICAgICAgICAgQVNT
RVJUKG5leHQpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCcuJywg
bV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpuZXh0KSkpOworICAg
ICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCcuJywgbV90eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpuZXh0KSk7CiAgICAgICAgIHN0cnVjdHVyZURlZmlu
aXRpb24gPSBudWxscHRyOwogICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSBuZXh0LT50eXBlKCku
dW5pZnlOb2RlKCk7CiAgICAgICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKSkg
ewpAQCAtMzEzLDcgKzMxMyw3IEBAIFN0cmluZyBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OnVucGFj
a1Jlc28KIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV90eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKCptX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0t
PnR5cGUoKSksICcgJywgbV9wYXJhbWV0ZXJWYXJpYWJsZXNbaV0sICI7XG4iKSk7CisgICAgICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JU
eXBlKCptX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0tPnR5cGUoKSksICcgJywg
bV9wYXJhbWV0ZXJWYXJpYWJsZXNbaV0sICI7XG4iKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9sYXlvdXQuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byB2YXJpYWJsZU5hbWUg
PSBtX25hbWVkQmluZEdyb3Vwc1tpXS52YXJpYWJsZU5hbWU7CkBAIC0zMzAsMTYgKzMzMCwxOCBA
QCBTdHJpbmcgRW50cnlQb2ludFNjYWZmb2xkaW5nOjp1bnBhY2tSZXNvCiAgICAgICAgICAgICAg
ICAgYXV0byYgdW5uYW1lZFR5cGUgPSAqbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW2l0ZXJhdG9y
LT52YWx1ZV0udW5uYW1lZFR5cGU7CiAgICAgICAgICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5h
bWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZG93bmNhc3Q8QVNUOjpSZWZlcmVu
Y2VUeXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKSk7CiAKLSAgICAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJzaXplX3QgIiwgbGVuZ3RoVGVtcG9yYXJ5
TmFtZSwgIiA9ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBsZW5ndGhFbGVtZW50TmFtZSwgIi55O1xu
IikpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobGVu
Z3RoVGVtcG9yYXJ5TmFtZSwgIiA9ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPDwgMzI7XG4i
KSk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhsZW5n
dGhUZW1wb3JhcnlOYW1lLCAiID0gIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiB8ICIsIHZhcmlh
YmxlTmFtZSwgJy4nLCBsZW5ndGhFbGVtZW50TmFtZSwgIi54O1xuIikpOwotICAgICAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobGVuZ3RoVGVtcG9yYXJ5TmFtZSwg
IiA9ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgLyBzaXplb2YoIiwgbWFuZ2xlZFR5cGVOYW1l
LCAiKTtcbiIpKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3Ry
aW5nKCJpZiAoIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA+IDB4RkZGRkZGRkYpICIsIGxlbmd0
aFRlbXBvcmFyeU5hbWUsICIgPSAweEZGRkZGRkZGO1xuIikpOwotICAgICAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWFuZ2xlZElucHV0UGF0aChwYXRoKSwgIiA9
IHsgIiwgdmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiLCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIikgfTtcbiIpKTsKKyAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAic2l6
ZV90ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPSAiLCB2YXJpYWJsZU5hbWUsICcuJywgbGVu
Z3RoRWxlbWVudE5hbWUsICIueTtcbiIsCisgICAgICAgICAgICAgICAgICAgIGxlbmd0aFRlbXBv
cmFyeU5hbWUsICIgPSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiIDw8IDMyO1xuIiwKKyAgICAg
ICAgICAgICAgICAgICAgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9ICIsIGxlbmd0aFRlbXBvcmFy
eU5hbWUsICIgfCAiLCB2YXJpYWJsZU5hbWUsICcuJywgbGVuZ3RoRWxlbWVudE5hbWUsICIueDtc
biIsCisgICAgICAgICAgICAgICAgICAgIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPSAiLCBsZW5n
dGhUZW1wb3JhcnlOYW1lLCAiIC8gc2l6ZW9mKCIsIG1hbmdsZWRUeXBlTmFtZSwgIik7XG4iLAor
ICAgICAgICAgICAgICAgICAgICAiaWYgKCIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPiAweEZG
RkZGRkZGKSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gMHhGRkZGRkZGRjtcbiIsCisgICAg
ICAgICAgICAgICAgICAgIG1hbmdsZWRJbnB1dFBhdGgocGF0aCksICIgPSB7ICIsIHZhcmlhYmxl
TmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCIsIGxlbmd0
aFRlbXBvcmFyeU5hbWUsICIpIH07XG4iCisgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1z
LmlucHV0c1tpdGVyYXRvci0+dmFsdWVdLnBhdGg7CiAgICAgICAgICAgICAgICAgYXV0byBlbGVt
ZW50TmFtZSA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5hbWVkQmluZGluZ3Nbal0uZWxlbWVudE5h
bWU7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5n
bGVkSW5wdXRQYXRoKHBhdGgpLCAiID0gIiwgdmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1l
LCAiO1xuIikpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
bWFuZ2xlZElucHV0UGF0aChwYXRoKSwgIiA9ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50
TmFtZSwgIjtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMzQ5LDcg
KzM1MSw3IEBAIFN0cmluZyBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OnVucGFja1Jlc28KICAgICAg
ICAgYXV0byYgcGF0aCA9IGl0ZW0ucGF0aDsKICAgICAgICAgYXV0byYgdmFyaWFibGVOYW1lID0g
bmFtZWRCdWlsdEluLnZhcmlhYmxlTmFtZTsKICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUg
PSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKml0ZW0udW5uYW1lZFR5cGUpOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1hbmdsZWRJbnB1dFBhdGgocGF0
aCksICIgPSAiLCBtYW5nbGVkVHlwZU5hbWUsICcoJywgdmFyaWFibGVOYW1lLCAiKTtcbiIpKTsK
KyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkSW5wdXRQYXRoKHBh
dGgpLCAiID0gIiwgbWFuZ2xlZFR5cGVOYW1lLCAnKCcsIHZhcmlhYmxlTmFtZSwgIik7XG4iKTsK
ICAgICB9CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAgLTM4Nywy
NiArMzg5LDI4IEBAIFN0cmluZyBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmhlbHAKIHsK
ICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAKLSAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChtYWtlU3RyaW5nKCJzdHJ1Y3QgIiwgbV9zdGFnZUluU3RydWN0TmFtZSwgIiB7XG4iKSk7
CisgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgic3RydWN0ICIsIG1fc3RhZ2VJblN0
cnVjdE5hbWUsICIge1xuIik7CiAgICAgZm9yIChhdXRvJiBuYW1lZFN0YWdlSW4gOiBtX25hbWVk
U3RhZ2VJbnMpIHsKICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5t
YW5nbGVkTmFtZUZvclR5cGUoKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4u
aW5kZXhJbkVudHJ5UG9pbnRJdGVtc10udW5uYW1lZFR5cGUpOwogICAgICAgICBhdXRvIGVsZW1l
bnROYW1lID0gbmFtZWRTdGFnZUluLmVsZW1lbnROYW1lOwogICAgICAgICBhdXRvIGF0dHJpYnV0
ZUluZGV4ID0gbmFtZWRTdGFnZUluLmF0dHJpYnV0ZUluZGV4OwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgIiwgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIGVsZW1l
bnROYW1lLCAiIFtbYXR0cmlidXRlKCIsIGF0dHJpYnV0ZUluZGV4LCAiKV1dO1xuIikpOworICAg
ICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgIiwgbWFuZ2xlZFR5cGVOYW1l
LCAnICcsIGVsZW1lbnROYW1lLCAiIFtbYXR0cmlidXRlKCIsIGF0dHJpYnV0ZUluZGV4LCAiKV1d
O1xuIik7CiAgICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9O1xuXG4iKTsKLQotICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInN0cnVjdCAiLCBtX3JldHVyblN0cnVj
dE5hbWUsICIge1xuIikpOworICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAg
ICAgICJ9O1xuXG4iCisgICAgICAgICJzdHJ1Y3QgIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAiIHtc
biIKKyAgICApOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMu
b3V0cHV0cy5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvJiBvdXRwdXRJdGVtID0gbV9lbnRy
eVBvaW50SXRlbXMub3V0cHV0c1tpXTsKICAgICAgICAgYXV0byYgaW50ZXJuYWxUeXBlTmFtZSA9
IG1fbmFtZWRPdXRwdXRzW2ldLmludGVybmFsVHlwZU5hbWU7CiAgICAgICAgIGF1dG8gZWxlbWVu
dE5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5lbGVtZW50TmFtZTsKICAgICAgICAgYXV0byBhdHRy
aWJ1dGUgPSBhdHRyaWJ1dGVGb3JTZW1hbnRpYygqb3V0cHV0SXRlbS5zZW1hbnRpYyk7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICAiLCBpbnRlcm5hbFR5cGVO
YW1lLCAnICcsIGVsZW1lbnROYW1lLCAnICcsIGF0dHJpYnV0ZSwgIjtcbiIpKTsKKyAgICAgICAg
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIGludGVybmFsVHlwZU5hbWUsICcg
JywgZWxlbWVudE5hbWUsICcgJywgYXR0cmlidXRlLCAiO1xuIik7CiAgICAgfQotICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCJ9O1xuXG4iKTsKLQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJl
c291cmNlSGVscGVyVHlwZXMoKSk7CisgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgK
KyAgICAgICAgIn07XG5cbiIsCisgICAgICAgIHJlc291cmNlSGVscGVyVHlwZXMoKQorICAgICk7
CiAKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQpAQCAtNDE1LDEyICs0
MTksMTIgQEAgU3RyaW5nIFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6c2lnbgogewogICAg
IFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKIAotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KG1ha2VTdHJpbmcoInZlcnRleCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICcgJywgZnVuY3Rpb25O
YW1lLCAnKCcsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICcgJywgbV9zdGFnZUluUGFyYW1ldGVyTmFt
ZSwgIiBbW3N0YWdlX2luXV0iKSk7CisgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgi
dmVydGV4ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBmdW5jdGlvbk5hbWUsICcoJywgbV9z
dGFnZUluU3RydWN0TmFtZSwgJyAnLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAiIFtbc3RhZ2Vf
aW5dXSIpOwogICAgIGlmIChhdXRvIHJlc291cmNlU2lnbmF0dXJlID0gdGhpcy0+cmVzb3VyY2VT
aWduYXR1cmUoKSkKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiLCAi
LCAqcmVzb3VyY2VTaWduYXR1cmUpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgiLCAiLCAqcmVzb3VyY2VTaWduYXR1cmUpOwogICAgIGlmIChhdXRvIGJ1aWx0SW5zU2ln
bmF0dXJlID0gdGhpcy0+YnVpbHRJbnNTaWduYXR1cmUoKSkKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQobWFrZVN0cmluZygiLCAiLCAqYnVpbHRJbnNTaWduYXR1cmUpKTsKLSAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiKSIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKCIsICIsICpidWlsdEluc1NpZ25hdHVyZSk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
JyknKTsKIAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC00MzQs
NyArNDM4LDcgQEAgU3RyaW5nIFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6dW5wYQogICAg
IGZvciAoYXV0byYgbmFtZWRTdGFnZUluIDogbV9uYW1lZFN0YWdlSW5zKSB7CiAgICAgICAgIGF1
dG8mIHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5F
bnRyeVBvaW50SXRlbXNdLnBhdGg7CiAgICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbmFtZWRT
dGFnZUluLmVsZW1lbnROYW1lOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3Ry
aW5nKG1hbmdsZWRJbnB1dFBhdGgocGF0aCksICIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1l
LCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKG1hbmdsZWRJbnB1dFBhdGgocGF0aCksICIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0
ZXJOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIik7CiAgICAgfQogCiAgICAgcmV0dXJuIHN0
cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTQ0MywxNyArNDQ3LDE4IEBAIFN0cmluZyBWZXJ0
ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OnVucGEKIFN0cmluZyBWZXJ0ZXhFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc6OnBhY2soY29uc3QgU3RyaW5nJiBpbnB1dFZhcmlhYmxlTmFtZSwgY29uc3QgU3Ry
aW5nJiBvdXRwdXRWYXJpYWJsZU5hbWUpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWls
ZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV9yZXR1cm5TdHJ1Y3RO
YW1lLCAnICcsIG91dHB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpKTsKKworICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQobV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIG91dHB1dFZhcmlhYmxl
TmFtZSwgIjtcbiIpOwogICAgIGlmIChtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKSA9
PSAxICYmICFtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzWzBdLnBhdGguc2l6ZSgpKSB7CiAgICAg
ICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNbMF0uZWxlbWVudE5hbWU7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcob3V0cHV0VmFyaWFibGVOYW1l
LCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW5wdXRWYXJpYWJsZU5hbWUsICI7XG4iKSk7Cisg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQob3V0cHV0VmFyaWFibGVOYW1lLCAn
LicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW5wdXRWYXJpYWJsZU5hbWUsICI7XG4iKTsKICAgICAg
ICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7
CiAgICAgICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5pbnRl
cm5hbFR5cGVOYW1lOwogICAgICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMub3V0
cHV0c1tpXS5wYXRoOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG91
dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGludGVybmFsVHlwZU5h
bWUsICcoJywgaW5wdXRWYXJpYWJsZU5hbWUsIG1hbmdsZWRPdXRwdXRQYXRoKHBhdGgpLCAiKTtc
biIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChvdXRwdXRWYXJpYWJs
ZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnKCcsIGlu
cHV0VmFyaWFibGVOYW1lLCBtYW5nbGVkT3V0cHV0UGF0aChwYXRoKSwgIik7XG4iKTsKICAgICB9
CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAgLTQ5MywyNiArNDk4
LDI4IEBAIFN0cmluZyBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6aGUKIHsKICAgICBT
dHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCht
YWtlU3RyaW5nKCJzdHJ1Y3QgIiwgbV9zdGFnZUluU3RydWN0TmFtZSwgIiB7XG4iKSk7CisgICAg
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgic3RydWN0ICIsIG1fc3RhZ2VJblN0cnVjdE5h
bWUsICIge1xuIik7CiAgICAgZm9yIChhdXRvJiBuYW1lZFN0YWdlSW4gOiBtX25hbWVkU3RhZ2VJ
bnMpIHsKICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUoKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4uaW5kZXhJ
bkVudHJ5UG9pbnRJdGVtc10udW5uYW1lZFR5cGUpOwogICAgICAgICBhdXRvIGVsZW1lbnROYW1l
ID0gbmFtZWRTdGFnZUluLmVsZW1lbnROYW1lOwogICAgICAgICBhdXRvIGF0dHJpYnV0ZUluZGV4
ID0gbmFtZWRTdGFnZUluLmF0dHJpYnV0ZUluZGV4OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChtYWtlU3RyaW5nKCIgICAgIiwgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1l
LCAiIFtbdXNlcih1c2VyIiwgYXR0cmlidXRlSW5kZXgsICIpXV07XG4iKSk7CisgICAgICAgIHN0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICAiLCBtYW5nbGVkVHlwZU5hbWUsICcgJywg
ZWxlbWVudE5hbWUsICIgW1t1c2VyKHVzZXIiLCBhdHRyaWJ1dGVJbmRleCwgIildXTtcbiIpOwog
ICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifTtcblxuIik7Ci0KLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJzdHJ1Y3QgIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAi
IHtcbiIpKTsKKyAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAifTtc
blxuIgorICAgICAgICAic3RydWN0ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgIiB7XG4iCisgICAg
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byYgb3V0cHV0SXRlbSA9IG1fZW50cnlQb2ludEl0
ZW1zLm91dHB1dHNbaV07CiAgICAgICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25hbWVk
T3V0cHV0c1tpXS5pbnRlcm5hbFR5cGVOYW1lOwogICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0g
bV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7CiAgICAgICAgIGF1dG8gYXR0cmlidXRlID0g
YXR0cmlidXRlRm9yU2VtYW50aWMoKm91dHB1dEl0ZW0uc2VtYW50aWMpOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgIiwgaW50ZXJuYWxUeXBlTmFtZSwgJyAn
LCBlbGVtZW50TmFtZSwgJyAnLCBhdHRyaWJ1dGUsICI7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnICcsIGVsZW1l
bnROYW1lLCAnICcsIGF0dHJpYnV0ZSwgIjtcbiIpOwogICAgIH0KLSAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgifTtcblxuIik7Ci0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyZXNvdXJjZUhl
bHBlclR5cGVzKCkpOworICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAg
ICJ9O1xuXG4iLAorICAgICAgICByZXNvdXJjZUhlbHBlclR5cGVzKCkKKyAgICApOwogCiAgICAg
cmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAgLTUyMSwxMiArNTI4LDEyIEBA
IFN0cmluZyBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6c2kKIHsKICAgICBTdHJpbmdC
dWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3Ry
aW5nKCJmcmFnbWVudCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICcgJywgZnVuY3Rpb25OYW1lLCAn
KCcsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICcgJywgbV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgIiBb
W3N0YWdlX2luXV0iKSk7CisgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiZnJhZ21l
bnQgIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIGZ1bmN0aW9uTmFtZSwgJygnLCBtX3N0YWdl
SW5TdHJ1Y3ROYW1lLCAnICcsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICIgW1tzdGFnZV9pbl1d
Iik7CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VTaWduYXR1cmUgPSB0aGlzLT5yZXNvdXJjZVNpZ25h
dHVyZSgpKQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIsICIsICpy
ZXNvdXJjZVNpZ25hdHVyZSkpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KCIsICIsICpyZXNvdXJjZVNpZ25hdHVyZSk7CiAgICAgaWYgKGF1dG8gYnVpbHRJbnNTaWduYXR1
cmUgPSB0aGlzLT5idWlsdEluc1NpZ25hdHVyZSgpKQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChtYWtlU3RyaW5nKCIsICIsICpidWlsdEluc1NpZ25hdHVyZSkpOwotICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCIpIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
IiwgIiwgKmJ1aWx0SW5zU2lnbmF0dXJlKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScp
OwogCiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAgLTU0MCw3ICs1
NDcsNyBAQCBTdHJpbmcgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OnVuCiAgICAgZm9y
IChhdXRvJiBuYW1lZFN0YWdlSW4gOiBtX25hbWVkU3RhZ2VJbnMpIHsKICAgICAgICAgYXV0byYg
cGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5
UG9pbnRJdGVtc10ucGF0aDsKICAgICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBuYW1lZFN0YWdl
SW4uZWxlbWVudE5hbWU7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmco
bWFuZ2xlZElucHV0UGF0aChwYXRoKSwgIiA9ICIsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICcu
JywgZWxlbWVudE5hbWUsICI7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQobWFuZ2xlZElucHV0UGF0aChwYXRoKSwgIiA9ICIsIG1fc3RhZ2VJblBhcmFtZXRlck5h
bWUsICcuJywgZWxlbWVudE5hbWUsICI7XG4iKTsKICAgICB9CiAKICAgICByZXR1cm4gc3RyaW5n
QnVpbGRlci50b1N0cmluZygpOwpAQCAtNTQ5LDE3ICs1NTYsMTggQEAgU3RyaW5nIEZyYWdtZW50
RW50cnlQb2ludFNjYWZmb2xkaW5nOjp1bgogU3RyaW5nIEZyYWdtZW50RW50cnlQb2ludFNjYWZm
b2xkaW5nOjpwYWNrKGNvbnN0IFN0cmluZyYgaW5wdXRWYXJpYWJsZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgb3V0cHV0VmFyaWFibGVOYW1lKQogewogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRl
cjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1fcmV0dXJuU3RydWN0TmFt
ZSwgJyAnLCBvdXRwdXRWYXJpYWJsZU5hbWUsICI7XG4iKSk7CisKKyAgICBzdHJpbmdCdWlsZGVy
LmZsZXhpYmxlQXBwZW5kKG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBvdXRwdXRWYXJpYWJsZU5h
bWUsICI7XG4iKTsKICAgICBpZiAobV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCkgPT0g
MSAmJiAhbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1swXS5wYXRoLnNpemUoKSkgewogICAgICAg
ICBhdXRvJiBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzWzBdLmVsZW1lbnROYW1lOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG91dHB1dFZhcmlhYmxlTmFtZSwg
Jy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGlucHV0VmFyaWFibGVOYW1lLCAiO1xuIikpOworICAg
ICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG91dHB1dFZhcmlhYmxlTmFtZSwgJy4n
LCBlbGVtZW50TmFtZSwgIiA9ICIsIGlucHV0VmFyaWFibGVOYW1lLCAiO1xuIik7CiAgICAgICAg
IHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkgewogICAg
ICAgICBhdXRvJiBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVsZW1lbnROYW1lOwog
ICAgICAgICBhdXRvJiBpbnRlcm5hbFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJu
YWxUeXBlTmFtZTsKICAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1
dHNbaV0ucGF0aDsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhvdXRw
dXRWYXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnRlcm5hbFR5cGVOYW1l
LCAnKCcsIGlucHV0VmFyaWFibGVOYW1lLCBtYW5nbGVkT3V0cHV0UGF0aChwYXRoKSwgIik7XG4i
KSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQob3V0cHV0VmFyaWFibGVO
YW1lLCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW50ZXJuYWxUeXBlTmFtZSwgJygnLCBpbnB1
dFZhcmlhYmxlTmFtZSwgbWFuZ2xlZE91dHB1dFBhdGgocGF0aCksICIpO1xuIik7CiAgICAgfQog
ICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC01NzgsMTggKzU4Niwx
OCBAQCBTdHJpbmcgQ29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZzo6c2lnCiB7CiAgICAgU3Ry
aW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogCi0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFr
ZVN0cmluZygia2VybmVsIHZvaWQgIiwgZnVuY3Rpb25OYW1lLCAnKCcpKTsKKyAgICBzdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJrZXJuZWwgdm9pZCAiLCBmdW5jdGlvbk5hbWUsICcoJyk7
CiAgICAgYm9vbCBlbXB0eSA9IHRydWU7CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VTaWduYXR1cmUg
PSB0aGlzLT5yZXNvdXJjZVNpZ25hdHVyZSgpKSB7CiAgICAgICAgIGVtcHR5ID0gZmFsc2U7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoKnJlc291cmNlU2lnbmF0dXJl
KSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCpyZXNvdXJjZVNpZ25hdHVyZSk7CiAg
ICAgfQogICAgIGlmIChhdXRvIGJ1aWx0SW5zU2lnbmF0dXJlID0gdGhpcy0+YnVpbHRJbnNTaWdu
YXR1cmUoKSkgewogICAgICAgICBpZiAoIWVtcHR5KQogICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIiwgIik7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCpidWlsdEluc1Np
Z25hdHVyZSk7CiAgICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIik7CisgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoJyknKTsKIAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3Ry
aW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAkocmV2aXNp
b24gMjQ3ODkzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwv
V0hMU0xGdW5jdGlvbldyaXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAg
dm9pZCBGdW5jdGlvbkRlY2xhcmF0aW9uV3JpdGVyOjp2aXNpdChBUwogCiAgICAgYXV0byBpdGVy
YXRvciA9IG1fZnVuY3Rpb25NYXBwaW5nLmZpbmQoJmZ1bmN0aW9uRGVjbGFyYXRpb24pOwogICAg
IEFTU0VSVChpdGVyYXRvciAhPSBtX2Z1bmN0aW9uTWFwcGluZy5lbmQoKSk7Ci0gICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlw
ZShmdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgaXRlcmF0b3ItPnZhbHVlLCAnKCcp
KTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKGZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCBpdGVyYXRvci0+
dmFsdWUsICcoJyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbkRlY2xhcmF0
aW9uLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoaSkKICAgICAgICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7CkBAIC05MSwxNCArOTEsMTQgQEAgcHVi
bGljOgogICAgICAgICAsIG1fZnVuY3Rpb25NYXBwaW5nKGZ1bmN0aW9uTWFwcGluZykKICAgICAg
ICAgLCBtX2xheW91dChsYXlvdXQpCiAgICAgewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1ha2VTdHJpbmcoCisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgK
ICAgICAgICAgICAgICJ0ZW1wbGF0ZSA8dHlwZW5hbWUgVD5cbiIKICAgICAgICAgICAgICJpbmxp
bmUgdm9pZCAiLCBtZW1zZXRaZXJvRnVuY3Rpb25OYW1lLCAiKHRocmVhZCBUJiB2YWx1ZSlcbiIK
ICAgICAgICAgICAgICJ7XG4iCiAgICAgICAgICAgICAiICAgIHRocmVhZCBjaGFyKiBwdHIgPSBz
dGF0aWNfY2FzdDx0aHJlYWQgY2hhcio+KHN0YXRpY19jYXN0PHRocmVhZCB2b2lkKj4oJnZhbHVl
KSk7XG4iCiAgICAgICAgICAgICAiICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKFQp
OyArK2kpXG4iCiAgICAgICAgICAgICAiICAgICAgICBwdHJbaV0gPSAwO1xuIgotICAgICAgICAg
ICAgIn1cbiIpKTsKKyAgICAgICAgICAgICJ9XG4iKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29u
c3RleHByIGNvbnN0IGNoYXIqIG1lbXNldFplcm9GdW5jdGlvbk5hbWUgPSAibWVtc2V0WmVybyI7
CkBAIC0yMjksMTAgKzIyOSwxMSBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlz
aXQoQVNUCiAgICAgICAgIGlmICghZW50cnlQb2ludFNjYWZmb2xkaW5nKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZyA9IFdURk1vdmUoZW50cnlQ
b2ludFNjYWZmb2xkaW5nKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2VudHJ5
UG9pbnRTY2FmZm9sZGluZy0+aGVscGVyVHlwZXMoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoJ1xuJyk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmlu
ZyhtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+c2lnbmF0dXJlKGl0ZXJhdG9yLT52YWx1ZSksICIg
e1xuIikpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1fZW50cnlQb2ludFNjYWZm
b2xkaW5nLT51bnBhY2soKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgKKyAgICAgICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xkaW5nLT5oZWxwZXJUeXBlcygpLCAn
XG4nLAorICAgICAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmctPnNpZ25hdHVyZShpdGVy
YXRvci0+dmFsdWUpLCAiIHtcbiIsCisgICAgICAgICAgICBtX2VudHJ5UG9pbnRTY2FmZm9sZGlu
Zy0+dW5wYWNrKCkKKyAgICAgICAgKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBm
dW5jdGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fdmFyaWFibGVNYXBwaW5nLmFkZCgmZnVuY3Rpb25EZWZpbml0
aW9uLnBhcmFtZXRlcnMoKVtpXSwgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmctPnBhcmFtZXRlclZh
cmlhYmxlcygpW2ldKTsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRS
ZXN1bHQuaXNOZXdFbnRyeSk7CkBAIC0yNDMsNyArMjQ0LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgICAgICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZyA9
IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1fZW50cnlQb2ludFNjYWZm
b2xkaW5nID09IG51bGxwdHIpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VT
dHJpbmcobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGZ1bmN0aW9uRGVmaW5pdGlvbi50
eXBlKCkpLCAnICcsIGl0ZXJhdG9yLT52YWx1ZSwgJygnKSk7CisgICAgICAgIG1fc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZnVuY3Rp
b25EZWZpbml0aW9uLnR5cGUoKSksICcgJywgaXRlcmF0b3ItPnZhbHVlLCAnKCcpOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCku
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGF1dG8mIHBhcmFtZXRlciA9IGZ1bmN0aW9uRGVm
aW5pdGlvbi5wYXJhbWV0ZXJzKClbaV07CiAgICAgICAgICAgICBpZiAoaSkKQEAgLTI1MSw3ICsy
NTIsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgICAg
ICAgICBhdXRvIHBhcmFtZXRlck5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAg
ICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV92YXJpYWJsZU1hcHBpbmcuYWRkKCZwYXJhbWV0
ZXIsIHBhcmFtZXRlck5hbWUpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQobWFrZVN0cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKnBhcmFtZXRlci0+
dHlwZSgpKSwgJyAnLCBwYXJhbWV0ZXJOYW1lKSk7CisgICAgICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpwYXJhbWV0
ZXItPnR5cGUoKSksICcgJywgcGFyYW1ldGVyTmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgiKSB7XG4iKTsKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGZ1bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpKTsKQEAgLTI4Nyw4ICsyODgsMTAgQEAgdm9pZCBG
dW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgICAgICBicmVhazsKICAgICBj
YXNlIEJyZWFrQ29udGV4dDo6TG9vcDoKICAgICAgICAgQVNTRVJUKG1fYnJlYWtPdXRPZkN1cnJl
bnRMb29wRWFybHlWYXJpYWJsZS5sZW5ndGgoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZyhtX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsICIg
PSB0cnVlO1xuIikpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJicmVhaztcbiIp
OworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBt
X2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsICIgPSB0cnVlO1xuIgorICAgICAg
ICAgICAgImJyZWFrO1xuIgorICAgICAgICApOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBA
IC0zMTQsMjAgKzMxNywyMyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6ZW1pdExv
b3AoCiB7CiAgICAgU2V0Rm9yU2NvcGU8U3RyaW5nPiBsb29wVmFyaWFibGVTY29wZShtX2JyZWFr
T3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsIGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgp
KTsKIAotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiYm9vbCAiLCBtX2Jy
ZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsICIgPSBmYWxzZTtcbiIpKTsKLQotICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIndoaWxlICh0cnVlKSB7XG4iKTsKKyAgICBtX3N0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICJib29sICIsIG1fYnJlYWtPdXRPZkN1
cnJlbnRMb29wRWFybHlWYXJpYWJsZSwgIiA9IGZhbHNlO1xuIiwKKyAgICAgICAgIndoaWxlICh0
cnVlKSB7XG4iCisgICAgKTsKIAogICAgIGlmIChsb29wQ29uZGl0aW9uTG9jYXRpb24gPT0gTG9v
cENvbmRpdGlvbkxvY2F0aW9uOjpCZWZvcmVCb2R5ICYmIGNvbmRpdGlvbkV4cHJlc3Npb24pIHsK
ICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpjb25kaXRpb25FeHByZXNzaW9uKTsKLSAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJpZiAoISIsIHRha2VMYXN0VmFs
dWUoKSwgIikgYnJlYWs7XG4iKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgiaWYgKCEiLCB0YWtlTGFzdFZhbHVlKCksICIpIGJyZWFrO1xuIik7CiAgICAgfQogCiAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiZG8ge1xuIik7CiAgICAgU2V0Rm9yU2NvcGU8T3B0
aW9uYWw8QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4dCwg
QnJlYWtDb250ZXh0OjpMb29wKTsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYm9keSk7Ci0gICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgifSB3aGlsZShmYWxzZSk7IFxuIik7Ci0gICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJpZiAoIiwgbV9icmVha091dE9mQ3VycmVudExv
b3BFYXJseVZhcmlhYmxlLCAiKSBicmVhaztcbiIpKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxl
eGlibGVBcHBlbmQoCisgICAgICAgICJ9IHdoaWxlKGZhbHNlKTsgXG4iCisgICAgICAgICJpZiAo
IiwgbV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCAiKSBicmVhaztcbiIKKyAg
ICApOwogCiAgICAgaWYgKGluY3JlbWVudCkgewogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
KmluY3JlbWVudCk7CkBAIC0zMzgsNyArMzQ0LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXI6OmVtaXRMb29wKAogCiAgICAgaWYgKGxvb3BDb25kaXRpb25Mb2NhdGlvbiA9PSBMb29w
Q29uZGl0aW9uTG9jYXRpb246OkFmdGVyQm9keSAmJiBjb25kaXRpb25FeHByZXNzaW9uKSB7CiAg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqY29uZGl0aW9uRXhwcmVzc2lvbik7Ci0gICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiaWYgKCEiLCB0YWtlTGFzdFZhbHVl
KCksICIpIGJyZWFrO1xuIikpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoImlmICghIiwgdGFrZUxhc3RWYWx1ZSgpLCAiKSBicmVhaztcbiIpOwogICAgIH0KIAogICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIn0gXG4iKTsKQEAgLTM3Miw3ICszNzgsNyBAQCB2b2lk
IEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiB2b2lkIEZ1bmN0aW9uRGVmaW5p
dGlvbldyaXRlcjo6dmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpCiB7CiAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmNvbmRpdGlvbmFsKCkpOwotICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiaWYgKCIsIHRha2VMYXN0VmFsdWUoKSwgIikg
e1xuIikpOworICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiaWYgKCIsIHRha2VM
YXN0VmFsdWUoKSwgIikge1xuIik7CiAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50
LmJvZHkoKSk7CiAgICAgaWYgKGlmU3RhdGVtZW50LmVsc2VCb2R5KCkpIHsKICAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgifSBlbHNlIHtcbiIpOwpAQCAtMzg3LDEwICszOTMsMTIgQEAg
dm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoKnJldHVyblN0YXRlbWVudC52YWx1ZSgpKTsKICAgICAgICAgaWYgKG1fZW50
cnlQb2ludFNjYWZmb2xkaW5nKSB7CiAgICAgICAgICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdl
bmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZChtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+cGFjayh0YWtlTGFzdFZhbHVlKCksIHZhcmlh
YmxlTmFtZSkpOwotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5n
KCJyZXR1cm4gIiwgdmFyaWFibGVOYW1lLCAiO1xuIikpOworICAgICAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgICAgIG1fZW50cnlQb2ludFNjYWZm
b2xkaW5nLT5wYWNrKHRha2VMYXN0VmFsdWUoKSwgdmFyaWFibGVOYW1lKSwKKyAgICAgICAgICAg
ICAgICAicmV0dXJuICIsIHZhcmlhYmxlTmFtZSwgIjtcbiIKKyAgICAgICAgICAgICk7CiAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5n
KCJyZXR1cm4gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xuIikpOworICAgICAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJyZXR1cm4gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xu
Iik7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInJldHVybjtc
biIpOwogfQpAQCAtMzk5LDcgKzQwNyw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
Ojp2aXNpdChBU1QKIHsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoU3RhdGVtZW50LnZh
bHVlKCkpOwogCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJzd2l0Y2gg
KCIsIHRha2VMYXN0VmFsdWUoKSwgIikgeyIpKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoInN3aXRjaCAoIiwgdGFrZUxhc3RWYWx1ZSgpLCAiKSB7Iik7CiAgICAgZm9yIChh
dXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2VzKCkpCiAgICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNlKTsKICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJ9XG4iKTsKQEAgLTQwOCw3ICs0MTYsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlcjo6dmlzaXQoQVNUCiB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNU
OjpTd2l0Y2hDYXNlJiBzd2l0Y2hDYXNlKQogewogICAgIGlmIChzd2l0Y2hDYXNlLnZhbHVlKCkp
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiY2FzZSAiLCBjb25z
dGFudEV4cHJlc3Npb25TdHJpbmcoKnN3aXRjaENhc2UudmFsdWUoKSksICI6XG4iKSk7CisgICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiY2FzZSAiLCBjb25zdGFudEV4cHJl
c3Npb25TdHJpbmcoKnN3aXRjaENhc2UudmFsdWUoKSksICI6XG4iKTsKICAgICBlbHNlCiAgICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImRlZmF1bHQ6XG4iKTsKICAgICBTZXRGb3JTY29w
ZTxPcHRpb25hbDxCcmVha0NvbnRleHQ+PiBicmVha0NvbnRleHQobV9jdXJyZW50QnJlYWtDb250
ZXh0LCBCcmVha0NvbnRleHQ6OlN3aXRjaCk7CkBAIC00MjUsNyArNDMzLDcgQEAgdm9pZCBGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogewogICAgIGF1dG8gdmFyaWFibGVOYW1l
ID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUg
PSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoaW50ZWdlckxpdGVyYWwucmVzb2x2ZWRU
eXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5nbGVkVHlw
ZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVO
YW1lLCAiPigiLCBpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpLCAiKTtcbiIpKTsKKyAgICBtX3N0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFt
ZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFtZSwgIj4oIiwgaW50ZWdlckxpdGVy
YWwudmFsdWUoKSwgIik7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKGludGVnZXJMaXRlcmFs
LCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC00MzMsNyArNDQxLDcgQEAgdm9pZCBGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogewogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2Vu
ZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5yZXNvbHZl
ZFR5cGUoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1hbmdsZWRU
eXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSBzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlw
ZU5hbWUsICI+KCIsIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSwgIik7XG4iKSk7Cisg
ICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2
YXJpYWJsZU5hbWUsICIgPSBzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIHVu
c2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSwgIik7XG4iKTsKICAgICBhcHBlbmRSaWdodFZh
bHVlKHVuc2lnbmVkSW50ZWdlckxpdGVyYWwsIHZhcmlhYmxlTmFtZSk7CiB9CiAKQEAgLTQ0MSw3
ICs0NDksNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiB7CiAg
ICAgYXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBh
dXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShmbG9h
dExpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFr
ZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gc3RhdGljX2Nh
c3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBmbG9hdExpdGVyYWwudmFsdWUoKSwgIik7XG4i
KSk7CisgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwg
JyAnLCB2YXJpYWJsZU5hbWUsICIgPSBzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+
KCIsIGZsb2F0TGl0ZXJhbC52YWx1ZSgpLCAiKTtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFsdWUo
ZmxvYXRMaXRlcmFsLCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC00NTIsMTIgKzQ2MCwxMSBAQCB2
b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgYm9vbCBpc0FycmF5
UmVmZXJlbmNlVHlwZSA9IGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSk7
CiAKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwot
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUobnVsbExpdGVyYWwucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFt
ZSwgIiA9ICIpKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JUeXBlKG51bGxMaXRlcmFsLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2
YXJpYWJsZU5hbWUsICIgPSAiKTsKICAgICBpZiAoaXNBcnJheVJlZmVyZW5jZVR5cGUpCi0gICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInsgbnVsbHB0ciwgMCB9Iik7CisgICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoInsgbnVsbHB0ciwgMCB9O1xuIik7CiAgICAgZWxzZQotICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJudWxscHRyIik7Ci0gICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgiO1xuIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIm51bGxw
dHI7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKG51bGxMaXRlcmFsLCB2YXJpYWJsZU5hbWUp
OwogfQogCkBAIC00NjUsNyArNDcyLDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OnZpc2l0KEFTVAogewogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFi
bGVOYW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUoYm9vbGVhbkxpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVO
YW1lLCAiID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBib29sZWFuTGl0
ZXJhbC52YWx1ZSgpID8gInRydWUiIDogImZhbHNlIiwgIik7XG4iKSk7CisgICAgbV9zdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUs
ICIgPSBzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIGJvb2xlYW5MaXRlcmFs
LnZhbHVlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiLCAiKTtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFs
dWUoYm9vbGVhbkxpdGVyYWwsIHZhcmlhYmxlTmFtZSk7CiB9CiAKQEAgLTQ3NSw3ICs0ODIsNyBA
QCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgQVNTRVJUKGVu
dW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7CiAgICAgYXV0
byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBhdXRvIG1h
bmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShlbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQobWFrZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwg
bWFuZ2xlZFR5cGVOYW1lLCAiOjoiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvckVudW1lcmF0
aW9uTWVtYmVyKCplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSks
ICI7XG4iKSk7CisgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRUeXBl
TmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiLCBtYW5nbGVkVHlwZU5hbWUsICI6OiIsIG1f
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yRW51bWVyYXRpb25NZW1iZXIoKmVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKSwgIjtcbiIpOwogICAgIGFwcGVuZFJpZ2h0
VmFsdWUoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC00
OTgsOCArNTA1LDEwIEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QK
ICAgICBhdXRvIHBvaW50ZXJOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAg
YXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZ2xv
YmFsVmFyaWFibGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwogICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5iYXNlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQobWFrZVN0cmluZygidGhyZWFkICIsIG1hbmdsZWRUeXBlTmFtZSwgIiogIiwgcG9p
bnRlck5hbWUsICIgPSAmIiwgdGFrZUxhc3RWYWx1ZSgpLCAiLT4iLCBtX3R5cGVOYW1lci5tYW5n
bGVkTmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2Uuc3RydWN0
RmllbGQoKSksICI7XG4iKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5n
KG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YWx1ZU5hbWUsICIgPSAiLCAiKiIsIHBvaW50ZXJOYW1l
LCAiO1xuIikpOworICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAg
InRocmVhZCAiLCBtYW5nbGVkVHlwZU5hbWUsICIqICIsIHBvaW50ZXJOYW1lLCAiID0gJiIsIHRh
a2VMYXN0VmFsdWUoKSwgIi0+IiwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVF
bGVtZW50KGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLnN0cnVjdEZpZWxkKCkpLCAiO1xuIiwKKyAg
ICAgICAgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhbHVlTmFtZSwgIiA9ICIsICIqIiwgcG9pbnRl
ck5hbWUsICI7XG4iCisgICAgKTsKICAgICBhcHBlbmRMZWZ0VmFsdWUoZ2xvYmFsVmFyaWFibGVS
ZWZlcmVuY2UsIHZhbHVlTmFtZSwgcG9pbnRlck5hbWUpOwogfQogCkBAIC01MjgsOSArNTM3LDkg
QEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIC8vIEZJWE1F
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTYwIEltcGxlbWVu
dCBxdWFsaWZpZXJzLgogICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxpemVyKCkp
IHsKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRp
YWxpemVyKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV90
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSks
ICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xuIikpOworICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JUeXBlKCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgdmFyaWFibGVOYW1l
LCAiID0gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xuIik7CiAgICAgfSBlbHNlCi0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZv
clR5cGUoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICI7
XG4iKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1l
ci5tYW5nbGVkTmFtZUZvclR5cGUoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCB2
YXJpYWJsZU5hbWUsICI7XG4iKTsKIH0KIAogdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OnZpc2l0KEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24mIGFzc2lnbm1lbnRFeHByZXNzaW9uKQpA
QCAtNTM5LDcgKzU0OCw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChB
U1QKICAgICBhdXRvIHBvaW50ZXJOYW1lID0gdGFrZUxhc3RMZWZ0VmFsdWUoKTsKICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoYXNzaWdubWVudEV4cHJlc3Npb24ucmlnaHQoKSk7CiAgICAgYXV0byBy
aWdodE5hbWUgPSB0YWtlTGFzdFZhbHVlKCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCht
YWtlU3RyaW5nKCJpZiAoIiwgcG9pbnRlck5hbWUsICIpICoiLCBwb2ludGVyTmFtZSwgIiA9ICIs
IHJpZ2h0TmFtZSwgIjtcbiIpKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
ImlmICgiLCBwb2ludGVyTmFtZSwgIikgKiIsIHBvaW50ZXJOYW1lLCAiID0gIiwgcmlnaHROYW1l
LCAiO1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZShhc3NpZ25tZW50RXhwcmVzc2lvbiwgcmln
aHROYW1lKTsKIH0KIApAQCAtNTU0LDggKzU2Myw4IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9u
V3JpdGVyOjp2aXNpdChBU1QKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9mdW5jdGlvbk1hcHBp
bmcuZW5kKCkpOwogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVO
YW1lKCk7CiAgICAgaWYgKCFtYXRjaGVzKGNhbGxFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpLCBt
X2ludHJpbnNpY3Mudm9pZFR5cGUoKSkpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
bWFrZVN0cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoY2FsbEV4cHJlc3Npb24u
cmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIpKTsKLSAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoaXRlcmF0b3ItPnZhbHVlLCAnKCcpKTsKKyAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yVHlwZShjYWxsRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1l
LCAiID0gIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKGl0ZXJhdG9yLT52
YWx1ZSwgJygnKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50TmFtZXMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKCIsICIpOwpAQCAtNTgxLDEwICs1OTAsMTIgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIGF1dG8gcmlnaHQgPSB0YWtlTGFzdFZhbHVlKCk7CiAg
ICAgYXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBh
dXRvIHBvaW50ZXJOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlw
ZShkZXJlZmVyZW5jZUV4cHJlc3Npb24ucG9pbnRlcigpLnJlc29sdmVkVHlwZSgpKSwgJyAnLCBw
b2ludGVyTmFtZSwgIiA9ICIsIHJpZ2h0LCAiO1xuIikpOwotICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZGVyZWZlcmVu
Y2VFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICI7XG4iKSk7
Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJpZiAoIiwgcG9pbnRlck5h
bWUsICIpICIsIHZhcmlhYmxlTmFtZSwgIiA9ICoiLCByaWdodCwgIjtcbiIpKTsKLSAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoImVsc2UgIiwgbWVtc2V0WmVyb0Z1bmN0aW9u
TmFtZSwgJygnLCB2YXJpYWJsZU5hbWUsICIpO1xuIikpOworICAgIG1fc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZCgKKyAgICAgICAgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGRl
cmVmZXJlbmNlRXhwcmVzc2lvbi5wb2ludGVyKCkucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHBvaW50
ZXJOYW1lLCAiID0gIiwgcmlnaHQsICI7XG4iLAorICAgICAgICBtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUoZGVyZWZlcmVuY2VFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2
YXJpYWJsZU5hbWUsICI7XG4iLAorICAgICAgICAiaWYgKCIsIHBvaW50ZXJOYW1lLCAiKSAiLCB2
YXJpYWJsZU5hbWUsICIgPSAqIiwgcmlnaHQsICI7XG4iLAorICAgICAgICAiZWxzZSAiLCBtZW1z
ZXRaZXJvRnVuY3Rpb25OYW1lLCAnKCcsIHZhcmlhYmxlTmFtZSwgIik7XG4iCisgICAgKTsKICAg
ICBhcHBlbmRMZWZ0VmFsdWUoZGVyZWZlcmVuY2VFeHByZXNzaW9uLCB2YXJpYWJsZU5hbWUsIHBv
aW50ZXJOYW1lKTsKIH0KIApAQCAtNTk1LDcgKzYwNiw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0
aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICBjaGVja0Vycm9yQW5kVmlzaXQobG9naWNhbEV4cHJl
c3Npb24ucmlnaHQoKSk7CiAgICAgYXV0byByaWdodCA9IHRha2VMYXN0VmFsdWUoKTsKICAgICBh
dXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUobG9naWNhbEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwg
IiA9ICIsIGxlZnQpKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGxvZ2ljYWxFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgp
KSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiLCBsZWZ0KTsKICAgICBzd2l0Y2ggKGxvZ2ljYWxF
eHByZXNzaW9uLnR5cGUoKSkgewogICAgIGNhc2UgQVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6VHlw
ZTo6QW5kOgogICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIgJiYgIik7CkBAIC02MDUs
NyArNjE2LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIgfHwgIik7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcocmlnaHQsICI7XG4iKSk7
CisgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKHJpZ2h0LCAiO1xuIik7CiAgICAg
YXBwZW5kUmlnaHRWYWx1ZShsb2dpY2FsRXhwcmVzc2lvbiwgdmFyaWFibGVOYW1lKTsKIH0KIApA
QCAtNjE0LDcgKzYyNSw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChB
U1QKICAgICBjaGVja0Vycm9yQW5kVmlzaXQobG9naWNhbE5vdEV4cHJlc3Npb24ub3BlcmFuZCgp
KTsKICAgICBhdXRvIG9wZXJhbmQgPSB0YWtlTGFzdFZhbHVlKCk7CiAgICAgYXV0byB2YXJpYWJs
ZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKG1ha2VTdHJpbmcobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGxvZ2ljYWxO
b3RFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAhIiwg
b3BlcmFuZCwgIjtcbiIpKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGxvZ2ljYWxOb3RFeHByZXNzaW9uLnJlc29sdmVk
VHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAhIiwgb3BlcmFuZCwgIjtcbiIpOwogICAg
IGFwcGVuZFJpZ2h0VmFsdWUobG9naWNhbE5vdEV4cHJlc3Npb24sIHZhcmlhYmxlTmFtZSk7CiB9
CiAKQEAgLTYyOCwxNiArNjM5LDE4IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2
aXNpdChBU1QKICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWRO
YW1lRm9yVHlwZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKTsK
ICAgICBpZiAoaXM8QVNUOjpQb2ludGVyVHlwZT4obWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lv
bi5sZWZ0VmFsdWUoKS5yZXNvbHZlZFR5cGUoKSkpIHsKICAgICAgICAgYXV0byBwdHJWYWx1ZSA9
IHRha2VMYXN0VmFsdWUoKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3Ry
aW5nKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICI7XG4iKSk7Ci0gICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiaWYgKCIsIHB0clZhbHVlLCAiKSAi
LCB2YXJpYWJsZU5hbWUsICIgPSB7ICIsIHB0clZhbHVlLCAiLCAxfTtcbiIpKTsKLSAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJlbHNlICIsIHZhcmlhYmxlTmFtZSwg
IiA9IHsgbnVsbHB0ciwgMCB9O1xuIikpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoCisgICAgICAgICAgICBtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1l
LCAiO1xuIiwKKyAgICAgICAgICAgICJpZiAoIiwgcHRyVmFsdWUsICIpICIsIHZhcmlhYmxlTmFt
ZSwgIiA9IHsgIiwgcHRyVmFsdWUsICIsIDF9O1xuIiwKKyAgICAgICAgICAgICJlbHNlICIsIHZh
cmlhYmxlTmFtZSwgIiA9IHsgbnVsbHB0ciwgMCB9O1xuIgorICAgICAgICApOwogICAgIH0gZWxz
ZSBpZiAoaXM8QVNUOjpBcnJheVR5cGU+KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVm
dFZhbHVlKCkucmVzb2x2ZWRUeXBlKCkpKSB7CiAgICAgICAgIGF1dG8gbFZhbHVlID0gdGFrZUxh
c3RMZWZ0VmFsdWUoKTsKICAgICAgICAgYXV0byYgYXJyYXlUeXBlID0gZG93bmNhc3Q8QVNUOjpB
cnJheVR5cGU+KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkucmVzb2x2
ZWRUeXBlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWFu
Z2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHsgIiwgbFZhbHVlLCAiLT5kYXRh
KCksICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiIH07XG4iKSk7CisgICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVO
YW1lLCAiID0geyAiLCBsVmFsdWUsICItPmRhdGEoKSwgIiwgYXJyYXlUeXBlLm51bUVsZW1lbnRz
KCksICIgfTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGF1dG8gbFZhbHVlID0gdGFrZUxh
c3RMZWZ0VmFsdWUoKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5n
KG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSB7ICIsIGxWYWx1ZSwgIiwg
MSB9O1xuIikpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWFuZ2xl
ZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHsgIiwgbFZhbHVlLCAiLCAxIH07XG4i
KTsKICAgICB9CiAgICAgYXBwZW5kUmlnaHRWYWx1ZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uLCB2YXJpYWJsZU5hbWUpOwogfQpAQCAtNjQ3LDcgKzY2MCw3IEBAIHZvaWQgRnVuY3Rpb25E
ZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICBjaGVja0Vycm9yQW5kVmlzaXQobWFrZVBv
aW50ZXJFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKICAgICBhdXRvIHBvaW50ZXIgPSB0YWtlTGFz
dExlZnRWYWx1ZSgpOwogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFi
bGVOYW1lKCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1fdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZShtYWtlUG9pbnRlckV4cHJlc3Npb24ucmVzb2x2ZWRUeXBl
KCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIsIHBvaW50ZXIsICI7XG4iKSk7CisgICAgbV9z
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlw
ZShtYWtlUG9pbnRlckV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFt
ZSwgIiA9ICIsIHBvaW50ZXIsICI7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKG1ha2VQb2lu
dGVyRXhwcmVzc2lvbiwgdmFyaWFibGVOYW1lKTsKIH0KIApAQCAtNjYzLDE1ICs2NzYsMjAgQEAg
dm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIGF1dG8gY2hlY2sg
PSB0YWtlTGFzdFZhbHVlKCk7CiAKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4
dFZhcmlhYmxlTmFtZSgpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyht
X3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUodGVybmFyeUV4cHJlc3Npb24ucmVzb2x2ZWRU
eXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIjtcbiIpKTsKLQotICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQobWFrZVN0cmluZygiaWYgKCIsIGNoZWNrLCAiKSB7XG4iKSk7CisgICAgbV9zdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBtX3R5cGVOYW1lci5tYW5nbGVkTmFt
ZUZvclR5cGUodGVybmFyeUV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxl
TmFtZSwgIjtcbiIKKyAgICAgICAgImlmICgiLCBjaGVjaywgIikge1xuIgorICAgICk7CiAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHRlcm5hcnlFeHByZXNzaW9uLmJvZHlFeHByZXNzaW9uKCkpOwot
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyh2YXJpYWJsZU5hbWUsICIgPSAi
LCB0YWtlTGFzdFZhbHVlKCksICI7XG4iKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgi
fSBlbHNlIHtcbiIpOworICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAg
ICAgdmFyaWFibGVOYW1lLCAiID0gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xuIgorICAgICAgICAi
fSBlbHNlIHtcbiIKKyAgICApOwogICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0ZXJuYXJ5RXhwcmVz
c2lvbi5lbHNlRXhwcmVzc2lvbigpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VT
dHJpbmcodmFyaWFibGVOYW1lLCAiID0gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xuIikpOwotICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOworICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgKKyAgICAgICAgdmFyaWFibGVOYW1lLCAiID0gIiwgdGFrZUxhc3RWYWx1ZSgp
LCAiO1xuIgorICAgICAgICAifVxuIgorICAgICk7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZSh0ZXJu
YXJ5RXhwcmVzc2lvbiwgdmFyaWFibGVOYW1lKTsKIH0KIApAQCAtNjgxLDcgKzY5OSw3IEBAIHZv
aWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICBhdXRvIGl0ZXJhdG9y
ID0gbV92YXJpYWJsZU1hcHBpbmcuZmluZCh2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpKTsK
ICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV92YXJpYWJsZU1hcHBpbmcuZW5kKCkpOwogICAgIGF1
dG8gcG9pbnRlck5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInRocmVhZCAiLCBtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclR5cGUodmFyaWFibGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpLCAiKiAiLCBwb2lu
dGVyTmFtZSwgIiA9ICYiLCBpdGVyYXRvci0+dmFsdWUsICI7XG4iKSk7CisgICAgbV9zdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ0aHJlYWQgIiwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKHZhcmlhYmxlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKSwgIiogIiwgcG9pbnRlck5h
bWUsICIgPSAmIiwgaXRlcmF0b3ItPnZhbHVlLCAiO1xuIik7CiAgICAgYXBwZW5kTGVmdFZhbHVl
KHZhcmlhYmxlUmVmZXJlbmNlLCBpdGVyYXRvci0+dmFsdWUsIHBvaW50ZXJOYW1lKTsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRh
bENvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24g
MjQ3ODkzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xNZXRhbENvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywyNiArNDMsMjcg
QEAgc3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBNZXRhbENvZGUgPSBmYQogCiBzdGF0aWMgU3Ry
aW5nIGdlbmVyYXRlTWV0YWxDb2RlU2hhcmVkKFN0cmluZyYmIG1ldGFsVHlwZXMsIFN0cmluZyYm
IG1ldGFsRnVuY3Rpb25zKQogewotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiI2luY2x1ZGUgPG1ldGFsX3N0ZGxpYj5cbiIpOwotICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIjaW5jbHVkZSA8bWV0YWxfYXRvbWljPlxuIik7Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIiNpbmNsdWRlIDxtZXRhbF9tYXRoPlxuIik7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiNpbmNsdWRlIDxtZXRhbF9yZWxhdGlvbmFsPlxuIik7Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIiNpbmNsdWRlIDxtZXRhbF9jb21wdXRlPlxuIik7Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIiNpbmNsdWRlIDxtZXRhbF90ZXh0dXJlPlxuIik7Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIlxuIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInVz
aW5nIG5hbWVzcGFjZSBtZXRhbDtcbiIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcbiIp
OwotCi0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoV1RGTW92ZShtZXRhbFR5cGVzKSk7Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoV1RGTW92ZShtZXRhbEZ1bmN0aW9ucykpOworICAgIGF1dG8g
Z2VuZXJhdGVkTWV0YWxDb2RlID0gbWFrZVN0cmluZygKKyAgICAgICAgIiNpbmNsdWRlIDxtZXRh
bF9zdGRsaWI+XG4iCisgICAgICAgICIjaW5jbHVkZSA8bWV0YWxfYXRvbWljPlxuIgorICAgICAg
ICAiI2luY2x1ZGUgPG1ldGFsX21hdGg+XG4iCisgICAgICAgICIjaW5jbHVkZSA8bWV0YWxfcmVs
YXRpb25hbD5cbiIKKyAgICAgICAgIiNpbmNsdWRlIDxtZXRhbF9jb21wdXRlPlxuIgorICAgICAg
ICAiI2luY2x1ZGUgPG1ldGFsX3RleHR1cmU+XG4iCisgICAgICAgICJcbiIKKyAgICAgICAgInVz
aW5nIG5hbWVzcGFjZSBtZXRhbDtcbiIKKyAgICAgICAgIlxuIiwKKworICAgICAgICBXVEZNb3Zl
KG1ldGFsVHlwZXMpLAorICAgICAgICBXVEZNb3ZlKG1ldGFsRnVuY3Rpb25zKQorICAgICk7CiAK
ICAgICBpZiAoZHVtcE1ldGFsQ29kZSkgewogICAgICAgICBkYXRhTG9nTG4oIkdlbmVyYXRlZCBN
ZXRhbCBjb2RlOiAiKTsKLSAgICAgICAgZGF0YUxvZ0xuKHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KSk7CisgICAgICAgIGRhdGFMb2dMbihnZW5lcmF0ZWRNZXRhbENvZGUpOwogICAgIH0KIAotICAg
IHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIGdlbmVyYXRlZE1l
dGFsQ29kZTsKIH0KIAogUmVuZGVyTWV0YWxDb2RlIGdlbmVyYXRlTWV0YWxDb2RlKFByb2dyYW0m
IHByb2dyYW0sIE1hdGNoZWRSZW5kZXJTZW1hbnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlv
dXQmIGxheW91dCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0
ZXIuY3BwCShyZXZpc2lvbiAyNDc4OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTI3LDE4ICsxMjcsMjAgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpO
YXRpdmVGdQogICAgICAgICBhdXRvJiByZXR1cm5UeXBlID0gbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi50eXBlKCk7CiAgICAgICAgIGF1dG8gbWV0YWxSZXR1cm5OYW1lID0gdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZShyZXR1cm5UeXBlKTsKICAgICAgICAgaWYgKCFuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0
aW9uTmFtZSwgIigpIHtcbiIpKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1h
a2VTdHJpbmcoIiAgICAiLCBtZXRhbFJldHVybk5hbWUsICIgeDtcbiIpKTsKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICAiLCBtZW1zZXRaZXJvRnVuY3Rp
b25OYW1lLCAiKHgpO1xuIikpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAg
ICByZXR1cm4geDtcbiIpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIp
OworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAg
ICAgICBtZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAiKCkge1xuIgor
ICAgICAgICAgICAgICAgICIgICAgIiwgbWV0YWxSZXR1cm5OYW1lLCAiIHg7XG4iCisgICAgICAg
ICAgICAgICAgIiAgICAiLCBtZW1zZXRaZXJvRnVuY3Rpb25OYW1lLCAiKHgpO1xuIgorICAgICAg
ICAgICAgICAgICIgICAgcmV0dXJuIHg7XG4iCisgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAg
ICAgICAgICk7CiAgICAgICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwog
ICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFy
YW1ldGVycygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgYXV0byYgcGFyYW1ldGVyVHlwZSA9ICpu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpOwogICAgICAg
ICBhdXRvIG1ldGFsUGFyYW1ldGVyTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUo
cGFyYW1ldGVyVHlwZSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmco
bWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFt
ZXRlck5hbWUsICIgeCkge1xuIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBw
ZW5kKG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQ
YXJhbWV0ZXJOYW1lLCAiIHgpIHtcbiIpOwogCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8g
aXNFbnVtZXJhdGlvbkRlZmluaXRpb24gPSBbXSAoYXV0byYgdHlwZSkgewpAQCAtMTUxLDE1ICsx
NTMsMTcgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAg
ICAgICAgICAgIGJvb2wgaGFzWmVyb0Nhc2UgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmb3Ig
KGF1dG8mIG1lbWJlciA6IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJhdGlvbk1lbWJlcnMo
KSkgewogICAgICAgICAgICAgICAgICAgICBoYXNaZXJvQ2FzZSB8PSAhbWVtYmVyLmdldCgpLnZh
bHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJp
bmcoIiAgICAgICAgY2FzZSAiLCBtZW1iZXIuZ2V0KCkudmFsdWUoKSwgIjogYnJlYWs7XG4iKSk7
CisgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICAg
ICAgY2FzZSAiLCBtZW1iZXIuZ2V0KCkudmFsdWUoKSwgIjogYnJlYWs7XG4iKSk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoaGFzWmVyb0Nhc2UsIGhh
c1plcm9DYXNlKTsKICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgICAg
ICBkZWZhdWx0OiB4ID0gMDsgYnJlYWs7IH1cbiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIHJldHVybiBz
dGF0aWNfY2FzdDwiLCBtZXRhbFJldHVybk5hbWUsICI+KHgpO1xuIikpOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQoCisgICAgICAgICAgICAiICAgIHJldHVybiBzdGF0aWNfY2FzdDwiLCBtZXRhbFJldHVy
bk5hbWUsICI+KHgpO1xuIgorICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgKTsKICAgICAgICAg
cmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAKQEAgLTE2Nyw5ICsxNzEs
MTEgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAgICBB
U1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEp
OwogICAgICAgICBhdXRvIG1ldGFsUGFyYW1ldGVyTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFt
ZUZvclR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBl
KCkpOwogICAgICAgICBhdXRvIG1ldGFsUmV0dXJuTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFt
ZUZvclR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRG
dW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXJOYW1lLCAiIHgpIHtcbiIpKTsKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIHJldHVybiBzdGF0aWNfY2Fz
dDwiLCBtZXRhbFJldHVybk5hbWUsICI+KHgpO1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgifVxuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisg
ICAgICAgICAgICBtZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcs
IG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB4KSB7XG4iCisgICAgICAgICAgICAiICAgIHJldHVybiBz
dGF0aWNfY2FzdDwiLCBtZXRhbFJldHVybk5hbWUsICI+KHgpO1xuIgorICAgICAgICAgICAgIn1c
biIKKyAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsK
ICAgICB9CiAKQEAgLTE4MiwxNiArMTg4LDIwIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9u
KEFTVDo6TmF0aXZlRnUKICAgICAgICAgYXV0byYgdW5uYW1lZFBhcmFtZXRlclR5cGUgPSBkb3du
Y2FzdDxBU1Q6OlVubmFtZWRUeXBlPihwYXJhbWV0ZXJUeXBlKTsKICAgICAgICAgaWYgKGlzPEFT
VDo6QXJyYXlUeXBlPih1bm5hbWVkUGFyYW1ldGVyVHlwZSkpIHsKICAgICAgICAgICAgIGF1dG8m
IGFycmF5UGFyYW1ldGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkUGFy
YW1ldGVyVHlwZSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5n
KCJ1aW50ICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlck5hbWUsICIp
IHtcbiIpKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAg
ICByZXR1cm4gIiwgYXJyYXlQYXJhbWV0ZXJUeXBlLm51bUVsZW1lbnRzKCksICI7XG4iKSk7Ci0g
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgICAgICJ1aW50ICIsIG91dHB1
dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlck5hbWUsICIpIHtcbiIKKyAgICAgICAg
ICAgICAgICAiICAgIHJldHVybiAiLCBhcnJheVBhcmFtZXRlclR5cGUubnVtRWxlbWVudHMoKSwg
IjtcbiIKKyAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgKTsKICAgICAgICAgICAg
IHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgICAgIH0KIAogICAgICAgICBB
U1NFUlQoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHVubmFtZWRQYXJhbWV0ZXJUeXBlKSk7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInVpbnQgIiwgb3V0cHV0
RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB2KSB7XG4iKSk7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICByZXR1cm4gdi5sZW5ndGg7
XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgICJ1aW50ICIsIG91dHB1dEZ1
bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlck5hbWUsICIgdikge1xuIgorICAgICAgICAg
ICAgIiAgICByZXR1cm4gdi5sZW5ndGg7XG4iCisgICAgICAgICAgICAifVxuIgorICAgICAgICAp
OwogICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIApAQCAt
MjE3LDEwICsyMjcsMTIgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVG
dQogICAgICAgICAgICAgYXV0byBmaWVsZE5hbWUgPSBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
Lm5hbWUoKS5zdWJzdHJpbmcoIm9wZXJhdG9yLiJfc3RyLmxlbmd0aCgpKTsKICAgICAgICAgICAg
IGZpZWxkTmFtZSA9IGZpZWxkTmFtZS5zdWJzdHJpbmcoMCwgZmllbGROYW1lLmxlbmd0aCgpIC0g
MSk7CiAgICAgICAgICAgICBhdXRvIG1ldGFsRmllbGROYW1lID0gbWFuZ2xlZEZpZWxkTmFtZShm
aWVsZE5hbWUpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyht
ZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1l
dGVyMU5hbWUsICIgdiwgIiwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiBuKSB7XG4iKSk7Ci0gICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgdi4iLCBtZXRhbEZp
ZWxkTmFtZSwgIiA9IG47XG4iKSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCht
YWtlU3RyaW5nKCIgICAgcmV0dXJuIHY7XG4iKSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgifVxuIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KAorICAgICAgICAgICAgICAgIG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5h
bWUsICcoJywgbWV0YWxQYXJhbWV0ZXIxTmFtZSwgIiB2LCAiLCBtZXRhbFBhcmFtZXRlcjJOYW1l
LCAiIG4pIHtcbiIKKyAgICAgICAgICAgICAgICAiICAgIHYuIiwgbWV0YWxGaWVsZE5hbWUsICIg
PSBuO1xuIgorICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHY7XG4iCisgICAgICAgICAgICAg
ICAgIn1cbiIKKyAgICAgICAgICAgICk7CiAgICAgICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRl
ci50b1N0cmluZygpOwogICAgICAgICB9CiAKQEAgLTIyOSw5ICsyNDEsMTEgQEAgU3RyaW5nIHdy
aXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAgICBhdXRvIG1ldGFsUGFyYW1l
dGVyTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkpOwogICAgICAgICBhdXRvIG1ldGFsUmV0
dXJuTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi50eXBlKCkpOwogICAgICAgICBhdXRvIG1ldGFsRmllbGROYW1lID0gbWFuZ2xlZEZp
ZWxkTmFtZShmaWVsZE5hbWUpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3Ry
aW5nKG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQ
YXJhbWV0ZXJOYW1lLCAiIHYpIHtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
bWFrZVN0cmluZygiICAgIHJldHVybiB2LiIsIG1ldGFsRmllbGROYW1lLCAiO1xuIikpOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBtZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0
RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB2KSB7XG4iCisgICAgICAg
ICAgICAiICAgIHJldHVybiB2LiIsIG1ldGFsRmllbGROYW1lLCAiO1xuIgorICAgICAgICAgICAg
In1cbiIKKyAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KTsKICAgICB9CiAKQEAgLTI1Myw5ICsyNjcsMTEgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rp
b24oQVNUOjpOYXRpdmVGdQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1ldGFsRmllbGRO
YW1lID0gZmllbGROYW1lOwogCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJp
bmcobWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBh
cmFtZXRlck5hbWUsICIgdikge1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCht
YWtlU3RyaW5nKCIgICAgcmV0dXJuICYodi0+IiwgbWV0YWxGaWVsZE5hbWUsICIpO1xuIikpOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBtZXRhbFJldHVybk5hbWUsICcgJywgb3V0
cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB2KSB7XG4iCisgICAg
ICAgICAgICAiICAgIHJldHVybiAmKHYtPiIsIG1ldGFsRmllbGROYW1lLCAiKTtcbiIKKyAgICAg
ICAgICAgICJ9XG4iCisgICAgICAgICk7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRv
U3RyaW5nKCk7CiAgICAgfQogCkBAIC0yNjQsMTEgKzI4MCwxMyBAQCBTdHJpbmcgd3JpdGVOYXRp
dmVGdW5jdGlvbihBU1Q6Ok5hdGl2ZUZ1CiAgICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0ZXIxTmFt
ZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkpOwogICAgICAgICBhdXRvIG1ldGFsUGFyYW1ldGVy
Mk5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLnBhcmFtZXRlcnMoKVsxXS0+dHlwZSgpKTsKICAgICAgICAgYXV0byBtZXRhbFJldHVy
bk5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24udHlwZSgpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyht
ZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1l
dGVyMU5hbWUsICIgdiwgIiwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiBuKSB7XG4iKSk7CiAgICAg
ICAgIEFTU0VSVChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4oKm5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIiAgICBpZiAobiA8IHYubGVuZ3RoKSByZXR1cm4gJih2LnBvaW50ZXJbbl0pO1xu
Iik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgcmV0dXJuIG51bGxwdHI7XG4i
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOworICAgICAgICBzdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgbWV0YWxSZXR1cm5OYW1lLCAnICcs
IG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHYsICIsIG1l
dGFsUGFyYW1ldGVyMk5hbWUsICIgbikge1xuIgorICAgICAgICAgICAgIiAgICBpZiAobiA8IHYu
bGVuZ3RoKSByZXR1cm4gJih2LnBvaW50ZXJbbl0pO1xuIgorICAgICAgICAgICAgIiAgICByZXR1
cm4gbnVsbHB0cjtcbiIKKyAgICAgICAgICAgICJ9XG4iCisgICAgICAgICk7CiAgICAgICAgIHJl
dHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCkBAIC0yOTUsMTcgKzMxMywy
MSBAQCBTdHJpbmcgd3JpdGVOYXRpdmVGdW5jdGlvbihBU1Q6Ok5hdGl2ZUZ1CiAgICAgICAgIHVu
c2lnbmVkIG51bWJlck9mUm93cyA9IG51bWJlck9mTWF0cml4Um93cygpOwogICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZkNvbHVtbnMgPSBudW1iZXJPZk1hdHJpeENvbHVtbnMoKTsKIAotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBv
dXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXIxTmFtZSwgIiBtLCAiLCBtZXRh
bFBhcmFtZXRlcjJOYW1lLCAiIGkpIHtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQobWFrZVN0cmluZygiICAgIGlmIChpID49ICIsIG51bWJlck9mUm93cywgIikgcmV0dXJuICIs
IG1ldGFsUmV0dXJuTmFtZSwgIigwKTtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQobWFrZVN0cmluZygiICAgICIsIG1ldGFsUmV0dXJuTmFtZSwgIiByZXN1bHQ7XG4iKSk7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgcmVzdWx0WzBdID0gbVtpXTtcbiIpOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgcmVzdWx0WzFdID0g
bVtpICsgIiwgbnVtYmVyT2ZSb3dzLCAiXTtcbiIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgIG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRG
dW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXIxTmFtZSwgIiBtLCAiLCBtZXRhbFBhcmFt
ZXRlcjJOYW1lLCAiIGkpIHtcbiIKKyAgICAgICAgICAgICIgICAgaWYgKGkgPj0gIiwgbnVtYmVy
T2ZSb3dzLCAiKSByZXR1cm4gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApO1xuIgorICAgICAgICAg
ICAgIiAgICAiLCBtZXRhbFJldHVybk5hbWUsICIgcmVzdWx0O1xuIgorICAgICAgICAgICAgIiAg
ICByZXN1bHRbMF0gPSBtW2ldO1xuIgorICAgICAgICAgICAgIiAgICByZXN1bHRbMV0gPSBtW2kg
KyAiLCBudW1iZXJPZlJvd3MsICJdO1xuIgorICAgICAgICApOwogICAgICAgICBpZiAobnVtYmVy
T2ZDb2x1bW5zID49IDMpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3Ry
aW5nKCIgICAgcmVzdWx0WzJdID0gbVtpICsgIiwgbnVtYmVyT2ZSb3dzICogMiwgIl07XG4iKSk7
CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgcmVzdWx0WzJd
ID0gbVtpICsgIiwgbnVtYmVyT2ZSb3dzICogMiwgIl07XG4iKTsKICAgICAgICAgaWYgKG51bWJl
ck9mQ29sdW1ucyA+PSA0KQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0
cmluZygiICAgIHJlc3VsdFszXSA9IG1baSArICIsIG51bWJlck9mUm93cyAqIDMsICJdO1xuIikp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIHJldHVybiByZXN1bHQ7XG4iKTsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOworICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIHJlc3VsdFszXSA9IG1baSArICIsIG51bWJlck9m
Um93cyAqIDMsICJdO1xuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAorICAgICAg
ICAgICAgIiAgICByZXR1cm4gcmVzdWx0O1xuIik7CisgICAgICAgICAgICAifVxuIgorICAgICAg
ICApOwogICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIApA
QCAtMzE5LDE2ICszNDEsMjAgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRp
dmVGdQogICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJvd3MgPSBudW1iZXJPZk1hdHJpeFJvd3Mo
KTsKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZDb2x1bW5zID0gbnVtYmVyT2ZNYXRyaXhDb2x1
bW5zKCk7CiAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtZXRhbFJl
dHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyMU5h
bWUsICIgbSwgIiwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiBpLCAiLCBtZXRhbFBhcmFtZXRlcjNO
YW1lLCAiIHYpIHtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmlu
ZygiICAgIGlmIChpID49ICIsIG51bWJlck9mUm93cywgIikgcmV0dXJuIG07XG4iKSk7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBtW2ldID0gdlswXTtcbiIp
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIG1baSArICIs
IG51bWJlck9mUm93cywgIl0gPSB2WzFdO1xuIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgbWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1
bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIG0sICIsIG1ldGFsUGFyYW1l
dGVyMk5hbWUsICIgaSwgIiwgbWV0YWxQYXJhbWV0ZXIzTmFtZSwgIiB2KSB7XG4iCisgICAgICAg
ICAgICAiICAgIGlmIChpID49ICIsIG51bWJlck9mUm93cywgIikgcmV0dXJuIG07XG4iCisgICAg
ICAgICAgICAiICAgIG1baV0gPSB2WzBdO1xuIgorICAgICAgICAgICAgIiAgICBtW2kgKyAiLCBu
dW1iZXJPZlJvd3MsICJdID0gdlsxXTtcbiIKKyAgICAgICAgKTsKICAgICAgICAgaWYgKG51bWJl
ck9mQ29sdW1ucyA+PSAzKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0
cmluZygiICAgIG1baSArICIsIG51bWJlck9mUm93cyAqIDIsICJdID0gdlsyXTtcbiIpKTsKKyAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICBtW2kgKyAiLCBudW1i
ZXJPZlJvd3MgKiAyLCAiXSA9IHZbMl07XG4iKTsKICAgICAgICAgaWYgKG51bWJlck9mQ29sdW1u
cyA+PSA0KQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAg
IG1baSArICIsIG51bWJlck9mUm93cyAqIDMsICJdID0gdlszXTtcbiIpKTsKLSAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiAgICByZXR1cm4gbTsiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIn1cbiIpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgiICAgIG1baSArICIsIG51bWJlck9mUm93cyAqIDMsICJdID0gdlszXTtcbiIpOworICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKKyAgICAgICAgICAgICIgICAgcmV0dXJuIG07IgorICAg
ICAgICAgICAgIn1cbiIKKyAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIu
dG9TdHJpbmcoKTsKICAgICB9CiAKQEAgLTMzNyw5ICszNjMsMTEgQEAgU3RyaW5nIHdyaXRlTmF0
aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAgICAgICAgYXV0byBvcGVyYXRvck5hbWUg
PSBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKS5zdWJzdHJpbmcoIm9wZXJhdG9yIl9z
dHIubGVuZ3RoKCkpOwogICAgICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlck5hbWUgPSB0eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFt
ZXRlcnMoKVswXS0+dHlwZSgpKTsKICAgICAgICAgICAgIGF1dG8gbWV0YWxSZXR1cm5OYW1lID0g
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5
cGUoKSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1ldGFs
UmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXJO
YW1lLCAiIHgpIHtcbiIpKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VT
dHJpbmcoIiAgICByZXR1cm4gIiwgb3BlcmF0b3JOYW1lLCAieDtcbiIpKTsKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICAgICAgbWV0YWxSZXR1cm5OYW1lLCAnICcsIG91
dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlck5hbWUsICIgeCkge1xuIgorICAg
ICAgICAgICAgICAgICIgICAgcmV0dXJuICIsIG9wZXJhdG9yTmFtZSwgIng7XG4iCisgICAgICAg
ICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICk7CiAgICAgICAgICAgICByZXR1cm4gc3RyaW5n
QnVpbGRlci50b1N0cmluZygpOwogICAgICAgICB9CiAKQEAgLTM0OCw5ICszNzYsMTEgQEAgU3Ry
aW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAgICBhdXRvIG1ldGFs
UGFyYW1ldGVyMU5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpKTsKICAgICAgICAgYXV0byBt
ZXRhbFBhcmFtZXRlcjJOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMV0tPnR5cGUoKSk7CiAgICAgICAgIGF1
dG8gbWV0YWxSZXR1cm5OYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KG1ha2VTdHJpbmcobWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygn
LCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHgsICIsIG1ldGFsUGFyYW1ldGVyMk5hbWUsICIgeSkg
e1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgcmV0
dXJuIHggIiwgb3BlcmF0b3JOYW1lLCAiIHk7XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAg
ICAgICAgICAgIG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywg
bWV0YWxQYXJhbWV0ZXIxTmFtZSwgIiB4LCAiLCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAiIHkpIHtc
biIKKyAgICAgICAgICAgICIgICAgcmV0dXJuIHggIiwgb3BlcmF0b3JOYW1lLCAiIHk7XG4iCisg
ICAgICAgICAgICAifVxuIgorICAgICAgICApOwogICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRl
ci50b1N0cmluZygpOwogICAgIH0KIApAQCAtMzgxLDkgKzQxMSwxMSBAQCBTdHJpbmcgd3JpdGVO
YXRpdmVGdW5jdGlvbihBU1Q6Ok5hdGl2ZUZ1CiAgICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMSk7CiAgICAgICAgIGF1dG8gbWV0
YWxQYXJhbWV0ZXJOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSk7CiAgICAgICAgIGF1dG8g
bWV0YWxSZXR1cm5OYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1h
a2VTdHJpbmcobWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBt
ZXRhbFBhcmFtZXRlck5hbWUsICIgeCkge1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChtYWtlU3RyaW5nKCIgICAgcmV0dXJuICIsIG1hcEZ1bmN0aW9uTmFtZShuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLm5hbWUoKSksICIoeCk7XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgK
KyAgICAgICAgICAgIG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICco
JywgbWV0YWxQYXJhbWV0ZXJOYW1lLCAiIHgpIHtcbiIKKyAgICAgICAgICAgICIgICAgcmV0dXJu
ICIsIG1hcEZ1bmN0aW9uTmFtZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSksICIo
eCk7XG4iCisgICAgICAgICAgICAifVxuIgorICAgICAgICApOwogICAgICAgICByZXR1cm4gc3Ry
aW5nQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIApAQCAtMzkyLDM1ICs0MjQsNDMgQEAgU3Ry
aW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAgICBhdXRvIG1ldGFs
UGFyYW1ldGVyMU5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpKTsKICAgICAgICAgYXV0byBt
ZXRhbFBhcmFtZXRlcjJOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMV0tPnR5cGUoKSk7CiAgICAgICAgIGF1
dG8gbWV0YWxSZXR1cm5OYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KG1ha2VTdHJpbmcobWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygn
LCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHgsICIsIG1ldGFsUGFyYW1ldGVyMk5hbWUsICIgeSkg
e1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgcmV0
dXJuICIsIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLCAiKHgsIHkpO1xuIikpOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBtZXRhbFJldHVybk5hbWUsICcgJywgb3V0
cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyMU5hbWUsICIgeCwgIiwgbWV0YWxQ
YXJhbWV0ZXIyTmFtZSwgIiB5KSB7XG4iCisgICAgICAgICAgICAiICAgIHJldHVybiAiLCBuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSwgIih4LCB5KTtcbiIKKyAgICAgICAgICAgICJ9
XG4iCisgICAgICAgICk7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7
CiAgICAgfQogCiAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJB
bGxNZW1vcnlCYXJyaWVyV2l0aEdyb3VwU3luYyIpIHsKICAgICAgICAgQVNTRVJUKCFuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJ2b2lkICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgIigp
IHtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICB0aHJlYWRncm91cF9i
YXJyaWVyKG1lbV9mbGFnczo6bWVtX2RldmljZSk7XG4iKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIiAgICB0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX3RocmVhZGdy
b3VwKTtcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIHRocmVhZGdyb3Vw
X2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fdGV4dHVyZSk7XG4iKTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIn1cbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KAorICAgICAgICAgICAgInZvaWQgIiwgb3V0cHV0RnVuY3Rpb25OYW1lLCAiKCkge1xuIgorICAg
ICAgICAgICAgIiAgICB0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX2RldmljZSk7
XG4iCisgICAgICAgICAgICAiICAgIHRocmVhZGdyb3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1f
dGhyZWFkZ3JvdXApO1xuIgorICAgICAgICAgICAgIiAgICB0aHJlYWRncm91cF9iYXJyaWVyKG1l
bV9mbGFnczo6bWVtX3RleHR1cmUpO1xuIgorICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgKTsK
ICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAKICAgICBp
ZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkRldmljZU1lbW9yeUJhcnJp
ZXJXaXRoR3JvdXBTeW5jIikgewogICAgICAgICBBU1NFUlQoIW5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24ucGFyYW1ldGVycygpLnNpemUoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KG1ha2VTdHJpbmcoInZvaWQgIiwgb3V0cHV0RnVuY3Rpb25OYW1lLCAiKCkge1xuIikpOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIHRocmVhZGdyb3VwX2JhcnJpZXIobWVtX2Zs
YWdzOjptZW1fZGV2aWNlKTtcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxu
Iik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICAi
dm9pZCAiLCBvdXRwdXRGdW5jdGlvbk5hbWUsICIoKSB7XG4iCisgICAgICAgICAgICAiICAgIHRo
cmVhZGdyb3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fZGV2aWNlKTtcbiIKKyAgICAgICAgICAg
ICJ9XG4iCisgICAgICAgICk7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5n
KCk7CiAgICAgfQogCiAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09
ICJHcm91cE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jIikgewogICAgICAgICBBU1NFUlQoIW5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSk7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInZvaWQgIiwgb3V0cHV0RnVuY3Rpb25OYW1l
LCAiKCkge1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIHRocmVhZGdy
b3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fdGhyZWFkZ3JvdXApO1xuIik7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZCgKKyAgICAgICAgICAgICJ2b2lkICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgIigpIHtc
biIKKyAgICAgICAgICAgICIgICAgdGhyZWFkZ3JvdXBfYmFycmllcihtZW1fZmxhZ3M6Om1lbV90
aHJlYWRncm91cCk7XG4iCisgICAgICAgICAgICAifVxuIgorICAgICAgICApOwogICAgICAgICBy
ZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIApAQCAtNDM1LDEwICs0NzUs
MTIgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAgICAg
ICAgYXV0byYgZm91cnRoQXJndW1lbnRQb2ludGVyID0gZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlw
ZT4oKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzNdLT50eXBlKCkpOwog
ICAgICAgICAgICAgYXV0byBmb3VydGhBcmd1bWVudEFkZHJlc3NTcGFjZSA9IGZvdXJ0aEFyZ3Vt
ZW50UG9pbnRlci5hZGRyZXNzU3BhY2UoKTsKICAgICAgICAgICAgIGF1dG8gZm91cnRoQXJndW1l
bnRQb2ludGVlID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShmb3VydGhBcmd1bWVudFBv
aW50ZXIuZWxlbWVudFR5cGUoKSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCht
YWtlU3RyaW5nKCJ2b2lkICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCB0b1N0cmluZyhmaXJz
dEFyZ3VtZW50QWRkcmVzc1NwYWNlKSwgJyAnLCBmaXJzdEFyZ3VtZW50UG9pbnRlZSwgIiogb2Jq
ZWN0LCAiLCBzZWNvbmRBcmd1bWVudCwgIiBjb21wYXJlLCAiLCB0aGlyZEFyZ3VtZW50LCAiIGRl
c2lyZWQsICIsIHRvU3RyaW5nKGZvdXJ0aEFyZ3VtZW50QWRkcmVzc1NwYWNlKSwgJyAnLCBmb3Vy
dGhBcmd1bWVudFBvaW50ZWUsICIqIG91dCkge1xuIikpOwotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiAgICBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KG9i
amVjdCwgJmNvbXBhcmUsIGRlc2lyZWQsIG1lbW9yeV9vcmRlcl9yZWxheGVkLCBtZW1vcnlfb3Jk
ZXJfcmVsYXhlZCk7XG4iKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAg
Km91dCA9IGNvbXBhcmU7XG4iKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9
XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAg
ICAgICAgICAgInZvaWQgIiwgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIHRvU3RyaW5nKGZpcnN0
QXJndW1lbnRBZGRyZXNzU3BhY2UpLCAnICcsIGZpcnN0QXJndW1lbnRQb2ludGVlLCAiKiBvYmpl
Y3QsICIsIHNlY29uZEFyZ3VtZW50LCAiIGNvbXBhcmUsICIsIHRoaXJkQXJndW1lbnQsICIgZGVz
aXJlZCwgIiwgdG9TdHJpbmcoZm91cnRoQXJndW1lbnRBZGRyZXNzU3BhY2UpLCAnICcsIGZvdXJ0
aEFyZ3VtZW50UG9pbnRlZSwgIiogb3V0KSB7XG4iCisgICAgICAgICAgICAgICAgIiAgICBhdG9t
aWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KG9iamVjdCwgJmNvbXBhcmUsIGRlc2ly
ZWQsIG1lbW9yeV9vcmRlcl9yZWxheGVkLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCk7XG4iCisgICAg
ICAgICAgICAgICAgIiAgICAqb3V0ID0gY29tcGFyZTtcbiIKKyAgICAgICAgICAgICAgICAifVxu
IgorICAgICAgICAgICAgKTsKICAgICAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3Ry
aW5nKCk7CiAgICAgICAgIH0KIApAQCAtNDUxLDkgKzQ5MywxMSBAQCBTdHJpbmcgd3JpdGVOYXRp
dmVGdW5jdGlvbihBU1Q6Ok5hdGl2ZUZ1CiAgICAgICAgIGF1dG8gdGhpcmRBcmd1bWVudEFkZHJl
c3NTcGFjZSA9IHRoaXJkQXJndW1lbnRQb2ludGVyLmFkZHJlc3NTcGFjZSgpOwogICAgICAgICBh
dXRvIHRoaXJkQXJndW1lbnRQb2ludGVlID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSh0
aGlyZEFyZ3VtZW50UG9pbnRlci5lbGVtZW50VHlwZSgpKTsKICAgICAgICAgYXV0byBuYW1lID0g
YXRvbWljTmFtZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKS5zdWJzdHJpbmcoIklu
dGVybG9ja2VkIl9zdHIubGVuZ3RoKCkpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
bWFrZVN0cmluZygidm9pZCAiLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgdG9TdHJpbmcoZmly
c3RBcmd1bWVudEFkZHJlc3NTcGFjZSksICcgJywgZmlyc3RBcmd1bWVudFBvaW50ZWUsICIqIG9i
amVjdCwgIiwgc2Vjb25kQXJndW1lbnQsICIgb3BlcmFuZCwgIiwgdG9TdHJpbmcodGhpcmRBcmd1
bWVudEFkZHJlc3NTcGFjZSksICcgJywgdGhpcmRBcmd1bWVudFBvaW50ZWUsICIqIG91dCkge1xu
IikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgKm91dCA9
IGF0b21pY18iLCBuYW1lLCAiX2V4cGxpY2l0KG9iamVjdCwgb3BlcmFuZCwgbWVtb3J5X29yZGVy
X3JlbGF4ZWQpO1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7Cisg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICAidm9pZCAi
LCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgdG9TdHJpbmcoZmlyc3RBcmd1bWVudEFkZHJlc3NT
cGFjZSksICcgJywgZmlyc3RBcmd1bWVudFBvaW50ZWUsICIqIG9iamVjdCwgIiwgc2Vjb25kQXJn
dW1lbnQsICIgb3BlcmFuZCwgIiwgdG9TdHJpbmcodGhpcmRBcmd1bWVudEFkZHJlc3NTcGFjZSks
ICcgJywgdGhpcmRBcmd1bWVudFBvaW50ZWUsICIqIG91dCkge1xuIgorICAgICAgICAgICAgIiAg
ICAqb3V0ID0gYXRvbWljXyIsIG5hbWUsICJfZXhwbGljaXQob2JqZWN0LCBvcGVyYW5kLCBtZW1v
cnlfb3JkZXJfcmVsYXhlZCk7XG4iCisgICAgICAgICAgICAifVxuIgorICAgICAgICApOwogICAg
ICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIApAQCAtNDczLDIz
ICs1MTcsMjcgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAg
ICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09
IDQpCiAgICAgICAgICAgICBtZXRhbFBhcmFtZXRlcjROYW1lID0gdHlwZU5hbWVyLm1hbmdsZWRO
YW1lRm9yVHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbM10tPnR5
cGUoKSk7CiAgICAgICAgIGF1dG8gbWV0YWxSZXR1cm5OYW1lID0gdHlwZU5hbWVyLm1hbmdsZWRO
YW1lRm9yVHlwZShyZXR1cm5UeXBlKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFr
ZVN0cmluZyhtZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1l
dGFsUGFyYW1ldGVyMU5hbWUsICIgdGhlVGV4dHVyZSwgIiwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwg
IiB0aGVTYW1wbGVyLCAiLCBtZXRhbFBhcmFtZXRlcjNOYW1lLCAiIGxvY2F0aW9uIikpOworICAg
ICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBv
dXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXIxTmFtZSwgIiB0aGVUZXh0dXJl
LCAiLCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAiIHRoZVNhbXBsZXIsICIsIG1ldGFsUGFyYW1ldGVy
M05hbWUsICIgbG9jYXRpb24iKTsKICAgICAgICAgaWYgKCFtZXRhbFBhcmFtZXRlcjROYW1lLmlz
TnVsbCgpKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiLCAi
LCBtZXRhbFBhcmFtZXRlcjROYW1lLCAiIG9mZnNldCIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIikge1xuIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgcmV0
dXJuIHRoZVRleHR1cmUuc2FtcGxlKHRoZVNhbXBsZXIsICIpOworICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiLCAiLCBtZXRhbFBhcmFtZXRlcjROYW1lLCAiIG9mZnNl
dCIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKKyAgICAgICAgICAgICIpIHtcbiIK
KyAgICAgICAgICAgICIgICAgcmV0dXJuIHRoZVRleHR1cmUuc2FtcGxlKHRoZVNhbXBsZXIsICIK
KyAgICAgICAgKTsKICAgICAgICAgaWYgKHRleHR1cmVUeXBlLmlzVGV4dHVyZUFycmF5KCkpIHsK
ICAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvblZlY3Rvckxlbmd0aCA+IDEpOwotICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygibG9jYXRpb24uIiwgInh5enciX3N0
ci5zdWJzdHJpbmcoMCwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIiwgbG9jYXRpb24uIiwg
Inh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKSkpOworICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgibG9jYXRpb24uIiwgInh5enci
X3N0ci5zdWJzdHJpbmcoMCwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIiwgbG9jYXRpb24u
IiwgInh5enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKSk7CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImxvY2F0aW9u
Iik7CiAgICAgICAgIGlmICghbWV0YWxQYXJhbWV0ZXI0TmFtZS5pc051bGwoKSkKICAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIsIG9mZnNldCIpOwogICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiKSIpOwogICAgICAgICBpZiAoIXRleHR1cmVUeXBlLmlzRGVwdGhUZXh0dXJl
KCkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIuIiwgInh5
enciX3N0ci5zdWJzdHJpbmcoMCwgcmV0dXJuVmVjdG9yTGVuZ3RoKSkpOwotICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiO1xuIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9
XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIi4iLCAieHl6
dyJfc3RyLnN1YnN0cmluZygwLCByZXR1cm5WZWN0b3JMZW5ndGgpKTsKKyAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoCisgICAgICAgICAgICAiO1xuIgorICAgICAgICAgICAgIn1cbiIKKyAg
ICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9
CiAKQEAgLTUwNSwzNyArNTUzLDQxIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6
TmF0aXZlRnUKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlcjFOYW1lID0gdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZSh0ZXh0dXJlVHlwZSk7CiAgICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0
ZXIyTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobG9jYXRpb25UeXBlKTsKICAg
ICAgICAgYXV0byBtZXRhbFJldHVybk5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBl
KHJldHVyblR5cGUpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1l
dGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0
ZXIxTmFtZSwgIiB0aGVUZXh0dXJlLCAiLCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAiIGxvY2F0aW9u
KSB7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWV0YWxSZXR1
cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1l
LCAiIHRoZVRleHR1cmUsICIsIG1ldGFsUGFyYW1ldGVyMk5hbWUsICIgbG9jYXRpb24pIHtcbiIp
OwogICAgICAgICBpZiAodGV4dHVyZVR5cGUuaXNUZXh0dXJlQXJyYXkoKSkgewogICAgICAgICAg
ICAgQVNTRVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID4gMSk7CiAgICAgICAgICAgICBTdHJpbmcg
ZGltZW5zaW9uc1tdID0geyAid2lkdGgiX3N0ciwgImhlaWdodCJfc3RyLCAiZGVwdGgiX3N0ciB9
OwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhdGlvblZlY3Rvckxlbmd0aCAt
IDE7ICsraSkgewogICAgICAgICAgICAgICAgIGF1dG8gc3VmZml4ID0gInh5enciX3N0ci5zdWJz
dHJpbmcoaSwgMSk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0
cmluZygiICAgIGlmIChsb2NhdGlvbi4iLCBzdWZmaXgsICIgPCAwIHx8IHN0YXRpY19jYXN0PHVp
bnQzMl90Pihsb2NhdGlvbi4iLCBzdWZmaXgsICIpID49IHRoZVRleHR1cmUuZ2V0XyIsIGRpbWVu
c2lvbnNbaV0sICIoKSkgcmV0dXJuICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTtcbiIpKTsKKyAg
ICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgaWYgKGxvY2F0
aW9uLiIsIHN1ZmZpeCwgIiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxvY2F0aW9uLiIs
IHN1ZmZpeCwgIikgPj0gdGhlVGV4dHVyZS5nZXRfIiwgZGltZW5zaW9uc1tpXSwgIigpKSByZXR1
cm4gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBhdXRvIHN1ZmZpeCA9ICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVjdG9yTGVu
Z3RoIC0gMSwgMSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5n
KCIgICAgaWYgKGxvY2F0aW9uLiIsIHN1ZmZpeCwgIiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGxvY2F0aW9uLiIsIHN1ZmZpeCwgIikgPj0gdGhlVGV4dHVyZS5nZXRfYXJyYXlfc2l6ZSgp
KSByZXR1cm4gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApO1xuIikpOworICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIGlmIChsb2NhdGlvbi4iLCBzdWZmaXgsICIg
PCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90Pihsb2NhdGlvbi4iLCBzdWZmaXgsICIpID49IHRo
ZVRleHR1cmUuZ2V0X2FycmF5X3NpemUoKSkgcmV0dXJuICIsIG1ldGFsUmV0dXJuTmFtZSwgIigw
KTtcbiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGxvY2F0aW9uVmVjdG9y
TGVuZ3RoID09IDEpCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0
cmluZygiICAgIGlmIChsb2NhdGlvbiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxvY2F0
aW9uKSA+PSB0aGVUZXh0dXJlLmdldF93aWR0aCgpKSByZXR1cm4gIiwgbWV0YWxSZXR1cm5OYW1l
LCAiKDApO1xuIikpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoIiAgICBpZiAobG9jYXRpb24gPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90Pihsb2NhdGlv
bikgPj0gdGhlVGV4dHVyZS5nZXRfd2lkdGgoKSkgcmV0dXJuICIsIG1ldGFsUmV0dXJuTmFtZSwg
IigwKTtcbiIpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIGlmIChsb2NhdGlvbi54IDwgMCB8fCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4obG9jYXRpb24ueCkgPj0gdGhlVGV4dHVyZS5nZXRfd2lkdGgoKSkgcmV0
dXJuICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTtcbiIpKTsKLSAgICAgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgaWYgKGxvY2F0aW9uLnkgPCAwIHx8IHN0
YXRpY19jYXN0PHVpbnQzMl90Pihsb2NhdGlvbi55KSA+PSB0aGVUZXh0dXJlLmdldF9oZWlnaHQo
KSkgcmV0dXJuICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTtcbiIpKTsKKyAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAiICAg
IGlmIChsb2NhdGlvbi54IDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obG9jYXRpb24ueCkg
Pj0gdGhlVGV4dHVyZS5nZXRfd2lkdGgoKSkgcmV0dXJuICIsIG1ldGFsUmV0dXJuTmFtZSwgIigw
KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAobG9jYXRpb24ueSA8IDAgfHwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGxvY2F0aW9uLnkpID49IHRoZVRleHR1cmUuZ2V0X2hlaWdodCgp
KSByZXR1cm4gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApO1xuIgorICAgICAgICAgICAgICAgICk7
CiAgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID49IDMpCi0gICAgICAg
ICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBpZiAobG9j
YXRpb24ueiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxvY2F0aW9uLnopID49IHRoZVRl
eHR1cmUuZ2V0X2RlcHRoKCkpIHJldHVybiAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7XG4iKSk7
CisgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICBp
ZiAobG9jYXRpb24ueiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxvY2F0aW9uLnopID49
IHRoZVRleHR1cmUuZ2V0X2RlcHRoKCkpIHJldHVybiAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7
XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiICAgIHJldHVybiB0aGVUZXh0dXJlLnJlYWQoIik7CiAgICAgICAgIGlmICh0ZXh0dXJl
VHlwZS5pc1RleHR1cmVBcnJheSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQobG9jYXRpb25WZWN0
b3JMZW5ndGggPiAxKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJp
bmcoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIihsb2Nh
dGlvbi4iLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEp
LCAiKSwgdWludChsb2NhdGlvbi4iLCAieHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZlY3Rv
ckxlbmd0aCAtIDEsIDEpLCAiKSIpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwg
Iihsb2NhdGlvbi4iLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0
aCAtIDEpLCAiKSwgdWludChsb2NhdGlvbi4iLCAieHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlv
blZlY3Rvckxlbmd0aCAtIDEsIDEpLCAnKScpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9j
YXRpb25WZWN0b3JMZW5ndGgpLCAiKGxvY2F0aW9uKSIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoIikiKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
InVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGgpLCAiKGxvY2F0aW9uKSIp
OworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwogICAgICAgICBpZiAoIXRleHR1
cmVUeXBlLmlzRGVwdGhUZXh0dXJlKCkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChtYWtlU3RyaW5nKCIuIiwgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgcmV0dXJuVmVjdG9yTGVu
Z3RoKSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiO1xuIik7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxl
eGlibGVBcHBlbmQoJy4nLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCByZXR1cm5WZWN0b3JMZW5n
dGgpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCisgICAgICAgICAgICAiO1xuIgor
ICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKTsKICAgICB9CiAKQEAgLTU0Myw5ICs1OTUsMTEgQEAgU3RyaW5nIHdyaXRl
TmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEpOwogICAgICAgICBhdXRvIG1l
dGFsUGFyYW1ldGVyTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkpOwogICAgICAgICBhdXRv
IG1ldGFsUmV0dXJuTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCht
YWtlU3RyaW5nKG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywg
bWV0YWxQYXJhbWV0ZXJOYW1lLCAiIHgpIHtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIiAgICByZXR1cm4gYXRvbWljX2xvYWRfZXhwbGljaXQoeCwgbWVtb3J5X29yZGVyX3Jl
bGF4ZWQpO1xuIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAg
ICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgIG1ldGFsUmV0dXJu
TmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXJOYW1lLCAi
IHgpIHtcbiIKKyAgICAgICAgICAgICIgICAgcmV0dXJuIGF0b21pY19sb2FkX2V4cGxpY2l0KHgs
IG1lbW9yeV9vcmRlcl9yZWxheGVkKTtcbiIKKyAgICAgICAgICAgICJ9XG4iCisgICAgICAgICk7
CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCkBAIC01
NTMsOSArNjA3LDkgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQog
ICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6
ZSgpID09IDIpOwogICAgICAgICBhdXRvIG1ldGFsUGFyYW1ldGVyMU5hbWUgPSB0eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMo
KVswXS0+dHlwZSgpKTsKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlcjJOYW1lID0gdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0
ZXJzKClbMV0tPnR5cGUoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJp
bmcoInZvaWQgIiwgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyMU5hbWUs
ICIgeCwgIiwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiB5KSB7XG4iKSk7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIgICAgYXRvbWljX3N0b3JlX2V4cGxpY2l0KHgsIHksIG1lbW9yeV9v
cmRlcl9yZWxheGVkKTtcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInZvaWQgIiwgb3V0cHV0RnVu
Y3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyMU5hbWUsICIgeCwgIiwgbWV0YWxQYXJhbWV0
ZXIyTmFtZSwgIiB5KSB7XG4iCisgICAgICAgICAgICAiICAgIGF0b21pY19zdG9yZV9leHBsaWNp
dCh4LCB5LCBtZW1vcnlfb3JkZXJfcmVsYXhlZCk7XG4iCisgICAgICAgICAgICAifVxuIik7CiAg
ICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCkBAIC01OTAs
NDUgKzY0NCw1NSBAQCBTdHJpbmcgd3JpdGVOYXRpdmVGdW5jdGlvbihBU1Q6Ok5hdGl2ZUZ1CiAg
ICAgICAgIEFTU0VSVChpbmRleCA9PSBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRl
cnMoKS5zaXplKCkpOwogCiAgICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0ZXIxTmFtZSA9IHR5cGVO
YW1lci5tYW5nbGVkTmFtZUZvclR5cGUodGV4dHVyZVR5cGUpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJ2b2lkICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBt
ZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHRoZVRleHR1cmUiKSk7CisgICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoInZvaWQgIiwgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFs
UGFyYW1ldGVyMU5hbWUsICIgdGhlVGV4dHVyZSIpOwogICAgICAgICBpZiAoIXRleHR1cmVUeXBl
LmlzV3JpdGFibGVUZXh0dXJlKCkgJiYgdGV4dHVyZVR5cGUudGV4dHVyZURpbWVuc2lvbigpICE9
IDEpCiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCB1aW50IG1pcExldmVsIik7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiwgIiwgd2lkdGhUeXBl
TmFtZSwgIiB3aWR0aCIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgi
LCAiLCB3aWR0aFR5cGVOYW1lLCAiIHdpZHRoIik7CiAgICAgICAgIGlmICghaGVpZ2h0VHlwZU5h
bWUuaXNOdWxsKCkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5n
KCIsICIsIGhlaWdodFR5cGVOYW1lLCAiIGhlaWdodCIpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoIiwgIiwgaGVpZ2h0VHlwZU5hbWUsICIgaGVpZ2h0Iik7CiAg
ICAgICAgIGlmICghZGVwdGhUeXBlTmFtZS5pc051bGwoKSkKLSAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiwgIiwgZGVwdGhUeXBlTmFtZSwgIiBkZXB0aCIpKTsK
KyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiwgIiwgZGVwdGhUeXBl
TmFtZSwgIiBkZXB0aCIpOwogICAgICAgICBpZiAoIWVsZW1lbnRzVHlwZU5hbWUuaXNOdWxsKCkp
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIsICIsIGVsZW1l
bnRzVHlwZU5hbWUsICIgZWxlbWVudHMiKSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKCIsICIsIGVsZW1lbnRzVHlwZU5hbWUsICIgZWxlbWVudHMiKTsKICAgICAg
ICAgaWYgKCFudW1iZXJPZkxldmVsc1R5cGVOYW1lLmlzTnVsbCgpKQotICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiLCAiLCBudW1iZXJPZkxldmVsc1R5cGVOYW1l
LCAiIG51bWJlck9mTGV2ZWxzIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSB7
XG4iKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBpZiAod2lkdGgpXG4iKTsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAgICAgKndpZHRoID0gdGhlVGV4dHVy
ZS5nZXRfd2lkdGgoIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KCIsICIsIG51bWJlck9mTGV2ZWxzVHlwZU5hbWUsICIgbnVtYmVyT2ZMZXZlbHMiKTsKKyAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCisgICAgICAgICAgICAiKSB7XG4iCisgICAgICAgICAg
ICAiICAgIGlmICh3aWR0aClcbiIKKyAgICAgICAgICAgICIgICAgICAgICp3aWR0aCA9IHRoZVRl
eHR1cmUuZ2V0X3dpZHRoKCIKKyAgICAgICAgKTsKICAgICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5p
c1dyaXRhYmxlVGV4dHVyZSgpICYmIHRleHR1cmVUeXBlLnRleHR1cmVEaW1lbnNpb24oKSAhPSAx
KQogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIm1pcExldmVsIik7CiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7CiAgICAgICAgIGlmICghaGVpZ2h0VHlwZU5h
bWUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYg
KGhlaWdodClcbiIpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAgICAg
KmhlaWdodCA9IHRoZVRleHR1cmUuZ2V0X2hlaWdodCgiKTsKKyAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKAorICAgICAgICAgICAgICAgICIgICAgaWYgKGhlaWdodClcbiIKKyAgICAg
ICAgICAgICAgICAiICAgICAgICAqaGVpZ2h0ID0gdGhlVGV4dHVyZS5nZXRfaGVpZ2h0KCIKKyAg
ICAgICAgICAgICk7CiAgICAgICAgICAgICBpZiAoIXRleHR1cmVUeXBlLmlzV3JpdGFibGVUZXh0
dXJlKCkgJiYgdGV4dHVyZVR5cGUudGV4dHVyZURpbWVuc2lvbigpICE9IDEpCiAgICAgICAgICAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIm1pcExldmVsIik7CiAgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiKTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmICghZGVwdGhU
eXBlTmFtZS5pc051bGwoKSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAg
ICBpZiAoZGVwdGgpXG4iKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAg
ICAgICpkZXB0aCA9IHRoZVRleHR1cmUuZ2V0X2RlcHRoKCIpOworICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoCisgICAgICAgICAgICAgICAgIiAgICBpZiAoZGVwdGgpXG4iCisgICAg
ICAgICAgICAgICAgIiAgICAgICAgKmRlcHRoID0gdGhlVGV4dHVyZS5nZXRfZGVwdGgoIgorICAg
ICAgICAgICAgKTsKICAgICAgICAgICAgIGlmICghdGV4dHVyZVR5cGUuaXNXcml0YWJsZVRleHR1
cmUoKSAmJiB0ZXh0dXJlVHlwZS50ZXh0dXJlRGltZW5zaW9uKCkgIT0gMSkKICAgICAgICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgibWlwTGV2ZWwiKTsKICAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFlbGVtZW50
c1R5cGVOYW1lLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
ICAgIGlmIChlbGVtZW50cylcbiIpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
IiAgICAgICAgKmVsZW1lbnRzID0gdGhlVGV4dHVyZS5nZXRfYXJyYXlfc2l6ZSgpO1xuIik7Cisg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAiICAgIGlm
IChlbGVtZW50cylcbiIKKyAgICAgICAgICAgICAgICAiICAgICAgICAqZWxlbWVudHMgPSB0aGVU
ZXh0dXJlLmdldF9hcnJheV9zaXplKCk7XG4iCisgICAgICAgICAgICApOwogICAgICAgICB9CiAg
ICAgICAgIGlmICghbnVtYmVyT2ZMZXZlbHNUeXBlTmFtZS5pc051bGwoKSkgewotICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBpZiAobnVtYmVyT2ZMZXZlbHMpXG4iKTsKLSAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgICAgICpudW1iZXJPZkxldmVscyA9
IHRoZVRleHR1cmUuZ2V0X251bV9taXBfbGV2ZWxzKCk7XG4iKTsKKyAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKAorICAgICAgICAgICAgICAgICIgICAgaWYgKG51bWJlck9mTGV2ZWxz
KVxuIgorICAgICAgICAgICAgICAgICIgICAgICAgICpudW1iZXJPZkxldmVscyA9IHRoZVRleHR1
cmUuZ2V0X251bV9taXBfbGV2ZWxzKCk7XG4iCisgICAgICAgICAgICApOwogICAgICAgICB9CiAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsKICAgICAgICAgcmV0dXJuIHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTY4MywzNyArNzQ3LDQxIEBAIFN0cmluZyB3cml0ZU5h
dGl2ZUZ1bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlcjJO
YW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShpdGVtVHlwZSk7CiAgICAgICAgIGF1
dG8gbWV0YWxQYXJhbWV0ZXIzTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobG9j
YXRpb25UeXBlKTsKICAgICAgICAgYXV0byBtZXRhbElubmVyVHlwZU5hbWUgPSB0eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKGl0ZW1WZWN0b3JJbm5lclR5cGUpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJ2b2lkICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygn
LCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHRoZVRleHR1cmUsICIsIG1ldGFsUGFyYW1ldGVyMk5h
bWUsICIgaXRlbSwgIiwgbWV0YWxQYXJhbWV0ZXIzTmFtZSwgIiBsb2NhdGlvbikge1xuIikpOwor
ICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ2b2lkICIsIG91dHB1dEZ1bmN0
aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHRoZVRleHR1cmUsICIsIG1ldGFs
UGFyYW1ldGVyMk5hbWUsICIgaXRlbSwgIiwgbWV0YWxQYXJhbWV0ZXIzTmFtZSwgIiBsb2NhdGlv
bikge1xuIik7CiAgICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7CiAg
ICAgICAgICAgICBBU1NFUlQobG9jYXRpb25WZWN0b3JMZW5ndGggPiAxKTsKICAgICAgICAgICAg
IFN0cmluZyBkaW1lbnNpb25zW10gPSB7ICJ3aWR0aCJfc3RyLCAiaGVpZ2h0Il9zdHIsICJkZXB0
aCJfc3RyIH07CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxvY2F0aW9uVmVjdG9y
TGVuZ3RoIC0gMTsgKytpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBzdWZmaXggPSAieHl6dyJf
c3RyLnN1YnN0cmluZyhpLCAxKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChtYWtlU3RyaW5nKCIgICAgaWYgKGxvY2F0aW9uLiIsIHN1ZmZpeCwgIiA+PSB0aGVUZXh0dXJl
LmdldF8iLCBkaW1lbnNpb25zW2ldLCAiKCkpIHJldHVybjtcbiIpKTsKKyAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgaWYgKGxvY2F0aW9uLiIsIHN1ZmZp
eCwgIiA+PSB0aGVUZXh0dXJlLmdldF8iLCBkaW1lbnNpb25zW2ldLCAiKCkpIHJldHVybjtcbiIp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYXV0byBzdWZmaXggPSAieHl6dyJfc3RyLnN1
YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpOwotICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIGlmIChsb2NhdGlvbi4iLCBzdWZmaXgsICIg
Pj0gdGhlVGV4dHVyZS5nZXRfYXJyYXlfc2l6ZSgpKSByZXR1cm47XG4iKSk7CisgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgaWYgKGxvY2F0aW9uLiIsIHN1ZmZp
eCwgIiA+PSB0aGVUZXh0dXJlLmdldF9hcnJheV9zaXplKCkpIHJldHVybjtcbiIpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID09IDEpCi0g
ICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIGlmIChs
b2NhdGlvbiA+PSB0aGVUZXh0dXJlLmdldF93aWR0aCgpKSByZXR1cm47XG4iKSk7CisgICAgICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBpZiAobG9jYXRpb24gPj0gdGhlVGV4
dHVyZS5nZXRfd2lkdGgoKSkgcmV0dXJuO1xuIik7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgaWYgKGxvY2F0
aW9uLnggPj0gdGhlVGV4dHVyZS5nZXRfd2lkdGgoKSkgcmV0dXJuO1xuIikpOwotICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBpZiAobG9jYXRpb24u
eSA+PSB0aGVUZXh0dXJlLmdldF9oZWlnaHQoKSkgcmV0dXJuO1xuIikpOworICAgICAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAiICAgIGlmIChs
b2NhdGlvbi54ID49IHRoZVRleHR1cmUuZ2V0X3dpZHRoKCkpIHJldHVybjtcbiIKKyAgICAgICAg
ICAgICAgICAgICAgIiAgICBpZiAobG9jYXRpb24ueSA+PSB0aGVUZXh0dXJlLmdldF9oZWlnaHQo
KSkgcmV0dXJuO1xuIgorICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgaWYgKGxv
Y2F0aW9uVmVjdG9yTGVuZ3RoID49IDMpCi0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBpZiAobG9jYXRpb24ueiA+PSB0aGVUZXh0dXJlLmdl
dF9kZXB0aCgpKSByZXR1cm47XG4iKSk7CisgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIgICAgaWYgKGxvY2F0aW9uLnogPj0gdGhlVGV4dHVyZS5nZXRfZGVwdGgoKSkg
cmV0dXJuO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIHRoZVRleHR1cmUud3JpdGUodmVjPCIsIG1ldGFs
SW5uZXJUeXBlTmFtZSwgIiwgND4oaXRlbSIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgiICAgIHRoZVRleHR1cmUud3JpdGUodmVjPCIsIG1ldGFsSW5uZXJUeXBlTmFt
ZSwgIiwgND4oaXRlbSIpOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQgLSBpdGVtVmVj
dG9yTGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAwIik7
CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLCAiKTsKICAgICAgICAgaWYgKHRleHR1
cmVUeXBlLmlzVGV4dHVyZUFycmF5KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvblZl
Y3Rvckxlbmd0aCA+IDEpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0
cmluZygidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAiKGxv
Y2F0aW9uLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAsIGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0g
MSksICIpLCB1aW50KGxvY2F0aW9uLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVj
dG9yTGVuZ3RoIC0gMSwgMSksICIpIikpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEp
LCAiKGxvY2F0aW9uLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAsIGxvY2F0aW9uVmVjdG9yTGVu
Z3RoIC0gMSksICIpLCB1aW50KGxvY2F0aW9uLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0
aW9uVmVjdG9yTGVuZ3RoIC0gMSwgMSksICcpJyk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygidWludCIsIHZlY3RvclN1ZmZpeChs
b2NhdGlvblZlY3Rvckxlbmd0aCksICIobG9jYXRpb24pIikpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiKTtcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7
CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ1aW50IiwgdmVjdG9y
U3VmZml4KGxvY2F0aW9uVmVjdG9yTGVuZ3RoKSwgIihsb2NhdGlvbikiKTsKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoCisgICAgICAgICAgICAiKTtcbiIpOworICAgICAgICAgICAgIn1c
biIKKyAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMVHlwZU5hbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAJKHJldmlzaW9uIDI0Nzg5MykK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5h
bWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYxLDcgKzM2MSw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mIHN0cnVjdHVyZURl
ZmluaXRpb24pCiAgICAgewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJp
bmcoInN0cnVjdCAiLCBtX21hbmdsZWROYW1lRm9yTmFtZWRUeXBlKHN0cnVjdHVyZURlZmluaXRp
b24pLCAiO1xuIikpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInN0
cnVjdCAiLCBtX21hbmdsZWROYW1lRm9yTmFtZWRUeXBlKHN0cnVjdHVyZURlZmluaXRpb24pLCAi
O1xuIik7CiAgICAgfQogCiAgICAgc3RkOjpmdW5jdGlvbjxTdHJpbmcoQVNUOjpOYW1lZFR5cGUm
KT4gbV9tYW5nbGVkTmFtZUZvck5hbWVkVHlwZTsKQEAgLTM4NiwyMiArMzg2LDI0IEBAIHZvaWQg
VHlwZU5hbWVyOjplbWl0VW5uYW1lZFR5cGVEZWZpbml0aW8KICAgICBpZiAoaXM8UmVmZXJlbmNl
VHlwZU5hbWVOb2RlPihiYXNlVHlwZU5hbWVOb2RlKSkgewogICAgICAgICBhdXRvJiBuYW1lZFR5
cGUgPSBkb3duY2FzdDxSZWZlcmVuY2VUeXBlTmFtZU5vZGU+KGJhc2VUeXBlTmFtZU5vZGUpLm5h
bWVkVHlwZSgpOwogICAgICAgICBlbWl0TmFtZWRUeXBlRGVmaW5pdGlvbihuYW1lZFR5cGUsIGVt
aXR0ZWROYW1lZFR5cGVzLCBlbWl0dGVkVW5uYW1lZFR5cGVzLCBzdHJpbmdCdWlsZGVyKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygidHlwZWRlZiAiLCBtYW5nbGVk
TmFtZUZvclR5cGUobmFtZWRUeXBlKSwgJyAnLCBiYXNlVHlwZU5hbWVOb2RlLm1hbmdsZWROYW1l
KCksICI7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInR5cGVk
ZWYgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKG5hbWVkVHlwZSksICcgJywgYmFzZVR5cGVOYW1lTm9k
ZS5tYW5nbGVkTmFtZSgpLCAiO1xuIik7CiAgICAgfSBlbHNlIGlmIChpczxQb2ludGVyVHlwZU5h
bWVOb2RlPihiYXNlVHlwZU5hbWVOb2RlKSkgewogICAgICAgICBhdXRvJiBwb2ludGVyVHlwZSA9
IGRvd25jYXN0PFBvaW50ZXJUeXBlTmFtZU5vZGU+KGJhc2VUeXBlTmFtZU5vZGUpOwogICAgICAg
ICBBU1NFUlQoYmFzZVR5cGVOYW1lTm9kZS5wYXJlbnQoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1ha2VTdHJpbmcoInR5cGVkZWYgIiwgdG9TdHJpbmcocG9pbnRlclR5cGUuYWRk
cmVzc1NwYWNlKCkpLCAiICIsIHBvaW50ZXJUeXBlLnBhcmVudCgpLT5tYW5nbGVkTmFtZSgpLCAi
KiAiLCBwb2ludGVyVHlwZS5tYW5nbGVkTmFtZSgpLCAiO1xuIikpOworICAgICAgICBzdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ0eXBlZGVmICIsIHRvU3RyaW5nKHBvaW50ZXJUeXBlLmFk
ZHJlc3NTcGFjZSgpKSwgJyAnLCBwb2ludGVyVHlwZS5wYXJlbnQoKS0+bWFuZ2xlZE5hbWUoKSwg
IiogIiwgcG9pbnRlclR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpOwogICAgIH0gZWxzZSBpZiAo
aXM8QXJyYXlSZWZlcmVuY2VUeXBlTmFtZU5vZGU+KGJhc2VUeXBlTmFtZU5vZGUpKSB7CiAgICAg
ICAgIGF1dG8mIGFycmF5UmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0PEFycmF5UmVmZXJlbmNlVHlw
ZU5hbWVOb2RlPihiYXNlVHlwZU5hbWVOb2RlKTsKICAgICAgICAgQVNTRVJUKGJhc2VUeXBlTmFt
ZU5vZGUucGFyZW50KCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5n
KCJzdHJ1Y3QgIiwgYXJyYXlSZWZlcmVuY2VUeXBlLm1hbmdsZWROYW1lKCksICJ7IFxuIikpOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgIiwgdG9TdHJpbmco
YXJyYXlSZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpKSwgIiAiLCBhcnJheVJlZmVyZW5jZVR5
cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIqIHBvaW50ZXI7XG4iKSk7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgdWludDMyX3QgbGVuZ3RoO1xuIik7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCJ9O1xuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoCisgICAgICAgICAgICAic3RydWN0ICIsIGFycmF5UmVmZXJlbmNlVHlwZS5tYW5n
bGVkTmFtZSgpLCAieyBcbiIKKyAgICAgICAgICAgICIgICAgIiwgdG9TdHJpbmcoYXJyYXlSZWZl
cmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpKSwgJyAnLCBhcnJheVJlZmVyZW5jZVR5cGUucGFyZW50
KCktPm1hbmdsZWROYW1lKCksICIqIHBvaW50ZXI7XG4iCisgICAgICAgICAgICAiICAgIHVpbnQz
Ml90IGxlbmd0aDtcbiIKKyAgICAgICAgICAgICJ9O1xuIgorICAgICAgICApOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFycmF5VHlwZU5hbWVOb2Rl
PihiYXNlVHlwZU5hbWVOb2RlKTsKICAgICAgICAgQVNTRVJUKGJhc2VUeXBlTmFtZU5vZGUucGFy
ZW50KCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJ0eXBlZGVm
IGFycmF5PCIsIGFycmF5VHlwZS5wYXJlbnQoKS0+bWFuZ2xlZE5hbWUoKSwgIiwgIiwgYXJyYXlU
eXBlLm51bUVsZW1lbnRzKCksICI+ICIsIGFycmF5VHlwZS5tYW5nbGVkTmFtZSgpLCAiO1xuIikp
OworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ0eXBlZGVmIGFycmF5PCIs
IGFycmF5VHlwZS5wYXJlbnQoKS0+bWFuZ2xlZE5hbWUoKSwgIiwgIiwgYXJyYXlUeXBlLm51bUVs
ZW1lbnRzKCksICI+ICIsIGFycmF5VHlwZS5tYW5nbGVkTmFtZSgpLCAiO1xuIik7CiAgICAgfQog
ICAgIGVtaXR0ZWRVbm5hbWVkVHlwZXMuYWRkKCZiYXNlVHlwZU5hbWVOb2RlKTsKIH0KQEAgLTQx
NywyMSArNDE5LDIxIEBAIHZvaWQgVHlwZU5hbWVyOjplbWl0TmFtZWRUeXBlRGVmaW5pdGlvbigK
ICAgICBpZiAoaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KG5hbWVkVHlwZSkpIHsKICAg
ICAgICAgYXV0byYgZW51bWVyYXRpb25EZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpFbnVtZXJh
dGlvbkRlZmluaXRpb24+KG5hbWVkVHlwZSk7CiAgICAgICAgIGF1dG8mIGJhc2VUeXBlID0gZW51
bWVyYXRpb25EZWZpbml0aW9uLnR5cGUoKS51bmlmeU5vZGUoKTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQobWFrZVN0cmluZygiZW51bSBjbGFzcyAiLCBtYW5nbGVkTmFtZUZvclR5cGUo
ZW51bWVyYXRpb25EZWZpbml0aW9uKSwgIiA6ICIsIG1hbmdsZWROYW1lRm9yVHlwZShkb3duY2Fz
dDxBU1Q6Ok5hbWVkVHlwZT4oYmFzZVR5cGUpKSwgIiB7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoImVudW0gY2xhc3MgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKGVu
dW1lcmF0aW9uRGVmaW5pdGlvbiksICIgOiAiLCBtYW5nbGVkTmFtZUZvclR5cGUoZG93bmNhc3Q8
QVNUOjpOYW1lZFR5cGU+KGJhc2VUeXBlKSksICIge1xuIik7CiAgICAgICAgIGZvciAoYXV0byYg
ZW51bWVyYXRpb25NZW1iZXIgOiBlbnVtZXJhdGlvbkRlZmluaXRpb24uZW51bWVyYXRpb25NZW1i
ZXJzKCkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAg
IiwgbWFuZ2xlZE5hbWVGb3JFbnVtZXJhdGlvbk1lbWJlcihlbnVtZXJhdGlvbk1lbWJlciksICIg
PSAiLCBlbnVtZXJhdGlvbk1lbWJlci5nZXQoKS52YWx1ZSgpLCAiLFxuIikpOworICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIG1hbmdsZWROYW1lRm9yRW51
bWVyYXRpb25NZW1iZXIoZW51bWVyYXRpb25NZW1iZXIpLCAiID0gIiwgZW51bWVyYXRpb25NZW1i
ZXIuZ2V0KCkudmFsdWUoKSwgIixcbiIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
fTtcbiIpOwogICAgIH0gZWxzZSBpZiAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KG5h
bWVkVHlwZSkpIHsKICAgICAgICAgLy8gTmF0aXZlIHR5cGVzIGFscmVhZHkgaGF2ZSBkZWZpbml0
aW9ucy4gVGhlcmUncyBub3RoaW5nIHRvIGRvLgogICAgIH0gZWxzZSBpZiAoaXM8QVNUOjpTdHJ1
Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpKSB7CiAgICAgICAgIGF1dG8mIHN0cnVjdHVyZURl
ZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24+KG5hbWVkVHlwZSk7
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInN0cnVjdCAiLCBtYW5n
bGVkTmFtZUZvclR5cGUoc3RydWN0dXJlRGVmaW5pdGlvbiksICIge1xuIikpOworICAgICAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJzdHJ1Y3QgIiwgbWFuZ2xlZE5hbWVGb3JUeXBl
KHN0cnVjdHVyZURlZmluaXRpb24pLCAiIHtcbiIpOwogICAgICAgICBmb3IgKGF1dG8mIHN0cnVj
dHVyZUVsZW1lbnQgOiBzdHJ1Y3R1cmVEZWZpbml0aW9uLnN0cnVjdHVyZUVsZW1lbnRzKCkpCi0g
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgIiwgbWFuZ2xl
ZE5hbWVGb3JUeXBlKHN0cnVjdHVyZUVsZW1lbnQudHlwZSgpKSwgJyAnLCBtYW5nbGVkTmFtZUZv
clN0cnVjdHVyZUVsZW1lbnQoc3RydWN0dXJlRWxlbWVudCksICI7XG4iKSk7CisgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgIiwgbWFuZ2xlZE5hbWVGb3JUeXBl
KHN0cnVjdHVyZUVsZW1lbnQudHlwZSgpKSwgJyAnLCBtYW5nbGVkTmFtZUZvclN0cnVjdHVyZUVs
ZW1lbnQoc3RydWN0dXJlRWxlbWVudCksICI7XG4iKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIn07XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBhdXRvJiB0eXBlRGVmaW5pdGlv
biA9IGRvd25jYXN0PEFTVDo6VHlwZURlZmluaXRpb24+KG5hbWVkVHlwZSk7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInR5cGVkZWYgIiwgbWFuZ2xlZE5hbWVGb3JU
eXBlKHR5cGVEZWZpbml0aW9uLnR5cGUoKSksICcgJywgbWFuZ2xlZE5hbWVGb3JUeXBlKHR5cGVE
ZWZpbml0aW9uKSwgIjtcbiIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgidHlwZWRlZiAiLCBtYW5nbGVkTmFtZUZvclR5cGUodHlwZURlZmluaXRpb24udHlwZSgpKSwg
JyAnLCBtYW5nbGVkTmFtZUZvclR5cGUodHlwZURlZmluaXRpb24pLCAiO1xuIik7CiAgICAgfQog
ICAgIGVtaXR0ZWROYW1lZFR5cGVzLmFkZCgmbmFtZWRUeXBlKTsKIH0KQEAgLTQ4NywxMSArNDg5
LDcgQEAgU3RyaW5nIFR5cGVOYW1lcjo6bWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cgogU3RyaW5nIFR5
cGVOYW1lcjo6bWV0YWxUeXBlcygpCiB7CiAgICAgVmlzaXRvcjo6dmlzaXQobV9wcm9ncmFtKTsK
LSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQobWV0YWxUeXBlRGVjbGFyYXRpb25zKCkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdc
bicpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ldGFsVHlwZURlZmluaXRpb25zKCkpOwot
ICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1ha2VTdHJp
bmcobWV0YWxUeXBlRGVjbGFyYXRpb25zKCksICdcbicsIG1ldGFsVHlwZURlZmluaXRpb25zKCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBNZXRhbApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHJldmlzaW9uIDI0Nzg5MykK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzY2LDE0ICsxMzY2LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpsb2dMYXllckluZm8KICAgICBhYnNvbHV0ZUJvdW5kcy5tb3ZlKGxheWVyLm9mZnNl
dEZyb21BbmNlc3RvcihtX3JlbmRlclZpZXcubGF5ZXIoKSkpOwogICAgIAogICAgIFN0cmluZ0J1
aWxkZXIgbG9nU3RyaW5nOwotICAgIGxvZ1N0cmluZy5hcHBlbmQobWFrZVN0cmluZyhwYWQoJyAn
LCAxMiArIGRlcHRoICogMiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PigmbGF5ZXIp
KSksICIgaWQgIiwgYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5wcmltYXJ5TGF5ZXJJRCgpLCAi
ICgiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYWJzb2x1dGVCb3VuZHMueCgpLnRvRmxv
YXQoKSwgMyksICcsJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGFic29sdXRlQm91bmRz
LnkoKS50b0Zsb2F0KCksIDMpLCAnLScsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChhYnNv
bHV0ZUJvdW5kcy5tYXhYKCkudG9GbG9hdCgpLCAzKSwgJywnLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkV2lkdGgoYWJzb2x1dGVCb3VuZHMubWF4WSgpLnRvRmxvYXQoKSwgMyksICIpICIsIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRXaWR0aChiYWNraW5nLT5iYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0
ZSgpIC8gMTAyNCwgMiksICJLQiIpKTsKKyAgICBsb2dTdHJpbmcuZmxleGlibGVBcHBlbmQocGFk
KCcgJywgMTIgKyBkZXB0aCAqIDIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJmxh
eWVyKSkpLCAiIGlkICIsIGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+cHJpbWFyeUxheWVySUQo
KSwgIiAoIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGFic29sdXRlQm91bmRzLngoKS50
b0Zsb2F0KCksIDMpLCAnLCcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChhYnNvbHV0ZUJv
dW5kcy55KCkudG9GbG9hdCgpLCAzKSwgJy0nLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgo
YWJzb2x1dGVCb3VuZHMubWF4WCgpLnRvRmxvYXQoKSwgMyksICcsJywgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFdpZHRoKGFic29sdXRlQm91bmRzLm1heFkoKS50b0Zsb2F0KCksIDMpLCAiKSAiLCBG
b3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYmFja2luZy0+YmFja2luZ1N0b3JlTWVtb3J5RXN0
aW1hdGUoKSAvIDEwMjQsIDIpLCAiS0IiKTsKIAogICAgIGlmICghbGF5ZXIucmVuZGVyZXIoKS5z
dHlsZSgpLmhhc0F1dG9aSW5kZXgoKSkKLSAgICAgICAgbG9nU3RyaW5nLmFwcGVuZChtYWtlU3Ry
aW5nKCIgei1pbmRleDogIiwgbGF5ZXIucmVuZGVyZXIoKS5zdHlsZSgpLnpJbmRleCgpKSk7Cisg
ICAgICAgIGxvZ1N0cmluZy5mbGV4aWJsZUFwcGVuZCgiIHotaW5kZXg6ICIsIGxheWVyLnJlbmRl
cmVyKCkuc3R5bGUoKS56SW5kZXgoKSk7CiAKLSAgICBsb2dTdHJpbmcuYXBwZW5kTGl0ZXJhbCgi
ICgiKTsKLSAgICBsb2dTdHJpbmcuYXBwZW5kKGxvZ1JlYXNvbnNGb3JDb21wb3NpdGluZyhsYXll
cikpOwotICAgIGxvZ1N0cmluZy5hcHBlbmRMaXRlcmFsKCIpICIpOworICAgIGxvZ1N0cmluZy5m
bGV4aWJsZUFwcGVuZCgiICgiLCBsb2dSZWFzb25zRm9yQ29tcG9zaXRpbmcobGF5ZXIpLCAiKSAi
KTsKIAogICAgIGlmIChiYWNraW5nLT5ncmFwaGljc0xheWVyKCktPmNvbnRlbnRzT3BhcXVlKCkg
fHwgYmFja2luZy0+cGFpbnRzSW50b0NvbXBvc2l0ZWRBbmNlc3RvcigpIHx8IGJhY2tpbmctPmZv
cmVncm91bmRMYXllcigpIHx8IGJhY2tpbmctPmJhY2tncm91bmRMYXllcigpKSB7CiAgICAgICAg
IGxvZ1N0cmluZy5hcHBlbmQoJ1snKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAJKHJldmlzaW9uIDI0Nzg5MykKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAwMSw3ICs1MDAxLDcgQEAgU3RyaW5nIEludGVy
bmFsczo6b25nb2luZ0xvYWRzRGVzY3JpcHRpbwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnWycp
OwogCiAgICAgICAgIGZvciAoYXV0byYgaW5mbyA6IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2Fk
ZXJTdHJhdGVneSgpLT5pbnRlcm1lZGlhdGVMb2FkSW5mb3JtYXRpb25Gcm9tUmVzb3VyY2VMb2Fk
SWRlbnRpZmllcihpZGVudGlmaWVyKSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1ha2VT
dHJpbmcoIlsiLCAoaW50KWluZm8udHlwZSwgIixcIiIsIGluZm8ucmVxdWVzdC51cmwoKS5zdHJp
bmcoKSwgIlwiLFwiIiwgaW5mby5yZXF1ZXN0Lmh0dHBNZXRob2QoKSwgIlwiLCIsIGluZm8ucmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgIl0iKSk7CisgICAgICAgICAgICBidWlsZGVyLmZsZXhp
YmxlQXBwZW5kKCdbJywgKGludClpbmZvLnR5cGUsICIsXCIiLCBpbmZvLnJlcXVlc3QudXJsKCku
c3RyaW5nKCksICJcIixcIiIsIGluZm8ucmVxdWVzdC5odHRwTWV0aG9kKCksICJcIiwiLCBpbmZv
LnJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksICddJyk7CiAKICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJ10nKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375091</attachid>
            <date>2019-07-29 12:34:27 -0700</date>
            <delta_ts>2019-07-29 13:12:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200034-20190729123426.patch</filename>
            <type>text/plain</type>
            <size>91607</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0Nzg5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBACisyMDE5LTA3LTI5ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQo
bWFrZVN0cmluZyguLi4pKSBpcyBpbmVmZmljaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMDM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2Fh
bSBCYXJhdGkuCisKKyAgICAgICAgUmVwbGFjZSB1c2VzIG9mIFN0cmluZ0J1aWxkZXI6OmFwcGVu
ZChtYWtlU3RyaW5nKC4uLikpIHdpdGggU3RyaW5nQnVpbGRlcjo6ZmxleGlibEFwcGVuZCguLi4p
LgorICAgICAgICBXaGVyZSBwb3NzaWJsZSwgYWxzbyBtZXJnZWQgY29uc2VjdXRpdmUgY2FsbHMg
dG8gU3RyaW5nQnVpbGRlcjo6YXBwZW5kKC4uLikgaW50byBhIHNpbmdsZSBjYWxsCisgICAgICAg
IHRvIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxBcHBlbmQoLi4uKSB0byBhdm9pZCB1bm5lY2Vzc2Fy
eSBhZGRpdGlvbmFsIG92ZXJmbG93IGNoZWNrcyBhbmQgcmVzaXplcy4KKyAgICAgICAgQWxzbyB3
aGVyZSBwb3NzaWJsZSwgcmVwbGFjZWQgU3RyaW5nQnVpbGRlciB3aXRoIG1ha2VTdHJpbmcoKSBp
ZiBubyBicmFuY2hpbmcgd2FzIHVzZWQgZHVyaW5nCisgICAgICAgIGNvbnN0cnVjdGlvbi4KKyAg
ICAgICAgCisgICAgICAgIEEgbG90IG1vcmUgY2FuIGJlIGRvbmUgdG8gaW1wcm92ZSB0aGUgZWZm
aWNpZW5jeSBvZiBTdHJpbmdCdWlsZGVyIHVzZSBpbiB0aGUgV0hMU0wgY29kZSBpbmNsdWRpbmc6
CisgICAgICAgIC0gVXNpbmcgU3RyaW5nVmlldyBtb3JlIHByZXZlbGVudGx5LCBlc3BlY2lhbGx5
IHdoZW4gcGFzc2luZyBhIHN1YnN0cmluZyB0byB0aGUgU3RyaW5nQnVpbGRlci4KKyAgICAgICAg
LSBQYXNzaW5nIGV4aXN0aW5nIFN0cmluZ0J1aWxkZXJzIHRvIGZ1bmN0aW9ucyBmb3IgdGhlbSB0
byB1c2UgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGEgU3RyaW5nIGFuZCAKKyAgICAgICAgICB0aGVu
IGFwcGVuZGluZyB0aGF0IHRvIGFub3RoZXIgU3RyaW5nQnVpbGRlci4KKyAgICAgICAgLSBVc2lu
ZyBjdXN0b20gU3RyaW5nVHlwZUFkYXB0ZXJzIGZvciBnZW5lcmF0ZWQgbmFtZXMsIHJhdGhlciB0
aGFuIHN0b3JpbmcgdGhlbSBhcyBTdHJpbmdzLiAKKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpNZXRhbDo6RW50cnlQb2ludFNjYWZmb2xkaW5nOjpyZXNvdXJjZUhlbHBl
clR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RW50cnlQb2ludFNjYWZm
b2xkaW5nOjpyZXNvdXJjZVNpZ25hdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0
YWw6OkVudHJ5UG9pbnRTY2FmZm9sZGluZzo6YnVpbHRJbnNTaWduYXR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpFbnRyeVBvaW50U2NhZmZvbGRpbmc6Om1hbmdsZWRJbnB1
dFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpFbnRyeVBvaW50U2NhZmZv
bGRpbmc6Om1hbmdsZWRPdXRwdXRQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6RW50cnlQb2ludFNjYWZmb2xkaW5nOjp1bnBhY2tSZXNvdXJjZXNBbmROYW1lZEJ1aWx0SW5z
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6VmVydGV4RW50cnlQb2ludFNjYWZm
b2xkaW5nOjpoZWxwZXJUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlZl
cnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6c2lnbmF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpNZXRhbDo6VmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nOjp1bnBhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6
OnBhY2spOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpGcmFnbWVudEVudHJ5UG9p
bnRTY2FmZm9sZGluZzo6aGVscGVyVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1l
dGFsOjpGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6c2lnbmF0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OnVu
cGFjayk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkZyYWdtZW50RW50cnlQb2lu
dFNjYWZmb2xkaW5nOjpwYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6Q29t
cHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZzo6c2lnbmF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpNZXRhbDo6RnVuY3Rpb25EZWNsYXJhdGlvbldyaXRlcjo6dmlzaXQpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6
OkZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0
YWw6OkZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6Ok1ldGFsOjpGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmVtaXRMb29wKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE1ldGFsQ29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OmdlbmVyYXRlTWV0YWxDb2RlU2hh
cmVkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1
bmN0aW9uV3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6d3JpdGVO
YXRpdmVGdW5jdGlvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xUeXBlTmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpNZXRhbFR5
cGVEZWNsYXJhdGlvbldyaXRlcjo6dmlzaXQpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1l
dGFsOjpUeXBlTmFtZXI6OmVtaXRVbm5hbWVkVHlwZURlZmluaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6Ok1ldGFsOjpUeXBlTmFtZXI6OmVtaXROYW1lZFR5cGVEZWZpbml0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6VHlwZU5hbWVyOjptZXRhbFR5cGVzKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6VHlwZXM6OmFwcGVuZE5hbWVUbyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OmxvZ0xheWVySW5mbyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpvbmdvaW5nTG9hZHNEZXNjcmlw
dGlvbnMgY29uc3QpOgorCiAyMDE5LTA3LTI3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXSExTTF0gUmVtb3ZlIFVubmFtZWRUeXBlIGNvcHkvbW92ZSBjb25z
dHJ1Y3RvcnMgYW5kIG1hcmsgY2xhc3NlcyBhcyBmaW5hbApJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAkocmV2aXNpb24g
MjQ3ODkzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJz
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsOCArMTU4LDcgQEAgc3RydWN0IFR5cGVzIHsK
IAogICAgIHN0YXRpYyB2b2lkIGFwcGVuZE5hbWVUbyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyKQog
ICAgIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoVG9rZW46OnR5cGVOYW1lKHQpKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoIiwgIik7CisgICAgICAgIGJ1aWxkZXIuZmxleGlibGVBcHBlbmQo
VG9rZW46OnR5cGVOYW1lKHQpLCAiLCAiKTsKICAgICAgICAgVHlwZXM8dHMuLi4+OjphcHBlbmRO
YW1lVG8oYnVpbGRlcik7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVu
dHJ5UG9pbnRTY2FmZm9sZGluZy5jcHAJKHJldmlzaW9uIDI0Nzg5MykKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5n
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIFN0cmluZyBFbnRyeVBvaW50
U2NhZmZvbGRpbmc6OnJlc291cmNlSGUKIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxk
ZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xheW91dC5zaXplKCk7ICsraSkgewot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJzdHJ1Y3QgIiwgbV9uYW1l
ZEJpbmRHcm91cHNbaV0uc3RydWN0TmFtZSwgIiB7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoInN0cnVjdCAiLCBtX25hbWVkQmluZEdyb3Vwc1tpXS5zdHJ1Y3RO
YW1lLCAiIHtcbiIpOwogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPHVuc2lnbmVkLCBTdHJpbmc+
PiBzdHJ1Y3RJdGVtczsKICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBtX2xheW91dFtp
XS5iaW5kaW5ncy5zaXplKCk7ICsraikgewogICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1f
cmVzb3VyY2VNYXAuZmluZCgmbV9sYXlvdXRbaV0uYmluZGluZ3Nbal0pOwpAQCAtMTcxLDcgKzE3
MSw3IEBAIFN0cmluZyBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OnJlc291cmNlSGUKICAgICAgICAg
ICAgIHJldHVybiBsZWZ0LmZpcnN0IDwgcmlnaHQuZmlyc3Q7CiAgICAgICAgIH0pOwogICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHN0cnVjdEl0ZW0gOiBzdHJ1Y3RJdGVtcykKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICAiLCBzdHJ1Y3RJdGVtLnNlY29u
ZCwgJ1xuJykpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAg
ICIsIHN0cnVjdEl0ZW0uc2Vjb25kLCAnXG4nKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIn07XG5cbiIpOwogICAgIH0KICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygp
OwpAQCAtMTg3LDcgKzE4Nyw3IEBAIE9wdGlvbmFsPFN0cmluZz4gRW50cnlQb2ludFNjYWZmb2xk
aW5nOjoKICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
LCAiKTsKICAgICAgICAgYXV0byYgbmFtZWRCaW5kR3JvdXAgPSBtX25hbWVkQmluZEdyb3Vwc1tp
XTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiZGV2aWNlICIsIG5h
bWVkQmluZEdyb3VwLnN0cnVjdE5hbWUsICImICIsIG5hbWVkQmluZEdyb3VwLnZhcmlhYmxlTmFt
ZSwgIiBbW2J1ZmZlcigiLCBuYW1lZEJpbmRHcm91cC5hcmd1bWVudEJ1ZmZlckluZGV4LCAiKV1d
IikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJkZXZpY2UgIiwgbmFt
ZWRCaW5kR3JvdXAuc3RydWN0TmFtZSwgIiYgIiwgbmFtZWRCaW5kR3JvdXAudmFyaWFibGVOYW1l
LCAiIFtbYnVmZmVyKCIsIG5hbWVkQmluZEdyb3VwLmFyZ3VtZW50QnVmZmVySW5kZXgsICIpXV0i
KTsKICAgICB9CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAgLTI0
Myw3ICsyNDMsNyBAQCBPcHRpb25hbDxTdHJpbmc+IEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6CiAg
ICAgICAgIGlmIChpbnRlcm5hbFR5cGUuaXNOdWxsKCkpCiAgICAgICAgICAgICBpbnRlcm5hbFR5
cGUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKml0ZW0udW5uYW1lZFR5cGUpOwog
ICAgICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IG5hbWVkQnVpbHRJbi52YXJpYWJsZU5hbWU7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoaW50ZXJuYWxUeXBlLCAnICcs
IHZhcmlhYmxlTmFtZSwgJyAnLCBhdHRyaWJ1dGVGb3JTZW1hbnRpYyhidWlsdEluU2VtYW50aWMp
KSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoaW50ZXJuYWxUeXBlLCAn
ICcsIHZhcmlhYmxlTmFtZSwgJyAnLCBhdHRyaWJ1dGVGb3JTZW1hbnRpYyhidWlsdEluU2VtYW50
aWMpKTsKICAgICB9CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAg
LTI3Miw3ICsyNzIsNyBAQCBTdHJpbmcgRW50cnlQb2ludFNjYWZmb2xkaW5nOjptYW5nbGVkSW5w
CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKICAgICAgICAgYXV0byogbmV4
dCA9IHN0cnVjdHVyZURlZmluaXRpb24tPmZpbmQocGF0aFtpXSk7CiAgICAgICAgIEFTU0VSVChu
ZXh0KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygnLicsIG1fdHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudCgqbmV4dCkpKTsKKyAgICAgICAg
c3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgnLicsIG1fdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yU3RydWN0dXJlRWxlbWVudCgqbmV4dCkpOwogICAgICAgICBzdHJ1Y3R1cmVEZWZpbml0aW9u
ID0gbnVsbHB0cjsKICAgICAgICAgYXV0byYgdW5pZnlOb2RlID0gbmV4dC0+dHlwZSgpLnVuaWZ5
Tm9kZSgpOwogICAgICAgICBpZiAoaXM8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpIHsKQEAg
LTI5Niw3ICsyOTYsNyBAQCBTdHJpbmcgRW50cnlQb2ludFNjYWZmb2xkaW5nOjptYW5nbGVkT3V0
CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKICAgICAgICAgYXV0byogbmV4
dCA9IHN0cnVjdHVyZURlZmluaXRpb24tPmZpbmQoY29tcG9uZW50KTsKICAgICAgICAgQVNTRVJU
KG5leHQpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCcuJywgbV90
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpuZXh0KSkpOworICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCcuJywgbV90eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JTdHJ1Y3R1cmVFbGVtZW50KCpuZXh0KSk7CiAgICAgICAgIHN0cnVjdHVyZURlZmluaXRp
b24gPSBudWxscHRyOwogICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSBuZXh0LT50eXBlKCkudW5p
ZnlOb2RlKCk7CiAgICAgICAgIGlmIChpczxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKSkgewpA
QCAtMzEzLDcgKzMxMyw3IEBAIFN0cmluZyBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OnVucGFja1Jl
c28KIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kp
Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV90eXBlTmFtZXIubWFu
Z2xlZE5hbWVGb3JUeXBlKCptX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0tPnR5
cGUoKSksICcgJywgbV9wYXJhbWV0ZXJWYXJpYWJsZXNbaV0sICI7XG4iKSk7CisgICAgICAgIHN0
cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBl
KCptX2Z1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKClbaV0tPnR5cGUoKSksICcgJywgbV9w
YXJhbWV0ZXJWYXJpYWJsZXNbaV0sICI7XG4iKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9sYXlvdXQuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byB2YXJpYWJsZU5hbWUgPSBt
X25hbWVkQmluZEdyb3Vwc1tpXS52YXJpYWJsZU5hbWU7CkBAIC0zMzAsMTYgKzMzMCwxOCBAQCBT
dHJpbmcgRW50cnlQb2ludFNjYWZmb2xkaW5nOjp1bnBhY2tSZXNvCiAgICAgICAgICAgICAgICAg
YXV0byYgdW5uYW1lZFR5cGUgPSAqbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW2l0ZXJhdG9yLT52
YWx1ZV0udW5uYW1lZFR5cGU7CiAgICAgICAgICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUg
PSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZG93bmNhc3Q8QVNUOjpSZWZlcmVuY2VU
eXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKSk7CiAKLSAgICAgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJzaXplX3QgIiwgbGVuZ3RoVGVtcG9yYXJ5TmFt
ZSwgIiA9ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBsZW5ndGhFbGVtZW50TmFtZSwgIi55O1xuIikp
OwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobGVuZ3Ro
VGVtcG9yYXJ5TmFtZSwgIiA9ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPDwgMzI7XG4iKSk7
Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhsZW5ndGhU
ZW1wb3JhcnlOYW1lLCAiID0gIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiB8ICIsIHZhcmlhYmxl
TmFtZSwgJy4nLCBsZW5ndGhFbGVtZW50TmFtZSwgIi54O1xuIikpOwotICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9
ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgLyBzaXplb2YoIiwgbWFuZ2xlZFR5cGVOYW1lLCAi
KTtcbiIpKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5n
KCJpZiAoIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA+IDB4RkZGRkZGRkYpICIsIGxlbmd0aFRl
bXBvcmFyeU5hbWUsICIgPSAweEZGRkZGRkZGO1xuIikpOwotICAgICAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWFuZ2xlZElucHV0UGF0aChwYXRoKSwgIiA9IHsg
IiwgdmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAiLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIikgfTtcbiIpKTsKKyAgICAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAic2l6ZV90
ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPSAiLCB2YXJpYWJsZU5hbWUsICcuJywgbGVuZ3Ro
RWxlbWVudE5hbWUsICIueTtcbiIsCisgICAgICAgICAgICAgICAgICAgIGxlbmd0aFRlbXBvcmFy
eU5hbWUsICIgPSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiIDw8IDMyO1xuIiwKKyAgICAgICAg
ICAgICAgICAgICAgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9ICIsIGxlbmd0aFRlbXBvcmFyeU5h
bWUsICIgfCAiLCB2YXJpYWJsZU5hbWUsICcuJywgbGVuZ3RoRWxlbWVudE5hbWUsICIueDtcbiIs
CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPSAiLCBsZW5ndGhU
ZW1wb3JhcnlOYW1lLCAiIC8gc2l6ZW9mKCIsIG1hbmdsZWRUeXBlTmFtZSwgIik7XG4iLAorICAg
ICAgICAgICAgICAgICAgICAiaWYgKCIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPiAweEZGRkZG
RkZGKSAiLCBsZW5ndGhUZW1wb3JhcnlOYW1lLCAiID0gMHhGRkZGRkZGRjtcbiIsCisgICAgICAg
ICAgICAgICAgICAgIG1hbmdsZWRJbnB1dFBhdGgocGF0aCksICIgPSB7ICIsIHZhcmlhYmxlTmFt
ZSwgJy4nLCBlbGVtZW50TmFtZSwgIiwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCIsIGxlbmd0aFRl
bXBvcmFyeU5hbWUsICIpIH07XG4iCisgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLmlu
cHV0c1tpdGVyYXRvci0+dmFsdWVdLnBhdGg7CiAgICAgICAgICAgICAgICAgYXV0byBlbGVtZW50
TmFtZSA9IG1fbmFtZWRCaW5kR3JvdXBzW2ldLm5hbWVkQmluZGluZ3Nbal0uZWxlbWVudE5hbWU7
Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5nbGVk
SW5wdXRQYXRoKHBhdGgpLCAiID0gIiwgdmFyaWFibGVOYW1lLCAnLicsIGVsZW1lbnROYW1lLCAi
O1xuIikpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWFu
Z2xlZElucHV0UGF0aChwYXRoKSwgIiA9ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFt
ZSwgIjtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMzQ5LDcgKzM1
MSw3IEBAIFN0cmluZyBFbnRyeVBvaW50U2NhZmZvbGRpbmc6OnVucGFja1Jlc28KICAgICAgICAg
YXV0byYgcGF0aCA9IGl0ZW0ucGF0aDsKICAgICAgICAgYXV0byYgdmFyaWFibGVOYW1lID0gbmFt
ZWRCdWlsdEluLnZhcmlhYmxlTmFtZTsKICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBt
X3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKml0ZW0udW5uYW1lZFR5cGUpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1hbmdsZWRJbnB1dFBhdGgocGF0aCks
ICIgPSAiLCBtYW5nbGVkVHlwZU5hbWUsICcoJywgdmFyaWFibGVOYW1lLCAiKTtcbiIpKTsKKyAg
ICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkSW5wdXRQYXRoKHBhdGgp
LCAiID0gIiwgbWFuZ2xlZFR5cGVOYW1lLCAnKCcsIHZhcmlhYmxlTmFtZSwgIik7XG4iKTsKICAg
ICB9CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAgLTM4NywyNiAr
Mzg5LDI4IEBAIFN0cmluZyBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc6OmhlbHAKIHsKICAg
ICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChtYWtlU3RyaW5nKCJzdHJ1Y3QgIiwgbV9zdGFnZUluU3RydWN0TmFtZSwgIiB7XG4iKSk7Cisg
ICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgic3RydWN0ICIsIG1fc3RhZ2VJblN0cnVj
dE5hbWUsICIge1xuIik7CiAgICAgZm9yIChhdXRvJiBuYW1lZFN0YWdlSW4gOiBtX25hbWVkU3Rh
Z2VJbnMpIHsKICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5n
bGVkTmFtZUZvclR5cGUoKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4uaW5k
ZXhJbkVudHJ5UG9pbnRJdGVtc10udW5uYW1lZFR5cGUpOwogICAgICAgICBhdXRvIGVsZW1lbnRO
YW1lID0gbmFtZWRTdGFnZUluLmVsZW1lbnROYW1lOwogICAgICAgICBhdXRvIGF0dHJpYnV0ZUlu
ZGV4ID0gbmFtZWRTdGFnZUluLmF0dHJpYnV0ZUluZGV4OwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChtYWtlU3RyaW5nKCIgICAgIiwgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIGVsZW1lbnRO
YW1lLCAiIFtbYXR0cmlidXRlKCIsIGF0dHJpYnV0ZUluZGV4LCAiKV1dO1xuIikpOworICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgIiwgbWFuZ2xlZFR5cGVOYW1lLCAn
ICcsIGVsZW1lbnROYW1lLCAiIFtbYXR0cmlidXRlKCIsIGF0dHJpYnV0ZUluZGV4LCAiKV1dO1xu
Iik7CiAgICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9O1xuXG4iKTsKLQotICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInN0cnVjdCAiLCBtX3JldHVyblN0cnVjdE5h
bWUsICIge1xuIikpOworICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAg
ICJ9O1xuXG4iCisgICAgICAgICJzdHJ1Y3QgIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAiIHtcbiIK
KyAgICApOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMub3V0
cHV0cy5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvJiBvdXRwdXRJdGVtID0gbV9lbnRyeVBv
aW50SXRlbXMub3V0cHV0c1tpXTsKICAgICAgICAgYXV0byYgaW50ZXJuYWxUeXBlTmFtZSA9IG1f
bmFtZWRPdXRwdXRzW2ldLmludGVybmFsVHlwZU5hbWU7CiAgICAgICAgIGF1dG8gZWxlbWVudE5h
bWUgPSBtX25hbWVkT3V0cHV0c1tpXS5lbGVtZW50TmFtZTsKICAgICAgICAgYXV0byBhdHRyaWJ1
dGUgPSBhdHRyaWJ1dGVGb3JTZW1hbnRpYygqb3V0cHV0SXRlbS5zZW1hbnRpYyk7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICAiLCBpbnRlcm5hbFR5cGVOYW1l
LCAnICcsIGVsZW1lbnROYW1lLCAnICcsIGF0dHJpYnV0ZSwgIjtcbiIpKTsKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIGludGVybmFsVHlwZU5hbWUsICcgJywg
ZWxlbWVudE5hbWUsICcgJywgYXR0cmlidXRlLCAiO1xuIik7CiAgICAgfQotICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJ9O1xuXG4iKTsKLQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJlc291
cmNlSGVscGVyVHlwZXMoKSk7CisgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAg
ICAgICAgIn07XG5cbiIsCisgICAgICAgIHJlc291cmNlSGVscGVyVHlwZXMoKQorICAgICk7CiAK
ICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQpAQCAtNDE1LDEyICs0MTks
MTIgQEAgU3RyaW5nIFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6c2lnbgogewogICAgIFN0
cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKIAotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1h
a2VTdHJpbmcoInZlcnRleCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICcgJywgZnVuY3Rpb25OYW1l
LCAnKCcsIG1fc3RhZ2VJblN0cnVjdE5hbWUsICcgJywgbV9zdGFnZUluUGFyYW1ldGVyTmFtZSwg
IiBbW3N0YWdlX2luXV0iKSk7CisgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidmVy
dGV4ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBmdW5jdGlvbk5hbWUsICcoJywgbV9zdGFn
ZUluU3RydWN0TmFtZSwgJyAnLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAiIFtbc3RhZ2VfaW5d
XSIpOwogICAgIGlmIChhdXRvIHJlc291cmNlU2lnbmF0dXJlID0gdGhpcy0+cmVzb3VyY2VTaWdu
YXR1cmUoKSkKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiLCAiLCAq
cmVzb3VyY2VTaWduYXR1cmUpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgiLCAiLCAqcmVzb3VyY2VTaWduYXR1cmUpOwogICAgIGlmIChhdXRvIGJ1aWx0SW5zU2lnbmF0
dXJlID0gdGhpcy0+YnVpbHRJbnNTaWduYXR1cmUoKSkKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZygiLCAiLCAqYnVpbHRJbnNTaWduYXR1cmUpKTsKLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgiKSIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KCIsICIsICpidWlsdEluc1NpZ25hdHVyZSk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJykn
KTsKIAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC00MzQsNyAr
NDM4LDcgQEAgU3RyaW5nIFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6dW5wYQogICAgIGZv
ciAoYXV0byYgbmFtZWRTdGFnZUluIDogbV9uYW1lZFN0YWdlSW5zKSB7CiAgICAgICAgIGF1dG8m
IHBhdGggPSBtX2VudHJ5UG9pbnRJdGVtcy5pbnB1dHNbbmFtZWRTdGFnZUluLmluZGV4SW5FbnRy
eVBvaW50SXRlbXNdLnBhdGg7CiAgICAgICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbmFtZWRTdGFn
ZUluLmVsZW1lbnROYW1lOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5n
KG1hbmdsZWRJbnB1dFBhdGgocGF0aCksICIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0ZXJOYW1lLCAn
LicsIGVsZW1lbnROYW1lLCAiO1xuIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxl
QXBwZW5kKG1hbmdsZWRJbnB1dFBhdGgocGF0aCksICIgPSAiLCBtX3N0YWdlSW5QYXJhbWV0ZXJO
YW1lLCAnLicsIGVsZW1lbnROYW1lLCAiO1xuIik7CiAgICAgfQogCiAgICAgcmV0dXJuIHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTQ0MywxNyArNDQ3LDE4IEBAIFN0cmluZyBWZXJ0ZXhF
bnRyeVBvaW50U2NhZmZvbGRpbmc6OnVucGEKIFN0cmluZyBWZXJ0ZXhFbnRyeVBvaW50U2NhZmZv
bGRpbmc6OnBhY2soY29uc3QgU3RyaW5nJiBpbnB1dFZhcmlhYmxlTmFtZSwgY29uc3QgU3RyaW5n
JiBvdXRwdXRWYXJpYWJsZU5hbWUpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVy
OwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV9yZXR1cm5TdHJ1Y3ROYW1l
LCAnICcsIG91dHB1dFZhcmlhYmxlTmFtZSwgIjtcbiIpKTsKKworICAgIHN0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQobV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIG91dHB1dFZhcmlhYmxlTmFt
ZSwgIjtcbiIpOwogICAgIGlmIChtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKSA9PSAx
ICYmICFtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzWzBdLnBhdGguc2l6ZSgpKSB7CiAgICAgICAg
IGF1dG8mIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNbMF0uZWxlbWVudE5hbWU7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcob3V0cHV0VmFyaWFibGVOYW1lLCAn
LicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW5wdXRWYXJpYWJsZU5hbWUsICI7XG4iKSk7CisgICAg
ICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQob3V0cHV0VmFyaWFibGVOYW1lLCAnLics
IGVsZW1lbnROYW1lLCAiID0gIiwgaW5wdXRWYXJpYWJsZU5hbWUsICI7XG4iKTsKICAgICAgICAg
cmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2VudHJ5UG9pbnRJdGVtcy5vdXRwdXRzLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIGF1dG8mIGVsZW1lbnROYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7CiAg
ICAgICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25hbWVkT3V0cHV0c1tpXS5pbnRlcm5h
bFR5cGVOYW1lOwogICAgICAgICBhdXRvJiBwYXRoID0gbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0
c1tpXS5wYXRoOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG91dHB1
dFZhcmlhYmxlTmFtZSwgJy4nLCBlbGVtZW50TmFtZSwgIiA9ICIsIGludGVybmFsVHlwZU5hbWUs
ICcoJywgaW5wdXRWYXJpYWJsZU5hbWUsIG1hbmdsZWRPdXRwdXRQYXRoKHBhdGgpLCAiKTtcbiIp
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChvdXRwdXRWYXJpYWJsZU5h
bWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnKCcsIGlucHV0
VmFyaWFibGVOYW1lLCBtYW5nbGVkT3V0cHV0UGF0aChwYXRoKSwgIik7XG4iKTsKICAgICB9CiAg
ICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAgLTQ5MywyNiArNDk4LDI4
IEBAIFN0cmluZyBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6aGUKIHsKICAgICBTdHJp
bmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtl
U3RyaW5nKCJzdHJ1Y3QgIiwgbV9zdGFnZUluU3RydWN0TmFtZSwgIiB7XG4iKSk7CisgICAgc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgic3RydWN0ICIsIG1fc3RhZ2VJblN0cnVjdE5hbWUs
ICIge1xuIik7CiAgICAgZm9yIChhdXRvJiBuYW1lZFN0YWdlSW4gOiBtX25hbWVkU3RhZ2VJbnMp
IHsKICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFt
ZUZvclR5cGUoKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4uaW5kZXhJbkVu
dHJ5UG9pbnRJdGVtc10udW5uYW1lZFR5cGUpOwogICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0g
bmFtZWRTdGFnZUluLmVsZW1lbnROYW1lOwogICAgICAgICBhdXRvIGF0dHJpYnV0ZUluZGV4ID0g
bmFtZWRTdGFnZUluLmF0dHJpYnV0ZUluZGV4OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChtYWtlU3RyaW5nKCIgICAgIiwgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIGVsZW1lbnROYW1lLCAi
IFtbdXNlcih1c2VyIiwgYXR0cmlidXRlSW5kZXgsICIpXV07XG4iKSk7CisgICAgICAgIHN0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICAiLCBtYW5nbGVkVHlwZU5hbWUsICcgJywgZWxl
bWVudE5hbWUsICIgW1t1c2VyKHVzZXIiLCBhdHRyaWJ1dGVJbmRleCwgIildXTtcbiIpOwogICAg
IH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifTtcblxuIik7Ci0KLSAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJzdHJ1Y3QgIiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAiIHtc
biIpKTsKKyAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAifTtcblxu
IgorICAgICAgICAic3RydWN0ICIsIG1fcmV0dXJuU3RydWN0TmFtZSwgIiB7XG4iCisgICAgKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byYgb3V0cHV0SXRlbSA9IG1fZW50cnlQb2ludEl0ZW1z
Lm91dHB1dHNbaV07CiAgICAgICAgIGF1dG8mIGludGVybmFsVHlwZU5hbWUgPSBtX25hbWVkT3V0
cHV0c1tpXS5pbnRlcm5hbFR5cGVOYW1lOwogICAgICAgICBhdXRvIGVsZW1lbnROYW1lID0gbV9u
YW1lZE91dHB1dHNbaV0uZWxlbWVudE5hbWU7CiAgICAgICAgIGF1dG8gYXR0cmlidXRlID0gYXR0
cmlidXRlRm9yU2VtYW50aWMoKm91dHB1dEl0ZW0uc2VtYW50aWMpOwotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgIiwgaW50ZXJuYWxUeXBlTmFtZSwgJyAnLCBl
bGVtZW50TmFtZSwgJyAnLCBhdHRyaWJ1dGUsICI7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoIiAgICAiLCBpbnRlcm5hbFR5cGVOYW1lLCAnICcsIGVsZW1lbnRO
YW1lLCAnICcsIGF0dHJpYnV0ZSwgIjtcbiIpOwogICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgifTtcblxuIik7Ci0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyZXNvdXJjZUhlbHBl
clR5cGVzKCkpOworICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICJ9
O1xuXG4iLAorICAgICAgICByZXNvdXJjZUhlbHBlclR5cGVzKCkKKyAgICApOwogCiAgICAgcmV0
dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAgLTUyMSwxMiArNTI4LDEyIEBAIFN0
cmluZyBGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6c2kKIHsKICAgICBTdHJpbmdCdWls
ZGVyIHN0cmluZ0J1aWxkZXI7CiAKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5n
KCJmcmFnbWVudCAiLCBtX3JldHVyblN0cnVjdE5hbWUsICcgJywgZnVuY3Rpb25OYW1lLCAnKCcs
IG1fc3RhZ2VJblN0cnVjdE5hbWUsICcgJywgbV9zdGFnZUluUGFyYW1ldGVyTmFtZSwgIiBbW3N0
YWdlX2luXV0iKSk7CisgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiZnJhZ21lbnQg
IiwgbV9yZXR1cm5TdHJ1Y3ROYW1lLCAnICcsIGZ1bmN0aW9uTmFtZSwgJygnLCBtX3N0YWdlSW5T
dHJ1Y3ROYW1lLCAnICcsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICIgW1tzdGFnZV9pbl1dIik7
CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VTaWduYXR1cmUgPSB0aGlzLT5yZXNvdXJjZVNpZ25hdHVy
ZSgpKQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIsICIsICpyZXNv
dXJjZVNpZ25hdHVyZSkpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIs
ICIsICpyZXNvdXJjZVNpZ25hdHVyZSk7CiAgICAgaWYgKGF1dG8gYnVpbHRJbnNTaWduYXR1cmUg
PSB0aGlzLT5idWlsdEluc1NpZ25hdHVyZSgpKQotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChtYWtlU3RyaW5nKCIsICIsICpidWlsdEluc1NpZ25hdHVyZSkpOwotICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIpIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiwg
IiwgKmJ1aWx0SW5zU2lnbmF0dXJlKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwog
CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAgLTU0MCw3ICs1NDcs
NyBAQCBTdHJpbmcgRnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc6OnVuCiAgICAgZm9yIChh
dXRvJiBuYW1lZFN0YWdlSW4gOiBtX25hbWVkU3RhZ2VJbnMpIHsKICAgICAgICAgYXV0byYgcGF0
aCA9IG1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tuYW1lZFN0YWdlSW4uaW5kZXhJbkVudHJ5UG9p
bnRJdGVtc10ucGF0aDsKICAgICAgICAgYXV0byYgZWxlbWVudE5hbWUgPSBuYW1lZFN0YWdlSW4u
ZWxlbWVudE5hbWU7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWFu
Z2xlZElucHV0UGF0aChwYXRoKSwgIiA9ICIsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUsICcuJywg
ZWxlbWVudE5hbWUsICI7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQobWFuZ2xlZElucHV0UGF0aChwYXRoKSwgIiA9ICIsIG1fc3RhZ2VJblBhcmFtZXRlck5hbWUs
ICcuJywgZWxlbWVudE5hbWUsICI7XG4iKTsKICAgICB9CiAKICAgICByZXR1cm4gc3RyaW5nQnVp
bGRlci50b1N0cmluZygpOwpAQCAtNTQ5LDE3ICs1NTYsMTggQEAgU3RyaW5nIEZyYWdtZW50RW50
cnlQb2ludFNjYWZmb2xkaW5nOjp1bgogU3RyaW5nIEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xk
aW5nOjpwYWNrKGNvbnN0IFN0cmluZyYgaW5wdXRWYXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYg
b3V0cHV0VmFyaWFibGVOYW1lKQogewogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsK
LSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1fcmV0dXJuU3RydWN0TmFtZSwg
JyAnLCBvdXRwdXRWYXJpYWJsZU5hbWUsICI7XG4iKSk7CisKKyAgICBzdHJpbmdCdWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKG1fcmV0dXJuU3RydWN0TmFtZSwgJyAnLCBvdXRwdXRWYXJpYWJsZU5hbWUs
ICI7XG4iKTsKICAgICBpZiAobV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCkgPT0gMSAm
JiAhbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0c1swXS5wYXRoLnNpemUoKSkgewogICAgICAgICBh
dXRvJiBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzWzBdLmVsZW1lbnROYW1lOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG91dHB1dFZhcmlhYmxlTmFtZSwgJy4n
LCBlbGVtZW50TmFtZSwgIiA9ICIsIGlucHV0VmFyaWFibGVOYW1lLCAiO1xuIikpOworICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG91dHB1dFZhcmlhYmxlTmFtZSwgJy4nLCBl
bGVtZW50TmFtZSwgIiA9ICIsIGlucHV0VmFyaWFibGVOYW1lLCAiO1xuIik7CiAgICAgICAgIHJl
dHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9lbnRyeVBvaW50SXRlbXMub3V0cHV0cy5zaXplKCk7ICsraSkgewogICAgICAg
ICBhdXRvJiBlbGVtZW50TmFtZSA9IG1fbmFtZWRPdXRwdXRzW2ldLmVsZW1lbnROYW1lOwogICAg
ICAgICBhdXRvJiBpbnRlcm5hbFR5cGVOYW1lID0gbV9uYW1lZE91dHB1dHNbaV0uaW50ZXJuYWxU
eXBlTmFtZTsKICAgICAgICAgYXV0byYgcGF0aCA9IG1fZW50cnlQb2ludEl0ZW1zLm91dHB1dHNb
aV0ucGF0aDsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhvdXRwdXRW
YXJpYWJsZU5hbWUsICcuJywgZWxlbWVudE5hbWUsICIgPSAiLCBpbnRlcm5hbFR5cGVOYW1lLCAn
KCcsIGlucHV0VmFyaWFibGVOYW1lLCBtYW5nbGVkT3V0cHV0UGF0aChwYXRoKSwgIik7XG4iKSk7
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQob3V0cHV0VmFyaWFibGVOYW1l
LCAnLicsIGVsZW1lbnROYW1lLCAiID0gIiwgaW50ZXJuYWxUeXBlTmFtZSwgJygnLCBpbnB1dFZh
cmlhYmxlTmFtZSwgbWFuZ2xlZE91dHB1dFBhdGgocGF0aCksICIpO1xuIik7CiAgICAgfQogICAg
IHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC01NzgsMTggKzU4NiwxOCBA
QCBTdHJpbmcgQ29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZzo6c2lnCiB7CiAgICAgU3RyaW5n
QnVpbGRlciBzdHJpbmdCdWlsZGVyOwogCi0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0
cmluZygia2VybmVsIHZvaWQgIiwgZnVuY3Rpb25OYW1lLCAnKCcpKTsKKyAgICBzdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKCJrZXJuZWwgdm9pZCAiLCBmdW5jdGlvbk5hbWUsICcoJyk7CiAg
ICAgYm9vbCBlbXB0eSA9IHRydWU7CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VTaWduYXR1cmUgPSB0
aGlzLT5yZXNvdXJjZVNpZ25hdHVyZSgpKSB7CiAgICAgICAgIGVtcHR5ID0gZmFsc2U7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoKnJlc291cmNlU2lnbmF0dXJlKSk7
CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCpyZXNvdXJjZVNpZ25hdHVyZSk7CiAgICAg
fQogICAgIGlmIChhdXRvIGJ1aWx0SW5zU2lnbmF0dXJlID0gdGhpcy0+YnVpbHRJbnNTaWduYXR1
cmUoKSkgewogICAgICAgICBpZiAoIWVtcHR5KQogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIiwgIik7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCpidWlsdEluc1NpZ25h
dHVyZSk7CiAgICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIik7CisgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoJyknKTsKIAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5n
KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9X
SExTTEZ1bmN0aW9uV3JpdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAkocmV2aXNpb24g
MjQ3ODkzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xGdW5jdGlvbldyaXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9p
ZCBGdW5jdGlvbkRlY2xhcmF0aW9uV3JpdGVyOjp2aXNpdChBUwogCiAgICAgYXV0byBpdGVyYXRv
ciA9IG1fZnVuY3Rpb25NYXBwaW5nLmZpbmQoJmZ1bmN0aW9uRGVjbGFyYXRpb24pOwogICAgIEFT
U0VSVChpdGVyYXRvciAhPSBtX2Z1bmN0aW9uTWFwcGluZy5lbmQoKSk7Ci0gICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShm
dW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgaXRlcmF0b3ItPnZhbHVlLCAnKCcpKTsK
KyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JUeXBlKGZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCBpdGVyYXRvci0+dmFs
dWUsICcoJyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbkRlY2xhcmF0aW9u
LnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoaSkKICAgICAgICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIiwgIik7CkBAIC05MSwxNCArOTEsMTQgQEAgcHVibGlj
OgogICAgICAgICAsIG1fZnVuY3Rpb25NYXBwaW5nKGZ1bmN0aW9uTWFwcGluZykKICAgICAgICAg
LCBtX2xheW91dChsYXlvdXQpCiAgICAgewotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KG1ha2VTdHJpbmcoCisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKICAg
ICAgICAgICAgICJ0ZW1wbGF0ZSA8dHlwZW5hbWUgVD5cbiIKICAgICAgICAgICAgICJpbmxpbmUg
dm9pZCAiLCBtZW1zZXRaZXJvRnVuY3Rpb25OYW1lLCAiKHRocmVhZCBUJiB2YWx1ZSlcbiIKICAg
ICAgICAgICAgICJ7XG4iCiAgICAgICAgICAgICAiICAgIHRocmVhZCBjaGFyKiBwdHIgPSBzdGF0
aWNfY2FzdDx0aHJlYWQgY2hhcio+KHN0YXRpY19jYXN0PHRocmVhZCB2b2lkKj4oJnZhbHVlKSk7
XG4iCiAgICAgICAgICAgICAiICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKFQpOyAr
K2kpXG4iCiAgICAgICAgICAgICAiICAgICAgICBwdHJbaV0gPSAwO1xuIgotICAgICAgICAgICAg
In1cbiIpKTsKKyAgICAgICAgICAgICJ9XG4iKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3Rl
eHByIGNvbnN0IGNoYXIqIG1lbXNldFplcm9GdW5jdGlvbk5hbWUgPSAibWVtc2V0WmVybyI7CkBA
IC0yMjksMTAgKzIyOSwxMSBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQo
QVNUCiAgICAgICAgIGlmICghZW50cnlQb2ludFNjYWZmb2xkaW5nKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZyA9IFdURk1vdmUoZW50cnlQb2lu
dFNjYWZmb2xkaW5nKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtX2VudHJ5UG9p
bnRTY2FmZm9sZGluZy0+aGVscGVyVHlwZXMoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoJ1xuJyk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyht
X2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+c2lnbmF0dXJlKGl0ZXJhdG9yLT52YWx1ZSksICIge1xu
IikpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1fZW50cnlQb2ludFNjYWZmb2xk
aW5nLT51bnBhY2soKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgK
KyAgICAgICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xkaW5nLT5oZWxwZXJUeXBlcygpLCAnXG4n
LAorICAgICAgICAgICAgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmctPnNpZ25hdHVyZShpdGVyYXRv
ci0+dmFsdWUpLCAiIHtcbiIsCisgICAgICAgICAgICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+
dW5wYWNrKCkKKyAgICAgICAgKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5j
dGlvbkRlZmluaXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fdmFyaWFibGVNYXBwaW5nLmFkZCgmZnVuY3Rpb25EZWZpbml0aW9u
LnBhcmFtZXRlcnMoKVtpXSwgbV9lbnRyeVBvaW50U2NhZmZvbGRpbmctPnBhcmFtZXRlclZhcmlh
YmxlcygpW2ldKTsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CkBAIC0yNDMsNyArMjQ0LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXI6OnZpc2l0KEFTVAogICAgICAgICBtX2VudHJ5UG9pbnRTY2FmZm9sZGluZyA9IG51
bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1fZW50cnlQb2ludFNjYWZmb2xk
aW5nID09IG51bGxwdHIpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJp
bmcobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGZ1bmN0aW9uRGVmaW5pdGlvbi50eXBl
KCkpLCAnICcsIGl0ZXJhdG9yLT52YWx1ZSwgJygnKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZnVuY3Rpb25E
ZWZpbml0aW9uLnR5cGUoKSksICcgJywgaXRlcmF0b3ItPnZhbHVlLCAnKCcpOwogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzKCkuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGF1dG8mIHBhcmFtZXRlciA9IGZ1bmN0aW9uRGVmaW5p
dGlvbi5wYXJhbWV0ZXJzKClbaV07CiAgICAgICAgICAgICBpZiAoaSkKQEAgLTI1MSw3ICsyNTIs
NyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgICAgICAg
ICBhdXRvIHBhcmFtZXRlck5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICAg
ICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV92YXJpYWJsZU1hcHBpbmcuYWRkKCZwYXJhbWV0ZXIs
IHBhcmFtZXRlck5hbWUpOwogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
bWFrZVN0cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKnBhcmFtZXRlci0+dHlw
ZSgpKSwgJyAnLCBwYXJhbWV0ZXJOYW1lKSk7CisgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpwYXJhbWV0ZXIt
PnR5cGUoKSksICcgJywgcGFyYW1ldGVyTmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgiKSB7XG4iKTsKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZ1
bmN0aW9uRGVmaW5pdGlvbi5ibG9jaygpKTsKQEAgLTI4Nyw4ICsyODgsMTAgQEAgdm9pZCBGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgICAgICBicmVhazsKICAgICBjYXNl
IEJyZWFrQ29udGV4dDo6TG9vcDoKICAgICAgICAgQVNTRVJUKG1fYnJlYWtPdXRPZkN1cnJlbnRM
b29wRWFybHlWYXJpYWJsZS5sZW5ndGgoKSk7Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQobWFrZVN0cmluZyhtX2JyZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsICIgPSB0
cnVlO1xuIikpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJicmVhaztcbiIpOwor
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBtX2Jy
ZWFrT3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsICIgPSB0cnVlO1xuIgorICAgICAgICAg
ICAgImJyZWFrO1xuIgorICAgICAgICApOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC0z
MTQsMjAgKzMxNywyMyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6ZW1pdExvb3Ao
CiB7CiAgICAgU2V0Rm9yU2NvcGU8U3RyaW5nPiBsb29wVmFyaWFibGVTY29wZShtX2JyZWFrT3V0
T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsIGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpKTsK
IAotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiYm9vbCAiLCBtX2JyZWFr
T3V0T2ZDdXJyZW50TG9vcEVhcmx5VmFyaWFibGUsICIgPSBmYWxzZTtcbiIpKTsKLQotICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoIndoaWxlICh0cnVlKSB7XG4iKTsKKyAgICBtX3N0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICJib29sICIsIG1fYnJlYWtPdXRPZkN1cnJl
bnRMb29wRWFybHlWYXJpYWJsZSwgIiA9IGZhbHNlO1xuIiwKKyAgICAgICAgIndoaWxlICh0cnVl
KSB7XG4iCisgICAgKTsKIAogICAgIGlmIChsb29wQ29uZGl0aW9uTG9jYXRpb24gPT0gTG9vcENv
bmRpdGlvbkxvY2F0aW9uOjpCZWZvcmVCb2R5ICYmIGNvbmRpdGlvbkV4cHJlc3Npb24pIHsKICAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpjb25kaXRpb25FeHByZXNzaW9uKTsKLSAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJpZiAoISIsIHRha2VMYXN0VmFsdWUo
KSwgIikgYnJlYWs7XG4iKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgiaWYgKCEiLCB0YWtlTGFzdFZhbHVlKCksICIpIGJyZWFrO1xuIik7CiAgICAgfQogCiAgICAg
bV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiZG8ge1xuIik7CiAgICAgU2V0Rm9yU2NvcGU8T3B0aW9u
YWw8QnJlYWtDb250ZXh0Pj4gYnJlYWtDb250ZXh0KG1fY3VycmVudEJyZWFrQ29udGV4dCwgQnJl
YWtDb250ZXh0OjpMb29wKTsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYm9keSk7Ci0gICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZCgifSB3aGlsZShmYWxzZSk7IFxuIik7Ci0gICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJpZiAoIiwgbV9icmVha091dE9mQ3VycmVudExvb3BF
YXJseVZhcmlhYmxlLCAiKSBicmVhaztcbiIpKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoCisgICAgICAgICJ9IHdoaWxlKGZhbHNlKTsgXG4iCisgICAgICAgICJpZiAoIiwg
bV9icmVha091dE9mQ3VycmVudExvb3BFYXJseVZhcmlhYmxlLCAiKSBicmVhaztcbiIKKyAgICAp
OwogCiAgICAgaWYgKGluY3JlbWVudCkgewogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmlu
Y3JlbWVudCk7CkBAIC0zMzgsNyArMzQ0LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXI6OmVtaXRMb29wKAogCiAgICAgaWYgKGxvb3BDb25kaXRpb25Mb2NhdGlvbiA9PSBMb29wQ29u
ZGl0aW9uTG9jYXRpb246OkFmdGVyQm9keSAmJiBjb25kaXRpb25FeHByZXNzaW9uKSB7CiAgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqY29uZGl0aW9uRXhwcmVzc2lvbik7Ci0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiaWYgKCEiLCB0YWtlTGFzdFZhbHVlKCks
ICIpIGJyZWFrO1xuIikpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQo
ImlmICghIiwgdGFrZUxhc3RWYWx1ZSgpLCAiKSBicmVhaztcbiIpOwogICAgIH0KIAogICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoIn0gXG4iKTsKQEAgLTM3Miw3ICszNzgsNyBAQCB2b2lkIEZ1
bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlcjo6dmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpCiB7CiAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmNvbmRpdGlvbmFsKCkpOwotICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiaWYgKCIsIHRha2VMYXN0VmFsdWUoKSwgIikge1xu
IikpOworICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiaWYgKCIsIHRha2VMYXN0
VmFsdWUoKSwgIikge1xuIik7CiAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmJv
ZHkoKSk7CiAgICAgaWYgKGlmU3RhdGVtZW50LmVsc2VCb2R5KCkpIHsKICAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZCgifSBlbHNlIHtcbiIpOwpAQCAtMzg3LDEwICszOTMsMTIgQEAgdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoKnJldHVyblN0YXRlbWVudC52YWx1ZSgpKTsKICAgICAgICAgaWYgKG1fZW50cnlQ
b2ludFNjYWZmb2xkaW5nKSB7CiAgICAgICAgICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVy
YXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVu
ZChtX2VudHJ5UG9pbnRTY2FmZm9sZGluZy0+cGFjayh0YWtlTGFzdFZhbHVlKCksIHZhcmlhYmxl
TmFtZSkpOwotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJy
ZXR1cm4gIiwgdmFyaWFibGVOYW1lLCAiO1xuIikpOworICAgICAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgICAgIG1fZW50cnlQb2ludFNjYWZmb2xk
aW5nLT5wYWNrKHRha2VMYXN0VmFsdWUoKSwgdmFyaWFibGVOYW1lKSwKKyAgICAgICAgICAgICAg
ICAicmV0dXJuICIsIHZhcmlhYmxlTmFtZSwgIjtcbiIKKyAgICAgICAgICAgICk7CiAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJy
ZXR1cm4gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xuIikpOworICAgICAgICAgICAgbV9zdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJyZXR1cm4gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xuIik7
CiAgICAgfSBlbHNlCiAgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInJldHVybjtcbiIp
OwogfQpAQCAtMzk5LDcgKzQwNyw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2
aXNpdChBU1QKIHsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoU3RhdGVtZW50LnZhbHVl
KCkpOwogCi0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJzd2l0Y2ggKCIs
IHRha2VMYXN0VmFsdWUoKSwgIikgeyIpKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQoInN3aXRjaCAoIiwgdGFrZUxhc3RWYWx1ZSgpLCAiKSB7Iik7CiAgICAgZm9yIChhdXRv
JiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2VzKCkpCiAgICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNlKTsKICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KCJ9XG4iKTsKQEAgLTQwOCw3ICs0MTYsNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRl
cjo6dmlzaXQoQVNUCiB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpT
d2l0Y2hDYXNlJiBzd2l0Y2hDYXNlKQogewogICAgIGlmIChzd2l0Y2hDYXNlLnZhbHVlKCkpCi0g
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiY2FzZSAiLCBjb25zdGFu
dEV4cHJlc3Npb25TdHJpbmcoKnN3aXRjaENhc2UudmFsdWUoKSksICI6XG4iKSk7CisgICAgICAg
IG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiY2FzZSAiLCBjb25zdGFudEV4cHJlc3Np
b25TdHJpbmcoKnN3aXRjaENhc2UudmFsdWUoKSksICI6XG4iKTsKICAgICBlbHNlCiAgICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoImRlZmF1bHQ6XG4iKTsKICAgICBTZXRGb3JTY29wZTxP
cHRpb25hbDxCcmVha0NvbnRleHQ+PiBicmVha0NvbnRleHQobV9jdXJyZW50QnJlYWtDb250ZXh0
LCBCcmVha0NvbnRleHQ6OlN3aXRjaCk7CkBAIC00MjUsNyArNDMzLDcgQEAgdm9pZCBGdW5jdGlv
bkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogewogICAgIGF1dG8gdmFyaWFibGVOYW1lID0g
Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBt
X3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoaW50ZWdlckxpdGVyYWwucmVzb2x2ZWRUeXBl
KCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5nbGVkVHlwZU5h
bWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1l
LCAiPigiLCBpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpLCAiKTtcbiIpKTsKKyAgICBtX3N0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQobWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwg
IiA9IHN0YXRpY19jYXN0PCIsIG1hbmdsZWRUeXBlTmFtZSwgIj4oIiwgaW50ZWdlckxpdGVyYWwu
dmFsdWUoKSwgIik7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKGludGVnZXJMaXRlcmFsLCB2
YXJpYWJsZU5hbWUpOwogfQogCkBAIC00MzMsNyArNDQxLDcgQEAgdm9pZCBGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogewogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJh
dGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVO
YW1lci5tYW5nbGVkTmFtZUZvclR5cGUodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5yZXNvbHZlZFR5
cGUoKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1hbmdsZWRUeXBl
TmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSBzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5h
bWUsICI+KCIsIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSwgIik7XG4iKSk7CisgICAg
bV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJp
YWJsZU5hbWUsICIgPSBzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIHVuc2ln
bmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSwgIik7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVl
KHVuc2lnbmVkSW50ZWdlckxpdGVyYWwsIHZhcmlhYmxlTmFtZSk7CiB9CiAKQEAgLTQ0MSw3ICs0
NDksNyBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiB7CiAgICAg
YXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBhdXRv
IG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShmbG9hdExp
dGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0
cmluZyhtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gc3RhdGljX2Nhc3Q8
IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBmbG9hdExpdGVyYWwudmFsdWUoKSwgIik7XG4iKSk7
CisgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAn
LCB2YXJpYWJsZU5hbWUsICIgPSBzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIs
IGZsb2F0TGl0ZXJhbC52YWx1ZSgpLCAiKTtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFsdWUoZmxv
YXRMaXRlcmFsLCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC00NTIsMTIgKzQ2MCwxMSBAQCB2b2lk
IEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgYm9vbCBpc0FycmF5UmVm
ZXJlbmNlVHlwZSA9IGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSk7CiAK
ICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFt
ZUZvclR5cGUobnVsbExpdGVyYWwucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwg
IiA9ICIpKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKG51bGxMaXRlcmFsLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJp
YWJsZU5hbWUsICIgPSAiKTsKICAgICBpZiAoaXNBcnJheVJlZmVyZW5jZVR5cGUpCi0gICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoInsgbnVsbHB0ciwgMCB9Iik7CisgICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoInsgbnVsbHB0ciwgMCB9O1xuIik7CiAgICAgZWxzZQotICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCJudWxscHRyIik7Ci0gICAgbV9zdHJpbmdCdWlsZGVy
LmFwcGVuZCgiO1xuIik7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIm51bGxwdHI7
XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKG51bGxMaXRlcmFsLCB2YXJpYWJsZU5hbWUpOwog
fQogCkBAIC00NjUsNyArNDcyLDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZp
c2l0KEFTVAogewogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVO
YW1lKCk7CiAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFt
ZUZvclR5cGUoYm9vbGVhbkxpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQobWFrZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1l
LCAiID0gc3RhdGljX2Nhc3Q8IiwgbWFuZ2xlZFR5cGVOYW1lLCAiPigiLCBib29sZWFuTGl0ZXJh
bC52YWx1ZSgpID8gInRydWUiIDogImZhbHNlIiwgIik7XG4iKSk7CisgICAgbV9zdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIg
PSBzdGF0aWNfY2FzdDwiLCBtYW5nbGVkVHlwZU5hbWUsICI+KCIsIGJvb2xlYW5MaXRlcmFsLnZh
bHVlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiLCAiKTtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFsdWUo
Ym9vbGVhbkxpdGVyYWwsIHZhcmlhYmxlTmFtZSk7CiB9CiAKQEAgLTQ3NSw3ICs0ODIsNyBAQCB2
b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUCiAgICAgQVNTRVJUKGVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7CiAgICAgYXV0byB2
YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBhdXRvIG1hbmds
ZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShlbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwucmVzb2x2ZWRUeXBlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQo
bWFrZVN0cmluZyhtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAiID0gIiwgbWFu
Z2xlZFR5cGVOYW1lLCAiOjoiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvckVudW1lcmF0aW9u
TWVtYmVyKCplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSksICI7
XG4iKSk7CisgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1hbmdsZWRUeXBlTmFt
ZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiLCBtYW5nbGVkVHlwZU5hbWUsICI6OiIsIG1fdHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yRW51bWVyYXRpb25NZW1iZXIoKmVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKSwgIjtcbiIpOwogICAgIGFwcGVuZFJpZ2h0VmFs
dWUoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLCB2YXJpYWJsZU5hbWUpOwogfQogCkBAIC00OTgs
OCArNTA1LDEwIEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAg
ICBhdXRvIHBvaW50ZXJOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgYXV0
byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZ2xvYmFs
VmFyaWFibGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwogICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChnbG9iYWxWYXJpYWJsZVJlZmVyZW5jZS5iYXNlKCkpOwotICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZygidGhyZWFkICIsIG1hbmdsZWRUeXBlTmFtZSwgIiogIiwgcG9pbnRl
ck5hbWUsICIgPSAmIiwgdGFrZUxhc3RWYWx1ZSgpLCAiLT4iLCBtX3R5cGVOYW1lci5tYW5nbGVk
TmFtZUZvclN0cnVjdHVyZUVsZW1lbnQoZ2xvYmFsVmFyaWFibGVSZWZlcmVuY2Uuc3RydWN0Rmll
bGQoKSksICI7XG4iKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1h
bmdsZWRUeXBlTmFtZSwgJyAnLCB2YWx1ZU5hbWUsICIgPSAiLCAiKiIsIHBvaW50ZXJOYW1lLCAi
O1xuIikpOworICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgInRo
cmVhZCAiLCBtYW5nbGVkVHlwZU5hbWUsICIqICIsIHBvaW50ZXJOYW1lLCAiID0gJiIsIHRha2VM
YXN0VmFsdWUoKSwgIi0+IiwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVt
ZW50KGdsb2JhbFZhcmlhYmxlUmVmZXJlbmNlLnN0cnVjdEZpZWxkKCkpLCAiO1xuIiwKKyAgICAg
ICAgbWFuZ2xlZFR5cGVOYW1lLCAnICcsIHZhbHVlTmFtZSwgIiA9ICIsICIqIiwgcG9pbnRlck5h
bWUsICI7XG4iCisgICAgKTsKICAgICBhcHBlbmRMZWZ0VmFsdWUoZ2xvYmFsVmFyaWFibGVSZWZl
cmVuY2UsIHZhbHVlTmFtZSwgcG9pbnRlck5hbWUpOwogfQogCkBAIC01MjgsOSArNTM3LDkgQEAg
dm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTYwIEltcGxlbWVudCBx
dWFsaWZpZXJzLgogICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxpemVyKCkpIHsK
ICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxp
emVyKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobV90eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSksICcg
JywgdmFyaWFibGVOYW1lLCAiID0gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xuIikpOworICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAi
ID0gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xuIik7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5
cGUoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICI7XG4i
KSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChtX3R5cGVOYW1lci5t
YW5nbGVkTmFtZUZvclR5cGUoKnZhcmlhYmxlRGVjbGFyYXRpb24udHlwZSgpKSwgJyAnLCB2YXJp
YWJsZU5hbWUsICI7XG4iKTsKIH0KIAogdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZp
c2l0KEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24mIGFzc2lnbm1lbnRFeHByZXNzaW9uKQpAQCAt
NTM5LDcgKzU0OCw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QK
ICAgICBhdXRvIHBvaW50ZXJOYW1lID0gdGFrZUxhc3RMZWZ0VmFsdWUoKTsKICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoYXNzaWdubWVudEV4cHJlc3Npb24ucmlnaHQoKSk7CiAgICAgYXV0byByaWdo
dE5hbWUgPSB0YWtlTGFzdFZhbHVlKCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtl
U3RyaW5nKCJpZiAoIiwgcG9pbnRlck5hbWUsICIpICoiLCBwb2ludGVyTmFtZSwgIiA9ICIsIHJp
Z2h0TmFtZSwgIjtcbiIpKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImlm
ICgiLCBwb2ludGVyTmFtZSwgIikgKiIsIHBvaW50ZXJOYW1lLCAiID0gIiwgcmlnaHROYW1lLCAi
O1xuIik7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZShhc3NpZ25tZW50RXhwcmVzc2lvbiwgcmlnaHRO
YW1lKTsKIH0KIApAQCAtNTU0LDggKzU2Myw4IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3Jp
dGVyOjp2aXNpdChBU1QKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9mdW5jdGlvbk1hcHBpbmcu
ZW5kKCkpOwogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1l
KCk7CiAgICAgaWYgKCFtYXRjaGVzKGNhbGxFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpLCBtX2lu
dHJpbnNpY3Mudm9pZFR5cGUoKSkpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFr
ZVN0cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoY2FsbEV4cHJlc3Npb24ucmVz
b2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIpKTsKLSAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoaXRlcmF0b3ItPnZhbHVlLCAnKCcpKTsKKyAgICAgICAg
bV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZShjYWxsRXhwcmVzc2lvbi5yZXNvbHZlZFR5cGUoKSksICcgJywgdmFyaWFibGVOYW1lLCAi
ID0gIik7CisgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKGl0ZXJhdG9yLT52YWx1
ZSwgJygnKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50TmFtZXMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIsICIpOwpAQCAtNTgxLDEwICs1OTAsMTIgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXI6OnZpc2l0KEFTVAogICAgIGF1dG8gcmlnaHQgPSB0YWtlTGFzdFZhbHVlKCk7CiAgICAg
YXV0byB2YXJpYWJsZU5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICBhdXRv
IHBvaW50ZXJOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7Ci0gICAgbV9zdHJpbmdC
dWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShk
ZXJlZmVyZW5jZUV4cHJlc3Npb24ucG9pbnRlcigpLnJlc29sdmVkVHlwZSgpKSwgJyAnLCBwb2lu
dGVyTmFtZSwgIiA9ICIsIHJpZ2h0LCAiO1xuIikpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQobWFrZVN0cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZGVyZWZlcmVuY2VF
eHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICI7XG4iKSk7Ci0g
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJpZiAoIiwgcG9pbnRlck5hbWUs
ICIpICIsIHZhcmlhYmxlTmFtZSwgIiA9ICoiLCByaWdodCwgIjtcbiIpKTsKLSAgICBtX3N0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoImVsc2UgIiwgbWVtc2V0WmVyb0Z1bmN0aW9uTmFt
ZSwgJygnLCB2YXJpYWJsZU5hbWUsICIpO1xuIikpOworICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgKKyAgICAgICAgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGRlcmVm
ZXJlbmNlRXhwcmVzc2lvbi5wb2ludGVyKCkucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHBvaW50ZXJO
YW1lLCAiID0gIiwgcmlnaHQsICI7XG4iLAorICAgICAgICBtX3R5cGVOYW1lci5tYW5nbGVkTmFt
ZUZvclR5cGUoZGVyZWZlcmVuY2VFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJp
YWJsZU5hbWUsICI7XG4iLAorICAgICAgICAiaWYgKCIsIHBvaW50ZXJOYW1lLCAiKSAiLCB2YXJp
YWJsZU5hbWUsICIgPSAqIiwgcmlnaHQsICI7XG4iLAorICAgICAgICAiZWxzZSAiLCBtZW1zZXRa
ZXJvRnVuY3Rpb25OYW1lLCAnKCcsIHZhcmlhYmxlTmFtZSwgIik7XG4iCisgICAgKTsKICAgICBh
cHBlbmRMZWZ0VmFsdWUoZGVyZWZlcmVuY2VFeHByZXNzaW9uLCB2YXJpYWJsZU5hbWUsIHBvaW50
ZXJOYW1lKTsKIH0KIApAQCAtNTk1LDcgKzYwNiw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9u
V3JpdGVyOjp2aXNpdChBU1QKICAgICBjaGVja0Vycm9yQW5kVmlzaXQobG9naWNhbEV4cHJlc3Np
b24ucmlnaHQoKSk7CiAgICAgYXV0byByaWdodCA9IHRha2VMYXN0VmFsdWUoKTsKICAgICBhdXRv
IHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwotICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUo
bG9naWNhbEV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9
ICIsIGxlZnQpKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGxvZ2ljYWxFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwg
JyAnLCB2YXJpYWJsZU5hbWUsICIgPSAiLCBsZWZ0KTsKICAgICBzd2l0Y2ggKGxvZ2ljYWxFeHBy
ZXNzaW9uLnR5cGUoKSkgewogICAgIGNhc2UgQVNUOjpMb2dpY2FsRXhwcmVzc2lvbjo6VHlwZTo6
QW5kOgogICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIgJiYgIik7CkBAIC02MDUsNyAr
NjE2LDcgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKCIgfHwgIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcocmlnaHQsICI7XG4iKSk7Cisg
ICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKHJpZ2h0LCAiO1xuIik7CiAgICAgYXBw
ZW5kUmlnaHRWYWx1ZShsb2dpY2FsRXhwcmVzc2lvbiwgdmFyaWFibGVOYW1lKTsKIH0KIApAQCAt
NjE0LDcgKzYyNSw3IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QK
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQobG9naWNhbE5vdEV4cHJlc3Npb24ub3BlcmFuZCgpKTsK
ICAgICBhdXRvIG9wZXJhbmQgPSB0YWtlTGFzdFZhbHVlKCk7CiAgICAgYXV0byB2YXJpYWJsZU5h
bWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1ha2VTdHJpbmcobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGxvZ2ljYWxOb3RF
eHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAhIiwgb3Bl
cmFuZCwgIjtcbiIpKTsKKyAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobV90eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGxvZ2ljYWxOb3RFeHByZXNzaW9uLnJlc29sdmVkVHlw
ZSgpKSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSAhIiwgb3BlcmFuZCwgIjtcbiIpOwogICAgIGFw
cGVuZFJpZ2h0VmFsdWUobG9naWNhbE5vdEV4cHJlc3Npb24sIHZhcmlhYmxlTmFtZSk7CiB9CiAK
QEAgLTYyOCwxNiArNjM5LDE4IEBAIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNp
dChBU1QKICAgICBhdXRvIG1hbmdsZWRUeXBlTmFtZSA9IG1fdHlwZU5hbWVyLm1hbmdsZWROYW1l
Rm9yVHlwZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKTsKICAg
ICBpZiAoaXM8QVNUOjpQb2ludGVyVHlwZT4obWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5s
ZWZ0VmFsdWUoKS5yZXNvbHZlZFR5cGUoKSkpIHsKICAgICAgICAgYXV0byBwdHJWYWx1ZSA9IHRh
a2VMYXN0VmFsdWUoKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5n
KG1hbmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICI7XG4iKSk7Ci0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiaWYgKCIsIHB0clZhbHVlLCAiKSAiLCB2
YXJpYWJsZU5hbWUsICIgPSB7ICIsIHB0clZhbHVlLCAiLCAxfTtcbiIpKTsKLSAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJlbHNlICIsIHZhcmlhYmxlTmFtZSwgIiA9
IHsgbnVsbHB0ciwgMCB9O1xuIikpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQoCisgICAgICAgICAgICBtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1lLCAi
O1xuIiwKKyAgICAgICAgICAgICJpZiAoIiwgcHRyVmFsdWUsICIpICIsIHZhcmlhYmxlTmFtZSwg
IiA9IHsgIiwgcHRyVmFsdWUsICIsIDF9O1xuIiwKKyAgICAgICAgICAgICJlbHNlICIsIHZhcmlh
YmxlTmFtZSwgIiA9IHsgbnVsbHB0ciwgMCB9O1xuIgorICAgICAgICApOwogICAgIH0gZWxzZSBp
ZiAoaXM8QVNUOjpBcnJheVR5cGU+KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZh
bHVlKCkucmVzb2x2ZWRUeXBlKCkpKSB7CiAgICAgICAgIGF1dG8gbFZhbHVlID0gdGFrZUxhc3RM
ZWZ0VmFsdWUoKTsKICAgICAgICAgYXV0byYgYXJyYXlUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJh
eVR5cGU+KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubGVmdFZhbHVlKCkucmVzb2x2ZWRU
eXBlKCkpOwotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWFuZ2xl
ZFR5cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHsgIiwgbFZhbHVlLCAiLT5kYXRhKCks
ICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygpLCAiIH07XG4iKSk7CisgICAgICAgIG1fc3RyaW5n
QnVpbGRlci5mbGV4aWJsZUFwcGVuZChtYW5nbGVkVHlwZU5hbWUsICcgJywgdmFyaWFibGVOYW1l
LCAiID0geyAiLCBsVmFsdWUsICItPmRhdGEoKSwgIiwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCks
ICIgfTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGF1dG8gbFZhbHVlID0gdGFrZUxhc3RM
ZWZ0VmFsdWUoKTsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1h
bmdsZWRUeXBlTmFtZSwgJyAnLCB2YXJpYWJsZU5hbWUsICIgPSB7ICIsIGxWYWx1ZSwgIiwgMSB9
O1xuIikpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWFuZ2xlZFR5
cGVOYW1lLCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9IHsgIiwgbFZhbHVlLCAiLCAxIH07XG4iKTsK
ICAgICB9CiAgICAgYXBwZW5kUmlnaHRWYWx1ZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9u
LCB2YXJpYWJsZU5hbWUpOwogfQpAQCAtNjQ3LDcgKzY2MCw3IEBAIHZvaWQgRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICBjaGVja0Vycm9yQW5kVmlzaXQobWFrZVBvaW50
ZXJFeHByZXNzaW9uLmxlZnRWYWx1ZSgpKTsKICAgICBhdXRvIHBvaW50ZXIgPSB0YWtlTGFzdExl
ZnRWYWx1ZSgpOwogICAgIGF1dG8gdmFyaWFibGVOYW1lID0gZ2VuZXJhdGVOZXh0VmFyaWFibGVO
YW1lKCk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1fdHlwZU5hbWVy
Lm1hbmdsZWROYW1lRm9yVHlwZShtYWtlUG9pbnRlckV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkp
LCAnICcsIHZhcmlhYmxlTmFtZSwgIiA9ICIsIHBvaW50ZXIsICI7XG4iKSk7CisgICAgbV9zdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSht
YWtlUG9pbnRlckV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFtZSwg
IiA9ICIsIHBvaW50ZXIsICI7XG4iKTsKICAgICBhcHBlbmRSaWdodFZhbHVlKG1ha2VQb2ludGVy
RXhwcmVzc2lvbiwgdmFyaWFibGVOYW1lKTsKIH0KIApAQCAtNjYzLDE1ICs2NzYsMjAgQEAgdm9p
ZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVAogICAgIGF1dG8gY2hlY2sgPSB0
YWtlTGFzdFZhbHVlKCk7CiAKICAgICBhdXRvIHZhcmlhYmxlTmFtZSA9IGdlbmVyYXRlTmV4dFZh
cmlhYmxlTmFtZSgpOwotICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtX3R5
cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUodGVybmFyeUV4cHJlc3Npb24ucmVzb2x2ZWRUeXBl
KCkpLCAnICcsIHZhcmlhYmxlTmFtZSwgIjtcbiIpKTsKLQotICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZygiaWYgKCIsIGNoZWNrLCAiKSB7XG4iKSk7CisgICAgbV9zdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZv
clR5cGUodGVybmFyeUV4cHJlc3Npb24ucmVzb2x2ZWRUeXBlKCkpLCAnICcsIHZhcmlhYmxlTmFt
ZSwgIjtcbiIKKyAgICAgICAgImlmICgiLCBjaGVjaywgIikge1xuIgorICAgICk7CiAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KHRlcm5hcnlFeHByZXNzaW9uLmJvZHlFeHByZXNzaW9uKCkpOwotICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyh2YXJpYWJsZU5hbWUsICIgPSAiLCB0
YWtlTGFzdFZhbHVlKCksICI7XG4iKSk7Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgifSBl
bHNlIHtcbiIpOworICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAg
dmFyaWFibGVOYW1lLCAiID0gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xuIgorICAgICAgICAifSBl
bHNlIHtcbiIKKyAgICApOwogICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0ZXJuYXJ5RXhwcmVzc2lv
bi5lbHNlRXhwcmVzc2lvbigpKTsKLSAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJp
bmcodmFyaWFibGVOYW1lLCAiID0gIiwgdGFrZUxhc3RWYWx1ZSgpLCAiO1xuIikpOwotICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOworICAgIG1fc3RyaW5nQnVpbGRlci5mbGV4aWJs
ZUFwcGVuZCgKKyAgICAgICAgdmFyaWFibGVOYW1lLCAiID0gIiwgdGFrZUxhc3RWYWx1ZSgpLCAi
O1xuIgorICAgICAgICAifVxuIgorICAgICk7CiAgICAgYXBwZW5kUmlnaHRWYWx1ZSh0ZXJuYXJ5
RXhwcmVzc2lvbiwgdmFyaWFibGVOYW1lKTsKIH0KIApAQCAtNjgxLDcgKzY5OSw3IEBAIHZvaWQg
RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1QKICAgICBhdXRvIGl0ZXJhdG9yID0g
bV92YXJpYWJsZU1hcHBpbmcuZmluZCh2YXJpYWJsZVJlZmVyZW5jZS52YXJpYWJsZSgpKTsKICAg
ICBBU1NFUlQoaXRlcmF0b3IgIT0gbV92YXJpYWJsZU1hcHBpbmcuZW5kKCkpOwogICAgIGF1dG8g
cG9pbnRlck5hbWUgPSBnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKLSAgICBtX3N0cmluZ0J1
aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInRocmVhZCAiLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFt
ZUZvclR5cGUodmFyaWFibGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpLCAiKiAiLCBwb2ludGVy
TmFtZSwgIiA9ICYiLCBpdGVyYXRvci0+dmFsdWUsICI7XG4iKSk7CisgICAgbV9zdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKCJ0aHJlYWQgIiwgbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JU
eXBlKHZhcmlhYmxlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKSwgIiogIiwgcG9pbnRlck5hbWUs
ICIgPSAmIiwgaXRlcmF0b3ItPnZhbHVlLCAiO1xuIik7CiAgICAgYXBwZW5kTGVmdFZhbHVlKHZh
cmlhYmxlUmVmZXJlbmNlLCBpdGVyYXRvci0+dmFsdWUsIHBvaW50ZXJOYW1lKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRhbENv
ZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjQ3
ODkzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xN
ZXRhbENvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywyNiArNDMsMjcgQEAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBNZXRhbENvZGUgPSBmYQogCiBzdGF0aWMgU3RyaW5n
IGdlbmVyYXRlTWV0YWxDb2RlU2hhcmVkKFN0cmluZyYmIG1ldGFsVHlwZXMsIFN0cmluZyYmIG1l
dGFsRnVuY3Rpb25zKQogewotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiI2luY2x1ZGUgPG1ldGFsX3N0ZGxpYj5cbiIpOwotICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCIjaW5jbHVkZSA8bWV0YWxfYXRvbWljPlxuIik7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiNpbmNsdWRlIDxtZXRhbF9tYXRoPlxuIik7Ci0gICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIiNpbmNsdWRlIDxtZXRhbF9yZWxhdGlvbmFsPlxuIik7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiNpbmNsdWRlIDxtZXRhbF9jb21wdXRlPlxuIik7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiNpbmNsdWRlIDxtZXRhbF90ZXh0dXJlPlxuIik7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIlxuIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoInVzaW5n
IG5hbWVzcGFjZSBtZXRhbDtcbiIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcbiIpOwot
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoV1RGTW92ZShtZXRhbFR5cGVzKSk7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoV1RGTW92ZShtZXRhbEZ1bmN0aW9ucykpOworICAgIGF1dG8gZ2Vu
ZXJhdGVkTWV0YWxDb2RlID0gbWFrZVN0cmluZygKKyAgICAgICAgIiNpbmNsdWRlIDxtZXRhbF9z
dGRsaWI+XG4iCisgICAgICAgICIjaW5jbHVkZSA8bWV0YWxfYXRvbWljPlxuIgorICAgICAgICAi
I2luY2x1ZGUgPG1ldGFsX21hdGg+XG4iCisgICAgICAgICIjaW5jbHVkZSA8bWV0YWxfcmVsYXRp
b25hbD5cbiIKKyAgICAgICAgIiNpbmNsdWRlIDxtZXRhbF9jb21wdXRlPlxuIgorICAgICAgICAi
I2luY2x1ZGUgPG1ldGFsX3RleHR1cmU+XG4iCisgICAgICAgICJcbiIKKyAgICAgICAgInVzaW5n
IG5hbWVzcGFjZSBtZXRhbDtcbiIKKyAgICAgICAgIlxuIiwKKworICAgICAgICBXVEZNb3ZlKG1l
dGFsVHlwZXMpLAorICAgICAgICBXVEZNb3ZlKG1ldGFsRnVuY3Rpb25zKQorICAgICk7CiAKICAg
ICBpZiAoZHVtcE1ldGFsQ29kZSkgewogICAgICAgICBkYXRhTG9nTG4oIkdlbmVyYXRlZCBNZXRh
bCBjb2RlOiAiKTsKLSAgICAgICAgZGF0YUxvZ0xuKHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7
CisgICAgICAgIGRhdGFMb2dMbihnZW5lcmF0ZWRNZXRhbENvZGUpOwogICAgIH0KIAotICAgIHJl
dHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIGdlbmVyYXRlZE1ldGFs
Q29kZTsKIH0KIAogUmVuZGVyTWV0YWxDb2RlIGdlbmVyYXRlTWV0YWxDb2RlKFByb2dyYW0mIHBy
b2dyYW0sIE1hdGNoZWRSZW5kZXJTZW1hbnRpY3MmJiBtYXRjaGVkU2VtYW50aWNzLCBMYXlvdXQm
IGxheW91dCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIu
Y3BwCShyZXZpc2lvbiAyNDc4OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI3LDE4ICsxMjcsMjAgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRp
dmVGdQogICAgICAgICBhdXRvJiByZXR1cm5UeXBlID0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi50eXBlKCk7CiAgICAgICAgIGF1dG8gbWV0YWxSZXR1cm5OYW1lID0gdHlwZU5hbWVyLm1hbmds
ZWROYW1lRm9yVHlwZShyZXR1cm5UeXBlKTsKICAgICAgICAgaWYgKCFuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKG1ha2VTdHJpbmcobWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9u
TmFtZSwgIigpIHtcbiIpKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VT
dHJpbmcoIiAgICAiLCBtZXRhbFJldHVybk5hbWUsICIgeDtcbiIpKTsKLSAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICAiLCBtZW1zZXRaZXJvRnVuY3Rpb25O
YW1lLCAiKHgpO1xuIikpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBy
ZXR1cm4geDtcbiIpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOwor
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgICAg
ICBtZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAiKCkge1xuIgorICAg
ICAgICAgICAgICAgICIgICAgIiwgbWV0YWxSZXR1cm5OYW1lLCAiIHg7XG4iCisgICAgICAgICAg
ICAgICAgIiAgICAiLCBtZW1zZXRaZXJvRnVuY3Rpb25OYW1lLCAiKHgpO1xuIgorICAgICAgICAg
ICAgICAgICIgICAgcmV0dXJuIHg7XG4iCisgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAg
ICAgICk7CiAgICAgICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAg
ICAgICB9CiAKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1l
dGVycygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgYXV0byYgcGFyYW1ldGVyVHlwZSA9ICpuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpOwogICAgICAgICBh
dXRvIG1ldGFsUGFyYW1ldGVyTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUocGFy
YW1ldGVyVHlwZSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWV0
YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRl
ck5hbWUsICIgeCkge1xuIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJh
bWV0ZXJOYW1lLCAiIHgpIHtcbiIpOwogCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaXNF
bnVtZXJhdGlvbkRlZmluaXRpb24gPSBbXSAoYXV0byYgdHlwZSkgewpAQCAtMTUxLDE1ICsxNTMs
MTcgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAgICAg
ICAgICAgIGJvb2wgaGFzWmVyb0Nhc2UgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmb3IgKGF1
dG8mIG1lbWJlciA6IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJhdGlvbk1lbWJlcnMoKSkg
ewogICAgICAgICAgICAgICAgICAgICBoYXNaZXJvQ2FzZSB8PSAhbWVtYmVyLmdldCgpLnZhbHVl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmco
IiAgICAgICAgY2FzZSAiLCBtZW1iZXIuZ2V0KCkudmFsdWUoKSwgIjogYnJlYWs7XG4iKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICAgICAg
Y2FzZSAiLCBtZW1iZXIuZ2V0KCkudmFsdWUoKSwgIjogYnJlYWs7XG4iKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChoYXNaZXJvQ2FzZSwgaGFzWmVy
b0Nhc2UpOwogICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgICAgIGRl
ZmF1bHQ6IHggPSAwOyBicmVhazsgfVxuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PCIsIG1ldGFsUmV0dXJuTmFtZSwgIj4oeCk7XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgKKyAgICAgICAgICAgICIgICAgcmV0dXJuIHN0YXRpY19jYXN0PCIsIG1ldGFsUmV0dXJuTmFt
ZSwgIj4oeCk7XG4iCisgICAgICAgICAgICAifVxuIgorICAgICAgICApOwogICAgICAgICByZXR1
cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIApAQCAtMTY3LDkgKzE3MSwxMSBA
QCBTdHJpbmcgd3JpdGVOYXRpdmVGdW5jdGlvbihBU1Q6Ok5hdGl2ZUZ1CiAgICAgICAgIEFTU0VS
VChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMSk7CiAg
ICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0ZXJOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSk7
CiAgICAgICAgIGF1dG8gbWV0YWxSZXR1cm5OYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0
aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlck5hbWUsICIgeCkge1xuIikpOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgcmV0dXJuIHN0YXRpY19jYXN0PCIs
IG1ldGFsUmV0dXJuTmFtZSwgIj4oeCk7XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJ9XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAg
ICAgICAgIG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0
YWxQYXJhbWV0ZXJOYW1lLCAiIHgpIHtcbiIKKyAgICAgICAgICAgICIgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PCIsIG1ldGFsUmV0dXJuTmFtZSwgIj4oeCk7XG4iCisgICAgICAgICAgICAifVxuIgor
ICAgICAgICApOwogICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAg
IH0KIApAQCAtMTgyLDE2ICsxODgsMjAgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNU
OjpOYXRpdmVGdQogICAgICAgICBhdXRvJiB1bm5hbWVkUGFyYW1ldGVyVHlwZSA9IGRvd25jYXN0
PEFTVDo6VW5uYW1lZFR5cGU+KHBhcmFtZXRlclR5cGUpOwogICAgICAgICBpZiAoaXM8QVNUOjpB
cnJheVR5cGU+KHVubmFtZWRQYXJhbWV0ZXJUeXBlKSkgewogICAgICAgICAgICAgYXV0byYgYXJy
YXlQYXJhbWV0ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRQYXJhbWV0
ZXJUeXBlKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInVp
bnQgIiwgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIikge1xu
IikpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIHJl
dHVybiAiLCBhcnJheVBhcmFtZXRlclR5cGUubnVtRWxlbWVudHMoKSwgIjtcbiIpKTsKLSAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICAgICAgInVpbnQgIiwgb3V0cHV0RnVu
Y3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIikge1xuIgorICAgICAgICAgICAg
ICAgICIgICAgcmV0dXJuICIsIGFycmF5UGFyYW1ldGVyVHlwZS5udW1FbGVtZW50cygpLCAiO1xu
IgorICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICApOwogICAgICAgICAgICAgcmV0
dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VS
VChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFBhcmFtZXRlclR5cGUpKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygidWludCAiLCBvdXRwdXRGdW5j
dGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXJOYW1lLCAiIHYpIHtcbiIpKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIHJldHVybiB2Lmxlbmd0aDtcbiIp
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn1cbiIpOworICAgICAgICBzdHJpbmdC
dWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgInVpbnQgIiwgb3V0cHV0RnVuY3Rp
b25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyTmFtZSwgIiB2KSB7XG4iCisgICAgICAgICAgICAi
ICAgIHJldHVybiB2Lmxlbmd0aDtcbiIKKyAgICAgICAgICAgICJ9XG4iCisgICAgICAgICk7CiAg
ICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCkBAIC0yMTcs
MTAgKzIyNywxMiBAQCBTdHJpbmcgd3JpdGVOYXRpdmVGdW5jdGlvbihBU1Q6Ok5hdGl2ZUZ1CiAg
ICAgICAgICAgICBhdXRvIGZpZWxkTmFtZSA9IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFt
ZSgpLnN1YnN0cmluZygib3BlcmF0b3IuIl9zdHIubGVuZ3RoKCkpOwogICAgICAgICAgICAgZmll
bGROYW1lID0gZmllbGROYW1lLnN1YnN0cmluZygwLCBmaWVsZE5hbWUubGVuZ3RoKCkgLSAxKTsK
ICAgICAgICAgICAgIGF1dG8gbWV0YWxGaWVsZE5hbWUgPSBtYW5nbGVkRmllbGROYW1lKGZpZWxk
TmFtZSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1ldGFs
UmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXIx
TmFtZSwgIiB2LCAiLCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAiIG4pIHtcbiIpKTsKLSAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICB2LiIsIG1ldGFsRmllbGRO
YW1lLCAiID0gbjtcbiIpKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VT
dHJpbmcoIiAgICByZXR1cm4gdjtcbiIpKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJ9XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisg
ICAgICAgICAgICAgICAgbWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwg
JygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHYsICIsIG1ldGFsUGFyYW1ldGVyMk5hbWUsICIg
bikge1xuIgorICAgICAgICAgICAgICAgICIgICAgdi4iLCBtZXRhbEZpZWxkTmFtZSwgIiA9IG47
XG4iCisgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdjtcbiIKKyAgICAgICAgICAgICAgICAi
fVxuIgorICAgICAgICAgICAgKTsKICAgICAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRv
U3RyaW5nKCk7CiAgICAgICAgIH0KIApAQCAtMjI5LDkgKzI0MSwxMSBAQCBTdHJpbmcgd3JpdGVO
YXRpdmVGdW5jdGlvbihBU1Q6Ok5hdGl2ZUZ1CiAgICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0ZXJO
YW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSk7CiAgICAgICAgIGF1dG8gbWV0YWxSZXR1cm5O
YW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLnR5cGUoKSk7CiAgICAgICAgIGF1dG8gbWV0YWxGaWVsZE5hbWUgPSBtYW5nbGVkRmllbGRO
YW1lKGZpZWxkTmFtZSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmco
bWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFt
ZXRlck5hbWUsICIgdikge1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtl
U3RyaW5nKCIgICAgcmV0dXJuIHYuIiwgbWV0YWxGaWVsZE5hbWUsICI7XG4iKSk7Ci0gICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4
aWJsZUFwcGVuZCgKKyAgICAgICAgICAgIG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5j
dGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXJOYW1lLCAiIHYpIHtcbiIKKyAgICAgICAgICAg
ICIgICAgcmV0dXJuIHYuIiwgbWV0YWxGaWVsZE5hbWUsICI7XG4iCisgICAgICAgICAgICAifVxu
IgorICAgICAgICApOwogICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwog
ICAgIH0KIApAQCAtMjUzLDkgKzI2NywxMSBAQCBTdHJpbmcgd3JpdGVOYXRpdmVGdW5jdGlvbihB
U1Q6Ok5hdGl2ZUZ1CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbWV0YWxGaWVsZE5hbWUg
PSBmaWVsZE5hbWU7CiAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyht
ZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1l
dGVyTmFtZSwgIiB2KSB7XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VT
dHJpbmcoIiAgICByZXR1cm4gJih2LT4iLCBtZXRhbEZpZWxkTmFtZSwgIik7XG4iKSk7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgIG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRG
dW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXJOYW1lLCAiIHYpIHtcbiIKKyAgICAgICAg
ICAgICIgICAgcmV0dXJuICYodi0+IiwgbWV0YWxGaWVsZE5hbWUsICIpO1xuIgorICAgICAgICAg
ICAgIn1cbiIKKyAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJp
bmcoKTsKICAgICB9CiAKQEAgLTI2NCwxMSArMjgwLDEzIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1
bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlcjFOYW1lID0g
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5w
YXJhbWV0ZXJzKClbMF0tPnR5cGUoKSk7CiAgICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0ZXIyTmFt
ZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ucGFyYW1ldGVycygpWzFdLT50eXBlKCkpOwogICAgICAgICBhdXRvIG1ldGFsUmV0dXJuTmFt
ZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bi50eXBlKCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1ldGFs
UmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXIx
TmFtZSwgIiB2LCAiLCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAiIG4pIHtcbiIpKTsKICAgICAgICAg
QVNTRVJUKGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPigqbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiICAgIGlmIChuIDwgdi5sZW5ndGgpIHJldHVybiAmKHYucG9pbnRlcltuXSk7XG4iKTsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICByZXR1cm4gbnVsbHB0cjtcbiIpOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgICAgIHN0cmluZ0J1aWxk
ZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICBtZXRhbFJldHVybk5hbWUsICcgJywgb3V0
cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyMU5hbWUsICIgdiwgIiwgbWV0YWxQ
YXJhbWV0ZXIyTmFtZSwgIiBuKSB7XG4iCisgICAgICAgICAgICAiICAgIGlmIChuIDwgdi5sZW5n
dGgpIHJldHVybiAmKHYucG9pbnRlcltuXSk7XG4iCisgICAgICAgICAgICAiICAgIHJldHVybiBu
dWxscHRyO1xuIgorICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgKTsKICAgICAgICAgcmV0dXJu
IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAKQEAgLTI5NSwxNyArMzEzLDIxIEBA
IFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZSb3dzID0gbnVtYmVyT2ZNYXRyaXhSb3dzKCk7CiAgICAgICAgIHVuc2lnbmVk
IG51bWJlck9mQ29sdW1ucyA9IG51bWJlck9mTWF0cml4Q29sdW1ucygpOwogCi0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1
dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIG0sICIsIG1ldGFsUGFy
YW1ldGVyMk5hbWUsICIgaSkge1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCht
YWtlU3RyaW5nKCIgICAgaWYgKGkgPj0gIiwgbnVtYmVyT2ZSb3dzLCAiKSByZXR1cm4gIiwgbWV0
YWxSZXR1cm5OYW1lLCAiKDApO1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCht
YWtlU3RyaW5nKCIgICAgIiwgbWV0YWxSZXR1cm5OYW1lLCAiIHJlc3VsdDtcbiIpKTsKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICByZXN1bHRbMF0gPSBtW2ldO1xuIik7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICByZXN1bHRbMV0gPSBtW2kg
KyAiLCBudW1iZXJPZlJvd3MsICJdO1xuIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhp
YmxlQXBwZW5kKAorICAgICAgICAgICAgbWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0
aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIG0sICIsIG1ldGFsUGFyYW1ldGVy
Mk5hbWUsICIgaSkge1xuIgorICAgICAgICAgICAgIiAgICBpZiAoaSA+PSAiLCBudW1iZXJPZlJv
d3MsICIpIHJldHVybiAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7XG4iCisgICAgICAgICAgICAi
ICAgICIsIG1ldGFsUmV0dXJuTmFtZSwgIiByZXN1bHQ7XG4iCisgICAgICAgICAgICAiICAgIHJl
c3VsdFswXSA9IG1baV07XG4iCisgICAgICAgICAgICAiICAgIHJlc3VsdFsxXSA9IG1baSArICIs
IG51bWJlck9mUm93cywgIl07XG4iCisgICAgICAgICk7CiAgICAgICAgIGlmIChudW1iZXJPZkNv
bHVtbnMgPj0gMykKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmco
IiAgICByZXN1bHRbMl0gPSBtW2kgKyAiLCBudW1iZXJPZlJvd3MgKiAyLCAiXTtcbiIpKTsKKyAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICByZXN1bHRbMl0gPSBt
W2kgKyAiLCBudW1iZXJPZlJvd3MgKiAyLCAiXTtcbiIpOwogICAgICAgICBpZiAobnVtYmVyT2ZD
b2x1bW5zID49IDQpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5n
KCIgICAgcmVzdWx0WzNdID0gbVtpICsgIiwgbnVtYmVyT2ZSb3dzICogMywgIl07XG4iKSk7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgcmV0dXJuIHJlc3VsdDtcbiIpOwotICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgcmVzdWx0WzNdID0gbVtpICsgIiwgbnVtYmVyT2ZSb3dz
ICogMywgIl07XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCisgICAgICAgICAg
ICAiICAgIHJldHVybiByZXN1bHQ7XG4iCisgICAgICAgICAgICAifVxuIgorICAgICAgICApOwog
ICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIApAQCAtMzE5
LDE2ICszNDEsMjAgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQog
ICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJvd3MgPSBudW1iZXJPZk1hdHJpeFJvd3MoKTsKICAg
ICAgICAgdW5zaWduZWQgbnVtYmVyT2ZDb2x1bW5zID0gbnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCk7
CiAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZyhtZXRhbFJldHVybk5h
bWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyMU5hbWUsICIg
bSwgIiwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiBpLCAiLCBtZXRhbFBhcmFtZXRlcjNOYW1lLCAi
IHYpIHtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAg
IGlmIChpID49ICIsIG51bWJlck9mUm93cywgIikgcmV0dXJuIG07XG4iKSk7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBtW2ldID0gdlswXTtcbiIpKTsKLSAg
ICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIG1baSArICIsIG51bWJl
ck9mUm93cywgIl0gPSB2WzFdO1xuIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxl
QXBwZW5kKAorICAgICAgICAgICAgbWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9u
TmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIG0sICIsIG1ldGFsUGFyYW1ldGVyMk5h
bWUsICIgaSwgIiwgbWV0YWxQYXJhbWV0ZXIzTmFtZSwgIiB2KSB7XG4iCisgICAgICAgICAgICAi
ICAgIGlmIChpID49ICIsIG51bWJlck9mUm93cywgIikgcmV0dXJuIG07XG4iCisgICAgICAgICAg
ICAiICAgIG1baV0gPSB2WzBdO1xuIgorICAgICAgICAgICAgIiAgICBtW2kgKyAiLCBudW1iZXJP
ZlJvd3MsICJdID0gdlsxXTtcbiIKKyAgICAgICAgKTsKICAgICAgICAgaWYgKG51bWJlck9mQ29s
dW1ucyA+PSAzKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygi
ICAgIG1baSArICIsIG51bWJlck9mUm93cyAqIDIsICJdID0gdlsyXTtcbiIpKTsKKyAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICBtW2kgKyAiLCBudW1iZXJPZlJv
d3MgKiAyLCAiXSA9IHZbMl07XG4iKTsKICAgICAgICAgaWYgKG51bWJlck9mQ29sdW1ucyA+PSA0
KQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIG1baSAr
ICIsIG51bWJlck9mUm93cyAqIDMsICJdID0gdlszXTtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiAgICByZXR1cm4gbTsiKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIn1cbiIpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAg
IG1baSArICIsIG51bWJlck9mUm93cyAqIDMsICJdID0gdlszXTtcbiIpOworICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgKKyAgICAgICAgICAgICIgICAgcmV0dXJuIG07IgorICAgICAgICAg
ICAgIn1cbiIKKyAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJp
bmcoKTsKICAgICB9CiAKQEAgLTMzNyw5ICszNjMsMTEgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVu
Y3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAgICAgICAgYXV0byBvcGVyYXRvck5hbWUgPSBuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKS5zdWJzdHJpbmcoIm9wZXJhdG9yIl9zdHIubGVu
Z3RoKCkpOwogICAgICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlck5hbWUgPSB0eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMo
KVswXS0+dHlwZSgpKTsKICAgICAgICAgICAgIGF1dG8gbWV0YWxSZXR1cm5OYW1lID0gdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1ldGFsUmV0dXJu
TmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXJOYW1lLCAi
IHgpIHtcbiIpKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmco
IiAgICByZXR1cm4gIiwgb3BlcmF0b3JOYW1lLCAieDtcbiIpKTsKLSAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGli
bGVBcHBlbmQoCisgICAgICAgICAgICAgICAgbWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1
bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlck5hbWUsICIgeCkge1xuIgorICAgICAgICAg
ICAgICAgICIgICAgcmV0dXJuICIsIG9wZXJhdG9yTmFtZSwgIng7XG4iCisgICAgICAgICAgICAg
ICAgIn1cbiIKKyAgICAgICAgICAgICk7CiAgICAgICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRl
ci50b1N0cmluZygpOwogICAgICAgICB9CiAKQEAgLTM0OCw5ICszNzYsMTEgQEAgU3RyaW5nIHdy
aXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAgICBhdXRvIG1ldGFsUGFyYW1l
dGVyMU5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpKTsKICAgICAgICAgYXV0byBtZXRhbFBh
cmFtZXRlcjJOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMV0tPnR5cGUoKSk7CiAgICAgICAgIGF1dG8gbWV0
YWxSZXR1cm5OYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VT
dHJpbmcobWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRh
bFBhcmFtZXRlcjFOYW1lLCAiIHgsICIsIG1ldGFsUGFyYW1ldGVyMk5hbWUsICIgeSkge1xuIikp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgcmV0dXJuIHgg
Iiwgb3BlcmF0b3JOYW1lLCAiIHk7XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCJ9XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAg
ICAgIG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQ
YXJhbWV0ZXIxTmFtZSwgIiB4LCAiLCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAiIHkpIHtcbiIKKyAg
ICAgICAgICAgICIgICAgcmV0dXJuIHggIiwgb3BlcmF0b3JOYW1lLCAiIHk7XG4iCisgICAgICAg
ICAgICAifVxuIgorICAgICAgICApOwogICAgICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0
cmluZygpOwogICAgIH0KIApAQCAtMzgxLDkgKzQxMSwxMSBAQCBTdHJpbmcgd3JpdGVOYXRpdmVG
dW5jdGlvbihBU1Q6Ok5hdGl2ZUZ1CiAgICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMSk7CiAgICAgICAgIGF1dG8gbWV0YWxQYXJh
bWV0ZXJOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSk7CiAgICAgICAgIGF1dG8gbWV0YWxS
ZXR1cm5OYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJp
bmcobWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBh
cmFtZXRlck5hbWUsICIgeCkge1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCht
YWtlU3RyaW5nKCIgICAgcmV0dXJuICIsIG1hcEZ1bmN0aW9uTmFtZShuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLm5hbWUoKSksICIoeCk7XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJ9XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAg
ICAgICAgIG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0
YWxQYXJhbWV0ZXJOYW1lLCAiIHgpIHtcbiIKKyAgICAgICAgICAgICIgICAgcmV0dXJuICIsIG1h
cEZ1bmN0aW9uTmFtZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSksICIoeCk7XG4i
CisgICAgICAgICAgICAifVxuIgorICAgICAgICApOwogICAgICAgICByZXR1cm4gc3RyaW5nQnVp
bGRlci50b1N0cmluZygpOwogICAgIH0KIApAQCAtMzkyLDM1ICs0MjQsNDMgQEAgU3RyaW5nIHdy
aXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAgICBhdXRvIG1ldGFsUGFyYW1l
dGVyMU5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpKTsKICAgICAgICAgYXV0byBtZXRhbFBh
cmFtZXRlcjJOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMV0tPnR5cGUoKSk7CiAgICAgICAgIGF1dG8gbWV0
YWxSZXR1cm5OYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnR5cGUoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VT
dHJpbmcobWV0YWxSZXR1cm5OYW1lLCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRh
bFBhcmFtZXRlcjFOYW1lLCAiIHgsICIsIG1ldGFsUGFyYW1ldGVyMk5hbWUsICIgeSkge1xuIikp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgcmV0dXJuICIs
IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLCAiKHgsIHkpO1xuIikpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxl
eGlibGVBcHBlbmQoCisgICAgICAgICAgICBtZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVu
Y3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyMU5hbWUsICIgeCwgIiwgbWV0YWxQYXJhbWV0
ZXIyTmFtZSwgIiB5KSB7XG4iCisgICAgICAgICAgICAiICAgIHJldHVybiAiLCBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uLm5hbWUoKSwgIih4LCB5KTtcbiIKKyAgICAgICAgICAgICJ9XG4iCisg
ICAgICAgICk7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAg
fQogCiAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJBbGxNZW1v
cnlCYXJyaWVyV2l0aEdyb3VwU3luYyIpIHsKICAgICAgICAgQVNTRVJUKCFuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChtYWtlU3RyaW5nKCJ2b2lkICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgIigpIHtcbiIp
KTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICB0aHJlYWRncm91cF9iYXJyaWVy
KG1lbV9mbGFnczo6bWVtX2RldmljZSk7XG4iKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiAgICB0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX3RocmVhZGdyb3VwKTtc
biIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIHRocmVhZGdyb3VwX2JhcnJp
ZXIobWVtX2ZsYWdzOjptZW1fdGV4dHVyZSk7XG4iKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIn1cbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAg
ICAgICAgICAgInZvaWQgIiwgb3V0cHV0RnVuY3Rpb25OYW1lLCAiKCkge1xuIgorICAgICAgICAg
ICAgIiAgICB0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFnczo6bWVtX2RldmljZSk7XG4iCisg
ICAgICAgICAgICAiICAgIHRocmVhZGdyb3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fdGhyZWFk
Z3JvdXApO1xuIgorICAgICAgICAgICAgIiAgICB0aHJlYWRncm91cF9iYXJyaWVyKG1lbV9mbGFn
czo6bWVtX3RleHR1cmUpO1xuIgorICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgKTsKICAgICAg
ICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAKICAgICBpZiAobmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkRldmljZU1lbW9yeUJhcnJpZXJXaXRo
R3JvdXBTeW5jIikgewogICAgICAgICBBU1NFUlQoIW5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24u
cGFyYW1ldGVycygpLnNpemUoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VT
dHJpbmcoInZvaWQgIiwgb3V0cHV0RnVuY3Rpb25OYW1lLCAiKCkge1xuIikpOwotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIHRocmVhZGdyb3VwX2JhcnJpZXIobWVtX2ZsYWdzOjpt
ZW1fZGV2aWNlKTtcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7Cisg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICAidm9pZCAi
LCBvdXRwdXRGdW5jdGlvbk5hbWUsICIoKSB7XG4iCisgICAgICAgICAgICAiICAgIHRocmVhZGdy
b3VwX2JhcnJpZXIobWVtX2ZsYWdzOjptZW1fZGV2aWNlKTtcbiIKKyAgICAgICAgICAgICJ9XG4i
CisgICAgICAgICk7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAg
ICAgfQogCiAgICAgaWYgKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpID09ICJHcm91
cE1lbW9yeUJhcnJpZXJXaXRoR3JvdXBTeW5jIikgewogICAgICAgICBBU1NFUlQoIW5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSk7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInZvaWQgIiwgb3V0cHV0RnVuY3Rpb25OYW1lLCAiKCkg
e1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIHRocmVhZGdyb3VwX2Jh
cnJpZXIobWVtX2ZsYWdzOjptZW1fdGhyZWFkZ3JvdXApO1xuIik7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgKKyAgICAgICAgICAgICJ2b2lkICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgIigpIHtcbiIKKyAg
ICAgICAgICAgICIgICAgdGhyZWFkZ3JvdXBfYmFycmllcihtZW1fZmxhZ3M6Om1lbV90aHJlYWRn
cm91cCk7XG4iCisgICAgICAgICAgICAifVxuIgorICAgICAgICApOwogICAgICAgICByZXR1cm4g
c3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIApAQCAtNDM1LDEwICs0NzUsMTIgQEAg
U3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAgICAgICAgYXV0
byYgZm91cnRoQXJndW1lbnRQb2ludGVyID0gZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4oKm5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzNdLT50eXBlKCkpOwogICAgICAg
ICAgICAgYXV0byBmb3VydGhBcmd1bWVudEFkZHJlc3NTcGFjZSA9IGZvdXJ0aEFyZ3VtZW50UG9p
bnRlci5hZGRyZXNzU3BhY2UoKTsKICAgICAgICAgICAgIGF1dG8gZm91cnRoQXJndW1lbnRQb2lu
dGVlID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShmb3VydGhBcmd1bWVudFBvaW50ZXIu
ZWxlbWVudFR5cGUoKSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3Ry
aW5nKCJ2b2lkICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCB0b1N0cmluZyhmaXJzdEFyZ3Vt
ZW50QWRkcmVzc1NwYWNlKSwgJyAnLCBmaXJzdEFyZ3VtZW50UG9pbnRlZSwgIiogb2JqZWN0LCAi
LCBzZWNvbmRBcmd1bWVudCwgIiBjb21wYXJlLCAiLCB0aGlyZEFyZ3VtZW50LCAiIGRlc2lyZWQs
ICIsIHRvU3RyaW5nKGZvdXJ0aEFyZ3VtZW50QWRkcmVzc1NwYWNlKSwgJyAnLCBmb3VydGhBcmd1
bWVudFBvaW50ZWUsICIqIG91dCkge1xuIikpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoIiAgICBhdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KG9iamVjdCwg
JmNvbXBhcmUsIGRlc2lyZWQsIG1lbW9yeV9vcmRlcl9yZWxheGVkLCBtZW1vcnlfb3JkZXJfcmVs
YXhlZCk7XG4iKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgKm91dCA9
IGNvbXBhcmU7XG4iKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsK
KyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICAg
ICAgInZvaWQgIiwgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIHRvU3RyaW5nKGZpcnN0QXJndW1l
bnRBZGRyZXNzU3BhY2UpLCAnICcsIGZpcnN0QXJndW1lbnRQb2ludGVlLCAiKiBvYmplY3QsICIs
IHNlY29uZEFyZ3VtZW50LCAiIGNvbXBhcmUsICIsIHRoaXJkQXJndW1lbnQsICIgZGVzaXJlZCwg
IiwgdG9TdHJpbmcoZm91cnRoQXJndW1lbnRBZGRyZXNzU3BhY2UpLCAnICcsIGZvdXJ0aEFyZ3Vt
ZW50UG9pbnRlZSwgIiogb3V0KSB7XG4iCisgICAgICAgICAgICAgICAgIiAgICBhdG9taWNfY29t
cGFyZV9leGNoYW5nZV93ZWFrX2V4cGxpY2l0KG9iamVjdCwgJmNvbXBhcmUsIGRlc2lyZWQsIG1l
bW9yeV9vcmRlcl9yZWxheGVkLCBtZW1vcnlfb3JkZXJfcmVsYXhlZCk7XG4iCisgICAgICAgICAg
ICAgICAgIiAgICAqb3V0ID0gY29tcGFyZTtcbiIKKyAgICAgICAgICAgICAgICAifVxuIgorICAg
ICAgICAgICAgKTsKICAgICAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7
CiAgICAgICAgIH0KIApAQCAtNDUxLDkgKzQ5MywxMSBAQCBTdHJpbmcgd3JpdGVOYXRpdmVGdW5j
dGlvbihBU1Q6Ok5hdGl2ZUZ1CiAgICAgICAgIGF1dG8gdGhpcmRBcmd1bWVudEFkZHJlc3NTcGFj
ZSA9IHRoaXJkQXJndW1lbnRQb2ludGVyLmFkZHJlc3NTcGFjZSgpOwogICAgICAgICBhdXRvIHRo
aXJkQXJndW1lbnRQb2ludGVlID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSh0aGlyZEFy
Z3VtZW50UG9pbnRlci5lbGVtZW50VHlwZSgpKTsKICAgICAgICAgYXV0byBuYW1lID0gYXRvbWlj
TmFtZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKS5zdWJzdHJpbmcoIkludGVybG9j
a2VkIl9zdHIubGVuZ3RoKCkpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0
cmluZygidm9pZCAiLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgdG9TdHJpbmcoZmlyc3RBcmd1
bWVudEFkZHJlc3NTcGFjZSksICcgJywgZmlyc3RBcmd1bWVudFBvaW50ZWUsICIqIG9iamVjdCwg
Iiwgc2Vjb25kQXJndW1lbnQsICIgb3BlcmFuZCwgIiwgdG9TdHJpbmcodGhpcmRBcmd1bWVudEFk
ZHJlc3NTcGFjZSksICcgJywgdGhpcmRBcmd1bWVudFBvaW50ZWUsICIqIG91dCkge1xuIikpOwot
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgKm91dCA9IGF0b21p
Y18iLCBuYW1lLCAiX2V4cGxpY2l0KG9iamVjdCwgb3BlcmFuZCwgbWVtb3J5X29yZGVyX3JlbGF4
ZWQpO1xuIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAgICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICAidm9pZCAiLCBvdXRw
dXRGdW5jdGlvbk5hbWUsICcoJywgdG9TdHJpbmcoZmlyc3RBcmd1bWVudEFkZHJlc3NTcGFjZSks
ICcgJywgZmlyc3RBcmd1bWVudFBvaW50ZWUsICIqIG9iamVjdCwgIiwgc2Vjb25kQXJndW1lbnQs
ICIgb3BlcmFuZCwgIiwgdG9TdHJpbmcodGhpcmRBcmd1bWVudEFkZHJlc3NTcGFjZSksICcgJywg
dGhpcmRBcmd1bWVudFBvaW50ZWUsICIqIG91dCkge1xuIgorICAgICAgICAgICAgIiAgICAqb3V0
ID0gYXRvbWljXyIsIG5hbWUsICJfZXhwbGljaXQob2JqZWN0LCBvcGVyYW5kLCBtZW1vcnlfb3Jk
ZXJfcmVsYXhlZCk7XG4iCisgICAgICAgICAgICAifVxuIgorICAgICAgICApOwogICAgICAgICBy
ZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIApAQCAtNDczLDIzICs1MTcs
MjcgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAgICBp
ZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDQpCiAg
ICAgICAgICAgICBtZXRhbFBhcmFtZXRlcjROYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbM10tPnR5cGUoKSk7
CiAgICAgICAgIGF1dG8gbWV0YWxSZXR1cm5OYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZShyZXR1cm5UeXBlKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmlu
ZyhtZXRhbFJldHVybk5hbWUsICcgJywgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFy
YW1ldGVyMU5hbWUsICIgdGhlVGV4dHVyZSwgIiwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiB0aGVT
YW1wbGVyLCAiLCBtZXRhbFBhcmFtZXRlcjNOYW1lLCAiIGxvY2F0aW9uIikpOworICAgICAgICBz
dHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRG
dW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXIxTmFtZSwgIiB0aGVUZXh0dXJlLCAiLCBt
ZXRhbFBhcmFtZXRlcjJOYW1lLCAiIHRoZVNhbXBsZXIsICIsIG1ldGFsUGFyYW1ldGVyM05hbWUs
ICIgbG9jYXRpb24iKTsKICAgICAgICAgaWYgKCFtZXRhbFBhcmFtZXRlcjROYW1lLmlzTnVsbCgp
KQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiLCAiLCBtZXRh
bFBhcmFtZXRlcjROYW1lLCAiIG9mZnNldCIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIikge1xuIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgcmV0dXJuIHRo
ZVRleHR1cmUuc2FtcGxlKHRoZVNhbXBsZXIsICIpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5mbGV4aWJsZUFwcGVuZCgiLCAiLCBtZXRhbFBhcmFtZXRlcjROYW1lLCAiIG9mZnNldCIpOwor
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKKyAgICAgICAgICAgICIpIHtcbiIKKyAgICAg
ICAgICAgICIgICAgcmV0dXJuIHRoZVRleHR1cmUuc2FtcGxlKHRoZVNhbXBsZXIsICIKKyAgICAg
ICAgKTsKICAgICAgICAgaWYgKHRleHR1cmVUeXBlLmlzVGV4dHVyZUFycmF5KCkpIHsKICAgICAg
ICAgICAgIEFTU0VSVChsb2NhdGlvblZlY3Rvckxlbmd0aCA+IDEpOwotICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygibG9jYXRpb24uIiwgInh5enciX3N0ci5zdWJz
dHJpbmcoMCwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIiwgbG9jYXRpb24uIiwgInh5enci
X3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKSkpOworICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgibG9jYXRpb24uIiwgInh5enciX3N0ci5z
dWJzdHJpbmcoMCwgbG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIiwgbG9jYXRpb24uIiwgInh5
enciX3N0ci5zdWJzdHJpbmcobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxLCAxKSk7CiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoImxvY2F0aW9uIik7CiAg
ICAgICAgIGlmICghbWV0YWxQYXJhbWV0ZXI0TmFtZS5pc051bGwoKSkKICAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCIsIG9mZnNldCIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiKSIpOwogICAgICAgICBpZiAoIXRleHR1cmVUeXBlLmlzRGVwdGhUZXh0dXJlKCkpCi0g
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIuIiwgInh5enciX3N0
ci5zdWJzdHJpbmcoMCwgcmV0dXJuVmVjdG9yTGVuZ3RoKSkpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiO1xuIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsK
KyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIi4iLCAieHl6dyJfc3Ry
LnN1YnN0cmluZygwLCByZXR1cm5WZWN0b3JMZW5ndGgpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoCisgICAgICAgICAgICAiO1xuIgorICAgICAgICAgICAgIn1cbiIKKyAgICAgICAg
KTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9CiAKQEAg
LTUwNSwzNyArNTUzLDQxIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6TmF0aXZl
RnUKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlcjFOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWRO
YW1lRm9yVHlwZSh0ZXh0dXJlVHlwZSk7CiAgICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0ZXIyTmFt
ZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobG9jYXRpb25UeXBlKTsKICAgICAgICAg
YXV0byBtZXRhbFJldHVybk5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHJldHVy
blR5cGUpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKG1ldGFsUmV0
dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXIxTmFt
ZSwgIiB0aGVUZXh0dXJlLCAiLCBtZXRhbFBhcmFtZXRlcjJOYW1lLCAiIGxvY2F0aW9uKSB7XG4i
KSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQobWV0YWxSZXR1cm5OYW1l
LCAnICcsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHRo
ZVRleHR1cmUsICIsIG1ldGFsUGFyYW1ldGVyMk5hbWUsICIgbG9jYXRpb24pIHtcbiIpOwogICAg
ICAgICBpZiAodGV4dHVyZVR5cGUuaXNUZXh0dXJlQXJyYXkoKSkgewogICAgICAgICAgICAgQVNT
RVJUKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID4gMSk7CiAgICAgICAgICAgICBTdHJpbmcgZGltZW5z
aW9uc1tdID0geyAid2lkdGgiX3N0ciwgImhlaWdodCJfc3RyLCAiZGVwdGgiX3N0ciB9OwogICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDE7ICsr
aSkgewogICAgICAgICAgICAgICAgIGF1dG8gc3VmZml4ID0gInh5enciX3N0ci5zdWJzdHJpbmco
aSwgMSk7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygi
ICAgIGlmIChsb2NhdGlvbi4iLCBzdWZmaXgsICIgPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90
Pihsb2NhdGlvbi4iLCBzdWZmaXgsICIpID49IHRoZVRleHR1cmUuZ2V0XyIsIGRpbWVuc2lvbnNb
aV0sICIoKSkgcmV0dXJuICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTtcbiIpKTsKKyAgICAgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgaWYgKGxvY2F0aW9uLiIs
IHN1ZmZpeCwgIiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxvY2F0aW9uLiIsIHN1ZmZp
eCwgIikgPj0gdGhlVGV4dHVyZS5nZXRfIiwgZGltZW5zaW9uc1tpXSwgIigpKSByZXR1cm4gIiwg
bWV0YWxSZXR1cm5OYW1lLCAiKDApO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBh
dXRvIHN1ZmZpeCA9ICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0g
MSwgMSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAg
aWYgKGxvY2F0aW9uLiIsIHN1ZmZpeCwgIiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxv
Y2F0aW9uLiIsIHN1ZmZpeCwgIikgPj0gdGhlVGV4dHVyZS5nZXRfYXJyYXlfc2l6ZSgpKSByZXR1
cm4gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApO1xuIikpOworICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZCgiICAgIGlmIChsb2NhdGlvbi4iLCBzdWZmaXgsICIgPCAwIHx8
IHN0YXRpY19jYXN0PHVpbnQzMl90Pihsb2NhdGlvbi4iLCBzdWZmaXgsICIpID49IHRoZVRleHR1
cmUuZ2V0X2FycmF5X3NpemUoKSkgcmV0dXJuICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTtcbiIp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGxvY2F0aW9uVmVjdG9yTGVuZ3Ro
ID09IDEpCi0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygi
ICAgIGlmIChsb2NhdGlvbiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxvY2F0aW9uKSA+
PSB0aGVUZXh0dXJlLmdldF93aWR0aCgpKSByZXR1cm4gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDAp
O1xuIikpOworICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAg
ICBpZiAobG9jYXRpb24gPCAwIHx8IHN0YXRpY19jYXN0PHVpbnQzMl90Pihsb2NhdGlvbikgPj0g
dGhlVGV4dHVyZS5nZXRfd2lkdGgoKSkgcmV0dXJuICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTtc
biIpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZygiICAgIGlmIChsb2NhdGlvbi54IDwgMCB8fCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4obG9jYXRpb24ueCkgPj0gdGhlVGV4dHVyZS5nZXRfd2lkdGgoKSkgcmV0dXJuICIs
IG1ldGFsUmV0dXJuTmFtZSwgIigwKTtcbiIpKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgaWYgKGxvY2F0aW9uLnkgPCAwIHx8IHN0YXRpY19j
YXN0PHVpbnQzMl90Pihsb2NhdGlvbi55KSA+PSB0aGVUZXh0dXJlLmdldF9oZWlnaHQoKSkgcmV0
dXJuICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTtcbiIpKTsKKyAgICAgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAiICAgIGlmIChs
b2NhdGlvbi54IDwgMCB8fCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obG9jYXRpb24ueCkgPj0gdGhl
VGV4dHVyZS5nZXRfd2lkdGgoKSkgcmV0dXJuICIsIG1ldGFsUmV0dXJuTmFtZSwgIigwKTtcbiIK
KyAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAobG9jYXRpb24ueSA8IDAgfHwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGxvY2F0aW9uLnkpID49IHRoZVRleHR1cmUuZ2V0X2hlaWdodCgpKSByZXR1
cm4gIiwgbWV0YWxSZXR1cm5OYW1lLCAiKDApO1xuIgorICAgICAgICAgICAgICAgICk7CiAgICAg
ICAgICAgICAgICAgaWYgKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID49IDMpCi0gICAgICAgICAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBpZiAobG9jYXRpb24u
eiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxvY2F0aW9uLnopID49IHRoZVRleHR1cmUu
Z2V0X2RlcHRoKCkpIHJldHVybiAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7XG4iKSk7CisgICAg
ICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICBpZiAobG9j
YXRpb24ueiA8IDAgfHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxvY2F0aW9uLnopID49IHRoZVRl
eHR1cmUuZ2V0X2RlcHRoKCkpIHJldHVybiAiLCBtZXRhbFJldHVybk5hbWUsICIoMCk7XG4iKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
ICAgIHJldHVybiB0aGVUZXh0dXJlLnJlYWQoIik7CiAgICAgICAgIGlmICh0ZXh0dXJlVHlwZS5p
c1RleHR1cmVBcnJheSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQobG9jYXRpb25WZWN0b3JMZW5n
dGggPiAxKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInVp
bnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIihsb2NhdGlvbi4i
LCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAiKSwg
dWludChsb2NhdGlvbi4iLCAieHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZlY3Rvckxlbmd0
aCAtIDEsIDEpLCAiKSIpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBl
bmQoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGggLSAxKSwgIihsb2Nh
dGlvbi4iLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCBsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEp
LCAiKSwgdWludChsb2NhdGlvbi4iLCAieHl6dyJfc3RyLnN1YnN0cmluZyhsb2NhdGlvblZlY3Rv
ckxlbmd0aCAtIDEsIDEpLCAnKScpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInVpbnQiLCB2ZWN0b3JTdWZmaXgobG9jYXRpb25W
ZWN0b3JMZW5ndGgpLCAiKGxvY2F0aW9uKSIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIikiKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInVpbnQi
LCB2ZWN0b3JTdWZmaXgobG9jYXRpb25WZWN0b3JMZW5ndGgpLCAiKGxvY2F0aW9uKSIpOworICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnKScpOwogICAgICAgICBpZiAoIXRleHR1cmVUeXBl
LmlzRGVwdGhUZXh0dXJlKCkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtl
U3RyaW5nKCIuIiwgInh5enciX3N0ci5zdWJzdHJpbmcoMCwgcmV0dXJuVmVjdG9yTGVuZ3RoKSkp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiO1xuIik7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVB
cHBlbmQoJy4nLCAieHl6dyJfc3RyLnN1YnN0cmluZygwLCByZXR1cm5WZWN0b3JMZW5ndGgpKTsK
KyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoCisgICAgICAgICAgICAiO1xuIgorICAgICAg
ICAgICAgIn1cbiIKKyAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKTsKICAgICB9CiAKQEAgLTU0Myw5ICs1OTUsMTEgQEAgU3RyaW5nIHdyaXRlTmF0aXZl
RnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAgICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDEpOwogICAgICAgICBhdXRvIG1ldGFsUGFy
YW1ldGVyTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkpOwogICAgICAgICBhdXRvIG1ldGFs
UmV0dXJuTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi50eXBlKCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3Ry
aW5nKG1ldGFsUmV0dXJuTmFtZSwgJyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQ
YXJhbWV0ZXJOYW1lLCAiIHgpIHtcbiIpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
IiAgICByZXR1cm4gYXRvbWljX2xvYWRfZXhwbGljaXQoeCwgbWVtb3J5X29yZGVyX3JlbGF4ZWQp
O1xuIik7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgKKyAgICAgICAgICAgIG1ldGFsUmV0dXJuTmFtZSwg
JyAnLCBvdXRwdXRGdW5jdGlvbk5hbWUsICcoJywgbWV0YWxQYXJhbWV0ZXJOYW1lLCAiIHgpIHtc
biIKKyAgICAgICAgICAgICIgICAgcmV0dXJuIGF0b21pY19sb2FkX2V4cGxpY2l0KHgsIG1lbW9y
eV9vcmRlcl9yZWxheGVkKTtcbiIKKyAgICAgICAgICAgICJ9XG4iCisgICAgICAgICk7CiAgICAg
ICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCkBAIC01NTMsOSAr
NjA3LDkgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdQogICAgICAg
ICBBU1NFUlQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09
IDIpOwogICAgICAgICBhdXRvIG1ldGFsUGFyYW1ldGVyMU5hbWUgPSB0eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+
dHlwZSgpKTsKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlcjJOYW1lID0gdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClb
MV0tPnR5cGUoKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInZv
aWQgIiwgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyMU5hbWUsICIgeCwg
IiwgbWV0YWxQYXJhbWV0ZXIyTmFtZSwgIiB5KSB7XG4iKSk7Ci0gICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIgICAgYXRvbWljX3N0b3JlX2V4cGxpY2l0KHgsIHksIG1lbW9yeV9vcmRlcl9y
ZWxheGVkKTtcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAg
ICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInZvaWQgIiwgb3V0cHV0RnVuY3Rpb25O
YW1lLCAnKCcsIG1ldGFsUGFyYW1ldGVyMU5hbWUsICIgeCwgIiwgbWV0YWxQYXJhbWV0ZXIyTmFt
ZSwgIiB5KSB7XG4iCisgICAgICAgICAgICAiICAgIGF0b21pY19zdG9yZV9leHBsaWNpdCh4LCB5
LCBtZW1vcnlfb3JkZXJfcmVsYXhlZCk7XG4iCisgICAgICAgICAgICAifVxuIik7CiAgICAgICAg
IHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCkBAIC01OTAsNDUgKzY0
NCw1NSBAQCBTdHJpbmcgd3JpdGVOYXRpdmVGdW5jdGlvbihBU1Q6Ok5hdGl2ZUZ1CiAgICAgICAg
IEFTU0VSVChpbmRleCA9PSBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5z
aXplKCkpOwogCiAgICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0ZXIxTmFtZSA9IHR5cGVOYW1lci5t
YW5nbGVkTmFtZUZvclR5cGUodGV4dHVyZVR5cGUpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChtYWtlU3RyaW5nKCJ2b2lkICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRhbFBh
cmFtZXRlcjFOYW1lLCAiIHRoZVRleHR1cmUiKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxl
eGlibGVBcHBlbmQoInZvaWQgIiwgb3V0cHV0RnVuY3Rpb25OYW1lLCAnKCcsIG1ldGFsUGFyYW1l
dGVyMU5hbWUsICIgdGhlVGV4dHVyZSIpOwogICAgICAgICBpZiAoIXRleHR1cmVUeXBlLmlzV3Jp
dGFibGVUZXh0dXJlKCkgJiYgdGV4dHVyZVR5cGUudGV4dHVyZURpbWVuc2lvbigpICE9IDEpCiAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCB1aW50IG1pcExldmVsIik7Ci0gICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiwgIiwgd2lkdGhUeXBlTmFtZSwg
IiB3aWR0aCIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiLCAiLCB3
aWR0aFR5cGVOYW1lLCAiIHdpZHRoIik7CiAgICAgICAgIGlmICghaGVpZ2h0VHlwZU5hbWUuaXNO
dWxsKCkpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIsICIs
IGhlaWdodFR5cGVOYW1lLCAiIGhlaWdodCIpKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
ZmxleGlibGVBcHBlbmQoIiwgIiwgaGVpZ2h0VHlwZU5hbWUsICIgaGVpZ2h0Iik7CiAgICAgICAg
IGlmICghZGVwdGhUeXBlTmFtZS5pc051bGwoKSkKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKG1ha2VTdHJpbmcoIiwgIiwgZGVwdGhUeXBlTmFtZSwgIiBkZXB0aCIpKTsKKyAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiwgIiwgZGVwdGhUeXBlTmFtZSwg
IiBkZXB0aCIpOwogICAgICAgICBpZiAoIWVsZW1lbnRzVHlwZU5hbWUuaXNOdWxsKCkpCi0gICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIsICIsIGVsZW1lbnRzVHlw
ZU5hbWUsICIgZWxlbWVudHMiKSk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxl
QXBwZW5kKCIsICIsIGVsZW1lbnRzVHlwZU5hbWUsICIgZWxlbWVudHMiKTsKICAgICAgICAgaWYg
KCFudW1iZXJPZkxldmVsc1R5cGVOYW1lLmlzTnVsbCgpKQotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQobWFrZVN0cmluZygiLCAiLCBudW1iZXJPZkxldmVsc1R5cGVOYW1lLCAiIG51
bWJlck9mTGV2ZWxzIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiKSB7XG4iKTsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBpZiAod2lkdGgpXG4iKTsKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAgICAgKndpZHRoID0gdGhlVGV4dHVyZS5nZXRf
d2lkdGgoIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIsICIs
IG51bWJlck9mTGV2ZWxzVHlwZU5hbWUsICIgbnVtYmVyT2ZMZXZlbHMiKTsKKyAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoCisgICAgICAgICAgICAiKSB7XG4iCisgICAgICAgICAgICAiICAg
IGlmICh3aWR0aClcbiIKKyAgICAgICAgICAgICIgICAgICAgICp3aWR0aCA9IHRoZVRleHR1cmUu
Z2V0X3dpZHRoKCIKKyAgICAgICAgKTsKICAgICAgICAgaWYgKCF0ZXh0dXJlVHlwZS5pc1dyaXRh
YmxlVGV4dHVyZSgpICYmIHRleHR1cmVUeXBlLnRleHR1cmVEaW1lbnNpb24oKSAhPSAxKQogICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIm1pcExldmVsIik7CiAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7CiAgICAgICAgIGlmICghaGVpZ2h0VHlwZU5hbWUuaXNO
dWxsKCkpIHsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgaWYgKGhlaWdo
dClcbiIpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAgICAgKmhlaWdo
dCA9IHRoZVRleHR1cmUuZ2V0X2hlaWdodCgiKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKAorICAgICAgICAgICAgICAgICIgICAgaWYgKGhlaWdodClcbiIKKyAgICAgICAgICAg
ICAgICAiICAgICAgICAqaGVpZ2h0ID0gdGhlVGV4dHVyZS5nZXRfaGVpZ2h0KCIKKyAgICAgICAg
ICAgICk7CiAgICAgICAgICAgICBpZiAoIXRleHR1cmVUeXBlLmlzV3JpdGFibGVUZXh0dXJlKCkg
JiYgdGV4dHVyZVR5cGUudGV4dHVyZURpbWVuc2lvbigpICE9IDEpCiAgICAgICAgICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIm1pcExldmVsIik7CiAgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiKTtcbiIpOwogICAgICAgICB9CiAgICAgICAgIGlmICghZGVwdGhUeXBlTmFt
ZS5pc051bGwoKSkgewotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBpZiAo
ZGVwdGgpXG4iKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgICAgICpk
ZXB0aCA9IHRoZVRleHR1cmUuZ2V0X2RlcHRoKCIpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoCisgICAgICAgICAgICAgICAgIiAgICBpZiAoZGVwdGgpXG4iCisgICAgICAgICAg
ICAgICAgIiAgICAgICAgKmRlcHRoID0gdGhlVGV4dHVyZS5nZXRfZGVwdGgoIgorICAgICAgICAg
ICAgKTsKICAgICAgICAgICAgIGlmICghdGV4dHVyZVR5cGUuaXNXcml0YWJsZVRleHR1cmUoKSAm
JiB0ZXh0dXJlVHlwZS50ZXh0dXJlRGltZW5zaW9uKCkgIT0gMSkKICAgICAgICAgICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgibWlwTGV2ZWwiKTsKICAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKCIpO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFlbGVtZW50c1R5cGVO
YW1lLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIGlm
IChlbGVtZW50cylcbiIpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICAg
ICAgKmVsZW1lbnRzID0gdGhlVGV4dHVyZS5nZXRfYXJyYXlfc2l6ZSgpO1xuIik7CisgICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAiICAgIGlmIChlbGVt
ZW50cylcbiIKKyAgICAgICAgICAgICAgICAiICAgICAgICAqZWxlbWVudHMgPSB0aGVUZXh0dXJl
LmdldF9hcnJheV9zaXplKCk7XG4iCisgICAgICAgICAgICApOwogICAgICAgICB9CiAgICAgICAg
IGlmICghbnVtYmVyT2ZMZXZlbHNUeXBlTmFtZS5pc051bGwoKSkgewotICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIiAgICBpZiAobnVtYmVyT2ZMZXZlbHMpXG4iKTsKLSAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgICAgICpudW1iZXJPZkxldmVscyA9IHRoZVRl
eHR1cmUuZ2V0X251bV9taXBfbGV2ZWxzKCk7XG4iKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKAorICAgICAgICAgICAgICAgICIgICAgaWYgKG51bWJlck9mTGV2ZWxzKVxuIgor
ICAgICAgICAgICAgICAgICIgICAgICAgICpudW1iZXJPZkxldmVscyA9IHRoZVRleHR1cmUuZ2V0
X251bV9taXBfbGV2ZWxzKCk7XG4iCisgICAgICAgICAgICApOwogICAgICAgICB9CiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9XG4iKTsKICAgICAgICAgcmV0dXJuIHN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKTsKQEAgLTY4MywzNyArNzQ3LDQxIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1
bmN0aW9uKEFTVDo6TmF0aXZlRnUKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlcjJOYW1lID0g
dHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShpdGVtVHlwZSk7CiAgICAgICAgIGF1dG8gbWV0
YWxQYXJhbWV0ZXIzTmFtZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUobG9jYXRpb25U
eXBlKTsKICAgICAgICAgYXV0byBtZXRhbElubmVyVHlwZU5hbWUgPSB0eXBlTmFtZXIubWFuZ2xl
ZE5hbWVGb3JUeXBlKGl0ZW1WZWN0b3JJbm5lclR5cGUpOwotICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChtYWtlU3RyaW5nKCJ2b2lkICIsIG91dHB1dEZ1bmN0aW9uTmFtZSwgJygnLCBtZXRh
bFBhcmFtZXRlcjFOYW1lLCAiIHRoZVRleHR1cmUsICIsIG1ldGFsUGFyYW1ldGVyMk5hbWUsICIg
aXRlbSwgIiwgbWV0YWxQYXJhbWV0ZXIzTmFtZSwgIiBsb2NhdGlvbikge1xuIikpOworICAgICAg
ICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ2b2lkICIsIG91dHB1dEZ1bmN0aW9uTmFt
ZSwgJygnLCBtZXRhbFBhcmFtZXRlcjFOYW1lLCAiIHRoZVRleHR1cmUsICIsIG1ldGFsUGFyYW1l
dGVyMk5hbWUsICIgaXRlbSwgIiwgbWV0YWxQYXJhbWV0ZXIzTmFtZSwgIiBsb2NhdGlvbikge1xu
Iik7CiAgICAgICAgIGlmICh0ZXh0dXJlVHlwZS5pc1RleHR1cmVBcnJheSgpKSB7CiAgICAgICAg
ICAgICBBU1NFUlQobG9jYXRpb25WZWN0b3JMZW5ndGggPiAxKTsKICAgICAgICAgICAgIFN0cmlu
ZyBkaW1lbnNpb25zW10gPSB7ICJ3aWR0aCJfc3RyLCAiaGVpZ2h0Il9zdHIsICJkZXB0aCJfc3Ry
IH07CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxvY2F0aW9uVmVjdG9yTGVuZ3Ro
IC0gMTsgKytpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBzdWZmaXggPSAieHl6dyJfc3RyLnN1
YnN0cmluZyhpLCAxKTsKLSAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtl
U3RyaW5nKCIgICAgaWYgKGxvY2F0aW9uLiIsIHN1ZmZpeCwgIiA+PSB0aGVUZXh0dXJlLmdldF8i
LCBkaW1lbnNpb25zW2ldLCAiKCkpIHJldHVybjtcbiIpKTsKKyAgICAgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgaWYgKGxvY2F0aW9uLiIsIHN1ZmZpeCwgIiA+
PSB0aGVUZXh0dXJlLmdldF8iLCBkaW1lbnNpb25zW2ldLCAiKCkpIHJldHVybjtcbiIpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYXV0byBzdWZmaXggPSAieHl6dyJfc3RyLnN1YnN0cmlu
Zyhsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEsIDEpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQobWFrZVN0cmluZygiICAgIGlmIChsb2NhdGlvbi4iLCBzdWZmaXgsICIgPj0gdGhl
VGV4dHVyZS5nZXRfYXJyYXlfc2l6ZSgpKSByZXR1cm47XG4iKSk7CisgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCIgICAgaWYgKGxvY2F0aW9uLiIsIHN1ZmZpeCwgIiA+
PSB0aGVUZXh0dXJlLmdldF9hcnJheV9zaXplKCkpIHJldHVybjtcbiIpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgaWYgKGxvY2F0aW9uVmVjdG9yTGVuZ3RoID09IDEpCi0gICAgICAg
ICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgIGlmIChsb2NhdGlv
biA+PSB0aGVUZXh0dXJlLmdldF93aWR0aCgpKSByZXR1cm47XG4iKSk7CisgICAgICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIiAgICBpZiAobG9jYXRpb24gPj0gdGhlVGV4dHVyZS5n
ZXRfd2lkdGgoKSkgcmV0dXJuO1xuIik7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgaWYgKGxvY2F0aW9uLngg
Pj0gdGhlVGV4dHVyZS5nZXRfd2lkdGgoKSkgcmV0dXJuO1xuIikpOwotICAgICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoIiAgICBpZiAobG9jYXRpb24ueSA+PSB0
aGVUZXh0dXJlLmdldF9oZWlnaHQoKSkgcmV0dXJuO1xuIikpOworICAgICAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAiICAgIGlmIChsb2NhdGlv
bi54ID49IHRoZVRleHR1cmUuZ2V0X3dpZHRoKCkpIHJldHVybjtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgIiAgICBpZiAobG9jYXRpb24ueSA+PSB0aGVUZXh0dXJlLmdldF9oZWlnaHQoKSkgcmV0
dXJuO1xuIgorICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9u
VmVjdG9yTGVuZ3RoID49IDMpCi0gICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1ha2VTdHJpbmcoIiAgICBpZiAobG9jYXRpb24ueiA+PSB0aGVUZXh0dXJlLmdldF9kZXB0
aCgpKSByZXR1cm47XG4iKSk7CisgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIgICAgaWYgKGxvY2F0aW9uLnogPj0gdGhlVGV4dHVyZS5nZXRfZGVwdGgoKSkgcmV0dXJu
O1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQobWFrZVN0cmluZygiICAgIHRoZVRleHR1cmUud3JpdGUodmVjPCIsIG1ldGFsSW5uZXJU
eXBlTmFtZSwgIiwgND4oaXRlbSIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgiICAgIHRoZVRleHR1cmUud3JpdGUodmVjPCIsIG1ldGFsSW5uZXJUeXBlTmFtZSwgIiwg
ND4oaXRlbSIpOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQgLSBpdGVtVmVjdG9yTGVu
Z3RoOyArK2kpCiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiLCAwIik7CiAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpLCAiKTsKICAgICAgICAgaWYgKHRleHR1cmVUeXBl
LmlzVGV4dHVyZUFycmF5KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvblZlY3Rvckxl
bmd0aCA+IDEpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygi
dWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAiKGxvY2F0aW9u
LiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAsIGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0gMSksICIp
LCB1aW50KGxvY2F0aW9uLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVjdG9yTGVu
Z3RoIC0gMSwgMSksICIpIikpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFw
cGVuZCgidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlvblZlY3Rvckxlbmd0aCAtIDEpLCAiKGxv
Y2F0aW9uLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKDAsIGxvY2F0aW9uVmVjdG9yTGVuZ3RoIC0g
MSksICIpLCB1aW50KGxvY2F0aW9uLiIsICJ4eXp3Il9zdHIuc3Vic3RyaW5nKGxvY2F0aW9uVmVj
dG9yTGVuZ3RoIC0gMSwgMSksICcpJyk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygidWludCIsIHZlY3RvclN1ZmZpeChsb2NhdGlv
blZlY3Rvckxlbmd0aCksICIobG9jYXRpb24pIikpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgiKTtcbiIpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifVxuIik7CisgICAg
ICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ1aW50IiwgdmVjdG9yU3VmZml4
KGxvY2F0aW9uVmVjdG9yTGVuZ3RoKSwgIihsb2NhdGlvbikiKTsKKyAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoCisgICAgICAgICAgICAiKTtcbiIKKyAgICAgICAgICAgICJ9XG4iCisgICAg
ICAgICk7CiAgICAgICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5
cGVOYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCShyZXZpc2lvbiAyNDc4OTMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2MSw3ICszNjEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0aW9u
KQogICAgIHsKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJzdHJ1
Y3QgIiwgbV9tYW5nbGVkTmFtZUZvck5hbWVkVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9uKSwgIjtc
biIpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJzdHJ1Y3QgIiwg
bV9tYW5nbGVkTmFtZUZvck5hbWVkVHlwZShzdHJ1Y3R1cmVEZWZpbml0aW9uKSwgIjtcbiIpOwog
ICAgIH0KIAogICAgIHN0ZDo6ZnVuY3Rpb248U3RyaW5nKEFTVDo6TmFtZWRUeXBlJik+IG1fbWFu
Z2xlZE5hbWVGb3JOYW1lZFR5cGU7CkBAIC0zODYsMjIgKzM4NiwyNCBAQCB2b2lkIFR5cGVOYW1l
cjo6ZW1pdFVubmFtZWRUeXBlRGVmaW5pdGlvCiAgICAgaWYgKGlzPFJlZmVyZW5jZVR5cGVOYW1l
Tm9kZT4oYmFzZVR5cGVOYW1lTm9kZSkpIHsKICAgICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93
bmNhc3Q8UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihiYXNlVHlwZU5hbWVOb2RlKS5uYW1lZFR5cGUo
KTsKICAgICAgICAgZW1pdE5hbWVkVHlwZURlZmluaXRpb24obmFtZWRUeXBlLCBlbWl0dGVkTmFt
ZWRUeXBlcywgZW1pdHRlZFVubmFtZWRUeXBlcywgc3RyaW5nQnVpbGRlcik7Ci0gICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInR5cGVkZWYgIiwgbWFuZ2xlZE5hbWVGb3JU
eXBlKG5hbWVkVHlwZSksICcgJywgYmFzZVR5cGVOYW1lTm9kZS5tYW5nbGVkTmFtZSgpLCAiO1xu
IikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ0eXBlZGVmICIsIG1h
bmdsZWROYW1lRm9yVHlwZShuYW1lZFR5cGUpLCAnICcsIGJhc2VUeXBlTmFtZU5vZGUubWFuZ2xl
ZE5hbWUoKSwgIjtcbiIpOwogICAgIH0gZWxzZSBpZiAoaXM8UG9pbnRlclR5cGVOYW1lTm9kZT4o
YmFzZVR5cGVOYW1lTm9kZSkpIHsKICAgICAgICAgYXV0byYgcG9pbnRlclR5cGUgPSBkb3duY2Fz
dDxQb2ludGVyVHlwZU5hbWVOb2RlPihiYXNlVHlwZU5hbWVOb2RlKTsKICAgICAgICAgQVNTRVJU
KGJhc2VUeXBlTmFtZU5vZGUucGFyZW50KCkpOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChtYWtlU3RyaW5nKCJ0eXBlZGVmICIsIHRvU3RyaW5nKHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFj
ZSgpKSwgIiAiLCBwb2ludGVyVHlwZS5wYXJlbnQoKS0+bWFuZ2xlZE5hbWUoKSwgIiogIiwgcG9p
bnRlclR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpKTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5m
bGV4aWJsZUFwcGVuZCgidHlwZWRlZiAiLCB0b1N0cmluZyhwb2ludGVyVHlwZS5hZGRyZXNzU3Bh
Y2UoKSksICcgJywgcG9pbnRlclR5cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIqICIsIHBv
aW50ZXJUeXBlLm1hbmdsZWROYW1lKCksICI7XG4iKTsKICAgICB9IGVsc2UgaWYgKGlzPEFycmF5
UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihiYXNlVHlwZU5hbWVOb2RlKSkgewogICAgICAgICBhdXRv
JiBhcnJheVJlZmVyZW5jZVR5cGUgPSBkb3duY2FzdDxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9k
ZT4oYmFzZVR5cGVOYW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2RlLnBh
cmVudCgpKTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygic3RydWN0
ICIsIGFycmF5UmVmZXJlbmNlVHlwZS5tYW5nbGVkTmFtZSgpLCAieyBcbiIpKTsKLSAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgICIsIHRvU3RyaW5nKGFycmF5UmVm
ZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSksICIgIiwgYXJyYXlSZWZlcmVuY2VUeXBlLnBhcmVu
dCgpLT5tYW5nbGVkTmFtZSgpLCAiKiBwb2ludGVyO1xuIikpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiICAgIHVpbnQzMl90IGxlbmd0aDtcbiIpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgifTtcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KAorICAgICAgICAgICAgInN0cnVjdCAiLCBhcnJheVJlZmVyZW5jZVR5cGUubWFuZ2xlZE5hbWUo
KSwgInsgXG4iCisgICAgICAgICAgICAiICAgICIsIHRvU3RyaW5nKGFycmF5UmVmZXJlbmNlVHlw
ZS5hZGRyZXNzU3BhY2UoKSksICcgJywgYXJyYXlSZWZlcmVuY2VUeXBlLnBhcmVudCgpLT5tYW5n
bGVkTmFtZSgpLCAiKiBwb2ludGVyO1xuIgorICAgICAgICAgICAgIiAgICB1aW50MzJfdCBsZW5n
dGg7XG4iCisgICAgICAgICAgICAifTtcbiIKKyAgICAgICAgKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBhdXRvJiBhcnJheVR5cGUgPSBkb3duY2FzdDxBcnJheVR5cGVOYW1lTm9kZT4oYmFzZVR5
cGVOYW1lTm9kZSk7CiAgICAgICAgIEFTU0VSVChiYXNlVHlwZU5hbWVOb2RlLnBhcmVudCgpKTsK
LSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygidHlwZWRlZiBhcnJheTwi
LCBhcnJheVR5cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIsICIsIGFycmF5VHlwZS5udW1F
bGVtZW50cygpLCAiPiAiLCBhcnJheVR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpKTsKKyAgICAg
ICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgidHlwZWRlZiBhcnJheTwiLCBhcnJheVR5
cGUucGFyZW50KCktPm1hbmdsZWROYW1lKCksICIsICIsIGFycmF5VHlwZS5udW1FbGVtZW50cygp
LCAiPiAiLCBhcnJheVR5cGUubWFuZ2xlZE5hbWUoKSwgIjtcbiIpOwogICAgIH0KICAgICBlbWl0
dGVkVW5uYW1lZFR5cGVzLmFkZCgmYmFzZVR5cGVOYW1lTm9kZSk7CiB9CkBAIC00MTcsMjEgKzQx
OSwyMSBAQCB2b2lkIFR5cGVOYW1lcjo6ZW1pdE5hbWVkVHlwZURlZmluaXRpb24oCiAgICAgaWYg
KGlzPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihuYW1lZFR5cGUpKSB7CiAgICAgICAgIGF1
dG8mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZp
bml0aW9uPihuYW1lZFR5cGUpOwogICAgICAgICBhdXRvJiBiYXNlVHlwZSA9IGVudW1lcmF0aW9u
RGVmaW5pdGlvbi50eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKG1ha2VTdHJpbmcoImVudW0gY2xhc3MgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKGVudW1lcmF0
aW9uRGVmaW5pdGlvbiksICIgOiAiLCBtYW5nbGVkTmFtZUZvclR5cGUoZG93bmNhc3Q8QVNUOjpO
YW1lZFR5cGU+KGJhc2VUeXBlKSksICIge1xuIikpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmZs
ZXhpYmxlQXBwZW5kKCJlbnVtIGNsYXNzICIsIG1hbmdsZWROYW1lRm9yVHlwZShlbnVtZXJhdGlv
bkRlZmluaXRpb24pLCAiIDogIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKGRvd25jYXN0PEFTVDo6TmFt
ZWRUeXBlPihiYXNlVHlwZSkpLCAiIHtcbiIpOwogICAgICAgICBmb3IgKGF1dG8mIGVudW1lcmF0
aW9uTWVtYmVyIDogZW51bWVyYXRpb25EZWZpbml0aW9uLmVudW1lcmF0aW9uTWVtYmVycygpKQot
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgICIsIG1hbmds
ZWROYW1lRm9yRW51bWVyYXRpb25NZW1iZXIoZW51bWVyYXRpb25NZW1iZXIpLCAiID0gIiwgZW51
bWVyYXRpb25NZW1iZXIuZ2V0KCkudmFsdWUoKSwgIixcbiIpKTsKKyAgICAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIiAgICAiLCBtYW5nbGVkTmFtZUZvckVudW1lcmF0aW9u
TWVtYmVyKGVudW1lcmF0aW9uTWVtYmVyKSwgIiA9ICIsIGVudW1lcmF0aW9uTWVtYmVyLmdldCgp
LnZhbHVlKCksICIsXG4iKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn07XG4iKTsK
ICAgICB9IGVsc2UgaWYgKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUp
KSB7CiAgICAgICAgIC8vIE5hdGl2ZSB0eXBlcyBhbHJlYWR5IGhhdmUgZGVmaW5pdGlvbnMuIFRo
ZXJlJ3Mgbm90aGluZyB0byBkby4KICAgICB9IGVsc2UgaWYgKGlzPEFTVDo6U3RydWN0dXJlRGVm
aW5pdGlvbj4obmFtZWRUeXBlKSkgewogICAgICAgICBhdXRvJiBzdHJ1Y3R1cmVEZWZpbml0aW9u
ID0gZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpOwotICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJzdHJ1Y3QgIiwgbWFuZ2xlZE5hbWVG
b3JUeXBlKHN0cnVjdHVyZURlZmluaXRpb24pLCAiIHtcbiIpKTsKKyAgICAgICAgc3RyaW5nQnVp
bGRlci5mbGV4aWJsZUFwcGVuZCgic3RydWN0ICIsIG1hbmdsZWROYW1lRm9yVHlwZShzdHJ1Y3R1
cmVEZWZpbml0aW9uKSwgIiB7XG4iKTsKICAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmVFbGVt
ZW50IDogc3RydWN0dXJlRGVmaW5pdGlvbi5zdHJ1Y3R1cmVFbGVtZW50cygpKQotICAgICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiICAgICIsIG1hbmdsZWROYW1lRm9y
VHlwZShzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSksICcgJywgbWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1
cmVFbGVtZW50KHN0cnVjdHVyZUVsZW1lbnQpLCAiO1xuIikpOworICAgICAgICAgICAgc3RyaW5n
QnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAgICIsIG1hbmdsZWROYW1lRm9yVHlwZShzdHJ1Y3R1
cmVFbGVtZW50LnR5cGUoKSksICcgJywgbWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KHN0
cnVjdHVyZUVsZW1lbnQpLCAiO1xuIik7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9
O1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byYgdHlwZURlZmluaXRpb24gPSBkb3du
Y2FzdDxBU1Q6OlR5cGVEZWZpbml0aW9uPihuYW1lZFR5cGUpOwotICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJ0eXBlZGVmICIsIG1hbmdsZWROYW1lRm9yVHlwZSh0eXBl
RGVmaW5pdGlvbi50eXBlKCkpLCAnICcsIG1hbmdsZWROYW1lRm9yVHlwZSh0eXBlRGVmaW5pdGlv
biksICI7XG4iKSk7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoInR5cGVk
ZWYgIiwgbWFuZ2xlZE5hbWVGb3JUeXBlKHR5cGVEZWZpbml0aW9uLnR5cGUoKSksICcgJywgbWFu
Z2xlZE5hbWVGb3JUeXBlKHR5cGVEZWZpbml0aW9uKSwgIjtcbiIpOwogICAgIH0KICAgICBlbWl0
dGVkTmFtZWRUeXBlcy5hZGQoJm5hbWVkVHlwZSk7CiB9CkBAIC00ODcsMTEgKzQ4OSw3IEBAIFN0
cmluZyBUeXBlTmFtZXI6Om1hbmdsZWROYW1lRm9yU3RydWN0dXIKIFN0cmluZyBUeXBlTmFtZXI6
Om1ldGFsVHlwZXMoKQogewogICAgIFZpc2l0b3I6OnZpc2l0KG1fcHJvZ3JhbSk7Ci0gICAgU3Ry
aW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ldGFs
VHlwZURlY2xhcmF0aW9ucygpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtZXRhbFR5cGVEZWZpbml0aW9ucygpKTsKLSAgICByZXR1
cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOworICAgIHJldHVybiBtYWtlU3RyaW5nKG1ldGFs
VHlwZURlY2xhcmF0aW9ucygpLCAnXG4nLCBtZXRhbFR5cGVEZWZpbml0aW9ucygpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgTWV0YWwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCShyZXZpc2lvbiAyNDc4OTMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM2NiwxNCArMTM2NiwxMiBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
bG9nTGF5ZXJJbmZvCiAgICAgYWJzb2x1dGVCb3VuZHMubW92ZShsYXllci5vZmZzZXRGcm9tQW5j
ZXN0b3IobV9yZW5kZXJWaWV3LmxheWVyKCkpKTsKICAgICAKICAgICBTdHJpbmdCdWlsZGVyIGxv
Z1N0cmluZzsKLSAgICBsb2dTdHJpbmcuYXBwZW5kKG1ha2VTdHJpbmcocGFkKCcgJywgMTIgKyBk
ZXB0aCAqIDIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJmxheWVyKSkpLCAiIGlk
ICIsIGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+cHJpbWFyeUxheWVySUQoKSwgIiAoIiwgRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGFic29sdXRlQm91bmRzLngoKS50b0Zsb2F0KCksIDMp
LCAnLCcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChhYnNvbHV0ZUJvdW5kcy55KCkudG9G
bG9hdCgpLCAzKSwgJy0nLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYWJzb2x1dGVCb3Vu
ZHMubWF4WCgpLnRvRmxvYXQoKSwgMyksICcsJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRo
KGFic29sdXRlQm91bmRzLm1heFkoKS50b0Zsb2F0KCksIDMpLCAiKSAiLCBGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkV2lkdGgoYmFja2luZy0+YmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUoKSAvIDEw
MjQsIDIpLCAiS0IiKSk7CisgICAgbG9nU3RyaW5nLmZsZXhpYmxlQXBwZW5kKHBhZCgnICcsIDEy
ICsgZGVwdGggKiAyLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCZsYXllcikpKSwg
IiBpZCAiLCBiYWNraW5nLT5ncmFwaGljc0xheWVyKCktPnByaW1hcnlMYXllcklEKCksICIgKCIs
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChhYnNvbHV0ZUJvdW5kcy54KCkudG9GbG9hdCgp
LCAzKSwgJywnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoYWJzb2x1dGVCb3VuZHMueSgp
LnRvRmxvYXQoKSwgMyksICctJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGFic29sdXRl
Qm91bmRzLm1heFgoKS50b0Zsb2F0KCksIDMpLCAnLCcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRX
aWR0aChhYnNvbHV0ZUJvdW5kcy5tYXhZKCkudG9GbG9hdCgpLCAzKSwgIikgIiwgRm9ybWF0dGVk
TnVtYmVyOjpmaXhlZFdpZHRoKGJhY2tpbmctPmJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlKCkg
LyAxMDI0LCAyKSwgIktCIik7CiAKICAgICBpZiAoIWxheWVyLnJlbmRlcmVyKCkuc3R5bGUoKS5o
YXNBdXRvWkluZGV4KCkpCi0gICAgICAgIGxvZ1N0cmluZy5hcHBlbmQobWFrZVN0cmluZygiIHot
aW5kZXg6ICIsIGxheWVyLnJlbmRlcmVyKCkuc3R5bGUoKS56SW5kZXgoKSkpOworICAgICAgICBs
b2dTdHJpbmcuZmxleGlibGVBcHBlbmQoIiB6LWluZGV4OiAiLCBsYXllci5yZW5kZXJlcigpLnN0
eWxlKCkuekluZGV4KCkpOwogCi0gICAgbG9nU3RyaW5nLmFwcGVuZExpdGVyYWwoIiAoIik7Ci0g
ICAgbG9nU3RyaW5nLmFwcGVuZChsb2dSZWFzb25zRm9yQ29tcG9zaXRpbmcobGF5ZXIpKTsKLSAg
ICBsb2dTdHJpbmcuYXBwZW5kTGl0ZXJhbCgiKSAiKTsKKyAgICBsb2dTdHJpbmcuZmxleGlibGVB
cHBlbmQoIiAoIiwgbG9nUmVhc29uc0ZvckNvbXBvc2l0aW5nKGxheWVyKSwgIikgIik7CiAKICAg
ICBpZiAoYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5jb250ZW50c09wYXF1ZSgpIHx8IGJhY2tp
bmctPnBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKSB8fCBiYWNraW5nLT5mb3JlZ3JvdW5k
TGF5ZXIoKSB8fCBiYWNraW5nLT5iYWNrZ3JvdW5kTGF5ZXIoKSkgewogICAgICAgICBsb2dTdHJp
bmcuYXBwZW5kKCdbJyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShy
ZXZpc2lvbiAyNDc4OTMpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUwMDEsNyArNTAwMSw3IEBAIFN0cmluZyBJbnRlcm5hbHM6Om9u
Z29pbmdMb2Fkc0Rlc2NyaXB0aW8KICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1snKTsKIAogICAg
ICAgICBmb3IgKGF1dG8mIGluZm8gOiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRl
Z3koKS0+aW50ZXJtZWRpYXRlTG9hZEluZm9ybWF0aW9uRnJvbVJlc291cmNlTG9hZElkZW50aWZp
ZXIoaWRlbnRpZmllcikpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJb
IiwgKGludClpbmZvLnR5cGUsICIsXCIiLCBpbmZvLnJlcXVlc3QudXJsKCkuc3RyaW5nKCksICJc
IixcIiIsIGluZm8ucmVxdWVzdC5odHRwTWV0aG9kKCksICJcIiwiLCBpbmZvLnJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCksICJdIikpOworICAgICAgICAgICAgYnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgnWycsIChpbnQpaW5mby50eXBlLCAiLFwiIiwgaW5mby5yZXF1ZXN0LnVybCgpLnN0cmluZygp
LCAiXCIsXCIiLCBpbmZvLnJlcXVlc3QuaHR0cE1ldGhvZCgpLCAiXCIsIiwgaW5mby5yZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpLCAnXScpOwogCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCddJyk7
CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>