<?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>58639</bug_id>
          
          <creation_ts>2011-04-15 00:21:46 -0700</creation_ts>
          <short_desc>CSP report-uri is missing</short_desc>
          <delta_ts>2011-04-21 09:05:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>59103</dependson>
          <blocked>53572</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>386436</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-15 00:21:46 -0700</bug_when>
    <thetext>CSP report-uri is missing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389598</commentid>
    <comment_count>1</comment_count>
      <attachid>90434</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-20 16:11:50 -0700</bug_when>
    <thetext>Created attachment 90434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389599</commentid>
    <comment_count>2</comment_count>
      <attachid>90434</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-20 16:15:48 -0700</bug_when>
    <thetext>Comment on attachment 90434
Patch

I fear this change has privacy concerns.  Can you allay those concerns with some big warning comments in the code explaining what you&apos;re sending back to those websites and why?  Maybe also in the test cases.

It&apos;s also not clear from your ChangeLog what we&apos;re sending here.  You know much more about security/privacy than I, but I want to make this very simple to the casual reader to make sure that we&apos;re doing the righ tthing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389601</commentid>
    <comment_count>3</comment_count>
      <attachid>90435</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-20 16:16:32 -0700</bug_when>
    <thetext>Created attachment 90435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389608</commentid>
    <comment_count>4</comment_count>
      <attachid>90438</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-20 16:24:13 -0700</bug_when>
    <thetext>Created attachment 90438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389615</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-20 16:31:04 -0700</bug_when>
    <thetext>Adam mentioned adding two more tests:

1.  that CSP on a parent document did not have any effect on an iframe (specifically we won&apos;t report URLs from inside that iframe)
2.  An iframe with a CSP policy, make sure it doesn&apos;t ever get any URLs from the parent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389637</commentid>
    <comment_count>6</comment_count>
      <attachid>90446</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-20 16:48:27 -0700</bug_when>
    <thetext>Created attachment 90446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389650</commentid>
    <comment_count>7</comment_count>
      <attachid>90446</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-20 17:02:26 -0700</bug_when>
    <thetext>Comment on attachment 90446
Patch

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

&gt; LayoutTests/http/tests/security/contentSecurityPolicy/resources/save-report.php:14
&gt; +rename(&quot;csp-report.txt.tmp&quot;, &quot;csp-report.txt&quot;);

This is disgusting.  Couldn&apos;t we at least include the pid or something to make it possible to run more than one copy of the layout tests at once?

This is going to break in NRWT.

&gt; Source/WebCore/loader/PingLoader.cpp:104
&gt; +    if (!SecurityOrigin::shouldHideReferrer(reportURL, frame-&gt;loader()-&gt;outgoingReferrer()))
&gt; +        request.setHTTPReferrer(frame-&gt;loader()-&gt;outgoingReferrer());

This seems fragile. :(

&gt; Source/WebCore/loader/PingLoader.cpp:108
&gt; +    PingLoader* leakedPingLoader = pingLoader.leakPtr();

Why even put it in a local?  You can just cast the result to void to avoid an unused result error?

&gt; Source/WebCore/page/ContentSecurityPolicy.cpp:503
&gt; +    frame-&gt;domWindow()-&gt;console()-&gt;addMessage(JSMessageSource, LogMessageType, ErrorMessageLevel, consoleMessage, 1, String());

I thought you had some fancy message reporting thing now?

&gt; Source/WebCore/page/ContentSecurityPolicy.cpp:508
&gt; +    // We need to be careful here when deciding what information to send to the

You might consider making this a stronger warning.

&gt; Source/WebCore/page/ContentSecurityPolicy.cpp:515
&gt; +    // sent explicitly. As for which directive was violated, that&apos;s pretty

I would remove the &quot;pretty&quot; here. :)

&gt; Source/WebCore/page/ContentSecurityPolicy.cpp:741
&gt; +        m_scriptSrc = adoptPtr(new CSPDirective(name, value, m_document-&gt;securityOrigin()));

Do you want name to be case sensitive here?  I would probably have just used the static ones you have, but I&quot;m not sure it matters.

&gt; Source/WebCore/page/ContentSecurityPolicy.cpp:749
&gt; +        m_styleSrc = adoptPtr(new CSPDirective(name, value, m_document-&gt;securityOrigin()));

These are starting to look like we want a helper function to make these.  createDirective(name, value)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389655</commentid>
    <comment_count>8</comment_count>
      <attachid>90446</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-20 17:09:53 -0700</bug_when>
    <thetext>Comment on attachment 90446
Patch

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

&gt;&gt; LayoutTests/http/tests/security/contentSecurityPolicy/resources/save-report.php:14
&gt;&gt; +rename(&quot;csp-report.txt.tmp&quot;, &quot;csp-report.txt&quot;);
&gt; 
&gt; This is disgusting.  Couldn&apos;t we at least include the pid or something to make it possible to run more than one copy of the layout tests at once?
&gt; 
&gt; This is going to break in NRWT.

You already can&apos;t run two HTTP servers at once.  This doesn&apos;t break NRWT because NRWT runs each directory in sequence.  We already have a bunch of tests that use this model, including the ping tests.

&gt;&gt; Source/WebCore/loader/PingLoader.cpp:104
&gt;&gt; +    if (!SecurityOrigin::shouldHideReferrer(reportURL, frame-&gt;loader()-&gt;outgoingReferrer()))
&gt;&gt; +        request.setHTTPReferrer(frame-&gt;loader()-&gt;outgoingReferrer());
&gt; 
&gt; This seems fragile. :(

Yep.  Originally, this pattern was only need in one place, but over time, lots of code became responsible for setting the Referer.  We should centralize it again.

&gt;&gt; Source/WebCore/loader/PingLoader.cpp:108
&gt;&gt; +    PingLoader* leakedPingLoader = pingLoader.leakPtr();
&gt; 
&gt; Why even put it in a local?  You can just cast the result to void to avoid an unused result error?

I believe this is needed because of an unused result warning.

&gt;&gt; Source/WebCore/page/ContentSecurityPolicy.cpp:503
&gt;&gt; +    frame-&gt;domWindow()-&gt;console()-&gt;addMessage(JSMessageSource, LogMessageType, ErrorMessageLevel, consoleMessage, 1, String());
&gt; 
&gt; I thought you had some fancy message reporting thing now?

This is the fancy message reporting thing.  Someone needs to call addMessage.

&gt;&gt; Source/WebCore/page/ContentSecurityPolicy.cpp:508
&gt;&gt; +    // We need to be careful here when deciding what information to send to the
&gt; 
&gt; You might consider making this a stronger warning.

In the end, we&apos;re going to hash this stuff out in the working group.  I&apos;m not sure what a stronger warning here would buy us.

&gt;&gt; Source/WebCore/page/ContentSecurityPolicy.cpp:515
&gt;&gt; +    // sent explicitly. As for which directive was violated, that&apos;s pretty
&gt; 
&gt; I would remove the &quot;pretty&quot; here. :)

pretty =&gt; mostly ?

&gt;&gt; Source/WebCore/page/ContentSecurityPolicy.cpp:741
&gt;&gt; +        m_scriptSrc = adoptPtr(new CSPDirective(name, value, m_document-&gt;securityOrigin()));
&gt; 
&gt; Do you want name to be case sensitive here?  I would probably have just used the static ones you have, but I&quot;m not sure it matters.

I want to report the actual name used by the site in case the developer does a case-sensitive grep of their source code to figure out what went wrong.

&gt;&gt; Source/WebCore/page/ContentSecurityPolicy.cpp:749
&gt;&gt; +        m_styleSrc = adoptPtr(new CSPDirective(name, value, m_document-&gt;securityOrigin()));
&gt; 
&gt; These are starting to look like we want a helper function to make these.  createDirective(name, value)

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389660</commentid>
    <comment_count>9</comment_count>
      <attachid>90451</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-20 17:16:36 -0700</bug_when>
    <thetext>Created attachment 90451
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389671</commentid>
    <comment_count>10</comment_count>
      <attachid>90451</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-20 17:23:42 -0700</bug_when>
    <thetext>Comment on attachment 90451
Patch

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

OK.

&gt; LayoutTests/http/tests/security/contentSecurityPolicy/resources/echo-report.php:3
&gt; +    usleep(10000);

10 seconds?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389902</commentid>
    <comment_count>11</comment_count>
      <attachid>90451</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-21 01:35:16 -0700</bug_when>
    <thetext>Comment on attachment 90451
Patch

Clearing flags on attachment: 90451

Committed r84478: &lt;http://trac.webkit.org/changeset/84478&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389903</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-21 01:35:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389907</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-21 02:23:10 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/84478 might have broken GTK Linux 32-bit Release
The following tests are not passing:
http/tests/security/contentSecurityPolicy/report-uri-from-child-frame.html
http/tests/security/contentSecurityPolicy/report-uri.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390034</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-21 08:13:55 -0700</bug_when>
    <thetext>PHP magic quotes :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390071</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-21 09:05:55 -0700</bug_when>
    <thetext>Hopefully fixed in http://trac.webkit.org/changeset/84502</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90434</attachid>
            <date>2011-04-20 16:11:50 -0700</date>
            <delta_ts>2011-04-20 16:16:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58639-20110420161149.patch</filename>
            <type>text/plain</type>
            <size>20812</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQzNDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4OTgwY2QyN2JkYTI3YjZlYzc4Yjg1
