<?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>76443</bug_id>
          
          <creation_ts>2012-01-17 03:26:03 -0800</creation_ts>
          <short_desc>Speech Input: Report speech element rect relative to window rather than frame</short_desc>
          <delta_ts>2012-02-02 07:44:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>77641</dependson>
    
    <dependson>77083</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Wennborg">hans</reporter>
          <assigned_to name="Hans Wennborg">hans</assigned_to>
          <cc>fishd</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>satish</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>537005</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-01-17 03:26:03 -0800</bug_when>
    <thetext>Speech Input: Report speech element rect relative to window rather than frame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537006</commentid>
    <comment_count>1</comment_count>
      <attachid>122745</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-01-17 03:29:03 -0800</bug_when>
    <thetext>Created attachment 122745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537008</commentid>
    <comment_count>2</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-01-17 03:35:33 -0800</bug_when>
    <thetext>(This is for Chromium bug http://crbug.com/101742)

This is a one-line fix, but I&apos;m unsure of how to test it.

The best way I can see would be to add a method to layout test controller like layoutTestController.dumpSpeechInputRequests() which would cause DumpRenderTree to print out the rect each time a request is made to the mock speech input controller. Not sure if it is worth the added complexity, though?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537745</commentid>
    <comment_count>3</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2012-01-18 03:04:30 -0800</bug_when>
    <thetext>The change itself looks good. For testing, I can think of 2 more ways:
- SpeechInputClientMock accepts a lang-result pair so you can set a different result for few languages when testing multi-language support. You could expand that to also include a rect so setting different results for expected rects and checking the result received could work
- There could be a new boolean flag in SpeechInputClientMock settable by the test script and if that is set the element rect could be included as part of the result string given to the input element
I don&apos;t have a strong preference for either of the 3, but would like whichever method used to be resilient to small changes in the positioning due to the other rendering logic changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537855</commentid>
    <comment_count>4</comment_count>
      <attachid>122927</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-01-18 07:23:22 -0800</bug_when>
    <thetext>Created attachment 122927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537859</commentid>
    <comment_count>5</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-01-18 07:25:25 -0800</bug_when>
    <thetext>Uploaded new patch that also has a test :)

I&apos;ve done sort of a combination of your suggestions, allowing an extra parameter to be passed in to addMockSpeechInputResult() on the LayoutTestController which will cause the controller to report back the element&apos;s position rather than a text value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537860</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 07:26:51 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537862</commentid>
    <comment_count>7</comment_count>
      <attachid>122927</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-18 07:30:10 -0800</bug_when>
    <thetext>Comment on attachment 122927
Patch

Attachment 122927 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11150218</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537900</commentid>
    <comment_count>8</comment_count>
      <attachid>122927</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2012-01-18 09:01:57 -0800</bug_when>
    <thetext>Comment on attachment 122927
Patch

The test looks great, but I&apos;m thinking overloading addMockSpeechInputResult to add the dumpRect flag can be better. Right now the first 3 params are unused if the flag is set to true. Would it be simpler to add a new LayoutTestController::mockSpeechInputDumpRect() or something similar to set the flag to true?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538000</commentid>
    <comment_count>9</comment_count>
      <attachid>122927</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-18 10:59:11 -0800</bug_when>
    <thetext>Comment on attachment 122927
Patch

Attachment 122927 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11194299</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538103</commentid>
    <comment_count>10</comment_count>
      <attachid>122927</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-18 13:26:22 -0800</bug_when>
    <thetext>Comment on attachment 122927
Patch

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

&gt; Source/WebKit/chromium/public/WebSpeechInputControllerMock.h:47
&gt; +    virtual void addMockRecognitionResult(const WebString&amp; result, double confidence, const WebString&amp; language, bool dumpRect) = 0;

nit: It would be helpful to explain what these parameters mean.  As is, it requires
someone to study the implementation to understand how to use this API.

&gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:1932
&gt;      if (WebSpeechInputControllerMock* controller = m_shell-&gt;webViewHost()-&gt;speechInputControllerMock())

Would it be better to extend WebCore/testing/Internals.idl instead?  Do we really
need this &quot;mock&quot; to be exposed as a WebKit API like this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538739</commentid>
    <comment_count>11</comment_count>
      <attachid>123136</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-01-19 08:40:35 -0800</bug_when>
    <thetext>Created attachment 123136
Patch

Try to green the EWS bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539487</commentid>
    <comment_count>12</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-01-20 07:14:40 -0800</bug_when>
    <thetext>Thanks for the comments! New patch coming up.

(In reply to comment #8)
&gt; Would it be simpler to add a new LayoutTestController::mockSpeechInputDumpRect() or something similar to set the flag to true?

Yes, that&apos;s probably better. Doing that.

(In reply to comment #10)
&gt; nit: It would be helpful to explain what these parameters mean.  As is, it requires
&gt; someone to study the implementation to understand how to use this API.

Done.


&gt; &gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:1932
&gt; &gt;      if (WebSpeechInputControllerMock* controller = m_shell-&gt;webViewHost()-&gt;speechInputControllerMock())
&gt; 
&gt; Would it be better to extend WebCore/testing/Internals.idl instead?  Do we really
&gt; need this &quot;mock&quot; to be exposed as a WebKit API like this?

The reason we have a wrapper around the mock as part of the WebKit API is so we can pass it in instead of the &quot;real&quot; speech input controller. The way the controller is passed in is via the WebViewClient interface, which can only refer to types in the WebKit API.

I don&apos;t see any way we could just pass in the WebCore mock and get rid of the wrapper.

If I understand correctly, the Internals object is per-frame, whereas we want to use the same mock for a whole Page, so we couldn&apos;t have the Internals object own the mock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539489</commentid>
    <comment_count>13</comment_count>
      <attachid>123311</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-01-20 07:15:08 -0800</bug_when>
    <thetext>Created attachment 123311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539492</commentid>
    <comment_count>14</comment_count>
      <attachid>123311</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-20 07:24:31 -0800</bug_when>
    <thetext>Comment on attachment 123311
Patch

Attachment 123311 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11314098</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539500</commentid>
    <comment_count>15</comment_count>
      <attachid>123313</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-01-20 07:41:27 -0800</bug_when>
    <thetext>Created attachment 123313
Patch

Try to green the EWS bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539578</commentid>
    <comment_count>16</comment_count>
      <attachid>123313</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2012-01-20 09:29:45 -0800</bug_when>
    <thetext>Comment on attachment 123313
Patch

Attachment 123313 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11311125</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539588</commentid>
    <comment_count>17</comment_count>
      <attachid>123339</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-01-20 09:42:08 -0800</bug_when>
    <thetext>Created attachment 123339
Patch

Try to green the EWS bots, take two.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540521</commentid>
    <comment_count>18</comment_count>
      <attachid>123339</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2012-01-23 06:52:45 -0800</bug_when>
    <thetext>Comment on attachment 123339
Patch

WebCore/platform/mock/SpeechInputClientMock.cpp:
&gt; ts &lt;&lt; rect.x() &lt;&lt; &quot;, &quot; &lt;&lt; rect.y();
For completeness perhaps also send width and height (since you call it &apos;dump rect&apos;)? (and without spaces so easier for script to check)

WebKit/chromium/public/WebSpeechInputControllerMock.h:
&gt; // Add a result string with some confidence and language that will be returned for the next speech input request.
The given result &amp; confidence value are returned only if the start() call asked for the specified language. So the comment should probably be like &quot;Add a result string and confidence value to be returned as result for the next speech input request in the given language.&quot;

LayoutTests/fast/speech/bubble-position-expected.txt:
&gt; PASS input.value is &quot;157, 111&quot;
We should remove this hard coded position string so that it doesn&apos;t require a rebaseline when subtle layout changes are made in future

LayoutTests/fast/speech/bubble-position.html:
&gt; shouldBeEqualToString(&quot;input.value&quot;, expectedX + &quot;, &quot; + expectedY);
For clarity declare expectedX and expectedY as top level vars? Right now they are undeclared and by default end up in global scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540553</commentid>
    <comment_count>19</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-01-23 08:22:26 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 123339 [details])
&gt; WebCore/platform/mock/SpeechInputClientMock.cpp:
&gt; &gt; ts &lt;&lt; rect.x() &lt;&lt; &quot;, &quot; &lt;&lt; rect.y();
&gt; For completeness perhaps also send width and height (since you call it &apos;dump rect&apos;)? (and without spaces so easier for script to check)

Done.

&gt; WebKit/chromium/public/WebSpeechInputControllerMock.h:
&gt; &gt; // Add a result string with some confidence and language that will be returned for the next speech input request.
&gt; The given result &amp; confidence value are returned only if the start() call asked for the specified language. So the comment should probably be like &quot;Add a result string and confidence value to be returned as result for the next speech input request in the given language.&quot;

Done. I used your suggestion verbatim :)

&gt; LayoutTests/fast/speech/bubble-position-expected.txt:
&gt; &gt; PASS input.value is &quot;157, 111&quot;
&gt; We should remove this hard coded position string so that it doesn&apos;t require a rebaseline when subtle layout changes are made in future

Done.

&gt; LayoutTests/fast/speech/bubble-position.html:
&gt; &gt; shouldBeEqualToString(&quot;input.value&quot;, expectedX + &quot;, &quot; + expectedY);
&gt; For clarity declare expectedX and expectedY as top level vars? Right now they are undeclared and by default end up in global scope.

