<?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>11633</bug_id>
          
          <creation_ts>2006-11-17 09:56:27 -0800</creation_ts>
          <short_desc>Implement XMLDocument properties xmlEncoding, xmlVersion, xmlStandalone</short_desc>
          <delta_ts>2019-02-06 09:03:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>10489</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jesse Costello-Good">jesse</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>ap</cc>
    
    <cc>cdumez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>45627</commentid>
    <comment_count>0</comment_count>
    <who name="Jesse Costello-Good">jesse</who>
    <bug_when>2006-11-17 09:56:27 -0800</bug_when>
    <thetext>For parity with Firefox:

var req = new XMLHttpRequest();
req.open(&quot;GET&quot;, &quot;test.xml&quot;, false);
req.overrideMimeType(&quot;text/xml&quot;);
req.send(null);

var doc = req.responseXML;
assertEquals(&quot;utf-8&quot;, doc.xmlEncoding.toLowerCase());
assertEquals(&quot;1.0&quot;, doc.xmlVersion);
assertEquals(&quot;yes&quot;, doc.xmlStandalone);

Where test.xml is:
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; standalone=&quot;yes&quot;?&gt;
&lt;data/&gt; </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45630</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-11-17 10:28:59 -0800</bug_when>
    <thetext>Once we get xmlEncoding, we should start using it in XMLHttpRequest (&quot;If the data is a Document, it MUST be serialized using the encoding given by data.xmlEncoding, if specified and supported, or UTF-8 otherwise&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45465</commentid>
    <comment_count>2</comment_count>
    <who name="Jesse Costello-Good">jesse</who>
    <bug_when>2006-11-17 22:49:56 -0800</bug_when>
    <thetext>XMLDocument.cloneNode() seems to always return null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45466</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-11-17 23:36:28 -0800</bug_when>
    <thetext>Could you please file a separate bug for cloneNode()? It isn&apos;t related to XML declaration properties, so it&apos;s unlikely that they will be implemented/fixed together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44986</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-11-19 06:52:03 -0800</bug_when>
    <thetext>Filed &lt;https://bugzilla.mozilla.org/show_bug.cgi?id=361198&gt; for xmlEncoding behavior in Firefox, which seems wrong to me. XMLHttpRequest behavior isn&apos;t clear either - Firefox doesn&apos;t do what the spec says, and I&apos;m not sure what we should do; asked on the webapi WG mailing list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44889</commentid>
    <comment_count>5</comment_count>
      <attachid>11576</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-11-19 14:53:02 -0800</bug_when>
    <thetext>Created attachment 11576
proposed patch

The patch doesn&apos;t include changes to dom/xhtml/level3/core results - svn-create-patch chokes on these, probably because of the UTF-16 test that I re-added.

One thing I don&apos;t like in this patch is that I had to add wk_ucfirst to both JS and ObjC generators - I couldn&apos;t make it work when it was in CodeGenerator.pm (calling it as $codeGenerator-&gt;wk_ucfirst resulted in something weird like &quot;CodeGenerator-&gt;HASH(...) being printed to the output). Leaving this to someone more proficient with Perl for future cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44918</commentid>
    <comment_count>6</comment_count>
      <attachid>11576</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-11-20 10:35:30 -0800</bug_when>
    <thetext>Comment on attachment 11576
proposed patch

marking r- for reasons discussed in IRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44921</commentid>
    <comment_count>7</comment_count>
      <attachid>11584</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-11-20 10:39:58 -0800</bug_when>
    <thetext>Created attachment 11584
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44923</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-11-20 11:11:04 -0800</bug_when>
    <thetext>Committed revision 17859.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43981</commentid>
    <comment_count>9</comment_count>
    <who name="Jesse Costello-Good">jesse</who>
    <bug_when>2006-11-28 10:12:37 -0800</bug_when>
    <thetext>Thanks to the Safari team for being so responsive regarding requests for better
advanced AJAX support. Safari is quickly becoming a 1st class AJAX platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502937</commentid>
    <comment_count>10</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:03:16 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11576</attachid>
            <date>2006-11-19 14:53:02 -0800</date>
            <delta_ts>2006-11-20 10:39:58 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>11633r1_patch.txt</filename>
            <type>text/plain</type>
            <size>24561</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE3ODU0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDYtMTEtMjAgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjMz
CisgICAgICAgIEltcGxlbWVudCBYTUxEb2N1bWVudCBwcm9wZXJ0aWVzIHhtbEVuY29kaW5nLCB4
bWxWZXJzaW9uLCB4bWxTdGFuZGFsb25lCisKKyAgICAgICAgKiBkb20veGh0bWwvbGV2ZWwzL2Nv
cmUvZG9jdW1lbnRnZXR4bWxlbmNvZGluZzAxLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBkb20v
eGh0bWwvbGV2ZWwzL2NvcmUvZG9jdW1lbnRnZXR4bWxlbmNvZGluZzAzLWV4cGVjdGVkLnR4dAor
ICAgICAgICAqIGRvbS94aHRtbC9sZXZlbDMvY29yZS9kb2N1bWVudGdldHhtbHN0YW5kYWxvbmUw
NC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3VtZW50
Z2V0eG1sdmVyc2lvbjAxLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBkb20veGh0bWwvbGV2ZWwz
L2NvcmUvZG9jdW1lbnRnZXR4bWx2ZXJzaW9uMDItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGRv
bS94aHRtbC9sZXZlbDMvY29yZS9kb2N1bWVudGdldHhtbHZlcnNpb24wMy1leHBlY3RlZC50eHQ6
CisgICAgICAgIFRoZXNlIG5vdyBwYXNzLgorCisgICAgICAgICogZG9tL3hodG1sL2xldmVsMy9j
b3JlL2RvY3VtZW50Z2V0eG1sZW5jb2RpbmcwMy54aHRtbDogUmUtYWRkZWQgYSBjb3JyZWN0IHRl
c3QuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbC1lbmNvZGluZy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
eG1sLWVuY29kaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvcmVzb3VyY2VzL3htbC1lbmNvZGluZy54bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3Bvc3QtZWNoby1hcy11dGYtOC5jZ2k6IEFk
ZGVkLgorICAgICAgICBUZXN0IGhvdyB4bWxFbmNvZGluZyBpbnRlcmFjdHMgd2l0aCBYTUxIdHRw
UmVxdWVzdC4KKwogMjAwNi0xMS0xOSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmVtb3ZlZCBwYXJ0cyBvZiBhbiBpbmNvcnJlY3RseSBjb21taXR0ZWQg
dGVzdCwgdG8gYmUgcmUtYWRkZWQgbGF0ZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3htbC1lbmNvZGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWwtZW5jb2RpbmctZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC94bWwtZW5jb2RpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkg
QEAKK1Rlc3QgWE1MSHR0cFJlcXVlc3QgYW5kIGRvY3VtZW50LnhtbEVuY29kaW5nIGludGVyYWN0
aW9uLgorCitUaGUgcmVxdWVzdCBib2R5IHNob3VsZCBjb250YWluIHRoZSB3b3JkICLQn9GA0L7Q
stC10YDQutCwIi4KKworcmVzcG9uc2VYTUwueG1sRW5jb2Rpbmc6IHdpbmRvd3MtMTI1MQorcmVz
cG9uc2VYTUwueG1sVmVyc2lvbjogMS4wCityZXNwb25zZVhNTC54bWxTdGFuZGFsb25lOiB0cnVl
CitSZXF1ZXN0IGJvZHk6IDxkb2M+0J/RgNC+0LLQtdGA0LrQsDwvZG9jPgorCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbC1lbmNv
ZGluZy1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4
dC9wbGFpbgpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWwtZW5jb2RpbmcuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbC1lbmNvZGluZy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC94bWwtZW5jb2RpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorPGh0bWw+
Cis8aGVhZD4KKzx0aXRsZT5UZXN0IFhNTEh0dHBSZXF1ZXN0IGFuZCBkb2N1bWVudC54bWxFbmNv
ZGluZyBpbnRlcmFjdGlvbi48L3RpdGxlPgorPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCI+Cis8Ym9keT4KKzxwPlRlc3QgWE1M
SHR0cFJlcXVlc3QgYW5kIGRvY3VtZW50LnhtbEVuY29kaW5nIGludGVyYWN0aW9uLjwvcD4KKzxw
PlRoZSByZXF1ZXN0IGJvZHkgc2hvdWxkIGNvbnRhaW4gdGhlIHdvcmQgItCf0YDQvtCy0LXRgNC6
0LAiLjwvcD4KKzxzY3JpcHQ+CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICB2YXIg
Y29uc29sZV9tZXNzYWdlcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInVsIik7CisgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xlX21lc3NhZ2VzKTsKKyAgICAKKyAgICBmdW5j
dGlvbiBsb2cobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgICAgIGNvbnNvbGVfbWVzc2FnZXMuYXBwZW5kQ2hp
bGQoaXRlbSk7CisgICAgfQorICAgIAorICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwor
ICAgIHJlcS5vcGVuKCdHRVQnLCAncmVzb3VyY2VzL3htbC1lbmNvZGluZy54bWwnLCBmYWxzZSk7
CisgICAgcmVxLnNlbmQobnVsbCk7CisKKyAgICB2YXIgcmVzcG9uc2VYTUwgPSByZXEucmVzcG9u
c2VYTUw7CisgICAgbG9nKCJyZXNwb25zZVhNTC54bWxFbmNvZGluZzogIiArIHJlc3BvbnNlWE1M
LnhtbEVuY29kaW5nKTsKKyAgICBsb2coInJlc3BvbnNlWE1MLnhtbFZlcnNpb246ICIgKyByZXNw
b25zZVhNTC54bWxWZXJzaW9uKTsKKyAgICBsb2coInJlc3BvbnNlWE1MLnhtbFN0YW5kYWxvbmU6
ICIgKyByZXNwb25zZVhNTC54bWxTdGFuZGFsb25lKTsKKworICAgIHJlcS5vcGVuKCdQT1NUJywg
J3Jlc291cmNlcy9wb3N0LWVjaG8tYXMtdXRmLTguY2dpJywgZmFsc2UpOworICAgIHJlcS5zZW5k
KHJlc3BvbnNlWE1MKTsKKyAgICBsb2coIlJlcXVlc3QgYm9keTogIiArIHJlcS5yZXNwb25zZVRl
eHQpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1sLWVuY29kaW5nLmh0bWwK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9odG1sCgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvcG9zdC1lY2hvLWFz
LXV0Zi04LmNnaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3Jlc291cmNlcy9wb3N0LWVjaG8tYXMtdXRmLTguY2dpCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvcG9zdC1lY2hv
LWFzLXV0Zi04LmNnaQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorIyEvdXNyL2Jpbi9w
ZXJsIC13CisjdXNlIENHSSAoKTsKKworcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbjtj
aGFyc2V0PXV0Zi04XG5cbiI7CisKK2lmICgkRU5WeydSRVFVRVNUX01FVEhPRCd9IGVxICJQT1NU
IikgeworICAgIHJlYWQoU1RESU4sICRyZXF1ZXN0LCAkRU5WeydDT05URU5UX0xFTkdUSCd9KQor
ICAgICAgICAgICAgICAgIHx8IGRpZSAiQ291bGQgbm90IGdldCBxdWVyeVxuIjsKKyMgICAgcHJp
bnQgQ0dJOjplc2NhcGUoJHJlcXVlc3QpOworICAgICBwcmludCAkcmVxdWVzdDsKK30gZWxzZSB7
CisgICAgcHJpbnQgIldyb25nIG1ldGhvZDogIiAuICRFTlZ7J1JFUVVFU1RfTUVUSE9EJ30gLiAi
XG4iOworfSAKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvcmVzb3VyY2VzL3Bvc3QtZWNoby1hcy11dGYtOC5jZ2kKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpO
YW1lOiBzdm46ZXhlY3V0YWJsZQogICArICoKTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMveG1s
LWVuY29kaW5nLnhtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3Jlc291cmNlcy94bWwtZW5jb2RpbmcueG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMveG1sLWVuY29kaW5n
LnhtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJ3aW5kb3dzLTEyNTEiIHN0YW5kYWxvbmU9InllcyI/PgorPGRvYz7P8O7i5fDq4Dwv
ZG9jPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9yZXNvdXJjZXMveG1sLWVuY29kaW5nLnhtbApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjpt
aW1lLXR5cGUKICAgKyB0ZXh0L3htbAoKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzg1MykKKysrIFdlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMDYtMTEtMjAgIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExNjMzCisgICAgICAgIEltcGxlbWVudCBYTUxEb2N1bWVudCBwcm9wZXJ0aWVzIHht
bEVuY29kaW5nLCB4bWxWZXJzaW9uLCB4bWxTdGFuZGFsb25lCisKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRYTUxWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpzZXRYTUxTdGFuZGFsb25lKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp4bWxFbmNvZGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6eG1sVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
eG1sU3RhbmRhbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0WE1MRW5jb2Rp
bmcpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICogZG9tL1hNTFRva2Vu
aXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OnN0YXJ0RG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6c3RhcnREb2N1bWVudEhhbmRsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MVG9rZW5pemVyOjppbml0aWFsaXplUGFyc2VyQ29udGV4dCk6CisgICAgICAgIEFk
ZGVkIHN1cHBvcnQgZm9yIHRoZXNlIHByb3BlcnRpZXMsIGdldHRpbmcgdGhlbSBmcm9tIGFuIGxp
YnhtbDIgY29udGV4dC4KKworICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6SFRNTERvY3VtZW50KToKKyAgICAgICAgSFRNTERv
Y3VtZW50IGlzIHRoZSBvbmx5IGtpbmQgb2YgZG9jdW1lbnQgdGhhdCBkb2Vzbid0IGhhdmUgeG1s
VmVyc2lvbiBkZWZhdWx0IHRvICIxLjAiLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yT2JqQy5wbToKKyAgICAgICAgQWRkZWQgd2tfdWNmaXJzdCB0byBwcm9wZXJseSB1cHBlcmNh
c2UgeG1sVmVyc2lvbiBhbmQgeG1sU3RhbmRhbG9uZS4KKwogMjAwNi0xMS0xOSAgU2ltb24gSGF1
c21hbm4gIDxoYXVzbWFubkBrZGUub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFphY2suCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlz
aW9uIDE3ODUxKQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDcgQEAKICMgQ29weXJpZ2h0IChDKSAyMDA1IE5p
a29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogIyBDb3B5cmlnaHQgKEMpIDIwMDYg
QW5kZXJzIENhcmxzc29uIDxhbmRlcnNjYUBtYWMuY29tPgogIyBDb3B5cmlnaHQgKEMpIDIwMDYg
U2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisjIENvcHlyaWdodCAoQykgMjAw
NiBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3ZWJraXQub3JnPgogIyBDb3B5cmlnaHQgKEMpIDIw
MDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KICMKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtE
RSBwcm9qZWN0CkBAIC04NSw2ICs4NiwxNiBAQCBzdWIgbGVmdFNoaWZ0KCQkKSB7CiAgICAgcmV0
dXJuICgoJHZhbHVlIDw8ICRkaXN0YW5jZSkgJiAweEZGRkZGRkZGKTsKIH0KIAorIyBVcHBlcmNh
c2UgdGhlIGZpcnN0IGxldHRlciwgd2hpbGUgcmVzcGVjdGluZyBXZWJLaXQgc3R5bGUgZ3VpZGVs
aW5lcy4gCisjIEUuZy4sIHhtbEVuY29kaW5nIGJlY29tZXMgWE1MRW5jb2RpbmcsIGJ1dCB4bWxs
bGFuZyBiZWNvbWVzIFhtbGxhbmcuCitzdWIgd2tfdWNmaXJzdAoreworICAgIG15ICRwYXJhbSA9
IHNoaWZ0OworICAgIG15ICRyZXQgPSB1Y2ZpcnN0KCRwYXJhbSk7CisgICAgJHJldCA9fiBzL1ht
bC9YTUwvIGlmICRyZXQgPX4gL15YbWxbXmEtel0vOworICAgIHJldHVybiAkcmV0OworfQorCiAj
IFBhcmFtczogJ2RvbUNsYXNzJyBzdHJ1Y3QKIHN1YiBHZW5lcmF0ZUludGVyZmFjZQogewpAQCAt
MzM0LDcgKzM0NSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgICAgICAgICBteSAkdmFs
dWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8KICAgICAg
ICAgICAgICAgICAgICAgICA/ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAuICJDb25zdHJ1
Y3RvckF0dHJOdW0iCi0gICAgICAgICAgICAgICAgICAgICAgOiB1Y2ZpcnN0KCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+bmFtZSkgLiAiQXR0ck51bSI7CisgICAgICAgICAgICAgICAgICAgICAgOiB3
a191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAiQXR0ck51bSI7CiAgICAg
ICAgICAgICAkdmFsdWUgLj0gIiwgIiBpZiAoKCRpIDwgJG51bUF0dHJpYnV0ZXMgLSAxKSk7CiAg
ICAgICAgICAgICAkdmFsdWUgLj0gIiwgIiBpZiAoKCRpIGVxICRudW1BdHRyaWJ1dGVzIC0gMSkg
YW5kICgkbnVtRnVuY3Rpb25zIG5lIDApKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICR2YWx1ZSk7CkBAIC0zNTMsNyArMzY0LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAg
ICAgICAgICAgICRudW1DdXN0b21GdW5jdGlvbnMrKyBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9OwogCi0gICAgICAgICAgICBteSAkdmFsdWUg
PSB1Y2ZpcnN0KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKSAuICJGdW5jTnVtIjsKKyAgICAg
ICAgICAgIG15ICR2YWx1ZSA9IHdrX3VjZmlyc3QoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUp
IC4gIkZ1bmNOdW0iOwogICAgICAgICAgICAgJHZhbHVlIC49ICIsICIgaWYgKCRpIDwgJG51bUZ1
bmN0aW9ucyAtIDEpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgJHZhbHVlKTsK
ICAgICAgICAgfQpAQCAtMzY4LDcgKzM3OSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAg
ICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbSJ9KSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBLSlM6
OkpTVmFsdWUqICIgLiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiKEtKUzo6RXhlY1N0
YXRlKikgY29uc3Q7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+dHlwZSAh
fiAvXnJlYWRvbmx5LykgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHZvaWQgc2V0IiAuIHVjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAu
ICIoS0pTOjpFeGVjU3RhdGUqLCBLSlM6OkpTVmFsdWUqKTtcbiIpOworICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgc2V0IiAuIHdrX3VjZmlyc3QoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICIoS0pTOjpFeGVjU3RhdGUqLCBLSlM6OkpTVmFs
dWUqKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtNTA3LDcgKzUxOCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAg
ICAgIG15ICR2YWx1ZSA9ICRjbGFzc05hbWUgLiAiOjoiIC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPyAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiQ29uc3RydWN0b3JBdHRy
TnVtIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1Y2ZpcnN0KCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAiQXR0ck51bSIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiB3a191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+bmFtZSkgLiAiQXR0ck51bSIpOwogICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlcywgJHZh
bHVlKTsKIAogICAgICAgICAgICAgbXkgJHNwZWNpYWwgPSAiRG9udERlbGV0ZSI7CkBAIC01ODcs
NyArNTk4LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgbXkgJG5hbWUg
PSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgcHVzaChAaGFzaEtleXMsICRu
YW1lKTsKIAotICAgICAgICBteSAkdmFsdWUgPSAkY2xhc3NOYW1lIC4gIjo6IiAuIHVjZmlyc3Qo
JG5hbWUpIC4gIkZ1bmNOdW0iOworICAgICAgICBteSAkdmFsdWUgPSAkY2xhc3NOYW1lIC4gIjo6
IiAuIHdrX3VjZmlyc3QoJG5hbWUpIC4gIkZ1bmNOdW0iOwogICAgICAgICBwdXNoKEBoYXNoVmFs
dWVzLCAkdmFsdWUpOwogCiAgICAgICAgIG15ICRzcGVjaWFsID0gIkRvbnREZWxldGV8RnVuY3Rp
b24iOwpAQCAtNzQ2LDcgKzc1Nyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKIAogICAgICAg
ICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbSJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzZSAi
IC4gdWNmaXJzdCgkbmFtZSkgLiAiQXR0ck51bTpcbiIpOworICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGNhc2UgIiAuIHdrX3VjZmlyc3QoJG5hbWUpIC4gIkF0dHJOdW06
XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJu
ICRuYW1lKGV4ZWMpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKICAgICAgICAgICAgICAgICBteSAkY29u
c3RydWN0b3JUeXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+dHlwZSk7CkBAIC03NTUsMTAgKzc2NiwxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc2UgIiAu
ICRuYW1lIC4gIkNvbnN0cnVjdG9yQXR0ck51bTpcbiIpOwogICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6
OmdldENvbnN0cnVjdG9yKGV4ZWMpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2lmICghQHskYXR0
cmlidXRlLT5nZXR0ZXJFeGNlcHRpb25zfSkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGNhc2UgIiAuIHVjZmlyc3QoJG5hbWUpIC4gIkF0dHJOdW06XG4iKTsKKyAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXNlICIgLiB3a191Y2ZpcnN0
KCRuYW1lKSAuICJBdHRyTnVtOlxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZSwgImltcC0+JG5hbWUoKSIpIC4gIjtcbiIpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXNlICIgLiB1Y2ZpcnN0KCRu
YW1lKSAuICJBdHRyTnVtOiB7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBjYXNlICIgLiB3a191Y2ZpcnN0KCRuYW1lKSAuICJBdHRyTnVtOiB7XG4iKTsKICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
S0pTOjpKU1ZhbHVlKiByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZSwgImltcC0+JG5hbWUoZWMpIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKTsK
QEAgLTc5NSw4ICs4MDYsOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKIAogICAg
ICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ3VzdG9tIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGNhc2UgIiAuIHVjZmlyc3QoJG5hbWUpIC4gIkF0dHJOdW06IHtcbiIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNldCIg
LiB1Y2ZpcnN0KCRuYW1lKSAuICIoZXhlYywgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXNlICIgLiB3a191Y2ZpcnN0KCRuYW1l
KSAuICJBdHRyTnVtOiB7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICBzZXQiIC4gd2tfdWNmaXJzdCgkbmFtZSkgLiAiKGV4ZWMsIHZhbHVl
KTtcbiIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG15
ICRjb25zdHJ1Y3RvclR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMvQ29uc3RydWN0b3IkLy87CkBA
IC04MDksOSArODIwLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpZiAoaXNTYWZlU2NyaXB0
KGV4ZWMpKVxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgICAgIEpTT2JqZWN0OjpwdXQoZXhlYywgXCIkbmFtZVwiLCB2YWx1ZSk7XG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGNhc2UgIiAuIHVjZmlyc3QoJG5hbWUpIC4iQXR0ck51bTog
e1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBj
YXNlICIgLiB3a191Y2ZpcnN0KCRuYW1lKSAuIkF0dHJOdW06IHtcbiIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwO1xuIikgaWYgQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpbXAtPnNldCIgLiB1Y2Zp
cnN0KCRuYW1lKSAuICIoIiAuIEpTVmFsdWVUb05hdGl2ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUs
ICJ2YWx1ZSIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICBpbXAtPnNldCIgLiB3a191Y2ZpcnN0KCRuYW1lKSAuICIoIiAuIEpTVmFsdWVUb05h
dGl2ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICJ2YWx1ZSIpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiLCBlYyIpIGlmIEB7JGF0dHJpYnV0ZS0+c2V0dGVy
RXhjZXB0aW9uc307CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
Iik7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpO1xuIikgaWYgQHskYXR0cmlidXRlLT5zZXR0
ZXJFeGNlcHRpb25zfTsKQEAgLTg0Niw3ICs4NTcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN3aXRjaCAoaWQpIHtcbiIp
OwogICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskZGF0YU5vZGUtPmZ1bmN0aW9uc30p
IHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc2UgJHtjbGFzc05hbWV9
OjoiIC4gdWNmaXJzdCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSkgLiAiRnVuY051bToge1xu
Iik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXNlICR7Y2xhc3NOYW1l
fTo6IiAuIHdrX3VjZmlyc3QoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUpIC4gIkZ1bmNOdW06
IHtcbiIpOwogCiAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDdXN0b20ifSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JHtjbGFzc05hbWV9Kj4odGhpc09iaikt
PiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSAuICIoZXhlYywgYXJncyk7XG4gICAgfVxu
Iik7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpD
LnBtCShyZXZpc2lvbiAxNzg1MSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yT2JqQy5wbQkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAKICMgQ29weXJpZ2h0
IChDKSAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogIyBDb3B5cmln
aHQgKEMpIDIwMDYgQW5kZXJzIENhcmxzc29uIDxhbmRlcnNjYUBtYWMuY29tPiAKICMgQ29weXJp
Z2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorIyBDb3B5
cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4KICMgQ29w
eXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAjCiAjIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTE1Miw2
ICsxNTMsMTYgQEAgc3ViIGZpbmlzaAogICAgIG15ICRvYmplY3QgPSBzaGlmdDsKIH0KIAorIyBV
cHBlcmNhc2UgdGhlIGZpcnN0IGxldHRlciwgd2hpbGUgcmVzcGVjdGluZyBXZWJLaXQgc3R5bGUg
Z3VpZGVsaW5lcy4gCisjIEUuZy4sIHhtbEVuY29kaW5nIGJlY29tZXMgWE1MRW5jb2RpbmcsIGJ1
dCB4bWxsbGFuZyBiZWNvbWVzIFhtbGxhbmcuCitzdWIgd2tfdWNmaXJzdAoreworICAgIG15ICRw
YXJhbSA9IHNoaWZ0OworICAgIG15ICRyZXQgPSB1Y2ZpcnN0KCRwYXJhbSk7CisgICAgJHJldCA9
fiBzL1htbC9YTUwvIGlmICRyZXQgPX4gL15YbWxbXmEtel0vOworICAgIHJldHVybiAkcmV0Owor
fQorCiBzdWIgUmVhZFB1YmxpY0ludGVyZmFjZXMKIHsKICAgICBteSAkY2xhc3MgPSBzaGlmdDsK
QEAgLTY3Miw3ICs2ODMsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICAgICAgICAgICAg
ICMgLSBTRVRURVIKICAgICAgICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGVJc1JlYWRvbmx5KSB7
Ci0gICAgICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSAiLSAodm9pZClzZXQiIC4gdWNmaXJz
dCgkYXR0cmlidXRlTmFtZSkgLiAiOigiIC4gJGF0dHJpYnV0ZVR5cGUgLiAiKW5ldyIgLiB1Y2Zp
cnN0KCRhdHRyaWJ1dGVOYW1lKSAuICI7XG4iOworICAgICAgICAgICAgICAgICAgICBteSAkc2V0
dGVyID0gIi0gKHZvaWQpc2V0IiAuIHdrX3VjZmlyc3QoJGF0dHJpYnV0ZU5hbWUpIC4gIjooIiAu
ICRhdHRyaWJ1dGVUeXBlIC4gIiluZXciIC4gd2tfdWNmaXJzdCgkYXR0cmlidXRlTmFtZSkgLiAi
O1xuIjsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQXR0cmlidXRlcywgJHNldHRl
cikgaWYgJHB1YmxpYzsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAcHJpdmF0ZUhlYWRlckF0
dHJpYnV0ZXMsICRzZXR0ZXIpIHVubGVzcyAkcHVibGljOwogICAgICAgICAgICAgICAgIH0KQEAg
LTk5OCw5ICsxMDA5LDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAg
ICAgICAjIEV4Y2VwdGlvbiBoYW5kbGluZwogICAgICAgICAgICAgICAgIG15ICRoYXNTZXR0ZXJF
eGNlcHRpb24gPSBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9OwogCi0gICAgICAgICAg
ICAgICAgJGF0dHJpYnV0ZU5hbWUgPSAic2V0IiAuIHVjZmlyc3QoJGF0dHJpYnV0ZU5hbWUpOwot
ICAgICAgICAgICAgICAgIG15ICRzZXR0ZXJOYW1lID0gInNldCIgLiB1Y2ZpcnN0KCRhdHRyaWJ1
dGVJbnRlcmZhY2VOYW1lKTsKLSAgICAgICAgICAgICAgICBteSAkYXJnTmFtZSA9ICJuZXciIC4g
dWNmaXJzdCgkYXR0cmlidXRlSW50ZXJmYWNlTmFtZSk7CisgICAgICAgICAgICAgICAgJGF0dHJp
YnV0ZU5hbWUgPSAic2V0IiAuIHdrX3VjZmlyc3QoJGF0dHJpYnV0ZU5hbWUpOworICAgICAgICAg
ICAgICAgIG15ICRzZXR0ZXJOYW1lID0gInNldCIgLiB3a191Y2ZpcnN0KCRhdHRyaWJ1dGVJbnRl
cmZhY2VOYW1lKTsKKyAgICAgICAgICAgICAgICBteSAkYXJnTmFtZSA9ICJuZXciIC4gd2tfdWNm
aXJzdCgkYXR0cmlidXRlSW50ZXJmYWNlTmFtZSk7CiAgICAgICAgICAgICAgICAgbXkgJGFyZyA9
IEdldE9iakNUeXBlR2V0dGVyKCRhcmdOYW1lLCAkaWRsVHlwZSk7CiAKICAgICAgICAgICAgICAg
ICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29udmVy
dEZyb21TdHJpbmcifSkgewpAQCAtMTA1Miw3ICsxMDYzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgICAgICAgICBteSAkcGFyYW1UeXBlID0gR2V0T2JqQ1R5cGUoJHBh
cmFtLT50eXBlKTsKIAogICAgICAgICAgICAgICAgICMgbWFrZSBhIG5ldyBwYXJhbWV0ZXIgbmFt
ZSBpZiB0aGUgb3JpZ2luYWwgY29uZmxpY3RzIHdpdGggYSBwcm9wZXJ0eSBuYW1lCi0gICAgICAg
ICAgICAgICAgJHBhcmFtTmFtZSA9ICJpbiIgLiB1Y2ZpcnN0KCRwYXJhbU5hbWUpIGlmICRhdHRy
aWJ1dGVOYW1lc3skcGFyYW1OYW1lfTsKKyAgICAgICAgICAgICAgICAkcGFyYW1OYW1lID0gImlu
IiAuIHdrX3VjZmlyc3QoJHBhcmFtTmFtZSkgaWYgJGF0dHJpYnV0ZU5hbWVzeyRwYXJhbU5hbWV9
OwogCiAgICAgICAgICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRwYXJhbS0+dHlwZSk7CiAK
SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE3ODUxKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkg
S29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBN
dWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFBy
b3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTIxOSwxMiArMjIwLDE0
IEBAIERvY3VtZW50OjpEb2N1bWVudChET01JbXBsZW1lbnRhdGlvbiogaW0KICAgICAsIG1fdGl0
bGUoIiIpCiAgICAgLCBtX3RpdGxlU2V0RXhwbGljaXRseShmYWxzZSkKICAgICAsIG1faW1hZ2VM
b2FkRXZlbnRUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OmltYWdlTG9hZEV2ZW50VGltZXJGaXJlZCkK
LSNpZmRlZiBYQkxfU1VQUE9SVAotICAgICwgbV9iaW5kaW5nTWFuYWdlcihuZXcgWEJMQmluZGlu
Z01hbmFnZXIodGhpcykpCi0jZW5kaWYKICNpZmRlZiBYU0xUX1NVUFBPUlQKICAgICAsIG1fdHJh
bnNmb3JtU291cmNlKDApCiAjZW5kaWYKKyAgICAsIG1feG1sVmVyc2lvbigiMS4wIikKKyAgICAs
IG1feG1sU3RhbmRhbG9uZShmYWxzZSkKKyNpZmRlZiBYQkxfU1VQUE9SVAorICAgICwgbV9iaW5k
aW5nTWFuYWdlcihuZXcgWEJMQmluZGluZ01hbmFnZXIodGhpcykpCisjZW5kaWYKICAgICAsIG1f
c2F2ZWRSZW5kZXJlcigwKQogICAgICwgbV9wYXNzd29yZEZpZWxkcygwKQogICAgICwgbV9zZWN1
cmVGb3JtcygwKQpAQCAtNjc2LDYgKzY3OSwyNyBAQCB2b2lkIERvY3VtZW50OjpzZXRDaGFyc2V0
KGNvbnN0IFN0cmluZyYgCiAgICAgZGVjb2RlcigpLT5zZXRFbmNvZGluZyhjaGFyc2V0LCBUZXh0
UmVzb3VyY2VEZWNvZGVyOjpVc2VyQ2hvc2VuRW5jb2RpbmcpOwogfQogCit2b2lkIERvY3VtZW50
OjpzZXRYTUxWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgLy8gRklYTUU6IGFsc28gcmFpc2UgTk9UX1NVUFBPUlRFRF9FUlIgaWYgdGhlIHZl
cnNpb24gaXMgc2V0IHRvIGEgdmFsdWUgdGhhdCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgRG9j
dW1lbnQuCisgICAgaWYgKCFpbXBsZW1lbnRhdGlvbigpLT5oYXNGZWF0dXJlKCJYTUwiLCBTdHJp
bmcoKSkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgIAorICAgIG1feG1sVmVyc2lvbiA9IHZlcnNpb247Cit9CisKK3ZvaWQgRG9j
dW1lbnQ6OnNldFhNTFN0YW5kYWxvbmUoYm9vbCBzdGFuZGFsb25lLCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBpZiAoIWltcGxlbWVudGF0aW9uKCktPmhhc0ZlYXR1cmUoIlhNTCIsIFN0cmlu
ZygpKSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgbV94bWxTdGFuZGFsb25lID0gc3RhbmRhbG9uZTsKK30KKwogRWxlbWVu
dCogRG9jdW1lbnQ6OmVsZW1lbnRGcm9tUG9pbnQoaW50IHgsIGludCB5KSBjb25zdAogewogICAg
IGlmICghcmVuZGVyZXIoKSkKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMTc4NTEpCisrKyBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQAogICogQ29weXJp
Z2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMp
IDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMp
IDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIw
MDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykKICAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTE3
OSw2ICsxODAsMTQgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDaGFyc2V0KGNvbnN0IFN0cmlu
ZyYpOwogCisgICAgU3RyaW5nIHhtbEVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV94bWxFbmNv
ZGluZzsgfQorICAgIFN0cmluZyB4bWxWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV94bWxWZXJz
aW9uOyB9CisgICAgYm9vbCB4bWxTdGFuZGFsb25lKCkgY29uc3QgeyByZXR1cm4gbV94bWxTdGFu
ZGFsb25lOyB9CisKKyAgICB2b2lkIHNldFhNTEVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2Rp
bmcpIHsgbV94bWxFbmNvZGluZyA9IGVuY29kaW5nOyB9IC8vIHJlYWQtb25seSBwcm9wZXJ0eSwg
b25seSB0byBiZSBzZXQgZnJvbSBYTUxUb2tlbml6ZXIKKyAgICB2b2lkIHNldFhNTFZlcnNpb24o
Y29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0WE1MU3RhbmRhbG9u
ZShib29sLCBFeGNlcHRpb25Db2RlJik7CisKICAgICBQYXNzUmVmUHRyPE5vZGU+IGFkb3B0Tm9k
ZShQYXNzUmVmUHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIAogICAgIFBh
c3NSZWZQdHI8TmFtZU5vZGVMaXN0PiBnZXRFbGVtZW50c0J5TmFtZShjb25zdCBTdHJpbmcmIGVs
ZW1lbnROYW1lKTsKQEAgLTcxNSw2ICs3MjQsMTAgQEAgcHJvdGVjdGVkOgogCiAgICAgaW50IG1f
ZG9jSUQ7IC8vIEEgdW5pcXVlIGRvY3VtZW50IGlkZW50aWZpZXIgdXNlZCBmb3IgdGhpbmdzIGxp
a2UgZG9jdW1lbnQtc3BlY2lmaWMgbWFwcGVkIGF0dHJpYnV0ZXMuCiAKKyAgICBTdHJpbmcgbV94
bWxFbmNvZGluZzsKKyAgICBTdHJpbmcgbV94bWxWZXJzaW9uOworICAgIGJvb2wgbV94bWxTdGFu
ZGFsb25lOworCiBwdWJsaWM6CiAgICAgYm9vbCBpblBhZ2VDYWNoZSgpOwogICAgIHZvaWQgc2V0
SW5QYWdlQ2FjaGUoYm9vbCBmbGFnKTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHJldmlzaW9uIDE3ODUxKQor
KysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Mywx
MiBAQCBtb2R1bGUgY29yZSB7CiAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0
TnVsbFN0cmluZ1RvPU51bGxdIERPTVN0cmluZyBpbnB1dEVuY29kaW5nOwogCisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1OdWxsXSBET01TdHJpbmcgeG1s
RW5jb2Rpbmc7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxTdHJpbmdU
bz1OdWxsXSBET01TdHJpbmcgeG1sVmVyc2lvbgorICAgICAgICAgICAgICAgICAgICBzZXR0ZXIg
cmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgW0NvbnZl
cnROdWxsU3RyaW5nVG89TnVsbF0gYm9vbGVhbiB4bWxTdGFuZGFsb25lCisgICAgICAgICAgICAg
ICAgICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisKICAgICAgICAgTm9kZSAgICAg
ICAgICAgICAgIGFkb3B0Tm9kZShpbiBOb2RlIHNvdXJjZSkKICAgICAgICAgICAgIHJhaXNlcyAo
RE9NRXhjZXB0aW9uKTsKIApJbmRleDogV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXIuY3BwCShyZXZpc2lvbiAxNzg1MSkK
KysrIFdlYkNvcmUvZG9tL1hNTFRva2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMsNyAr
Myw3IEBACiAgKgogICogQ29weXJpZ2h0IChDKSAyMDAwIFBldGVyIEtlbGx5IChwbWtAcG9zdC5j
b20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KLSAq
IENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292CisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykKICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTA2LDYgKzEwNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHByb2Nlc3NpbmdJbnN0
cnVjdGlvbihjb25zdCB4bWxDaGFyICp0YXJnZXQsIGNvbnN0IHhtbENoYXIgKmRhdGEpOwogICAg
IHZvaWQgY2RhdGFCbG9jayhjb25zdCB4bWxDaGFyICpzLCBpbnQgbGVuKTsKICAgICB2b2lkIGNv
bW1lbnQoY29uc3QgeG1sQ2hhciAqcyk7CisgICAgdm9pZCBzdGFydERvY3VtZW50KGNvbnN0IHht
bENoYXIgKnZlcnNpb24sIGNvbnN0IHhtbENoYXIgKmVuY29kaW5nLCBpbnQgc3RhbmRhbG9uZSk7
CiAgICAgdm9pZCBpbnRlcm5hbFN1YnNldChjb25zdCB4bWxDaGFyICpuYW1lLCBjb25zdCB4bWxD
aGFyICpleHRlcm5hbElELCBjb25zdCB4bWxDaGFyICpzeXN0ZW1JRCk7CiAKICAgICB2b2lkIGhh
bmRsZUVycm9yKEVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtLCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlcik7CkBAIC0xMDE5LDYgKzEwMjAsMTcgQEAgdm9pZCBYTUxUb2tlbml6
ZXI6OmNvbW1lbnQoY29uc3QgeG1sQ2hhcgogICAgICAgICBuZXdOb2RlLT5hdHRhY2goKTsKIH0K
IAordm9pZCBYTUxUb2tlbml6ZXI6OnN0YXJ0RG9jdW1lbnQoY29uc3QgeG1sQ2hhciogdmVyc2lv
biwgY29uc3QgeG1sQ2hhciogZW5jb2RpbmcsIGludCBzdGFuZGFsb25lKQoreworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIAorICAgIGlmICh2ZXJzaW9uKQorICAgICAgICBtX2RvYy0+
c2V0WE1MVmVyc2lvbih0b1N0cmluZyh2ZXJzaW9uKSwgZWMpOworICAgIG1fZG9jLT5zZXRYTUxT
dGFuZGFsb25lKHN0YW5kYWxvbmUgPT0gMSwgZWMpOyAvLyBwb3NzaWJsZSB2YWx1ZXMgYXJlIDAs
IDEsIGFuZCAtMQorICAgIGlmIChlbmNvZGluZykKKyAgICAgICAgbV9kb2MtPnNldFhNTEVuY29k
aW5nKHRvU3RyaW5nKGVuY29kaW5nKSk7Cit9CisKIHZvaWQgWE1MVG9rZW5pemVyOjppbnRlcm5h
bFN1YnNldChjb25zdCB4bWxDaGFyICpuYW1lLCBjb25zdCB4bWxDaGFyICpleHRlcm5hbElELCBj
b25zdCB4bWxDaGFyICpzeXN0ZW1JRCkKIHsKICAgICBpZiAobV9wYXJzZXJTdG9wcGVkKQpAQCAt
MTE2MCw2ICsxMTcyLDEzIEBAIHN0YXRpYyB4bWxFbnRpdHlQdHIgZ2V0RW50aXR5SGFuZGxlcih2
b2kKICAgICByZXR1cm4gZW50OwogfQogCitzdGF0aWMgdm9pZCBzdGFydERvY3VtZW50SGFuZGxl
cih2b2lkICpjbG9zdXJlKQoreworICAgIHhtbFBhcnNlckN0eHQqIGN0eHQgPSBzdGF0aWNfY2Fz
dDx4bWxQYXJzZXJDdHh0Kj4oY2xvc3VyZSk7CisgICAgZ2V0VG9rZW5pemVyKGNsb3N1cmUpLT5z
dGFydERvY3VtZW50KGN0eHQtPnZlcnNpb24sIGN0eHQtPmVuY29kaW5nLCBjdHh0LT5zdGFuZGFs
b25lKTsKKyAgICB4bWxTQVgyU3RhcnREb2N1bWVudChjbG9zdXJlKTsKK30KKwogc3RhdGljIHZv
aWQgaW50ZXJuYWxTdWJzZXRIYW5kbGVyKHZvaWQgKmNsb3N1cmUsIGNvbnN0IHhtbENoYXIgKm5h
bWUsIGNvbnN0IHhtbENoYXIgKmV4dGVybmFsSUQsIGNvbnN0IHhtbENoYXIgKnN5c3RlbUlEKQog
ewogICAgIGdldFRva2VuaXplcihjbG9zdXJlKS0+aW50ZXJuYWxTdWJzZXQobmFtZSwgZXh0ZXJu
YWxJRCwgc3lzdGVtSUQpOwpAQCAtMTIwMSw3ICsxMjIwLDcgQEAgdm9pZCBYTUxUb2tlbml6ZXI6
OmluaXRpYWxpemVQYXJzZXJDb250ZQogICAgIHNheC5zdGFydEVsZW1lbnROcyA9IHN0YXJ0RWxl
bWVudE5zSGFuZGxlcjsKICAgICBzYXguZW5kRWxlbWVudE5zID0gZW5kRWxlbWVudE5zSGFuZGxl
cjsKICAgICBzYXguZ2V0RW50aXR5ID0gZ2V0RW50aXR5SGFuZGxlcjsKLSAgICBzYXguc3RhcnRE
b2N1bWVudCA9IHhtbFNBWDJTdGFydERvY3VtZW50OworICAgIHNheC5zdGFydERvY3VtZW50ID0g
c3RhcnREb2N1bWVudEhhbmRsZXI7CiAgICAgc2F4LmludGVybmFsU3Vic2V0ID0gaW50ZXJuYWxT
dWJzZXRIYW5kbGVyOwogICAgIHNheC5leHRlcm5hbFN1YnNldCA9IGV4dGVybmFsU3Vic2V0SGFu
ZGxlcjsKICAgICBzYXguaWdub3JhYmxlV2hpdGVzcGFjZSA9IGlnbm9yYWJsZVdoaXRlc3BhY2VI
YW5kbGVyOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAJKHJldmlzaW9uIDE3ODUxKQorKysgV2Vi
Q29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIEhUTUxEb2N1bWVudDo6SFRNTERvY3VtZW50
KERPTUltcGxlbWVudGF0aW9uICpfaW1wbGVtZW50YXRpb24sIEZyYW1lVmlldyAqdikKICAgOiBE
b2N1bWVudChfaW1wbGVtZW50YXRpb24sIHYpCiB7CisgICAgbV94bWxWZXJzaW9uID0gU3RyaW5n
KCk7CiAgICAgYm9keUVsZW1lbnQgPSAwOwogICAgIGh0bWxFbGVtZW50ID0gMDsKIH0K
</data>
<flag name="review"
          id="4121"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11584</attachid>
            <date>2006-11-20 10:39:58 -0800</date>
            <delta_ts>2006-11-20 10:44:51 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>11633r2_patch.txt</filename>
            <type>text/plain</type>
            <size>51353</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE3ODU4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMDYtMTEtMjAgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjMz
CisgICAgICAgIEltcGxlbWVudCBYTUxEb2N1bWVudCBwcm9wZXJ0aWVzIHhtbEVuY29kaW5nLCB4
bWxWZXJzaW9uLCB4bWxTdGFuZGFsb25lCisKKyAgICAgICAgKiBkb20veGh0bWwvbGV2ZWwzL2Nv
cmUvZG9jdW1lbnRnZXR4bWxlbmNvZGluZzAxLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBkb20v
eGh0bWwvbGV2ZWwzL2NvcmUvZG9jdW1lbnRnZXR4bWxlbmNvZGluZzAzLWV4cGVjdGVkLnR4dAor
ICAgICAgICAqIGRvbS94aHRtbC9sZXZlbDMvY29yZS9kb2N1bWVudGdldHhtbHN0YW5kYWxvbmUw
NC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZG9tL3hodG1sL2xldmVsMy9jb3JlL2RvY3VtZW50
Z2V0eG1sdmVyc2lvbjAxLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBkb20veGh0bWwvbGV2ZWwz
L2NvcmUvZG9jdW1lbnRnZXR4bWx2ZXJzaW9uMDItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGRv
bS94aHRtbC9sZXZlbDMvY29yZS9kb2N1bWVudGdldHhtbHZlcnNpb24wMy1leHBlY3RlZC50eHQ6
CisgICAgICAgIFRoZXNlIG5vdyBwYXNzLgorCisgICAgICAgICogZG9tL3hodG1sL2xldmVsMy9j
b3JlL2RvY3VtZW50Z2V0eG1sZW5jb2RpbmcwMy54aHRtbDogUmUtYWRkZWQgYSBjb3JyZWN0IHRl
c3QuCisKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0
ZWQudHh0OiBBZGRlZCB0aGVzZSBuZXcgcHJvcGVydGllcy4KKworICAgICAgICAqIGh0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QveG1sLWVuY29kaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWwtZW5jb2RpbmcuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMveG1sLWVuY29k
aW5nLnhtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNv
dXJjZXMvcG9zdC1lY2hvLWFzLXV0Zi04LmNnaTogQWRkZWQuCisgICAgICAgIFRlc3QgaG93IHht
bEVuY29kaW5nIGludGVyYWN0cyB3aXRoIFhNTEh0dHBSZXF1ZXN0LgorCiAyMDA2LTExLTE5ICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmVkIHBh
cnRzIG9mIGFuIGluY29ycmVjdGx5IGNvbW1pdHRlZCB0ZXN0LCB0byBiZSByZS1hZGRlZCBsYXRl
ci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTc4NTgpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTYzLDYgKzE1NjMsOSBAQCB3aW5kb3cuZG9jdW1lbnQudmxpbmtDb2xv
ciBbc3RyaW5nXQogd2luZG93LmRvY3VtZW50LndpZHRoIFtudW1iZXJdCiB3aW5kb3cuZG9jdW1l
bnQud3JpdGUgW2Z1bmN0aW9uXQogd2luZG93LmRvY3VtZW50LndyaXRlbG4gW2Z1bmN0aW9uXQor
d2luZG93LmRvY3VtZW50LnhtbEVuY29kaW5nIFtudWxsXQord2luZG93LmRvY3VtZW50LnhtbFN0
YW5kYWxvbmUgW2Jvb2xlYW5dCit3aW5kb3cuZG9jdW1lbnQueG1sVmVyc2lvbiBbbnVsbF0KIHdp
bmRvdy5ldmVudCBbdW5kZWZpbmVkXQogd2luZG93LmV2ZW50U2VuZGVyIFtvYmplY3QgUnVudGlt
ZU9iamVjdF0KIHdpbmRvdy5mbHVzaExvZyBbZnVuY3Rpb25dCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbC1lbmNvZGluZy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWwtZW5jb2Rp
bmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC94bWwtZW5jb2RpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDkgQEAKK1Rlc3QgWE1MSHR0cFJlcXVlc3QgYW5kIGRvY3VtZW50LnhtbEVuY29kaW5n
IGludGVyYWN0aW9uLgorCitUaGUgcmVxdWVzdCBib2R5IHNob3VsZCBjb250YWluIHRoZSB3b3Jk
ICLQn9GA0L7QstC10YDQutCwIi4KKworcmVzcG9uc2VYTUwueG1sRW5jb2Rpbmc6IHdpbmRvd3Mt
MTI1MQorcmVzcG9uc2VYTUwueG1sVmVyc2lvbjogMS4wCityZXNwb25zZVhNTC54bWxTdGFuZGFs
b25lOiB0cnVlCitSZXF1ZXN0IGJvZHk6IDxkb2M+0J/RgNC+0LLQtdGA0LrQsDwvZG9jPgorCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3htbC1lbmNvZGluZy1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBl
CiAgICsgdGV4dC9wbGFpbgpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWwtZW5jb2RpbmcuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbC1l
bmNvZGluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC94bWwtZW5jb2RpbmcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBA
QAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IFhNTEh0dHBSZXF1ZXN0IGFuZCBkb2N1bWVu
dC54bWxFbmNvZGluZyBpbnRlcmFjdGlvbi48L3RpdGxlPgorPG1ldGEgaHR0cC1lcXVpdj0iY29u
dGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCI+Cis8Ym9keT4KKzxw
PlRlc3QgWE1MSHR0cFJlcXVlc3QgYW5kIGRvY3VtZW50LnhtbEVuY29kaW5nIGludGVyYWN0aW9u
LjwvcD4KKzxwPlRoZSByZXF1ZXN0IGJvZHkgc2hvdWxkIGNvbnRhaW4gdGhlIHdvcmQgItCf0YDQ
vtCy0LXRgNC60LAiLjwvcD4KKzxzY3JpcHQ+CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
KyAgICB2YXIgY29uc29sZV9tZXNzYWdlcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInVsIik7
CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xlX21lc3NhZ2VzKTsKKyAgICAK
KyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHZhciBpdGVtID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgICAgIGNvbnNvbGVfbWVzc2FnZXMu
YXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgfQorICAgIAorICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVx
dWVzdCgpOworICAgIHJlcS5vcGVuKCdHRVQnLCAncmVzb3VyY2VzL3htbC1lbmNvZGluZy54bWwn
LCBmYWxzZSk7CisgICAgcmVxLnNlbmQobnVsbCk7CisKKyAgICB2YXIgcmVzcG9uc2VYTUwgPSBy
ZXEucmVzcG9uc2VYTUw7CisgICAgbG9nKCJyZXNwb25zZVhNTC54bWxFbmNvZGluZzogIiArIHJl
c3BvbnNlWE1MLnhtbEVuY29kaW5nKTsKKyAgICBsb2coInJlc3BvbnNlWE1MLnhtbFZlcnNpb246
ICIgKyByZXNwb25zZVhNTC54bWxWZXJzaW9uKTsKKyAgICBsb2coInJlc3BvbnNlWE1MLnhtbFN0
YW5kYWxvbmU6ICIgKyByZXNwb25zZVhNTC54bWxTdGFuZGFsb25lKTsKKworICAgIHJlcS5vcGVu
KCdQT1NUJywgJ3Jlc291cmNlcy9wb3N0LWVjaG8tYXMtdXRmLTguY2dpJywgZmFsc2UpOworICAg
IHJlcS5zZW5kKHJlc3BvbnNlWE1MKTsKKyAgICBsb2coIlJlcXVlc3QgYm9keTogIiArIHJlcS5y
ZXNwb25zZVRleHQpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNo
YW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1sLWVuY29k
aW5nLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9odG1sCgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvcG9z
dC1lY2hvLWFzLXV0Zi04LmNnaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9wb3N0LWVjaG8tYXMtdXRmLTguY2dpCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMv
cG9zdC1lY2hvLWFzLXV0Zi04LmNnaQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorIyEv
dXNyL2Jpbi9wZXJsIC13CisjdXNlIENHSSAoKTsKKworcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4
dC9wbGFpbjtjaGFyc2V0PXV0Zi04XG5cbiI7CisKK2lmICgkRU5WeydSRVFVRVNUX01FVEhPRCd9
IGVxICJQT1NUIikgeworICAgIHJlYWQoU1RESU4sICRyZXF1ZXN0LCAkRU5WeydDT05URU5UX0xF
TkdUSCd9KQorICAgICAgICAgICAgICAgIHx8IGRpZSAiQ291bGQgbm90IGdldCBxdWVyeVxuIjsK
KyMgICAgcHJpbnQgQ0dJOjplc2NhcGUoJHJlcXVlc3QpOworICAgICBwcmludCAkcmVxdWVzdDsK
K30gZWxzZSB7CisgICAgcHJpbnQgIldyb25nIG1ldGhvZDogIiAuICRFTlZ7J1JFUVVFU1RfTUVU
SE9EJ30gLiAiXG4iOworfSAKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3Bvc3QtZWNoby1hcy11dGYtOC5jZ2kKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpOYW1lOiBzdm46ZXhlY3V0YWJsZQogICArICoKTmFtZTogc3ZuOmVvbC1zdHlsZQog
ICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNv
dXJjZXMveG1sLWVuY29kaW5nLnhtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy94bWwtZW5jb2RpbmcueG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMveG1s
LWVuY29kaW5nLnhtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJ3aW5kb3dzLTEyNTEiIHN0YW5kYWxvbmU9InllcyI/PgorPGRvYz7P
8O7i5fDq4DwvZG9jPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMveG1sLWVuY29kaW5nLnhtbApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5h
bWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L3htbAoKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzg1OCkKKysrIFdl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMDYtMTEt
MjAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNjMzCisgICAgICAgIEltcGxlbWVudCBYTUxEb2N1bWVudCBwcm9w
ZXJ0aWVzIHhtbEVuY29kaW5nLCB4bWxWZXJzaW9uLCB4bWxTdGFuZGFsb25lCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRYTUxWZXJzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpzZXRYTUxTdGFuZGFsb25lKToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp4bWxFbmNvZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6eG1sVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6eG1sU3RhbmRhbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0
WE1MRW5jb2RpbmcpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICogZG9t
L1hNTFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OnN0YXJ0
RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnREb2N1bWVudEhhbmRsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MVG9rZW5pemVyOjppbml0aWFsaXplUGFyc2VyQ29udGV4dCk6Cisg
ICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZXNlIHByb3BlcnRpZXMsIGdldHRpbmcgdGhlbSBm
cm9tIGFuIGxpYnhtbDIgY29udGV4dC4KKworICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6SFRNTERvY3VtZW50KToKKyAgICAg
ICAgSFRNTERvY3VtZW50IGlzIHRoZSBvbmx5IGtpbmQgb2YgZG9jdW1lbnQgdGhhdCBkb2Vzbid0
IGhhdmUgeG1sVmVyc2lvbiBkZWZhdWx0IHRvICIxLjAiLgorCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yT2JqQy5wbToKKyAgICAgICAgQWRkZWQgd2tfdWNmaXJzdCB0byBwcm9wZXJs
eSB1cHBlcmNhc2UgeG1sVmVyc2lvbiBhbmQgeG1sU3RhbmRhbG9uZS4KKwogMjAwNi0xMS0yMCAg
Tmlrb2xhcyBaaW1tZXJtYW5uICA8emltbWVybWFubkBrZGUub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFJvYi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQkocmV2aXNpb24gMTc4NTgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQAogIyBDb3B5cmln
aHQgKEMpIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAjIENvcHly
aWdodCAoQykgMjAwNiBBbmRlcnMgQ2FybHNzb24gPGFuZGVyc2NhQG1hYy5jb20+CiAjIENvcHly
aWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyMgQ29w
eXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+CiAjIENv
cHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTg1LDYgKzg2LDE2IEBAIHN1YiBsZWZ0U2hpZnQo
JCQpIHsKICAgICByZXR1cm4gKCgkdmFsdWUgPDwgJGRpc3RhbmNlKSAmIDB4RkZGRkZGRkYpOwog
fQogCisjIFVwcGVyY2FzZSB0aGUgZmlyc3QgbGV0dGVyLCB3aGlsZSByZXNwZWN0aW5nIFdlYktp
dCBzdHlsZSBndWlkZWxpbmVzLiAKKyMgRS5nLiwgeG1sRW5jb2RpbmcgYmVjb21lcyBYTUxFbmNv
ZGluZywgYnV0IHhtbGxsYW5nIGJlY29tZXMgWG1sbGFuZy4KK3N1YiBXS191Y2ZpcnN0Cit7Cisg
ICAgbXkgJHBhcmFtID0gc2hpZnQ7CisgICAgbXkgJHJldCA9IHVjZmlyc3QoJHBhcmFtKTsKKyAg
ICAkcmV0ID1+IHMvWG1sL1hNTC8gaWYgJHJldCA9fiAvXlhtbFteYS16XS87CisgICAgcmV0dXJu
ICRyZXQ7Cit9CisKICMgUGFyYW1zOiAnZG9tQ2xhc3MnIHN0cnVjdAogc3ViIEdlbmVyYXRlSW50
ZXJmYWNlCiB7CkBAIC0zMzQsNyArMzQ1LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAg
ICAgICAgIG15ICR2YWx1ZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3Ry
dWN0b3IkLwogICAgICAgICAgICAgICAgICAgICAgID8gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5u
YW1lIC4gIkNvbnN0cnVjdG9yQXR0ck51bSIKLSAgICAgICAgICAgICAgICAgICAgICA6IHVjZmly
c3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICJBdHRyTnVtIjsKKyAgICAgICAgICAg
ICAgICAgICAgICA6IFdLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICJB
dHRyTnVtIjsKICAgICAgICAgICAgICR2YWx1ZSAuPSAiLCAiIGlmICgoJGkgPCAkbnVtQXR0cmli
dXRlcyAtIDEpKTsKICAgICAgICAgICAgICR2YWx1ZSAuPSAiLCAiIGlmICgoJGkgZXEgJG51bUF0
dHJpYnV0ZXMgLSAxKSBhbmQgKCRudW1GdW5jdGlvbnMgbmUgMCkpOwogICAgICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgJHZhbHVlKTsKQEAgLTM1Myw3ICszNjQsNyBAQCBzdWIgR2VuZXJh
dGVIZWFkZXIKIAogICAgICAgICAgICAgJG51bUN1c3RvbUZ1bmN0aW9ucysrIGlmICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tIn07CiAKLSAgICAgICAg
ICAgIG15ICR2YWx1ZSA9IHVjZmlyc3QoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUpIC4gIkZ1
bmNOdW0iOworICAgICAgICAgICAgbXkgJHZhbHVlID0gV0tfdWNmaXJzdCgkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+bmFtZSkgLiAiRnVuY051bSI7CiAgICAgICAgICAgICAkdmFsdWUgLj0gIiwgIiBp
ZiAoJGkgPCAkbnVtRnVuY3Rpb25zIC0gMSk7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAkdmFsdWUpOwogICAgICAgICB9CkBAIC0zNjgsNyArMzc5LDcgQEAgc3ViIEdlbmVyYXRl
SGVhZGVyCiAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ3VzdG9tIn0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIEtKUzo6SlNWYWx1ZSogIiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAu
ICIoS0pTOjpFeGVjU3RhdGUqKSBjb25zdDtcbiIpOwogICAgICAgICAgICAgICAgIGlmICgkYXR0
cmlidXRlLT50eXBlICF+IC9ecmVhZG9ubHkvKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBzZXQiIC4gdWNmaXJzdCgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPm5hbWUpIC4gIihLSlM6OkV4ZWNTdGF0ZSosIEtKUzo6SlNWYWx1ZSopO1xuIik7Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBzZXQiIC4g
V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIC4gIihLSlM6OkV4ZWNTdGF0
ZSosIEtKUzo6SlNWYWx1ZSopO1xuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC01MDcsNyArNTE4LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KIAogICAgICAgICAgICAgbXkgJHZhbHVlID0gJGNsYXNzTmFtZSAuICI6OiIgLiAoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA/ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAuICJD
b25zdHJ1Y3RvckF0dHJOdW0iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6IHVjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICJBdHRyTnVtIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFdLX3VjZmlyc3QoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICJBdHRyTnVtIik7CiAgICAgICAgICAgICBwdXNoKEBo
YXNoVmFsdWVzLCAkdmFsdWUpOwogCiAgICAgICAgICAgICBteSAkc3BlY2lhbCA9ICJEb250RGVs
ZXRlIjsKQEAgLTU4Nyw3ICs1OTgsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAgICBwdXNo
KEBoYXNoS2V5cywgJG5hbWUpOwogCi0gICAgICAgIG15ICR2YWx1ZSA9ICRjbGFzc05hbWUgLiAi
OjoiIC4gdWNmaXJzdCgkbmFtZSkgLiAiRnVuY051bSI7CisgICAgICAgIG15ICR2YWx1ZSA9ICRj
bGFzc05hbWUgLiAiOjoiIC4gV0tfdWNmaXJzdCgkbmFtZSkgLiAiRnVuY051bSI7CiAgICAgICAg
IHB1c2goQGhhc2hWYWx1ZXMsICR2YWx1ZSk7CiAKICAgICAgICAgbXkgJHNwZWNpYWwgPSAiRG9u
dERlbGV0ZXxGdW5jdGlvbiI7CkBAIC03NDYsNyArNzU3LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5u
YW1lOwogCiAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ3VzdG9tIn0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBjYXNlICIgLiB1Y2ZpcnN0KCRuYW1lKSAuICJBdHRyTnVtOlxuIik7CisgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzZSAiIC4gV0tfdWNmaXJzdCgkbmFt
ZSkgLiAiQXR0ck51bTpcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4gJG5hbWUoZXhlYyk7XG4iKTsKICAgICAgICAgICAgIH0gZWxzaWYgKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLykgewogICAgICAgICAg
ICAgICAgIG15ICRjb25zdHJ1Y3RvclR5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsKQEAgLTc1NSwxMCArNzY2LDEwIEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgY2FzZSAiIC4gJG5hbWUgLiAiQ29uc3RydWN0b3JBdHRyTnVtOlxuIik7CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBKUyIgLiAkY29uc3Ry
dWN0b3JUeXBlIC4gIjo6Z2V0Q29uc3RydWN0b3IoZXhlYyk7XG4iKTsKICAgICAgICAgICAgIH0g
ZWxzaWYgKCFAeyRhdHRyaWJ1dGUtPmdldHRlckV4Y2VwdGlvbnN9KSB7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzZSAiIC4gdWNmaXJzdCgkbmFtZSkgLiAiQXR0
ck51bTpcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc2Ug
IiAuIFdLX3VjZmlyc3QoJG5hbWUpIC4gIkF0dHJOdW06XG4iKTsKICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLCAiaW1wLT4kbmFtZSgpIikgLiAiO1xuIik7CiAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc2Ug
IiAuIHVjZmlyc3QoJG5hbWUpIC4gIkF0dHJOdW06IHtcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGNhc2UgIiAuIFdLX3VjZmlyc3QoJG5hbWUpIC4gIkF0dHJO
dW06IHtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAiaW1wLT4kbmFtZShlYykiKSAuICI7XG4iKTsKICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIGVjKTtcbiIpOwpAQCAtNzk1LDggKzgwNiw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5uYW1lOwogCiAgICAgICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b20ifSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzZSAiIC4gdWNmaXJzdCgkbmFtZSkgLiAiQXR0
ck51bToge1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgc2V0IiAuIHVjZmlyc3QoJG5hbWUpIC4gIihleGVjLCB2YWx1ZSk7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc2UgIiAuIFdL
X3VjZmlyc3QoJG5hbWUpIC4gIkF0dHJOdW06IHtcbiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNldCIgLiBXS191Y2ZpcnN0KCRuYW1lKSAu
ICIoZXhlYywgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLykgewogICAgICAgICAgICAg
ICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
dHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25z
dHJ1Y3RvciQvLzsKQEAgLTgwOSw5ICs4MjAsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlm
IChpc1NhZmVTY3JpcHQoZXhlYykpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICAgICAgSlNPYmplY3Q6OnB1dChleGVjLCBcIiRuYW1lXCIs
IHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzZSAiIC4gdWNmaXJzdCgkbmFt
ZSkgLiJBdHRyTnVtOiB7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGNhc2UgIiAuIFdLX3VjZmlyc3QoJG5hbWUpIC4iQXR0ck51bToge1xuIik7
CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7XG4iKSBpZiBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9
OwotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlt
cC0+c2V0IiAuIHVjZmlyc3QoJG5hbWUpIC4gIigiIC4gSlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZSwgInZhbHVlIikpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIGltcC0+c2V0IiAuIFdLX3VjZmlyc3QoJG5hbWUpIC4gIigi
IC4gSlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIikpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIsIGVjIikgaWYgQHskYXR0
cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKSBpZiBAeyRh
dHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9OwpAQCAtODQ2LDcgKzg1Nyw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3dp
dGNoIChpZCkge1xuIik7CiAgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRkYXRhTm9k
ZS0+ZnVuY3Rpb25zfSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2Fz
ZSAke2NsYXNzTmFtZX06OiIgLiB1Y2ZpcnN0KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKSAu
ICJGdW5jTnVtOiB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNh
c2UgJHtjbGFzc05hbWV9OjoiIC4gV0tfdWNmaXJzdCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFt
ZSkgLiAiRnVuY051bToge1xuIik7CiAKICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9KSB7CiAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDwke2NsYXNzTmFt
ZX0qPih0aGlzT2JqKS0+IiAuICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIC4gIihleGVjLCBh
cmdzKTtcbiAgICB9XG4iKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yT2JqQy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvck9iakMucG0JKHJldmlzaW9uIDE3ODU4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBA
QAogIyBDb3B5cmlnaHQgKEMpIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5v
cmc+CiAjIENvcHlyaWdodCAoQykgMjAwNiBBbmRlcnMgQ2FybHNzb24gPGFuZGVyc2NhQG1hYy5j
b20+IAogIyBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+CisjIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3ZWJr
aXQub3JnPgogIyBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KICMKICMg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgpAQCAtMTUyLDYgKzE1MywxNiBAQCBzdWIgZmluaXNoCiAgICAgbXkgJG9iamVjdCA9IHNo
aWZ0OwogfQogCisjIFVwcGVyY2FzZSB0aGUgZmlyc3QgbGV0dGVyLCB3aGlsZSByZXNwZWN0aW5n
IFdlYktpdCBzdHlsZSBndWlkZWxpbmVzLiAKKyMgRS5nLiwgeG1sRW5jb2RpbmcgYmVjb21lcyBY
TUxFbmNvZGluZywgYnV0IHhtbGxsYW5nIGJlY29tZXMgWG1sbGFuZy4KK3N1YiBXS191Y2ZpcnN0
Cit7CisgICAgbXkgJHBhcmFtID0gc2hpZnQ7CisgICAgbXkgJHJldCA9IHVjZmlyc3QoJHBhcmFt
KTsKKyAgICAkcmV0ID1+IHMvWG1sL1hNTC8gaWYgJHJldCA9fiAvXlhtbFteYS16XS87CisgICAg
cmV0dXJuICRyZXQ7Cit9CisKIHN1YiBSZWFkUHVibGljSW50ZXJmYWNlcwogewogICAgIG15ICRj
bGFzcyA9IHNoaWZ0OwpAQCAtNjcyLDcgKzY4Myw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAg
ICAgICAgICAgICAgICAgIyAtIFNFVFRFUgogICAgICAgICAgICAgICAgIGlmICghJGF0dHJpYnV0
ZUlzUmVhZG9ubHkpIHsKLSAgICAgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9ICItICh2b2lk
KXNldCIgLiB1Y2ZpcnN0KCRhdHRyaWJ1dGVOYW1lKSAuICI6KCIgLiAkYXR0cmlidXRlVHlwZSAu
ICIpbmV3IiAuIHVjZmlyc3QoJGF0dHJpYnV0ZU5hbWUpIC4gIjtcbiI7CisgICAgICAgICAgICAg
ICAgICAgIG15ICRzZXR0ZXIgPSAiLSAodm9pZClzZXQiIC4gV0tfdWNmaXJzdCgkYXR0cmlidXRl
TmFtZSkgLiAiOigiIC4gJGF0dHJpYnV0ZVR5cGUgLiAiKW5ldyIgLiBXS191Y2ZpcnN0KCRhdHRy
aWJ1dGVOYW1lKSAuICI7XG4iOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJBdHRy
aWJ1dGVzLCAkc2V0dGVyKSBpZiAkcHVibGljOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBw
cml2YXRlSGVhZGVyQXR0cmlidXRlcywgJHNldHRlcikgdW5sZXNzICRwdWJsaWM7CiAgICAgICAg
ICAgICAgICAgfQpAQCAtOTk4LDkgKzEwMDksOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgICMgRXhjZXB0aW9uIGhhbmRsaW5nCiAgICAgICAgICAgICAgICAg
bXkgJGhhc1NldHRlckV4Y2VwdGlvbiA9IEB7JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307
CiAKLSAgICAgICAgICAgICAgICAkYXR0cmlidXRlTmFtZSA9ICJzZXQiIC4gdWNmaXJzdCgkYXR0
cmlidXRlTmFtZSk7Ci0gICAgICAgICAgICAgICAgbXkgJHNldHRlck5hbWUgPSAic2V0IiAuIHVj
Zmlyc3QoJGF0dHJpYnV0ZUludGVyZmFjZU5hbWUpOwotICAgICAgICAgICAgICAgIG15ICRhcmdO
YW1lID0gIm5ldyIgLiB1Y2ZpcnN0KCRhdHRyaWJ1dGVJbnRlcmZhY2VOYW1lKTsKKyAgICAgICAg
ICAgICAgICAkYXR0cmlidXRlTmFtZSA9ICJzZXQiIC4gV0tfdWNmaXJzdCgkYXR0cmlidXRlTmFt
ZSk7CisgICAgICAgICAgICAgICAgbXkgJHNldHRlck5hbWUgPSAic2V0IiAuIFdLX3VjZmlyc3Qo
JGF0dHJpYnV0ZUludGVyZmFjZU5hbWUpOworICAgICAgICAgICAgICAgIG15ICRhcmdOYW1lID0g
Im5ldyIgLiBXS191Y2ZpcnN0KCRhdHRyaWJ1dGVJbnRlcmZhY2VOYW1lKTsKICAgICAgICAgICAg
ICAgICBteSAkYXJnID0gR2V0T2JqQ1R5cGVHZXR0ZXIoJGFyZ05hbWUsICRpZGxUeXBlKTsKIAog
ICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDb252ZXJ0RnJvbVN0cmluZyJ9KSB7CkBAIC0xMDUyLDcgKzEwNjMsNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIG15ICRwYXJhbVR5cGUgPSBH
ZXRPYmpDVHlwZSgkcGFyYW0tPnR5cGUpOwogCiAgICAgICAgICAgICAgICAgIyBtYWtlIGEgbmV3
IHBhcmFtZXRlciBuYW1lIGlmIHRoZSBvcmlnaW5hbCBjb25mbGljdHMgd2l0aCBhIHByb3BlcnR5
IG5hbWUKLSAgICAgICAgICAgICAgICAkcGFyYW1OYW1lID0gImluIiAuIHVjZmlyc3QoJHBhcmFt
TmFtZSkgaWYgJGF0dHJpYnV0ZU5hbWVzeyRwYXJhbU5hbWV9OworICAgICAgICAgICAgICAgICRw
YXJhbU5hbWUgPSAiaW4iIC4gV0tfdWNmaXJzdCgkcGFyYW1OYW1lKSBpZiAkYXR0cmlidXRlTmFt
ZXN7JHBhcmFtTmFtZX07CiAKICAgICAgICAgICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGUoJHBh
cmFtLT50eXBlKTsKIApJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTc4NTgpCisrKyBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBACiAgKiBDb3B5
cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAo
QykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAo
QykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykg
MjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEB3ZWJraXQub3JnKQogICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAt
MjE5LDEyICsyMjAsMTQgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KERPTUltcGxlbWVudGF0aW9uKiBp
bQogICAgICwgbV90aXRsZSgiIikKICAgICAsIG1fdGl0bGVTZXRFeHBsaWNpdGx5KGZhbHNlKQog
ICAgICwgbV9pbWFnZUxvYWRFdmVudFRpbWVyKHRoaXMsICZEb2N1bWVudDo6aW1hZ2VMb2FkRXZl
bnRUaW1lckZpcmVkKQotI2lmZGVmIFhCTF9TVVBQT1JUCi0gICAgLCBtX2JpbmRpbmdNYW5hZ2Vy
KG5ldyBYQkxCaW5kaW5nTWFuYWdlcih0aGlzKSkKLSNlbmRpZgogI2lmZGVmIFhTTFRfU1VQUE9S
VAogICAgICwgbV90cmFuc2Zvcm1Tb3VyY2UoMCkKICNlbmRpZgorICAgICwgbV94bWxWZXJzaW9u
KCIxLjAiKQorICAgICwgbV94bWxTdGFuZGFsb25lKGZhbHNlKQorI2lmZGVmIFhCTF9TVVBQT1JU
CisgICAgLCBtX2JpbmRpbmdNYW5hZ2VyKG5ldyBYQkxCaW5kaW5nTWFuYWdlcih0aGlzKSkKKyNl
bmRpZgogICAgICwgbV9zYXZlZFJlbmRlcmVyKDApCiAgICAgLCBtX3Bhc3N3b3JkRmllbGRzKDAp
CiAgICAgLCBtX3NlY3VyZUZvcm1zKDApCkBAIC02NzYsNiArNjc5LDI3IEBAIHZvaWQgRG9jdW1l
bnQ6OnNldENoYXJzZXQoY29uc3QgU3RyaW5nJiAKICAgICBkZWNvZGVyKCktPnNldEVuY29kaW5n
KGNoYXJzZXQsIFRleHRSZXNvdXJjZURlY29kZXI6OlVzZXJDaG9zZW5FbmNvZGluZyk7CiB9CiAK
K3ZvaWQgRG9jdW1lbnQ6OnNldFhNTFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBFeGNl
cHRpb25Db2RlJiBlYykKK3sKKyAgICAvLyBGSVhNRTogYWxzbyByYWlzZSBOT1RfU1VQUE9SVEVE
X0VSUiBpZiB0aGUgdmVyc2lvbiBpcyBzZXQgdG8gYSB2YWx1ZSB0aGF0IGlzIG5vdCBzdXBwb3J0
ZWQgYnkgdGhpcyBEb2N1bWVudC4KKyAgICBpZiAoIWltcGxlbWVudGF0aW9uKCktPmhhc0ZlYXR1
cmUoIlhNTCIsIFN0cmluZygpKSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgCisgICAgbV94bWxWZXJzaW9uID0gdmVyc2lvbjsK
K30KKwordm9pZCBEb2N1bWVudDo6c2V0WE1MU3RhbmRhbG9uZShib29sIHN0YW5kYWxvbmUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghaW1wbGVtZW50YXRpb24oKS0+aGFzRmVhdHVy
ZSgiWE1MIiwgU3RyaW5nKCkpKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3htbFN0YW5kYWxvbmUgPSBzdGFuZGFsb25l
OworfQorCiBFbGVtZW50KiBEb2N1bWVudDo6ZWxlbWVudEZyb21Qb2ludChpbnQgeCwgaW50IHkp
IGNvbnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigpKQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxNzg1
OCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3
IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAq
ICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAq
ICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqICAg
ICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEB3ZWJraXQub3JnKQogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgpAQCAtMTc5LDYgKzE4MCwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENoYXJz
ZXQoY29uc3QgU3RyaW5nJik7CiAKKyAgICBTdHJpbmcgeG1sRW5jb2RpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3htbEVuY29kaW5nOyB9CisgICAgU3RyaW5nIHhtbFZlcnNpb24oKSBjb25zdCB7IHJl
dHVybiBtX3htbFZlcnNpb247IH0KKyAgICBib29sIHhtbFN0YW5kYWxvbmUoKSBjb25zdCB7IHJl
dHVybiBtX3htbFN0YW5kYWxvbmU7IH0KKworICAgIHZvaWQgc2V0WE1MRW5jb2RpbmcoY29uc3Qg
U3RyaW5nJiBlbmNvZGluZykgeyBtX3htbEVuY29kaW5nID0gZW5jb2Rpbmc7IH0gLy8gcmVhZC1v
bmx5IHByb3BlcnR5LCBvbmx5IHRvIGJlIHNldCBmcm9tIFhNTFRva2VuaXplcgorICAgIHZvaWQg
c2V0WE1MVmVyc2lvbihjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBz
ZXRYTUxTdGFuZGFsb25lKGJvb2wsIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAgIFBhc3NSZWZQdHI8
Tm9kZT4gYWRvcHROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gc291cmNlLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgCiAgICAgUGFzc1JlZlB0cjxOYW1lTm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlOYW1lKGNv
bnN0IFN0cmluZyYgZWxlbWVudE5hbWUpOwpAQCAtNzE1LDYgKzcyNCwxMCBAQCBwcm90ZWN0ZWQ6
CiAKICAgICBpbnQgbV9kb2NJRDsgLy8gQSB1bmlxdWUgZG9jdW1lbnQgaWRlbnRpZmllciB1c2Vk
IGZvciB0aGluZ3MgbGlrZSBkb2N1bWVudC1zcGVjaWZpYyBtYXBwZWQgYXR0cmlidXRlcy4KIAor
ICAgIFN0cmluZyBtX3htbEVuY29kaW5nOworICAgIFN0cmluZyBtX3htbFZlcnNpb247CisgICAg
Ym9vbCBtX3htbFN0YW5kYWxvbmU7CisKIHB1YmxpYzoKICAgICBib29sIGluUGFnZUNhY2hlKCk7
CiAgICAgdm9pZCBzZXRJblBhZ2VDYWNoZShib29sIGZsYWcpOwpJbmRleDogV2ViQ29yZS9kb20v
RG9jdW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2
aXNpb24gMTc4NTgpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTYzLDYgKzYzLDEyIEBAIG1vZHVsZSBjb3JlIHsKIAogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0gRE9NU3RyaW5nIGlucHV0RW5jb2Rpbmc7
CiAKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGxd
IERPTVN0cmluZyB4bWxFbmNvZGluZzsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252
ZXJ0TnVsbFN0cmluZ1RvPU51bGxdIERPTVN0cmluZyB4bWxWZXJzaW9uCisgICAgICAgICAgICAg
ICAgICAgIHNldHRlciByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSBib29sZWFuIHhtbFN0YW5kYWxvbmUKKyAgICAgICAgICAgICAgICAgICAgc2V0dGVy
IHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKwogICAgICAgICBOb2RlICAgICAgICAgICAgICAgYWRv
cHROb2RlKGluIE5vZGUgc291cmNlKQogICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24p
OwogCkluZGV4OiBXZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL1hNTFRva2VuaXplci5jcHAJKHJldmlzaW9uIDE3ODU4KQorKysgV2ViQ29yZS9k
b20vWE1MVG9rZW5pemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKICAqCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDAgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqIENvcHly
aWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgotICogQ29weXJpZ2h0IChD
KSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkg
UHJvc2t1cnlha292IChhcEB3ZWJraXQub3JnKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03NSwx
NCArNzUsMTQgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrczsKIAogY2xhc3MgWE1MVG9rZW5pemVy
IDogcHVibGljIFRva2VuaXplciwgcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1Ymxp
YzoKLSAgICBYTUxUb2tlbml6ZXIoRG9jdW1lbnQgKiwgRnJhbWVWaWV3ICogPSAwKTsKLSAgICBY
TUxUb2tlbml6ZXIoRG9jdW1lbnRGcmFnbWVudCAqLCBFbGVtZW50ICopOworICAgIFhNTFRva2Vu
aXplcihEb2N1bWVudCosIEZyYW1lVmlldyogPSAwKTsKKyAgICBYTUxUb2tlbml6ZXIoRG9jdW1l
bnRGcmFnbWVudCosIEVsZW1lbnQqKTsKICAgICB+WE1MVG9rZW5pemVyKCk7CiAKICAgICBlbnVt
IEVycm9yVHlwZSB7IHdhcm5pbmcsIG5vbkZhdGFsLCBmYXRhbCB9OwogCiAgICAgLy8gZnJvbSBU
b2tlbml6ZXIKLSAgICB2aXJ0dWFsIGJvb2wgd3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nICZz
dHIsIGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCB3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcm
IHN0ciwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpOwogICAgIHZpcnR1YWwgYm9v
bCBpc1dhaXRpbmdGb3JTY3JpcHRzKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BQYXJz
aW5nKCk7CkBAIC05NiwxNyArOTYsMTggQEAgcHVibGljOgogICAgIGJvb2wgaXNYSFRNTERvY3Vt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1hIVE1MRG9jdW1lbnQ7IH0KIAogICAgIC8vIGZyb20g
Q2FjaGVkUmVzb3VyY2VDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UgKmZpbmlzaGVkT2JqKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UqIGZpbmlzaGVkT2JqKTsKIAogICAgIC8vIGNhbGxiYWNrcyBmcm9t
IHBhcnNlciBTQVgKLSAgICB2b2lkIGVycm9yKEVycm9yVHlwZSwgY29uc3QgY2hhciAqbWVzc2Fn
ZSwgdmFfbGlzdCBhcmdzKTsKLSAgICB2b2lkIHN0YXJ0RWxlbWVudE5zKGNvbnN0IHhtbENoYXIg
KnhtbExvY2FsTmFtZSwgY29uc3QgeG1sQ2hhciAqeG1sUHJlZml4LCBjb25zdCB4bWxDaGFyICp4
bWxVUkksIGludCBuYl9uYW1lc3BhY2VzLCBjb25zdCB4bWxDaGFyICoqbmFtZXNwYWNlcywgaW50
IG5iX2F0dHJpYnV0ZXMsIGludCBuYl9kZWZhdWx0ZWQsIGNvbnN0IHhtbENoYXIgKipsaWJ4bWxB
dHRyaWJ1dGVzKTsKKyAgICB2b2lkIGVycm9yKEVycm9yVHlwZSwgY29uc3QgY2hhciogbWVzc2Fn
ZSwgdmFfbGlzdCBhcmdzKTsKKyAgICB2b2lkIHN0YXJ0RWxlbWVudE5zKGNvbnN0IHhtbENoYXIq
IHhtbExvY2FsTmFtZSwgY29uc3QgeG1sQ2hhciogeG1sUHJlZml4LCBjb25zdCB4bWxDaGFyKiB4
bWxVUkksIGludCBuYl9uYW1lc3BhY2VzLCBjb25zdCB4bWxDaGFyKiogbmFtZXNwYWNlcywgaW50
IG5iX2F0dHJpYnV0ZXMsIGludCBuYl9kZWZhdWx0ZWQsIGNvbnN0IHhtbENoYXIqKiBsaWJ4bWxB
dHRyaWJ1dGVzKTsKICAgICB2b2lkIGVuZEVsZW1lbnROcygpOwotICAgIHZvaWQgY2hhcmFjdGVy
cyhjb25zdCB4bWxDaGFyICpzLCBpbnQgbGVuKTsKLSAgICB2b2lkIHByb2Nlc3NpbmdJbnN0cnVj
dGlvbihjb25zdCB4bWxDaGFyICp0YXJnZXQsIGNvbnN0IHhtbENoYXIgKmRhdGEpOwotICAgIHZv
aWQgY2RhdGFCbG9jayhjb25zdCB4bWxDaGFyICpzLCBpbnQgbGVuKTsKLSAgICB2b2lkIGNvbW1l
bnQoY29uc3QgeG1sQ2hhciAqcyk7Ci0gICAgdm9pZCBpbnRlcm5hbFN1YnNldChjb25zdCB4bWxD
aGFyICpuYW1lLCBjb25zdCB4bWxDaGFyICpleHRlcm5hbElELCBjb25zdCB4bWxDaGFyICpzeXN0
ZW1JRCk7CisgICAgdm9pZCBjaGFyYWN0ZXJzKGNvbnN0IHhtbENoYXIqIHMsIGludCBsZW4pOwor
ICAgIHZvaWQgcHJvY2Vzc2luZ0luc3RydWN0aW9uKGNvbnN0IHhtbENoYXIqIHRhcmdldCwgY29u
c3QgeG1sQ2hhciogZGF0YSk7CisgICAgdm9pZCBjZGF0YUJsb2NrKGNvbnN0IHhtbENoYXIqIHMs
IGludCBsZW4pOworICAgIHZvaWQgY29tbWVudChjb25zdCB4bWxDaGFyKiBzKTsKKyAgICB2b2lk
IHN0YXJ0RG9jdW1lbnQoY29uc3QgeG1sQ2hhciogdmVyc2lvbiwgY29uc3QgeG1sQ2hhciogZW5j
b2RpbmcsIGludCBzdGFuZGFsb25lKTsKKyAgICB2b2lkIGludGVybmFsU3Vic2V0KGNvbnN0IHht
bENoYXIqIG5hbWUsIGNvbnN0IHhtbENoYXIqIGV4dGVybmFsSUQsIGNvbnN0IHhtbENoYXIqIHN5
c3RlbUlEKTsKIAogICAgIHZvaWQgaGFuZGxlRXJyb3IoRXJyb3JUeXBlIHR5cGUsIGNvbnN0IGNo
YXIqIG0sIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKICAgICAKQEAgLTEyMiwx
MyArMTIzLDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBlbnRlclRleHQoKTsKICAgICB2b2lkIGV4
aXRUZXh0KCk7CiAKLSAgICBEb2N1bWVudCAqbV9kb2M7Ci0gICAgRnJhbWVWaWV3ICptX3ZpZXc7
CisgICAgRG9jdW1lbnQqIG1fZG9jOworICAgIEZyYW1lVmlldyogbV92aWV3OwogICAgIAogICAg
IFN0cmluZyBtX29yaWdpbmFsU291cmNlRm9yVHJhbnNmb3JtOwogCiAgICAgeG1sUGFyc2VyQ3R4
dFB0ciBtX2NvbnRleHQ7Ci0gICAgTm9kZSAqbV9jdXJyZW50Tm9kZTsKKyAgICBOb2RlKiBtX2N1
cnJlbnROb2RlOwogICAgIGJvb2wgbV9jdXJyZW50Tm9kZUlzUmVmZXJlbmNlZDsKIAogICAgIGJv
b2wgbV9zYXdFcnJvcjsKQEAgLTE0NSw3ICsxNDYsNyBAQCBwcml2YXRlOgogICAgIGludCBtX2xh
c3RFcnJvckNvbHVtbjsKICAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2VzOwogCi0gICAgQ2FjaGVk
U2NyaXB0ICptX3BlbmRpbmdTY3JpcHQ7CisgICAgQ2FjaGVkU2NyaXB0KiBtX3BlbmRpbmdTY3Jp
cHQ7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fc2NyaXB0RWxlbWVudDsKICAgICBpbnQgbV9zY3Jp
cHRTdGFydExpbmU7CiAgICAgCkBAIC0xNjQsNyArMTY1LDcgQEAgcHVibGljOgogICAgICAgICBt
X2NhbGxiYWNrcy5zZXRBdXRvRGVsZXRlKHRydWUpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGFw
cGVuZFN0YXJ0RWxlbWVudE5TQ2FsbGJhY2soY29uc3QgeG1sQ2hhciAqeG1sTG9jYWxOYW1lLCBj
b25zdCB4bWxDaGFyICp4bWxQcmVmaXgsIGNvbnN0IHhtbENoYXIgKnhtbFVSSSwgaW50IG5iX25h
bWVzcGFjZXMsIGNvbnN0IHhtbENoYXIgKipuYW1lc3BhY2VzLCBpbnQgbmJfYXR0cmlidXRlcywg
aW50IG5iX2RlZmF1bHRlZCwgY29uc3QgeG1sQ2hhciAqKmF0dHJpYnV0ZXMpCisgICAgdm9pZCBh
cHBlbmRTdGFydEVsZW1lbnROU0NhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHhtbExvY2FsTmFtZSwg
Y29uc3QgeG1sQ2hhciogeG1sUHJlZml4LCBjb25zdCB4bWxDaGFyKiB4bWxVUkksIGludCBuYl9u
YW1lc3BhY2VzLCBjb25zdCB4bWxDaGFyKiogbmFtZXNwYWNlcywgaW50IG5iX2F0dHJpYnV0ZXMs
IGludCBuYl9kZWZhdWx0ZWQsIGNvbnN0IHhtbENoYXIqKiBhdHRyaWJ1dGVzKQogICAgIHsKICAg
ICAgICAgUGVuZGluZ1N0YXJ0RWxlbWVudE5TQ2FsbGJhY2sqIGNhbGxiYWNrID0gbmV3IFBlbmRp
bmdTdGFydEVsZW1lbnROU0NhbGxiYWNrOwogICAgICAgICAKQEAgLTE3MiwxMiArMTczLDEyIEBA
IHB1YmxpYzoKICAgICAgICAgY2FsbGJhY2stPnhtbFByZWZpeCA9IHhtbFN0cmR1cCh4bWxQcmVm
aXgpOwogICAgICAgICBjYWxsYmFjay0+eG1sVVJJID0geG1sU3RyZHVwKHhtbFVSSSk7CiAgICAg
ICAgIGNhbGxiYWNrLT5uYl9uYW1lc3BhY2VzID0gbmJfbmFtZXNwYWNlczsKLSAgICAgICAgY2Fs
bGJhY2stPm5hbWVzcGFjZXMgPSByZWludGVycHJldF9jYXN0PHhtbENoYXIqKj4oeG1sTWFsbG9j
KHNpemVvZiAoeG1sQ2hhciopICogbmJfbmFtZXNwYWNlcyAqIDIpKTsKKyAgICAgICAgY2FsbGJh
Y2stPm5hbWVzcGFjZXMgPSByZWludGVycHJldF9jYXN0PHhtbENoYXIqKj4oeG1sTWFsbG9jKHNp
emVvZih4bWxDaGFyKikgKiBuYl9uYW1lc3BhY2VzICogMikpOwogICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG5iX25hbWVzcGFjZXMgKiAyIDsgaSsrKQogICAgICAgICAgICAgY2FsbGJhY2st
Pm5hbWVzcGFjZXNbaV0gPSB4bWxTdHJkdXAobmFtZXNwYWNlc1tpXSk7CiAgICAgICAgIGNhbGxi
YWNrLT5uYl9hdHRyaWJ1dGVzID0gbmJfYXR0cmlidXRlczsKICAgICAgICAgY2FsbGJhY2stPm5i
X2RlZmF1bHRlZCA9IG5iX2RlZmF1bHRlZDsKLSAgICAgICAgY2FsbGJhY2stPmF0dHJpYnV0ZXMg
PSAgcmVpbnRlcnByZXRfY2FzdDx4bWxDaGFyKio+KHhtbE1hbGxvYyhzaXplb2YgKHhtbENoYXIq
KSAqIG5iX2F0dHJpYnV0ZXMgKiA1KSk7CisgICAgICAgIGNhbGxiYWNrLT5hdHRyaWJ1dGVzID0g
IHJlaW50ZXJwcmV0X2Nhc3Q8eG1sQ2hhcioqPih4bWxNYWxsb2Moc2l6ZW9mKHhtbENoYXIqKSAq
IG5iX2F0dHJpYnV0ZXMgKiA1KSk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmJfYXR0
cmlidXRlczsgaSsrKSB7CiAgICAgICAgICAgICAvLyBFYWNoIGF0dHJpYnV0ZSBoYXMgNSBlbGVt
ZW50cyBpbiB0aGUgYXJyYXk6CiAgICAgICAgICAgICAvLyBuYW1lLCBwcmVmaXgsIHVyaSwgdmFs
dWUgYW5kIGFuIGVuZCBwb2ludGVyLgpAQCAtMjAxLDcgKzIwMiw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9jYWxsYmFja3MuYXBwZW5kKGNhbGxiYWNrKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBh
cHBlbmRDaGFyYWN0ZXJzQ2FsbGJhY2soY29uc3QgeG1sQ2hhciAqcywgaW50IGxlbikKKyAgICB2
b2lkIGFwcGVuZENoYXJhY3RlcnNDYWxsYmFjayhjb25zdCB4bWxDaGFyKiBzLCBpbnQgbGVuKQog
ICAgIHsKICAgICAgICAgUGVuZGluZ0NoYXJhY3RlcnNDYWxsYmFjayogY2FsbGJhY2sgPSBuZXcg
UGVuZGluZ0NoYXJhY3RlcnNDYWxsYmFjazsKICAgICAgICAgCkBAIC0yMTEsNyArMjEyLDcgQEAg
cHVibGljOgogICAgICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoY2FsbGJhY2spOyAgICAgICAgCiAg
ICAgfQogICAgIAotICAgIHZvaWQgYXBwZW5kUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2so
Y29uc3QgeG1sQ2hhciAqdGFyZ2V0LCBjb25zdCB4bWxDaGFyICpkYXRhKQorICAgIHZvaWQgYXBw
ZW5kUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2soY29uc3QgeG1sQ2hhciogdGFyZ2V0LCBj
b25zdCB4bWxDaGFyKiBkYXRhKQogICAgIHsKICAgICAgICAgUGVuZGluZ1Byb2Nlc3NpbmdJbnN0
cnVjdGlvbkNhbGxiYWNrKiBjYWxsYmFjayA9IG5ldyBQZW5kaW5nUHJvY2Vzc2luZ0luc3RydWN0
aW9uQ2FsbGJhY2s7CiAgICAgICAgIApAQCAtMjIxLDcgKzIyMiw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9jYWxsYmFja3MuYXBwZW5kKGNhbGxiYWNrKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBh
cHBlbmRDREFUQUJsb2NrQ2FsbGJhY2soY29uc3QgeG1sQ2hhciAqcywgaW50IGxlbikKKyAgICB2
b2lkIGFwcGVuZENEQVRBQmxvY2tDYWxsYmFjayhjb25zdCB4bWxDaGFyKiBzLCBpbnQgbGVuKQog
ICAgIHsKICAgICAgICAgUGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjayogY2FsbGJhY2sgPSBuZXcg
UGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjazsKICAgICAgICAgCkBAIC0yMzEsNyArMjMyLDcgQEAg
cHVibGljOgogICAgICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoY2FsbGJhY2spOyAgICAgICAgCiAg
ICAgfQogCi0gICAgdm9pZCBhcHBlbmRDb21tZW50Q2FsbGJhY2soY29uc3QgeG1sQ2hhciAqcykK
KyAgICB2b2lkIGFwcGVuZENvbW1lbnRDYWxsYmFjayhjb25zdCB4bWxDaGFyKiBzKQogICAgIHsK
ICAgICAgICAgUGVuZGluZ0NvbW1lbnRDYWxsYmFjayogY2FsbGJhY2sgPSBuZXcgUGVuZGluZ0Nv
bW1lbnRDYWxsYmFjazsKICAgICAgICAgCkBAIC0yNDAsNyArMjQxLDcgQEAgcHVibGljOgogICAg
ICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoY2FsbGJhY2spOyAgICAgICAgCiAgICAgfQogCi0gICAg
dm9pZCBhcHBlbmRJbnRlcm5hbFN1YnNldENhbGxiYWNrKGNvbnN0IHhtbENoYXIgKm5hbWUsIGNv
bnN0IHhtbENoYXIgKmV4dGVybmFsSUQsIGNvbnN0IHhtbENoYXIgKnN5c3RlbUlEKQorICAgIHZv
aWQgYXBwZW5kSW50ZXJuYWxTdWJzZXRDYWxsYmFjayhjb25zdCB4bWxDaGFyKiBuYW1lLCBjb25z
dCB4bWxDaGFyKiBleHRlcm5hbElELCBjb25zdCB4bWxDaGFyKiBzeXN0ZW1JRCkKICAgICB7CiAg
ICAgICAgIFBlbmRpbmdJbnRlcm5hbFN1YnNldENhbGxiYWNrKiBjYWxsYmFjayA9IG5ldyBQZW5k
aW5nSW50ZXJuYWxTdWJzZXRDYWxsYmFjazsKICAgICAgICAgCkBAIC0yNjUsNyArMjY2LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBjYWxsQW5kUmVtb3ZlRmlyc3RDYWxsYmFjayhYTUxUb2tlbml6
ZXIqIHRva2VuaXplcikKICAgICB7Ci0gICAgICAgIFBlbmRpbmdDYWxsYmFjayAqY2IgPSBtX2Nh
bGxiYWNrcy5nZXRGaXJzdCgpOworICAgICAgICBQZW5kaW5nQ2FsbGJhY2sqIGNiID0gbV9jYWxs
YmFja3MuZ2V0Rmlyc3QoKTsKICAgICAgICAgICAgIAogICAgICAgICBjYi0+Y2FsbCh0b2tlbml6
ZXIpOwogICAgICAgICBtX2NhbGxiYWNrcy5yZW1vdmVGaXJzdCgpOwpAQCAtNDI2LDEzICs0Mjcs
MTMgQEAgc3RhdGljIGludCBtYXRjaEZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgIHJldHVybiAx
OyAvLyBNYXRjaCBldmVyeXRoaW5nLgogfQogCi1zdGF0aWMgRG9jTG9hZGVyICpnbG9iYWxEb2NM
b2FkZXIgPSAwOworc3RhdGljIERvY0xvYWRlciogZ2xvYmFsRG9jTG9hZGVyID0gMDsKIAogY2xh
c3MgT2Zmc2V0QnVmZmVyIHsKIHB1YmxpYzoKICAgICBPZmZzZXRCdWZmZXIoY29uc3QgVmVjdG9y
PGNoYXI+JiBiKSA6IG1fYnVmZmVyKGIpLCBtX2N1cnJlbnRPZmZzZXQoMCkgeyB9CiAgICAgCi0g
ICAgaW50IHJlYWRPdXRCeXRlcyhjaGFyICpvdXRwdXRCdWZmZXIsIHVuc2lnbmVkIGFza2VkVG9S
ZWFkKSB7CisgICAgaW50IHJlYWRPdXRCeXRlcyhjaGFyKiBvdXRwdXRCdWZmZXIsIHVuc2lnbmVk
IGFza2VkVG9SZWFkKSB7CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVzTGVmdCA9IG1fYnVmZmVyLnNp
emUoKSAtIG1fY3VycmVudE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgbGVuVG9Db3B5ID0gbWlu
KGFza2VkVG9SZWFkLCBieXRlc0xlZnQpOwogICAgICAgICBpZiAobGVuVG9Db3B5KSB7CkBAIC00
NzMsNyArNDc0LDcgQEAgc3RhdGljIGludCByZWFkRnVuYyh2b2lkKiBjb250ZXh0LCBjaGFyKgog
ICAgIGlmIChjb250ZXh0ID09ICZnbG9iYWxEZXNjcmlwdG9yKQogICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgCi0gICAgT2Zmc2V0QnVmZmVyICpkYXRhID0gc3RhdGljX2Nhc3Q8T2Zmc2V0QnVm
ZmVyICo+KGNvbnRleHQpOworICAgIE9mZnNldEJ1ZmZlciogZGF0YSA9IHN0YXRpY19jYXN0PE9m
ZnNldEJ1ZmZlcio+KGNvbnRleHQpOwogICAgIHJldHVybiBkYXRhLT5yZWFkT3V0Qnl0ZXMoYnVm
ZmVyLCBsZW4pOwogfQogCkBAIC00ODMsMTAgKzQ4NCwxMCBAQCBzdGF0aWMgaW50IHdyaXRlRnVu
Yyh2b2lkKiBjb250ZXh0LCBjb25zCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgY2xv
c2VGdW5jKHZvaWQgKiBjb250ZXh0KQorc3RhdGljIGludCBjbG9zZUZ1bmModm9pZCogY29udGV4
dCkKIHsKICAgICBpZiAoY29udGV4dCAhPSAmZ2xvYmFsRGVzY3JpcHRvcikgewotICAgICAgICBP
ZmZzZXRCdWZmZXIgKmRhdGEgPSBzdGF0aWNfY2FzdDxPZmZzZXRCdWZmZXIgKj4oY29udGV4dCk7
CisgICAgICAgIE9mZnNldEJ1ZmZlciogZGF0YSA9IHN0YXRpY19jYXN0PE9mZnNldEJ1ZmZlcio+
KGNvbnRleHQpOwogICAgICAgICBkZWxldGUgZGF0YTsKICAgICB9CiAgICAgcmV0dXJuIDA7CkBA
IC00OTcsNyArNDk4LDcgQEAgc3RhdGljIHZvaWQgZXJyb3JGdW5jKHZvaWQqLCBjb25zdCBjaGFy
KgogICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIHRvIGRpc3BsYXkgZXJyb3IgbWVzc2Fn
ZXMgc29tZXdoZXJlLgogfQogCi12b2lkIHNldExvYWRlckZvckxpYlhNTENhbGxiYWNrcyhEb2NM
b2FkZXIgKmRvY0xvYWRlcikKK3ZvaWQgc2V0TG9hZGVyRm9yTGliWE1MQ2FsbGJhY2tzKERvY0xv
YWRlciogZG9jTG9hZGVyKQogewogICAgIGdsb2JhbERvY0xvYWRlciA9IGRvY0xvYWRlcjsKIH0K
QEAgLTUyMyw3ICs1MjQsNyBAQCBzdGF0aWMgeG1sUGFyc2VyQ3R4dFB0ciBjcmVhdGVTdHJpbmdQ
YXJzCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVhNTFRva2VuaXpl
cjo6WE1MVG9rZW5pemVyKERvY3VtZW50ICpfZG9jLCBGcmFtZVZpZXcgKl92aWV3KQorWE1MVG9r
ZW5pemVyOjpYTUxUb2tlbml6ZXIoRG9jdW1lbnQqIF9kb2MsIEZyYW1lVmlldyogX3ZpZXcpCiAg
ICAgOiBtX2RvYyhfZG9jKQogICAgICwgbV92aWV3KF92aWV3KQogICAgICwgbV9jb250ZXh0KDAp
CkBAIC01NDYsNyArNTQ3LDcgQEAgWE1MVG9rZW5pemVyOjpYTUxUb2tlbml6ZXIoRG9jdW1lbnQg
Kl9kbwogewogfQogCi1YTUxUb2tlbml6ZXI6OlhNTFRva2VuaXplcihEb2N1bWVudEZyYWdtZW50
ICpmcmFnbWVudCwgRWxlbWVudCAqcGFyZW50RWxlbWVudCkKK1hNTFRva2VuaXplcjo6WE1MVG9r
ZW5pemVyKERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBwYXJlbnRFbGVtZW50
KQogICAgIDogbV9kb2MoZnJhZ21lbnQtPmRvY3VtZW50KCkpCiAgICAgLCBtX3ZpZXcoMCkKICAg
ICAsIG1fY29udGV4dCgwKQpAQCAtNTc3LDE5ICs1NzgsMTkgQEAgWE1MVG9rZW5pemVyOjpYTUxU
b2tlbml6ZXIoRG9jdW1lbnRGcmFnbQogICAgIHdoaWxlIChwYXJlbnRFbGVtZW50KSB7CiAgICAg
ICAgIGVsZW1TdGFjay5hcHBlbmQocGFyZW50RWxlbWVudCk7CiAgICAgICAgIAotICAgICAgICBO
b2RlICpuID0gcGFyZW50RWxlbWVudC0+cGFyZW50Tm9kZSgpOworICAgICAgICBOb2RlKiBuID0g
cGFyZW50RWxlbWVudC0+cGFyZW50Tm9kZSgpOwogICAgICAgICBpZiAoIW4gfHwgIW4tPmlzRWxl
bWVudE5vZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBwYXJlbnRFbGVtZW50ID0g
c3RhdGljX2Nhc3Q8RWxlbWVudCAqPihuKTsKKyAgICAgICAgcGFyZW50RWxlbWVudCA9IHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihuKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGVsZW1TdGFjay5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBmb3IgKEVsZW1lbnQgKmVsZW1lbnQg
PSBlbGVtU3RhY2subGFzdCgpOyAhZWxlbVN0YWNrLmlzRW1wdHkoKTsgZWxlbVN0YWNrLnJlbW92
ZUxhc3QoKSkgewotICAgICAgICBpZiAoTmFtZWRBdHRyTWFwICphdHRycyA9IGVsZW1lbnQtPmF0
dHJpYnV0ZXMoKSkgeworICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IGVsZW1TdGFjay5sYXN0
KCk7ICFlbGVtU3RhY2suaXNFbXB0eSgpOyBlbGVtU3RhY2sucmVtb3ZlTGFzdCgpKSB7CisgICAg
ICAgIGlmIChOYW1lZEF0dHJNYXAqIGF0dHJzID0gZWxlbWVudC0+YXR0cmlidXRlcygpKSB7CiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cnMtPmxlbmd0aCgpOyBpKysp
IHsKLSAgICAgICAgICAgICAgICBBdHRyaWJ1dGUgKmF0dHIgPSBhdHRycy0+YXR0cmlidXRlSXRl
bShpKTsKKyAgICAgICAgICAgICAgICBBdHRyaWJ1dGUqIGF0dHIgPSBhdHRycy0+YXR0cmlidXRl
SXRlbShpKTsKICAgICAgICAgICAgICAgICBpZiAoYXR0ci0+bG9jYWxOYW1lKCkgPT0gInhtbG5z
IikKICAgICAgICAgICAgICAgICAgICAgbV9kZWZhdWx0TmFtZXNwYWNlVVJJID0gYXR0ci0+dmFs
dWUoKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRyLT5wcmVmaXgoKSA9PSAieG1sbnMi
KQpAQCAtNjY2LDE0ICs2NjcsMTQgQEAgaW5saW5lIFN0cmluZyB0b1N0cmluZyhjb25zdCB4bWxD
aGFyKiBzdAogfQogCiBzdHJ1Y3QgX3htbFNBWDJOYW1lc3BhY2UgewotICAgIGNvbnN0IHhtbENo
YXIgKnByZWZpeDsKLSAgICBjb25zdCB4bWxDaGFyICp1cmk7CisgICAgY29uc3QgeG1sQ2hhciog
cHJlZml4OworICAgIGNvbnN0IHhtbENoYXIqIHVyaTsKIH07CiB0eXBlZGVmIHN0cnVjdCBfeG1s
U0FYMk5hbWVzcGFjZSB4bWxTQVgyTmFtZXNwYWNlOwogCi1zdGF0aWMgaW5saW5lIHZvaWQgaGFu
ZGxlRWxlbWVudE5hbWVzcGFjZXMoRWxlbWVudCAqbmV3RWxlbWVudCwgY29uc3QgeG1sQ2hhciAq
KmxpYnhtbE5hbWVzcGFjZXMsIGludCBuYl9uYW1lc3BhY2VzLCBFeGNlcHRpb25Db2RlJiBlYykK
K3N0YXRpYyBpbmxpbmUgdm9pZCBoYW5kbGVFbGVtZW50TmFtZXNwYWNlcyhFbGVtZW50KiBuZXdF
bGVtZW50LCBjb25zdCB4bWxDaGFyKiogbGlieG1sTmFtZXNwYWNlcywgaW50IG5iX25hbWVzcGFj
ZXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHhtbFNBWDJOYW1lc3BhY2UgKm5hbWVzcGFj
ZXMgPSByZWludGVycHJldF9jYXN0PHhtbFNBWDJOYW1lc3BhY2UgKj4obGlieG1sTmFtZXNwYWNl
cyk7CisgICAgeG1sU0FYMk5hbWVzcGFjZSogbmFtZXNwYWNlcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
eG1sU0FYMk5hbWVzcGFjZSo+KGxpYnhtbE5hbWVzcGFjZXMpOwogICAgIGZvcihpbnQgaSA9IDA7
IGkgPCBuYl9uYW1lc3BhY2VzOyBpKyspIHsKICAgICAgICAgU3RyaW5nIG5hbWVzcGFjZVFOYW1l
ID0gInhtbG5zIjsKICAgICAgICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IHRvU3RyaW5nKG5hbWVz
cGFjZXNbaV0udXJpKTsKQEAgLTY4NiwxNyArNjg3LDE3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBo
YW5kbGVFbGVtZW50TmFtZXNwYWMKIH0KIAogc3RydWN0IF94bWxTQVgyQXR0cmlidXRlcyB7Ci0g
ICAgY29uc3QgeG1sQ2hhciAqbG9jYWxuYW1lOwotICAgIGNvbnN0IHhtbENoYXIgKnByZWZpeDsK
LSAgICBjb25zdCB4bWxDaGFyICp1cmk7Ci0gICAgY29uc3QgeG1sQ2hhciAqdmFsdWU7Ci0gICAg
Y29uc3QgeG1sQ2hhciAqZW5kOworICAgIGNvbnN0IHhtbENoYXIqIGxvY2FsbmFtZTsKKyAgICBj
b25zdCB4bWxDaGFyKiBwcmVmaXg7CisgICAgY29uc3QgeG1sQ2hhciogdXJpOworICAgIGNvbnN0
IHhtbENoYXIqIHZhbHVlOworICAgIGNvbnN0IHhtbENoYXIqIGVuZDsKIH07CiB0eXBlZGVmIHN0
cnVjdCBfeG1sU0FYMkF0dHJpYnV0ZXMgeG1sU0FYMkF0dHJpYnV0ZXM7CiAKLXN0YXRpYyBpbmxp
bmUgdm9pZCBoYW5kbGVFbGVtZW50QXR0cmlidXRlcyhFbGVtZW50ICpuZXdFbGVtZW50LCBjb25z
dCB4bWxDaGFyICoqbGlieG1sQXR0cmlidXRlcywgaW50IG5iX2F0dHJpYnV0ZXMsIEV4Y2VwdGlv
bkNvZGUmIGVjKQorc3RhdGljIGlubGluZSB2b2lkIGhhbmRsZUVsZW1lbnRBdHRyaWJ1dGVzKEVs
ZW1lbnQqIG5ld0VsZW1lbnQsIGNvbnN0IHhtbENoYXIqKiBsaWJ4bWxBdHRyaWJ1dGVzLCBpbnQg
bmJfYXR0cmlidXRlcywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgeG1sU0FYMkF0dHJpYnV0
ZXMgKmF0dHJpYnV0ZXMgPSByZWludGVycHJldF9jYXN0PHhtbFNBWDJBdHRyaWJ1dGVzICo+KGxp
YnhtbEF0dHJpYnV0ZXMpOworICAgIHhtbFNBWDJBdHRyaWJ1dGVzKiBhdHRyaWJ1dGVzID0gcmVp
bnRlcnByZXRfY2FzdDx4bWxTQVgyQXR0cmlidXRlcyo+KGxpYnhtbEF0dHJpYnV0ZXMpOwogICAg
IGZvcihpbnQgaSA9IDA7IGkgPCBuYl9hdHRyaWJ1dGVzOyBpKyspIHsKICAgICAgICAgU3RyaW5n
IGF0dHJMb2NhbE5hbWUgPSB0b1N0cmluZyhhdHRyaWJ1dGVzW2ldLmxvY2FsbmFtZSk7CiAgICAg
ICAgIGludCB2YWx1ZUxlbmd0aCA9IChpbnQpIChhdHRyaWJ1dGVzW2ldLmVuZCAtIGF0dHJpYnV0
ZXNbaV0udmFsdWUpOwpAQCAtNzExLDcgKzcxMiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBoYW5k
bGVFbGVtZW50QXR0cmlidXQKICAgICB9CiB9CiAKLXZvaWQgWE1MVG9rZW5pemVyOjpzdGFydEVs
ZW1lbnROcyhjb25zdCB4bWxDaGFyICp4bWxMb2NhbE5hbWUsIGNvbnN0IHhtbENoYXIgKnhtbFBy
ZWZpeCwgY29uc3QgeG1sQ2hhciAqeG1sVVJJLCBpbnQgbmJfbmFtZXNwYWNlcywgY29uc3QgeG1s
Q2hhciAqKmxpYnhtbE5hbWVzcGFjZXMsIGludCBuYl9hdHRyaWJ1dGVzLCBpbnQgbmJfZGVmYXVs
dGVkLCBjb25zdCB4bWxDaGFyICoqbGlieG1sQXR0cmlidXRlcykKK3ZvaWQgWE1MVG9rZW5pemVy
OjpzdGFydEVsZW1lbnROcyhjb25zdCB4bWxDaGFyKiB4bWxMb2NhbE5hbWUsIGNvbnN0IHhtbENo
YXIqIHhtbFByZWZpeCwgY29uc3QgeG1sQ2hhciogeG1sVVJJLCBpbnQgbmJfbmFtZXNwYWNlcywg
Y29uc3QgeG1sQ2hhcioqIGxpYnhtbE5hbWVzcGFjZXMsIGludCBuYl9hdHRyaWJ1dGVzLCBpbnQg
bmJfZGVmYXVsdGVkLCBjb25zdCB4bWxDaGFyKiogbGlieG1sQXR0cmlidXRlcykKIHsKICAgICBp
ZiAobV9wYXJzZXJTdG9wcGVkKQogICAgICAgICByZXR1cm47CkBAIC03NjgsNyArNzY5LDcgQEAg
dm9pZCBYTUxUb2tlbml6ZXI6OnN0YXJ0RWxlbWVudE5zKGNvbnN0IAogICAgIH0KIAogICAgIGlm
IChuZXdFbGVtZW50LT5oYXNUYWdOYW1lKHNjcmlwdFRhZykpCi0gICAgICAgIHN0YXRpY19jYXN0
PEhUTUxTY3JpcHRFbGVtZW50ICo+KG5ld0VsZW1lbnQuZ2V0KCkpLT5zZXRDcmVhdGVkQnlQYXJz
ZXIodHJ1ZSk7CisgICAgICAgIHN0YXRpY19jYXN0PEhUTUxTY3JpcHRFbGVtZW50Kj4obmV3RWxl
bWVudC5nZXQoKSktPnNldENyZWF0ZWRCeVBhcnNlcih0cnVlKTsKICAgICAKICAgICBpZiAobmV3
RWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnNjcmlwdFRhZykKICNpZmRlZiBTVkdfU1VQ
UE9SVApAQCAtNzk5LDcgKzgwMCw3IEBAIHZvaWQgWE1MVG9rZW5pemVyOjplbmRFbGVtZW50TnMo
KQogICAgIAogICAgIGV4aXRUZXh0KCk7CiAKLSAgICBOb2RlICpuID0gbV9jdXJyZW50Tm9kZTsK
KyAgICBOb2RlKiBuID0gbV9jdXJyZW50Tm9kZTsKICAgICB3aGlsZSAobi0+aW1wbGljaXROb2Rl
KCkpCiAgICAgICAgIG4gPSBuLT5wYXJlbnROb2RlKCk7CiAgICAgUmVmUHRyPE5vZGU+IHBhcmVu
dCA9IG4tPnBhcmVudE5vZGUoKTsKQEAgLTg0Miw3ICs4NDMsNyBAQCB2b2lkIFhNTFRva2VuaXpl
cjo6ZW5kRWxlbWVudE5zKCkKIAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgU3RyaW5n
IHNjcmlwdENvZGUgPSAiIjsKLSAgICAgICAgICAgIGZvciAoTm9kZSAqY2hpbGQgPSBzY3JpcHRF
bGVtZW50LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygp
KSB7CisgICAgICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gc2NyaXB0RWxlbWVudC0+Zmlyc3RD
aGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICAg
ICAgICAgIGlmIChjaGlsZC0+aXNUZXh0Tm9kZSgpIHx8IGNoaWxkLT5ub2RlVHlwZSgpID09IE5v
ZGU6OkNEQVRBX1NFQ1RJT05fTk9ERSkKICAgICAgICAgICAgICAgICAgICAgc2NyaXB0Q29kZSAr
PSBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJEYXRhKj4oY2hpbGQpLT5kYXRhKCk7CiAgICAgICAgICAg
ICB9CkBAIC04NTUsNyArODU2LDcgQEAgdm9pZCBYTUxUb2tlbml6ZXI6OmVuZEVsZW1lbnROcygp
CiAgICAgc2V0Q3VycmVudE5vZGUocGFyZW50LmdldCgpKTsKIH0KIAotdm9pZCBYTUxUb2tlbml6
ZXI6OmNoYXJhY3RlcnMoY29uc3QgeG1sQ2hhciAqcywgaW50IGxlbikKK3ZvaWQgWE1MVG9rZW5p
emVyOjpjaGFyYWN0ZXJzKGNvbnN0IHhtbENoYXIqIHMsIGludCBsZW4pCiB7CiAgICAgaWYgKG1f
cGFyc2VyU3RvcHBlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtOTIxLDcgKzkyMiw3IEBAIHZvaWQg
WE1MVG9rZW5pemVyOjpoYW5kbGVFcnJvcihFcnJvclR5cGUKICAgICAgICAgc3RvcFBhcnNpbmco
KTsgICAgCiB9CiAKLXZvaWQgWE1MVG9rZW5pemVyOjplcnJvcihFcnJvclR5cGUgdHlwZSwgY29u
c3QgY2hhciAqbWVzc2FnZSwgdmFfbGlzdCBhcmdzKQordm9pZCBYTUxUb2tlbml6ZXI6OmVycm9y
KEVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCB2YV9saXN0IGFyZ3MpCiB7CiAg
ICAgaWYgKG1fcGFyc2VyU3RvcHBlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtOTMwLDcgKzkzMSw3
IEBAIHZvaWQgWE1MVG9rZW5pemVyOjplcnJvcihFcnJvclR5cGUgdHlwZSwKICAgICBjaGFyIG1b
MTAyNF07CiAgICAgdnNucHJpbnRmKG0sIHNpemVvZihtKSAtIDEsIG1lc3NhZ2UsIGFyZ3MpOwog
I2Vsc2UKLSAgICBjaGFyICptOworICAgIGNoYXIqIG07CiAgICAgdmFzcHJpbnRmKCZtLCBtZXNz
YWdlLCBhcmdzKTsKICNlbmRpZgogICAgIApAQCAtOTQ0LDcgKzk0NSw3IEBAIHZvaWQgWE1MVG9r
ZW5pemVyOjplcnJvcihFcnJvclR5cGUgdHlwZSwKICNlbmRpZgogfQogCi12b2lkIFhNTFRva2Vu
aXplcjo6cHJvY2Vzc2luZ0luc3RydWN0aW9uKGNvbnN0IHhtbENoYXIgKnRhcmdldCwgY29uc3Qg
eG1sQ2hhciAqZGF0YSkKK3ZvaWQgWE1MVG9rZW5pemVyOjpwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24o
Y29uc3QgeG1sQ2hhciogdGFyZ2V0LCBjb25zdCB4bWxDaGFyKiBkYXRhKQogewogICAgIGlmICht
X3BhcnNlclN0b3BwZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTk4Miw3ICs5ODMsNyBAQCB2b2lk
IFhNTFRva2VuaXplcjo6cHJvY2Vzc2luZ0luc3RydWN0aW9uCiAgICAgfQogfQogCi12b2lkIFhN
TFRva2VuaXplcjo6Y2RhdGFCbG9jayhjb25zdCB4bWxDaGFyICpzLCBpbnQgbGVuKQordm9pZCBY
TUxUb2tlbml6ZXI6OmNkYXRhQmxvY2soY29uc3QgeG1sQ2hhciogcywgaW50IGxlbikKIHsKICAg
ICBpZiAobV9wYXJzZXJTdG9wcGVkKQogICAgICAgICByZXR1cm47CkBAIC0xMDAxLDcgKzEwMDIs
NyBAQCB2b2lkIFhNTFRva2VuaXplcjo6Y2RhdGFCbG9jayhjb25zdCB4bWxDCiAgICAgICAgIG5l
d05vZGUtPmF0dGFjaCgpOwogfQogCi12b2lkIFhNTFRva2VuaXplcjo6Y29tbWVudChjb25zdCB4
bWxDaGFyICpzKQordm9pZCBYTUxUb2tlbml6ZXI6OmNvbW1lbnQoY29uc3QgeG1sQ2hhciogcykK
IHsKICAgICBpZiAobV9wYXJzZXJTdG9wcGVkKQogICAgICAgICByZXR1cm47CkBAIC0xMDE5LDcg
KzEwMjAsMTggQEAgdm9pZCBYTUxUb2tlbml6ZXI6OmNvbW1lbnQoY29uc3QgeG1sQ2hhcgogICAg
ICAgICBuZXdOb2RlLT5hdHRhY2goKTsKIH0KIAotdm9pZCBYTUxUb2tlbml6ZXI6OmludGVybmFs
U3Vic2V0KGNvbnN0IHhtbENoYXIgKm5hbWUsIGNvbnN0IHhtbENoYXIgKmV4dGVybmFsSUQsIGNv
bnN0IHhtbENoYXIgKnN5c3RlbUlEKQordm9pZCBYTUxUb2tlbml6ZXI6OnN0YXJ0RG9jdW1lbnQo
Y29uc3QgeG1sQ2hhciogdmVyc2lvbiwgY29uc3QgeG1sQ2hhciogZW5jb2RpbmcsIGludCBzdGFu
ZGFsb25lKQoreworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIAorICAgIGlmICh2ZXJz
aW9uKQorICAgICAgICBtX2RvYy0+c2V0WE1MVmVyc2lvbih0b1N0cmluZyh2ZXJzaW9uKSwgZWMp
OworICAgIG1fZG9jLT5zZXRYTUxTdGFuZGFsb25lKHN0YW5kYWxvbmUgPT0gMSwgZWMpOyAvLyBw
b3NzaWJsZSB2YWx1ZXMgYXJlIDAsIDEsIGFuZCAtMQorICAgIGlmIChlbmNvZGluZykKKyAgICAg
ICAgbV9kb2MtPnNldFhNTEVuY29kaW5nKHRvU3RyaW5nKGVuY29kaW5nKSk7Cit9CisKK3ZvaWQg
WE1MVG9rZW5pemVyOjppbnRlcm5hbFN1YnNldChjb25zdCB4bWxDaGFyKiBuYW1lLCBjb25zdCB4
bWxDaGFyKiBleHRlcm5hbElELCBjb25zdCB4bWxDaGFyKiBzeXN0ZW1JRCkKIHsKICAgICBpZiAo
bV9wYXJzZXJTdG9wcGVkKQogICAgICAgICByZXR1cm47CkBAIC0xMDI5LDI3ICsxMDQxLDI3IEBA
IHZvaWQgWE1MVG9rZW5pemVyOjppbnRlcm5hbFN1YnNldChjb25zdCAKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICBEb2N1bWVudCAqZG9jID0gbV9kb2M7CisgICAgRG9jdW1lbnQq
IGRvYyA9IG1fZG9jOwogICAgIGlmICghZG9jKQogICAgICAgICByZXR1cm47CiAKICAgICBkb2Mt
PnNldERvY1R5cGUobmV3IERvY3VtZW50VHlwZShkb2MsIHRvU3RyaW5nKG5hbWUpLCB0b1N0cmlu
ZyhleHRlcm5hbElEKSwgdG9TdHJpbmcoc3lzdGVtSUQpKSk7CiB9CiAKLWlubGluZSBYTUxUb2tl
bml6ZXIgKmdldFRva2VuaXplcih2b2lkICpjbG9zdXJlKQoraW5saW5lIFhNTFRva2VuaXplciog
Z2V0VG9rZW5pemVyKHZvaWQqIGNsb3N1cmUpCiB7CiAgICAgeG1sUGFyc2VyQ3R4dFB0ciBjdHh0
ID0gc3RhdGljX2Nhc3Q8eG1sUGFyc2VyQ3R4dFB0cj4oY2xvc3VyZSk7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PFhNTFRva2VuaXplciAqPihjdHh0LT5fcHJpdmF0ZSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFhNTFRva2VuaXplcio+KGN0eHQtPl9wcml2YXRlKTsKIH0KIAogLy8gVGhpcyBp
cyBhIGhhY2sgYXJvdW5kIGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTIxOQogLy8gT3RoZXJ3aXNlIGxpYnhtbCBzZWVtcyB0byBjYWxsIGFsbCB0aGUgU0FYIGNh
bGxiYWNrcyB0d2ljZSBmb3IgYW55IHJlcGxhY2VkIGVudGl0eS4KLXN0YXRpYyBpbmxpbmUgYm9v
bCBoYWNrQXJvdW5kTGliWE1MRW50aXR5QnVnKHZvaWQgKmNsb3N1cmUpCitzdGF0aWMgaW5saW5l
IGJvb2wgaGFja0Fyb3VuZExpYlhNTEVudGl0eUJ1Zyh2b2lkKiBjbG9zdXJlKQogewogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx4bWxQYXJzZXJDdHh0UHRyPihjbG9zdXJlKS0+bm9kZTsKIH0KIAot
c3RhdGljIHZvaWQgc3RhcnRFbGVtZW50TnNIYW5kbGVyKHZvaWQgKmNsb3N1cmUsIGNvbnN0IHht
bENoYXIgKmxvY2FsbmFtZSwgY29uc3QgeG1sQ2hhciAqcHJlZml4LCBjb25zdCB4bWxDaGFyICp1
cmksIGludCBuYl9uYW1lc3BhY2VzLCBjb25zdCB4bWxDaGFyICoqbmFtZXNwYWNlcywgaW50IG5i
X2F0dHJpYnV0ZXMsIGludCBuYl9kZWZhdWx0ZWQsIGNvbnN0IHhtbENoYXIgKipsaWJ4bWxBdHRy
aWJ1dGVzKQorc3RhdGljIHZvaWQgc3RhcnRFbGVtZW50TnNIYW5kbGVyKHZvaWQqIGNsb3N1cmUs
IGNvbnN0IHhtbENoYXIqIGxvY2FsbmFtZSwgY29uc3QgeG1sQ2hhciogcHJlZml4LCBjb25zdCB4
bWxDaGFyKiB1cmksIGludCBuYl9uYW1lc3BhY2VzLCBjb25zdCB4bWxDaGFyKiogbmFtZXNwYWNl
cywgaW50IG5iX2F0dHJpYnV0ZXMsIGludCBuYl9kZWZhdWx0ZWQsIGNvbnN0IHhtbENoYXIqKiBs
aWJ4bWxBdHRyaWJ1dGVzKQogewogICAgIGlmIChoYWNrQXJvdW5kTGliWE1MRW50aXR5QnVnKGNs
b3N1cmUpKQogICAgICAgICByZXR1cm47CkBAIC0xMDU3LDcgKzEwNjksNyBAQCBzdGF0aWMgdm9p
ZCBzdGFydEVsZW1lbnROc0hhbmRsZXIodm9pZCAqCiAgICAgZ2V0VG9rZW5pemVyKGNsb3N1cmUp
LT5zdGFydEVsZW1lbnROcyhsb2NhbG5hbWUsIHByZWZpeCwgdXJpLCBuYl9uYW1lc3BhY2VzLCBu
YW1lc3BhY2VzLCBuYl9hdHRyaWJ1dGVzLCBuYl9kZWZhdWx0ZWQsIGxpYnhtbEF0dHJpYnV0ZXMp
OwogfQogCi1zdGF0aWMgdm9pZCBlbmRFbGVtZW50TnNIYW5kbGVyKHZvaWQgKmNsb3N1cmUsIGNv
bnN0IHhtbENoYXIgKmxvY2FsbmFtZSwgY29uc3QgeG1sQ2hhciAqcHJlZml4LCBjb25zdCB4bWxD
aGFyICp1cmkpCitzdGF0aWMgdm9pZCBlbmRFbGVtZW50TnNIYW5kbGVyKHZvaWQqIGNsb3N1cmUs
IGNvbnN0IHhtbENoYXIqIGxvY2FsbmFtZSwgY29uc3QgeG1sQ2hhciogcHJlZml4LCBjb25zdCB4
bWxDaGFyKiB1cmkpCiB7CiAgICAgaWYgKGhhY2tBcm91bmRMaWJYTUxFbnRpdHlCdWcoY2xvc3Vy
ZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNjUsNyArMTA3Nyw3IEBAIHN0YXRpYyB2b2lkIGVu
ZEVsZW1lbnROc0hhbmRsZXIodm9pZCAqY2wKICAgICBnZXRUb2tlbml6ZXIoY2xvc3VyZSktPmVu
ZEVsZW1lbnROcygpOwogfQogCi1zdGF0aWMgdm9pZCBjaGFyYWN0ZXJzSGFuZGxlcih2b2lkICpj
bG9zdXJlLCBjb25zdCB4bWxDaGFyICpzLCBpbnQgbGVuKQorc3RhdGljIHZvaWQgY2hhcmFjdGVy
c0hhbmRsZXIodm9pZCogY2xvc3VyZSwgY29uc3QgeG1sQ2hhciogcywgaW50IGxlbikKIHsKICAg
ICBpZiAoaGFja0Fyb3VuZExpYlhNTEVudGl0eUJ1ZyhjbG9zdXJlKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTA3Myw3ICsxMDg1LDcgQEAgc3RhdGljIHZvaWQgY2hhcmFjdGVyc0hhbmRsZXIodm9p
ZCAqY2xvcwogICAgIGdldFRva2VuaXplcihjbG9zdXJlKS0+Y2hhcmFjdGVycyhzLCBsZW4pOwog
fQogCi1zdGF0aWMgdm9pZCBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyKHZvaWQgKmNsb3N1
cmUsIGNvbnN0IHhtbENoYXIgKnRhcmdldCwgY29uc3QgeG1sQ2hhciAqZGF0YSkKK3N0YXRpYyB2
b2lkIHByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIodm9pZCogY2xvc3VyZSwgY29uc3QgeG1s
Q2hhciogdGFyZ2V0LCBjb25zdCB4bWxDaGFyKiBkYXRhKQogewogICAgIGlmIChoYWNrQXJvdW5k
TGliWE1MRW50aXR5QnVnKGNsb3N1cmUpKQogICAgICAgICByZXR1cm47CkBAIC0xMDgxLDcgKzEw
OTMsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyCiAgICAgZ2V0
VG9rZW5pemVyKGNsb3N1cmUpLT5wcm9jZXNzaW5nSW5zdHJ1Y3Rpb24odGFyZ2V0LCBkYXRhKTsK
IH0KIAotc3RhdGljIHZvaWQgY2RhdGFCbG9ja0hhbmRsZXIodm9pZCAqY2xvc3VyZSwgY29uc3Qg
eG1sQ2hhciAqcywgaW50IGxlbikKK3N0YXRpYyB2b2lkIGNkYXRhQmxvY2tIYW5kbGVyKHZvaWQq
IGNsb3N1cmUsIGNvbnN0IHhtbENoYXIqIHMsIGludCBsZW4pCiB7CiAgICAgaWYgKGhhY2tBcm91
bmRMaWJYTUxFbnRpdHlCdWcoY2xvc3VyZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwODksNyAr
MTEwMSw3IEBAIHN0YXRpYyB2b2lkIGNkYXRhQmxvY2tIYW5kbGVyKHZvaWQgKmNsb3MKICAgICBn
ZXRUb2tlbml6ZXIoY2xvc3VyZSktPmNkYXRhQmxvY2socywgbGVuKTsKIH0KIAotc3RhdGljIHZv
aWQgY29tbWVudEhhbmRsZXIodm9pZCAqY2xvc3VyZSwgY29uc3QgeG1sQ2hhciAqY29tbWVudCkK
K3N0YXRpYyB2b2lkIGNvbW1lbnRIYW5kbGVyKHZvaWQqIGNsb3N1cmUsIGNvbnN0IHhtbENoYXIq
IGNvbW1lbnQpCiB7CiAgICAgaWYgKGhhY2tBcm91bmRMaWJYTUxFbnRpdHlCdWcoY2xvc3VyZSkp
CiAgICAgICAgIHJldHVybjsKQEAgLTEwOTcsNyArMTEwOSw3IEBAIHN0YXRpYyB2b2lkIGNvbW1l
bnRIYW5kbGVyKHZvaWQgKmNsb3N1cmUKICAgICBnZXRUb2tlbml6ZXIoY2xvc3VyZSktPmNvbW1l
bnQoY29tbWVudCk7CiB9CiAKLXN0YXRpYyB2b2lkIHdhcm5pbmdIYW5kbGVyKHZvaWQgKmNsb3N1
cmUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKK3N0YXRpYyB2b2lkIHdhcm5pbmdIYW5kbGVy
KHZvaWQqIGNsb3N1cmUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIC4uLikKIHsKICAgICB2YV9saXN0
IGFyZ3M7CiAgICAgdmFfc3RhcnQoYXJncywgbWVzc2FnZSk7CkBAIC0xMTA1LDcgKzExMTcsNyBA
QCBzdGF0aWMgdm9pZCB3YXJuaW5nSGFuZGxlcih2b2lkICpjbG9zdXJlCiAgICAgdmFfZW5kKGFy
Z3MpOwogfQogCi1zdGF0aWMgdm9pZCBmYXRhbEVycm9ySGFuZGxlcih2b2lkICpjbG9zdXJlLCBj
b25zdCBjaGFyICptZXNzYWdlLCAuLi4pCitzdGF0aWMgdm9pZCBmYXRhbEVycm9ySGFuZGxlcih2
b2lkKiBjbG9zdXJlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCAuLi4pCiB7CiAgICAgdmFfbGlzdCBh
cmdzOwogICAgIHZhX3N0YXJ0KGFyZ3MsIG1lc3NhZ2UpOwpAQCAtMTExMyw3ICsxMTI1LDcgQEAg
c3RhdGljIHZvaWQgZmF0YWxFcnJvckhhbmRsZXIodm9pZCAqY2xvcwogICAgIHZhX2VuZChhcmdz
KTsKIH0KIAotc3RhdGljIHZvaWQgbm9ybWFsRXJyb3JIYW5kbGVyKHZvaWQgKmNsb3N1cmUsIGNv
bnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKK3N0YXRpYyB2b2lkIG5vcm1hbEVycm9ySGFuZGxlcih2
b2lkKiBjbG9zdXJlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCAuLi4pCiB7CiAgICAgdmFfbGlzdCBh
cmdzOwogICAgIHZhX3N0YXJ0KGFyZ3MsIG1lc3NhZ2UpOwpAQCAtMTE0Niw3ICsxMTU4LDcgQEAg
c3RhdGljIHhtbEVudGl0eVB0ciBnZXRYSFRNTEVudGl0eShjb25zdAogICAgIHJldHVybiAmc2hh
cmVkWEhUTUxFbnRpdHk7CiB9CiAKLXN0YXRpYyB4bWxFbnRpdHlQdHIgZ2V0RW50aXR5SGFuZGxl
cih2b2lkICpjbG9zdXJlLCBjb25zdCB4bWxDaGFyICpuYW1lKQorc3RhdGljIHhtbEVudGl0eVB0
ciBnZXRFbnRpdHlIYW5kbGVyKHZvaWQqIGNsb3N1cmUsIGNvbnN0IHhtbENoYXIqIG5hbWUpCiB7
CiAgICAgeG1sUGFyc2VyQ3R4dFB0ciBjdHh0ID0gc3RhdGljX2Nhc3Q8eG1sUGFyc2VyQ3R4dFB0
cj4oY2xvc3VyZSk7CiAgICAgeG1sRW50aXR5UHRyIGVudCA9IHhtbEdldFByZWRlZmluZWRFbnRp
dHkobmFtZSk7CkBAIC0xMTYwLDEzICsxMTcyLDIwIEBAIHN0YXRpYyB4bWxFbnRpdHlQdHIgZ2V0
RW50aXR5SGFuZGxlcih2b2kKICAgICByZXR1cm4gZW50OwogfQogCi1zdGF0aWMgdm9pZCBpbnRl
cm5hbFN1YnNldEhhbmRsZXIodm9pZCAqY2xvc3VyZSwgY29uc3QgeG1sQ2hhciAqbmFtZSwgY29u
c3QgeG1sQ2hhciAqZXh0ZXJuYWxJRCwgY29uc3QgeG1sQ2hhciAqc3lzdGVtSUQpCitzdGF0aWMg
dm9pZCBzdGFydERvY3VtZW50SGFuZGxlcih2b2lkKiBjbG9zdXJlKQoreworICAgIHhtbFBhcnNl
ckN0eHQqIGN0eHQgPSBzdGF0aWNfY2FzdDx4bWxQYXJzZXJDdHh0Kj4oY2xvc3VyZSk7CisgICAg
Z2V0VG9rZW5pemVyKGNsb3N1cmUpLT5zdGFydERvY3VtZW50KGN0eHQtPnZlcnNpb24sIGN0eHQt
PmVuY29kaW5nLCBjdHh0LT5zdGFuZGFsb25lKTsKKyAgICB4bWxTQVgyU3RhcnREb2N1bWVudChj
bG9zdXJlKTsKK30KKworc3RhdGljIHZvaWQgaW50ZXJuYWxTdWJzZXRIYW5kbGVyKHZvaWQqIGNs
b3N1cmUsIGNvbnN0IHhtbENoYXIqIG5hbWUsIGNvbnN0IHhtbENoYXIqIGV4dGVybmFsSUQsIGNv
bnN0IHhtbENoYXIqIHN5c3RlbUlEKQogewogICAgIGdldFRva2VuaXplcihjbG9zdXJlKS0+aW50
ZXJuYWxTdWJzZXQobmFtZSwgZXh0ZXJuYWxJRCwgc3lzdGVtSUQpOwogICAgIHhtbFNBWDJJbnRl
cm5hbFN1YnNldChjbG9zdXJlLCBuYW1lLCBleHRlcm5hbElELCBzeXN0ZW1JRCk7CiB9CiAKLXN0
YXRpYyB2b2lkIGV4dGVybmFsU3Vic2V0SGFuZGxlcih2b2lkICpjbG9zdXJlLCBjb25zdCB4bWxD
aGFyICpuYW1lLCBjb25zdCB4bWxDaGFyICpleHRlcm5hbElkLCBjb25zdCB4bWxDaGFyICpzeXN0
ZW1JZCkKK3N0YXRpYyB2b2lkIGV4dGVybmFsU3Vic2V0SGFuZGxlcih2b2lkKiBjbG9zdXJlLCBj
b25zdCB4bWxDaGFyKiBuYW1lLCBjb25zdCB4bWxDaGFyKiBleHRlcm5hbElkLCBjb25zdCB4bWxD
aGFyKiBzeXN0ZW1JZCkKIHsKICAgICBTdHJpbmcgZXh0SWQgPSB0b1N0cmluZyhleHRlcm5hbElk
KTsKICAgICBpZiAoKGV4dElkID09ICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIpCkBAIC0xMTgwLDcgKzExOTksNyBAQCBzdGF0aWMgdm9pZCBleHRlcm5hbFN1YnNldEhh
bmRsZXIodm9pZCAqCiAgICAgICAgIGdldFRva2VuaXplcihjbG9zdXJlKS0+c2V0SXNYSFRNTERv
Y3VtZW50KHRydWUpOyAvLyBjb250cm9scyBpZiB3ZSByZXBsYWNlIGVudGl0aWVzIG9yIG5vdC4K
IH0KIAotc3RhdGljIHZvaWQgaWdub3JhYmxlV2hpdGVzcGFjZUhhbmRsZXIodm9pZCAqY3R4LCBj
b25zdCB4bWxDaGFyICpjaCwgaW50IGxlbikKK3N0YXRpYyB2b2lkIGlnbm9yYWJsZVdoaXRlc3Bh
Y2VIYW5kbGVyKHZvaWQqIGN0eCwgY29uc3QgeG1sQ2hhciogY2gsIGludCBsZW4pCiB7CiAgICAg
Ly8gbm90aGluZyB0byBkbywgYnV0IHdlIG5lZWQgdGhpcyB0byB3b3JrIGFyb3VuZCBhIGNyYXNo
ZXIKICAgICAvLyBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIy
NTUKQEAgLTEyMDEsNyArMTIyMCw3IEBAIHZvaWQgWE1MVG9rZW5pemVyOjppbml0aWFsaXplUGFy
c2VyQ29udGUKICAgICBzYXguc3RhcnRFbGVtZW50TnMgPSBzdGFydEVsZW1lbnROc0hhbmRsZXI7
CiAgICAgc2F4LmVuZEVsZW1lbnROcyA9IGVuZEVsZW1lbnROc0hhbmRsZXI7CiAgICAgc2F4Lmdl
dEVudGl0eSA9IGdldEVudGl0eUhhbmRsZXI7Ci0gICAgc2F4LnN0YXJ0RG9jdW1lbnQgPSB4bWxT
QVgyU3RhcnREb2N1bWVudDsKKyAgICBzYXguc3RhcnREb2N1bWVudCA9IHN0YXJ0RG9jdW1lbnRI
YW5kbGVyOwogICAgIHNheC5pbnRlcm5hbFN1YnNldCA9IGludGVybmFsU3Vic2V0SGFuZGxlcjsK
ICAgICBzYXguZXh0ZXJuYWxTdWJzZXQgPSBleHRlcm5hbFN1YnNldEhhbmRsZXI7CiAgICAgc2F4
Lmlnbm9yYWJsZVdoaXRlc3BhY2UgPSBpZ25vcmFibGVXaGl0ZXNwYWNlSGFuZGxlcjsKQEAgLTEy
ODcsNyArMTMwNiw3IEBAIHZvaWQgWE1MVG9rZW5pemVyOjppbnNlcnRFcnJvck1lc3NhZ2VCbG8K
IAogICAgIC8vIENyZWF0ZSBlbGVtZW50cyBmb3IgZGlzcGxheQogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIERvY3VtZW50ICpkb2MgPSBtX2RvYzsKKyAgICBEb2N1bWVudCogZG9jID0g
bV9kb2M7CiAgICAgTm9kZSogZG9jdW1lbnRFbGVtZW50ID0gZG9jLT5kb2N1bWVudEVsZW1lbnQo
KTsKICAgICBpZiAoIWRvY3VtZW50RWxlbWVudCkgewogICAgICAgICBSZWZQdHI8Tm9kZT4gcm9v
dEVsZW1lbnQgPSBkb2MtPmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwgImh0bWwi
LCBlYyk7CkBAIC0xMzIzLDcgKzEzNDIsNyBAQCB2b2lkIFhNTFRva2VuaXplcjo6aW5zZXJ0RXJy
b3JNZXNzYWdlQmxvCiAgICAgZG9jLT51cGRhdGVSZW5kZXJpbmcoKTsKIH0KIAotdm9pZCBYTUxU
b2tlbml6ZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlICpmaW5pc2hlZE9iaikKK3Zv
aWQgWE1MVG9rZW5pemVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogZmluaXNoZWRP
YmopCiB7CiAgICAgQVNTRVJUKG1fcGVuZGluZ1NjcmlwdCA9PSBmaW5pc2hlZE9iaik7CiAgICAg
QVNTRVJUKG1fcGVuZGluZ1NjcmlwdC0+YWNjZXNzQ291bnQoKSA+IDApOwpAQCAtMTM1Niw3ICsx
Mzc1LDcgQEAgYm9vbCBYTUxUb2tlbml6ZXI6OmlzV2FpdGluZ0ZvclNjcmlwdHMoKQogfQogCiAj
aWZkZWYgWFNMVF9TVVBQT1JUCi12b2lkKiB4bWxEb2NQdHJGb3JTdHJpbmcoRG9jTG9hZGVyKiBk
b2NMb2FkZXIsIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBEZXByZWNhdGVkU3RyaW5nICZ1
cmwpCit2b2lkKiB4bWxEb2NQdHJGb3JTdHJpbmcoRG9jTG9hZGVyKiBkb2NMb2FkZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlLCBjb25zdCBEZXByZWNhdGVkU3RyaW5nJiB1cmwpCiB7CiAgICAgaWYg
KHNvdXJjZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTM4Niw3ICsxNDA1LDcg
QEAgdm9pZCogeG1sRG9jUHRyRm9yU3RyaW5nKERvY0xvYWRlciogZG9jTAogfQogI2VuZGlmCiAK
LVRva2VuaXplciAqbmV3WE1MVG9rZW5pemVyKERvY3VtZW50ICpkLCBGcmFtZVZpZXcgKnYpCitU
b2tlbml6ZXIqIG5ld1hNTFRva2VuaXplcihEb2N1bWVudCogZCwgRnJhbWVWaWV3KiB2KQogewog
ICAgIHJldHVybiBuZXcgWE1MVG9rZW5pemVyKGQsIHYpOwogfQpAQCAtMTQ0MSw0NSArMTQ2MCw0
NSBAQCB2b2lkIFhNTFRva2VuaXplcjo6cmVzdW1lUGFyc2luZygpCiAgICAgICAgIGVuZCgpOwog
fQogCi1zdGF0aWMgdm9pZCBiYWxhbmNlZFN0YXJ0RWxlbWVudE5zSGFuZGxlcih2b2lkICpjbG9z
dXJlLCBjb25zdCB4bWxDaGFyICpsb2NhbG5hbWUsIGNvbnN0IHhtbENoYXIgKnByZWZpeCwgY29u
c3QgeG1sQ2hhciAqdXJpLCBpbnQgbmJfbmFtZXNwYWNlcywgY29uc3QgeG1sQ2hhciAqKm5hbWVz
cGFjZXMsIGludCBuYl9hdHRyaWJ1dGVzLCBpbnQgbmJfZGVmYXVsdGVkLCBjb25zdCB4bWxDaGFy
ICoqbGlieG1sQXR0cmlidXRlcykKK3N0YXRpYyB2b2lkIGJhbGFuY2VkU3RhcnRFbGVtZW50TnNI
YW5kbGVyKHZvaWQqIGNsb3N1cmUsIGNvbnN0IHhtbENoYXIqIGxvY2FsbmFtZSwgY29uc3QgeG1s
Q2hhciogcHJlZml4LCBjb25zdCB4bWxDaGFyKiB1cmksIGludCBuYl9uYW1lc3BhY2VzLCBjb25z
dCB4bWxDaGFyKiogbmFtZXNwYWNlcywgaW50IG5iX2F0dHJpYnV0ZXMsIGludCBuYl9kZWZhdWx0
ZWQsIGNvbnN0IHhtbENoYXIqKiBsaWJ4bWxBdHRyaWJ1dGVzKQogewotICAgc3RhdGljX2Nhc3Q8
WE1MVG9rZW5pemVyICo+KGNsb3N1cmUpLT5zdGFydEVsZW1lbnROcyhsb2NhbG5hbWUsIHByZWZp
eCwgdXJpLCBuYl9uYW1lc3BhY2VzLCBuYW1lc3BhY2VzLCBuYl9hdHRyaWJ1dGVzLCBuYl9kZWZh
dWx0ZWQsIGxpYnhtbEF0dHJpYnV0ZXMpOworICAgc3RhdGljX2Nhc3Q8WE1MVG9rZW5pemVyKj4o
Y2xvc3VyZSktPnN0YXJ0RWxlbWVudE5zKGxvY2FsbmFtZSwgcHJlZml4LCB1cmksIG5iX25hbWVz
cGFjZXMsIG5hbWVzcGFjZXMsIG5iX2F0dHJpYnV0ZXMsIG5iX2RlZmF1bHRlZCwgbGlieG1sQXR0
cmlidXRlcyk7CiB9CiAKLXN0YXRpYyB2b2lkIGJhbGFuY2VkRW5kRWxlbWVudE5zSGFuZGxlcih2
b2lkICpjbG9zdXJlLCBjb25zdCB4bWxDaGFyICpsb2NhbG5hbWUsIGNvbnN0IHhtbENoYXIgKnBy
ZWZpeCwgY29uc3QgeG1sQ2hhciAqdXJpKQorc3RhdGljIHZvaWQgYmFsYW5jZWRFbmRFbGVtZW50
TnNIYW5kbGVyKHZvaWQqIGNsb3N1cmUsIGNvbnN0IHhtbENoYXIqIGxvY2FsbmFtZSwgY29uc3Qg
eG1sQ2hhciogcHJlZml4LCBjb25zdCB4bWxDaGFyKiB1cmkpCiB7Ci0gICAgc3RhdGljX2Nhc3Q8
WE1MVG9rZW5pemVyICo+KGNsb3N1cmUpLT5lbmRFbGVtZW50TnMoKTsKKyAgICBzdGF0aWNfY2Fz
dDxYTUxUb2tlbml6ZXIqPihjbG9zdXJlKS0+ZW5kRWxlbWVudE5zKCk7CiB9CiAKLXN0YXRpYyB2
b2lkIGJhbGFuY2VkQ2hhcmFjdGVyc0hhbmRsZXIodm9pZCAqY2xvc3VyZSwgY29uc3QgeG1sQ2hh
ciAqcywgaW50IGxlbikKK3N0YXRpYyB2b2lkIGJhbGFuY2VkQ2hhcmFjdGVyc0hhbmRsZXIodm9p
ZCogY2xvc3VyZSwgY29uc3QgeG1sQ2hhciogcywgaW50IGxlbikKIHsKLSAgICBzdGF0aWNfY2Fz
dDxYTUxUb2tlbml6ZXIgKj4oY2xvc3VyZSktPmNoYXJhY3RlcnMocywgbGVuKTsKKyAgICBzdGF0
aWNfY2FzdDxYTUxUb2tlbml6ZXIqPihjbG9zdXJlKS0+Y2hhcmFjdGVycyhzLCBsZW4pOwogfQog
Ci1zdGF0aWMgdm9pZCBiYWxhbmNlZFByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIodm9pZCAq
Y2xvc3VyZSwgY29uc3QgeG1sQ2hhciAqdGFyZ2V0LCBjb25zdCB4bWxDaGFyICpkYXRhKQorc3Rh
dGljIHZvaWQgYmFsYW5jZWRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyKHZvaWQqIGNsb3N1
cmUsIGNvbnN0IHhtbENoYXIqIHRhcmdldCwgY29uc3QgeG1sQ2hhciogZGF0YSkKIHsKLSAgICBz
dGF0aWNfY2FzdDxYTUxUb2tlbml6ZXIgKj4oY2xvc3VyZSktPnByb2Nlc3NpbmdJbnN0cnVjdGlv
bih0YXJnZXQsIGRhdGEpOworICAgIHN0YXRpY19jYXN0PFhNTFRva2VuaXplcio+KGNsb3N1cmUp
LT5wcm9jZXNzaW5nSW5zdHJ1Y3Rpb24odGFyZ2V0LCBkYXRhKTsKIH0KIAotc3RhdGljIHZvaWQg
YmFsYW5jZWRDZGF0YUJsb2NrSGFuZGxlcih2b2lkICpjbG9zdXJlLCBjb25zdCB4bWxDaGFyICpz
LCBpbnQgbGVuKQorc3RhdGljIHZvaWQgYmFsYW5jZWRDZGF0YUJsb2NrSGFuZGxlcih2b2lkKiBj
bG9zdXJlLCBjb25zdCB4bWxDaGFyKiBzLCBpbnQgbGVuKQogewotICAgIHN0YXRpY19jYXN0PFhN
TFRva2VuaXplciAqPihjbG9zdXJlKS0+Y2RhdGFCbG9jayhzLCBsZW4pOworICAgIHN0YXRpY19j
YXN0PFhNTFRva2VuaXplcio+KGNsb3N1cmUpLT5jZGF0YUJsb2NrKHMsIGxlbik7CiB9CiAKLXN0
YXRpYyB2b2lkIGJhbGFuY2VkQ29tbWVudEhhbmRsZXIodm9pZCAqY2xvc3VyZSwgY29uc3QgeG1s
Q2hhciAqY29tbWVudCkKK3N0YXRpYyB2b2lkIGJhbGFuY2VkQ29tbWVudEhhbmRsZXIodm9pZCog
Y2xvc3VyZSwgY29uc3QgeG1sQ2hhciogY29tbWVudCkKIHsKLSAgICBzdGF0aWNfY2FzdDxYTUxU
b2tlbml6ZXIgKj4oY2xvc3VyZSktPmNvbW1lbnQoY29tbWVudCk7CisgICAgc3RhdGljX2Nhc3Q8
WE1MVG9rZW5pemVyKj4oY2xvc3VyZSktPmNvbW1lbnQoY29tbWVudCk7CiB9CiAKLXN0YXRpYyB2
b2lkIGJhbGFuY2VkV2FybmluZ0hhbmRsZXIodm9pZCAqY2xvc3VyZSwgY29uc3QgY2hhciAqbWVz
c2FnZSwgLi4uKQorc3RhdGljIHZvaWQgYmFsYW5jZWRXYXJuaW5nSGFuZGxlcih2b2lkKiBjbG9z
dXJlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCAuLi4pCiB7CiAgICAgdmFfbGlzdCBhcmdzOwogICAg
IHZhX3N0YXJ0KGFyZ3MsIG1lc3NhZ2UpOwotICAgIHN0YXRpY19jYXN0PFhNTFRva2VuaXplciAq
PihjbG9zdXJlKS0+ZXJyb3IoWE1MVG9rZW5pemVyOjp3YXJuaW5nLCBtZXNzYWdlLCBhcmdzKTsK
KyAgICBzdGF0aWNfY2FzdDxYTUxUb2tlbml6ZXIqPihjbG9zdXJlKS0+ZXJyb3IoWE1MVG9rZW5p
emVyOjp3YXJuaW5nLCBtZXNzYWdlLCBhcmdzKTsKICAgICB2YV9lbmQoYXJncyk7CiB9CiAKLWJv
b2wgcGFyc2VYTUxEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyAmc3RyaW5nLCBEb2N1bWVu
dEZyYWdtZW50ICpmcmFnbWVudCwgRWxlbWVudCAqcGFyZW50KQorYm9vbCBwYXJzZVhNTERvY3Vt
ZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIERvY3VtZW50RnJhZ21lbnQqIGZyYWdt
ZW50LCBFbGVtZW50KiBwYXJlbnQpCiB7CiAgICAgWE1MVG9rZW5pemVyIHRva2VuaXplcihmcmFn
bWVudCwgcGFyZW50KTsKICAgICAKQEAgLTE1MDgsMTcgKzE1MjcsMTcgQEAgc3RydWN0IEF0dHJp
YnV0ZVBhcnNlU3RhdGUgewogfTsKIAogCi1zdGF0aWMgdm9pZCBhdHRyaWJ1dGVzU3RhcnRFbGVt
ZW50TnNIYW5kbGVyKHZvaWQgKmNsb3N1cmUsIGNvbnN0IHhtbENoYXIgKnhtbExvY2FsTmFtZSwg
Y29uc3QgeG1sQ2hhciAqeG1sUHJlZml4LCBjb25zdCB4bWxDaGFyICp4bWxVUkksIGludCBuYl9u
YW1lc3BhY2VzLCBjb25zdCB4bWxDaGFyICoqbmFtZXNwYWNlcywgaW50IG5iX2F0dHJpYnV0ZXMs
IGludCBuYl9kZWZhdWx0ZWQsIGNvbnN0IHhtbENoYXIgKipsaWJ4bWxBdHRyaWJ1dGVzKQorc3Rh
dGljIHZvaWQgYXR0cmlidXRlc1N0YXJ0RWxlbWVudE5zSGFuZGxlcih2b2lkKiBjbG9zdXJlLCBj
b25zdCB4bWxDaGFyKiB4bWxMb2NhbE5hbWUsIGNvbnN0IHhtbENoYXIqIHhtbFByZWZpeCwgY29u
c3QgeG1sQ2hhciogeG1sVVJJLCBpbnQgbmJfbmFtZXNwYWNlcywgY29uc3QgeG1sQ2hhcioqIG5h
bWVzcGFjZXMsIGludCBuYl9hdHRyaWJ1dGVzLCBpbnQgbmJfZGVmYXVsdGVkLCBjb25zdCB4bWxD
aGFyKiogbGlieG1sQXR0cmlidXRlcykKIHsKLSAgICBpZiAoc3RyY21wKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhciAqPih4bWxMb2NhbE5hbWUpLCAiYXR0cnMiKSAhPSAwKQorICAgIGlmIChz
dHJjbXAocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oeG1sTG9jYWxOYW1lKSwgImF0dHJz
IikgIT0gMCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIHhtbFBhcnNlckN0eHRQdHIgY3R4
dCA9IHN0YXRpY19jYXN0PHhtbFBhcnNlckN0eHRQdHI+KGNsb3N1cmUpOwotICAgIEF0dHJpYnV0
ZVBhcnNlU3RhdGUgKnN0YXRlID0gc3RhdGljX2Nhc3Q8QXR0cmlidXRlUGFyc2VTdGF0ZSAqPihj
dHh0LT5fcHJpdmF0ZSk7CisgICAgQXR0cmlidXRlUGFyc2VTdGF0ZSogc3RhdGUgPSBzdGF0aWNf
Y2FzdDxBdHRyaWJ1dGVQYXJzZVN0YXRlKj4oY3R4dC0+X3ByaXZhdGUpOwogICAgIAogICAgIHN0
YXRlLT5nb3RBdHRyaWJ1dGVzID0gdHJ1ZTsKICAgICAKLSAgICB4bWxTQVgyQXR0cmlidXRlcyAq
YXR0cmlidXRlcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8eG1sU0FYMkF0dHJpYnV0ZXMgKj4obGlieG1s
QXR0cmlidXRlcyk7CisgICAgeG1sU0FYMkF0dHJpYnV0ZXMqIGF0dHJpYnV0ZXMgPSByZWludGVy
cHJldF9jYXN0PHhtbFNBWDJBdHRyaWJ1dGVzKj4obGlieG1sQXR0cmlidXRlcyk7CiAgICAgZm9y
KGludCBpID0gMDsgaSA8IG5iX2F0dHJpYnV0ZXM7IGkrKykgewogICAgICAgICBTdHJpbmcgYXR0
ckxvY2FsTmFtZSA9IHRvU3RyaW5nKGF0dHJpYnV0ZXNbaV0ubG9jYWxuYW1lKTsKICAgICAgICAg
aW50IHZhbHVlTGVuZ3RoID0gKGludCkgKGF0dHJpYnV0ZXNbaV0uZW5kIC0gYXR0cmlidXRlc1tp
XS52YWx1ZSk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAkocmV2aXNpb24gMTc4NTgpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgs
NyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogSFRNTERvY3VtZW50OjpIVE1MRG9jdW1l
bnQoRE9NSW1wbGVtZW50YXRpb24gKl9pbXBsZW1lbnRhdGlvbiwgRnJhbWVWaWV3ICp2KQogICA6
IERvY3VtZW50KF9pbXBsZW1lbnRhdGlvbiwgdikKIHsKKyAgICBtX3htbFZlcnNpb24gPSBTdHJp
bmcoKTsKICAgICBib2R5RWxlbWVudCA9IDA7CiAgICAgaHRtbEVsZW1lbnQgPSAwOwogfQo=
</data>
<flag name="review"
          id="4126"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>