MmZiYTVhMzZiNzMwMGY2ODJiLi42NzM2MTczYmI2YzcwMzI0ZjVmYzg4MGJlYzFiNWJiNmJhMDE5
OWQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIwMTEtMDQtMjAgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDU1AgcmVwb3J0LXVyaSBpcyBtaXNzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODYzOQorCisgICAgICAgIFRlc3QgdGhhdCByZXBv
cnQtdXJpIHNlbmRzIGEgcmVwb3J0LiAgVGVzdGluZyBhcHByb2FjaCBzdG9sZW4gZnJvbSB0aGUK
KyAgICAgICAgcGluZyB0ZXN0cy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXBvcnQtdXJp
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3Jlc291cmNlcy9lY2hvLXJlcG9ydC5waHA6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy9nby10by1l
Y2hvLXJlcG9ydC5qczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL3NhdmUtcmVwb3J0LnBocDogQWRkZWQuCisKKzIw
MTEtMDQtMjAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KIAogICAgICAgICBDU1AgZnJhbWUtc3JjIGlzIG1pc3NpbmcK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3JlcG9ydC11cmktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVwb3J0LXVyaS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTBlMTY1ODhmZjQ5YjYwMjM4Y2YxZmU2ODg5ZTRjMjA5ZWY1YTcxYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L3JlcG9ydC11cmktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gZXhlY3V0ZSBpbmxpbmUgc2NyaXB0IGJl
Y2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuCisKK0NTUCByZXBvcnQgcmVjZWl2ZWQ6
CitDT05URU5UX1RZUEU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZAorSFRUUF9S
RUZFUkVSOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3JlcG9ydC11cmkuaHRtbAorUkVRVUVTVF9NRVRIT0Q6IFBPU1QKKz09PSBQT1NUIERBVEEg
PT09Citkb2N1bWVudC11cmw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvcmVwb3J0LXVyaS5odG1sCit2aW9sYXRlZC1kaXJlY3RpdmU6IHNjcmlw
dC1zcmMgXCdzZWxmXCcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmkuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmkuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yYWUwMTY1ZjRhZmEzYmM4OTkwMDJhODFkOGZjYzQ1Y2QyNmI3Njg4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvcmVwb3J0LXVyaS5odG1sCkBAIC0wLDAgKzEsNiBAQAorPG1ldGEgaHR0cC1l
cXVpdj0iWC1XZWJLaXQtQ1NQIiBjb250ZW50PSJzY3JpcHQtc3JjICdzZWxmJzsgcmVwb3J0LXVy
aSByZXNvdXJjZXMvc2F2ZS1yZXBvcnQucGhwIj4KKzxzY3JpcHQ+CisvLyBUaGlzIHNjcmlwdCBi
bG9jayB3aWxsIHRyaWdnZXIgYSB2aW9sYXRpb24gcmVwb3J0LgorYWxlcnQoJ0ZBSUwnKTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9nby10by1lY2hvLXJlcG9ydC5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvZWNoby1yZXBvcnQucGhwIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL2VjaG8t
cmVwb3J0LnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iN2U2OTg1Y2JmZjU1MWVlOTNjZGYyOTM5N2E0MjNjNzgy
NzI2ZGYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL2VjaG8tcmVwb3J0LnBocApAQCAtMCww
ICsxLDIyIEBACis8P3BocAord2hpbGUgKCFmaWxlX2V4aXN0cygiY3NwLXJlcG9ydC50eHQiKSkg
eworICAgIHVzbGVlcCgxMDAwMCk7CisgICAgLy8gZmlsZV9leGlzdHMoKSBjYWNoZXMgcmVzdWx0
cywgd2Ugd2FudCB0byBpbnZhbGlkYXRlIHRoZSBjYWNoZS4KKyAgICBjbGVhcnN0YXRjYWNoZSgp
OworfQorCitlY2hvICI8aHRtbD48Ym9keT5cbiI7CitlY2hvICJDU1AgcmVwb3J0IHJlY2VpdmVk
OiI7CiskcmVwb3J0RmlsZSA9IGZvcGVuKCJjc3AtcmVwb3J0LnR4dCIsICdyJyk7Cit3aGlsZSAo
JGxpbmUgPSBmZ2V0cygkcmVwb3J0RmlsZSkpIHsKKyAgICBlY2hvICI8YnI+IjsKKyAgICBlY2hv
IHRyaW0oJGxpbmUpOworfQorZmNsb3NlKCRyZXBvcnRGaWxlKTsKK3VubGluaygiY3NwLXJlcG9y
dC50eHQiKTsKK2VjaG8gIjxzY3JpcHQ+IjsKK2VjaG8gImlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIjsKK2VjaG8gIiAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
IjsKK2VjaG8gIjwvc2NyaXB0PiI7CitlY2hvICI8L2JvZHk+PC9odG1sPiI7Cis/PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvcmVzb3VyY2VzL2dvLXRvLWVjaG8tcmVwb3J0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL2dvLXRvLWVjaG8tcmVw
b3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmExM2U3NmRhMDVjMTVmMDRjN2ViZTY0MzdiOWNiYTIwYzVlNTVl
OGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvZ28tdG8tZWNoby1yZXBvcnQuanMKQEAgLTAs
MCArMSw4IEBACitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKKyAgICB3
aW5kb3cubG9jYXRpb24gPSAicmVzb3VyY2VzL2VjaG8tcmVwb3J0LnBocCI7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9yZXNvdXJjZXMvc2F2ZS1yZXBvcnQucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL3NhdmUtcmVwb3J0LnBocApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44NzJjZTk1NDE1MzU4NTE5OTllOGEwOGYzODIwZjkwNDMzOGJlYzE0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvcmVzb3VyY2VzL3NhdmUtcmVwb3J0LnBocApAQCAtMCwwICsxLDE1IEBACis8P3Bo
cAorJHJlcG9ydEZpbGUgPSBmb3BlbigiY3NwLXJlcG9ydC50eHQudG1wIiwgJ3cnKTsKKyRodHRw
SGVhZGVycyA9ICRfU0VSVkVSOwora3NvcnQoJGh0dHBIZWFkZXJzLCBTT1JUX1NUUklORyk7Citm
b3JlYWNoICgkaHR0cEhlYWRlcnMgYXMgJG5hbWUgPT4gJHZhbHVlKSB7CisgICAgaWYgKCRuYW1l
ID09PSAiQ09OVEVOVF9UWVBFIiB8fCAkbmFtZSA9PT0gIkhUVFBfUkVGRVJFUiIgfHwgJG5hbWUg
PT09ICJSRVFVRVNUX01FVEhPRCIpCisgICAgICAgIGZ3cml0ZSgkcmVwb3J0RmlsZSwgIiRuYW1l
OiAkdmFsdWVcbiIpOworfQorZndyaXRlKCRyZXBvcnRGaWxlLCAiPT09IFBPU1QgREFUQSA9PT1c
biIpOworZm9yZWFjaCAoJF9QT1NUIGFzICRuYW1lID0+ICR2YWx1ZSkgeworICAgIGZ3cml0ZSgk
cmVwb3J0RmlsZSwgIiRuYW1lOiAkdmFsdWVcbiIpOworfQorZmNsb3NlKCRyZXBvcnRGaWxlKTsK
K3JlbmFtZSgiY3NwLXJlcG9ydC50eHQudG1wIiwgImNzcC1yZXBvcnQudHh0Iik7Cis/PgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDkwNTQ5ZWE0OTViMmVmYTU5MGM5NjNjMzE4ODE3NDI5N2MzN2ZjZTUuLmY3MzI3
MDRkNmIxNjQzZmY0YWQyMWE3ZGYxODdiMjY2YzMyYjI3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSw0MSBAQAogMjAxMS0wNC0yMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENTUCByZXBvcnQt
dXJpIGlzIG1pc3NpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU4NjM5CisKKyAgICAgICAgT3VyIGltcGxlbWVudGF0aW9uIG9mIHJlcG9ydC11cmkg
ZGlmZmVycyBmcm9tIHdoYXQncyBjdXJyZW50bHkgaW4gdGhlCisgICAgICAgIHNwZWMuICBJIHNl
bnQgdGhlIHdvcmtpbmcgZ3JvdXAgYW4gZW1haWwgZXhwbGFpbmluZyB3aHkuICBCYXNpY2FsbHks
CisgICAgICAgIHdlJ3JlIHVzaW5nIG5vcm1hbCBmb3JtIGVuY29kaW5nIGluc3RlYWQgb2YgSlNP
TiBhbmQgd2UncmUgc2VuZGluZyBsZXNzCisgICAgICAgIGluZm9ybWF0aW9uIHRvIGEgd2lkZXIg
c2V0IG9mIFVSTHMuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvcmVwb3J0LXVyaS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvUGluZ0xv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaW5nTG9hZGVyOjpyZXBvcnRDb250ZW50U2Vj
dXJpdHlQb2xpY3lWaW9sYXRpb24pOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmg6Cisg
ICAgICAgICogcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NQRGlyZWN0aXZlOjpDU1BEaXJlY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGly
ZWN0aXZlOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6
cmVwb3J0VmlvbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eTo6YWxsb3dKYXZhU2NyaXB0VVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3k6OmFsbG93SW5saW5lRXZlbnRIYW5kbGVycyk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU2NyaXB0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTY3JpcHRGcm9tU291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dPYmplY3RGcm9tU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDaGlsZEZyYW1l
RnJvbVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93SW1hZ2VGcm9tU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsb3dTdHlsZUZyb21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5OjphbGxvd0ZvbnRGcm9tU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dNZWRpYUZyb21Tb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpwYXJzZVJlcG9ydFVSSSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFkZERpcmVjdGl2ZSk6CisgICAgICAgICog
cGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaDoKKworMjAxMS0wNC0yMCAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgog
CiAgICAgICAgIENTUCBmcmFtZS1zcmMgaXMgbWlzc2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdM
b2FkZXIuY3BwCmluZGV4IDI4MDYyMGFlMDMxNWQ0MmRiYjY5YmNhZGFkYWMxM2FmYjgyZGI5YWMu
LjAwYTAwNWU4NTRhODYxOTI4NTk0MWUyMmRhYzNkZTdlOTM5YjYzYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUGluZ0xvYWRlci5jcHAKQEAgLTkxLDYgKzkxLDI0IEBAIHZvaWQgUGluZ0xvYWRlcjo6
c2VuZFBpbmcoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiBwaW5nVVJMLCBjb25zdCBLVVJMJiBk
ZXN0aW5hCiAgICAgVU5VU0VEX1BBUkFNKGxlYWtlZFBpbmdMb2FkZXIpOwogfQogCit2b2lkIFBp
bmdMb2FkZXI6OnJlcG9ydENvbnRlbnRTZWN1cml0eVBvbGljeVZpb2xhdGlvbihGcmFtZSogZnJh
bWUsIGNvbnN0IEtVUkwmIHJlcG9ydFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcmVwb3J0KQor
eworICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHJlcG9ydFVSTCk7CisgICAgcmVxdWVzdC5z
ZXRUYXJnZXRUeXBlKFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJjZSk7CisgICAg
cmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7CisgICAgcmVxdWVzdC5zZXRIVFRQQ29udGVu
dFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpOworICAgIHJlcXVlc3Qu
c2V0SFRUUEJvZHkocmVwb3J0KTsKKyAgICBmcmFtZS0+bG9hZGVyKCktPmFkZEV4dHJhRmllbGRz
VG9TdWJyZXNvdXJjZVJlcXVlc3QocmVxdWVzdCk7CisKKyAgICBpZiAoIVNlY3VyaXR5T3JpZ2lu
OjpzaG91bGRIaWRlUmVmZXJyZXIocmVwb3J0VVJMLCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5n
UmVmZXJyZXIoKSkpCisgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKGZyYW1lLT5sb2Fk
ZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKTsKKyAgICBPd25QdHI8UGluZ0xvYWRlcj4gcGluZ0xv
YWRlciA9IGFkb3B0UHRyKG5ldyBQaW5nTG9hZGVyKGZyYW1lLCByZXF1ZXN0KSk7CisKKyAgICAv
LyBMZWFrIHRoZSBwaW5nIGxvYWRlciwgc2luY2UgaXQgd2lsbCBraWxsIGl0c2VsZiBhcyBzb29u
IGFzIGl0IHJlY2VpdmVzIGEgcmVzcG9uc2UuCisgICAgUGluZ0xvYWRlciogbGVha2VkUGluZ0xv
YWRlciA9IHBpbmdMb2FkZXIubGVha1B0cigpOworICAgIFVOVVNFRF9QQVJBTShsZWFrZWRQaW5n
TG9hZGVyKTsKK30KKwogUGluZ0xvYWRlcjo6UGluZ0xvYWRlcihGcmFtZSogZnJhbWUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1fdGltZW91dCh0aGlzLCAmUGluZ0xv
YWRlcjo6dGltZW91dCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5n
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oCmluZGV4IDI1MmMw
OWI3MDg3OWUzNWY4OGQ5NTc5OTM5MTM0YWM1OGE3MWU1M2EuLjQxM2ViNjFiYjM4Yzk1YmZjNGY0
ZTc1NzdhYTVjYTNlZDQyOWE0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
aW5nTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaApAQCAt
MzIsNiArMzIsNyBAQAogI2lmbmRlZiBQaW5nTG9hZGVyX2gKICNkZWZpbmUgUGluZ0xvYWRlcl9o
CiAKKyNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAg
LTU1LDYgKzU2LDcgQEAgY2xhc3MgUGluZ0xvYWRlciA6IHByaXZhdGUgUmVzb3VyY2VIYW5kbGVD
bGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGxvYWRJbWFnZShGcmFtZSosIGNvbnN0
IEtVUkwmIHVybCk7CiAgICAgc3RhdGljIHZvaWQgc2VuZFBpbmcoRnJhbWUqLCBjb25zdCBLVVJM
JiBwaW5nVVJMLCBjb25zdCBLVVJMJiBkZXN0aW5hdGlvblVSTCk7CisgICAgc3RhdGljIHZvaWQg
cmVwb3J0Q29udGVudFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uKEZyYW1lKiwgY29uc3QgS1VSTCYg
cmVwb3J0VVJMLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiByZXBvcnQpOwogCiAgICAgflBpbmdMb2Fk
ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
CmluZGV4IGZiM2M2ZTE0M2RkNWRjMzI3MTZjNjg1YjcyYjYwOTA5ZDE1NjljNmIuLjM4ZDk4MTIz
YzQ5MDQxNTM3NWI1OTk3YjEzMDcwYzE1MTFmZDdmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTI4LDkgKzI4LDEzIEBACiAKICNpbmNs
dWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZvcm1E
YXRhLmgiCisjaW5jbHVkZSAiRm9ybURhdGFMaXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTcwLDYgKzc0LDExIEBAIGJvb2wgaXNTY2hlbWVDb250aW51YXRpb25DaGFyYWN0ZXIoVUNo
YXIgYykKICAgICByZXR1cm4gaXNBU0NJSUFscGhhbnVtZXJpYyhjKSB8fCBjID09ICcrJyB8fCBj
ID09ICctJyB8fCBjID09ICcuJzsKIH0KIAorYm9vbCBpc05vdEFTQ0lJU3BhY2UoVUNoYXIgYykK
K3sKKyAgICByZXR1cm4gIWlzQVNDSUlTcGFjZShjKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKIAog
c3RhdGljIGJvb2wgc2tpcEV4YWN0bHkoY29uc3QgVUNoYXIqJiBwb3NpdGlvbiwgY29uc3QgVUNo
YXIqIGVuZCwgVUNoYXIgZGVsaW1pdGVyKQpAQCAtMzk4LDggKzQwNyw5IEBAIHZvaWQgQ1NQU291
cmNlTGlzdDo6YWRkU291cmNlU2VsZigpCiAKIGNsYXNzIENTUERpcmVjdGl2ZSB7CiBwdWJsaWM6
Ci0gICAgQ1NQRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgdmFsdWUsIFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4pCisgICAgQ1NQRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICAgICAgOiBtX3NvdXJjZUxpc3Qo
b3JpZ2luKQorICAgICAgICAsIG1fdGV4dChtYWtlU3RyaW5nKG5hbWUsICIgIiwgdmFsdWUpKQog
ICAgIHsKICAgICAgICAgbV9zb3VyY2VMaXN0LnBhcnNlKHZhbHVlKTsKICAgICB9CkBAIC00MDks
OCArNDE5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fc291cmNlTGlzdC5tYXRjaGVz
KHVybCk7CiAgICAgfQogCisgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgeyByZXR1cm4gbV90ZXh0
OyB9CisKIHByaXZhdGU6CiAgICAgQ1NQU291cmNlTGlzdCBtX3NvdXJjZUxpc3Q7CisgICAgU3Ry
aW5nIG1fdGV4dDsKIH07CiAKIGNsYXNzIENTUE9wdGlvbnMgewpAQCAtNDgxLDEwICs0OTQsMjYg
QEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3Ry
aW5nJiBoZWFkZXIpCiAgICAgbV9oYXZlUG9saWN5ID0gdHJ1ZTsKIH0KIAotdm9pZCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNz
YWdlKSBjb25zdAordm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbihj
b25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2Up
IGNvbnN0CiB7Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCkpCi0g
ICAgICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2Fn
ZSwgMSwgU3RyaW5nKCkpOworICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCk7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWUtPmRvbVdpbmRv
dygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlw
ZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNvbnNvbGVNZXNzYWdlLCAxLCBTdHJpbmcoKSk7CisKKyAg
ICBpZiAobV9yZXBvcnRVUkxzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRm9y
bURhdGFMaXN0IHJlcG9ydExpc3QoVVRGOEVuY29kaW5nKCkpOworICAgIHJlcG9ydExpc3QuYXBw
ZW5kRGF0YSgiZG9jdW1lbnQtdXJsIiwgbV9kb2N1bWVudC0+dXJsKCkpOworICAgIGlmICghZGly
ZWN0aXZlVGV4dC5pc0VtcHR5KCkpCisgICAgICAgIHJlcG9ydExpc3QuYXBwZW5kRGF0YSgidmlv
bGF0ZWQtZGlyZWN0aXZlIiwgZGlyZWN0aXZlVGV4dCk7CisKKyAgICBSZWZQdHI8Rm9ybURhdGE+
IHJlcG9ydCA9IEZvcm1EYXRhOjpjcmVhdGUocmVwb3J0TGlzdCwgVVRGOEVuY29kaW5nKCkpOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JlcG9ydFVSTHMuc2l6ZSgpOyArK2kpCisg
ICAgICAgIFBpbmdMb2FkZXI6OnJlcG9ydENvbnRlbnRTZWN1cml0eVBvbGljeVZpb2xhdGlvbihm
cmFtZSwgbV9yZXBvcnRVUkxzW2ldLCByZXBvcnQpOwogfQogCiBib29sIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6cHJvdGVjdEFnYWluc3RYU1MoKSBjb25zdApAQCAtNDk4LDcgKzUyNyw3IEBAIGJv
b2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0phdmFTY3JpcHRVUkxzKCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29u
c29sZU1lc3NhZ2UsICgiUmVmdXNlZCB0byBleGVjdXRlIEphdmFTY3JpcHQgVVJMIGJlY2F1c2Ug
b2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7Ci0gICAgcmVwb3J0VmlvbGF0aW9uKGNv
bnNvbGVNZXNzYWdlKTsKKyAgICByZXBvcnRWaW9sYXRpb24obV9zY3JpcHRTcmMtPnRleHQoKSwg
Y29uc29sZU1lc3NhZ2UpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNTA4LDcgKzUzNyw3
IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZUV2ZW50SGFuZGxlcnMo
KSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgaW5saW5lIGV2ZW50
IGhhbmRsZXIgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKLSAgICBy
ZXBvcnRWaW9sYXRpb24oY29uc29sZU1lc3NhZ2UpOworICAgIHJlcG9ydFZpb2xhdGlvbihtX3Nj
cmlwdFNyYy0+dGV4dCgpLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CkBAIC01MTgsNyArNTQ3LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5s
aW5lU2NyaXB0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsICgiUmVmdXNlZCB0byBleGVjdXRlIGlu
bGluZSBzY3JpcHQgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKLSAg
ICByZXBvcnRWaW9sYXRpb24oY29uc29sZU1lc3NhZ2UpOworICAgIHJlcG9ydFZpb2xhdGlvbiht
X3NjcmlwdFNyYy0+dGV4dCgpLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCkBAIC01MjgsNyArNTU3LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
RXZhbCgpIGNvbnN0CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoIlJlZnVzZWQgdG8gZXZhbHVhdGUgc2NyaXB0
IGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7Ci0gICAgcmVwb3J0Vmlv
bGF0aW9uKGNvbnNvbGVNZXNzYWdlKTsKKyAgICByZXBvcnRWaW9sYXRpb24obV9zY3JpcHRTcmMt
PnRleHQoKSwgY29uc29sZU1lc3NhZ2UpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNTM3
LDcgKzU2Niw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1NjcmlwdEZyb21T
b3VyY2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAogICAgIGlmICghbV9zY3JpcHRTcmMgfHwgbV9z
Y3JpcHRTcmMtPmFsbG93cyh1cmwpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJlcG9y
dFZpb2xhdGlvbihtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgc2NyaXB0IGZyb20gJyIsIHVy
bC5zdHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsK
KyAgICByZXBvcnRWaW9sYXRpb24obV9zY3JpcHRTcmMtPnRleHQoKSwgbWFrZVN0cmluZygiUmVm
dXNlZCB0byBsb2FkIHNjcmlwdCBmcm9tICciLCB1cmwuc3RyaW5nKCksICInIGJlY2F1c2Ugb2Yg
Q29udGVudC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBA
IC01NDYsNyArNTc1LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93T2JqZWN0
RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiAgICAgaWYgKCFtX29iamVjdFNyYyB8
fCBtX29iamVjdFNyYy0+YWxsb3dzKHVybCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
cmVwb3J0VmlvbGF0aW9uKG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gbG9hZCBvYmplY3QgZnJvbSAn
IiwgdXJsLnN0cmluZygpLCAiJyBiZWNhdXNlIG9mIENvbnRlbnQtU2VjdXJpdHktUG9saWN5Llxu
IikpOworICAgIHJlcG9ydFZpb2xhdGlvbihtX29iamVjdFNyYy0+dGV4dCgpLCBtYWtlU3RyaW5n
KCJSZWZ1c2VkIHRvIGxvYWQgb2JqZWN0IGZyb20gJyIsIHVybC5zdHJpbmcoKSwgIicgYmVjYXVz
ZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKQEAgLTU1NSw3ICs1ODQsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dD
aGlsZEZyYW1lRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiAgICAgaWYgKCFtX2Zy
YW1lU3JjIHx8IG1fZnJhbWVTcmMtPmFsbG93cyh1cmwpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIHJlcG9ydFZpb2xhdGlvbihtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgZnJhbWUg
ZnJvbSAnIiwgdXJsLnN0cmluZygpLCAiJyBiZWNhdXNlIG9mIENvbnRlbnQtU2VjdXJpdHktUG9s
aWN5LlxuIikpOworICAgIHJlcG9ydFZpb2xhdGlvbihtX2ZyYW1lU3JjLT50ZXh0KCksIG1ha2VT
dHJpbmcoIlJlZnVzZWQgdG8gbG9hZCBmcmFtZSBmcm9tICciLCB1cmwuc3RyaW5nKCksICInIGJl
Y2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCkBAIC01NjQsNyArNTkzLDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKICAgICBpZiAoIW1faW1n
U3JjIHx8IG1faW1nU3JjLT5hbGxvd3ModXJsKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICByZXBvcnRWaW9sYXRpb24obWFrZVN0cmluZygiUmVmdXNlZCB0byBsb2FkIGltYWdlIGZyb20g
JyIsIHVybC5zdHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5c
biIpKTsKKyAgICByZXBvcnRWaW9sYXRpb24obV9pbWdTcmMtPnRleHQoKSwgbWFrZVN0cmluZygi
UmVmdXNlZCB0byBsb2FkIGltYWdlIGZyb20gJyIsIHVybC5zdHJpbmcoKSwgIicgYmVjYXVzZSBv
ZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
QEAgLTU3Myw3ICs2MDIsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTdHls
ZUZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAogICAgIGlmICghbV9zdHlsZVNyYyB8
fCBtX3N0eWxlU3JjLT5hbGxvd3ModXJsKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBy
ZXBvcnRWaW9sYXRpb24obWFrZVN0cmluZygiUmVmdXNlZCB0byBsb2FkIHN0eWxlIGZyb20gJyIs
IHVybC5zdHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIp
KTsKKyAgICByZXBvcnRWaW9sYXRpb24obV9zdHlsZVNyYy0+dGV4dCgpLCBtYWtlU3RyaW5nKCJS
ZWZ1c2VkIHRvIGxvYWQgc3R5bGUgZnJvbSAnIiwgdXJsLnN0cmluZygpLCAiJyBiZWNhdXNlIG9m
IENvbnRlbnQtU2VjdXJpdHktUG9saWN5LlxuIikpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApA
QCAtNTgyLDcgKzYxMSw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ZvbnRG
cm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKICAgICBpZiAoIW1fZm9udFNyYyB8fCBt
X2ZvbnRTcmMtPmFsbG93cyh1cmwpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJlcG9y
dFZpb2xhdGlvbihtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgZm9udCBmcm9tICciLCB1cmwu
c3RyaW5nKCksICInIGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7Cisg
ICAgcmVwb3J0VmlvbGF0aW9uKG1fZm9udFNyYy0+dGV4dCgpLCBtYWtlU3RyaW5nKCJSZWZ1c2Vk
IHRvIGxvYWQgZm9udCBmcm9tICciLCB1cmwuc3RyaW5nKCksICInIGJlY2F1c2Ugb2YgQ29udGVu
dC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC01OTEs
NyArNjIwLDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93TWVkaWFGcm9tU291
cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKICAgICBpZiAoIW1fbWVkaWFTcmMgfHwgbV9tZWRp
YVNyYy0+YWxsb3dzKHVybCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmVwb3J0Vmlv
bGF0aW9uKG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gbG9hZCBtZWRpYSBmcm9tICciLCB1cmwuc3Ry
aW5nKCksICInIGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7CisgICAg
cmVwb3J0VmlvbGF0aW9uKG1fbWVkaWFTcmMtPnRleHQoKSwgbWFrZVN0cmluZygiUmVmdXNlZCB0
byBsb2FkIG1lZGlhIGZyb20gJyIsIHVybC5zdHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250ZW50
LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTY2Niw2
ICs2OTUsMjIgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnBhcnNlRGlyZWN0aXZlKGNv
bnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCwKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAordm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnBhcnNlUmVwb3J0VVJJKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCit7CisgICAgY29uc3QgVUNoYXIqIHBvc2l0aW9uID0gdmFsdWUuY2hhcmFjdGVy
cygpOworICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwb3NpdGlvbiArIHZhbHVlLmxlbmd0aCgpOwor
CisgICAgd2hpbGUgKHBvc2l0aW9uIDwgZW5kKSB7CisgICAgICAgIHNraXBXaGlsZTxpc0FTQ0lJ
U3BhY2U+KHBvc2l0aW9uLCBlbmQpOworCisgICAgICAgIGNvbnN0IFVDaGFyKiB1cmxCZWdpbiA9
IHBvc2l0aW9uOworICAgICAgICBza2lwV2hpbGU8aXNOb3RBU0NJSVNwYWNlPihwb3NpdGlvbiwg
ZW5kKTsKKworICAgICAgICBTdHJpbmcgdXJsID0gU3RyaW5nKHVybEJlZ2luLCBwb3NpdGlvbiAt
IHVybEJlZ2luKTsKKyAgICAgICAgbV9yZXBvcnRVUkxzLmFwcGVuZChtX2RvY3VtZW50LT5jb21w
bGV0ZVVSTCh1cmwpKTsKKyAgICB9Cit9CisKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojph
ZGREaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzY3JpcHRTcmMsICgic2NyaXB0LXNyYyIp
KTsKQEAgLTY3NSwyNCArNzIwLDI3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjphZGRE
aXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlCiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHN0eWxlU3JjLCAoInN0eWxlLXNyYyIpKTsKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZm9udFNyYywgKCJmb250LXNyYyIpKTsKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbWVkaWFTcmMsICgibWVkaWEtc3JjIikpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCByZXBvcnRVUkksICgicmVwb3J0LXVyaSIpKTsK
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgb3B0aW9ucywgKCJvcHRpb25zIikpOwog
CiAgICAgQVNTRVJUKCFuYW1lLmlzRW1wdHkoKSk7CiAKICAgICBpZiAoIW1fc2NyaXB0U3JjICYm
IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsIHNjcmlwdFNyYykpCi0gICAgICAgIG1fc2NyaXB0U3Jj
ID0gYWRvcHRQdHIobmV3IENTUERpcmVjdGl2ZSh2YWx1ZSwgbV9kb2N1bWVudC0+c2VjdXJpdHlP
cmlnaW4oKSkpOworICAgICAgICBtX3NjcmlwdFNyYyA9IGFkb3B0UHRyKG5ldyBDU1BEaXJlY3Rp
dmUobmFtZSwgdmFsdWUsIG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKTsKICAgICBlbHNl
IGlmICghbV9vYmplY3RTcmMgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgb2JqZWN0U3JjKSkK
LSAgICAgICAgbV9vYmplY3RTcmMgPSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0aXZlKHZhbHVlLCBt
X2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgICAgIG1fb2JqZWN0U3JjID0gYWRv
cHRQdHIobmV3IENTUERpcmVjdGl2ZShuYW1lLCB2YWx1ZSwgbV9kb2N1bWVudC0+c2VjdXJpdHlP
cmlnaW4oKSkpOwogICAgIGVsc2UgaWYgKCFtX2ZyYW1lU3JjICYmIGVxdWFsSWdub3JpbmdDYXNl
KG5hbWUsIGZyYW1lU3JjKSkKLSAgICAgICAgbV9mcmFtZVNyYyA9IGFkb3B0UHRyKG5ldyBDU1BE
aXJlY3RpdmUodmFsdWUsIG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICAgICAg
bV9mcmFtZVNyYyA9IGFkb3B0UHRyKG5ldyBDU1BEaXJlY3RpdmUobmFtZSwgdmFsdWUsIG1fZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKTsKICAgICBlbHNlIGlmICghbV9pbWdTcmMgJiYgZXF1
YWxJZ25vcmluZ0Nhc2UobmFtZSwgaW1nU3JjKSkKLSAgICAgICAgbV9pbWdTcmMgPSBhZG9wdFB0
cihuZXcgQ1NQRGlyZWN0aXZlKHZhbHVlLCBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7
CisgICAgICAgIG1faW1nU3JjID0gYWRvcHRQdHIobmV3IENTUERpcmVjdGl2ZShuYW1lLCB2YWx1
ZSwgbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpOwogICAgIGVsc2UgaWYgKCFtX3N0eWxl
U3JjICYmIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsIHN0eWxlU3JjKSkKLSAgICAgICAgbV9zdHls
ZVNyYyA9IGFkb3B0UHRyKG5ldyBDU1BEaXJlY3RpdmUodmFsdWUsIG1fZG9jdW1lbnQtPnNlY3Vy
aXR5T3JpZ2luKCkpKTsKKyAgICAgICAgbV9zdHlsZVNyYyA9IGFkb3B0UHRyKG5ldyBDU1BEaXJl
Y3RpdmUobmFtZSwgdmFsdWUsIG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKTsKICAgICBl
bHNlIGlmICghbV9mb250U3JjICYmIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsIGZvbnRTcmMpKQot
ICAgICAgICBtX2ZvbnRTcmMgPSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0aXZlKHZhbHVlLCBtX2Rv
Y3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgICAgIG1fZm9udFNyYyA9IGFkb3B0UHRy
KG5ldyBDU1BEaXJlY3RpdmUobmFtZSwgdmFsdWUsIG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCkpKTsKICAgICBlbHNlIGlmICghbV9tZWRpYVNyYyAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1l
LCBtZWRpYVNyYykpCi0gICAgICAgIG1fbWVkaWFTcmMgPSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0
aXZlKHZhbHVlLCBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgICAgIG1fbWVk
aWFTcmMgPSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0aXZlKG5hbWUsIHZhbHVlLCBtX2RvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgZWxzZSBpZiAobV9yZXBvcnRVUkxzLmlzRW1wdHko
KSAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCByZXBvcnRVUkkpKQorICAgICAgICBwYXJzZVJl
cG9ydFVSSSh2YWx1ZSk7CiAgICAgZWxzZSBpZiAoIW1fb3B0aW9ucyAmJiBlcXVhbElnbm9yaW5n
Q2FzZShuYW1lLCBvcHRpb25zKSkKICAgICAgICAgbV9vcHRpb25zID0gYWRvcHRQdHIobmV3IENT
UE9wdGlvbnModmFsdWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5oCmluZGV4IDUyMjNlODJjZDE3MzNhNzcyYzNlZmE3NzQ5ZDRhY2IxZTk3M2JhZWEu
LjlkZjQ2MDYxZDNmN2ZhMjBkNWRkZWRmNWFkM2YzZTRhNzNiZmQ5OWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaApAQCAtNjYsMTIgKzY2LDE0IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wgcGFyc2VE
aXJlY3RpdmUoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhciogZW5kLCBTdHJpbmcmIG5h
bWUsIFN0cmluZyYgdmFsdWUpOworICAgIHZvaWQgcGFyc2VSZXBvcnRVUkkoY29uc3QgU3RyaW5n
Jik7CiAgICAgdm9pZCBhZGREaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHZhbHVlKTsKIAotICAgIHZvaWQgcmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgY29u
c29sZU1lc3NhZ2UpIGNvbnN0OworICAgIHZvaWQgcmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSkgY29uc3Q7CiAK
ICAgICBib29sIG1faGF2ZVBvbGljeTsKICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKwogICAg
IE93blB0cjxDU1BEaXJlY3RpdmU+IG1fc2NyaXB0U3JjOwogICAgIE93blB0cjxDU1BEaXJlY3Rp
dmU+IG1fb2JqZWN0U3JjOwogICAgIE93blB0cjxDU1BEaXJlY3RpdmU+IG1fZnJhbWVTcmM7CkBA
IC04MCw2ICs4Miw4IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPENTUERpcmVjdGl2ZT4gbV9mb250
U3JjOwogICAgIE93blB0cjxDU1BEaXJlY3RpdmU+IG1fbWVkaWFTcmM7CiAgICAgT3duUHRyPENT
UE9wdGlvbnM+IG1fb3B0aW9uczsKKworICAgIFZlY3RvcjxLVVJMPiBtX3JlcG9ydFVSTHM7CiB9
OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90435</attachid>
            <date>2011-04-20 16:16:32 -0700</date>
            <delta_ts>2011-04-20 16:24:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58639-20110420161631.patch</filename>
            <type>text/plain</type>
            <size>20867</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQzNDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4OTgwY2QyN2JkYTI3YjZlYzc4Yjg1
