<?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>72010</bug_id>
          <alias>VibrationAPI</alias>
          <creation_ts>2011-11-10 03:39:10 -0800</creation_ts>
          <short_desc>Support for Vibration API</short_desc>
          <delta_ts>2012-04-19 14:46:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.w3.org/TR/2012/WD-vibration-20120202/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>78085</dependson>
    
    <dependson>78210</dependson>
          <blocked>78947</blocked>
    
    <blocked>84386</blocked>
    
    <blocked>75156</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kihong Kwon">kihong.kwon</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ahf</cc>
    
    <cc>anssi.kostiainen</cc>
    
    <cc>dglazkov</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>efidler</cc>
    
    <cc>gmak</cc>
    
    <cc>haraken</cc>
    
    <cc>kenneth</cc>
    
    <cc>kevin.cs.oh</cc>
    
    <cc>michelangelo</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>robin</cc>
    
    <cc>sangseok.lim</cc>
    
    <cc>s.choi</cc>
    
    <cc>scottmg</cc>
    
    <cc>sh9.choi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>vimff0</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wonsuk11.lee</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>499765</commentid>
    <comment_count>0</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-11-10 03:39:10 -0800</bug_when>
    <thetext>I&apos;d like to add the Vibration API spec to the WebKit.
This is a first basic patch.
I&apos;m going to finish this patch ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499780</commentid>
    <comment_count>1</comment_count>
      <attachid>114467</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-11-10 04:05:26 -0800</bug_when>
    <thetext>Created attachment 114467
Core part for the Vibration API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499783</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-10 04:07:56 -0800</bug_when>
    <thetext>Attachment 114467 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/page/Navigator.cpp:296:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499858</commentid>
    <comment_count>3</comment_count>
      <attachid>114467</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-11-10 06:41:28 -0800</bug_when>
    <thetext>Comment on attachment 114467
Core part for the Vibration API

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Add a new API for the Vibration API(W3C)
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=72010
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Test will be added after finishing.
&gt; +

Please refer to the spec

&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:65
&gt; +#if ENABLE(VIBRATION)

Maybe this should be USE, ask abarth on irc.

&gt; Source/WebCore/page/Navigator.cpp:295
&gt; +    for (int i = 0; i &lt; (int)pattern.size(); i++)

We usually avoid C casts, why is this needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499983</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-10 09:10:55 -0800</bug_when>
    <thetext>&gt; Maybe this should be USE, ask abarth on irc.

ENABLE is correct.  This is a web-facing feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499986</commentid>
    <comment_count>5</comment_count>
      <attachid>114467</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-10 09:14:02 -0800</bug_when>
    <thetext>Comment on attachment 114467
Core part for the Vibration API

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

This patch is missing tests.  At this point, we just need basic tests for showing that the API exists and you can call it (not necessarily that it does anything).

&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:66
&gt; +JSValue JSNavigator::webkitVibrate(ExecState* exec)

This shouldn&apos;t need custom bindings.

&gt; Source/WebCore/page/Navigator.h:29
&gt; +typedef Vector&lt;long, 1&gt; VibrationArray;

Why have an inline capacity of 1?

&gt; Source/WebCore/page/Navigator.idl:64
&gt; +#if defined(ENABLE_VIBRATION) &amp;&amp; ENABLE_VIBRATION
&gt; +        [Custom] void webkitVibrate(in [Optional=CallWithDefaultValue] Array pattern)
&gt; +            raises(DOMException);
&gt; +#endif

This API shouldn&apos;t be custom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505540</commentid>
    <comment_count>6</comment_count>
      <attachid>115748</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-11-17 23:42:43 -0800</bug_when>
    <thetext>Created attachment 115748
Add to support array, int and null parameter for Vibration API. Ex) vibrate([1000, 500, 2000]), vibrate(1000), vibrate([]), vibrate(0), vibrate()...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505544</commentid>
    <comment_count>7</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-11-17 23:46:22 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 114467 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114467&amp;action=review
&gt; 
&gt; This patch is missing tests.  At this point, we just need basic tests for showing that the API exists and you can call it (not necessarily that it does anything).
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:66
&gt; &gt; +JSValue JSNavigator::webkitVibrate(ExecState* exec)
&gt; 
&gt; This shouldn&apos;t need custom bindings.
&gt; 
&gt; &gt; Source/WebCore/page/Navigator.h:29
&gt; &gt; +typedef Vector&lt;long, 1&gt; VibrationArray;
&gt; 
&gt; Why have an inline capacity of 1?

Deleted.
Vector&lt;long&gt; is right.

&gt; 
&gt; &gt; Source/WebCore/page/Navigator.idl:64
&gt; &gt; +#if defined(ENABLE_VIBRATION) &amp;&amp; ENABLE_VIBRATION
&gt; &gt; +        [Custom] void webkitVibrate(in [Optional=CallWithDefaultValue] Array pattern)
&gt; &gt; +            raises(DOMException);
&gt; &gt; +#endif
&gt; 
&gt; This API shouldn&apos;t be custom.

I&apos;m not sure but I think there is no way to support the JSArray type without custom.
If there is, could recommend me please?

Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505816</commentid>
    <comment_count>8</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-18 08:31:30 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; I&apos;m not sure but I think there is no way to support the JSArray type without custom.
&gt; If there is, could recommend me please?

Maybe it wouldn&apos;t be too difficult to extend the binding generator code? I recently did this for V8 to add float[] and double[] returns. https://bugs.webkit.org/show_bug.cgi?id=71763 I&apos;m not sure about JSC though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519968</commentid>
    <comment_count>9</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-13 02:16:41 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; I&apos;m not sure but I think there is no way to support the JSArray type without custom.
&gt; &gt; If there is, could recommend me please?
&gt; 
&gt; Maybe it wouldn&apos;t be too difficult to extend the binding generator code? I recently did this for V8 to add float[] and double[] returns. https://bugs.webkit.org/show_bug.cgi?id=71763 I&apos;m not sure about JSC though.

I think these issue can be handled with another bug~~:)
Thank you for your comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521712</commentid>
    <comment_count>10</comment_count>
      <attachid>119388</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-15 00:14:37 -0800</bug_when>
    <thetext>Created attachment 119388
WebCore patch for the vibration API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521729</commentid>
    <comment_count>11</comment_count>
      <attachid>119395</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-15 01:03:00 -0800</bug_when>
    <thetext>Created attachment 119395
Patch for the vibration API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526099</commentid>
    <comment_count>12</comment_count>
      <attachid>120289</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-22 01:39:58 -0800</bug_when>
    <thetext>Created attachment 120289
Patch for the vibration API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526721</commentid>
    <comment_count>13</comment_count>
      <attachid>120432</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-22 20:47:55 -0800</bug_when>
    <thetext>Created attachment 120432
Patch for the vibration API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526807</commentid>
    <comment_count>14</comment_count>
      <attachid>120432</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-12-23 03:27:19 -0800</bug_when>
    <thetext>Comment on attachment 120432
Patch for the vibration API

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

Can&apos;t you create a mock object so that you can actually test this? Also shouldn&apos;t the user grand rights to the web site in order for it to allow vibrating? Just like geolocation, notifications etc?

&gt; Source/WebCore/page/VibratorClient.h:27
&gt; +    virtual void vibrate(const long&amp; time) = 0;

Did you consider how this will work together with suspension?

&gt; Source/WebCore/page/VibratorClient.h:28
&gt; +    virtual void cancelVibrate() = 0;

cancelVibration?

&gt; Source/WebCore/page/VibratorClient.h:30
&gt; +    virtual bool isSupport() = 0;

This shoulds weird in English. I dont think geolocation/devicemotion etc has such a method, but then again you dont delegate things to them

&gt; Source/WebCore/page/VibratorClient.h:31
&gt; +    virtual void destroyed() = 0;

Isnt this called something else in geolocation etc?

&gt; Tools/ChangeLog:9
&gt; +        No new tests.

Then tell why</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527254</commentid>
    <comment_count>15</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-26 18:49:26 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 120432 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=120432&amp;action=review
&gt; 
&gt; Can&apos;t you create a mock object so that you can actually test this? Also shouldn&apos;t the user grand rights to the web site in order for it to allow vibrating? Just like geolocation, notifications etc?
&gt; 

There are no callback and return value for this.
So, if I make a test case for this, I think I have to make this way.
-----------------------------------------------------------------------------------------------------------------------------------------
...
layoutTestController.setMockVibration([1000 500 2000]);
navigator.vibrate([1000, 500, 2000]);
if (layoutTestController.checkVibration())
    testPassed(&quot;...&quot;);
else
    testFailed(&quot;...&quot;);
...
-----------------------------------------------------------------------------------------------------------------------------------------
But, I can&apos;t see a test case like this.
Is this meaningful?

There is no permission things in the spec. 
I agree with the vibration doesn&apos;t need to get a permission, because it is not a privacy feature and it can be operated on the visible page only.
It makes the process more complicated.
Do you think procedure to get a permission is needed for vibration?

&gt; &gt; Source/WebCore/page/VibratorClient.h:27
&gt; &gt; +    virtual void vibrate(const long&amp; time) = 0;
&gt; 
&gt; Did you consider how this will work together with suspension?
&gt; 
&gt; &gt; Source/WebCore/page/VibratorClient.h:28
&gt; &gt; +    virtual void cancelVibrate() = 0;
&gt; 
&gt; cancelVibration?
&gt; 
&gt; &gt; Source/WebCore/page/VibratorClient.h:30
&gt; &gt; +    virtual bool isSupport() = 0;
&gt; 
&gt; This shoulds weird in English. I dont think geolocation/devicemotion etc has such a method, but then again you dont delegate things to them
&gt;
&gt; &gt; Source/WebCore/page/VibratorClient.h:31
&gt; &gt; +    virtual void destroyed() = 0;
&gt; 
&gt; Isnt this called something else in geolocation etc?
&gt; 
&gt; &gt; Tools/ChangeLog:9
&gt; &gt; +        No new tests.
&gt; 
&gt; Then tell why</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527853</commentid>
    <comment_count>16</comment_count>
      <attachid>120722</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-29 00:48:47 -0800</bug_when>
    <thetext>Created attachment 120722
Add suspend/resume method and test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527856</commentid>
    <comment_count>17</comment_count>
      <attachid>120722</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-29 01:32:02 -0800</bug_when>
    <thetext>Comment on attachment 120722
Add suspend/resume method and test case.

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

New failing tests:
fast/dom/navigator-vibrationAPI.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527861</commentid>
    <comment_count>18</comment_count>
      <attachid>120726</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2011-12-29 02:20:32 -0800</bug_when>
    <thetext>Created attachment 120726
Add skip test statement for the chromium port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530175</commentid>
    <comment_count>19</comment_count>
      <attachid>121257</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-05 04:10:05 -0800</bug_when>
    <thetext>Created attachment 121257
Tidy code up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536399</commentid>
    <comment_count>20</comment_count>
      <attachid>121257</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-16 00:36:20 -0800</bug_when>
    <thetext>Comment on attachment 121257
Tidy code up.

r- because It looks the patch is no longer applicable to ToT.
I think this is a perfect example of adopting Module/ system.
You can follow what Intents and Gamepad is doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536409</commentid>
    <comment_count>21</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-01-16 00:51:37 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 121257 [details])
&gt; r- because It looks the patch is no longer applicable to ToT.
&gt; I think this is a perfect example of adopting Module/ system.
&gt; You can follow what Intents and Gamepad is doing.

By using the [Supplemental] IDL, I think that you can make this change without touching WebCore/page/Navigator.{h,cpp,idl} at all.

[1] Create WebCore/Modules/Vibrator/.

[2] Write WebCore/Modules/Vibrator/NavigatorVibrator.idl, like this:

interface [Conditional=VIBRATOR, Supplemental=Navigator]
NavigatorVibrator
{
    [Custom] void webkitVibrate(in Array pattern) raises(DOMException);
}

[3] Write WebCore/Modules/Vibrator/NavigatorVibrator.{h,cpp}, which includes the change you&apos;ve made on Navigator.{h,cpp}

[4] Move WebCore/page/Vibrator.{h,cpp} and WebCore/page/VibratorClient.h to WebCore/Modules/Vibrator/.


You can find similar examples here:
https://bugs.webkit.org/attachment.cgi?id=121938&amp;action=review
https://bugs.webkit.org/show_bug.cgi?id=76092</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542945</commentid>
    <comment_count>22</comment_count>
      <attachid>124075</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-26 01:12:21 -0800</bug_when>
    <thetext>Created attachment 124075
Add NavigatorVibration class and move vibration files to the Modules dir.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543177</commentid>
    <comment_count>23</comment_count>
      <attachid>124075</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-01-26 08:59:18 -0800</bug_when>
    <thetext>Comment on attachment 124075
Add NavigatorVibration class and move vibration files to the Modules dir.

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

&gt; LayoutTests/ChangeLog:8
&gt; +        * fast/dom/navigator-vibration.html: Added.

fast/dom/navigator-vibration-expected.txt is missing?

&gt; Source/WebCore/ChangeLog:9
&gt; +        http://dev.w3.org/2009/dap/vibration/
&gt; +        Test: fast/dom/navigator-vibration.html

I would like to see more explanations about this change.

&gt; Source/WebCore/ChangeLog:11
&gt; +        * CMakeLists.txt:

Here you can also add explanations for each file (if you want).

&gt; Source/WebCore/Modules/vibration/NavigatorVibration.cpp:2
&gt; + *  Copyright (C) 2011 Samsung Electronics

2012?

&gt; Source/WebCore/Modules/vibration/NavigatorVibration.cpp:56
&gt; +    ec = 0;

This may be unnecessary.

&gt; Source/WebCore/Modules/vibration/NavigatorVibration.h:2
&gt; + *  Copyright (C) 2011 Samsung Electronics

2012?

&gt; Source/WebCore/Modules/vibration/NavigatorVibration.idl:2
&gt; + *  Copyright (C) 2011 Samsung Electronics

2012?

&gt; Source/WebCore/Modules/vibration/NavigatorVibration.idl:26
&gt; +        [Custom] void webkitVibrate(in Int32Array pattern) raises(DOMException);

Please use [JSCCustom] instead of [Custom], since you support JSC only.

&gt; Source/WebCore/Modules/vibration/Vibration.h:2
&gt; + *  Copyright (C) 2011 Samsung Electronics

2012?

&gt; Source/WebCore/Modules/vibration/VibrationClient.h:2
&gt; + *  Copyright (C) 2011 Samsung Electronics

2012?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543835</commentid>
    <comment_count>24</comment_count>
      <attachid>124075</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-26 22:21:11 -0800</bug_when>
    <thetext>Comment on attachment 124075
Add NavigatorVibration class and move vibration files to the Modules dir.

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

&gt;&gt; LayoutTests/ChangeLog:8
&gt;&gt; +        * fast/dom/navigator-vibration.html: Added.
&gt; 
&gt; fast/dom/navigator-vibration-expected.txt is missing?

Yes. It will be added

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        Test: fast/dom/navigator-vibration.html
&gt; 
&gt; I would like to see more explanations about this change.

OK.

&gt;&gt; Source/WebCore/ChangeLog:11
&gt;&gt; +        * CMakeLists.txt:
&gt; 
&gt; Here you can also add explanations for each file (if you want).

OK.

&gt;&gt; Source/WebCore/Modules/vibration/NavigatorVibration.cpp:56
&gt;&gt; +    ec = 0;
&gt; 
&gt; This may be unnecessary.

You are right.

&gt;&gt; Source/WebCore/Modules/vibration/NavigatorVibration.h:2
&gt;&gt; + *  Copyright (C) 2011 Samsung Electronics
&gt; 
&gt; 2012?

OK.

&gt;&gt; Source/WebCore/Modules/vibration/NavigatorVibration.idl:26
&gt;&gt; +        [Custom] void webkitVibrate(in Int32Array pattern) raises(DOMException);
&gt; 
&gt; Please use [JSCCustom] instead of [Custom], since you support JSC only.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543841</commentid>
    <comment_count>25</comment_count>
      <attachid>124263</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-26 22:27:00 -0800</bug_when>
    <thetext>Created attachment 124263
Modify for the comment #23</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543854</commentid>
    <comment_count>26</comment_count>
      <attachid>124263</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-26 23:24:39 -0800</bug_when>
    <thetext>Comment on attachment 124263
Modify for the comment #23

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

New failing tests:
fast/dom/navigator-vibration.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543866</commentid>
    <comment_count>27</comment_count>
      <attachid>124267</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-27 00:29:20 -0800</bug_when>
    <thetext>Created attachment 124267
Add test case for ignoring for cr-linux.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543868</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-27 00:31:19 -0800</bug_when>
    <thetext>Attachment 124267 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

LayoutTests/platform/chromium/test_expectations.txt:108:  Path does not exist. fast/dom/navigator-vibrationAPI.html  [test/expectations] [2]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543875</commentid>
    <comment_count>29</comment_count>
      <attachid>124267</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-01-27 01:05:59 -0800</bug_when>
    <thetext>Comment on attachment 124267
Add test case for ignoring for cr-linux.

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

Actually I am not familiar with the Vibration API and cannot review the implementation of the Vibration API (Modules/vibration/*, page/* and bindings/js/JSNavigatorCustom.cpp). Could anyone review it?

&gt; LayoutTests/ChangeLog:10
&gt; +        * platform/chromium/test_expectations.txt:

You need to add similar test_expectations.txt for AppleWebKit, AppleWin, GTK, QT, etc.

&gt; LayoutTests/fast/dom/navigator-vibration.html:22
&gt; +try {
&gt; +    navigator.webkitVibrate(1000);
&gt; +    navigator.webkitVibrate([1000, 300, 500]);
&gt; +}
&gt; +catch (e) {
&gt; +    exceptionCodeForVibrate = e.code;
&gt; +}
&gt; +
&gt; +shouldBe(&quot;exceptionCodeForVibrate&quot;, &quot;0&quot;);

If you want, you can just write

    shouldBe(&quot;navigator.webkitVibrate(1000); navigator.webkitVibrate([1000, 300, 500]);&quot;, &quot;undefined&quot;);

&gt; LayoutTests/fast/dom/navigator-vibration.html:32
&gt; +try {
&gt; +    navigator.webkitVibrate(0);
&gt; +    navigator.webkitVibrate([]);
&gt; +}
&gt; +catch (e) {
&gt; +    exceptionCodeForCancel = e.code;
&gt; +}
&gt; +
&gt; +shouldBe(&quot;exceptionCodeForCancel&quot;, &quot;0&quot;);

If you want, you can just write

    shouldBe(&quot;navigator.webkitVibrate(0); navigator.webkitVibrate([]);&quot;, &quot;undefined&quot;);

&gt; LayoutTests/fast/dom/navigator-vibration.html:41
&gt; +try {
&gt; +    navigator.webkitVibrate(&quot;1000&quot;);
&gt; +}
&gt; +catch (e) {
&gt; +    exceptionCodeForVibrateWithInvalidIntParam = e.code;
&gt; +}
&gt; +
&gt; +shouldBe(&quot;exceptionCodeForVibrateWithInvalidIntParam&quot;, &quot;DOMException.INVALID_ACCESS_ERR&quot;);

You can just write

    shouldThrow(&apos;navigator.webkitVibrate(&quot;1000&quot;);&apos;);

&gt; LayoutTests/fast/dom/navigator-vibration.html:50
&gt; +try {
&gt; +    navigator.webkitVibrate([1000, &quot;200&quot;, 500]);
&gt; +}
&gt; +catch (e) {
&gt; +    exceptionCodeForVibrateWithInvalidArrayParam = e.code;
&gt; +}
&gt; +
&gt; +shouldBe(&quot;exceptionCodeForVibrateWithInvalidArrayParam&quot;, &quot;DOMException.INVALID_ACCESS_ERR&quot;);

You can just write

    shouldThrow(&apos;navigator.webkitVibrate([1000, &quot;200&quot;, 500]);&apos;);

&gt; LayoutTests/platform/chromium/test_expectations.txt:105
&gt; +BUGWK72010 SKIP : fast/dom/navigator-vibrationAPI.html = FAIL

This should be &quot;fast/dom/navigator-vibration.html&quot;.

&gt; Tools/Scripts/build-webkit:325
&gt; +      define =&gt; &quot;ENABLE_VIBRATION&quot;, default =&gt; 0, value =&gt; \$vibrationSupport },

&quot;default =&gt; 0&quot; is OK? Maybe it should be &quot;default =&gt; isEfl()&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543907</commentid>
    <comment_count>30</comment_count>
      <attachid>124279</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-27 01:56:26 -0800</bug_when>
    <thetext>Created attachment 124279
Fix style and cr-linux error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543960</commentid>
    <comment_count>31</comment_count>
      <attachid>124267</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-27 04:22:49 -0800</bug_when>
    <thetext>Comment on attachment 124267
Add test case for ignoring for cr-linux.

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

&gt;&gt; LayoutTests/ChangeLog:10
&gt;&gt; +        * platform/chromium/test_expectations.txt:
&gt; 
&gt; You need to add similar test_expectations.txt for AppleWebKit, AppleWin, GTK, QT, etc.

OK. I will add for other ports.

&gt;&gt; LayoutTests/fast/dom/navigator-vibration.html:22
&gt;&gt; +shouldBe(&quot;exceptionCodeForVibrate&quot;, &quot;0&quot;);
&gt; 
&gt; If you want, you can just write
&gt; 
&gt;     shouldBe(&quot;navigator.webkitVibrate(1000); navigator.webkitVibrate([1000, 300, 500]);&quot;, &quot;undefined&quot;);

Thank you very much for your comments.

&gt;&gt; LayoutTests/fast/dom/navigator-vibration.html:32
&gt;&gt; +shouldBe(&quot;exceptionCodeForCancel&quot;, &quot;0&quot;);
&gt; 
&gt; If you want, you can just write
&gt; 
&gt;     shouldBe(&quot;navigator.webkitVibrate(0); navigator.webkitVibrate([]);&quot;, &quot;undefined&quot;);

Ditto.

&gt;&gt; LayoutTests/fast/dom/navigator-vibration.html:41
&gt;&gt; +shouldBe(&quot;exceptionCodeForVibrateWithInvalidIntParam&quot;, &quot;DOMException.INVALID_ACCESS_ERR&quot;);
&gt; 
&gt; You can just write
&gt; 
&gt;     shouldThrow(&apos;navigator.webkitVibrate(&quot;1000&quot;);&apos;);

Ditto.

&gt;&gt; LayoutTests/fast/dom/navigator-vibration.html:50
&gt;&gt; +shouldBe(&quot;exceptionCodeForVibrateWithInvalidArrayParam&quot;, &quot;DOMException.INVALID_ACCESS_ERR&quot;);
&gt; 
&gt; You can just write
&gt; 
&gt;     shouldThrow(&apos;navigator.webkitVibrate([1000, &quot;200&quot;, 500]);&apos;);

Ditto.

&gt;&gt; Tools/Scripts/build-webkit:325
&gt;&gt; +      define =&gt; &quot;ENABLE_VIBRATION&quot;, default =&gt; 0, value =&gt; \$vibrationSupport },
&gt; 
&gt; &quot;default =&gt; 0&quot; is OK? Maybe it should be &quot;default =&gt; isEfl()&quot;.

I want to enable this feature in the efl patch after landing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544579</commentid>
    <comment_count>32</comment_count>
      <attachid>124419</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-27 18:32:17 -0800</bug_when>
    <thetext>Created attachment 124419
Add navigator-vibration.html to the skipped lists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544599</commentid>
    <comment_count>33</comment_count>
      <attachid>124419</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-01-27 19:39:28 -0800</bug_when>
    <thetext>Comment on attachment 124419
Add navigator-vibration.html to the skipped lists.

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

Thank you for the difficult patch, and I am sorry for many iterative reviews...

&gt; LayoutTests/fast/dom/navigator-vibration.html:13
&gt; +var exceptionCodeForVibrate = 0;
&gt; +var exceptionCodeForCancel = 0;
&gt; +var exceptionCodeForVibrateWithInvalidIntParam = 0;
&gt; +var exceptionCodeForVibrateWithInvalidArrayParam = 0;
&gt; +

You can now remove these.

&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:71
&gt; +JSValue JSNavigator::webkitVibrate(ExecState* exec)

Would you please make a new file &quot;JSNavigatorVibrationCustom.cpp&quot; and write this method in the file? (c.f. JSDOMWindowWebSocketCustom.cpp, JSDOMWindowWebAudioCustom.cpp)

&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:80
&gt; +        pattern.append(value.asInt32());

This might be &quot;value.asUInt32()&quot; (, although asUInt32() just calls asInt32() internally.)

&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:81
&gt; +    else if (JSObject* object = toJSSequence(exec, value, length)) {

I guess we need to fallback to NOT_SUPPORTED_ERR if toJSSequence() returns an exception. So the logic would be

if (value.isUInt32()) {
    ...;
} else {
    JSObject* object = toJSSequence(...);
    if (exec-&gt;hadException()) {
        exec-&gt;clearException();
        setDOMException(exec, NOT_SUPPORTED_ERR);
        return jsUndefined();
    }
    if (!length)
        ...;
    ...;
}

&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:90
&gt; +            if (value.isUndefinedOrNull() || !value.isNumber()) {

This might be &quot;if (value.isUndefinedOrNull() || !value.isUInt32())&quot;.

&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:91
&gt; +                setDOMException(exec, INVALID_ACCESS_ERR);

This should be NOT_SUPPORTED_ERR, according to the spec: http://dev.w3.org/2009/dap/vibration/#vibration-interface

&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:96
&gt; +                pattern.append(value.asInt32());

value.asUInt32()

&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:101
&gt; +        setDOMException(exec, INVALID_ACCESS_ERR);

NOT_SUPPORTED_ERR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544648</commentid>
    <comment_count>34</comment_count>
      <attachid>124419</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-01-28 05:49:06 -0800</bug_when>
    <thetext>Comment on attachment 124419
Add navigator-vibration.html to the skipped lists.

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

&gt; LayoutTests/fast/dom/navigator-vibration.html:15
&gt; +shouldBe(&quot;navigator.webkitVibrate(1000); navigator.webkitVibrate([1000, 300, 500]);&quot;, &quot;undefined&quot;);
&gt; +shouldBe(&quot;navigator.webkitVibrate(0); navigator.webkitVibrate([]);&quot;, &quot;undefined&quot;);

Sorry for my previous bad comments! These tests can be written better as follows, right?

shouldBe(&quot;navigator.webkitVibrate(0)&quot;, &quot;undefined&quot;);
shouldBe(&quot;navigator.webkitVibrate(1000)&quot;, &quot;undefined&quot;);
shouldBe(&quot;navigator.webkitVibrate([])&quot;, &quot;undefined&quot;);
shouldBe(&quot;navigator.webkitVibrate([1000, 300, 500])&quot;, &quot;undefined&quot;);

In addition, it is a good idea to add the following test cases:

navigator.webkitVibrate()  // This should be equivalent to navigator.webkitVibrate(0)
navigator.webkitVibrate(-1)
navigator.webkitVibrate(4294967295)
navigator.webkitVibrate(4294967296)
navigator.webkitVibrate(1.23)

&gt;&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:90
&gt;&gt; +            if (value.isUndefinedOrNull() || !value.isNumber()) {
&gt; 
&gt; This might be &quot;if (value.isUndefinedOrNull() || !value.isUInt32())&quot;.

Maybe this should be just &quot;if (!value.isUInt32())&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544853</commentid>
    <comment_count>35</comment_count>
      <attachid>124419</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-29 20:22:56 -0800</bug_when>
    <thetext>Comment on attachment 124419
Add navigator-vibration.html to the skipped lists.

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

Thank you for your comment again...:)

&gt;&gt; LayoutTests/fast/dom/navigator-vibration.html:13
&gt;&gt; +
&gt; 
&gt; You can now remove these.

OK. I missed it.

&gt;&gt; LayoutTests/fast/dom/navigator-vibration.html:15
&gt;&gt; +shouldBe(&quot;navigator.webkitVibrate(0); navigator.webkitVibrate([]);&quot;, &quot;undefined&quot;);
&gt; 
&gt; Sorry for my previous bad comments! These tests can be written better as follows, right?
&gt; 
&gt; shouldBe(&quot;navigator.webkitVibrate(0)&quot;, &quot;undefined&quot;);
&gt; shouldBe(&quot;navigator.webkitVibrate(1000)&quot;, &quot;undefined&quot;);
&gt; shouldBe(&quot;navigator.webkitVibrate([])&quot;, &quot;undefined&quot;);
&gt; shouldBe(&quot;navigator.webkitVibrate([1000, 300, 500])&quot;, &quot;undefined&quot;);
&gt; 
&gt; In addition, it is a good idea to add the following test cases:
&gt; 
&gt; navigator.webkitVibrate()  // This should be equivalent to navigator.webkitVibrate(0)
&gt; navigator.webkitVibrate(-1)
&gt; navigator.webkitVibrate(4294967295)
&gt; navigator.webkitVibrate(4294967296)
&gt; navigator.webkitVibrate(1.23)

OK, but I can&apos;t check &apos;4294967295&apos; with JSC because it doesn&apos;t support unsigned long properly.
Instead, I will check &apos;2147483647&apos;. Can I make it this way?

&gt;&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:71
&gt;&gt; +JSValue JSNavigator::webkitVibrate(ExecState* exec)
&gt; 
&gt; Would you please make a new file &quot;JSNavigatorVibrationCustom.cpp&quot; and write this method in the file? (c.f. JSDOMWindowWebSocketCustom.cpp, JSDOMWindowWebAudioCustom.cpp)

No problem.

&gt;&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:80
&gt;&gt; +        pattern.append(value.asInt32());
&gt; 
&gt; This might be &quot;value.asUInt32()&quot; (, although asUInt32() just calls asInt32() internally.)

OK.

&gt;&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:81
&gt;&gt; +    else if (JSObject* object = toJSSequence(exec, value, length)) {
&gt; 
&gt; I guess we need to fallback to NOT_SUPPORTED_ERR if toJSSequence() returns an exception. So the logic would be
&gt; 
&gt; if (value.isUInt32()) {
&gt;     ...;
&gt; } else {
&gt;     JSObject* object = toJSSequence(...);
&gt;     if (exec-&gt;hadException()) {
&gt;         exec-&gt;clearException();
&gt;         setDOMException(exec, NOT_SUPPORTED_ERR);
&gt;         return jsUndefined();
&gt;     }
&gt;     if (!length)
&gt;         ...;
&gt;     ...;
&gt; }

Yes. You are better.

&gt;&gt;&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:90
&gt;&gt;&gt; +            if (value.isUndefinedOrNull() || !value.isNumber()) {
&gt;&gt; 
&gt;&gt; This might be &quot;if (value.isUndefinedOrNull() || !value.isUInt32())&quot;.
&gt; 
&gt; Maybe this should be just &quot;if (!value.isUInt32())&quot;?

You are right.

&gt;&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:91
&gt;&gt; +                setDOMException(exec, INVALID_ACCESS_ERR);
&gt; 
&gt; This should be NOT_SUPPORTED_ERR, according to the spec: http://dev.w3.org/2009/dap/vibration/#vibration-interface

Yes.

&gt;&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:96
&gt;&gt; +                pattern.append(value.asInt32());
&gt; 
&gt; value.asUInt32()

Yes.

&gt;&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:101
&gt;&gt; +        setDOMException(exec, INVALID_ACCESS_ERR);
&gt; 
&gt; NOT_SUPPORTED_ERR

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544854</commentid>
    <comment_count>36</comment_count>
      <attachid>124419</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-01-29 20:38:03 -0800</bug_when>
    <thetext>Comment on attachment 124419
Add navigator-vibration.html to the skipped lists.

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

&gt;&gt;&gt; LayoutTests/fast/dom/navigator-vibration.html:15
&gt;&gt;&gt; +shouldBe(&quot;navigator.webkitVibrate(0); navigator.webkitVibrate([]);&quot;, &quot;undefined&quot;);
&gt;&gt; 
&gt;&gt; Sorry for my previous bad comments! These tests can be written better as follows, right?
&gt;&gt; 
&gt;&gt; shouldBe(&quot;navigator.webkitVibrate(0)&quot;, &quot;undefined&quot;);
&gt;&gt; shouldBe(&quot;navigator.webkitVibrate(1000)&quot;, &quot;undefined&quot;);
&gt;&gt; shouldBe(&quot;navigator.webkitVibrate([])&quot;, &quot;undefined&quot;);
&gt;&gt; shouldBe(&quot;navigator.webkitVibrate([1000, 300, 500])&quot;, &quot;undefined&quot;);
&gt;&gt; 
&gt;&gt; In addition, it is a good idea to add the following test cases:
&gt;&gt; 
&gt;&gt; navigator.webkitVibrate()  // This should be equivalent to navigator.webkitVibrate(0)
&gt;&gt; navigator.webkitVibrate(-1)
&gt;&gt; navigator.webkitVibrate(4294967295)
&gt;&gt; navigator.webkitVibrate(4294967296)
&gt;&gt; navigator.webkitVibrate(1.23)
&gt; 
&gt; OK, but I can&apos;t check &apos;4294967295&apos; with JSC because it doesn&apos;t support unsigned long properly.
&gt; Instead, I will check &apos;2147483647&apos;. Can I make it this way?

Oh, nice catch!

That appears to be a bug of JSC. The spec says that unsigned long should be [0, 4294967295] (http://dev.w3.org/2006/webapi/WebIDL/#es-unsigned-long). Would you please file the bug and then write a test case for 4294967295 with a comment like &quot;This fails in JSC due to bug XXXXX&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544865</commentid>
    <comment_count>37</comment_count>
      <attachid>124419</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-29 21:02:07 -0800</bug_when>
    <thetext>Comment on attachment 124419
Add navigator-vibration.html to the skipped lists.

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

&gt;&gt;&gt;&gt; LayoutTests/fast/dom/navigator-vibration.html:15
&gt;&gt;&gt;&gt; +shouldBe(&quot;navigator.webkitVibrate(0); navigator.webkitVibrate([]);&quot;, &quot;undefined&quot;);
&gt;&gt;&gt; 
&gt;&gt;&gt; Sorry for my previous bad comments! These tests can be written better as follows, right?
&gt;&gt;&gt; 
&gt;&gt;&gt; shouldBe(&quot;navigator.webkitVibrate(0)&quot;, &quot;undefined&quot;);
&gt;&gt;&gt; shouldBe(&quot;navigator.webkitVibrate(1000)&quot;, &quot;undefined&quot;);
&gt;&gt;&gt; shouldBe(&quot;navigator.webkitVibrate([])&quot;, &quot;undefined&quot;);
&gt;&gt;&gt; shouldBe(&quot;navigator.webkitVibrate([1000, 300, 500])&quot;, &quot;undefined&quot;);
&gt;&gt;&gt; 
&gt;&gt;&gt; In addition, it is a good idea to add the following test cases:
&gt;&gt;&gt; 
&gt;&gt;&gt; navigator.webkitVibrate()  // This should be equivalent to navigator.webkitVibrate(0)
&gt;&gt;&gt; navigator.webkitVibrate(-1)
&gt;&gt;&gt; navigator.webkitVibrate(4294967295)
&gt;&gt;&gt; navigator.webkitVibrate(4294967296)
&gt;&gt;&gt; navigator.webkitVibrate(1.23)
&gt;&gt; 
&gt;&gt; OK, but I can&apos;t check &apos;4294967295&apos; with JSC because it doesn&apos;t support unsigned long properly.
&gt;&gt; Instead, I will check &apos;2147483647&apos;. Can I make it this way?
&gt; 
&gt; Oh, nice catch!
&gt; 
&gt; That appears to be a bug of JSC. The spec says that unsigned long should be [0, 4294967295] (http://dev.w3.org/2006/webapi/WebIDL/#es-unsigned-long). Would you please file the bug and then write a test case for 4294967295 with a comment like &quot;This fails in JSC due to bug XXXXX&quot;?

No problem. I will make a bug for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544882</commentid>
    <comment_count>38</comment_count>
      <attachid>124495</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-29 21:58:36 -0800</bug_when>
    <thetext>Created attachment 124495
Fixed patch for the comment #34</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544886</commentid>
    <comment_count>39</comment_count>
      <attachid>124495</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-01-29 22:06:52 -0800</bug_when>
    <thetext>Comment on attachment 124495
Fixed patch for the comment #34

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

r+ for all the files other than Modules/vibration/*. Thank you for the patch!

Would anyone review Modules/vibration/*? I am not familiar with what the vibration API should do.

&gt; Source/WebCore/bindings/js/JSNavigatorVibrationCustom.cpp:51
&gt; +                if (exec-&gt;hadException())

Can you add &quot;setDOMException(exec, NOT_SUPPORTED_ERR)&quot; before returning jsUndefined()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544887</commentid>
    <comment_count>40</comment_count>
      <attachid>124495</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-29 22:12:45 -0800</bug_when>
    <thetext>Comment on attachment 124495
Fixed patch for the comment #34

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

Thank you!~;)

&gt;&gt; Source/WebCore/bindings/js/JSNavigatorVibrationCustom.cpp:51
&gt;&gt; +                if (exec-&gt;hadException())
&gt; 
&gt; Can you add &quot;setDOMException(exec, NOT_SUPPORTED_ERR)&quot; before returning jsUndefined()?

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544911</commentid>
    <comment_count>41</comment_count>
      <attachid>124502</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-01-30 00:14:28 -0800</bug_when>
    <thetext>Created attachment 124502
Fixed patch for the comment #40</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552291</commentid>
    <comment_count>42</comment_count>
      <attachid>124502</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-08 10:55:56 -0800</bug_when>
    <thetext>Comment on attachment 124502
Fixed patch for the comment #40

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

&gt; Source/WebCore/bindings/js/JSNavigatorVibrationCustom.cpp:30
&gt; +JSValue JSNavigator::webkitVibrate(ExecState* exec)

Do we really need custom bindings here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552293</commentid>
    <comment_count>43</comment_count>
      <attachid>124502</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-08 10:58:01 -0800</bug_when>
    <thetext>Comment on attachment 124502
Fixed patch for the comment #40

Rather than adding custom bindings in this patch and improving the code generator &quot;in the future&quot;, we should improve the code generator first.  There&apos;s nothing super magical about the bindings this API needs generated.  We already have examples of generating bindings with primitive sequences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552489</commentid>
    <comment_count>44</comment_count>
      <attachid>124502</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-08 14:24:31 -0800</bug_when>
    <thetext>Comment on attachment 124502
Fixed patch for the comment #40

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

&gt;&gt; Source/WebCore/bindings/js/JSNavigatorVibrationCustom.cpp:30
&gt;&gt; +JSValue JSNavigator::webkitVibrate(ExecState* exec)
&gt; 
&gt; Do we really need custom bindings here?

It seems that this is written as custom code due to method overloading. It might require non-trivial change in code generators to support overloading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552491</commentid>
    <comment_count>45</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-08 14:25:28 -0800</bug_when>
    <thetext>&gt; It seems that this is written as custom code due to method overloading. It might require non-trivial change in code generators to support overloading.

Don&apos;t we already support overloading?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552560</commentid>
    <comment_count>46</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-08 15:40:52 -0800</bug_when>
    <thetext>(In reply to comment #45)
&gt; &gt; It seems that this is written as custom code due to method overloading. It might require non-trivial change in code generators to support overloading.
&gt; 
&gt; Don&apos;t we already support overloading?

If I am understanding it correctly, we just supported overloading for methods whose argument counts are different (by [Optional]). We do not yet support overloading for methods whose argument types are different.

Supported:
foo(int a)
foo(int a, int b)

Not supported:
foo(int a)
foo(DOMString b)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552818</commentid>
    <comment_count>47</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-08 20:49:29 -0800</bug_when>
    <thetext>(In reply to comment #46)
&gt; (In reply to comment #45)
&gt; &gt; &gt; It seems that this is written as custom code due to method overloading. It might require non-trivial change in code generators to support overloading.
&gt; &gt; 
&gt; &gt; Don&apos;t we already support overloading?
&gt; 
&gt; If I am understanding it correctly, we just supported overloading for methods whose argument counts are different (by [Optional]). We do not yet support overloading for methods whose argument types are different.
&gt; 
&gt; Supported:
&gt; foo(int a)
&gt; foo(int a, int b)
&gt; 
&gt; Not supported:
&gt; foo(int a)
&gt; foo(DOMString b)

Sorry, this observation was wrong. As Adam mentioned, code generators have already supported method overloading. (e.g. drawImage() in CanvasRenderingContext2D.idl)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552923</commentid>
    <comment_count>48</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-02-09 00:27:31 -0800</bug_when>
    <thetext>I&apos;ve add a new bug for supporting long[] in the IDL.(78210)
And I&apos;ll implement a patch.
Thank you for comments Adam and Kentaro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559732</commentid>
    <comment_count>49</comment_count>
      <attachid>127696</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-02-17 23:20:52 -0800</bug_when>
    <thetext>Created attachment 127696
Patch (Adopt Bug 78085 style).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559972</commentid>
    <comment_count>50</comment_count>
      <attachid>127696</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-19 17:57:50 -0800</bug_when>
    <thetext>Comment on attachment 127696
Patch (Adopt Bug 78085 style).

Doesn&apos;t EFL port enable this by default?
I hope at least one build.webkit.org supported port to build this to keep it build-able.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559975</commentid>
    <comment_count>51</comment_count>
      <attachid>127696</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-19 18:05:37 -0800</bug_when>
    <thetext>Comment on attachment 127696
Patch (Adopt Bug 78085 style).

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

Considering that the API is now dynamically configurable,
I think it&apos;s OK to enable this for at least one port. (It would be EFL.)
It will greatly help this code being part of the tree greenness.

&gt; Source/WebCore/Modules/vibration/NavigatorVibration.cpp:57
&gt; +    Vibration::from(navigator-&gt;frame()-&gt;page())-&gt;vibrate(time);

Please don&apos;t rely on the fact that the Vibrator object being provided and check the NULL case.
That will allow us to ENABLE this safely without providing the Vibrator object from the API layer, and make it easy to keep this option ENABLE-d.

&gt; Source/WebCore/Modules/vibration/NavigatorVibration.cpp:75
&gt; +    Vibration::from(navigator-&gt;frame()-&gt;page())-&gt;vibrate(pattern);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559978</commentid>
    <comment_count>52</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-02-19 18:17:19 -0800</bug_when>
    <thetext>(In reply to comment #50)
&gt; (From update of attachment 127696 [details])
&gt; Doesn&apos;t EFL port enable this by default?
&gt; I hope at least one build.webkit.org supported port to build this to keep it build-able.

OK. But, I was going to add EFL port enable in the bug 75156.
Do you think I need to merge bug 75156 and this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560039</commentid>
    <comment_count>53</comment_count>
      <attachid>127696</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-02-19 22:43:35 -0800</bug_when>
    <thetext>Comment on attachment 127696
Patch (Adopt Bug 78085 style).

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

I added EFL port implementation to bug 75156.
Thank you for your comment.

&gt;&gt; Source/WebCore/Modules/vibration/NavigatorVibration.cpp:57
&gt;&gt; +    Vibration::from(navigator-&gt;frame()-&gt;page())-&gt;vibrate(time);
&gt; 
&gt; Please don&apos;t rely on the fact that the Vibrator object being provided and check the NULL case.
&gt; That will allow us to ENABLE this safely without providing the Vibrator object from the API layer, and make it easy to keep this option ENABLE-d.

I think NULL case is checked in &quot;if (!Vibration::isActive(navigator-&gt;frame()-&gt;page()))&quot;.
If page is null or vabration is not created, exception code will be returned.
Can you review this again please?

&gt;&gt; Source/WebCore/Modules/vibration/NavigatorVibration.cpp:75
&gt;&gt; +    Vibration::from(navigator-&gt;frame()-&gt;page())-&gt;vibrate(pattern);
&gt; 
&gt; Ditto.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560070</commentid>
    <comment_count>54</comment_count>
    <who name="Soo-Hyun Choi">s.choi</who>
    <bug_when>2012-02-20 00:17:57 -0800</bug_when>
    <thetext>(In reply to comment #52)
&gt; (In reply to comment #50)
&gt; &gt; (From update of attachment 127696 [details] [details])
&gt; &gt; Doesn&apos;t EFL port enable this by default?
&gt; &gt; I hope at least one build.webkit.org supported port to build this to keep it build-able.
&gt; 
&gt; OK. But, I was going to add EFL port enable in the bug 75156.
&gt; Do you think I need to merge bug 75156 and this?


Morrita, 

Kihong probably meant to ask if he needs to combine this patch and #75156, making them a single bug. 

I am not a reviewer nor committer, but wouldn&apos;t it be better to land the core patch and port patch separately? 

If you meant it to enable the Efl port by default, as you well know, the Efl port patch would cause build break as the necessary core patch is not there yet.

Any advice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560112</commentid>
    <comment_count>55</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-20 01:50:07 -0800</bug_when>
    <thetext>&gt; Kihong probably meant to ask if he needs to combine this patch and #75156, making them a single bug. 

This sounds good.
I had a glance at Bug 75156. It&apos;s small enough and basically well-written. 
I&apos;m happy to review these as a single patch.

Thanks for your patience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560121</commentid>
    <comment_count>56</comment_count>
      <attachid>127786</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-02-20 02:27:40 -0800</bug_when>
    <thetext>Created attachment 127786
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560138</commentid>
    <comment_count>57</comment_count>
      <attachid>127794</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-02-20 02:58:25 -0800</bug_when>
    <thetext>Created attachment 127794
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560432</commentid>
    <comment_count>58</comment_count>
      <attachid>127794</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-20 15:50:01 -0800</bug_when>
    <thetext>Comment on attachment 127794
Patch.

Thanks for update! It&apos;s time to land this...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560468</commentid>
    <comment_count>59</comment_count>
      <attachid>127794</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-20 17:04:58 -0800</bug_when>
    <thetext>Comment on attachment 127794
Patch.

Clearing flags on attachment: 127794

Committed r108272: &lt;http://trac.webkit.org/changeset/108272&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560469</commentid>
    <comment_count>60</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-20 17:05:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560527</commentid>
    <comment_count>61</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-02-20 18:33:33 -0800</bug_when>
    <thetext>I appreciate all the reviews in this patch. My special thanks goes to Kenneth, Adam, Scott, Morrita, and Kentaro.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114467</attachid>
            <date>2011-11-10 04:05:26 -0800</date>
            <delta_ts>2011-11-17 23:42:43 -0800</delta_ts>
            <desc>Core part for the Vibration API</desc>
            <filename>VibrationAPI.patch</filename>
            <type>text/plain</type>
            <size>3688</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyYWEzOThhLi5lYjE4MjM5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMTEtMTAgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisK
KyAgICAgICAgQWRkIGEgbmV3IEFQSSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkoVzNDKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwMTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IHdpbGwgYmUgYWRk
ZWQgYWZ0ZXIgZmluaXNoaW5nLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOYXZpZ2F0b3I6OndlYmtpdFZpYnJhdGUp
OgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmln
YXRvcjo6d2Via2l0VmlicmF0ZSk6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAg
ICAgKiBwYWdlL05hdmlnYXRvci5pZGw6CisKIDIwMTEtMTEtMDkgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHI5OTc4Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2
aWdhdG9yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9y
Q3VzdG9tLmNwcAppbmRleCAxMDdkYWViLi42MTAxODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCkBAIC0yNSw4ICsyNSwxMCBAQAog
CiAjaW5jbHVkZSAiQ2FsbGJhY2tGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIkpTTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3JDYWxsYmFjay5oIgogI2luY2x1ZGUgIkpTTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vz
c0NhbGxiYWNrLmgiCisjZW5kaWYKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNjAsNCArNjIsMjEgQEAgSlNWYWx1ZSBKU05hdmlnYXRvcjo6d2Via2l0
R2V0VXNlck1lZGlhKEV4ZWNTdGF0ZSogZXhlYykKIH0KICNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKK0pTVmFsdWUgSlNOYXZpZ2F0b3I6Ondl
YmtpdFZpYnJhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIFZpYnJhdGlvbkFycmF5IHZpYnJhdGlvbkFycmF5OworICAgCisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCAoaW50KWV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgaSsrKQorICAgICAgICB2aWJy
YXRpb25BcnJheS5hcHBlbmQoKGxvbmcpZXhlYy0+YXJndW1lbnQoaSsxKSk7CisgICAgbV9pbXBs
LT53ZWJraXRWaWJyYXRlKHZpYnJhdGlvbkFycmF5LCBlYyk7CisgICAgCisgICAgaWYgKGVjKQor
ICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIAorICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRl
eCA1MzU3NWFmLi4zMTcyYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmln
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC0yODgs
NCArMjg4LDE1IEBAIHZvaWQgTmF2aWdhdG9yOjp3ZWJraXRHZXRVc2VyTWVkaWEoY29uc3QgU3Ry
aW5nJiBvcHRpb25zLCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzCiB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShWSUJSQVRJT04pCit2b2lkIE5hdmlnYXRvcjo6d2Via2l0VmlicmF0ZShjb25zdCBWaWJy
YXRpb25BcnJheSYgcGF0dGVybiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZWMgPSAwOwor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKGludClwYXR0ZXJuLnNpemUoKTsgaSsrKQorICAgIHsK
KyAgICAgICAgICAgIC8vIHZpYnJhdGUgYnkgcGF0dGVybgorICAgIH0KK30KKyNlbmRpZgorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05h
dmlnYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAppbmRleCAzYTFlMDQy
Li4wODM0NDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKQEAgLTI2LDYgKzI2LDggQEAKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAordHlw
ZWRlZiBWZWN0b3I8bG9uZywgMT4gVmlicmF0aW9uQXJyYXk7CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRE9NTWltZVR5cGVBcnJheTsKQEAgLTY5LDYgKzcxLDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgd2Via2l0R2V0VXNlck1lZGlhKGNvbnN0IFN0cmluZyYgb3B0aW9u
cywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+LCBQYXNzUmVm
UHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+LCBFeGNlcHRpb25Db2RlJik7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgdm9pZCB3ZWJraXRWaWJyYXRlKGNv
bnN0IFZpYnJhdGlvbkFycmF5JiBwYXR0ZXJuLCBFeGNlcHRpb25Db2RlJik7CisjZW5kaWYKKwog
cHJpdmF0ZToKICAgICBOYXZpZ2F0b3IoRnJhbWUqKTsKICAgICBGcmFtZSogbV9mcmFtZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAppbmRleCAyZjY5MWMzLi40ZjU1MmJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuaWRsCkBAIC01Nyw2ICs1NywxMiBAQCBtb2R1bGUgd2luZG93IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gW0NhbGxiYWNrPUZ1bmN0aW9uT25seSwgT3B0aW9uYWxdIE5hdmlnYXRvclVzZXJNZWRpYUVy
cm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaykKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRp
b24pOwogI2VuZGlmCisKKyNpZiBkZWZpbmVkKEVOQUJMRV9WSUJSQVRJT04pICYmIEVOQUJMRV9W
SUJSQVRJT04KKyAgICAgICAgW0N1c3RvbV0gdm9pZCB3ZWJraXRWaWJyYXRlKGluIFtPcHRpb25h
bD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gQXJyYXkgcGF0dGVybikKKyAgICAgICAgICAgIHJhaXNl
cyhET01FeGNlcHRpb24pOworI2VuZGlmCisKICAgICB9OwogCiB9Cg==
</data>
<flag name="review"
          id="113118"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115748</attachid>
            <date>2011-11-17 23:42:43 -0800</date>
            <delta_ts>2011-12-15 00:14:37 -0800</delta_ts>
            <desc>Add to support array, int and null parameter for Vibration API. Ex) vibrate([1000, 500, 2000]), vibrate(1000), vibrate([]), vibrate(0), vibrate()...</desc>
            <filename>vibration.patch</filename>
            <type>text/plain</type>
            <size>6352</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjMjc1NjM1Li42ZDEwOWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTEtMTEtMTcgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisK
KyAgICAgICAgQWRkIGEgbmV3IEFQSSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkoVzNDKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwMTAKKyAgICAgICAg
aHR0cDovL2Rldi53My5vcmcvMjAwOS9kYXAvdmlicmF0aW9uLworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIHdpbGwgYmUgYWRkZWQgYWZ0ZXIg
ZmluaXNoaW5nCisKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOYXZpZ2F0b3I6
OndlYmtpdFZpYnJhdGUpOgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGhhcyBzb21lIGNvZGVzIGZv
ciB2YXJpb3VzIHBhcmFtZXRlciB0eXBlLgorICAgICAgICBBcnJheSBmb3IgcGF0dGVybiwgbG9u
ZyBmb3IgdGltZSwgJzAnIG9yICJbXSIgZm9yIGNhbmNlbC4KKyAgICAgICAgKiBwYWdlL05hdmln
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OnZpYnJhdGUpOiBBZGQgdmli
cmF0ZSBmdW5jdGlvbnMgZm9yIGxvbmctYXJnIGFuZCBhcnJheS1hcmcuCisgICAgICAgIChXZWJD
b3JlOjpOYXZpZ2F0b3I6OmNhbmNlbFZpYnJhdGUpOiBBZGQgCisgICAgICAgICogcGFnZS9OYXZp
Z2F0b3IuaDoKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5pZGw6CisKIDIwMTEtMTEtMTEgIFZp
bmNlbnQgU2NoZWliICA8c2NoZWliQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNb3VzZSBMb2Nr
OiBNb3VzZUV2ZW50IElETApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCmluZGV4IDMzYjczODYuLmEwN2RiZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Vc2VKU0MuY21ha2UKQEAgLTEyNyw2ICsxMjcsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTWFBhdGhSZXN1bHRDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMv
SlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAorICAgIGJpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCiAgICAgYmlu
ZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAogICAgIGJpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TmF2aWdhdG9yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdh
dG9yQ3VzdG9tLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDEwN2Rh
ZWIuLmMwN2UwNTIKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3Vz
dG9tLmNwcApAQCAtMjUsOCArMjUsMTAgQEAKIAogI2luY2x1ZGUgIkNhbGxiYWNrRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ICNpbmNsdWRlICJKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRl
ICJKU05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oIgorI2VuZGlmCiAjaW5jbHVk
ZSAiTmF2aWdhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYwLDQgKzYyLDY0IEBA
IEpTVmFsdWUgSlNOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYShFeGVjU3RhdGUqIGV4ZWMp
CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2lmIEVOQUJMRShWSUJSQVRJ
T04pCitKU1ZhbHVlIEpTTmF2aWdhdG9yOjp3ZWJraXRWaWJyYXRlKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBWaWJyYXRpb25BcnJheSB2aWJyYXRp
b25BcnJheTsgICAgCisgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworCisg
ICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpIHsKKyAgICAgICAgbV9pbXBsLT5jYW5jZWxW
aWJyYXRlKCk7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIGlm
ICh2YWx1ZS5pc1VJbnQzMigpKSB7ICAgICAgICAKKyAgICAgICAgaWYgKHZhbHVlLmFzVUludDMy
KCkpIHsKKyAgICAgICAgICAgIG1faW1wbC0+dmlicmF0ZSh2YWx1ZS5hc1VJbnQzMigpLCBlYyk7
CisgICAgICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIGVjKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2ltcGwtPmNhbmNlbFZpYnJh
dGUoKTsKKworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgICAgIAor
ICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKKworICAgIHVuc2lnbmVkIGxlbmd0aDsKKyAgICBKU09iamVjdCogb2JqZWN0ID0g
dG9KU1NlcXVlbmNlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBsZW5ndGgpOworCisgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKwor
ICAgIGlmICghbGVuZ3RoKSB7CisgICAgICAgIG1faW1wbC0+Y2FuY2VsVmlicmF0ZSgpOworICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+
Z2V0KGV4ZWMsIGkpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSkgeworICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIERBVEFfQ0xP
TkVfRVJSKTsKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHZhbHVlLmlzVUludDMyKCkpCisgICAgICAgICAgICB2aWJyYXRpb25BcnJh
eS5hcHBlbmQodmFsdWUuYXNJbnQzMigpKTsKKyAgICB9CisKKyAgICBtX2ltcGwtPnZpYnJhdGUo
JnZpYnJhdGlvbkFycmF5LCBlYyk7CisgICAgCisgICAgaWYgKGVjKQorICAgICAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgZWMpOworICAgIAorICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQor
I2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApvbGQgbW9kZSAxMDA2NDQKbmV3
IG1vZGUgMTAwNzU1CmluZGV4IGNhMjhhNTcuLjY0ZmM1MjcKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNw
cApAQCAtMjg5LDQgKzI4OSw0OCBAQCB2b2lkIE5hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1lZGlh
KGNvbnN0IFN0cmluZyYgb3B0aW9ucywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVcwogfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQordm9pZCBOYXZpZ2F0b3I6OnZpYnJhdGUoY29uc3Qg
bG9uZyYgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZWMgPSAwOworCisjaWYgRU5B
QkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKS0+dmlzaWJp
bGl0eVN0YXRlKCkgPT0gUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbikKKyAgICAgICByZXR1cm47
CisjZW5kaWYKKworICAgIC8vIFZpYnJhdGUgYnkgdGltZSB2YWx1ZQorfQorCisKK3ZvaWQgTmF2
aWdhdG9yOjp2aWJyYXRlKGNvbnN0IFZpYnJhdGlvbkFycmF5KiBwYXR0ZXJuLCBFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICBpZiAoIXBhdHRlcm4gfHwgIXBhdHRlcm4tPnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZWMgPSAwOworCisjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9B
UEkpCisgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKS0+dmlzaWJpbGl0eVN0YXRlKCkgPT0gUGFnZVZp
c2liaWxpdHlTdGF0ZUhpZGRlbikKKyAgICAgICByZXR1cm47CisjZW5kaWYKKworICAgIHVuc2ln
bmVkIGFsaWduZWRQYXR0ZXJubGFudGg7CisgICAgaWYgKCEocGF0dGVybi0+c2l6ZSgpICUgMikp
CisgICAgICAgIGFsaWduZWRQYXR0ZXJubGFudGggPSBwYXR0ZXJuLT5zaXplKCkgLSAxOworCisg
ICAgLy8gdmlicmF0ZShwYXR0ZXJuWzBdKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwg
YWxpZ25lZFBhdHRlcm5sYW50aDsgaSArPSAyKSB7CisgICAgICAgIC8vIHNsZWVwKHBhdHRlcm5b
aV0pOworICAgICAgICAvLyB2aWJyYXRlKHBhdHRlcm5baSsxXSk7CisgICAgfQorfQorCit2b2lk
IE5hdmlnYXRvcjo6Y2FuY2VsVmlicmF0ZSgpCit7CisgICAgLy8gQ2FuY2VsIHZpYnJhdGUKK30K
KworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5o
Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggMmFiMjJhMC4uYjg3YzMyOQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmgKQEAgLTI1LDYgKzI1LDkgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordHlwZWRlZiBWZWN0b3I8bG9uZz4gVmli
cmF0aW9uQXJyYXk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzQsNiArNzcsMTIgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3ZWJraXRHZXRVc2VyTWVkaWEoY29uc3QgU3RyaW5n
JiBvcHRpb25zLCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4s
IFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4sIEV4Y2VwdGlvbkNv
ZGUmKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICB2b2lkIHZpYnJhdGUo
Y29uc3QgbG9uZyYgdGltZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdmlicmF0ZShjb25z
dCBWaWJyYXRpb25BcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNhbmNlbFZpYnJh
dGUoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5hdmlnYXRvcihGcmFtZSopOwogICAgIEZy
YW1lKiBtX2ZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
aWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCmluZGV4IDRkZGY1NmIuLjk3
M2U1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwKQEAgLTYxLDYgKzYxLDEyIEBAIG1v
ZHVsZSB3aW5kb3cgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBbQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5LCBPcHRpb25hbF0gTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKQogICAgICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKKworI2lmIGRlZmluZWQoRU5BQkxFX1ZJQlJB
VElPTikgJiYgRU5BQkxFX1ZJQlJBVElPTgorICAgICAgICBbQ3VzdG9tXSB2b2lkIHdlYmtpdFZp
YnJhdGUoaW4gQXJyYXkgcGF0dGVybikKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OworI2VuZGlmCisKICAgICB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119388</attachid>
            <date>2011-12-15 00:14:37 -0800</date>
            <delta_ts>2011-12-15 01:03:00 -0800</delta_ts>
            <desc>WebCore patch for the vibration API</desc>
            <filename>vibration.patch</filename>
            <type>text/plain</type>
            <size>13493</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2YWNkZjFkLi5hMWZhOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMTEtMTItMTQgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisK
KyAgICAgICAgQWRkIGEgbmV3IEFQSSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkoVzNDKS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDEwCisgICAgICAg
IGh0dHA6Ly9kZXYudzMub3JnLzIwMDkvZGFwL3ZpYnJhdGlvbi8KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgZmVhdHVy
ZSBjYW4ndCBtYWtlIGEgdGVzdCBjYXNlIGF0IGFsbC4KKyAgICAgICAgVGhlcmUgaXMgb25seSBv
bmUgbWV0aG9kIGZvciB2aWJyYXRpb24gd2l0aG91dCByZXR1cm4gdmFsdWUuCisKKyAgICAgICAg
KiBVc2VKU0MuY21ha2U6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOYXZpZ2F0b3I6OndlYmtpdFZpYnJhdGUpOgorICAg
ICAgICBUbyBnZXQgYW4gYXJyYXkgdHlwZSBwYXJhbWV0ZXIuCisgICAgICAgIFRoZXJlIGlzIG5v
IHdheSB0byBnZXQgYW4gYXJyYXkgdHlwZSBwYXJhbWV0ZXIuCisgICAgICAgICogcGFnZS9OYXZp
Z2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRWaWJyYXRlKToK
KyAgICAgICAgSGFuZGxpbmcgdmlicmF0b3Igb3BlcmF0aW9uIGJ5IHZhcmlvdXMgcGFyYW1ldGVy
IHR5cGUuCisgICAgICAgIEFycmF5IGZvciBwYXR0ZXJuLCBsb25nIGZvciB0aW1lLCAnMCcgb3Ig
IltdIiBmb3IgY2FuY2VsLgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAgICAgICog
cGFnZS9OYXZpZ2F0b3IuaWRsOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2VDbGllbnRz
OjpQYWdlQ2xpZW50cyk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjp2aWJyYXRvcik6CisgICAgICAgICogcGFnZS9WaWJyYXRvci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6VmlicmF0b3I6OlZpYnJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlZpYnJhdG9yOjp2aWJyYXRlKToKKyAgICAgICAgVHJhbnNmZXIgYW5kIHNlbmQgYSB2aWJyYXRl
IG1lc3NhZ2UgZm9yIGVhY2ggdHlwZSBvZiB2aWJyYXRpb24uKEZvciBhcnJheSwgbG9uZyBhbmQg
Y2FuY2VsKQorICAgICAgICAoV2ViQ29yZTo6VmlicmF0b3I6OmNhbmNlbFZpYnJhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VmlicmF0b3I6OmlzU3VwcG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpW
aWJyYXRvcjo6dGltZXJGaXJlZCkKKyAgICAgICAgKiBwYWdlL1ZpYnJhdG9yLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6VmlicmF0b3I6On5WaWJyYXRvcik6CisgICAgICAgICogcGFnZS9W
aWJyYXRvckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdG9yQ2xpZW50
Ojp+VmlicmF0b3JDbGllbnQpOgorCiAyMDExLTEyLTA1ICBCZW5qYW1pbiBQb3VsYWluICA8YnBv
dWxhaW5AYXBwbGUuY29tPgoKICAgICAgICAgVXBzdHJlYW0gdGhlIEN1cnNvciBpbXBsZW1lbnRh
dGlvbiBvZiBpT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQppbmRleCA4MjUzMmFjLi43OWMyZTVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNl
SlNDLmNtYWtlCkBAIC0xMjYsNiArMTI2LDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
CiAgICAgYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdFVwbG9hZEN1c3RvbS5jcHAKICAgICBi
aW5kaW5ncy9qcy9KU1hQYXRoUmVzdWx0Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTWFNM
VFByb2Nlc3NvckN1c3RvbS5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5j
cHAKICAgICBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAogICAgIGJpbmRpbmdz
L2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKICAgICBiaW5kaW5ncy9qcy9TY2hlZHVsZWRB
Y3Rpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmln
YXRvckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1
c3RvbS5jcHAKaW5kZXggMTA3ZGFlYi4uYTE3YmJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcApAQCAtMjUsOCArMjUsMTAgQEAKCiAj
aW5jbHVkZSAiQ2FsbGJhY2tGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIkpTTmF2aWdhdG9yVXNlck1lZGlh
RXJyb3JDYWxsYmFjay5oIgogI2luY2x1ZGUgIkpTTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0Nh
bGxiYWNrLmgiCisjZW5kaWYKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC02MCw0ICs2Miw0NyBAQCBKU1ZhbHVlIEpTTmF2aWdhdG9yOjp3ZWJraXRHZXRV
c2VyTWVkaWEoRXhlY1N0YXRlKiBleGVjKQogfQogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCgorI2lmIEVOQUJMRShWSUJSQVRJT04pCitKU1ZhbHVlIEpTTmF2aWdhdG9yOjp3ZWJraXRW
aWJyYXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBWaWJyYXRpb25QYXR0ZXJuIHZpYnJhdGlvbkFycmF5OworICAgIEpTVmFsdWUgdmFsdWUgPSBl
eGVjLT5hcmd1bWVudCgwKTsKKyAgICB1bnNpZ25lZCBsZW5ndGg7CisKKyAgICBpZiAoIWV4ZWMt
PmFyZ3VtZW50Q291bnQoKSkKKyAgICAgICAgdmlicmF0aW9uQXJyYXkuYXBwZW5kKDApOworCisg
ICAgaWYgKHZhbHVlLmlzVUludDMyKCkpCisgICAgICAgIHZpYnJhdGlvbkFycmF5LmFwcGVuZCh2
YWx1ZS5hc0ludDMyKCkpOworICAgIGVsc2UgeworICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
dG9KU1NlcXVlbmNlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBsZW5ndGgpOworCisgICAgICAg
IGlmICghbGVuZ3RoKQorICAgICAgICAgICAgdmlicmF0aW9uQXJyYXkuYXBwZW5kKDApOworCisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIGkpOworICAgICAgICAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworCisgICAgICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAg
ICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBEQVRBX0NMT05FX0VSUik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICh2YWx1ZS5pc1VJbnQzMigpKQorICAgICAgICAgICAgICAgIHZpYnJhdGlvbkFy
cmF5LmFwcGVuZCh2YWx1ZS5hc0ludDMyKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgbV9p
bXBsLT53ZWJraXRWaWJyYXRlKHZpYnJhdGlvbkFycmF5LCBlYyk7CisKKyAgICBpZiAoZWMpCisg
ICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05h
dmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggYmMx
ZTA1My4uZTI5ODQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtNTYsNiArNTYs
MTAgQEAKICNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCiAjZW5kaWYKCisjaWYgRU5BQkxF
KFZJQlJBVElPTikKKyNpbmNsdWRlICJWaWJyYXRvci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKCiBOYXZpZ2F0b3I6Ok5hdmlnYXRvcihGcmFtZSogZnJhbWUpCkBAIC0zMTksNCAr
MzIzLDI1IEBAIEdhbWVwYWRMaXN0KiBOYXZpZ2F0b3I6OndlYmtpdEdhbWVwYWRzKCkKIH0KICNl
bmRpZgoKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQordm9pZCBOYXZpZ2F0b3I6OndlYmtpdFZpYnJh
dGUoY29uc3QgVmlicmF0aW9uUGF0dGVybiYgcGF0dGVybiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgaWYgKCFwYXR0ZXJuLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgRU5BQkxF
KFBBR0VfVklTSUJJTElUWV9BUEkpCisgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKS0+dmlzaWJpbGl0
eVN0YXRlKCkgPT0gUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbikKKyAgICAgICByZXR1cm47Cisj
ZW5kaWYKKworICAgIGlmICghbV9mcmFtZS0+cGFnZSgpLT52aWJyYXRvcigpLT5pc1N1cHBvcnQo
KSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgZWMgPSAwOworICAgIG1fZnJhbWUtPnBhZ2UoKS0+dmlicmF0b3IoKS0+dmli
cmF0ZShwYXR0ZXJuKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuaAppbmRleCA2MzIxYjMxLi5iMTE5YTMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2
aWdhdG9yLmgKQEAgLTI1LDYgKzI1LDExIEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorI2luY2x1ZGUg
IlZpYnJhdG9yLmgiCisjZW5kaWYKCiBuYW1lc3BhY2UgV2ViQ29yZSB7CgpAQCAtNzksNiArODQs
MTAgQEAgcHVibGljOgogICAgIEdhbWVwYWRMaXN0KiB3ZWJraXRHYW1lcGFkcygpOwogI2VuZGlm
CgorI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgdm9pZCB3ZWJraXRWaWJyYXRlKGNvbnN0IFZp
YnJhdGlvblBhdHRlcm4mIHBhdHRlcm4sIEV4Y2VwdGlvbkNvZGUmKTsKKyNlbmRpZgorCiBwcml2
YXRlOgogICAgIE5hdmlnYXRvcihGcmFtZSopOwogICAgIEZyYW1lKiBtX2ZyYW1lOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuaWRsCmluZGV4IDJiNjFjNWEuLmRlNjA1MzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5pZGwKQEAgLTY1LDYgKzY1LDEyIEBAIG1vZHVsZSB3aW5kb3cgewogI2lmIGRl
ZmluZWQoRU5BQkxFX0dBTUVQQUQpICYmIEVOQUJMRV9HQU1FUEFECiAgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGltZV0gR2FtZXBhZExpc3Qgd2Via2l0R2FtZXBhZHM7
CiAjZW5kaWYKKworI2lmIGRlZmluZWQoRU5BQkxFX1ZJQlJBVElPTikgJiYgRU5BQkxFX1ZJQlJB
VElPTgorICAgICAgICBbQ3VzdG9tXSB2b2lkIHdlYmtpdFZpYnJhdGUoaW4gQXJyYXkgcGF0dGVy
bikKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworI2VuZGlmCisKICAgICB9OwoK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDc3MjAwZmUuLmVmZGEyZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtODYsNiArODYsMTAgQEAKICNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnQuaCIKICNl
bmRpZgoKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorI2luY2x1ZGUgIlZpYnJhdG9yLmgiCisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewoKIHN0YXRpYyBIYXNoU2V0PFBhZ2UqPiogYWxsUGFn
ZXM7CkBAIC0xNzgsNiArMTgyLDkgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVu
dHMpCiAgICAgLCBtX3Zpc2liaWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSkK
ICNlbmRpZgogICAgICwgbV9kaXNwbGF5SUQoMCkKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAg
ICwgbV92aWJyYXRvcihhZG9wdFB0cihuZXcgVmlicmF0b3IocGFnZUNsaWVudHMudmlicmF0b3JD
bGllbnQpKSkKKyNlbmRpZgogewogICAgIGlmICghYWxsUGFnZXMpIHsKICAgICAgICAgYWxsUGFn
ZXMgPSBuZXcgSGFzaFNldDxQYWdlKj47CkBAIC0xMDY5LDYgKzEwNzYsOSBAQCBQYWdlOjpQYWdl
Q2xpZW50czo6UGFnZUNsaWVudHMoKQogICAgICwgc3BlZWNoSW5wdXRDbGllbnQoMCkKICAgICAs
IG5vdGlmaWNhdGlvbkNsaWVudCgwKQogICAgICwgdXNlck1lZGlhQ2xpZW50KDApCisjaWYgRU5B
QkxFKFZJQlJBVElPTikKKyAgICAsIHZpYnJhdG9yQ2xpZW50KDApCisjZW5kaWYKIHsKIH0KCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCmluZGV4IDQ5ODAxYjUuLmFmNzFhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC04OSw2
ICs4OSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
CiAgICAgY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyOwogI2VuZGlmCisjaWYgRU5BQkxFKFZJ
QlJBVElPTikKKyAgICBjbGFzcyBWaWJyYXRvcjsKKyAgICBjbGFzcyBWaWJyYXRvckNsaWVudDsK
KyNlbmRpZgoKICAgICB0eXBlZGVmIHVpbnQ2NF90IExpbmtIYXNoOwoKQEAgLTEyMSw2ICsxMjUs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBTcGVlY2hJbnB1dENsaWVudCog
c3BlZWNoSW5wdXRDbGllbnQ7CiAgICAgICAgICAgICBOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5v
dGlmaWNhdGlvbkNsaWVudDsKICAgICAgICAgICAgIFVzZXJNZWRpYUNsaWVudCogdXNlck1lZGlh
Q2xpZW50OworI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgICAgICAgICBWaWJyYXRvckNsaWVu
dCogdmlicmF0b3JDbGllbnQ7CisjZW5kaWYKICAgICAgICAgfTsKCiAgICAgICAgIFBhZ2UoUGFn
ZUNsaWVudHMmKTsKQEAgLTM0Myw3ICszNTAsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2Vu
ZGlmCgogICAgICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCB7IHJldHVy
biBtX2Rpc3BsYXlJRDsgfQotCisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICAgICBWaWJy
YXRvciogdmlicmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3ZpYnJhdG9yLmdldCgpOyB9CisjZW5k
aWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdEdyb3VwKCk7CgpAQCAtNDU0LDYg
KzQ2NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBhZ2VWaXNpYmlsaXR5U3Rh
dGUgbV92aXNpYmlsaXR5U3RhdGU7CiAjZW5kaWYKICAgICAgICAgUGxhdGZvcm1EaXNwbGF5SUQg
bV9kaXNwbGF5SUQ7CisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICAgICBPd25QdHI8Vmli
cmF0b3I+IG1fdmlicmF0b3I7CisjZW5kaWYKICAgICB9OwoKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlicmF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9WaWJyYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNjJlODNmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmli
cmF0b3IuY3BwCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIFNh
bXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmli
cmF0b3IuaCIKKworI2lmIEVOQUJMRShWSUJSQVRJT04pCisKKyNpbmNsdWRlICJWaWJyYXRvckNs
aWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1ZpYnJhdG9yOjpWaWJyYXRvcihWaWJy
YXRvckNsaWVudCogdmlicmF0b3JDbGllbnQpCisgICAgOiBtX3ZpYnJhdG9yQ2xpZW50KHZpYnJh
dG9yQ2xpZW50KQorICAgICwgbV90aW1lcih0aGlzLCAmVmlicmF0b3I6OnRpbWVyRmlyZWQpCisg
ICAgLCBtX2lzVmlicmF0aW5nKGZhbHNlKQoreworfQorCit2b2lkIFZpYnJhdG9yOjp2aWJyYXRl
KGNvbnN0IFZpYnJhdGlvblBhdHRlcm4mIHBhdHRlcm4pCit7CisgICAgaW50IGxlbmd0aCA9IHBh
dHRlcm4uc2l6ZSgpOworCisgICAgaWYgKCFsZW5ndGgpIHsKKyAgICAgICAgaWYgKG1faXNWaWJy
YXRpbmcpCisgICAgICAgICAgICBjYW5jZWxWaWJyYXRlKCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobGVuZ3RoID09IDEgJiYgcGF0dGVyblsw
XSA9PSAwKQorICAgICAgICBpZiAobV9pc1ZpYnJhdGluZykKKyAgICAgICAgICAgIGNhbmNlbFZp
YnJhdGUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFt
X2lzVmlicmF0aW5nICYmICFtX3RpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgbV9wYXR0ZXJu
ID0gcGF0dGVybjsKKyAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgfQorfQor
Cit2b2lkIFZpYnJhdG9yOjpjYW5jZWxWaWJyYXRlKCkKK3sKKyAgICBtX3ZpYnJhdG9yQ2xpZW50
LT5jYW5jZWxWaWJyYXRlKCk7Cit9CisKK2Jvb2wgVmlicmF0b3I6OmlzU3VwcG9ydCgpCit7Cisg
ICAgcmV0dXJuIG1fdmlicmF0b3JDbGllbnQtPmlzU3VwcG9ydCgpOworfQorCit2b2lkIFZpYnJh
dG9yOjp0aW1lckZpcmVkKFRpbWVyPFZpYnJhdG9yPiogdGltZXIpCit7CisgICAgQVNTRVJUX1VO
VVNFRCh0aW1lciwgdGltZXIgPT0gJm1fdGltZXIpOworICAgIG1fdGltZXIuc3RvcCgpOworICAg
IG1fdmlicmF0b3JDbGllbnQtPnZpYnJhdGUobV9wYXR0ZXJuWzBdKTsKKworICAgIGlmIChtX3Bh
dHRlcm4uc2l6ZSgpIDw9IDIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdGltZXIuc3RhcnRP
bmVTaG90KG1fcGF0dGVyblswXSArIG1fcGF0dGVyblsxXSk7CisgICAgbV9wYXR0ZXJuLnJlbW92
ZSgwLCAyKTsKK30KKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9WaWJyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWJyYXRvci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MTM1YjcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1ZpYnJhdG9yLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAgICBD
b3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFZpYnJhdG9yX2gKKyNkZWZp
bmUgVmlicmF0b3JfaAorCisjaW5jbHVkZSAiVGltZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIFZlY3Rvcjxsb25nPiBWaWJy
YXRpb25QYXR0ZXJuOworCitjbGFzcyBWaWJyYXRvckNsaWVudDsKKworY2xhc3MgVmlicmF0b3IK
K3sKK3B1YmxpYzoKKyAgICBWaWJyYXRvcihWaWJyYXRvckNsaWVudCopOworICAgIH5WaWJyYXRv
cigpIHsgfTsKKworICAgIHZvaWQgdmlicmF0ZShjb25zdCBWaWJyYXRpb25QYXR0ZXJuJik7Cisg
ICAgdm9pZCBjYW5jZWxWaWJyYXRlKCk7CisKKyAgICBib29sIGlzU3VwcG9ydCgpOworICAgIHZv
aWQgdGltZXJGaXJlZChUaW1lcjxWaWJyYXRvcj4qKTsKKworcHJpdmF0ZToKKyAgICBWaWJyYXRv
ckNsaWVudCogbV92aWJyYXRvckNsaWVudDsKKyAgICBUaW1lcjxWaWJyYXRvcj4gbV90aW1lcjsK
KyAgICBib29sIG1faXNWaWJyYXRpbmc7CisgICAgVmlicmF0aW9uUGF0dGVybiBtX3BhdHRlcm47
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBWaWJyYXRvcl9oCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlicmF0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVmlicmF0b3JDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi41N2ZiZTZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9WaWJyYXRvckNsaWVudC5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgICAgQ29weXJpZ2h0IChD
KSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisKKyNpZm5kZWYgVmlicmF0b3JDbGllbnRf
aAorI2RlZmluZSBWaWJyYXRvckNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgVmlicmF0b3JDbGllbnQKK3sKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgdmlicmF0ZShj
b25zdCBsb25nJiB0aW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFZpYnJhdGUoKSA9
IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNTdXBwb3J0KCkgPSAwOworCitwcm90ZWN0ZWQ6Cisg
ICAgdmlydHVhbCB+VmlicmF0b3JDbGllbnQoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFZpYnJhdG9yQ2xpZW50RWZsX2gKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119395</attachid>
            <date>2011-12-15 01:03:00 -0800</date>
            <delta_ts>2011-12-22 01:39:58 -0800</delta_ts>
            <desc>Patch for the vibration API</desc>
            <filename>vibration.patch</filename>
            <type>text/plain</type>
            <size>14033</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggM2QxNjY4Ni4uZDZhZmYxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyMDQsNiArMjIwNCwxMiBAQCBJRiAoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FKQogICAgICkKIEVORElGICgpCiAKK0lGIChFTkFCTEVfVklCUkFUSU9OKQorICAgIExJ
U1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBwYWdlL1ZpYnJhdG9yLmNwcAorICAg
ICkKK0VORElGICgpCisKICMgTW9kdWxlcyB0aGF0IHRoZSBiaW5kaW5ncyBnZW5lcmF0b3Igc2Ny
aXB0cyBtYXkgdXNlCiBTRVQoU0NSSVBUU19CSU5ESU5HUwogICAgICR7V0VCQ09SRV9ESVJ9L2Jp
bmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFjZGYxZC4uNjRjMDUx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDExLTEyLTE1ICBLaWhvbmcgS3dvbiAg
PGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIEFkZCBhIG5ldyBBUEkgZm9yIHRo
ZSBWaWJyYXRpb24gQVBJKFczQykuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MjAxMAorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy8yMDA5L2RhcC92
aWJyYXRpb24vCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiBUaGlzIGZlYXR1cmUgY2FuJ3QgbWFrZSBhIHRlc3QgY2FzZSBhdCBh
bGwuCisgICAgICAgIFRoZXJlIGlzIG9ubHkgb25lIG1ldGhvZCBmb3IgdmlicmF0aW9uIHdpdGhv
dXQgcmV0dXJuIHZhbHVlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
VXNlSlNDLmNtYWtlOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTmF2aWdhdG9yOjp3ZWJraXRWaWJyYXRlKToKKyAgICAg
ICAgICBUbyBnZXQgYW4gYXJyYXkgdHlwZSBwYXJhbWV0ZXIuCisgICAgICAgICAgVGhlcmUgaXMg
bm8gd2F5IHRvIGdldCBhbiBhcnJheSB0eXBlIHBhcmFtZXRlci4KKyAgICAgICAgKiBwYWdlL05h
dmlnYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OndlYmtpdFZpYnJhdGUp
OgorICAgICAgICAgIEhhbmRsaW5nIHZpYnJhdG9yIG9wZXJhdGlvbiBieSB2YXJpb3VzIHBhcmFt
ZXRlciB0eXBlLgorICAgICAgICAgIEFycmF5IGZvciBwYXR0ZXJuLCBsb25nIGZvciB0aW1lLCAn
MCcgb3IgIltdIiBmb3IgY2FuY2VsLgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAg
ICAgICogcGFnZS9OYXZpZ2F0b3IuaWRsOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2VD
bGllbnRzOjpQYWdlQ2xpZW50cyk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjp2aWJyYXRvcik6CisgICAgICAgICogcGFnZS9WaWJyYXRvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0b3I6OlZpYnJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpYnJhdG9yOjp2aWJyYXRlKToKKyAgICAgICAgICBUcmFuc2ZlciBhbmQgc2VuZCBh
IHZpYnJhdGUgbWVzc2FnZSBmb3IgZWFjaCB0eXBlIG9mIHZpYnJhdGlvbi4oRm9yIGFycmF5LCBs
b25nIGFuZCBjYW5jZWwpCisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRvcjo6Y2FuY2VsVmlicmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRvcjo6aXNTdXBwb3J0KToKKyAgICAgICAgKFdl
YkNvcmU6OlZpYnJhdG9yOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBwYWdlL1ZpYnJhdG9yLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0b3I6On5WaWJyYXRvcik6CisgICAgICAg
ICogcGFnZS9WaWJyYXRvckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpYnJh
dG9yQ2xpZW50Ojp+VmlicmF0b3JDbGllbnQpOgorCiAyMDExLTEyLTA1ICBCZW5qYW1pbiBQb3Vs
YWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwc3RyZWFtIHRoZSBDdXJzb3Ig
aW1wbGVtZW50YXRpb24gb2YgaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0Mu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggODI1MzJhYy4uNzljMmU1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1VzZUpTQy5jbWFrZQpAQCAtMTI2LDYgKzEyNiw3IEBAIExJU1QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20u
Y3BwCiAgICAgYmluZGluZ3MvanMvSlNYUGF0aFJlc3VsdEN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwCisgICAgYmluZGluZ3MvanMvSlNOYXZpZ2F0
b3JDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCiAgICAgYmluZGluZ3MvanMv
U2NoZWR1bGVkQWN0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
YXZpZ2F0b3JDdXN0b20uY3BwCmluZGV4IDEwN2RhZWIuLjM3OGY5OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKQEAgLTI1LDggKzI1
LDEwIEBACiAKICNpbmNsdWRlICJDYWxsYmFja0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAjaW5jbHVkZSAiSlNOYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3JVc2VyTWVk
aWFTdWNjZXNzQ2FsbGJhY2suaCIKKyNlbmRpZgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MCw0ICs2Miw0NyBAQCBKU1ZhbHVlIEpTTmF2aWdhdG9y
Ojp3ZWJraXRHZXRVc2VyTWVkaWEoRXhlY1N0YXRlKiBleGVjKQogfQogI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorSlNWYWx1ZSBKU05hdmln
YXRvcjo6d2Via2l0VmlicmF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgVmlicmF0aW9uUGF0dGVybiB2aWJyYXRpb25BcnJheTsKKyAgICBKU1Zh
bHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgdW5zaWduZWQgbGVuZ3RoOworCisg
ICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCisgICAgICAgIHZpYnJhdGlvbkFycmF5LmFw
cGVuZCgwKTsKKworICAgIGlmICh2YWx1ZS5pc1VJbnQzMigpKQorICAgICAgICB2aWJyYXRpb25B
cnJheS5hcHBlbmQodmFsdWUuYXNJbnQzMigpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IHRvSlNTZXF1ZW5jZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgbGVuZ3Ro
KTsKKworICAgICAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgICAgIHZpYnJhdGlvbkFycmF5LmFw
cGVuZCgwKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBpKTsKKyAg
ICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKworICAgICAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpIHsKKyAgICAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgREFUQV9DTE9O
RV9FUlIpOworICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAodmFsdWUuaXNVSW50MzIoKSkKKyAgICAgICAgICAgICAg
ICB2aWJyYXRpb25BcnJheS5hcHBlbmQodmFsdWUuYXNJbnQzMigpKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIG1faW1wbC0+d2Via2l0VmlicmF0ZSh2aWJyYXRpb25BcnJheSwgZWMpOworCisg
ICAgaWYgKGVjKQorICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworCisgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
Y3BwCmluZGV4IGJjMWUwNTMuLjkxOTA3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAK
QEAgLTU2LDYgKzU2LDEwIEBACiAjaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorI2luY2x1ZGUgIlZpYnJhdG9yLmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBOYXZpZ2F0b3I6Ok5hdmlnYXRvcihGcmFtZSogZnJh
bWUpCkBAIC0zMTksNCArMzIzLDI1IEBAIEdhbWVwYWRMaXN0KiBOYXZpZ2F0b3I6OndlYmtpdEdh
bWVwYWRzKCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKK3ZvaWQgTmF2aWdh
dG9yOjp3ZWJraXRWaWJyYXRlKGNvbnN0IFZpYnJhdGlvblBhdHRlcm4mIHBhdHRlcm4sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIGlmICghcGF0dGVybi5zaXplKCkpCisgICAgICAgIHJldHVy
bjsKKworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIGlmIChtX2ZyYW1lLT5w
YWdlKCktPnZpc2liaWxpdHlTdGF0ZSgpID09IFBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW4pCisg
ICAgICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKS0+dmlicmF0
b3IoKS0+aXNTdXBwb3J0KCkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGVjID0gMDsKKyAgICBtX2ZyYW1lLT5wYWdlKCkt
PnZpYnJhdG9yKCktPnZpYnJhdGUocGF0dGVybik7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKaW5kZXggNjMyMWIzMS4uMmM3M2JkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCkBAIC0yNSw2ICsyNSwxMSBAQAogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYgRU5BQkxFKFZJQlJB
VElPTikKKyNpbmNsdWRlICJWaWJyYXRvci5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNzksNiArODQsMTAgQEAgcHVibGljOgogICAgIEdhbWVwYWRMaXN0KiB3ZWJraXRH
YW1lcGFkcygpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgIHZvaWQgd2Vi
a2l0VmlicmF0ZShjb25zdCBWaWJyYXRpb25QYXR0ZXJuJiwgRXhjZXB0aW9uQ29kZSYpOworI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgTmF2aWdhdG9yKEZyYW1lKik7CiAgICAgRnJhbWUqIG1fZnJh
bWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwKaW5kZXggMmI2MWM1YS4uZGU2MDUzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbApAQCAtNjUsNiArNjUsMTIgQEAgbW9kdWxlIHdpbmRv
dyB7CiAjaWYgZGVmaW5lZChFTkFCTEVfR0FNRVBBRCkgJiYgRU5BQkxFX0dBTUVQQUQKICAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1lXSBHYW1lcGFkTGlzdCB3ZWJr
aXRHYW1lcGFkczsKICNlbmRpZgorCisjaWYgZGVmaW5lZChFTkFCTEVfVklCUkFUSU9OKSAmJiBF
TkFCTEVfVklCUkFUSU9OCisgICAgICAgIFtDdXN0b21dIHZvaWQgd2Via2l0VmlicmF0ZShpbiBB
cnJheSBwYXR0ZXJuKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisjZW5kaWYK
KwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDc3MjAwZmUuLmVmZGEyZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtODYsNiArODYsMTAgQEAKICNpbmNsdWRlICJVc2VyTWVkaWFD
bGllbnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyNpbmNsdWRlICJWaWJy
YXRvci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEhhc2hTZXQ8
UGFnZSo+KiBhbGxQYWdlczsKQEAgLTE3OCw2ICsxODIsOSBAQCBQYWdlOjpQYWdlKFBhZ2VDbGll
bnRzJiBwYWdlQ2xpZW50cykKICAgICAsIG1fdmlzaWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmlsaXR5
U3RhdGVWaXNpYmxlKQogI2VuZGlmCiAgICAgLCBtX2Rpc3BsYXlJRCgwKQorI2lmIEVOQUJMRShW
SUJSQVRJT04pCisgICAgLCBtX3ZpYnJhdG9yKGFkb3B0UHRyKG5ldyBWaWJyYXRvcihwYWdlQ2xp
ZW50cy52aWJyYXRvckNsaWVudCkpKQorI2VuZGlmCiB7CiAgICAgaWYgKCFhbGxQYWdlcykgewog
ICAgICAgICBhbGxQYWdlcyA9IG5ldyBIYXNoU2V0PFBhZ2UqPjsKQEAgLTEwNjksNiArMTA3Niw5
IEBAIFBhZ2U6OlBhZ2VDbGllbnRzOjpQYWdlQ2xpZW50cygpCiAgICAgLCBzcGVlY2hJbnB1dENs
aWVudCgwKQogICAgICwgbm90aWZpY2F0aW9uQ2xpZW50KDApCiAgICAgLCB1c2VyTWVkaWFDbGll
bnQoMCkKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICwgdmlicmF0b3JDbGllbnQoMCkKKyNl
bmRpZgogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDQ5ODAxYjUuLmFmNzFhNGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCkBAIC04OSw2ICs4OSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCiAgICAgY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyOwogI2VuZGlm
CisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICBjbGFzcyBWaWJyYXRvcjsKKyAgICBjbGFzcyBW
aWJyYXRvckNsaWVudDsKKyNlbmRpZgogCiAgICAgdHlwZWRlZiB1aW50NjRfdCBMaW5rSGFzaDsK
IApAQCAtMTIxLDYgKzEyNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFNw
ZWVjaElucHV0Q2xpZW50KiBzcGVlY2hJbnB1dENsaWVudDsKICAgICAgICAgICAgIE5vdGlmaWNh
dGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uQ2xpZW50OwogICAgICAgICAgICAgVXNlck1lZGlh
Q2xpZW50KiB1c2VyTWVkaWFDbGllbnQ7CisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICAgICAg
ICAgIFZpYnJhdG9yQ2xpZW50KiB2aWJyYXRvckNsaWVudDsKKyNlbmRpZgogICAgICAgICB9Owog
CiAgICAgICAgIFBhZ2UoUGFnZUNsaWVudHMmKTsKQEAgLTM0Myw3ICszNTAsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxh
eUlEKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KLSAgICAgICAgCisKKyNpZiBFTkFC
TEUoVklCUkFUSU9OKQorICAgICAgICBWaWJyYXRvciogdmlicmF0b3IoKSBjb25zdCB7IHJldHVy
biBtX3ZpYnJhdG9yLmdldCgpOyB9CisjZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZv
aWQgaW5pdEdyb3VwKCk7CiAKQEAgLTQ1NCw2ICs0NjUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBQYWdlVmlzaWJpbGl0eVN0YXRlIG1fdmlzaWJpbGl0eVN0YXRlOwogI2VuZGlm
CiAgICAgICAgIFBsYXRmb3JtRGlzcGxheUlEIG1fZGlzcGxheUlEOworCisjaWYgRU5BQkxFKFZJ
QlJBVElPTikKKyAgICAgICAgT3duUHRyPFZpYnJhdG9yPiBtX3ZpYnJhdG9yOworI2VuZGlmCiAg
ICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9WaWJyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpYnJhdG9yLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmExMTE0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWJyYXRvci5jcHAKQEAgLTAsMCArMSw4NSBAQAor
LyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWaWJyYXRvci5oIgorCisjaWYgRU5BQkxFKFZJQlJB
VElPTikKKworI2luY2x1ZGUgIlZpYnJhdG9yQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworVmlicmF0b3I6OlZpYnJhdG9yKFZpYnJhdG9yQ2xpZW50KiB2aWJyYXRvckNsaWVudCkK
KyAgICA6IG1fdmlicmF0b3JDbGllbnQodmlicmF0b3JDbGllbnQpCisgICAgLCBtX3RpbWVyKHRo
aXMsICZWaWJyYXRvcjo6dGltZXJGaXJlZCkKKyAgICAsIG1faXNWaWJyYXRpbmcoZmFsc2UpCit7
Cit9CisKK3ZvaWQgVmlicmF0b3I6OnZpYnJhdGUoY29uc3QgVmlicmF0aW9uUGF0dGVybiYgcGF0
dGVybikKK3sKKyAgICBpbnQgbGVuZ3RoID0gcGF0dGVybi5zaXplKCk7CisKKyAgICBpZiAoIWxl
bmd0aCkgeworICAgICAgICBpZiAobV9pc1ZpYnJhdGluZykKKyAgICAgICAgICAgIGNhbmNlbFZp
YnJhdGUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmICgobGVuZ3RoID09IDEpICYmICghcGF0dGVyblswXSkpCisgICAgICAgIGlmIChtX2lzVmli
cmF0aW5nKQorICAgICAgICAgICAgY2FuY2VsVmlicmF0ZSgpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1faXNWaWJyYXRpbmcgJiYgIW1fdGltZXIuaXNB
Y3RpdmUoKSkgeworICAgICAgICBtX3BhdHRlcm4gPSBwYXR0ZXJuOworICAgICAgICBtX3RpbWVy
LnN0YXJ0T25lU2hvdCgwKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlicmF0b3I6OmNhbmNlbFZpYnJh
dGUoKQoreworICAgIG1fdmlicmF0b3JDbGllbnQtPmNhbmNlbFZpYnJhdGUoKTsKK30KKworYm9v
bCBWaWJyYXRvcjo6aXNTdXBwb3J0KCkKK3sKKyAgICByZXR1cm4gbV92aWJyYXRvckNsaWVudC0+
aXNTdXBwb3J0KCk7Cit9CisKK3ZvaWQgVmlicmF0b3I6OnRpbWVyRmlyZWQoVGltZXI8VmlicmF0
b3I+KiB0aW1lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV90aW1l
cik7CisgICAgbV90aW1lci5zdG9wKCk7CisgICAgbV92aWJyYXRvckNsaWVudC0+dmlicmF0ZSht
X3BhdHRlcm5bMF0pOworCisgICAgaWYgKG1fcGF0dGVybi5zaXplKCkgPD0gMikKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV90aW1lci5zdGFydE9uZVNob3QobV9wYXR0ZXJuWzBdICsgbV9wYXR0
ZXJuWzFdKTsKKyAgICBtX3BhdHRlcm4ucmVtb3ZlKDAsIDIpOworfQorCit9CisKKyNlbmRpZgor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpYnJhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1ZpYnJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NGYzN2Y1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlicmF0b3Iu
aApAQCAtMCwwICsxLDUzIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVs
ZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKyNpZm5kZWYgVmlicmF0b3JfaAorI2RlZmluZSBWaWJyYXRvcl9oCisKKyNpbmNsdWRlICJU
aW1lci5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3R5cGVkZWYgVmVjdG9yPGxvbmc+IFZpYnJhdGlvblBhdHRlcm47CisKK2NsYXNzIFZpYnJh
dG9yQ2xpZW50OworCitjbGFzcyBWaWJyYXRvciB7CitwdWJsaWM6CisgICAgVmlicmF0b3IoVmli
cmF0b3JDbGllbnQqKTsKKyAgICB+VmlicmF0b3IoKSB7IH07CisKKyAgICB2b2lkIHZpYnJhdGUo
Y29uc3QgVmlicmF0aW9uUGF0dGVybiYpOworICAgIHZvaWQgY2FuY2VsVmlicmF0ZSgpOworCisg
ICAgYm9vbCBpc1N1cHBvcnQoKTsKKyAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8VmlicmF0b3I+
Kik7CisKK3ByaXZhdGU6CisgICAgVmlicmF0b3JDbGllbnQqIG1fdmlicmF0b3JDbGllbnQ7Cisg
ICAgVGltZXI8VmlicmF0b3I+IG1fdGltZXI7CisgICAgYm9vbCBtX2lzVmlicmF0aW5nOworICAg
IFZpYnJhdGlvblBhdHRlcm4gbV9wYXR0ZXJuOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gVmlicmF0b3JfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1ZpYnJhdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpYnJhdG9yQ2xpZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcwYmEwZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlicmF0b3JDbGllbnQuaApAQCAtMCwwICsx
LDQwIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworCisjaWZuZGVmIFZpYnJhdG9yQ2xpZW50X2gKKyNkZWZpbmUgVmlicmF0b3JDbGllbnRfaAor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpYnJhdG9yQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIHZvaWQgdmlicmF0ZShjb25zdCBsb25nJiB0aW1lKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGNhbmNlbFZpYnJhdGUoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNTdXBw
b3J0KCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+VmlicmF0b3JDbGllbnQoKSB7
IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFZpYnJhdG9yQ2xp
ZW50RWZsX2gKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120289</attachid>
            <date>2011-12-22 01:39:58 -0800</date>
            <delta_ts>2011-12-22 20:47:55 -0800</delta_ts>
            <desc>Patch for the vibration API</desc>
            <filename>vibration.patch</filename>
            <type>text/plain</type>
            <size>15366</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggM2QxNjY4Ni4uZDZhZmYxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyMDQsNiArMjIwNCwxMiBAQCBJRiAoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FKQogICAgICkKIEVORElGICgpCiAKK0lGIChFTkFCTEVfVklCUkFUSU9OKQorICAgIExJ
U1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBwYWdlL1ZpYnJhdG9yLmNwcAorICAg
ICkKK0VORElGICgpCisKICMgTW9kdWxlcyB0aGF0IHRoZSBiaW5kaW5ncyBnZW5lcmF0b3Igc2Ny
aXB0cyBtYXkgdXNlCiBTRVQoU0NSSVBUU19CSU5ESU5HUwogICAgICR7V0VCQ09SRV9ESVJ9L2Jp
bmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFjZGYxZC4uYzdkZWZh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDExLTEyLTIyICBLaWhvbmcgS3dvbiAg
PGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIEFkZCBhIG5ldyBBUEkgZm9yIHRo
ZSBWaWJyYXRpb24gQVBJKFczQykuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MjAxMAorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy8yMDA5L2RhcC92
aWJyYXRpb24vCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiBUaGlzIGZlYXR1cmUgY2FuJ3QgbWFrZSBhIHRlc3QgY2FzZSBhdCBh
bGwuCisgICAgICAgIFRoZXJlIGlzIG9ubHkgb25lIG1ldGhvZCBmb3IgdmlicmF0aW9uIHdpdGhv
dXQgcmV0dXJuIHZhbHVlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
VXNlSlNDLmNtYWtlOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTmF2aWdhdG9yOjp3ZWJraXRWaWJyYXRlKToKKyAgICAg
ICAgICBUbyBnZXQgYW4gYXJyYXkgdHlwZSBwYXJhbWV0ZXIuCisgICAgICAgICAgVGhlcmUgaXMg
bm8gd2F5IHRvIGdldCBhbiBhcnJheSB0eXBlIHBhcmFtZXRlci4KKyAgICAgICAgKiBwYWdlL05h
dmlnYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OndlYmtpdFZpYnJhdGUp
OgorICAgICAgICAgIEhhbmRsaW5nIHZpYnJhdG9yIG9wZXJhdGlvbiBieSB2YXJpb3VzIHBhcmFt
ZXRlciB0eXBlLgorICAgICAgICAgIEFycmF5IGZvciBwYXR0ZXJuLCBsb25nIGZvciB0aW1lLCAn
MCcgb3IgIltdIiBmb3IgY2FuY2VsLgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAg
ICAgICogcGFnZS9OYXZpZ2F0b3IuaWRsOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2VD
bGllbnRzOjpQYWdlQ2xpZW50cyk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjp2aWJyYXRvcik6CisgICAgICAgICogcGFnZS9WaWJyYXRvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0b3I6OlZpYnJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpYnJhdG9yOjp2aWJyYXRlKToKKyAgICAgICAgICBUcmFuc2ZlciBhbmQgc2VuZCBh
IHZpYnJhdGUgbWVzc2FnZSBmb3IgZWFjaCB0eXBlIG9mIHZpYnJhdGlvbi4oRm9yIGFycmF5LCBs
b25nIGFuZCBjYW5jZWwpCisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRvcjo6Y2FuY2VsVmlicmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRvcjo6aXNTdXBwb3J0KToKKyAgICAgICAgKFdl
YkNvcmU6OlZpYnJhdG9yOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBwYWdlL1ZpYnJhdG9yLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0b3I6On5WaWJyYXRvcik6CisgICAgICAg
ICogcGFnZS9WaWJyYXRvckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpYnJh
dG9yQ2xpZW50Ojp+VmlicmF0b3JDbGllbnQpOgorCiAyMDExLTEyLTA1ICBCZW5qYW1pbiBQb3Vs
YWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwc3RyZWFtIHRoZSBDdXJzb3Ig
aW1wbGVtZW50YXRpb24gb2YgaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0Mu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggODI1MzJhYy4uOTBkZDhj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1VzZUpTQy5jbWFrZQpAQCAtMjQxLDYgKzI0MSwxMiBAQCBJRiAoRU5BQkxFX1dFQkdM
KQogICAgICkKIEVORElGICgpCiAKK0lGIChFTkFCTEVfVklCUkFUSU9OKQorICAgIExJU1QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3Rv
bS5jcHAKKyAgICApCitFTkRJRiAoKQorCiBMSVNUKEFQUEVORCBTQ1JJUFRTX0JJTkRJTkdTCiAg
ICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCiApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKaW5k
ZXggMTA3ZGFlYi4uNmY0MThmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTmF2aWdhdG9yQ3VzdG9tLmNwcApAQCAtMjUsOCArMjUsMTAgQEAKIAogI2luY2x1ZGUgIkNh
bGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKICNpbmNsdWRlICJKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJh
Y2suaCIKICNpbmNsdWRlICJKU05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oIgor
I2VuZGlmCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTYwLDQgKzYyLDQ2IEBAIEpTVmFsdWUgSlNOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYShF
eGVjU3RhdGUqIGV4ZWMpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2lm
IEVOQUJMRShWSUJSQVRJT04pCitKU1ZhbHVlIEpTTmF2aWdhdG9yOjp3ZWJraXRWaWJyYXRlKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWaWJyYXRpb25QYXR0ZXJuIHZpYnJhdGlvbkFycmF5Owor
ICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQorICAgICAgICB2aWJyYXRpb25BcnJheS5h
cHBlbmQoMCk7CisKKyAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAg
aWYgKHZhbHVlLmlzVUludDMyKCkpCisgICAgICAgIHZpYnJhdGlvbkFycmF5LmFwcGVuZCh2YWx1
ZS5hc0ludDMyKCkpOworICAgIGVsc2UgeworICAgICAgICB1bnNpZ25lZCBsZW5ndGg7CisgICAg
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0b0pTU2VxdWVuY2UoZXhlYywgdmFsdWUsIGxlbmd0aCk7
CisKKyAgICAgICAgaWYgKCFsZW5ndGgpCisgICAgICAgICAgICB2aWJyYXRpb25BcnJheS5hcHBl
bmQoMCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7
CisgICAgICAgICAgICB2YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIGkpOworICAgICAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworCisgICAgICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSB8fCAh
dmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVj
LCBEQVRBX0NMT05FX0VSUik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc1VJbnQzMigpKQorICAg
ICAgICAgICAgICAgIHZpYnJhdGlvbkFycmF5LmFwcGVuZCh2YWx1ZS5hc0ludDMyKCkpOworICAg
ICAgICB9CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgbV9pbXBsLT53
ZWJraXRWaWJyYXRlKHZpYnJhdGlvbkFycmF5LCBlYyk7CisKKyAgICBpZiAoZWMpCisgICAgICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
K30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggYmMxZTA1My4u
ZDlhMTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtNTYsNiArNTYsMTAgQEAK
ICNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShWSUJS
QVRJT04pCisjaW5jbHVkZSAiVmlicmF0b3IuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIE5hdmlnYXRvcjo6TmF2aWdhdG9yKEZyYW1lKiBmcmFtZSkKQEAgLTMxOSw0ICszMjMs
MjUgQEAgR2FtZXBhZExpc3QqIE5hdmlnYXRvcjo6d2Via2l0R2FtZXBhZHMoKQogfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQordm9pZCBOYXZpZ2F0b3I6OndlYmtpdFZpYnJhdGUo
Y29uc3QgVmlicmF0aW9uUGF0dGVybiYgcGF0dGVybiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgaWYgKCFwYXR0ZXJuLnNpemUoKSB8fCAhbV9mcmFtZS0+cGFnZSgpKQorICAgICAgICByZXR1
cm47CisKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBpZiAobV9mcmFtZS0+
cGFnZSgpLT52aXNpYmlsaXR5U3RhdGUoKSA9PSBQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuKQor
ICAgICAgICByZXR1cm47CisjZW5kaWYKKworICAgIGlmICghbV9mcmFtZS0+cGFnZSgpLT52aWJy
YXRvcigpLT5pc1N1cHBvcnQoKSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZWMgPSAwOworICAgIG1fZnJhbWUtPnBhZ2Uo
KS0+dmlicmF0b3IoKS0+dmlicmF0ZShwYXR0ZXJuKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAppbmRleCA2MzIxYjMxLi5jYzY2YTA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKQEAgLTI2LDYgKzI2LDEwIEBACiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKKyNpZiBFTkFCTEUo
VklCUkFUSU9OKQorI2luY2x1ZGUgIlZpYnJhdG9yLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBET01NaW1lVHlwZUFycmF5OwpAQCAtNzksNiArODMsMTAgQEAgcHVi
bGljOgogICAgIEdhbWVwYWRMaXN0KiB3ZWJraXRHYW1lcGFkcygpOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoVklCUkFUSU9OKQorICAgIHZvaWQgd2Via2l0VmlicmF0ZShjb25zdCBWaWJyYXRpb25Q
YXR0ZXJuJiwgRXhjZXB0aW9uQ29kZSYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmF2aWdh
dG9yKEZyYW1lKik7CiAgICAgRnJhbWUqIG1fZnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5p
ZGwKaW5kZXggMmI2MWM1YS4uZGU2MDUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbApA
QCAtNjUsNiArNjUsMTIgQEAgbW9kdWxlIHdpbmRvdyB7CiAjaWYgZGVmaW5lZChFTkFCTEVfR0FN
RVBBRCkgJiYgRU5BQkxFX0dBTUVQQUQKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtFbmFi
bGVkQXRSdW50aW1lXSBHYW1lcGFkTGlzdCB3ZWJraXRHYW1lcGFkczsKICNlbmRpZgorCisjaWYg
ZGVmaW5lZChFTkFCTEVfVklCUkFUSU9OKSAmJiBFTkFCTEVfVklCUkFUSU9OCisgICAgICAgIFtD
dXN0b21dIHZvaWQgd2Via2l0VmlicmF0ZShpbiBBcnJheSBwYXR0ZXJuKQorICAgICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisjZW5kaWYKKwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCmluZGV4IDc3MjAwZmUuLmVmZGEyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtODYsNiAr
ODYsMTAgQEAKICNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnQuaCIKICNlbmRpZgogCisjaWYgRU5B
QkxFKFZJQlJBVElPTikKKyNpbmNsdWRlICJWaWJyYXRvci5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIEhhc2hTZXQ8UGFnZSo+KiBhbGxQYWdlczsKQEAgLTE3OCw2
ICsxODIsOSBAQCBQYWdlOjpQYWdlKFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50cykKICAgICAsIG1f
dmlzaWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKQogI2VuZGlmCiAgICAg
LCBtX2Rpc3BsYXlJRCgwKQorI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgLCBtX3ZpYnJhdG9y
KGFkb3B0UHRyKG5ldyBWaWJyYXRvcihwYWdlQ2xpZW50cy52aWJyYXRvckNsaWVudCkpKQorI2Vu
ZGlmCiB7CiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5ldyBIYXNo
U2V0PFBhZ2UqPjsKQEAgLTEwNjksNiArMTA3Niw5IEBAIFBhZ2U6OlBhZ2VDbGllbnRzOjpQYWdl
Q2xpZW50cygpCiAgICAgLCBzcGVlY2hJbnB1dENsaWVudCgwKQogICAgICwgbm90aWZpY2F0aW9u
Q2xpZW50KDApCiAgICAgLCB1c2VyTWVkaWFDbGllbnQoMCkKKyNpZiBFTkFCTEUoVklCUkFUSU9O
KQorICAgICwgdmlicmF0b3JDbGllbnQoMCkKKyNlbmRpZgogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmlu
ZGV4IDQ5ODAxYjUuLmFmNzFhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC04OSw2ICs4OSwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgY2xhc3Mg
Tm90aWZpY2F0aW9uUHJlc2VudGVyOwogI2VuZGlmCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAg
ICBjbGFzcyBWaWJyYXRvcjsKKyAgICBjbGFzcyBWaWJyYXRvckNsaWVudDsKKyNlbmRpZgogCiAg
ICAgdHlwZWRlZiB1aW50NjRfdCBMaW5rSGFzaDsKIApAQCAtMTIxLDYgKzEyNSw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFNwZWVjaElucHV0Q2xpZW50KiBzcGVlY2hJbnB1
dENsaWVudDsKICAgICAgICAgICAgIE5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9u
Q2xpZW50OwogICAgICAgICAgICAgVXNlck1lZGlhQ2xpZW50KiB1c2VyTWVkaWFDbGllbnQ7Cisj
aWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICAgICAgICAgIFZpYnJhdG9yQ2xpZW50KiB2aWJyYXRv
ckNsaWVudDsKKyNlbmRpZgogICAgICAgICB9OwogCiAgICAgICAgIFBhZ2UoUGFnZUNsaWVudHMm
KTsKQEAgLTM0Myw3ICszNTAsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAg
ICAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4gbV9kaXNw
bGF5SUQ7IH0KLSAgICAgICAgCisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICAgICBWaWJy
YXRvciogdmlicmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3ZpYnJhdG9yLmdldCgpOyB9CisjZW5k
aWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdEdyb3VwKCk7CiAKQEAgLTQ1NCw2
ICs0NjUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYWdlVmlzaWJpbGl0eVN0
YXRlIG1fdmlzaWJpbGl0eVN0YXRlOwogI2VuZGlmCiAgICAgICAgIFBsYXRmb3JtRGlzcGxheUlE
IG1fZGlzcGxheUlEOworCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICAgICAgT3duUHRyPFZp
YnJhdG9yPiBtX3ZpYnJhdG9yOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWJyYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1ZpYnJhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iOGZmNzQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9W
aWJyYXRvci5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEg
U2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJW
aWJyYXRvci5oIgorCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKworI2luY2x1ZGUgIlZpYnJhdG9y
Q2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVmlicmF0b3I6OlZpYnJhdG9yKFZp
YnJhdG9yQ2xpZW50KiB2aWJyYXRvckNsaWVudCkKKyAgICA6IG1fdmlicmF0b3JDbGllbnQodmli
cmF0b3JDbGllbnQpCisgICAgLCBtX3RpbWVyKHRoaXMsICZWaWJyYXRvcjo6dGltZXJGaXJlZCkK
KyAgICAsIG1faXNWaWJyYXRpbmcoZmFsc2UpCit7Cit9CisKK3ZvaWQgVmlicmF0b3I6OnZpYnJh
dGUoY29uc3QgVmlicmF0aW9uUGF0dGVybiYgcGF0dGVybikKK3sKKyAgICBpbnQgbGVuZ3RoID0g
cGF0dGVybi5zaXplKCk7CisKKyAgICBpZiAoIWxlbmd0aCkgeworICAgICAgICBpZiAobV9pc1Zp
YnJhdGluZykKKyAgICAgICAgICAgIGNhbmNlbFZpYnJhdGUoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChsZW5ndGggPT0gMSAmJiAhcGF0dGVyblswXSkgeworICAgICAgICBp
ZiAobV9pc1ZpYnJhdGluZykKKyAgICAgICAgICAgIGNhbmNlbFZpYnJhdGUoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9pc1ZpYnJhdGluZyAmJiAhbV90aW1lci5pc0Fj
dGl2ZSgpKSB7CisgICAgICAgIG1fcGF0dGVybiA9IHBhdHRlcm47CisgICAgICAgIG1fdGltZXIu
c3RhcnRPbmVTaG90KDApOworICAgIH0KK30KKwordm9pZCBWaWJyYXRvcjo6Y2FuY2VsVmlicmF0
ZSgpCit7CisgICAgbV92aWJyYXRvckNsaWVudC0+Y2FuY2VsVmlicmF0ZSgpOworfQorCitib29s
IFZpYnJhdG9yOjppc1N1cHBvcnQoKQoreworICAgIHJldHVybiBtX3ZpYnJhdG9yQ2xpZW50LT5p
c1N1cHBvcnQoKTsKK30KKwordm9pZCBWaWJyYXRvcjo6dGltZXJGaXJlZChUaW1lcjxWaWJyYXRv
cj4qIHRpbWVyKQoreworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX3RpbWVy
KTsKKyAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICBtX3ZpYnJhdG9yQ2xpZW50LT52aWJyYXRlKG1f
cGF0dGVyblswXSk7CisKKyAgICBpZiAobV9wYXR0ZXJuLnNpemUoKSA8PSAyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChtX3BhdHRlcm5bMF0gKyBtX3BhdHRl
cm5bMV0pOworICAgIG1fcGF0dGVybi5yZW1vdmUoMCwgMik7Cit9CisKK30KKworI2VuZGlmCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlicmF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVmlicmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40
ZjM3ZjViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWJyYXRvci5o
CkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI2lmbmRlZiBWaWJyYXRvcl9oCisjZGVmaW5lIFZpYnJhdG9yX2gKKworI2luY2x1ZGUgIlRp
bWVyLmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KwordHlwZWRlZiBWZWN0b3I8bG9uZz4gVmlicmF0aW9uUGF0dGVybjsKKworY2xhc3MgVmlicmF0
b3JDbGllbnQ7CisKK2NsYXNzIFZpYnJhdG9yIHsKK3B1YmxpYzoKKyAgICBWaWJyYXRvcihWaWJy
YXRvckNsaWVudCopOworICAgIH5WaWJyYXRvcigpIHsgfTsKKworICAgIHZvaWQgdmlicmF0ZShj
b25zdCBWaWJyYXRpb25QYXR0ZXJuJik7CisgICAgdm9pZCBjYW5jZWxWaWJyYXRlKCk7CisKKyAg
ICBib29sIGlzU3VwcG9ydCgpOworICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxWaWJyYXRvcj4q
KTsKKworcHJpdmF0ZToKKyAgICBWaWJyYXRvckNsaWVudCogbV92aWJyYXRvckNsaWVudDsKKyAg
ICBUaW1lcjxWaWJyYXRvcj4gbV90aW1lcjsKKyAgICBib29sIG1faXNWaWJyYXRpbmc7CisgICAg
VmlicmF0aW9uUGF0dGVybiBtX3BhdHRlcm47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBWaWJyYXRvcl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVmlicmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlicmF0b3JDbGllbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzBiYTBlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWJyYXRvckNsaWVudC5oCkBAIC0wLDAgKzEs
NDAgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisKKyNpZm5kZWYgVmlicmF0b3JDbGllbnRfaAorI2RlZmluZSBWaWJyYXRvckNsaWVudF9oCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlicmF0b3JDbGllbnQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgdm9pZCB2aWJyYXRlKGNvbnN0IGxvbmcmIHRpbWUpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgY2FuY2VsVmlicmF0ZSgpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc1N1cHBv
cnQoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5WaWJyYXRvckNsaWVudCgpIHsg
fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVmlicmF0b3JDbGll
bnRFZmxfaAorCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggMmIxYWE2Yy4uMzU2NjhiMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTEyLTIyICBLaWhvbmcgS3dv
biAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIEFkZCBhIG5ldyBBUEkgZm9y
IHRoZSBWaWJyYXRpb24gQVBJKFczQykuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MjAxMAorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy8yMDA5L2Rh
cC92aWJyYXRpb24vCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisK
IDIwMTEtMTItMDUgIEFsZXhhbmRlciBGw6Zyw7h5ICA8YWxleGFuZGVyLmZhZXJveUBub2tpYS5j
b20+CiAKICAgICAgICAgW1F0XSBNaW5pQnJvd3NlciBzaG91bGQgZGVmYXVsdCB0byB0b3VjaCBi
ZWhhdmlvcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQgYi9Ub29scy9T
Y3JpcHRzL2J1aWxkLXdlYmtpdAppbmRleCBlZWQyOGZmLi5iNWU3YTdmIDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtp
dApAQCAtMTI2LDYgKzEyNiw3IEBAIG15ICgKICAgICAkdG91Y2hFdmVudHNTdXBwb3J0LAogICAg
ICR0b3VjaEljb25Mb2FkaW5nU3VwcG9ydCwKICAgICAkdmlkZW9TdXBwb3J0LAorICAgICR2aWJy
YXRpb25TdXBwb3J0LAogICAgICR3ZWJBdWRpb1N1cHBvcnQsCiAgICAgJHdlYkluc3BlY3RvclN1
cHBvcnQsCiAgICAgJHdlYlNvY2tldHNTdXBwb3J0LApAQCAtMzE4LDYgKzMxOSw5IEBAIG15IEBm
ZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAidmlkZW8iLCBkZXNjID0+ICJUb2dnbGUgVmlk
ZW8gc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9WSURFTyIsIGRlZmF1bHQgPT4g
KGlzQXBwbGVXZWJLaXQoKSB8fCBpc0d0aygpIHx8IGlzQmxhY2tCZXJyeSgpKSwgdmFsdWUgPT4g
XCR2aWRlb1N1cHBvcnQgfSwKIAorICAgIHsgb3B0aW9uID0+ICJ2aWJyYXRpb24iLCBkZXNjID0+
ICJUb2dnbGUgVmlicmF0aW9uIHN1cHBvcnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVklC
UkFUSU9OIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHZpYnJhdGlvblN1cHBvcnQgfSwKKwog
ICAgIHsgb3B0aW9uID0+ICJ3ZWItYXVkaW8iLCBkZXNjID0+ICJUb2dnbGUgV2ViIEF1ZGlvIHN1
cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfV0VCX0FVRElPIiwgZGVmYXVsdCA9PiAw
LCB2YWx1ZT0+IFwkd2ViQXVkaW9TdXBwb3J0IH0sCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120432</attachid>
            <date>2011-12-22 20:47:55 -0800</date>
            <delta_ts>2011-12-29 00:48:47 -0800</delta_ts>
            <desc>Patch for the vibration API</desc>
            <filename>vibration.patch</filename>
            <type>text/plain</type>
            <size>15462</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggM2QxNjY4Ni4uZDZhZmYxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyMDQsNiArMjIwNCwxMiBAQCBJRiAoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FKQogICAgICkKIEVORElGICgpCiAKK0lGIChFTkFCTEVfVklCUkFUSU9OKQorICAgIExJ
U1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBwYWdlL1ZpYnJhdG9yLmNwcAorICAg
ICkKK0VORElGICgpCisKICMgTW9kdWxlcyB0aGF0IHRoZSBiaW5kaW5ncyBnZW5lcmF0b3Igc2Ny
aXB0cyBtYXkgdXNlCiBTRVQoU0NSSVBUU19CSU5ESU5HUwogICAgICR7V0VCQ09SRV9ESVJ9L2Jp
bmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFjZGYxZC4uYzdkZWZh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDExLTEyLTIyICBLaWhvbmcgS3dvbiAg
PGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIEFkZCBhIG5ldyBBUEkgZm9yIHRo
ZSBWaWJyYXRpb24gQVBJKFczQykuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MjAxMAorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy8yMDA5L2RhcC92
aWJyYXRpb24vCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiBUaGlzIGZlYXR1cmUgY2FuJ3QgbWFrZSBhIHRlc3QgY2FzZSBhdCBh
bGwuCisgICAgICAgIFRoZXJlIGlzIG9ubHkgb25lIG1ldGhvZCBmb3IgdmlicmF0aW9uIHdpdGhv
dXQgcmV0dXJuIHZhbHVlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
VXNlSlNDLmNtYWtlOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTmF2aWdhdG9yOjp3ZWJraXRWaWJyYXRlKToKKyAgICAg
ICAgICBUbyBnZXQgYW4gYXJyYXkgdHlwZSBwYXJhbWV0ZXIuCisgICAgICAgICAgVGhlcmUgaXMg
bm8gd2F5IHRvIGdldCBhbiBhcnJheSB0eXBlIHBhcmFtZXRlci4KKyAgICAgICAgKiBwYWdlL05h
dmlnYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OndlYmtpdFZpYnJhdGUp
OgorICAgICAgICAgIEhhbmRsaW5nIHZpYnJhdG9yIG9wZXJhdGlvbiBieSB2YXJpb3VzIHBhcmFt
ZXRlciB0eXBlLgorICAgICAgICAgIEFycmF5IGZvciBwYXR0ZXJuLCBsb25nIGZvciB0aW1lLCAn
MCcgb3IgIltdIiBmb3IgY2FuY2VsLgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAg
ICAgICogcGFnZS9OYXZpZ2F0b3IuaWRsOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2VD
bGllbnRzOjpQYWdlQ2xpZW50cyk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjp2aWJyYXRvcik6CisgICAgICAgICogcGFnZS9WaWJyYXRvci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0b3I6OlZpYnJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpYnJhdG9yOjp2aWJyYXRlKToKKyAgICAgICAgICBUcmFuc2ZlciBhbmQgc2VuZCBh
IHZpYnJhdGUgbWVzc2FnZSBmb3IgZWFjaCB0eXBlIG9mIHZpYnJhdGlvbi4oRm9yIGFycmF5LCBs
b25nIGFuZCBjYW5jZWwpCisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRvcjo6Y2FuY2VsVmlicmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRvcjo6aXNTdXBwb3J0KToKKyAgICAgICAgKFdl
YkNvcmU6OlZpYnJhdG9yOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBwYWdlL1ZpYnJhdG9yLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0b3I6On5WaWJyYXRvcik6CisgICAgICAg
ICogcGFnZS9WaWJyYXRvckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpYnJh
dG9yQ2xpZW50Ojp+VmlicmF0b3JDbGllbnQpOgorCiAyMDExLTEyLTA1ICBCZW5qYW1pbiBQb3Vs
YWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwc3RyZWFtIHRoZSBDdXJzb3Ig
aW1wbGVtZW50YXRpb24gb2YgaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0Mu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggODI1MzJhYy4uOTBkZDhj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1VzZUpTQy5jbWFrZQpAQCAtMjQxLDYgKzI0MSwxMiBAQCBJRiAoRU5BQkxFX1dFQkdM
KQogICAgICkKIEVORElGICgpCiAKK0lGIChFTkFCTEVfVklCUkFUSU9OKQorICAgIExJU1QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3Rv
bS5jcHAKKyAgICApCitFTkRJRiAoKQorCiBMSVNUKEFQUEVORCBTQ1JJUFRTX0JJTkRJTkdTCiAg
ICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCiApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKaW5k
ZXggMTA3ZGFlYi4uNmY0MThmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTmF2aWdhdG9yQ3VzdG9tLmNwcApAQCAtMjUsOCArMjUsMTAgQEAKIAogI2luY2x1ZGUgIkNh
bGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKICNpbmNsdWRlICJKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJh
Y2suaCIKICNpbmNsdWRlICJKU05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oIgor
I2VuZGlmCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTYwLDQgKzYyLDQ2IEBAIEpTVmFsdWUgSlNOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYShF
eGVjU3RhdGUqIGV4ZWMpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2lm
IEVOQUJMRShWSUJSQVRJT04pCitKU1ZhbHVlIEpTTmF2aWdhdG9yOjp3ZWJraXRWaWJyYXRlKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWaWJyYXRpb25QYXR0ZXJuIHZpYnJhdGlvbkFycmF5Owor
ICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQorICAgICAgICB2aWJyYXRpb25BcnJheS5h
cHBlbmQoMCk7CisKKyAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAg
aWYgKHZhbHVlLmlzVUludDMyKCkpCisgICAgICAgIHZpYnJhdGlvbkFycmF5LmFwcGVuZCh2YWx1
ZS5hc0ludDMyKCkpOworICAgIGVsc2UgeworICAgICAgICB1bnNpZ25lZCBsZW5ndGg7CisgICAg
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0b0pTU2VxdWVuY2UoZXhlYywgdmFsdWUsIGxlbmd0aCk7
CisKKyAgICAgICAgaWYgKCFsZW5ndGgpCisgICAgICAgICAgICB2aWJyYXRpb25BcnJheS5hcHBl
bmQoMCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7
CisgICAgICAgICAgICB2YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIGkpOworICAgICAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworCisgICAgICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSB8fCAh
dmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVj
LCBEQVRBX0NMT05FX0VSUik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc1VJbnQzMigpKQorICAg
ICAgICAgICAgICAgIHZpYnJhdGlvbkFycmF5LmFwcGVuZCh2YWx1ZS5hc0ludDMyKCkpOworICAg
ICAgICB9CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgbV9pbXBsLT53
ZWJraXRWaWJyYXRlKHZpYnJhdGlvbkFycmF5LCBlYyk7CisKKyAgICBpZiAoZWMpCisgICAgICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
K30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggYmMxZTA1My4u
ZDlhMTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtNTYsNiArNTYsMTAgQEAK
ICNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShWSUJS
QVRJT04pCisjaW5jbHVkZSAiVmlicmF0b3IuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIE5hdmlnYXRvcjo6TmF2aWdhdG9yKEZyYW1lKiBmcmFtZSkKQEAgLTMxOSw0ICszMjMs
MjUgQEAgR2FtZXBhZExpc3QqIE5hdmlnYXRvcjo6d2Via2l0R2FtZXBhZHMoKQogfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQordm9pZCBOYXZpZ2F0b3I6OndlYmtpdFZpYnJhdGUo
Y29uc3QgVmlicmF0aW9uUGF0dGVybiYgcGF0dGVybiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgaWYgKCFwYXR0ZXJuLnNpemUoKSB8fCAhbV9mcmFtZS0+cGFnZSgpKQorICAgICAgICByZXR1
cm47CisKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBpZiAobV9mcmFtZS0+
cGFnZSgpLT52aXNpYmlsaXR5U3RhdGUoKSA9PSBQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuKQor
ICAgICAgICByZXR1cm47CisjZW5kaWYKKworICAgIGlmICghbV9mcmFtZS0+cGFnZSgpLT52aWJy
YXRvcigpLT5pc1N1cHBvcnQoKSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZWMgPSAwOworICAgIG1fZnJhbWUtPnBhZ2Uo
KS0+dmlicmF0b3IoKS0+dmlicmF0ZShwYXR0ZXJuKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAppbmRleCA2MzIxYjMxLi5jYzY2YTA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKQEAgLTI2LDYgKzI2LDEwIEBACiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKKyNpZiBFTkFCTEUo
VklCUkFUSU9OKQorI2luY2x1ZGUgIlZpYnJhdG9yLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBET01NaW1lVHlwZUFycmF5OwpAQCAtNzksNiArODMsMTAgQEAgcHVi
bGljOgogICAgIEdhbWVwYWRMaXN0KiB3ZWJraXRHYW1lcGFkcygpOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoVklCUkFUSU9OKQorICAgIHZvaWQgd2Via2l0VmlicmF0ZShjb25zdCBWaWJyYXRpb25Q
YXR0ZXJuJiwgRXhjZXB0aW9uQ29kZSYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmF2aWdh
dG9yKEZyYW1lKik7CiAgICAgRnJhbWUqIG1fZnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5p
ZGwKaW5kZXggMmI2MWM1YS4uZGU2MDUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbApA
QCAtNjUsNiArNjUsMTIgQEAgbW9kdWxlIHdpbmRvdyB7CiAjaWYgZGVmaW5lZChFTkFCTEVfR0FN
RVBBRCkgJiYgRU5BQkxFX0dBTUVQQUQKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtFbmFi
bGVkQXRSdW50aW1lXSBHYW1lcGFkTGlzdCB3ZWJraXRHYW1lcGFkczsKICNlbmRpZgorCisjaWYg
ZGVmaW5lZChFTkFCTEVfVklCUkFUSU9OKSAmJiBFTkFCTEVfVklCUkFUSU9OCisgICAgICAgIFtD
dXN0b21dIHZvaWQgd2Via2l0VmlicmF0ZShpbiBBcnJheSBwYXR0ZXJuKQorICAgICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisjZW5kaWYKKwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCmluZGV4IDc3MjAwZmUuLmVmZGEyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtODYsNiAr
ODYsMTAgQEAKICNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnQuaCIKICNlbmRpZgogCisjaWYgRU5B
QkxFKFZJQlJBVElPTikKKyNpbmNsdWRlICJWaWJyYXRvci5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIEhhc2hTZXQ8UGFnZSo+KiBhbGxQYWdlczsKQEAgLTE3OCw2
ICsxODIsOSBAQCBQYWdlOjpQYWdlKFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50cykKICAgICAsIG1f
dmlzaWJpbGl0eVN0YXRlKFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKQogI2VuZGlmCiAgICAg
LCBtX2Rpc3BsYXlJRCgwKQorI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgLCBtX3ZpYnJhdG9y
KGFkb3B0UHRyKG5ldyBWaWJyYXRvcihwYWdlQ2xpZW50cy52aWJyYXRvckNsaWVudCkpKQorI2Vu
ZGlmCiB7CiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5ldyBIYXNo
U2V0PFBhZ2UqPjsKQEAgLTEwNjksNiArMTA3Niw5IEBAIFBhZ2U6OlBhZ2VDbGllbnRzOjpQYWdl
Q2xpZW50cygpCiAgICAgLCBzcGVlY2hJbnB1dENsaWVudCgwKQogICAgICwgbm90aWZpY2F0aW9u
Q2xpZW50KDApCiAgICAgLCB1c2VyTWVkaWFDbGllbnQoMCkKKyNpZiBFTkFCTEUoVklCUkFUSU9O
KQorICAgICwgdmlicmF0b3JDbGllbnQoMCkKKyNlbmRpZgogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmlu
ZGV4IDQ5ODAxYjUuLmFmNzFhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC04OSw2ICs4OSwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgY2xhc3Mg
Tm90aWZpY2F0aW9uUHJlc2VudGVyOwogI2VuZGlmCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAg
ICBjbGFzcyBWaWJyYXRvcjsKKyAgICBjbGFzcyBWaWJyYXRvckNsaWVudDsKKyNlbmRpZgogCiAg
ICAgdHlwZWRlZiB1aW50NjRfdCBMaW5rSGFzaDsKIApAQCAtMTIxLDYgKzEyNSw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFNwZWVjaElucHV0Q2xpZW50KiBzcGVlY2hJbnB1
dENsaWVudDsKICAgICAgICAgICAgIE5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9u
Q2xpZW50OwogICAgICAgICAgICAgVXNlck1lZGlhQ2xpZW50KiB1c2VyTWVkaWFDbGllbnQ7Cisj
aWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICAgICAgICAgIFZpYnJhdG9yQ2xpZW50KiB2aWJyYXRv
ckNsaWVudDsKKyNlbmRpZgogICAgICAgICB9OwogCiAgICAgICAgIFBhZ2UoUGFnZUNsaWVudHMm
KTsKQEAgLTM0Myw3ICszNTAsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAg
ICAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4gbV9kaXNw
bGF5SUQ7IH0KLSAgICAgICAgCisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICAgICBWaWJy
YXRvciogdmlicmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3ZpYnJhdG9yLmdldCgpOyB9CisjZW5k
aWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdEdyb3VwKCk7CiAKQEAgLTQ1NCw2
ICs0NjUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYWdlVmlzaWJpbGl0eVN0
YXRlIG1fdmlzaWJpbGl0eVN0YXRlOwogI2VuZGlmCiAgICAgICAgIFBsYXRmb3JtRGlzcGxheUlE
IG1fZGlzcGxheUlEOworCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICAgICAgT3duUHRyPFZp
YnJhdG9yPiBtX3ZpYnJhdG9yOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWJyYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1ZpYnJhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5lYjFmNWE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9W
aWJyYXRvci5jcHAKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEg
U2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJW
aWJyYXRvci5oIgorCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKworI2luY2x1ZGUgIlZpYnJhdG9y
Q2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVmlicmF0b3I6OlZpYnJhdG9yKFZp
YnJhdG9yQ2xpZW50KiB2aWJyYXRvckNsaWVudCkKKyAgICA6IG1fdmlicmF0b3JDbGllbnQodmli
cmF0b3JDbGllbnQpCisgICAgLCBtX3RpbWVyKHRoaXMsICZWaWJyYXRvcjo6dGltZXJGaXJlZCkK
KyAgICAsIG1faXNWaWJyYXRpbmcoZmFsc2UpCit7Cit9CisKK1ZpYnJhdG9yOjp+VmlicmF0b3Io
KQoreworICAgIG1fdmlicmF0b3JDbGllbnQtPmRlc3Ryb3llZCgpOworfQorCit2b2lkIFZpYnJh
dG9yOjp2aWJyYXRlKGNvbnN0IFZpYnJhdGlvblBhdHRlcm4mIHBhdHRlcm4pCit7CisgICAgaW50
IGxlbmd0aCA9IHBhdHRlcm4uc2l6ZSgpOworCisgICAgaWYgKCFsZW5ndGgpIHsKKyAgICAgICAg
aWYgKG1faXNWaWJyYXRpbmcpCisgICAgICAgICAgICBjYW5jZWxWaWJyYXRlKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobGVuZ3RoID09IDEgJiYgIXBhdHRlcm5bMF0pIHsK
KyAgICAgICAgaWYgKG1faXNWaWJyYXRpbmcpCisgICAgICAgICAgICBjYW5jZWxWaWJyYXRlKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1faXNWaWJyYXRpbmcgJiYgIW1f
dGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICBtX3BhdHRlcm4gPSBwYXR0ZXJuOworICAgICAg
ICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlicmF0b3I6OmNh
bmNlbFZpYnJhdGUoKQoreworICAgIG1fdmlicmF0b3JDbGllbnQtPmNhbmNlbFZpYnJhdGUoKTsK
K30KKworYm9vbCBWaWJyYXRvcjo6aXNTdXBwb3J0KCkKK3sKKyAgICByZXR1cm4gbV92aWJyYXRv
ckNsaWVudC0+aXNTdXBwb3J0KCk7Cit9CisKK3ZvaWQgVmlicmF0b3I6OnRpbWVyRmlyZWQoVGlt
ZXI8VmlicmF0b3I+KiB0aW1lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9
PSAmbV90aW1lcik7CisgICAgbV90aW1lci5zdG9wKCk7CisgICAgbV92aWJyYXRvckNsaWVudC0+
dmlicmF0ZShtX3BhdHRlcm5bMF0pOworCisgICAgaWYgKG1fcGF0dGVybi5zaXplKCkgPD0gMikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV90aW1lci5zdGFydE9uZVNob3QobV9wYXR0ZXJuWzBd
ICsgbV9wYXR0ZXJuWzFdKTsKKyAgICBtX3BhdHRlcm4ucmVtb3ZlKDAsIDIpOworfQorCit9CisK
KyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpYnJhdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1ZpYnJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYTkzMGRlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VmlicmF0b3IuaApAQCAtMCwwICsxLDUzIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMSBT
YW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyovCisKKyNpZm5kZWYgVmlicmF0b3JfaAorI2RlZmluZSBWaWJyYXRvcl9oCisKKyNp
bmNsdWRlICJUaW1lci5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3R5cGVkZWYgVmVjdG9yPGxvbmc+IFZpYnJhdGlvblBhdHRlcm47CisKK2Ns
YXNzIFZpYnJhdG9yQ2xpZW50OworCitjbGFzcyBWaWJyYXRvciB7CitwdWJsaWM6CisgICAgVmli
cmF0b3IoVmlicmF0b3JDbGllbnQqKTsKKyAgICB+VmlicmF0b3IoKTsKKworICAgIHZvaWQgdmli
cmF0ZShjb25zdCBWaWJyYXRpb25QYXR0ZXJuJik7CisgICAgdm9pZCBjYW5jZWxWaWJyYXRlKCk7
CisKKyAgICBib29sIGlzU3VwcG9ydCgpOworICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxWaWJy
YXRvcj4qKTsKKworcHJpdmF0ZToKKyAgICBWaWJyYXRvckNsaWVudCogbV92aWJyYXRvckNsaWVu
dDsKKyAgICBUaW1lcjxWaWJyYXRvcj4gbV90aW1lcjsKKyAgICBib29sIG1faXNWaWJyYXRpbmc7
CisgICAgVmlicmF0aW9uUGF0dGVybiBtX3BhdHRlcm47Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBWaWJyYXRvcl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVmlicmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlicmF0b3JD
bGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTIyNmJkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWJyYXRvckNsaWVudC5oCkBAIC0w
LDAgKzEsNDAgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25p
Y3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisqLworCisjaWZuZGVmIFZpYnJhdG9yQ2xpZW50X2gKKyNkZWZpbmUgVmlicmF0b3JDbGllbnRf
aAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpYnJhdG9yQ2xpZW50IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIHZvaWQgdmlicmF0ZShjb25zdCBsb25nJiB0aW1lKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGNhbmNlbFZpYnJhdGUoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNT
dXBwb3J0KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95ZWQoKSA9IDA7CisKK3Byb3Rl
Y3RlZDoKKyAgICB2aXJ0dWFsIH5WaWJyYXRvckNsaWVudCgpIHsgfQorfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVmlicmF0b3JDbGllbnRFZmxfaAorCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmIxYWE2Yy4uMzU2
NjhiMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDExLTEyLTIyICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNh
bXN1bmcuY29tPgorCisgICAgICAgIEFkZCBhIG5ldyBBUEkgZm9yIHRoZSBWaWJyYXRpb24gQVBJ
KFczQykuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MjAxMAorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy8yMDA5L2RhcC92aWJyYXRpb24vCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LgorCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisKIDIwMTEtMTItMDUgIEFsZXhh
bmRlciBGw6Zyw7h5ICA8YWxleGFuZGVyLmZhZXJveUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0
XSBNaW5pQnJvd3NlciBzaG91bGQgZGVmYXVsdCB0byB0b3VjaCBiZWhhdmlvcgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtp
dAppbmRleCBlZWQyOGZmLi5iNWU3YTdmIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2J1aWxk
LXdlYmtpdAorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdApAQCAtMTI2LDYgKzEyNiw3
IEBAIG15ICgKICAgICAkdG91Y2hFdmVudHNTdXBwb3J0LAogICAgICR0b3VjaEljb25Mb2FkaW5n
U3VwcG9ydCwKICAgICAkdmlkZW9TdXBwb3J0LAorICAgICR2aWJyYXRpb25TdXBwb3J0LAogICAg
ICR3ZWJBdWRpb1N1cHBvcnQsCiAgICAgJHdlYkluc3BlY3RvclN1cHBvcnQsCiAgICAgJHdlYlNv
Y2tldHNTdXBwb3J0LApAQCAtMzE4LDYgKzMxOSw5IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICB7
IG9wdGlvbiA9PiAidmlkZW8iLCBkZXNjID0+ICJUb2dnbGUgVmlkZW8gc3VwcG9ydCIsCiAgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9WSURFTyIsIGRlZmF1bHQgPT4gKGlzQXBwbGVXZWJLaXQoKSB8
fCBpc0d0aygpIHx8IGlzQmxhY2tCZXJyeSgpKSwgdmFsdWUgPT4gXCR2aWRlb1N1cHBvcnQgfSwK
IAorICAgIHsgb3B0aW9uID0+ICJ2aWJyYXRpb24iLCBkZXNjID0+ICJUb2dnbGUgVmlicmF0aW9u
IHN1cHBvcnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVklCUkFUSU9OIiwgZGVmYXVsdCA9
PiAwLCB2YWx1ZSA9PiBcJHZpYnJhdGlvblN1cHBvcnQgfSwKKwogICAgIHsgb3B0aW9uID0+ICJ3
ZWItYXVkaW8iLCBkZXNjID0+ICJUb2dnbGUgV2ViIEF1ZGlvIHN1cHBvcnQiLAogICAgICAgZGVm
aW5lID0+ICJFTkFCTEVfV0VCX0FVRElPIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZT0+IFwkd2ViQXVk
aW9TdXBwb3J0IH0sCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120722</attachid>
            <date>2011-12-29 00:48:47 -0800</date>
            <delta_ts>2011-12-29 02:20:32 -0800</delta_ts>
            <desc>Add suspend/resume method and test case.</desc>
            <filename>vibration.patch</filename>
            <type>text/plain</type>
            <size>19978</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxOTZlZDRlLi42OGVjMTc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTIt
MjkgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF0gQWRkIHRoZSBWaWJyYXRpb24gQVBJIHRvIHRoZSBXZWJLaXQtRUZMCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTE1NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgdGVzdCBjYXNlIGZvciB0
aGUgVmlicmF0aW9uIEFQSS4KKworICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRvci12aWJyYXRp
b25BUEktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9uYXZpZ2F0b3It
dmlicmF0aW9uQVBJLmh0bWw6IEFkZGVkLgorCiAyMDExLTEyLTA1ICBGbG9yaW4gTWFsaXRhICA8
Zm1hbGl0YUBnb29nbGUuY29tPgogCiAgICAgICAgIEhlYXAtYnVmZmVyLW92ZXJmbG93IGluIFdl
YkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbkFQSS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uQVBJLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2RlODVlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbkFQSS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdCBmb3IgdGhlIFZpYnJhdGlvbiBBUEkuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBleGNlcHRpb25Db2RlRm9yVmlicmF0ZSBpcyAw
CitQQVNTIGV4Y2VwdGlvbkNvZGVGb3JDYW5jZWwgaXMgMAorUEFTUyBleGNlcHRpb25Db2RlRm9y
VmlicmF0ZVdpdGhJbnZhbGlkSW50UGFyYW0gaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNT
X0VSUgorUEFTUyBleGNlcHRpb25Db2RlRm9yVmlicmF0ZVdpdGhJbnZhbGlkQXJyYXlQYXJhbSBp
cyBET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL25hdmlnYXRvci12aWJyYXRpb25BUEkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25h
dmlnYXRvci12aWJyYXRpb25BUEkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5mMjY5NzYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2
aWdhdG9yLXZpYnJhdGlvbkFQSS5odG1sCkBAIC0wLDAgKzEsNTQgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IGZvciB0aGUgVmli
cmF0aW9uIEFQSS4nKTsKKwordmFyIGV4Y2VwdGlvbkNvZGVGb3JWaWJyYXRlID0gMDsKK3ZhciBl
eGNlcHRpb25Db2RlRm9yQ2FuY2VsID0gMDsKK3ZhciBleGNlcHRpb25Db2RlRm9yVmlicmF0ZVdp
dGhJbnZhbGlkSW50UGFyYW0gPSAwOwordmFyIGV4Y2VwdGlvbkNvZGVGb3JWaWJyYXRlV2l0aElu
dmFsaWRBcnJheVBhcmFtID0gMDsKKwordHJ5IHsKKwluYXZpZ2F0b3Iud2Via2l0VmlicmF0ZSgx
MDAwKTsKKyAgICBuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZShbMTAwMCwgMzAwLCA1MDBdKTsKK30K
K2NhdGNoIChlKSB7CisgICAgZXhjZXB0aW9uQ29kZUZvclZpYnJhdGUgPSBlLmNvZGU7Cit9CisK
K3Nob3VsZEJlKCJleGNlcHRpb25Db2RlRm9yVmlicmF0ZSIsICIwIik7CisKK3RyeSB7CisJbmF2
aWdhdG9yLndlYmtpdFZpYnJhdGUoMCk7CisgICAgbmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoW10p
OworfQorY2F0Y2ggKGUpIHsKKyAgICBleGNlcHRpb25Db2RlRm9yQ2FuY2VsID0gZS5jb2RlOwor
fQorCitzaG91bGRCZSgiZXhjZXB0aW9uQ29kZUZvckNhbmNlbCIsICIwIik7CisKK3RyeSB7CisJ
bmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoIjEwMDAiKTsKK30KK2NhdGNoIChlKSB7CisgICAgZXhj
ZXB0aW9uQ29kZUZvclZpYnJhdGVXaXRoSW52YWxpZEludFBhcmFtID0gZS5jb2RlOworfQorCitz
aG91bGRCZSgiZXhjZXB0aW9uQ29kZUZvclZpYnJhdGVXaXRoSW52YWxpZEludFBhcmFtIiwgIkRP
TUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIiKTsKKwordHJ5IHsKKwluYXZpZ2F0b3Iud2Vi
a2l0VmlicmF0ZShbMTAwMCwgIjIwMCIsIDUwMF0pOworfQorY2F0Y2ggKGUpIHsKKyAgICBleGNl
cHRpb25Db2RlRm9yVmlicmF0ZVdpdGhJbnZhbGlkQXJyYXlQYXJhbSA9IGUuY29kZTsKK30KKwor
c2hvdWxkQmUoImV4Y2VwdGlvbkNvZGVGb3JWaWJyYXRlV2l0aEludmFsaWRBcnJheVBhcmFtIiwg
IkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzZDE2Njg2Li5kNmFmZjEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMjIwNCw2ICsyMjA0LDEyIEBAIElGIChFTkFCTEVfUkVRVUVTVF9B
TklNQVRJT05fRlJBTUUpCiAgICAgKQogRU5ESUYgKCkKIAorSUYgKEVOQUJMRV9WSUJSQVRJT04p
CisgICAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgIHBhZ2UvVmlicmF0b3Iu
Y3BwCisgICAgKQorRU5ESUYgKCkKKwogIyBNb2R1bGVzIHRoYXQgdGhlIGJpbmRpbmdzIGdlbmVy
YXRvciBzY3JpcHRzIG1heSB1c2UKIFNFVChTQ1JJUFRTX0JJTkRJTkdTCiAgICAgJHtXRUJDT1JF
X0RJUn0vYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2YWNkZjFk
Li45NTE5NzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMTItMjkgIEtpaG9u
ZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRkIGEgbmV3IEFQ
SSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkoVzNDKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9kYXAvdmlicmF0aW9u
LworICAgICAgICBUZXN0OiBmYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uQVBJLmh0bWwKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU05hdmlnYXRvcjo6d2Via2l0VmlicmF0ZSk6CisgICAgICAgICAgVG8gZ2V0IGFuIGFycmF5
IHR5cGUgcGFyYW1ldGVyLgorICAgICAgICAgIFRoZXJlIGlzIG5vIHdheSB0byBnZXQgYW4gYXJy
YXkgdHlwZSBwYXJhbWV0ZXIuCisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRWaWJyYXRlKToKKyAgICAgICAgICBIYW5kbGlu
ZyB2aWJyYXRvciBvcGVyYXRpb24gYnkgdmFyaW91cyBwYXJhbWV0ZXIgdHlwZS4KKyAgICAgICAg
ICBBcnJheSBmb3IgcGF0dGVybiwgbG9uZyBmb3IgdGltZSwgJzAnIG9yICJbXSIgZm9yIGNhbmNl
bC4KKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9y
LmlkbDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlQ2xpZW50czo6UGFnZUNsaWVudHMp
OgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dmlicmF0
b3IpOgorICAgICAgICAqIHBhZ2UvVmlicmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlZpYnJhdG9yOjpWaWJyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRvcjo6flZp
YnJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdG9yOjp2aWJyYXRlKToKKyAgICAgICAg
ICBUcmFuc2ZlciBhbmQgc2VuZCBhIHZpYnJhdGUgbWVzc2FnZSBmb3IgZWFjaCB0eXBlIG9mIHZp
YnJhdGlvbi4oRm9yIGFycmF5LCBsb25nIGFuZCBjYW5jZWwpCisgICAgICAgIChXZWJDb3JlOjpW
aWJyYXRvcjo6Y2FuY2VsVmlicmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdG9yOjpz
dXNwZW5kVmlicmF0aW9uKToKKyAgICAgICAgICBTdXNwZW5kIGN1cnJlbnQgdmlicmF0aW9uIGZv
ciB0aGUgcGFnZSB2aXNpYmlsaXR5IHN0YXR1cyBpcyBjaGFuZ2VkLgorICAgICAgICAoV2ViQ29y
ZTo6VmlicmF0b3I6OnJlc3VtZVZpYnRhdGlvbik6CisgICAgICAgICAgUmVzdW1lIHZpYnJhdGlv
biBmb3IgdGhlIHBhZ2UgdmlzaWJpbGl0eSBzdGF0ZSBpcyBjaGFuZ2VkLgorICAgICAgICAoV2Vi
Q29yZTo6VmlicmF0b3I6OnRpbWVyU3RhcnRGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWJy
YXRvcjo6dGltZXJTdG9wRmlyZWQpOgorICAgICAgICAqIHBhZ2UvVmlicmF0b3IuaDogQWRkZWQu
CisgICAgICAgICogcGFnZS9WaWJyYXRvckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlZpYnJhdG9yQ2xpZW50Ojp+VmlicmF0b3JDbGllbnQpOgorCiAyMDExLTEyLTA1ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwc3RyZWFtIHRo
ZSBDdXJzb3IgaW1wbGVtZW50YXRpb24gb2YgaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Vc2VKU0MuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggODI1MzJh
Yy4uOTBkZDhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQpAQCAtMjQxLDYgKzI0MSwxMiBAQCBJRiAoRU5B
QkxFX1dFQkdMKQogICAgICkKIEVORElGICgpCiAKK0lGIChFTkFCTEVfVklCUkFUSU9OKQorICAg
IExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBiaW5kaW5ncy9qcy9KU05hdmln
YXRvckN1c3RvbS5jcHAKKyAgICApCitFTkRJRiAoKQorCiBMSVNUKEFQUEVORCBTQ1JJUFRTX0JJ
TkRJTkdTCiAgICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
LnBtCiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRv
ckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3Rv
bS5jcHAKaW5kZXggMTA3ZGFlYi4uOWI4NWViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcApAQCAtNCw2ICs0LDcgQEAKICAqICBDb3B5
cmlnaHQgKGMpIDIwMDAgU3RlZmFuIFNjaGltYW5za2kgKHNjaGltbWlAa2RlLm9yZykKICAqICBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwOCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqICBDb3B5cmlnaHQg
KEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjUs
OCArMjYsMTAgQEAKIAogI2luY2x1ZGUgIkNhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICNpbmNsdWRlICJKU05h
dmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJKU05hdmlnYXRvclVz
ZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oIgorI2VuZGlmCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYwLDQgKzYzLDQ5IEBAIEpTVmFsdWUgSlNOYXZp
Z2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYShFeGVjU3RhdGUqIGV4ZWMpCiB9CiAjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2lmIEVOQUJMRShWSUJSQVRJT04pCitKU1ZhbHVlIEpT
TmF2aWdhdG9yOjp3ZWJraXRWaWJyYXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWaWJyYXRp
b25QYXR0ZXJuIHZpYnJhdGlvbkFycmF5OworICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgp
KQorICAgICAgICB2aWJyYXRpb25BcnJheS5hcHBlbmQoMCk7CisKKyAgICBKU1ZhbHVlIHZhbHVl
ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgdW5zaWduZWQgbGVuZ3RoOworICAgIGlmICh2YWx1
ZS5pc1VJbnQzMigpKQorICAgICAgICB2aWJyYXRpb25BcnJheS5hcHBlbmQodmFsdWUuYXNJbnQz
MigpKTsKKyAgICBlbHNlIGlmIChKU09iamVjdCogb2JqZWN0ID0gdG9KU1NlcXVlbmNlKGV4ZWMs
IHZhbHVlLCBsZW5ndGgpKSB7CisgICAgICAgIGlmICghbGVuZ3RoKQorICAgICAgICAgICAgdmli
cmF0aW9uQXJyYXkuYXBwZW5kKDApOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBp
KTsKKyAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgICAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkgfHwgIXZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBzZXRE
T01FeGNlcHRpb24oZXhlYywgSU5WQUxJRF9BQ0NFU1NfRVJSKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHZh
bHVlLmlzVUludDMyKCkpCisgICAgICAgICAgICAgICAgdmlicmF0aW9uQXJyYXkuYXBwZW5kKHZh
bHVlLmFzSW50MzIoKSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwor
ICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgSU5WQUxJRF9BQ0NFU1NfRVJSKTsKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgbV9pbXBsLT53ZWJraXRWaWJyYXRlKHZpYnJhdGlvbkFycmF5LCBlYyk7CisKKyAg
ICBpZiAoZWMpCisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5j
cHAKaW5kZXggYmMxZTA1My4uODBkNTZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApA
QCAtNTYsNiArNTYsMTAgQEAKICNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShWSUJSQVRJT04pCisjaW5jbHVkZSAiVmlicmF0b3IuaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE5hdmlnYXRvcjo6TmF2aWdhdG9yKEZyYW1lKiBmcmFt
ZSkKQEAgLTMxOSw0ICszMjMsMjUgQEAgR2FtZXBhZExpc3QqIE5hdmlnYXRvcjo6d2Via2l0R2Ft
ZXBhZHMoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQordm9pZCBOYXZpZ2F0
b3I6OndlYmtpdFZpYnJhdGUoY29uc3QgVmlicmF0aW9uUGF0dGVybiYgcGF0dGVybiwgRXhjZXB0
aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFwYXR0ZXJuLnNpemUoKSB8fCAhbV9mcmFtZS0+cGFn
ZSgpKQorICAgICAgICByZXR1cm47CisKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkK
KyAgICBpZiAobV9mcmFtZS0+cGFnZSgpLT52aXNpYmlsaXR5U3RhdGUoKSA9PSBQYWdlVmlzaWJp
bGl0eVN0YXRlSGlkZGVuKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKworICAgIGlmICghbV9m
cmFtZS0+cGFnZSgpLT52aWJyYXRvcigpKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9F
UlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBlYyA9IDA7CisgICAgbV9mcmFtZS0+
cGFnZSgpLT52aWJyYXRvcigpLT52aWJyYXRlKHBhdHRlcm4pOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdh
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCmluZGV4IDYzMjFiMzEuLmNj
NjZhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaApAQCAtMjYsNiArMjYsMTAgQEAKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorI2lmIEVO
QUJMRShWSUJSQVRJT04pCisjaW5jbHVkZSAiVmlicmF0b3IuaCIKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTU1pbWVUeXBlQXJyYXk7CkBAIC03OSw2ICs4MywxMCBA
QCBwdWJsaWM6CiAgICAgR2FtZXBhZExpc3QqIHdlYmtpdEdhbWVwYWRzKCk7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgdm9pZCB3ZWJraXRWaWJyYXRlKGNvbnN0IFZpYnJh
dGlvblBhdHRlcm4mLCBFeGNlcHRpb25Db2RlJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBO
YXZpZ2F0b3IoRnJhbWUqKTsKICAgICBGcmFtZSogbV9mcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdh
dG9yLmlkbAppbmRleCAyYjYxYzVhLi5kZTYwNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
aWRsCkBAIC02NSw2ICs2NSwxMiBAQCBtb2R1bGUgd2luZG93IHsKICNpZiBkZWZpbmVkKEVOQUJM
RV9HQU1FUEFEKSAmJiBFTkFCTEVfR0FNRVBBRAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
W0VuYWJsZWRBdFJ1bnRpbWVdIEdhbWVwYWRMaXN0IHdlYmtpdEdhbWVwYWRzOwogI2VuZGlmCisK
KyNpZiBkZWZpbmVkKEVOQUJMRV9WSUJSQVRJT04pICYmIEVOQUJMRV9WSUJSQVRJT04KKyAgICAg
ICAgW0N1c3RvbV0gdm9pZCB3ZWJraXRWaWJyYXRlKGluIEFycmF5IHBhdHRlcm4pCisgICAgICAg
ICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyNlbmRpZgorCiAgICAgfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKaW5kZXggNzcyMDBmZS4uZWZkYTJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC04
Niw2ICs4NiwxMCBAQAogI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVudC5oIgogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoVklCUkFUSU9OKQorI2luY2x1ZGUgIlZpYnJhdG9yLmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgSGFzaFNldDxQYWdlKj4qIGFsbFBhZ2VzOwpAQCAt
MTc4LDYgKzE4Miw5IEBAIFBhZ2U6OlBhZ2UoUGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQogICAg
ICwgbV92aXNpYmlsaXR5U3RhdGUoUGFnZVZpc2liaWxpdHlTdGF0ZVZpc2libGUpCiAjZW5kaWYK
ICAgICAsIG1fZGlzcGxheUlEKDApCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICAsIG1fdmli
cmF0b3IoYWRvcHRQdHIobmV3IFZpYnJhdG9yKHBhZ2VDbGllbnRzLnZpYnJhdG9yQ2xpZW50KSkp
CisjZW5kaWYKIHsKICAgICBpZiAoIWFsbFBhZ2VzKSB7CiAgICAgICAgIGFsbFBhZ2VzID0gbmV3
IEhhc2hTZXQ8UGFnZSo+OwpAQCAtMTA2OSw2ICsxMDc2LDkgQEAgUGFnZTo6UGFnZUNsaWVudHM6
OlBhZ2VDbGllbnRzKCkKICAgICAsIHNwZWVjaElucHV0Q2xpZW50KDApCiAgICAgLCBub3RpZmlj
YXRpb25DbGllbnQoMCkKICAgICAsIHVzZXJNZWRpYUNsaWVudCgwKQorI2lmIEVOQUJMRShWSUJS
QVRJT04pCisgICAgLCB2aWJyYXRvckNsaWVudCgwKQorI2VuZGlmCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKaW5kZXggNDk4MDFiNS4uYWY3MWE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTg5LDYgKzg5LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBj
bGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVklCUkFUSU9O
KQorICAgIGNsYXNzIFZpYnJhdG9yOworICAgIGNsYXNzIFZpYnJhdG9yQ2xpZW50OworI2VuZGlm
CiAKICAgICB0eXBlZGVmIHVpbnQ2NF90IExpbmtIYXNoOwogCkBAIC0xMjEsNiArMTI1LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgU3BlZWNoSW5wdXRDbGllbnQqIHNwZWVj
aElucHV0Q2xpZW50OwogICAgICAgICAgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmlj
YXRpb25DbGllbnQ7CiAgICAgICAgICAgICBVc2VyTWVkaWFDbGllbnQqIHVzZXJNZWRpYUNsaWVu
dDsKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICAgICAgICAgVmlicmF0b3JDbGllbnQqIHZp
YnJhdG9yQ2xpZW50OworI2VuZGlmCiAgICAgICAgIH07CiAKICAgICAgICAgUGFnZShQYWdlQ2xp
ZW50cyYpOwpAQCAtMzQzLDcgKzM1MCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYK
IAogICAgICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCB7IHJldHVybiBt
X2Rpc3BsYXlJRDsgfQotICAgICAgICAKKworI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgICAg
IFZpYnJhdG9yKiB2aWJyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fdmlicmF0b3IuZ2V0KCk7IH0K
KyNlbmRpZgorCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBpbml0R3JvdXAoKTsKIApAQCAt
NDU0LDYgKzQ2NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBhZ2VWaXNpYmls
aXR5U3RhdGUgbV92aXNpYmlsaXR5U3RhdGU7CiAjZW5kaWYKICAgICAgICAgUGxhdGZvcm1EaXNw
bGF5SUQgbV9kaXNwbGF5SUQ7CisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICAgICBPd25Q
dHI8VmlicmF0b3I+IG1fdmlicmF0b3I7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpYnJhdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlicmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjJjMWNkZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1ZpYnJhdG9yLmNwcApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMp
IDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJWaWJyYXRvci5oIgorCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKworI2luY2x1ZGUgIlZp
YnJhdG9yQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVmlicmF0b3I6OlZpYnJh
dG9yKFZpYnJhdG9yQ2xpZW50KiB2aWJyYXRvckNsaWVudCkKKyAgICA6IG1fdmlicmF0b3JDbGll
bnQodmlicmF0b3JDbGllbnQpCisgICAgLCBtX3RpbWVyU3RhcnQodGhpcywgJlZpYnJhdG9yOjp0
aW1lclN0YXJ0RmlyZWQpCisgICAgLCBtX3RpbWVyU3RvcCh0aGlzLCAmVmlicmF0b3I6OnRpbWVy
U3RvcEZpcmVkKQorICAgICwgbV9pc1ZpYnJhdGluZyhmYWxzZSkKK3sKK30KKworVmlicmF0b3I6
On5WaWJyYXRvcigpCit7CisgICAgbV92aWJyYXRvckNsaWVudC0+dmlicmF0b3JEZXN0cm95ZWQo
KTsKK30KKwordm9pZCBWaWJyYXRvcjo6dmlicmF0ZShjb25zdCBWaWJyYXRpb25QYXR0ZXJuJiBw
YXR0ZXJuKQoreworICAgIGludCBsZW5ndGggPSBwYXR0ZXJuLnNpemUoKTsKKworICAgIGlmICgh
bGVuZ3RoKSB7CisgICAgICAgIGlmIChtX2lzVmlicmF0aW5nKQorICAgICAgICAgICAgY2FuY2Vs
VmlicmF0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobGVuZ3RoID09
IDEgJiYgIXBhdHRlcm5bMF0pIHsKKyAgICAgICAgaWYgKG1faXNWaWJyYXRpbmcpCisgICAgICAg
ICAgICBjYW5jZWxWaWJyYXRpb24oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghbV9pc1ZpYnJhdGluZyAmJiAhbV90aW1lclN0YXJ0LmlzQWN0aXZlKCkpIHsKKyAgICAgICAg
bV9wYXR0ZXJuID0gcGF0dGVybjsKKyAgICAgICAgbV90aW1lclN0YXJ0LnN0YXJ0T25lU2hvdCgw
KTsKKyAgICB9Cit9CisKK3ZvaWQgVmlicmF0b3I6OmNhbmNlbFZpYnJhdGlvbigpCit7CisgICAg
aWYgKG1faXNWaWJyYXRpbmcpIHsKKyAgICAgICAgbV92aWJyYXRvckNsaWVudC0+Y2FuY2VsVmli
cmF0aW9uKCk7CisgICAgICAgIG1faXNWaWJyYXRpbmcgPSBmYWxzZTsKKyAgICAgICAgbV90aW1l
clN0b3Auc3RvcCgpOworICAgIH0KK30KKwordm9pZCBWaWJyYXRvcjo6c3VzcGVuZFZpYnJhdGlv
bigpCit7CisgICAgaWYgKCFtX2lzVmlicmF0aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3BhdHRlcm4uaW5zZXJ0KDAsIG1fdGltZXJTdG9wLm5leHRGaXJlSW50ZXJ2YWwoKSk7CisgICAg
bV90aW1lclN0b3Auc3RvcCgpOworICAgIGNhbmNlbFZpYnJhdGlvbigpOworfQorCit2b2lkIFZp
YnJhdG9yOjpyZXN1bWVWaWJ0YXRpb24oKQoreworICAgIG1fdGltZXJTdGFydC5zdGFydE9uZVNo
b3QoMCk7Cit9CisKK3ZvaWQgVmlicmF0b3I6OnRpbWVyU3RhcnRGaXJlZChUaW1lcjxWaWJyYXRv
cj4qIHRpbWVyKQoreworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX3RpbWVy
U3RhcnQpOworCisgICAgbV90aW1lclN0YXJ0LnN0b3AoKTsKKworICAgIGlmIChtX3BhdHRlcm4u
c2l6ZSgpKSB7CisgICAgICAgIG1faXNWaWJyYXRpbmcgPSB0cnVlOworICAgICAgICBtX3ZpYnJh
dG9yQ2xpZW50LT52aWJyYXRlKG1fcGF0dGVyblswXSk7CisgICAgICAgIG1fdGltZXJTdG9wLnN0
YXJ0T25lU2hvdChtX3BhdHRlcm5bMF0gLyAxMDAwLjApOworICAgICAgICBtX3BhdHRlcm4ucmVt
b3ZlKDApOworICAgIH0KK30KKwordm9pZCBWaWJyYXRvcjo6dGltZXJTdG9wRmlyZWQoVGltZXI8
VmlicmF0b3I+KiB0aW1lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAm
bV90aW1lclN0b3ApOworCisgICAgbV90aW1lclN0b3Auc3RvcCgpOworICAgIG1faXNWaWJyYXRp
bmcgPSBmYWxzZTsKKworICAgIGlmIChtX3BhdHRlcm4uc2l6ZSgpKSB7CisgICAgICAgIG1fdGlt
ZXJTdGFydC5zdGFydE9uZVNob3QobV9wYXR0ZXJuWzBdIC8gMTAwMC4wKTsKKyAgICAgICAgbV9w
YXR0ZXJuLnJlbW92ZSgwKTsKKyAgICB9Cit9CisKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlicmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmli
cmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGRiNzMxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWJyYXRvci5oCkBAIC0wLDAgKzEs
NTYgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBW
aWJyYXRvcl9oCisjZGVmaW5lIFZpYnJhdG9yX2gKKworI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgVmVj
dG9yPGxvbmc+IFZpYnJhdGlvblBhdHRlcm47CisKK2NsYXNzIFZpYnJhdG9yQ2xpZW50OworCitj
bGFzcyBWaWJyYXRvciB7CitwdWJsaWM6CisgICAgVmlicmF0b3IoVmlicmF0b3JDbGllbnQqKTsK
KyAgICB+VmlicmF0b3IoKTsKKworICAgIHZvaWQgdmlicmF0ZShjb25zdCBWaWJyYXRpb25QYXR0
ZXJuJik7CisgICAgdm9pZCBjYW5jZWxWaWJyYXRpb24oKTsKKworICAgIC8vIEZJWE1FIDogQWRk
IHN1c3BlbmRWaWJyYXRpb24oKSBhbmQgcmVzdW1lVmlicmF0aW9uKCkgdG8gdGhlIHBhZ2Ugdmlz
aWJpbGl0eSBmZWF0dXJlLCB3aGVuIHRoZSBkb2N1bWVudC5oaWRkZW4gYXR0cmlidXRlIGlzIGNo
YW5nZWQuCisgICAgdm9pZCBzdXNwZW5kVmlicmF0aW9uKCk7CisgICAgdm9pZCByZXN1bWVWaWJ0
YXRpb24oKTsKKyAgICB2b2lkIHRpbWVyU3RhcnRGaXJlZChUaW1lcjxWaWJyYXRvcj4qKTsKKyAg
ICB2b2lkIHRpbWVyU3RvcEZpcmVkKFRpbWVyPFZpYnJhdG9yPiopOworCitwcml2YXRlOgorICAg
IFZpYnJhdG9yQ2xpZW50KiBtX3ZpYnJhdG9yQ2xpZW50OworICAgIFRpbWVyPFZpYnJhdG9yPiBt
X3RpbWVyU3RhcnQ7CisgICAgVGltZXI8VmlicmF0b3I+IG1fdGltZXJTdG9wOworICAgIGJvb2wg
bV9pc1ZpYnJhdGluZzsKKyAgICBWaWJyYXRpb25QYXR0ZXJuIG1fcGF0dGVybjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFZpYnJhdG9yX2gKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWJyYXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9WaWJyYXRvckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmM1NzY3NzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpYnJhdG9y
Q2xpZW50LmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ft
c3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgVmlicmF0b3JDbGllbnRfaAorI2RlZmluZSBW
aWJyYXRvckNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlicmF0b3JD
bGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflZpYnJhdG9yQ2xpZW50KCkgeyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgdmlicmF0ZShjb25zdCBsb25nJiB0aW1lKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGNhbmNlbFZpYnJhdGlvbigpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB2aWJyYXRv
ckRlc3Ryb3llZCgpID0gMDsKKworICAgIHZvaWQgc2V0TW9ja1ZpYnJhdGlvbigpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVmlicmF0b3JDbGllbnRfaAorCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmIxYWE2
Yy4uZGU2MmMxZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTEyLTI5ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5r
d29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIEFkZCBhIG5ldyBBUEkgZm9yIHRoZSBWaWJyYXRp
b24gQVBJKFczQykuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MjAxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGh0dHA6Ly9kZXYudzMub3JnLzIwMDkvZGFwL3ZpYnJhdGlvbi8KKworICAgICAgICAqIFNj
cmlwdHMvYnVpbGQtd2Via2l0OiBBZGQgRU5BQkxFX1ZJQlJBVElPTiBmZWF0dXJlLgorCiAyMDEx
LTEyLTA1ICBBbGV4YW5kZXIgRsOmcsO4eSAgPGFsZXhhbmRlci5mYWVyb3lAbm9raWEuY29tPgog
CiAgICAgICAgIFtRdF0gTWluaUJyb3dzZXIgc2hvdWxkIGRlZmF1bHQgdG8gdG91Y2ggYmVoYXZp
b3IKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0IGIvVG9vbHMvU2NyaXB0
cy9idWlsZC13ZWJraXQKaW5kZXggZWVkMjhmZi4uYjVlN2E3ZiAxMDA3NTUKLS0tIGEvVG9vbHMv
U2NyaXB0cy9idWlsZC13ZWJraXQKKysrIGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKQEAg
LTEyNiw2ICsxMjYsNyBAQCBteSAoCiAgICAgJHRvdWNoRXZlbnRzU3VwcG9ydCwKICAgICAkdG91
Y2hJY29uTG9hZGluZ1N1cHBvcnQsCiAgICAgJHZpZGVvU3VwcG9ydCwKKyAgICAkdmlicmF0aW9u
U3VwcG9ydCwKICAgICAkd2ViQXVkaW9TdXBwb3J0LAogICAgICR3ZWJJbnNwZWN0b3JTdXBwb3J0
LAogICAgICR3ZWJTb2NrZXRzU3VwcG9ydCwKQEAgLTMxOCw2ICszMTksOSBAQCBteSBAZmVhdHVy
ZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gInZpZGVvIiwgZGVzYyA9PiAiVG9nZ2xlIFZpZGVvIHN1
cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVklERU8iLCBkZWZhdWx0ID0+IChpc0Fw
cGxlV2ViS2l0KCkgfHwgaXNHdGsoKSB8fCBpc0JsYWNrQmVycnkoKSksIHZhbHVlID0+IFwkdmlk
ZW9TdXBwb3J0IH0sCiAKKyAgICB7IG9wdGlvbiA9PiAidmlicmF0aW9uIiwgZGVzYyA9PiAiVG9n
Z2xlIFZpYnJhdGlvbiBzdXBwb3J0IiwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1ZJQlJBVElP
TiIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCR2aWJyYXRpb25TdXBwb3J0IH0sCisKICAgICB7
IG9wdGlvbiA9PiAid2ViLWF1ZGlvIiwgZGVzYyA9PiAiVG9nZ2xlIFdlYiBBdWRpbyBzdXBwb3J0
IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1dFQl9BVURJTyIsIGRlZmF1bHQgPT4gMCwgdmFs
dWU9PiBcJHdlYkF1ZGlvU3VwcG9ydCB9LAogCg==
</data>
<flag name="commit-queue"
          id="121041"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120726</attachid>
            <date>2011-12-29 02:20:32 -0800</date>
            <delta_ts>2012-01-05 04:10:05 -0800</delta_ts>
            <desc>Add skip test statement for the chromium port.</desc>
            <filename>vibration.patch</filename>
            <type>text/plain</type>
            <size>20819</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxOTZlZDRlLi4wYjY2NGMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTIt
MjkgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF0gQWRkIHRoZSBWaWJyYXRpb24gQVBJIHRvIHRoZSBXZWJLaXQtRUZMCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTE1NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgdGVzdCBjYXNlIGZvciB0
aGUgVmlicmF0aW9uIEFQSS4KKworICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRvci12aWJyYXRp
b25BUEktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9uYXZpZ2F0b3It
dmlicmF0aW9uQVBJLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dDogU2tpcCBuYXZpZ2F0b3ItdmlicmF0aW9uQVBJLmh0bWwKKwog
MjAxMS0xMi0wNSAgRmxvcmluIE1hbGl0YSAgPGZtYWxpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBIZWFwLWJ1ZmZlci1vdmVyZmxvdyBpbiBXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NFbmRUYWcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci12aWJy
YXRpb25BUEktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZp
YnJhdGlvbkFQSS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMjNkZTg1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmln
YXRvci12aWJyYXRpb25BUEktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3QgZm9y
IHRoZSBWaWJyYXRpb24gQVBJLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mg
ZXhjZXB0aW9uQ29kZUZvclZpYnJhdGUgaXMgMAorUEFTUyBleGNlcHRpb25Db2RlRm9yQ2FuY2Vs
IGlzIDAKK1BBU1MgZXhjZXB0aW9uQ29kZUZvclZpYnJhdGVXaXRoSW52YWxpZEludFBhcmFtIGlz
IERPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgZXhjZXB0aW9uQ29kZUZvclZp
YnJhdGVXaXRoSW52YWxpZEFycmF5UGFyYW0gaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNT
X0VSUgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uQVBJLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uQVBJLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjI2OTc2MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb25BUEkuaHRtbApAQCAt
MCwwICsxLDU0IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbignVGVzdCBmb3IgdGhlIFZpYnJhdGlvbiBBUEkuJyk7CisKK3ZhciBleGNlcHRp
b25Db2RlRm9yVmlicmF0ZSA9IDA7Cit2YXIgZXhjZXB0aW9uQ29kZUZvckNhbmNlbCA9IDA7Cit2
YXIgZXhjZXB0aW9uQ29kZUZvclZpYnJhdGVXaXRoSW52YWxpZEludFBhcmFtID0gMDsKK3ZhciBl
eGNlcHRpb25Db2RlRm9yVmlicmF0ZVdpdGhJbnZhbGlkQXJyYXlQYXJhbSA9IDA7CisKK3RyeSB7
CisJbmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoMTAwMCk7CisgICAgbmF2aWdhdG9yLndlYmtpdFZp
YnJhdGUoWzEwMDAsIDMwMCwgNTAwXSk7Cit9CitjYXRjaCAoZSkgeworICAgIGV4Y2VwdGlvbkNv
ZGVGb3JWaWJyYXRlID0gZS5jb2RlOworfQorCitzaG91bGRCZSgiZXhjZXB0aW9uQ29kZUZvclZp
YnJhdGUiLCAiMCIpOworCit0cnkgeworCW5hdmlnYXRvci53ZWJraXRWaWJyYXRlKDApOworICAg
IG5hdmlnYXRvci53ZWJraXRWaWJyYXRlKFtdKTsKK30KK2NhdGNoIChlKSB7CisgICAgZXhjZXB0
aW9uQ29kZUZvckNhbmNlbCA9IGUuY29kZTsKK30KKworc2hvdWxkQmUoImV4Y2VwdGlvbkNvZGVG
b3JDYW5jZWwiLCAiMCIpOworCit0cnkgeworCW5hdmlnYXRvci53ZWJraXRWaWJyYXRlKCIxMDAw
Iik7Cit9CitjYXRjaCAoZSkgeworICAgIGV4Y2VwdGlvbkNvZGVGb3JWaWJyYXRlV2l0aEludmFs
aWRJbnRQYXJhbSA9IGUuY29kZTsKK30KKworc2hvdWxkQmUoImV4Y2VwdGlvbkNvZGVGb3JWaWJy
YXRlV2l0aEludmFsaWRJbnRQYXJhbSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJS
Iik7CisKK3RyeSB7CisJbmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoWzEwMDAsICIyMDAiLCA1MDBd
KTsKK30KK2NhdGNoIChlKSB7CisgICAgZXhjZXB0aW9uQ29kZUZvclZpYnJhdGVXaXRoSW52YWxp
ZEFycmF5UGFyYW0gPSBlLmNvZGU7Cit9CisKK3Nob3VsZEJlKCJleGNlcHRpb25Db2RlRm9yVmli
cmF0ZVdpdGhJbnZhbGlkQXJyYXlQYXJhbSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1Nf
RVJSIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCAxMmY4Njk4Li44
MjViYTIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0CkBAIC04OCw2ICs4OCw5IEBAIEJVR1dLNjg2MTAgU0tJUCA6IGZhc3Qv
ZG9tL01pY3JvRGF0YSA9IFBBU1MKIC8vIFVuc2tpcCBhZnRlciBjaGFuZ2VzIG9uIGJvdGggc2lk
ZXMgaGF2ZSBsYW5kZWQgYW5kIHJvbGxlZCB0b2dldGhlci4KIEJVR0NSMTAzOTM5IFNLSVAgOiBo
dHRwL3Rlc3RzL2FwcGNhY2hlL3dyb25nLWNvbnRlbnQtdHlwZS5odG1sID0gVEVYVAogCisvLyBW
aWJyYXRpb24gQVBJIGlzIG5vdCBzdXBwb3J0ZWQgeWVzIGluIHRoZSBjaHJvbWl1bSBwb3J0Lgor
QlVHV0s3MjAxMCBTS0lQIDogZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbkFQSS5odG1sID0g
RkFJTAorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gV09OVEZJWCBURVNUUwogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggM2QxNjY4Ni4uZDZhZmYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTIyMDQsNiArMjIwNCwxMiBAQCBJRiAoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
KQogICAgICkKIEVORElGICgpCiAKK0lGIChFTkFCTEVfVklCUkFUSU9OKQorICAgIExJU1QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBwYWdlL1ZpYnJhdG9yLmNwcAorICAgICkKK0VO
RElGICgpCisKICMgTW9kdWxlcyB0aGF0IHRoZSBiaW5kaW5ncyBnZW5lcmF0b3Igc2NyaXB0cyBt
YXkgdXNlCiBTRVQoU0NSSVBUU19CSU5ESU5HUwogICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdz
L3NjcmlwdHMvSURMUGFyc2VyLnBtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFjZGYxZC4uOTUxOTc2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDExLTEyLTI5ICBLaWhvbmcgS3dvbiAgPGtpaG9u
Zy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIEFkZCBhIG5ldyBBUEkgZm9yIHRoZSBWaWJy
YXRpb24gQVBJKFczQykuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MjAxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHA6Ly9kZXYudzMub3JnLzIwMDkvZGFwL3ZpYnJhdGlvbi8KKyAgICAgICAgVGVz
dDogZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbkFQSS5odG1sCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOYXZpZ2F0b3I6
OndlYmtpdFZpYnJhdGUpOgorICAgICAgICAgIFRvIGdldCBhbiBhcnJheSB0eXBlIHBhcmFtZXRl
ci4KKyAgICAgICAgICBUaGVyZSBpcyBubyB3YXkgdG8gZ2V0IGFuIGFycmF5IHR5cGUgcGFyYW1l
dGVyLgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvcjo6d2Via2l0VmlicmF0ZSk6CisgICAgICAgICAgSGFuZGxpbmcgdmlicmF0b3Igb3Bl
cmF0aW9uIGJ5IHZhcmlvdXMgcGFyYW1ldGVyIHR5cGUuCisgICAgICAgICAgQXJyYXkgZm9yIHBh
dHRlcm4sIGxvbmcgZm9yIHRpbWUsICcwJyBvciAiW10iIGZvciBjYW5jZWwuCisgICAgICAgICog
cGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5pZGw6CisgICAgICAg
ICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6UGFnZUNsaWVudHM6OlBhZ2VDbGllbnRzKToKKyAgICAgICAgKiBw
YWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnZpYnJhdG9yKToKKyAgICAgICAg
KiBwYWdlL1ZpYnJhdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRvcjo6
VmlicmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0b3I6On5WaWJyYXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpWaWJyYXRvcjo6dmlicmF0ZSk6CisgICAgICAgICAgVHJhbnNmZXIgYW5k
IHNlbmQgYSB2aWJyYXRlIG1lc3NhZ2UgZm9yIGVhY2ggdHlwZSBvZiB2aWJyYXRpb24uKEZvciBh
cnJheSwgbG9uZyBhbmQgY2FuY2VsKQorICAgICAgICAoV2ViQ29yZTo6VmlicmF0b3I6OmNhbmNl
bFZpYnJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRvcjo6c3VzcGVuZFZpYnJhdGlv
bik6CisgICAgICAgICAgU3VzcGVuZCBjdXJyZW50IHZpYnJhdGlvbiBmb3IgdGhlIHBhZ2Ugdmlz
aWJpbGl0eSBzdGF0dXMgaXMgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdG9yOjpy
ZXN1bWVWaWJ0YXRpb24pOgorICAgICAgICAgIFJlc3VtZSB2aWJyYXRpb24gZm9yIHRoZSBwYWdl
IHZpc2liaWxpdHkgc3RhdGUgaXMgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdG9y
Ojp0aW1lclN0YXJ0RmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0b3I6OnRpbWVyU3Rv
cEZpcmVkKToKKyAgICAgICAgKiBwYWdlL1ZpYnJhdG9yLmg6IEFkZGVkLgorICAgICAgICAqIHBh
Z2UvVmlicmF0b3JDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRvckNs
aWVudDo6flZpYnJhdG9yQ2xpZW50KToKKwogMjAxMS0xMi0wNSAgQmVuamFtaW4gUG91bGFpbiAg
PGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBVcHN0cmVhbSB0aGUgQ3Vyc29yIGltcGxl
bWVudGF0aW9uIG9mIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCmluZGV4IDgyNTMyYWMuLjkwZGQ4YzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Vc2VKU0MuY21ha2UKQEAgLTI0MSw2ICsyNDEsMTIgQEAgSUYgKEVOQUJMRV9XRUJHTCkKICAg
ICApCiBFTkRJRiAoKQogCitJRiAoRU5BQkxFX1ZJQlJBVElPTikKKyAgICBMSVNUKEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKKyAgICAgICAgYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3Bw
CisgICAgKQorRU5ESUYgKCkKKwogTElTVChBUFBFTkQgU0NSSVBUU19CSU5ESU5HUwogICAgICR7
V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQogKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCmluZGV4IDEw
N2RhZWIuLjliODVlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TmF2aWdhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05h
dmlnYXRvckN1c3RvbS5jcHAKQEAgLTQsNiArNCw3IEBACiAgKiAgQ29weXJpZ2h0IChjKSAyMDAw
IFN0ZWZhbiBTY2hpbWFuc2tpIChzY2hpbW1pQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1
bmcgRWxlY3Ryb25pY3MKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI1LDggKzI2LDEwIEBACiAK
ICNpbmNsdWRlICJDYWxsYmFja0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNz
Q2FsbGJhY2suaCIKKyNlbmRpZgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC02MCw0ICs2Myw0OSBAQCBKU1ZhbHVlIEpTTmF2aWdhdG9yOjp3ZWJraXRH
ZXRVc2VyTWVkaWEoRXhlY1N0YXRlKiBleGVjKQogfQogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorSlNWYWx1ZSBKU05hdmlnYXRvcjo6d2Vi
a2l0VmlicmF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVmlicmF0aW9uUGF0dGVybiB2aWJy
YXRpb25BcnJheTsKKyAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKKyAgICAgICAgdmli
cmF0aW9uQXJyYXkuYXBwZW5kKDApOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOworICAgIHVuc2lnbmVkIGxlbmd0aDsKKyAgICBpZiAodmFsdWUuaXNVSW50MzIoKSkK
KyAgICAgICAgdmlicmF0aW9uQXJyYXkuYXBwZW5kKHZhbHVlLmFzSW50MzIoKSk7CisgICAgZWxz
ZSBpZiAoSlNPYmplY3QqIG9iamVjdCA9IHRvSlNTZXF1ZW5jZShleGVjLCB2YWx1ZSwgbGVuZ3Ro
KSkgeworICAgICAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgICAgIHZpYnJhdGlvbkFycmF5LmFw
cGVuZCgwKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgICAgIHZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgaSk7CisgICAgICAgICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CisKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8
ICF2YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIElOVkFMSURfQUNDRVNTX0VSUik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc1VJbnQzMigp
KQorICAgICAgICAgICAgICAgIHZpYnJhdGlvbkFycmF5LmFwcGVuZCh2YWx1ZS5hc0ludDMyKCkp
OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIElOVkFMSURfQUNDRVNTX0VSUik7CisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIG1faW1w
bC0+d2Via2l0VmlicmF0ZSh2aWJyYXRpb25BcnJheSwgZWMpOworCisgICAgaWYgKGVjKQorICAg
ICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworCisgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCmluZGV4IGJjMWUw
NTMuLjgwZDU2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKQEAgLTU2LDYgKzU2LDEw
IEBACiAjaW5jbHVkZSAiVXNlck1lZGlhUmVxdWVzdC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
VklCUkFUSU9OKQorI2luY2x1ZGUgIlZpYnJhdG9yLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBOYXZpZ2F0b3I6Ok5hdmlnYXRvcihGcmFtZSogZnJhbWUpCkBAIC0zMTksNCAr
MzIzLDI1IEBAIEdhbWVwYWRMaXN0KiBOYXZpZ2F0b3I6OndlYmtpdEdhbWVwYWRzKCkKIH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKK3ZvaWQgTmF2aWdhdG9yOjp3ZWJraXRWaWJy
YXRlKGNvbnN0IFZpYnJhdGlvblBhdHRlcm4mIHBhdHRlcm4sIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIGlmICghcGF0dGVybi5zaXplKCkgfHwgIW1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAg
cmV0dXJuOworCisjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisgICAgaWYgKG1fZnJh
bWUtPnBhZ2UoKS0+dmlzaWJpbGl0eVN0YXRlKCkgPT0gUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRl
bikKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKS0+
dmlicmF0b3IoKSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgZWMgPSAwOworICAgIG1fZnJhbWUtPnBhZ2UoKS0+dmlicmF0
b3IoKS0+dmlicmF0ZShwYXR0ZXJuKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAppbmRleCA2MzIxYjMxLi5jYzY2YTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmgKQEAgLTI2LDYgKzI2LDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKKyNpZiBFTkFCTEUoVklCUkFUSU9O
KQorI2luY2x1ZGUgIlZpYnJhdG9yLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBET01NaW1lVHlwZUFycmF5OwpAQCAtNzksNiArODMsMTAgQEAgcHVibGljOgogICAg
IEdhbWVwYWRMaXN0KiB3ZWJraXRHYW1lcGFkcygpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVklC
UkFUSU9OKQorICAgIHZvaWQgd2Via2l0VmlicmF0ZShjb25zdCBWaWJyYXRpb25QYXR0ZXJuJiwg
RXhjZXB0aW9uQ29kZSYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmF2aWdhdG9yKEZyYW1l
Kik7CiAgICAgRnJhbWUqIG1fZnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwKaW5kZXgg
MmI2MWM1YS4uZGU2MDUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0
b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbApAQCAtNjUsNiAr
NjUsMTIgQEAgbW9kdWxlIHdpbmRvdyB7CiAjaWYgZGVmaW5lZChFTkFCTEVfR0FNRVBBRCkgJiYg
RU5BQkxFX0dBTUVQQUQKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50
aW1lXSBHYW1lcGFkTGlzdCB3ZWJraXRHYW1lcGFkczsKICNlbmRpZgorCisjaWYgZGVmaW5lZChF
TkFCTEVfVklCUkFUSU9OKSAmJiBFTkFCTEVfVklCUkFUSU9OCisgICAgICAgIFtDdXN0b21dIHZv
aWQgd2Via2l0VmlicmF0ZShpbiBBcnJheSBwYXR0ZXJuKQorICAgICAgICAgICAgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CisjZW5kaWYKKwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4
IDc3MjAwZmUuLmVmZGEyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtODYsNiArODYsMTAgQEAK
ICNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFZJQlJB
VElPTikKKyNpbmNsdWRlICJWaWJyYXRvci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIEhhc2hTZXQ8UGFnZSo+KiBhbGxQYWdlczsKQEAgLTE3OCw2ICsxODIsOSBA
QCBQYWdlOjpQYWdlKFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50cykKICAgICAsIG1fdmlzaWJpbGl0
eVN0YXRlKFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKQogI2VuZGlmCiAgICAgLCBtX2Rpc3Bs
YXlJRCgwKQorI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgLCBtX3ZpYnJhdG9yKGFkb3B0UHRy
KG5ldyBWaWJyYXRvcihwYWdlQ2xpZW50cy52aWJyYXRvckNsaWVudCkpKQorI2VuZGlmCiB7CiAg
ICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5ldyBIYXNoU2V0PFBhZ2Uq
PjsKQEAgLTEwNjksNiArMTA3Niw5IEBAIFBhZ2U6OlBhZ2VDbGllbnRzOjpQYWdlQ2xpZW50cygp
CiAgICAgLCBzcGVlY2hJbnB1dENsaWVudCgwKQogICAgICwgbm90aWZpY2F0aW9uQ2xpZW50KDAp
CiAgICAgLCB1c2VyTWVkaWFDbGllbnQoMCkKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICwg
dmlicmF0b3JDbGllbnQoMCkKKyNlbmRpZgogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDQ5ODAx
YjUuLmFmNzFhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC04OSw2ICs4OSwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgY2xhc3MgTm90aWZpY2F0
aW9uUHJlc2VudGVyOwogI2VuZGlmCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICBjbGFzcyBW
aWJyYXRvcjsKKyAgICBjbGFzcyBWaWJyYXRvckNsaWVudDsKKyNlbmRpZgogCiAgICAgdHlwZWRl
ZiB1aW50NjRfdCBMaW5rSGFzaDsKIApAQCAtMTIxLDYgKzEyNSw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgICAgIFNwZWVjaElucHV0Q2xpZW50KiBzcGVlY2hJbnB1dENsaWVudDsK
ICAgICAgICAgICAgIE5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uQ2xpZW50Owog
ICAgICAgICAgICAgVXNlck1lZGlhQ2xpZW50KiB1c2VyTWVkaWFDbGllbnQ7CisjaWYgRU5BQkxF
KFZJQlJBVElPTikKKyAgICAgICAgICAgIFZpYnJhdG9yQ2xpZW50KiB2aWJyYXRvckNsaWVudDsK
KyNlbmRpZgogICAgICAgICB9OwogCiAgICAgICAgIFBhZ2UoUGFnZUNsaWVudHMmKTsKQEAgLTM0
Myw3ICszNTAsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICAgICAgUGxh
dGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0K
LSAgICAgICAgCisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICAgICBWaWJyYXRvciogdmli
cmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3ZpYnJhdG9yLmdldCgpOyB9CisjZW5kaWYKKwogICAg
IHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdEdyb3VwKCk7CiAKQEAgLTQ1NCw2ICs0NjUsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYWdlVmlzaWJpbGl0eVN0YXRlIG1fdmlz
aWJpbGl0eVN0YXRlOwogI2VuZGlmCiAgICAgICAgIFBsYXRmb3JtRGlzcGxheUlEIG1fZGlzcGxh
eUlEOworCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICAgICAgT3duUHRyPFZpYnJhdG9yPiBt
X3ZpYnJhdG9yOworI2VuZGlmCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWJyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ZpYnJhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4y
YzFjZGZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWJyYXRvci5j
cHAKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlicmF0b3Iu
aCIKKworI2lmIEVOQUJMRShWSUJSQVRJT04pCisKKyNpbmNsdWRlICJWaWJyYXRvckNsaWVudC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1ZpYnJhdG9yOjpWaWJyYXRvcihWaWJyYXRvckNs
aWVudCogdmlicmF0b3JDbGllbnQpCisgICAgOiBtX3ZpYnJhdG9yQ2xpZW50KHZpYnJhdG9yQ2xp
ZW50KQorICAgICwgbV90aW1lclN0YXJ0KHRoaXMsICZWaWJyYXRvcjo6dGltZXJTdGFydEZpcmVk
KQorICAgICwgbV90aW1lclN0b3AodGhpcywgJlZpYnJhdG9yOjp0aW1lclN0b3BGaXJlZCkKKyAg
ICAsIG1faXNWaWJyYXRpbmcoZmFsc2UpCit7Cit9CisKK1ZpYnJhdG9yOjp+VmlicmF0b3IoKQor
eworICAgIG1fdmlicmF0b3JDbGllbnQtPnZpYnJhdG9yRGVzdHJveWVkKCk7Cit9CisKK3ZvaWQg
VmlicmF0b3I6OnZpYnJhdGUoY29uc3QgVmlicmF0aW9uUGF0dGVybiYgcGF0dGVybikKK3sKKyAg
ICBpbnQgbGVuZ3RoID0gcGF0dGVybi5zaXplKCk7CisKKyAgICBpZiAoIWxlbmd0aCkgeworICAg
ICAgICBpZiAobV9pc1ZpYnJhdGluZykKKyAgICAgICAgICAgIGNhbmNlbFZpYnJhdGlvbigpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGxlbmd0aCA9PSAxICYmICFwYXR0ZXJu
WzBdKSB7CisgICAgICAgIGlmIChtX2lzVmlicmF0aW5nKQorICAgICAgICAgICAgY2FuY2VsVmli
cmF0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1faXNWaWJyYXRp
bmcgJiYgIW1fdGltZXJTdGFydC5pc0FjdGl2ZSgpKSB7CisgICAgICAgIG1fcGF0dGVybiA9IHBh
dHRlcm47CisgICAgICAgIG1fdGltZXJTdGFydC5zdGFydE9uZVNob3QoMCk7CisgICAgfQorfQor
Cit2b2lkIFZpYnJhdG9yOjpjYW5jZWxWaWJyYXRpb24oKQoreworICAgIGlmIChtX2lzVmlicmF0
aW5nKSB7CisgICAgICAgIG1fdmlicmF0b3JDbGllbnQtPmNhbmNlbFZpYnJhdGlvbigpOworICAg
ICAgICBtX2lzVmlicmF0aW5nID0gZmFsc2U7CisgICAgICAgIG1fdGltZXJTdG9wLnN0b3AoKTsK
KyAgICB9Cit9CisKK3ZvaWQgVmlicmF0b3I6OnN1c3BlbmRWaWJyYXRpb24oKQoreworICAgIGlm
ICghbV9pc1ZpYnJhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYXR0ZXJuLmluc2Vy
dCgwLCBtX3RpbWVyU3RvcC5uZXh0RmlyZUludGVydmFsKCkpOworICAgIG1fdGltZXJTdG9wLnN0
b3AoKTsKKyAgICBjYW5jZWxWaWJyYXRpb24oKTsKK30KKwordm9pZCBWaWJyYXRvcjo6cmVzdW1l
VmlidGF0aW9uKCkKK3sKKyAgICBtX3RpbWVyU3RhcnQuc3RhcnRPbmVTaG90KDApOworfQorCit2
b2lkIFZpYnJhdG9yOjp0aW1lclN0YXJ0RmlyZWQoVGltZXI8VmlicmF0b3I+KiB0aW1lcikKK3sK
KyAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV90aW1lclN0YXJ0KTsKKworICAg
IG1fdGltZXJTdGFydC5zdG9wKCk7CisKKyAgICBpZiAobV9wYXR0ZXJuLnNpemUoKSkgeworICAg
ICAgICBtX2lzVmlicmF0aW5nID0gdHJ1ZTsKKyAgICAgICAgbV92aWJyYXRvckNsaWVudC0+dmli
cmF0ZShtX3BhdHRlcm5bMF0pOworICAgICAgICBtX3RpbWVyU3RvcC5zdGFydE9uZVNob3QobV9w
YXR0ZXJuWzBdIC8gMTAwMC4wKTsKKyAgICAgICAgbV9wYXR0ZXJuLnJlbW92ZSgwKTsKKyAgICB9
Cit9CisKK3ZvaWQgVmlicmF0b3I6OnRpbWVyU3RvcEZpcmVkKFRpbWVyPFZpYnJhdG9yPiogdGlt
ZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fdGltZXJTdG9wKTsK
KworICAgIG1fdGltZXJTdG9wLnN0b3AoKTsKKyAgICBtX2lzVmlicmF0aW5nID0gZmFsc2U7CisK
KyAgICBpZiAobV9wYXR0ZXJuLnNpemUoKSkgeworICAgICAgICBtX3RpbWVyU3RhcnQuc3RhcnRP
bmVTaG90KG1fcGF0dGVyblswXSAvIDEwMDAuMCk7CisgICAgICAgIG1fcGF0dGVybi5yZW1vdmUo
MCk7CisgICAgfQorfQorCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ZpYnJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpYnJhdG9yLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRkYjczMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlicmF0b3IuaApAQCAtMCwwICsxLDU2IEBACisvKgorICAg
IENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgVmlicmF0b3JfaAorI2Rl
ZmluZSBWaWJyYXRvcl9oCisKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIFZlY3Rvcjxsb25nPiBWaWJy
YXRpb25QYXR0ZXJuOworCitjbGFzcyBWaWJyYXRvckNsaWVudDsKKworY2xhc3MgVmlicmF0b3Ig
eworcHVibGljOgorICAgIFZpYnJhdG9yKFZpYnJhdG9yQ2xpZW50Kik7CisgICAgflZpYnJhdG9y
KCk7CisKKyAgICB2b2lkIHZpYnJhdGUoY29uc3QgVmlicmF0aW9uUGF0dGVybiYpOworICAgIHZv
aWQgY2FuY2VsVmlicmF0aW9uKCk7CisKKyAgICAvLyBGSVhNRSA6IEFkZCBzdXNwZW5kVmlicmF0
aW9uKCkgYW5kIHJlc3VtZVZpYnJhdGlvbigpIHRvIHRoZSBwYWdlIHZpc2liaWxpdHkgZmVhdHVy
ZSwgd2hlbiB0aGUgZG9jdW1lbnQuaGlkZGVuIGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLgorICAgIHZv
aWQgc3VzcGVuZFZpYnJhdGlvbigpOworICAgIHZvaWQgcmVzdW1lVmlidGF0aW9uKCk7CisgICAg
dm9pZCB0aW1lclN0YXJ0RmlyZWQoVGltZXI8VmlicmF0b3I+Kik7CisgICAgdm9pZCB0aW1lclN0
b3BGaXJlZChUaW1lcjxWaWJyYXRvcj4qKTsKKworcHJpdmF0ZToKKyAgICBWaWJyYXRvckNsaWVu
dCogbV92aWJyYXRvckNsaWVudDsKKyAgICBUaW1lcjxWaWJyYXRvcj4gbV90aW1lclN0YXJ0Owor
ICAgIFRpbWVyPFZpYnJhdG9yPiBtX3RpbWVyU3RvcDsKKyAgICBib29sIG1faXNWaWJyYXRpbmc7
CisgICAgVmlicmF0aW9uUGF0dGVybiBtX3BhdHRlcm47Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBWaWJyYXRvcl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVmlicmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlicmF0b3JD
bGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTc2Nzc4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWJyYXRvckNsaWVudC5oCkBAIC0w
LDAgKzEsNDAgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25p
Y3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisqLworCisjaWZuZGVmIFZpYnJhdG9yQ2xpZW50X2gKKyNkZWZpbmUgVmlicmF0b3JDbGllbnRf
aAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpYnJhdG9yQ2xpZW50IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5WaWJyYXRvckNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lk
IHZpYnJhdGUoY29uc3QgbG9uZyYgdGltZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxW
aWJyYXRpb24oKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlicmF0b3JEZXN0cm95ZWQoKSA9
IDA7CisKKyAgICB2b2lkIHNldE1vY2tWaWJyYXRpb24oKTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIFZpYnJhdG9yQ2xpZW50X2gKKwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJiMWFhNmMuLmRlNjJjMWQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxMS0xMi0yOSAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNv
bT4KKworICAgICAgICBBZGQgYSBuZXcgQVBJIGZvciB0aGUgVmlicmF0aW9uIEFQSShXM0MpLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwMTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwOi8vZGV2
LnczLm9yZy8yMDA5L2RhcC92aWJyYXRpb24vCisKKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLXdl
YmtpdDogQWRkIEVOQUJMRV9WSUJSQVRJT04gZmVhdHVyZS4KKwogMjAxMS0xMi0wNSAgQWxleGFu
ZGVyIEbDpnLDuHkgIDxhbGV4YW5kZXIuZmFlcm95QG5va2lhLmNvbT4KIAogICAgICAgICBbUXRd
IE1pbmlCcm93c2VyIHNob3VsZCBkZWZhdWx0IHRvIHRvdWNoIGJlaGF2aW9yCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0
CmluZGV4IGVlZDI4ZmYuLmI1ZTdhN2YgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQt
d2Via2l0CisrKyBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CkBAIC0xMjYsNiArMTI2LDcg
QEAgbXkgKAogICAgICR0b3VjaEV2ZW50c1N1cHBvcnQsCiAgICAgJHRvdWNoSWNvbkxvYWRpbmdT
dXBwb3J0LAogICAgICR2aWRlb1N1cHBvcnQsCisgICAgJHZpYnJhdGlvblN1cHBvcnQsCiAgICAg
JHdlYkF1ZGlvU3VwcG9ydCwKICAgICAkd2ViSW5zcGVjdG9yU3VwcG9ydCwKICAgICAkd2ViU29j
a2V0c1N1cHBvcnQsCkBAIC0zMTgsNiArMzE5LDkgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsg
b3B0aW9uID0+ICJ2aWRlbyIsIGRlc2MgPT4gIlRvZ2dsZSBWaWRlbyBzdXBwb3J0IiwKICAgICAg
IGRlZmluZSA9PiAiRU5BQkxFX1ZJREVPIiwgZGVmYXVsdCA9PiAoaXNBcHBsZVdlYktpdCgpIHx8
IGlzR3RrKCkgfHwgaXNCbGFja0JlcnJ5KCkpLCB2YWx1ZSA9PiBcJHZpZGVvU3VwcG9ydCB9LAog
CisgICAgeyBvcHRpb24gPT4gInZpYnJhdGlvbiIsIGRlc2MgPT4gIlRvZ2dsZSBWaWJyYXRpb24g
c3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9WSUJSQVRJT04iLCBkZWZhdWx0ID0+
IDAsIHZhbHVlID0+IFwkdmlicmF0aW9uU3VwcG9ydCB9LAorCiAgICAgeyBvcHRpb24gPT4gIndl
Yi1hdWRpbyIsIGRlc2MgPT4gIlRvZ2dsZSBXZWIgQXVkaW8gc3VwcG9ydCIsCiAgICAgICBkZWZp
bmUgPT4gIkVOQUJMRV9XRUJfQVVESU8iLCBkZWZhdWx0ID0+IDAsIHZhbHVlPT4gXCR3ZWJBdWRp
b1N1cHBvcnQgfSwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121257</attachid>
            <date>2012-01-05 04:10:05 -0800</date>
            <delta_ts>2012-01-26 01:12:21 -0800</delta_ts>
            <desc>Tidy code up.</desc>
            <filename>vibration.patch</filename>
            <type>text/plain</type>
            <size>20782</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxOTZlZDRlLi5iMjQ2OWY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEt
MDUgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRk
IGEgbmV3IEFQSSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkoVzNDKS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MTU2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyB0ZXN0IGNhc2UgZm9yIHRoZSBW
aWJyYXRpb24gQVBJLgorCisgICAgICAgICogZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbkFQ
SS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRvci12aWJy
YXRpb25BUEkuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0OiBTa2lwICJuYXZpZ2F0b3ItdmlicmF0aW9uQVBJLmh0bWwiLgorCiAy
MDExLTEyLTA1ICBGbG9yaW4gTWFsaXRhICA8Zm1hbGl0YUBnb29nbGUuY29tPgogCiAgICAgICAg
IEhlYXAtYnVmZmVyLW92ZXJmbG93IGluIFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0VuZFRhZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJh
dGlvbkFQSS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3Itdmli
cmF0aW9uQVBJLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4yM2RlODVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdh
dG9yLXZpYnJhdGlvbkFQSS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdCBmb3Ig
dGhlIFZpYnJhdGlvbiBBUEkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBl
eGNlcHRpb25Db2RlRm9yVmlicmF0ZSBpcyAwCitQQVNTIGV4Y2VwdGlvbkNvZGVGb3JDYW5jZWwg
aXMgMAorUEFTUyBleGNlcHRpb25Db2RlRm9yVmlicmF0ZVdpdGhJbnZhbGlkSW50UGFyYW0gaXMg
RE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBleGNlcHRpb25Db2RlRm9yVmli
cmF0ZVdpdGhJbnZhbGlkQXJyYXlQYXJhbSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1Nf
RVJSCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb25BUEkuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb25BUEkuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjY5NzYxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbkFQSS5odG1sCkBAIC0w
LDAgKzEsNTQgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCdUZXN0IGZvciB0aGUgVmlicmF0aW9uIEFQSS4nKTsKKwordmFyIGV4Y2VwdGlv
bkNvZGVGb3JWaWJyYXRlID0gMDsKK3ZhciBleGNlcHRpb25Db2RlRm9yQ2FuY2VsID0gMDsKK3Zh
ciBleGNlcHRpb25Db2RlRm9yVmlicmF0ZVdpdGhJbnZhbGlkSW50UGFyYW0gPSAwOwordmFyIGV4
Y2VwdGlvbkNvZGVGb3JWaWJyYXRlV2l0aEludmFsaWRBcnJheVBhcmFtID0gMDsKKwordHJ5IHsK
KwluYXZpZ2F0b3Iud2Via2l0VmlicmF0ZSgxMDAwKTsKKyAgICBuYXZpZ2F0b3Iud2Via2l0Vmli
cmF0ZShbMTAwMCwgMzAwLCA1MDBdKTsKK30KK2NhdGNoIChlKSB7CisgICAgZXhjZXB0aW9uQ29k
ZUZvclZpYnJhdGUgPSBlLmNvZGU7Cit9CisKK3Nob3VsZEJlKCJleGNlcHRpb25Db2RlRm9yVmli
cmF0ZSIsICIwIik7CisKK3RyeSB7CisJbmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoMCk7CisgICAg
bmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoW10pOworfQorY2F0Y2ggKGUpIHsKKyAgICBleGNlcHRp
b25Db2RlRm9yQ2FuY2VsID0gZS5jb2RlOworfQorCitzaG91bGRCZSgiZXhjZXB0aW9uQ29kZUZv
ckNhbmNlbCIsICIwIik7CisKK3RyeSB7CisJbmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoIjEwMDAi
KTsKK30KK2NhdGNoIChlKSB7CisgICAgZXhjZXB0aW9uQ29kZUZvclZpYnJhdGVXaXRoSW52YWxp
ZEludFBhcmFtID0gZS5jb2RlOworfQorCitzaG91bGRCZSgiZXhjZXB0aW9uQ29kZUZvclZpYnJh
dGVXaXRoSW52YWxpZEludFBhcmFtIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIi
KTsKKwordHJ5IHsKKwluYXZpZ2F0b3Iud2Via2l0VmlicmF0ZShbMTAwMCwgIjIwMCIsIDUwMF0p
OworfQorY2F0Y2ggKGUpIHsKKyAgICBleGNlcHRpb25Db2RlRm9yVmlicmF0ZVdpdGhJbnZhbGlk
QXJyYXlQYXJhbSA9IGUuY29kZTsKK30KKworc2hvdWxkQmUoImV4Y2VwdGlvbkNvZGVGb3JWaWJy
YXRlV2l0aEludmFsaWRBcnJheVBhcmFtIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19F
UlIiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDEyZjg2OTguLmMz
NjczZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKQEAgLTg4LDYgKzg4LDkgQEAgQlVHV0s2ODYxMCBTS0lQIDogZmFzdC9k
b20vTWljcm9EYXRhID0gUEFTUwogLy8gVW5za2lwIGFmdGVyIGNoYW5nZXMgb24gYm90aCBzaWRl
cyBoYXZlIGxhbmRlZCBhbmQgcm9sbGVkIHRvZ2V0aGVyLgogQlVHQ1IxMDM5MzkgU0tJUCA6IGh0
dHAvdGVzdHMvYXBwY2FjaGUvd3JvbmctY29udGVudC10eXBlLmh0bWwgPSBURVhUCiAKKy8vIFZp
YnJhdGlvbiBBUEkgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUgY2hyb21pdW0gcG9ydC4KK0JVR1dL
NzIwMTAgU0tJUCA6IGZhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb25BUEkuaHRtbCA9IEZBSUwK
KwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIC8vIFdPTlRGSVggVEVTVFMKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDNkMTY2ODYuLmQ2YWZmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0y
MjA0LDYgKzIyMDQsMTIgQEAgSUYgKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKICAg
ICApCiBFTkRJRiAoKQogCitJRiAoRU5BQkxFX1ZJQlJBVElPTikKKyAgICBMSVNUKEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKKyAgICAgICAgcGFnZS9WaWJyYXRvci5jcHAKKyAgICApCitFTkRJRiAo
KQorCiAjIE1vZHVsZXMgdGhhdCB0aGUgYmluZGluZ3MgZ2VuZXJhdG9yIHNjcmlwdHMgbWF5IHVz
ZQogU0VUKFNDUklQVFNfQklORElOR1MKICAgICAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3Jp
cHRzL0lETFBhcnNlci5wbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZhY2RmMWQuLjFlNDRiYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMi0wMS0wNSAgS2lob25nIEt3b24gIDxraWhvbmcua3dv
bkBzYW1zdW5nLmNvbT4KKworICAgICAgICBBZGQgYSBuZXcgQVBJIGZvciB0aGUgVmlicmF0aW9u
IEFQSShXM0MpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzIwMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBodHRwOi8vZGV2LnczLm9yZy8yMDA5L2RhcC92aWJyYXRpb24vCisgICAgICAgIFRlc3Q6IGZh
c3QvZG9tL25hdmlnYXRvci12aWJyYXRpb25BUEkuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogVXNlSlNDLmNtYWtlOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
TmF2aWdhdG9yQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTmF2aWdhdG9yOjp3ZWJr
aXRWaWJyYXRlKToKKyAgICAgICAgICBUbyBnZXQgYW4gYXJyYXkgdHlwZSBwYXJhbWV0ZXIuCisg
ICAgICAgICAgVGhlcmUgaXMgbm8gd2F5IHRvIGdldCBhbiBhcnJheSB0eXBlIHBhcmFtZXRlci4K
KyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0
b3I6OndlYmtpdFZpYnJhdGUpOgorICAgICAgICAgIEhhbmRsaW5nIHZpYnJhdG9yIG9wZXJhdGlv
biBieSB2YXJpb3VzIHBhcmFtZXRlciB0eXBlLgorICAgICAgICAgIEFycmF5IGZvciBwYXR0ZXJu
LCBsb25nIGZvciB0aW1lLCAnMCcgb3IgIltdIiBmb3IgY2FuY2VsLgorICAgICAgICAqIHBhZ2Uv
TmF2aWdhdG9yLmg6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaWRsOgorICAgICAgICAqIHBh
Z2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OlBhZ2VDbGllbnRzOjpQYWdlQ2xpZW50cyk6CisgICAgICAgICogcGFnZS9Q
YWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp2aWJyYXRvcik6CisgICAgICAgICogcGFn
ZS9WaWJyYXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0b3I6OlZpYnJh
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdG9yOjp+VmlicmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6VmlicmF0b3I6OnZpYnJhdGUpOgorICAgICAgICAgIFRyYW5zZmVyIGFuZCBzZW5k
IGEgdmlicmF0ZSBtZXNzYWdlIGZvciBlYWNoIHR5cGUgb2YgdmlicmF0aW9uLihGb3IgYXJyYXks
IGxvbmcgYW5kIGNhbmNlbCkKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdG9yOjpjYW5jZWxWaWJy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0b3I6OnN1c3BlbmRWaWJyYXRpb24pOgor
ICAgICAgICAgIFN1c3BlbmQgY3VycmVudCB2aWJyYXRpb24gZm9yIHRoZSBwYWdlIHZpc2liaWxp
dHkgc3RhdHVzIGlzIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRvcjo6cmVzdW1l
VmlidGF0aW9uKToKKyAgICAgICAgICBSZXN1bWUgdmlicmF0aW9uIGZvciB0aGUgcGFnZSB2aXNp
YmlsaXR5IHN0YXRlIGlzIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRvcjo6dGlt
ZXJTdGFydEZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdG9yOjp0aW1lclN0b3BGaXJl
ZCk6CisgICAgICAgICogcGFnZS9WaWJyYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1Zp
YnJhdG9yQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0b3JDbGllbnQ6
On5WaWJyYXRvckNsaWVudCk6CisKIDIwMTEtMTItMDUgIEJlbmphbWluIFBvdWxhaW4gIDxicG91
bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gdGhlIEN1cnNvciBpbXBsZW1lbnRh
dGlvbiBvZiBpT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQppbmRleCA4MjUzMmFjLi45MGRkOGM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNl
SlNDLmNtYWtlCkBAIC0yNDEsNiArMjQxLDEyIEBAIElGIChFTkFCTEVfV0VCR0wpCiAgICAgKQog
RU5ESUYgKCkKIAorSUYgKEVOQUJMRV9WSUJSQVRJT04pCisgICAgTElTVChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCisgICAgICAgIGJpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAorICAg
ICkKK0VORElGICgpCisKIExJU1QoQVBQRU5EIFNDUklQVFNfQklORElOR1MKICAgICAke1dFQkNP
UkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KICkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAppbmRleCAxMDdkYWVi
Li45Yjg1ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmln
YXRvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0
b3JDdXN0b20uY3BwCkBAIC00LDYgKzQsNyBAQAogICogIENvcHlyaWdodCAoYykgMjAwMCBTdGVm
YW4gU2NoaW1hbnNraSAoc2NoaW1taUBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVs
ZWN0cm9uaWNzCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yNSw4ICsyNiwxMCBAQAogCiAjaW5j
bHVkZSAiQ2FsbGJhY2tGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIkpTTmF2aWdhdG9yVXNlck1lZGlhRXJy
b3JDYWxsYmFjay5oIgogI2luY2x1ZGUgIkpTTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxi
YWNrLmgiCisjZW5kaWYKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNjAsNCArNjMsNDkgQEAgSlNWYWx1ZSBKU05hdmlnYXRvcjo6d2Via2l0R2V0VXNl
ck1lZGlhKEV4ZWNTdGF0ZSogZXhlYykKIH0KICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKK0pTVmFsdWUgSlNOYXZpZ2F0b3I6OndlYmtpdFZp
YnJhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZpYnJhdGlvblBhdHRlcm4gdmlicmF0aW9u
QXJyYXk7CisgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCisgICAgICAgIHZpYnJhdGlv
bkFycmF5LmFwcGVuZCgwKTsKKworICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgw
KTsKKyAgICB1bnNpZ25lZCBsZW5ndGg7CisgICAgaWYgKHZhbHVlLmlzVUludDMyKCkpCisgICAg
ICAgIHZpYnJhdGlvbkFycmF5LmFwcGVuZCh2YWx1ZS5hc0ludDMyKCkpOworICAgIGVsc2UgaWYg
KEpTT2JqZWN0KiBvYmplY3QgPSB0b0pTU2VxdWVuY2UoZXhlYywgdmFsdWUsIGxlbmd0aCkpIHsK
KyAgICAgICAgaWYgKCFsZW5ndGgpCisgICAgICAgICAgICB2aWJyYXRpb25BcnJheS5hcHBlbmQo
MCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgICAgICB2YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIGkpOworICAgICAgICAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworCisgICAgICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSB8fCAhdmFs
dWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBJ
TlZBTElEX0FDQ0VTU19FUlIpOworICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodmFsdWUuaXNVSW50MzIoKSkKKyAg
ICAgICAgICAgICAgICB2aWJyYXRpb25BcnJheS5hcHBlbmQodmFsdWUuYXNJbnQzMigpKTsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBJTlZBTElEX0FDQ0VTU19FUlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBtX2ltcGwtPndl
YmtpdFZpYnJhdGUodmlicmF0aW9uQXJyYXksIGVjKTsKKworICAgIGlmIChlYykKKyAgICAgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
fQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCBiYzFlMDUzLi44
MGQ1NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC01Niw2ICs1NiwxMCBAQAog
I2luY2x1ZGUgIlVzZXJNZWRpYVJlcXVlc3QuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFZJQlJB
VElPTikKKyNpbmNsdWRlICJWaWJyYXRvci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogTmF2aWdhdG9yOjpOYXZpZ2F0b3IoRnJhbWUqIGZyYW1lKQpAQCAtMzE5LDQgKzMyMywy
NSBAQCBHYW1lcGFkTGlzdCogTmF2aWdhdG9yOjp3ZWJraXRHYW1lcGFkcygpCiB9CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShWSUJSQVRJT04pCit2b2lkIE5hdmlnYXRvcjo6d2Via2l0VmlicmF0ZShj
b25zdCBWaWJyYXRpb25QYXR0ZXJuJiBwYXR0ZXJuLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBpZiAoIXBhdHRlcm4uc2l6ZSgpIHx8ICFtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgIHJldHVy
bjsKKworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIGlmIChtX2ZyYW1lLT5w
YWdlKCktPnZpc2liaWxpdHlTdGF0ZSgpID09IFBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW4pCisg
ICAgICAgIHJldHVybjsKKyNlbmRpZgorCisgICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCktPnZpYnJh
dG9yKCkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGVjID0gMDsKKyAgICBtX2ZyYW1lLT5wYWdlKCktPnZpYnJhdG9yKCkt
PnZpYnJhdGUocGF0dGVybik7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmgKaW5kZXggNjMyMWIzMS4uY2M2NmEwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5oCkBAIC0yNiw2ICsyNiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyNp
bmNsdWRlICJWaWJyYXRvci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRE9NTWltZVR5cGVBcnJheTsKQEAgLTc5LDYgKzgzLDEwIEBAIHB1YmxpYzoKICAgICBHYW1l
cGFkTGlzdCogd2Via2l0R2FtZXBhZHMoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFZJQlJBVElP
TikKKyAgICB2b2lkIHdlYmtpdFZpYnJhdGUoY29uc3QgVmlicmF0aW9uUGF0dGVybiYsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5hdmlnYXRvcihGcmFtZSopOwog
ICAgIEZyYW1lKiBtX2ZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCmluZGV4IDJiNjFj
NWEuLmRlNjA1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwKQEAgLTY1LDYgKzY1LDEy
IEBAIG1vZHVsZSB3aW5kb3cgewogI2lmIGRlZmluZWQoRU5BQkxFX0dBTUVQQUQpICYmIEVOQUJM
RV9HQU1FUEFECiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGltZV0g
R2FtZXBhZExpc3Qgd2Via2l0R2FtZXBhZHM7CiAjZW5kaWYKKworI2lmIGRlZmluZWQoRU5BQkxF
X1ZJQlJBVElPTikgJiYgRU5BQkxFX1ZJQlJBVElPTgorICAgICAgICBbQ3VzdG9tXSB2b2lkIHdl
YmtpdFZpYnJhdGUoaW4gQXJyYXkgcGF0dGVybikKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNl
cHRpb24pOworI2VuZGlmCisKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA3NzIw
MGZlLi5lZmRhMmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTg2LDYgKzg2LDEwIEBACiAjaW5j
bHVkZSAiVXNlck1lZGlhQ2xpZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShWSUJSQVRJT04p
CisjaW5jbHVkZSAiVmlicmF0b3IuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBIYXNoU2V0PFBhZ2UqPiogYWxsUGFnZXM7CkBAIC0xNzgsNiArMTgyLDkgQEAgUGFn
ZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX3Zpc2liaWxpdHlTdGF0
ZShQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSkKICNlbmRpZgogICAgICwgbV9kaXNwbGF5SUQo
MCkKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICwgbV92aWJyYXRvcihhZG9wdFB0cihuZXcg
VmlicmF0b3IocGFnZUNsaWVudHMudmlicmF0b3JDbGllbnQpKSkKKyNlbmRpZgogewogICAgIGlm
ICghYWxsUGFnZXMpIHsKICAgICAgICAgYWxsUGFnZXMgPSBuZXcgSGFzaFNldDxQYWdlKj47CkBA
IC0xMDY5LDYgKzEwNzYsOSBAQCBQYWdlOjpQYWdlQ2xpZW50czo6UGFnZUNsaWVudHMoKQogICAg
ICwgc3BlZWNoSW5wdXRDbGllbnQoMCkKICAgICAsIG5vdGlmaWNhdGlvbkNsaWVudCgwKQogICAg
ICwgdXNlck1lZGlhQ2xpZW50KDApCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICAsIHZpYnJh
dG9yQ2xpZW50KDApCisjZW5kaWYKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA0OTgwMWI1Li5h
ZjcxYTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtODksNiArODksMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIGNsYXNzIE5vdGlmaWNhdGlvblBy
ZXNlbnRlcjsKICNlbmRpZgorI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgY2xhc3MgVmlicmF0
b3I7CisgICAgY2xhc3MgVmlicmF0b3JDbGllbnQ7CisjZW5kaWYKIAogICAgIHR5cGVkZWYgdWlu
dDY0X3QgTGlua0hhc2g7CiAKQEAgLTEyMSw2ICsxMjUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICAgICBTcGVlY2hJbnB1dENsaWVudCogc3BlZWNoSW5wdXRDbGllbnQ7CiAgICAg
ICAgICAgICBOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvbkNsaWVudDsKICAgICAg
ICAgICAgIFVzZXJNZWRpYUNsaWVudCogdXNlck1lZGlhQ2xpZW50OworI2lmIEVOQUJMRShWSUJS
QVRJT04pCisgICAgICAgICAgICBWaWJyYXRvckNsaWVudCogdmlicmF0b3JDbGllbnQ7CisjZW5k
aWYKICAgICAgICAgfTsKIAogICAgICAgICBQYWdlKFBhZ2VDbGllbnRzJik7CkBAIC0zNDMsNyAr
MzUwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgICAgIFBsYXRmb3Jt
RGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUlEOyB9Ci0gICAg
ICAgIAorCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICAgICAgVmlicmF0b3IqIHZpYnJhdG9y
KCkgY29uc3QgeyByZXR1cm4gbV92aWJyYXRvci5nZXQoKTsgfQorI2VuZGlmCisKICAgICBwcml2
YXRlOgogICAgICAgICB2b2lkIGluaXRHcm91cCgpOwogCkBAIC00NTQsNiArNDY1LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGFnZVZpc2liaWxpdHlTdGF0ZSBtX3Zpc2liaWxp
dHlTdGF0ZTsKICNlbmRpZgogICAgICAgICBQbGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRDsK
KworI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgICAgIE93blB0cjxWaWJyYXRvcj4gbV92aWJy
YXRvcjsKKyNlbmRpZgogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlicmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9WaWJyYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMxY2Rm
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlicmF0b3IuY3BwCkBA
IC0wLDAgKzEsMTE4IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0
cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpYnJhdG9yLmgiCisK
KyNpZiBFTkFCTEUoVklCUkFUSU9OKQorCisjaW5jbHVkZSAiVmlicmF0b3JDbGllbnQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitWaWJyYXRvcjo6VmlicmF0b3IoVmlicmF0b3JDbGllbnQq
IHZpYnJhdG9yQ2xpZW50KQorICAgIDogbV92aWJyYXRvckNsaWVudCh2aWJyYXRvckNsaWVudCkK
KyAgICAsIG1fdGltZXJTdGFydCh0aGlzLCAmVmlicmF0b3I6OnRpbWVyU3RhcnRGaXJlZCkKKyAg
ICAsIG1fdGltZXJTdG9wKHRoaXMsICZWaWJyYXRvcjo6dGltZXJTdG9wRmlyZWQpCisgICAgLCBt
X2lzVmlicmF0aW5nKGZhbHNlKQoreworfQorCitWaWJyYXRvcjo6flZpYnJhdG9yKCkKK3sKKyAg
ICBtX3ZpYnJhdG9yQ2xpZW50LT52aWJyYXRvckRlc3Ryb3llZCgpOworfQorCit2b2lkIFZpYnJh
dG9yOjp2aWJyYXRlKGNvbnN0IFZpYnJhdGlvblBhdHRlcm4mIHBhdHRlcm4pCit7CisgICAgaW50
IGxlbmd0aCA9IHBhdHRlcm4uc2l6ZSgpOworCisgICAgaWYgKCFsZW5ndGgpIHsKKyAgICAgICAg
aWYgKG1faXNWaWJyYXRpbmcpCisgICAgICAgICAgICBjYW5jZWxWaWJyYXRpb24oKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChsZW5ndGggPT0gMSAmJiAhcGF0dGVyblswXSkg
eworICAgICAgICBpZiAobV9pc1ZpYnJhdGluZykKKyAgICAgICAgICAgIGNhbmNlbFZpYnJhdGlv
bigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtX2lzVmlicmF0aW5nICYm
ICFtX3RpbWVyU3RhcnQuaXNBY3RpdmUoKSkgeworICAgICAgICBtX3BhdHRlcm4gPSBwYXR0ZXJu
OworICAgICAgICBtX3RpbWVyU3RhcnQuc3RhcnRPbmVTaG90KDApOworICAgIH0KK30KKwordm9p
ZCBWaWJyYXRvcjo6Y2FuY2VsVmlicmF0aW9uKCkKK3sKKyAgICBpZiAobV9pc1ZpYnJhdGluZykg
eworICAgICAgICBtX3ZpYnJhdG9yQ2xpZW50LT5jYW5jZWxWaWJyYXRpb24oKTsKKyAgICAgICAg
bV9pc1ZpYnJhdGluZyA9IGZhbHNlOworICAgICAgICBtX3RpbWVyU3RvcC5zdG9wKCk7CisgICAg
fQorfQorCit2b2lkIFZpYnJhdG9yOjpzdXNwZW5kVmlicmF0aW9uKCkKK3sKKyAgICBpZiAoIW1f
aXNWaWJyYXRpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGF0dGVybi5pbnNlcnQoMCwg
bV90aW1lclN0b3AubmV4dEZpcmVJbnRlcnZhbCgpKTsKKyAgICBtX3RpbWVyU3RvcC5zdG9wKCk7
CisgICAgY2FuY2VsVmlicmF0aW9uKCk7Cit9CisKK3ZvaWQgVmlicmF0b3I6OnJlc3VtZVZpYnRh
dGlvbigpCit7CisgICAgbV90aW1lclN0YXJ0LnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBW
aWJyYXRvcjo6dGltZXJTdGFydEZpcmVkKFRpbWVyPFZpYnJhdG9yPiogdGltZXIpCit7CisgICAg
QVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fdGltZXJTdGFydCk7CisKKyAgICBtX3Rp
bWVyU3RhcnQuc3RvcCgpOworCisgICAgaWYgKG1fcGF0dGVybi5zaXplKCkpIHsKKyAgICAgICAg
bV9pc1ZpYnJhdGluZyA9IHRydWU7CisgICAgICAgIG1fdmlicmF0b3JDbGllbnQtPnZpYnJhdGUo
bV9wYXR0ZXJuWzBdKTsKKyAgICAgICAgbV90aW1lclN0b3Auc3RhcnRPbmVTaG90KG1fcGF0dGVy
blswXSAvIDEwMDAuMCk7CisgICAgICAgIG1fcGF0dGVybi5yZW1vdmUoMCk7CisgICAgfQorfQor
Cit2b2lkIFZpYnJhdG9yOjp0aW1lclN0b3BGaXJlZChUaW1lcjxWaWJyYXRvcj4qIHRpbWVyKQor
eworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX3RpbWVyU3RvcCk7CisKKyAg
ICBtX3RpbWVyU3RvcC5zdG9wKCk7CisgICAgbV9pc1ZpYnJhdGluZyA9IGZhbHNlOworCisgICAg
aWYgKG1fcGF0dGVybi5zaXplKCkpIHsKKyAgICAgICAgbV90aW1lclN0YXJ0LnN0YXJ0T25lU2hv
dChtX3BhdHRlcm5bMF0gLyAxMDAwLjApOworICAgICAgICBtX3BhdHRlcm4ucmVtb3ZlKDApOwor
ICAgIH0KK30KKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9WaWJyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWJyYXRvci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZGI3MzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1ZpYnJhdG9yLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFZpYnJhdG9yX2gKKyNkZWZpbmUg
VmlicmF0b3JfaAorCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBWZWN0b3I8bG9uZz4gVmlicmF0aW9u
UGF0dGVybjsKKworY2xhc3MgVmlicmF0b3JDbGllbnQ7CisKK2NsYXNzIFZpYnJhdG9yIHsKK3B1
YmxpYzoKKyAgICBWaWJyYXRvcihWaWJyYXRvckNsaWVudCopOworICAgIH5WaWJyYXRvcigpOwor
CisgICAgdm9pZCB2aWJyYXRlKGNvbnN0IFZpYnJhdGlvblBhdHRlcm4mKTsKKyAgICB2b2lkIGNh
bmNlbFZpYnJhdGlvbigpOworCisgICAgLy8gRklYTUUgOiBBZGQgc3VzcGVuZFZpYnJhdGlvbigp
IGFuZCByZXN1bWVWaWJyYXRpb24oKSB0byB0aGUgcGFnZSB2aXNpYmlsaXR5IGZlYXR1cmUsIHdo
ZW4gdGhlIGRvY3VtZW50LmhpZGRlbiBhdHRyaWJ1dGUgaXMgY2hhbmdlZC4KKyAgICB2b2lkIHN1
c3BlbmRWaWJyYXRpb24oKTsKKyAgICB2b2lkIHJlc3VtZVZpYnRhdGlvbigpOworICAgIHZvaWQg
dGltZXJTdGFydEZpcmVkKFRpbWVyPFZpYnJhdG9yPiopOworICAgIHZvaWQgdGltZXJTdG9wRmly
ZWQoVGltZXI8VmlicmF0b3I+Kik7CisKK3ByaXZhdGU6CisgICAgVmlicmF0b3JDbGllbnQqIG1f
dmlicmF0b3JDbGllbnQ7CisgICAgVGltZXI8VmlicmF0b3I+IG1fdGltZXJTdGFydDsKKyAgICBU
aW1lcjxWaWJyYXRvcj4gbV90aW1lclN0b3A7CisgICAgYm9vbCBtX2lzVmlicmF0aW5nOworICAg
IFZpYnJhdGlvblBhdHRlcm4gbV9wYXR0ZXJuOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gVmlicmF0b3JfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1ZpYnJhdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpYnJhdG9yQ2xpZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZjNmRhNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlicmF0b3JDbGllbnQuaApAQCAtMCwwICsx
LDM4IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI2lmbmRlZiBWaWJyYXRvckNsaWVudF9oCisjZGVmaW5lIFZpYnJhdG9yQ2xpZW50X2gKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWJyYXRvckNsaWVudCB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+VmlicmF0b3JDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aWJy
YXRlKGNvbnN0IGxvbmcmIHRpbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVmlicmF0
aW9uKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHZpYnJhdG9yRGVzdHJveWVkKCkgPSAwOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVmlicmF0b3JDbGllbnRf
aAorCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
MmIxYWE2Yy4uYjFhMzYyZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAxLTA1ICBLaWhvbmcgS3dvbiAgPGtp
aG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIEFkZCBhIG5ldyBBUEkgZm9yIHRoZSBW
aWJyYXRpb24gQVBJKFczQykuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MjAxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnLzIwMDkvZGFwL3ZpYnJhdGlvbi8KKworICAgICAg
ICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OiBBZGQgRU5BQkxFX1ZJQlJBVElPTiBmZWF0dXJlLgor
CiAyMDExLTEyLTA1ICBBbGV4YW5kZXIgRsOmcsO4eSAgPGFsZXhhbmRlci5mYWVyb3lAbm9raWEu
Y29tPgogCiAgICAgICAgIFtRdF0gTWluaUJyb3dzZXIgc2hvdWxkIGRlZmF1bHQgdG8gdG91Y2gg
YmVoYXZpb3IKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0IGIvVG9vbHMv
U2NyaXB0cy9idWlsZC13ZWJraXQKaW5kZXggZWVkMjhmZi4uYjVlN2E3ZiAxMDA3NTUKLS0tIGEv
VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKKysrIGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJr
aXQKQEAgLTEyNiw2ICsxMjYsNyBAQCBteSAoCiAgICAgJHRvdWNoRXZlbnRzU3VwcG9ydCwKICAg
ICAkdG91Y2hJY29uTG9hZGluZ1N1cHBvcnQsCiAgICAgJHZpZGVvU3VwcG9ydCwKKyAgICAkdmli
cmF0aW9uU3VwcG9ydCwKICAgICAkd2ViQXVkaW9TdXBwb3J0LAogICAgICR3ZWJJbnNwZWN0b3JT
dXBwb3J0LAogICAgICR3ZWJTb2NrZXRzU3VwcG9ydCwKQEAgLTMxOCw2ICszMTksOSBAQCBteSBA
ZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gInZpZGVvIiwgZGVzYyA9PiAiVG9nZ2xlIFZp
ZGVvIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVklERU8iLCBkZWZhdWx0ID0+
IChpc0FwcGxlV2ViS2l0KCkgfHwgaXNHdGsoKSB8fCBpc0JsYWNrQmVycnkoKSksIHZhbHVlID0+
IFwkdmlkZW9TdXBwb3J0IH0sCiAKKyAgICB7IG9wdGlvbiA9PiAidmlicmF0aW9uIiwgZGVzYyA9
PiAiVG9nZ2xlIFZpYnJhdGlvbiBzdXBwb3J0IiwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1ZJ
QlJBVElPTiIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCR2aWJyYXRpb25TdXBwb3J0IH0sCisK
ICAgICB7IG9wdGlvbiA9PiAid2ViLWF1ZGlvIiwgZGVzYyA9PiAiVG9nZ2xlIFdlYiBBdWRpbyBz
dXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1dFQl9BVURJTyIsIGRlZmF1bHQgPT4g
MCwgdmFsdWU9PiBcJHdlYkF1ZGlvU3VwcG9ydCB9LAogCg==
</data>
<flag name="review"
          id="121691"
          type_id="1"
          status="-"
          setter="morrita"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124075</attachid>
            <date>2012-01-26 01:12:21 -0800</date>
            <delta_ts>2012-01-26 22:27:00 -0800</delta_ts>
            <desc>Add NavigatorVibration class and move vibration files to the Modules dir.</desc>
            <filename>vibration.patch</filename>
            <type>text/plain</type>
            <size>21686</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNmM0MDNiLi5jNDY5Y2EyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDEt
MjUgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRk
IGEgbmV3IHRlc3QgY2FzZSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAxMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJh
dGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMi0wMS0yNSAgTWlrZSBMYXd0aGVyICA8bWlrZWxhd3Ro
ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIHRhYmxlIGJvcmRlciBzcGFjaW5nIHRlc3QgZm9y
IENTUzMgY2FsYwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZp
YnJhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3ZWI0M2UKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uLmh0bWwK
QEAgLTAsMCArMSw1NCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
PgorZGVzY3JpcHRpb24oJ1Rlc3QgZm9yIHRoZSBWaWJyYXRpb24gQVBJLicpOworCit2YXIgZXhj
ZXB0aW9uQ29kZUZvclZpYnJhdGUgPSAwOwordmFyIGV4Y2VwdGlvbkNvZGVGb3JDYW5jZWwgPSAw
OwordmFyIGV4Y2VwdGlvbkNvZGVGb3JWaWJyYXRlV2l0aEludmFsaWRJbnRQYXJhbSA9IDA7Cit2
YXIgZXhjZXB0aW9uQ29kZUZvclZpYnJhdGVXaXRoSW52YWxpZEFycmF5UGFyYW0gPSAwOworCit0
cnkgeworICAgIG5hdmlnYXRvci53ZWJraXRWaWJyYXRlKDEwMDApOworICAgIG5hdmlnYXRvci53
ZWJraXRWaWJyYXRlKFsxMDAwLCAzMDAsIDUwMF0pOworfQorY2F0Y2ggKGUpIHsKKyAgICBleGNl
cHRpb25Db2RlRm9yVmlicmF0ZSA9IGUuY29kZTsKK30KKworc2hvdWxkQmUoImV4Y2VwdGlvbkNv
ZGVGb3JWaWJyYXRlIiwgIjAiKTsKKwordHJ5IHsKKyAgICBuYXZpZ2F0b3Iud2Via2l0VmlicmF0
ZSgwKTsKKyAgICBuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZShbXSk7Cit9CitjYXRjaCAoZSkgewor
ICAgIGV4Y2VwdGlvbkNvZGVGb3JDYW5jZWwgPSBlLmNvZGU7Cit9CisKK3Nob3VsZEJlKCJleGNl
cHRpb25Db2RlRm9yQ2FuY2VsIiwgIjAiKTsKKwordHJ5IHsKKyAgICBuYXZpZ2F0b3Iud2Via2l0
VmlicmF0ZSgiMTAwMCIpOworfQorY2F0Y2ggKGUpIHsKKyAgICBleGNlcHRpb25Db2RlRm9yVmli
cmF0ZVdpdGhJbnZhbGlkSW50UGFyYW0gPSBlLmNvZGU7Cit9CisKK3Nob3VsZEJlKCJleGNlcHRp
b25Db2RlRm9yVmlicmF0ZVdpdGhJbnZhbGlkSW50UGFyYW0iLCAiRE9NRXhjZXB0aW9uLklOVkFM
SURfQUNDRVNTX0VSUiIpOworCit0cnkgeworICAgIG5hdmlnYXRvci53ZWJraXRWaWJyYXRlKFsx
MDAwLCAiMjAwIiwgNTAwXSk7Cit9CitjYXRjaCAoZSkgeworICAgIGV4Y2VwdGlvbkNvZGVGb3JW
aWJyYXRlV2l0aEludmFsaWRBcnJheVBhcmFtID0gZS5jb2RlOworfQorCitzaG91bGRCZSgiZXhj
ZXB0aW9uQ29kZUZvclZpYnJhdGVXaXRoSW52YWxpZEFycmF5UGFyYW0iLCAiRE9NRXhjZXB0aW9u
LklOVkFMSURfQUNDRVNTX0VSUiIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDM2NmMyYTAuLjg0NDhjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0yMjI5LDYgKzIyMjksMTkgQEAgSUYgKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFN
RSkKICAgICApCiBFTkRJRiAoKQogCitJRiAoRU5BQkxFX1ZJQlJBVElPTikKKyAgICBMSVNUKEFQ
UEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgJHtXRUJDT1JFX0RJUn0v
TW9kdWxlcy92aWJyYXRpb24KKyAgICApCisgICAgTElTVChBUFBFTkQgV2ViQ29yZV9JRExfRklM
RVMKKyAgICAgICAgTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmlkbAorICAg
ICkKKyAgICBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgICAgTW9kdWxlcy92aWJy
YXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmNwcAorICAgICAgICBNb2R1bGVzL3ZpYnJhdGlvbi9W
aWJyYXRpb24uY3BwCisgICAgKQorRU5ESUYgKCkKKwogIyBNb2R1bGVzIHRoYXQgdGhlIGJpbmRp
bmdzIGdlbmVyYXRvciBzY3JpcHRzIG1heSB1c2UKIFNFVChTQ1JJUFRTX1JFU09MVkVfU1VQUExF
TUVOVEFMCiAgICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5MTA2MWUyLi5jYTQ1ZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcg
QEAKKzIwMTItMDEtMjUgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisK
KyAgICAgICAgQWRkIGEgbmV3IEFQSSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkoVzNDKS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDEwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDovL2Rldi53My5v
cmcvMjAwOS9kYXAvdmlicmF0aW9uLworICAgICAgICBUZXN0OiBmYXN0L2RvbS9uYXZpZ2F0b3It
dmlicmF0aW9uLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIE1v
ZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JWaWJyYXRpb246Ok5hdmlnYXRv
clZpYnJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JWaWJyYXRpb246On5OYXZp
Z2F0b3JWaWJyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yVmlicmF0aW9uOjp3
ZWJraXRWaWJyYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJy
YXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE5hdmlnYXRvclZp
YnJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9u
LmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6
VmlicmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6flZpYnJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb246OnZpYnJhdGUpOgorICAgICAgICAgVmFyaW91cyB0
eXBlIG9mIHBhcmFtZXRlciBoYW5kbGluZy4oQXJyYXkgZm9yIHBhdHRlcm4sIGxvbmcgZm9yIHRp
bWUsICcwJyBvciAiW10iIGZvciBjYW5jZWwuKQorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9u
OjpjYW5jZWxWaWJyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uOjpzdXNwZW5k
VmlicmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6cmVzdW1lVmlicmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6dGltZXJTdGFydEZpcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6dGltZXJTdG9wRmlyZWQpOgorICAgICAgICAqIE1vZHVs
ZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoVmlicmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb25D
bGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFZpYnJhdGlvbkNs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb25DbGllbnQ6On5WaWJyYXRpb25DbGll
bnQpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05h
dmlnYXRvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTTmF2aWdhdG9yOjp3ZWJraXRWaWJyYXRlKToKKyAgICAgICAgIEFkZCB3ZWJraXRWaWJyYXRl
IG1ldGhvZCB0byBnZXQgYW4gYXJyYXkgcGFyYW1ldGVyLgorICAgICAgICAgVGhlcmUgaXMgbm8g
d2F5IHRvIGdldCBhbiBhcnJheSB0eXBlIHBhcmFtZXRlci4KKyAgICAgICAgKiBwYWdlL1BhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpQYWdlQ2xpZW50czo6UGFnZUNsaWVudHMpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICgpOgorICAgICAgICAoUGFnZUNsaWVudHMpOgor
ICAgICAgICAoUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp2aWJyYXRpb24pOgorCiAy
MDEyLTAxLTI1ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTA1ODU4LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIzOGYwNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5j
cHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBF
bGVjdHJvbmljcworICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmF2
aWdhdG9yVmlicmF0aW9uLmgiCisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorCisjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTmF2aWdhdG9y
LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlZpYnJhdGlvbi5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK05hdmlnYXRvclZpYnJhdGlvbjo6TmF2aWdhdG9yVmlicmF0aW9uKCkK
K3sKK30KKworTmF2aWdhdG9yVmlicmF0aW9uOjp+TmF2aWdhdG9yVmlicmF0aW9uKCkKK3sKK30K
Kwordm9pZCBOYXZpZ2F0b3JWaWJyYXRpb246OndlYmtpdFZpYnJhdGUoTmF2aWdhdG9yKiBuYXZp
Z2F0b3IsIGNvbnN0IFZpYnJhdGlvblBhdHRlcm4mIHBhdHRlcm4sIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIGlmICghcGF0dGVybi5zaXplKCkgfHwgIW5hdmlnYXRvci0+ZnJhbWUoKS0+cGFn
ZSgpKQorICAgICAgICByZXR1cm47CisKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkK
KyAgICBpZiAobmF2aWdhdG9yLT5mcmFtZSgpLT5wYWdlKCktPnZpc2liaWxpdHlTdGF0ZSgpID09
IFBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW4pCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCisg
ICAgaWYgKCFuYXZpZ2F0b3ItPmZyYW1lKCktPnBhZ2UoKS0+dmlicmF0aW9uKCkpIHsKKyAgICAg
ICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGVjID0gMDsKKyAgICBuYXZpZ2F0b3ItPmZyYW1lKCktPnBhZ2UoKS0+dmlicmF0aW9uKCktPnZp
YnJhdGUocGF0dGVybik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShWSUJSQVRJT04pCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
dmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92
aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMTcxMjNhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisg
KiAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lm
bmRlZiBOYXZpZ2F0b3JWaWJyYXRpb25faAorI2RlZmluZSBOYXZpZ2F0b3JWaWJyYXRpb25faAor
CisjaWYgRU5BQkxFKFZJQlJBVElPTikKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTmF2
aWdhdG9yOworCit0eXBlZGVmIFZlY3Rvcjxsb25nPiBWaWJyYXRpb25QYXR0ZXJuOworCitjbGFz
cyBOYXZpZ2F0b3JWaWJyYXRpb24geworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIHdlYmtpdFZp
YnJhdGUoTmF2aWdhdG9yKiwgY29uc3QgVmlicmF0aW9uUGF0dGVybiYsIEV4Y2VwdGlvbkNvZGUm
KTsKKworcHJpdmF0ZToKKyAgICBOYXZpZ2F0b3JWaWJyYXRpb24oKTsKKyAgICB+TmF2aWdhdG9y
VmlicmF0aW9uKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoVklCUkFUSU9OKQorCisjZW5kaWYgLy8gTmF2aWdhdG9yVmlicmF0aW9uX2gKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0
aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJh
dGlvbi5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FiOTEyMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRv
clZpYnJhdGlvbi5pZGwKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIw
MTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCittb2R1bGUgd2luZG93IHsKKworICAg
IGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVZJQlJBVElPTiwKKyAgICAgICAgU3Vw
cGxlbWVudGFsPU5hdmlnYXRvcgorICAgIF0gTmF2aWdhdG9yVmlicmF0aW9uIHsKKyAgICAgICAg
W0N1c3RvbV0gdm9pZCB3ZWJraXRWaWJyYXRlKGluIEludDMyQXJyYXkgcGF0dGVybikgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
dmlicmF0aW9uL1ZpYnJhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMTE3M2RiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmli
cmF0aW9uL1ZpYnJhdGlvbi5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlZpYnJhdGlvbi5oIgorCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKwor
I2luY2x1ZGUgIlZpYnJhdGlvbkNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Zp
YnJhdGlvbjo6VmlicmF0aW9uKFZpYnJhdGlvbkNsaWVudCogVmlicmF0aW9uQ2xpZW50KQorICAg
IDogbV92aWJyYXRpb25DbGllbnQoVmlicmF0aW9uQ2xpZW50KQorICAgICwgbV90aW1lclN0YXJ0
KHRoaXMsICZWaWJyYXRpb246OnRpbWVyU3RhcnRGaXJlZCkKKyAgICAsIG1fdGltZXJTdG9wKHRo
aXMsICZWaWJyYXRpb246OnRpbWVyU3RvcEZpcmVkKQorICAgICwgbV9pc1ZpYnJhdGluZyhmYWxz
ZSkKK3sKK30KKworVmlicmF0aW9uOjp+VmlicmF0aW9uKCkKK3sKKyAgICBtX3ZpYnJhdGlvbkNs
aWVudC0+dmlicmF0aW9uRGVzdHJveWVkKCk7Cit9CisKK3ZvaWQgVmlicmF0aW9uOjp2aWJyYXRl
KGNvbnN0IFZpYnJhdGlvblBhdHRlcm4mIHBhdHRlcm4pCit7CisgICAgaW50IGxlbmd0aCA9IHBh
dHRlcm4uc2l6ZSgpOworCisgICAgaWYgKCFsZW5ndGggfHwgKGxlbmd0aCA9PSAxICYmICFwYXR0
ZXJuWzBdKSkgeworICAgICAgICBpZiAobV9pc1ZpYnJhdGluZykKKyAgICAgICAgICAgIGNhbmNl
bFZpYnJhdGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtX2lzVmli
cmF0aW5nICYmICFtX3RpbWVyU3RhcnQuaXNBY3RpdmUoKSkgeworICAgICAgICBtX3BhdHRlcm4g
PSBwYXR0ZXJuOworICAgICAgICBtX3RpbWVyU3RhcnQuc3RhcnRPbmVTaG90KDApOworICAgIH0K
K30KKwordm9pZCBWaWJyYXRpb246OmNhbmNlbFZpYnJhdGlvbigpCit7CisgICAgaWYgKG1faXNW
aWJyYXRpbmcpIHsKKyAgICAgICAgbV92aWJyYXRpb25DbGllbnQtPmNhbmNlbFZpYnJhdGlvbigp
OworICAgICAgICBtX2lzVmlicmF0aW5nID0gZmFsc2U7CisgICAgICAgIG1fdGltZXJTdG9wLnN0
b3AoKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlicmF0aW9uOjpzdXNwZW5kVmlicmF0aW9uKCkKK3sK
KyAgICBpZiAoIW1faXNWaWJyYXRpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGF0dGVy
bi5pbnNlcnQoMCwgbV90aW1lclN0b3AubmV4dEZpcmVJbnRlcnZhbCgpKTsKKyAgICBtX3RpbWVy
U3RvcC5zdG9wKCk7CisgICAgY2FuY2VsVmlicmF0aW9uKCk7Cit9CisKK3ZvaWQgVmlicmF0aW9u
OjpyZXN1bWVWaWJyYXRpb24oKQoreworICAgIG1fdGltZXJTdGFydC5zdGFydE9uZVNob3QoMCk7
Cit9CisKK3ZvaWQgVmlicmF0aW9uOjp0aW1lclN0YXJ0RmlyZWQoVGltZXI8VmlicmF0aW9uPiog
dGltZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fdGltZXJTdGFy
dCk7CisKKyAgICBtX3RpbWVyU3RhcnQuc3RvcCgpOworCisgICAgaWYgKG1fcGF0dGVybi5zaXpl
KCkpIHsKKyAgICAgICAgbV9pc1ZpYnJhdGluZyA9IHRydWU7CisgICAgICAgIG1fdmlicmF0aW9u
Q2xpZW50LT52aWJyYXRlKG1fcGF0dGVyblswXSk7CisgICAgICAgIG1fdGltZXJTdG9wLnN0YXJ0
T25lU2hvdChtX3BhdHRlcm5bMF0gLyAxMDAwLjApOworICAgICAgICBtX3BhdHRlcm4ucmVtb3Zl
KDApOworICAgIH0KK30KKwordm9pZCBWaWJyYXRpb246OnRpbWVyU3RvcEZpcmVkKFRpbWVyPFZp
YnJhdGlvbj4qIHRpbWVyKQoreworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZt
X3RpbWVyU3RvcCk7CisKKyAgICBtX3RpbWVyU3RvcC5zdG9wKCk7CisgICAgbV9pc1ZpYnJhdGlu
ZyA9IGZhbHNlOworCisgICAgaWYgKG1fcGF0dGVybi5zaXplKCkpIHsKKyAgICAgICAgbV90aW1l
clN0YXJ0LnN0YXJ0T25lU2hvdChtX3BhdHRlcm5bMF0gLyAxMDAwLjApOworICAgICAgICBtX3Bh
dHRlcm4ucmVtb3ZlKDApOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Zp
YnJhdGlvbi9WaWJyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h
YWNiYjA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRp
b24vVmlicmF0aW9uLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIw
MTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFZpYnJhdGlvbl9oCisj
ZGVmaW5lIFZpYnJhdGlvbl9oCisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorCisjaW5jbHVkZSAi
TmF2aWdhdG9yVmlicmF0aW9uLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJWaWJy
YXRpb25DbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvSW50MzJBcnJheS5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIE5hdmlnYXRvcjsKKworY2xhc3MgVmlicmF0aW9uIHsKK3B1Ymxp
YzoKKyAgICBWaWJyYXRpb24oVmlicmF0aW9uQ2xpZW50Kik7CisgICAgflZpYnJhdGlvbigpOwor
CisgICAgdm9pZCB2aWJyYXRlKGNvbnN0IFZpYnJhdGlvblBhdHRlcm4mKTsKKyAgICB2b2lkIGNh
bmNlbFZpYnJhdGlvbigpOworCisgICAgLy8gRklYTUUgOiBBZGQgc3VzcGVuZFZpYnJhdGlvbigp
IGFuZCByZXN1bWVWaWJyYXRpb24oKSB0byB0aGUgcGFnZSB2aXNpYmlsaXR5IGZlYXR1cmUsIHdo
ZW4gdGhlIGRvY3VtZW50LmhpZGRlbiBhdHRyaWJ1dGUgaXMgY2hhbmdlZC4KKyAgICB2b2lkIHN1
c3BlbmRWaWJyYXRpb24oKTsKKyAgICB2b2lkIHJlc3VtZVZpYnJhdGlvbigpOworICAgIHZvaWQg
dGltZXJTdGFydEZpcmVkKFRpbWVyPFZpYnJhdGlvbj4qKTsKKyAgICB2b2lkIHRpbWVyU3RvcEZp
cmVkKFRpbWVyPFZpYnJhdGlvbj4qKTsKKworcHJpdmF0ZToKKyAgICBWaWJyYXRpb25DbGllbnQq
IG1fdmlicmF0aW9uQ2xpZW50OworICAgIFRpbWVyPFZpYnJhdGlvbj4gbV90aW1lclN0YXJ0Owor
ICAgIFRpbWVyPFZpYnJhdGlvbj4gbV90aW1lclN0b3A7CisgICAgYm9vbCBtX2lzVmlicmF0aW5n
OworICAgIFZpYnJhdGlvblBhdHRlcm4gbV9wYXR0ZXJuOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikKKworI2VuZGlmIC8vIFZpYnJh
dGlvbl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL1Zp
YnJhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vVmlicmF0
aW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFkM2ZiMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL1ZpYnJh
dGlvbkNsaWVudC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEx
IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBWaWJyYXRpb25DbGllbnRf
aAorI2RlZmluZSBWaWJyYXRpb25DbGllbnRfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFZpYnJhdGlvbkNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+VmlicmF0aW9uQ2xp
ZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlicmF0ZShjb25zdCBsb25nJiB0aW1lKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFZpYnJhdGlvbigpID0gMDsKKworICAgIHZpcnR1
YWwgdm9pZCB2aWJyYXRpb25EZXN0cm95ZWQoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBWaWJyYXRpb25DbGllbnRfaAorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5k
ZXggMzhlNjczMS4uZWExOWM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQpAQCAtMjQ1LDYgKzI0NSwxMiBA
QCBJRiAoRU5BQkxFX1dFQkdMKQogICAgICkKIEVORElGICgpCiAKK0lGIChFTkFCTEVfVklCUkFU
SU9OKQorICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBiaW5kaW5ncy9q
cy9KU05hdmlnYXRvckN1c3RvbS5jcHAKKyAgICApCitFTkRJRiAoKQorCiBMSVNUKEFQUEVORCBT
Q1JJUFRTX0JJTkRJTkdTCiAgICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yLnBtCiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05hdmlnYXRvckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmln
YXRvckN1c3RvbS5jcHAKaW5kZXggMmQ4ZDQ5ZC4uZWU3NWM0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcApAQCAtMjUsMTAgKzI1LDE2
IEBACiAKICNpbmNsdWRlICJDYWxsYmFja0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3JVc2VyTWVkaWFT
dWNjZXNzQ2FsbGJhY2suaCIKKyNlbmRpZgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogCisjaWYg
RU5BQkxFKFZJQlJBVElPTikKKyNpbmNsdWRlICJOYXZpZ2F0b3JWaWJyYXRpb24uaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC02MCw0
ICs2Niw0OSBAQCBKU1ZhbHVlIEpTTmF2aWdhdG9yOjp3ZWJraXRHZXRVc2VyTWVkaWEoRXhlY1N0
YXRlKiBleGVjKQogfQogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpZiBFTkFC
TEUoVklCUkFUSU9OKQorSlNWYWx1ZSBKU05hdmlnYXRvcjo6d2Via2l0VmlicmF0ZShFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgVmlicmF0aW9uUGF0dGVybiBwYXR0ZXJuOworICAgIGlmICghZXhl
Yy0+YXJndW1lbnRDb3VudCgpKQorICAgICAgICBwYXR0ZXJuLmFwcGVuZCgwKTsKKworICAgIEpT
VmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICB1bnNpZ25lZCBsZW5ndGg7Cisg
ICAgaWYgKHZhbHVlLmlzVUludDMyKCkpCisgICAgICAgIHBhdHRlcm4uYXBwZW5kKHZhbHVlLmFz
SW50MzIoKSk7CisgICAgZWxzZSBpZiAoSlNPYmplY3QqIG9iamVjdCA9IHRvSlNTZXF1ZW5jZShl
eGVjLCB2YWx1ZSwgbGVuZ3RoKSkgeworICAgICAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgICAg
IHBhdHRlcm4uYXBwZW5kKDApOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBpKTsK
KyAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgICAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVk
T3JOdWxsKCkgfHwgIXZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgSU5WQUxJRF9BQ0NFU1NfRVJSKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHZhbHVl
LmlzVUludDMyKCkpCisgICAgICAgICAgICAgICAgcGF0dGVybi5hcHBlbmQodmFsdWUuYXNJbnQz
MigpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBJTlZBTElEX0FDQ0VTU19FUlIpOworICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBO
YXZpZ2F0b3JWaWJyYXRpb246OndlYmtpdFZpYnJhdGUobV9pbXBsLCBwYXR0ZXJuLCBlYyk7CisK
KyAgICBpZiAoZWMpCisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRl
eCAwYzZmZjU1Li45NzI1NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTkwLDYgKzkwLDEwIEBA
CiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNlbmRpZgogCisjaWYgRU5BQkxF
KFZJQlJBVElPTikKKyNpbmNsdWRlICJWaWJyYXRpb24uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBIYXNoU2V0PFBhZ2UqPiogYWxsUGFnZXM7CkBAIC0xODIsNiAr
MTg2LDkgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX3Zp
c2liaWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSkKICNlbmRpZgogICAgICwg
bV9kaXNwbGF5SUQoMCkKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICwgbV92aWJyYXRpb24o
YWRvcHRQdHIobmV3IFZpYnJhdGlvbihwYWdlQ2xpZW50cy52aWJyYXRpb25DbGllbnQpKSkKKyNl
bmRpZgogewogICAgIGlmICghYWxsUGFnZXMpIHsKICAgICAgICAgYWxsUGFnZXMgPSBuZXcgSGFz
aFNldDxQYWdlKj47CkBAIC0xMDg4LDYgKzEwOTUsOSBAQCBQYWdlOjpQYWdlQ2xpZW50czo6UGFn
ZUNsaWVudHMoKQogICAgICwgc3BlZWNoSW5wdXRDbGllbnQoMCkKICAgICAsIG5vdGlmaWNhdGlv
bkNsaWVudCgwKQogICAgICwgdXNlck1lZGlhQ2xpZW50KDApCisjaWYgRU5BQkxFKFZJQlJBVElP
TikKKyAgICAsIHZpYnJhdGlvbkNsaWVudCgwKQorI2VuZGlmCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
aW5kZXggZWYxZDFkOS4uZjYzNGE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTkwLDYgKzkwLDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBjbGFz
cyBOb3RpZmljYXRpb25QcmVzZW50ZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQor
ICAgIGNsYXNzIFZpYnJhdGlvbjsKKyAgICBjbGFzcyBWaWJyYXRpb25DbGllbnQ7CisjZW5kaWYK
IAogICAgIHR5cGVkZWYgdWludDY0X3QgTGlua0hhc2g7CiAKQEAgLTEyMiw2ICsxMjYsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBTcGVlY2hJbnB1dENsaWVudCogc3BlZWNo
SW5wdXRDbGllbnQ7CiAgICAgICAgICAgICBOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNh
dGlvbkNsaWVudDsKICAgICAgICAgICAgIFVzZXJNZWRpYUNsaWVudCogdXNlck1lZGlhQ2xpZW50
OworI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgICAgICAgICBWaWJyYXRpb25DbGllbnQqIHZp
YnJhdGlvbkNsaWVudDsKKyNlbmRpZgogICAgICAgICB9OwogCiAgICAgICAgIFBhZ2UoUGFnZUNs
aWVudHMmKTsKQEAgLTM0OCw3ICszNTUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlm
CiAKICAgICAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4g
bV9kaXNwbGF5SUQ7IH0KLSAgICAgICAgCisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICAg
ICBWaWJyYXRpb24qIHZpYnJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmlicmF0aW9uLmdldCgp
OyB9CisjZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdEdyb3VwKCk7CiAK
QEAgLTQ2Miw2ICs0NzMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYWdlVmlz
aWJpbGl0eVN0YXRlIG1fdmlzaWJpbGl0eVN0YXRlOwogI2VuZGlmCiAgICAgICAgIFBsYXRmb3Jt
RGlzcGxheUlEIG1fZGlzcGxheUlEOworI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgICAgIE93
blB0cjxWaWJyYXRpb24+IG1fdmlicmF0aW9uOworI2VuZGlmCisKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggOGQ0OTBjMC4uY2ZlZmMyNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAxLTI1ICBLaWhv
bmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIEFkZCBhIG5ldyBB
UEkgZm9yIHRoZSBWaWJyYXRpb24gQVBJKFczQykuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnLzIwMDkvZGFwL3ZpYnJhdGlv
bi8KKworICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OiBBZGQgRU5BQkxFX1ZJQlJBVElP
TiBmZWF0dXJlLgorCiAyMDEyLTAxLTI1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVGVtcG9yYXJpbHkgZGlzYWJsZSBydW5uaW5nIHRoZSB1bml0IHRlc3RzIG9u
IHRoZSBDaHJvbWl1bSBFV1MuICBUaGVzZQo=
</data>
<flag name="review"
          id="125250"
          type_id="1"
          status="-"
          setter="haraken"
    />
    <flag name="commit-queue"
          id="125251"
          type_id="3"
          status="-"
          setter="haraken"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124263</attachid>
            <date>2012-01-26 22:27:00 -0800</date>
            <delta_ts>2012-01-27 00:29:20 -0800</delta_ts>
            <desc>Modify for the comment #23</desc>
            <filename>vibration.patch</filename>
            <type>text/plain</type>
            <size>24569</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNmM0MDNiLi44YWE3YjQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDEt
MjYgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRk
IGEgbmV3IHRlc3QgY2FzZSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAxMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJh
dGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRvci12
aWJyYXRpb24uaHRtbDogQWRkZWQuCisKIDIwMTItMDEtMjUgIE1pa2UgTGF3dGhlciAgPG1pa2Vs
YXd0aGVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICB0YWJsZSBib3JkZXIgc3BhY2luZyB0ZXN0
IGZvciBDU1MzIGNhbGMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRv
ci12aWJyYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9y
LXZpYnJhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMGRhYzA4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmln
YXRvci12aWJyYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3QgZm9yIHRo
ZSBWaWJyYXRpb24gQVBJLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBl
eGNlcHRpb25Db2RlRm9yVmlicmF0ZSBpcyAwCitQQVNTIGV4Y2VwdGlvbkNvZGVGb3JDYW5jZWwg
aXMgMAorUEFTUyBleGNlcHRpb25Db2RlRm9yVmlicmF0ZVdpdGhJbnZhbGlkSW50UGFyYW0gaXMg
RE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBleGNlcHRpb25Db2RlRm9yVmli
cmF0ZVdpdGhJbnZhbGlkQXJyYXlQYXJhbSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1Nf
RVJSCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3ZWI0M2UKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uLmh0bWwKQEAgLTAsMCArMSw1
NCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oJ1Rlc3QgZm9yIHRoZSBWaWJyYXRpb24gQVBJLicpOworCit2YXIgZXhjZXB0aW9uQ29kZUZv
clZpYnJhdGUgPSAwOwordmFyIGV4Y2VwdGlvbkNvZGVGb3JDYW5jZWwgPSAwOwordmFyIGV4Y2Vw
dGlvbkNvZGVGb3JWaWJyYXRlV2l0aEludmFsaWRJbnRQYXJhbSA9IDA7Cit2YXIgZXhjZXB0aW9u
Q29kZUZvclZpYnJhdGVXaXRoSW52YWxpZEFycmF5UGFyYW0gPSAwOworCit0cnkgeworICAgIG5h
dmlnYXRvci53ZWJraXRWaWJyYXRlKDEwMDApOworICAgIG5hdmlnYXRvci53ZWJraXRWaWJyYXRl
KFsxMDAwLCAzMDAsIDUwMF0pOworfQorY2F0Y2ggKGUpIHsKKyAgICBleGNlcHRpb25Db2RlRm9y
VmlicmF0ZSA9IGUuY29kZTsKK30KKworc2hvdWxkQmUoImV4Y2VwdGlvbkNvZGVGb3JWaWJyYXRl
IiwgIjAiKTsKKwordHJ5IHsKKyAgICBuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZSgwKTsKKyAgICBu
YXZpZ2F0b3Iud2Via2l0VmlicmF0ZShbXSk7Cit9CitjYXRjaCAoZSkgeworICAgIGV4Y2VwdGlv
bkNvZGVGb3JDYW5jZWwgPSBlLmNvZGU7Cit9CisKK3Nob3VsZEJlKCJleGNlcHRpb25Db2RlRm9y
Q2FuY2VsIiwgIjAiKTsKKwordHJ5IHsKKyAgICBuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZSgiMTAw
MCIpOworfQorY2F0Y2ggKGUpIHsKKyAgICBleGNlcHRpb25Db2RlRm9yVmlicmF0ZVdpdGhJbnZh
bGlkSW50UGFyYW0gPSBlLmNvZGU7Cit9CisKK3Nob3VsZEJlKCJleGNlcHRpb25Db2RlRm9yVmli
cmF0ZVdpdGhJbnZhbGlkSW50UGFyYW0iLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VS
UiIpOworCit0cnkgeworICAgIG5hdmlnYXRvci53ZWJraXRWaWJyYXRlKFsxMDAwLCAiMjAwIiwg
NTAwXSk7Cit9CitjYXRjaCAoZSkgeworICAgIGV4Y2VwdGlvbkNvZGVGb3JWaWJyYXRlV2l0aElu
dmFsaWRBcnJheVBhcmFtID0gZS5jb2RlOworfQorCitzaG91bGRCZSgiZXhjZXB0aW9uQ29kZUZv
clZpYnJhdGVXaXRoSW52YWxpZEFycmF5UGFyYW0iLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfQUND
RVNTX0VSUiIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDM2NmMyYTAuLjg0NDhjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjI5LDYg
KzIyMjksMTkgQEAgSUYgKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKICAgICApCiBF
TkRJRiAoKQogCitJRiAoRU5BQkxFX1ZJQlJBVElPTikKKyAgICBMSVNUKEFQUEVORCBXZWJDb3Jl
X0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy92aWJy
YXRpb24KKyAgICApCisgICAgTElTVChBUFBFTkQgV2ViQ29yZV9JRExfRklMRVMKKyAgICAgICAg
TW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmlkbAorICAgICkKKyAgICBMSVNU
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgICAgTW9kdWxlcy92aWJyYXRpb24vTmF2aWdh
dG9yVmlicmF0aW9uLmNwcAorICAgICAgICBNb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uY3Bw
CisgICAgKQorRU5ESUYgKCkKKwogIyBNb2R1bGVzIHRoYXQgdGhlIGJpbmRpbmdzIGdlbmVyYXRv
ciBzY3JpcHRzIG1heSB1c2UKIFNFVChTQ1JJUFRTX1JFU09MVkVfU1VQUExFTUVOVEFMCiAgICAg
JHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA5MTA2MWUyLi5jOGVmZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMTItMDEt
MjYgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRk
IGEgbmV3IEFQSSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkoVzNDKS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDEwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9kYXAv
dmlicmF0aW9uLworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgbmF2aWdhdG9yLndlYmtp
dHZpYnJhdGUoKSBBUEkuCisgICAgICAgIFRoaXMgQVBJIG9wZXJhdGVzIGRpZmZlcmVudGx5IGRl
cGVuZGluZyB1cG9uIGEgZ2l2ZW4gcGFyYW1ldGVyOgorICAgICAgICAxLiBJdCBjYW5jZWxzIHZp
YnJhdGlvbiB3aGVuIGdpdmVuIDAgb3IgW10uCisgICAgICAgIDIuIEl0IGdpdmVzIGEgdmlicmF0
aW9uIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcyB3aGVuIGdpdmVuIGFzIGEgc2luZ2xlIGludGVn
ZXIgdmFsdWUuCisgICAgICAgIDMuIEl0IGdpdmVzIGEgdmlicmF0aW9uIHBhdHRlcm4gd2hlbiBn
aXZlbiBhcyBhbiBpbnRlZ2VyIGFycmF5LiBGb3IgaW5zdGFuY2UsIFsxMDAwIDMwMCAxMDAwXSBn
ZW5lcmF0ZXMgYSB2aWJyYXRpb24gb2YgMTAwMG1zIGZvbGxvd2VkIGJ5IDMwMG1zIG9mIGlkbGUg
dGltZSwgYW5kIHRoZW4gY3JlYXRlcyBhbm90aGVyIHZpYnJhdGlvbiBvZiAxMDAwbXMuCisKKyAg
ICAgICAgVGVzdDogZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5odG1sCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBNb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JW
aWJyYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgIFRoZXJlIGlzIGEgd2Via2l0VmlicmF0ZSgp
IG1ldGhvZCBpbiB0aGlzIGNsYXNzLgorICAgICAgICAgSXQgY2hlY2tzIGlmIHRoZSBwbGF0Zm9y
bSBzdXBwb3J0cyB0aGUgdmlicmF0aW9uLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXZpZ2F0b3JWaWJyYXRpb246Ok5hdmlnYXRvclZpYnJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpOYXZpZ2F0b3JWaWJyYXRpb246On5OYXZpZ2F0b3JWaWJyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yVmlicmF0aW9uOjp3ZWJraXRWaWJyYXRlKToKKyAgICAg
ICAgKiBNb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKE5hdmlnYXRvclZpYnJhdGlvbik6CisgICAgICAgICog
TW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmlkbDogQWRkZWQuCisgICAgICAg
ICBBZGQgdGhlIFtKU0NDdXN0b21dIHdlYmtpdHZpYnJhdGUoKSBtZXRob2QsIGFuZCB3ZWJraXR2
aWJyYXRlKCkgaXMgb25seSBzdXBwb3J0ZWQgd2l0aCBKU0MgYXQgdGhpcyB0aW1lLgorICAgICAg
ICAqIE1vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAgVGhp
cyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBlbnRpcmUgdmlicmF0aW9uIGxvZ2ljLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb246OlZpYnJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpWaWJyYXRpb246On5WaWJyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
VmlicmF0aW9uOjp2aWJyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6Y2FuY2Vs
VmlicmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6c3VzcGVuZFZpYnJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb246OnJlc3VtZVZpYnJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpWaWJyYXRpb246OnRpbWVyU3RhcnRGaXJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpWaWJyYXRpb246OnRpbWVyU3RvcEZpcmVkKToKKyAgICAgICAgKiBNb2R1bGVzL3ZpYnJh
dGlvbi9WaWJyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFZp
YnJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uQ2xpZW50Lmg6
IEFkZGVkLgorICAgICAgICAgdmlicmF0ZSgpIGFuZCBjYW5jZWxWaWJyYXRlKCkgbmVlZCB0byBi
ZSBpbXBsZW1lbnRlZCBpbiB0aGUgVmlicmF0aW9uQ2xpZW50LgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChWaWJyYXRpb25DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9u
Q2xpZW50Ojp+VmlicmF0aW9uQ2xpZW50KToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU05hdmlnYXRvcjo6d2Via2l0VmlicmF0ZSk6CisgICAg
ICAgICBBZGQgd2Via2l0VmlicmF0ZSBtZXRob2QgdG8gZ2V0IGFuIGFycmF5IHBhcmFtZXRlci4K
KyAgICAgICAgIFRoZXJlIGlzIG5vIHdheSB0byBnZXQgYW4gYXJyYXkgdHlwZSBwYXJhbWV0ZXIu
CisgICAgICAgICBUaGlzIG1ldGhvZCBjaGVja3MgdHlwZXMgYW5kIHZhbHVlcyBvZiBwYXJhbWV0
ZXIuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZUNsaWVudHM6OlBhZ2VDbGllbnRzKToK
KyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoKToK
KyAgICAgICAgKFBhZ2VDbGllbnRzKToKKyAgICAgICAgKFBhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6dmlicmF0aW9uKToKKwogMjAxMi0wMS0yNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjEwNTg1OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05h
dmlnYXRvclZpYnJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9O
YXZpZ2F0b3JWaWJyYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmVjOTIyMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJh
dGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdmlnYXRvclZpYnJhdGlvbi5oIgorCisjaWYgRU5BQkxF
KFZJQlJBVElPTikKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIk5hdmlnYXRvci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRl
ICJWaWJyYXRpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitOYXZpZ2F0b3JWaWJyYXRp
b246Ok5hdmlnYXRvclZpYnJhdGlvbigpCit7Cit9CisKK05hdmlnYXRvclZpYnJhdGlvbjo6fk5h
dmlnYXRvclZpYnJhdGlvbigpCit7Cit9CisKK3ZvaWQgTmF2aWdhdG9yVmlicmF0aW9uOjp3ZWJr
aXRWaWJyYXRlKE5hdmlnYXRvciogbmF2aWdhdG9yLCBjb25zdCBWaWJyYXRpb25QYXR0ZXJuJiBw
YXR0ZXJuLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIXBhdHRlcm4uc2l6ZSgpIHx8
ICFuYXZpZ2F0b3ItPmZyYW1lKCktPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgRU5B
QkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCisgICAgaWYgKG5hdmlnYXRvci0+ZnJhbWUoKS0+cGFn
ZSgpLT52aXNpYmlsaXR5U3RhdGUoKSA9PSBQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuKQorICAg
ICAgICByZXR1cm47CisjZW5kaWYKKworICAgIGlmICghbmF2aWdhdG9yLT5mcmFtZSgpLT5wYWdl
KCktPnZpYnJhdGlvbigpKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBuYXZpZ2F0b3ItPmZyYW1lKCktPnBhZ2UoKS0+dmli
cmF0aW9uKCktPnZpYnJhdGUocGF0dGVybik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShWSUJSQVRJT04pCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZjFmMzg5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5oCkBAIC0wLDAgKzEs
NDggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2lmbmRlZiBOYXZpZ2F0b3JWaWJyYXRpb25faAorI2RlZmluZSBOYXZpZ2F0b3JW
aWJyYXRpb25faAorCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKworI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgTmF2aWdhdG9yOworCit0eXBlZGVmIFZlY3Rvcjxsb25nPiBWaWJyYXRpb25QYXR0
ZXJuOworCitjbGFzcyBOYXZpZ2F0b3JWaWJyYXRpb24geworcHVibGljOgorICAgIHN0YXRpYyB2
b2lkIHdlYmtpdFZpYnJhdGUoTmF2aWdhdG9yKiwgY29uc3QgVmlicmF0aW9uUGF0dGVybiYsIEV4
Y2VwdGlvbkNvZGUmKTsKKworcHJpdmF0ZToKKyAgICBOYXZpZ2F0b3JWaWJyYXRpb24oKTsKKyAg
ICB+TmF2aWdhdG9yVmlicmF0aW9uKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoVklCUkFUSU9OKQorCisjZW5kaWYgLy8gTmF2aWdhdG9yVmlicmF0
aW9uX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vTmF2
aWdhdG9yVmlicmF0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05h
dmlnYXRvclZpYnJhdGlvbi5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ODlmM2M1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0
aW9uL05hdmlnYXRvclZpYnJhdGlvbi5pZGwKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCittb2R1bGUgd2lu
ZG93IHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVZJQlJBVElPTiwK
KyAgICAgICAgU3VwcGxlbWVudGFsPU5hdmlnYXRvcgorICAgIF0gTmF2aWdhdG9yVmlicmF0aW9u
IHsKKyAgICAgICAgW0pTQ0N1c3RvbV0gdm9pZCB3ZWJraXRWaWJyYXRlKGluIEFycmF5IHBhdHRl
cm4pIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjExNzNkYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uY3BwCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICog
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWaWJyYXRpb24uaCIKKworI2lmIEVOQUJMRShWSUJS
QVRJT04pCisKKyNpbmNsdWRlICJWaWJyYXRpb25DbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitWaWJyYXRpb246OlZpYnJhdGlvbihWaWJyYXRpb25DbGllbnQqIFZpYnJhdGlvbkNs
aWVudCkKKyAgICA6IG1fdmlicmF0aW9uQ2xpZW50KFZpYnJhdGlvbkNsaWVudCkKKyAgICAsIG1f
dGltZXJTdGFydCh0aGlzLCAmVmlicmF0aW9uOjp0aW1lclN0YXJ0RmlyZWQpCisgICAgLCBtX3Rp
bWVyU3RvcCh0aGlzLCAmVmlicmF0aW9uOjp0aW1lclN0b3BGaXJlZCkKKyAgICAsIG1faXNWaWJy
YXRpbmcoZmFsc2UpCit7Cit9CisKK1ZpYnJhdGlvbjo6flZpYnJhdGlvbigpCit7CisgICAgbV92
aWJyYXRpb25DbGllbnQtPnZpYnJhdGlvbkRlc3Ryb3llZCgpOworfQorCit2b2lkIFZpYnJhdGlv
bjo6dmlicmF0ZShjb25zdCBWaWJyYXRpb25QYXR0ZXJuJiBwYXR0ZXJuKQoreworICAgIGludCBs
ZW5ndGggPSBwYXR0ZXJuLnNpemUoKTsKKworICAgIGlmICghbGVuZ3RoIHx8IChsZW5ndGggPT0g
MSAmJiAhcGF0dGVyblswXSkpIHsKKyAgICAgICAgaWYgKG1faXNWaWJyYXRpbmcpCisgICAgICAg
ICAgICBjYW5jZWxWaWJyYXRpb24oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghbV9pc1ZpYnJhdGluZyAmJiAhbV90aW1lclN0YXJ0LmlzQWN0aXZlKCkpIHsKKyAgICAgICAg
bV9wYXR0ZXJuID0gcGF0dGVybjsKKyAgICAgICAgbV90aW1lclN0YXJ0LnN0YXJ0T25lU2hvdCgw
KTsKKyAgICB9Cit9CisKK3ZvaWQgVmlicmF0aW9uOjpjYW5jZWxWaWJyYXRpb24oKQoreworICAg
IGlmIChtX2lzVmlicmF0aW5nKSB7CisgICAgICAgIG1fdmlicmF0aW9uQ2xpZW50LT5jYW5jZWxW
aWJyYXRpb24oKTsKKyAgICAgICAgbV9pc1ZpYnJhdGluZyA9IGZhbHNlOworICAgICAgICBtX3Rp
bWVyU3RvcC5zdG9wKCk7CisgICAgfQorfQorCit2b2lkIFZpYnJhdGlvbjo6c3VzcGVuZFZpYnJh
dGlvbigpCit7CisgICAgaWYgKCFtX2lzVmlicmF0aW5nKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX3BhdHRlcm4uaW5zZXJ0KDAsIG1fdGltZXJTdG9wLm5leHRGaXJlSW50ZXJ2YWwoKSk7Cisg
ICAgbV90aW1lclN0b3Auc3RvcCgpOworICAgIGNhbmNlbFZpYnJhdGlvbigpOworfQorCit2b2lk
IFZpYnJhdGlvbjo6cmVzdW1lVmlicmF0aW9uKCkKK3sKKyAgICBtX3RpbWVyU3RhcnQuc3RhcnRP
bmVTaG90KDApOworfQorCit2b2lkIFZpYnJhdGlvbjo6dGltZXJTdGFydEZpcmVkKFRpbWVyPFZp
YnJhdGlvbj4qIHRpbWVyKQoreworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZt
X3RpbWVyU3RhcnQpOworCisgICAgbV90aW1lclN0YXJ0LnN0b3AoKTsKKworICAgIGlmIChtX3Bh
dHRlcm4uc2l6ZSgpKSB7CisgICAgICAgIG1faXNWaWJyYXRpbmcgPSB0cnVlOworICAgICAgICBt
X3ZpYnJhdGlvbkNsaWVudC0+dmlicmF0ZShtX3BhdHRlcm5bMF0pOworICAgICAgICBtX3RpbWVy
U3RvcC5zdGFydE9uZVNob3QobV9wYXR0ZXJuWzBdIC8gMTAwMC4wKTsKKyAgICAgICAgbV9wYXR0
ZXJuLnJlbW92ZSgwKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlicmF0aW9uOjp0aW1lclN0b3BGaXJl
ZChUaW1lcjxWaWJyYXRpb24+KiB0aW1lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0
aW1lciA9PSAmbV90aW1lclN0b3ApOworCisgICAgbV90aW1lclN0b3Auc3RvcCgpOworICAgIG1f
aXNWaWJyYXRpbmcgPSBmYWxzZTsKKworICAgIGlmIChtX3BhdHRlcm4uc2l6ZSgpKSB7CisgICAg
ICAgIG1fdGltZXJTdGFydC5zdGFydE9uZVNob3QobV9wYXR0ZXJuWzBdIC8gMTAwMC4wKTsKKyAg
ICAgICAgbV9wYXR0ZXJuLnJlbW92ZSgwKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShWSUJSQVRJT04pCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYzQ3YWI4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBWaWJy
YXRpb25faAorI2RlZmluZSBWaWJyYXRpb25faAorCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKwor
I2luY2x1ZGUgIk5hdmlnYXRvclZpYnJhdGlvbi5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5j
bHVkZSAiVmlicmF0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0ludDMyQXJyYXkuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOYXZpZ2F0b3I7CisKK2NsYXNzIFZpYnJhdGlv
biB7CitwdWJsaWM6CisgICAgVmlicmF0aW9uKFZpYnJhdGlvbkNsaWVudCopOworICAgIH5WaWJy
YXRpb24oKTsKKworICAgIHZvaWQgdmlicmF0ZShjb25zdCBWaWJyYXRpb25QYXR0ZXJuJik7Cisg
ICAgdm9pZCBjYW5jZWxWaWJyYXRpb24oKTsKKworICAgIC8vIEZJWE1FIDogQWRkIHN1c3BlbmRW
aWJyYXRpb24oKSBhbmQgcmVzdW1lVmlicmF0aW9uKCkgdG8gdGhlIHBhZ2UgdmlzaWJpbGl0eSBm
ZWF0dXJlLCB3aGVuIHRoZSBkb2N1bWVudC5oaWRkZW4gYXR0cmlidXRlIGlzIGNoYW5nZWQuCisg
ICAgdm9pZCBzdXNwZW5kVmlicmF0aW9uKCk7CisgICAgdm9pZCByZXN1bWVWaWJyYXRpb24oKTsK
KyAgICB2b2lkIHRpbWVyU3RhcnRGaXJlZChUaW1lcjxWaWJyYXRpb24+Kik7CisgICAgdm9pZCB0
aW1lclN0b3BGaXJlZChUaW1lcjxWaWJyYXRpb24+Kik7CisKK3ByaXZhdGU6CisgICAgVmlicmF0
aW9uQ2xpZW50KiBtX3ZpYnJhdGlvbkNsaWVudDsKKyAgICBUaW1lcjxWaWJyYXRpb24+IG1fdGlt
ZXJTdGFydDsKKyAgICBUaW1lcjxWaWJyYXRpb24+IG1fdGltZXJTdG9wOworICAgIGJvb2wgbV9p
c1ZpYnJhdGluZzsKKyAgICBWaWJyYXRpb25QYXR0ZXJuIG1fcGF0dGVybjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShWSUJSQVRJT04pCisKKyNlbmRp
ZiAvLyBWaWJyYXRpb25faAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Zp
YnJhdGlvbi9WaWJyYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0
aW9uL1ZpYnJhdGlvbkNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjRhOTVkZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJh
dGlvbi9WaWJyYXRpb25DbGllbnQuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgVmlicmF0
aW9uQ2xpZW50X2gKKyNkZWZpbmUgVmlicmF0aW9uQ2xpZW50X2gKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBWaWJyYXRpb25DbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflZp
YnJhdGlvbkNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHZpYnJhdGUoY29uc3QgbG9u
ZyYgdGltZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxWaWJyYXRpb24oKSA9IDA7CisK
KyAgICB2aXJ0dWFsIHZvaWQgdmlicmF0aW9uRGVzdHJveWVkKCkgPSAwOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVmlicmF0aW9uQ2xpZW50X2gKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlND
LmNtYWtlCmluZGV4IDM4ZTY3MzEuLmVhMTljNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAgLTI0NSw2
ICsyNDUsMTIgQEAgSUYgKEVOQUJMRV9XRUJHTCkKICAgICApCiBFTkRJRiAoKQogCitJRiAoRU5B
QkxFX1ZJQlJBVElPTikKKyAgICBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgICAg
YmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCisgICAgKQorRU5ESUYgKCkKKwogTElT
VChBUFBFTkQgU0NSSVBUU19CSU5ESU5HUwogICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbQogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCmluZGV4IDJkOGQ0OWQuLjhhMjhjZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKQEAgLTQs
NiArNCw3IEBACiAgKiAgQ29weXJpZ2h0IChjKSAyMDAwIFN0ZWZhbiBTY2hpbWFuc2tpIChzY2hp
bW1pQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqICBDb3B5
cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTI1LDEwICsyNiwxNiBAQAogCiAjaW5jbHVkZSAiQ2FsbGJhY2tGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogI2luY2x1ZGUgIkpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oIgogI2lu
Y2x1ZGUgIkpTTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmgiCisjZW5kaWYKICNp
bmNsdWRlICJOYXZpZ2F0b3IuaCIKIAorI2lmIEVOQUJMRShWSUJSQVRJT04pCisjaW5jbHVkZSAi
TmF2aWdhdG9yVmlicmF0aW9uLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtNjAsNCArNjcsNDkgQEAgSlNWYWx1ZSBKU05hdmlnYXRv
cjo6d2Via2l0R2V0VXNlck1lZGlhKEV4ZWNTdGF0ZSogZXhlYykKIH0KICNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKK0pTVmFsdWUgSlNOYXZp
Z2F0b3I6OndlYmtpdFZpYnJhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZpYnJhdGlvblBh
dHRlcm4gcGF0dGVybjsKKyAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKKyAgICAgICAg
cGF0dGVybi5hcHBlbmQoMCk7CisKKyAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQo
MCk7CisgICAgdW5zaWduZWQgbGVuZ3RoOworICAgIGlmICh2YWx1ZS5pc1VJbnQzMigpKQorICAg
ICAgICBwYXR0ZXJuLmFwcGVuZCh2YWx1ZS5hc0ludDMyKCkpOworICAgIGVsc2UgaWYgKEpTT2Jq
ZWN0KiBvYmplY3QgPSB0b0pTU2VxdWVuY2UoZXhlYywgdmFsdWUsIGxlbmd0aCkpIHsKKyAgICAg
ICAgaWYgKCFsZW5ndGgpCisgICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZCgwKTsKKworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHZh
bHVlID0gb2JqZWN0LT5nZXQoZXhlYywgaSk7CisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICAg
ICAgICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8ICF2YWx1ZS5pc051bWJlcigp
KSB7CisgICAgICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIElOVkFMSURfQUNDRVNT
X0VSUik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc1VJbnQzMigpKQorICAgICAgICAgICAgICAg
IHBhdHRlcm4uYXBwZW5kKHZhbHVlLmFzSW50MzIoKSk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
eworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICBleGVjLT5j
bGVhckV4Y2VwdGlvbigpOworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgSU5WQUxJRF9B
Q0NFU1NfRVJSKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgTmF2aWdhdG9yVmlicmF0aW9uOjp3ZWJraXRWaWJy
YXRlKG1faW1wbCwgcGF0dGVybiwgZWMpOworCisgICAgaWYgKGVjKQorICAgICAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgZWMpOworCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisjZW5k
aWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMGM2ZmY1NS4uOTcyNTUwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCkBAIC05MCw2ICs5MCwxMCBAQAogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5h
dG9yLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShWSUJSQVRJT04pCisjaW5jbHVkZSAiVmlicmF0
aW9uLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgSGFzaFNldDxQ
YWdlKj4qIGFsbFBhZ2VzOwpAQCAtMTgyLDYgKzE4Niw5IEBAIFBhZ2U6OlBhZ2UoUGFnZUNsaWVu
dHMmIHBhZ2VDbGllbnRzKQogICAgICwgbV92aXNpYmlsaXR5U3RhdGUoUGFnZVZpc2liaWxpdHlT
dGF0ZVZpc2libGUpCiAjZW5kaWYKICAgICAsIG1fZGlzcGxheUlEKDApCisjaWYgRU5BQkxFKFZJ
QlJBVElPTikKKyAgICAsIG1fdmlicmF0aW9uKGFkb3B0UHRyKG5ldyBWaWJyYXRpb24ocGFnZUNs
aWVudHMudmlicmF0aW9uQ2xpZW50KSkpCisjZW5kaWYKIHsKICAgICBpZiAoIWFsbFBhZ2VzKSB7
CiAgICAgICAgIGFsbFBhZ2VzID0gbmV3IEhhc2hTZXQ8UGFnZSo+OwpAQCAtMTA4OCw2ICsxMDk1
LDkgQEAgUGFnZTo6UGFnZUNsaWVudHM6OlBhZ2VDbGllbnRzKCkKICAgICAsIHNwZWVjaElucHV0
Q2xpZW50KDApCiAgICAgLCBub3RpZmljYXRpb25DbGllbnQoMCkKICAgICAsIHVzZXJNZWRpYUNs
aWVudCgwKQorI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgLCB2aWJyYXRpb25DbGllbnQoMCkK
KyNlbmRpZgogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGVmMWQxZDkuLmY2MzRhNGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCkBAIC05MCw2ICs5MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCiAgICAgY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICBjbGFzcyBWaWJyYXRpb247CisgICAgY2xh
c3MgVmlicmF0aW9uQ2xpZW50OworI2VuZGlmCiAKICAgICB0eXBlZGVmIHVpbnQ2NF90IExpbmtI
YXNoOwogCkBAIC0xMjIsNiArMTI2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgU3BlZWNoSW5wdXRDbGllbnQqIHNwZWVjaElucHV0Q2xpZW50OwogICAgICAgICAgICAgTm90
aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25DbGllbnQ7CiAgICAgICAgICAgICBVc2Vy
TWVkaWFDbGllbnQqIHVzZXJNZWRpYUNsaWVudDsKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAg
ICAgICAgICAgVmlicmF0aW9uQ2xpZW50KiB2aWJyYXRpb25DbGllbnQ7CisjZW5kaWYKICAgICAg
ICAgfTsKIAogICAgICAgICBQYWdlKFBhZ2VDbGllbnRzJik7CkBAIC0zNDgsNyArMzU1LDExIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgICAgIFBsYXRmb3JtRGlzcGxheUlE
IGRpc3BsYXlJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUlEOyB9Ci0gICAgICAgIAorCisj
aWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICAgICAgVmlicmF0aW9uKiB2aWJyYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3ZpYnJhdGlvbi5nZXQoKTsgfQorI2VuZGlmCisKICAgICBwcml2YXRlOgog
ICAgICAgICB2b2lkIGluaXRHcm91cCgpOwogCkBAIC00NjIsNiArNDczLDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgUGFnZVZpc2liaWxpdHlTdGF0ZSBtX3Zpc2liaWxpdHlTdGF0
ZTsKICNlbmRpZgogICAgICAgICBQbGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRDsKKyNpZiBF
TkFCTEUoVklCUkFUSU9OKQorICAgICAgICBPd25QdHI8VmlicmF0aW9uPiBtX3ZpYnJhdGlvbjsK
KyNlbmRpZgorCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhkNDkwYzAuLmFiMzUzNmUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wMS0yNiAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5n
LmNvbT4KKworICAgICAgICBBZGQgYSBuZXcgQVBJIGZvciB0aGUgVmlicmF0aW9uIEFQSShXM0Mp
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwMTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwOi8v
ZGV2LnczLm9yZy8yMDA5L2RhcC92aWJyYXRpb24vCisKKyAgICAgICAgKiBTY3JpcHRzL2J1aWxk
LXdlYmtpdDogQWRkIEVOQUJMRV9WSUJSQVRJT04gZmVhdHVyZS4KKwogMjAxMi0wMS0yNSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFRlbXBvcmFyaWx5IGRpc2Fi
bGUgcnVubmluZyB0aGUgdW5pdCB0ZXN0cyBvbiB0aGUgQ2hyb21pdW0gRVdTLiAgVGhlc2UKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0IGIvVG9vbHMvU2NyaXB0cy9idWls
ZC13ZWJraXQKaW5kZXggYjliOTk3Mi4uZDczZGU4ZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy9idWlsZC13ZWJraXQKKysrIGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKQEAgLTEyNiw2
ICsxMjYsNyBAQCBteSAoCiAgICAgJHRpbGVkQmFja2luZ1N0b3JlU3VwcG9ydCwKICAgICAkdG91
Y2hFdmVudHNTdXBwb3J0LAogICAgICR0b3VjaEljb25Mb2FkaW5nU3VwcG9ydCwKKyAgICAkdmli
cmF0aW9uU3VwcG9ydCwKICAgICAkdmlkZW9TdXBwb3J0LAogICAgICR2aWRlb1RyYWNrU3VwcG9y
dCwKICAgICAkd2ViQXVkaW9TdXBwb3J0LApAQCAtMzIwLDYgKzMyMSw5IEBAIG15IEBmZWF0dXJl
cyA9ICgKICAgICB7IG9wdGlvbiA9PiAidG91Y2gtaWNvbi1sb2FkaW5nIiwgZGVzYyA9PiAiVG9n
Z2xlIFRvdWNoIEljb24gTG9hZGluZyBTdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxF
X1RPVUNIX0lDT05fTE9BRElORyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCR0b3VjaEljb25M
b2FkaW5nU3VwcG9ydCB9LAogCisgICAgeyBvcHRpb24gPT4gInZpYnJhdGlvbiIsIGRlc2MgPT4g
IlRvZ2dsZSBWaWRlbyBzdXBwb3J0IiwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1ZJQlJBVElP
TiIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCR2aWJyYXRpb25TdXBwb3J0IH0sCisKICAgICB7
IG9wdGlvbiA9PiAidmlkZW8iLCBkZXNjID0+ICJUb2dnbGUgVmlkZW8gc3VwcG9ydCIsCiAgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9WSURFTyIsIGRlZmF1bHQgPT4gKGlzQXBwbGVXZWJLaXQoKSB8
fCBpc0d0aygpIHx8IGlzQmxhY2tCZXJyeSgpKSwgdmFsdWUgPT4gXCR2aWRlb1N1cHBvcnQgfSwK
IAo=
</data>
<flag name="commit-queue"
          id="125476"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124267</attachid>
            <date>2012-01-27 00:29:20 -0800</date>
            <delta_ts>2012-01-27 04:22:48 -0800</delta_ts>
            <desc>Add test case for ignoring for cr-linux.</desc>
            <filename>vibration.patch</filename>
            <type>text/plain</type>
            <size>25326</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNmM0MDNiLi5hYzQwNzRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDEt
MjcgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRk
IGEgbmV3IHRlc3QgY2FzZSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAxMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJh
dGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRvci12
aWJyYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0OgorCiAyMDEyLTAxLTI1ICBNaWtlIExhd3RoZXIgIDxtaWtlbGF3dGhl
ckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgdGFibGUgYm9yZGVyIHNwYWNpbmcgdGVzdCBmb3Ig
Q1NTMyBjYWxjCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3Itdmli
cmF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci12aWJy
YXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBk
YWMwOGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3It
dmlicmF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0IGZvciB0aGUgVmli
cmF0aW9uIEFQSS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZXhjZXB0
aW9uQ29kZUZvclZpYnJhdGUgaXMgMAorUEFTUyBleGNlcHRpb25Db2RlRm9yQ2FuY2VsIGlzIDAK
K1BBU1MgZXhjZXB0aW9uQ29kZUZvclZpYnJhdGVXaXRoSW52YWxpZEludFBhcmFtIGlzIERPTUV4
Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgZXhjZXB0aW9uQ29kZUZvclZpYnJhdGVX
aXRoSW52YWxpZEFycmF5UGFyYW0gaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb24uaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb24uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jN2ViNDNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5odG1sCkBAIC0wLDAgKzEsNTQgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdU
ZXN0IGZvciB0aGUgVmlicmF0aW9uIEFQSS4nKTsKKwordmFyIGV4Y2VwdGlvbkNvZGVGb3JWaWJy
YXRlID0gMDsKK3ZhciBleGNlcHRpb25Db2RlRm9yQ2FuY2VsID0gMDsKK3ZhciBleGNlcHRpb25D
b2RlRm9yVmlicmF0ZVdpdGhJbnZhbGlkSW50UGFyYW0gPSAwOwordmFyIGV4Y2VwdGlvbkNvZGVG
b3JWaWJyYXRlV2l0aEludmFsaWRBcnJheVBhcmFtID0gMDsKKwordHJ5IHsKKyAgICBuYXZpZ2F0
b3Iud2Via2l0VmlicmF0ZSgxMDAwKTsKKyAgICBuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZShbMTAw
MCwgMzAwLCA1MDBdKTsKK30KK2NhdGNoIChlKSB7CisgICAgZXhjZXB0aW9uQ29kZUZvclZpYnJh
dGUgPSBlLmNvZGU7Cit9CisKK3Nob3VsZEJlKCJleGNlcHRpb25Db2RlRm9yVmlicmF0ZSIsICIw
Iik7CisKK3RyeSB7CisgICAgbmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoMCk7CisgICAgbmF2aWdh
dG9yLndlYmtpdFZpYnJhdGUoW10pOworfQorY2F0Y2ggKGUpIHsKKyAgICBleGNlcHRpb25Db2Rl
Rm9yQ2FuY2VsID0gZS5jb2RlOworfQorCitzaG91bGRCZSgiZXhjZXB0aW9uQ29kZUZvckNhbmNl
bCIsICIwIik7CisKK3RyeSB7CisgICAgbmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoIjEwMDAiKTsK
K30KK2NhdGNoIChlKSB7CisgICAgZXhjZXB0aW9uQ29kZUZvclZpYnJhdGVXaXRoSW52YWxpZElu
dFBhcmFtID0gZS5jb2RlOworfQorCitzaG91bGRCZSgiZXhjZXB0aW9uQ29kZUZvclZpYnJhdGVX
aXRoSW52YWxpZEludFBhcmFtIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIiKTsK
KwordHJ5IHsKKyAgICBuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZShbMTAwMCwgIjIwMCIsIDUwMF0p
OworfQorY2F0Y2ggKGUpIHsKKyAgICBleGNlcHRpb25Db2RlRm9yVmlicmF0ZVdpdGhJbnZhbGlk
QXJyYXlQYXJhbSA9IGUuY29kZTsKK30KKworc2hvdWxkQmUoImV4Y2VwdGlvbkNvZGVGb3JWaWJy
YXRlV2l0aEludmFsaWRBcnJheVBhcmFtIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19F
UlIiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDdhNzA5ODIuLmIx
MGZhODAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKQEAgLTEwMSw2ICsxMDEsOSBAQCBCVUdDUjEwMzkzOSBTS0lQIDogaHR0
cC90ZXN0cy9hcHBjYWNoZS93cm9uZy1jb250ZW50LXR5cGUuaHRtbCA9IFRFWFQKIC8vIGJ1aWxk
IGZsYWcgdHVybmVkIG9uLgogQlVHR0JJTExPQ0sgU0tJUCA6IHdlYmludGVudHMgPSBGQUlMCiAK
Ky8vIFZpYnJhdGlvbiBBUEkgaXMgbm90IHN1cHBvcnRlZCB5ZXQgaW4gdGhlIGNocm9taXVtIHBv
cnQuCitCVUdXSzcyMDEwIFNLSVAgOiBmYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uQVBJLmh0
bWwgPSBGQUlMCisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBXT05URklYIFRFU1RTCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzNjZjMmEwLi44NDQ4YzQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMjIyOSw2ICsyMjI5LDE5IEBAIElGIChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05f
RlJBTUUpCiAgICAgKQogRU5ESUYgKCkKIAorSUYgKEVOQUJMRV9WSUJSQVRJT04pCisgICAgTElT
VChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICR7V0VCQ09SRV9E
SVJ9L01vZHVsZXMvdmlicmF0aW9uCisgICAgKQorICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfSURM
X0ZJTEVTCisgICAgICAgIE1vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5pZGwK
KyAgICApCisgICAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgIE1vZHVsZXMv
dmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5jcHAKKyAgICAgICAgTW9kdWxlcy92aWJyYXRp
b24vVmlicmF0aW9uLmNwcAorICAgICkKK0VORElGICgpCisKICMgTW9kdWxlcyB0aGF0IHRoZSBi
aW5kaW5ncyBnZW5lcmF0b3Igc2NyaXB0cyBtYXkgdXNlCiBTRVQoU0NSSVBUU19SRVNPTFZFX1NV
UFBMRU1FTlRBTAogICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2Vy
LnBtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggOTEwNjFlMi4uYzhlZmY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDY4IEBACisyMDEyLTAxLTI2ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29t
PgorCisgICAgICAgIEFkZCBhIG5ldyBBUEkgZm9yIHRoZSBWaWJyYXRpb24gQVBJKFczQykuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAxMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9kZXYu
dzMub3JnLzIwMDkvZGFwL3ZpYnJhdGlvbi8KKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRz
IG5hdmlnYXRvci53ZWJraXR2aWJyYXRlKCkgQVBJLgorICAgICAgICBUaGlzIEFQSSBvcGVyYXRl
cyBkaWZmZXJlbnRseSBkZXBlbmRpbmcgdXBvbiBhIGdpdmVuIHBhcmFtZXRlcjoKKyAgICAgICAg
MS4gSXQgY2FuY2VscyB2aWJyYXRpb24gd2hlbiBnaXZlbiAwIG9yIFtdLgorICAgICAgICAyLiBJ
dCBnaXZlcyBhIHZpYnJhdGlvbiBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMgd2hlbiBnaXZlbiBh
cyBhIHNpbmdsZSBpbnRlZ2VyIHZhbHVlLgorICAgICAgICAzLiBJdCBnaXZlcyBhIHZpYnJhdGlv
biBwYXR0ZXJuIHdoZW4gZ2l2ZW4gYXMgYW4gaW50ZWdlciBhcnJheS4gRm9yIGluc3RhbmNlLCBb
MTAwMCAzMDAgMTAwMF0gZ2VuZXJhdGVzIGEgdmlicmF0aW9uIG9mIDEwMDBtcyBmb2xsb3dlZCBi
eSAzMDBtcyBvZiBpZGxlIHRpbWUsIGFuZCB0aGVuIGNyZWF0ZXMgYW5vdGhlciB2aWJyYXRpb24g
b2YgMTAwMG1zLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb24u
aHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTW9kdWxlcy92aWJy
YXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgICBUaGVyZSBpcyBh
IHdlYmtpdFZpYnJhdGUoKSBtZXRob2QgaW4gdGhpcyBjbGFzcy4KKyAgICAgICAgIEl0IGNoZWNr
cyBpZiB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgdGhlIHZpYnJhdGlvbi4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yVmlicmF0aW9uOjpOYXZpZ2F0b3JWaWJy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yVmlicmF0aW9uOjp+TmF2aWdhdG9y
VmlicmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvclZpYnJhdGlvbjo6d2Via2l0
VmlicmF0ZSk6CisgICAgICAgICogTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9u
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChOYXZpZ2F0b3JWaWJyYXRp
b24pOgorICAgICAgICAqIE1vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5pZGw6
IEFkZGVkLgorICAgICAgICAgQWRkIHRoZSBbSlNDQ3VzdG9tXSB3ZWJraXR2aWJyYXRlKCkgbWV0
aG9kLCBhbmQgd2Via2l0dmlicmF0ZSgpIGlzIG9ubHkgc3VwcG9ydGVkIHdpdGggSlNDIGF0IHRo
aXMgdGltZS4KKyAgICAgICAgKiBNb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uY3BwOiBBZGRl
ZC4KKyAgICAgICAgIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgZW50aXJlIHZpYnJhdGlvbiBs
b2dpYy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uOjpW
aWJyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uOjp+VmlicmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6dmlicmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpW
aWJyYXRpb246OmNhbmNlbFZpYnJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb246
OnN1c3BlbmRWaWJyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uOjpyZXN1bWVW
aWJyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uOjp0aW1lclN0YXJ0RmlyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uOjp0aW1lclN0b3BGaXJlZCk6CisgICAgICAg
ICogTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChWaWJyYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvdmlicmF0aW9uL1Zp
YnJhdGlvbkNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgIHZpYnJhdGUoKSBhbmQgY2FuY2VsVmli
cmF0ZSgpIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgaW4gdGhlIFZpYnJhdGlvbkNsaWVudC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVmlicmF0aW9uQ2xpZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlZpYnJhdGlvbkNsaWVudDo6flZpYnJhdGlvbkNsaWVudCk6CisgICAgICAgICogVXNl
SlNDLmNtYWtlOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNOYXZpZ2F0b3I6OndlYmtp
dFZpYnJhdGUpOgorICAgICAgICAgQWRkIHdlYmtpdFZpYnJhdGUgbWV0aG9kIHRvIGdldCBhbiBh
cnJheSBwYXJhbWV0ZXIuCisgICAgICAgICBUaGVyZSBpcyBubyB3YXkgdG8gZ2V0IGFuIGFycmF5
IHR5cGUgcGFyYW1ldGVyLgorICAgICAgICAgVGhpcyBtZXRob2QgY2hlY2tzIHR5cGVzIGFuZCB2
YWx1ZXMgb2YgcGFyYW1ldGVyLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2VDbGllbnRz
OjpQYWdlQ2xpZW50cyk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKCk6CisgICAgICAgIChQYWdlQ2xpZW50cyk6CisgICAgICAgIChQYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnZpYnJhdGlvbik6CisKIDIwMTItMDEtMjUgIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxMDU4NTguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5lYzkyMjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmNwcApAQCAtMCwwICsxLDYy
IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3JWaWJyYXRpb24u
aCIKKworI2lmIEVOQUJMRShWSUJSQVRJT04pCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKKyNpbmNsdWRlICJQ
YWdlLmgiCisjaW5jbHVkZSAiVmlicmF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
TmF2aWdhdG9yVmlicmF0aW9uOjpOYXZpZ2F0b3JWaWJyYXRpb24oKQoreworfQorCitOYXZpZ2F0
b3JWaWJyYXRpb246On5OYXZpZ2F0b3JWaWJyYXRpb24oKQoreworfQorCit2b2lkIE5hdmlnYXRv
clZpYnJhdGlvbjo6d2Via2l0VmlicmF0ZShOYXZpZ2F0b3IqIG5hdmlnYXRvciwgY29uc3QgVmli
cmF0aW9uUGF0dGVybiYgcGF0dGVybiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFw
YXR0ZXJuLnNpemUoKSB8fCAhbmF2aWdhdG9yLT5mcmFtZSgpLT5wYWdlKCkpCisgICAgICAgIHJl
dHVybjsKKworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIGlmIChuYXZpZ2F0
b3ItPmZyYW1lKCktPnBhZ2UoKS0+dmlzaWJpbGl0eVN0YXRlKCkgPT0gUGFnZVZpc2liaWxpdHlT
dGF0ZUhpZGRlbikKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBpZiAoIW5hdmlnYXRv
ci0+ZnJhbWUoKS0+cGFnZSgpLT52aWJyYXRpb24oKSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQ
T1JURURfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbmF2aWdhdG9yLT5mcmFt
ZSgpLT5wYWdlKCktPnZpYnJhdGlvbigpLT52aWJyYXRlKHBhdHRlcm4pOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVklCUkFUSU9OKQorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZjM4OTQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRp
b24uaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgTmF2aWdhdG9yVmlicmF0aW9uX2gKKyNk
ZWZpbmUgTmF2aWdhdG9yVmlicmF0aW9uX2gKKworI2lmIEVOQUJMRShWSUJSQVRJT04pCisKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5hdmlnYXRvcjsKKwordHlwZWRlZiBWZWN0b3I8bG9u
Zz4gVmlicmF0aW9uUGF0dGVybjsKKworY2xhc3MgTmF2aWdhdG9yVmlicmF0aW9uIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgdm9pZCB3ZWJraXRWaWJyYXRlKE5hdmlnYXRvciosIGNvbnN0IFZpYnJh
dGlvblBhdHRlcm4mLCBFeGNlcHRpb25Db2RlJik7CisKK3ByaXZhdGU6CisgICAgTmF2aWdhdG9y
VmlicmF0aW9uKCk7CisgICAgfk5hdmlnYXRvclZpYnJhdGlvbigpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikKKworI2VuZGlmIC8v
IE5hdmlnYXRvclZpYnJhdGlvbl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjg5ZjNjNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaWRsCkBAIC0wLDAgKzEsMjkg
QEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworbW9kdWxlIHdpbmRvdyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRp
b25hbD1WSUJSQVRJT04sCisgICAgICAgIFN1cHBsZW1lbnRhbD1OYXZpZ2F0b3IKKyAgICBdIE5h
dmlnYXRvclZpYnJhdGlvbiB7CisgICAgICAgIFtKU0NDdXN0b21dIHZvaWQgd2Via2l0VmlicmF0
ZShpbiBBcnJheSBwYXR0ZXJuKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICB9OworCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTczZGJlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmNwcApAQCAtMCwwICsx
LDExMiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlicmF0aW9uLmgiCisK
KyNpZiBFTkFCTEUoVklCUkFUSU9OKQorCisjaW5jbHVkZSAiVmlicmF0aW9uQ2xpZW50LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworVmlicmF0aW9uOjpWaWJyYXRpb24oVmlicmF0aW9uQ2xp
ZW50KiBWaWJyYXRpb25DbGllbnQpCisgICAgOiBtX3ZpYnJhdGlvbkNsaWVudChWaWJyYXRpb25D
bGllbnQpCisgICAgLCBtX3RpbWVyU3RhcnQodGhpcywgJlZpYnJhdGlvbjo6dGltZXJTdGFydEZp
cmVkKQorICAgICwgbV90aW1lclN0b3AodGhpcywgJlZpYnJhdGlvbjo6dGltZXJTdG9wRmlyZWQp
CisgICAgLCBtX2lzVmlicmF0aW5nKGZhbHNlKQoreworfQorCitWaWJyYXRpb246On5WaWJyYXRp
b24oKQoreworICAgIG1fdmlicmF0aW9uQ2xpZW50LT52aWJyYXRpb25EZXN0cm95ZWQoKTsKK30K
Kwordm9pZCBWaWJyYXRpb246OnZpYnJhdGUoY29uc3QgVmlicmF0aW9uUGF0dGVybiYgcGF0dGVy
bikKK3sKKyAgICBpbnQgbGVuZ3RoID0gcGF0dGVybi5zaXplKCk7CisKKyAgICBpZiAoIWxlbmd0
aCB8fCAobGVuZ3RoID09IDEgJiYgIXBhdHRlcm5bMF0pKSB7CisgICAgICAgIGlmIChtX2lzVmli
cmF0aW5nKQorICAgICAgICAgICAgY2FuY2VsVmlicmF0aW9uKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoIW1faXNWaWJyYXRpbmcgJiYgIW1fdGltZXJTdGFydC5pc0FjdGl2
ZSgpKSB7CisgICAgICAgIG1fcGF0dGVybiA9IHBhdHRlcm47CisgICAgICAgIG1fdGltZXJTdGFy
dC5zdGFydE9uZVNob3QoMCk7CisgICAgfQorfQorCit2b2lkIFZpYnJhdGlvbjo6Y2FuY2VsVmli
cmF0aW9uKCkKK3sKKyAgICBpZiAobV9pc1ZpYnJhdGluZykgeworICAgICAgICBtX3ZpYnJhdGlv
bkNsaWVudC0+Y2FuY2VsVmlicmF0aW9uKCk7CisgICAgICAgIG1faXNWaWJyYXRpbmcgPSBmYWxz
ZTsKKyAgICAgICAgbV90aW1lclN0b3Auc3RvcCgpOworICAgIH0KK30KKwordm9pZCBWaWJyYXRp
b246OnN1c3BlbmRWaWJyYXRpb24oKQoreworICAgIGlmICghbV9pc1ZpYnJhdGluZykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9wYXR0ZXJuLmluc2VydCgwLCBtX3RpbWVyU3RvcC5uZXh0Rmly
ZUludGVydmFsKCkpOworICAgIG1fdGltZXJTdG9wLnN0b3AoKTsKKyAgICBjYW5jZWxWaWJyYXRp
b24oKTsKK30KKwordm9pZCBWaWJyYXRpb246OnJlc3VtZVZpYnJhdGlvbigpCit7CisgICAgbV90
aW1lclN0YXJ0LnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBWaWJyYXRpb246OnRpbWVyU3Rh
cnRGaXJlZChUaW1lcjxWaWJyYXRpb24+KiB0aW1lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHRp
bWVyLCB0aW1lciA9PSAmbV90aW1lclN0YXJ0KTsKKworICAgIG1fdGltZXJTdGFydC5zdG9wKCk7
CisKKyAgICBpZiAobV9wYXR0ZXJuLnNpemUoKSkgeworICAgICAgICBtX2lzVmlicmF0aW5nID0g
dHJ1ZTsKKyAgICAgICAgbV92aWJyYXRpb25DbGllbnQtPnZpYnJhdGUobV9wYXR0ZXJuWzBdKTsK
KyAgICAgICAgbV90aW1lclN0b3Auc3RhcnRPbmVTaG90KG1fcGF0dGVyblswXSAvIDEwMDAuMCk7
CisgICAgICAgIG1fcGF0dGVybi5yZW1vdmUoMCk7CisgICAgfQorfQorCit2b2lkIFZpYnJhdGlv
bjo6dGltZXJTdG9wRmlyZWQoVGltZXI8VmlicmF0aW9uPiogdGltZXIpCit7CisgICAgQVNTRVJU
X1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fdGltZXJTdG9wKTsKKworICAgIG1fdGltZXJTdG9w
LnN0b3AoKTsKKyAgICBtX2lzVmlicmF0aW5nID0gZmFsc2U7CisKKyAgICBpZiAobV9wYXR0ZXJu
LnNpemUoKSkgeworICAgICAgICBtX3RpbWVyU3RhcnQuc3RhcnRPbmVTaG90KG1fcGF0dGVyblsw
XSAvIDEwMDAuMCk7CisgICAgICAgIG1fcGF0dGVybi5yZW1vdmUoMCk7CisgICAgfQorfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVklCUkFUSU9OKQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0N2FiODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uaApAQCAtMCwwICsxLDYxIEBA
CisvKgorICogIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpZm5kZWYgVmlicmF0aW9uX2gKKyNkZWZpbmUgVmlicmF0aW9uX2gKKworI2lmIEVOQUJM
RShWSUJSQVRJT04pCisKKyNpbmNsdWRlICJOYXZpZ2F0b3JWaWJyYXRpb24uaCIKKyNpbmNsdWRl
ICJUaW1lci5oIgorI2luY2x1ZGUgIlZpYnJhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9J
bnQzMkFycmF5Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTmF2aWdhdG9yOwor
CitjbGFzcyBWaWJyYXRpb24geworcHVibGljOgorICAgIFZpYnJhdGlvbihWaWJyYXRpb25DbGll
bnQqKTsKKyAgICB+VmlicmF0aW9uKCk7CisKKyAgICB2b2lkIHZpYnJhdGUoY29uc3QgVmlicmF0
aW9uUGF0dGVybiYpOworICAgIHZvaWQgY2FuY2VsVmlicmF0aW9uKCk7CisKKyAgICAvLyBGSVhN
RSA6IEFkZCBzdXNwZW5kVmlicmF0aW9uKCkgYW5kIHJlc3VtZVZpYnJhdGlvbigpIHRvIHRoZSBw
YWdlIHZpc2liaWxpdHkgZmVhdHVyZSwgd2hlbiB0aGUgZG9jdW1lbnQuaGlkZGVuIGF0dHJpYnV0
ZSBpcyBjaGFuZ2VkLgorICAgIHZvaWQgc3VzcGVuZFZpYnJhdGlvbigpOworICAgIHZvaWQgcmVz
dW1lVmlicmF0aW9uKCk7CisgICAgdm9pZCB0aW1lclN0YXJ0RmlyZWQoVGltZXI8VmlicmF0aW9u
PiopOworICAgIHZvaWQgdGltZXJTdG9wRmlyZWQoVGltZXI8VmlicmF0aW9uPiopOworCitwcml2
YXRlOgorICAgIFZpYnJhdGlvbkNsaWVudCogbV92aWJyYXRpb25DbGllbnQ7CisgICAgVGltZXI8
VmlicmF0aW9uPiBtX3RpbWVyU3RhcnQ7CisgICAgVGltZXI8VmlicmF0aW9uPiBtX3RpbWVyU3Rv
cDsKKyAgICBib29sIG1faXNWaWJyYXRpbmc7CisgICAgVmlicmF0aW9uUGF0dGVybiBtX3BhdHRl
cm47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVklC
UkFUSU9OKQorCisjZW5kaWYgLy8gVmlicmF0aW9uX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi40YTk1ZGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uQ2xpZW50LmgKQEAgLTAsMCArMSwzOCBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaWZuZGVmIFZpYnJhdGlvbkNsaWVudF9oCisjZGVmaW5lIFZpYnJhdGlvbkNsaWVudF9oCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlicmF0aW9uQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5WaWJyYXRpb25DbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB2
aWJyYXRlKGNvbnN0IGxvbmcmIHRpbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVmli
cmF0aW9uKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHZpYnJhdGlvbkRlc3Ryb3llZCgpID0g
MDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFZpYnJhdGlvbkNs
aWVudF9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQppbmRleCAzOGU2NzMxLi5lYTE5Yzc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNlSlND
LmNtYWtlCkBAIC0yNDUsNiArMjQ1LDEyIEBAIElGIChFTkFCTEVfV0VCR0wpCiAgICAgKQogRU5E
SUYgKCkKIAorSUYgKEVOQUJMRV9WSUJSQVRJT04pCisgICAgTElTVChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCisgICAgICAgIGJpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAorICAgICkK
K0VORElGICgpCisKIExJU1QoQVBQRU5EIFNDUklQVFNfQklORElOR1MKICAgICAke1dFQkNPUkVf
RElSfS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KICkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAppbmRleCAyZDhkNDlkLi44
YTI4Y2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRv
ckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JD
dXN0b20uY3BwCkBAIC00LDYgKzQsNyBAQAogICogIENvcHlyaWdodCAoYykgMjAwMCBTdGVmYW4g
U2NoaW1hbnNraSAoc2NoaW1taUBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMywgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQorICogIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0
cm9uaWNzCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yNSwxMCArMjYsMTYgQEAKIAogI2luY2x1
ZGUgIkNhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKICNpbmNsdWRlICJKU05hdmlnYXRvclVzZXJNZWRpYUVycm9y
Q2FsbGJhY2suaCIKICNpbmNsdWRlICJKU05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFj
ay5oIgorI2VuZGlmCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAKKyNpZiBFTkFCTEUoVklCUkFU
SU9OKQorI2luY2x1ZGUgIk5hdmlnYXRvclZpYnJhdGlvbi5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTYwLDQgKzY3LDQ5IEBAIEpT
VmFsdWUgSlNOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYShFeGVjU3RhdGUqIGV4ZWMpCiB9
CiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2lmIEVOQUJMRShWSUJSQVRJT04p
CitKU1ZhbHVlIEpTTmF2aWdhdG9yOjp3ZWJraXRWaWJyYXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBWaWJyYXRpb25QYXR0ZXJuIHBhdHRlcm47CisgICAgaWYgKCFleGVjLT5hcmd1bWVudENv
dW50KCkpCisgICAgICAgIHBhdHRlcm4uYXBwZW5kKDApOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9
IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIHVuc2lnbmVkIGxlbmd0aDsKKyAgICBpZiAodmFsdWUu
aXNVSW50MzIoKSkKKyAgICAgICAgcGF0dGVybi5hcHBlbmQodmFsdWUuYXNJbnQzMigpKTsKKyAg
ICBlbHNlIGlmIChKU09iamVjdCogb2JqZWN0ID0gdG9KU1NlcXVlbmNlKGV4ZWMsIHZhbHVlLCBs
ZW5ndGgpKSB7CisgICAgICAgIGlmICghbGVuZ3RoKQorICAgICAgICAgICAgcGF0dGVybi5hcHBl
bmQoMCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7
CisgICAgICAgICAgICB2YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIGkpOworICAgICAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworCisgICAgICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSB8fCAh
dmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVj
LCBJTlZBTElEX0FDQ0VTU19FUlIpOworICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodmFsdWUuaXNVSW50MzIoKSkK
KyAgICAgICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZCh2YWx1ZS5hc0ludDMyKCkpOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIElOVkFMSURfQUNDRVNTX0VSUik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIE5hdmlnYXRvclZpYnJh
dGlvbjo6d2Via2l0VmlicmF0ZShtX2ltcGwsIHBhdHRlcm4sIGVjKTsKKworICAgIGlmIChlYykK
KyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDBjNmZmNTUuLjk3
MjU1MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtOTAsNiArOTAsMTAgQEAKICNpbmNsdWRlICJT
Y3JvbGxpbmdDb29yZGluYXRvci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQor
I2luY2x1ZGUgIlZpYnJhdGlvbi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIEhhc2hTZXQ8UGFnZSo+KiBhbGxQYWdlczsKQEAgLTE4Miw2ICsxODYsOSBAQCBQYWdl
OjpQYWdlKFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50cykKICAgICAsIG1fdmlzaWJpbGl0eVN0YXRl
KFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKQogI2VuZGlmCiAgICAgLCBtX2Rpc3BsYXlJRCgw
KQorI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgLCBtX3ZpYnJhdGlvbihhZG9wdFB0cihuZXcg
VmlicmF0aW9uKHBhZ2VDbGllbnRzLnZpYnJhdGlvbkNsaWVudCkpKQorI2VuZGlmCiB7CiAgICAg
aWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5ldyBIYXNoU2V0PFBhZ2UqPjsK
QEAgLTEwODgsNiArMTA5NSw5IEBAIFBhZ2U6OlBhZ2VDbGllbnRzOjpQYWdlQ2xpZW50cygpCiAg
ICAgLCBzcGVlY2hJbnB1dENsaWVudCgwKQogICAgICwgbm90aWZpY2F0aW9uQ2xpZW50KDApCiAg
ICAgLCB1c2VyTWVkaWFDbGllbnQoMCkKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICwgdmli
cmF0aW9uQ2xpZW50KDApCisjZW5kaWYKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBlZjFkMWQ5
Li5mNjM0YTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtOTAsNiArOTAsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIGNsYXNzIE5vdGlmaWNhdGlv
blByZXNlbnRlcjsKICNlbmRpZgorI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgY2xhc3MgVmli
cmF0aW9uOworICAgIGNsYXNzIFZpYnJhdGlvbkNsaWVudDsKKyNlbmRpZgogCiAgICAgdHlwZWRl
ZiB1aW50NjRfdCBMaW5rSGFzaDsKIApAQCAtMTIyLDYgKzEyNiw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgICAgIFNwZWVjaElucHV0Q2xpZW50KiBzcGVlY2hJbnB1dENsaWVudDsK
ICAgICAgICAgICAgIE5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uQ2xpZW50Owog
ICAgICAgICAgICAgVXNlck1lZGlhQ2xpZW50KiB1c2VyTWVkaWFDbGllbnQ7CisjaWYgRU5BQkxF
KFZJQlJBVElPTikKKyAgICAgICAgICAgIFZpYnJhdGlvbkNsaWVudCogdmlicmF0aW9uQ2xpZW50
OworI2VuZGlmCiAgICAgICAgIH07CiAKICAgICAgICAgUGFnZShQYWdlQ2xpZW50cyYpOwpAQCAt
MzQ4LDcgKzM1NSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgICAgICBQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlJRDsg
fQotICAgICAgICAKKworI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgICAgIFZpYnJhdGlvbiog
dmlicmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92aWJyYXRpb24uZ2V0KCk7IH0KKyNlbmRpZgor
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBpbml0R3JvdXAoKTsKIApAQCAtNDYyLDYgKzQ3
MywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBhZ2VWaXNpYmlsaXR5U3RhdGUg
bV92aXNpYmlsaXR5U3RhdGU7CiAjZW5kaWYKICAgICAgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9k
aXNwbGF5SUQ7CisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICAgICAgT3duUHRyPFZpYnJhdGlv
bj4gbV92aWJyYXRpb247CisjZW5kaWYKKwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4
ZDQ5MGMwLi5hYjM1MzZlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDEtMjYgIEtpaG9uZyBLd29uICA8a2lo
b25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRkIGEgbmV3IEFQSSBmb3IgdGhlIFZp
YnJhdGlvbiBBUEkoVzNDKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcyMDEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9kYXAvdmlicmF0aW9uLworCisgICAgICAg
ICogU2NyaXB0cy9idWlsZC13ZWJraXQ6IEFkZCBFTkFCTEVfVklCUkFUSU9OIGZlYXR1cmUuCisK
IDIwMTItMDEtMjUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBU
ZW1wb3JhcmlseSBkaXNhYmxlIHJ1bm5pbmcgdGhlIHVuaXQgdGVzdHMgb24gdGhlIENocm9taXVt
IEVXUy4gIFRoZXNlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCBiL1Rv
b2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CmluZGV4IGI5Yjk5NzIuLmQ3M2RlOGQgMTAwNzU1Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CisrKyBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQt
d2Via2l0CkBAIC0xMjYsNiArMTI2LDcgQEAgbXkgKAogICAgICR0aWxlZEJhY2tpbmdTdG9yZVN1
cHBvcnQsCiAgICAgJHRvdWNoRXZlbnRzU3VwcG9ydCwKICAgICAkdG91Y2hJY29uTG9hZGluZ1N1
cHBvcnQsCisgICAgJHZpYnJhdGlvblN1cHBvcnQsCiAgICAgJHZpZGVvU3VwcG9ydCwKICAgICAk
dmlkZW9UcmFja1N1cHBvcnQsCiAgICAgJHdlYkF1ZGlvU3VwcG9ydCwKQEAgLTMyMCw2ICszMjEs
OSBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gInRvdWNoLWljb24tbG9hZGlu
ZyIsIGRlc2MgPT4gIlRvZ2dsZSBUb3VjaCBJY29uIExvYWRpbmcgU3VwcG9ydCIsCiAgICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkciLCBkZWZhdWx0ID0+IDAsIHZhbHVl
ID0+IFwkdG91Y2hJY29uTG9hZGluZ1N1cHBvcnQgfSwKIAorICAgIHsgb3B0aW9uID0+ICJ2aWJy
YXRpb24iLCBkZXNjID0+ICJUb2dnbGUgVmlkZW8gc3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4g
IkVOQUJMRV9WSUJSQVRJT04iLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkdmlicmF0aW9uU3Vw
cG9ydCB9LAorCiAgICAgeyBvcHRpb24gPT4gInZpZGVvIiwgZGVzYyA9PiAiVG9nZ2xlIFZpZGVv
IHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVklERU8iLCBkZWZhdWx0ID0+IChp
c0FwcGxlV2ViS2l0KCkgfHwgaXNHdGsoKSB8fCBpc0JsYWNrQmVycnkoKSksIHZhbHVlID0+IFwk
dmlkZW9TdXBwb3J0IH0sCiAK
</data>
<flag name="review"
          id="125482"
          type_id="1"
          status="-"
          setter="haraken"
    />
    <flag name="commit-queue"
          id="125483"
          type_id="3"
          status="-"
          setter="haraken"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124279</attachid>
            <date>2012-01-27 01:56:26 -0800</date>
            <delta_ts>2012-01-27 18:32:17 -0800</delta_ts>
            <desc>Fix style and cr-linux error</desc>
            <filename>vibration.patch</filename>
            <type>text/plain</type>
            <size>25323</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNmM0MDNiLi5hYzQwNzRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDEt
MjcgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRk
IGEgbmV3IHRlc3QgY2FzZSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAxMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJh
dGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRvci12
aWJyYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0OgorCiAyMDEyLTAxLTI1ICBNaWtlIExhd3RoZXIgIDxtaWtlbGF3dGhl
ckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgdGFibGUgYm9yZGVyIHNwYWNpbmcgdGVzdCBmb3Ig
Q1NTMyBjYWxjCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3Itdmli
cmF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci12aWJy
YXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBk
YWMwOGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3It
dmlicmF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0IGZvciB0aGUgVmli
cmF0aW9uIEFQSS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZXhjZXB0
aW9uQ29kZUZvclZpYnJhdGUgaXMgMAorUEFTUyBleGNlcHRpb25Db2RlRm9yQ2FuY2VsIGlzIDAK
K1BBU1MgZXhjZXB0aW9uQ29kZUZvclZpYnJhdGVXaXRoSW52YWxpZEludFBhcmFtIGlzIERPTUV4
Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgZXhjZXB0aW9uQ29kZUZvclZpYnJhdGVX
aXRoSW52YWxpZEFycmF5UGFyYW0gaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb24uaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb24uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jN2ViNDNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5odG1sCkBAIC0wLDAgKzEsNTQgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdU
ZXN0IGZvciB0aGUgVmlicmF0aW9uIEFQSS4nKTsKKwordmFyIGV4Y2VwdGlvbkNvZGVGb3JWaWJy
YXRlID0gMDsKK3ZhciBleGNlcHRpb25Db2RlRm9yQ2FuY2VsID0gMDsKK3ZhciBleGNlcHRpb25D
b2RlRm9yVmlicmF0ZVdpdGhJbnZhbGlkSW50UGFyYW0gPSAwOwordmFyIGV4Y2VwdGlvbkNvZGVG
b3JWaWJyYXRlV2l0aEludmFsaWRBcnJheVBhcmFtID0gMDsKKwordHJ5IHsKKyAgICBuYXZpZ2F0
b3Iud2Via2l0VmlicmF0ZSgxMDAwKTsKKyAgICBuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZShbMTAw
MCwgMzAwLCA1MDBdKTsKK30KK2NhdGNoIChlKSB7CisgICAgZXhjZXB0aW9uQ29kZUZvclZpYnJh
dGUgPSBlLmNvZGU7Cit9CisKK3Nob3VsZEJlKCJleGNlcHRpb25Db2RlRm9yVmlicmF0ZSIsICIw
Iik7CisKK3RyeSB7CisgICAgbmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoMCk7CisgICAgbmF2aWdh
dG9yLndlYmtpdFZpYnJhdGUoW10pOworfQorY2F0Y2ggKGUpIHsKKyAgICBleGNlcHRpb25Db2Rl
Rm9yQ2FuY2VsID0gZS5jb2RlOworfQorCitzaG91bGRCZSgiZXhjZXB0aW9uQ29kZUZvckNhbmNl
bCIsICIwIik7CisKK3RyeSB7CisgICAgbmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoIjEwMDAiKTsK
K30KK2NhdGNoIChlKSB7CisgICAgZXhjZXB0aW9uQ29kZUZvclZpYnJhdGVXaXRoSW52YWxpZElu
dFBhcmFtID0gZS5jb2RlOworfQorCitzaG91bGRCZSgiZXhjZXB0aW9uQ29kZUZvclZpYnJhdGVX
aXRoSW52YWxpZEludFBhcmFtIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIiKTsK
KwordHJ5IHsKKyAgICBuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZShbMTAwMCwgIjIwMCIsIDUwMF0p
OworfQorY2F0Y2ggKGUpIHsKKyAgICBleGNlcHRpb25Db2RlRm9yVmlicmF0ZVdpdGhJbnZhbGlk
QXJyYXlQYXJhbSA9IGUuY29kZTsKK30KKworc2hvdWxkQmUoImV4Y2VwdGlvbkNvZGVGb3JWaWJy
YXRlV2l0aEludmFsaWRBcnJheVBhcmFtIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19F
UlIiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDdhNzA5ODIuLjRi
MzY5MTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKQEAgLTEwMSw2ICsxMDEsOSBAQCBCVUdDUjEwMzkzOSBTS0lQIDogaHR0
cC90ZXN0cy9hcHBjYWNoZS93cm9uZy1jb250ZW50LXR5cGUuaHRtbCA9IFRFWFQKIC8vIGJ1aWxk
IGZsYWcgdHVybmVkIG9uLgogQlVHR0JJTExPQ0sgU0tJUCA6IHdlYmludGVudHMgPSBGQUlMCiAK
Ky8vIFZpYnJhdGlvbiBBUEkgaXMgbm90IHN1cHBvcnRlZCB5ZXQgaW4gdGhlIGNocm9taXVtIHBv
cnQuCitCVUdXSzcyMDEwIFNLSVAgOiBmYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uLmh0bWwg
PSBGQUlMCisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBXT05URklYIFRFU1RTCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCAzNjZjMmEwLi44NDQ4YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMjIyOSw2ICsyMjI5LDE5IEBAIElGIChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJB
TUUpCiAgICAgKQogRU5ESUYgKCkKIAorSUYgKEVOQUJMRV9WSUJSQVRJT04pCisgICAgTElTVChB
UFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICR7V0VCQ09SRV9ESVJ9
L01vZHVsZXMvdmlicmF0aW9uCisgICAgKQorICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfSURMX0ZJ
TEVTCisgICAgICAgIE1vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5pZGwKKyAg
ICApCisgICAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgIE1vZHVsZXMvdmli
cmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5jcHAKKyAgICAgICAgTW9kdWxlcy92aWJyYXRpb24v
VmlicmF0aW9uLmNwcAorICAgICkKK0VORElGICgpCisKICMgTW9kdWxlcyB0aGF0IHRoZSBiaW5k
aW5ncyBnZW5lcmF0b3Igc2NyaXB0cyBtYXkgdXNlCiBTRVQoU0NSSVBUU19SRVNPTFZFX1NVUFBM
RU1FTlRBTAogICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBt
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggOTEwNjFlMi4uYzhlZmY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4
IEBACisyMDEyLTAxLTI2ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgor
CisgICAgICAgIEFkZCBhIG5ldyBBUEkgZm9yIHRoZSBWaWJyYXRpb24gQVBJKFczQykuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAxMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9kZXYudzMu
b3JnLzIwMDkvZGFwL3ZpYnJhdGlvbi8KKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIG5h
dmlnYXRvci53ZWJraXR2aWJyYXRlKCkgQVBJLgorICAgICAgICBUaGlzIEFQSSBvcGVyYXRlcyBk
aWZmZXJlbnRseSBkZXBlbmRpbmcgdXBvbiBhIGdpdmVuIHBhcmFtZXRlcjoKKyAgICAgICAgMS4g
SXQgY2FuY2VscyB2aWJyYXRpb24gd2hlbiBnaXZlbiAwIG9yIFtdLgorICAgICAgICAyLiBJdCBn
aXZlcyBhIHZpYnJhdGlvbiBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMgd2hlbiBnaXZlbiBhcyBh
IHNpbmdsZSBpbnRlZ2VyIHZhbHVlLgorICAgICAgICAzLiBJdCBnaXZlcyBhIHZpYnJhdGlvbiBw
YXR0ZXJuIHdoZW4gZ2l2ZW4gYXMgYW4gaW50ZWdlciBhcnJheS4gRm9yIGluc3RhbmNlLCBbMTAw
MCAzMDAgMTAwMF0gZ2VuZXJhdGVzIGEgdmlicmF0aW9uIG9mIDEwMDBtcyBmb2xsb3dlZCBieSAz
MDBtcyBvZiBpZGxlIHRpbWUsIGFuZCB0aGVuIGNyZWF0ZXMgYW5vdGhlciB2aWJyYXRpb24gb2Yg
MTAwMG1zLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb24uaHRt
bAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTW9kdWxlcy92aWJyYXRp
b24vTmF2aWdhdG9yVmlicmF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgICBUaGVyZSBpcyBhIHdl
YmtpdFZpYnJhdGUoKSBtZXRob2QgaW4gdGhpcyBjbGFzcy4KKyAgICAgICAgIEl0IGNoZWNrcyBp
ZiB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgdGhlIHZpYnJhdGlvbi4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yVmlicmF0aW9uOjpOYXZpZ2F0b3JWaWJyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yVmlicmF0aW9uOjp+TmF2aWdhdG9yVmli
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvclZpYnJhdGlvbjo6d2Via2l0Vmli
cmF0ZSk6CisgICAgICAgICogTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChOYXZpZ2F0b3JWaWJyYXRpb24p
OgorICAgICAgICAqIE1vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5pZGw6IEFk
ZGVkLgorICAgICAgICAgQWRkIHRoZSBbSlNDQ3VzdG9tXSB3ZWJraXR2aWJyYXRlKCkgbWV0aG9k
LCBhbmQgd2Via2l0dmlicmF0ZSgpIGlzIG9ubHkgc3VwcG9ydGVkIHdpdGggSlNDIGF0IHRoaXMg
dGltZS4KKyAgICAgICAgKiBNb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uY3BwOiBBZGRlZC4K
KyAgICAgICAgIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgZW50aXJlIHZpYnJhdGlvbiBsb2dp
Yy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uOjpWaWJy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uOjp+VmlicmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6dmlicmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWJy
YXRpb246OmNhbmNlbFZpYnJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb246OnN1
c3BlbmRWaWJyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uOjpyZXN1bWVWaWJy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uOjp0aW1lclN0YXJ0RmlyZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uOjp0aW1lclN0b3BGaXJlZCk6CisgICAgICAgICog
TW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChWaWJyYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvdmlicmF0aW9uL1ZpYnJh
dGlvbkNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgIHZpYnJhdGUoKSBhbmQgY2FuY2VsVmlicmF0
ZSgpIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgaW4gdGhlIFZpYnJhdGlvbkNsaWVudC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoVmlicmF0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlZpYnJhdGlvbkNsaWVudDo6flZpYnJhdGlvbkNsaWVudCk6CisgICAgICAgICogVXNlSlND
LmNtYWtlOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNOYXZpZ2F0b3I6OndlYmtpdFZp
YnJhdGUpOgorICAgICAgICAgQWRkIHdlYmtpdFZpYnJhdGUgbWV0aG9kIHRvIGdldCBhbiBhcnJh
eSBwYXJhbWV0ZXIuCisgICAgICAgICBUaGVyZSBpcyBubyB3YXkgdG8gZ2V0IGFuIGFycmF5IHR5
cGUgcGFyYW1ldGVyLgorICAgICAgICAgVGhpcyBtZXRob2QgY2hlY2tzIHR5cGVzIGFuZCB2YWx1
ZXMgb2YgcGFyYW1ldGVyLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2VDbGllbnRzOjpQ
YWdlQ2xpZW50cyk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKCk6CisgICAgICAgIChQYWdlQ2xpZW50cyk6CisgICAgICAgIChQYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OnZpYnJhdGlvbik6CisKIDIwMTItMDEtMjUgIFNoZXJpZmYg
Qm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIxMDU4NTguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5lYzkyMjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmNwcApAQCAtMCwwICsxLDYyIEBA
CisvKgorICogIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3JWaWJyYXRpb24uaCIK
KworI2lmIEVOQUJMRShWSUJSQVRJT04pCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKKyNpbmNsdWRlICJQYWdl
LmgiCisjaW5jbHVkZSAiVmlicmF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTmF2
aWdhdG9yVmlicmF0aW9uOjpOYXZpZ2F0b3JWaWJyYXRpb24oKQoreworfQorCitOYXZpZ2F0b3JW
aWJyYXRpb246On5OYXZpZ2F0b3JWaWJyYXRpb24oKQoreworfQorCit2b2lkIE5hdmlnYXRvclZp
YnJhdGlvbjo6d2Via2l0VmlicmF0ZShOYXZpZ2F0b3IqIG5hdmlnYXRvciwgY29uc3QgVmlicmF0
aW9uUGF0dGVybiYgcGF0dGVybiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFwYXR0
ZXJuLnNpemUoKSB8fCAhbmF2aWdhdG9yLT5mcmFtZSgpLT5wYWdlKCkpCisgICAgICAgIHJldHVy
bjsKKworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIGlmIChuYXZpZ2F0b3It
PmZyYW1lKCktPnBhZ2UoKS0+dmlzaWJpbGl0eVN0YXRlKCkgPT0gUGFnZVZpc2liaWxpdHlTdGF0
ZUhpZGRlbikKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBpZiAoIW5hdmlnYXRvci0+
ZnJhbWUoKS0+cGFnZSgpLT52aWJyYXRpb24oKSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JU
RURfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbmF2aWdhdG9yLT5mcmFtZSgp
LT5wYWdlKCktPnZpYnJhdGlvbigpLT52aWJyYXRlKHBhdHRlcm4pOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVklCUkFUSU9OKQorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZjM4OTQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24u
aApAQCAtMCwwICsxLDQ4IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVs
ZWN0cm9uaWNzCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgTmF2aWdhdG9yVmlicmF0aW9uX2gKKyNkZWZp
bmUgTmF2aWdhdG9yVmlicmF0aW9uX2gKKworI2lmIEVOQUJMRShWSUJSQVRJT04pCisKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIE5hdmlnYXRvcjsKKwordHlwZWRlZiBWZWN0b3I8bG9uZz4g
VmlicmF0aW9uUGF0dGVybjsKKworY2xhc3MgTmF2aWdhdG9yVmlicmF0aW9uIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgdm9pZCB3ZWJraXRWaWJyYXRlKE5hdmlnYXRvciosIGNvbnN0IFZpYnJhdGlv
blBhdHRlcm4mLCBFeGNlcHRpb25Db2RlJik7CisKK3ByaXZhdGU6CisgICAgTmF2aWdhdG9yVmli
cmF0aW9uKCk7CisgICAgfk5hdmlnYXRvclZpYnJhdGlvbigpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikKKworI2VuZGlmIC8vIE5h
dmlnYXRvclZpYnJhdGlvbl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
dmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjg5ZjNjNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaWRsCkBAIC0wLDAgKzEsMjkgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworbW9kdWxlIHdpbmRvdyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25h
bD1WSUJSQVRJT04sCisgICAgICAgIFN1cHBsZW1lbnRhbD1OYXZpZ2F0b3IKKyAgICBdIE5hdmln
YXRvclZpYnJhdGlvbiB7CisgICAgICAgIFtKU0NDdXN0b21dIHZvaWQgd2Via2l0VmlicmF0ZShp
biBBcnJheSBwYXR0ZXJuKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICB9OworCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTczZGJlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmNwcApAQCAtMCwwICsxLDEx
MiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlicmF0aW9uLmgiCisKKyNp
ZiBFTkFCTEUoVklCUkFUSU9OKQorCisjaW5jbHVkZSAiVmlicmF0aW9uQ2xpZW50LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworVmlicmF0aW9uOjpWaWJyYXRpb24oVmlicmF0aW9uQ2xpZW50
KiBWaWJyYXRpb25DbGllbnQpCisgICAgOiBtX3ZpYnJhdGlvbkNsaWVudChWaWJyYXRpb25DbGll
bnQpCisgICAgLCBtX3RpbWVyU3RhcnQodGhpcywgJlZpYnJhdGlvbjo6dGltZXJTdGFydEZpcmVk
KQorICAgICwgbV90aW1lclN0b3AodGhpcywgJlZpYnJhdGlvbjo6dGltZXJTdG9wRmlyZWQpCisg
ICAgLCBtX2lzVmlicmF0aW5nKGZhbHNlKQoreworfQorCitWaWJyYXRpb246On5WaWJyYXRpb24o
KQoreworICAgIG1fdmlicmF0aW9uQ2xpZW50LT52aWJyYXRpb25EZXN0cm95ZWQoKTsKK30KKwor
dm9pZCBWaWJyYXRpb246OnZpYnJhdGUoY29uc3QgVmlicmF0aW9uUGF0dGVybiYgcGF0dGVybikK
K3sKKyAgICBpbnQgbGVuZ3RoID0gcGF0dGVybi5zaXplKCk7CisKKyAgICBpZiAoIWxlbmd0aCB8
fCAobGVuZ3RoID09IDEgJiYgIXBhdHRlcm5bMF0pKSB7CisgICAgICAgIGlmIChtX2lzVmlicmF0
aW5nKQorICAgICAgICAgICAgY2FuY2VsVmlicmF0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoIW1faXNWaWJyYXRpbmcgJiYgIW1fdGltZXJTdGFydC5pc0FjdGl2ZSgp
KSB7CisgICAgICAgIG1fcGF0dGVybiA9IHBhdHRlcm47CisgICAgICAgIG1fdGltZXJTdGFydC5z
dGFydE9uZVNob3QoMCk7CisgICAgfQorfQorCit2b2lkIFZpYnJhdGlvbjo6Y2FuY2VsVmlicmF0
aW9uKCkKK3sKKyAgICBpZiAobV9pc1ZpYnJhdGluZykgeworICAgICAgICBtX3ZpYnJhdGlvbkNs
aWVudC0+Y2FuY2VsVmlicmF0aW9uKCk7CisgICAgICAgIG1faXNWaWJyYXRpbmcgPSBmYWxzZTsK
KyAgICAgICAgbV90aW1lclN0b3Auc3RvcCgpOworICAgIH0KK30KKwordm9pZCBWaWJyYXRpb246
OnN1c3BlbmRWaWJyYXRpb24oKQoreworICAgIGlmICghbV9pc1ZpYnJhdGluZykKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9wYXR0ZXJuLmluc2VydCgwLCBtX3RpbWVyU3RvcC5uZXh0RmlyZUlu
dGVydmFsKCkpOworICAgIG1fdGltZXJTdG9wLnN0b3AoKTsKKyAgICBjYW5jZWxWaWJyYXRpb24o
KTsKK30KKwordm9pZCBWaWJyYXRpb246OnJlc3VtZVZpYnJhdGlvbigpCit7CisgICAgbV90aW1l
clN0YXJ0LnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBWaWJyYXRpb246OnRpbWVyU3RhcnRG
aXJlZChUaW1lcjxWaWJyYXRpb24+KiB0aW1lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHRpbWVy
LCB0aW1lciA9PSAmbV90aW1lclN0YXJ0KTsKKworICAgIG1fdGltZXJTdGFydC5zdG9wKCk7CisK
KyAgICBpZiAobV9wYXR0ZXJuLnNpemUoKSkgeworICAgICAgICBtX2lzVmlicmF0aW5nID0gdHJ1
ZTsKKyAgICAgICAgbV92aWJyYXRpb25DbGllbnQtPnZpYnJhdGUobV9wYXR0ZXJuWzBdKTsKKyAg
ICAgICAgbV90aW1lclN0b3Auc3RhcnRPbmVTaG90KG1fcGF0dGVyblswXSAvIDEwMDAuMCk7Cisg
ICAgICAgIG1fcGF0dGVybi5yZW1vdmUoMCk7CisgICAgfQorfQorCit2b2lkIFZpYnJhdGlvbjo6
dGltZXJTdG9wRmlyZWQoVGltZXI8VmlicmF0aW9uPiogdGltZXIpCit7CisgICAgQVNTRVJUX1VO
VVNFRCh0aW1lciwgdGltZXIgPT0gJm1fdGltZXJTdG9wKTsKKworICAgIG1fdGltZXJTdG9wLnN0
b3AoKTsKKyAgICBtX2lzVmlicmF0aW5nID0gZmFsc2U7CisKKyAgICBpZiAobV9wYXR0ZXJuLnNp
emUoKSkgeworICAgICAgICBtX3RpbWVyU3RhcnQuc3RhcnRPbmVTaG90KG1fcGF0dGVyblswXSAv
IDEwMDAuMCk7CisgICAgICAgIG1fcGF0dGVybi5yZW1vdmUoMCk7CisgICAgfQorfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVklCUkFUSU9OKQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0N2FiODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uaApAQCAtMCwwICsxLDYxIEBACisv
KgorICogIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpZm5kZWYgVmlicmF0aW9uX2gKKyNkZWZpbmUgVmlicmF0aW9uX2gKKworI2lmIEVOQUJMRShW
SUJSQVRJT04pCisKKyNpbmNsdWRlICJOYXZpZ2F0b3JWaWJyYXRpb24uaCIKKyNpbmNsdWRlICJU
aW1lci5oIgorI2luY2x1ZGUgIlZpYnJhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9JbnQz
MkFycmF5Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTmF2aWdhdG9yOworCitj
bGFzcyBWaWJyYXRpb24geworcHVibGljOgorICAgIFZpYnJhdGlvbihWaWJyYXRpb25DbGllbnQq
KTsKKyAgICB+VmlicmF0aW9uKCk7CisKKyAgICB2b2lkIHZpYnJhdGUoY29uc3QgVmlicmF0aW9u
UGF0dGVybiYpOworICAgIHZvaWQgY2FuY2VsVmlicmF0aW9uKCk7CisKKyAgICAvLyBGSVhNRSA6
IEFkZCBzdXNwZW5kVmlicmF0aW9uKCkgYW5kIHJlc3VtZVZpYnJhdGlvbigpIHRvIHRoZSBwYWdl
IHZpc2liaWxpdHkgZmVhdHVyZSwgd2hlbiB0aGUgZG9jdW1lbnQuaGlkZGVuIGF0dHJpYnV0ZSBp
cyBjaGFuZ2VkLgorICAgIHZvaWQgc3VzcGVuZFZpYnJhdGlvbigpOworICAgIHZvaWQgcmVzdW1l
VmlicmF0aW9uKCk7CisgICAgdm9pZCB0aW1lclN0YXJ0RmlyZWQoVGltZXI8VmlicmF0aW9uPiop
OworICAgIHZvaWQgdGltZXJTdG9wRmlyZWQoVGltZXI8VmlicmF0aW9uPiopOworCitwcml2YXRl
OgorICAgIFZpYnJhdGlvbkNsaWVudCogbV92aWJyYXRpb25DbGllbnQ7CisgICAgVGltZXI8Vmli
cmF0aW9uPiBtX3RpbWVyU3RhcnQ7CisgICAgVGltZXI8VmlicmF0aW9uPiBtX3RpbWVyU3RvcDsK
KyAgICBib29sIG1faXNWaWJyYXRpbmc7CisgICAgVmlicmF0aW9uUGF0dGVybiBtX3BhdHRlcm47
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVklCUkFU
SU9OKQorCisjZW5kaWYgLy8gVmlicmF0aW9uX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40YTk1ZGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uQ2xpZW50LmgKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aWZuZGVmIFZpYnJhdGlvbkNsaWVudF9oCisjZGVmaW5lIFZpYnJhdGlvbkNsaWVudF9oCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmlicmF0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5WaWJyYXRpb25DbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aWJy
YXRlKGNvbnN0IGxvbmcmIHRpbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVmlicmF0
aW9uKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHZpYnJhdGlvbkRlc3Ryb3llZCgpID0gMDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFZpYnJhdGlvbkNsaWVu
dF9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1VzZUpTQy5jbWFrZQppbmRleCAzOGU2NzMxLi5lYTE5Yzc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNt
YWtlCkBAIC0yNDUsNiArMjQ1LDEyIEBAIElGIChFTkFCTEVfV0VCR0wpCiAgICAgKQogRU5ESUYg
KCkKIAorSUYgKEVOQUJMRV9WSUJSQVRJT04pCisgICAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCisgICAgICAgIGJpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAorICAgICkKK0VO
RElGICgpCisKIExJU1QoQVBQRU5EIFNDUklQVFNfQklORElOR1MKICAgICAke1dFQkNPUkVfRElS
fS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KICkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAppbmRleCAyZDhkNDlkLi44YTI4
Y2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0
b20uY3BwCkBAIC00LDYgKzQsNyBAQAogICogIENvcHlyaWdodCAoYykgMjAwMCBTdGVmYW4gU2No
aW1hbnNraSAoc2NoaW1taUBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQorICogIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yNSwxMCArMjYsMTYgQEAKIAogI2luY2x1ZGUg
IkNhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKICNpbmNsdWRlICJKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2Fs
bGJhY2suaCIKICNpbmNsdWRlICJKU05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5o
IgorI2VuZGlmCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAKKyNpZiBFTkFCTEUoVklCUkFUSU9O
KQorI2luY2x1ZGUgIk5hdmlnYXRvclZpYnJhdGlvbi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTYwLDQgKzY3LDQ5IEBAIEpTVmFs
dWUgSlNOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYShFeGVjU3RhdGUqIGV4ZWMpCiB9CiAj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2lmIEVOQUJMRShWSUJSQVRJT04pCitK
U1ZhbHVlIEpTTmF2aWdhdG9yOjp3ZWJraXRWaWJyYXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICBWaWJyYXRpb25QYXR0ZXJuIHBhdHRlcm47CisgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50
KCkpCisgICAgICAgIHBhdHRlcm4uYXBwZW5kKDApOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4
ZWMtPmFyZ3VtZW50KDApOworICAgIHVuc2lnbmVkIGxlbmd0aDsKKyAgICBpZiAodmFsdWUuaXNV
SW50MzIoKSkKKyAgICAgICAgcGF0dGVybi5hcHBlbmQodmFsdWUuYXNJbnQzMigpKTsKKyAgICBl
bHNlIGlmIChKU09iamVjdCogb2JqZWN0ID0gdG9KU1NlcXVlbmNlKGV4ZWMsIHZhbHVlLCBsZW5n
dGgpKSB7CisgICAgICAgIGlmICghbGVuZ3RoKQorICAgICAgICAgICAgcGF0dGVybi5hcHBlbmQo
MCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgICAgICB2YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIGkpOworICAgICAgICAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworCisgICAgICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSB8fCAhdmFs
dWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBJ
TlZBTElEX0FDQ0VTU19FUlIpOworICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodmFsdWUuaXNVSW50MzIoKSkKKyAg
ICAgICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZCh2YWx1ZS5hc0ludDMyKCkpOworICAgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIElOVkFMSURfQUNDRVNTX0VSUik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIE5hdmlnYXRvclZpYnJhdGlv
bjo6d2Via2l0VmlicmF0ZShtX2ltcGwsIHBhdHRlcm4sIGVjKTsKKworICAgIGlmIChlYykKKyAg
ICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKworICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDBjNmZmNTUuLjk3MjU1
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtOTAsNiArOTAsMTAgQEAKICNpbmNsdWRlICJTY3Jv
bGxpbmdDb29yZGluYXRvci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorI2lu
Y2x1ZGUgIlZpYnJhdGlvbi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIEhhc2hTZXQ8UGFnZSo+KiBhbGxQYWdlczsKQEAgLTE4Miw2ICsxODYsOSBAQCBQYWdlOjpQ
YWdlKFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50cykKICAgICAsIG1fdmlzaWJpbGl0eVN0YXRlKFBh
Z2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKQogI2VuZGlmCiAgICAgLCBtX2Rpc3BsYXlJRCgwKQor
I2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgLCBtX3ZpYnJhdGlvbihhZG9wdFB0cihuZXcgVmli
cmF0aW9uKHBhZ2VDbGllbnRzLnZpYnJhdGlvbkNsaWVudCkpKQorI2VuZGlmCiB7CiAgICAgaWYg
KCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5ldyBIYXNoU2V0PFBhZ2UqPjsKQEAg
LTEwODgsNiArMTA5NSw5IEBAIFBhZ2U6OlBhZ2VDbGllbnRzOjpQYWdlQ2xpZW50cygpCiAgICAg
LCBzcGVlY2hJbnB1dENsaWVudCgwKQogICAgICwgbm90aWZpY2F0aW9uQ2xpZW50KDApCiAgICAg
LCB1c2VyTWVkaWFDbGllbnQoMCkKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICwgdmlicmF0
aW9uQ2xpZW50KDApCisjZW5kaWYKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBlZjFkMWQ5Li5m
NjM0YTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtOTAsNiArOTAsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIGNsYXNzIE5vdGlmaWNhdGlvblBy
ZXNlbnRlcjsKICNlbmRpZgorI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgY2xhc3MgVmlicmF0
aW9uOworICAgIGNsYXNzIFZpYnJhdGlvbkNsaWVudDsKKyNlbmRpZgogCiAgICAgdHlwZWRlZiB1
aW50NjRfdCBMaW5rSGFzaDsKIApAQCAtMTIyLDYgKzEyNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgIFNwZWVjaElucHV0Q2xpZW50KiBzcGVlY2hJbnB1dENsaWVudDsKICAg
ICAgICAgICAgIE5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uQ2xpZW50OwogICAg
ICAgICAgICAgVXNlck1lZGlhQ2xpZW50KiB1c2VyTWVkaWFDbGllbnQ7CisjaWYgRU5BQkxFKFZJ
QlJBVElPTikKKyAgICAgICAgICAgIFZpYnJhdGlvbkNsaWVudCogdmlicmF0aW9uQ2xpZW50Owor
I2VuZGlmCiAgICAgICAgIH07CiAKICAgICAgICAgUGFnZShQYWdlQ2xpZW50cyYpOwpAQCAtMzQ4
LDcgKzM1NSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgICAgICBQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQot
ICAgICAgICAKKworI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgICAgIFZpYnJhdGlvbiogdmli
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92aWJyYXRpb24uZ2V0KCk7IH0KKyNlbmRpZgorCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBpbml0R3JvdXAoKTsKIApAQCAtNDYyLDYgKzQ3Mywx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBhZ2VWaXNpYmlsaXR5U3RhdGUgbV92
aXNpYmlsaXR5U3RhdGU7CiAjZW5kaWYKICAgICAgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNw
bGF5SUQ7CisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICAgICAgT3duUHRyPFZpYnJhdGlvbj4g
bV92aWJyYXRpb247CisjZW5kaWYKKwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4ZDQ5
MGMwLi5hYjM1MzZlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDEtMjYgIEtpaG9uZyBLd29uICA8a2lob25n
Lmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRkIGEgbmV3IEFQSSBmb3IgdGhlIFZpYnJh
dGlvbiBBUEkoVzNDKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcyMDEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9kYXAvdmlicmF0aW9uLworCisgICAgICAgICog
U2NyaXB0cy9idWlsZC13ZWJraXQ6IEFkZCBFTkFCTEVfVklCUkFUSU9OIGZlYXR1cmUuCisKIDIw
MTItMDEtMjUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBUZW1w
b3JhcmlseSBkaXNhYmxlIHJ1bm5pbmcgdGhlIHVuaXQgdGVzdHMgb24gdGhlIENocm9taXVtIEVX
Uy4gIFRoZXNlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCBiL1Rvb2xz
L1NjcmlwdHMvYnVpbGQtd2Via2l0CmluZGV4IGI5Yjk5NzIuLmQ3M2RlOGQgMTAwNzU1Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CisrKyBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Vi
a2l0CkBAIC0xMjYsNiArMTI2LDcgQEAgbXkgKAogICAgICR0aWxlZEJhY2tpbmdTdG9yZVN1cHBv
cnQsCiAgICAgJHRvdWNoRXZlbnRzU3VwcG9ydCwKICAgICAkdG91Y2hJY29uTG9hZGluZ1N1cHBv
cnQsCisgICAgJHZpYnJhdGlvblN1cHBvcnQsCiAgICAgJHZpZGVvU3VwcG9ydCwKICAgICAkdmlk
ZW9UcmFja1N1cHBvcnQsCiAgICAgJHdlYkF1ZGlvU3VwcG9ydCwKQEAgLTMyMCw2ICszMjEsOSBA
QCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gInRvdWNoLWljb24tbG9hZGluZyIs
IGRlc2MgPT4gIlRvZ2dsZSBUb3VjaCBJY29uIExvYWRpbmcgU3VwcG9ydCIsCiAgICAgICBkZWZp
bmUgPT4gIkVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkciLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+
IFwkdG91Y2hJY29uTG9hZGluZ1N1cHBvcnQgfSwKIAorICAgIHsgb3B0aW9uID0+ICJ2aWJyYXRp
b24iLCBkZXNjID0+ICJUb2dnbGUgVmlkZW8gc3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVO
QUJMRV9WSUJSQVRJT04iLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkdmlicmF0aW9uU3VwcG9y
dCB9LAorCiAgICAgeyBvcHRpb24gPT4gInZpZGVvIiwgZGVzYyA9PiAiVG9nZ2xlIFZpZGVvIHN1
cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVklERU8iLCBkZWZhdWx0ID0+IChpc0Fw
cGxlV2ViS2l0KCkgfHwgaXNHdGsoKSB8fCBpc0JsYWNrQmVycnkoKSksIHZhbHVlID0+IFwkdmlk
ZW9TdXBwb3J0IH0sCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124419</attachid>
            <date>2012-01-27 18:32:17 -0800</date>
            <delta_ts>2012-01-29 21:58:36 -0800</delta_ts>
            <desc>Add navigator-vibration.html to the skipped lists.</desc>
            <filename>vibration.patch</filename>
            <type>text/plain</type>
            <size>28003</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNmM0MDNiLi5mNzhiYzEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDEt
MjcgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRk
IGEgbmV3IHRlc3QgY2FzZSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAxMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJh
dGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRvci12
aWJyYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6
CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2lu
Y2Fpcm8vU2tpcHBlZDoKKwogMjAxMi0wMS0yNSAgTWlrZSBMYXd0aGVyICA8bWlrZWxhd3RoZXJA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIHRhYmxlIGJvcmRlciBzcGFjaW5nIHRlc3QgZm9yIENT
UzMgY2FsYwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJh
dGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0
aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTZk
ZTlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZp
YnJhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdCBmb3IgdGhlIFZpYnJh
dGlvbiBBUEkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5hdmlnYXRv
ci53ZWJraXRWaWJyYXRlKDEwMDApOyBuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZShbMTAwMCwgMzAw
LCA1MDBdKTsgaXMgdW5kZWZpbmVkCitQQVNTIG5hdmlnYXRvci53ZWJraXRWaWJyYXRlKDApOyBu
YXZpZ2F0b3Iud2Via2l0VmlicmF0ZShbXSk7IGlzIHVuZGVmaW5lZAorUEFTUyBuYXZpZ2F0b3Iu
d2Via2l0VmlicmF0ZSgiMTAwMCIpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfQUND
RVNTX0VSUjogRE9NIEV4Y2VwdGlvbiAxNS4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdFZpYnJhdGUo
WzEwMDAsICIyMDAiLCA1MDBdKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX0FDQ0VT
U19FUlI6IERPTSBFeGNlcHRpb24gMTUuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2
aWdhdG9yLXZpYnJhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZp
YnJhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkZjdiYzMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0
aW9uLmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgZm9yIHRoZSBWaWJyYXRpb24gQVBJLicpOwor
Cit2YXIgZXhjZXB0aW9uQ29kZUZvclZpYnJhdGUgPSAwOwordmFyIGV4Y2VwdGlvbkNvZGVGb3JD
YW5jZWwgPSAwOwordmFyIGV4Y2VwdGlvbkNvZGVGb3JWaWJyYXRlV2l0aEludmFsaWRJbnRQYXJh
bSA9IDA7Cit2YXIgZXhjZXB0aW9uQ29kZUZvclZpYnJhdGVXaXRoSW52YWxpZEFycmF5UGFyYW0g
PSAwOworCitzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoMTAwMCk7IG5hdmlnYXRv
ci53ZWJraXRWaWJyYXRlKFsxMDAwLCAzMDAsIDUwMF0pOyIsICJ1bmRlZmluZWQiKTsKK3Nob3Vs
ZEJlKCJuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZSgwKTsgbmF2aWdhdG9yLndlYmtpdFZpYnJhdGUo
W10pOyIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZFRocm93KCduYXZpZ2F0b3Iud2Via2l0VmlicmF0
ZSgiMTAwMCIpOycpOworc2hvdWxkVGhyb3coJ25hdmlnYXRvci53ZWJraXRWaWJyYXRlKFsxMDAw
LCAiMjAwIiwgNTAwXSk7Jyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRl
eCA3YTcwOTgyLi40YjM2OTE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0xMDEsNiArMTAxLDkgQEAgQlVHQ1IxMDM5
MzkgU0tJUCA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvd3JvbmctY29udGVudC10eXBlLmh0bWwgPSBU
RVhUCiAvLyBidWlsZCBmbGFnIHR1cm5lZCBvbi4KIEJVR0dCSUxMT0NLIFNLSVAgOiB3ZWJpbnRl
bnRzID0gRkFJTAogCisvLyBWaWJyYXRpb24gQVBJIGlzIG5vdCBzdXBwb3J0ZWQgeWV0IGluIHRo
ZSBjaHJvbWl1bSBwb3J0LgorQlVHV0s3MjAxMCBTS0lQIDogZmFzdC9kb20vbmF2aWdhdG9yLXZp
YnJhdGlvbi5odG1sID0gRkFJTAorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gV09OVEZJWCBURVNUUwogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggMzRkOTdjYi4uNGU2YWI2NCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTM4Niw2ICszODYsOSBAQCBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3dlYmdsLXJlbW90ZS1yZWFkLXJlbW90ZS1pbWFnZS1hbGxvd2VkLmh0bWwKIGh0
dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdlLWJsb2NrZWQt
bm8tY3Jvc3NvcmlnaW4uaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0eS93ZWJnbC1yZW1vdGUtcmVh
ZC1yZW1vdGUtaW1hZ2UtYWxsb3dlZC13aXRoLWNyZWRlbnRpYWxzLmh0bWwKIAorI1ZpYnJhdGlv
biBBUEkgc3VwcG9ydCBub3QgeWV0LiBodHRwOi8vd2Via2l0Lm9yZy9iLzcyMDEwCitmYXN0L2Rv
bS9uYXZpZ2F0b3ItdmlicmF0aW9uLmh0bWwKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBU
RVNUUyBGQUlMSU5HCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lw
cGVkCmluZGV4IDllNmRkNjYuLjI1MzNkYTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBA
IC01NDEsMyArNTQxLDcgQEAgbWVkaWEvVzNDL3ZpZGVvL2NhblBsYXlUeXBlL2NhblBsYXlUeXBl
X3R3b19pbXBsaWVzX29uZV8zLmh0bWwKIG1lZGlhL1czQy92aWRlby9jYW5QbGF5VHlwZS9jYW5Q
bGF5VHlwZV90d29faW1wbGllc19vbmVfNC5odG1sCiBtZWRpYS9XM0MvdmlkZW8vY2FuUGxheVR5
cGUvY2FuUGxheVR5cGVfdHdvX2ltcGxpZXNfb25lXzUuaHRtbAogbWVkaWEvVzNDL3ZpZGVvL2Nh
blBsYXlUeXBlL2NhblBsYXlUeXBlX3R3b19pbXBsaWVzX29uZV82Lmh0bWwKKworIyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwMTAKKyMgTmVlZHMgUGFnZUNsaWVu
dHM6OnZpYnJhdGlvbkNsaWVudCgpIGltcGxlbWVudGF0aW9uLgorZmFzdC9kb20vbmF2aWdhdG9y
LXZpYnJhdGlvbi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lw
cGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCAyNDkxNGM3Li40NTc4
OTUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTMxNiw2ICszMTYsOSBAQCBmYXN0L3Bh
cnNlci9wcmUtaHRtbDUtcGFyc2VyLXF1aXJrcy5odG1sCiAjIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MjM2MwogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVz
c2FnZS1hcnJheXMuaHRtbAogCisjVmlicmF0aW9uIEFQSSBpcyBub3QgaW1wbGVtZW50ZWQuCitm
YXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uLmh0bWwKKwogIyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0g
IwogIyAgICAgICBEcmFnIGFuZCBEcm9wIFN1cHBvcnQgaW4gRFJULiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vU2tpcHBlZAppbmRleCAxYzJlYTYyLi45NmIwZGRlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vU2tpcHBlZApAQCAtMTYwOCwzICsxNjA4LDYgQEAgZmFzdC9jc3MvYmlkaS1vdmVycmlkZS1p
bi1hbm9ueW1vdXMtYmxvY2suaHRtbAogZmFzdC9kb20vSFRNTFRhYmxlRWxlbWVudC9jb2xTcGFu
Lmh0bWwKIGZhc3QvZG9tL0hUTUxUYWJsZUVsZW1lbnQvY3JlYXRlQ2FwdGlvbi5odG1sCiBmYXN0
L3JlcGFpbnQvdGFibGUtc2VjdGlvbi1yZXBhaW50Lmh0bWwKKworI1ZpYnJhdGlvbiBBUEkgaXMg
bm90IGltcGxlbWVudGVkLgorZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5odG1sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAppbmRleCBjNjA3MjY5Li41YzUzOTNmIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKQEAgLTIwMzgsMyArMjAzOCw2IEBAIGZh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJyYXlzLmh0bWwKIAogIyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM0OTMKIGZhc3QvY2FudmFzL3dlYmds
L2FycmF5YnVmZmVyLXRyYW5zZmVyLW9mLWNvbnRyb2wuaHRtbAorCisjVmlicmF0aW9uIEFQSSBp
cyBub3QgaW1wbGVtZW50ZWQuCitmYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uLmh0bWwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggMzY2YzJhMC4uODQ0OGM0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTIyMjksNiArMjIyOSwxOSBAQCBJRiAoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FKQogICAgICkKIEVORElGICgpCiAKK0lGIChFTkFCTEVfVklCUkFUSU9OKQorICAgIExJU1Qo
QVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICAgICAke1dFQkNPUkVfRElS
fS9Nb2R1bGVzL3ZpYnJhdGlvbgorICAgICkKKyAgICBMSVNUKEFQUEVORCBXZWJDb3JlX0lETF9G
SUxFUworICAgICAgICBNb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaWRsCisg
ICAgKQorICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBNb2R1bGVzL3Zp
YnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uY3BwCisgICAgICAgIE1vZHVsZXMvdmlicmF0aW9u
L1ZpYnJhdGlvbi5jcHAKKyAgICApCitFTkRJRiAoKQorCiAjIE1vZHVsZXMgdGhhdCB0aGUgYmlu
ZGluZ3MgZ2VuZXJhdG9yIHNjcmlwdHMgbWF5IHVzZQogU0VUKFNDUklQVFNfUkVTT0xWRV9TVVBQ
TEVNRU5UQUwKICAgICAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5w
bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDkxMDYxZTIuLmM4ZWZmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
OCBAQAorMjAxMi0wMS0yNiAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4K
KworICAgICAgICBBZGQgYSBuZXcgQVBJIGZvciB0aGUgVmlicmF0aW9uIEFQSShXM0MpLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwMTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwOi8vZGV2Lncz
Lm9yZy8yMDA5L2RhcC92aWJyYXRpb24vCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBu
YXZpZ2F0b3Iud2Via2l0dmlicmF0ZSgpIEFQSS4KKyAgICAgICAgVGhpcyBBUEkgb3BlcmF0ZXMg
ZGlmZmVyZW50bHkgZGVwZW5kaW5nIHVwb24gYSBnaXZlbiBwYXJhbWV0ZXI6CisgICAgICAgIDEu
IEl0IGNhbmNlbHMgdmlicmF0aW9uIHdoZW4gZ2l2ZW4gMCBvciBbXS4KKyAgICAgICAgMi4gSXQg
Z2l2ZXMgYSB2aWJyYXRpb24gZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzIHdoZW4gZ2l2ZW4gYXMg
YSBzaW5nbGUgaW50ZWdlciB2YWx1ZS4KKyAgICAgICAgMy4gSXQgZ2l2ZXMgYSB2aWJyYXRpb24g
cGF0dGVybiB3aGVuIGdpdmVuIGFzIGFuIGludGVnZXIgYXJyYXkuIEZvciBpbnN0YW5jZSwgWzEw
MDAgMzAwIDEwMDBdIGdlbmVyYXRlcyBhIHZpYnJhdGlvbiBvZiAxMDAwbXMgZm9sbG93ZWQgYnkg
MzAwbXMgb2YgaWRsZSB0aW1lLCBhbmQgdGhlbiBjcmVhdGVzIGFub3RoZXIgdmlicmF0aW9uIG9m
IDEwMDBtcy4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uLmh0
bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIE1vZHVsZXMvdmlicmF0
aW9uL05hdmlnYXRvclZpYnJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAgVGhlcmUgaXMgYSB3
ZWJraXRWaWJyYXRlKCkgbWV0aG9kIGluIHRoaXMgY2xhc3MuCisgICAgICAgICBJdCBjaGVja3Mg
aWYgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIHRoZSB2aWJyYXRpb24uCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvclZpYnJhdGlvbjo6TmF2aWdhdG9yVmlicmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvclZpYnJhdGlvbjo6fk5hdmlnYXRvclZp
YnJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JWaWJyYXRpb246OndlYmtpdFZp
YnJhdGUpOgorICAgICAgICAqIE1vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTmF2aWdhdG9yVmlicmF0aW9u
KToKKyAgICAgICAgKiBNb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaWRsOiBB
ZGRlZC4KKyAgICAgICAgIEFkZCB0aGUgW0pTQ0N1c3RvbV0gd2Via2l0dmlicmF0ZSgpIG1ldGhv
ZCwgYW5kIHdlYmtpdHZpYnJhdGUoKSBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIEpTQyBhdCB0aGlz
IHRpbWUuCisgICAgICAgICogTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmNwcDogQWRkZWQu
CisgICAgICAgICBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIGVudGlyZSB2aWJyYXRpb24gbG9n
aWMuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6Vmli
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6flZpYnJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpWaWJyYXRpb246OnZpYnJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Vmli
cmF0aW9uOjpjYW5jZWxWaWJyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uOjpz
dXNwZW5kVmlicmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6cmVzdW1lVmli
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6dGltZXJTdGFydEZpcmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6dGltZXJTdG9wRmlyZWQpOgorICAgICAgICAq
IE1vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoVmlicmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3ZpYnJhdGlvbi9WaWJy
YXRpb25DbGllbnQuaDogQWRkZWQuCisgICAgICAgICB2aWJyYXRlKCkgYW5kIGNhbmNlbFZpYnJh
dGUoKSBuZWVkIHRvIGJlIGltcGxlbWVudGVkIGluIHRoZSBWaWJyYXRpb25DbGllbnQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFZpYnJhdGlvbkNsaWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpWaWJyYXRpb25DbGllbnQ6On5WaWJyYXRpb25DbGllbnQpOgorICAgICAgICAqIFVzZUpT
Qy5jbWFrZToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTmF2aWdhdG9yOjp3ZWJraXRW
aWJyYXRlKToKKyAgICAgICAgIEFkZCB3ZWJraXRWaWJyYXRlIG1ldGhvZCB0byBnZXQgYW4gYXJy
YXkgcGFyYW1ldGVyLgorICAgICAgICAgVGhlcmUgaXMgbm8gd2F5IHRvIGdldCBhbiBhcnJheSB0
eXBlIHBhcmFtZXRlci4KKyAgICAgICAgIFRoaXMgbWV0aG9kIGNoZWNrcyB0eXBlcyBhbmQgdmFs
dWVzIG9mIHBhcmFtZXRlci4KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlQ2xpZW50czo6
UGFnZUNsaWVudHMpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICgpOgorICAgICAgICAoUGFnZUNsaWVudHMpOgorICAgICAgICAoUGFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjp2aWJyYXRpb24pOgorCiAyMDEyLTAxLTI1ICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTA1ODU4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZWM5MjIxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5jcHAKQEAgLTAsMCArMSw2MiBA
QAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmF2aWdhdG9yVmlicmF0aW9uLmgi
CisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgor
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCisjaW5jbHVkZSAiUGFn
ZS5oIgorI2luY2x1ZGUgIlZpYnJhdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05h
dmlnYXRvclZpYnJhdGlvbjo6TmF2aWdhdG9yVmlicmF0aW9uKCkKK3sKK30KKworTmF2aWdhdG9y
VmlicmF0aW9uOjp+TmF2aWdhdG9yVmlicmF0aW9uKCkKK3sKK30KKwordm9pZCBOYXZpZ2F0b3JW
aWJyYXRpb246OndlYmtpdFZpYnJhdGUoTmF2aWdhdG9yKiBuYXZpZ2F0b3IsIGNvbnN0IFZpYnJh
dGlvblBhdHRlcm4mIHBhdHRlcm4sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghcGF0
dGVybi5zaXplKCkgfHwgIW5hdmlnYXRvci0+ZnJhbWUoKS0+cGFnZSgpKQorICAgICAgICByZXR1
cm47CisKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBpZiAobmF2aWdhdG9y
LT5mcmFtZSgpLT5wYWdlKCktPnZpc2liaWxpdHlTdGF0ZSgpID09IFBhZ2VWaXNpYmlsaXR5U3Rh
dGVIaWRkZW4pCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCisgICAgaWYgKCFuYXZpZ2F0b3It
PmZyYW1lKCktPnBhZ2UoKS0+dmlicmF0aW9uKCkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9S
VEVEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG5hdmlnYXRvci0+ZnJhbWUo
KS0+cGFnZSgpLT52aWJyYXRpb24oKS0+dmlicmF0ZShwYXR0ZXJuKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWYzODk0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9u
LmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBF
bGVjdHJvbmljcworICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIE5hdmlnYXRvclZpYnJhdGlvbl9oCisjZGVm
aW5lIE5hdmlnYXRvclZpYnJhdGlvbl9oCisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorCisjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBOYXZpZ2F0b3I7CisKK3R5cGVkZWYgVmVjdG9yPGxvbmc+
IFZpYnJhdGlvblBhdHRlcm47CisKK2NsYXNzIE5hdmlnYXRvclZpYnJhdGlvbiB7CitwdWJsaWM6
CisgICAgc3RhdGljIHZvaWQgd2Via2l0VmlicmF0ZShOYXZpZ2F0b3IqLCBjb25zdCBWaWJyYXRp
b25QYXR0ZXJuJiwgRXhjZXB0aW9uQ29kZSYpOworCitwcml2YXRlOgorICAgIE5hdmlnYXRvclZp
YnJhdGlvbigpOworICAgIH5OYXZpZ2F0b3JWaWJyYXRpb24oKTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShWSUJSQVRJT04pCisKKyNlbmRpZiAvLyBO
YXZpZ2F0b3JWaWJyYXRpb25faAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi44OWYzYzU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmlkbApAQCAtMCwwICsxLDI5IEBA
CisvKgorICogIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKK21vZHVsZSB3aW5kb3cgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9u
YWw9VklCUkFUSU9OLAorICAgICAgICBTdXBwbGVtZW50YWw9TmF2aWdhdG9yCisgICAgXSBOYXZp
Z2F0b3JWaWJyYXRpb24geworICAgICAgICBbSlNDQ3VzdG9tXSB2b2lkIHdlYmtpdFZpYnJhdGUo
aW4gQXJyYXkgcGF0dGVybikgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgfTsKKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE3M2RiZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5jcHAKQEAgLTAsMCArMSwx
MTIgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpYnJhdGlvbi5oIgorCisj
aWYgRU5BQkxFKFZJQlJBVElPTikKKworI2luY2x1ZGUgIlZpYnJhdGlvbkNsaWVudC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1ZpYnJhdGlvbjo6VmlicmF0aW9uKFZpYnJhdGlvbkNsaWVu
dCogVmlicmF0aW9uQ2xpZW50KQorICAgIDogbV92aWJyYXRpb25DbGllbnQoVmlicmF0aW9uQ2xp
ZW50KQorICAgICwgbV90aW1lclN0YXJ0KHRoaXMsICZWaWJyYXRpb246OnRpbWVyU3RhcnRGaXJl
ZCkKKyAgICAsIG1fdGltZXJTdG9wKHRoaXMsICZWaWJyYXRpb246OnRpbWVyU3RvcEZpcmVkKQor
ICAgICwgbV9pc1ZpYnJhdGluZyhmYWxzZSkKK3sKK30KKworVmlicmF0aW9uOjp+VmlicmF0aW9u
KCkKK3sKKyAgICBtX3ZpYnJhdGlvbkNsaWVudC0+dmlicmF0aW9uRGVzdHJveWVkKCk7Cit9CisK
K3ZvaWQgVmlicmF0aW9uOjp2aWJyYXRlKGNvbnN0IFZpYnJhdGlvblBhdHRlcm4mIHBhdHRlcm4p
Cit7CisgICAgaW50IGxlbmd0aCA9IHBhdHRlcm4uc2l6ZSgpOworCisgICAgaWYgKCFsZW5ndGgg
fHwgKGxlbmd0aCA9PSAxICYmICFwYXR0ZXJuWzBdKSkgeworICAgICAgICBpZiAobV9pc1ZpYnJh
dGluZykKKyAgICAgICAgICAgIGNhbmNlbFZpYnJhdGlvbigpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKCFtX2lzVmlicmF0aW5nICYmICFtX3RpbWVyU3RhcnQuaXNBY3RpdmUo
KSkgeworICAgICAgICBtX3BhdHRlcm4gPSBwYXR0ZXJuOworICAgICAgICBtX3RpbWVyU3RhcnQu
c3RhcnRPbmVTaG90KDApOworICAgIH0KK30KKwordm9pZCBWaWJyYXRpb246OmNhbmNlbFZpYnJh
dGlvbigpCit7CisgICAgaWYgKG1faXNWaWJyYXRpbmcpIHsKKyAgICAgICAgbV92aWJyYXRpb25D
bGllbnQtPmNhbmNlbFZpYnJhdGlvbigpOworICAgICAgICBtX2lzVmlicmF0aW5nID0gZmFsc2U7
CisgICAgICAgIG1fdGltZXJTdG9wLnN0b3AoKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlicmF0aW9u
OjpzdXNwZW5kVmlicmF0aW9uKCkKK3sKKyAgICBpZiAoIW1faXNWaWJyYXRpbmcpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fcGF0dGVybi5pbnNlcnQoMCwgbV90aW1lclN0b3AubmV4dEZpcmVJ
bnRlcnZhbCgpKTsKKyAgICBtX3RpbWVyU3RvcC5zdG9wKCk7CisgICAgY2FuY2VsVmlicmF0aW9u
KCk7Cit9CisKK3ZvaWQgVmlicmF0aW9uOjpyZXN1bWVWaWJyYXRpb24oKQoreworICAgIG1fdGlt
ZXJTdGFydC5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgVmlicmF0aW9uOjp0aW1lclN0YXJ0
RmlyZWQoVGltZXI8VmlicmF0aW9uPiogdGltZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1l
ciwgdGltZXIgPT0gJm1fdGltZXJTdGFydCk7CisKKyAgICBtX3RpbWVyU3RhcnQuc3RvcCgpOwor
CisgICAgaWYgKG1fcGF0dGVybi5zaXplKCkpIHsKKyAgICAgICAgbV9pc1ZpYnJhdGluZyA9IHRy
dWU7CisgICAgICAgIG1fdmlicmF0aW9uQ2xpZW50LT52aWJyYXRlKG1fcGF0dGVyblswXSk7Cisg
ICAgICAgIG1fdGltZXJTdG9wLnN0YXJ0T25lU2hvdChtX3BhdHRlcm5bMF0gLyAxMDAwLjApOwor
ICAgICAgICBtX3BhdHRlcm4ucmVtb3ZlKDApOworICAgIH0KK30KKwordm9pZCBWaWJyYXRpb246
OnRpbWVyU3RvcEZpcmVkKFRpbWVyPFZpYnJhdGlvbj4qIHRpbWVyKQoreworICAgIEFTU0VSVF9V
TlVTRUQodGltZXIsIHRpbWVyID09ICZtX3RpbWVyU3RvcCk7CisKKyAgICBtX3RpbWVyU3RvcC5z
dG9wKCk7CisgICAgbV9pc1ZpYnJhdGluZyA9IGZhbHNlOworCisgICAgaWYgKG1fcGF0dGVybi5z
aXplKCkpIHsKKyAgICAgICAgbV90aW1lclN0YXJ0LnN0YXJ0T25lU2hvdChtX3BhdHRlcm5bMF0g
LyAxMDAwLjApOworICAgICAgICBtX3BhdHRlcm4ucmVtb3ZlKDApOworICAgIH0KK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDdhYjg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmgKQEAgLTAsMCArMSw2MSBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaWZuZGVmIFZpYnJhdGlvbl9oCisjZGVmaW5lIFZpYnJhdGlvbl9oCisKKyNpZiBFTkFCTEUo
VklCUkFUSU9OKQorCisjaW5jbHVkZSAiTmF2aWdhdG9yVmlicmF0aW9uLmgiCisjaW5jbHVkZSAi
VGltZXIuaCIKKyNpbmNsdWRlICJWaWJyYXRpb25DbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvSW50
MzJBcnJheS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5hdmlnYXRvcjsKKwor
Y2xhc3MgVmlicmF0aW9uIHsKK3B1YmxpYzoKKyAgICBWaWJyYXRpb24oVmlicmF0aW9uQ2xpZW50
Kik7CisgICAgflZpYnJhdGlvbigpOworCisgICAgdm9pZCB2aWJyYXRlKGNvbnN0IFZpYnJhdGlv
blBhdHRlcm4mKTsKKyAgICB2b2lkIGNhbmNlbFZpYnJhdGlvbigpOworCisgICAgLy8gRklYTUUg
OiBBZGQgc3VzcGVuZFZpYnJhdGlvbigpIGFuZCByZXN1bWVWaWJyYXRpb24oKSB0byB0aGUgcGFn
ZSB2aXNpYmlsaXR5IGZlYXR1cmUsIHdoZW4gdGhlIGRvY3VtZW50LmhpZGRlbiBhdHRyaWJ1dGUg
aXMgY2hhbmdlZC4KKyAgICB2b2lkIHN1c3BlbmRWaWJyYXRpb24oKTsKKyAgICB2b2lkIHJlc3Vt
ZVZpYnJhdGlvbigpOworICAgIHZvaWQgdGltZXJTdGFydEZpcmVkKFRpbWVyPFZpYnJhdGlvbj4q
KTsKKyAgICB2b2lkIHRpbWVyU3RvcEZpcmVkKFRpbWVyPFZpYnJhdGlvbj4qKTsKKworcHJpdmF0
ZToKKyAgICBWaWJyYXRpb25DbGllbnQqIG1fdmlicmF0aW9uQ2xpZW50OworICAgIFRpbWVyPFZp
YnJhdGlvbj4gbV90aW1lclN0YXJ0OworICAgIFRpbWVyPFZpYnJhdGlvbj4gbV90aW1lclN0b3A7
CisgICAgYm9vbCBtX2lzVmlicmF0aW5nOworICAgIFZpYnJhdGlvblBhdHRlcm4gbV9wYXR0ZXJu
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJQlJB
VElPTikKKworI2VuZGlmIC8vIFZpYnJhdGlvbl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNGE5NWRkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbkNsaWVudC5oCkBAIC0wLDAgKzEsMzggQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2lmbmRlZiBWaWJyYXRpb25DbGllbnRfaAorI2RlZmluZSBWaWJyYXRpb25DbGllbnRfaAorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpYnJhdGlvbkNsaWVudCB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+VmlicmF0aW9uQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmli
cmF0ZShjb25zdCBsb25nJiB0aW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFZpYnJh
dGlvbigpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB2aWJyYXRpb25EZXN0cm95ZWQoKSA9IDA7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBWaWJyYXRpb25DbGll
bnRfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggMzhlNjczMS4uZWExOWM3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5j
bWFrZQpAQCAtMjQ1LDYgKzI0NSwxMiBAQCBJRiAoRU5BQkxFX1dFQkdMKQogICAgICkKIEVORElG
ICgpCiAKK0lGIChFTkFCTEVfVklCUkFUSU9OKQorICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUworICAgICAgICBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKKyAgICApCitF
TkRJRiAoKQorCiBMSVNUKEFQUEVORCBTQ1JJUFRTX0JJTkRJTkdTCiAgICAgJHtXRUJDT1JFX0RJ
Un0vYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCiApCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKaW5kZXggMmQ4ZDQ5ZC4uOGEy
OGNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3Vz
dG9tLmNwcApAQCAtNCw2ICs0LDcgQEAKICAqICBDb3B5cmlnaHQgKGMpIDIwMDAgU3RlZmFuIFNj
aGltYW5za2kgKHNjaGltbWlAa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogICogIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJv
bmljcwogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsMTAgKzI2LDE2IEBACiAKICNpbmNsdWRl
ICJDYWxsYmFja0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNh
bGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2su
aCIKKyNlbmRpZgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogCisjaWYgRU5BQkxFKFZJQlJBVElP
TikKKyNpbmNsdWRlICJOYXZpZ2F0b3JWaWJyYXRpb24uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC02MCw0ICs2Nyw0OSBAQCBKU1Zh
bHVlIEpTTmF2aWdhdG9yOjp3ZWJraXRHZXRVc2VyTWVkaWEoRXhlY1N0YXRlKiBleGVjKQogfQog
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQor
SlNWYWx1ZSBKU05hdmlnYXRvcjo6d2Via2l0VmlicmF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgVmlicmF0aW9uUGF0dGVybiBwYXR0ZXJuOworICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3Vu
dCgpKQorICAgICAgICBwYXR0ZXJuLmFwcGVuZCgwKTsKKworICAgIEpTVmFsdWUgdmFsdWUgPSBl
eGVjLT5hcmd1bWVudCgwKTsKKyAgICB1bnNpZ25lZCBsZW5ndGg7CisgICAgaWYgKHZhbHVlLmlz
VUludDMyKCkpCisgICAgICAgIHBhdHRlcm4uYXBwZW5kKHZhbHVlLmFzSW50MzIoKSk7CisgICAg
ZWxzZSBpZiAoSlNPYmplY3QqIG9iamVjdCA9IHRvSlNTZXF1ZW5jZShleGVjLCB2YWx1ZSwgbGVu
Z3RoKSkgeworICAgICAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5k
KDApOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewor
ICAgICAgICAgICAgdmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBpKTsKKyAgICAgICAgICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKworICAgICAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgIXZh
bHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
SU5WQUxJRF9BQ0NFU1NfRVJSKTsKKyAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHZhbHVlLmlzVUludDMyKCkpCisg
ICAgICAgICAgICAgICAgcGF0dGVybi5hcHBlbmQodmFsdWUuYXNJbnQzMigpKTsKKyAgICAgICAg
fQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAg
ICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBJTlZBTElEX0FDQ0VTU19FUlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBOYXZpZ2F0b3JWaWJyYXRp
b246OndlYmtpdFZpYnJhdGUobV9pbXBsLCBwYXR0ZXJuLCBlYyk7CisKKyAgICBpZiAoZWMpCisg
ICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisKKyAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAwYzZmZjU1Li45NzI1
NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTkwLDYgKzkwLDEwIEBACiAjaW5jbHVkZSAiU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyNp
bmNsdWRlICJWaWJyYXRpb24uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBIYXNoU2V0PFBhZ2UqPiogYWxsUGFnZXM7CkBAIC0xODIsNiArMTg2LDkgQEAgUGFnZTo6
UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX3Zpc2liaWxpdHlTdGF0ZShQ
YWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSkKICNlbmRpZgogICAgICwgbV9kaXNwbGF5SUQoMCkK
KyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICwgbV92aWJyYXRpb24oYWRvcHRQdHIobmV3IFZp
YnJhdGlvbihwYWdlQ2xpZW50cy52aWJyYXRpb25DbGllbnQpKSkKKyNlbmRpZgogewogICAgIGlm
ICghYWxsUGFnZXMpIHsKICAgICAgICAgYWxsUGFnZXMgPSBuZXcgSGFzaFNldDxQYWdlKj47CkBA
IC0xMDg4LDYgKzEwOTUsOSBAQCBQYWdlOjpQYWdlQ2xpZW50czo6UGFnZUNsaWVudHMoKQogICAg
ICwgc3BlZWNoSW5wdXRDbGllbnQoMCkKICAgICAsIG5vdGlmaWNhdGlvbkNsaWVudCgwKQogICAg
ICwgdXNlck1lZGlhQ2xpZW50KDApCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICAsIHZpYnJh
dGlvbkNsaWVudCgwKQorI2VuZGlmCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggZWYxZDFkOS4u
ZjYzNGE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTkwLDYgKzkwLDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBjbGFzcyBOb3RpZmljYXRpb25Q
cmVzZW50ZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgIGNsYXNzIFZpYnJh
dGlvbjsKKyAgICBjbGFzcyBWaWJyYXRpb25DbGllbnQ7CisjZW5kaWYKIAogICAgIHR5cGVkZWYg
dWludDY0X3QgTGlua0hhc2g7CiAKQEAgLTEyMiw2ICsxMjYsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICBTcGVlY2hJbnB1dENsaWVudCogc3BlZWNoSW5wdXRDbGllbnQ7CiAg
ICAgICAgICAgICBOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvbkNsaWVudDsKICAg
ICAgICAgICAgIFVzZXJNZWRpYUNsaWVudCogdXNlck1lZGlhQ2xpZW50OworI2lmIEVOQUJMRShW
SUJSQVRJT04pCisgICAgICAgICAgICBWaWJyYXRpb25DbGllbnQqIHZpYnJhdGlvbkNsaWVudDsK
KyNlbmRpZgogICAgICAgICB9OwogCiAgICAgICAgIFBhZ2UoUGFnZUNsaWVudHMmKTsKQEAgLTM0
OCw3ICszNTUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICAgICAgUGxh
dGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0K
LSAgICAgICAgCisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICAgICBWaWJyYXRpb24qIHZp
YnJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmlicmF0aW9uLmdldCgpOyB9CisjZW5kaWYKKwog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdEdyb3VwKCk7CiAKQEAgLTQ2Miw2ICs0NzMs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYWdlVmlzaWJpbGl0eVN0YXRlIG1f
dmlzaWJpbGl0eVN0YXRlOwogI2VuZGlmCiAgICAgICAgIFBsYXRmb3JtRGlzcGxheUlEIG1fZGlz
cGxheUlEOworI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgICAgIE93blB0cjxWaWJyYXRpb24+
IG1fdmlicmF0aW9uOworI2VuZGlmCisKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGQ0
OTBjMC4uYWIzNTM2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAxLTI2ICBLaWhvbmcgS3dvbiAgPGtpaG9u
Zy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIEFkZCBhIG5ldyBBUEkgZm9yIHRoZSBWaWJy
YXRpb24gQVBJKFczQykuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MjAxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHA6Ly9kZXYudzMub3JnLzIwMDkvZGFwL3ZpYnJhdGlvbi8KKworICAgICAgICAq
IFNjcmlwdHMvYnVpbGQtd2Via2l0OiBBZGQgRU5BQkxFX1ZJQlJBVElPTiBmZWF0dXJlLgorCiAy
MDEyLTAxLTI1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVGVt
cG9yYXJpbHkgZGlzYWJsZSBydW5uaW5nIHRoZSB1bml0IHRlc3RzIG9uIHRoZSBDaHJvbWl1bSBF
V1MuICBUaGVzZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQgYi9Ub29s
cy9TY3JpcHRzL2J1aWxkLXdlYmtpdAppbmRleCBiOWI5OTcyLi5kNzNkZThkIDEwMDc1NQotLS0g
YS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdl
YmtpdApAQCAtMTI2LDYgKzEyNiw3IEBAIG15ICgKICAgICAkdGlsZWRCYWNraW5nU3RvcmVTdXBw
b3J0LAogICAgICR0b3VjaEV2ZW50c1N1cHBvcnQsCiAgICAgJHRvdWNoSWNvbkxvYWRpbmdTdXBw
b3J0LAorICAgICR2aWJyYXRpb25TdXBwb3J0LAogICAgICR2aWRlb1N1cHBvcnQsCiAgICAgJHZp
ZGVvVHJhY2tTdXBwb3J0LAogICAgICR3ZWJBdWRpb1N1cHBvcnQsCkBAIC0zMjAsNiArMzIxLDkg
QEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICJ0b3VjaC1pY29uLWxvYWRpbmci
LCBkZXNjID0+ICJUb2dnbGUgVG91Y2ggSWNvbiBMb2FkaW5nIFN1cHBvcnQiLAogICAgICAgZGVm
aW5lID0+ICJFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9
PiBcJHRvdWNoSWNvbkxvYWRpbmdTdXBwb3J0IH0sCiAKKyAgICB7IG9wdGlvbiA9PiAidmlicmF0
aW9uIiwgZGVzYyA9PiAiVG9nZ2xlIFZpZGVvIHN1cHBvcnQiLAorICAgICAgZGVmaW5lID0+ICJF
TkFCTEVfVklCUkFUSU9OIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHZpYnJhdGlvblN1cHBv
cnQgfSwKKwogICAgIHsgb3B0aW9uID0+ICJ2aWRlbyIsIGRlc2MgPT4gIlRvZ2dsZSBWaWRlbyBz
dXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1ZJREVPIiwgZGVmYXVsdCA9PiAoaXNB
cHBsZVdlYktpdCgpIHx8IGlzR3RrKCkgfHwgaXNCbGFja0JlcnJ5KCkpLCB2YWx1ZSA9PiBcJHZp
ZGVvU3VwcG9ydCB9LAogCg==
</data>
<flag name="review"
          id="125666"
          type_id="1"
          status="-"
          setter="haraken"
    />
    <flag name="commit-queue"
          id="125667"
          type_id="3"
          status="-"
          setter="haraken"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124495</attachid>
            <date>2012-01-29 21:58:36 -0800</date>
            <delta_ts>2012-01-30 00:14:28 -0800</delta_ts>
            <desc>Fixed patch for the comment #34</desc>
            <filename>vibration.patch</filename>
            <type>text/plain</type>
            <size>28654</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNmM0MDNiLi4wNGYyODY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDEt
MjkgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRk
IGEgbmV3IHRlc3QgY2FzZSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAxMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJh
dGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRvci12
aWJyYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6
CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2lu
Y2Fpcm8vU2tpcHBlZDoKKwogMjAxMi0wMS0yNSAgTWlrZSBMYXd0aGVyICA8bWlrZWxhd3RoZXJA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIHRhYmxlIGJvcmRlciBzcGFjaW5nIHRlc3QgZm9yIENT
UzMgY2FsYwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJh
dGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0
aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTI5
NjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZp
YnJhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGVzdCBmb3IgdGhlIFZpYnJh
dGlvbiBBUEkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5hdmlnYXRv
ci53ZWJraXRWaWJyYXRlKDApOyBpcyB1bmRlZmluZWQKK1BBU1MgbmF2aWdhdG9yLndlYmtpdFZp
YnJhdGUoW10pOyBpcyB1bmRlZmluZWQKK1BBU1MgbmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoKTsg
aXMgdW5kZWZpbmVkCitQQVNTIG5hdmlnYXRvci53ZWJraXRWaWJyYXRlKDEwMDApOyBpcyB1bmRl
ZmluZWQKK1BBU1MgbmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoWzEwMDAsIDMwMCwgNTAwXSk7IGlz
IHVuZGVmaW5lZAorRkFJTCBuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZSg0Mjk0OTY3Mjk1KTsgc2hv
dWxkIGJlIHVuZGVmaW5lZC4gVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VS
UjogRE9NIEV4Y2VwdGlvbiA5CitQQVNTIG5hdmlnYXRvci53ZWJraXRWaWJyYXRlKDQyOTQ5Njcy
OTYpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0
aW9uIDkuCitQQVNTIG5hdmlnYXRvci53ZWJraXRWaWJyYXRlKC0xKTsgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBuYXZpZ2F0
b3Iud2Via2l0VmlicmF0ZSgxLjIzKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9S
VEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25h
dmlnYXRvci12aWJyYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci12
aWJyYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zMGJiZDQ2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJh
dGlvbi5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IGZvciB0aGUgVmlicmF0aW9uIEFQSS4nKTsK
Kworc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRWaWJyYXRlKDApOyIsICJ1bmRlZmluZWQiKTsK
K3Nob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZShbXSk7IiwgInVuZGVmaW5lZCIpOwor
c2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRWaWJyYXRlKCk7IiwgInVuZGVmaW5lZCIpOworc2hv
dWxkQmUoIm5hdmlnYXRvci53ZWJraXRWaWJyYXRlKDEwMDApOyIsICJ1bmRlZmluZWQiKTsKK3No
b3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZShbMTAwMCwgMzAwLCA1MDBdKTsiLCAidW5k
ZWZpbmVkIik7CitzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoNDI5NDk2NzI5NSk7
IiwgInVuZGVmaW5lZCIpOyAvLyBUaGlzIGZhaWxzIGluIEpTQyBkdWUgdG8gYnVnIDc3MzE3Citz
aG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoNDI5NDk2NzI5Nik7Iik7CitzaG91
bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoLTEpOyIpOworc2hvdWxkVGhyb3coIm5h
dmlnYXRvci53ZWJraXRWaWJyYXRlKDEuMjMpOyIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVj
dGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQKaW5kZXggN2E3MDk4Mi4uNGIzNjkxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtMTAxLDYgKzEwMSw5
IEBAIEJVR0NSMTAzOTM5IFNLSVAgOiBodHRwL3Rlc3RzL2FwcGNhY2hlL3dyb25nLWNvbnRlbnQt
dHlwZS5odG1sID0gVEVYVAogLy8gYnVpbGQgZmxhZyB0dXJuZWQgb24uCiBCVUdHQklMTE9DSyBT
S0lQIDogd2ViaW50ZW50cyA9IEZBSUwKIAorLy8gVmlicmF0aW9uIEFQSSBpcyBub3Qgc3VwcG9y
dGVkIHlldCBpbiB0aGUgY2hyb21pdW0gcG9ydC4KK0JVR1dLNzIwMTAgU0tJUCA6IGZhc3QvZG9t
L25hdmlnYXRvci12aWJyYXRpb24uaHRtbCA9IEZBSUwKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIFdPTlRG
SVggVEVTVFMKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDM0ZDk3
Y2IuLjRlNmFiNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVk
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0zODYsNiArMzg2LDkg
QEAgaHR0cC90ZXN0cy9zZWN1cml0eS93ZWJnbC1yZW1vdGUtcmVhZC1yZW1vdGUtaW1hZ2UtYWxs
b3dlZC5odG1sCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3dlYmdsLXJlbW90ZS1yZWFkLXJlbW90ZS1p
bWFnZS1ibG9ja2VkLW5vLWNyb3Nzb3JpZ2luLmh0bWwKIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2Vi
Z2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdlLWFsbG93ZWQtd2l0aC1jcmVkZW50aWFscy5odG1s
CiAKKyNWaWJyYXRpb24gQVBJIHN1cHBvcnQgbm90IHlldC4gaHR0cDovL3dlYmtpdC5vcmcvYi83
MjAxMAorZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5odG1sCisKICMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKICMgVEVTVFMgRkFJTElORwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvU2tpcHBlZAppbmRleCA5ZTZkZDY2Li4yNTMzZGExIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvU2tpcHBlZApAQCAtNTQxLDMgKzU0MSw3IEBAIG1lZGlhL1czQy92aWRlby9jYW5QbGF5VHlw
ZS9jYW5QbGF5VHlwZV90d29faW1wbGllc19vbmVfMy5odG1sCiBtZWRpYS9XM0MvdmlkZW8vY2Fu
UGxheVR5cGUvY2FuUGxheVR5cGVfdHdvX2ltcGxpZXNfb25lXzQuaHRtbAogbWVkaWEvVzNDL3Zp
ZGVvL2NhblBsYXlUeXBlL2NhblBsYXlUeXBlX3R3b19pbXBsaWVzX29uZV81Lmh0bWwKIG1lZGlh
L1czQy92aWRlby9jYW5QbGF5VHlwZS9jYW5QbGF5VHlwZV90d29faW1wbGllc19vbmVfNi5odG1s
CisKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDEwCisjIE5l
ZWRzIFBhZ2VDbGllbnRzOjp2aWJyYXRpb25DbGllbnQoKSBpbXBsZW1lbnRhdGlvbi4KK2Zhc3Qv
ZG9tL25hdmlnYXRvci12aWJyYXRpb24uaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXgg
MjQ5MTRjNy4uNDU3ODk1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tp
cHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0zMTYsNiArMzE2
LDkgQEAgZmFzdC9wYXJzZXIvcHJlLWh0bWw1LXBhcnNlci1xdWlya3MuaHRtbAogIyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIzNjMKIGZhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcG9zdG1lc3NhZ2UtYXJyYXlzLmh0bWwKIAorI1ZpYnJhdGlvbiBBUEkgaXMgbm90IGlt
cGxlbWVudGVkLgorZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5odG1sCisKICMgPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ICMKICMgICAgICAgRHJhZyBhbmQgRHJvcCBTdXBwb3J0IGluIERSVC4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ICMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggMWMyZWE2Mi4uOTZiMGRkZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTE2MDgsMyArMTYwOCw2IEBAIGZhc3QvY3NzL2Jp
ZGktb3ZlcnJpZGUtaW4tYW5vbnltb3VzLWJsb2NrLmh0bWwKIGZhc3QvZG9tL0hUTUxUYWJsZUVs
ZW1lbnQvY29sU3Bhbi5odG1sCiBmYXN0L2RvbS9IVE1MVGFibGVFbGVtZW50L2NyZWF0ZUNhcHRp
b24uaHRtbAogZmFzdC9yZXBhaW50L3RhYmxlLXNlY3Rpb24tcmVwYWludC5odG1sCisKKyNWaWJy
YXRpb24gQVBJIGlzIG5vdCBpbXBsZW1lbnRlZC4KK2Zhc3QvZG9tL25hdmlnYXRvci12aWJyYXRp
b24uaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBl
ZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKaW5kZXggYzYwNzI2OS4u
NWM1MzkzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCkBAIC0yMDM4LDMg
KzIwMzgsNiBAQCBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFycmF5cy5odG1s
CiAKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDkzCiBmYXN0
L2NhbnZhcy93ZWJnbC9hcnJheWJ1ZmZlci10cmFuc2Zlci1vZi1jb250cm9sLmh0bWwKKworI1Zp
YnJhdGlvbiBBUEkgaXMgbm90IGltcGxlbWVudGVkLgorZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJh
dGlvbi5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDM2NmMyYTAuLjg0NDhjNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC0yMjI5LDYgKzIyMjksMTkgQEAgSUYgKEVOQUJMRV9SRVFVRVNU
X0FOSU1BVElPTl9GUkFNRSkKICAgICApCiBFTkRJRiAoKQogCitJRiAoRU5BQkxFX1ZJQlJBVElP
TikKKyAgICBMSVNUKEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAg
JHtXRUJDT1JFX0RJUn0vTW9kdWxlcy92aWJyYXRpb24KKyAgICApCisgICAgTElTVChBUFBFTkQg
V2ViQ29yZV9JRExfRklMRVMKKyAgICAgICAgTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmli
cmF0aW9uLmlkbAorICAgICkKKyAgICBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAg
ICAgTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmNwcAorICAgICAgICBNb2R1
bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uY3BwCisgICAgKQorRU5ESUYgKCkKKwogIyBNb2R1bGVz
IHRoYXQgdGhlIGJpbmRpbmdzIGdlbmVyYXRvciBzY3JpcHRzIG1heSB1c2UKIFNFVChTQ1JJUFRT
X1JFU09MVkVfU1VQUExFTUVOVEFMCiAgICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0
cy9JRExQYXJzZXIucG0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5MTA2MWUyLi43NTEwOGIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNjggQEAKKzIwMTItMDEtMjkgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25A
c2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRkIGEgbmV3IEFQSSBmb3IgdGhlIFZpYnJhdGlvbiBB
UEkoVzNDKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcyMDEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cDovL2Rldi53My5vcmcvMjAwOS9kYXAvdmlicmF0aW9uLworICAgICAgICBUaGlzIHBhdGNo
IGltcGxlbWVudHMgbmF2aWdhdG9yLndlYmtpdHZpYnJhdGUoKSBBUEkuCisgICAgICAgIFRoaXMg
QVBJIG9wZXJhdGVzIGRpZmZlcmVudGx5IGRlcGVuZGluZyB1cG9uIGEgZ2l2ZW4gcGFyYW1ldGVy
OgorICAgICAgICAxLiBJdCBjYW5jZWxzIHZpYnJhdGlvbiB3aGVuIGdpdmVuIDAgb3IgW10uCisg
ICAgICAgIDIuIEl0IGdpdmVzIGEgdmlicmF0aW9uIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcyB3
aGVuIGdpdmVuIGFzIGEgc2luZ2xlIGludGVnZXIgdmFsdWUuCisgICAgICAgIDMuIEl0IGdpdmVz
IGEgdmlicmF0aW9uIHBhdHRlcm4gd2hlbiBnaXZlbiBhcyBhbiBpbnRlZ2VyIGFycmF5LiBGb3Ig
aW5zdGFuY2UsIFsxMDAwIDMwMCAxMDAwXSBnZW5lcmF0ZXMgYSB2aWJyYXRpb24gb2YgMTAwMG1z
IGZvbGxvd2VkIGJ5IDMwMG1zIG9mIGlkbGUgdGltZSwgYW5kIHRoZW4gY3JlYXRlcyBhbm90aGVy
IHZpYnJhdGlvbiBvZiAxMDAwbXMuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vbmF2aWdhdG9y
LXZpYnJhdGlvbi5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBN
b2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAg
IFRoZXJlIGlzIGEgd2Via2l0VmlicmF0ZSgpIG1ldGhvZCBpbiB0aGlzIGNsYXNzLgorICAgICAg
ICAgSXQgY2hlY2tzIGlmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyB0aGUgdmlicmF0aW9uLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JWaWJyYXRpb246Ok5h
dmlnYXRvclZpYnJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JWaWJyYXRpb246
On5OYXZpZ2F0b3JWaWJyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yVmlicmF0
aW9uOjp3ZWJraXRWaWJyYXRlKToKKyAgICAgICAgIEFkZCB3ZWJraXRWaWJyYXRlIG1ldGhvZCB0
byBnZXQgYW4gYXJyYXkgcGFyYW1ldGVyLgorICAgICAgICAgVGhlcmUgaXMgbm8gd2F5IHRvIGdl
dCBhbiBhcnJheSB0eXBlIHBhcmFtZXRlci4KKyAgICAgICAgIFRoaXMgbWV0aG9kIGNoZWNrcyB0
eXBlcyBhbmQgdmFsdWVzIG9mIHBhcmFtZXRlci4KKyAgICAgICAgKiBNb2R1bGVzL3ZpYnJhdGlv
bi9OYXZpZ2F0b3JWaWJyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKE5hdmlnYXRvclZpYnJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy92aWJyYXRpb24vTmF2
aWdhdG9yVmlicmF0aW9uLmlkbDogQWRkZWQuCisgICAgICAgICBBZGQgdGhlIFtKU0NDdXN0b21d
IHdlYmtpdHZpYnJhdGUoKSBtZXRob2QsIGFuZCB3ZWJraXR2aWJyYXRlKCkgaXMgb25seSBzdXBw
b3J0ZWQgd2l0aCBKU0MgYXQgdGhpcyB0aW1lLgorICAgICAgICAqIE1vZHVsZXMvdmlicmF0aW9u
L1ZpYnJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRo
ZSBlbnRpcmUgdmlicmF0aW9uIGxvZ2ljLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWJyYXRpb246OlZpYnJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRp
b246On5WaWJyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uOjp2aWJyYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6Y2FuY2VsVmlicmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpYnJhdGlvbjo6c3VzcGVuZFZpYnJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpWaWJyYXRpb246OnJlc3VtZVZpYnJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRp
b246OnRpbWVyU3RhcnRGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb246OnRpbWVy
U3RvcEZpcmVkKToKKyAgICAgICAgKiBNb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFZpYnJhdGlvbik6CisgICAgICAgICog
TW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAgdmli
cmF0ZSgpIGFuZCBjYW5jZWxWaWJyYXRlKCkgbmVlZCB0byBiZSBpbXBsZW1lbnRlZCBpbiB0aGUg
VmlicmF0aW9uQ2xpZW50LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWaWJyYXRpb25D
bGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uQ2xpZW50Ojp+VmlicmF0aW9uQ2xp
ZW50KToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogYmluZGluZ3MvanMvSlNO
YXZpZ2F0b3JWaWJyYXRpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNOYXZpZ2F0b3I6OndlYmtpdFZpYnJhdGUpOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OlBhZ2VDbGllbnRzOjpQYWdlQ2xpZW50cyk6CisgICAgICAgICogcGFn
ZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKCk6CisgICAgICAgIChQYWdl
Q2xpZW50cyk6CisgICAgICAgIChQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnZpYnJh
dGlvbik6CisKIDIwMTItMDEtMjUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDU4NTguCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0
aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzkyMjFhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9y
VmlicmF0aW9uLmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAx
MiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJOYXZpZ2F0b3JWaWJyYXRpb24uaCIKKworI2lmIEVOQUJMRShWSUJSQVRJT04pCisK
KyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRl
ICJOYXZpZ2F0b3IuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiVmlicmF0aW9uLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTmF2aWdhdG9yVmlicmF0aW9uOjpOYXZpZ2F0b3JW
aWJyYXRpb24oKQoreworfQorCitOYXZpZ2F0b3JWaWJyYXRpb246On5OYXZpZ2F0b3JWaWJyYXRp
b24oKQoreworfQorCit2b2lkIE5hdmlnYXRvclZpYnJhdGlvbjo6d2Via2l0VmlicmF0ZShOYXZp
Z2F0b3IqIG5hdmlnYXRvciwgY29uc3QgVmlicmF0aW9uUGF0dGVybiYgcGF0dGVybiwgRXhjZXB0
aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFwYXR0ZXJuLnNpemUoKSB8fCAhbmF2aWdhdG9yLT5m
cmFtZSgpLT5wYWdlKCkpCisgICAgICAgIHJldHVybjsKKworI2lmIEVOQUJMRShQQUdFX1ZJU0lC
SUxJVFlfQVBJKQorICAgIGlmIChuYXZpZ2F0b3ItPmZyYW1lKCktPnBhZ2UoKS0+dmlzaWJpbGl0
eVN0YXRlKCkgPT0gUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbikKKyAgICAgICAgcmV0dXJuOwor
I2VuZGlmCisKKyAgICBpZiAoIW5hdmlnYXRvci0+ZnJhbWUoKS0+cGFnZSgpLT52aWJyYXRpb24o
KSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbmF2aWdhdG9yLT5mcmFtZSgpLT5wYWdlKCktPnZpYnJhdGlvbigpLT52aWJy
YXRlKHBhdHRlcm4pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoVklCUkFUSU9OKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Zp
YnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmli
cmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmY5M2E5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaApAQCAtMCwwICsxLDQ4IEBACisvKgorICog
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5k
ZWYgTmF2aWdhdG9yVmlicmF0aW9uX2gKKyNkZWZpbmUgTmF2aWdhdG9yVmlicmF0aW9uX2gKKwor
I2lmIEVOQUJMRShWSUJSQVRJT04pCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5hdmln
YXRvcjsKKwordHlwZWRlZiBWZWN0b3I8dW5zaWduZWQgbG9uZz4gVmlicmF0aW9uUGF0dGVybjsK
KworY2xhc3MgTmF2aWdhdG9yVmlicmF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCB3
ZWJraXRWaWJyYXRlKE5hdmlnYXRvciosIGNvbnN0IFZpYnJhdGlvblBhdHRlcm4mLCBFeGNlcHRp
b25Db2RlJik7CisKK3ByaXZhdGU6CisgICAgTmF2aWdhdG9yVmlicmF0aW9uKCk7CisgICAgfk5h
dmlnYXRvclZpYnJhdGlvbigpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFZJQlJBVElPTikKKworI2VuZGlmIC8vIE5hdmlnYXRvclZpYnJhdGlvbl9o
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRv
clZpYnJhdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0
b3JWaWJyYXRpb24uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZjNj
NTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9O
YXZpZ2F0b3JWaWJyYXRpb24uaWRsCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworbW9kdWxlIHdpbmRvdyB7
CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1WSUJSQVRJT04sCisgICAg
ICAgIFN1cHBsZW1lbnRhbD1OYXZpZ2F0b3IKKyAgICBdIE5hdmlnYXRvclZpYnJhdGlvbiB7Cisg
ICAgICAgIFtKU0NDdXN0b21dIHZvaWQgd2Via2l0VmlicmF0ZShpbiBBcnJheSBwYXR0ZXJuKSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xMTczZGJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy92aWJyYXRpb24vVmlicmF0aW9uLmNwcApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVmlicmF0aW9uLmgiCisKKyNpZiBFTkFCTEUoVklCUkFUSU9O
KQorCisjaW5jbHVkZSAiVmlicmF0aW9uQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworVmlicmF0aW9uOjpWaWJyYXRpb24oVmlicmF0aW9uQ2xpZW50KiBWaWJyYXRpb25DbGllbnQp
CisgICAgOiBtX3ZpYnJhdGlvbkNsaWVudChWaWJyYXRpb25DbGllbnQpCisgICAgLCBtX3RpbWVy
U3RhcnQodGhpcywgJlZpYnJhdGlvbjo6dGltZXJTdGFydEZpcmVkKQorICAgICwgbV90aW1lclN0
b3AodGhpcywgJlZpYnJhdGlvbjo6dGltZXJTdG9wRmlyZWQpCisgICAgLCBtX2lzVmlicmF0aW5n
KGZhbHNlKQoreworfQorCitWaWJyYXRpb246On5WaWJyYXRpb24oKQoreworICAgIG1fdmlicmF0
aW9uQ2xpZW50LT52aWJyYXRpb25EZXN0cm95ZWQoKTsKK30KKwordm9pZCBWaWJyYXRpb246OnZp
YnJhdGUoY29uc3QgVmlicmF0aW9uUGF0dGVybiYgcGF0dGVybikKK3sKKyAgICBpbnQgbGVuZ3Ro
ID0gcGF0dGVybi5zaXplKCk7CisKKyAgICBpZiAoIWxlbmd0aCB8fCAobGVuZ3RoID09IDEgJiYg
IXBhdHRlcm5bMF0pKSB7CisgICAgICAgIGlmIChtX2lzVmlicmF0aW5nKQorICAgICAgICAgICAg
Y2FuY2VsVmlicmF0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1f
aXNWaWJyYXRpbmcgJiYgIW1fdGltZXJTdGFydC5pc0FjdGl2ZSgpKSB7CisgICAgICAgIG1fcGF0
dGVybiA9IHBhdHRlcm47CisgICAgICAgIG1fdGltZXJTdGFydC5zdGFydE9uZVNob3QoMCk7Cisg
ICAgfQorfQorCit2b2lkIFZpYnJhdGlvbjo6Y2FuY2VsVmlicmF0aW9uKCkKK3sKKyAgICBpZiAo
bV9pc1ZpYnJhdGluZykgeworICAgICAgICBtX3ZpYnJhdGlvbkNsaWVudC0+Y2FuY2VsVmlicmF0
aW9uKCk7CisgICAgICAgIG1faXNWaWJyYXRpbmcgPSBmYWxzZTsKKyAgICAgICAgbV90aW1lclN0
b3Auc3RvcCgpOworICAgIH0KK30KKwordm9pZCBWaWJyYXRpb246OnN1c3BlbmRWaWJyYXRpb24o
KQoreworICAgIGlmICghbV9pc1ZpYnJhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9w
YXR0ZXJuLmluc2VydCgwLCBtX3RpbWVyU3RvcC5uZXh0RmlyZUludGVydmFsKCkpOworICAgIG1f
dGltZXJTdG9wLnN0b3AoKTsKKyAgICBjYW5jZWxWaWJyYXRpb24oKTsKK30KKwordm9pZCBWaWJy
YXRpb246OnJlc3VtZVZpYnJhdGlvbigpCit7CisgICAgbV90aW1lclN0YXJ0LnN0YXJ0T25lU2hv
dCgwKTsKK30KKwordm9pZCBWaWJyYXRpb246OnRpbWVyU3RhcnRGaXJlZChUaW1lcjxWaWJyYXRp
b24+KiB0aW1lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV90aW1l
clN0YXJ0KTsKKworICAgIG1fdGltZXJTdGFydC5zdG9wKCk7CisKKyAgICBpZiAobV9wYXR0ZXJu
LnNpemUoKSkgeworICAgICAgICBtX2lzVmlicmF0aW5nID0gdHJ1ZTsKKyAgICAgICAgbV92aWJy
YXRpb25DbGllbnQtPnZpYnJhdGUobV9wYXR0ZXJuWzBdKTsKKyAgICAgICAgbV90aW1lclN0b3Au
c3RhcnRPbmVTaG90KG1fcGF0dGVyblswXSAvIDEwMDAuMCk7CisgICAgICAgIG1fcGF0dGVybi5y
ZW1vdmUoMCk7CisgICAgfQorfQorCit2b2lkIFZpYnJhdGlvbjo6dGltZXJTdG9wRmlyZWQoVGlt
ZXI8VmlicmF0aW9uPiogdGltZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIg
PT0gJm1fdGltZXJTdG9wKTsKKworICAgIG1fdGltZXJTdG9wLnN0b3AoKTsKKyAgICBtX2lzVmli
cmF0aW5nID0gZmFsc2U7CisKKyAgICBpZiAobV9wYXR0ZXJuLnNpemUoKSkgeworICAgICAgICBt
X3RpbWVyU3RhcnQuc3RhcnRPbmVTaG90KG1fcGF0dGVyblswXSAvIDEwMDAuMCk7CisgICAgICAg
IG1fcGF0dGVybi5yZW1vdmUoMCk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoVklCUkFUSU9OKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmM0N2FiODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Zp
YnJhdGlvbi9WaWJyYXRpb24uaApAQCAtMCwwICsxLDYxIEBACisvKgorICogIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgVmlicmF0aW9u
X2gKKyNkZWZpbmUgVmlicmF0aW9uX2gKKworI2lmIEVOQUJMRShWSUJSQVRJT04pCisKKyNpbmNs
dWRlICJOYXZpZ2F0b3JWaWJyYXRpb24uaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUg
IlZpYnJhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTmF2aWdhdG9yOworCitjbGFzcyBWaWJyYXRpb24gewor
cHVibGljOgorICAgIFZpYnJhdGlvbihWaWJyYXRpb25DbGllbnQqKTsKKyAgICB+VmlicmF0aW9u
KCk7CisKKyAgICB2b2lkIHZpYnJhdGUoY29uc3QgVmlicmF0aW9uUGF0dGVybiYpOworICAgIHZv
aWQgY2FuY2VsVmlicmF0aW9uKCk7CisKKyAgICAvLyBGSVhNRSA6IEFkZCBzdXNwZW5kVmlicmF0
aW9uKCkgYW5kIHJlc3VtZVZpYnJhdGlvbigpIHRvIHRoZSBwYWdlIHZpc2liaWxpdHkgZmVhdHVy
ZSwgd2hlbiB0aGUgZG9jdW1lbnQuaGlkZGVuIGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLgorICAgIHZv
aWQgc3VzcGVuZFZpYnJhdGlvbigpOworICAgIHZvaWQgcmVzdW1lVmlicmF0aW9uKCk7CisgICAg
dm9pZCB0aW1lclN0YXJ0RmlyZWQoVGltZXI8VmlicmF0aW9uPiopOworICAgIHZvaWQgdGltZXJT
dG9wRmlyZWQoVGltZXI8VmlicmF0aW9uPiopOworCitwcml2YXRlOgorICAgIFZpYnJhdGlvbkNs
aWVudCogbV92aWJyYXRpb25DbGllbnQ7CisgICAgVGltZXI8VmlicmF0aW9uPiBtX3RpbWVyU3Rh
cnQ7CisgICAgVGltZXI8VmlicmF0aW9uPiBtX3RpbWVyU3RvcDsKKyAgICBib29sIG1faXNWaWJy
YXRpbmc7CisgICAgVmlicmF0aW9uUGF0dGVybiBtX3BhdHRlcm47Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVklCUkFUSU9OKQorCisjZW5kaWYgLy8g
VmlicmF0aW9uX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRp
b24vVmlicmF0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9W
aWJyYXRpb25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTk1
ZGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24v
VmlicmF0aW9uQ2xpZW50LmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMp
IDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFZpYnJhdGlvbkNs
aWVudF9oCisjZGVmaW5lIFZpYnJhdGlvbkNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgVmlicmF0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WaWJyYXRp
b25DbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aWJyYXRlKGNvbnN0IGxvbmcmIHRp
bWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVmlicmF0aW9uKCkgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIHZpYnJhdGlvbkRlc3Ryb3llZCgpID0gMDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFZpYnJhdGlvbkNsaWVudF9oCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFr
ZQppbmRleCAzOGU2NzMxLi5lMmZkYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VK
U0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCkBAIC0yNDUsNiArMjQ1
LDEyIEBAIElGIChFTkFCTEVfV0VCR0wpCiAgICAgKQogRU5ESUYgKCkKIAorSUYgKEVOQUJMRV9W
SUJSQVRJT04pCisgICAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgIGJpbmRp
bmdzL2pzL0pTTmF2aWdhdG9yVmlicmF0aW9uQ3VzdG9tLmNwcAorICAgICkKK0VORElGICgpCisK
IExJU1QoQVBQRU5EIFNDUklQVFNfQklORElOR1MKICAgICAke1dFQkNPUkVfRElSfS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yVmlicmF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yVmlicmF0aW9uQ3VzdG9tLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmNhZmY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JWaWJyYXRpb25DdXN0b20uY3BwCkBA
IC0wLDAgKzEsNzcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJKU05hdmlnYXRvci5oIgorCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiTmF2aWdhdG9yVmlicmF0aW9uLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworSlNWYWx1
ZSBKU05hdmlnYXRvcjo6d2Via2l0VmlicmF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVmli
cmF0aW9uUGF0dGVybiBwYXR0ZXJuOworICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQor
ICAgICAgICBwYXR0ZXJuLmFwcGVuZCgwKTsKKyAgICBlbHNlIHsKKyAgICAgICAgSlNWYWx1ZSB2
YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgICAgICB1bnNpZ25lZCBsZW5ndGg7CisgICAg
ICAgIGlmICh2YWx1ZS5pc1VJbnQzMigpKQorICAgICAgICAgICAgcGF0dGVybi5hcHBlbmQodmFs
dWUuYXNVSW50MzIoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgSlNPYmplY3QqIG9i
amVjdCA9IHRvSlNTZXF1ZW5jZShleGVjLCB2YWx1ZSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIGV4ZWMtPmNsZWFyRXhj
ZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIE5PVF9TVVBQ
T1JURURfRVJSKTsKKyAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmICghbGVuZ3RoKQorICAgICAgICAgICAgICAgIHBhdHRl
cm4uYXBwZW5kKDApOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBpKTsK
KyAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgICAgICAgICAgICAgaWYgKCF2YWx1
ZS5pc1VJbnQzMigpKSB7CisgICAgICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVj
LCBOT1RfU1VQUE9SVEVEX0VSUik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5p
c1VJbnQzMigpKQorICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZCh2YWx1ZS5hc1VJ
bnQzMigpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIE5hdmlnYXRvclZpYnJhdGlvbjo6d2Via2l0VmlicmF0ZShtX2lt
cGwsIHBhdHRlcm4sIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7CisKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikKKworCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCAwYzZmZjU1Li45NzI1NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTkwLDYg
KzkwLDEwIEBACiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNlbmRpZgogCisj
aWYgRU5BQkxFKFZJQlJBVElPTikKKyNpbmNsdWRlICJWaWJyYXRpb24uaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBIYXNoU2V0PFBhZ2UqPiogYWxsUGFnZXM7CkBA
IC0xODIsNiArMTg2LDkgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAg
ICAgLCBtX3Zpc2liaWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSkKICNlbmRp
ZgogICAgICwgbV9kaXNwbGF5SUQoMCkKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICwgbV92
aWJyYXRpb24oYWRvcHRQdHIobmV3IFZpYnJhdGlvbihwYWdlQ2xpZW50cy52aWJyYXRpb25DbGll
bnQpKSkKKyNlbmRpZgogewogICAgIGlmICghYWxsUGFnZXMpIHsKICAgICAgICAgYWxsUGFnZXMg
PSBuZXcgSGFzaFNldDxQYWdlKj47CkBAIC0xMDg4LDYgKzEwOTUsOSBAQCBQYWdlOjpQYWdlQ2xp
ZW50czo6UGFnZUNsaWVudHMoKQogICAgICwgc3BlZWNoSW5wdXRDbGllbnQoMCkKICAgICAsIG5v
dGlmaWNhdGlvbkNsaWVudCgwKQogICAgICwgdXNlck1lZGlhQ2xpZW50KDApCisjaWYgRU5BQkxF
KFZJQlJBVElPTikKKyAgICAsIHZpYnJhdGlvbkNsaWVudCgwKQorI2VuZGlmCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKaW5kZXggZWYxZDFkOS4uZjYzNGE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTkwLDYg
KzkwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
ICAgICBjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVklC
UkFUSU9OKQorICAgIGNsYXNzIFZpYnJhdGlvbjsKKyAgICBjbGFzcyBWaWJyYXRpb25DbGllbnQ7
CisjZW5kaWYKIAogICAgIHR5cGVkZWYgdWludDY0X3QgTGlua0hhc2g7CiAKQEAgLTEyMiw2ICsx
MjYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBTcGVlY2hJbnB1dENsaWVu
dCogc3BlZWNoSW5wdXRDbGllbnQ7CiAgICAgICAgICAgICBOb3RpZmljYXRpb25QcmVzZW50ZXIq
IG5vdGlmaWNhdGlvbkNsaWVudDsKICAgICAgICAgICAgIFVzZXJNZWRpYUNsaWVudCogdXNlck1l
ZGlhQ2xpZW50OworI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgICAgICAgICBWaWJyYXRpb25D
bGllbnQqIHZpYnJhdGlvbkNsaWVudDsKKyNlbmRpZgogICAgICAgICB9OwogCiAgICAgICAgIFBh
Z2UoUGFnZUNsaWVudHMmKTsKQEAgLTM0OCw3ICszNTUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogI2VuZGlmCiAKICAgICAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KLSAgICAgICAgCisKKyNpZiBFTkFCTEUoVklCUkFUSU9O
KQorICAgICAgICBWaWJyYXRpb24qIHZpYnJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmlicmF0
aW9uLmdldCgpOyB9CisjZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdEdy
b3VwKCk7CiAKQEAgLTQ2Miw2ICs0NzMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBQYWdlVmlzaWJpbGl0eVN0YXRlIG1fdmlzaWJpbGl0eVN0YXRlOwogI2VuZGlmCiAgICAgICAg
IFBsYXRmb3JtRGlzcGxheUlEIG1fZGlzcGxheUlEOworI2lmIEVOQUJMRShWSUJSQVRJT04pCisg
ICAgICAgIE93blB0cjxWaWJyYXRpb24+IG1fdmlicmF0aW9uOworI2VuZGlmCisKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggOGQ0OTBjMC4uNTUzMGVhMyAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAx
LTI5ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIEFk
ZCBhIG5ldyBBUEkgZm9yIHRoZSBWaWJyYXRpb24gQVBJKFczQykuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAxMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnLzIwMDkvZGFw
L3ZpYnJhdGlvbi8KKworICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OiBBZGQgRU5BQkxF
X1ZJQlJBVElPTiBmZWF0dXJlLgorCiAyMDEyLTAxLTI1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVGVtcG9yYXJpbHkgZGlzYWJsZSBydW5uaW5nIHRoZSB1bml0
IHRlc3RzIG9uIHRoZSBDaHJvbWl1bSBFV1MuICBUaGVzZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy9idWlsZC13ZWJraXQgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAppbmRleCBiOWI5
OTcyLi5kNzNkZThkIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAorKysg
Yi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdApAQCAtMTI2LDYgKzEyNiw3IEBAIG15ICgKICAg
ICAkdGlsZWRCYWNraW5nU3RvcmVTdXBwb3J0LAogICAgICR0b3VjaEV2ZW50c1N1cHBvcnQsCiAg
ICAgJHRvdWNoSWNvbkxvYWRpbmdTdXBwb3J0LAorICAgICR2aWJyYXRpb25TdXBwb3J0LAogICAg
ICR2aWRlb1N1cHBvcnQsCiAgICAgJHZpZGVvVHJhY2tTdXBwb3J0LAogICAgICR3ZWJBdWRpb1N1
cHBvcnQsCkBAIC0zMjAsNiArMzIxLDkgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9u
ID0+ICJ0b3VjaC1pY29uLWxvYWRpbmciLCBkZXNjID0+ICJUb2dnbGUgVG91Y2ggSWNvbiBMb2Fk
aW5nIFN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5H
IiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHRvdWNoSWNvbkxvYWRpbmdTdXBwb3J0IH0sCiAK
KyAgICB7IG9wdGlvbiA9PiAidmlicmF0aW9uIiwgZGVzYyA9PiAiVG9nZ2xlIFZpZGVvIHN1cHBv
cnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVklCUkFUSU9OIiwgZGVmYXVsdCA9PiAwLCB2
YWx1ZSA9PiBcJHZpYnJhdGlvblN1cHBvcnQgfSwKKwogICAgIHsgb3B0aW9uID0+ICJ2aWRlbyIs
IGRlc2MgPT4gIlRvZ2dsZSBWaWRlbyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxF
X1ZJREVPIiwgZGVmYXVsdCA9PiAoaXNBcHBsZVdlYktpdCgpIHx8IGlzR3RrKCkgfHwgaXNCbGFj
a0JlcnJ5KCkpLCB2YWx1ZSA9PiBcJHZpZGVvU3VwcG9ydCB9LAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124502</attachid>
            <date>2012-01-30 00:14:28 -0800</date>
            <delta_ts>2012-02-17 23:20:52 -0800</delta_ts>
            <desc>Fixed patch for the comment #40</desc>
            <filename>vibration.patch</filename>
            <type>text/plain</type>
            <size>28588</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNmM0MDNiLi4wNGYyODY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDEt
MjkgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRk
IGEgbmV3IHRlc3QgY2FzZSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAxMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJh
dGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRvci12
aWJyYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6
CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2lu
Y2Fpcm8vU2tpcHBlZDoKKwogMjAxMi0wMS0yNSAgTWlrZSBMYXd0aGVyICA8bWlrZWxhd3RoZXJA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIHRhYmxlIGJvcmRlciBzcGFjaW5nIHRlc3QgZm9yIENT
UzMgY2FsYwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJh
dGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0
aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTI5
NjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZp
YnJhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGVzdCBmb3IgdGhlIFZpYnJh
dGlvbiBBUEkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5hdmlnYXRv
ci53ZWJraXRWaWJyYXRlKDApOyBpcyB1bmRlZmluZWQKK1BBU1MgbmF2aWdhdG9yLndlYmtpdFZp
YnJhdGUoW10pOyBpcyB1bmRlZmluZWQKK1BBU1MgbmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoKTsg
aXMgdW5kZWZpbmVkCitQQVNTIG5hdmlnYXRvci53ZWJraXRWaWJyYXRlKDEwMDApOyBpcyB1bmRl
ZmluZWQKK1BBU1MgbmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoWzEwMDAsIDMwMCwgNTAwXSk7IGlz
IHVuZGVmaW5lZAorRkFJTCBuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZSg0Mjk0OTY3Mjk1KTsgc2hv
dWxkIGJlIHVuZGVmaW5lZC4gVGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VS
UjogRE9NIEV4Y2VwdGlvbiA5CitQQVNTIG5hdmlnYXRvci53ZWJraXRWaWJyYXRlKDQyOTQ5Njcy
OTYpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0
aW9uIDkuCitQQVNTIG5hdmlnYXRvci53ZWJraXRWaWJyYXRlKC0xKTsgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBuYXZpZ2F0
b3Iud2Via2l0VmlicmF0ZSgxLjIzKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9S
VEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25h
dmlnYXRvci12aWJyYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci12
aWJyYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zMGJiZDQ2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJh
dGlvbi5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IGZvciB0aGUgVmlicmF0aW9uIEFQSS4nKTsK
Kworc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRWaWJyYXRlKDApOyIsICJ1bmRlZmluZWQiKTsK
K3Nob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZShbXSk7IiwgInVuZGVmaW5lZCIpOwor
c2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRWaWJyYXRlKCk7IiwgInVuZGVmaW5lZCIpOworc2hv
dWxkQmUoIm5hdmlnYXRvci53ZWJraXRWaWJyYXRlKDEwMDApOyIsICJ1bmRlZmluZWQiKTsKK3No
b3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZShbMTAwMCwgMzAwLCA1MDBdKTsiLCAidW5k
ZWZpbmVkIik7CitzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoNDI5NDk2NzI5NSk7
IiwgInVuZGVmaW5lZCIpOyAvLyBUaGlzIGZhaWxzIGluIEpTQyBkdWUgdG8gYnVnIDc3MzE3Citz
aG91bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoNDI5NDk2NzI5Nik7Iik7CitzaG91
bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoLTEpOyIpOworc2hvdWxkVGhyb3coIm5h
dmlnYXRvci53ZWJraXRWaWJyYXRlKDEuMjMpOyIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVj
dGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQKaW5kZXggN2E3MDk4Mi4uNGIzNjkxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtMTAxLDYgKzEwMSw5
IEBAIEJVR0NSMTAzOTM5IFNLSVAgOiBodHRwL3Rlc3RzL2FwcGNhY2hlL3dyb25nLWNvbnRlbnQt
dHlwZS5odG1sID0gVEVYVAogLy8gYnVpbGQgZmxhZyB0dXJuZWQgb24uCiBCVUdHQklMTE9DSyBT
S0lQIDogd2ViaW50ZW50cyA9IEZBSUwKIAorLy8gVmlicmF0aW9uIEFQSSBpcyBub3Qgc3VwcG9y
dGVkIHlldCBpbiB0aGUgY2hyb21pdW0gcG9ydC4KK0JVR1dLNzIwMTAgU0tJUCA6IGZhc3QvZG9t
L25hdmlnYXRvci12aWJyYXRpb24uaHRtbCA9IEZBSUwKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIFdPTlRG
SVggVEVTVFMKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDM0ZDk3
Y2IuLjRlNmFiNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVk
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0zODYsNiArMzg2LDkg
QEAgaHR0cC90ZXN0cy9zZWN1cml0eS93ZWJnbC1yZW1vdGUtcmVhZC1yZW1vdGUtaW1hZ2UtYWxs
b3dlZC5odG1sCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3dlYmdsLXJlbW90ZS1yZWFkLXJlbW90ZS1p
bWFnZS1ibG9ja2VkLW5vLWNyb3Nzb3JpZ2luLmh0bWwKIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2Vi
Z2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdlLWFsbG93ZWQtd2l0aC1jcmVkZW50aWFscy5odG1s
CiAKKyNWaWJyYXRpb24gQVBJIHN1cHBvcnQgbm90IHlldC4gaHR0cDovL3dlYmtpdC5vcmcvYi83
MjAxMAorZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5odG1sCisKICMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKICMgVEVTVFMgRkFJTElORwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvU2tpcHBlZAppbmRleCA5ZTZkZDY2Li4yNTMzZGExIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvU2tpcHBlZApAQCAtNTQxLDMgKzU0MSw3IEBAIG1lZGlhL1czQy92aWRlby9jYW5QbGF5VHlw
ZS9jYW5QbGF5VHlwZV90d29faW1wbGllc19vbmVfMy5odG1sCiBtZWRpYS9XM0MvdmlkZW8vY2Fu
UGxheVR5cGUvY2FuUGxheVR5cGVfdHdvX2ltcGxpZXNfb25lXzQuaHRtbAogbWVkaWEvVzNDL3Zp
ZGVvL2NhblBsYXlUeXBlL2NhblBsYXlUeXBlX3R3b19pbXBsaWVzX29uZV81Lmh0bWwKIG1lZGlh
L1czQy92aWRlby9jYW5QbGF5VHlwZS9jYW5QbGF5VHlwZV90d29faW1wbGllc19vbmVfNi5odG1s
CisKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDEwCisjIE5l
ZWRzIFBhZ2VDbGllbnRzOjp2aWJyYXRpb25DbGllbnQoKSBpbXBsZW1lbnRhdGlvbi4KK2Zhc3Qv
ZG9tL25hdmlnYXRvci12aWJyYXRpb24uaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXgg
MjQ5MTRjNy4uNDU3ODk1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tp
cHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0zMTYsNiArMzE2
LDkgQEAgZmFzdC9wYXJzZXIvcHJlLWh0bWw1LXBhcnNlci1xdWlya3MuaHRtbAogIyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIzNjMKIGZhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcG9zdG1lc3NhZ2UtYXJyYXlzLmh0bWwKIAorI1ZpYnJhdGlvbiBBUEkgaXMgbm90IGlt
cGxlbWVudGVkLgorZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5odG1sCisKICMgPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ICMKICMgICAgICAgRHJhZyBhbmQgRHJvcCBTdXBwb3J0IGluIERSVC4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ICMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggMWMyZWE2Mi4uOTZiMGRkZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTE2MDgsMyArMTYwOCw2IEBAIGZhc3QvY3NzL2Jp
ZGktb3ZlcnJpZGUtaW4tYW5vbnltb3VzLWJsb2NrLmh0bWwKIGZhc3QvZG9tL0hUTUxUYWJsZUVs
ZW1lbnQvY29sU3Bhbi5odG1sCiBmYXN0L2RvbS9IVE1MVGFibGVFbGVtZW50L2NyZWF0ZUNhcHRp
b24uaHRtbAogZmFzdC9yZXBhaW50L3RhYmxlLXNlY3Rpb24tcmVwYWludC5odG1sCisKKyNWaWJy
YXRpb24gQVBJIGlzIG5vdCBpbXBsZW1lbnRlZC4KK2Zhc3QvZG9tL25hdmlnYXRvci12aWJyYXRp
b24uaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBl
ZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKaW5kZXggYzYwNzI2OS4u
NWM1MzkzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCkBAIC0yMDM4LDMg
KzIwMzgsNiBAQCBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFycmF5cy5odG1s
CiAKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDkzCiBmYXN0
L2NhbnZhcy93ZWJnbC9hcnJheWJ1ZmZlci10cmFuc2Zlci1vZi1jb250cm9sLmh0bWwKKworI1Zp
YnJhdGlvbiBBUEkgaXMgbm90IGltcGxlbWVudGVkLgorZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJh
dGlvbi5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDM2NmMyYTAuLjg0NDhjNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC0yMjI5LDYgKzIyMjksMTkgQEAgSUYgKEVOQUJMRV9SRVFVRVNU
X0FOSU1BVElPTl9GUkFNRSkKICAgICApCiBFTkRJRiAoKQogCitJRiAoRU5BQkxFX1ZJQlJBVElP
TikKKyAgICBMSVNUKEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAg
JHtXRUJDT1JFX0RJUn0vTW9kdWxlcy92aWJyYXRpb24KKyAgICApCisgICAgTElTVChBUFBFTkQg
V2ViQ29yZV9JRExfRklMRVMKKyAgICAgICAgTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmli
cmF0aW9uLmlkbAorICAgICkKKyAgICBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAg
ICAgTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmNwcAorICAgICAgICBNb2R1
bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uY3BwCisgICAgKQorRU5ESUYgKCkKKwogIyBNb2R1bGVz
IHRoYXQgdGhlIGJpbmRpbmdzIGdlbmVyYXRvciBzY3JpcHRzIG1heSB1c2UKIFNFVChTQ1JJUFRT
X1JFU09MVkVfU1VQUExFTUVOVEFMCiAgICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0
cy9JRExQYXJzZXIucG0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5MTA2MWUyLi43NTEwOGIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNjggQEAKKzIwMTItMDEtMjkgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25A
c2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRkIGEgbmV3IEFQSSBmb3IgdGhlIFZpYnJhdGlvbiBB
UEkoVzNDKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcyMDEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cDovL2Rldi53My5vcmcvMjAwOS9kYXAvdmlicmF0aW9uLworICAgICAgICBUaGlzIHBhdGNo
IGltcGxlbWVudHMgbmF2aWdhdG9yLndlYmtpdHZpYnJhdGUoKSBBUEkuCisgICAgICAgIFRoaXMg
QVBJIG9wZXJhdGVzIGRpZmZlcmVudGx5IGRlcGVuZGluZyB1cG9uIGEgZ2l2ZW4gcGFyYW1ldGVy
OgorICAgICAgICAxLiBJdCBjYW5jZWxzIHZpYnJhdGlvbiB3aGVuIGdpdmVuIDAgb3IgW10uCisg
ICAgICAgIDIuIEl0IGdpdmVzIGEgdmlicmF0aW9uIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcyB3
aGVuIGdpdmVuIGFzIGEgc2luZ2xlIGludGVnZXIgdmFsdWUuCisgICAgICAgIDMuIEl0IGdpdmVz
IGEgdmlicmF0aW9uIHBhdHRlcm4gd2hlbiBnaXZlbiBhcyBhbiBpbnRlZ2VyIGFycmF5LiBGb3Ig
aW5zdGFuY2UsIFsxMDAwIDMwMCAxMDAwXSBnZW5lcmF0ZXMgYSB2aWJyYXRpb24gb2YgMTAwMG1z
IGZvbGxvd2VkIGJ5IDMwMG1zIG9mIGlkbGUgdGltZSwgYW5kIHRoZW4gY3JlYXRlcyBhbm90aGVy
IHZpYnJhdGlvbiBvZiAxMDAwbXMuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vbmF2aWdhdG9y
LXZpYnJhdGlvbi5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBN
b2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAg
IFRoZXJlIGlzIGEgd2Via2l0VmlicmF0ZSgpIG1ldGhvZCBpbiB0aGlzIGNsYXNzLgorICAgICAg
ICAgSXQgY2hlY2tzIGlmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyB0aGUgdmlicmF0aW9uLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JWaWJyYXRpb246Ok5h
dmlnYXRvclZpYnJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JWaWJyYXRpb246
On5OYXZpZ2F0b3JWaWJyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yVmlicmF0
aW9uOjp3ZWJraXRWaWJyYXRlKToKKyAgICAgICAgIEFkZCB3ZWJraXRWaWJyYXRlIG1ldGhvZCB0
byBnZXQgYW4gYXJyYXkgcGFyYW1ldGVyLgorICAgICAgICAgVGhlcmUgaXMgbm8gd2F5IHRvIGdl
dCBhbiBhcnJheSB0eXBlIHBhcmFtZXRlci4KKyAgICAgICAgIFRoaXMgbWV0aG9kIGNoZWNrcyB0
eXBlcyBhbmQgdmFsdWVzIG9mIHBhcmFtZXRlci4KKyAgICAgICAgKiBNb2R1bGVzL3ZpYnJhdGlv
bi9OYXZpZ2F0b3JWaWJyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKE5hdmlnYXRvclZpYnJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy92aWJyYXRpb24vTmF2
aWdhdG9yVmlicmF0aW9uLmlkbDogQWRkZWQuCisgICAgICAgICBBZGQgdGhlIFtKU0NDdXN0b21d
IHdlYmtpdHZpYnJhdGUoKSBtZXRob2QsIGFuZCB3ZWJraXR2aWJyYXRlKCkgaXMgb25seSBzdXBw
b3J0ZWQgd2l0aCBKU0MgYXQgdGhpcyB0aW1lLgorICAgICAgICAqIE1vZHVsZXMvdmlicmF0aW9u
L1ZpYnJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRo
ZSBlbnRpcmUgdmlicmF0aW9uIGxvZ2ljLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWJyYXRpb246OlZpYnJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRp
b246On5WaWJyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uOjp2aWJyYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6Y2FuY2VsVmlicmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpYnJhdGlvbjo6c3VzcGVuZFZpYnJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpWaWJyYXRpb246OnJlc3VtZVZpYnJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRp
b246OnRpbWVyU3RhcnRGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb246OnRpbWVy
U3RvcEZpcmVkKToKKyAgICAgICAgKiBNb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFZpYnJhdGlvbik6CisgICAgICAgICog
TW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAgdmli
cmF0ZSgpIGFuZCBjYW5jZWxWaWJyYXRlKCkgbmVlZCB0byBiZSBpbXBsZW1lbnRlZCBpbiB0aGUg
VmlicmF0aW9uQ2xpZW50LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWaWJyYXRpb25D
bGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uQ2xpZW50Ojp+VmlicmF0aW9uQ2xp
ZW50KToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogYmluZGluZ3MvanMvSlNO
YXZpZ2F0b3JWaWJyYXRpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNOYXZpZ2F0b3I6OndlYmtpdFZpYnJhdGUpOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OlBhZ2VDbGllbnRzOjpQYWdlQ2xpZW50cyk6CisgICAgICAgICogcGFn
ZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKCk6CisgICAgICAgIChQYWdl
Q2xpZW50cyk6CisgICAgICAgIChQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnZpYnJh
dGlvbik6CisKIDIwMTItMDEtMjUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDU4NTguCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0
aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzkyMjFhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9y
VmlicmF0aW9uLmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAx
MiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJOYXZpZ2F0b3JWaWJyYXRpb24uaCIKKworI2lmIEVOQUJMRShWSUJSQVRJT04pCisK
KyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRl
ICJOYXZpZ2F0b3IuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiVmlicmF0aW9uLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTmF2aWdhdG9yVmlicmF0aW9uOjpOYXZpZ2F0b3JW
aWJyYXRpb24oKQoreworfQorCitOYXZpZ2F0b3JWaWJyYXRpb246On5OYXZpZ2F0b3JWaWJyYXRp
b24oKQoreworfQorCit2b2lkIE5hdmlnYXRvclZpYnJhdGlvbjo6d2Via2l0VmlicmF0ZShOYXZp
Z2F0b3IqIG5hdmlnYXRvciwgY29uc3QgVmlicmF0aW9uUGF0dGVybiYgcGF0dGVybiwgRXhjZXB0
aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFwYXR0ZXJuLnNpemUoKSB8fCAhbmF2aWdhdG9yLT5m
cmFtZSgpLT5wYWdlKCkpCisgICAgICAgIHJldHVybjsKKworI2lmIEVOQUJMRShQQUdFX1ZJU0lC
SUxJVFlfQVBJKQorICAgIGlmIChuYXZpZ2F0b3ItPmZyYW1lKCktPnBhZ2UoKS0+dmlzaWJpbGl0
eVN0YXRlKCkgPT0gUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbikKKyAgICAgICAgcmV0dXJuOwor
I2VuZGlmCisKKyAgICBpZiAoIW5hdmlnYXRvci0+ZnJhbWUoKS0+cGFnZSgpLT52aWJyYXRpb24o
KSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbmF2aWdhdG9yLT5mcmFtZSgpLT5wYWdlKCktPnZpYnJhdGlvbigpLT52aWJy
YXRlKHBhdHRlcm4pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoVklCUkFUSU9OKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Zp
YnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmli
cmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmY5M2E5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaApAQCAtMCwwICsxLDQ4IEBACisvKgorICog
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5k
ZWYgTmF2aWdhdG9yVmlicmF0aW9uX2gKKyNkZWZpbmUgTmF2aWdhdG9yVmlicmF0aW9uX2gKKwor
I2lmIEVOQUJMRShWSUJSQVRJT04pCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5hdmln
YXRvcjsKKwordHlwZWRlZiBWZWN0b3I8dW5zaWduZWQgbG9uZz4gVmlicmF0aW9uUGF0dGVybjsK
KworY2xhc3MgTmF2aWdhdG9yVmlicmF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCB3
ZWJraXRWaWJyYXRlKE5hdmlnYXRvciosIGNvbnN0IFZpYnJhdGlvblBhdHRlcm4mLCBFeGNlcHRp
b25Db2RlJik7CisKK3ByaXZhdGU6CisgICAgTmF2aWdhdG9yVmlicmF0aW9uKCk7CisgICAgfk5h
dmlnYXRvclZpYnJhdGlvbigpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFZJQlJBVElPTikKKworI2VuZGlmIC8vIE5hdmlnYXRvclZpYnJhdGlvbl9o
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRv
clZpYnJhdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0
b3JWaWJyYXRpb24uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZjNj
NTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9O
YXZpZ2F0b3JWaWJyYXRpb24uaWRsCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworbW9kdWxlIHdpbmRvdyB7
CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1WSUJSQVRJT04sCisgICAg
ICAgIFN1cHBsZW1lbnRhbD1OYXZpZ2F0b3IKKyAgICBdIE5hdmlnYXRvclZpYnJhdGlvbiB7Cisg
ICAgICAgIFtKU0NDdXN0b21dIHZvaWQgd2Via2l0VmlicmF0ZShpbiBBcnJheSBwYXR0ZXJuKSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xMTczZGJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy92aWJyYXRpb24vVmlicmF0aW9uLmNwcApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVmlicmF0aW9uLmgiCisKKyNpZiBFTkFCTEUoVklCUkFUSU9O
KQorCisjaW5jbHVkZSAiVmlicmF0aW9uQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworVmlicmF0aW9uOjpWaWJyYXRpb24oVmlicmF0aW9uQ2xpZW50KiBWaWJyYXRpb25DbGllbnQp
CisgICAgOiBtX3ZpYnJhdGlvbkNsaWVudChWaWJyYXRpb25DbGllbnQpCisgICAgLCBtX3RpbWVy
U3RhcnQodGhpcywgJlZpYnJhdGlvbjo6dGltZXJTdGFydEZpcmVkKQorICAgICwgbV90aW1lclN0
b3AodGhpcywgJlZpYnJhdGlvbjo6dGltZXJTdG9wRmlyZWQpCisgICAgLCBtX2lzVmlicmF0aW5n
KGZhbHNlKQoreworfQorCitWaWJyYXRpb246On5WaWJyYXRpb24oKQoreworICAgIG1fdmlicmF0
aW9uQ2xpZW50LT52aWJyYXRpb25EZXN0cm95ZWQoKTsKK30KKwordm9pZCBWaWJyYXRpb246OnZp
YnJhdGUoY29uc3QgVmlicmF0aW9uUGF0dGVybiYgcGF0dGVybikKK3sKKyAgICBpbnQgbGVuZ3Ro
ID0gcGF0dGVybi5zaXplKCk7CisKKyAgICBpZiAoIWxlbmd0aCB8fCAobGVuZ3RoID09IDEgJiYg
IXBhdHRlcm5bMF0pKSB7CisgICAgICAgIGlmIChtX2lzVmlicmF0aW5nKQorICAgICAgICAgICAg
Y2FuY2VsVmlicmF0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1f
aXNWaWJyYXRpbmcgJiYgIW1fdGltZXJTdGFydC5pc0FjdGl2ZSgpKSB7CisgICAgICAgIG1fcGF0
dGVybiA9IHBhdHRlcm47CisgICAgICAgIG1fdGltZXJTdGFydC5zdGFydE9uZVNob3QoMCk7Cisg
ICAgfQorfQorCit2b2lkIFZpYnJhdGlvbjo6Y2FuY2VsVmlicmF0aW9uKCkKK3sKKyAgICBpZiAo
bV9pc1ZpYnJhdGluZykgeworICAgICAgICBtX3ZpYnJhdGlvbkNsaWVudC0+Y2FuY2VsVmlicmF0
aW9uKCk7CisgICAgICAgIG1faXNWaWJyYXRpbmcgPSBmYWxzZTsKKyAgICAgICAgbV90aW1lclN0
b3Auc3RvcCgpOworICAgIH0KK30KKwordm9pZCBWaWJyYXRpb246OnN1c3BlbmRWaWJyYXRpb24o
KQoreworICAgIGlmICghbV9pc1ZpYnJhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9w
YXR0ZXJuLmluc2VydCgwLCBtX3RpbWVyU3RvcC5uZXh0RmlyZUludGVydmFsKCkpOworICAgIG1f
dGltZXJTdG9wLnN0b3AoKTsKKyAgICBjYW5jZWxWaWJyYXRpb24oKTsKK30KKwordm9pZCBWaWJy
YXRpb246OnJlc3VtZVZpYnJhdGlvbigpCit7CisgICAgbV90aW1lclN0YXJ0LnN0YXJ0T25lU2hv
dCgwKTsKK30KKwordm9pZCBWaWJyYXRpb246OnRpbWVyU3RhcnRGaXJlZChUaW1lcjxWaWJyYXRp
b24+KiB0aW1lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV90aW1l
clN0YXJ0KTsKKworICAgIG1fdGltZXJTdGFydC5zdG9wKCk7CisKKyAgICBpZiAobV9wYXR0ZXJu
LnNpemUoKSkgeworICAgICAgICBtX2lzVmlicmF0aW5nID0gdHJ1ZTsKKyAgICAgICAgbV92aWJy
YXRpb25DbGllbnQtPnZpYnJhdGUobV9wYXR0ZXJuWzBdKTsKKyAgICAgICAgbV90aW1lclN0b3Au
c3RhcnRPbmVTaG90KG1fcGF0dGVyblswXSAvIDEwMDAuMCk7CisgICAgICAgIG1fcGF0dGVybi5y
ZW1vdmUoMCk7CisgICAgfQorfQorCit2b2lkIFZpYnJhdGlvbjo6dGltZXJTdG9wRmlyZWQoVGlt
ZXI8VmlicmF0aW9uPiogdGltZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIg
PT0gJm1fdGltZXJTdG9wKTsKKworICAgIG1fdGltZXJTdG9wLnN0b3AoKTsKKyAgICBtX2lzVmli
cmF0aW5nID0gZmFsc2U7CisKKyAgICBpZiAobV9wYXR0ZXJuLnNpemUoKSkgeworICAgICAgICBt
X3RpbWVyU3RhcnQuc3RhcnRPbmVTaG90KG1fcGF0dGVyblswXSAvIDEwMDAuMCk7CisgICAgICAg
IG1fcGF0dGVybi5yZW1vdmUoMCk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoVklCUkFUSU9OKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmM0N2FiODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Zp
YnJhdGlvbi9WaWJyYXRpb24uaApAQCAtMCwwICsxLDYxIEBACisvKgorICogIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgVmlicmF0aW9u
X2gKKyNkZWZpbmUgVmlicmF0aW9uX2gKKworI2lmIEVOQUJMRShWSUJSQVRJT04pCisKKyNpbmNs
dWRlICJOYXZpZ2F0b3JWaWJyYXRpb24uaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUg
IlZpYnJhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9JbnQzMkFycmF5Lmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTmF2aWdhdG9yOworCitjbGFzcyBWaWJyYXRpb24gewor
cHVibGljOgorICAgIFZpYnJhdGlvbihWaWJyYXRpb25DbGllbnQqKTsKKyAgICB+VmlicmF0aW9u
KCk7CisKKyAgICB2b2lkIHZpYnJhdGUoY29uc3QgVmlicmF0aW9uUGF0dGVybiYpOworICAgIHZv
aWQgY2FuY2VsVmlicmF0aW9uKCk7CisKKyAgICAvLyBGSVhNRSA6IEFkZCBzdXNwZW5kVmlicmF0
aW9uKCkgYW5kIHJlc3VtZVZpYnJhdGlvbigpIHRvIHRoZSBwYWdlIHZpc2liaWxpdHkgZmVhdHVy
ZSwgd2hlbiB0aGUgZG9jdW1lbnQuaGlkZGVuIGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLgorICAgIHZv
aWQgc3VzcGVuZFZpYnJhdGlvbigpOworICAgIHZvaWQgcmVzdW1lVmlicmF0aW9uKCk7CisgICAg
dm9pZCB0aW1lclN0YXJ0RmlyZWQoVGltZXI8VmlicmF0aW9uPiopOworICAgIHZvaWQgdGltZXJT
dG9wRmlyZWQoVGltZXI8VmlicmF0aW9uPiopOworCitwcml2YXRlOgorICAgIFZpYnJhdGlvbkNs
aWVudCogbV92aWJyYXRpb25DbGllbnQ7CisgICAgVGltZXI8VmlicmF0aW9uPiBtX3RpbWVyU3Rh
cnQ7CisgICAgVGltZXI8VmlicmF0aW9uPiBtX3RpbWVyU3RvcDsKKyAgICBib29sIG1faXNWaWJy
YXRpbmc7CisgICAgVmlicmF0aW9uUGF0dGVybiBtX3BhdHRlcm47Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVklCUkFUSU9OKQorCisjZW5kaWYgLy8g
VmlicmF0aW9uX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRp
b24vVmlicmF0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9W
aWJyYXRpb25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTk1
ZGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24v
VmlicmF0aW9uQ2xpZW50LmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMp
IDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFZpYnJhdGlvbkNs
aWVudF9oCisjZGVmaW5lIFZpYnJhdGlvbkNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgVmlicmF0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5WaWJyYXRp
b25DbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aWJyYXRlKGNvbnN0IGxvbmcmIHRp
bWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVmlicmF0aW9uKCkgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIHZpYnJhdGlvbkRlc3Ryb3llZCgpID0gMDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFZpYnJhdGlvbkNsaWVudF9oCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFr
ZQppbmRleCAzOGU2NzMxLi5lMmZkYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VK
U0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCkBAIC0yNDUsNiArMjQ1
LDEyIEBAIElGIChFTkFCTEVfV0VCR0wpCiAgICAgKQogRU5ESUYgKCkKIAorSUYgKEVOQUJMRV9W
SUJSQVRJT04pCisgICAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgIGJpbmRp
bmdzL2pzL0pTTmF2aWdhdG9yVmlicmF0aW9uQ3VzdG9tLmNwcAorICAgICkKK0VORElGICgpCisK
IExJU1QoQVBQRU5EIFNDUklQVFNfQklORElOR1MKICAgICAke1dFQkNPUkVfRElSfS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yVmlicmF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yVmlicmF0aW9uQ3VzdG9tLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2UxNGRkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JWaWJyYXRpb25DdXN0b20uY3BwCkBA
IC0wLDAgKzEsNzMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJKU05hdmlnYXRvci5oIgorCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiTmF2aWdhdG9yVmlicmF0aW9uLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworSlNWYWx1
ZSBKU05hdmlnYXRvcjo6d2Via2l0VmlicmF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVmli
cmF0aW9uUGF0dGVybiBwYXR0ZXJuOworICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQor
ICAgICAgICBwYXR0ZXJuLmFwcGVuZCgwKTsKKyAgICBlbHNlIHsKKyAgICAgICAgSlNWYWx1ZSB2
YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgICAgICB1bnNpZ25lZCBsZW5ndGg7CisgICAg
ICAgIGlmICh2YWx1ZS5pc1VJbnQzMigpKQorICAgICAgICAgICAgcGF0dGVybi5hcHBlbmQodmFs
dWUuYXNVSW50MzIoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgSlNPYmplY3QqIG9i
amVjdCA9IHRvSlNTZXF1ZW5jZShleGVjLCB2YWx1ZSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIGV4ZWMtPmNsZWFyRXhj
ZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIE5PVF9TVVBQ
T1JURURfRVJSKTsKKyAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmICghbGVuZ3RoKQorICAgICAgICAgICAgICAgIHBhdHRl
cm4uYXBwZW5kKDApOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBpKTsK
KyAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkgfHwgIXZhbHVlLmlzVUlu
dDMyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIE5PVF9T
VVBQT1JURURfRVJSKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pc1VJbnQzMigp
KQorICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZCh2YWx1ZS5hc1VJbnQzMigpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIE5hdmlnYXRvclZpYnJhdGlvbjo6d2Via2l0VmlicmF0ZShtX2ltcGwsIHBhdHRl
cm4sIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
CisKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikKKworCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRl
eCAwYzZmZjU1Li45NzI1NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTkwLDYgKzkwLDEwIEBA
CiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNlbmRpZgogCisjaWYgRU5BQkxF
KFZJQlJBVElPTikKKyNpbmNsdWRlICJWaWJyYXRpb24uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBIYXNoU2V0PFBhZ2UqPiogYWxsUGFnZXM7CkBAIC0xODIsNiAr
MTg2LDkgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX3Zp
c2liaWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSkKICNlbmRpZgogICAgICwg
bV9kaXNwbGF5SUQoMCkKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICwgbV92aWJyYXRpb24o
YWRvcHRQdHIobmV3IFZpYnJhdGlvbihwYWdlQ2xpZW50cy52aWJyYXRpb25DbGllbnQpKSkKKyNl
bmRpZgogewogICAgIGlmICghYWxsUGFnZXMpIHsKICAgICAgICAgYWxsUGFnZXMgPSBuZXcgSGFz
aFNldDxQYWdlKj47CkBAIC0xMDg4LDYgKzEwOTUsOSBAQCBQYWdlOjpQYWdlQ2xpZW50czo6UGFn
ZUNsaWVudHMoKQogICAgICwgc3BlZWNoSW5wdXRDbGllbnQoMCkKICAgICAsIG5vdGlmaWNhdGlv
bkNsaWVudCgwKQogICAgICwgdXNlck1lZGlhQ2xpZW50KDApCisjaWYgRU5BQkxFKFZJQlJBVElP
TikKKyAgICAsIHZpYnJhdGlvbkNsaWVudCgwKQorI2VuZGlmCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
aW5kZXggZWYxZDFkOS4uZjYzNGE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTkwLDYgKzkwLDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBjbGFz
cyBOb3RpZmljYXRpb25QcmVzZW50ZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQor
ICAgIGNsYXNzIFZpYnJhdGlvbjsKKyAgICBjbGFzcyBWaWJyYXRpb25DbGllbnQ7CisjZW5kaWYK
IAogICAgIHR5cGVkZWYgdWludDY0X3QgTGlua0hhc2g7CiAKQEAgLTEyMiw2ICsxMjYsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBTcGVlY2hJbnB1dENsaWVudCogc3BlZWNo
SW5wdXRDbGllbnQ7CiAgICAgICAgICAgICBOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNh
dGlvbkNsaWVudDsKICAgICAgICAgICAgIFVzZXJNZWRpYUNsaWVudCogdXNlck1lZGlhQ2xpZW50
OworI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgICAgICAgICBWaWJyYXRpb25DbGllbnQqIHZp
YnJhdGlvbkNsaWVudDsKKyNlbmRpZgogICAgICAgICB9OwogCiAgICAgICAgIFBhZ2UoUGFnZUNs
aWVudHMmKTsKQEAgLTM0OCw3ICszNTUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlm
CiAKICAgICAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4g
bV9kaXNwbGF5SUQ7IH0KLSAgICAgICAgCisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICAg
ICBWaWJyYXRpb24qIHZpYnJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmlicmF0aW9uLmdldCgp
OyB9CisjZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdEdyb3VwKCk7CiAK
QEAgLTQ2Miw2ICs0NzMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYWdlVmlz
aWJpbGl0eVN0YXRlIG1fdmlzaWJpbGl0eVN0YXRlOwogI2VuZGlmCiAgICAgICAgIFBsYXRmb3Jt
RGlzcGxheUlEIG1fZGlzcGxheUlEOworI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgICAgIE93
blB0cjxWaWJyYXRpb24+IG1fdmlicmF0aW9uOworI2VuZGlmCisKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggOGQ0OTBjMC4uNTUzMGVhMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAxLTI5ICBLaWhv
bmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIEFkZCBhIG5ldyBB
UEkgZm9yIHRoZSBWaWJyYXRpb24gQVBJKFczQykuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnLzIwMDkvZGFwL3ZpYnJhdGlv
bi8KKworICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OiBBZGQgRU5BQkxFX1ZJQlJBVElP
TiBmZWF0dXJlLgorCiAyMDEyLTAxLTI1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVGVtcG9yYXJpbHkgZGlzYWJsZSBydW5uaW5nIHRoZSB1bml0IHRlc3RzIG9u
IHRoZSBDaHJvbWl1bSBFV1MuICBUaGVzZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9idWls
ZC13ZWJraXQgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAppbmRleCBiOWI5OTcyLi5kNzNk
ZThkIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAorKysgYi9Ub29scy9T
Y3JpcHRzL2J1aWxkLXdlYmtpdApAQCAtMTI2LDYgKzEyNiw3IEBAIG15ICgKICAgICAkdGlsZWRC
YWNraW5nU3RvcmVTdXBwb3J0LAogICAgICR0b3VjaEV2ZW50c1N1cHBvcnQsCiAgICAgJHRvdWNo
SWNvbkxvYWRpbmdTdXBwb3J0LAorICAgICR2aWJyYXRpb25TdXBwb3J0LAogICAgICR2aWRlb1N1
cHBvcnQsCiAgICAgJHZpZGVvVHJhY2tTdXBwb3J0LAogICAgICR3ZWJBdWRpb1N1cHBvcnQsCkBA
IC0zMjAsNiArMzIxLDkgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICJ0b3Vj
aC1pY29uLWxvYWRpbmciLCBkZXNjID0+ICJUb2dnbGUgVG91Y2ggSWNvbiBMb2FkaW5nIFN1cHBv
cnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HIiwgZGVmYXVs
dCA9PiAwLCB2YWx1ZSA9PiBcJHRvdWNoSWNvbkxvYWRpbmdTdXBwb3J0IH0sCiAKKyAgICB7IG9w
dGlvbiA9PiAidmlicmF0aW9uIiwgZGVzYyA9PiAiVG9nZ2xlIFZpZGVvIHN1cHBvcnQiLAorICAg
ICAgZGVmaW5lID0+ICJFTkFCTEVfVklCUkFUSU9OIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBc
JHZpYnJhdGlvblN1cHBvcnQgfSwKKwogICAgIHsgb3B0aW9uID0+ICJ2aWRlbyIsIGRlc2MgPT4g
IlRvZ2dsZSBWaWRlbyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1ZJREVPIiwg
ZGVmYXVsdCA9PiAoaXNBcHBsZVdlYktpdCgpIHx8IGlzR3RrKCkgfHwgaXNCbGFja0JlcnJ5KCkp
LCB2YWx1ZSA9PiBcJHZpZGVvU3VwcG9ydCB9LAogCg==
</data>
<flag name="review"
          id="125763"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127696</attachid>
            <date>2012-02-17 23:20:52 -0800</date>
            <delta_ts>2012-02-20 02:27:40 -0800</delta_ts>
            <desc>Patch (Adopt Bug 78085 style).</desc>
            <filename>vibration.patch</filename>
            <type>text/plain</type>
            <size>24284</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3Yjk2YWY2Li41MzEwN2IzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDIt
MTcgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRk
IGEgbmV3IHRlc3QgY2FzZSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAxMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJh
dGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRvci12
aWJyYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6
CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2lu
Y2Fpcm8vU2tpcHBlZDoKKwogMjAxMi0wMi0xNyAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBBdm9pZCBpbmNvbnNpc3RlbmN5IGluIE5vZGU6OmluRG9jdW1lbnQg
ZHVlIHRvIERPTVN1YnRyZWVNb2RpZmllZCBkaXNwYXRjaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzBiYzhlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNSBAQAorVGVzdCBmb3IgdGhlIFZpYnJhdGlvbiBBUEkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIG5hdmlnYXRvci53ZWJraXRWaWJyYXRlKDApOyBpcyB1bmRlZmlu
ZWQKK1BBU1MgbmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoW10pOyBpcyB1bmRlZmluZWQKK1BBU1Mg
bmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoMTAwMCk7IGlzIHVuZGVmaW5lZAorUEFTUyBuYXZpZ2F0
b3Iud2Via2l0VmlicmF0ZShbMTAwMCwgMzAwLCA1MDBdKTsgaXMgdW5kZWZpbmVkCitQQVNTIG5h
dmlnYXRvci53ZWJraXRWaWJyYXRlKDQyOTQ5NjcyOTUpOyBpcyB1bmRlZmluZWQKK1BBU1MgbmF2
aWdhdG9yLndlYmtpdFZpYnJhdGUoKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBl
cnJvci4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA0ZmRkZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb24uaHRtbApAQCAtMCwwICsx
LDE4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbignVGVzdCBmb3IgdGhlIFZpYnJhdGlvbiBBUEkuJyk7CisKK3Nob3VsZEJlKCJuYXZpZ2F0
b3Iud2Via2l0VmlicmF0ZSgwKTsiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgibmF2aWdhdG9y
LndlYmtpdFZpYnJhdGUoW10pOyIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJuYXZpZ2F0b3Iu
d2Via2l0VmlicmF0ZSgxMDAwKTsiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgibmF2aWdhdG9y
LndlYmtpdFZpYnJhdGUoWzEwMDAsIDMwMCwgNTAwXSk7IiwgInVuZGVmaW5lZCIpOworc2hvdWxk
QmUoIm5hdmlnYXRvci53ZWJraXRWaWJyYXRlKDQyOTQ5NjcyOTUpOyIsICJ1bmRlZmluZWQiKTsK
K3Nob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZSgpOyIpOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggMTViMGQ5Zi4uOTQ3OWJkOSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAt
MTExLDYgKzExMSw5IEBAIEJVR05PRUwgOiBzdmcvY2FydG8ubmV0L3NlbGVjdGlvbmxpc3Quc3Zn
ID0gSU1BR0UrVEVYVCBJTUFHRQogLy8gTmV3IHRlc3QsIG5lZWRzIGJhc2VsaW5lcy4KIAogCisv
LyBWaWJyYXRpb24gQVBJIGlzIG5vdCBzdXBwb3J0ZWQgeWV0IGluIHRoZSBjaHJvbWl1bSBwb3J0
LgorQlVHV0s3MjAxMCBTS0lQIDogZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5odG1sID0g
RkFJTAorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gV09OVEZJWCBURVNUUwogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggMzQ2YThmYi4uZmY5ZjU2NCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1NraXBwZWQKQEAgLTM5Myw2ICszOTMsOSBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L3dlYmds
LXJlbW90ZS1yZWFkLXJlbW90ZS1pbWFnZS1hbGxvd2VkLmh0bWwKIGh0dHAvdGVzdHMvc2VjdXJp
dHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdlLWJsb2NrZWQtbm8tY3Jvc3NvcmlnaW4u
aHRtbAogaHR0cC90ZXN0cy9zZWN1cml0eS93ZWJnbC1yZW1vdGUtcmVhZC1yZW1vdGUtaW1hZ2Ut
YWxsb3dlZC13aXRoLWNyZWRlbnRpYWxzLmh0bWwKIAorI1ZpYnJhdGlvbiBBUEkgc3VwcG9ydCBu
b3QgeWV0LiBodHRwOi8vd2Via2l0Lm9yZy9iLzcyMDEwCitmYXN0L2RvbS9uYXZpZ2F0b3Itdmli
cmF0aW9uLmh0bWwKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBURVNUUyBGQUlMSU5HCiAj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4IDVjZGUz
OWEuLjY0M2VhYTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVk
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBAIC01NTAsMyArNTUwLDcg
QEAgbWVkaWEvVzNDL3ZpZGVvL2NhblBsYXlUeXBlL2NhblBsYXlUeXBlX3R3b19pbXBsaWVzX29u
ZV82Lmh0bWwKICMgRmFpbHMgYmVjYXVzZSBNdXRhdGlvbk9ic2VydmVycyBhcmUgbm90IG5vdGlm
aWVkIGF0IGVuZC1vZi10YXNrCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03ODI5MAogZmFzdC9tdXRhdGlvbi9lbmQtb2YtdGFzay1kZWxpdmVyeS5odG1sCisKKyMg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDEwCisjIE5lZWRzIFBh
Z2VDbGllbnRzOjp2aWJyYXRpb25DbGllbnQoKSBpbXBsZW1lbnRhdGlvbi4KK2Zhc3QvZG9tL25h
dmlnYXRvci12aWJyYXRpb24uaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggODlkNWNj
ZC4uMjQ5MDg4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0zMzMsNiArMzMzLDkgQEAg
ZmFzdC9wYXJzZXIvcHJlLWh0bWw1LXBhcnNlci1xdWlya3MuaHRtbAogIyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIzNjMKIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cG9zdG1lc3NhZ2UtYXJyYXlzLmh0bWwKIAorI1ZpYnJhdGlvbiBBUEkgaXMgbm90IGltcGxlbWVu
dGVkLgorZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5odG1sCisKICMgPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ICMKICMgICAgICAgRHJhZyBhbmQgRHJvcCBTdXBwb3J0IGluIERSVC4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICMgPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggZmVlN2ExYS4uNzc2ZGRmMiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1NraXBwZWQKQEAgLTE2NDUsMyArMTY0NSw2IEBAIGZhc3QvcmVwYWludC90YWJs
ZS1zZWN0aW9uLXJlcGFpbnQuaHRtbAogLy8gTmVlZCByZWJhc2VsaW5pbmcgYWZ0ZXIgYnVnIDM3
MjQ0LgogdGFibGVzL21vemlsbGEvYnVncy9idWcyNzAzOC0xLmh0bWwKIHRhYmxlcy9tb3ppbGxh
L2J1Z3MvYnVnMjcwMzgtMi5odG1sCisKKyNWaWJyYXRpb24gQVBJIGlzIG5vdCBpbXBsZW1lbnRl
ZC4KK2Zhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb24uaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bmNhaXJvL1NraXBwZWQKaW5kZXggMmQyZGNjZi4uNGUzOTgzMiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW5jYWlyby9Ta2lwcGVkCkBAIC0yMDQ1LDMgKzIwNDUsNiBAQCBmYXN0L2NhbnZhcy93ZWJn
bC9hcnJheWJ1ZmZlci10cmFuc2Zlci1vZi1jb250cm9sLmh0bWwKICMgRmFpbHMgYmVjYXVzZSBN
dXRhdGlvbk9ic2VydmVycyBhcmUgbm90IG5vdGlmaWVkIGF0IGVuZC1vZi10YXNrCiAjIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODI5MAogZmFzdC9tdXRhdGlvbi9l
bmQtb2YtdGFzay1kZWxpdmVyeS5odG1sCisKKyNWaWJyYXRpb24gQVBJIGlzIG5vdCBpbXBsZW1l
bnRlZC4KK2Zhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb24uaHRtbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCAzMjA5ZGZiLi4zMDg0NzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjI1MCw2
ICsyMjUwLDE5IEBAIElGIChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAgICAgKQog
RU5ESUYgKCkKIAorSUYgKEVOQUJMRV9WSUJSQVRJT04pCisgICAgTElTVChBUFBFTkQgV2ViQ29y
ZV9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvdmli
cmF0aW9uCisgICAgKQorICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCisgICAgICAg
IE1vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5pZGwKKyAgICApCisgICAgTElT
VChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgIE1vZHVsZXMvdmlicmF0aW9uL05hdmln
YXRvclZpYnJhdGlvbi5jcHAKKyAgICAgICAgTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmNw
cAorICAgICkKK0VORElGICgpCisKICMgTW9kdWxlcyB0aGF0IHRoZSBiaW5kaW5ncyBnZW5lcmF0
b3Igc2NyaXB0cyBtYXkgdXNlCiBTRVQoU0NSSVBUU19SRVNPTFZFX1NVUFBMRU1FTlRBTAogICAg
ICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggY2FjMzUxMS4uY2Y3ZjVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAy
LTE3ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIGh0
dHA6Ly9kZXYudzMub3JnLzIwMDkvZGFwL3ZpYnJhdGlvbi8KKyAgICAgICAgVGhpcyBwYXRjaCBp
bXBsZW1lbnRzIG5hdmlnYXRvci53ZWJraXR2aWJyYXRlKCkgQVBJLgorICAgICAgICBUaGlzIEFQ
SSBvcGVyYXRlcyBkaWZmZXJlbnRseSBkZXBlbmRpbmcgdXBvbiBhIGdpdmVuIHBhcmFtZXRlcjoK
KyAgICAgICAgMS4gSXQgY2FuY2VscyB2aWJyYXRpb24gd2hlbiBnaXZlbiAwIG9yIFtdLgorICAg
ICAgICAyLiBJdCBnaXZlcyBhIHZpYnJhdGlvbiBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMgd2hl
biBnaXZlbiBhcyBhIHNpbmdsZSBpbnRlZ2VyIHZhbHVlLgorICAgICAgICAzLiBJdCBnaXZlcyBh
IHZpYnJhdGlvbiBwYXR0ZXJuIHdoZW4gZ2l2ZW4gYXMgYW4gaW50ZWdlciBhcnJheS4gRm9yIGlu
c3RhbmNlLCBbMTAwMCAzMDAgMTAwMF0gZ2VuZXJhdGVzIGEgdmlicmF0aW9uIG9mIDEwMDBtcyBm
b2xsb3dlZCBieSAzMDBtcyBvZiBpZGxlIHRpbWUsIGFuZCB0aGVuIGNyZWF0ZXMgYW5vdGhlciB2
aWJyYXRpb24gb2YgMTAwMG1zLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb24uaHRtbAorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTW9kdWxlcy92aWJyYXRpb24vTmF2
aWdhdG9yVmlicmF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdmlnYXRvclZpYnJhdGlvbjo6TmF2aWdhdG9yVmlicmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvclZpYnJhdGlvbjo6fk5hdmlnYXRvclZpYnJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JWaWJyYXRpb246OndlYmtpdFZpYnJhdGUpOgorICAg
ICAgICBBZGQgd2Via2l0VmlicmF0ZSBtZXRob2QgdG8gZ2V0IGFuIGFycmF5IG9yIHNpbmdsZSBp
bnRlZ2VyIHBhcmFtZXRlciBmb3IgdmlicmF0aW5nLgorICAgICAgICBUaGV5IGNoZWNrIHZpYnJh
dGlvbiBpcyBhY3RpdmF0ZWQgaW4gdGhlIHBsYXRmb3JtLCBhbmQgdGhlbiBjYWxsIHZpYnJhdGUo
KSBpbiB0aGUgVmlicmF0aW9uIGNsYXNzLgorICAgICAgICAqIE1vZHVsZXMvdmlicmF0aW9uL05h
dmlnYXRvclZpYnJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
TmF2aWdhdG9yVmlicmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0
b3JWaWJyYXRpb24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3ZpYnJhdGlvbi9WaWJy
YXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBlbnRp
cmUgdmlicmF0aW9uIGxvZ2ljLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWJyYXRpb246OlZpYnJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb246On5W
aWJyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlicmF0aW9uOjp2aWJyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJh
dGlvbjo6Y2FuY2VsVmlicmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6c3Vz
cGVuZFZpYnJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb246OnJlc3VtZVZpYnJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb246OnRpbWVyU3RhcnRGaXJlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb246OnRpbWVyU3RvcEZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpYnJhdGlvbjo6c3VwcGxlbWVudE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Vmli
cmF0aW9uOjppc0FjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlVmlicmF0aW9uVG8p
OgorICAgICAgICAqIE1vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoVmlicmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZp
YnJhdGlvbjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uQ2xp
ZW50Lmg6IEFkZGVkLgorICAgICAgICB2aWJyYXRlKCkgYW5kIGNhbmNlbFZpYnJhdGUoKSBuZWVk
IHRvIGJlIGltcGxlbWVudGVkIGluIHRoZSBWaWJyYXRpb25DbGllbnQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFZpYnJhdGlvbkNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWaWJy
YXRpb25DbGllbnQ6On5WaWJyYXRpb25DbGllbnQpOgorCiAyMDEyLTAyLTE3ICBBZGFtIEtsZWlu
ICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEF2b2lkIGluY29uc2lzdGVuY3kgaW4g
Tm9kZTo6aW5Eb2N1bWVudCBkdWUgdG8gRE9NU3VidHJlZU1vZGlmaWVkIGRpc3BhdGNoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0
aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTQ2YmZmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9y
VmlicmF0aW9uLmNwcApAQCAtMCwwICsxLDgxIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAx
MiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJOYXZpZ2F0b3JWaWJyYXRpb24uaCIKKworI2lmIEVOQUJMRShWSUJSQVRJT04pCisK
KyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRl
ICJOYXZpZ2F0b3IuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiVmlicmF0aW9uLmgi
CisjaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
TmF2aWdhdG9yVmlicmF0aW9uOjpOYXZpZ2F0b3JWaWJyYXRpb24oKQoreworfQorCitOYXZpZ2F0
b3JWaWJyYXRpb246On5OYXZpZ2F0b3JWaWJyYXRpb24oKQoreworfQorCit2b2lkIE5hdmlnYXRv
clZpYnJhdGlvbjo6d2Via2l0VmlicmF0ZShOYXZpZ2F0b3IqIG5hdmlnYXRvciwgdW5zaWduZWQg
bG9uZyB0aW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW5hdmlnYXRvci0+ZnJh
bWUoKS0+cGFnZSgpKQorICAgICAgICByZXR1cm47CisKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklM
SVRZX0FQSSkKKyAgICBpZiAobmF2aWdhdG9yLT5mcmFtZSgpLT5wYWdlKCktPnZpc2liaWxpdHlT
dGF0ZSgpID09IFBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW4pCisgICAgICAgIHJldHVybjsKKyNl
bmRpZgorCisgICAgaWYgKCFWaWJyYXRpb246OmlzQWN0aXZlKG5hdmlnYXRvci0+ZnJhbWUoKS0+
cGFnZSgpKSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgVmlicmF0aW9uOjpmcm9tKG5hdmlnYXRvci0+ZnJhbWUoKS0+cGFn
ZSgpKS0+dmlicmF0ZSh0aW1lKTsKK30KKwordm9pZCBOYXZpZ2F0b3JWaWJyYXRpb246OndlYmtp
dFZpYnJhdGUoTmF2aWdhdG9yKiBuYXZpZ2F0b3IsIGNvbnN0IFZpYnJhdGlvblBhdHRlcm4mIHBh
dHRlcm4sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbmF2aWdhdG9yLT5mcmFtZSgp
LT5wYWdlKCkpCisgICAgICAgIHJldHVybjsKKworI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlf
QVBJKQorICAgIGlmIChuYXZpZ2F0b3ItPmZyYW1lKCktPnBhZ2UoKS0+dmlzaWJpbGl0eVN0YXRl
KCkgPT0gUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbikKKyAgICAgICAgcmV0dXJuOworI2VuZGlm
CisKKyAgICBpZiAoIVZpYnJhdGlvbjo6aXNBY3RpdmUobmF2aWdhdG9yLT5mcmFtZSgpLT5wYWdl
KCkpKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBWaWJyYXRpb246OmZyb20obmF2aWdhdG9yLT5mcmFtZSgpLT5wYWdlKCkp
LT52aWJyYXRlKHBhdHRlcm4pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoVklCUkFUSU9OKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjA5OGY2YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaApAQCAtMCwwICsxLDUwIEBACisv
KgorICogIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpZm5kZWYgTmF2aWdhdG9yVmlicmF0aW9uX2gKKyNkZWZpbmUgTmF2aWdhdG9yVmlicmF0aW9u
X2gKKworI2lmIEVOQUJMRShWSUJSQVRJT04pCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IE5hdmlnYXRvcjsKK2NsYXNzIFVpbnQzMkFycmF5OworCitjbGFzcyBOYXZpZ2F0b3JWaWJyYXRp
b24geworcHVibGljOgorICAgIHR5cGVkZWYgVmVjdG9yPHVuc2lnbmVkIGxvbmc+IFZpYnJhdGlv
blBhdHRlcm47CisKKyAgICBzdGF0aWMgdm9pZCB3ZWJraXRWaWJyYXRlKE5hdmlnYXRvciosIHVu
c2lnbmVkIGxvbmcgdGltZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyB2b2lkIHdlYmtp
dFZpYnJhdGUoTmF2aWdhdG9yKiwgY29uc3QgVmlicmF0aW9uUGF0dGVybiYsIEV4Y2VwdGlvbkNv
ZGUmKTsKKworcHJpdmF0ZToKKyAgICBOYXZpZ2F0b3JWaWJyYXRpb24oKTsKKyAgICB+TmF2aWdh
dG9yVmlicmF0aW9uKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoVklCUkFUSU9OKQorCisjZW5kaWYgLy8gTmF2aWdhdG9yVmlicmF0aW9uX2gKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmli
cmF0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZp
YnJhdGlvbi5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI0ODQ1ZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmln
YXRvclZpYnJhdGlvbi5pZGwKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMp
IDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCittb2R1bGUgd2luZG93IHsKKwor
ICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVZJQlJBVElPTiwKKyAgICAgICAg
U3VwcGxlbWVudGFsPU5hdmlnYXRvcgorICAgIF0gTmF2aWdhdG9yVmlicmF0aW9uIHsKKyAgICAg
ICAgdm9pZCB3ZWJraXRWaWJyYXRlKGluIHVuc2lnbmVkIGxvbmdbXSBwYXR0ZXJuKSByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCB3ZWJraXRWaWJyYXRlKGluIHVuc2lnbmVkIGxv
bmcgdGltZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uOWU1MmMzZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5jcHAKQEAgLTAsMCArMSwxNDQgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpYnJhdGlvbi5oIgorCisjaWYgRU5BQkxF
KFZJQlJBVElPTikKKworI2luY2x1ZGUgIlZpYnJhdGlvbkNsaWVudC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1ZpYnJhdGlvbjo6VmlicmF0aW9uKFZpYnJhdGlvbkNsaWVudCogY2xpZW50
KQorICAgIDogbV92aWJyYXRpb25DbGllbnQoY2xpZW50KQorICAgICwgbV90aW1lclN0YXJ0KHRo
aXMsICZWaWJyYXRpb246OnRpbWVyU3RhcnRGaXJlZCkKKyAgICAsIG1fdGltZXJTdG9wKHRoaXMs
ICZWaWJyYXRpb246OnRpbWVyU3RvcEZpcmVkKQorICAgICwgbV9pc1ZpYnJhdGluZyhmYWxzZSkK
K3sKK30KKworVmlicmF0aW9uOjp+VmlicmF0aW9uKCkKK3sKKyAgICBtX3ZpYnJhdGlvbkNsaWVu
dC0+dmlicmF0aW9uRGVzdHJveWVkKCk7Cit9CisKK1Bhc3NPd25QdHI8VmlicmF0aW9uPiBWaWJy
YXRpb246OmNyZWF0ZShWaWJyYXRpb25DbGllbnQqIGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFZpYnJhdGlvbihjbGllbnQpKTsKK30KKwordm9pZCBWaWJyYXRpb246OnZpYnJh
dGUoY29uc3QgdW5zaWduZWQgbG9uZyYgdGltZSkKK3sKKyAgICBpZiAoIXRpbWUpIHsKKyAgICAg
ICAgY2FuY2VsVmlicmF0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9wYXR0
ZXJuLmFwcGVuZCh0aW1lKTsKKyAgICBtX3RpbWVyU3RhcnQuc3RhcnRPbmVTaG90KDApOworfQor
Cit2b2lkIFZpYnJhdGlvbjo6dmlicmF0ZShjb25zdCBWaWJyYXRpb25QYXR0ZXJuJiBwYXR0ZXJu
KQoreworICAgIGludCBsZW5ndGggPSBwYXR0ZXJuLnNpemUoKTsKKworICAgIGlmIChtX2lzVmli
cmF0aW5nKQorICAgICAgICBjYW5jZWxWaWJyYXRpb24oKTsKKworICAgIGlmICghbGVuZ3RoIHx8
IChsZW5ndGggPT0gMSAmJiAhcGF0dGVyblswXSkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChtX3RpbWVyU3RhcnQuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90aW1lclN0YXJ0LnN0b3AoKTsK
KworICAgIG1fcGF0dGVybiA9IHBhdHRlcm47CisgICAgbV90aW1lclN0YXJ0LnN0YXJ0T25lU2hv
dCgwKTsKK30KKwordm9pZCBWaWJyYXRpb246OmNhbmNlbFZpYnJhdGlvbigpCit7CisgICAgaWYg
KG1faXNWaWJyYXRpbmcpIHsKKyAgICAgICAgbV92aWJyYXRpb25DbGllbnQtPmNhbmNlbFZpYnJh
dGlvbigpOworICAgICAgICBtX2lzVmlicmF0aW5nID0gZmFsc2U7CisgICAgICAgIG1fdGltZXJT
dG9wLnN0b3AoKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlicmF0aW9uOjpzdXNwZW5kVmlicmF0aW9u
KCkKK3sKKyAgICBpZiAoIW1faXNWaWJyYXRpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
cGF0dGVybi5pbnNlcnQoMCwgbV90aW1lclN0b3AubmV4dEZpcmVJbnRlcnZhbCgpKTsKKyAgICBt
X3RpbWVyU3RvcC5zdG9wKCk7CisgICAgY2FuY2VsVmlicmF0aW9uKCk7Cit9CisKK3ZvaWQgVmli
cmF0aW9uOjpyZXN1bWVWaWJyYXRpb24oKQoreworICAgIG1fdGltZXJTdGFydC5zdGFydE9uZVNo
b3QoMCk7Cit9CisKK3ZvaWQgVmlicmF0aW9uOjp0aW1lclN0YXJ0RmlyZWQoVGltZXI8VmlicmF0
aW9uPiogdGltZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fdGlt
ZXJTdGFydCk7CisKKyAgICBtX3RpbWVyU3RhcnQuc3RvcCgpOworCisgICAgaWYgKG1fcGF0dGVy
bi5zaXplKCkpIHsKKyAgICAgICAgbV9pc1ZpYnJhdGluZyA9IHRydWU7CisgICAgICAgIG1fdmli
cmF0aW9uQ2xpZW50LT52aWJyYXRlKG1fcGF0dGVyblswXSk7CisgICAgICAgIG1fdGltZXJTdG9w
LnN0YXJ0T25lU2hvdChtX3BhdHRlcm5bMF0gLyAxMDAwLjApOworICAgICAgICBtX3BhdHRlcm4u
cmVtb3ZlKDApOworICAgIH0KK30KKwordm9pZCBWaWJyYXRpb246OnRpbWVyU3RvcEZpcmVkKFRp
bWVyPFZpYnJhdGlvbj4qIHRpbWVyKQoreworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVy
ID09ICZtX3RpbWVyU3RvcCk7CisKKyAgICBtX3RpbWVyU3RvcC5zdG9wKCk7CisgICAgbV9pc1Zp
YnJhdGluZyA9IGZhbHNlOworCisgICAgaWYgKG1fcGF0dGVybi5zaXplKCkpIHsKKyAgICAgICAg
bV90aW1lclN0YXJ0LnN0YXJ0T25lU2hvdChtX3BhdHRlcm5bMF0gLyAxMDAwLjApOworICAgICAg
ICBtX3BhdHRlcm4ucmVtb3ZlKDApOworICAgIH0KK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBW
aWJyYXRpb246OnN1cHBsZW1lbnROYW1lKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgbmFtZSwgKCJ2aWJyYXRpb24iKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisK
K2Jvb2wgVmlicmF0aW9uOjppc0FjdGl2ZShQYWdlKiBwYWdlKQoreworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxib29sPihWaWJyYXRpb246OmZyb20ocGFnZSkpOworfQorCit2b2lkIHByb3ZpZGVW
aWJyYXRpb25UbyhQYWdlKiBwYWdlLCBWaWJyYXRpb25DbGllbnQqIGNsaWVudCkKK3sKKyAgICBQ
YWdlU3VwcGxlbWVudDo6cHJvdmlkZVRvKHBhZ2UsIFZpYnJhdGlvbjo6c3VwcGxlbWVudE5hbWUo
KSwgVmlicmF0aW9uOjpjcmVhdGUoY2xpZW50KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShWSUJSQVRJT04pCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMjdlMDczNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
dmlicmF0aW9uL1ZpYnJhdGlvbi5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBWaWJyYXRp
b25faAorI2RlZmluZSBWaWJyYXRpb25faAorCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKworI2lu
Y2x1ZGUgIlBhZ2VTdXBwbGVtZW50LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5hdmlnYXRv
cjsKK2NsYXNzIFBhZ2U7CitjbGFzcyBWaWJyYXRpb25DbGllbnQ7CisKK2NsYXNzIFZpYnJhdGlv
biA6IHB1YmxpYyBQYWdlU3VwcGxlbWVudCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBWZWN0b3I8
dW5zaWduZWQgbG9uZz4gVmlicmF0aW9uUGF0dGVybjsKKworICAgIFZpYnJhdGlvbihWaWJyYXRp
b25DbGllbnQqKTsKKyAgICB+VmlicmF0aW9uKCk7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxW
aWJyYXRpb24+IGNyZWF0ZShWaWJyYXRpb25DbGllbnQqKTsKKworICAgIHZvaWQgdmlicmF0ZShj
b25zdCB1bnNpZ25lZCBsb25nJiB0aW1lKTsKKyAgICB2b2lkIHZpYnJhdGUoY29uc3QgVmlicmF0
aW9uUGF0dGVybiYpOworICAgIHZvaWQgY2FuY2VsVmlicmF0aW9uKCk7CisKKyAgICAvLyBGSVhN
RSA6IEFkZCBzdXNwZW5kVmlicmF0aW9uKCkgYW5kIHJlc3VtZVZpYnJhdGlvbigpIHRvIHRoZSBw
YWdlIHZpc2liaWxpdHkgZmVhdHVyZSwgd2hlbiB0aGUgZG9jdW1lbnQuaGlkZGVuIGF0dHJpYnV0
ZSBpcyBjaGFuZ2VkLgorICAgIHZvaWQgc3VzcGVuZFZpYnJhdGlvbigpOworICAgIHZvaWQgcmVz
dW1lVmlicmF0aW9uKCk7CisgICAgdm9pZCB0aW1lclN0YXJ0RmlyZWQoVGltZXI8VmlicmF0aW9u
PiopOworICAgIHZvaWQgdGltZXJTdG9wRmlyZWQoVGltZXI8VmlicmF0aW9uPiopOworCisgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VwcGxlbWVudE5hbWUoKTsKKyAgICBzdGF0aWMg
VmlicmF0aW9uKiBmcm9tKFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFZpYnJhdGlv
bio+KFBhZ2VTdXBwbGVtZW50Ojpmcm9tKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCkpKTsgfQorICAg
IHN0YXRpYyBib29sIGlzQWN0aXZlKFBhZ2UqKTsKKworcHJpdmF0ZToKKyAgICBWaWJyYXRpb25D
bGllbnQqIG1fdmlicmF0aW9uQ2xpZW50OworICAgIFRpbWVyPFZpYnJhdGlvbj4gbV90aW1lclN0
YXJ0OworICAgIFRpbWVyPFZpYnJhdGlvbj4gbV90aW1lclN0b3A7CisgICAgYm9vbCBtX2lzVmli
cmF0aW5nOworICAgIFZpYnJhdGlvblBhdHRlcm4gbV9wYXR0ZXJuOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikKKworI2VuZGlmIC8v
IFZpYnJhdGlvbl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0
aW9uL1ZpYnJhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24v
VmlicmF0aW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJl
Njg4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9u
L1ZpYnJhdGlvbkNsaWVudC5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChD
KSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBWaWJyYXRpb25D
bGllbnRfaAorI2RlZmluZSBWaWJyYXRpb25DbGllbnRfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFBhZ2U7CisKK2NsYXNzIFZpYnJhdGlvbkNsaWVudCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+VmlicmF0aW9uQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlicmF0
ZShjb25zdCB1bnNpZ25lZCBsb25nJiB0aW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNl
bFZpYnJhdGlvbigpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB2aWJyYXRpb25EZXN0cm95ZWQo
KSA9IDA7Cit9OworCit2b2lkIHByb3ZpZGVWaWJyYXRpb25UbyhQYWdlKiwgVmlicmF0aW9uQ2xp
ZW50Kik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFZpYnJhdGlvbkNs
aWVudF9oCisKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBkYjVkZWVhLi40NzVlYzFjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDItMTcgIEtpaG9uZyBLd29u
ICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRkIGEgbmV3IEFQSSBmb3Ig
dGhlIFZpYnJhdGlvbiBBUEkoVzNDKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTcyMDEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLXdlYmtpdDogQWRkIEVOQUJMRV9WSUJSQVRJ
T04gZmVhdHVyZS4KKwogMjAxMi0wMi0xNyAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBUaGUgbmV3IHJ1bi13ZWJraXQtdGVzdHMgbmVlZHMgdG8gZHVtcCBv
dXQgcGl4ZWwgaGFzaCBmYWlsdXJlcyBldmVuIGlmIHRoZSBwaXhlbCB0ZXN0IHBhc3Nlcy4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0IGIvVG9vbHMvU2NyaXB0cy9idWls
ZC13ZWJraXQKaW5kZXggODhiNDQ1ZS4uMjQxOTM4ZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy9idWlsZC13ZWJraXQKKysrIGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKQEAgLTEyOCw2
ICsxMjgsNyBAQCBteSAoCiAgICAgJHRpbGVkQmFja2luZ1N0b3JlU3VwcG9ydCwKICAgICAkdG91
Y2hFdmVudHNTdXBwb3J0LAogICAgICR0b3VjaEljb25Mb2FkaW5nU3VwcG9ydCwKKyAgICAkdmli
cmF0aW9uU3VwcG9ydCwKICAgICAkdmlkZW9TdXBwb3J0LAogICAgICR2aWRlb1RyYWNrU3VwcG9y
dCwKICAgICAkd2ViQXVkaW9TdXBwb3J0LApAQCAtMzI5LDYgKzMzMCw5IEBAIG15IEBmZWF0dXJl
cyA9ICgKICAgICB7IG9wdGlvbiA9PiAidG91Y2gtaWNvbi1sb2FkaW5nIiwgZGVzYyA9PiAiVG9n
Z2xlIFRvdWNoIEljb24gTG9hZGluZyBTdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxF
X1RPVUNIX0lDT05fTE9BRElORyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCR0b3VjaEljb25M
b2FkaW5nU3VwcG9ydCB9LAogCisgICAgeyBvcHRpb24gPT4gInZpYnJhdGlvbiIsIGRlc2MgPT4g
IlRvZ2dsZSBWaWRlbyBzdXBwb3J0IiwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1ZJQlJBVElP
TiIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCR2aWJyYXRpb25TdXBwb3J0IH0sCisKICAgICB7
IG9wdGlvbiA9PiAidmlkZW8iLCBkZXNjID0+ICJUb2dnbGUgVmlkZW8gc3VwcG9ydCIsCiAgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9WSURFTyIsIGRlZmF1bHQgPT4gKGlzQXBwbGVXZWJLaXQoKSB8
fCBpc0d0aygpIHx8IGlzQmxhY2tCZXJyeSgpKSwgdmFsdWUgPT4gXCR2aWRlb1N1cHBvcnQgfSwK
IAo=
</data>
<flag name="review"
          id="129899"
          type_id="1"
          status="-"
          setter="morrita"
    />
    <flag name="commit-queue"
          id="129900"
          type_id="3"
          status="-"
          setter="morrita"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127786</attachid>
            <date>2012-02-20 02:27:40 -0800</date>
            <delta_ts>2012-02-20 02:58:25 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>vibration.patch</filename>
            <type>text/plain</type>
            <size>32693</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2NWNjMWRjLi43YjA0YjMy
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTItMDItMTkgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgQWRkIGEgbmV3IEFQSSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkoVzNDKS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDEwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEltcGxlbWVudGF0aW9u
IGZvciB0aGUgVmlicmF0aW9uIEFQSSB0byB0aGUgV2ViS2l0LUVGTCBwb3J0LgorICAgICAgICBo
dHRwOi8vZGV2LnczLm9yZy8yMDA5L2RhcC92aWJyYXRpb24vCisKKyAgICAgICAgKiBTb3VyY2Uv
Y21ha2UvT3B0aW9uc0VmbC5jbWFrZTogQWRkIEVOQUJMRV9WSUJSQVRJT04gZmVhdHVyZS4KKyAg
ICAgICAgKiBTb3VyY2UvY21ha2Vjb25maWcuaC5jbWFrZToKKwogMjAxMi0wMi0xNyAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBwZXJmLW8tbWF0aWMgbmVlZHMg
bW9kZWwgdW5pdCB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdiOTZhZjYuLjUzMTA3YjMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAxMi0wMi0xNyAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNv
bT4KKworICAgICAgICBBZGQgYSBuZXcgdGVzdCBjYXNlIGZvciB0aGUgVmlicmF0aW9uIEFQSS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDEwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9uYXZpZ2F0b3ItdmlicmF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisgICAgICAgICogcGxh
dGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkOgorCiAyMDEyLTAyLTE3ICBBZGFtIEtsZWlu
ICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEF2b2lkIGluY29uc2lzdGVuY3kgaW4g
Tm9kZTo6aW5Eb2N1bWVudCBkdWUgdG8gRE9NU3VidHJlZU1vZGlmaWVkIGRpc3BhdGNoCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb24tZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MGJjOGUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUZXN0IGZvciB0aGUgVmlicmF0aW9uIEFQSS4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbmF2aWdhdG9yLndlYmtpdFZpYnJh
dGUoMCk7IGlzIHVuZGVmaW5lZAorUEFTUyBuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZShbXSk7IGlz
IHVuZGVmaW5lZAorUEFTUyBuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZSgxMDAwKTsgaXMgdW5kZWZp
bmVkCitQQVNTIG5hdmlnYXRvci53ZWJraXRWaWJyYXRlKFsxMDAwLCAzMDAsIDUwMF0pOyBpcyB1
bmRlZmluZWQKK1BBU1MgbmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoNDI5NDk2NzI5NSk7IGlzIHVu
ZGVmaW5lZAorUEFTUyBuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZSgpOyB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmln
YXRvci12aWJyYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci12aWJy
YXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDRmZGRkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlv
bi5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IGZvciB0aGUgVmlicmF0aW9uIEFQSS4nKTsKKwor
c2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRWaWJyYXRlKDApOyIsICJ1bmRlZmluZWQiKTsKK3No
b3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZShbXSk7IiwgInVuZGVmaW5lZCIpOworc2hv
dWxkQmUoIm5hdmlnYXRvci53ZWJraXRWaWJyYXRlKDEwMDApOyIsICJ1bmRlZmluZWQiKTsKK3No
b3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZShbMTAwMCwgMzAwLCA1MDBdKTsiLCAidW5k
ZWZpbmVkIik7CitzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoNDI5NDk2NzI5NSk7
IiwgInVuZGVmaW5lZCIpOworc2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRWaWJyYXRlKCk7
Iik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCAxNWIwZDlmLi45NDc5
YmQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVj
dGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0CkBAIC0xMTEsNiArMTExLDkgQEAgQlVHTk9FTCA6IHN2Zy9jYXJ0by5uZXQv
c2VsZWN0aW9ubGlzdC5zdmcgPSBJTUFHRStURVhUIElNQUdFCiAvLyBOZXcgdGVzdCwgbmVlZHMg
YmFzZWxpbmVzLgogCiAKKy8vIFZpYnJhdGlvbiBBUEkgaXMgbm90IHN1cHBvcnRlZCB5ZXQgaW4g
dGhlIGNocm9taXVtIHBvcnQuCitCVUdXSzcyMDEwIFNLSVAgOiBmYXN0L2RvbS9uYXZpZ2F0b3It
dmlicmF0aW9uLmh0bWwgPSBGQUlMCisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBXT05URklYIFRFU1RTCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCAzNDZhOGZiLi5mZjlmNTY0
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAtMzkzLDYgKzM5Myw5IEBAIGh0dHAvdGVz
dHMvc2VjdXJpdHkvd2ViZ2wtcmVtb3RlLXJlYWQtcmVtb3RlLWltYWdlLWFsbG93ZWQuaHRtbAog
aHR0cC90ZXN0cy9zZWN1cml0eS93ZWJnbC1yZW1vdGUtcmVhZC1yZW1vdGUtaW1hZ2UtYmxvY2tl
ZC1uby1jcm9zc29yaWdpbi5odG1sCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3dlYmdsLXJlbW90ZS1y
ZWFkLXJlbW90ZS1pbWFnZS1hbGxvd2VkLXdpdGgtY3JlZGVudGlhbHMuaHRtbAogCisjVmlicmF0
aW9uIEFQSSBzdXBwb3J0IG5vdCB5ZXQuIGh0dHA6Ly93ZWJraXQub3JnL2IvNzIwMTAKK2Zhc3Qv
ZG9tL25hdmlnYXRvci12aWJyYXRpb24uaHRtbAorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAj
IFRFU1RTIEZBSUxJTkcKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Nr
aXBwZWQKaW5kZXggNWNkZTM5YS4uNjQzZWFhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQK
QEAgLTU1MCwzICs1NTAsNyBAQCBtZWRpYS9XM0MvdmlkZW8vY2FuUGxheVR5cGUvY2FuUGxheVR5
cGVfdHdvX2ltcGxpZXNfb25lXzYuaHRtbAogIyBGYWlscyBiZWNhdXNlIE11dGF0aW9uT2JzZXJ2
ZXJzIGFyZSBub3Qgbm90aWZpZWQgYXQgZW5kLW9mLXRhc2sKICMgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MjkwCiBmYXN0L211dGF0aW9uL2VuZC1vZi10YXNrLWRl
bGl2ZXJ5Lmh0bWwKKworIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzIwMTAKKyMgTmVlZHMgUGFnZUNsaWVudHM6OnZpYnJhdGlvbkNsaWVudCgpIGltcGxlbWVudGF0
aW9uLgorZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5odG1sCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tp
cHBlZAppbmRleCA4OWQ1Y2NkLi4yNDkwODgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAg
LTMzMyw2ICszMzMsOSBAQCBmYXN0L3BhcnNlci9wcmUtaHRtbDUtcGFyc2VyLXF1aXJrcy5odG1s
CiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjM2MwogZmFzdC9k
b20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcnJheXMuaHRtbAogCisjVmlicmF0aW9uIEFQ
SSBpcyBub3QgaW1wbGVtZW50ZWQuCitmYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uLmh0bWwK
KwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0gIwogIyAgICAgICBEcmFnIGFuZCBEcm9wIFN1cHBvcnQg
aW4gRFJULiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0gIwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Nr
aXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCBmZWU3YTFhLi43
NzZkZGYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtMTY0NSwzICsxNjQ1LDYgQEAg
ZmFzdC9yZXBhaW50L3RhYmxlLXNlY3Rpb24tcmVwYWludC5odG1sCiAvLyBOZWVkIHJlYmFzZWxp
bmluZyBhZnRlciBidWcgMzcyNDQuCiB0YWJsZXMvbW96aWxsYS9idWdzL2J1ZzI3MDM4LTEuaHRt
bAogdGFibGVzL21vemlsbGEvYnVncy9idWcyNzAzOC0yLmh0bWwKKworI1ZpYnJhdGlvbiBBUEkg
aXMgbm90IGltcGxlbWVudGVkLgorZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5odG1sCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAppbmRleCAyZDJkY2NmLi40ZTM5ODMyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKQEAgLTIwNDUsMyArMjA0NSw2IEBA
IGZhc3QvY2FudmFzL3dlYmdsL2FycmF5YnVmZmVyLXRyYW5zZmVyLW9mLWNvbnRyb2wuaHRtbAog
IyBGYWlscyBiZWNhdXNlIE11dGF0aW9uT2JzZXJ2ZXJzIGFyZSBub3Qgbm90aWZpZWQgYXQgZW5k
LW9mLXRhc2sKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4Mjkw
CiBmYXN0L211dGF0aW9uL2VuZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0bWwKKworI1ZpYnJhdGlvbiBB
UEkgaXMgbm90IGltcGxlbWVudGVkLgorZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5odG1s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDMyMDlkZmIuLjMwODQ3OWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0yMjUwLDYgKzIyNTAsMTkgQEAgSUYgKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRSkKICAgICApCiBFTkRJRiAoKQogCitJRiAoRU5BQkxFX1ZJQlJBVElPTikKKyAgICBM
SVNUKEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgJHtXRUJDT1JF
X0RJUn0vTW9kdWxlcy92aWJyYXRpb24KKyAgICApCisgICAgTElTVChBUFBFTkQgV2ViQ29yZV9J
RExfRklMRVMKKyAgICAgICAgTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmlk
bAorICAgICkKKyAgICBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgICAgTW9kdWxl
cy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmNwcAorICAgICAgICBNb2R1bGVzL3ZpYnJh
dGlvbi9WaWJyYXRpb24uY3BwCisgICAgKQorRU5ESUYgKCkKKwogIyBNb2R1bGVzIHRoYXQgdGhl
IGJpbmRpbmdzIGdlbmVyYXRvciBzY3JpcHRzIG1heSB1c2UKIFNFVChTQ1JJUFRTX1JFU09MVkVf
U1VQUExFTUVOVEFMCiAgICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJz
ZXIucG0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBjYWMzNTExLi5mNjAyODc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTQgQEAKKzIwMTItMDItMTcgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5j
b20+CisKKyAgICAgICAgQWRkIGEgbmV3IEFQSSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkoVzNDKS4K
KyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwOS9kYXAvdmlicmF0aW9uLworICAgICAgICBU
aGlzIHBhdGNoIGltcGxlbWVudHMgbmF2aWdhdG9yLndlYmtpdHZpYnJhdGUoKSBBUEkuCisgICAg
ICAgIFRoaXMgQVBJIG9wZXJhdGVzIGRpZmZlcmVudGx5IGRlcGVuZGluZyB1cG9uIGEgZ2l2ZW4g
cGFyYW1ldGVyOgorICAgICAgICAxLiBJdCBjYW5jZWxzIHZpYnJhdGlvbiB3aGVuIGdpdmVuIDAg
b3IgW10uCisgICAgICAgIDIuIEl0IGdpdmVzIGEgdmlicmF0aW9uIGR1cmF0aW9uIGluIG1pbGxp
c2Vjb25kcyB3aGVuIGdpdmVuIGFzIGEgc2luZ2xlIGludGVnZXIgdmFsdWUuCisgICAgICAgIDMu
IEl0IGdpdmVzIGEgdmlicmF0aW9uIHBhdHRlcm4gd2hlbiBnaXZlbiBhcyBhbiBpbnRlZ2VyIGFy
cmF5LiBGb3IgaW5zdGFuY2UsIFsxMDAwIDMwMCAxMDAwXSBnZW5lcmF0ZXMgYSB2aWJyYXRpb24g
b2YgMTAwMG1zIGZvbGxvd2VkIGJ5IDMwMG1zIG9mIGlkbGUgdGltZSwgYW5kIHRoZW4gY3JlYXRl
cyBhbm90aGVyIHZpYnJhdGlvbiBvZiAxMDAwbXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlv
bi5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBNb2R1bGVzL3Zp
YnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yVmlicmF0aW9uOjpOYXZpZ2F0b3JWaWJyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yVmlicmF0aW9uOjp+TmF2aWdhdG9yVmli
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvclZpYnJhdGlvbjo6d2Via2l0Vmli
cmF0ZSk6CisgICAgICAgIEFkZCB3ZWJraXRWaWJyYXRlIG1ldGhvZCB0byBnZXQgYW4gYXJyYXkg
b3Igc2luZ2xlIGludGVnZXIgcGFyYW1ldGVyIGZvciB2aWJyYXRpbmcuCisgICAgICAgIFRoZXkg
Y2hlY2sgdmlicmF0aW9uIGlzIGFjdGl2YXRlZCBpbiB0aGUgcGxhdGZvcm0sIGFuZCB0aGVuIGNh
bGwgdmlicmF0ZSgpIGluIHRoZSBWaWJyYXRpb24gY2xhc3MuCisgICAgICAgICogTW9kdWxlcy92
aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChOYXZpZ2F0b3JWaWJyYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvdmlicmF0
aW9uL05hdmlnYXRvclZpYnJhdGlvbi5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvdmli
cmF0aW9uL1ZpYnJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICBUaGlzIGNsYXNzIGltcGxlbWVu
dHMgdGhlIGVudGlyZSB2aWJyYXRpb24gbG9naWMuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6VmlicmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZp
YnJhdGlvbjo6flZpYnJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb246OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb246OnZpYnJhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlicmF0aW9uOjpjYW5jZWxWaWJyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Vmli
cmF0aW9uOjpzdXNwZW5kVmlicmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6
cmVzdW1lVmlicmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6dGltZXJTdGFy
dEZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6dGltZXJTdG9wRmlyZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uOjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWJyYXRpb246OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnByb3ZpZGVW
aWJyYXRpb25Ubyk6CisgICAgICAgICogTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWaWJyYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6VmlicmF0aW9uOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL3ZpYnJhdGlvbi9W
aWJyYXRpb25DbGllbnQuaDogQWRkZWQuCisgICAgICAgIHZpYnJhdGUoKSBhbmQgY2FuY2VsVmli
cmF0ZSgpIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgaW4gdGhlIFZpYnJhdGlvbkNsaWVudC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVmlicmF0aW9uQ2xpZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlZpYnJhdGlvbkNsaWVudDo6flZpYnJhdGlvbkNsaWVudCk6CisKIDIwMTItMDItMTcg
IEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQXZvaWQgaW5jb25z
aXN0ZW5jeSBpbiBOb2RlOjppbkRvY3VtZW50IGR1ZSB0byBET01TdWJ0cmVlTW9kaWZpZWQgZGlz
cGF0Y2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmln
YXRvclZpYnJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9OYXZp
Z2F0b3JWaWJyYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFl
NDZiZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlv
bi9OYXZpZ2F0b3JWaWJyYXRpb24uY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIk5hdmlnYXRvclZpYnJhdGlvbi5oIgorCisjaWYgRU5BQkxFKFZJ
QlJBVElPTikKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGcmFtZS5o
IgorI2luY2x1ZGUgIk5hdmlnYXRvci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJW
aWJyYXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvVWludDMyQXJyYXkuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitOYXZpZ2F0b3JWaWJyYXRpb246Ok5hdmlnYXRvclZpYnJhdGlvbigpCit7Cit9
CisKK05hdmlnYXRvclZpYnJhdGlvbjo6fk5hdmlnYXRvclZpYnJhdGlvbigpCit7Cit9CisKK3Zv
aWQgTmF2aWdhdG9yVmlicmF0aW9uOjp3ZWJraXRWaWJyYXRlKE5hdmlnYXRvciogbmF2aWdhdG9y
LCB1bnNpZ25lZCBsb25nIHRpbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbmF2
aWdhdG9yLT5mcmFtZSgpLT5wYWdlKCkpCisgICAgICAgIHJldHVybjsKKworI2lmIEVOQUJMRShQ
QUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIGlmIChuYXZpZ2F0b3ItPmZyYW1lKCktPnBhZ2UoKS0+
dmlzaWJpbGl0eVN0YXRlKCkgPT0gUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbikKKyAgICAgICAg
cmV0dXJuOworI2VuZGlmCisKKyAgICBpZiAoIVZpYnJhdGlvbjo6aXNBY3RpdmUobmF2aWdhdG9y
LT5mcmFtZSgpLT5wYWdlKCkpKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBWaWJyYXRpb246OmZyb20obmF2aWdhdG9yLT5m
cmFtZSgpLT5wYWdlKCkpLT52aWJyYXRlKHRpbWUpOworfQorCit2b2lkIE5hdmlnYXRvclZpYnJh
dGlvbjo6d2Via2l0VmlicmF0ZShOYXZpZ2F0b3IqIG5hdmlnYXRvciwgY29uc3QgVmlicmF0aW9u
UGF0dGVybiYgcGF0dGVybiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFuYXZpZ2F0
b3ItPmZyYW1lKCktPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgRU5BQkxFKFBBR0Vf
VklTSUJJTElUWV9BUEkpCisgICAgaWYgKG5hdmlnYXRvci0+ZnJhbWUoKS0+cGFnZSgpLT52aXNp
YmlsaXR5U3RhdGUoKSA9PSBQYWdlVmlzaWJpbGl0eVN0YXRlSGlkZGVuKQorICAgICAgICByZXR1
cm47CisjZW5kaWYKKworICAgIGlmICghVmlicmF0aW9uOjppc0FjdGl2ZShuYXZpZ2F0b3ItPmZy
YW1lKCktPnBhZ2UoKSkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFZpYnJhdGlvbjo6ZnJvbShuYXZpZ2F0b3ItPmZyYW1l
KCktPnBhZ2UoKSktPnZpYnJhdGUocGF0dGVybik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShWSUJSQVRJT04pCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk4ZjZhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5oCkBAIC0wLDAg
KzEsNTAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MK
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2lmbmRlZiBOYXZpZ2F0b3JWaWJyYXRpb25faAorI2RlZmluZSBOYXZpZ2F0
b3JWaWJyYXRpb25faAorCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKworI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgTmF2aWdhdG9yOworY2xhc3MgVWludDMyQXJyYXk7CisKK2NsYXNzIE5hdmln
YXRvclZpYnJhdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBWZWN0b3I8dW5zaWduZWQgbG9u
Zz4gVmlicmF0aW9uUGF0dGVybjsKKworICAgIHN0YXRpYyB2b2lkIHdlYmtpdFZpYnJhdGUoTmF2
aWdhdG9yKiwgdW5zaWduZWQgbG9uZyB0aW1lLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGlj
IHZvaWQgd2Via2l0VmlicmF0ZShOYXZpZ2F0b3IqLCBjb25zdCBWaWJyYXRpb25QYXR0ZXJuJiwg
RXhjZXB0aW9uQ29kZSYpOworCitwcml2YXRlOgorICAgIE5hdmlnYXRvclZpYnJhdGlvbigpOwor
ICAgIH5OYXZpZ2F0b3JWaWJyYXRpb24oKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShWSUJSQVRJT04pCisKKyNlbmRpZiAvLyBOYXZpZ2F0b3JWaWJy
YXRpb25faAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9O
YXZpZ2F0b3JWaWJyYXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24v
TmF2aWdhdG9yVmlicmF0aW9uLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li42MjQ4NDVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJy
YXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmlkbApAQCAtMCwwICsxLDMwIEBACisvKgorICogIENv
cHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKK21vZHVsZSB3
aW5kb3cgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9VklCUkFUSU9O
LAorICAgICAgICBTdXBwbGVtZW50YWw9TmF2aWdhdG9yCisgICAgXSBOYXZpZ2F0b3JWaWJyYXRp
b24geworICAgICAgICB2b2lkIHdlYmtpdFZpYnJhdGUoaW4gdW5zaWduZWQgbG9uZ1tdIHBhdHRl
cm4pIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHdlYmtpdFZpYnJhdGUoaW4g
dW5zaWduZWQgbG9uZyB0aW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICB9OworCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTUyYzNkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmNwcApAQCAtMCwwICsx
LDE0NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlicmF0aW9uLmgiCisK
KyNpZiBFTkFCTEUoVklCUkFUSU9OKQorCisjaW5jbHVkZSAiVmlicmF0aW9uQ2xpZW50LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworVmlicmF0aW9uOjpWaWJyYXRpb24oVmlicmF0aW9uQ2xp
ZW50KiBjbGllbnQpCisgICAgOiBtX3ZpYnJhdGlvbkNsaWVudChjbGllbnQpCisgICAgLCBtX3Rp
bWVyU3RhcnQodGhpcywgJlZpYnJhdGlvbjo6dGltZXJTdGFydEZpcmVkKQorICAgICwgbV90aW1l
clN0b3AodGhpcywgJlZpYnJhdGlvbjo6dGltZXJTdG9wRmlyZWQpCisgICAgLCBtX2lzVmlicmF0
aW5nKGZhbHNlKQoreworfQorCitWaWJyYXRpb246On5WaWJyYXRpb24oKQoreworICAgIG1fdmli
cmF0aW9uQ2xpZW50LT52aWJyYXRpb25EZXN0cm95ZWQoKTsKK30KKworUGFzc093blB0cjxWaWJy
YXRpb24+IFZpYnJhdGlvbjo6Y3JlYXRlKFZpYnJhdGlvbkNsaWVudCogY2xpZW50KQoreworICAg
IHJldHVybiBhZG9wdFB0cihuZXcgVmlicmF0aW9uKGNsaWVudCkpOworfQorCit2b2lkIFZpYnJh
dGlvbjo6dmlicmF0ZShjb25zdCB1bnNpZ25lZCBsb25nJiB0aW1lKQoreworICAgIGlmICghdGlt
ZSkgeworICAgICAgICBjYW5jZWxWaWJyYXRpb24oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBtX3BhdHRlcm4uYXBwZW5kKHRpbWUpOworICAgIG1fdGltZXJTdGFydC5zdGFydE9uZVNo
b3QoMCk7Cit9CisKK3ZvaWQgVmlicmF0aW9uOjp2aWJyYXRlKGNvbnN0IFZpYnJhdGlvblBhdHRl
cm4mIHBhdHRlcm4pCit7CisgICAgaW50IGxlbmd0aCA9IHBhdHRlcm4uc2l6ZSgpOworCisgICAg
aWYgKG1faXNWaWJyYXRpbmcpCisgICAgICAgIGNhbmNlbFZpYnJhdGlvbigpOworCisgICAgaWYg
KCFsZW5ndGggfHwgKGxlbmd0aCA9PSAxICYmICFwYXR0ZXJuWzBdKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKG1fdGltZXJTdGFydC5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RpbWVyU3Rh
cnQuc3RvcCgpOworCisgICAgbV9wYXR0ZXJuID0gcGF0dGVybjsKKyAgICBtX3RpbWVyU3RhcnQu
c3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIFZpYnJhdGlvbjo6Y2FuY2VsVmlicmF0aW9uKCkK
K3sKKyAgICBpZiAobV9pc1ZpYnJhdGluZykgeworICAgICAgICBtX3ZpYnJhdGlvbkNsaWVudC0+
Y2FuY2VsVmlicmF0aW9uKCk7CisgICAgICAgIG1faXNWaWJyYXRpbmcgPSBmYWxzZTsKKyAgICAg
ICAgbV90aW1lclN0b3Auc3RvcCgpOworICAgIH0KK30KKwordm9pZCBWaWJyYXRpb246OnN1c3Bl
bmRWaWJyYXRpb24oKQoreworICAgIGlmICghbV9pc1ZpYnJhdGluZykKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9wYXR0ZXJuLmluc2VydCgwLCBtX3RpbWVyU3RvcC5uZXh0RmlyZUludGVydmFs
KCkpOworICAgIG1fdGltZXJTdG9wLnN0b3AoKTsKKyAgICBjYW5jZWxWaWJyYXRpb24oKTsKK30K
Kwordm9pZCBWaWJyYXRpb246OnJlc3VtZVZpYnJhdGlvbigpCit7CisgICAgbV90aW1lclN0YXJ0
LnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBWaWJyYXRpb246OnRpbWVyU3RhcnRGaXJlZChU
aW1lcjxWaWJyYXRpb24+KiB0aW1lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1l
ciA9PSAmbV90aW1lclN0YXJ0KTsKKworICAgIG1fdGltZXJTdGFydC5zdG9wKCk7CisKKyAgICBp
ZiAobV9wYXR0ZXJuLnNpemUoKSkgeworICAgICAgICBtX2lzVmlicmF0aW5nID0gdHJ1ZTsKKyAg
ICAgICAgbV92aWJyYXRpb25DbGllbnQtPnZpYnJhdGUobV9wYXR0ZXJuWzBdKTsKKyAgICAgICAg
bV90aW1lclN0b3Auc3RhcnRPbmVTaG90KG1fcGF0dGVyblswXSAvIDEwMDAuMCk7CisgICAgICAg
IG1fcGF0dGVybi5yZW1vdmUoMCk7CisgICAgfQorfQorCit2b2lkIFZpYnJhdGlvbjo6dGltZXJT
dG9wRmlyZWQoVGltZXI8VmlicmF0aW9uPiogdGltZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRCh0
aW1lciwgdGltZXIgPT0gJm1fdGltZXJTdG9wKTsKKworICAgIG1fdGltZXJTdG9wLnN0b3AoKTsK
KyAgICBtX2lzVmlicmF0aW5nID0gZmFsc2U7CisKKyAgICBpZiAobV9wYXR0ZXJuLnNpemUoKSkg
eworICAgICAgICBtX3RpbWVyU3RhcnQuc3RhcnRPbmVTaG90KG1fcGF0dGVyblswXSAvIDEwMDAu
MCk7CisgICAgICAgIG1fcGF0dGVybi5yZW1vdmUoMCk7CisgICAgfQorfQorCitjb25zdCBBdG9t
aWNTdHJpbmcmIFZpYnJhdGlvbjo6c3VwcGxlbWVudE5hbWUoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoInZpYnJhdGlvbiIpKTsKKyAgICByZXR1cm4g
bmFtZTsKK30KKworYm9vbCBWaWJyYXRpb246OmlzQWN0aXZlKFBhZ2UqIHBhZ2UpCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KFZpYnJhdGlvbjo6ZnJvbShwYWdlKSk7Cit9CisKK3Zv
aWQgcHJvdmlkZVZpYnJhdGlvblRvKFBhZ2UqIHBhZ2UsIFZpYnJhdGlvbkNsaWVudCogY2xpZW50
KQoreworICAgIFBhZ2VTdXBwbGVtZW50Ojpwcm92aWRlVG8ocGFnZSwgVmlicmF0aW9uOjpzdXBw
bGVtZW50TmFtZSgpLCBWaWJyYXRpb246OmNyZWF0ZShjbGllbnQpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4yN2UwNzM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAq
ICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZu
ZGVmIFZpYnJhdGlvbl9oCisjZGVmaW5lIFZpYnJhdGlvbl9oCisKKyNpZiBFTkFCTEUoVklCUkFU
SU9OKQorCisjaW5jbHVkZSAiUGFnZVN1cHBsZW1lbnQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgTmF2aWdhdG9yOworY2xhc3MgUGFnZTsKK2NsYXNzIFZpYnJhdGlvbkNsaWVudDsKKworY2xh
c3MgVmlicmF0aW9uIDogcHVibGljIFBhZ2VTdXBwbGVtZW50IHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIFZlY3Rvcjx1bnNpZ25lZCBsb25nPiBWaWJyYXRpb25QYXR0ZXJuOworCisgICAgVmlicmF0
aW9uKFZpYnJhdGlvbkNsaWVudCopOworICAgIH5WaWJyYXRpb24oKTsKKworICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFZpYnJhdGlvbj4gY3JlYXRlKFZpYnJhdGlvbkNsaWVudCopOworCisgICAgdm9p
ZCB2aWJyYXRlKGNvbnN0IHVuc2lnbmVkIGxvbmcmIHRpbWUpOworICAgIHZvaWQgdmlicmF0ZShj
b25zdCBWaWJyYXRpb25QYXR0ZXJuJik7CisgICAgdm9pZCBjYW5jZWxWaWJyYXRpb24oKTsKKwor
ICAgIC8vIEZJWE1FIDogQWRkIHN1c3BlbmRWaWJyYXRpb24oKSBhbmQgcmVzdW1lVmlicmF0aW9u
KCkgdG8gdGhlIHBhZ2UgdmlzaWJpbGl0eSBmZWF0dXJlLCB3aGVuIHRoZSBkb2N1bWVudC5oaWRk
ZW4gYXR0cmlidXRlIGlzIGNoYW5nZWQuCisgICAgdm9pZCBzdXNwZW5kVmlicmF0aW9uKCk7Cisg
ICAgdm9pZCByZXN1bWVWaWJyYXRpb24oKTsKKyAgICB2b2lkIHRpbWVyU3RhcnRGaXJlZChUaW1l
cjxWaWJyYXRpb24+Kik7CisgICAgdm9pZCB0aW1lclN0b3BGaXJlZChUaW1lcjxWaWJyYXRpb24+
Kik7CisKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdXBwbGVtZW50TmFtZSgpOwor
ICAgIHN0YXRpYyBWaWJyYXRpb24qIGZyb20oUGFnZSogcGFnZSkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8VmlicmF0aW9uKj4oUGFnZVN1cHBsZW1lbnQ6OmZyb20ocGFnZSwgc3VwcGxlbWVudE5hbWUo
KSkpOyB9CisgICAgc3RhdGljIGJvb2wgaXNBY3RpdmUoUGFnZSopOworCitwcml2YXRlOgorICAg
IFZpYnJhdGlvbkNsaWVudCogbV92aWJyYXRpb25DbGllbnQ7CisgICAgVGltZXI8VmlicmF0aW9u
PiBtX3RpbWVyU3RhcnQ7CisgICAgVGltZXI8VmlicmF0aW9uPiBtX3RpbWVyU3RvcDsKKyAgICBi
b29sIG1faXNWaWJyYXRpbmc7CisgICAgVmlicmF0aW9uUGF0dGVybiBtX3BhdHRlcm47Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVklCUkFUSU9OKQor
CisjZW5kaWYgLy8gVmlicmF0aW9uX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy92aWJyYXRpb24vVmlicmF0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3ZpYnJhdGlvbi9WaWJyYXRpb25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5lYmU2ODg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy92aWJyYXRpb24vVmlicmF0aW9uQ2xpZW50LmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqICBD
b3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVm
IFZpYnJhdGlvbkNsaWVudF9oCisjZGVmaW5lIFZpYnJhdGlvbkNsaWVudF9oCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgUGFnZTsKKworY2xhc3MgVmlicmF0aW9uQ2xpZW50IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5WaWJyYXRpb25DbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwg
dm9pZCB2aWJyYXRlKGNvbnN0IHVuc2lnbmVkIGxvbmcmIHRpbWUpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsVmlicmF0aW9uKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHZpYnJhdGlv
bkRlc3Ryb3llZCgpID0gMDsKK307CisKK3ZvaWQgcHJvdmlkZVZpYnJhdGlvblRvKFBhZ2UqLCBW
aWJyYXRpb25DbGllbnQqKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
VmlicmF0aW9uQ2xpZW50X2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VM
aXN0c0VmbC50eHQgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DTWFrZUxpc3RzRWZsLnR4dAppbmRleCBh
ZWZkYjk4Li5kYWYyMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DTWFrZUxpc3Rz
RWZsLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DTWFrZUxpc3RzRWZsLnR4dApAQCAtMTE1
LDYgKzExNSwxNiBAQCBMSVNUKEFQUEVORCBXZWJLaXRfTElCUkFSSUVTCiAgICAgJHtMSUJTT1VQ
MjRfTElCUkFSSUVTfQogKQogCitJRiAoRU5BQkxFX1ZJQlJBVElPTikKKyAgICBMSVNUKEFQUEVO
RCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICAgICAke1dFQkNPUkVfRElSfS9Nb2R1
bGVzL3ZpYnJhdGlvbgorICAgICkKKyAgICBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUworICAg
ICAgICBlZmwvV2ViQ29yZVN1cHBvcnQvVmlicmF0aW9uQ2xpZW50RWZsLmNwcAorICAgICkKK0VO
RElGICgpCisKKwogU0VUKFdlYktpdF9USEVNRV9ERUZJTklUSU9OICIiKQogSUYgKEVOQUJMRV9Q
Uk9HUkVTU19UQUcpCiAgIExJU1QoQVBQRU5EIFdlYktpdF9USEVNRV9ERUZJTklUSU9OICItREVO
QUJMRV9QUk9HUkVTU19UQUciKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDUzZGMzNTYuLmVjZmY1Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0wMi0xOSAgS2lob25nIEt3
b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBBZGQgYSBuZXcgQVBJIGZv
ciB0aGUgVmlicmF0aW9uIEFQSShXM0MpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzIwMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnRhdGlvbiBmb3IgdGhlIFZpYnJhdGlvbiBBUEkgZmVh
dHVyZSB0byB0aGUgRUZMLXBvcnQgbGF5ZXIuCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnLzIw
MDkvZGFwL3ZpYnJhdGlvbi8KKyAgICAgICAgVGhlcmUgYXJlIHR3byBtZXRob2RzIGZvciB2aWJy
YXRpb24gQVBJLgorICAgICAgICAtIHZpYnJhdGUgOiBWaWJyYXRlIGRldmljZSBmb3IgcmVjZWl2
aW5nIGFzIGEgcGFyYW1ldGVyLgorICAgICAgICAtIGNhbmNlbFZpYnJhdGUgOiBDYW5jZWwgY3Vy
cmVudCB2aWJyYXRpb24uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9WaWJyYXRpb25DbGllbnRFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uQ2xpZW50RWZsOjpWaWJyYXRp
b25DbGllbnRFZmwpOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uQ2xpZW50RWZsOjp2aWJy
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbkNsaWVudEVmbDo6Y2FuY2VsVmlicmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbkNsaWVudEVmbDo6dmlicmF0aW9uRGVz
dHJveWVkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9WaWJyYXRpb25DbGllbnRFZmwuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFZpYnJhdGlvbkNsaWVudEVmbCk6
CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb25DbGllbnRFZmw6On5WaWJyYXRpb25DbGllbnRF
ZmwpOgorICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChfRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhKToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6CisKIDIwMTItMDItMTcg
IFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAg
W0VGTF0gVW5yZXZpZXdlZCwgYWRhcHQgdG8gdGhlIGNoYW5nZXMgaW50cm9kdWNlZCBpbiByMTA3
OTczLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvVmlicmF0
aW9uQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1ZpYnJh
dGlvbkNsaWVudEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM2
NWI3MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L1ZpYnJhdGlvbkNsaWVudEVmbC5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqICBDb3B5cmln
aHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVmlicmF0aW9uQ2xpZW50RWZsLmgiCisKKyNpZiBFTkFCTEUoVklC
UkFUSU9OKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1ZpYnJhdGlvbkNsaWVudEVmbDo6Vmli
cmF0aW9uQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KQorICAgIDogbV92aWV3KHZpZXcpCit7
Cit9CisKK3ZvaWQgVmlicmF0aW9uQ2xpZW50RWZsOjp2aWJyYXRlKGNvbnN0IHVuc2lnbmVkIGxv
bmcmIHRpbWUpCit7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcs
ICJ2aWJyYXRpb24sdmlicmF0ZSIsICh2b2lkKikmdGltZSk7Cit9CisKK3ZvaWQgVmlicmF0aW9u
Q2xpZW50RWZsOjpjYW5jZWxWaWJyYXRpb24oKQoreworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2NhbGwobV92aWV3LCAidmlicmF0aW9uLGNhbmNlbCIsIDApOworfQorCit2b2lkIFZp
YnJhdGlvbkNsaWVudEVmbDo6dmlicmF0aW9uRGVzdHJveWVkKCkKK3sKKyAgICBkZWxldGUgdGhp
czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJQlJB
VElPTikKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvVmli
cmF0aW9uQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9WaWJy
YXRpb25DbGllbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2Iw
ZDkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
VmlicmF0aW9uQ2xpZW50RWZsLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqICBDb3B5cmlnaHQg
KEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFZpYnJhdGlv
bkNsaWVudEVmbF9oCisjZGVmaW5lIFZpYnJhdGlvbkNsaWVudEVmbF9oCisKKyNpbmNsdWRlICJW
aWJyYXRpb25DbGllbnQuaCIKKyNpbmNsdWRlIDxFdmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgVmlicmF0aW9uQ2xpZW50RWZsIDogcHVibGljIFZpYnJhdGlvbkNsaWVudCB7
CitwdWJsaWM6CisgICAgVmlicmF0aW9uQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KTsKKyAg
ICB2aXJ0dWFsIH5WaWJyYXRpb25DbGllbnRFZmwoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB2
aWJyYXRlKGNvbnN0IHVuc2lnbmVkIGxvbmcmIHRpbWUpOworICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxWaWJyYXRpb24oKTsKKworICAgIHZpcnR1YWwgdm9pZCB2aWJyYXRpb25EZXN0cm95ZWQoKTsK
KworcHJpdmF0ZToKKyAgICBFdmFzX09iamVjdCogbV92aWV3OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVmlicmF0aW9uQ2xpZW50RWZsX2gKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5jcHAKaW5kZXggM2Q0MzI0MS4uOGE5Njc0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIw
MDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENvcHlyaWdodCAoQykgMjAw
OS0yMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTcwLDYgKzcwLDEwIEBA
CiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRFZmwuaCIKICNlbmRpZgogCisjaWYg
RU5BQkxFKFZJQlJBVElPTikKKyNpbmNsdWRlICJWaWJyYXRpb25DbGllbnRFZmwuaCIKKyNlbmRp
ZgorCiBzdGF0aWMgY29uc3QgZmxvYXQgem9vbU1pbmltdW0gPSAwLjA1Owogc3RhdGljIGNvbnN0
IGZsb2F0IHpvb21NYXhpbXVtID0gNC4wOwogCkBAIC02MTcsNiArNjIxLDEwIEBAIHN0YXRpYyBF
d2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdGEpCiAgICAgV2ViQ29yZTo6cHJvdmlkZURldmljZU9yaWVudGF0aW9uVG8o
cHJpdi0+cGFnZSwgbmV3IFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50RWZsKTsKICNl
bmRpZgogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICBXZWJDb3JlOjpwcm92aWRlVmlicmF0
aW9uVG8ocHJpdi0+cGFnZSwgbmV3IFdlYkNvcmU6OlZpYnJhdGlvbkNsaWVudEVmbChzbWFydERh
dGEtPnNlbGYpKTsKKyNlbmRpZgorCiAgICAgcHJpdi0+cGFnZVNldHRpbmdzID0gcHJpdi0+cGFn
ZS0+c2V0dGluZ3MoKTsKICAgICBpZiAoIXByaXYtPnBhZ2VTZXR0aW5ncykgewogICAgICAgICBD
UklUSUNBTCgiQ291bGQgbm90IGdldCBwYWdlIHNldHRpbmdzLiIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFr
ZQppbmRleCA3ZGY0NDQyLi40MmQyOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9u
c0VmbC5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQpAQCAtOTUsNiAr
OTUsNyBAQCBXRUJLSVRfRkVBVFVSRShFTkFCTEVfU1ZHICJFbmFibGUgU1ZHIiBERUZBVUxUIE9O
KQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX1NWR19GT05UUyAiRW5hYmxlIFNWRyBmb250cyIgREVG
QVVMVCBPTikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9UT1VDSF9FVkVOVFMgIkVuYWJsZSBUb3Vj
aCBFdmVudHMiIERFRkFVTFQgT0ZGKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX1RPVUNIX0lDT05f
TE9BRElORyAiRW5hYmxlIFRvdWNoIEljb24gTG9hZGluZyIgREVGQVVMVCBPRkYpCitXRUJLSVRf
RkVBVFVSRShFTkFCTEVfVklCUkFUSU9OICJFbmFibGUgdmlicmF0aW9uIiBERUZBVUxUIE9OKQog
V0VCS0lUX0ZFQVRVUkUoRU5BQkxFX1ZJREVPICJFbmFibGUgdmlkZW8iIERFRkFVTFQgT04pCiBX
RUJLSVRfRkVBVFVSRShFTkFCTEVfV0VCX1NPQ0tFVFMgIkVuYWJsZSB3ZWIgc29ja2V0cyIgREVG
QVVMVCBPTikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9XRUJHTCAiRW5hYmxlIFdlYkdMIiBERUZB
VUxUIE9GRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZWNvbmZpZy5oLmNtYWtlIGIvU291cmNl
L2NtYWtlY29uZmlnLmguY21ha2UKaW5kZXggNmQzZjgzNy4uYjYzMmZjYyAxMDA2NDQKLS0tIGEv
U291cmNlL2NtYWtlY29uZmlnLmguY21ha2UKKysrIGIvU291cmNlL2NtYWtlY29uZmlnLmguY21h
a2UKQEAgLTM5LDYgKzM5LDcgQEAKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9TVkdfRk9OVFMKICNj
bWFrZWRlZmluZTAxIEVOQUJMRV9UT1VDSF9FVkVOVFMKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9U
T1VDSF9JQ09OX0xPQURJTkcKKyNjbWFrZWRlZmluZTAxIEVOQUJMRV9WSUJSQVRJT04KICNjbWFr
ZWRlZmluZTAxIEVOQUJMRV9WSURFTwogI2NtYWtlZGVmaW5lMDEgRU5BQkxFX1dFQkdMCiAjY21h
a2VkZWZpbmUwMSBFTkFCTEVfV0VCX1NPQ0tFVFMKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkYjVkZWVhLi44YjQyMTQ1IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTItMDItMTkgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgQWRkIGEgbmV3IEFQSSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkoVzNDKS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDEwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLXdlYmtp
dDogRW5hYmxlIEVOQUJMRV9WSUJSQVRJT04gZmVhdHVyZS4KKwogMjAxMi0wMi0xNyAgRGlyayBQ
cmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBUaGUgbmV3IHJ1bi13ZWJr
aXQtdGVzdHMgbmVlZHMgdG8gZHVtcCBvdXQgcGl4ZWwgaGFzaCBmYWlsdXJlcyBldmVuIGlmIHRo
ZSBwaXhlbCB0ZXN0IHBhc3Nlcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Vi
a2l0IGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKaW5kZXggODhiNDQ1ZS4uN2VkNmE1YSAx
MDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKKysrIGIvVG9vbHMvU2NyaXB0
cy9idWlsZC13ZWJraXQKQEAgLTEyOCw2ICsxMjgsNyBAQCBteSAoCiAgICAgJHRpbGVkQmFja2lu
Z1N0b3JlU3VwcG9ydCwKICAgICAkdG91Y2hFdmVudHNTdXBwb3J0LAogICAgICR0b3VjaEljb25M
b2FkaW5nU3VwcG9ydCwKKyAgICAkdmlicmF0aW9uU3VwcG9ydCwKICAgICAkdmlkZW9TdXBwb3J0
LAogICAgICR2aWRlb1RyYWNrU3VwcG9ydCwKICAgICAkd2ViQXVkaW9TdXBwb3J0LApAQCAtMzI5
LDYgKzMzMCw5IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAidG91Y2gtaWNv
bi1sb2FkaW5nIiwgZGVzYyA9PiAiVG9nZ2xlIFRvdWNoIEljb24gTG9hZGluZyBTdXBwb3J0IiwK
ICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORyIsIGRlZmF1bHQgPT4g
MCwgdmFsdWUgPT4gXCR0b3VjaEljb25Mb2FkaW5nU3VwcG9ydCB9LAogCisgICAgeyBvcHRpb24g
PT4gInZpYnJhdGlvbiIsIGRlc2MgPT4gIlRvZ2dsZSBWaWRlbyBzdXBwb3J0IiwKKyAgICAgIGRl
ZmluZSA9PiAiRU5BQkxFX1ZJQlJBVElPTiIsIGRlZmF1bHQgPT4gaXNFZmwoKSwgdmFsdWUgPT4g
XCR2aWJyYXRpb25TdXBwb3J0IH0sCisKICAgICB7IG9wdGlvbiA9PiAidmlkZW8iLCBkZXNjID0+
ICJUb2dnbGUgVmlkZW8gc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9WSURFTyIs
IGRlZmF1bHQgPT4gKGlzQXBwbGVXZWJLaXQoKSB8fCBpc0d0aygpIHx8IGlzQmxhY2tCZXJyeSgp
KSwgdmFsdWUgPT4gXCR2aWRlb1N1cHBvcnQgfSwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127794</attachid>
            <date>2012-02-20 02:58:25 -0800</date>
            <delta_ts>2012-02-20 17:04:58 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>vibration.patch</filename>
            <type>text/plain</type>
            <size>32760</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlZGNmMTFlLi5hYjYyZDU4
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTItMDItMjAgIEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgQWRkIGEgbmV3IEFQSSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkoVzNDKS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDEwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEltcGxlbWVudGF0aW9u
IGZvciB0aGUgVmlicmF0aW9uIEFQSSB0byB0aGUgV2ViS2l0LUVGTCBwb3J0LgorICAgICAgICBo
dHRwOi8vZGV2LnczLm9yZy8yMDA5L2RhcC92aWJyYXRpb24vCisKKyAgICAgICAgKiBTb3VyY2Uv
Y21ha2UvT3B0aW9uc0VmbC5jbWFrZTogQWRkIEVOQUJMRV9WSUJSQVRJT04gZmVhdHVyZS4KKyAg
ICAgICAgKiBTb3VyY2UvY21ha2Vjb25maWcuaC5jbWFrZToKKwogMjAxMi0wMi0yMCAgTWFydGlu
IFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4IFdlYktpdDJH
VEsrIGZvciAnbWFrZSBkaXN0Y2hlY2snLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU2MzAyNmUuLjQxMTNiZWQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOSBAQAorMjAxMi0wMi0yMCAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBz
YW1zdW5nLmNvbT4KKworICAgICAgICBBZGQgYSBuZXcgdGVzdCBjYXNlIGZvciB0aGUgVmlicmF0
aW9uIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcyMDEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBmYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisgICAgICAgICogcGxh
dGZvcm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisgICAg
ICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBl
ZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkOgorCiAyMDEyLTAyLTIwICBT
aGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBdHRhY2hl
ZC9EZXRhY2hlZCBzdGF0ZSBtdXN0IGJlIHRlc3RhYmxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MGJjOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE1IEBACitUZXN0IGZvciB0aGUgVmlicmF0aW9uIEFQSS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgbmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoMCk7IGlzIHVuZGVmaW5l
ZAorUEFTUyBuYXZpZ2F0b3Iud2Via2l0VmlicmF0ZShbXSk7IGlzIHVuZGVmaW5lZAorUEFTUyBu
YXZpZ2F0b3Iud2Via2l0VmlicmF0ZSgxMDAwKTsgaXMgdW5kZWZpbmVkCitQQVNTIG5hdmlnYXRv
ci53ZWJraXRWaWJyYXRlKFsxMDAwLCAzMDAsIDUwMF0pOyBpcyB1bmRlZmluZWQKK1BBU1MgbmF2
aWdhdG9yLndlYmtpdFZpYnJhdGUoNDI5NDk2NzI5NSk7IGlzIHVuZGVmaW5lZAorUEFTUyBuYXZp
Z2F0b3Iud2Via2l0VmlicmF0ZSgpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVy
cm9yLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb24uaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb24uaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDRmZGRkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vbmF2aWdhdG9yLXZpYnJhdGlvbi5odG1sCkBAIC0wLDAgKzEs
MTggQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCdUZXN0IGZvciB0aGUgVmlicmF0aW9uIEFQSS4nKTsKKworc2hvdWxkQmUoIm5hdmlnYXRv
ci53ZWJraXRWaWJyYXRlKDApOyIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJuYXZpZ2F0b3Iu
d2Via2l0VmlicmF0ZShbXSk7IiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoIm5hdmlnYXRvci53
ZWJraXRWaWJyYXRlKDEwMDApOyIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJuYXZpZ2F0b3Iu
d2Via2l0VmlicmF0ZShbMTAwMCwgMzAwLCA1MDBdKTsiLCAidW5kZWZpbmVkIik7CitzaG91bGRC
ZSgibmF2aWdhdG9yLndlYmtpdFZpYnJhdGUoNDI5NDk2NzI5NSk7IiwgInVuZGVmaW5lZCIpOwor
c2hvdWxkVGhyb3coIm5hdmlnYXRvci53ZWJraXRWaWJyYXRlKCk7Iik7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCBkMDIyN2RjLi4wMTU3ZDU2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0x
MTIsNiArMTEyLDkgQEAgQlVHTk9FTCA6IHN2Zy9jYXJ0by5uZXQvc2VsZWN0aW9ubGlzdC5zdmcg
PSBJTUFHRStURVhUIElNQUdFCiAvLyBOZXcgdGVzdCwgbmVlZHMgYmFzZWxpbmVzLgogCiAKKy8v
IFZpYnJhdGlvbiBBUEkgaXMgbm90IHN1cHBvcnRlZCB5ZXQgaW4gdGhlIGNocm9taXVtIHBvcnQu
CitCVUdXSzcyMDEwIFNLSVAgOiBmYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uLmh0bWwgPSBG
QUlMCisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBXT05URklYIFRFU1RTCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvU2tpcHBlZAppbmRleCAzNDZhOGZiLi5mZjlmNTY0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvU2tpcHBlZApAQCAtMzkzLDYgKzM5Myw5IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvd2ViZ2wt
cmVtb3RlLXJlYWQtcmVtb3RlLWltYWdlLWFsbG93ZWQuaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0
eS93ZWJnbC1yZW1vdGUtcmVhZC1yZW1vdGUtaW1hZ2UtYmxvY2tlZC1uby1jcm9zc29yaWdpbi5o
dG1sCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3dlYmdsLXJlbW90ZS1yZWFkLXJlbW90ZS1pbWFnZS1h
bGxvd2VkLXdpdGgtY3JlZGVudGlhbHMuaHRtbAogCisjVmlicmF0aW9uIEFQSSBzdXBwb3J0IG5v
dCB5ZXQuIGh0dHA6Ly93ZWJraXQub3JnL2IvNzIwMTAKK2Zhc3QvZG9tL25hdmlnYXRvci12aWJy
YXRpb24uaHRtbAorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRFU1RTIEZBSUxJTkcKICMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5kZXggNWNkZTM5
YS4uNjQzZWFhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTU1MCwzICs1NTAsNyBA
QCBtZWRpYS9XM0MvdmlkZW8vY2FuUGxheVR5cGUvY2FuUGxheVR5cGVfdHdvX2ltcGxpZXNfb25l
XzYuaHRtbAogIyBGYWlscyBiZWNhdXNlIE11dGF0aW9uT2JzZXJ2ZXJzIGFyZSBub3Qgbm90aWZp
ZWQgYXQgZW5kLW9mLXRhc2sKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc4MjkwCiBmYXN0L211dGF0aW9uL2VuZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0bWwKKworIyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwMTAKKyMgTmVlZHMgUGFn
ZUNsaWVudHM6OnZpYnJhdGlvbkNsaWVudCgpIGltcGxlbWVudGF0aW9uLgorZmFzdC9kb20vbmF2
aWdhdG9yLXZpYnJhdGlvbi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCBmNGNlYjJm
Li5mZWQxNWEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTMzMyw2ICszMzMsOSBAQCBm
YXN0L3BhcnNlci9wcmUtaHRtbDUtcGFyc2VyLXF1aXJrcy5odG1sCiAjIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjM2MwogZmFzdC9kb20vV2luZG93L3dpbmRvdy1w
b3N0bWVzc2FnZS1hcnJheXMuaHRtbAogCisjVmlicmF0aW9uIEFQSSBpcyBub3QgaW1wbGVtZW50
ZWQuCitmYXN0L2RvbS9uYXZpZ2F0b3ItdmlicmF0aW9uLmh0bWwKKwogIyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0gIwogIyAgICAgICBEcmFnIGFuZCBEcm9wIFN1cHBvcnQgaW4gRFJULiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCBjOWM5MTdmLi43NTI3MmM1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vU2tpcHBlZApAQCAtMTY1MiwzICsxNjUyLDYgQEAgZmFzdC9lbmNvZGluZy91dGYt
MTYtbGl0dGxlLWVuZGlhbi5odG1sCiBmYXN0L2lubGluZS9jb250aW51YXRpb24tb3V0bGluZXMt
d2l0aC1sYXllcnMtMi5odG1sCiBmYXN0L2lubGluZS9jb250aW51YXRpb24tb3V0bGluZXMtd2l0
aC1sYXllcnMuaHRtbAogZmFzdC9yZXBhaW50L3RyYW5zZm9ybS1hYnNvbHV0ZS1pbi1wb3NpdGlv
bmVkLWNvbnRhaW5lci5odG1sCisKKyNWaWJyYXRpb24gQVBJIGlzIG5vdCBpbXBsZW1lbnRlZC4K
K2Zhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb24uaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNh
aXJvL1NraXBwZWQKaW5kZXggMmQyZGNjZi4uNGUzOTgzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW5jYWlyby9Ta2lwcGVkCkBAIC0yMDQ1LDMgKzIwNDUsNiBAQCBmYXN0L2NhbnZhcy93ZWJnbC9h
cnJheWJ1ZmZlci10cmFuc2Zlci1vZi1jb250cm9sLmh0bWwKICMgRmFpbHMgYmVjYXVzZSBNdXRh
dGlvbk9ic2VydmVycyBhcmUgbm90IG5vdGlmaWVkIGF0IGVuZC1vZi10YXNrCiAjIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODI5MAogZmFzdC9tdXRhdGlvbi9lbmQt
b2YtdGFzay1kZWxpdmVyeS5odG1sCisKKyNWaWJyYXRpb24gQVBJIGlzIG5vdCBpbXBsZW1lbnRl
ZC4KK2Zhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb24uaHRtbApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCA1NmYxMDRiLi40NzlkMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjI1Miw2ICsy
MjUyLDE5IEBAIElGIChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAgICAgKQogRU5E
SUYgKCkKIAorSUYgKEVOQUJMRV9WSUJSQVRJT04pCisgICAgTElTVChBUFBFTkQgV2ViQ29yZV9J
TkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvdmlicmF0
aW9uCisgICAgKQorICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCisgICAgICAgIE1v
ZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5pZGwKKyAgICApCisgICAgTElTVChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgIE1vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRv
clZpYnJhdGlvbi5jcHAKKyAgICAgICAgTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmNwcAor
ICAgICkKK0VORElGICgpCisKICMgTW9kdWxlcyB0aGF0IHRoZSBiaW5kaW5ncyBnZW5lcmF0b3Ig
c2NyaXB0cyBtYXkgdXNlCiBTRVQoU0NSSVBUU19SRVNPTFZFX1NVUFBMRU1FTlRBTAogICAgICR7
V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWI4NDM4Ni4uNDczNzNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTAyLTIw
ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAgIEFkZCBh
IG5ldyBBUEkgZm9yIHRoZSBWaWJyYXRpb24gQVBJKFczQykuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAxMAorCisgICAgICAgIGh0dHA6Ly9kZXYu
dzMub3JnLzIwMDkvZGFwL3ZpYnJhdGlvbi8KKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRz
IG5hdmlnYXRvci53ZWJraXR2aWJyYXRlKCkgQVBJLgorICAgICAgICBUaGlzIEFQSSBvcGVyYXRl
cyBkaWZmZXJlbnRseSBkZXBlbmRpbmcgdXBvbiBhIGdpdmVuIHBhcmFtZXRlcjoKKyAgICAgICAg
MS4gSXQgY2FuY2VscyB2aWJyYXRpb24gd2hlbiBnaXZlbiAwIG9yIFtdLgorICAgICAgICAyLiBJ
dCBnaXZlcyBhIHZpYnJhdGlvbiBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMgd2hlbiBnaXZlbiBh
cyBhIHNpbmdsZSBpbnRlZ2VyIHZhbHVlLgorICAgICAgICAzLiBJdCBnaXZlcyBhIHZpYnJhdGlv
biBwYXR0ZXJuIHdoZW4gZ2l2ZW4gYXMgYW4gaW50ZWdlciBhcnJheS4gRm9yIGluc3RhbmNlLCBb
MTAwMCAzMDAgMTAwMF0gZ2VuZXJhdGVzIGEgdmlicmF0aW9uIG9mIDEwMDBtcyBmb2xsb3dlZCBi
eSAzMDBtcyBvZiBpZGxlIHRpbWUsIGFuZCB0aGVuIGNyZWF0ZXMgYW5vdGhlciB2aWJyYXRpb24g
b2YgMTAwMG1zLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3Q6IGZhc3QvZG9tL25hdmlnYXRvci12aWJyYXRpb24uaHRtbAorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogTW9kdWxlcy92aWJyYXRpb24vTmF2aWdhdG9yVmli
cmF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5hdmlnYXRvclZpYnJhdGlvbjo6TmF2aWdhdG9yVmlicmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdmlnYXRvclZpYnJhdGlvbjo6fk5hdmlnYXRvclZpYnJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpOYXZpZ2F0b3JWaWJyYXRpb246OndlYmtpdFZpYnJhdGUpOgorICAgICAgICBBZGQg
d2Via2l0VmlicmF0ZSBtZXRob2QgdG8gZ2V0IGFuIGFycmF5IG9yIHNpbmdsZSBpbnRlZ2VyIHBh
cmFtZXRlciBmb3IgdmlicmF0aW5nLgorICAgICAgICBUaGV5IGNoZWNrIHZpYnJhdGlvbiBpcyBh
Y3RpdmF0ZWQgaW4gdGhlIHBsYXRmb3JtLCBhbmQgdGhlbiBjYWxsIHZpYnJhdGUoKSBpbiB0aGUg
VmlicmF0aW9uIGNsYXNzLgorICAgICAgICAqIE1vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZp
YnJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTmF2aWdhdG9y
VmlicmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRp
b24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3ZpYnJhdGlvbi9WaWJyYXRpb24uY3Bw
OiBBZGRlZC4KKyAgICAgICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBlbnRpcmUgdmlicmF0
aW9uIGxvZ2ljLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRp
b246OlZpYnJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb246On5WaWJyYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlicmF0aW9uOjp2aWJyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6Y2Fu
Y2VsVmlicmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6c3VzcGVuZFZpYnJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb246OnJlc3VtZVZpYnJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb246OnRpbWVyU3RhcnRGaXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWJyYXRpb246OnRpbWVyU3RvcEZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlZp
YnJhdGlvbjo6c3VwcGxlbWVudE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uOjpp
c0FjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlVmlicmF0aW9uVG8pOgorICAgICAg
ICAqIE1vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoVmlicmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbjo6
ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uQ2xpZW50Lmg6IEFk
ZGVkLgorICAgICAgICB2aWJyYXRlKCkgYW5kIGNhbmNlbFZpYnJhdGUoKSBuZWVkIHRvIGJlIGlt
cGxlbWVudGVkIGluIHRoZSBWaWJyYXRpb25DbGllbnQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFZpYnJhdGlvbkNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb25DbGll
bnQ6On5WaWJyYXRpb25DbGllbnQpOgorCiAyMDEyLTAyLTIwICBTaGlueWEgS2F3YW5ha2EgIDxz
aGlueWFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBdHRhY2hlZC9EZXRhY2hlZCBzdGF0ZSBt
dXN0IGJlIHRlc3RhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJh
dGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJy
YXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5hZTQ2YmZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy92aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmNwcApAQCAtMCwwICsxLDgxIEBACisvKgor
ICogIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3JWaWJyYXRpb24uaCIKKworI2lm
IEVOQUJMRShWSUJSQVRJT04pCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisj
aW5jbHVkZSAiVmlicmF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1VpbnQzMkFycmF5Lmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworTmF2aWdhdG9yVmlicmF0aW9uOjpOYXZpZ2F0b3JWaWJyYXRp
b24oKQoreworfQorCitOYXZpZ2F0b3JWaWJyYXRpb246On5OYXZpZ2F0b3JWaWJyYXRpb24oKQor
eworfQorCit2b2lkIE5hdmlnYXRvclZpYnJhdGlvbjo6d2Via2l0VmlicmF0ZShOYXZpZ2F0b3Iq
IG5hdmlnYXRvciwgdW5zaWduZWQgbG9uZyB0aW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBpZiAoIW5hdmlnYXRvci0+ZnJhbWUoKS0+cGFnZSgpKQorICAgICAgICByZXR1cm47CisKKyNp
ZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBpZiAobmF2aWdhdG9yLT5mcmFtZSgp
LT5wYWdlKCktPnZpc2liaWxpdHlTdGF0ZSgpID09IFBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW4p
CisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCisgICAgaWYgKCFWaWJyYXRpb246OmlzQWN0aXZl
KG5hdmlnYXRvci0+ZnJhbWUoKS0+cGFnZSgpKSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JU
RURfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmlicmF0aW9uOjpmcm9tKG5h
dmlnYXRvci0+ZnJhbWUoKS0+cGFnZSgpKS0+dmlicmF0ZSh0aW1lKTsKK30KKwordm9pZCBOYXZp
Z2F0b3JWaWJyYXRpb246OndlYmtpdFZpYnJhdGUoTmF2aWdhdG9yKiBuYXZpZ2F0b3IsIGNvbnN0
IFZpYnJhdGlvblBhdHRlcm4mIHBhdHRlcm4sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
ICghbmF2aWdhdG9yLT5mcmFtZSgpLT5wYWdlKCkpCisgICAgICAgIHJldHVybjsKKworI2lmIEVO
QUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIGlmIChuYXZpZ2F0b3ItPmZyYW1lKCktPnBh
Z2UoKS0+dmlzaWJpbGl0eVN0YXRlKCkgPT0gUGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbikKKyAg
ICAgICAgcmV0dXJuOworI2VuZGlmCisKKyAgICBpZiAoIVZpYnJhdGlvbjo6aXNBY3RpdmUobmF2
aWdhdG9yLT5mcmFtZSgpLT5wYWdlKCkpKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9F
UlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBWaWJyYXRpb246OmZyb20obmF2aWdh
dG9yLT5mcmFtZSgpLT5wYWdlKCkpLT52aWJyYXRlKHBhdHRlcm4pOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVklCUkFUSU9OKQorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5OGY2YWQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3ZpYnJhdGlvbi9OYXZpZ2F0b3JWaWJyYXRpb24u
aApAQCAtMCwwICsxLDUwIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVs
ZWN0cm9uaWNzCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgTmF2aWdhdG9yVmlicmF0aW9uX2gKKyNkZWZp
bmUgTmF2aWdhdG9yVmlicmF0aW9uX2gKKworI2lmIEVOQUJMRShWSUJSQVRJT04pCisKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIE5hdmlnYXRvcjsKK2NsYXNzIFVpbnQzMkFycmF5OworCitj
bGFzcyBOYXZpZ2F0b3JWaWJyYXRpb24geworcHVibGljOgorICAgIHR5cGVkZWYgVmVjdG9yPHVu
c2lnbmVkIGxvbmc+IFZpYnJhdGlvblBhdHRlcm47CisKKyAgICBzdGF0aWMgdm9pZCB3ZWJraXRW
aWJyYXRlKE5hdmlnYXRvciosIHVuc2lnbmVkIGxvbmcgdGltZSwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIHN0YXRpYyB2b2lkIHdlYmtpdFZpYnJhdGUoTmF2aWdhdG9yKiwgY29uc3QgVmlicmF0aW9u
UGF0dGVybiYsIEV4Y2VwdGlvbkNvZGUmKTsKKworcHJpdmF0ZToKKyAgICBOYXZpZ2F0b3JWaWJy
YXRpb24oKTsKKyAgICB+TmF2aWdhdG9yVmlicmF0aW9uKCk7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVklCUkFUSU9OKQorCisjZW5kaWYgLy8gTmF2
aWdhdG9yVmlicmF0aW9uX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92
aWJyYXRpb24vTmF2aWdhdG9yVmlicmF0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
dmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNjI0ODQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvdmlicmF0aW9uL05hdmlnYXRvclZpYnJhdGlvbi5pZGwKQEAgLTAsMCArMSwzMCBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
Cittb2R1bGUgd2luZG93IHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFs
PVZJQlJBVElPTiwKKyAgICAgICAgU3VwcGxlbWVudGFsPU5hdmlnYXRvcgorICAgIF0gTmF2aWdh
dG9yVmlicmF0aW9uIHsKKyAgICAgICAgdm9pZCB3ZWJraXRWaWJyYXRlKGluIHVuc2lnbmVkIGxv
bmdbXSBwYXR0ZXJuKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCB3ZWJraXRW
aWJyYXRlKGluIHVuc2lnbmVkIGxvbmcgdGltZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAg
fTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vVmli
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU1MmMzZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5jcHAK
QEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpYnJh
dGlvbi5oIgorCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKworI2luY2x1ZGUgIlZpYnJhdGlvbkNs
aWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1ZpYnJhdGlvbjo6VmlicmF0aW9uKFZp
YnJhdGlvbkNsaWVudCogY2xpZW50KQorICAgIDogbV92aWJyYXRpb25DbGllbnQoY2xpZW50KQor
ICAgICwgbV90aW1lclN0YXJ0KHRoaXMsICZWaWJyYXRpb246OnRpbWVyU3RhcnRGaXJlZCkKKyAg
ICAsIG1fdGltZXJTdG9wKHRoaXMsICZWaWJyYXRpb246OnRpbWVyU3RvcEZpcmVkKQorICAgICwg
bV9pc1ZpYnJhdGluZyhmYWxzZSkKK3sKK30KKworVmlicmF0aW9uOjp+VmlicmF0aW9uKCkKK3sK
KyAgICBtX3ZpYnJhdGlvbkNsaWVudC0+dmlicmF0aW9uRGVzdHJveWVkKCk7Cit9CisKK1Bhc3NP
d25QdHI8VmlicmF0aW9uPiBWaWJyYXRpb246OmNyZWF0ZShWaWJyYXRpb25DbGllbnQqIGNsaWVu
dCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFZpYnJhdGlvbihjbGllbnQpKTsKK30KKwor
dm9pZCBWaWJyYXRpb246OnZpYnJhdGUoY29uc3QgdW5zaWduZWQgbG9uZyYgdGltZSkKK3sKKyAg
ICBpZiAoIXRpbWUpIHsKKyAgICAgICAgY2FuY2VsVmlicmF0aW9uKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgbV9wYXR0ZXJuLmFwcGVuZCh0aW1lKTsKKyAgICBtX3RpbWVyU3RhcnQu
c3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIFZpYnJhdGlvbjo6dmlicmF0ZShjb25zdCBWaWJy
YXRpb25QYXR0ZXJuJiBwYXR0ZXJuKQoreworICAgIGludCBsZW5ndGggPSBwYXR0ZXJuLnNpemUo
KTsKKworICAgIGlmIChtX2lzVmlicmF0aW5nKQorICAgICAgICBjYW5jZWxWaWJyYXRpb24oKTsK
KworICAgIGlmICghbGVuZ3RoIHx8IChsZW5ndGggPT0gMSAmJiAhcGF0dGVyblswXSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChtX3RpbWVyU3RhcnQuaXNBY3RpdmUoKSkKKyAgICAgICAg
bV90aW1lclN0YXJ0LnN0b3AoKTsKKworICAgIG1fcGF0dGVybiA9IHBhdHRlcm47CisgICAgbV90
aW1lclN0YXJ0LnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBWaWJyYXRpb246OmNhbmNlbFZp
YnJhdGlvbigpCit7CisgICAgaWYgKG1faXNWaWJyYXRpbmcpIHsKKyAgICAgICAgbV92aWJyYXRp
b25DbGllbnQtPmNhbmNlbFZpYnJhdGlvbigpOworICAgICAgICBtX2lzVmlicmF0aW5nID0gZmFs
c2U7CisgICAgICAgIG1fdGltZXJTdG9wLnN0b3AoKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlicmF0
aW9uOjpzdXNwZW5kVmlicmF0aW9uKCkKK3sKKyAgICBpZiAoIW1faXNWaWJyYXRpbmcpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fcGF0dGVybi5pbnNlcnQoMCwgbV90aW1lclN0b3AubmV4dEZp
cmVJbnRlcnZhbCgpKTsKKyAgICBtX3RpbWVyU3RvcC5zdG9wKCk7CisgICAgY2FuY2VsVmlicmF0
aW9uKCk7Cit9CisKK3ZvaWQgVmlicmF0aW9uOjpyZXN1bWVWaWJyYXRpb24oKQoreworICAgIG1f
dGltZXJTdGFydC5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgVmlicmF0aW9uOjp0aW1lclN0
YXJ0RmlyZWQoVGltZXI8VmlicmF0aW9uPiogdGltZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRCh0
aW1lciwgdGltZXIgPT0gJm1fdGltZXJTdGFydCk7CisKKyAgICBtX3RpbWVyU3RhcnQuc3RvcCgp
OworCisgICAgaWYgKG1fcGF0dGVybi5zaXplKCkpIHsKKyAgICAgICAgbV9pc1ZpYnJhdGluZyA9
IHRydWU7CisgICAgICAgIG1fdmlicmF0aW9uQ2xpZW50LT52aWJyYXRlKG1fcGF0dGVyblswXSk7
CisgICAgICAgIG1fdGltZXJTdG9wLnN0YXJ0T25lU2hvdChtX3BhdHRlcm5bMF0gLyAxMDAwLjAp
OworICAgICAgICBtX3BhdHRlcm4ucmVtb3ZlKDApOworICAgIH0KK30KKwordm9pZCBWaWJyYXRp
b246OnRpbWVyU3RvcEZpcmVkKFRpbWVyPFZpYnJhdGlvbj4qIHRpbWVyKQoreworICAgIEFTU0VS
VF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX3RpbWVyU3RvcCk7CisKKyAgICBtX3RpbWVyU3Rv
cC5zdG9wKCk7CisgICAgbV9pc1ZpYnJhdGluZyA9IGZhbHNlOworCisgICAgaWYgKG1fcGF0dGVy
bi5zaXplKCkpIHsKKyAgICAgICAgbV90aW1lclN0YXJ0LnN0YXJ0T25lU2hvdChtX3BhdHRlcm5b
MF0gLyAxMDAwLjApOworICAgICAgICBtX3BhdHRlcm4ucmVtb3ZlKDApOworICAgIH0KK30KKwor
Y29uc3QgQXRvbWljU3RyaW5nJiBWaWJyYXRpb246OnN1cHBsZW1lbnROYW1lKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ2aWJyYXRpb24iKSk7Cisg
ICAgcmV0dXJuIG5hbWU7Cit9CisKK2Jvb2wgVmlicmF0aW9uOjppc0FjdGl2ZShQYWdlKiBwYWdl
KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihWaWJyYXRpb246OmZyb20ocGFnZSkp
OworfQorCit2b2lkIHByb3ZpZGVWaWJyYXRpb25UbyhQYWdlKiBwYWdlLCBWaWJyYXRpb25DbGll
bnQqIGNsaWVudCkKK3sKKyAgICBQYWdlU3VwcGxlbWVudDo6cHJvdmlkZVRvKHBhZ2UsIFZpYnJh
dGlvbjo6c3VwcGxlbWVudE5hbWUoKSwgVmlicmF0aW9uOjpjcmVhdGUoY2xpZW50KSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShWSUJSQVRJT04pCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdlMDczNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbi5oCkBAIC0wLDAgKzEsNzEg
QEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2lmbmRlZiBWaWJyYXRpb25faAorI2RlZmluZSBWaWJyYXRpb25faAorCisjaWYgRU5B
QkxFKFZJQlJBVElPTikKKworI2luY2x1ZGUgIlBhZ2VTdXBwbGVtZW50LmgiCisjaW5jbHVkZSAi
VGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIE5hdmlnYXRvcjsKK2NsYXNzIFBhZ2U7CitjbGFzcyBWaWJyYXRpb25DbGll
bnQ7CisKK2NsYXNzIFZpYnJhdGlvbiA6IHB1YmxpYyBQYWdlU3VwcGxlbWVudCB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBWZWN0b3I8dW5zaWduZWQgbG9uZz4gVmlicmF0aW9uUGF0dGVybjsKKwor
ICAgIFZpYnJhdGlvbihWaWJyYXRpb25DbGllbnQqKTsKKyAgICB+VmlicmF0aW9uKCk7CisKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxWaWJyYXRpb24+IGNyZWF0ZShWaWJyYXRpb25DbGllbnQqKTsK
KworICAgIHZvaWQgdmlicmF0ZShjb25zdCB1bnNpZ25lZCBsb25nJiB0aW1lKTsKKyAgICB2b2lk
IHZpYnJhdGUoY29uc3QgVmlicmF0aW9uUGF0dGVybiYpOworICAgIHZvaWQgY2FuY2VsVmlicmF0
aW9uKCk7CisKKyAgICAvLyBGSVhNRSA6IEFkZCBzdXNwZW5kVmlicmF0aW9uKCkgYW5kIHJlc3Vt
ZVZpYnJhdGlvbigpIHRvIHRoZSBwYWdlIHZpc2liaWxpdHkgZmVhdHVyZSwgd2hlbiB0aGUgZG9j
dW1lbnQuaGlkZGVuIGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLgorICAgIHZvaWQgc3VzcGVuZFZpYnJh
dGlvbigpOworICAgIHZvaWQgcmVzdW1lVmlicmF0aW9uKCk7CisgICAgdm9pZCB0aW1lclN0YXJ0
RmlyZWQoVGltZXI8VmlicmF0aW9uPiopOworICAgIHZvaWQgdGltZXJTdG9wRmlyZWQoVGltZXI8
VmlicmF0aW9uPiopOworCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VwcGxlbWVu
dE5hbWUoKTsKKyAgICBzdGF0aWMgVmlicmF0aW9uKiBmcm9tKFBhZ2UqIHBhZ2UpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PFZpYnJhdGlvbio+KFBhZ2VTdXBwbGVtZW50Ojpmcm9tKHBhZ2UsIHN1cHBs
ZW1lbnROYW1lKCkpKTsgfQorICAgIHN0YXRpYyBib29sIGlzQWN0aXZlKFBhZ2UqKTsKKworcHJp
dmF0ZToKKyAgICBWaWJyYXRpb25DbGllbnQqIG1fdmlicmF0aW9uQ2xpZW50OworICAgIFRpbWVy
PFZpYnJhdGlvbj4gbV90aW1lclN0YXJ0OworICAgIFRpbWVyPFZpYnJhdGlvbj4gbV90aW1lclN0
b3A7CisgICAgYm9vbCBtX2lzVmlicmF0aW5nOworICAgIFZpYnJhdGlvblBhdHRlcm4gbV9wYXR0
ZXJuOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJ
QlJBVElPTikKKworI2VuZGlmIC8vIFZpYnJhdGlvbl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy92aWJyYXRpb24vVmlicmF0aW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZWJlNjg4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvdmlicmF0aW9uL1ZpYnJhdGlvbkNsaWVudC5oCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2lmbmRlZiBWaWJyYXRpb25DbGllbnRfaAorI2RlZmluZSBWaWJyYXRpb25DbGllbnRfaAor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhZ2U7CisKK2NsYXNzIFZpYnJhdGlvbkNs
aWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+VmlicmF0aW9uQ2xpZW50KCkgeyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgdmlicmF0ZShjb25zdCB1bnNpZ25lZCBsb25nJiB0aW1lKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbFZpYnJhdGlvbigpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCB2aWJyYXRpb25EZXN0cm95ZWQoKSA9IDA7Cit9OworCit2b2lkIHByb3ZpZGVWaWJyYXRpb25U
byhQYWdlKiwgVmlicmF0aW9uQ2xpZW50Kik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFZpYnJhdGlvbkNsaWVudF9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50
eHQKaW5kZXggYWVmZGI5OC4uZGFmMjI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
Q01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50
eHQKQEAgLTExNSw2ICsxMTUsMTYgQEAgTElTVChBUFBFTkQgV2ViS2l0X0xJQlJBUklFUwogICAg
ICR7TElCU09VUDI0X0xJQlJBUklFU30KICkKIAorSUYgKEVOQUJMRV9WSUJSQVRJT04pCisgICAg
TElTVChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgJHtXRUJDT1JF
X0RJUn0vTW9kdWxlcy92aWJyYXRpb24KKyAgICApCisgICAgTElTVChBUFBFTkQgV2ViS2l0X1NP
VVJDRVMKKyAgICAgICAgZWZsL1dlYkNvcmVTdXBwb3J0L1ZpYnJhdGlvbkNsaWVudEVmbC5jcHAK
KyAgICApCitFTkRJRiAoKQorCisKIFNFVChXZWJLaXRfVEhFTUVfREVGSU5JVElPTiAiIikKIElG
IChFTkFCTEVfUFJPR1JFU1NfVEFHKQogICBMSVNUKEFQUEVORCBXZWJLaXRfVEhFTUVfREVGSU5J
VElPTiAiLURFTkFCTEVfUFJPR1JFU1NfVEFHIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA1M2RjMzU2
Li5hNTZjMDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMDItMjAg
IEtpaG9uZyBLd29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRkIGEg
bmV3IEFQSSBmb3IgdGhlIFZpYnJhdGlvbiBBUEkoVzNDKS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gZm9yIHRoZSBWaWJyYXRp
b24gQVBJIGZlYXR1cmUgdG8gdGhlIEVGTC1wb3J0IGxheWVyLgorICAgICAgICBodHRwOi8vZGV2
LnczLm9yZy8yMDA5L2RhcC92aWJyYXRpb24vCisgICAgICAgIFRoZXJlIGFyZSB0d28gbWV0aG9k
cyBmb3IgdmlicmF0aW9uIEFQSS4KKyAgICAgICAgLSB2aWJyYXRlIDogVmlicmF0ZSBkZXZpY2Ug
Zm9yIHJlY2VpdmluZyBhcyBhIHBhcmFtZXRlci4KKyAgICAgICAgLSBjYW5jZWxWaWJyYXRlIDog
Q2FuY2VsIGN1cnJlbnQgdmlicmF0aW9uLgorCisgICAgICAgICogQ01ha2VMaXN0c0VmbC50eHQ6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvVmlicmF0aW9uQ2xpZW50RWZsLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbkNsaWVudEVm
bDo6VmlicmF0aW9uQ2xpZW50RWZsKToKKyAgICAgICAgKFdlYkNvcmU6OlZpYnJhdGlvbkNsaWVu
dEVmbDo6dmlicmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb25DbGllbnRFZmw6OmNh
bmNlbFZpYnJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWaWJyYXRpb25DbGllbnRFZmw6OnZp
YnJhdGlvbkRlc3Ryb3llZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvVmlicmF0aW9uQ2xp
ZW50RWZsLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWaWJyYXRpb25D
bGllbnRFZmwpOgorICAgICAgICAoV2ViQ29yZTo6VmlicmF0aW9uQ2xpZW50RWZsOjp+VmlicmF0
aW9uQ2xpZW50RWZsKToKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX0V3
a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgorCiAy
MDEyLTAyLTE3ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJvQHByb2Z1c2lvbi5tb2JpPgog
CiAgICAgICAgIFtFRkxdIFVucmV2aWV3ZWQsIGFkYXB0IHRvIHRoZSBjaGFuZ2VzIGludHJvZHVj
ZWQgaW4gcjEwNzk3My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L1ZpYnJhdGlvbkNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9WaWJyYXRpb25DbGllbnRFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjIzNjViNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9WaWJyYXRpb25DbGllbnRFZmwuY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpYnJhdGlvbkNsaWVudEVmbC5oIgorCisjaWYg
RU5BQkxFKFZJQlJBVElPTikKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWaWJyYXRpb25DbGll
bnRFZmw6OlZpYnJhdGlvbkNsaWVudEVmbChFdmFzX09iamVjdCogdmlldykKKyAgICA6IG1fdmll
dyh2aWV3KQoreworfQorCit2b2lkIFZpYnJhdGlvbkNsaWVudEVmbDo6dmlicmF0ZShjb25zdCB1
bnNpZ25lZCBsb25nJiB0aW1lKQoreworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Nh
bGwobV92aWV3LCAidmlicmF0aW9uLHZpYnJhdGUiLCAodm9pZCopJnRpbWUpOworfQorCit2b2lk
IFZpYnJhdGlvbkNsaWVudEVmbDo6Y2FuY2VsVmlicmF0aW9uKCkKK3sKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInZpYnJhdGlvbixjYW5jZWwiLCAwKTsKK30K
Kwordm9pZCBWaWJyYXRpb25DbGllbnRFZmw6OnZpYnJhdGlvbkRlc3Ryb3llZCgpCit7CisgICAg
ZGVsZXRlIHRoaXM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShWSUJSQVRJT04pCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L1ZpYnJhdGlvbkNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvVmlicmF0aW9uQ2xpZW50RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZTdiMGQ5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L1ZpYnJhdGlvbkNsaWVudEVmbC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiAg
Q29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRl
ZiBWaWJyYXRpb25DbGllbnRFZmxfaAorI2RlZmluZSBWaWJyYXRpb25DbGllbnRFZmxfaAorCisj
aW5jbHVkZSAiVmlicmF0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSA8RXZhcy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFZpYnJhdGlvbkNsaWVudEVmbCA6IHB1YmxpYyBWaWJyYXRp
b25DbGllbnQgeworcHVibGljOgorICAgIFZpYnJhdGlvbkNsaWVudEVmbChFdmFzX09iamVjdCog
dmlldyk7CisgICAgdmlydHVhbCB+VmlicmF0aW9uQ2xpZW50RWZsKCkgeyB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgdmlicmF0ZShjb25zdCB1bnNpZ25lZCBsb25nJiB0aW1lKTsKKyAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsVmlicmF0aW9uKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlicmF0aW9uRGVz
dHJveWVkKCk7CisKK3ByaXZhdGU6CisgICAgRXZhc19PYmplY3QqIG1fdmlldzsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFZpYnJhdGlvbkNsaWVudEVmbF9oCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IDNkNDMyNDEuLjhhOTY3NDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAgICBDb3B5cmln
aHQgKEMpIDIwMDktMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisgICAgQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03MCw2
ICs3MCwxMCBAQAogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50RWZsLmgiCiAjZW5k
aWYKIAorI2lmIEVOQUJMRShWSUJSQVRJT04pCisjaW5jbHVkZSAiVmlicmF0aW9uQ2xpZW50RWZs
LmgiCisjZW5kaWYKKwogc3RhdGljIGNvbnN0IGZsb2F0IHpvb21NaW5pbXVtID0gMC4wNTsKIHN0
YXRpYyBjb25zdCBmbG9hdCB6b29tTWF4aW11bSA9IDQuMDsKIApAQCAtNjE3LDYgKzYyMSwxMCBA
QCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgIFdlYkNvcmU6OnByb3ZpZGVEZXZpY2VPcmll
bnRhdGlvblRvKHByaXYtPnBhZ2UsIG5ldyBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dEVmbCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgV2ViQ29yZTo6cHJv
dmlkZVZpYnJhdGlvblRvKHByaXYtPnBhZ2UsIG5ldyBXZWJDb3JlOjpWaWJyYXRpb25DbGllbnRF
Zmwoc21hcnREYXRhLT5zZWxmKSk7CisjZW5kaWYKKwogICAgIHByaXYtPnBhZ2VTZXR0aW5ncyA9
IHByaXYtPnBhZ2UtPnNldHRpbmdzKCk7CiAgICAgaWYgKCFwcml2LT5wYWdlU2V0dGluZ3MpIHsK
ICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBnZXQgcGFnZSBzZXR0aW5ncy4iKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2UKaW5kZXggN2RmNDQ0Mi4uNDJkMjhiOCAxMDA2NDQKLS0tIGEvU291cmNlL2Nt
YWtlL09wdGlvbnNFZmwuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UK
QEAgLTk1LDYgKzk1LDcgQEAgV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX1NWRyAiRW5hYmxlIFNWRyIg
REVGQVVMVCBPTikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9TVkdfRk9OVFMgIkVuYWJsZSBTVkcg
Zm9udHMiIERFRkFVTFQgT04pCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfVE9VQ0hfRVZFTlRTICJF
bmFibGUgVG91Y2ggRXZlbnRzIiBERUZBVUxUIE9GRikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9U
T1VDSF9JQ09OX0xPQURJTkcgIkVuYWJsZSBUb3VjaCBJY29uIExvYWRpbmciIERFRkFVTFQgT0ZG
KQorV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX1ZJQlJBVElPTiAiRW5hYmxlIHZpYnJhdGlvbiIgREVG
QVVMVCBPTikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9WSURFTyAiRW5hYmxlIHZpZGVvIiBERUZB
VUxUIE9OKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX1dFQl9TT0NLRVRTICJFbmFibGUgd2ViIHNv
Y2tldHMiIERFRkFVTFQgT04pCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfV0VCR0wgIkVuYWJsZSBX
ZWJHTCIgREVGQVVMVCBPRkYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2Vjb25maWcuaC5jbWFr
ZSBiL1NvdXJjZS9jbWFrZWNvbmZpZy5oLmNtYWtlCmluZGV4IDZkM2Y4MzcuLmI2MzJmY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZWNvbmZpZy5oLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZWNv
bmZpZy5oLmNtYWtlCkBAIC0zOSw2ICszOSw3IEBACiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfU1ZH
X0ZPTlRTCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfVE9VQ0hfRVZFTlRTCiAjY21ha2VkZWZpbmUw
MSBFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HCisjY21ha2VkZWZpbmUwMSBFTkFCTEVfVklCUkFU
SU9OCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfVklERU8KICNjbWFrZWRlZmluZTAxIEVOQUJMRV9X
RUJHTAogI2NtYWtlZGVmaW5lMDEgRU5BQkxFX1dFQl9TT0NLRVRTCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDk3ZWQ5MC4uNDAxMDI3NCAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDEyLTAyLTIwICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29t
PgorCisgICAgICAgIEFkZCBhIG5ldyBBUEkgZm9yIHRoZSBWaWJyYXRpb24gQVBJKFczQykuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjAxMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9i
dWlsZC13ZWJraXQ6IEVuYWJsZSBFTkFCTEVfVklCUkFUSU9OIGZlYXR1cmUuCisKIDIwMTItMDIt
MjAgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBjaGVjayB0aGF0IHdlJ3JlIG5vdCBydW5uaW5nIG11bHRpcGxlIG1vZGFsIGRpYWxv
Z3MgYXQgdGhlIHNhbWUgdGltZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJr
aXQgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAppbmRleCBjZGY2MmEwLi42NGM0NzgxIDEw
MDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAorKysgYi9Ub29scy9TY3JpcHRz
L2J1aWxkLXdlYmtpdApAQCAtMTI4LDYgKzEyOCw3IEBAIG15ICgKICAgICAkdGlsZWRCYWNraW5n
U3RvcmVTdXBwb3J0LAogICAgICR0b3VjaEV2ZW50c1N1cHBvcnQsCiAgICAgJHRvdWNoSWNvbkxv
YWRpbmdTdXBwb3J0LAorICAgICR2aWJyYXRpb25TdXBwb3J0LAogICAgICR2aWRlb1N1cHBvcnQs
CiAgICAgJHZpZGVvVHJhY2tTdXBwb3J0LAogICAgICR3ZWJBdWRpb1N1cHBvcnQsCkBAIC0zMjks
NiArMzMwLDkgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICJ0b3VjaC1pY29u
LWxvYWRpbmciLCBkZXNjID0+ICJUb2dnbGUgVG91Y2ggSWNvbiBMb2FkaW5nIFN1cHBvcnQiLAog
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HIiwgZGVmYXVsdCA9PiAw
LCB2YWx1ZSA9PiBcJHRvdWNoSWNvbkxvYWRpbmdTdXBwb3J0IH0sCiAKKyAgICB7IG9wdGlvbiA9
PiAidmlicmF0aW9uIiwgZGVzYyA9PiAiVG9nZ2xlIFZpZGVvIHN1cHBvcnQiLAorICAgICAgZGVm
aW5lID0+ICJFTkFCTEVfVklCUkFUSU9OIiwgZGVmYXVsdCA9PiBpc0VmbCgpLCB2YWx1ZSA9PiBc
JHZpYnJhdGlvblN1cHBvcnQgfSwKKwogICAgIHsgb3B0aW9uID0+ICJ2aWRlbyIsIGRlc2MgPT4g
IlRvZ2dsZSBWaWRlbyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1ZJREVPIiwg
ZGVmYXVsdCA9PiAoaXNBcHBsZVdlYktpdCgpIHx8IGlzR3RrKCkgfHwgaXNCbGFja0JlcnJ5KCkg
fHwgaXNFZmwoKSksIHZhbHVlID0+IFwkdmlkZW9TdXBwb3J0IH0sCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>