<?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>155424</bug_id>
          
          <creation_ts>2016-03-13 23:33:20 -0700</creation_ts>
          <short_desc>Add slotchange event</short_desc>
          <delta_ts>2016-03-14 05:02:14 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1174322</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-13 23:33:20 -0700</bug_when>
    <thetext>Add the support for slotchange event as discussed in https://github.com/w3c/webcomponents/issues/288.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174323</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-13 23:34:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/24997534&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174339</commentid>
    <comment_count>2</comment_count>
      <attachid>273933</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-14 00:32:39 -0700</bug_when>
    <thetext>Created attachment 273933
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174357</commentid>
    <comment_count>3</comment_count>
      <attachid>273943</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-14 01:56:15 -0700</bug_when>
    <thetext>Created attachment 273943
Implements the feature</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174358</commentid>
    <comment_count>4</comment_count>
      <attachid>273944</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-14 02:01:16 -0700</bug_when>
    <thetext>Created attachment 273944
Updated a change log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174364</commentid>
    <comment_count>5</comment_count>
      <attachid>273944</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-03-14 02:24:38 -0700</bug_when>
    <thetext>Comment on attachment 273944
Updated a change log

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

&gt; Source/WebCore/dom/ShadowRoot.h:97
&gt; +    void hostChildElementDidChangeSlotAttr(const AtomicString&amp; oldValue, const AtomicString&amp; newValue);

Attr -&gt; Attribute

&gt; Source/WebCore/dom/SlotAssignment.cpp:131
&gt; +static void recursivelyFireSlotChangeEvent(HTMLSlotElement* slotElement)

HTMLSlotElement&amp;

&gt; Source/WebCore/dom/SlotAssignment.cpp:136
&gt; +    if (auto* slotParent = slotElement-&gt;parentElement()) {
&gt; +        if (auto* shadowRootOfSlotParent = slotParent-&gt;shadowRoot())

I don&apos;t understand this. Why not just slot elements shadow root? Real element parent of a slot shouldn&apos;t have any special status.

If this is valid please add comment explaining it.

This could use early returns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174368</commentid>
    <comment_count>6</comment_count>
      <attachid>273944</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-14 03:01:40 -0700</bug_when>
    <thetext>Comment on attachment 273944
Updated a change log

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

Thanks for the review!

&gt;&gt; Source/WebCore/dom/ShadowRoot.h:97
&gt;&gt; +    void hostChildElementDidChangeSlotAttr(const AtomicString&amp; oldValue, const AtomicString&amp; newValue);
&gt; 
&gt; Attr -&gt; Attribute

Fixed.

&gt;&gt; Source/WebCore/dom/SlotAssignment.cpp:131
&gt;&gt; +static void recursivelyFireSlotChangeEvent(HTMLSlotElement* slotElement)
&gt; 
&gt; HTMLSlotElement&amp;

Fixed.

&gt;&gt; Source/WebCore/dom/SlotAssignment.cpp:136
&gt;&gt; +        if (auto* shadowRootOfSlotParent = slotParent-&gt;shadowRoot())
&gt; 
&gt; I don&apos;t understand this. Why not just slot elements shadow root? Real element parent of a slot shouldn&apos;t have any special status.
&gt; 
&gt; If this is valid please add comment explaining it.
&gt; 
&gt; This could use early returns.

This is the case in which slotElement&apos;s parent has a shadow root
and slotElement is assigned to a slot in that shadow root as we talked on IRC.

Fixed the code to early returns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174375</commentid>
    <comment_count>7</comment_count>
      <attachid>273950</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-14 03:14:14 -0700</bug_when>
    <thetext>Created attachment 273950
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174377</commentid>
    <comment_count>8</comment_count>
      <attachid>273950</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-14 03:14:33 -0700</bug_when>
    <thetext>Comment on attachment 273950
Patch for landing

Wait for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174392</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-14 03:58:50 -0700</bug_when>
    <thetext>I don&apos;t think the failure of editing/pasteboard/paste-noplugin-xhtml.xhtml is related to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174412</commentid>
    <comment_count>10</comment_count>
      <attachid>273950</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-14 05:02:09 -0700</bug_when>
    <thetext>Comment on attachment 273950
Patch for landing

Clearing flags on attachment: 273950

Committed r198115: &lt;http://trac.webkit.org/changeset/198115&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174413</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-14 05:02:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273933</attachid>
            <date>2016-03-14 00:32:39 -0700</date>
            <delta_ts>2016-03-14 01:56:11 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>wip155424.patch</filename>
            <type>text/plain</type>
            <size>20453</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9TaGFkb3dSb290LWludGVyZmFjZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL1No
YWRvd1Jvb3QtaW50ZXJmYWNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTk4MDU2KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL1NoYWRvd1Jvb3QtaW50ZXJmYWNlLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVy
bmFsIFVSTCBodHRwczovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rL0xh
eW91dFRlc3RzL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MKIAogUEFTUyBDaGVjayB0aGUgZXhp
c3RlbmNlIG9mIFNoYWRvd1Jvb3QgaW50ZXJmYWNlIAogUEFTUyBTaGFkb3dSb290IG11c3QgaW5o
ZXJpdCBmcm9tIERvY3VtZW50RnJhZ21lbnQgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRv
dy1kb20vU2hhZG93Um9vdC1pbnRlcmZhY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3NoYWRvdy1kb20vU2hhZG93Um9vdC1pbnRlcmZhY2UuaHRtbAkocmV2aXNpb24gMTk4
MDU2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL1NoYWRvd1Jvb3QtaW50ZXJmYWNl
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsNyArNyw3IEBACiA8bGluayByZWw9ImhlbHAiIGhy
ZWY9Imh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyN0aGUt
c2hhZG93cm9vdC1pbnRlcmZhY2UiPgogPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0n
aHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVuay9MYXlvdXRUZXN0
cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KKzxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJl
Zj0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+CiA8L2hlYWQ+CiA8Ym9keT4KIDxk
aXYgaWQ9ImxvZyI+PC9kaXY+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9u
IDE5ODA1NikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxNzIsNiArNDE3MiwxMSBAQAogICAgIG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQo
V1RGTW92ZShldmVudCkpOwogfQogCit2b2lkIERvY3VtZW50OjplbnF1ZXVlU2xvdGNoYW5nZUV2
ZW50KFJlZjxFdmVudD4mJiBldmVudCkKK3sKKyAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50
KFdURk1vdmUoZXZlbnQpKTsKK30KKwogUmVmUHRyPEV2ZW50PiBEb2N1bWVudDo6Y3JlYXRlRXZl
bnQoY29uc3QgU3RyaW5nJiB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBQbGVh
c2UgZG8gKm5vdCogYWRkIG5ldyBldmVudCBjbGFzc2VzIHRvIHRoaXMgZnVuY3Rpb24gdW5sZXNz
IHRoZXkgYXJlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMTk4MDU2KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwODgsNiAr
MTA4OCw3IEBACiAgICAgdm9pZCBlbnF1ZXVlV2luZG93RXZlbnQoUmVmPEV2ZW50PiYmKTsKICAg
ICB2b2lkIGVucXVldWVEb2N1bWVudEV2ZW50KFJlZjxFdmVudD4mJik7CiAgICAgdm9pZCBlbnF1
ZXVlT3ZlcmZsb3dFdmVudChSZWY8RXZlbnQ+JiYpOworICAgIHZvaWQgZW5xdWV1ZVNsb3RjaGFu
Z2VFdmVudChSZWY8RXZlbnQ+JiYpOwogICAgIHZvaWQgZW5xdWV1ZVBhZ2VzaG93RXZlbnQoUGFn
ZXNob3dFdmVudFBlcnNpc3RlbmNlKTsKICAgICB2b2lkIGVucXVldWVIYXNoY2hhbmdlRXZlbnQo
Y29uc3QgU3RyaW5nJiBvbGRVUkwsIGNvbnN0IFN0cmluZyYgbmV3VVJMKTsKICAgICB2b2lkIGVu
cXVldWVQb3BzdGF0ZUV2ZW50KFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgc3RhdGVP
YmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTk4MDU2KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4
Myw3IEBACiAjaW5jbHVkZSAiU2VsZWN0b3JRdWVyeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiU2ltdWxhdGVkQ2xpY2suaCIKKyNpbmNsdWRlICJTbG90QXNzaWdubWVudC5o
IgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIu
aCIKICNpbmNsdWRlICJTdHlsZVRyZWVSZXNvbHZlci5oIgpAQCAtMTI1NCw3ICsxMjU1LDcgQEAK
ICAgICAgICAgZWxzZSBpZiAobmFtZSA9PSBIVE1MTmFtZXM6OnNsb3RBdHRyKSB7CiAgICAgICAg
ICAgICBpZiAoYXV0byogcGFyZW50ID0gcGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGF1dG8qIHNoYWRvd1Jvb3QgPSBwYXJlbnQtPnNoYWRvd1Jvb3QoKSkKLSAgICAgICAg
ICAgICAgICAgICAgc2hhZG93Um9vdC0+aW52YWxpZGF0ZVNsb3RBc3NpZ25tZW50cygpOworICAg
ICAgICAgICAgICAgICAgICBzaGFkb3dSb290LT5ob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlU2xv
dEF0dHIob2xkVmFsdWUsIG5ld1ZhbHVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2Vu
ZGlmCkBAIC0xNDk2LDYgKzE0OTcsMTEgQEAKICAgICAgICAgc2V0Q29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXModHJ1ZSk7CiAjZW5kaWYK
IAorICAgIGlmIChwYXJlbnROb2RlKCkgPT0gJmluc2VydGlvblBvaW50KSB7CisgICAgICAgIGlm
IChhdXRvKiBzaGFkb3dSb290ID0gcGFyZW50Tm9kZSgpLT5zaGFkb3dSb290KCkpCisgICAgICAg
ICAgICBzaGFkb3dSb290LT5ob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlKCp0aGlzKTsKKyAgICB9
CisKICAgICBpZiAoIWluc2VydGlvblBvaW50LmlzSW5UcmVlU2NvcGUoKSkKICAgICAgICAgcmV0
dXJuIEluc2VydGlvbkRvbmU7CiAKQEAgLTE1NzUsNiArMTU4MSwxMSBAQAogICAgICAgICB9CiAg
ICAgfQogCisgICAgaWYgKCFwYXJlbnROb2RlKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNoYWRv
d1Jvb3QgPSBpbnNlcnRpb25Qb2ludC5zaGFkb3dSb290KCkpCisgICAgICAgICAgICBzaGFkb3dS
b290LT5ob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlKCp0aGlzKTsKKyAgICB9CisKICAgICBDb250
YWluZXJOb2RlOjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiAKICAgICBpZiAoaGFzUGVu
ZGluZ1Jlc291cmNlcygpKQpAQCAtMTgzMiwxMyArMTg0MywxNSBAQAogICAgICAgICBzd2l0Y2gg
KGNoYW5nZS50eXBlKSB7CiAgICAgICAgIGNhc2UgRWxlbWVudEluc2VydGVkOgogICAgICAgICBj
YXNlIEVsZW1lbnRSZW1vdmVkOgorICAgICAgICAgICAgLy8gRm9yIGVsZW1lbnRzLCB3ZSBub3Rp
Znkgc2hhZG93Um9vdCBpbiBFbGVtZW50OjppbnNlcnRlZEludG8gYW5kIEVsZW1lbnQ6OnJlbW92
ZWRGcm9tLgorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWxsQ2hpbGRyZW5SZW1v
dmVkOgotICAgICAgICAgICAgc2hhZG93Um9vdC0+aW52YWxpZGF0ZVNsb3RBc3NpZ25tZW50cygp
OworICAgICAgICAgICAgc2hhZG93Um9vdC0+ZGlkUmVtb3ZlQWxsQ2hpbGRyZW5PZlNoYWRvd0hv
c3QoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRleHRJbnNlcnRlZDoKICAg
ICAgICAgY2FzZSBUZXh0UmVtb3ZlZDoKICAgICAgICAgY2FzZSBUZXh0Q2hhbmdlZDoKLSAgICAg
ICAgICAgIHNoYWRvd1Jvb3QtPmludmFsaWRhdGVEZWZhdWx0U2xvdEFzc2lnbm1lbnRzKCk7Cisg
ICAgICAgICAgICBzaGFkb3dSb290LT5kaWRDaGFuZ2VEZWZhdWx0U2xvdCgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9uQ29udGVudHNDaGlsZENoYW5nZWQ6CiAgICAgICAg
ICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAkocmV2aXNpb24gMTk4MDU2KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEw
Myw4IEBACiAgICAgICAgIHx8IG1fdHlwZSA9PSBldmVudE5hbWVzKCkucmVzaXplRXZlbnQKICAg
ICAgICAgfHwgbV90eXBlID09IGV2ZW50TmFtZXMoKS5zY3JvbGxFdmVudAogICAgICAgICB8fCBt
X3R5cGUgPT0gZXZlbnROYW1lcygpLnNlbGVjdEV2ZW50Ci0gICAgICAgIHx8IG1fdHlwZSA9PSBl
dmVudE5hbWVzKCkuc2VsZWN0c3RhcnRFdmVudDsKKyAgICAgICAgfHwgbV90eXBlID09IGV2ZW50
TmFtZXMoKS5zZWxlY3RzdGFydEV2ZW50CisgICAgICAgIHx8IG1fdHlwZSA9PSBldmVudE5hbWVz
KCkuc2xvdGNoYW5nZUV2ZW50OwogfQogCiBFdmVudEludGVyZmFjZSBFdmVudDo6ZXZlbnRJbnRl
cmZhY2UoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCShyZXZpc2lvbiAxOTgw
NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTUsNiArMTk1LDcgQEAKICAgICBtYWNybyhzZWxlY3RzdGFydCkgXAogICAgIG1hY3JvKHNo
b3cpIFwKICAgICBtYWNybyhzaWduYWxpbmdzdGF0ZWNoYW5nZSkgXAorICAgIG1hY3JvKHNsb3Rj
aGFuZ2UpIFwKICAgICBtYWNybyhzb3VuZGVuZCkgXAogICAgIG1hY3JvKHNvdW5kc3RhcnQpIFwK
ICAgICBtYWNybyhzb3VyY2VjbG9zZSkgXApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cAkocmV2aXNpb24gMTk4MDU2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsMTggKzIwMCw2IEBACiAgICAgcmV0dXJuIG1fc2xvdEFz
c2lnbm1lbnQtPnJlbW92ZVNsb3RFbGVtZW50QnlOYW1lKG5hbWUsIHNsb3QsICp0aGlzKTsKIH0K
IAotdm9pZCBTaGFkb3dSb290OjppbnZhbGlkYXRlU2xvdEFzc2lnbm1lbnRzKCkKLXsKLSAgICBp
ZiAobV9zbG90QXNzaWdubWVudCkKLSAgICAgICAgbV9zbG90QXNzaWdubWVudC0+aW52YWxpZGF0
ZSgqdGhpcyk7Ci19Ci0KLXZvaWQgU2hhZG93Um9vdDo6aW52YWxpZGF0ZURlZmF1bHRTbG90QXNz
aWdubWVudHMoKQotewotICAgIGlmIChtX3Nsb3RBc3NpZ25tZW50KQotICAgICAgICBtX3Nsb3RB
c3NpZ25tZW50LT5pbnZhbGlkYXRlRGVmYXVsdFNsb3QoKnRoaXMpOwotfQotCiBjb25zdCBWZWN0
b3I8Tm9kZSo+KiBTaGFkb3dSb290Ojphc3NpZ25lZE5vZGVzRm9yU2xvdChjb25zdCBIVE1MU2xv
dEVsZW1lbnQmIHNsb3QpCiB7CiAgICAgaWYgKCFtX3Nsb3RBc3NpZ25tZW50KQpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5oCShyZXZpc2lvbiAxOTgwNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw4ICs5MSwxMSBAQAogICAgIHZv
aWQgYWRkU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiwgSFRNTFNsb3RFbGVt
ZW50Jik7CiAgICAgdm9pZCByZW1vdmVTbG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9taWNTdHJp
bmcmLCBIVE1MU2xvdEVsZW1lbnQmKTsKIAotICAgIHZvaWQgaW52YWxpZGF0ZVNsb3RBc3NpZ25t
ZW50cygpOwotICAgIHZvaWQgaW52YWxpZGF0ZURlZmF1bHRTbG90QXNzaWdubWVudHMoKTsKKyAg
ICB2b2lkIGRpZFJlbW92ZUFsbENoaWxkcmVuT2ZTaGFkb3dIb3N0KCk7CisgICAgdm9pZCBkaWRD
aGFuZ2VEZWZhdWx0U2xvdCgpOworICAgIHZvaWQgaG9zdENoaWxkRWxlbWVudERpZENoYW5nZShj
b25zdCBFbGVtZW50Jik7CisgICAgdm9pZCBob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlU2xvdEF0
dHIoY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdW
YWx1ZSk7CisgICAgdm9pZCBpbm5lclNsb3REaWRDaGFuZ2UoY29uc3QgQXRvbWljU3RyaW5nJik7
CiAKICAgICBjb25zdCBWZWN0b3I8Tm9kZSo+KiBhc3NpZ25lZE5vZGVzRm9yU2xvdChjb25zdCBI
VE1MU2xvdEVsZW1lbnQmKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RB
c3NpZ25tZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2ln
bm1lbnQuY3BwCShyZXZpc2lvbiAxOTgwNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFz
c2lnbm1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMiArNTAsMTAgQEAKIH0KIAogU2xv
dEFzc2lnbm1lbnQ6OlNsb3RBc3NpZ25tZW50KCkKLSAgICA6IG1fc2xvdE5hbWVGdW5jdGlvbihz
bG90TmFtZUZyb21TbG90QXR0cmlidXRlKQogewogfQogCi1TbG90QXNzaWdubWVudDo6U2xvdEFz
c2lnbm1lbnQoU2xvdE5hbWVGdW5jdGlvbiBmdW5jdGlvbikKLSAgICA6IG1fc2xvdE5hbWVGdW5j
dGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKK1Nsb3RBc3NpZ25tZW50Ojp+U2xvdEFzc2lnbm1lbnQo
KQogewogfQogCkBAIC02NCwxMCArNjIsNyBAQAogICAgIGlmICghaXM8VGV4dD4obm9kZSkgJiYg
IWlzPEVsZW1lbnQ+KG5vZGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICgh
bV9zbG90QXNzaWdubWVudHNJc1ZhbGlkKQotICAgICAgICBhc3NpZ25TbG90cyhzaGFkb3dSb290
KTsKLQotICAgIGF1dG8gc2xvdE5hbWUgPSBtX3Nsb3ROYW1lRnVuY3Rpb24obm9kZSk7CisgICAg
YXV0byBzbG90TmFtZSA9IHNsb3ROYW1lRm9ySG9zdENoaWxkKG5vZGUpOwogICAgIGlmICghc2xv
dE5hbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xMzYsMTcgKzEzMSw1OCBAQAog
ICAgIEFTU0VSVChzbG90SW5mby5lbGVtZW50IHx8IG1fbmVlZHNUb1Jlc29sdmVTbG90RWxlbWVu
dHMpOwogfQogCitzdGF0aWMgdm9pZCByZWN1cnNpdmVseUZpcmVTbG90Q2hhbmdlRXZlbnQoSFRN
TFNsb3RFbGVtZW50KiBzbG90RWxlbWVudCkKK3sKKyAgICBzbG90RWxlbWVudC0+ZW5xdWV1ZVNs
b3RDaGFuZ2VFdmVudCgpOworCisgICAgaWYgKGF1dG8qIHNsb3RQYXJlbnQgPSBzbG90RWxlbWVu
dC0+cGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBzaGFkb3dSb290T2ZTbG90
UGFyZW50ID0gc2xvdFBhcmVudC0+c2hhZG93Um9vdCgpKQorICAgICAgICAgICAgc2hhZG93Um9v
dE9mU2xvdFBhcmVudC0+aW5uZXJTbG90RGlkQ2hhbmdlKHNsb3RFbGVtZW50LT5mYXN0R2V0QXR0
cmlidXRlKHNsb3RBdHRyKSk7CisgICAgfQorfQorCit2b2lkIFNsb3RBc3NpZ25tZW50OjpkaWRD
aGFuZ2VTbG90KGNvbnN0IEF0b21pY1N0cmluZyYgc2xvdEF0dHJWYWx1ZSwgQ2hhbmdlVHlwZSBj
aGFuZ2VUeXBlLCBTaGFkb3dSb290JiBzaGFkb3dSb290KQoreworICAgIGF1dG8mIHNsb3ROYW1l
ID0gc2xvdE5hbWVGcm9tQXR0cmlidXRlVmFsdWUoc2xvdEF0dHJWYWx1ZSk7CisgICAgYXV0byBp
dCA9IG1fc2xvdHMuZmluZChzbG90TmFtZSk7CisgICAgaWYgKGl0ID09IG1fc2xvdHMuZW5kKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIEhUTUxTbG90RWxlbWVudCogc2xvdEVsZW1lbnQgPSBm
aW5kRmlyc3RTbG90RWxlbWVudCgqaXQtPnZhbHVlLCBzaGFkb3dSb290KTsKKyAgICBpZiAoIXNs
b3RFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoY2hhbmdlVHlwZSA9PSBDaGFu
Z2VUeXBlOjpEaXJlY3RDaGlsZCkgeworICAgICAgICBzaGFkb3dSb290Lmhvc3QoKS0+c2V0TmVl
ZHNTdHlsZVJlY2FsYyhSZWNvbnN0cnVjdFJlbmRlclRyZWUpOworICAgICAgICBtX3Nsb3RBc3Np
Z25tZW50c0lzVmFsaWQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoc2hhZG93Um9vdC50eXBl
KCkgPT0gU2hhZG93Um9vdDo6VHlwZTo6VXNlckFnZW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICByZWN1cnNpdmVseUZpcmVTbG90Q2hhbmdlRXZlbnQoc2xvdEVsZW1lbnQpOworfQorCit2b2lk
IFNsb3RBc3NpZ25tZW50OjpkaWRSZW1vdmVBbGxDaGlsZHJlbk9mU2hhZG93SG9zdChTaGFkb3dS
b290JiBzaGFkb3dSb290KQoreworICAgIGRpZENoYW5nZVNsb3QobnVsbEF0b20sIFNsb3RBc3Np
Z25tZW50OjpDaGFuZ2VUeXBlOjpEaXJlY3RDaGlsZCwgc2hhZG93Um9vdCk7Cit9CisKK3ZvaWQg
U2xvdEFzc2lnbm1lbnQ6Omhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoY29uc3QgRWxlbWVudCYg
Y2hpbGRFbGVtZW50LCBTaGFkb3dSb290JiBzaGFkb3dSb290KQoreworICAgIGRpZENoYW5nZVNs
b3QoY2hpbGRFbGVtZW50LmZhc3RHZXRBdHRyaWJ1dGUoc2xvdEF0dHIpLCBDaGFuZ2VUeXBlOjpE
aXJlY3RDaGlsZCwgc2hhZG93Um9vdCk7Cit9CisKIGNvbnN0IFZlY3RvcjxOb2RlKj4qIFNsb3RB
c3NpZ25tZW50Ojphc3NpZ25lZE5vZGVzRm9yU2xvdChjb25zdCBIVE1MU2xvdEVsZW1lbnQmIHNs
b3RFbGVtZW50LCBTaGFkb3dSb290JiBzaGFkb3dSb290KQogewotICAgIGlmICghbV9zbG90QXNz
aWdubWVudHNJc1ZhbGlkKQotICAgICAgICBhc3NpZ25TbG90cyhzaGFkb3dSb290KTsKLQogICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgc2xvdE5hbWUgPSBzbG90TmFtZUZyb21BdHRyaWJ1dGVWYWx1
ZShzbG90RWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKG5hbWVBdHRyKSk7CiAgICAgYXV0byBpdCA9
IG1fc2xvdHMuZmluZChzbG90TmFtZSk7CiAgICAgaWYgKGl0ID09IG1fc2xvdHMuZW5kKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byYgc2xvdEluZm8gPSAqaXQtPnZhbHVl
OworICAgIGlmICghbV9zbG90QXNzaWdubWVudHNJc1ZhbGlkKQorICAgICAgICBhc3NpZ25TbG90
cyhzaGFkb3dSb290KTsKIAogICAgIGlmICghc2xvdEluZm8uYXNzaWduZWROb2Rlcy5zaXplKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTU4LDIwICsxOTQsMTEgQEAKICAgICByZXR1
cm4gJnNsb3RJbmZvLmFzc2lnbmVkTm9kZXM7CiB9CiAKLXZvaWQgU2xvdEFzc2lnbm1lbnQ6Omlu
dmFsaWRhdGUoU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKK2NvbnN0IEF0b21pY1N0cmluZyYgU2xv
dEFzc2lnbm1lbnQ6OnNsb3ROYW1lRm9ySG9zdENoaWxkKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25z
dAogewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBkbyBhIHRhcmdldGVkIHJl
Y29uc3RydWN0aW9uLgotICAgIHNoYWRvd1Jvb3QuaG9zdCgpLT5zZXROZWVkc1N0eWxlUmVjYWxj
KFJlY29uc3RydWN0UmVuZGVyVHJlZSk7Ci0gICAgbV9zbG90QXNzaWdubWVudHNJc1ZhbGlkID0g
ZmFsc2U7CisgICAgcmV0dXJuIHNsb3ROYW1lRnJvbVNsb3RBdHRyaWJ1dGUoY2hpbGQpOwogfQog
Ci12b2lkIFNsb3RBc3NpZ25tZW50OjppbnZhbGlkYXRlRGVmYXVsdFNsb3QoU2hhZG93Um9vdCYg
c2hhZG93Um9vdCkKLXsKLSAgICBhdXRvIGl0ID0gbV9zbG90cy5maW5kKGRlZmF1bHRTbG90TmFt
ZSgpKTsKLSAgICBpZiAoaXQgIT0gbV9zbG90cy5lbmQoKSAmJiBpdC0+dmFsdWUtPmVsZW1lbnRD
b3VudCkKLSAgICAgICAgaW52YWxpZGF0ZShzaGFkb3dSb290KTsgLy8gRklYTUU6IFdlIHNob3Vs
ZCBiZSBhYmxlIHRvIHJlY29uc3RydWN0IG9ubHkgdW5kZXIgdGhlIGRlZmF1bHQgc2xvdC4KLX0K
LQogSFRNTFNsb3RFbGVtZW50KiBTbG90QXNzaWdubWVudDo6ZmluZEZpcnN0U2xvdEVsZW1lbnQo
U2xvdEluZm8mIHNsb3RJbmZvLCBTaGFkb3dSb290JiBzaGFkb3dSb290KQogewogICAgIGlmIChz
bG90SW5mby5zaG91bGRSZXNvbHZlU2xvdEVsZW1lbnQoKSkKQEAgLTE3OSw2ICsyMDYsNyBAQAog
CiAjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghc2xvdEluZm8uZWxlbWVudCB8fCBtX3Nsb3RF
bGVtZW50c0ZvckNvbnNpc3RlbmN5Q2hlY2suY29udGFpbnMoc2xvdEluZm8uZWxlbWVudCkpOwor
ICAgIEFTU0VSVCghIXNsb3RJbmZvLmVsZW1lbnQgPT0gISFzbG90SW5mby5lbGVtZW50Q291bnQp
OwogI2VuZGlmCiAKICAgICByZXR1cm4gc2xvdEluZm8uZWxlbWVudDsKQEAgLTIyNiw3ICsyNTQs
NyBAQAogICAgIGZvciAoYXV0byogY2hpbGQgPSBob3N0LmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKCFpczxUZXh0PigqY2hp
bGQpICYmICFpczxFbGVtZW50PigqY2hpbGQpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGF1dG8gc2xvdE5hbWUgPSBtX3Nsb3ROYW1lRnVuY3Rpb24oKmNoaWxkKTsKKyAgICAgICAg
YXV0byBzbG90TmFtZSA9IHNsb3ROYW1lRm9ySG9zdENoaWxkKCpjaGlsZCk7CiAgICAgICAgIGlm
ICghc2xvdE5hbWUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYXNzaWduVG9TbG90
KCpjaGlsZCwgc2xvdE5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25t
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmgJ
KHJldmlzaW9uIDE5ODA1NikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkgfHwgRU5BQkxFKERFVEFJTFNfRUxFTUVOVCkKIAorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzYsMTggKzM3LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhUTUxTbG90RWxlbWVudDsKIGNsYXNzIE5v
ZGU7Ci1jbGFzcyBTaGFkb3dSb290OwogCiBjbGFzcyBTbG90QXNzaWdubWVudCB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU2xvdEFzc2lnbm1lbnQpOwogcHVibGljOgotICAgIHVzaW5nIFNs
b3ROYW1lRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPEF0b21pY1N0cmluZyAoY29uc3QgTm9kZSYg
Y2hpbGQpPjsKLQogICAgIFNsb3RBc3NpZ25tZW50KCk7Ci0gICAgU2xvdEFzc2lnbm1lbnQoU2xv
dE5hbWVGdW5jdGlvbik7Ci0gICAgflNsb3RBc3NpZ25tZW50KCkgeyB9CisgICAgdmlydHVhbCB+
U2xvdEFzc2lnbm1lbnQoKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRlZmF1
bHRTbG90TmFtZSgpIHsgcmV0dXJuIGVtcHR5QXRvbTsgfQogCkBAIC01NSwxMSArNTMsMTUgQEAK
IAogICAgIHZvaWQgYWRkU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiwgSFRN
TFNsb3RFbGVtZW50JiwgU2hhZG93Um9vdCYpOwogICAgIHZvaWQgcmVtb3ZlU2xvdEVsZW1lbnRC
eU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiwgSFRNTFNsb3RFbGVtZW50JiwgU2hhZG93Um9vdCYp
OworICAgIAorICAgIHZvaWQgZGlkUmVtb3ZlQWxsQ2hpbGRyZW5PZlNoYWRvd0hvc3QoU2hhZG93
Um9vdCYpOworICAgIGVudW0gY2xhc3MgQ2hhbmdlVHlwZSB7IERpcmVjdENoaWxkLCBJbm5lclNs
b3QgfTsKKyAgICB2b2lkIGRpZENoYW5nZVNsb3QoY29uc3QgQXRvbWljU3RyaW5nJiwgQ2hhbmdl
VHlwZSwgU2hhZG93Um9vdCYpOworICAgIHZvaWQgZW5xdWV1ZVNsb3RDaGFuZ2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmLCBTaGFkb3dSb290Jik7CiAKICAgICBjb25zdCBWZWN0b3I8Tm9kZSo+
KiBhc3NpZ25lZE5vZGVzRm9yU2xvdChjb25zdCBIVE1MU2xvdEVsZW1lbnQmLCBTaGFkb3dSb290
Jik7CiAKLSAgICB2b2lkIGludmFsaWRhdGUoU2hhZG93Um9vdCYpOwotICAgIHZvaWQgaW52YWxp
ZGF0ZURlZmF1bHRTbG90KFNoYWRvd1Jvb3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgaG9zdENoaWxk
RWxlbWVudERpZENoYW5nZShjb25zdCBFbGVtZW50JiwgU2hhZG93Um9vdCYpOwogCiBwcml2YXRl
OgogICAgIHN0cnVjdCBTbG90SW5mbyB7CkBAIC03Nyw2ICs3OSw4IEBACiAgICAgICAgIHVuc2ln
bmVkIGVsZW1lbnRDb3VudCB7IDAgfTsKICAgICAgICAgVmVjdG9yPE5vZGUqPiBhc3NpZ25lZE5v
ZGVzOwogICAgIH07CisgICAgCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNsb3RO
YW1lRm9ySG9zdENoaWxkKGNvbnN0IE5vZGUmKSBjb25zdDsKIAogICAgIEhUTUxTbG90RWxlbWVu
dCogZmluZEZpcnN0U2xvdEVsZW1lbnQoU2xvdEluZm8mLCBTaGFkb3dSb290Jik7CiAgICAgdm9p
ZCByZXNvbHZlQWxsU2xvdEVsZW1lbnRzKFNoYWRvd1Jvb3QmKTsKQEAgLTg0LDggKzg4LDYgQEAK
ICAgICB2b2lkIGFzc2lnblNsb3RzKFNoYWRvd1Jvb3QmKTsKICAgICB2b2lkIGFzc2lnblRvU2xv
dChOb2RlJiBjaGlsZCwgY29uc3QgQXRvbWljU3RyaW5nJiBzbG90TmFtZSk7CiAKLSAgICBTbG90
TmFtZUZ1bmN0aW9uIG1fc2xvdE5hbWVGdW5jdGlvbjsKLQogICAgIEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEluZm8+PiBtX3Nsb3RzOwogCiAjaWZuZGVmIE5ERUJV
RwpAQCAtOTYsOCArOTgsNDAgQEAKICAgICBib29sIG1fc2xvdEFzc2lnbm1lbnRzSXNWYWxpZCB7
IGZhbHNlIH07CiB9OwogCitpbmxpbmUgdm9pZCBTaGFkb3dSb290OjpkaWRSZW1vdmVBbGxDaGls
ZHJlbk9mU2hhZG93SG9zdCgpCit7CisgICAgaWYgKG1fc2xvdEFzc2lnbm1lbnQpIC8vIEZJWE1F
OiBUaGlzIGlzIGluY29ycmVjdCB3aGVuIHRoZXJlIHdlcmUgbm8gZWxlbWVudHMgb3IgdGV4dCBu
b2RlcyByZW1vdmVkLgorICAgICAgICBtX3Nsb3RBc3NpZ25tZW50LT5kaWRDaGFuZ2VTbG90KG51
bGxBdG9tLCBTbG90QXNzaWdubWVudDo6Q2hhbmdlVHlwZTo6RGlyZWN0Q2hpbGQsICp0aGlzKTsK
IH0KIAoraW5saW5lIHZvaWQgU2hhZG93Um9vdDo6ZGlkQ2hhbmdlRGVmYXVsdFNsb3QoKQorewor
ICAgIGlmIChtX3Nsb3RBc3NpZ25tZW50KQorICAgICAgICBtX3Nsb3RBc3NpZ25tZW50LT5kaWRD
aGFuZ2VTbG90KG51bGxBdG9tLCBTbG90QXNzaWdubWVudDo6Q2hhbmdlVHlwZTo6RGlyZWN0Q2hp
bGQsICp0aGlzKTsKK30KKworaW5saW5lIHZvaWQgU2hhZG93Um9vdDo6aG9zdENoaWxkRWxlbWVu
dERpZENoYW5nZShjb25zdCBFbGVtZW50JiBjaGlsZEVsZW1lbnQpCit7CisgICAgaWYgKG1fc2xv
dEFzc2lnbm1lbnQpCisgICAgICAgIG1fc2xvdEFzc2lnbm1lbnQtPmhvc3RDaGlsZEVsZW1lbnRE
aWRDaGFuZ2UoY2hpbGRFbGVtZW50LCAqdGhpcyk7Cit9CisKK2lubGluZSB2b2lkIFNoYWRvd1Jv
b3Q6Omhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2VTbG90QXR0cihjb25zdCBBdG9taWNTdHJpbmcm
IG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQoreworICAgIGlmIChtX3Ns
b3RBc3NpZ25tZW50KSB7CisgICAgICAgIG1fc2xvdEFzc2lnbm1lbnQtPmRpZENoYW5nZVNsb3Qo
b2xkVmFsdWUsIFNsb3RBc3NpZ25tZW50OjpDaGFuZ2VUeXBlOjpEaXJlY3RDaGlsZCwgKnRoaXMp
OworICAgICAgICBtX3Nsb3RBc3NpZ25tZW50LT5kaWRDaGFuZ2VTbG90KG5ld1ZhbHVlLCBTbG90
QXNzaWdubWVudDo6Q2hhbmdlVHlwZTo6RGlyZWN0Q2hpbGQsICp0aGlzKTsKKyAgICB9Cit9CisK
K2lubGluZSB2b2lkIFNoYWRvd1Jvb3Q6OmlubmVyU2xvdERpZENoYW5nZShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpCit7CisgICAgaWYgKG1fc2xvdEFzc2lnbm1lbnQpCisgICAgICAgIG1fc2xv
dEFzc2lnbm1lbnQtPmRpZENoYW5nZVNsb3QobmFtZSwgU2xvdEFzc2lnbm1lbnQ6OkNoYW5nZVR5
cGU6OklubmVyU2xvdCwgKnRoaXMpOworfQorCit9CisKICNlbmRpZgogCiAjZW5kaWYgLyogU2xv
dEFzc2lnbm1lbnRfaCAqLwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0Vs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNF
bGVtZW50LmNwcAkocmV2aXNpb24gMTk4MDU2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RGV0YWlsc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCwyNCBAQAogICAg
IHJldHVybiBzdW1tYXJ5U2xvdDsKIH0KIAotc3RhdGljIEF0b21pY1N0cmluZyBzbG90TmFtZUZ1
bmN0aW9uKGNvbnN0IE5vZGUmIGNoaWxkKQorY2xhc3MgRGV0YWlsc1Nsb3RBc3NpZ25tZW50IGZp
bmFsIDogcHVibGljIFNsb3RBc3NpZ25tZW50IHsKK3ByaXZhdGU6CisgICAgdm9pZCBob3N0Q2hp
bGRFbGVtZW50RGlkQ2hhbmdlKGNvbnN0IEVsZW1lbnQmLCBTaGFkb3dSb290Jikgb3ZlcnJpZGU7
CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzbG90TmFtZUZvckhvc3RDaGlsZChjb25zdCBOb2Rl
JikgY29uc3Qgb3ZlcnJpZGU7Cit9OworCit2b2lkIERldGFpbHNTbG90QXNzaWdubWVudDo6aG9z
dENoaWxkRWxlbWVudERpZENoYW5nZShjb25zdCBFbGVtZW50JiBjaGlsZEVsZW1lbnQsIFNoYWRv
d1Jvb3QmIHNoYWRvd1Jvb3QpCiB7CisgICAgaWYgKGlzPEhUTUxTdW1tYXJ5RWxlbWVudD4oY2hp
bGRFbGVtZW50KSkgeworICAgICAgICAvLyBEb24ndCBjaGVjayB3aGV0aGVyIHRoaXMgaXMgdGhl
IGZpcnN0IHN1bW1hcnkgZWxlbWVudAorICAgICAgICAvLyBzaW5jZSB3ZSBkb24ndCBrbm93IHRo
ZSBhbnN3ZXIgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbnNpZGUgRWxlbWVudDo6cmVt
b3ZlZEZyb20uCisgICAgICAgIGRpZENoYW5nZVNsb3Qoc3VtbWFyeVNsb3ROYW1lKCksIENoYW5n
ZVR5cGU6OkRpcmVjdENoaWxkLCBzaGFkb3dSb290KTsKKyAgICB9IGVsc2UKKyAgICAgICAgZGlk
Q2hhbmdlU2xvdChTbG90QXNzaWdubWVudDo6ZGVmYXVsdFNsb3ROYW1lKCksIENoYW5nZVR5cGU6
OkRpcmVjdENoaWxkLCBzaGFkb3dSb290KTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBEZXRh
aWxzU2xvdEFzc2lnbm1lbnQ6OnNsb3ROYW1lRm9ySG9zdENoaWxkKGNvbnN0IE5vZGUmIGNoaWxk
KSBjb25zdAorewogICAgIGF1dG8mIHBhcmVudCA9ICpjaGlsZC5wYXJlbnROb2RlKCk7CiAgICAg
QVNTRVJUKGlzPEhUTUxEZXRhaWxzRWxlbWVudD4ocGFyZW50KSk7CiAgICAgYXV0byYgZGV0YWls
cyA9IGRvd25jYXN0PEhUTUxEZXRhaWxzRWxlbWVudD4ocGFyZW50KTsKQEAgLTU1LDE4ICs3MSwx
MyBAQAogICAgICAgICBpZiAoJmNoaWxkID09IGNoaWxkcmVuT2ZUeXBlPEhUTUxTdW1tYXJ5RWxl
bWVudD4oZGV0YWlscykuZmlyc3QoKSkKICAgICAgICAgICAgIHJldHVybiBzdW1tYXJ5U2xvdE5h
bWUoKTsKICAgICB9Ci0gICAgLy8gRXZlcnl0aGluZyBlbHNlIGlzIGFzc2lnbmVkIHRvIHRoZSBk
ZWZhdWx0IHNsb3QgaWYgZGV0YWlscyBpcyBvcGVuLgotICAgIGlmIChkZXRhaWxzLmlzT3Blbigp
KQotICAgICAgICByZXR1cm4gU2xvdEFzc2lnbm1lbnQ6OmRlZmF1bHRTbG90TmFtZSgpOworICAg
IHJldHVybiBTbG90QXNzaWdubWVudDo6ZGVmYXVsdFNsb3ROYW1lKCk7Cit9CiAKLSAgICAvLyBP
dGhlcndpc2UgZG9uJ3QgcmVuZGVyIHRoZSBjb250ZW50LgotICAgIHJldHVybiBudWxsQXRvbTsK
LX07Ci0KIFJlZjxIVE1MRGV0YWlsc0VsZW1lbnQ+IEhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAg
ICBhdXRvIGRldGFpbHMgPSBhZG9wdFJlZigqbmV3IEhUTUxEZXRhaWxzRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwotICAgIGRldGFpbHMtPmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3Jl
YXRlKGRvY3VtZW50LCBzdGQ6Om1ha2VfdW5pcXVlPFNsb3RBc3NpZ25tZW50PihzbG90TmFtZUZ1
bmN0aW9uKSkpOworICAgIGRldGFpbHMtPmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRl
KGRvY3VtZW50LCBzdGQ6Om1ha2VfdW5pcXVlPERldGFpbHNTbG90QXNzaWdubWVudD4oKSkpOwog
ICAgIHJldHVybiBkZXRhaWxzOwogfQogCkBAIC05NCw4ICsxMDUsOCBAQAogICAgIHN1bW1hcnlT
bG90LT5hcHBlbmRDaGlsZChXVEZNb3ZlKGRlZmF1bHRTdW1tYXJ5KSk7CiAgICAgcm9vdC0+YXBw
ZW5kQ2hpbGQoV1RGTW92ZShzdW1tYXJ5U2xvdCkpOwogCi0gICAgYXV0byBkZWZhdWx0U2xvdCA9
IEhUTUxTbG90RWxlbWVudDo6Y3JlYXRlKHNsb3RUYWcsIGRvY3VtZW50KCkpOwotICAgIHJvb3Qt
PmFwcGVuZENoaWxkKFdURk1vdmUoZGVmYXVsdFNsb3QpKTsKKyAgICBtX2RlZmF1bHRTbG90ID0g
SFRNTFNsb3RFbGVtZW50OjpjcmVhdGUoc2xvdFRhZywgZG9jdW1lbnQoKSk7CisgICAgQVNTRVJU
KCFtX2lzT3Blbik7CiB9CiAKIGJvb2wgSFRNTERldGFpbHNFbGVtZW50Ojppc0FjdGl2ZVN1bW1h
cnkoY29uc3QgSFRNTFN1bW1hcnlFbGVtZW50JiBzdW1tYXJ5KSBjb25zdApAQCAtMTE0LDggKzEy
NSwxNCBAQAogICAgIGlmIChuYW1lID09IG9wZW5BdHRyKSB7CiAgICAgICAgIGJvb2wgb2xkVmFs
dWUgPSBtX2lzT3BlbjsKICAgICAgICAgbV9pc09wZW4gPSAhdmFsdWUuaXNOdWxsKCk7Ci0gICAg
ICAgIGlmIChvbGRWYWx1ZSAhPSBtX2lzT3BlbikKLSAgICAgICAgICAgIHNoYWRvd1Jvb3QoKS0+
aW52YWxpZGF0ZVNsb3RBc3NpZ25tZW50cygpOworICAgICAgICBpZiAob2xkVmFsdWUgIT0gbV9p
c09wZW4pIHsKKyAgICAgICAgICAgIGF1dG8qIHJvb3QgPSBzaGFkb3dSb290KCk7CisgICAgICAg
ICAgICBBU1NFUlQocm9vdCk7CisgICAgICAgICAgICBpZiAobV9pc09wZW4pCisgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kQ2hpbGQoKm1fZGVmYXVsdFNsb3QpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHJvb3QtPnJlbW92ZUNoaWxkKCptX2RlZmF1bHRTbG90KTsKKyAg
ICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0Vs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxl
bWVudC5oCShyZXZpc2lvbiAxOTgwNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRh
aWxzRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAgICAgYm9vbCBt
X2lzT3BlbiB7IGZhbHNlIH07CiAgICAgSFRNTFNsb3RFbGVtZW50KiBtX3N1bW1hcnlTbG90IHsg
bnVsbHB0ciB9OwogICAgIEhUTUxTdW1tYXJ5RWxlbWVudCogbV9kZWZhdWx0U3VtbWFyeSB7IG51
bGxwdHIgfTsKKyAgICBSZWZQdHI8SFRNTFNsb3RFbGVtZW50PiBtX2RlZmF1bHRTbG90OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2xvdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNs
b3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTk4MDU2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2xvdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaWYg
RU5BQkxFKFNIQURPV19ET00pIHx8IEVOQUJMRShERVRBSUxTX0VMRU1FTlQpCiAKICNpbmNsdWRl
ICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKIApAQCAtOTcsNiArOTksMjcgQEAKICAgICByZXR1cm4gc2hhZG93Um9vdC0+YXNzaWdu
ZWROb2Rlc0ZvclNsb3QoKnRoaXMpOwogfQogCit2b2lkIEhUTUxTbG90RWxlbWVudDo6ZW5xdWV1
ZVNsb3RDaGFuZ2VFdmVudCgpCit7CisgICAgaWYgKG1faGFzRW5xdWV1ZWRTbG90Q2hhbmdlRXZl
bnQpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgYnViYmxlcyA9IGZhbHNlOworICAgIGJv
b2wgY2FuY2VsYWJsZSA9IGZhbHNlOworICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5zbG90Y2hhbmdlRXZlbnQsIGJ1YmJsZXMsIGNhbmNlbGFibGUpOworICAgIGV2
ZW50LT5zZXRUYXJnZXQodGhpcyk7CisgICAgZG9jdW1lbnQoKS5lbnF1ZXVlU2xvdGNoYW5nZUV2
ZW50KFdURk1vdmUoZXZlbnQpKTsKKworICAgIG1faGFzRW5xdWV1ZWRTbG90Q2hhbmdlRXZlbnQg
PSB0cnVlOwogfQogCitib29sIEhUTUxTbG90RWxlbWVudDo6ZGlzcGF0Y2hFdmVudChFdmVudCYg
ZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuc2xvdGNoYW5n
ZUV2ZW50KQorICAgICAgICBtX2hhc0VucXVldWVkU2xvdENoYW5nZUV2ZW50ID0gZmFsc2U7Cisg
ICAgcmV0dXJuIEhUTUxFbGVtZW50OjpkaXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KKworfQorCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaAkocmV2aXNpb24g
MTk4MDU2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksMTIgKzM5LDE4IEBACiAKICAgICBjb25zdCBWZWN0b3I8Tm9kZSo+KiBh
c3NpZ25lZE5vZGVzKCkgY29uc3Q7CiAKKyAgICB2b2lkIGVucXVldWVTbG90Q2hhbmdlRXZlbnQo
KTsKKwogcHJpdmF0ZToKICAgICBIVE1MU2xvdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CiAKICAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVk
SW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVkRnJvbShDb250
YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNT
dHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24pIG92ZXJyaWRlOwor
CisgICAgYm9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50Jikgb3ZlcnJpZGU7CisKKyAgICBib29sIG1f
aGFzRW5xdWV1ZWRTbG90Q2hhbmdlRXZlbnQgeyBmYWxzZSB9OwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273943</attachid>
            <date>2016-03-14 01:56:15 -0700</date>
            <delta_ts>2016-03-14 02:01:12 -0700</delta_ts>
            <desc>Implements the feature</desc>
            <filename>bug-155424-20160314015604.patch</filename>
            <type>text/plain</type>
            <size>55023</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODA5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk3IEBACisyMDE2LTAzLTE0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBzbG90Y2hhbmdlIGV2ZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MjQK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0OTk3NTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGBzbG90Y2hhbmdlYCBldmVudCBhcyBk
aXNjdXNzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWJjb21wb25lbnRzL2lzc3Vlcy8y
ODguCisKKyAgICAgICAgV2hpbGUgdGhlIGV4YWN0IHNlbWFudGljcyBvZiBpdCBjb3VsZCBzdGls
bCBldm9sdmUgb3ZlciB0aW1lLCB0aGlzIHBhdGNoIGltcGxlbWVudHMgYXMKKyAgICAgICAgYW4g
YXN5bmNocm9ub3VzIGV2ZW50IHRoYXQgZmlyZXMgb24gYSBzbG90IGVsZW1lbnQgd2hlbmV2ZXIg
aXRzIGRpc3RyaWJ1dGVkIG5vZGVzIGNoYW5nZQorICAgICAgICAoZmxhdHRlbmVkIGFzc2lnbmVk
IG5vZGVzKToKKyAgICAgICAgaHR0cDovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVj
L3NoYWRvdy8jZGZuLWRpc3RyaWJ1dGVkLW5vZGVzCisKKyAgICAgICAgU2luY2UgaW5zZXJ0aW5n
IG9yIHJlbW92aW5nIGFuIGVsZW1lbnQgZnJvbSBhIHNoYWRvdyBob3N0IGNvdWxkIG5lZWRzIHRv
IGVucXVldWUgdGhpcyBldmVudAorICAgICAgICBvbiB0aGUgcmlnaHQgc2xvdCBlbGVtZW50LCB0
aGlzIHBhdGNoIG1vdmVzIHRoZSBpbnZhbGlkYXRpb24gcG9pbnQgb2YgZWxlbWVudCByZW1vdmFs
cyBhbmQKKyAgICAgICAgaW5zZXJ0aW9ucyBmcm9tIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCB0
byBFbGVtZW50OjppbnNlcnRlZEludG8gYW5kIEVsZW1lbnQ6OnJlbW92ZWRGcm9tLgorICAgICAg
ICBUZXh0IG5vZGVzIGFyZSBzdGlsbCBpbnZhbGlkYXRlZCBhdCBFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMKKyAgICAgICAgc2luY2UgaXQgY291bGQgb25s
eSBhcHBlYXIgd2l0aGluIGEgZGVmYXVsdCBzbG90IGVsZW1lbnQuCisKKyAgICAgICAgQmVjYXVz
ZSB0aGlzIG1vcmUgZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBuZWVkcyB0byBiZSBvdmVycmlk
ZGVuIGJ5IEhUTUxEZXRhaWxzRWxlbWVudCwKKyAgICAgICAgd2Ugbm93IHN1YmNsYXNzIFNsb3RB
c3NpZ25tZW50IGluIEhUTUxEZXRhaWxzRWxlbWVudCBpbnN0ZWFkIG9mIHBhc3NpbmcgaW4gYSBz
dGQ6OmZ1bmN0aW9uLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc2hhZG93LWRvbS9zbG90Y2hhbmdl
LWV2ZW50Lmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6ZW5xdWV1ZVNsb3RjaGFuZ2VFdmVudCk6IEFkZGVkLgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOiBDYWxsIGhvc3RDaGlsZEVsZW1lbnRE
aWRDaGFuZ2VTbG90QXR0ci4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omluc2VydGVkSW50
byk6IENhbGwgaG9zdENoaWxkRWxlbWVudERpZENoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnJlbW92ZWRGcm9tKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQpOiBEb24ndCBpbnZhbGlkYXRlIHRoZSBzbG90cyBvbiBFbGVtZW50SW5z
ZXJ0ZWQgYW5kCisgICAgICAgIEVsZW1lbnRSZW1vdmVkIHNpbmNlIHRoZXkncmUgbm93IGRvbmUg
aW4gRWxlbWVudDo6aW5zZXJ0ZWRJbnRvIGFuZCBFbGVtZW50OjpyZW1vdmVkRnJvbS4KKyAgICAg
ICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OnNjb3BlZCk6IHNs
b3RjaGFuZ2UgZXZlbnQgaXMgc2NvcGVkLgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6IEFk
ZGVkIGV2ZW50TmFtZXMoKS5zbG90Y2hhbmdlLgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmludmFsaWRhdGVTbG90QXNzaWdubWVu
dHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6aW52YWxpZGF0ZURl
ZmF1bHRTbG90QXNzaWdubWVudHMpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
Lmg6CisgICAgICAgIChTaGFkb3dSb290KTogQWRkZWQgbW9yZSBmaW5lLWdyYWluZWQgaW52YWxp
ZGF0b3JzLCBtaXJyb3JpbmcgY2hhbmdlcyB0byBTbG90QXNzaWdubWVudC4KKyAgICAgICAgKiBk
b20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6
OlNsb3RBc3NpZ25tZW50KTogUmVtb3ZlZCBhIHZhcmlhbnQgdGhhdCB0YWtlcyBTbG90TmFtZUZ1
bmN0aW9uCisgICAgICAgIHNpbmNlIEhUTUxEZXRhaWxzRWxlbWVudCBub3cgc3ViY2xhc3NlcyBT
bG90QXNzaWdubWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50Ojp+U2xvdEFz
c2lnbm1lbnQpOiBBZGRlZCBub3cgdGhhdCB0aGUgY2xhc3MgaXMgdmlydHVhbC4KKyAgICAgICAg
KFdlYkNvcmU6OnJlY3Vyc2l2ZWx5RmlyZVNsb3RDaGFuZ2VFdmVudCk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OmRpZENoYW5nZVNsb3QpOiBBZGRlZC4gSW52YWxp
ZGF0ZXMgdGhlIHN0eWxlIHRyZWUgb25seSBpZiB0aGVyZQorICAgICAgICBpcyBhIGNvcnJlc3Bv
bmRpbmcgc2xvdCBlbGVtZW50LCBhbmQgZmlyZXMgc2xvdGNoYW5nZSBldmVudC4gV2hlbiB0aGUg
c2xvdCBlbGVtZW50IHdlIGZvdW5kCisgICAgICAgIGluIHRoaXMgc2hhZG93IHRyZWUgaXMgYXNz
aWduZWQgdG8gYSBzbG90IGVsZW1lbnQgaW5zaWRlIGFuIGlubmVyIHNoYWRvdyB0cmVlLCByZWN1
cnNpdmVseQorICAgICAgICBmaXJlIHNsb3RjaGFuZ2UgZXZlbnQgb24gZWFjaCBzdWNoIGlubmVy
IHNsb3RzLgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6Omhvc3RDaGlsZEVsZW1l
bnREaWRDaGFuZ2UpOiBBZGRlZC4gVXBkYXRlIHRoZSBtYXRjaGluZyBzbG90IHdoZW4KKyAgICAg
ICAgYW4gZWxlbWVudCBpcyBpbnNlcnRlZCBvciByZW1vdmVkIHVuZGVyIGEgc2hhZG93IGhvc3Qu
CisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6YXNzaWduZWROb2Rlc0ZvclNsb3Qp
OiBSZW1vdmVkIHRoZSBzdXBlcmZsdW91cyBlYXJseSBleGl0IHRvIGFuCisgICAgICAgIHJlbGVh
c2UgYXNzZXJ0IHNpbmNlIGFkZFNsb3RFbGVtZW50QnlOYW1lIHNob3VsZCBhbHdheXMgY3JlYXRl
IGEgU2xvdEluZm8gZm9yIGVhY2ggZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3Np
Z25tZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZCk6IEFkZGVkLiBUaGlzIGlzIHRoZSBlcXVpdmFs
ZW50IG9mIG9sZAorICAgICAgICBtX3Nsb3ROYW1lRnVuY3Rpb24gd2hpY2ggRGV0YWlsc1Nsb3RB
c3NpZ25tZW50IG92ZXJyaWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50Ojpp
bnZhbGlkYXRlRGVmYXVsdFNsb3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFz
c2lnbm1lbnQ6OmZpbmRGaXJzdFNsb3RFbGVtZW50KTogQWRkZWQgYW4gYXNzZXJ0aW9uLiBzbG90
SW5mby5lbGVtZW50IG11c3QKKyAgICAgICAgYmUgbnVsbHB0ciBpZiBlbGVtZW50Q291bnQgaXMg
MCwgYW5kIGVsZW1lbnRDb3VudCBtdXN0IGJlIDAgaWYgc2xvdEluZm8uZWxlbWVudCBpcyBudWxs
cHRyCisgICAgICAgIGFmdGVyIGNhbGxpbmcgcmVzb2x2ZUFsbFNsb3RFbGVtZW50cywgd2hpY2gg
dHJhdmVyc2VzIHRoZSBlbnRpcmUgc2hhZG93IHRyZWUgdG8gZmluZCBhbGwKKyAgICAgICAgc2xv
dCBlbGVtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50Ojphc3NpZ25TbG90
cyk6CisgICAgICAgICogZG9tL1Nsb3RBc3NpZ25tZW50Lmg6IEltcGxlbWVudGVkIGlubGluZSBm
dW5jdGlvbnMgb2YgU2hhZG93Um9vdCBoZXJlIHRvIGF2b2lkIGluY2x1ZGluZworICAgICAgICBT
bG90QXNzaWdubWVudC5oIGluIFNoYWRvd1Jvb3QuaC4gTm90IGlubGluaW5nIHRoZW0gcmVzdWx0
cyBpbiBleHRyYSBmdW5jdGlvbiBjYWxscyBmb3IgYWxsCisgICAgICAgIGJ1aWx0aW4gZWxlbWVu
dHMgd2l0aCBzaGFkb3cgcm9vdCB3aXRob3V0IHNsb3QgZWxlbWVudHMsIHdoaWNoIGltcGFjdHMg
cGVyZm9ybWFuY2UuCisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpkaWRSZW1vdmVBbGxD
aGlsZHJlbk9mU2hhZG93SG9zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9v
dDo6ZGlkQ2hhbmdlRGVmYXVsdFNsb3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d1Jvb3Q6Omhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd1Jvb3Q6Omhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2VTbG90QXR0cik6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6aW5uZXJTbG90RGlkQ2hhbmdlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
ZXRhaWxzU2xvdEFzc2lnbm1lbnQpOiBBZGRlZC4gU3ViY2xhc3NlcyBTbG90QXNzaWdubWVudCB0
byBvdmVycmlkZQorICAgICAgICBob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlIGFuZCBzbG90TmFt
ZUZvckhvc3RDaGlsZC4KKyAgICAgICAgKFdlYkNvcmU6OkRldGFpbHNTbG90QXNzaWdubWVudDo6
aG9zdENoaWxkRWxlbWVudERpZENoYW5nZSk6IEFkZGVkLiBXZSBkb24ndCBjaGVjayBpZiB0aGlz
CisgICAgICAgIGlzIHRoZSBmaXJzdCBzdW1tYXJ5IGVsZW1lbnQgc2luY2Ugd2UgZG9uJ3Qga25v
dyB0aGUgYW5zd2VyIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKKyAgICAgICAgaW5zaWRl
IEVsZW1lbnQ6OnJlbW92ZWRGcm9tLgorICAgICAgICAoV2ViQ29yZTo6RGV0YWlsc1Nsb3RBc3Np
Z25tZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZCk6IFJlbmFtZWQgZnJvbSBzbG90TmFtZUZ1bmN0
aW9uLiBBbHNvCisgICAgICAgIHJlbW92ZWQgdGhlIGNvZGUgdG8gcmV0dXJuIG51bGxBdG9tIHdo
ZW4gZGV0YWlscyBlbGVtZW50IGlzIG5vdCBvcGVuIGFzIHRoYXQgbWVzc2VzIHVwIG5ldworICAg
ICAgICBmaW5lLWdyYWluZWQgaW52YWxpZGF0aW9uLiBJbnNlcnQvcmVtb3ZlIHRoZSBzbG90IGVs
ZW1lbnQgaW4gcGFyc2VBdHRyaWJ1dGUgaW5zdGVhZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxE
ZXRhaWxzRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6IERvbid0IGluc2VydCB0
aGUgc2xvdCBlbGVtZW50IGZvcgorICAgICAgICB0aGUgc3VtbWFyeSBzaW5jZSB0aGUgZGV0YWls
cyBlbGVtZW50IGlzIG5vdCBvcGVuIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxz
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBSZW1vdmUgYW5kIGluc2VydCB0aGUgc2xvdCBlbGVt
ZW50IGZvciB0aGUKKyAgICAgICAgc3VtbWFyeSBoZXJlIGluc3RlYWQgb2YgY2hhbmdpbmcgdGhl
IGJlaGF2aW9yIG9mIHNsb3ROYW1lRm9ySG9zdENoaWxkLgorICAgICAgICAqIGh0bWwvSFRNTERl
dGFpbHNFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNsb3RFbGVtZW50OjplbnF1ZXVlU2xvdENoYW5nZUV2ZW50KTog
QWRkZWQuIEVucXVldWVzIGEgbmV3IHNsb3RjaGFuZ2UgZXZlbnQKKyAgICAgICAgaWYgd2UgaGF2
ZW4ndCBkb25lIHNvIGZvciB0aGlzIGVsZW1lbnQgeWV0LgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFNsb3RFbGVtZW50OjpkaXNwYXRjaEV2ZW50KTogQWRkZWQuIENsZWFyIG1faGFzRW5xdWV1ZWRT
bG90Q2hhbmdlRXZlbnQgd2hlbgorICAgICAgICBkaXNwYXRjaGluZyBhIHNsb3RjaGFuZ2UgZXZl
bnQgc28gdGhhdCBhIHN1YnNlcXVlbnQgY2FsbCB0byBlbnF1ZXVlU2xvdENoYW5nZUV2ZW50IHdv
dWxkCisgICAgICAgIGVucXVldWUgYSBuZXcgZXZlbnQuIE5vdGUgc2NyaXB0cyBjYWxsIEV2ZW50
VGFyZ2V0OjpkaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3MgaW5zdGVhZC4KKyAgICAgICAgKiBodG1s
L0hUTUxTbG90RWxlbWVudC5oOgorCiAyMDE2LTAzLTEzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRShFUzZfVEVNUExBVEVfTElU
RVJBTF9TWU5UQVgpIGd1YXJkcwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAxOTgwNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MTcyLDYgKzQxNzIsMTEgQEAgdm9pZCBEb2N1bWVudDo6ZW5xdWV1ZU92ZXJmbG93
RXZlbnQoUmVmPAogICAgIG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkp
OwogfQogCit2b2lkIERvY3VtZW50OjplbnF1ZXVlU2xvdGNoYW5nZUV2ZW50KFJlZjxFdmVudD4m
JiBldmVudCkKK3sKKyAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQp
KTsKK30KKwogUmVmUHRyPEV2ZW50PiBEb2N1bWVudDo6Y3JlYXRlRXZlbnQoY29uc3QgU3RyaW5n
JiB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBQbGVhc2UgZG8gKm5vdCogYWRk
IG5ldyBldmVudCBjbGFzc2VzIHRvIHRoaXMgZnVuY3Rpb24gdW5sZXNzIHRoZXkgYXJlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMTk4MDU2KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwODgsNiArMTA4OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGVucXVldWVXaW5kb3dFdmVudChSZWY8RXZlbnQ+JiYpOwogICAgIHZvaWQg
ZW5xdWV1ZURvY3VtZW50RXZlbnQoUmVmPEV2ZW50PiYmKTsKICAgICB2b2lkIGVucXVldWVPdmVy
Zmxvd0V2ZW50KFJlZjxFdmVudD4mJik7CisgICAgdm9pZCBlbnF1ZXVlU2xvdGNoYW5nZUV2ZW50
KFJlZjxFdmVudD4mJik7CiAgICAgdm9pZCBlbnF1ZXVlUGFnZXNob3dFdmVudChQYWdlc2hvd0V2
ZW50UGVyc2lzdGVuY2UpOwogICAgIHZvaWQgZW5xdWV1ZUhhc2hjaGFuZ2VFdmVudChjb25zdCBT
dHJpbmcmIG9sZFVSTCwgY29uc3QgU3RyaW5nJiBuZXdVUkwpOwogICAgIHZvaWQgZW5xdWV1ZVBv
cHN0YXRlRXZlbnQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzdGF0ZU9iamVjdCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTgwNTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAK
ICNpbmNsdWRlICJTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJTaW11bGF0ZWRDbGljay5oIgorI2luY2x1ZGUgIlNsb3RBc3NpZ25tZW50LmgiCiAjaW5j
bHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2lu
Y2x1ZGUgIlN0eWxlVHJlZVJlc29sdmVyLmgiCkBAIC0xMjU0LDcgKzEyNTUsNyBAQCB2b2lkIEVs
ZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhCiAgICAgICAgIGVsc2UgaWYgKG5hbWUg
PT0gSFRNTE5hbWVzOjpzbG90QXR0cikgewogICAgICAgICAgICAgaWYgKGF1dG8qIHBhcmVudCA9
IHBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBzaGFkb3dSb290
ID0gcGFyZW50LT5zaGFkb3dSb290KCkpCi0gICAgICAgICAgICAgICAgICAgIHNoYWRvd1Jvb3Qt
PmludmFsaWRhdGVTbG90QXNzaWdubWVudHMoKTsKKyAgICAgICAgICAgICAgICAgICAgc2hhZG93
Um9vdC0+aG9zdENoaWxkRWxlbWVudERpZENoYW5nZVNsb3RBdHRyKG9sZFZhbHVlLCBuZXdWYWx1
ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMTQ5Niw2ICsxNDk3LDEx
IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgRWxlbWUKICAgICAgICAgc2V0
Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJp
ZXModHJ1ZSk7CiAjZW5kaWYKIAorICAgIGlmIChwYXJlbnROb2RlKCkgPT0gJmluc2VydGlvblBv
aW50KSB7CisgICAgICAgIGlmIChhdXRvKiBzaGFkb3dSb290ID0gcGFyZW50Tm9kZSgpLT5zaGFk
b3dSb290KCkpCisgICAgICAgICAgICBzaGFkb3dSb290LT5ob3N0Q2hpbGRFbGVtZW50RGlkQ2hh
bmdlKCp0aGlzKTsKKyAgICB9CisKICAgICBpZiAoIWluc2VydGlvblBvaW50LmlzSW5UcmVlU2Nv
cGUoKSkKICAgICAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiAKQEAgLTE1NzUsNiArMTU4MSwx
MSBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmCiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICBpZiAoIXBhcmVudE5vZGUoKSkgeworICAgICAgICBpZiAoYXV0byogc2hh
ZG93Um9vdCA9IGluc2VydGlvblBvaW50LnNoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIHNoYWRv
d1Jvb3QtPmhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoKnRoaXMpOworICAgIH0KKwogICAgIENv
bnRhaW5lck5vZGU6OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50KTsKIAogICAgIGlmIChoYXNQ
ZW5kaW5nUmVzb3VyY2VzKCkpCkBAIC0xODMyLDEzICsxODQzLDE1IEBAIHZvaWQgRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWwKICAgICAgICAgc3dpdGNoIChjaGFuZ2UudHlwZSkg
ewogICAgICAgICBjYXNlIEVsZW1lbnRJbnNlcnRlZDoKICAgICAgICAgY2FzZSBFbGVtZW50UmVt
b3ZlZDoKKyAgICAgICAgICAgIC8vIEZvciBlbGVtZW50cywgd2Ugbm90aWZ5IHNoYWRvd1Jvb3Qg
aW4gRWxlbWVudDo6aW5zZXJ0ZWRJbnRvIGFuZCBFbGVtZW50OjpyZW1vdmVkRnJvbS4KKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFsbENoaWxkcmVuUmVtb3ZlZDoKLSAgICAgICAg
ICAgIHNoYWRvd1Jvb3QtPmludmFsaWRhdGVTbG90QXNzaWdubWVudHMoKTsKKyAgICAgICAgICAg
IHNoYWRvd1Jvb3QtPmRpZFJlbW92ZUFsbENoaWxkcmVuT2ZTaGFkb3dIb3N0KCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBUZXh0SW5zZXJ0ZWQ6CiAgICAgICAgIGNhc2UgVGV4
dFJlbW92ZWQ6CiAgICAgICAgIGNhc2UgVGV4dENoYW5nZWQ6Ci0gICAgICAgICAgICBzaGFkb3dS
b290LT5pbnZhbGlkYXRlRGVmYXVsdFNsb3RBc3NpZ25tZW50cygpOworICAgICAgICAgICAgc2hh
ZG93Um9vdC0+ZGlkQ2hhbmdlRGVmYXVsdFNsb3QoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIE5vbkNvbnRlbnRzQ2hpbGRDaGFuZ2VkOgogICAgICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudC5jcHAJKHJldmlzaW9uIDE5ODA1NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsOCBAQCBib29sIEV2
ZW50OjpzY29wZWQoKSBjb25zdAogICAgICAgICB8fCBtX3R5cGUgPT0gZXZlbnROYW1lcygpLnJl
c2l6ZUV2ZW50CiAgICAgICAgIHx8IG1fdHlwZSA9PSBldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQK
ICAgICAgICAgfHwgbV90eXBlID09IGV2ZW50TmFtZXMoKS5zZWxlY3RFdmVudAotICAgICAgICB8
fCBtX3R5cGUgPT0gZXZlbnROYW1lcygpLnNlbGVjdHN0YXJ0RXZlbnQ7CisgICAgICAgIHx8IG1f
dHlwZSA9PSBldmVudE5hbWVzKCkuc2VsZWN0c3RhcnRFdmVudAorICAgICAgICB8fCBtX3R5cGUg
PT0gZXZlbnROYW1lcygpLnNsb3RjaGFuZ2VFdmVudDsKIH0KIAogRXZlbnRJbnRlcmZhY2UgRXZl
bnQ6OmV2ZW50SW50ZXJmYWNlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAko
cmV2aXNpb24gMTk4MDU2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTk1LDYgKzE5NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBt
YWNybyhzZWxlY3RzdGFydCkgXAogICAgIG1hY3JvKHNob3cpIFwKICAgICBtYWNybyhzaWduYWxp
bmdzdGF0ZWNoYW5nZSkgXAorICAgIG1hY3JvKHNsb3RjaGFuZ2UpIFwKICAgICBtYWNybyhzb3Vu
ZGVuZCkgXAogICAgIG1hY3JvKHNvdW5kc3RhcnQpIFwKICAgICBtYWNybyhzb3VyY2VjbG9zZSkg
XApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAkocmV2aXNpb24gMTk4MDU2KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAs
MTggKzIwMCw2IEBAIHZvaWQgU2hhZG93Um9vdDo6cmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUKICAg
ICByZXR1cm4gbV9zbG90QXNzaWdubWVudC0+cmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUobmFtZSwg
c2xvdCwgKnRoaXMpOwogfQogCi12b2lkIFNoYWRvd1Jvb3Q6OmludmFsaWRhdGVTbG90QXNzaWdu
bWVudHMoKQotewotICAgIGlmIChtX3Nsb3RBc3NpZ25tZW50KQotICAgICAgICBtX3Nsb3RBc3Np
Z25tZW50LT5pbnZhbGlkYXRlKCp0aGlzKTsKLX0KLQotdm9pZCBTaGFkb3dSb290OjppbnZhbGlk
YXRlRGVmYXVsdFNsb3RBc3NpZ25tZW50cygpCi17Ci0gICAgaWYgKG1fc2xvdEFzc2lnbm1lbnQp
Ci0gICAgICAgIG1fc2xvdEFzc2lnbm1lbnQtPmludmFsaWRhdGVEZWZhdWx0U2xvdCgqdGhpcyk7
Ci19Ci0KIGNvbnN0IFZlY3RvcjxOb2RlKj4qIFNoYWRvd1Jvb3Q6OmFzc2lnbmVkTm9kZXNGb3JT
bG90KGNvbnN0IEhUTUxTbG90RWxlbWVudCYgc2xvdCkKIHsKICAgICBpZiAoIW1fc2xvdEFzc2ln
bm1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgJKHJldmlzaW9uIDE5ODA1NikKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDgg
KzkxLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0
b21pY1N0cmluZyYsIEhUTUxTbG90RWxlbWVudCYpOwogICAgIHZvaWQgcmVtb3ZlU2xvdEVsZW1l
bnRCeU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiwgSFRNTFNsb3RFbGVtZW50Jik7CiAKLSAgICB2
b2lkIGludmFsaWRhdGVTbG90QXNzaWdubWVudHMoKTsKLSAgICB2b2lkIGludmFsaWRhdGVEZWZh
dWx0U2xvdEFzc2lnbm1lbnRzKCk7CisgICAgdm9pZCBkaWRSZW1vdmVBbGxDaGlsZHJlbk9mU2hh
ZG93SG9zdCgpOworICAgIHZvaWQgZGlkQ2hhbmdlRGVmYXVsdFNsb3QoKTsKKyAgICB2b2lkIGhv
c3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoY29uc3QgRWxlbWVudCYpOworICAgIHZvaWQgaG9zdENo
aWxkRWxlbWVudERpZENoYW5nZVNsb3RBdHRyKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpOworICAgIHZvaWQgaW5uZXJTbG90RGlkQ2hh
bmdlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAgICAgY29uc3QgVmVjdG9yPE5vZGUqPiogYXNz
aWduZWROb2Rlc0ZvclNsb3QoY29uc3QgSFRNTFNsb3RFbGVtZW50Jik7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAkocmV2aXNpb24gMTk4MDk3KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTAsMTIgKzUwLDEwIEBAIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNsb3ROYW1lRnJvbVMK
IH0KIAogU2xvdEFzc2lnbm1lbnQ6OlNsb3RBc3NpZ25tZW50KCkKLSAgICA6IG1fc2xvdE5hbWVG
dW5jdGlvbihzbG90TmFtZUZyb21TbG90QXR0cmlidXRlKQogewogfQogCi1TbG90QXNzaWdubWVu
dDo6U2xvdEFzc2lnbm1lbnQoU2xvdE5hbWVGdW5jdGlvbiBmdW5jdGlvbikKLSAgICA6IG1fc2xv
dE5hbWVGdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKK1Nsb3RBc3NpZ25tZW50Ojp+U2xvdEFz
c2lnbm1lbnQoKQogewogfQogCkBAIC02NCwxMCArNjIsNyBAQCBIVE1MU2xvdEVsZW1lbnQqIFNs
b3RBc3NpZ25tZW50OjpmaW5kQXNzCiAgICAgaWYgKCFpczxUZXh0Pihub2RlKSAmJiAhaXM8RWxl
bWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzbG90TmFt
ZSA9IG1fc2xvdE5hbWVGdW5jdGlvbihub2RlKTsKLSAgICBpZiAoIXNsb3ROYW1lKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQorICAgIGF1dG8gc2xvdE5hbWUgPSBzbG90TmFtZUZvckhvc3RD
aGlsZChub2RlKTsKICAgICBhdXRvIGl0ID0gbV9zbG90cy5maW5kKHNsb3ROYW1lKTsKICAgICBp
ZiAoaXQgPT0gbV9zbG90cy5lbmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMzMs
MTcgKzEyOCw1MyBAQCB2b2lkIFNsb3RBc3NpZ25tZW50OjpyZW1vdmVTbG90RWxlbWVudEJ5CiAg
ICAgQVNTRVJUKHNsb3RJbmZvLmVsZW1lbnQgfHwgbV9uZWVkc1RvUmVzb2x2ZVNsb3RFbGVtZW50
cyk7CiB9CiAKLWNvbnN0IFZlY3RvcjxOb2RlKj4qIFNsb3RBc3NpZ25tZW50Ojphc3NpZ25lZE5v
ZGVzRm9yU2xvdChjb25zdCBIVE1MU2xvdEVsZW1lbnQmIHNsb3RFbGVtZW50LCBTaGFkb3dSb290
JiBzaGFkb3dSb290KQorc3RhdGljIHZvaWQgcmVjdXJzaXZlbHlGaXJlU2xvdENoYW5nZUV2ZW50
KEhUTUxTbG90RWxlbWVudCogc2xvdEVsZW1lbnQpCiB7Ci0gICAgaWYgKCFtX3Nsb3RBc3NpZ25t
ZW50c0lzVmFsaWQpCi0gICAgICAgIGFzc2lnblNsb3RzKHNoYWRvd1Jvb3QpOworICAgIHNsb3RF
bGVtZW50LT5lbnF1ZXVlU2xvdENoYW5nZUV2ZW50KCk7CiAKLSAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHNsb3ROYW1lID0gc2xvdE5hbWVGcm9tQXR0cmlidXRlVmFsdWUoc2xvdEVsZW1lbnQuZmFz
dEdldEF0dHJpYnV0ZShuYW1lQXR0cikpOworICAgIGlmIChhdXRvKiBzbG90UGFyZW50ID0gc2xv
dEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgeworICAgICAgICBpZiAoYXV0byogc2hhZG93Um9v
dE9mU2xvdFBhcmVudCA9IHNsb3RQYXJlbnQtPnNoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIHNo
YWRvd1Jvb3RPZlNsb3RQYXJlbnQtPmlubmVyU2xvdERpZENoYW5nZShzbG90RWxlbWVudC0+ZmFz
dEdldEF0dHJpYnV0ZShzbG90QXR0cikpOworICAgIH0KK30KKwordm9pZCBTbG90QXNzaWdubWVu
dDo6ZGlkQ2hhbmdlU2xvdChjb25zdCBBdG9taWNTdHJpbmcmIHNsb3RBdHRyVmFsdWUsIENoYW5n
ZVR5cGUgY2hhbmdlVHlwZSwgU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKK3sKKyAgICBhdXRvJiBz
bG90TmFtZSA9IHNsb3ROYW1lRnJvbUF0dHJpYnV0ZVZhbHVlKHNsb3RBdHRyVmFsdWUpOwogICAg
IGF1dG8gaXQgPSBtX3Nsb3RzLmZpbmQoc2xvdE5hbWUpOwogICAgIGlmIChpdCA9PSBtX3Nsb3Rz
LmVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOworCisgICAg
SFRNTFNsb3RFbGVtZW50KiBzbG90RWxlbWVudCA9IGZpbmRGaXJzdFNsb3RFbGVtZW50KCppdC0+
dmFsdWUsIHNoYWRvd1Jvb3QpOworICAgIGlmICghc2xvdEVsZW1lbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChjaGFuZ2VUeXBlID09IENoYW5nZVR5cGU6OkRpcmVjdENoaWxkKSB7Cisg
ICAgICAgIHNoYWRvd1Jvb3QuaG9zdCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKFJlY29uc3RydWN0
UmVuZGVyVHJlZSk7CisgICAgICAgIG1fc2xvdEFzc2lnbm1lbnRzSXNWYWxpZCA9IGZhbHNlOwor
ICAgIH0KKworICAgIGlmIChzaGFkb3dSb290LnR5cGUoKSA9PSBTaGFkb3dSb290OjpUeXBlOjpV
c2VyQWdlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlY3Vyc2l2ZWx5RmlyZVNsb3RDaGFu
Z2VFdmVudChzbG90RWxlbWVudCk7Cit9CisKK3ZvaWQgU2xvdEFzc2lnbm1lbnQ6Omhvc3RDaGls
ZEVsZW1lbnREaWRDaGFuZ2UoY29uc3QgRWxlbWVudCYgY2hpbGRFbGVtZW50LCBTaGFkb3dSb290
JiBzaGFkb3dSb290KQoreworICAgIGRpZENoYW5nZVNsb3QoY2hpbGRFbGVtZW50LmZhc3RHZXRB
dHRyaWJ1dGUoc2xvdEF0dHIpLCBDaGFuZ2VUeXBlOjpEaXJlY3RDaGlsZCwgc2hhZG93Um9vdCk7
Cit9CisKK2NvbnN0IFZlY3RvcjxOb2RlKj4qIFNsb3RBc3NpZ25tZW50Ojphc3NpZ25lZE5vZGVz
Rm9yU2xvdChjb25zdCBIVE1MU2xvdEVsZW1lbnQmIHNsb3RFbGVtZW50LCBTaGFkb3dSb290JiBz
aGFkb3dSb290KQoreworICAgIEFTU0VSVChzbG90RWxlbWVudC5jb250YWluaW5nU2hhZG93Um9v
dCgpID09ICZzaGFkb3dSb290KTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNsb3ROYW1lID0g
c2xvdE5hbWVGcm9tQXR0cmlidXRlVmFsdWUoc2xvdEVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZShu
YW1lQXR0cikpOworICAgIGF1dG8gaXQgPSBtX3Nsb3RzLmZpbmQoc2xvdE5hbWUpOworICAgIFJF
TEVBU0VfQVNTRVJUKGl0ICE9IG1fc2xvdHMuZW5kKCkpOwogCiAgICAgYXV0byYgc2xvdEluZm8g
PSAqaXQtPnZhbHVlOworICAgIGlmICghbV9zbG90QXNzaWdubWVudHNJc1ZhbGlkKQorICAgICAg
ICBhc3NpZ25TbG90cyhzaGFkb3dSb290KTsKIAogICAgIGlmICghc2xvdEluZm8uYXNzaWduZWRO
b2Rlcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTU1LDE4ICsxODYsOSBA
QCBjb25zdCBWZWN0b3I8Tm9kZSo+KiBTbG90QXNzaWdubWVudDo6YXNzCiAgICAgcmV0dXJuICZz
bG90SW5mby5hc3NpZ25lZE5vZGVzOwogfQogCi12b2lkIFNsb3RBc3NpZ25tZW50OjppbnZhbGlk
YXRlKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCitjb25zdCBBdG9taWNTdHJpbmcmIFNsb3RBc3Np
Z25tZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZChjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QKIHsK
LSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gZG8gYSB0YXJnZXRlZCByZWNvbnN0
cnVjdGlvbi4KLSAgICBzaGFkb3dSb290Lmhvc3QoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhSZWNv
bnN0cnVjdFJlbmRlclRyZWUpOwotICAgIG1fc2xvdEFzc2lnbm1lbnRzSXNWYWxpZCA9IGZhbHNl
OwotfQotCi12b2lkIFNsb3RBc3NpZ25tZW50OjppbnZhbGlkYXRlRGVmYXVsdFNsb3QoU2hhZG93
Um9vdCYgc2hhZG93Um9vdCkKLXsKLSAgICBhdXRvIGl0ID0gbV9zbG90cy5maW5kKGRlZmF1bHRT
bG90TmFtZSgpKTsKLSAgICBpZiAoaXQgIT0gbV9zbG90cy5lbmQoKSAmJiBpdC0+dmFsdWUtPmVs
ZW1lbnRDb3VudCkKLSAgICAgICAgaW52YWxpZGF0ZShzaGFkb3dSb290KTsgLy8gRklYTUU6IFdl
IHNob3VsZCBiZSBhYmxlIHRvIHJlY29uc3RydWN0IG9ubHkgdW5kZXIgdGhlIGRlZmF1bHQgc2xv
dC4KKyAgICByZXR1cm4gc2xvdE5hbWVGcm9tU2xvdEF0dHJpYnV0ZShjaGlsZCk7CiB9CiAKIEhU
TUxTbG90RWxlbWVudCogU2xvdEFzc2lnbm1lbnQ6OmZpbmRGaXJzdFNsb3RFbGVtZW50KFNsb3RJ
bmZvJiBzbG90SW5mbywgU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKQEAgLTE3Niw2ICsxOTgsNyBA
QCBIVE1MU2xvdEVsZW1lbnQqIFNsb3RBc3NpZ25tZW50OjpmaW5kRmlyCiAKICNpZm5kZWYgTkRF
QlVHCiAgICAgQVNTRVJUKCFzbG90SW5mby5lbGVtZW50IHx8IG1fc2xvdEVsZW1lbnRzRm9yQ29u
c2lzdGVuY3lDaGVjay5jb250YWlucyhzbG90SW5mby5lbGVtZW50KSk7CisgICAgQVNTRVJUKCEh
c2xvdEluZm8uZWxlbWVudCA9PSAhIXNsb3RJbmZvLmVsZW1lbnRDb3VudCk7CiAjZW5kaWYKIAog
ICAgIHJldHVybiBzbG90SW5mby5lbGVtZW50OwpAQCAtMjIzLDkgKzI0Niw3IEBAIHZvaWQgU2xv
dEFzc2lnbm1lbnQ6OmFzc2lnblNsb3RzKFNoYWRvd1IKICAgICBmb3IgKGF1dG8qIGNoaWxkID0g
aG9zdC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7
CiAgICAgICAgIGlmICghaXM8VGV4dD4oKmNoaWxkKSAmJiAhaXM8RWxlbWVudD4oKmNoaWxkKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvIHNsb3ROYW1lID0gbV9zbG90TmFt
ZUZ1bmN0aW9uKCpjaGlsZCk7Ci0gICAgICAgIGlmICghc2xvdE5hbWUpCi0gICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgYXV0byBzbG90TmFtZSA9IHNsb3ROYW1lRm9ySG9zdENoaWxkKCpj
aGlsZCk7CiAgICAgICAgIGFzc2lnblRvU2xvdCgqY2hpbGQsIHNsb3ROYW1lKTsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5oCShyZXZpc2lvbiAxOTgwNTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFNIQURPV19ET00pIHx8IEVOQUJMRShERVRBSUxT
X0VMRU1FTlQpCiAKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTM2LDE4ICszNywxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEVsZW1l
bnQ7CiBjbGFzcyBIVE1MU2xvdEVsZW1lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhZG93Um9v
dDsKIAogY2xhc3MgU2xvdEFzc2lnbm1lbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNs
b3RBc3NpZ25tZW50KTsKIHB1YmxpYzoKLSAgICB1c2luZyBTbG90TmFtZUZ1bmN0aW9uID0gc3Rk
OjpmdW5jdGlvbjxBdG9taWNTdHJpbmcgKGNvbnN0IE5vZGUmIGNoaWxkKT47Ci0KICAgICBTbG90
QXNzaWdubWVudCgpOwotICAgIFNsb3RBc3NpZ25tZW50KFNsb3ROYW1lRnVuY3Rpb24pOwotICAg
IH5TbG90QXNzaWdubWVudCgpIHsgfQorICAgIHZpcnR1YWwgflNsb3RBc3NpZ25tZW50KCk7CiAK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0U2xvdE5hbWUoKSB7IHJldHVy
biBlbXB0eUF0b207IH0KIApAQCAtNTYsMTAgKzU0LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGFk
ZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYsIEhUTUxTbG90RWxlbWVudCYs
IFNoYWRvd1Jvb3QmKTsKICAgICB2b2lkIHJlbW92ZVNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0
b21pY1N0cmluZyYsIEhUTUxTbG90RWxlbWVudCYsIFNoYWRvd1Jvb3QmKTsKIAorICAgIGVudW0g
Y2xhc3MgQ2hhbmdlVHlwZSB7IERpcmVjdENoaWxkLCBJbm5lclNsb3QgfTsKKyAgICB2b2lkIGRp
ZENoYW5nZVNsb3QoY29uc3QgQXRvbWljU3RyaW5nJiwgQ2hhbmdlVHlwZSwgU2hhZG93Um9vdCYp
OworICAgIHZvaWQgZW5xdWV1ZVNsb3RDaGFuZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBT
aGFkb3dSb290Jik7CisKICAgICBjb25zdCBWZWN0b3I8Tm9kZSo+KiBhc3NpZ25lZE5vZGVzRm9y
U2xvdChjb25zdCBIVE1MU2xvdEVsZW1lbnQmLCBTaGFkb3dSb290Jik7CiAKLSAgICB2b2lkIGlu
dmFsaWRhdGUoU2hhZG93Um9vdCYpOwotICAgIHZvaWQgaW52YWxpZGF0ZURlZmF1bHRTbG90KFNo
YWRvd1Jvb3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgaG9zdENoaWxkRWxlbWVudERpZENoYW5nZShj
b25zdCBFbGVtZW50JiwgU2hhZG93Um9vdCYpOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBTbG90
SW5mbyB7CkBAIC03Nyw2ICs3OCw4IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIGVsZW1l
bnRDb3VudCB7IDAgfTsKICAgICAgICAgVmVjdG9yPE5vZGUqPiBhc3NpZ25lZE5vZGVzOwogICAg
IH07CisgICAgCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNsb3ROYW1lRm9ySG9z
dENoaWxkKGNvbnN0IE5vZGUmKSBjb25zdDsKIAogICAgIEhUTUxTbG90RWxlbWVudCogZmluZEZp
cnN0U2xvdEVsZW1lbnQoU2xvdEluZm8mLCBTaGFkb3dSb290Jik7CiAgICAgdm9pZCByZXNvbHZl
QWxsU2xvdEVsZW1lbnRzKFNoYWRvd1Jvb3QmKTsKQEAgLTg0LDggKzg3LDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGFzc2lnblNsb3RzKFNoYWRvd1Jvb3QmKTsKICAgICB2b2lkIGFzc2lnblRvU2xv
dChOb2RlJiBjaGlsZCwgY29uc3QgQXRvbWljU3RyaW5nJiBzbG90TmFtZSk7CiAKLSAgICBTbG90
TmFtZUZ1bmN0aW9uIG1fc2xvdE5hbWVGdW5jdGlvbjsKLQogICAgIEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEluZm8+PiBtX3Nsb3RzOwogCiAjaWZuZGVmIE5ERUJV
RwpAQCAtOTYsNiArOTcsMzggQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2xvdEFzc2lnbm1lbnRz
SXNWYWxpZCB7IGZhbHNlIH07CiB9OwogCitpbmxpbmUgdm9pZCBTaGFkb3dSb290OjpkaWRSZW1v
dmVBbGxDaGlsZHJlbk9mU2hhZG93SG9zdCgpCit7CisgICAgaWYgKG1fc2xvdEFzc2lnbm1lbnQp
IC8vIEZJWE1FOiBUaGlzIGlzIGluY29ycmVjdCB3aGVuIHRoZXJlIHdlcmUgbm8gZWxlbWVudHMg
b3IgdGV4dCBub2RlcyByZW1vdmVkLgorICAgICAgICBtX3Nsb3RBc3NpZ25tZW50LT5kaWRDaGFu
Z2VTbG90KG51bGxBdG9tLCBTbG90QXNzaWdubWVudDo6Q2hhbmdlVHlwZTo6RGlyZWN0Q2hpbGQs
ICp0aGlzKTsKK30KKworaW5saW5lIHZvaWQgU2hhZG93Um9vdDo6ZGlkQ2hhbmdlRGVmYXVsdFNs
b3QoKQoreworICAgIGlmIChtX3Nsb3RBc3NpZ25tZW50KQorICAgICAgICBtX3Nsb3RBc3NpZ25t
ZW50LT5kaWRDaGFuZ2VTbG90KG51bGxBdG9tLCBTbG90QXNzaWdubWVudDo6Q2hhbmdlVHlwZTo6
RGlyZWN0Q2hpbGQsICp0aGlzKTsKK30KKworaW5saW5lIHZvaWQgU2hhZG93Um9vdDo6aG9zdENo
aWxkRWxlbWVudERpZENoYW5nZShjb25zdCBFbGVtZW50JiBjaGlsZEVsZW1lbnQpCit7CisgICAg
aWYgKG1fc2xvdEFzc2lnbm1lbnQpCisgICAgICAgIG1fc2xvdEFzc2lnbm1lbnQtPmhvc3RDaGls
ZEVsZW1lbnREaWRDaGFuZ2UoY2hpbGRFbGVtZW50LCAqdGhpcyk7Cit9CisKK2lubGluZSB2b2lk
IFNoYWRvd1Jvb3Q6Omhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2VTbG90QXR0cihjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQoreworICAg
IGlmIChtX3Nsb3RBc3NpZ25tZW50KSB7CisgICAgICAgIG1fc2xvdEFzc2lnbm1lbnQtPmRpZENo
YW5nZVNsb3Qob2xkVmFsdWUsIFNsb3RBc3NpZ25tZW50OjpDaGFuZ2VUeXBlOjpEaXJlY3RDaGls
ZCwgKnRoaXMpOworICAgICAgICBtX3Nsb3RBc3NpZ25tZW50LT5kaWRDaGFuZ2VTbG90KG5ld1Zh
bHVlLCBTbG90QXNzaWdubWVudDo6Q2hhbmdlVHlwZTo6RGlyZWN0Q2hpbGQsICp0aGlzKTsKKyAg
ICB9Cit9CisKK2lubGluZSB2b2lkIFNoYWRvd1Jvb3Q6OmlubmVyU2xvdERpZENoYW5nZShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKG1fc2xvdEFzc2lnbm1lbnQpCisgICAg
ICAgIG1fc2xvdEFzc2lnbm1lbnQtPmRpZENoYW5nZVNsb3QobmFtZSwgU2xvdEFzc2lnbm1lbnQ6
OkNoYW5nZVR5cGU6OklubmVyU2xvdCwgKnRoaXMpOworfQorCiB9CiAKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAkocmV2aXNpb24gMTk4
MDU2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw3ICs0NCwyMyBAQCBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBz
dW1tYXJ5U2xvdE5hCiAgICAgcmV0dXJuIHN1bW1hcnlTbG90OwogfQogCi1zdGF0aWMgQXRvbWlj
U3RyaW5nIHNsb3ROYW1lRnVuY3Rpb24oY29uc3QgTm9kZSYgY2hpbGQpCitjbGFzcyBEZXRhaWxz
U2xvdEFzc2lnbm1lbnQgZmluYWwgOiBwdWJsaWMgU2xvdEFzc2lnbm1lbnQgeworcHJpdmF0ZToK
KyAgICB2b2lkIGhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoY29uc3QgRWxlbWVudCYsIFNoYWRv
d1Jvb3QmKSBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNsb3ROYW1lRm9ySG9z
dENoaWxkKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKK307CisKK3ZvaWQgRGV0YWlsc1Ns
b3RBc3NpZ25tZW50Ojpob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlKGNvbnN0IEVsZW1lbnQmIGNo
aWxkRWxlbWVudCwgU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKK3sKKyAgICBpZiAoaXM8SFRNTFN1
bW1hcnlFbGVtZW50PihjaGlsZEVsZW1lbnQpKSB7CisgICAgICAgIC8vIERvbid0IGNoZWNrIHdo
ZXRoZXIgdGhpcyBpcyB0aGUgZmlyc3Qgc3VtbWFyeSBlbGVtZW50CisgICAgICAgIC8vIHNpbmNl
IHdlIGRvbid0IGtub3cgdGhlIGFuc3dlciB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGlu
c2lkZSBFbGVtZW50OjpyZW1vdmVkRnJvbS4KKyAgICAgICAgZGlkQ2hhbmdlU2xvdChzdW1tYXJ5
U2xvdE5hbWUoKSwgQ2hhbmdlVHlwZTo6RGlyZWN0Q2hpbGQsIHNoYWRvd1Jvb3QpOworICAgIH0g
ZWxzZQorICAgICAgICBkaWRDaGFuZ2VTbG90KFNsb3RBc3NpZ25tZW50OjpkZWZhdWx0U2xvdE5h
bWUoKSwgQ2hhbmdlVHlwZTo6RGlyZWN0Q2hpbGQsIHNoYWRvd1Jvb3QpOworfQorCitjb25zdCBB
dG9taWNTdHJpbmcmIERldGFpbHNTbG90QXNzaWdubWVudDo6c2xvdE5hbWVGb3JIb3N0Q2hpbGQo
Y29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0CiB7CiAgICAgYXV0byYgcGFyZW50ID0gKmNoaWxkLnBh
cmVudE5vZGUoKTsKICAgICBBU1NFUlQoaXM8SFRNTERldGFpbHNFbGVtZW50PihwYXJlbnQpKTsK
QEAgLTU1LDE4ICs3MSwxMyBAQCBzdGF0aWMgQXRvbWljU3RyaW5nIHNsb3ROYW1lRnVuY3Rpb24o
Y29uCiAgICAgICAgIGlmICgmY2hpbGQgPT0gY2hpbGRyZW5PZlR5cGU8SFRNTFN1bW1hcnlFbGVt
ZW50PihkZXRhaWxzKS5maXJzdCgpKQogICAgICAgICAgICAgcmV0dXJuIHN1bW1hcnlTbG90TmFt
ZSgpOwogICAgIH0KLSAgICAvLyBFdmVyeXRoaW5nIGVsc2UgaXMgYXNzaWduZWQgdG8gdGhlIGRl
ZmF1bHQgc2xvdCBpZiBkZXRhaWxzIGlzIG9wZW4uCi0gICAgaWYgKGRldGFpbHMuaXNPcGVuKCkp
Ci0gICAgICAgIHJldHVybiBTbG90QXNzaWdubWVudDo6ZGVmYXVsdFNsb3ROYW1lKCk7Ci0KLSAg
ICAvLyBPdGhlcndpc2UgZG9uJ3QgcmVuZGVyIHRoZSBjb250ZW50LgotICAgIHJldHVybiBudWxs
QXRvbTsKLX07CisgICAgcmV0dXJuIFNsb3RBc3NpZ25tZW50OjpkZWZhdWx0U2xvdE5hbWUoKTsK
K30KIAogUmVmPEhUTUxEZXRhaWxzRWxlbWVudD4gSFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAg
IGF1dG8gZGV0YWlscyA9IGFkb3B0UmVmKCpuZXcgSFRNTERldGFpbHNFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KSk7Ci0gICAgZGV0YWlscy0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVh
dGUoZG9jdW1lbnQsIHN0ZDo6bWFrZV91bmlxdWU8U2xvdEFzc2lnbm1lbnQ+KHNsb3ROYW1lRnVu
Y3Rpb24pKSk7CisgICAgZGV0YWlscy0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVhdGUo
ZG9jdW1lbnQsIHN0ZDo6bWFrZV91bmlxdWU8RGV0YWlsc1Nsb3RBc3NpZ25tZW50PigpKSk7CiAg
ICAgcmV0dXJuIGRldGFpbHM7CiB9CiAKQEAgLTk0LDggKzEwNSw4IEBAIHZvaWQgSFRNTERldGFp
bHNFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnQKICAgICBzdW1tYXJ5U2xvdC0+YXBwZW5kQ2hpbGQo
V1RGTW92ZShkZWZhdWx0U3VtbWFyeSkpOwogICAgIHJvb3QtPmFwcGVuZENoaWxkKFdURk1vdmUo
c3VtbWFyeVNsb3QpKTsKIAotICAgIGF1dG8gZGVmYXVsdFNsb3QgPSBIVE1MU2xvdEVsZW1lbnQ6
OmNyZWF0ZShzbG90VGFnLCBkb2N1bWVudCgpKTsKLSAgICByb290LT5hcHBlbmRDaGlsZChXVEZN
b3ZlKGRlZmF1bHRTbG90KSk7CisgICAgbV9kZWZhdWx0U2xvdCA9IEhUTUxTbG90RWxlbWVudDo6
Y3JlYXRlKHNsb3RUYWcsIGRvY3VtZW50KCkpOworICAgIEFTU0VSVCghbV9pc09wZW4pOwogfQog
CiBib29sIEhUTUxEZXRhaWxzRWxlbWVudDo6aXNBY3RpdmVTdW1tYXJ5KGNvbnN0IEhUTUxTdW1t
YXJ5RWxlbWVudCYgc3VtbWFyeSkgY29uc3QKQEAgLTExNCw4ICsxMjUsMTQgQEAgdm9pZCBIVE1M
RGV0YWlsc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKAogICAgIGlmIChuYW1lID09IG9wZW5BdHRy
KSB7CiAgICAgICAgIGJvb2wgb2xkVmFsdWUgPSBtX2lzT3BlbjsKICAgICAgICAgbV9pc09wZW4g
PSAhdmFsdWUuaXNOdWxsKCk7Ci0gICAgICAgIGlmIChvbGRWYWx1ZSAhPSBtX2lzT3BlbikKLSAg
ICAgICAgICAgIHNoYWRvd1Jvb3QoKS0+aW52YWxpZGF0ZVNsb3RBc3NpZ25tZW50cygpOworICAg
ICAgICBpZiAob2xkVmFsdWUgIT0gbV9pc09wZW4pIHsKKyAgICAgICAgICAgIGF1dG8qIHJvb3Qg
PSBzaGFkb3dSb290KCk7CisgICAgICAgICAgICBBU1NFUlQocm9vdCk7CisgICAgICAgICAgICBp
ZiAobV9pc09wZW4pCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kQ2hpbGQoKm1fZGVmYXVs
dFNsb3QpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJvb3QtPnJlbW92ZUNo
aWxkKCptX2RlZmF1bHRTbG90KTsKKyAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBIVE1M
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCShyZXZpc2lvbiAxOTgwNTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw2ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzT3BlbiB7IGZhbHNlIH07CiAgICAg
SFRNTFNsb3RFbGVtZW50KiBtX3N1bW1hcnlTbG90IHsgbnVsbHB0ciB9OwogICAgIEhUTUxTdW1t
YXJ5RWxlbWVudCogbV9kZWZhdWx0U3VtbWFyeSB7IG51bGxwdHIgfTsKKyAgICBSZWZQdHI8SFRN
TFNsb3RFbGVtZW50PiBtX2RlZmF1bHRTbG90OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmNwcAkocmV2aXNpb24g
MTk4MDU2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaWYgRU5BQkxFKFNIQURPV19ET00pIHx8IEVO
QUJMRShERVRBSUxTX0VMRU1FTlQpCiAKICNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5o
IgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIApAQCAtOTcsNiArOTksMjcg
QEAgY29uc3QgVmVjdG9yPE5vZGUqPiogSFRNTFNsb3RFbGVtZW50OjphcwogICAgIHJldHVybiBz
aGFkb3dSb290LT5hc3NpZ25lZE5vZGVzRm9yU2xvdCgqdGhpcyk7CiB9CiAKK3ZvaWQgSFRNTFNs
b3RFbGVtZW50OjplbnF1ZXVlU2xvdENoYW5nZUV2ZW50KCkKK3sKKyAgICBpZiAobV9oYXNFbnF1
ZXVlZFNsb3RDaGFuZ2VFdmVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBidWJibGVz
ID0gZmFsc2U7CisgICAgYm9vbCBjYW5jZWxhYmxlID0gZmFsc2U7CisgICAgYXV0byBldmVudCA9
IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNsb3RjaGFuZ2VFdmVudCwgYnViYmxlcywgY2Fu
Y2VsYWJsZSk7CisgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICBkb2N1bWVudCgpLmVu
cXVldWVTbG90Y2hhbmdlRXZlbnQoV1RGTW92ZShldmVudCkpOworCisgICAgbV9oYXNFbnF1ZXVl
ZFNsb3RDaGFuZ2VFdmVudCA9IHRydWU7Cit9CisKK2Jvb2wgSFRNTFNsb3RFbGVtZW50OjpkaXNw
YXRjaEV2ZW50KEV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50
TmFtZXMoKS5zbG90Y2hhbmdlRXZlbnQpCisgICAgICAgIG1faGFzRW5xdWV1ZWRTbG90Q2hhbmdl
RXZlbnQgPSBmYWxzZTsKKyAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQoZXZl
bnQpOworfQorCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xv
dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxl
bWVudC5oCShyZXZpc2lvbiAxOTgwNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMiArMzksMTggQEAgcHVibGljOgogCiAg
ICAgY29uc3QgVmVjdG9yPE5vZGUqPiogYXNzaWduZWROb2RlcygpIGNvbnN0OwogCisgICAgdm9p
ZCBlbnF1ZXVlU2xvdENoYW5nZUV2ZW50KCk7CisKIHByaXZhdGU6CiAgICAgSFRNTFNsb3RFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgSW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQg
YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZp
Y2F0aW9uUmVhc29uKSBvdmVycmlkZTsKKworICAgIGJvb2wgZGlzcGF0Y2hFdmVudChFdmVudCYp
IG92ZXJyaWRlOworCisgICAgYm9vbCBtX2hhc0VucXVldWVkU2xvdENoYW5nZUV2ZW50IHsgZmFs
c2UgfTsKIH07CiAKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODA1NikKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE2LTAzLTE0ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBzbG90Y2hhbmdl
IGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTU0MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0OTk3NTM0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL1NoYWRv
d1Jvb3QtaW50ZXJmYWNlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20v
U2hhZG93Um9vdC1pbnRlcmZhY2UuaHRtbDoKKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vc2xv
dGNoYW5nZS1ldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhZG93
LWRvbS9zbG90Y2hhbmdlLWV2ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDE2LTAzLTExICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBFdmVudC5kZWVwUGF0aCgp
IGFuZCBFdmVudC5zY29wZWQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9TaGFk
b3dSb290LWludGVyZmFjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9zaGFkb3ctZG9tL1NoYWRvd1Jvb3QtaW50ZXJmYWNlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMTk4MDU2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL1NoYWRvd1Jvb3QtaW50
ZXJmYWNlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDMgQEAKLUJsb2Nr
ZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRv
cnkvd2Via2l0L3RydW5rL0xheW91dFRlc3RzL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MKIAog
UEFTUyBDaGVjayB0aGUgZXhpc3RlbmNlIG9mIFNoYWRvd1Jvb3QgaW50ZXJmYWNlIAogUEFTUyBT
aGFkb3dSb290IG11c3QgaW5oZXJpdCBmcm9tIERvY3VtZW50RnJhZ21lbnQgCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vU2hhZG93Um9vdC1pbnRlcmZhY2UuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vU2hhZG93Um9vdC1pbnRlcmZhY2Uu
aHRtbAkocmV2aXNpb24gMTk4MDU2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL1No
YWRvd1Jvb3QtaW50ZXJmYWNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsNyArNyw3IEBACiA8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJjb21wb25lbnRz
L3NwZWMvc2hhZG93LyN0aGUtc2hhZG93cm9vdC1pbnRlcmZhY2UiPgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxsaW5rIHJlbD0n
c3R5bGVzaGVldCcgaHJlZj0naHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtp
dC90cnVuay9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KKzxsaW5rIHJl
bD0nc3R5bGVzaGVldCcgaHJlZj0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+CiA8
L2hlYWQ+CiA8Ym9keT4KIDxkaXYgaWQ9ImxvZyI+PC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L3NoYWRvdy1kb20vc2xvdGNoYW5nZS1ldmVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3Nsb3RjaGFuZ2UtZXZlbnQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3Nsb3RjaGFu
Z2UtZXZlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKK2hl
bGxvCitoZWxsbworCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBmaXJlIG9uIGEgZGVmYXVs
dCBzbG90IGVsZW1lbnQgaW5zaWRlIGFuIG9wZW4gc2hhZG93IHJvb3QgIGluIGEgZG9jdW1lbnQg
CitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBmaXJlIG9uIGEgZGVmYXVsdCBzbG90IGVsZW1l
bnQgaW5zaWRlIGEgY2xvc2VkIHNoYWRvdyByb290ICBpbiBhIGRvY3VtZW50IAorUEFTUyBzbG90
Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBhIGRlZmF1bHQgc2xvdCBlbGVtZW50IGluc2lkZSBh
biBvcGVuIHNoYWRvdyByb290ICBub3QgaW4gYSBkb2N1bWVudCAKK1BBU1Mgc2xvdGNoYW5nZSBl
dmVudCBtdXN0IGZpcmUgb24gYSBkZWZhdWx0IHNsb3QgZWxlbWVudCBpbnNpZGUgYSBjbG9zZWQg
c2hhZG93IHJvb3QgIG5vdCBpbiBhIGRvY3VtZW50IAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11
c3QgZmlyZSBvbiBhIG5hbWVkIHNsb3QgZWxlbWVudCBpbnNpZGVhbiBvcGVuIHNoYWRvdyByb290
ICBpbiBhIGRvY3VtZW50IAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBhIG5h
bWVkIHNsb3QgZWxlbWVudCBpbnNpZGVhIGNsb3NlZCBzaGFkb3cgcm9vdCAgaW4gYSBkb2N1bWVu
dCAKK1BBU1Mgc2xvdGNoYW5nZSBldmVudCBtdXN0IGZpcmUgb24gYSBuYW1lZCBzbG90IGVsZW1l
bnQgaW5zaWRlYW4gb3BlbiBzaGFkb3cgcm9vdCAgbm90IGluIGEgZG9jdW1lbnQgCitQQVNTIHNs
b3RjaGFuZ2UgZXZlbnQgbXVzdCBmaXJlIG9uIGEgbmFtZWQgc2xvdCBlbGVtZW50IGluc2lkZWEg
Y2xvc2VkIHNoYWRvdyByb290ICBub3QgaW4gYSBkb2N1bWVudCAKK1BBU1Mgc2xvdGNoYW5nZSBl
dmVudCBtdXN0IG5vdCBmaXJlIG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBhbiBvcGVuIHNoYWRv
dyByb290ICBpbiBhIGRvY3VtZW50IHdoZW4gYW5vdGhlciBzbG90J3MgYXNzaWduZWQgbm9kZXMg
Y2hhbmdlIAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3Qgbm90IGZpcmUgb24gYSBzbG90IGVs
ZW1lbnQgaW5zaWRlIGEgY2xvc2VkIHNoYWRvdyByb290ICBpbiBhIGRvY3VtZW50IHdoZW4gYW5v
dGhlciBzbG90J3MgYXNzaWduZWQgbm9kZXMgY2hhbmdlIAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50
IG11c3Qgbm90IGZpcmUgb24gYSBzbG90IGVsZW1lbnQgaW5zaWRlIGFuIG9wZW4gc2hhZG93IHJv
b3QgIG5vdCBpbiBhIGRvY3VtZW50IHdoZW4gYW5vdGhlciBzbG90J3MgYXNzaWduZWQgbm9kZXMg
Y2hhbmdlIAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3Qgbm90IGZpcmUgb24gYSBzbG90IGVs
ZW1lbnQgaW5zaWRlIGEgY2xvc2VkIHNoYWRvdyByb290ICBub3QgaW4gYSBkb2N1bWVudCB3aGVu
IGFub3RoZXIgc2xvdCdzIGFzc2lnbmVkIG5vZGVzIGNoYW5nZSAKK1BBU1Mgc2xvdGNoYW5nZSBl
dmVudCBtdXN0IG5vdCBmaXJlIG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBhbiBvcGVuIHNoYWRv
dyByb290ICBpbiBhIGRvY3VtZW50IHdoZW4gdGhlIHNoYWRvdyBob3N0IHdhcyBtdXRhdGVkIGJl
Zm9yZSB0aGUgc2xvdCB3YXMgaW5zZXJ0ZWQgb3IgYWZ0ZXIgdGhlIHNsb3Qgd2FzIHJlbW92ZWQg
CitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBub3QgZmlyZSBvbiBhIHNsb3QgZWxlbWVudCBp
bnNpZGUgYSBjbG9zZWQgc2hhZG93IHJvb3QgIGluIGEgZG9jdW1lbnQgd2hlbiB0aGUgc2hhZG93
IGhvc3Qgd2FzIG11dGF0ZWQgYmVmb3JlIHRoZSBzbG90IHdhcyBpbnNlcnRlZCBvciBhZnRlciB0
aGUgc2xvdCB3YXMgcmVtb3ZlZCAKK1BBU1Mgc2xvdGNoYW5nZSBldmVudCBtdXN0IG5vdCBmaXJl
IG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBhbiBvcGVuIHNoYWRvdyByb290ICBub3QgaW4gYSBk
b2N1bWVudCB3aGVuIHRoZSBzaGFkb3cgaG9zdCB3YXMgbXV0YXRlZCBiZWZvcmUgdGhlIHNsb3Qg
d2FzIGluc2VydGVkIG9yIGFmdGVyIHRoZSBzbG90IHdhcyByZW1vdmVkIAorUEFTUyBzbG90Y2hh
bmdlIGV2ZW50IG11c3Qgbm90IGZpcmUgb24gYSBzbG90IGVsZW1lbnQgaW5zaWRlIGEgY2xvc2Vk
IHNoYWRvdyByb290ICBub3QgaW4gYSBkb2N1bWVudCB3aGVuIHRoZSBzaGFkb3cgaG9zdCB3YXMg
bXV0YXRlZCBiZWZvcmUgdGhlIHNsb3Qgd2FzIGluc2VydGVkIG9yIGFmdGVyIHRoZSBzbG90IHdh
cyByZW1vdmVkIAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBhIHNsb3QgZWxl
bWVudCBpbnNpZGUgYW4gb3BlbiBzaGFkb3cgcm9vdCAgaW4gYSBkb2N1bWVudCBldmVuIGlmIHRo
ZSBzbG90IHdhcyByZW1vdmVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBhc3NpZ25lZCBub2RlcyB3
ZXJlIG11dGF0ZWQgCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBmaXJlIG9uIGEgc2xvdCBl
bGVtZW50IGluc2lkZSBhIGNsb3NlZCBzaGFkb3cgcm9vdCAgaW4gYSBkb2N1bWVudCBldmVuIGlm
IHRoZSBzbG90IHdhcyByZW1vdmVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBhc3NpZ25lZCBub2Rl
cyB3ZXJlIG11dGF0ZWQgCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBmaXJlIG9uIGEgc2xv
dCBlbGVtZW50IGluc2lkZSBhbiBvcGVuIHNoYWRvdyByb290ICBub3QgaW4gYSBkb2N1bWVudCBl
dmVuIGlmIHRoZSBzbG90IHdhcyByZW1vdmVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBhc3NpZ25l
ZCBub2RlcyB3ZXJlIG11dGF0ZWQgCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBmaXJlIG9u
IGEgc2xvdCBlbGVtZW50IGluc2lkZSBhIGNsb3NlZCBzaGFkb3cgcm9vdCAgbm90IGluIGEgZG9j
dW1lbnQgZXZlbiBpZiB0aGUgc2xvdCB3YXMgcmVtb3ZlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUg
YXNzaWduZWQgbm9kZXMgd2VyZSBtdXRhdGVkIAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3Qg
ZmlyZSBvbiBhIHNsb3QgZWxlbWVudCBpbnNpZGUgYW4gb3BlbiBzaGFkb3cgcm9vdCAgaW4gYSBk
b2N1bWVudCB3aGVuIGlubmVySFRNTCBtb2RpZmllcyB0aGUgY2hpbGRyZW4gb2YgdGhlIHNoYWRv
dyBob3N0IAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBhIHNsb3QgZWxlbWVu
dCBpbnNpZGUgYSBjbG9zZWQgc2hhZG93IHJvb3QgIGluIGEgZG9jdW1lbnQgd2hlbiBpbm5lckhU
TUwgbW9kaWZpZXMgdGhlIGNoaWxkcmVuIG9mIHRoZSBzaGFkb3cgaG9zdCAKK1BBU1Mgc2xvdGNo
YW5nZSBldmVudCBtdXN0IGZpcmUgb24gYSBzbG90IGVsZW1lbnQgaW5zaWRlIGFuIG9wZW4gc2hh
ZG93IHJvb3QgIG5vdCBpbiBhIGRvY3VtZW50IHdoZW4gaW5uZXJIVE1MIG1vZGlmaWVzIHRoZSBj
aGlsZHJlbiBvZiB0aGUgc2hhZG93IGhvc3QgCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBm
aXJlIG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBhIGNsb3NlZCBzaGFkb3cgcm9vdCAgbm90IGlu
IGEgZG9jdW1lbnQgd2hlbiBpbm5lckhUTUwgbW9kaWZpZXMgdGhlIGNoaWxkcmVuIG9mIHRoZSBz
aGFkb3cgaG9zdCAKK1BBU1Mgc2xvdGNoYW5nZSBldmVudCBtdXN0IGZpcmUgb24gYSBzbG90IGVs
ZW1lbnQgaW5zaWRlIGFuIG9wZW4gc2hhZG93IHJvb3QgIGluIGEgZG9jdW1lbnQgd2hlbiBuZXN0
ZWQgc2xvdHMncyBjb250ZW50cyBjaGFuZ2UgCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBm
aXJlIG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBhIGNsb3NlZCBzaGFkb3cgcm9vdCAgaW4gYSBk
b2N1bWVudCB3aGVuIG5lc3RlZCBzbG90cydzIGNvbnRlbnRzIGNoYW5nZSAKK1BBU1Mgc2xvdGNo
YW5nZSBldmVudCBtdXN0IGZpcmUgb24gYSBzbG90IGVsZW1lbnQgaW5zaWRlIGFuIG9wZW4gc2hh
ZG93IHJvb3QgIG5vdCBpbiBhIGRvY3VtZW50IHdoZW4gbmVzdGVkIHNsb3RzJ3MgY29udGVudHMg
Y2hhbmdlIAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBhIHNsb3QgZWxlbWVu
dCBpbnNpZGUgYSBjbG9zZWQgc2hhZG93IHJvb3QgIG5vdCBpbiBhIGRvY3VtZW50IHdoZW4gbmVz
dGVkIHNsb3RzJ3MgY29udGVudHMgY2hhbmdlIAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3No
YWRvdy1kb20vc2xvdGNoYW5nZS1ldmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3Qvc2hhZG93LWRvbS9zbG90Y2hhbmdlLWV2ZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc2xvdGNoYW5nZS1ldmVudC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+U2hhZG93IERPTTogc2xvdGNoYW5nZSBldmVudDwvdGl0bGU+Cis8bWV0YSBuYW1l
PSJhdXRob3IiIHRpdGxlPSJSeW9zdWtlIE5pd2EiIGhyZWY9Im1haWx0bzpybml3YUB3ZWJraXQu
b3JnIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5jc3MnPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2Pgor
PHNjcmlwdD4KKworZnVuY3Rpb24gdHJlZU5hbWUobW9kZSwgY29ubmVjdGVkVG9Eb2N1bWVudCkK
K3sKKyAgICByZXR1cm4gKG1vZGUgPT0gJ29wZW4nID8gJ2FuICcgOiAnYSAnKSArIG1vZGUgKyAn
IHNoYWRvdyByb290ICcKKyAgICAgICAgKyAoY29ubmVjdGVkVG9Eb2N1bWVudCA/ICcnIDogJyBu
b3QnKSArICcgaW4gYSBkb2N1bWVudCc7Cit9CisKK2Z1bmN0aW9uIHRlc3RBcHBlbmRpbmdTcGFu
VG9TaGFkb3dSb290V2l0aERlZmF1bHRTbG90KG1vZGUsIGNvbm5lY3RlZFRvRG9jdW1lbnQpCit7
CisgICAgdmFyIHRlc3QgPSBhc3luY190ZXN0KCdzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBv
biBhIGRlZmF1bHQgc2xvdCBlbGVtZW50IGluc2lkZSAnCisgICAgICAgICsgdHJlZU5hbWUobW9k
ZSwgY29ubmVjdGVkVG9Eb2N1bWVudCkpOworCisgICAgdmFyIGhvc3Q7CisgICAgdmFyIHNsb3Q7
CisgICAgdmFyIGV2ZW50Q291bnQgPSAwOworCisgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBp
ZiAoY29ubmVjdGVkVG9Eb2N1bWVudCkKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoaG9zdCk7CisKKyAgICAgICAgdmFyIHNoYWRvd1Jvb3QgPSBob3N0LmF0dGFjaFNoYWRv
dyh7J21vZGUnOiBtb2RlfSk7CisgICAgICAgIHNsb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdzbG90Jyk7CisKKyAgICAgICAgc2xvdC5hZGRFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywg
ZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQuaXNGYWtlRXZlbnQpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQudHlwZSwgJ3Nsb3RjaGFu
Z2UnLCAnc2xvdGNoYW5nZSBldmVudFwncyB0eXBlIG11c3QgYmUgInNsb3RjaGFuZ2UiJyk7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC50YXJnZXQsIHNsb3QsICdzbG90Y2hh
bmdlIGV2ZW50XCdzIHRhcmdldCBtdXN0IGJlIHRoZSBzbG90IGVsZW1lbnQnKTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnJlbGF0ZWRUYXJnZXQsIHVuZGVmaW5lZCwgJ3Ns
b3RjaGFuZ2UgbXVzdCBub3Qgc2V0IHJlbGF0ZWRUYXJnZXQnKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgZXZlbnRDb3VudCsrOworICAgICAgICB9KTsKKworICAgICAgICBzaGFkb3dS
b290LmFwcGVuZENoaWxkKHNsb3QpOworCisgICAgICAgIGhvc3QuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICAgICAgaG9zdC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdiJykpOworCisgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnRD
b3VudCwgMCwgJ3Nsb3RjaGFuZ2UgZXZlbnQgbXVzdCBub3QgYmUgZmlyZWQgc3luY2hyb25vdXNs
eScpOworICAgIH0pOworCisgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgIHRl
c3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Q291
bnQsIDEsICdzbG90Y2hhbmdlIG11c3QgYmUgZmlyZWQgZXhhY3RseSBvbmNlIGFmdGVyIHRoZSBh
c3NpZ25lZCBub2RlcyBjaGFuZ2VkJyk7CisKKyAgICAgICAgICAgIGhvc3QuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnRDb3VudCwgMiwgJ3Nsb3RjaGFu
Z2UgbXVzdCBiZSBmaXJlZCBleGFjdGx5IG9uY2UgYWZ0ZXIgdGhlIGFzc2lnbmVkIG5vZGVzIGNo
YW5nZWQnKTsKKworICAgICAgICAgICAgICAgIGhvc3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoJ2hlbGxvJykpOworCisgICAgICAgICAgICAgICAgdmFyIGZha2VFdmVudCA9
IG5ldyBFdmVudCgnc2xvdGNoYW5nZScpOworICAgICAgICAgICAgICAgIGZha2VFdmVudC5pc0Zh
a2VFdmVudCA9IHRydWU7CisgICAgICAgICAgICAgICAgc2xvdC5kaXNwYXRjaEV2ZW50KGZha2VF
dmVudCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudENvdW50LCAzLCAnc2xvdGNoYW5nZSBtdXN0
IGJlIGZpcmVkIGV4YWN0bHkgb25jZSBhZnRlciB0aGUgYXNzaWduZWQgbm9kZXMgY2hhbmdlZCcK
KyAgICAgICAgICAgICAgICAgICAgICAgICsgJyBldmVudCBpZiB0aGVyZSB3YXMgYSBzeW50aGV0
aWMgc2xvdGNoYW5nZSBldmVudCBmaXJlZCcpOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIHRlc3QuZG9uZSgpOworICAgICAgICAgICAgfSwgMSk7CisgICAgICAgIH0sIDEp
OworICAgIH0sIDEpOworfQorCit0ZXN0QXBwZW5kaW5nU3BhblRvU2hhZG93Um9vdFdpdGhEZWZh
dWx0U2xvdCgnb3BlbicsIHRydWUpOwordGVzdEFwcGVuZGluZ1NwYW5Ub1NoYWRvd1Jvb3RXaXRo
RGVmYXVsdFNsb3QoJ2Nsb3NlZCcsIHRydWUpOwordGVzdEFwcGVuZGluZ1NwYW5Ub1NoYWRvd1Jv
b3RXaXRoRGVmYXVsdFNsb3QoJ29wZW4nLCBmYWxzZSk7Cit0ZXN0QXBwZW5kaW5nU3BhblRvU2hh
ZG93Um9vdFdpdGhEZWZhdWx0U2xvdCgnY2xvc2VkJywgZmFsc2UpOworCitmdW5jdGlvbiB0ZXN0
QXBwZW5kaW5nU3BhblRvU2hhZG93Um9vdFdpdGhOYW1lZFNsb3QobW9kZSwgY29ubmVjdGVkVG9E
b2N1bWVudCkKK3sKKyAgICB2YXIgdGVzdCA9IGFzeW5jX3Rlc3QoJ3Nsb3RjaGFuZ2UgZXZlbnQg
bXVzdCBmaXJlIG9uIGEgbmFtZWQgc2xvdCBlbGVtZW50IGluc2lkZScKKyAgICAgICAgKyB0cmVl
TmFtZShtb2RlLCBjb25uZWN0ZWRUb0RvY3VtZW50KSk7CisKKyAgICB2YXIgaG9zdDsKKyAgICB2
YXIgc2xvdDsKKyAgICB2YXIgZXZlbnRDb3VudCA9IDA7CisKKyAgICB0ZXN0LnN0ZXAoZnVuY3Rp
b24gKCkgeworICAgICAgICBob3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgICAgIGlmIChjb25uZWN0ZWRUb0RvY3VtZW50KQorICAgICAgICAgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChob3N0KTsKKworICAgICAgICB2YXIgc2hhZG93Um9vdCA9IGhvc3QuYXR0
YWNoU2hhZG93KHsnbW9kZSc6IG1vZGV9KTsKKyAgICAgICAgc2xvdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3Nsb3QnKTsKKyAgICAgICAgc2xvdC5uYW1lID0gJ3NvbWVTbG90JzsKKworICAg
ICAgICBzbG90LmFkZEV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCBmdW5jdGlvbiAoZXZlbnQp
IHsKKyAgICAgICAgICAgIGlmIChldmVudC5pc0Zha2VFdmVudCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC50eXBlLCAnc2xvdGNoYW5nZScsICdzbG90Y2hhbmdl
IGV2ZW50XCdzIHR5cGUgbXVzdCBiZSAic2xvdGNoYW5nZSInKTsKKyAgICAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKGV2ZW50LnRhcmdldCwgc2xvdCwgJ3Nsb3RjaGFuZ2UgZXZlbnRcJ3MgdGFy
Z2V0IG11c3QgYmUgdGhlIHNsb3QgZWxlbWVudCcpOworICAgICAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoZXZlbnQucmVsYXRlZFRhcmdldCwgdW5kZWZpbmVkLCAnc2xvdGNoYW5nZSBtdXN0IG5v
dCBzZXQgcmVsYXRlZFRhcmdldCcpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBldmVu
dENvdW50Kys7CisgICAgICAgIH0pOworCisgICAgICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQo
c2xvdCk7CisKKyAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFu
Jyk7CisgICAgICAgIHNwYW4uc2xvdCA9ICdzb21lU2xvdCc7CisgICAgICAgIGhvc3QuYXBwZW5k
Q2hpbGQoc3Bhbik7CisKKyAgICAgICAgdmFyIGIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdi
Jyk7CisgICAgICAgIGIuc2xvdCA9ICdzb21lU2xvdCc7CisgICAgICAgIGhvc3QuYXBwZW5kQ2hp
bGQoYik7CisKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudENvdW50LCAwLCAnc2xvdGNoYW5n
ZSBldmVudCBtdXN0IG5vdCBiZSBmaXJlZCBzeW5jaHJvbm91c2x5Jyk7CisgICAgfSk7CisKKyAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnRDb3VudCwgMSwgJ3Nsb3RjaGFuZ2Ug
bXVzdCBiZSBmaXJlZCBleGFjdGx5IG9uY2UgYWZ0ZXIgdGhlIGFzc2lnbmVkIG5vZGVzIGNoYW5n
ZWQnKTsKKworICAgICAgICAgICAgdmFyIGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpJyk7
CisgICAgICAgICAgICBpLnNsb3QgPSAnc29tZVNsb3QnOworICAgICAgICAgICAgaG9zdC5hcHBl
bmRDaGlsZChpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoZXZlbnRDb3VudCwgMiwgJ3Nsb3RjaGFuZ2UgbXVzdCBiZSBmaXJlZCBl
eGFjdGx5IG9uY2UgYWZ0ZXIgdGhlIGFzc2lnbmVkIG5vZGVzIGNoYW5nZWQnKTsKKworICAgICAg
ICAgICAgICAgIHZhciBlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2VtJyk7CisgICAgICAg
ICAgICAgICAgZW0uc2xvdCA9ICdzb21lU2xvdCc7CisgICAgICAgICAgICAgICAgaG9zdC5hcHBl
bmRDaGlsZChlbSk7CisKKyAgICAgICAgICAgICAgICB2YXIgZmFrZUV2ZW50ID0gbmV3IEV2ZW50
KCdzbG90Y2hhbmdlJyk7CisgICAgICAgICAgICAgICAgZmFrZUV2ZW50LmlzRmFrZUV2ZW50ID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICBzbG90LmRpc3BhdGNoRXZlbnQoZmFrZUV2ZW50KTsKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKGV2ZW50Q291bnQsIDMsICdzbG90Y2hhbmdlIG11c3QgYmUgZmlyZWQg
ZXhhY3RseSBvbmNlIGFmdGVyIHRoZSBhc3NpZ25lZCBub2RlcyBjaGFuZ2VkJworICAgICAgICAg
ICAgICAgICAgICAgICAgKyAnIGV2ZW50IGlmIHRoZXJlIHdhcyBhIHN5bnRoZXRpYyBzbG90Y2hh
bmdlIGV2ZW50IGZpcmVkJyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
dGVzdC5kb25lKCk7CisgICAgICAgICAgICB9LCAxKTsKKworICAgICAgICB9LCAxKTsKKyAgICB9
LCAxKTsKK30KKwordGVzdEFwcGVuZGluZ1NwYW5Ub1NoYWRvd1Jvb3RXaXRoTmFtZWRTbG90KCdv
cGVuJywgdHJ1ZSk7Cit0ZXN0QXBwZW5kaW5nU3BhblRvU2hhZG93Um9vdFdpdGhOYW1lZFNsb3Qo
J2Nsb3NlZCcsIHRydWUpOwordGVzdEFwcGVuZGluZ1NwYW5Ub1NoYWRvd1Jvb3RXaXRoTmFtZWRT
bG90KCdvcGVuJywgZmFsc2UpOwordGVzdEFwcGVuZGluZ1NwYW5Ub1NoYWRvd1Jvb3RXaXRoTmFt
ZWRTbG90KCdjbG9zZWQnLCBmYWxzZSk7CisKK2Z1bmN0aW9uIHRlc3RTbG90Y2hhbmdlRG9lc05v
dEZpcmVXaGVuT3RoZXJTbG90c0NoYW5nZShtb2RlLCBjb25uZWN0ZWRUb0RvY3VtZW50KQorewor
ICAgIHZhciB0ZXN0ID0gYXN5bmNfdGVzdCgnc2xvdGNoYW5nZSBldmVudCBtdXN0IG5vdCBmaXJl
IG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSAnCisgICAgICAgICsgdHJlZU5hbWUobW9kZSwgY29u
bmVjdGVkVG9Eb2N1bWVudCkKKyAgICAgICAgKyAnIHdoZW4gYW5vdGhlciBzbG90XCdzIGFzc2ln
bmVkIG5vZGVzIGNoYW5nZScpOworCisgICAgdmFyIGhvc3Q7CisgICAgdmFyIGRlZmF1bHRTbG90
RXZlbnRDb3VudCA9IDA7CisgICAgdmFyIG5hbWVkU2xvdEV2ZW50Q291bnQgPSAwOworCisgICAg
dGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgICAgICBpZiAoY29ubmVjdGVkVG9Eb2N1bWVudCkKKyAgICAgICAg
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaG9zdCk7CisKKyAgICAgICAgdmFyIHNoYWRv
d1Jvb3QgPSBob3N0LmF0dGFjaFNoYWRvdyh7J21vZGUnOiBtb2RlfSk7CisgICAgICAgIHZhciBk
ZWZhdWx0U2xvdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Nsb3QnKTsKKyAgICAgICAgZGVm
YXVsdFNsb3QuYWRkRXZlbnRMaXN0ZW5lcignc2xvdGNoYW5nZScsIGZ1bmN0aW9uIChldmVudCkg
eworICAgICAgICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKGV2ZW50LnRhcmdldCwgZGVmYXVsdFNsb3QsICdzbG90Y2hhbmdlIGV2ZW50
XCdzIHRhcmdldCBtdXN0IGJlIHRoZSBzbG90IGVsZW1lbnQnKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgZGVmYXVsdFNsb3RFdmVudENvdW50Kys7CisgICAgICAgIH0pOworCisgICAg
ICAgIHZhciBuYW1lZFNsb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzbG90Jyk7CisgICAg
ICAgIG5hbWVkU2xvdC5uYW1lID0gJ3Nsb3ROYW1lJzsKKyAgICAgICAgbmFtZWRTbG90LmFkZEV2
ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgICAg
IHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhl
dmVudC50YXJnZXQsIG5hbWVkU2xvdCwgJ3Nsb3RjaGFuZ2UgZXZlbnRcJ3MgdGFyZ2V0IG11c3Qg
YmUgdGhlIHNsb3QgZWxlbWVudCcpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBuYW1l
ZFNsb3RFdmVudENvdW50Kys7CisgICAgICAgIH0pOworCisgICAgICAgIHNoYWRvd1Jvb3QuYXBw
ZW5kQ2hpbGQoZGVmYXVsdFNsb3QpOworICAgICAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKG5h
bWVkU2xvdCk7CisKKyAgICAgICAgaG9zdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzcGFuJykpOworCisgICAgICAgIGFzc2VydF9lcXVhbHMoZGVmYXVsdFNsb3RFdmVudENv
dW50LCAwLCAnc2xvdGNoYW5nZSBldmVudCBtdXN0IG5vdCBiZSBmaXJlZCBzeW5jaHJvbm91c2x5
Jyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMobmFtZWRTbG90RXZlbnRDb3VudCwgMCwgJ3Nsb3Rj
aGFuZ2UgZXZlbnQgbXVzdCBub3QgYmUgZmlyZWQgc3luY2hyb25vdXNseScpOworICAgIH0pOwor
CisgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgIHRlc3Quc3RlcChmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlZmF1bHRTbG90RXZlbnRDb3VudCwg
MSwKKyAgICAgICAgICAgICAgICAnc2xvdGNoYW5nZSBtdXN0IGJlIGZpcmVkIGV4YWN0bHkgb25j
ZSBhZnRlciB0aGUgYXNzaWduZWQgbm9kZXMgY2hhbmdlIG9uIGEgZGVmYXVsdCBzbG90Jyk7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKG5hbWVkU2xvdEV2ZW50Q291bnQsIDAsCisgICAgICAg
ICAgICAgICAgJ3Nsb3RjaGFuZ2UgbXVzdCBub3QgYmUgZmlyZWQgb24gYSBuYW1lZCBzbG90IGFm
dGVyIHRoZSBhc3NpZ25lZCBub2RlcyBjaGFuZ2Ugb24gYSBkZWZhdWx0IHNsb3QnKTsKKworICAg
ICAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CisgICAg
ICAgICAgICBzcGFuLnNsb3QgPSAnc2xvdE5hbWUnOworICAgICAgICAgICAgaG9zdC5hcHBlbmRD
aGlsZChzcGFuKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoZGVmYXVsdFNsb3RFdmVudENvdW50LCAxLAorICAgICAgICAgICAgICAg
ICAgICAnc2xvdGNoYW5nZSBtdXN0IG5vdCBiZSBmaXJlZCBvbiBhIGRlZmF1bHQgc2xvdCBhZnRl
ciB0aGUgYXNzaWduZWQgbm9kZXMgY2hhbmdlIG9uIGEgbmFtZWQgc2xvdCcpOworICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMobmFtZWRTbG90RXZlbnRDb3VudCwgMSwKKyAgICAgICAgICAg
ICAgICAgICAgJ3Nsb3RjaGFuZ2UgbXVzdCBiZSBmaXJlZCBleGFjdGx5IG9uY2UgYWZ0ZXIgdGhl
IGFzc2lnbmVkIG5vZGVzIGNoYW5nZSBvbiBhIGRlZmF1bHQgc2xvdCcpOworICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB0ZXN0LmRvbmUoKTsKKyAgICAgICAgfSwgMSk7CisgICAgfSwgMSk7
Cit9CisKK3Rlc3RTbG90Y2hhbmdlRG9lc05vdEZpcmVXaGVuT3RoZXJTbG90c0NoYW5nZSgnb3Bl
bicsIHRydWUpOwordGVzdFNsb3RjaGFuZ2VEb2VzTm90RmlyZVdoZW5PdGhlclNsb3RzQ2hhbmdl
KCdjbG9zZWQnLCB0cnVlKTsKK3Rlc3RTbG90Y2hhbmdlRG9lc05vdEZpcmVXaGVuT3RoZXJTbG90
c0NoYW5nZSgnb3BlbicsIGZhbHNlKTsKK3Rlc3RTbG90Y2hhbmdlRG9lc05vdEZpcmVXaGVuT3Ro
ZXJTbG90c0NoYW5nZSgnY2xvc2VkJywgZmFsc2UpOworCitmdW5jdGlvbiB0ZXN0U2xvdGNoYW5n
ZURvZXNOb3RGaXJlRm9yTXV0YXRpb25CZWZvcmVPckFmdGVyU2xvdFdhc1ByZXNlbnQobW9kZSwg
Y29ubmVjdGVkVG9Eb2N1bWVudCkKK3sKKyAgICB2YXIgdGVzdCA9IGFzeW5jX3Rlc3QoJ3Nsb3Rj
aGFuZ2UgZXZlbnQgbXVzdCBub3QgZmlyZSBvbiBhIHNsb3QgZWxlbWVudCBpbnNpZGUgJworICAg
ICAgICArIHRyZWVOYW1lKG1vZGUsIGNvbm5lY3RlZFRvRG9jdW1lbnQpCisgICAgICAgICsgJyB3
aGVuIHRoZSBzaGFkb3cgaG9zdCB3YXMgbXV0YXRlZCBiZWZvcmUgdGhlIHNsb3Qgd2FzIGluc2Vy
dGVkIG9yIGFmdGVyIHRoZSBzbG90IHdhcyByZW1vdmVkJyk7CisKKyAgICB2YXIgaG9zdDsKKyAg
ICB2YXIgc2xvdDsKKyAgICB2YXIgZXZlbnRDb3VudCA9IDA7CisKKyAgICB0ZXN0LnN0ZXAoZnVu
Y3Rpb24gKCkgeworICAgICAgICBob3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgICAgIGlmIChjb25uZWN0ZWRUb0RvY3VtZW50KQorICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChob3N0KTsKKworICAgICAgICB2YXIgc2hhZG93Um9vdCA9IGhvc3Qu
YXR0YWNoU2hhZG93KHsnbW9kZSc6IG1vZGV9KTsKKyAgICAgICAgc2xvdCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3Nsb3QnKTsKKyAgICAgICAgc2xvdC5hZGRFdmVudExpc3RlbmVyKCdzbG90
Y2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQudGFyZ2V0LCBzbG90
LCAnc2xvdGNoYW5nZSBldmVudFwncyB0YXJnZXQgbXVzdCBiZSB0aGUgc2xvdCBlbGVtZW50Jyk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGV2ZW50Q291bnQrKzsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgaG9zdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFu
JykpOworICAgICAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHNsb3QpOworCisgICAgICAgIGFz
c2VydF9lcXVhbHMoZXZlbnRDb3VudCwgMCwgJ3Nsb3RjaGFuZ2UgZXZlbnQgbXVzdCBub3QgYmUg
ZmlyZWQgc3luY2hyb25vdXNseScpOworICAgIH0pOworCisgICAgc2V0VGltZW91dChmdW5jdGlv
biAoKSB7CisgICAgICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGV2ZW50Q291bnQsIDAsCisgICAgICAgICAgICAgICAgJ3Nsb3RjaGFuZ2UgbXVz
dCBub3QgYmUgZmlyZWQgb24gYSBzbG90IGVsZW1lbnQgaWYgdGhlIGFzc2lnbmVkIG5vZGVzIGNo
YW5nZWQgYmVmb3JlIHRoZSBzbG90IHdhcyBpbnNlcnRlZCcpOworICAgICAgICAgICAgaG9zdC5y
ZW1vdmVDaGlsZChob3N0LmZpcnN0Q2hpbGQpOworICAgICAgICB9KTsKKworICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudENvdW50LCAxLAorICAgICAgICAg
ICAgICAgICAgICAnc2xvdGNoYW5nZSBtdXN0IGJlIGZpcmVkIGV4YWN0bHkgb25jZSBhZnRlciB0
aGUgYXNzaWduZWQgbm9kZXMgY2hhbmdlIG9uIGEgc2xvdCB3aGlsZSB0aGUgc2xvdCBlbGVtZW50
IHdhcyBpbiB0aGUgdHJlZScpOworICAgICAgICAgICAgICAgIHNsb3QucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChzbG90KTsKKyAgICAgICAgICAgICAgICBob3N0LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhl
dmVudENvdW50LCAxLAorICAgICAgICAgICAgICAgICAgICAnc2xvdGNoYW5nZSBtdXN0IG5vdCBi
ZSBmaXJlZCBvbiBhIHNsb3QgZWxlbWVudCBpZiB0aGUgYXNzaWduZWQgbm9kZXMgY2hhbmdlZCBh
ZnRlciB0aGUgc2xvdCB3YXMgcmVtb3ZlZCcpOworICAgICAgICAgICAgICAgIHRlc3QuZG9uZSgp
OworICAgICAgICAgICAgfSwgMSk7CisgICAgICAgIH0sIDEpOworICAgIH0sIDEpOworfQorCit0
ZXN0U2xvdGNoYW5nZURvZXNOb3RGaXJlRm9yTXV0YXRpb25CZWZvcmVPckFmdGVyU2xvdFdhc1By
ZXNlbnQoJ29wZW4nLCB0cnVlKTsKK3Rlc3RTbG90Y2hhbmdlRG9lc05vdEZpcmVGb3JNdXRhdGlv
bkJlZm9yZU9yQWZ0ZXJTbG90V2FzUHJlc2VudCgnY2xvc2VkJywgdHJ1ZSk7Cit0ZXN0U2xvdGNo
YW5nZURvZXNOb3RGaXJlRm9yTXV0YXRpb25CZWZvcmVPckFmdGVyU2xvdFdhc1ByZXNlbnQoJ29w
ZW4nLCBmYWxzZSk7Cit0ZXN0U2xvdGNoYW5nZURvZXNOb3RGaXJlRm9yTXV0YXRpb25CZWZvcmVP
ckFmdGVyU2xvdFdhc1ByZXNlbnQoJ2Nsb3NlZCcsIGZhbHNlKTsKKworZnVuY3Rpb24gdGVzdFNs
b3RjaGFuZ2VGaXJlc09uVHJhbnNpZW50bHlQcmVzZW50U2xvdChtb2RlLCBjb25uZWN0ZWRUb0Rv
Y3VtZW50KQoreworICAgIHZhciB0ZXN0ID0gYXN5bmNfdGVzdCgnc2xvdGNoYW5nZSBldmVudCBt
dXN0IGZpcmUgb24gYSBzbG90IGVsZW1lbnQgaW5zaWRlICcKKyAgICAgICAgKyB0cmVlTmFtZSht
b2RlLCBjb25uZWN0ZWRUb0RvY3VtZW50KQorICAgICAgICArICcgZXZlbiBpZiB0aGUgc2xvdCB3
YXMgcmVtb3ZlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgYXNzaWduZWQgbm9kZXMgd2VyZSBtdXRh
dGVkJyk7CisKKyAgICB2YXIgaG9zdDsKKyAgICB2YXIgc2xvdDsKKyAgICB2YXIgYW5vdGhlclNs
b3Q7CisgICAgdmFyIHNsb3RFdmVudENvdW50ID0gMDsKKyAgICB2YXIgYW5vdGhlclNsb3RFdmVu
dENvdW50ID0gMDsKKworICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgIGhvc3Qg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgaWYgKGNvbm5lY3RlZFRv
RG9jdW1lbnQpCisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGhvc3QpOwor
CisgICAgICAgIHZhciBzaGFkb3dSb290ID0gaG9zdC5hdHRhY2hTaGFkb3coeydtb2RlJzogbW9k
ZX0pOworICAgICAgICBzbG90ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2xvdCcpOworICAg
ICAgICBzbG90Lm5hbWUgPSAnc29tZVNsb3QnOworICAgICAgICBzbG90LmFkZEV2ZW50TGlzdGVu
ZXIoJ3Nsb3RjaGFuZ2UnLCBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgICAgIHRlc3Quc3Rl
cChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC50YXJn
ZXQsIHNsb3QsICdzbG90Y2hhbmdlIGV2ZW50XCdzIHRhcmdldCBtdXN0IGJlIHRoZSBzbG90IGVs
ZW1lbnQnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc2xvdEV2ZW50Q291bnQrKzsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgYW5vdGhlclNsb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzbG90Jyk7CisgICAgICAgIGFub3RoZXJTbG90Lm5hbWUgPSAnc29tZVNsb3QnOworICAg
ICAgICBhbm90aGVyU2xvdC5hZGRFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgZnVuY3Rpb24g
KGV2ZW50KSB7CisgICAgICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQudGFyZ2V0LCBhbm90aGVyU2xvdCwgJ3Nsb3RjaGFu
Z2UgZXZlbnRcJ3MgdGFyZ2V0IG11c3QgYmUgdGhlIHNsb3QgZWxlbWVudCcpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICBhbm90aGVyU2xvdEV2ZW50Q291bnQrKzsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChzbG90KTsKKworICAgICAgICB2YXIg
c3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICAgICAgc3Bhbi5zbG90
ID0gJ3NvbWVTbG90JzsKKyAgICAgICAgaG9zdC5hcHBlbmRDaGlsZChzcGFuKTsKKworICAgICAg
ICBzaGFkb3dSb290LnJlbW92ZUNoaWxkKHNsb3QpOworICAgICAgICBzaGFkb3dSb290LmFwcGVu
ZENoaWxkKGFub3RoZXJTbG90KTsKKworICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICAgICAgc3Bhbi5zbG90ID0gJ3NvbWVTbG90JzsKKyAgICAg
ICAgaG9zdC5hcHBlbmRDaGlsZChzcGFuKTsKKworICAgICAgICBzaGFkb3dSb290LnJlbW92ZUNo
aWxkKGFub3RoZXJTbG90KTsKKworICAgICAgICBhc3NlcnRfZXF1YWxzKHNsb3RFdmVudENvdW50
LCAwLCAnc2xvdGNoYW5nZSBldmVudCBtdXN0IG5vdCBiZSBmaXJlZCBzeW5jaHJvbm91c2x5Jyk7
CisgICAgICAgIGFzc2VydF9lcXVhbHMoYW5vdGhlclNsb3RFdmVudENvdW50LCAwLCAnc2xvdGNo
YW5nZSBldmVudCBtdXN0IG5vdCBiZSBmaXJlZCBzeW5jaHJvbm91c2x5Jyk7CisgICAgfSk7CisK
KyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoc2xvdEV2ZW50Q291bnQsIDEsCisgICAg
ICAgICAgICAgICAgJ3Nsb3RjaGFuZ2UgbXVzdCBiZSBmaXJlZCBvbiBhIHNsb3QgZWxlbWVudCBp
ZiB0aGUgYXNzaWduZWQgbm9kZXMgY2hhbmdlZCB3aGlsZSB0aGUgc2xvdCB3YXMgcHJlc2VudCcp
OworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhbm90aGVyU2xvdEV2ZW50Q291bnQsIDEsCisg
ICAgICAgICAgICAgICAgJ3Nsb3RjaGFuZ2UgbXVzdCBiZSBmaXJlZCBvbiBhIHNsb3QgZWxlbWVu
dCBpZiB0aGUgYXNzaWduZWQgbm9kZXMgY2hhbmdlZCB3aGlsZSB0aGUgc2xvdCB3YXMgcHJlc2Vu
dCcpOworICAgICAgICB9KTsKKyAgICAgICAgdGVzdC5kb25lKCk7CisgICAgfSwgMSk7Cit9CisK
K3Rlc3RTbG90Y2hhbmdlRmlyZXNPblRyYW5zaWVudGx5UHJlc2VudFNsb3QoJ29wZW4nLCB0cnVl
KTsKK3Rlc3RTbG90Y2hhbmdlRmlyZXNPblRyYW5zaWVudGx5UHJlc2VudFNsb3QoJ2Nsb3NlZCcs
IHRydWUpOwordGVzdFNsb3RjaGFuZ2VGaXJlc09uVHJhbnNpZW50bHlQcmVzZW50U2xvdCgnb3Bl
bicsIGZhbHNlKTsKK3Rlc3RTbG90Y2hhbmdlRmlyZXNPblRyYW5zaWVudGx5UHJlc2VudFNsb3Qo
J2Nsb3NlZCcsIGZhbHNlKTsKKworZnVuY3Rpb24gdGVzdFNsb3RjaGFuZ2VGaXJlc09uSW5uZXJI
VE1MKG1vZGUsIGNvbm5lY3RlZFRvRG9jdW1lbnQpCit7CisgICAgdmFyIHRlc3QgPSBhc3luY190
ZXN0KCdzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBhIHNsb3QgZWxlbWVudCBpbnNpZGUg
JworICAgICAgICArIHRyZWVOYW1lKG1vZGUsIGNvbm5lY3RlZFRvRG9jdW1lbnQpCisgICAgICAg
ICsgJyB3aGVuIGlubmVySFRNTCBtb2RpZmllcyB0aGUgY2hpbGRyZW4gb2YgdGhlIHNoYWRvdyBo
b3N0Jyk7CisKKyAgICB2YXIgaG9zdDsKKyAgICB2YXIgZGVmYXVsdFNsb3Q7CisgICAgdmFyIG5h
bWVkU2xvdDsKKyAgICB2YXIgZGVmYXVsdFNsb3RFdmVudENvdW50ID0gMDsKKyAgICB2YXIgbmFt
ZWRTbG90RXZlbnRDb3VudCA9IDA7CisKKyAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkgeworICAg
ICAgICBob3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGlmIChj
b25uZWN0ZWRUb0RvY3VtZW50KQorICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChob3N0KTsKKworICAgICAgICB2YXIgc2hhZG93Um9vdCA9IGhvc3QuYXR0YWNoU2hhZG93KHsn
bW9kZSc6IG1vZGV9KTsKKyAgICAgICAgZGVmYXVsdFNsb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzbG90Jyk7CisgICAgICAgIGRlZmF1bHRTbG90LmFkZEV2ZW50TGlzdGVuZXIoJ3Nsb3Rj
aGFuZ2UnLCBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgICAgIHRlc3Quc3RlcChmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC50YXJnZXQsIGRlZmF1
bHRTbG90LCAnc2xvdGNoYW5nZSBldmVudFwncyB0YXJnZXQgbXVzdCBiZSB0aGUgc2xvdCBlbGVt
ZW50Jyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGRlZmF1bHRTbG90RXZlbnRDb3Vu
dCsrOworICAgICAgICB9KTsKKworICAgICAgICBuYW1lZFNsb3QgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzbG90Jyk7CisgICAgICAgIG5hbWVkU2xvdC5uYW1lID0gJ3NvbWVTbG90JzsKKyAg
ICAgICAgbmFtZWRTbG90LmFkZEV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCBmdW5jdGlvbiAo
ZXZlbnQpIHsKKyAgICAgICAgICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC50YXJnZXQsIG5hbWVkU2xvdCwgJ3Nsb3RjaGFuZ2Ug
ZXZlbnRcJ3MgdGFyZ2V0IG11c3QgYmUgdGhlIHNsb3QgZWxlbWVudCcpOworICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICBuYW1lZFNsb3RFdmVudENvdW50Kys7CisgICAgICAgIH0pOworICAg
ICAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKG5hbWVkU2xvdCk7CisgICAgICAgIHNoYWRvd1Jv
b3QuYXBwZW5kQ2hpbGQoZGVmYXVsdFNsb3QpOworICAgICAgICBob3N0LmlubmVySFRNTCA9ICdm
b28gPGI+YmFyPC9iPic7CisKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkZWZhdWx0U2xvdEV2ZW50
Q291bnQsIDAsICdzbG90Y2hhbmdlIGV2ZW50IG11c3Qgbm90IGJlIGZpcmVkIHN5bmNocm9ub3Vz
bHknKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhuYW1lZFNsb3RFdmVudENvdW50LCAwLCAnc2xv
dGNoYW5nZSBldmVudCBtdXN0IG5vdCBiZSBmaXJlZCBzeW5jaHJvbm91c2x5Jyk7CisgICAgfSk7
CisKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVzdC5zdGVwKGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVmYXVsdFNsb3RFdmVudENvdW50
LCAxLAorICAgICAgICAgICAgICAgICdzbG90Y2hhbmdlIG11c3QgYmUgZmlyZWQgb24gYSBzbG90
IGVsZW1lbnQgaWYgdGhlIGFzc2lnbmVkIG5vZGVzIGFyZSBjaGFuZ2VkIGJ5IGlubmVySFRNTCcp
OworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhuYW1lZFNsb3RFdmVudENvdW50LCAwLAorICAg
ICAgICAgICAgICAgICdzbG90Y2hhbmdlIG11c3Qgbm90IGJlIGZpcmVkIG9uIGEgc2xvdCBlbGVt
ZW50IGlmIHRoZSBhc3NpZ25lZCBub2RlcyBhcmUgbm90IGNoYW5nZWQgYnkgaW5uZXJIVE1MJyk7
CisgICAgICAgICAgICBob3N0LmlubmVySFRNTCA9ICdiYXonOworICAgICAgICB9KTsKKyAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVmYXVsdFNsb3RFdmVudENv
dW50LCAyLAorICAgICAgICAgICAgICAgICAgICAnc2xvdGNoYW5nZSBtdXN0IGJlIGZpcmVkIG9u
IGEgc2xvdCBlbGVtZW50IGlmIHRoZSBhc3NpZ25lZCBub2RlcyBhcmUgY2hhbmdlZCBieSBpbm5l
ckhUTUwnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKG5hbWVkU2xvdEV2ZW50Q291
bnQsIDAsCisgICAgICAgICAgICAgICAgICAgICdzbG90Y2hhbmdlIG11c3Qgbm90IGJlIGZpcmVk
IG9uIGEgc2xvdCBlbGVtZW50IGlmIHRoZSBhc3NpZ25lZCBub2RlcyBhcmUgbm90IGNoYW5nZWQg
YnkgaW5uZXJIVE1MJyk7CisgICAgICAgICAgICAgICAgaG9zdC5pbm5lckhUTUwgPSAnJzsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhkZWZhdWx0U2xvdEV2ZW50Q291bnQsIDMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAnc2xvdGNoYW5nZSBtdXN0IGJlIGZpcmVkIG9uIGEgc2xvdCBlbGVtZW50IGlmIHRo
ZSBhc3NpZ25lZCBub2RlcyBhcmUgY2hhbmdlZCBieSBpbm5lckhUTUwnKTsKKyAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhuYW1lZFNsb3RFdmVudENvdW50LCAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgJ3Nsb3RjaGFuZ2UgbXVzdCBub3QgYmUgZmlyZWQgb24gYSBzbG90IGVs
ZW1lbnQgaWYgdGhlIGFzc2lnbmVkIG5vZGVzIGFyZSBub3QgY2hhbmdlZCBieSBpbm5lckhUTUwn
KTsKKyAgICAgICAgICAgICAgICAgICAgaG9zdC5pbm5lckhUTUwgPSAnPGIgc2xvdD0ic29tZVNs
b3QiPmNvbnRlbnQ8L2I+JzsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdC5zdGVwKGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVmYXVs
dFNsb3RFdmVudENvdW50LCAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzbG90Y2hh
bmdlIG11c3Qgbm90IGJlIGZpcmVkIG9uIGEgc2xvdCBlbGVtZW50IGlmIHRoZSBhc3NpZ25lZCBu
b2RlcyBhcmUgbm90IGNoYW5nZWQgYnkgaW5uZXJIVE1MJyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKG5hbWVkU2xvdEV2ZW50Q291bnQsIDEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3Nsb3RjaGFuZ2UgbXVzdCBub3QgYmUgZmlyZWQgb24gYSBzbG90IGVs
ZW1lbnQgaWYgdGhlIGFzc2lnbmVkIG5vZGVzIGFyZSBjaGFuZ2VkIGJ5IGlubmVySFRNTCcpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaG9zdC5pbm5lckhUTUwgPSAnJzsKKyAgICAgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB0ZXN0IHdvdWxkIGZhaWwgaW4g
dGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gYmVjYXVzZSB3ZSBjYW4ndCB0ZWxsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gd2hldGhlciBhIHRleHQgbm9kZSB3YXMgcmVtb3ZlZCBp
biBBbGxDaGlsZHJlblJlbW92ZWQgb3Igbm90LgorLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhkZWZhdWx0U2xvdEV2ZW50Q291bnQsIDMsCisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3Nsb3RjaGFuZ2UgbXVzdCBub3QgYmUgZmlyZWQgb24gYSBz
bG90IGVsZW1lbnQgaWYgdGhlIGFzc2lnbmVkIG5vZGVzIGFyZSBub3QgY2hhbmdlZCBieSBpbm5l
ckhUTUwnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKG5hbWVk
U2xvdEV2ZW50Q291bnQsIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzbG90
Y2hhbmdlIG11c3Qgbm90IGJlIGZpcmVkIG9uIGEgc2xvdCBlbGVtZW50IGlmIHRoZSBhc3NpZ25l
ZCBub2RlcyBhcmUgY2hhbmdlZCBieSBpbm5lckhUTUwnKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdC5kb25lKCk7CisgICAgICAgICAg
ICAgICAgICAgIH0sIDEpOworICAgICAgICAgICAgICAgIH0sIDEpOworICAgICAgICAgICAgfSwg
MSk7CisgICAgICAgIH0sIDEpOworICAgIH0sIDEpOworfQorCit0ZXN0U2xvdGNoYW5nZUZpcmVz
T25Jbm5lckhUTUwoJ29wZW4nLCB0cnVlKTsKK3Rlc3RTbG90Y2hhbmdlRmlyZXNPbklubmVySFRN
TCgnY2xvc2VkJywgdHJ1ZSk7Cit0ZXN0U2xvdGNoYW5nZUZpcmVzT25Jbm5lckhUTUwoJ29wZW4n
LCBmYWxzZSk7Cit0ZXN0U2xvdGNoYW5nZUZpcmVzT25Jbm5lckhUTUwoJ2Nsb3NlZCcsIGZhbHNl
KTsKKworZnVuY3Rpb24gdGVzdFNsb3RjaGFuZ2VGaXJlc1doZW5OZXN0ZWRTbG90Q2hhbmdlKG1v
ZGUsIGNvbm5lY3RlZFRvRG9jdW1lbnQpCit7CisgICAgdmFyIHRlc3QgPSBhc3luY190ZXN0KCdz
bG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBhIHNsb3QgZWxlbWVudCBpbnNpZGUgJworICAg
ICAgICArIHRyZWVOYW1lKG1vZGUsIGNvbm5lY3RlZFRvRG9jdW1lbnQpCisgICAgICAgICsgJyB3
aGVuIG5lc3RlZCBzbG90c1wncyBjb250ZW50cyBjaGFuZ2UnKTsKKworICAgIHZhciBvdXRlckhv
c3Q7CisgICAgdmFyIGlubmVySG9zdDsKKyAgICB2YXIgb3V0ZXJTbG90OworICAgIHZhciBpbm5l
clNsb3Q7CisgICAgdmFyIG91dGVyU2xvdEV2ZW50Q291bnQgPSAwOworICAgIHZhciBpbm5lclNs
b3RFdmVudENvdW50ID0gMDsKKworICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAg
IG91dGVySG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBpZiAo
Y29ubmVjdGVkVG9Eb2N1bWVudCkKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQob3V0ZXJIb3N0KTsKKworICAgICAgICB2YXIgb3V0ZXJTaGFkb3cgPSBvdXRlckhvc3QuYXR0
YWNoU2hhZG93KHsnbW9kZSc6IG1vZGV9KTsKKyAgICAgICAgb3V0ZXJTaGFkb3cuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICAgICAgb3V0ZXJTbG90ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2xvdCcpOworICAgICAgICBvdXRlclNsb3QuYWRkRXZl
bnRMaXN0ZW5lcignc2xvdGNoYW5nZScsIGZ1bmN0aW9uIChldmVudCkgeworICAgICAgICAgICAg
ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQudGFyZ2V0LCBvdXRlclNs
b3QsICdzbG90Y2hhbmdlIGV2ZW50XCdzIHRhcmdldCBtdXN0IGJlIHRoZSBzbG90IGVsZW1lbnQn
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgb3V0ZXJTbG90RXZlbnRDb3VudCsrOwor
ICAgICAgICB9KTsKKworICAgICAgICBpbm5lckhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICAgICAgaW5uZXJIb3N0LmFwcGVuZENoaWxkKG91dGVyU2xvdCk7CisgICAg
ICAgIG91dGVyU2hhZG93LmFwcGVuZENoaWxkKGlubmVySG9zdCk7CisKKyAgICAgICAgdmFyIGlu
bmVyU2hhZG93ID0gaW5uZXJIb3N0LmF0dGFjaFNoYWRvdyh7J21vZGUnOiBtb2RlfSk7CisgICAg
ICAgIGlubmVyU2hhZG93LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4n
KSk7CisgICAgICAgIGlubmVyU2xvdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Nsb3QnKTsK
KyAgICAgICAgaW5uZXJTbG90LmFkZEV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCBmdW5jdGlv
biAoZXZlbnQpIHsKKyAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgICAg
ICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKGV2ZW50LnRhcmdldCwgaW5uZXJTbG90LCAnc2xvdGNoYW5nZSBldmVudFwncyB0YXJnZXQg
bXVzdCBiZSB0aGUgc2xvdCBlbGVtZW50Jyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IGlubmVyU2xvdEV2ZW50Q291bnQrKzsKKyAgICAgICAgfSk7CisgICAgICAgIGlubmVyU2hhZG93
LmFwcGVuZENoaWxkKGlubmVyU2xvdCk7CisKKyAgICAgICAgb3V0ZXJIb3N0LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CisKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhpbm5lclNsb3RFdmVudENvdW50LCAwLCAnc2xvdGNoYW5nZSBldmVudCBtdXN0IG5vdCBiZSBm
aXJlZCBzeW5jaHJvbm91c2x5Jyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMob3V0ZXJTbG90RXZl
bnRDb3VudCwgMCwgJ3Nsb3RjaGFuZ2UgZXZlbnQgbXVzdCBub3QgYmUgZmlyZWQgc3luY2hyb25v
dXNseScpOworICAgIH0pOworCisgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAg
IHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGlubmVy
U2xvdEV2ZW50Q291bnQsIDEsCisgICAgICAgICAgICAgICAgJ3Nsb3RjaGFuZ2UgbXVzdCBiZSBm
aXJlZCBvbiBhIHNsb3QgZWxlbWVudCBpZiB0aGUgYXNzaWduZWQgbm9kZXMgY2hhbmdlZCcpOwor
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhvdXRlclNsb3RFdmVudENvdW50LCAxLAorICAgICAg
ICAgICAgICAgICdzbG90Y2hhbmdlIG11c3QgYmUgZmlyZWQgb24gYSBzbG90IGVsZW1lbnQgaWYg
dGhlIGFzc2lnbmVkIG5vZGVzIG9mIGFuIGlubmVyIHNsb3QgY2hhbmdlZCcpOworICAgICAgICB9
KTsKKyAgICAgICAgdGVzdC5kb25lKCk7CisgICAgfSwgMSk7Cit9CisKK3Rlc3RTbG90Y2hhbmdl
RmlyZXNXaGVuTmVzdGVkU2xvdENoYW5nZSgnb3BlbicsIHRydWUpOwordGVzdFNsb3RjaGFuZ2VG
aXJlc1doZW5OZXN0ZWRTbG90Q2hhbmdlKCdjbG9zZWQnLCB0cnVlKTsKK3Rlc3RTbG90Y2hhbmdl
RmlyZXNXaGVuTmVzdGVkU2xvdENoYW5nZSgnb3BlbicsIGZhbHNlKTsKK3Rlc3RTbG90Y2hhbmdl
RmlyZXNXaGVuTmVzdGVkU2xvdENoYW5nZSgnY2xvc2VkJywgZmFsc2UpOworCis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273944</attachid>
            <date>2016-03-14 02:01:16 -0700</date>
            <delta_ts>2016-03-14 03:14:09 -0700</delta_ts>
            <desc>Updated a change log</desc>
            <filename>bug-155424-20160314020105.patch</filename>
            <type>text/plain</type>
            <size>55123</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODA5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk3IEBACisyMDE2LTAzLTE0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBzbG90Y2hhbmdlIGV2ZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MjQK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0OTk3NTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGBzbG90Y2hhbmdlYCBldmVudCBhcyBk
aXNjdXNzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWJjb21wb25lbnRzL2lzc3Vlcy8y
ODguCisKKyAgICAgICAgV2hpbGUgdGhlIGV4YWN0IHNlbWFudGljcyBvZiBpdCBjb3VsZCBzdGls
bCBldm9sdmUgb3ZlciB0aW1lLCB0aGlzIHBhdGNoIGltcGxlbWVudHMgYXMKKyAgICAgICAgYW4g
YXN5bmNocm9ub3VzIGV2ZW50IHRoYXQgZmlyZXMgb24gYSBzbG90IGVsZW1lbnQgd2hlbmV2ZXIg
aXRzIGRpc3RyaWJ1dGVkIG5vZGVzIGNoYW5nZQorICAgICAgICAoZmxhdHRlbmVkIGFzc2lnbmVk
IG5vZGVzKToKKyAgICAgICAgaHR0cDovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVj
L3NoYWRvdy8jZGZuLWRpc3RyaWJ1dGVkLW5vZGVzCisKKyAgICAgICAgU2luY2UgaW5zZXJ0aW5n
IG9yIHJlbW92aW5nIGFuIGVsZW1lbnQgZnJvbSBhIHNoYWRvdyBob3N0IGNvdWxkIG5lZWRzIHRv
IGVucXVldWUgdGhpcyBldmVudAorICAgICAgICBvbiB0aGUgcmlnaHQgc2xvdCBlbGVtZW50LCB0
aGlzIHBhdGNoIG1vdmVzIHRoZSBpbnZhbGlkYXRpb24gcG9pbnQgb2YgZWxlbWVudCByZW1vdmFs
cyBhbmQKKyAgICAgICAgaW5zZXJ0aW9ucyBmcm9tIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCB0
byBFbGVtZW50OjppbnNlcnRlZEludG8gYW5kIEVsZW1lbnQ6OnJlbW92ZWRGcm9tLgorICAgICAg
ICBUZXh0IG5vZGVzIGFyZSBzdGlsbCBpbnZhbGlkYXRlZCBhdCBFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMKKyAgICAgICAgc2luY2UgaXQgY291bGQgb25s
eSBhcHBlYXIgd2l0aGluIGEgZGVmYXVsdCBzbG90IGVsZW1lbnQuCisKKyAgICAgICAgQmVjYXVz
ZSB0aGlzIG1vcmUgZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBuZWVkcyB0byBiZSBvdmVycmlk
ZGVuIGJ5IEhUTUxEZXRhaWxzRWxlbWVudCwKKyAgICAgICAgd2Ugbm93IHN1YmNsYXNzIFNsb3RB
c3NpZ25tZW50IGluIEhUTUxEZXRhaWxzRWxlbWVudCBpbnN0ZWFkIG9mIHBhc3NpbmcgaW4gYSBz
dGQ6OmZ1bmN0aW9uLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc2hhZG93LWRvbS9zbG90Y2hhbmdl
LWV2ZW50Lmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6ZW5xdWV1ZVNsb3RjaGFuZ2VFdmVudCk6IEFkZGVkLgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOiBDYWxsIGhvc3RDaGlsZEVsZW1lbnRE
aWRDaGFuZ2VTbG90QXR0ci4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omluc2VydGVkSW50
byk6IENhbGwgaG9zdENoaWxkRWxlbWVudERpZENoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnJlbW92ZWRGcm9tKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQpOiBEb24ndCBpbnZhbGlkYXRlIHRoZSBzbG90cyBvbiBFbGVtZW50SW5z
ZXJ0ZWQgYW5kCisgICAgICAgIEVsZW1lbnRSZW1vdmVkIHNpbmNlIHRoZXkncmUgbm93IGRvbmUg
aW4gRWxlbWVudDo6aW5zZXJ0ZWRJbnRvIGFuZCBFbGVtZW50OjpyZW1vdmVkRnJvbS4KKyAgICAg
ICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OnNjb3BlZCk6IHNs
b3RjaGFuZ2UgZXZlbnQgaXMgc2NvcGVkLgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6IEFk
ZGVkIGV2ZW50TmFtZXMoKS5zbG90Y2hhbmdlLgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmludmFsaWRhdGVTbG90QXNzaWdubWVu
dHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6aW52YWxpZGF0ZURl
ZmF1bHRTbG90QXNzaWdubWVudHMpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
Lmg6CisgICAgICAgIChTaGFkb3dSb290KTogQWRkZWQgbW9yZSBmaW5lLWdyYWluZWQgaW52YWxp
ZGF0b3JzLCBtaXJyb3JpbmcgY2hhbmdlcyB0byBTbG90QXNzaWdubWVudC4KKyAgICAgICAgKiBk
b20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6
OlNsb3RBc3NpZ25tZW50KTogUmVtb3ZlZCBhIHZhcmlhbnQgdGhhdCB0YWtlcyBTbG90TmFtZUZ1
bmN0aW9uCisgICAgICAgIHNpbmNlIEhUTUxEZXRhaWxzRWxlbWVudCBub3cgc3ViY2xhc3NlcyBT
bG90QXNzaWdubWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50Ojp+U2xvdEFz
c2lnbm1lbnQpOiBBZGRlZCBub3cgdGhhdCB0aGUgY2xhc3MgaXMgdmlydHVhbC4KKyAgICAgICAg
KFdlYkNvcmU6OnJlY3Vyc2l2ZWx5RmlyZVNsb3RDaGFuZ2VFdmVudCk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OmRpZENoYW5nZVNsb3QpOiBBZGRlZC4gSW52YWxp
ZGF0ZXMgdGhlIHN0eWxlIHRyZWUgb25seSBpZiB0aGVyZQorICAgICAgICBpcyBhIGNvcnJlc3Bv
bmRpbmcgc2xvdCBlbGVtZW50LCBhbmQgZmlyZXMgc2xvdGNoYW5nZSBldmVudC4gV2hlbiB0aGUg
c2xvdCBlbGVtZW50IHdlIGZvdW5kCisgICAgICAgIGluIHRoaXMgc2hhZG93IHRyZWUgaXMgYXNz
aWduZWQgdG8gYSBzbG90IGVsZW1lbnQgaW5zaWRlIGFuIGlubmVyIHNoYWRvdyB0cmVlLCByZWN1
cnNpdmVseQorICAgICAgICBmaXJlIHNsb3RjaGFuZ2UgZXZlbnQgb24gZWFjaCBzdWNoIGlubmVy
IHNsb3RzLgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6Omhvc3RDaGlsZEVsZW1l
bnREaWRDaGFuZ2UpOiBBZGRlZC4gVXBkYXRlIHRoZSBtYXRjaGluZyBzbG90IHdoZW4KKyAgICAg
ICAgYW4gZWxlbWVudCBpcyBpbnNlcnRlZCBvciByZW1vdmVkIHVuZGVyIGEgc2hhZG93IGhvc3Qu
CisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6YXNzaWduZWROb2Rlc0ZvclNsb3Qp
OiBSZW1vdmVkIHRoZSBzdXBlcmZsdW91cyBlYXJseSBleGl0IHRvIGFuCisgICAgICAgIHJlbGVh
c2UgYXNzZXJ0IHNpbmNlIGFkZFNsb3RFbGVtZW50QnlOYW1lIHNob3VsZCBhbHdheXMgY3JlYXRl
IGEgU2xvdEluZm8gZm9yIGVhY2ggZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3Np
Z25tZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZCk6IEFkZGVkLiBUaGlzIGlzIHRoZSBlcXVpdmFs
ZW50IG9mIG9sZAorICAgICAgICBtX3Nsb3ROYW1lRnVuY3Rpb24gd2hpY2ggRGV0YWlsc1Nsb3RB
c3NpZ25tZW50IG92ZXJyaWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50Ojpp
bnZhbGlkYXRlRGVmYXVsdFNsb3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFz
c2lnbm1lbnQ6OmZpbmRGaXJzdFNsb3RFbGVtZW50KTogQWRkZWQgYW4gYXNzZXJ0aW9uLiBzbG90
SW5mby5lbGVtZW50IG11c3QKKyAgICAgICAgYmUgbnVsbHB0ciBpZiBlbGVtZW50Q291bnQgaXMg
MCwgYW5kIGVsZW1lbnRDb3VudCBtdXN0IGJlIDAgaWYgc2xvdEluZm8uZWxlbWVudCBpcyBudWxs
cHRyCisgICAgICAgIGFmdGVyIGNhbGxpbmcgcmVzb2x2ZUFsbFNsb3RFbGVtZW50cywgd2hpY2gg
dHJhdmVyc2VzIHRoZSBlbnRpcmUgc2hhZG93IHRyZWUgdG8gZmluZCBhbGwKKyAgICAgICAgc2xv
dCBlbGVtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50Ojphc3NpZ25TbG90
cyk6CisgICAgICAgICogZG9tL1Nsb3RBc3NpZ25tZW50Lmg6IEltcGxlbWVudGVkIGlubGluZSBm
dW5jdGlvbnMgb2YgU2hhZG93Um9vdCBoZXJlIHRvIGF2b2lkIGluY2x1ZGluZworICAgICAgICBT
bG90QXNzaWdubWVudC5oIGluIFNoYWRvd1Jvb3QuaC4gTm90IGlubGluaW5nIHRoZW0gcmVzdWx0
cyBpbiBleHRyYSBmdW5jdGlvbiBjYWxscyBmb3IgYWxsCisgICAgICAgIGJ1aWx0aW4gZWxlbWVu
dHMgd2l0aCBzaGFkb3cgcm9vdCB3aXRob3V0IHNsb3QgZWxlbWVudHMsIHdoaWNoIGltcGFjdHMg
cGVyZm9ybWFuY2UuCisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpkaWRSZW1vdmVBbGxD
aGlsZHJlbk9mU2hhZG93SG9zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9v
dDo6ZGlkQ2hhbmdlRGVmYXVsdFNsb3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d1Jvb3Q6Omhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd1Jvb3Q6Omhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2VTbG90QXR0cik6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6aW5uZXJTbG90RGlkQ2hhbmdlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
ZXRhaWxzU2xvdEFzc2lnbm1lbnQpOiBBZGRlZC4gU3ViY2xhc3NlcyBTbG90QXNzaWdubWVudCB0
byBvdmVycmlkZQorICAgICAgICBob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlIGFuZCBzbG90TmFt
ZUZvckhvc3RDaGlsZC4KKyAgICAgICAgKFdlYkNvcmU6OkRldGFpbHNTbG90QXNzaWdubWVudDo6
aG9zdENoaWxkRWxlbWVudERpZENoYW5nZSk6IEFkZGVkLiBXZSBkb24ndCBjaGVjayBpZiB0aGlz
CisgICAgICAgIGlzIHRoZSBmaXJzdCBzdW1tYXJ5IGVsZW1lbnQgc2luY2Ugd2UgZG9uJ3Qga25v
dyB0aGUgYW5zd2VyIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKKyAgICAgICAgaW5zaWRl
IEVsZW1lbnQ6OnJlbW92ZWRGcm9tLgorICAgICAgICAoV2ViQ29yZTo6RGV0YWlsc1Nsb3RBc3Np
Z25tZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZCk6IFJlbmFtZWQgZnJvbSBzbG90TmFtZUZ1bmN0
aW9uLiBBbHNvCisgICAgICAgIHJlbW92ZWQgdGhlIGNvZGUgdG8gcmV0dXJuIG51bGxBdG9tIHdo
ZW4gZGV0YWlscyBlbGVtZW50IGlzIG5vdCBvcGVuIGFzIHRoYXQgbWVzc2VzIHVwIG5ldworICAg
ICAgICBmaW5lLWdyYWluZWQgaW52YWxpZGF0aW9uLiBJbnNlcnQvcmVtb3ZlIHRoZSBzbG90IGVs
ZW1lbnQgaW4gcGFyc2VBdHRyaWJ1dGUgaW5zdGVhZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxE
ZXRhaWxzRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6IERvbid0IGluc2VydCB0
aGUgc2xvdCBlbGVtZW50IGZvcgorICAgICAgICB0aGUgc3VtbWFyeSBzaW5jZSB0aGUgZGV0YWls
cyBlbGVtZW50IGlzIG5vdCBvcGVuIG5vdy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxz
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBSZW1vdmUgYW5kIGluc2VydCB0aGUgc2xvdCBlbGVt
ZW50IGZvciB0aGUKKyAgICAgICAgc3VtbWFyeSBoZXJlIGluc3RlYWQgb2YgY2hhbmdpbmcgdGhl
IGJlaGF2aW9yIG9mIHNsb3ROYW1lRm9ySG9zdENoaWxkLgorICAgICAgICAqIGh0bWwvSFRNTERl
dGFpbHNFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNsb3RFbGVtZW50OjplbnF1ZXVlU2xvdENoYW5nZUV2ZW50KTog
QWRkZWQuIEVucXVldWVzIGEgbmV3IHNsb3RjaGFuZ2UgZXZlbnQKKyAgICAgICAgaWYgd2UgaGF2
ZW4ndCBkb25lIHNvIGZvciB0aGlzIGVsZW1lbnQgeWV0LgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFNsb3RFbGVtZW50OjpkaXNwYXRjaEV2ZW50KTogQWRkZWQuIENsZWFyIG1faGFzRW5xdWV1ZWRT
bG90Q2hhbmdlRXZlbnQgd2hlbgorICAgICAgICBkaXNwYXRjaGluZyBhIHNsb3RjaGFuZ2UgZXZl
bnQgc28gdGhhdCBhIHN1YnNlcXVlbnQgY2FsbCB0byBlbnF1ZXVlU2xvdENoYW5nZUV2ZW50IHdv
dWxkCisgICAgICAgIGVucXVldWUgYSBuZXcgZXZlbnQuIE5vdGUgc2NyaXB0cyBjYWxsIEV2ZW50
VGFyZ2V0OjpkaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3MgaW5zdGVhZC4KKyAgICAgICAgKiBodG1s
L0hUTUxTbG90RWxlbWVudC5oOgorCiAyMDE2LTAzLTEzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRShFUzZfVEVNUExBVEVfTElU
RVJBTF9TWU5UQVgpIGd1YXJkcwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAxOTgwNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MTcyLDYgKzQxNzIsMTEgQEAgdm9pZCBEb2N1bWVudDo6ZW5xdWV1ZU92ZXJmbG93
RXZlbnQoUmVmPAogICAgIG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkp
OwogfQogCit2b2lkIERvY3VtZW50OjplbnF1ZXVlU2xvdGNoYW5nZUV2ZW50KFJlZjxFdmVudD4m
JiBldmVudCkKK3sKKyAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQp
KTsKK30KKwogUmVmUHRyPEV2ZW50PiBEb2N1bWVudDo6Y3JlYXRlRXZlbnQoY29uc3QgU3RyaW5n
JiB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBQbGVhc2UgZG8gKm5vdCogYWRk
IG5ldyBldmVudCBjbGFzc2VzIHRvIHRoaXMgZnVuY3Rpb24gdW5sZXNzIHRoZXkgYXJlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMTk4MDU2KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwODgsNiArMTA4OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGVucXVldWVXaW5kb3dFdmVudChSZWY8RXZlbnQ+JiYpOwogICAgIHZvaWQg
ZW5xdWV1ZURvY3VtZW50RXZlbnQoUmVmPEV2ZW50PiYmKTsKICAgICB2b2lkIGVucXVldWVPdmVy
Zmxvd0V2ZW50KFJlZjxFdmVudD4mJik7CisgICAgdm9pZCBlbnF1ZXVlU2xvdGNoYW5nZUV2ZW50
KFJlZjxFdmVudD4mJik7CiAgICAgdm9pZCBlbnF1ZXVlUGFnZXNob3dFdmVudChQYWdlc2hvd0V2
ZW50UGVyc2lzdGVuY2UpOwogICAgIHZvaWQgZW5xdWV1ZUhhc2hjaGFuZ2VFdmVudChjb25zdCBT
dHJpbmcmIG9sZFVSTCwgY29uc3QgU3RyaW5nJiBuZXdVUkwpOwogICAgIHZvaWQgZW5xdWV1ZVBv
cHN0YXRlRXZlbnQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzdGF0ZU9iamVjdCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTgwNTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAK
ICNpbmNsdWRlICJTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJTaW11bGF0ZWRDbGljay5oIgorI2luY2x1ZGUgIlNsb3RBc3NpZ25tZW50LmgiCiAjaW5j
bHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2lu
Y2x1ZGUgIlN0eWxlVHJlZVJlc29sdmVyLmgiCkBAIC0xMjU0LDcgKzEyNTUsNyBAQCB2b2lkIEVs
ZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhCiAgICAgICAgIGVsc2UgaWYgKG5hbWUg
PT0gSFRNTE5hbWVzOjpzbG90QXR0cikgewogICAgICAgICAgICAgaWYgKGF1dG8qIHBhcmVudCA9
IHBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBzaGFkb3dSb290
ID0gcGFyZW50LT5zaGFkb3dSb290KCkpCi0gICAgICAgICAgICAgICAgICAgIHNoYWRvd1Jvb3Qt
PmludmFsaWRhdGVTbG90QXNzaWdubWVudHMoKTsKKyAgICAgICAgICAgICAgICAgICAgc2hhZG93
Um9vdC0+aG9zdENoaWxkRWxlbWVudERpZENoYW5nZVNsb3RBdHRyKG9sZFZhbHVlLCBuZXdWYWx1
ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMTQ5Niw2ICsxNDk3LDEx
IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgRWxlbWUKICAgICAgICAgc2V0
Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJp
ZXModHJ1ZSk7CiAjZW5kaWYKIAorICAgIGlmIChwYXJlbnROb2RlKCkgPT0gJmluc2VydGlvblBv
aW50KSB7CisgICAgICAgIGlmIChhdXRvKiBzaGFkb3dSb290ID0gcGFyZW50Tm9kZSgpLT5zaGFk
b3dSb290KCkpCisgICAgICAgICAgICBzaGFkb3dSb290LT5ob3N0Q2hpbGRFbGVtZW50RGlkQ2hh
bmdlKCp0aGlzKTsKKyAgICB9CisKICAgICBpZiAoIWluc2VydGlvblBvaW50LmlzSW5UcmVlU2Nv
cGUoKSkKICAgICAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiAKQEAgLTE1NzUsNiArMTU4MSwx
MSBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmCiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICBpZiAoIXBhcmVudE5vZGUoKSkgeworICAgICAgICBpZiAoYXV0byogc2hh
ZG93Um9vdCA9IGluc2VydGlvblBvaW50LnNoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIHNoYWRv
d1Jvb3QtPmhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoKnRoaXMpOworICAgIH0KKwogICAgIENv
bnRhaW5lck5vZGU6OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50KTsKIAogICAgIGlmIChoYXNQ
ZW5kaW5nUmVzb3VyY2VzKCkpCkBAIC0xODMyLDEzICsxODQzLDE1IEBAIHZvaWQgRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWwKICAgICAgICAgc3dpdGNoIChjaGFuZ2UudHlwZSkg
ewogICAgICAgICBjYXNlIEVsZW1lbnRJbnNlcnRlZDoKICAgICAgICAgY2FzZSBFbGVtZW50UmVt
b3ZlZDoKKyAgICAgICAgICAgIC8vIEZvciBlbGVtZW50cywgd2Ugbm90aWZ5IHNoYWRvd1Jvb3Qg
aW4gRWxlbWVudDo6aW5zZXJ0ZWRJbnRvIGFuZCBFbGVtZW50OjpyZW1vdmVkRnJvbS4KKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFsbENoaWxkcmVuUmVtb3ZlZDoKLSAgICAgICAg
ICAgIHNoYWRvd1Jvb3QtPmludmFsaWRhdGVTbG90QXNzaWdubWVudHMoKTsKKyAgICAgICAgICAg
IHNoYWRvd1Jvb3QtPmRpZFJlbW92ZUFsbENoaWxkcmVuT2ZTaGFkb3dIb3N0KCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBUZXh0SW5zZXJ0ZWQ6CiAgICAgICAgIGNhc2UgVGV4
dFJlbW92ZWQ6CiAgICAgICAgIGNhc2UgVGV4dENoYW5nZWQ6Ci0gICAgICAgICAgICBzaGFkb3dS
b290LT5pbnZhbGlkYXRlRGVmYXVsdFNsb3RBc3NpZ25tZW50cygpOworICAgICAgICAgICAgc2hh
ZG93Um9vdC0+ZGlkQ2hhbmdlRGVmYXVsdFNsb3QoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIE5vbkNvbnRlbnRzQ2hpbGRDaGFuZ2VkOgogICAgICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudC5jcHAJKHJldmlzaW9uIDE5ODA1NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsOCBAQCBib29sIEV2
ZW50OjpzY29wZWQoKSBjb25zdAogICAgICAgICB8fCBtX3R5cGUgPT0gZXZlbnROYW1lcygpLnJl
c2l6ZUV2ZW50CiAgICAgICAgIHx8IG1fdHlwZSA9PSBldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQK
ICAgICAgICAgfHwgbV90eXBlID09IGV2ZW50TmFtZXMoKS5zZWxlY3RFdmVudAotICAgICAgICB8
fCBtX3R5cGUgPT0gZXZlbnROYW1lcygpLnNlbGVjdHN0YXJ0RXZlbnQ7CisgICAgICAgIHx8IG1f
dHlwZSA9PSBldmVudE5hbWVzKCkuc2VsZWN0c3RhcnRFdmVudAorICAgICAgICB8fCBtX3R5cGUg
PT0gZXZlbnROYW1lcygpLnNsb3RjaGFuZ2VFdmVudDsKIH0KIAogRXZlbnRJbnRlcmZhY2UgRXZl
bnQ6OmV2ZW50SW50ZXJmYWNlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAko
cmV2aXNpb24gMTk4MDU2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTk1LDYgKzE5NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBt
YWNybyhzZWxlY3RzdGFydCkgXAogICAgIG1hY3JvKHNob3cpIFwKICAgICBtYWNybyhzaWduYWxp
bmdzdGF0ZWNoYW5nZSkgXAorICAgIG1hY3JvKHNsb3RjaGFuZ2UpIFwKICAgICBtYWNybyhzb3Vu
ZGVuZCkgXAogICAgIG1hY3JvKHNvdW5kc3RhcnQpIFwKICAgICBtYWNybyhzb3VyY2VjbG9zZSkg
XApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAkocmV2aXNpb24gMTk4MDU2KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAs
MTggKzIwMCw2IEBAIHZvaWQgU2hhZG93Um9vdDo6cmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUKICAg
ICByZXR1cm4gbV9zbG90QXNzaWdubWVudC0+cmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUobmFtZSwg
c2xvdCwgKnRoaXMpOwogfQogCi12b2lkIFNoYWRvd1Jvb3Q6OmludmFsaWRhdGVTbG90QXNzaWdu
bWVudHMoKQotewotICAgIGlmIChtX3Nsb3RBc3NpZ25tZW50KQotICAgICAgICBtX3Nsb3RBc3Np
Z25tZW50LT5pbnZhbGlkYXRlKCp0aGlzKTsKLX0KLQotdm9pZCBTaGFkb3dSb290OjppbnZhbGlk
YXRlRGVmYXVsdFNsb3RBc3NpZ25tZW50cygpCi17Ci0gICAgaWYgKG1fc2xvdEFzc2lnbm1lbnQp
Ci0gICAgICAgIG1fc2xvdEFzc2lnbm1lbnQtPmludmFsaWRhdGVEZWZhdWx0U2xvdCgqdGhpcyk7
Ci19Ci0KIGNvbnN0IFZlY3RvcjxOb2RlKj4qIFNoYWRvd1Jvb3Q6OmFzc2lnbmVkTm9kZXNGb3JT
bG90KGNvbnN0IEhUTUxTbG90RWxlbWVudCYgc2xvdCkKIHsKICAgICBpZiAoIW1fc2xvdEFzc2ln
bm1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgJKHJldmlzaW9uIDE5ODA1NikKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDgg
KzkxLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0
b21pY1N0cmluZyYsIEhUTUxTbG90RWxlbWVudCYpOwogICAgIHZvaWQgcmVtb3ZlU2xvdEVsZW1l
bnRCeU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiwgSFRNTFNsb3RFbGVtZW50Jik7CiAKLSAgICB2
b2lkIGludmFsaWRhdGVTbG90QXNzaWdubWVudHMoKTsKLSAgICB2b2lkIGludmFsaWRhdGVEZWZh
dWx0U2xvdEFzc2lnbm1lbnRzKCk7CisgICAgdm9pZCBkaWRSZW1vdmVBbGxDaGlsZHJlbk9mU2hh
ZG93SG9zdCgpOworICAgIHZvaWQgZGlkQ2hhbmdlRGVmYXVsdFNsb3QoKTsKKyAgICB2b2lkIGhv
c3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoY29uc3QgRWxlbWVudCYpOworICAgIHZvaWQgaG9zdENo
aWxkRWxlbWVudERpZENoYW5nZVNsb3RBdHRyKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpOworICAgIHZvaWQgaW5uZXJTbG90RGlkQ2hh
bmdlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAgICAgY29uc3QgVmVjdG9yPE5vZGUqPiogYXNz
aWduZWROb2Rlc0ZvclNsb3QoY29uc3QgSFRNTFNsb3RFbGVtZW50Jik7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAkocmV2aXNpb24gMTk4MDk3KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTAsMTIgKzUwLDEwIEBAIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNsb3ROYW1lRnJvbVMK
IH0KIAogU2xvdEFzc2lnbm1lbnQ6OlNsb3RBc3NpZ25tZW50KCkKLSAgICA6IG1fc2xvdE5hbWVG
dW5jdGlvbihzbG90TmFtZUZyb21TbG90QXR0cmlidXRlKQogewogfQogCi1TbG90QXNzaWdubWVu
dDo6U2xvdEFzc2lnbm1lbnQoU2xvdE5hbWVGdW5jdGlvbiBmdW5jdGlvbikKLSAgICA6IG1fc2xv
dE5hbWVGdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKK1Nsb3RBc3NpZ25tZW50Ojp+U2xvdEFz
c2lnbm1lbnQoKQogewogfQogCkBAIC02NCwxMCArNjIsNyBAQCBIVE1MU2xvdEVsZW1lbnQqIFNs
b3RBc3NpZ25tZW50OjpmaW5kQXNzCiAgICAgaWYgKCFpczxUZXh0Pihub2RlKSAmJiAhaXM8RWxl
bWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzbG90TmFt
ZSA9IG1fc2xvdE5hbWVGdW5jdGlvbihub2RlKTsKLSAgICBpZiAoIXNsb3ROYW1lKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQorICAgIGF1dG8gc2xvdE5hbWUgPSBzbG90TmFtZUZvckhvc3RD
aGlsZChub2RlKTsKICAgICBhdXRvIGl0ID0gbV9zbG90cy5maW5kKHNsb3ROYW1lKTsKICAgICBp
ZiAoaXQgPT0gbV9zbG90cy5lbmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMzMs
MTcgKzEyOCw1MyBAQCB2b2lkIFNsb3RBc3NpZ25tZW50OjpyZW1vdmVTbG90RWxlbWVudEJ5CiAg
ICAgQVNTRVJUKHNsb3RJbmZvLmVsZW1lbnQgfHwgbV9uZWVkc1RvUmVzb2x2ZVNsb3RFbGVtZW50
cyk7CiB9CiAKLWNvbnN0IFZlY3RvcjxOb2RlKj4qIFNsb3RBc3NpZ25tZW50Ojphc3NpZ25lZE5v
ZGVzRm9yU2xvdChjb25zdCBIVE1MU2xvdEVsZW1lbnQmIHNsb3RFbGVtZW50LCBTaGFkb3dSb290
JiBzaGFkb3dSb290KQorc3RhdGljIHZvaWQgcmVjdXJzaXZlbHlGaXJlU2xvdENoYW5nZUV2ZW50
KEhUTUxTbG90RWxlbWVudCogc2xvdEVsZW1lbnQpCiB7Ci0gICAgaWYgKCFtX3Nsb3RBc3NpZ25t
ZW50c0lzVmFsaWQpCi0gICAgICAgIGFzc2lnblNsb3RzKHNoYWRvd1Jvb3QpOworICAgIHNsb3RF
bGVtZW50LT5lbnF1ZXVlU2xvdENoYW5nZUV2ZW50KCk7CiAKLSAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHNsb3ROYW1lID0gc2xvdE5hbWVGcm9tQXR0cmlidXRlVmFsdWUoc2xvdEVsZW1lbnQuZmFz
dEdldEF0dHJpYnV0ZShuYW1lQXR0cikpOworICAgIGlmIChhdXRvKiBzbG90UGFyZW50ID0gc2xv
dEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgeworICAgICAgICBpZiAoYXV0byogc2hhZG93Um9v
dE9mU2xvdFBhcmVudCA9IHNsb3RQYXJlbnQtPnNoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIHNo
YWRvd1Jvb3RPZlNsb3RQYXJlbnQtPmlubmVyU2xvdERpZENoYW5nZShzbG90RWxlbWVudC0+ZmFz
dEdldEF0dHJpYnV0ZShzbG90QXR0cikpOworICAgIH0KK30KKwordm9pZCBTbG90QXNzaWdubWVu
dDo6ZGlkQ2hhbmdlU2xvdChjb25zdCBBdG9taWNTdHJpbmcmIHNsb3RBdHRyVmFsdWUsIENoYW5n
ZVR5cGUgY2hhbmdlVHlwZSwgU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKK3sKKyAgICBhdXRvJiBz
bG90TmFtZSA9IHNsb3ROYW1lRnJvbUF0dHJpYnV0ZVZhbHVlKHNsb3RBdHRyVmFsdWUpOwogICAg
IGF1dG8gaXQgPSBtX3Nsb3RzLmZpbmQoc2xvdE5hbWUpOwogICAgIGlmIChpdCA9PSBtX3Nsb3Rz
LmVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOworCisgICAg
SFRNTFNsb3RFbGVtZW50KiBzbG90RWxlbWVudCA9IGZpbmRGaXJzdFNsb3RFbGVtZW50KCppdC0+
dmFsdWUsIHNoYWRvd1Jvb3QpOworICAgIGlmICghc2xvdEVsZW1lbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChjaGFuZ2VUeXBlID09IENoYW5nZVR5cGU6OkRpcmVjdENoaWxkKSB7Cisg
ICAgICAgIHNoYWRvd1Jvb3QuaG9zdCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKFJlY29uc3RydWN0
UmVuZGVyVHJlZSk7CisgICAgICAgIG1fc2xvdEFzc2lnbm1lbnRzSXNWYWxpZCA9IGZhbHNlOwor
ICAgIH0KKworICAgIGlmIChzaGFkb3dSb290LnR5cGUoKSA9PSBTaGFkb3dSb290OjpUeXBlOjpV
c2VyQWdlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlY3Vyc2l2ZWx5RmlyZVNsb3RDaGFu
Z2VFdmVudChzbG90RWxlbWVudCk7Cit9CisKK3ZvaWQgU2xvdEFzc2lnbm1lbnQ6Omhvc3RDaGls
ZEVsZW1lbnREaWRDaGFuZ2UoY29uc3QgRWxlbWVudCYgY2hpbGRFbGVtZW50LCBTaGFkb3dSb290
JiBzaGFkb3dSb290KQoreworICAgIGRpZENoYW5nZVNsb3QoY2hpbGRFbGVtZW50LmZhc3RHZXRB
dHRyaWJ1dGUoc2xvdEF0dHIpLCBDaGFuZ2VUeXBlOjpEaXJlY3RDaGlsZCwgc2hhZG93Um9vdCk7
Cit9CisKK2NvbnN0IFZlY3RvcjxOb2RlKj4qIFNsb3RBc3NpZ25tZW50Ojphc3NpZ25lZE5vZGVz
Rm9yU2xvdChjb25zdCBIVE1MU2xvdEVsZW1lbnQmIHNsb3RFbGVtZW50LCBTaGFkb3dSb290JiBz
aGFkb3dSb290KQoreworICAgIEFTU0VSVChzbG90RWxlbWVudC5jb250YWluaW5nU2hhZG93Um9v
dCgpID09ICZzaGFkb3dSb290KTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNsb3ROYW1lID0g
c2xvdE5hbWVGcm9tQXR0cmlidXRlVmFsdWUoc2xvdEVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZShu
YW1lQXR0cikpOworICAgIGF1dG8gaXQgPSBtX3Nsb3RzLmZpbmQoc2xvdE5hbWUpOworICAgIFJF
TEVBU0VfQVNTRVJUKGl0ICE9IG1fc2xvdHMuZW5kKCkpOwogCiAgICAgYXV0byYgc2xvdEluZm8g
PSAqaXQtPnZhbHVlOworICAgIGlmICghbV9zbG90QXNzaWdubWVudHNJc1ZhbGlkKQorICAgICAg
ICBhc3NpZ25TbG90cyhzaGFkb3dSb290KTsKIAogICAgIGlmICghc2xvdEluZm8uYXNzaWduZWRO
b2Rlcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTU1LDE4ICsxODYsOSBA
QCBjb25zdCBWZWN0b3I8Tm9kZSo+KiBTbG90QXNzaWdubWVudDo6YXNzCiAgICAgcmV0dXJuICZz
bG90SW5mby5hc3NpZ25lZE5vZGVzOwogfQogCi12b2lkIFNsb3RBc3NpZ25tZW50OjppbnZhbGlk
YXRlKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCitjb25zdCBBdG9taWNTdHJpbmcmIFNsb3RBc3Np
Z25tZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZChjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QKIHsK
LSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gZG8gYSB0YXJnZXRlZCByZWNvbnN0
cnVjdGlvbi4KLSAgICBzaGFkb3dSb290Lmhvc3QoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhSZWNv
bnN0cnVjdFJlbmRlclRyZWUpOwotICAgIG1fc2xvdEFzc2lnbm1lbnRzSXNWYWxpZCA9IGZhbHNl
OwotfQotCi12b2lkIFNsb3RBc3NpZ25tZW50OjppbnZhbGlkYXRlRGVmYXVsdFNsb3QoU2hhZG93
Um9vdCYgc2hhZG93Um9vdCkKLXsKLSAgICBhdXRvIGl0ID0gbV9zbG90cy5maW5kKGRlZmF1bHRT
bG90TmFtZSgpKTsKLSAgICBpZiAoaXQgIT0gbV9zbG90cy5lbmQoKSAmJiBpdC0+dmFsdWUtPmVs
ZW1lbnRDb3VudCkKLSAgICAgICAgaW52YWxpZGF0ZShzaGFkb3dSb290KTsgLy8gRklYTUU6IFdl
IHNob3VsZCBiZSBhYmxlIHRvIHJlY29uc3RydWN0IG9ubHkgdW5kZXIgdGhlIGRlZmF1bHQgc2xv
dC4KKyAgICByZXR1cm4gc2xvdE5hbWVGcm9tU2xvdEF0dHJpYnV0ZShjaGlsZCk7CiB9CiAKIEhU
TUxTbG90RWxlbWVudCogU2xvdEFzc2lnbm1lbnQ6OmZpbmRGaXJzdFNsb3RFbGVtZW50KFNsb3RJ
bmZvJiBzbG90SW5mbywgU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKQEAgLTE3Niw2ICsxOTgsNyBA
QCBIVE1MU2xvdEVsZW1lbnQqIFNsb3RBc3NpZ25tZW50OjpmaW5kRmlyCiAKICNpZm5kZWYgTkRF
QlVHCiAgICAgQVNTRVJUKCFzbG90SW5mby5lbGVtZW50IHx8IG1fc2xvdEVsZW1lbnRzRm9yQ29u
c2lzdGVuY3lDaGVjay5jb250YWlucyhzbG90SW5mby5lbGVtZW50KSk7CisgICAgQVNTRVJUKCEh
c2xvdEluZm8uZWxlbWVudCA9PSAhIXNsb3RJbmZvLmVsZW1lbnRDb3VudCk7CiAjZW5kaWYKIAog
ICAgIHJldHVybiBzbG90SW5mby5lbGVtZW50OwpAQCAtMjIzLDkgKzI0Niw3IEBAIHZvaWQgU2xv
dEFzc2lnbm1lbnQ6OmFzc2lnblNsb3RzKFNoYWRvd1IKICAgICBmb3IgKGF1dG8qIGNoaWxkID0g
aG9zdC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7
CiAgICAgICAgIGlmICghaXM8VGV4dD4oKmNoaWxkKSAmJiAhaXM8RWxlbWVudD4oKmNoaWxkKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvIHNsb3ROYW1lID0gbV9zbG90TmFt
ZUZ1bmN0aW9uKCpjaGlsZCk7Ci0gICAgICAgIGlmICghc2xvdE5hbWUpCi0gICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgYXV0byBzbG90TmFtZSA9IHNsb3ROYW1lRm9ySG9zdENoaWxkKCpj
aGlsZCk7CiAgICAgICAgIGFzc2lnblRvU2xvdCgqY2hpbGQsIHNsb3ROYW1lKTsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5oCShyZXZpc2lvbiAxOTgwNTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFNIQURPV19ET00pIHx8IEVOQUJMRShERVRBSUxT
X0VMRU1FTlQpCiAKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTM2LDE4ICszNywxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEVsZW1l
bnQ7CiBjbGFzcyBIVE1MU2xvdEVsZW1lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhZG93Um9v
dDsKIAogY2xhc3MgU2xvdEFzc2lnbm1lbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNs
b3RBc3NpZ25tZW50KTsKIHB1YmxpYzoKLSAgICB1c2luZyBTbG90TmFtZUZ1bmN0aW9uID0gc3Rk
OjpmdW5jdGlvbjxBdG9taWNTdHJpbmcgKGNvbnN0IE5vZGUmIGNoaWxkKT47Ci0KICAgICBTbG90
QXNzaWdubWVudCgpOwotICAgIFNsb3RBc3NpZ25tZW50KFNsb3ROYW1lRnVuY3Rpb24pOwotICAg
IH5TbG90QXNzaWdubWVudCgpIHsgfQorICAgIHZpcnR1YWwgflNsb3RBc3NpZ25tZW50KCk7CiAK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0U2xvdE5hbWUoKSB7IHJldHVy
biBlbXB0eUF0b207IH0KIApAQCAtNTYsMTAgKzU0LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGFk
ZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYsIEhUTUxTbG90RWxlbWVudCYs
IFNoYWRvd1Jvb3QmKTsKICAgICB2b2lkIHJlbW92ZVNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0
b21pY1N0cmluZyYsIEhUTUxTbG90RWxlbWVudCYsIFNoYWRvd1Jvb3QmKTsKIAorICAgIGVudW0g
Y2xhc3MgQ2hhbmdlVHlwZSB7IERpcmVjdENoaWxkLCBJbm5lclNsb3QgfTsKKyAgICB2b2lkIGRp
ZENoYW5nZVNsb3QoY29uc3QgQXRvbWljU3RyaW5nJiwgQ2hhbmdlVHlwZSwgU2hhZG93Um9vdCYp
OworICAgIHZvaWQgZW5xdWV1ZVNsb3RDaGFuZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmLCBT
aGFkb3dSb290Jik7CisKICAgICBjb25zdCBWZWN0b3I8Tm9kZSo+KiBhc3NpZ25lZE5vZGVzRm9y
U2xvdChjb25zdCBIVE1MU2xvdEVsZW1lbnQmLCBTaGFkb3dSb290Jik7CiAKLSAgICB2b2lkIGlu
dmFsaWRhdGUoU2hhZG93Um9vdCYpOwotICAgIHZvaWQgaW52YWxpZGF0ZURlZmF1bHRTbG90KFNo
YWRvd1Jvb3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgaG9zdENoaWxkRWxlbWVudERpZENoYW5nZShj
b25zdCBFbGVtZW50JiwgU2hhZG93Um9vdCYpOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBTbG90
SW5mbyB7CkBAIC03Nyw2ICs3OCw4IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIGVsZW1l
bnRDb3VudCB7IDAgfTsKICAgICAgICAgVmVjdG9yPE5vZGUqPiBhc3NpZ25lZE5vZGVzOwogICAg
IH07CisgICAgCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNsb3ROYW1lRm9ySG9z
dENoaWxkKGNvbnN0IE5vZGUmKSBjb25zdDsKIAogICAgIEhUTUxTbG90RWxlbWVudCogZmluZEZp
cnN0U2xvdEVsZW1lbnQoU2xvdEluZm8mLCBTaGFkb3dSb290Jik7CiAgICAgdm9pZCByZXNvbHZl
QWxsU2xvdEVsZW1lbnRzKFNoYWRvd1Jvb3QmKTsKQEAgLTg0LDggKzg3LDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGFzc2lnblNsb3RzKFNoYWRvd1Jvb3QmKTsKICAgICB2b2lkIGFzc2lnblRvU2xv
dChOb2RlJiBjaGlsZCwgY29uc3QgQXRvbWljU3RyaW5nJiBzbG90TmFtZSk7CiAKLSAgICBTbG90
TmFtZUZ1bmN0aW9uIG1fc2xvdE5hbWVGdW5jdGlvbjsKLQogICAgIEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEluZm8+PiBtX3Nsb3RzOwogCiAjaWZuZGVmIE5ERUJV
RwpAQCAtOTYsNiArOTcsMzggQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2xvdEFzc2lnbm1lbnRz
SXNWYWxpZCB7IGZhbHNlIH07CiB9OwogCitpbmxpbmUgdm9pZCBTaGFkb3dSb290OjpkaWRSZW1v
dmVBbGxDaGlsZHJlbk9mU2hhZG93SG9zdCgpCit7CisgICAgaWYgKG1fc2xvdEFzc2lnbm1lbnQp
IC8vIEZJWE1FOiBUaGlzIGlzIGluY29ycmVjdCB3aGVuIHRoZXJlIHdlcmUgbm8gZWxlbWVudHMg
b3IgdGV4dCBub2RlcyByZW1vdmVkLgorICAgICAgICBtX3Nsb3RBc3NpZ25tZW50LT5kaWRDaGFu
Z2VTbG90KG51bGxBdG9tLCBTbG90QXNzaWdubWVudDo6Q2hhbmdlVHlwZTo6RGlyZWN0Q2hpbGQs
ICp0aGlzKTsKK30KKworaW5saW5lIHZvaWQgU2hhZG93Um9vdDo6ZGlkQ2hhbmdlRGVmYXVsdFNs
b3QoKQoreworICAgIGlmIChtX3Nsb3RBc3NpZ25tZW50KQorICAgICAgICBtX3Nsb3RBc3NpZ25t
ZW50LT5kaWRDaGFuZ2VTbG90KG51bGxBdG9tLCBTbG90QXNzaWdubWVudDo6Q2hhbmdlVHlwZTo6
RGlyZWN0Q2hpbGQsICp0aGlzKTsKK30KKworaW5saW5lIHZvaWQgU2hhZG93Um9vdDo6aG9zdENo
aWxkRWxlbWVudERpZENoYW5nZShjb25zdCBFbGVtZW50JiBjaGlsZEVsZW1lbnQpCit7CisgICAg
aWYgKG1fc2xvdEFzc2lnbm1lbnQpCisgICAgICAgIG1fc2xvdEFzc2lnbm1lbnQtPmhvc3RDaGls
ZEVsZW1lbnREaWRDaGFuZ2UoY2hpbGRFbGVtZW50LCAqdGhpcyk7Cit9CisKK2lubGluZSB2b2lk
IFNoYWRvd1Jvb3Q6Omhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2VTbG90QXR0cihjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQoreworICAg
IGlmIChtX3Nsb3RBc3NpZ25tZW50KSB7CisgICAgICAgIG1fc2xvdEFzc2lnbm1lbnQtPmRpZENo
YW5nZVNsb3Qob2xkVmFsdWUsIFNsb3RBc3NpZ25tZW50OjpDaGFuZ2VUeXBlOjpEaXJlY3RDaGls
ZCwgKnRoaXMpOworICAgICAgICBtX3Nsb3RBc3NpZ25tZW50LT5kaWRDaGFuZ2VTbG90KG5ld1Zh
bHVlLCBTbG90QXNzaWdubWVudDo6Q2hhbmdlVHlwZTo6RGlyZWN0Q2hpbGQsICp0aGlzKTsKKyAg
ICB9Cit9CisKK2lubGluZSB2b2lkIFNoYWRvd1Jvb3Q6OmlubmVyU2xvdERpZENoYW5nZShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKG1fc2xvdEFzc2lnbm1lbnQpCisgICAg
ICAgIG1fc2xvdEFzc2lnbm1lbnQtPmRpZENoYW5nZVNsb3QobmFtZSwgU2xvdEFzc2lnbm1lbnQ6
OkNoYW5nZVR5cGU6OklubmVyU2xvdCwgKnRoaXMpOworfQorCiB9CiAKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAkocmV2aXNpb24gMTk4
MDU2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw3ICs0NCwyMyBAQCBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBz
dW1tYXJ5U2xvdE5hCiAgICAgcmV0dXJuIHN1bW1hcnlTbG90OwogfQogCi1zdGF0aWMgQXRvbWlj
U3RyaW5nIHNsb3ROYW1lRnVuY3Rpb24oY29uc3QgTm9kZSYgY2hpbGQpCitjbGFzcyBEZXRhaWxz
U2xvdEFzc2lnbm1lbnQgZmluYWwgOiBwdWJsaWMgU2xvdEFzc2lnbm1lbnQgeworcHJpdmF0ZToK
KyAgICB2b2lkIGhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoY29uc3QgRWxlbWVudCYsIFNoYWRv
d1Jvb3QmKSBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNsb3ROYW1lRm9ySG9z
dENoaWxkKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKK307CisKK3ZvaWQgRGV0YWlsc1Ns
b3RBc3NpZ25tZW50Ojpob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlKGNvbnN0IEVsZW1lbnQmIGNo
aWxkRWxlbWVudCwgU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKK3sKKyAgICBpZiAoaXM8SFRNTFN1
bW1hcnlFbGVtZW50PihjaGlsZEVsZW1lbnQpKSB7CisgICAgICAgIC8vIERvbid0IGNoZWNrIHdo
ZXRoZXIgdGhpcyBpcyB0aGUgZmlyc3Qgc3VtbWFyeSBlbGVtZW50CisgICAgICAgIC8vIHNpbmNl
IHdlIGRvbid0IGtub3cgdGhlIGFuc3dlciB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGlu
c2lkZSBFbGVtZW50OjpyZW1vdmVkRnJvbS4KKyAgICAgICAgZGlkQ2hhbmdlU2xvdChzdW1tYXJ5
U2xvdE5hbWUoKSwgQ2hhbmdlVHlwZTo6RGlyZWN0Q2hpbGQsIHNoYWRvd1Jvb3QpOworICAgIH0g
ZWxzZQorICAgICAgICBkaWRDaGFuZ2VTbG90KFNsb3RBc3NpZ25tZW50OjpkZWZhdWx0U2xvdE5h
bWUoKSwgQ2hhbmdlVHlwZTo6RGlyZWN0Q2hpbGQsIHNoYWRvd1Jvb3QpOworfQorCitjb25zdCBB
dG9taWNTdHJpbmcmIERldGFpbHNTbG90QXNzaWdubWVudDo6c2xvdE5hbWVGb3JIb3N0Q2hpbGQo
Y29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0CiB7CiAgICAgYXV0byYgcGFyZW50ID0gKmNoaWxkLnBh
cmVudE5vZGUoKTsKICAgICBBU1NFUlQoaXM8SFRNTERldGFpbHNFbGVtZW50PihwYXJlbnQpKTsK
QEAgLTU1LDE4ICs3MSwxMyBAQCBzdGF0aWMgQXRvbWljU3RyaW5nIHNsb3ROYW1lRnVuY3Rpb24o
Y29uCiAgICAgICAgIGlmICgmY2hpbGQgPT0gY2hpbGRyZW5PZlR5cGU8SFRNTFN1bW1hcnlFbGVt
ZW50PihkZXRhaWxzKS5maXJzdCgpKQogICAgICAgICAgICAgcmV0dXJuIHN1bW1hcnlTbG90TmFt
ZSgpOwogICAgIH0KLSAgICAvLyBFdmVyeXRoaW5nIGVsc2UgaXMgYXNzaWduZWQgdG8gdGhlIGRl
ZmF1bHQgc2xvdCBpZiBkZXRhaWxzIGlzIG9wZW4uCi0gICAgaWYgKGRldGFpbHMuaXNPcGVuKCkp
Ci0gICAgICAgIHJldHVybiBTbG90QXNzaWdubWVudDo6ZGVmYXVsdFNsb3ROYW1lKCk7Ci0KLSAg
ICAvLyBPdGhlcndpc2UgZG9uJ3QgcmVuZGVyIHRoZSBjb250ZW50LgotICAgIHJldHVybiBudWxs
QXRvbTsKLX07CisgICAgcmV0dXJuIFNsb3RBc3NpZ25tZW50OjpkZWZhdWx0U2xvdE5hbWUoKTsK
K30KIAogUmVmPEhUTUxEZXRhaWxzRWxlbWVudD4gSFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAg
IGF1dG8gZGV0YWlscyA9IGFkb3B0UmVmKCpuZXcgSFRNTERldGFpbHNFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KSk7Ci0gICAgZGV0YWlscy0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVh
dGUoZG9jdW1lbnQsIHN0ZDo6bWFrZV91bmlxdWU8U2xvdEFzc2lnbm1lbnQ+KHNsb3ROYW1lRnVu
Y3Rpb24pKSk7CisgICAgZGV0YWlscy0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVhdGUo
ZG9jdW1lbnQsIHN0ZDo6bWFrZV91bmlxdWU8RGV0YWlsc1Nsb3RBc3NpZ25tZW50PigpKSk7CiAg
ICAgcmV0dXJuIGRldGFpbHM7CiB9CiAKQEAgLTk0LDggKzEwNSw4IEBAIHZvaWQgSFRNTERldGFp
bHNFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnQKICAgICBzdW1tYXJ5U2xvdC0+YXBwZW5kQ2hpbGQo
V1RGTW92ZShkZWZhdWx0U3VtbWFyeSkpOwogICAgIHJvb3QtPmFwcGVuZENoaWxkKFdURk1vdmUo
c3VtbWFyeVNsb3QpKTsKIAotICAgIGF1dG8gZGVmYXVsdFNsb3QgPSBIVE1MU2xvdEVsZW1lbnQ6
OmNyZWF0ZShzbG90VGFnLCBkb2N1bWVudCgpKTsKLSAgICByb290LT5hcHBlbmRDaGlsZChXVEZN
b3ZlKGRlZmF1bHRTbG90KSk7CisgICAgbV9kZWZhdWx0U2xvdCA9IEhUTUxTbG90RWxlbWVudDo6
Y3JlYXRlKHNsb3RUYWcsIGRvY3VtZW50KCkpOworICAgIEFTU0VSVCghbV9pc09wZW4pOwogfQog
CiBib29sIEhUTUxEZXRhaWxzRWxlbWVudDo6aXNBY3RpdmVTdW1tYXJ5KGNvbnN0IEhUTUxTdW1t
YXJ5RWxlbWVudCYgc3VtbWFyeSkgY29uc3QKQEAgLTExNCw4ICsxMjUsMTQgQEAgdm9pZCBIVE1M
RGV0YWlsc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKAogICAgIGlmIChuYW1lID09IG9wZW5BdHRy
KSB7CiAgICAgICAgIGJvb2wgb2xkVmFsdWUgPSBtX2lzT3BlbjsKICAgICAgICAgbV9pc09wZW4g
PSAhdmFsdWUuaXNOdWxsKCk7Ci0gICAgICAgIGlmIChvbGRWYWx1ZSAhPSBtX2lzT3BlbikKLSAg
ICAgICAgICAgIHNoYWRvd1Jvb3QoKS0+aW52YWxpZGF0ZVNsb3RBc3NpZ25tZW50cygpOworICAg
ICAgICBpZiAob2xkVmFsdWUgIT0gbV9pc09wZW4pIHsKKyAgICAgICAgICAgIGF1dG8qIHJvb3Qg
PSBzaGFkb3dSb290KCk7CisgICAgICAgICAgICBBU1NFUlQocm9vdCk7CisgICAgICAgICAgICBp
ZiAobV9pc09wZW4pCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kQ2hpbGQoKm1fZGVmYXVs
dFNsb3QpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJvb3QtPnJlbW92ZUNo
aWxkKCptX2RlZmF1bHRTbG90KTsKKyAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBIVE1M
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCShyZXZpc2lvbiAxOTgwNTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw2ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzT3BlbiB7IGZhbHNlIH07CiAgICAg
SFRNTFNsb3RFbGVtZW50KiBtX3N1bW1hcnlTbG90IHsgbnVsbHB0ciB9OwogICAgIEhUTUxTdW1t
YXJ5RWxlbWVudCogbV9kZWZhdWx0U3VtbWFyeSB7IG51bGxwdHIgfTsKKyAgICBSZWZQdHI8SFRN
TFNsb3RFbGVtZW50PiBtX2RlZmF1bHRTbG90OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmNwcAkocmV2aXNpb24g
MTk4MDU2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaWYgRU5BQkxFKFNIQURPV19ET00pIHx8IEVO
QUJMRShERVRBSUxTX0VMRU1FTlQpCiAKICNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5o
IgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIApAQCAtOTcsNiArOTksMjcg
QEAgY29uc3QgVmVjdG9yPE5vZGUqPiogSFRNTFNsb3RFbGVtZW50OjphcwogICAgIHJldHVybiBz
aGFkb3dSb290LT5hc3NpZ25lZE5vZGVzRm9yU2xvdCgqdGhpcyk7CiB9CiAKK3ZvaWQgSFRNTFNs
b3RFbGVtZW50OjplbnF1ZXVlU2xvdENoYW5nZUV2ZW50KCkKK3sKKyAgICBpZiAobV9oYXNFbnF1
ZXVlZFNsb3RDaGFuZ2VFdmVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBidWJibGVz
ID0gZmFsc2U7CisgICAgYm9vbCBjYW5jZWxhYmxlID0gZmFsc2U7CisgICAgYXV0byBldmVudCA9
IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNsb3RjaGFuZ2VFdmVudCwgYnViYmxlcywgY2Fu
Y2VsYWJsZSk7CisgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICBkb2N1bWVudCgpLmVu
cXVldWVTbG90Y2hhbmdlRXZlbnQoV1RGTW92ZShldmVudCkpOworCisgICAgbV9oYXNFbnF1ZXVl
ZFNsb3RDaGFuZ2VFdmVudCA9IHRydWU7Cit9CisKK2Jvb2wgSFRNTFNsb3RFbGVtZW50OjpkaXNw
YXRjaEV2ZW50KEV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50
TmFtZXMoKS5zbG90Y2hhbmdlRXZlbnQpCisgICAgICAgIG1faGFzRW5xdWV1ZWRTbG90Q2hhbmdl
RXZlbnQgPSBmYWxzZTsKKyAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQoZXZl
bnQpOworfQorCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xv
dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxl
bWVudC5oCShyZXZpc2lvbiAxOTgwNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMiArMzksMTggQEAgcHVibGljOgogCiAg
ICAgY29uc3QgVmVjdG9yPE5vZGUqPiogYXNzaWduZWROb2RlcygpIGNvbnN0OwogCisgICAgdm9p
ZCBlbnF1ZXVlU2xvdENoYW5nZUV2ZW50KCk7CisKIHByaXZhdGU6CiAgICAgSFRNTFNsb3RFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgSW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQg
YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZp
Y2F0aW9uUmVhc29uKSBvdmVycmlkZTsKKworICAgIGJvb2wgZGlzcGF0Y2hFdmVudChFdmVudCYp
IG92ZXJyaWRlOworCisgICAgYm9vbCBtX2hhc0VucXVldWVkU2xvdENoYW5nZUV2ZW50IHsgZmFs
c2UgfTsKIH07CiAKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODA1NikKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE2LTAzLTE0ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBzbG90Y2hhbmdl
IGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTU0MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0OTk3NTM0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgVzNDIHN0eWxlIHRlc3Ro
YXJuZXNzLmpzIHRlc3QuCisKKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vU2hhZG93Um9vdC1p
bnRlcmZhY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9TaGFkb3dS
b290LWludGVyZmFjZS5odG1sOiBEb24ndCBpbXBvcnQgdGVzdGhhcm5lc3MuY3NzIGZyb20gc3Zu
LndlYmtpdC5vcmcuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL3Nsb3RjaGFuZ2UtZXZlbnQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vc2xvdGNoYW5n
ZS1ldmVudC5odG1sOiBBZGRlZC4KKwogMjAxNi0wMy0xMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgRXZlbnQuZGVlcFBhdGgoKSBhbmQgRXZlbnQuc2Nv
cGVkCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vU2hhZG93Um9vdC1pbnRlcmZh
Y2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRv
bS9TaGFkb3dSb290LWludGVyZmFjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5ODA1NikKKysr
IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9TaGFkb3dSb290LWludGVyZmFjZS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSwzIEBACi1CbG9ja2VkIGFjY2VzcyB0byBl
eHRlcm5hbCBVUkwgaHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVu
ay9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzCiAKIFBBU1MgQ2hlY2sgdGhl
IGV4aXN0ZW5jZSBvZiBTaGFkb3dSb290IGludGVyZmFjZSAKIFBBU1MgU2hhZG93Um9vdCBtdXN0
IGluaGVyaXQgZnJvbSBEb2N1bWVudEZyYWdtZW50IApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9z
aGFkb3ctZG9tL1NoYWRvd1Jvb3QtaW50ZXJmYWNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9zaGFkb3ctZG9tL1NoYWRvd1Jvb3QtaW50ZXJmYWNlLmh0bWwJKHJldmlzaW9u
IDE5ODA1NikKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9TaGFkb3dSb290LWludGVy
ZmFjZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQAogPGxpbmsgcmVsPSJoZWxw
IiBocmVmPSJodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL3NoYWRvdy8j
dGhlLXNoYWRvd3Jvb3QtaW50ZXJmYWNlIj4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08bGluayByZWw9J3N0eWxlc2hlZXQnIGhy
ZWY9J2h0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmsvTGF5b3V0
VGVzdHMvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+Cis8bGluayByZWw9J3N0eWxlc2hlZXQn
IGhyZWY9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MnPgogPC9oZWFkPgogPGJvZHk+
CiA8ZGl2IGlkPSJsb2ciPjwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9t
L3Nsb3RjaGFuZ2UtZXZlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3Qvc2hhZG93LWRvbS9zbG90Y2hhbmdlLWV2ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zbG90Y2hhbmdlLWV2ZW50LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACitoZWxsbworaGVsbG8KKwor
UEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBhIGRlZmF1bHQgc2xvdCBlbGVtZW50
IGluc2lkZSBhbiBvcGVuIHNoYWRvdyByb290ICBpbiBhIGRvY3VtZW50IAorUEFTUyBzbG90Y2hh
bmdlIGV2ZW50IG11c3QgZmlyZSBvbiBhIGRlZmF1bHQgc2xvdCBlbGVtZW50IGluc2lkZSBhIGNs
b3NlZCBzaGFkb3cgcm9vdCAgaW4gYSBkb2N1bWVudCAKK1BBU1Mgc2xvdGNoYW5nZSBldmVudCBt
dXN0IGZpcmUgb24gYSBkZWZhdWx0IHNsb3QgZWxlbWVudCBpbnNpZGUgYW4gb3BlbiBzaGFkb3cg
cm9vdCAgbm90IGluIGEgZG9jdW1lbnQgCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBmaXJl
IG9uIGEgZGVmYXVsdCBzbG90IGVsZW1lbnQgaW5zaWRlIGEgY2xvc2VkIHNoYWRvdyByb290ICBu
b3QgaW4gYSBkb2N1bWVudCAKK1BBU1Mgc2xvdGNoYW5nZSBldmVudCBtdXN0IGZpcmUgb24gYSBu
YW1lZCBzbG90IGVsZW1lbnQgaW5zaWRlYW4gb3BlbiBzaGFkb3cgcm9vdCAgaW4gYSBkb2N1bWVu
dCAKK1BBU1Mgc2xvdGNoYW5nZSBldmVudCBtdXN0IGZpcmUgb24gYSBuYW1lZCBzbG90IGVsZW1l
bnQgaW5zaWRlYSBjbG9zZWQgc2hhZG93IHJvb3QgIGluIGEgZG9jdW1lbnQgCitQQVNTIHNsb3Rj
aGFuZ2UgZXZlbnQgbXVzdCBmaXJlIG9uIGEgbmFtZWQgc2xvdCBlbGVtZW50IGluc2lkZWFuIG9w
ZW4gc2hhZG93IHJvb3QgIG5vdCBpbiBhIGRvY3VtZW50IAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50
IG11c3QgZmlyZSBvbiBhIG5hbWVkIHNsb3QgZWxlbWVudCBpbnNpZGVhIGNsb3NlZCBzaGFkb3cg
cm9vdCAgbm90IGluIGEgZG9jdW1lbnQgCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBub3Qg
ZmlyZSBvbiBhIHNsb3QgZWxlbWVudCBpbnNpZGUgYW4gb3BlbiBzaGFkb3cgcm9vdCAgaW4gYSBk
b2N1bWVudCB3aGVuIGFub3RoZXIgc2xvdCdzIGFzc2lnbmVkIG5vZGVzIGNoYW5nZSAKK1BBU1Mg
c2xvdGNoYW5nZSBldmVudCBtdXN0IG5vdCBmaXJlIG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBh
IGNsb3NlZCBzaGFkb3cgcm9vdCAgaW4gYSBkb2N1bWVudCB3aGVuIGFub3RoZXIgc2xvdCdzIGFz
c2lnbmVkIG5vZGVzIGNoYW5nZSAKK1BBU1Mgc2xvdGNoYW5nZSBldmVudCBtdXN0IG5vdCBmaXJl
IG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBhbiBvcGVuIHNoYWRvdyByb290ICBub3QgaW4gYSBk
b2N1bWVudCB3aGVuIGFub3RoZXIgc2xvdCdzIGFzc2lnbmVkIG5vZGVzIGNoYW5nZSAKK1BBU1Mg
c2xvdGNoYW5nZSBldmVudCBtdXN0IG5vdCBmaXJlIG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBh
IGNsb3NlZCBzaGFkb3cgcm9vdCAgbm90IGluIGEgZG9jdW1lbnQgd2hlbiBhbm90aGVyIHNsb3Qn
cyBhc3NpZ25lZCBub2RlcyBjaGFuZ2UgCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBub3Qg
ZmlyZSBvbiBhIHNsb3QgZWxlbWVudCBpbnNpZGUgYW4gb3BlbiBzaGFkb3cgcm9vdCAgaW4gYSBk
b2N1bWVudCB3aGVuIHRoZSBzaGFkb3cgaG9zdCB3YXMgbXV0YXRlZCBiZWZvcmUgdGhlIHNsb3Qg
d2FzIGluc2VydGVkIG9yIGFmdGVyIHRoZSBzbG90IHdhcyByZW1vdmVkIAorUEFTUyBzbG90Y2hh
bmdlIGV2ZW50IG11c3Qgbm90IGZpcmUgb24gYSBzbG90IGVsZW1lbnQgaW5zaWRlIGEgY2xvc2Vk
IHNoYWRvdyByb290ICBpbiBhIGRvY3VtZW50IHdoZW4gdGhlIHNoYWRvdyBob3N0IHdhcyBtdXRh
dGVkIGJlZm9yZSB0aGUgc2xvdCB3YXMgaW5zZXJ0ZWQgb3IgYWZ0ZXIgdGhlIHNsb3Qgd2FzIHJl
bW92ZWQgCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBub3QgZmlyZSBvbiBhIHNsb3QgZWxl
bWVudCBpbnNpZGUgYW4gb3BlbiBzaGFkb3cgcm9vdCAgbm90IGluIGEgZG9jdW1lbnQgd2hlbiB0
aGUgc2hhZG93IGhvc3Qgd2FzIG11dGF0ZWQgYmVmb3JlIHRoZSBzbG90IHdhcyBpbnNlcnRlZCBv
ciBhZnRlciB0aGUgc2xvdCB3YXMgcmVtb3ZlZCAKK1BBU1Mgc2xvdGNoYW5nZSBldmVudCBtdXN0
IG5vdCBmaXJlIG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBhIGNsb3NlZCBzaGFkb3cgcm9vdCAg
bm90IGluIGEgZG9jdW1lbnQgd2hlbiB0aGUgc2hhZG93IGhvc3Qgd2FzIG11dGF0ZWQgYmVmb3Jl
IHRoZSBzbG90IHdhcyBpbnNlcnRlZCBvciBhZnRlciB0aGUgc2xvdCB3YXMgcmVtb3ZlZCAKK1BB
U1Mgc2xvdGNoYW5nZSBldmVudCBtdXN0IGZpcmUgb24gYSBzbG90IGVsZW1lbnQgaW5zaWRlIGFu
IG9wZW4gc2hhZG93IHJvb3QgIGluIGEgZG9jdW1lbnQgZXZlbiBpZiB0aGUgc2xvdCB3YXMgcmVt
b3ZlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgYXNzaWduZWQgbm9kZXMgd2VyZSBtdXRhdGVkIAor
UEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBhIHNsb3QgZWxlbWVudCBpbnNpZGUg
YSBjbG9zZWQgc2hhZG93IHJvb3QgIGluIGEgZG9jdW1lbnQgZXZlbiBpZiB0aGUgc2xvdCB3YXMg
cmVtb3ZlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgYXNzaWduZWQgbm9kZXMgd2VyZSBtdXRhdGVk
IAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBhIHNsb3QgZWxlbWVudCBpbnNp
ZGUgYW4gb3BlbiBzaGFkb3cgcm9vdCAgbm90IGluIGEgZG9jdW1lbnQgZXZlbiBpZiB0aGUgc2xv
dCB3YXMgcmVtb3ZlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgYXNzaWduZWQgbm9kZXMgd2VyZSBt
dXRhdGVkIAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBhIHNsb3QgZWxlbWVu
dCBpbnNpZGUgYSBjbG9zZWQgc2hhZG93IHJvb3QgIG5vdCBpbiBhIGRvY3VtZW50IGV2ZW4gaWYg
dGhlIHNsb3Qgd2FzIHJlbW92ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGFzc2lnbmVkIG5vZGVz
IHdlcmUgbXV0YXRlZCAKK1BBU1Mgc2xvdGNoYW5nZSBldmVudCBtdXN0IGZpcmUgb24gYSBzbG90
IGVsZW1lbnQgaW5zaWRlIGFuIG9wZW4gc2hhZG93IHJvb3QgIGluIGEgZG9jdW1lbnQgd2hlbiBp
bm5lckhUTUwgbW9kaWZpZXMgdGhlIGNoaWxkcmVuIG9mIHRoZSBzaGFkb3cgaG9zdCAKK1BBU1Mg
c2xvdGNoYW5nZSBldmVudCBtdXN0IGZpcmUgb24gYSBzbG90IGVsZW1lbnQgaW5zaWRlIGEgY2xv
c2VkIHNoYWRvdyByb290ICBpbiBhIGRvY3VtZW50IHdoZW4gaW5uZXJIVE1MIG1vZGlmaWVzIHRo
ZSBjaGlsZHJlbiBvZiB0aGUgc2hhZG93IGhvc3QgCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVz
dCBmaXJlIG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBhbiBvcGVuIHNoYWRvdyByb290ICBub3Qg
aW4gYSBkb2N1bWVudCB3aGVuIGlubmVySFRNTCBtb2RpZmllcyB0aGUgY2hpbGRyZW4gb2YgdGhl
IHNoYWRvdyBob3N0IAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBhIHNsb3Qg
ZWxlbWVudCBpbnNpZGUgYSBjbG9zZWQgc2hhZG93IHJvb3QgIG5vdCBpbiBhIGRvY3VtZW50IHdo
ZW4gaW5uZXJIVE1MIG1vZGlmaWVzIHRoZSBjaGlsZHJlbiBvZiB0aGUgc2hhZG93IGhvc3QgCitQ
QVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBmaXJlIG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBh
biBvcGVuIHNoYWRvdyByb290ICBpbiBhIGRvY3VtZW50IHdoZW4gbmVzdGVkIHNsb3RzJ3MgY29u
dGVudHMgY2hhbmdlIAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBhIHNsb3Qg
ZWxlbWVudCBpbnNpZGUgYSBjbG9zZWQgc2hhZG93IHJvb3QgIGluIGEgZG9jdW1lbnQgd2hlbiBu
ZXN0ZWQgc2xvdHMncyBjb250ZW50cyBjaGFuZ2UgCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVz
dCBmaXJlIG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBhbiBvcGVuIHNoYWRvdyByb290ICBub3Qg
aW4gYSBkb2N1bWVudCB3aGVuIG5lc3RlZCBzbG90cydzIGNvbnRlbnRzIGNoYW5nZSAKK1BBU1Mg
c2xvdGNoYW5nZSBldmVudCBtdXN0IGZpcmUgb24gYSBzbG90IGVsZW1lbnQgaW5zaWRlIGEgY2xv
c2VkIHNoYWRvdyByb290ICBub3QgaW4gYSBkb2N1bWVudCB3aGVuIG5lc3RlZCBzbG90cydzIGNv
bnRlbnRzIGNoYW5nZSAKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3Nsb3Rj
aGFuZ2UtZXZlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1k
b20vc2xvdGNoYW5nZS1ldmVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9zaGFkb3ctZG9tL3Nsb3RjaGFuZ2UtZXZlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDUzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlNoYWRv
dyBET006IHNsb3RjaGFuZ2UgZXZlbnQ8L3RpdGxlPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRs
ZT0iUnlvc3VrZSBOaXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxp
bmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3Nz
Jz4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Z1
bmN0aW9uIHRyZWVOYW1lKG1vZGUsIGNvbm5lY3RlZFRvRG9jdW1lbnQpCit7CisgICAgcmV0dXJu
IChtb2RlID09ICdvcGVuJyA/ICdhbiAnIDogJ2EgJykgKyBtb2RlICsgJyBzaGFkb3cgcm9vdCAn
CisgICAgICAgICsgKGNvbm5lY3RlZFRvRG9jdW1lbnQgPyAnJyA6ICcgbm90JykgKyAnIGluIGEg
ZG9jdW1lbnQnOworfQorCitmdW5jdGlvbiB0ZXN0QXBwZW5kaW5nU3BhblRvU2hhZG93Um9vdFdp
dGhEZWZhdWx0U2xvdChtb2RlLCBjb25uZWN0ZWRUb0RvY3VtZW50KQoreworICAgIHZhciB0ZXN0
ID0gYXN5bmNfdGVzdCgnc2xvdGNoYW5nZSBldmVudCBtdXN0IGZpcmUgb24gYSBkZWZhdWx0IHNs
b3QgZWxlbWVudCBpbnNpZGUgJworICAgICAgICArIHRyZWVOYW1lKG1vZGUsIGNvbm5lY3RlZFRv
RG9jdW1lbnQpKTsKKworICAgIHZhciBob3N0OworICAgIHZhciBzbG90OworICAgIHZhciBldmVu
dENvdW50ID0gMDsKKworICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgIGhvc3Qg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgaWYgKGNvbm5lY3RlZFRv
RG9jdW1lbnQpCisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGhvc3QpOwor
CisgICAgICAgIHZhciBzaGFkb3dSb290ID0gaG9zdC5hdHRhY2hTaGFkb3coeydtb2RlJzogbW9k
ZX0pOworICAgICAgICBzbG90ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2xvdCcpOworCisg
ICAgICAgIHNsb3QuYWRkRXZlbnRMaXN0ZW5lcignc2xvdGNoYW5nZScsIGZ1bmN0aW9uIChldmVu
dCkgeworICAgICAgICAgICAgaWYgKGV2ZW50LmlzRmFrZUV2ZW50KQorICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnR5cGUsICdzbG90Y2hhbmdlJywgJ3Nsb3RjaGFu
Z2UgZXZlbnRcJ3MgdHlwZSBtdXN0IGJlICJzbG90Y2hhbmdlIicpOworICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoZXZlbnQudGFyZ2V0LCBzbG90LCAnc2xvdGNoYW5nZSBldmVudFwncyB0
YXJnZXQgbXVzdCBiZSB0aGUgc2xvdCBlbGVtZW50Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhldmVudC5yZWxhdGVkVGFyZ2V0LCB1bmRlZmluZWQsICdzbG90Y2hhbmdlIG11c3Qg
bm90IHNldCByZWxhdGVkVGFyZ2V0Jyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGV2
ZW50Q291bnQrKzsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2hhZG93Um9vdC5hcHBlbmRDaGls
ZChzbG90KTsKKworICAgICAgICBob3N0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3NwYW4nKSk7CisgICAgICAgIGhvc3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnYicpKTsKKworICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Q291bnQsIDAsICdzbG90
Y2hhbmdlIGV2ZW50IG11c3Qgbm90IGJlIGZpcmVkIHN5bmNocm9ub3VzbHknKTsKKyAgICB9KTsK
KworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudENvdW50LCAxLCAnc2xvdGNo
YW5nZSBtdXN0IGJlIGZpcmVkIGV4YWN0bHkgb25jZSBhZnRlciB0aGUgYXNzaWduZWQgbm9kZXMg
Y2hhbmdlZCcpOworCisgICAgICAgICAgICBob3N0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2knKSk7CisgICAgICAgIH0pOworCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Q291bnQsIDIsICdzbG90Y2hhbmdlIG11c3QgYmUgZmly
ZWQgZXhhY3RseSBvbmNlIGFmdGVyIHRoZSBhc3NpZ25lZCBub2RlcyBjaGFuZ2VkJyk7CisKKyAg
ICAgICAgICAgICAgICBob3N0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdo
ZWxsbycpKTsKKworICAgICAgICAgICAgICAgIHZhciBmYWtlRXZlbnQgPSBuZXcgRXZlbnQoJ3Ns
b3RjaGFuZ2UnKTsKKyAgICAgICAgICAgICAgICBmYWtlRXZlbnQuaXNGYWtlRXZlbnQgPSB0cnVl
OworICAgICAgICAgICAgICAgIHNsb3QuZGlzcGF0Y2hFdmVudChmYWtlRXZlbnQpOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMoZXZlbnRDb3VudCwgMywgJ3Nsb3RjaGFuZ2UgbXVzdCBiZSBmaXJlZCBleGFj
dGx5IG9uY2UgYWZ0ZXIgdGhlIGFzc2lnbmVkIG5vZGVzIGNoYW5nZWQnCisgICAgICAgICAgICAg
ICAgICAgICAgICArICcgZXZlbnQgaWYgdGhlcmUgd2FzIGEgc3ludGhldGljIHNsb3RjaGFuZ2Ug
ZXZlbnQgZmlyZWQnKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB0ZXN0
LmRvbmUoKTsKKyAgICAgICAgICAgIH0sIDEpOworICAgICAgICB9LCAxKTsKKyAgICB9LCAxKTsK
K30KKwordGVzdEFwcGVuZGluZ1NwYW5Ub1NoYWRvd1Jvb3RXaXRoRGVmYXVsdFNsb3QoJ29wZW4n
LCB0cnVlKTsKK3Rlc3RBcHBlbmRpbmdTcGFuVG9TaGFkb3dSb290V2l0aERlZmF1bHRTbG90KCdj
bG9zZWQnLCB0cnVlKTsKK3Rlc3RBcHBlbmRpbmdTcGFuVG9TaGFkb3dSb290V2l0aERlZmF1bHRT
bG90KCdvcGVuJywgZmFsc2UpOwordGVzdEFwcGVuZGluZ1NwYW5Ub1NoYWRvd1Jvb3RXaXRoRGVm
YXVsdFNsb3QoJ2Nsb3NlZCcsIGZhbHNlKTsKKworZnVuY3Rpb24gdGVzdEFwcGVuZGluZ1NwYW5U
b1NoYWRvd1Jvb3RXaXRoTmFtZWRTbG90KG1vZGUsIGNvbm5lY3RlZFRvRG9jdW1lbnQpCit7Cisg
ICAgdmFyIHRlc3QgPSBhc3luY190ZXN0KCdzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBh
IG5hbWVkIHNsb3QgZWxlbWVudCBpbnNpZGUnCisgICAgICAgICsgdHJlZU5hbWUobW9kZSwgY29u
bmVjdGVkVG9Eb2N1bWVudCkpOworCisgICAgdmFyIGhvc3Q7CisgICAgdmFyIHNsb3Q7CisgICAg
dmFyIGV2ZW50Q291bnQgPSAwOworCisgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBpZiAoY29u
bmVjdGVkVG9Eb2N1bWVudCkKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
aG9zdCk7CisKKyAgICAgICAgdmFyIHNoYWRvd1Jvb3QgPSBob3N0LmF0dGFjaFNoYWRvdyh7J21v
ZGUnOiBtb2RlfSk7CisgICAgICAgIHNsb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzbG90
Jyk7CisgICAgICAgIHNsb3QubmFtZSA9ICdzb21lU2xvdCc7CisKKyAgICAgICAgc2xvdC5hZGRF
dmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgICAg
ICBpZiAoZXZlbnQuaXNGYWtlRXZlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoZXZlbnQudHlwZSwgJ3Nsb3RjaGFuZ2UnLCAnc2xvdGNoYW5nZSBldmVudFwncyB0eXBl
IG11c3QgYmUgInNsb3RjaGFuZ2UiJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhl
dmVudC50YXJnZXQsIHNsb3QsICdzbG90Y2hhbmdlIGV2ZW50XCdzIHRhcmdldCBtdXN0IGJlIHRo
ZSBzbG90IGVsZW1lbnQnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnJl
bGF0ZWRUYXJnZXQsIHVuZGVmaW5lZCwgJ3Nsb3RjaGFuZ2UgbXVzdCBub3Qgc2V0IHJlbGF0ZWRU
YXJnZXQnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgZXZlbnRDb3VudCsrOworICAg
ICAgICB9KTsKKworICAgICAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHNsb3QpOworCisgICAg
ICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAgICAgICBz
cGFuLnNsb3QgPSAnc29tZVNsb3QnOworICAgICAgICBob3N0LmFwcGVuZENoaWxkKHNwYW4pOwor
CisgICAgICAgIHZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYicpOworICAgICAgICBi
LnNsb3QgPSAnc29tZVNsb3QnOworICAgICAgICBob3N0LmFwcGVuZENoaWxkKGIpOworCisgICAg
ICAgIGFzc2VydF9lcXVhbHMoZXZlbnRDb3VudCwgMCwgJ3Nsb3RjaGFuZ2UgZXZlbnQgbXVzdCBu
b3QgYmUgZmlyZWQgc3luY2hyb25vdXNseScpOworICAgIH0pOworCisgICAgc2V0VGltZW91dChm
dW5jdGlvbiAoKSB7CisgICAgICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKGV2ZW50Q291bnQsIDEsICdzbG90Y2hhbmdlIG11c3QgYmUgZmlyZWQg
ZXhhY3RseSBvbmNlIGFmdGVyIHRoZSBhc3NpZ25lZCBub2RlcyBjaGFuZ2VkJyk7CisKKyAgICAg
ICAgICAgIHZhciBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpOworICAgICAgICAgICAg
aS5zbG90ID0gJ3NvbWVTbG90JzsKKyAgICAgICAgICAgIGhvc3QuYXBwZW5kQ2hpbGQoaSk7Cisg
ICAgICAgIH0pOworCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGV2ZW50Q291bnQsIDIsICdzbG90Y2hhbmdlIG11c3QgYmUgZmlyZWQgZXhhY3RseSBvbmNlIGFm
dGVyIHRoZSBhc3NpZ25lZCBub2RlcyBjaGFuZ2VkJyk7CisKKyAgICAgICAgICAgICAgICB2YXIg
ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdlbScpOworICAgICAgICAgICAgICAgIGVtLnNs
b3QgPSAnc29tZVNsb3QnOworICAgICAgICAgICAgICAgIGhvc3QuYXBwZW5kQ2hpbGQoZW0pOwor
CisgICAgICAgICAgICAgICAgdmFyIGZha2VFdmVudCA9IG5ldyBFdmVudCgnc2xvdGNoYW5nZScp
OworICAgICAgICAgICAgICAgIGZha2VFdmVudC5pc0Zha2VFdmVudCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgc2xvdC5kaXNwYXRjaEV2ZW50KGZha2VFdmVudCk7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
dGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhldmVudENvdW50LCAzLCAnc2xvdGNoYW5nZSBtdXN0IGJlIGZpcmVkIGV4YWN0bHkgb25jZSBh
ZnRlciB0aGUgYXNzaWduZWQgbm9kZXMgY2hhbmdlZCcKKyAgICAgICAgICAgICAgICAgICAgICAg
ICsgJyBldmVudCBpZiB0aGVyZSB3YXMgYSBzeW50aGV0aWMgc2xvdGNoYW5nZSBldmVudCBmaXJl
ZCcpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHRlc3QuZG9uZSgpOwor
ICAgICAgICAgICAgfSwgMSk7CisKKyAgICAgICAgfSwgMSk7CisgICAgfSwgMSk7Cit9CisKK3Rl
c3RBcHBlbmRpbmdTcGFuVG9TaGFkb3dSb290V2l0aE5hbWVkU2xvdCgnb3BlbicsIHRydWUpOwor
dGVzdEFwcGVuZGluZ1NwYW5Ub1NoYWRvd1Jvb3RXaXRoTmFtZWRTbG90KCdjbG9zZWQnLCB0cnVl
KTsKK3Rlc3RBcHBlbmRpbmdTcGFuVG9TaGFkb3dSb290V2l0aE5hbWVkU2xvdCgnb3BlbicsIGZh
bHNlKTsKK3Rlc3RBcHBlbmRpbmdTcGFuVG9TaGFkb3dSb290V2l0aE5hbWVkU2xvdCgnY2xvc2Vk
JywgZmFsc2UpOworCitmdW5jdGlvbiB0ZXN0U2xvdGNoYW5nZURvZXNOb3RGaXJlV2hlbk90aGVy
U2xvdHNDaGFuZ2UobW9kZSwgY29ubmVjdGVkVG9Eb2N1bWVudCkKK3sKKyAgICB2YXIgdGVzdCA9
IGFzeW5jX3Rlc3QoJ3Nsb3RjaGFuZ2UgZXZlbnQgbXVzdCBub3QgZmlyZSBvbiBhIHNsb3QgZWxl
bWVudCBpbnNpZGUgJworICAgICAgICArIHRyZWVOYW1lKG1vZGUsIGNvbm5lY3RlZFRvRG9jdW1l
bnQpCisgICAgICAgICsgJyB3aGVuIGFub3RoZXIgc2xvdFwncyBhc3NpZ25lZCBub2RlcyBjaGFu
Z2UnKTsKKworICAgIHZhciBob3N0OworICAgIHZhciBkZWZhdWx0U2xvdEV2ZW50Q291bnQgPSAw
OworICAgIHZhciBuYW1lZFNsb3RFdmVudENvdW50ID0gMDsKKworICAgIHRlc3Quc3RlcChmdW5j
dGlvbiAoKSB7CisgICAgICAgIGhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICAgICAgaWYgKGNvbm5lY3RlZFRvRG9jdW1lbnQpCisgICAgICAgICAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGhvc3QpOworCisgICAgICAgIHZhciBzaGFkb3dSb290ID0gaG9zdC5h
dHRhY2hTaGFkb3coeydtb2RlJzogbW9kZX0pOworICAgICAgICB2YXIgZGVmYXVsdFNsb3QgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdzbG90Jyk7CisgICAgICAgIGRlZmF1bHRTbG90LmFkZEV2
ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgICAg
IHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhl
dmVudC50YXJnZXQsIGRlZmF1bHRTbG90LCAnc2xvdGNoYW5nZSBldmVudFwncyB0YXJnZXQgbXVz
dCBiZSB0aGUgc2xvdCBlbGVtZW50Jyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGRl
ZmF1bHRTbG90RXZlbnRDb3VudCsrOworICAgICAgICB9KTsKKworICAgICAgICB2YXIgbmFtZWRT
bG90ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2xvdCcpOworICAgICAgICBuYW1lZFNsb3Qu
bmFtZSA9ICdzbG90TmFtZSc7CisgICAgICAgIG5hbWVkU2xvdC5hZGRFdmVudExpc3RlbmVyKCdz
bG90Y2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgICAgICB0ZXN0LnN0ZXAoZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQudGFyZ2V0LCBu
YW1lZFNsb3QsICdzbG90Y2hhbmdlIGV2ZW50XCdzIHRhcmdldCBtdXN0IGJlIHRoZSBzbG90IGVs
ZW1lbnQnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgbmFtZWRTbG90RXZlbnRDb3Vu
dCsrOworICAgICAgICB9KTsKKworICAgICAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKGRlZmF1
bHRTbG90KTsKKyAgICAgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChuYW1lZFNsb3QpOworCisg
ICAgICAgIGhvc3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsK
KworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlZmF1bHRTbG90RXZlbnRDb3VudCwgMCwgJ3Nsb3Rj
aGFuZ2UgZXZlbnQgbXVzdCBub3QgYmUgZmlyZWQgc3luY2hyb25vdXNseScpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKG5hbWVkU2xvdEV2ZW50Q291bnQsIDAsICdzbG90Y2hhbmdlIGV2ZW50IG11
c3Qgbm90IGJlIGZpcmVkIHN5bmNocm9ub3VzbHknKTsKKyAgICB9KTsKKworICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24gKCkgeworICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhkZWZhdWx0U2xvdEV2ZW50Q291bnQsIDEsCisgICAgICAgICAg
ICAgICAgJ3Nsb3RjaGFuZ2UgbXVzdCBiZSBmaXJlZCBleGFjdGx5IG9uY2UgYWZ0ZXIgdGhlIGFz
c2lnbmVkIG5vZGVzIGNoYW5nZSBvbiBhIGRlZmF1bHQgc2xvdCcpOworICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhuYW1lZFNsb3RFdmVudENvdW50LCAwLAorICAgICAgICAgICAgICAgICdzbG90
Y2hhbmdlIG11c3Qgbm90IGJlIGZpcmVkIG9uIGEgbmFtZWQgc2xvdCBhZnRlciB0aGUgYXNzaWdu
ZWQgbm9kZXMgY2hhbmdlIG9uIGEgZGVmYXVsdCBzbG90Jyk7CisKKyAgICAgICAgICAgIHZhciBz
cGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAgICAgICAgICAgc3Bhbi5z
bG90ID0gJ3Nsb3ROYW1lJzsKKyAgICAgICAgICAgIGhvc3QuYXBwZW5kQ2hpbGQoc3Bhbik7Cisg
ICAgICAgIH0pOworCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGRlZmF1bHRTbG90RXZlbnRDb3VudCwgMSwKKyAgICAgICAgICAgICAgICAgICAgJ3Nsb3RjaGFu
Z2UgbXVzdCBub3QgYmUgZmlyZWQgb24gYSBkZWZhdWx0IHNsb3QgYWZ0ZXIgdGhlIGFzc2lnbmVk
IG5vZGVzIGNoYW5nZSBvbiBhIG5hbWVkIHNsb3QnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKG5hbWVkU2xvdEV2ZW50Q291bnQsIDEsCisgICAgICAgICAgICAgICAgICAgICdzbG90
Y2hhbmdlIG11c3QgYmUgZmlyZWQgZXhhY3RseSBvbmNlIGFmdGVyIHRoZSBhc3NpZ25lZCBub2Rl
cyBjaGFuZ2Ugb24gYSBkZWZhdWx0IHNsb3QnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgdGVzdC5kb25lKCk7CisgICAgICAgIH0sIDEpOworICAgIH0sIDEpOworfQorCit0ZXN0U2xv
dGNoYW5nZURvZXNOb3RGaXJlV2hlbk90aGVyU2xvdHNDaGFuZ2UoJ29wZW4nLCB0cnVlKTsKK3Rl
c3RTbG90Y2hhbmdlRG9lc05vdEZpcmVXaGVuT3RoZXJTbG90c0NoYW5nZSgnY2xvc2VkJywgdHJ1
ZSk7Cit0ZXN0U2xvdGNoYW5nZURvZXNOb3RGaXJlV2hlbk90aGVyU2xvdHNDaGFuZ2UoJ29wZW4n
LCBmYWxzZSk7Cit0ZXN0U2xvdGNoYW5nZURvZXNOb3RGaXJlV2hlbk90aGVyU2xvdHNDaGFuZ2Uo
J2Nsb3NlZCcsIGZhbHNlKTsKKworZnVuY3Rpb24gdGVzdFNsb3RjaGFuZ2VEb2VzTm90RmlyZUZv
ck11dGF0aW9uQmVmb3JlT3JBZnRlclNsb3RXYXNQcmVzZW50KG1vZGUsIGNvbm5lY3RlZFRvRG9j
dW1lbnQpCit7CisgICAgdmFyIHRlc3QgPSBhc3luY190ZXN0KCdzbG90Y2hhbmdlIGV2ZW50IG11
c3Qgbm90IGZpcmUgb24gYSBzbG90IGVsZW1lbnQgaW5zaWRlICcKKyAgICAgICAgKyB0cmVlTmFt
ZShtb2RlLCBjb25uZWN0ZWRUb0RvY3VtZW50KQorICAgICAgICArICcgd2hlbiB0aGUgc2hhZG93
IGhvc3Qgd2FzIG11dGF0ZWQgYmVmb3JlIHRoZSBzbG90IHdhcyBpbnNlcnRlZCBvciBhZnRlciB0
aGUgc2xvdCB3YXMgcmVtb3ZlZCcpOworCisgICAgdmFyIGhvc3Q7CisgICAgdmFyIHNsb3Q7Cisg
ICAgdmFyIGV2ZW50Q291bnQgPSAwOworCisgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBpZiAo
Y29ubmVjdGVkVG9Eb2N1bWVudCkKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoaG9zdCk7CisKKyAgICAgICAgdmFyIHNoYWRvd1Jvb3QgPSBob3N0LmF0dGFjaFNoYWRvdyh7
J21vZGUnOiBtb2RlfSk7CisgICAgICAgIHNsb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdz
bG90Jyk7CisgICAgICAgIHNsb3QuYWRkRXZlbnRMaXN0ZW5lcignc2xvdGNoYW5nZScsIGZ1bmN0
aW9uIChldmVudCkgeworICAgICAgICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnRhcmdldCwgc2xvdCwgJ3Nsb3RjaGFuZ2Ug
ZXZlbnRcJ3MgdGFyZ2V0IG11c3QgYmUgdGhlIHNsb3QgZWxlbWVudCcpOworICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICBldmVudENvdW50Kys7CisgICAgICAgIH0pOworCisgICAgICAgIGhv
c3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICAgICAg
c2hhZG93Um9vdC5hcHBlbmRDaGlsZChzbG90KTsKKworICAgICAgICBhc3NlcnRfZXF1YWxzKGV2
ZW50Q291bnQsIDAsICdzbG90Y2hhbmdlIGV2ZW50IG11c3Qgbm90IGJlIGZpcmVkIHN5bmNocm9u
b3VzbHknKTsKKyAgICB9KTsKKworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAg
ICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVu
dENvdW50LCAwLAorICAgICAgICAgICAgICAgICdzbG90Y2hhbmdlIG11c3Qgbm90IGJlIGZpcmVk
IG9uIGEgc2xvdCBlbGVtZW50IGlmIHRoZSBhc3NpZ25lZCBub2RlcyBjaGFuZ2VkIGJlZm9yZSB0
aGUgc2xvdCB3YXMgaW5zZXJ0ZWQnKTsKKyAgICAgICAgICAgIGhvc3QucmVtb3ZlQ2hpbGQoaG9z
dC5maXJzdENoaWxkKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoZXZlbnRDb3VudCwgMSwKKyAgICAgICAgICAgICAgICAgICAgJ3Ns
b3RjaGFuZ2UgbXVzdCBiZSBmaXJlZCBleGFjdGx5IG9uY2UgYWZ0ZXIgdGhlIGFzc2lnbmVkIG5v
ZGVzIGNoYW5nZSBvbiBhIHNsb3Qgd2hpbGUgdGhlIHNsb3QgZWxlbWVudCB3YXMgaW4gdGhlIHRy
ZWUnKTsKKyAgICAgICAgICAgICAgICBzbG90LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc2xvdCk7
CisgICAgICAgICAgICAgICAgaG9zdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdzcGFuJykpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnRDb3VudCwgMSwK
KyAgICAgICAgICAgICAgICAgICAgJ3Nsb3RjaGFuZ2UgbXVzdCBub3QgYmUgZmlyZWQgb24gYSBz
bG90IGVsZW1lbnQgaWYgdGhlIGFzc2lnbmVkIG5vZGVzIGNoYW5nZWQgYWZ0ZXIgdGhlIHNsb3Qg
d2FzIHJlbW92ZWQnKTsKKyAgICAgICAgICAgICAgICB0ZXN0LmRvbmUoKTsKKyAgICAgICAgICAg
IH0sIDEpOworICAgICAgICB9LCAxKTsKKyAgICB9LCAxKTsKK30KKwordGVzdFNsb3RjaGFuZ2VE
b2VzTm90RmlyZUZvck11dGF0aW9uQmVmb3JlT3JBZnRlclNsb3RXYXNQcmVzZW50KCdvcGVuJywg
dHJ1ZSk7Cit0ZXN0U2xvdGNoYW5nZURvZXNOb3RGaXJlRm9yTXV0YXRpb25CZWZvcmVPckFmdGVy
U2xvdFdhc1ByZXNlbnQoJ2Nsb3NlZCcsIHRydWUpOwordGVzdFNsb3RjaGFuZ2VEb2VzTm90Rmly
ZUZvck11dGF0aW9uQmVmb3JlT3JBZnRlclNsb3RXYXNQcmVzZW50KCdvcGVuJywgZmFsc2UpOwor
dGVzdFNsb3RjaGFuZ2VEb2VzTm90RmlyZUZvck11dGF0aW9uQmVmb3JlT3JBZnRlclNsb3RXYXNQ
cmVzZW50KCdjbG9zZWQnLCBmYWxzZSk7CisKK2Z1bmN0aW9uIHRlc3RTbG90Y2hhbmdlRmlyZXNP
blRyYW5zaWVudGx5UHJlc2VudFNsb3QobW9kZSwgY29ubmVjdGVkVG9Eb2N1bWVudCkKK3sKKyAg
ICB2YXIgdGVzdCA9IGFzeW5jX3Rlc3QoJ3Nsb3RjaGFuZ2UgZXZlbnQgbXVzdCBmaXJlIG9uIGEg
c2xvdCBlbGVtZW50IGluc2lkZSAnCisgICAgICAgICsgdHJlZU5hbWUobW9kZSwgY29ubmVjdGVk
VG9Eb2N1bWVudCkKKyAgICAgICAgKyAnIGV2ZW4gaWYgdGhlIHNsb3Qgd2FzIHJlbW92ZWQgaW1t
ZWRpYXRlbHkgYWZ0ZXIgdGhlIGFzc2lnbmVkIG5vZGVzIHdlcmUgbXV0YXRlZCcpOworCisgICAg
dmFyIGhvc3Q7CisgICAgdmFyIHNsb3Q7CisgICAgdmFyIGFub3RoZXJTbG90OworICAgIHZhciBz
bG90RXZlbnRDb3VudCA9IDA7CisgICAgdmFyIGFub3RoZXJTbG90RXZlbnRDb3VudCA9IDA7CisK
KyAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkgeworICAgICAgICBob3N0ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGlmIChjb25uZWN0ZWRUb0RvY3VtZW50KQorICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChob3N0KTsKKworICAgICAgICB2YXIg
c2hhZG93Um9vdCA9IGhvc3QuYXR0YWNoU2hhZG93KHsnbW9kZSc6IG1vZGV9KTsKKyAgICAgICAg
c2xvdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Nsb3QnKTsKKyAgICAgICAgc2xvdC5uYW1l
ID0gJ3NvbWVTbG90JzsKKyAgICAgICAgc2xvdC5hZGRFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdl
JywgZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQudGFyZ2V0LCBzbG90LCAnc2xv
dGNoYW5nZSBldmVudFwncyB0YXJnZXQgbXVzdCBiZSB0aGUgc2xvdCBlbGVtZW50Jyk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIHNsb3RFdmVudENvdW50Kys7CisgICAgICAgIH0pOwor
CisgICAgICAgIGFub3RoZXJTbG90ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2xvdCcpOwor
ICAgICAgICBhbm90aGVyU2xvdC5uYW1lID0gJ3NvbWVTbG90JzsKKyAgICAgICAgYW5vdGhlclNs
b3QuYWRkRXZlbnRMaXN0ZW5lcignc2xvdGNoYW5nZScsIGZ1bmN0aW9uIChldmVudCkgeworICAg
ICAgICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKGV2ZW50LnRhcmdldCwgYW5vdGhlclNsb3QsICdzbG90Y2hhbmdlIGV2ZW50XCdzIHRh
cmdldCBtdXN0IGJlIHRoZSBzbG90IGVsZW1lbnQnKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgYW5vdGhlclNsb3RFdmVudENvdW50Kys7CisgICAgICAgIH0pOworCisgICAgICAgIHNo
YWRvd1Jvb3QuYXBwZW5kQ2hpbGQoc2xvdCk7CisKKyAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CisgICAgICAgIHNwYW4uc2xvdCA9ICdzb21lU2xvdCc7
CisgICAgICAgIGhvc3QuYXBwZW5kQ2hpbGQoc3Bhbik7CisKKyAgICAgICAgc2hhZG93Um9vdC5y
ZW1vdmVDaGlsZChzbG90KTsKKyAgICAgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChhbm90aGVy
U2xvdCk7CisKKyAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFu
Jyk7CisgICAgICAgIHNwYW4uc2xvdCA9ICdzb21lU2xvdCc7CisgICAgICAgIGhvc3QuYXBwZW5k
Q2hpbGQoc3Bhbik7CisKKyAgICAgICAgc2hhZG93Um9vdC5yZW1vdmVDaGlsZChhbm90aGVyU2xv
dCk7CisKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhzbG90RXZlbnRDb3VudCwgMCwgJ3Nsb3RjaGFu
Z2UgZXZlbnQgbXVzdCBub3QgYmUgZmlyZWQgc3luY2hyb25vdXNseScpOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKGFub3RoZXJTbG90RXZlbnRDb3VudCwgMCwgJ3Nsb3RjaGFuZ2UgZXZlbnQgbXVz
dCBub3QgYmUgZmlyZWQgc3luY2hyb25vdXNseScpOworICAgIH0pOworCisgICAgc2V0VGltZW91
dChmdW5jdGlvbiAoKSB7CisgICAgICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHNsb3RFdmVudENvdW50LCAxLAorICAgICAgICAgICAgICAgICdz
bG90Y2hhbmdlIG11c3QgYmUgZmlyZWQgb24gYSBzbG90IGVsZW1lbnQgaWYgdGhlIGFzc2lnbmVk
IG5vZGVzIGNoYW5nZWQgd2hpbGUgdGhlIHNsb3Qgd2FzIHByZXNlbnQnKTsKKyAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoYW5vdGhlclNsb3RFdmVudENvdW50LCAxLAorICAgICAgICAgICAgICAg
ICdzbG90Y2hhbmdlIG11c3QgYmUgZmlyZWQgb24gYSBzbG90IGVsZW1lbnQgaWYgdGhlIGFzc2ln
bmVkIG5vZGVzIGNoYW5nZWQgd2hpbGUgdGhlIHNsb3Qgd2FzIHByZXNlbnQnKTsKKyAgICAgICAg
fSk7CisgICAgICAgIHRlc3QuZG9uZSgpOworICAgIH0sIDEpOworfQorCit0ZXN0U2xvdGNoYW5n
ZUZpcmVzT25UcmFuc2llbnRseVByZXNlbnRTbG90KCdvcGVuJywgdHJ1ZSk7Cit0ZXN0U2xvdGNo
YW5nZUZpcmVzT25UcmFuc2llbnRseVByZXNlbnRTbG90KCdjbG9zZWQnLCB0cnVlKTsKK3Rlc3RT
bG90Y2hhbmdlRmlyZXNPblRyYW5zaWVudGx5UHJlc2VudFNsb3QoJ29wZW4nLCBmYWxzZSk7Cit0
ZXN0U2xvdGNoYW5nZUZpcmVzT25UcmFuc2llbnRseVByZXNlbnRTbG90KCdjbG9zZWQnLCBmYWxz
ZSk7CisKK2Z1bmN0aW9uIHRlc3RTbG90Y2hhbmdlRmlyZXNPbklubmVySFRNTChtb2RlLCBjb25u
ZWN0ZWRUb0RvY3VtZW50KQoreworICAgIHZhciB0ZXN0ID0gYXN5bmNfdGVzdCgnc2xvdGNoYW5n
ZSBldmVudCBtdXN0IGZpcmUgb24gYSBzbG90IGVsZW1lbnQgaW5zaWRlICcKKyAgICAgICAgKyB0
cmVlTmFtZShtb2RlLCBjb25uZWN0ZWRUb0RvY3VtZW50KQorICAgICAgICArICcgd2hlbiBpbm5l
ckhUTUwgbW9kaWZpZXMgdGhlIGNoaWxkcmVuIG9mIHRoZSBzaGFkb3cgaG9zdCcpOworCisgICAg
dmFyIGhvc3Q7CisgICAgdmFyIGRlZmF1bHRTbG90OworICAgIHZhciBuYW1lZFNsb3Q7CisgICAg
dmFyIGRlZmF1bHRTbG90RXZlbnRDb3VudCA9IDA7CisgICAgdmFyIG5hbWVkU2xvdEV2ZW50Q291
bnQgPSAwOworCisgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaG9zdCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBpZiAoY29ubmVjdGVkVG9Eb2N1
bWVudCkKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaG9zdCk7CisKKyAg
ICAgICAgdmFyIHNoYWRvd1Jvb3QgPSBob3N0LmF0dGFjaFNoYWRvdyh7J21vZGUnOiBtb2RlfSk7
CisgICAgICAgIGRlZmF1bHRTbG90ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2xvdCcpOwor
ICAgICAgICBkZWZhdWx0U2xvdC5hZGRFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgZnVuY3Rp
b24gKGV2ZW50KSB7CisgICAgICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQudGFyZ2V0LCBkZWZhdWx0U2xvdCwgJ3Nsb3Rj
aGFuZ2UgZXZlbnRcJ3MgdGFyZ2V0IG11c3QgYmUgdGhlIHNsb3QgZWxlbWVudCcpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBkZWZhdWx0U2xvdEV2ZW50Q291bnQrKzsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgbmFtZWRTbG90ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2xvdCcp
OworICAgICAgICBuYW1lZFNsb3QubmFtZSA9ICdzb21lU2xvdCc7CisgICAgICAgIG5hbWVkU2xv
dC5hZGRFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50KSB7CisgICAg
ICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoZXZlbnQudGFyZ2V0LCBuYW1lZFNsb3QsICdzbG90Y2hhbmdlIGV2ZW50XCdzIHRhcmdl
dCBtdXN0IGJlIHRoZSBzbG90IGVsZW1lbnQnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgbmFtZWRTbG90RXZlbnRDb3VudCsrOworICAgICAgICB9KTsKKyAgICAgICAgc2hhZG93Um9v
dC5hcHBlbmRDaGlsZChuYW1lZFNsb3QpOworICAgICAgICBzaGFkb3dSb290LmFwcGVuZENoaWxk
KGRlZmF1bHRTbG90KTsKKyAgICAgICAgaG9zdC5pbm5lckhUTUwgPSAnZm9vIDxiPmJhcjwvYj4n
OworCisgICAgICAgIGFzc2VydF9lcXVhbHMoZGVmYXVsdFNsb3RFdmVudENvdW50LCAwLCAnc2xv
dGNoYW5nZSBldmVudCBtdXN0IG5vdCBiZSBmaXJlZCBzeW5jaHJvbm91c2x5Jyk7CisgICAgICAg
IGFzc2VydF9lcXVhbHMobmFtZWRTbG90RXZlbnRDb3VudCwgMCwgJ3Nsb3RjaGFuZ2UgZXZlbnQg
bXVzdCBub3QgYmUgZmlyZWQgc3luY2hyb25vdXNseScpOworICAgIH0pOworCisgICAgc2V0VGlt
ZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKGRlZmF1bHRTbG90RXZlbnRDb3VudCwgMSwKKyAgICAgICAg
ICAgICAgICAnc2xvdGNoYW5nZSBtdXN0IGJlIGZpcmVkIG9uIGEgc2xvdCBlbGVtZW50IGlmIHRo
ZSBhc3NpZ25lZCBub2RlcyBhcmUgY2hhbmdlZCBieSBpbm5lckhUTUwnKTsKKyAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMobmFtZWRTbG90RXZlbnRDb3VudCwgMCwKKyAgICAgICAgICAgICAgICAn
c2xvdGNoYW5nZSBtdXN0IG5vdCBiZSBmaXJlZCBvbiBhIHNsb3QgZWxlbWVudCBpZiB0aGUgYXNz
aWduZWQgbm9kZXMgYXJlIG5vdCBjaGFuZ2VkIGJ5IGlubmVySFRNTCcpOworICAgICAgICAgICAg
aG9zdC5pbm5lckhUTUwgPSAnYmF6JzsKKyAgICAgICAgfSk7CisgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlZmF1bHRTbG90RXZlbnRDb3VudCwgMiwKKyAgICAg
ICAgICAgICAgICAgICAgJ3Nsb3RjaGFuZ2UgbXVzdCBiZSBmaXJlZCBvbiBhIHNsb3QgZWxlbWVu
dCBpZiB0aGUgYXNzaWduZWQgbm9kZXMgYXJlIGNoYW5nZWQgYnkgaW5uZXJIVE1MJyk7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhuYW1lZFNsb3RFdmVudENvdW50LCAwLAorICAgICAg
ICAgICAgICAgICAgICAnc2xvdGNoYW5nZSBtdXN0IG5vdCBiZSBmaXJlZCBvbiBhIHNsb3QgZWxl
bWVudCBpZiB0aGUgYXNzaWduZWQgbm9kZXMgYXJlIG5vdCBjaGFuZ2VkIGJ5IGlubmVySFRNTCcp
OworICAgICAgICAgICAgICAgIGhvc3QuaW5uZXJIVE1MID0gJyc7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRl
c3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
ZGVmYXVsdFNsb3RFdmVudENvdW50LCAzLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3Nsb3Rj
aGFuZ2UgbXVzdCBiZSBmaXJlZCBvbiBhIHNsb3QgZWxlbWVudCBpZiB0aGUgYXNzaWduZWQgbm9k
ZXMgYXJlIGNoYW5nZWQgYnkgaW5uZXJIVE1MJyk7CisgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMobmFtZWRTbG90RXZlbnRDb3VudCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICdzbG90Y2hhbmdlIG11c3Qgbm90IGJlIGZpcmVkIG9uIGEgc2xvdCBlbGVtZW50IGlmIHRoZSBh
c3NpZ25lZCBub2RlcyBhcmUgbm90IGNoYW5nZWQgYnkgaW5uZXJIVE1MJyk7CisgICAgICAgICAg
ICAgICAgICAgIGhvc3QuaW5uZXJIVE1MID0gJzxiIHNsb3Q9InNvbWVTbG90Ij5jb250ZW50PC9i
Pic7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlZmF1bHRTbG90RXZlbnRDb3Vu
dCwgMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2xvdGNoYW5nZSBtdXN0IG5vdCBi
ZSBmaXJlZCBvbiBhIHNsb3QgZWxlbWVudCBpZiB0aGUgYXNzaWduZWQgbm9kZXMgYXJlIG5vdCBj
aGFuZ2VkIGJ5IGlubmVySFRNTCcpOworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhuYW1lZFNsb3RFdmVudENvdW50LCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdzbG90Y2hhbmdlIG11c3Qgbm90IGJlIGZpcmVkIG9uIGEgc2xvdCBlbGVtZW50IGlmIHRoZSBh
c3NpZ25lZCBub2RlcyBhcmUgY2hhbmdlZCBieSBpbm5lckhUTUwnKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGhvc3QuaW5uZXJIVE1MID0gJyc7CisgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgdGVzdCB3b3VsZCBmYWlsIGluIHRoZSBjdXJyZW50IGlt
cGxlbWVudGF0aW9uIGJlY2F1c2Ugd2UgY2FuJ3QgdGVsbAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHdoZXRoZXIgYSB0ZXh0IG5vZGUgd2FzIHJlbW92ZWQgaW4gQWxsQ2hpbGRyZW5S
ZW1vdmVkIG9yIG5vdC4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMoZGVmYXVsdFNsb3RFdmVudENvdW50LCAzLAorLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdzbG90Y2hhbmdlIG11c3Qgbm90IGJlIGZpcmVkIG9uIGEgc2xvdCBlbGVtZW50IGlm
IHRoZSBhc3NpZ25lZCBub2RlcyBhcmUgbm90IGNoYW5nZWQgYnkgaW5uZXJIVE1MJyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhuYW1lZFNsb3RFdmVudENvdW50
LCAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2xvdGNoYW5nZSBtdXN0IG5v
dCBiZSBmaXJlZCBvbiBhIHNsb3QgZWxlbWVudCBpZiB0aGUgYXNzaWduZWQgbm9kZXMgYXJlIGNo
YW5nZWQgYnkgaW5uZXJIVE1MJyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3QuZG9uZSgpOworICAgICAgICAgICAgICAgICAgICB9LCAx
KTsKKyAgICAgICAgICAgICAgICB9LCAxKTsKKyAgICAgICAgICAgIH0sIDEpOworICAgICAgICB9
LCAxKTsKKyAgICB9LCAxKTsKK30KKwordGVzdFNsb3RjaGFuZ2VGaXJlc09uSW5uZXJIVE1MKCdv
cGVuJywgdHJ1ZSk7Cit0ZXN0U2xvdGNoYW5nZUZpcmVzT25Jbm5lckhUTUwoJ2Nsb3NlZCcsIHRy
dWUpOwordGVzdFNsb3RjaGFuZ2VGaXJlc09uSW5uZXJIVE1MKCdvcGVuJywgZmFsc2UpOwordGVz
dFNsb3RjaGFuZ2VGaXJlc09uSW5uZXJIVE1MKCdjbG9zZWQnLCBmYWxzZSk7CisKK2Z1bmN0aW9u
IHRlc3RTbG90Y2hhbmdlRmlyZXNXaGVuTmVzdGVkU2xvdENoYW5nZShtb2RlLCBjb25uZWN0ZWRU
b0RvY3VtZW50KQoreworICAgIHZhciB0ZXN0ID0gYXN5bmNfdGVzdCgnc2xvdGNoYW5nZSBldmVu
dCBtdXN0IGZpcmUgb24gYSBzbG90IGVsZW1lbnQgaW5zaWRlICcKKyAgICAgICAgKyB0cmVlTmFt
ZShtb2RlLCBjb25uZWN0ZWRUb0RvY3VtZW50KQorICAgICAgICArICcgd2hlbiBuZXN0ZWQgc2xv
dHNcJ3MgY29udGVudHMgY2hhbmdlJyk7CisKKyAgICB2YXIgb3V0ZXJIb3N0OworICAgIHZhciBp
bm5lckhvc3Q7CisgICAgdmFyIG91dGVyU2xvdDsKKyAgICB2YXIgaW5uZXJTbG90OworICAgIHZh
ciBvdXRlclNsb3RFdmVudENvdW50ID0gMDsKKyAgICB2YXIgaW5uZXJTbG90RXZlbnRDb3VudCA9
IDA7CisKKyAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkgeworICAgICAgICBvdXRlckhvc3QgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgaWYgKGNvbm5lY3RlZFRvRG9j
dW1lbnQpCisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG91dGVySG9zdCk7
CisKKyAgICAgICAgdmFyIG91dGVyU2hhZG93ID0gb3V0ZXJIb3N0LmF0dGFjaFNoYWRvdyh7J21v
ZGUnOiBtb2RlfSk7CisgICAgICAgIG91dGVyU2hhZG93LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CisgICAgICAgIG91dGVyU2xvdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3Nsb3QnKTsKKyAgICAgICAgb3V0ZXJTbG90LmFkZEV2ZW50TGlzdGVuZXIoJ3Ns
b3RjaGFuZ2UnLCBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9w
YWdhdGlvbigpOworICAgICAgICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnRhcmdldCwgb3V0ZXJTbG90LCAnc2xvdGNoYW5n
ZSBldmVudFwncyB0YXJnZXQgbXVzdCBiZSB0aGUgc2xvdCBlbGVtZW50Jyk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIG91dGVyU2xvdEV2ZW50Q291bnQrKzsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgaW5uZXJIb3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAg
ICAgIGlubmVySG9zdC5hcHBlbmRDaGlsZChvdXRlclNsb3QpOworICAgICAgICBvdXRlclNoYWRv
dy5hcHBlbmRDaGlsZChpbm5lckhvc3QpOworCisgICAgICAgIHZhciBpbm5lclNoYWRvdyA9IGlu
bmVySG9zdC5hdHRhY2hTaGFkb3coeydtb2RlJzogbW9kZX0pOworICAgICAgICBpbm5lclNoYWRv
dy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykpOworICAgICAgICBp
bm5lclNsb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzbG90Jyk7CisgICAgICAgIGlubmVy
U2xvdC5hZGRFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50KSB7Cisg
ICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgICAgIHRlc3Quc3Rl
cChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC50YXJn
ZXQsIGlubmVyU2xvdCwgJ3Nsb3RjaGFuZ2UgZXZlbnRcJ3MgdGFyZ2V0IG11c3QgYmUgdGhlIHNs
b3QgZWxlbWVudCcpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBpbm5lclNsb3RFdmVu
dENvdW50Kys7CisgICAgICAgIH0pOworICAgICAgICBpbm5lclNoYWRvdy5hcHBlbmRDaGlsZChp
bm5lclNsb3QpOworCisgICAgICAgIG91dGVySG9zdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzcGFuJykpOworCisgICAgICAgIGFzc2VydF9lcXVhbHMoaW5uZXJTbG90RXZl
bnRDb3VudCwgMCwgJ3Nsb3RjaGFuZ2UgZXZlbnQgbXVzdCBub3QgYmUgZmlyZWQgc3luY2hyb25v
dXNseScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKG91dGVyU2xvdEV2ZW50Q291bnQsIDAsICdz
bG90Y2hhbmdlIGV2ZW50IG11c3Qgbm90IGJlIGZpcmVkIHN5bmNocm9ub3VzbHknKTsKKyAgICB9
KTsKKworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICB0ZXN0LnN0ZXAoZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhpbm5lclNsb3RFdmVudENvdW50
LCAxLAorICAgICAgICAgICAgICAgICdzbG90Y2hhbmdlIG11c3QgYmUgZmlyZWQgb24gYSBzbG90
IGVsZW1lbnQgaWYgdGhlIGFzc2lnbmVkIG5vZGVzIGNoYW5nZWQnKTsKKyAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMob3V0ZXJTbG90RXZlbnRDb3VudCwgMSwKKyAgICAgICAgICAgICAgICAnc2xv
dGNoYW5nZSBtdXN0IGJlIGZpcmVkIG9uIGEgc2xvdCBlbGVtZW50IGlmIHRoZSBhc3NpZ25lZCBu
b2RlcyBvZiBhbiBpbm5lciBzbG90IGNoYW5nZWQnKTsKKyAgICAgICAgfSk7CisgICAgICAgIHRl
c3QuZG9uZSgpOworICAgIH0sIDEpOworfQorCit0ZXN0U2xvdGNoYW5nZUZpcmVzV2hlbk5lc3Rl
ZFNsb3RDaGFuZ2UoJ29wZW4nLCB0cnVlKTsKK3Rlc3RTbG90Y2hhbmdlRmlyZXNXaGVuTmVzdGVk
U2xvdENoYW5nZSgnY2xvc2VkJywgdHJ1ZSk7Cit0ZXN0U2xvdGNoYW5nZUZpcmVzV2hlbk5lc3Rl
ZFNsb3RDaGFuZ2UoJ29wZW4nLCBmYWxzZSk7Cit0ZXN0U2xvdGNoYW5nZUZpcmVzV2hlbk5lc3Rl
ZFNsb3RDaGFuZ2UoJ2Nsb3NlZCcsIGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273950</attachid>
            <date>2016-03-14 03:14:14 -0700</date>
            <delta_ts>2016-03-14 05:02:09 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-155424-20160314031402.patch</filename>
            <type>text/plain</type>
            <size>55206</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODA5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk3IEBACisyMDE2LTAzLTE0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBzbG90Y2hhbmdlIGV2ZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MjQK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0OTk3NTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5
IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIEFkZGVkIGBzbG90Y2hhbmdlYCBldmVudCBhcyBk
aXNjdXNzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWJjb21wb25lbnRzL2lzc3Vlcy8y
ODguCisKKyAgICAgICAgV2hpbGUgdGhlIGV4YWN0IHNlbWFudGljcyBvZiBpdCBjb3VsZCBzdGls
bCBldm9sdmUgb3ZlciB0aW1lLCB0aGlzIHBhdGNoIGltcGxlbWVudHMgYXMKKyAgICAgICAgYW4g
YXN5bmNocm9ub3VzIGV2ZW50IHRoYXQgZmlyZXMgb24gYSBzbG90IGVsZW1lbnQgd2hlbmV2ZXIg
aXRzIGRpc3RyaWJ1dGVkIG5vZGVzIGNoYW5nZQorICAgICAgICAoZmxhdHRlbmVkIGFzc2lnbmVk
IG5vZGVzKToKKyAgICAgICAgaHR0cDovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVj
L3NoYWRvdy8jZGZuLWRpc3RyaWJ1dGVkLW5vZGVzCisKKyAgICAgICAgU2luY2UgaW5zZXJ0aW5n
IG9yIHJlbW92aW5nIGFuIGVsZW1lbnQgZnJvbSBhIHNoYWRvdyBob3N0IGNvdWxkIG5lZWRzIHRv
IGVucXVldWUgdGhpcyBldmVudAorICAgICAgICBvbiB0aGUgcmlnaHQgc2xvdCBlbGVtZW50LCB0
aGlzIHBhdGNoIG1vdmVzIHRoZSBpbnZhbGlkYXRpb24gcG9pbnQgb2YgZWxlbWVudCByZW1vdmFs
cyBhbmQKKyAgICAgICAgaW5zZXJ0aW9ucyBmcm9tIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCB0
byBFbGVtZW50OjppbnNlcnRlZEludG8gYW5kIEVsZW1lbnQ6OnJlbW92ZWRGcm9tLgorICAgICAg
ICBUZXh0IG5vZGVzIGFyZSBzdGlsbCBpbnZhbGlkYXRlZCBhdCBFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMKKyAgICAgICAgc2luY2UgaXQgY291bGQgb25s
eSBhcHBlYXIgd2l0aGluIGEgZGVmYXVsdCBzbG90IGVsZW1lbnQuCisKKyAgICAgICAgQmVjYXVz
ZSB0aGlzIG1vcmUgZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBuZWVkcyB0byBiZSBvdmVycmlk
ZGVuIGJ5IEhUTUxEZXRhaWxzRWxlbWVudCwKKyAgICAgICAgd2Ugbm93IHN1YmNsYXNzIFNsb3RB
c3NpZ25tZW50IGluIEhUTUxEZXRhaWxzRWxlbWVudCBpbnN0ZWFkIG9mIHBhc3NpbmcgaW4gYSBz
dGQ6OmZ1bmN0aW9uLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc2hhZG93LWRvbS9zbG90Y2hhbmdl
LWV2ZW50Lmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6ZW5xdWV1ZVNsb3RjaGFuZ2VFdmVudCk6IEFkZGVkLgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOiBDYWxsIGhvc3RDaGlsZEVsZW1lbnRE
aWRDaGFuZ2VTbG90QXR0ci4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omluc2VydGVkSW50
byk6IENhbGwgaG9zdENoaWxkRWxlbWVudERpZENoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnJlbW92ZWRGcm9tKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQpOiBEb24ndCBpbnZhbGlkYXRlIHRoZSBzbG90cyBvbiBFbGVtZW50SW5z
ZXJ0ZWQgYW5kCisgICAgICAgIEVsZW1lbnRSZW1vdmVkIHNpbmNlIHRoZXkncmUgbm93IGRvbmUg
aW4gRWxlbWVudDo6aW5zZXJ0ZWRJbnRvIGFuZCBFbGVtZW50OjpyZW1vdmVkRnJvbS4KKyAgICAg
ICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OnNjb3BlZCk6IHNs
b3RjaGFuZ2UgZXZlbnQgaXMgc2NvcGVkLgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6IEFk
ZGVkIGV2ZW50TmFtZXMoKS5zbG90Y2hhbmdlLgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmludmFsaWRhdGVTbG90QXNzaWdubWVu
dHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6aW52YWxpZGF0ZURl
ZmF1bHRTbG90QXNzaWdubWVudHMpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
Lmg6CisgICAgICAgIChTaGFkb3dSb290KTogQWRkZWQgbW9yZSBmaW5lLWdyYWluZWQgaW52YWxp
ZGF0b3JzLCBtaXJyb3JpbmcgY2hhbmdlcyB0byBTbG90QXNzaWdubWVudC4KKyAgICAgICAgKiBk
b20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6
OlNsb3RBc3NpZ25tZW50KTogUmVtb3ZlZCBhIHZhcmlhbnQgdGhhdCB0YWtlcyBTbG90TmFtZUZ1
bmN0aW9uCisgICAgICAgIHNpbmNlIEhUTUxEZXRhaWxzRWxlbWVudCBub3cgc3ViY2xhc3NlcyBT
bG90QXNzaWdubWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50Ojp+U2xvdEFz
c2lnbm1lbnQpOiBBZGRlZCBub3cgdGhhdCB0aGUgY2xhc3MgaXMgdmlydHVhbC4KKyAgICAgICAg
KFdlYkNvcmU6OnJlY3Vyc2l2ZWx5RmlyZVNsb3RDaGFuZ2VFdmVudCk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OmRpZENoYW5nZVNsb3QpOiBBZGRlZC4gSW52YWxp
ZGF0ZXMgdGhlIHN0eWxlIHRyZWUgb25seSBpZiB0aGVyZQorICAgICAgICBpcyBhIGNvcnJlc3Bv
bmRpbmcgc2xvdCBlbGVtZW50LCBhbmQgZmlyZXMgc2xvdGNoYW5nZSBldmVudC4gV2hlbiB0aGUg
c2xvdCBlbGVtZW50IHdlIGZvdW5kCisgICAgICAgIGluIHRoaXMgc2hhZG93IHRyZWUgaXMgYXNz
aWduZWQgdG8gYSBzbG90IGVsZW1lbnQgaW5zaWRlIGFuIGlubmVyIHNoYWRvdyB0cmVlLCByZWN1
cnNpdmVseQorICAgICAgICBmaXJlIHNsb3RjaGFuZ2UgZXZlbnQgb24gZWFjaCBzdWNoIGlubmVy
IHNsb3RzLgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6Omhvc3RDaGlsZEVsZW1l
bnREaWRDaGFuZ2UpOiBBZGRlZC4gVXBkYXRlIHRoZSBtYXRjaGluZyBzbG90IHdoZW4KKyAgICAg
ICAgYW4gZWxlbWVudCBpcyBpbnNlcnRlZCBvciByZW1vdmVkIHVuZGVyIGEgc2hhZG93IGhvc3Qu
CisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6YXNzaWduZWROb2Rlc0ZvclNsb3Qp
OiBSZW1vdmVkIHRoZSBzdXBlcmZsdW91cyBlYXJseSBleGl0IHRvIGFuCisgICAgICAgIHJlbGVh
c2UgYXNzZXJ0IHNpbmNlIGFkZFNsb3RFbGVtZW50QnlOYW1lIHNob3VsZCBhbHdheXMgY3JlYXRl
IGEgU2xvdEluZm8gZm9yIGVhY2ggZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3Np
Z25tZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZCk6IEFkZGVkLiBUaGlzIGlzIHRoZSBlcXVpdmFs
ZW50IG9mIG9sZAorICAgICAgICBtX3Nsb3ROYW1lRnVuY3Rpb24gd2hpY2ggRGV0YWlsc1Nsb3RB
c3NpZ25tZW50IG92ZXJyaWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50Ojpp
bnZhbGlkYXRlRGVmYXVsdFNsb3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFz
c2lnbm1lbnQ6OmZpbmRGaXJzdFNsb3RFbGVtZW50KTogQWRkZWQgYW4gYXNzZXJ0aW9uLiBzbG90
SW5mby5lbGVtZW50IG11c3QKKyAgICAgICAgYmUgbnVsbHB0ciBpZiBlbGVtZW50Q291bnQgaXMg
MCwgYW5kIGVsZW1lbnRDb3VudCBtdXN0IGJlIDAgaWYgc2xvdEluZm8uZWxlbWVudCBpcyBudWxs
cHRyCisgICAgICAgIGFmdGVyIGNhbGxpbmcgcmVzb2x2ZUFsbFNsb3RFbGVtZW50cywgd2hpY2gg
dHJhdmVyc2VzIHRoZSBlbnRpcmUgc2hhZG93IHRyZWUgdG8gZmluZCBhbGwKKyAgICAgICAgc2xv
dCBlbGVtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50Ojphc3NpZ25TbG90
cyk6CisgICAgICAgICogZG9tL1Nsb3RBc3NpZ25tZW50Lmg6IEltcGxlbWVudGVkIGlubGluZSBm
dW5jdGlvbnMgb2YgU2hhZG93Um9vdCBoZXJlIHRvIGF2b2lkIGluY2x1ZGluZworICAgICAgICBT
bG90QXNzaWdubWVudC5oIGluIFNoYWRvd1Jvb3QuaC4gTm90IGlubGluaW5nIHRoZW0gcmVzdWx0
cyBpbiBleHRyYSBmdW5jdGlvbiBjYWxscyBmb3IgYWxsCisgICAgICAgIGJ1aWx0aW4gZWxlbWVu
dHMgd2l0aCBzaGFkb3cgcm9vdCB3aXRob3V0IHNsb3QgZWxlbWVudHMsIHdoaWNoIGltcGFjdHMg
cGVyZm9ybWFuY2UuCisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpkaWRSZW1vdmVBbGxD
aGlsZHJlbk9mU2hhZG93SG9zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9v
dDo6ZGlkQ2hhbmdlRGVmYXVsdFNsb3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d1Jvb3Q6Omhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd1Jvb3Q6Omhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2VTbG90QXR0cmlidXRlKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290Ojppbm5lclNsb3REaWRDaGFuZ2Up
OgorICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRldGFpbHNTbG90QXNzaWdubWVudCk6IEFkZGVkLiBTdWJjbGFzc2VzIFNsb3RBc3NpZ25t
ZW50IHRvIG92ZXJyaWRlCisgICAgICAgIGhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UgYW5kIHNs
b3ROYW1lRm9ySG9zdENoaWxkLgorICAgICAgICAoV2ViQ29yZTo6RGV0YWlsc1Nsb3RBc3NpZ25t
ZW50Ojpob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlKTogQWRkZWQuIFdlIGRvbid0IGNoZWNrIGlm
IHRoaXMKKyAgICAgICAgaXMgdGhlIGZpcnN0IHN1bW1hcnkgZWxlbWVudCBzaW5jZSB3ZSBkb24n
dCBrbm93IHRoZSBhbnN3ZXIgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAorICAgICAgICBp
bnNpZGUgRWxlbWVudDo6cmVtb3ZlZEZyb20uCisgICAgICAgIChXZWJDb3JlOjpEZXRhaWxzU2xv
dEFzc2lnbm1lbnQ6OnNsb3ROYW1lRm9ySG9zdENoaWxkKTogUmVuYW1lZCBmcm9tIHNsb3ROYW1l
RnVuY3Rpb24uIEFsc28KKyAgICAgICAgcmVtb3ZlZCB0aGUgY29kZSB0byByZXR1cm4gbnVsbEF0
b20gd2hlbiBkZXRhaWxzIGVsZW1lbnQgaXMgbm90IG9wZW4gYXMgdGhhdCBtZXNzZXMgdXAgbmV3
CisgICAgICAgIGZpbmUtZ3JhaW5lZCBpbnZhbGlkYXRpb24uIEluc2VydC9yZW1vdmUgdGhlIHNs
b3QgZWxlbWVudCBpbiBwYXJzZUF0dHJpYnV0ZSBpbnN0ZWFkLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTERldGFpbHNFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KTogRG9uJ3QgaW5z
ZXJ0IHRoZSBzbG90IGVsZW1lbnQgZm9yCisgICAgICAgIHRoZSBzdW1tYXJ5IHNpbmNlIHRoZSBk
ZXRhaWxzIGVsZW1lbnQgaXMgbm90IG9wZW4gbm93LgorICAgICAgICAoV2ViQ29yZTo6SFRNTERl
dGFpbHNFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IFJlbW92ZSBhbmQgaW5zZXJ0IHRoZSBzbG90
IGVsZW1lbnQgZm9yIHRoZQorICAgICAgICBzdW1tYXJ5IGhlcmUgaW5zdGVhZCBvZiBjaGFuZ2lu
ZyB0aGUgYmVoYXZpb3Igb2Ygc2xvdE5hbWVGb3JIb3N0Q2hpbGQuCisgICAgICAgICogaHRtbC9I
VE1MRGV0YWlsc0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTbG90RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2xvdEVsZW1lbnQ6OmVucXVldWVTbG90Q2hhbmdlRXZl
bnQpOiBBZGRlZC4gRW5xdWV1ZXMgYSBuZXcgc2xvdGNoYW5nZSBldmVudAorICAgICAgICBpZiB3
ZSBoYXZlbid0IGRvbmUgc28gZm9yIHRoaXMgZWxlbWVudCB5ZXQuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU2xvdEVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQpOiBBZGRlZC4gQ2xlYXIgbV9oYXNFbnF1
ZXVlZFNsb3RDaGFuZ2VFdmVudCB3aGVuCisgICAgICAgIGRpc3BhdGNoaW5nIGEgc2xvdGNoYW5n
ZSBldmVudCBzbyB0aGF0IGEgc3Vic2VxdWVudCBjYWxsIHRvIGVucXVldWVTbG90Q2hhbmdlRXZl
bnQgd291bGQKKyAgICAgICAgZW5xdWV1ZSBhIG5ldyBldmVudC4gTm90ZSBzY3JpcHRzIGNhbGwg
RXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnRGb3JCaW5kaW5ncyBpbnN0ZWFkLgorICAgICAgICAq
IGh0bWwvSFRNTFNsb3RFbGVtZW50Lmg6CisKIDIwMTYtMDMtMTMgIEpvc2VwaCBQZWNvcmFybyAg
PHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFKEVTNl9URU1QTEFU
RV9MSVRFUkFMX1NZTlRBWCkgZ3VhcmRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJl
dmlzaW9uIDE5ODA1NikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQxNzIsNiArNDE3MiwxMSBAQCB2b2lkIERvY3VtZW50OjplbnF1ZXVlT3Zl
cmZsb3dFdmVudChSZWY8CiAgICAgbV9ldmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2
ZW50KSk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OmVucXVldWVTbG90Y2hhbmdlRXZlbnQoUmVmPEV2
ZW50PiYmIGV2ZW50KQoreworICAgIG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShl
dmVudCkpOworfQorCiBSZWZQdHI8RXZlbnQ+IERvY3VtZW50OjpjcmVhdGVFdmVudChjb25zdCBT
dHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIFBsZWFzZSBkbyAqbm90
KiBhZGQgbmV3IGV2ZW50IGNsYXNzZXMgdG8gdGhpcyBmdW5jdGlvbiB1bmxlc3MgdGhleSBhcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxOTgwNTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4OCw2ICsxMDg4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZW5xdWV1ZVdpbmRvd0V2ZW50KFJlZjxFdmVudD4mJik7CiAgICAg
dm9pZCBlbnF1ZXVlRG9jdW1lbnRFdmVudChSZWY8RXZlbnQ+JiYpOwogICAgIHZvaWQgZW5xdWV1
ZU92ZXJmbG93RXZlbnQoUmVmPEV2ZW50PiYmKTsKKyAgICB2b2lkIGVucXVldWVTbG90Y2hhbmdl
RXZlbnQoUmVmPEV2ZW50PiYmKTsKICAgICB2b2lkIGVucXVldWVQYWdlc2hvd0V2ZW50KFBhZ2Vz
aG93RXZlbnRQZXJzaXN0ZW5jZSk7CiAgICAgdm9pZCBlbnF1ZXVlSGFzaGNoYW5nZUV2ZW50KGNv
bnN0IFN0cmluZyYgb2xkVVJMLCBjb25zdCBTdHJpbmcmIG5ld1VSTCk7CiAgICAgdm9pZCBlbnF1
ZXVlUG9wc3RhdGVFdmVudChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIHN0YXRlT2Jq
ZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5ODA1NikKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMs
NyBAQAogI2luY2x1ZGUgIlNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgIlNpbXVsYXRlZENsaWNrLmgiCisjaW5jbHVkZSAiU2xvdEFzc2lnbm1lbnQuaCIK
ICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgi
CiAjaW5jbHVkZSAiU3R5bGVUcmVlUmVzb2x2ZXIuaCIKQEAgLTEyNTQsNyArMTI1NSw3IEBAIHZv
aWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWEKICAgICAgICAgZWxzZSBpZiAo
bmFtZSA9PSBIVE1MTmFtZXM6OnNsb3RBdHRyKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcGFy
ZW50ID0gcGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIHNoYWRv
d1Jvb3QgPSBwYXJlbnQtPnNoYWRvd1Jvb3QoKSkKLSAgICAgICAgICAgICAgICAgICAgc2hhZG93
Um9vdC0+aW52YWxpZGF0ZVNsb3RBc3NpZ25tZW50cygpOworICAgICAgICAgICAgICAgICAgICBz
aGFkb3dSb290LT5ob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlU2xvdEF0dHJpYnV0ZShvbGRWYWx1
ZSwgbmV3VmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5kaWYKQEAgLTE0OTYs
NiArMTQ5NywxMSBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEVsZW1lCiAg
ICAgICAgIHNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnRPbkFuY2VzdG9yc0Nyb3NzaW5nRnJh
bWVCb3VuZGFyaWVzKHRydWUpOwogI2VuZGlmCiAKKyAgICBpZiAocGFyZW50Tm9kZSgpID09ICZp
bnNlcnRpb25Qb2ludCkgeworICAgICAgICBpZiAoYXV0byogc2hhZG93Um9vdCA9IHBhcmVudE5v
ZGUoKS0+c2hhZG93Um9vdCgpKQorICAgICAgICAgICAgc2hhZG93Um9vdC0+aG9zdENoaWxkRWxl
bWVudERpZENoYW5nZSgqdGhpcyk7CisgICAgfQorCiAgICAgaWYgKCFpbnNlcnRpb25Qb2ludC5p
c0luVHJlZVNjb3BlKCkpCiAgICAgICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogCkBAIC0xNTc1
LDYgKzE1ODEsMTEgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJgog
ICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKCFwYXJlbnROb2RlKCkpIHsKKyAgICAgICAgaWYg
KGF1dG8qIHNoYWRvd1Jvb3QgPSBpbnNlcnRpb25Qb2ludC5zaGFkb3dSb290KCkpCisgICAgICAg
ICAgICBzaGFkb3dSb290LT5ob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlKCp0aGlzKTsKKyAgICB9
CisKICAgICBDb250YWluZXJOb2RlOjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiAKICAg
ICBpZiAoaGFzUGVuZGluZ1Jlc291cmNlcygpKQpAQCAtMTgzMiwxMyArMTg0MywxNSBAQCB2b2lk
IEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsCiAgICAgICAgIHN3aXRjaCAoY2hh
bmdlLnR5cGUpIHsKICAgICAgICAgY2FzZSBFbGVtZW50SW5zZXJ0ZWQ6CiAgICAgICAgIGNhc2Ug
RWxlbWVudFJlbW92ZWQ6CisgICAgICAgICAgICAvLyBGb3IgZWxlbWVudHMsIHdlIG5vdGlmeSBz
aGFkb3dSb290IGluIEVsZW1lbnQ6Omluc2VydGVkSW50byBhbmQgRWxlbWVudDo6cmVtb3ZlZEZy
b20uCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBbGxDaGlsZHJlblJlbW92ZWQ6
Ci0gICAgICAgICAgICBzaGFkb3dSb290LT5pbnZhbGlkYXRlU2xvdEFzc2lnbm1lbnRzKCk7Cisg
ICAgICAgICAgICBzaGFkb3dSb290LT5kaWRSZW1vdmVBbGxDaGlsZHJlbk9mU2hhZG93SG9zdCgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEluc2VydGVkOgogICAgICAg
ICBjYXNlIFRleHRSZW1vdmVkOgogICAgICAgICBjYXNlIFRleHRDaGFuZ2VkOgotICAgICAgICAg
ICAgc2hhZG93Um9vdC0+aW52YWxpZGF0ZURlZmF1bHRTbG90QXNzaWdubWVudHMoKTsKKyAgICAg
ICAgICAgIHNoYWRvd1Jvb3QtPmRpZENoYW5nZURlZmF1bHRTbG90KCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBOb25Db250ZW50c0NoaWxkQ2hhbmdlZDoKICAgICAgICAgICAg
IGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCShyZXZpc2lvbiAxOTgwNTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDgg
QEAgYm9vbCBFdmVudDo6c2NvcGVkKCkgY29uc3QKICAgICAgICAgfHwgbV90eXBlID09IGV2ZW50
TmFtZXMoKS5yZXNpemVFdmVudAogICAgICAgICB8fCBtX3R5cGUgPT0gZXZlbnROYW1lcygpLnNj
cm9sbEV2ZW50CiAgICAgICAgIHx8IG1fdHlwZSA9PSBldmVudE5hbWVzKCkuc2VsZWN0RXZlbnQK
LSAgICAgICAgfHwgbV90eXBlID09IGV2ZW50TmFtZXMoKS5zZWxlY3RzdGFydEV2ZW50OworICAg
ICAgICB8fCBtX3R5cGUgPT0gZXZlbnROYW1lcygpLnNlbGVjdHN0YXJ0RXZlbnQKKyAgICAgICAg
fHwgbV90eXBlID09IGV2ZW50TmFtZXMoKS5zbG90Y2hhbmdlRXZlbnQ7CiB9CiAKIEV2ZW50SW50
ZXJmYWNlIEV2ZW50OjpldmVudEludGVyZmFjZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmgJKHJldmlzaW9uIDE5ODA1NikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5h
bWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw2ICsxOTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgbWFjcm8oc2VsZWN0c3RhcnQpIFwKICAgICBtYWNybyhzaG93KSBcCiAgICAgbWFj
cm8oc2lnbmFsaW5nc3RhdGVjaGFuZ2UpIFwKKyAgICBtYWNybyhzbG90Y2hhbmdlKSBcCiAgICAg
bWFjcm8oc291bmRlbmQpIFwKICAgICBtYWNybyhzb3VuZHN0YXJ0KSBcCiAgICAgbWFjcm8oc291
cmNlY2xvc2UpIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAJKHJldmlzaW9uIDE5
ODA1NikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjAwLDE4ICsyMDAsNiBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZVNsb3RFbGVtZW50
QnlOYW1lCiAgICAgcmV0dXJuIG1fc2xvdEFzc2lnbm1lbnQtPnJlbW92ZVNsb3RFbGVtZW50QnlO
YW1lKG5hbWUsIHNsb3QsICp0aGlzKTsKIH0KIAotdm9pZCBTaGFkb3dSb290OjppbnZhbGlkYXRl
U2xvdEFzc2lnbm1lbnRzKCkKLXsKLSAgICBpZiAobV9zbG90QXNzaWdubWVudCkKLSAgICAgICAg
bV9zbG90QXNzaWdubWVudC0+aW52YWxpZGF0ZSgqdGhpcyk7Ci19Ci0KLXZvaWQgU2hhZG93Um9v
dDo6aW52YWxpZGF0ZURlZmF1bHRTbG90QXNzaWdubWVudHMoKQotewotICAgIGlmIChtX3Nsb3RB
c3NpZ25tZW50KQotICAgICAgICBtX3Nsb3RBc3NpZ25tZW50LT5pbnZhbGlkYXRlRGVmYXVsdFNs
b3QoKnRoaXMpOwotfQotCiBjb25zdCBWZWN0b3I8Tm9kZSo+KiBTaGFkb3dSb290Ojphc3NpZ25l
ZE5vZGVzRm9yU2xvdChjb25zdCBIVE1MU2xvdEVsZW1lbnQmIHNsb3QpCiB7CiAgICAgaWYgKCFt
X3Nsb3RBc3NpZ25tZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCShyZXZpc2lvbiAx
OTgwNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC05MSw4ICs5MSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRTbG90RWxlbWVudEJ5TmFt
ZShjb25zdCBBdG9taWNTdHJpbmcmLCBIVE1MU2xvdEVsZW1lbnQmKTsKICAgICB2b2lkIHJlbW92
ZVNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYsIEhUTUxTbG90RWxlbWVudCYp
OwogCi0gICAgdm9pZCBpbnZhbGlkYXRlU2xvdEFzc2lnbm1lbnRzKCk7Ci0gICAgdm9pZCBpbnZh
bGlkYXRlRGVmYXVsdFNsb3RBc3NpZ25tZW50cygpOworICAgIHZvaWQgZGlkUmVtb3ZlQWxsQ2hp
bGRyZW5PZlNoYWRvd0hvc3QoKTsKKyAgICB2b2lkIGRpZENoYW5nZURlZmF1bHRTbG90KCk7Cisg
ICAgdm9pZCBob3N0Q2hpbGRFbGVtZW50RGlkQ2hhbmdlKGNvbnN0IEVsZW1lbnQmKTsKKyAgICB2
b2lkIGhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2VTbG90QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpOworICAgIHZvaWQg
aW5uZXJTbG90RGlkQ2hhbmdlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAgICAgY29uc3QgVmVj
dG9yPE5vZGUqPiogYXNzaWduZWROb2Rlc0ZvclNsb3QoY29uc3QgSFRNTFNsb3RFbGVtZW50Jik7
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAkocmV2aXNp
b24gMTk4MDk3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTAsMTIgKzUwLDEwIEBAIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IHNsb3ROYW1lRnJvbVMKIH0KIAogU2xvdEFzc2lnbm1lbnQ6OlNsb3RBc3NpZ25tZW50KCkKLSAg
ICA6IG1fc2xvdE5hbWVGdW5jdGlvbihzbG90TmFtZUZyb21TbG90QXR0cmlidXRlKQogewogfQog
Ci1TbG90QXNzaWdubWVudDo6U2xvdEFzc2lnbm1lbnQoU2xvdE5hbWVGdW5jdGlvbiBmdW5jdGlv
bikKLSAgICA6IG1fc2xvdE5hbWVGdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKK1Nsb3RBc3Np
Z25tZW50Ojp+U2xvdEFzc2lnbm1lbnQoKQogewogfQogCkBAIC02NCwxMCArNjIsNyBAQCBIVE1M
U2xvdEVsZW1lbnQqIFNsb3RBc3NpZ25tZW50OjpmaW5kQXNzCiAgICAgaWYgKCFpczxUZXh0Pihu
b2RlKSAmJiAhaXM8RWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgYXV0byBzbG90TmFtZSA9IG1fc2xvdE5hbWVGdW5jdGlvbihub2RlKTsKLSAgICBpZiAoIXNs
b3ROYW1lKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQorICAgIGF1dG8gc2xvdE5hbWUgPSBz
bG90TmFtZUZvckhvc3RDaGlsZChub2RlKTsKICAgICBhdXRvIGl0ID0gbV9zbG90cy5maW5kKHNs
b3ROYW1lKTsKICAgICBpZiAoaXQgPT0gbV9zbG90cy5lbmQoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0xMzMsMTcgKzEyOCw1OCBAQCB2b2lkIFNsb3RBc3NpZ25tZW50OjpyZW1vdmVT
bG90RWxlbWVudEJ5CiAgICAgQVNTRVJUKHNsb3RJbmZvLmVsZW1lbnQgfHwgbV9uZWVkc1RvUmVz
b2x2ZVNsb3RFbGVtZW50cyk7CiB9CiAKLWNvbnN0IFZlY3RvcjxOb2RlKj4qIFNsb3RBc3NpZ25t
ZW50Ojphc3NpZ25lZE5vZGVzRm9yU2xvdChjb25zdCBIVE1MU2xvdEVsZW1lbnQmIHNsb3RFbGVt
ZW50LCBTaGFkb3dSb290JiBzaGFkb3dSb290KQorc3RhdGljIHZvaWQgcmVjdXJzaXZlbHlGaXJl
U2xvdENoYW5nZUV2ZW50KEhUTUxTbG90RWxlbWVudCYgc2xvdEVsZW1lbnQpCiB7Ci0gICAgaWYg
KCFtX3Nsb3RBc3NpZ25tZW50c0lzVmFsaWQpCi0gICAgICAgIGFzc2lnblNsb3RzKHNoYWRvd1Jv
b3QpOworICAgIHNsb3RFbGVtZW50LmVucXVldWVTbG90Q2hhbmdlRXZlbnQoKTsKIAotICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgc2xvdE5hbWUgPSBzbG90TmFtZUZyb21BdHRyaWJ1dGVWYWx1ZShz
bG90RWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKG5hbWVBdHRyKSk7CisgICAgYXV0byogc2xvdFBh
cmVudCA9IHNsb3RFbGVtZW50LnBhcmVudEVsZW1lbnQoKTsKKyAgICBpZiAoIXNsb3RQYXJlbnQp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHNoYWRvd1Jvb3RPZlNsb3RQYXJlbnQgPSBz
bG90UGFyZW50LT5zaGFkb3dSb290KCk7CisgICAgaWYgKCFzaGFkb3dSb290T2ZTbG90UGFyZW50
KQorICAgICAgICByZXR1cm47CisKKyAgICBzaGFkb3dSb290T2ZTbG90UGFyZW50LT5pbm5lclNs
b3REaWRDaGFuZ2Uoc2xvdEVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZShzbG90QXR0cikpOworfQor
Cit2b2lkIFNsb3RBc3NpZ25tZW50OjpkaWRDaGFuZ2VTbG90KGNvbnN0IEF0b21pY1N0cmluZyYg
c2xvdEF0dHJWYWx1ZSwgQ2hhbmdlVHlwZSBjaGFuZ2VUeXBlLCBTaGFkb3dSb290JiBzaGFkb3dS
b290KQoreworICAgIGF1dG8mIHNsb3ROYW1lID0gc2xvdE5hbWVGcm9tQXR0cmlidXRlVmFsdWUo
c2xvdEF0dHJWYWx1ZSk7CiAgICAgYXV0byBpdCA9IG1fc2xvdHMuZmluZChzbG90TmFtZSk7CiAg
ICAgaWYgKGl0ID09IG1fc2xvdHMuZW5kKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICByZXR1cm47CisKKyAgICBIVE1MU2xvdEVsZW1lbnQqIHNsb3RFbGVtZW50ID0gZmluZEZp
cnN0U2xvdEVsZW1lbnQoKml0LT52YWx1ZSwgc2hhZG93Um9vdCk7CisgICAgaWYgKCFzbG90RWxl
bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNoYW5nZVR5cGUgPT0gQ2hhbmdlVHlw
ZTo6RGlyZWN0Q2hpbGQpIHsKKyAgICAgICAgc2hhZG93Um9vdC5ob3N0KCktPnNldE5lZWRzU3R5
bGVSZWNhbGMoUmVjb25zdHJ1Y3RSZW5kZXJUcmVlKTsKKyAgICAgICAgbV9zbG90QXNzaWdubWVu
dHNJc1ZhbGlkID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHNoYWRvd1Jvb3QudHlwZSgpID09
IFNoYWRvd1Jvb3Q6OlR5cGU6OlVzZXJBZ2VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVj
dXJzaXZlbHlGaXJlU2xvdENoYW5nZUV2ZW50KCpzbG90RWxlbWVudCk7Cit9CisKK3ZvaWQgU2xv
dEFzc2lnbm1lbnQ6Omhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoY29uc3QgRWxlbWVudCYgY2hp
bGRFbGVtZW50LCBTaGFkb3dSb290JiBzaGFkb3dSb290KQoreworICAgIGRpZENoYW5nZVNsb3Qo
Y2hpbGRFbGVtZW50LmZhc3RHZXRBdHRyaWJ1dGUoc2xvdEF0dHIpLCBDaGFuZ2VUeXBlOjpEaXJl
Y3RDaGlsZCwgc2hhZG93Um9vdCk7Cit9CisKK2NvbnN0IFZlY3RvcjxOb2RlKj4qIFNsb3RBc3Np
Z25tZW50Ojphc3NpZ25lZE5vZGVzRm9yU2xvdChjb25zdCBIVE1MU2xvdEVsZW1lbnQmIHNsb3RF
bGVtZW50LCBTaGFkb3dSb290JiBzaGFkb3dSb290KQoreworICAgIEFTU0VSVChzbG90RWxlbWVu
dC5jb250YWluaW5nU2hhZG93Um9vdCgpID09ICZzaGFkb3dSb290KTsKKyAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHNsb3ROYW1lID0gc2xvdE5hbWVGcm9tQXR0cmlidXRlVmFsdWUoc2xvdEVsZW1l
bnQuZmFzdEdldEF0dHJpYnV0ZShuYW1lQXR0cikpOworICAgIGF1dG8gaXQgPSBtX3Nsb3RzLmZp
bmQoc2xvdE5hbWUpOworICAgIFJFTEVBU0VfQVNTRVJUKGl0ICE9IG1fc2xvdHMuZW5kKCkpOwog
CiAgICAgYXV0byYgc2xvdEluZm8gPSAqaXQtPnZhbHVlOworICAgIGlmICghbV9zbG90QXNzaWdu
bWVudHNJc1ZhbGlkKQorICAgICAgICBhc3NpZ25TbG90cyhzaGFkb3dSb290KTsKIAogICAgIGlm
ICghc2xvdEluZm8uYXNzaWduZWROb2Rlcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTU1LDE4ICsxOTEsOSBAQCBjb25zdCBWZWN0b3I8Tm9kZSo+KiBTbG90QXNzaWdubWVu
dDo6YXNzCiAgICAgcmV0dXJuICZzbG90SW5mby5hc3NpZ25lZE5vZGVzOwogfQogCi12b2lkIFNs
b3RBc3NpZ25tZW50OjppbnZhbGlkYXRlKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCi17Ci0gICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGRvIGEgdGFyZ2V0ZWQgcmVjb25zdHJ1Y3Rp
b24uCi0gICAgc2hhZG93Um9vdC5ob3N0KCktPnNldE5lZWRzU3R5bGVSZWNhbGMoUmVjb25zdHJ1
Y3RSZW5kZXJUcmVlKTsKLSAgICBtX3Nsb3RBc3NpZ25tZW50c0lzVmFsaWQgPSBmYWxzZTsKLX0K
LQotdm9pZCBTbG90QXNzaWdubWVudDo6aW52YWxpZGF0ZURlZmF1bHRTbG90KFNoYWRvd1Jvb3Qm
IHNoYWRvd1Jvb3QpCitjb25zdCBBdG9taWNTdHJpbmcmIFNsb3RBc3NpZ25tZW50OjpzbG90TmFt
ZUZvckhvc3RDaGlsZChjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QKIHsKLSAgICBhdXRvIGl0ID0g
bV9zbG90cy5maW5kKGRlZmF1bHRTbG90TmFtZSgpKTsKLSAgICBpZiAoaXQgIT0gbV9zbG90cy5l
bmQoKSAmJiBpdC0+dmFsdWUtPmVsZW1lbnRDb3VudCkKLSAgICAgICAgaW52YWxpZGF0ZShzaGFk
b3dSb290KTsgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIHJlY29uc3RydWN0IG9ubHkg
dW5kZXIgdGhlIGRlZmF1bHQgc2xvdC4KKyAgICByZXR1cm4gc2xvdE5hbWVGcm9tU2xvdEF0dHJp
YnV0ZShjaGlsZCk7CiB9CiAKIEhUTUxTbG90RWxlbWVudCogU2xvdEFzc2lnbm1lbnQ6OmZpbmRG
aXJzdFNsb3RFbGVtZW50KFNsb3RJbmZvJiBzbG90SW5mbywgU2hhZG93Um9vdCYgc2hhZG93Um9v
dCkKQEAgLTE3Niw2ICsyMDMsNyBAQCBIVE1MU2xvdEVsZW1lbnQqIFNsb3RBc3NpZ25tZW50Ojpm
aW5kRmlyCiAKICNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFzbG90SW5mby5lbGVtZW50IHx8
IG1fc2xvdEVsZW1lbnRzRm9yQ29uc2lzdGVuY3lDaGVjay5jb250YWlucyhzbG90SW5mby5lbGVt
ZW50KSk7CisgICAgQVNTRVJUKCEhc2xvdEluZm8uZWxlbWVudCA9PSAhIXNsb3RJbmZvLmVsZW1l
bnRDb3VudCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBzbG90SW5mby5lbGVtZW50OwpAQCAtMjIz
LDkgKzI1MSw3IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmFzc2lnblNsb3RzKFNoYWRvd1IKICAg
ICBmb3IgKGF1dG8qIGNoaWxkID0gaG9zdC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmICghaXM8VGV4dD4oKmNoaWxkKSAmJiAh
aXM8RWxlbWVudD4oKmNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRv
IHNsb3ROYW1lID0gbV9zbG90TmFtZUZ1bmN0aW9uKCpjaGlsZCk7Ci0gICAgICAgIGlmICghc2xv
dE5hbWUpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byBzbG90TmFtZSA9IHNs
b3ROYW1lRm9ySG9zdENoaWxkKCpjaGlsZCk7CiAgICAgICAgIGFzc2lnblRvU2xvdCgqY2hpbGQs
IHNsb3ROYW1lKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdu
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5o
CShyZXZpc2lvbiAxOTgwNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFNIQURPV19E
T00pIHx8IEVOQUJMRShERVRBSUxTX0VMRU1FTlQpCiAKKyNpbmNsdWRlICJTaGFkb3dSb290Lmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM2LDE4ICszNywxNSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MU2xvdEVsZW1lbnQ7CiBjbGFzcyBO
b2RlOwotY2xhc3MgU2hhZG93Um9vdDsKIAogY2xhc3MgU2xvdEFzc2lnbm1lbnQgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFNsb3RBc3NpZ25tZW50KTsKIHB1YmxpYzoKLSAgICB1c2luZyBT
bG90TmFtZUZ1bmN0aW9uID0gc3RkOjpmdW5jdGlvbjxBdG9taWNTdHJpbmcgKGNvbnN0IE5vZGUm
IGNoaWxkKT47Ci0KICAgICBTbG90QXNzaWdubWVudCgpOwotICAgIFNsb3RBc3NpZ25tZW50KFNs
b3ROYW1lRnVuY3Rpb24pOwotICAgIH5TbG90QXNzaWdubWVudCgpIHsgfQorICAgIHZpcnR1YWwg
flNsb3RBc3NpZ25tZW50KCk7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZh
dWx0U2xvdE5hbWUoKSB7IHJldHVybiBlbXB0eUF0b207IH0KIApAQCAtNTYsMTAgKzU0LDEzIEBA
IHB1YmxpYzoKICAgICB2b2lkIGFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21pY1N0cmlu
ZyYsIEhUTUxTbG90RWxlbWVudCYsIFNoYWRvd1Jvb3QmKTsKICAgICB2b2lkIHJlbW92ZVNsb3RF
bGVtZW50QnlOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYsIEhUTUxTbG90RWxlbWVudCYsIFNoYWRv
d1Jvb3QmKTsKIAorICAgIGVudW0gY2xhc3MgQ2hhbmdlVHlwZSB7IERpcmVjdENoaWxkLCBJbm5l
clNsb3QgfTsKKyAgICB2b2lkIGRpZENoYW5nZVNsb3QoY29uc3QgQXRvbWljU3RyaW5nJiwgQ2hh
bmdlVHlwZSwgU2hhZG93Um9vdCYpOworICAgIHZvaWQgZW5xdWV1ZVNsb3RDaGFuZ2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmLCBTaGFkb3dSb290Jik7CisKICAgICBjb25zdCBWZWN0b3I8Tm9k
ZSo+KiBhc3NpZ25lZE5vZGVzRm9yU2xvdChjb25zdCBIVE1MU2xvdEVsZW1lbnQmLCBTaGFkb3dS
b290Jik7CiAKLSAgICB2b2lkIGludmFsaWRhdGUoU2hhZG93Um9vdCYpOwotICAgIHZvaWQgaW52
YWxpZGF0ZURlZmF1bHRTbG90KFNoYWRvd1Jvb3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgaG9zdENo
aWxkRWxlbWVudERpZENoYW5nZShjb25zdCBFbGVtZW50JiwgU2hhZG93Um9vdCYpOwogCiBwcml2
YXRlOgogICAgIHN0cnVjdCBTbG90SW5mbyB7CkBAIC03Nyw2ICs3OCw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIHVuc2lnbmVkIGVsZW1lbnRDb3VudCB7IDAgfTsKICAgICAgICAgVmVjdG9yPE5vZGUq
PiBhc3NpZ25lZE5vZGVzOwogICAgIH07CisgICAgCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIHNsb3ROYW1lRm9ySG9zdENoaWxkKGNvbnN0IE5vZGUmKSBjb25zdDsKIAogICAgIEhU
TUxTbG90RWxlbWVudCogZmluZEZpcnN0U2xvdEVsZW1lbnQoU2xvdEluZm8mLCBTaGFkb3dSb290
Jik7CiAgICAgdm9pZCByZXNvbHZlQWxsU2xvdEVsZW1lbnRzKFNoYWRvd1Jvb3QmKTsKQEAgLTg0
LDggKzg3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFzc2lnblNsb3RzKFNoYWRvd1Jvb3QmKTsK
ICAgICB2b2lkIGFzc2lnblRvU2xvdChOb2RlJiBjaGlsZCwgY29uc3QgQXRvbWljU3RyaW5nJiBz
bG90TmFtZSk7CiAKLSAgICBTbG90TmFtZUZ1bmN0aW9uIG1fc2xvdE5hbWVGdW5jdGlvbjsKLQog
ICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEluZm8+PiBtX3Ns
b3RzOwogCiAjaWZuZGVmIE5ERUJVRwpAQCAtOTYsNiArOTcsMzggQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fc2xvdEFzc2lnbm1lbnRzSXNWYWxpZCB7IGZhbHNlIH07CiB9OwogCitpbmxpbmUgdm9p
ZCBTaGFkb3dSb290OjpkaWRSZW1vdmVBbGxDaGlsZHJlbk9mU2hhZG93SG9zdCgpCit7CisgICAg
aWYgKG1fc2xvdEFzc2lnbm1lbnQpIC8vIEZJWE1FOiBUaGlzIGlzIGluY29ycmVjdCB3aGVuIHRo
ZXJlIHdlcmUgbm8gZWxlbWVudHMgb3IgdGV4dCBub2RlcyByZW1vdmVkLgorICAgICAgICBtX3Ns
b3RBc3NpZ25tZW50LT5kaWRDaGFuZ2VTbG90KG51bGxBdG9tLCBTbG90QXNzaWdubWVudDo6Q2hh
bmdlVHlwZTo6RGlyZWN0Q2hpbGQsICp0aGlzKTsKK30KKworaW5saW5lIHZvaWQgU2hhZG93Um9v
dDo6ZGlkQ2hhbmdlRGVmYXVsdFNsb3QoKQoreworICAgIGlmIChtX3Nsb3RBc3NpZ25tZW50KQor
ICAgICAgICBtX3Nsb3RBc3NpZ25tZW50LT5kaWRDaGFuZ2VTbG90KG51bGxBdG9tLCBTbG90QXNz
aWdubWVudDo6Q2hhbmdlVHlwZTo6RGlyZWN0Q2hpbGQsICp0aGlzKTsKK30KKworaW5saW5lIHZv
aWQgU2hhZG93Um9vdDo6aG9zdENoaWxkRWxlbWVudERpZENoYW5nZShjb25zdCBFbGVtZW50JiBj
aGlsZEVsZW1lbnQpCit7CisgICAgaWYgKG1fc2xvdEFzc2lnbm1lbnQpCisgICAgICAgIG1fc2xv
dEFzc2lnbm1lbnQtPmhvc3RDaGlsZEVsZW1lbnREaWRDaGFuZ2UoY2hpbGRFbGVtZW50LCAqdGhp
cyk7Cit9CisKK2lubGluZSB2b2lkIFNoYWRvd1Jvb3Q6Omhvc3RDaGlsZEVsZW1lbnREaWRDaGFu
Z2VTbG90QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmV3VmFsdWUpCit7CisgICAgaWYgKG1fc2xvdEFzc2lnbm1lbnQpIHsKKyAgICAg
ICAgbV9zbG90QXNzaWdubWVudC0+ZGlkQ2hhbmdlU2xvdChvbGRWYWx1ZSwgU2xvdEFzc2lnbm1l
bnQ6OkNoYW5nZVR5cGU6OkRpcmVjdENoaWxkLCAqdGhpcyk7CisgICAgICAgIG1fc2xvdEFzc2ln
bm1lbnQtPmRpZENoYW5nZVNsb3QobmV3VmFsdWUsIFNsb3RBc3NpZ25tZW50OjpDaGFuZ2VUeXBl
OjpEaXJlY3RDaGlsZCwgKnRoaXMpOworICAgIH0KK30KKworaW5saW5lIHZvaWQgU2hhZG93Um9v
dDo6aW5uZXJTbG90RGlkQ2hhbmdlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3sKKyAgICBp
ZiAobV9zbG90QXNzaWdubWVudCkKKyAgICAgICAgbV9zbG90QXNzaWdubWVudC0+ZGlkQ2hhbmdl
U2xvdChuYW1lLCBTbG90QXNzaWdubWVudDo6Q2hhbmdlVHlwZTo6SW5uZXJTbG90LCAqdGhpcyk7
Cit9CisKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxz
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWls
c0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTgwNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEZXRhaWxzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDIzIEBAIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1bW1hcnlTbG90TmEKICAgICByZXR1cm4gc3VtbWFy
eVNsb3Q7CiB9CiAKLXN0YXRpYyBBdG9taWNTdHJpbmcgc2xvdE5hbWVGdW5jdGlvbihjb25zdCBO
b2RlJiBjaGlsZCkKK2NsYXNzIERldGFpbHNTbG90QXNzaWdubWVudCBmaW5hbCA6IHB1YmxpYyBT
bG90QXNzaWdubWVudCB7Citwcml2YXRlOgorICAgIHZvaWQgaG9zdENoaWxkRWxlbWVudERpZENo
YW5nZShjb25zdCBFbGVtZW50JiwgU2hhZG93Um9vdCYpIG92ZXJyaWRlOworICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgc2xvdE5hbWVGb3JIb3N0Q2hpbGQoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJy
aWRlOworfTsKKwordm9pZCBEZXRhaWxzU2xvdEFzc2lnbm1lbnQ6Omhvc3RDaGlsZEVsZW1lbnRE
aWRDaGFuZ2UoY29uc3QgRWxlbWVudCYgY2hpbGRFbGVtZW50LCBTaGFkb3dSb290JiBzaGFkb3dS
b290KQoreworICAgIGlmIChpczxIVE1MU3VtbWFyeUVsZW1lbnQ+KGNoaWxkRWxlbWVudCkpIHsK
KyAgICAgICAgLy8gRG9uJ3QgY2hlY2sgd2hldGhlciB0aGlzIGlzIHRoZSBmaXJzdCBzdW1tYXJ5
IGVsZW1lbnQKKyAgICAgICAgLy8gc2luY2Ugd2UgZG9uJ3Qga25vdyB0aGUgYW5zd2VyIHdoZW4g
dGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW5zaWRlIEVsZW1lbnQ6OnJlbW92ZWRGcm9tLgorICAg
ICAgICBkaWRDaGFuZ2VTbG90KHN1bW1hcnlTbG90TmFtZSgpLCBDaGFuZ2VUeXBlOjpEaXJlY3RD
aGlsZCwgc2hhZG93Um9vdCk7CisgICAgfSBlbHNlCisgICAgICAgIGRpZENoYW5nZVNsb3QoU2xv
dEFzc2lnbm1lbnQ6OmRlZmF1bHRTbG90TmFtZSgpLCBDaGFuZ2VUeXBlOjpEaXJlY3RDaGlsZCwg
c2hhZG93Um9vdCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgRGV0YWlsc1Nsb3RBc3NpZ25t
ZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZChjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QKIHsKICAg
ICBhdXRvJiBwYXJlbnQgPSAqY2hpbGQucGFyZW50Tm9kZSgpOwogICAgIEFTU0VSVChpczxIVE1M
RGV0YWlsc0VsZW1lbnQ+KHBhcmVudCkpOwpAQCAtNTUsMTggKzcxLDEzIEBAIHN0YXRpYyBBdG9t
aWNTdHJpbmcgc2xvdE5hbWVGdW5jdGlvbihjb24KICAgICAgICAgaWYgKCZjaGlsZCA9PSBjaGls
ZHJlbk9mVHlwZTxIVE1MU3VtbWFyeUVsZW1lbnQ+KGRldGFpbHMpLmZpcnN0KCkpCiAgICAgICAg
ICAgICByZXR1cm4gc3VtbWFyeVNsb3ROYW1lKCk7CiAgICAgfQotICAgIC8vIEV2ZXJ5dGhpbmcg
ZWxzZSBpcyBhc3NpZ25lZCB0byB0aGUgZGVmYXVsdCBzbG90IGlmIGRldGFpbHMgaXMgb3Blbi4K
LSAgICBpZiAoZGV0YWlscy5pc09wZW4oKSkKLSAgICAgICAgcmV0dXJuIFNsb3RBc3NpZ25tZW50
OjpkZWZhdWx0U2xvdE5hbWUoKTsKLQotICAgIC8vIE90aGVyd2lzZSBkb24ndCByZW5kZXIgdGhl
IGNvbnRlbnQuCi0gICAgcmV0dXJuIG51bGxBdG9tOwotfTsKKyAgICByZXR1cm4gU2xvdEFzc2ln
bm1lbnQ6OmRlZmF1bHRTbG90TmFtZSgpOworfQogCiBSZWY8SFRNTERldGFpbHNFbGVtZW50PiBI
VE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgYXV0byBkZXRhaWxzID0gYWRvcHRSZWYoKm5ldyBI
VE1MRGV0YWlsc0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKLSAgICBkZXRhaWxzLT5hZGRT
aGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwgc3RkOjptYWtlX3VuaXF1ZTxT
bG90QXNzaWdubWVudD4oc2xvdE5hbWVGdW5jdGlvbikpKTsKKyAgICBkZXRhaWxzLT5hZGRTaGFk
b3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwgc3RkOjptYWtlX3VuaXF1ZTxEZXRh
aWxzU2xvdEFzc2lnbm1lbnQ+KCkpKTsKICAgICByZXR1cm4gZGV0YWlsczsKIH0KIApAQCAtOTQs
OCArMTA1LDggQEAgdm9pZCBIVE1MRGV0YWlsc0VsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudAogICAg
IHN1bW1hcnlTbG90LT5hcHBlbmRDaGlsZChXVEZNb3ZlKGRlZmF1bHRTdW1tYXJ5KSk7CiAgICAg
cm9vdC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShzdW1tYXJ5U2xvdCkpOwogCi0gICAgYXV0byBkZWZh
dWx0U2xvdCA9IEhUTUxTbG90RWxlbWVudDo6Y3JlYXRlKHNsb3RUYWcsIGRvY3VtZW50KCkpOwot
ICAgIHJvb3QtPmFwcGVuZENoaWxkKFdURk1vdmUoZGVmYXVsdFNsb3QpKTsKKyAgICBtX2RlZmF1
bHRTbG90ID0gSFRNTFNsb3RFbGVtZW50OjpjcmVhdGUoc2xvdFRhZywgZG9jdW1lbnQoKSk7Cisg
ICAgQVNTRVJUKCFtX2lzT3Blbik7CiB9CiAKIGJvb2wgSFRNTERldGFpbHNFbGVtZW50Ojppc0Fj
dGl2ZVN1bW1hcnkoY29uc3QgSFRNTFN1bW1hcnlFbGVtZW50JiBzdW1tYXJ5KSBjb25zdApAQCAt
MTE0LDggKzEyNSwxNCBAQCB2b2lkIEhUTUxEZXRhaWxzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
CiAgICAgaWYgKG5hbWUgPT0gb3BlbkF0dHIpIHsKICAgICAgICAgYm9vbCBvbGRWYWx1ZSA9IG1f
aXNPcGVuOwogICAgICAgICBtX2lzT3BlbiA9ICF2YWx1ZS5pc051bGwoKTsKLSAgICAgICAgaWYg
KG9sZFZhbHVlICE9IG1faXNPcGVuKQotICAgICAgICAgICAgc2hhZG93Um9vdCgpLT5pbnZhbGlk
YXRlU2xvdEFzc2lnbm1lbnRzKCk7CisgICAgICAgIGlmIChvbGRWYWx1ZSAhPSBtX2lzT3Blbikg
eworICAgICAgICAgICAgYXV0byogcm9vdCA9IHNoYWRvd1Jvb3QoKTsKKyAgICAgICAgICAgIEFT
U0VSVChyb290KTsKKyAgICAgICAgICAgIGlmIChtX2lzT3BlbikKKyAgICAgICAgICAgICAgICBy
b290LT5hcHBlbmRDaGlsZCgqbV9kZWZhdWx0U2xvdCk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgcm9vdC0+cmVtb3ZlQ2hpbGQoKm1fZGVmYXVsdFNsb3QpOworICAgICAgICB9
CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2
YWx1ZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmgJ
KHJldmlzaW9uIDE5ODA1NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faXNPcGVuIHsgZmFsc2UgfTsKICAgICBIVE1MU2xvdEVsZW1lbnQqIG1fc3VtbWFyeVNsb3Qg
eyBudWxscHRyIH07CiAgICAgSFRNTFN1bW1hcnlFbGVtZW50KiBtX2RlZmF1bHRTdW1tYXJ5IHsg
bnVsbHB0ciB9OworICAgIFJlZlB0cjxIVE1MU2xvdEVsZW1lbnQ+IG1fZGVmYXVsdFNsb3Q7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTbG90RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2xvdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTgwNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTbG90RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkgfHwgRU5BQkxFKERFVEFJTFNfRUxFTUVOVCkKIAogI2luY2x1
ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiU2hhZG93
Um9vdC5oIgogCkBAIC05Nyw2ICs5OSwyNyBAQCBjb25zdCBWZWN0b3I8Tm9kZSo+KiBIVE1MU2xv
dEVsZW1lbnQ6OmFzCiAgICAgcmV0dXJuIHNoYWRvd1Jvb3QtPmFzc2lnbmVkTm9kZXNGb3JTbG90
KCp0aGlzKTsKIH0KIAordm9pZCBIVE1MU2xvdEVsZW1lbnQ6OmVucXVldWVTbG90Q2hhbmdlRXZl
bnQoKQoreworICAgIGlmIChtX2hhc0VucXVldWVkU2xvdENoYW5nZUV2ZW50KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBib29sIGJ1YmJsZXMgPSBmYWxzZTsKKyAgICBib29sIGNhbmNlbGFibGUg
PSBmYWxzZTsKKyAgICBhdXRvIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2xv
dGNoYW5nZUV2ZW50LCBidWJibGVzLCBjYW5jZWxhYmxlKTsKKyAgICBldmVudC0+c2V0VGFyZ2V0
KHRoaXMpOworICAgIGRvY3VtZW50KCkuZW5xdWV1ZVNsb3RjaGFuZ2VFdmVudChXVEZNb3ZlKGV2
ZW50KSk7CisKKyAgICBtX2hhc0VucXVldWVkU2xvdENoYW5nZUV2ZW50ID0gdHJ1ZTsKK30KKwor
Ym9vbCBIVE1MU2xvdEVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQoreworICAg
IGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLnNsb3RjaGFuZ2VFdmVudCkKKyAgICAg
ICAgbV9oYXNFbnF1ZXVlZFNsb3RDaGFuZ2VFdmVudCA9IGZhbHNlOworICAgIHJldHVybiBIVE1M
RWxlbWVudDo6ZGlzcGF0Y2hFdmVudChldmVudCk7Cit9CisKIH0KIAogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmgJKHJldmlzaW9uIDE5ODA1NikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDEyICszOSwxOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBWZWN0b3I8Tm9kZSo+KiBhc3NpZ25l
ZE5vZGVzKCkgY29uc3Q7CiAKKyAgICB2b2lkIGVucXVldWVTbG90Q2hhbmdlRXZlbnQoKTsKKwog
cHJpdmF0ZToKICAgICBIVE1MU2xvdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Jik7CiAKICAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhD
b250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJO
b2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24pIG92ZXJyaWRlOworCisgICAg
Ym9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50Jikgb3ZlcnJpZGU7CisKKyAgICBib29sIG1faGFzRW5x
dWV1ZWRTbG90Q2hhbmdlRXZlbnQgeyBmYWxzZSB9OwogfTsKIAogfQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTk4MDU2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTYtMDMtMTQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgQWRkIHNsb3RjaGFuZ2UgZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MjQ5OTc1MzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAg
ICAgQWRkZWQgYSBXM0Mgc3R5bGUgdGVzdGhhcm5lc3MuanMgdGVzdC4KKworICAgICAgICAqIGZh
c3Qvc2hhZG93LWRvbS9TaGFkb3dSb290LWludGVyZmFjZS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9zaGFkb3ctZG9tL1NoYWRvd1Jvb3QtaW50ZXJmYWNlLmh0bWw6IERvbid0IGltcG9y
dCB0ZXN0aGFybmVzcy5jc3MgZnJvbSBzdm4ud2Via2l0Lm9yZy4KKyAgICAgICAgKiBmYXN0L3No
YWRvdy1kb20vc2xvdGNoYW5nZS1ldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3Qvc2hhZG93LWRvbS9zbG90Y2hhbmdlLWV2ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDE2LTAz
LTExICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBFdmVu
dC5kZWVwUGF0aCgpIGFuZCBFdmVudC5zY29wZWQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hh
ZG93LWRvbS9TaGFkb3dSb290LWludGVyZmFjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL1NoYWRvd1Jvb3QtaW50ZXJmYWNlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTk4MDU2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL1No
YWRvd1Jvb3QtaW50ZXJmYWNlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsx
LDMgQEAKLUJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3N2bi53ZWJraXQu
b3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rL0xheW91dFRlc3RzL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5jc3MKIAogUEFTUyBDaGVjayB0aGUgZXhpc3RlbmNlIG9mIFNoYWRvd1Jvb3QgaW50ZXJm
YWNlIAogUEFTUyBTaGFkb3dSb290IG11c3QgaW5oZXJpdCBmcm9tIERvY3VtZW50RnJhZ21lbnQg
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vU2hhZG93Um9vdC1pbnRlcmZhY2Uu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vU2hhZG93Um9v
dC1pbnRlcmZhY2UuaHRtbAkocmV2aXNpb24gMTk4MDU2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9z
aGFkb3ctZG9tL1NoYWRvd1Jvb3QtaW50ZXJmYWNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcs
NyArNyw3IEBACiA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vdzNjLmdpdGh1Yi5pby93
ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyN0aGUtc2hhZG93cm9vdC1pbnRlcmZhY2UiPgogPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LTxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0naHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBv
c2l0b3J5L3dlYmtpdC90cnVuay9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3Nz
Jz4KKzxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmNzcyc+CiA8L2hlYWQ+CiA8Ym9keT4KIDxkaXYgaWQ9ImxvZyI+PC9kaXY+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc2xvdGNoYW5nZS1ldmVudC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3Nsb3RjaGFuZ2UtZXZl
bnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ct
ZG9tL3Nsb3RjaGFuZ2UtZXZlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzIgQEAKK2hlbGxvCitoZWxsbworCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBmaXJl
IG9uIGEgZGVmYXVsdCBzbG90IGVsZW1lbnQgaW5zaWRlIGFuIG9wZW4gc2hhZG93IHJvb3QgIGlu
IGEgZG9jdW1lbnQgCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBmaXJlIG9uIGEgZGVmYXVs
dCBzbG90IGVsZW1lbnQgaW5zaWRlIGEgY2xvc2VkIHNoYWRvdyByb290ICBpbiBhIGRvY3VtZW50
IAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBhIGRlZmF1bHQgc2xvdCBlbGVt
ZW50IGluc2lkZSBhbiBvcGVuIHNoYWRvdyByb290ICBub3QgaW4gYSBkb2N1bWVudCAKK1BBU1Mg
c2xvdGNoYW5nZSBldmVudCBtdXN0IGZpcmUgb24gYSBkZWZhdWx0IHNsb3QgZWxlbWVudCBpbnNp
ZGUgYSBjbG9zZWQgc2hhZG93IHJvb3QgIG5vdCBpbiBhIGRvY3VtZW50IAorUEFTUyBzbG90Y2hh
bmdlIGV2ZW50IG11c3QgZmlyZSBvbiBhIG5hbWVkIHNsb3QgZWxlbWVudCBpbnNpZGVhbiBvcGVu
IHNoYWRvdyByb290ICBpbiBhIGRvY3VtZW50IAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3Qg
ZmlyZSBvbiBhIG5hbWVkIHNsb3QgZWxlbWVudCBpbnNpZGVhIGNsb3NlZCBzaGFkb3cgcm9vdCAg
aW4gYSBkb2N1bWVudCAKK1BBU1Mgc2xvdGNoYW5nZSBldmVudCBtdXN0IGZpcmUgb24gYSBuYW1l
ZCBzbG90IGVsZW1lbnQgaW5zaWRlYW4gb3BlbiBzaGFkb3cgcm9vdCAgbm90IGluIGEgZG9jdW1l
bnQgCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBmaXJlIG9uIGEgbmFtZWQgc2xvdCBlbGVt
ZW50IGluc2lkZWEgY2xvc2VkIHNoYWRvdyByb290ICBub3QgaW4gYSBkb2N1bWVudCAKK1BBU1Mg
c2xvdGNoYW5nZSBldmVudCBtdXN0IG5vdCBmaXJlIG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBh
biBvcGVuIHNoYWRvdyByb290ICBpbiBhIGRvY3VtZW50IHdoZW4gYW5vdGhlciBzbG90J3MgYXNz
aWduZWQgbm9kZXMgY2hhbmdlIAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3Qgbm90IGZpcmUg
b24gYSBzbG90IGVsZW1lbnQgaW5zaWRlIGEgY2xvc2VkIHNoYWRvdyByb290ICBpbiBhIGRvY3Vt
ZW50IHdoZW4gYW5vdGhlciBzbG90J3MgYXNzaWduZWQgbm9kZXMgY2hhbmdlIAorUEFTUyBzbG90
Y2hhbmdlIGV2ZW50IG11c3Qgbm90IGZpcmUgb24gYSBzbG90IGVsZW1lbnQgaW5zaWRlIGFuIG9w
ZW4gc2hhZG93IHJvb3QgIG5vdCBpbiBhIGRvY3VtZW50IHdoZW4gYW5vdGhlciBzbG90J3MgYXNz
aWduZWQgbm9kZXMgY2hhbmdlIAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3Qgbm90IGZpcmUg
b24gYSBzbG90IGVsZW1lbnQgaW5zaWRlIGEgY2xvc2VkIHNoYWRvdyByb290ICBub3QgaW4gYSBk
b2N1bWVudCB3aGVuIGFub3RoZXIgc2xvdCdzIGFzc2lnbmVkIG5vZGVzIGNoYW5nZSAKK1BBU1Mg
c2xvdGNoYW5nZSBldmVudCBtdXN0IG5vdCBmaXJlIG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBh
biBvcGVuIHNoYWRvdyByb290ICBpbiBhIGRvY3VtZW50IHdoZW4gdGhlIHNoYWRvdyBob3N0IHdh
cyBtdXRhdGVkIGJlZm9yZSB0aGUgc2xvdCB3YXMgaW5zZXJ0ZWQgb3IgYWZ0ZXIgdGhlIHNsb3Qg
d2FzIHJlbW92ZWQgCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBub3QgZmlyZSBvbiBhIHNs
b3QgZWxlbWVudCBpbnNpZGUgYSBjbG9zZWQgc2hhZG93IHJvb3QgIGluIGEgZG9jdW1lbnQgd2hl
biB0aGUgc2hhZG93IGhvc3Qgd2FzIG11dGF0ZWQgYmVmb3JlIHRoZSBzbG90IHdhcyBpbnNlcnRl
ZCBvciBhZnRlciB0aGUgc2xvdCB3YXMgcmVtb3ZlZCAKK1BBU1Mgc2xvdGNoYW5nZSBldmVudCBt
dXN0IG5vdCBmaXJlIG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBhbiBvcGVuIHNoYWRvdyByb290
ICBub3QgaW4gYSBkb2N1bWVudCB3aGVuIHRoZSBzaGFkb3cgaG9zdCB3YXMgbXV0YXRlZCBiZWZv
cmUgdGhlIHNsb3Qgd2FzIGluc2VydGVkIG9yIGFmdGVyIHRoZSBzbG90IHdhcyByZW1vdmVkIAor
UEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3Qgbm90IGZpcmUgb24gYSBzbG90IGVsZW1lbnQgaW5z
aWRlIGEgY2xvc2VkIHNoYWRvdyByb290ICBub3QgaW4gYSBkb2N1bWVudCB3aGVuIHRoZSBzaGFk
b3cgaG9zdCB3YXMgbXV0YXRlZCBiZWZvcmUgdGhlIHNsb3Qgd2FzIGluc2VydGVkIG9yIGFmdGVy
IHRoZSBzbG90IHdhcyByZW1vdmVkIAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBv
biBhIHNsb3QgZWxlbWVudCBpbnNpZGUgYW4gb3BlbiBzaGFkb3cgcm9vdCAgaW4gYSBkb2N1bWVu
dCBldmVuIGlmIHRoZSBzbG90IHdhcyByZW1vdmVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBhc3Np
Z25lZCBub2RlcyB3ZXJlIG11dGF0ZWQgCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBmaXJl
IG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBhIGNsb3NlZCBzaGFkb3cgcm9vdCAgaW4gYSBkb2N1
bWVudCBldmVuIGlmIHRoZSBzbG90IHdhcyByZW1vdmVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBh
c3NpZ25lZCBub2RlcyB3ZXJlIG11dGF0ZWQgCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQgbXVzdCBm
aXJlIG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBhbiBvcGVuIHNoYWRvdyByb290ICBub3QgaW4g
YSBkb2N1bWVudCBldmVuIGlmIHRoZSBzbG90IHdhcyByZW1vdmVkIGltbWVkaWF0ZWx5IGFmdGVy
IHRoZSBhc3NpZ25lZCBub2RlcyB3ZXJlIG11dGF0ZWQgCitQQVNTIHNsb3RjaGFuZ2UgZXZlbnQg
bXVzdCBmaXJlIG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBhIGNsb3NlZCBzaGFkb3cgcm9vdCAg
bm90IGluIGEgZG9jdW1lbnQgZXZlbiBpZiB0aGUgc2xvdCB3YXMgcmVtb3ZlZCBpbW1lZGlhdGVs
eSBhZnRlciB0aGUgYXNzaWduZWQgbm9kZXMgd2VyZSBtdXRhdGVkIAorUEFTUyBzbG90Y2hhbmdl
IGV2ZW50IG11c3QgZmlyZSBvbiBhIHNsb3QgZWxlbWVudCBpbnNpZGUgYW4gb3BlbiBzaGFkb3cg
cm9vdCAgaW4gYSBkb2N1bWVudCB3aGVuIGlubmVySFRNTCBtb2RpZmllcyB0aGUgY2hpbGRyZW4g
b2YgdGhlIHNoYWRvdyBob3N0IAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBh
IHNsb3QgZWxlbWVudCBpbnNpZGUgYSBjbG9zZWQgc2hhZG93IHJvb3QgIGluIGEgZG9jdW1lbnQg
d2hlbiBpbm5lckhUTUwgbW9kaWZpZXMgdGhlIGNoaWxkcmVuIG9mIHRoZSBzaGFkb3cgaG9zdCAK
K1BBU1Mgc2xvdGNoYW5nZSBldmVudCBtdXN0IGZpcmUgb24gYSBzbG90IGVsZW1lbnQgaW5zaWRl
IGFuIG9wZW4gc2hhZG93IHJvb3QgIG5vdCBpbiBhIGRvY3VtZW50IHdoZW4gaW5uZXJIVE1MIG1v
ZGlmaWVzIHRoZSBjaGlsZHJlbiBvZiB0aGUgc2hhZG93IGhvc3QgCitQQVNTIHNsb3RjaGFuZ2Ug
ZXZlbnQgbXVzdCBmaXJlIG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBhIGNsb3NlZCBzaGFkb3cg
cm9vdCAgbm90IGluIGEgZG9jdW1lbnQgd2hlbiBpbm5lckhUTUwgbW9kaWZpZXMgdGhlIGNoaWxk
cmVuIG9mIHRoZSBzaGFkb3cgaG9zdCAKK1BBU1Mgc2xvdGNoYW5nZSBldmVudCBtdXN0IGZpcmUg
b24gYSBzbG90IGVsZW1lbnQgaW5zaWRlIGFuIG9wZW4gc2hhZG93IHJvb3QgIGluIGEgZG9jdW1l
bnQgd2hlbiBuZXN0ZWQgc2xvdHMncyBjb250ZW50cyBjaGFuZ2UgCitQQVNTIHNsb3RjaGFuZ2Ug
ZXZlbnQgbXVzdCBmaXJlIG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSBhIGNsb3NlZCBzaGFkb3cg
cm9vdCAgaW4gYSBkb2N1bWVudCB3aGVuIG5lc3RlZCBzbG90cydzIGNvbnRlbnRzIGNoYW5nZSAK
K1BBU1Mgc2xvdGNoYW5nZSBldmVudCBtdXN0IGZpcmUgb24gYSBzbG90IGVsZW1lbnQgaW5zaWRl
IGFuIG9wZW4gc2hhZG93IHJvb3QgIG5vdCBpbiBhIGRvY3VtZW50IHdoZW4gbmVzdGVkIHNsb3Rz
J3MgY29udGVudHMgY2hhbmdlIAorUEFTUyBzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBh
IHNsb3QgZWxlbWVudCBpbnNpZGUgYSBjbG9zZWQgc2hhZG93IHJvb3QgIG5vdCBpbiBhIGRvY3Vt
ZW50IHdoZW4gbmVzdGVkIHNsb3RzJ3MgY29udGVudHMgY2hhbmdlIAorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L3NoYWRvdy1kb20vc2xvdGNoYW5nZS1ldmVudC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zbG90Y2hhbmdlLWV2ZW50Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc2xvdGNoYW5nZS1ldmVudC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8dGl0bGU+U2hhZG93IERPTTogc2xvdGNoYW5nZSBldmVudDwvdGl0bGU+
Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJSeW9zdWtlIE5pd2EiIGhyZWY9Im1haWx0bzpy
bml3YUB3ZWJraXQub3JnIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MnPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJs
b2ciPjwvZGl2PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdHJlZU5hbWUobW9kZSwgY29ubmVjdGVk
VG9Eb2N1bWVudCkKK3sKKyAgICByZXR1cm4gKG1vZGUgPT0gJ29wZW4nID8gJ2FuICcgOiAnYSAn
KSArIG1vZGUgKyAnIHNoYWRvdyByb290ICcKKyAgICAgICAgKyAoY29ubmVjdGVkVG9Eb2N1bWVu
dCA/ICcnIDogJyBub3QnKSArICcgaW4gYSBkb2N1bWVudCc7Cit9CisKK2Z1bmN0aW9uIHRlc3RB
cHBlbmRpbmdTcGFuVG9TaGFkb3dSb290V2l0aERlZmF1bHRTbG90KG1vZGUsIGNvbm5lY3RlZFRv
RG9jdW1lbnQpCit7CisgICAgdmFyIHRlc3QgPSBhc3luY190ZXN0KCdzbG90Y2hhbmdlIGV2ZW50
IG11c3QgZmlyZSBvbiBhIGRlZmF1bHQgc2xvdCBlbGVtZW50IGluc2lkZSAnCisgICAgICAgICsg
dHJlZU5hbWUobW9kZSwgY29ubmVjdGVkVG9Eb2N1bWVudCkpOworCisgICAgdmFyIGhvc3Q7Cisg
ICAgdmFyIHNsb3Q7CisgICAgdmFyIGV2ZW50Q291bnQgPSAwOworCisgICAgdGVzdC5zdGVwKGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgICAgICBpZiAoY29ubmVjdGVkVG9Eb2N1bWVudCkKKyAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoaG9zdCk7CisKKyAgICAgICAgdmFyIHNoYWRvd1Jvb3QgPSBob3N0
LmF0dGFjaFNoYWRvdyh7J21vZGUnOiBtb2RlfSk7CisgICAgICAgIHNsb3QgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzbG90Jyk7CisKKyAgICAgICAgc2xvdC5hZGRFdmVudExpc3RlbmVyKCdz
bG90Y2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQuaXNG
YWtlRXZlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB0ZXN0LnN0
ZXAoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQudHlw
ZSwgJ3Nsb3RjaGFuZ2UnLCAnc2xvdGNoYW5nZSBldmVudFwncyB0eXBlIG11c3QgYmUgInNsb3Rj
aGFuZ2UiJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC50YXJnZXQsIHNs
b3QsICdzbG90Y2hhbmdlIGV2ZW50XCdzIHRhcmdldCBtdXN0IGJlIHRoZSBzbG90IGVsZW1lbnQn
KTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnJlbGF0ZWRUYXJnZXQsIHVu
ZGVmaW5lZCwgJ3Nsb3RjaGFuZ2UgbXVzdCBub3Qgc2V0IHJlbGF0ZWRUYXJnZXQnKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgZXZlbnRDb3VudCsrOworICAgICAgICB9KTsKKworICAg
ICAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHNsb3QpOworCisgICAgICAgIGhvc3QuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICAgICAgaG9zdC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdiJykpOworCisgICAgICAgIGFzc2VydF9l
cXVhbHMoZXZlbnRDb3VudCwgMCwgJ3Nsb3RjaGFuZ2UgZXZlbnQgbXVzdCBub3QgYmUgZmlyZWQg
c3luY2hyb25vdXNseScpOworICAgIH0pOworCisgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7
CisgICAgICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKGV2ZW50Q291bnQsIDEsICdzbG90Y2hhbmdlIG11c3QgYmUgZmlyZWQgZXhhY3RseSBvbmNl
IGFmdGVyIHRoZSBhc3NpZ25lZCBub2RlcyBjaGFuZ2VkJyk7CisKKyAgICAgICAgICAgIGhvc3Qu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpKTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0LnN0ZXAo
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnRDb3VudCwg
MiwgJ3Nsb3RjaGFuZ2UgbXVzdCBiZSBmaXJlZCBleGFjdGx5IG9uY2UgYWZ0ZXIgdGhlIGFzc2ln
bmVkIG5vZGVzIGNoYW5nZWQnKTsKKworICAgICAgICAgICAgICAgIGhvc3QuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2hlbGxvJykpOworCisgICAgICAgICAgICAgICAgdmFy
IGZha2VFdmVudCA9IG5ldyBFdmVudCgnc2xvdGNoYW5nZScpOworICAgICAgICAgICAgICAgIGZh
a2VFdmVudC5pc0Zha2VFdmVudCA9IHRydWU7CisgICAgICAgICAgICAgICAgc2xvdC5kaXNwYXRj
aEV2ZW50KGZha2VFdmVudCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudENvdW50LCAzLCAnc2xv
dGNoYW5nZSBtdXN0IGJlIGZpcmVkIGV4YWN0bHkgb25jZSBhZnRlciB0aGUgYXNzaWduZWQgbm9k
ZXMgY2hhbmdlZCcKKyAgICAgICAgICAgICAgICAgICAgICAgICsgJyBldmVudCBpZiB0aGVyZSB3
YXMgYSBzeW50aGV0aWMgc2xvdGNoYW5nZSBldmVudCBmaXJlZCcpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgICAgIHRlc3QuZG9uZSgpOworICAgICAgICAgICAgfSwgMSk7Cisg
ICAgICAgIH0sIDEpOworICAgIH0sIDEpOworfQorCit0ZXN0QXBwZW5kaW5nU3BhblRvU2hhZG93
Um9vdFdpdGhEZWZhdWx0U2xvdCgnb3BlbicsIHRydWUpOwordGVzdEFwcGVuZGluZ1NwYW5Ub1No
YWRvd1Jvb3RXaXRoRGVmYXVsdFNsb3QoJ2Nsb3NlZCcsIHRydWUpOwordGVzdEFwcGVuZGluZ1Nw
YW5Ub1NoYWRvd1Jvb3RXaXRoRGVmYXVsdFNsb3QoJ29wZW4nLCBmYWxzZSk7Cit0ZXN0QXBwZW5k
aW5nU3BhblRvU2hhZG93Um9vdFdpdGhEZWZhdWx0U2xvdCgnY2xvc2VkJywgZmFsc2UpOworCitm
dW5jdGlvbiB0ZXN0QXBwZW5kaW5nU3BhblRvU2hhZG93Um9vdFdpdGhOYW1lZFNsb3QobW9kZSwg
Y29ubmVjdGVkVG9Eb2N1bWVudCkKK3sKKyAgICB2YXIgdGVzdCA9IGFzeW5jX3Rlc3QoJ3Nsb3Rj
aGFuZ2UgZXZlbnQgbXVzdCBmaXJlIG9uIGEgbmFtZWQgc2xvdCBlbGVtZW50IGluc2lkZScKKyAg
ICAgICAgKyB0cmVlTmFtZShtb2RlLCBjb25uZWN0ZWRUb0RvY3VtZW50KSk7CisKKyAgICB2YXIg
aG9zdDsKKyAgICB2YXIgc2xvdDsKKyAgICB2YXIgZXZlbnRDb3VudCA9IDA7CisKKyAgICB0ZXN0
LnN0ZXAoZnVuY3Rpb24gKCkgeworICAgICAgICBob3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgICAgIGlmIChjb25uZWN0ZWRUb0RvY3VtZW50KQorICAgICAgICAgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChob3N0KTsKKworICAgICAgICB2YXIgc2hhZG93Um9v
dCA9IGhvc3QuYXR0YWNoU2hhZG93KHsnbW9kZSc6IG1vZGV9KTsKKyAgICAgICAgc2xvdCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Nsb3QnKTsKKyAgICAgICAgc2xvdC5uYW1lID0gJ3NvbWVT
bG90JzsKKworICAgICAgICBzbG90LmFkZEV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCBmdW5j
dGlvbiAoZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChldmVudC5pc0Zha2VFdmVudCkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC50eXBlLCAnc2xvdGNoYW5nZScs
ICdzbG90Y2hhbmdlIGV2ZW50XCdzIHR5cGUgbXVzdCBiZSAic2xvdGNoYW5nZSInKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnRhcmdldCwgc2xvdCwgJ3Nsb3RjaGFuZ2Ug
ZXZlbnRcJ3MgdGFyZ2V0IG11c3QgYmUgdGhlIHNsb3QgZWxlbWVudCcpOworICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoZXZlbnQucmVsYXRlZFRhcmdldCwgdW5kZWZpbmVkLCAnc2xvdGNo
YW5nZSBtdXN0IG5vdCBzZXQgcmVsYXRlZFRhcmdldCcpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICBldmVudENvdW50Kys7CisgICAgICAgIH0pOworCisgICAgICAgIHNoYWRvd1Jvb3Qu
YXBwZW5kQ2hpbGQoc2xvdCk7CisKKyAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzcGFuJyk7CisgICAgICAgIHNwYW4uc2xvdCA9ICdzb21lU2xvdCc7CisgICAgICAg
IGhvc3QuYXBwZW5kQ2hpbGQoc3Bhbik7CisKKyAgICAgICAgdmFyIGIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdiJyk7CisgICAgICAgIGIuc2xvdCA9ICdzb21lU2xvdCc7CisgICAgICAgIGhv
c3QuYXBwZW5kQ2hpbGQoYik7CisKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudENvdW50LCAw
LCAnc2xvdGNoYW5nZSBldmVudCBtdXN0IG5vdCBiZSBmaXJlZCBzeW5jaHJvbm91c2x5Jyk7Cisg
ICAgfSk7CisKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVzdC5zdGVw
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnRDb3VudCwgMSwg
J3Nsb3RjaGFuZ2UgbXVzdCBiZSBmaXJlZCBleGFjdGx5IG9uY2UgYWZ0ZXIgdGhlIGFzc2lnbmVk
IG5vZGVzIGNoYW5nZWQnKTsKKworICAgICAgICAgICAgdmFyIGkgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdpJyk7CisgICAgICAgICAgICBpLnNsb3QgPSAnc29tZVNsb3QnOworICAgICAgICAg
ICAgaG9zdC5hcHBlbmRDaGlsZChpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnRDb3VudCwgMiwgJ3Nsb3RjaGFuZ2UgbXVz
dCBiZSBmaXJlZCBleGFjdGx5IG9uY2UgYWZ0ZXIgdGhlIGFzc2lnbmVkIG5vZGVzIGNoYW5nZWQn
KTsKKworICAgICAgICAgICAgICAgIHZhciBlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Vt
Jyk7CisgICAgICAgICAgICAgICAgZW0uc2xvdCA9ICdzb21lU2xvdCc7CisgICAgICAgICAgICAg
ICAgaG9zdC5hcHBlbmRDaGlsZChlbSk7CisKKyAgICAgICAgICAgICAgICB2YXIgZmFrZUV2ZW50
ID0gbmV3IEV2ZW50KCdzbG90Y2hhbmdlJyk7CisgICAgICAgICAgICAgICAgZmFrZUV2ZW50Lmlz
RmFrZUV2ZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzbG90LmRpc3BhdGNoRXZlbnQoZmFr
ZUV2ZW50KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Q291bnQsIDMsICdzbG90Y2hhbmdlIG11
c3QgYmUgZmlyZWQgZXhhY3RseSBvbmNlIGFmdGVyIHRoZSBhc3NpZ25lZCBub2RlcyBjaGFuZ2Vk
JworICAgICAgICAgICAgICAgICAgICAgICAgKyAnIGV2ZW50IGlmIHRoZXJlIHdhcyBhIHN5bnRo
ZXRpYyBzbG90Y2hhbmdlIGV2ZW50IGZpcmVkJyk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgdGVzdC5kb25lKCk7CisgICAgICAgICAgICB9LCAxKTsKKworICAgICAgICB9
LCAxKTsKKyAgICB9LCAxKTsKK30KKwordGVzdEFwcGVuZGluZ1NwYW5Ub1NoYWRvd1Jvb3RXaXRo
TmFtZWRTbG90KCdvcGVuJywgdHJ1ZSk7Cit0ZXN0QXBwZW5kaW5nU3BhblRvU2hhZG93Um9vdFdp
dGhOYW1lZFNsb3QoJ2Nsb3NlZCcsIHRydWUpOwordGVzdEFwcGVuZGluZ1NwYW5Ub1NoYWRvd1Jv
b3RXaXRoTmFtZWRTbG90KCdvcGVuJywgZmFsc2UpOwordGVzdEFwcGVuZGluZ1NwYW5Ub1NoYWRv
d1Jvb3RXaXRoTmFtZWRTbG90KCdjbG9zZWQnLCBmYWxzZSk7CisKK2Z1bmN0aW9uIHRlc3RTbG90
Y2hhbmdlRG9lc05vdEZpcmVXaGVuT3RoZXJTbG90c0NoYW5nZShtb2RlLCBjb25uZWN0ZWRUb0Rv
Y3VtZW50KQoreworICAgIHZhciB0ZXN0ID0gYXN5bmNfdGVzdCgnc2xvdGNoYW5nZSBldmVudCBt
dXN0IG5vdCBmaXJlIG9uIGEgc2xvdCBlbGVtZW50IGluc2lkZSAnCisgICAgICAgICsgdHJlZU5h
bWUobW9kZSwgY29ubmVjdGVkVG9Eb2N1bWVudCkKKyAgICAgICAgKyAnIHdoZW4gYW5vdGhlciBz
bG90XCdzIGFzc2lnbmVkIG5vZGVzIGNoYW5nZScpOworCisgICAgdmFyIGhvc3Q7CisgICAgdmFy
IGRlZmF1bHRTbG90RXZlbnRDb3VudCA9IDA7CisgICAgdmFyIG5hbWVkU2xvdEV2ZW50Q291bnQg
PSAwOworCisgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaG9zdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBpZiAoY29ubmVjdGVkVG9Eb2N1bWVu
dCkKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaG9zdCk7CisKKyAgICAg
ICAgdmFyIHNoYWRvd1Jvb3QgPSBob3N0LmF0dGFjaFNoYWRvdyh7J21vZGUnOiBtb2RlfSk7Cisg
ICAgICAgIHZhciBkZWZhdWx0U2xvdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Nsb3QnKTsK
KyAgICAgICAgZGVmYXVsdFNsb3QuYWRkRXZlbnRMaXN0ZW5lcignc2xvdGNoYW5nZScsIGZ1bmN0
aW9uIChldmVudCkgeworICAgICAgICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnRhcmdldCwgZGVmYXVsdFNsb3QsICdzbG90
Y2hhbmdlIGV2ZW50XCdzIHRhcmdldCBtdXN0IGJlIHRoZSBzbG90IGVsZW1lbnQnKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgZGVmYXVsdFNsb3RFdmVudENvdW50Kys7CisgICAgICAg
IH0pOworCisgICAgICAgIHZhciBuYW1lZFNsb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdz
bG90Jyk7CisgICAgICAgIG5hbWVkU2xvdC5uYW1lID0gJ3Nsb3ROYW1lJzsKKyAgICAgICAgbmFt
ZWRTbG90LmFkZEV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCBmdW5jdGlvbiAoZXZlbnQpIHsK
KyAgICAgICAgICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhldmVudC50YXJnZXQsIG5hbWVkU2xvdCwgJ3Nsb3RjaGFuZ2UgZXZlbnRcJ3Mg
dGFyZ2V0IG11c3QgYmUgdGhlIHNsb3QgZWxlbWVudCcpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICBuYW1lZFNsb3RFdmVudENvdW50Kys7CisgICAgICAgIH0pOworCisgICAgICAgIHNo
YWRvd1Jvb3QuYXBwZW5kQ2hpbGQoZGVmYXVsdFNsb3QpOworICAgICAgICBzaGFkb3dSb290LmFw
cGVuZENoaWxkKG5hbWVkU2xvdCk7CisKKyAgICAgICAgaG9zdC5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzcGFuJykpOworCisgICAgICAgIGFzc2VydF9lcXVhbHMoZGVmYXVs
dFNsb3RFdmVudENvdW50LCAwLCAnc2xvdGNoYW5nZSBldmVudCBtdXN0IG5vdCBiZSBmaXJlZCBz
eW5jaHJvbm91c2x5Jyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMobmFtZWRTbG90RXZlbnRDb3Vu
dCwgMCwgJ3Nsb3RjaGFuZ2UgZXZlbnQgbXVzdCBub3QgYmUgZmlyZWQgc3luY2hyb25vdXNseScp
OworICAgIH0pOworCisgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgIHRlc3Qu
c3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlZmF1bHRTbG90
RXZlbnRDb3VudCwgMSwKKyAgICAgICAgICAgICAgICAnc2xvdGNoYW5nZSBtdXN0IGJlIGZpcmVk
IGV4YWN0bHkgb25jZSBhZnRlciB0aGUgYXNzaWduZWQgbm9kZXMgY2hhbmdlIG9uIGEgZGVmYXVs
dCBzbG90Jyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKG5hbWVkU2xvdEV2ZW50Q291bnQs
IDAsCisgICAgICAgICAgICAgICAgJ3Nsb3RjaGFuZ2UgbXVzdCBub3QgYmUgZmlyZWQgb24gYSBu
YW1lZCBzbG90IGFmdGVyIHRoZSBhc3NpZ25lZCBub2RlcyBjaGFuZ2Ugb24gYSBkZWZhdWx0IHNs
b3QnKTsKKworICAgICAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdz
cGFuJyk7CisgICAgICAgICAgICBzcGFuLnNsb3QgPSAnc2xvdE5hbWUnOworICAgICAgICAgICAg
aG9zdC5hcHBlbmRDaGlsZChzcGFuKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVmYXVsdFNsb3RFdmVudENvdW50LCAxLAorICAg
ICAgICAgICAgICAgICAgICAnc2xvdGNoYW5nZSBtdXN0IG5vdCBiZSBmaXJlZCBvbiBhIGRlZmF1
bHQgc2xvdCBhZnRlciB0aGUgYXNzaWduZWQgbm9kZXMgY2hhbmdlIG9uIGEgbmFtZWQgc2xvdCcp
OworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMobmFtZWRTbG90RXZlbnRDb3VudCwgMSwK
KyAgICAgICAgICAgICAgICAgICAgJ3Nsb3RjaGFuZ2UgbXVzdCBiZSBmaXJlZCBleGFjdGx5IG9u
Y2UgYWZ0ZXIgdGhlIGFzc2lnbmVkIG5vZGVzIGNoYW5nZSBvbiBhIGRlZmF1bHQgc2xvdCcpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB0ZXN0LmRvbmUoKTsKKyAgICAgICAgfSwgMSk7
CisgICAgfSwgMSk7Cit9CisKK3Rlc3RTbG90Y2hhbmdlRG9lc05vdEZpcmVXaGVuT3RoZXJTbG90
c0NoYW5nZSgnb3BlbicsIHRydWUpOwordGVzdFNsb3RjaGFuZ2VEb2VzTm90RmlyZVdoZW5PdGhl
clNsb3RzQ2hhbmdlKCdjbG9zZWQnLCB0cnVlKTsKK3Rlc3RTbG90Y2hhbmdlRG9lc05vdEZpcmVX
aGVuT3RoZXJTbG90c0NoYW5nZSgnb3BlbicsIGZhbHNlKTsKK3Rlc3RTbG90Y2hhbmdlRG9lc05v
dEZpcmVXaGVuT3RoZXJTbG90c0NoYW5nZSgnY2xvc2VkJywgZmFsc2UpOworCitmdW5jdGlvbiB0
ZXN0U2xvdGNoYW5nZURvZXNOb3RGaXJlRm9yTXV0YXRpb25CZWZvcmVPckFmdGVyU2xvdFdhc1By
ZXNlbnQobW9kZSwgY29ubmVjdGVkVG9Eb2N1bWVudCkKK3sKKyAgICB2YXIgdGVzdCA9IGFzeW5j
X3Rlc3QoJ3Nsb3RjaGFuZ2UgZXZlbnQgbXVzdCBub3QgZmlyZSBvbiBhIHNsb3QgZWxlbWVudCBp
bnNpZGUgJworICAgICAgICArIHRyZWVOYW1lKG1vZGUsIGNvbm5lY3RlZFRvRG9jdW1lbnQpCisg
ICAgICAgICsgJyB3aGVuIHRoZSBzaGFkb3cgaG9zdCB3YXMgbXV0YXRlZCBiZWZvcmUgdGhlIHNs
b3Qgd2FzIGluc2VydGVkIG9yIGFmdGVyIHRoZSBzbG90IHdhcyByZW1vdmVkJyk7CisKKyAgICB2
YXIgaG9zdDsKKyAgICB2YXIgc2xvdDsKKyAgICB2YXIgZXZlbnRDb3VudCA9IDA7CisKKyAgICB0
ZXN0LnN0ZXAoZnVuY3Rpb24gKCkgeworICAgICAgICBob3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgICAgIGlmIChjb25uZWN0ZWRUb0RvY3VtZW50KQorICAgICAgICAg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChob3N0KTsKKworICAgICAgICB2YXIgc2hhZG93
Um9vdCA9IGhvc3QuYXR0YWNoU2hhZG93KHsnbW9kZSc6IG1vZGV9KTsKKyAgICAgICAgc2xvdCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Nsb3QnKTsKKyAgICAgICAgc2xvdC5hZGRFdmVudExp
c3RlbmVyKCdzbG90Y2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgICAgICB0ZXN0
LnN0ZXAoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQu
dGFyZ2V0LCBzbG90LCAnc2xvdGNoYW5nZSBldmVudFwncyB0YXJnZXQgbXVzdCBiZSB0aGUgc2xv
dCBlbGVtZW50Jyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGV2ZW50Q291bnQrKzsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgaG9zdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzcGFuJykpOworICAgICAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHNsb3QpOwor
CisgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnRDb3VudCwgMCwgJ3Nsb3RjaGFuZ2UgZXZlbnQg
bXVzdCBub3QgYmUgZmlyZWQgc3luY2hyb25vdXNseScpOworICAgIH0pOworCisgICAgc2V0VGlt
ZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50Q291bnQsIDAsCisgICAgICAgICAgICAgICAgJ3Ns
b3RjaGFuZ2UgbXVzdCBub3QgYmUgZmlyZWQgb24gYSBzbG90IGVsZW1lbnQgaWYgdGhlIGFzc2ln
bmVkIG5vZGVzIGNoYW5nZWQgYmVmb3JlIHRoZSBzbG90IHdhcyBpbnNlcnRlZCcpOworICAgICAg
ICAgICAgaG9zdC5yZW1vdmVDaGlsZChob3N0LmZpcnN0Q2hpbGQpOworICAgICAgICB9KTsKKwor
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3Quc3RlcChm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudENvdW50LCAx
LAorICAgICAgICAgICAgICAgICAgICAnc2xvdGNoYW5nZSBtdXN0IGJlIGZpcmVkIGV4YWN0bHkg
b25jZSBhZnRlciB0aGUgYXNzaWduZWQgbm9kZXMgY2hhbmdlIG9uIGEgc2xvdCB3aGlsZSB0aGUg
c2xvdCBlbGVtZW50IHdhcyBpbiB0aGUgdHJlZScpOworICAgICAgICAgICAgICAgIHNsb3QucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZChzbG90KTsKKyAgICAgICAgICAgICAgICBob3N0LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CisgICAgICAgICAgICB9KTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhldmVudENvdW50LCAxLAorICAgICAgICAgICAgICAgICAgICAnc2xvdGNoYW5n
ZSBtdXN0IG5vdCBiZSBmaXJlZCBvbiBhIHNsb3QgZWxlbWVudCBpZiB0aGUgYXNzaWduZWQgbm9k
ZXMgY2hhbmdlZCBhZnRlciB0aGUgc2xvdCB3YXMgcmVtb3ZlZCcpOworICAgICAgICAgICAgICAg
IHRlc3QuZG9uZSgpOworICAgICAgICAgICAgfSwgMSk7CisgICAgICAgIH0sIDEpOworICAgIH0s
IDEpOworfQorCit0ZXN0U2xvdGNoYW5nZURvZXNOb3RGaXJlRm9yTXV0YXRpb25CZWZvcmVPckFm
dGVyU2xvdFdhc1ByZXNlbnQoJ29wZW4nLCB0cnVlKTsKK3Rlc3RTbG90Y2hhbmdlRG9lc05vdEZp
cmVGb3JNdXRhdGlvbkJlZm9yZU9yQWZ0ZXJTbG90V2FzUHJlc2VudCgnY2xvc2VkJywgdHJ1ZSk7
Cit0ZXN0U2xvdGNoYW5nZURvZXNOb3RGaXJlRm9yTXV0YXRpb25CZWZvcmVPckFmdGVyU2xvdFdh
c1ByZXNlbnQoJ29wZW4nLCBmYWxzZSk7Cit0ZXN0U2xvdGNoYW5nZURvZXNOb3RGaXJlRm9yTXV0
YXRpb25CZWZvcmVPckFmdGVyU2xvdFdhc1ByZXNlbnQoJ2Nsb3NlZCcsIGZhbHNlKTsKKworZnVu
Y3Rpb24gdGVzdFNsb3RjaGFuZ2VGaXJlc09uVHJhbnNpZW50bHlQcmVzZW50U2xvdChtb2RlLCBj
b25uZWN0ZWRUb0RvY3VtZW50KQoreworICAgIHZhciB0ZXN0ID0gYXN5bmNfdGVzdCgnc2xvdGNo
YW5nZSBldmVudCBtdXN0IGZpcmUgb24gYSBzbG90IGVsZW1lbnQgaW5zaWRlICcKKyAgICAgICAg
KyB0cmVlTmFtZShtb2RlLCBjb25uZWN0ZWRUb0RvY3VtZW50KQorICAgICAgICArICcgZXZlbiBp
ZiB0aGUgc2xvdCB3YXMgcmVtb3ZlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgYXNzaWduZWQgbm9k
ZXMgd2VyZSBtdXRhdGVkJyk7CisKKyAgICB2YXIgaG9zdDsKKyAgICB2YXIgc2xvdDsKKyAgICB2
YXIgYW5vdGhlclNsb3Q7CisgICAgdmFyIHNsb3RFdmVudENvdW50ID0gMDsKKyAgICB2YXIgYW5v
dGhlclNsb3RFdmVudENvdW50ID0gMDsKKworICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7Cisg
ICAgICAgIGhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgaWYg
KGNvbm5lY3RlZFRvRG9jdW1lbnQpCisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGhvc3QpOworCisgICAgICAgIHZhciBzaGFkb3dSb290ID0gaG9zdC5hdHRhY2hTaGFkb3co
eydtb2RlJzogbW9kZX0pOworICAgICAgICBzbG90ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
c2xvdCcpOworICAgICAgICBzbG90Lm5hbWUgPSAnc29tZVNsb3QnOworICAgICAgICBzbG90LmFk
ZEV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAg
ICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhldmVudC50YXJnZXQsIHNsb3QsICdzbG90Y2hhbmdlIGV2ZW50XCdzIHRhcmdldCBtdXN0IGJl
IHRoZSBzbG90IGVsZW1lbnQnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc2xvdEV2
ZW50Q291bnQrKzsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYW5vdGhlclNsb3QgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzbG90Jyk7CisgICAgICAgIGFub3RoZXJTbG90Lm5hbWUgPSAnc29t
ZVNsb3QnOworICAgICAgICBhbm90aGVyU2xvdC5hZGRFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdl
JywgZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgICAgICB0ZXN0LnN0ZXAoZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQudGFyZ2V0LCBhbm90aGVyU2xv
dCwgJ3Nsb3RjaGFuZ2UgZXZlbnRcJ3MgdGFyZ2V0IG11c3QgYmUgdGhlIHNsb3QgZWxlbWVudCcp
OworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBhbm90aGVyU2xvdEV2ZW50Q291bnQrKzsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChzbG90KTsKKwor
ICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICAg
ICAgc3Bhbi5zbG90ID0gJ3NvbWVTbG90JzsKKyAgICAgICAgaG9zdC5hcHBlbmRDaGlsZChzcGFu
KTsKKworICAgICAgICBzaGFkb3dSb290LnJlbW92ZUNoaWxkKHNsb3QpOworICAgICAgICBzaGFk
b3dSb290LmFwcGVuZENoaWxkKGFub3RoZXJTbG90KTsKKworICAgICAgICB2YXIgc3BhbiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICAgICAgc3Bhbi5zbG90ID0gJ3NvbWVT
bG90JzsKKyAgICAgICAgaG9zdC5hcHBlbmRDaGlsZChzcGFuKTsKKworICAgICAgICBzaGFkb3dS
b290LnJlbW92ZUNoaWxkKGFub3RoZXJTbG90KTsKKworICAgICAgICBhc3NlcnRfZXF1YWxzKHNs
b3RFdmVudENvdW50LCAwLCAnc2xvdGNoYW5nZSBldmVudCBtdXN0IG5vdCBiZSBmaXJlZCBzeW5j
aHJvbm91c2x5Jyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYW5vdGhlclNsb3RFdmVudENvdW50
LCAwLCAnc2xvdGNoYW5nZSBldmVudCBtdXN0IG5vdCBiZSBmaXJlZCBzeW5jaHJvbm91c2x5Jyk7
CisgICAgfSk7CisKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVzdC5z
dGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoc2xvdEV2ZW50Q291
bnQsIDEsCisgICAgICAgICAgICAgICAgJ3Nsb3RjaGFuZ2UgbXVzdCBiZSBmaXJlZCBvbiBhIHNs
b3QgZWxlbWVudCBpZiB0aGUgYXNzaWduZWQgbm9kZXMgY2hhbmdlZCB3aGlsZSB0aGUgc2xvdCB3
YXMgcHJlc2VudCcpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhbm90aGVyU2xvdEV2ZW50
Q291bnQsIDEsCisgICAgICAgICAgICAgICAgJ3Nsb3RjaGFuZ2UgbXVzdCBiZSBmaXJlZCBvbiBh
IHNsb3QgZWxlbWVudCBpZiB0aGUgYXNzaWduZWQgbm9kZXMgY2hhbmdlZCB3aGlsZSB0aGUgc2xv
dCB3YXMgcHJlc2VudCcpOworICAgICAgICB9KTsKKyAgICAgICAgdGVzdC5kb25lKCk7CisgICAg
fSwgMSk7Cit9CisKK3Rlc3RTbG90Y2hhbmdlRmlyZXNPblRyYW5zaWVudGx5UHJlc2VudFNsb3Qo
J29wZW4nLCB0cnVlKTsKK3Rlc3RTbG90Y2hhbmdlRmlyZXNPblRyYW5zaWVudGx5UHJlc2VudFNs
b3QoJ2Nsb3NlZCcsIHRydWUpOwordGVzdFNsb3RjaGFuZ2VGaXJlc09uVHJhbnNpZW50bHlQcmVz
ZW50U2xvdCgnb3BlbicsIGZhbHNlKTsKK3Rlc3RTbG90Y2hhbmdlRmlyZXNPblRyYW5zaWVudGx5
UHJlc2VudFNsb3QoJ2Nsb3NlZCcsIGZhbHNlKTsKKworZnVuY3Rpb24gdGVzdFNsb3RjaGFuZ2VG
aXJlc09uSW5uZXJIVE1MKG1vZGUsIGNvbm5lY3RlZFRvRG9jdW1lbnQpCit7CisgICAgdmFyIHRl
c3QgPSBhc3luY190ZXN0KCdzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBhIHNsb3QgZWxl
bWVudCBpbnNpZGUgJworICAgICAgICArIHRyZWVOYW1lKG1vZGUsIGNvbm5lY3RlZFRvRG9jdW1l
bnQpCisgICAgICAgICsgJyB3aGVuIGlubmVySFRNTCBtb2RpZmllcyB0aGUgY2hpbGRyZW4gb2Yg
dGhlIHNoYWRvdyBob3N0Jyk7CisKKyAgICB2YXIgaG9zdDsKKyAgICB2YXIgZGVmYXVsdFNsb3Q7
CisgICAgdmFyIG5hbWVkU2xvdDsKKyAgICB2YXIgZGVmYXVsdFNsb3RFdmVudENvdW50ID0gMDsK
KyAgICB2YXIgbmFtZWRTbG90RXZlbnRDb3VudCA9IDA7CisKKyAgICB0ZXN0LnN0ZXAoZnVuY3Rp
b24gKCkgeworICAgICAgICBob3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgICAgIGlmIChjb25uZWN0ZWRUb0RvY3VtZW50KQorICAgICAgICAgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChob3N0KTsKKworICAgICAgICB2YXIgc2hhZG93Um9vdCA9IGhvc3QuYXR0
YWNoU2hhZG93KHsnbW9kZSc6IG1vZGV9KTsKKyAgICAgICAgZGVmYXVsdFNsb3QgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzbG90Jyk7CisgICAgICAgIGRlZmF1bHRTbG90LmFkZEV2ZW50TGlz
dGVuZXIoJ3Nsb3RjaGFuZ2UnLCBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgICAgIHRlc3Qu
c3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC50
YXJnZXQsIGRlZmF1bHRTbG90LCAnc2xvdGNoYW5nZSBldmVudFwncyB0YXJnZXQgbXVzdCBiZSB0
aGUgc2xvdCBlbGVtZW50Jyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGRlZmF1bHRT
bG90RXZlbnRDb3VudCsrOworICAgICAgICB9KTsKKworICAgICAgICBuYW1lZFNsb3QgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdzbG90Jyk7CisgICAgICAgIG5hbWVkU2xvdC5uYW1lID0gJ3Nv
bWVTbG90JzsKKyAgICAgICAgbmFtZWRTbG90LmFkZEV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2Un
LCBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC50YXJnZXQsIG5hbWVkU2xvdCwg
J3Nsb3RjaGFuZ2UgZXZlbnRcJ3MgdGFyZ2V0IG11c3QgYmUgdGhlIHNsb3QgZWxlbWVudCcpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBuYW1lZFNsb3RFdmVudENvdW50Kys7CisgICAg
ICAgIH0pOworICAgICAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKG5hbWVkU2xvdCk7CisgICAg
ICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoZGVmYXVsdFNsb3QpOworICAgICAgICBob3N0Lmlu
bmVySFRNTCA9ICdmb28gPGI+YmFyPC9iPic7CisKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkZWZh
dWx0U2xvdEV2ZW50Q291bnQsIDAsICdzbG90Y2hhbmdlIGV2ZW50IG11c3Qgbm90IGJlIGZpcmVk
IHN5bmNocm9ub3VzbHknKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhuYW1lZFNsb3RFdmVudENv
dW50LCAwLCAnc2xvdGNoYW5nZSBldmVudCBtdXN0IG5vdCBiZSBmaXJlZCBzeW5jaHJvbm91c2x5
Jyk7CisgICAgfSk7CisKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVz
dC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVmYXVsdFNs
b3RFdmVudENvdW50LCAxLAorICAgICAgICAgICAgICAgICdzbG90Y2hhbmdlIG11c3QgYmUgZmly
ZWQgb24gYSBzbG90IGVsZW1lbnQgaWYgdGhlIGFzc2lnbmVkIG5vZGVzIGFyZSBjaGFuZ2VkIGJ5
IGlubmVySFRNTCcpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhuYW1lZFNsb3RFdmVudENv
dW50LCAwLAorICAgICAgICAgICAgICAgICdzbG90Y2hhbmdlIG11c3Qgbm90IGJlIGZpcmVkIG9u
IGEgc2xvdCBlbGVtZW50IGlmIHRoZSBhc3NpZ25lZCBub2RlcyBhcmUgbm90IGNoYW5nZWQgYnkg
aW5uZXJIVE1MJyk7CisgICAgICAgICAgICBob3N0LmlubmVySFRNTCA9ICdiYXonOworICAgICAg
ICB9KTsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0ZXN0
LnN0ZXAoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVmYXVs
dFNsb3RFdmVudENvdW50LCAyLAorICAgICAgICAgICAgICAgICAgICAnc2xvdGNoYW5nZSBtdXN0
IGJlIGZpcmVkIG9uIGEgc2xvdCBlbGVtZW50IGlmIHRoZSBhc3NpZ25lZCBub2RlcyBhcmUgY2hh
bmdlZCBieSBpbm5lckhUTUwnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKG5hbWVk
U2xvdEV2ZW50Q291bnQsIDAsCisgICAgICAgICAgICAgICAgICAgICdzbG90Y2hhbmdlIG11c3Qg
bm90IGJlIGZpcmVkIG9uIGEgc2xvdCBlbGVtZW50IGlmIHRoZSBhc3NpZ25lZCBub2RlcyBhcmUg
bm90IGNoYW5nZWQgYnkgaW5uZXJIVE1MJyk7CisgICAgICAgICAgICAgICAgaG9zdC5pbm5lckhU
TUwgPSAnJzsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZWZhdWx0U2xvdEV2ZW50Q291bnQsIDMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAnc2xvdGNoYW5nZSBtdXN0IGJlIGZpcmVkIG9uIGEgc2xvdCBl
bGVtZW50IGlmIHRoZSBhc3NpZ25lZCBub2RlcyBhcmUgY2hhbmdlZCBieSBpbm5lckhUTUwnKTsK
KyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhuYW1lZFNsb3RFdmVudENvdW50LCAw
LAorICAgICAgICAgICAgICAgICAgICAgICAgJ3Nsb3RjaGFuZ2UgbXVzdCBub3QgYmUgZmlyZWQg
b24gYSBzbG90IGVsZW1lbnQgaWYgdGhlIGFzc2lnbmVkIG5vZGVzIGFyZSBub3QgY2hhbmdlZCBi
eSBpbm5lckhUTUwnKTsKKyAgICAgICAgICAgICAgICAgICAgaG9zdC5pbm5lckhUTUwgPSAnPGIg
c2xvdD0ic29tZVNsb3QiPmNvbnRlbnQ8L2I+JzsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
dGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoZGVmYXVsdFNsb3RFdmVudENvdW50LCAzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdzbG90Y2hhbmdlIG11c3Qgbm90IGJlIGZpcmVkIG9uIGEgc2xvdCBlbGVtZW50IGlmIHRo
ZSBhc3NpZ25lZCBub2RlcyBhcmUgbm90IGNoYW5nZWQgYnkgaW5uZXJIVE1MJyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKG5hbWVkU2xvdEV2ZW50Q291bnQsIDEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nsb3RjaGFuZ2UgbXVzdCBub3QgYmUgZmlyZWQg
b24gYSBzbG90IGVsZW1lbnQgaWYgdGhlIGFzc2lnbmVkIG5vZGVzIGFyZSBjaGFuZ2VkIGJ5IGlu
bmVySFRNTCcpOworICAgICAgICAgICAgICAgICAgICAgICAgaG9zdC5pbm5lckhUTUwgPSAnJzsK
KyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB0ZXN0IHdv
dWxkIGZhaWwgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gYmVjYXVzZSB3ZSBjYW4ndCB0
ZWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hldGhlciBhIHRleHQgbm9kZSB3
YXMgcmVtb3ZlZCBpbiBBbGxDaGlsZHJlblJlbW92ZWQgb3Igbm90LgorLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZWZhdWx0U2xvdEV2ZW50Q291bnQsIDMsCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nsb3RjaGFuZ2UgbXVzdCBub3QgYmUg
ZmlyZWQgb24gYSBzbG90IGVsZW1lbnQgaWYgdGhlIGFzc2lnbmVkIG5vZGVzIGFyZSBub3QgY2hh
bmdlZCBieSBpbm5lckhUTUwnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKG5hbWVkU2xvdEV2ZW50Q291bnQsIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdzbG90Y2hhbmdlIG11c3Qgbm90IGJlIGZpcmVkIG9uIGEgc2xvdCBlbGVtZW50IGlm
IHRoZSBhc3NpZ25lZCBub2RlcyBhcmUgY2hhbmdlZCBieSBpbm5lckhUTUwnKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdC5kb25lKCk7
CisgICAgICAgICAgICAgICAgICAgIH0sIDEpOworICAgICAgICAgICAgICAgIH0sIDEpOworICAg
ICAgICAgICAgfSwgMSk7CisgICAgICAgIH0sIDEpOworICAgIH0sIDEpOworfQorCit0ZXN0U2xv
dGNoYW5nZUZpcmVzT25Jbm5lckhUTUwoJ29wZW4nLCB0cnVlKTsKK3Rlc3RTbG90Y2hhbmdlRmly
ZXNPbklubmVySFRNTCgnY2xvc2VkJywgdHJ1ZSk7Cit0ZXN0U2xvdGNoYW5nZUZpcmVzT25Jbm5l
ckhUTUwoJ29wZW4nLCBmYWxzZSk7Cit0ZXN0U2xvdGNoYW5nZUZpcmVzT25Jbm5lckhUTUwoJ2Ns
b3NlZCcsIGZhbHNlKTsKKworZnVuY3Rpb24gdGVzdFNsb3RjaGFuZ2VGaXJlc1doZW5OZXN0ZWRT
bG90Q2hhbmdlKG1vZGUsIGNvbm5lY3RlZFRvRG9jdW1lbnQpCit7CisgICAgdmFyIHRlc3QgPSBh
c3luY190ZXN0KCdzbG90Y2hhbmdlIGV2ZW50IG11c3QgZmlyZSBvbiBhIHNsb3QgZWxlbWVudCBp
bnNpZGUgJworICAgICAgICArIHRyZWVOYW1lKG1vZGUsIGNvbm5lY3RlZFRvRG9jdW1lbnQpCisg
ICAgICAgICsgJyB3aGVuIG5lc3RlZCBzbG90c1wncyBjb250ZW50cyBjaGFuZ2UnKTsKKworICAg
IHZhciBvdXRlckhvc3Q7CisgICAgdmFyIGlubmVySG9zdDsKKyAgICB2YXIgb3V0ZXJTbG90Owor
ICAgIHZhciBpbm5lclNsb3Q7CisgICAgdmFyIG91dGVyU2xvdEV2ZW50Q291bnQgPSAwOworICAg
IHZhciBpbm5lclNsb3RFdmVudENvdW50ID0gMDsKKworICAgIHRlc3Quc3RlcChmdW5jdGlvbiAo
KSB7CisgICAgICAgIG91dGVySG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgICAgICBpZiAoY29ubmVjdGVkVG9Eb2N1bWVudCkKKyAgICAgICAgICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQob3V0ZXJIb3N0KTsKKworICAgICAgICB2YXIgb3V0ZXJTaGFkb3cgPSBv
dXRlckhvc3QuYXR0YWNoU2hhZG93KHsnbW9kZSc6IG1vZGV9KTsKKyAgICAgICAgb3V0ZXJTaGFk
b3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICAgICAg
b3V0ZXJTbG90ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2xvdCcpOworICAgICAgICBvdXRl
clNsb3QuYWRkRXZlbnRMaXN0ZW5lcignc2xvdGNoYW5nZScsIGZ1bmN0aW9uIChldmVudCkgewor
ICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgICAgICB0ZXN0LnN0
ZXAoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQudGFy
Z2V0LCBvdXRlclNsb3QsICdzbG90Y2hhbmdlIGV2ZW50XCdzIHRhcmdldCBtdXN0IGJlIHRoZSBz
bG90IGVsZW1lbnQnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgb3V0ZXJTbG90RXZl
bnRDb3VudCsrOworICAgICAgICB9KTsKKworICAgICAgICBpbm5lckhvc3QgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgaW5uZXJIb3N0LmFwcGVuZENoaWxkKG91dGVy
U2xvdCk7CisgICAgICAgIG91dGVyU2hhZG93LmFwcGVuZENoaWxkKGlubmVySG9zdCk7CisKKyAg
ICAgICAgdmFyIGlubmVyU2hhZG93ID0gaW5uZXJIb3N0LmF0dGFjaFNoYWRvdyh7J21vZGUnOiBt
b2RlfSk7CisgICAgICAgIGlubmVyU2hhZG93LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NwYW4nKSk7CisgICAgICAgIGlubmVyU2xvdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3Nsb3QnKTsKKyAgICAgICAgaW5uZXJTbG90LmFkZEV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFu
Z2UnLCBmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlv
bigpOworICAgICAgICAgICAgdGVzdC5zdGVwKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKGV2ZW50LnRhcmdldCwgaW5uZXJTbG90LCAnc2xvdGNoYW5nZSBldmVu
dFwncyB0YXJnZXQgbXVzdCBiZSB0aGUgc2xvdCBlbGVtZW50Jyk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIGlubmVyU2xvdEV2ZW50Q291bnQrKzsKKyAgICAgICAgfSk7CisgICAgICAg
IGlubmVyU2hhZG93LmFwcGVuZENoaWxkKGlubmVyU2xvdCk7CisKKyAgICAgICAgb3V0ZXJIb3N0
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSk7CisKKyAgICAgICAg
YXNzZXJ0X2VxdWFscyhpbm5lclNsb3RFdmVudENvdW50LCAwLCAnc2xvdGNoYW5nZSBldmVudCBt
dXN0IG5vdCBiZSBmaXJlZCBzeW5jaHJvbm91c2x5Jyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
b3V0ZXJTbG90RXZlbnRDb3VudCwgMCwgJ3Nsb3RjaGFuZ2UgZXZlbnQgbXVzdCBub3QgYmUgZmly
ZWQgc3luY2hyb25vdXNseScpOworICAgIH0pOworCisgICAgc2V0VGltZW91dChmdW5jdGlvbiAo
KSB7CisgICAgICAgIHRlc3Quc3RlcChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKGlubmVyU2xvdEV2ZW50Q291bnQsIDEsCisgICAgICAgICAgICAgICAgJ3Nsb3RjaGFu
Z2UgbXVzdCBiZSBmaXJlZCBvbiBhIHNsb3QgZWxlbWVudCBpZiB0aGUgYXNzaWduZWQgbm9kZXMg
Y2hhbmdlZCcpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhvdXRlclNsb3RFdmVudENvdW50
LCAxLAorICAgICAgICAgICAgICAgICdzbG90Y2hhbmdlIG11c3QgYmUgZmlyZWQgb24gYSBzbG90
IGVsZW1lbnQgaWYgdGhlIGFzc2lnbmVkIG5vZGVzIG9mIGFuIGlubmVyIHNsb3QgY2hhbmdlZCcp
OworICAgICAgICB9KTsKKyAgICAgICAgdGVzdC5kb25lKCk7CisgICAgfSwgMSk7Cit9CisKK3Rl
c3RTbG90Y2hhbmdlRmlyZXNXaGVuTmVzdGVkU2xvdENoYW5nZSgnb3BlbicsIHRydWUpOwordGVz
dFNsb3RjaGFuZ2VGaXJlc1doZW5OZXN0ZWRTbG90Q2hhbmdlKCdjbG9zZWQnLCB0cnVlKTsKK3Rl
c3RTbG90Y2hhbmdlRmlyZXNXaGVuTmVzdGVkU2xvdENoYW5nZSgnb3BlbicsIGZhbHNlKTsKK3Rl
c3RTbG90Y2hhbmdlRmlyZXNXaGVuTmVzdGVkU2xvdENoYW5nZSgnY2xvc2VkJywgZmFsc2UpOwor
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>