<?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>97654</bug_id>
          
          <creation_ts>2012-09-26 03:40:01 -0700</creation_ts>
          <short_desc>XMLHttpRequests blocked by CSP should throw a more descriptive exception.</short_desc>
          <delta_ts>2016-04-12 13:08:41 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=155777</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>97693</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mike West">mkwst</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>bfulgham</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>felipe</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>mjs</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>728387</commentid>
    <comment_count>0</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-26 03:40:01 -0700</bug_when>
    <thetext>The following code throws &quot;SECURITY_ERR DOM Exception 18&quot;. It would be ideal if that exception contained a message with actionable detail, as opposed to being the exact same text that&apos;s used for every other thrown SECURITY_ERR exception.:

  &lt;!doctype html&gt;
  &lt;html&gt;
    &lt;head&gt;
      &lt;title&gt;Bug 152212&lt;/title&gt;
      &lt;meta http-equiv=&quot;X-WebKit-CSP&quot; content=&quot;connect-src &apos;none&apos;&quot;&gt;
    &lt;/head&gt;
    &lt;body&gt;
      &lt;script&gt;
        var xhr = new XMLHttpRequest();
        var url = &apos;https://api.twitter.com/1/trends/daily.json?exclude=hashtags&apos;;
        xhr.open(&apos;GET&apos;, url, true);
        xhr.send();                                                                                                                         
      &lt;/script&gt;
    &lt;/body&gt;
  &lt;/html&gt;

This will involve piping a descriptive error message down into the V8/JSC bindings (V8ThrowException::setDOMException and WebCore::setDOMException respectively), which probably will be done in a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728554</commentid>
    <comment_count>1</comment_count>
      <attachid>165802</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-26 07:55:26 -0700</bug_when>
    <thetext>Created attachment 165802
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728558</commentid>
    <comment_count>2</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-26 07:56:19 -0700</bug_when>
    <thetext>WIP patch that I fully expect to see explode.

I&apos;ll drop a note to webkit-dev@ before proceeding much further, as this is the tip of an iceburg. :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728560</commentid>
    <comment_count>3</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-26 07:58:25 -0700</bug_when>
    <thetext>Hey Jochen, before I get too far along with this, can you suggest someone who can evaluate the approach? The goal is to improve the messaging for a laaaarge number of DOM exceptions, and (assuming webkit-dev doesn&apos;t reject the concept) the series of patches would end up touching some generation scripts, V8/JSC bindings, and probably lots of exception types.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728620</commentid>
    <comment_count>4</comment_count>
      <attachid>165802</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-26 08:54:17 -0700</bug_when>
    <thetext>Comment on attachment 165802
WIP

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

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:72
&gt; +    return V8ThrowException::setDOMException(exceptionCode, exceptionDescription.utf8().data(), isolate);

Is data always NUL terminated?  Usually we need to call a function like &quot;charactersWithNullTermination&quot; to get that.

&gt; Source/WebCore/dom/make_dom_exceptions.pl:119
&gt; +    print F &quot;    const char* context;\n&quot;;

I wonder if this should be a String.  The values above are always constants, which is why they&apos;re const char*s.  For context, it looks like you&apos;re going to generate the string at runtime (e.g., to include a URL).  In that case, we need to make sure that we retain the underlying storage for the string.  That&apos;s what String helps us do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728622</commentid>
    <comment_count>5</comment_count>
      <attachid>165802</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-26 08:56:08 -0700</bug_when>
    <thetext>Comment on attachment 165802
WIP

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