MmZiYTVhMzZiNzMwMGY2ODJiLi42NzM2MTczYmI2YzcwMzI0ZjVmYzg4MGJlYzFiNWJiNmJhMDE5
OWQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIwMTEtMDQtMjAgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDU1AgcmVwb3J0LXVyaSBpcyBtaXNzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODYzOQorCisgICAgICAgIFRlc3QgdGhhdCByZXBv
cnQtdXJpIHNlbmRzIGEgcmVwb3J0LiAgVGVzdGluZyBhcHByb2FjaCBzdG9sZW4gZnJvbSB0aGUK
KyAgICAgICAgcGluZyB0ZXN0cy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXBvcnQtdXJp
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3Jlc291cmNlcy9lY2hvLXJlcG9ydC5waHA6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy9nby10by1l
Y2hvLXJlcG9ydC5qczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL3NhdmUtcmVwb3J0LnBocDogQWRkZWQuCisKKzIw
MTEtMDQtMjAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KIAogICAgICAgICBDU1AgZnJhbWUtc3JjIGlzIG1pc3NpbmcK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3JlcG9ydC11cmktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVwb3J0LXVyaS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTBlMTY1ODhmZjQ5YjYwMjM4Y2YxZmU2ODg5ZTRjMjA5ZWY1YTcxYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L3JlcG9ydC11cmktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gZXhlY3V0ZSBpbmxpbmUgc2NyaXB0IGJl
Y2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuCisKK0NTUCByZXBvcnQgcmVjZWl2ZWQ6
CitDT05URU5UX1RZUEU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZAorSFRUUF9S
RUZFUkVSOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3JlcG9ydC11cmkuaHRtbAorUkVRVUVTVF9NRVRIT0Q6IFBPU1QKKz09PSBQT1NUIERBVEEg
PT09Citkb2N1bWVudC11cmw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvcmVwb3J0LXVyaS5odG1sCit2aW9sYXRlZC1kaXJlY3RpdmU6IHNjcmlw
dC1zcmMgXCdzZWxmXCcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmkuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmkuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yYWUwMTY1ZjRhZmEzYmM4OTkwMDJhODFkOGZjYzQ1Y2QyNmI3Njg4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvcmVwb3J0LXVyaS5odG1sCkBAIC0wLDAgKzEsNiBAQAorPG1ldGEgaHR0cC1l
cXVpdj0iWC1XZWJLaXQtQ1NQIiBjb250ZW50PSJzY3JpcHQtc3JjICdzZWxmJzsgcmVwb3J0LXVy
aSByZXNvdXJjZXMvc2F2ZS1yZXBvcnQucGhwIj4KKzxzY3JpcHQ+CisvLyBUaGlzIHNjcmlwdCBi
bG9jayB3aWxsIHRyaWdnZXIgYSB2aW9sYXRpb24gcmVwb3J0LgorYWxlcnQoJ0ZBSUwnKTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9nby10by1lY2hvLXJlcG9ydC5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvZWNoby1yZXBvcnQucGhwIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL2VjaG8t
cmVwb3J0LnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iN2U2OTg1Y2JmZjU1MWVlOTNjZGYyOTM5N2E0MjNjNzgy
NzI2ZGYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL2VjaG8tcmVwb3J0LnBocApAQCAtMCww
ICsxLDIyIEBACis8P3BocAord2hpbGUgKCFmaWxlX2V4aXN0cygiY3NwLXJlcG9ydC50eHQiKSkg
eworICAgIHVzbGVlcCgxMDAwMCk7CisgICAgLy8gZmlsZV9leGlzdHMoKSBjYWNoZXMgcmVzdWx0
cywgd2Ugd2FudCB0byBpbnZhbGlkYXRlIHRoZSBjYWNoZS4KKyAgICBjbGVhcnN0YXRjYWNoZSgp
OworfQorCitlY2hvICI8aHRtbD48Ym9keT5cbiI7CitlY2hvICJDU1AgcmVwb3J0IHJlY2VpdmVk
OiI7CiskcmVwb3J0RmlsZSA9IGZvcGVuKCJjc3AtcmVwb3J0LnR4dCIsICdyJyk7Cit3aGlsZSAo
JGxpbmUgPSBmZ2V0cygkcmVwb3J0RmlsZSkpIHsKKyAgICBlY2hvICI8YnI+IjsKKyAgICBlY2hv
IHRyaW0oJGxpbmUpOworfQorZmNsb3NlKCRyZXBvcnRGaWxlKTsKK3VubGluaygiY3NwLXJlcG9y
dC50eHQiKTsKK2VjaG8gIjxzY3JpcHQ+IjsKK2VjaG8gImlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIjsKK2VjaG8gIiAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
IjsKK2VjaG8gIjwvc2NyaXB0PiI7CitlY2hvICI8L2JvZHk+PC9odG1sPiI7Cis/PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvcmVzb3VyY2VzL2dvLXRvLWVjaG8tcmVwb3J0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL2dvLXRvLWVjaG8tcmVw
b3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmExM2U3NmRhMDVjMTVmMDRjN2ViZTY0MzdiOWNiYTIwYzVlNTVl
OGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvZ28tdG8tZWNoby1yZXBvcnQuanMKQEAgLTAs
MCArMSw4IEBACitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKKyAgICB3
aW5kb3cubG9jYXRpb24gPSAicmVzb3VyY2VzL2VjaG8tcmVwb3J0LnBocCI7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9yZXNvdXJjZXMvc2F2ZS1yZXBvcnQucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL3NhdmUtcmVwb3J0LnBocApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44NzJjZTk1NDE1MzU4NTE5OTllOGEwOGYzODIwZjkwNDMzOGJlYzE0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvcmVzb3VyY2VzL3NhdmUtcmVwb3J0LnBocApAQCAtMCwwICsxLDE1IEBACis8P3Bo
cAorJHJlcG9ydEZpbGUgPSBmb3BlbigiY3NwLXJlcG9ydC50eHQudG1wIiwgJ3cnKTsKKyRodHRw
SGVhZGVycyA9ICRfU0VSVkVSOwora3NvcnQoJGh0dHBIZWFkZXJzLCBTT1JUX1NUUklORyk7Citm
b3JlYWNoICgkaHR0cEhlYWRlcnMgYXMgJG5hbWUgPT4gJHZhbHVlKSB7CisgICAgaWYgKCRuYW1l
ID09PSAiQ09OVEVOVF9UWVBFIiB8fCAkbmFtZSA9PT0gIkhUVFBfUkVGRVJFUiIgfHwgJG5hbWUg
PT09ICJSRVFVRVNUX01FVEhPRCIpCisgICAgICAgIGZ3cml0ZSgkcmVwb3J0RmlsZSwgIiRuYW1l
OiAkdmFsdWVcbiIpOworfQorZndyaXRlKCRyZXBvcnRGaWxlLCAiPT09IFBPU1QgREFUQSA9PT1c
biIpOworZm9yZWFjaCAoJF9QT1NUIGFzICRuYW1lID0+ICR2YWx1ZSkgeworICAgIGZ3cml0ZSgk
cmVwb3J0RmlsZSwgIiRuYW1lOiAkdmFsdWVcbiIpOworfQorZmNsb3NlKCRyZXBvcnRGaWxlKTsK
K3JlbmFtZSgiY3NwLXJlcG9ydC50eHQudG1wIiwgImNzcC1yZXBvcnQudHh0Iik7Cis/PgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDkwNTQ5ZWE0OTViMmVmYTU5MGM5NjNjMzE4ODE3NDI5N2MzN2ZjZTUuLmY3MzI3
MDRkNmIxNjQzZmY0YWQyMWE3ZGYxODdiMjY2YzMyYjI3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSw0MSBAQAogMjAxMS0wNC0yMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENTUCByZXBvcnQt
dXJpIGlzIG1pc3NpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU4NjM5CisKKyAgICAgICAgT3VyIGltcGxlbWVudGF0aW9uIG9mIHJlcG9ydC11cmkg
ZGlmZmVycyBmcm9tIHdoYXQncyBjdXJyZW50bHkgaW4gdGhlCisgICAgICAgIHNwZWMuICBJIHNl
bnQgdGhlIHdvcmtpbmcgZ3JvdXAgYW4gZW1haWwgZXhwbGFpbmluZyB3aHkuICBCYXNpY2FsbHks
CisgICAgICAgIHdlJ3JlIHVzaW5nIG5vcm1hbCBmb3JtIGVuY29kaW5nIGluc3RlYWQgb2YgSlNP
TiBhbmQgd2UncmUgc2VuZGluZyBsZXNzCisgICAgICAgIGluZm9ybWF0aW9uIHRvIGEgd2lkZXIg
c2V0IG9mIFVSTHMuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvcmVwb3J0LXVyaS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvUGluZ0xv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaW5nTG9hZGVyOjpyZXBvcnRDb250ZW50U2Vj
dXJpdHlQb2xpY3lWaW9sYXRpb24pOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmg6Cisg
ICAgICAgICogcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NQRGlyZWN0aXZlOjpDU1BEaXJlY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGly
ZWN0aXZlOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6
cmVwb3J0VmlvbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eTo6YWxsb3dKYXZhU2NyaXB0VVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3k6OmFsbG93SW5saW5lRXZlbnRIYW5kbGVycyk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU2NyaXB0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTY3JpcHRGcm9tU291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dPYmplY3RGcm9tU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDaGlsZEZyYW1l
RnJvbVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93SW1hZ2VGcm9tU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsb3dTdHlsZUZyb21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5OjphbGxvd0ZvbnRGcm9tU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dNZWRpYUZyb21Tb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpwYXJzZVJlcG9ydFVSSSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFkZERpcmVjdGl2ZSk6CisgICAgICAgICog
cGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaDoKKworMjAxMS0wNC0yMCAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgog
CiAgICAgICAgIENTUCBmcmFtZS1zcmMgaXMgbWlzc2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdM
b2FkZXIuY3BwCmluZGV4IDI4MDYyMGFlMDMxNWQ0MmRiYjY5YmNhZGFkYWMxM2FmYjgyZGI5YWMu
LjAwYTAwNWU4NTRhODYxOTI4NTk0MWUyMmRhYzNkZTdlOTM5YjYzYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUGluZ0xvYWRlci5jcHAKQEAgLTkxLDYgKzkxLDI0IEBAIHZvaWQgUGluZ0xvYWRlcjo6
c2VuZFBpbmcoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiBwaW5nVVJMLCBjb25zdCBLVVJMJiBk
ZXN0aW5hCiAgICAgVU5VU0VEX1BBUkFNKGxlYWtlZFBpbmdMb2FkZXIpOwogfQogCit2b2lkIFBp
bmdMb2FkZXI6OnJlcG9ydENvbnRlbnRTZWN1cml0eVBvbGljeVZpb2xhdGlvbihGcmFtZSogZnJh
bWUsIGNvbnN0IEtVUkwmIHJlcG9ydFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcmVwb3J0KQor
eworICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHJlcG9ydFVSTCk7CisgICAgcmVxdWVzdC5z
ZXRUYXJnZXRUeXBlKFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJjZSk7CisgICAg
cmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJQT1NUIik7CisgICAgcmVxdWVzdC5zZXRIVFRQQ29udGVu
dFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpOworICAgIHJlcXVlc3Qu
c2V0SFRUUEJvZHkocmVwb3J0KTsKKyAgICBmcmFtZS0+bG9hZGVyKCktPmFkZEV4dHJhRmllbGRz
VG9TdWJyZXNvdXJjZVJlcXVlc3QocmVxdWVzdCk7CisKKyAgICBpZiAoIVNlY3VyaXR5T3JpZ2lu
OjpzaG91bGRIaWRlUmVmZXJyZXIocmVwb3J0VVJMLCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5n
UmVmZXJyZXIoKSkpCisgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKGZyYW1lLT5sb2Fk
ZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKTsKKyAgICBPd25QdHI8UGluZ0xvYWRlcj4gcGluZ0xv
YWRlciA9IGFkb3B0UHRyKG5ldyBQaW5nTG9hZGVyKGZyYW1lLCByZXF1ZXN0KSk7CisKKyAgICAv
LyBMZWFrIHRoZSBwaW5nIGxvYWRlciwgc2luY2UgaXQgd2lsbCBraWxsIGl0c2VsZiBhcyBzb29u
IGFzIGl0IHJlY2VpdmVzIGEgcmVzcG9uc2UuCisgICAgUGluZ0xvYWRlciogbGVha2VkUGluZ0xv
YWRlciA9IHBpbmdMb2FkZXIubGVha1B0cigpOworICAgIFVOVVNFRF9QQVJBTShsZWFrZWRQaW5n
TG9hZGVyKTsKK30KKwogUGluZ0xvYWRlcjo6UGluZ0xvYWRlcihGcmFtZSogZnJhbWUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1fdGltZW91dCh0aGlzLCAmUGluZ0xv
YWRlcjo6dGltZW91dCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5n
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oCmluZGV4IDI1MmMw
OWI3MDg3OWUzNWY4OGQ5NTc5OTM5MTM0YWM1OGE3MWU1M2EuLjQxM2ViNjFiYjM4Yzk1YmZjNGY0
ZTc1NzdhYTVjYTNlZDQyOWE0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
aW5nTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaApAQCAt
MzIsNiArMzIsNyBAQAogI2lmbmRlZiBQaW5nTG9hZGVyX2gKICNkZWZpbmUgUGluZ0xvYWRlcl9o
CiAKKyNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAg
LTU1LDYgKzU2LDcgQEAgY2xhc3MgUGluZ0xvYWRlciA6IHByaXZhdGUgUmVzb3VyY2VIYW5kbGVD
bGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGxvYWRJbWFnZShGcmFtZSosIGNvbnN0
IEtVUkwmIHVybCk7CiAgICAgc3RhdGljIHZvaWQgc2VuZFBpbmcoRnJhbWUqLCBjb25zdCBLVVJM
JiBwaW5nVVJMLCBjb25zdCBLVVJMJiBkZXN0aW5hdGlvblVSTCk7CisgICAgc3RhdGljIHZvaWQg
cmVwb3J0Q29udGVudFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uKEZyYW1lKiwgY29uc3QgS1VSTCYg
cmVwb3J0VVJMLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiByZXBvcnQpOwogCiAgICAgflBpbmdMb2Fk
ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
CmluZGV4IGZiM2M2ZTE0M2RkNWRjMzI3MTZjNjg1YjcyYjYwOTA5ZDE1NjljNmIuLmYxM2U2NmYx
NmI1Yjk4NDYwODFjMzQ4YTg0NDI5OGE0NjQ1MjA2M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTI4LDkgKzI4LDEzIEBACiAKICNpbmNs
dWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZvcm1E
YXRhLmgiCisjaW5jbHVkZSAiRm9ybURhdGFMaXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTcwLDYgKzc0LDExIEBAIGJvb2wgaXNTY2hlbWVDb250aW51YXRpb25DaGFyYWN0ZXIoVUNo
YXIgYykKICAgICByZXR1cm4gaXNBU0NJSUFscGhhbnVtZXJpYyhjKSB8fCBjID09ICcrJyB8fCBj
ID09ICctJyB8fCBjID09ICcuJzsKIH0KIAorYm9vbCBpc05vdEFTQ0lJU3BhY2UoVUNoYXIgYykK
K3sKKyAgICByZXR1cm4gIWlzQVNDSUlTcGFjZShjKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKIAog
c3RhdGljIGJvb2wgc2tpcEV4YWN0bHkoY29uc3QgVUNoYXIqJiBwb3NpdGlvbiwgY29uc3QgVUNo
YXIqIGVuZCwgVUNoYXIgZGVsaW1pdGVyKQpAQCAtMzk4LDggKzQwNyw5IEBAIHZvaWQgQ1NQU291
cmNlTGlzdDo6YWRkU291cmNlU2VsZigpCiAKIGNsYXNzIENTUERpcmVjdGl2ZSB7CiBwdWJsaWM6
Ci0gICAgQ1NQRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgdmFsdWUsIFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4pCisgICAgQ1NQRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICAgICAgOiBtX3NvdXJjZUxpc3Qo
b3JpZ2luKQorICAgICAgICAsIG1fdGV4dChtYWtlU3RyaW5nKG5hbWUsICIgIiwgdmFsdWUpKQog
ICAgIHsKICAgICAgICAgbV9zb3VyY2VMaXN0LnBhcnNlKHZhbHVlKTsKICAgICB9CkBAIC00MDks
OCArNDE5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fc291cmNlTGlzdC5tYXRjaGVz
KHVybCk7CiAgICAgfQogCisgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgeyByZXR1cm4gbV90ZXh0
OyB9CisKIHByaXZhdGU6CiAgICAgQ1NQU291cmNlTGlzdCBtX3NvdXJjZUxpc3Q7CisgICAgU3Ry
aW5nIG1fdGV4dDsKIH07CiAKIGNsYXNzIENTUE9wdGlvbnMgewpAQCAtNDgxLDEwICs0OTQsMjYg
QEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3Ry
aW5nJiBoZWFkZXIpCiAgICAgbV9oYXZlUG9saWN5ID0gdHJ1ZTsKIH0KIAotdm9pZCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNz
YWdlKSBjb25zdAordm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbihj
b25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2Up
IGNvbnN0CiB7Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCkpCi0g
ICAgICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2Fn
ZSwgMSwgU3RyaW5nKCkpOworICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCk7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWUtPmRvbVdpbmRv
dygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlw
ZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNvbnNvbGVNZXNzYWdlLCAxLCBTdHJpbmcoKSk7CisKKyAg
ICBpZiAobV9yZXBvcnRVUkxzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRm9y
bURhdGFMaXN0IHJlcG9ydExpc3QoVVRGOEVuY29kaW5nKCkpOworICAgIHJlcG9ydExpc3QuYXBw
ZW5kRGF0YSgiZG9jdW1lbnQtdXJsIiwgbV9kb2N1bWVudC0+dXJsKCkpOworICAgIGlmICghZGly
ZWN0aXZlVGV4dC5pc0VtcHR5KCkpCisgICAgICAgIHJlcG9ydExpc3QuYXBwZW5kRGF0YSgidmlv
bGF0ZWQtZGlyZWN0aXZlIiwgZGlyZWN0aXZlVGV4dCk7CisKKyAgICBSZWZQdHI8Rm9ybURhdGE+
IHJlcG9ydCA9IEZvcm1EYXRhOjpjcmVhdGUocmVwb3J0TGlzdCwgVVRGOEVuY29kaW5nKCkpOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JlcG9ydFVSTHMuc2l6ZSgpOyArK2kpCisg
ICAgICAgIFBpbmdMb2FkZXI6OnJlcG9ydENvbnRlbnRTZWN1cml0eVBvbGljeVZpb2xhdGlvbihm
cmFtZSwgbV9yZXBvcnRVUkxzW2ldLCByZXBvcnQpOwogfQogCiBib29sIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6cHJvdGVjdEFnYWluc3RYU1MoKSBjb25zdApAQCAtNDk4LDcgKzUyNyw3IEBAIGJv
b2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0phdmFTY3JpcHRVUkxzKCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29u
c29sZU1lc3NhZ2UsICgiUmVmdXNlZCB0byBleGVjdXRlIEphdmFTY3JpcHQgVVJMIGJlY2F1c2Ug
b2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7Ci0gICAgcmVwb3J0VmlvbGF0aW9uKGNv
bnNvbGVNZXNzYWdlKTsKKyAgICByZXBvcnRWaW9sYXRpb24obV9zY3JpcHRTcmMtPnRleHQoKSwg
Y29uc29sZU1lc3NhZ2UpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNTA4LDcgKzUzNyw3
IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZUV2ZW50SGFuZGxlcnMo
KSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgaW5saW5lIGV2ZW50
IGhhbmRsZXIgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKLSAgICBy
ZXBvcnRWaW9sYXRpb24oY29uc29sZU1lc3NhZ2UpOworICAgIHJlcG9ydFZpb2xhdGlvbihtX3Nj
cmlwdFNyYy0+dGV4dCgpLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CkBAIC01MTgsNyArNTQ3LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5s
aW5lU2NyaXB0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsICgiUmVmdXNlZCB0byBleGVjdXRlIGlu
bGluZSBzY3JpcHQgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKLSAg
ICByZXBvcnRWaW9sYXRpb24oY29uc29sZU1lc3NhZ2UpOworICAgIHJlcG9ydFZpb2xhdGlvbiht
X3NjcmlwdFNyYy0+dGV4dCgpLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCkBAIC01MjgsNyArNTU3LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
RXZhbCgpIGNvbnN0CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoIlJlZnVzZWQgdG8gZXZhbHVhdGUgc2NyaXB0
IGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7Ci0gICAgcmVwb3J0Vmlv
bGF0aW9uKGNvbnNvbGVNZXNzYWdlKTsKKyAgICByZXBvcnRWaW9sYXRpb24obV9zY3JpcHRTcmMt
PnRleHQoKSwgY29uc29sZU1lc3NhZ2UpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNTM3
LDcgKzU2Niw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1NjcmlwdEZyb21T
b3VyY2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAogICAgIGlmICghbV9zY3JpcHRTcmMgfHwgbV9z
Y3JpcHRTcmMtPmFsbG93cyh1cmwpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJlcG9y
dFZpb2xhdGlvbihtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgc2NyaXB0IGZyb20gJyIsIHVy
bC5zdHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsK
KyAgICByZXBvcnRWaW9sYXRpb24obV9zY3JpcHRTcmMtPnRleHQoKSwgbWFrZVN0cmluZygiUmVm
dXNlZCB0byBsb2FkIHNjcmlwdCBmcm9tICciLCB1cmwuc3RyaW5nKCksICInIGJlY2F1c2Ugb2Yg
Q29udGVudC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBA
IC01NDYsNyArNTc1LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93T2JqZWN0
RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiAgICAgaWYgKCFtX29iamVjdFNyYyB8
fCBtX29iamVjdFNyYy0+YWxsb3dzKHVybCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
cmVwb3J0VmlvbGF0aW9uKG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gbG9hZCBvYmplY3QgZnJvbSAn
IiwgdXJsLnN0cmluZygpLCAiJyBiZWNhdXNlIG9mIENvbnRlbnQtU2VjdXJpdHktUG9saWN5Llxu
IikpOworICAgIHJlcG9ydFZpb2xhdGlvbihtX29iamVjdFNyYy0+dGV4dCgpLCBtYWtlU3RyaW5n
KCJSZWZ1c2VkIHRvIGxvYWQgb2JqZWN0IGZyb20gJyIsIHVybC5zdHJpbmcoKSwgIicgYmVjYXVz
ZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKQEAgLTU1NSw3ICs1ODQsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dD
aGlsZEZyYW1lRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiAgICAgaWYgKCFtX2Zy
YW1lU3JjIHx8IG1fZnJhbWVTcmMtPmFsbG93cyh1cmwpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIHJlcG9ydFZpb2xhdGlvbihtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgZnJhbWUg
ZnJvbSAnIiwgdXJsLnN0cmluZygpLCAiJyBiZWNhdXNlIG9mIENvbnRlbnQtU2VjdXJpdHktUG9s
aWN5LlxuIikpOworICAgIHJlcG9ydFZpb2xhdGlvbihtX2ZyYW1lU3JjLT50ZXh0KCksIG1ha2VT
dHJpbmcoIlJlZnVzZWQgdG8gbG9hZCBmcmFtZSBmcm9tICciLCB1cmwuc3RyaW5nKCksICInIGJl
Y2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCkBAIC01NjQsNyArNTkzLDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKICAgICBpZiAoIW1faW1n
U3JjIHx8IG1faW1nU3JjLT5hbGxvd3ModXJsKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICByZXBvcnRWaW9sYXRpb24obWFrZVN0cmluZygiUmVmdXNlZCB0byBsb2FkIGltYWdlIGZyb20g
JyIsIHVybC5zdHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5c
biIpKTsKKyAgICByZXBvcnRWaW9sYXRpb24obV9pbWdTcmMtPnRleHQoKSwgbWFrZVN0cmluZygi
UmVmdXNlZCB0byBsb2FkIGltYWdlIGZyb20gJyIsIHVybC5zdHJpbmcoKSwgIicgYmVjYXVzZSBv
ZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
QEAgLTU3Myw3ICs2MDIsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTdHls
ZUZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAogICAgIGlmICghbV9zdHlsZVNyYyB8
fCBtX3N0eWxlU3JjLT5hbGxvd3ModXJsKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBy
ZXBvcnRWaW9sYXRpb24obWFrZVN0cmluZygiUmVmdXNlZCB0byBsb2FkIHN0eWxlIGZyb20gJyIs
IHVybC5zdHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIp
KTsKKyAgICByZXBvcnRWaW9sYXRpb24obV9zdHlsZVNyYy0+dGV4dCgpLCBtYWtlU3RyaW5nKCJS
ZWZ1c2VkIHRvIGxvYWQgc3R5bGUgZnJvbSAnIiwgdXJsLnN0cmluZygpLCAiJyBiZWNhdXNlIG9m
IENvbnRlbnQtU2VjdXJpdHktUG9saWN5LlxuIikpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApA
QCAtNTgyLDcgKzYxMSw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ZvbnRG
cm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKICAgICBpZiAoIW1fZm9udFNyYyB8fCBt
X2ZvbnRTcmMtPmFsbG93cyh1cmwpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJlcG9y
dFZpb2xhdGlvbihtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgZm9udCBmcm9tICciLCB1cmwu
c3RyaW5nKCksICInIGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7Cisg
ICAgcmVwb3J0VmlvbGF0aW9uKG1fZm9udFNyYy0+dGV4dCgpLCBtYWtlU3RyaW5nKCJSZWZ1c2Vk
IHRvIGxvYWQgZm9udCBmcm9tICciLCB1cmwuc3RyaW5nKCksICInIGJlY2F1c2Ugb2YgQ29udGVu
dC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC01OTEs
NyArNjIwLDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93TWVkaWFGcm9tU291
cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKICAgICBpZiAoIW1fbWVkaWFTcmMgfHwgbV9tZWRp
YVNyYy0+YWxsb3dzKHVybCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmVwb3J0Vmlv
bGF0aW9uKG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gbG9hZCBtZWRpYSBmcm9tICciLCB1cmwuc3Ry
aW5nKCksICInIGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7CisgICAg
cmVwb3J0VmlvbGF0aW9uKG1fbWVkaWFTcmMtPnRleHQoKSwgbWFrZVN0cmluZygiUmVmdXNlZCB0
byBsb2FkIG1lZGlhIGZyb20gJyIsIHVybC5zdHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250ZW50
LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTY2Niw2
ICs2OTUsMjQgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnBhcnNlRGlyZWN0aXZlKGNv
bnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCwKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAordm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnBhcnNlUmVwb3J0VVJJKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCit7CisgICAgY29uc3QgVUNoYXIqIHBvc2l0aW9uID0gdmFsdWUuY2hhcmFjdGVy
cygpOworICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwb3NpdGlvbiArIHZhbHVlLmxlbmd0aCgpOwor
CisgICAgd2hpbGUgKHBvc2l0aW9uIDwgZW5kKSB7CisgICAgICAgIHNraXBXaGlsZTxpc0FTQ0lJ
U3BhY2U+KHBvc2l0aW9uLCBlbmQpOworCisgICAgICAgIGNvbnN0IFVDaGFyKiB1cmxCZWdpbiA9
IHBvc2l0aW9uOworICAgICAgICBza2lwV2hpbGU8aXNOb3RBU0NJSVNwYWNlPihwb3NpdGlvbiwg
ZW5kKTsKKworICAgICAgICBpZiAodXJsQmVnaW4gPCBwb3NpdGlvbikgeworICAgICAgICAgICAg
U3RyaW5nIHVybCA9IFN0cmluZyh1cmxCZWdpbiwgcG9zaXRpb24gLSB1cmxCZWdpbik7CisgICAg
ICAgICAgICBtX3JlcG9ydFVSTHMuYXBwZW5kKG1fZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVybCkp
OworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWRk
RGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc2NyaXB0U3JjLCAoInNjcmlwdC1zcmMiKSk7
CkBAIC02NzUsMjQgKzcyMiwyNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWRkRGly
ZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZQogICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzdHlsZVNyYywgKCJzdHlsZS1zcmMiKSk7CiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZvbnRTcmMsICgiZm9udC1zcmMiKSk7CiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG1lZGlhU3JjLCAoIm1lZGlhLXNyYyIpKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcmVwb3J0VVJJLCAoInJlcG9ydC11cmkiKSk7CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG9wdGlvbnMsICgib3B0aW9ucyIpKTsKIAog
ICAgIEFTU0VSVCghbmFtZS5pc0VtcHR5KCkpOwogCiAgICAgaWYgKCFtX3NjcmlwdFNyYyAmJiBl
cXVhbElnbm9yaW5nQ2FzZShuYW1lLCBzY3JpcHRTcmMpKQotICAgICAgICBtX3NjcmlwdFNyYyA9
IGFkb3B0UHRyKG5ldyBDU1BEaXJlY3RpdmUodmFsdWUsIG1fZG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCkpKTsKKyAgICAgICAgbV9zY3JpcHRTcmMgPSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0aXZl
KG5hbWUsIHZhbHVlLCBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7CiAgICAgZWxzZSBp
ZiAoIW1fb2JqZWN0U3JjICYmIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsIG9iamVjdFNyYykpCi0g
ICAgICAgIG1fb2JqZWN0U3JjID0gYWRvcHRQdHIobmV3IENTUERpcmVjdGl2ZSh2YWx1ZSwgbV9k
b2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICBtX29iamVjdFNyYyA9IGFkb3B0
UHRyKG5ldyBDU1BEaXJlY3RpdmUobmFtZSwgdmFsdWUsIG1fZG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCkpKTsKICAgICBlbHNlIGlmICghbV9mcmFtZVNyYyAmJiBlcXVhbElnbm9yaW5nQ2FzZShu
YW1lLCBmcmFtZVNyYykpCi0gICAgICAgIG1fZnJhbWVTcmMgPSBhZG9wdFB0cihuZXcgQ1NQRGly
ZWN0aXZlKHZhbHVlLCBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgICAgIG1f
ZnJhbWVTcmMgPSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0aXZlKG5hbWUsIHZhbHVlLCBtX2RvY3Vt
ZW50LT5zZWN1cml0eU9yaWdpbigpKSk7CiAgICAgZWxzZSBpZiAoIW1faW1nU3JjICYmIGVxdWFs
SWdub3JpbmdDYXNlKG5hbWUsIGltZ1NyYykpCi0gICAgICAgIG1faW1nU3JjID0gYWRvcHRQdHIo
bmV3IENTUERpcmVjdGl2ZSh2YWx1ZSwgbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpOwor
ICAgICAgICBtX2ltZ1NyYyA9IGFkb3B0UHRyKG5ldyBDU1BEaXJlY3RpdmUobmFtZSwgdmFsdWUs
IG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKTsKICAgICBlbHNlIGlmICghbV9zdHlsZVNy
YyAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCBzdHlsZVNyYykpCi0gICAgICAgIG1fc3R5bGVT
cmMgPSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0aXZlKHZhbHVlLCBtX2RvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpKSk7CisgICAgICAgIG1fc3R5bGVTcmMgPSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0
aXZlKG5hbWUsIHZhbHVlLCBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7CiAgICAgZWxz
ZSBpZiAoIW1fZm9udFNyYyAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCBmb250U3JjKSkKLSAg
ICAgICAgbV9mb250U3JjID0gYWRvcHRQdHIobmV3IENTUERpcmVjdGl2ZSh2YWx1ZSwgbV9kb2N1
bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICBtX2ZvbnRTcmMgPSBhZG9wdFB0cihu
ZXcgQ1NQRGlyZWN0aXZlKG5hbWUsIHZhbHVlLCBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigp
KSk7CiAgICAgZWxzZSBpZiAoIW1fbWVkaWFTcmMgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwg
bWVkaWFTcmMpKQotICAgICAgICBtX21lZGlhU3JjID0gYWRvcHRQdHIobmV3IENTUERpcmVjdGl2
ZSh2YWx1ZSwgbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICBtX21lZGlh
U3JjID0gYWRvcHRQdHIobmV3IENTUERpcmVjdGl2ZShuYW1lLCB2YWx1ZSwgbV9kb2N1bWVudC0+
c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIGVsc2UgaWYgKG1fcmVwb3J0VVJMcy5pc0VtcHR5KCkg
JiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgcmVwb3J0VVJJKSkKKyAgICAgICAgcGFyc2VSZXBv
cnRVUkkodmFsdWUpOwogICAgIGVsc2UgaWYgKCFtX29wdGlvbnMgJiYgZXF1YWxJZ25vcmluZ0Nh
c2UobmFtZSwgb3B0aW9ucykpCiAgICAgICAgIG1fb3B0aW9ucyA9IGFkb3B0UHRyKG5ldyBDU1BP
cHRpb25zKHZhbHVlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuaAppbmRleCA1MjIzZTgyY2QxNzMzYTc3MmMzZWZhNzc0OWQ0YWNiMWU5NzNiYWVhLi45
ZGY0NjA2MWQzZjdmYTIwZDVkZGVkZjVhZDNmM2U0YTczYmZkOTlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKQEAgLTY2LDEyICs2NiwxNCBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmKTsKICAgICBib29sIHBhcnNlRGly
ZWN0aXZlKGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCwgU3RyaW5nJiBuYW1l
LCBTdHJpbmcmIHZhbHVlKTsKKyAgICB2b2lkIHBhcnNlUmVwb3J0VVJJKGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgYWRkRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CiAKLSAgICB2b2lkIHJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGNvbnNv
bGVNZXNzYWdlKSBjb25zdDsKKyAgICB2b2lkIHJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcm
IGRpcmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UpIGNvbnN0OwogCiAg
ICAgYm9vbCBtX2hhdmVQb2xpY3k7CiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisKICAgICBP
d25QdHI8Q1NQRGlyZWN0aXZlPiBtX3NjcmlwdFNyYzsKICAgICBPd25QdHI8Q1NQRGlyZWN0aXZl
PiBtX29iamVjdFNyYzsKICAgICBPd25QdHI8Q1NQRGlyZWN0aXZlPiBtX2ZyYW1lU3JjOwpAQCAt
ODAsNiArODIsOCBAQCBwcml2YXRlOgogICAgIE93blB0cjxDU1BEaXJlY3RpdmU+IG1fZm9udFNy
YzsKICAgICBPd25QdHI8Q1NQRGlyZWN0aXZlPiBtX21lZGlhU3JjOwogICAgIE93blB0cjxDU1BP
cHRpb25zPiBtX29wdGlvbnM7CisKKyAgICBWZWN0b3I8S1VSTD4gbV9yZXBvcnRVUkxzOwogfTsK
IAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90438</attachid>
            <date>2011-04-20 16:24:13 -0700</date>
            <delta_ts>2011-04-20 16:48:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58639-20110420162411.patch</filename>
            <type>text/plain</type>
            <size>21857</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQzNDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4OTgwY2QyN2JkYTI3YjZlYzc4Yjg1
