<?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>28287</bug_id>
          
          <creation_ts>2009-08-13 16:44:54 -0700</creation_ts>
          <short_desc>Too much use of void* in Grammar.y</short_desc>
          <delta_ts>2009-08-13 17:58:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>staikos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>140098</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-13 16:44:54 -0700</bug_when>
    <thetext>Need to fix up the type casting and a couple other things in the Grammar.y file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140104</commentid>
    <comment_count>1</comment_count>
      <attachid>34798</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-13 17:09:05 -0700</bug_when>
    <thetext>Created attachment 34798
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140109</commentid>
    <comment_count>2</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-08-13 17:24:12 -0700</bug_when>
    <thetext>Generally nice patch, though it does a lot more than just void* cleanup.  It&apos;s safe to assume you don&apos;t have a clean way to split the different changes up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140113</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-13 17:36:41 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Generally nice patch, though it does a lot more than just void* cleanup.  It&apos;s
&gt; safe to assume you don&apos;t have a clean way to split the different changes up?

It could easily be split into pieces. Since all these changes are mechanical I thought someone might review them in this form.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140114</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-13 17:39:53 -0700</bug_when>
    <thetext>Note that this patch itself is basically a broken out piece of &lt;https://bugs.webkit.org/attachment.cgi?id=30279&amp;action=prettypatch&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140115</commentid>
    <comment_count>5</comment_count>
      <attachid>34798</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-08-13 17:40:12 -0700</bug_when>
    <thetext>Comment on attachment 34798
patch

I&apos;ve been doing so.  I&apos;m happy to r+ this as-is but I think it would be nicer to commit it in a few pieces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140120</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-13 17:58:51 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/47256
http://trac.webkit.org/changeset/47257
http://trac.webkit.org/changeset/47258
http://trac.webkit.org/changeset/47259
http://trac.webkit.org/changeset/47262
http://trac.webkit.org/changeset/47263</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34798</attachid>
            <date>2009-08-13 17:09:05 -0700</date>
            <delta_ts>2009-08-13 17:40:12 -0700</delta_ts>
            <desc>patch</desc>
            <filename>GrammarPatch.txt</filename>
            <type>text/plain</type>
            <size>87376</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ3MjUzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDktMDgtMTMgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRvbyBtdWNoIHVzZSBvZiB2b2lkKiBpbiBHcmFtbWFyLnkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4Mjg3CisKKyAgICAg