I&apos;ve prefixed them with &quot;window.&quot; to make it more clear that I want them in the global scope. I believe they have to be in that scope to be used in &quot;shouldBe*&quot; functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540554</commentid>
    <comment_count>20</comment_count>
      <attachid>123559</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-01-23 08:22:57 -0800</bug_when>
    <thetext>Created attachment 123559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540564</commentid>
    <comment_count>21</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2012-01-23 08:30:33 -0800</bug_when>
    <thetext>Looks good to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540644</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-23 10:22:52 -0800</bug_when>
    <thetext>(In reply to comment #12)
...
&gt; &gt; &gt; Tools/DumpRenderTree/chromium/LayoutTestController.cpp:1932
&gt; &gt; &gt;      if (WebSpeechInputControllerMock* controller = m_shell-&gt;webViewHost()-&gt;speechInputControllerMock())
&gt; &gt; 
&gt; &gt; Would it be better to extend WebCore/testing/Internals.idl instead?  Do we really
&gt; &gt; need this &quot;mock&quot; to be exposed as a WebKit API like this?
&gt; 
&gt; The reason we have a wrapper around the mock as part of the WebKit API is so we can pass it in instead of the &quot;real&quot; speech input controller. The way the controller is passed in is via the WebViewClient interface, which can only refer to types in the WebKit API.

Why does the Mock live at the WebKit layer.  Shouldn&apos;t it just be part of DumpRenderTree?  Why do other consumers of WebKit need to carry this testing code?


&gt; I don&apos;t see any way we could just pass in the WebCore mock and get rid of the wrapper.

Why is there a mock in WebCore?  If the mock needs to live in WebCore, then activating the mock via a method on Internals.idl seems to make more sense.  It would allow you to have fewer layers of interfaces.


&gt; If I understand correctly, the Internals object is per-frame, whereas we want to use the same mock for a whole Page, so we couldn&apos;t have the Internals object own the mock.

Couldn&apos;t you just interact with the Internals object on the main frame, and it could then attach the mock to the Page?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545988</commentid>
    <comment_count>23</comment_count>
      <attachid>124716</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-01-31 06:13:29 -0800</bug_when>
    <thetext>Created attachment 124716
Patch

Uploading new and simpler patch now that the mock has moved into Chromium&apos;s DRT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545991</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 06:17:12 -0800</bug_when>
    <thetext>Attachment 124716 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Fix compilation errors on build-webkit --debug --no-workers on mac.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/qt/Skipped
CONFLICT (content): Merge conflict in LayoutTests/platform/qt/Skipped
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Fix compilation errors on build-webkit --debug --no-workers on mac.

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546867</commentid>
    <comment_count>25</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-02-01 00:52:50 -0800</bug_when>
    <thetext>Committed r106438: &lt;http://trac.webkit.org/changeset/106438&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122745</attachid>
            <date>2012-01-17 03:29:03 -0800</date>
            <delta_ts>2012-01-18 07:23:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76443-20120117112901.patch</filename>
            <type>text/plain</type>
            <size>2261</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWYyY2I3NDk0ZDM3Nzg0
YzBlMDcxM2U5NGM3MzEzZGNmMjU4YzVhNS4uNTU2ZTE3ZDEzNGM5ZDJiMmFkZTkwZmZjNWU2OGYz
ODQwZTdkNmIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAxLTE3ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElucHV0OiBS
ZXBvcnQgc3BlZWNoIGVsZW1lbnQgcmVjdCByZWxhdGl2ZSB0byB3aW5kb3cgcmF0aGVyIHRoYW4g
ZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
NDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biByZXF1ZXN0aW5nIHN0YXJ0IG9mIHNwZWVjaCByZWNvZ25pdGlvbiwgcmVwb3J0IHRoZSBzcGVl
Y2gKKyAgICAgICAgZWxlbWVudHMncyBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgd2luZG93IHJh
dGhlciB0aGFuIGZyYW1lLgorICAgICAgICBUaGlzIHBvc2l0aW9uIGNhbiBiZSB1c2VkIGJ5IHRo
ZSBlbWJlZGRlciB0byBzaG93IGEgYnViYmxlIGluZGljYXRpbmcKKyAgICAgICAgdGhhdCBzcGVl
Y2ggaXMgYmVpbmcgcmVjb3JkZWQuIFRoZSBlbWJlZGRlciB3aWxsIHdhbnQgdGhpcyBidWJibGUK
KyAgICAgICAgcG9zaXRpb25lZCByZWxhdGl2ZSB0byB0aGUgd2luZG93LgorCisgICAgICAgICog
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVjaElucHV0KToKKwog
MjAxMi0wMS0xNyAgTHVrZSBNYWNwaGVyc29uICAgPG1hY3BoZXJzb25AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJlbW92ZSByZWZlcmVuY2VzIHRvIENTU1ByaW1pdGl2ZVZhbHVlOjpwcmltaXRp
dmVUeXBlKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCA2YWI5ZDFmNjZjYjRmZmIwMDc3NzdhNTk1OTg5
YmFkZThhZWE4OGRiLi44MDhmZmEzMWVmNzMzNzkwZjJiN2FkYmJmZDVhMDQxOTI2ZDY1MDY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiU3BlZWNoSW5wdXQu
aCIKQEAgLTU0OSw3ICs1NTAsNyBAQCB2b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50
OjpzdGFydFNwZWVjaElucHV0KCkKICAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UgPSBpbnB1dC0+
Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCk7CiAgICAgU3RyaW5nIGdyYW1tYXIgPSBpbnB1dC0+
Z2V0QXR0cmlidXRlKHdlYmtpdGdyYW1tYXJBdHRyKTsKICAgICAvLyBGSVhNRTogdGhpcyBzaG91
bGQgcHJvYmFibHkgcmVzcGVjdCB0cmFuc2Zvcm1zCi0gICAgSW50UmVjdCByZWN0ID0gcmVuZGVy
ZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKKyAgICBJ
bnRSZWN0IHJlY3QgPSByZW5kZXJlcigpLT52aWV3KCktPmZyYW1lVmlldygpLT5jb250ZW50c1Rv
V2luZG93KHJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zv
cm1zKCkpOwogICAgIGlmIChzcGVlY2hJbnB1dCgpLT5zdGFydFJlY29nbml0aW9uKG1fbGlzdGVu
ZXJJZCwgcmVjdCwgbGFuZ3VhZ2UsIGdyYW1tYXIsIGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCkpKQogICAgICAgICBzZXRTdGF0ZShSZWNvcmRpbmcpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122927</attachid>
            <date>2012-01-18 07:23:22 -0800</date>
            <delta_ts>2012-01-19 08:40:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76443-20120118152320.patch</filename>
            <type>text/plain</type>
            <size>24712</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWYyY2I3NDk0ZDM3Nzg0
YzBlMDcxM2U5NGM3MzEzZGNmMjU4YzVhNS4uOWRjNjZkNzgxZjU0MTQ1NjQwZTUyMjM3Y2Q3ZDky
YjhhNDVmYmQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAxLTE4ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElucHV0OiBS
ZXBvcnQgc3BlZWNoIGVsZW1lbnQgcmVjdCByZWxhdGl2ZSB0byB3aW5kb3cgcmF0aGVyIHRoYW4g
ZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
NDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biByZXF1ZXN0aW5nIHNwZWVjaCBpbnB1dCwgcmVwb3J0IHRoZSBzcGVlY2ggZWxlbWVudCByZWN0
IHJlbGF0aXZlCisgICAgICAgIHRvIHRoZSB3aW5kb3cgcmF0aGVyIHRoYW4gdGhlIGZyYW1lLiBU
aGUgZW1iZWRkZXIgd2lsbCB0eXBpY2FsbHkgdXNlCisgICAgICAgIHRoaXMgcG9zaXRpb24gdG8g
c2hvdyBhIGJ1YmJsZSBpbmRpY2F0aW5nIHRoYXQgc3BlZWNoIHJlY29nbml0aW9uIGlzCisgICAg
ICAgIGluIHByb2dyZXNzLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNoL2J1YmJsZS1wb3Np
dGlvbi5odG1sCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6
OnN0YXJ0U3BlZWNoSW5wdXQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRD
bGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6
c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjptYWtlUmVjdFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OmFkZFJlY29nbml0aW9uUmVz
dWx0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaDoKKwog
MjAxMi0wMS0xNyAgTHVrZSBNYWNwaGVyc29uICAgPG1hY3BoZXJzb25AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJlbW92ZSByZWZlcmVuY2VzIHRvIENTU1ByaW1pdGl2ZVZhbHVlOjpwcmltaXRp
dmVUeXBlKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDI2MGI5ZjI2YzYxNzNlM2Yx
NWU3ZjQ5NTQ1OTZiMTQyYzI1ZWM5YjIuLmRiZmZiMmM3NjU5MzgwODFhZDRjNjQyODE5NmM1OTNi
NzQ1YjhiMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTItMDEtMTggIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBT
cGVlY2ggSW5wdXQ6IFJlcG9ydCBzcGVlY2ggZWxlbWVudCByZWN0IHJlbGF0aXZlIHRvIHdpbmRv
dyByYXRoZXIgdGhhbiBmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzY0NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgdGhlIFNwZWVjaElucHV0Q29udHJvbGxlck1vY2sgdG8gYWxsb3cg
Zm9yIHJldHJpZXZpbmcgdGhlCisgICAgICAgIHNwZWVjaCBlbGVtZW50J3MgcG9zaXRpb24gdXNl
ZCBpbiB0aGUgcmVxdWVzdC4KKworICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrLmg6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0lt
cGw6OmFkZE1vY2tSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsLmg6CisKIDIwMTItMDEtMTcgIEJpbGwgQnVkZ2UgIDxiYnVk
Z2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFzc29jaWF0ZWRVUkxMb2FkZXIgYWRkcyBzdXBw
b3J0IGZvciB0aGUgSFRUUCByZXNwb25zZSBoZWFkZXIgQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhl
YWRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwCmluZGV4IDZhYjlkMWY2NmNiNGZmYjAwNzc3N2E1OTU5ODliYWRl
OGFlYTg4ZGIuLjgwOGZmYTMxZWY3MzM3OTBmMmI3YWRiYmZkNWEwNDE5MjZkNjUwNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5o
IgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1dC5oIgpA
QCAtNTQ5LDcgKzU1MCw3IEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnN0
YXJ0U3BlZWNoSW5wdXQoKQogICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSA9IGlucHV0LT5jb21w
dXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKTsKICAgICBTdHJpbmcgZ3JhbW1hciA9IGlucHV0LT5nZXRB
dHRyaWJ1dGUod2Via2l0Z3JhbW1hckF0dHIpOwogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBw
cm9iYWJseSByZXNwZWN0IHRyYW5zZm9ybXMKLSAgICBJbnRSZWN0IHJlY3QgPSByZW5kZXJlcigp
LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOworICAgIEludFJl
Y3QgcmVjdCA9IHJlbmRlcmVyKCktPnZpZXcoKS0+ZnJhbWVWaWV3KCktPmNvbnRlbnRzVG9XaW5k
b3cocmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMo
KSk7CiAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9saXN0ZW5lcklk
LCByZWN0LCBsYW5ndWFnZSwgZ3JhbW1hciwgZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkp
CiAgICAgICAgIHNldFN0YXRlKFJlY29yZGluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKaW5kZXggOWFhMzEx
M2RjMDA2M2JlYTI2ZDRiMTU4ZDc0MDQ5MTAxYjkzYmE4Yi4uZDM3ZWIwYjMyZGVkMmFhMzBmNjJh
YzNkNzc0Y2I4NmE3NWJkYjc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcApAQCAtMzUsNiArMzUsNyBAQAogCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1dExpc3RlbmVy
LmgiCisjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTU2LDYgKzU3LDcgQEAgYm9vbCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnN0YXJ0UmVjb2duaXRp
b24oaW50IHJlcXVlc3RJZCwgY29uc3QgSW50UmVjdCYgZWxlbWUKICAgICBpZiAobV90aW1lci5p
c0FjdGl2ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9yZXF1ZXN0SWQgPSByZXF1
ZXN0SWQ7CisgICAgbV9yZXF1ZXN0UmVjdCA9IGVsZW1lbnRSZWN0OwogICAgIG1fcmVjb3JkaW5n
ID0gdHJ1ZTsKICAgICBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7CiAgICAgbV90aW1lci5zdGFydE9u
ZVNob3QoMCk7CkBAIC04Miw3ICs4NCwxNiBAQCB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6
Y2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCkKICAgICB9CiB9CiAKLXZvaWQgU3BlZWNo
SW5wdXRDbGllbnRNb2NrOjphZGRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3Vs
dCwgZG91YmxlIGNvbmZpZGVuY2UsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpCitzdGF0
aWMgU3BlZWNoSW5wdXRSZXN1bHRBcnJheSBtYWtlUmVjdFJlc3VsdChjb25zdCBJbnRSZWN0JiBy
ZWN0KQoreworICAgIFZlY3RvcjxSZWZQdHI8U3BlZWNoSW5wdXRSZXN1bHQ+ID4gcmVzdWx0czsK
KyAgICBUZXh0U3RyZWFtIHRzOworICAgIHRzIDw8IHJlY3QueCgpIDw8ICIsICIgPDwgcmVjdC55
KCk7CisgICAgcmVzdWx0cy5hcHBlbmQoU3BlZWNoSW5wdXRSZXN1bHQ6OmNyZWF0ZSh0cy5yZWxl
YXNlKCksIDEuMCkpOworICAgIHJldHVybiByZXN1bHRzOworfQorCit2b2lkIFNwZWVjaElucHV0
Q2xpZW50TW9jazo6YWRkUmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQsIGRv
dWJsZSBjb25maWRlbmNlLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlLCBib29sIGR1bXBS
ZWN0KQogewogICAgIGlmIChsYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fcmVzdWx0c0Zv
ckVtcHR5TGFuZ3VhZ2UuYXBwZW5kKFNwZWVjaElucHV0UmVzdWx0OjpjcmVhdGUocmVzdWx0LCBj
b25maWRlbmNlKSk7CkBAIC05MSw2ICsxMDIsOCBAQCB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9j
azo6YWRkUmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjbwog
ICAgICAgICAgICAgbV9yZWNvZ25pdGlvblJlc3VsdHMuc2V0KGxhbmd1YWdlLCBTcGVlY2hJbnB1
dFJlc3VsdEFycmF5KCkpOwogICAgICAgICBtX3JlY29nbml0aW9uUmVzdWx0cy5maW5kKGxhbmd1
YWdlKS0+c2Vjb25kLmFwcGVuZChTcGVlY2hJbnB1dFJlc3VsdDo6Y3JlYXRlKHJlc3VsdCwgY29u
ZmlkZW5jZSkpOwogICAgIH0KKworICAgIG1fZHVtcFJlY3QgPSBkdW1wUmVjdDsKIH0KIAogdm9p
ZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OmNsZWFyUmVzdWx0cygpCkBAIC0xMTMsOCArMTI2LDEw
IEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6OlRpbWVy
PFNwZWVjaElucHV0Q2xpZW50TW9jaz4qKQogICAgICAgICBpbnQgcmVxdWVzdElkID0gbV9yZXF1
ZXN0SWQ7CiAgICAgICAgIG1fcmVxdWVzdElkID0gMDsKIAotICAgICAgICAvLyBFbXB0eSBsYW5n
dWFnZSBjYXNlIG11c3QgYmUgaGFuZGxlZCBzZXBhcmF0ZWx5IHRvIGF2b2lkIHByb2JsZW1zIHdp
dGggSGFzaE1hcCBhbmQgZW1wdHkga2V5cy4KLSAgICAgICAgaWYgKG1fbGFuZ3VhZ2UuaXNFbXB0
eSgpKSB7CisgICAgICAgIGlmIChtX2R1bXBSZWN0KQorICAgICAgICAgICAgbV9saXN0ZW5lci0+
c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVzdElkLCBtYWtlUmVjdFJlc3VsdChtX3JlcXVlc3RS
ZWN0KSk7CisgICAgICAgIGVsc2UgaWYgKG1fbGFuZ3VhZ2UuaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICAvLyBFbXB0eSBsYW5ndWFnZSBjYXNlIG11c3QgYmUgaGFuZGxlZCBzZXBhcmF0ZWx5IHRv
IGF2b2lkIHByb2JsZW1zIHdpdGggSGFzaE1hcCBhbmQgZW1wdHkga2V5cy4KICAgICAgICAgICAg
IGlmICghbV9yZXN1bHRzRm9yRW1wdHlMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAg
ICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVzdElkLCBtX3Jlc3VsdHNG
b3JFbXB0eUxhbmd1YWdlKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oCmluZGV4IDRlMTMyNDJh
Y2I0YjZmOTE2NGRlZWU4NTVkNTYzNjhiZDQ5ZWM1MzYuLmUxYjA5ZTZkYmIxYTQyMDA0ZDViOGIy
NTMyOGIyYjUyMzVjYTlmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaApAQCAtMzEsNiArMzEsNyBAQAogI2lmbmRlZiBT
cGVlY2hJbnB1dENsaWVudE1vY2tfaAogI2RlZmluZSBTcGVlY2hJbnB1dENsaWVudE1vY2tfaAog
CisjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5j
bHVkZSAiU3BlZWNoSW5wdXRDbGllbnQuaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1dFJlc3VsdC5o
IgpAQCAtNDksNyArNTAsNyBAQCBjbGFzcyBTcGVlY2hJbnB1dENsaWVudE1vY2sgOiBwdWJsaWMg
U3BlZWNoSW5wdXRDbGllbnQgewogcHVibGljOgogICAgIFNwZWVjaElucHV0Q2xpZW50TW9jaygp
OwogCi0gICAgdm9pZCBhZGRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCwg
ZG91YmxlIGNvbmZpZGVuY2UsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpOworICAgIHZv
aWQgYWRkUmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjb25m
aWRlbmNlLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlLCBib29sIGR1bXBSZWN0KTsKICAg
ICB2b2lkIGNsZWFyUmVzdWx0cygpOwogCiAgICAgLy8gU3BlZWNoSW5wdXRDbGllbnQgbWV0aG9k
cy4KQEAgLTY1LDEwICs2NiwxMiBAQCBwcml2YXRlOgogICAgIFRpbWVyPFNwZWVjaElucHV0Q2xp
ZW50TW9jaz4gbV90aW1lcjsKICAgICBTcGVlY2hJbnB1dExpc3RlbmVyKiBtX2xpc3RlbmVyOwog
ICAgIGludCBtX3JlcXVlc3RJZDsKKyAgICBJbnRSZWN0IG1fcmVxdWVzdFJlY3Q7CiAKICAgICBI
YXNoTWFwPFN0cmluZywgU3BlZWNoSW5wdXRSZXN1bHRBcnJheT4gbV9yZWNvZ25pdGlvblJlc3Vs
dHM7CiAgICAgQXRvbWljU3RyaW5nIG1fbGFuZ3VhZ2U7CiAgICAgU3BlZWNoSW5wdXRSZXN1bHRB
cnJheSBtX3Jlc3VsdHNGb3JFbXB0eUxhbmd1YWdlOworICAgIGJvb2wgbV9kdW1wUmVjdDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaAppbmRleCBk
NGU1NDNmMDJjMzE2MTA0YTQ1YjI1OGIyZWUxYmE4NTRmMzdhZGFhLi5lNjkzNmY1NmYyYmUyOGI0
YzEwMjE4ZjljMDlhN2QzNzdhNDZkYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCkBAIC00
NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAgICAgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlz
dGVuZXIpOwogICAgIHZpcnR1YWwgfldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2soKSB7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBhZGRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3Ry
aW5nJiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdl
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBX
ZWJTdHJpbmcmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVuY2UsIGNvbnN0IFdlYlN0cmluZyYgbGFu
Z3VhZ2UsIGJvb2wgZHVtcFJlY3QpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhclJlc3Vs
dHMoKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCmluZGV4IDRmMWYwNzQ1
NzNjMzc0N2ZjMDMzMjhmZWRiMWQzNjkyMTI3NmRkNDYuLjkyYTk0ZDI5NWZkZWI1ODljYzZhNDk5
ZTA5YjhjYzVhNzVhYzIwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAKQEAgLTYw
LDkgKzYwLDkgQEAgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6On5XZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrSW1wbCgpCiAgICAgbV93ZWJjb3JlTW9jay0+c2V0TGlzdGVuZXIo
MCk7CiB9CiAKLXZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmFkZE1vY2tS
ZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVu
Y2UsIGNvbnN0IFdlYlN0cmluZyAmbGFuZ3VhZ2UpCit2b2lkIFdlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsOjphZGRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiBy
ZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBjb25zdCBXZWJTdHJpbmcgJmxhbmd1YWdlLCBib29s
IGR1bXBSZWN0KQogewotICAgIG1fd2ViY29yZU1vY2stPmFkZFJlY29nbml0aW9uUmVzdWx0KHJl
c3VsdCwgY29uZmlkZW5jZSwgbGFuZ3VhZ2UpOworICAgIG1fd2ViY29yZU1vY2stPmFkZFJlY29n
bml0aW9uUmVzdWx0KHJlc3VsdCwgY29uZmlkZW5jZSwgbGFuZ3VhZ2UsIGR1bXBSZWN0KTsKIH0K
IAogdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6Y2xlYXJSZXN1bHRzKCkK
QEAgLTExNCw0ICsxMTQsMyBAQCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrKiBXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrOjpjcmVhdGUoV2ViU3BlZWNoSW5wdQogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQotCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGwuaAppbmRleCAwNWJmZDUyYThjODhlMmMxZjE1MTU4ZmVkOGFlNjRmMDk3ZWRk
NjQ3Li40M2ZmY2JhZjc5OGMyNmRkYzYzZmRkMTE0ODljZDk3NWRmM2U4MWU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3Rv
cFJlY29yZGluZyhpbnQgcmVxdWVzdElkKTsKIAogICAgIC8vIFdlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2sgbWV0aG9kcy4KLSAgICB2b2lkIGFkZE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25z
dCBXZWJTdHJpbmcmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVuY2UsIGNvbnN0IFdlYlN0cmluZyYg
bGFuZ3VhZ2UpOworICAgIHZvaWQgYWRkTW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0
cmluZyYgcmVzdWx0LCBkb3VibGUgY29uZmlkZW5jZSwgY29uc3QgV2ViU3RyaW5nJiBsYW5ndWFn
ZSwgYm9vbCBkdW1wUmVjdCk7CiAgICAgdm9pZCBjbGVhclJlc3VsdHMoKTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMGUy
MDdlMzhmZmI4YWZkZmY4NTkyYjBmODllNDE0YzAxZWIzMjllLi4yMWNiODkzZGJiNjQ5OTc2NjM1
MTkzNjBkOWZlYzNmZjI4NGRmNGRlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMDEtMTggIEhhbnMgV2VubmJv
cmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGVlY2ggSW5wdXQ6IFJlcG9ydCBz
cGVlY2ggZWxlbWVudCByZWN0IHJlbGF0aXZlIHRvIHdpbmRvdyByYXRoZXIgdGhhbiBmcmFtZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY0NDMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhl
IFNwZWVjaElucHV0Q29udHJvbGxlck1vY2sgdG8gYWxsb3cgZm9yIHJldHJpZXZpbmcgdGhlCisg
ICAgICAgIHNwZWVjaCBlbGVtZW50J3MgcG9zaXRpb24gdXNlZCBpbiB0aGUgcmVxdWVzdC4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHA6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisK
IDIwMTItMDEtMTYgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29t
PgogCiAgICAgICAgIFtRdF0gRG9uJ3QgYWRkIF9kZWJ1ZyBwb3N0Zml4IHRvIHRhcmdldHMgd2hl
biBidWlsZGluZyBkZWJ1ZyBvbmx5CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKaW5kZXggNmMxM2Q5MzA5NDZkNTE5ZjYwNTc5MDdmNWM0MGRkNjJmZjc1
MGM5Ny4uNWVmY2FhZjc4MjYwMjA1MDJhYjJmMDU5OGVlNjk4YjM3NTM0ZmYxMyAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTM1MCw4ICsx
MzUwLDEyIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdENhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IGxhbmd1YWdlKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3Vt
ZW50c1syXSwgZXhjZXB0aW9uKSk7CiAgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKIAorICAgIGJv
b2wgZHVtcFJlY3QgPSBmYWxzZTsKKyAgICBpZiAoYXJndW1lbnRDb3VudCA9PSA0KQorICAgICAg
ICBkdW1wUmVjdCA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzNdLCBleGNl
cHRpb24pOworCiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNf
Y2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0
KSk7Ci0gICAgY29udHJvbGxlci0+YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KHJlc3VsdC5nZXQo
KSwgY29uZmlkZW5jZSwgbGFuZ3VhZ2UuZ2V0KCkpOworICAgIGNvbnRyb2xsZXItPmFkZE1vY2tT
cGVlY2hJbnB1dFJlc3VsdChyZXN1bHQuZ2V0KCksIGNvbmZpZGVuY2UsIGxhbmd1YWdlLmdldCgp
LCBkdW1wUmVjdCk7CiAKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA5
ZjRkYjQ5ODNhMzdmYjAxOGI4MjZjMWQ5N2FiZTllZDlkZTI2ZjQ2Li5kMzBlNWUxNTNlNTViOTQ0
Mjk0OWEzN2MxNGE3MWEwMGQ2ZjFkYWJlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmgKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBo
YSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1h
LCBkb3VibGUgZ2FtbWEpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNv
ZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9z
aXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kp
OwotICAgIHZvaWQgYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwg
ZG91YmxlIGNvbmZpZGVuY2UsIEpTU3RyaW5nUmVmIGxhbmd1YWdlKTsKKyAgICB2b2lkIGFkZE1v
Y2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNl
LCBKU1N0cmluZ1JlZiBsYW5ndWFnZSwgYm9vbCBkdW1wUmVjdCk7CiAgICAgdm9pZCBzZXRQZXJz
aXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKICAgICB2b2lk
IHNldFBsdWdpbnNFbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRQb3B1cEJsb2NraW5n
RW5hYmxlZChib29sIGZsYWcpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGY2OGUwZDg3MmFkMTJjMTYzYWE4
NTA5Mzk0NDE3YzdmZmM3ZjM5NjMuLjdlOTIyMWFjNTg1N2Q2OGRhMDY0M2QzMjI3ZDFjNjUwNGQz
MDhlYTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTE5MjIsMTEgKzE5MjIsMTUgQEAgdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6YWJvcnRNb2RhbChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaWEKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1
dFJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVz
dWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgp
IDwgMyB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkgfHwgIWFyZ3VtZW50c1sxXS5pc051bWJl
cigpIHx8ICFhcmd1bWVudHNbMl0uaXNTdHJpbmcoKSkKKyAgICBpZiAoYXJndW1lbnRzLnNpemUo
KSA8IDMgfHwgIWFyZ3VtZW50c1swXS5pc1N0cmluZygpIHx8ICFhcmd1bWVudHNbMV0uaXNOdW1i
ZXIoKSB8fCAhYXJndW1lbnRzWzJdLmlzU3RyaW5nKCkgfHwgKGFyZ3VtZW50cy5zaXplKCkgPT0g
NCAmJiAhYXJndW1lbnRzWzNdLmlzQm9vbCgpKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYm9v
bCBkdW1wUmVjdCA9IGZhbHNlOworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID09IDQpCisgICAg
ICAgIGR1bXBSZWN0ID0gYXJndW1lbnRzWzNdLnRvQm9vbGVhbigpOworCiAgICAgaWYgKFdlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2sqIGNvbnRyb2xsZXIgPSBtX3NoZWxsLT53ZWJWaWV3SG9z
dCgpLT5zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrKCkpCi0gICAgICAgIGNvbnRyb2xsZXItPmFk
ZE1vY2tSZWNvZ25pdGlvblJlc3VsdChjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzBd
KSwgYXJndW1lbnRzWzFdLnRvRG91YmxlKCksIGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVu
dHNbMl0pKTsKKyAgICAgICAgY29udHJvbGxlci0+YWRkTW9ja1JlY29nbml0aW9uUmVzdWx0KGNw
cFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0pLCBhcmd1bWVudHNbMV0udG9Eb3VibGUo
KSwgY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1syXSksIGR1bXBSZWN0KTsKIH0KIAog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhcnRTcGVlY2hJbnB1dChjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKaW5kZXggOGRk
MGEzN2NhNTQ3OTdkN2I4MjkxYjIxNGY1ZmI1OGY2ZDBhZTNhNy4uODc5YjY3MmVlOGZhODgzMjVj
NWM4Njk5YjdiNzBjNTc1YWFjZWRmZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCkBAIC0zODIsNyArMzgyLDcgQEAgaW50
IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0cygpCiAgICAgcmV0dXJuIC0xOwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYsIGRvdWJsZSwgSlNTdHJp
bmdSZWYpCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1
bHQoSlNTdHJpbmdSZWYsIGRvdWJsZSwgSlNTdHJpbmdSZWYsIGJvb2wpCiB7CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KICAgICAvLyBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5k
ZXggN2MxMzNmZDMwZWQwMTk0OTFiMGRhZjE1Y2RhOWI3M2M0Njk1MDIwMC4uMTQ0NmE2OGViZWMz
OTg4NjE5MTQ1NDc2ZjM3YWU3MTFkNGY3MzMwNyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC01MjAsNyArNTIwLDcg
QEAgaW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0cygpCiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6
bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHModmlldyk7CiB9CiAK
LXZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0
cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSkK
K3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0
cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSwg
Ym9vbCBkdW1wUmVjdCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5w
dXQgbGF5b3V0IHRlc3RzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzk0ODUuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
TGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5
b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggNzg0YmM2MTE1MThhNTllZGQ0ZTkwMjQ4YTk1
M2I1OGYzZjI4ZmJhZi4uNjc2MmQ0NTc0NmVkMzA5YWNjYjZhYzM0ODQ2MzU0ZTg5NGIxYTEyZCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbQpAQCAtNTM5LDcgKzUzOSw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQogICAgIFtbW21haW5GcmFtZSB3ZWJW
aWV3XSBVSURlbGVnYXRlXSBkaWRTZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uXTsKIH0KIAot
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3Ry
aW5nUmVmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVuY2UsIEpTU3RyaW5nUmVmIGxhbmd1YWdlKQor
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3Ry
aW5nUmVmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVuY2UsIEpTU3RyaW5nUmVmIGxhbmd1YWdlLCBi
b29sIGR1bXBSZWN0KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1
dCBsYXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zOTQ4NS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5jcHAKaW5kZXggYTYwNTBjN2IyYTY4NTZiNzU1ODZmYjM2ZTBiZTFl
OTIyOGVmMjVmZS4uZTEyYjQ5YzYwNTE1NjlmMmFmZmYwM2I1YzQyMTU2YzJiZTgzNWFkMyAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHAKQEAgLTg5Myw3ICs4OTMsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsbwogICAgICAgICBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24ocGFnZSwg
bGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpOwogfQogCi12b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgUVN0cmluZyYgcmVzdWx0LCBk
b3VibGUgY29uZmlkZW5jZSwgY29uc3QgUVN0cmluZyYgbGFuZ3VhZ2UpCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgUVN0cmluZyYgcmVz
dWx0LCBkb3VibGUgY29uZmlkZW5jZSwgY29uc3QgUVN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wgZHVt
cFJlY3QpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91
dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM5NDg1LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5oCmluZGV4IGI4NDJmZTRkZmY3OTlkODJiMmViYTk2ZTkzOGZhZDgxYTBiYjY4NmQu
LmFmMjZhNzJmYmMwMjYwMDU4MzM0Nzk2NzI5Zjk1NmM2MDE3YmU1ZTkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKQEAgLTIzMyw3ICsy
MzMsNyBAQCBwdWJsaWMgc2xvdHM6CiAgICAgYm9vbCBpc0dlb2xvY2F0aW9uUGVybWlzc2lvblNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW9sb2NhdGlvblBlcm1pc3Npb25TZXQ7IH0KICAgICBi
b29sIGdlb2xvY2F0aW9uUGVybWlzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25Q
ZXJtaXNzaW9uOyB9CiAKLSAgICB2b2lkIGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBR
U3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBjb25zdCBRU3RyaW5nJiBsYW5ndWFn
ZSk7CisgICAgdm9pZCBhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgUVN0cmluZyYgcmVz
dWx0LCBkb3VibGUgY29uZmlkZW5jZSwgY29uc3QgUVN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wgZHVt
cFJlY3QpOwogICAgIHZvaWQgc3RhcnRTcGVlY2hJbnB1dChjb25zdCBRU3RyaW5nJiBpbnB1dEVs
ZW1lbnQpOwogCiAgICAgLy8gRW1wdHkgc3R1YiBtZXRob2QgdG8ga2VlcCBwYXJpdHkgd2l0aCBv
YmplY3QgbW9kZWwgZXhwb3NlZCBieSBnbG9iYWwgTGF5b3V0VGVzdENvbnRyb2xsZXIuCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNw
cAppbmRleCAzOGM5ODc3NjBhZGM1YTgwYzc4ZTY1YWMyZDI1MDQzNzM2NDhhN2QxLi40OGJjNTQ5
YTFhNDY3NTE0OWI3NWM2NzY4MGQ4MWZmMTAxNzZkMzY1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKQEAgLTQ0NCw3ICs0
NDQsNyBAQCBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGVuZGluZ0dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RzKCkKICAgICByZXR1cm4gLTE7CiB9CiAKLXZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1
bHQsIGRvdWJsZSBjb25maWRlbmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSkKK3ZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1
bHQsIGRvdWJsZSBjb25maWRlbmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSwgYm9vbCBkdW1wUmVj
dCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRl
c3RzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mzk0ODUuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29u
dHJvbGxlcld4LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9s
bGVyV3guY3BwCmluZGV4IGNmZDFmNmRkNmJhZTVjOTQzMjBkZjQ2OWEwMTk0ZWQ1NjQ1YjExYjIu
LjI2ZTIxYmRhNTkwZmJmOTJhMGQ0OWUxNGFjMTQwYjRiYWMyMTRmZTAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCkBAIC0zNzAs
NyArMzcwLDcgQEAgaW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBlbmRpbmdHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cygpCiAgICAgcmV0dXJuIC0xOwogfQogCi12b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYg
cmVzdWx0LCBkb3VibGUgY29uZmlkZW5jZSwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UpCit2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYg
cmVzdWx0LCBkb3VibGUgY29uZmlkZW5jZSwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UsIGJvb2wgZHVt
cFJlY3QpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91
dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM5NDg1LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGFjM2RhM2UxZDM5ODlkNWFiYzM0NjJkZDE2NmFmMzI3YjU1MTMy
ZWMuLjNhNmFkYWVmMGE1ZDdlMDZkNGQ0ZTYxOGI4N2E3NDBmM2JmMzVkZDggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxMi0wMS0xOCAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFNwZWVjaCBJbnB1dDogUmVwb3J0IHNwZWVjaCBlbGVtZW50IHJlY3QgcmVs
YXRpdmUgdG8gd2luZG93IHJhdGhlciB0aGFuIGZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjQ0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCB0byBjaGVjayB0aGF0IHRo
ZSBlbGVtZW50IHBvc2l0aW9uIHVzZWQgd2hlbgorICAgICAgICByZXF1ZXN0aW5nIHNwZWVjaCBp
bnB1dCBpcyByZWxhdGl2ZSB0byB0aGUgd2luZG93LCBub3QgdGhlIGZyYW1lLgorCisgICAgICAg
ICogZmFzdC9zcGVlY2gvYnViYmxlLXBvc2l0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9zcGVlY2gvYnViYmxlLXBvc2l0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAx
LTE3ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0
XSBVbnJldmlld2VkIG1vcm5pbmcgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2gvYnViYmxlLXBvc2l0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNoL2J1YmJsZS1wb3NpdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmZkNmM2
MmMzOTQ0MjY1MmMzMzJmODFkYjI3Y2ExMDliMjA1MDM1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2J1YmJsZS1wb3NpdGlvbi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMiBAQAorVGVzdHMgZm9yIHNwZWVjaCBidXR0b24gY2xpY2sgd2l0aCA8aW5wdXQgdHlw
ZT0idGV4dCIgc3BlZWNoPi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0NsaWNr
aW5nIHRoZSBzcGVlY2ggYnV0dG9uLgorb25TcGVlY2hDaGFuZ2UoKQorUEFTUyBpbnB1dC52YWx1
ZSBpcyAiMTU3LCAxMTEiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvYnViYmxlLXBv
c2l0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9idWJibGUtcG9zaXRpb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NTMzZDlkNmJmZDQ5YjkxMjJkNDZiYTE3YTg4OTRjZWM1OGI5Y2M1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvYnViYmxlLXBvc2l0aW9u
Lmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbignVGVzdHMgZm9yIHNwZWVjaCBidXR0
b24gY2xpY2sgd2l0aCAmbHQ7aW5wdXQgdHlwZT0idGV4dCIgc3BlZWNoPi4nKTsKKworZnVuY3Rp
b24gb25TcGVlY2hDaGFuZ2UoKSB7CisgICAgZGVidWcoIm9uU3BlZWNoQ2hhbmdlKCkiKTsKKwor
ICAgIC8vIFNpbmNlIHdlIHJlcXVlc3RlZCBkdW1wUmVjdCwgdGhlIHJlY3QgY29tZXMgYmFjayBh
cyB0aGUgc3BlZWNoIHJlc3VsdC4KKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImlucHV0LnZh
bHVlIiwgZXhwZWN0ZWRYICsgIiwgIiArIGV4cGVjdGVkWSk7CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK2Z1bmN0aW9uIHJ1bigpIHsKKyAgICB3aW5kb3cuaWZyYW1lID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2lmcmFtZScpOworICAgIHdpbmRvdy5pbnB1dCA9IGlmcmFtZS5jb250ZW50
RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKKyAgICBpbnB1dC5zZXRBdHRyaWJ1dGUo
J3gtd2Via2l0LXNwZWVjaCcpOworICAgIGlucHV0Lm9ud2Via2l0c3BlZWNoY2hhbmdlID0gb25T
cGVlY2hDaGFuZ2U7CisgICAgaWZyYW1lLmNvbnRlbnREb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgnYm9keScpWzBdLmFwcGVuZENoaWxkKGlucHV0KTsKKworICAgIGV4cGVjdGVkWCA9IGlm
cmFtZS5vZmZzZXRMZWZ0ICsgaW5wdXQub2Zmc2V0TGVmdCArIGlucHV0Lm9mZnNldFdpZHRoIC0g
MTY7CisgICAgZXhwZWN0ZWRZID0gaWZyYW1lLm9mZnNldFRvcCArIGlucHV0Lm9mZnNldFRvcCAr
IGlucHV0Lm9mZnNldEhlaWdodCAtIDE7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5hZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoJ1BpY3R1cmVzIG9mIHRoZSBtb29uJywgMS4w
LCAnJywgLyogZHVtcFJlY3QgPSAqLyB0cnVlKTsKKworICAgICAgICBkZWJ1ZygnQ2xpY2tpbmcg
dGhlIHNwZWVjaCBidXR0b24uJyk7CisgICAgICAgIHZhciB4ID0gaW5wdXQub2Zmc2V0TGVmdCAr
IGlucHV0Lm9mZnNldFdpZHRoIC0gNDsKKyAgICAgICAgdmFyIHkgPSBpbnB1dC5vZmZzZXRUb3Ag
KyBpbnB1dC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICB4ICs9IGlmcmFtZS5vZmZzZXRMZWZ0
OworICAgICAgICB5ICs9IGlmcmFtZS5vZmZzZXRUb3A7CisKKyAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgfQorfQorCit3aW5kb3cub25sb2FkID0g
cnVuOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8aWZyYW1lIGlk
PSJpZnJhbWUiPgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123136</attachid>
            <date>2012-01-19 08:40:35 -0800</date>
            <delta_ts>2012-01-20 07:15:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76443-20120119164033.patch</filename>
            <type>text/plain</type>
            <size>24701</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWYyY2I3NDk0ZDM3Nzg0
YzBlMDcxM2U5NGM3MzEzZGNmMjU4YzVhNS4uOWRjNjZkNzgxZjU0MTQ1NjQwZTUyMjM3Y2Q3ZDky
YjhhNDVmYmQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAxLTE4ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElucHV0OiBS
ZXBvcnQgc3BlZWNoIGVsZW1lbnQgcmVjdCByZWxhdGl2ZSB0byB3aW5kb3cgcmF0aGVyIHRoYW4g
ZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
NDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biByZXF1ZXN0aW5nIHNwZWVjaCBpbnB1dCwgcmVwb3J0IHRoZSBzcGVlY2ggZWxlbWVudCByZWN0
IHJlbGF0aXZlCisgICAgICAgIHRvIHRoZSB3aW5kb3cgcmF0aGVyIHRoYW4gdGhlIGZyYW1lLiBU
aGUgZW1iZWRkZXIgd2lsbCB0eXBpY2FsbHkgdXNlCisgICAgICAgIHRoaXMgcG9zaXRpb24gdG8g
c2hvdyBhIGJ1YmJsZSBpbmRpY2F0aW5nIHRoYXQgc3BlZWNoIHJlY29nbml0aW9uIGlzCisgICAg
ICAgIGluIHByb2dyZXNzLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNoL2J1YmJsZS1wb3Np
dGlvbi5odG1sCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6
OnN0YXJ0U3BlZWNoSW5wdXQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRD
bGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6
c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjptYWtlUmVjdFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OmFkZFJlY29nbml0aW9uUmVz
dWx0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaDoKKwog
MjAxMi0wMS0xNyAgTHVrZSBNYWNwaGVyc29uICAgPG1hY3BoZXJzb25AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJlbW92ZSByZWZlcmVuY2VzIHRvIENTU1ByaW1pdGl2ZVZhbHVlOjpwcmltaXRp
dmVUeXBlKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDI2MGI5ZjI2YzYxNzNlM2Yx
NWU3ZjQ5NTQ1OTZiMTQyYzI1ZWM5YjIuLmRiZmZiMmM3NjU5MzgwODFhZDRjNjQyODE5NmM1OTNi
NzQ1YjhiMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTItMDEtMTggIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBT
cGVlY2ggSW5wdXQ6IFJlcG9ydCBzcGVlY2ggZWxlbWVudCByZWN0IHJlbGF0aXZlIHRvIHdpbmRv
dyByYXRoZXIgdGhhbiBmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzY0NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgdGhlIFNwZWVjaElucHV0Q29udHJvbGxlck1vY2sgdG8gYWxsb3cg
Zm9yIHJldHJpZXZpbmcgdGhlCisgICAgICAgIHNwZWVjaCBlbGVtZW50J3MgcG9zaXRpb24gdXNl
ZCBpbiB0aGUgcmVxdWVzdC4KKworICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrLmg6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0lt
cGw6OmFkZE1vY2tSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsLmg6CisKIDIwMTItMDEtMTcgIEJpbGwgQnVkZ2UgIDxiYnVk
Z2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFzc29jaWF0ZWRVUkxMb2FkZXIgYWRkcyBzdXBw
b3J0IGZvciB0aGUgSFRUUCByZXNwb25zZSBoZWFkZXIgQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhl
YWRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwCmluZGV4IDZhYjlkMWY2NmNiNGZmYjAwNzc3N2E1OTU5ODliYWRl
OGFlYTg4ZGIuLjgwOGZmYTMxZWY3MzM3OTBmMmI3YWRiYmZkNWEwNDE5MjZkNjUwNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5o
IgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1dC5oIgpA
QCAtNTQ5LDcgKzU1MCw3IEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OnN0
YXJ0U3BlZWNoSW5wdXQoKQogICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSA9IGlucHV0LT5jb21w
dXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKTsKICAgICBTdHJpbmcgZ3JhbW1hciA9IGlucHV0LT5nZXRB
dHRyaWJ1dGUod2Via2l0Z3JhbW1hckF0dHIpOwogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBw
cm9iYWJseSByZXNwZWN0IHRyYW5zZm9ybXMKLSAgICBJbnRSZWN0IHJlY3QgPSByZW5kZXJlcigp
LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOworICAgIEludFJl
Y3QgcmVjdCA9IHJlbmRlcmVyKCktPnZpZXcoKS0+ZnJhbWVWaWV3KCktPmNvbnRlbnRzVG9XaW5k
b3cocmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMo
KSk7CiAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVjb2duaXRpb24obV9saXN0ZW5lcklk
LCByZWN0LCBsYW5ndWFnZSwgZ3JhbW1hciwgZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkp
CiAgICAgICAgIHNldFN0YXRlKFJlY29yZGluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKaW5kZXggOWFhMzEx
M2RjMDA2M2JlYTI2ZDRiMTU4ZDc0MDQ5MTAxYjkzYmE4Yi4uZDM3ZWIwYjMyZGVkMmFhMzBmNjJh
YzNkNzc0Y2I4NmE3NWJkYjc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcApAQCAtMzUsNiArMzUsNyBAQAogCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1dExpc3RlbmVy
LmgiCisjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTU2LDYgKzU3LDcgQEAgYm9vbCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnN0YXJ0UmVjb2duaXRp
b24oaW50IHJlcXVlc3RJZCwgY29uc3QgSW50UmVjdCYgZWxlbWUKICAgICBpZiAobV90aW1lci5p
c0FjdGl2ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9yZXF1ZXN0SWQgPSByZXF1
ZXN0SWQ7CisgICAgbV9yZXF1ZXN0UmVjdCA9IGVsZW1lbnRSZWN0OwogICAgIG1fcmVjb3JkaW5n
ID0gdHJ1ZTsKICAgICBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7CiAgICAgbV90aW1lci5zdGFydE9u
ZVNob3QoMCk7CkBAIC04Miw3ICs4NCwxNiBAQCB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6
Y2FuY2VsUmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCkKICAgICB9CiB9CiAKLXZvaWQgU3BlZWNo
SW5wdXRDbGllbnRNb2NrOjphZGRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3Vs
dCwgZG91YmxlIGNvbmZpZGVuY2UsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpCitzdGF0
aWMgU3BlZWNoSW5wdXRSZXN1bHRBcnJheSBtYWtlUmVjdFJlc3VsdChjb25zdCBJbnRSZWN0JiBy
ZWN0KQoreworICAgIFZlY3RvcjxSZWZQdHI8U3BlZWNoSW5wdXRSZXN1bHQ+ID4gcmVzdWx0czsK
KyAgICBUZXh0U3RyZWFtIHRzOworICAgIHRzIDw8IHJlY3QueCgpIDw8ICIsICIgPDwgcmVjdC55
KCk7CisgICAgcmVzdWx0cy5hcHBlbmQoU3BlZWNoSW5wdXRSZXN1bHQ6OmNyZWF0ZSh0cy5yZWxl
YXNlKCksIDEuMCkpOworICAgIHJldHVybiByZXN1bHRzOworfQorCit2b2lkIFNwZWVjaElucHV0
Q2xpZW50TW9jazo6YWRkUmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQsIGRv
dWJsZSBjb25maWRlbmNlLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlLCBib29sIGR1bXBS
ZWN0KQogewogICAgIGlmIChsYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fcmVzdWx0c0Zv
ckVtcHR5TGFuZ3VhZ2UuYXBwZW5kKFNwZWVjaElucHV0UmVzdWx0OjpjcmVhdGUocmVzdWx0LCBj
b25maWRlbmNlKSk7CkBAIC05MSw2ICsxMDIsOCBAQCB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9j
azo6YWRkUmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjbwog
ICAgICAgICAgICAgbV9yZWNvZ25pdGlvblJlc3VsdHMuc2V0KGxhbmd1YWdlLCBTcGVlY2hJbnB1
dFJlc3VsdEFycmF5KCkpOwogICAgICAgICBtX3JlY29nbml0aW9uUmVzdWx0cy5maW5kKGxhbmd1
YWdlKS0+c2Vjb25kLmFwcGVuZChTcGVlY2hJbnB1dFJlc3VsdDo6Y3JlYXRlKHJlc3VsdCwgY29u
ZmlkZW5jZSkpOwogICAgIH0KKworICAgIG1fZHVtcFJlY3QgPSBkdW1wUmVjdDsKIH0KIAogdm9p
ZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OmNsZWFyUmVzdWx0cygpCkBAIC0xMTMsOCArMTI2LDEw
IEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6OlRpbWVy
PFNwZWVjaElucHV0Q2xpZW50TW9jaz4qKQogICAgICAgICBpbnQgcmVxdWVzdElkID0gbV9yZXF1
ZXN0SWQ7CiAgICAgICAgIG1fcmVxdWVzdElkID0gMDsKIAotICAgICAgICAvLyBFbXB0eSBsYW5n
dWFnZSBjYXNlIG11c3QgYmUgaGFuZGxlZCBzZXBhcmF0ZWx5IHRvIGF2b2lkIHByb2JsZW1zIHdp
dGggSGFzaE1hcCBhbmQgZW1wdHkga2V5cy4KLSAgICAgICAgaWYgKG1fbGFuZ3VhZ2UuaXNFbXB0
eSgpKSB7CisgICAgICAgIGlmIChtX2R1bXBSZWN0KQorICAgICAgICAgICAgbV9saXN0ZW5lci0+
c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVzdElkLCBtYWtlUmVjdFJlc3VsdChtX3JlcXVlc3RS
ZWN0KSk7CisgICAgICAgIGVsc2UgaWYgKG1fbGFuZ3VhZ2UuaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICAvLyBFbXB0eSBsYW5ndWFnZSBjYXNlIG11c3QgYmUgaGFuZGxlZCBzZXBhcmF0ZWx5IHRv
IGF2b2lkIHByb2JsZW1zIHdpdGggSGFzaE1hcCBhbmQgZW1wdHkga2V5cy4KICAgICAgICAgICAg
IGlmICghbV9yZXN1bHRzRm9yRW1wdHlMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAg
ICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVzdElkLCBtX3Jlc3VsdHNG
b3JFbXB0eUxhbmd1YWdlKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oCmluZGV4IDRlMTMyNDJh
Y2I0YjZmOTE2NGRlZWU4NTVkNTYzNjhiZDQ5ZWM1MzYuLmUxYjA5ZTZkYmIxYTQyMDA0ZDViOGIy
NTMyOGIyYjUyMzVjYTlmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaApAQCAtMzEsNiArMzEsNyBAQAogI2lmbmRlZiBT
cGVlY2hJbnB1dENsaWVudE1vY2tfaAogI2RlZmluZSBTcGVlY2hJbnB1dENsaWVudE1vY2tfaAog
CisjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5j
bHVkZSAiU3BlZWNoSW5wdXRDbGllbnQuaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1dFJlc3VsdC5o
IgpAQCAtNDksNyArNTAsNyBAQCBjbGFzcyBTcGVlY2hJbnB1dENsaWVudE1vY2sgOiBwdWJsaWMg
U3BlZWNoSW5wdXRDbGllbnQgewogcHVibGljOgogICAgIFNwZWVjaElucHV0Q2xpZW50TW9jaygp
OwogCi0gICAgdm9pZCBhZGRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCwg
ZG91YmxlIGNvbmZpZGVuY2UsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2UpOworICAgIHZv
aWQgYWRkUmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjb25m
aWRlbmNlLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlLCBib29sIGR1bXBSZWN0KTsKICAg
ICB2b2lkIGNsZWFyUmVzdWx0cygpOwogCiAgICAgLy8gU3BlZWNoSW5wdXRDbGllbnQgbWV0aG9k
cy4KQEAgLTY1LDEwICs2NiwxMiBAQCBwcml2YXRlOgogICAgIFRpbWVyPFNwZWVjaElucHV0Q2xp
ZW50TW9jaz4gbV90aW1lcjsKICAgICBTcGVlY2hJbnB1dExpc3RlbmVyKiBtX2xpc3RlbmVyOwog
ICAgIGludCBtX3JlcXVlc3RJZDsKKyAgICBJbnRSZWN0IG1fcmVxdWVzdFJlY3Q7CiAKICAgICBI
YXNoTWFwPFN0cmluZywgU3BlZWNoSW5wdXRSZXN1bHRBcnJheT4gbV9yZWNvZ25pdGlvblJlc3Vs
dHM7CiAgICAgQXRvbWljU3RyaW5nIG1fbGFuZ3VhZ2U7CiAgICAgU3BlZWNoSW5wdXRSZXN1bHRB
cnJheSBtX3Jlc3VsdHNGb3JFbXB0eUxhbmd1YWdlOworICAgIGJvb2wgbV9kdW1wUmVjdDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaAppbmRleCBk
NGU1NDNmMDJjMzE2MTA0YTQ1YjI1OGIyZWUxYmE4NTRmMzdhZGFhLi5lNjkzNmY1NmYyYmUyOGI0
YzEwMjE4ZjljMDlhN2QzNzdhNDZkYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCkBAIC00
NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICAgICAgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciogbGlz
dGVuZXIpOwogICAgIHZpcnR1YWwgfldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2soKSB7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBhZGRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3Ry
aW5nJiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdl
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25zdCBX
ZWJTdHJpbmcmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVuY2UsIGNvbnN0IFdlYlN0cmluZyYgbGFu
Z3VhZ2UsIGJvb2wgZHVtcFJlY3QpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhclJlc3Vs
dHMoKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCmluZGV4IDRmMWYwNzQ1
NzNjMzc0N2ZjMDMzMjhmZWRiMWQzNjkyMTI3NmRkNDYuLjkyYTk0ZDI5NWZkZWI1ODljYzZhNDk5
ZTA5YjhjYzVhNzVhYzIwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAKQEAgLTYw
LDkgKzYwLDkgQEAgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6On5XZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrSW1wbCgpCiAgICAgbV93ZWJjb3JlTW9jay0+c2V0TGlzdGVuZXIo
MCk7CiB9CiAKLXZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmFkZE1vY2tS
ZWNvZ25pdGlvblJlc3VsdChjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVu
Y2UsIGNvbnN0IFdlYlN0cmluZyAmbGFuZ3VhZ2UpCit2b2lkIFdlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsOjphZGRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiBy
ZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBjb25zdCBXZWJTdHJpbmcgJmxhbmd1YWdlLCBib29s
IGR1bXBSZWN0KQogewotICAgIG1fd2ViY29yZU1vY2stPmFkZFJlY29nbml0aW9uUmVzdWx0KHJl
c3VsdCwgY29uZmlkZW5jZSwgbGFuZ3VhZ2UpOworICAgIG1fd2ViY29yZU1vY2stPmFkZFJlY29n
bml0aW9uUmVzdWx0KHJlc3VsdCwgY29uZmlkZW5jZSwgbGFuZ3VhZ2UsIGR1bXBSZWN0KTsKIH0K
IAogdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6Y2xlYXJSZXN1bHRzKCkK
QEAgLTExNCw0ICsxMTQsMyBAQCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrKiBXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrOjpjcmVhdGUoV2ViU3BlZWNoSW5wdQogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQotCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9ja0ltcGwuaAppbmRleCAwNWJmZDUyYThjODhlMmMxZjE1MTU4ZmVkOGFlNjRmMDk3ZWRk
NjQ3Li40M2ZmY2JhZjc5OGMyNmRkYzYzZmRkMTE0ODljZDk3NWRmM2U4MWU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2tJbXBsLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3Rv
cFJlY29yZGluZyhpbnQgcmVxdWVzdElkKTsKIAogICAgIC8vIFdlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2sgbWV0aG9kcy4KLSAgICB2b2lkIGFkZE1vY2tSZWNvZ25pdGlvblJlc3VsdChjb25z
dCBXZWJTdHJpbmcmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVuY2UsIGNvbnN0IFdlYlN0cmluZyYg
bGFuZ3VhZ2UpOworICAgIHZvaWQgYWRkTW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYlN0
cmluZyYgcmVzdWx0LCBkb3VibGUgY29uZmlkZW5jZSwgY29uc3QgV2ViU3RyaW5nJiBsYW5ndWFn
ZSwgYm9vbCBkdW1wUmVjdCk7CiAgICAgdm9pZCBjbGVhclJlc3VsdHMoKTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMGUy
MDdlMzhmZmI4YWZkZmY4NTkyYjBmODllNDE0YzAxZWIzMjllLi4yMWNiODkzZGJiNjQ5OTc2NjM1
MTkzNjBkOWZlYzNmZjI4NGRmNGRlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMDEtMTggIEhhbnMgV2VubmJv
cmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGVlY2ggSW5wdXQ6IFJlcG9ydCBz
cGVlY2ggZWxlbWVudCByZWN0IHJlbGF0aXZlIHRvIHdpbmRvdyByYXRoZXIgdGhhbiBmcmFtZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY0NDMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhl
IFNwZWVjaElucHV0Q29udHJvbGxlck1vY2sgdG8gYWxsb3cgZm9yIHJldHJpZXZpbmcgdGhlCisg
ICAgICAgIHNwZWVjaCBlbGVtZW50J3MgcG9zaXRpb24gdXNlZCBpbiB0aGUgcmVxdWVzdC4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHA6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisK
IDIwMTItMDEtMTYgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29t
PgogCiAgICAgICAgIFtRdF0gRG9uJ3QgYWRkIF9kZWJ1ZyBwb3N0Zml4IHRvIHRhcmdldHMgd2hl
biBidWlsZGluZyBkZWJ1ZyBvbmx5CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKaW5kZXggNmMxM2Q5MzA5NDZkNTE5ZjYwNTc5MDdmNWM0MGRkNjJmZjc1
MGM5Ny4uY2Y1NWJlY2FlYzBlZmIzMzAwYzBhOTUwYzZjNjYzY2RhNmM4N2FmYiAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTM1MCw4ICsx
MzUwLDEyIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdENhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IGxhbmd1YWdlKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3Vt
ZW50c1syXSwgZXhjZXB0aW9uKSk7CiAgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKIAorICAgIGJv
b2wgZHVtcFJlY3QgPSBmYWxzZTsKKyAgICBpZiAoYXJndW1lbnRDb3VudCA9PSA0KQorICAgICAg
ICBkdW1wUmVjdCA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzNdKTsKKwog
ICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0
VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIGNv
bnRyb2xsZXItPmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChyZXN1bHQuZ2V0KCksIGNvbmZpZGVu
Y2UsIGxhbmd1YWdlLmdldCgpKTsKKyAgICBjb250cm9sbGVyLT5hZGRNb2NrU3BlZWNoSW5wdXRS
ZXN1bHQocmVzdWx0LmdldCgpLCBjb25maWRlbmNlLCBsYW5ndWFnZS5nZXQoKSwgZHVtcFJlY3Qp
OwogCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggOWY0ZGI0OTgzYTM3
ZmIwMThiODI2YzFkOTdhYmU5ZWQ5ZGUyNmY0Ni4uZDMwZTVlMTUzZTU1Yjk0NDI5NDlhMzdjMTRh
NzFhMDBkNmYxZGFiZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TW9ja0Rldmlj
ZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2Fu
UHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdh
bW1hKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmlu
Z1JlZiBtZXNzYWdlKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKLSAgICB2b2lk
IGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBjb25m
aWRlbmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSk7CisgICAgdm9pZCBhZGRNb2NrU3BlZWNoSW5w
dXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBkb3VibGUgY29uZmlkZW5jZSwgSlNTdHJpbmdS
ZWYgbGFuZ3VhZ2UsIGJvb2wgZHVtcFJlY3QpOwogICAgIHZvaWQgc2V0UGVyc2lzdGVudFVzZXJT
dHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCk7CiAgICAgdm9pZCBzZXRQbHVnaW5z
RW5hYmxlZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoYm9v
bCBmbGFnKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBmNjhlMGQ4NzJhZDEyYzE2M2FhODUwOTM5NDQxN2M3
ZmZjN2YzOTYzLi43ZTkyMjFhYzU4NTdkNjhkYTA2NDNkMzIyN2QxYzY1MDRkMzA4ZWE2IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCkBAIC0xOTIyLDExICsxOTIyLDE1IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmFib3J0TW9kYWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlh
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAg
ICByZXN1bHQtPnNldE51bGwoKTsKLSAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDMgfHwgIWFy
Z3VtZW50c1swXS5pc1N0cmluZygpIHx8ICFhcmd1bWVudHNbMV0uaXNOdW1iZXIoKSB8fCAhYXJn
dW1lbnRzWzJdLmlzU3RyaW5nKCkpCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAzIHx8ICFh
cmd1bWVudHNbMF0uaXNTdHJpbmcoKSB8fCAhYXJndW1lbnRzWzFdLmlzTnVtYmVyKCkgfHwgIWFy
Z3VtZW50c1syXS5pc1N0cmluZygpIHx8IChhcmd1bWVudHMuc2l6ZSgpID09IDQgJiYgIWFyZ3Vt
ZW50c1szXS5pc0Jvb2woKSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGJvb2wgZHVtcFJlY3Qg
PSBmYWxzZTsKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA9PSA0KQorICAgICAgICBkdW1wUmVj
dCA9IGFyZ3VtZW50c1szXS50b0Jvb2xlYW4oKTsKKwogICAgIGlmIChXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrKiBjb250cm9sbGVyID0gbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+c3BlZWNo
SW5wdXRDb250cm9sbGVyTW9jaygpKQotICAgICAgICBjb250cm9sbGVyLT5hZGRNb2NrUmVjb2du
aXRpb25SZXN1bHQoY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1swXSksIGFyZ3VtZW50
c1sxXS50b0RvdWJsZSgpLCBjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzJdKSk7Cisg
ICAgICAgIGNvbnRyb2xsZXItPmFkZE1vY2tSZWNvZ25pdGlvblJlc3VsdChjcHBWYXJpYW50VG9X
ZWJTdHJpbmcoYXJndW1lbnRzWzBdKSwgYXJndW1lbnRzWzFdLnRvRG91YmxlKCksIGNwcFZhcmlh
bnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMl0pLCBkdW1wUmVjdCk7CiB9CiAKIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnN0YXJ0U3BlZWNoSW5wdXQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCmluZGV4IDhkZDBhMzdjYTU0Nzk3
ZDdiODI5MWIyMTRmNWZiNThmNmQwYWUzYTcuLjg3OWI2NzJlZThmYTg4MzI1YzVjODY5OWI3Yjcw
YzU3NWFhY2VkZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRU
ZXN0Q29udHJvbGxlckVmbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0xheW91
dFRlc3RDb250cm9sbGVyRWZsLmNwcApAQCAtMzgyLDcgKzM4Miw3IEBAIGludCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMo
KQogICAgIHJldHVybiAtMTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9j
a1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmLCBkb3VibGUsIEpTU3RyaW5nUmVmKQordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5n
UmVmLCBkb3VibGUsIEpTU3RyaW5nUmVmLCBib29sKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDdjMTMzZmQz
MGVkMDE5NDkxYjBkYWYxNWNkYTliNzNjNDY5NTAyMDAuLjE0NDZhNjhlYmVjMzk4ODYxOTE0NTQ3
NmYzN2FlNzExZDRmNzMzMDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9M
YXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtNTIwLDcgKzUyMCw3IEBAIGludCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdHMoKQogICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6Om51bWJlck9mUGVu
ZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKHZpZXcpOwogfQogCi12b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVz
dWx0LCBkb3VibGUgY29uZmlkZW5jZSwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UpCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVz
dWx0LCBkb3VibGUgY29uZmlkZW5jZSwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UsIGJvb2wgZHVtcFJl
Y3QpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0
ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM5NDg1LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RD
b250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250
cm9sbGVyTWFjLm1tCmluZGV4IDc4NGJjNjExNTE4YTU5ZWRkNGU5MDI0OGE5NTNiNThmM2YyOGZi
YWYuLjY3NjJkNDU3NDZlZDMwOWFjY2I2YWMzNDg0NjM1NGU4OTRiMWExMmQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAg
LTUzOSw3ICs1MzksNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlv
blBlcm1pc3Npb24oYm9vbCBhbGxvdykKICAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gVUlEZWxl
Z2F0ZV0gZGlkU2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbl07CiB9CiAKLXZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1
bHQsIGRvdWJsZSBjb25maWRlbmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSkKK3ZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1
bHQsIGRvdWJsZSBjb25maWRlbmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSwgYm9vbCBkdW1wUmVj
dCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRl
c3RzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mzk0ODUuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuY3BwCmluZGV4IGE2MDUwYzdiMmE2ODU2Yjc1NTg2ZmIzNmUwYmUxZTkyMjhlZjI1ZmUu
LmUxMmI0OWM2MDUxNTY5ZjJhZmZmMDNiNWM0MjE1NmMyYmU4MzVhZDMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC04OTMs
NyArODkzLDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG8KICAgICAgICAgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKHBhZ2UsIGxhdGl0dWRlLCBs
b25naXR1ZGUsIGFjY3VyYWN5KTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRk
TW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCwgZG91YmxlIGNvbmZp
ZGVuY2UsIGNvbnN0IFFTdHJpbmcmIGxhbmd1YWdlKQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCwgZG91Ymxl
IGNvbmZpZGVuY2UsIGNvbnN0IFFTdHJpbmcmIGxhbmd1YWdlLCBib29sIGR1bXBSZWN0KQogewog
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCiAg
ICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApp
bmRleCBiODQyZmU0ZGZmNzk5ZDgyYjJlYmE5NmU5MzhmYWQ4MWEwYmI2ODZkLi5hZjI2YTcyZmJj
MDI2MDA1ODMzNDc5NjcyOWY5NTZjNjAxN2JlNWU5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCkBAIC0yMzMsNyArMjMzLDcgQEAgcHVi
bGljIHNsb3RzOgogICAgIGJvb2wgaXNHZW9sb2NhdGlvblBlcm1pc3Npb25TZXQoKSBjb25zdCB7
IHJldHVybiBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0OyB9CiAgICAgYm9vbCBnZW9sb2Nh
dGlvblBlcm1pc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2dlb2xvY2F0aW9uUGVybWlzc2lvbjsg
fQogCi0gICAgdm9pZCBhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgUVN0cmluZyYgcmVz
dWx0LCBkb3VibGUgY29uZmlkZW5jZSwgY29uc3QgUVN0cmluZyYgbGFuZ3VhZ2UpOworICAgIHZv
aWQgYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCwgZG91Ymxl
IGNvbmZpZGVuY2UsIGNvbnN0IFFTdHJpbmcmIGxhbmd1YWdlLCBib29sIGR1bXBSZWN0KTsKICAg
ICB2b2lkIHN0YXJ0U3BlZWNoSW5wdXQoY29uc3QgUVN0cmluZyYgaW5wdXRFbGVtZW50KTsKIAog
ICAgIC8vIEVtcHR5IHN0dWIgbWV0aG9kIHRvIGtlZXAgcGFyaXR5IHdpdGggb2JqZWN0IG1vZGVs
IGV4cG9zZWQgYnkgZ2xvYmFsIExheW91dFRlc3RDb250cm9sbGVyLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggMzhj
OTg3NzYwYWRjNWE4MGM3OGU2NWFjMmQyNTA0MzczNjQ4YTdkMS4uNDhiYzU0OWExYTQ2NzUxNDli
NzVjNjc2ODBkODFmZjEwMTc2ZDM2NSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC00NDQsNyArNDQ0LDcgQEAgaW50
IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0cygpCiAgICAgcmV0dXJuIC0xOwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBkb3VibGUg
Y29uZmlkZW5jZSwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UpCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBkb3VibGUg
Y29uZmlkZW5jZSwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UsIGJvb2wgZHVtcFJlY3QpCiB7CiAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KICAgICAv
LyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcApp
bmRleCBjZmQxZjZkZDZiYWU1Yzk0MzIwZGY0NjlhMDE5NGVkNTY0NWIxMWIyLi4yNmUyMWJkYTU5
MGZiZjkyYTBkNDllMTRhYzE0MGI0YmFjMjE0ZmUwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcApAQCAtMzcwLDcgKzM3MCw3IEBA
IGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdHMoKQogICAgIHJldHVybiAtMTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgZG91
YmxlIGNvbmZpZGVuY2UsIEpTU3RyaW5nUmVmIGxhbmd1YWdlKQordm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgZG91
YmxlIGNvbmZpZGVuY2UsIEpTU3RyaW5nUmVmIGxhbmd1YWdlLCBib29sIGR1bXBSZWN0KQogewog
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCiAg
ICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhYzNkYTNlMWQzOTg5ZDVhYmMzNDYyZGQxNjZhZjMyN2I1NTEzMmVjLi4zYTZhZGFl
ZjBhNWQ3ZTA2ZDRkNGU2MThiODdhNzQwZjNiZjM1ZGQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTItMDEtMTggIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBTcGVlY2ggSW5wdXQ6IFJlcG9ydCBzcGVlY2ggZWxlbWVudCByZWN0IHJlbGF0aXZlIHRvIHdp
bmRvdyByYXRoZXIgdGhhbiBmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzY0NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgdG8gY2hlY2sgdGhhdCB0aGUgZWxlbWVudCBw
b3NpdGlvbiB1c2VkIHdoZW4KKyAgICAgICAgcmVxdWVzdGluZyBzcGVlY2ggaW5wdXQgaXMgcmVs
YXRpdmUgdG8gdGhlIHdpbmRvdywgbm90IHRoZSBmcmFtZS4KKworICAgICAgICAqIGZhc3Qvc3Bl
ZWNoL2J1YmJsZS1wb3NpdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
c3BlZWNoL2J1YmJsZS1wb3NpdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMi0wMS0xNyAgQ3NhYmEg
T3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdl
ZCBtb3JuaW5nIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
L2J1YmJsZS1wb3NpdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9i
dWJibGUtcG9zaXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmZDZjNjJjMzk0NDI2NTJj
MzMyZjgxZGIyN2NhMTA5YjIwNTAzNWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3NwZWVjaC9idWJibGUtcG9zaXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAK
K1Rlc3RzIGZvciBzcGVlY2ggYnV0dG9uIGNsaWNrIHdpdGggPGlucHV0IHR5cGU9InRleHQiIHNw
ZWVjaD4uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitDbGlja2luZyB0aGUgc3Bl
ZWNoIGJ1dHRvbi4KK29uU3BlZWNoQ2hhbmdlKCkKK1BBU1MgaW5wdXQudmFsdWUgaXMgIjE1Nywg
MTExIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2J1YmJsZS1wb3NpdGlvbi5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvYnViYmxlLXBvc2l0aW9uLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTUzM2Q5ZDZiZmQ0OWI5MTIyZDQ2YmExN2E4ODk0Y2VjNThiOWNjNQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2J1YmJsZS1wb3NpdGlvbi5odG1sCkBAIC0w
LDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgorZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBzcGVlY2ggYnV0dG9uIGNsaWNrIHdp
dGggJmx0O2lucHV0IHR5cGU9InRleHQiIHNwZWVjaD4uJyk7CisKK2Z1bmN0aW9uIG9uU3BlZWNo
Q2hhbmdlKCkgeworICAgIGRlYnVnKCJvblNwZWVjaENoYW5nZSgpIik7CisKKyAgICAvLyBTaW5j
ZSB3ZSByZXF1ZXN0ZWQgZHVtcFJlY3QsIHRoZSByZWN0IGNvbWVzIGJhY2sgYXMgdGhlIHNwZWVj
aCByZXN1bHQuCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbnB1dC52YWx1ZSIsIGV4cGVj
dGVkWCArICIsICIgKyBleHBlY3RlZFkpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5j
dGlvbiBydW4oKSB7CisgICAgd2luZG93LmlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdpZnJhbWUnKTsKKyAgICB3aW5kb3cuaW5wdXQgPSBpZnJhbWUuY29udGVudERvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgaW5wdXQuc2V0QXR0cmlidXRlKCd4LXdlYmtpdC1z
cGVlY2gnKTsKKyAgICBpbnB1dC5vbndlYmtpdHNwZWVjaGNoYW5nZSA9IG9uU3BlZWNoQ2hhbmdl
OworICAgIGlmcmFtZS5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHkn
KVswXS5hcHBlbmRDaGlsZChpbnB1dCk7CisKKyAgICBleHBlY3RlZFggPSBpZnJhbWUub2Zmc2V0
TGVmdCArIGlucHV0Lm9mZnNldExlZnQgKyBpbnB1dC5vZmZzZXRXaWR0aCAtIDE2OworICAgIGV4
cGVjdGVkWSA9IGlmcmFtZS5vZmZzZXRUb3AgKyBpbnB1dC5vZmZzZXRUb3AgKyBpbnB1dC5vZmZz
ZXRIZWlnaHQgLSAxOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuYWRkTW9j
a1NwZWVjaElucHV0UmVzdWx0KCdQaWN0dXJlcyBvZiB0aGUgbW9vbicsIDEuMCwgJycsIC8qIGR1
bXBSZWN0ID0gKi8gdHJ1ZSk7CisKKyAgICAgICAgZGVidWcoJ0NsaWNraW5nIHRoZSBzcGVlY2gg
YnV0dG9uLicpOworICAgICAgICB2YXIgeCA9IGlucHV0Lm9mZnNldExlZnQgKyBpbnB1dC5vZmZz
ZXRXaWR0aCAtIDQ7CisgICAgICAgIHZhciB5ID0gaW5wdXQub2Zmc2V0VG9wICsgaW5wdXQub2Zm
c2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgeCArPSBpZnJhbWUub2Zmc2V0TGVmdDsKKyAgICAgICAg
eSArPSBpZnJhbWUub2Zmc2V0VG9wOworCisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHgsIHkpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VVcCgpOworICAgIH0KK30KKword2luZG93Lm9ubG9hZCA9IHJ1bjsKK3dpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPGlmcmFtZSBpZD0iaWZyYW1lIj4K
KzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123311</attachid>
            <date>2012-01-20 07:15:08 -0800</date>
            <delta_ts>2012-01-20 07:41:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76443-20120120151507.patch</filename>
            <type>text/plain</type>
            <size>26900</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRlNTYwYzY3YzU2MWY2
NmM0MmE4MmFkNDNhNGZjMzIzNGI0ZWU1MS4uNGRlNWU4NGNhNmM2ZmJmMGJkYjVhM2FiYjU0ZTFm
MzQwZWQwOTZjNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAxLTE4ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElucHV0OiBS
ZXBvcnQgc3BlZWNoIGVsZW1lbnQgcmVjdCByZWxhdGl2ZSB0byB3aW5kb3cgcmF0aGVyIHRoYW4g
ZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
NDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biByZXF1ZXN0aW5nIHNwZWVjaCBpbnB1dCwgcmVwb3J0IHRoZSBzcGVlY2ggZWxlbWVudCByZWN0
IHJlbGF0aXZlCisgICAgICAgIHRvIHRoZSB3aW5kb3cgcmF0aGVyIHRoYW4gdGhlIGZyYW1lLiBU
aGUgZW1iZWRkZXIgd2lsbCB0eXBpY2FsbHkgdXNlCisgICAgICAgIHRoaXMgcG9zaXRpb24gdG8g
c2hvdyBhIGJ1YmJsZSBpbmRpY2F0aW5nIHRoYXQgc3BlZWNoIHJlY29nbml0aW9uIGlzCisgICAg
ICAgIGluIHByb2dyZXNzLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNoL2J1YmJsZS1wb3Np
dGlvbi5odG1sCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6
OnN0YXJ0U3BlZWNoSW5wdXQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRD
bGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6
c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjptYWtlUmVjdFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldER1bXBSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6Y2xlYXJSZXN1bHRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaDoKKwogMjAxMi0wMS0y
MCAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIFNoYWRv
d1Jvb3QuaWRsIHdoaWNoIGlzIGVuYWJsZWQgYnkgbmV3bHkgaW50cm9kdWNlZCBTSEFET1dfRE9N
IGZsYWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDNhNDM4N2Y5NWRhNjhjMjM2ZDUy
Njg2M2Y1NGEyNTdiZDdhZDc5NDUuLmZmOTBlOWNiMTc2YzYwYmVmMTgyMjE2MjJjNzMyMGYyNGFh
NWFlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTIt
MDEtMTggIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGVl
Y2ggSW5wdXQ6IFJlcG9ydCBzcGVlY2ggZWxlbWVudCByZWN0IHJlbGF0aXZlIHRvIHdpbmRvdyBy
YXRoZXIgdGhhbiBmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzY0NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgdGhlIFNwZWVjaElucHV0Q29udHJvbGxlck1vY2sgdG8gYWxsb3cgZm9y
IHJldHJpZXZpbmcgdGhlCisgICAgICAgIHNwZWVjaCBlbGVtZW50J3MgcG9zaXRpb24gdXNlZCBp
biB0aGUgcmVxdWVzdC4KKworICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrLmg6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6
OnNldER1bXBSZWN0KToKKyAgICAgICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGwuaDoKKwogMjAxMi0wMS0yMCAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgQWRkIFNoYWRvd1Jvb3QuaWRsIHdoaWNoIGlzIGVuYWJsZWQgYnkgbmV3bHkg
aW50cm9kdWNlZCBTSEFET1dfRE9NIGZsYWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCA2YWI5ZDFmNjZj
YjRmZmIwMDc3NzdhNTk1OTg5YmFkZThhZWE4OGRiLi44MDhmZmEzMWVmNzMzNzkwZjJiN2FkYmJm
ZDVhMDQxOTI2ZDY1MDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5j
bHVkZSAiU3BlZWNoSW5wdXQuaCIKQEAgLTU0OSw3ICs1NTAsNyBAQCB2b2lkIElucHV0RmllbGRT
cGVlY2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVjaElucHV0KCkKICAgICBBdG9taWNTdHJpbmcg
bGFuZ3VhZ2UgPSBpbnB1dC0+Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCk7CiAgICAgU3RyaW5n
IGdyYW1tYXIgPSBpbnB1dC0+Z2V0QXR0cmlidXRlKHdlYmtpdGdyYW1tYXJBdHRyKTsKICAgICAv
LyBGSVhNRTogdGhpcyBzaG91bGQgcHJvYmFibHkgcmVzcGVjdCB0cmFuc2Zvcm1zCi0gICAgSW50
UmVjdCByZWN0ID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1Ry
YW5zZm9ybXMoKTsKKyAgICBJbnRSZWN0IHJlY3QgPSByZW5kZXJlcigpLT52aWV3KCktPmZyYW1l
VmlldygpLT5jb250ZW50c1RvV2luZG93KHJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hS
ZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkpOwogICAgIGlmIChzcGVlY2hJbnB1dCgpLT5zdGFydFJl
Y29nbml0aW9uKG1fbGlzdGVuZXJJZCwgcmVjdCwgbGFuZ3VhZ2UsIGdyYW1tYXIsIGRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICBzZXRTdGF0ZShSZWNvcmRpbmcpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVu
dE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVu
dE1vY2suY3BwCmluZGV4IDlhYTMxMTNkYzAwNjNiZWEyNmQ0YjE1OGQ3NDA0OTEwMWI5M2JhOGIu
LjU0NjFmMmY4NmRmYTc0MDgwMmQ2OWIzODM1ZDhlYzliYTJhZjE2M2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKIAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Myw2ICs0NCw3IEBAIFNwZWVjaElucHV0Q2xpZW50TW9j
azo6U3BlZWNoSW5wdXRDbGllbnRNb2NrKCkKICAgICAsIG1fdGltZXIodGhpcywgJlNwZWVjaElu
cHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZCkKICAgICAsIG1fbGlzdGVuZXIoMCkKICAgICAsIG1f
cmVxdWVzdElkKDApCisgICAgLCBtX2R1bXBSZWN0KGZhbHNlKQogewogfQogCkBAIC01Niw2ICs1
OCw3IEBAIGJvb2wgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9uKGludCBy
ZXF1ZXN0SWQsIGNvbnN0IEludFJlY3QmIGVsZW1lCiAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fcmVxdWVzdElkID0gcmVxdWVzdElkOwor
ICAgIG1fcmVxdWVzdFJlY3QgPSBlbGVtZW50UmVjdDsKICAgICBtX3JlY29yZGluZyA9IHRydWU7
CiAgICAgbV9sYW5ndWFnZSA9IGxhbmd1YWdlOwogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDAp
OwpAQCAtODIsNiArODUsMTUgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OmNhbmNlbFJl
Y29nbml0aW9uKGludCByZXF1ZXN0SWQpCiAgICAgfQogfQogCitzdGF0aWMgU3BlZWNoSW5wdXRS
ZXN1bHRBcnJheSBtYWtlUmVjdFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIFZl
Y3RvcjxSZWZQdHI8U3BlZWNoSW5wdXRSZXN1bHQ+ID4gcmVzdWx0czsKKyAgICBUZXh0U3RyZWFt
IHRzOworICAgIHRzIDw8IHJlY3QueCgpIDw8ICIsICIgPDwgcmVjdC55KCk7CisgICAgcmVzdWx0
cy5hcHBlbmQoU3BlZWNoSW5wdXRSZXN1bHQ6OmNyZWF0ZSh0cy5yZWxlYXNlKCksIDEuMCkpOwor
ICAgIHJldHVybiByZXN1bHRzOworfQorCiB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6YWRk
UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNl
LCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlKQogewogICAgIGlmIChsYW5ndWFnZS5pc0Vt
cHR5KCkpCkBAIC05MywxMCArMTA1LDE2IEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjph
ZGRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCwgZG91YmxlIGNvCiAgICAg
fQogfQogCit2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0RHVtcFJlY3QoYm9vbCBkdW1w
UmVjdCkKK3sKKyAgICBtX2R1bXBSZWN0ID0gZHVtcFJlY3Q7Cit9CisKIHZvaWQgU3BlZWNoSW5w
dXRDbGllbnRNb2NrOjpjbGVhclJlc3VsdHMoKQogewogICAgIG1fcmVzdWx0c0ZvckVtcHR5TGFu
Z3VhZ2UuY2xlYXIoKTsKICAgICBtX3JlY29nbml0aW9uUmVzdWx0cy5jbGVhcigpOworICAgIG1f
ZHVtcFJlY3QgPSBmYWxzZTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRpbWVy
RmlyZWQoV2ViQ29yZTo6VGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiopCkBAIC0xMTMsOCAr
MTMxLDEwIEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6
OlRpbWVyPFNwZWVjaElucHV0Q2xpZW50TW9jaz4qKQogICAgICAgICBpbnQgcmVxdWVzdElkID0g
bV9yZXF1ZXN0SWQ7CiAgICAgICAgIG1fcmVxdWVzdElkID0gMDsKIAotICAgICAgICAvLyBFbXB0
eSBsYW5ndWFnZSBjYXNlIG11c3QgYmUgaGFuZGxlZCBzZXBhcmF0ZWx5IHRvIGF2b2lkIHByb2Js
ZW1zIHdpdGggSGFzaE1hcCBhbmQgZW1wdHkga2V5cy4KLSAgICAgICAgaWYgKG1fbGFuZ3VhZ2Uu
aXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX2R1bXBSZWN0KQorICAgICAgICAgICAgbV9saXN0
ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVzdElkLCBtYWtlUmVjdFJlc3VsdChtX3Jl
cXVlc3RSZWN0KSk7CisgICAgICAgIGVsc2UgaWYgKG1fbGFuZ3VhZ2UuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICAvLyBFbXB0eSBsYW5ndWFnZSBjYXNlIG11c3QgYmUgaGFuZGxlZCBzZXBhcmF0
ZWx5IHRvIGF2b2lkIHByb2JsZW1zIHdpdGggSGFzaE1hcCBhbmQgZW1wdHkga2V5cy4KICAgICAg
ICAgICAgIGlmICghbV9yZXN1bHRzRm9yRW1wdHlMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVzdElkLCBtX3Jl
c3VsdHNGb3JFbXB0eUxhbmd1YWdlKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oCmluZGV4IDRl
MTMyNDJhY2I0YjZmOTE2NGRlZWU4NTVkNTYzNjhiZDQ5ZWM1MzYuLjcyZDNjOGU3M2NkNjY2Njli
Njc0NzUxNjdhM2ViNmVjNDNjODIxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaApAQCAtMzEsNiArMzEsNyBAQAogI2lm
bmRlZiBTcGVlY2hJbnB1dENsaWVudE1vY2tfaAogI2RlZmluZSBTcGVlY2hJbnB1dENsaWVudE1v
Y2tfaAogCisjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnQuaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1dFJl
c3VsdC5oIgpAQCAtNTAsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgU3BlZWNoSW5wdXRDbGllbnRN
b2NrKCk7CiAKICAgICB2b2lkIGFkZFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVz
dWx0LCBkb3VibGUgY29uZmlkZW5jZSwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSk7Cisg
ICAgdm9pZCBzZXREdW1wUmVjdChib29sKTsKICAgICB2b2lkIGNsZWFyUmVzdWx0cygpOwogCiAg
ICAgLy8gU3BlZWNoSW5wdXRDbGllbnQgbWV0aG9kcy4KQEAgLTY1LDEwICs2NywxMiBAQCBwcml2
YXRlOgogICAgIFRpbWVyPFNwZWVjaElucHV0Q2xpZW50TW9jaz4gbV90aW1lcjsKICAgICBTcGVl
Y2hJbnB1dExpc3RlbmVyKiBtX2xpc3RlbmVyOwogICAgIGludCBtX3JlcXVlc3RJZDsKKyAgICBJ
bnRSZWN0IG1fcmVxdWVzdFJlY3Q7CiAKICAgICBIYXNoTWFwPFN0cmluZywgU3BlZWNoSW5wdXRS
ZXN1bHRBcnJheT4gbV9yZWNvZ25pdGlvblJlc3VsdHM7CiAgICAgQXRvbWljU3RyaW5nIG1fbGFu
Z3VhZ2U7CiAgICAgU3BlZWNoSW5wdXRSZXN1bHRBcnJheSBtX3Jlc3VsdHNGb3JFbXB0eUxhbmd1
YWdlOworICAgIGJvb2wgbV9kdW1wUmVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2suaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2suaAppbmRleCBkNGU1NDNmMDJjMzE2MTA0YTQ1YjI1OGIyZWUx
YmE4NTRmMzdhZGFhLi4zYTQxNDlhOGJmYmI2MjBhZWU0MWNjNzkzZTk3MTZkN2M5OTBlODg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCkBAIC00NCw4ICs0NCwxMiBAQCBwdWJsaWM6CiAgICAg
ICAgIFdlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKTsKICAgICB2aXJ0dWFsIH5XZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrKCkgeyB9CiAKKyAgICAvLyBBZGQgYSByZXN1bHQgc3Ry
aW5nIHdpdGggc29tZSBjb25maWRlbmNlIGFuZCBsYW5ndWFnZSB0aGF0IHdpbGwgYmUgcmV0dXJu
ZWQgZm9yIHRoZSBuZXh0IHNwZWVjaCBpbnB1dCByZXF1ZXN0LgogICAgIHZpcnR1YWwgdm9pZCBh
ZGRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBj
b25maWRlbmNlLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlKSA9IDA7CiAKKyAgICAvLyBDYXVz
ZSB0aGUgcmVxdWVzdGluZyBlbGVtZW50J3MgcmVjdCB0byBiZSByZXR1cm5lZCB1cG9uIHRoZSBu
ZXh0IHNwZWVjaCBpbnB1dCByZXF1ZXN0LgorICAgIHZpcnR1YWwgdm9pZCBzZXREdW1wUmVjdChi
b29sKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJSZXN1bHRzKCkgPSAwOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCmluZGV4IDRmMWYwNzQ1NzNjMzc0N2ZjMDMzMjhm
ZWRiMWQzNjkyMTI3NmRkNDYuLmU3OWQ5N2U1YWI4NGY2NmIxYTU0ZGNjZjc2YzQzY2Y0M2Y4OTVk
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAKQEAgLTY1LDYgKzY1LDExIEBAIHZv
aWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmFkZE1vY2tSZWNvZ25pdGlvblJl
c3VsdChjb25zdCBXZWJTdHJpbmcmCiAgICAgbV93ZWJjb3JlTW9jay0+YWRkUmVjb2duaXRpb25S
ZXN1bHQocmVzdWx0LCBjb25maWRlbmNlLCBsYW5ndWFnZSk7CiB9CiAKK3ZvaWQgV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldER1bXBSZWN0KGJvb2wgZHVtcFJlY3QpCit7Cisg
ICAgbV93ZWJjb3JlTW9jay0+c2V0RHVtcFJlY3QoZHVtcFJlY3QpOworfQorCiB2b2lkIFdlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpjbGVhclJlc3VsdHMoKQogewogICAgIG1fd2Vi
Y29yZU1vY2stPmNsZWFyUmVzdWx0cygpOwpAQCAtMTE0LDQgKzExOSwzIEBAIFdlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2sqIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s6OmNyZWF0ZShX
ZWJTcGVlY2hJbnB1CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TlBVVF9TUEVFQ0gpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCmluZGV4IDA1YmZkNTJhOGM4
OGUyYzFmMTUxNThmZWQ4YWU2NGYwOTdlZGQ2NDcuLmNjNjdkZDdkMDI1N2U4ODVmNTdlYTM4ZjVk
NThmYWNlOTE5MTJkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaApAQCAtNjUsNiArNjUs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIG1ldGhv
ZHMuCiAgICAgdm9pZCBhZGRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiBy
ZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlKTsKKyAg
ICB2b2lkIHNldER1bXBSZWN0KGJvb2wpOwogICAgIHZvaWQgY2xlYXJSZXN1bHRzKCk7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggOGIyYmMyNzZiZTMxYjQwYWM1YWQxM2JjZmJhZTZmNzc5MjU5NWU2ZC4uNjZiYTc3Njg1Zjdl
N2FhM2Q2YmY4ODkwY2ZjOTljMmM0MjRhNjc5YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAxLTE4ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElucHV0OiBS
ZXBvcnQgc3BlZWNoIGVsZW1lbnQgcmVjdCByZWxhdGl2ZSB0byB3aW5kb3cgcmF0aGVyIHRoYW4g
ZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
NDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIHRoZSBTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIHRvIGFsbG93IGZvciByZXRyaWV2aW5n
IHRoZQorICAgICAgICBzcGVlY2ggZWxlbWVudCdzIHBvc2l0aW9uIHVzZWQgaW4gdGhlIHJlcXVl
c3QuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdENhbGxiYWNrKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVj
dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVt
cFJlY3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJX
aW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1
dER1bXBSZWN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJv
bGxlcld4LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNo
SW5wdXREdW1wUmVjdCk6CisKIDIwMTItMDEtMjAgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEFkZCBTaGFkb3dSb290LmlkbCB3aGljaCBpcyBlbmFibGVkIGJ5
IG5ld2x5IGludHJvZHVjZWQgU0hBRE9XX0RPTSBmbGFnLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDZjMTNkOTMwOTQ2ZDUxOWY2MDU3OTA3
ZjVjNDBkZDYyZmY3NTBjOTcuLmFkZWJkYWQwMzMyNThhYjg5Nzc0MjYzOThhZjZlNDg3YjU0Nzk4
ZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
QEAgLTEzNTYsNiArMTM1NiwxOSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBhZGRNb2NrU3BlZWNoSW5w
dXRSZXN1bHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplYwogICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYg
c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3RDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBib29sIGR1bXBSZWN0ID0gSlNWYWx1
ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pOworCisgICAgTGF5b3V0VGVzdENvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0TW9ja1Nw
ZWVjaElucHV0RHVtcFJlY3RDYWxsYmFjayhkdW1wUmVjdCk7CisKKyAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE5ld1dp
bmRvd3NDb3B5QmFja0ZvcndhcmRMaXN0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewogICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRpb24KQEAgLTI0NTMsNiArMjQ2Niw3
IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlv
bnMoKQogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25FcnJvciIsIHNldE1vY2tHZW9sb2Nh
dGlvbkVycm9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb24iLCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgImFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCIsIGFkZE1vY2tTcGVlY2hJbnB1dFJl
c3VsdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNldE1vY2tTcGVlY2hJbnB1dER1bXBS
ZWN0Iiwgc2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3RDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJzZXROZXdXaW5kb3dzQ29weUJhY2tGb3J3YXJkTGlzdCIsIHNldE5ld1dpbmRvd3NDb3B5
QmFja0ZvcndhcmRMaXN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0UGFnZVZpc2li
aWxpdHkiLCBzZXRQYWdlVmlzaWJpbGl0eUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNl
dFBPU0lYTG9jYWxlIiwgc2V0UE9TSVhMb2NhbGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggOWY0ZGI0OTgzYTM3ZmIw
MThiODI2YzFkOTdhYmU5ZWQ5ZGUyNmY0Ni4uMzIwMjc2MzI0NDYwMjUzNjYxZjUyMjZiNWE5ZjJm
YjgzZDMwMTc2YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCkBAIC0xMDcsNyArMTA3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TW9ja0RldmljZU9y
aWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJv
dmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1h
KTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1Jl
ZiBtZXNzYWdlKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBs
YXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKLSAgICB2b2lkIGFk
ZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBjb25maWRl
bmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSk7CisgICAgdm9pZCBhZGRNb2NrU3BlZWNoSW5wdXRS
ZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBkb3VibGUgY29uZmlkZW5jZSwgSlNTdHJpbmdSZWYg
bGFuZ3VhZ2UsIGJvb2wgZHVtcFJlY3QpOworICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0RHVt
cFJlY3QoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExv
Y2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpOwogICAgIHZvaWQgc2V0UGx1Z2luc0VuYWJsZWQoYm9v
bCBmbGFnKTsKICAgICB2b2lkIHNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgZmxhZyk7CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKaW5kZXggZjY4ZTBkODcyYWQxMmMxNjNhYTg1MDkzOTQ0MTdjN2ZmYzdmMzk2My4u
NTE1OGU0NDIyNTQ3ZDkyZGRlNTY1NDhlYTkyNTUwMzI0NTAxMGM0NyAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApA
QCAtOTAsNiArOTAsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xs
ZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICAvLyBieSBDcHBCb3VuZENsYXNzLCB0aGUgcGFyZW50
IHRvIExheW91dFRlc3RDb250cm9sbGVyKS4KICAgICBiaW5kTWV0aG9kKCJhZGRGaWxlVG9QYXN0
ZWJvYXJkT25EcmFnIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjphZGRGaWxlVG9QYXN0ZWJvYXJk
T25EcmFnKTsKICAgICBiaW5kTWV0aG9kKCJhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQiLCAmTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk7CisgICAgYmluZE1l
dGhvZCgic2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KTsKICAgICBiaW5kTWV0aG9kKCJhZGRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkpOwogICAgIGJpbmRNZXRob2QoImFkZFVzZXJTY3JpcHQiLCAmTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQpOwogICAgIGJpbmRNZXRob2QoImFkZFVz
ZXJTdHlsZVNoZWV0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldCk7
CkBAIC0xOTI5LDYgKzE5MzAsMTYgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9j
a1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW0KICAgICAgICAg
Y29udHJvbGxlci0+YWRkTW9ja1JlY29nbml0aW9uUmVzdWx0KGNwcFZhcmlhbnRUb1dlYlN0cmlu
Zyhhcmd1bWVudHNbMF0pLCBhcmd1bWVudHNbMV0udG9Eb3VibGUoKSwgY3BwVmFyaWFudFRvV2Vi
U3RyaW5nKGFyZ3VtZW50c1syXSkpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgIGlm
IChhcmd1bWVudHMuc2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzQm9vbCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jayogY29udHJv
bGxlciA9IG1fc2hlbGwtPndlYlZpZXdIb3N0KCktPnNwZWVjaElucHV0Q29udHJvbGxlck1vY2so
KSkKKyAgICAgICAgY29udHJvbGxlci0+c2V0RHVtcFJlY3QoYXJndW1lbnRzWzBdLnZhbHVlLmJv
b2xWYWx1ZSk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXJ0U3BlZWNoSW5w
dXQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkK
IHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDYwM2IzYjkyZTQ5YWRiOTFi
YzhhMWRhZGU2ZGVmYzUzMzMzZWFiZGEuLmRhYTA1MTU3MzIyOTRkODEyNDk2OGQxYzQ4NDAxNTg0
MzNjNGM4ODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMzgwLDYgKzM4MCw3IEBAIHB1YmxpYzoKIAogICAgIC8v
IFNwZWVjaCBpbnB1dCByZWxhdGVkIGZ1bmN0aW9ucy4KICAgICB2b2lkIGFkZE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9p
ZCBzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7CiAgICAgdm9pZCBzdGFydFNwZWVjaElucHV0KGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKIAogICAgIHZvaWQgbGF5ZXJUcmVlQXNUZXh0KGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCmluZGV4IDhkZDBh
MzdjYTU0Nzk3ZDdiODI5MWIyMTRmNWZiNThmNmQwYWUzYTcuLjA0OGYyYWQ2YzcyMmYzOTM5Mjk1
OTc5YWU5NWE4NzEwZDUzOTgxZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Vm
bC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcApAQCAtMzgyLDcgKzM4MiwxNCBAQCBpbnQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RzKCkKICAgICByZXR1cm4gLTE7CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiwgZG91YmxlLCBKU1N0cmlu
Z1JlZikKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dChKU1N0cmluZ1JlZiwgZG91YmxlKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNw
ZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChib29s
KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVz
dHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
OTQ4NS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwCmluZGV4IDdjMTMzZmQzMGVkMDE5NDkxYjBkYWYxNWNkYTliNzNjNDY5NTAy
MDAuLmMyZjViNTljNDliOGYwNjk1ODllNmE1OTkxNDZhYjEzMzQwNjExYjYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApA
QCAtNTI2LDYgKzUyNiwxMyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRNb2NrU3Bl
ZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBkb3VibGUgYwogICAgIC8vIFNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCiB9CiAKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KGJvb2wgZmxh
ZykKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRl
c3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mzk0ODUuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c3RhcnRTcGVlY2hJbnB1dChKU0NvbnRleHRSZWYgaW5wdXRFbGVtZW50KQogewogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0K
aW5kZXggNzg0YmM2MTE1MThhNTllZGQ0ZTkwMjQ4YTk1M2I1OGYzZjI4ZmJhZi4uMjg2OWM2OTJh
ZTcwMTgxODUzYzQ1N2FkNzgyODVjMDc2NjlhZGZhMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtNTQ1LDYgKzU0NSwx
MyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQo
SlNTdHJpbmdSZWYgcmVzdWx0LCBkb3VibGUgYwogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KGJvb2wgZmxhZykKK3sKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgorICAgIC8vIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhcnRTcGVl
Y2hJbnB1dChKU0NvbnRleHRSZWYgaW5wdXRFbGVtZW50KQogewogICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IGE2MDUwYzdiMmE2
ODU2Yjc1NTg2ZmIzNmUwYmUxZTkyMjhlZjI1ZmUuLjZiZWU1Zjc5MmYzMjBjODdmY2U2MGMzMGZj
MDcwMWQ1MDJjMjBkMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91
dFRlc3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91
dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC04OTksNiArODk5LDEzIEBAIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBRU3RyaW5nJiByZXN1
bHQsIGRvdWJsCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zOTQ4NS4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVj
aElucHV0RHVtcFJlY3QoYm9vbCBmbGFnKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9y
IHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzdGFydFNwZWVjaElucHV0KGNvbnN0IFFTdHJp
bmcmIGlucHV0RWxlbWVudCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2gg
aW5wdXQgbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
TGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5oCmluZGV4IGI4NDJmZTRkZmY3OTlkODJiMmViYTk2ZTkzOGZhZDgx
YTBiYjY4NmQuLmE1NDNlNDUxOTNiNThjMDg3ZDM3NmQzOWIyM2FhMTVkZTY5YzZkODUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKQEAg
LTIzNCw2ICsyMzQsNyBAQCBwdWJsaWMgc2xvdHM6CiAgICAgYm9vbCBnZW9sb2NhdGlvblBlcm1p
c3Npb24oKSBjb25zdCB7IHJldHVybiBtX2dlb2xvY2F0aW9uUGVybWlzc2lvbjsgfQogCiAgICAg
dm9pZCBhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgUVN0cmluZyYgcmVzdWx0LCBkb3Vi
bGUgY29uZmlkZW5jZSwgY29uc3QgUVN0cmluZyYgbGFuZ3VhZ2UpOworICAgIHZvaWQgc2V0TW9j
a1NwZWVjaElucHV0RHVtcFJlY3QoYm9vbCBmbGFnKTsKICAgICB2b2lkIHN0YXJ0U3BlZWNoSW5w
dXQoY29uc3QgUVN0cmluZyYgaW5wdXRFbGVtZW50KTsKIAogICAgIC8vIEVtcHR5IHN0dWIgbWV0
aG9kIHRvIGtlZXAgcGFyaXR5IHdpdGggb2JqZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFsIExh
eW91dFRlc3RDb250cm9sbGVyLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggMzhjOTg3NzYwYWRjNWE4MGM3OGU2NWFj
MmQyNTA0MzczNjQ4YTdkMS4uMDI2M2UwMzEzOTQzZDlkZjExYzc1ODQ0ODFmODkzYjA4OTA2MzM0
MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9s
bGVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRy
b2xsZXJXaW4uY3BwCkBAIC00NTAsNiArNDUwLDEzIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBj
CiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4
NS4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVt
cFJlY3QoYm9vbCBmbGFnKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBp
bnB1dCBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTQ4NS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzdGFydFNwZWVjaElucHV0KEpTQ29udGV4dFJlZiBpbnB1dEVs
ZW1lbnQpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91
dCB0ZXN0cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RD
b250cm9sbGVyV3guY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRy
b2xsZXJXeC5jcHAKaW5kZXggY2ZkMWY2ZGQ2YmFlNWM5NDMyMGRmNDY5YTAxOTRlZDU2NDViMTFi
Mi4uZTllZDNlZWQ5NTQyMDIxYmY3MWEzOTA3OTgzNjhlYTM2YmFmM2NkZSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKQEAgLTM3
Niw2ICszNzYsMTMgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9ja1NwZWVjaElu
cHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgZG91YmxlIGMKICAgICAvLyBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgogfQogCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChib29sIGZsYWcpCit7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4K
KyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1
LgorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnN0YXJ0U3BlZWNoSW5wdXQoSlNDb250ZXh0UmVmIGlucHV0RWxlbWVudCkKIHsKICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDUx
YzQyMjExOWFjNGRiZmMwZWU0NmNmMzk3ODEyYTIzMjNlY2IwMjYuLjQ5NmFkOTU2YzY5NmM5MTdh
MDQwNDgwY2I4N2UwMWFlNTZmODI4NTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMS0x
OCAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNwZWVjaCBJ
bnB1dDogUmVwb3J0IHNwZWVjaCBlbGVtZW50IHJlY3QgcmVsYXRpdmUgdG8gd2luZG93IHJhdGhl
ciB0aGFuIGZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NjQ0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBsYXlvdXQgdGVzdCB0byBjaGVjayB0aGF0IHRoZSBlbGVtZW50IHBvc2l0aW9uIHVz
ZWQgd2hlbgorICAgICAgICByZXF1ZXN0aW5nIHNwZWVjaCBpbnB1dCBpcyByZWxhdGl2ZSB0byB0
aGUgd2luZG93LCBub3QgdGhlIGZyYW1lLgorCisgICAgICAgICogZmFzdC9zcGVlY2gvYnViYmxl
LXBvc2l0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zcGVlY2gvYnVi
YmxlLXBvc2l0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAxLTIwICBIYXlhdG8gSXRvICA8aGF5
YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgU2hhZG93Um9vdC5pZGwgd2hpY2ggaXMg
ZW5hYmxlZCBieSBuZXdseSBpbnRyb2R1Y2VkIFNIQURPV19ET00gZmxhZy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2J1YmJsZS1wb3NpdGlvbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9idWJibGUtcG9zaXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZmZDZjNjJjMzk0NDI2NTJjMzMyZjgxZGIyN2NhMTA5YjIwNTAzNWUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9idWJibGUtcG9zaXRpb24tZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIGZvciBzcGVlY2ggYnV0dG9uIGNsaWNrIHdp
dGggPGlucHV0IHR5cGU9InRleHQiIHNwZWVjaD4uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitDbGlja2luZyB0aGUgc3BlZWNoIGJ1dHRvbi4KK29uU3BlZWNoQ2hhbmdlKCkKK1BB
U1MgaW5wdXQudmFsdWUgaXMgIjE1NywgMTExIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3Bl
ZWNoL2J1YmJsZS1wb3NpdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvYnViYmxl
LXBvc2l0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjcxNjc4OWYyYTI5NmI3NTgyZTJhN2E3NTM5ZWM2
ZGVhNTljMWRjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2J1
YmJsZS1wb3NpdGlvbi5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oJ1Rlc3RzIGZv
ciBzcGVlY2ggYnV0dG9uIGNsaWNrIHdpdGggJmx0O2lucHV0IHR5cGU9InRleHQiIHNwZWVjaD4u
Jyk7CisKK2Z1bmN0aW9uIG9uU3BlZWNoQ2hhbmdlKCkgeworICAgIGRlYnVnKCJvblNwZWVjaENo
YW5nZSgpIik7CisKKyAgICAvLyBTaW5jZSB3ZSByZXF1ZXN0ZWQgZHVtcFJlY3QsIHRoZSByZWN0
IGNvbWVzIGJhY2sgYXMgdGhlIHNwZWVjaCByZXN1bHQuCisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJpbnB1dC52YWx1ZSIsIGV4cGVjdGVkWCArICIsICIgKyBleHBlY3RlZFkpOworICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBydW4oKSB7CisgICAgd2luZG93LmlmcmFtZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZnJhbWUnKTsKKyAgICB3aW5kb3cuaW5wdXQgPSBp
ZnJhbWUuY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgaW5wdXQu
c2V0QXR0cmlidXRlKCd4LXdlYmtpdC1zcGVlY2gnKTsKKyAgICBpbnB1dC5vbndlYmtpdHNwZWVj
aGNoYW5nZSA9IG9uU3BlZWNoQ2hhbmdlOworICAgIGlmcmFtZS5jb250ZW50RG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXS5hcHBlbmRDaGlsZChpbnB1dCk7CisKKyAgICBl
eHBlY3RlZFggPSBpZnJhbWUub2Zmc2V0TGVmdCArIGlucHV0Lm9mZnNldExlZnQgKyBpbnB1dC5v
ZmZzZXRXaWR0aCAtIDE2OworICAgIGV4cGVjdGVkWSA9IGlmcmFtZS5vZmZzZXRUb3AgKyBpbnB1
dC5vZmZzZXRUb3AgKyBpbnB1dC5vZmZzZXRIZWlnaHQgLSAxOworCisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QodHJ1ZSk7CisKKyAg
ICAgICAgZGVidWcoJ0NsaWNraW5nIHRoZSBzcGVlY2ggYnV0dG9uLicpOworICAgICAgICB2YXIg
eCA9IGlucHV0Lm9mZnNldExlZnQgKyBpbnB1dC5vZmZzZXRXaWR0aCAtIDQ7CisgICAgICAgIHZh
ciB5ID0gaW5wdXQub2Zmc2V0VG9wICsgaW5wdXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAgICAg
eCArPSBpZnJhbWUub2Zmc2V0TGVmdDsKKyAgICAgICAgeSArPSBpZnJhbWUub2Zmc2V0VG9wOwor
CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgICAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIH0K
K30KKword2luZG93Lm9ubG9hZCA9IHJ1bjsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPGlmcmFtZSBpZD0iaWZyYW1lIj4KKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123313</attachid>
            <date>2012-01-20 07:41:27 -0800</date>
            <delta_ts>2012-01-20 09:42:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76443-20120120154125.patch</filename>
            <type>text/plain</type>
            <size>26785</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRlNTYwYzY3YzU2MWY2
NmM0MmE4MmFkNDNhNGZjMzIzNGI0ZWU1MS4uNGRlNWU4NGNhNmM2ZmJmMGJkYjVhM2FiYjU0ZTFm
MzQwZWQwOTZjNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAxLTE4ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElucHV0OiBS
ZXBvcnQgc3BlZWNoIGVsZW1lbnQgcmVjdCByZWxhdGl2ZSB0byB3aW5kb3cgcmF0aGVyIHRoYW4g
ZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
NDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biByZXF1ZXN0aW5nIHNwZWVjaCBpbnB1dCwgcmVwb3J0IHRoZSBzcGVlY2ggZWxlbWVudCByZWN0
IHJlbGF0aXZlCisgICAgICAgIHRvIHRoZSB3aW5kb3cgcmF0aGVyIHRoYW4gdGhlIGZyYW1lLiBU
aGUgZW1iZWRkZXIgd2lsbCB0eXBpY2FsbHkgdXNlCisgICAgICAgIHRoaXMgcG9zaXRpb24gdG8g
c2hvdyBhIGJ1YmJsZSBpbmRpY2F0aW5nIHRoYXQgc3BlZWNoIHJlY29nbml0aW9uIGlzCisgICAg
ICAgIGluIHByb2dyZXNzLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNoL2J1YmJsZS1wb3Np
dGlvbi5odG1sCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6
OnN0YXJ0U3BlZWNoSW5wdXQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRD
bGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6
c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjptYWtlUmVjdFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldER1bXBSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6Y2xlYXJSZXN1bHRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaDoKKwogMjAxMi0wMS0y
MCAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIFNoYWRv
d1Jvb3QuaWRsIHdoaWNoIGlzIGVuYWJsZWQgYnkgbmV3bHkgaW50cm9kdWNlZCBTSEFET1dfRE9N
IGZsYWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDNhNDM4N2Y5NWRhNjhjMjM2ZDUy
Njg2M2Y1NGEyNTdiZDdhZDc5NDUuLmZmOTBlOWNiMTc2YzYwYmVmMTgyMjE2MjJjNzMyMGYyNGFh
NWFlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTIt
MDEtMTggIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGVl
Y2ggSW5wdXQ6IFJlcG9ydCBzcGVlY2ggZWxlbWVudCByZWN0IHJlbGF0aXZlIHRvIHdpbmRvdyBy
YXRoZXIgdGhhbiBmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzY0NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgdGhlIFNwZWVjaElucHV0Q29udHJvbGxlck1vY2sgdG8gYWxsb3cgZm9y
IHJldHJpZXZpbmcgdGhlCisgICAgICAgIHNwZWVjaCBlbGVtZW50J3MgcG9zaXRpb24gdXNlZCBp
biB0aGUgcmVxdWVzdC4KKworICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrLmg6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6
OnNldER1bXBSZWN0KToKKyAgICAgICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGwuaDoKKwogMjAxMi0wMS0yMCAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgQWRkIFNoYWRvd1Jvb3QuaWRsIHdoaWNoIGlzIGVuYWJsZWQgYnkgbmV3bHkg
aW50cm9kdWNlZCBTSEFET1dfRE9NIGZsYWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCA2YWI5ZDFmNjZj
YjRmZmIwMDc3NzdhNTk1OTg5YmFkZThhZWE4OGRiLi44MDhmZmEzMWVmNzMzNzkwZjJiN2FkYmJm
ZDVhMDQxOTI2ZDY1MDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5j
bHVkZSAiU3BlZWNoSW5wdXQuaCIKQEAgLTU0OSw3ICs1NTAsNyBAQCB2b2lkIElucHV0RmllbGRT
cGVlY2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVjaElucHV0KCkKICAgICBBdG9taWNTdHJpbmcg
bGFuZ3VhZ2UgPSBpbnB1dC0+Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCk7CiAgICAgU3RyaW5n
IGdyYW1tYXIgPSBpbnB1dC0+Z2V0QXR0cmlidXRlKHdlYmtpdGdyYW1tYXJBdHRyKTsKICAgICAv
LyBGSVhNRTogdGhpcyBzaG91bGQgcHJvYmFibHkgcmVzcGVjdCB0cmFuc2Zvcm1zCi0gICAgSW50
UmVjdCByZWN0ID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1Ry
YW5zZm9ybXMoKTsKKyAgICBJbnRSZWN0IHJlY3QgPSByZW5kZXJlcigpLT52aWV3KCktPmZyYW1l
VmlldygpLT5jb250ZW50c1RvV2luZG93KHJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hS
ZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkpOwogICAgIGlmIChzcGVlY2hJbnB1dCgpLT5zdGFydFJl
Y29nbml0aW9uKG1fbGlzdGVuZXJJZCwgcmVjdCwgbGFuZ3VhZ2UsIGdyYW1tYXIsIGRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICBzZXRTdGF0ZShSZWNvcmRpbmcpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVu
dE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVu
dE1vY2suY3BwCmluZGV4IDlhYTMxMTNkYzAwNjNiZWEyNmQ0YjE1OGQ3NDA0OTEwMWI5M2JhOGIu
LjU0NjFmMmY4NmRmYTc0MDgwMmQ2OWIzODM1ZDhlYzliYTJhZjE2M2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKIAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Myw2ICs0NCw3IEBAIFNwZWVjaElucHV0Q2xpZW50TW9j
azo6U3BlZWNoSW5wdXRDbGllbnRNb2NrKCkKICAgICAsIG1fdGltZXIodGhpcywgJlNwZWVjaElu
cHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZCkKICAgICAsIG1fbGlzdGVuZXIoMCkKICAgICAsIG1f
cmVxdWVzdElkKDApCisgICAgLCBtX2R1bXBSZWN0KGZhbHNlKQogewogfQogCkBAIC01Niw2ICs1
OCw3IEBAIGJvb2wgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9uKGludCBy
ZXF1ZXN0SWQsIGNvbnN0IEludFJlY3QmIGVsZW1lCiAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fcmVxdWVzdElkID0gcmVxdWVzdElkOwor
ICAgIG1fcmVxdWVzdFJlY3QgPSBlbGVtZW50UmVjdDsKICAgICBtX3JlY29yZGluZyA9IHRydWU7
CiAgICAgbV9sYW5ndWFnZSA9IGxhbmd1YWdlOwogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDAp
OwpAQCAtODIsNiArODUsMTUgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OmNhbmNlbFJl
Y29nbml0aW9uKGludCByZXF1ZXN0SWQpCiAgICAgfQogfQogCitzdGF0aWMgU3BlZWNoSW5wdXRS
ZXN1bHRBcnJheSBtYWtlUmVjdFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIFZl
Y3RvcjxSZWZQdHI8U3BlZWNoSW5wdXRSZXN1bHQ+ID4gcmVzdWx0czsKKyAgICBUZXh0U3RyZWFt
IHRzOworICAgIHRzIDw8IHJlY3QueCgpIDw8ICIsICIgPDwgcmVjdC55KCk7CisgICAgcmVzdWx0
cy5hcHBlbmQoU3BlZWNoSW5wdXRSZXN1bHQ6OmNyZWF0ZSh0cy5yZWxlYXNlKCksIDEuMCkpOwor
ICAgIHJldHVybiByZXN1bHRzOworfQorCiB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6YWRk
UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNl
LCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlKQogewogICAgIGlmIChsYW5ndWFnZS5pc0Vt
cHR5KCkpCkBAIC05MywxMCArMTA1LDE2IEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjph
ZGRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCwgZG91YmxlIGNvCiAgICAg
fQogfQogCit2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0RHVtcFJlY3QoYm9vbCBkdW1w
UmVjdCkKK3sKKyAgICBtX2R1bXBSZWN0ID0gZHVtcFJlY3Q7Cit9CisKIHZvaWQgU3BlZWNoSW5w
dXRDbGllbnRNb2NrOjpjbGVhclJlc3VsdHMoKQogewogICAgIG1fcmVzdWx0c0ZvckVtcHR5TGFu
Z3VhZ2UuY2xlYXIoKTsKICAgICBtX3JlY29nbml0aW9uUmVzdWx0cy5jbGVhcigpOworICAgIG1f
ZHVtcFJlY3QgPSBmYWxzZTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRpbWVy
RmlyZWQoV2ViQ29yZTo6VGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiopCkBAIC0xMTMsOCAr
MTMxLDEwIEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6
OlRpbWVyPFNwZWVjaElucHV0Q2xpZW50TW9jaz4qKQogICAgICAgICBpbnQgcmVxdWVzdElkID0g
bV9yZXF1ZXN0SWQ7CiAgICAgICAgIG1fcmVxdWVzdElkID0gMDsKIAotICAgICAgICAvLyBFbXB0
eSBsYW5ndWFnZSBjYXNlIG11c3QgYmUgaGFuZGxlZCBzZXBhcmF0ZWx5IHRvIGF2b2lkIHByb2Js
ZW1zIHdpdGggSGFzaE1hcCBhbmQgZW1wdHkga2V5cy4KLSAgICAgICAgaWYgKG1fbGFuZ3VhZ2Uu
aXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX2R1bXBSZWN0KQorICAgICAgICAgICAgbV9saXN0
ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVzdElkLCBtYWtlUmVjdFJlc3VsdChtX3Jl
cXVlc3RSZWN0KSk7CisgICAgICAgIGVsc2UgaWYgKG1fbGFuZ3VhZ2UuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICAvLyBFbXB0eSBsYW5ndWFnZSBjYXNlIG11c3QgYmUgaGFuZGxlZCBzZXBhcmF0
ZWx5IHRvIGF2b2lkIHByb2JsZW1zIHdpdGggSGFzaE1hcCBhbmQgZW1wdHkga2V5cy4KICAgICAg
ICAgICAgIGlmICghbV9yZXN1bHRzRm9yRW1wdHlMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVzdElkLCBtX3Jl
c3VsdHNGb3JFbXB0eUxhbmd1YWdlKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oCmluZGV4IDRl
MTMyNDJhY2I0YjZmOTE2NGRlZWU4NTVkNTYzNjhiZDQ5ZWM1MzYuLjcyZDNjOGU3M2NkNjY2Njli
Njc0NzUxNjdhM2ViNmVjNDNjODIxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaApAQCAtMzEsNiArMzEsNyBAQAogI2lm
bmRlZiBTcGVlY2hJbnB1dENsaWVudE1vY2tfaAogI2RlZmluZSBTcGVlY2hJbnB1dENsaWVudE1v
Y2tfaAogCisjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnQuaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1dFJl
c3VsdC5oIgpAQCAtNTAsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgU3BlZWNoSW5wdXRDbGllbnRN
b2NrKCk7CiAKICAgICB2b2lkIGFkZFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVz
dWx0LCBkb3VibGUgY29uZmlkZW5jZSwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSk7Cisg
ICAgdm9pZCBzZXREdW1wUmVjdChib29sKTsKICAgICB2b2lkIGNsZWFyUmVzdWx0cygpOwogCiAg
ICAgLy8gU3BlZWNoSW5wdXRDbGllbnQgbWV0aG9kcy4KQEAgLTY1LDEwICs2NywxMiBAQCBwcml2
YXRlOgogICAgIFRpbWVyPFNwZWVjaElucHV0Q2xpZW50TW9jaz4gbV90aW1lcjsKICAgICBTcGVl
Y2hJbnB1dExpc3RlbmVyKiBtX2xpc3RlbmVyOwogICAgIGludCBtX3JlcXVlc3RJZDsKKyAgICBJ
bnRSZWN0IG1fcmVxdWVzdFJlY3Q7CiAKICAgICBIYXNoTWFwPFN0cmluZywgU3BlZWNoSW5wdXRS
ZXN1bHRBcnJheT4gbV9yZWNvZ25pdGlvblJlc3VsdHM7CiAgICAgQXRvbWljU3RyaW5nIG1fbGFu
Z3VhZ2U7CiAgICAgU3BlZWNoSW5wdXRSZXN1bHRBcnJheSBtX3Jlc3VsdHNGb3JFbXB0eUxhbmd1
YWdlOworICAgIGJvb2wgbV9kdW1wUmVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2suaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2suaAppbmRleCBkNGU1NDNmMDJjMzE2MTA0YTQ1YjI1OGIyZWUx
YmE4NTRmMzdhZGFhLi4zYTQxNDlhOGJmYmI2MjBhZWU0MWNjNzkzZTk3MTZkN2M5OTBlODg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCkBAIC00NCw4ICs0NCwxMiBAQCBwdWJsaWM6CiAgICAg
ICAgIFdlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKTsKICAgICB2aXJ0dWFsIH5XZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrKCkgeyB9CiAKKyAgICAvLyBBZGQgYSByZXN1bHQgc3Ry
aW5nIHdpdGggc29tZSBjb25maWRlbmNlIGFuZCBsYW5ndWFnZSB0aGF0IHdpbGwgYmUgcmV0dXJu
ZWQgZm9yIHRoZSBuZXh0IHNwZWVjaCBpbnB1dCByZXF1ZXN0LgogICAgIHZpcnR1YWwgdm9pZCBh
ZGRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBj
b25maWRlbmNlLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlKSA9IDA7CiAKKyAgICAvLyBDYXVz
ZSB0aGUgcmVxdWVzdGluZyBlbGVtZW50J3MgcmVjdCB0byBiZSByZXR1cm5lZCB1cG9uIHRoZSBu
ZXh0IHNwZWVjaCBpbnB1dCByZXF1ZXN0LgorICAgIHZpcnR1YWwgdm9pZCBzZXREdW1wUmVjdChi
b29sKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJSZXN1bHRzKCkgPSAwOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCmluZGV4IDRmMWYwNzQ1NzNjMzc0N2ZjMDMzMjhm
ZWRiMWQzNjkyMTI3NmRkNDYuLmU3OWQ5N2U1YWI4NGY2NmIxYTU0ZGNjZjc2YzQzY2Y0M2Y4OTVk
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAKQEAgLTY1LDYgKzY1LDExIEBAIHZv
aWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmFkZE1vY2tSZWNvZ25pdGlvblJl
c3VsdChjb25zdCBXZWJTdHJpbmcmCiAgICAgbV93ZWJjb3JlTW9jay0+YWRkUmVjb2duaXRpb25S
ZXN1bHQocmVzdWx0LCBjb25maWRlbmNlLCBsYW5ndWFnZSk7CiB9CiAKK3ZvaWQgV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldER1bXBSZWN0KGJvb2wgZHVtcFJlY3QpCit7Cisg
ICAgbV93ZWJjb3JlTW9jay0+c2V0RHVtcFJlY3QoZHVtcFJlY3QpOworfQorCiB2b2lkIFdlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpjbGVhclJlc3VsdHMoKQogewogICAgIG1fd2Vi
Y29yZU1vY2stPmNsZWFyUmVzdWx0cygpOwpAQCAtMTE0LDQgKzExOSwzIEBAIFdlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2sqIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s6OmNyZWF0ZShX
ZWJTcGVlY2hJbnB1CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TlBVVF9TUEVFQ0gpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCmluZGV4IDA1YmZkNTJhOGM4
OGUyYzFmMTUxNThmZWQ4YWU2NGYwOTdlZGQ2NDcuLmNjNjdkZDdkMDI1N2U4ODVmNTdlYTM4ZjVk
NThmYWNlOTE5MTJkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaApAQCAtNjUsNiArNjUs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIG1ldGhv
ZHMuCiAgICAgdm9pZCBhZGRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiBy
ZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlKTsKKyAg
ICB2b2lkIHNldER1bXBSZWN0KGJvb2wpOwogICAgIHZvaWQgY2xlYXJSZXN1bHRzKCk7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggOGIyYmMyNzZiZTMxYjQwYWM1YWQxM2JjZmJhZTZmNzc5MjU5NWU2ZC4uNjZiYTc3Njg1Zjdl
N2FhM2Q2YmY4ODkwY2ZjOTljMmM0MjRhNjc5YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAxLTE4ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElucHV0OiBS
ZXBvcnQgc3BlZWNoIGVsZW1lbnQgcmVjdCByZWxhdGl2ZSB0byB3aW5kb3cgcmF0aGVyIHRoYW4g
ZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
NDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIHRoZSBTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIHRvIGFsbG93IGZvciByZXRyaWV2aW5n
IHRoZQorICAgICAgICBzcGVlY2ggZWxlbWVudCdzIHBvc2l0aW9uIHVzZWQgaW4gdGhlIHJlcXVl
c3QuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdENhbGxiYWNrKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVj
dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVt
cFJlY3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJX
aW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1
dER1bXBSZWN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJv
bGxlcld4LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNo
SW5wdXREdW1wUmVjdCk6CisKIDIwMTItMDEtMjAgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEFkZCBTaGFkb3dSb290LmlkbCB3aGljaCBpcyBlbmFibGVkIGJ5
IG5ld2x5IGludHJvZHVjZWQgU0hBRE9XX0RPTSBmbGFnLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDZjMTNkOTMwOTQ2ZDUxOWY2MDU3OTA3
ZjVjNDBkZDYyZmY3NTBjOTcuLmFkZWJkYWQwMzMyNThhYjg5Nzc0MjYzOThhZjZlNDg3YjU0Nzk4
ZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
QEAgLTEzNTYsNiArMTM1NiwxOSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBhZGRNb2NrU3BlZWNoSW5w
dXRSZXN1bHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplYwogICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYg
c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3RDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBib29sIGR1bXBSZWN0ID0gSlNWYWx1
ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pOworCisgICAgTGF5b3V0VGVzdENvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0TW9ja1Nw
ZWVjaElucHV0RHVtcFJlY3RDYWxsYmFjayhkdW1wUmVjdCk7CisKKyAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE5ld1dp
bmRvd3NDb3B5QmFja0ZvcndhcmRMaXN0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewogICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRpb24KQEAgLTI0NTMsNiArMjQ2Niw3
IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlv
bnMoKQogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25FcnJvciIsIHNldE1vY2tHZW9sb2Nh
dGlvbkVycm9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb24iLCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgImFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCIsIGFkZE1vY2tTcGVlY2hJbnB1dFJl
c3VsdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNldE1vY2tTcGVlY2hJbnB1dER1bXBS
ZWN0Iiwgc2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3RDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJzZXROZXdXaW5kb3dzQ29weUJhY2tGb3J3YXJkTGlzdCIsIHNldE5ld1dpbmRvd3NDb3B5
QmFja0ZvcndhcmRMaXN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0UGFnZVZpc2li
aWxpdHkiLCBzZXRQYWdlVmlzaWJpbGl0eUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNl
dFBPU0lYTG9jYWxlIiwgc2V0UE9TSVhMb2NhbGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggOWY0ZGI0OTgzYTM3ZmIw
MThiODI2YzFkOTdhYmU5ZWQ5ZGUyNmY0Ni4uMzIwMjc2MzI0NDYwMjUzNjYxZjUyMjZiNWE5ZjJm
YjgzZDMwMTc2YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCkBAIC0xMDcsNyArMTA3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TW9ja0RldmljZU9y
aWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJv
dmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1h
KTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1Jl
ZiBtZXNzYWdlKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBs
YXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKLSAgICB2b2lkIGFk
ZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBjb25maWRl
bmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSk7CisgICAgdm9pZCBhZGRNb2NrU3BlZWNoSW5wdXRS
ZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBkb3VibGUgY29uZmlkZW5jZSwgSlNTdHJpbmdSZWYg
bGFuZ3VhZ2UsIGJvb2wgZHVtcFJlY3QpOworICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0RHVt
cFJlY3QoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExv
Y2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpOwogICAgIHZvaWQgc2V0UGx1Z2luc0VuYWJsZWQoYm9v
bCBmbGFnKTsKICAgICB2b2lkIHNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgZmxhZyk7CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKaW5kZXggZjY4ZTBkODcyYWQxMmMxNjNhYTg1MDkzOTQ0MTdjN2ZmYzdmMzk2My4u
NTE1OGU0NDIyNTQ3ZDkyZGRlNTY1NDhlYTkyNTUwMzI0NTAxMGM0NyAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApA
QCAtOTAsNiArOTAsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xs
ZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICAvLyBieSBDcHBCb3VuZENsYXNzLCB0aGUgcGFyZW50
IHRvIExheW91dFRlc3RDb250cm9sbGVyKS4KICAgICBiaW5kTWV0aG9kKCJhZGRGaWxlVG9QYXN0
ZWJvYXJkT25EcmFnIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjphZGRGaWxlVG9QYXN0ZWJvYXJk
T25EcmFnKTsKICAgICBiaW5kTWV0aG9kKCJhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQiLCAmTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk7CisgICAgYmluZE1l
dGhvZCgic2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KTsKICAgICBiaW5kTWV0aG9kKCJhZGRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkpOwogICAgIGJpbmRNZXRob2QoImFkZFVzZXJTY3JpcHQiLCAmTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQpOwogICAgIGJpbmRNZXRob2QoImFkZFVz
ZXJTdHlsZVNoZWV0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldCk7
CkBAIC0xOTI5LDYgKzE5MzAsMTYgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9j
a1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW0KICAgICAgICAg
Y29udHJvbGxlci0+YWRkTW9ja1JlY29nbml0aW9uUmVzdWx0KGNwcFZhcmlhbnRUb1dlYlN0cmlu
Zyhhcmd1bWVudHNbMF0pLCBhcmd1bWVudHNbMV0udG9Eb3VibGUoKSwgY3BwVmFyaWFudFRvV2Vi
U3RyaW5nKGFyZ3VtZW50c1syXSkpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgIGlm
IChhcmd1bWVudHMuc2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzQm9vbCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jayogY29udHJv
bGxlciA9IG1fc2hlbGwtPndlYlZpZXdIb3N0KCktPnNwZWVjaElucHV0Q29udHJvbGxlck1vY2so
KSkKKyAgICAgICAgY29udHJvbGxlci0+c2V0RHVtcFJlY3QoYXJndW1lbnRzWzBdLnZhbHVlLmJv
b2xWYWx1ZSk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXJ0U3BlZWNoSW5w
dXQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkK
IHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDYwM2IzYjkyZTQ5YWRiOTFi
YzhhMWRhZGU2ZGVmYzUzMzMzZWFiZGEuLmRhYTA1MTU3MzIyOTRkODEyNDk2OGQxYzQ4NDAxNTg0
MzNjNGM4ODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMzgwLDYgKzM4MCw3IEBAIHB1YmxpYzoKIAogICAgIC8v
IFNwZWVjaCBpbnB1dCByZWxhdGVkIGZ1bmN0aW9ucy4KICAgICB2b2lkIGFkZE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9p
ZCBzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7CiAgICAgdm9pZCBzdGFydFNwZWVjaElucHV0KGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKIAogICAgIHZvaWQgbGF5ZXJUcmVlQXNUZXh0KGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCmluZGV4IDhkZDBh
MzdjYTU0Nzk3ZDdiODI5MWIyMTRmNWZiNThmNmQwYWUzYTcuLjA0OGYyYWQ2YzcyMmYzOTM5Mjk1
OTc5YWU5NWE4NzEwZDUzOTgxZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Vm
bC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcApAQCAtMzgyLDcgKzM4MiwxNCBAQCBpbnQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RzKCkKICAgICByZXR1cm4gLTE7CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiwgZG91YmxlLCBKU1N0cmlu
Z1JlZikKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dChKU1N0cmluZ1JlZiwgZG91YmxlKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNw
ZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChib29s
KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVz
dHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
OTQ4NS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwCmluZGV4IDdjMTMzZmQzMGVkMDE5NDkxYjBkYWYxNWNkYTliNzNjNDY5NTAy
MDAuLmUyYmZjYTQ1NTdjZTM5NGI4NjgwOWJkYzk2M2MyZDdmNGE2MTNlOTcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApA
QCAtNTI2LDYgKzUyNiwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRNb2NrU3Bl
ZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBkb3VibGUgYwogICAgIC8vIFNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCiB9CiAKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KGJvb2wgZmxh
ZykKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRl
c3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mzk0ODUuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXJ0U3BlZWNoSW5wdXQo
SlNDb250ZXh0UmVmIGlucHV0RWxlbWVudCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZv
ciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDc4NGJjNjExNTE4YTU5ZWRk
NGU5MDI0OGE5NTNiNThmM2YyOGZiYWYuLjRiYzQ4ZDI2NDljY2M2NDMwZDc2YTI2OGIzM2JjYzQ4
YzgzMDY5OTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0
Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0KQEAgLTU0NSw2ICs1NDUsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgZG91
YmxlIGMKICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM5NDg1LgogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5w
dXREdW1wUmVjdChib29sIGZsYWcpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3Bl
ZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzdGFydFNwZWVjaElucHV0KEpTQ29udGV4dFJlZiBpbnB1dEVsZW1lbnQpCiB7CiAgICAgLy8g
RklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKaW5kZXgg
YTYwNTBjN2IyYTY4NTZiNzU1ODZmYjM2ZTBiZTFlOTIyOGVmMjVmZS4uNzIyYmY3NzBmZDM3MjBk
YmIxYTFkNTkxNjcwOWM2OGI3ZmVhNGNjZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKQEAgLTg5OSw2ICs4OTksMTIgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IFFT
dHJpbmcmIHJlc3VsdCwgZG91YmwKICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM5NDg1LgogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChib29sIGZsYWcpCit7CisgICAgLy8gRklYTUU6IElt
cGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgorfQorCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzdGFydFNwZWVjaElucHV0KGNvbnN0IFFTdHJpbmcmIGlucHV0RWxl
bWVudCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0
IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENv
bnRyb2xsZXJRdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xs
ZXJRdC5oCmluZGV4IGI4NDJmZTRkZmY3OTlkODJiMmViYTk2ZTkzOGZhZDgxYTBiYjY4NmQuLmE1
NDNlNDUxOTNiNThjMDg3ZDM3NmQzOWIyM2FhMTVkZTY5YzZkODUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKQEAgLTIzNCw2ICsyMzQs
NyBAQCBwdWJsaWMgc2xvdHM6CiAgICAgYm9vbCBnZW9sb2NhdGlvblBlcm1pc3Npb24oKSBjb25z
dCB7IHJldHVybiBtX2dlb2xvY2F0aW9uUGVybWlzc2lvbjsgfQogCiAgICAgdm9pZCBhZGRNb2Nr
U3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgUVN0cmluZyYgcmVzdWx0LCBkb3VibGUgY29uZmlkZW5j
ZSwgY29uc3QgUVN0cmluZyYgbGFuZ3VhZ2UpOworICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0
RHVtcFJlY3QoYm9vbCBmbGFnKTsKICAgICB2b2lkIHN0YXJ0U3BlZWNoSW5wdXQoY29uc3QgUVN0
cmluZyYgaW5wdXRFbGVtZW50KTsKIAogICAgIC8vIEVtcHR5IHN0dWIgbWV0aG9kIHRvIGtlZXAg
cGFyaXR5IHdpdGggb2JqZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFsIExheW91dFRlc3RDb250
cm9sbGVyLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29u
dHJvbGxlcldpbi5jcHAKaW5kZXggMzhjOTg3NzYwYWRjNWE4MGM3OGU2NWFjMmQyNTA0MzczNjQ4
YTdkMS4uYzY5YzQ3NDlkNGJlZmI3MDJmMmVhOGMzNjk0ZWJlZTdmNTE3Y2U4MCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3Bw
CkBAIC00NTAsNiArNDUwLDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tT
cGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBjCiAgICAgLy8gU2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KIH0KIAordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QoYm9vbCBm
bGFnKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQg
dGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zOTQ4NS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhcnRTcGVlY2hJbnB1
dChKU0NvbnRleHRSZWYgaW5wdXRFbGVtZW50KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
Zm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCmluZGV4IGNmZDFmNmRkNmJhZTVjOTQz
MjBkZjQ2OWEwMTk0ZWQ1NjQ1YjExYjIuLmIyZjdmYjQ3OWY2ZGYyODFmMWIwZDMzN2E3YWEwM2Ez
ODhlZTA5ODMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RD
b250cm9sbGVyV3guY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RD
b250cm9sbGVyV3guY3BwCkBAIC0zNzYsNiArMzc2LDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJs
ZSBjCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
OTQ4NS4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0
RHVtcFJlY3QoYm9vbCBmbGFnKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVj
aCBpbnB1dCBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c3RhcnRTcGVlY2hJbnB1dChKU0NvbnRleHRSZWYgaW5wdXRFbGVtZW50KQogewogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTFj
NDIyMTE5YWM0ZGJmYzBlZTQ2Y2YzOTc4MTJhMjMyM2VjYjAyNi4uNDk2YWQ5NTZjNjk2YzkxN2Ew
NDA0ODBjYjg3ZTAxYWU1NmY4Mjg1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAxLTE4
ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElu
cHV0OiBSZXBvcnQgc3BlZWNoIGVsZW1lbnQgcmVjdCByZWxhdGl2ZSB0byB3aW5kb3cgcmF0aGVy
IHRoYW4gZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc2NDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGxheW91dCB0ZXN0IHRvIGNoZWNrIHRoYXQgdGhlIGVsZW1lbnQgcG9zaXRpb24gdXNl
ZCB3aGVuCisgICAgICAgIHJlcXVlc3Rpbmcgc3BlZWNoIGlucHV0IGlzIHJlbGF0aXZlIHRvIHRo
ZSB3aW5kb3csIG5vdCB0aGUgZnJhbWUuCisKKyAgICAgICAgKiBmYXN0L3NwZWVjaC9idWJibGUt
cG9zaXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9idWJi
bGUtcG9zaXRpb24uaHRtbDogQWRkZWQuCisKIDIwMTItMDEtMjAgIEhheWF0byBJdG8gIDxoYXlh
dG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBTaGFkb3dSb290LmlkbCB3aGljaCBpcyBl
bmFibGVkIGJ5IG5ld2x5IGludHJvZHVjZWQgU0hBRE9XX0RPTSBmbGFnLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvYnViYmxlLXBvc2l0aW9uLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2J1YmJsZS1wb3NpdGlvbi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmZkNmM2MmMzOTQ0MjY1MmMzMzJmODFkYjI3Y2ExMDliMjA1MDM1ZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2J1YmJsZS1wb3NpdGlvbi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMgZm9yIHNwZWVjaCBidXR0b24gY2xpY2sgd2l0
aCA8aW5wdXQgdHlwZT0idGV4dCIgc3BlZWNoPi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK0NsaWNraW5nIHRoZSBzcGVlY2ggYnV0dG9uLgorb25TcGVlY2hDaGFuZ2UoKQorUEFT
UyBpbnB1dC52YWx1ZSBpcyAiMTU3LCAxMTEiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVl
Y2gvYnViYmxlLXBvc2l0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9idWJibGUt
cG9zaXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzE2Nzg5ZjJhMjk2Yjc1ODJlMmE3YTc1MzllYzZk
ZWE1OWMxZGM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvYnVi
YmxlLXBvc2l0aW9uLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbignVGVzdHMgZm9y
IHNwZWVjaCBidXR0b24gY2xpY2sgd2l0aCAmbHQ7aW5wdXQgdHlwZT0idGV4dCIgc3BlZWNoPi4n
KTsKKworZnVuY3Rpb24gb25TcGVlY2hDaGFuZ2UoKSB7CisgICAgZGVidWcoIm9uU3BlZWNoQ2hh
bmdlKCkiKTsKKworICAgIC8vIFNpbmNlIHdlIHJlcXVlc3RlZCBkdW1wUmVjdCwgdGhlIHJlY3Qg
Y29tZXMgYmFjayBhcyB0aGUgc3BlZWNoIHJlc3VsdC4KKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImlucHV0LnZhbHVlIiwgZXhwZWN0ZWRYICsgIiwgIiArIGV4cGVjdGVkWSk7CisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHJ1bigpIHsKKyAgICB3aW5kb3cuaWZyYW1lID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lmcmFtZScpOworICAgIHdpbmRvdy5pbnB1dCA9IGlm
cmFtZS5jb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKKyAgICBpbnB1dC5z
ZXRBdHRyaWJ1dGUoJ3gtd2Via2l0LXNwZWVjaCcpOworICAgIGlucHV0Lm9ud2Via2l0c3BlZWNo
Y2hhbmdlID0gb25TcGVlY2hDaGFuZ2U7CisgICAgaWZyYW1lLmNvbnRlbnREb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdLmFwcGVuZENoaWxkKGlucHV0KTsKKworICAgIGV4
cGVjdGVkWCA9IGlmcmFtZS5vZmZzZXRMZWZ0ICsgaW5wdXQub2Zmc2V0TGVmdCArIGlucHV0Lm9m
ZnNldFdpZHRoIC0gMTY7CisgICAgZXhwZWN0ZWRZID0gaWZyYW1lLm9mZnNldFRvcCArIGlucHV0
Lm9mZnNldFRvcCArIGlucHV0Lm9mZnNldEhlaWdodCAtIDE7CisKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdCh0cnVlKTsKKworICAg
ICAgICBkZWJ1ZygnQ2xpY2tpbmcgdGhlIHNwZWVjaCBidXR0b24uJyk7CisgICAgICAgIHZhciB4
ID0gaW5wdXQub2Zmc2V0TGVmdCArIGlucHV0Lm9mZnNldFdpZHRoIC0gNDsKKyAgICAgICAgdmFy
IHkgPSBpbnB1dC5vZmZzZXRUb3AgKyBpbnB1dC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICB4
ICs9IGlmcmFtZS5vZmZzZXRMZWZ0OworICAgICAgICB5ICs9IGlmcmFtZS5vZmZzZXRUb3A7CisK
KyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgfQor
fQorCit3aW5kb3cub25sb2FkID0gcnVuOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8aWZyYW1lIGlkPSJpZnJhbWUiPgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123339</attachid>
            <date>2012-01-20 09:42:08 -0800</date>
            <delta_ts>2012-01-23 08:22:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76443-20120120174206.patch</filename>
            <type>text/plain</type>
            <size>26390</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRlNTYwYzY3YzU2MWY2
NmM0MmE4MmFkNDNhNGZjMzIzNGI0ZWU1MS4uNGRlNWU4NGNhNmM2ZmJmMGJkYjVhM2FiYjU0ZTFm
MzQwZWQwOTZjNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAxLTE4ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElucHV0OiBS
ZXBvcnQgc3BlZWNoIGVsZW1lbnQgcmVjdCByZWxhdGl2ZSB0byB3aW5kb3cgcmF0aGVyIHRoYW4g
ZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
NDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biByZXF1ZXN0aW5nIHNwZWVjaCBpbnB1dCwgcmVwb3J0IHRoZSBzcGVlY2ggZWxlbWVudCByZWN0
IHJlbGF0aXZlCisgICAgICAgIHRvIHRoZSB3aW5kb3cgcmF0aGVyIHRoYW4gdGhlIGZyYW1lLiBU
aGUgZW1iZWRkZXIgd2lsbCB0eXBpY2FsbHkgdXNlCisgICAgICAgIHRoaXMgcG9zaXRpb24gdG8g
c2hvdyBhIGJ1YmJsZSBpbmRpY2F0aW5nIHRoYXQgc3BlZWNoIHJlY29nbml0aW9uIGlzCisgICAg
ICAgIGluIHByb2dyZXNzLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNoL2J1YmJsZS1wb3Np
dGlvbi5odG1sCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6
OnN0YXJ0U3BlZWNoSW5wdXQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRD
bGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6
c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjptYWtlUmVjdFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldER1bXBSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6Y2xlYXJSZXN1bHRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaDoKKwogMjAxMi0wMS0y
MCAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIFNoYWRv
d1Jvb3QuaWRsIHdoaWNoIGlzIGVuYWJsZWQgYnkgbmV3bHkgaW50cm9kdWNlZCBTSEFET1dfRE9N
IGZsYWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDNhNDM4N2Y5NWRhNjhjMjM2ZDUy
Njg2M2Y1NGEyNTdiZDdhZDc5NDUuLmZmOTBlOWNiMTc2YzYwYmVmMTgyMjE2MjJjNzMyMGYyNGFh
NWFlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTIt
MDEtMTggIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGVl
Y2ggSW5wdXQ6IFJlcG9ydCBzcGVlY2ggZWxlbWVudCByZWN0IHJlbGF0aXZlIHRvIHdpbmRvdyBy
YXRoZXIgdGhhbiBmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzY0NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgdGhlIFNwZWVjaElucHV0Q29udHJvbGxlck1vY2sgdG8gYWxsb3cgZm9y
IHJldHJpZXZpbmcgdGhlCisgICAgICAgIHNwZWVjaCBlbGVtZW50J3MgcG9zaXRpb24gdXNlZCBp
biB0aGUgcmVxdWVzdC4KKworICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrLmg6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6
OnNldER1bXBSZWN0KToKKyAgICAgICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
a0ltcGwuaDoKKwogMjAxMi0wMS0yMCAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgQWRkIFNoYWRvd1Jvb3QuaWRsIHdoaWNoIGlzIGVuYWJsZWQgYnkgbmV3bHkg
aW50cm9kdWNlZCBTSEFET1dfRE9NIGZsYWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCA2YWI5ZDFmNjZj
YjRmZmIwMDc3NzdhNTk1OTg5YmFkZThhZWE4OGRiLi44MDhmZmEzMWVmNzMzNzkwZjJiN2FkYmJm
ZDVhMDQxOTI2ZDY1MDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5j
bHVkZSAiU3BlZWNoSW5wdXQuaCIKQEAgLTU0OSw3ICs1NTAsNyBAQCB2b2lkIElucHV0RmllbGRT
cGVlY2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVjaElucHV0KCkKICAgICBBdG9taWNTdHJpbmcg
bGFuZ3VhZ2UgPSBpbnB1dC0+Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCk7CiAgICAgU3RyaW5n
IGdyYW1tYXIgPSBpbnB1dC0+Z2V0QXR0cmlidXRlKHdlYmtpdGdyYW1tYXJBdHRyKTsKICAgICAv
LyBGSVhNRTogdGhpcyBzaG91bGQgcHJvYmFibHkgcmVzcGVjdCB0cmFuc2Zvcm1zCi0gICAgSW50
UmVjdCByZWN0ID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1Ry
YW5zZm9ybXMoKTsKKyAgICBJbnRSZWN0IHJlY3QgPSByZW5kZXJlcigpLT52aWV3KCktPmZyYW1l
VmlldygpLT5jb250ZW50c1RvV2luZG93KHJlbmRlcmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hS
ZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkpOwogICAgIGlmIChzcGVlY2hJbnB1dCgpLT5zdGFydFJl
Y29nbml0aW9uKG1fbGlzdGVuZXJJZCwgcmVjdCwgbGFuZ3VhZ2UsIGdyYW1tYXIsIGRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICBzZXRTdGF0ZShSZWNvcmRpbmcpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVu
dE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVu
dE1vY2suY3BwCmluZGV4IDlhYTMxMTNkYzAwNjNiZWEyNmQ0YjE1OGQ3NDA0OTEwMWI5M2JhOGIu
LjU0NjFmMmY4NmRmYTc0MDgwMmQ2OWIzODM1ZDhlYzliYTJhZjE2M2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKIAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiU3BlZWNoSW5wdXRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Myw2ICs0NCw3IEBAIFNwZWVjaElucHV0Q2xpZW50TW9j
azo6U3BlZWNoSW5wdXRDbGllbnRNb2NrKCkKICAgICAsIG1fdGltZXIodGhpcywgJlNwZWVjaElu
cHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZCkKICAgICAsIG1fbGlzdGVuZXIoMCkKICAgICAsIG1f
cmVxdWVzdElkKDApCisgICAgLCBtX2R1bXBSZWN0KGZhbHNlKQogewogfQogCkBAIC01Niw2ICs1
OCw3IEBAIGJvb2wgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjpzdGFydFJlY29nbml0aW9uKGludCBy
ZXF1ZXN0SWQsIGNvbnN0IEludFJlY3QmIGVsZW1lCiAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fcmVxdWVzdElkID0gcmVxdWVzdElkOwor
ICAgIG1fcmVxdWVzdFJlY3QgPSBlbGVtZW50UmVjdDsKICAgICBtX3JlY29yZGluZyA9IHRydWU7
CiAgICAgbV9sYW5ndWFnZSA9IGxhbmd1YWdlOwogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDAp
OwpAQCAtODIsNiArODUsMTUgQEAgdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OmNhbmNlbFJl
Y29nbml0aW9uKGludCByZXF1ZXN0SWQpCiAgICAgfQogfQogCitzdGF0aWMgU3BlZWNoSW5wdXRS
ZXN1bHRBcnJheSBtYWtlUmVjdFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIFZl
Y3RvcjxSZWZQdHI8U3BlZWNoSW5wdXRSZXN1bHQ+ID4gcmVzdWx0czsKKyAgICBUZXh0U3RyZWFt
IHRzOworICAgIHRzIDw8IHJlY3QueCgpIDw8ICIsICIgPDwgcmVjdC55KCk7CisgICAgcmVzdWx0
cy5hcHBlbmQoU3BlZWNoSW5wdXRSZXN1bHQ6OmNyZWF0ZSh0cy5yZWxlYXNlKCksIDEuMCkpOwor
ICAgIHJldHVybiByZXN1bHRzOworfQorCiB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6YWRk
UmVjb2duaXRpb25SZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNl
LCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlKQogewogICAgIGlmIChsYW5ndWFnZS5pc0Vt
cHR5KCkpCkBAIC05MywxMCArMTA1LDE2IEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjph
ZGRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCwgZG91YmxlIGNvCiAgICAg
fQogfQogCit2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0RHVtcFJlY3QoYm9vbCBkdW1w
UmVjdCkKK3sKKyAgICBtX2R1bXBSZWN0ID0gZHVtcFJlY3Q7Cit9CisKIHZvaWQgU3BlZWNoSW5w
dXRDbGllbnRNb2NrOjpjbGVhclJlc3VsdHMoKQogewogICAgIG1fcmVzdWx0c0ZvckVtcHR5TGFu
Z3VhZ2UuY2xlYXIoKTsKICAgICBtX3JlY29nbml0aW9uUmVzdWx0cy5jbGVhcigpOworICAgIG1f
ZHVtcFJlY3QgPSBmYWxzZTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRpbWVy
RmlyZWQoV2ViQ29yZTo6VGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiopCkBAIC0xMTMsOCAr
MTMxLDEwIEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6
OlRpbWVyPFNwZWVjaElucHV0Q2xpZW50TW9jaz4qKQogICAgICAgICBpbnQgcmVxdWVzdElkID0g
bV9yZXF1ZXN0SWQ7CiAgICAgICAgIG1fcmVxdWVzdElkID0gMDsKIAotICAgICAgICAvLyBFbXB0
eSBsYW5ndWFnZSBjYXNlIG11c3QgYmUgaGFuZGxlZCBzZXBhcmF0ZWx5IHRvIGF2b2lkIHByb2Js
ZW1zIHdpdGggSGFzaE1hcCBhbmQgZW1wdHkga2V5cy4KLSAgICAgICAgaWYgKG1fbGFuZ3VhZ2Uu
aXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChtX2R1bXBSZWN0KQorICAgICAgICAgICAgbV9saXN0
ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVzdElkLCBtYWtlUmVjdFJlc3VsdChtX3Jl
cXVlc3RSZWN0KSk7CisgICAgICAgIGVsc2UgaWYgKG1fbGFuZ3VhZ2UuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICAvLyBFbXB0eSBsYW5ndWFnZSBjYXNlIG11c3QgYmUgaGFuZGxlZCBzZXBhcmF0
ZWx5IHRvIGF2b2lkIHByb2JsZW1zIHdpdGggSGFzaE1hcCBhbmQgZW1wdHkga2V5cy4KICAgICAg
ICAgICAgIGlmICghbV9yZXN1bHRzRm9yRW1wdHlMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVzdElkLCBtX3Jl
c3VsdHNGb3JFbXB0eUxhbmd1YWdlKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oCmluZGV4IDRl
MTMyNDJhY2I0YjZmOTE2NGRlZWU4NTVkNTYzNjhiZDQ5ZWM1MzYuLjcyZDNjOGU3M2NkNjY2Njli
Njc0NzUxNjdhM2ViNmVjNDNjODIxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaApAQCAtMzEsNiArMzEsNyBAQAogI2lm
bmRlZiBTcGVlY2hJbnB1dENsaWVudE1vY2tfaAogI2RlZmluZSBTcGVlY2hJbnB1dENsaWVudE1v
Y2tfaAogCisjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnQuaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1dFJl
c3VsdC5oIgpAQCAtNTAsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgU3BlZWNoSW5wdXRDbGllbnRN
b2NrKCk7CiAKICAgICB2b2lkIGFkZFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVz
dWx0LCBkb3VibGUgY29uZmlkZW5jZSwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSk7Cisg
ICAgdm9pZCBzZXREdW1wUmVjdChib29sKTsKICAgICB2b2lkIGNsZWFyUmVzdWx0cygpOwogCiAg
ICAgLy8gU3BlZWNoSW5wdXRDbGllbnQgbWV0aG9kcy4KQEAgLTY1LDEwICs2NywxMiBAQCBwcml2
YXRlOgogICAgIFRpbWVyPFNwZWVjaElucHV0Q2xpZW50TW9jaz4gbV90aW1lcjsKICAgICBTcGVl
Y2hJbnB1dExpc3RlbmVyKiBtX2xpc3RlbmVyOwogICAgIGludCBtX3JlcXVlc3RJZDsKKyAgICBJ
bnRSZWN0IG1fcmVxdWVzdFJlY3Q7CiAKICAgICBIYXNoTWFwPFN0cmluZywgU3BlZWNoSW5wdXRS
ZXN1bHRBcnJheT4gbV9yZWNvZ25pdGlvblJlc3VsdHM7CiAgICAgQXRvbWljU3RyaW5nIG1fbGFu
Z3VhZ2U7CiAgICAgU3BlZWNoSW5wdXRSZXN1bHRBcnJheSBtX3Jlc3VsdHNGb3JFbXB0eUxhbmd1
YWdlOworICAgIGJvb2wgbV9kdW1wUmVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2suaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2suaAppbmRleCBkNGU1NDNmMDJjMzE2MTA0YTQ1YjI1OGIyZWUx
YmE4NTRmMzdhZGFhLi4zYTQxNDlhOGJmYmI2MjBhZWU0MWNjNzkzZTk3MTZkN2M5OTBlODg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9jay5oCkBAIC00NCw4ICs0NCwxMiBAQCBwdWJsaWM6CiAgICAg
ICAgIFdlYlNwZWVjaElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKTsKICAgICB2aXJ0dWFsIH5XZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrKCkgeyB9CiAKKyAgICAvLyBBZGQgYSByZXN1bHQgc3Ry
aW5nIHdpdGggc29tZSBjb25maWRlbmNlIGFuZCBsYW5ndWFnZSB0aGF0IHdpbGwgYmUgcmV0dXJu
ZWQgZm9yIHRoZSBuZXh0IHNwZWVjaCBpbnB1dCByZXF1ZXN0LgogICAgIHZpcnR1YWwgdm9pZCBh
ZGRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBj
b25maWRlbmNlLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlKSA9IDA7CiAKKyAgICAvLyBDYXVz
ZSB0aGUgcmVxdWVzdGluZyBlbGVtZW50J3MgcmVjdCB0byBiZSByZXR1cm5lZCB1cG9uIHRoZSBu
ZXh0IHNwZWVjaCBpbnB1dCByZXF1ZXN0LgorICAgIHZpcnR1YWwgdm9pZCBzZXREdW1wUmVjdChi
b29sKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJSZXN1bHRzKCkgPSAwOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCmluZGV4IDRmMWYwNzQ1NzNjMzc0N2ZjMDMzMjhm
ZWRiMWQzNjkyMTI3NmRkNDYuLmU3OWQ5N2U1YWI4NGY2NmIxYTU0ZGNjZjc2YzQzY2Y0M2Y4OTVk
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAKQEAgLTY1LDYgKzY1LDExIEBAIHZv
aWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmFkZE1vY2tSZWNvZ25pdGlvblJl
c3VsdChjb25zdCBXZWJTdHJpbmcmCiAgICAgbV93ZWJjb3JlTW9jay0+YWRkUmVjb2duaXRpb25S
ZXN1bHQocmVzdWx0LCBjb25maWRlbmNlLCBsYW5ndWFnZSk7CiB9CiAKK3ZvaWQgV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldER1bXBSZWN0KGJvb2wgZHVtcFJlY3QpCit7Cisg
ICAgbV93ZWJjb3JlTW9jay0+c2V0RHVtcFJlY3QoZHVtcFJlY3QpOworfQorCiB2b2lkIFdlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpjbGVhclJlc3VsdHMoKQogewogICAgIG1fd2Vi
Y29yZU1vY2stPmNsZWFyUmVzdWx0cygpOwpAQCAtMTE0LDQgKzExOSwzIEBAIFdlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2sqIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s6OmNyZWF0ZShX
ZWJTcGVlY2hJbnB1CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TlBVVF9TUEVFQ0gpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCmluZGV4IDA1YmZkNTJhOGM4
OGUyYzFmMTUxNThmZWQ4YWU2NGYwOTdlZGQ2NDcuLmNjNjdkZDdkMDI1N2U4ODVmNTdlYTM4ZjVk
NThmYWNlOTE5MTJkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaApAQCAtNjUsNiArNjUs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIG1ldGhv
ZHMuCiAgICAgdm9pZCBhZGRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiBy
ZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlKTsKKyAg
ICB2b2lkIHNldER1bXBSZWN0KGJvb2wpOwogICAgIHZvaWQgY2xlYXJSZXN1bHRzKCk7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggOGIyYmMyNzZiZTMxYjQwYWM1YWQxM2JjZmJhZTZmNzc5MjU5NWU2ZC4uNjZiYTc3Njg1Zjdl
N2FhM2Q2YmY4ODkwY2ZjOTljMmM0MjRhNjc5YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAxLTE4ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElucHV0OiBS
ZXBvcnQgc3BlZWNoIGVsZW1lbnQgcmVjdCByZWxhdGl2ZSB0byB3aW5kb3cgcmF0aGVyIHRoYW4g
ZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
NDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIHRoZSBTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIHRvIGFsbG93IGZvciByZXRyaWV2aW5n
IHRoZQorICAgICAgICBzcGVlY2ggZWxlbWVudCdzIHBvc2l0aW9uIHVzZWQgaW4gdGhlIHJlcXVl
c3QuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdENhbGxiYWNrKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVj
dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVt
cFJlY3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJX
aW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1
dER1bXBSZWN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJv
bGxlcld4LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNo
SW5wdXREdW1wUmVjdCk6CisKIDIwMTItMDEtMjAgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEFkZCBTaGFkb3dSb290LmlkbCB3aGljaCBpcyBlbmFibGVkIGJ5
IG5ld2x5IGludHJvZHVjZWQgU0hBRE9XX0RPTSBmbGFnLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDZjMTNkOTMwOTQ2ZDUxOWY2MDU3OTA3
ZjVjNDBkZDYyZmY3NTBjOTcuLmFlMTE2NGU1YTIwOWY5MzYyMDJjNDUxOGI4ZmEwM2Y5M2UzNmRk
NzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
QEAgLTEzNTYsNiArMTM1NiwxOSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBhZGRNb2NrU3BlZWNoSW5w
dXRSZXN1bHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplYwogICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYg
c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3RDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBib29sIGR1bXBSZWN0ID0gSlNWYWx1
ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pOworCisgICAgTGF5b3V0VGVzdENvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0TW9ja1Nw
ZWVjaElucHV0RHVtcFJlY3QoZHVtcFJlY3QpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXROZXdXaW5kb3dzQ29w
eUJhY2tGb3J3YXJkTGlzdENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsK
ICAgICAvLyBIYXMgbWFjIGltcGxlbWVudGF0aW9uCkBAIC0yNDUzLDYgKzI0NjYsNyBAQCBKU1N0
YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAg
ICAgICAgeyAic2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IiLCBzZXRNb2NrR2VvbG9jYXRpb25FcnJv
ckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
Iiwgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQiLCBhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHRDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdCIsIHNl
dE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0
TmV3V2luZG93c0NvcHlCYWNrRm9yd2FyZExpc3QiLCBzZXROZXdXaW5kb3dzQ29weUJhY2tGb3J3
YXJkTGlzdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFBhZ2VWaXNpYmlsaXR5Iiwg
c2V0UGFnZVZpc2liaWxpdHlDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRQT1NJWExv
Y2FsZSIsIHNldFBPU0lYTG9jYWxlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDlmNGRiNDk4M2EzN2ZiMDE4YjgyNmMx
ZDk3YWJlOWVkOWRlMjZmNDYuLjY2MTdjZmUyN2M1MGU2OGY2OTQ5OWVmMDJkM2UxMmQ2ZGYzMTUz
ZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAt
MTA4LDYgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9y
KGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFj
Y3VyYWN5KTsKICAgICB2b2lkIGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiBy
ZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSk7CisgICAgdm9p
ZCBzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0UGVy
c2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCk7CiAgICAgdm9p
ZCBzZXRQbHVnaW5zRW5hYmxlZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0UG9wdXBCbG9ja2lu
Z0VuYWJsZWQoYm9vbCBmbGFnKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBmNjhlMGQ4NzJhZDEyYzE2M2Fh
ODUwOTM5NDQxN2M3ZmZjN2YzOTYzLi41MTU4ZTQ0MjI1NDdkOTJkZGU1NjU0OGVhOTI1NTAzMjQ1
MDEwYzQ3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC05MCw2ICs5MCw3IEBAIExheW91dFRlc3RDb250cm9s
bGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcihUZXN0U2hlbGwqIHNoZWxsKQogICAgIC8vIGJ5IENw
cEJvdW5kQ2xhc3MsIHRoZSBwYXJlbnQgdG8gTGF5b3V0VGVzdENvbnRyb2xsZXIpLgogICAgIGJp
bmRNZXRob2QoImFkZEZpbGVUb1Bhc3RlYm9hcmRPbkRyYWciLCAmTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmFkZEZpbGVUb1Bhc3RlYm9hcmRPbkRyYWcpOwogICAgIGJpbmRNZXRob2QoImFkZE1vY2tT
cGVlY2hJbnB1dFJlc3VsdCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9ja1NwZWVjaElu
cHV0UmVzdWx0KTsKKyAgICBiaW5kTWV0aG9kKCJzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdCIs
ICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QpOwogICAg
IGJpbmRNZXRob2QoImFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5IiwgJkxheW91dFRlc3RD
b250cm9sbGVyOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk7CiAgICAgYmluZE1ldGhv
ZCgiYWRkVXNlclNjcmlwdCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdCk7
CiAgICAgYmluZE1ldGhvZCgiYWRkVXNlclN0eWxlU2hlZXQiLCAmTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmFkZFVzZXJTdHlsZVNoZWV0KTsKQEAgLTE5MjksNiArMTkzMCwxNiBAQCB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bQogICAgICAgICBjb250cm9sbGVyLT5hZGRNb2NrUmVjb2duaXRpb25SZXN1
bHQoY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1swXSksIGFyZ3VtZW50c1sxXS50b0Rv
dWJsZSgpLCBjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzJdKSk7CiB9CiAKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVz
dWx0LT5zZXROdWxsKCk7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1bWVu
dHNbMF0uaXNCb29sKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrKiBjb250cm9sbGVyID0gbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+c3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9jaygpKQorICAgICAgICBjb250cm9sbGVyLT5zZXREdW1wUmVj
dChhcmd1bWVudHNbMF0udmFsdWUuYm9vbFZhbHVlKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c3RhcnRTcGVlY2hJbnB1dChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
aCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgK
aW5kZXggNjAzYjNiOTJlNDlhZGI5MWJjOGExZGFkZTZkZWZjNTMzMzNlYWJkYS4uZGFhMDUxNTcz
MjI5NGQ4MTI0OTY4ZDFjNDg0MDE1ODQzM2M0Yzg4OCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0zODAsNiArMzgw
LDcgQEAgcHVibGljOgogCiAgICAgLy8gU3BlZWNoIGlucHV0IHJlbGF0ZWQgZnVuY3Rpb25zLgog
ICAgIHZvaWQgYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHN0YXJ0U3BlZWNoSW5w
dXQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCiAgICAgdm9pZCBsYXll
clRyZWVBc1RleHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmdzLCBDcHBWYXJpYW50KiByZXN1
bHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250
cm9sbGVyRWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJv
bGxlckVmbC5jcHAKaW5kZXggOGRkMGEzN2NhNTQ3OTdkN2I4MjkxYjIxNGY1ZmI1OGY2ZDBhZTNh
Ny4uYmJhZTgyY2IyM2MxODg2NmQ2OGE3YjkwZDRmNThmYTRjMTNiZGE0NyAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCkBA
IC0zODksNiArMzg5LDEzIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVl
Y2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiwgZG91YmxlLCBKU1N0cmluCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElu
cHV0RHVtcFJlY3QoYm9vbCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2gg
aW5wdXQgbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhcnRTcGVlY2hJbnB1dChKU0NvbnRleHRSZWYgaW5wdXRF
bGVtZW50KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlv
dXQgdGVzdHMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RD
b250cm9sbGVyR3RrLmNwcAppbmRleCA3YzEzM2ZkMzBlZDAxOTQ5MWIwZGFmMTVjZGE5YjczYzQ2
OTUwMjAwLi5lMmJmY2E0NTU3Y2UzOTRiODY4MDliZGM5NjNjMmQ3ZjRhNjEzZTk3IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5j
cHAKQEAgLTUyNiw2ICs1MjYsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9j
a1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgZG91YmxlIGMKICAgICAvLyBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgogfQogCit2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChib29s
IGZsYWcpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91
dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM5NDg1LgorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzdGFydFNwZWVjaElu
cHV0KEpTQ29udGV4dFJlZiBpbnB1dEVsZW1lbnQpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCA3ODRiYzYxMTUxOGE1
OWVkZDRlOTAyNDhhOTUzYjU4ZjNmMjhmYmFmLi40YmM0OGQyNjQ5Y2NjNjQzMGQ3NmEyNjhiMzNi
Y2M0OGM4MzA2OTk3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0
VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC01NDUsNiArNTQ1LDEyIEBAIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQs
IGRvdWJsZSBjCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zOTQ4NS4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVj
aElucHV0RHVtcFJlY3QoYm9vbCBmbGFnKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9y
IHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c3RhcnRTcGVlY2hJbnB1dChKU0NvbnRleHRSZWYgaW5wdXRFbGVtZW50KQogewogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmlu
ZGV4IGE2MDUwYzdiMmE2ODU2Yjc1NTg2ZmIzNmUwYmUxZTkyMjhlZjI1ZmUuLjcyMmJmNzcwZmQz
NzIwZGJiMWExZDU5MTY3MDljNjhiN2ZlYTRjY2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC04OTksNiArODk5LDEyIEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25z
dCBRU3RyaW5nJiByZXN1bHQsIGRvdWJsCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QoYm9vbCBmbGFnKQoreworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KK30KKwogdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhcnRTcGVlY2hJbnB1dChjb25zdCBRU3RyaW5nJiBpbnB1
dEVsZW1lbnQpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxh
eW91dCB0ZXN0cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRl
c3RDb250cm9sbGVyUXQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuaAppbmRleCBiODQyZmU0ZGZmNzk5ZDgyYjJlYmE5NmU5MzhmYWQ4MWEwYmI2ODZk
Li5hNTQzZTQ1MTkzYjU4YzA4N2QzNzZkMzliMjNhYTE1ZGU2OWM2ZDg1IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCkBAIC0yMzQsNiAr
MjM0LDcgQEAgcHVibGljIHNsb3RzOgogICAgIGJvb2wgZ2VvbG9jYXRpb25QZXJtaXNzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9nZW9sb2NhdGlvblBlcm1pc3Npb247IH0KIAogICAgIHZvaWQgYWRk
TW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCwgZG91YmxlIGNvbmZp
ZGVuY2UsIGNvbnN0IFFTdHJpbmcmIGxhbmd1YWdlKTsKKyAgICB2b2lkIHNldE1vY2tTcGVlY2hJ
bnB1dER1bXBSZWN0KGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzdGFydFNwZWVjaElucHV0KGNvbnN0
IFFTdHJpbmcmIGlucHV0RWxlbWVudCk7CiAKICAgICAvLyBFbXB0eSBzdHViIG1ldGhvZCB0byBr
ZWVwIHBhcml0eSB3aXRoIG9iamVjdCBtb2RlbCBleHBvc2VkIGJ5IGdsb2JhbCBMYXlvdXRUZXN0
Q29udHJvbGxlci4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVz
dENvbnRyb2xsZXJXaW4uY3BwCmluZGV4IDM4Yzk4Nzc2MGFkYzVhODBjNzhlNjVhYzJkMjUwNDM3
MzY0OGE3ZDEuLmM2OWM0NzQ5ZDRiZWZiNzAyZjJlYThjMzY5NGViZWU3ZjUxN2NlODAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2lu
LmNwcApAQCAtNDUwLDYgKzQ1MCwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRN
b2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBkb3VibGUgYwogICAgIC8v
IFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCiB9CiAK
K3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KGJv
b2wgZmxhZykKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5
b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mzk0ODUuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXJ0U3BlZWNo
SW5wdXQoSlNDb250ZXh0UmVmIGlucHV0RWxlbWVudCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRleCBjZmQxZjZkZDZiYWU1
Yzk0MzIwZGY0NjlhMDE5NGVkNTY0NWIxMWIyLi5iMmY3ZmI0NzlmNmRmMjgxZjFiMGQzMzdhN2Fh
MDNhMzg4ZWUwOTgzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRU
ZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRU
ZXN0Q29udHJvbGxlcld4LmNwcApAQCAtMzc2LDYgKzM3NiwxMiBAQCB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBk
b3VibGUgYwogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mzk0ODUuCiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJ
bnB1dER1bXBSZWN0KGJvb2wgZmxhZykKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBz
cGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnN0YXJ0U3BlZWNoSW5wdXQoSlNDb250ZXh0UmVmIGlucHV0RWxlbWVudCkKIHsKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDUxYzQyMjExOWFjNGRiZmMwZWU0NmNmMzk3ODEyYTIzMjNlY2IwMjYuLjQ5NmFkOTU2YzY5NmM5
MTdhMDQwNDgwY2I4N2UwMWFlNTZmODI4NTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0w
MS0xOCAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNwZWVj
aCBJbnB1dDogUmVwb3J0IHNwZWVjaCBlbGVtZW50IHJlY3QgcmVsYXRpdmUgdG8gd2luZG93IHJh
dGhlciB0aGFuIGZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NjQ0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBsYXlvdXQgdGVzdCB0byBjaGVjayB0aGF0IHRoZSBlbGVtZW50IHBvc2l0aW9u
IHVzZWQgd2hlbgorICAgICAgICByZXF1ZXN0aW5nIHNwZWVjaCBpbnB1dCBpcyByZWxhdGl2ZSB0
byB0aGUgd2luZG93LCBub3QgdGhlIGZyYW1lLgorCisgICAgICAgICogZmFzdC9zcGVlY2gvYnVi
YmxlLXBvc2l0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zcGVlY2gv
YnViYmxlLXBvc2l0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAxLTIwICBIYXlhdG8gSXRvICA8
aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgU2hhZG93Um9vdC5pZGwgd2hpY2gg
aXMgZW5hYmxlZCBieSBuZXdseSBpbnRyb2R1Y2VkIFNIQURPV19ET00gZmxhZy4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2J1YmJsZS1wb3NpdGlvbi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9idWJibGUtcG9zaXRpb24tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZmZDZjNjJjMzk0NDI2NTJjMzMyZjgxZGIyN2NhMTA5YjIwNTAzNWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9idWJibGUtcG9zaXRpb24tZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIGZvciBzcGVlY2ggYnV0dG9uIGNsaWNr
IHdpdGggPGlucHV0IHR5cGU9InRleHQiIHNwZWVjaD4uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitDbGlja2luZyB0aGUgc3BlZWNoIGJ1dHRvbi4KK29uU3BlZWNoQ2hhbmdlKCkK
K1BBU1MgaW5wdXQudmFsdWUgaXMgIjE1NywgMTExIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
c3BlZWNoL2J1YmJsZS1wb3NpdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2gvYnVi
YmxlLXBvc2l0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjcxNjc4OWYyYTI5NmI3NTgyZTJhN2E3NTM5
ZWM2ZGVhNTljMWRjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
L2J1YmJsZS1wb3NpdGlvbi5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oJ1Rlc3Rz
IGZvciBzcGVlY2ggYnV0dG9uIGNsaWNrIHdpdGggJmx0O2lucHV0IHR5cGU9InRleHQiIHNwZWVj
aD4uJyk7CisKK2Z1bmN0aW9uIG9uU3BlZWNoQ2hhbmdlKCkgeworICAgIGRlYnVnKCJvblNwZWVj
aENoYW5nZSgpIik7CisKKyAgICAvLyBTaW5jZSB3ZSByZXF1ZXN0ZWQgZHVtcFJlY3QsIHRoZSBy
ZWN0IGNvbWVzIGJhY2sgYXMgdGhlIHNwZWVjaCByZXN1bHQuCisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJpbnB1dC52YWx1ZSIsIGV4cGVjdGVkWCArICIsICIgKyBleHBlY3RlZFkpOworICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBydW4oKSB7CisgICAgd2luZG93LmlmcmFt
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZnJhbWUnKTsKKyAgICB3aW5kb3cuaW5wdXQg
PSBpZnJhbWUuY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgaW5w
dXQuc2V0QXR0cmlidXRlKCd4LXdlYmtpdC1zcGVlY2gnKTsKKyAgICBpbnB1dC5vbndlYmtpdHNw
ZWVjaGNoYW5nZSA9IG9uU3BlZWNoQ2hhbmdlOworICAgIGlmcmFtZS5jb250ZW50RG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXS5hcHBlbmRDaGlsZChpbnB1dCk7CisKKyAg
ICBleHBlY3RlZFggPSBpZnJhbWUub2Zmc2V0TGVmdCArIGlucHV0Lm9mZnNldExlZnQgKyBpbnB1
dC5vZmZzZXRXaWR0aCAtIDE2OworICAgIGV4cGVjdGVkWSA9IGlmcmFtZS5vZmZzZXRUb3AgKyBp
bnB1dC5vZmZzZXRUb3AgKyBpbnB1dC5vZmZzZXRIZWlnaHQgLSAxOworCisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QodHJ1ZSk7CisK
KyAgICAgICAgZGVidWcoJ0NsaWNraW5nIHRoZSBzcGVlY2ggYnV0dG9uLicpOworICAgICAgICB2
YXIgeCA9IGlucHV0Lm9mZnNldExlZnQgKyBpbnB1dC5vZmZzZXRXaWR0aCAtIDQ7CisgICAgICAg
IHZhciB5ID0gaW5wdXQub2Zmc2V0VG9wICsgaW5wdXQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICAg
ICAgeCArPSBpZnJhbWUub2Zmc2V0TGVmdDsKKyAgICAgICAgeSArPSBpZnJhbWUub2Zmc2V0VG9w
OworCisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgICAgICBldmVu
dFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAg
IH0KK30KKword2luZG93Lm9ubG9hZCA9IHJ1bjsKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPGlmcmFtZSBpZD0iaWZyYW1lIj4KKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123559</attachid>
            <date>2012-01-23 08:22:57 -0800</date>
            <delta_ts>2012-01-31 06:13:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76443-20120123162256.patch</filename>
            <type>text/plain</type>
            <size>26635</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg5NmNiMTE0YmJlNjJh
NzM5YzVjYTExODA1NWNmOGQ2YzQ4ZDJmZi4uMTc2YjFjNTMxOWJmODdkODYwNzA0Yjk2NjcxN2Vm
ZDY5NjExOTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAxLTE4ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElucHV0OiBS
ZXBvcnQgc3BlZWNoIGVsZW1lbnQgcmVjdCByZWxhdGl2ZSB0byB3aW5kb3cgcmF0aGVyIHRoYW4g
ZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
NDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biByZXF1ZXN0aW5nIHNwZWVjaCBpbnB1dCwgcmVwb3J0IHRoZSBzcGVlY2ggZWxlbWVudCByZWN0
IHJlbGF0aXZlCisgICAgICAgIHRvIHRoZSB3aW5kb3cgcmF0aGVyIHRoYW4gdGhlIGZyYW1lLiBU
aGUgZW1iZWRkZXIgd2lsbCB0eXBpY2FsbHkgdXNlCisgICAgICAgIHRoaXMgcG9zaXRpb24gdG8g
c2hvdyBhIGJ1YmJsZSBpbmRpY2F0aW5nIHRoYXQgc3BlZWNoIHJlY29nbml0aW9uIGlzCisgICAg
ICAgIGluIHByb2dyZXNzLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNoL2J1YmJsZS1wb3Np
dGlvbi5odG1sCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6
OnN0YXJ0U3BlZWNoSW5wdXQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRD
bGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6
c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjptYWtlUmVjdFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dENsaWVudE1vY2s6OnNldER1bXBSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6Y2xlYXJSZXN1bHRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xpZW50TW9jazo6dGltZXJGaXJlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suaDoKKwogMjAxMi0wMS0y
MCAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IEhBUiBwYWdlcmVmIGF0dHJpYnV0ZXMgYXJlIHdyb25nIGFuZCBpbmNvbnNpc3Rl
bnQgd2l0aCBwYWdlcyBhcnJheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyM2Y4NWI3
MmQ3ZTgzZDc2ZmYxODg4ZjcwZGJkZTliNGJmMzFhYjczLi4xYzI0YzU5YjgzYzIwZTI1ZGMyYThl
MTRlZTA2MmNmZTkxZmM3Y2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDEyLTAxLTE4ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3BlZWNoIElucHV0OiBSZXBvcnQgc3BlZWNoIGVsZW1lbnQgcmVjdCByZWxhdGl2
ZSB0byB3aW5kb3cgcmF0aGVyIHRoYW4gZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSBTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
IHRvIGFsbG93IGZvciByZXRyaWV2aW5nIHRoZQorICAgICAgICBzcGVlY2ggZWxlbWVudCdzIHBv
c2l0aW9uIHVzZWQgaW4gdGhlIHJlcXVlc3QuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9jay5oOgorICAgICAgICAqIHNyYy9XZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2tJbXBsOjpzZXREdW1wUmVjdCk6CisgICAgICAgICogc3JjL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsLmg6CisKIDIwMTItMDEtMjEgIERhdmlkIFJldmVtYW4gIDxyZXZl
bWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEluY3JlbWVudGFsIHRleHR1
cmUgdXBkYXRlcyBhcmUgbm90IGF0b21pYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IDZhYjlkMWY2NmNi
NGZmYjAwNzc3N2E1OTU5ODliYWRlOGFlYTg4ZGIuLjgwOGZmYTMxZWY3MzM3OTBmMmI3YWRiYmZk
NWEwNDE5MjZkNjUwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNs
dWRlICJTcGVlY2hJbnB1dC5oIgpAQCAtNTQ5LDcgKzU1MCw3IEBAIHZvaWQgSW5wdXRGaWVsZFNw
ZWVjaEJ1dHRvbkVsZW1lbnQ6OnN0YXJ0U3BlZWNoSW5wdXQoKQogICAgIEF0b21pY1N0cmluZyBs
YW5ndWFnZSA9IGlucHV0LT5jb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKTsKICAgICBTdHJpbmcg
Z3JhbW1hciA9IGlucHV0LT5nZXRBdHRyaWJ1dGUod2Via2l0Z3JhbW1hckF0dHIpOwogICAgIC8v
IEZJWE1FOiB0aGlzIHNob3VsZCBwcm9iYWJseSByZXNwZWN0IHRyYW5zZm9ybXMKLSAgICBJbnRS
ZWN0IHJlY3QgPSByZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJh
bnNmb3JtcygpOworICAgIEludFJlY3QgcmVjdCA9IHJlbmRlcmVyKCktPnZpZXcoKS0+ZnJhbWVW
aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3RJZ25vcmluZ1RyYW5zZm9ybXMoKSk7CiAgICAgaWYgKHNwZWVjaElucHV0KCktPnN0YXJ0UmVj
b2duaXRpb24obV9saXN0ZW5lcklkLCByZWN0LCBsYW5ndWFnZSwgZ3JhbW1hciwgZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSkpCiAgICAgICAgIHNldFN0YXRlKFJlY29yZGluZyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50
TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50
TW9jay5jcHAKaW5kZXggOWFhMzExM2RjMDA2M2JlYTI2ZDRiMTU4ZDc0MDQ5MTAxYjkzYmE4Yi4u
ZDFmZjU4ODRkZjhmZmI5ODg0MDFjNTgwM2MxYWZkMmY4ZDIyOTE5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcApA
QCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJTcGVlY2hJbnB1dExpc3RlbmVyLmgiCisjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDYgKzQ0LDcgQEAgU3BlZWNoSW5wdXRDbGllbnRNb2Nr
OjpTcGVlY2hJbnB1dENsaWVudE1vY2soKQogICAgICwgbV90aW1lcih0aGlzLCAmU3BlZWNoSW5w
dXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKQogICAgICwgbV9saXN0ZW5lcigwKQogICAgICwgbV9y
ZXF1ZXN0SWQoMCkKKyAgICAsIG1fZHVtcFJlY3QoZmFsc2UpCiB7CiB9CiAKQEAgLTU2LDYgKzU4
LDcgQEAgYm9vbCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJl
cXVlc3RJZCwgY29uc3QgSW50UmVjdCYgZWxlbWUKICAgICBpZiAobV90aW1lci5pc0FjdGl2ZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9yZXF1ZXN0SWQgPSByZXF1ZXN0SWQ7Cisg
ICAgbV9yZXF1ZXN0UmVjdCA9IGVsZW1lbnRSZWN0OwogICAgIG1fcmVjb3JkaW5nID0gdHJ1ZTsK
ICAgICBtX2xhbmd1YWdlID0gbGFuZ3VhZ2U7CiAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7
CkBAIC04Miw2ICs4NSwxNSBAQCB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6Y2FuY2VsUmVj
b2duaXRpb24oaW50IHJlcXVlc3RJZCkKICAgICB9CiB9CiAKK3N0YXRpYyBTcGVlY2hJbnB1dFJl
c3VsdEFycmF5IG1ha2VSZWN0UmVzdWx0KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgVmVj
dG9yPFJlZlB0cjxTcGVlY2hJbnB1dFJlc3VsdD4gPiByZXN1bHRzOworICAgIFRleHRTdHJlYW0g
dHM7CisgICAgdHMgPDwgcmVjdC54KCkgPDwgIiwiIDw8IHJlY3QueSgpIDw8ICIsIiA8PCByZWN0
LndpZHRoKCkgPDwgIiwiIDw8IHJlY3QuaGVpZ2h0KCk7CisgICAgcmVzdWx0cy5hcHBlbmQoU3Bl
ZWNoSW5wdXRSZXN1bHQ6OmNyZWF0ZSh0cy5yZWxlYXNlKCksIDEuMCkpOworICAgIHJldHVybiBy
ZXN1bHRzOworfQorCiB2b2lkIFNwZWVjaElucHV0Q2xpZW50TW9jazo6YWRkUmVjb2duaXRpb25S
ZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGxhbmd1YWdlKQogewogICAgIGlmIChsYW5ndWFnZS5pc0VtcHR5KCkpCkBAIC05
MywxMCArMTA1LDE2IEBAIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjphZGRSZWNvZ25pdGlv
blJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCwgZG91YmxlIGNvCiAgICAgfQogfQogCit2b2lk
IFNwZWVjaElucHV0Q2xpZW50TW9jazo6c2V0RHVtcFJlY3QoYm9vbCBkdW1wUmVjdCkKK3sKKyAg
ICBtX2R1bXBSZWN0ID0gZHVtcFJlY3Q7Cit9CisKIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRNb2Nr
OjpjbGVhclJlc3VsdHMoKQogewogICAgIG1fcmVzdWx0c0ZvckVtcHR5TGFuZ3VhZ2UuY2xlYXIo
KTsKICAgICBtX3JlY29nbml0aW9uUmVzdWx0cy5jbGVhcigpOworICAgIG1fZHVtcFJlY3QgPSBm
YWxzZTsKIH0KIAogdm9pZCBTcGVlY2hJbnB1dENsaWVudE1vY2s6OnRpbWVyRmlyZWQoV2ViQ29y
ZTo6VGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2NrPiopCkBAIC0xMTMsOCArMTMxLDEwIEBAIHZv
aWQgU3BlZWNoSW5wdXRDbGllbnRNb2NrOjp0aW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPFNwZWVj
aElucHV0Q2xpZW50TW9jaz4qKQogICAgICAgICBpbnQgcmVxdWVzdElkID0gbV9yZXF1ZXN0SWQ7
CiAgICAgICAgIG1fcmVxdWVzdElkID0gMDsKIAotICAgICAgICAvLyBFbXB0eSBsYW5ndWFnZSBj
YXNlIG11c3QgYmUgaGFuZGxlZCBzZXBhcmF0ZWx5IHRvIGF2b2lkIHByb2JsZW1zIHdpdGggSGFz
aE1hcCBhbmQgZW1wdHkga2V5cy4KLSAgICAgICAgaWYgKG1fbGFuZ3VhZ2UuaXNFbXB0eSgpKSB7
CisgICAgICAgIGlmIChtX2R1bXBSZWN0KQorICAgICAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVj
b2duaXRpb25SZXN1bHQocmVxdWVzdElkLCBtYWtlUmVjdFJlc3VsdChtX3JlcXVlc3RSZWN0KSk7
CisgICAgICAgIGVsc2UgaWYgKG1fbGFuZ3VhZ2UuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAv
LyBFbXB0eSBsYW5ndWFnZSBjYXNlIG11c3QgYmUgaGFuZGxlZCBzZXBhcmF0ZWx5IHRvIGF2b2lk
IHByb2JsZW1zIHdpdGggSGFzaE1hcCBhbmQgZW1wdHkga2V5cy4KICAgICAgICAgICAgIGlmICgh
bV9yZXN1bHRzRm9yRW1wdHlMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgbV9s
aXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVzdElkLCBtX3Jlc3VsdHNGb3JFbXB0
eUxhbmd1YWdlKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oCmluZGV4IDRlMTMyNDJhY2I0YjZm
OTE2NGRlZWU4NTVkNTYzNjhiZDQ5ZWM1MzYuLjcyZDNjOGU3M2NkNjY2NjliNjc0NzUxNjdhM2Vi
NmVjNDNjODIxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU3Bl
ZWNoSW5wdXRDbGllbnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9T
cGVlY2hJbnB1dENsaWVudE1vY2suaApAQCAtMzEsNiArMzEsNyBAQAogI2lmbmRlZiBTcGVlY2hJ
bnB1dENsaWVudE1vY2tfaAogI2RlZmluZSBTcGVlY2hJbnB1dENsaWVudE1vY2tfaAogCisjaW5j
bHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAi
U3BlZWNoSW5wdXRDbGllbnQuaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1dFJlc3VsdC5oIgpAQCAt
NTAsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgU3BlZWNoSW5wdXRDbGllbnRNb2NrKCk7CiAKICAg
ICB2b2lkIGFkZFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0LCBkb3VibGUg
Y29uZmlkZW5jZSwgY29uc3QgQXRvbWljU3RyaW5nJiBsYW5ndWFnZSk7CisgICAgdm9pZCBzZXRE
dW1wUmVjdChib29sKTsKICAgICB2b2lkIGNsZWFyUmVzdWx0cygpOwogCiAgICAgLy8gU3BlZWNo
SW5wdXRDbGllbnQgbWV0aG9kcy4KQEAgLTY1LDEwICs2NywxMiBAQCBwcml2YXRlOgogICAgIFRp
bWVyPFNwZWVjaElucHV0Q2xpZW50TW9jaz4gbV90aW1lcjsKICAgICBTcGVlY2hJbnB1dExpc3Rl
bmVyKiBtX2xpc3RlbmVyOwogICAgIGludCBtX3JlcXVlc3RJZDsKKyAgICBJbnRSZWN0IG1fcmVx
dWVzdFJlY3Q7CiAKICAgICBIYXNoTWFwPFN0cmluZywgU3BlZWNoSW5wdXRSZXN1bHRBcnJheT4g
bV9yZWNvZ25pdGlvblJlc3VsdHM7CiAgICAgQXRvbWljU3RyaW5nIG1fbGFuZ3VhZ2U7CiAgICAg
U3BlZWNoSW5wdXRSZXN1bHRBcnJheSBtX3Jlc3VsdHNGb3JFbXB0eUxhbmd1YWdlOworICAgIGJv
b2wgbV9kdW1wUmVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2suaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2suaAppbmRleCBkNGU1NDNmMDJjMzE2MTA0YTQ1YjI1OGIyZWUxYmE4NTRmMzdhZGFh
Li5kM2ZiMTZlYjExNDZmYmY1OWU0NWY2MmVjOGYyNGEyNjIyNzYzNDQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9jay5oCkBAIC00NCw4ICs0NCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIFdlYlNwZWVj
aElucHV0TGlzdGVuZXIqIGxpc3RlbmVyKTsKICAgICB2aXJ0dWFsIH5XZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrKCkgeyB9CiAKKyAgICAvLyBBZGQgYSByZXN1bHQgc3RyaW5nIGFuZCBjb25m
aWRlbmNlIHZhbHVlIHRvIGJlIHJldHVybmVkIGFzIHJlc3VsdCBmb3IgdGhlIG5leHQgc3BlZWNo
IGlucHV0IHJlcXVlc3QgaW4gdGhlIGdpdmVuIGxhbmd1YWdlLgogICAgIHZpcnR1YWwgdm9pZCBh
ZGRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBj
b25maWRlbmNlLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlKSA9IDA7CiAKKyAgICAvLyBDYXVz
ZSB0aGUgcmVxdWVzdGluZyBlbGVtZW50J3MgcmVjdCB0byBiZSByZXR1cm5lZCB1cG9uIHRoZSBu
ZXh0IHNwZWVjaCBpbnB1dCByZXF1ZXN0LgorICAgIHZpcnR1YWwgdm9pZCBzZXREdW1wUmVjdChi
b29sKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJSZXN1bHRzKCkgPSAwOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9ja0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwCmluZGV4IDRmMWYwNzQ1NzNjMzc0N2ZjMDMzMjhm
ZWRiMWQzNjkyMTI3NmRkNDYuLmU3OWQ5N2U1YWI4NGY2NmIxYTU0ZGNjZjc2YzQzY2Y0M2Y4OTVk
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAKQEAgLTY1LDYgKzY1LDExIEBAIHZv
aWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OmFkZE1vY2tSZWNvZ25pdGlvblJl
c3VsdChjb25zdCBXZWJTdHJpbmcmCiAgICAgbV93ZWJjb3JlTW9jay0+YWRkUmVjb2duaXRpb25S
ZXN1bHQocmVzdWx0LCBjb25maWRlbmNlLCBsYW5ndWFnZSk7CiB9CiAKK3ZvaWQgV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldER1bXBSZWN0KGJvb2wgZHVtcFJlY3QpCit7Cisg
ICAgbV93ZWJjb3JlTW9jay0+c2V0RHVtcFJlY3QoZHVtcFJlY3QpOworfQorCiB2b2lkIFdlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpjbGVhclJlc3VsdHMoKQogewogICAgIG1fd2Vi
Y29yZU1vY2stPmNsZWFyUmVzdWx0cygpOwpAQCAtMTE0LDQgKzExOSwzIEBAIFdlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2sqIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s6OmNyZWF0ZShX
ZWJTcGVlY2hJbnB1CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TlBVVF9TUEVFQ0gpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCmluZGV4IDA1YmZkNTJhOGM4
OGUyYzFmMTUxNThmZWQ4YWU2NGYwOTdlZGQ2NDcuLmNjNjdkZDdkMDI1N2U4ODVmNTdlYTM4ZjVk
NThmYWNlOTE5MTJkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaApAQCAtNjUsNiArNjUs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIG1ldGhv
ZHMuCiAgICAgdm9pZCBhZGRNb2NrUmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViU3RyaW5nJiBy
ZXN1bHQsIGRvdWJsZSBjb25maWRlbmNlLCBjb25zdCBXZWJTdHJpbmcmIGxhbmd1YWdlKTsKKyAg
ICB2b2lkIHNldER1bXBSZWN0KGJvb2wpOwogICAgIHZvaWQgY2xlYXJSZXN1bHRzKCk7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNmU3ZjAwOWZjYWE3ODIwMGY1NTA2OWJhYmI1NzM5ODM5NGM3MDU2OC4uMThiZDVmN2M5NGZm
YmY2N2I4OWJjOTdjY2FhMjg3YzE2NjM0NDhmYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAxLTE4ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElucHV0OiBS
ZXBvcnQgc3BlZWNoIGVsZW1lbnQgcmVjdCByZWxhdGl2ZSB0byB3aW5kb3cgcmF0aGVyIHRoYW4g
ZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
NDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIHRoZSBTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrIHRvIGFsbG93IGZvciByZXRyaWV2aW5n
IHRoZQorICAgICAgICBzcGVlY2ggZWxlbWVudCdzIHBvc2l0aW9uIHVzZWQgaW4gdGhlIHJlcXVl
c3QuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdENhbGxiYWNrKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVj
dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVt
cFJlY3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJX
aW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1
dER1bXBSZWN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJv
bGxlcld4LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNo
SW5wdXREdW1wUmVjdCk6CisKIDIwMTItMDEtMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgV2luZG93cyBweXRob24gdGVzdCBidWlsZCBmaXguCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNmMxM2Q5MzA5
NDZkNTE5ZjYwNTc5MDdmNWM0MGRkNjJmZjc1MGM5Ny4uYWUxMTY0ZTVhMjA5ZjkzNjIwMmM0NTE4
YjhmYTAzZjkzZTM2ZGQ3OCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcApAQCAtMTM1Niw2ICsxMzU2LDE5IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGFk
ZE1vY2tTcGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0
aWMgSlNWYWx1ZVJlZiBzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdENhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGJvb2wgZHVt
cFJlY3QgPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1swXSk7CisKKyAgICBM
YXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RD
b250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9s
bGVyLT5zZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChkdW1wUmVjdCk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNl
dE5ld1dpbmRvd3NDb3B5QmFja0ZvcndhcmRMaXN0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRpb24KQEAgLTI0NTMsNiAr
MjQ2Niw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNG
dW5jdGlvbnMoKQogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25FcnJvciIsIHNldE1vY2tH
ZW9sb2NhdGlvbkVycm9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24iLCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbkNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgImFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCIsIGFkZE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNldE1vY2tTcGVlY2hJbnB1
dER1bXBSZWN0Iiwgc2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3RDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJzZXROZXdXaW5kb3dzQ29weUJhY2tGb3J3YXJkTGlzdCIsIHNldE5ld1dpbmRv
d3NDb3B5QmFja0ZvcndhcmRMaXN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0UGFn
ZVZpc2liaWxpdHkiLCBzZXRQYWdlVmlzaWJpbGl0eUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInNldFBPU0lYTG9jYWxlIiwgc2V0UE9TSVhMb2NhbGVDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggOWY0ZGI0OTgz
YTM3ZmIwMThiODI2YzFkOTdhYmU5ZWQ5ZGUyNmY0Ni4uNjYxN2NmZTI3YzUwZTY4ZjY5NDk5ZWYw
MmQzZTEyZDZkZjMxNTNlZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCkBAIC0xMDgsNiArMTA4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZvaWQg
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0
dWRlLCBkb3VibGUgYWNjdXJhY3kpOwogICAgIHZvaWQgYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0
KEpTU3RyaW5nUmVmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVuY2UsIEpTU3RyaW5nUmVmIGxhbmd1
YWdlKTsKKyAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KGJvb2wgZmxhZyk7CiAg
ICAgdm9pZCBzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBw
YXRoKTsKICAgICB2b2lkIHNldFBsdWdpbnNFbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBz
ZXRQb3B1cEJsb2NraW5nRW5hYmxlZChib29sIGZsYWcpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGY2OGUw
ZDg3MmFkMTJjMTYzYWE4NTA5Mzk0NDE3YzdmZmM3ZjM5NjMuLjUxNThlNDQyMjU0N2Q5MmRkZTU2
NTQ4ZWE5MjU1MDMyNDUwMTBjNDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTkwLDYgKzkwLDcgQEAgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwp
CiAgICAgLy8gYnkgQ3BwQm91bmRDbGFzcywgdGhlIHBhcmVudCB0byBMYXlvdXRUZXN0Q29udHJv
bGxlcikuCiAgICAgYmluZE1ldGhvZCgiYWRkRmlsZVRvUGFzdGVib2FyZE9uRHJhZyIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6YWRkRmlsZVRvUGFzdGVib2FyZE9uRHJhZyk7CiAgICAgYmluZE1l
dGhvZCgiYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjph
ZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOworICAgIGJpbmRNZXRob2QoInNldE1vY2tTcGVlY2hJ
bnB1dER1bXBSZWN0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRE
dW1wUmVjdCk7CiAgICAgYmluZE1ldGhvZCgiYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnki
LCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KTsK
ICAgICBiaW5kTWV0aG9kKCJhZGRVc2VyU2NyaXB0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjph
ZGRVc2VyU2NyaXB0KTsKICAgICBiaW5kTWV0aG9kKCJhZGRVc2VyU3R5bGVTaGVldCIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6YWRkVXNlclN0eWxlU2hlZXQpOwpAQCAtMTkyOSw2ICsxOTMwLDE2
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtCiAgICAgICAgIGNvbnRyb2xsZXItPmFkZE1vY2tS
ZWNvZ25pdGlvblJlc3VsdChjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzBdKSwgYXJn
dW1lbnRzWzFdLnRvRG91YmxlKCksIGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMl0p
KTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVt
cFJlY3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8
IDEgfHwgIWFyZ3VtZW50c1swXS5pc0Jvb2woKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2sqIGNvbnRyb2xsZXIgPSBtX3NoZWxsLT53ZWJW
aWV3SG9zdCgpLT5zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrKCkpCisgICAgICAgIGNvbnRyb2xs
ZXItPnNldER1bXBSZWN0KGFyZ3VtZW50c1swXS52YWx1ZS5ib29sVmFsdWUpOworfQorCiB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzdGFydFNwZWVjaElucHV0KGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXRO
dWxsKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAppbmRleCA2MDNiM2I5MmU0OWFkYjkxYmM4YTFkYWRlNmRlZmM1MzMzM2Vh
YmRhLi5kYWEwNTE1NzMyMjk0ZDgxMjQ5NjhkMWM0ODQwMTU4NDMzYzRjODg4IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgK
QEAgLTM4MCw2ICszODAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTcGVlY2ggaW5wdXQgcmVsYXRl
ZCBmdW5jdGlvbnMuCiAgICAgdm9pZCBhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0
RHVtcFJlY3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQg
c3RhcnRTcGVlY2hJbnB1dChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAK
ICAgICB2b2lkIGxheWVyVHJlZUFzVGV4dChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3MsIENw
cFZhcmlhbnQqIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwv
TGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0xh
eW91dFRlc3RDb250cm9sbGVyRWZsLmNwcAppbmRleCA4ZGQwYTM3Y2E1NDc5N2Q3YjgyOTFiMjE0
ZjVmYjU4ZjZkMGFlM2E3Li5iYmFlODJjYjIzYzE4ODY2ZDY4YTdiOTBkNGY1OGZhNGMxM2JkYTQ3
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xs
ZXJFZmwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJv
bGxlckVmbC5jcHAKQEAgLTM4OSw2ICszODksMTMgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmLCBkb3VibGUsIEpTU3RyaW4K
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChib29sKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzdGFydFNwZWVjaElucHV0KEpTQ29u
dGV4dFJlZiBpbnB1dEVsZW1lbnQpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3Bl
ZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDdjMTMzZmQzMGVkMDE5NDkxYjBk
YWYxNWNkYTliNzNjNDY5NTAyMDAuLmUyYmZjYTQ1NTdjZTM5NGI4NjgwOWJkYzk2M2MyZDdmNGE2
MTNlOTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RD
b250cm9sbGVyR3RrLmNwcApAQCAtNTI2LDYgKzUyNiwxMiBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBkb3Vi
bGUgYwogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mzk0ODUuCiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1
dER1bXBSZWN0KGJvb2wgZmxhZykKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVl
Y2ggaW5wdXQgbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnN0YXJ0U3BlZWNoSW5wdXQoSlNDb250ZXh0UmVmIGlucHV0RWxlbWVudCkKIHsKICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4
IDc4NGJjNjExNTE4YTU5ZWRkNGU5MDI0OGE5NTNiNThmM2YyOGZiYWYuLjRiYzQ4ZDI2NDljY2M2
NDMwZDc2YTI2OGIzM2JjYzQ4YzgzMDY5OTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTU0NSw2ICs1NDUsMTIgQEAg
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3Ry
aW5nUmVmIHJlc3VsdCwgZG91YmxlIGMKICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChib29sIGZsYWcpCit7CisgICAgLy8gRklYTUU6
IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgorfQorCiB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzdGFydFNwZWVjaElucHV0KEpTQ29udGV4dFJlZiBpbnB1dEVs
ZW1lbnQpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91
dCB0ZXN0cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5jcHAKaW5kZXggYTYwNTBjN2IyYTY4NTZiNzU1ODZmYjM2ZTBiZTFlOTIyOGVmMjVm
ZS4uNzIyYmY3NzBmZDM3MjBkYmIxYTFkNTkxNjcwOWM2OGI3ZmVhNGNjZCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKQEAgLTg5
OSw2ICs4OTksMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9ja1NwZWVjaElu
cHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCwgZG91YmwKICAgICAvLyBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgogfQogCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChib29sIGZsYWcpCit7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4K
KyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1
LgorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzdGFydFNwZWVjaElucHV0KGNvbnN0
IFFTdHJpbmcmIGlucHV0RWxlbWVudCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBz
cGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
TGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCmluZGV4IGI4NDJmZTRkZmY3OTlkODJiMmViYTk2ZTkz
OGZhZDgxYTBiYjY4NmQuLmE1NDNlNDUxOTNiNThjMDg3ZDM3NmQzOWIyM2FhMTVkZTY5YzZkODUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmgKQEAgLTIzNCw2ICsyMzQsNyBAQCBwdWJsaWMgc2xvdHM6CiAgICAgYm9vbCBnZW9sb2NhdGlv
blBlcm1pc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2dlb2xvY2F0aW9uUGVybWlzc2lvbjsgfQog
CiAgICAgdm9pZCBhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgUVN0cmluZyYgcmVzdWx0
LCBkb3VibGUgY29uZmlkZW5jZSwgY29uc3QgUVN0cmluZyYgbGFuZ3VhZ2UpOworICAgIHZvaWQg
c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QoYm9vbCBmbGFnKTsKICAgICB2b2lkIHN0YXJ0U3Bl
ZWNoSW5wdXQoY29uc3QgUVN0cmluZyYgaW5wdXRFbGVtZW50KTsKIAogICAgIC8vIEVtcHR5IHN0
dWIgbWV0aG9kIHRvIGtlZXAgcGFyaXR5IHdpdGggb2JqZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xv
YmFsIExheW91dFRlc3RDb250cm9sbGVyLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggMzhjOTg3NzYwYWRjNWE4MGM3
OGU2NWFjMmQyNTA0MzczNjQ4YTdkMS4uYzY5YzQ3NDlkNGJlZmI3MDJmMmVhOGMzNjk0ZWJlZTdm
NTE3Y2U4MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVz
dENvbnRyb2xsZXJXaW4uY3BwCkBAIC00NTAsNiArNDUwLDEyIEBAIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRv
dWJsZSBjCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zOTQ4NS4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElu
cHV0RHVtcFJlY3QoYm9vbCBmbGFnKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNw
ZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c3RhcnRTcGVlY2hJbnB1dChKU0NvbnRleHRSZWYgaW5wdXRFbGVtZW50KQogewogICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCmluZGV4
IGNmZDFmNmRkNmJhZTVjOTQzMjBkZjQ2OWEwMTk0ZWQ1NjQ1YjExYjIuLmIyZjdmYjQ3OWY2ZGYy
ODFmMWIwZDMzN2E3YWEwM2EzODhlZTA5ODMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCkBAIC0zNzYsNiArMzc2LDEyIEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmlu
Z1JlZiByZXN1bHQsIGRvdWJsZSBjCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QoYm9vbCBmbGFnKQoreworICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KK30KKwogdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c3RhcnRTcGVlY2hJbnB1dChKU0NvbnRleHRSZWYgaW5wdXRFbGVt
ZW50KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQg
dGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYzllMTYzM2I0YWEzMjVhMmM5MDlkYjU2N2JjOGFhZDMwYTQ2N2E0My4u
ODk2NTU1M2EzMWQ5N2VlNzdkNWJiMmUwZjUwNjQwMDY1ZGRmZmJjNiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDEyLTAxLTE4ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3BlZWNoIElucHV0OiBSZXBvcnQgc3BlZWNoIGVsZW1lbnQgcmVjdCByZWxhdGl2
ZSB0byB3aW5kb3cgcmF0aGVyIHRoYW4gZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IHRvIGNoZWNrIHRoYXQgdGhlIGVs
ZW1lbnQgcG9zaXRpb24gdXNlZCB3aGVuCisgICAgICAgIHJlcXVlc3Rpbmcgc3BlZWNoIGlucHV0
IGlzIHJlbGF0aXZlIHRvIHRoZSB3aW5kb3csIG5vdCB0aGUgZnJhbWUuCisKKyAgICAgICAgKiBm
YXN0L3NwZWVjaC9idWJibGUtcG9zaXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3NwZWVjaC9idWJibGUtcG9zaXRpb24uaHRtbDogQWRkZWQuCisKIDIwMTItMDEtMjAg
IEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBIQVIgcGFnZXJlZiBhdHRyaWJ1dGVzIGFyZSB3cm9uZyBhbmQgaW5jb25zaXN0ZW50
IHdpdGggcGFnZXMgYXJyYXkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2J1
YmJsZS1wb3NpdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9idWJi
bGUtcG9zaXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkYWI3NjA0MDMzYTNhZTIyYmZi
NjNmYTVmNjNlYzM0ZGMzZTAzYmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3NwZWVjaC9idWJibGUtcG9zaXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rl
c3RzIGZvciBzcGVlY2ggYnV0dG9uIGNsaWNrIHdpdGggPGlucHV0IHR5cGU9InRleHQiIHNwZWVj
aD4uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitDbGlja2luZyB0aGUgc3BlZWNo
IGJ1dHRvbi4KK29uU3BlZWNoQ2hhbmdlKCkKK1BBU1MgaW5wdXQudmFsdWUgPT09IGV4cGVjdGVk
U3RyaW5nIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9idWJibGUtcG9z
aXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2J1YmJsZS1wb3NpdGlvbi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgxNThhN2YxZjA4MzkyNDEwOWUzYjVjMDY2NTNmN2Y2N2QwMzg4NGIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9idWJibGUtcG9zaXRpb24u
aHRtbApAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3Igc3BlZWNoIGJ1dHRv
biBjbGljayB3aXRoICZsdDtpbnB1dCB0eXBlPSJ0ZXh0IiBzcGVlY2g+LicpOworCitmdW5jdGlv
biBvblNwZWVjaENoYW5nZSgpIHsKKyAgICBkZWJ1Zygib25TcGVlY2hDaGFuZ2UoKSIpOworCisg
ICAgLy8gU2luY2Ugd2UgcmVxdWVzdGVkIGR1bXBSZWN0LCB0aGUgcmVjdCBjb21lcyBiYWNrIGFz
IHRoZSBzcGVlY2ggcmVzdWx0LgorICAgIHdpbmRvdy5leHBlY3RlZFN0cmluZyA9IGV4cGVjdGVk
WCArICIsIiArIGV4cGVjdGVkWSArICIsIiArIGV4cGVjdGVkV2lkdGggKyAiLCIgKyBleHBlY3Rl
ZEhlaWdodDsKKyAgICBzaG91bGRCZVRydWUoImlucHV0LnZhbHVlID09PSBleHBlY3RlZFN0cmlu
ZyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBydW4oKSB7CisgICAgd2lu
ZG93LmlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZnJhbWUnKTsKKyAgICB3aW5k
b3cuaW5wdXQgPSBpZnJhbWUuY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7
CisgICAgaW5wdXQuc2V0QXR0cmlidXRlKCd4LXdlYmtpdC1zcGVlY2gnKTsKKyAgICBpbnB1dC5v
bndlYmtpdHNwZWVjaGNoYW5nZSA9IG9uU3BlZWNoQ2hhbmdlOworICAgIGlmcmFtZS5jb250ZW50
RG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXS5hcHBlbmRDaGlsZChpbnB1
dCk7CisKKyAgICB3aW5kb3cuZXhwZWN0ZWRXaWR0aCA9IGlucHV0LnNjcm9sbEhlaWdodDsKKyAg
ICB3aW5kb3cuZXhwZWN0ZWRIZWlnaHQgPSBpbnB1dC5zY3JvbGxIZWlnaHQ7CisgICAgd2luZG93
LmV4cGVjdGVkWCA9IGlmcmFtZS5vZmZzZXRMZWZ0ICsgaW5wdXQub2Zmc2V0TGVmdCArIGlucHV0
Lm9mZnNldFdpZHRoIC0gZXhwZWN0ZWRXaWR0aDsKKyAgICB3aW5kb3cuZXhwZWN0ZWRZID0gaWZy
YW1lLm9mZnNldFRvcCArIGlucHV0Lm9mZnNldFRvcCArIGlucHV0Lm9mZnNldEhlaWdodCAtIDE7
CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXRE
dW1wUmVjdCh0cnVlKTsKKworICAgICAgICBkZWJ1ZygnQ2xpY2tpbmcgdGhlIHNwZWVjaCBidXR0
b24uJyk7CisgICAgICAgIHZhciB4ID0gaW5wdXQub2Zmc2V0TGVmdCArIGlucHV0Lm9mZnNldFdp
ZHRoIC0gNDsKKyAgICAgICAgdmFyIHkgPSBpbnB1dC5vZmZzZXRUb3AgKyBpbnB1dC5vZmZzZXRI
ZWlnaHQgLyAyOworICAgICAgICB4ICs9IGlmcmFtZS5vZmZzZXRMZWZ0OworICAgICAgICB5ICs9
IGlmcmFtZS5vZmZzZXRUb3A7CisKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwg
eSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVVwKCk7CisgICAgfQorfQorCit3aW5kb3cub25sb2FkID0gcnVuOword2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8aWZyYW1lIGlkPSJpZnJhbWUiPgorPC9i
b2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124716</attachid>
            <date>2012-01-31 06:13:29 -0800</date>
            <delta_ts>2012-01-31 10:50:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76443-20120131141327.patch</filename>
            <type>text/plain</type>
            <size>23998</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJhODRjYmM4OWM0ODMw
MGRiNGY5OWM1Y2M5Njk1NDhjYzMzZDY0MS4uYmI5NDUxNWQyYzY2YzdkYmZlMmFiZTc3Y2QzYWQ1
MjdkMTEzNjEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAxLTMxICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElucHV0OiBS
ZXBvcnQgc3BlZWNoIGVsZW1lbnQgcmVjdCByZWxhdGl2ZSB0byB3aW5kb3cgcmF0aGVyIHRoYW4g
ZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
NDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biByZXF1ZXN0aW5nIHNwZWVjaCBpbnB1dCwgcmVwb3J0IHRoZSBzcGVlY2ggZWxlbWVudCByZWN0
IHJlbGF0aXZlCisgICAgICAgIHRvIHRoZSB3aW5kb3cgcmF0aGVyIHRoYW4gdGhlIGZyYW1lLiBU
aGUgZW1iZWRkZXIgd2lsbCB0eXBpY2FsbHkgdXNlCisgICAgICAgIHRoaXMgcG9zaXRpb24gdG8g
c2hvdyBhIGJ1YmJsZSBpbmRpY2F0aW5nIHRoYXQgc3BlZWNoIHJlY29nbml0aW9uIGlzCisgICAg
ICAgIGluIHByb2dyZXNzLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc3BlZWNoL2J1YmJsZS1wb3Np
dGlvbi5odG1sCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6
OnN0YXJ0U3BlZWNoSW5wdXQpOgorCiAyMDEyLTAxLTMxICBBbGV4ZWkgRmlsaXBwb3YgIDxhbGV4
ZWlmQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBzaG93IHNpemVzIGlu
IGJ5dGVzIGluc3RlYWQgb2YgS0IsIE1CIGluIGhlYXAgcHJvZmlsZXIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApp
bmRleCA2YWI5ZDFmNjZjYjRmZmIwMDc3NzdhNTk1OTg5YmFkZThhZWE4OGRiLi44MDhmZmEzMWVm
NzMzNzkwZjJiN2FkYmJmZDVhMDQxOTI2ZDY1MDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTM5LDYg
KzM5LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNp
bmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaCIKKyNpbmNsdWRlICJSZW5kZXJW
aWV3LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9sbGJh
clRoZW1lLmgiCiAjaW5jbHVkZSAiU3BlZWNoSW5wdXQuaCIKQEAgLTU0OSw3ICs1NTAsNyBAQCB2
b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpzdGFydFNwZWVjaElucHV0KCkKICAg
ICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UgPSBpbnB1dC0+Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdl
KCk7CiAgICAgU3RyaW5nIGdyYW1tYXIgPSBpbnB1dC0+Z2V0QXR0cmlidXRlKHdlYmtpdGdyYW1t
YXJBdHRyKTsKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgcHJvYmFibHkgcmVzcGVjdCB0cmFu
c2Zvcm1zCi0gICAgSW50UmVjdCByZWN0ID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKKyAgICBJbnRSZWN0IHJlY3QgPSByZW5kZXJlcigp
LT52aWV3KCktPmZyYW1lVmlldygpLT5jb250ZW50c1RvV2luZG93KHJlbmRlcmVyKCktPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkpOwogICAgIGlmIChzcGVlY2hJ
bnB1dCgpLT5zdGFydFJlY29nbml0aW9uKG1fbGlzdGVuZXJJZCwgcmVjdCwgbGFuZ3VhZ2UsIGdy
YW1tYXIsIGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICBzZXRTdGF0ZShS
ZWNvcmRpbmcpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDRlYTNkMmIyZjgxN2E5NTk3YzNkYzgzZWI0MDllNTk4N2JjY2NjNDMuLmUyYTgy
NGVlNjlkNjVjNDBlYWExNGViNDQ1MmI5YjljM2YzNmU4NWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMi0wMS0z
MSAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNwZWVjaCBJ
bnB1dDogUmVwb3J0IHNwZWVjaCBlbGVtZW50IHJlY3QgcmVsYXRpdmUgdG8gd2luZG93IHJhdGhl
ciB0aGFuIGZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NjQ0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZSBMYXlvdXRUZXN0Q29udHJvbGxlciB0byBhbGxvdyBmb3IgcmV0cmlldmluZyB0
aGUgc3BlZWNoCisgICAgICAgIGVsZW1lbnQncyBwb3NpdGlvbiB1c2VkIGluIGEgcmVxdWVzdC4K
KworICAgICAgICBJbiBDaHJvbWl1bSB0aGlzIGlzIGhhbmRsZWQgYnkgdGhlIE1vY2tXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXI7CisgICAgICAgIGFkZGluZyBzdHVicyBmb3IgdGhlIG90aGVyIGlt
cGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0Q2FsbGJhY2sp
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlcjo6
c2V0RHVtcFJlY3QpOgorICAgICAgICAoTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlcjo6Y2xl
YXJSZXN1bHRzKToKKyAgICAgICAgKE1vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI6OnN0YXJ0
UmVjb2duaXRpb24pOgorICAgICAgICAoTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlcjo6TW9j
a1dlYlNwZWVjaElucHV0Q29udHJvbGxlcik6CisgICAgICAgIChtYWtlUmVjdFJlc3VsdCk6Cisg
ICAgICAgIChNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjpzcGVlY2hUYXNrRmlyZWQpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKE1vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJl
Y3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1h
Yy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXRE
dW1wUmVjdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xs
ZXJRdC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElu
cHV0RHVtcFJlY3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuaDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDoKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdCk6CisK
IDIwMTItMDEtMjYgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBTcGVlY2ggSW5wdXQ6IG1vdmUgTW9ja1NwZWVjaElucHV0Q2xpZW50IGludG8gQ2hyb21pdW0g
RHVtcFJlbmRlclRyZWUgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCA2YzEzZDkzMDk0NmQ1MTlmNjA1NzkwN2Y1YzQw
ZGQ2MmZmNzUwYzk3Li5hZTExNjRlNWEyMDlmOTM2MjAyYzQ1MThiOGZhMDNmOTNlMzZkZDc4IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0x
MzU2LDYgKzEzNTYsMTkgQEAgc3RhdGljIEpTVmFsdWVSZWYgYWRkTW9ja1NwZWVjaElucHV0UmVz
dWx0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWMKICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldE1v
Y2tTcGVlY2hJbnB1dER1bXBSZWN0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRD
b3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgYm9vbCBkdW1wUmVjdCA9IEpTVmFsdWVUb0Jv
b2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzBdKTsKKworICAgIExheW91dFRlc3RDb250cm9sbGVy
KiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVj
dEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldE1vY2tTcGVlY2hJ
bnB1dER1bXBSZWN0KGR1bXBSZWN0KTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0TmV3V2luZG93c0NvcHlCYWNr
Rm9yd2FyZExpc3RDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAg
Ly8gSGFzIG1hYyBpbXBsZW1lbnRhdGlvbgpAQCAtMjQ1Myw2ICsyNDY2LDcgQEAgSlNTdGF0aWNG
dW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAg
IHsgInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3JDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsIHNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiYWRk
TW9ja1NwZWVjaElucHV0UmVzdWx0IiwgYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKKyAgICAgICAgeyAic2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QiLCBzZXRNb2Nr
U3BlZWNoSW5wdXREdW1wUmVjdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE5ld1dp
bmRvd3NDb3B5QmFja0ZvcndhcmRMaXN0Iiwgc2V0TmV3V2luZG93c0NvcHlCYWNrRm9yd2FyZExp
c3RDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRQYWdlVmlzaWJpbGl0eSIsIHNldFBh
Z2VWaXNpYmlsaXR5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0UE9TSVhMb2NhbGUi
LCBzZXRQT1NJWExvY2FsZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA5ZjRkYjQ5ODNhMzdmYjAxOGI4MjZjMWQ5N2Fi
ZTllZDlkZTI2ZjQ2Li42NjE3Y2ZlMjdjNTBlNjhmNjk0OTllZjAyZDNlMTJkNmRmMzE1M2VlIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTEwOCw2
ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQg
Y29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFj
eSk7CiAgICAgdm9pZCBhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0
LCBkb3VibGUgY29uZmlkZW5jZSwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UpOworICAgIHZvaWQgc2V0
TW9ja1NwZWVjaElucHV0RHVtcFJlY3QoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFBlcnNpc3Rl
bnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpOwogICAgIHZvaWQgc2V0
UGx1Z2luc0VuYWJsZWQoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFBvcHVwQmxvY2tpbmdFbmFi
bGVkKGJvb2wgZmxhZyk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMzc0ODBiMDY4N2U1MTQxMzEyMWU2NmJl
NGY2MzFmOWYyZDUzZTVhNi4uYjAzNDdjODUzNjBjNDJlMTRjZWY2YTgwY2FlMzYwMjE3MWM4OTY0
MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcApAQCAtOTEsNiArOTEsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
TGF5b3V0VGVzdENvbnRyb2xsZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICAvLyBieSBDcHBCb3Vu
ZENsYXNzLCB0aGUgcGFyZW50IHRvIExheW91dFRlc3RDb250cm9sbGVyKS4KICAgICBiaW5kTWV0
aG9kKCJhZGRGaWxlVG9QYXN0ZWJvYXJkT25EcmFnIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjph
ZGRGaWxlVG9QYXN0ZWJvYXJkT25EcmFnKTsKICAgICBiaW5kTWV0aG9kKCJhZGRNb2NrU3BlZWNo
SW5wdXRSZXN1bHQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJl
c3VsdCk7CisgICAgYmluZE1ldGhvZCgic2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QiLCAmTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KTsKICAgICBiaW5k
TWV0aG9kKCJhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOwogICAgIGJpbmRNZXRob2QoImFk
ZFVzZXJTY3JpcHQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQpOwogICAg
IGJpbmRNZXRob2QoImFkZFVzZXJTdHlsZVNoZWV0IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjph
ZGRVc2VyU3R5bGVTaGVldCk7CkBAIC0xOTM4LDYgKzE5MzksMTYgQEAgdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW0KICAgICAgICAgY29udHJvbGxlci0+YWRkTW9ja1JlY29nbml0aW9uUmVzdWx0KGNw
cFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0pLCBhcmd1bWVudHNbMV0udG9Eb3VibGUo
KSwgY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1syXSkpOwogfQogCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+
c2V0TnVsbCgpOworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBd
LmlzQm9vbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoTW9ja1dlYlNwZWVjaElucHV0
Q29udHJvbGxlciogY29udHJvbGxlciA9IG1fc2hlbGwtPndlYlZpZXdIb3N0KCktPnNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2soKSkKKyAgICAgICAgY29udHJvbGxlci0+c2V0RHVtcFJlY3QoYXJn
dW1lbnRzWzBdLnZhbHVlLmJvb2xWYWx1ZSk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnN0YXJ0U3BlZWNoSW5wdXQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENw
cFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4
IGUzN2ZmN2RkNzI4NTQwMmZmYjZkNjQwNWFjNWFkYTM2MDcyYmZiMDguLmE2ODZlODYwNTI5OGJj
NGI0NDhhYTBhOTkwYTFhNjMwYjFhOWIxNzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMzc3LDYgKzM3Nyw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIFNwZWVjaCBpbnB1dCByZWxhdGVkIGZ1bmN0aW9ucy4KICAgICB2
b2lkIGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7CisgICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzdGFydFNwZWVjaElucHV0KGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIHZvaWQgbGF5ZXJUcmVl
QXNUZXh0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0KTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dl
YlNwZWVjaElucHV0Q29udHJvbGxlci5jcHAKaW5kZXggY2IwYjA2NmQzNGE1OTQ2ZDRjNmU3MGI0
YTQ0NDQwNTk5MzQ0NTQ1OS4uMzUzNTdhODk3ZTgyMzUyMjE2ZTQzYjc5NTE4MTM3YzFmZmNiZjEz
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVj
aElucHV0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5jcHAKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lu
Y2x1ZGUgIldlYlNwZWVjaElucHV0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJD
U3RyaW5nLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtNTIsMTAgKzU0LDE2IEBAIHZvaWQgTW9ja1dl
YlNwZWVjaElucHV0Q29udHJvbGxlcjo6YWRkTW9ja1JlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdl
YlN0cmluZyYgcmVzCiAgICAgfQogfQogCit2b2lkIE1vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXI6OnNldER1bXBSZWN0KGJvb2wgZHVtcFJlY3QpCit7CisgICAgbV9kdW1wUmVjdCA9IGR1bXBS
ZWN0OworfQorCiB2b2lkIE1vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI6OmNsZWFyUmVzdWx0
cygpCiB7CiAgICAgbV9yZXN1bHRzRm9yRW1wdHlMYW5ndWFnZS5jbGVhcigpOwogICAgIG1fcmVj
b2duaXRpb25SZXN1bHRzLmNsZWFyKCk7CisgICAgbV9kdW1wUmVjdCA9IGZhbHNlOwogfQogCiBi
b29sIE1vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI6OnN0YXJ0UmVjb2duaXRpb24oaW50IHJl
cXVlc3RJZCwgY29uc3QgV2ViUmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFdlYlN0cmluZyYgbGFu
Z3VhZ2UsIGNvbnN0IFdlYlN0cmluZyYgZ3JhbW1hciwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4m
IG9yaWdpbikKQEAgLTY0LDYgKzcyLDcgQEAgYm9vbCBNb2NrV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyOjpzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlJlY3QKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9yZXF1ZXN0SWQgPSByZXF1ZXN0SWQ7CisgICAgbV9y
ZXF1ZXN0UmVjdCA9IGVsZW1lbnRSZWN0OwogICAgIG1fcmVjb3JkaW5nID0gdHJ1ZTsKICAgICBt
X2xhbmd1YWdlID0gU3RyaW5nOjpmcm9tVVRGOChsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKIApA
QCAtOTksOSArMTA4LDI5IEBAIE1vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI6Ok1vY2tXZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXIoV2ViU3BlZWNoSW5wdXRMaXN0ZW5lCiAgICAgLCBtX3NwZWVj
aFRhc2soMCkKICAgICAsIG1fcmVjb3JkaW5nKGZhbHNlKQogICAgICwgbV9yZXF1ZXN0SWQoLTEp
CisgICAgLCBtX2R1bXBSZWN0KGZhbHNlKQogewogfQogCitzdGF0aWMgV2ViU3BlZWNoSW5wdXRS
ZXN1bHRBcnJheSBtYWtlUmVjdFJlc3VsdChjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIFN0
cmluZ0J1aWxkZXIgc2I7CisgICAgc2IuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHJlY3QueCkpOwor
ICAgIHNiLmFwcGVuZCgiLCIpOworICAgIHNiLmFwcGVuZChTdHJpbmc6Om51bWJlcihyZWN0Lnkp
KTsKKyAgICBzYi5hcHBlbmQoIiwiKTsKKyAgICBzYi5hcHBlbmQoU3RyaW5nOjpudW1iZXIocmVj
dC53aWR0aCkpOworICAgIHNiLmFwcGVuZCgiLCIpOworICAgIHNiLmFwcGVuZChTdHJpbmc6Om51
bWJlcihyZWN0LmhlaWdodCkpOworCisgICAgV2ViU3BlZWNoSW5wdXRSZXN1bHQgcmVzOworICAg
IHJlcy5zZXQoV2ViU3RyaW5nKHNiLmNoYXJhY3RlcnMoKSwgc2IubGVuZ3RoKCkpLCAxLjApOwor
CisgICAgV2ViU3BlZWNoSW5wdXRSZXN1bHRBcnJheSByZXN1bHRzOworICAgIHJlc3VsdHMuYXNz
aWduKCZyZXMsIDEpOworICAgIHJldHVybiByZXN1bHRzOworfQorCiB2b2lkIE1vY2tXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXI6OnNwZWVjaFRhc2tGaXJlZCgpCiB7CiAgICAgaWYgKG1fcmVjb3Jk
aW5nKSB7CkBAIC0xMTcsOCArMTQ2LDEwIEBAIHZvaWQgTW9ja1dlYlNwZWVjaElucHV0Q29udHJv
bGxlcjo6c3BlZWNoVGFza0ZpcmVkKCkKICAgICAgICAgaW50IHJlcXVlc3RJZCA9IG1fcmVxdWVz
dElkOwogICAgICAgICBtX3JlcXVlc3RJZCA9IDA7CiAKLSAgICAgICAgLy8gRW1wdHkgbGFuZ3Vh
Z2UgY2FzZSBtdXN0IGJlIGhhbmRsZWQgc2VwYXJhdGVseSB0byBhdm9pZCBwcm9ibGVtcyB3aXRo
IEhhc2hNYXAgYW5kIGVtcHR5IGtleXMuCi0gICAgICAgIGlmIChtX2xhbmd1YWdlLmlzRW1wdHko
KSkgeworICAgICAgICBpZiAobV9kdW1wUmVjdCkgeworICAgICAgICAgICAgbV9saXN0ZW5lci0+
c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVzdElkLCBtYWtlUmVjdFJlc3VsdChtX3JlcXVlc3RS
ZWN0KSk7CisgICAgICAgIH0gZWxzZSBpZiAobV9sYW5ndWFnZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIC8vIEVtcHR5IGxhbmd1YWdlIGNhc2UgbXVzdCBiZSBoYW5kbGVkIHNlcGFyYXRlbHkg
dG8gYXZvaWQgcHJvYmxlbXMgd2l0aCBIYXNoTWFwIGFuZCBlbXB0eSBrZXlzLgogICAgICAgICAg
ICAgaWYgKCFtX3Jlc3VsdHNGb3JFbXB0eUxhbmd1YWdlLmlzRW1wdHkoKSkKICAgICAgICAgICAg
ICAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJlc3VsdChyZXF1ZXN0SWQsIG1fcmVzdWx0
c0ZvckVtcHR5TGFuZ3VhZ2UpOwogICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxl
ci5oCmluZGV4IDk2YWFkZmYxMGFiYzgxOGNjOGJhNWZmZTA0NTlhNzU1NzE3MTFjMjYuLjhkNzUx
OTYwMzkzZWIyZGYzOTc2YzAyMjUwZDFjN2M5MjhlMGFkZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogCiAjaW5j
bHVkZSAiVGFzay5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlJlY3QuaCIKICNpbmNsdWRlICJX
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXZWJTcGVlY2hJbnB1dFJlc3Vs
dC5oIgogI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgpAQCAtMzksNyArNDAsNiBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1zdHJ1Y3Qg
V2ViUmVjdDsKIGNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOwogY2xhc3MgV2ViU3BlZWNoSW5wdXRM
aXN0ZW5lcjsKIGNsYXNzIFdlYlN0cmluZzsKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBQYXNzT3duUHRyPE1vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI+IGNyZWF0ZShX
ZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqKTsKIAogICAgIHZvaWQgYWRkTW9ja1JlY29n
bml0aW9uUmVzdWx0KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiByZXN1bHQsIGRvdWJsZSBjb25m
aWRlbmNlLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgbGFuZ3VhZ2UpOworICAgIHZvaWQgc2V0
RHVtcFJlY3QoYm9vbCk7CiAgICAgdm9pZCBjbGVhclJlc3VsdHMoKTsKIAogICAgIC8vIFdlYlNw
ZWVjaElucHV0Q29udHJvbGxlciBpbXBsZW1lbnRhdGlvbjoKQEAgLTc5LDEwICs4MCwxMiBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBtX3JlY29yZGluZzsKICAgICBpbnQgbV9yZXF1ZXN0SWQ7Cisg
ICAgV2ViS2l0OjpXZWJSZWN0IG1fcmVxdWVzdFJlY3Q7CiAgICAgU3RyaW5nIG1fbGFuZ3VhZ2U7
CiAKICAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFdlYktpdDo6V2ViU3BlZWNoSW5wdXRSZXN1
bHQ+ID4gbV9yZWNvZ25pdGlvblJlc3VsdHM7CiAgICAgVmVjdG9yPFdlYktpdDo6V2ViU3BlZWNo
SW5wdXRSZXN1bHQ+IG1fcmVzdWx0c0ZvckVtcHR5TGFuZ3VhZ2U7CisgICAgYm9vbCBtX2R1bXBS
ZWN0OwogfTsKIAogI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9TUEVFQ0gpCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcAppbmRleCA4
ZGQwYTM3Y2E1NDc5N2Q3YjgyOTFiMjE0ZjVmYjU4ZjZkMGFlM2E3Li5iYmFlODJjYjIzYzE4ODY2
ZDY4YTdiOTBkNGY1OGZhNGMxM2JkYTQ3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2VmbC9MYXlvdXRUZXN0Q29udHJvbGxlckVmbC5jcHAKQEAgLTM4OSw2ICszODksMTMgQEAg
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3Ry
aW5nUmVmLCBkb3VibGUsIEpTU3RyaW4KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChib29sKQor
eworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMu
CisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4
NS4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzdGFydFNwZWVjaElucHV0KEpTQ29udGV4dFJlZiBpbnB1dEVsZW1lbnQpCiB7CiAgICAgLy8g
RklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmlu
ZGV4IDc1NDUwMTA3MzA2OGU5YTE4MzQyZWU0MGRlNjQ2NWEzZDEyMDI5N2IuLjg3ZWNkZDA1ZTFj
NWVhZmM3M2IyNjEzMzI1NTE3ZjNjZWJiYzY3MzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtNTI2LDYgKzUyNiwx
MiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQo
SlNTdHJpbmdSZWYgcmVzdWx0LCBkb3VibGUgYwogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KGJvb2wgZmxhZykKK3sKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgorICAgIC8vIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCit9CisKIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXJ0U3BlZWNoSW5wdXQoSlNDb250ZXh0UmVmIGlu
cHV0RWxlbWVudCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQg
bGF5b3V0IHRlc3RzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRl
c3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDc4NGJjNjExNTE4YTU5ZWRkNGU5MDI0OGE5NTNiNThm
M2YyOGZiYWYuLjRiYzQ4ZDI2NDljY2M2NDMwZDc2YTI2OGIzM2JjYzQ4YzgzMDY5OTcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0KQEAgLTU0NSw2ICs1NDUsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkTW9j
a1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgZG91YmxlIGMKICAgICAvLyBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgogfQogCit2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChib29s
IGZsYWcpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3BlZWNoIGlucHV0IGxheW91
dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM5NDg1LgorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzdGFydFNwZWVjaElu
cHV0KEpTQ29udGV4dFJlZiBpbnB1dEVsZW1lbnQpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBmb3Igc3BlZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKaW5kZXggYTYwNTBjN2IyYTY4NTZi
NzU1ODZmYjM2ZTBiZTFlOTIyOGVmMjVmZS4uNzIyYmY3NzBmZDM3MjBkYmIxYTFkNTkxNjcwOWM2
OGI3ZmVhNGNjZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5jcHAKQEAgLTg5OSw2ICs4OTksMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCwg
ZG91YmwKICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM5NDg1LgogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrU3BlZWNoSW5w
dXREdW1wUmVjdChib29sIGZsYWcpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igc3Bl
ZWNoIGlucHV0IGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM5NDg1LgorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzdGFydFNwZWVjaElucHV0KGNvbnN0IFFTdHJpbmcmIGlucHV0RWxlbWVudCkKIHsKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2ggaW5wdXQgbGF5b3V0IHRlc3RzLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCmluZGV4IGI4
NDJmZTRkZmY3OTlkODJiMmViYTk2ZTkzOGZhZDgxYTBiYjY4NmQuLmE1NDNlNDUxOTNiNThjMDg3
ZDM3NmQzOWIyM2FhMTVkZTY5YzZkODUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKQEAgLTIzNCw2ICsyMzQsNyBAQCBwdWJsaWMgc2xv
dHM6CiAgICAgYm9vbCBnZW9sb2NhdGlvblBlcm1pc3Npb24oKSBjb25zdCB7IHJldHVybiBtX2dl
b2xvY2F0aW9uUGVybWlzc2lvbjsgfQogCiAgICAgdm9pZCBhZGRNb2NrU3BlZWNoSW5wdXRSZXN1
bHQoY29uc3QgUVN0cmluZyYgcmVzdWx0LCBkb3VibGUgY29uZmlkZW5jZSwgY29uc3QgUVN0cmlu
ZyYgbGFuZ3VhZ2UpOworICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QoYm9vbCBm
bGFnKTsKICAgICB2b2lkIHN0YXJ0U3BlZWNoSW5wdXQoY29uc3QgUVN0cmluZyYgaW5wdXRFbGVt
ZW50KTsKIAogICAgIC8vIEVtcHR5IHN0dWIgbWV0aG9kIHRvIGtlZXAgcGFyaXR5IHdpdGggb2Jq
ZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFsIExheW91dFRlc3RDb250cm9sbGVyLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAK
aW5kZXggMzhjOTg3NzYwYWRjNWE4MGM3OGU2NWFjMmQyNTA0MzczNjQ4YTdkMS4uYzY5YzQ3NDlk
NGJlZmI3MDJmMmVhOGMzNjk0ZWJlZTdmNTE3Y2U4MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC00NTAsNiArNDUw
LDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBjCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KIH0KIAordm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QoYm9vbCBmbGFnKQoreworICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCisgICAgLy8g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KK30KKwog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhcnRTcGVlY2hJbnB1dChKU0NvbnRleHRSZWYg
aW5wdXRFbGVtZW50KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1
dCBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlv
dXRUZXN0Q29udHJvbGxlcld4LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRl
c3RDb250cm9sbGVyV3guY3BwCmluZGV4IGNmZDFmNmRkNmJhZTVjOTQzMjBkZjQ2OWEwMTk0ZWQ1
NjQ1YjExYjIuLmIyZjdmYjQ3OWY2ZGYyODFmMWIwZDMzN2E3YWEwM2EzODhlZTA5ODMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3Bw
CkBAIC0zNzYsNiArMzc2LDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZE1vY2tT
cGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBjCiAgICAgLy8gU2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KIH0KIAordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QoYm9vbCBm
bGFnKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQg
dGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zOTQ4NS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhcnRTcGVlY2hJbnB1
dChKU0NvbnRleHRSZWYgaW5wdXRFbGVtZW50KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
Zm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmQyMzc3MGEzM2QwMDRlNzBk
MWFhOWE2ZjVkMjNmNmNhYmYzYjczNS4uY2YxNmZjNTdmNDNkMzFkMGRjNDdlMTMyNDRiYTZkNDU4
ZTNiNzkyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAxLTMxICBIYW5zIFdlbm5ib3Jn
ICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlZWNoIElucHV0OiBSZXBvcnQgc3Bl
ZWNoIGVsZW1lbnQgcmVjdCByZWxhdGl2ZSB0byB3aW5kb3cgcmF0aGVyIHRoYW4gZnJhbWUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NDQzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGxheW91dCB0
ZXN0IHRvIGNoZWNrIHRoYXQgdGhlIGVsZW1lbnQgcG9zaXRpb24gdXNlZCB3aGVuCisgICAgICAg
IHJlcXVlc3Rpbmcgc3BlZWNoIGlucHV0IGlzIHJlbGF0aXZlIHRvIHRoZSB3aW5kb3csIG5vdCB0
aGUgZnJhbWUuCisKKyAgICAgICAgKiBmYXN0L3NwZWVjaC9idWJibGUtcG9zaXRpb24tZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaC9idWJibGUtcG9zaXRpb24uaHRt
bDogQWRkZWQuCisKIDIwMTItMDEtMzEgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29t
PgogCiAgICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdlZCB0ZXN0IGV4cGVjdGF0aW9uIGNoYW5n
ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2J1YmJsZS1wb3NpdGlvbi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9idWJibGUtcG9zaXRpb24tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkYWI3NjA0MDMzYTNhZTIyYmZiNjNmYTVmNjNlYzM0ZGMz
ZTAzYmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9idWJibGUt
cG9zaXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIGZvciBzcGVlY2gg
YnV0dG9uIGNsaWNrIHdpdGggPGlucHV0IHR5cGU9InRleHQiIHNwZWVjaD4uCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitDbGlja2luZyB0aGUgc3BlZWNoIGJ1dHRvbi4KK29uU3Bl
ZWNoQ2hhbmdlKCkKK1BBU1MgaW5wdXQudmFsdWUgPT09IGV4cGVjdGVkU3RyaW5nIGlzIHRydWUK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9idWJibGUtcG9zaXRpb24uaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3Qvc3BlZWNoL2J1YmJsZS1wb3NpdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgx
NThhN2YxZjA4MzkyNDEwOWUzYjVjMDY2NTNmN2Y2N2QwMzg4NGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaC9idWJibGUtcG9zaXRpb24uaHRtbApAQCAtMCwwICsx
LDUzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0cyBmb3Igc3BlZWNoIGJ1dHRvbiBjbGljayB3aXRoICZs
dDtpbnB1dCB0eXBlPSJ0ZXh0IiBzcGVlY2g+LicpOworCitmdW5jdGlvbiBvblNwZWVjaENoYW5n
ZSgpIHsKKyAgICBkZWJ1Zygib25TcGVlY2hDaGFuZ2UoKSIpOworCisgICAgLy8gU2luY2Ugd2Ug
cmVxdWVzdGVkIGR1bXBSZWN0LCB0aGUgcmVjdCBjb21lcyBiYWNrIGFzIHRoZSBzcGVlY2ggcmVz
dWx0LgorICAgIHdpbmRvdy5leHBlY3RlZFN0cmluZyA9IGV4cGVjdGVkWCArICIsIiArIGV4cGVj
dGVkWSArICIsIiArIGV4cGVjdGVkV2lkdGggKyAiLCIgKyBleHBlY3RlZEhlaWdodDsKKyAgICBz
aG91bGRCZVRydWUoImlucHV0LnZhbHVlID09PSBleHBlY3RlZFN0cmluZyIpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBydW4oKSB7CisgICAgd2luZG93LmlmcmFtZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZnJhbWUnKTsKKyAgICB3aW5kb3cuaW5wdXQgPSBpZnJh
bWUuY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgaW5wdXQuc2V0
QXR0cmlidXRlKCd4LXdlYmtpdC1zcGVlY2gnKTsKKyAgICBpbnB1dC5vbndlYmtpdHNwZWVjaGNo
YW5nZSA9IG9uU3BlZWNoQ2hhbmdlOworICAgIGlmcmFtZS5jb250ZW50RG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXS5hcHBlbmRDaGlsZChpbnB1dCk7CisKKyAgICB3aW5k
b3cuZXhwZWN0ZWRXaWR0aCA9IGlucHV0LnNjcm9sbEhlaWdodDsKKyAgICB3aW5kb3cuZXhwZWN0
ZWRIZWlnaHQgPSBpbnB1dC5zY3JvbGxIZWlnaHQ7CisgICAgd2luZG93LmV4cGVjdGVkWCA9IGlm
cmFtZS5vZmZzZXRMZWZ0ICsgaW5wdXQub2Zmc2V0TGVmdCArIGlucHV0Lm9mZnNldFdpZHRoIC0g
ZXhwZWN0ZWRXaWR0aDsKKyAgICB3aW5kb3cuZXhwZWN0ZWRZID0gaWZyYW1lLm9mZnNldFRvcCAr
IGlucHV0Lm9mZnNldFRvcCArIGlucHV0Lm9mZnNldEhlaWdodCAtIDE7CisKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdCh0cnVlKTsK
KworICAgICAgICBkZWJ1ZygnQ2xpY2tpbmcgdGhlIHNwZWVjaCBidXR0b24uJyk7CisgICAgICAg
IHZhciB4ID0gaW5wdXQub2Zmc2V0TGVmdCArIGlucHV0Lm9mZnNldFdpZHRoIC0gNDsKKyAgICAg
ICAgdmFyIHkgPSBpbnB1dC5vZmZzZXRUb3AgKyBpbnB1dC5vZmZzZXRIZWlnaHQgLyAyOworICAg
ICAgICB4ICs9IGlmcmFtZS5vZmZzZXRMZWZ0OworICAgICAgICB5ICs9IGlmcmFtZS5vZmZzZXRU
b3A7CisKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cisg
ICAgfQorfQorCit3aW5kb3cub25sb2FkID0gcnVuOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8aWZyYW1lIGlkPSJpZnJhbWUiPgorPC9ib2R5PgorPC9odG1sPgor
Cg==
</data>
<flag name="review"
          id="126047"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>