MmZiYTVhMzZiNzMwMGY2ODJiLi42NzM2MTczYmI2YzcwMzI0ZjVmYzg4MGJlYzFiNWJiNmJhMDE5
OWQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIwMTEtMDQtMjAgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDU1AgcmVwb3J0LXVyaSBpcyBtaXNzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODYzOQorCisgICAgICAgIFRlc3QgdGhhdCByZXBv
cnQtdXJpIHNlbmRzIGEgcmVwb3J0LiAgVGVzdGluZyBhcHByb2FjaCBzdG9sZW4gZnJvbSB0aGUK
KyAgICAgICAgcGluZyB0ZXN0cy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXBvcnQtdXJp
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3Jlc291cmNlcy9lY2hvLXJlcG9ydC5waHA6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy9nby10by1l
Y2hvLXJlcG9ydC5qczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL3NhdmUtcmVwb3J0LnBocDogQWRkZWQuCisKKzIw
MTEtMDQtMjAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KIAogICAgICAgICBDU1AgZnJhbWUtc3JjIGlzIG1pc3NpbmcK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3JlcG9ydC11cmktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVwb3J0LXVyaS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTBlMTY1ODhmZjQ5YjYwMjM4Y2YxZmU2ODg5ZTRjMjA5ZWY1YTcxYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L3JlcG9ydC11cmktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gZXhlY3V0ZSBpbmxpbmUgc2NyaXB0IGJl
Y2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuCisKK0NTUCByZXBvcnQgcmVjZWl2ZWQ6
CitDT05URU5UX1RZUEU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZAorSFRUUF9S
RUZFUkVSOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3JlcG9ydC11cmkuaHRtbAorUkVRVUVTVF9NRVRIT0Q6IFBPU1QKKz09PSBQT1NUIERBVEEg
PT09Citkb2N1bWVudC11cmw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvcmVwb3J0LXVyaS5odG1sCit2aW9sYXRlZC1kaXJlY3RpdmU6IHNjcmlw
dC1zcmMgXCdzZWxmXCcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmkuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmkuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yYWUwMTY1ZjRhZmEzYmM4OTkwMDJhODFkOGZjYzQ1Y2QyNmI3Njg4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvcmVwb3J0LXVyaS5odG1sCkBAIC0wLDAgKzEsNiBAQAorPG1ldGEgaHR0cC1l
cXVpdj0iWC1XZWJLaXQtQ1NQIiBjb250ZW50PSJzY3JpcHQtc3JjICdzZWxmJzsgcmVwb3J0LXVy
aSByZXNvdXJjZXMvc2F2ZS1yZXBvcnQucGhwIj4KKzxzY3JpcHQ+CisvLyBUaGlzIHNjcmlwdCBi
bG9jayB3aWxsIHRyaWdnZXIgYSB2aW9sYXRpb24gcmVwb3J0LgorYWxlcnQoJ0ZBSUwnKTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9nby10by1lY2hvLXJlcG9ydC5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvZWNoby1yZXBvcnQucGhwIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL2VjaG8t
cmVwb3J0LnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iN2U2OTg1Y2JmZjU1MWVlOTNjZGYyOTM5N2E0MjNjNzgy
NzI2ZGYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL2VjaG8tcmVwb3J0LnBocApAQCAtMCww
ICsxLDIyIEBACis8P3BocAord2hpbGUgKCFmaWxlX2V4aXN0cygiY3NwLXJlcG9ydC50eHQiKSkg
eworICAgIHVzbGVlcCgxMDAwMCk7CisgICAgLy8gZmlsZV9leGlzdHMoKSBjYWNoZXMgcmVzdWx0
cywgd2Ugd2FudCB0byBpbnZhbGlkYXRlIHRoZSBjYWNoZS4KKyAgICBjbGVhcnN0YXRjYWNoZSgp
OworfQorCitlY2hvICI8aHRtbD48Ym9keT5cbiI7CitlY2hvICJDU1AgcmVwb3J0IHJlY2VpdmVk
OiI7CiskcmVwb3J0RmlsZSA9IGZvcGVuKCJjc3AtcmVwb3J0LnR4dCIsICdyJyk7Cit3aGlsZSAo
JGxpbmUgPSBmZ2V0cygkcmVwb3J0RmlsZSkpIHsKKyAgICBlY2hvICI8YnI+IjsKKyAgICBlY2hv
IHRyaW0oJGxpbmUpOworfQorZmNsb3NlKCRyZXBvcnRGaWxlKTsKK3VubGluaygiY3NwLXJlcG9y
dC50eHQiKTsKK2VjaG8gIjxzY3JpcHQ+IjsKK2VjaG8gImlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIjsKK2VjaG8gIiAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
IjsKK2VjaG8gIjwvc2NyaXB0PiI7CitlY2hvICI8L2JvZHk+PC9odG1sPiI7Cis/PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvcmVzb3VyY2VzL2dvLXRvLWVjaG8tcmVwb3J0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL2dvLXRvLWVjaG8tcmVw
b3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmExM2U3NmRhMDVjMTVmMDRjN2ViZTY0MzdiOWNiYTIwYzVlNTVl
OGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvZ28tdG8tZWNoby1yZXBvcnQuanMKQEAgLTAs
MCArMSw4IEBACitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKKyAgICB3
aW5kb3cubG9jYXRpb24gPSAicmVzb3VyY2VzL2VjaG8tcmVwb3J0LnBocCI7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9yZXNvdXJjZXMvc2F2ZS1yZXBvcnQucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL3NhdmUtcmVwb3J0LnBocApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44NzJjZTk1NDE1MzU4NTE5OTllOGEwOGYzODIwZjkwNDMzOGJlYzE0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvcmVzb3VyY2VzL3NhdmUtcmVwb3J0LnBocApAQCAtMCwwICsxLDE1IEBACis8P3Bo
cAorJHJlcG9ydEZpbGUgPSBmb3BlbigiY3NwLXJlcG9ydC50eHQudG1wIiwgJ3cnKTsKKyRodHRw
SGVhZGVycyA9ICRfU0VSVkVSOwora3NvcnQoJGh0dHBIZWFkZXJzLCBTT1JUX1NUUklORyk7Citm
b3JlYWNoICgkaHR0cEhlYWRlcnMgYXMgJG5hbWUgPT4gJHZhbHVlKSB7CisgICAgaWYgKCRuYW1l
ID09PSAiQ09OVEVOVF9UWVBFIiB8fCAkbmFtZSA9PT0gIkhUVFBfUkVGRVJFUiIgfHwgJG5hbWUg
PT09ICJSRVFVRVNUX01FVEhPRCIpCisgICAgICAgIGZ3cml0ZSgkcmVwb3J0RmlsZSwgIiRuYW1l
OiAkdmFsdWVcbiIpOworfQorZndyaXRlKCRyZXBvcnRGaWxlLCAiPT09IFBPU1QgREFUQSA9PT1c
biIpOworZm9yZWFjaCAoJF9QT1NUIGFzICRuYW1lID0+ICR2YWx1ZSkgeworICAgIGZ3cml0ZSgk
cmVwb3J0RmlsZSwgIiRuYW1lOiAkdmFsdWVcbiIpOworfQorZmNsb3NlKCRyZXBvcnRGaWxlKTsK
K3JlbmFtZSgiY3NwLXJlcG9ydC50eHQudG1wIiwgImNzcC1yZXBvcnQudHh0Iik7Cis/PgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDkwNTQ5ZWE0OTViMmVmYTU5MGM5NjNjMzE4ODE3NDI5N2MzN2ZjZTUuLjczMmM5
OTdlMzA0YTMzZjI2ZTBiYzVjNWVmMDU4NWRkN2MzYTMzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSw0NSBAQAogMjAxMS0wNC0yMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENTUCByZXBvcnQt
dXJpIGlzIG1pc3NpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU4NjM5CisKKyAgICAgICAgT3VyIGltcGxlbWVudGF0aW9uIG9mIHJlcG9ydC11cmkg
ZGlmZmVycyBmcm9tIHdoYXQncyBjdXJyZW50bHkgaW4gdGhlCisgICAgICAgIHNwZWMuICBJIHNl
bnQgdGhlIHdvcmtpbmcgZ3JvdXAgYW4gZW1haWwgZXhwbGFpbmluZyB3aHkuICBHZW5lcmFsbHks
CisgICAgICAgIHdlJ3JlIHVzaW5nIG5vcm1hbCBmb3JtIGVuY29kaW5nIGluc3RlYWQgb2YgSlNP
TiBhbmQgd2UncmUgc2VuZGluZyBsZXNzCisgICAgICAgIGluZm9ybWF0aW9uIHRvIGEgd2lkZXIg
c2V0IG9mIFVSTHMuICBTcGVjaWZpY2FsbHksIHdlIHNlbmQgdGhlIGN1cnJlbnQKKyAgICAgICAg
ZG9jdW1lbnQncyBVUkwgYXMgd2VsbCBhcyB0aGUgZGlyZWN0aXZlIHRoYXQgd2FzIHZpb2xhdGVk
LiAgVGhlIHNwZWMKKyAgICAgICAgKGN1cnJlbnRseSkgdGVsbHMgdXMgdG8gc2VuZCB0aGUgcmF3
IEhUVFAgaGVhZGVycyBhbmQgdGhlIFVSTCB0aGF0CisgICAgICAgIGNhdXNlZCB0aGUgdmlvbGF0
aW9uLCBidXQgYm90aCBvZiB0aGVzZSBwaWVjZXMgb2YgZGF0YSBjb3VsZCBjb250YWluCisgICAg
ICAgIGluZm9ybWF0aW9uIHRoYXQncyBzZW5zaXRpdmUsIHNvIHdlIG9taXQgdGhlbSBmb3Igbm93
LgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3JlcG9ydC11cmkuaHRtbAorCisgICAgICAgICogbG9hZGVyL1BpbmdMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGluZ0xvYWRlcjo6cmVwb3J0Q29udGVudFNlY3VyaXR5UG9saWN5
VmlvbGF0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvUGluZ0xvYWRlci5oOgorICAgICAgICAqIHBh
Z2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVj
dGl2ZTo6Q1NQRGlyZWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZTo6dGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SmF2
YVNjcmlwdFVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Ojph
bGxvd0lubGluZUV2ZW50SGFuZGxlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3Vy
aXR5UG9saWN5OjphbGxvd0lubGluZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
U2VjdXJpdHlQb2xpY3k6OmFsbG93RXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmFsbG93U2NyaXB0RnJvbVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93T2JqZWN0RnJvbVNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ltYWdlRnJv
bVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
U3R5bGVGcm9tU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eTo6YWxsb3dGb250RnJvbVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3k6OmFsbG93TWVkaWFGcm9tU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRTZWN1cml0eVBvbGljeTo6cGFyc2VSZXBvcnRVUkkpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5OjphZGREaXJlY3RpdmUpOgorICAgICAgICAqIHBhZ2UvQ29udGVu
dFNlY3VyaXR5UG9saWN5Lmg6CisKKzIwMTEtMDQtMjAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KIAogICAgICAgICBD
U1AgZnJhbWUtc3JjIGlzIG1pc3NpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9QaW5nTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcApp
bmRleCAyODA2MjBhZTAzMTVkNDJkYmI2OWJjYWRhZGFjMTNhZmI4MmRiOWFjLi4wMGEwMDVlODU0
YTg2MTkyODU5NDFlMjJkYWMzZGU3ZTkzOWI2M2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdM
b2FkZXIuY3BwCkBAIC05MSw2ICs5MSwyNCBAQCB2b2lkIFBpbmdMb2FkZXI6OnNlbmRQaW5nKEZy
YW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgcGluZ1VSTCwgY29uc3QgS1VSTCYgZGVzdGluYQogICAg
IFVOVVNFRF9QQVJBTShsZWFrZWRQaW5nTG9hZGVyKTsKIH0KIAordm9pZCBQaW5nTG9hZGVyOjpy
ZXBvcnRDb250ZW50U2VjdXJpdHlQb2xpY3lWaW9sYXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBL
VVJMJiByZXBvcnRVUkwsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHJlcG9ydCkKK3sKKyAgICBSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdChyZXBvcnRVUkwpOworICAgIHJlcXVlc3Quc2V0VGFyZ2V0VHlw
ZShSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU3VicmVzb3VyY2UpOworICAgIHJlcXVlc3Quc2V0
SFRUUE1ldGhvZCgiUE9TVCIpOworICAgIHJlcXVlc3Quc2V0SFRUUENvbnRlbnRUeXBlKCJhcHBs
aWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTsKKyAgICByZXF1ZXN0LnNldEhUVFBCb2R5
KHJlcG9ydCk7CisgICAgZnJhbWUtPmxvYWRlcigpLT5hZGRFeHRyYUZpZWxkc1RvU3VicmVzb3Vy
Y2VSZXF1ZXN0KHJlcXVlc3QpOworCisgICAgaWYgKCFTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlk
ZVJlZmVycmVyKHJlcG9ydFVSTCwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkp
KQorICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihmcmFtZS0+bG9hZGVyKCktPm91dGdv
aW5nUmVmZXJyZXIoKSk7CisgICAgT3duUHRyPFBpbmdMb2FkZXI+IHBpbmdMb2FkZXIgPSBhZG9w
dFB0cihuZXcgUGluZ0xvYWRlcihmcmFtZSwgcmVxdWVzdCkpOworCisgICAgLy8gTGVhayB0aGUg
cGluZyBsb2FkZXIsIHNpbmNlIGl0IHdpbGwga2lsbCBpdHNlbGYgYXMgc29vbiBhcyBpdCByZWNl
aXZlcyBhIHJlc3BvbnNlLgorICAgIFBpbmdMb2FkZXIqIGxlYWtlZFBpbmdMb2FkZXIgPSBwaW5n
TG9hZGVyLmxlYWtQdHIoKTsKKyAgICBVTlVTRURfUEFSQU0obGVha2VkUGluZ0xvYWRlcik7Cit9
CisKIFBpbmdMb2FkZXI6OlBpbmdMb2FkZXIoRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCiAgICAgOiBtX3RpbWVvdXQodGhpcywgJlBpbmdMb2FkZXI6OnRpbWVv
dXQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAppbmRleCAyNTJjMDliNzA4NzllMzVm
ODhkOTU3OTkzOTEzNGFjNThhNzFlNTNhLi40MTNlYjYxYmIzOGM5NWJmYzRmNGU3NTc3YWE1Y2Ez
ZWQ0MjlhNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgKQEAgLTMyLDYgKzMyLDcg
QEAKICNpZm5kZWYgUGluZ0xvYWRlcl9oCiAjZGVmaW5lIFBpbmdMb2FkZXJfaAogCisjaW5jbHVk
ZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC01NSw2ICs1Niw3
IEBAIGNsYXNzIFBpbmdMb2FkZXIgOiBwcml2YXRlIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgdm9pZCBsb2FkSW1hZ2UoRnJhbWUqLCBjb25zdCBLVVJMJiB1cmwp
OwogICAgIHN0YXRpYyB2b2lkIHNlbmRQaW5nKEZyYW1lKiwgY29uc3QgS1VSTCYgcGluZ1VSTCwg
Y29uc3QgS1VSTCYgZGVzdGluYXRpb25VUkwpOworICAgIHN0YXRpYyB2b2lkIHJlcG9ydENvbnRl
bnRTZWN1cml0eVBvbGljeVZpb2xhdGlvbihGcmFtZSosIGNvbnN0IEtVUkwmIHJlcG9ydFVSTCwg
UGFzc1JlZlB0cjxGb3JtRGF0YT4gcmVwb3J0KTsKIAogICAgIH5QaW5nTG9hZGVyKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCBmYjNj
NmUxNDNkZDVkYzMyNzE2YzY4NWI3MmI2MDkwOWQxNTY5YzZiLi5lNjUwOWExY2UwYmUxYzBlMjcw
ZTQ5YjcwYzdmZjRjZmRjYjdjMjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50
U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0yOCw5ICsyOCwxMyBAQAogCiAjaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGb3JtRGF0YS5oIgorI2lu
Y2x1ZGUgIkZvcm1EYXRhTGlzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQaW5nTG9hZGVyLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKKyNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MCw2ICs3
NCwxMSBAQCBib29sIGlzU2NoZW1lQ29udGludWF0aW9uQ2hhcmFjdGVyKFVDaGFyIGMpCiAgICAg
cmV0dXJuIGlzQVNDSUlBbHBoYW51bWVyaWMoYykgfHwgYyA9PSAnKycgfHwgYyA9PSAnLScgfHwg
YyA9PSAnLic7CiB9CiAKK2Jvb2wgaXNOb3RBU0NJSVNwYWNlKFVDaGFyIGMpCit7CisgICAgcmV0
dXJuICFpc0FTQ0lJU3BhY2UoYyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKIHN0YXRpYyBib29s
IHNraXBFeGFjdGx5KGNvbnN0IFVDaGFyKiYgcG9zaXRpb24sIGNvbnN0IFVDaGFyKiBlbmQsIFVD
aGFyIGRlbGltaXRlcikKQEAgLTM5OCw4ICs0MDcsOSBAQCB2b2lkIENTUFNvdXJjZUxpc3Q6OmFk
ZFNvdXJjZVNlbGYoKQogCiBjbGFzcyBDU1BEaXJlY3RpdmUgewogcHVibGljOgotICAgIENTUERp
cmVjdGl2ZShjb25zdCBTdHJpbmcmIHZhbHVlLCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQorICAg
IENTUERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgICAgIDogbV9zb3VyY2VMaXN0KG9yaWdpbikKKyAg
ICAgICAgLCBtX3RleHQobWFrZVN0cmluZyhuYW1lLCAiICIsIHZhbHVlKSkKICAgICB7CiAgICAg
ICAgIG1fc291cmNlTGlzdC5wYXJzZSh2YWx1ZSk7CiAgICAgfQpAQCAtNDA5LDggKzQxOSwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3NvdXJjZUxpc3QubWF0Y2hlcyh1cmwpOwogICAg
IH0KIAorICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIHsgcmV0dXJuIG1fdGV4dDsgfQorCiBwcml2
YXRlOgogICAgIENTUFNvdXJjZUxpc3QgbV9zb3VyY2VMaXN0OworICAgIFN0cmluZyBtX3RleHQ7
CiB9OwogCiBjbGFzcyBDU1BPcHRpb25zIHsKQEAgLTQ4MSwxMCArNDk0LDM2IEBAIHZvaWQgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVy
KQogICAgIG1faGF2ZVBvbGljeSA9IHRydWU7CiB9CiAKLXZvaWQgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSkgY29uc3QK
K3ZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5n
JiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlKSBjb25zdAogewot
ICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2RvY3VtZW50LT5mcmFtZSgpKQotICAgICAgICBmcmFt
ZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExv
Z01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UsIDEsIFN0cmlu
ZygpKTsKKyAgICBGcmFtZSogZnJhbWUgPSBtX2RvY3VtZW50LT5mcmFtZSgpOworICAgIGlmICgh
ZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29s
ZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVz
c2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSwgMSwgU3RyaW5nKCkpOworCisgICAgaWYgKG1fcmVw
b3J0VVJMcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdlIG5lZWQgdG8g
YmUgY2FyZWZ1bCBoZXJlIHdoZW4gZGVjaWRpbmcgd2hhdCBpbmZvcm1hdGlvbiB0byBzZW5kIHRv
IHRoZQorICAgIC8vIHJlcG9ydC11cmkuIEN1cnJlbnRseSwgd2Ugc2VuZCBvbmx5IHRoZSBjdXJy
ZW50IGRvY3VtZW50J3MgVVJMIGFuZCB0aGUKKyAgICAvLyBkaXJlY3RpdmUgdGhhdCB3YXMgdmlv
bGF0ZWQuIFRoZSBkb2N1bWVudCdzIFVSTCBpcyBzYWZlIHRvIHNlbmQgYmVjYXVzZQorICAgIC8v
IGl0J3MgdGhlIGRvY3VtZW50IGl0c2VsZiB0aGF0J3MgcmVxdWVzdGluZyB0aGF0IGl0IGJlIHNl
bnQuIFlvdSBjb3VsZAorICAgIC8vIG1ha2UgYW4gYXJndW1lbnQgdGhhdCB3ZSBzaG91bGRuJ3Qg
c2VuZCBIVFRQUyBkb2N1bWVudCBVUkxzIHRvIEhUVFAKKyAgICAvLyByZXBvcnQtdXJpcyAoZm9y
IHRoZSBzYW1lIHJlYXNvbnMgdGhhdCB3ZSBzdXByZXNzIHRoZSBSZWZlcmVyIGluIHRoYXQKKyAg
ICAvLyBjYXNlKSwgYnV0IHRoZSBSZWZlcmVyIGlzIHNlbnQgaW1wbGljaXRseSB3aGVyZWFzIHRo
aXMgcmVxdWVzdCBpcyBvbmx5CisgICAgLy8gc2VudCBleHBsaWNpdGx5LiBBcyBmb3Igd2hpY2gg
ZGlyZWN0aXZlIHdhcyB2aW9sYXRlZCwgdGhhdCdzIHByZXR0eQorICAgIC8vIGhhcm1sZXNzIGlu
Zm9ybWF0aW9uLgorCisgICAgRm9ybURhdGFMaXN0IHJlcG9ydExpc3QoVVRGOEVuY29kaW5nKCkp
OworICAgIHJlcG9ydExpc3QuYXBwZW5kRGF0YSgiZG9jdW1lbnQtdXJsIiwgbV9kb2N1bWVudC0+
dXJsKCkpOworICAgIGlmICghZGlyZWN0aXZlVGV4dC5pc0VtcHR5KCkpCisgICAgICAgIHJlcG9y
dExpc3QuYXBwZW5kRGF0YSgidmlvbGF0ZWQtZGlyZWN0aXZlIiwgZGlyZWN0aXZlVGV4dCk7CisK
KyAgICBSZWZQdHI8Rm9ybURhdGE+IHJlcG9ydCA9IEZvcm1EYXRhOjpjcmVhdGUocmVwb3J0TGlz
dCwgVVRGOEVuY29kaW5nKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JlcG9y
dFVSTHMuc2l6ZSgpOyArK2kpCisgICAgICAgIFBpbmdMb2FkZXI6OnJlcG9ydENvbnRlbnRTZWN1
cml0eVBvbGljeVZpb2xhdGlvbihmcmFtZSwgbV9yZXBvcnRVUkxzW2ldLCByZXBvcnQpOwogfQog
CiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cHJvdGVjdEFnYWluc3RYU1MoKSBjb25zdApA
QCAtNDk4LDcgKzUzNyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0phdmFT
Y3JpcHRVUkxzKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsICgiUmVmdXNlZCB0byBleGVjdXRlIEph
dmFTY3JpcHQgVVJMIGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7Ci0g
ICAgcmVwb3J0VmlvbGF0aW9uKGNvbnNvbGVNZXNzYWdlKTsKKyAgICByZXBvcnRWaW9sYXRpb24o
bV9zY3JpcHRTcmMtPnRleHQoKSwgY29uc29sZU1lc3NhZ2UpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KIApAQCAtNTA4LDcgKzU0Nyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxv
d0lubGluZUV2ZW50SGFuZGxlcnMoKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJSZWZ1c2VkIHRv
IGV4ZWN1dGUgaW5saW5lIGV2ZW50IGhhbmRsZXIgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5
LVBvbGljeS5cbiIpKTsKLSAgICByZXBvcnRWaW9sYXRpb24oY29uc29sZU1lc3NhZ2UpOworICAg
IHJlcG9ydFZpb2xhdGlvbihtX3NjcmlwdFNyYy0+dGV4dCgpLCBjb25zb2xlTWVzc2FnZSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC01MTgsNyArNTU3LDcgQEAgYm9vbCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU2NyaXB0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsICgi
UmVmdXNlZCB0byBleGVjdXRlIGlubGluZSBzY3JpcHQgYmVjYXVzZSBvZiBDb250ZW50LVNlY3Vy
aXR5LVBvbGljeS5cbiIpKTsKLSAgICByZXBvcnRWaW9sYXRpb24oY29uc29sZU1lc3NhZ2UpOwor
ICAgIHJlcG9ydFZpb2xhdGlvbihtX3NjcmlwdFNyYy0+dGV4dCgpLCBjb25zb2xlTWVzc2FnZSk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC01MjgsNyArNTY3LDcgQEAgYm9vbCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OmFsbG93RXZhbCgpIGNvbnN0CiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoIlJlZnVz
ZWQgdG8gZXZhbHVhdGUgc2NyaXB0IGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3ku
XG4iKSk7Ci0gICAgcmVwb3J0VmlvbGF0aW9uKGNvbnNvbGVNZXNzYWdlKTsKKyAgICByZXBvcnRW
aW9sYXRpb24obV9zY3JpcHRTcmMtPnRleHQoKSwgY29uc29sZU1lc3NhZ2UpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIApAQCAtNTM3LDcgKzU3Niw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjphbGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAogICAgIGlm
ICghbV9zY3JpcHRTcmMgfHwgbV9zY3JpcHRTcmMtPmFsbG93cyh1cmwpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIHJlcG9ydFZpb2xhdGlvbihtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxv
YWQgc2NyaXB0IGZyb20gJyIsIHVybC5zdHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250ZW50LVNl
Y3VyaXR5LVBvbGljeS5cbiIpKTsKKyAgICByZXBvcnRWaW9sYXRpb24obV9zY3JpcHRTcmMtPnRl
eHQoKSwgbWFrZVN0cmluZygiUmVmdXNlZCB0byBsb2FkIHNjcmlwdCBmcm9tICciLCB1cmwuc3Ry
aW5nKCksICInIGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCkBAIC01NDYsNyArNTg1LDcgQEAgYm9vbCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OmFsbG93T2JqZWN0RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiAg
ICAgaWYgKCFtX29iamVjdFNyYyB8fCBtX29iamVjdFNyYy0+YWxsb3dzKHVybCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgcmVwb3J0VmlvbGF0aW9uKG1ha2VTdHJpbmcoIlJlZnVzZWQg
dG8gbG9hZCBvYmplY3QgZnJvbSAnIiwgdXJsLnN0cmluZygpLCAiJyBiZWNhdXNlIG9mIENvbnRl
bnQtU2VjdXJpdHktUG9saWN5LlxuIikpOworICAgIHJlcG9ydFZpb2xhdGlvbihtX29iamVjdFNy
Yy0+dGV4dCgpLCBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgb2JqZWN0IGZyb20gJyIsIHVy
bC5zdHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTU1NSw3ICs1OTQsNyBAQCBib29sIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwp
IGNvbnN0CiAgICAgaWYgKCFtX2ZyYW1lU3JjIHx8IG1fZnJhbWVTcmMtPmFsbG93cyh1cmwpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJlcG9ydFZpb2xhdGlvbihtYWtlU3RyaW5nKCJS
ZWZ1c2VkIHRvIGxvYWQgZnJhbWUgZnJvbSAnIiwgdXJsLnN0cmluZygpLCAiJyBiZWNhdXNlIG9m
IENvbnRlbnQtU2VjdXJpdHktUG9saWN5LlxuIikpOworICAgIHJlcG9ydFZpb2xhdGlvbihtX2Zy
YW1lU3JjLT50ZXh0KCksIG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gbG9hZCBmcmFtZSBmcm9tICci
LCB1cmwuc3RyaW5nKCksICInIGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuXG4i
KSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC01NjQsNyArNjAzLDcgQEAgYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCkg
Y29uc3QKICAgICBpZiAoIW1faW1nU3JjIHx8IG1faW1nU3JjLT5hbGxvd3ModXJsKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXBvcnRWaW9sYXRpb24obWFrZVN0cmluZygiUmVmdXNl
ZCB0byBsb2FkIGltYWdlIGZyb20gJyIsIHVybC5zdHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250
ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKKyAgICByZXBvcnRWaW9sYXRpb24obV9pbWdTcmMt
PnRleHQoKSwgbWFrZVN0cmluZygiUmVmdXNlZCB0byBsb2FkIGltYWdlIGZyb20gJyIsIHVybC5z
dHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTU3Myw3ICs2MTIsNyBAQCBib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dTdHlsZUZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAog
ICAgIGlmICghbV9zdHlsZVNyYyB8fCBtX3N0eWxlU3JjLT5hbGxvd3ModXJsKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICByZXBvcnRWaW9sYXRpb24obWFrZVN0cmluZygiUmVmdXNlZCB0
byBsb2FkIHN0eWxlIGZyb20gJyIsIHVybC5zdHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250ZW50
LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKKyAgICByZXBvcnRWaW9sYXRpb24obV9zdHlsZVNyYy0+
dGV4dCgpLCBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgc3R5bGUgZnJvbSAnIiwgdXJsLnN0
cmluZygpLCAiJyBiZWNhdXNlIG9mIENvbnRlbnQtU2VjdXJpdHktUG9saWN5LlxuIikpOwogICAg
IHJldHVybiBmYWxzZTsKIH0KIApAQCAtNTgyLDcgKzYyMSw3IEBAIGJvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjphbGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKICAg
ICBpZiAoIW1fZm9udFNyYyB8fCBtX2ZvbnRTcmMtPmFsbG93cyh1cmwpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIHJlcG9ydFZpb2xhdGlvbihtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxv
YWQgZm9udCBmcm9tICciLCB1cmwuc3RyaW5nKCksICInIGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1
cml0eS1Qb2xpY3kuXG4iKSk7CisgICAgcmVwb3J0VmlvbGF0aW9uKG1fZm9udFNyYy0+dGV4dCgp
LCBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgZm9udCBmcm9tICciLCB1cmwuc3RyaW5nKCks
ICInIGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCkBAIC01OTEsNyArNjMwLDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmFsbG93TWVkaWFGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKICAgICBpZiAo
IW1fbWVkaWFTcmMgfHwgbV9tZWRpYVNyYy0+YWxsb3dzKHVybCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgcmVwb3J0VmlvbGF0aW9uKG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gbG9hZCBt
ZWRpYSBmcm9tICciLCB1cmwuc3RyaW5nKCksICInIGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1cml0
eS1Qb2xpY3kuXG4iKSk7CisgICAgcmVwb3J0VmlvbGF0aW9uKG1fbWVkaWFTcmMtPnRleHQoKSwg
bWFrZVN0cmluZygiUmVmdXNlZCB0byBsb2FkIG1lZGlhIGZyb20gJyIsIHVybC5zdHJpbmcoKSwg
IicgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKQEAgLTY2Niw2ICs3MDUsMjQgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OnBhcnNlRGlyZWN0aXZlKGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCwK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnBhcnNl
UmVwb3J0VVJJKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgY29uc3QgVUNoYXIqIHBvc2l0
aW9uID0gdmFsdWUuY2hhcmFjdGVycygpOworICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwb3NpdGlv
biArIHZhbHVlLmxlbmd0aCgpOworCisgICAgd2hpbGUgKHBvc2l0aW9uIDwgZW5kKSB7CisgICAg
ICAgIHNraXBXaGlsZTxpc0FTQ0lJU3BhY2U+KHBvc2l0aW9uLCBlbmQpOworCisgICAgICAgIGNv
bnN0IFVDaGFyKiB1cmxCZWdpbiA9IHBvc2l0aW9uOworICAgICAgICBza2lwV2hpbGU8aXNOb3RB
U0NJSVNwYWNlPihwb3NpdGlvbiwgZW5kKTsKKworICAgICAgICBpZiAodXJsQmVnaW4gPCBwb3Np
dGlvbikgeworICAgICAgICAgICAgU3RyaW5nIHVybCA9IFN0cmluZyh1cmxCZWdpbiwgcG9zaXRp
b24gLSB1cmxCZWdpbik7CisgICAgICAgICAgICBtX3JlcG9ydFVSTHMuYXBwZW5kKG1fZG9jdW1l
bnQtPmNvbXBsZXRlVVJMKHVybCkpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6YWRkRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc2NyaXB0
U3JjLCAoInNjcmlwdC1zcmMiKSk7CkBAIC02NzUsMjQgKzczMiwyNyBAQCB2b2lkIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6YWRkRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZQogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzdHlsZVNyYywgKCJz
dHlsZS1zcmMiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZvbnRTcmMsICgi
Zm9udC1zcmMiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG1lZGlhU3JjLCAo
Im1lZGlhLXNyYyIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcmVwb3J0VVJJ
LCAoInJlcG9ydC11cmkiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG9wdGlv
bnMsICgib3B0aW9ucyIpKTsKIAogICAgIEFTU0VSVCghbmFtZS5pc0VtcHR5KCkpOwogCiAgICAg
aWYgKCFtX3NjcmlwdFNyYyAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCBzY3JpcHRTcmMpKQot
ICAgICAgICBtX3NjcmlwdFNyYyA9IGFkb3B0UHRyKG5ldyBDU1BEaXJlY3RpdmUodmFsdWUsIG1f
ZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICAgICAgbV9zY3JpcHRTcmMgPSBhZG9w
dFB0cihuZXcgQ1NQRGlyZWN0aXZlKG5hbWUsIHZhbHVlLCBtX2RvY3VtZW50LT5zZWN1cml0eU9y
aWdpbigpKSk7CiAgICAgZWxzZSBpZiAoIW1fb2JqZWN0U3JjICYmIGVxdWFsSWdub3JpbmdDYXNl
KG5hbWUsIG9iamVjdFNyYykpCi0gICAgICAgIG1fb2JqZWN0U3JjID0gYWRvcHRQdHIobmV3IENT
UERpcmVjdGl2ZSh2YWx1ZSwgbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAg
ICBtX29iamVjdFNyYyA9IGFkb3B0UHRyKG5ldyBDU1BEaXJlY3RpdmUobmFtZSwgdmFsdWUsIG1f
ZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKTsKICAgICBlbHNlIGlmICghbV9mcmFtZVNyYyAm
JiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCBmcmFtZVNyYykpCi0gICAgICAgIG1fZnJhbWVTcmMg
PSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0aXZlKHZhbHVlLCBtX2RvY3VtZW50LT5zZWN1cml0eU9y
aWdpbigpKSk7CisgICAgICAgIG1fZnJhbWVTcmMgPSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0aXZl
KG5hbWUsIHZhbHVlLCBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7CiAgICAgZWxzZSBp
ZiAoIW1faW1nU3JjICYmIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsIGltZ1NyYykpCi0gICAgICAg
IG1faW1nU3JjID0gYWRvcHRQdHIobmV3IENTUERpcmVjdGl2ZSh2YWx1ZSwgbV9kb2N1bWVudC0+
c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICBtX2ltZ1NyYyA9IGFkb3B0UHRyKG5ldyBDU1BE
aXJlY3RpdmUobmFtZSwgdmFsdWUsIG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKTsKICAg
ICBlbHNlIGlmICghbV9zdHlsZVNyYyAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCBzdHlsZVNy
YykpCi0gICAgICAgIG1fc3R5bGVTcmMgPSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0aXZlKHZhbHVl
LCBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgICAgIG1fc3R5bGVTcmMgPSBh
ZG9wdFB0cihuZXcgQ1NQRGlyZWN0aXZlKG5hbWUsIHZhbHVlLCBtX2RvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpKSk7CiAgICAgZWxzZSBpZiAoIW1fZm9udFNyYyAmJiBlcXVhbElnbm9yaW5nQ2Fz
ZShuYW1lLCBmb250U3JjKSkKLSAgICAgICAgbV9mb250U3JjID0gYWRvcHRQdHIobmV3IENTUERp
cmVjdGl2ZSh2YWx1ZSwgbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICBt
X2ZvbnRTcmMgPSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0aXZlKG5hbWUsIHZhbHVlLCBtX2RvY3Vt
ZW50LT5zZWN1cml0eU9yaWdpbigpKSk7CiAgICAgZWxzZSBpZiAoIW1fbWVkaWFTcmMgJiYgZXF1
YWxJZ25vcmluZ0Nhc2UobmFtZSwgbWVkaWFTcmMpKQotICAgICAgICBtX21lZGlhU3JjID0gYWRv
cHRQdHIobmV3IENTUERpcmVjdGl2ZSh2YWx1ZSwgbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4o
KSkpOworICAgICAgICBtX21lZGlhU3JjID0gYWRvcHRQdHIobmV3IENTUERpcmVjdGl2ZShuYW1l
LCB2YWx1ZSwgbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIGVsc2UgaWYgKG1f
cmVwb3J0VVJMcy5pc0VtcHR5KCkgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgcmVwb3J0VVJJ
KSkKKyAgICAgICAgcGFyc2VSZXBvcnRVUkkodmFsdWUpOwogICAgIGVsc2UgaWYgKCFtX29wdGlv
bnMgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgb3B0aW9ucykpCiAgICAgICAgIG1fb3B0aW9u
cyA9IGFkb3B0UHRyKG5ldyBDU1BPcHRpb25zKHZhbHVlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAppbmRleCA1MjIzZTgyY2QxNzMzYTc3MmMzZWZh
Nzc0OWQ0YWNiMWU5NzNiYWVhLi45ZGY0NjA2MWQzZjdmYTIwZDVkZGVkZjVhZDNmM2U0YTczYmZk
OTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKQEAg
LTY2LDEyICs2NiwxNCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcm
KTsKICAgICBib29sIHBhcnNlRGlyZWN0aXZlKGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNo
YXIqIGVuZCwgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKTsKKyAgICB2b2lkIHBhcnNlUmVw
b3J0VVJJKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgYWRkRGlyZWN0aXZlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKLSAgICB2b2lkIHJlcG9ydFZpb2xhdGlv
bihjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlKSBjb25zdDsKKyAgICB2b2lkIHJlcG9ydFZp
b2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYgY29uc29s
ZU1lc3NhZ2UpIGNvbnN0OwogCiAgICAgYm9vbCBtX2hhdmVQb2xpY3k7CiAgICAgRG9jdW1lbnQq
IG1fZG9jdW1lbnQ7CisKICAgICBPd25QdHI8Q1NQRGlyZWN0aXZlPiBtX3NjcmlwdFNyYzsKICAg
ICBPd25QdHI8Q1NQRGlyZWN0aXZlPiBtX29iamVjdFNyYzsKICAgICBPd25QdHI8Q1NQRGlyZWN0
aXZlPiBtX2ZyYW1lU3JjOwpAQCAtODAsNiArODIsOCBAQCBwcml2YXRlOgogICAgIE93blB0cjxD
U1BEaXJlY3RpdmU+IG1fZm9udFNyYzsKICAgICBPd25QdHI8Q1NQRGlyZWN0aXZlPiBtX21lZGlh
U3JjOwogICAgIE93blB0cjxDU1BPcHRpb25zPiBtX29wdGlvbnM7CisKKyAgICBWZWN0b3I8S1VS
TD4gbV9yZXBvcnRVUkxzOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90446</attachid>
            <date>2011-04-20 16:48:27 -0700</date>
            <delta_ts>2011-04-20 17:16:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58639-20110420164826.patch</filename>
            <type>text/plain</type>
            <size>25156</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQzNDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4OTgwY2QyN2JkYTI3YjZlYzc4Yjg1