ICAgTW9yZSB0aGluZ3MgdGhhdCBJIHJhbiBpbnRvIHdoaWxlIGRvaW5nIHBhcnNlciBhcmVuYSB3
b3JrLgorCisgICAgICAgICogcGFyc2VyL0dyYW1tYXIueTogVXBkYXRlZCBpbmNsdWRlcy4gVHdl
YWtlZCBjb21tZW50cy4KKyAgICAgICAgR290IHJpZCBvZiB0aGUgTEVYRVIgbWFjcm8gd2hpY2gg
d2FzIG9ubHkgdXNlZCBpbiBhIGZldyBwbGFjZXMuCisgICAgICAgIFJlcGxhY2VkIHRoZSBTRVRf
RVhDRVBUSU9OX0xPQ0FUSU9OIG1hY3JvIHdpdGggYSBmdW5jdGlvbgorICAgICAgICBuYW1lZCBz
ZXRFeGNlcHRpb25Mb2NhdGlvbi4gUmVwbGFjZWQgdGhlIERCRyBtYWNybyB3aXRoIGEgZnVuY3Rp
b24KKyAgICAgICAgbmFtZWQgc2V0U3RhdGVtZW50TG9jYXRpb24uIENoYW5nZWQgYWxsIHRoZSBo
ZWxwZXIgZnVuY3Rpb25zIHRvCisgICAgICAgIHRha2UgYSBKU0dMb2JhbERhdGEqIGluc3RlYWQg
b2YgYSB2b2lkKi4KKworICAgICAgICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmg6CisgICAg
ICAgIChKU0M6OlByb3BlcnR5Tm9kZTo6UHJvcGVydHlOb2RlKTogQWRkIGFuIG92ZXJsb2FkIHRo
YXQgdGFrZXMgYSBkb3VibGUKKyAgICAgICAgc28gdGhlIGNvZGUgdG8gY29udmVydCB0byBhIHN0
cmluZyBjYW4gYmUgaGVyZSBpbnN0ZWFkIG9mIEdyYW1tYXIueS4KKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuaDogRGl0dG8uCisKIDIwMDktMDgtMTMgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNv
bT4KIAogICAgICAgICBUcnkgc29tZSBtb3JlIHRvIGZpeCB0aGUgV2luZG93cyBidWlsZC4KSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3BhcnNlci9HcmFtbWFyLnkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0dyYW1tYXIueQkocmV2aXNpb24gNDcyNTMpCisrKyBKYXZhU2NyaXB0
Q29yZS9wYXJzZXIvR3JhbW1hci55CSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxOCArMjUsMTIgQEAK
IAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8
c3RkbGliLmg+Ci0jaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0j
aW5jbHVkZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgotI2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVk
ZSAiSlNTdHJpbmcuaCIKLSNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKLSNpbmNsdWRlICJDb21t
b25JZGVudGlmaWVycy5oIgorI2luY2x1ZGUgIk5vZGVDb25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRl
ICJOb2RlSW5mby5oIgotI2luY2x1ZGUgIlBhcnNlci5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogI2RlZmluZSBZWU1BTExPQyBmYXN0TWFsbG9jCkBAIC00
NSw0NiArMzksNDQgQEAKICNkZWZpbmUgWVlNQVhERVBUSCAxMDAwMAogI2RlZmluZSBZWUVOQUJM
RV9OTFMgMAogCi0vKiBkZWZhdWx0IHZhbHVlcyBmb3IgYmlzb24gKi8KKy8vIERlZmF1bHQgdmFs
dWVzIGZvciBiaXNvbi4KICNkZWZpbmUgWVlERUJVRyAwIC8vIFNldCB0byAxIHRvIGRlYnVnIGEg
cGFyc2UgZXJyb3IuCiAjZGVmaW5lIGpzY3l5ZGVidWcgMCAvLyBTZXQgdG8gMSB0byBkZWJ1ZyBh
IHBhcnNlIGVycm9yLgogI2lmICFQTEFURk9STShEQVJXSU4pCi0gICAgLy8gYXZvaWQgdHJpZ2dl
cmluZyB3YXJuaW5ncyBpbiBvbGRlciBiaXNvbgorLy8gQXZvaWQgdHJpZ2dlcmluZyB3YXJuaW5n
cyBpbiBvbGRlciBiaXNvbiBieSBub3Qgc2V0dGluZyB0aGlzIG9uIHRoZSBEYXJ3aW4gcGxhdGZv
cm0uCisvLyBGSVhNRTogSXMgdGhpcyBzdGlsbCBuZWVkZWQ/CiAjZGVmaW5lIFlZRVJST1JfVkVS
Qk9TRQogI2VuZGlmCiAKIGludCBqc2N5eWxleCh2b2lkKiBsdmFscCwgdm9pZCogbGxvY3AsIHZv
aWQqIGdsb2JhbFB0cik7CiBpbnQganNjeXllcnJvcihjb25zdCBjaGFyKik7CisKIHN0YXRpYyBp
bmxpbmUgYm9vbCBhbGxvd0F1dG9tYXRpY1NlbWljb2xvbihKU0M6OkxleGVyJiwgaW50KTsKIAog
I2RlZmluZSBHTE9CQUxfREFUQSBzdGF0aWNfY2FzdDxKU0dsb2JhbERhdGEqPihnbG9iYWxQdHIp
Ci0jZGVmaW5lIExFWEVSIChHTE9CQUxfREFUQS0+bGV4ZXIpCi0KLSNkZWZpbmUgQVVUT19TRU1J
Q09MT04gZG8geyBpZiAoIWFsbG93QXV0b21hdGljU2VtaWNvbG9uKCpMRVhFUiwgeXljaGFyKSkg
WVlBQk9SVDsgfSB3aGlsZSAoMCkKLSNkZWZpbmUgU0VUX0VYQ0VQVElPTl9MT0NBVElPTihub2Rl
LCBzdGFydCwgZGl2b3QsIGVuZCkgbm9kZS0+c2V0RXhjZXB0aW9uU291cmNlQ29kZSgoZGl2b3Qp
LCAoZGl2b3QpIC0gKHN0YXJ0KSwgKGVuZCkgLSAoZGl2b3QpKQotI2RlZmluZSBEQkcobCwgcywg
ZSkgKGwpLT5zZXRMb2MoKHMpLmZpcnN0X2xpbmUsIChlKS5sYXN0X2xpbmUpCisjZGVmaW5lIEFV
VE9fU0VNSUNPTE9OIGRvIHsgaWYgKCFhbGxvd0F1dG9tYXRpY1NlbWljb2xvbigqR0xPQkFMX0RB
VEEtPmxleGVyLCB5eWNoYXIpKSBZWUFCT1JUOyB9IHdoaWxlICgwKQogCiB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotc3RhdGljIEV4cHJlc3Npb25Ob2RlKiBt
YWtlQXNzaWduTm9kZSh2b2lkKiwgRXhwcmVzc2lvbk5vZGUqIGxvYywgT3BlcmF0b3IsIEV4cHJl
c3Npb25Ob2RlKiBleHByLCBib29sIGxvY0hhc0Fzc2lnbm1lbnRzLCBib29sIGV4cHJIYXNBc3Np
Z25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwotc3RhdGljIEV4cHJlc3Np
b25Ob2RlKiBtYWtlUHJlZml4Tm9kZSh2b2lkKiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJh
dG9yLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7Ci1zdGF0aWMgRXhwcmVzc2lvbk5v
ZGUqIG1ha2VQb3N0Zml4Tm9kZSh2b2lkKiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9y
LCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7Ci1zdGF0aWMgUHJvcGVydHlOb2RlKiBt
YWtlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eU5vZGUodm9pZCosIGNvbnN0IElkZW50aWZpZXIgJmdl
dE9yU2V0LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBQYXJhbWV0ZXJOb2RlKiwgRnVuY3Rpb25C
b2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKLXN0YXRpYyBFeHByZXNzaW9uTm9kZUluZm8g
bWFrZUZ1bmN0aW9uQ2FsbE5vZGUodm9pZCosIEV4cHJlc3Npb25Ob2RlSW5mbyBmdW5jLCBBcmd1
bWVudHNOb2RlSW5mbywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwotc3RhdGljIEV4
cHJlc3Npb25Ob2RlKiBtYWtlVHlwZU9mTm9kZSh2b2lkKiwgRXhwcmVzc2lvbk5vZGUqKTsKLXN0
YXRpYyBFeHByZXNzaW9uTm9kZSogbWFrZURlbGV0ZU5vZGUodm9pZCosIEV4cHJlc3Npb25Ob2Rl
KiwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwotc3RhdGljIEV4cHJlc3Npb25Ob2Rl
KiBtYWtlTmVnYXRlTm9kZSh2b2lkKiwgRXhwcmVzc2lvbk5vZGUqKTsKLXN0YXRpYyBOdW1iZXJO
b2RlKiBtYWtlTnVtYmVyTm9kZSh2b2lkKiwgZG91YmxlKTsKLXN0YXRpYyBFeHByZXNzaW9uTm9k
ZSogbWFrZUJpdHdpc2VOb3ROb2RlKHZvaWQqLCBFeHByZXNzaW9uTm9kZSopOwotc3RhdGljIEV4
cHJlc3Npb25Ob2RlKiBtYWtlTXVsdE5vZGUodm9pZCosIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVz
c2lvbk5vZGUqLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotc3RhdGljIEV4cHJlc3Npb25O
b2RlKiBtYWtlRGl2Tm9kZSh2b2lkKiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSos
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci1zdGF0aWMgRXhwcmVzc2lvbk5vZGUqIG1ha2VB
ZGROb2RlKHZvaWQqLCBFeHByZXNzaW9uTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKLXN0YXRpYyBFeHByZXNzaW9uTm9kZSogbWFrZVN1Yk5vZGUodm9p
ZCosIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5vZGUqLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOwotc3RhdGljIEV4cHJlc3Npb25Ob2RlKiBtYWtlTGVmdFNoaWZ0Tm9kZSh2b2lkKiwg
RXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cyk7Ci1zdGF0aWMgRXhwcmVzc2lvbk5vZGUqIG1ha2VSaWdodFNoaWZ0Tm9kZSh2b2lkKiwgRXhw
cmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
Ci1zdGF0aWMgU3RhdGVtZW50Tm9kZSogbWFrZVZhclN0YXRlbWVudE5vZGUodm9pZCosIEV4cHJl
c3Npb25Ob2RlKik7Ci1zdGF0aWMgRXhwcmVzc2lvbk5vZGUqIGNvbWJpbmVDb21tYU5vZGVzKHZv
aWQqLCBFeHByZXNzaW9uTm9kZSogbGlzdCwgRXhwcmVzc2lvbk5vZGUqIGluaXQpOworc3RhdGlj
IEV4cHJlc3Npb25Ob2RlKiBtYWtlQXNzaWduTm9kZShKU0dsb2JhbERhdGEqLCBFeHByZXNzaW9u
Tm9kZSogbGVmdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBsZWZ0SGFz
QXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2
b3QsIGludCBlbmQpOworc3RhdGljIEV4cHJlc3Npb25Ob2RlKiBtYWtlUHJlZml4Tm9kZShKU0ds
b2JhbERhdGEqLCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCBpbnQgc3RhcnQsIGludCBkaXZv
dCwgaW50IGVuZCk7CitzdGF0aWMgRXhwcmVzc2lvbk5vZGUqIG1ha2VQb3N0Zml4Tm9kZShKU0ds
b2JhbERhdGEqLCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCBpbnQgc3RhcnQsIGludCBkaXZv
dCwgaW50IGVuZCk7CitzdGF0aWMgUHJvcGVydHlOb2RlKiBtYWtlR2V0dGVyT3JTZXR0ZXJQcm9w
ZXJ0eU5vZGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSWRlbnRpZmllciYgZ2V0T3JTZXQsIGNvbnN0
IElkZW50aWZpZXImIG5hbWUsIFBhcmFtZXRlck5vZGUqLCBGdW5jdGlvbkJvZHlOb2RlKiwgY29u
c3QgU291cmNlQ29kZSYpOworc3RhdGljIEV4cHJlc3Npb25Ob2RlSW5mbyBtYWtlRnVuY3Rpb25D
YWxsTm9kZShKU0dsb2JhbERhdGEqLCBFeHByZXNzaW9uTm9kZUluZm8gZnVuY3Rpb24sIEFyZ3Vt
ZW50c05vZGVJbmZvLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CitzdGF0aWMgRXhw
cmVzc2lvbk5vZGUqIG1ha2VUeXBlT2ZOb2RlKEpTR2xvYmFsRGF0YSosIEV4cHJlc3Npb25Ob2Rl
Kik7CitzdGF0aWMgRXhwcmVzc2lvbk5vZGUqIG1ha2VEZWxldGVOb2RlKEpTR2xvYmFsRGF0YSos
IEV4cHJlc3Npb25Ob2RlKiwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOworc3RhdGlj
IEV4cHJlc3Npb25Ob2RlKiBtYWtlTmVnYXRlTm9kZShKU0dsb2JhbERhdGEqLCBFeHByZXNzaW9u
Tm9kZSopOworc3RhdGljIE51bWJlck5vZGUqIG1ha2VOdW1iZXJOb2RlKEpTR2xvYmFsRGF0YSos
IGRvdWJsZSk7CitzdGF0aWMgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXR3aXNlTm90Tm9kZShKU0ds
b2JhbERhdGEqLCBFeHByZXNzaW9uTm9kZSopOworc3RhdGljIEV4cHJlc3Npb25Ob2RlKiBtYWtl
TXVsdE5vZGUoSlNHbG9iYWxEYXRhKiwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25O
b2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKK3N0YXRpYyBFeHByZXNzaW9u
Tm9kZSogbWFrZURpdk5vZGUoSlNHbG9iYWxEYXRhKiwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKK3N0YXRpYyBF
eHByZXNzaW9uTm9kZSogbWFrZUFkZE5vZGUoSlNHbG9iYWxEYXRhKiwgRXhwcmVzc2lvbk5vZGUq
IGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
K3N0YXRpYyBFeHByZXNzaW9uTm9kZSogbWFrZVN1Yk5vZGUoSlNHbG9iYWxEYXRhKiwgRXhwcmVz
c2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKK3N0YXRpYyBFeHByZXNzaW9uTm9kZSogbWFrZUxlZnRTaGlmdE5vZGUoSlNHbG9i
YWxEYXRhKiwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKK3N0YXRpYyBFeHByZXNzaW9uTm9kZSogbWFrZVJpZ2h0
U2hpZnROb2RlKEpTR2xvYmFsRGF0YSosIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9u
Tm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CitzdGF0aWMgU3RhdGVtZW50
Tm9kZSogbWFrZVZhclN0YXRlbWVudE5vZGUoSlNHbG9iYWxEYXRhKiwgRXhwcmVzc2lvbk5vZGUq
KTsKK3N0YXRpYyBFeHByZXNzaW9uTm9kZSogY29tYmluZUNvbW1hTm9kZXMoSlNHbG9iYWxEYXRh
KiwgRXhwcmVzc2lvbk5vZGUqIGxpc3QsIEV4cHJlc3Npb25Ob2RlKiBpbml0KTsKIAogI2lmIENP
TVBJTEVSKE1TVkMpCiAKQEAgLTk3LDE3ICs4OSwxNyBAQCBzdGF0aWMgRXhwcmVzc2lvbk5vZGUq
IGNvbWJpbmVDb21tYU5vZGVzCiAjZGVmaW5lIFlZUEFSU0VfUEFSQU0gZ2xvYmFsUHRyCiAjZGVm
aW5lIFlZTEVYX1BBUkFNIGdsb2JhbFB0cgogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gTm9kZURl
Y2xhcmF0aW9uSW5mbzxUPiBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvKFQgbm9kZSwgUGFyc2Vy
QXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qIHZhckRlY2xzLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNr
PiogZnVuY0RlY2xzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlRmVhdHVyZXMgaW5mbywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IG51bUNvbnN0YW50cykgCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIE5v
ZGVEZWNsYXJhdGlvbkluZm88VD4gY3JlYXRlTm9kZURlY2xhcmF0aW9uSW5mbyhUIG5vZGUsCisg
ICAgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qIHZhckRlY2xz
LCAKKyAgICBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+
KiBmdW5jRGVjbHMsCisgICAgQ29kZUZlYXR1cmVzIGluZm8sIGludCBudW1Db25zdGFudHMpIAog
ewogICAgIEFTU0VSVCgoaW5mbyAmIH5BbGxGZWF0dXJlcykgPT0gMCk7CiAgICAgTm9kZURlY2xh
cmF0aW9uSW5mbzxUPiByZXN1bHQgPSB7IG5vZGUsIHZhckRlY2xzLCBmdW5jRGVjbHMsIGluZm8s
IG51bUNvbnN0YW50cyB9OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBOb2RlSW5mbzxUPiBjcmVhdGVOb2RlSW5mbyhUIG5vZGUsIENvZGVGZWF0dXJlcyBp
bmZvLCBpbnQgbnVtQ29uc3RhbnRzKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBOb2Rl
SW5mbzxUPiBjcmVhdGVOb2RlSW5mbyhUIG5vZGUsIENvZGVGZWF0dXJlcyBpbmZvLCBpbnQgbnVt
Q29uc3RhbnRzKQogewogICAgIEFTU0VSVCgoaW5mbyAmIH5BbGxGZWF0dXJlcykgPT0gMCk7CiAg
ICAgTm9kZUluZm88VD4gcmVzdWx0ID0geyBub2RlLCBpbmZvLCBudW1Db25zdGFudHMgfTsKQEAg
LTEzMywyMSArMTI1LDIxIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCBtZXJnZURl
Y2wKICAgICByZXR1cm4gZGVjbHMxOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRUb1ZhckRlY2xh
cmF0aW9uTGlzdCh2b2lkKiBnbG9iYWxQdHIsIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0
YWNrczo6VmFyU3RhY2s+KiYgdmFyRGVjbHMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNp
Z25lZCBhdHRycykKK3N0YXRpYyB2b2lkIGFwcGVuZFRvVmFyRGVjbGFyYXRpb25MaXN0KEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpW
YXJTdGFjaz4qJiB2YXJEZWNscywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGF0
dHJzKQogewogICAgIGlmICghdmFyRGVjbHMpCi0gICAgICAgIHZhckRlY2xzID0gbmV3IChHTE9C
QUxfREFUQSkgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjaz47Cisg
ICAgICAgIHZhckRlY2xzID0gbmV3IChnbG9iYWxEYXRhKSBQYXJzZXJBcmVuYURhdGE8RGVjbGFy
YXRpb25TdGFja3M6OlZhclN0YWNrPjsKIAogICAgIHZhckRlY2xzLT5kYXRhLmFwcGVuZChtYWtl
X3BhaXIoaWRlbnQsIGF0dHJzKSk7CiAKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGFwcGVuZFRv
VmFyRGVjbGFyYXRpb25MaXN0KHZvaWQqIGdsb2JhbFB0ciwgUGFyc2VyQXJlbmFEYXRhPERlY2xh
cmF0aW9uU3RhY2tzOjpWYXJTdGFjaz4qJiB2YXJEZWNscywgQ29uc3REZWNsTm9kZSogZGVjbCkK
K3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRUb1ZhckRlY2xhcmF0aW9uTGlzdChKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3Rh
Y2s+KiYgdmFyRGVjbHMsIENvbnN0RGVjbE5vZGUqIGRlY2wpCiB7CiAgICAgdW5zaWduZWQgYXR0
cnMgPSBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFudDsKICAgICBpZiAoZGVjbC0+aGFzSW5p
dGlhbGl6ZXIoKSkKICAgICAgICAgYXR0cnMgfD0gRGVjbGFyYXRpb25TdGFja3M6Okhhc0luaXRp
YWxpemVyOyAgICAgICAgCi0gICAgYXBwZW5kVG9WYXJEZWNsYXJhdGlvbkxpc3QoZ2xvYmFsUHRy
LCB2YXJEZWNscywgZGVjbC0+aWRlbnQoKSwgYXR0cnMpOworICAgIGFwcGVuZFRvVmFyRGVjbGFy
YXRpb25MaXN0KGdsb2JhbERhdGEsIHZhckRlY2xzLCBkZWNsLT5pZGVudCgpLCBhdHRycyk7CiB9
CiAKICV9CkBAIC0xODQsNiArMTc2LDIwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRUb1Zh
ckRlY2xhcmF0aW8KICAgICBPcGVyYXRvciAgICAgICAgICAgIG9wOwogfQogCisleworCitzdGF0
aWMgaW5saW5lIHZvaWQgc2V0U3RhdGVtZW50TG9jYXRpb24oU3RhdGVtZW50Tm9kZSogc3RhdGVt
ZW50LCBjb25zdCBZWUxUWVBFJiBzdGFydCwgY29uc3QgWVlMVFlQRSYgZW5kKQoreworICAgIHN0
YXRlbWVudC0+c2V0TG9jKHN0YXJ0LmZpcnN0X2xpbmUsIGVuZC5sYXN0X2xpbmUpOworfQorCitz
dGF0aWMgaW5saW5lIHZvaWQgc2V0RXhjZXB0aW9uTG9jYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEqIG5vZGUsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgZW5k
KQoreworICAgIG5vZGUtPnNldEV4Y2VwdGlvblNvdXJjZUNvZGUoZGl2b3QsIGRpdm90IC0gc3Rh
cnQsIGVuZCAtIGRpdm90KTsKK30KKworJX0KKwogJXN0YXJ0IFByb2dyYW0KIAogLyogbGl0ZXJh
bHMgKi8KQEAgLTI5MSwyNSArMjk3LDI1IEBAIExpdGVyYWw6CiAgIHwgTlVNQkVSICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25Ob2Rl
Kj4obWFrZU51bWJlck5vZGUoR0xPQkFMX0RBVEEsICQxKSwgMCwgMSk7IH0KICAgfCBTVFJJTkcg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUluZm88RXhwcmVz
c2lvbk5vZGUqPihuZXcgKEdMT0JBTF9EQVRBKSBTdHJpbmdOb2RlKEdMT0JBTF9EQVRBLCAqJDEp
LCAwLCAxKTsgfQogICB8ICcvJyAvKiByZWdleHAgKi8gICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGV4ZXImIGwgPSAqTEVY
RVI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExleGVyJiBs
ID0gKkdMT0JBTF9EQVRBLT5sZXhlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciogcGF0dGVybjsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciogZmxhZ3M7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbC5zY2FuUmVnRXhw
KHBhdHRlcm4sIGZsYWdzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFlZQUJPUlQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlZ0V4cE5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBSZWdFeHBOb2RlKEdM
T0JBTF9EQVRBLCAqcGF0dGVybiwgKmZsYWdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHNpemUgPSBwYXR0ZXJuLT5zaXplKCkgKyAyOyAvLyArIDIg
Zm9yIHRoZSB0d28gLydzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNFVF9FWENFUFRJT05fTE9DQVRJT04obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5maXJz
dF9jb2x1bW4gKyBzaXplLCBAMS5maXJzdF9jb2x1bW4gKyBzaXplKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwg
QDEuZmlyc3RfY29sdW1uLCBAMS5maXJzdF9jb2x1bW4gKyBzaXplLCBAMS5maXJzdF9jb2x1bW4g
KyBzaXplKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQg
PSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsIDAsIDApOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgfCBESVZFUVVBTCAvKiByZWdleHAg
d2l0aCAvPSAqLyAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIExleGVyJiBsID0gKkxFWEVSOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMZXhlciYgbCA9ICpHTE9CQUxfREFUQS0+bGV4ZXI7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIHBhdHRl
cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXIqIGZsYWdzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWwuc2NhblJlZ0V4cChwYXR0ZXJuLCBmbGFncywgJz0nKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlZQUJPUlQ7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ0V4cE5vZGUqIG5vZGUgPSBuZXcg
KEdMT0JBTF9EQVRBKSBSZWdFeHBOb2RlKEdMT0JBTF9EQVRBLCAqcGF0dGVybiwgKmZsYWdzKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUgPSBw
YXR0ZXJuLT5zaXplKCkgKyAyOyAvLyArIDIgZm9yIHRoZSB0d28gLydzCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFVF9FWENFUFRJT05fTE9DQVRJT04obm9k
ZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5maXJzdF9jb2x1bW4gKyBzaXplLCBAMS5maXJzdF9jb2x1
bW4gKyBzaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5maXJzdF9jb2x1
bW4gKyBzaXplLCBAMS5maXJzdF9jb2x1bW4gKyBzaXplKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9k
ZSo+KG5vZGUsIDAsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KIDsKQEAgLTMxNywxNCArMzIzLDE0IEBAIExpdGVyYWw6CiBQcm9wZXJ0eToKICAgICBJREVO
VCAnOicgQXNzaWdubWVudEV4cHIgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUluZm88UHJv
cGVydHlOb2RlKj4obmV3IChHTE9CQUxfREFUQSkgUHJvcGVydHlOb2RlKEdMT0JBTF9EQVRBLCAq
JDEsICQzLm1fbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCksICQzLm1fZmVhdHVyZXMsICQz
Lm1fbnVtQ29uc3RhbnRzKTsgfQogICB8IFNUUklORyAnOicgQXNzaWdubWVudEV4cHIgICAgICAg
ICAgIHsgJCQgPSBjcmVhdGVOb2RlSW5mbzxQcm9wZXJ0eU5vZGUqPihuZXcgKEdMT0JBTF9EQVRB
KSBQcm9wZXJ0eU5vZGUoR0xPQkFMX0RBVEEsICokMSwgJDMubV9ub2RlLCBQcm9wZXJ0eU5vZGU6
OkNvbnN0YW50KSwgJDMubV9mZWF0dXJlcywgJDMubV9udW1Db25zdGFudHMpOyB9Ci0gIHwgTlVN
QkVSICc6JyBBc3NpZ25tZW50RXhwciAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVJbmZvPFBy
b3BlcnR5Tm9kZSo+KG5ldyAoR0xPQkFMX0RBVEEpIFByb3BlcnR5Tm9kZShHTE9CQUxfREFUQSwg
SWRlbnRpZmllcihHTE9CQUxfREFUQSwgVVN0cmluZzo6ZnJvbSgkMSkpLCAkMy5tX25vZGUsIFBy
b3BlcnR5Tm9kZTo6Q29uc3RhbnQpLCAkMy5tX2ZlYXR1cmVzLCAkMy5tX251bUNvbnN0YW50cyk7
IH0KLSAgfCBJREVOVCBJREVOVCAnKCcgJyknIE9QRU5CUkFDRSBGdW5jdGlvbkJvZHkgQ0xPU0VC
UkFDRSAgICB7ICQkID0gY3JlYXRlTm9kZUluZm88UHJvcGVydHlOb2RlKj4obWFrZUdldHRlck9y
U2V0dGVyUHJvcGVydHlOb2RlKGdsb2JhbFB0ciwgKiQxLCAqJDIsIDAsICQ2LCBMRVhFUi0+c291
cmNlQ29kZSgkNSwgJDcsIEA1LmZpcnN0X2xpbmUpKSwgQ2xvc3VyZUZlYXR1cmUsIDApOyBEQkco
JDYsIEA1LCBANyk7IGlmICghJCQubV9ub2RlKSBZWUFCT1JUOyB9CisgIHwgTlVNQkVSICc6JyBB
c3NpZ25tZW50RXhwciAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVJbmZvPFByb3BlcnR5Tm9k
ZSo+KG5ldyAoR0xPQkFMX0RBVEEpIFByb3BlcnR5Tm9kZShHTE9CQUxfREFUQSwgJDEsICQzLm1f
bm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCksICQzLm1fZmVhdHVyZXMsICQzLm1fbnVtQ29u
c3RhbnRzKTsgfQorICB8IElERU5UIElERU5UICcoJyAnKScgT1BFTkJSQUNFIEZ1bmN0aW9uQm9k
eSBDTE9TRUJSQUNFICAgIHsgJCQgPSBjcmVhdGVOb2RlSW5mbzxQcm9wZXJ0eU5vZGUqPihtYWtl
R2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eU5vZGUoR0xPQkFMX0RBVEEsICokMSwgKiQyLCAwLCAkNiwg
R0xPQkFMX0RBVEEtPmxleGVyLT5zb3VyY2VDb2RlKCQ1LCAkNywgQDUuZmlyc3RfbGluZSkpLCBD
bG9zdXJlRmVhdHVyZSwgMCk7IHNldFN0YXRlbWVudExvY2F0aW9uKCQ2LCBANSwgQDcpOyBpZiAo
ISQkLm1fbm9kZSkgWVlBQk9SVDsgfQogICB8IElERU5UIElERU5UICcoJyBGb3JtYWxQYXJhbWV0
ZXJMaXN0ICcpJyBPUEVOQlJBQ0UgRnVuY3Rpb25Cb2R5IENMT1NFQlJBQ0UKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICQkID0gY3JlYXRlTm9kZUluZm88UHJvcGVydHlOb2RlKj4obWFrZUdldHRlck9yU2V0dGVy
UHJvcGVydHlOb2RlKGdsb2JhbFB0ciwgKiQxLCAqJDIsICQ0Lm1fbm9kZS5oZWFkLCAkNywgTEVY
RVItPnNvdXJjZUNvZGUoJDYsICQ4LCBANi5maXJzdF9saW5lKSksICQ0Lm1fZmVhdHVyZXMgfCBD
bG9zdXJlRmVhdHVyZSwgMCk7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNyZWF0ZU5vZGVJbmZvPFByb3BlcnR5
Tm9kZSo+KG1ha2VHZXR0ZXJPclNldHRlclByb3BlcnR5Tm9kZShHTE9CQUxfREFUQSwgKiQxLCAq
JDIsICQ0Lm1fbm9kZS5oZWFkLCAkNywgR0xPQkFMX0RBVEEtPmxleGVyLT5zb3VyY2VDb2RlKCQ2
LCAkOCwgQDYuZmlyc3RfbGluZSkpLCAkNC5tX2ZlYXR1cmVzIHwgQ2xvc3VyZUZlYXR1cmUsIDAp
OyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCQ0Lm1fZmVhdHVyZXMgJiBBcmd1bWVudHNGZWF0dXJlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJDctPnNldFVzZXNBcmd1bWVudHMoKTsgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERCRygkNywgQDYsIEA4KTsg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFN0YXRlbWVudExvY2F0aW9uKCQ3LCBANiwgQDgpOyAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCEkJC5tX25vZGUpIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWVlBQk9SVDsgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzg5LDE1ICsz
OTUsMTUgQEAgTWVtYmVyRXhwcjoKICAgICBQcmltYXJ5RXhwcgogICB8IEZ1bmN0aW9uRXhwciAg
ICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9k
ZSo+KCQxLm1fbm9kZSwgJDEubV9mZWF0dXJlcywgJDEubV9udW1Db25zdGFudHMpOyB9CiAgIHwg
TWVtYmVyRXhwciAnWycgRXhwciAnXScgICAgICAgICAgICAgeyBCcmFja2V0QWNjZXNzb3JOb2Rl
KiBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgQnJhY2tldEFjY2Vzc29yTm9kZShHTE9CQUxfREFU
QSwgJDEubV9ub2RlLCAkMy5tX25vZGUsICQzLm1fZmVhdHVyZXMgJiBBc3NpZ25GZWF0dXJlKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFVF9FWENFUFRJT05f
TE9DQVRJT04obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDQubGFzdF9j
b2x1bW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhj
ZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDQu
bGFzdF9jb2x1bW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZXMg
fCAkMy5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyArICQzLm1fbnVtQ29uc3RhbnRzKTsg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICB8IE1lbWJlckV4
cHIgJy4nIElERU5UICAgICAgICAgICAgICAgIHsgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3
IChHTE9CQUxfREFUQSkgRG90QWNjZXNzb3JOb2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICok
Myk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBU
SU9OX0xPQ0FUSU9OKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEAzLmxh
c3RfY29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4s
IEAzLmxhc3RfY29sdW1uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICQkID0gY3JlYXRlTm9kZUluZm88RXhwcmVzc2lvbk5vZGUqPihub2RlLCAkMS5tX2ZlYXR1
cmVzLCAkMS5tX251bUNvbnN0YW50cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICB8IE5FVyBNZW1iZXJFeHByIEFyZ3VtZW50cyAgICAgICAgICAgIHsgTmV3
RXhwck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBOZXdFeHByTm9kZShHTE9CQUxfREFU
QSwgJDIubV9ub2RlLCAkMy5tX25vZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU0VUX0VYQ0VQVElPTl9MT0NBVElPTihub2RlLCBAMS5maXJzdF9jb2x1bW4s
IEAyLmxhc3RfY29sdW1uLCBAMy5sYXN0X2NvbHVtbik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBAMS5maXJzdF9j
b2x1bW4sIEAyLmxhc3RfY29sdW1uLCBAMy5sYXN0X2NvbHVtbik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNyZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25O
b2RlKj4obm9kZSwgJDIubV9mZWF0dXJlcyB8ICQzLm1fZmVhdHVyZXMsICQyLm1fbnVtQ29uc3Rh
bnRzICsgJDMubV9udW1Db25zdGFudHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KIDsKQEAgLTQwNSwxNSArNDExLDE1IEBAIE1lbWJlckV4cHI6CiBNZW1iZXJF
eHByTm9CRjoKICAgICBQcmltYXJ5RXhwck5vQnJhY2UKICAgfCBNZW1iZXJFeHByTm9CRiAnWycg
RXhwciAnXScgICAgICAgICB7IEJyYWNrZXRBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JB
TF9EQVRBKSBCcmFja2V0QWNjZXNzb3JOb2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICQzLm1f
bm9kZSwgJDMubV9mZWF0dXJlcyAmIEFzc2lnbkZlYXR1cmUpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElPTl9MT0NBVElPTihub2RlLCBAMS5m
aXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBANC5sYXN0X2NvbHVtbik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2Rl
LCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBANC5sYXN0X2NvbHVtbik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNyZWF0ZU5vZGVJbmZv
PEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDEubV9mZWF0dXJlcyB8ICQzLm1fZmVhdHVyZXMsICQx
Lm1fbnVtQ29uc3RhbnRzICsgJDMubV9udW1Db25zdGFudHMpOyAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgIHwgTWVtYmVyRXhwck5vQkYgJy4nIElERU5UICAg
ICAgICAgICAgeyBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBEb3RB
Y2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgKiQzKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFVF9FWENFUFRJT05fTE9DQVRJT04obm9kZSwg
QDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDMubGFzdF9jb2x1bW4pOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24o
bm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDMubGFzdF9jb2x1bW4pOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2Rl
SW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZXMsICQxLm1fbnVtQ29uc3Rh
bnRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgIHwgTkVX
IE1lbWJlckV4cHIgQXJndW1lbnRzICAgICAgICAgICAgeyBOZXdFeHByTm9kZSogbm9kZSA9IG5l
dyAoR0xPQkFMX0RBVEEpIE5ld0V4cHJOb2RlKEdMT0JBTF9EQVRBLCAkMi5tX25vZGUsICQzLm1f
bm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhD
RVBUSU9OX0xPQ0FUSU9OKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4sIEAz
Lmxhc3RfY29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDIubGFzdF9jb2x1
bW4sIEAzLmxhc3RfY29sdW1uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICQkID0gY3JlYXRlTm9kZUluZm88RXhwcmVzc2lvbk5vZGUqPihub2RlLCAkMi5tX2Zl
YXR1cmVzIHwgJDMubV9mZWF0dXJlcywgJDIubV9udW1Db25zdGFudHMgKyAkMy5tX251bUNvbnN0
YW50cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogOwpAQCAt
NDIxLDcgKzQyNyw3IEBAIE1lbWJlckV4cHJOb0JGOgogTmV3RXhwcjoKICAgICBNZW1iZXJFeHBy
CiAgIHwgTkVXIE5ld0V4cHIgICAgICAgICAgICAgICAgICAgICAgICAgeyBOZXdFeHByTm9kZSog
bm9kZSA9IG5ldyAoR0xPQkFMX0RBVEEpIE5ld0V4cHJOb2RlKEdMT0JBTF9EQVRBLCAkMi5tX25v
ZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQ
VElPTl9MT0NBVElPTihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uLCBAMi5s
YXN0X2NvbHVtbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1u
LCBAMi5sYXN0X2NvbHVtbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkJCA9IGNyZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDIubV9mZWF0
dXJlcywgJDIubV9udW1Db25zdGFudHMpOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiA7CkBAIC00MjksMzIgKzQzNSwzMiBAQCBOZXdFeHByOgogTmV3RXhwck5v
QkY6CiAgICAgTWVtYmVyRXhwck5vQkYKICAgfCBORVcgTmV3RXhwciAgICAgICAgICAgICAgICAg
ICAgICAgICB7IE5ld0V4cHJOb2RlKiBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgTmV3RXhwck5v
ZGUoR0xPQkFMX0RBVEEsICQyLm1fbm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FUSU9OKG5vZGUsIEAxLmZpcnN0X2NvbHVt
biwgQDIubGFzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0
X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUluZm88RXhwcmVzc2lv
bk5vZGUqPihub2RlLCAkMi5tX2ZlYXR1cmVzLCAkMi5tX251bUNvbnN0YW50cyk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogOwogCiBDYWxsRXhwcjoKLSAgICBN
ZW1iZXJFeHByIEFyZ3VtZW50cyAgICAgICAgICAgICAgICB7ICQkID0gbWFrZUZ1bmN0aW9uQ2Fs
bE5vZGUoZ2xvYmFsUHRyLCAkMSwgJDIsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4s
IEAyLmxhc3RfY29sdW1uKTsgfQotICB8IENhbGxFeHByIEFyZ3VtZW50cyAgICAgICAgICAgICAg
ICAgIHsgJCQgPSBtYWtlRnVuY3Rpb25DYWxsTm9kZShnbG9iYWxQdHIsICQxLCAkMiwgQDEuZmly
c3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4pOyB9CisgICAgTWVtYmVy
RXhwciBBcmd1bWVudHMgICAgICAgICAgICAgICAgeyAkJCA9IG1ha2VGdW5jdGlvbkNhbGxOb2Rl
KEdMT0JBTF9EQVRBLCAkMSwgJDIsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEAy
Lmxhc3RfY29sdW1uKTsgfQorICB8IENhbGxFeHByIEFyZ3VtZW50cyAgICAgICAgICAgICAgICAg
IHsgJCQgPSBtYWtlRnVuY3Rpb25DYWxsTm9kZShHTE9CQUxfREFUQSwgJDEsICQyLCBAMS5maXJz
dF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBAMi5sYXN0X2NvbHVtbik7IH0KICAgfCBDYWxsRXhw
ciAnWycgRXhwciAnXScgICAgICAgICAgICAgICB7IEJyYWNrZXRBY2Nlc3Nvck5vZGUqIG5vZGUg
PSBuZXcgKEdMT0JBTF9EQVRBKSBCcmFja2V0QWNjZXNzb3JOb2RlKEdMT0JBTF9EQVRBLCAkMS5t
X25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlcyAmIEFzc2lnbkZlYXR1cmUpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElPTl9MT0NBVElP
Tihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBANC5sYXN0X2NvbHVtbik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFeGNlcHRpb25M
b2NhdGlvbihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBANC5sYXN0X2Nv
bHVtbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNy
ZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDEubV9mZWF0dXJlcyB8ICQzLm1f
ZmVhdHVyZXMsICQxLm1fbnVtQ29uc3RhbnRzICsgJDMubV9udW1Db25zdGFudHMpOyAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgIHwgQ2FsbEV4cHIgJy4nIElE
RU5UICAgICAgICAgICAgICAgICAgeyBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JB
TF9EQVRBKSBEb3RBY2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgKiQzKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFVF9FWENFUFRJT05fTE9D
QVRJT04obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDMubGFzdF9jb2x1
bW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0
aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDMubGFz
dF9jb2x1bW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQg
PSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZXMsICQx
Lm1fbnVtQ29uc3RhbnRzKTsgfQogOwogCiBDYWxsRXhwck5vQkY6Ci0gICAgTWVtYmVyRXhwck5v
QkYgQXJndW1lbnRzICAgICAgICAgICAgeyAkJCA9IG1ha2VGdW5jdGlvbkNhbGxOb2RlKGdsb2Jh
bFB0ciwgJDEsICQyLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBAMi5sYXN0X2Nv
bHVtbik7IH0KLSAgfCBDYWxsRXhwck5vQkYgQXJndW1lbnRzICAgICAgICAgICAgICB7ICQkID0g
bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoZ2xvYmFsUHRyLCAkMSwgJDIsIEAxLmZpcnN0X2NvbHVtbiwg
QDEubGFzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uKTsgfQorICAgIE1lbWJlckV4cHJOb0JGIEFy
Z3VtZW50cyAgICAgICAgICAgIHsgJCQgPSBtYWtlRnVuY3Rpb25DYWxsTm9kZShHTE9CQUxfREFU
QSwgJDEsICQyLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBAMi5sYXN0X2NvbHVt
bik7IH0KKyAgfCBDYWxsRXhwck5vQkYgQXJndW1lbnRzICAgICAgICAgICAgICB7ICQkID0gbWFr
ZUZ1bmN0aW9uQ2FsbE5vZGUoR0xPQkFMX0RBVEEsICQxLCAkMiwgQDEuZmlyc3RfY29sdW1uLCBA
MS5sYXN0X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4pOyB9CiAgIHwgQ2FsbEV4cHJOb0JGICdbJyBF
eHByICddJyAgICAgICAgICAgeyBCcmFja2V0QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChHTE9C
QUxfREFUQSkgQnJhY2tldEFjY2Vzc29yTm9kZShHTE9CQUxfREFUQSwgJDEubV9ub2RlLCAkMy5t
X25vZGUsICQzLm1fZmVhdHVyZXMgJiBBc3NpZ25GZWF0dXJlKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNFVF9FWENFUFRJT05fTE9DQVRJT04obm9kZSwgQDEu
Zmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDQubGFzdF9jb2x1bW4pOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9k
ZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDQubGFzdF9jb2x1bW4pOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5m
bzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZXMgfCAkMy5tX2ZlYXR1cmVzLCAk
MS5tX251bUNvbnN0YW50cyArICQzLm1fbnVtQ29uc3RhbnRzKTsgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICB8IENhbGxFeHByTm9CRiAnLicgSURFTlQgICAg
ICAgICAgICAgIHsgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgRG90
QWNjZXNzb3JOb2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICokMyk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FUSU9OKG5vZGUs
IEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9u
KG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9k
ZUluZm88RXhwcmVzc2lvbk5vZGUqPihub2RlLCAkMS5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0
YW50cyk7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KIDsKQEAg
LTU3MiwxMCArNTc4LDEwIEBAIFJlbGF0aW9uYWxFeHByOgogICB8IFJlbGF0aW9uYWxFeHByIExF
IFNoaWZ0RXhwciAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+
KG5ldyAoR0xPQkFMX0RBVEEpIExlc3NFcU5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgJDMu
bV9ub2RlLCAkMy5tX2ZlYXR1cmVzICYgQXNzaWduRmVhdHVyZSksICQxLm1fZmVhdHVyZXMgfCAk
My5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyArICQzLm1fbnVtQ29uc3RhbnRzKTsgfQog
ICB8IFJlbGF0aW9uYWxFeHByIEdFIFNoaWZ0RXhwciAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2Rl
SW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyAoR0xPQkFMX0RBVEEpIEdyZWF0ZXJFcU5vZGUoR0xP
QkFMX0RBVEEsICQxLm1fbm9kZSwgJDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVzICYgQXNzaWduRmVh
dHVyZSksICQxLm1fZmVhdHVyZXMgfCAkMy5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyAr
ICQzLm1fbnVtQ29uc3RhbnRzKTsgfQogICB8IFJlbGF0aW9uYWxFeHByIElOU1RBTkNFT0YgU2hp
ZnRFeHByIHsgSW5zdGFuY2VPZk5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBJbnN0YW5j
ZU9mTm9kZShHTE9CQUxfREFUQSwgJDEubV9ub2RlLCAkMy5tX25vZGUsICQzLm1fZmVhdHVyZXMg
JiBBc3NpZ25GZWF0dXJlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNFVF9FWENFUFRJT05fTE9DQVRJT04obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMy5maXJz
dF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1u
LCBAMy5maXJzdF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9k
ZSo+KG5vZGUsICQxLm1fZmVhdHVyZXMgfCAkMy5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50
cyArICQzLm1fbnVtQ29uc3RhbnRzKTsgfQogICB8IFJlbGF0aW9uYWxFeHByIElOVE9LRU4gU2hp
ZnRFeHByICAgIHsgSW5Ob2RlKiBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgSW5Ob2RlKEdMT0JB
TF9EQVRBLCAkMS5tX25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlcyAmIEFzc2lnbkZlYXR1
cmUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQ
VElPTl9MT0NBVElPTihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAzLmZpcnN0X2NvbHVtbiwgQDMu
bGFzdF9jb2x1bW4pOyAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAzLmZpcnN0X2Nv
bHVtbiwgQDMubGFzdF9jb2x1bW4pOyAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkJCA9IGNyZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDEu
bV9mZWF0dXJlcyB8ICQzLm1fZmVhdHVyZXMsICQxLm1fbnVtQ29uc3RhbnRzICsgJDMubV9udW1D
b25zdGFudHMpOyB9CiA7CiAKQEAgLTU4Nyw3ICs1OTMsNyBAQCBSZWxhdGlvbmFsRXhwck5vSW46
CiAgIHwgUmVsYXRpb25hbEV4cHJOb0luIEdFIFNoaWZ0RXhwciAgICAgeyAkJCA9IGNyZWF0ZU5v
ZGVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IChHTE9CQUxfREFUQSkgR3JlYXRlckVxTm9kZShH
TE9CQUxfREFUQSwgJDEubV9ub2RlLCAkMy5tX25vZGUsICQzLm1fZmVhdHVyZXMgJiBBc3NpZ25G
ZWF0dXJlKSwgJDEubV9mZWF0dXJlcyB8ICQzLm1fZmVhdHVyZXMsICQxLm1fbnVtQ29uc3RhbnRz
ICsgJDMubV9udW1Db25zdGFudHMpOyB9CiAgIHwgUmVsYXRpb25hbEV4cHJOb0luIElOU1RBTkNF
T0YgU2hpZnRFeHByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBJ
bnN0YW5jZU9mTm9kZSogbm9kZSA9IG5ldyAoR0xPQkFMX0RBVEEpIEluc3RhbmNlT2ZOb2RlKEdM
T0JBTF9EQVRBLCAkMS5tX25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlcyAmIEFzc2lnbkZl
YXR1cmUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VY
Q0VQVElPTl9MT0NBVElPTihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAzLmZpcnN0X2NvbHVtbiwg
QDMubGFzdF9jb2x1bW4pOyAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAzLmZpcnN0
X2NvbHVtbiwgQDMubGFzdF9jb2x1bW4pOyAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkJCA9IGNyZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwg
JDEubV9mZWF0dXJlcyB8ICQzLm1fZmVhdHVyZXMsICQxLm1fbnVtQ29uc3RhbnRzICsgJDMubV9u
dW1Db25zdGFudHMpOyB9CiA7CiAKQEAgLTU5OSwxMSArNjA1LDExIEBAIFJlbGF0aW9uYWxFeHBy
Tm9CRjoKICAgfCBSZWxhdGlvbmFsRXhwck5vQkYgR0UgU2hpZnRFeHByICAgICB7ICQkID0gY3Jl
YXRlTm9kZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgKEdMT0JBTF9EQVRBKSBHcmVhdGVyRXFO
b2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICQzLm1fbm9kZSwgJDMubV9mZWF0dXJlcyAmIEFz
c2lnbkZlYXR1cmUpLCAkMS5tX2ZlYXR1cmVzIHwgJDMubV9mZWF0dXJlcywgJDEubV9udW1Db25z
dGFudHMgKyAkMy5tX251bUNvbnN0YW50cyk7IH0KICAgfCBSZWxhdGlvbmFsRXhwck5vQkYgSU5T
VEFOQ0VPRiBTaGlmdEV4cHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7IEluc3RhbmNlT2ZOb2RlKiBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgSW5zdGFuY2VPZk5v
ZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgJDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVzICYgQXNz
aWduRmVhdHVyZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
RVRfRVhDRVBUSU9OX0xPQ0FUSU9OKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDMuZmlyc3RfY29s
dW1uLCBAMy5sYXN0X2NvbHVtbik7ICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDMu
Zmlyc3RfY29sdW1uLCBAMy5sYXN0X2NvbHVtbik7ICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUluZm88RXhwcmVzc2lvbk5vZGUqPihu
b2RlLCAkMS5tX2ZlYXR1cmVzIHwgJDMubV9mZWF0dXJlcywgJDEubV9udW1Db25zdGFudHMgKyAk
My5tX251bUNvbnN0YW50cyk7IH0KICAgfCBSZWxhdGlvbmFsRXhwck5vQkYgSU5UT0tFTiBTaGlm
dEV4cHIgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBJbk5vZGUq
IG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBJbk5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwg
JDMubV9ub2RlLCAkMy5tX2ZlYXR1cmVzICYgQXNzaWduRmVhdHVyZSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FUSU9OKG5vZGUs
IEAxLmZpcnN0X2NvbHVtbiwgQDMuZmlyc3RfY29sdW1uLCBAMy5sYXN0X2NvbHVtbik7ICAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0
aW9uKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDMuZmlyc3RfY29sdW1uLCBAMy5sYXN0X2NvbHVt
bik7ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3Jl
YXRlTm9kZUluZm88RXhwcmVzc2lvbk5vZGUqPihub2RlLCAkMS5tX2ZlYXR1cmVzIHwgJDMubV9m
ZWF0dXJlcywgJDEubV9udW1Db25zdGFudHMgKyAkMy5tX251bUNvbnN0YW50cyk7IH0KIDsKIApA
QCAtODE0LDE3ICs4MjAsMTcgQEAgU3RhdGVtZW50OgogOwogCiBCbG9jazoKLSAgICBPUEVOQlJB
Q0UgQ0xPU0VCUkFDRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5v
ZGVEZWNsYXJhdGlvbkluZm88U3RhdGVtZW50Tm9kZSo+KG5ldyAoR0xPQkFMX0RBVEEpIEJsb2Nr
Tm9kZShHTE9CQUxfREFUQSwgMCksIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgREJHKCQkLm1fbm9kZSwgQDEsIEAyKTsgfQotICB8IE9QRU5C
UkFDRSBTb3VyY2VFbGVtZW50cyBDTE9TRUJSQUNFICAgICAgICAgICAgICB7ICQkID0gY3JlYXRl
Tm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obmV3IChHTE9CQUxfREFUQSkgQmxv
Y2tOb2RlKEdMT0JBTF9EQVRBLCAkMi5tX25vZGUpLCAkMi5tX3ZhckRlY2xhcmF0aW9ucywgJDIu
bV9mdW5jRGVjbGFyYXRpb25zLCAkMi5tX2ZlYXR1cmVzLCAkMi5tX251bUNvbnN0YW50cyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQkcoJCQubV9ub2RlLCBA
MSwgQDMpOyB9CisgICAgT1BFTkJSQUNFIENMT1NFQlJBQ0UgICAgICAgICAgICAgICAgeyAkJCA9
IGNyZWF0ZU5vZGVEZWNsYXJhdGlvbkluZm88U3RhdGVtZW50Tm9kZSo+KG5ldyAoR0xPQkFMX0RB
VEEpIEJsb2NrTm9kZShHTE9CQUxfREFUQSwgMCksIDAsIDAsIDAsIDApOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdGVtZW50TG9jYXRpb24oJCQubV9u
b2RlLCBAMSwgQDIpOyB9CisgIHwgT1BFTkJSQUNFIFNvdXJjZUVsZW1lbnRzIENMT1NFQlJBQ0Ug
eyAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlvbkluZm88U3RhdGVtZW50Tm9kZSo+KG5ldyAoR0xP
QkFMX0RBVEEpIEJsb2NrTm9kZShHTE9CQUxfREFUQSwgJDIubV9ub2RlKSwgJDIubV92YXJEZWNs
YXJhdGlvbnMsICQyLm1fZnVuY0RlY2xhcmF0aW9ucywgJDIubV9mZWF0dXJlcywgJDIubV9udW1D
b25zdGFudHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
U3RhdGVtZW50TG9jYXRpb24oJCQubV9ub2RlLCBAMSwgQDMpOyB9CiA7CiAKIFZhcmlhYmxlU3Rh
dGVtZW50OgogICAgIFZBUiBWYXJpYWJsZURlY2xhcmF0aW9uTGlzdCAnOycgICAgIHsgJCQgPSBj
cmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0YXRlbWVudE5vZGUqPihtYWtlVmFyU3RhdGVtZW50
Tm9kZShHTE9CQUxfREFUQSwgJDIubV9ub2RlKSwgJDIubV92YXJEZWNsYXJhdGlvbnMsICQyLm1f
ZnVuY0RlY2xhcmF0aW9ucywgJDIubV9mZWF0dXJlcywgJDIubV9udW1Db25zdGFudHMpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREJHKCQkLm1fbm9kZSwgQDEs
IEAzKTsgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3Rh
dGVtZW50TG9jYXRpb24oJCQubV9ub2RlLCBAMSwgQDMpOyB9CiAgIHwgVkFSIFZhcmlhYmxlRGVj
bGFyYXRpb25MaXN0IGVycm9yICAgeyAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlvbkluZm88U3Rh
dGVtZW50Tm9kZSo+KG1ha2VWYXJTdGF0ZW1lbnROb2RlKEdMT0JBTF9EQVRBLCAkMi5tX25vZGUp
LCAkMi5tX3ZhckRlY2xhcmF0aW9ucywgJDIubV9mdW5jRGVjbGFyYXRpb25zLCAkMi5tX2ZlYXR1
cmVzLCAkMi5tX251bUNvbnN0YW50cyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEQkcoJCQubV9ub2RlLCBAMSwgQDIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdGVtZW50TG9jYXRpb24oJCQubV9ub2RlLCBAMSwg
QDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVVUT19TRU1J
Q09MT047IH0KIDsKIApAQCAtODM3LDcgKzg0Myw3IEBAIFZhcmlhYmxlRGVjbGFyYXRpb25MaXN0
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQubV9udW1Db25z
dGFudHMgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
fCBJREVOVCBJbml0aWFsaXplciAgICAgICAgICAgICAgICAgICB7IEFzc2lnblJlc29sdmVOb2Rl
KiBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgQXNzaWduUmVzb2x2ZU5vZGUoR0xPQkFMX0RBVEEs
ICokMSwgJDIubV9ub2RlLCAkMi5tX2ZlYXR1cmVzICYgQXNzaWduRmVhdHVyZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FUSU9O
KG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDIuZmlyc3RfY29sdW1uICsgMSwgQDIubGFzdF9jb2x1
bW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0
aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMi5maXJzdF9jb2x1bW4gKyAxLCBA
Mi5sYXN0X2NvbHVtbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkJC5tX25vZGUgPSBub2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJCQubV92YXJEZWNsYXJhdGlvbnMgPSBuZXcgKEdMT0JBTF9EQVRBKSBQYXJzZXJBcmVu
YURhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPjsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvVmFyRGVjbGFyYXRpb25MaXN0KEdMT0JBTF9E
QVRBLCAkJC5tX3ZhckRlY2xhcmF0aW9ucywgKiQxLCBEZWNsYXJhdGlvblN0YWNrczo6SGFzSW5p
dGlhbGl6ZXIpOwpAQCAtODU1LDcgKzg2MSw3IEBAIFZhcmlhYmxlRGVjbGFyYXRpb25MaXN0Ogog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgfCBWYXJpYWJsZURl
Y2xhcmF0aW9uTGlzdCAnLCcgSURFTlQgSW5pdGlhbGl6ZXIKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7IEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChHTE9C
QUxfREFUQSkgQXNzaWduUmVzb2x2ZU5vZGUoR0xPQkFMX0RBVEEsICokMywgJDQubV9ub2RlLCAk
NC5tX2ZlYXR1cmVzICYgQXNzaWduRmVhdHVyZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FUSU9OKG5vZGUsIEAzLmZpcnN0X2Nv
bHVtbiwgQDQuZmlyc3RfY29sdW1uICsgMSwgQDQubGFzdF9jb2x1bW4pOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwg
QDMuZmlyc3RfY29sdW1uLCBANC5maXJzdF9jb2x1bW4gKyAxLCBANC5sYXN0X2NvbHVtbik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJC5tX25vZGUgPSBjb21i
aW5lQ29tbWFOb2RlcyhHTE9CQUxfREFUQSwgJDEubV9ub2RlLCBub2RlKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLm1fdmFyRGVjbGFyYXRpb25zID0gJDEu
bV92YXJEZWNsYXJhdGlvbnM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRUb1ZhckRlY2xhcmF0aW9uTGlzdChHTE9CQUxfREFUQSwgJCQubV92YXJEZWNs
YXJhdGlvbnMsICokMywgRGVjbGFyYXRpb25TdGFja3M6Okhhc0luaXRpYWxpemVyKTsKQEAgLTg3
NCw3ICs4ODAsNyBAQCBWYXJpYWJsZURlY2xhcmF0aW9uTGlzdE5vSW46CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJC5tX251bUNvbnN0YW50cyA9IDA7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICB8IElERU5UIEluaXRpYWxp
emVyTm9JbiAgICAgICAgICAgICAgIHsgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKEdM
T0JBTF9EQVRBKSBBc3NpZ25SZXNvbHZlTm9kZShHTE9CQUxfREFUQSwgKiQxLCAkMi5tX25vZGUs
ICQyLm1fZmVhdHVyZXMgJiBBc3NpZ25GZWF0dXJlKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNFVF9FWENFUFRJT05fTE9DQVRJT04obm9kZSwgQDEuZmlyc3Rf
Y29sdW1uLCBAMi5maXJzdF9jb2x1bW4gKyAxLCBAMi5sYXN0X2NvbHVtbik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2Rl
LCBAMS5maXJzdF9jb2x1bW4sIEAyLmZpcnN0X2NvbHVtbiArIDEsIEAyLmxhc3RfY29sdW1uKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLm1fbm9kZSA9IG5v
ZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJC5tX3ZhckRl
Y2xhcmF0aW9ucyA9IG5ldyAoR0xPQkFMX0RBVEEpIFBhcnNlckFyZW5hRGF0YTxEZWNsYXJhdGlv
blN0YWNrczo6VmFyU3RhY2s+OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kVG9WYXJEZWNsYXJhdGlvbkxpc3QoR0xPQkFMX0RBVEEsICQkLm1fdmFyRGVj
bGFyYXRpb25zLCAqJDEsIERlY2xhcmF0aW9uU3RhY2tzOjpIYXNJbml0aWFsaXplcik7CkBAIC04
OTIsNyArODk4LDcgQEAgVmFyaWFibGVEZWNsYXJhdGlvbkxpc3ROb0luOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgfCBWYXJpYWJsZURlY2xhcmF0aW9uTGlz
dE5vSW4gJywnIElERU5UIEluaXRpYWxpemVyTm9JbgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9E
QVRBKSBBc3NpZ25SZXNvbHZlTm9kZShHTE9CQUxfREFUQSwgKiQzLCAkNC5tX25vZGUsICQ0Lm1f
ZmVhdHVyZXMgJiBBc3NpZ25GZWF0dXJlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNFVF9FWENFUFRJT05fTE9DQVRJT04obm9kZSwgQDMuZmlyc3RfY29sdW1u
LCBANC5maXJzdF9jb2x1bW4gKyAxLCBANC5sYXN0X2NvbHVtbik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBAMy5m
aXJzdF9jb2x1bW4sIEA0LmZpcnN0X2NvbHVtbiArIDEsIEA0Lmxhc3RfY29sdW1uKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkLm1fbm9kZSA9IGNvbWJpbmVD
b21tYU5vZGVzKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsIG5vZGUpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQubV92YXJEZWNsYXJhdGlvbnMgPSAkMS5tX3Zh
ckRlY2xhcmF0aW9uczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFwcGVuZFRvVmFyRGVjbGFyYXRpb25MaXN0KEdMT0JBTF9EQVRBLCAkJC5tX3ZhckRlY2xhcmF0
aW9ucywgKiQzLCBEZWNsYXJhdGlvblN0YWNrczo6SGFzSW5pdGlhbGl6ZXIpOwpAQCAtOTA0LDEw
ICs5MTAsMTAgQEAgVmFyaWFibGVEZWNsYXJhdGlvbkxpc3ROb0luOgogCiBDb25zdFN0YXRlbWVu
dDoKICAgICBDT05TVFRPS0VOIENvbnN0RGVjbGFyYXRpb25MaXN0ICc7JyB7ICQkID0gY3JlYXRl
Tm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obmV3IChHTE9CQUxfREFUQSkgQ29u
c3RTdGF0ZW1lbnROb2RlKEdMT0JBTF9EQVRBLCAkMi5tX25vZGUuaGVhZCksICQyLm1fdmFyRGVj
bGFyYXRpb25zLCAkMi5tX2Z1bmNEZWNsYXJhdGlvbnMsICQyLm1fZmVhdHVyZXMsICQyLm1fbnVt
Q29uc3RhbnRzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERC
RygkJC5tX25vZGUsIEAxLCBAMyk7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldFN0YXRlbWVudExvY2F0aW9uKCQkLm1fbm9kZSwgQDEsIEAzKTsgfQogICB8
IENPTlNUVE9LRU4gQ29uc3REZWNsYXJhdGlvbkxpc3QgZXJyb3IKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZURlY2xhcmF0aW9uSW5mbzxT
dGF0ZW1lbnROb2RlKj4obmV3IChHTE9CQUxfREFUQSkgQ29uc3RTdGF0ZW1lbnROb2RlKEdMT0JB
TF9EQVRBLCAkMi5tX25vZGUuaGVhZCksICQyLm1fdmFyRGVjbGFyYXRpb25zLCAkMi5tX2Z1bmNE
ZWNsYXJhdGlvbnMsICQyLm1fZmVhdHVyZXMsICQyLm1fbnVtQ29uc3RhbnRzKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERCRygkJC5tX25vZGUsIEAxLCBAMik7
IEFVVE9fU0VNSUNPTE9OOyB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRTdGF0ZW1lbnRMb2NhdGlvbigkJC5tX25vZGUsIEAxLCBAMik7IEFVVE9fU0VNSUNP
TE9OOyB9CiA7CiAKIENvbnN0RGVjbGFyYXRpb25MaXN0OgpAQCAtOTQ5LDM2ICs5NTUsMzYgQEAg
RW1wdHlTdGF0ZW1lbnQ6CiAKIEV4cHJTdGF0ZW1lbnQ6CiAgICAgRXhwck5vQkYgJzsnICAgICAg
ICAgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlvbkluZm88U3RhdGVt
ZW50Tm9kZSo+KG5ldyAoR0xPQkFMX0RBVEEpIEV4cHJTdGF0ZW1lbnROb2RlKEdMT0JBTF9EQVRB
LCAkMS5tX25vZGUpLCAwLCAwLCAkMS5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQkcoJCQubV9ub2RlLCBA
MSwgQDIpOyB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRT
dGF0ZW1lbnRMb2NhdGlvbigkJC5tX25vZGUsIEAxLCBAMik7IH0KICAgfCBFeHByTm9CRiBlcnJv
ciAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZURlY2xhcmF0aW9uSW5mbzxT
dGF0ZW1lbnROb2RlKj4obmV3IChHTE9CQUxfREFUQSkgRXhwclN0YXRlbWVudE5vZGUoR0xPQkFM
X0RBVEEsICQxLm1fbm9kZSksIDAsIDAsICQxLm1fZmVhdHVyZXMsICQxLm1fbnVtQ29uc3RhbnRz
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERCRygkJC5tX25v
ZGUsIEAxLCBAMSk7IEFVVE9fU0VNSUNPTE9OOyB9CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRTdGF0ZW1lbnRMb2NhdGlvbigkJC5tX25vZGUsIEAxLCBAMSk7
IEFVVE9fU0VNSUNPTE9OOyB9CiA7CiAKIElmU3RhdGVtZW50OgogICAgIElGICcoJyBFeHByICcp
JyBTdGF0ZW1lbnQgJXByZWMgSUZfV0lUSE9VVF9FTFNFCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlvbkluZm88U3RhdGVt
ZW50Tm9kZSo+KG5ldyAoR0xPQkFMX0RBVEEpIElmTm9kZShHTE9CQUxfREFUQSwgJDMubV9ub2Rl
LCAkNS5tX25vZGUpLCAkNS5tX3ZhckRlY2xhcmF0aW9ucywgJDUubV9mdW5jRGVjbGFyYXRpb25z
LCAkMy5tX2ZlYXR1cmVzIHwgJDUubV9mZWF0dXJlcywgJDMubV9udW1Db25zdGFudHMgKyAkNS5t
X251bUNvbnN0YW50cyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEQkcoJCQubV9ub2RlLCBAMSwgQDQpOyB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRTdGF0ZW1lbnRMb2NhdGlvbigkJC5tX25vZGUsIEAxLCBANCk7IH0K
ICAgfCBJRiAnKCcgRXhwciAnKScgU3RhdGVtZW50IEVMU0UgU3RhdGVtZW50CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlv
bkluZm88U3RhdGVtZW50Tm9kZSo+KG5ldyAoR0xPQkFMX0RBVEEpIElmRWxzZU5vZGUoR0xPQkFM
X0RBVEEsICQzLm1fbm9kZSwgJDUubV9ub2RlLCAkNy5tX25vZGUpLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVyZ2VEZWNsYXJhdGlvbkxpc3RzKCQ1Lm1fdmFyRGVjbGFyYXRp
b25zLCAkNy5tX3ZhckRlY2xhcmF0aW9ucyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1lcmdlRGVjbGFyYXRpb25MaXN0cygkNS5tX2Z1bmNEZWNsYXJhdGlvbnMsICQ3Lm1fZnVu
Y0RlY2xhcmF0aW9ucyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQzLm1fZmVh
dHVyZXMgfCAkNS5tX2ZlYXR1cmVzIHwgJDcubV9mZWF0dXJlcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJDMubV9udW1Db25zdGFudHMgKyAkNS5tX251bUNvbnN0YW50cyArICQ3
Lm1fbnVtQ29uc3RhbnRzKTsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEQkcoJCQubV9ub2RlLCBAMSwgQDQpOyB9CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRTdGF0ZW1lbnRMb2NhdGlvbigkJC5tX25vZGUsIEAxLCBANCk7
IH0KIDsKIAogSXRlcmF0aW9uU3RhdGVtZW50OgogICAgIERPIFN0YXRlbWVudCBXSElMRSAnKCcg
RXhwciAnKScgJzsnICAgIHsgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0YXRlbWVu
dE5vZGUqPihuZXcgKEdMT0JBTF9EQVRBKSBEb1doaWxlTm9kZShHTE9CQUxfREFUQSwgJDIubV9u
b2RlLCAkNS5tX25vZGUpLCAkMi5tX3ZhckRlY2xhcmF0aW9ucywgJDIubV9mdW5jRGVjbGFyYXRp
b25zLCAkMi5tX2ZlYXR1cmVzIHwgJDUubV9mZWF0dXJlcywgJDIubV9udW1Db25zdGFudHMgKyAk
NS5tX251bUNvbnN0YW50cyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEQkcoJCQubV9ub2RlLCBAMSwgQDMpOyB9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZW1lbnRMb2NhdGlvbigkJC5tX25vZGUsIEAx
LCBAMyk7IH0KICAgfCBETyBTdGF0ZW1lbnQgV0hJTEUgJygnIEV4cHIgJyknIGVycm9yICB7ICQk
ID0gY3JlYXRlTm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obmV3IChHTE9CQUxf
REFUQSkgRG9XaGlsZU5vZGUoR0xPQkFMX0RBVEEsICQyLm1fbm9kZSwgJDUubV9ub2RlKSwgJDIu
bV92YXJEZWNsYXJhdGlvbnMsICQyLm1fZnVuY0RlY2xhcmF0aW9ucywgJDIubV9mZWF0dXJlcyB8
ICQ1Lm1fZmVhdHVyZXMsICQyLm1fbnVtQ29uc3RhbnRzICsgJDUubV9udW1Db25zdGFudHMpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREJHKCQkLm1fbm9k
ZSwgQDEsIEAzKTsgfSAvLyBBbHdheXMgcGVyZm9ybXMgYXV0b21hdGljIHNlbWljb2xvbiBpbnNl
cnRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRT
dGF0ZW1lbnRMb2NhdGlvbigkJC5tX25vZGUsIEAxLCBAMyk7IH0gLy8gQWx3YXlzIHBlcmZvcm1z
IGF1dG9tYXRpYyBzZW1pY29sb24gaW5zZXJ0aW9uLgogICB8IFdISUxFICcoJyBFeHByICcpJyBT
dGF0ZW1lbnQgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0YXRlbWVu
dE5vZGUqPihuZXcgKEdMT0JBTF9EQVRBKSBXaGlsZU5vZGUoR0xPQkFMX0RBVEEsICQzLm1fbm9k
ZSwgJDUubV9ub2RlKSwgJDUubV92YXJEZWNsYXJhdGlvbnMsICQ1Lm1fZnVuY0RlY2xhcmF0aW9u
cywgJDMubV9mZWF0dXJlcyB8ICQ1Lm1fZmVhdHVyZXMsICQzLm1fbnVtQ29uc3RhbnRzICsgJDUu
bV9udW1Db25zdGFudHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgREJHKCQkLm1fbm9kZSwgQDEsIEA0KTsgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0U3RhdGVtZW50TG9jYXRpb24oJCQubV9ub2RlLCBAMSwgQDQpOyB9
CiAgIHwgRk9SICcoJyBFeHByTm9Jbk9wdCAnOycgRXhwck9wdCAnOycgRXhwck9wdCAnKScgU3Rh
dGVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9IGNy
ZWF0ZU5vZGVEZWNsYXJhdGlvbkluZm88U3RhdGVtZW50Tm9kZSo+KG5ldyAoR0xPQkFMX0RBVEEp
IEZvck5vZGUoR0xPQkFMX0RBVEEsICQzLm1fbm9kZSwgJDUubV9ub2RlLCAkNy5tX25vZGUsICQ5
Lm1fbm9kZSwgZmFsc2UpLCAkOS5tX3ZhckRlY2xhcmF0aW9ucywgJDkubV9mdW5jRGVjbGFyYXRp
b25zLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDMubV9mZWF0dXJlcyB8ICQ1
Lm1fZmVhdHVyZXMgfCAkNy5tX2ZlYXR1cmVzIHwgJDkubV9mZWF0dXJlcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJDMubV9udW1Db25zdGFudHMgKyAkNS5tX251bUNvbnN0YW50
cyArICQ3Lm1fbnVtQ29uc3RhbnRzICsgJDkubV9udW1Db25zdGFudHMpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREJHKCQkLm1fbm9kZSwgQDEsIEA4KTsgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGF0ZW1lbnRMb2Nh
dGlvbigkJC5tX25vZGUsIEAxLCBAOCk7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgfCBGT1IgJygnIFZBUiBWYXJpYWJsZURlY2xhcmF0aW9uTGlzdE5vSW4g
JzsnIEV4cHJPcHQgJzsnIEV4cHJPcHQgJyknIFN0YXRlbWVudAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0
YXRlbWVudE5vZGUqPihuZXcgKEdMT0JBTF9EQVRBKSBGb3JOb2RlKEdMT0JBTF9EQVRBLCAkNC5t
X25vZGUsICQ2Lm1fbm9kZSwgJDgubV9ub2RlLCAkMTAubV9ub2RlLCB0cnVlKSwKQEAgLTk4Niwz
MCArOTkyLDMwIEBAIEl0ZXJhdGlvblN0YXRlbWVudDoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVyZ2VEZWNsYXJhdGlvbkxpc3RzKCQ0Lm1fZnVuY0RlY2xhcmF0aW9ucywgJDEw
Lm1fZnVuY0RlY2xhcmF0aW9ucyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0
Lm1fZmVhdHVyZXMgfCAkNi5tX2ZlYXR1cmVzIHwgJDgubV9mZWF0dXJlcyB8ICQxMC5tX2ZlYXR1
cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNC5tX251bUNvbnN0YW50cyAr
ICQ2Lm1fbnVtQ29uc3RhbnRzICsgJDgubV9udW1Db25zdGFudHMgKyAkMTAubV9udW1Db25zdGFu
dHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREJHKCQkLm1f
bm9kZSwgQDEsIEA5KTsgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0U3RhdGVtZW50TG9jYXRpb24oJCQubV9ub2RlLCBAMSwgQDkpOyB9CiAgIHwgRk9SICco
JyBMZWZ0SGFuZFNpZGVFeHByIElOVE9LRU4gRXhwciAnKScgU3RhdGVtZW50CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGb3JJbk5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBG
b3JJbk5vZGUoR0xPQkFMX0RBVEEsICQzLm1fbm9kZSwgJDUubV9ub2RlLCAkNy5tX25vZGUpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9O
X0xPQ0FUSU9OKG5vZGUsIEAzLmZpcnN0X2NvbHVtbiwgQDMubGFzdF9jb2x1bW4sIEA1Lmxhc3Rf
Y29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDMuZmlyc3RfY29sdW1uLCBAMy5sYXN0X2NvbHVtbiwg
QDUubGFzdF9jb2x1bW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlvbkluZm88U3RhdGVtZW50Tm9kZSo+KG5vZGUs
ICQ3Lm1fdmFyRGVjbGFyYXRpb25zLCAkNy5tX2Z1bmNEZWNsYXJhdGlvbnMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJDMubV9mZWF0dXJlcyB8ICQ1Lm1fZmVhdHVyZXMgfCAk
Ny5tX2ZlYXR1cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQzLm1fbnVt
Q29uc3RhbnRzICsgJDUubV9udW1Db25zdGFudHMgKyAkNy5tX251bUNvbnN0YW50cyk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERCRygkJC5tX25vZGUsIEAx
LCBANik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0
YXRlbWVudExvY2F0aW9uKCQkLm1fbm9kZSwgQDEsIEA2KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgIHwgRk9SICcoJyBWQVIgSURFTlQgSU5UT0tFTiBFeHBy
ICcpJyBTdGF0ZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
IEZvckluTm9kZSAqZm9ySW4gPSBuZXcgKEdMT0JBTF9EQVRBKSBGb3JJbk5vZGUoR0xPQkFMX0RB
VEEsICokNCwgMCwgJDYubV9ub2RlLCAkOC5tX25vZGUsIEA1LmZpcnN0X2NvbHVtbiwgQDUuZmly
c3RfY29sdW1uIC0gQDQuZmlyc3RfY29sdW1uLCBANi5sYXN0X2NvbHVtbiAtIEA1LmZpcnN0X2Nv
bHVtbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhD
RVBUSU9OX0xPQ0FUSU9OKGZvckluLCBANC5maXJzdF9jb2x1bW4sIEA1LmZpcnN0X2NvbHVtbiAr
IDEsIEA2Lmxhc3RfY29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKGZvckluLCBANC5maXJzdF9jb2x1bW4sIEA1LmZp
cnN0X2NvbHVtbiArIDEsIEA2Lmxhc3RfY29sdW1uKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvVmFyRGVjbGFyYXRpb25MaXN0KEdMT0JBTF9EQVRB
LCAkOC5tX3ZhckRlY2xhcmF0aW9ucywgKiQ0LCBEZWNsYXJhdGlvblN0YWNrczo6SGFzSW5pdGlh
bGl6ZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBj
cmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0YXRlbWVudE5vZGUqPihmb3JJbiwgJDgubV92YXJE
ZWNsYXJhdGlvbnMsICQ4Lm1fZnVuY0RlY2xhcmF0aW9ucywgKCgqJDQgPT0gR0xPQkFMX0RBVEEt
PnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykgPyBBcmd1bWVudHNGZWF0dXJlIDogMCkgfCAkNi5t
X2ZlYXR1cmVzIHwgJDgubV9mZWF0dXJlcywgJDYubV9udW1Db25zdGFudHMgKyAkOC5tX251bUNv
bnN0YW50cyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQkco
JCQubV9ub2RlLCBAMSwgQDcpOyB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRTdGF0ZW1lbnRMb2NhdGlvbigkJC5tX25vZGUsIEAxLCBANyk7IH0KICAgfCBG
T1IgJygnIFZBUiBJREVOVCBJbml0aWFsaXplck5vSW4gSU5UT0tFTiBFeHByICcpJyBTdGF0ZW1l
bnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IEZvckluTm9kZSAq
Zm9ySW4gPSBuZXcgKEdMT0JBTF9EQVRBKSBGb3JJbk5vZGUoR0xPQkFMX0RBVEEsICokNCwgJDUu
bV9ub2RlLCAkNy5tX25vZGUsICQ5Lm1fbm9kZSwgQDUuZmlyc3RfY29sdW1uLCBANS5maXJzdF9j
b2x1bW4gLSBANC5maXJzdF9jb2x1bW4sIEA1Lmxhc3RfY29sdW1uIC0gQDUuZmlyc3RfY29sdW1u
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFVF9FWENFUFRJ
T05fTE9DQVRJT04oZm9ySW4sIEA0LmZpcnN0X2NvbHVtbiwgQDYuZmlyc3RfY29sdW1uICsgMSwg
QDcubGFzdF9jb2x1bW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0RXhjZXB0aW9uTG9jYXRpb24oZm9ySW4sIEA0LmZpcnN0X2NvbHVtbiwgQDYuZmlyc3Rf
Y29sdW1uICsgMSwgQDcubGFzdF9jb2x1bW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kVG9WYXJEZWNsYXJhdGlvbkxpc3QoR0xPQkFMX0RBVEEsICQ5
Lm1fdmFyRGVjbGFyYXRpb25zLCAqJDQsIERlY2xhcmF0aW9uU3RhY2tzOjpIYXNJbml0aWFsaXpl
cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNyZWF0
ZU5vZGVEZWNsYXJhdGlvbkluZm88U3RhdGVtZW50Tm9kZSo+KGZvckluLCAkOS5tX3ZhckRlY2xh
cmF0aW9ucywgJDkubV9mdW5jRGVjbGFyYXRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoKCokNCA9PSBHTE9CQUxfREFUQS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKSA/
IEFyZ3VtZW50c0ZlYXR1cmUgOiAwKSB8ICQ1Lm1fZmVhdHVyZXMgfCAkNy5tX2ZlYXR1cmVzIHwg
JDkubV9mZWF0dXJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDUubV9udW1D
b25zdGFudHMgKyAkNy5tX251bUNvbnN0YW50cyArICQ5Lm1fbnVtQ29uc3RhbnRzKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERCRygkJC5tX25vZGUsIEAxLCBA
OCk7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXRl
bWVudExvY2F0aW9uKCQkLm1fbm9kZSwgQDEsIEA4KTsgfQogOwogCiBFeHByT3B0OgpAQCAtMTAy
NCw2MyArMTAzMCw2MyBAQCBFeHByTm9Jbk9wdDoKIAogQ29udGludWVTdGF0ZW1lbnQ6CiAgICAg
Q09OVElOVUUgJzsnICAgICAgICAgICAgICAgICAgICAgICAgeyBDb250aW51ZU5vZGUqIG5vZGUg
PSBuZXcgKEdMT0JBTF9EQVRBKSBDb250aW51ZU5vZGUoR0xPQkFMX0RBVEEpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElPTl9MT0NBVElPTihu
b2RlLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbik7IAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9j
YXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDEubGFzdF9jb2x1
bW4pOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3Jl
YXRlTm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obm9kZSwgMCwgMCwgMCwgMCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQkcoJCQubV9ub2Rl
LCBAMSwgQDIpOyB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRTdGF0ZW1lbnRMb2NhdGlvbigkJC5tX25vZGUsIEAxLCBAMik7IH0KICAgfCBDT05USU5VRSBl
cnJvciAgICAgICAgICAgICAgICAgICAgICB7IENvbnRpbnVlTm9kZSogbm9kZSA9IG5ldyAoR0xP
QkFMX0RBVEEpIENvbnRpbnVlTm9kZShHTE9CQUxfREFUQSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FUSU9OKG5vZGUsIEAxLmZp
cnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uKTsgCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2Rl
LCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbik7IAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlRGVj
bGFyYXRpb25JbmZvPFN0YXRlbWVudE5vZGUqPihub2RlLCAwLCAwLCAwLCAwKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERCRygkJC5tX25vZGUsIEAxLCBAMSk7
IEFVVE9fU0VNSUNPTE9OOyB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRTdGF0ZW1lbnRMb2NhdGlvbigkJC5tX25vZGUsIEAxLCBAMSk7IEFVVE9fU0VNSUNP
TE9OOyB9CiAgIHwgQ09OVElOVUUgSURFTlQgJzsnICAgICAgICAgICAgICAgICAgeyBDb250aW51
ZU5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBDb250aW51ZU5vZGUoR0xPQkFMX0RBVEEs
ICokMik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhD
RVBUSU9OX0xPQ0FUSU9OKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4sIEAy
Lmxhc3RfY29sdW1uKTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAyLmxhc3RfY29s
dW1uLCBAMi5sYXN0X2NvbHVtbik7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0YXRlbWVudE5vZGUqPihu
b2RlLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERCRygkJC5tX25vZGUsIEAxLCBAMyk7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldFN0YXRlbWVudExvY2F0aW9uKCQkLm1fbm9kZSwgQDEsIEAzKTsg
fQogICB8IENPTlRJTlVFIElERU5UIGVycm9yICAgICAgICAgICAgICAgIHsgQ29udGludWVOb2Rl
KiBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgQ29udGludWVOb2RlKEdMT0JBTF9EQVRBLCAqJDIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElP
Tl9MT0NBVElPTihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uLCBAMi5sYXN0
X2NvbHVtbik7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMi5sYXN0X2NvbHVtbiwg
QDIubGFzdF9jb2x1bW4pOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICQkID0gY3JlYXRlTm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obm9kZSwg
MCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
QkcoJCQubV9ub2RlLCBAMSwgQDIpOyBBVVRPX1NFTUlDT0xPTjsgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdGVtZW50TG9jYXRpb24oJCQubV9ub2Rl
LCBAMSwgQDIpOyBBVVRPX1NFTUlDT0xPTjsgfQogOwogCiBCcmVha1N0YXRlbWVudDoKICAgICBC
UkVBSyAnOycgICAgICAgICAgICAgICAgICAgICAgICAgICB7IEJyZWFrTm9kZSogbm9kZSA9IG5l
dyAoR0xPQkFMX0RBVEEpIEJyZWFrTm9kZShHTE9CQUxfREFUQSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FUSU9OKG5vZGUsIEAx
LmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZURlY2xhcmF0
aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obm9kZSwgMCwgMCwgMCwgMCk7IERCRygkJC5tX25vZGUs
IEAxLCBAMik7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4s
IEAxLmxhc3RfY29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICQkID0gY3JlYXRlTm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obm9kZSwg
MCwgMCwgMCwgMCk7IHNldFN0YXRlbWVudExvY2F0aW9uKCQkLm1fbm9kZSwgQDEsIEAyKTsgfQog
ICB8IEJSRUFLIGVycm9yICAgICAgICAgICAgICAgICAgICAgICAgIHsgQnJlYWtOb2RlKiBub2Rl
ID0gbmV3IChHTE9CQUxfREFUQSkgQnJlYWtOb2RlKEdMT0JBTF9EQVRBKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFVF9FWENFUFRJT05fTE9DQVRJT04obm9k
ZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4pOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlRGVj
bGFyYXRpb25JbmZvPFN0YXRlbWVudE5vZGUqPihuZXcgKEdMT0JBTF9EQVRBKSBCcmVha05vZGUo
R0xPQkFMX0RBVEEpLCAwLCAwLCAwLCAwKTsgREJHKCQkLm1fbm9kZSwgQDEsIEAxKTsgQVVUT19T
RU1JQ09MT047IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4s
IEAxLmxhc3RfY29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICQkID0gY3JlYXRlTm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obmV3IChH
TE9CQUxfREFUQSkgQnJlYWtOb2RlKEdMT0JBTF9EQVRBKSwgMCwgMCwgMCwgMCk7IHNldFN0YXRl
bWVudExvY2F0aW9uKCQkLm1fbm9kZSwgQDEsIEAxKTsgQVVUT19TRU1JQ09MT047IH0KICAgfCBC
UkVBSyBJREVOVCAnOycgICAgICAgICAgICAgICAgICAgICB7IEJyZWFrTm9kZSogbm9kZSA9IG5l
dyAoR0xPQkFMX0RBVEEpIEJyZWFrTm9kZShHTE9CQUxfREFUQSwgKiQyKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFVF9FWENFUFRJT05fTE9DQVRJT04obm9k
ZSwgQDEuZmlyc3RfY29sdW1uLCBAMi5sYXN0X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4pOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlRGVj
bGFyYXRpb25JbmZvPFN0YXRlbWVudE5vZGUqPihub2RlLCAwLCAwLCAwLCAwKTsgREJHKCQkLm1f
bm9kZSwgQDEsIEAzKTsgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMi5sYXN0X2Nv
bHVtbiwgQDIubGFzdF9jb2x1bW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0YXRlbWVudE5vZGUqPihu
b2RlLCAwLCAwLCAwLCAwKTsgc2V0U3RhdGVtZW50TG9jYXRpb24oJCQubV9ub2RlLCBAMSwgQDMp
OyB9CiAgIHwgQlJFQUsgSURFTlQgZXJyb3IgICAgICAgICAgICAgICAgICAgeyBCcmVha05vZGUq
IG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBCcmVha05vZGUoR0xPQkFMX0RBVEEsICokMik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xP
Q0FUSU9OKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4sIEAyLmxhc3RfY29s
dW1uKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3Jl
YXRlTm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obmV3IChHTE9CQUxfREFUQSkg
QnJlYWtOb2RlKEdMT0JBTF9EQVRBLCAqJDIpLCAwLCAwLCAwLCAwKTsgREJHKCQkLm1fbm9kZSwg
QDEsIEAyKTsgQVVUT19TRU1JQ09MT047IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwg
QDIubGFzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1l
bnROb2RlKj4obmV3IChHTE9CQUxfREFUQSkgQnJlYWtOb2RlKEdMT0JBTF9EQVRBLCAqJDIpLCAw
LCAwLCAwLCAwKTsgc2V0U3RhdGVtZW50TG9jYXRpb24oJCQubV9ub2RlLCBAMSwgQDIpOyBBVVRP
X1NFTUlDT0xPTjsgfQogOwogCiBSZXR1cm5TdGF0ZW1lbnQ6CiAgICAgUkVUVVJOICc7JyAgICAg
ICAgICAgICAgICAgICAgICAgICAgeyBSZXR1cm5Ob2RlKiBub2RlID0gbmV3IChHTE9CQUxfREFU
QSkgUmV0dXJuTm9kZShHTE9CQUxfREFUQSwgMCk7IAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElPTl9MT0NBVElPTihub2RlLCBAMS5maXJzdF9j
b2x1bW4sIEAxLmxhc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbik7IAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZv
PFN0YXRlbWVudE5vZGUqPihub2RlLCAwLCAwLCAwLCAwKTsgREJHKCQkLm1fbm9kZSwgQDEsIEAy
KTsgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0
aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDEubGFz
dF9jb2x1bW4pOyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQk
ID0gY3JlYXRlTm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obm9kZSwgMCwgMCwg
MCwgMCk7IHNldFN0YXRlbWVudExvY2F0aW9uKCQkLm1fbm9kZSwgQDEsIEAyKTsgfQogICB8IFJF
VFVSTiBlcnJvciAgICAgICAgICAgICAgICAgICAgICAgIHsgUmV0dXJuTm9kZSogbm9kZSA9IG5l
dyAoR0xPQkFMX0RBVEEpIFJldHVybk5vZGUoR0xPQkFMX0RBVEEsIDApOyAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFVF9FWENFUFRJT05fTE9DQVRJT04obm9k
ZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4pOyAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZURl
Y2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obm9kZSwgMCwgMCwgMCwgMCk7IERCRygkJC5t
X25vZGUsIEAxLCBAMSk7IEFVVE9fU0VNSUNPTE9OOyB9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBAMS5maXJzdF9j
b2x1bW4sIEAxLmxhc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbik7IAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZv
PFN0YXRlbWVudE5vZGUqPihub2RlLCAwLCAwLCAwLCAwKTsgc2V0U3RhdGVtZW50TG9jYXRpb24o
JCQubV9ub2RlLCBAMSwgQDEpOyBBVVRPX1NFTUlDT0xPTjsgfQogICB8IFJFVFVSTiBFeHByICc7
JyAgICAgICAgICAgICAgICAgICAgIHsgUmV0dXJuTm9kZSogbm9kZSA9IG5ldyAoR0xPQkFMX0RB
VEEpIFJldHVybk5vZGUoR0xPQkFMX0RBVEEsICQyLm1fbm9kZSk7IAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElPTl9MT0NBVElPTihub2RlLCBA
MS5maXJzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uLCBAMi5sYXN0X2NvbHVtbik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJh
dGlvbkluZm88U3RhdGVtZW50Tm9kZSo+KG5vZGUsIDAsIDAsICQyLm1fZmVhdHVyZXMsICQyLm1f
bnVtQ29uc3RhbnRzKTsgREJHKCQkLm1fbm9kZSwgQDEsIEAzKTsgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDEu
Zmlyc3RfY29sdW1uLCBAMi5sYXN0X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4pOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRp
b25JbmZvPFN0YXRlbWVudE5vZGUqPihub2RlLCAwLCAwLCAkMi5tX2ZlYXR1cmVzLCAkMi5tX251
bUNvbnN0YW50cyk7IHNldFN0YXRlbWVudExvY2F0aW9uKCQkLm1fbm9kZSwgQDEsIEAzKTsgfQog
ICB8IFJFVFVSTiBFeHByIGVycm9yICAgICAgICAgICAgICAgICAgIHsgUmV0dXJuTm9kZSogbm9k
ZSA9IG5ldyAoR0xPQkFMX0RBVEEpIFJldHVybk5vZGUoR0xPQkFMX0RBVEEsICQyLm1fbm9kZSk7
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElP
Tl9MT0NBVElPTihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uLCBAMi5sYXN0
X2NvbHVtbik7IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQg
PSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0YXRlbWVudE5vZGUqPihub2RlLCAwLCAwLCAk
Mi5tX2ZlYXR1cmVzLCAkMi5tX251bUNvbnN0YW50cyk7IERCRygkJC5tX25vZGUsIEAxLCBAMik7
IEFVVE9fU0VNSUNPTE9OOyB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAyLmxhc3Rf
Y29sdW1uLCBAMi5sYXN0X2NvbHVtbik7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZvPFN0YXRlbWVudE5vZGUq
Pihub2RlLCAwLCAwLCAkMi5tX2ZlYXR1cmVzLCAkMi5tX251bUNvbnN0YW50cyk7IHNldFN0YXRl
bWVudExvY2F0aW9uKCQkLm1fbm9kZSwgQDEsIEAyKTsgQVVUT19TRU1JQ09MT047IH0KIDsKIAog
V2l0aFN0YXRlbWVudDoKICAgICBXSVRIICcoJyBFeHByICcpJyBTdGF0ZW1lbnQgICAgICAgICB7
ICQkID0gY3JlYXRlTm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obmV3IChHTE9C
QUxfREFUQSkgV2l0aE5vZGUoR0xPQkFMX0RBVEEsICQzLm1fbm9kZSwgJDUubV9ub2RlLCBAMy5s
YXN0X2NvbHVtbiwgQDMubGFzdF9jb2x1bW4gLSBAMy5maXJzdF9jb2x1bW4pLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkNS5tX3ZhckRlY2xhcmF0aW9ucywgJDUubV9mdW5jRGVj
bGFyYXRpb25zLCAkMy5tX2ZlYXR1cmVzIHwgJDUubV9mZWF0dXJlcyB8IFdpdGhGZWF0dXJlLCAk
My5tX251bUNvbnN0YW50cyArICQ1Lm1fbnVtQ29uc3RhbnRzKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERCRygkJC5tX25vZGUsIEAxLCBANCk7IH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXRlbWVudExvY2F0aW9u
KCQkLm1fbm9kZSwgQDEsIEA0KTsgfQogOwogCiBTd2l0Y2hTdGF0ZW1lbnQ6CiAgICAgU1dJVENI
ICcoJyBFeHByICcpJyBDYXNlQmxvY2sgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlv
bkluZm88U3RhdGVtZW50Tm9kZSo+KG5ldyAoR0xPQkFMX0RBVEEpIFN3aXRjaE5vZGUoR0xPQkFM
X0RBVEEsICQzLm1fbm9kZSwgJDUubV9ub2RlKSwgJDUubV92YXJEZWNsYXJhdGlvbnMsICQ1Lm1f
ZnVuY0RlY2xhcmF0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDMubV9m
ZWF0dXJlcyB8ICQ1Lm1fZmVhdHVyZXMsICQzLm1fbnVtQ29uc3RhbnRzICsgJDUubV9udW1Db25z
dGFudHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREJHKCQk
Lm1fbm9kZSwgQDEsIEA0KTsgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0U3RhdGVtZW50TG9jYXRpb24oJCQubV9ub2RlLCBAMSwgQDQpOyB9CiA7CiAKIENh
c2VCbG9jazoKQEAgLTEwOTQsNyArMTEwMCw3IEBAIENhc2VCbG9jazoKIDsKIAogQ2FzZUNsYXVz
ZXNPcHQ6Ci0vKiBub3RoaW5nICovICAgICAgICAgICAgICAgICAgICAgICB7ICQkLm1fbm9kZS5o
ZWFkID0gMDsgJCQubV9ub2RlLnRhaWwgPSAwOyAkJC5tX3ZhckRlY2xhcmF0aW9ucyA9IDA7ICQk
Lm1fZnVuY0RlY2xhcmF0aW9ucyA9IDA7ICQkLm1fZmVhdHVyZXMgPSAwOyAkJC5tX251bUNvbnN0
YW50cyA9IDA7IH0KKyAgLyogbm90aGluZyAqLyAgICAgICAgICAgICAgICAgICAgICAgICB7ICQk
Lm1fbm9kZS5oZWFkID0gMDsgJCQubV9ub2RlLnRhaWwgPSAwOyAkJC5tX3ZhckRlY2xhcmF0aW9u
cyA9IDA7ICQkLm1fZnVuY0RlY2xhcmF0aW9ucyA9IDA7ICQkLm1fZmVhdHVyZXMgPSAwOyAkJC5t
X251bUNvbnN0YW50cyA9IDA7IH0KICAgfCBDYXNlQ2xhdXNlcwogOwogCkBAIC0xMTI2LDE4ICsx
MTMyLDE4IEBAIERlZmF1bHRDbGF1c2U6CiAKIExhYmVsbGVkU3RhdGVtZW50OgogICAgIElERU5U
ICc6JyBTdGF0ZW1lbnQgICAgICAgICAgICAgICAgIHsgTGFiZWxOb2RlKiBub2RlID0gbmV3IChH
TE9CQUxfREFUQSkgTGFiZWxOb2RlKEdMT0JBTF9EQVRBLCAqJDEsICQzLm1fbm9kZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfRVhDRVBUSU9OX0xPQ0FU
SU9OKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1u
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEV4Y2VwdGlv
bkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4sIEAyLmxhc3Rf
Y29sdW1uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0g
Y3JlYXRlTm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obm9kZSwgJDMubV92YXJE
ZWNsYXJhdGlvbnMsICQzLm1fZnVuY0RlY2xhcmF0aW9ucywgJDMubV9mZWF0dXJlcywgJDMubV9u
dW1Db25zdGFudHMpOyB9CiA7CiAKIFRocm93U3RhdGVtZW50OgogICAgIFRIUk9XIEV4cHIgJzsn
ICAgICAgICAgICAgICAgICAgICAgIHsgVGhyb3dOb2RlKiBub2RlID0gbmV3IChHTE9CQUxfREFU
QSkgVGhyb3dOb2RlKEdMT0JBTF9EQVRBLCAkMi5tX25vZGUpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElPTl9MT0NBVElPTihub2RlLCBAMS5m
aXJzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uLCBAMi5sYXN0X2NvbHVtbik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlv
bkluZm88U3RhdGVtZW50Tm9kZSo+KG5vZGUsIDAsIDAsICQyLm1fZmVhdHVyZXMsICQyLm1fbnVt
Q29uc3RhbnRzKTsgREJHKCQkLm1fbm9kZSwgQDEsIEAyKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0
X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZURlY2xhcmF0aW9uSW5m
bzxTdGF0ZW1lbnROb2RlKj4obm9kZSwgMCwgMCwgJDIubV9mZWF0dXJlcywgJDIubV9udW1Db25z
dGFudHMpOyBzZXRTdGF0ZW1lbnRMb2NhdGlvbigkJC5tX25vZGUsIEAxLCBAMik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICB8IFRIUk9XIEV4cHIgZXJyb3Ig
ICAgICAgICAgICAgICAgICAgIHsgVGhyb3dOb2RlKiBub2RlID0gbmV3IChHTE9CQUxfREFUQSkg
VGhyb3dOb2RlKEdMT0JBTF9EQVRBLCAkMi5tX25vZGUpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU0VUX0VYQ0VQVElPTl9MT0NBVElPTihub2RlLCBAMS5maXJz
dF9jb2x1bW4sIEAyLmxhc3RfY29sdW1uLCBAMi5sYXN0X2NvbHVtbik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlvbklu
Zm88U3RhdGVtZW50Tm9kZSo+KG5vZGUsIDAsIDAsICQyLm1fZmVhdHVyZXMsICQyLm1fbnVtQ29u
c3RhbnRzKTsgREJHKCQkLm1fbm9kZSwgQDEsIEAyKTsgQVVUT19TRU1JQ09MT047IAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24o
bm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMi5sYXN0X2NvbHVtbiwgQDIubGFzdF9jb2x1bW4pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2Rl
RGVjbGFyYXRpb25JbmZvPFN0YXRlbWVudE5vZGUqPihub2RlLCAwLCAwLCAkMi5tX2ZlYXR1cmVz
LCAkMi5tX251bUNvbnN0YW50cyk7IHNldFN0YXRlbWVudExvY2F0aW9uKCQkLm1fbm9kZSwgQDEs
IEAyKTsgQVVUT19TRU1JQ09MT047IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KIDsKIApAQCAtMTE0Nyw1NyArMTE1Myw1NyBAQCBUcnlTdGF0ZW1lbnQ6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlRGVjbGFyYXRpb25MaXN0cygkMi5tX2Z1
bmNEZWNsYXJhdGlvbnMsICQ0Lm1fZnVuY0RlY2xhcmF0aW9ucyksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICQyLm1fZmVhdHVyZXMgfCAkNC5tX2ZlYXR1cmVzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkMi5tX251bUNvbnN0YW50cyArICQ0Lm1fbnVtQ29uc3Rh
bnRzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERCRygkJC5t
X25vZGUsIEAxLCBAMik7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldFN0YXRlbWVudExvY2F0aW9uKCQkLm1fbm9kZSwgQDEsIEAyKTsgfQogICB8IFRSWSBC
bG9jayBDQVRDSCAnKCcgSURFTlQgJyknIEJsb2NrIHsgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRp
b25JbmZvPFN0YXRlbWVudE5vZGUqPihuZXcgKEdMT0JBTF9EQVRBKSBUcnlOb2RlKEdMT0JBTF9E
QVRBLCAkMi5tX25vZGUsICokNSwgKCQ3Lm1fZmVhdHVyZXMgJiBFdmFsRmVhdHVyZSkgIT0gMCwg
JDcubV9ub2RlLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VEZWNs
YXJhdGlvbkxpc3RzKCQyLm1fdmFyRGVjbGFyYXRpb25zLCAkNy5tX3ZhckRlY2xhcmF0aW9ucyks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlRGVjbGFyYXRpb25MaXN0cygk
Mi5tX2Z1bmNEZWNsYXJhdGlvbnMsICQ3Lm1fZnVuY0RlY2xhcmF0aW9ucyksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICQyLm1fZmVhdHVyZXMgfCAkNy5tX2ZlYXR1cmVzIHwgQ2F0
Y2hGZWF0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkMi5tX251bUNvbnN0
YW50cyArICQ3Lm1fbnVtQ29uc3RhbnRzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERCRygkJC5tX25vZGUsIEAxLCBAMik7IH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXRlbWVudExvY2F0aW9uKCQkLm1fbm9kZSwg
QDEsIEAyKTsgfQogICB8IFRSWSBCbG9jayBDQVRDSCAnKCcgSURFTlQgJyknIEJsb2NrIEZJTkFM
TFkgQmxvY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0g
Y3JlYXRlTm9kZURlY2xhcmF0aW9uSW5mbzxTdGF0ZW1lbnROb2RlKj4obmV3IChHTE9CQUxfREFU
QSkgVHJ5Tm9kZShHTE9CQUxfREFUQSwgJDIubV9ub2RlLCAqJDUsICgkNy5tX2ZlYXR1cmVzICYg
RXZhbEZlYXR1cmUpICE9IDAsICQ3Lm1fbm9kZSwgJDkubV9ub2RlKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVyZ2VEZWNsYXJhdGlvbkxpc3RzKG1lcmdlRGVjbGFyYXRpb25M
aXN0cygkMi5tX3ZhckRlY2xhcmF0aW9ucywgJDcubV92YXJEZWNsYXJhdGlvbnMpLCAkOS5tX3Zh
ckRlY2xhcmF0aW9ucyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlRGVj
bGFyYXRpb25MaXN0cyhtZXJnZURlY2xhcmF0aW9uTGlzdHMoJDIubV9mdW5jRGVjbGFyYXRpb25z
LCAkNy5tX2Z1bmNEZWNsYXJhdGlvbnMpLCAkOS5tX2Z1bmNEZWNsYXJhdGlvbnMpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAkMi5tX2ZlYXR1cmVzIHwgJDcubV9mZWF0dXJlcyB8
ICQ5Lm1fZmVhdHVyZXMgfCBDYXRjaEZlYXR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICQyLm1fbnVtQ29uc3RhbnRzICsgJDcubV9udW1Db25zdGFudHMgKyAkOS5tX251bUNv
bnN0YW50cyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQkco
JCQubV9ub2RlLCBAMSwgQDIpOyB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRTdGF0ZW1lbnRMb2NhdGlvbigkJC5tX25vZGUsIEAxLCBAMik7IH0KIDsKIAog
RGVidWdnZXJTdGF0ZW1lbnQ6CiAgICAgREVCVUdHRVIgJzsnICAgICAgICAgICAgICAgICAgICAg
ICAgeyAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlvbkluZm88U3RhdGVtZW50Tm9kZSo+KG5ldyAo
R0xPQkFMX0RBVEEpIERlYnVnZ2VyU3RhdGVtZW50Tm9kZShHTE9CQUxfREFUQSksIDAsIDAsIDAs
IDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREJHKCQkLm1f
bm9kZSwgQDEsIEAyKTsgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0U3RhdGVtZW50TG9jYXRpb24oJCQubV9ub2RlLCBAMSwgQDIpOyB9CiAgIHwgREVCVUdH
RVIgZXJyb3IgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlv
bkluZm88U3RhdGVtZW50Tm9kZSo+KG5ldyAoR0xPQkFMX0RBVEEpIERlYnVnZ2VyU3RhdGVtZW50
Tm9kZShHTE9CQUxfREFUQSksIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgREJHKCQkLm1fbm9kZSwgQDEsIEAxKTsgQVVUT19TRU1JQ09MT047
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXRlbWVu
dExvY2F0aW9uKCQkLm1fbm9kZSwgQDEsIEAxKTsgQVVUT19TRU1JQ09MT047IH0KIDsKIAogRnVu
Y3Rpb25EZWNsYXJhdGlvbjoKLSAgICBGVU5DVElPTiBJREVOVCAnKCcgJyknIE9QRU5CUkFDRSBG
dW5jdGlvbkJvZHkgQ0xPU0VCUkFDRSB7ICQkID0gY3JlYXRlTm9kZURlY2xhcmF0aW9uSW5mbzxT
dGF0ZW1lbnROb2RlKj4obmV3IChHTE9CQUxfREFUQSkgRnVuY0RlY2xOb2RlKEdMT0JBTF9EQVRB
LCAqJDIsICQ2LCBMRVhFUi0+c291cmNlQ29kZSgkNSwgJDcsIEA1LmZpcnN0X2xpbmUpKSwgMCwg
bmV3IChHTE9CQUxfREFUQSkgUGFyc2VyQXJlbmFEYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpGdW5j
dGlvblN0YWNrPiwgKCgqJDIgPT0gR0xPQkFMX0RBVEEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50
cykgPyBBcmd1bWVudHNGZWF0dXJlIDogMCkgfCBDbG9zdXJlRmVhdHVyZSwgMCk7IERCRygkNiwg
QDUsIEA3KTsgJCQubV9mdW5jRGVjbGFyYXRpb25zLT5kYXRhLmFwcGVuZChzdGF0aWNfY2FzdDxG
dW5jRGVjbE5vZGUqPigkJC5tX25vZGUpLT5ib2R5KCkpOyB9CisgICAgRlVOQ1RJT04gSURFTlQg
JygnICcpJyBPUEVOQlJBQ0UgRnVuY3Rpb25Cb2R5IENMT1NFQlJBQ0UgeyAkJCA9IGNyZWF0ZU5v
ZGVEZWNsYXJhdGlvbkluZm88U3RhdGVtZW50Tm9kZSo+KG5ldyAoR0xPQkFMX0RBVEEpIEZ1bmNE
ZWNsTm9kZShHTE9CQUxfREFUQSwgKiQyLCAkNiwgR0xPQkFMX0RBVEEtPmxleGVyLT5zb3VyY2VD
b2RlKCQ1LCAkNywgQDUuZmlyc3RfbGluZSkpLCAwLCBuZXcgKEdMT0JBTF9EQVRBKSBQYXJzZXJB
cmVuYURhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+LCAoKCokMiA9PSBHTE9C
QUxfREFUQS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKSA/IEFyZ3VtZW50c0ZlYXR1cmUgOiAw
KSB8IENsb3N1cmVGZWF0dXJlLCAwKTsgc2V0U3RhdGVtZW50TG9jYXRpb24oJDYsIEA1LCBANyk7
ICQkLm1fZnVuY0RlY2xhcmF0aW9ucy0+ZGF0YS5hcHBlbmQoc3RhdGljX2Nhc3Q8RnVuY0RlY2xO
b2RlKj4oJCQubV9ub2RlKS0+Ym9keSgpKTsgfQogICB8IEZVTkNUSU9OIElERU5UICcoJyBGb3Jt
YWxQYXJhbWV0ZXJMaXN0ICcpJyBPUEVOQlJBQ0UgRnVuY3Rpb25Cb2R5IENMT1NFQlJBQ0UKICAg
ICAgIHsKLSAgICAgICAgICAkJCA9IGNyZWF0ZU5vZGVEZWNsYXJhdGlvbkluZm88U3RhdGVtZW50
Tm9kZSo+KG5ldyAoR0xPQkFMX0RBVEEpIEZ1bmNEZWNsTm9kZShHTE9CQUxfREFUQSwgKiQyLCAk
NywgTEVYRVItPnNvdXJjZUNvZGUoJDYsICQ4LCBANi5maXJzdF9saW5lKSwgJDQubV9ub2RlLmhl
YWQpLCAwLCBuZXcgKEdMT0JBTF9EQVRBKSBQYXJzZXJBcmVuYURhdGE8RGVjbGFyYXRpb25TdGFj
a3M6OkZ1bmN0aW9uU3RhY2s+LCAoKCokMiA9PSBHTE9CQUxfREFUQS0+cHJvcGVydHlOYW1lcy0+
YXJndW1lbnRzKSA/IEFyZ3VtZW50c0ZlYXR1cmUgOiAwKSB8ICQ0Lm1fZmVhdHVyZXMgfCBDbG9z
dXJlRmVhdHVyZSwgMCk7CisgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlRGVjbGFyYXRpb25JbmZv
PFN0YXRlbWVudE5vZGUqPihuZXcgKEdMT0JBTF9EQVRBKSBGdW5jRGVjbE5vZGUoR0xPQkFMX0RB
VEEsICokMiwgJDcsIEdMT0JBTF9EQVRBLT5sZXhlci0+c291cmNlQ29kZSgkNiwgJDgsIEA2LmZp
cnN0X2xpbmUpLCAkNC5tX25vZGUuaGVhZCksIDAsIG5ldyAoR0xPQkFMX0RBVEEpIFBhcnNlckFy
ZW5hRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4sICgoKiQyID09IEdMT0JB
TF9EQVRBLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMpID8gQXJndW1lbnRzRmVhdHVyZSA6IDAp
IHwgJDQubV9mZWF0dXJlcyB8IENsb3N1cmVGZWF0dXJlLCAwKTsKICAgICAgICAgICBpZiAoJDQu
bV9mZWF0dXJlcyAmIEFyZ3VtZW50c0ZlYXR1cmUpCiAgICAgICAgICAgICAgICQ3LT5zZXRVc2Vz
QXJndW1lbnRzKCk7Ci0gICAgICAgICAgREJHKCQ3LCBANiwgQDgpOworICAgICAgICAgIHNldFN0
YXRlbWVudExvY2F0aW9uKCQ3LCBANiwgQDgpOwogICAgICAgICAgICQkLm1fZnVuY0RlY2xhcmF0
aW9ucy0+ZGF0YS5hcHBlbmQoc3RhdGljX2Nhc3Q8RnVuY0RlY2xOb2RlKj4oJCQubV9ub2RlKS0+
Ym9keSgpKTsKICAgICAgIH0KIDsKIAogRnVuY3Rpb25FeHByOgotICAgIEZVTkNUSU9OICcoJyAn
KScgT1BFTkJSQUNFIEZ1bmN0aW9uQm9keSBDTE9TRUJSQUNFIHsgJCQgPSBjcmVhdGVOb2RlSW5m
byhuZXcgKEdMT0JBTF9EQVRBKSBGdW5jRXhwck5vZGUoR0xPQkFMX0RBVEEsIEdMT0JBTF9EQVRB
LT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgJDUsIExFWEVSLT5zb3VyY2VDb2RlKCQ0
LCAkNiwgQDQuZmlyc3RfbGluZSkpLCBDbG9zdXJlRmVhdHVyZSwgMCk7IERCRygkNSwgQDQsIEA2
KTsgfQorICAgIEZVTkNUSU9OICcoJyAnKScgT1BFTkJSQUNFIEZ1bmN0aW9uQm9keSBDTE9TRUJS
QUNFIHsgJCQgPSBjcmVhdGVOb2RlSW5mbyhuZXcgKEdMT0JBTF9EQVRBKSBGdW5jRXhwck5vZGUo
R0xPQkFMX0RBVEEsIEdMT0JBTF9EQVRBLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwg
JDUsIEdMT0JBTF9EQVRBLT5sZXhlci0+c291cmNlQ29kZSgkNCwgJDYsIEA0LmZpcnN0X2xpbmUp
KSwgQ2xvc3VyZUZlYXR1cmUsIDApOyBzZXRTdGF0ZW1lbnRMb2NhdGlvbigkNSwgQDQsIEA2KTsg
fQogICAgIHwgRlVOQ1RJT04gJygnIEZvcm1hbFBhcmFtZXRlckxpc3QgJyknIE9QRU5CUkFDRSBG
dW5jdGlvbkJvZHkgQ0xPU0VCUkFDRQogICAgICAgewotICAgICAgICAgICQkID0gY3JlYXRlTm9k
ZUluZm8obmV3IChHTE9CQUxfREFUQSkgRnVuY0V4cHJOb2RlKEdMT0JBTF9EQVRBLCBHTE9CQUxf
REFUQS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsICQ2LCBMRVhFUi0+c291cmNlQ29k
ZSgkNSwgJDcsIEA1LmZpcnN0X2xpbmUpLCAkMy5tX25vZGUuaGVhZCksICQzLm1fZmVhdHVyZXMg
fCBDbG9zdXJlRmVhdHVyZSwgMCk7CisgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5mbyhuZXcg
KEdMT0JBTF9EQVRBKSBGdW5jRXhwck5vZGUoR0xPQkFMX0RBVEEsIEdMT0JBTF9EQVRBLT5wcm9w
ZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgJDYsIEdMT0JBTF9EQVRBLT5sZXhlci0+c291cmNl
Q29kZSgkNSwgJDcsIEA1LmZpcnN0X2xpbmUpLCAkMy5tX25vZGUuaGVhZCksICQzLm1fZmVhdHVy
ZXMgfCBDbG9zdXJlRmVhdHVyZSwgMCk7CiAgICAgICAgICAgaWYgKCQzLm1fZmVhdHVyZXMgJiBB
cmd1bWVudHNGZWF0dXJlKQogICAgICAgICAgICAgICAkNi0+c2V0VXNlc0FyZ3VtZW50cygpOwot
ICAgICAgICAgIERCRygkNiwgQDUsIEA3KTsKKyAgICAgICAgICBzZXRTdGF0ZW1lbnRMb2NhdGlv
bigkNiwgQDUsIEA3KTsKICAgICAgIH0KLSAgfCBGVU5DVElPTiBJREVOVCAnKCcgJyknIE9QRU5C
UkFDRSBGdW5jdGlvbkJvZHkgQ0xPU0VCUkFDRSB7ICQkID0gY3JlYXRlTm9kZUluZm8obmV3IChH
TE9CQUxfREFUQSkgRnVuY0V4cHJOb2RlKEdMT0JBTF9EQVRBLCAqJDIsICQ2LCBMRVhFUi0+c291
cmNlQ29kZSgkNSwgJDcsIEA1LmZpcnN0X2xpbmUpKSwgQ2xvc3VyZUZlYXR1cmUsIDApOyBEQkco
JDYsIEA1LCBANyk7IH0KKyAgfCBGVU5DVElPTiBJREVOVCAnKCcgJyknIE9QRU5CUkFDRSBGdW5j
dGlvbkJvZHkgQ0xPU0VCUkFDRSB7ICQkID0gY3JlYXRlTm9kZUluZm8obmV3IChHTE9CQUxfREFU
QSkgRnVuY0V4cHJOb2RlKEdMT0JBTF9EQVRBLCAqJDIsICQ2LCBHTE9CQUxfREFUQS0+bGV4ZXIt
PnNvdXJjZUNvZGUoJDUsICQ3LCBANS5maXJzdF9saW5lKSksIENsb3N1cmVGZWF0dXJlLCAwKTsg
c2V0U3RhdGVtZW50TG9jYXRpb24oJDYsIEA1LCBANyk7IH0KICAgfCBGVU5DVElPTiBJREVOVCAn
KCcgRm9ybWFsUGFyYW1ldGVyTGlzdCAnKScgT1BFTkJSQUNFIEZ1bmN0aW9uQm9keSBDTE9TRUJS
QUNFCiAgICAgICB7Ci0gICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5mbyhuZXcgKEdMT0JBTF9E
QVRBKSBGdW5jRXhwck5vZGUoR0xPQkFMX0RBVEEsICokMiwgJDcsIExFWEVSLT5zb3VyY2VDb2Rl
KCQ2LCAkOCwgQDYuZmlyc3RfbGluZSksICQ0Lm1fbm9kZS5oZWFkKSwgJDQubV9mZWF0dXJlcyB8
IENsb3N1cmVGZWF0dXJlLCAwKTsgCisgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5mbyhuZXcg
KEdMT0JBTF9EQVRBKSBGdW5jRXhwck5vZGUoR0xPQkFMX0RBVEEsICokMiwgJDcsIEdMT0JBTF9E
QVRBLT5sZXhlci0+c291cmNlQ29kZSgkNiwgJDgsIEA2LmZpcnN0X2xpbmUpLCAkNC5tX25vZGUu
aGVhZCksICQ0Lm1fZmVhdHVyZXMgfCBDbG9zdXJlRmVhdHVyZSwgMCk7IAogICAgICAgICAgIGlm
ICgkNC5tX2ZlYXR1cmVzICYgQXJndW1lbnRzRmVhdHVyZSkKICAgICAgICAgICAgICAgJDctPnNl
dFVzZXNBcmd1bWVudHMoKTsKLSAgICAgICAgICBEQkcoJDcsIEA2LCBAOCk7CisgICAgICAgICAg
c2V0U3RhdGVtZW50TG9jYXRpb24oJDcsIEA2LCBAOCk7CiAgICAgICB9CiA7CiAKQEAgLTEyNDUs
OCArMTI1MSw4IEBAIExpdGVyYWxfTm9Ob2RlOgogICB8IEZBTFNFVE9LRU4KICAgfCBOVU1CRVIg
eyB9CiAgIHwgU1RSSU5HIHsgfQotICB8ICcvJyAvKiByZWdleHAgKi8geyBpZiAoIUxFWEVSLT5z
a2lwUmVnRXhwKCkpIFlZQUJPUlQ7IH0KLSAgfCBESVZFUVVBTCAvKiByZWdleHAgd2l0aCAvPSAq
LyB7IGlmICghTEVYRVItPnNraXBSZWdFeHAoKSkgWVlBQk9SVDsgfQorICB8ICcvJyAvKiByZWdl
eHAgKi8geyBpZiAoIUdMT0JBTF9EQVRBLT5sZXhlci0+c2tpcFJlZ0V4cCgpKSBZWUFCT1JUOyB9
CisgIHwgRElWRVFVQUwgLyogcmVnZXhwIHdpdGggLz0gKi8geyBpZiAoIUdMT0JBTF9EQVRBLT5s
ZXhlci0+c2tpcFJlZ0V4cCgpKSBZWUFCT1JUOyB9CiA7CiAKIFByb3BlcnR5X05vTm9kZToKQEAg
LTE4MjgsMjYgKzE4MzQsMjggQEAgU291cmNlRWxlbWVudHNfTm9Ob2RlOgogCiAlJQogCi1zdGF0
aWMgRXhwcmVzc2lvbk5vZGUqIG1ha2VBc3NpZ25Ob2RlKHZvaWQqIGdsb2JhbFB0ciwgRXhwcmVz
c2lvbk5vZGUqIGxvYywgT3BlcmF0b3Igb3AsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBib29sIGxv
Y0hhc0Fzc2lnbm1lbnRzLCBib29sIGV4cHJIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQg
ZGl2b3QsIGludCBlbmQpCisjdW5kZWYgR0xPQkFMX0RBVEEKKworc3RhdGljIEV4cHJlc3Npb25O
b2RlKiBtYWtlQXNzaWduTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25O
b2RlKiBsb2MsIE9wZXJhdG9yIG9wLCBFeHByZXNzaW9uTm9kZSogZXhwciwgYm9vbCBsb2NIYXNB
c3NpZ25tZW50cywgYm9vbCBleHBySGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90
LCBpbnQgZW5kKQogewogICAgIGlmICghbG9jLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVy
biBuZXcgKEdMT0JBTF9EQVRBKSBBc3NpZ25FcnJvck5vZGUoR0xPQkFMX0RBVEEsIGxvYywgb3As
IGV4cHIsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVy
biBuZXcgKGdsb2JhbERhdGEpIEFzc2lnbkVycm9yTm9kZShnbG9iYWxEYXRhLCBsb2MsIG9wLCBl
eHByLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogCiAgICAgaWYgKGxvYy0+
aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGlj
X2Nhc3Q8UmVzb2x2ZU5vZGUqPihsb2MpOwogICAgICAgICBpZiAob3AgPT0gT3BFcXVhbCkgewot
ICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBB
c3NpZ25SZXNvbHZlTm9kZShHTE9CQUxfREFUQSwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBleHBy
LCBleHBySGFzQXNzaWdubWVudHMpOwotICAgICAgICAgICAgU0VUX0VYQ0VQVElPTl9MT0NBVElP
Tihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CisgICAgICAgICAgICBBc3NpZ25SZXNvbHZlTm9k
ZSogbm9kZSA9IG5ldyAoZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUoZ2xvYmFsRGF0YSwg
cmVzb2x2ZS0+aWRlbnRpZmllcigpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMpOworICAgICAg
ICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAg
ICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJu
IG5ldyAoR0xPQkFMX0RBVEEpIFJlYWRNb2RpZnlSZXNvbHZlTm9kZShHTE9CQUxfREFUQSwgcmVz
b2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwg
ZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAoZ2xv
YmFsRGF0YSkgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGdsb2JhbERhdGEsIHJlc29sdmUtPmlkZW50
aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3Rh
cnQsIGVuZCAtIGRpdm90KTsKICAgICB9CiAgICAgaWYgKGxvYy0+aXNCcmFja2V0QWNjZXNzb3JO
b2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19j
YXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihsb2MpOwogICAgICAgICBpZiAob3AgPT0gT3BFcXVh
bCkKLSAgICAgICAgICAgIHJldHVybiBuZXcgKEdMT0JBTF9EQVRBKSBBc3NpZ25CcmFja2V0Tm9k
ZShHTE9CQUxfREFUQSwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgZXhw
ciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgYnJhY2tldC0+ZGl2b3Qo
KSwgYnJhY2tldC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBicmFja2V0LT5kaXZvdCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBuZXcgKGdsb2JhbERhdGEpIEFzc2lnbkJyYWNrZXROb2RlKGdsb2Jh
bERhdGEsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGV4cHIsIGxvY0hh
c0Fzc2lnbm1lbnRzLCBleHBySGFzQXNzaWdubWVudHMsIGJyYWNrZXQtPmRpdm90KCksIGJyYWNr
ZXQtPmRpdm90KCkgLSBzdGFydCwgZW5kIC0gYnJhY2tldC0+ZGl2b3QoKSk7CiAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKiBub2RlID0gbmV3IChHTE9C
QUxfREFUQSkgUmVhZE1vZGlmeUJyYWNrZXROb2RlKEdMT0JBTF9EQVRBLCBicmFja2V0LT5iYXNl
KCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4
cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAg
ICAgICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAoZ2xvYmFsRGF0YSkg
UmVhZE1vZGlmeUJyYWNrZXROb2RlKGdsb2JhbERhdGEsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tl
dC0+c3Vic2NyaXB0KCksIG9wLCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywgZXhwckhhc0Fzc2ln
bm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgICAgICAgICAg
bm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZW5k
T2Zmc2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAgIH0KQEAgLTE4NTUs
MTE3ICsxODYzLDExNyBAQCBzdGF0aWMgRXhwcmVzc2lvbk5vZGUqIG1ha2VBc3NpZ25Ob2RlKHZv
CiAgICAgQVNTRVJUKGxvYy0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JO
b2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihsb2MpOwogICAgIGlmIChv
cCA9PSBPcEVxdWFsKQotICAgICAgICByZXR1cm4gbmV3IChHTE9CQUxfREFUQSkgQXNzaWduRG90
Tm9kZShHTE9CQUxfREFUQSwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBleHByLCBl
eHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdCgpIC0gc3RhcnQsIGVu
ZCAtIGRvdC0+ZGl2b3QoKSk7CisgICAgICAgIHJldHVybiBuZXcgKGdsb2JhbERhdGEpIEFzc2ln
bkRvdE5vZGUoZ2xvYmFsRGF0YSwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBleHBy
LCBleHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdCgpIC0gc3RhcnQs
IGVuZCAtIGRvdC0+ZGl2b3QoKSk7CiAKLSAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5l
dyAoR0xPQkFMX0RBVEEpIFJlYWRNb2RpZnlEb3ROb2RlKEdMT0JBTF9EQVRBLCBkb3QtPmJhc2Uo
KSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90
LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgUmVhZE1vZGlmeURvdE5vZGUqIG5v
ZGUgPSBuZXcgKGdsb2JhbERhdGEpIFJlYWRNb2RpZnlEb3ROb2RlKGdsb2JhbERhdGEsIGRvdC0+
YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywg
ZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBub2RlLT5zZXRTdWJleHBy
ZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZW5kT2Zmc2V0KCkpOwogICAgIHJldHVybiBu
b2RlOwogfQogCi1zdGF0aWMgRXhwcmVzc2lvbk5vZGUqIG1ha2VQcmVmaXhOb2RlKHZvaWQqIGds
b2JhbFB0ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQsIGlu
dCBkaXZvdCwgaW50IGVuZCkKK3N0YXRpYyBFeHByZXNzaW9uTm9kZSogbWFrZVByZWZpeE5vZGUo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3BlcmF0b3Ig
b3AsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogewogICAgIGlmICghZXhwci0+aXNM
b2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3IChHTE9CQUxfREFUQSkgUHJlZml4RXJyb3JO
b2RlKEdMT0JBTF9EQVRBLCBleHByLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRp
dm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAoZ2xvYmFsRGF0YSkgUHJlZml4RXJyb3JOb2RlKGds
b2JhbERhdGEsIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwog
ICAgIAogICAgIGlmIChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5v
ZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4cHIpOwotICAgICAgICBy
ZXR1cm4gbmV3IChHTE9CQUxfREFUQSkgUHJlZml4UmVzb2x2ZU5vZGUoR0xPQkFMX0RBVEEsIHJl
c29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZv
dCk7CisgICAgICAgIHJldHVybiBuZXcgKGdsb2JhbERhdGEpIFByZWZpeFJlc29sdmVOb2RlKGds
b2JhbERhdGEsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0
LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIGlmIChleHByLT5pc0JyYWNrZXRBY2Nlc3Nvck5v
ZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nh
c3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgICAgICBQcmVmaXhCcmFja2V0Tm9k
ZSogbm9kZSA9IG5ldyAoR0xPQkFMX0RBVEEpIFByZWZpeEJyYWNrZXROb2RlKEdMT0JBTF9EQVRB
LCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90
IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgUHJlZml4QnJhY2tldE5vZGUqIG5vZGUg
PSBuZXcgKGdsb2JhbERhdGEpIFByZWZpeEJyYWNrZXROb2RlKGdsb2JhbERhdGEsIGJyYWNrZXQt
PmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOwogICAgICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0
LT5kaXZvdCgpLCBicmFja2V0LT5zdGFydE9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuIG5vZGU7
CiAgICAgfQogICAgIEFTU0VSVChleHByLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RB
Y2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGV4cHIpOwot
ICAgIFByZWZpeERvdE5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBQcmVmaXhEb3ROb2Rl
KEdMT0JBTF9EQVRBLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwg
ZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgIFByZWZpeERvdE5vZGUqIG5vZGUgPSBu
ZXcgKGdsb2JhbERhdGEpIFByZWZpeERvdE5vZGUoZ2xvYmFsRGF0YSwgZG90LT5iYXNlKCksIGRv
dC0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsK
ICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+c3RhcnRP
ZmZzZXQoKSk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLXN0YXRpYyBFeHByZXNzaW9uTm9kZSog
bWFrZVBvc3RmaXhOb2RlKHZvaWQqIGdsb2JhbFB0ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9w
ZXJhdG9yIG9wLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK3N0YXRpYyBFeHByZXNz
aW9uTm9kZSogbWFrZVBvc3RmaXhOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVu
ZCkKIHsgCiAgICAgaWYgKCFleHByLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcg
KEdMT0JBTF9EQVRBKSBQb3N0Zml4RXJyb3JOb2RlKEdMT0JBTF9EQVRBLCBleHByLCBvcCwgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAoZ2xv
YmFsRGF0YSkgUG9zdGZpeEVycm9yTm9kZShnbG9iYWxEYXRhLCBleHByLCBvcCwgZGl2b3QsIGRp
dm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICAKICAgICBpZiAoZXhwci0+aXNSZXNvbHZl
Tm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVz
b2x2ZU5vZGUqPihleHByKTsKLSAgICAgICAgcmV0dXJuIG5ldyAoR0xPQkFMX0RBVEEpIFBvc3Rm
aXhSZXNvbHZlTm9kZShHTE9CQUxfREFUQSwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAoZ2xv
YmFsRGF0YSkgUG9zdGZpeFJlc29sdmVOb2RlKGdsb2JhbERhdGEsIHJlc29sdmUtPmlkZW50aWZp
ZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAg
IGlmIChleHByLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNj
ZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGV4
cHIpOwotICAgICAgICBQb3N0Zml4QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRB
KSBQb3N0Zml4QnJhY2tldE5vZGUoR0xPQkFMX0RBVEEsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tl
dC0+c3Vic2NyaXB0KCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwor
ICAgICAgICBQb3N0Zml4QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKGdsb2JhbERhdGEpIFBvc3Rm
aXhCcmFja2V0Tm9kZShnbG9iYWxEYXRhLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNj
cmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICAgICAg
bm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZW5k
T2Zmc2V0KCkpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICAgCiAgICAgfQogICAgIEFT
U0VSVChleHByLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRv
dCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgIFBvc3RmaXhEb3RO
b2RlKiBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgUG9zdGZpeERvdE5vZGUoR0xPQkFMX0RBVEEs
IGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0
LCBlbmQgLSBkaXZvdCk7CisgICAgUG9zdGZpeERvdE5vZGUqIG5vZGUgPSBuZXcgKGdsb2JhbERh
dGEpIFBvc3RmaXhEb3ROb2RlKGdsb2JhbERhdGEsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZp
ZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgbm9kZS0+
c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPmVuZE9mZnNldCgpKTsKICAg
ICByZXR1cm4gbm9kZTsKIH0KIAotc3RhdGljIEV4cHJlc3Npb25Ob2RlSW5mbyBtYWtlRnVuY3Rp
b25DYWxsTm9kZSh2b2lkKiBnbG9iYWxQdHIsIEV4cHJlc3Npb25Ob2RlSW5mbyBmdW5jLCBBcmd1
bWVudHNOb2RlSW5mbyBhcmdzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK3N0YXRp
YyBFeHByZXNzaW9uTm9kZUluZm8gbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZUluZm8gZnVuYywgQXJndW1lbnRzTm9kZUluZm8gYXJn
cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiB7CiAgICAgQ29kZUZlYXR1cmVzIGZl
YXR1cmVzID0gZnVuYy5tX2ZlYXR1cmVzIHwgYXJncy5tX2ZlYXR1cmVzOwogICAgIGludCBudW1D
b25zdGFudHMgPSBmdW5jLm1fbnVtQ29uc3RhbnRzICsgYXJncy5tX251bUNvbnN0YW50czsKICAg
ICBpZiAoIWZ1bmMubV9ub2RlLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVO
b2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyAoR0xPQkFMX0RBVEEpIEZ1bmN0aW9uQ2FsbFZh
bHVlTm9kZShHTE9CQUxfREFUQSwgZnVuYy5tX25vZGUsIGFyZ3MubV9ub2RlLCBkaXZvdCwgZGl2
b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKKyAgICAg
ICAgcmV0dXJuIGNyZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IChnbG9iYWxEYXRh
KSBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoZ2xvYmFsRGF0YSwgZnVuYy5tX25vZGUsIGFyZ3MubV9u
b2RlLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpLCBmZWF0dXJlcywgbnVtQ29u
c3RhbnRzKTsKICAgICBpZiAoZnVuYy5tX25vZGUtPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAg
ICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZnVuYy5t
X25vZGUpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyID0gcmVzb2x2ZS0+
aWRlbnRpZmllcigpOwotICAgICAgICBpZiAoaWRlbnRpZmllciA9PSBHTE9CQUxfREFUQS0+cHJv
cGVydHlOYW1lcy0+ZXZhbCkKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVOb2RlSW5mbzxFeHBy
ZXNzaW9uTm9kZSo+KG5ldyAoR0xPQkFMX0RBVEEpIEV2YWxGdW5jdGlvbkNhbGxOb2RlKEdMT0JB
TF9EQVRBLCBhcmdzLm1fbm9kZSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KSwg
RXZhbEZlYXR1cmUgfCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IChHTE9CQUxfREFUQSkgRnVuY3Rpb25D
YWxsUmVzb2x2ZU5vZGUoR0xPQkFMX0RBVEEsIGlkZW50aWZpZXIsIGFyZ3MubV9ub2RlLCBkaXZv
dCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsK
KyAgICAgICAgaWYgKGlkZW50aWZpZXIgPT0gZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZh
bCkKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5l
dyAoZ2xvYmFsRGF0YSkgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUoZ2xvYmFsRGF0YSwgYXJncy5tX25v
ZGUsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCksIEV2YWxGZWF0dXJlIHwgZmVh
dHVyZXMsIG51bUNvbnN0YW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOb2RlSW5mbzxFeHBy
ZXNzaW9uTm9kZSo+KG5ldyAoZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoZ2xv
YmFsRGF0YSwgaWRlbnRpZmllciwgYXJncy5tX25vZGUsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBl
bmQgLSBkaXZvdCksIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOwogICAgIH0KICAgICBpZiAoZnVu
Yy5tX25vZGUtPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nl
c3Nvck5vZGUqIGJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4oZnVu
Yy5tX25vZGUpOwotICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAo
R0xPQkFMX0RBVEEpIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKEdMT0JBTF9EQVRBLCBicmFja2V0
LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBhcmdzLm1fbm9kZSwgZGl2b3QsIGRpdm90
IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUq
IG5vZGUgPSBuZXcgKGdsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGdsb2JhbERh
dGEsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGFyZ3MubV9ub2RlLCBk
aXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgICAgICBub2RlLT5zZXRTdWJl
eHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5lbmRPZmZzZXQoKSk7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsIGZlYXR1
cmVzLCBudW1Db25zdGFudHMpOwogICAgIH0KICAgICBBU1NFUlQoZnVuYy5tX25vZGUtPmlzRG90
QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8
RG90QWNjZXNzb3JOb2RlKj4oZnVuYy5tX25vZGUpOwogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUq
IG5vZGU7Ci0gICAgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IEdMT0JBTF9EQVRBLT5wcm9wZXJ0
eU5hbWVzLT5jYWxsKQotICAgICAgICBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgQ2FsbEZ1bmN0
aW9uQ2FsbERvdE5vZGUoR0xPQkFMX0RBVEEsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIo
KSwgYXJncy5tX25vZGUsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7Ci0gICAg
ZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gR0xPQkFMX0RBVEEtPnByb3BlcnR5TmFtZXMt
PmFwcGx5KQotICAgICAgICBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgQXBwbHlGdW5jdGlvbkNh
bGxEb3ROb2RlKEdMT0JBTF9EQVRBLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFy
Z3MubV9ub2RlLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgIGlmIChk
b3QtPmlkZW50aWZpZXIoKSA9PSBnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5jYWxsKQorICAg
ICAgICBub2RlID0gbmV3IChnbG9iYWxEYXRhKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShnbG9i
YWxEYXRhLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MubV9ub2RlLCBkaXZv
dCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgIGVsc2UgaWYgKGRvdC0+aWRlbnRp
ZmllcigpID09IGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFwcGx5KQorICAgICAgICBub2Rl
ID0gbmV3IChnbG9iYWxEYXRhKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoZ2xvYmFsRGF0YSwg
ZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLm1fbm9kZSwgZGl2b3QsIGRpdm90
IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBlbHNlCi0gICAgICAgIG5vZGUgPSBuZXcgKEdM
T0JBTF9EQVRBKSBGdW5jdGlvbkNhbGxEb3ROb2RlKEdMT0JBTF9EQVRBLCBkb3QtPmJhc2UoKSwg
ZG90LT5pZGVudGlmaWVyKCksIGFyZ3MubV9ub2RlLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5k
IC0gZGl2b3QpOworICAgICAgICBub2RlID0gbmV3IChnbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxE
b3ROb2RlKGdsb2JhbERhdGEsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncy5t
X25vZGUsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgbm9kZS0+c2V0
U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPmVuZE9mZnNldCgpKTsKICAgICBy
ZXR1cm4gY3JlYXRlTm9kZUluZm88RXhwcmVzc2lvbk5vZGUqPihub2RlLCBmZWF0dXJlcywgbnVt
Q29uc3RhbnRzKTsKIH0KIAotc3RhdGljIEV4cHJlc3Npb25Ob2RlKiBtYWtlVHlwZU9mTm9kZSh2
b2lkKiBnbG9iYWxQdHIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorc3RhdGljIEV4cHJlc3Npb25O
b2RlKiBtYWtlVHlwZU9mTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25O
b2RlKiBleHByKQogewogICAgIGlmIChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAgICAgICAg
UmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4cHIpOwot
ICAgICAgICByZXR1cm4gbmV3IChHTE9CQUxfREFUQSkgVHlwZU9mUmVzb2x2ZU5vZGUoR0xPQkFM
X0RBVEEsIHJlc29sdmUtPmlkZW50aWZpZXIoKSk7CisgICAgICAgIHJldHVybiBuZXcgKGdsb2Jh
bERhdGEpIFR5cGVPZlJlc29sdmVOb2RlKGdsb2JhbERhdGEsIHJlc29sdmUtPmlkZW50aWZpZXIo
KSk7CiAgICAgfQotICAgIHJldHVybiBuZXcgKEdMT0JBTF9EQVRBKSBUeXBlT2ZWYWx1ZU5vZGUo
R0xPQkFMX0RBVEEsIGV4cHIpOworICAgIHJldHVybiBuZXcgKGdsb2JhbERhdGEpIFR5cGVPZlZh
bHVlTm9kZShnbG9iYWxEYXRhLCBleHByKTsKIH0KIAotc3RhdGljIEV4cHJlc3Npb25Ob2RlKiBt
YWtlRGVsZXRlTm9kZSh2b2lkKiBnbG9iYWxQdHIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQg
c3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK3N0YXRpYyBFeHByZXNzaW9uTm9kZSogbWFrZURl
bGV0ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwciwg
aW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiB7CiAgICAgaWYgKCFleHByLT5pc0xvY2F0
aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKEdMT0JBTF9EQVRBKSBEZWxldGVWYWx1ZU5vZGUo
R0xPQkFMX0RBVEEsIGV4cHIpOworICAgICAgICByZXR1cm4gbmV3IChnbG9iYWxEYXRhKSBEZWxl
dGVWYWx1ZU5vZGUoZ2xvYmFsRGF0YSwgZXhwcik7CiAgICAgaWYgKGV4cHItPmlzUmVzb2x2ZU5v
ZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29s
dmVOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcgKEdMT0JBTF9EQVRBKSBEZWxldGVS
ZXNvbHZlTm9kZShHTE9CQUxfREFUQSwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2
b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChnbG9iYWxEYXRh
KSBEZWxldGVSZXNvbHZlTm9kZShnbG9iYWxEYXRhLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIGRp
dm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIGlmIChleHByLT5p
c0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBi
cmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgICAg
ICByZXR1cm4gbmV3IChHTE9CQUxfREFUQSkgRGVsZXRlQnJhY2tldE5vZGUoR0xPQkFMX0RBVEEs
IGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGRpdm90LCBkaXZvdCAtIHN0
YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKGdsb2JhbERhdGEpIERlbGV0
ZUJyYWNrZXROb2RlKGdsb2JhbERhdGEsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2Ny
aXB0KCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIEFT
U0VSVChleHByLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRv
dCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgIHJldHVybiBuZXcg
KEdMT0JBTF9EQVRBKSBEZWxldGVEb3ROb2RlKEdMT0JBTF9EQVRBLCBkb3QtPmJhc2UoKSwgZG90
LT5pZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAg
cmV0dXJuIG5ldyAoZ2xvYmFsRGF0YSkgRGVsZXRlRG90Tm9kZShnbG9iYWxEYXRhLCBkb3QtPmJh
c2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZv
dCk7CiB9CiAKLXN0YXRpYyBQcm9wZXJ0eU5vZGUqIG1ha2VHZXR0ZXJPclNldHRlclByb3BlcnR5
Tm9kZSh2b2lkKiBnbG9iYWxQdHIsIGNvbnN0IElkZW50aWZpZXImIGdldE9yU2V0LCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUq
IGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKK3N0YXRpYyBQcm9wZXJ0eU5vZGUqIG1h
a2VHZXR0ZXJPclNldHRlclByb3BlcnR5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNv
bnN0IElkZW50aWZpZXImIGdldE9yU2V0LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBQYXJhbWV0
ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSkKIHsKICAgICBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZTsKICAgICBpZiAoZ2V0T3JT
ZXQgPT0gImdldCIpCkBAIC0xOTc0LDEwICsxOTgyLDEwIEBAIHN0YXRpYyBQcm9wZXJ0eU5vZGUq
IG1ha2VHZXR0ZXJPclNldHRlclAKICAgICAgICAgdHlwZSA9IFByb3BlcnR5Tm9kZTo6U2V0dGVy
OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG5ldyAoR0xPQkFMX0RB
VEEpIFByb3BlcnR5Tm9kZShHTE9CQUxfREFUQSwgbmFtZSwgbmV3IChHTE9CQUxfREFUQSkgRnVu
Y0V4cHJOb2RlKEdMT0JBTF9EQVRBLCBHTE9CQUxfREFUQS0+cHJvcGVydHlOYW1lcy0+bnVsbElk
ZW50aWZpZXIsIGJvZHksIHNvdXJjZSwgcGFyYW1zKSwgdHlwZSk7CisgICAgcmV0dXJuIG5ldyAo
Z2xvYmFsRGF0YSkgUHJvcGVydHlOb2RlKGdsb2JhbERhdGEsIG5hbWUsIG5ldyAoZ2xvYmFsRGF0
YSkgRnVuY0V4cHJOb2RlKGdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51
bGxJZGVudGlmaWVyLCBib2R5LCBzb3VyY2UsIHBhcmFtcyksIHR5cGUpOwogfQogCi1zdGF0aWMg
RXhwcmVzc2lvbk5vZGUqIG1ha2VOZWdhdGVOb2RlKHZvaWQqIGdsb2JhbFB0ciwgRXhwcmVzc2lv
bk5vZGUqIG4pCitzdGF0aWMgRXhwcmVzc2lvbk5vZGUqIG1ha2VOZWdhdGVOb2RlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIG4pCiB7CiAgICAgaWYgKG4tPmlzTnVt
YmVyKCkpIHsKICAgICAgICAgTnVtYmVyTm9kZSogbnVtYmVyID0gc3RhdGljX2Nhc3Q8TnVtYmVy
Tm9kZSo+KG4pOwpAQCAtMTk4OCw5MiArMTk5Niw5MiBAQCBzdGF0aWMgRXhwcmVzc2lvbk5vZGUq
IG1ha2VOZWdhdGVOb2RlKHZvCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gbmV3IChH
TE9CQUxfREFUQSkgTmVnYXRlTm9kZShHTE9CQUxfREFUQSwgbik7CisgICAgcmV0dXJuIG5ldyAo
Z2xvYmFsRGF0YSkgTmVnYXRlTm9kZShnbG9iYWxEYXRhLCBuKTsKIH0KIAotc3RhdGljIE51bWJl
ck5vZGUqIG1ha2VOdW1iZXJOb2RlKHZvaWQqIGdsb2JhbFB0ciwgZG91YmxlIGQpCitzdGF0aWMg
TnVtYmVyTm9kZSogbWFrZU51bWJlck5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBkb3Vi
bGUgZCkKIHsKLSAgICByZXR1cm4gbmV3IChHTE9CQUxfREFUQSkgTnVtYmVyTm9kZShHTE9CQUxf
REFUQSwgZCk7CisgICAgcmV0dXJuIG5ldyAoZ2xvYmFsRGF0YSkgTnVtYmVyTm9kZShnbG9iYWxE
YXRhLCBkKTsKIH0KIAotc3RhdGljIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0d2lzZU5vdE5vZGUo
dm9pZCogZ2xvYmFsUHRyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKK3N0YXRpYyBFeHByZXNzaW9u
Tm9kZSogbWFrZUJpdHdpc2VOb3ROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIpCiB7CiAgICAgaWYgKGV4cHItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJl
dHVybiBtYWtlTnVtYmVyTm9kZShnbG9iYWxQdHIsIH50b0ludDMyKHN0YXRpY19jYXN0PE51bWJl
ck5vZGUqPihleHByKS0+dmFsdWUoKSkpOwotICAgIHJldHVybiBuZXcgKEdMT0JBTF9EQVRBKSBC
aXR3aXNlTm90Tm9kZShHTE9CQUxfREFUQSwgZXhwcik7CisgICAgICAgIHJldHVybiBtYWtlTnVt
YmVyTm9kZShnbG9iYWxEYXRhLCB+dG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhw
ciktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4gbmV3IChnbG9iYWxEYXRhKSBCaXR3aXNlTm90Tm9k
ZShnbG9iYWxEYXRhLCBleHByKTsKIH0KIAotc3RhdGljIEV4cHJlc3Npb25Ob2RlKiBtYWtlTXVs
dE5vZGUodm9pZCogZ2xvYmFsUHRyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorc3RhdGljIEV4cHJlc3Npb25O
b2RlKiBtYWtlTXVsdE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQogewogICAgIGV4cHIxID0gZXhwcjEtPnN0cmlwVW5hcnlQbHVzKCk7CiAgICAgZXhwcjIgPSBl
eHByMi0+c3RyaXBVbmFyeVBsdXMoKTsKIAogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBl
eHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VOdW1iZXJOb2RlKGdsb2JhbFB0
ciwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAqIHN0YXRpY19jYXN0
PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOworICAgICAgICByZXR1cm4gbWFrZU51bWJl
ck5vZGUoZ2xvYmFsRGF0YSwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUo
KSAqIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOwogCiAgICAgaWYg
KGV4cHIxLT5pc051bWJlcigpICYmIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZh
bHVlKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIG5ldyAoR0xPQkFMX0RBVEEpIFVuYXJ5UGx1c05v
ZGUoR0xPQkFMX0RBVEEsIGV4cHIyKTsKKyAgICAgICAgcmV0dXJuIG5ldyAoZ2xvYmFsRGF0YSkg
VW5hcnlQbHVzTm9kZShnbG9iYWxEYXRhLCBleHByMik7CiAKICAgICBpZiAoZXhwcjItPmlzTnVt
YmVyKCkgJiYgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSA9PSAxKQot
ICAgICAgICByZXR1cm4gbmV3IChHTE9CQUxfREFUQSkgVW5hcnlQbHVzTm9kZShHTE9CQUxfREFU
QSwgZXhwcjEpOworICAgICAgICByZXR1cm4gbmV3IChnbG9iYWxEYXRhKSBVbmFyeVBsdXNOb2Rl
KGdsb2JhbERhdGEsIGV4cHIxKTsKIAotICAgIHJldHVybiBuZXcgKEdMT0JBTF9EQVRBKSBNdWx0
Tm9kZShHTE9CQUxfREFUQSwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAg
ICByZXR1cm4gbmV3IChnbG9iYWxEYXRhKSBNdWx0Tm9kZShnbG9iYWxEYXRhLCBleHByMSwgZXhw
cjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1zdGF0aWMgRXhwcmVzc2lvbk5vZGUqIG1h
a2VEaXZOb2RlKHZvaWQqIGdsb2JhbFB0ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK3N0YXRpYyBFeHByZXNz
aW9uTm9kZSogbWFrZURpdk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQogewogICAgIGV4cHIxID0gZXhwcjEtPnN0cmlwVW5hcnlQbHVzKCk7CiAgICAgZXhwcjIg
PSBleHByMi0+c3RyaXBVbmFyeVBsdXMoKTsKIAogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAm
JiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VOdW1iZXJOb2RlKGdsb2Jh
bFB0ciwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAvIHN0YXRpY19j
YXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOwotICAgIHJldHVybiBuZXcgKEdMT0JB
TF9EQVRBKSBEaXZOb2RlKEdMT0JBTF9EQVRBLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOworICAgICAgICByZXR1cm4gbWFrZU51bWJlck5vZGUoZ2xvYmFsRGF0YSwgc3RhdGlj
X2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAvIHN0YXRpY19jYXN0PE51bWJlck5v
ZGUqPihleHByMiktPnZhbHVlKCkpOworICAgIHJldHVybiBuZXcgKGdsb2JhbERhdGEpIERpdk5v
ZGUoZ2xvYmFsRGF0YSwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAot
c3RhdGljIEV4cHJlc3Npb25Ob2RlKiBtYWtlQWRkTm9kZSh2b2lkKiBnbG9iYWxQdHIsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCitzdGF0aWMgRXhwcmVzc2lvbk5vZGUqIG1ha2VBZGROb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVy
KCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBtYWtlTnVtYmVyTm9kZShn
bG9iYWxQdHIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgKyBzdGF0
aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKLSAgICByZXR1cm4gbmV3IChH
TE9CQUxfREFUQSkgQWRkTm9kZShHTE9CQUxfREFUQSwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VOdW1iZXJOb2RlKGdsb2JhbERhdGEsIHN0
YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgKyBzdGF0aWNfY2FzdDxOdW1i
ZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKKyAgICByZXR1cm4gbmV3IChnbG9iYWxEYXRhKSBB
ZGROb2RlKGdsb2JhbERhdGEsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9
CiAKLXN0YXRpYyBFeHByZXNzaW9uTm9kZSogbWFrZVN1Yk5vZGUodm9pZCogZ2xvYmFsUHRyLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKQorc3RhdGljIEV4cHJlc3Npb25Ob2RlKiBtYWtlU3ViTm9kZShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgZXhwcjEgPSBleHByMS0+
c3RyaXBVbmFyeVBsdXMoKTsKICAgICBleHByMiA9IGV4cHIyLT5zdHJpcFVuYXJ5UGx1cygpOwog
CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAg
ICByZXR1cm4gbWFrZU51bWJlck5vZGUoZ2xvYmFsUHRyLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2Rl
Kj4oZXhwcjEpLT52YWx1ZSgpIC0gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFs
dWUoKSk7Ci0gICAgcmV0dXJuIG5ldyAoR0xPQkFMX0RBVEEpIFN1Yk5vZGUoR0xPQkFMX0RBVEEs
IGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBtYWtl
TnVtYmVyTm9kZShnbG9iYWxEYXRhLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52
YWx1ZSgpIC0gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7CisgICAg
cmV0dXJuIG5ldyAoZ2xvYmFsRGF0YSkgU3ViTm9kZShnbG9iYWxEYXRhLCBleHByMSwgZXhwcjIs
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1zdGF0aWMgRXhwcmVzc2lvbk5vZGUqIG1ha2VM
ZWZ0U2hpZnROb2RlKHZvaWQqIGdsb2JhbFB0ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK3N0YXRpYyBFeHBy
ZXNzaW9uTm9kZSogbWFrZUxlZnRTaGlmdE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNO
dW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VOdW1iZXJOb2RlKGdsb2JhbFB0ciwgdG9JbnQz
MihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA8PCAodG9VSW50MzIo
c3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7Ci0gICAg
cmV0dXJuIG5ldyAoR0xPQkFMX0RBVEEpIExlZnRTaGlmdE5vZGUoR0xPQkFMX0RBVEEsIGV4cHIx
LCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBtYWtlTnVtYmVy
Tm9kZShnbG9iYWxEYXRhLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSkt
PnZhbHVlKCkpIDw8ICh0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52
YWx1ZSgpKSAmIDB4MWYpKTsKKyAgICByZXR1cm4gbmV3IChnbG9iYWxEYXRhKSBMZWZ0U2hpZnRO
b2RlKGdsb2JhbERhdGEsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAK
LXN0YXRpYyBFeHByZXNzaW9uTm9kZSogbWFrZVJpZ2h0U2hpZnROb2RlKHZvaWQqIGdsb2JhbFB0
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cykKK3N0YXRpYyBFeHByZXNzaW9uTm9kZSogbWFrZVJpZ2h0U2hpZnRO
b2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBpZiAo
ZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBt
YWtlTnVtYmVyTm9kZShnbG9iYWxQdHIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KGV4cHIxKS0+dmFsdWUoKSkgPj4gKHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihl
eHByMiktPnZhbHVlKCkpICYgMHgxZikpOwotICAgIHJldHVybiBuZXcgKEdMT0JBTF9EQVRBKSBS
aWdodFNoaWZ0Tm9kZShHTE9CQUxfREFUQSwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VOdW1iZXJOb2RlKGdsb2JhbERhdGEsIHRvSW50MzIo
c3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPj4gKHRvVUludDMyKHN0
YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOworICAgIHJl
dHVybiBuZXcgKGdsb2JhbERhdGEpIFJpZ2h0U2hpZnROb2RlKGdsb2JhbERhdGEsIGV4cHIxLCBl
eHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLS8qIGNhbGxlZCBieSB5eXBhcnNlIG9u
IGVycm9yICovCi1pbnQgeXllcnJvcihjb25zdCBjaGFyICopCisvLyBDYWxsZWQgYnkgeXlwYXJz
ZSBvbiBlcnJvci4KK2ludCB5eWVycm9yKGNvbnN0IGNoYXIqKQogewogICAgIHJldHVybiAxOwog
fQogCi0vKiBtYXkgd2UgYXV0b21hdGljYWxseSBpbnNlcnQgYSBzZW1pY29sb24gPyAqLworLy8g
TWF5IHdlIGF1dG9tYXRpY2FsbHkgaW5zZXJ0IGEgc2VtaWNvbG9uPwogc3RhdGljIGJvb2wgYWxs
b3dBdXRvbWF0aWNTZW1pY29sb24oTGV4ZXImIGxleGVyLCBpbnQgeXljaGFyKQogewogICAgIHJl
dHVybiB5eWNoYXIgPT0gQ0xPU0VCUkFDRSB8fCB5eWNoYXIgPT0gMCB8fCBsZXhlci5wcmV2VGVy
bWluYXRvcigpOwogfQogCi1zdGF0aWMgRXhwcmVzc2lvbk5vZGUqIGNvbWJpbmVDb21tYU5vZGVz
KHZvaWQqIGdsb2JhbFB0ciwgRXhwcmVzc2lvbk5vZGUqIGxpc3QsIEV4cHJlc3Npb25Ob2RlKiBp
bml0KQorc3RhdGljIEV4cHJlc3Npb25Ob2RlKiBjb21iaW5lQ29tbWFOb2RlcyhKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBsaXN0LCBFeHByZXNzaW9uTm9kZSogaW5p
dCkKIHsKICAgICBpZiAoIWxpc3QpCiAgICAgICAgIHJldHVybiBpbml0OwpAQCAtMjA4MSwxNyAr
MjA4OSwxNSBAQCBzdGF0aWMgRXhwcmVzc2lvbk5vZGUqIGNvbWJpbmVDb21tYU5vZGVzCiAgICAg
ICAgIHN0YXRpY19jYXN0PENvbW1hTm9kZSo+KGxpc3QpLT5hcHBlbmQoaW5pdCk7CiAgICAgICAg
IHJldHVybiBsaXN0OwogICAgIH0KLSAgICByZXR1cm4gbmV3IChHTE9CQUxfREFUQSkgQ29tbWFO
b2RlKEdMT0JBTF9EQVRBLCBsaXN0LCBpbml0KTsKKyAgICByZXR1cm4gbmV3IChnbG9iYWxEYXRh
KSBDb21tYU5vZGUoZ2xvYmFsRGF0YSwgbGlzdCwgaW5pdCk7CiB9CiAKIC8vIFdlIHR1cm4gdmFy
aWFibGUgZGVjbGFyYXRpb25zIGludG8gZWl0aGVyIGFzc2lnbm1lbnRzIG9yIGVtcHR5CiAvLyBz
dGF0ZW1lbnRzICh3aGljaCBsYXRlciBnZXQgc3RyaXBwZWQgb3V0KSwgYmVjYXVzZSB0aGUgYWN0
dWFsCiAvLyBkZWNsYXJhdGlvbiB3b3JrIGlzIGhvaXN0ZWQgdXAgdG8gdGhlIHN0YXJ0IG9mIHRo
ZSBmdW5jdGlvbiBib2R5Ci1zdGF0aWMgU3RhdGVtZW50Tm9kZSogbWFrZVZhclN0YXRlbWVudE5v
ZGUodm9pZCogZ2xvYmFsUHRyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKK3N0YXRpYyBTdGF0ZW1l
bnROb2RlKiBtYWtlVmFyU3RhdGVtZW50Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4
cHJlc3Npb25Ob2RlKiBleHByKQogewogICAgIGlmICghZXhwcikKLSAgICAgICAgcmV0dXJuIG5l
dyAoR0xPQkFMX0RBVEEpIEVtcHR5U3RhdGVtZW50Tm9kZShHTE9CQUxfREFUQSk7Ci0gICAgcmV0
dXJuIG5ldyAoR0xPQkFMX0RBVEEpIFZhclN0YXRlbWVudE5vZGUoR0xPQkFMX0RBVEEsIGV4cHIp
OworICAgICAgICByZXR1cm4gbmV3IChnbG9iYWxEYXRhKSBFbXB0eVN0YXRlbWVudE5vZGUoZ2xv
YmFsRGF0YSk7CisgICAgcmV0dXJuIG5ldyAoZ2xvYmFsRGF0YSkgVmFyU3RhdGVtZW50Tm9kZShn
bG9iYWxEYXRhLCBleHByKTsKIH0KLQotI3VuZGVmIEdMT0JBTF9EQVRBCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJKHJldmlzaW9uIDQ3MjUzKQorKysgSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTU0LDYgKzE1NCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCisgICAgaW5s
aW5lIFByb3BlcnR5Tm9kZTo6UHJvcGVydHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
ZG91YmxlIG5hbWUsIEV4cHJlc3Npb25Ob2RlKiBhc3NpZ24sIFR5cGUgdHlwZSkKKyAgICAgICAg
OiBtX25hbWUoSWRlbnRpZmllcihnbG9iYWxEYXRhLCBVU3RyaW5nOjpmcm9tKG5hbWUpKSkKKyAg
ICAgICAgLCBtX2Fzc2lnbihhc3NpZ24pCisgICAgICAgICwgbV90eXBlKHR5cGUpCisgICAgewor
ICAgIH0KKwogICAgIGlubGluZSBQcm9wZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgUHJvcGVydHlOb2RlKiBub2RlKQogICAgICAgICA6IE5v
ZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgLCBtX25vZGUobm9kZSkKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCShyZXZpc2lvbiA0NzI1MykKKysrIEphdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MjksNiArNDI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGVudW0gVHlwZSB7IENvbnN0YW50LCBHZXR0ZXIsIFNldHRlciB9OwogCiAgICAgICAgIFBy
b3BlcnR5Tm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBFeHByZXNz
aW9uTm9kZSogdmFsdWUsIFR5cGUpOworICAgICAgICBQcm9wZXJ0eU5vZGUoSlNHbG9iYWxEYXRh
KiwgZG91YmxlIG5hbWUsIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSwgVHlwZSk7CiAKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCg==
</data>
<flag name="review"
          id="19003"
          type_id="1"
          status="+"
          setter="staikos"
    />
          </attachment>
      

    </bug>

</bugzilla>