&gt; LayoutTests/http/tests/security/contentSecurityPolicy/connect-src-xmlhttprequest-blocked-expected.txt:4
&gt; +{&quot;message&quot;:&quot;SECURITY_ERR: DOM Exception 18. XMLHttpRequest connections to &apos;http://localhost:8000/xmlhttprequest/resources/get.txt&apos; are blocked due to this page&apos;s Content Security Policy.&quot;,&quot;name&quot;:&quot;SECURITY_ERR&quot;,&quot;code&quot;:18,&quot;stack&quot;:&quot;Error: An attempt was made to break through the security policy of the user agent.\n    at http://127.0.0.1:8000/security/contentSecurityPolicy/connect-src-xmlhttprequest-blocked.html:20:9&quot;}

We need to be careful not to leak security-sensitive information in these error messages.  For example, we&apos;re not allowed to leak where redirects lead.  This example is ok because this URL was supplied by the web page.  However, if the URL was as result of a redirect, we wouldn&apos;t be able to include it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728673</commentid>
    <comment_count>6</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-26 09:38:44 -0700</bug_when>
    <thetext>Thanks, Adam!

(In reply to comment #4)
&gt; (From update of attachment 165802 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165802&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8Binding.cpp:72
&gt; &gt; +    return V8ThrowException::setDOMException(exceptionCode, exceptionDescription.utf8().data(), isolate);
&gt; 
&gt; Is data always NUL terminated?  Usually we need to call a function like &quot;charactersWithNullTermination&quot; to get that.

Almost certainly not. This patch is pretty much at the &quot;OMG it compiled!&quot; stage, so I expect a lot of this sort of cleanup. :)
 
&gt; &gt; Source/WebCore/dom/make_dom_exceptions.pl:119
&gt; &gt; +    print F &quot;    const char* context;\n&quot;;
&gt; 
&gt; I wonder if this should be a String.  The values above are always constants, which is why they&apos;re const char*s.  For context, it looks like you&apos;re going to generate the string at runtime (e.g., to include a URL).  In that case, we need to make sure that we retain the underlying storage for the string.  That&apos;s what String helps us do.

I started with a String, but it stood out like a sore thumb in the V8 bindings, where it looks like we try to get away from String as soon as possible. Doing this sort of work with a String would be simpler, and less error prone. I&apos;d be happy to make that change. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728675</commentid>
    <comment_count>7</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-26 09:39:48 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; We need to be careful not to leak security-sensitive information in these error messages.  For example, we&apos;re not allowed to leak where redirects lead.  This example is ok because this URL was supplied by the web page.  However, if the URL was as result of a redirect, we wouldn&apos;t be able to include it.

Right. I didn&apos;t think about that. As you say, in this particular case it doesn&apos;t matter, but in others it certainly will.

Generally, I&apos;d be fine with generic error messages in security-sensitive areas. I&apos;d just like them to be a bit less generic than they are now. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729364</commentid>
    <comment_count>8</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-27 02:59:52 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 165802 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165802&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8Binding.cpp:72
&gt; &gt; +    return V8ThrowException::setDOMException(exceptionCode, exceptionDescription.utf8().data(), isolate);
&gt; 
&gt; Is data always NUL terminated?  Usually we need to call a function like &quot;charactersWithNullTermination&quot; to get that.

Based on the comments in CString.h, it looks like it is null terminated: http://code.google.com/searchframe#OAMlx_jo-ck/src/third_party/WebKit/Source/WTF/wtf/text/CString.h&amp;exact_package=chromium&amp;q=CString&amp;type=cs&amp;l=36</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729409</commentid>
    <comment_count>9</comment_count>
      <attachid>165972</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-27 04:18:34 -0700</bug_when>
    <thetext>Created attachment 165972
WIP: First pass at JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729561</commentid>
    <comment_count>10</comment_count>
      <attachid>165972</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-27 08:34:22 -0700</bug_when>
    <thetext>Comment on attachment 165972
WIP: First pass at JSC.

Attachment 165972 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14032861

New failing tests:
http/tests/security/contentSecurityPolicy/connect-src-xmlhttprequest-blocked.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729703</commentid>
    <comment_count>11</comment_count>
      <attachid>165972</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-09-27 10:58:12 -0700</bug_when>
    <thetext>Comment on attachment 165972
WIP: First pass at JSC.

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

Just some random notes I had while looking at this patch.

&gt; Source/WebCore/bindings/v8/V8ThrowException.cpp:51
&gt; +v8::Handle&lt;v8::Value&gt; V8ThrowException::setDOMException(int ec, const WTF::String&amp; exceptionContext,  v8::Isolate* isolate)

Two spaces here.

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:614
&gt;      ExceptionCode code;
&gt; +    String errorDescription;

Why are these at the top of the function? It&apos;s not a plain C file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729758</commentid>
    <comment_count>12</comment_count>
      <attachid>166042</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-27 12:03:56 -0700</bug_when>
    <thetext>Created attachment 166042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729761</commentid>
    <comment_count>13</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-27 12:06:27 -0700</bug_when>
    <thetext>Thanks, Alexey and Adam. I&apos;ve addressed the pre-review comments, and fleshed out the JSC side. Would one of you mind taking a closer look when you have a few minutes?

This patch really combines two separate things: plumbing through bindings on the one hand, and the first consumer of the new plumbing on the other. Do you think it&apos;s worth splitting this into two smaller patches?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730832</commentid>
    <comment_count>14</comment_count>
      <attachid>166042</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-28 11:28:12 -0700</bug_when>
    <thetext>Comment on attachment 166042
Patch

After a conversation on IRC with Adam and Maciej, I&apos;m dropping the review flag for the moment. The current suggestion is not to expose the additional context to JavaScript, but to store it on ExceptionBase, and teach the Inspector how to display it.

This give us the best of both worlds: developers get good error messages, and attackers don&apos;t get any additional information than they&apos;re getting already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730920</commentid>
    <comment_count>15</comment_count>
      <attachid>166300</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-28 13:04:14 -0700</bug_when>
    <thetext>Created attachment 166300
WIP: first pass at JSC Inspector-only context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730921</commentid>
    <comment_count>16</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-28 13:05:44 -0700</bug_when>
    <thetext>The JSC side looks pretty trivial, but V8&apos;s going to be a pain.

Maciej, Adam: does the approach in the most recent patch make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731123</commentid>
    <comment_count>17</comment_count>
      <attachid>166300</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-28 18:39:53 -0700</bug_when>
    <thetext>Comment on attachment 166300
WIP: first pass at JSC Inspector-only context.

Attachment 166300 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14078060

New failing tests:
http/tests/security/contentSecurityPolicy/connect-src-xmlhttprequest-blocked.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731219</commentid>
    <comment_count>18</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-09-29 09:17:54 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 166042 [details])
&gt; After a conversation on IRC with Adam and Maciej, I&apos;m dropping the review flag for the moment. The current suggestion is not to expose the additional context to JavaScript, but to store it on ExceptionBase, and teach the Inspector how to display it.
&gt; 
&gt; This give us the best of both worlds: developers get good error messages, and attackers don&apos;t get any additional information than they&apos;re getting already.

Kind of. It&apos;s becoming common practice for web apps to send back JS stacks to the server so they can diagnose errors in the wild. In the same way that better error messages would help in the console, they would help here. Could we instead expose a safe version of the better error message to JS (i.e. don&apos;t include the URL at all)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731225</commentid>
    <comment_count>19</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-09-29 10:29:38 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Kind of. It&apos;s becoming common practice for web apps to send back JS stacks to the server so they can diagnose errors in the wild. In the same way that better error messages would help in the console, they would help here. Could we instead expose a safe version of the better error message to JS (i.e. don&apos;t include the URL at all)?

That&apos;s a good point.

My worry is that we&apos;d end up asking folks to pass in a &quot;safeContext&quot; and &quot;descriptiveContext&quot;. If we did that, I think we&apos;d probably not make much progress. Doing nothing is simpler than carefully considering what should go where; I suspect that&apos;s what many developers would do.

Do you have a suggestion for an implementation that would avoid that sort of issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827709</commentid>
    <comment_count>20</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-07 11:00:46 -0800</bug_when>
    <thetext>Unassigning myself; let&apos;s be realistic about what I&apos;m actually working on. :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183185</commentid>
    <comment_count>21</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-04-12 13:08:20 -0700</bug_when>
    <thetext>I think this is resolved by Bug 155777 and related updates since then.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165802</attachid>
            <date>2012-09-26 07:55:26 -0700</date>
            <delta_ts>2012-09-27 04:18:29 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-97654-20120926165445.patch</filename>
            <type>text/plain</type>
            <size>18222</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTc1ZjdiZjczOGViN2Q3
NDdmMjNlZDA2MmUwOTQzNGQxNzI5MjEwMC4uOGY0OTQ2NDkxNTY4NzQxOWFjNDhlMjI5ZDViOGFi
MTY3ZDVjZTJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA5LTI2ICBNaWtl
IFdlc3QgIDxta3dzdEBnb29nbGUuY29tPgorCisgICAgICAgIFhNTEh0dHBSZXF1ZXN0cyBibG9j
a2VkIGJ5IENTUCBzaG91bGQgdGhyb3cgYSBtb3JlIGRlc2NyaXB0aXZlIGV4Y2VwdGlvbi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NjU0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBp
bmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxl
YXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0RE9NRXhjZXB0aW9uKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhUaHJvd0V4Y2VwdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRocm93RXhjZXB0aW9uOjpzZXRET01FeGNlcHRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4VGhyb3dFeGNlcHRpb24uaDoKKyAgICAgICAgKFY4VGhyb3dFeGNl
cHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4WE1MSHR0cFJlcXVlc3Q6Om9wZW5DYWxsYmFj
ayk6CisgICAgICAgICogZG9tL0V4Y2VwdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXhjZXB0aW9uQmFzZTo6RXhjZXB0aW9uQmFzZSk6CisgICAgICAgICogZG9tL21ha2VfZG9tX2V4
Y2VwdGlvbnMucGw6CisgICAgICAgIChnZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChnZW5lcmF0
ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXBs
YXlYSFIpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYTUxIdHRwUmVxdWVzdDo6b3Blbik6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0
Lmg6CisgICAgICAgIChYTUxIdHRwUmVxdWVzdCk6CisKIDIwMTItMDktMjUgIFBhdHJpY2sgR2Fu
c3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dJTl0gRml4IEFTU0VSVCBp
biBCU3RyaW5nIGFmdGVyIHIxMjg5ODguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmNwcAppbmRleCBkMjJlNzc1MDc1ZDM5MmU3YzQ3YWUyMzI5ZGIwZTcwMzViYjM2ZWYzLi41
MzNkZDdiMDJiNjUxMDQ2ZWIwMzM2ODdjN2RmMmFhY2U4MTc2Nzc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTY0LDcgKzY0LDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNldERPTUV4Y2VwdGlvbihpbnQgZXhj
ZXB0aW9uQ29kZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgcmV0dXJuIFY4VGhyb3dF
eGNlcHRpb246OnNldERPTUV4Y2VwdGlvbihleGNlcHRpb25Db2RlLCBpc29sYXRlKTsKKyAgICBy
ZXR1cm4gVjhUaHJvd0V4Y2VwdGlvbjo6c2V0RE9NRXhjZXB0aW9uKGV4Y2VwdGlvbkNvZGUsIDAs
IGlzb2xhdGUpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc2V0RE9NRXhjZXB0aW9uKGlu
dCBleGNlcHRpb25Db2RlLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbkRlc2NyaXB0aW9uLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICByZXR1cm4gVjhUaHJvd0V4Y2VwdGlvbjo6c2V0RE9N
RXhjZXB0aW9uKGV4Y2VwdGlvbkNvZGUsIGV4Y2VwdGlvbkRlc2NyaXB0aW9uLnV0ZjgoKS5kYXRh
KCksIGlzb2xhdGUpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdGhyb3dFcnJvcihFcnJv
clR5cGUgZXJyb3JUeXBlLCBjb25zdCBjaGFyKiBtZXNzYWdlLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggMGM5ZWU0ZjRjYTE4
YTBjODBjNmUyYjM1YTI3NjcxODQ0NzBmMmViZi4uYWYyYThkOGI5ZDUyNTYzMjJkMGU4NDdhZWVk
ZDZiNTdmZWNhOGIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAg
LTU4LDYgKzU4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIFNjaGVkdWxlIGEgRE9N
IGV4Y2VwdGlvbiB0byBiZSB0aHJvd24sIGlmIHRoZSBleGNlcHRpb24gY29kZSBpcyBkaWZmZXJl
bnQKICAgICAvLyBmcm9tIHplcm8uCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNldERPTUV4
Y2VwdGlvbihpbnQsIHY4OjpJc29sYXRlKik7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNl
dERPTUV4Y2VwdGlvbihpbnQsIGNvbnN0IFN0cmluZyYsIHY4OjpJc29sYXRlKik7CiAKICAgICAv
LyBTY2hlZHVsZSBhIEphdmFTY3JpcHQgZXJyb3IgdG8gYmUgdGhyb3duLgogICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0aHJvd0Vycm9yKEVycm9yVHlwZSwgY29uc3QgY2hhciosIHY4OjpJc29s
YXRlKiA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhUaHJv
d0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFRocm93RXhjZXB0
aW9uLmNwcAppbmRleCBmMGFkYzAxMmY2NGVjMzc2NDY5ZWRlMzRhZWQ5ZmY4OTliYmIxZjc5Li5i
MDAxZWQ0ZDk4OWY0M2Q3YzQyM2E5NjBlNjZkMWVkNGFmZmMzNTU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFRocm93RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFRocm93RXhjZXB0aW9uLmNwcApAQCAtNDgsNyArNDgsNyBA
QCBzdGF0aWMgdm9pZCBkb21FeGNlcHRpb25TdGFja1NldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYQogICAgICAgICBleGNlcHRpb24gPSB0b1Y4KGludGVy
ZmFjZU5hbWU6OmNyZWF0ZShkZXNjcmlwdGlvbiksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwg
aXNvbGF0ZSk7IFwKICAgICAgICAgYnJlYWs7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRo
cm93RXhjZXB0aW9uOjpzZXRET01FeGNlcHRpb24oaW50IGVjLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRocm93RXhjZXB0aW9uOjpzZXRET01FeGNlcHRp
b24oaW50IGVjLCBjb25zdCBjaGFyKiBjb250ZXh0LCAgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7
CiAgICAgaWYgKGVjIDw9IDAgfHwgdjg6OlY4OjpJc0V4ZWN1dGlvblRlcm1pbmF0aW5nKCkpCiAg
ICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwpAQCAtNTYsNyArNTYsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhUaHJvd0V4Y2VwdGlvbjo6c2V0RE9NRXhjZXB0aW9uKGludCBlYywgdjg6
Oklzb2xhdGUqIGlzbwogICAgIGlmIChlYyA9PSBOQVRJVkVfVFlQRV9FUlIpCiAgICAgICAgIHJl
dHVybiBWOFRocm93RXhjZXB0aW9uOjp0aHJvd1R5cGVFcnJvcigwLCBpc29sYXRlKTsKIAotICAg
IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbihlYyk7CisgICAgRXhjZXB0aW9u
Q29kZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKGVjLCBjb250ZXh0KTsKIAogICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBleGNlcHRpb247CiAgICAgc3dpdGNoIChkZXNjcmlwdGlvbi50eXBlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFRocm93RXhjZXB0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFRocm93RXhjZXB0aW9uLmgKaW5kZXgg
NGY1M2QyMjgyMjczOTg4MDI3ZGY1MDFmM2U0NTZhN2E5ZGNlZGI1OC4uYTQ5MmZkNWFjM2UxNWMz
NWI3MTc2YzVmZDIyOWRmNzI1MmE0M2EzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhUaHJvd0V4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4VGhyb3dFeGNlcHRpb24uaApAQCAtMzksNyArMzksNyBAQCBlbnVtIEVycm9yVHlwZSB7
CiAKIGNsYXNzIFY4VGhyb3dFeGNlcHRpb24gewogcHVibGljOgotICAgIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gc2V0RE9NRXhjZXB0aW9uKGludCwgdjg6Oklzb2xhdGUqKTsKKyAgICBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNldERPTUV4Y2VwdGlvbihpbnQsIGNvbnN0IGNo
YXIqLCB2ODo6SXNvbGF0ZSopOwogCiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
aHJvd0Vycm9yKEVycm9yVHlwZSwgY29uc3QgY2hhciosIHY4OjpJc29sYXRlKiA9IDApOwogICAg
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdGhyb3dFcnJvcih2ODo6TG9jYWw8djg6OlZh
bHVlPiwgdjg6Oklzb2xhdGUqID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggODU4
NDU2MGI0YmE4Zjg5MDc4ZTdkNGExZmI2YWNhMjdkN2U0YjcxMy4uZTE3ODc3OTIzYjk2YzUzY2Jk
MjE2ZGQwY2MwOWM3YzdmNDNiZGNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtMTIy
LDYgKzEyMiw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpvcGVu
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBLVVJMIHVybCA9IGNvbnRl
eHQtPmNvbXBsZXRlVVJMKHVybHN0cmluZyk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBTdHJpbmcgZXhjZXB0aW9uRGVzY3JpcHRpb24gPSBTdHJpbmcoKTsKIAogICAgIGlmIChh
cmdzLkxlbmd0aCgpID49IDMpIHsKICAgICAgICAgYm9vbCBhc3luYyA9IGFyZ3NbMl0tPkJvb2xl
YW5WYWx1ZSgpOwpAQCAtMTMxLDE2ICsxMzIsMTYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
WE1MSHR0cFJlcXVlc3Q6Om9wZW5DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoYXJncy5MZW5ndGgoKSA+PSA1ICYmICFhcmdz
WzRdLT5Jc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nIHBhc3N3ZCA9IHRv
V2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2soYXJnc1s0XSk7Ci0gICAgICAgICAgICAgICAgeG1s
SHR0cFJlcXVlc3QtPm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jLCB1c2VyLCBwYXNzd2QsIGVjKTsK
KyAgICAgICAgICAgICAgICB4bWxIdHRwUmVxdWVzdC0+b3BlbihtZXRob2QsIHVybCwgYXN5bmMs
IHVzZXIsIHBhc3N3ZCwgZWMsIGV4Y2VwdGlvbkRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5vcGVuKG1ldGhvZCwgdXJsLCBh
c3luYywgdXNlciwgZWMpOworICAgICAgICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5vcGVuKG1l
dGhvZCwgdXJsLCBhc3luYywgdXNlciwgZWMsIGV4Y2VwdGlvbkRlc2NyaXB0aW9uKTsKICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICB4bWxIdHRwUmVxdWVzdC0+b3BlbihtZXRob2QsIHVybCwg
YXN5bmMsIGVjKTsKKyAgICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5vcGVuKG1ldGhvZCwgdXJs
LCBhc3luYywgZWMsIGV4Y2VwdGlvbkRlc2NyaXB0aW9uKTsKICAgICB9IGVsc2UKLSAgICAgICAg
eG1sSHR0cFJlcXVlc3QtPm9wZW4obWV0aG9kLCB1cmwsIGVjKTsKKyAgICAgICAgeG1sSHR0cFJl
cXVlc3QtPm9wZW4obWV0aG9kLCB1cmwsIGVjLCBleGNlcHRpb25EZXNjcmlwdGlvbik7CiAKICAg
ICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgZXhjZXB0aW9uRGVz
Y3JpcHRpb24sIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQmFzZS5jcHAKaW5kZXggNDU1MWU4ZGEwYjBl
Y2ViZDQwZGM0NzM4ZTYyZGQ0M2MyNmE5Y2Q3OS4uNzExZTdlYzJkMjg2YjU3NDVlYWUzMmQ4ZjFl
ZmY4YjMyYzk5MzYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25CYXNlLmNwcApAQCAtNDMs
NiArNDMsOSBAQCBFeGNlcHRpb25CYXNlOjpFeGNlcHRpb25CYXNlKGNvbnN0IEV4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCiAgICAgICAgIG1fbWVzc2FnZSA9IFN0cmluZyhk
ZXNjcmlwdGlvbi5uYW1lKSArICI6ICIgKyBkZXNjcmlwdGlvbi50eXBlTmFtZSArICIgRXhjZXB0
aW9uICIgKyBTdHJpbmc6Om51bWJlcihkZXNjcmlwdGlvbi5jb2RlKTsKICAgICBlbHNlCiAgICAg
ICAgIG1fbWVzc2FnZSA9IFN0cmluZyhkZXNjcmlwdGlvbi50eXBlTmFtZSkgKyAiIEV4Y2VwdGlv
biAiICsgU3RyaW5nOjpudW1iZXIoZGVzY3JpcHRpb24uY29kZSk7CisKKyAgICBpZiAoZGVzY3Jp
cHRpb24uY29udGV4dCkKKyAgICAgICAgbV9tZXNzYWdlID0gbV9tZXNzYWdlICsgIi4gIiArIFN0
cmluZyhkZXNjcmlwdGlvbi5jb250ZXh0KTsKIH0KIAogU3RyaW5nIEV4Y2VwdGlvbkJhc2U6OnRv
U3RyaW5nKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2RvbV9l
eGNlcHRpb25zLnBsIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfZG9tX2V4Y2VwdGlvbnMucGwK
aW5kZXggMmFiYTdjZGRhMzQwYjE5NmQ2YzBmOWJjZWM4OGRkNjk1ODY5ZGY1ZS4uY2NkZTRiMWZl
Y2I0NTUxMGZhZTM4NDQwYjhmYjQ4NTVhNGRjOTM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL21ha2VfZG9tX2V4Y2VwdGlvbnMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21h
a2VfZG9tX2V4Y2VwdGlvbnMucGwKQEAgLTk3LDYgKzk3LDggQEAgc3ViIGdlbmVyYXRlSGVhZGVy
KCkKICAgICBwcmludCBGICJcbiI7CiAgICAgcHJpbnQgRiAic3RydWN0IEV4Y2VwdGlvbkNvZGVE
ZXNjcmlwdGlvbiB7XG4iOwogICAgIHByaW50IEYgIiAgICBleHBsaWNpdCBFeGNlcHRpb25Db2Rl
RGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSk7XG4iOworICAgIHByaW50IEYgIiAgICBFeGNlcHRp
b25Db2RlRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSwgY29uc3QgY2hhciogY29udGV4dCk7XG4i
OworICAgIHByaW50IEYgIiAgICB2b2lkIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbkltcGwoRXhj
ZXB0aW9uQ29kZSwgY29uc3QgY2hhciogY29udGV4dCk7XG4iOwogICAgIHByaW50IEYgIlxuIjsK
ICAgICBwcmludCBGICIgICAgLy8gfHR5cGVOYW1lfCBoYXMgc3BhY2VzIGFuZCBpcyBzdWl0YWJs
ZSBmb3IgdXNlIGluIGV4Y2VwdGlvblxuIjsKICAgICBwcmludCBGICIgICAgLy8gZGVzY3JpcHRp
b24gc3RyaW5nczsgbWF4aW11bSBsZW5ndGggaXMgMTAgY2hhcmFjdGVycy5cbiI7CkBAIC0xMTEs
OCArMTEzLDEzIEBAIHN1YiBnZW5lcmF0ZUhlYWRlcigpCiAgICAgcHJpbnQgRiAiICAgIC8vIGV4
Y2VwdGlvbiBzdHJpbmdzLiBJdCBpcyBhIG1vcmUgcmVhZGFibGUgZXhwbGFuYXRpb24gb2YgZXJy
b3IuXG4iOwogICAgIHByaW50IEYgIiAgICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbjtcbiI7CiAg
ICAgcHJpbnQgRiAiXG4iOworICAgIHByaW50IEYgIiAgICAvLyB8Y29udGV4dHwgaXMgYWRkaXRp
b25hbCBjb250ZXh0LCBvcHRpb25hbGx5IHByb3ZpZGVkIHdoZW4gdGhlXG4iOworICAgIHByaW50
IEYgIiAgICAvLyBleGNlcHRpb24gaXMgZ2VuZXJhdGVkLiBJdCB3aWxsIGJlIGFkZGVkIHRvIHRo
ZSBuYW1lIGFuZFxuIjsKKyAgICBwcmludCBGICIgICAgLy8gIGRlc2NyaXB0aW9uIHdoZW4gdGhl
IGV4Y2VwdGlvbiBpcyBwcmVzZW50ZWQgdG8gYSBkZXZlbG9wZXIuXG4iOworICAgIHByaW50IEYg
IiAgICBjb25zdCBjaGFyKiBjb250ZXh0O1xuIjsKKyAgICBwcmludCBGICJcbiI7CiAgICAgcHJp
bnQgRiAiICAgIC8vIHxjb2RlfCBpcyB0aGUgbnVtZXJpYyB2YWx1ZSBvZiB0aGUgZXhjZXB0aW9u
IHdpdGhpbiBhIHBhcnRpY3VsYXIgdHlwZS5cbiI7Ci0gICAgcHJpbnQgRiAiICAgIGludCBjb2Rl
OyBcbiI7CisgICAgcHJpbnQgRiAiICAgIGludCBjb2RlO1xuIjsKICAgICBwcmludCBGICJcbiI7
CiAgICAgcHJpbnQgRiAiICAgIEV4Y2VwdGlvblR5cGUgdHlwZTtcbiI7CiAgICAgcHJpbnQgRiAi
fTtcbiI7CkBAIC0xNTYsNyArMTYzLDIxIEBAIHN1YiBnZW5lcmF0ZUltcGxlbWVudGF0aW9uKCkK
ICAgICBwcmludCBGICJcbiI7CiAgICAgcHJpbnQgRiAiRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9u
OjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSBlYylcbiI7CiAgICAgcHJp
bnQgRiAie1xuIjsKKyAgICBwcmludCBGICIgICAgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uSW1w
bChlYywgMCk7XG4iOworICAgIHByaW50IEYgIn1cbiI7CisgICAgcHJpbnQgRiAiXG4iOworICAg
IHByaW50IEYgIkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbjo6RXhjZXB0aW9uQ29kZURlc2NyaXB0
aW9uKEV4Y2VwdGlvbkNvZGUgZWMsIGNvbnN0IGNoYXIqIGNvbnRleHQpXG4iOworICAgIHByaW50
IEYgIntcbiI7CisgICAgcHJpbnQgRiAiICAgIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbkltcGwo
ZWMsIGNvbnRleHQpO1xuIjsKKyAgICBwcmludCBGICJ9XG4iOworICAgIHByaW50IEYgIlxuIjsK
KyAgICBwcmludCBGICJ2b2lkIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbjo6RXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uSW1wbChFeGNlcHRpb25Db2RlIGVjLCBjb25zdCBjaGFyKiBjb250ZXh0KVxu
IjsKKyAgICBwcmludCBGICJ7XG4iOwogICAgIHByaW50IEYgIiAgICBBU1NFUlQoZWMpO1xuIjsK
KyAgICBwcmludCBGICJcbiI7CisgICAgcHJpbnQgRiAiICAgIGlmIChjb250ZXh0KVxuIjsKKyAg
ICBwcmludCBGICIgICAgICAgIHRoaXMtPmNvbnRleHQgPSBjb250ZXh0O1xuIjsKKyAgICBwcmlu
dCBGICJcbiI7CiAKICAgICBmb3IgbXkgJGV4Y2VwdGlvblR5cGUgKHNvcnQga2V5cyAlcGFyc2Vk
SXRlbXMpIHsKICAgICAgICAgIyBET01Db3JlRXhjZXB0aW9uIG5lZWRzIHRvIGJlIGxhc3QgYmVj
YXVzZSBpdCdzIGEgY2F0Y2gtYWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDdkZWZiMzU5NWRjYjFhZGE5MjUyYTdl
YjYyMDgzNDU2NjU4YWI0YzQuLjkxYTNhYmZhYTY0OTIwMjgyMGIwOTJjNTdkMzExZTQ5MmUwNGIx
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5jcHAKQEAgLTYxMSw2ICs2MTEsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OnJlcGxheVhIUihFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKQogewog
ICAgIFJlZlB0cjxYTUxIdHRwUmVxdWVzdD4geGhyID0gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZSht
X3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkpOwogICAgIEV4Y2VwdGlvbkNvZGUg
Y29kZTsKKyAgICBTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbjsKICAgICBTdHJpbmcgYWN0dWFsUmVx
dWVzdElkID0gcmVxdWVzdElkOwogCiAgICAgWEhSUmVwbGF5RGF0YSogeGhyUmVwbGF5RGF0YSA9
IG1fcmVzb3VyY2VzRGF0YS0+eGhyUmVwbGF5RGF0YShyZXF1ZXN0SWQpOwpAQCAtNjIxLDcgKzYy
Miw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVwbGF5WEhSKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCiAgICAgaWYgKGNhY2hlZFJlc291cmNlKQogICAg
ICAgICBtZW1vcnlDYWNoZSgpLT5yZW1vdmUoY2FjaGVkUmVzb3VyY2UpOwogCi0gICAgeGhyLT5v
cGVuKHhoclJlcGxheURhdGEtPm1ldGhvZCgpLCB4aHJSZXBsYXlEYXRhLT51cmwoKSwgeGhyUmVw
bGF5RGF0YS0+YXN5bmMoKSwgY29kZSk7CisgICAgeGhyLT5vcGVuKHhoclJlcGxheURhdGEtPm1l
dGhvZCgpLCB4aHJSZXBsYXlEYXRhLT51cmwoKSwgeGhyUmVwbGF5RGF0YS0+YXN5bmMoKSwgY29k
ZSwgZXJyb3JEZXNjcmlwdGlvbik7CiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0geGhyUmVwbGF5RGF0YS0+aGVhZGVycygpLmVuZCgpOwogICAgIGZvciAoSFRUUEhlYWRl
ck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSB4aHJSZXBsYXlEYXRhLT5oZWFkZXJzKCkuYmVnaW4o
KTsgaXQhPSBlbmQ7ICsraXQpCiAgICAgICAgIHhoci0+c2V0UmVxdWVzdEhlYWRlcihpdC0+Zmly
c3QsIGl0LT5zZWNvbmQsIGNvZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
aW5kZXggMDk3YmM0NDI3ZjBkMGM0YzY1MTIwYTNiNzlhYWZiZmRiMzRmNDRjOC4uM2FiZTEzYTMw
MGNlNzMzNmY3YmZiMGVjZDc1ZmNiNDQ0NWE2M2JkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCkBAIC00NDQsMTIgKzQ0NCwxMiBAQCBib29sIFhNTEh0dHBSZXF1ZXN0Ojpp
c0FsbG93ZWRIVFRQSGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgJiYgIW5hbWUu
c3RhcnRzV2l0aChzdGF0aWNEYXRhLT5tX3NlY0hlYWRlclByZWZpeCwgZmFsc2UpOwogfQogCi12
b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJM
JiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25z
dCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYywgU3Ry
aW5nJiBleGNlcHRpb25EZXNjcmlwdGlvbikKIHsKLSAgICBvcGVuKG1ldGhvZCwgdXJsLCB0cnVl
LCBlYyk7CisgICAgb3BlbihtZXRob2QsIHVybCwgdHJ1ZSwgZWMsIGV4Y2VwdGlvbkRlc2NyaXB0
aW9uKTsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhv
ZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQg
WE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVy
bCwgYm9vbCBhc3luYywgRXhjZXB0aW9uQ29kZSYgZWMsIFN0cmluZyYgZXhjZXB0aW9uRGVzY3Jp
cHRpb24pCiB7CiAgICAgaW50ZXJuYWxBYm9ydCgpOwogICAgIFN0YXRlIHByZXZpb3VzU3RhdGUg
PSBtX3N0YXRlOwpAQCAtNDc2LDYgKzQ3Niw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4o
Y29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgRXhjCiAg
ICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgp
LT5hbGxvd0Nvbm5lY3RUb1NvdXJjZSh1cmwpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQg
dGhpcyBiZSB0aHJvd2luZyBhbiBleGNlcHRpb24/CiAgICAgICAgIGVjID0gU0VDVVJJVFlfRVJS
OworICAgICAgICBleGNlcHRpb25EZXNjcmlwdGlvbiA9ICJYTUxIdHRwUmVxdWVzdCBjb25uZWN0
aW9ucyB0byAnIiArIHVybC5zdHJpbmcoKSArICInIGFyZSBibG9ja2VkIGR1ZSB0byB0aGlzIHBh
Z2UncyBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4iOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC01MTMsMjEgKzUxNCwyMSBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0
cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIEV4YwogICAgICAgICBt
X3N0YXRlID0gT1BFTkVEOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0
cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYg
dXNlciwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0
IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmlu
ZyYgdXNlciwgRXhjZXB0aW9uQ29kZSYgZWMsIFN0cmluZyYgZXhjZXB0aW9uRGVzY3JpcHRpb24p
CiB7CiAgICAgS1VSTCB1cmxXaXRoQ3JlZGVudGlhbHModXJsKTsKICAgICB1cmxXaXRoQ3JlZGVu
dGlhbHMuc2V0VXNlcih1c2VyKTsKIAotICAgIG9wZW4obWV0aG9kLCB1cmxXaXRoQ3JlZGVudGlh
bHMsIGFzeW5jLCBlYyk7CisgICAgb3BlbihtZXRob2QsIHVybFdpdGhDcmVkZW50aWFscywgYXN5
bmMsIGVjLCBleGNlcHRpb25EZXNjcmlwdGlvbik7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6
Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywg
Y29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNv
bnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgY29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJp
bmcmIHBhc3N3b3JkLCBFeGNlcHRpb25Db2RlJiBlYywgU3RyaW5nJiBleGNlcHRpb25EZXNjcmlw
dGlvbikKIHsKICAgICBLVVJMIHVybFdpdGhDcmVkZW50aWFscyh1cmwpOwogICAgIHVybFdpdGhD
cmVkZW50aWFscy5zZXRVc2VyKHVzZXIpOwogICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNz
KHBhc3N3b3JkKTsKIAotICAgIG9wZW4obWV0aG9kLCB1cmxXaXRoQ3JlZGVudGlhbHMsIGFzeW5j
LCBlYyk7CisgICAgb3BlbihtZXRob2QsIHVybFdpdGhDcmVkZW50aWFscywgYXN5bmMsIGVjLCBl
eGNlcHRpb25EZXNjcmlwdGlvbik7CiB9CiAKIGJvb2wgWE1MSHR0cFJlcXVlc3Q6OmluaXRTZW5k
KEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCBj
YzZjYmM1MGMzNjAxNjUwODllMjY1OTk3NWNkMTBkMzExMjJlZjVkLi41MDYzOWRkOWIxMDQwNzY3
NDU4MjhkMGJjMThiMGE0NTRiYTVjNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
aApAQCAtODMsMTAgKzgzLDEwIEBAIHB1YmxpYzoKICAgICBTdGF0ZSByZWFkeVN0YXRlKCkgY29u
c3Q7CiAgICAgYm9vbCB3aXRoQ3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBtX2luY2x1ZGVD
cmVkZW50aWFsczsgfQogICAgIHZvaWQgc2V0V2l0aENyZWRlbnRpYWxzKGJvb2wsIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwm
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBj
b25zdCBLVVJMJiwgYm9vbCBhc3luYywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgb3Blbihj
b25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmlu
ZyYgdXNlciwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG1l
dGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwgY29uc3Qg
U3RyaW5nJiBwYXNzd29yZCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgb3Blbihjb25zdCBT
dHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYsIEV4Y2VwdGlvbkNvZGUmLCBTdHJpbmcmIGV4Y2Vw
dGlvbkRlc2NyaXB0aW9uKTsKKyAgICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNv
bnN0IEtVUkwmLCBib29sIGFzeW5jLCBFeGNlcHRpb25Db2RlJiwgU3RyaW5nJiBleGNlcHRpb25E
ZXNjcmlwdGlvbik7CisgICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBL
VVJMJiwgYm9vbCBhc3luYywgY29uc3QgU3RyaW5nJiB1c2VyLCBFeGNlcHRpb25Db2RlJiwgU3Ry
aW5nJiBleGNlcHRpb25EZXNjcmlwdGlvbik7CisgICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYg
bWV0aG9kLCBjb25zdCBLVVJMJiwgYm9vbCBhc3luYywgY29uc3QgU3RyaW5nJiB1c2VyLCBjb25z
dCBTdHJpbmcmIHBhc3N3b3JkLCBFeGNlcHRpb25Db2RlJiwgU3RyaW5nJiBleGNlcHRpb25EZXNj
cmlwdGlvbik7CiAgICAgdm9pZCBzZW5kKEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNlbmQo
RG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZW5kKGNvbnN0IFN0cmluZyYs
IEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxOGIzMWJjZTRkZmNkMWRkM2IxMjY3MTVjODE0MTdk
NWYzYjg5Y2FmLi5lMGQ4NTFmNTg2MmU4MzVlMjk5YTY5OTg3YzZmNWJkNmM5ZjA2ODAwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMjYgIE1pa2UgV2VzdCAgPG1rd3N0QGdvb2dsZS5j
b20+CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3RzIGJsb2NrZWQgYnkgQ1NQIHNob3VsZCB0aHJv
dyBhIG1vcmUgZGVzY3JpcHRpdmUgZXhjZXB0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc2NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFu
Z2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBk
ZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJsb2Nr
ZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJsb2NrZWQuaHRtbDoKKwog
MjAxMi0wOS0yNiAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFwaGFlbC5rdWJvLmRhLmNvc3Rh
QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBVbnNraXAgcGFzc2luZyB0ZXN0IGFmdGVyIHIx
Mjk1OTIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9jb25uZWN0LXNyYy14bWxodHRwcmVxdWVzdC1ibG9ja2VkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJsb2NrZWQtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDE0ZDI4NGMxZjg2N2M2YzUzODEwNmRiNWJhOWZkYWQ3ZTc1OWVhOGMuLjcyOGRjYWVkNjg1
YjA1YjFjZjhkMzAwNzhiNzFmZmQyMzU5MTM1Y2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0
dHByZXF1ZXN0LWJsb2NrZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1
ZXN0LWJsb2NrZWQtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNSBAQAogQ09OU09MRSBNRVNTQUdF
OiBSZWZ1c2VkIHRvIGNvbm5lY3QgdG8gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVx
dWVzdC9yZXNvdXJjZXMvZ2V0LnR4dCcgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5n
IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogImNvbm5lY3Qtc3JjIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMCIuCiAKIFBhc3MKK3sibWVzc2FnZSI6IlNFQ1VSSVRZX0VSUjogRE9NIEV4
Y2VwdGlvbiAxOC4gWE1MSHR0cFJlcXVlc3QgY29ubmVjdGlvbnMgdG8gJ2h0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZ2V0LnR4dCcgYXJlIGJsb2NrZWQgZHVl
IHRvIHRoaXMgcGFnZSdzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LiIsIm5hbWUiOiJTRUNVUklU
WV9FUlIiLCJjb2RlIjoxOCwic3RhY2siOiJFcnJvcjogQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBi
cmVhayB0aHJvdWdoIHRoZSBzZWN1cml0eSBwb2xpY3kgb2YgdGhlIHVzZXIgYWdlbnQuXG4gICAg
YXQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9j
b25uZWN0LXNyYy14bWxodHRwcmVxdWVzdC1ibG9ja2VkLmh0bWw6MjA6OSJ9CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJsb2NrZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0
dHByZXF1ZXN0LWJsb2NrZWQuaHRtbAppbmRleCAzZTlkMTJmMzJlODRjNDY5NzQ2NzMzODcxY2Q5
MzZhZWViNzc2ZjI1Li5jZDU4OWQyNzIwZDY5MWZiNzRiZGI3OTIwZTBkMTNiNWEyZDY3MGViIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS9jb25uZWN0LXNyYy14bWxodHRwcmVxdWVzdC1ibG9ja2VkLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvY29ubmVj
dC1zcmMteG1saHR0cHJlcXVlc3QtYmxvY2tlZC5odG1sCkBAIC0yMSw2ICsyMSw3IEBAIHRyeSB7
CiAgICAgbG9nKCJGYWlsIik7CiB9IGNhdGNoKGUpIHsKICAgICBsb2coIlBhc3MiKTsKKyAgICBs
b2coSlNPTi5zdHJpbmdpZnkoZSkpOwogfQogCiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165972</attachid>
            <date>2012-09-27 04:18:34 -0700</date>
            <delta_ts>2012-09-27 12:03:50 -0700</delta_ts>
            <desc>WIP: First pass at JSC.</desc>
            <filename>bug-97654-20120927131751.patch</filename>
            <type>text/plain</type>
            <size>22479</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg5NDZlZDQxOGQ4NDg1
YzYzYjcwZDQyNTdlYjgxZTA1YzNhMjAzOC4uYWYyMDQ1N2RiNDNiOWQ1OWMxZDU4NmYzYmIzN2Uw
MDNkYjUzODRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA5LTI3ICBNaWtl
IFdlc3QgIDxta3dzdEBnb29nbGUuY29tPgorCisgICAgICAgIFhNTEh0dHBSZXF1ZXN0cyBibG9j
a2VkIGJ5IENTUCBzaG91bGQgdGhyb3cgYSBtb3JlIGRlc2NyaXB0aXZlIGV4Y2VwdGlvbi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NjU0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBp
bmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxl
YXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0RE9NRXhjZXB0aW9uKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhUaHJvd0V4Y2VwdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRocm93RXhjZXB0aW9uOjpzZXRET01FeGNlcHRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4VGhyb3dFeGNlcHRpb24uaDoKKyAgICAgICAgKFY4VGhyb3dFeGNl
cHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4WE1MSHR0cFJlcXVlc3Q6Om9wZW5DYWxsYmFj
ayk6CisgICAgICAgICogZG9tL0V4Y2VwdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXhjZXB0aW9uQmFzZTo6RXhjZXB0aW9uQmFzZSk6CisgICAgICAgICogZG9tL21ha2VfZG9tX2V4
Y2VwdGlvbnMucGw6CisgICAgICAgIChnZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChnZW5lcmF0
ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXBs
YXlYSFIpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYTUxIdHRwUmVxdWVzdDo6b3Blbik6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0
Lmg6CisgICAgICAgIChYTUxIdHRwUmVxdWVzdCk6CisKIDIwMTItMDktMjcgIENocmlzdG9waGUg
RHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBObyB3
YXkgdG8gZXhpdCB2aWRlbyBmdWxsc2NyZWVuIG1vZGUgb25jZSBlbnRlcmVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCBmZTA4NGVhNGRmYjQwMjI1
NjdkMTc2NGM2ODNkN2ZjN2Y4NTkzZmZlLi4wODVhNWVhODliMzE1NjNhYzgyODA4ZTc3YTY5YWJh
ZmM3ZTVmMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAKQEAgLTE4MSw2ICsxODEsMTEgQEAgdm9pZCByZXBvcnRDdXJyZW50RXhjZXB0aW9uKEV4ZWNT
dGF0ZSogZXhlYykKIAogdm9pZCBzZXRET01FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNl
cHRpb25Db2RlIGVjKQogeworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYywgU3RyaW5nKCkp
OworfQorCit2b2lkIHNldERPTUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2VwdGlvbkNv
ZGUgZWMsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9uQ29udGV4dCkKK3sKICAgICBpZiAoIWVjIHx8
IGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE5NCw3ICsxOTks
NyBAQCB2b2lkIHNldERPTUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2VwdGlvbkNvZGUg
ZWMpCiAgICAgLy8gZnJhbWVzWzBdLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobnVsbCwgbnVsbCk7
IC8vIHRocm93cyBhbiBleGNlcHRpb24gd2hpY2ggc2hvdWxkIGhhdmUgdGhlIHN1YmZyYW1lcyBw
cm90b3R5cGVzLgogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBkZXByZWNh
dGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKGV4ZWMpOwogCi0gICAgRXhjZXB0aW9uQ29kZURl
c2NyaXB0aW9uIGRlc2NyaXB0aW9uKGVjKTsKKyAgICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24g
ZGVzY3JpcHRpb24oZWMsIGV4Y2VwdGlvbkNvbnRleHQpOwogCiAgICAgSlNWYWx1ZSBlcnJvck9i
amVjdDsKICAgICBzd2l0Y2ggKGRlc2NyaXB0aW9uLnR5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggNzUzMmI3OTNlNzI4ZDBkOGJjMWFlMmQ1YzNl
MmExMmU5MDk3MTM5MC4uMWI3YTcxZDA0MjJkYjk4ODBmYWMxM2UwMjA4ZmZjMjMxN2FlNDgyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTIzMiw2ICsy
MzIsNyBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogCiAgICAgLy8gQ29udmVydCBh
IERPTSBpbXBsZW1lbnRhdGlvbiBleGNlcHRpb24gY29kZSBpbnRvIGEgSmF2YVNjcmlwdCBleGNl
cHRpb24gaW4gdGhlIGV4ZWN1dGlvbiBzdGF0ZS4KICAgICB2b2lkIHNldERPTUV4Y2VwdGlvbihK
U0M6OkV4ZWNTdGF0ZSosIEV4Y2VwdGlvbkNvZGUpOworICAgIHZvaWQgc2V0RE9NRXhjZXB0aW9u
KEpTQzo6RXhlY1N0YXRlKiwgRXhjZXB0aW9uQ29kZSwgY29uc3QgU3RyaW5nJik7CiAKICAgICBK
U0M6OkpTVmFsdWUganNTdHJpbmdXaXRoQ2FjaGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJp
bmcmKTsKICAgICBKU0M6OkpTVmFsdWUganNTdHJpbmdXaXRoQ2FjaGVTbG93Q2FzZShKU0M6OkV4
ZWNTdGF0ZSosIEpTU3RyaW5nQ2FjaGUmLCBTdHJpbmdJbXBsKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IDkw
YmQ0OGI3ZjU2N2IyNjUzODhhMDJjYTVlNzg4YTY4NmU0ZTM0NzguLmZjNGMyNjAyZGFjMzE0NWIy
MmIwYmM0NTg4Mjg4ZWUxYjZmYzZkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCkBAIC04OCw2ICs4OCw3IEBAIEpT
VmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6b3BlbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgU3RyaW5n
IG1ldGhvZCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
IAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFN0cmluZyBleGNlcHRpb25Db250ZXh0
OwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMykgewogICAgICAgICBib29sIGFz
eW5jID0gZXhlYy0+YXJndW1lbnQoMikudG9Cb29sZWFuKGV4ZWMpOwogCkBAIC05NiwxNSArOTcs
MTUgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYykKIAog
ICAgICAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSA1ICYmICFleGVjLT5hcmd1
bWVudCg0KS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nIHBhc3N3b3Jk
ID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soZXhlYywgZXhlYy0+YXJndW1lbnQoNCkpOwot
ICAgICAgICAgICAgICAgIGltcGwoKS0+b3BlbihtZXRob2QsIHVybCwgYXN5bmMsIHVzZXIsIHBh
c3N3b3JkLCBlYyk7CisgICAgICAgICAgICAgICAgaW1wbCgpLT5vcGVuKG1ldGhvZCwgdXJsLCBh
c3luYywgdXNlciwgcGFzc3dvcmQsIGVjLCBleGNlcHRpb25Db250ZXh0KTsKICAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgIGltcGwoKS0+b3BlbihtZXRob2QsIHVybCwgYXN5bmMs
IHVzZXIsIGVjKTsKKyAgICAgICAgICAgICAgICBpbXBsKCktPm9wZW4obWV0aG9kLCB1cmwsIGFz
eW5jLCB1c2VyLCBlYywgZXhjZXB0aW9uQ29udGV4dCk7CiAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgaW1wbCgpLT5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgZWMpOworICAgICAgICAgICAg
aW1wbCgpLT5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgZWMsIGV4Y2VwdGlvbkNvbnRleHQpOwog
ICAgIH0gZWxzZQotICAgICAgICBpbXBsKCktPm9wZW4obWV0aG9kLCB1cmwsIGVjKTsKKyAgICAg
ICAgaW1wbCgpLT5vcGVuKG1ldGhvZCwgdXJsLCBlYywgZXhjZXB0aW9uQ29udGV4dCk7CiAKLSAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBl
YywgZXhjZXB0aW9uQ29udGV4dCk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IGQyMmU3NzUwNzVkMzky
ZTdjNDdhZTIzMjlkYjBlNzAzNWJiMzZlZjMuLjM1NzQ0ZWZlYTg0MjNjMDAxY2Y1ODkwYmJlNTRl
ZTk0ZDNhYWRkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Qmlu
ZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApA
QCAtNjQsNyArNjQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gc2V0RE9NRXhjZXB0aW9uKGludCBleGNlcHRpb25Db2RlLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKIHsKLSAgICByZXR1cm4gVjhUaHJvd0V4Y2VwdGlvbjo6c2V0RE9NRXhjZXB0aW9uKGV4
Y2VwdGlvbkNvZGUsIGlzb2xhdGUpOworICAgIHJldHVybiBWOFRocm93RXhjZXB0aW9uOjpzZXRE
T01FeGNlcHRpb24oZXhjZXB0aW9uQ29kZSwgU3RyaW5nKCksIGlzb2xhdGUpOworfQorCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gc2V0RE9NRXhjZXB0aW9uKGludCBleGNlcHRpb25Db2RlLCBjb25z
dCBTdHJpbmcmIGV4Y2VwdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAg
IHJldHVybiBWOFRocm93RXhjZXB0aW9uOjpzZXRET01FeGNlcHRpb24oZXhjZXB0aW9uQ29kZSwg
ZXhjZXB0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
aHJvd0Vycm9yKEVycm9yVHlwZSBlcnJvclR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRl
eCAwYzllZTRmNGNhMThhMGM4MGM2ZTJiMzVhMjc2NzE4NDQ3MGYyZWJmLi5hZjJhOGQ4YjlkNTI1
NjMyMmQwZTg0N2FlZWRkNmI1N2ZlY2E4YjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmcuaApAQCAtNTgsNiArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8g
U2NoZWR1bGUgYSBET00gZXhjZXB0aW9uIHRvIGJlIHRocm93biwgaWYgdGhlIGV4Y2VwdGlvbiBj
b2RlIGlzIGRpZmZlcmVudAogICAgIC8vIGZyb20gemVyby4KICAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gc2V0RE9NRXhjZXB0aW9uKGludCwgdjg6Oklzb2xhdGUqKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gc2V0RE9NRXhjZXB0aW9uKGludCwgY29uc3QgU3RyaW5nJiwgdjg6Oklzb2xh
dGUqKTsKIAogICAgIC8vIFNjaGVkdWxlIGEgSmF2YVNjcmlwdCBlcnJvciB0byBiZSB0aHJvd24u
CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRocm93RXJyb3IoRXJyb3JUeXBlLCBjb25zdCBj
aGFyKiwgdjg6Oklzb2xhdGUqID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFRocm93RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4VGhyb3dFeGNlcHRpb24uY3BwCmluZGV4IGYwYWRjMDEyZjY0ZWMzNzY0NjllZGUzNGFlZDlm
Zjg5OWJiYjFmNzkuLjY1NzlkNzBkNjg2ZDQ5YWMwMDhkMjhhNzRmMTRjZDIyODMwNjFhOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VGhyb3dFeGNlcHRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VGhyb3dFeGNlcHRpb24uY3BwCkBA
IC00OCw3ICs0OCw3IEBAIHN0YXRpYyB2b2lkIGRvbUV4Y2VwdGlvblN0YWNrU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhCiAgICAgICAgIGV4Y2VwdGlv
biA9IHRvVjgoaW50ZXJmYWNlTmFtZTo6Y3JlYXRlKGRlc2NyaXB0aW9uKSwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PigpLCBpc29sYXRlKTsgXAogICAgICAgICBicmVhazsKIAotdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4VGhyb3dFeGNlcHRpb246OnNldERPTUV4Y2VwdGlvbihpbnQgZWMsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGhyb3dFeGNlcHRpb246
OnNldERPTUV4Y2VwdGlvbihpbnQgZWMsIGNvbnN0IFdURjo6U3RyaW5nJiBleGNlcHRpb25Db250
ZXh0LCAgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgaWYgKGVjIDw9IDAgfHwgdjg6OlY4
OjpJc0V4ZWN1dGlvblRlcm1pbmF0aW5nKCkpCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgp
OwpAQCAtNTYsNyArNTYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUaHJvd0V4Y2VwdGlv
bjo6c2V0RE9NRXhjZXB0aW9uKGludCBlYywgdjg6Oklzb2xhdGUqIGlzbwogICAgIGlmIChlYyA9
PSBOQVRJVkVfVFlQRV9FUlIpCiAgICAgICAgIHJldHVybiBWOFRocm93RXhjZXB0aW9uOjp0aHJv
d1R5cGVFcnJvcigwLCBpc29sYXRlKTsKIAotICAgIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBk
ZXNjcmlwdGlvbihlYyk7CisgICAgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9u
KGVjLCBleGNlcHRpb25Db250ZXh0KTsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBleGNl
cHRpb247CiAgICAgc3dpdGNoIChkZXNjcmlwdGlvbi50eXBlKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFRocm93RXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFRocm93RXhjZXB0aW9uLmgKaW5kZXggNGY1M2QyMjgyMjczOTg4MDI3
ZGY1MDFmM2U0NTZhN2E5ZGNlZGI1OC4uNzA0MjNkYjY5YzAxNGE1YTNhYmI1NjU0NGQxYjJkMjVm
ZGNkMGNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhUaHJvd0V4
Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VGhyb3dFeGNlcHRp
b24uaApAQCAtMjcsOCArMjcsMTMgQEAKIAogI2luY2x1ZGUgPHY4Lmg+CiAKK25hbWVzcGFjZSBX
VEYgeworY2xhc3MgU3RyaW5nOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKwogZW51bSBF
cnJvclR5cGUgewogICAgIFJhbmdlRXJyb3IsCiAgICAgUmVmZXJlbmNlRXJyb3IsCkBAIC0zOSw3
ICs0NCw3IEBAIGVudW0gRXJyb3JUeXBlIHsKIAogY2xhc3MgVjhUaHJvd0V4Y2VwdGlvbiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzZXRET01FeGNlcHRpb24o
aW50LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc2V0
RE9NRXhjZXB0aW9uKGludCwgY29uc3QgV1RGOjpTdHJpbmcmLCB2ODo6SXNvbGF0ZSopOwogCiAg
ICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0aHJvd0Vycm9yKEVycm9yVHlwZSwgY29u
c3QgY2hhciosIHY4OjpJc29sYXRlKiA9IDApOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdGhyb3dFcnJvcih2ODo6TG9jYWw8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqID0gMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRw
UmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhY
TUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggODU4NDU2MGI0YmE4Zjg5MDc4ZTdkNGExZmI2
YWNhMjdkN2U0YjcxMy4uZTcwNWFlMmI1MDVmYjg3NjE5NTFhOTE3ZTEzMWQ1ODliNTAwOWUyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJl
cXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtMTIyLDI1ICsxMjIsMjYgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6Om9wZW5DYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogICAgIEtVUkwgdXJsID0gY29udGV4dC0+Y29tcGxldGVVUkwodXJsc3Ry
aW5nKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFN0cmluZyBleGNlcHRpb25D
b250ZXh0ID0gU3RyaW5nKCk7CiAKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+PSAzKSB7CiAgICAg
ICAgIGJvb2wgYXN5bmMgPSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUoKTsKIAogICAgICAgICBpZiAo
YXJncy5MZW5ndGgoKSA+PSA0ICYmICFhcmdzWzNdLT5Jc1VuZGVmaW5lZCgpKSB7CiAgICAgICAg
ICAgICBTdHJpbmcgdXNlciA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2soYXJnc1szXSk7
Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPj0gNSAmJiAh
YXJnc1s0XS0+SXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAgICAgIFN0cmluZyBwYXNzd2Qg
PSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKGFyZ3NbNF0pOwotICAgICAgICAgICAgICAg
IHhtbEh0dHBSZXF1ZXN0LT5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgcGFzc3dkLCBl
Yyk7CisgICAgICAgICAgICAgICAgeG1sSHR0cFJlcXVlc3QtPm9wZW4obWV0aG9kLCB1cmwsIGFz
eW5jLCB1c2VyLCBwYXNzd2QsIGVjLCBleGNlcHRpb25Db250ZXh0KTsKICAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5vcGVuKG1ldGhvZCwgdXJsLCBh
c3luYywgdXNlciwgZWMpOworICAgICAgICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5vcGVuKG1l
dGhvZCwgdXJsLCBhc3luYywgdXNlciwgZWMsIGV4Y2VwdGlvbkNvbnRleHQpOwogICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5vcGVuKG1ldGhvZCwgdXJsLCBhc3lu
YywgZWMpOworICAgICAgICAgICAgeG1sSHR0cFJlcXVlc3QtPm9wZW4obWV0aG9kLCB1cmwsIGFz
eW5jLCBlYywgZXhjZXB0aW9uQ29udGV4dCk7CiAgICAgfSBlbHNlCi0gICAgICAgIHhtbEh0dHBS
ZXF1ZXN0LT5vcGVuKG1ldGhvZCwgdXJsLCBlYyk7CisgICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5v
cGVuKG1ldGhvZCwgdXJsLCBlYywgZXhjZXB0aW9uQ29udGV4dCk7CiAKICAgICBpZiAoZWMpCi0g
ICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgZXhjZXB0aW9uQ29udGV4dCwgYXJncy5H
ZXRJc29sYXRlKCkpOwogCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25CYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FeGNlcHRpb25CYXNlLmNwcAppbmRleCA0NTUxZThkYTBiMGVjZWJkNDBkYzQ3MzhlNjJk
ZDQzYzI2YTljZDc5Li5iYjk2YTE5NDExZTgyYjExMzAxNjY1ODc4YTY2Yzc1NjA0MjRmNjgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2UuY3BwCkBAIC00Myw2ICs0Myw5IEBAIEV4Y2Vw
dGlvbkJhc2U6OkV4Y2VwdGlvbkJhc2UoY29uc3QgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uJiBk
ZXNjcmlwdGlvbikKICAgICAgICAgbV9tZXNzYWdlID0gU3RyaW5nKGRlc2NyaXB0aW9uLm5hbWUp
ICsgIjogIiArIGRlc2NyaXB0aW9uLnR5cGVOYW1lICsgIiBFeGNlcHRpb24gIiArIFN0cmluZzo6
bnVtYmVyKGRlc2NyaXB0aW9uLmNvZGUpOwogICAgIGVsc2UKICAgICAgICAgbV9tZXNzYWdlID0g
U3RyaW5nKGRlc2NyaXB0aW9uLnR5cGVOYW1lKSArICIgRXhjZXB0aW9uICIgKyBTdHJpbmc6Om51
bWJlcihkZXNjcmlwdGlvbi5jb2RlKTsKKworICAgIGlmICghZGVzY3JpcHRpb24uY29udGV4dC5p
c0VtcHR5KCkpCisgICAgICAgIG1fbWVzc2FnZSA9IG1fbWVzc2FnZSArICIuICIgKyBTdHJpbmco
ZGVzY3JpcHRpb24uY29udGV4dCk7CiB9CiAKIFN0cmluZyBFeGNlcHRpb25CYXNlOjp0b1N0cmlu
ZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9kb21fZXhjZXB0
aW9ucy5wbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2RvbV9leGNlcHRpb25zLnBsCmluZGV4
IDJhYmE3Y2RkYTM0MGIxOTZkNmMwZjliY2VjODhkZDY5NTg2OWRmNWUuLjdlZDcyMmU5OTY1YTJk
Y2Y2ZjZhMDRkNjRhZDgwOGZkMWEwNTJhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9tYWtlX2RvbV9leGNlcHRpb25zLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2Rv
bV9leGNlcHRpb25zLnBsCkBAIC03OSw2ICs3OSw4IEBAIHN1YiBnZW5lcmF0ZUhlYWRlcigpCiAg
ICAgcHJpbnQgRiAiI2lmbmRlZiBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb25faFxuIjsKICAgICBw
cmludCBGICIjZGVmaW5lIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbl9oXG4iOwogICAgIHByaW50
IEYgIlxuIjsKKyAgICBwcmludCBGICIjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+XG4i
OworICAgIHByaW50IEYgIlxuIjsKICAgICBwcmludCBGICJuYW1lc3BhY2UgV2ViQ29yZSB7XG4i
OwogICAgIHByaW50IEYgIlxuIjsKICAgICBwcmludCBGICJ0eXBlZGVmIGludCBFeGNlcHRpb25D
b2RlO1xuIjsKQEAgLTk3LDYgKzk5LDggQEAgc3ViIGdlbmVyYXRlSGVhZGVyKCkKICAgICBwcmlu
dCBGICJcbiI7CiAgICAgcHJpbnQgRiAic3RydWN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiB7
XG4iOwogICAgIHByaW50IEYgIiAgICBleHBsaWNpdCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24o
RXhjZXB0aW9uQ29kZSk7XG4iOworICAgIHByaW50IEYgIiAgICBFeGNlcHRpb25Db2RlRGVzY3Jp
cHRpb24oRXhjZXB0aW9uQ29kZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0KTtcbiI7CisgICAgcHJp
bnQgRiAiICAgIHZvaWQgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uSW1wbChFeGNlcHRpb25Db2Rl
LCBjb25zdCBTdHJpbmcmIGNvbnRleHQpO1xuIjsKICAgICBwcmludCBGICJcbiI7CiAgICAgcHJp
bnQgRiAiICAgIC8vIHx0eXBlTmFtZXwgaGFzIHNwYWNlcyBhbmQgaXMgc3VpdGFibGUgZm9yIHVz
ZSBpbiBleGNlcHRpb25cbiI7CiAgICAgcHJpbnQgRiAiICAgIC8vIGRlc2NyaXB0aW9uIHN0cmlu
Z3M7IG1heGltdW0gbGVuZ3RoIGlzIDEwIGNoYXJhY3RlcnMuXG4iOwpAQCAtMTExLDggKzExNSwx
MyBAQCBzdWIgZ2VuZXJhdGVIZWFkZXIoKQogICAgIHByaW50IEYgIiAgICAvLyBleGNlcHRpb24g
c3RyaW5ncy4gSXQgaXMgYSBtb3JlIHJlYWRhYmxlIGV4cGxhbmF0aW9uIG9mIGVycm9yLlxuIjsK
ICAgICBwcmludCBGICIgICAgY29uc3QgY2hhciogZGVzY3JpcHRpb247XG4iOwogICAgIHByaW50
IEYgIlxuIjsKKyAgICBwcmludCBGICIgICAgLy8gfGNvbnRleHR8IGlzIGFkZGl0aW9uYWwgY29u
dGV4dCwgb3B0aW9uYWxseSBwcm92aWRlZCB3aGVuIHRoZVxuIjsKKyAgICBwcmludCBGICIgICAg
Ly8gZXhjZXB0aW9uIGlzIGdlbmVyYXRlZC4gSXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgbmFtZSBh
bmRcbiI7CisgICAgcHJpbnQgRiAiICAgIC8vICBkZXNjcmlwdGlvbiB3aGVuIHRoZSBleGNlcHRp
b24gaXMgcHJlc2VudGVkIHRvIGEgZGV2ZWxvcGVyLlxuIjsKKyAgICBwcmludCBGICIgICAgU3Ry
aW5nIGNvbnRleHQ7XG4iOworICAgIHByaW50IEYgIlxuIjsKICAgICBwcmludCBGICIgICAgLy8g
fGNvZGV8IGlzIHRoZSBudW1lcmljIHZhbHVlIG9mIHRoZSBleGNlcHRpb24gd2l0aGluIGEgcGFy
dGljdWxhciB0eXBlLlxuIjsKLSAgICBwcmludCBGICIgICAgaW50IGNvZGU7IFxuIjsKKyAgICBw
cmludCBGICIgICAgaW50IGNvZGU7XG4iOwogICAgIHByaW50IEYgIlxuIjsKICAgICBwcmludCBG
ICIgICAgRXhjZXB0aW9uVHlwZSB0eXBlO1xuIjsKICAgICBwcmludCBGICJ9O1xuIjsKQEAgLTE0
Miw2ICsxNTEsNyBAQCBzdWIgZ2VuZXJhdGVJbXBsZW1lbnRhdGlvbigpCiAgICAgcHJpbnQgRiAi
I2luY2x1ZGUgXCJFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaFwiXG4iOwogICAgIHByaW50IEYg
IlxuIjsKICAgICBwcmludCBGICIjaW5jbHVkZSBcIkV4Y2VwdGlvbkNvZGUuaFwiXG4iOworICAg
IHByaW50IEYgIiNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD5cbiI7CiAKICAgICBmb3Ig
bXkgJGV4Y2VwdGlvblR5cGUgKHNvcnQga2V5cyAlcGFyc2VkSXRlbXMpIHsKICAgICAgICAgbXkg
JGNvbmRpdGlvbmFsID0gJHBhcnNlZEl0ZW1zeyRleGNlcHRpb25UeXBlfXsiY29uZGl0aW9uYWwi
fTsKQEAgLTE1Niw3ICsxNjYsMjAgQEAgc3ViIGdlbmVyYXRlSW1wbGVtZW50YXRpb24oKQogICAg
IHByaW50IEYgIlxuIjsKICAgICBwcmludCBGICJFeGNlcHRpb25Db2RlRGVzY3JpcHRpb246OkV4
Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihFeGNlcHRpb25Db2RlIGVjKVxuIjsKICAgICBwcmludCBG
ICJ7XG4iOworICAgIHByaW50IEYgIiAgICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb25JbXBsKGVj
LCBTdHJpbmcoKSk7XG4iOworICAgIHByaW50IEYgIn1cbiI7CisgICAgcHJpbnQgRiAiXG4iOwor
ICAgIHByaW50IEYgIkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbjo6RXhjZXB0aW9uQ29kZURlc2Ny
aXB0aW9uKEV4Y2VwdGlvbkNvZGUgZWMsIGNvbnN0IFN0cmluZyYgY29udGV4dClcbiI7CisgICAg
cHJpbnQgRiAie1xuIjsKKyAgICBwcmludCBGICIgICAgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9u
SW1wbChlYywgY29udGV4dCk7XG4iOworICAgIHByaW50IEYgIn1cbiI7CisgICAgcHJpbnQgRiAi
XG4iOworICAgIHByaW50IEYgInZvaWQgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uOjpFeGNlcHRp
b25Db2RlRGVzY3JpcHRpb25JbXBsKEV4Y2VwdGlvbkNvZGUgZWMsIGNvbnN0IFN0cmluZyYgY29u
dGV4dClcbiI7CisgICAgcHJpbnQgRiAie1xuIjsKICAgICBwcmludCBGICIgICAgQVNTRVJUKGVj
KTtcbiI7CisgICAgcHJpbnQgRiAiXG4iOworICAgIHByaW50IEYgIiAgICB0aGlzLT5jb250ZXh0
ID0gU3RyaW5nKGNvbnRleHQpO1xuIjsKKyAgICBwcmludCBGICJcbiI7CiAKICAgICBmb3IgbXkg
JGV4Y2VwdGlvblR5cGUgKHNvcnQga2V5cyAlcGFyc2VkSXRlbXMpIHsKICAgICAgICAgIyBET01D
b3JlRXhjZXB0aW9uIG5lZWRzIHRvIGJlIGxhc3QgYmVjYXVzZSBpdCdzIGEgY2F0Y2gtYWxsLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQu
Y3BwCmluZGV4IDdkZWZiMzU5NWRjYjFhZGE5MjUyYTdlYjYyMDgzNDU2NjU4YWI0YzQuLjkxYTNh
YmZhYTY0OTIwMjgyMGIwOTJjNTdkMzExZTQ5MmUwNGIxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTYxMSw2ICs2
MTEsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlcGxheVhIUihFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKQogewogICAgIFJlZlB0cjxYTUxIdHRwUmVxdWVz
dD4geGhyID0gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZShtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCkt
PmRvY3VtZW50KCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgY29kZTsKKyAgICBTdHJpbmcgZXJyb3JE
ZXNjcmlwdGlvbjsKICAgICBTdHJpbmcgYWN0dWFsUmVxdWVzdElkID0gcmVxdWVzdElkOwogCiAg
ICAgWEhSUmVwbGF5RGF0YSogeGhyUmVwbGF5RGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+eGhyUmVw
bGF5RGF0YShyZXF1ZXN0SWQpOwpAQCAtNjIxLDcgKzYyMiw3IEBAIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6cmVwbGF5WEhSKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQpCiAgICAgaWYgKGNhY2hlZFJlc291cmNlKQogICAgICAgICBtZW1vcnlDYWNoZSgpLT5yZW1v
dmUoY2FjaGVkUmVzb3VyY2UpOwogCi0gICAgeGhyLT5vcGVuKHhoclJlcGxheURhdGEtPm1ldGhv
ZCgpLCB4aHJSZXBsYXlEYXRhLT51cmwoKSwgeGhyUmVwbGF5RGF0YS0+YXN5bmMoKSwgY29kZSk7
CisgICAgeGhyLT5vcGVuKHhoclJlcGxheURhdGEtPm1ldGhvZCgpLCB4aHJSZXBsYXlEYXRhLT51
cmwoKSwgeGhyUmVwbGF5RGF0YS0+YXN5bmMoKSwgY29kZSwgZXJyb3JEZXNjcmlwdGlvbik7CiAg
ICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0geGhyUmVwbGF5RGF0YS0+aGVh
ZGVycygpLmVuZCgpOwogICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSB4aHJSZXBsYXlEYXRhLT5oZWFkZXJzKCkuYmVnaW4oKTsgaXQhPSBlbmQ7ICsraXQpCiAgICAg
ICAgIHhoci0+c2V0UmVxdWVzdEhlYWRlcihpdC0+Zmlyc3QsIGl0LT5zZWNvbmQsIGNvZGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMDk3YmM0NDI3ZjBkMGM0YzY1
MTIwYTNiNzlhYWZiZmRiMzRmNDRjOC4uM2FiZTEzYTMwMGNlNzMzNmY3YmZiMGVjZDc1ZmNiNDQ0
NWE2M2JkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC00NDQsMTIg
KzQ0NCwxMiBAQCBib29sIFhNTEh0dHBSZXF1ZXN0Ojppc0FsbG93ZWRIVFRQSGVhZGVyKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICAgICAgJiYgIW5hbWUuc3RhcnRzV2l0aChzdGF0aWNEYXRhLT5t
X3NlY0hlYWRlclByZWZpeCwgZmFsc2UpOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVu
KGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVj
KQordm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3Qg
S1VSTCYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYywgU3RyaW5nJiBleGNlcHRpb25EZXNjcmlwdGlv
bikKIHsKLSAgICBvcGVuKG1ldGhvZCwgdXJsLCB0cnVlLCBlYyk7CisgICAgb3BlbihtZXRob2Qs
IHVybCwgdHJ1ZSwgZWMsIGV4Y2VwdGlvbkRlc2NyaXB0aW9uKTsKIH0KIAotdm9pZCBYTUxIdHRw
UmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29s
IGFzeW5jLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29u
c3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgRXhjZXB0aW9u
Q29kZSYgZWMsIFN0cmluZyYgZXhjZXB0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgaW50ZXJuYWxB
Ym9ydCgpOwogICAgIFN0YXRlIHByZXZpb3VzU3RhdGUgPSBtX3N0YXRlOwpAQCAtNDc2LDYgKzQ3
Niw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNv
bnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgRXhjCiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0Nvbm5lY3RUb1NvdXJjZSh1
cmwpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSB0aHJvd2luZyBhbiBleGNl
cHRpb24/CiAgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAgICBleGNlcHRpb25EZXNj
cmlwdGlvbiA9ICJYTUxIdHRwUmVxdWVzdCBjb25uZWN0aW9ucyB0byAnIiArIHVybC5zdHJpbmco
KSArICInIGFyZSBibG9ja2VkIGR1ZSB0byB0aGlzIHBhZ2UncyBDb250ZW50IFNlY3VyaXR5IFBv
bGljeS4iOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MTMsMjEgKzUxNCwyMSBAQCB2
b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJM
JiB1cmwsIGJvb2wgYXN5bmMsIEV4YwogICAgICAgICBtX3N0YXRlID0gT1BFTkVEOwogfQogCi12
b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJM
JiB1cmwsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBL
VVJMJiB1cmwsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwgRXhjZXB0aW9uQ29kZSYg
ZWMsIFN0cmluZyYgZXhjZXB0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgS1VSTCB1cmxXaXRoQ3Jl
ZGVudGlhbHModXJsKTsKICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcih1c2VyKTsKIAot
ICAgIG9wZW4obWV0aG9kLCB1cmxXaXRoQ3JlZGVudGlhbHMsIGFzeW5jLCBlYyk7CisgICAgb3Bl
bihtZXRob2QsIHVybFdpdGhDcmVkZW50aWFscywgYXN5bmMsIGVjLCBleGNlcHRpb25EZXNjcmlw
dGlvbik7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRo
b2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgY29uc3QgU3RyaW5nJiB1c2VyLCBjb25z
dCBTdHJpbmcmIHBhc3N3b3JkLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgWE1MSHR0cFJlcXVl
c3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3lu
YywgY29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkLCBFeGNlcHRpb25D
b2RlJiBlYywgU3RyaW5nJiBleGNlcHRpb25EZXNjcmlwdGlvbikKIHsKICAgICBLVVJMIHVybFdp
dGhDcmVkZW50aWFscyh1cmwpOwogICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRVc2VyKHVzZXIp
OwogICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNzKHBhc3N3b3JkKTsKIAotICAgIG9wZW4o
bWV0aG9kLCB1cmxXaXRoQ3JlZGVudGlhbHMsIGFzeW5jLCBlYyk7CisgICAgb3BlbihtZXRob2Qs
IHVybFdpdGhDcmVkZW50aWFscywgYXN5bmMsIGVjLCBleGNlcHRpb25EZXNjcmlwdGlvbik7CiB9
CiAKIGJvb2wgWE1MSHR0cFJlcXVlc3Q6OmluaXRTZW5kKEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCBjYzZjYmM1MGMzNjAxNjUwODllMjY1OTk3
NWNkMTBkMzExMjJlZjVkLi41MDYzOWRkOWIxMDQwNzY3NDU4MjhkMGJjMThiMGE0NTRiYTVjNWEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtODMsMTAgKzgzLDEwIEBAIHB1
YmxpYzoKICAgICBTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CiAgICAgYm9vbCB3aXRoQ3JlZGVu
dGlhbHMoKSBjb25zdCB7IHJldHVybiBtX2luY2x1ZGVDcmVkZW50aWFsczsgfQogICAgIHZvaWQg
c2V0V2l0aENyZWRlbnRpYWxzKGJvb2wsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIG9wZW4o
Y29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
dm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiwgYm9vbCBhc3luYywg
RXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29u
c3QgS1VSTCYsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwgRXhjZXB0aW9uQ29kZSYp
OwotICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wg
YXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VS
TCYsIEV4Y2VwdGlvbkNvZGUmLCBTdHJpbmcmIGV4Y2VwdGlvbkRlc2NyaXB0aW9uKTsKKyAgICB2
b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmLCBib29sIGFzeW5jLCBF
eGNlcHRpb25Db2RlJiwgU3RyaW5nJiBleGNlcHRpb25EZXNjcmlwdGlvbik7CisgICAgdm9pZCBv
cGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiwgYm9vbCBhc3luYywgY29uc3Qg
U3RyaW5nJiB1c2VyLCBFeGNlcHRpb25Db2RlJiwgU3RyaW5nJiBleGNlcHRpb25EZXNjcmlwdGlv
bik7CisgICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiwgYm9v
bCBhc3luYywgY29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkLCBFeGNl
cHRpb25Db2RlJiwgU3RyaW5nJiBleGNlcHRpb25EZXNjcmlwdGlvbik7CiAgICAgdm9pZCBzZW5k
KEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNlbmQoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCBzZW5kKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA2ZDhhMzk0ZThiM2ViMDRjNTEyNjUyOTI3MDE2NDI2MjU4MzFhYTM1Li4yYjQ3Y2RlOTU4MWE0
M2Q3NWNmNjI2YWEwOGQ2M2RjNTc0NWE1ZTFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTIt
MDktMjcgIE1pa2UgV2VzdCAgPG1rd3N0QGdvb2dsZS5jb20+CisKKyAgICAgICAgWE1MSHR0cFJl
cXVlc3RzIGJsb2NrZWQgYnkgQ1NQIHNob3VsZCB0aHJvdyBhIG1vcmUgZGVzY3JpcHRpdmUgZXhj
ZXB0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTc2NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0
aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMh
KS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJsb2NrZWQtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3Jj
LXhtbGh0dHByZXF1ZXN0LWJsb2NrZWQuaHRtbDoKKwogMjAxMi0wOS0yNyAgVnNldm9sb2QgVmxh
c292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGluc3BlY3Rv
ciB0ZXN0IHVuc2tpcHBlZCBvbiBxdCwgZXhwZWN0YXRpb25zIHVwZGF0ZWQuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9j
b25uZWN0LXNyYy14bWxodHRwcmVxdWVzdC1ibG9ja2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3Jj
LXhtbGh0dHByZXF1ZXN0LWJsb2NrZWQtZXhwZWN0ZWQudHh0CmluZGV4IDE0ZDI4NGMxZjg2N2M2
YzUzODEwNmRiNWJhOWZkYWQ3ZTc1OWVhOGMuLjcyOGRjYWVkNjg1YjA1YjFjZjhkMzAwNzhiNzFm
ZmQyMzU5MTM1Y2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJsb2NrZWQt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJsb2NrZWQtZXhwZWN0
ZWQudHh0CkBAIC0xLDQgKzEsNSBAQAogQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGNvbm5l
Y3QgdG8gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZ2V0
LnR4dCcgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkg
UG9saWN5IGRpcmVjdGl2ZTogImNvbm5lY3Qtc3JjIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIuCiAK
IFBhc3MKK3sibWVzc2FnZSI6IlNFQ1VSSVRZX0VSUjogRE9NIEV4Y2VwdGlvbiAxOC4gWE1MSHR0
cFJlcXVlc3QgY29ubmVjdGlvbnMgdG8gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVx
dWVzdC9yZXNvdXJjZXMvZ2V0LnR4dCcgYXJlIGJsb2NrZWQgZHVlIHRvIHRoaXMgcGFnZSdzIENv
bnRlbnQgU2VjdXJpdHkgUG9saWN5LiIsIm5hbWUiOiJTRUNVUklUWV9FUlIiLCJjb2RlIjoxOCwi
c3RhY2siOiJFcnJvcjogQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBicmVhayB0aHJvdWdoIHRoZSBz
ZWN1cml0eSBwb2xpY3kgb2YgdGhlIHVzZXIgYWdlbnQuXG4gICAgYXQgaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9jb25uZWN0LXNyYy14bWxodHRw
cmVxdWVzdC1ibG9ja2VkLmh0bWw6MjA6OSJ9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0
dHByZXF1ZXN0LWJsb2NrZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJsb2NrZWQu
aHRtbAppbmRleCAzZTlkMTJmMzJlODRjNDY5NzQ2NzMzODcxY2Q5MzZhZWViNzc2ZjI1Li5jZDU4
OWQyNzIwZDY5MWZiNzRiZGI3OTIwZTBkMTNiNWEyZDY3MGViIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9jb25uZWN0LXNy
Yy14bWxodHRwcmVxdWVzdC1ibG9ja2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvY29ubmVjdC1zcmMteG1saHR0cHJlcXVl
c3QtYmxvY2tlZC5odG1sCkBAIC0yMSw2ICsyMSw3IEBAIHRyeSB7CiAgICAgbG9nKCJGYWlsIik7
CiB9IGNhdGNoKGUpIHsKICAgICBsb2coIlBhc3MiKTsKKyAgICBsb2coSlNPTi5zdHJpbmdpZnko
ZSkpOwogfQogCiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166042</attachid>
            <date>2012-09-27 12:03:56 -0700</date>
            <delta_ts>2012-09-28 13:04:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97654-20120927210312.patch</filename>
            <type>text/plain</type>
            <size>25307</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg5NDZlZDQxOGQ4NDg1
YzYzYjcwZDQyNTdlYjgxZTA1YzNhMjAzOC4uMTQyZTAwOGZkMjFmYjQyN2FmOWI0YmE5ZjI1N2U0
ZmE3ODcwMjM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTA5LTI3ICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3RzIGJs
b2NrZWQgYnkgQ1NQIHNob3VsZCB0aHJvdyBhIG1vcmUgZGVzY3JpcHRpdmUgZXhjZXB0aW9uLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc2NTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBET00gZXhjZXB0
aW9ucyBpbiBnZW5lcmFsIGhhdmUgcmVsYXRpdmVseSBwb29yIGRlc2NyaXB0aW9ucy4gSW4gdGhp
cworICAgICAgICBjYXNlLCBibG9ja2luZyBhbiBYTUxIdHRwUmVxdWVzdCB2aWEgQ1NQIHRocm93
cyBhbiBleGNlcHRpb24gd2l0aCB0aGUKKyAgICAgICAgbWVzc2FnZSAiU0VDVVJJVFlfRVJSOiBE
T00gRXhjZXB0aW9uIDE4Ii4gTm90IG9ubHkgZG9lcyB0aGlzIG5vdCBnaXZlCisgICAgICAgIGRl
dmVsb3BlcnMgYW55dGhpbmcgdXNlZnVsIHRvIHdvcmsgd2l0aCwgaXQncyBhbHNvIHRoZSBleGFj
dCBzYW1lCisgICAgICAgIG1lc3NhZ2UgdXNlZCBpbiB+MzAgb3RoZXIgY2FzZXMgaW4gV2ViS2l0
LiBXZSBjYW4gZG8gYmV0dGVyLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZmlyc3Qgc2V0cyB1cCBz
b21lIHBsdW1iaW5nIHRocm91Z2ggSlNDIGFuZCBWOCB0byBhbGxvdyBhCisgICAgICAgICdjb250
ZXh0JyBTdHJpbmcgdG8gYmUgcGFzc2VkIGRvd24gaW50byB0aGUgZXhjZXB0aW9uLCBhbmQgYWRq
dXN0cworICAgICAgICBFeGNlcHRpb25CYXNlIHRvIHVzZSB0aGF0IG5ldyBzdHJpbmcgd2hlbiBy
ZW5kZXJpbmcgdGhlIGV4Y2VwdGlvbidzCisgICAgICAgIG1lc3NhZ2UuCisKKyAgICAgICAgV2l0
aCB0aGF0IHBsdW1iaW5nIGluIHBsYWNlLCB0aGUgY2hhbmdlcyB0byBYTUxIdHRwUmVxdWVzdCBh
cmUKKyAgICAgICAgc3RyYWlnaHRmb3J3YXJkLCBnZW5lcmF0aW5nIHRoZSBzdHJpbmcgYWxvbmcg
d2l0aCB0aGUgZXJyb3IgY29kZSwgYW5kCisgICAgICAgIGVuc3VyaW5nIHRoYXQgaXQncyBoYW5k
ZWQgb2ZmIHRvIHRoZSBiaW5kaW5ncyBjb3JyZWN0bHkuCisKKyAgICAgICAgVGhlIG5ldyBlcnJv
ciBtZXNzYWdlIGlzIGNvdmVyZWQgYnkgc2xpZ2h0IG1vZGlmaWNhdGlvbnMgdG8gdGhlIGV4aXN0
aW5nCisgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Nv
bm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJsb2NrZWQuaHRtbC4KKyAgICAgICAgRXZlcnl0aGlu
ZyBlbHNlIHNob3VsZCBzdGF5IGV4YWN0bHkgYXMtaXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0RE9NRXhjZXB0aW9uKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
OgorICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uIG5vdyBvcHRpb25hbGx5IGFjY2VwdHMgYW4g
J2V4Y2VwdGlvbkNvbnRleHQnIHN0cmluZywKKyAgICAgICAgICAgIGFuZCBwYXNzZXMgaXQgaW50
byB0aGUgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGNvbnN0cnVjdG9yIHNvIHRoYXQKKyAgICAg
ICAgICAgIGl0J3Mgc3RvcmVkIGFsb25nIHdpdGggdGhlIGdlbmVyYXRlZCBleGNlcHRpb24uCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6Om9wZW4pOgor
ICAgICAgICAgICAgUGFzcyAnZXhjZXB0aW9uQ29udGV4dCcgaW50byAnWE1MSHR0cFJlcXVlc3Qt
Pm9wZW4nIGFuZCBpbnRvCisgICAgICAgICAgICAnSlNDOjpzZXRET01FeGNlcHRpb24nLgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRE
T01FeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgICAgIHNldERPTUV4Y2Vw
dGlvbiBub3cgb3B0aW9uYWxseSBhY2NlcHRzIGFuICdleGNlcHRpb25Db250ZXh0JyBzdHJpbmcs
CisgICAgICAgICAgICBhbmQgcGFzc2VzIGl0IGludG8gJ1Y4VGhyb3dFeGNlcHRpb246OnNldERP
TUV4Y2VwdGlvbicuIFNhbWUgYXMKKyAgICAgICAgICAgIEpTQywganVzdCBvbmUgbW9yZSBsZXZl
bCBvZiBpbmRpcmVjdGlvbi4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFRocm93RXhjZXB0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGhyb3dFeGNlcHRpb246OnNldERPTUV4Y2VwdGlv
bik6CisgICAgICAgICAgICBzZXRET01FeGNlcHRpb24gbm93IG9wdGlvbmFsbHkgYWNjZXB0cyBh
biAnZXhjZXB0aW9uQ29udGV4dCcgc3RyaW5nLAorICAgICAgICAgICAgYW5kIHBhc3NlcyBpdCBp
bnRvIHRoZSBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gY29uc3RydWN0b3Igc28gdGhhdAorICAg
ICAgICAgICAgaXQncyBzdG9yZWQgYWxvbmcgd2l0aCB0aGUgZ2VuZXJhdGVkIGV4Y2VwdGlvbi4K
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFRocm93RXhjZXB0aW9uLmg6CisgICAgICAgIChXVEYp
OgorICAgICAgICAoVjhUaHJvd0V4Y2VwdGlvbik6CisgICAgICAgICAgICBBZGQgZm9yd2FyZCBk
ZWNsYXJhdGlvbiBvZiAnV1RGOjpTdHJpbmcnIHRvIGF2b2lkIGluY2x1ZGluZyBoZWFkZXJzCisg
ICAgICAgICAgICBhbmQgYWRqdXN0IHRoZSBzaWduYXR1cmUgb2Ygc2V0RE9NRXhjZXB0aW9uLgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4WE1MSHR0cFJlcXVlc3Q6Om9wZW5DYWxsYmFjayk6CisgICAg
ICAgICAgICBQYXNzICdleGNlcHRpb25Db250ZXh0JyBpbnRvICdYTUxIdHRwUmVxdWVzdC0+b3Bl
bicgYW5kIGludG8KKyAgICAgICAgICAgICdzZXRET01FeGNlcHRpb24nLgorICAgICAgICAqIGRv
bS9FeGNlcHRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbkJhc2U6OkV4
Y2VwdGlvbkJhc2UpOgorICAgICAgICAgICAgSWYgdGhlIGV4Y2VwdGlvbiBoYXMgYWRkaXRpb25h
bCAnY29udGV4dCcsIGFwcGVuZCBpdCB0byB0aGUgbWVzc2FnZS4KKyAgICAgICAgKiBkb20vbWFr
ZV9kb21fZXhjZXB0aW9ucy5wbDoKKyAgICAgICAgKGdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAg
KGdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAgICAgSW5jbHVkZSBXVEZTdHJpbmcu
aCwgYW5kIGFjY2VwdCBvbmUgd2hlbiBjb25zdHJ1Y3RpbmcgYW4KKyAgICAgICAgICAgIEV4Y2Vw
dGlvbkNvZGVEZXNjcmlwdGlvbi4gU3RvcmUgYSBjb3B5IG9mIHRoZSBwcm92aWRlZCBTdHJpbmcK
KyAgICAgICAgICAgIG9uIHRoZSBFcnJvckNvZGVEZXNjcmlwdGlvbiBvYmplY3QgZm9yIGxhdGVy
IHVzZSBpbiBFeGNlcHRpb25CYXNlLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6
OnJlcGxheVhIUik6CisgICAgICAgICAgICBQYXNzICdleGNlcHRpb25Db250ZXh0JyBpbnRvICdY
TUxIdHRwUmVxdWVzdC0+b3BlbicuCisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpvcGVuKToKKyAgICAgICAgKiB4bWwv
WE1MSHR0cFJlcXVlc3QuaDoKKyAgICAgICAgKFhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgICAg
IEFjY2VwdCBhIG5ldyAnZXhjZXB0aW9uQ29udGV4dCcgYXJndW1lbnQsIGFuZCBwb3B1bGF0ZSBp
dCB3aXRoIG5pY2UKKyAgICAgICAgICAgIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gd2hlbiBibG9j
a2luZyBhbiBYTUxIdHRwUmVxdWVzdC0+b3BlbigpIGNhbGwKKyAgICAgICAgICAgIGJlY2F1c2Ug
b2YgdGhlIHBhZ2UncyBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4KKwogMjAxMi0wOS0yNyAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtF
RkxdIE5vIHdheSB0byBleGl0IHZpZGVvIGZ1bGxzY3JlZW4gbW9kZSBvbmNlIGVudGVyZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IGZlMDg0ZWE0
ZGZiNDAyMjU2N2QxNzY0YzY4M2Q3ZmM3Zjg1OTNmZmUuLjA4NWE1ZWE4OWIzMTU2M2FjODI4MDhl
NzdhNjlhYmFmYzdlNWYwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcApAQCAtMTgxLDYgKzE4MSwxMSBAQCB2b2lkIHJlcG9ydEN1cnJlbnRFeGNlcHRp
b24oRXhlY1N0YXRlKiBleGVjKQogCiB2b2lkIHNldERPTUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEV4Y2VwdGlvbkNvZGUgZWMpCiB7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjLCBT
dHJpbmcoKSk7Cit9CisKK3ZvaWQgc2V0RE9NRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhj
ZXB0aW9uQ29kZSBlYywgY29uc3QgU3RyaW5nJiBleGNlcHRpb25Db250ZXh0KQorewogICAgIGlm
ICghZWMgfHwgZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTk0
LDcgKzE5OSw3IEBAIHZvaWQgc2V0RE9NRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhjZXB0
aW9uQ29kZSBlYykKICAgICAvLyBmcmFtZXNbMF0uZG9jdW1lbnQuY3JlYXRlRWxlbWVudChudWxs
LCBudWxsKTsgLy8gdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGljaCBzaG91bGQgaGF2ZSB0aGUgc3Vi
ZnJhbWVzIHByb3RvdHlwZXMuCiAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGRlcHJlY2F0ZWRHbG9iYWxPYmplY3RGb3JQcm90b3R5cGUoZXhlYyk7CiAKLSAgICBFeGNlcHRp
b25Db2RlRGVzY3JpcHRpb24gZGVzY3JpcHRpb24oZWMpOworICAgIEV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbiBkZXNjcmlwdGlvbihlYywgZXhjZXB0aW9uQ29udGV4dCk7CiAKICAgICBKU1ZhbHVl
IGVycm9yT2JqZWN0OwogICAgIHN3aXRjaCAoZGVzY3JpcHRpb24udHlwZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA3NTMyYjc5M2U3MjhkMGQ4YmMx
YWUyZDVjM2UyYTEyZTkwOTcxMzkwLi4xYjdhNzFkMDQyMmRiOTg4MGZhYzEzZTAyMDhmZmMyMzE3
YWU0ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAt
MjMyLDYgKzIzMiw3IEBAIGVudW0gUGFyYW1ldGVyRGVmYXVsdFBvbGljeSB7CiAKICAgICAvLyBD
b252ZXJ0IGEgRE9NIGltcGxlbWVudGF0aW9uIGV4Y2VwdGlvbiBjb2RlIGludG8gYSBKYXZhU2Ny
aXB0IGV4Y2VwdGlvbiBpbiB0aGUgZXhlY3V0aW9uIHN0YXRlLgogICAgIHZvaWQgc2V0RE9NRXhj
ZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgRXhjZXB0aW9uQ29kZSk7CisgICAgdm9pZCBzZXRET01F
eGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBFeGNlcHRpb25Db2RlLCBjb25zdCBTdHJpbmcmKTsK
IAogICAgIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ1dpdGhDYWNoZShKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IFN0cmluZyYpOwogICAgIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ1dpdGhDYWNoZVNsb3dDYXNl
KEpTQzo6RXhlY1N0YXRlKiwgSlNTdHJpbmdDYWNoZSYsIFN0cmluZ0ltcGwqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAK
aW5kZXggOTBiZDQ4YjdmNTY3YjI2NTM4OGEwMmNhNWU3ODhhNjg2ZTRlMzQ3OC4uZmM0YzI2MDJk
YWMzMTQ1YjIyYjBiYzQ1ODgyODhlZTFiNmZjNmQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTg4LDYgKzg4
LDcgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBTdHJpbmcgbWV0aG9kID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU3RyaW5nIGV4Y2VwdGlv
bkNvbnRleHQ7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAzKSB7CiAgICAgICAg
IGJvb2wgYXN5bmMgPSBleGVjLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oZXhlYyk7CiAKQEAgLTk2
LDE1ICs5NywxNSBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6Om9wZW4oRXhlY1N0YXRlKiBl
eGVjKQogCiAgICAgICAgICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDUgJiYgIWV4
ZWMtPmFyZ3VtZW50KDQpLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAgICAgICBTdHJpbmcg
cGFzc3dvcmQgPSB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCBleGVjLT5hcmd1bWVu
dCg0KSk7Ci0gICAgICAgICAgICAgICAgaW1wbCgpLT5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywg
dXNlciwgcGFzc3dvcmQsIGVjKTsKKyAgICAgICAgICAgICAgICBpbXBsKCktPm9wZW4obWV0aG9k
LCB1cmwsIGFzeW5jLCB1c2VyLCBwYXNzd29yZCwgZWMsIGV4Y2VwdGlvbkNvbnRleHQpOwogICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgaW1wbCgpLT5vcGVuKG1ldGhvZCwgdXJs
LCBhc3luYywgdXNlciwgZWMpOworICAgICAgICAgICAgICAgIGltcGwoKS0+b3BlbihtZXRob2Qs
IHVybCwgYXN5bmMsIHVzZXIsIGVjLCBleGNlcHRpb25Db250ZXh0KTsKICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBpbXBsKCktPm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jLCBlYyk7CisgICAg
ICAgICAgICBpbXBsKCktPm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jLCBlYywgZXhjZXB0aW9uQ29u
dGV4dCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGltcGwoKS0+b3BlbihtZXRob2QsIHVybCwgZWMp
OworICAgICAgICBpbXBsKCktPm9wZW4obWV0aG9kLCB1cmwsIGVjLCBleGNlcHRpb25Db250ZXh0
KTsKIAotICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIGVjLCBleGNlcHRpb25Db250ZXh0KTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKaW5kZXggZDIyZTc3
NTA3NWQzOTJlN2M0N2FlMjMyOWRiMGU3MDM1YmIzNmVmMy4uMzU3NDRlZmVhODQyM2MwMDFjZjU4
OTBiYmU1NGVlOTRkM2FhZGRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuY3BwCkBAIC02NCw3ICs2NCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBzZXRET01FeGNlcHRpb24oaW50IGV4Y2VwdGlvbkNvZGUsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQogewotICAgIHJldHVybiBWOFRocm93RXhjZXB0aW9uOjpzZXRET01FeGNl
cHRpb24oZXhjZXB0aW9uQ29kZSwgaXNvbGF0ZSk7CisgICAgcmV0dXJuIFY4VGhyb3dFeGNlcHRp
b246OnNldERPTUV4Y2VwdGlvbihleGNlcHRpb25Db2RlLCBTdHJpbmcoKSwgaXNvbGF0ZSk7Cit9
CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBzZXRET01FeGNlcHRpb24oaW50IGV4Y2VwdGlvbkNv
ZGUsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
Cit7CisgICAgcmV0dXJuIFY4VGhyb3dFeGNlcHRpb246OnNldERPTUV4Y2VwdGlvbihleGNlcHRp
b25Db2RlLCBleGNlcHRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRocm93RXJyb3IoRXJyb3JUeXBlIGVycm9yVHlwZSwgY29uc3QgY2hhciogbWVzc2Fn
ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5oCmluZGV4IDBjOWVlNGY0Y2ExOGEwYzgwYzZlMmIzNWEyNzY3MTg0NDcwZjJlYmYuLmFmMmE4
ZDhiOWQ1MjU2MzIyZDBlODQ3YWVlZGQ2YjU3ZmVjYThiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QmluZGluZy5oCkBAIC01OCw2ICs1OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAvLyBTY2hlZHVsZSBhIERPTSBleGNlcHRpb24gdG8gYmUgdGhyb3duLCBpZiB0aGUgZXhj
ZXB0aW9uIGNvZGUgaXMgZGlmZmVyZW50CiAgICAgLy8gZnJvbSB6ZXJvLgogICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBzZXRET01FeGNlcHRpb24oaW50LCB2ODo6SXNvbGF0ZSopOworICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBzZXRET01FeGNlcHRpb24oaW50LCBjb25zdCBTdHJpbmcmLCB2
ODo6SXNvbGF0ZSopOwogCiAgICAgLy8gU2NoZWR1bGUgYSBKYXZhU2NyaXB0IGVycm9yIHRvIGJl
IHRocm93bi4KICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdGhyb3dFcnJvcihFcnJvclR5cGUs
IGNvbnN0IGNoYXIqLCB2ODo6SXNvbGF0ZSogPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4VGhyb3dFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhUaHJvd0V4Y2VwdGlvbi5jcHAKaW5kZXggZjBhZGMwMTJmNjRlYzM3NjQ2OWVk
ZTM0YWVkOWZmODk5YmJiMWY3OS4uMjY3M2YwMTZkMWM2OGZlYWQyYjgyOGU0NTIxMjk5YWRkMWNm
ZTNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhUaHJvd0V4Y2Vw
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhUaHJvd0V4Y2VwdGlv
bi5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIHZvaWQgZG9tRXhjZXB0aW9uU3RhY2tTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmEKICAgICAgICAg
ZXhjZXB0aW9uID0gdG9WOChpbnRlcmZhY2VOYW1lOjpjcmVhdGUoZGVzY3JpcHRpb24pLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCksIGlzb2xhdGUpOyBcCiAgICAgICAgIGJyZWFrOwogCi12ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhUaHJvd0V4Y2VwdGlvbjo6c2V0RE9NRXhjZXB0aW9uKGludCBl
Yywgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUaHJvd0V4
Y2VwdGlvbjo6c2V0RE9NRXhjZXB0aW9uKGludCBlYywgY29uc3QgV1RGOjpTdHJpbmcmIGV4Y2Vw
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIGlmIChlYyA8PSAwIHx8
IHY4OjpWODo6SXNFeGVjdXRpb25UZXJtaW5hdGluZygpKQogICAgICAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKQEAgLTU2LDcgKzU2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGhyb3dF
eGNlcHRpb246OnNldERPTUV4Y2VwdGlvbihpbnQgZWMsIHY4OjpJc29sYXRlKiBpc28KICAgICBp
ZiAoZWMgPT0gTkFUSVZFX1RZUEVfRVJSKQogICAgICAgICByZXR1cm4gVjhUaHJvd0V4Y2VwdGlv
bjo6dGhyb3dUeXBlRXJyb3IoMCwgaXNvbGF0ZSk7CiAKLSAgICBFeGNlcHRpb25Db2RlRGVzY3Jp
cHRpb24gZGVzY3JpcHRpb24oZWMpOworICAgIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBkZXNj
cmlwdGlvbihlYywgZXhjZXB0aW9uQ29udGV4dCk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gZXhjZXB0aW9uOwogICAgIHN3aXRjaCAoZGVzY3JpcHRpb24udHlwZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhUaHJvd0V4Y2VwdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhUaHJvd0V4Y2VwdGlvbi5oCmluZGV4IDRmNTNkMjI4MjI3
Mzk4ODAyN2RmNTAxZjNlNDU2YTdhOWRjZWRiNTguLmM3NWM3NGE3MzU5MjlmN2Q2MGY0NWVjNzY5
M2E3ZGUxN2M3MGUwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
VGhyb3dFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFRocm93
RXhjZXB0aW9uLmgKQEAgLTI3LDYgKzI3LDEwIEBACiAKICNpbmNsdWRlIDx2OC5oPgogCituYW1l
c3BhY2UgV1RGIHsKK2NsYXNzIFN0cmluZzsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBl
bnVtIEVycm9yVHlwZSB7CkBAIC0zOSw3ICs0Myw3IEBAIGVudW0gRXJyb3JUeXBlIHsKIAogY2xh
c3MgVjhUaHJvd0V4Y2VwdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBzZXRET01FeGNlcHRpb24oaW50LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc2V0RE9NRXhjZXB0aW9uKGludCwgY29uc3QgV1RGOjpTdHJp
bmcmLCB2ODo6SXNvbGF0ZSopOwogCiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
aHJvd0Vycm9yKEVycm9yVHlwZSwgY29uc3QgY2hhciosIHY4OjpJc29sYXRlKiA9IDApOwogICAg
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdGhyb3dFcnJvcih2ODo6TG9jYWw8djg6OlZh
bHVlPiwgdjg6Oklzb2xhdGUqID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggODU4
NDU2MGI0YmE4Zjg5MDc4ZTdkNGExZmI2YWNhMjdkN2U0YjcxMy4uZTcwNWFlMmI1MDVmYjg3NjE5
NTFhOTE3ZTEzMWQ1ODliNTAwOWUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtMTIy
LDI1ICsxMjIsMjYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6Om9w
ZW5DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIEtVUkwgdXJsID0gY29u
dGV4dC0+Y29tcGxldGVVUkwodXJsc3RyaW5nKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIFN0cmluZyBleGNlcHRpb25Db250ZXh0ID0gU3RyaW5nKCk7CiAKICAgICBpZiAoYXJn
cy5MZW5ndGgoKSA+PSAzKSB7CiAgICAgICAgIGJvb2wgYXN5bmMgPSBhcmdzWzJdLT5Cb29sZWFu
VmFsdWUoKTsKIAogICAgICAgICBpZiAoYXJncy5MZW5ndGgoKSA+PSA0ICYmICFhcmdzWzNdLT5J
c1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdXNlciA9IHRvV2ViQ29yZVN0cmlu
Z1dpdGhOdWxsQ2hlY2soYXJnc1szXSk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPj0gNSAmJiAhYXJnc1s0XS0+SXNVbmRlZmluZWQoKSkgewogICAgICAg
ICAgICAgICAgIFN0cmluZyBwYXNzd2QgPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKGFy
Z3NbNF0pOwotICAgICAgICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5vcGVuKG1ldGhvZCwgdXJs
LCBhc3luYywgdXNlciwgcGFzc3dkLCBlYyk7CisgICAgICAgICAgICAgICAgeG1sSHR0cFJlcXVl
c3QtPm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jLCB1c2VyLCBwYXNzd2QsIGVjLCBleGNlcHRpb25D
b250ZXh0KTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHhtbEh0dHBSZXF1
ZXN0LT5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgZWMpOworICAgICAgICAgICAgICAg
IHhtbEh0dHBSZXF1ZXN0LT5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgZWMsIGV4Y2Vw
dGlvbkNvbnRleHQpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0
LT5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgZWMpOworICAgICAgICAgICAgeG1sSHR0cFJlcXVl
c3QtPm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jLCBlYywgZXhjZXB0aW9uQ29udGV4dCk7CiAgICAg
fSBlbHNlCi0gICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5vcGVuKG1ldGhvZCwgdXJsLCBlYyk7Cisg
ICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5vcGVuKG1ldGhvZCwgdXJsLCBlYywgZXhjZXB0aW9uQ29u
dGV4dCk7CiAKICAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywg
ZXhjZXB0aW9uQ29udGV4dCwgYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25C
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25CYXNlLmNwcAppbmRleCA0NTUx
ZThkYTBiMGVjZWJkNDBkYzQ3MzhlNjJkZDQzYzI2YTljZDc5Li5iYjk2YTE5NDExZTgyYjExMzAx
NjY1ODc4YTY2Yzc1NjA0MjRmNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhj
ZXB0aW9uQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2UuY3Bw
CkBAIC00Myw2ICs0Myw5IEBAIEV4Y2VwdGlvbkJhc2U6OkV4Y2VwdGlvbkJhc2UoY29uc3QgRXhj
ZXB0aW9uQ29kZURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKICAgICAgICAgbV9tZXNzYWdlID0g
U3RyaW5nKGRlc2NyaXB0aW9uLm5hbWUpICsgIjogIiArIGRlc2NyaXB0aW9uLnR5cGVOYW1lICsg
IiBFeGNlcHRpb24gIiArIFN0cmluZzo6bnVtYmVyKGRlc2NyaXB0aW9uLmNvZGUpOwogICAgIGVs
c2UKICAgICAgICAgbV9tZXNzYWdlID0gU3RyaW5nKGRlc2NyaXB0aW9uLnR5cGVOYW1lKSArICIg
RXhjZXB0aW9uICIgKyBTdHJpbmc6Om51bWJlcihkZXNjcmlwdGlvbi5jb2RlKTsKKworICAgIGlm
ICghZGVzY3JpcHRpb24uY29udGV4dC5pc0VtcHR5KCkpCisgICAgICAgIG1fbWVzc2FnZSA9IG1f
bWVzc2FnZSArICIuICIgKyBTdHJpbmcoZGVzY3JpcHRpb24uY29udGV4dCk7CiB9CiAKIFN0cmlu
ZyBFeGNlcHRpb25CYXNlOjp0b1N0cmluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vbWFrZV9kb21fZXhjZXB0aW9ucy5wbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtl
X2RvbV9leGNlcHRpb25zLnBsCmluZGV4IDJhYmE3Y2RkYTM0MGIxOTZkNmMwZjliY2VjODhkZDY5
NTg2OWRmNWUuLjdlZDcyMmU5OTY1YTJkY2Y2ZjZhMDRkNjRhZDgwOGZkMWEwNTJhZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2RvbV9leGNlcHRpb25zLnBsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9tYWtlX2RvbV9leGNlcHRpb25zLnBsCkBAIC03OSw2ICs3OSw4IEBA
IHN1YiBnZW5lcmF0ZUhlYWRlcigpCiAgICAgcHJpbnQgRiAiI2lmbmRlZiBFeGNlcHRpb25Db2Rl
RGVzY3JpcHRpb25faFxuIjsKICAgICBwcmludCBGICIjZGVmaW5lIEV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbl9oXG4iOwogICAgIHByaW50IEYgIlxuIjsKKyAgICBwcmludCBGICIjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+XG4iOworICAgIHByaW50IEYgIlxuIjsKICAgICBwcmludCBG
ICJuYW1lc3BhY2UgV2ViQ29yZSB7XG4iOwogICAgIHByaW50IEYgIlxuIjsKICAgICBwcmludCBG
ICJ0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlO1xuIjsKQEAgLTk3LDYgKzk5LDggQEAgc3ViIGdl
bmVyYXRlSGVhZGVyKCkKICAgICBwcmludCBGICJcbiI7CiAgICAgcHJpbnQgRiAic3RydWN0IEV4
Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiB7XG4iOwogICAgIHByaW50IEYgIiAgICBleHBsaWNpdCBF
eGNlcHRpb25Db2RlRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSk7XG4iOworICAgIHByaW50IEYg
IiAgICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSwgY29uc3QgU3RyaW5n
JiBjb250ZXh0KTtcbiI7CisgICAgcHJpbnQgRiAiICAgIHZvaWQgRXhjZXB0aW9uQ29kZURlc2Ny
aXB0aW9uSW1wbChFeGNlcHRpb25Db2RlLCBjb25zdCBTdHJpbmcmIGNvbnRleHQpO1xuIjsKICAg
ICBwcmludCBGICJcbiI7CiAgICAgcHJpbnQgRiAiICAgIC8vIHx0eXBlTmFtZXwgaGFzIHNwYWNl
cyBhbmQgaXMgc3VpdGFibGUgZm9yIHVzZSBpbiBleGNlcHRpb25cbiI7CiAgICAgcHJpbnQgRiAi
ICAgIC8vIGRlc2NyaXB0aW9uIHN0cmluZ3M7IG1heGltdW0gbGVuZ3RoIGlzIDEwIGNoYXJhY3Rl
cnMuXG4iOwpAQCAtMTExLDggKzExNSwxMyBAQCBzdWIgZ2VuZXJhdGVIZWFkZXIoKQogICAgIHBy
aW50IEYgIiAgICAvLyBleGNlcHRpb24gc3RyaW5ncy4gSXQgaXMgYSBtb3JlIHJlYWRhYmxlIGV4
cGxhbmF0aW9uIG9mIGVycm9yLlxuIjsKICAgICBwcmludCBGICIgICAgY29uc3QgY2hhciogZGVz
Y3JpcHRpb247XG4iOwogICAgIHByaW50IEYgIlxuIjsKKyAgICBwcmludCBGICIgICAgLy8gfGNv
bnRleHR8IGlzIGFkZGl0aW9uYWwgY29udGV4dCwgb3B0aW9uYWxseSBwcm92aWRlZCB3aGVuIHRo
ZVxuIjsKKyAgICBwcmludCBGICIgICAgLy8gZXhjZXB0aW9uIGlzIGdlbmVyYXRlZC4gSXQgd2ls
bCBiZSBhZGRlZCB0byB0aGUgbmFtZSBhbmRcbiI7CisgICAgcHJpbnQgRiAiICAgIC8vICBkZXNj
cmlwdGlvbiB3aGVuIHRoZSBleGNlcHRpb24gaXMgcHJlc2VudGVkIHRvIGEgZGV2ZWxvcGVyLlxu
IjsKKyAgICBwcmludCBGICIgICAgU3RyaW5nIGNvbnRleHQ7XG4iOworICAgIHByaW50IEYgIlxu
IjsKICAgICBwcmludCBGICIgICAgLy8gfGNvZGV8IGlzIHRoZSBudW1lcmljIHZhbHVlIG9mIHRo
ZSBleGNlcHRpb24gd2l0aGluIGEgcGFydGljdWxhciB0eXBlLlxuIjsKLSAgICBwcmludCBGICIg
ICAgaW50IGNvZGU7IFxuIjsKKyAgICBwcmludCBGICIgICAgaW50IGNvZGU7XG4iOwogICAgIHBy
aW50IEYgIlxuIjsKICAgICBwcmludCBGICIgICAgRXhjZXB0aW9uVHlwZSB0eXBlO1xuIjsKICAg
ICBwcmludCBGICJ9O1xuIjsKQEAgLTE0Miw2ICsxNTEsNyBAQCBzdWIgZ2VuZXJhdGVJbXBsZW1l
bnRhdGlvbigpCiAgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJFeGNlcHRpb25Db2RlRGVzY3JpcHRp
b24uaFwiXG4iOwogICAgIHByaW50IEYgIlxuIjsKICAgICBwcmludCBGICIjaW5jbHVkZSBcIkV4
Y2VwdGlvbkNvZGUuaFwiXG4iOworICAgIHByaW50IEYgIiNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD5cbiI7CiAKICAgICBmb3IgbXkgJGV4Y2VwdGlvblR5cGUgKHNvcnQga2V5cyAlcGFy
c2VkSXRlbXMpIHsKICAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJHBhcnNlZEl0ZW1zeyRleGNl
cHRpb25UeXBlfXsiY29uZGl0aW9uYWwifTsKQEAgLTE1Niw3ICsxNjYsMjAgQEAgc3ViIGdlbmVy
YXRlSW1wbGVtZW50YXRpb24oKQogICAgIHByaW50IEYgIlxuIjsKICAgICBwcmludCBGICJFeGNl
cHRpb25Db2RlRGVzY3JpcHRpb246OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihFeGNlcHRpb25D
b2RlIGVjKVxuIjsKICAgICBwcmludCBGICJ7XG4iOworICAgIHByaW50IEYgIiAgICBFeGNlcHRp
b25Db2RlRGVzY3JpcHRpb25JbXBsKGVjLCBTdHJpbmcoKSk7XG4iOworICAgIHByaW50IEYgIn1c
biI7CisgICAgcHJpbnQgRiAiXG4iOworICAgIHByaW50IEYgIkV4Y2VwdGlvbkNvZGVEZXNjcmlw
dGlvbjo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKEV4Y2VwdGlvbkNvZGUgZWMsIGNvbnN0IFN0
cmluZyYgY29udGV4dClcbiI7CisgICAgcHJpbnQgRiAie1xuIjsKKyAgICBwcmludCBGICIgICAg
RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uSW1wbChlYywgY29udGV4dCk7XG4iOworICAgIHByaW50
IEYgIn1cbiI7CisgICAgcHJpbnQgRiAiXG4iOworICAgIHByaW50IEYgInZvaWQgRXhjZXB0aW9u
Q29kZURlc2NyaXB0aW9uOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb25JbXBsKEV4Y2VwdGlvbkNv
ZGUgZWMsIGNvbnN0IFN0cmluZyYgY29udGV4dClcbiI7CisgICAgcHJpbnQgRiAie1xuIjsKICAg
ICBwcmludCBGICIgICAgQVNTRVJUKGVjKTtcbiI7CisgICAgcHJpbnQgRiAiXG4iOworICAgIHBy
aW50IEYgIiAgICB0aGlzLT5jb250ZXh0ID0gU3RyaW5nKGNvbnRleHQpO1xuIjsKKyAgICBwcmlu
dCBGICJcbiI7CiAKICAgICBmb3IgbXkgJGV4Y2VwdGlvblR5cGUgKHNvcnQga2V5cyAlcGFyc2Vk
SXRlbXMpIHsKICAgICAgICAgIyBET01Db3JlRXhjZXB0aW9uIG5lZWRzIHRvIGJlIGxhc3QgYmVj
YXVzZSBpdCdzIGEgY2F0Y2gtYWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDdkZWZiMzU5NWRjYjFhZGE5MjUyYTdl
YjYyMDgzNDU2NjU4YWI0YzQuLjAxZDc4YWU2ZjQ2NzNjMmMxYzgyOWU2YzU2NDFkOGNlNjUzYmZl
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5jcHAKQEAgLTYwOSwxMCArNjA5LDYgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHIK
IAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXBsYXlYSFIoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKIHsKLSAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IHho
ciA9IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUobV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpLT5kb2N1
bWVudCgpKTsKLSAgICBFeGNlcHRpb25Db2RlIGNvZGU7Ci0gICAgU3RyaW5nIGFjdHVhbFJlcXVl
c3RJZCA9IHJlcXVlc3RJZDsKLQogICAgIFhIUlJlcGxheURhdGEqIHhoclJlcGxheURhdGEgPSBt
X3Jlc291cmNlc0RhdGEtPnhoclJlcGxheURhdGEocmVxdWVzdElkKTsKICAgICBpZiAoIXhoclJl
cGxheURhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTYyMSw3ICs2MTcsMTAgQEAgdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpyZXBsYXlYSFIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCkKICAgICBpZiAoY2FjaGVkUmVzb3VyY2UpCiAgICAgICAgIG1lbW9yeUNhY2hl
KCktPnJlbW92ZShjYWNoZWRSZXNvdXJjZSk7CiAKLSAgICB4aHItPm9wZW4oeGhyUmVwbGF5RGF0
YS0+bWV0aG9kKCksIHhoclJlcGxheURhdGEtPnVybCgpLCB4aHJSZXBsYXlEYXRhLT5hc3luYygp
LCBjb2RlKTsKKyAgICBFeGNlcHRpb25Db2RlIGNvZGU7CisgICAgU3RyaW5nIGVycm9yQ29udGV4
dDsKKyAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IHhociA9IFhNTEh0dHBSZXF1ZXN0OjpjcmVh
dGUobV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKTsKKyAgICB4aHItPm9wZW4o
eGhyUmVwbGF5RGF0YS0+bWV0aG9kKCksIHhoclJlcGxheURhdGEtPnVybCgpLCB4aHJSZXBsYXlE
YXRhLT5hc3luYygpLCBjb2RlLCBlcnJvckNvbnRleHQpOwogICAgIEhUVFBIZWFkZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IHhoclJlcGxheURhdGEtPmhlYWRlcnMoKS5lbmQoKTsKICAgICBm
b3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0geGhyUmVwbGF5RGF0YS0+aGVh
ZGVycygpLmJlZ2luKCk7IGl0IT0gZW5kOyArK2l0KQogICAgICAgICB4aHItPnNldFJlcXVlc3RI
ZWFkZXIoaXQtPmZpcnN0LCBpdC0+c2Vjb25kLCBjb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCmluZGV4IDA5N2JjNDQyN2YwZDBjNGM2NTEyMGEzYjc5YWFmYmZkYjM0ZjQ0
YzguLjNhYmUxM2EzMDBjZTczMzZmN2JmYjBlY2Q3NWZjYjQ0NDVhNjNiZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNDQ0LDEyICs0NDQsMTIgQEAgYm9vbCBYTUxI
dHRwUmVxdWVzdDo6aXNBbGxvd2VkSFRUUEhlYWRlcihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAg
ICAgICYmICFuYW1lLnN0YXJ0c1dpdGgoc3RhdGljRGF0YS0+bV9zZWNIZWFkZXJQcmVmaXgsIGZh
bHNlKTsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhv
ZCwgY29uc3QgS1VSTCYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgWE1MSHR0cFJlcXVl
c3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgRXhjZXB0aW9u
Q29kZSYgZWMsIFN0cmluZyYgZXhjZXB0aW9uRGVzY3JpcHRpb24pCiB7Ci0gICAgb3BlbihtZXRo
b2QsIHVybCwgdHJ1ZSwgZWMpOworICAgIG9wZW4obWV0aG9kLCB1cmwsIHRydWUsIGVjLCBleGNl
cHRpb25EZXNjcmlwdGlvbik7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3Qg
U3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBj
b25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIEV4Y2VwdGlvbkNvZGUmIGVjLCBTdHJpbmcmIGV4
Y2VwdGlvbkRlc2NyaXB0aW9uKQogewogICAgIGludGVybmFsQWJvcnQoKTsKICAgICBTdGF0ZSBw
cmV2aW91c1N0YXRlID0gbV9zdGF0ZTsKQEAgLTQ3Niw2ICs0NzYsNyBAQCB2b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wg
YXN5bmMsIEV4YwogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb250ZW50U2Vj
dXJpdHlQb2xpY3koKS0+YWxsb3dDb25uZWN0VG9Tb3VyY2UodXJsKSkgewogICAgICAgICAvLyBG
SVhNRTogU2hvdWxkIHRoaXMgYmUgdGhyb3dpbmcgYW4gZXhjZXB0aW9uPwogICAgICAgICBlYyA9
IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgZXhjZXB0aW9uRGVzY3JpcHRpb24gPSAiWE1MSHR0cFJl
cXVlc3QgY29ubmVjdGlvbnMgdG8gJyIgKyB1cmwuc3RyaW5nKCkgKyAiJyBhcmUgYmxvY2tlZCBk
dWUgdG8gdGhpcyBwYWdlJ3MgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIjsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNTEzLDIxICs1MTQsMjEgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6
b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBF
eGMKICAgICAgICAgbV9zdGF0ZSA9IE9QRU5FRDsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6
b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBj
b25zdCBTdHJpbmcmIHVzZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBYTUxIdHRwUmVxdWVz
dDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5j
LCBjb25zdCBTdHJpbmcmIHVzZXIsIEV4Y2VwdGlvbkNvZGUmIGVjLCBTdHJpbmcmIGV4Y2VwdGlv
bkRlc2NyaXB0aW9uKQogewogICAgIEtVUkwgdXJsV2l0aENyZWRlbnRpYWxzKHVybCk7CiAgICAg
dXJsV2l0aENyZWRlbnRpYWxzLnNldFVzZXIodXNlcik7CiAKLSAgICBvcGVuKG1ldGhvZCwgdXJs
V2l0aENyZWRlbnRpYWxzLCBhc3luYywgZWMpOworICAgIG9wZW4obWV0aG9kLCB1cmxXaXRoQ3Jl
ZGVudGlhbHMsIGFzeW5jLCBlYywgZXhjZXB0aW9uRGVzY3JpcHRpb24pOwogfQogCi12b2lkIFhN
TEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiB1cmws
IGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCwg
RXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmlu
ZyYgbWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNl
ciwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCwgRXhjZXB0aW9uQ29kZSYgZWMsIFN0cmluZyYgZXhj
ZXB0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgS1VSTCB1cmxXaXRoQ3JlZGVudGlhbHModXJsKTsK
ICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcih1c2VyKTsKICAgICB1cmxXaXRoQ3JlZGVu
dGlhbHMuc2V0UGFzcyhwYXNzd29yZCk7CiAKLSAgICBvcGVuKG1ldGhvZCwgdXJsV2l0aENyZWRl
bnRpYWxzLCBhc3luYywgZWMpOworICAgIG9wZW4obWV0aG9kLCB1cmxXaXRoQ3JlZGVudGlhbHMs
IGFzeW5jLCBlYywgZXhjZXB0aW9uRGVzY3JpcHRpb24pOwogfQogCiBib29sIFhNTEh0dHBSZXF1
ZXN0Ojppbml0U2VuZChFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmgKaW5kZXggY2M2Y2JjNTBjMzYwMTY1MDg5ZTI2NTk5NzVjZDEwZDMxMTIyZWY1ZC4uNTA2
MzlkZDliMTA0MDc2NzQ1ODI4ZDBiYzE4YjBhNDU0YmE1YzVhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmgKQEAgLTgzLDEwICs4MywxMCBAQCBwdWJsaWM6CiAgICAgU3RhdGUgcmVh
ZHlTdGF0ZSgpIGNvbnN0OwogICAgIGJvb2wgd2l0aENyZWRlbnRpYWxzKCkgY29uc3QgeyByZXR1
cm4gbV9pbmNsdWRlQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHNldFdpdGhDcmVkZW50aWFscyhi
b29sLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9k
LCBjb25zdCBLVVJMJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgb3Blbihjb25zdCBTdHJp
bmcmIG1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmLCBib29sIGFzeW5j
LCBjb25zdCBTdHJpbmcmIHVzZXIsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIG9wZW4oY29u
c3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmLCBib29sIGFzeW5jLCBjb25zdCBTdHJpbmcm
IHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lk
IG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmLCBFeGNlcHRpb25Db2RlJiwg
U3RyaW5nJiBleGNlcHRpb25EZXNjcmlwdGlvbik7CisgICAgdm9pZCBvcGVuKGNvbnN0IFN0cmlu
ZyYgbWV0aG9kLCBjb25zdCBLVVJMJiwgYm9vbCBhc3luYywgRXhjZXB0aW9uQ29kZSYsIFN0cmlu
ZyYgZXhjZXB0aW9uRGVzY3JpcHRpb24pOworICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG1l
dGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwgRXhjZXB0
aW9uQ29kZSYsIFN0cmluZyYgZXhjZXB0aW9uRGVzY3JpcHRpb24pOworICAgIHZvaWQgb3Blbihj
b25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmlu
ZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCwgRXhjZXB0aW9uQ29kZSYsIFN0cmluZyYg
ZXhjZXB0aW9uRGVzY3JpcHRpb24pOwogICAgIHZvaWQgc2VuZChFeGNlcHRpb25Db2RlJik7CiAg
ICAgdm9pZCBzZW5kKERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2VuZChj
b25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmQ4YTM5NGU4YjNlYjA0YzUx
MjY1MjkyNzAxNjQyNjI1ODMxYWEzNS4uMTI5NDg2N2UxOTZmN2Q5NDU5MmY4ODk4ZDBiNWIyMWZj
NTk5MWFiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTI3ICBNaWtlIFdlc3QgIDxt
a3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3RzIGJsb2NrZWQgYnkg
Q1NQIHNob3VsZCB0aHJvdyBhIG1vcmUgZGVzY3JpcHRpdmUgZXhjZXB0aW9uLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc2NTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJsb2Nr
ZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJsb2NrZWQuaHRtbDoKKyAg
ICAgICAgICAgIEFkanVzdGluZyB0aGlzIHRlc3QgdG8gb3V0cHV0IHRoZSBuZXdseSBleHBlY3Rl
ZCBleGNlcHRpb24gbWVzc2FnZS4KKwogMjAxMi0wOS0yNyAgVnNldm9sb2QgVmxhc292ICA8dnNl
dmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGluc3BlY3RvciB0ZXN0IHVu
c2tpcHBlZCBvbiBxdCwgZXhwZWN0YXRpb25zIHVwZGF0ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9jb25uZWN0LXNy
Yy14bWxodHRwcmVxdWVzdC1ibG9ja2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHBy
ZXF1ZXN0LWJsb2NrZWQtZXhwZWN0ZWQudHh0CmluZGV4IDE0ZDI4NGMxZjg2N2M2YzUzODEwNmRi
NWJhOWZkYWQ3ZTc1OWVhOGMuLjJlZjA3ZGM4OTEwNjgxNTY5ZmFiNjVjOTYxYjU4ZWZjNjU3ZmE2
ZGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJsb2NrZWQtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJsb2NrZWQtZXhwZWN0ZWQudHh0CkBA
IC0xLDQgKzEsNCBAQAogQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGNvbm5lY3QgdG8gJ2h0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZ2V0LnR4dCcgYmVj
YXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRp
cmVjdGl2ZTogImNvbm5lY3Qtc3JjIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIuCiAKLVBhc3MKK1Bh
c3MuIEV4Y2VwdGlvbjogU0VDVVJJVFlfRVJSOiBET00gRXhjZXB0aW9uIDE4LiBYTUxIdHRwUmVx
dWVzdCBjb25uZWN0aW9ucyB0byAnaHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0
L3Jlc291cmNlcy9nZXQudHh0JyBhcmUgYmxvY2tlZCBkdWUgdG8gdGhpcyBwYWdlJ3MgQ29udGVu
dCBTZWN1cml0eSBQb2xpY3kuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0
LWJsb2NrZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJsb2NrZWQuaHRtbAppbmRl
eCAzZTlkMTJmMzJlODRjNDY5NzQ2NzMzODcxY2Q5MzZhZWViNzc2ZjI1Li5jNDhlZGE1YTU0MTFl
ZjUzNTZkYzE2NzUwMmNlMzY2NzdjZGUwZGEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9jb25uZWN0LXNyYy14bWxodHRw
cmVxdWVzdC1ibG9ja2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvY29ubmVjdC1zcmMteG1saHR0cHJlcXVlc3QtYmxvY2tl
ZC5odG1sCkBAIC0yMCw3ICsyMCw3IEBAIHRyeSB7CiAgICAgeGhyLm9wZW4oIkdFVCIsICJodHRw
Oi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2dldC50eHQiLCB0cnVl
KTsgCiAgICAgbG9nKCJGYWlsIik7CiB9IGNhdGNoKGUpIHsKLSAgICBsb2coIlBhc3MiKTsKKyAg
ICBsb2coIlBhc3MuIEV4Y2VwdGlvbjogIiArIGUubWVzc2FnZSk7CiB9CiAKIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166300</attachid>
            <date>2012-09-28 13:04:14 -0700</date>
            <delta_ts>2012-09-28 18:39:53 -0700</delta_ts>
            <desc>WIP: first pass at JSC Inspector-only context.</desc>
            <filename>bug-97654-20120928220329.patch</filename>
            <type>text/plain</type>
            <size>27357</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzUyY2Q4ODFiMDE1YjZl
ZWQzOTUxZTBmOGNlODRhNDhhMDI2ZDQxNy4uOGYxM2I0M2QzYjM1MGVkY2QyMTU3YTM2ZWZmNTc1
MGI1OTIxMTViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTA5LTI3ICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3RzIGJs
b2NrZWQgYnkgQ1NQIHNob3VsZCB0aHJvdyBhIG1vcmUgZGVzY3JpcHRpdmUgZXhjZXB0aW9uLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc2NTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBET00gZXhjZXB0
aW9ucyBpbiBnZW5lcmFsIGhhdmUgcmVsYXRpdmVseSBwb29yIGRlc2NyaXB0aW9ucy4gSW4gdGhp
cworICAgICAgICBjYXNlLCBibG9ja2luZyBhbiBYTUxIdHRwUmVxdWVzdCB2aWEgQ1NQIHRocm93
cyBhbiBleGNlcHRpb24gd2l0aCB0aGUKKyAgICAgICAgbWVzc2FnZSAiU0VDVVJJVFlfRVJSOiBE
T00gRXhjZXB0aW9uIDE4Ii4gTm90IG9ubHkgZG9lcyB0aGlzIG5vdCBnaXZlCisgICAgICAgIGRl
dmVsb3BlcnMgYW55dGhpbmcgdXNlZnVsIHRvIHdvcmsgd2l0aCwgaXQncyBhbHNvIHRoZSBleGFj
dCBzYW1lCisgICAgICAgIG1lc3NhZ2UgdXNlZCBpbiB+MzAgb3RoZXIgY2FzZXMgaW4gV2ViS2l0
LiBXZSBjYW4gZG8gYmV0dGVyLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZmlyc3Qgc2V0cyB1cCBz
b21lIHBsdW1iaW5nIHRocm91Z2ggSlNDIGFuZCBWOCB0byBhbGxvdyBhCisgICAgICAgICdjb250
ZXh0JyBTdHJpbmcgdG8gYmUgcGFzc2VkIGRvd24gaW50byB0aGUgZXhjZXB0aW9uLCBhbmQgYWRq
dXN0cworICAgICAgICBFeGNlcHRpb25CYXNlIHRvIHVzZSB0aGF0IG5ldyBzdHJpbmcgd2hlbiBy
ZW5kZXJpbmcgdGhlIGV4Y2VwdGlvbidzCisgICAgICAgIG1lc3NhZ2UuCisKKyAgICAgICAgV2l0
aCB0aGF0IHBsdW1iaW5nIGluIHBsYWNlLCB0aGUgY2hhbmdlcyB0byBYTUxIdHRwUmVxdWVzdCBh
cmUKKyAgICAgICAgc3RyYWlnaHRmb3J3YXJkLCBnZW5lcmF0aW5nIHRoZSBzdHJpbmcgYWxvbmcg
d2l0aCB0aGUgZXJyb3IgY29kZSwgYW5kCisgICAgICAgIGVuc3VyaW5nIHRoYXQgaXQncyBoYW5k
ZWQgb2ZmIHRvIHRoZSBiaW5kaW5ncyBjb3JyZWN0bHkuCisKKyAgICAgICAgVGhlIG5ldyBlcnJv
ciBtZXNzYWdlIGlzIGNvdmVyZWQgYnkgc2xpZ2h0IG1vZGlmaWNhdGlvbnMgdG8gdGhlIGV4aXN0
aW5nCisgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Nv
bm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJsb2NrZWQuaHRtbC4KKyAgICAgICAgRXZlcnl0aGlu
ZyBlbHNlIHNob3VsZCBzdGF5IGV4YWN0bHkgYXMtaXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0RE9NRXhjZXB0aW9uKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
OgorICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uIG5vdyBvcHRpb25hbGx5IGFjY2VwdHMgYW4g
J2V4Y2VwdGlvbkNvbnRleHQnIHN0cmluZywKKyAgICAgICAgICAgIGFuZCBwYXNzZXMgaXQgaW50
byB0aGUgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGNvbnN0cnVjdG9yIHNvIHRoYXQKKyAgICAg
ICAgICAgIGl0J3Mgc3RvcmVkIGFsb25nIHdpdGggdGhlIGdlbmVyYXRlZCBleGNlcHRpb24uCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6Om9wZW4pOgor
ICAgICAgICAgICAgUGFzcyAnZXhjZXB0aW9uQ29udGV4dCcgaW50byAnWE1MSHR0cFJlcXVlc3Qt
Pm9wZW4nIGFuZCBpbnRvCisgICAgICAgICAgICAnSlNDOjpzZXRET01FeGNlcHRpb24nLgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRE
T01FeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgICAgIHNldERPTUV4Y2Vw
dGlvbiBub3cgb3B0aW9uYWxseSBhY2NlcHRzIGFuICdleGNlcHRpb25Db250ZXh0JyBzdHJpbmcs
CisgICAgICAgICAgICBhbmQgcGFzc2VzIGl0IGludG8gJ1Y4VGhyb3dFeGNlcHRpb246OnNldERP
TUV4Y2VwdGlvbicuIFNhbWUgYXMKKyAgICAgICAgICAgIEpTQywganVzdCBvbmUgbW9yZSBsZXZl
bCBvZiBpbmRpcmVjdGlvbi4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFRocm93RXhjZXB0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGhyb3dFeGNlcHRpb246OnNldERPTUV4Y2VwdGlv
bik6CisgICAgICAgICAgICBzZXRET01FeGNlcHRpb24gbm93IG9wdGlvbmFsbHkgYWNjZXB0cyBh
biAnZXhjZXB0aW9uQ29udGV4dCcgc3RyaW5nLAorICAgICAgICAgICAgYW5kIHBhc3NlcyBpdCBp
bnRvIHRoZSBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gY29uc3RydWN0b3Igc28gdGhhdAorICAg
ICAgICAgICAgaXQncyBzdG9yZWQgYWxvbmcgd2l0aCB0aGUgZ2VuZXJhdGVkIGV4Y2VwdGlvbi4K
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFRocm93RXhjZXB0aW9uLmg6CisgICAgICAgIChXVEYp
OgorICAgICAgICAoVjhUaHJvd0V4Y2VwdGlvbik6CisgICAgICAgICAgICBBZGQgZm9yd2FyZCBk
ZWNsYXJhdGlvbiBvZiAnV1RGOjpTdHJpbmcnIHRvIGF2b2lkIGluY2x1ZGluZyBoZWFkZXJzCisg
ICAgICAgICAgICBhbmQgYWRqdXN0IHRoZSBzaWduYXR1cmUgb2Ygc2V0RE9NRXhjZXB0aW9uLgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4WE1MSHR0cFJlcXVlc3Q6Om9wZW5DYWxsYmFjayk6CisgICAg
ICAgICAgICBQYXNzICdleGNlcHRpb25Db250ZXh0JyBpbnRvICdYTUxIdHRwUmVxdWVzdC0+b3Bl
bicgYW5kIGludG8KKyAgICAgICAgICAgICdzZXRET01FeGNlcHRpb24nLgorICAgICAgICAqIGRv
bS9FeGNlcHRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2VwdGlvbkJhc2U6OkV4
Y2VwdGlvbkJhc2UpOgorICAgICAgICAgICAgSWYgdGhlIGV4Y2VwdGlvbiBoYXMgYWRkaXRpb25h
bCAnY29udGV4dCcsIGFwcGVuZCBpdCB0byB0aGUgbWVzc2FnZS4KKyAgICAgICAgKiBkb20vbWFr
ZV9kb21fZXhjZXB0aW9ucy5wbDoKKyAgICAgICAgKGdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAg
KGdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAgICAgSW5jbHVkZSBXVEZTdHJpbmcu
aCwgYW5kIGFjY2VwdCBvbmUgd2hlbiBjb25zdHJ1Y3RpbmcgYW4KKyAgICAgICAgICAgIEV4Y2Vw
dGlvbkNvZGVEZXNjcmlwdGlvbi4gU3RvcmUgYSBjb3B5IG9mIHRoZSBwcm92aWRlZCBTdHJpbmcK
KyAgICAgICAgICAgIG9uIHRoZSBFcnJvckNvZGVEZXNjcmlwdGlvbiBvYmplY3QgZm9yIGxhdGVy
IHVzZSBpbiBFeGNlcHRpb25CYXNlLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6
OnJlcGxheVhIUik6CisgICAgICAgICAgICBQYXNzICdleGNlcHRpb25Db250ZXh0JyBpbnRvICdY
TUxIdHRwUmVxdWVzdC0+b3BlbicuCisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpvcGVuKToKKyAgICAgICAgKiB4bWwv
WE1MSHR0cFJlcXVlc3QuaDoKKyAgICAgICAgKFhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgICAg
IEFjY2VwdCBhIG5ldyAnZXhjZXB0aW9uQ29udGV4dCcgYXJndW1lbnQsIGFuZCBwb3B1bGF0ZSBp
dCB3aXRoIG5pY2UKKyAgICAgICAgICAgIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gd2hlbiBibG9j
a2luZyBhbiBYTUxIdHRwUmVxdWVzdC0+b3BlbigpIGNhbGwKKyAgICAgICAgICAgIGJlY2F1c2Ug
b2YgdGhlIHBhZ2UncyBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4KKwogMjAxMi0wOS0yOCAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2xlYW4gdXAgTG9jYWxp
emVyLXJlbGF0ZWQgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcAppbmRleCBmZTA4NGVhNGRmYjQwMjI1NjdkMTc2NGM2ODNkN2ZjN2Y4NTkzZmZl
Li40ZjYwNzczZTkyMjFkM2MwZWYwOTkwOGUyNTY5NDk5OTY3ZTY4NmFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQCB2
b2lkIHJlcG9ydEV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXhjZXB0aW9uKQog
ICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CiAKICAgICBpZiAoRXhjZXB0aW9uQmFzZSogZXhj
ZXB0aW9uQmFzZSA9IHRvRXhjZXB0aW9uQmFzZShleGNlcHRpb24pKQotICAgICAgICBlcnJvck1l
c3NhZ2UgPSBleGNlcHRpb25CYXNlLT5tZXNzYWdlKCkgKyAiOiAiICArIGV4Y2VwdGlvbkJhc2Ut
PmRlc2NyaXB0aW9uKCk7CisgICAgICAgIGVycm9yTWVzc2FnZSA9IGV4Y2VwdGlvbkJhc2UtPm1l
c3NhZ2UoKSArICI6ICIgICsgKGV4Y2VwdGlvbkJhc2UtPmNvbnRleHQoKS5pc0VtcHR5KCkgPyBl
eGNlcHRpb25CYXNlLT5kZXNjcmlwdGlvbigpIDogZXhjZXB0aW9uQmFzZS0+Y29udGV4dCgpKTsK
IAogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogICAgIGlmIChKU0RPTVdp
bmRvdyogd2luZG93ID0ganNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCkp
IHsKQEAgLTE4MSw2ICsxODEsMTEgQEAgdm9pZCByZXBvcnRDdXJyZW50RXhjZXB0aW9uKEV4ZWNT
dGF0ZSogZXhlYykKIAogdm9pZCBzZXRET01FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNl
cHRpb25Db2RlIGVjKQogeworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYywgU3RyaW5nKCkp
OworfQorCit2b2lkIHNldERPTUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2VwdGlvbkNv
ZGUgZWMsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9uQ29udGV4dCkKK3sKICAgICBpZiAoIWVjIHx8
IGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE5NCw3ICsxOTks
NyBAQCB2b2lkIHNldERPTUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2VwdGlvbkNvZGUg
ZWMpCiAgICAgLy8gZnJhbWVzWzBdLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobnVsbCwgbnVsbCk7
IC8vIHRocm93cyBhbiBleGNlcHRpb24gd2hpY2ggc2hvdWxkIGhhdmUgdGhlIHN1YmZyYW1lcyBw
cm90b3R5cGVzLgogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBkZXByZWNh
dGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKGV4ZWMpOwogCi0gICAgRXhjZXB0aW9uQ29kZURl
c2NyaXB0aW9uIGRlc2NyaXB0aW9uKGVjKTsKKyAgICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24g
ZGVzY3JpcHRpb24oZWMsIGV4Y2VwdGlvbkNvbnRleHQpOwogCiAgICAgSlNWYWx1ZSBlcnJvck9i
amVjdDsKICAgICBzd2l0Y2ggKGRlc2NyaXB0aW9uLnR5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggMWVmYTRiMzA0ZjYyYjcwMTVlYTFlNWRlNzFj
MmVjOGRlNGJjNTgwYi4uOWU3NmUyNWFiN2JmZGQzM2I3YjQzOWE5NmEyZTU4MTcyOTg5NjQ0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTIzMiw2ICsy
MzIsNyBAQCBlbnVtIFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogCiAgICAgLy8gQ29udmVydCBh
IERPTSBpbXBsZW1lbnRhdGlvbiBleGNlcHRpb24gY29kZSBpbnRvIGEgSmF2YVNjcmlwdCBleGNl
cHRpb24gaW4gdGhlIGV4ZWN1dGlvbiBzdGF0ZS4KICAgICB2b2lkIHNldERPTUV4Y2VwdGlvbihK
U0M6OkV4ZWNTdGF0ZSosIEV4Y2VwdGlvbkNvZGUpOworICAgIHZvaWQgc2V0RE9NRXhjZXB0aW9u
KEpTQzo6RXhlY1N0YXRlKiwgRXhjZXB0aW9uQ29kZSwgY29uc3QgU3RyaW5nJik7CiAKICAgICBK
U0M6OkpTVmFsdWUganNTdHJpbmdXaXRoQ2FjaGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJp
bmcmKTsKICAgICBKU0M6OkpTVmFsdWUganNTdHJpbmdXaXRoQ2FjaGVTbG93Q2FzZShKU0M6OkV4
ZWNTdGF0ZSosIEpTU3RyaW5nQ2FjaGUmLCBTdHJpbmdJbXBsKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IDkw
YmQ0OGI3ZjU2N2IyNjUzODhhMDJjYTVlNzg4YTY4NmU0ZTM0NzguLmZjNGMyNjAyZGFjMzE0NWIy
MmIwYmM0NTg4Mjg4ZWUxYjZmYzZkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCkBAIC04OCw2ICs4OCw3IEBAIEpT
VmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6b3BlbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgU3RyaW5n
IG1ldGhvZCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
IAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFN0cmluZyBleGNlcHRpb25Db250ZXh0
OwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMykgewogICAgICAgICBib29sIGFz
eW5jID0gZXhlYy0+YXJndW1lbnQoMikudG9Cb29sZWFuKGV4ZWMpOwogCkBAIC05NiwxNSArOTcs
MTUgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYykKIAog
ICAgICAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSA1ICYmICFleGVjLT5hcmd1
bWVudCg0KS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nIHBhc3N3b3Jk
ID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soZXhlYywgZXhlYy0+YXJndW1lbnQoNCkpOwot
ICAgICAgICAgICAgICAgIGltcGwoKS0+b3BlbihtZXRob2QsIHVybCwgYXN5bmMsIHVzZXIsIHBh
c3N3b3JkLCBlYyk7CisgICAgICAgICAgICAgICAgaW1wbCgpLT5vcGVuKG1ldGhvZCwgdXJsLCBh
c3luYywgdXNlciwgcGFzc3dvcmQsIGVjLCBleGNlcHRpb25Db250ZXh0KTsKICAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgIGltcGwoKS0+b3BlbihtZXRob2QsIHVybCwgYXN5bmMs
IHVzZXIsIGVjKTsKKyAgICAgICAgICAgICAgICBpbXBsKCktPm9wZW4obWV0aG9kLCB1cmwsIGFz
eW5jLCB1c2VyLCBlYywgZXhjZXB0aW9uQ29udGV4dCk7CiAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgaW1wbCgpLT5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgZWMpOworICAgICAgICAgICAg
aW1wbCgpLT5vcGVuKG1ldGhvZCwgdXJsLCBhc3luYywgZWMsIGV4Y2VwdGlvbkNvbnRleHQpOwog
ICAgIH0gZWxzZQotICAgICAgICBpbXBsKCktPm9wZW4obWV0aG9kLCB1cmwsIGVjKTsKKyAgICAg
ICAgaW1wbCgpLT5vcGVuKG1ldGhvZCwgdXJsLCBlYywgZXhjZXB0aW9uQ29udGV4dCk7CiAKLSAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBl
YywgZXhjZXB0aW9uQ29udGV4dCk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IGQyMmU3NzUwNzVkMzky
ZTdjNDdhZTIzMjlkYjBlNzAzNWJiMzZlZjMuLjM1NzQ0ZWZlYTg0MjNjMDAxY2Y1ODkwYmJlNTRl
ZTk0ZDNhYWRkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Qmlu
ZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApA
QCAtNjQsNyArNjQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gc2V0RE9NRXhjZXB0aW9uKGludCBleGNlcHRpb25Db2RlLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKIHsKLSAgICByZXR1cm4gVjhUaHJvd0V4Y2VwdGlvbjo6c2V0RE9NRXhjZXB0aW9uKGV4
Y2VwdGlvbkNvZGUsIGlzb2xhdGUpOworICAgIHJldHVybiBWOFRocm93RXhjZXB0aW9uOjpzZXRE
T01FeGNlcHRpb24oZXhjZXB0aW9uQ29kZSwgU3RyaW5nKCksIGlzb2xhdGUpOworfQorCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gc2V0RE9NRXhjZXB0aW9uKGludCBleGNlcHRpb25Db2RlLCBjb25z
dCBTdHJpbmcmIGV4Y2VwdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAg
IHJldHVybiBWOFRocm93RXhjZXB0aW9uOjpzZXRET01FeGNlcHRpb24oZXhjZXB0aW9uQ29kZSwg
ZXhjZXB0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
aHJvd0Vycm9yKEVycm9yVHlwZSBlcnJvclR5cGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRl
eCBhNDBlNzVhYWVmMzM3NTNkMzQ4N2QzNTQ2ZDNjNTBlNWRkNzA0ZTg0Li44YWMwNmI4MmMwNmYx
ZGRjNDMzY2NiNGZlMjliMmQyZTRiODQ0NTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmcuaApAQCAtNTgsNiArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8g
U2NoZWR1bGUgYSBET00gZXhjZXB0aW9uIHRvIGJlIHRocm93biwgaWYgdGhlIGV4Y2VwdGlvbiBj
b2RlIGlzIGRpZmZlcmVudAogICAgIC8vIGZyb20gemVyby4KICAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gc2V0RE9NRXhjZXB0aW9uKGludCwgdjg6Oklzb2xhdGUqKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gc2V0RE9NRXhjZXB0aW9uKGludCwgY29uc3QgU3RyaW5nJiwgdjg6Oklzb2xh
dGUqKTsKIAogICAgIC8vIFNjaGVkdWxlIGEgSmF2YVNjcmlwdCBlcnJvciB0byBiZSB0aHJvd24u
CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRocm93RXJyb3IoRXJyb3JUeXBlLCBjb25zdCBj
aGFyKiwgdjg6Oklzb2xhdGUqID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFRocm93RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4VGhyb3dFeGNlcHRpb24uY3BwCmluZGV4IGYwYWRjMDEyZjY0ZWMzNzY0NjllZGUzNGFlZDlm
Zjg5OWJiYjFmNzkuLjI2NzNmMDE2ZDFjNjhmZWFkMmI4MjhlNDUyMTI5OWFkZDFjZmUzZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VGhyb3dFeGNlcHRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VGhyb3dFeGNlcHRpb24uY3BwCkBA
IC00OCw3ICs0OCw3IEBAIHN0YXRpYyB2b2lkIGRvbUV4Y2VwdGlvblN0YWNrU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhCiAgICAgICAgIGV4Y2VwdGlv
biA9IHRvVjgoaW50ZXJmYWNlTmFtZTo6Y3JlYXRlKGRlc2NyaXB0aW9uKSwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PigpLCBpc29sYXRlKTsgXAogICAgICAgICBicmVhazsKIAotdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4VGhyb3dFeGNlcHRpb246OnNldERPTUV4Y2VwdGlvbihpbnQgZWMsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGhyb3dFeGNlcHRpb246
OnNldERPTUV4Y2VwdGlvbihpbnQgZWMsIGNvbnN0IFdURjo6U3RyaW5nJiBleGNlcHRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBpZiAoZWMgPD0gMCB8fCB2ODo6Vjg6
OklzRXhlY3V0aW9uVGVybWluYXRpbmcoKSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7
CkBAIC01Niw3ICs1Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRocm93RXhjZXB0aW9u
OjpzZXRET01FeGNlcHRpb24oaW50IGVjLCB2ODo6SXNvbGF0ZSogaXNvCiAgICAgaWYgKGVjID09
IE5BVElWRV9UWVBFX0VSUikKICAgICAgICAgcmV0dXJuIFY4VGhyb3dFeGNlcHRpb246OnRocm93
VHlwZUVycm9yKDAsIGlzb2xhdGUpOwogCi0gICAgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uKGVjKTsKKyAgICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZGVzY3JpcHRpb24o
ZWMsIGV4Y2VwdGlvbkNvbnRleHQpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2Vw
dGlvbjsKICAgICBzd2l0Y2ggKGRlc2NyaXB0aW9uLnR5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VGhyb3dFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4VGhyb3dFeGNlcHRpb24uaAppbmRleCA0ZjUzZDIyODIyNzM5ODgwMjdk
ZjUwMWYzZTQ1NmE3YTlkY2VkYjU4Li5jNzVjNzRhNzM1OTI5ZjdkNjBmNDVlYzc2OTNhN2RlMTdj
NzBlMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFRocm93RXhj
ZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhUaHJvd0V4Y2VwdGlv
bi5oCkBAIC0yNyw2ICsyNywxMCBAQAogCiAjaW5jbHVkZSA8djguaD4KIAorbmFtZXNwYWNlIFdU
RiB7CitjbGFzcyBTdHJpbmc7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBFcnJv
clR5cGUgewpAQCAtMzksNyArNDMsNyBAQCBlbnVtIEVycm9yVHlwZSB7CiAKIGNsYXNzIFY4VGhy
b3dFeGNlcHRpb24gewogcHVibGljOgotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
c2V0RE9NRXhjZXB0aW9uKGludCwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHNldERPTUV4Y2VwdGlvbihpbnQsIGNvbnN0IFdURjo6U3RyaW5nJiwgdjg6
Oklzb2xhdGUqKTsKIAogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdGhyb3dFcnJv
cihFcnJvclR5cGUsIGNvbnN0IGNoYXIqLCB2ODo6SXNvbGF0ZSogPSAwKTsKICAgICBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRocm93RXJyb3Iodjg6OkxvY2FsPHY4OjpWYWx1ZT4sIHY4
OjpJc29sYXRlKiA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IDg1ODQ1NjBiNGJh
OGY4OTA3OGU3ZDRhMWZiNmFjYTI3ZDdlNGI3MTMuLmU3MDVhZTJiNTA1ZmI4NzYxOTUxYTkxN2Ux
MzFkNTg5YjUwMDllMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTEyMiwyNSArMTIy
LDI2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpvcGVuQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBLVVJMIHVybCA9IGNvbnRleHQtPmNv
bXBsZXRlVVJMKHVybHN0cmluZyk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBT
dHJpbmcgZXhjZXB0aW9uQ29udGV4dCA9IFN0cmluZygpOwogCiAgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPj0gMykgewogICAgICAgICBib29sIGFzeW5jID0gYXJnc1syXS0+Qm9vbGVhblZhbHVlKCk7
CiAKICAgICAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPj0gNCAmJiAhYXJnc1szXS0+SXNVbmRlZmlu
ZWQoKSkgewogICAgICAgICAgICAgU3RyaW5nIHVzZXIgPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVs
bENoZWNrKGFyZ3NbM10pOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChhcmdzLkxl
bmd0aCgpID49IDUgJiYgIWFyZ3NbNF0tPklzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAgICAg
ICBTdHJpbmcgcGFzc3dkID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayhhcmdzWzRdKTsK
LSAgICAgICAgICAgICAgICB4bWxIdHRwUmVxdWVzdC0+b3BlbihtZXRob2QsIHVybCwgYXN5bmMs
IHVzZXIsIHBhc3N3ZCwgZWMpOworICAgICAgICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5vcGVu
KG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgcGFzc3dkLCBlYywgZXhjZXB0aW9uQ29udGV4dCk7
CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB4bWxIdHRwUmVxdWVzdC0+b3Bl
bihtZXRob2QsIHVybCwgYXN5bmMsIHVzZXIsIGVjKTsKKyAgICAgICAgICAgICAgICB4bWxIdHRw
UmVxdWVzdC0+b3BlbihtZXRob2QsIHVybCwgYXN5bmMsIHVzZXIsIGVjLCBleGNlcHRpb25Db250
ZXh0KTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB4bWxIdHRwUmVxdWVzdC0+b3Blbiht
ZXRob2QsIHVybCwgYXN5bmMsIGVjKTsKKyAgICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5vcGVu
KG1ldGhvZCwgdXJsLCBhc3luYywgZWMsIGV4Y2VwdGlvbkNvbnRleHQpOwogICAgIH0gZWxzZQot
ICAgICAgICB4bWxIdHRwUmVxdWVzdC0+b3BlbihtZXRob2QsIHVybCwgZWMpOworICAgICAgICB4
bWxIdHRwUmVxdWVzdC0+b3BlbihtZXRob2QsIHVybCwgZWMsIGV4Y2VwdGlvbkNvbnRleHQpOwog
CiAgICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdl
dElzb2xhdGUoKSk7CisgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGV4Y2VwdGlv
bkNvbnRleHQsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQmFzZS5jcHAKaW5kZXggNDU1MWU4ZGEwYjBl
Y2ViZDQwZGM0NzM4ZTYyZGQ0M2MyNmE5Y2Q3OS4uZGMyZDc3NjJjNjYzMjdiOGYwYWI1NGU0YTgw
Zjg3MTIzMzAwNDA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25CYXNlLmNwcApAQCAtMzgs
NiArMzgsNyBAQCBFeGNlcHRpb25CYXNlOjpFeGNlcHRpb25CYXNlKGNvbnN0IEV4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCiAgICAgOiBtX2NvZGUoZGVzY3JpcHRpb24uY29k
ZSkKICAgICAsIG1fbmFtZShkZXNjcmlwdGlvbi5uYW1lKQogICAgICwgbV9kZXNjcmlwdGlvbihk
ZXNjcmlwdGlvbi5kZXNjcmlwdGlvbikKKyAgICAsIG1fY29udGV4dChkZXNjcmlwdGlvbi5jb250
ZXh0KQogewogICAgIGlmIChkZXNjcmlwdGlvbi5uYW1lKQogICAgICAgICBtX21lc3NhZ2UgPSBT
dHJpbmcoZGVzY3JpcHRpb24ubmFtZSkgKyAiOiAiICsgZGVzY3JpcHRpb24udHlwZU5hbWUgKyAi
IEV4Y2VwdGlvbiAiICsgU3RyaW5nOjpudW1iZXIoZGVzY3JpcHRpb24uY29kZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V4Y2VwdGlvbkJhc2UuaAppbmRleCAwMWU1ZjFkOWRmZWQyZGE2NjNlMmIxYzkyNjhmYTRm
Y2RhOWYzZTVhLi40NWY1NjU0N2I0ZjZjMDM2MzZjZGJjZjhmMDg4NGE2MmQ2ZmU4NjExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uQmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FeGNlcHRpb25CYXNlLmgKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGljOgogICAg
IFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgU3RyaW5nIG1lc3Nh
Z2UoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KICAgICBTdHJpbmcgZGVzY3JpcHRpb24o
KSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0aW9uOyB9CisgICAgU3RyaW5nIGNvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0
OwogCkBAIC01NCw2ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBT
dHJpbmcgbV9tZXNzYWdlOwogICAgIFN0cmluZyBtX2Rlc2NyaXB0aW9uOworICAgIFN0cmluZyBt
X2NvbnRleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vbWFrZV9kb21fZXhjZXB0aW9ucy5wbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9tYWtlX2RvbV9leGNlcHRpb25zLnBsCmluZGV4IDJhYmE3Y2RkYTM0MGIxOTZkNmMwZjliY2Vj
ODhkZDY5NTg2OWRmNWUuLjdlZDcyMmU5OTY1YTJkY2Y2ZjZhMDRkNjRhZDgwOGZkMWEwNTJhZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2RvbV9leGNlcHRpb25zLnBsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2RvbV9leGNlcHRpb25zLnBsCkBAIC03OSw2ICs3
OSw4IEBAIHN1YiBnZW5lcmF0ZUhlYWRlcigpCiAgICAgcHJpbnQgRiAiI2lmbmRlZiBFeGNlcHRp
b25Db2RlRGVzY3JpcHRpb25faFxuIjsKICAgICBwcmludCBGICIjZGVmaW5lIEV4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbl9oXG4iOwogICAgIHByaW50IEYgIlxuIjsKKyAgICBwcmludCBGICIjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+XG4iOworICAgIHByaW50IEYgIlxuIjsKICAgICBw
cmludCBGICJuYW1lc3BhY2UgV2ViQ29yZSB7XG4iOwogICAgIHByaW50IEYgIlxuIjsKICAgICBw
cmludCBGICJ0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlO1xuIjsKQEAgLTk3LDYgKzk5LDggQEAg
c3ViIGdlbmVyYXRlSGVhZGVyKCkKICAgICBwcmludCBGICJcbiI7CiAgICAgcHJpbnQgRiAic3Ry
dWN0IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiB7XG4iOwogICAgIHByaW50IEYgIiAgICBleHBs
aWNpdCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSk7XG4iOworICAgIHBy
aW50IEYgIiAgICBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSwgY29uc3Qg
U3RyaW5nJiBjb250ZXh0KTtcbiI7CisgICAgcHJpbnQgRiAiICAgIHZvaWQgRXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uSW1wbChFeGNlcHRpb25Db2RlLCBjb25zdCBTdHJpbmcmIGNvbnRleHQpO1xu
IjsKICAgICBwcmludCBGICJcbiI7CiAgICAgcHJpbnQgRiAiICAgIC8vIHx0eXBlTmFtZXwgaGFz
IHNwYWNlcyBhbmQgaXMgc3VpdGFibGUgZm9yIHVzZSBpbiBleGNlcHRpb25cbiI7CiAgICAgcHJp
bnQgRiAiICAgIC8vIGRlc2NyaXB0aW9uIHN0cmluZ3M7IG1heGltdW0gbGVuZ3RoIGlzIDEwIGNo
YXJhY3RlcnMuXG4iOwpAQCAtMTExLDggKzExNSwxMyBAQCBzdWIgZ2VuZXJhdGVIZWFkZXIoKQog
ICAgIHByaW50IEYgIiAgICAvLyBleGNlcHRpb24gc3RyaW5ncy4gSXQgaXMgYSBtb3JlIHJlYWRh
YmxlIGV4cGxhbmF0aW9uIG9mIGVycm9yLlxuIjsKICAgICBwcmludCBGICIgICAgY29uc3QgY2hh
ciogZGVzY3JpcHRpb247XG4iOwogICAgIHByaW50IEYgIlxuIjsKKyAgICBwcmludCBGICIgICAg
Ly8gfGNvbnRleHR8IGlzIGFkZGl0aW9uYWwgY29udGV4dCwgb3B0aW9uYWxseSBwcm92aWRlZCB3
aGVuIHRoZVxuIjsKKyAgICBwcmludCBGICIgICAgLy8gZXhjZXB0aW9uIGlzIGdlbmVyYXRlZC4g
SXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgbmFtZSBhbmRcbiI7CisgICAgcHJpbnQgRiAiICAgIC8v
ICBkZXNjcmlwdGlvbiB3aGVuIHRoZSBleGNlcHRpb24gaXMgcHJlc2VudGVkIHRvIGEgZGV2ZWxv
cGVyLlxuIjsKKyAgICBwcmludCBGICIgICAgU3RyaW5nIGNvbnRleHQ7XG4iOworICAgIHByaW50
IEYgIlxuIjsKICAgICBwcmludCBGICIgICAgLy8gfGNvZGV8IGlzIHRoZSBudW1lcmljIHZhbHVl
IG9mIHRoZSBleGNlcHRpb24gd2l0aGluIGEgcGFydGljdWxhciB0eXBlLlxuIjsKLSAgICBwcmlu
dCBGICIgICAgaW50IGNvZGU7IFxuIjsKKyAgICBwcmludCBGICIgICAgaW50IGNvZGU7XG4iOwog
ICAgIHByaW50IEYgIlxuIjsKICAgICBwcmludCBGICIgICAgRXhjZXB0aW9uVHlwZSB0eXBlO1xu
IjsKICAgICBwcmludCBGICJ9O1xuIjsKQEAgLTE0Miw2ICsxNTEsNyBAQCBzdWIgZ2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbigpCiAgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJFeGNlcHRpb25Db2RlRGVz
Y3JpcHRpb24uaFwiXG4iOwogICAgIHByaW50IEYgIlxuIjsKICAgICBwcmludCBGICIjaW5jbHVk
ZSBcIkV4Y2VwdGlvbkNvZGUuaFwiXG4iOworICAgIHByaW50IEYgIiNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD5cbiI7CiAKICAgICBmb3IgbXkgJGV4Y2VwdGlvblR5cGUgKHNvcnQga2V5
cyAlcGFyc2VkSXRlbXMpIHsKICAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJHBhcnNlZEl0ZW1z
eyRleGNlcHRpb25UeXBlfXsiY29uZGl0aW9uYWwifTsKQEAgLTE1Niw3ICsxNjYsMjAgQEAgc3Vi
IGdlbmVyYXRlSW1wbGVtZW50YXRpb24oKQogICAgIHByaW50IEYgIlxuIjsKICAgICBwcmludCBG
ICJFeGNlcHRpb25Db2RlRGVzY3JpcHRpb246OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihFeGNl
cHRpb25Db2RlIGVjKVxuIjsKICAgICBwcmludCBGICJ7XG4iOworICAgIHByaW50IEYgIiAgICBF
eGNlcHRpb25Db2RlRGVzY3JpcHRpb25JbXBsKGVjLCBTdHJpbmcoKSk7XG4iOworICAgIHByaW50
IEYgIn1cbiI7CisgICAgcHJpbnQgRiAiXG4iOworICAgIHByaW50IEYgIkV4Y2VwdGlvbkNvZGVE
ZXNjcmlwdGlvbjo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKEV4Y2VwdGlvbkNvZGUgZWMsIGNv
bnN0IFN0cmluZyYgY29udGV4dClcbiI7CisgICAgcHJpbnQgRiAie1xuIjsKKyAgICBwcmludCBG
ICIgICAgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uSW1wbChlYywgY29udGV4dCk7XG4iOworICAg
IHByaW50IEYgIn1cbiI7CisgICAgcHJpbnQgRiAiXG4iOworICAgIHByaW50IEYgInZvaWQgRXhj
ZXB0aW9uQ29kZURlc2NyaXB0aW9uOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb25JbXBsKEV4Y2Vw
dGlvbkNvZGUgZWMsIGNvbnN0IFN0cmluZyYgY29udGV4dClcbiI7CisgICAgcHJpbnQgRiAie1xu
IjsKICAgICBwcmludCBGICIgICAgQVNTRVJUKGVjKTtcbiI7CisgICAgcHJpbnQgRiAiXG4iOwor
ICAgIHByaW50IEYgIiAgICB0aGlzLT5jb250ZXh0ID0gU3RyaW5nKGNvbnRleHQpO1xuIjsKKyAg
ICBwcmludCBGICJcbiI7CiAKICAgICBmb3IgbXkgJGV4Y2VwdGlvblR5cGUgKHNvcnQga2V5cyAl
cGFyc2VkSXRlbXMpIHsKICAgICAgICAgIyBET01Db3JlRXhjZXB0aW9uIG5lZWRzIHRvIGJlIGxh
c3QgYmVjYXVzZSBpdCdzIGEgY2F0Y2gtYWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDdkZWZiMzU5NWRjYjFhZGE5
MjUyYTdlYjYyMDgzNDU2NjU4YWI0YzQuLjAxZDc4YWU2ZjQ2NzNjMmMxYzgyOWU2YzU2NDFkOGNl
NjUzYmZlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKQEAgLTYwOSwxMCArNjA5LDYgQEAgdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBTdHIKIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXBsYXlYSFIoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKIHsKLSAgICBSZWZQdHI8WE1MSHR0cFJlcXVl
c3Q+IHhociA9IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUobV9wYWdlQWdlbnQtPm1haW5GcmFtZSgp
LT5kb2N1bWVudCgpKTsKLSAgICBFeGNlcHRpb25Db2RlIGNvZGU7Ci0gICAgU3RyaW5nIGFjdHVh
bFJlcXVlc3RJZCA9IHJlcXVlc3RJZDsKLQogICAgIFhIUlJlcGxheURhdGEqIHhoclJlcGxheURh
dGEgPSBtX3Jlc291cmNlc0RhdGEtPnhoclJlcGxheURhdGEocmVxdWVzdElkKTsKICAgICBpZiAo
IXhoclJlcGxheURhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTYyMSw3ICs2MTcsMTAgQEAgdm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXBsYXlYSFIoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCkKICAgICBpZiAoY2FjaGVkUmVzb3VyY2UpCiAgICAgICAgIG1lbW9y
eUNhY2hlKCktPnJlbW92ZShjYWNoZWRSZXNvdXJjZSk7CiAKLSAgICB4aHItPm9wZW4oeGhyUmVw
bGF5RGF0YS0+bWV0aG9kKCksIHhoclJlcGxheURhdGEtPnVybCgpLCB4aHJSZXBsYXlEYXRhLT5h
c3luYygpLCBjb2RlKTsKKyAgICBFeGNlcHRpb25Db2RlIGNvZGU7CisgICAgU3RyaW5nIGVycm9y
Q29udGV4dDsKKyAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IHhociA9IFhNTEh0dHBSZXF1ZXN0
OjpjcmVhdGUobV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKTsKKyAgICB4aHIt
Pm9wZW4oeGhyUmVwbGF5RGF0YS0+bWV0aG9kKCksIHhoclJlcGxheURhdGEtPnVybCgpLCB4aHJS
ZXBsYXlEYXRhLT5hc3luYygpLCBjb2RlLCBlcnJvckNvbnRleHQpOwogICAgIEhUVFBIZWFkZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHhoclJlcGxheURhdGEtPmhlYWRlcnMoKS5lbmQoKTsK
ICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0geGhyUmVwbGF5RGF0
YS0+aGVhZGVycygpLmJlZ2luKCk7IGl0IT0gZW5kOyArK2l0KQogICAgICAgICB4aHItPnNldFJl
cXVlc3RIZWFkZXIoaXQtPmZpcnN0LCBpdC0+c2Vjb25kLCBjb2RlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDA5N2JjNDQyN2YwZDBjNGM2NTEyMGEzYjc5YWFmYmZk
YjM0ZjQ0YzguLjNhYmUxM2EzMDBjZTczMzZmN2JmYjBlY2Q3NWZjYjQ0NDVhNjNiZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNDQ0LDEyICs0NDQsMTIgQEAgYm9v
bCBYTUxIdHRwUmVxdWVzdDo6aXNBbGxvd2VkSFRUUEhlYWRlcihjb25zdCBTdHJpbmcmIG5hbWUp
CiAgICAgICAgICYmICFuYW1lLnN0YXJ0c1dpdGgoc3RhdGljRGF0YS0+bV9zZWNIZWFkZXJQcmVm
aXgsIGZhbHNlKTsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcm
IG1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgWE1MSHR0
cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgRXhj
ZXB0aW9uQ29kZSYgZWMsIFN0cmluZyYgZXhjZXB0aW9uRGVzY3JpcHRpb24pCiB7Ci0gICAgb3Bl
bihtZXRob2QsIHVybCwgdHJ1ZSwgZWMpOworICAgIG9wZW4obWV0aG9kLCB1cmwsIHRydWUsIGVj
LCBleGNlcHRpb25EZXNjcmlwdGlvbik7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4o
Y29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgRXhjZXB0
aW9uQ29kZSYgZWMpCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0
aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIEV4Y2VwdGlvbkNvZGUmIGVjLCBTdHJp
bmcmIGV4Y2VwdGlvbkRlc2NyaXB0aW9uKQogewogICAgIGludGVybmFsQWJvcnQoKTsKICAgICBT
dGF0ZSBwcmV2aW91c1N0YXRlID0gbV9zdGF0ZTsKQEAgLTQ3Niw2ICs0NzYsNyBAQCB2b2lkIFhN
TEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiB1cmws
IGJvb2wgYXN5bmMsIEV4YwogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb250
ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dDb25uZWN0VG9Tb3VyY2UodXJsKSkgewogICAgICAg
ICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgdGhyb3dpbmcgYW4gZXhjZXB0aW9uPwogICAgICAg
ICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgZXhjZXB0aW9uRGVzY3JpcHRpb24gPSAiWE1M
SHR0cFJlcXVlc3QgY29ubmVjdGlvbnMgdG8gJyIgKyB1cmwuc3RyaW5nKCkgKyAiJyBhcmUgYmxv
Y2tlZCBkdWUgdG8gdGhpcyBwYWdlJ3MgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTEzLDIxICs1MTQsMjEgQEAgdm9pZCBYTUxIdHRwUmVx
dWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFz
eW5jLCBFeGMKICAgICAgICAgbV9zdGF0ZSA9IE9QRU5FRDsKIH0KIAotdm9pZCBYTUxIdHRwUmVx
dWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFz
eW5jLCBjb25zdCBTdHJpbmcmIHVzZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBYTUxIdHRw
UmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29s
IGFzeW5jLCBjb25zdCBTdHJpbmcmIHVzZXIsIEV4Y2VwdGlvbkNvZGUmIGVjLCBTdHJpbmcmIGV4
Y2VwdGlvbkRlc2NyaXB0aW9uKQogewogICAgIEtVUkwgdXJsV2l0aENyZWRlbnRpYWxzKHVybCk7
CiAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVzZXIodXNlcik7CiAKLSAgICBvcGVuKG1ldGhv
ZCwgdXJsV2l0aENyZWRlbnRpYWxzLCBhc3luYywgZWMpOworICAgIG9wZW4obWV0aG9kLCB1cmxX
aXRoQ3JlZGVudGlhbHMsIGFzeW5jLCBlYywgZXhjZXB0aW9uRGVzY3JpcHRpb24pOwogfQogCi12
b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJM
JiB1cmwsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNz
d29yZCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0
IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmlu
ZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCwgRXhjZXB0aW9uQ29kZSYgZWMsIFN0cmlu
ZyYgZXhjZXB0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgS1VSTCB1cmxXaXRoQ3JlZGVudGlhbHMo
dXJsKTsKICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcih1c2VyKTsKICAgICB1cmxXaXRo
Q3JlZGVudGlhbHMuc2V0UGFzcyhwYXNzd29yZCk7CiAKLSAgICBvcGVuKG1ldGhvZCwgdXJsV2l0
aENyZWRlbnRpYWxzLCBhc3luYywgZWMpOworICAgIG9wZW4obWV0aG9kLCB1cmxXaXRoQ3JlZGVu
dGlhbHMsIGFzeW5jLCBlYywgZXhjZXB0aW9uRGVzY3JpcHRpb24pOwogfQogCiBib29sIFhNTEh0
dHBSZXF1ZXN0Ojppbml0U2VuZChFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmgKaW5kZXggY2M2Y2JjNTBjMzYwMTY1MDg5ZTI2NTk5NzVjZDEwZDMxMTIyZWY1
ZC4uNTA2MzlkZDliMTA0MDc2NzQ1ODI4ZDBiYzE4YjBhNDU0YmE1YzVhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTgzLDEwICs4MywxMCBAQCBwdWJsaWM6CiAgICAgU3Rh
dGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwogICAgIGJvb2wgd2l0aENyZWRlbnRpYWxzKCkgY29uc3Qg
eyByZXR1cm4gbV9pbmNsdWRlQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHNldFdpdGhDcmVkZW50
aWFscyhib29sLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYg
bWV0aG9kLCBjb25zdCBLVVJMJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgb3Blbihjb25z
dCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmLCBib29s
IGFzeW5jLCBjb25zdCBTdHJpbmcmIHVzZXIsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIG9w
ZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmLCBib29sIGFzeW5jLCBjb25zdCBT
dHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmLCBFeGNlcHRpb25D
b2RlJiwgU3RyaW5nJiBleGNlcHRpb25EZXNjcmlwdGlvbik7CisgICAgdm9pZCBvcGVuKGNvbnN0
IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiwgYm9vbCBhc3luYywgRXhjZXB0aW9uQ29kZSYs
IFN0cmluZyYgZXhjZXB0aW9uRGVzY3JpcHRpb24pOworICAgIHZvaWQgb3Blbihjb25zdCBTdHJp
bmcmIG1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwg
RXhjZXB0aW9uQ29kZSYsIFN0cmluZyYgZXhjZXB0aW9uRGVzY3JpcHRpb24pOworICAgIHZvaWQg
b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIGNvbnN0
IFN0cmluZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCwgRXhjZXB0aW9uQ29kZSYsIFN0
cmluZyYgZXhjZXB0aW9uRGVzY3JpcHRpb24pOwogICAgIHZvaWQgc2VuZChFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCBzZW5kKERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQg
c2VuZChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2JhY2MzYzNlMjc5
MjEzYTU2YjlmYTk0N2Q0MGUzMzdmYjMwOGY0YS4uMWMxZDYzMzA5MDgxOGJmZDBjMmVkOGE2ZDIx
NzRjYzcyYWFlYTg5MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTI3ICBNaWtlIFdl
c3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3RzIGJsb2Nr
ZWQgYnkgQ1NQIHNob3VsZCB0aHJvdyBhIG1vcmUgZGVzY3JpcHRpdmUgZXhjZXB0aW9uLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc2NTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0
LWJsb2NrZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJsb2NrZWQuaHRt
bDoKKyAgICAgICAgICAgIEFkanVzdGluZyB0aGlzIHRlc3QgdG8gb3V0cHV0IHRoZSBuZXdseSBl
eHBlY3RlZCBleGNlcHRpb24gbWVzc2FnZS4KKwogMjAxMi0wOS0yOCAgU3VkYXJzYW5hIE5hZ2lu
ZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBVcGRh
dGUgRUZMIGJhc2VsaW5lcyBhZnRlciByMTI5ODc0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9jb25uZWN0LXNyYy14bWxo
dHRwcmVxdWVzdC1ibG9ja2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0
LWJsb2NrZWQtZXhwZWN0ZWQudHh0CmluZGV4IDE0ZDI4NGMxZjg2N2M2YzUzODEwNmRiNWJhOWZk
YWQ3ZTc1OWVhOGMuLjRlNTFjMTFjMjIxODIzOTQzMTAzOWEzNTRmYjM5ZWU0NmZhOGFjMzIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJsb2NrZWQtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJsb2NrZWQtZXhwZWN0ZWQudHh0CkBAIC0xLDQg
KzEsNyBAQAogQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGNvbm5lY3QgdG8gJ2h0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZ2V0LnR4dCcgYmVjYXVzZSBp
dCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2
ZTogImNvbm5lY3Qtc3JjIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIuCiAKLVBhc3MKK0NPTlNPTEUg
TUVTU0FHRTogUmVmdXNlZCB0byBjb25uZWN0IHRvICdodHRwOi8vbG9jYWxob3N0OjgwMDAveG1s
aHR0cHJlcXVlc3QvcmVzb3VyY2VzL2dldC50eHQnIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZv
bGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICJjb25uZWN0LXNyYyBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAiLgogCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjc6IFNFQ1VS
SVRZX0VSUjogRE9NIEV4Y2VwdGlvbiAxODogWE1MSHR0cFJlcXVlc3QgY29ubmVjdGlvbnMgdG8g
J2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZ2V0LnR4dCcg
YXJlIGJsb2NrZWQgZHVlIHRvIHRoaXMgcGFnZSdzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5Lgor
SmF2YVNjcmlwdC12aXNpYmxlIGV4Y2VwdGlvbiBtZXNzYWdlOiBTRUNVUklUWV9FUlI6IERPTSBF
eGNlcHRpb24gMTgKK1RoZSBjYWxsIHRvICdvcGVuKCknIHNob3VsZCB0aHJvdyBhbiBleGNlcHRp
b24gdGllZCB0byBsaW5lIDI3LCB3aXRoIGEgbWVzc2FnZSB2aXNpYmxlIG9uIHRoZSBjb25zb2xl
LCBidXQgbm90IGluIEphdmFTY3JpcHQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9jb25uZWN0LXNyYy14bWxodHRwcmVx
dWVzdC1ibG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9jb25uZWN0LXNyYy14bWxodHRwcmVxdWVzdC1ibG9ja2VkLmh0bWwK
aW5kZXggM2U5ZDEyZjMyZTg0YzQ2OTc0NjczMzg3MWNkOTM2YWVlYjc3NmYyNS4uOWQ4ZDJkZWY2
YmVmNDJiYTc1MmVkNmYyMDZmZjc1Y2FhMzNmNjA4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvY29ubmVjdC1zcmMteG1s
aHR0cHJlcXVlc3QtYmxvY2tlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LWJs
b2NrZWQuaHRtbApAQCAtMTcsMTIgKzE3LDE4IEBAIGZ1bmN0aW9uIGxvZyhtc2cpCiAKIHRyeSB7
CiAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKLSAgICB4aHIub3BlbigiR0VUIiwg
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZ2V0LnR4dCIs
IHRydWUpOyAKLSAgICBsb2coIkZhaWwiKTsKLX0gY2F0Y2goZSkgewotICAgIGxvZygiUGFzcyIp
OworICAgIHhoci5vcGVuKCJHRVQiLCAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1
ZXN0L3Jlc291cmNlcy9nZXQudHh0IiwgdHJ1ZSk7CisgICAgbG9nKCJGQUlMOiBBbiBleGNlcHRp
b24gc2hvdWxkIGhhdmUgYmVlbiB0aHJvd24uIik7Cit9IGNhdGNoIChlKSB7CisgICAgbG9nKCJK
YXZhU2NyaXB0LXZpc2libGUgZXhjZXB0aW9uIG1lc3NhZ2U6ICIgKyBlLm1lc3NhZ2UpOwogfQog
Cit2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworeGhyLm9wZW4oIkdFVCIsICJodHRwOi8v
bG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2dldC50eHQiLCB0cnVlKTsK
IDwvc2NyaXB0PgorCis8cD5UaGUgY2FsbCB0byAnb3BlbigpJyBzaG91bGQgdGhyb3cgYW4gZXhj
ZXB0aW9uIHRpZWQgdG8gbGluZSAyNywgd2l0aCBhCittZXNzYWdlIHZpc2libGUgb24gdGhlIGNv
bnNvbGUsIGJ1dCBub3QgaW4gSmF2YVNjcmlwdC48L3A+CisKIDwvYm9keT4KIDwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="178656"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>