MmZiYTVhMzZiNzMwMGY2ODJiLi42NzM2MTczYmI2YzcwMzI0ZjVmYzg4MGJlYzFiNWJiNmJhMDE5
OWQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIwMTEtMDQtMjAgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDU1AgcmVwb3J0LXVyaSBpcyBtaXNzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODYzOQorCisgICAgICAgIFRlc3QgdGhhdCByZXBv
cnQtdXJpIHNlbmRzIGEgcmVwb3J0LiAgVGVzdGluZyBhcHByb2FjaCBzdG9sZW4gZnJvbSB0aGUK
KyAgICAgICAgcGluZyB0ZXN0cy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXBvcnQtdXJp
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3Jlc291cmNlcy9lY2hvLXJlcG9ydC5waHA6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy9nby10by1l
Y2hvLXJlcG9ydC5qczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL3NhdmUtcmVwb3J0LnBocDogQWRkZWQuCisKKzIw
MTEtMDQtMjAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KIAogICAgICAgICBDU1AgZnJhbWUtc3JjIGlzIG1pc3NpbmcK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3BvbGljeS1kb2VzLW5vdC1hZmZlY3QtY2hpbGQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcG9saWN5
LWRvZXMtbm90LWFmZmVjdC1jaGlsZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM3MDMyMTE4
ODlhODlmZTkwODJiOTk4YTRkY2VlNzNkYTc3YWNkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BvbGljeS1k
b2VzLW5vdC1hZmZlY3QtY2hpbGQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorQUxFUlQ6
IFBBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvcG9saWN5LWRvZXMtbm90LWFmZmVjdC1jaGlsZC5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcG9saWN5
LWRvZXMtbm90LWFmZmVjdC1jaGlsZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExMjg5MDAyM2Q0MzE4NjE5
OWNjZTUyYjQ0Y2Q1YzE1YWYzODA2Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wb2xpY3ktZG9lcy1ub3Qt
YWZmZWN0LWNoaWxkLmh0bWwKQEAgLTAsMCArMSwzIEBACis8bWV0YSBodHRwLWVxdWl2PSJYLVdl
YktpdC1DU1AiIGNvbnRlbnQ9InNjcmlwdC1zcmMgJ3NlbGYnIj4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvZHVtcC1hcy10ZXh0LmpzIj48L3NjcmlwdD4KKzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMv
YWxlcnQtcGFzcy5odG1sIj48L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmktZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvcmVwb3J0LXVyaS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBlMTY1ODhmZjQ5YjYwMjM4
Y2YxZmU2ODg5ZTRjMjA5ZWY1YTcxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmktZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQg
dG8gZXhlY3V0ZSBpbmxpbmUgc2NyaXB0IGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xp
Y3kuCisKK0NTUCByZXBvcnQgcmVjZWl2ZWQ6CitDT05URU5UX1RZUEU6IGFwcGxpY2F0aW9uL3gt
d3d3LWZvcm0tdXJsZW5jb2RlZAorSFRUUF9SRUZFUkVSOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmkuaHRtbAorUkVRVUVTVF9N
RVRIT0Q6IFBPU1QKKz09PSBQT1NUIERBVEEgPT09Citkb2N1bWVudC11cmw6IGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVwb3J0LXVyaS5odG1s
Cit2aW9sYXRlZC1kaXJlY3RpdmU6IHNjcmlwdC1zcmMgXCdzZWxmXCcKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3JlcG9y
dC11cmktZnJvbS1jaGlsZC1mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXBvcnQtdXJpLWZyb20tY2hpbGQt
ZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmZDhjMWViZWQ0YmM5MjY1NjdlZjkxMDgz
ZTg1ODBjNWE4ODk2ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXBvcnQtdXJpLWZyb20tY2hpbGQtZnJh
bWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAx
OiBSZWZ1c2VkIHRvIGV4ZWN1dGUgaW5saW5lIHNjcmlwdCBiZWNhdXNlIG9mIENvbnRlbnQtU2Vj
dXJpdHktUG9saWN5LgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwh
LS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorQ1NQIHJlcG9ydCByZWNlaXZlZDoKK0NPTlRFTlRf
VFlQRTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkCitIVFRQX1JFRkVSRVI6IGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3Vy
Y2VzL2dlbmVyYXRlLWNzcC1yZXBvcnQuaHRtbAorUkVRVUVTVF9NRVRIT0Q6IFBPU1QKKz09PSBQ
T1NUIERBVEEgPT09Citkb2N1bWVudC11cmw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL2dlbmVyYXRlLWNzcC1yZXBvcnQuaHRt
bAordmlvbGF0ZWQtZGlyZWN0aXZlOiBzY3JpcHQtc3JjIFwnc2VsZlwnCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXBv
cnQtdXJpLWZyb20tY2hpbGQtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmktZnJvbS1jaGlsZC1mcmFtZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUxZWRkMjNiYjI4NTQ4MDNhNDBkNzA3NGFhZmYxOTg3Nzk2MDFkNzkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9yZXBvcnQtdXJpLWZyb20tY2hpbGQtZnJhbWUuaHRtbApAQCAtMCww
ICsxLDUgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworPC9zY3JpcHQ+
Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL2dlbmVyYXRlLWNzcC1yZXBvcnQuaHRtbCI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS9yZXBvcnQtdXJpLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXBvcnQtdXJpLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmFlMDE2NWY0YWZhM2JjODk5MDAyYTgxZDhmY2M0NWNkMjZiNzY4OAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L3JlcG9ydC11cmkuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxtZXRhIGh0dHAtZXF1aXY9IlgtV2Vi
S2l0LUNTUCIgY29udGVudD0ic2NyaXB0LXNyYyAnc2VsZic7IHJlcG9ydC11cmkgcmVzb3VyY2Vz
L3NhdmUtcmVwb3J0LnBocCI+Cis8c2NyaXB0PgorLy8gVGhpcyBzY3JpcHQgYmxvY2sgd2lsbCB0
cmlnZ2VyIGEgdmlvbGF0aW9uIHJlcG9ydC4KK2FsZXJ0KCdGQUlMJyk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvZ28tdG8tZWNoby1yZXBvcnQuanMiPjwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvcmVzb3VyY2VzL2VjaG8tcmVwb3J0LnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy9lY2hvLXJlcG9ydC5waHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjdlNjk4NWNiZmY1NTFlZTkzY2RmMjkzOTdhNDIzYzc4MjcyNmRmMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L3Jlc291cmNlcy9lY2hvLXJlcG9ydC5waHAKQEAgLTAsMCArMSwyMiBAQAor
PD9waHAKK3doaWxlICghZmlsZV9leGlzdHMoImNzcC1yZXBvcnQudHh0IikpIHsKKyAgICB1c2xl
ZXAoMTAwMDApOworICAgIC8vIGZpbGVfZXhpc3RzKCkgY2FjaGVzIHJlc3VsdHMsIHdlIHdhbnQg
dG8gaW52YWxpZGF0ZSB0aGUgY2FjaGUuCisgICAgY2xlYXJzdGF0Y2FjaGUoKTsKK30KKworZWNo
byAiPGh0bWw+PGJvZHk+XG4iOworZWNobyAiQ1NQIHJlcG9ydCByZWNlaXZlZDoiOworJHJlcG9y
dEZpbGUgPSBmb3BlbigiY3NwLXJlcG9ydC50eHQiLCAncicpOword2hpbGUgKCRsaW5lID0gZmdl
dHMoJHJlcG9ydEZpbGUpKSB7CisgICAgZWNobyAiPGJyPiI7CisgICAgZWNobyB0cmltKCRsaW5l
KTsKK30KK2ZjbG9zZSgkcmVwb3J0RmlsZSk7Cit1bmxpbmsoImNzcC1yZXBvcnQudHh0Iik7Citl
Y2hvICI8c2NyaXB0PiI7CitlY2hvICJpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSI7
CitlY2hvICIgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyI7CitlY2hvICI8
L3NjcmlwdD4iOworZWNobyAiPC9ib2R5PjwvaHRtbD4iOworPz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNl
cy9nZW5lcmF0ZS1jc3AtcmVwb3J0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvZ2VuZXJhdGUtY3NwLXJlcG9ydC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjUzNWNhNDkyYmM1ZjE4ZTNlOTg2YmJlY2ZiMmY1MjhhMmE5OTFiMTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvZ2VuZXJhdGUtY3NwLXJlcG9ydC5odG1sCkBAIC0w
LDAgKzEsNiBAQAorPG1ldGEgaHR0cC1lcXVpdj0iWC1XZWJLaXQtQ1NQIiBjb250ZW50PSJzY3Jp
cHQtc3JjICdzZWxmJzsgcmVwb3J0LXVyaSBzYXZlLXJlcG9ydC5waHAiPgorPHNjcmlwdD4KKy8v
IFRoaXMgc2NyaXB0IGJsb2NrIHdpbGwgdHJpZ2dlciBhIHZpb2xhdGlvbiByZXBvcnQuCithbGVy
dCgnRkFJTCcpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZ28tdG8tZWNoby1yZXBvcnQuanMi
Pjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL2dvLXRvLWVjaG8tcmVwb3J0LmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3Vy
Y2VzL2dvLXRvLWVjaG8tcmVwb3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxNmRhNGY4NzE0YWQyZTk2MDNm
NDQxZDU4YWEwYjllNWUyMTAyYjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvZ28tdG8tZWNo
by1yZXBvcnQuanMKQEAgLTAsMCArMSw4IEBACitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1
bmN0aW9uICgpIHsKKyAgICB3aW5kb3cubG9jYXRpb24gPSAiL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9yZXNvdXJjZXMvZWNoby1yZXBvcnQucGhwIjsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291
cmNlcy9zYXZlLXJlcG9ydC5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvc2F2ZS1yZXBvcnQucGhwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg3MmNlOTU0MTUzNTg1MTk5OWU4YTA4ZjM4MjBmOTA0MzM4YmVjMTQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9yZXNvdXJjZXMvc2F2ZS1yZXBvcnQucGhwCkBAIC0wLDAgKzEsMTUgQEAKKzw/cGhwCiskcmVw
b3J0RmlsZSA9IGZvcGVuKCJjc3AtcmVwb3J0LnR4dC50bXAiLCAndycpOworJGh0dHBIZWFkZXJz
ID0gJF9TRVJWRVI7Citrc29ydCgkaHR0cEhlYWRlcnMsIFNPUlRfU1RSSU5HKTsKK2ZvcmVhY2gg
KCRodHRwSGVhZGVycyBhcyAkbmFtZSA9PiAkdmFsdWUpIHsKKyAgICBpZiAoJG5hbWUgPT09ICJD
T05URU5UX1RZUEUiIHx8ICRuYW1lID09PSAiSFRUUF9SRUZFUkVSIiB8fCAkbmFtZSA9PT0gIlJF
UVVFU1RfTUVUSE9EIikKKyAgICAgICAgZndyaXRlKCRyZXBvcnRGaWxlLCAiJG5hbWU6ICR2YWx1
ZVxuIik7Cit9Citmd3JpdGUoJHJlcG9ydEZpbGUsICI9PT0gUE9TVCBEQVRBID09PVxuIik7Citm
b3JlYWNoICgkX1BPU1QgYXMgJG5hbWUgPT4gJHZhbHVlKSB7CisgICAgZndyaXRlKCRyZXBvcnRG
aWxlLCAiJG5hbWU6ICR2YWx1ZVxuIik7Cit9CitmY2xvc2UoJHJlcG9ydEZpbGUpOworcmVuYW1l
KCJjc3AtcmVwb3J0LnR4dC50bXAiLCAiY3NwLXJlcG9ydC50eHQiKTsKKz8+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggOTA1NDllYTQ5NWIyZWZhNTkwYzk2M2MzMTg4MTc0Mjk3YzM3ZmNlNS4uNzMyYzk5N2UzMDRh
MzNmMjZlMGJjNWM1ZWYwNTg1ZGQ3YzNhMzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1IEBA
CiAyMDExLTA0LTIwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ1NQIHJlcG9ydC11cmkgaXMg
bWlzc2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTg2MzkKKworICAgICAgICBPdXIgaW1wbGVtZW50YXRpb24gb2YgcmVwb3J0LXVyaSBkaWZmZXJz
IGZyb20gd2hhdCdzIGN1cnJlbnRseSBpbiB0aGUKKyAgICAgICAgc3BlYy4gIEkgc2VudCB0aGUg
d29ya2luZyBncm91cCBhbiBlbWFpbCBleHBsYWluaW5nIHdoeS4gIEdlbmVyYWxseSwKKyAgICAg
ICAgd2UncmUgdXNpbmcgbm9ybWFsIGZvcm0gZW5jb2RpbmcgaW5zdGVhZCBvZiBKU09OIGFuZCB3
ZSdyZSBzZW5kaW5nIGxlc3MKKyAgICAgICAgaW5mb3JtYXRpb24gdG8gYSB3aWRlciBzZXQgb2Yg
VVJMcy4gIFNwZWNpZmljYWxseSwgd2Ugc2VuZCB0aGUgY3VycmVudAorICAgICAgICBkb2N1bWVu
dCdzIFVSTCBhcyB3ZWxsIGFzIHRoZSBkaXJlY3RpdmUgdGhhdCB3YXMgdmlvbGF0ZWQuICBUaGUg
c3BlYworICAgICAgICAoY3VycmVudGx5KSB0ZWxscyB1cyB0byBzZW5kIHRoZSByYXcgSFRUUCBo
ZWFkZXJzIGFuZCB0aGUgVVJMIHRoYXQKKyAgICAgICAgY2F1c2VkIHRoZSB2aW9sYXRpb24sIGJ1
dCBib3RoIG9mIHRoZXNlIHBpZWNlcyBvZiBkYXRhIGNvdWxkIGNvbnRhaW4KKyAgICAgICAgaW5m
b3JtYXRpb24gdGhhdCdzIHNlbnNpdGl2ZSwgc28gd2Ugb21pdCB0aGVtIGZvciBub3cuCisKKyAg
ICAgICAgVGVzdDogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVw
b3J0LXVyaS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvUGluZ0xvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQaW5nTG9hZGVyOjpyZXBvcnRDb250ZW50U2VjdXJpdHlQb2xpY3lWaW9sYXRp
b24pOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmg6CisgICAgICAgICogcGFnZS9Db250
ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlOjpD
U1BEaXJlY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlOjp0ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dKYXZhU2NyaXB0
VVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5s
aW5lRXZlbnRIYW5kbGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmFsbG93SW5saW5lU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeTo6YWxsb3dFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsb3dTY3JpcHRGcm9tU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeTo6YWxsb3dPYmplY3RGcm9tU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW1hZ2VGcm9tU291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTdHlsZUZy
b21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxv
d0ZvbnRGcm9tU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eTo6YWxsb3dNZWRpYUZyb21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3Vy
aXR5UG9saWN5OjpwYXJzZVJlcG9ydFVSSSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmFkZERpcmVjdGl2ZSk6CisgICAgICAgICogcGFnZS9Db250ZW50U2VjdXJp
dHlQb2xpY3kuaDoKKworMjAxMS0wNC0yMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgorCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgogCiAgICAgICAgIENTUCBmcmFt
ZS1zcmMgaXMgbWlzc2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4IDI4
MDYyMGFlMDMxNWQ0MmRiYjY5YmNhZGFkYWMxM2FmYjgyZGI5YWMuLjAwYTAwNWU4NTRhODYxOTI4
NTk0MWUyMmRhYzNkZTdlOTM5YjYzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9QaW5nTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5j
cHAKQEAgLTkxLDYgKzkxLDI0IEBAIHZvaWQgUGluZ0xvYWRlcjo6c2VuZFBpbmcoRnJhbWUqIGZy
YW1lLCBjb25zdCBLVVJMJiBwaW5nVVJMLCBjb25zdCBLVVJMJiBkZXN0aW5hCiAgICAgVU5VU0VE
X1BBUkFNKGxlYWtlZFBpbmdMb2FkZXIpOwogfQogCit2b2lkIFBpbmdMb2FkZXI6OnJlcG9ydENv
bnRlbnRTZWN1cml0eVBvbGljeVZpb2xhdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHJl
cG9ydFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcmVwb3J0KQoreworICAgIFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0KHJlcG9ydFVSTCk7CisgICAgcmVxdWVzdC5zZXRUYXJnZXRUeXBlKFJlc291
cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJjZSk7CisgICAgcmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJQT1NUIik7CisgICAgcmVxdWVzdC5zZXRIVFRQQ29udGVudFR5cGUoImFwcGxpY2F0aW9u
L3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpOworICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkocmVwb3J0
KTsKKyAgICBmcmFtZS0+bG9hZGVyKCktPmFkZEV4dHJhRmllbGRzVG9TdWJyZXNvdXJjZVJlcXVl
c3QocmVxdWVzdCk7CisKKyAgICBpZiAoIVNlY3VyaXR5T3JpZ2luOjpzaG91bGRIaWRlUmVmZXJy
ZXIocmVwb3J0VVJMLCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSkpCisgICAg
ICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZl
cnJlcigpKTsKKyAgICBPd25QdHI8UGluZ0xvYWRlcj4gcGluZ0xvYWRlciA9IGFkb3B0UHRyKG5l
dyBQaW5nTG9hZGVyKGZyYW1lLCByZXF1ZXN0KSk7CisKKyAgICAvLyBMZWFrIHRoZSBwaW5nIGxv
YWRlciwgc2luY2UgaXQgd2lsbCBraWxsIGl0c2VsZiBhcyBzb29uIGFzIGl0IHJlY2VpdmVzIGEg
cmVzcG9uc2UuCisgICAgUGluZ0xvYWRlciogbGVha2VkUGluZ0xvYWRlciA9IHBpbmdMb2FkZXIu
bGVha1B0cigpOworICAgIFVOVVNFRF9QQVJBTShsZWFrZWRQaW5nTG9hZGVyKTsKK30KKwogUGlu
Z0xvYWRlcjo6UGluZ0xvYWRlcihGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKICAgICA6IG1fdGltZW91dCh0aGlzLCAmUGluZ0xvYWRlcjo6dGltZW91dCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oCmluZGV4IDI1MmMwOWI3MDg3OWUzNWY4OGQ5NTc5
OTM5MTM0YWM1OGE3MWU1M2EuLjQxM2ViNjFiYjM4Yzk1YmZjNGY0ZTc1NzdhYTVjYTNlZDQyOWE0
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2lm
bmRlZiBQaW5nTG9hZGVyX2gKICNkZWZpbmUgUGluZ0xvYWRlcl9oCiAKKyNpbmNsdWRlICJGb3Jt
RGF0YS5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTU1LDYgKzU2LDcgQEAgY2xh
c3MgUGluZ0xvYWRlciA6IHByaXZhdGUgUmVzb3VyY2VIYW5kbGVDbGllbnQgewogcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGxvYWRJbWFnZShGcmFtZSosIGNvbnN0IEtVUkwmIHVybCk7CiAgICAg
c3RhdGljIHZvaWQgc2VuZFBpbmcoRnJhbWUqLCBjb25zdCBLVVJMJiBwaW5nVVJMLCBjb25zdCBL
VVJMJiBkZXN0aW5hdGlvblVSTCk7CisgICAgc3RhdGljIHZvaWQgcmVwb3J0Q29udGVudFNlY3Vy
aXR5UG9saWN5VmlvbGF0aW9uKEZyYW1lKiwgY29uc3QgS1VSTCYgcmVwb3J0VVJMLCBQYXNzUmVm
UHRyPEZvcm1EYXRhPiByZXBvcnQpOwogCiAgICAgflBpbmdMb2FkZXIoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IGZiM2M2ZTE0M2Rk
NWRjMzI3MTZjNjg1YjcyYjYwOTA5ZDE1NjljNmIuLmU2NTA5YTFjZTBiZTFjMGUyNzBlNDliNzBj
N2ZmNGNmZGNiN2MyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5jcHAKQEAgLTI4LDkgKzI4LDEzIEBACiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZvcm1EYXRhLmgiCisjaW5jbHVkZSAi
Rm9ybURhdGFMaXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgorI2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcwLDYgKzc0LDExIEBA
IGJvb2wgaXNTY2hlbWVDb250aW51YXRpb25DaGFyYWN0ZXIoVUNoYXIgYykKICAgICByZXR1cm4g
aXNBU0NJSUFscGhhbnVtZXJpYyhjKSB8fCBjID09ICcrJyB8fCBjID09ICctJyB8fCBjID09ICcu
JzsKIH0KIAorYm9vbCBpc05vdEFTQ0lJU3BhY2UoVUNoYXIgYykKK3sKKyAgICByZXR1cm4gIWlz
QVNDSUlTcGFjZShjKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKIAogc3RhdGljIGJvb2wgc2tpcEV4
YWN0bHkoY29uc3QgVUNoYXIqJiBwb3NpdGlvbiwgY29uc3QgVUNoYXIqIGVuZCwgVUNoYXIgZGVs
aW1pdGVyKQpAQCAtMzk4LDggKzQwNyw5IEBAIHZvaWQgQ1NQU291cmNlTGlzdDo6YWRkU291cmNl
U2VsZigpCiAKIGNsYXNzIENTUERpcmVjdGl2ZSB7CiBwdWJsaWM6Ci0gICAgQ1NQRGlyZWN0aXZl
KGNvbnN0IFN0cmluZyYgdmFsdWUsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCisgICAgQ1NQRGly
ZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbikKICAgICAgICAgOiBtX3NvdXJjZUxpc3Qob3JpZ2luKQorICAgICAgICAs
IG1fdGV4dChtYWtlU3RyaW5nKG5hbWUsICIgIiwgdmFsdWUpKQogICAgIHsKICAgICAgICAgbV9z
b3VyY2VMaXN0LnBhcnNlKHZhbHVlKTsKICAgICB9CkBAIC00MDksOCArNDE5LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG1fc291cmNlTGlzdC5tYXRjaGVzKHVybCk7CiAgICAgfQogCisg
ICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgeyByZXR1cm4gbV90ZXh0OyB9CisKIHByaXZhdGU6CiAg
ICAgQ1NQU291cmNlTGlzdCBtX3NvdXJjZUxpc3Q7CisgICAgU3RyaW5nIG1fdGV4dDsKIH07CiAK
IGNsYXNzIENTUE9wdGlvbnMgewpAQCAtNDgxLDEwICs0OTQsMzYgQEAgdm9pZCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCiAgICAg
bV9oYXZlUG9saWN5ID0gdHJ1ZTsKIH0KIAotdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJl
cG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlKSBjb25zdAordm9pZCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVj
dGl2ZVRleHQsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UpIGNvbnN0CiB7Ci0gICAgaWYg
KEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5kb21X
aW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2Fn
ZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSwgMSwgU3RyaW5nKCkpOwor
ICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFk
ZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsIGNvbnNvbGVNZXNzYWdlLCAxLCBTdHJpbmcoKSk7CisKKyAgICBpZiAobV9yZXBvcnRVUkxz
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gV2UgbmVlZCB0byBiZSBjYXJl
ZnVsIGhlcmUgd2hlbiBkZWNpZGluZyB3aGF0IGluZm9ybWF0aW9uIHRvIHNlbmQgdG8gdGhlCisg
ICAgLy8gcmVwb3J0LXVyaS4gQ3VycmVudGx5LCB3ZSBzZW5kIG9ubHkgdGhlIGN1cnJlbnQgZG9j
dW1lbnQncyBVUkwgYW5kIHRoZQorICAgIC8vIGRpcmVjdGl2ZSB0aGF0IHdhcyB2aW9sYXRlZC4g
VGhlIGRvY3VtZW50J3MgVVJMIGlzIHNhZmUgdG8gc2VuZCBiZWNhdXNlCisgICAgLy8gaXQncyB0
aGUgZG9jdW1lbnQgaXRzZWxmIHRoYXQncyByZXF1ZXN0aW5nIHRoYXQgaXQgYmUgc2VudC4gWW91
IGNvdWxkCisgICAgLy8gbWFrZSBhbiBhcmd1bWVudCB0aGF0IHdlIHNob3VsZG4ndCBzZW5kIEhU
VFBTIGRvY3VtZW50IFVSTHMgdG8gSFRUUAorICAgIC8vIHJlcG9ydC11cmlzIChmb3IgdGhlIHNh
bWUgcmVhc29ucyB0aGF0IHdlIHN1cHJlc3MgdGhlIFJlZmVyZXIgaW4gdGhhdAorICAgIC8vIGNh
c2UpLCBidXQgdGhlIFJlZmVyZXIgaXMgc2VudCBpbXBsaWNpdGx5IHdoZXJlYXMgdGhpcyByZXF1
ZXN0IGlzIG9ubHkKKyAgICAvLyBzZW50IGV4cGxpY2l0bHkuIEFzIGZvciB3aGljaCBkaXJlY3Rp
dmUgd2FzIHZpb2xhdGVkLCB0aGF0J3MgcHJldHR5CisgICAgLy8gaGFybWxlc3MgaW5mb3JtYXRp
b24uCisKKyAgICBGb3JtRGF0YUxpc3QgcmVwb3J0TGlzdChVVEY4RW5jb2RpbmcoKSk7CisgICAg
cmVwb3J0TGlzdC5hcHBlbmREYXRhKCJkb2N1bWVudC11cmwiLCBtX2RvY3VtZW50LT51cmwoKSk7
CisgICAgaWYgKCFkaXJlY3RpdmVUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgcmVwb3J0TGlzdC5h
cHBlbmREYXRhKCJ2aW9sYXRlZC1kaXJlY3RpdmUiLCBkaXJlY3RpdmVUZXh0KTsKKworICAgIFJl
ZlB0cjxGb3JtRGF0YT4gcmVwb3J0ID0gRm9ybURhdGE6OmNyZWF0ZShyZXBvcnRMaXN0LCBVVEY4
RW5jb2RpbmcoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcmVwb3J0VVJMcy5z
aXplKCk7ICsraSkKKyAgICAgICAgUGluZ0xvYWRlcjo6cmVwb3J0Q29udGVudFNlY3VyaXR5UG9s
aWN5VmlvbGF0aW9uKGZyYW1lLCBtX3JlcG9ydFVSTHNbaV0sIHJlcG9ydCk7CiB9CiAKIGJvb2wg
Q29udGVudFNlY3VyaXR5UG9saWN5Ojpwcm90ZWN0QWdhaW5zdFhTUygpIGNvbnN0CkBAIC00OTgs
NyArNTM3LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SmF2YVNjcmlwdFVS
THMoKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgSmF2YVNjcmlw
dCBVUkwgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKLSAgICByZXBv
cnRWaW9sYXRpb24oY29uc29sZU1lc3NhZ2UpOworICAgIHJlcG9ydFZpb2xhdGlvbihtX3Njcmlw
dFNyYy0+dGV4dCgpLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBA
IC01MDgsNyArNTQ3LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5l
RXZlbnRIYW5kbGVycygpIGNvbnN0CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoIlJlZnVzZWQgdG8gZXhlY3V0
ZSBpbmxpbmUgZXZlbnQgaGFuZGxlciBiZWNhdXNlIG9mIENvbnRlbnQtU2VjdXJpdHktUG9saWN5
LlxuIikpOwotICAgIHJlcG9ydFZpb2xhdGlvbihjb25zb2xlTWVzc2FnZSk7CisgICAgcmVwb3J0
VmlvbGF0aW9uKG1fc2NyaXB0U3JjLT50ZXh0KCksIGNvbnNvbGVNZXNzYWdlKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKQEAgLTUxOCw3ICs1NTcsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsb3dJbmxpbmVTY3JpcHQoKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJSZWZ1c2Vk
IHRvIGV4ZWN1dGUgaW5saW5lIHNjcmlwdCBiZWNhdXNlIG9mIENvbnRlbnQtU2VjdXJpdHktUG9s
aWN5LlxuIikpOwotICAgIHJlcG9ydFZpb2xhdGlvbihjb25zb2xlTWVzc2FnZSk7CisgICAgcmVw
b3J0VmlvbGF0aW9uKG1fc2NyaXB0U3JjLT50ZXh0KCksIGNvbnNvbGVNZXNzYWdlKTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTUyOCw3ICs1NjcsNyBAQCBib29sIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6YWxsb3dFdmFsKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsICgiUmVmdXNlZCB0byBl
dmFsdWF0ZSBzY3JpcHQgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsK
LSAgICByZXBvcnRWaW9sYXRpb24oY29uc29sZU1lc3NhZ2UpOworICAgIHJlcG9ydFZpb2xhdGlv
bihtX3NjcmlwdFNyYy0+dGV4dCgpLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCkBAIC01MzcsNyArNTc2LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93U2NyaXB0RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiAgICAgaWYgKCFtX3Nj
cmlwdFNyYyB8fCBtX3NjcmlwdFNyYy0+YWxsb3dzKHVybCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgcmVwb3J0VmlvbGF0aW9uKG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gbG9hZCBzY3Jp
cHQgZnJvbSAnIiwgdXJsLnN0cmluZygpLCAiJyBiZWNhdXNlIG9mIENvbnRlbnQtU2VjdXJpdHkt
UG9saWN5LlxuIikpOworICAgIHJlcG9ydFZpb2xhdGlvbihtX3NjcmlwdFNyYy0+dGV4dCgpLCBt
YWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgc2NyaXB0IGZyb20gJyIsIHVybC5zdHJpbmcoKSwg
IicgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKQEAgLTU0Niw3ICs1ODUsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6YWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKICAgICBpZiAo
IW1fb2JqZWN0U3JjIHx8IG1fb2JqZWN0U3JjLT5hbGxvd3ModXJsKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICByZXBvcnRWaW9sYXRpb24obWFrZVN0cmluZygiUmVmdXNlZCB0byBsb2Fk
IG9iamVjdCBmcm9tICciLCB1cmwuc3RyaW5nKCksICInIGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1
cml0eS1Qb2xpY3kuXG4iKSk7CisgICAgcmVwb3J0VmlvbGF0aW9uKG1fb2JqZWN0U3JjLT50ZXh0
KCksIG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gbG9hZCBvYmplY3QgZnJvbSAnIiwgdXJsLnN0cmlu
ZygpLCAiJyBiZWNhdXNlIG9mIENvbnRlbnQtU2VjdXJpdHktUG9saWN5LlxuIikpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApAQCAtNTU1LDcgKzU5NCw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5
UG9saWN5OjphbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QK
ICAgICBpZiAoIW1fZnJhbWVTcmMgfHwgbV9mcmFtZVNyYy0+YWxsb3dzKHVybCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgcmVwb3J0VmlvbGF0aW9uKG1ha2VTdHJpbmcoIlJlZnVzZWQg
dG8gbG9hZCBmcmFtZSBmcm9tICciLCB1cmwuc3RyaW5nKCksICInIGJlY2F1c2Ugb2YgQ29udGVu
dC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7CisgICAgcmVwb3J0VmlvbGF0aW9uKG1fZnJhbWVTcmMt
PnRleHQoKSwgbWFrZVN0cmluZygiUmVmdXNlZCB0byBsb2FkIGZyYW1lIGZyb20gJyIsIHVybC5z
dHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTU2NCw3ICs2MDMsNyBAQCBib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dJbWFnZUZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAog
ICAgIGlmICghbV9pbWdTcmMgfHwgbV9pbWdTcmMtPmFsbG93cyh1cmwpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIHJlcG9ydFZpb2xhdGlvbihtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxv
YWQgaW1hZ2UgZnJvbSAnIiwgdXJsLnN0cmluZygpLCAiJyBiZWNhdXNlIG9mIENvbnRlbnQtU2Vj
dXJpdHktUG9saWN5LlxuIikpOworICAgIHJlcG9ydFZpb2xhdGlvbihtX2ltZ1NyYy0+dGV4dCgp
LCBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgaW1hZ2UgZnJvbSAnIiwgdXJsLnN0cmluZygp
LCAiJyBiZWNhdXNlIG9mIENvbnRlbnQtU2VjdXJpdHktUG9saWN5LlxuIikpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIApAQCAtNTczLDcgKzYxMiw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjphbGxvd1N0eWxlRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiAgICAgaWYg
KCFtX3N0eWxlU3JjIHx8IG1fc3R5bGVTcmMtPmFsbG93cyh1cmwpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIHJlcG9ydFZpb2xhdGlvbihtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQg
c3R5bGUgZnJvbSAnIiwgdXJsLnN0cmluZygpLCAiJyBiZWNhdXNlIG9mIENvbnRlbnQtU2VjdXJp
dHktUG9saWN5LlxuIikpOworICAgIHJlcG9ydFZpb2xhdGlvbihtX3N0eWxlU3JjLT50ZXh0KCks
IG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gbG9hZCBzdHlsZSBmcm9tICciLCB1cmwuc3RyaW5nKCks
ICInIGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCkBAIC01ODIsNyArNjIxLDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAogICAgIGlmICgh
bV9mb250U3JjIHx8IG1fZm9udFNyYy0+YWxsb3dzKHVybCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgcmVwb3J0VmlvbGF0aW9uKG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gbG9hZCBmb250
IGZyb20gJyIsIHVybC5zdHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBv
bGljeS5cbiIpKTsKKyAgICByZXBvcnRWaW9sYXRpb24obV9mb250U3JjLT50ZXh0KCksIG1ha2VT
dHJpbmcoIlJlZnVzZWQgdG8gbG9hZCBmb250IGZyb20gJyIsIHVybC5zdHJpbmcoKSwgIicgYmVj
YXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKQEAgLTU5MSw3ICs2MzAsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxs
b3dNZWRpYUZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAogICAgIGlmICghbV9tZWRp
YVNyYyB8fCBtX21lZGlhU3JjLT5hbGxvd3ModXJsKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICByZXBvcnRWaW9sYXRpb24obWFrZVN0cmluZygiUmVmdXNlZCB0byBsb2FkIG1lZGlhIGZy
b20gJyIsIHVybC5zdHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGlj
eS5cbiIpKTsKKyAgICByZXBvcnRWaW9sYXRpb24obV9tZWRpYVNyYy0+dGV4dCgpLCBtYWtlU3Ry
aW5nKCJSZWZ1c2VkIHRvIGxvYWQgbWVkaWEgZnJvbSAnIiwgdXJsLnN0cmluZygpLCAiJyBiZWNh
dXNlIG9mIENvbnRlbnQtU2VjdXJpdHktUG9saWN5LlxuIikpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KIApAQCAtNjY2LDYgKzcwNSwyNCBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cGFy
c2VEaXJlY3RpdmUoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhciogZW5kLAogICAgIHJl
dHVybiB0cnVlOwogfQogCit2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cGFyc2VSZXBvcnRV
UkkoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBjb25zdCBVQ2hhciogcG9zaXRpb24gPSB2
YWx1ZS5jaGFyYWN0ZXJzKCk7CisgICAgY29uc3QgVUNoYXIqIGVuZCA9IHBvc2l0aW9uICsgdmFs
dWUubGVuZ3RoKCk7CisKKyAgICB3aGlsZSAocG9zaXRpb24gPCBlbmQpIHsKKyAgICAgICAgc2tp
cFdoaWxlPGlzQVNDSUlTcGFjZT4ocG9zaXRpb24sIGVuZCk7CisKKyAgICAgICAgY29uc3QgVUNo
YXIqIHVybEJlZ2luID0gcG9zaXRpb247CisgICAgICAgIHNraXBXaGlsZTxpc05vdEFTQ0lJU3Bh
Y2U+KHBvc2l0aW9uLCBlbmQpOworCisgICAgICAgIGlmICh1cmxCZWdpbiA8IHBvc2l0aW9uKSB7
CisgICAgICAgICAgICBTdHJpbmcgdXJsID0gU3RyaW5nKHVybEJlZ2luLCBwb3NpdGlvbiAtIHVy
bEJlZ2luKTsKKyAgICAgICAgICAgIG1fcmVwb3J0VVJMcy5hcHBlbmQobV9kb2N1bWVudC0+Y29t
cGxldGVVUkwodXJsKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjphZGREaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzY3JpcHRTcmMsICgi
c2NyaXB0LXNyYyIpKTsKQEAgLTY3NSwyNCArNzMyLDI3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5
UG9saWN5OjphZGREaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZh
bHVlCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHN0eWxlU3JjLCAoInN0eWxlLXNy
YyIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZm9udFNyYywgKCJmb250LXNy
YyIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbWVkaWFTcmMsICgibWVkaWEt
c3JjIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCByZXBvcnRVUkksICgicmVw
b3J0LXVyaSIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgb3B0aW9ucywgKCJv
cHRpb25zIikpOwogCiAgICAgQVNTRVJUKCFuYW1lLmlzRW1wdHkoKSk7CiAKICAgICBpZiAoIW1f
c2NyaXB0U3JjICYmIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsIHNjcmlwdFNyYykpCi0gICAgICAg
IG1fc2NyaXB0U3JjID0gYWRvcHRQdHIobmV3IENTUERpcmVjdGl2ZSh2YWx1ZSwgbV9kb2N1bWVu
dC0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICBtX3NjcmlwdFNyYyA9IGFkb3B0UHRyKG5l
dyBDU1BEaXJlY3RpdmUobmFtZSwgdmFsdWUsIG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkp
KTsKICAgICBlbHNlIGlmICghbV9vYmplY3RTcmMgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwg
b2JqZWN0U3JjKSkKLSAgICAgICAgbV9vYmplY3RTcmMgPSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0
aXZlKHZhbHVlLCBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgICAgIG1fb2Jq
ZWN0U3JjID0gYWRvcHRQdHIobmV3IENTUERpcmVjdGl2ZShuYW1lLCB2YWx1ZSwgbV9kb2N1bWVu
dC0+c2VjdXJpdHlPcmlnaW4oKSkpOwogICAgIGVsc2UgaWYgKCFtX2ZyYW1lU3JjICYmIGVxdWFs
SWdub3JpbmdDYXNlKG5hbWUsIGZyYW1lU3JjKSkKLSAgICAgICAgbV9mcmFtZVNyYyA9IGFkb3B0
UHRyKG5ldyBDU1BEaXJlY3RpdmUodmFsdWUsIG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkp
KTsKKyAgICAgICAgbV9mcmFtZVNyYyA9IGFkb3B0UHRyKG5ldyBDU1BEaXJlY3RpdmUobmFtZSwg
dmFsdWUsIG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKTsKICAgICBlbHNlIGlmICghbV9p
bWdTcmMgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgaW1nU3JjKSkKLSAgICAgICAgbV9pbWdT
cmMgPSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0aXZlKHZhbHVlLCBtX2RvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpKSk7CisgICAgICAgIG1faW1nU3JjID0gYWRvcHRQdHIobmV3IENTUERpcmVjdGl2
ZShuYW1lLCB2YWx1ZSwgbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpOwogICAgIGVsc2Ug
aWYgKCFtX3N0eWxlU3JjICYmIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsIHN0eWxlU3JjKSkKLSAg
ICAgICAgbV9zdHlsZVNyYyA9IGFkb3B0UHRyKG5ldyBDU1BEaXJlY3RpdmUodmFsdWUsIG1fZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICAgICAgbV9zdHlsZVNyYyA9IGFkb3B0UHRy
KG5ldyBDU1BEaXJlY3RpdmUobmFtZSwgdmFsdWUsIG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCkpKTsKICAgICBlbHNlIGlmICghbV9mb250U3JjICYmIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUs
IGZvbnRTcmMpKQotICAgICAgICBtX2ZvbnRTcmMgPSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0aXZl
KHZhbHVlLCBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgICAgIG1fZm9udFNy
YyA9IGFkb3B0UHRyKG5ldyBDU1BEaXJlY3RpdmUobmFtZSwgdmFsdWUsIG1fZG9jdW1lbnQtPnNl
Y3VyaXR5T3JpZ2luKCkpKTsKICAgICBlbHNlIGlmICghbV9tZWRpYVNyYyAmJiBlcXVhbElnbm9y
aW5nQ2FzZShuYW1lLCBtZWRpYVNyYykpCi0gICAgICAgIG1fbWVkaWFTcmMgPSBhZG9wdFB0cihu
ZXcgQ1NQRGlyZWN0aXZlKHZhbHVlLCBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7Cisg
ICAgICAgIG1fbWVkaWFTcmMgPSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0aXZlKG5hbWUsIHZhbHVl
LCBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgZWxzZSBpZiAobV9yZXBvcnRV
UkxzLmlzRW1wdHkoKSAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCByZXBvcnRVUkkpKQorICAg
ICAgICBwYXJzZVJlcG9ydFVSSSh2YWx1ZSk7CiAgICAgZWxzZSBpZiAoIW1fb3B0aW9ucyAmJiBl
cXVhbElnbm9yaW5nQ2FzZShuYW1lLCBvcHRpb25zKSkKICAgICAgICAgbV9vcHRpb25zID0gYWRv
cHRQdHIobmV3IENTUE9wdGlvbnModmFsdWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5oCmluZGV4IDUyMjNlODJjZDE3MzNhNzcyYzNlZmE3NzQ5ZDRh
Y2IxZTk3M2JhZWEuLjlkZjQ2MDYxZDNmN2ZhMjBkNWRkZWRmNWFkM2YzZTRhNzNiZmQ5OWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaApAQCAtNjYsMTIg
KzY2LDE0IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYpOwogICAg
IGJvb2wgcGFyc2VEaXJlY3RpdmUoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhciogZW5k
LCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpOworICAgIHZvaWQgcGFyc2VSZXBvcnRVUkko
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBhZGREaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAotICAgIHZvaWQgcmVwb3J0VmlvbGF0aW9uKGNvbnN0
IFN0cmluZyYgY29uc29sZU1lc3NhZ2UpIGNvbnN0OworICAgIHZvaWQgcmVwb3J0VmlvbGF0aW9u
KGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2Fn
ZSkgY29uc3Q7CiAKICAgICBib29sIG1faGF2ZVBvbGljeTsKICAgICBEb2N1bWVudCogbV9kb2N1
bWVudDsKKwogICAgIE93blB0cjxDU1BEaXJlY3RpdmU+IG1fc2NyaXB0U3JjOwogICAgIE93blB0
cjxDU1BEaXJlY3RpdmU+IG1fb2JqZWN0U3JjOwogICAgIE93blB0cjxDU1BEaXJlY3RpdmU+IG1f
ZnJhbWVTcmM7CkBAIC04MCw2ICs4Miw4IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPENTUERpcmVj
dGl2ZT4gbV9mb250U3JjOwogICAgIE93blB0cjxDU1BEaXJlY3RpdmU+IG1fbWVkaWFTcmM7CiAg
ICAgT3duUHRyPENTUE9wdGlvbnM+IG1fb3B0aW9uczsKKworICAgIFZlY3RvcjxLVVJMPiBtX3Jl
cG9ydFVSTHM7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90451</attachid>
            <date>2011-04-20 17:16:36 -0700</date>
            <delta_ts>2011-04-21 01:35:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58639-20110420171634.patch</filename>
            <type>text/plain</type>
            <size>25183</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQzNDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4OTgwY2QyN2JkYTI3YjZlYzc4Yjg1
MmZiYTVhMzZiNzMwMGY2ODJiLi42NzM2MTczYmI2YzcwMzI0ZjVmYzg4MGJlYzFiNWJiNmJhMDE5
OWQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIwMTEtMDQtMjAgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDU1AgcmVwb3J0LXVyaSBpcyBtaXNzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODYzOQorCisgICAgICAgIFRlc3QgdGhhdCByZXBv
cnQtdXJpIHNlbmRzIGEgcmVwb3J0LiAgVGVzdGluZyBhcHByb2FjaCBzdG9sZW4gZnJvbSB0aGUK
KyAgICAgICAgcGluZyB0ZXN0cy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXBvcnQtdXJp
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3Jlc291cmNlcy9lY2hvLXJlcG9ydC5waHA6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy9nby10by1l
Y2hvLXJlcG9ydC5qczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL3NhdmUtcmVwb3J0LnBocDogQWRkZWQuCisKKzIw
MTEtMDQtMjAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KIAogICAgICAgICBDU1AgZnJhbWUtc3JjIGlzIG1pc3NpbmcK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3BvbGljeS1kb2VzLW5vdC1hZmZlY3QtY2hpbGQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcG9saWN5
LWRvZXMtbm90LWFmZmVjdC1jaGlsZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM3MDMyMTE4
ODlhODlmZTkwODJiOTk4YTRkY2VlNzNkYTc3YWNkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BvbGljeS1k
b2VzLW5vdC1hZmZlY3QtY2hpbGQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorQUxFUlQ6
IFBBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvcG9saWN5LWRvZXMtbm90LWFmZmVjdC1jaGlsZC5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcG9saWN5
LWRvZXMtbm90LWFmZmVjdC1jaGlsZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExMjg5MDAyM2Q0MzE4NjE5
OWNjZTUyYjQ0Y2Q1YzE1YWYzODA2Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wb2xpY3ktZG9lcy1ub3Qt
YWZmZWN0LWNoaWxkLmh0bWwKQEAgLTAsMCArMSwzIEBACis8bWV0YSBodHRwLWVxdWl2PSJYLVdl
YktpdC1DU1AiIGNvbnRlbnQ9InNjcmlwdC1zcmMgJ3NlbGYnIj4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvZHVtcC1hcy10ZXh0LmpzIj48L3NjcmlwdD4KKzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMv
YWxlcnQtcGFzcy5odG1sIj48L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmktZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvcmVwb3J0LXVyaS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBlMTY1ODhmZjQ5YjYwMjM4
Y2YxZmU2ODg5ZTRjMjA5ZWY1YTcxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmktZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQg
dG8gZXhlY3V0ZSBpbmxpbmUgc2NyaXB0IGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xp
Y3kuCisKK0NTUCByZXBvcnQgcmVjZWl2ZWQ6CitDT05URU5UX1RZUEU6IGFwcGxpY2F0aW9uL3gt
d3d3LWZvcm0tdXJsZW5jb2RlZAorSFRUUF9SRUZFUkVSOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmkuaHRtbAorUkVRVUVTVF9N
RVRIT0Q6IFBPU1QKKz09PSBQT1NUIERBVEEgPT09Citkb2N1bWVudC11cmw6IGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVwb3J0LXVyaS5odG1s
Cit2aW9sYXRlZC1kaXJlY3RpdmU6IHNjcmlwdC1zcmMgXCdzZWxmXCcKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3JlcG9y
dC11cmktZnJvbS1jaGlsZC1mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXBvcnQtdXJpLWZyb20tY2hpbGQt
ZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmZDhjMWViZWQ0YmM5MjY1NjdlZjkxMDgz
ZTg1ODBjNWE4ODk2ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXBvcnQtdXJpLWZyb20tY2hpbGQtZnJh
bWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAx
OiBSZWZ1c2VkIHRvIGV4ZWN1dGUgaW5saW5lIHNjcmlwdCBiZWNhdXNlIG9mIENvbnRlbnQtU2Vj
dXJpdHktUG9saWN5LgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwh
LS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorQ1NQIHJlcG9ydCByZWNlaXZlZDoKK0NPTlRFTlRf
VFlQRTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkCitIVFRQX1JFRkVSRVI6IGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3Vy
Y2VzL2dlbmVyYXRlLWNzcC1yZXBvcnQuaHRtbAorUkVRVUVTVF9NRVRIT0Q6IFBPU1QKKz09PSBQ
T1NUIERBVEEgPT09Citkb2N1bWVudC11cmw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL2dlbmVyYXRlLWNzcC1yZXBvcnQuaHRt
bAordmlvbGF0ZWQtZGlyZWN0aXZlOiBzY3JpcHQtc3JjIFwnc2VsZlwnCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXBv
cnQtdXJpLWZyb20tY2hpbGQtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3JlcG9ydC11cmktZnJvbS1jaGlsZC1mcmFtZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUxZWRkMjNiYjI4NTQ4MDNhNDBkNzA3NGFhZmYxOTg3Nzk2MDFkNzkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9yZXBvcnQtdXJpLWZyb20tY2hpbGQtZnJhbWUuaHRtbApAQCAtMCww
ICsxLDUgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworPC9zY3JpcHQ+
Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL2dlbmVyYXRlLWNzcC1yZXBvcnQuaHRtbCI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS9yZXBvcnQtdXJpLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXBvcnQtdXJpLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmFlMDE2NWY0YWZhM2JjODk5MDAyYTgxZDhmY2M0NWNkMjZiNzY4OAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L3JlcG9ydC11cmkuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxtZXRhIGh0dHAtZXF1aXY9IlgtV2Vi
S2l0LUNTUCIgY29udGVudD0ic2NyaXB0LXNyYyAnc2VsZic7IHJlcG9ydC11cmkgcmVzb3VyY2Vz
L3NhdmUtcmVwb3J0LnBocCI+Cis8c2NyaXB0PgorLy8gVGhpcyBzY3JpcHQgYmxvY2sgd2lsbCB0
cmlnZ2VyIGEgdmlvbGF0aW9uIHJlcG9ydC4KK2FsZXJ0KCdGQUlMJyk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvZ28tdG8tZWNoby1yZXBvcnQuanMiPjwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvcmVzb3VyY2VzL2VjaG8tcmVwb3J0LnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy9lY2hvLXJlcG9ydC5waHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjdlNjk4NWNiZmY1NTFlZTkzY2RmMjkzOTdhNDIzYzc4MjcyNmRmMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L3Jlc291cmNlcy9lY2hvLXJlcG9ydC5waHAKQEAgLTAsMCArMSwyMiBAQAor
PD9waHAKK3doaWxlICghZmlsZV9leGlzdHMoImNzcC1yZXBvcnQudHh0IikpIHsKKyAgICB1c2xl
ZXAoMTAwMDApOworICAgIC8vIGZpbGVfZXhpc3RzKCkgY2FjaGVzIHJlc3VsdHMsIHdlIHdhbnQg
dG8gaW52YWxpZGF0ZSB0aGUgY2FjaGUuCisgICAgY2xlYXJzdGF0Y2FjaGUoKTsKK30KKworZWNo
byAiPGh0bWw+PGJvZHk+XG4iOworZWNobyAiQ1NQIHJlcG9ydCByZWNlaXZlZDoiOworJHJlcG9y
dEZpbGUgPSBmb3BlbigiY3NwLXJlcG9ydC50eHQiLCAncicpOword2hpbGUgKCRsaW5lID0gZmdl
dHMoJHJlcG9ydEZpbGUpKSB7CisgICAgZWNobyAiPGJyPiI7CisgICAgZWNobyB0cmltKCRsaW5l
KTsKK30KK2ZjbG9zZSgkcmVwb3J0RmlsZSk7Cit1bmxpbmsoImNzcC1yZXBvcnQudHh0Iik7Citl
Y2hvICI8c2NyaXB0PiI7CitlY2hvICJpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSI7
CitlY2hvICIgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyI7CitlY2hvICI8
L3NjcmlwdD4iOworZWNobyAiPC9ib2R5PjwvaHRtbD4iOworPz4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNl
cy9nZW5lcmF0ZS1jc3AtcmVwb3J0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvZ2VuZXJhdGUtY3NwLXJlcG9ydC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjUzNWNhNDkyYmM1ZjE4ZTNlOTg2YmJlY2ZiMmY1MjhhMmE5OTFiMTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvZ2VuZXJhdGUtY3NwLXJlcG9ydC5odG1sCkBAIC0w
LDAgKzEsNiBAQAorPG1ldGEgaHR0cC1lcXVpdj0iWC1XZWJLaXQtQ1NQIiBjb250ZW50PSJzY3Jp
cHQtc3JjICdzZWxmJzsgcmVwb3J0LXVyaSBzYXZlLXJlcG9ydC5waHAiPgorPHNjcmlwdD4KKy8v
IFRoaXMgc2NyaXB0IGJsb2NrIHdpbGwgdHJpZ2dlciBhIHZpb2xhdGlvbiByZXBvcnQuCithbGVy
dCgnRkFJTCcpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZ28tdG8tZWNoby1yZXBvcnQuanMi
Pjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL2dvLXRvLWVjaG8tcmVwb3J0LmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3Vy
Y2VzL2dvLXRvLWVjaG8tcmVwb3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxNmRhNGY4NzE0YWQyZTk2MDNm
NDQxZDU4YWEwYjllNWUyMTAyYjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvZ28tdG8tZWNo
by1yZXBvcnQuanMKQEAgLTAsMCArMSw4IEBACitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1
bmN0aW9uICgpIHsKKyAgICB3aW5kb3cubG9jYXRpb24gPSAiL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9yZXNvdXJjZXMvZWNoby1yZXBvcnQucGhwIjsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291
cmNlcy9zYXZlLXJlcG9ydC5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvc2F2ZS1yZXBvcnQucGhwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg3MmNlOTU0MTUzNTg1MTk5OWU4YTA4ZjM4MjBmOTA0MzM4YmVjMTQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9yZXNvdXJjZXMvc2F2ZS1yZXBvcnQucGhwCkBAIC0wLDAgKzEsMTUgQEAKKzw/cGhwCiskcmVw
b3J0RmlsZSA9IGZvcGVuKCJjc3AtcmVwb3J0LnR4dC50bXAiLCAndycpOworJGh0dHBIZWFkZXJz
ID0gJF9TRVJWRVI7Citrc29ydCgkaHR0cEhlYWRlcnMsIFNPUlRfU1RSSU5HKTsKK2ZvcmVhY2gg
KCRodHRwSGVhZGVycyBhcyAkbmFtZSA9PiAkdmFsdWUpIHsKKyAgICBpZiAoJG5hbWUgPT09ICJD
T05URU5UX1RZUEUiIHx8ICRuYW1lID09PSAiSFRUUF9SRUZFUkVSIiB8fCAkbmFtZSA9PT0gIlJF
UVVFU1RfTUVUSE9EIikKKyAgICAgICAgZndyaXRlKCRyZXBvcnRGaWxlLCAiJG5hbWU6ICR2YWx1
ZVxuIik7Cit9Citmd3JpdGUoJHJlcG9ydEZpbGUsICI9PT0gUE9TVCBEQVRBID09PVxuIik7Citm
b3JlYWNoICgkX1BPU1QgYXMgJG5hbWUgPT4gJHZhbHVlKSB7CisgICAgZndyaXRlKCRyZXBvcnRG
aWxlLCAiJG5hbWU6ICR2YWx1ZVxuIik7Cit9CitmY2xvc2UoJHJlcG9ydEZpbGUpOworcmVuYW1l
KCJjc3AtcmVwb3J0LnR4dC50bXAiLCAiY3NwLXJlcG9ydC50eHQiKTsKKz8+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggOTA1NDllYTQ5NWIyZWZhNTkwYzk2M2MzMTg4MTc0Mjk3YzM3ZmNlNS4uNzMyYzk5N2UzMDRh
MzNmMjZlMGJjNWM1ZWYwNTg1ZGQ3YzNhMzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1IEBA
CiAyMDExLTA0LTIwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ1NQIHJlcG9ydC11cmkgaXMg
bWlzc2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTg2MzkKKworICAgICAgICBPdXIgaW1wbGVtZW50YXRpb24gb2YgcmVwb3J0LXVyaSBkaWZmZXJz
IGZyb20gd2hhdCdzIGN1cnJlbnRseSBpbiB0aGUKKyAgICAgICAgc3BlYy4gIEkgc2VudCB0aGUg
d29ya2luZyBncm91cCBhbiBlbWFpbCBleHBsYWluaW5nIHdoeS4gIEdlbmVyYWxseSwKKyAgICAg
ICAgd2UncmUgdXNpbmcgbm9ybWFsIGZvcm0gZW5jb2RpbmcgaW5zdGVhZCBvZiBKU09OIGFuZCB3
ZSdyZSBzZW5kaW5nIGxlc3MKKyAgICAgICAgaW5mb3JtYXRpb24gdG8gYSB3aWRlciBzZXQgb2Yg
VVJMcy4gIFNwZWNpZmljYWxseSwgd2Ugc2VuZCB0aGUgY3VycmVudAorICAgICAgICBkb2N1bWVu
dCdzIFVSTCBhcyB3ZWxsIGFzIHRoZSBkaXJlY3RpdmUgdGhhdCB3YXMgdmlvbGF0ZWQuICBUaGUg
c3BlYworICAgICAgICAoY3VycmVudGx5KSB0ZWxscyB1cyB0byBzZW5kIHRoZSByYXcgSFRUUCBo
ZWFkZXJzIGFuZCB0aGUgVVJMIHRoYXQKKyAgICAgICAgY2F1c2VkIHRoZSB2aW9sYXRpb24sIGJ1
dCBib3RoIG9mIHRoZXNlIHBpZWNlcyBvZiBkYXRhIGNvdWxkIGNvbnRhaW4KKyAgICAgICAgaW5m
b3JtYXRpb24gdGhhdCdzIHNlbnNpdGl2ZSwgc28gd2Ugb21pdCB0aGVtIGZvciBub3cuCisKKyAg
ICAgICAgVGVzdDogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVw
b3J0LXVyaS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvUGluZ0xvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQaW5nTG9hZGVyOjpyZXBvcnRDb250ZW50U2VjdXJpdHlQb2xpY3lWaW9sYXRp
b24pOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmg6CisgICAgICAgICogcGFnZS9Db250
ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlOjpD
U1BEaXJlY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGlyZWN0aXZlOjp0ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dKYXZhU2NyaXB0
VVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5s
aW5lRXZlbnRIYW5kbGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmFsbG93SW5saW5lU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeTo6YWxsb3dFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsb3dTY3JpcHRGcm9tU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeTo6YWxsb3dPYmplY3RGcm9tU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW1hZ2VGcm9tU291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTdHlsZUZy
b21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxv
d0ZvbnRGcm9tU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eTo6YWxsb3dNZWRpYUZyb21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3Vy
aXR5UG9saWN5OjpwYXJzZVJlcG9ydFVSSSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmFkZERpcmVjdGl2ZSk6CisgICAgICAgICogcGFnZS9Db250ZW50U2VjdXJp
dHlQb2xpY3kuaDoKKworMjAxMS0wNC0yMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgorCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgogCiAgICAgICAgIENTUCBmcmFt
ZS1zcmMgaXMgbWlzc2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4IDI4
MDYyMGFlMDMxNWQ0MmRiYjY5YmNhZGFkYWMxM2FmYjgyZGI5YWMuLjAwYTAwNWU4NTRhODYxOTI4
NTk0MWUyMmRhYzNkZTdlOTM5YjYzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9QaW5nTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5j
cHAKQEAgLTkxLDYgKzkxLDI0IEBAIHZvaWQgUGluZ0xvYWRlcjo6c2VuZFBpbmcoRnJhbWUqIGZy
YW1lLCBjb25zdCBLVVJMJiBwaW5nVVJMLCBjb25zdCBLVVJMJiBkZXN0aW5hCiAgICAgVU5VU0VE
X1BBUkFNKGxlYWtlZFBpbmdMb2FkZXIpOwogfQogCit2b2lkIFBpbmdMb2FkZXI6OnJlcG9ydENv
bnRlbnRTZWN1cml0eVBvbGljeVZpb2xhdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHJl
cG9ydFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcmVwb3J0KQoreworICAgIFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0KHJlcG9ydFVSTCk7CisgICAgcmVxdWVzdC5zZXRUYXJnZXRUeXBlKFJlc291
cmNlUmVxdWVzdDo6VGFyZ2V0SXNTdWJyZXNvdXJjZSk7CisgICAgcmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJQT1NUIik7CisgICAgcmVxdWVzdC5zZXRIVFRQQ29udGVudFR5cGUoImFwcGxpY2F0aW9u
L3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpOworICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkocmVwb3J0
KTsKKyAgICBmcmFtZS0+bG9hZGVyKCktPmFkZEV4dHJhRmllbGRzVG9TdWJyZXNvdXJjZVJlcXVl
c3QocmVxdWVzdCk7CisKKyAgICBpZiAoIVNlY3VyaXR5T3JpZ2luOjpzaG91bGRIaWRlUmVmZXJy
ZXIocmVwb3J0VVJMLCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSkpCisgICAg
ICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZl
cnJlcigpKTsKKyAgICBPd25QdHI8UGluZ0xvYWRlcj4gcGluZ0xvYWRlciA9IGFkb3B0UHRyKG5l
dyBQaW5nTG9hZGVyKGZyYW1lLCByZXF1ZXN0KSk7CisKKyAgICAvLyBMZWFrIHRoZSBwaW5nIGxv
YWRlciwgc2luY2UgaXQgd2lsbCBraWxsIGl0c2VsZiBhcyBzb29uIGFzIGl0IHJlY2VpdmVzIGEg
cmVzcG9uc2UuCisgICAgUGluZ0xvYWRlciogbGVha2VkUGluZ0xvYWRlciA9IHBpbmdMb2FkZXIu
bGVha1B0cigpOworICAgIFVOVVNFRF9QQVJBTShsZWFrZWRQaW5nTG9hZGVyKTsKK30KKwogUGlu
Z0xvYWRlcjo6UGluZ0xvYWRlcihGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKICAgICA6IG1fdGltZW91dCh0aGlzLCAmUGluZ0xvYWRlcjo6dGltZW91dCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oCmluZGV4IDI1MmMwOWI3MDg3OWUzNWY4OGQ5NTc5
OTM5MTM0YWM1OGE3MWU1M2EuLjQxM2ViNjFiYjM4Yzk1YmZjNGY0ZTc1NzdhYTVjYTNlZDQyOWE0
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2lm
bmRlZiBQaW5nTG9hZGVyX2gKICNkZWZpbmUgUGluZ0xvYWRlcl9oCiAKKyNpbmNsdWRlICJGb3Jt
RGF0YS5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTU1LDYgKzU2LDcgQEAgY2xh
c3MgUGluZ0xvYWRlciA6IHByaXZhdGUgUmVzb3VyY2VIYW5kbGVDbGllbnQgewogcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGxvYWRJbWFnZShGcmFtZSosIGNvbnN0IEtVUkwmIHVybCk7CiAgICAg
c3RhdGljIHZvaWQgc2VuZFBpbmcoRnJhbWUqLCBjb25zdCBLVVJMJiBwaW5nVVJMLCBjb25zdCBL
VVJMJiBkZXN0aW5hdGlvblVSTCk7CisgICAgc3RhdGljIHZvaWQgcmVwb3J0Q29udGVudFNlY3Vy
aXR5UG9saWN5VmlvbGF0aW9uKEZyYW1lKiwgY29uc3QgS1VSTCYgcmVwb3J0VVJMLCBQYXNzUmVm
UHRyPEZvcm1EYXRhPiByZXBvcnQpOwogCiAgICAgflBpbmdMb2FkZXIoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IGZiM2M2ZTE0M2Rk
NWRjMzI3MTZjNjg1YjcyYjYwOTA5ZDE1NjljNmIuLjQ5NjU1MjkyYzMwOWE1ODJlM2M2ZGMyOGQ2
NDIxMzZkZjFhZTU3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5jcHAKQEAgLTI4LDkgKzI4LDEzIEBACiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZvcm1EYXRhLmgiCisjaW5jbHVkZSAi
Rm9ybURhdGFMaXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgorI2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcwLDYgKzc0LDExIEBA
IGJvb2wgaXNTY2hlbWVDb250aW51YXRpb25DaGFyYWN0ZXIoVUNoYXIgYykKICAgICByZXR1cm4g
aXNBU0NJSUFscGhhbnVtZXJpYyhjKSB8fCBjID09ICcrJyB8fCBjID09ICctJyB8fCBjID09ICcu
JzsKIH0KIAorYm9vbCBpc05vdEFTQ0lJU3BhY2UoVUNoYXIgYykKK3sKKyAgICByZXR1cm4gIWlz
QVNDSUlTcGFjZShjKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKIAogc3RhdGljIGJvb2wgc2tpcEV4
YWN0bHkoY29uc3QgVUNoYXIqJiBwb3NpdGlvbiwgY29uc3QgVUNoYXIqIGVuZCwgVUNoYXIgZGVs
aW1pdGVyKQpAQCAtMzk4LDggKzQwNyw5IEBAIHZvaWQgQ1NQU291cmNlTGlzdDo6YWRkU291cmNl
U2VsZigpCiAKIGNsYXNzIENTUERpcmVjdGl2ZSB7CiBwdWJsaWM6Ci0gICAgQ1NQRGlyZWN0aXZl
KGNvbnN0IFN0cmluZyYgdmFsdWUsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCisgICAgQ1NQRGly
ZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbikKICAgICAgICAgOiBtX3NvdXJjZUxpc3Qob3JpZ2luKQorICAgICAgICAs
IG1fdGV4dChtYWtlU3RyaW5nKG5hbWUsICIgIiwgdmFsdWUpKQogICAgIHsKICAgICAgICAgbV9z
b3VyY2VMaXN0LnBhcnNlKHZhbHVlKTsKICAgICB9CkBAIC00MDksOCArNDE5LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG1fc291cmNlTGlzdC5tYXRjaGVzKHVybCk7CiAgICAgfQogCisg
ICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgeyByZXR1cm4gbV90ZXh0OyB9CisKIHByaXZhdGU6CiAg
ICAgQ1NQU291cmNlTGlzdCBtX3NvdXJjZUxpc3Q7CisgICAgU3RyaW5nIG1fdGV4dDsKIH07CiAK
IGNsYXNzIENTUE9wdGlvbnMgewpAQCAtNDgxLDEwICs0OTQsMzYgQEAgdm9pZCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCiAgICAg
bV9oYXZlUG9saWN5ID0gdHJ1ZTsKIH0KIAotdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJl
cG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlKSBjb25zdAordm9pZCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVj
dGl2ZVRleHQsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UpIGNvbnN0CiB7Ci0gICAgaWYg
KEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5kb21X
aW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2Fn
ZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSwgMSwgU3RyaW5nKCkpOwor
ICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFk
ZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsIGNvbnNvbGVNZXNzYWdlLCAxLCBTdHJpbmcoKSk7CisKKyAgICBpZiAobV9yZXBvcnRVUkxz
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gV2UgbmVlZCB0byBiZSBjYXJl
ZnVsIGhlcmUgd2hlbiBkZWNpZGluZyB3aGF0IGluZm9ybWF0aW9uIHRvIHNlbmQgdG8gdGhlCisg
ICAgLy8gcmVwb3J0LXVyaS4gQ3VycmVudGx5LCB3ZSBzZW5kIG9ubHkgdGhlIGN1cnJlbnQgZG9j
dW1lbnQncyBVUkwgYW5kIHRoZQorICAgIC8vIGRpcmVjdGl2ZSB0aGF0IHdhcyB2aW9sYXRlZC4g
VGhlIGRvY3VtZW50J3MgVVJMIGlzIHNhZmUgdG8gc2VuZCBiZWNhdXNlCisgICAgLy8gaXQncyB0
aGUgZG9jdW1lbnQgaXRzZWxmIHRoYXQncyByZXF1ZXN0aW5nIHRoYXQgaXQgYmUgc2VudC4gWW91
IGNvdWxkCisgICAgLy8gbWFrZSBhbiBhcmd1bWVudCB0aGF0IHdlIHNob3VsZG4ndCBzZW5kIEhU
VFBTIGRvY3VtZW50IFVSTHMgdG8gSFRUUAorICAgIC8vIHJlcG9ydC11cmlzIChmb3IgdGhlIHNh
bWUgcmVhc29ucyB0aGF0IHdlIHN1cHJlc3MgdGhlIFJlZmVyZXIgaW4gdGhhdAorICAgIC8vIGNh
c2UpLCBidXQgdGhlIFJlZmVyZXIgaXMgc2VudCBpbXBsaWNpdGx5IHdoZXJlYXMgdGhpcyByZXF1
ZXN0IGlzIG9ubHkKKyAgICAvLyBzZW50IGV4cGxpY2l0bHkuIEFzIGZvciB3aGljaCBkaXJlY3Rp
dmUgd2FzIHZpb2xhdGVkLCB0aGF0J3MgcHJldHR5CisgICAgLy8gaGFybWxlc3MgaW5mb3JtYXRp
b24uCisKKyAgICBGb3JtRGF0YUxpc3QgcmVwb3J0TGlzdChVVEY4RW5jb2RpbmcoKSk7CisgICAg
cmVwb3J0TGlzdC5hcHBlbmREYXRhKCJkb2N1bWVudC11cmwiLCBtX2RvY3VtZW50LT51cmwoKSk7
CisgICAgaWYgKCFkaXJlY3RpdmVUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgcmVwb3J0TGlzdC5h
cHBlbmREYXRhKCJ2aW9sYXRlZC1kaXJlY3RpdmUiLCBkaXJlY3RpdmVUZXh0KTsKKworICAgIFJl
ZlB0cjxGb3JtRGF0YT4gcmVwb3J0ID0gRm9ybURhdGE6OmNyZWF0ZShyZXBvcnRMaXN0LCBVVEY4
RW5jb2RpbmcoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcmVwb3J0VVJMcy5z
aXplKCk7ICsraSkKKyAgICAgICAgUGluZ0xvYWRlcjo6cmVwb3J0Q29udGVudFNlY3VyaXR5UG9s
aWN5VmlvbGF0aW9uKGZyYW1lLCBtX3JlcG9ydFVSTHNbaV0sIHJlcG9ydCk7CiB9CiAKIGJvb2wg
Q29udGVudFNlY3VyaXR5UG9saWN5Ojpwcm90ZWN0QWdhaW5zdFhTUygpIGNvbnN0CkBAIC00OTgs
NyArNTM3LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SmF2YVNjcmlwdFVS
THMoKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgSmF2YVNjcmlw
dCBVUkwgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKLSAgICByZXBv
cnRWaW9sYXRpb24oY29uc29sZU1lc3NhZ2UpOworICAgIHJlcG9ydFZpb2xhdGlvbihtX3Njcmlw
dFNyYy0+dGV4dCgpLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBA
IC01MDgsNyArNTQ3LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5l
RXZlbnRIYW5kbGVycygpIGNvbnN0CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoIlJlZnVzZWQgdG8gZXhlY3V0
ZSBpbmxpbmUgZXZlbnQgaGFuZGxlciBiZWNhdXNlIG9mIENvbnRlbnQtU2VjdXJpdHktUG9saWN5
LlxuIikpOwotICAgIHJlcG9ydFZpb2xhdGlvbihjb25zb2xlTWVzc2FnZSk7CisgICAgcmVwb3J0
VmlvbGF0aW9uKG1fc2NyaXB0U3JjLT50ZXh0KCksIGNvbnNvbGVNZXNzYWdlKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKQEAgLTUxOCw3ICs1NTcsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsb3dJbmxpbmVTY3JpcHQoKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKCJSZWZ1c2Vk
IHRvIGV4ZWN1dGUgaW5saW5lIHNjcmlwdCBiZWNhdXNlIG9mIENvbnRlbnQtU2VjdXJpdHktUG9s
aWN5LlxuIikpOwotICAgIHJlcG9ydFZpb2xhdGlvbihjb25zb2xlTWVzc2FnZSk7CisgICAgcmVw
b3J0VmlvbGF0aW9uKG1fc2NyaXB0U3JjLT50ZXh0KCksIGNvbnNvbGVNZXNzYWdlKTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTUyOCw3ICs1NjcsNyBAQCBib29sIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6YWxsb3dFdmFsKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsICgiUmVmdXNlZCB0byBl
dmFsdWF0ZSBzY3JpcHQgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsK
LSAgICByZXBvcnRWaW9sYXRpb24oY29uc29sZU1lc3NhZ2UpOworICAgIHJlcG9ydFZpb2xhdGlv
bihtX3NjcmlwdFNyYy0+dGV4dCgpLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCkBAIC01MzcsNyArNTc2LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93U2NyaXB0RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiAgICAgaWYgKCFtX3Nj
cmlwdFNyYyB8fCBtX3NjcmlwdFNyYy0+YWxsb3dzKHVybCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgcmVwb3J0VmlvbGF0aW9uKG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gbG9hZCBzY3Jp
cHQgZnJvbSAnIiwgdXJsLnN0cmluZygpLCAiJyBiZWNhdXNlIG9mIENvbnRlbnQtU2VjdXJpdHkt
UG9saWN5LlxuIikpOworICAgIHJlcG9ydFZpb2xhdGlvbihtX3NjcmlwdFNyYy0+dGV4dCgpLCBt
YWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgc2NyaXB0IGZyb20gJyIsIHVybC5zdHJpbmcoKSwg
IicgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKQEAgLTU0Niw3ICs1ODUsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6YWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKICAgICBpZiAo
IW1fb2JqZWN0U3JjIHx8IG1fb2JqZWN0U3JjLT5hbGxvd3ModXJsKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICByZXBvcnRWaW9sYXRpb24obWFrZVN0cmluZygiUmVmdXNlZCB0byBsb2Fk
IG9iamVjdCBmcm9tICciLCB1cmwuc3RyaW5nKCksICInIGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1
cml0eS1Qb2xpY3kuXG4iKSk7CisgICAgcmVwb3J0VmlvbGF0aW9uKG1fb2JqZWN0U3JjLT50ZXh0
KCksIG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gbG9hZCBvYmplY3QgZnJvbSAnIiwgdXJsLnN0cmlu
ZygpLCAiJyBiZWNhdXNlIG9mIENvbnRlbnQtU2VjdXJpdHktUG9saWN5LlxuIikpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApAQCAtNTU1LDcgKzU5NCw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5
UG9saWN5OjphbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QK
ICAgICBpZiAoIW1fZnJhbWVTcmMgfHwgbV9mcmFtZVNyYy0+YWxsb3dzKHVybCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgcmVwb3J0VmlvbGF0aW9uKG1ha2VTdHJpbmcoIlJlZnVzZWQg
dG8gbG9hZCBmcmFtZSBmcm9tICciLCB1cmwuc3RyaW5nKCksICInIGJlY2F1c2Ugb2YgQ29udGVu
dC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7CisgICAgcmVwb3J0VmlvbGF0aW9uKG1fZnJhbWVTcmMt
PnRleHQoKSwgbWFrZVN0cmluZygiUmVmdXNlZCB0byBsb2FkIGZyYW1lIGZyb20gJyIsIHVybC5z
dHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTU2NCw3ICs2MDMsNyBAQCBib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dJbWFnZUZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAog
ICAgIGlmICghbV9pbWdTcmMgfHwgbV9pbWdTcmMtPmFsbG93cyh1cmwpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIHJlcG9ydFZpb2xhdGlvbihtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxv
YWQgaW1hZ2UgZnJvbSAnIiwgdXJsLnN0cmluZygpLCAiJyBiZWNhdXNlIG9mIENvbnRlbnQtU2Vj
dXJpdHktUG9saWN5LlxuIikpOworICAgIHJlcG9ydFZpb2xhdGlvbihtX2ltZ1NyYy0+dGV4dCgp
LCBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgaW1hZ2UgZnJvbSAnIiwgdXJsLnN0cmluZygp
LCAiJyBiZWNhdXNlIG9mIENvbnRlbnQtU2VjdXJpdHktUG9saWN5LlxuIikpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIApAQCAtNTczLDcgKzYxMiw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjphbGxvd1N0eWxlRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiAgICAgaWYg
KCFtX3N0eWxlU3JjIHx8IG1fc3R5bGVTcmMtPmFsbG93cyh1cmwpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIHJlcG9ydFZpb2xhdGlvbihtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQg
c3R5bGUgZnJvbSAnIiwgdXJsLnN0cmluZygpLCAiJyBiZWNhdXNlIG9mIENvbnRlbnQtU2VjdXJp
dHktUG9saWN5LlxuIikpOworICAgIHJlcG9ydFZpb2xhdGlvbihtX3N0eWxlU3JjLT50ZXh0KCks
IG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gbG9hZCBzdHlsZSBmcm9tICciLCB1cmwuc3RyaW5nKCks
ICInIGJlY2F1c2Ugb2YgQ29udGVudC1TZWN1cml0eS1Qb2xpY3kuXG4iKSk7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCkBAIC01ODIsNyArNjIxLDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAogICAgIGlmICgh
bV9mb250U3JjIHx8IG1fZm9udFNyYy0+YWxsb3dzKHVybCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgcmVwb3J0VmlvbGF0aW9uKG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gbG9hZCBmb250
IGZyb20gJyIsIHVybC5zdHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBv
bGljeS5cbiIpKTsKKyAgICByZXBvcnRWaW9sYXRpb24obV9mb250U3JjLT50ZXh0KCksIG1ha2VT
dHJpbmcoIlJlZnVzZWQgdG8gbG9hZCBmb250IGZyb20gJyIsIHVybC5zdHJpbmcoKSwgIicgYmVj
YXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGljeS5cbiIpKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKQEAgLTU5MSw3ICs2MzAsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxs
b3dNZWRpYUZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAogICAgIGlmICghbV9tZWRp
YVNyYyB8fCBtX21lZGlhU3JjLT5hbGxvd3ModXJsKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICByZXBvcnRWaW9sYXRpb24obWFrZVN0cmluZygiUmVmdXNlZCB0byBsb2FkIG1lZGlhIGZy
b20gJyIsIHVybC5zdHJpbmcoKSwgIicgYmVjYXVzZSBvZiBDb250ZW50LVNlY3VyaXR5LVBvbGlj
eS5cbiIpKTsKKyAgICByZXBvcnRWaW9sYXRpb24obV9tZWRpYVNyYy0+dGV4dCgpLCBtYWtlU3Ry
aW5nKCJSZWZ1c2VkIHRvIGxvYWQgbWVkaWEgZnJvbSAnIiwgdXJsLnN0cmluZygpLCAiJyBiZWNh
dXNlIG9mIENvbnRlbnQtU2VjdXJpdHktUG9saWN5LlxuIikpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KIApAQCAtNjY2LDYgKzcwNSwyOSBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cGFy
c2VEaXJlY3RpdmUoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhciogZW5kLAogICAgIHJl
dHVybiB0cnVlOwogfQogCit2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cGFyc2VSZXBvcnRV
UkkoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBjb25zdCBVQ2hhciogcG9zaXRpb24gPSB2
YWx1ZS5jaGFyYWN0ZXJzKCk7CisgICAgY29uc3QgVUNoYXIqIGVuZCA9IHBvc2l0aW9uICsgdmFs
dWUubGVuZ3RoKCk7CisKKyAgICB3aGlsZSAocG9zaXRpb24gPCBlbmQpIHsKKyAgICAgICAgc2tp
cFdoaWxlPGlzQVNDSUlTcGFjZT4ocG9zaXRpb24sIGVuZCk7CisKKyAgICAgICAgY29uc3QgVUNo
YXIqIHVybEJlZ2luID0gcG9zaXRpb247CisgICAgICAgIHNraXBXaGlsZTxpc05vdEFTQ0lJU3Bh
Y2U+KHBvc2l0aW9uLCBlbmQpOworCisgICAgICAgIGlmICh1cmxCZWdpbiA8IHBvc2l0aW9uKSB7
CisgICAgICAgICAgICBTdHJpbmcgdXJsID0gU3RyaW5nKHVybEJlZ2luLCBwb3NpdGlvbiAtIHVy
bEJlZ2luKTsKKyAgICAgICAgICAgIG1fcmVwb3J0VVJMcy5hcHBlbmQobV9kb2N1bWVudC0+Y29t
cGxldGVVUkwodXJsKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1Bhc3NPd25QdHI8Q1NQRGly
ZWN0aXZlPiBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmNyZWF0ZUNTUERpcmVjdGl2ZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBDU1BEaXJlY3RpdmUobmFtZSwgdmFsdWUsIG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCkpKTsKK30KKwogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFkZERpcmVjdGl2ZShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIHNjcmlwdFNyYywgKCJzY3JpcHQtc3JjIikpOwpAQCAtNjc1LDI0ICs3
MzcsMjcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFkZERpcmVjdGl2ZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgc3R5bGVTcmMsICgic3R5bGUtc3JjIikpOwogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBmb250U3JjLCAoImZvbnQtc3JjIikpOwogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBtZWRpYVNyYywgKCJtZWRpYS1zcmMiKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIHJlcG9ydFVSSSwgKCJyZXBvcnQtdXJpIikpOwogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCBvcHRpb25zLCAoIm9wdGlvbnMiKSk7CiAKICAgICBBU1NFUlQoIW5h
bWUuaXNFbXB0eSgpKTsKIAogICAgIGlmICghbV9zY3JpcHRTcmMgJiYgZXF1YWxJZ25vcmluZ0Nh
c2UobmFtZSwgc2NyaXB0U3JjKSkKLSAgICAgICAgbV9zY3JpcHRTcmMgPSBhZG9wdFB0cihuZXcg
Q1NQRGlyZWN0aXZlKHZhbHVlLCBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAg
ICAgIG1fc2NyaXB0U3JjID0gY3JlYXRlQ1NQRGlyZWN0aXZlKG5hbWUsIHZhbHVlKTsKICAgICBl
bHNlIGlmICghbV9vYmplY3RTcmMgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgb2JqZWN0U3Jj
KSkKLSAgICAgICAgbV9vYmplY3RTcmMgPSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0aXZlKHZhbHVl
LCBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAgICAgIG1fb2JqZWN0U3JjID0g
Y3JlYXRlQ1NQRGlyZWN0aXZlKG5hbWUsIHZhbHVlKTsKICAgICBlbHNlIGlmICghbV9mcmFtZVNy
YyAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCBmcmFtZVNyYykpCi0gICAgICAgIG1fZnJhbWVT
cmMgPSBhZG9wdFB0cihuZXcgQ1NQRGlyZWN0aXZlKHZhbHVlLCBtX2RvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpKSk7CisgICAgICAgIG1fZnJhbWVTcmMgPSBjcmVhdGVDU1BEaXJlY3RpdmUobmFt
ZSwgdmFsdWUpOwogICAgIGVsc2UgaWYgKCFtX2ltZ1NyYyAmJiBlcXVhbElnbm9yaW5nQ2FzZShu
YW1lLCBpbWdTcmMpKQotICAgICAgICBtX2ltZ1NyYyA9IGFkb3B0UHRyKG5ldyBDU1BEaXJlY3Rp
dmUodmFsdWUsIG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICAgICAgbV9pbWdT
cmMgPSBjcmVhdGVDU1BEaXJlY3RpdmUobmFtZSwgdmFsdWUpOwogICAgIGVsc2UgaWYgKCFtX3N0
eWxlU3JjICYmIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsIHN0eWxlU3JjKSkKLSAgICAgICAgbV9z
dHlsZVNyYyA9IGFkb3B0UHRyKG5ldyBDU1BEaXJlY3RpdmUodmFsdWUsIG1fZG9jdW1lbnQtPnNl
Y3VyaXR5T3JpZ2luKCkpKTsKKyAgICAgICAgbV9zdHlsZVNyYyA9IGNyZWF0ZUNTUERpcmVjdGl2
ZShuYW1lLCB2YWx1ZSk7CiAgICAgZWxzZSBpZiAoIW1fZm9udFNyYyAmJiBlcXVhbElnbm9yaW5n
Q2FzZShuYW1lLCBmb250U3JjKSkKLSAgICAgICAgbV9mb250U3JjID0gYWRvcHRQdHIobmV3IENT
UERpcmVjdGl2ZSh2YWx1ZSwgbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAg
ICBtX2ZvbnRTcmMgPSBjcmVhdGVDU1BEaXJlY3RpdmUobmFtZSwgdmFsdWUpOwogICAgIGVsc2Ug
aWYgKCFtX21lZGlhU3JjICYmIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsIG1lZGlhU3JjKSkKLSAg
ICAgICAgbV9tZWRpYVNyYyA9IGFkb3B0UHRyKG5ldyBDU1BEaXJlY3RpdmUodmFsdWUsIG1fZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAgICAgICAgbV9tZWRpYVNyYyA9IGNyZWF0ZUNT
UERpcmVjdGl2ZShuYW1lLCB2YWx1ZSk7CisgICAgZWxzZSBpZiAobV9yZXBvcnRVUkxzLmlzRW1w
dHkoKSAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCByZXBvcnRVUkkpKQorICAgICAgICBwYXJz
ZVJlcG9ydFVSSSh2YWx1ZSk7CiAgICAgZWxzZSBpZiAoIW1fb3B0aW9ucyAmJiBlcXVhbElnbm9y
aW5nQ2FzZShuYW1lLCBvcHRpb25zKSkKICAgICAgICAgbV9vcHRpb25zID0gYWRvcHRQdHIobmV3
IENTUE9wdGlvbnModmFsdWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGVudFNlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5oCmluZGV4IDUyMjNlODJjZDE3MzNhNzcyYzNlZmE3NzQ5ZDRhY2IxZTk3M2Jh
ZWEuLmFjOTYzNjc0ZWM5NmM5YTkwOGFiMmZjMmNlYTMwNWQ3YjRiOTMwMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaApAQCAtNjYsMTIgKzY2LDE2IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wgcGFy
c2VEaXJlY3RpdmUoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhciogZW5kLCBTdHJpbmcm
IG5hbWUsIFN0cmluZyYgdmFsdWUpOworICAgIHZvaWQgcGFyc2VSZXBvcnRVUkkoY29uc3QgU3Ry
aW5nJik7CiAgICAgdm9pZCBhZGREaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKIAotICAgIHZvaWQgcmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYg
Y29uc29sZU1lc3NhZ2UpIGNvbnN0OworICAgIFBhc3NPd25QdHI8Q1NQRGlyZWN0aXZlPiBjcmVh
dGVDU1BEaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsK
KworICAgIHZvaWQgcmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwg
Y29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSkgY29uc3Q7CiAKICAgICBib29sIG1faGF2ZVBv
bGljeTsKICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKwogICAgIE93blB0cjxDU1BEaXJlY3Rp
dmU+IG1fc2NyaXB0U3JjOwogICAgIE93blB0cjxDU1BEaXJlY3RpdmU+IG1fb2JqZWN0U3JjOwog
ICAgIE93blB0cjxDU1BEaXJlY3RpdmU+IG1fZnJhbWVTcmM7CkBAIC04MCw2ICs4NCw4IEBAIHBy
aXZhdGU6CiAgICAgT3duUHRyPENTUERpcmVjdGl2ZT4gbV9mb250U3JjOwogICAgIE93blB0cjxD
U1BEaXJlY3RpdmU+IG1fbWVkaWFTcmM7CiAgICAgT3duUHRyPENTUE9wdGlvbnM+IG1fb3B0aW9u
czsKKworICAgIFZlY3RvcjxLVVJMPiBtX3JlcG9ydFVSTHM7CiB9OwogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>