<?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>69451</bug_id>
          
          <creation_ts>2011-10-05 12:24:11 -0700</creation_ts>
          <short_desc>Adding gamepad support</short_desc>
          <delta_ts>2013-06-17 08:00:38 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://dvcs.w3.org/hg/webevents/raw-file/default/gamepad.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>84386</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Scott Graham">scottmg</reporter>
          <assigned_to name="Scott Graham">scottmg</assigned_to>
          <cc>abarth</cc>
    
    <cc>adman.com</cc>
    
    <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>eoconnor</cc>
    
    <cc>fishd</cc>
    
    <cc>ojan</cc>
    
    <cc>scheib</cc>
    
    <cc>ted</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.arunp</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>478575</commentid>
    <comment_count>0</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-10-05 12:24:11 -0700</bug_when>
    <thetext>This is the full patch for reference, still WiP. There will be separate bugs&amp;patches for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478596</commentid>
    <comment_count>1</comment_count>
      <attachid>109841</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-10-05 12:48:52 -0700</bug_when>
    <thetext>Created attachment 109841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478601</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-05 12:53:07 -0700</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478625</commentid>
    <comment_count>3</comment_count>
      <attachid>109841</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-05 13:26:37 -0700</bug_when>
    <thetext>Comment on attachment 109841
Patch

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

New failing tests:
fast/dom/navigator-detached-no-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478630</commentid>
    <comment_count>4</comment_count>
      <attachid>109841</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-05 13:28:34 -0700</bug_when>
    <thetext>Comment on attachment 109841
Patch

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

&gt; Source/WebKit/chromium/public/WebViewClient.h:303
&gt; +    // Gamepad -------------------------------------------------------------

nit: new line after section divider.  please preserve the 2 new lines between sections.

it seems like the concept of a gamepad really belongs more at the platform layer of
webkit.  this seems like something you would get via the WebKitPlatformSupport interface
instead of the WebViewClient.  i&apos;d imagine that you probably need something to be contextual
to the WebView however.  can you explain that part?  maybe we could meet up to review this
in a little more detail?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478961</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-05 22:52:25 -0700</bug_when>
    <thetext>There hasn&apos;t been any agreement or support for this feature on webkit-dev mailing list. To the contrary, there has been much disconcert.

One of the ways to move forward with prototyping that we&apos;ve been discussing was working on a branch. This seems like a great candidate for a branch, as merging to trunk shouldn&apos;t be hard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478964</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-05 22:58:24 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; There hasn&apos;t been any agreement or support for this feature on webkit-dev mailing list. To the contrary, there has been much disconcert.
&gt; 
&gt; One of the ways to move forward with prototyping that we&apos;ve been discussing was working on a branch. This seems like a great candidate for a branch, as merging to trunk shouldn&apos;t be hard.


I don&apos;t think this needs to be developed on a branch.  I think this is low cost to develop on the trunk behind a flag.  It is largely orthogonal to existing code, so it should have low impact.

This is being actively developed by Mozilla and Google, and we&apos;d like to proceed to experiment with it in our developer channel (disabled by default behind a command line flag of course).

Can you please share your feedback on the API with the w3c-events working group?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478967</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-05 23:02:44 -0700</bug_when>
    <thetext>Alexey, perhaps you missed this one?
https://bugs.webkit.org/show_bug.cgi?id=66859#c5

Notice that there is a spec under development.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478983</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-05 23:34:25 -0700</bug_when>
    <thetext>I don&apos;t have any feedback that I&apos;m willing to share with the working group at this time. I see that Simon Fraser objected against adding this to WebKit, as well as against the idea itself. How was that resolved?

Quoting &lt;http://www.webkit.org/projects/goals.html&gt;,

&quot;WebKit is an engineering project not a science project. For new features to be adopted into WebKit, we strongly prefer for the technology or at least the use case for it to be proven.&quot;

&quot;WebKit is not the solution to every problem. We focus on web content, not complete solutions to every imaginable technology need.&quot;

&gt; Notice that there is a spec under development.

Having a spec under development is certainly an important step.

For what it&apos;s worth, the spec doesn&apos;t exist where bug 66859 comment 5 points to, even though I can find it in version control history. Also, &lt;http://www.w3.org/2010/webevents/charter/Overview.html&gt; doesn&apos;t list gamepad/joystick interfaces in scope or deliverables. I can see informal discussion with some WG members being in support for recharter, but it hasn&apos;t happened yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478995</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-05 23:56:41 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I don&apos;t have any feedback that I&apos;m willing to share with the working group at this time.

How should we interpret your silence?


&gt; I see that Simon Fraser objected against adding this to WebKit, as well as against the idea itself. How was that resolved?

It was resolved by creating a W3C spec and working to recharter the W3C-events WG.


&gt; Quoting &lt;http://www.webkit.org/projects/goals.html&gt;,
&gt; 
&gt; &quot;WebKit is an engineering project not a science project. For new features to be adopted into WebKit, we strongly prefer for the technology or at least the use case for it to be proven.&quot;
&gt; 
&gt; &quot;WebKit is not the solution to every problem. We focus on web content, not complete solutions to every imaginable technology need.&quot;

I don&apos;t understand what point you are making.  Mozilla and Google are working to add support for game controllers to the web platform.  It is an engineering project based on a strong use case.  I get over 5 million results when I google for &quot;flash gamepad&quot; and nearly 17 million for &quot;flash gamecontroller.&quot;  It seems pretty obvious that HTML5/WebGL-based games would benefit immensely from a gamepad interface.

I honestly believe that there are cases where developing a new API on the trunk could be expensive in terms of its overhead to ports that do not care about the API.  This does not seem to be anywhere close to that.  We&apos;re talking about a light touch on the DOM here.


&gt; &gt; Notice that there is a spec under development.
&gt; 
&gt; Having a spec under development is certainly an important step.

Yes, lack of a spec seemed to be Simon&apos;s main objection initially.  He then proceeded to wonder about other possible manifestations of such an API.  I think we would very much welcome his input on the API design.  Now is a great time to get involved!


&gt; For what it&apos;s worth, the spec doesn&apos;t exist where bug 66859 comment 5 points to, even though I can find it in version control history.

Yes, I noticed that too.  Given that it was recently updated, I suspect a snafu that will be easily fixed.


&gt; Also, &lt;http://www.w3.org/2010/webevents/charter/Overview.html&gt; doesn&apos;t list gamepad/joystick interfaces in scope or deliverables. I can see informal discussion with some WG members being in support for recharter, but it hasn&apos;t happened yet.

Yes, the WG is being rechartered to include this work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479158</commentid>
    <comment_count>10</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-10-06 07:50:12 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; For what it&apos;s worth, the spec doesn&apos;t exist where bug 66859 comment 5 points to, even though I can find it in version control history.

Apologies, I&apos;ve updated to the correct the URL above.

&gt; Also, &lt;http://www.w3.org/2010/webevents/charter/Overview.html&gt; doesn&apos;t list gamepad/joystick interfaces in scope or deliverables. I can see informal discussion with some WG members being in support for recharter, but it hasn&apos;t happened yet.

The Draft from the WG Chair is here if you&apos;re interested in commenting on the rechartering process: http://www.w3.org/2010/webevents/charter/2011/Overview.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479194</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-06 09:13:42 -0700</bug_when>
    <thetext>Darin, these would all be good comments for a webkit-dev discussion. I suggest resuming the thread there.

When suggesting people to actively join development of every spec they have concerns about, please remember that this is a significant time investment. One who cares about immature and/or harmful specs not being in WebKit doesn&apos;t necessarily have any interest in making each of them good. Ditto for convincing every person on Internet that they are harmful.

The concern here as I understand it is that providing low level access to every possible controller creates fragmentation, with purportedly &quot;HTML&quot; content that only works on a few devices. There is no clear cut border here - it&apos;s been mentioned that even touch events can be seen as rare - and then I advocate that adding more mouse specific events is a bad idea for the same reason.

Finally, I agree that the cost of having this in trunk under an ifdef is not very high. This also means that developing on branch is relatively low cost. Since this is still at prototyping stage, I thought that it could be a small feature to polish prototype-on-branch approach on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479231</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-06 09:56:12 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Darin, these would all be good comments for a webkit-dev discussion. I suggest resuming the thread there.

Yes, we should certainly do that.


&gt; When suggesting people to actively join development of every spec they have concerns about, please remember that this is a significant time investment.

My point is that we are working with others on this feature, and it would be helpful for them to hear your concerns too.   We will struggle to properly articulate/channel your concerns because we do not fully understand them.  You can surely communicate them better than anyone else.

I agree that building new APIs takes time.  We are not looking to ship something rushed or poor in quality.  We are looking to prototype, learn and improve the design.


&gt; Finally, I agree that the cost of having this in trunk under an ifdef is not very high. This also means that developing on branch is relatively low cost. Since this is still at prototyping stage, I thought that it could be a small feature to polish prototype-on-branch approach on.

Doing the development on trunk makes it vastly easier for us to get feedback from developers.  They can switch on a flag, try out the feature, and give us feedback.  A branch just adds cost.  Since there is little burden on the trunk, it seems obvious to me that we should do the work on the trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480024</commentid>
    <comment_count>13</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-10-07 08:44:12 -0700</bug_when>
    <thetext>(In reply to comment #4)

&gt; it seems like the concept of a gamepad really belongs more at the platform layer of
&gt; webkit.  this seems like something you would get via the WebKitPlatformSupport interface
&gt; instead of the WebViewClient.  i&apos;d imagine that you probably need something to be contextual
&gt; to the WebView however.  can you explain that part?  maybe we could meet up to review this
&gt; in a little more detail?

Here&apos;s the implementation approach I&apos;m thinking of taking now (hopefully more sensible?):

WebCore/page/Navigator.idl adds &quot;.gamepads&quot; and bindings. WebCore/page adds Gamepad.idl and GamepadList.idl along with bindings to expose to Javascript.

The accessor in Navigator calls into WebCore/platform/chromium/PlatformSupport.h to &quot;pollGamepads()&quot;.

That&apos;s implemented by WebKit/chromium/src/PlatformSupport.cpp which forwards to something in WebKit/chromium/public/WebKitPlatformSupport.h (something like webPollGamepads() but with a better name). It converts from WebGamepads (a POD shared memory representation) to the binding- &amp; WebCore-friendly representation in GamepadList.idl/Gamepad.idl.

chromium/public/ adds WebGamepads.h, a fixed size buffer representation of gamepad data.

On the Chromium side, the browser uses a background thread to poll the hardware into a WebGamepads structure, and implements &quot;webPollGamepads()&quot; which just returns a handle/pointer to that shared memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480177</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-07 11:46:48 -0700</bug_when>
    <thetext>(In reply to comment #13)
...
&gt; Here&apos;s the implementation approach I&apos;m thinking of taking now (hopefully more sensible?):
&gt; 
&gt; WebCore/page/Navigator.idl adds &quot;.gamepads&quot; and bindings. WebCore/page adds Gamepad.idl and GamepadList.idl along with bindings to expose to Javascript.
&gt; 
&gt; The accessor in Navigator calls into WebCore/platform/chromium/PlatformSupport.h to &quot;pollGamepads()&quot;.

We normally define a cross-platform header in WebCore/platform/ that defines the API
cross-platform code should use to talk to the platform.  Then, we provide alternate
implementations of that header based on the needs of specific ports.  For Chromium,
the implementation would use PlatformSupport as you describe.  Other ports might be
implemented by using OS APIs directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480192</commentid>
    <comment_count>15</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-10-07 12:04:31 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; 
&gt; We normally define a cross-platform header in WebCore/platform/ that defines the API
&gt; cross-platform code should use to talk to the platform.  Then, we provide alternate
&gt; implementations of that header based on the needs of specific ports.

I see, thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482469</commentid>
    <comment_count>16</comment_count>
      <attachid>110692</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-10-12 09:49:26 -0700</bug_when>
    <thetext>Created attachment 110692
plumb through platform rather than client</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482474</commentid>
    <comment_count>17</comment_count>
      <attachid>110692</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-10-12 09:54:46 -0700</bug_when>
    <thetext>Comment on attachment 110692
plumb through platform rather than client

Attachment 110692 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10026917</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482515</commentid>
    <comment_count>18</comment_count>
      <attachid>110704</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-10-12 10:47:59 -0700</bug_when>
    <thetext>Created attachment 110704
remove unnecessary include</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482526</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-12 10:56:56 -0700</bug_when>
    <thetext>As discussed in webkit-dev, I don&apos;t think that we should accept an implementation of a spec that&apos;s so immature that it doesn&apos;t even have a meaningful name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482537</commentid>
    <comment_count>20</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-10-12 11:08:19 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; As discussed in webkit-dev, I don&apos;t think that we should accept an implementation of a spec that&apos;s so immature that it doesn&apos;t even have a meaningful name.

And naming concerns should still be discussed in the WG.

The spec focuses on gaming use-cases, and as such, the most common implementation of the spec will almost surely be gamepads, hence the name. It was generalized to support other devices as there was no reason not be flexible, but calling it something vague like &quot;inputdevices&quot; or &quot;controllers&quot; isn&apos;t helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482588</commentid>
    <comment_count>21</comment_count>
      <attachid>110704</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-12 12:02:59 -0700</bug_when>
    <thetext>Comment on attachment 110704
remove unnecessary include

To be clear, my comment is meant to block the patch, marking r- to that effect.

Someone who cares about this feature should work with the WG to make the spec reach some minimal maturity level, like at least having a name that&apos;s not actively misleading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482591</commentid>
    <comment_count>22</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-12 12:06:35 -0700</bug_when>
    <thetext>&gt; The spec focuses on gaming use-cases, and as such, the most common implementation of the spec will almost surely be gamepads, hence the name. It was generalized to support other devices as there was no reason not be flexible, but calling it something vague like &quot;inputdevices&quot; or &quot;controllers&quot; isn&apos;t helpful.

My recollection is that in the webkit-dev discussion, there was consensus that this is a poor name. If you disagree and think that the spec is mature enough to be in WebKit, please post to webkit-dev. That&apos;s where we decide what goes in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482622</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-12 12:46:05 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 110704 [details])
&gt; To be clear, my comment is meant to block the patch, marking r- to that effect.
&gt; 
&gt; Someone who cares about this feature should work with the WG to make the spec reach some minimal maturity level, like at least having a name that&apos;s not actively misleading.

Alexey, I don&apos;t think it is appropriate for you to block this patch on the basis you have stated.  You seem to be the one, who doesn&apos;t like the name, but you are reluctant to complain about it on the WG.  The folks developing this feature are obviously happy with the name, so it doesn&apos;t seem to make sense for them to try to channel you in their discussions on the WG.

From the scope section of the spec:
&quot;Specifically, we choose to only support two categories of input from devices: buttons and axes.&quot;

Now, I can actually see why &quot;gamepad&quot; might be an OK name for this feature.  If you think about a gamepad, you immediately imagine those two categories of information.  It just happens to be true that those same two categories of information can be used to express data from other types of input devices.  I don&apos;t think that makes the name actively misleading.  Maybe the name could be better.  I always like to ponder better names for things.

Besides, this is all being done behind an ENABLE flag.  No one is trying to make a long-term commitment to this API as it exists today.  We&apos;ve been very clear that we want to get this out and into the hands of developers so they can give us feedback.  The best way for us to do that is via nightly builds.  The name of the API can and may change.

By the way, would you mind pointing me to the spec for requestFullScreen?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504385</commentid>
    <comment_count>24</comment_count>
      <attachid>115477</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-16 16:27:13 -0800</bug_when>
    <thetext>Created attachment 115477
remove custom binding code, add DRT hooks and tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505197</commentid>
    <comment_count>25</comment_count>
      <attachid>115675</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-17 14:09:24 -0800</bug_when>
    <thetext>Created attachment 115675
update Skipped for various ports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507119</commentid>
    <comment_count>26</comment_count>
      <attachid>116114</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-21 12:09:37 -0800</bug_when>
    <thetext>Created attachment 116114
remove everything except platform plumbing and DRT/testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507121</commentid>
    <comment_count>27</comment_count>
      <attachid>116114</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-21 12:17:21 -0800</bug_when>
    <thetext>Comment on attachment 116114
remove everything except platform plumbing and DRT/testing

Attachment 116114 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10539023</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507139</commentid>
    <comment_count>28</comment_count>
      <attachid>116114</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-21 12:46:19 -0800</bug_when>
    <thetext>Comment on attachment 116114
remove everything except platform plumbing and DRT/testing

It looks like you are going to need to update WebKit/chromium/DEPS to pull in a version of webkit_support.h that provides SetGamepadData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507150</commentid>
    <comment_count>29</comment_count>
      <attachid>116120</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-21 12:58:23 -0800</bug_when>
    <thetext>Created attachment 116120
update WebKit/chromium/DEPS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507165</commentid>
    <comment_count>30</comment_count>
      <attachid>116123</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-21 13:11:56 -0800</bug_when>
    <thetext>Created attachment 116123
try a different chromium rev</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507176</commentid>
    <comment_count>31</comment_count>
      <attachid>116126</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-21 13:32:33 -0800</bug_when>
    <thetext>Created attachment 116126
add apparently newly-needed chromium deps</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507182</commentid>
    <comment_count>32</comment_count>
      <attachid>116126</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-21 13:42:37 -0800</bug_when>
    <thetext>Comment on attachment 116126
add apparently newly-needed chromium deps

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

&gt; Source/WebCore/platform/Gamepads.h:35
&gt; +void sampleGamepads(GamepadList* into);

Can we put this in Source/WebCore/platform/gamepad/Gamepads.h ?  I presume there will be more gamepad-related files in platform.

&gt; Source/WebKit/chromium/DEPS:35
&gt; -  &apos;chromium_rev&apos;: &apos;109696&apos;
&gt; +  &apos;chromium_rev&apos;: &apos;110994&apos;

Please roll Chromium DEPS in a separate patch.

&gt; Source/WebKit/chromium/src/Gamepads.cpp:38
&gt; +namespace WebCore {

Code in the WebCore namespace should be in WebCore.

&gt; Source/WebKit/chromium/src/Gamepads.cpp:48
&gt; +    for (unsigned i = 0; i &lt; WebKit::WebGamepads::itemsLengthCap; ++i) {

Code in the WebCore namespace should not refer to any code in the WebKit namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507208</commentid>
    <comment_count>33</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-21 14:22:12 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; (From update of attachment 116126 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116126&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/Gamepads.h:35
&gt; &gt; +void sampleGamepads(GamepadList* into);
&gt; 
&gt; Can we put this in Source/WebCore/platform/gamepad/Gamepads.h ?  I presume there will be more gamepad-related files in platform.

I don&apos;t think there will be, perhaps a total of 2 files. Would you still prefer it moved?

&gt; 
&gt; &gt; Source/WebKit/chromium/DEPS:35
&gt; &gt; -  &apos;chromium_rev&apos;: &apos;109696&apos;
&gt; &gt; +  &apos;chromium_rev&apos;: &apos;110994&apos;
&gt; 
&gt; Please roll Chromium DEPS in a separate patch.

OK, https://bugs.webkit.org/show_bug.cgi?id=72911

&gt; 
&gt; &gt; Source/WebKit/chromium/src/Gamepads.cpp:38
&gt; &gt; +namespace WebCore {
&gt; 
&gt; Code in the WebCore namespace should be in WebCore.
&gt; 
&gt; &gt; Source/WebKit/chromium/src/Gamepads.cpp:48
&gt; &gt; +    for (unsigned i = 0; i &lt; WebKit::WebGamepads::itemsLengthCap; ++i) {
&gt; 
&gt; Code in the WebCore namespace should not refer to any code in the WebKit namespace.

Eep, those are due to ignorance about layering (and maybe picking a poor copy/paste source). The goal was to have a prototype in platform for WebCore to available call, and then to have that functionality be implemented by the port. Is that a bad idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507210</commentid>
    <comment_count>34</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-21 14:27:28 -0800</bug_when>
    <thetext>&gt; I don&apos;t think there will be, perhaps a total of 2 files. Would you still prefer it moved?

Nope.  That sounds fine.

&gt; &gt; &gt; Source/WebKit/chromium/src/Gamepads.cpp:48
&gt; &gt; &gt; +    for (unsigned i = 0; i &lt; WebKit::WebGamepads::itemsLengthCap; ++i) {
&gt; &gt; 
&gt; &gt; Code in the WebCore namespace should not refer to any code in the WebKit namespace.
&gt; 
&gt; Eep, those are due to ignorance about layering (and maybe picking a poor copy/paste source). The goal was to have a prototype in platform for WebCore to available call, and then to have that functionality be implemented by the port. Is that a bad idea?

The usual approach is for WebCore code in WebCore/platform to call WebKit/chromium code via PlatformSupport.  The PlatformSupport calls then get bounced to the embedder via WebKitPlatformSupport.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507216</commentid>
    <comment_count>35</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-21 14:34:35 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; &gt; Eep, those are due to ignorance about layering (and maybe picking a poor copy/paste source). The goal was to have a prototype in platform for WebCore to available call, and then to have that functionality be implemented by the port. Is that a bad idea?
&gt; 
&gt; The usual approach is for WebCore code in WebCore/platform to call WebKit/chromium code via PlatformSupport.  The PlatformSupport calls then get bounced to the embedder via WebKitPlatformSupport.

Good catch, Adam!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507238</commentid>
    <comment_count>36</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-21 14:52:43 -0800</bug_when>
    <thetext>(In reply to comment #34)

&gt; The usual approach is for WebCore code in WebCore/platform to call WebKit/chromium code via PlatformSupport.  The PlatformSupport calls then get bounced to the embedder via WebKitPlatformSupport.

I see, so the usage of WebKitPlatformSupport and translation in Gamepads.cpp should really be in chromium/PlatformSupport.cpp instead, and in fact, Gamepads.h/cpp aren&apos;t needed at all.

(It&apos;s fine for page/Navigator to call in WebCore/platform/PlatformSupport directly, right?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507248</commentid>
    <comment_count>37</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-21 14:59:28 -0800</bug_when>
    <thetext>Usually we have a header and a CPP file in WebCore/platform to that calls into PlatformSupport, but that can be just a call-through if that&apos;s all you need.  If you&apos;re doing that, you probably want:

WebCore/platform/Gamepads.h
WebCore/platform/chromium/GamespadsChromium.cpp

because calling PlatformSupport is basically Chromium-specific.

I know this looks like a lot of layers without purpose, but the idea is that other ports might implement this functionality in terms of other APIs, such as Mac OS X native APIs.  In that case, they&apos;d have GamepadsMac.mm in WebCore/platform/mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507280</commentid>
    <comment_count>38</comment_count>
      <attachid>116151</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-21 15:37:55 -0800</bug_when>
    <thetext>Created attachment 116151
fix layering violations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507282</commentid>
    <comment_count>39</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-21 15:39:35 -0800</bug_when>
    <thetext>Improved? Sorry if I misunderstood still.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507285</commentid>
    <comment_count>40</comment_count>
      <attachid>116151</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-21 15:49:10 -0800</bug_when>
    <thetext>Comment on attachment 116151
fix layering violations

The layering stuff looks great.  Thanks!  (I haven&apos;t reviewed the details of the gamepad-specific code or the changes to Tools.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507299</commentid>
    <comment_count>41</comment_count>
      <attachid>116151</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-21 16:09:13 -0800</bug_when>
    <thetext>Comment on attachment 116151
fix layering violations

Attachment 116151 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10554019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507308</commentid>
    <comment_count>42</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-21 16:19:03 -0800</bug_when>
    <thetext>(still (In reply to comment #41)
&gt; (From update of attachment 116151 [details])
&gt; Attachment 116151 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/10554019

(still trying to figure out how to roll chromium/DEPS, things seem kinda broken)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507847</commentid>
    <comment_count>43</comment_count>
      <attachid>116284</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-22 15:49:25 -0800</bug_when>
    <thetext>Created attachment 116284
no change, just to EWS again with DEPS rolled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508061</commentid>
    <comment_count>44</comment_count>
      <attachid>116284</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-23 04:16:29 -0800</bug_when>
    <thetext>Comment on attachment 116284
no change, just to EWS again with DEPS rolled

Clearing flags on attachment: 116284

Committed r101065: &lt;http://trac.webkit.org/changeset/101065&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508062</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-23 04:16:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893893</commentid>
    <comment_count>46</comment_count>
    <who name="Arun Patole">webkit.arunp</who>
    <bug_when>2013-05-26 22:34:36 -0700</bug_when>
    <thetext>Hi, I know this bug is closed but just want to try posting my question in case anyone is still following:

I would like to know the status of Gamepad API spec and also its implementation status as I see many differences in published version of spec, it&apos;s latest editor&apos;s draft and its implementation in various browsers.

Some examples,
- Published draft explains navigator.gamepads interface but its replaced by getGamepads() method in editor&apos;s draft.
published: http://www.w3.org/TR/gamepad/ latest ED: https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html
-Mozilla wiki talks about GamepadButtonEvent, GamepadAxisEvent, GamepadButtonDown, GamepadButtonDown, GamepadAxisMove. But its not yet there in spec.
https://wiki.mozilla.org/GamepadAPI
-As compared to published draft, editor&apos;s draft has some extra attributes in Gamepad interface (attributes: mapping, connected)

Please let me know if the support is still experimental and spec is still being discussed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901038</commentid>
    <comment_count>47</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-06-17 08:00:38 -0700</bug_when>
    <thetext>The specification is still a work in progress.

The WebKit support for any of the specification versions has fell behind. Just for starters, the gamepadconnected and gamepaddisconnected events are not supported in the current implementation.

I believe Blink and Mozilla are most interested in the specification, so their implementations are much more likely to be up to date with the current version of the specification. The two vendors are also most (if not the only) active in standardizing the Gamepad API.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109841</attachid>
            <date>2011-10-05 12:48:52 -0700</date>
            <delta_ts>2011-10-12 09:49:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69451-20111005124851.patch</filename>
            <type>text/plain</type>
            <size>40331</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY3MTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjNWZiMzdhNmYxMzMzMTA5
ZmJiNDk4MDFjMjY1MjAyMTJjNTEwNzVjLi42MjhiNjhjNTUxODFlMmQyZWYxYmMyZjQ4YWFhMzcx
OGI2YjJmYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMTAtMDUgIFNjb3R0
IEdyYWhhbSAgPHNjb3R0bWdAZ29vZ2xlLmNvbT4KKworICAgICAgICBBZGRpbmcgZ2FtZXBhZCBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
OTQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgbm90IGluY2x1ZGVkIGluIHBhdGNoIHlldC4KKworICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhHYW1lcGFkQ3VzdG9tLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVOdW1iZXJBcnJheSk6CisgICAgICAg
IChXZWJDb3JlOjpWOEdhbWVwYWQ6OmF4ZXNBY2Nlc3NvckdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpWOEdhbWVwYWQ6OmJ1dHRvbnNBY2Nlc3NvckdldHRlcik6CisgICAgICAgICogZG9tL0dh
bWVwYWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWQ6OkdhbWVwYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZDo6fkdhbWVwYWQpOgorICAgICAgICAqIGRvbS9HYW1l
cGFkLmg6IEFkZGVkLgorICAgICAgICAqIGRvbS9HYW1lcGFkLmlkbDogQWRkZWQuCisgICAgICAg
ICogZG9tL0dhbWVwYWRDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFk
Q2xpZW50Ojp+R2FtZXBhZENsaWVudCk6CisgICAgICAgICogZG9tL0dhbWVwYWRMaXN0LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkTGlzdDo6R2FtZXBhZExpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6On5HYW1lcGFkTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpHYW1lcGFkTGlzdDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6
OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkTGlzdDo6bGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0OjppdGVtKToKKyAgICAgICAgKiBkb20vR2FtZXBhZExp
c3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkTGlzdDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBkb20vR2FtZXBhZExpc3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL05hdmln
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6Ok5hdmlnYXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OndlYmtpdEdhbWVwYWRzKToKKyAgICAgICAgKiBwYWdl
L05hdmlnYXRvci5oOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmlkbDoKKyAgICAgICAgKiBw
YWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpnYW1lcGFkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBh
Z2VDbGllbnRzOjpQYWdlQ2xpZW50cyk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisKIDIwMTEt
MTAtMDUgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciBEZWJ1ZyBidWlsZGVycy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCA1ZjM5ZmU4ZmU0ZTdlMjUyYTUxMzlhNDAwNzAzNGY1NzU5NGIxMTg2Li41Y2Q1ODk2NjY3
NWUwZjkyYTg5MTA3NjUzYTI5MmY1ZWIzZjAxOTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMTc0
LDYgKzExNzQsOCBAQAogICAgICAgICAgICAgJ2RvbS9FdmVudEV4Y2VwdGlvbi5pZGwnLAogICAg
ICAgICAgICAgJ2RvbS9FdmVudExpc3RlbmVyLmlkbCcsCiAgICAgICAgICAgICAnZG9tL0V2ZW50
VGFyZ2V0LmlkbCcsCisgICAgICAgICAgICAnZG9tL0dhbWVwYWQuaWRsJywKKyAgICAgICAgICAg
ICdkb20vR2FtZXBhZExpc3QuaWRsJywKICAgICAgICAgICAgICdkb20vSGFzaENoYW5nZUV2ZW50
LmlkbCcsCiAgICAgICAgICAgICAnZG9tL0tleWJvYXJkRXZlbnQuaWRsJywKICAgICAgICAgICAg
ICdkb20vTG9jYWxNZWRpYVN0cmVhbS5pZGwnLApAQCAtMjE1NSw2ICsyMTU3LDcgQEAKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhGaWxlUmVhZGVyQ3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmxvYXQzMkFycmF5Q3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmxvYXQ2NEFycmF5Q3VzdG9tLmNwcCcs
CisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4R2FtZXBhZEN1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQXVkaW9FbGVt
ZW50Q29uc3RydWN0b3IuY3BwJywKQEAgLTUxODMsNiArNTE4NiwxMCBAQAogICAgICAgICAgICAg
J2RvbS9FeGNlcHRpb25CYXNlLmgnLAogICAgICAgICAgICAgJ2RvbS9FeGNlcHRpb25Db2RlLmNw
cCcsCiAgICAgICAgICAgICAnZG9tL0V4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5jcHAnLAorICAg
ICAgICAgICAgJ2RvbS9HYW1lcGFkLmNwcCcsCisgICAgICAgICAgICAnZG9tL0dhbWVwYWQuaCcs
CisgICAgICAgICAgICAnZG9tL0dhbWVwYWRMaXN0LmNwcCcsCisgICAgICAgICAgICAnZG9tL0dh
bWVwYWRMaXN0LmgnLAogICAgICAgICAgICAgJ2RvbS9IYXNoQ2hhbmdlRXZlbnQuaCcsCiAgICAg
ICAgICAgICAnZG9tL0lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyLmgnLAog
ICAgICAgICAgICAgJ2RvbS9JY29uVVJMLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhHYW1lcGFkQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEdhbWVwYWRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwM2M5
YTA5ZTdlZWY2ZTU1NGJkYTliM2Q0NmZjZWUwYjFmZjI3NWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhHYW1lcGFkQ3VzdG9tLmNwcApAQCAt
MCwwICsxLDY0IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8v
CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSAorLy8gREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhHYW1l
cGFkLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIlY4QmluZGluZy5oIgor
I2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKworI2lu
Y2x1ZGUgPHY4Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjcmVhdGVOdW1iZXJBcnJheShjb25zdCBHYW1lcGFkOjpGbG9hdFZlY3RvciYg
dmVjdG9yKQoreworICAgIHVuc2lnbmVkIHNpemUgPSB2ZWN0b3Iuc2l6ZSgpOworICAgIHY4OjpM
b2NhbDx2ODo6QXJyYXk+IHJldCA9IHY4OjpBcnJheTo6TmV3KHNpemUpOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIHJldC0+U2V0KGksIHY4OjpOdW1i
ZXI6Ok5ldyh2ZWN0b3JbaV0pKTsKKyAgICByZXR1cm4gcmV0OworfQorCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhHYW1lcGFkOjpheGVzQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRT
KCJET00uR2FtZXBhZC5heGVzLl9nZXQiKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhv
bGRlciA9IGluZm8uSG9sZGVyKCk7CisgICAgR2FtZXBhZCogaW1wID0gVjhHYW1lcGFkOjp0b05h
dGl2ZShob2xkZXIpOworICAgIHJldHVybiBjcmVhdGVOdW1iZXJBcnJheShpbXAtPmF4ZXMoKSk7
Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEdhbWVwYWQ6OmJ1dHRvbnNBY2Nlc3Nvckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5HYW1lcGFkLmJ1dHRvbnMuX2dldCIpOworICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKKyAgICBHYW1l
cGFkKiBpbXAgPSBWOEdhbWVwYWQ6OnRvTmF0aXZlKGhvbGRlcik7CisgICAgcmV0dXJuIGNyZWF0
ZU51bWJlckFycmF5KGltcC0+YnV0dG9ucygpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vR2FtZXBhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2FtZXBhZC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjBkYmQ4NmY1ODVlYzc2NDc3YjQxZTdlYTIwZTZjYTBiZWQ2OThiMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HYW1lcGFkLmNwcApAQCAtMCwwICsxLDQ1IEBA
CisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8g
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFN
QUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZXBhZC5oIgorCisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2Ft
ZXBhZDo6R2FtZXBhZChjb25zdCBTdHJpbmcmIGlkLCB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQg
bG9uZyBsb25nIHRpbWVzdGFtcCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFZlY3Rv
ciYgYXhlcywgY29uc3QgRmxvYXRWZWN0b3ImIGJ1dHRvbnMpCisgICAgOiBtX2lkKGlkKQorICAg
ICwgbV9pbmRleChpbmRleCkKKyAgICAsIG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKKyAgICAsIG1f
YXhlcyhheGVzKQorICAgICwgbV9idXR0b25zKGJ1dHRvbnMpCit7Cit9CisKK0dhbWVwYWQ6On5H
YW1lcGFkKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0dhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HYW1lcGFkLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDIzYWFmNDg3YzA0MWQwNzQ5Y2NmNGRmMTNmMDdkYzRjM2FiMTEwNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HYW1lcGFkLmgKQEAgLTAsMCArMSw2
NCBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLworLy8gMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisvLyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
Ky8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorLy8gRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorLy8g
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8v
IERBTUFHRS4KKworI2lmbmRlZiBHYW1lcGFkX2gKKyNkZWZpbmUgR2FtZXBhZF9oCisKKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBH
YW1lcGFkOiBwdWJsaWMgUmVmQ291bnRlZDxHYW1lcGFkPiB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBWZWN0b3I8ZmxvYXQsIDE2PiBGbG9hdFZlY3RvcjsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxH
YW1lcGFkPiBjcmVhdGUoCisgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGlkLCB1bnNpZ25lZCBp
bmRleCwgdW5zaWduZWQgbG9uZyBsb25nIHRpbWVzdGFtcCwKKyAgICAgICAgICAgIGNvbnN0IEZs
b2F0VmVjdG9yJiBheGVzLCBjb25zdCBGbG9hdFZlY3RvciYgYnV0dG9ucykKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2FtZXBhZChpZCwgaW5kZXgsIHRpbWVzdGFtcCwgYXhl
cywgYnV0dG9ucykpOworICAgIH0KKyAgICB+R2FtZXBhZCgpOworCisgICAgY29uc3QgU3RyaW5n
JiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdGltZXN0YW1wKCkg
Y29uc3QgeyByZXR1cm4gbV90aW1lc3RhbXA7IH0KKyAgICBjb25zdCBGbG9hdFZlY3RvciYgYXhl
cygpIGNvbnN0IHsgcmV0dXJuIG1fYXhlczsgfQorICAgIGNvbnN0IEZsb2F0VmVjdG9yJiBidXR0
b25zKCkgY29uc3QgeyByZXR1cm4gbV9idXR0b25zOyB9CisKK3ByaXZhdGU6CisgICAgR2FtZXBh
ZChjb25zdCBTdHJpbmcmIGlkLCB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgbG9uZyBsb25nIHRp
bWVzdGFtcCwKKyAgICAgICAgICAgIGNvbnN0IEZsb2F0VmVjdG9yJiBheGVzLCBjb25zdCBGbG9h
dFZlY3RvciYgYnV0dG9ucyk7CisKKyAgICBTdHJpbmcgbV9pZDsKKyAgICB1bnNpZ25lZCBtX2lu
ZGV4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX3RpbWVzdGFtcDsKKworICAgIEZsb2F0VmVj
dG9yIG1fYXhlczsKKyAgICBGbG9hdFZlY3RvciBtX2J1dHRvbnM7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHYW1lcGFkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9HYW1lcGFkLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HYW1lcGFkLmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iNzliYWY5MDYzMjM4ZGUyNDdkMzFlNWQ3OTU0MjhmYWZmNWFiMzVjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0dhbWVwYWQuaWRsCkBAIC0wLDAgKzEs
MzYgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8g
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8v
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisv
LyBEQU1BR0UuCisKK21vZHVsZSBkb20geworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29u
ZGl0aW9uYWw9R0FNRVBBRAorICAgIF0gR2FtZXBhZCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcgaWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIGluZGV4OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25n
IHRpbWVzdGFtcDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDdXN0b21HZXR0ZXJdIEFy
cmF5IGF4ZXM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tR2V0dGVyXSBBcnJh
eSBidXR0b25zOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9H
YW1lcGFkQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2FtZXBhZENsaWVudC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjUxZGM0NTFjNDUxYjRiMzhlZDdlMTU5NDdkOGQwMzI4Y2U2M2JjNzkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2FtZXBhZENsaWVudC5oCkBAIC0wLDAgKzEs
NDIgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8g
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8v
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisv
LyBEQU1BR0UuCisKKyNpZm5kZWYgR2FtZXBhZENsaWVudF9oCisjZGVmaW5lIEdhbWVwYWRDbGll
bnRfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdhbWVwYWRMaXN0OworCitjbGFz
cyBHYW1lcGFkQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HYW1lcGFkQ2xpZW50KCkg
eyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc3RvcFVwZGF0aW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBsYXN0R2FtZXBhZHNE
YXRhKFdlYkNvcmU6OkdhbWVwYWRMaXN0JikgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR2FtZXBhZENsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vR2FtZXBhZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0dhbWVw
YWRMaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZGZiOThjMjIxZmRmNWViMmY5MTBiYTVlODc0YTE4YzYy
ZTI5ODhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0dhbWVwYWRMaXN0
LmNwcApAQCAtMCwwICsxLDU5IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
IG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
Ky8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiR2FtZXBhZExpc3QuaCIKKworI2luY2x1ZGUgIkdhbWVwYWQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitHYW1lcGFkTGlzdDo6R2FtZXBhZExpc3QoKQoreworfQorCitHYW1lcGFkTGlz
dDo6fkdhbWVwYWRMaXN0KCkKK3sKK30KKwordm9pZCBHYW1lcGFkTGlzdDo6Y2xlYXIoKQorewor
ICAgIG1fZ2FtZXBhZHMuY2xlYXIoKTsKK30KKwordm9pZCBHYW1lcGFkTGlzdDo6YXBwZW5kKFBh
c3NSZWZQdHI8R2FtZXBhZD4gZ2FtZXBhZCkKK3sKKyAgICBtX2dhbWVwYWRzLmFwcGVuZChnYW1l
cGFkKTsKK30KKwordW5zaWduZWQgR2FtZXBhZExpc3Q6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fZ2FtZXBhZHMuc2l6ZSgpOworfQorCitHYW1lcGFkKiBHYW1lcGFkTGlzdDo6aXRl
bSh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICByZXR1cm4gaW5kZXggPCBsZW5ndGgoKSA/IG1fZ2Ft
ZXBhZHNbaW5kZXhdLmdldCgpIDogMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0dhbWVwYWRMaXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vR2FtZXBhZExpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTIwYTIxYmNjODA1NmIxYzc4OGFjNTkx
ZDRlNGMxNTE5ZWMwMThlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0dh
bWVwYWRMaXN0LmgKQEAgLTAsMCArMSw1NSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisv
LyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisv
LyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKworI2lmbmRlZiBHYW1lcGFkTGlzdF9o
CisjZGVmaW5lIEdhbWVwYWRMaXN0X2gKKworI2luY2x1ZGUgIkdhbWVwYWQuaCIKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPEdhbWVwYWQ+ID4gR2FtZXBhZFZlY3Rv
cjsKKworY2xhc3MgR2FtZXBhZExpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxHYW1lcGFkTGlzdD4g
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdhbWVwYWRMaXN0PiBjcmVhdGUoKSB7
IHJldHVybiBhZG9wdFJlZihuZXcgR2FtZXBhZExpc3QpOyB9CisgICAgfkdhbWVwYWRMaXN0KCk7
CisKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxHYW1lcGFk
Pik7CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgR2FtZXBhZCogaXRlbSh1bnNp
Z25lZCBpbmRleCk7CisKK3ByaXZhdGU6CisgICAgR2FtZXBhZExpc3QoKTsKKworICAgIEdhbWVw
YWRWZWN0b3IgbV9nYW1lcGFkczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEdhbWVwYWRMaXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9HYW1l
cGFkTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2FtZXBhZExpc3QuaWRsCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI0MmI4MTVkZmFmNDI3ODY1NzNiZjUxYWI1MzhlZjRmYTNkZjU0MjgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2FtZXBhZExpc3QuaWRsCkBAIC0wLDAgKzEsMzQg
QEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisv
LyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8vIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisvLyBE
QU1BR0UuCisKK21vZHVsZSBkb20geworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0
aW9uYWw9R0FNRVBBRCwKKyAgICAgICAgSGFzSW5kZXhHZXR0ZXIKKyAgICBdIEdhbWVwYWRMaXN0
IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAg
ICAgICBHYW1lcGFkIGl0ZW0oaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSB1bnNp
Z25lZCBsb25nIGluZGV4KTsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAK
aW5kZXggYjFlNGFiMWZmZDY2OWNkOThlNWNiNzkwZWE3NGIwMzgyOTk3NTkxOS4uYzRmMmI2N2I3
NWJhYWQxOGQ3NjEyYzVkNTM2NzgyYmQ4ZDJhYjZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9y
LmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkdh
bWVwYWRDbGllbnQuaCIKKyNpbmNsdWRlICJHYW1lcGFkTGlzdC5oIgogI2luY2x1ZGUgIkdlb2xv
Y2F0aW9uLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCkBAIC01
MSw2ICs1Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTmF2aWdhdG9yOjpOYXZpZ2F0b3Io
RnJhbWUqIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkKKyNpZiBFTkFCTEUoR0FNRVBBRCkK
KyAgICAsIG1fZ2FtZXBhZHMoR2FtZXBhZExpc3Q6OmNyZWF0ZSgpKQorI2VuZGlmCiB7CiB9CiAK
QEAgLTI4Nyw0ICsyOTIsMTYgQEAgdm9pZCBOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYShj
b25zdCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXMKIH0KICNlbmRpZgog
CisjaWYgRU5BQkxFKEdBTUVQQUQpCitHYW1lcGFkTGlzdCogTmF2aWdhdG9yOjp3ZWJraXRHYW1l
cGFkcygpCit7CisgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKSAmJiBtX2ZyYW1lLT5wYWdlKCktPmdh
bWVwYWRDbGllbnQoKSkKKyAgICAgICAgbV9mcmFtZS0+cGFnZSgpLT5nYW1lcGFkQ2xpZW50KCkt
PnN0YXJ0VXBkYXRpbmcoKTsKKyAgICAvLyBUT0RPKHNjb3R0bWcpIFdvdWxkIGJlIGlkZWFsIHRv
IGhhdmUgYSBwb2xsIHRyaWdnZXJlZCBqdXN0IGJlZm9yZSBSQUYsCisgICAgLy8gYnV0IHNlZW1z
IHZlcnkgY2hhbGxlbmdpbmcgd2l0aCBjdXJyZW50IGFyY2hpdGVjdHVyZS4KKyAgICBtX2ZyYW1l
LT5wYWdlKCktPmdhbWVwYWRDbGllbnQoKS0+bGFzdEdhbWVwYWRzRGF0YSgqbV9nYW1lcGFkcyk7
CisgICAgcmV0dXJuIG1fZ2FtZXBhZHMuZ2V0KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKaW5kZXggOGQxYzY5ZWFjOTBiMjJlODdk
MDEzOTU3MTZkOGE2MGQyNWI2MTljYS4uNjVmMjgwZDI3MDgxNjM1ODE3MjQ2Y2UxM2NlZTJiZDMx
MjZkNGRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCkBAIC0zMSw2ICszMSw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIERPTU1pbWVUeXBlQXJyYXk7CiBjbGFzcyBET01QbHVnaW5B
cnJheTsKIGNsYXNzIEZyYW1lOworI2lmIEVOQUJMRShHQU1FUEFEKQorY2xhc3MgR2FtZXBhZExp
c3Q7CisjZW5kaWYKIGNsYXNzIEdlb2xvY2F0aW9uOwogY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlh
RXJyb3JDYWxsYmFjazsKIGNsYXNzIE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjazsK
QEAgLTcxLDEyICs3NCwxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdlYmtpdEdldFVz
ZXJNZWRpYShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1l
ZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNh
bGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR0FNRVBBRCkK
KyAgICBHYW1lcGFkTGlzdCogd2Via2l0R2FtZXBhZHMoKTsKKyNlbmRpZgorCiBwcml2YXRlOgog
ICAgIE5hdmlnYXRvcihGcmFtZSopOwogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIG11dGFibGUg
UmVmUHRyPERPTVBsdWdpbkFycmF5PiBtX3BsdWdpbnM7CiAgICAgbXV0YWJsZSBSZWZQdHI8RE9N
TWltZVR5cGVBcnJheT4gbV9taW1lVHlwZXM7CiAgICAgbXV0YWJsZSBSZWZQdHI8R2VvbG9jYXRp
b24+IG1fZ2VvbG9jYXRpb247CisjaWYgRU5BQkxFKEdBTUVQQUQpCisgICAgbXV0YWJsZSBSZWZQ
dHI8R2FtZXBhZExpc3Q+IG1fZ2FtZXBhZHM7CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yLmlkbAppbmRleCBjOTBkODU3NGRlYjEyMDY4NTg5ZmM3ZDgxMGJlMTlkM2UzOTM1
ZjBjLi4xN2E1ZTE0MGYxMDU2OTk1OWJjOWM0NGIyNDQ0NDkyYjdlOTQ2MGI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuaWRsCkBAIC01OSw2ICs1OSwxMCBAQCBtb2R1bGUgd2luZG93IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gW0NhbGxiYWNrPUZ1bmN0aW9uT25seSwgT3B0aW9uYWxdIE5hdmlnYXRvclVzZXJNZWRpYUVy
cm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaykKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRp
b24pOwogI2VuZGlmCisKKyNpZiBkZWZpbmVkKEVOQUJMRV9HQU1FUEFEKSAmJiBFTkFCTEVfR0FN
RVBBRAorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgR2FtZXBhZExpc3Qgd2Via2l0R2FtZXBh
ZHM7CisjZW5kaWYKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBiNWEyOGEwYjdk
MDAxNDFhNjM5ZGEyZDk5YTBlZDI5ZjY4MmY3NmFlLi5kNmI5Njk2YzBlZjdhNDM2Mjg3MGI4Njky
NDEwMTA2MGQyNjBlNDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNp
bmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdhbWVwYWRDbGllbnQuaCIKICNpbmNsdWRlICJI
VE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yQ29udHJvbGxlci5oIgpAQCAtMTQ1LDYgKzE0Niw5IEBAIFBhZ2U6OlBhZ2UoUGFnZUNsaWVu
dHMmIHBhZ2VDbGllbnRzKQogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgLCBtX3NwZWVj
aElucHV0Q2xpZW50KHBhZ2VDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50KQogI2VuZGlmCisjaWYg
RU5BQkxFKEdBTUVQQUQpCisgICAgLCBtX2dhbWVwYWRDbGllbnQocGFnZUNsaWVudHMuZ2FtZXBh
ZENsaWVudCkKKyNlbmRpZgogICAgICwgbV9zZXR0aW5ncyhhZG9wdFB0cihuZXcgU2V0dGluZ3Mo
dGhpcykpKQogICAgICwgbV9wcm9ncmVzcyhhZG9wdFB0cihuZXcgUHJvZ3Jlc3NUcmFja2VyKSkK
ICAgICAsIG1fYmFja0ZvcndhcmRDb250cm9sbGVyKGFkb3B0UHRyKG5ldyBCYWNrRm9yd2FyZENv
bnRyb2xsZXIodGhpcywgcGFnZUNsaWVudHMuYmFja0ZvcndhcmRDbGllbnQpKSkKQEAgLTkwNyw2
ICs5MTEsMTMgQEAgU3BlZWNoSW5wdXQqIFBhZ2U6OnNwZWVjaElucHV0KCkKIH0KICNlbmRpZgog
CisjaWYgRU5BQkxFKEdBTUVQQUQpCitHYW1lcGFkQ2xpZW50KiBQYWdlOjpnYW1lcGFkQ2xpZW50
KCkKK3sKKyAgICByZXR1cm4gbV9nYW1lcGFkQ2xpZW50OworfQorI2VuZGlmCisKIHZvaWQgUGFn
ZTo6ZG5zUHJlZmV0Y2hpbmdTdGF0ZUNoYW5nZWQoKQogewogICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4
dCgpKQpAQCAtMTAwNSw2ICsxMDE2LDcgQEAgUGFnZTo6UGFnZUNsaWVudHM6OlBhZ2VDbGllbnRz
KCkKICAgICAsIGRldmljZU9yaWVudGF0aW9uQ2xpZW50KDApCiAgICAgLCBzcGVlY2hJbnB1dENs
aWVudCgwKQogICAgICwgbWVkaWFTdHJlYW1DbGllbnQoMCkKKyAgICAsIGdhbWVwYWRDbGllbnQo
MCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAxMzkwYzk4NGRiNmE2NTI4NjIzMjIzOTNmZmFk
ODFlNTZiZTI2MjVjLi4yMTJmNWE3NzU2ZDBmNDhiZjUzYWVlZjllZDk5OTNkNDY1MGNmYjUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaApAQCAtNjMsNiArNjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgRm9jdXNDb250cm9sbGVyOwogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEZyYW1l
U2VsZWN0aW9uOworICAgIGNsYXNzIEdhbWVwYWRDbGllbnQ7CiAgICAgY2xhc3MgR2VvbG9jYXRp
b25DbGllbnQ7CiAgICAgY2xhc3MgR2VvbG9jYXRpb25Db250cm9sbGVyOwogICAgIGNsYXNzIEhh
bHRhYmxlUGx1Z2luOwpAQCAtMTIwLDYgKzEyMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgICAgIFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+IGJhY2tGb3J3YXJkQ2xpZW50OwogICAg
ICAgICAgICAgU3BlZWNoSW5wdXRDbGllbnQqIHNwZWVjaElucHV0Q2xpZW50OwogICAgICAgICAg
ICAgTWVkaWFTdHJlYW1DbGllbnQqIG1lZGlhU3RyZWFtQ2xpZW50OworICAgICAgICAgICAgR2Ft
ZXBhZENsaWVudCogZ2FtZXBhZENsaWVudDsKICAgICAgICAgfTsKIAogICAgICAgICBQYWdlKFBh
Z2VDbGllbnRzJik7CkBAIC0xOTEsNiArMTkzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lm
IEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgICAgIFNwZWVjaElucHV0KiBzcGVlY2hJbnB1dCgp
OwogI2VuZGlmCisjaWYgRU5BQkxFKEdBTUVQQUQpCisgICAgICAgIEdhbWVwYWRDbGllbnQqIGdh
bWVwYWRDbGllbnQoKTsKKyNlbmRpZgogICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MoKSBjb25z
dCB7IHJldHVybiBtX3NldHRpbmdzLmdldCgpOyB9CiAgICAgICAgIFByb2dyZXNzVHJhY2tlciog
cHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2dyZXNzLmdldCgpOyB9CiAgICAgICAgIEJh
Y2tGb3J3YXJkQ29udHJvbGxlciogYmFja0ZvcndhcmQoKSBjb25zdCB7IHJldHVybiBtX2JhY2tG
b3J3YXJkQ29udHJvbGxlci5nZXQoKTsgfQpAQCAtMzUxLDYgKzM1Niw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgU3BlZWNoSW5wdXRDbGllbnQqIG1fc3BlZWNoSW5wdXRDbGllbnQ7
CiAgICAgICAgIE93blB0cjxTcGVlY2hJbnB1dD4gbV9zcGVlY2hJbnB1dDsKICNlbmRpZgorI2lm
IEVOQUJMRShHQU1FUEFEKQorICAgICAgICBHYW1lcGFkQ2xpZW50KiBtX2dhbWVwYWRDbGllbnQ7
CisjZW5kaWYKICAgICAgICAgT3duUHRyPFNldHRpbmdzPiBtX3NldHRpbmdzOwogICAgICAgICBP
d25QdHI8UHJvZ3Jlc3NUcmFja2VyPiBtX3Byb2dyZXNzOwogICAgICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggMzViNzM0MjI1MzliYWYyYWU5NWU0NjEyMDk3NWEyMTk5NThjY2My
Ni4uYTJhNWJkMDExN2JmYjljMWJhNTgwOGFlZjFlMzRhNDY2OGQ4NjFkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMS0xMC0wNSAgU2NvdHQgR3JhaGFt
ICA8c2NvdHRtZ0Bnb29nbGUuY29tPgorCisgICAgICAgIEFkZGluZyBnYW1lcGFkIHN1cHBvcnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NDUxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQu
Z3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJHYW1lcGFkQ2xpZW50Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJHYW1lcGFkQ2xpZW50Ojp+V2ViR2FtZXBhZENsaWVudCk6CisgICAgICAg
ICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVu
dDo6Z2FtZXBhZENsaWVudCk6CisgICAgICAgICogc3JjL0dhbWVwYWRDbGllbnRQcm94eS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpHYW1lcGFkQ2xpZW50UHJveHk6OnN0YXJ0VXBkYXRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpHYW1lcGFkQ2xpZW50UHJveHk6OnN0b3BVcGRhdGluZyk6
CisgICAgICAgIChXZWJLaXQ6OkdhbWVwYWRDbGllbnRQcm94eTo6bGFzdEdhbWVwYWRzRGF0YSk6
CisgICAgICAgICogc3JjL0dhbWVwYWRDbGllbnRQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6R2FtZXBhZENsaWVudFByb3h5OjpHYW1lcGFkQ2xpZW50UHJveHkpOgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJW
aWV3SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTEtMTAtMDUgIFl1
cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogcHJvdmlkZSBhIHdheSBmb3IgcGVyc2lzdGluZyB3b3JrZXIgaW5zcGVjdG9yIHN0YXRl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggNTI0NDAzMzg4YjE0NGRkZWI1MmM5NmJk
OGFhYjgxNmEwMmNmOTM5Mi4uNGE5YzE3YzdhN2M2YTcxZDBhNTkyZjA1MTk4ZjQxYjIxMzY5YTQ3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTgyLDYgKzE4Miw3IEBACiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJGb250Q2FjaGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJGb3JtQ29udHJvbEVsZW1lbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJGb3JtRWxlbWVudC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkdhbWVwYWRDbGll
bnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNsaWVudC5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlci5oJywKQEAgLTM2
Nyw2ICszNjgsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9GcmFtZU5ldHdvcmtpbmdDb250ZXh0SW1wbC5oJywKKyAgICAg
ICAgICAgICAgICAnc3JjL0dhbWVwYWRDbGllbnRQcm94eS5jcHAnLAorICAgICAgICAgICAgICAg
ICdzcmMvR2FtZXBhZENsaWVudFByb3h5LmgnLAogICAgICAgICAgICAgICAgICdzcmMvR2VvbG9j
YXRpb25DbGllbnRQcm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvR2VvbG9jYXRpb25D
bGllbnRQcm94eS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hy
b21pdW0uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkdhbWVwYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdhbWVw
YWRDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDc4ODFmNGU4NDM1MzYzYzhlYmNhOTY2NjAyNjQzOTMy
YTgyNWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViR2FtZXBhZENsaWVudC5oCkBAIC0wLDAgKzEsNTUgQEAKKy8vIENvcHlyaWdodCAoQykgMjAx
MSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8g
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0UuCisKKyNpZm5kZWYgV2ViR2Ft
ZXBhZENsaWVudF9oCisjZGVmaW5lIFdlYkdhbWVwYWRDbGllbnRfaAorCisjaW5jbHVkZSAiV2Vi
U3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJHYW1lcGFkQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJHYW1lcGFkQ2xpZW50KCkgeyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFVw
ZGF0aW5nKCkgPSAwOworCisKKyAgICBzdHJ1Y3QgR2FtZXBhZERhdGEgeworICAgICAgICBib29s
IGNvbm5lY3RlZDsKKyAgICAgICAgV2ViU3RyaW5nIGlkOworICAgICAgICB1bnNpZ25lZCBpbmRl
eDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHRpbWVzdGFtcDsKKyAgICAgICAgdW5zaWdu
ZWQgbnVtQXhlczsKKyAgICAgICAgZmxvYXQgYXhlc1sxNl07CisgICAgICAgIHVuc2lnbmVkIG51
bUJ1dHRvbnM7CisgICAgICAgIGZsb2F0IGJ1dHRvbnNbMzJdOworICAgIH07CisgICAgdmlydHVh
bCB1bnNpZ25lZCBudW1HYW1lcGFkcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbGFzdEdhbWVw
YWREYXRhKHVuc2lnbmVkIGluZGV4LCBHYW1lcGFkRGF0YSYpID0gMDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViR2FtZXBhZENsaWVudF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKaW5kZXggNTJiZmMyMTU1YTVm
YjY3YjgzMjg0MzM5MDAzYzQ5NTk4ZDA3Yjc5Yi4uNGJhN2ExZWIwZjZmOGQ1ZWEwNGJkMWJlYTM0
ZTlhNTM4ZjRjOThlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVmlld0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZp
ZXdDbGllbnQuaApAQCAtNTgsNiArNTgsNyBAQCBjbGFzcyBXZWJHZW9sb2NhdGlvblNlcnZpY2U7
CiBjbGFzcyBXZWJJY29uTG9hZGluZ0NvbXBsZXRpb247CiBjbGFzcyBXZWJJbWFnZTsKIGNsYXNz
IFdlYklucHV0RWxlbWVudDsKK2NsYXNzIFdlYkdhbWVwYWRDbGllbnQ7CiBjbGFzcyBXZWJLZXli
b2FyZEV2ZW50OwogY2xhc3MgV2ViTm9kZTsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvblByZXNlbnRl
cjsKQEAgLTI5OSw2ICszMDAsOCBAQCBwdWJsaWM6CiAgICAgLy8gQWNjZXNzIHRoZSBlbWJlZGRl
ciBBUEkgZm9yIGRldmljZSBvcmllbnRhdGlvbiBzZXJ2aWNlcy4KICAgICB2aXJ0dWFsIFdlYkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50KiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIHsgcmV0dXJu
IDA7IH0KIAorICAgIC8vIEdhbWVwYWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHZpcnR1YWwgV2ViR2FtZXBhZENsaWVu
dCogZ2FtZXBhZENsaWVudCgpIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIFpvb20gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HYW1lcGFkQ2xpZW50UHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR2FtZXBhZENsaWVudFByb3h5LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mYjQ3MDZlNzE5N2Y0ZjBjOTdiMWY3YmYyYzg1MjU1ODFjZGIzNjU0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR2FtZXBhZENsaWVu
dFByb3h5LmNwcApAQCAtMCwwICsxLDgyIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Ky8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8v
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8v
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiR2FtZXBhZENsaWVudFByb3h5LmgiCisKKyNpbmNsdWRlICJHYW1lcGFkLmgiCisj
aW5jbHVkZSAiR2FtZXBhZExpc3QuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit2b2lkIEdhbWVwYWRDbGllbnRQcm94eTo6c3RhcnRVcGRhdGluZygpCit7
CisgICAgaWYgKG1fdXBkYXRpbmcpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fY2xpZW50
KQorICAgICAgICByZXR1cm47CisgICAgbV9jbGllbnQtPnN0YXJ0VXBkYXRpbmcoKTsKKyAgICBt
X3VwZGF0aW5nID0gdHJ1ZTsKK30KKwordm9pZCBHYW1lcGFkQ2xpZW50UHJveHk6OnN0b3BVcGRh
dGluZygpCit7CisgICAgaWYgKCFtX3VwZGF0aW5nKQorICAgICAgICByZXR1cm47CisgICAgaWYg
KCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY2xpZW50LT5zdG9wVXBkYXRpbmco
KTsKKyAgICBtX3VwZGF0aW5nID0gZmFsc2U7Cit9CisKK3ZvaWQgR2FtZXBhZENsaWVudFByb3h5
OjpsYXN0R2FtZXBhZHNEYXRhKFdlYkNvcmU6OkdhbWVwYWRMaXN0JiBkYXRhKSBjb25zdAorewor
ICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGRhdGEuY2xlYXIoKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jbGllbnQtPm51bUdhbWVwYWRzKCk7ICsr
aSkgeworICAgICAgICBXZWJHYW1lcGFkQ2xpZW50OjpHYW1lcGFkRGF0YSBjbGllbnREYXRhOwor
ICAgICAgICBtX2NsaWVudC0+bGFzdEdhbWVwYWREYXRhKGksIGNsaWVudERhdGEpOworICAgICAg
ICBpZiAoY2xpZW50RGF0YS5jb25uZWN0ZWQpIHsKKyAgICAgICAgICBXZWJDb3JlOjpHYW1lcGFk
OjpGbG9hdFZlY3RvciBheGVzLCBidXR0b25zOworICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9
IDA7IGogPCBjbGllbnREYXRhLm51bUF4ZXM7ICsraikKKyAgICAgICAgICAgICAgYXhlcy5hcHBl
bmQoY2xpZW50RGF0YS5heGVzW2pdKTsKKyAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBq
IDwgY2xpZW50RGF0YS5udW1CdXR0b25zOyArK2opCisgICAgICAgICAgICAgIGJ1dHRvbnMuYXBw
ZW5kKGNsaWVudERhdGEuYnV0dG9uc1tqXSk7CisgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6Okdh
bWVwYWQ+IGNvbnZlcnRlZChXZWJDb3JlOjpHYW1lcGFkOjpjcmVhdGUoCisgICAgICAgICAgICAg
ICAgICAgICAgY2xpZW50RGF0YS5pZCwKKyAgICAgICAgICAgICAgICAgICAgICBjbGllbnREYXRh
LmluZGV4LAorICAgICAgICAgICAgICAgICAgICAgIGNsaWVudERhdGEudGltZXN0YW1wLAorICAg
ICAgICAgICAgICAgICAgICAgIGF4ZXMsCisgICAgICAgICAgICAgICAgICAgICAgYnV0dG9ucykp
OworICAgICAgICAgIGRhdGEuYXBwZW5kKGNvbnZlcnRlZCk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgIGRhdGEuYXBwZW5kKDApOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HYW1lcGFkQ2xpZW50UHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dhbWVwYWRDbGllbnRQcm94eS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBlNGZlNjE3MjZjYTZiMmNmZmMwNTU1YWZmM2YyMGFmOTQ4ZDQwNjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HYW1lcGFkQ2xpZW50UHJv
eHkuaApAQCAtMCwwICsxLDU0IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
IG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
Ky8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaWZuZGVmIEdhbWVwYWRDbGllbnRQcm94eV9o
CisjZGVmaW5lIEdhbWVwYWRDbGllbnRQcm94eV9oCisKKyNpbmNsdWRlICJHYW1lcGFkLmgiCisj
aW5jbHVkZSAiR2FtZXBhZENsaWVudC5oIgorI2luY2x1ZGUgIkdhbWVwYWRMaXN0LmgiCisjaW5j
bHVkZSAiV2ViR2FtZXBhZENsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdhbWVwYWRDbGllbnRQcm94eSA6IHB1YmxpYyBXZWJD
b3JlOjpHYW1lcGFkQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBHYW1lcGFkQ2xpZW50UHJveHkoV2Vi
R2FtZXBhZENsaWVudCogY2xpZW50KQorICAgICAgICA6IG1fdXBkYXRpbmcoZmFsc2UpCisgICAg
ICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
c3RhcnRVcGRhdGluZygpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgbGFzdEdhbWVwYWRzRGF0YShXZWJDb3JlOjpHYW1lcGFkTGlzdCYpIGNvbnN0
OworCitwcml2YXRlOgorICAgIGJvb2wgbV91cGRhdGluZzsKKyAgICBXZWJHYW1lcGFkQ2xpZW50
KiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gR2Ft
ZXBhZENsaWVudFByb3h5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAppbmRleCA4OTUxY2FiNWFkNjczYWNmNzMzM2UzZDhmMDQ5MjhjY2JmMjA4OWUwLi5hNWUy
YzQ3M2E0NjQzYmQ2ODllM2ZlNTA4YTRkNzkzMDBmZTgyNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAi
RnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJGcmFt
ZVZpZXcuaCIKKyNpbmNsdWRlICJHYW1lcGFkQ2xpZW50UHJveHkuaCIKICNpbmNsdWRlICJHZW9s
b2NhdGlvbkNsaWVudFByb3h5LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKQEAgLTM1Niw2ICszNTcsNyBAQCBXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogI2lmIEVOQUJMRShHRVNUVVJF
X1JFQ09HTklaRVIpCiAgICAgLCBtX2dlc3R1cmVSZWNvZ25pemVyKFdlYkNvcmU6OlBsYXRmb3Jt
R2VzdHVyZVJlY29nbml6ZXI6OmNyZWF0ZSgpKQogI2VuZGlmCisgICAgLCBtX2dhbWVwYWRDbGll
bnRQcm94eShhZG9wdFB0cihuZXcgR2FtZXBhZENsaWVudFByb3h5KGNsaWVudCA/IGNsaWVudC0+
Z2FtZXBhZENsaWVudCgpIDogMCkpKQogewogICAgIC8vIFdlYktpdC93aW4vV2ViVmlldy5jcHAg
ZG9lcyB0aGUgc2FtZSB0aGluZywgZXhjZXB0IHRoZXkgY2FsbCB0aGUKICAgICAvLyBLSlMgc3Bl
Y2lmaWMgd3JhcHBlciBhcm91bmQgdGhpcyBtZXRob2QuIFdlIG5lZWQgdG8gaGF2ZSB0aHJlYWRp
bmcKQEAgLTM3OCw2ICszODAsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0Ns
aWVudCogY2xpZW50KQogICAgIHBhZ2VDbGllbnRzLmRldmljZU9yaWVudGF0aW9uQ2xpZW50ID0g
bV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmdldCgpOwogICAgIHBhZ2VDbGllbnRzLmdl
b2xvY2F0aW9uQ2xpZW50ID0gbV9nZW9sb2NhdGlvbkNsaWVudFByb3h5LmdldCgpOwogICAgIHBh
Z2VDbGllbnRzLmJhY2tGb3J3YXJkQ2xpZW50ID0gQmFja0ZvcndhcmRMaXN0Q2hyb21pdW06OmNy
ZWF0ZSh0aGlzKTsKKyAgICBwYWdlQ2xpZW50cy5nYW1lcGFkQ2xpZW50ID0gbV9nYW1lcGFkQ2xp
ZW50UHJveHkuZ2V0KCk7CiAKICAgICBtX3BhZ2UgPSBhZG9wdFB0cihuZXcgUGFnZShwYWdlQ2xp
ZW50cykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA4
ZmRkYjlkZjNhMmI3MWNjYmI2MmRkMjg5MzNjMGI4MGIzZWNiYTBlLi41YWI3YTQwMmIyYzg3Yzg2
MjEyNzhhN2MwMzllNjRkYWExZDY1OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKQEAgLTgwLDYgKzgwLDcgQEAgY2xhc3MgQ29udGV4dE1lbnVDbGllbnRJbXBs
OwogY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTsKIGNsYXNzIERyYWdTY3JvbGxU
aW1lcjsKIGNsYXNzIEdlb2xvY2F0aW9uQ2xpZW50UHJveHk7CitjbGFzcyBHYW1lcGFkQ2xpZW50
UHJveHk7CiBjbGFzcyBTcGVlY2hJbnB1dENsaWVudEltcGw7CiBjbGFzcyBXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0OwogY2xhc3MgV2ViQ29tcG9zaXRvckltcGw7CkBAIC01OTgsNiArNTk5LDggQEAg
cHJpdmF0ZToKICNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQogICAgIE93blB0cjxXZWJD
b3JlOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBtX2dlc3R1cmVSZWNvZ25pemVyOwogI2Vu
ZGlmCisKKyAgICBPd25QdHI8R2FtZXBhZENsaWVudFByb3h5PiBtX2dhbWVwYWRDbGllbnRQcm94
eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110692</attachid>
            <date>2011-10-12 09:49:26 -0700</date>
            <delta_ts>2011-10-12 10:47:55 -0700</delta_ts>
            <desc>plumb through platform rather than client</desc>
            <filename>bug-69451-20111012094925.patch</filename>
            <type>text/plain</type>
            <size>35560</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcxODUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MzNhYmI1Mjg4NjA3ZjIz
ODBiNDVkZWJmMGU2YWYyNmE2ODczYjkwLi4zYjY1NTRjN2NjNWUwNzRmMjFlZjA1NjQzMGU5ZmI0
ODExMTdlYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMTAtMTEgIFNjb3R0
IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZGluZyBnYW1lcGFk
IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY5NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkcyBhIHJ1bnRpbWUgZmxhZyBmb3IgZ2FtZXBhZCwgcGx1bWJpbmcgZm9yIGV4cG9zaW5nIGEg
Z2FtZXBhZAorICAgICAgICB0aHJvdWdoIHBsYXRmb3JtLywgYW5kIHRoZSBhc3NvY2lhdGVkIGJp
bmRpbmcgY29kZSBmb3IgVjguCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBub3QgaW5jbHVkZWQg
aW4gcGF0Y2ggeWV0LgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRp
bmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRHYW1lcGFkRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpnYW1lcGFkc0VuYWJsZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEdhbWVwYWRDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZU51bWJlckFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OlY4R2FtZXBh
ZDo6YXhlc0FjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4R2FtZXBhZDo6YnV0
dG9uc0FjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKiBwYWdlL0dhbWVwYWQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWQ6OkdhbWVwYWQpOgorICAgICAgICAoV2ViQ29yZTo6
R2FtZXBhZDo6fkdhbWVwYWQpOgorICAgICAgICAqIHBhZ2UvR2FtZXBhZC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwYWdlL0dhbWVwYWQuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0dhbWVwYWRM
aXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkTGlzdDo6fkdhbWVwYWRM
aXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0OjpjbGVhcik6CisgICAgICAgIChX
ZWJDb3JlOjpHYW1lcGFkTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRM
aXN0OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6Oml0ZW0pOgorICAg
ICAgICAqIHBhZ2UvR2FtZXBhZExpc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHYW1l
cGFkTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0OjpHYW1lcGFk
TGlzdCk6CisgICAgICAgICogcGFnZS9HYW1lcGFkTGlzdC5pZGw6IEFkZGVkLgorICAgICAgICAq
IHBhZ2UvTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6Z2FtZXBh
ZHMpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAgICAgICogcGFnZS9OYXZpZ2F0
b3IuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL0dhbWVwYWRzLmg6IEFkZGVkLgorCiAyMDExLTEw
LTExICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgR2Vu
ZXJhbGl6ZSByOTU0NjEgY2hhbmdlIHRvIGluY2x1ZGUgdGFibGUtY2VsbCBhbmQgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggMDlhMmQzZTQ1ZDcxY2VmZGU2OWVkYjUwMzVjZjdhNTFmMTc2NGFkZC4uMThl
NzhiNWIwY2I3MDQxZjgzNDU4ZjgzYzU3ZmIwNmM3MDk2MmFjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtMTM4OSw2ICsxMzg5LDggQEAKICAgICAgICAgICAgICdwYWdlL0RPTVNlbGVjdGlvbi5pZGwn
LAogICAgICAgICAgICAgJ3BhZ2UvRE9NV2luZG93LmlkbCcsCiAgICAgICAgICAgICAncGFnZS9F
dmVudFNvdXJjZS5pZGwnLAorICAgICAgICAgICAgJ3BhZ2UvR2FtZXBhZC5pZGwnLAorICAgICAg
ICAgICAgJ3BhZ2UvR2FtZXBhZExpc3QuaWRsJywKICAgICAgICAgICAgICdwYWdlL0dlb2xvY2F0
aW9uLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9HZW9wb3NpdGlvbi5pZGwnLAogICAgICAgICAg
ICAgJ3BhZ2UvSGlzdG9yeS5pZGwnLApAQCAtMjE3Miw2ICsyMTc0LDcgQEAKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhGaWxlUmVhZGVyQ3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmxvYXQzMkFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmxvYXQ2NEFycmF5Q3VzdG9tLmNwcCcsCisgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4R2FtZXBhZEN1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQXVkaW9FbGVtZW50Q29u
c3RydWN0b3IuY3BwJywKQEAgLTI5MTMsNiArMjkxNiw4IEBACiAgICAgICAgICAgICAncGFnZS9G
cmFtZUFjdGlvblNjaGVkdWxlci5oJywKICAgICAgICAgICAgICdwYWdlL0ZyYW1lVHJlZS5jcHAn
LAogICAgICAgICAgICAgJ3BhZ2UvRnJhbWVWaWV3LmNwcCcsCisgICAgICAgICAgICAncGFnZS9H
YW1lcGFkLmNwcCcsCisgICAgICAgICAgICAncGFnZS9HYW1lcGFkTGlzdC5jcHAnLAogICAgICAg
ICAgICAgJ3BhZ2UvR2VvbG9jYXRpb24uY3BwJywKICAgICAgICAgICAgICdwYWdlL0dlb2xvY2F0
aW9uQ29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvR3JvdXBTZXR0aW5ncy5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5jcHAKaW5kZXggODVmYWU4MzU5Y2VkZTQyNTNkY2MxMDBkMWYxNGVl
NDkwZWI3OGEzMy4uZWI1MjI4ZmU1NzY4NzVlMmM4ZGE5MmE5ZTcxNDg2NTExYzcxMjIxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuY3BwCkBAIC02MCw2ICs2MCwxMCBAQCBib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmlzU3BlZWNoSW5wdXRFbmFibGVkID0gdHJ1ZTsKIGJvb2wgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6aXNNZWRpYVN0cmVhbUVuYWJsZWQgPSB0cnVlOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoR0FNRVBBRCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNHYW1lcGFkRW5h
YmxlZCA9IGZhbHNlOworI2VuZGlmCisKICNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JMT0IpCiBi
b29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzWEhSUmVzcG9uc2VCbG9iRW5hYmxlZCA9IGZh
bHNlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVy
aWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDYwOTdhOTgwMjU2YTFkNGFlOWU2NTc4
MmYwNzQyYTlkZDFiYmJjNjYuLjIxNTRkZGFiYmE4OTgyMDcxOGY4MDIzZmM4MzZkNTc3YzRkNTk0
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC0xNjIsNiArMTYyLDExIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCB3ZWJraXRQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlh
U3RyZWFtRW5hYmxlZDsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBzdGF0
aWMgdm9pZCBzZXRHYW1lcGFkRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0dhbWVwYWRFbmFi
bGVkID0gaXNFbmFibGVkOyB9CisgICAgc3RhdGljIGJvb2wgZ2FtZXBhZHNFbmFibGVkKCkgeyBy
ZXR1cm4gaXNHYW1lcGFkRW5hYmxlZDsgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoUVVPVEEpCiAg
ICAgc3RhdGljIGJvb2wgcXVvdGFFbmFibGVkKCkgeyByZXR1cm4gaXNRdW90YUVuYWJsZWQ7IH0K
ICAgICBzdGF0aWMgdm9pZCBzZXRRdW90YUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNRdW90
YUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KQEAgLTIxMCw2ICsyMTUsMTAgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgYm9vbCBpc01lZGlhU3RyZWFtRW5hYmxlZDsKICNlbmRpZgogCisjaWYgRU5BQkxF
KEdBTUVQQUQpCisgICAgc3RhdGljIGJvb2wgaXNHYW1lcGFkRW5hYmxlZDsKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKFFVT1RBKQogICAgIHN0YXRpYyBib29sIGlzUXVvdGFFbmFibGVkOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhHYW1lcGFk
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEdhbWVwYWRD
dXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwM2M5YTA5ZTdlZWY2ZTU1NGJkYTliM2Q0NmZjZWUwYjFm
ZjI3NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhHYW1lcGFkQ3VzdG9tLmNwcApAQCAtMCwwICsxLDY0IEBACisvLyBDb3B5cmlnaHQgKEMp
IDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
Ky8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVjhHYW1lcGFkLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkK
KworI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgor
I2luY2x1ZGUgIlY4UHJveHkuaCIKKworI2luY2x1ZGUgPHY4Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVOdW1iZXJBcnJheShj
b25zdCBHYW1lcGFkOjpGbG9hdFZlY3RvciYgdmVjdG9yKQoreworICAgIHVuc2lnbmVkIHNpemUg
PSB2ZWN0b3Iuc2l6ZSgpOworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHJldCA9IHY4OjpBcnJh
eTo6TmV3KHNpemUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCisg
ICAgICAgIHJldC0+U2V0KGksIHY4OjpOdW1iZXI6Ok5ldyh2ZWN0b3JbaV0pKTsKKyAgICByZXR1
cm4gcmV0OworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhHYW1lcGFkOjpheGVzQWNjZXNz
b3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uR2FtZXBhZC5heGVzLl9nZXQiKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CisgICAgR2Ft
ZXBhZCogaW1wID0gVjhHYW1lcGFkOjp0b05hdGl2ZShob2xkZXIpOworICAgIHJldHVybiBjcmVh
dGVOdW1iZXJBcnJheShpbXAtPmF4ZXMoKSk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEdhbWVwYWQ6OmJ1dHRvbnNBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5H
YW1lcGFkLmJ1dHRvbnMuX2dldCIpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVy
ID0gaW5mby5Ib2xkZXIoKTsKKyAgICBHYW1lcGFkKiBpbXAgPSBWOEdhbWVwYWQ6OnRvTmF0aXZl
KGhvbGRlcik7CisgICAgcmV0dXJuIGNyZWF0ZU51bWJlckFycmF5KGltcC0+YnV0dG9ucygpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9HYW1lcGFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTIwYjhmNzk4ZWQ4ODNmYmVmYWIx
OGQ4MzQ4ZDJjNzk1NTZkMmE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9HYW1lcGFkLmNwcApAQCAtMCwwICsxLDUxIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
Ky8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkK
Ky8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiR2FtZXBhZC5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHYW1lcGFk
OjpHYW1lcGFkKGNvbnN0IFN0cmluZyYgaWQsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsb25n
IGxvbmcgdGltZXN0YW1wLAorICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1BeGVzLCBjb25z
dCBmbG9hdCogYXhlcywgdW5zaWduZWQgbnVtQnV0dG9ucywgY29uc3QgZmxvYXQqIGJ1dHRvbnMp
CisgICAgOiBtX2lkKGlkKQorICAgICwgbV9pbmRleChpbmRleCkKKyAgICAsIG1fdGltZXN0YW1w
KHRpbWVzdGFtcCkKKyAgICAsIG1fYXhlcyhudW1BeGVzKQorICAgICwgbV9idXR0b25zKG51bUJ1
dHRvbnMpCit7CisgICAgc3RkOjpjb3B5KGF4ZXMsIGF4ZXMgKyBudW1BeGVzLCBtX2F4ZXMuYmVn
aW4oKSk7CisgICAgc3RkOjpjb3B5KGJ1dHRvbnMsIGJ1dHRvbnMgKyBudW1CdXR0b25zLCBtX2J1
dHRvbnMuYmVnaW4oKSk7Cit9CisKK0dhbWVwYWQ6On5HYW1lcGFkKCkKK3sKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2Ft
ZXBhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjUxYmVlOWRjN2I5ODk2ODBlOTZmZjVjYTVjM2YxYmFlNzhkNDlh
YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuaApAQCAt
MCwwICsxLDYyIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8v
CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSAorLy8gREFNQUdFLgorCisjaWZuZGVmIEdhbWVwYWRfaAorI2RlZmluZSBHYW1lcGFkX2gK
KworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEdhbWVwYWQ6IHB1YmxpYyBSZWZDb3VudGVkPEdhbWVwYWQ+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxHYW1lcGFkPiBjcmVhdGUoCisgICAgICAgICAgICBjb25zdCBj
aGFyKiBpZCwgdW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXAsCisg
ICAgICAgICAgICB1bnNpZ25lZCBudW1BeGVzLCBjb25zdCBmbG9hdCogYXhlcywgdW5zaWduZWQg
bnVtQnV0dG9ucywgY29uc3QgZmxvYXQqIGJ1dHRvbnMpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEdhbWVwYWQoU3RyaW5nKGlkKSwgaW5kZXgsIHRpbWVzdGFtcCwgbnVtQXhl
cywgYXhlcywgbnVtQnV0dG9ucywgYnV0dG9ucykpOworICAgIH0KKyAgICB+R2FtZXBhZCgpOwor
CisgICAgdHlwZWRlZiBWZWN0b3I8ZmxvYXQsIDE2PiBGbG9hdFZlY3RvcjsKKyAgICBjb25zdCBT
dHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIHVuc2lnbmVkIGluZGV4KCkg
Y29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3Rh
bXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFtcDsgfQorICAgIGNvbnN0IEZsb2F0VmVjdG9y
JiBheGVzKCkgY29uc3QgeyByZXR1cm4gbV9heGVzOyB9CisgICAgY29uc3QgRmxvYXRWZWN0b3Im
IGJ1dHRvbnMoKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbnM7IH0KKworcHJpdmF0ZToKKyAgICBH
YW1lcGFkKGNvbnN0IFN0cmluZyYgaWQsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsb25nIGxv
bmcgdGltZXN0YW1wLAorICAgICAgICAgICAgdW5zaWduZWQgbnVtQXhlcywgY29uc3QgZmxvYXQq
IGF4ZXMsIHVuc2lnbmVkIG51bUJ1dHRvbnMsIGNvbnN0IGZsb2F0KiBidXR0b25zKTsKKyAgICBT
dHJpbmcgbV9pZDsKKyAgICB1bnNpZ25lZCBtX2luZGV4OworICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBtX3RpbWVzdGFtcDsKKyAgICBGbG9hdFZlY3RvciBtX2F4ZXM7CisgICAgRmxvYXRWZWN0b3Ig
bV9idXR0b25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR2Ft
ZXBhZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuaWRsIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzliYWY5MDYzMjM4ZGUy
NDdkMzFlNWQ3OTU0MjhmYWZmNWFiMzVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9HYW1lcGFkLmlkbApAQCAtMCwwICsxLDM2IEBACisvLyBDb3B5cmlnaHQgKEMpIDIw
MTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8v
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCittb2R1bGUgZG9tIHsK
KworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUdBTUVQQUQKKyAgICBdIEdh
bWVwYWQgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBpbmRleDsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXA7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBbQ3VzdG9tR2V0dGVyXSBBcnJheSBheGVzOworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgW0N1c3RvbUdldHRlcl0gQXJyYXkgYnV0dG9uczsKKyAgICB9OworCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxMmU1YjFjZWQzYWVhNjY0
MmU4ZDE5NTg0OTc0NzJlOGU4MDNjOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0dhbWVwYWRMaXN0LmNwcApAQCAtMCwwICsxLDU5IEBACisvLyBDb3B5cmlnaHQgKEMp
IDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
Ky8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZXBhZExpc3QuaCIKKworI2luY2x1ZGUgIkdhbWVwYWQu
aCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dhbWVw
YWRMaXN0Ojp+R2FtZXBhZExpc3QoKQoreworfQorCit2b2lkIEdhbWVwYWRMaXN0OjpjbGVhcigp
Cit7CisgICAgbV9nYW1lcGFkcy5jbGVhcigpOworfQorCit2b2lkIEdhbWVwYWRMaXN0OjphcHBl
bmQoUGFzc1JlZlB0cjxHYW1lcGFkPiBnYW1lcGFkKQoreworICAgIG1fZ2FtZXBhZHMuYXBwZW5k
KGdhbWVwYWQpOworfQorCit1bnNpZ25lZCBHYW1lcGFkTGlzdDo6bGVuZ3RoKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9nYW1lcGFkcy5zaXplKCk7Cit9CisKK0dhbWVwYWQqIEdhbWVwYWRMaXN0
OjppdGVtKHVuc2lnbmVkIGluZGV4KQoreworICAgIHJldHVybiBpbmRleCA8IGxlbmd0aCgpID8g
bV9nYW1lcGFkc1tpbmRleF0uZ2V0KCkgOiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvR2FtZXBhZExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45NjMzMWFhNjNiYTcyMDcyYTFiZTVjZTBiNGY3NjI1Zjc1OTdjYTA1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5oCkBAIC0wLDAg
KzEsNTMgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8v
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
Ly8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
Ky8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
CisvLyBEQU1BR0UuCisKKyNpZm5kZWYgR2FtZXBhZExpc3RfaAorI2RlZmluZSBHYW1lcGFkTGlz
dF9oCisKKyNpbmNsdWRlICJHYW1lcGFkLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8R2FtZXBhZD4gPiBH
YW1lcGFkVmVjdG9yOworCitjbGFzcyBHYW1lcGFkTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPEdh
bWVwYWRMaXN0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R2FtZXBhZExpc3Q+
IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBHYW1lcGFkTGlzdCk7IH0KKyAgICB+R2Ft
ZXBhZExpc3QoKTsKKworICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2b2lkIGFwcGVuZChQYXNzUmVm
UHRyPEdhbWVwYWQ+KTsKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAgICBHYW1lcGFk
KiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKKworcHJpdmF0ZToKKyAgICBHYW1lcGFkTGlzdCgpIHsg
fQorICAgIEdhbWVwYWRWZWN0b3IgbV9nYW1lcGFkczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEdhbWVwYWRMaXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvR2FtZXBhZExpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlz
dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjQyYjgxNWRmYWY0Mjc4NjU3M2JmNTFhYjUzOGVmNGZhM2RmNTQy
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuaWRs
CkBAIC0wLDAgKzEsMzQgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0
OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorLy8g
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUK
Ky8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNICisvLyBEQU1BR0UuCisKK21vZHVsZSBkb20geworCisgICAgaW50ZXJmYWNlIFsK
KyAgICAgICAgQ29uZGl0aW9uYWw9R0FNRVBBRCwKKyAgICAgICAgSGFzSW5kZXhHZXR0ZXIKKyAg
ICBdIEdhbWVwYWRMaXN0IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoOworICAgICAgICBHYW1lcGFkIGl0ZW0oaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVm
YXVsdFZhbHVlXSB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICB9OworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5jcHAKaW5kZXggYjFlNGFiMWZmZDY2OWNkOThlNWNiNzkwZWE3NGIwMzgyOTk3
NTkxOS4uZmJhYjk0Y2M2OGM4Zjg5OGM4ZDhkZDdlMDFjYzZiNGJhODBlMDRjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5o
IgorI2luY2x1ZGUgIkdhbWVwYWRMaXN0LmgiCisjaW5jbHVkZSAiR2FtZXBhZHMuaCIKICNpbmNs
dWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJMYW5ndWFn
ZS5oIgpAQCAtNDEsNiArNDMsNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdl
R3JvdXAuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
U3VwcG9ydC5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2UuaCIKQEAgLTI4Nyw0ICsyOTAsMTIgQEAgdm9p
ZCBOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBh
c3NSZWZQdHI8TmF2aWdhdG9yVXMKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEdBTUVQQUQpCitH
YW1lcGFkTGlzdCogTmF2aWdhdG9yOjpnYW1lcGFkcygpCit7CisgICAgbV9nYW1lcGFkcyA9IHBv
bGxHYW1lcGFkcygpOworICAgIHJldHVybiBtX2dhbWVwYWRzLmdldCgpOworfQorI2VuZGlmCisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCmluZGV4IDhkMWM2
OWVhYzkwYjIyZTg3ZDAxMzk1NzE2ZDhhNjBkMjViNjE5Y2EuLjZmZDYyOGQyNDc2NzBmNDNmZTky
MzlmNjJiZmRhNDhlYmZlN2Q2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2
aWdhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaApAQCAtMzEsNiAr
MzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBET01NaW1lVHlwZUFycmF5OwogY2xh
c3MgRE9NUGx1Z2luQXJyYXk7CiBjbGFzcyBGcmFtZTsKK2NsYXNzIEdhbWVwYWRMaXN0OwogY2xh
c3MgR2VvbG9jYXRpb247CiBjbGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrOwog
Y2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrOwpAQCAtNzEsMTIgKzcyLDE5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2Via2l0R2V0VXNlck1lZGlhKGNvbnN0IFN0
cmluZyYgb3B0aW9ucywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+LCBFeGNlcHRp
b25Db2RlJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIEdhbWVwYWRMaXN0
KiBnYW1lcGFkcygpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmF2aWdhdG9yKEZyYW1lKik7
CiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgbXV0YWJsZSBSZWZQdHI8RE9NUGx1Z2luQXJyYXk+
IG1fcGx1Z2luczsKICAgICBtdXRhYmxlIFJlZlB0cjxET01NaW1lVHlwZUFycmF5PiBtX21pbWVU
eXBlczsKICAgICBtdXRhYmxlIFJlZlB0cjxHZW9sb2NhdGlvbj4gbV9nZW9sb2NhdGlvbjsKKyNp
ZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBtdXRhYmxlIFJlZlB0cjxHYW1lcGFkTGlzdD4gbV9nYW1l
cGFkczsKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9O
YXZpZ2F0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCmluZGV4IGM5
MGQ4NTc0ZGViMTIwNjg1ODlmYzdkODEwYmUxOWQzZTM5MzVmMGMuLjJkNThmMjNhNTZhOTYwY2Fh
MTc1MDVkMjY3ZDY0YTVkMDIyZjY0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwKQEAg
LTU5LDYgKzU5LDEwIEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbQ2FsbGJhY2s9RnVuY3Rpb25P
bmx5LCBPcHRpb25hbF0gTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjayBlcnJvckNhbGxi
YWNrKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKKworI2lmIGRl
ZmluZWQoRU5BQkxFX0dBTUVQQUQpICYmIEVOQUJMRV9HQU1FUEFECisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGltZV0gR2FtZXBhZExpc3QgZ2FtZXBhZHM7CisjZW5k
aWYKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HYW1l
cGFkcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2FtZXBhZHMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MzQwNWU3ZTdkZmZhZjc1ODY3NTRiYTc2MGMzZjg5Yzg1ZmNhZDRmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2FtZXBhZHMuaApAQCAtMCwwICsxLDM3IEBACisv
LyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdF
LgorCisjaWZuZGVmIEdhbWVwYWRzX2gKKyNkZWZpbmUgR2FtZXBhZHNfaAorCisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHYW1lcGFk
TGlzdDsKKworUGFzc1JlZlB0cjxHYW1lcGFkTGlzdD4gcG9sbEdhbWVwYWRzKCk7CisKK30KKwor
I2VuZGlmIC8vIEdhbWVwYWRzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZGFiYzAw
ZjE1ZjRmNGVlZWEyYzVjNWRkNDFiMDBiNWM1OTRjZGMwZC4uMTI2ODA2MDk4N2M4ZWEwMmJiMzll
MGIxNDdlZjYzNDUxMGFkODdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNSBAQAorMjAxMS0xMC0xMSAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgQWRkaW5nIGdhbWVwYWQgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHJ1bnRpbWUgZmxhZyBzdXBwb3J0IGZvciBn
YW1lcGFkLCBhbmQgcGxhdGZvcm0gc3VwcG9ydCBmb3IKKyAgICAgICAgZ2FtZXBhZHMgZm9yIENo
cm9taXVtLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBmZWF0dXJlcy5neXBp
OgorICAgICAgICAqIHB1YmxpYy9XZWJHYW1lcGFkcy5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJs
aWMvV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYktpdFBsYXRm
b3JtU3VwcG9ydDo6cG9sbEdhbWVwYWRzKToKKyAgICAgICAgKiBwdWJsaWMvV2ViUnVudGltZUZl
YXR1cmVzLmg6CisgICAgICAgICogc3JjL0dhbWVwYWRzLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpwb2xsR2FtZXBhZHMpOgorICAgICAgICAqIHNyYy9XZWJSdW50aW1lRmVhdHVyZXMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZUdhbWVwYWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSdW50aW1lRmVhdHVyZXM6OmlzR2FtZXBhZEVuYWJsZWQp
OgorCiAyMDExLTEwLTEwICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtNdXRhdGlvbk9ic2VydmVyc10gQWRkIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgV2ViS2l0
TXV0YXRpb25PYnNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGNlNmUwZTE2
NDQwNzY2ZDAwMWM5N2ZlNzI0MDkwYzkzNzZmNmQ3NDQuLjlmMDVjMDM0N2ZhMmQ5Nzk4OGEzMTQ0
OTYyODQ0MWJlZDYzYTgwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTM3Myw2
ICszNzMsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9GcmFtZU5ldHdvcmtpbmdDb250ZXh0SW1wbC5oJywKKyAgICAgICAg
ICAgICAgICAnc3JjL0dhbWVwYWRzLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9HZW9sb2Nh
dGlvbkNsaWVudFByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9HZW9sb2NhdGlvbkNs
aWVudFByb3h5LmgnLAogICAgICAgICAgICAgICAgICdzcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJv
bWl1bS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
R2FtZXBhZHMuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdhbWVwYWRzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDc3MzAwODRiMmY4NzAzM2NhNjdmZGYzZGNmMDM4NjYzMjI4NGUyMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdhbWVwYWRz
LmgKQEAgLTAsMCArMSw3NSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBt
ZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisv
LyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKworI2lmbmRlZiBXZWJHYW1lcGFkc19oCisjZGVmaW5l
IFdlYkdhbWVwYWRzX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NvbnN0IGludCBtYXhpbXVt
R2FtZXBhZElkTGVuZ3RoID0gMTI4OworY29uc3QgaW50IG1heGltdW1HYW1lcGFkQXhlcyA9IDE2
OworY29uc3QgaW50IG1heGltdW1HYW1lcGFkQnV0dG9ucyA9IDE2OworY29uc3QgaW50IG1heGlt
dW1HYW1lcGFkcyA9IDQ7CisKK2NsYXNzIFdlYkdhbWVwYWQgeworcHVibGljOgorICAgIC8vIElz
IHRoZXJlIGEgZ2FtZXBhZCBjb25uZWN0ZWQgYXQgdGhpcyBpbmRleD8KKyAgICBib29sIGNvbm5l
Y3RlZDsKKworICAgIC8vIEluZGV4IG9mIEdhbWVwYWQgaW4gR2FtZXBhZHMgYXJyYXkuCisgICAg
dW5zaWduZWQgaW5kZXg7CisKKyAgICAvLyBEZXZpY2UgaWRlbnRpZmllciAoYmFzZWQgb24gbWFu
dWZhY3R1cmVyLCBtb2RlbCwgZXRjLikuCisgICAgY2hhciBpZFttYXhpbXVtR2FtZXBhZElkTGVu
Z3RoXTsKKworICAgIC8vIE1vbm90b25pY2FsbHkgaW5jcmVhc2luZyB2YWx1ZSByZWZlcnJpbmcg
dG8gd2hlbiB0aGUgZGF0YSB3ZXJlIGxhc3QKKyAgICAvLyB1cGRhdGVkLgorICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyB0aW1lc3RhbXA7CisKKyAgICAvLyBOdW1iZXIgb2YgdmFsaWQgZW50cmllcyBp
biB0aGUgYXhlcyBhcnJheS4KKyAgICB1bnNpZ25lZCBudW1BeGVzOworCisgICAgLy8gTm9ybWFs
aXplZCB2YWx1ZXMgcmVwcmVzZW50aW5nIGF4ZXMsIGluIHRoZSByYW5nZSBbLTEuLjFdLgorICAg
IGZsb2F0IGF4ZXNbbWF4aW11bUdhbWVwYWRBeGVzXTsKKworICAgIC8vIE51bWJlciBvZiB2YWxp
ZCBlbnRyaWVzIGluIHRoZSBidXR0b25zIGFycmF5LgorICAgIHVuc2lnbmVkIG51bUJ1dHRvbnM7
CisgICAgCisgICAgLy8gTm9ybWFsaXplZCB2YWx1ZXMgcmVwcmVzZW50aW5nIGJ1dHRvbnMsIGlu
IHRoZSByYW5nZSBbMC4uMV0uCisgICAgZmxvYXQgYnV0dG9uc1ttYXhpbXVtR2FtZXBhZEJ1dHRv
bnNdOworfTsKKworLy8gVGhpcyBzdHJ1Y3R1cmUgaXMgaW50ZW50aW9uYWxseSBQT0QgYW5kIGZp
eGVkIHNpemUgc28gdGhhdCBpdCBjYW4gYmUgc2hhcmVkCisvLyBtZW1vcnkgYmV0d2VlbiBoYXJk
d2FyZSBwb2xsaW5nIHRocmVhZHMgYW5kIHRoZSByZXN0IG9mIHRoZSBicm93c2VyLgorY2xhc3Mg
V2ViR2FtZXBhZHMgeworcHVibGljOgorICAgIC8vIE51bWJlciBvZiB2YWxpZCBlbnRyaWVzIGlu
IHRoZSBnYW1lcGFkcyBhcnJheS4KKyAgICBpbnQgbnVtR2FtZXBhZHM7CisKKyAgICAvLyBHYW1l
cGFkIGRhdGEgZm9yIE4gc2VwYXJhdGUgZ2FtZXBhZCBkZXZpY2VzLgorICAgIFdlYkdhbWVwYWQg
Z2FtZXBhZHNbbWF4aW11bUdhbWVwYWRzXTsKK307CisKK30KKworI2VuZGlmIC8vIFdlYkdhbWVw
YWRzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYktpdFBs
YXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0UGxh
dGZvcm1TdXBwb3J0LmgKaW5kZXggYjMzMTQ5OTM2NzljNWY1YWIxZjZhYjNlYmYxNmY2ZWViYTNl
MDBjOC4uY2JlNzFlNmI0Njk3Yzk1ZTRjNTBhNmUzZTVhMmM2ZTM0ZDE4Njk4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0UGxhdGZvcm1TdXBwb3J0
LmgKQEAgLTU2LDYgKzU2LDcgQEAgY2xhc3MgV2ViQ2xpcGJvYXJkOwogY2xhc3MgV2ViQ29va2ll
SmFyOwogY2xhc3MgV2ViRmlsZVN5c3RlbTsKIGNsYXNzIFdlYkZpbGVVdGlsaXRpZXM7CitjbGFz
cyBXZWJHYW1lcGFkczsKIGNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgV2ViSURC
RmFjdG9yeTsKIGNsYXNzIFdlYklEQktleTsKQEAgLTEwNiw2ICsxMDcsMTAgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJVUkwmIHVybCwg
Ym9vbCBpc0xvY2FsU3RvcmFnZSkgeyB9CiAKIAorICAgIC8vIEdhbWVwYWQgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHZp
cnR1YWwgdm9pZCBwb2xsR2FtZXBhZHMoV2ViR2FtZXBhZHMmKSB7IH0KKworCiAgICAgLy8gSGlz
dG9yeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKICAgICAvLyBSZXR1cm5zIHRoZSBoYXNoIGZvciB0aGUgZ2l2ZW4gY2Fub25p
Y2FsaXplZCBVUkwgZm9yIHVzZSBpbiB2aXNpdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJSdW50aW1lRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlJ1bnRpbWVGZWF0dXJlcy5oCmluZGV4IGJhMWMwZGQxODg5ODQyZDE1
ZTA5MGEzMGI0Nzg1ODY3MDljNWMxZDkuLjA3Yjk3Y2Q1YzQxNDMyOTAzZGY3ZDQ1NWEzZDgxMzBm
ZmJiNDVmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJ1
bnRpbWVGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJ1
bnRpbWVGZWF0dXJlcy5oCkBAIC0xMTUsNiArMTE1LDkgQEAgcHVibGljOgogICAgIFdFQktJVF9F
WFBPUlQgc3RhdGljIHZvaWQgZW5hYmxlVmlkZW9UcmFjayhib29sKTsKICAgICBXRUJLSVRfRVhQ
T1JUIHN0YXRpYyBib29sIGlzVmlkZW9UcmFja0VuYWJsZWQoKTsKIAorICAgIFdFQktJVF9FWFBP
UlQgc3RhdGljIHZvaWQgZW5hYmxlR2FtZXBhZChib29sKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0
YXRpYyBib29sIGlzR2FtZXBhZEVuYWJsZWQoKTsKKwogcHJpdmF0ZToKICAgICBXZWJSdW50aW1l
RmVhdHVyZXMoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9H
YW1lcGFkcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HYW1lcGFkcy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTlkYjQwZjE5NDY1YjdiOWUyODQ3YTc4NjcxNTkyYTE4MThhNWNlNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dhbWVwYWRzLmNwcApAQCAt
MCwwICsxLDYzIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8v
CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSAorLy8gREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZXBh
ZHMuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSAiR2FtZXBhZExpc3QuaCIK
KyNpbmNsdWRlICJXZWJHYW1lcGFkcy5oIgorI2luY2x1ZGUgIldlYktpdC5oIgorI2luY2x1ZGUg
IldlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdhbWVwYWRMaXN0OworCitQYXNzUmVmUHRyPEdh
bWVwYWRMaXN0PiBwb2xsR2FtZXBhZHMoKQoreworICAgIFdlYkdhbWVwYWRzIGdhbWVwYWRzOwor
ICAgIFJlZlB0cjxHYW1lcGFkTGlzdD4gZ2FtZXBhZExpc3QoR2FtZXBhZExpc3Q6OmNyZWF0ZSgp
KTsKKworICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5wb2xsR2FtZXBhZHMoZ2FtZXBhZHMp
OworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnYW1lcGFkcy5udW1HYW1lcGFkczsgKytpKSB7
CisgICAgICAgIFdlYkdhbWVwYWQmIHdlYkdhbWVwYWQgPSBnYW1lcGFkcy5nYW1lcGFkc1tpXTsK
KyAgICAgICAgaWYgKHdlYkdhbWVwYWQuY29ubmVjdGVkKSB7CisgICAgICAgICAgICBSZWZQdHI8
R2FtZXBhZD4gZ2FtZXBhZCA9IEdhbWVwYWQ6OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAg
d2ViR2FtZXBhZC5pZCwgd2ViR2FtZXBhZC5pbmRleCwgd2ViR2FtZXBhZC50aW1lc3RhbXAsCisg
ICAgICAgICAgICAgICAgICAgIHdlYkdhbWVwYWQubnVtQXhlcywgd2ViR2FtZXBhZC5heGVzLCB3
ZWJHYW1lcGFkLm51bUJ1dHRvbnMsIHdlYkdhbWVwYWQuYnV0dG9ucyk7CisgICAgICAgICAgICBn
YW1lcGFkTGlzdC0+YXBwZW5kKGdhbWVwYWQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IGdhbWVwYWRMaXN0LT5hcHBlbmQoMCk7CisgICAgfQorCisgICAgcmV0dXJuIGdhbWVwYWRMaXN0
OworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViUnVudGltZUZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlJ1bnRpbWVGZWF0dXJlcy5jcHAKaW5kZXggNmQ0ZmU0ZWNjN2Q0MDEzNGExOTUxZWJmOTQ5YmQy
MjNiMmYyMzgzZi4uMmMxZjFiZWE2ODQ3Y2NmYzY4MGQ3ZmJlOGM3YzVjMzc0N2ViNmE0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUnVudGltZUZlYXR1cmVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3Bw
CkBAIC00MDQsNCArNDA0LDIyIEBAIGJvb2wgV2ViUnVudGltZUZlYXR1cmVzOjppc1ZpZGVvVHJh
Y2tFbmFibGVkKCkKICNlbmRpZgogfQogCit2b2lkIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxl
R2FtZXBhZChib29sIGVuYWJsZSkKK3sKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzZXRHYW1lcGFkRW5hYmxlZChlbmFibGUpOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0oZW5hYmxlKTsKKyNlbmRpZgorfQorCitib29sIFdlYlJ1bnRpbWVGZWF0dXJl
czo6aXNHYW1lcGFkRW5hYmxlZCgpCit7CisjaWYgRU5BQkxFKEdBTUVQQUQpCisgICAgcmV0dXJu
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmdhbWVwYWRzRW5hYmxlZCgpOworI2Vsc2UKKyAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110704</attachid>
            <date>2011-10-12 10:47:59 -0700</date>
            <delta_ts>2011-11-16 16:27:08 -0800</delta_ts>
            <desc>remove unnecessary include</desc>
            <filename>bug-69451-20111012104758.patch</filename>
            <type>text/plain</type>
            <size>35361</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcxODUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MzNhYmI1Mjg4NjA3ZjIz
ODBiNDVkZWJmMGU2YWYyNmE2ODczYjkwLi4zYjY1NTRjN2NjNWUwNzRmMjFlZjA1NjQzMGU5ZmI0
ODExMTdlYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMTAtMTEgIFNjb3R0
IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZGluZyBnYW1lcGFk
IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY5NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkcyBhIHJ1bnRpbWUgZmxhZyBmb3IgZ2FtZXBhZCwgcGx1bWJpbmcgZm9yIGV4cG9zaW5nIGEg
Z2FtZXBhZAorICAgICAgICB0aHJvdWdoIHBsYXRmb3JtLywgYW5kIHRoZSBhc3NvY2lhdGVkIGJp
bmRpbmcgY29kZSBmb3IgVjguCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBub3QgaW5jbHVkZWQg
aW4gcGF0Y2ggeWV0LgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRp
bmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRHYW1lcGFkRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpnYW1lcGFkc0VuYWJsZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEdhbWVwYWRDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZU51bWJlckFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OlY4R2FtZXBh
ZDo6YXhlc0FjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4R2FtZXBhZDo6YnV0
dG9uc0FjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKiBwYWdlL0dhbWVwYWQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWQ6OkdhbWVwYWQpOgorICAgICAgICAoV2ViQ29yZTo6
R2FtZXBhZDo6fkdhbWVwYWQpOgorICAgICAgICAqIHBhZ2UvR2FtZXBhZC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwYWdlL0dhbWVwYWQuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0dhbWVwYWRM
aXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkTGlzdDo6fkdhbWVwYWRM
aXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0OjpjbGVhcik6CisgICAgICAgIChX
ZWJDb3JlOjpHYW1lcGFkTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRM
aXN0OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6Oml0ZW0pOgorICAg
ICAgICAqIHBhZ2UvR2FtZXBhZExpc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHYW1l
cGFkTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0OjpHYW1lcGFk
TGlzdCk6CisgICAgICAgICogcGFnZS9HYW1lcGFkTGlzdC5pZGw6IEFkZGVkLgorICAgICAgICAq
IHBhZ2UvTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6Z2FtZXBh
ZHMpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAgICAgICogcGFnZS9OYXZpZ2F0
b3IuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL0dhbWVwYWRzLmg6IEFkZGVkLgorCiAyMDExLTEw
LTExICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgR2Vu
ZXJhbGl6ZSByOTU0NjEgY2hhbmdlIHRvIGluY2x1ZGUgdGFibGUtY2VsbCBhbmQgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggMDlhMmQzZTQ1ZDcxY2VmZGU2OWVkYjUwMzVjZjdhNTFmMTc2NGFkZC4uMThl
NzhiNWIwY2I3MDQxZjgzNDU4ZjgzYzU3ZmIwNmM3MDk2MmFjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtMTM4OSw2ICsxMzg5LDggQEAKICAgICAgICAgICAgICdwYWdlL0RPTVNlbGVjdGlvbi5pZGwn
LAogICAgICAgICAgICAgJ3BhZ2UvRE9NV2luZG93LmlkbCcsCiAgICAgICAgICAgICAncGFnZS9F
dmVudFNvdXJjZS5pZGwnLAorICAgICAgICAgICAgJ3BhZ2UvR2FtZXBhZC5pZGwnLAorICAgICAg
ICAgICAgJ3BhZ2UvR2FtZXBhZExpc3QuaWRsJywKICAgICAgICAgICAgICdwYWdlL0dlb2xvY2F0
aW9uLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9HZW9wb3NpdGlvbi5pZGwnLAogICAgICAgICAg
ICAgJ3BhZ2UvSGlzdG9yeS5pZGwnLApAQCAtMjE3Miw2ICsyMTc0LDcgQEAKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhGaWxlUmVhZGVyQ3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmxvYXQzMkFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmxvYXQ2NEFycmF5Q3VzdG9tLmNwcCcsCisgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4R2FtZXBhZEN1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQXVkaW9FbGVtZW50Q29u
c3RydWN0b3IuY3BwJywKQEAgLTI5MTMsNiArMjkxNiw4IEBACiAgICAgICAgICAgICAncGFnZS9G
cmFtZUFjdGlvblNjaGVkdWxlci5oJywKICAgICAgICAgICAgICdwYWdlL0ZyYW1lVHJlZS5jcHAn
LAogICAgICAgICAgICAgJ3BhZ2UvRnJhbWVWaWV3LmNwcCcsCisgICAgICAgICAgICAncGFnZS9H
YW1lcGFkLmNwcCcsCisgICAgICAgICAgICAncGFnZS9HYW1lcGFkTGlzdC5jcHAnLAogICAgICAg
ICAgICAgJ3BhZ2UvR2VvbG9jYXRpb24uY3BwJywKICAgICAgICAgICAgICdwYWdlL0dlb2xvY2F0
aW9uQ29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvR3JvdXBTZXR0aW5ncy5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5jcHAKaW5kZXggODVmYWU4MzU5Y2VkZTQyNTNkY2MxMDBkMWYxNGVl
NDkwZWI3OGEzMy4uZWI1MjI4ZmU1NzY4NzVlMmM4ZGE5MmE5ZTcxNDg2NTExYzcxMjIxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuY3BwCkBAIC02MCw2ICs2MCwxMCBAQCBib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmlzU3BlZWNoSW5wdXRFbmFibGVkID0gdHJ1ZTsKIGJvb2wgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6aXNNZWRpYVN0cmVhbUVuYWJsZWQgPSB0cnVlOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoR0FNRVBBRCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNHYW1lcGFkRW5h
YmxlZCA9IGZhbHNlOworI2VuZGlmCisKICNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JMT0IpCiBi
b29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzWEhSUmVzcG9uc2VCbG9iRW5hYmxlZCA9IGZh
bHNlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVy
aWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDYwOTdhOTgwMjU2YTFkNGFlOWU2NTc4
MmYwNzQyYTlkZDFiYmJjNjYuLjIxNTRkZGFiYmE4OTgyMDcxOGY4MDIzZmM4MzZkNTc3YzRkNTk0
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC0xNjIsNiArMTYyLDExIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCB3ZWJraXRQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlh
U3RyZWFtRW5hYmxlZDsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBzdGF0
aWMgdm9pZCBzZXRHYW1lcGFkRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0dhbWVwYWRFbmFi
bGVkID0gaXNFbmFibGVkOyB9CisgICAgc3RhdGljIGJvb2wgZ2FtZXBhZHNFbmFibGVkKCkgeyBy
ZXR1cm4gaXNHYW1lcGFkRW5hYmxlZDsgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoUVVPVEEpCiAg
ICAgc3RhdGljIGJvb2wgcXVvdGFFbmFibGVkKCkgeyByZXR1cm4gaXNRdW90YUVuYWJsZWQ7IH0K
ICAgICBzdGF0aWMgdm9pZCBzZXRRdW90YUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNRdW90
YUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KQEAgLTIxMCw2ICsyMTUsMTAgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgYm9vbCBpc01lZGlhU3RyZWFtRW5hYmxlZDsKICNlbmRpZgogCisjaWYgRU5BQkxF
KEdBTUVQQUQpCisgICAgc3RhdGljIGJvb2wgaXNHYW1lcGFkRW5hYmxlZDsKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKFFVT1RBKQogICAgIHN0YXRpYyBib29sIGlzUXVvdGFFbmFibGVkOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhHYW1lcGFk
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEdhbWVwYWRD
dXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwM2M5YTA5ZTdlZWY2ZTU1NGJkYTliM2Q0NmZjZWUwYjFm
ZjI3NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhHYW1lcGFkQ3VzdG9tLmNwcApAQCAtMCwwICsxLDY0IEBACisvLyBDb3B5cmlnaHQgKEMp
IDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
Ky8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVjhHYW1lcGFkLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkK
KworI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgor
I2luY2x1ZGUgIlY4UHJveHkuaCIKKworI2luY2x1ZGUgPHY4Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVOdW1iZXJBcnJheShj
b25zdCBHYW1lcGFkOjpGbG9hdFZlY3RvciYgdmVjdG9yKQoreworICAgIHVuc2lnbmVkIHNpemUg
PSB2ZWN0b3Iuc2l6ZSgpOworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHJldCA9IHY4OjpBcnJh
eTo6TmV3KHNpemUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCisg
ICAgICAgIHJldC0+U2V0KGksIHY4OjpOdW1iZXI6Ok5ldyh2ZWN0b3JbaV0pKTsKKyAgICByZXR1
cm4gcmV0OworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhHYW1lcGFkOjpheGVzQWNjZXNz
b3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uR2FtZXBhZC5heGVzLl9nZXQiKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CisgICAgR2Ft
ZXBhZCogaW1wID0gVjhHYW1lcGFkOjp0b05hdGl2ZShob2xkZXIpOworICAgIHJldHVybiBjcmVh
dGVOdW1iZXJBcnJheShpbXAtPmF4ZXMoKSk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEdhbWVwYWQ6OmJ1dHRvbnNBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5H
YW1lcGFkLmJ1dHRvbnMuX2dldCIpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVy
ID0gaW5mby5Ib2xkZXIoKTsKKyAgICBHYW1lcGFkKiBpbXAgPSBWOEdhbWVwYWQ6OnRvTmF0aXZl
KGhvbGRlcik7CisgICAgcmV0dXJuIGNyZWF0ZU51bWJlckFycmF5KGltcC0+YnV0dG9ucygpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9HYW1lcGFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTIwYjhmNzk4ZWQ4ODNmYmVmYWIx
OGQ4MzQ4ZDJjNzk1NTZkMmE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9HYW1lcGFkLmNwcApAQCAtMCwwICsxLDUxIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
Ky8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkK
Ky8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiR2FtZXBhZC5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHYW1lcGFk
OjpHYW1lcGFkKGNvbnN0IFN0cmluZyYgaWQsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsb25n
IGxvbmcgdGltZXN0YW1wLAorICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1BeGVzLCBjb25z
dCBmbG9hdCogYXhlcywgdW5zaWduZWQgbnVtQnV0dG9ucywgY29uc3QgZmxvYXQqIGJ1dHRvbnMp
CisgICAgOiBtX2lkKGlkKQorICAgICwgbV9pbmRleChpbmRleCkKKyAgICAsIG1fdGltZXN0YW1w
KHRpbWVzdGFtcCkKKyAgICAsIG1fYXhlcyhudW1BeGVzKQorICAgICwgbV9idXR0b25zKG51bUJ1
dHRvbnMpCit7CisgICAgc3RkOjpjb3B5KGF4ZXMsIGF4ZXMgKyBudW1BeGVzLCBtX2F4ZXMuYmVn
aW4oKSk7CisgICAgc3RkOjpjb3B5KGJ1dHRvbnMsIGJ1dHRvbnMgKyBudW1CdXR0b25zLCBtX2J1
dHRvbnMuYmVnaW4oKSk7Cit9CisKK0dhbWVwYWQ6On5HYW1lcGFkKCkKK3sKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2Ft
ZXBhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjUxYmVlOWRjN2I5ODk2ODBlOTZmZjVjYTVjM2YxYmFlNzhkNDlh
YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuaApAQCAt
MCwwICsxLDYyIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8v
CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSAorLy8gREFNQUdFLgorCisjaWZuZGVmIEdhbWVwYWRfaAorI2RlZmluZSBHYW1lcGFkX2gK
KworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEdhbWVwYWQ6IHB1YmxpYyBSZWZDb3VudGVkPEdhbWVwYWQ+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxHYW1lcGFkPiBjcmVhdGUoCisgICAgICAgICAgICBjb25zdCBj
aGFyKiBpZCwgdW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXAsCisg
ICAgICAgICAgICB1bnNpZ25lZCBudW1BeGVzLCBjb25zdCBmbG9hdCogYXhlcywgdW5zaWduZWQg
bnVtQnV0dG9ucywgY29uc3QgZmxvYXQqIGJ1dHRvbnMpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEdhbWVwYWQoU3RyaW5nKGlkKSwgaW5kZXgsIHRpbWVzdGFtcCwgbnVtQXhl
cywgYXhlcywgbnVtQnV0dG9ucywgYnV0dG9ucykpOworICAgIH0KKyAgICB+R2FtZXBhZCgpOwor
CisgICAgdHlwZWRlZiBWZWN0b3I8ZmxvYXQsIDE2PiBGbG9hdFZlY3RvcjsKKyAgICBjb25zdCBT
dHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIHVuc2lnbmVkIGluZGV4KCkg
Y29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3Rh
bXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFtcDsgfQorICAgIGNvbnN0IEZsb2F0VmVjdG9y
JiBheGVzKCkgY29uc3QgeyByZXR1cm4gbV9heGVzOyB9CisgICAgY29uc3QgRmxvYXRWZWN0b3Im
IGJ1dHRvbnMoKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbnM7IH0KKworcHJpdmF0ZToKKyAgICBH
YW1lcGFkKGNvbnN0IFN0cmluZyYgaWQsIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBsb25nIGxv
bmcgdGltZXN0YW1wLAorICAgICAgICAgICAgdW5zaWduZWQgbnVtQXhlcywgY29uc3QgZmxvYXQq
IGF4ZXMsIHVuc2lnbmVkIG51bUJ1dHRvbnMsIGNvbnN0IGZsb2F0KiBidXR0b25zKTsKKyAgICBT
dHJpbmcgbV9pZDsKKyAgICB1bnNpZ25lZCBtX2luZGV4OworICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBtX3RpbWVzdGFtcDsKKyAgICBGbG9hdFZlY3RvciBtX2F4ZXM7CisgICAgRmxvYXRWZWN0b3Ig
bV9idXR0b25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR2Ft
ZXBhZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuaWRsIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzliYWY5MDYzMjM4ZGUy
NDdkMzFlNWQ3OTU0MjhmYWZmNWFiMzVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9HYW1lcGFkLmlkbApAQCAtMCwwICsxLDM2IEBACisvLyBDb3B5cmlnaHQgKEMpIDIw
MTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8v
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCittb2R1bGUgZG9tIHsK
KworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUdBTUVQQUQKKyAgICBdIEdh
bWVwYWQgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBpbmRleDsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXA7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBbQ3VzdG9tR2V0dGVyXSBBcnJheSBheGVzOworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgW0N1c3RvbUdldHRlcl0gQXJyYXkgYnV0dG9uczsKKyAgICB9OworCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxMmU1YjFjZWQzYWVhNjY0
MmU4ZDE5NTg0OTc0NzJlOGU4MDNjOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0dhbWVwYWRMaXN0LmNwcApAQCAtMCwwICsxLDU5IEBACisvLyBDb3B5cmlnaHQgKEMp
IDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
Ky8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZXBhZExpc3QuaCIKKworI2luY2x1ZGUgIkdhbWVwYWQu
aCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dhbWVw
YWRMaXN0Ojp+R2FtZXBhZExpc3QoKQoreworfQorCit2b2lkIEdhbWVwYWRMaXN0OjpjbGVhcigp
Cit7CisgICAgbV9nYW1lcGFkcy5jbGVhcigpOworfQorCit2b2lkIEdhbWVwYWRMaXN0OjphcHBl
bmQoUGFzc1JlZlB0cjxHYW1lcGFkPiBnYW1lcGFkKQoreworICAgIG1fZ2FtZXBhZHMuYXBwZW5k
KGdhbWVwYWQpOworfQorCit1bnNpZ25lZCBHYW1lcGFkTGlzdDo6bGVuZ3RoKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9nYW1lcGFkcy5zaXplKCk7Cit9CisKK0dhbWVwYWQqIEdhbWVwYWRMaXN0
OjppdGVtKHVuc2lnbmVkIGluZGV4KQoreworICAgIHJldHVybiBpbmRleCA8IGxlbmd0aCgpID8g
bV9nYW1lcGFkc1tpbmRleF0uZ2V0KCkgOiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvR2FtZXBhZExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45NjMzMWFhNjNiYTcyMDcyYTFiZTVjZTBiNGY3NjI1Zjc1OTdjYTA1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5oCkBAIC0wLDAg
KzEsNTMgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8v
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
Ly8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
Ky8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
CisvLyBEQU1BR0UuCisKKyNpZm5kZWYgR2FtZXBhZExpc3RfaAorI2RlZmluZSBHYW1lcGFkTGlz
dF9oCisKKyNpbmNsdWRlICJHYW1lcGFkLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8R2FtZXBhZD4gPiBH
YW1lcGFkVmVjdG9yOworCitjbGFzcyBHYW1lcGFkTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPEdh
bWVwYWRMaXN0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R2FtZXBhZExpc3Q+
IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBHYW1lcGFkTGlzdCk7IH0KKyAgICB+R2Ft
ZXBhZExpc3QoKTsKKworICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2b2lkIGFwcGVuZChQYXNzUmVm
UHRyPEdhbWVwYWQ+KTsKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAgICBHYW1lcGFk
KiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKKworcHJpdmF0ZToKKyAgICBHYW1lcGFkTGlzdCgpIHsg
fQorICAgIEdhbWVwYWRWZWN0b3IgbV9nYW1lcGFkczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEdhbWVwYWRMaXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvR2FtZXBhZExpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlz
dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjQyYjgxNWRmYWY0Mjc4NjU3M2JmNTFhYjUzOGVmNGZhM2RmNTQy
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuaWRs
CkBAIC0wLDAgKzEsMzQgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0
OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorLy8g
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUK
Ky8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNICisvLyBEQU1BR0UuCisKK21vZHVsZSBkb20geworCisgICAgaW50ZXJmYWNlIFsK
KyAgICAgICAgQ29uZGl0aW9uYWw9R0FNRVBBRCwKKyAgICAgICAgSGFzSW5kZXhHZXR0ZXIKKyAg
ICBdIEdhbWVwYWRMaXN0IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoOworICAgICAgICBHYW1lcGFkIGl0ZW0oaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVm
YXVsdFZhbHVlXSB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICB9OworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5jcHAKaW5kZXggYjFlNGFiMWZmZDY2OWNkOThlNWNiNzkwZWE3NGIwMzgyOTk3
NTkxOS4uYjg2Njc3NDBkNDNhZTFiMGUzNzcwODhmNDlkYWExNjAxYTE4YmY0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5o
IgorI2luY2x1ZGUgIkdhbWVwYWRMaXN0LmgiCisjaW5jbHVkZSAiR2FtZXBhZHMuaCIKICNpbmNs
dWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJMYW5ndWFn
ZS5oIgpAQCAtMjg3LDQgKzI4OSwxMiBAQCB2b2lkIE5hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1l
ZGlhKGNvbnN0IFN0cmluZyYgb3B0aW9ucywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVcwogfQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoR0FNRVBBRCkKK0dhbWVwYWRMaXN0KiBOYXZpZ2F0b3I6OmdhbWVw
YWRzKCkKK3sKKyAgICBtX2dhbWVwYWRzID0gcG9sbEdhbWVwYWRzKCk7CisgICAgcmV0dXJuIG1f
Z2FtZXBhZHMuZ2V0KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmgKaW5kZXggOGQxYzY5ZWFjOTBiMjJlODdkMDEzOTU3MTZkOGE2MGQy
NWI2MTljYS4uNmZkNjI4ZDI0NzY3MGY0M2ZlOTIzOWY2MmJmZGE0OGViZmU3ZDZjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIERPTU1pbWVUeXBlQXJyYXk7CiBjbGFzcyBET01QbHVnaW5BcnJheTsKIGNsYXNzIEZy
YW1lOworY2xhc3MgR2FtZXBhZExpc3Q7CiBjbGFzcyBHZW9sb2NhdGlvbjsKIGNsYXNzIE5hdmln
YXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s7CiBjbGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNj
ZXNzQ2FsbGJhY2s7CkBAIC03MSwxMiArNzIsMTkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB3ZWJraXRHZXRVc2VyTWVkaWEoY29uc3QgU3RyaW5nJiBvcHRpb25zLCBQYXNzUmVmUHRyPE5h
dmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4sIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNl
ck1lZGlhRXJyb3JDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgogCisjaWYgRU5B
QkxFKEdBTUVQQUQpCisgICAgR2FtZXBhZExpc3QqIGdhbWVwYWRzKCk7CisjZW5kaWYKKwogcHJp
dmF0ZToKICAgICBOYXZpZ2F0b3IoRnJhbWUqKTsKICAgICBGcmFtZSogbV9mcmFtZTsKICAgICBt
dXRhYmxlIFJlZlB0cjxET01QbHVnaW5BcnJheT4gbV9wbHVnaW5zOwogICAgIG11dGFibGUgUmVm
UHRyPERPTU1pbWVUeXBlQXJyYXk+IG1fbWltZVR5cGVzOwogICAgIG11dGFibGUgUmVmUHRyPEdl
b2xvY2F0aW9uPiBtX2dlb2xvY2F0aW9uOworI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIG11dGFi
bGUgUmVmUHRyPEdhbWVwYWRMaXN0PiBtX2dhbWVwYWRzOworI2VuZGlmCiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5pZGwKaW5kZXggYzkwZDg1NzRkZWIxMjA2ODU4OWZjN2Q4MTBiZTE5
ZDNlMzkzNWYwYy4uMmQ1OGYyM2E1NmE5NjBjYWExNzUwNWQyNjdkNjRhNWQwMjJmNjQ5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbApAQCAtNTksNiArNTksMTAgQEAgbW9kdWxlIHdpbmRv
dyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIFtDYWxsYmFjaz1GdW5jdGlvbk9ubHksIE9wdGlvbmFsXSBOYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spCiAgICAgICAgICAgICByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKICNlbmRpZgorCisjaWYgZGVmaW5lZChFTkFCTEVfR0FNRVBBRCkgJiYgRU5B
QkxFX0dBTUVQQUQKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1l
XSBHYW1lcGFkTGlzdCBnYW1lcGFkczsKKyNlbmRpZgogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dhbWVwYWRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9HYW1lcGFkcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczNDA1ZTdlN2RmZmFmNzU4Njc1NGJhNzYwYzNm
ODljODVmY2FkNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9H
YW1lcGFkcy5oCkBAIC0wLDAgKzEsMzcgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8g
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8g
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0UuCisKKyNpZm5kZWYgR2FtZXBhZHNfaAorI2Rl
ZmluZSBHYW1lcGFkc19oCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEdhbWVwYWRMaXN0OworCitQYXNzUmVmUHRyPEdhbWVwYWRM
aXN0PiBwb2xsR2FtZXBhZHMoKTsKKworfQorCisjZW5kaWYgLy8gR2FtZXBhZHNfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCBkYWJjMDBmMTVmNGY0ZWVlYTJjNWM1ZGQ0MWIwMGI1YzU5
NGNkYzBkLi4xMjY4MDYwOTg3YzhlYTAyYmIzOWUwYjE0N2VmNjM0NTEwYWQ4N2MxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTEwLTExICBTY290dCBH
cmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGRpbmcgZ2FtZXBhZCBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
OTQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZHMgcnVudGltZSBmbGFnIHN1cHBvcnQgZm9yIGdhbWVwYWQsIGFuZCBwbGF0Zm9ybSBzdXBwb3J0
IGZvcgorICAgICAgICBnYW1lcGFkcyBmb3IgQ2hyb21pdW0uCisKKyAgICAgICAgKiBXZWJLaXQu
Z3lwOgorICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisgICAgICAgICogcHVibGljL1dlYkdhbWVw
YWRzLmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViS2l0UGxhdGZvcm1TdXBwb3J0Ojpwb2xsR2FtZXBhZHMpOgor
ICAgICAgICAqIHB1YmxpYy9XZWJSdW50aW1lRmVhdHVyZXMuaDoKKyAgICAgICAgKiBzcmMvR2Ft
ZXBhZHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBvbGxHYW1lcGFkcyk6CisgICAg
ICAgICogc3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJ1
bnRpbWVGZWF0dXJlczo6ZW5hYmxlR2FtZXBhZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJ1bnRp
bWVGZWF0dXJlczo6aXNHYW1lcGFkRW5hYmxlZCk6CisKIDIwMTEtMTAtMTAgIEFkYW0gS2xlaW4g
IDxhZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW011dGF0aW9uT2JzZXJ2ZXJzXSBBZGQg
c3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBXZWJLaXRNdXRhdGlvbk9ic2VydmVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKaW5kZXggY2U2ZTBlMTY0NDA3NjZkMDAxYzk3ZmU3MjQwOTBjOTM3NmY2
ZDc0NC4uOWYwNWMwMzQ3ZmEyZDk3OTg4YTMxNDQ5NjI4NDQxYmVkNjNhODA4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzczLDYgKzM3Myw3IEBACiAgICAgICAgICAgICAgICAg
J3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0ZyYW1lTmV0d29y
a2luZ0NvbnRleHRJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvR2FtZXBhZHMuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHkuY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHkuaCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHYW1lcGFkcy5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViR2FtZXBhZHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzczMDA4NGIyZjg3MDMz
Y2E2N2ZkZjNkY2YwMzg2NjMyMjg0ZTIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViR2FtZXBhZHMuaApAQCAtMCwwICsxLDc1IEBACisvLyBDb3B5
cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8g
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8v
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisj
aWZuZGVmIFdlYkdhbWVwYWRzX2gKKyNkZWZpbmUgV2ViR2FtZXBhZHNfaAorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY29uc3QgaW50IG1heGltdW1HYW1lcGFkSWRMZW5ndGggPSAxMjg7Citjb25z
dCBpbnQgbWF4aW11bUdhbWVwYWRBeGVzID0gMTY7Citjb25zdCBpbnQgbWF4aW11bUdhbWVwYWRC
dXR0b25zID0gMTY7Citjb25zdCBpbnQgbWF4aW11bUdhbWVwYWRzID0gNDsKKworY2xhc3MgV2Vi
R2FtZXBhZCB7CitwdWJsaWM6CisgICAgLy8gSXMgdGhlcmUgYSBnYW1lcGFkIGNvbm5lY3RlZCBh
dCB0aGlzIGluZGV4PworICAgIGJvb2wgY29ubmVjdGVkOworCisgICAgLy8gSW5kZXggb2YgR2Ft
ZXBhZCBpbiBHYW1lcGFkcyBhcnJheS4KKyAgICB1bnNpZ25lZCBpbmRleDsKKworICAgIC8vIERl
dmljZSBpZGVudGlmaWVyIChiYXNlZCBvbiBtYW51ZmFjdHVyZXIsIG1vZGVsLCBldGMuKS4KKyAg
ICBjaGFyIGlkW21heGltdW1HYW1lcGFkSWRMZW5ndGhdOworCisgICAgLy8gTW9ub3RvbmljYWxs
eSBpbmNyZWFzaW5nIHZhbHVlIHJlZmVycmluZyB0byB3aGVuIHRoZSBkYXRhIHdlcmUgbGFzdAor
ICAgIC8vIHVwZGF0ZWQuCisgICAgdW5zaWduZWQgbG9uZyBsb25nIHRpbWVzdGFtcDsKKworICAg
IC8vIE51bWJlciBvZiB2YWxpZCBlbnRyaWVzIGluIHRoZSBheGVzIGFycmF5LgorICAgIHVuc2ln
bmVkIG51bUF4ZXM7CisKKyAgICAvLyBOb3JtYWxpemVkIHZhbHVlcyByZXByZXNlbnRpbmcgYXhl
cywgaW4gdGhlIHJhbmdlIFstMS4uMV0uCisgICAgZmxvYXQgYXhlc1ttYXhpbXVtR2FtZXBhZEF4
ZXNdOworCisgICAgLy8gTnVtYmVyIG9mIHZhbGlkIGVudHJpZXMgaW4gdGhlIGJ1dHRvbnMgYXJy
YXkuCisgICAgdW5zaWduZWQgbnVtQnV0dG9uczsKKyAgICAKKyAgICAvLyBOb3JtYWxpemVkIHZh
bHVlcyByZXByZXNlbnRpbmcgYnV0dG9ucywgaW4gdGhlIHJhbmdlIFswLi4xXS4KKyAgICBmbG9h
dCBidXR0b25zW21heGltdW1HYW1lcGFkQnV0dG9uc107Cit9OworCisvLyBUaGlzIHN0cnVjdHVy
ZSBpcyBpbnRlbnRpb25hbGx5IFBPRCBhbmQgZml4ZWQgc2l6ZSBzbyB0aGF0IGl0IGNhbiBiZSBz
aGFyZWQKKy8vIG1lbW9yeSBiZXR3ZWVuIGhhcmR3YXJlIHBvbGxpbmcgdGhyZWFkcyBhbmQgdGhl
IHJlc3Qgb2YgdGhlIGJyb3dzZXIuCitjbGFzcyBXZWJHYW1lcGFkcyB7CitwdWJsaWM6CisgICAg
Ly8gTnVtYmVyIG9mIHZhbGlkIGVudHJpZXMgaW4gdGhlIGdhbWVwYWRzIGFycmF5LgorICAgIGlu
dCBudW1HYW1lcGFkczsKKworICAgIC8vIEdhbWVwYWQgZGF0YSBmb3IgTiBzZXBhcmF0ZSBnYW1l
cGFkIGRldmljZXMuCisgICAgV2ViR2FtZXBhZCBnYW1lcGFkc1ttYXhpbXVtR2FtZXBhZHNdOwor
fTsKKworfQorCisjZW5kaWYgLy8gV2ViR2FtZXBhZHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAppbmRleCBiMzMxNDk5
MzY3OWM1ZjVhYjFmNmFiM2ViZjE2ZjZlZWJhM2UwMGM4Li5jYmU3MWU2YjQ2OTdjOTVlNGM1MGE2
ZTNlNWEyYzZlMzRkMTg2OTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaApAQCAtNTYsNiArNTYsNyBAQCBjbGFzcyBX
ZWJDbGlwYm9hcmQ7CiBjbGFzcyBXZWJDb29raWVKYXI7CiBjbGFzcyBXZWJGaWxlU3lzdGVtOwog
Y2xhc3MgV2ViRmlsZVV0aWxpdGllczsKK2NsYXNzIFdlYkdhbWVwYWRzOwogY2xhc3MgV2ViR3Jh
cGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBXZWJJREJGYWN0b3J5OwogY2xhc3MgV2ViSURCS2V5OwpA
QCAtMTA2LDYgKzEwNywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdlYlVSTCYgdXJsLCBib29sIGlzTG9jYWxTdG9yYWdlKSB7IH0KIAog
CisgICAgLy8gR2FtZXBhZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgdmlydHVhbCB2b2lkIHBvbGxHYW1lcGFkcyhXZWJH
YW1lcGFkcyYpIHsgfQorCisKICAgICAvLyBIaXN0b3J5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIFJldHVybnMg
dGhlIGhhc2ggZm9yIHRoZSBnaXZlbiBjYW5vbmljYWxpemVkIFVSTCBmb3IgdXNlIGluIHZpc2l0
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJ1bnRpbWVG
ZWF0dXJlcy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUnVudGltZUZlYXR1
cmVzLmgKaW5kZXggYmExYzBkZDE4ODk4NDJkMTVlMDkwYTMwYjQ3ODU4NjcwOWM1YzFkOS4uMDdi
OTdjZDVjNDE0MzI5MDNkZjdkNDU1YTNkODEzMGZmYmI0NWYwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUnVudGltZUZlYXR1cmVzLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUnVudGltZUZlYXR1cmVzLmgKQEAgLTExNSw2ICsx
MTUsOSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBlbmFibGVWaWRl
b1RyYWNrKGJvb2wpOwogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIGJvb2wgaXNWaWRlb1RyYWNr
RW5hYmxlZCgpOwogCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBlbmFibGVHYW1lcGFk
KGJvb2wpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIGJvb2wgaXNHYW1lcGFkRW5hYmxlZCgp
OworCiBwcml2YXRlOgogICAgIFdlYlJ1bnRpbWVGZWF0dXJlcygpOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dhbWVwYWRzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0dhbWVwYWRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWRiNDBmMTk0NjViN2I5ZTI4
NDdhNzg2NzE1OTJhMTgxOGE1Y2U3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvR2FtZXBhZHMuY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8vIENvcHlyaWdodCAo
QykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RQorLy8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0UuCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJHYW1lcGFkcy5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQp
CisKKyNpbmNsdWRlICJHYW1lcGFkTGlzdC5oIgorI2luY2x1ZGUgIldlYkdhbWVwYWRzLmgiCisj
aW5jbHVkZSAiV2ViS2l0LmgiCisjaW5jbHVkZSAiV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
R2FtZXBhZExpc3Q7CisKK1Bhc3NSZWZQdHI8R2FtZXBhZExpc3Q+IHBvbGxHYW1lcGFkcygpCit7
CisgICAgV2ViR2FtZXBhZHMgZ2FtZXBhZHM7CisgICAgUmVmUHRyPEdhbWVwYWRMaXN0PiBnYW1l
cGFkTGlzdChHYW1lcGFkTGlzdDo6Y3JlYXRlKCkpOworCisgICAgd2ViS2l0UGxhdGZvcm1TdXBw
b3J0KCktPnBvbGxHYW1lcGFkcyhnYW1lcGFkcyk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IGdhbWVwYWRzLm51bUdhbWVwYWRzOyArK2kpIHsKKyAgICAgICAgV2ViR2FtZXBhZCYgd2ViR2Ft
ZXBhZCA9IGdhbWVwYWRzLmdhbWVwYWRzW2ldOworICAgICAgICBpZiAod2ViR2FtZXBhZC5jb25u
ZWN0ZWQpIHsKKyAgICAgICAgICAgIFJlZlB0cjxHYW1lcGFkPiBnYW1lcGFkID0gR2FtZXBhZDo6
Y3JlYXRlKAorICAgICAgICAgICAgICAgICAgICB3ZWJHYW1lcGFkLmlkLCB3ZWJHYW1lcGFkLmlu
ZGV4LCB3ZWJHYW1lcGFkLnRpbWVzdGFtcCwKKyAgICAgICAgICAgICAgICAgICAgd2ViR2FtZXBh
ZC5udW1BeGVzLCB3ZWJHYW1lcGFkLmF4ZXMsIHdlYkdhbWVwYWQubnVtQnV0dG9ucywgd2ViR2Ft
ZXBhZC5idXR0b25zKTsKKyAgICAgICAgICAgIGdhbWVwYWRMaXN0LT5hcHBlbmQoZ2FtZXBhZCk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZ2FtZXBhZExpc3QtPmFwcGVuZCgwKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZ2FtZXBhZExpc3Q7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUnVudGltZUZlYXR1cmVzLmNwcAppbmRleCA2
ZDRmZTRlY2M3ZDQwMTM0YTE5NTFlYmY5NDliZDIyM2IyZjIzODNmLi4yYzFmMWJlYTY4NDdjY2Zj
NjgwZDdmYmU4YzdjNWMzNzQ3ZWI2YTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHAKQEAgLTQwNCw0ICs0MDQsMjIgQEAgYm9vbCBX
ZWJSdW50aW1lRmVhdHVyZXM6OmlzVmlkZW9UcmFja0VuYWJsZWQoKQogI2VuZGlmCiB9CiAKK3Zv
aWQgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVHYW1lcGFkKGJvb2wgZW5hYmxlKQoreworI2lm
IEVOQUJMRShHQU1FUEFEKQorICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldEdhbWVwYWRF
bmFibGVkKGVuYWJsZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlbmFibGUpOworI2VuZGlm
Cit9CisKK2Jvb2wgV2ViUnVudGltZUZlYXR1cmVzOjppc0dhbWVwYWRFbmFibGVkKCkKK3sKKyNp
ZiBFTkFCTEUoR0FNRVBBRCkKKyAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Z2Ft
ZXBhZHNFbmFibGVkKCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115477</attachid>
            <date>2011-11-16 16:27:13 -0800</date>
            <delta_ts>2011-11-17 14:09:20 -0800</delta_ts>
            <desc>remove custom binding code, add DRT hooks and tests</desc>
            <filename>bug-69451-20111116162711.patch</filename>
            <type>text/plain</type>
            <size>49261</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I4Y2FlMThkZWFiMTI5
NDFhMTUyN2I0N2VmMzYwNTdiMDIyMjA0Yy4uODI1YTVkNjcxOTg1NmU3ZTA1ZWZjOTZhMzlmYzVl
NmEwMDUwMmUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDExLTExLTE2ICBTY290
dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGRpbmcgZ2FtZXBh
ZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02OTQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZHMgcGx1bWJpbmcgZm9yIGV4cG9zaW5nIGEgR2FtZXBhZExpc3QgYW5kIEdhbWVwYWQgdGhy
b3VnaCBXZWJDb3JlLAorICAgICAgICBhbmQgZ2F0aGVyaW5nIGRhdGEgdmlhIHBsYXRmb3JtLgor
CisgICAgICAgIFRlc3RzOiBnYW1lcGFkL2dhbWVwYWQtYXBpLmh0bWwKKyAgICAgICAgICAgICAg
IGdhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy5odG1sCisKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogcGFnZS9HYW1lcGFkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpHYW1lcGFkOjpHYW1lcGFkKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWQ6OmF4ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZDo6YnV0dG9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpHYW1lcGFkOjp+R2FtZXBhZCk6CisgICAgICAgICogcGFnZS9HYW1lcGFkLmg6IEFkZGVkLgor
ICAgICAgICAqIHBhZ2UvR2FtZXBhZC5pZGw6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvR2FtZXBh
ZExpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0Ojp+R2FtZXBh
ZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6OnNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpHYW1lcGFkTGlzdDo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRM
aXN0OjppdGVtKToKKyAgICAgICAgKiBwYWdlL0dhbWVwYWRMaXN0Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHYW1l
cGFkTGlzdDo6R2FtZXBhZExpc3QpOgorICAgICAgICAqIHBhZ2UvR2FtZXBhZExpc3QuaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0b3I6OmdhbWVwYWRzKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAgICAg
ICAqIHBhZ2UvTmF2aWdhdG9yLmlkbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9HYW1lcGFkcy5oOiBB
ZGRlZC4KKwogMjAxMS0xMS0xNiAgRGFuIFdpbnNoaXAgIDxkYW53QGdub21lLm9yZz4KIAogICAg
ICAgICBbR1RLXSBGaXggcGxhdGZvcm1EZWZlcnNMb2FkaW5nIHRvIGhhbmRsZSBub24taHR0cCBy
ZXF1ZXN0cywgYW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDViYzkwZDU3M2IxYjA4
NWQ5YmIyMDQ0Nzg1MjVmNDkxZjU3MjM5MTIuLmQ1MTU3YTIzNWIzOTYyMjdmYmZmODFiZGVmNTM5
YmM2ODY2ZmE0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTEtMTEtMTYgIFNjb3R0IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIEFkZGluZyBnYW1lcGFkIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY5NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGxhdGZvcm0gc3VwcG9ydCBmb3IgY29ubmVjdGluZyBnYW1lcGFk
cyBpbnRlcmZhY2UgaW4gV2ViQ29yZSB0bworICAgICAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQu
CisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHNyYy9HYW1lcGFkcy5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6c2FtcGxlR2FtZXBhZHMpOgorCiAyMDExLTExLTE2ICBW
c2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IEFwcGxpY2F0aW9uIGNhY2hlIHN0YXR1cyBzaG91bGQgYmUgdXBkYXRlZCBhZnRlciBz
d2FwQ2FjaGUoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiNWNjYWQwMDM4YzMyMmYwOWU5ZDIxMGVk
MjBhZWZlYWM1ZDcyM2RiLi5lMmViMjUyNmQxMTQ2NDM2MDUzNDY2MzJhZDJkZDY2MWQ4YWE0YWU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMzk5LDYgKzEzOTksOCBAQAogICAgICAgICAgICAgJ3Bh
Z2UvRE9NU2VsZWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9ET01XaW5kb3cuaWRsJywK
ICAgICAgICAgICAgICdwYWdlL0V2ZW50U291cmNlLmlkbCcsCisgICAgICAgICAgICAncGFnZS9H
YW1lcGFkLmlkbCcsCisgICAgICAgICAgICAncGFnZS9HYW1lcGFkTGlzdC5pZGwnLAogICAgICAg
ICAgICAgJ3BhZ2UvR2VvbG9jYXRpb24uaWRsJywKICAgICAgICAgICAgICdwYWdlL0dlb3Bvc2l0
aW9uLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9IaXN0b3J5LmlkbCcsCkBAIC0yOTUxLDYgKzI5
NTMsMTAgQEAKICAgICAgICAgICAgICdwYWdlL0ZyYW1lQWN0aW9uU2NoZWR1bGVyLmgnLAogICAg
ICAgICAgICAgJ3BhZ2UvRnJhbWVUcmVlLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9GcmFtZVZp
ZXcuY3BwJywKKyAgICAgICAgICAgICdwYWdlL0dhbWVwYWQuY3BwJywKKyAgICAgICAgICAgICdw
YWdlL0dhbWVwYWQuaCcsCisgICAgICAgICAgICAncGFnZS9HYW1lcGFkTGlzdC5jcHAnLAorICAg
ICAgICAgICAgJ3BhZ2UvR2FtZXBhZExpc3QuaCcsCiAgICAgICAgICAgICAncGFnZS9HZW9sb2Nh
dGlvbi5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCcs
CiAgICAgICAgICAgICAncGFnZS9Hcm91cFNldHRpbmdzLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFk
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWVkMThkZGRlMWM3YTZhYjAzYWEyMjhkZWUxYzcyZDQ4YjU2MmQ0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmNwcApAQCAt
MCwwICsxLDU1IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8v
CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSAorLy8gREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZXBh
ZC5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHYW1lcGFkOjpHYW1lcGFkKCkKK3sKK30K
Kwordm9pZCBHYW1lcGFkOjpheGVzKHVuc2lnbmVkIGNvdW50LCBmbG9hdCogZGF0YSkKK3sKKyAg
ICBtX2F4ZXMucmVzaXplKGNvdW50KTsKKyAgICBzdGQ6OmNvcHkoZGF0YSwgZGF0YSArIGNvdW50
LCBtX2F4ZXMuYmVnaW4oKSk7Cit9CisKK3ZvaWQgR2FtZXBhZDo6YnV0dG9ucyh1bnNpZ25lZCBj
b3VudCwgZmxvYXQqIGRhdGEpCit7CisgICAgbV9idXR0b25zLnJlc2l6ZShjb3VudCk7CisgICAg
c3RkOjpjb3B5KGRhdGEsIGRhdGEgKyBjb3VudCwgbV9idXR0b25zLmJlZ2luKCkpOworfQorCitH
YW1lcGFkOjp+R2FtZXBhZCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9H
YW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjVm
MTljMzQ5MDk2ZGM0ZDBmODgxNmI5NTE4YzFmODk5OGJmYWM4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmgKQEAgLTAsMCArMSw2OSBAQAorLy8gQ29weXJp
Z2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8vIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisvLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKworI2lm
bmRlZiBHYW1lcGFkX2gKKyNkZWZpbmUgR2FtZXBhZF9oCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHYW1lcGFkOiBwdWJsaWMg
UmVmQ291bnRlZDxHYW1lcGFkPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R2Ft
ZXBhZD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2FtZXBh
ZCk7CisgICAgfQorICAgIH5HYW1lcGFkKCk7CisKKyAgICB0eXBlZGVmIFZlY3RvcjxmbG9hdD4g
RmxvYXRWZWN0b3I7CisKKyAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9p
ZDsgfQorICAgIHZvaWQgaWQoY29uc3QgU3RyaW5nJiBpZCkgeyBtX2lkID0gaWQ7IH0KKworICAg
IHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAgIHZvaWQgaW5k
ZXgodW5zaWduZWQgdmFsKSB7IG1faW5kZXggPSB2YWw7IH0KKworICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFtcDsgfQorICAgIHZvaWQg
dGltZXN0YW1wKHVuc2lnbmVkIGxvbmcgbG9uZyB2YWwpIHsgbV90aW1lc3RhbXAgPSB2YWw7IH0K
KworICAgIGNvbnN0IEZsb2F0VmVjdG9yJiBheGVzKCkgY29uc3QgeyByZXR1cm4gbV9heGVzOyB9
CisgICAgdm9pZCBheGVzKHVuc2lnbmVkIGNvdW50LCBmbG9hdCogZGF0YSk7CisKKyAgICBjb25z
dCBGbG9hdFZlY3RvciYgYnV0dG9ucygpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9uczsgfQorICAg
IHZvaWQgYnV0dG9ucyh1bnNpZ25lZCBjb3VudCwgZmxvYXQqIGRhdGEpOworCitwcml2YXRlOgor
ICAgIEdhbWVwYWQoKTsKKyAgICBTdHJpbmcgbV9pZDsKKyAgICB1bnNpZ25lZCBtX2luZGV4Owor
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX3RpbWVzdGFtcDsKKyAgICBGbG9hdFZlY3RvciBtX2F4
ZXM7CisgICAgRmxvYXRWZWN0b3IgbV9idXR0b25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gR2FtZXBhZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0dhbWVwYWQuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmlkbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yMTQ5YjA1ZjVlNTJiOWRlYTVkNTQ5YWFmNzFmMzQ2ZjUzNzNkMDdlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmlkbApAQCAtMCwwICsxLDM2IEBA
CisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8g
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFN
QUdFLgorCittb2R1bGUgZG9tIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlv
bmFsPUdBTUVQQUQKKyAgICBdIEdhbWVwYWQgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGlkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBp
bmRleDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1l
c3RhbXA7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdFtdIGF4ZXM7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdFtdIGJ1dHRvbnM7CisgICAgfTsKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0dhbWVwYWRMaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjkzNGVkZDI1NDQ4NjEzNzkwZjg5
NjM2MDEyMjRkNTQxMWMwZGEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9HYW1lcGFkTGlzdC5jcHAKQEAgLTAsMCArMSw1NiBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDEx
LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisvLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZCisvLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkdhbWVwYWRMaXN0LmgiCisKKyNpbmNsdWRlICJHYW1lcGFkLmgiCisK
KyNpZiBFTkFCTEUoR0FNRVBBRCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHYW1lcGFkTGlz
dDo6fkdhbWVwYWRMaXN0KCkKK3sKK30KKwordm9pZCBHYW1lcGFkTGlzdDo6c2V0KHVuc2lnbmVk
IGluZGV4LCBQYXNzUmVmUHRyPEdhbWVwYWQ+IGdhbWVwYWQpCit7CisgICAgaWYgKGluZGV4ID49
IGtNYXhpbXVtR2FtZXBhZHMpCisgICAgICAgIHJldHVybjsKKyAgICBtX2l0ZW1zW2luZGV4XSA9
IGdhbWVwYWQ7Cit9CisKK3Vuc2lnbmVkIEdhbWVwYWRMaXN0OjpsZW5ndGgoKSBjb25zdAorewor
ICAgIHJldHVybiBrTWF4aW11bUdhbWVwYWRzOworfQorCitHYW1lcGFkKiBHYW1lcGFkTGlzdDo6
aXRlbSh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICByZXR1cm4gaW5kZXggPCBsZW5ndGgoKSA/IG1f
aXRlbXNbaW5kZXhdLmdldCgpIDogMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0dhbWVwYWRMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2E0MmU3OWZmNWM2OTE4N2NmMjQ5YjBmN2QwZThiNWI1MmVjNDUyYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuaApAQCAtMCwwICsxLDUz
IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
Ly8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8g
REFNQUdFLgorCisjaWZuZGVmIEdhbWVwYWRMaXN0X2gKKyNkZWZpbmUgR2FtZXBhZExpc3RfaAor
CisjaW5jbHVkZSAiR2FtZXBhZC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPEdhbWVwYWQ+ID4gR2FtZXBh
ZFZlY3RvcjsKKworY2xhc3MgR2FtZXBhZExpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxHYW1lcGFk
TGlzdD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdhbWVwYWRMaXN0PiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgR2FtZXBhZExpc3QpOyB9CisgICAgfkdhbWVwYWRM
aXN0KCk7CisKKyAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgUGFzc1JlZlB0cjxHYW1lcGFk
Pik7CisgICAgR2FtZXBhZCogaXRlbSh1bnNpZ25lZCBpbmRleCk7CisgICAgdW5zaWduZWQgbGVu
Z3RoKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgZW51bSB7IGtNYXhpbXVtR2FtZXBhZHMgPSA0
IH07CisgICAgR2FtZXBhZExpc3QoKSB7IH0KKyAgICBSZWZQdHI8R2FtZXBhZD4gbV9pdGVtc1tr
TWF4aW11bUdhbWVwYWRzXTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEdhbWVwYWRMaXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBh
ZExpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5pZGwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjQyYjgxNWRmYWY0Mjc4NjU3M2JmNTFhYjUzOGVmNGZhM2RmNTQyOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuaWRsCkBAIC0wLDAgKzEsMzQg
QEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisv
LyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8vIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisvLyBE
QU1BR0UuCisKK21vZHVsZSBkb20geworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0
aW9uYWw9R0FNRVBBRCwKKyAgICAgICAgSGFzSW5kZXhHZXR0ZXIKKyAgICBdIEdhbWVwYWRMaXN0
IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAg
ICAgICBHYW1lcGFkIGl0ZW0oaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSB1bnNp
Z25lZCBsb25nIGluZGV4KTsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAK
aW5kZXggY2NmYmZiOWNjODQ5NzI3YzQxN2UyZmI4MTRjNDQ1ZDFjYTllMTFiNi4uYzAyYjZkMTUx
ZmYxYTAxNWI3M2Q0MWUwYzkyODIxMjNkODY0MTljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9y
LmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkdh
bWVwYWRMaXN0LmgiCisjaW5jbHVkZSAiR2FtZXBhZHMuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlv
bi5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgpAQCAtMjg5
LDQgKzI5MSwxNCBAQCB2b2lkIE5hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1lZGlhKGNvbnN0IFN0
cmluZyYgb3B0aW9ucywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVcwogfQogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoR0FNRVBBRCkKK0dhbWVwYWRMaXN0KiBOYXZpZ2F0b3I6OmdhbWVwYWRzKCkKK3sKKyAg
ICBpZiAoIW1fZ2FtZXBhZHMpCisgICAgICAgIG1fZ2FtZXBhZHMgPSBHYW1lcGFkTGlzdDo6Y3Jl
YXRlKCk7CisgICAgc2FtcGxlR2FtZXBhZHMobV9nYW1lcGFkcy5nZXQoKSk7CisgICAgcmV0dXJu
IG1fZ2FtZXBhZHMuZ2V0KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmgKaW5kZXggNDljNTQ4OGM1YjIzOGQwNmFmYjdlNTQxZGE1ZTky
MTllMzZhMzdkNy4uZDEwYzhmYmUxNGE5YTQwNzgzMWFkZDUyNjcxMzdjM2ExMjg5NDhmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIERPTU1pbWVUeXBlQXJyYXk7CiBjbGFzcyBET01QbHVnaW5BcnJheTsKIGNsYXNz
IEZyYW1lOworY2xhc3MgR2FtZXBhZExpc3Q7CiBjbGFzcyBHZW9sb2NhdGlvbjsKIGNsYXNzIFBv
aW50ZXJMb2NrOwogY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjazsKQEAgLTc0
LDEyICs3NSwxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdlYmtpdEdldFVzZXJNZWRp
YShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3Vj
Y2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNr
PiwgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBH
YW1lcGFkTGlzdCogZ2FtZXBhZHMoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5hdmlnYXRv
cihGcmFtZSopOwogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIG11dGFibGUgUmVmUHRyPERPTVBs
dWdpbkFycmF5PiBtX3BsdWdpbnM7CiAgICAgbXV0YWJsZSBSZWZQdHI8RE9NTWltZVR5cGVBcnJh
eT4gbV9taW1lVHlwZXM7CiAgICAgbXV0YWJsZSBSZWZQdHI8R2VvbG9jYXRpb24+IG1fZ2VvbG9j
YXRpb247CisjaWYgRU5BQkxFKEdBTUVQQUQpCisgICAgbXV0YWJsZSBSZWZQdHI8R2FtZXBhZExp
c3Q+IG1fZ2FtZXBhZHM7CisjZW5kaWYKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIG11
dGFibGUgUmVmUHRyPFBvaW50ZXJMb2NrPiBtX3BvaW50ZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yLmlkbAppbmRleCA2ZmU0M2U2NjBhODUwNzMzMTQ4NTNmNTgxNjEzMTdhNmRiZmEy
Mzg1Li45MjQ1MmVjMDNkYjExMmU1NzQ0YTkwOWVkNGZiODA5ZmQ5YjdhNTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuaWRsCkBAIC02MSw2ICs2MSwxMCBAQCBtb2R1bGUgd2luZG93IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gW0NhbGxiYWNrPUZ1bmN0aW9uT25seSwgT3B0aW9uYWxdIE5hdmlnYXRvclVzZXJNZWRpYUVy
cm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaykKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRp
b24pOwogI2VuZGlmCisKKyNpZiBkZWZpbmVkKEVOQUJMRV9HQU1FUEFEKSAmJiBFTkFCTEVfR0FN
RVBBRAorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWVdIEdhbWVw
YWRMaXN0IGdhbWVwYWRzOworI2VuZGlmCiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vR2FtZXBhZHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dh
bWVwYWRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODYxMjZmNDk1YTAxYzkwMmU2YmNjMmZlNDY2NjAxZDgwMTMw
YWNkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dhbWVwYWRz
LmgKQEAgLTAsMCArMSwzNSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBt
ZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisv
LyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKworI2lmbmRlZiBHYW1lcGFkc19oCisjZGVmaW5lIEdh
bWVwYWRzX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHYW1lcGFkTGlzdDsKKwor
dm9pZCBzYW1wbGVHYW1lcGFkcyhHYW1lcGFkTGlzdCogaW50byk7CisKK30KKworI2VuZGlmIC8v
IEdhbWVwYWRzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBiYTg1NGVhYmNkNmFm
ODc0NWI3MWFhYjljMTc2NTIzYzEwZTk5MjQ5Li4xNDU3ZjFjYzYwMGMyYTc0ODI0NWExY2UxN2Uy
ZWU3ZmEzOTg2YjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0zODYsNiArMzg2
LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvRnJhbWVOZXR3b3JraW5nQ29udGV4dEltcGwuaCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9HYW1lcGFkcy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvR2VvbG9jYXRpb25D
bGllbnRQcm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvR2VvbG9jYXRpb25DbGllbnRQ
cm94eS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0u
Y3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dhbWVwYWRzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dhbWVwYWRzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
N2VlYzA1ZTdiMThhYzIyMzJlYmUyYTFjYmNmZWZjNGRjYWE0MmYxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR2FtZXBhZHMuY3BwCkBAIC0wLDAgKzEsNjUg
QEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisv
LyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8vIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisvLyBE
QU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHYW1lcGFkcy5oIgorCisj
aWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJHYW1lcGFkTGlzdC5oIgorI2luY2x1ZGUg
IldlYkdhbWVwYWRzLmgiCisjaW5jbHVkZSAiV2ViS2l0LmgiCisjaW5jbHVkZSAiV2ViS2l0UGxh
dGZvcm1TdXBwb3J0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgR2FtZXBhZExpc3Q7CisKK3ZvaWQgc2FtcGxlR2FtZXBhZHMoR2Ft
ZXBhZExpc3QqIGludG8pCit7CisgICAgV2ViR2FtZXBhZHMgZ2FtZXBhZHM7CisKKyAgICB3ZWJL
aXRQbGF0Zm9ybVN1cHBvcnQoKS0+c2FtcGxlR2FtZXBhZHMoZ2FtZXBhZHMpOworCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IFdlYktpdDo6V2ViR2FtZXBhZHM6Oml0ZW1zTGVuZ3RoQ2Fw
OyArK2kpIHsKKyAgICAgICAgV2ViR2FtZXBhZCYgd2ViR2FtZXBhZCA9IGdhbWVwYWRzLml0ZW1z
W2ldOworICAgICAgICBpZiAoaSA8IGdhbWVwYWRzLmxlbmd0aCAmJiB3ZWJHYW1lcGFkLmNvbm5l
Y3RlZCkgeworICAgICAgICAgICAgUmVmUHRyPEdhbWVwYWQ+IGdhbWVwYWQgPSBpbnRvLT5pdGVt
KGkpOworICAgICAgICAgICAgaWYgKCFnYW1lcGFkKQorICAgICAgICAgICAgICAgIGdhbWVwYWQg
PSBHYW1lcGFkOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGdhbWVwYWQtPmlkKHdlYkdhbWVwYWQu
aWQpOworICAgICAgICAgICAgZ2FtZXBhZC0+aW5kZXgoaSk7CisgICAgICAgICAgICBnYW1lcGFk
LT50aW1lc3RhbXAod2ViR2FtZXBhZC50aW1lc3RhbXApOworICAgICAgICAgICAgZ2FtZXBhZC0+
YXhlcyh3ZWJHYW1lcGFkLmF4ZXNMZW5ndGgsIHdlYkdhbWVwYWQuYXhlcyk7CisgICAgICAgICAg
ICBnYW1lcGFkLT5idXR0b25zKHdlYkdhbWVwYWQuYnV0dG9uc0xlbmd0aCwgd2ViR2FtZXBhZC5i
dXR0b25zKTsKKyAgICAgICAgICAgIGludG8tPnNldChpLCBnYW1lcGFkKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBpbnRvLT5zZXQoaSwgMCk7CisgICAgfQorfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQw
NzgyZmNmM2U4ZWQxMzdhZjA1YjZkNWVhYWM2NWNhMTJlZWEwNDAuLjljZDQyYjY5Y2YyMzBiMDli
ZTUxMWRlMWI5NjdhYTQ0N2ExNDk1YTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMS0xMS0xNiAgU2NvdHQgR3Jh
aGFtICA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkaW5nIGdhbWVwYWQgc3Vw
cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0
NTEKKworICAgICAgICBBZGQgaG9va3MgdG8gQ2hyb21pdW0gRHVtcFJlbmRlclRyZWUgdG8gc3Vw
cG9ydCBzZXR0aW5nIG1vY2sgZGF0YSBmb3IKKyAgICAgICAgcnVubmluZyBnYW1lcGFkIHRlc3Rz
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9HYW1lcGFkQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoR2FtZXBh
ZENvbnRyb2xsZXI6OkdhbWVwYWRDb250cm9sbGVyKToKKyAgICAgICAgKEdhbWVwYWRDb250cm9s
bGVyOjpiaW5kVG9KYXZhc2NyaXB0KToKKyAgICAgICAgKEdhbWVwYWRDb250cm9sbGVyOjpyZXNl
dCk6CisgICAgICAgIChHYW1lcGFkQ29udHJvbGxlcjo6Y29ubmVjdCk6CisgICAgICAgIChHYW1l
cGFkQ29udHJvbGxlcjo6ZGlzY29ubmVjdCk6CisgICAgICAgIChHYW1lcGFkQ29udHJvbGxlcjo6
c2V0SWQpOgorICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OnNldEJ1dHRvbkNvdW50KToKKyAg
ICAgICAgKEdhbWVwYWRDb250cm9sbGVyOjpzZXRCdXR0b25EYXRhKToKKyAgICAgICAgKEdhbWVw
YWRDb250cm9sbGVyOjpzZXRBeGlzQ291bnQpOgorICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6
OnNldEF4aXNEYXRhKToKKyAgICAgICAgKEdhbWVwYWRDb250cm9sbGVyOjpmYWxsYmFja0NhbGxi
YWNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9HYW1lcGFkQ29udHJvbGxl
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwu
Y3BwOgorICAgICAgICAoVGVzdFNoZWxsOjpUZXN0U2hlbGwpOgorICAgICAgICAoVGVzdFNoZWxs
OjpyZXNldFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKFRlc3RTaGVsbDo6YmluZEpTT2JqZWN0
c1RvV2luZG93KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwu
aDoKKyAgICAgICAgKFRlc3RTaGVsbDo6Z2FtZXBhZENvbnRyb2xsZXIpOgorCiAyMDExLTExLTE2
ICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAg
ICBbUXRdIEZpeCB1c2Ugb2YgY29uZmlnLnRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUuZ3lwaQppbmRleCAyMzViOTUzNzI2YmNlYWFiMTg1ZTVkNDgyOTVjZjEzMzk5YWYy
NzYzLi5iMTliZTIyNzJjNTU1Yzc5ZDI5OTcxNjA1MjRhYWY3MGNmMmU4ZjY4IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKQEAgLTE2LDYgKzE2LDggQEAKICAgICAg
ICAgICAgICdjaHJvbWl1bS9EdW1wUmVuZGVyVHJlZS5jcHAnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL0V2ZW50U2VuZGVyLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vRXZlbnRTZW5kZXIu
aCcsCisgICAgICAgICAgICAnY2hyb21pdW0vR2FtZXBhZENvbnRyb2xsZXIuY3BwJywKKyAgICAg
ICAgICAgICdjaHJvbWl1bS9HYW1lcGFkQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tTcGVsbENo
ZWNrLmNwcCcsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9HYW1l
cGFkQ29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9HYW1lcGFk
Q29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk3NGQzYmNkZTAyOGQ5ODU0NDUwZTZiZWU4MGVm
YmZjYjE3YmI0MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0dhbWVwYWRDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJHYW1lcGFkQ29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiVGVzdFNo
ZWxsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0dhbWVwYWRDb250cm9sbGVyOjpH
YW1lcGFkQ29udHJvbGxlcihUZXN0U2hlbGwqIHNoZWxsKQorICAgIDogbV9zaGVsbChzaGVsbCkK
K3sKKyAgICBiaW5kTWV0aG9kKCJjb25uZWN0IiwgJkdhbWVwYWRDb250cm9sbGVyOjpjb25uZWN0
KTsKKyAgICBiaW5kTWV0aG9kKCJkaXNjb25uZWN0IiwgJkdhbWVwYWRDb250cm9sbGVyOjpkaXNj
b25uZWN0KTsKKyAgICBiaW5kTWV0aG9kKCJzZXRJZCIsICZHYW1lcGFkQ29udHJvbGxlcjo6c2V0
SWQpOworICAgIGJpbmRNZXRob2QoInNldEJ1dHRvbkNvdW50IiwgJkdhbWVwYWRDb250cm9sbGVy
OjpzZXRCdXR0b25Db3VudCk7CisgICAgYmluZE1ldGhvZCgic2V0QnV0dG9uRGF0YSIsICZHYW1l
cGFkQ29udHJvbGxlcjo6c2V0QnV0dG9uRGF0YSk7CisgICAgYmluZE1ldGhvZCgic2V0QXhpc0Nv
dW50IiwgJkdhbWVwYWRDb250cm9sbGVyOjpzZXRBeGlzQ291bnQpOworICAgIGJpbmRNZXRob2Qo
InNldEF4aXNEYXRhIiwgJkdhbWVwYWRDb250cm9sbGVyOjpzZXRBeGlzRGF0YSk7CisKKyAgICBi
aW5kRmFsbGJhY2tNZXRob2QoJkdhbWVwYWRDb250cm9sbGVyOjpmYWxsYmFja0NhbGxiYWNrKTsK
KworICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OmJpbmRUb0phdmFz
Y3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJTdHJpbmcmIGNsYXNzbmFtZSkKK3sKKyAg
ICBDcHBCb3VuZENsYXNzOjpiaW5kVG9KYXZhc2NyaXB0KGZyYW1lLCBjbGFzc25hbWUpOworfQor
Cit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpyZXNldCgpCit7CisgICAgbWVtc2V0KCZpbnRlcm5h
bERhdGEsIDAsIHNpemVvZihpbnRlcm5hbERhdGEpKTsKK30KKwordm9pZCBHYW1lcGFkQ29udHJv
bGxlcjo6Y29ubmVjdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3MsIENwcFZhcmlhbnQqIHJl
c3VsdCkKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgPCAxKSB7CisgICAgICAgIHByaW50ZigiSW52
YWxpZCBhcmdzIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW50IGluZGV4ID0gYXJn
c1swXS50b0ludDMyKCk7CisgICAgaW50ZXJuYWxEYXRhLml0ZW1zW2luZGV4XS5jb25uZWN0ZWQg
PSB0cnVlOworICAgIGludGVybmFsRGF0YS5sZW5ndGggPSAwOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBXZWJLaXQ6OldlYkdhbWVwYWRzOjppdGVtc0xlbmd0aENhcDsgKytpKQorICAg
ICAgICBpZiAoaW50ZXJuYWxEYXRhLml0ZW1zW2ldLmNvbm5lY3RlZCkKKyAgICAgICAgICAgIGlu
dGVybmFsRGF0YS5sZW5ndGggPSBpICsgMTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6U2V0R2FtZXBh
ZERhdGEoaW50ZXJuYWxEYXRhKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBH
YW1lcGFkQ29udHJvbGxlcjo6ZGlzY29ubmVjdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Ms
IENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgPCAxKSB7CisgICAg
ICAgIHByaW50ZigiSW52YWxpZCBhcmdzIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aW50IGluZGV4ID0gYXJnc1swXS50b0ludDMyKCk7CisgICAgaW50ZXJuYWxEYXRhLml0ZW1zW2lu
ZGV4XS5jb25uZWN0ZWQgPSBmYWxzZTsKKyAgICBpbnRlcm5hbERhdGEubGVuZ3RoID0gMDsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV2ViS2l0OjpXZWJHYW1lcGFkczo6aXRlbXNMZW5n
dGhDYXA7ICsraSkKKyAgICAgICAgaWYgKGludGVybmFsRGF0YS5pdGVtc1tpXS5jb25uZWN0ZWQp
CisgICAgICAgICAgICBpbnRlcm5hbERhdGEubGVuZ3RoID0gaSArIDE7CisgICAgd2Via2l0X3N1
cHBvcnQ6OlNldEdhbWVwYWREYXRhKGludGVybmFsRGF0YSk7CisgICAgcmVzdWx0LT5zZXROdWxs
KCk7Cit9CisKK3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OnNldElkKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmdzLnNpemUoKSA8
IDIpIHsKKyAgICAgICAgcHJpbnRmKCJJbnZhbGlkIGFyZ3MiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpbnQgaW5kZXggPSBhcmdzWzBdLnRvSW50MzIoKTsKKyAgICBzdGQ6OnN0cmlu
ZyBzcmMgPSBhcmdzWzFdLnRvU3RyaW5nKCk7CisgICAgY29uc3QgY2hhciogcCA9IHNyYy5jX3N0
cigpOworICAgIG1lbXNldChpbnRlcm5hbERhdGEuaXRlbXNbaW5kZXhdLmlkLCAwLCBzaXplb2Yo
aW50ZXJuYWxEYXRhLml0ZW1zW2luZGV4XS5pZCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
ICpwICYmIGkgPCBXZWJLaXQ6OldlYkdhbWVwYWQ6OmlkTGVuZ3RoQ2FwIC0gMTsgKytpKQorICAg
ICAgICBpbnRlcm5hbERhdGEuaXRlbXNbaW5kZXhdLmlkW2ldID0gKnArKzsKKyAgICB3ZWJraXRf
c3VwcG9ydDo6U2V0R2FtZXBhZERhdGEoaW50ZXJuYWxEYXRhKTsKKyAgICByZXN1bHQtPnNldE51
bGwoKTsKK30KKwordm9pZCBHYW1lcGFkQ29udHJvbGxlcjo6c2V0QnV0dG9uQ291bnQoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmdzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFy
Z3Muc2l6ZSgpIDwgMikgeworICAgICAgICBwcmludGYoIkludmFsaWQgYXJncyIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGludCBpbmRleCA9IGFyZ3NbMF0udG9JbnQzMigpOworICAg
IGludCBidXR0b25zID0gYXJnc1sxXS50b0ludDMyKCk7CisgICAgaW50ZXJuYWxEYXRhLml0ZW1z
W2luZGV4XS5idXR0b25zTGVuZ3RoID0gYnV0dG9uczsKKyAgICB3ZWJraXRfc3VwcG9ydDo6U2V0
R2FtZXBhZERhdGEoaW50ZXJuYWxEYXRhKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwor
dm9pZCBHYW1lcGFkQ29udHJvbGxlcjo6c2V0QnV0dG9uRGF0YShjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3MsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgPCAz
KSB7CisgICAgICAgIHByaW50ZigiSW52YWxpZCBhcmdzIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaW50IGluZGV4ID0gYXJnc1swXS50b0ludDMyKCk7CisgICAgaW50IGJ1dHRvbiA9
IGFyZ3NbMV0udG9JbnQzMigpOworICAgIGRvdWJsZSBkYXRhID0gYXJnc1syXS50b0RvdWJsZSgp
OworICAgIGludGVybmFsRGF0YS5pdGVtc1tpbmRleF0uYnV0dG9uc1tidXR0b25dID0gZGF0YTsK
KyAgICB3ZWJraXRfc3VwcG9ydDo6U2V0R2FtZXBhZERhdGEoaW50ZXJuYWxEYXRhKTsKKyAgICBy
ZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBHYW1lcGFkQ29udHJvbGxlcjo6c2V0QXhpc0Nv
dW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0KQorewor
ICAgIGlmIChhcmdzLnNpemUoKSA8IDIpIHsKKyAgICAgICAgcHJpbnRmKCJJbnZhbGlkIGFyZ3Mi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbnQgaW5kZXggPSBhcmdzWzBdLnRvSW50
MzIoKTsKKyAgICBpbnQgYXhlcyA9IGFyZ3NbMV0udG9JbnQzMigpOworICAgIGludGVybmFsRGF0
YS5pdGVtc1tpbmRleF0uYXhlc0xlbmd0aCA9IGF4ZXM7CisgICAgd2Via2l0X3N1cHBvcnQ6OlNl
dEdhbWVwYWREYXRhKGludGVybmFsRGF0YSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisK
K3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OnNldEF4aXNEYXRhKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmdzLnNpemUoKSA8IDMp
IHsKKyAgICAgICAgcHJpbnRmKCJJbnZhbGlkIGFyZ3MiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpbnQgaW5kZXggPSBhcmdzWzBdLnRvSW50MzIoKTsKKyAgICBpbnQgYXhpcyA9IGFy
Z3NbMV0udG9JbnQzMigpOworICAgIGRvdWJsZSBkYXRhID0gYXJnc1syXS50b0RvdWJsZSgpOwor
ICAgIGludGVybmFsRGF0YS5pdGVtc1tpbmRleF0uYXhlc1theGlzXSA9IGRhdGE7CisgICAgd2Vi
a2l0X3N1cHBvcnQ6OlNldEdhbWVwYWREYXRhKGludGVybmFsRGF0YSk7CisgICAgcmVzdWx0LT5z
ZXROdWxsKCk7Cit9CisKK3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OmZhbGxiYWNrQ2FsbGJhY2so
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHByaW50
ZigiQ09OU09MRSBNRVNTQUdFOiBKYXZhU2NyaXB0IEVSUk9SOiB1bmtub3duIG1ldGhvZCBjYWxs
ZWQgb24gIgorICAgICAgICAgICAiR2FtZXBhZENvbnRyb2xsZXJcbiIpOworICAgIHJlc3VsdC0+
c2V0TnVsbCgpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
R2FtZXBhZENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0dhbWVw
YWRDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZlZWRiMDVkOGQ1MmYzMzFjYmJlNzNmMmFmMjJi
MTQ1OWMwZGQ0MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0dhbWVwYWRDb250cm9sbGVyLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2FtZXBhZENv
bnRyb2xsZXJfaAorI2RlZmluZSBHYW1lcGFkQ29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJDcHBC
b3VuZENsYXNzLmgiCisjaW5jbHVkZSAiV2ViR2FtZXBhZHMuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CitjbGFzcyBXZWJHYW1lcGFkczsKK2NsYXNzIFdlYkZyYW1lOworfQorCitjbGFzcyBUZXN0
U2hlbGw7CisKK2NsYXNzIEdhbWVwYWRDb250cm9sbGVyIDogcHVibGljIENwcEJvdW5kQ2xhc3Mg
eworcHVibGljOgorICAgIGV4cGxpY2l0IEdhbWVwYWRDb250cm9sbGVyKFRlc3RTaGVsbCopOwor
CisgICAgdm9pZCBiaW5kVG9KYXZhc2NyaXB0KFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJL
aXQ6OldlYlN0cmluZyYgY2xhc3NuYW1lKTsKKyAgICB2b2lkIHJlc2V0KCk7CisKK3ByaXZhdGU6
CisgICAgLy8gQm91bmQgbWV0aG9kcyBhbmQgcHJvcGVydGllcworICAgIHZvaWQgY29ubmVjdChj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBkaXNjb25uZWN0
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNldElkKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNldEJ1dHRvbkNv
dW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNldEJ1
dHRvbkRhdGEoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQg
c2V0QXhpc0NvdW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2
b2lkIHNldEF4aXNEYXRhKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAg
ICB2b2lkIGZhbGxiYWNrQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOworCisgICAgVGVzdFNoZWxsKiBtX3NoZWxsOworCisgICAgV2ViS2l0OjpXZWJHYW1lcGFk
cyBpbnRlcm5hbERhdGE7Cit9OworCisjZW5kaWYgLy8gR2FtZXBhZENvbnRyb2xsZXJfaApkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKaW5kZXggNDk0YWY0MDlj
OWU1MjQwNzhmMTc3ZWZiYTU5ZjYxMjU3YmRlNDIyYS4uZTlkODRkZDZjZDM4MmUwNDExZGYyYjU5
ZWJiYmNmMGUwNGYyZTcwYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuY3BwCkBAIC0xMjIsOSArMTIyLDExIEBAIFRlc3RTaGVsbDo6VGVzdFNoZWxsKGJvb2wg
dGVzdFNoZWxsTW9kZSkKICAgICBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZU1lZGlhU3RyZWFt
KHRydWUpOwogICAgIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlV2ViQXVkaW8odHJ1ZSk7IAog
ICAgIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlVmlkZW9UcmFjayh0cnVlKTsKKyAgICBXZWJS
dW50aW1lRmVhdHVyZXM6OmVuYWJsZUdhbWVwYWQodHJ1ZSk7CiAKICAgICBtX3dlYlBlcm1pc3Np
b25zID0gYWRvcHRQdHIobmV3IFdlYlBlcm1pc3Npb25zKHRoaXMpKTsKICAgICBtX2FjY2Vzc2li
aWxpdHlDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKHRo
aXMpKTsKKyAgICBtX2dhbWVwYWRDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IEdhbWVwYWRDb250
cm9sbGVyKHRoaXMpKTsKICAgICBtX2xheW91dFRlc3RDb250cm9sbGVyID0gYWRvcHRQdHIobmV3
IExheW91dFRlc3RDb250cm9sbGVyKHRoaXMpKTsKICAgICBtX2V2ZW50U2VuZGVyID0gYWRvcHRQ
dHIobmV3IEV2ZW50U2VuZGVyKHRoaXMpKTsKICAgICBtX3BsYWluVGV4dENvbnRyb2xsZXIgPSBh
ZG9wdFB0cihuZXcgUGxhaW5UZXh0Q29udHJvbGxlcigpKTsKQEAgLTI2Miw2ICsyNjQsNyBAQCB2
b2lkIFRlc3RTaGVsbDo6cmVzZXRUZXN0Q29udHJvbGxlcigpCiAgICAgcmVzZXRXZWJTZXR0aW5n
cygqd2ViVmlldygpKTsKICAgICBtX3dlYlBlcm1pc3Npb25zLT5yZXNldCgpOwogICAgIG1fYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXItPnJlc2V0KCk7CisgICAgbV9nYW1lcGFkQ29udHJvbGxlci0+
cmVzZXQoKTsKICAgICBtX2xheW91dFRlc3RDb250cm9sbGVyLT5yZXNldCgpOwogICAgIG1fZXZl
bnRTZW5kZXItPnJlc2V0KCk7CiAgICAgbV93ZWJWaWV3SG9zdC0+cmVzZXQoKTsKQEAgLTY2NSw2
ICs2NjgsNyBAQCB2b2lkIFRlc3RTaGVsbDo6YmluZEpTT2JqZWN0c1RvV2luZG93KFdlYkZyYW1l
KiBmcmFtZSkKIHsKICAgICBXZWJUZXN0aW5nU3VwcG9ydDo6aW5qZWN0SW50ZXJuYWxzT2JqZWN0
KGZyYW1lKTsKICAgICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLT5iaW5kVG9KYXZhc2NyaXB0
KGZyYW1lLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlciIpKTsK
KyAgICBtX2dhbWVwYWRDb250cm9sbGVyLT5iaW5kVG9KYXZhc2NyaXB0KGZyYW1lLCBXZWJTdHJp
bmc6OmZyb21VVEY4KCJnYW1lcGFkQ29udHJvbGxlciIpKTsKICAgICBtX2xheW91dFRlc3RDb250
cm9sbGVyLT5iaW5kVG9KYXZhc2NyaXB0KGZyYW1lLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJsYXlv
dXRUZXN0Q29udHJvbGxlciIpKTsKICAgICBtX2V2ZW50U2VuZGVyLT5iaW5kVG9KYXZhc2NyaXB0
KGZyYW1lLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJldmVudFNlbmRlciIpKTsKICAgICBtX3BsYWlu
VGV4dENvbnRyb2xsZXItPmJpbmRUb0phdmFzY3JpcHQoZnJhbWUsIFdlYlN0cmluZzo6ZnJvbVVU
RjgoInBsYWluVGV4dCIpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RTaGVsbC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxs
LmgKaW5kZXggYjE5NGViMGIyMzk2MzBlMTIzZGZiNDMxMmQwY2Y3NDEzNzM4NjIxMS4uMWY2NDhi
MTVlZmI0NDAyNjFjMGU4MzgyMzZlY2YzNmUyYzNmMjI0NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRTZW5kZXIuaCIKKyNpbmNs
dWRlICJHYW1lcGFkQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCiAjaW5jbHVkZSAiUGxhaW5U
ZXh0Q29udHJvbGxlci5oIgpAQCAtOTEsNiArOTIsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VGVz
dENvbnRyb2xsZXIqIGxheW91dFRlc3RDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXlv
dXRUZXN0Q29udHJvbGxlci5nZXQoKTsgfQogICAgIEV2ZW50U2VuZGVyKiBldmVudFNlbmRlcigp
IGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRTZW5kZXIuZ2V0KCk7IH0KICAgICBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlciogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX2Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmdldCgpOyB9CisgICAgR2FtZXBhZENvbnRyb2xsZXIqIGdh
bWVwYWRDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9nYW1lcGFkQ29udHJvbGxlci5nZXQo
KTsgfQogICAgIE5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25QcmVzZW50ZXIuZ2V0KCk7IH0KICAgICBUZXN0
RXZlbnRQcmludGVyKiBwcmludGVyKCkgY29uc3QgeyByZXR1cm4gbV9wcmludGVyLmdldCgpOyB9
CiAKQEAgLTIwNSw2ICsyMDcsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxEUlREZXZUb29sc0Fn
ZW50PiBtX2RydERldlRvb2xzQWdlbnQ7CiAgICAgT3duUHRyPERSVERldlRvb2xzQ2xpZW50PiBt
X2RydERldlRvb2xzQ2xpZW50OwogICAgIE93blB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4g
bV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsKKyAgICBPd25QdHI8R2FtZXBhZENvbnRyb2xsZXI+
IG1fZ2FtZXBhZENvbnRyb2xsZXI7CiAgICAgT3duUHRyPEV2ZW50U2VuZGVyPiBtX2V2ZW50U2Vu
ZGVyOwogICAgIE93blB0cjxMYXlvdXRUZXN0Q29udHJvbGxlcj4gbV9sYXlvdXRUZXN0Q29udHJv
bGxlcjsKICAgICBPd25QdHI8UGxhaW5UZXh0Q29udHJvbGxlcj4gbV9wbGFpblRleHRDb250cm9s
bGVyOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDc4ZDZiZDU1NmZlZDk0ZWY1ZjE3NTRhZWMyODIxYTE5N2UxYzI1ODAuLjMy
MmU2MDRhOGZlN2NmMmE5MTIxOWRhZjFhMTYzOTc3ZTMyMjFjMzYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MiBAQAorMjAxMS0xMS0xNiAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgQWRkaW5nIGdhbWVwYWQgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0NTEKKworICAgICAgICBCYXNpYyB0ZXN0cyBvZiBn
YW1lcGFkIGZ1bmN0aW9uYWxpdHkuIFJlYmFzZSBvbmUgdGVzdCB0aGF0IGVudW1lcmF0ZXMKKyAg
ICAgICAgdGhlIG5hdmlnYXRvciBvYmplY3QuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBnYW1lcGFkL2dhbWVwYWQtYXBpLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZ2FtZXBhZC9nYW1lcGFkLWFwaS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBnYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBnYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZ2FtZXBhZC9nYW1lcGFkLXRlc3QuanM6IEFkZGVkLgorICAgICAgICAobG9nQ29u
c29sZSk6CisgICAgICAgICh0ZXN0RXhwZWN0ZWQpOgorICAgICAgICAocmVwb3J0RXhwZWN0ZWQp
OgorICAgICAgICAod2FpdEZvckV2ZW50QW5kRW5kKToKKyAgICAgICAgKHdhaXRGb3JFdmVudC5f
ZXZlbnRDYWxsYmFjayk6CisgICAgICAgICh3YWl0Rm9yRXZlbnQpOgorICAgICAgICAod2FpdEZv
ckV2ZW50QW5kVGVzdC5fZXZlbnRDYWxsYmFjayk6CisgICAgICAgICh3YWl0Rm9yRXZlbnRBbmRU
ZXN0KToKKyAgICAgICAgKHdhaXRGb3JFdmVudFRlc3RBbmRFbmQpOgorICAgICAgICAoZW5kVGVz
dCk6CisgICAgICAgIChsb2dSZXN1bHQpOgorICAgICAgICAoY29uc29sZVdyaXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jh
c2gtZXhwZWN0ZWQudHh0OgorCiAyMDExLTExLTE2ICBGbG9yaW4gTWFsaXRhICA8Zm1hbGl0YUBn
b29nbGUuY29tPgogCiAgICAgICAgIFJlY2VudCBzdmcvZm9yZWlnbk9iamVjdCB0ZXN0cyBmYWls
aW5nIG9uIE1hYyAmIFdpbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFk
LWFwaS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtYXBpLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zZjhmNDBhZjM2NDJmNThlMGI3NGE0NWZiY2UyMjkxZThkOTU0
MTBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLWFwaS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitFWFBFQ1RFRCAobmF2aWdhdG9yLmdhbWVwYWRz
ICE9PSAndW5kZWZpbmVkJykgT0sKK0VORCBPRiBURVNUCitNYWtlIHN1cmUgdGhlIG1haW4gcG9s
bGluZyBhY2Nlc3MgcG9pbnQgZXhpc3RzIG9uIG5hdmlnYXRvci4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1hcGkuaHRtbCBiL0xheW91dFRlc3RzL2dhbWVwYWQvZ2Ft
ZXBhZC1hcGkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjI3M2FmYzAwMTFmYWYzOTdhNzlhZDNiOTkxZWRh
OTAwZDU1NDcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFk
LWFwaS5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSJnYW1lcGFkLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICB0ZXN0RXhw
ZWN0ZWQoIm5hdmlnYXRvci5nYW1lcGFkcyIsIHVuZGVmaW5lZCwgIiE9PSIpOworICAgIGVuZFRl
c3QoKTsKKzwvc2NyaXB0PgorPHA+TWFrZSBzdXJlIHRoZSBtYWluIHBvbGxpbmcgYWNjZXNzIHBv
aW50IGV4aXN0cyBvbiBuYXZpZ2F0b3IuPC9wPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXBvbGxpbmctYWNjZXNzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTAyNjFlODVmNjE4ZmE5ODc1NzdkZTA5YTkxOGUyNmNkMWU2MzUyYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorRVhQRUNURUQgKG5hdmlnYXRvci5nYW1lcGFkcy5s
ZW5ndGggPT0gJzQnKSBPSworRVhQRUNURUQgKG5hdmlnYXRvci5nYW1lcGFkc1swXSA9PSAnbnVs
bCcpIE9LCitFWFBFQ1RFRCAobmF2aWdhdG9yLmdhbWVwYWRzWzFdID09ICdudWxsJykgT0sKK0VY
UEVDVEVEIChuYXZpZ2F0b3IuZ2FtZXBhZHNbMl0gPT0gJ251bGwnKSBPSworRVhQRUNURUQgKG5h
dmlnYXRvci5nYW1lcGFkc1szXSA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAobmF2aWdhdG9yLmdh
bWVwYWRzWzBdICE9ICdudWxsJykgT0sKK0VYUEVDVEVEIChuYXZpZ2F0b3IuZ2FtZXBhZHNbMF0g
PT0gJ251bGwnKSBPSworRVhQRUNURUQgKG5hdmlnYXRvci5nYW1lcGFkc1swXS5pZCA9PSAnTW9j
a1N0aWNrIDMwMDAnKSBPSworRVhQRUNURUQgKG5hdmlnYXRvci5nYW1lcGFkc1swXS5idXR0b25z
Lmxlbmd0aCA9PSAnMicpIE9LCitFWFBFQ1RFRCAobmF2aWdhdG9yLmdhbWVwYWRzWzBdLmF4ZXMu
bGVuZ3RoID09ICcyJykgT0sKK0VYUEVDVEVEIChuYXZpZ2F0b3IuZ2FtZXBhZHNbMF0uYnV0dG9u
c1swXSA9PSAnMScpIE9LCitFWFBFQ1RFRCAobmF2aWdhdG9yLmdhbWVwYWRzWzBdLmJ1dHRvbnNb
MV0gPT0gJzAnKSBPSworRVhQRUNURUQgKG5hdmlnYXRvci5nYW1lcGFkc1swXS5heGVzLmxlbmd0
aCA9PSAnMicpIE9LCitFWFBFQ1RFRCAobmF2aWdhdG9yLmdhbWVwYWRzWzBdLmF4ZXNbMF0gPT0g
JzAuNScpIE9LCitFWFBFQ1RFRCAobmF2aWdhdG9yLmdhbWVwYWRzWzBdLmF4ZXNbMV0gPT0gJy0x
JykgT0sKK0VORCBPRiBURVNUCitUeXBpY2FsIHBvbGxpbmcgYWNjZXNzIHRvIGdhbWVwYWRzIGNv
bnRlbnRzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXBvbGxpbmct
YWNjZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3Mu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45OTJiNWZhYzg5OGYxMGEyMmJmMmVlOGFhMDJmZDI2MGU4ZWZjOWY1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXBvbGxpbmct
YWNjZXNzLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSJnYW1lcGFkLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBpZiAo
d2luZG93LmdhbWVwYWRDb250cm9sbGVyKQorICAgIHsKKyAgICAgICAgLy8gc3RhcnQgYWxsIGRp
c2Nvbm5lY3RlZAorICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5kaXNjb25uZWN0KDApOworICAg
ICAgICBnYW1lcGFkQ29udHJvbGxlci5kaXNjb25uZWN0KDEpOworICAgICAgICBnYW1lcGFkQ29u
dHJvbGxlci5kaXNjb25uZWN0KDIpOworICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5kaXNjb25u
ZWN0KDMpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoIm5hdmlnYXRvci5nYW1lcGFkcy5sZW5ndGgi
LCA0KTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJuYXZpZ2F0b3IuZ2FtZXBhZHNbMF0iLCBudWxs
KTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJuYXZpZ2F0b3IuZ2FtZXBhZHNbMV0iLCBudWxsKTsK
KyAgICAgICAgdGVzdEV4cGVjdGVkKCJuYXZpZ2F0b3IuZ2FtZXBhZHNbMl0iLCBudWxsKTsKKyAg
ICAgICAgdGVzdEV4cGVjdGVkKCJuYXZpZ2F0b3IuZ2FtZXBhZHNbM10iLCBudWxsKTsKKworICAg
ICAgICAvLyBjb25uZWN0IGFuZCBkaXNjb25uZWN0CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVy
LmNvbm5lY3QoMCk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgibmF2aWdhdG9yLmdhbWVwYWRzWzBd
IiwgbnVsbCwgIiE9Iik7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLmRpc2Nvbm5lY3QoMCk7
CisgICAgICAgIHRlc3RFeHBlY3RlZCgibmF2aWdhdG9yLmdhbWVwYWRzWzBdIiwgbnVsbCk7CisK
KyAgICAgICAgLy8gY29ubmVjdCBhZ2FpbiwgYW5kIGNoZWNrIHN0YW5kYXJkIGFjY2VzcworICAg
ICAgICBnYW1lcGFkQ29udHJvbGxlci5jb25uZWN0KDApOworICAgICAgICBnYW1lcGFkQ29udHJv
bGxlci5zZXRJZCgwLCAiTW9ja1N0aWNrIDMwMDAiKTsKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xs
ZXIuc2V0QnV0dG9uQ291bnQoMCwgMik7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLnNldEF4
aXNDb3VudCgwLCAyKTsKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIuc2V0QnV0dG9uRGF0YSgw
LCAwLCAxKTsKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIuc2V0QnV0dG9uRGF0YSgwLCAxLCAw
KTsKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIuc2V0QXhpc0RhdGEoMCwgMCwgLjUpOworICAg
ICAgICBnYW1lcGFkQ29udHJvbGxlci5zZXRBeGlzRGF0YSgwLCAxLCAtMS4wKTsKKyAgICAgICAg
dGVzdEV4cGVjdGVkKCJuYXZpZ2F0b3IuZ2FtZXBhZHNbMF0uaWQiLCAiTW9ja1N0aWNrIDMwMDAi
KTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJuYXZpZ2F0b3IuZ2FtZXBhZHNbMF0uYnV0dG9ucy5s
ZW5ndGgiLCAyKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJuYXZpZ2F0b3IuZ2FtZXBhZHNbMF0u
YXhlcy5sZW5ndGgiLCAyKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJuYXZpZ2F0b3IuZ2FtZXBh
ZHNbMF0uYnV0dG9uc1swXSIsIDEuMCk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgibmF2aWdhdG9y
LmdhbWVwYWRzWzBdLmJ1dHRvbnNbMV0iLCAwLjApOworICAgICAgICB0ZXN0RXhwZWN0ZWQoIm5h
dmlnYXRvci5nYW1lcGFkc1swXS5heGVzLmxlbmd0aCIsIDIpOworICAgICAgICB0ZXN0RXhwZWN0
ZWQoIm5hdmlnYXRvci5nYW1lcGFkc1swXS5heGVzWzBdIiwgMC41KTsKKyAgICAgICAgdGVzdEV4
cGVjdGVkKCJuYXZpZ2F0b3IuZ2FtZXBhZHNbMF0uYXhlc1sxXSIsIC0xLjApOworCisgICAgICAg
IGVuZFRlc3QoKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgY29uc29sZS5sb2co
IkZBSUw6IG5vIGdhbWVwYWRDb250cm9sbGVyIGF2YWlsYWJsZS4iKQorICAgIH0KKzwvc2NyaXB0
PgorPHA+VHlwaWNhbCBwb2xsaW5nIGFjY2VzcyB0byBnYW1lcGFkcyBjb250ZW50cy48L3A+Cis8
L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtdGVzdC5qcyBi
L0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC10ZXN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyMDFhOTcx
ZjY1NGNiZjE0MDVlZThiZGVmMjEwZTFmOTBjNDYzYjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtdGVzdC5qcwpAQCAtMCwwICsxLDEyNiBAQAordmFyIGNv
bnNvbGUgPSBudWxsOwordmFyIHByaW50RnVsbFRlc3REZXRhaWxzID0gdHJ1ZTsgLy8gVGhpcyBp
cyBvcHRpb25hbHkgc3dpdGNoZWQgb2YgYnkgdGVzdCB3aG9zZSB0ZXN0ZWQgdmFsdWVzIGNhbiBk
aWZmZXIuIChzZWUgZGlzYWJsZUZ1bGxUZXN0RGV0YWlsc1ByaW50aW5nKCkpCisKK2xvZ0NvbnNv
bGUoKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZ0NvbnNvbGUoKQoreworICAgIGlmICghY29u
c29sZSAmJiBkb2N1bWVudC5ib2R5KSB7CisgICAgICAgIGNvbnNvbGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25z
b2xlKTsKKyAgICB9CisgICAgcmV0dXJuIGNvbnNvbGU7Cit9CisKK2Z1bmN0aW9uIHRlc3RFeHBl
Y3RlZCh0ZXN0RnVuY1N0cmluZywgZXhwZWN0ZWQsIGNvbXBhcmlzb24pCit7CisgICAgdHJ5IHsK
KyAgICAgICAgdmFyIG9ic2VydmVkID0gZXZhbCh0ZXN0RnVuY1N0cmluZyk7CisgICAgfSBjYXRj
aCAoZXgpIHsKKyAgICAgICAgY29uc29sZVdyaXRlKGV4KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBpZiAoY29tcGFyaXNvbiA9PT0gdW5kZWZpbmVkKQorICAgICAgICBjb21w
YXJpc29uID0gJz09JzsKKworICAgIHZhciBzdWNjZXNzID0gZmFsc2U7CisgICAgc3dpdGNoIChj
b21wYXJpc29uKQorICAgIHsKKyAgICAgICAgY2FzZSAnPCc6ICBzdWNjZXNzID0gb2JzZXJ2ZWQg
PCAgZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc8PSc6IHN1Y2Nlc3MgPSBvYnNlcnZl
ZCA8PSBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJz4nOiAgc3VjY2VzcyA9IG9ic2Vy
dmVkID4gIGV4cGVjdGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAnPj0nOiBzdWNjZXNzID0gb2Jz
ZXJ2ZWQgPj0gZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICchPSc6IHN1Y2Nlc3MgPSBv
YnNlcnZlZCAhPSBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJyE9PSc6IHN1Y2Nlc3Mg
PSBvYnNlcnZlZCAhPT0gZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc9PSc6IHN1Y2Nl
c3MgPSBvYnNlcnZlZCA9PSBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJz09PSc6IHN1
Y2Nlc3MgPSBvYnNlcnZlZCA9PT0gZXhwZWN0ZWQ7IGJyZWFrOworICAgIH0KKyAgICAKKyAgICBy
ZXBvcnRFeHBlY3RlZChzdWNjZXNzLCB0ZXN0RnVuY1N0cmluZywgY29tcGFyaXNvbiwgZXhwZWN0
ZWQsIG9ic2VydmVkKQorfQorCit2YXIgdGVzdE51bWJlciA9IDA7CisKK2Z1bmN0aW9uIHJlcG9y
dEV4cGVjdGVkKHN1Y2Nlc3MsIHRlc3RGdW5jU3RyaW5nLCBjb21wYXJpc29uLCBleHBlY3RlZCwg
b2JzZXJ2ZWQpCit7CisgICAgdGVzdE51bWJlcisrOworCisgICAgdmFyIG1zZyA9ICJUZXN0ICIg
KyB0ZXN0TnVtYmVyOworCisgICAgaWYgKHByaW50RnVsbFRlc3REZXRhaWxzIHx8ICFzdWNjZXNz
KQorICAgICAgICBtc2cgPSAiRVhQRUNURUQgKDxlbT4iICsgdGVzdEZ1bmNTdHJpbmcgKyAiIDwv
ZW0+IiArIGNvbXBhcmlzb24gKyAiICc8ZW0+IiArIGV4cGVjdGVkICsgIjwvZW0+JykiOworCisg
ICAgaWYgKCFzdWNjZXNzKQorICAgICAgICBtc2cgKz0gICIsIE9CU0VSVkVEICc8ZW0+IiArIG9i
c2VydmVkICsgIjwvZW0+JyI7CisKKyAgICBsb2dSZXN1bHQoc3VjY2VzcywgbXNnKTsKK30KKwor
ZnVuY3Rpb24gd2FpdEZvckV2ZW50QW5kRW5kKGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuY1N0cmlu
ZykKK3sKKyAgICB3YWl0Rm9yRXZlbnQoZWxlbWVudCwgZXZlbnROYW1lLCBmdW5jU3RyaW5nLCB0
cnVlKQorfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnQoZWxlbWVudCwgZXZlbnROYW1lLCBmdW5j
LCBlbmRpdCkKK3sKKyAgICBmdW5jdGlvbiBfZXZlbnRDYWxsYmFjayhldmVudCkKKyAgICB7Cisg
ICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoIiArIGV2ZW50TmFtZSArICIpIik7CisKKyAgICAg
ICAgaWYgKGZ1bmMpCisgICAgICAgICAgICBmdW5jKGV2ZW50KTsKKyAgICAgICAgCisgICAgICAg
IGlmIChlbmRpdCkKKyAgICAgICAgICAgIGVuZFRlc3QoKTsgICAgCisgICAgfQorCisgICAgZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgX2V2ZW50Q2FsbGJhY2spOworfQorCitm
dW5jdGlvbiB3YWl0Rm9yRXZlbnRBbmRUZXN0KGVsZW1lbnQsIGV2ZW50TmFtZSwgdGVzdEZ1bmNT
dHJpbmcsIGVuZGl0KQoreworICAgIGZ1bmN0aW9uIF9ldmVudENhbGxiYWNrKGV2ZW50KQorICAg
IHsKKyAgICAgICAgbG9nUmVzdWx0KGV2YWwodGVzdEZ1bmNTdHJpbmcpLCAiRVZFTlQoIiArIGV2
ZW50TmFtZSArICIpIFRFU1QoIiArIHRlc3RGdW5jU3RyaW5nICsgIikiKTsKKyAgICAgICAgaWYg
KGVuZGl0KQorICAgICAgICAgICAgZW5kVGVzdCgpOyAgICAKKyAgICB9CisKKyAgICBlbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxsYmFjayk7Cit9CisKK2Z1bmN0
aW9uIHdhaXRGb3JFdmVudFRlc3RBbmRFbmQoZWxlbWVudCwgZXZlbnROYW1lLCB0ZXN0RnVuY1N0
cmluZykKK3sKKyAgICB3YWl0Rm9yRXZlbnRBbmRUZXN0KGVsZW1lbnQsIGV2ZW50TmFtZSwgdGVz
dEZ1bmNTdHJpbmcsIHRydWUpOworfQorICAKK3ZhciB0ZXN0RW5kZWQgPSBmYWxzZTsKKworZnVu
Y3Rpb24gZW5kVGVzdCgpCit7CisgICAgY29uc29sZVdyaXRlKCJFTkQgT0YgVEVTVCIpOworICAg
IHRlc3RFbmRlZCA9IHRydWU7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyAgICAgCit9CisKK2Z1
bmN0aW9uIGxvZ1Jlc3VsdChzdWNjZXNzLCB0ZXh0KQoreworICAgIGlmIChzdWNjZXNzKQorICAg
ICAgICBjb25zb2xlV3JpdGUodGV4dCArICIgPHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz5PSzwv
c3Bhbj4iKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnNvbGVXcml0ZSh0ZXh0ICsgIiA8c3BhbiBz
dHlsZT0nY29sb3I6cmVkJz5GQUlMPC9zcGFuPiIpOworfQorCitmdW5jdGlvbiBjb25zb2xlV3Jp
dGUodGV4dCkKK3sKKyAgICBpZiAodGVzdEVuZGVkKQorICAgICAgICByZXR1cm47CisgICAgbG9n
Q29uc29sZSgpLmlubmVySFRNTCArPSB0ZXh0ICsgIjxicj4iOworfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5v
LWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qv
ZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKaW5kZXggNzU0MjVh
MWY3OGEzOTgxOGMzZDE1NTE4M2MyMWNhMDdjNWNmN2I4Zi4uNWNkYTRkYWNlOWY4Y2UyM2E4ZTE2
YTU5NDM5ODcwOTlkMjIzYmYxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0
YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC00LDYgKzQsNyBAQCBuYXZpZ2F0b3IuYXBw
Q29kZU5hbWUgaXMgT0sKIG5hdmlnYXRvci5hcHBOYW1lIGlzIE9LCiBuYXZpZ2F0b3IuYXBwVmVy
c2lvbiBpcyBPSwogbmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQgaXMgT0sKK25hdmlnYXRvci5nYW1l
cGFkcyBpcyBPSwogbmF2aWdhdG9yLmdldFN0b3JhZ2VVcGRhdGVzKCkgaXMgT0sKIG5hdmlnYXRv
ci5qYXZhRW5hYmxlZCgpIGlzIE9LCiBuYXZpZ2F0b3IubGFuZ3VhZ2UgaXMgT0sKQEAgLTIxLDYg
KzIyLDcgQEAgbmF2aWdhdG9yLmFwcENvZGVOYW1lIGlzIE9LCiBuYXZpZ2F0b3IuYXBwTmFtZSBp
cyBPSwogbmF2aWdhdG9yLmFwcFZlcnNpb24gaXMgT0sKIG5hdmlnYXRvci5jb29raWVFbmFibGVk
IGlzIE9LCituYXZpZ2F0b3IuZ2FtZXBhZHMgaXMgT0sKIG5hdmlnYXRvci5nZXRTdG9yYWdlVXBk
YXRlcygpIGlzIE9LCiBuYXZpZ2F0b3IuamF2YUVuYWJsZWQoKSBpcyBPSwogbmF2aWdhdG9yLmxh
bmd1YWdlIGlzIE9LCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115675</attachid>
            <date>2011-11-17 14:09:24 -0800</date>
            <delta_ts>2011-11-21 12:09:33 -0800</delta_ts>
            <desc>update Skipped for various ports</desc>
            <filename>bug-69451-20111117140923.patch</filename>
            <type>text/plain</type>
            <size>52672</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmODdjNGY4OGZiZTVh
MmI5MTU0NjViMTI4OWM5ZDQ0MjVmOTkxYi4uODlhZjcwOTk3NTlmZmEyOTRiYTY1MzJmZGE4MjE0
NzJhOTUyNmJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDExLTExLTE3ICBTY290
dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGRpbmcgZ2FtZXBh
ZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02OTQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZHMgcGx1bWJpbmcgZm9yIGV4cG9zaW5nIGEgR2FtZXBhZExpc3QgYW5kIEdhbWVwYWQgdGhy
b3VnaCBXZWJDb3JlLAorICAgICAgICBhbmQgZ2F0aGVyaW5nIGRhdGEgdmlhIHBsYXRmb3JtLgor
CisgICAgICAgIFRlc3RzOiBnYW1lcGFkL2dhbWVwYWQtYXBpLmh0bWwKKyAgICAgICAgICAgICAg
IGdhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy5odG1sCisKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogcGFnZS9HYW1lcGFkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpHYW1lcGFkOjpHYW1lcGFkKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWQ6OmF4ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZDo6YnV0dG9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpHYW1lcGFkOjp+R2FtZXBhZCk6CisgICAgICAgICogcGFnZS9HYW1lcGFkLmg6IEFkZGVkLgor
ICAgICAgICAqIHBhZ2UvR2FtZXBhZC5pZGw6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvR2FtZXBh
ZExpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0Ojp+R2FtZXBh
ZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6OnNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpHYW1lcGFkTGlzdDo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRM
aXN0OjppdGVtKToKKyAgICAgICAgKiBwYWdlL0dhbWVwYWRMaXN0Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHYW1l
cGFkTGlzdDo6R2FtZXBhZExpc3QpOgorICAgICAgICAqIHBhZ2UvR2FtZXBhZExpc3QuaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0b3I6OmdhbWVwYWRzKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAgICAg
ICAqIHBhZ2UvTmF2aWdhdG9yLmlkbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9HYW1lcGFkcy5oOiBB
ZGRlZC4KKwogMjAxMS0xMS0xNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwMDY1Mi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMzYwNTBmNjlhYWRlMzFkMmNjNTBkODVjOGZjZjA2ZjUx
YjcyNTljOS4uN2Q4YWM5M2ZjZWUzNDRkODVjMGQ2NDQ1NDY0ZWZmZGNmY2E4Y2EzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMS0xNyAgU2NvdHQg
R3JhaGFtICA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkaW5nIGdhbWVwYWQg
c3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njk0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
bGF0Zm9ybSBzdXBwb3J0IGZvciBjb25uZWN0aW5nIGdhbWVwYWRzIGludGVyZmFjZSBpbiBXZWJD
b3JlIHRvCisgICAgICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydC4KKworICAgICAgICAqIFdlYktp
dC5neXA6CisgICAgICAgICogc3JjL0dhbWVwYWRzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpzYW1wbGVHYW1lcGFkcyk6CisKIDIwMTEtMTEtMTcgIEFkcmllbm5lIFdhbGtlciAgPGVu
bmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIEltcGxpY2l0bHkgc2tpcCByZW5k
ZXIgc3VyZmFjZXMgdGhhdCB3b24ndCBiZSBkcmF3bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGZhNDMz
YTkyNzcyOWQzMzc5YTI0YTQ0NWIxMzY1NjQyMjkyZDVhZGUuLjBiMDNjYmJmMDBlMzRlYjVmYjNl
NzAxNzllOWQ0YjNlYTBkZGExOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEzOTksNiArMTM5OSw4
IEBACiAgICAgICAgICAgICAncGFnZS9ET01TZWxlY3Rpb24uaWRsJywKICAgICAgICAgICAgICdw
YWdlL0RPTVdpbmRvdy5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvRXZlbnRTb3VyY2UuaWRsJywK
KyAgICAgICAgICAgICdwYWdlL0dhbWVwYWQuaWRsJywKKyAgICAgICAgICAgICdwYWdlL0dhbWVw
YWRMaXN0LmlkbCcsCiAgICAgICAgICAgICAncGFnZS9HZW9sb2NhdGlvbi5pZGwnLAogICAgICAg
ICAgICAgJ3BhZ2UvR2VvcG9zaXRpb24uaWRsJywKICAgICAgICAgICAgICdwYWdlL0hpc3Rvcnku
aWRsJywKQEAgLTI5NDYsNiArMjk0OCwxMCBAQAogICAgICAgICAgICAgJ3BhZ2UvRnJhbWVBY3Rp
b25TY2hlZHVsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9GcmFtZVRyZWUuY3BwJywKICAgICAg
ICAgICAgICdwYWdlL0ZyYW1lVmlldy5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvR2FtZXBhZC5j
cHAnLAorICAgICAgICAgICAgJ3BhZ2UvR2FtZXBhZC5oJywKKyAgICAgICAgICAgICdwYWdlL0dh
bWVwYWRMaXN0LmNwcCcsCisgICAgICAgICAgICAncGFnZS9HYW1lcGFkTGlzdC5oJywKICAgICAg
ICAgICAgICdwYWdlL0dlb2xvY2F0aW9uLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9HZW9sb2Nh
dGlvbkNvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdwYWdlL0dyb3VwU2V0dGluZ3MuY3Bw
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0dhbWVwYWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZWQxOGRkZGUxYzdhNmFiMDNh
YTIyOGRlZTFjNzJkNDhiNTYyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0dhbWVwYWQuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJHYW1lcGFkLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dhbWVw
YWQ6OkdhbWVwYWQoKQoreworfQorCit2b2lkIEdhbWVwYWQ6OmF4ZXModW5zaWduZWQgY291bnQs
IGZsb2F0KiBkYXRhKQoreworICAgIG1fYXhlcy5yZXNpemUoY291bnQpOworICAgIHN0ZDo6Y29w
eShkYXRhLCBkYXRhICsgY291bnQsIG1fYXhlcy5iZWdpbigpKTsKK30KKwordm9pZCBHYW1lcGFk
OjpidXR0b25zKHVuc2lnbmVkIGNvdW50LCBmbG9hdCogZGF0YSkKK3sKKyAgICBtX2J1dHRvbnMu
cmVzaXplKGNvdW50KTsKKyAgICBzdGQ6OmNvcHkoZGF0YSwgZGF0YSArIGNvdW50LCBtX2J1dHRv
bnMuYmVnaW4oKSk7Cit9CisKK0dhbWVwYWQ6On5HYW1lcGFkKCkKK3sKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBh
ZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNiNWYxOWMzNDkwOTZkYzRkMGY4ODE2Yjk1MThjMWY4OTk4YmZhYzgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuaApAQCAtMCww
ICsxLDY5IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisv
LyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
Ky8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SAorLy8gREFNQUdFLgorCisjaWZuZGVmIEdhbWVwYWRfaAorI2RlZmluZSBHYW1lcGFkX2gKKwor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEdhbWVwYWQ6IHB1YmxpYyBSZWZDb3VudGVkPEdhbWVwYWQ+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxHYW1lcGFkPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBHYW1lcGFkKTsKKyAgICB9CisgICAgfkdhbWVwYWQoKTsKKworICAgIHR5
cGVkZWYgVmVjdG9yPGZsb2F0PiBGbG9hdFZlY3RvcjsKKworICAgIGNvbnN0IFN0cmluZyYgaWQo
KSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdm9pZCBpZChjb25zdCBTdHJpbmcmIGlkKSB7
IG1faWQgPSBpZDsgfQorCisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2lu
ZGV4OyB9CisgICAgdm9pZCBpbmRleCh1bnNpZ25lZCB2YWwpIHsgbV9pbmRleCA9IHZhbDsgfQor
CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZXN0YW1wOyB9CisgICAgdm9pZCB0aW1lc3RhbXAodW5zaWduZWQgbG9uZyBsb25nIHZhbCkgeyBt
X3RpbWVzdGFtcCA9IHZhbDsgfQorCisgICAgY29uc3QgRmxvYXRWZWN0b3ImIGF4ZXMoKSBjb25z
dCB7IHJldHVybiBtX2F4ZXM7IH0KKyAgICB2b2lkIGF4ZXModW5zaWduZWQgY291bnQsIGZsb2F0
KiBkYXRhKTsKKworICAgIGNvbnN0IEZsb2F0VmVjdG9yJiBidXR0b25zKCkgY29uc3QgeyByZXR1
cm4gbV9idXR0b25zOyB9CisgICAgdm9pZCBidXR0b25zKHVuc2lnbmVkIGNvdW50LCBmbG9hdCog
ZGF0YSk7CisKK3ByaXZhdGU6CisgICAgR2FtZXBhZCgpOworICAgIFN0cmluZyBtX2lkOworICAg
IHVuc2lnbmVkIG1faW5kZXg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG1fdGltZXN0YW1wOwor
ICAgIEZsb2F0VmVjdG9yIG1fYXhlczsKKyAgICBGbG9hdFZlY3RvciBtX2J1dHRvbnM7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHYW1lcGFkX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0dhbWVwYWQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxNDliMDVmNWU1MmI5ZGVhNWQ1NDlhYWY3MWYzNDZm
NTM3M2QwN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQu
aWRsCkBAIC0wLDAgKzEsMzYgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUg
bWV0OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
Ly8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNICisvLyBEQU1BR0UuCisKK21vZHVsZSBkb20geworCisgICAgaW50ZXJmYWNl
IFsKKyAgICAgICAgQ29uZGl0aW9uYWw9R0FNRVBBRAorICAgIF0gR2FtZXBhZCB7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIGluZGV4OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBsb25nIHRpbWVzdGFtcDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGZs
b2F0W10gYXhlczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0W10gYnV0dG9uczsK
KyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2
OTM0ZWRkMjU0NDg2MTM3OTBmODk2MzYwMTIyNGQ1NDExYzBkYTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmNwcApAQCAtMCwwICsxLDU2IEBACisv
LyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdF
LgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZXBhZExpc3QuaCIKKworI2lu
Y2x1ZGUgIkdhbWVwYWQuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0dhbWVwYWRMaXN0Ojp+R2FtZXBhZExpc3QoKQoreworfQorCit2b2lkIEdhbWVw
YWRMaXN0OjpzZXQodW5zaWduZWQgaW5kZXgsIFBhc3NSZWZQdHI8R2FtZXBhZD4gZ2FtZXBhZCkK
K3sKKyAgICBpZiAoaW5kZXggPj0ga01heGltdW1HYW1lcGFkcykKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1faXRlbXNbaW5kZXhdID0gZ2FtZXBhZDsKK30KKwordW5zaWduZWQgR2FtZXBhZExpc3Q6
Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGtNYXhpbXVtR2FtZXBhZHM7Cit9CisKK0dh
bWVwYWQqIEdhbWVwYWRMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KQoreworICAgIHJldHVybiBp
bmRleCA8IGxlbmd0aCgpID8gbV9pdGVtc1tpbmRleF0uZ2V0KCkgOiAwOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2FtZXBhZExpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTQyZTc5ZmY1YzY5MTg3Y2YyNDliMGY3ZDBlOGI1
YjUyZWM0NTJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFk
TGlzdC5oCkBAIC0wLDAgKzEsNTMgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0UuCisKKyNpZm5kZWYgR2FtZXBhZExpc3RfaAorI2Rl
ZmluZSBHYW1lcGFkTGlzdF9oCisKKyNpbmNsdWRlICJHYW1lcGFkLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIFZlY3RvcjxSZWZQ
dHI8R2FtZXBhZD4gPiBHYW1lcGFkVmVjdG9yOworCitjbGFzcyBHYW1lcGFkTGlzdCA6IHB1Ymxp
YyBSZWZDb3VudGVkPEdhbWVwYWRMaXN0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8R2FtZXBhZExpc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBHYW1lcGFkTGlz
dCk7IH0KKyAgICB+R2FtZXBhZExpc3QoKTsKKworICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4
LCBQYXNzUmVmUHRyPEdhbWVwYWQ+KTsKKyAgICBHYW1lcGFkKiBpdGVtKHVuc2lnbmVkIGluZGV4
KTsKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBlbnVtIHsg
a01heGltdW1HYW1lcGFkcyA9IDQgfTsKKyAgICBHYW1lcGFkTGlzdCgpIHsgfQorICAgIFJlZlB0
cjxHYW1lcGFkPiBtX2l0ZW1zW2tNYXhpbXVtR2FtZXBhZHNdOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR2FtZXBhZExpc3RfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVw
YWRMaXN0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDJiODE1ZGZhZjQyNzg2NTczYmY1MWFiNTM4ZWY0ZmEz
ZGY1NDI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlz
dC5pZGwKQEAgLTAsMCArMSwzNCBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKworbW9kdWxlIGRvbSB7CisKKyAgICBpbnRlcmZh
Y2UgWworICAgICAgICBDb25kaXRpb25hbD1HQU1FUEFELAorICAgICAgICBIYXNJbmRleEdldHRl
cgorICAgIF0gR2FtZXBhZExpc3QgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgbG9uZyBsZW5ndGg7CisgICAgICAgIEdhbWVwYWQgaXRlbShpbiBbT3B0aW9uYWw9Q2FsbFdp
dGhEZWZhdWx0VmFsdWVdIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIH07CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCAxMDUyMDk4NDFiOGExZjcwNjg4NDU0MDAwYTQzMjcz
MDNmZjk5NWI0Li5iM2NjOWQ3NTY0OWYwMzcwYzY2ZjM0YWE1OTY2YmRhNTk4YmMzNjM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xp
ZW50LmgiCisjaW5jbHVkZSAiR2FtZXBhZExpc3QuaCIKKyNpbmNsdWRlICJHYW1lcGFkcy5oIgog
I2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiUG9pbnRlckxvY2suaCIKICNpbmNs
dWRlICJLVVJMLmgiCkBAIC0zMDQsNCArMzA2LDE0IEBAIHZvaWQgTmF2aWdhdG9yOjp3ZWJraXRH
ZXRVc2VyTWVkaWEoY29uc3QgU3RyaW5nJiBvcHRpb25zLCBQYXNzUmVmUHRyPE5hdmlnYXRvclVz
CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHQU1FUEFEKQorR2FtZXBhZExpc3QqIE5hdmlnYXRv
cjo6Z2FtZXBhZHMoKQoreworICAgIGlmICghbV9nYW1lcGFkcykKKyAgICAgICAgbV9nYW1lcGFk
cyA9IEdhbWVwYWRMaXN0OjpjcmVhdGUoKTsKKyAgICBzYW1wbGVHYW1lcGFkcyhtX2dhbWVwYWRz
LmdldCgpKTsKKyAgICByZXR1cm4gbV9nYW1lcGFkcy5nZXQoKTsKK30KKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmln
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAppbmRleCA0OWM1NDg4YzVi
MjM4ZDA2YWZiN2U1NDFkYTVlOTIxOWUzNmEzN2Q3Li5kMTBjOGZiZTE0YTlhNDA3ODMxYWRkNTI2
NzEzN2MzYTEyODk0OGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKQEAgLTMxLDYgKzMxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRE9NTWltZVR5cGVBcnJheTsKIGNsYXNzIERP
TVBsdWdpbkFycmF5OwogY2xhc3MgRnJhbWU7CitjbGFzcyBHYW1lcGFkTGlzdDsKIGNsYXNzIEdl
b2xvY2F0aW9uOwogY2xhc3MgUG9pbnRlckxvY2s7CiBjbGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFF
cnJvckNhbGxiYWNrOwpAQCAtNzQsMTIgKzc1LDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgd2Via2l0R2V0VXNlck1lZGlhKGNvbnN0IFN0cmluZyYgb3B0aW9ucywgUGFzc1JlZlB0cjxO
YXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPE5hdmlnYXRvclVz
ZXJNZWRpYUVycm9yQ2FsbGJhY2s+LCBFeGNlcHRpb25Db2RlJik7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShHQU1FUEFEKQorICAgIEdhbWVwYWRMaXN0KiBnYW1lcGFkcygpOworI2VuZGlmCisKIHBy
aXZhdGU6CiAgICAgTmF2aWdhdG9yKEZyYW1lKik7CiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAg
bXV0YWJsZSBSZWZQdHI8RE9NUGx1Z2luQXJyYXk+IG1fcGx1Z2luczsKICAgICBtdXRhYmxlIFJl
ZlB0cjxET01NaW1lVHlwZUFycmF5PiBtX21pbWVUeXBlczsKICAgICBtdXRhYmxlIFJlZlB0cjxH
ZW9sb2NhdGlvbj4gbV9nZW9sb2NhdGlvbjsKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBtdXRh
YmxlIFJlZlB0cjxHYW1lcGFkTGlzdD4gbV9nYW1lcGFkczsKKyNlbmRpZgogI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCiAgICAgbXV0YWJsZSBSZWZQdHI8UG9pbnRlckxvY2s+IG1fcG9pbnRlcjsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCmluZGV4IDZmZTQzZTY2MGE4NTA3MzMx
NDg1M2Y1ODE2MTMxN2E2ZGJmYTIzODUuLjkyNDUyZWMwM2RiMTEyZTU3NDRhOTA5ZWQ0ZmI4MDlm
ZDliN2E1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwKQEAgLTYxLDYgKzYxLDEwIEBA
IG1vZHVsZSB3aW5kb3cgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5LCBPcHRpb25hbF0g
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKQogICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKKworI2lmIGRlZmluZWQoRU5BQkxFX0dB
TUVQQUQpICYmIEVOQUJMRV9HQU1FUEFECisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbRW5h
YmxlZEF0UnVudGltZV0gR2FtZXBhZExpc3QgZ2FtZXBhZHM7CisjZW5kaWYKICAgICB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HYW1lcGFkcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vR2FtZXBhZHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjEyNmY0OTVhMDFjOTAy
ZTZiY2MyZmU0NjY2MDFkODAxMzBhY2RiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vR2FtZXBhZHMuaApAQCAtMCwwICsxLDM1IEBACisvLyBDb3B5cmlnaHQgKEMp
IDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
Ky8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaWZuZGVmIEdh
bWVwYWRzX2gKKyNkZWZpbmUgR2FtZXBhZHNfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEdhbWVwYWRMaXN0OworCit2b2lkIHNhbXBsZUdhbWVwYWRzKEdhbWVwYWRMaXN0KiBpbnRv
KTsKKworfQorCisjZW5kaWYgLy8gR2FtZXBhZHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CmluZGV4IGJhODU0ZWFiY2Q2YWY4NzQ1YjcxYWFiOWMxNzY1MjNjMTBlOTkyNDkuLjE0NTdmMWNj
NjAwYzJhNzQ4MjQ1YTFjZTE3ZTJlZTdmYTM5ODZiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKQEAgLTM4Niw2ICszODYsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9GcmFtZU5ldHdvcmtpbmdDb250ZXh0SW1w
bC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0dhbWVwYWRzLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9HZW9sb2NhdGlvbkNsaWVudFByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9HZW9sb2NhdGlvbkNsaWVudFByb3h5LmgnLAogICAgICAgICAgICAgICAgICdzcmMvR3JhcGhp
Y3NDb250ZXh0M0RDaHJvbWl1bS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvR2FtZXBhZHMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR2FtZXBh
ZHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ3ZWVjMDVlN2IxOGFjMjIzMmViZTJhMWNiY2ZlZmM0ZGNhYTQy
ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HYW1lcGFk
cy5jcHAKQEAgLTAsMCArMSw2NSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkdhbWVwYWRzLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIkdhbWVw
YWRMaXN0LmgiCisjaW5jbHVkZSAiV2ViR2FtZXBhZHMuaCIKKyNpbmNsdWRlICJXZWJLaXQuaCIK
KyNpbmNsdWRlICJXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHYW1lcGFkTGlzdDsKKwordm9p
ZCBzYW1wbGVHYW1lcGFkcyhHYW1lcGFkTGlzdCogaW50bykKK3sKKyAgICBXZWJHYW1lcGFkcyBn
YW1lcGFkczsKKworICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5zYW1wbGVHYW1lcGFkcyhn
YW1lcGFkcyk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV2ViS2l0OjpXZWJHYW1l
cGFkczo6aXRlbXNMZW5ndGhDYXA7ICsraSkgeworICAgICAgICBXZWJHYW1lcGFkJiB3ZWJHYW1l
cGFkID0gZ2FtZXBhZHMuaXRlbXNbaV07CisgICAgICAgIGlmIChpIDwgZ2FtZXBhZHMubGVuZ3Ro
ICYmIHdlYkdhbWVwYWQuY29ubmVjdGVkKSB7CisgICAgICAgICAgICBSZWZQdHI8R2FtZXBhZD4g
Z2FtZXBhZCA9IGludG8tPml0ZW0oaSk7CisgICAgICAgICAgICBpZiAoIWdhbWVwYWQpCisgICAg
ICAgICAgICAgICAgZ2FtZXBhZCA9IEdhbWVwYWQ6OmNyZWF0ZSgpOworICAgICAgICAgICAgZ2Ft
ZXBhZC0+aWQod2ViR2FtZXBhZC5pZCk7CisgICAgICAgICAgICBnYW1lcGFkLT5pbmRleChpKTsK
KyAgICAgICAgICAgIGdhbWVwYWQtPnRpbWVzdGFtcCh3ZWJHYW1lcGFkLnRpbWVzdGFtcCk7Cisg
ICAgICAgICAgICBnYW1lcGFkLT5heGVzKHdlYkdhbWVwYWQuYXhlc0xlbmd0aCwgd2ViR2FtZXBh
ZC5heGVzKTsKKyAgICAgICAgICAgIGdhbWVwYWQtPmJ1dHRvbnMod2ViR2FtZXBhZC5idXR0b25z
TGVuZ3RoLCB3ZWJHYW1lcGFkLmJ1dHRvbnMpOworICAgICAgICAgICAgaW50by0+c2V0KGksIGdh
bWVwYWQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGludG8tPnNldChpLCAwKTsKKyAg
ICB9Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNzE4YTlmYjM1NDY3NWFjYTJlMWQ0YTJmMGM0NWQ3Mjc5YTA4OGE0
Yy4uMjc2MjcwMzcwZmRmZDBhY2E1YWQ0YjM3ZTEzNmI1NjU2ODMxZTZkOSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisy
MDExLTExLTE3ICBTY290dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBBZGRpbmcgZ2FtZXBhZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02OTQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBob29rcyB0byBDaHJvbWl1bSBEdW1wUmVuZGVyVHJlZSB0byBz
dXBwb3J0IHNldHRpbmcgbW9jayBkYXRhIGZvcgorICAgICAgICBydW5uaW5nIGdhbWVwYWQgdGVz
dHMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0dhbWVwYWRDb250cm9sbGVyLmNwcDogQWRk
ZWQuCisgICAgICAgIChHYW1lcGFkQ29udHJvbGxlcjo6R2FtZXBhZENvbnRyb2xsZXIpOgorICAg
ICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OmJpbmRUb0phdmFzY3JpcHQpOgorICAgICAgICAoR2Ft
ZXBhZENvbnRyb2xsZXI6OnJlc2V0KToKKyAgICAgICAgKEdhbWVwYWRDb250cm9sbGVyOjpjb25u
ZWN0KToKKyAgICAgICAgKEdhbWVwYWRDb250cm9sbGVyOjpkaXNjb25uZWN0KToKKyAgICAgICAg
KEdhbWVwYWRDb250cm9sbGVyOjpzZXRJZCk6CisgICAgICAgIChHYW1lcGFkQ29udHJvbGxlcjo6
c2V0QnV0dG9uQ291bnQpOgorICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OnNldEJ1dHRvbkRh
dGEpOgorICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OnNldEF4aXNDb3VudCk6CisgICAgICAg
IChHYW1lcGFkQ29udHJvbGxlcjo6c2V0QXhpc0RhdGEpOgorICAgICAgICAoR2FtZXBhZENvbnRy
b2xsZXI6OmZhbGxiYWNrQ2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0dhbWVwYWRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbC5jcHA6CisgICAgICAgIChUZXN0U2hlbGw6OlRlc3RTaGVsbCk6
CisgICAgICAgIChUZXN0U2hlbGw6OnJlc2V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoVGVz
dFNoZWxsOjpiaW5kSlNPYmplY3RzVG9XaW5kb3cpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAoVGVzdFNoZWxsOjpnYW1lcGFkQ29udHJv
bGxlcik6CisKIDIwMTEtMTEtMTcgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9r
aWEuY29tPgogCiAgICAgICAgIFtRdF0gTGF5ZXIgdmlvbGF0aW9uOiBxdF9ydW50aW1lLmNwcCBh
Y2Nlc3NlcyBRV2ViRWxlbWVudCBhbmQgUVREUlROb2RlCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUuZ3lwaQppbmRleCAyMzViOTUzNzI2YmNlYWFiMTg1ZTVkNDgyOTVjZjEzMzk5
YWYyNzYzLi5iMTliZTIyNzJjNTU1Yzc5ZDI5OTcxNjA1MjRhYWY3MGNmMmU4ZjY4IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKQEAgLTE2LDYgKzE2LDggQEAKICAg
ICAgICAgICAgICdjaHJvbWl1bS9EdW1wUmVuZGVyVHJlZS5jcHAnLAogICAgICAgICAgICAgJ2No
cm9taXVtL0V2ZW50U2VuZGVyLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vRXZlbnRTZW5k
ZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vR2FtZXBhZENvbnRyb2xsZXIuY3BwJywKKyAg
ICAgICAgICAgICdjaHJvbWl1bS9HYW1lcGFkQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tTcGVs
bENoZWNrLmNwcCcsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9H
YW1lcGFkQ29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9HYW1l
cGFkQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk3NGQzYmNkZTAyOGQ5ODU0NDUwZTZiZWU4
MGVmYmZjYjE3YmI0MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0dhbWVwYWRDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHYW1lcGFkQ29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiVGVz
dFNoZWxsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0dhbWVwYWRDb250cm9sbGVy
OjpHYW1lcGFkQ29udHJvbGxlcihUZXN0U2hlbGwqIHNoZWxsKQorICAgIDogbV9zaGVsbChzaGVs
bCkKK3sKKyAgICBiaW5kTWV0aG9kKCJjb25uZWN0IiwgJkdhbWVwYWRDb250cm9sbGVyOjpjb25u
ZWN0KTsKKyAgICBiaW5kTWV0aG9kKCJkaXNjb25uZWN0IiwgJkdhbWVwYWRDb250cm9sbGVyOjpk
aXNjb25uZWN0KTsKKyAgICBiaW5kTWV0aG9kKCJzZXRJZCIsICZHYW1lcGFkQ29udHJvbGxlcjo6
c2V0SWQpOworICAgIGJpbmRNZXRob2QoInNldEJ1dHRvbkNvdW50IiwgJkdhbWVwYWRDb250cm9s
bGVyOjpzZXRCdXR0b25Db3VudCk7CisgICAgYmluZE1ldGhvZCgic2V0QnV0dG9uRGF0YSIsICZH
YW1lcGFkQ29udHJvbGxlcjo6c2V0QnV0dG9uRGF0YSk7CisgICAgYmluZE1ldGhvZCgic2V0QXhp
c0NvdW50IiwgJkdhbWVwYWRDb250cm9sbGVyOjpzZXRBeGlzQ291bnQpOworICAgIGJpbmRNZXRo
b2QoInNldEF4aXNEYXRhIiwgJkdhbWVwYWRDb250cm9sbGVyOjpzZXRBeGlzRGF0YSk7CisKKyAg
ICBiaW5kRmFsbGJhY2tNZXRob2QoJkdhbWVwYWRDb250cm9sbGVyOjpmYWxsYmFja0NhbGxiYWNr
KTsKKworICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OmJpbmRUb0ph
dmFzY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJTdHJpbmcmIGNsYXNzbmFtZSkKK3sK
KyAgICBDcHBCb3VuZENsYXNzOjpiaW5kVG9KYXZhc2NyaXB0KGZyYW1lLCBjbGFzc25hbWUpOwor
fQorCit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpyZXNldCgpCit7CisgICAgbWVtc2V0KCZpbnRl
cm5hbERhdGEsIDAsIHNpemVvZihpbnRlcm5hbERhdGEpKTsKK30KKwordm9pZCBHYW1lcGFkQ29u
dHJvbGxlcjo6Y29ubmVjdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3MsIENwcFZhcmlhbnQq
IHJlc3VsdCkKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgPCAxKSB7CisgICAgICAgIHByaW50Zigi
SW52YWxpZCBhcmdzIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW50IGluZGV4ID0g
YXJnc1swXS50b0ludDMyKCk7CisgICAgaW50ZXJuYWxEYXRhLml0ZW1zW2luZGV4XS5jb25uZWN0
ZWQgPSB0cnVlOworICAgIGludGVybmFsRGF0YS5sZW5ndGggPSAwOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBXZWJLaXQ6OldlYkdhbWVwYWRzOjppdGVtc0xlbmd0aENhcDsgKytpKQor
ICAgICAgICBpZiAoaW50ZXJuYWxEYXRhLml0ZW1zW2ldLmNvbm5lY3RlZCkKKyAgICAgICAgICAg
IGludGVybmFsRGF0YS5sZW5ndGggPSBpICsgMTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6U2V0R2Ft
ZXBhZERhdGEoaW50ZXJuYWxEYXRhKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9p
ZCBHYW1lcGFkQ29udHJvbGxlcjo6ZGlzY29ubmVjdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
Z3MsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgPCAxKSB7Cisg
ICAgICAgIHByaW50ZigiSW52YWxpZCBhcmdzIik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgaW50IGluZGV4ID0gYXJnc1swXS50b0ludDMyKCk7CisgICAgaW50ZXJuYWxEYXRhLml0ZW1z
W2luZGV4XS5jb25uZWN0ZWQgPSBmYWxzZTsKKyAgICBpbnRlcm5hbERhdGEubGVuZ3RoID0gMDsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV2ViS2l0OjpXZWJHYW1lcGFkczo6aXRlbXNM
ZW5ndGhDYXA7ICsraSkKKyAgICAgICAgaWYgKGludGVybmFsRGF0YS5pdGVtc1tpXS5jb25uZWN0
ZWQpCisgICAgICAgICAgICBpbnRlcm5hbERhdGEubGVuZ3RoID0gaSArIDE7CisgICAgd2Via2l0
X3N1cHBvcnQ6OlNldEdhbWVwYWREYXRhKGludGVybmFsRGF0YSk7CisgICAgcmVzdWx0LT5zZXRO
dWxsKCk7Cit9CisKK3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OnNldElkKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmdzLnNpemUo
KSA8IDIpIHsKKyAgICAgICAgcHJpbnRmKCJJbnZhbGlkIGFyZ3MiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBpbnQgaW5kZXggPSBhcmdzWzBdLnRvSW50MzIoKTsKKyAgICBzdGQ6OnN0
cmluZyBzcmMgPSBhcmdzWzFdLnRvU3RyaW5nKCk7CisgICAgY29uc3QgY2hhciogcCA9IHNyYy5j
X3N0cigpOworICAgIG1lbXNldChpbnRlcm5hbERhdGEuaXRlbXNbaW5kZXhdLmlkLCAwLCBzaXpl
b2YoaW50ZXJuYWxEYXRhLml0ZW1zW2luZGV4XS5pZCkpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7ICpwICYmIGkgPCBXZWJLaXQ6OldlYkdhbWVwYWQ6OmlkTGVuZ3RoQ2FwIC0gMTsgKytpKQor
ICAgICAgICBpbnRlcm5hbERhdGEuaXRlbXNbaW5kZXhdLmlkW2ldID0gKnArKzsKKyAgICB3ZWJr
aXRfc3VwcG9ydDo6U2V0R2FtZXBhZERhdGEoaW50ZXJuYWxEYXRhKTsKKyAgICByZXN1bHQtPnNl
dE51bGwoKTsKK30KKwordm9pZCBHYW1lcGFkQ29udHJvbGxlcjo6c2V0QnV0dG9uQ291bnQoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiBhcmdzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYg
KGFyZ3Muc2l6ZSgpIDwgMikgeworICAgICAgICBwcmludGYoIkludmFsaWQgYXJncyIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGludCBpbmRleCA9IGFyZ3NbMF0udG9JbnQzMigpOwor
ICAgIGludCBidXR0b25zID0gYXJnc1sxXS50b0ludDMyKCk7CisgICAgaW50ZXJuYWxEYXRhLml0
ZW1zW2luZGV4XS5idXR0b25zTGVuZ3RoID0gYnV0dG9uczsKKyAgICB3ZWJraXRfc3VwcG9ydDo6
U2V0R2FtZXBhZERhdGEoaW50ZXJuYWxEYXRhKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30K
Kwordm9pZCBHYW1lcGFkQ29udHJvbGxlcjo6c2V0QnV0dG9uRGF0YShjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3MsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJncy5zaXplKCkg
PCAzKSB7CisgICAgICAgIHByaW50ZigiSW52YWxpZCBhcmdzIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgaW50IGluZGV4ID0gYXJnc1swXS50b0ludDMyKCk7CisgICAgaW50IGJ1dHRv
biA9IGFyZ3NbMV0udG9JbnQzMigpOworICAgIGRvdWJsZSBkYXRhID0gYXJnc1syXS50b0RvdWJs
ZSgpOworICAgIGludGVybmFsRGF0YS5pdGVtc1tpbmRleF0uYnV0dG9uc1tidXR0b25dID0gZGF0
YTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6U2V0R2FtZXBhZERhdGEoaW50ZXJuYWxEYXRhKTsKKyAg
ICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBHYW1lcGFkQ29udHJvbGxlcjo6c2V0QXhp
c0NvdW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0KQor
eworICAgIGlmIChhcmdzLnNpemUoKSA8IDIpIHsKKyAgICAgICAgcHJpbnRmKCJJbnZhbGlkIGFy
Z3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbnQgaW5kZXggPSBhcmdzWzBdLnRv
SW50MzIoKTsKKyAgICBpbnQgYXhlcyA9IGFyZ3NbMV0udG9JbnQzMigpOworICAgIGludGVybmFs
RGF0YS5pdGVtc1tpbmRleF0uYXhlc0xlbmd0aCA9IGF4ZXM7CisgICAgd2Via2l0X3N1cHBvcnQ6
OlNldEdhbWVwYWREYXRhKGludGVybmFsRGF0YSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9
CisKK3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OnNldEF4aXNEYXRhKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmdzLnNpemUoKSA8
IDMpIHsKKyAgICAgICAgcHJpbnRmKCJJbnZhbGlkIGFyZ3MiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpbnQgaW5kZXggPSBhcmdzWzBdLnRvSW50MzIoKTsKKyAgICBpbnQgYXhpcyA9
IGFyZ3NbMV0udG9JbnQzMigpOworICAgIGRvdWJsZSBkYXRhID0gYXJnc1syXS50b0RvdWJsZSgp
OworICAgIGludGVybmFsRGF0YS5pdGVtc1tpbmRleF0uYXhlc1theGlzXSA9IGRhdGE7CisgICAg
d2Via2l0X3N1cHBvcnQ6OlNldEdhbWVwYWREYXRhKGludGVybmFsRGF0YSk7CisgICAgcmVzdWx0
LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OmZhbGxiYWNrQ2FsbGJh
Y2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHBy
aW50ZigiQ09OU09MRSBNRVNTQUdFOiBKYXZhU2NyaXB0IEVSUk9SOiB1bmtub3duIG1ldGhvZCBj
YWxsZWQgb24gIgorICAgICAgICAgICAiR2FtZXBhZENvbnRyb2xsZXJcbiIpOworICAgIHJlc3Vs
dC0+c2V0TnVsbCgpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vR2FtZXBhZENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0dh
bWVwYWRDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZlZWRiMDVkOGQ1MmYzMzFjYmJlNzNmMmFm
MjJiMTQ1OWMwZGQ0MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0dhbWVwYWRDb250cm9sbGVyLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2FtZXBh
ZENvbnRyb2xsZXJfaAorI2RlZmluZSBHYW1lcGFkQ29udHJvbGxlcl9oCisKKyNpbmNsdWRlICJD
cHBCb3VuZENsYXNzLmgiCisjaW5jbHVkZSAiV2ViR2FtZXBhZHMuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CitjbGFzcyBXZWJHYW1lcGFkczsKK2NsYXNzIFdlYkZyYW1lOworfQorCitjbGFzcyBU
ZXN0U2hlbGw7CisKK2NsYXNzIEdhbWVwYWRDb250cm9sbGVyIDogcHVibGljIENwcEJvdW5kQ2xh
c3MgeworcHVibGljOgorICAgIGV4cGxpY2l0IEdhbWVwYWRDb250cm9sbGVyKFRlc3RTaGVsbCop
OworCisgICAgdm9pZCBiaW5kVG9KYXZhc2NyaXB0KFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYgY2xhc3NuYW1lKTsKKyAgICB2b2lkIHJlc2V0KCk7CisKK3ByaXZh
dGU6CisgICAgLy8gQm91bmQgbWV0aG9kcyBhbmQgcHJvcGVydGllcworICAgIHZvaWQgY29ubmVj
dChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBkaXNjb25u
ZWN0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNldElk
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNldEJ1dHRv
bkNvdW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNl
dEJ1dHRvbkRhdGEoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZv
aWQgc2V0QXhpc0NvdW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAg
ICB2b2lkIHNldEF4aXNEYXRhKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
KyAgICB2b2lkIGZhbGxiYWNrQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOworCisgICAgVGVzdFNoZWxsKiBtX3NoZWxsOworCisgICAgV2ViS2l0OjpXZWJHYW1l
cGFkcyBpbnRlcm5hbERhdGE7Cit9OworCisjZW5kaWYgLy8gR2FtZXBhZENvbnRyb2xsZXJfaApk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKaW5kZXggY2IxZTIx
OWIwNzY2YjhiOTA5ZTYzYzBkOGRiMDEyYzMyOGZiZDQ5OC4uODcwNjIyYWU0NmJhN2YzNDgyZWQx
MDA2N2EzYWQ4ZGVlNDg0YjJhYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGwuY3BwCkBAIC0xMjIsOSArMTIyLDExIEBAIFRlc3RTaGVsbDo6VGVzdFNoZWxsKGJv
b2wgdGVzdFNoZWxsTW9kZSkKICAgICBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZU1lZGlhU3Ry
ZWFtKHRydWUpOwogICAgIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlV2ViQXVkaW8odHJ1ZSk7
IAogICAgIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlVmlkZW9UcmFjayh0cnVlKTsKKyAgICBX
ZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZUdhbWVwYWQodHJ1ZSk7CiAKICAgICBtX3dlYlBlcm1p
c3Npb25zID0gYWRvcHRQdHIobmV3IFdlYlBlcm1pc3Npb25zKHRoaXMpKTsKICAgICBtX2FjY2Vz
c2liaWxpdHlDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KHRoaXMpKTsKKyAgICBtX2dhbWVwYWRDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IEdhbWVwYWRD
b250cm9sbGVyKHRoaXMpKTsKICAgICBtX2xheW91dFRlc3RDb250cm9sbGVyID0gYWRvcHRQdHIo
bmV3IExheW91dFRlc3RDb250cm9sbGVyKHRoaXMpKTsKICAgICBtX2V2ZW50U2VuZGVyID0gYWRv
cHRQdHIobmV3IEV2ZW50U2VuZGVyKHRoaXMpKTsKICAgICBtX3BsYWluVGV4dENvbnRyb2xsZXIg
PSBhZG9wdFB0cihuZXcgUGxhaW5UZXh0Q29udHJvbGxlcigpKTsKQEAgLTI2OCw2ICsyNzAsNyBA
QCB2b2lkIFRlc3RTaGVsbDo6cmVzZXRUZXN0Q29udHJvbGxlcigpCiAgICAgcmVzZXRXZWJTZXR0
aW5ncygqd2ViVmlldygpKTsKICAgICBtX3dlYlBlcm1pc3Npb25zLT5yZXNldCgpOwogICAgIG1f
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXItPnJlc2V0KCk7CisgICAgbV9nYW1lcGFkQ29udHJvbGxl
ci0+cmVzZXQoKTsKICAgICBtX2xheW91dFRlc3RDb250cm9sbGVyLT5yZXNldCgpOwogICAgIG1f
ZXZlbnRTZW5kZXItPnJlc2V0KCk7CiAgICAgbV93ZWJWaWV3SG9zdC0+cmVzZXQoKTsKQEAgLTY3
MSw2ICs2NzQsNyBAQCB2b2lkIFRlc3RTaGVsbDo6YmluZEpTT2JqZWN0c1RvV2luZG93KFdlYkZy
YW1lKiBmcmFtZSkKIHsKICAgICBXZWJUZXN0aW5nU3VwcG9ydDo6aW5qZWN0SW50ZXJuYWxzT2Jq
ZWN0KGZyYW1lKTsKICAgICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLT5iaW5kVG9KYXZhc2Ny
aXB0KGZyYW1lLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlciIp
KTsKKyAgICBtX2dhbWVwYWRDb250cm9sbGVyLT5iaW5kVG9KYXZhc2NyaXB0KGZyYW1lLCBXZWJT
dHJpbmc6OmZyb21VVEY4KCJnYW1lcGFkQ29udHJvbGxlciIpKTsKICAgICBtX2xheW91dFRlc3RD
b250cm9sbGVyLT5iaW5kVG9KYXZhc2NyaXB0KGZyYW1lLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJs
YXlvdXRUZXN0Q29udHJvbGxlciIpKTsKICAgICBtX2V2ZW50U2VuZGVyLT5iaW5kVG9KYXZhc2Ny
aXB0KGZyYW1lLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJldmVudFNlbmRlciIpKTsKICAgICBtX3Bs
YWluVGV4dENvbnRyb2xsZXItPmJpbmRUb0phdmFzY3JpcHQoZnJhbWUsIFdlYlN0cmluZzo6ZnJv
bVVURjgoInBsYWluVGV4dCIpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RTaGVsbC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsLmgKaW5kZXggYjE5NGViMGIyMzk2MzBlMTIzZGZiNDMxMmQwY2Y3NDEzNzM4NjIxMS4uMWY2
NDhiMTVlZmI0NDAyNjFjMGU4MzgyMzZlY2YzNmUyYzNmMjI0NCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRTZW5kZXIuaCIKKyNp
bmNsdWRlICJHYW1lcGFkQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkxheW91dFRlc3RDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCiAjaW5jbHVkZSAiUGxh
aW5UZXh0Q29udHJvbGxlci5oIgpAQCAtOTEsNiArOTIsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0
VGVzdENvbnRyb2xsZXIqIGxheW91dFRlc3RDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9s
YXlvdXRUZXN0Q29udHJvbGxlci5nZXQoKTsgfQogICAgIEV2ZW50U2VuZGVyKiBldmVudFNlbmRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRTZW5kZXIuZ2V0KCk7IH0KICAgICBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlciogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBt
X2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmdldCgpOyB9CisgICAgR2FtZXBhZENvbnRyb2xsZXIq
IGdhbWVwYWRDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9nYW1lcGFkQ29udHJvbGxlci5n
ZXQoKTsgfQogICAgIE5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVy
KCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25QcmVzZW50ZXIuZ2V0KCk7IH0KICAgICBU
ZXN0RXZlbnRQcmludGVyKiBwcmludGVyKCkgY29uc3QgeyByZXR1cm4gbV9wcmludGVyLmdldCgp
OyB9CiAKQEAgLTIwNSw2ICsyMDcsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxEUlREZXZUb29s
c0FnZW50PiBtX2RydERldlRvb2xzQWdlbnQ7CiAgICAgT3duUHRyPERSVERldlRvb2xzQ2xpZW50
PiBtX2RydERldlRvb2xzQ2xpZW50OwogICAgIE93blB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cj4gbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsKKyAgICBPd25QdHI8R2FtZXBhZENvbnRyb2xs
ZXI+IG1fZ2FtZXBhZENvbnRyb2xsZXI7CiAgICAgT3duUHRyPEV2ZW50U2VuZGVyPiBtX2V2ZW50
U2VuZGVyOwogICAgIE93blB0cjxMYXlvdXRUZXN0Q29udHJvbGxlcj4gbV9sYXlvdXRUZXN0Q29u
dHJvbGxlcjsKICAgICBPd25QdHI8UGxhaW5UZXh0Q29udHJvbGxlcj4gbV9wbGFpblRleHRDb250
cm9sbGVyOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGJhNjFmZTRjNmEwMzE1ZmU0NTNkMGQ4ZmE1OWI4OTFiNjI4NzQ0NjQu
LjI4N2RkMzZiZGMyNjc0NzNkMzcwMjU4YmJmNDUyYWJhYWUzMzBkNmEgMTAwNzU1Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzOSBAQAorMjAxMS0xMS0xNyAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgQWRkaW5nIGdhbWVwYWQgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEJhc2ljIHRlc3RzIG9mIGdhbWVwYWQg
ZnVuY3Rpb25hbGl0eS4gUmViYXNlIG9uZSB0ZXN0IHRoYXQgZW51bWVyYXRlcworICAgICAgICB0
aGUgbmF2aWdhdG9yIG9iamVjdC4gVXBkYXRlIFNraXBwZWQncyBmb3IgcGxhdGZvcm1zIHRoYXQg
ZG9uJ3QKKyAgICAgICAgc3VwcG9ydCBnYW1lcGFkLgorCisgICAgICAgICogZ2FtZXBhZC9nYW1l
cGFkLWFwaS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGdhbWVwYWQvZ2FtZXBhZC1h
cGkuaHRtbDogQWRkZWQuCisgICAgICAgICogZ2FtZXBhZC9nYW1lcGFkLXBvbGxpbmctYWNjZXNz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZ2FtZXBhZC9nYW1lcGFkLXBvbGxpbmct
YWNjZXNzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGdhbWVwYWQvZ2FtZXBhZC10ZXN0LmpzOiBB
ZGRlZC4KKyAgICAgICAgKGxvZ0NvbnNvbGUpOgorICAgICAgICAodGVzdEV4cGVjdGVkKToKKyAg
ICAgICAgKHJlcG9ydEV4cGVjdGVkKToKKyAgICAgICAgKHdhaXRGb3JFdmVudEFuZEVuZCk6Cisg
ICAgICAgICh3YWl0Rm9yRXZlbnQuX2V2ZW50Q2FsbGJhY2spOgorICAgICAgICAod2FpdEZvckV2
ZW50KToKKyAgICAgICAgKHdhaXRGb3JFdmVudEFuZFRlc3QuX2V2ZW50Q2FsbGJhY2spOgorICAg
ICAgICAod2FpdEZvckV2ZW50QW5kVGVzdCk6CisgICAgICAgICh3YWl0Rm9yRXZlbnRUZXN0QW5k
RW5kKToKKyAgICAgICAgKGVuZFRlc3QpOgorICAgICAgICAobG9nUmVzdWx0KToKKyAgICAgICAg
KGNvbnNvbGVXcml0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vbmF2
aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9lZmwvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNh
aXJvL1NraXBwZWQ6CisKIDIwMTEtMTEtMTcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDA2NTIu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtYXBpLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1hcGktZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNmOGY0MGFmMzY0MmY1OGUwYjc0YTQ1ZmJjZTIyOTFlOGQ5NTQxMGIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtYXBpLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDMgQEAKK0VYUEVDVEVEIChuYXZpZ2F0b3IuZ2FtZXBhZHMgIT09ICd1bmRlZmluZWQn
KSBPSworRU5EIE9GIFRFU1QKK01ha2Ugc3VyZSB0aGUgbWFpbiBwb2xsaW5nIGFjY2VzcyBwb2lu
dCBleGlzdHMgb24gbmF2aWdhdG9yLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ2FtZXBhZC9n
YW1lcGFkLWFwaS5odG1sIGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLWFwaS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmIyMjczYWZjMDAxMWZhZjM5N2E3OWFkM2I5OTFlZGE5MDBkNTU0NzEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtYXBpLmh0bWwKQEAgLTAs
MCArMSw5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9ImdhbWVwYWQt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIHRlc3RFeHBlY3RlZCgibmF2aWdhdG9y
LmdhbWVwYWRzIiwgdW5kZWZpbmVkLCAiIT09Iik7CisgICAgZW5kVGVzdCgpOworPC9zY3JpcHQ+
Cis8cD5NYWtlIHN1cmUgdGhlIG1haW4gcG9sbGluZyBhY2Nlc3MgcG9pbnQgZXhpc3RzIG9uIG5h
dmlnYXRvci48L3A+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9nYW1lcGFkL2dh
bWVwYWQtcG9sbGluZy1hY2Nlc3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9n
YW1lcGFkLXBvbGxpbmctYWNjZXNzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDI2MWU4NWY2
MThmYTk4NzU3N2RlMDlhOTE4ZTI2Y2QxZTYzNTJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXBvbGxpbmctYWNjZXNzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE3IEBACitFWFBFQ1RFRCAobmF2aWdhdG9yLmdhbWVwYWRzLmxlbmd0aCA9PSAnNCcpIE9L
CitFWFBFQ1RFRCAobmF2aWdhdG9yLmdhbWVwYWRzWzBdID09ICdudWxsJykgT0sKK0VYUEVDVEVE
IChuYXZpZ2F0b3IuZ2FtZXBhZHNbMV0gPT0gJ251bGwnKSBPSworRVhQRUNURUQgKG5hdmlnYXRv
ci5nYW1lcGFkc1syXSA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAobmF2aWdhdG9yLmdhbWVwYWRz
WzNdID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChuYXZpZ2F0b3IuZ2FtZXBhZHNbMF0gIT0gJ251
bGwnKSBPSworRVhQRUNURUQgKG5hdmlnYXRvci5nYW1lcGFkc1swXSA9PSAnbnVsbCcpIE9LCitF
WFBFQ1RFRCAobmF2aWdhdG9yLmdhbWVwYWRzWzBdLmlkID09ICdNb2NrU3RpY2sgMzAwMCcpIE9L
CitFWFBFQ1RFRCAobmF2aWdhdG9yLmdhbWVwYWRzWzBdLmJ1dHRvbnMubGVuZ3RoID09ICcyJykg
T0sKK0VYUEVDVEVEIChuYXZpZ2F0b3IuZ2FtZXBhZHNbMF0uYXhlcy5sZW5ndGggPT0gJzInKSBP
SworRVhQRUNURUQgKG5hdmlnYXRvci5nYW1lcGFkc1swXS5idXR0b25zWzBdID09ICcxJykgT0sK
K0VYUEVDVEVEIChuYXZpZ2F0b3IuZ2FtZXBhZHNbMF0uYnV0dG9uc1sxXSA9PSAnMCcpIE9LCitF
WFBFQ1RFRCAobmF2aWdhdG9yLmdhbWVwYWRzWzBdLmF4ZXMubGVuZ3RoID09ICcyJykgT0sKK0VY
UEVDVEVEIChuYXZpZ2F0b3IuZ2FtZXBhZHNbMF0uYXhlc1swXSA9PSAnMC41JykgT0sKK0VYUEVD
VEVEIChuYXZpZ2F0b3IuZ2FtZXBhZHNbMF0uYXhlc1sxXSA9PSAnLTEnKSBPSworRU5EIE9GIFRF
U1QKK1R5cGljYWwgcG9sbGluZyBhY2Nlc3MgdG8gZ2FtZXBhZHMgY29udGVudHMuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MuaHRtbCBiL0xh
eW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk5MmI1ZmFjODk4ZjEwYTIyYmYyZWU4YWEwMmZkMjYwZThlZmM5ZjUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MuaHRtbApAQCAt
MCwwICsxLDUwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9ImdhbWVw
YWQtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cuZ2FtZXBhZENv
bnRyb2xsZXIpCisgICAgeworICAgICAgICAvLyBzdGFydCBhbGwgZGlzY29ubmVjdGVkCisgICAg
ICAgIGdhbWVwYWRDb250cm9sbGVyLmRpc2Nvbm5lY3QoMCk7CisgICAgICAgIGdhbWVwYWRDb250
cm9sbGVyLmRpc2Nvbm5lY3QoMSk7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLmRpc2Nvbm5l
Y3QoMik7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLmRpc2Nvbm5lY3QoMyk7CisgICAgICAg
IHRlc3RFeHBlY3RlZCgibmF2aWdhdG9yLmdhbWVwYWRzLmxlbmd0aCIsIDQpOworICAgICAgICB0
ZXN0RXhwZWN0ZWQoIm5hdmlnYXRvci5nYW1lcGFkc1swXSIsIG51bGwpOworICAgICAgICB0ZXN0
RXhwZWN0ZWQoIm5hdmlnYXRvci5nYW1lcGFkc1sxXSIsIG51bGwpOworICAgICAgICB0ZXN0RXhw
ZWN0ZWQoIm5hdmlnYXRvci5nYW1lcGFkc1syXSIsIG51bGwpOworICAgICAgICB0ZXN0RXhwZWN0
ZWQoIm5hdmlnYXRvci5nYW1lcGFkc1szXSIsIG51bGwpOworCisgICAgICAgIC8vIGNvbm5lY3Qg
YW5kIGRpc2Nvbm5lY3QKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIuY29ubmVjdCgwKTsKKyAg
ICAgICAgdGVzdEV4cGVjdGVkKCJuYXZpZ2F0b3IuZ2FtZXBhZHNbMF0iLCBudWxsLCAiIT0iKTsK
KyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIuZGlzY29ubmVjdCgwKTsKKyAgICAgICAgdGVzdEV4
cGVjdGVkKCJuYXZpZ2F0b3IuZ2FtZXBhZHNbMF0iLCBudWxsKTsKKworICAgICAgICAvLyBjb25u
ZWN0IGFnYWluLCBhbmQgY2hlY2sgc3RhbmRhcmQgYWNjZXNzCisgICAgICAgIGdhbWVwYWRDb250
cm9sbGVyLmNvbm5lY3QoMCk7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLnNldElkKDAsICJN
b2NrU3RpY2sgMzAwMCIpOworICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5zZXRCdXR0b25Db3Vu
dCgwLCAyKTsKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIuc2V0QXhpc0NvdW50KDAsIDIpOwor
ICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5zZXRCdXR0b25EYXRhKDAsIDAsIDEpOworICAgICAg
ICBnYW1lcGFkQ29udHJvbGxlci5zZXRCdXR0b25EYXRhKDAsIDEsIDApOworICAgICAgICBnYW1l
cGFkQ29udHJvbGxlci5zZXRBeGlzRGF0YSgwLCAwLCAuNSk7CisgICAgICAgIGdhbWVwYWRDb250
cm9sbGVyLnNldEF4aXNEYXRhKDAsIDEsIC0xLjApOworICAgICAgICB0ZXN0RXhwZWN0ZWQoIm5h
dmlnYXRvci5nYW1lcGFkc1swXS5pZCIsICJNb2NrU3RpY2sgMzAwMCIpOworICAgICAgICB0ZXN0
RXhwZWN0ZWQoIm5hdmlnYXRvci5nYW1lcGFkc1swXS5idXR0b25zLmxlbmd0aCIsIDIpOworICAg
ICAgICB0ZXN0RXhwZWN0ZWQoIm5hdmlnYXRvci5nYW1lcGFkc1swXS5heGVzLmxlbmd0aCIsIDIp
OworICAgICAgICB0ZXN0RXhwZWN0ZWQoIm5hdmlnYXRvci5nYW1lcGFkc1swXS5idXR0b25zWzBd
IiwgMS4wKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJuYXZpZ2F0b3IuZ2FtZXBhZHNbMF0uYnV0
dG9uc1sxXSIsIDAuMCk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgibmF2aWdhdG9yLmdhbWVwYWRz
WzBdLmF4ZXMubGVuZ3RoIiwgMik7CisgICAgICAgIHRlc3RFeHBlY3RlZCgibmF2aWdhdG9yLmdh
bWVwYWRzWzBdLmF4ZXNbMF0iLCAwLjUpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoIm5hdmlnYXRv
ci5nYW1lcGFkc1swXS5heGVzWzFdIiwgLTEuMCk7CisKKyAgICAgICAgZW5kVGVzdCgpOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBjb25zb2xlLmxvZygiRkFJTDogbm8gZ2FtZXBh
ZENvbnRyb2xsZXIgYXZhaWxhYmxlLiIpCisgICAgfQorPC9zY3JpcHQ+Cis8cD5UeXBpY2FsIHBv
bGxpbmcgYWNjZXNzIHRvIGdhbWVwYWRzIGNvbnRlbnRzLjwvcD4KKzwvYm9keT4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvZ2Ft
ZXBhZC9nYW1lcGFkLXRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjIwMWE5NzFmNjU0Y2JmMTQwNWVlOGJk
ZWYyMTBlMWY5MGM0NjNiNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2dhbWVwYWQv
Z2FtZXBhZC10ZXN0LmpzCkBAIC0wLDAgKzEsMTI2IEBACit2YXIgY29uc29sZSA9IG51bGw7Cit2
YXIgcHJpbnRGdWxsVGVzdERldGFpbHMgPSB0cnVlOyAvLyBUaGlzIGlzIG9wdGlvbmFseSBzd2l0
Y2hlZCBvZiBieSB0ZXN0IHdob3NlIHRlc3RlZCB2YWx1ZXMgY2FuIGRpZmZlci4gKHNlZSBkaXNh
YmxlRnVsbFRlc3REZXRhaWxzUHJpbnRpbmcoKSkKKworbG9nQ29uc29sZSgpOworCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30K
KworZnVuY3Rpb24gbG9nQ29uc29sZSgpCit7CisgICAgaWYgKCFjb25zb2xlICYmIGRvY3VtZW50
LmJvZHkpIHsKKyAgICAgICAgY29uc29sZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGUpOworICAgIH0KKyAg
ICByZXR1cm4gY29uc29sZTsKK30KKworZnVuY3Rpb24gdGVzdEV4cGVjdGVkKHRlc3RGdW5jU3Ry
aW5nLCBleHBlY3RlZCwgY29tcGFyaXNvbikKK3sKKyAgICB0cnkgeworICAgICAgICB2YXIgb2Jz
ZXJ2ZWQgPSBldmFsKHRlc3RGdW5jU3RyaW5nKTsKKyAgICB9IGNhdGNoIChleCkgeworICAgICAg
ICBjb25zb2xlV3JpdGUoZXgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlm
IChjb21wYXJpc29uID09PSB1bmRlZmluZWQpCisgICAgICAgIGNvbXBhcmlzb24gPSAnPT0nOwor
CisgICAgdmFyIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICBzd2l0Y2ggKGNvbXBhcmlzb24pCisgICAg
eworICAgICAgICBjYXNlICc8JzogIHN1Y2Nlc3MgPSBvYnNlcnZlZCA8ICBleHBlY3RlZDsgYnJl
YWs7CisgICAgICAgIGNhc2UgJzw9Jzogc3VjY2VzcyA9IG9ic2VydmVkIDw9IGV4cGVjdGVkOyBi
cmVhazsKKyAgICAgICAgY2FzZSAnPic6ICBzdWNjZXNzID0gb2JzZXJ2ZWQgPiAgZXhwZWN0ZWQ7
IGJyZWFrOworICAgICAgICBjYXNlICc+PSc6IHN1Y2Nlc3MgPSBvYnNlcnZlZCA+PSBleHBlY3Rl
ZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJyE9Jzogc3VjY2VzcyA9IG9ic2VydmVkICE9IGV4cGVj
dGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAnIT09Jzogc3VjY2VzcyA9IG9ic2VydmVkICE9PSBl
eHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJz09Jzogc3VjY2VzcyA9IG9ic2VydmVkID09
IGV4cGVjdGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAnPT09Jzogc3VjY2VzcyA9IG9ic2VydmVk
ID09PSBleHBlY3RlZDsgYnJlYWs7CisgICAgfQorICAgIAorICAgIHJlcG9ydEV4cGVjdGVkKHN1
Y2Nlc3MsIHRlc3RGdW5jU3RyaW5nLCBjb21wYXJpc29uLCBleHBlY3RlZCwgb2JzZXJ2ZWQpCit9
CisKK3ZhciB0ZXN0TnVtYmVyID0gMDsKKworZnVuY3Rpb24gcmVwb3J0RXhwZWN0ZWQoc3VjY2Vz
cywgdGVzdEZ1bmNTdHJpbmcsIGNvbXBhcmlzb24sIGV4cGVjdGVkLCBvYnNlcnZlZCkKK3sKKyAg
ICB0ZXN0TnVtYmVyKys7CisKKyAgICB2YXIgbXNnID0gIlRlc3QgIiArIHRlc3ROdW1iZXI7CisK
KyAgICBpZiAocHJpbnRGdWxsVGVzdERldGFpbHMgfHwgIXN1Y2Nlc3MpCisgICAgICAgIG1zZyA9
ICJFWFBFQ1RFRCAoPGVtPiIgKyB0ZXN0RnVuY1N0cmluZyArICIgPC9lbT4iICsgY29tcGFyaXNv
biArICIgJzxlbT4iICsgZXhwZWN0ZWQgKyAiPC9lbT4nKSI7CisKKyAgICBpZiAoIXN1Y2Nlc3Mp
CisgICAgICAgIG1zZyArPSAgIiwgT0JTRVJWRUQgJzxlbT4iICsgb2JzZXJ2ZWQgKyAiPC9lbT4n
IjsKKworICAgIGxvZ1Jlc3VsdChzdWNjZXNzLCBtc2cpOworfQorCitmdW5jdGlvbiB3YWl0Rm9y
RXZlbnRBbmRFbmQoZWxlbWVudCwgZXZlbnROYW1lLCBmdW5jU3RyaW5nKQoreworICAgIHdhaXRG
b3JFdmVudChlbGVtZW50LCBldmVudE5hbWUsIGZ1bmNTdHJpbmcsIHRydWUpCit9CisKK2Z1bmN0
aW9uIHdhaXRGb3JFdmVudChlbGVtZW50LCBldmVudE5hbWUsIGZ1bmMsIGVuZGl0KQoreworICAg
IGZ1bmN0aW9uIF9ldmVudENhbGxiYWNrKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc29sZVdy
aXRlKCJFVkVOVCgiICsgZXZlbnROYW1lICsgIikiKTsKKworICAgICAgICBpZiAoZnVuYykKKyAg
ICAgICAgICAgIGZ1bmMoZXZlbnQpOworICAgICAgICAKKyAgICAgICAgaWYgKGVuZGl0KQorICAg
ICAgICAgICAgZW5kVGVzdCgpOyAgICAKKyAgICB9CisKKyAgICBlbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxsYmFjayk7Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JF
dmVudEFuZFRlc3QoZWxlbWVudCwgZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZywgZW5kaXQpCit7
CisgICAgZnVuY3Rpb24gX2V2ZW50Q2FsbGJhY2soZXZlbnQpCisgICAgeworICAgICAgICBsb2dS
ZXN1bHQoZXZhbCh0ZXN0RnVuY1N0cmluZyksICJFVkVOVCgiICsgZXZlbnROYW1lICsgIikgVEVT
VCgiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSIpOworICAgICAgICBpZiAoZW5kaXQpCisgICAgICAg
ICAgICBlbmRUZXN0KCk7ICAgIAorICAgIH0KKworICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cihldmVudE5hbWUsIF9ldmVudENhbGxiYWNrKTsKK30KKworZnVuY3Rpb24gd2FpdEZvckV2ZW50
VGVzdEFuZEVuZChlbGVtZW50LCBldmVudE5hbWUsIHRlc3RGdW5jU3RyaW5nKQoreworICAgIHdh
aXRGb3JFdmVudEFuZFRlc3QoZWxlbWVudCwgZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZywgdHJ1
ZSk7Cit9CisgIAordmFyIHRlc3RFbmRlZCA9IGZhbHNlOworCitmdW5jdGlvbiBlbmRUZXN0KCkK
K3sKKyAgICBjb25zb2xlV3JpdGUoIkVORCBPRiBURVNUIik7CisgICAgdGVzdEVuZGVkID0gdHJ1
ZTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7ICAgICAKK30KKworZnVuY3Rpb24gbG9nUmVzdWx0
KHN1Y2Nlc3MsIHRleHQpCit7CisgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgIGNvbnNvbGVXcml0
ZSh0ZXh0ICsgIiA8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4nPk9LPC9zcGFuPiIpOworICAgIGVs
c2UKKyAgICAgICAgY29uc29sZVdyaXRlKHRleHQgKyAiIDxzcGFuIHN0eWxlPSdjb2xvcjpyZWQn
PkZBSUw8L3NwYW4+Iik7Cit9CisKK2Z1bmN0aW9uIGNvbnNvbGVXcml0ZSh0ZXh0KQoreworICAg
IGlmICh0ZXN0RW5kZWQpCisgICAgICAgIHJldHVybjsKKyAgICBsb2dDb25zb2xlKCkuaW5uZXJI
VE1MICs9IHRleHQgKyAiPGJyPiI7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vbmF2aWdhdG9yLWRl
dGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCA3NTQyNWExZjc4YTM5ODE4YzNkMTU1
MTgzYzIxY2EwN2M1Y2Y3YjhmLi41Y2RhNGRhY2U5ZjhjZTIzYThlMTZhNTk0Mzk4NzA5OWQyMjNi
ZjFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9u
YXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1l
eHBlY3RlZC50eHQKQEAgLTQsNiArNCw3IEBAIG5hdmlnYXRvci5hcHBDb2RlTmFtZSBpcyBPSwog
bmF2aWdhdG9yLmFwcE5hbWUgaXMgT0sKIG5hdmlnYXRvci5hcHBWZXJzaW9uIGlzIE9LCiBuYXZp
Z2F0b3IuY29va2llRW5hYmxlZCBpcyBPSworbmF2aWdhdG9yLmdhbWVwYWRzIGlzIE9LCiBuYXZp
Z2F0b3IuZ2V0U3RvcmFnZVVwZGF0ZXMoKSBpcyBPSwogbmF2aWdhdG9yLmphdmFFbmFibGVkKCkg
aXMgT0sKIG5hdmlnYXRvci5sYW5ndWFnZSBpcyBPSwpAQCAtMjEsNiArMjIsNyBAQCBuYXZpZ2F0
b3IuYXBwQ29kZU5hbWUgaXMgT0sKIG5hdmlnYXRvci5hcHBOYW1lIGlzIE9LCiBuYXZpZ2F0b3Iu
YXBwVmVyc2lvbiBpcyBPSwogbmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQgaXMgT0sKK25hdmlnYXRv
ci5nYW1lcGFkcyBpcyBPSwogbmF2aWdhdG9yLmdldFN0b3JhZ2VVcGRhdGVzKCkgaXMgT0sKIG5h
dmlnYXRvci5qYXZhRW5hYmxlZCgpIGlzIE9LCiBuYXZpZ2F0b3IubGFuZ3VhZ2UgaXMgT0sKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggNWY4MTQ0MzI3MGVjYTAxOWU0MmZkN2Y4OTlmMzc1
ZjY1ZjZjODAzYS4uZjNkOWNjZjQ3ZmFlZDFmMWIxOTEzODY3NDlhMmRhY2JmZTc4YzIyZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTE5MjQsMyArMTkyNCw2IEBAIGZhc3QvZG9tL01p
Y3JvRGF0YQogIyBUZXN0cyBmb3IgTWVkaWFTb3VyY2UgQVBJLiBGZWF0dXJlIGlzIG5vdCB5ZXQg
ZnVuY3Rpb25hbC4KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0
NzMxCiBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS8KKworIyBUaGUgRUZMIHBvcnQgZG9l
cyBub3Qgc3VwcG9ydCBnYW1lcGFkLgorZ2FtZXBhZC8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQK
aW5kZXggYTBhYjM0ZGExODIxZGMzZmFkZTJhODgwMjM1ZTY0M2NiNWM3ZmM5Mi4uMmE3YjY0OTc1
Mjk2ZTY2NzZhMzMyMjI1MTQ2MmI3Y2FmYzE3Y2NiMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBw
ZWQKQEAgLTE2MDMsMyArMTYwMyw2IEBAIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3Nh
Z2UtYXJyYXlzLmh0bWwKICMgZmFzdC9mb3Jtcy9jaGVja2JveC1hcHBlYXJhbmNlLWNoYW5nZS1i
eS1jaGVja2VkLmh0bWwgaXMgZmFpbGluZyBhZnRlciBlbmFibGluZyByZWZ0ZXN0cwogIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI1NjkKIGZhc3QvZm9ybXMvY2hl
Y2tib3gtYXBwZWFyYW5jZS1jaGFuZ2UtYnktY2hlY2tlZC5odG1sCisKKyMgVGhlIEdUSyBwb3J0
IGRvZXMgbm90IHN1cHBvcnQgZ2FtZXBhZC4KK2dhbWVwYWQvCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lw
cGVkCmluZGV4IGZjMWUwMzIyN2I5ODc3NTllN2MxYmExYjcyZDU1N2NkMTY0ODgzYzYuLjM5OGVl
YmFkZGYzNDhhNDAwNTZiYjE5NmI1M2IxNjAyYzBjZTIwZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9T
a2lwcGVkCkBAIC00ODcsMyArNDg3LDYgQEAgZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVz
c2FnZS1hcnJheXMuaHRtbAogIyBbTWFjXSBmYXN0L2Zvcm1zL2ZpbGUvZmlsZS1pbnB1dC1yZXNl
dC5odG1sIGZhaWxpbmcgYWZ0ZXIgZW5hYmxpbmcgcmVmdGVzdHMKICMgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNTcxCiBmYXN0L2Zvcm1zL2ZpbGUvZmlsZS1pbnB1
dC1yZXNldC5odG1sCisKKyMgVGhlIG1hYyBwb3J0IGRvZXMgbm90IHN1cHBvcnQgZ2FtZXBhZC4K
K2dhbWVwYWQvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCA0ZGUzYmY3NWZiMzUzMzU5MDY1
M2VmZmVhMmE2NzhlYTA5MTlkZDQxLi43NDIwY2EwMWJlNGJjOWVmYTZkY2MyMGUzZmUxNTViMzBl
YjQyZGYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTI1MDUsMyArMjUwNSw2IEBAIGZh
c3QvdGV4dC9maW5kLXNwYWNlcy5odG1sCiAjIEltcGxlbWVudCBDU1MzIEltYWdlcyBjcm9zcy1m
YWRlKCkgaW1hZ2UgZnVuY3Rpb24KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUyMTYyCiBmYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLWNy
b3NzLWZhZGUuaHRtbAorCisjIFRoZSBRdCBwb3J0IGRvZXMgbm90IHN1cHBvcnQgZ2FtZXBhZC4K
K2dhbWVwYWQvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IDI4YTUzMGM3Y2YwM2YyODdm
ZTc1YjJhZDQyN2VjOWYxNDE1YjAyYjQuLjg1OGQ2MGVhOWQ4ZWQxNGFhZjFlZDc0ZTgyYTE0MWQy
MjE2M2UyMWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC0xNDU0LDQgKzE0NTQsNSBA
QCBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sb2NhbGUtc2Vuc2l0aXZlLWZvbnRzLmh0bWwKICMg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNDM1CiBmYXN0L2RvbS9X
aW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFycmF5cy5odG1sCiAKLQorIyBUaGUgd2luIHBvcnQg
ZG9lcyBub3Qgc3VwcG9ydCBnYW1lcGFkLgorZ2FtZXBhZC8KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5j
YWlyby9Ta2lwcGVkCmluZGV4IDg2YTQ0N2MwZDlkNTM1MTE1NDMyNzJiMWIxNjhiOWZmMmViY2Fk
NWYuLjEwZmJiZmU0ZTg2Yjc2NzgwNzFjYjBhMzJiMDQyNjhiNGIzNTZlNmEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZApAQCAtMTk2NiwzICsxOTY2LDYgQEAgZmFzdC9ldmVu
dHMvcGxhdGZvcm0td2hlZWxldmVudC1wYWdpbmcteS1pbi1zY3JvbGxpbmctcGFnZS5odG1sCiAK
ICMgRFJUIGRvZXNuJ3Qgc3VwcG9ydCBvdmVycmlkZVByZWZlcmVuY2UoIldlYktpdCpGb250TWFw
Ii4uLikKIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMuaHRt
bAorCisjIFRoZSB3aW5jYWlybyBwb3J0IGRvZXMgbm90IHN1cHBvcnQgZ2FtZXBhZC4KK2dhbWVw
YWQvCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116114</attachid>
            <date>2011-11-21 12:09:37 -0800</date>
            <delta_ts>2011-11-21 12:58:19 -0800</delta_ts>
            <desc>remove everything except platform plumbing and DRT/testing</desc>
            <filename>bug-69451-20111121120936.patch</filename>
            <type>text/plain</type>
            <size>27954</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRjOTNkOTAwNTZkY2Y0
YzM3ZWYwYzY1Yjk5MDBmNWIxZDcwMmFmZC4uMmY4NjQ5ZmQ3OGY5ZjVmNTMzNTk4YTg0YTA3NmIw
OGQ0Y2RmMTA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTExLTIxICBTY290
dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGRpbmcgZ2FtZXBh
ZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02OTQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFB1bGwgZGF0YSBpbiBmcm9tIHBsYXRmb3JtIGxheWVyIG9uIHJldHJpZXZhbC4KKworICAgICAg
ICBUZXN0OiBnYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MuaHRtbAorCisgICAgICAgICog
cGFnZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRH
YW1lcGFkcyk6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9HYW1lcGFkcy5oOiBBZGRlZC4KKwogMjAxMS0xMS0yMSAgQW5kcmVhcyBLbGluZyAgPGtsaW5n
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3R5bGVTaGVldDogTW92ZSBjb21wbGV0ZVVSTCgpIHRv
IENTU1N0eWxlU2hlZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDY1ZjEyOTIxNzQx
YjBhNWFmMzhlMTUyNWY2MGUwMjIzM2RhNTFjNzMuLmY0MmE1NGRjMDBjZjA3ZDk3YzAyMzRiODVh
ZmI3M2UyNWE3YzFjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMTEtMjEgIFNjb3R0IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEFkZGluZyBnYW1lcGFkIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGltcGxlbWVudGF0aW9uIG9mIHNhbXBsZUdhbWVwYWRz
IGluIENocm9taXVtIHBsYXRmb3JtLiBSZXRyaWV2ZXMKKyAgICAgICAgZ2FtZXBhZCBkYXRhIGZy
b20gQ2hyb21pdW0gcG9ydCBhbmQgY29udmVydHMgdG8gRE9NIGZvcm1hdCwgaS5lLgorICAgICAg
ICBHYW1lcGFkTGlzdC4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogc3JjL0dh
bWVwYWRzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzYW1wbGVHYW1lcGFkcyk6CisK
IDIwMTEtMTEtMjEgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBJbXBsZW1lbnQgYSBzZXR0ZXIgZm9yIFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggZGU1NGRjNTFlMWViZDE2MTYzZjNmM2M2OTRl
ZjVjYjU3ZTY5MGE3Yi4uYmMxZTA1MzRkMGVjOTAyNzE5ZmE3NDRhNzE5OTMzZDQ5NGI5OWJlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtNDcsNiArNDcsNyBAQAogCiAjaWYgRU5B
QkxFKEdBTUVQQUQpCiAjaW5jbHVkZSAiR2FtZXBhZExpc3QuaCIKKyNpbmNsdWRlICJHYW1lcGFk
cy5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpAQCAtMzExLDggKzMxMiwx
MCBAQCB2b2lkIE5hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1lZGlhKGNvbnN0IFN0cmluZyYgb3B0
aW9ucywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVcwogI2lmIEVOQUJMRShHQU1FUEFEKQogR2FtZXBh
ZExpc3QqIE5hdmlnYXRvcjo6d2Via2l0R2FtZXBhZHMoKQogewotICAgIC8vIFN0dWJiZWQgdW50
aWwgcGxhdGZvcm0vIGNoYW5nZXMgbGFuZGVkLgotICAgIHJldHVybiAwOworICAgIGlmICghbV9n
YW1lcGFkcykKKyAgICAgICAgbV9nYW1lcGFkcyA9IEdhbWVwYWRMaXN0OjpjcmVhdGUoKTsKKyAg
ICBzYW1wbGVHYW1lcGFkcyhtX2dhbWVwYWRzLmdldCgpKTsKKyAgICByZXR1cm4gbV9nYW1lcGFk
cy5nZXQoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05h
dmlnYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAppbmRleCA1YmFiZGM1
ZGQ4ZjJmOWRjMjVhOTEwMGNkMmJmNWZmZjdlYmJmZWFlLi42MzIxYjMxZDk3MzYyMjkzY2MxODIz
ZDY5ZGZhODlmMDgxNWIwMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmln
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKQEAgLTg1LDYgKzg1
LDkgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFJlZlB0cjxET01QbHVnaW5BcnJheT4gbV9wbHVn
aW5zOwogICAgIG11dGFibGUgUmVmUHRyPERPTU1pbWVUeXBlQXJyYXk+IG1fbWltZVR5cGVzOwog
ICAgIG11dGFibGUgUmVmUHRyPEdlb2xvY2F0aW9uPiBtX2dlb2xvY2F0aW9uOworI2lmIEVOQUJM
RShHQU1FUEFEKQorICAgIG11dGFibGUgUmVmUHRyPEdhbWVwYWRMaXN0PiBtX2dhbWVwYWRzOwor
I2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBtdXRhYmxlIFJlZlB0cjxQb2lu
dGVyTG9jaz4gbV9wb2ludGVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9HYW1lcGFkcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2FtZXBhZHMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNDAxZmI1OTE3YTRhMjM1YWUzMTQ0NDlmYzFmMjU5Y2I2ZTc2YzAxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2FtZXBhZHMuaApAQCAtMCww
ICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Cisg
KgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICog
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0gKKyAqIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdhbWVwYWRzX2gKKyNkZWZpbmUgR2Ft
ZXBhZHNfaAorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgR2FtZXBhZExpc3Q7CisKK3ZvaWQgc2FtcGxlR2FtZXBhZHMoR2FtZXBhZExpc3QqIGlu
dG8pOworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKKworI2VuZGlmIC8vIEdhbWVw
YWRzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAxMjEwODk0NjZmNTY5ODRkNWQ0
N2Q5ZmMxNjc5YzE3MDYzMzM2NTI2Li40ZTZlOWJhZTQ3M2IwYzBmOGQwMDQ3ZGRmNjhmN2FhNDJk
M2E0YjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0zOTAsNiArMzkwLDcgQEAK
ICAgICAgICAgICAgICAgICAnc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAg
ICdzcmMvRnJhbWVOZXR3b3JraW5nQ29udGV4dEltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9HYW1lcGFkcy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvR2VvbG9jYXRpb25DbGllbnRQ
cm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvR2VvbG9jYXRpb25DbGllbnRQcm94eS5o
JywKICAgICAgICAgICAgICAgICAnc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dhbWVwYWRzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dhbWVwYWRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kN2M0M2Ez
MWMxOWMxZmZhY2VjMWU5YWNkMGRkMzBmOTE5NmE3M2QxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR2FtZXBhZHMuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorICogREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHYW1lcGFkcy5oIgor
CisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJHYW1lcGFkTGlzdC5oIgorI2luY2x1
ZGUgIldlYkdhbWVwYWRzLmgiCisjaW5jbHVkZSAiV2ViS2l0LmgiCisjaW5jbHVkZSAiV2ViS2l0
UGxhdGZvcm1TdXBwb3J0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgR2FtZXBhZExpc3Q7CisKK3ZvaWQgc2FtcGxlR2FtZXBhZHMo
R2FtZXBhZExpc3QqIGludG8pCit7CisgICAgV2ViR2FtZXBhZHMgZ2FtZXBhZHM7CisKKyAgICB3
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+c2FtcGxlR2FtZXBhZHMoZ2FtZXBhZHMpOworCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdlYktpdDo6V2ViR2FtZXBhZHM6Oml0ZW1zTGVuZ3Ro
Q2FwOyArK2kpIHsKKyAgICAgICAgV2ViR2FtZXBhZCYgd2ViR2FtZXBhZCA9IGdhbWVwYWRzLml0
ZW1zW2ldOworICAgICAgICBpZiAoaSA8IGdhbWVwYWRzLmxlbmd0aCAmJiB3ZWJHYW1lcGFkLmNv
bm5lY3RlZCkgeworICAgICAgICAgICAgUmVmUHRyPEdhbWVwYWQ+IGdhbWVwYWQgPSBpbnRvLT5p
dGVtKGkpOworICAgICAgICAgICAgaWYgKCFnYW1lcGFkKQorICAgICAgICAgICAgICAgIGdhbWVw
YWQgPSBHYW1lcGFkOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGdhbWVwYWQtPmlkKHdlYkdhbWVw
YWQuaWQpOworICAgICAgICAgICAgZ2FtZXBhZC0+aW5kZXgoaSk7CisgICAgICAgICAgICBnYW1l
cGFkLT50aW1lc3RhbXAod2ViR2FtZXBhZC50aW1lc3RhbXApOworICAgICAgICAgICAgZ2FtZXBh
ZC0+YXhlcyh3ZWJHYW1lcGFkLmF4ZXNMZW5ndGgsIHdlYkdhbWVwYWQuYXhlcyk7CisgICAgICAg
ICAgICBnYW1lcGFkLT5idXR0b25zKHdlYkdhbWVwYWQuYnV0dG9uc0xlbmd0aCwgd2ViR2FtZXBh
ZC5idXR0b25zKTsKKyAgICAgICAgICAgIGludG8tPnNldChpLCBnYW1lcGFkKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBpbnRvLT5zZXQoaSwgMCk7CisgICAgfQorfQorCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDUzZDZjNDg3MDBjNjE3ZGE1ZjBhYWMwMTEwNDczNGY0NjcxZjAyMjMuLjI1NjI0NDUyYjE3N2Vj
NjY1YzI0ZTllOWI4YzZlOTQwZjczMzhiODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMS0xMS0yMSAgU2NvdHQg
R3JhaGFtICA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkaW5nIGdhbWVwYWQg
c3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njk0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSAnZ2FtZXBhZENvbnRyb2xsZXInIHRvIENocm9taXVtIERSVC4gQWxsb3dzIGZvciBzZXR0
aW5nIG9mIG1vY2sKKyAgICAgICAgZ2FtZXBhZCBkYXRhIHRoYXQgd2lsbCBiZSByZXRyaWV2ZWQg
d2hlbiBKUyBjb2RlIHB1bGxzIHZpYSBBUEkgYWNjZXNzLgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9HYW1lcGFkQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoR2FtZXBhZENvbnRy
b2xsZXI6OkdhbWVwYWRDb250cm9sbGVyKToKKyAgICAgICAgKEdhbWVwYWRDb250cm9sbGVyOjpi
aW5kVG9KYXZhc2NyaXB0KToKKyAgICAgICAgKEdhbWVwYWRDb250cm9sbGVyOjpyZXNldCk6Cisg
ICAgICAgIChHYW1lcGFkQ29udHJvbGxlcjo6Y29ubmVjdCk6CisgICAgICAgIChHYW1lcGFkQ29u
dHJvbGxlcjo6ZGlzY29ubmVjdCk6CisgICAgICAgIChHYW1lcGFkQ29udHJvbGxlcjo6c2V0SWQp
OgorICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OnNldEJ1dHRvbkNvdW50KToKKyAgICAgICAg
KEdhbWVwYWRDb250cm9sbGVyOjpzZXRCdXR0b25EYXRhKToKKyAgICAgICAgKEdhbWVwYWRDb250
cm9sbGVyOjpzZXRBeGlzQ291bnQpOgorICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OnNldEF4
aXNEYXRhKToKKyAgICAgICAgKEdhbWVwYWRDb250cm9sbGVyOjpmYWxsYmFja0NhbGxiYWNrKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9HYW1lcGFkQ29udHJvbGxlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwOgor
ICAgICAgICAoVGVzdFNoZWxsOjpUZXN0U2hlbGwpOgorICAgICAgICAoVGVzdFNoZWxsOjpyZXNl
dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKFRlc3RTaGVsbDo6YmluZEpTT2JqZWN0c1RvV2lu
ZG93KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaDoKKyAg
ICAgICAgKFRlc3RTaGVsbDo6Z2FtZXBhZENvbnRyb2xsZXIpOgorCiAyMDExLTExLTIxICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCBydW4tZ3RrLXRlc3RzIHRlbXBvcmFyeSB3b3JrYXJvdW5kIGFmdGVyIHI5ODUwMC4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IDIzNWI5NTM3MjZiY2VhYWIx
ODVlNWQ0ODI5NWNmMTMzOTlhZjI3NjMuLmIxOWJlMjI3MmM1NTVjNzlkMjk5NzE2MDUyNGFhZjcw
Y2YyZThmNjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAt
MTYsNiArMTYsOCBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL0R1bXBSZW5kZXJUcmVlLmNwcCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9FdmVudFNlbmRlci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9HYW1lcGFkQ29u
dHJvbGxlci5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL0dhbWVwYWRDb250cm9sbGVyLmgn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suY3BwJywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0dhbWVwYWRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0dhbWVwYWRDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTc0ZDNiY2Rl
MDI4ZDk4NTQ0NTBlNmJlZTgwZWZiZmNiMTdiYjQxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vR2FtZXBhZENvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEs
MTcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVwYWRDb250cm9sbGVyLmgi
CisKKyNpbmNsdWRlICJUZXN0U2hlbGwuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwor
R2FtZXBhZENvbnRyb2xsZXI6OkdhbWVwYWRDb250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwpCisg
ICAgOiBtX3NoZWxsKHNoZWxsKQoreworICAgIGJpbmRNZXRob2QoImNvbm5lY3QiLCAmR2FtZXBh
ZENvbnRyb2xsZXI6OmNvbm5lY3QpOworICAgIGJpbmRNZXRob2QoImRpc2Nvbm5lY3QiLCAmR2Ft
ZXBhZENvbnRyb2xsZXI6OmRpc2Nvbm5lY3QpOworICAgIGJpbmRNZXRob2QoInNldElkIiwgJkdh
bWVwYWRDb250cm9sbGVyOjpzZXRJZCk7CisgICAgYmluZE1ldGhvZCgic2V0QnV0dG9uQ291bnQi
LCAmR2FtZXBhZENvbnRyb2xsZXI6OnNldEJ1dHRvbkNvdW50KTsKKyAgICBiaW5kTWV0aG9kKCJz
ZXRCdXR0b25EYXRhIiwgJkdhbWVwYWRDb250cm9sbGVyOjpzZXRCdXR0b25EYXRhKTsKKyAgICBi
aW5kTWV0aG9kKCJzZXRBeGlzQ291bnQiLCAmR2FtZXBhZENvbnRyb2xsZXI6OnNldEF4aXNDb3Vu
dCk7CisgICAgYmluZE1ldGhvZCgic2V0QXhpc0RhdGEiLCAmR2FtZXBhZENvbnRyb2xsZXI6OnNl
dEF4aXNEYXRhKTsKKworICAgIGJpbmRGYWxsYmFja01ldGhvZCgmR2FtZXBhZENvbnRyb2xsZXI6
OmZhbGxiYWNrQ2FsbGJhY2spOworCisgICAgcmVzZXQoKTsKK30KKwordm9pZCBHYW1lcGFkQ29u
dHJvbGxlcjo6YmluZFRvSmF2YXNjcmlwdChXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYlN0cmlu
ZyYgY2xhc3NuYW1lKQoreworICAgIENwcEJvdW5kQ2xhc3M6OmJpbmRUb0phdmFzY3JpcHQoZnJh
bWUsIGNsYXNzbmFtZSk7Cit9CisKK3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OnJlc2V0KCkKK3sK
KyAgICBtZW1zZXQoJmludGVybmFsRGF0YSwgMCwgc2l6ZW9mKGludGVybmFsRGF0YSkpOworfQor
Cit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpjb25uZWN0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJncywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmdzLnNpemUoKSA8IDEpIHsK
KyAgICAgICAgcHJpbnRmKCJJbnZhbGlkIGFyZ3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpbnQgaW5kZXggPSBhcmdzWzBdLnRvSW50MzIoKTsKKyAgICBpbnRlcm5hbERhdGEuaXRl
bXNbaW5kZXhdLmNvbm5lY3RlZCA9IHRydWU7CisgICAgaW50ZXJuYWxEYXRhLmxlbmd0aCA9IDA7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdlYktpdDo6V2ViR2FtZXBhZHM6Oml0ZW1z
TGVuZ3RoQ2FwOyArK2kpCisgICAgICAgIGlmIChpbnRlcm5hbERhdGEuaXRlbXNbaV0uY29ubmVj
dGVkKQorICAgICAgICAgICAgaW50ZXJuYWxEYXRhLmxlbmd0aCA9IGkgKyAxOworICAgIHdlYmtp
dF9zdXBwb3J0OjpTZXRHYW1lcGFkRGF0YShpbnRlcm5hbERhdGEpOworICAgIHJlc3VsdC0+c2V0
TnVsbCgpOworfQorCit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpkaXNjb25uZWN0KGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmdz
LnNpemUoKSA8IDEpIHsKKyAgICAgICAgcHJpbnRmKCJJbnZhbGlkIGFyZ3MiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpbnQgaW5kZXggPSBhcmdzWzBdLnRvSW50MzIoKTsKKyAgICBp
bnRlcm5hbERhdGEuaXRlbXNbaW5kZXhdLmNvbm5lY3RlZCA9IGZhbHNlOworICAgIGludGVybmFs
RGF0YS5sZW5ndGggPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXZWJLaXQ6Oldl
YkdhbWVwYWRzOjppdGVtc0xlbmd0aENhcDsgKytpKQorICAgICAgICBpZiAoaW50ZXJuYWxEYXRh
Lml0ZW1zW2ldLmNvbm5lY3RlZCkKKyAgICAgICAgICAgIGludGVybmFsRGF0YS5sZW5ndGggPSBp
ICsgMTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6U2V0R2FtZXBhZERhdGEoaW50ZXJuYWxEYXRhKTsK
KyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBHYW1lcGFkQ29udHJvbGxlcjo6c2V0
SWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmdzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7Cisg
ICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMikgeworICAgICAgICBwcmludGYoIkludmFsaWQgYXJncyIp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGludCBpbmRleCA9IGFyZ3NbMF0udG9JbnQz
MigpOworICAgIHN0ZDo6c3RyaW5nIHNyYyA9IGFyZ3NbMV0udG9TdHJpbmcoKTsKKyAgICBjb25z
dCBjaGFyKiBwID0gc3JjLmNfc3RyKCk7CisgICAgbWVtc2V0KGludGVybmFsRGF0YS5pdGVtc1tp
bmRleF0uaWQsIDAsIHNpemVvZihpbnRlcm5hbERhdGEuaXRlbXNbaW5kZXhdLmlkKSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgKnAgJiYgaSA8IFdlYktpdDo6V2ViR2FtZXBhZDo6aWRMZW5n
dGhDYXAgLSAxOyArK2kpCisgICAgICAgIGludGVybmFsRGF0YS5pdGVtc1tpbmRleF0uaWRbaV0g
PSAqcCsrOworICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRHYW1lcGFkRGF0YShpbnRlcm5hbERhdGEp
OworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpz
ZXRCdXR0b25Db3VudChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3MsIENwcFZhcmlhbnQqIHJl
c3VsdCkKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgPCAyKSB7CisgICAgICAgIHByaW50ZigiSW52
YWxpZCBhcmdzIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW50IGluZGV4ID0gYXJn
c1swXS50b0ludDMyKCk7CisgICAgaW50IGJ1dHRvbnMgPSBhcmdzWzFdLnRvSW50MzIoKTsKKyAg
ICBpbnRlcm5hbERhdGEuaXRlbXNbaW5kZXhdLmJ1dHRvbnNMZW5ndGggPSBidXR0b25zOworICAg
IHdlYmtpdF9zdXBwb3J0OjpTZXRHYW1lcGFkRGF0YShpbnRlcm5hbERhdGEpOworICAgIHJlc3Vs
dC0+c2V0TnVsbCgpOworfQorCit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpzZXRCdXR0b25EYXRh
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAg
IGlmIChhcmdzLnNpemUoKSA8IDMpIHsKKyAgICAgICAgcHJpbnRmKCJJbnZhbGlkIGFyZ3MiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbnQgaW5kZXggPSBhcmdzWzBdLnRvSW50MzIo
KTsKKyAgICBpbnQgYnV0dG9uID0gYXJnc1sxXS50b0ludDMyKCk7CisgICAgZG91YmxlIGRhdGEg
PSBhcmdzWzJdLnRvRG91YmxlKCk7CisgICAgaW50ZXJuYWxEYXRhLml0ZW1zW2luZGV4XS5idXR0
b25zW2J1dHRvbl0gPSBkYXRhOworICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRHYW1lcGFkRGF0YShp
bnRlcm5hbERhdGEpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIEdhbWVwYWRD
b250cm9sbGVyOjpzZXRBeGlzQ291bnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmdzLCBDcHBW
YXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMikgeworICAgICAgICBw
cmludGYoIkludmFsaWQgYXJncyIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGludCBp
bmRleCA9IGFyZ3NbMF0udG9JbnQzMigpOworICAgIGludCBheGVzID0gYXJnc1sxXS50b0ludDMy
KCk7CisgICAgaW50ZXJuYWxEYXRhLml0ZW1zW2luZGV4XS5heGVzTGVuZ3RoID0gYXhlczsKKyAg
ICB3ZWJraXRfc3VwcG9ydDo6U2V0R2FtZXBhZERhdGEoaW50ZXJuYWxEYXRhKTsKKyAgICByZXN1
bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBHYW1lcGFkQ29udHJvbGxlcjo6c2V0QXhpc0RhdGEo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmdzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAg
aWYgKGFyZ3Muc2l6ZSgpIDwgMykgeworICAgICAgICBwcmludGYoIkludmFsaWQgYXJncyIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGludCBpbmRleCA9IGFyZ3NbMF0udG9JbnQzMigp
OworICAgIGludCBheGlzID0gYXJnc1sxXS50b0ludDMyKCk7CisgICAgZG91YmxlIGRhdGEgPSBh
cmdzWzJdLnRvRG91YmxlKCk7CisgICAgaW50ZXJuYWxEYXRhLml0ZW1zW2luZGV4XS5heGVzW2F4
aXNdID0gZGF0YTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6U2V0R2FtZXBhZERhdGEoaW50ZXJuYWxE
YXRhKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBHYW1lcGFkQ29udHJvbGxl
cjo6ZmFsbGJhY2tDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCit7CisgICAgcHJpbnRmKCJDT05TT0xFIE1FU1NBR0U6IEphdmFTY3JpcHQgRVJST1I6
IHVua25vd24gbWV0aG9kIGNhbGxlZCBvbiAiCisgICAgICAgICAgICJHYW1lcGFkQ29udHJvbGxl
clxuIik7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9HYW1lcGFkQ29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vR2FtZXBhZENvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmVlZGIwNWQ4
ZDUyZjMzMWNiYmU3M2YyYWYyMmIxNDU5YzBkZDQzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vR2FtZXBhZENvbnRyb2xsZXIuaApAQCAtMCwwICsxLDY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBHYW1lcGFkQ29udHJvbGxlcl9oCisjZGVmaW5lIEdhbWVwYWRDb250cm9sbGVy
X2gKKworI2luY2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIKKyNpbmNsdWRlICJXZWJHYW1lcGFkcy5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkdhbWVwYWRzOworY2xhc3MgV2ViRnJh
bWU7Cit9CisKK2NsYXNzIFRlc3RTaGVsbDsKKworY2xhc3MgR2FtZXBhZENvbnRyb2xsZXIgOiBw
dWJsaWMgQ3BwQm91bmRDbGFzcyB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgR2FtZXBhZENvbnRy
b2xsZXIoVGVzdFNoZWxsKik7CisKKyAgICB2b2lkIGJpbmRUb0phdmFzY3JpcHQoV2ViS2l0OjpX
ZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBjbGFzc25hbWUpOworICAgIHZvaWQg
cmVzZXQoKTsKKworcHJpdmF0ZToKKyAgICAvLyBCb3VuZCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVz
CisgICAgdm9pZCBjb25uZWN0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
KyAgICB2b2lkIGRpc2Nvbm5lY3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OworICAgIHZvaWQgc2V0SWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwor
ICAgIHZvaWQgc2V0QnV0dG9uQ291bnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOworICAgIHZvaWQgc2V0QnV0dG9uRGF0YShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7CisgICAgdm9pZCBzZXRBeGlzQ291bnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0QXhpc0RhdGEoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgZmFsbGJhY2tDYWxsYmFjayhjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICBUZXN0U2hlbGwqIG1fc2hlbGw7CisKKyAg
ICBXZWJLaXQ6OldlYkdhbWVwYWRzIGludGVybmFsRGF0YTsKK307CisKKyNlbmRpZiAvLyBHYW1l
cGFkQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxs
LmNwcAppbmRleCA4NTA3ZjI0YzAyMjMzYmNkMTA4ODExZjBiYzcxN2I1NjNkZTdjZjA4Li44NzA2
MjJhZTQ2YmE3ZjM0ODJlZDEwMDY3YTNhZDhkZWU0ODRiMmFiIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTEyNiw2ICsxMjYsNyBAQCBUZXN0U2hl
bGw6OlRlc3RTaGVsbChib29sIHRlc3RTaGVsbE1vZGUpCiAKICAgICBtX3dlYlBlcm1pc3Npb25z
ID0gYWRvcHRQdHIobmV3IFdlYlBlcm1pc3Npb25zKHRoaXMpKTsKICAgICBtX2FjY2Vzc2liaWxp
dHlDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKHRoaXMp
KTsKKyAgICBtX2dhbWVwYWRDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IEdhbWVwYWRDb250cm9s
bGVyKHRoaXMpKTsKICAgICBtX2xheW91dFRlc3RDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IExh
eW91dFRlc3RDb250cm9sbGVyKHRoaXMpKTsKICAgICBtX2V2ZW50U2VuZGVyID0gYWRvcHRQdHIo
bmV3IEV2ZW50U2VuZGVyKHRoaXMpKTsKICAgICBtX3BsYWluVGV4dENvbnRyb2xsZXIgPSBhZG9w
dFB0cihuZXcgUGxhaW5UZXh0Q29udHJvbGxlcigpKTsKQEAgLTI2OSw2ICsyNzAsNyBAQCB2b2lk
IFRlc3RTaGVsbDo6cmVzZXRUZXN0Q29udHJvbGxlcigpCiAgICAgcmVzZXRXZWJTZXR0aW5ncygq
d2ViVmlldygpKTsKICAgICBtX3dlYlBlcm1pc3Npb25zLT5yZXNldCgpOwogICAgIG1fYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXItPnJlc2V0KCk7CisgICAgbV9nYW1lcGFkQ29udHJvbGxlci0+cmVz
ZXQoKTsKICAgICBtX2xheW91dFRlc3RDb250cm9sbGVyLT5yZXNldCgpOwogICAgIG1fZXZlbnRT
ZW5kZXItPnJlc2V0KCk7CiAgICAgbV93ZWJWaWV3SG9zdC0+cmVzZXQoKTsKQEAgLTY3Miw2ICs2
NzQsNyBAQCB2b2lkIFRlc3RTaGVsbDo6YmluZEpTT2JqZWN0c1RvV2luZG93KFdlYkZyYW1lKiBm
cmFtZSkKIHsKICAgICBXZWJUZXN0aW5nU3VwcG9ydDo6aW5qZWN0SW50ZXJuYWxzT2JqZWN0KGZy
YW1lKTsKICAgICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLT5iaW5kVG9KYXZhc2NyaXB0KGZy
YW1lLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlciIpKTsKKyAg
ICBtX2dhbWVwYWRDb250cm9sbGVyLT5iaW5kVG9KYXZhc2NyaXB0KGZyYW1lLCBXZWJTdHJpbmc6
OmZyb21VVEY4KCJnYW1lcGFkQ29udHJvbGxlciIpKTsKICAgICBtX2xheW91dFRlc3RDb250cm9s
bGVyLT5iaW5kVG9KYXZhc2NyaXB0KGZyYW1lLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJsYXlvdXRU
ZXN0Q29udHJvbGxlciIpKTsKICAgICBtX2V2ZW50U2VuZGVyLT5iaW5kVG9KYXZhc2NyaXB0KGZy
YW1lLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJldmVudFNlbmRlciIpKTsKICAgICBtX3BsYWluVGV4
dENvbnRyb2xsZXItPmJpbmRUb0phdmFzY3JpcHQoZnJhbWUsIFdlYlN0cmluZzo6ZnJvbVVURjgo
InBsYWluVGV4dCIpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgK
aW5kZXggYjE5NGViMGIyMzk2MzBlMTIzZGZiNDMxMmQwY2Y3NDEzNzM4NjIxMS4uMWY2NDhiMTVl
ZmI0NDAyNjFjMGU4MzgyMzZlY2YzNmUyYzNmMjI0NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFNoZWxsLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRTZW5kZXIuaCIKKyNpbmNsdWRl
ICJHYW1lcGFkQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCiAjaW5jbHVkZSAiUGxhaW5UZXh0
Q29udHJvbGxlci5oIgpAQCAtOTEsNiArOTIsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VGVzdENv
bnRyb2xsZXIqIGxheW91dFRlc3RDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRU
ZXN0Q29udHJvbGxlci5nZXQoKTsgfQogICAgIEV2ZW50U2VuZGVyKiBldmVudFNlbmRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZXZlbnRTZW5kZXIuZ2V0KCk7IH0KICAgICBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlciogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX2FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmdldCgpOyB9CisgICAgR2FtZXBhZENvbnRyb2xsZXIqIGdhbWVw
YWRDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9nYW1lcGFkQ29udHJvbGxlci5nZXQoKTsg
fQogICAgIE5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29u
c3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25QcmVzZW50ZXIuZ2V0KCk7IH0KICAgICBUZXN0RXZl
bnRQcmludGVyKiBwcmludGVyKCkgY29uc3QgeyByZXR1cm4gbV9wcmludGVyLmdldCgpOyB9CiAK
QEAgLTIwNSw2ICsyMDcsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxEUlREZXZUb29sc0FnZW50
PiBtX2RydERldlRvb2xzQWdlbnQ7CiAgICAgT3duUHRyPERSVERldlRvb2xzQ2xpZW50PiBtX2Ry
dERldlRvb2xzQ2xpZW50OwogICAgIE93blB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gbV9h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsKKyAgICBPd25QdHI8R2FtZXBhZENvbnRyb2xsZXI+IG1f
Z2FtZXBhZENvbnRyb2xsZXI7CiAgICAgT3duUHRyPEV2ZW50U2VuZGVyPiBtX2V2ZW50U2VuZGVy
OwogICAgIE93blB0cjxMYXlvdXRUZXN0Q29udHJvbGxlcj4gbV9sYXlvdXRUZXN0Q29udHJvbGxl
cjsKICAgICBPd25QdHI8UGxhaW5UZXh0Q29udHJvbGxlcj4gbV9wbGFpblRleHRDb250cm9sbGVy
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDU2MzVkMWJjYzMyYzU3MmYwYWE2ZGZmYmY1MzJhZGIxODVhYjA1Y2YuLjgyZDIy
ZDEyYzkzOTRhMGNjMDdlNDJiYzRhMzBkNDQ0NDZkMmY0MzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxMS0xMS0yMSAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgQWRkaW5nIGdhbWVwYWQgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NjcmlwdC10ZXN0cy9wcm90b3R5cGUtaW5o
ZXJpdGFuY2UuanM6IEV4Y2x1ZGUKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIgZnJvbSBlbnVt
ZXJhdGlvbi4KKyAgICAgICAgKiBnYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBnYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3Mu
aHRtbDogQWRkZWQuCisKIDIwMTEtMTEtMjEgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgTGF5b3V0IFRlc3QgcGVyZi9hcnJheS1wdXNoLXBvcC5odG1sIGlzIHNs
b3cKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9wcm90b3R5
cGUtaW5oZXJpdGFuY2UuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQtdGVzdHMvcHJv
dG90eXBlLWluaGVyaXRhbmNlLmpzCmluZGV4IGM5NGQ2ODU1OGIzMWQ4YmJiZTVkNGEwZDE5MDBm
ZGIxYWY4M2FhODIuLmRmZGZkOGNhYzFlYTVhMWJjNTczZmJmMmI5OGQ1NTBjNmI0YzIyYmUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9wcm90b3R5cGUtaW5o
ZXJpdGFuY2UuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL3Byb3Rv
dHlwZS1pbmhlcml0YW5jZS5qcwpAQCAtMTIsNiArMTIsNyBAQCB2YXIgc2tpcHBlZFByb3BlcnRp
ZXMgPSBbCiAgICAgIm9iakNDb250cm9sbGVyIiwgInRleHRJbnB1dENvbnRyb2xsZXIiLCAibmF2
aWdhdGlvbkNvbnRyb2xsZXIiLAogICAgICJldmVudFNlbmRlciIsICJvYmpDUGx1Z2luIiwgIm9i
akNQbHVnaW5GdW5jdGlvbiIsCiAgICAgImFwcGxlU2NyaXB0Q29udHJvbGxlciIsICJwbGFpblRl
eHQiLCAiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIiLAorICAgICJnYW1lcGFkQ29udHJvbGxlciIs
CiAgICAgImludGVybmFscyIsCiAgICAgLy8gSWdub3JlIHRoZXNlIHByb3BlcnRpZXMgYmVjYXVz
ZSB0aGV5IGRvIG5vdCBleGlzdCBpbiBhbGwgaW1wbGVtZW50YXRpb25zLiBUaGV5IHdpbGwgYmUg
dGVzdGVkIHNlcGFyYXRlbHkKICAgICAid2Via2l0Tm90aWZpY2F0aW9ucyIsCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXBvbGxpbmctYWNjZXNzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNDg0ZmQxYzIxYzE0YzA4ZWYzY2RjMzlkNWU4NzcxOGE5NjUyYjUyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXBvbGxpbmctYWNj
ZXNzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitQQVNTIG5hdmlnYXRvci53ZWJraXRH
YW1lcGFkcy5sZW5ndGggaXMgNAorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0gaXMg
dW5kZWZpbmVkLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMV0gaXMgdW5kZWZpbmVk
LgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMl0gaXMgdW5kZWZpbmVkLgorUEFTUyBu
YXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbM10gaXMgdW5kZWZpbmVkLgorUEFTUyBuYXZpZ2F0b3Iu
d2Via2l0R2FtZXBhZHNbMF0gaXMgbm9uLW51bGwuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1l
cGFkc1swXSBpcyB1bmRlZmluZWQuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5p
ZCBpcyAnTW9ja1N0aWNrIDMwMDAnCitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5i
dXR0b25zLmxlbmd0aCBpcyAyCitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5heGVz
Lmxlbmd0aCBpcyAyCitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5idXR0b25zWzBd
IGlzIDEuMAorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uYnV0dG9uc1sxXSBpcyAw
LjAKK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmF4ZXMubGVuZ3RoIGlzIDIKK1BB
U1MgbmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmF4ZXNbMF0gaXMgMC41CitQQVNTIG5hdmln
YXRvci53ZWJraXRHYW1lcGFkc1swXS5heGVzWzFdIGlzIC0xLjAKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorVHlwaWNhbCBwb2xsaW5nIGFjY2VzcyB0
byBnYW1lcGFkcyBjb250ZW50cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dhbWVwYWQvZ2Ft
ZXBhZC1wb2xsaW5nLWFjY2Vzcy5odG1sIGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXBv
bGxpbmctYWNjZXNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU3NzVmY2RlY2UyOTIwYjY5ZWIwYmIxNWI5
ZDk1MzA1OGZlZjkxOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2dhbWVwYWQvZ2Ft
ZXBhZC1wb2xsaW5nLWFjY2Vzcy5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmdhbWVwYWRDb250cm9sbGVy
KQorICAgIHsKKyAgICAgICAgLy8gc3RhcnQgYWxsIGRpc2Nvbm5lY3RlZAorICAgICAgICBnYW1l
cGFkQ29udHJvbGxlci5kaXNjb25uZWN0KDApOworICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5k
aXNjb25uZWN0KDEpOworICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5kaXNjb25uZWN0KDIpOwor
ICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5kaXNjb25uZWN0KDMpOworICAgICAgICBzaG91bGRC
ZSgibmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzLmxlbmd0aCIsICI0Iik7CisgICAgICAgIHNob3Vs
ZEJlVW5kZWZpbmVkKCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0iKTsKKyAgICAgICAgc2hv
dWxkQmVVbmRlZmluZWQoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1sxXSIpOworICAgICAgICBz
aG91bGRCZVVuZGVmaW5lZCgibmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzJdIik7CisgICAgICAg
IHNob3VsZEJlVW5kZWZpbmVkKCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbM10iKTsKKworICAg
ICAgICAvLyBjb25uZWN0IGFuZCBkaXNjb25uZWN0CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVy
LmNvbm5lY3QoMCk7CisgICAgICAgIHNob3VsZEJlTm9uTnVsbCgibmF2aWdhdG9yLndlYmtpdEdh
bWVwYWRzWzBdIik7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLmRpc2Nvbm5lY3QoMCk7Cisg
ICAgICAgIHNob3VsZEJlVW5kZWZpbmVkKCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0iKTsK
KworICAgICAgICAvLyBjb25uZWN0IGFnYWluLCBhbmQgY2hlY2sgc3RhbmRhcmQgYWNjZXNzCisg
ICAgICAgIGdhbWVwYWRDb250cm9sbGVyLmNvbm5lY3QoMCk7CisgICAgICAgIGdhbWVwYWRDb250
cm9sbGVyLnNldElkKDAsICJNb2NrU3RpY2sgMzAwMCIpOworICAgICAgICBnYW1lcGFkQ29udHJv
bGxlci5zZXRCdXR0b25Db3VudCgwLCAyKTsKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIuc2V0
QXhpc0NvdW50KDAsIDIpOworICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5zZXRCdXR0b25EYXRh
KDAsIDAsIDEpOworICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5zZXRCdXR0b25EYXRhKDAsIDEs
IDApOworICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5zZXRBeGlzRGF0YSgwLCAwLCAuNSk7Cisg
ICAgICAgIGdhbWVwYWRDb250cm9sbGVyLnNldEF4aXNEYXRhKDAsIDEsIC0xLjApOworICAgICAg
ICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmlkIiwgIidNb2NrU3RpY2sg
MzAwMCciKTsKKyAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5i
dXR0b25zLmxlbmd0aCIsICIyIik7CisgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0
R2FtZXBhZHNbMF0uYXhlcy5sZW5ndGgiLCAiMiIpOworICAgICAgICBzaG91bGRCZSgibmF2aWdh
dG9yLndlYmtpdEdhbWVwYWRzWzBdLmJ1dHRvbnNbMF0iLCAiMS4wIik7CisgICAgICAgIHNob3Vs
ZEJlKCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uYnV0dG9uc1sxXSIsICIwLjAiKTsKKyAg
ICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5heGVzLmxlbmd0aCIs
ICIyIik7CisgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uYXhl
c1swXSIsICIwLjUiKTsKKyAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFk
c1swXS5heGVzWzFdIiwgIi0xLjAiKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg
Y29uc29sZS5sb2coIkZBSUw6IG5vIGdhbWVwYWRDb250cm9sbGVyIGF2YWlsYWJsZS4iKQorICAg
IH0KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8cD5UeXBpY2FsIHBvbGxpbmcgYWNjZXNzIHRvIGdhbWVwYWRz
IGNvbnRlbnRzLjwvcD4KKzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116120</attachid>
            <date>2011-11-21 12:58:23 -0800</date>
            <delta_ts>2011-11-21 13:11:51 -0800</delta_ts>
            <desc>update WebKit/chromium/DEPS</desc>
            <filename>bug-69451-20111121125822.patch</filename>
            <type>text/plain</type>
            <size>28463</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRjOTNkOTAwNTZkY2Y0
YzM3ZWYwYzY1Yjk5MDBmNWIxZDcwMmFmZC4uMmY4NjQ5ZmQ3OGY5ZjVmNTMzNTk4YTg0YTA3NmIw
OGQ0Y2RmMTA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTExLTIxICBTY290
dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGRpbmcgZ2FtZXBh
ZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02OTQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFB1bGwgZGF0YSBpbiBmcm9tIHBsYXRmb3JtIGxheWVyIG9uIHJldHJpZXZhbC4KKworICAgICAg
ICBUZXN0OiBnYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MuaHRtbAorCisgICAgICAgICog
cGFnZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRH
YW1lcGFkcyk6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9HYW1lcGFkcy5oOiBBZGRlZC4KKwogMjAxMS0xMS0yMSAgQW5kcmVhcyBLbGluZyAgPGtsaW5n
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3R5bGVTaGVldDogTW92ZSBjb21wbGV0ZVVSTCgpIHRv
IENTU1N0eWxlU2hlZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDY1ZjEyOTIxNzQx
YjBhNWFmMzhlMTUyNWY2MGUwMjIzM2RhNTFjNzMuLjc2NzBlMmY3N2NkZjE5YWJmMjBhOGU3Yzg4
MWYyNWE5MmQyZjViNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMTEtMjEgIFNjb3R0IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEFkZGluZyBnYW1lcGFkIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGltcGxlbWVudGF0aW9uIG9mIHNhbXBsZUdhbWVwYWRz
IGluIENocm9taXVtIHBsYXRmb3JtLiBSZXRyaWV2ZXMKKyAgICAgICAgZ2FtZXBhZCBkYXRhIGZy
b20gQ2hyb21pdW0gcG9ydCBhbmQgY29udmVydHMgdG8gRE9NIGZvcm1hdCwgaS5lLgorICAgICAg
ICBHYW1lcGFkTGlzdC4gVXBkYXRlIERFUFMgdG8gcHVsbCB2ZXJzaW9uIG9mIENocm9taXVtIGNv
bnRhaW5pbmcKKyAgICAgICAgdXBkYXRlcyB0byB3ZWJraXRfc3VwcG9ydC4KKworICAgICAgICAq
IERFUFM6CisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBzcmMvR2FtZXBhZHMuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNhbXBsZUdhbWVwYWRzKToKKwogMjAxMS0xMS0y
MSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bnb29nbGUuY29tPgogCiAgICAgICAgIEltcGxl
bWVudCBhIHNldHRlciBmb3IgVW5pZmllZFRleHRDaGVja2VyRW5hYmxlZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yLmNwcAppbmRleCBkZTU0ZGM1MWUxZWJkMTYxNjNmM2YzYzY5NGVmNWNiNTdlNjkw
YTdiLi5iYzFlMDUzNGQwZWM5MDI3MTlmYTc0NGE3MTk5MzNkNDk0Yjk5YmVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAKICNpZiBFTkFCTEUoR0FNRVBB
RCkKICNpbmNsdWRlICJHYW1lcGFkTGlzdC5oIgorI2luY2x1ZGUgIkdhbWVwYWRzLmgiCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCkBAIC0zMTEsOCArMzEyLDEwIEBAIHZvaWQg
TmF2aWdhdG9yOjp3ZWJraXRHZXRVc2VyTWVkaWEoY29uc3QgU3RyaW5nJiBvcHRpb25zLCBQYXNz
UmVmUHRyPE5hdmlnYXRvclVzCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiBHYW1lcGFkTGlzdCogTmF2
aWdhdG9yOjp3ZWJraXRHYW1lcGFkcygpCiB7Ci0gICAgLy8gU3R1YmJlZCB1bnRpbCBwbGF0Zm9y
bS8gY2hhbmdlcyBsYW5kZWQuCi0gICAgcmV0dXJuIDA7CisgICAgaWYgKCFtX2dhbWVwYWRzKQor
ICAgICAgICBtX2dhbWVwYWRzID0gR2FtZXBhZExpc3Q6OmNyZWF0ZSgpOworICAgIHNhbXBsZUdh
bWVwYWRzKG1fZ2FtZXBhZHMuZ2V0KCkpOworICAgIHJldHVybiBtX2dhbWVwYWRzLmdldCgpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCmluZGV4IDViYWJkYzVkZDhmMmY5ZGMy
NWE5MTAwY2QyYmY1ZmZmN2ViYmZlYWUuLjYzMjFiMzFkOTczNjIyOTNjYzE4MjNkNjlkZmE4OWYw
ODE1YjAzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaApAQCAtODUsNiArODUsOSBAQCBwcml2
YXRlOgogICAgIG11dGFibGUgUmVmUHRyPERPTVBsdWdpbkFycmF5PiBtX3BsdWdpbnM7CiAgICAg
bXV0YWJsZSBSZWZQdHI8RE9NTWltZVR5cGVBcnJheT4gbV9taW1lVHlwZXM7CiAgICAgbXV0YWJs
ZSBSZWZQdHI8R2VvbG9jYXRpb24+IG1fZ2VvbG9jYXRpb247CisjaWYgRU5BQkxFKEdBTUVQQUQp
CisgICAgbXV0YWJsZSBSZWZQdHI8R2FtZXBhZExpc3Q+IG1fZ2FtZXBhZHM7CisjZW5kaWYKICNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIG11dGFibGUgUmVmUHRyPFBvaW50ZXJMb2NrPiBt
X3BvaW50ZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dh
bWVwYWRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HYW1lcGFkcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA0MDFmYjU5MTdhNGEyMzVhZTMxNDQ0OWZjMWYyNTljYjZlNzZjMDEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HYW1lcGFkcy5oCkBAIC0wLDAgKzEsNDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorICog
REFNQUdFLgorICovCisKKyNpZm5kZWYgR2FtZXBhZHNfaAorI2RlZmluZSBHYW1lcGFkc19oCisK
KyNpZiBFTkFCTEUoR0FNRVBBRCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHYW1l
cGFkTGlzdDsKKwordm9pZCBzYW1wbGVHYW1lcGFkcyhHYW1lcGFkTGlzdCogaW50byk7CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQorCisjZW5kaWYgLy8gR2FtZXBhZHNfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9ERVBTIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9ERVBTCmluZGV4IDM2OGI1NzBkNDEwODg1MmRhOTk4NzhmZWUzZGI4M2E0YjRkNTg0YzMu
LjMwZDkwODRlNGQwN2MxYmRmNmQyNTZlNjcwNTJkNGVjNWJlNDA5ZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vREVQUworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0RF
UFMKQEAgLTMyLDcgKzMyLDcgQEAKIAogdmFycyA9IHsKICAgJ2Nocm9taXVtX3N2bic6ICdodHRw
Oi8vc3JjLmNocm9taXVtLm9yZy9zdm4vdHJ1bmsvc3JjJywKLSAgJ2Nocm9taXVtX3Jldic6ICcx
MDk2OTYnCisgICdjaHJvbWl1bV9yZXYnOiAnMTEwOTc0JwogfQogCiBkZXBzID0gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDEyMTA4OTQ2NmY1Njk4NGQ1ZDQ3ZDlmYzE2NzljMTcw
NjMzMzY1MjYuLjRlNmU5YmFlNDczYjBjMGY4ZDAwNDdkZGY2OGY3YWE0MmQzYTRiOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTM5MCw2ICszOTAsNyBAQAogICAgICAgICAgICAg
ICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9GcmFtZU5l
dHdvcmtpbmdDb250ZXh0SW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0dhbWVwYWRzLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9HZW9sb2NhdGlvbkNsaWVudFByb3h5LmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9HZW9sb2NhdGlvbkNsaWVudFByb3h5LmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR2FtZXBhZHMuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvR2FtZXBhZHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3YzQzYTMxYzE5YzFmZmFjZWMx
ZTlhY2QwZGQzMGY5MTk2YTczZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9HYW1lcGFkcy5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVwYWRzLmgiCisKKyNpZiBFTkFCTEUo
R0FNRVBBRCkKKworI2luY2x1ZGUgIkdhbWVwYWRMaXN0LmgiCisjaW5jbHVkZSAiV2ViR2FtZXBh
ZHMuaCIKKyNpbmNsdWRlICJXZWJLaXQuaCIKKyNpbmNsdWRlICJXZWJLaXRQbGF0Zm9ybVN1cHBv
cnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBHYW1lcGFkTGlzdDsKKwordm9pZCBzYW1wbGVHYW1lcGFkcyhHYW1lcGFkTGlzdCog
aW50bykKK3sKKyAgICBXZWJHYW1lcGFkcyBnYW1lcGFkczsKKworICAgIHdlYktpdFBsYXRmb3Jt
U3VwcG9ydCgpLT5zYW1wbGVHYW1lcGFkcyhnYW1lcGFkcyk7CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgV2ViS2l0OjpXZWJHYW1lcGFkczo6aXRlbXNMZW5ndGhDYXA7ICsraSkgewor
ICAgICAgICBXZWJHYW1lcGFkJiB3ZWJHYW1lcGFkID0gZ2FtZXBhZHMuaXRlbXNbaV07CisgICAg
ICAgIGlmIChpIDwgZ2FtZXBhZHMubGVuZ3RoICYmIHdlYkdhbWVwYWQuY29ubmVjdGVkKSB7Cisg
ICAgICAgICAgICBSZWZQdHI8R2FtZXBhZD4gZ2FtZXBhZCA9IGludG8tPml0ZW0oaSk7CisgICAg
ICAgICAgICBpZiAoIWdhbWVwYWQpCisgICAgICAgICAgICAgICAgZ2FtZXBhZCA9IEdhbWVwYWQ6
OmNyZWF0ZSgpOworICAgICAgICAgICAgZ2FtZXBhZC0+aWQod2ViR2FtZXBhZC5pZCk7CisgICAg
ICAgICAgICBnYW1lcGFkLT5pbmRleChpKTsKKyAgICAgICAgICAgIGdhbWVwYWQtPnRpbWVzdGFt
cCh3ZWJHYW1lcGFkLnRpbWVzdGFtcCk7CisgICAgICAgICAgICBnYW1lcGFkLT5heGVzKHdlYkdh
bWVwYWQuYXhlc0xlbmd0aCwgd2ViR2FtZXBhZC5heGVzKTsKKyAgICAgICAgICAgIGdhbWVwYWQt
PmJ1dHRvbnMod2ViR2FtZXBhZC5idXR0b25zTGVuZ3RoLCB3ZWJHYW1lcGFkLmJ1dHRvbnMpOwor
ICAgICAgICAgICAgaW50by0+c2V0KGksIGdhbWVwYWQpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIGludG8tPnNldChpLCAwKTsKKyAgICB9Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTNkNmM0ODcwMGM2
MTdkYTVmMGFhYzAxMTA0NzM0ZjQ2NzFmMDIyMy4uMjU2MjQ0NTJiMTc3ZWM2NjVjMjRlOWU5Yjhj
NmU5NDBmNzMzOGI4NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDExLTExLTIxICBTY290dCBHcmFoYW0gIDxzY290
dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGRpbmcgZ2FtZXBhZCBzdXBwb3J0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTQ1MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhICdnYW1lcGFk
Q29udHJvbGxlcicgdG8gQ2hyb21pdW0gRFJULiBBbGxvd3MgZm9yIHNldHRpbmcgb2YgbW9jawor
ICAgICAgICBnYW1lcGFkIGRhdGEgdGhhdCB3aWxsIGJlIHJldHJpZXZlZCB3aGVuIEpTIGNvZGUg
cHVsbHMgdmlhIEFQSSBhY2Nlc3MuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0dhbWVwYWRD
b250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChHYW1lcGFkQ29udHJvbGxlcjo6R2FtZXBh
ZENvbnRyb2xsZXIpOgorICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OmJpbmRUb0phdmFzY3Jp
cHQpOgorICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OnJlc2V0KToKKyAgICAgICAgKEdhbWVw
YWRDb250cm9sbGVyOjpjb25uZWN0KToKKyAgICAgICAgKEdhbWVwYWRDb250cm9sbGVyOjpkaXNj
b25uZWN0KToKKyAgICAgICAgKEdhbWVwYWRDb250cm9sbGVyOjpzZXRJZCk6CisgICAgICAgIChH
YW1lcGFkQ29udHJvbGxlcjo6c2V0QnV0dG9uQ291bnQpOgorICAgICAgICAoR2FtZXBhZENvbnRy
b2xsZXI6OnNldEJ1dHRvbkRhdGEpOgorICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OnNldEF4
aXNDb3VudCk6CisgICAgICAgIChHYW1lcGFkQ29udHJvbGxlcjo6c2V0QXhpc0RhdGEpOgorICAg
ICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OmZhbGxiYWNrQ2FsbGJhY2spOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0dhbWVwYWRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHA6CisgICAgICAgIChUZXN0
U2hlbGw6OlRlc3RTaGVsbCk6CisgICAgICAgIChUZXN0U2hlbGw6OnJlc2V0VGVzdENvbnRyb2xs
ZXIpOgorICAgICAgICAoVGVzdFNoZWxsOjpiaW5kSlNPYmplY3RzVG9XaW5kb3cpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAoVGVzdFNo
ZWxsOjpnYW1lcGFkQ29udHJvbGxlcik6CisKIDIwMTEtMTEtMjEgIFBoaWxpcHBlIE5vcm1hbmQg
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJ1bi1ndGstdGVz
dHMgdGVtcG9yYXJ5IHdvcmthcm91bmQgYWZ0ZXIgcjk4NTAwLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLmd5cGkKaW5kZXggMjM1Yjk1MzcyNmJjZWFhYjE4NWU1ZDQ4Mjk1Y2Yx
MzM5OWFmMjc2My4uYjE5YmUyMjcyYzU1NWM3OWQyOTk3MTYwNTI0YWFmNzBjZjJlOGY2OCAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC0xNiw2ICsxNiw4IEBA
CiAgICAgICAgICAgICAnY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9FdmVudFNlbmRlci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL0V2ZW50
U2VuZGVyLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL0dhbWVwYWRDb250cm9sbGVyLmNwcCcs
CisgICAgICAgICAgICAnY2hyb21pdW0vR2FtZXBhZENvbnRyb2xsZXIuaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2Nr
U3BlbGxDaGVjay5jcHAnLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vR2FtZXBhZENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
R2FtZXBhZENvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5NzRkM2JjZGUwMjhkOTg1NDQ1MGU2
YmVlODBlZmJmY2IxN2JiNDEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9HYW1lcGFkQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZXBhZENvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUg
IlRlc3RTaGVsbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitHYW1lcGFkQ29udHJv
bGxlcjo6R2FtZXBhZENvbnRyb2xsZXIoVGVzdFNoZWxsKiBzaGVsbCkKKyAgICA6IG1fc2hlbGwo
c2hlbGwpCit7CisgICAgYmluZE1ldGhvZCgiY29ubmVjdCIsICZHYW1lcGFkQ29udHJvbGxlcjo6
Y29ubmVjdCk7CisgICAgYmluZE1ldGhvZCgiZGlzY29ubmVjdCIsICZHYW1lcGFkQ29udHJvbGxl
cjo6ZGlzY29ubmVjdCk7CisgICAgYmluZE1ldGhvZCgic2V0SWQiLCAmR2FtZXBhZENvbnRyb2xs
ZXI6OnNldElkKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRCdXR0b25Db3VudCIsICZHYW1lcGFkQ29u
dHJvbGxlcjo6c2V0QnV0dG9uQ291bnQpOworICAgIGJpbmRNZXRob2QoInNldEJ1dHRvbkRhdGEi
LCAmR2FtZXBhZENvbnRyb2xsZXI6OnNldEJ1dHRvbkRhdGEpOworICAgIGJpbmRNZXRob2QoInNl
dEF4aXNDb3VudCIsICZHYW1lcGFkQ29udHJvbGxlcjo6c2V0QXhpc0NvdW50KTsKKyAgICBiaW5k
TWV0aG9kKCJzZXRBeGlzRGF0YSIsICZHYW1lcGFkQ29udHJvbGxlcjo6c2V0QXhpc0RhdGEpOwor
CisgICAgYmluZEZhbGxiYWNrTWV0aG9kKCZHYW1lcGFkQ29udHJvbGxlcjo6ZmFsbGJhY2tDYWxs
YmFjayk7CisKKyAgICByZXNldCgpOworfQorCit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpiaW5k
VG9KYXZhc2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBjbGFzc25hbWUp
Cit7CisgICAgQ3BwQm91bmRDbGFzczo6YmluZFRvSmF2YXNjcmlwdChmcmFtZSwgY2xhc3NuYW1l
KTsKK30KKwordm9pZCBHYW1lcGFkQ29udHJvbGxlcjo6cmVzZXQoKQoreworICAgIG1lbXNldCgm
aW50ZXJuYWxEYXRhLCAwLCBzaXplb2YoaW50ZXJuYWxEYXRhKSk7Cit9CisKK3ZvaWQgR2FtZXBh
ZENvbnRyb2xsZXI6OmNvbm5lY3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmdzLCBDcHBWYXJp
YW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkgeworICAgICAgICBwcmlu
dGYoIkludmFsaWQgYXJncyIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGludCBpbmRl
eCA9IGFyZ3NbMF0udG9JbnQzMigpOworICAgIGludGVybmFsRGF0YS5pdGVtc1tpbmRleF0uY29u
bmVjdGVkID0gdHJ1ZTsKKyAgICBpbnRlcm5hbERhdGEubGVuZ3RoID0gMDsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgV2ViS2l0OjpXZWJHYW1lcGFkczo6aXRlbXNMZW5ndGhDYXA7ICsr
aSkKKyAgICAgICAgaWYgKGludGVybmFsRGF0YS5pdGVtc1tpXS5jb25uZWN0ZWQpCisgICAgICAg
ICAgICBpbnRlcm5hbERhdGEubGVuZ3RoID0gaSArIDE7CisgICAgd2Via2l0X3N1cHBvcnQ6OlNl
dEdhbWVwYWREYXRhKGludGVybmFsRGF0YSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisK
K3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OmRpc2Nvbm5lY3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmdzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkg
eworICAgICAgICBwcmludGYoIkludmFsaWQgYXJncyIpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGludCBpbmRleCA9IGFyZ3NbMF0udG9JbnQzMigpOworICAgIGludGVybmFsRGF0YS5p
dGVtc1tpbmRleF0uY29ubmVjdGVkID0gZmFsc2U7CisgICAgaW50ZXJuYWxEYXRhLmxlbmd0aCA9
IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdlYktpdDo6V2ViR2FtZXBhZHM6Oml0
ZW1zTGVuZ3RoQ2FwOyArK2kpCisgICAgICAgIGlmIChpbnRlcm5hbERhdGEuaXRlbXNbaV0uY29u
bmVjdGVkKQorICAgICAgICAgICAgaW50ZXJuYWxEYXRhLmxlbmd0aCA9IGkgKyAxOworICAgIHdl
YmtpdF9zdXBwb3J0OjpTZXRHYW1lcGFkRGF0YShpbnRlcm5hbERhdGEpOworICAgIHJlc3VsdC0+
c2V0TnVsbCgpOworfQorCit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpzZXRJZChjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3MsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJncy5z
aXplKCkgPCAyKSB7CisgICAgICAgIHByaW50ZigiSW52YWxpZCBhcmdzIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaW50IGluZGV4ID0gYXJnc1swXS50b0ludDMyKCk7CisgICAgc3Rk
OjpzdHJpbmcgc3JjID0gYXJnc1sxXS50b1N0cmluZygpOworICAgIGNvbnN0IGNoYXIqIHAgPSBz
cmMuY19zdHIoKTsKKyAgICBtZW1zZXQoaW50ZXJuYWxEYXRhLml0ZW1zW2luZGV4XS5pZCwgMCwg
c2l6ZW9mKGludGVybmFsRGF0YS5pdGVtc1tpbmRleF0uaWQpKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyAqcCAmJiBpIDwgV2ViS2l0OjpXZWJHYW1lcGFkOjppZExlbmd0aENhcCAtIDE7ICsr
aSkKKyAgICAgICAgaW50ZXJuYWxEYXRhLml0ZW1zW2luZGV4XS5pZFtpXSA9ICpwKys7CisgICAg
d2Via2l0X3N1cHBvcnQ6OlNldEdhbWVwYWREYXRhKGludGVybmFsRGF0YSk7CisgICAgcmVzdWx0
LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OnNldEJ1dHRvbkNvdW50
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAg
IGlmIChhcmdzLnNpemUoKSA8IDIpIHsKKyAgICAgICAgcHJpbnRmKCJJbnZhbGlkIGFyZ3MiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbnQgaW5kZXggPSBhcmdzWzBdLnRvSW50MzIo
KTsKKyAgICBpbnQgYnV0dG9ucyA9IGFyZ3NbMV0udG9JbnQzMigpOworICAgIGludGVybmFsRGF0
YS5pdGVtc1tpbmRleF0uYnV0dG9uc0xlbmd0aCA9IGJ1dHRvbnM7CisgICAgd2Via2l0X3N1cHBv
cnQ6OlNldEdhbWVwYWREYXRhKGludGVybmFsRGF0YSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7
Cit9CisKK3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OnNldEJ1dHRvbkRhdGEoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiBhcmdzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3Muc2l6
ZSgpIDwgMykgeworICAgICAgICBwcmludGYoIkludmFsaWQgYXJncyIpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGludCBpbmRleCA9IGFyZ3NbMF0udG9JbnQzMigpOworICAgIGludCBi
dXR0b24gPSBhcmdzWzFdLnRvSW50MzIoKTsKKyAgICBkb3VibGUgZGF0YSA9IGFyZ3NbMl0udG9E
b3VibGUoKTsKKyAgICBpbnRlcm5hbERhdGEuaXRlbXNbaW5kZXhdLmJ1dHRvbnNbYnV0dG9uXSA9
IGRhdGE7CisgICAgd2Via2l0X3N1cHBvcnQ6OlNldEdhbWVwYWREYXRhKGludGVybmFsRGF0YSk7
CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OnNl
dEF4aXNDb3VudChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3MsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgPCAyKSB7CisgICAgICAgIHByaW50ZigiSW52YWxp
ZCBhcmdzIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW50IGluZGV4ID0gYXJnc1sw
XS50b0ludDMyKCk7CisgICAgaW50IGF4ZXMgPSBhcmdzWzFdLnRvSW50MzIoKTsKKyAgICBpbnRl
cm5hbERhdGEuaXRlbXNbaW5kZXhdLmF4ZXNMZW5ndGggPSBheGVzOworICAgIHdlYmtpdF9zdXBw
b3J0OjpTZXRHYW1lcGFkRGF0YShpbnRlcm5hbERhdGEpOworICAgIHJlc3VsdC0+c2V0TnVsbCgp
OworfQorCit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpzZXRBeGlzRGF0YShjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3MsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJncy5zaXpl
KCkgPCAzKSB7CisgICAgICAgIHByaW50ZigiSW52YWxpZCBhcmdzIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaW50IGluZGV4ID0gYXJnc1swXS50b0ludDMyKCk7CisgICAgaW50IGF4
aXMgPSBhcmdzWzFdLnRvSW50MzIoKTsKKyAgICBkb3VibGUgZGF0YSA9IGFyZ3NbMl0udG9Eb3Vi
bGUoKTsKKyAgICBpbnRlcm5hbERhdGEuaXRlbXNbaW5kZXhdLmF4ZXNbYXhpc10gPSBkYXRhOwor
ICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRHYW1lcGFkRGF0YShpbnRlcm5hbERhdGEpOworICAgIHJl
c3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpmYWxsYmFja0Nh
bGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAg
ICBwcmludGYoIkNPTlNPTEUgTUVTU0FHRTogSmF2YVNjcmlwdCBFUlJPUjogdW5rbm93biBtZXRo
b2QgY2FsbGVkIG9uICIKKyAgICAgICAgICAgIkdhbWVwYWRDb250cm9sbGVyXG4iKTsKKyAgICBy
ZXN1bHQtPnNldE51bGwoKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0dhbWVwYWRDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9HYW1lcGFkQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2ZWVkYjA1ZDhkNTJmMzMxY2JiZTcz
ZjJhZjIyYjE0NTljMGRkNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9HYW1lcGFkQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdh
bWVwYWRDb250cm9sbGVyX2gKKyNkZWZpbmUgR2FtZXBhZENvbnRyb2xsZXJfaAorCisjaW5jbHVk
ZSAiQ3BwQm91bmRDbGFzcy5oIgorI2luY2x1ZGUgIldlYkdhbWVwYWRzLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworY2xhc3MgV2ViR2FtZXBhZHM7CitjbGFzcyBXZWJGcmFtZTsKK30KKworY2xh
c3MgVGVzdFNoZWxsOworCitjbGFzcyBHYW1lcGFkQ29udHJvbGxlciA6IHB1YmxpYyBDcHBCb3Vu
ZENsYXNzIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBHYW1lcGFkQ29udHJvbGxlcihUZXN0U2hl
bGwqKTsKKworICAgIHZvaWQgYmluZFRvSmF2YXNjcmlwdChXZWJLaXQ6OldlYkZyYW1lKiwgY29u
c3QgV2ViS2l0OjpXZWJTdHJpbmcmIGNsYXNzbmFtZSk7CisgICAgdm9pZCByZXNldCgpOworCitw
cml2YXRlOgorICAgIC8vIEJvdW5kIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMKKyAgICB2b2lkIGNv
bm5lY3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgZGlz
Y29ubmVjdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBz
ZXRJZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBzZXRC
dXR0b25Db3VudChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9p
ZCBzZXRCdXR0b25EYXRhKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAg
ICB2b2lkIHNldEF4aXNDb3VudChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7
CisgICAgdm9pZCBzZXRBeGlzRGF0YShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CisgICAgdm9pZCBmYWxsYmFja0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqKTsKKworICAgIFRlc3RTaGVsbCogbV9zaGVsbDsKKworICAgIFdlYktpdDo6V2Vi
R2FtZXBhZHMgaW50ZXJuYWxEYXRhOworfTsKKworI2VuZGlmIC8vIEdhbWVwYWRDb250cm9sbGVy
X2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCmluZGV4IDg1
MDdmMjRjMDIyMzNiY2QxMDg4MTFmMGJjNzE3YjU2M2RlN2NmMDguLjg3MDYyMmFlNDZiYTdmMzQ4
MmVkMTAwNjdhM2FkOGRlZTQ4NGIyYWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsLmNwcApAQCAtMTI2LDYgKzEyNiw3IEBAIFRlc3RTaGVsbDo6VGVzdFNoZWxs
KGJvb2wgdGVzdFNoZWxsTW9kZSkKIAogICAgIG1fd2ViUGVybWlzc2lvbnMgPSBhZG9wdFB0cihu
ZXcgV2ViUGVybWlzc2lvbnModGhpcykpOwogICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIg
PSBhZG9wdFB0cihuZXcgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIodGhpcykpOworICAgIG1fZ2Ft
ZXBhZENvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgR2FtZXBhZENvbnRyb2xsZXIodGhpcykpOwog
ICAgIG1fbGF5b3V0VGVzdENvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgTGF5b3V0VGVzdENvbnRy
b2xsZXIodGhpcykpOwogICAgIG1fZXZlbnRTZW5kZXIgPSBhZG9wdFB0cihuZXcgRXZlbnRTZW5k
ZXIodGhpcykpOwogICAgIG1fcGxhaW5UZXh0Q29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBQbGFp
blRleHRDb250cm9sbGVyKCkpOwpAQCAtMjY5LDYgKzI3MCw3IEBAIHZvaWQgVGVzdFNoZWxsOjpy
ZXNldFRlc3RDb250cm9sbGVyKCkKICAgICByZXNldFdlYlNldHRpbmdzKCp3ZWJWaWV3KCkpOwog
ICAgIG1fd2ViUGVybWlzc2lvbnMtPnJlc2V0KCk7CiAgICAgbV9hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci0+cmVzZXQoKTsKKyAgICBtX2dhbWVwYWRDb250cm9sbGVyLT5yZXNldCgpOwogICAgIG1f
bGF5b3V0VGVzdENvbnRyb2xsZXItPnJlc2V0KCk7CiAgICAgbV9ldmVudFNlbmRlci0+cmVzZXQo
KTsKICAgICBtX3dlYlZpZXdIb3N0LT5yZXNldCgpOwpAQCAtNjcyLDYgKzY3NCw3IEBAIHZvaWQg
VGVzdFNoZWxsOjpiaW5kSlNPYmplY3RzVG9XaW5kb3coV2ViRnJhbWUqIGZyYW1lKQogewogICAg
IFdlYlRlc3RpbmdTdXBwb3J0OjppbmplY3RJbnRlcm5hbHNPYmplY3QoZnJhbWUpOwogICAgIG1f
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXItPmJpbmRUb0phdmFzY3JpcHQoZnJhbWUsIFdlYlN0cmlu
Zzo6ZnJvbVVURjgoImFjY2Vzc2liaWxpdHlDb250cm9sbGVyIikpOworICAgIG1fZ2FtZXBhZENv
bnRyb2xsZXItPmJpbmRUb0phdmFzY3JpcHQoZnJhbWUsIFdlYlN0cmluZzo6ZnJvbVVURjgoImdh
bWVwYWRDb250cm9sbGVyIikpOwogICAgIG1fbGF5b3V0VGVzdENvbnRyb2xsZXItPmJpbmRUb0ph
dmFzY3JpcHQoZnJhbWUsIFdlYlN0cmluZzo6ZnJvbVVURjgoImxheW91dFRlc3RDb250cm9sbGVy
IikpOwogICAgIG1fZXZlbnRTZW5kZXItPmJpbmRUb0phdmFzY3JpcHQoZnJhbWUsIFdlYlN0cmlu
Zzo6ZnJvbVVURjgoImV2ZW50U2VuZGVyIikpOwogICAgIG1fcGxhaW5UZXh0Q29udHJvbGxlci0+
YmluZFRvSmF2YXNjcmlwdChmcmFtZSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGxhaW5UZXh0Iikp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAppbmRleCBiMTk0ZWIw
YjIzOTYzMGUxMjNkZmI0MzEyZDBjZjc0MTM3Mzg2MjExLi4xZjY0OGIxNWVmYjQ0MDI2MWMwZTgz
ODIzNmVjZjM2ZTJjM2YyMjQ0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0U2hlbGwuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuaApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJFdmVudFNlbmRlci5oIgorI2luY2x1ZGUgIkdhbWVwYWRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiTGF5b3V0VGVzdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJO
b3RpZmljYXRpb25QcmVzZW50ZXIuaCIKICNpbmNsdWRlICJQbGFpblRleHRDb250cm9sbGVyLmgi
CkBAIC05MSw2ICs5Miw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogbGF5
b3V0VGVzdENvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFRlc3RDb250cm9sbGVy
LmdldCgpOyB9CiAgICAgRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKCkgY29uc3QgeyByZXR1cm4g
bV9ldmVudFNlbmRlci5nZXQoKTsgfQogICAgIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKiBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZ2V0KCk7IH0KKyAgICBHYW1lcGFkQ29udHJvbGxlciogZ2FtZXBhZENvbnRyb2xsZXIo
KSBjb25zdCB7IHJldHVybiBtX2dhbWVwYWRDb250cm9sbGVyLmdldCgpOyB9CiAgICAgTm90aWZp
Y2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdCB7IHJldHVybiBt
X25vdGlmaWNhdGlvblByZXNlbnRlci5nZXQoKTsgfQogICAgIFRlc3RFdmVudFByaW50ZXIqIHBy
aW50ZXIoKSBjb25zdCB7IHJldHVybiBtX3ByaW50ZXIuZ2V0KCk7IH0KIApAQCAtMjA1LDYgKzIw
Nyw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPERSVERldlRvb2xzQWdlbnQ+IG1fZHJ0RGV2VG9v
bHNBZ2VudDsKICAgICBPd25QdHI8RFJURGV2VG9vbHNDbGllbnQ+IG1fZHJ0RGV2VG9vbHNDbGll
bnQ7CiAgICAgT3duUHRyPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPiBtX2FjY2Vzc2liaWxpdHlD
b250cm9sbGVyOworICAgIE93blB0cjxHYW1lcGFkQ29udHJvbGxlcj4gbV9nYW1lcGFkQ29udHJv
bGxlcjsKICAgICBPd25QdHI8RXZlbnRTZW5kZXI+IG1fZXZlbnRTZW5kZXI7CiAgICAgT3duUHRy
PExheW91dFRlc3RDb250cm9sbGVyPiBtX2xheW91dFRlc3RDb250cm9sbGVyOwogICAgIE93blB0
cjxQbGFpblRleHRDb250cm9sbGVyPiBtX3BsYWluVGV4dENvbnRyb2xsZXI7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzVj
ZjAzZTliNzk0ZGMwMjYyNDNiNTIzODg0OWYzNzY5MzUyMTliMy4uMDMxOTZmMDY1MjM5OWFmYTll
ZTMyYTY1ZDZiM2E4Zjc0NzAyZjUzNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTExLTIx
ICBTY290dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGRpbmcg
Z2FtZXBhZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02OTQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9kb20vc2NyaXB0LXRlc3RzL3Byb3RvdHlwZS1pbmhlcml0YW5jZS5qczog
RXhjbHVkZQorICAgICAgICBnYW1lcGFkQ29udHJvbGxlciBmcm9tIGVudW1lcmF0aW9uLgorICAg
ICAgICAqIGdhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGdhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy5odG1sOiBBZGRlZC4K
KwogMjAxMS0xMS0yMSAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZWJhc2VsaW5lIGZvbnQtZmFjZS1vcGVudHlwZS5odG1sIG9uIGNyLW1hYy1sZW9wYXJkLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL3Byb3RvdHlwZS1p
bmhlcml0YW5jZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9wcm90b3R5
cGUtaW5oZXJpdGFuY2UuanMKaW5kZXggYzk0ZDY4NTU4YjMxZDhiYmJlNWQ0YTBkMTkwMGZkYjFh
ZjgzYWE4Mi4uZGZkZmQ4Y2FjMWVhNWExYmM1NzNmYmYyYjk4ZDU1MGM2YjRjMjJiZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL3Byb3RvdHlwZS1pbmhlcml0
YW5jZS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQtdGVzdHMvcHJvdG90eXBl
LWluaGVyaXRhbmNlLmpzCkBAIC0xMiw2ICsxMiw3IEBAIHZhciBza2lwcGVkUHJvcGVydGllcyA9
IFsKICAgICAib2JqQ0NvbnRyb2xsZXIiLCAidGV4dElucHV0Q29udHJvbGxlciIsICJuYXZpZ2F0
aW9uQ29udHJvbGxlciIsCiAgICAgImV2ZW50U2VuZGVyIiwgIm9iakNQbHVnaW4iLCAib2JqQ1Bs
dWdpbkZ1bmN0aW9uIiwKICAgICAiYXBwbGVTY3JpcHRDb250cm9sbGVyIiwgInBsYWluVGV4dCIs
ICJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlciIsCisgICAgImdhbWVwYWRDb250cm9sbGVyIiwKICAg
ICAiaW50ZXJuYWxzIiwKICAgICAvLyBJZ25vcmUgdGhlc2UgcHJvcGVydGllcyBiZWNhdXNlIHRo
ZXkgZG8gbm90IGV4aXN0IGluIGFsbCBpbXBsZW1lbnRhdGlvbnMuIFRoZXkgd2lsbCBiZSB0ZXN0
ZWQgc2VwYXJhdGVseQogICAgICJ3ZWJraXROb3RpZmljYXRpb25zIiwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE0ODRmZDFjMjFjMTRjMDhlZjNjZGMzOWQ1ZTg3NzE4YTk2NTJiNTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3Mt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdhbWVw
YWRzLmxlbmd0aCBpcyA0CitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXSBpcyB1bmRl
ZmluZWQuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1sxXSBpcyB1bmRlZmluZWQuCitQ
QVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1syXSBpcyB1bmRlZmluZWQuCitQQVNTIG5hdmln
YXRvci53ZWJraXRHYW1lcGFkc1szXSBpcyB1bmRlZmluZWQuCitQQVNTIG5hdmlnYXRvci53ZWJr
aXRHYW1lcGFkc1swXSBpcyBub24tbnVsbC4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdhbWVwYWRz
WzBdIGlzIHVuZGVmaW5lZC4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmlkIGlz
ICdNb2NrU3RpY2sgMzAwMCcKK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmJ1dHRv
bnMubGVuZ3RoIGlzIDIKK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmF4ZXMubGVu
Z3RoIGlzIDIKK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmJ1dHRvbnNbMF0gaXMg
MS4wCitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5idXR0b25zWzFdIGlzIDAuMAor
UEFTUyBuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uYXhlcy5sZW5ndGggaXMgMgorUEFTUyBu
YXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uYXhlc1swXSBpcyAwLjUKK1BBU1MgbmF2aWdhdG9y
LndlYmtpdEdhbWVwYWRzWzBdLmF4ZXNbMV0gaXMgLTEuMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitUeXBpY2FsIHBvbGxpbmcgYWNjZXNzIHRvIGdh
bWVwYWRzIGNvbnRlbnRzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFk
LXBvbGxpbmctYWNjZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtcG9sbGlu
Zy1hY2Nlc3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTc3NWZjZGVjZTI5MjBiNjllYjBiYjE1YjlkOTUz
MDU4ZmVmOTE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFk
LXBvbGxpbmctYWNjZXNzLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cuZ2FtZXBhZENvbnRyb2xsZXIpCisg
ICAgeworICAgICAgICAvLyBzdGFydCBhbGwgZGlzY29ubmVjdGVkCisgICAgICAgIGdhbWVwYWRD
b250cm9sbGVyLmRpc2Nvbm5lY3QoMCk7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLmRpc2Nv
bm5lY3QoMSk7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLmRpc2Nvbm5lY3QoMik7CisgICAg
ICAgIGdhbWVwYWRDb250cm9sbGVyLmRpc2Nvbm5lY3QoMyk7CisgICAgICAgIHNob3VsZEJlKCJu
YXZpZ2F0b3Iud2Via2l0R2FtZXBhZHMubGVuZ3RoIiwgIjQiKTsKKyAgICAgICAgc2hvdWxkQmVV
bmRlZmluZWQoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXSIpOworICAgICAgICBzaG91bGRC
ZVVuZGVmaW5lZCgibmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzFdIik7CisgICAgICAgIHNob3Vs
ZEJlVW5kZWZpbmVkKCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMl0iKTsKKyAgICAgICAgc2hv
dWxkQmVVbmRlZmluZWQoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1szXSIpOworCisgICAgICAg
IC8vIGNvbm5lY3QgYW5kIGRpc2Nvbm5lY3QKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIuY29u
bmVjdCgwKTsKKyAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBh
ZHNbMF0iKTsKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIuZGlzY29ubmVjdCgwKTsKKyAgICAg
ICAgc2hvdWxkQmVVbmRlZmluZWQoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXSIpOworCisg
ICAgICAgIC8vIGNvbm5lY3QgYWdhaW4sIGFuZCBjaGVjayBzdGFuZGFyZCBhY2Nlc3MKKyAgICAg
ICAgZ2FtZXBhZENvbnRyb2xsZXIuY29ubmVjdCgwKTsKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xs
ZXIuc2V0SWQoMCwgIk1vY2tTdGljayAzMDAwIik7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVy
LnNldEJ1dHRvbkNvdW50KDAsIDIpOworICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5zZXRBeGlz
Q291bnQoMCwgMik7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLnNldEJ1dHRvbkRhdGEoMCwg
MCwgMSk7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLnNldEJ1dHRvbkRhdGEoMCwgMSwgMCk7
CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLnNldEF4aXNEYXRhKDAsIDAsIC41KTsKKyAgICAg
ICAgZ2FtZXBhZENvbnRyb2xsZXIuc2V0QXhpc0RhdGEoMCwgMSwgLTEuMCk7CisgICAgICAgIHNo
b3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uaWQiLCAiJ01vY2tTdGljayAzMDAw
JyIpOworICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmJ1dHRv
bnMubGVuZ3RoIiwgIjIiKTsKKyAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRHYW1l
cGFkc1swXS5heGVzLmxlbmd0aCIsICIyIik7CisgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iu
d2Via2l0R2FtZXBhZHNbMF0uYnV0dG9uc1swXSIsICIxLjAiKTsKKyAgICAgICAgc2hvdWxkQmUo
Im5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5idXR0b25zWzFdIiwgIjAuMCIpOworICAgICAg
ICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmF4ZXMubGVuZ3RoIiwgIjIi
KTsKKyAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5heGVzWzBd
IiwgIjAuNSIpOworICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBd
LmF4ZXNbMV0iLCAiLTEuMCIpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBjb25z
b2xlLmxvZygiRkFJTDogbm8gZ2FtZXBhZENvbnRyb2xsZXIgYXZhaWxhYmxlLiIpCisgICAgfQor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzxwPlR5cGljYWwgcG9sbGluZyBhY2Nlc3MgdG8gZ2FtZXBhZHMgY29u
dGVudHMuPC9wPgorPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116123</attachid>
            <date>2011-11-21 13:11:56 -0800</date>
            <delta_ts>2011-11-21 13:32:28 -0800</delta_ts>
            <desc>try a different chromium rev</desc>
            <filename>bug-69451-20111121131155.patch</filename>
            <type>text/plain</type>
            <size>28463</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRjOTNkOTAwNTZkY2Y0
YzM3ZWYwYzY1Yjk5MDBmNWIxZDcwMmFmZC4uMmY4NjQ5ZmQ3OGY5ZjVmNTMzNTk4YTg0YTA3NmIw
OGQ0Y2RmMTA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTExLTIxICBTY290
dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGRpbmcgZ2FtZXBh
ZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02OTQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFB1bGwgZGF0YSBpbiBmcm9tIHBsYXRmb3JtIGxheWVyIG9uIHJldHJpZXZhbC4KKworICAgICAg
ICBUZXN0OiBnYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MuaHRtbAorCisgICAgICAgICog
cGFnZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRH
YW1lcGFkcyk6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9HYW1lcGFkcy5oOiBBZGRlZC4KKwogMjAxMS0xMS0yMSAgQW5kcmVhcyBLbGluZyAgPGtsaW5n
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3R5bGVTaGVldDogTW92ZSBjb21wbGV0ZVVSTCgpIHRv
IENTU1N0eWxlU2hlZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDY1ZjEyOTIxNzQx
YjBhNWFmMzhlMTUyNWY2MGUwMjIzM2RhNTFjNzMuLjc2NzBlMmY3N2NkZjE5YWJmMjBhOGU3Yzg4
MWYyNWE5MmQyZjViNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMTEtMjEgIFNjb3R0IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEFkZGluZyBnYW1lcGFkIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGltcGxlbWVudGF0aW9uIG9mIHNhbXBsZUdhbWVwYWRz
IGluIENocm9taXVtIHBsYXRmb3JtLiBSZXRyaWV2ZXMKKyAgICAgICAgZ2FtZXBhZCBkYXRhIGZy
b20gQ2hyb21pdW0gcG9ydCBhbmQgY29udmVydHMgdG8gRE9NIGZvcm1hdCwgaS5lLgorICAgICAg
ICBHYW1lcGFkTGlzdC4gVXBkYXRlIERFUFMgdG8gcHVsbCB2ZXJzaW9uIG9mIENocm9taXVtIGNv
bnRhaW5pbmcKKyAgICAgICAgdXBkYXRlcyB0byB3ZWJraXRfc3VwcG9ydC4KKworICAgICAgICAq
IERFUFM6CisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBzcmMvR2FtZXBhZHMuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNhbXBsZUdhbWVwYWRzKToKKwogMjAxMS0xMS0y
MSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bnb29nbGUuY29tPgogCiAgICAgICAgIEltcGxl
bWVudCBhIHNldHRlciBmb3IgVW5pZmllZFRleHRDaGVja2VyRW5hYmxlZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yLmNwcAppbmRleCBkZTU0ZGM1MWUxZWJkMTYxNjNmM2YzYzY5NGVmNWNiNTdlNjkw
YTdiLi5iYzFlMDUzNGQwZWM5MDI3MTlmYTc0NGE3MTk5MzNkNDk0Yjk5YmVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAKICNpZiBFTkFCTEUoR0FNRVBB
RCkKICNpbmNsdWRlICJHYW1lcGFkTGlzdC5oIgorI2luY2x1ZGUgIkdhbWVwYWRzLmgiCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCkBAIC0zMTEsOCArMzEyLDEwIEBAIHZvaWQg
TmF2aWdhdG9yOjp3ZWJraXRHZXRVc2VyTWVkaWEoY29uc3QgU3RyaW5nJiBvcHRpb25zLCBQYXNz
UmVmUHRyPE5hdmlnYXRvclVzCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiBHYW1lcGFkTGlzdCogTmF2
aWdhdG9yOjp3ZWJraXRHYW1lcGFkcygpCiB7Ci0gICAgLy8gU3R1YmJlZCB1bnRpbCBwbGF0Zm9y
bS8gY2hhbmdlcyBsYW5kZWQuCi0gICAgcmV0dXJuIDA7CisgICAgaWYgKCFtX2dhbWVwYWRzKQor
ICAgICAgICBtX2dhbWVwYWRzID0gR2FtZXBhZExpc3Q6OmNyZWF0ZSgpOworICAgIHNhbXBsZUdh
bWVwYWRzKG1fZ2FtZXBhZHMuZ2V0KCkpOworICAgIHJldHVybiBtX2dhbWVwYWRzLmdldCgpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCmluZGV4IDViYWJkYzVkZDhmMmY5ZGMy
NWE5MTAwY2QyYmY1ZmZmN2ViYmZlYWUuLjYzMjFiMzFkOTczNjIyOTNjYzE4MjNkNjlkZmE4OWYw
ODE1YjAzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaApAQCAtODUsNiArODUsOSBAQCBwcml2
YXRlOgogICAgIG11dGFibGUgUmVmUHRyPERPTVBsdWdpbkFycmF5PiBtX3BsdWdpbnM7CiAgICAg
bXV0YWJsZSBSZWZQdHI8RE9NTWltZVR5cGVBcnJheT4gbV9taW1lVHlwZXM7CiAgICAgbXV0YWJs
ZSBSZWZQdHI8R2VvbG9jYXRpb24+IG1fZ2VvbG9jYXRpb247CisjaWYgRU5BQkxFKEdBTUVQQUQp
CisgICAgbXV0YWJsZSBSZWZQdHI8R2FtZXBhZExpc3Q+IG1fZ2FtZXBhZHM7CisjZW5kaWYKICNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIG11dGFibGUgUmVmUHRyPFBvaW50ZXJMb2NrPiBt
X3BvaW50ZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dh
bWVwYWRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HYW1lcGFkcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA0MDFmYjU5MTdhNGEyMzVhZTMxNDQ0OWZjMWYyNTljYjZlNzZjMDEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HYW1lcGFkcy5oCkBAIC0wLDAgKzEsNDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorICog
REFNQUdFLgorICovCisKKyNpZm5kZWYgR2FtZXBhZHNfaAorI2RlZmluZSBHYW1lcGFkc19oCisK
KyNpZiBFTkFCTEUoR0FNRVBBRCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHYW1l
cGFkTGlzdDsKKwordm9pZCBzYW1wbGVHYW1lcGFkcyhHYW1lcGFkTGlzdCogaW50byk7CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQorCisjZW5kaWYgLy8gR2FtZXBhZHNfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9ERVBTIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9ERVBTCmluZGV4IDM2OGI1NzBkNDEwODg1MmRhOTk4NzhmZWUzZGI4M2E0YjRkNTg0YzMu
LjVkZDRjYzlkODBhNzY0OTJmZGUxZDAyOWY0YzkyZjY2ZTZiODgzM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vREVQUworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0RF
UFMKQEAgLTMyLDcgKzMyLDcgQEAKIAogdmFycyA9IHsKICAgJ2Nocm9taXVtX3N2bic6ICdodHRw
Oi8vc3JjLmNocm9taXVtLm9yZy9zdm4vdHJ1bmsvc3JjJywKLSAgJ2Nocm9taXVtX3Jldic6ICcx
MDk2OTYnCisgICdjaHJvbWl1bV9yZXYnOiAnMTEwOTk0JwogfQogCiBkZXBzID0gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDEyMTA4OTQ2NmY1Njk4NGQ1ZDQ3ZDlmYzE2NzljMTcw
NjMzMzY1MjYuLjRlNmU5YmFlNDczYjBjMGY4ZDAwNDdkZGY2OGY3YWE0MmQzYTRiOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTM5MCw2ICszOTAsNyBAQAogICAgICAgICAgICAg
ICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9GcmFtZU5l
dHdvcmtpbmdDb250ZXh0SW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0dhbWVwYWRzLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9HZW9sb2NhdGlvbkNsaWVudFByb3h5LmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9HZW9sb2NhdGlvbkNsaWVudFByb3h5LmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR2FtZXBhZHMuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvR2FtZXBhZHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3YzQzYTMxYzE5YzFmZmFjZWMx
ZTlhY2QwZGQzMGY5MTk2YTczZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9HYW1lcGFkcy5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVwYWRzLmgiCisKKyNpZiBFTkFCTEUo
R0FNRVBBRCkKKworI2luY2x1ZGUgIkdhbWVwYWRMaXN0LmgiCisjaW5jbHVkZSAiV2ViR2FtZXBh
ZHMuaCIKKyNpbmNsdWRlICJXZWJLaXQuaCIKKyNpbmNsdWRlICJXZWJLaXRQbGF0Zm9ybVN1cHBv
cnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBHYW1lcGFkTGlzdDsKKwordm9pZCBzYW1wbGVHYW1lcGFkcyhHYW1lcGFkTGlzdCog
aW50bykKK3sKKyAgICBXZWJHYW1lcGFkcyBnYW1lcGFkczsKKworICAgIHdlYktpdFBsYXRmb3Jt
U3VwcG9ydCgpLT5zYW1wbGVHYW1lcGFkcyhnYW1lcGFkcyk7CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgV2ViS2l0OjpXZWJHYW1lcGFkczo6aXRlbXNMZW5ndGhDYXA7ICsraSkgewor
ICAgICAgICBXZWJHYW1lcGFkJiB3ZWJHYW1lcGFkID0gZ2FtZXBhZHMuaXRlbXNbaV07CisgICAg
ICAgIGlmIChpIDwgZ2FtZXBhZHMubGVuZ3RoICYmIHdlYkdhbWVwYWQuY29ubmVjdGVkKSB7Cisg
ICAgICAgICAgICBSZWZQdHI8R2FtZXBhZD4gZ2FtZXBhZCA9IGludG8tPml0ZW0oaSk7CisgICAg
ICAgICAgICBpZiAoIWdhbWVwYWQpCisgICAgICAgICAgICAgICAgZ2FtZXBhZCA9IEdhbWVwYWQ6
OmNyZWF0ZSgpOworICAgICAgICAgICAgZ2FtZXBhZC0+aWQod2ViR2FtZXBhZC5pZCk7CisgICAg
ICAgICAgICBnYW1lcGFkLT5pbmRleChpKTsKKyAgICAgICAgICAgIGdhbWVwYWQtPnRpbWVzdGFt
cCh3ZWJHYW1lcGFkLnRpbWVzdGFtcCk7CisgICAgICAgICAgICBnYW1lcGFkLT5heGVzKHdlYkdh
bWVwYWQuYXhlc0xlbmd0aCwgd2ViR2FtZXBhZC5heGVzKTsKKyAgICAgICAgICAgIGdhbWVwYWQt
PmJ1dHRvbnMod2ViR2FtZXBhZC5idXR0b25zTGVuZ3RoLCB3ZWJHYW1lcGFkLmJ1dHRvbnMpOwor
ICAgICAgICAgICAgaW50by0+c2V0KGksIGdhbWVwYWQpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIGludG8tPnNldChpLCAwKTsKKyAgICB9Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTNkNmM0ODcwMGM2
MTdkYTVmMGFhYzAxMTA0NzM0ZjQ2NzFmMDIyMy4uMjU2MjQ0NTJiMTc3ZWM2NjVjMjRlOWU5Yjhj
NmU5NDBmNzMzOGI4NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDExLTExLTIxICBTY290dCBHcmFoYW0gIDxzY290
dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGRpbmcgZ2FtZXBhZCBzdXBwb3J0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTQ1MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhICdnYW1lcGFk
Q29udHJvbGxlcicgdG8gQ2hyb21pdW0gRFJULiBBbGxvd3MgZm9yIHNldHRpbmcgb2YgbW9jawor
ICAgICAgICBnYW1lcGFkIGRhdGEgdGhhdCB3aWxsIGJlIHJldHJpZXZlZCB3aGVuIEpTIGNvZGUg
cHVsbHMgdmlhIEFQSSBhY2Nlc3MuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0dhbWVwYWRD
b250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChHYW1lcGFkQ29udHJvbGxlcjo6R2FtZXBh
ZENvbnRyb2xsZXIpOgorICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OmJpbmRUb0phdmFzY3Jp
cHQpOgorICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OnJlc2V0KToKKyAgICAgICAgKEdhbWVw
YWRDb250cm9sbGVyOjpjb25uZWN0KToKKyAgICAgICAgKEdhbWVwYWRDb250cm9sbGVyOjpkaXNj
b25uZWN0KToKKyAgICAgICAgKEdhbWVwYWRDb250cm9sbGVyOjpzZXRJZCk6CisgICAgICAgIChH
YW1lcGFkQ29udHJvbGxlcjo6c2V0QnV0dG9uQ291bnQpOgorICAgICAgICAoR2FtZXBhZENvbnRy
b2xsZXI6OnNldEJ1dHRvbkRhdGEpOgorICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OnNldEF4
aXNDb3VudCk6CisgICAgICAgIChHYW1lcGFkQ29udHJvbGxlcjo6c2V0QXhpc0RhdGEpOgorICAg
ICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OmZhbGxiYWNrQ2FsbGJhY2spOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0dhbWVwYWRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHA6CisgICAgICAgIChUZXN0
U2hlbGw6OlRlc3RTaGVsbCk6CisgICAgICAgIChUZXN0U2hlbGw6OnJlc2V0VGVzdENvbnRyb2xs
ZXIpOgorICAgICAgICAoVGVzdFNoZWxsOjpiaW5kSlNPYmplY3RzVG9XaW5kb3cpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAoVGVzdFNo
ZWxsOjpnYW1lcGFkQ29udHJvbGxlcik6CisKIDIwMTEtMTEtMjEgIFBoaWxpcHBlIE5vcm1hbmQg
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJ1bi1ndGstdGVz
dHMgdGVtcG9yYXJ5IHdvcmthcm91bmQgYWZ0ZXIgcjk4NTAwLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLmd5cGkKaW5kZXggMjM1Yjk1MzcyNmJjZWFhYjE4NWU1ZDQ4Mjk1Y2Yx
MzM5OWFmMjc2My4uYjE5YmUyMjcyYzU1NWM3OWQyOTk3MTYwNTI0YWFmNzBjZjJlOGY2OCAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC0xNiw2ICsxNiw4IEBA
CiAgICAgICAgICAgICAnY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9FdmVudFNlbmRlci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL0V2ZW50
U2VuZGVyLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL0dhbWVwYWRDb250cm9sbGVyLmNwcCcs
CisgICAgICAgICAgICAnY2hyb21pdW0vR2FtZXBhZENvbnRyb2xsZXIuaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2Nr
U3BlbGxDaGVjay5jcHAnLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vR2FtZXBhZENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
R2FtZXBhZENvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5NzRkM2JjZGUwMjhkOTg1NDQ1MGU2
YmVlODBlZmJmY2IxN2JiNDEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9HYW1lcGFkQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZXBhZENvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUg
IlRlc3RTaGVsbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitHYW1lcGFkQ29udHJv
bGxlcjo6R2FtZXBhZENvbnRyb2xsZXIoVGVzdFNoZWxsKiBzaGVsbCkKKyAgICA6IG1fc2hlbGwo
c2hlbGwpCit7CisgICAgYmluZE1ldGhvZCgiY29ubmVjdCIsICZHYW1lcGFkQ29udHJvbGxlcjo6
Y29ubmVjdCk7CisgICAgYmluZE1ldGhvZCgiZGlzY29ubmVjdCIsICZHYW1lcGFkQ29udHJvbGxl
cjo6ZGlzY29ubmVjdCk7CisgICAgYmluZE1ldGhvZCgic2V0SWQiLCAmR2FtZXBhZENvbnRyb2xs
ZXI6OnNldElkKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRCdXR0b25Db3VudCIsICZHYW1lcGFkQ29u
dHJvbGxlcjo6c2V0QnV0dG9uQ291bnQpOworICAgIGJpbmRNZXRob2QoInNldEJ1dHRvbkRhdGEi
LCAmR2FtZXBhZENvbnRyb2xsZXI6OnNldEJ1dHRvbkRhdGEpOworICAgIGJpbmRNZXRob2QoInNl
dEF4aXNDb3VudCIsICZHYW1lcGFkQ29udHJvbGxlcjo6c2V0QXhpc0NvdW50KTsKKyAgICBiaW5k
TWV0aG9kKCJzZXRBeGlzRGF0YSIsICZHYW1lcGFkQ29udHJvbGxlcjo6c2V0QXhpc0RhdGEpOwor
CisgICAgYmluZEZhbGxiYWNrTWV0aG9kKCZHYW1lcGFkQ29udHJvbGxlcjo6ZmFsbGJhY2tDYWxs
YmFjayk7CisKKyAgICByZXNldCgpOworfQorCit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpiaW5k
VG9KYXZhc2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBjbGFzc25hbWUp
Cit7CisgICAgQ3BwQm91bmRDbGFzczo6YmluZFRvSmF2YXNjcmlwdChmcmFtZSwgY2xhc3NuYW1l
KTsKK30KKwordm9pZCBHYW1lcGFkQ29udHJvbGxlcjo6cmVzZXQoKQoreworICAgIG1lbXNldCgm
aW50ZXJuYWxEYXRhLCAwLCBzaXplb2YoaW50ZXJuYWxEYXRhKSk7Cit9CisKK3ZvaWQgR2FtZXBh
ZENvbnRyb2xsZXI6OmNvbm5lY3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmdzLCBDcHBWYXJp
YW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkgeworICAgICAgICBwcmlu
dGYoIkludmFsaWQgYXJncyIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGludCBpbmRl
eCA9IGFyZ3NbMF0udG9JbnQzMigpOworICAgIGludGVybmFsRGF0YS5pdGVtc1tpbmRleF0uY29u
bmVjdGVkID0gdHJ1ZTsKKyAgICBpbnRlcm5hbERhdGEubGVuZ3RoID0gMDsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgV2ViS2l0OjpXZWJHYW1lcGFkczo6aXRlbXNMZW5ndGhDYXA7ICsr
aSkKKyAgICAgICAgaWYgKGludGVybmFsRGF0YS5pdGVtc1tpXS5jb25uZWN0ZWQpCisgICAgICAg
ICAgICBpbnRlcm5hbERhdGEubGVuZ3RoID0gaSArIDE7CisgICAgd2Via2l0X3N1cHBvcnQ6OlNl
dEdhbWVwYWREYXRhKGludGVybmFsRGF0YSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisK
K3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OmRpc2Nvbm5lY3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmdzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkg
eworICAgICAgICBwcmludGYoIkludmFsaWQgYXJncyIpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGludCBpbmRleCA9IGFyZ3NbMF0udG9JbnQzMigpOworICAgIGludGVybmFsRGF0YS5p
dGVtc1tpbmRleF0uY29ubmVjdGVkID0gZmFsc2U7CisgICAgaW50ZXJuYWxEYXRhLmxlbmd0aCA9
IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdlYktpdDo6V2ViR2FtZXBhZHM6Oml0
ZW1zTGVuZ3RoQ2FwOyArK2kpCisgICAgICAgIGlmIChpbnRlcm5hbERhdGEuaXRlbXNbaV0uY29u
bmVjdGVkKQorICAgICAgICAgICAgaW50ZXJuYWxEYXRhLmxlbmd0aCA9IGkgKyAxOworICAgIHdl
YmtpdF9zdXBwb3J0OjpTZXRHYW1lcGFkRGF0YShpbnRlcm5hbERhdGEpOworICAgIHJlc3VsdC0+
c2V0TnVsbCgpOworfQorCit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpzZXRJZChjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3MsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJncy5z
aXplKCkgPCAyKSB7CisgICAgICAgIHByaW50ZigiSW52YWxpZCBhcmdzIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaW50IGluZGV4ID0gYXJnc1swXS50b0ludDMyKCk7CisgICAgc3Rk
OjpzdHJpbmcgc3JjID0gYXJnc1sxXS50b1N0cmluZygpOworICAgIGNvbnN0IGNoYXIqIHAgPSBz
cmMuY19zdHIoKTsKKyAgICBtZW1zZXQoaW50ZXJuYWxEYXRhLml0ZW1zW2luZGV4XS5pZCwgMCwg
c2l6ZW9mKGludGVybmFsRGF0YS5pdGVtc1tpbmRleF0uaWQpKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyAqcCAmJiBpIDwgV2ViS2l0OjpXZWJHYW1lcGFkOjppZExlbmd0aENhcCAtIDE7ICsr
aSkKKyAgICAgICAgaW50ZXJuYWxEYXRhLml0ZW1zW2luZGV4XS5pZFtpXSA9ICpwKys7CisgICAg
d2Via2l0X3N1cHBvcnQ6OlNldEdhbWVwYWREYXRhKGludGVybmFsRGF0YSk7CisgICAgcmVzdWx0
LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OnNldEJ1dHRvbkNvdW50
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAg
IGlmIChhcmdzLnNpemUoKSA8IDIpIHsKKyAgICAgICAgcHJpbnRmKCJJbnZhbGlkIGFyZ3MiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbnQgaW5kZXggPSBhcmdzWzBdLnRvSW50MzIo
KTsKKyAgICBpbnQgYnV0dG9ucyA9IGFyZ3NbMV0udG9JbnQzMigpOworICAgIGludGVybmFsRGF0
YS5pdGVtc1tpbmRleF0uYnV0dG9uc0xlbmd0aCA9IGJ1dHRvbnM7CisgICAgd2Via2l0X3N1cHBv
cnQ6OlNldEdhbWVwYWREYXRhKGludGVybmFsRGF0YSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7
Cit9CisKK3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OnNldEJ1dHRvbkRhdGEoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiBhcmdzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3Muc2l6
ZSgpIDwgMykgeworICAgICAgICBwcmludGYoIkludmFsaWQgYXJncyIpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGludCBpbmRleCA9IGFyZ3NbMF0udG9JbnQzMigpOworICAgIGludCBi
dXR0b24gPSBhcmdzWzFdLnRvSW50MzIoKTsKKyAgICBkb3VibGUgZGF0YSA9IGFyZ3NbMl0udG9E
b3VibGUoKTsKKyAgICBpbnRlcm5hbERhdGEuaXRlbXNbaW5kZXhdLmJ1dHRvbnNbYnV0dG9uXSA9
IGRhdGE7CisgICAgd2Via2l0X3N1cHBvcnQ6OlNldEdhbWVwYWREYXRhKGludGVybmFsRGF0YSk7
CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OnNl
dEF4aXNDb3VudChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3MsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgPCAyKSB7CisgICAgICAgIHByaW50ZigiSW52YWxp
ZCBhcmdzIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW50IGluZGV4ID0gYXJnc1sw
XS50b0ludDMyKCk7CisgICAgaW50IGF4ZXMgPSBhcmdzWzFdLnRvSW50MzIoKTsKKyAgICBpbnRl
cm5hbERhdGEuaXRlbXNbaW5kZXhdLmF4ZXNMZW5ndGggPSBheGVzOworICAgIHdlYmtpdF9zdXBw
b3J0OjpTZXRHYW1lcGFkRGF0YShpbnRlcm5hbERhdGEpOworICAgIHJlc3VsdC0+c2V0TnVsbCgp
OworfQorCit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpzZXRBeGlzRGF0YShjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3MsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJncy5zaXpl
KCkgPCAzKSB7CisgICAgICAgIHByaW50ZigiSW52YWxpZCBhcmdzIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaW50IGluZGV4ID0gYXJnc1swXS50b0ludDMyKCk7CisgICAgaW50IGF4
aXMgPSBhcmdzWzFdLnRvSW50MzIoKTsKKyAgICBkb3VibGUgZGF0YSA9IGFyZ3NbMl0udG9Eb3Vi
bGUoKTsKKyAgICBpbnRlcm5hbERhdGEuaXRlbXNbaW5kZXhdLmF4ZXNbYXhpc10gPSBkYXRhOwor
ICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRHYW1lcGFkRGF0YShpbnRlcm5hbERhdGEpOworICAgIHJl
c3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpmYWxsYmFja0Nh
bGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAg
ICBwcmludGYoIkNPTlNPTEUgTUVTU0FHRTogSmF2YVNjcmlwdCBFUlJPUjogdW5rbm93biBtZXRo
b2QgY2FsbGVkIG9uICIKKyAgICAgICAgICAgIkdhbWVwYWRDb250cm9sbGVyXG4iKTsKKyAgICBy
ZXN1bHQtPnNldE51bGwoKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0dhbWVwYWRDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9HYW1lcGFkQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2ZWVkYjA1ZDhkNTJmMzMxY2JiZTcz
ZjJhZjIyYjE0NTljMGRkNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9HYW1lcGFkQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdh
bWVwYWRDb250cm9sbGVyX2gKKyNkZWZpbmUgR2FtZXBhZENvbnRyb2xsZXJfaAorCisjaW5jbHVk
ZSAiQ3BwQm91bmRDbGFzcy5oIgorI2luY2x1ZGUgIldlYkdhbWVwYWRzLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworY2xhc3MgV2ViR2FtZXBhZHM7CitjbGFzcyBXZWJGcmFtZTsKK30KKworY2xh
c3MgVGVzdFNoZWxsOworCitjbGFzcyBHYW1lcGFkQ29udHJvbGxlciA6IHB1YmxpYyBDcHBCb3Vu
ZENsYXNzIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBHYW1lcGFkQ29udHJvbGxlcihUZXN0U2hl
bGwqKTsKKworICAgIHZvaWQgYmluZFRvSmF2YXNjcmlwdChXZWJLaXQ6OldlYkZyYW1lKiwgY29u
c3QgV2ViS2l0OjpXZWJTdHJpbmcmIGNsYXNzbmFtZSk7CisgICAgdm9pZCByZXNldCgpOworCitw
cml2YXRlOgorICAgIC8vIEJvdW5kIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMKKyAgICB2b2lkIGNv
bm5lY3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgZGlz
Y29ubmVjdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBz
ZXRJZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBzZXRC
dXR0b25Db3VudChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9p
ZCBzZXRCdXR0b25EYXRhKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAg
ICB2b2lkIHNldEF4aXNDb3VudChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7
CisgICAgdm9pZCBzZXRBeGlzRGF0YShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CisgICAgdm9pZCBmYWxsYmFja0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqKTsKKworICAgIFRlc3RTaGVsbCogbV9zaGVsbDsKKworICAgIFdlYktpdDo6V2Vi
R2FtZXBhZHMgaW50ZXJuYWxEYXRhOworfTsKKworI2VuZGlmIC8vIEdhbWVwYWRDb250cm9sbGVy
X2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCmluZGV4IDg1
MDdmMjRjMDIyMzNiY2QxMDg4MTFmMGJjNzE3YjU2M2RlN2NmMDguLjg3MDYyMmFlNDZiYTdmMzQ4
MmVkMTAwNjdhM2FkOGRlZTQ4NGIyYWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsLmNwcApAQCAtMTI2LDYgKzEyNiw3IEBAIFRlc3RTaGVsbDo6VGVzdFNoZWxs
KGJvb2wgdGVzdFNoZWxsTW9kZSkKIAogICAgIG1fd2ViUGVybWlzc2lvbnMgPSBhZG9wdFB0cihu
ZXcgV2ViUGVybWlzc2lvbnModGhpcykpOwogICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIg
PSBhZG9wdFB0cihuZXcgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIodGhpcykpOworICAgIG1fZ2Ft
ZXBhZENvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgR2FtZXBhZENvbnRyb2xsZXIodGhpcykpOwog
ICAgIG1fbGF5b3V0VGVzdENvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgTGF5b3V0VGVzdENvbnRy
b2xsZXIodGhpcykpOwogICAgIG1fZXZlbnRTZW5kZXIgPSBhZG9wdFB0cihuZXcgRXZlbnRTZW5k
ZXIodGhpcykpOwogICAgIG1fcGxhaW5UZXh0Q29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBQbGFp
blRleHRDb250cm9sbGVyKCkpOwpAQCAtMjY5LDYgKzI3MCw3IEBAIHZvaWQgVGVzdFNoZWxsOjpy
ZXNldFRlc3RDb250cm9sbGVyKCkKICAgICByZXNldFdlYlNldHRpbmdzKCp3ZWJWaWV3KCkpOwog
ICAgIG1fd2ViUGVybWlzc2lvbnMtPnJlc2V0KCk7CiAgICAgbV9hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci0+cmVzZXQoKTsKKyAgICBtX2dhbWVwYWRDb250cm9sbGVyLT5yZXNldCgpOwogICAgIG1f
bGF5b3V0VGVzdENvbnRyb2xsZXItPnJlc2V0KCk7CiAgICAgbV9ldmVudFNlbmRlci0+cmVzZXQo
KTsKICAgICBtX3dlYlZpZXdIb3N0LT5yZXNldCgpOwpAQCAtNjcyLDYgKzY3NCw3IEBAIHZvaWQg
VGVzdFNoZWxsOjpiaW5kSlNPYmplY3RzVG9XaW5kb3coV2ViRnJhbWUqIGZyYW1lKQogewogICAg
IFdlYlRlc3RpbmdTdXBwb3J0OjppbmplY3RJbnRlcm5hbHNPYmplY3QoZnJhbWUpOwogICAgIG1f
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXItPmJpbmRUb0phdmFzY3JpcHQoZnJhbWUsIFdlYlN0cmlu
Zzo6ZnJvbVVURjgoImFjY2Vzc2liaWxpdHlDb250cm9sbGVyIikpOworICAgIG1fZ2FtZXBhZENv
bnRyb2xsZXItPmJpbmRUb0phdmFzY3JpcHQoZnJhbWUsIFdlYlN0cmluZzo6ZnJvbVVURjgoImdh
bWVwYWRDb250cm9sbGVyIikpOwogICAgIG1fbGF5b3V0VGVzdENvbnRyb2xsZXItPmJpbmRUb0ph
dmFzY3JpcHQoZnJhbWUsIFdlYlN0cmluZzo6ZnJvbVVURjgoImxheW91dFRlc3RDb250cm9sbGVy
IikpOwogICAgIG1fZXZlbnRTZW5kZXItPmJpbmRUb0phdmFzY3JpcHQoZnJhbWUsIFdlYlN0cmlu
Zzo6ZnJvbVVURjgoImV2ZW50U2VuZGVyIikpOwogICAgIG1fcGxhaW5UZXh0Q29udHJvbGxlci0+
YmluZFRvSmF2YXNjcmlwdChmcmFtZSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGxhaW5UZXh0Iikp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAppbmRleCBiMTk0ZWIw
YjIzOTYzMGUxMjNkZmI0MzEyZDBjZjc0MTM3Mzg2MjExLi4xZjY0OGIxNWVmYjQ0MDI2MWMwZTgz
ODIzNmVjZjM2ZTJjM2YyMjQ0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0U2hlbGwuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuaApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJFdmVudFNlbmRlci5oIgorI2luY2x1ZGUgIkdhbWVwYWRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiTGF5b3V0VGVzdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJO
b3RpZmljYXRpb25QcmVzZW50ZXIuaCIKICNpbmNsdWRlICJQbGFpblRleHRDb250cm9sbGVyLmgi
CkBAIC05MSw2ICs5Miw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogbGF5
b3V0VGVzdENvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFRlc3RDb250cm9sbGVy
LmdldCgpOyB9CiAgICAgRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKCkgY29uc3QgeyByZXR1cm4g
bV9ldmVudFNlbmRlci5nZXQoKTsgfQogICAgIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKiBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZ2V0KCk7IH0KKyAgICBHYW1lcGFkQ29udHJvbGxlciogZ2FtZXBhZENvbnRyb2xsZXIo
KSBjb25zdCB7IHJldHVybiBtX2dhbWVwYWRDb250cm9sbGVyLmdldCgpOyB9CiAgICAgTm90aWZp
Y2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdCB7IHJldHVybiBt
X25vdGlmaWNhdGlvblByZXNlbnRlci5nZXQoKTsgfQogICAgIFRlc3RFdmVudFByaW50ZXIqIHBy
aW50ZXIoKSBjb25zdCB7IHJldHVybiBtX3ByaW50ZXIuZ2V0KCk7IH0KIApAQCAtMjA1LDYgKzIw
Nyw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPERSVERldlRvb2xzQWdlbnQ+IG1fZHJ0RGV2VG9v
bHNBZ2VudDsKICAgICBPd25QdHI8RFJURGV2VG9vbHNDbGllbnQ+IG1fZHJ0RGV2VG9vbHNDbGll
bnQ7CiAgICAgT3duUHRyPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPiBtX2FjY2Vzc2liaWxpdHlD
b250cm9sbGVyOworICAgIE93blB0cjxHYW1lcGFkQ29udHJvbGxlcj4gbV9nYW1lcGFkQ29udHJv
bGxlcjsKICAgICBPd25QdHI8RXZlbnRTZW5kZXI+IG1fZXZlbnRTZW5kZXI7CiAgICAgT3duUHRy
PExheW91dFRlc3RDb250cm9sbGVyPiBtX2xheW91dFRlc3RDb250cm9sbGVyOwogICAgIE93blB0
cjxQbGFpblRleHRDb250cm9sbGVyPiBtX3BsYWluVGV4dENvbnRyb2xsZXI7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzVj
ZjAzZTliNzk0ZGMwMjYyNDNiNTIzODg0OWYzNzY5MzUyMTliMy4uMDMxOTZmMDY1MjM5OWFmYTll
ZTMyYTY1ZDZiM2E4Zjc0NzAyZjUzNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTExLTIx
ICBTY290dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGRpbmcg
Z2FtZXBhZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02OTQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9kb20vc2NyaXB0LXRlc3RzL3Byb3RvdHlwZS1pbmhlcml0YW5jZS5qczog
RXhjbHVkZQorICAgICAgICBnYW1lcGFkQ29udHJvbGxlciBmcm9tIGVudW1lcmF0aW9uLgorICAg
ICAgICAqIGdhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGdhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy5odG1sOiBBZGRlZC4K
KwogMjAxMS0xMS0yMSAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZWJhc2VsaW5lIGZvbnQtZmFjZS1vcGVudHlwZS5odG1sIG9uIGNyLW1hYy1sZW9wYXJkLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL3Byb3RvdHlwZS1p
bmhlcml0YW5jZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9wcm90b3R5
cGUtaW5oZXJpdGFuY2UuanMKaW5kZXggYzk0ZDY4NTU4YjMxZDhiYmJlNWQ0YTBkMTkwMGZkYjFh
ZjgzYWE4Mi4uZGZkZmQ4Y2FjMWVhNWExYmM1NzNmYmYyYjk4ZDU1MGM2YjRjMjJiZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL3Byb3RvdHlwZS1pbmhlcml0
YW5jZS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQtdGVzdHMvcHJvdG90eXBl
LWluaGVyaXRhbmNlLmpzCkBAIC0xMiw2ICsxMiw3IEBAIHZhciBza2lwcGVkUHJvcGVydGllcyA9
IFsKICAgICAib2JqQ0NvbnRyb2xsZXIiLCAidGV4dElucHV0Q29udHJvbGxlciIsICJuYXZpZ2F0
aW9uQ29udHJvbGxlciIsCiAgICAgImV2ZW50U2VuZGVyIiwgIm9iakNQbHVnaW4iLCAib2JqQ1Bs
dWdpbkZ1bmN0aW9uIiwKICAgICAiYXBwbGVTY3JpcHRDb250cm9sbGVyIiwgInBsYWluVGV4dCIs
ICJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlciIsCisgICAgImdhbWVwYWRDb250cm9sbGVyIiwKICAg
ICAiaW50ZXJuYWxzIiwKICAgICAvLyBJZ25vcmUgdGhlc2UgcHJvcGVydGllcyBiZWNhdXNlIHRo
ZXkgZG8gbm90IGV4aXN0IGluIGFsbCBpbXBsZW1lbnRhdGlvbnMuIFRoZXkgd2lsbCBiZSB0ZXN0
ZWQgc2VwYXJhdGVseQogICAgICJ3ZWJraXROb3RpZmljYXRpb25zIiwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE0ODRmZDFjMjFjMTRjMDhlZjNjZGMzOWQ1ZTg3NzE4YTk2NTJiNTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3Mt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdhbWVw
YWRzLmxlbmd0aCBpcyA0CitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXSBpcyB1bmRl
ZmluZWQuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1sxXSBpcyB1bmRlZmluZWQuCitQ
QVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1syXSBpcyB1bmRlZmluZWQuCitQQVNTIG5hdmln
YXRvci53ZWJraXRHYW1lcGFkc1szXSBpcyB1bmRlZmluZWQuCitQQVNTIG5hdmlnYXRvci53ZWJr
aXRHYW1lcGFkc1swXSBpcyBub24tbnVsbC4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdhbWVwYWRz
WzBdIGlzIHVuZGVmaW5lZC4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmlkIGlz
ICdNb2NrU3RpY2sgMzAwMCcKK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmJ1dHRv
bnMubGVuZ3RoIGlzIDIKK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmF4ZXMubGVu
Z3RoIGlzIDIKK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmJ1dHRvbnNbMF0gaXMg
MS4wCitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5idXR0b25zWzFdIGlzIDAuMAor
UEFTUyBuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uYXhlcy5sZW5ndGggaXMgMgorUEFTUyBu
YXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uYXhlc1swXSBpcyAwLjUKK1BBU1MgbmF2aWdhdG9y
LndlYmtpdEdhbWVwYWRzWzBdLmF4ZXNbMV0gaXMgLTEuMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitUeXBpY2FsIHBvbGxpbmcgYWNjZXNzIHRvIGdh
bWVwYWRzIGNvbnRlbnRzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFk
LXBvbGxpbmctYWNjZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtcG9sbGlu
Zy1hY2Nlc3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTc3NWZjZGVjZTI5MjBiNjllYjBiYjE1YjlkOTUz
MDU4ZmVmOTE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFk
LXBvbGxpbmctYWNjZXNzLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cuZ2FtZXBhZENvbnRyb2xsZXIpCisg
ICAgeworICAgICAgICAvLyBzdGFydCBhbGwgZGlzY29ubmVjdGVkCisgICAgICAgIGdhbWVwYWRD
b250cm9sbGVyLmRpc2Nvbm5lY3QoMCk7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLmRpc2Nv
bm5lY3QoMSk7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLmRpc2Nvbm5lY3QoMik7CisgICAg
ICAgIGdhbWVwYWRDb250cm9sbGVyLmRpc2Nvbm5lY3QoMyk7CisgICAgICAgIHNob3VsZEJlKCJu
YXZpZ2F0b3Iud2Via2l0R2FtZXBhZHMubGVuZ3RoIiwgIjQiKTsKKyAgICAgICAgc2hvdWxkQmVV
bmRlZmluZWQoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXSIpOworICAgICAgICBzaG91bGRC
ZVVuZGVmaW5lZCgibmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzFdIik7CisgICAgICAgIHNob3Vs
ZEJlVW5kZWZpbmVkKCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMl0iKTsKKyAgICAgICAgc2hv
dWxkQmVVbmRlZmluZWQoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1szXSIpOworCisgICAgICAg
IC8vIGNvbm5lY3QgYW5kIGRpc2Nvbm5lY3QKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIuY29u
bmVjdCgwKTsKKyAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBh
ZHNbMF0iKTsKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIuZGlzY29ubmVjdCgwKTsKKyAgICAg
ICAgc2hvdWxkQmVVbmRlZmluZWQoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXSIpOworCisg
ICAgICAgIC8vIGNvbm5lY3QgYWdhaW4sIGFuZCBjaGVjayBzdGFuZGFyZCBhY2Nlc3MKKyAgICAg
ICAgZ2FtZXBhZENvbnRyb2xsZXIuY29ubmVjdCgwKTsKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xs
ZXIuc2V0SWQoMCwgIk1vY2tTdGljayAzMDAwIik7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVy
LnNldEJ1dHRvbkNvdW50KDAsIDIpOworICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5zZXRBeGlz
Q291bnQoMCwgMik7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLnNldEJ1dHRvbkRhdGEoMCwg
MCwgMSk7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLnNldEJ1dHRvbkRhdGEoMCwgMSwgMCk7
CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLnNldEF4aXNEYXRhKDAsIDAsIC41KTsKKyAgICAg
ICAgZ2FtZXBhZENvbnRyb2xsZXIuc2V0QXhpc0RhdGEoMCwgMSwgLTEuMCk7CisgICAgICAgIHNo
b3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uaWQiLCAiJ01vY2tTdGljayAzMDAw
JyIpOworICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmJ1dHRv
bnMubGVuZ3RoIiwgIjIiKTsKKyAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRHYW1l
cGFkc1swXS5heGVzLmxlbmd0aCIsICIyIik7CisgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iu
d2Via2l0R2FtZXBhZHNbMF0uYnV0dG9uc1swXSIsICIxLjAiKTsKKyAgICAgICAgc2hvdWxkQmUo
Im5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5idXR0b25zWzFdIiwgIjAuMCIpOworICAgICAg
ICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmF4ZXMubGVuZ3RoIiwgIjIi
KTsKKyAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5heGVzWzBd
IiwgIjAuNSIpOworICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBd
LmF4ZXNbMV0iLCAiLTEuMCIpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBjb25z
b2xlLmxvZygiRkFJTDogbm8gZ2FtZXBhZENvbnRyb2xsZXIgYXZhaWxhYmxlLiIpCisgICAgfQor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzxwPlR5cGljYWwgcG9sbGluZyBhY2Nlc3MgdG8gZ2FtZXBhZHMgY29u
dGVudHMuPC9wPgorPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116126</attachid>
            <date>2011-11-21 13:32:33 -0800</date>
            <delta_ts>2011-11-21 15:37:49 -0800</delta_ts>
            <desc>add apparently newly-needed chromium deps</desc>
            <filename>bug-69451-20111121133232.patch</filename>
            <type>text/plain</type>
            <size>28769</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRjOTNkOTAwNTZkY2Y0
YzM3ZWYwYzY1Yjk5MDBmNWIxZDcwMmFmZC4uMmY4NjQ5ZmQ3OGY5ZjVmNTMzNTk4YTg0YTA3NmIw
OGQ0Y2RmMTA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTExLTIxICBTY290
dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGRpbmcgZ2FtZXBh
ZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02OTQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFB1bGwgZGF0YSBpbiBmcm9tIHBsYXRmb3JtIGxheWVyIG9uIHJldHJpZXZhbC4KKworICAgICAg
ICBUZXN0OiBnYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MuaHRtbAorCisgICAgICAgICog
cGFnZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRH
YW1lcGFkcyk6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9HYW1lcGFkcy5oOiBBZGRlZC4KKwogMjAxMS0xMS0yMSAgQW5kcmVhcyBLbGluZyAgPGtsaW5n
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3R5bGVTaGVldDogTW92ZSBjb21wbGV0ZVVSTCgpIHRv
IENTU1N0eWxlU2hlZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDY1ZjEyOTIxNzQx
YjBhNWFmMzhlMTUyNWY2MGUwMjIzM2RhNTFjNzMuLjc2NzBlMmY3N2NkZjE5YWJmMjBhOGU3Yzg4
MWYyNWE5MmQyZjViNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMTEtMjEgIFNjb3R0IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEFkZGluZyBnYW1lcGFkIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGltcGxlbWVudGF0aW9uIG9mIHNhbXBsZUdhbWVwYWRz
IGluIENocm9taXVtIHBsYXRmb3JtLiBSZXRyaWV2ZXMKKyAgICAgICAgZ2FtZXBhZCBkYXRhIGZy
b20gQ2hyb21pdW0gcG9ydCBhbmQgY29udmVydHMgdG8gRE9NIGZvcm1hdCwgaS5lLgorICAgICAg
ICBHYW1lcGFkTGlzdC4gVXBkYXRlIERFUFMgdG8gcHVsbCB2ZXJzaW9uIG9mIENocm9taXVtIGNv
bnRhaW5pbmcKKyAgICAgICAgdXBkYXRlcyB0byB3ZWJraXRfc3VwcG9ydC4KKworICAgICAgICAq
IERFUFM6CisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBzcmMvR2FtZXBhZHMuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNhbXBsZUdhbWVwYWRzKToKKwogMjAxMS0xMS0y
MSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bnb29nbGUuY29tPgogCiAgICAgICAgIEltcGxl
bWVudCBhIHNldHRlciBmb3IgVW5pZmllZFRleHRDaGVja2VyRW5hYmxlZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yLmNwcAppbmRleCBkZTU0ZGM1MWUxZWJkMTYxNjNmM2YzYzY5NGVmNWNiNTdlNjkw
YTdiLi5iYzFlMDUzNGQwZWM5MDI3MTlmYTc0NGE3MTk5MzNkNDk0Yjk5YmVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAKICNpZiBFTkFCTEUoR0FNRVBB
RCkKICNpbmNsdWRlICJHYW1lcGFkTGlzdC5oIgorI2luY2x1ZGUgIkdhbWVwYWRzLmgiCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCkBAIC0zMTEsOCArMzEyLDEwIEBAIHZvaWQg
TmF2aWdhdG9yOjp3ZWJraXRHZXRVc2VyTWVkaWEoY29uc3QgU3RyaW5nJiBvcHRpb25zLCBQYXNz
UmVmUHRyPE5hdmlnYXRvclVzCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiBHYW1lcGFkTGlzdCogTmF2
aWdhdG9yOjp3ZWJraXRHYW1lcGFkcygpCiB7Ci0gICAgLy8gU3R1YmJlZCB1bnRpbCBwbGF0Zm9y
bS8gY2hhbmdlcyBsYW5kZWQuCi0gICAgcmV0dXJuIDA7CisgICAgaWYgKCFtX2dhbWVwYWRzKQor
ICAgICAgICBtX2dhbWVwYWRzID0gR2FtZXBhZExpc3Q6OmNyZWF0ZSgpOworICAgIHNhbXBsZUdh
bWVwYWRzKG1fZ2FtZXBhZHMuZ2V0KCkpOworICAgIHJldHVybiBtX2dhbWVwYWRzLmdldCgpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCmluZGV4IDViYWJkYzVkZDhmMmY5ZGMy
NWE5MTAwY2QyYmY1ZmZmN2ViYmZlYWUuLjYzMjFiMzFkOTczNjIyOTNjYzE4MjNkNjlkZmE4OWYw
ODE1YjAzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaApAQCAtODUsNiArODUsOSBAQCBwcml2
YXRlOgogICAgIG11dGFibGUgUmVmUHRyPERPTVBsdWdpbkFycmF5PiBtX3BsdWdpbnM7CiAgICAg
bXV0YWJsZSBSZWZQdHI8RE9NTWltZVR5cGVBcnJheT4gbV9taW1lVHlwZXM7CiAgICAgbXV0YWJs
ZSBSZWZQdHI8R2VvbG9jYXRpb24+IG1fZ2VvbG9jYXRpb247CisjaWYgRU5BQkxFKEdBTUVQQUQp
CisgICAgbXV0YWJsZSBSZWZQdHI8R2FtZXBhZExpc3Q+IG1fZ2FtZXBhZHM7CisjZW5kaWYKICNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIG11dGFibGUgUmVmUHRyPFBvaW50ZXJMb2NrPiBt
X3BvaW50ZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dh
bWVwYWRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HYW1lcGFkcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA0MDFmYjU5MTdhNGEyMzVhZTMxNDQ0OWZjMWYyNTljYjZlNzZjMDEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HYW1lcGFkcy5oCkBAIC0wLDAgKzEsNDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorICog
REFNQUdFLgorICovCisKKyNpZm5kZWYgR2FtZXBhZHNfaAorI2RlZmluZSBHYW1lcGFkc19oCisK
KyNpZiBFTkFCTEUoR0FNRVBBRCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHYW1l
cGFkTGlzdDsKKwordm9pZCBzYW1wbGVHYW1lcGFkcyhHYW1lcGFkTGlzdCogaW50byk7CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQorCisjZW5kaWYgLy8gR2FtZXBhZHNfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9ERVBTIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9ERVBTCmluZGV4IDM2OGI1NzBkNDEwODg1MmRhOTk4NzhmZWUzZGI4M2E0YjRkNTg0YzMu
LjU1Y2U0NzI5YTYzYTQ5MzEyYzYwNjZiOGY4ODQ2NzVkZTg0ZjkwOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vREVQUworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0RF
UFMKQEAgLTMyLDcgKzMyLDcgQEAKIAogdmFycyA9IHsKICAgJ2Nocm9taXVtX3N2bic6ICdodHRw
Oi8vc3JjLmNocm9taXVtLm9yZy9zdm4vdHJ1bmsvc3JjJywKLSAgJ2Nocm9taXVtX3Jldic6ICcx
MDk2OTYnCisgICdjaHJvbWl1bV9yZXYnOiAnMTEwOTk0JwogfQogCiBkZXBzID0gewpAQCAtNzcs
NiArNzcsOCBAQCBkZXBzID0gewogICAgIFZhcignY2hyb21pdW1fc3ZuJykrJy9uZXRAJytWYXIo
J2Nocm9taXVtX3JldicpLAogICAnY3J5cHRvJzoKICAgICBWYXIoJ2Nocm9taXVtX3N2bicpKycv
Y3J5cHRvQCcrVmFyKCdjaHJvbWl1bV9yZXYnKSwKKyAgJ2RidXMnOgorICAgIFZhcignY2hyb21p
dW1fc3ZuJykrJy9kYnVzQCcrVmFyKCdjaHJvbWl1bV9yZXYnKSwKICAgJ3NkY2gnOgogICAgIFZh
cignY2hyb21pdW1fc3ZuJykrJy9zZGNoQCcrVmFyKCdjaHJvbWl1bV9yZXYnKSwKICAgJ3NkY2gv
b3Blbi12Y2RpZmYnOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDEyMTA4OTQ2NmY1
Njk4NGQ1ZDQ3ZDlmYzE2NzljMTcwNjMzMzY1MjYuLjRlNmU5YmFlNDczYjBjMGY4ZDAwNDdkZGY2
OGY3YWE0MmQzYTRiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTM5MCw2ICsz
OTAsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9GcmFtZU5ldHdvcmtpbmdDb250ZXh0SW1wbC5oJywKKyAgICAgICAgICAg
ICAgICAnc3JjL0dhbWVwYWRzLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9HZW9sb2NhdGlv
bkNsaWVudFByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9HZW9sb2NhdGlvbkNsaWVu
dFByb3h5LmgnLAogICAgICAgICAgICAgICAgICdzcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1
bS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR2FtZXBhZHMu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR2FtZXBhZHMuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ3YzQzYTMxYzE5YzFmZmFjZWMxZTlhY2QwZGQzMGY5MTk2YTczZDEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HYW1lcGFkcy5jcHAKQEAgLTAsMCArMSw2
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
CisgKiBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVw
YWRzLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIkdhbWVwYWRMaXN0Lmgi
CisjaW5jbHVkZSAiV2ViR2FtZXBhZHMuaCIKKyNpbmNsdWRlICJXZWJLaXQuaCIKKyNpbmNsdWRl
ICJXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHYW1lcGFkTGlzdDsKKwordm9pZCBzYW1wbGVH
YW1lcGFkcyhHYW1lcGFkTGlzdCogaW50bykKK3sKKyAgICBXZWJHYW1lcGFkcyBnYW1lcGFkczsK
KworICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5zYW1wbGVHYW1lcGFkcyhnYW1lcGFkcyk7
CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV2ViS2l0OjpXZWJHYW1lcGFkczo6aXRl
bXNMZW5ndGhDYXA7ICsraSkgeworICAgICAgICBXZWJHYW1lcGFkJiB3ZWJHYW1lcGFkID0gZ2Ft
ZXBhZHMuaXRlbXNbaV07CisgICAgICAgIGlmIChpIDwgZ2FtZXBhZHMubGVuZ3RoICYmIHdlYkdh
bWVwYWQuY29ubmVjdGVkKSB7CisgICAgICAgICAgICBSZWZQdHI8R2FtZXBhZD4gZ2FtZXBhZCA9
IGludG8tPml0ZW0oaSk7CisgICAgICAgICAgICBpZiAoIWdhbWVwYWQpCisgICAgICAgICAgICAg
ICAgZ2FtZXBhZCA9IEdhbWVwYWQ6OmNyZWF0ZSgpOworICAgICAgICAgICAgZ2FtZXBhZC0+aWQo
d2ViR2FtZXBhZC5pZCk7CisgICAgICAgICAgICBnYW1lcGFkLT5pbmRleChpKTsKKyAgICAgICAg
ICAgIGdhbWVwYWQtPnRpbWVzdGFtcCh3ZWJHYW1lcGFkLnRpbWVzdGFtcCk7CisgICAgICAgICAg
ICBnYW1lcGFkLT5heGVzKHdlYkdhbWVwYWQuYXhlc0xlbmd0aCwgd2ViR2FtZXBhZC5heGVzKTsK
KyAgICAgICAgICAgIGdhbWVwYWQtPmJ1dHRvbnMod2ViR2FtZXBhZC5idXR0b25zTGVuZ3RoLCB3
ZWJHYW1lcGFkLmJ1dHRvbnMpOworICAgICAgICAgICAgaW50by0+c2V0KGksIGdhbWVwYWQpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGludG8tPnNldChpLCAwKTsKKyAgICB9Cit9CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggNTNkNmM0ODcwMGM2MTdkYTVmMGFhYzAxMTA0NzM0ZjQ2NzFmMDIyMy4uMjU2MjQ0
NTJiMTc3ZWM2NjVjMjRlOWU5YjhjNmU5NDBmNzMzOGI4NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDExLTExLTIx
ICBTY290dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGRpbmcg
Z2FtZXBhZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02OTQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhICdnYW1lcGFkQ29udHJvbGxlcicgdG8gQ2hyb21pdW0gRFJULiBBbGxvd3Mg
Zm9yIHNldHRpbmcgb2YgbW9jaworICAgICAgICBnYW1lcGFkIGRhdGEgdGhhdCB3aWxsIGJlIHJl
dHJpZXZlZCB3aGVuIEpTIGNvZGUgcHVsbHMgdmlhIEFQSSBhY2Nlc3MuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0dhbWVwYWRDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChHYW1l
cGFkQ29udHJvbGxlcjo6R2FtZXBhZENvbnRyb2xsZXIpOgorICAgICAgICAoR2FtZXBhZENvbnRy
b2xsZXI6OmJpbmRUb0phdmFzY3JpcHQpOgorICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OnJl
c2V0KToKKyAgICAgICAgKEdhbWVwYWRDb250cm9sbGVyOjpjb25uZWN0KToKKyAgICAgICAgKEdh
bWVwYWRDb250cm9sbGVyOjpkaXNjb25uZWN0KToKKyAgICAgICAgKEdhbWVwYWRDb250cm9sbGVy
OjpzZXRJZCk6CisgICAgICAgIChHYW1lcGFkQ29udHJvbGxlcjo6c2V0QnV0dG9uQ291bnQpOgor
ICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OnNldEJ1dHRvbkRhdGEpOgorICAgICAgICAoR2Ft
ZXBhZENvbnRyb2xsZXI6OnNldEF4aXNDb3VudCk6CisgICAgICAgIChHYW1lcGFkQ29udHJvbGxl
cjo6c2V0QXhpc0RhdGEpOgorICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OmZhbGxiYWNrQ2Fs
bGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0dhbWVwYWRDb250cm9s
bGVyLmg6IEFkZGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bC5jcHA6CisgICAgICAgIChUZXN0U2hlbGw6OlRlc3RTaGVsbCk6CisgICAgICAgIChUZXN0U2hl
bGw6OnJlc2V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoVGVzdFNoZWxsOjpiaW5kSlNPYmpl
Y3RzVG9XaW5kb3cpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bC5oOgorICAgICAgICAoVGVzdFNoZWxsOjpnYW1lcGFkQ29udHJvbGxlcik6CisKIDIwMTEtMTEt
MjEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJ1bi1ndGstdGVzdHMgdGVtcG9yYXJ5IHdvcmthcm91bmQgYWZ0ZXIgcjk4NTAw
LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKaW5kZXggMjM1Yjk1Mzcy
NmJjZWFhYjE4NWU1ZDQ4Mjk1Y2YxMzM5OWFmMjc2My4uYjE5YmUyMjcyYzU1NWM3OWQyOTk3MTYw
NTI0YWFmNzBjZjJlOGY2OCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUuZ3lwaQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5n
eXBpCkBAIC0xNiw2ICsxNiw4IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vRHVtcFJlbmRlclRy
ZWUuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9FdmVudFNlbmRlci5jcHAnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL0V2ZW50U2VuZGVyLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL0dh
bWVwYWRDb250cm9sbGVyLmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0vR2FtZXBhZENvbnRy
b2xsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oJywKICAgICAg
ICAgICAgICdjaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5jcHAnLApkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vR2FtZXBhZENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vR2FtZXBhZENvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5
NzRkM2JjZGUwMjhkOTg1NDQ1MGU2YmVlODBlZmJmY2IxN2JiNDEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9HYW1lcGFkQ29udHJvbGxlci5jcHAKQEAg
LTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZXBhZENvbnRy
b2xsZXIuaCIKKworI2luY2x1ZGUgIlRlc3RTaGVsbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCitHYW1lcGFkQ29udHJvbGxlcjo6R2FtZXBhZENvbnRyb2xsZXIoVGVzdFNoZWxsKiBz
aGVsbCkKKyAgICA6IG1fc2hlbGwoc2hlbGwpCit7CisgICAgYmluZE1ldGhvZCgiY29ubmVjdCIs
ICZHYW1lcGFkQ29udHJvbGxlcjo6Y29ubmVjdCk7CisgICAgYmluZE1ldGhvZCgiZGlzY29ubmVj
dCIsICZHYW1lcGFkQ29udHJvbGxlcjo6ZGlzY29ubmVjdCk7CisgICAgYmluZE1ldGhvZCgic2V0
SWQiLCAmR2FtZXBhZENvbnRyb2xsZXI6OnNldElkKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRCdXR0
b25Db3VudCIsICZHYW1lcGFkQ29udHJvbGxlcjo6c2V0QnV0dG9uQ291bnQpOworICAgIGJpbmRN
ZXRob2QoInNldEJ1dHRvbkRhdGEiLCAmR2FtZXBhZENvbnRyb2xsZXI6OnNldEJ1dHRvbkRhdGEp
OworICAgIGJpbmRNZXRob2QoInNldEF4aXNDb3VudCIsICZHYW1lcGFkQ29udHJvbGxlcjo6c2V0
QXhpc0NvdW50KTsKKyAgICBiaW5kTWV0aG9kKCJzZXRBeGlzRGF0YSIsICZHYW1lcGFkQ29udHJv
bGxlcjo6c2V0QXhpc0RhdGEpOworCisgICAgYmluZEZhbGxiYWNrTWV0aG9kKCZHYW1lcGFkQ29u
dHJvbGxlcjo6ZmFsbGJhY2tDYWxsYmFjayk7CisKKyAgICByZXNldCgpOworfQorCit2b2lkIEdh
bWVwYWRDb250cm9sbGVyOjpiaW5kVG9KYXZhc2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgY29uc3Qg
V2ViU3RyaW5nJiBjbGFzc25hbWUpCit7CisgICAgQ3BwQm91bmRDbGFzczo6YmluZFRvSmF2YXNj
cmlwdChmcmFtZSwgY2xhc3NuYW1lKTsKK30KKwordm9pZCBHYW1lcGFkQ29udHJvbGxlcjo6cmVz
ZXQoKQoreworICAgIG1lbXNldCgmaW50ZXJuYWxEYXRhLCAwLCBzaXplb2YoaW50ZXJuYWxEYXRh
KSk7Cit9CisKK3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OmNvbm5lY3QoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmdzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgp
IDwgMSkgeworICAgICAgICBwcmludGYoIkludmFsaWQgYXJncyIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGludCBpbmRleCA9IGFyZ3NbMF0udG9JbnQzMigpOworICAgIGludGVybmFs
RGF0YS5pdGVtc1tpbmRleF0uY29ubmVjdGVkID0gdHJ1ZTsKKyAgICBpbnRlcm5hbERhdGEubGVu
Z3RoID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV2ViS2l0OjpXZWJHYW1lcGFk
czo6aXRlbXNMZW5ndGhDYXA7ICsraSkKKyAgICAgICAgaWYgKGludGVybmFsRGF0YS5pdGVtc1tp
XS5jb25uZWN0ZWQpCisgICAgICAgICAgICBpbnRlcm5hbERhdGEubGVuZ3RoID0gaSArIDE7Cisg
ICAgd2Via2l0X3N1cHBvcnQ6OlNldEdhbWVwYWREYXRhKGludGVybmFsRGF0YSk7CisgICAgcmVz
dWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OmRpc2Nvbm5lY3Qo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmdzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAg
aWYgKGFyZ3Muc2l6ZSgpIDwgMSkgeworICAgICAgICBwcmludGYoIkludmFsaWQgYXJncyIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGludCBpbmRleCA9IGFyZ3NbMF0udG9JbnQzMigp
OworICAgIGludGVybmFsRGF0YS5pdGVtc1tpbmRleF0uY29ubmVjdGVkID0gZmFsc2U7CisgICAg
aW50ZXJuYWxEYXRhLmxlbmd0aCA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdl
YktpdDo6V2ViR2FtZXBhZHM6Oml0ZW1zTGVuZ3RoQ2FwOyArK2kpCisgICAgICAgIGlmIChpbnRl
cm5hbERhdGEuaXRlbXNbaV0uY29ubmVjdGVkKQorICAgICAgICAgICAgaW50ZXJuYWxEYXRhLmxl
bmd0aCA9IGkgKyAxOworICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRHYW1lcGFkRGF0YShpbnRlcm5h
bERhdGEpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIEdhbWVwYWRDb250cm9s
bGVyOjpzZXRJZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3MsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgPCAyKSB7CisgICAgICAgIHByaW50ZigiSW52YWxp
ZCBhcmdzIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW50IGluZGV4ID0gYXJnc1sw
XS50b0ludDMyKCk7CisgICAgc3RkOjpzdHJpbmcgc3JjID0gYXJnc1sxXS50b1N0cmluZygpOwor
ICAgIGNvbnN0IGNoYXIqIHAgPSBzcmMuY19zdHIoKTsKKyAgICBtZW1zZXQoaW50ZXJuYWxEYXRh
Lml0ZW1zW2luZGV4XS5pZCwgMCwgc2l6ZW9mKGludGVybmFsRGF0YS5pdGVtc1tpbmRleF0uaWQp
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAqcCAmJiBpIDwgV2ViS2l0OjpXZWJHYW1lcGFk
OjppZExlbmd0aENhcCAtIDE7ICsraSkKKyAgICAgICAgaW50ZXJuYWxEYXRhLml0ZW1zW2luZGV4
XS5pZFtpXSA9ICpwKys7CisgICAgd2Via2l0X3N1cHBvcnQ6OlNldEdhbWVwYWREYXRhKGludGVy
bmFsRGF0YSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgR2FtZXBhZENvbnRy
b2xsZXI6OnNldEJ1dHRvbkNvdW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJncywgQ3BwVmFy
aWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmdzLnNpemUoKSA8IDIpIHsKKyAgICAgICAgcHJp
bnRmKCJJbnZhbGlkIGFyZ3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbnQgaW5k
ZXggPSBhcmdzWzBdLnRvSW50MzIoKTsKKyAgICBpbnQgYnV0dG9ucyA9IGFyZ3NbMV0udG9JbnQz
MigpOworICAgIGludGVybmFsRGF0YS5pdGVtc1tpbmRleF0uYnV0dG9uc0xlbmd0aCA9IGJ1dHRv
bnM7CisgICAgd2Via2l0X3N1cHBvcnQ6OlNldEdhbWVwYWREYXRhKGludGVybmFsRGF0YSk7Cisg
ICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgR2FtZXBhZENvbnRyb2xsZXI6OnNldEJ1
dHRvbkRhdGEoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmdzLCBDcHBWYXJpYW50KiByZXN1bHQp
Cit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMykgeworICAgICAgICBwcmludGYoIkludmFsaWQg
YXJncyIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGludCBpbmRleCA9IGFyZ3NbMF0u
dG9JbnQzMigpOworICAgIGludCBidXR0b24gPSBhcmdzWzFdLnRvSW50MzIoKTsKKyAgICBkb3Vi
bGUgZGF0YSA9IGFyZ3NbMl0udG9Eb3VibGUoKTsKKyAgICBpbnRlcm5hbERhdGEuaXRlbXNbaW5k
ZXhdLmJ1dHRvbnNbYnV0dG9uXSA9IGRhdGE7CisgICAgd2Via2l0X3N1cHBvcnQ6OlNldEdhbWVw
YWREYXRhKGludGVybmFsRGF0YSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQg
R2FtZXBhZENvbnRyb2xsZXI6OnNldEF4aXNDb3VudChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
Z3MsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgPCAyKSB7Cisg
ICAgICAgIHByaW50ZigiSW52YWxpZCBhcmdzIik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgaW50IGluZGV4ID0gYXJnc1swXS50b0ludDMyKCk7CisgICAgaW50IGF4ZXMgPSBhcmdzWzFd
LnRvSW50MzIoKTsKKyAgICBpbnRlcm5hbERhdGEuaXRlbXNbaW5kZXhdLmF4ZXNMZW5ndGggPSBh
eGVzOworICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRHYW1lcGFkRGF0YShpbnRlcm5hbERhdGEpOwor
ICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpzZXRB
eGlzRGF0YShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3MsIENwcFZhcmlhbnQqIHJlc3VsdCkK
K3sKKyAgICBpZiAoYXJncy5zaXplKCkgPCAzKSB7CisgICAgICAgIHByaW50ZigiSW52YWxpZCBh
cmdzIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaW50IGluZGV4ID0gYXJnc1swXS50
b0ludDMyKCk7CisgICAgaW50IGF4aXMgPSBhcmdzWzFdLnRvSW50MzIoKTsKKyAgICBkb3VibGUg
ZGF0YSA9IGFyZ3NbMl0udG9Eb3VibGUoKTsKKyAgICBpbnRlcm5hbERhdGEuaXRlbXNbaW5kZXhd
LmF4ZXNbYXhpc10gPSBkYXRhOworICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRHYW1lcGFkRGF0YShp
bnRlcm5hbERhdGEpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIEdhbWVwYWRD
b250cm9sbGVyOjpmYWxsYmFja0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqIHJlc3VsdCkKK3sKKyAgICBwcmludGYoIkNPTlNPTEUgTUVTU0FHRTogSmF2YVNjcmlw
dCBFUlJPUjogdW5rbm93biBtZXRob2QgY2FsbGVkIG9uICIKKyAgICAgICAgICAgIkdhbWVwYWRD
b250cm9sbGVyXG4iKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0dhbWVwYWRDb250cm9sbGVyLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9HYW1lcGFkQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2
ZWVkYjA1ZDhkNTJmMzMxY2JiZTczZjJhZjIyYjE0NTljMGRkNDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9HYW1lcGFkQ29udHJvbGxlci5oCkBAIC0w
LDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEdhbWVwYWRDb250cm9sbGVyX2gKKyNkZWZpbmUgR2FtZXBhZENv
bnRyb2xsZXJfaAorCisjaW5jbHVkZSAiQ3BwQm91bmRDbGFzcy5oIgorI2luY2x1ZGUgIldlYkdh
bWVwYWRzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViR2FtZXBhZHM7CitjbGFz
cyBXZWJGcmFtZTsKK30KKworY2xhc3MgVGVzdFNoZWxsOworCitjbGFzcyBHYW1lcGFkQ29udHJv
bGxlciA6IHB1YmxpYyBDcHBCb3VuZENsYXNzIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBHYW1l
cGFkQ29udHJvbGxlcihUZXN0U2hlbGwqKTsKKworICAgIHZvaWQgYmluZFRvSmF2YXNjcmlwdChX
ZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGNsYXNzbmFtZSk7Cisg
ICAgdm9pZCByZXNldCgpOworCitwcml2YXRlOgorICAgIC8vIEJvdW5kIG1ldGhvZHMgYW5kIHBy
b3BlcnRpZXMKKyAgICB2b2lkIGNvbm5lY3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOworICAgIHZvaWQgZGlzY29ubmVjdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7CisgICAgdm9pZCBzZXRJZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CisgICAgdm9pZCBzZXRCdXR0b25Db3VudChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50Kik7CisgICAgdm9pZCBzZXRCdXR0b25EYXRhKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNldEF4aXNDb3VudChjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBzZXRBeGlzRGF0YShjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBmYWxsYmFja0NhbGxiYWNrKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKworICAgIFRlc3RTaGVsbCogbV9zaGVs
bDsKKworICAgIFdlYktpdDo6V2ViR2FtZXBhZHMgaW50ZXJuYWxEYXRhOworfTsKKworI2VuZGlm
IC8vIEdhbWVwYWRDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGwuY3BwCmluZGV4IDg1MDdmMjRjMDIyMzNiY2QxMDg4MTFmMGJjNzE3YjU2M2RlN2Nm
MDguLjg3MDYyMmFlNDZiYTdmMzQ4MmVkMTAwNjdhM2FkOGRlZTQ4NGIyYWIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcApAQCAtMTI2LDYgKzEyNiw3IEBA
IFRlc3RTaGVsbDo6VGVzdFNoZWxsKGJvb2wgdGVzdFNoZWxsTW9kZSkKIAogICAgIG1fd2ViUGVy
bWlzc2lvbnMgPSBhZG9wdFB0cihuZXcgV2ViUGVybWlzc2lvbnModGhpcykpOwogICAgIG1fYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIodGhpcykpOworICAgIG1fZ2FtZXBhZENvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgR2FtZXBh
ZENvbnRyb2xsZXIodGhpcykpOwogICAgIG1fbGF5b3V0VGVzdENvbnRyb2xsZXIgPSBhZG9wdFB0
cihuZXcgTGF5b3V0VGVzdENvbnRyb2xsZXIodGhpcykpOwogICAgIG1fZXZlbnRTZW5kZXIgPSBh
ZG9wdFB0cihuZXcgRXZlbnRTZW5kZXIodGhpcykpOwogICAgIG1fcGxhaW5UZXh0Q29udHJvbGxl
ciA9IGFkb3B0UHRyKG5ldyBQbGFpblRleHRDb250cm9sbGVyKCkpOwpAQCAtMjY5LDYgKzI3MCw3
IEBAIHZvaWQgVGVzdFNoZWxsOjpyZXNldFRlc3RDb250cm9sbGVyKCkKICAgICByZXNldFdlYlNl
dHRpbmdzKCp3ZWJWaWV3KCkpOwogICAgIG1fd2ViUGVybWlzc2lvbnMtPnJlc2V0KCk7CiAgICAg
bV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlci0+cmVzZXQoKTsKKyAgICBtX2dhbWVwYWRDb250cm9s
bGVyLT5yZXNldCgpOwogICAgIG1fbGF5b3V0VGVzdENvbnRyb2xsZXItPnJlc2V0KCk7CiAgICAg
bV9ldmVudFNlbmRlci0+cmVzZXQoKTsKICAgICBtX3dlYlZpZXdIb3N0LT5yZXNldCgpOwpAQCAt
NjcyLDYgKzY3NCw3IEBAIHZvaWQgVGVzdFNoZWxsOjpiaW5kSlNPYmplY3RzVG9XaW5kb3coV2Vi
RnJhbWUqIGZyYW1lKQogewogICAgIFdlYlRlc3RpbmdTdXBwb3J0OjppbmplY3RJbnRlcm5hbHNP
YmplY3QoZnJhbWUpOwogICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXItPmJpbmRUb0phdmFz
Y3JpcHQoZnJhbWUsIFdlYlN0cmluZzo6ZnJvbVVURjgoImFjY2Vzc2liaWxpdHlDb250cm9sbGVy
IikpOworICAgIG1fZ2FtZXBhZENvbnRyb2xsZXItPmJpbmRUb0phdmFzY3JpcHQoZnJhbWUsIFdl
YlN0cmluZzo6ZnJvbVVURjgoImdhbWVwYWRDb250cm9sbGVyIikpOwogICAgIG1fbGF5b3V0VGVz
dENvbnRyb2xsZXItPmJpbmRUb0phdmFzY3JpcHQoZnJhbWUsIFdlYlN0cmluZzo6ZnJvbVVURjgo
ImxheW91dFRlc3RDb250cm9sbGVyIikpOwogICAgIG1fZXZlbnRTZW5kZXItPmJpbmRUb0phdmFz
Y3JpcHQoZnJhbWUsIFdlYlN0cmluZzo6ZnJvbVVURjgoImV2ZW50U2VuZGVyIikpOwogICAgIG1f
cGxhaW5UZXh0Q29udHJvbGxlci0+YmluZFRvSmF2YXNjcmlwdChmcmFtZSwgV2ViU3RyaW5nOjpm
cm9tVVRGOCgicGxhaW5UZXh0IikpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFNoZWxsLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuaAppbmRleCBiMTk0ZWIwYjIzOTYzMGUxMjNkZmI0MzEyZDBjZjc0MTM3Mzg2MjExLi4x
ZjY0OGIxNWVmYjQ0MDI2MWMwZTgzODIzNmVjZjM2ZTJjM2YyMjQ0IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFdmVudFNlbmRlci5oIgor
I2luY2x1ZGUgIkdhbWVwYWRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTGF5b3V0VGVzdENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKICNpbmNsdWRlICJQ
bGFpblRleHRDb250cm9sbGVyLmgiCkBAIC05MSw2ICs5Miw3IEBAIHB1YmxpYzoKICAgICBMYXlv
dXRUZXN0Q29udHJvbGxlciogbGF5b3V0VGVzdENvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBt
X2xheW91dFRlc3RDb250cm9sbGVyLmdldCgpOyB9CiAgICAgRXZlbnRTZW5kZXIqIGV2ZW50U2Vu
ZGVyKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFNlbmRlci5nZXQoKTsgfQogICAgIEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJu
IG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZ2V0KCk7IH0KKyAgICBHYW1lcGFkQ29udHJvbGxl
ciogZ2FtZXBhZENvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX2dhbWVwYWRDb250cm9sbGVy
LmdldCgpOyB9CiAgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50
ZXIoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlvblByZXNlbnRlci5nZXQoKTsgfQogICAg
IFRlc3RFdmVudFByaW50ZXIqIHByaW50ZXIoKSBjb25zdCB7IHJldHVybiBtX3ByaW50ZXIuZ2V0
KCk7IH0KIApAQCAtMjA1LDYgKzIwNyw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPERSVERldlRv
b2xzQWdlbnQ+IG1fZHJ0RGV2VG9vbHNBZ2VudDsKICAgICBPd25QdHI8RFJURGV2VG9vbHNDbGll
bnQ+IG1fZHJ0RGV2VG9vbHNDbGllbnQ7CiAgICAgT3duUHRyPEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyPiBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyOworICAgIE93blB0cjxHYW1lcGFkQ29udHJv
bGxlcj4gbV9nYW1lcGFkQ29udHJvbGxlcjsKICAgICBPd25QdHI8RXZlbnRTZW5kZXI+IG1fZXZl
bnRTZW5kZXI7CiAgICAgT3duUHRyPExheW91dFRlc3RDb250cm9sbGVyPiBtX2xheW91dFRlc3RD
b250cm9sbGVyOwogICAgIE93blB0cjxQbGFpblRleHRDb250cm9sbGVyPiBtX3BsYWluVGV4dENv
bnRyb2xsZXI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNzVjZjAzZTliNzk0ZGMwMjYyNDNiNTIzODg0OWYzNzY5MzUyMTli
My4uMDMxOTZmMDY1MjM5OWFmYTllZTMyYTY1ZDZiM2E4Zjc0NzAyZjUzNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDExLTExLTIxICBTY290dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBBZGRpbmcgZ2FtZXBhZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vc2NyaXB0LXRlc3RzL3Byb3Rv
dHlwZS1pbmhlcml0YW5jZS5qczogRXhjbHVkZQorICAgICAgICBnYW1lcGFkQ29udHJvbGxlciBm
cm9tIGVudW1lcmF0aW9uLgorICAgICAgICAqIGdhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vz
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGdhbWVwYWQvZ2FtZXBhZC1wb2xsaW5n
LWFjY2Vzcy5odG1sOiBBZGRlZC4KKwogMjAxMS0xMS0yMSAgQWRhbSBLbGVpbiAgPGFkYW1rQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZWJhc2VsaW5lIGZvbnQtZmFjZS1vcGVudHlwZS5odG1s
IG9uIGNyLW1hYy1sZW9wYXJkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2Ny
aXB0LXRlc3RzL3Byb3RvdHlwZS1pbmhlcml0YW5jZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NjcmlwdC10ZXN0cy9wcm90b3R5cGUtaW5oZXJpdGFuY2UuanMKaW5kZXggYzk0ZDY4NTU4YjMx
ZDhiYmJlNWQ0YTBkMTkwMGZkYjFhZjgzYWE4Mi4uZGZkZmQ4Y2FjMWVhNWExYmM1NzNmYmYyYjk4
ZDU1MGM2YjRjMjJiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRl
c3RzL3Byb3RvdHlwZS1pbmhlcml0YW5jZS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
Y3JpcHQtdGVzdHMvcHJvdG90eXBlLWluaGVyaXRhbmNlLmpzCkBAIC0xMiw2ICsxMiw3IEBAIHZh
ciBza2lwcGVkUHJvcGVydGllcyA9IFsKICAgICAib2JqQ0NvbnRyb2xsZXIiLCAidGV4dElucHV0
Q29udHJvbGxlciIsICJuYXZpZ2F0aW9uQ29udHJvbGxlciIsCiAgICAgImV2ZW50U2VuZGVyIiwg
Im9iakNQbHVnaW4iLCAib2JqQ1BsdWdpbkZ1bmN0aW9uIiwKICAgICAiYXBwbGVTY3JpcHRDb250
cm9sbGVyIiwgInBsYWluVGV4dCIsICJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlciIsCisgICAgImdh
bWVwYWRDb250cm9sbGVyIiwKICAgICAiaW50ZXJuYWxzIiwKICAgICAvLyBJZ25vcmUgdGhlc2Ug
cHJvcGVydGllcyBiZWNhdXNlIHRoZXkgZG8gbm90IGV4aXN0IGluIGFsbCBpbXBsZW1lbnRhdGlv
bnMuIFRoZXkgd2lsbCBiZSB0ZXN0ZWQgc2VwYXJhdGVseQogICAgICJ3ZWJraXROb3RpZmljYXRp
b25zIiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFj
Y2Vzcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1h
Y2Nlc3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0ODRmZDFjMjFjMTRjMDhlZjNjZGMzOWQ1
ZTg3NzE4YTk2NTJiNTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dh
bWVwYWQtcG9sbGluZy1hY2Nlc3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1BBU1Mg
bmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzLmxlbmd0aCBpcyA0CitQQVNTIG5hdmlnYXRvci53ZWJr
aXRHYW1lcGFkc1swXSBpcyB1bmRlZmluZWQuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFk
c1sxXSBpcyB1bmRlZmluZWQuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1syXSBpcyB1
bmRlZmluZWQuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1szXSBpcyB1bmRlZmluZWQu
CitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXSBpcyBub24tbnVsbC4KK1BBU1MgbmF2
aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdIGlzIHVuZGVmaW5lZC4KK1BBU1MgbmF2aWdhdG9yLndl
YmtpdEdhbWVwYWRzWzBdLmlkIGlzICdNb2NrU3RpY2sgMzAwMCcKK1BBU1MgbmF2aWdhdG9yLndl
YmtpdEdhbWVwYWRzWzBdLmJ1dHRvbnMubGVuZ3RoIGlzIDIKK1BBU1MgbmF2aWdhdG9yLndlYmtp
dEdhbWVwYWRzWzBdLmF4ZXMubGVuZ3RoIGlzIDIKK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdhbWVw
YWRzWzBdLmJ1dHRvbnNbMF0gaXMgMS4wCitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1sw
XS5idXR0b25zWzFdIGlzIDAuMAorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uYXhl
cy5sZW5ndGggaXMgMgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uYXhlc1swXSBp
cyAwLjUKK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmF4ZXNbMV0gaXMgLTEuMAor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitUeXBpY2Fs
IHBvbGxpbmcgYWNjZXNzIHRvIGdhbWVwYWRzIGNvbnRlbnRzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXBvbGxpbmctYWNjZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9n
YW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTc3NWZjZGVj
ZTI5MjBiNjllYjBiYjE1YjlkOTUzMDU4ZmVmOTE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXBvbGxpbmctYWNjZXNzLmh0bWwKQEAgLTAsMCArMSw0OSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cu
Z2FtZXBhZENvbnRyb2xsZXIpCisgICAgeworICAgICAgICAvLyBzdGFydCBhbGwgZGlzY29ubmVj
dGVkCisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLmRpc2Nvbm5lY3QoMCk7CisgICAgICAgIGdh
bWVwYWRDb250cm9sbGVyLmRpc2Nvbm5lY3QoMSk7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVy
LmRpc2Nvbm5lY3QoMik7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLmRpc2Nvbm5lY3QoMyk7
CisgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHMubGVuZ3RoIiwgIjQi
KTsKKyAgICAgICAgc2hvdWxkQmVVbmRlZmluZWQoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1sw
XSIpOworICAgICAgICBzaG91bGRCZVVuZGVmaW5lZCgibmF2aWdhdG9yLndlYmtpdEdhbWVwYWRz
WzFdIik7CisgICAgICAgIHNob3VsZEJlVW5kZWZpbmVkKCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBh
ZHNbMl0iKTsKKyAgICAgICAgc2hvdWxkQmVVbmRlZmluZWQoIm5hdmlnYXRvci53ZWJraXRHYW1l
cGFkc1szXSIpOworCisgICAgICAgIC8vIGNvbm5lY3QgYW5kIGRpc2Nvbm5lY3QKKyAgICAgICAg
Z2FtZXBhZENvbnRyb2xsZXIuY29ubmVjdCgwKTsKKyAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJu
YXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0iKTsKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIu
ZGlzY29ubmVjdCgwKTsKKyAgICAgICAgc2hvdWxkQmVVbmRlZmluZWQoIm5hdmlnYXRvci53ZWJr
aXRHYW1lcGFkc1swXSIpOworCisgICAgICAgIC8vIGNvbm5lY3QgYWdhaW4sIGFuZCBjaGVjayBz
dGFuZGFyZCBhY2Nlc3MKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIuY29ubmVjdCgwKTsKKyAg
ICAgICAgZ2FtZXBhZENvbnRyb2xsZXIuc2V0SWQoMCwgIk1vY2tTdGljayAzMDAwIik7CisgICAg
ICAgIGdhbWVwYWRDb250cm9sbGVyLnNldEJ1dHRvbkNvdW50KDAsIDIpOworICAgICAgICBnYW1l
cGFkQ29udHJvbGxlci5zZXRBeGlzQ291bnQoMCwgMik7CisgICAgICAgIGdhbWVwYWRDb250cm9s
bGVyLnNldEJ1dHRvbkRhdGEoMCwgMCwgMSk7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLnNl
dEJ1dHRvbkRhdGEoMCwgMSwgMCk7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLnNldEF4aXNE
YXRhKDAsIDAsIC41KTsKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIuc2V0QXhpc0RhdGEoMCwg
MSwgLTEuMCk7CisgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0u
aWQiLCAiJ01vY2tTdGljayAzMDAwJyIpOworICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndl
YmtpdEdhbWVwYWRzWzBdLmJ1dHRvbnMubGVuZ3RoIiwgIjIiKTsKKyAgICAgICAgc2hvdWxkQmUo
Im5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5heGVzLmxlbmd0aCIsICIyIik7CisgICAgICAg
IHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uYnV0dG9uc1swXSIsICIxLjAi
KTsKKyAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5idXR0b25z
WzFdIiwgIjAuMCIpOworICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdEdhbWVwYWRz
WzBdLmF4ZXMubGVuZ3RoIiwgIjIiKTsKKyAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJr
aXRHYW1lcGFkc1swXS5heGVzWzBdIiwgIjAuNSIpOworICAgICAgICBzaG91bGRCZSgibmF2aWdh
dG9yLndlYmtpdEdhbWVwYWRzWzBdLmF4ZXNbMV0iLCAiLTEuMCIpOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICBjb25zb2xlLmxvZygiRkFJTDogbm8gZ2FtZXBhZENvbnRyb2xsZXIg
YXZhaWxhYmxlLiIpCisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzxwPlR5cGljYWwgcG9sbGluZyBh
Y2Nlc3MgdG8gZ2FtZXBhZHMgY29udGVudHMuPC9wPgorPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116151</attachid>
            <date>2011-11-21 15:37:55 -0800</date>
            <delta_ts>2011-11-22 15:49:20 -0800</delta_ts>
            <desc>fix layering violations</desc>
            <filename>bug-69451-20111121153754.patch</filename>
            <type>text/plain</type>
            <size>30267</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRjOTNkOTAwNTZkY2Y0
YzM3ZWYwYzY1Yjk5MDBmNWIxZDcwMmFmZC4uYTE0OTM0ODhjZjZlMmEzOWIxZmZmODFlNjJjNTk0
YzEwZGQxOWU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTExLTIxICBTY290
dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGRpbmcgZ2FtZXBh
ZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02OTQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBsdW1iIGdhbWVwYWQgZGF0YSBhY2Nlc3MgdGhyb3VnaCBwbGF0Zm9ybS4KKworICAgICAgICBU
ZXN0OiBnYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MuaHRtbAorCisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdmlnYXRvcjo6d2Via2l0R2FtZXBhZHMpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9y
Lmg6CisgICAgICAgICogcGxhdGZvcm0vR2FtZXBhZHMuaDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vR2FtZXBhZHNDaHJvbWl1bS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6c2FtcGxlR2FtZXBhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRm
b3JtU3VwcG9ydC5oOgorCiAyMDExLTExLTIxICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0
Lm9yZz4KIAogICAgICAgICBTdHlsZVNoZWV0OiBNb3ZlIGNvbXBsZXRlVVJMKCkgdG8gQ1NTU3R5
bGVTaGVldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNjVmMTI5MjE3NDFiMGE1YWYz
OGUxNTI1ZjYwZTAyMjMzZGE1MWM3My4uMWZmM2U5NzY2NjFhMWJlMDdiMTdlMGUwMzgwODAyZmJi
NTMwOTEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
MS0xMS0yMSAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
QWRkaW5nIGdhbWVwYWQgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Njk0NTEKKworICAgICAgICBBZGQgaW1wbGVtZW50YXRpb24gb2Ygc2Ft
cGxlR2FtZXBhZHMgaW4gQ2hyb21pdW0gcGxhdGZvcm0uIFJldHJpZXZlcworICAgICAgICBnYW1l
cGFkIGRhdGEgZnJvbSBDaHJvbWl1bSBwb3J0IGFuZCBjb252ZXJ0cyB0byBET00gZm9ybWF0LCBp
LmUuCisgICAgICAgIEdhbWVwYWRMaXN0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6OnNhbXBsZUdhbWVwYWRzKToKKwogMjAxMS0xMS0yMSAg
U2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bnb29nbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVu
dCBhIHNldHRlciBmb3IgVW5pZmllZFRleHRDaGVja2VyRW5hYmxlZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCAzZDQ1NmZkZTQ0ZWVmNThlNWNmMWJkM2ZjMmE4Njk0NmYyMWJiZTU2Li5kMzRlZmQ3NDE5
ZjNlNjQwZjBmZDMyNWM5MjlkYjA5ZjU1MTQyOTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zMjM4
LDYgKzMyMzgsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Nj
cm9sbFZpZXcuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NT
Y3JvbGxWaWV3LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Nj
cm9sbFZpZXdDbGllbnQuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vR2FtZXBh
ZHNDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVS
ZWNvZ25pemVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9H
ZXN0dXJlUmVjb2duaXplckNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9t
aXVtL0tleUNvZGVDb252ZXJzaW9uLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCmluZGV4
IGRlNTRkYzUxZTFlYmQxNjE2M2YzZjNjNjk0ZWY1Y2I1N2U2OTBhN2IuLmJjMWUwNTM0ZDBlYzkw
MjcxOWZhNzQ0YTcxOTkzM2Q0OTRiOTliZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAK
QEAgLTQ3LDYgKzQ3LDcgQEAKIAogI2lmIEVOQUJMRShHQU1FUEFEKQogI2luY2x1ZGUgIkdhbWVw
YWRMaXN0LmgiCisjaW5jbHVkZSAiR2FtZXBhZHMuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKQEAgLTMxMSw4ICszMTIsMTAgQEAgdm9pZCBOYXZpZ2F0b3I6OndlYmtpdEdl
dFVzZXJNZWRpYShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXMK
ICNpZiBFTkFCTEUoR0FNRVBBRCkKIEdhbWVwYWRMaXN0KiBOYXZpZ2F0b3I6OndlYmtpdEdhbWVw
YWRzKCkKIHsKLSAgICAvLyBTdHViYmVkIHVudGlsIHBsYXRmb3JtLyBjaGFuZ2VzIGxhbmRlZC4K
LSAgICByZXR1cm4gMDsKKyAgICBpZiAoIW1fZ2FtZXBhZHMpCisgICAgICAgIG1fZ2FtZXBhZHMg
PSBHYW1lcGFkTGlzdDo6Y3JlYXRlKCk7CisgICAgc2FtcGxlR2FtZXBhZHMobV9nYW1lcGFkcy5n
ZXQoKSk7CisgICAgcmV0dXJuIG1fZ2FtZXBhZHMuZ2V0KCk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yLmgKaW5kZXggNWJhYmRjNWRkOGYyZjlkYzI1YTkxMDBjZDJiZjVmZmY3ZWJi
ZmVhZS4uNjMyMWIzMWQ5NzM2MjI5M2NjMTgyM2Q2OWRmYTg5ZjA4MTViMDMyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL05hdmlnYXRvci5oCkBAIC04NSw2ICs4NSw5IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBS
ZWZQdHI8RE9NUGx1Z2luQXJyYXk+IG1fcGx1Z2luczsKICAgICBtdXRhYmxlIFJlZlB0cjxET01N
aW1lVHlwZUFycmF5PiBtX21pbWVUeXBlczsKICAgICBtdXRhYmxlIFJlZlB0cjxHZW9sb2NhdGlv
bj4gbV9nZW9sb2NhdGlvbjsKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBtdXRhYmxlIFJlZlB0
cjxHYW1lcGFkTGlzdD4gbV9nYW1lcGFkczsKKyNlbmRpZgogI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCiAgICAgbXV0YWJsZSBSZWZQdHI8UG9pbnRlckxvY2s+IG1fcG9pbnRlcjsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR2FtZXBhZHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0dhbWVwYWRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQwMWZiNTkxN2E0YTIzNWFl
MzE0NDQ5ZmMxZjI1OWNiNmU3NmMwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0dhbWVwYWRzLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBHYW1lcGFkc19oCisjZGVmaW5lIEdhbWVwYWRzX2gKKworI2lmIEVOQUJMRShHQU1FUEFE
KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdhbWVwYWRMaXN0OworCit2b2lkIHNh
bXBsZUdhbWVwYWRzKEdhbWVwYWRMaXN0KiBpbnRvKTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxF
KEdBTUVQQUQpCisKKyNlbmRpZiAvLyBHYW1lcGFkc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HYW1lcGFkc0Nocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0dhbWVwYWRzQ2hyb21pdW0uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZi
NmE0N2ViOWQ0MWZjNjdiMmJjYzJhMDRjODA1YmFjNzUzYjdlNDUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HYW1lcGFkc0Nocm9taXVtLmNwcApA
QCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisg
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiR2FtZXBhZHMuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSAiR2Ft
ZXBhZExpc3QuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBHYW1lcGFkTGlzdDsKKwordm9pZCBzYW1wbGVHYW1lcGFkcyhHYW1l
cGFkTGlzdCogaW50bykKK3sKKyAgICBQbGF0Zm9ybVN1cHBvcnQ6OnNhbXBsZUdhbWVwYWRzKGlu
dG8pOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAppbmRleCBhOGE0MmMwNGIyMzc3MGUyN2ZhNDcyZWQ4
NDU3Zjk1NmYyYWU4YmFiLi42YzhmZDI0NzAzNmEyYjdiZjlmZThkZTg0ZGEzYjJhMzY4MmRiZmJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1
cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1
cHBvcnQuaApAQCAtNzEsNiArNzEsNyBAQCBjbGFzcyBDb2xvcjsKIGNsYXNzIEN1cnNvcjsKIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgRnJhbWU7CitjbGFzcyBHYW1lcGFkTGlzdDsKIGNsYXNzIEdl
b2xvY2F0aW9uU2VydmljZUJyaWRnZTsKIGNsYXNzIEdlb2xvY2F0aW9uU2VydmljZUNocm9taXVt
OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwpAQCAtMTgyLDYgKzE4Myw5IEBAIHB1YmxpYzoKICAg
ICAvLyBJbmplY3RzIGtleSB2aWEga2V5UGF0aCBpbnRvIHZhbHVlLiBSZXR1cm5zIHRydWUgb24g
c3VjY2Vzcy4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGlu
amVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGNvbnN0IFN0cmluZyYga2V5UGF0aCk7CiAKKyAg
ICAvLyBHYW1lcGFkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisgICAgc3RhdGljIHZvaWQgc2FtcGxlR2FtZXBhZHMoR2FtZXBhZExp
c3QqIGludG8pOworCiAgICAgLy8gSmF2YVNjcmlwdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBzdGF0aWMgdm9pZCBub3RpZnlK
U091dE9mTWVtb3J5KEZyYW1lKik7CiAgICAgc3RhdGljIGJvb2wgYWxsb3dTY3JpcHREZXNwaXRl
U2V0dGluZ3MoY29uc3QgS1VSTCYgZG9jdW1lbnRVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKaW5kZXggZTA1OGE5MzY0NzFlMjI3Zjc0NWU4
YzMzMDM5YWViM2E3NzM1MzhhMS4uOTAyN2RjNDVkZTM1ZmVkNDYwMThiNDFlYWZmY2E1ZTUzOGUz
NDIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBw
b3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQu
Y3BwCkBAIC05MCw2ICs5MCw3IEBACiAjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHYW1lcGFkTGlzdC5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNr
ZW5kUHJveHkuaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC01MjUsNiArNTI2LDMxIEBAIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBQbGF0Zm9ybVN1cHBvcnQ6OmluamVjdElEQktl
eUludG9TZXJpYWxpemVkVmFsCiAgICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5p
bmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGtleSwgdmFsdWUsIGtleVBhdGgpOwogfQog
CisvLyBHYW1lcGFkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgUGxhdGZvcm1TdXBwb3J0OjpzYW1wbGVH
YW1lcGFkcyhHYW1lcGFkTGlzdCogaW50bykKK3sKKyAgICBXZWJHYW1lcGFkcyBnYW1lcGFkczsK
KworICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5zYW1wbGVHYW1lcGFkcyhnYW1lcGFkcyk7
CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV2ViS2l0OjpXZWJHYW1lcGFkczo6aXRl
bXNMZW5ndGhDYXA7ICsraSkgeworICAgICAgICBXZWJHYW1lcGFkJiB3ZWJHYW1lcGFkID0gZ2Ft
ZXBhZHMuaXRlbXNbaV07CisgICAgICAgIGlmIChpIDwgZ2FtZXBhZHMubGVuZ3RoICYmIHdlYkdh
bWVwYWQuY29ubmVjdGVkKSB7CisgICAgICAgICAgICBSZWZQdHI8R2FtZXBhZD4gZ2FtZXBhZCA9
IGludG8tPml0ZW0oaSk7CisgICAgICAgICAgICBpZiAoIWdhbWVwYWQpCisgICAgICAgICAgICAg
ICAgZ2FtZXBhZCA9IEdhbWVwYWQ6OmNyZWF0ZSgpOworICAgICAgICAgICAgZ2FtZXBhZC0+aWQo
d2ViR2FtZXBhZC5pZCk7CisgICAgICAgICAgICBnYW1lcGFkLT5pbmRleChpKTsKKyAgICAgICAg
ICAgIGdhbWVwYWQtPnRpbWVzdGFtcCh3ZWJHYW1lcGFkLnRpbWVzdGFtcCk7CisgICAgICAgICAg
ICBnYW1lcGFkLT5heGVzKHdlYkdhbWVwYWQuYXhlc0xlbmd0aCwgd2ViR2FtZXBhZC5heGVzKTsK
KyAgICAgICAgICAgIGdhbWVwYWQtPmJ1dHRvbnMod2ViR2FtZXBhZC5idXR0b25zTGVuZ3RoLCB3
ZWJHYW1lcGFkLmJ1dHRvbnMpOworICAgICAgICAgICAgaW50by0+c2V0KGksIGdhbWVwYWQpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGludG8tPnNldChpLCAwKTsKKyAgICB9Cit9CisK
IC8vIEtleWdlbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogU3RyaW5nIFBsYXRmb3JtU3VwcG9ydDo6c2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDUzZDZjNDg3MDBjNjE3ZGE1ZjBhYWMwMTEwNDczNGY0
NjcxZjAyMjMuLjI1NjI0NDUyYjE3N2VjNjY1YzI0ZTllOWI4YzZlOTQwZjczMzhiODQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NCBAQAorMjAxMS0xMS0yMSAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgQWRkaW5nIGdhbWVwYWQgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSAnZ2FtZXBhZENvbnRyb2xsZXInIHRvIENocm9t
aXVtIERSVC4gQWxsb3dzIGZvciBzZXR0aW5nIG9mIG1vY2sKKyAgICAgICAgZ2FtZXBhZCBkYXRh
IHRoYXQgd2lsbCBiZSByZXRyaWV2ZWQgd2hlbiBKUyBjb2RlIHB1bGxzIHZpYSBBUEkgYWNjZXNz
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9HYW1lcGFkQ29udHJvbGxlci5jcHA6IEFkZGVk
LgorICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OkdhbWVwYWRDb250cm9sbGVyKToKKyAgICAg
ICAgKEdhbWVwYWRDb250cm9sbGVyOjpiaW5kVG9KYXZhc2NyaXB0KToKKyAgICAgICAgKEdhbWVw
YWRDb250cm9sbGVyOjpyZXNldCk6CisgICAgICAgIChHYW1lcGFkQ29udHJvbGxlcjo6Y29ubmVj
dCk6CisgICAgICAgIChHYW1lcGFkQ29udHJvbGxlcjo6ZGlzY29ubmVjdCk6CisgICAgICAgIChH
YW1lcGFkQ29udHJvbGxlcjo6c2V0SWQpOgorICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OnNl
dEJ1dHRvbkNvdW50KToKKyAgICAgICAgKEdhbWVwYWRDb250cm9sbGVyOjpzZXRCdXR0b25EYXRh
KToKKyAgICAgICAgKEdhbWVwYWRDb250cm9sbGVyOjpzZXRBeGlzQ291bnQpOgorICAgICAgICAo
R2FtZXBhZENvbnRyb2xsZXI6OnNldEF4aXNEYXRhKToKKyAgICAgICAgKEdhbWVwYWRDb250cm9s
bGVyOjpmYWxsYmFja0NhbGxiYWNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9HYW1lcGFkQ29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0U2hlbGwuY3BwOgorICAgICAgICAoVGVzdFNoZWxsOjpUZXN0U2hlbGwpOgor
ICAgICAgICAoVGVzdFNoZWxsOjpyZXNldFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKFRlc3RT
aGVsbDo6YmluZEpTT2JqZWN0c1RvV2luZG93KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0U2hlbGwuaDoKKyAgICAgICAgKFRlc3RTaGVsbDo6Z2FtZXBhZENvbnRyb2xs
ZXIpOgorCiAyMDExLTExLTIxICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCBydW4tZ3RrLXRlc3RzIHRlbXBvcmFyeSB3b3JrYXJv
dW5kIGFmdGVyIHI5ODUwMC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBp
CmluZGV4IDIzNWI5NTM3MjZiY2VhYWIxODVlNWQ0ODI5NWNmMTMzOTlhZjI3NjMuLmIxOWJlMjI3
MmM1NTVjNzlkMjk5NzE2MDUyNGFhZjcwY2YyZThmNjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
RHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAtMTYsNiArMTYsOCBAQAogICAgICAgICAgICAgJ2Nocm9t
aXVtL0R1bXBSZW5kZXJUcmVlLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vRXZlbnRTZW5k
ZXIuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9FdmVudFNlbmRlci5oJywKKyAgICAgICAg
ICAgICdjaHJvbWl1bS9HYW1lcGFkQ29udHJvbGxlci5jcHAnLAorICAgICAgICAgICAgJ2Nocm9t
aXVtL0dhbWVwYWRDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suY3BwJywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0dhbWVwYWRDb250cm9sbGVy
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0dhbWVwYWRDb250cm9sbGVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yOTc0ZDNiY2RlMDI4ZDk4NTQ0NTBlNmJlZTgwZWZiZmNiMTdiYjQxCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vR2FtZXBhZENv
bnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMTcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkdhbWVwYWRDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJUZXN0U2hlbGwuaCIKKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKKworR2FtZXBhZENvbnRyb2xsZXI6OkdhbWVwYWRDb250cm9s
bGVyKFRlc3RTaGVsbCogc2hlbGwpCisgICAgOiBtX3NoZWxsKHNoZWxsKQoreworICAgIGJpbmRN
ZXRob2QoImNvbm5lY3QiLCAmR2FtZXBhZENvbnRyb2xsZXI6OmNvbm5lY3QpOworICAgIGJpbmRN
ZXRob2QoImRpc2Nvbm5lY3QiLCAmR2FtZXBhZENvbnRyb2xsZXI6OmRpc2Nvbm5lY3QpOworICAg
IGJpbmRNZXRob2QoInNldElkIiwgJkdhbWVwYWRDb250cm9sbGVyOjpzZXRJZCk7CisgICAgYmlu
ZE1ldGhvZCgic2V0QnV0dG9uQ291bnQiLCAmR2FtZXBhZENvbnRyb2xsZXI6OnNldEJ1dHRvbkNv
dW50KTsKKyAgICBiaW5kTWV0aG9kKCJzZXRCdXR0b25EYXRhIiwgJkdhbWVwYWRDb250cm9sbGVy
OjpzZXRCdXR0b25EYXRhKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRBeGlzQ291bnQiLCAmR2FtZXBh
ZENvbnRyb2xsZXI6OnNldEF4aXNDb3VudCk7CisgICAgYmluZE1ldGhvZCgic2V0QXhpc0RhdGEi
LCAmR2FtZXBhZENvbnRyb2xsZXI6OnNldEF4aXNEYXRhKTsKKworICAgIGJpbmRGYWxsYmFja01l
dGhvZCgmR2FtZXBhZENvbnRyb2xsZXI6OmZhbGxiYWNrQ2FsbGJhY2spOworCisgICAgcmVzZXQo
KTsKK30KKwordm9pZCBHYW1lcGFkQ29udHJvbGxlcjo6YmluZFRvSmF2YXNjcmlwdChXZWJGcmFt
ZSogZnJhbWUsIGNvbnN0IFdlYlN0cmluZyYgY2xhc3NuYW1lKQoreworICAgIENwcEJvdW5kQ2xh
c3M6OmJpbmRUb0phdmFzY3JpcHQoZnJhbWUsIGNsYXNzbmFtZSk7Cit9CisKK3ZvaWQgR2FtZXBh
ZENvbnRyb2xsZXI6OnJlc2V0KCkKK3sKKyAgICBtZW1zZXQoJmludGVybmFsRGF0YSwgMCwgc2l6
ZW9mKGludGVybmFsRGF0YSkpOworfQorCit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpjb25uZWN0
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAg
IGlmIChhcmdzLnNpemUoKSA8IDEpIHsKKyAgICAgICAgcHJpbnRmKCJJbnZhbGlkIGFyZ3MiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbnQgaW5kZXggPSBhcmdzWzBdLnRvSW50MzIo
KTsKKyAgICBpbnRlcm5hbERhdGEuaXRlbXNbaW5kZXhdLmNvbm5lY3RlZCA9IHRydWU7CisgICAg
aW50ZXJuYWxEYXRhLmxlbmd0aCA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdl
YktpdDo6V2ViR2FtZXBhZHM6Oml0ZW1zTGVuZ3RoQ2FwOyArK2kpCisgICAgICAgIGlmIChpbnRl
cm5hbERhdGEuaXRlbXNbaV0uY29ubmVjdGVkKQorICAgICAgICAgICAgaW50ZXJuYWxEYXRhLmxl
bmd0aCA9IGkgKyAxOworICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRHYW1lcGFkRGF0YShpbnRlcm5h
bERhdGEpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIEdhbWVwYWRDb250cm9s
bGVyOjpkaXNjb25uZWN0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCog
cmVzdWx0KQoreworICAgIGlmIChhcmdzLnNpemUoKSA8IDEpIHsKKyAgICAgICAgcHJpbnRmKCJJ
bnZhbGlkIGFyZ3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbnQgaW5kZXggPSBh
cmdzWzBdLnRvSW50MzIoKTsKKyAgICBpbnRlcm5hbERhdGEuaXRlbXNbaW5kZXhdLmNvbm5lY3Rl
ZCA9IGZhbHNlOworICAgIGludGVybmFsRGF0YS5sZW5ndGggPSAwOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBXZWJLaXQ6OldlYkdhbWVwYWRzOjppdGVtc0xlbmd0aENhcDsgKytpKQor
ICAgICAgICBpZiAoaW50ZXJuYWxEYXRhLml0ZW1zW2ldLmNvbm5lY3RlZCkKKyAgICAgICAgICAg
IGludGVybmFsRGF0YS5sZW5ndGggPSBpICsgMTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6U2V0R2Ft
ZXBhZERhdGEoaW50ZXJuYWxEYXRhKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9p
ZCBHYW1lcGFkQ29udHJvbGxlcjo6c2V0SWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmdzLCBD
cHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMikgeworICAgICAg
ICBwcmludGYoIkludmFsaWQgYXJncyIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlu
dCBpbmRleCA9IGFyZ3NbMF0udG9JbnQzMigpOworICAgIHN0ZDo6c3RyaW5nIHNyYyA9IGFyZ3Nb
MV0udG9TdHJpbmcoKTsKKyAgICBjb25zdCBjaGFyKiBwID0gc3JjLmNfc3RyKCk7CisgICAgbWVt
c2V0KGludGVybmFsRGF0YS5pdGVtc1tpbmRleF0uaWQsIDAsIHNpemVvZihpbnRlcm5hbERhdGEu
aXRlbXNbaW5kZXhdLmlkKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgKnAgJiYgaSA8IFdl
YktpdDo6V2ViR2FtZXBhZDo6aWRMZW5ndGhDYXAgLSAxOyArK2kpCisgICAgICAgIGludGVybmFs
RGF0YS5pdGVtc1tpbmRleF0uaWRbaV0gPSAqcCsrOworICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRH
YW1lcGFkRGF0YShpbnRlcm5hbERhdGEpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2
b2lkIEdhbWVwYWRDb250cm9sbGVyOjpzZXRCdXR0b25Db3VudChjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3MsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgPCAy
KSB7CisgICAgICAgIHByaW50ZigiSW52YWxpZCBhcmdzIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaW50IGluZGV4ID0gYXJnc1swXS50b0ludDMyKCk7CisgICAgaW50IGJ1dHRvbnMg
PSBhcmdzWzFdLnRvSW50MzIoKTsKKyAgICBpbnRlcm5hbERhdGEuaXRlbXNbaW5kZXhdLmJ1dHRv
bnNMZW5ndGggPSBidXR0b25zOworICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRHYW1lcGFkRGF0YShp
bnRlcm5hbERhdGEpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIEdhbWVwYWRD
b250cm9sbGVyOjpzZXRCdXR0b25EYXRhKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJncywgQ3Bw
VmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmdzLnNpemUoKSA8IDMpIHsKKyAgICAgICAg
cHJpbnRmKCJJbnZhbGlkIGFyZ3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbnQg
aW5kZXggPSBhcmdzWzBdLnRvSW50MzIoKTsKKyAgICBpbnQgYnV0dG9uID0gYXJnc1sxXS50b0lu
dDMyKCk7CisgICAgZG91YmxlIGRhdGEgPSBhcmdzWzJdLnRvRG91YmxlKCk7CisgICAgaW50ZXJu
YWxEYXRhLml0ZW1zW2luZGV4XS5idXR0b25zW2J1dHRvbl0gPSBkYXRhOworICAgIHdlYmtpdF9z
dXBwb3J0OjpTZXRHYW1lcGFkRGF0YShpbnRlcm5hbERhdGEpOworICAgIHJlc3VsdC0+c2V0TnVs
bCgpOworfQorCit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpzZXRBeGlzQ291bnQoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmdzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3Mu
c2l6ZSgpIDwgMikgeworICAgICAgICBwcmludGYoIkludmFsaWQgYXJncyIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGludCBpbmRleCA9IGFyZ3NbMF0udG9JbnQzMigpOworICAgIGlu
dCBheGVzID0gYXJnc1sxXS50b0ludDMyKCk7CisgICAgaW50ZXJuYWxEYXRhLml0ZW1zW2luZGV4
XS5heGVzTGVuZ3RoID0gYXhlczsKKyAgICB3ZWJraXRfc3VwcG9ydDo6U2V0R2FtZXBhZERhdGEo
aW50ZXJuYWxEYXRhKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBHYW1lcGFk
Q29udHJvbGxlcjo6c2V0QXhpc0RhdGEoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmdzLCBDcHBW
YXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMykgeworICAgICAgICBw
cmludGYoIkludmFsaWQgYXJncyIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGludCBp
bmRleCA9IGFyZ3NbMF0udG9JbnQzMigpOworICAgIGludCBheGlzID0gYXJnc1sxXS50b0ludDMy
KCk7CisgICAgZG91YmxlIGRhdGEgPSBhcmdzWzJdLnRvRG91YmxlKCk7CisgICAgaW50ZXJuYWxE
YXRhLml0ZW1zW2luZGV4XS5heGVzW2F4aXNdID0gZGF0YTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6
U2V0R2FtZXBhZERhdGEoaW50ZXJuYWxEYXRhKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30K
Kwordm9pZCBHYW1lcGFkQ29udHJvbGxlcjo6ZmFsbGJhY2tDYWxsYmFjayhjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcHJpbnRmKCJDT05TT0xFIE1F
U1NBR0U6IEphdmFTY3JpcHQgRVJST1I6IHVua25vd24gbWV0aG9kIGNhbGxlZCBvbiAiCisgICAg
ICAgICAgICJHYW1lcGFkQ29udHJvbGxlclxuIik7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9HYW1lcGFkQ29udHJv
bGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vR2FtZXBhZENvbnRyb2xsZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNmVlZGIwNWQ4ZDUyZjMzMWNiYmU3M2YyYWYyMmIxNDU5YzBkZDQzCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vR2FtZXBhZENv
bnRyb2xsZXIuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHYW1lcGFkQ29udHJvbGxlcl9oCisj
ZGVmaW5lIEdhbWVwYWRDb250cm9sbGVyX2gKKworI2luY2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIK
KyNpbmNsdWRlICJXZWJHYW1lcGFkcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdl
YkdhbWVwYWRzOworY2xhc3MgV2ViRnJhbWU7Cit9CisKK2NsYXNzIFRlc3RTaGVsbDsKKworY2xh
c3MgR2FtZXBhZENvbnRyb2xsZXIgOiBwdWJsaWMgQ3BwQm91bmRDbGFzcyB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgR2FtZXBhZENvbnRyb2xsZXIoVGVzdFNoZWxsKik7CisKKyAgICB2b2lkIGJp
bmRUb0phdmFzY3JpcHQoV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5n
JiBjbGFzc25hbWUpOworICAgIHZvaWQgcmVzZXQoKTsKKworcHJpdmF0ZToKKyAgICAvLyBCb3Vu
ZCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzCisgICAgdm9pZCBjb25uZWN0KGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3QoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0SWQoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0QnV0dG9uQ291bnQoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0QnV0dG9uRGF0YShjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBzZXRBeGlzQ291bnQo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0QXhpc0Rh
dGEoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgZmFsbGJh
Y2tDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICBU
ZXN0U2hlbGwqIG1fc2hlbGw7CisKKyAgICBXZWJLaXQ6OldlYkdhbWVwYWRzIGludGVybmFsRGF0
YTsKK307CisKKyNlbmRpZiAvLyBHYW1lcGFkQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAppbmRleCA4NTA3ZjI0YzAyMjMzYmNkMTA4ODEx
ZjBiYzcxN2I1NjNkZTdjZjA4Li44NzA2MjJhZTQ2YmE3ZjM0ODJlZDEwMDY3YTNhZDhkZWU0ODRi
MmFiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAg
LTEyNiw2ICsxMjYsNyBAQCBUZXN0U2hlbGw6OlRlc3RTaGVsbChib29sIHRlc3RTaGVsbE1vZGUp
CiAKICAgICBtX3dlYlBlcm1pc3Npb25zID0gYWRvcHRQdHIobmV3IFdlYlBlcm1pc3Npb25zKHRo
aXMpKTsKICAgICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKHRoaXMpKTsKKyAgICBtX2dhbWVwYWRDb250cm9sbGVyID0gYWRv
cHRQdHIobmV3IEdhbWVwYWRDb250cm9sbGVyKHRoaXMpKTsKICAgICBtX2xheW91dFRlc3RDb250
cm9sbGVyID0gYWRvcHRQdHIobmV3IExheW91dFRlc3RDb250cm9sbGVyKHRoaXMpKTsKICAgICBt
X2V2ZW50U2VuZGVyID0gYWRvcHRQdHIobmV3IEV2ZW50U2VuZGVyKHRoaXMpKTsKICAgICBtX3Bs
YWluVGV4dENvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgUGxhaW5UZXh0Q29udHJvbGxlcigpKTsK
QEAgLTI2OSw2ICsyNzAsNyBAQCB2b2lkIFRlc3RTaGVsbDo6cmVzZXRUZXN0Q29udHJvbGxlcigp
CiAgICAgcmVzZXRXZWJTZXR0aW5ncygqd2ViVmlldygpKTsKICAgICBtX3dlYlBlcm1pc3Npb25z
LT5yZXNldCgpOwogICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXItPnJlc2V0KCk7CisgICAg
bV9nYW1lcGFkQ29udHJvbGxlci0+cmVzZXQoKTsKICAgICBtX2xheW91dFRlc3RDb250cm9sbGVy
LT5yZXNldCgpOwogICAgIG1fZXZlbnRTZW5kZXItPnJlc2V0KCk7CiAgICAgbV93ZWJWaWV3SG9z
dC0+cmVzZXQoKTsKQEAgLTY3Miw2ICs2NzQsNyBAQCB2b2lkIFRlc3RTaGVsbDo6YmluZEpTT2Jq
ZWN0c1RvV2luZG93KFdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBXZWJUZXN0aW5nU3VwcG9ydDo6
aW5qZWN0SW50ZXJuYWxzT2JqZWN0KGZyYW1lKTsKICAgICBtX2FjY2Vzc2liaWxpdHlDb250cm9s
bGVyLT5iaW5kVG9KYXZhc2NyaXB0KGZyYW1lLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlciIpKTsKKyAgICBtX2dhbWVwYWRDb250cm9sbGVyLT5iaW5kVG9KYXZh
c2NyaXB0KGZyYW1lLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJnYW1lcGFkQ29udHJvbGxlciIpKTsK
ICAgICBtX2xheW91dFRlc3RDb250cm9sbGVyLT5iaW5kVG9KYXZhc2NyaXB0KGZyYW1lLCBXZWJT
dHJpbmc6OmZyb21VVEY4KCJsYXlvdXRUZXN0Q29udHJvbGxlciIpKTsKICAgICBtX2V2ZW50U2Vu
ZGVyLT5iaW5kVG9KYXZhc2NyaXB0KGZyYW1lLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJldmVudFNl
bmRlciIpKTsKICAgICBtX3BsYWluVGV4dENvbnRyb2xsZXItPmJpbmRUb0phdmFzY3JpcHQoZnJh
bWUsIFdlYlN0cmluZzo6ZnJvbVVURjgoInBsYWluVGV4dCIpKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKaW5kZXggYjE5NGViMGIyMzk2MzBlMTIzZGZiNDMxMmQw
Y2Y3NDEzNzM4NjIxMS4uMWY2NDhiMTVlZmI0NDAyNjFjMGU4MzgyMzZlY2YzNmUyYzNmMjI0NCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKQEAgLTMzLDYgKzMz
LDcgQEAKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
RXZlbnRTZW5kZXIuaCIKKyNpbmNsdWRlICJHYW1lcGFkQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IkxheW91dFRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVy
LmgiCiAjaW5jbHVkZSAiUGxhaW5UZXh0Q29udHJvbGxlci5oIgpAQCAtOTEsNiArOTIsNyBAQCBw
dWJsaWM6CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGxheW91dFRlc3RDb250cm9sbGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXlvdXRUZXN0Q29udHJvbGxlci5nZXQoKTsgfQogICAgIEV2ZW50
U2VuZGVyKiBldmVudFNlbmRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRTZW5kZXIuZ2V0KCk7
IH0KICAgICBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIo
KSBjb25zdCB7IHJldHVybiBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmdldCgpOyB9CisgICAg
R2FtZXBhZENvbnRyb2xsZXIqIGdhbWVwYWRDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9n
YW1lcGFkQ29udHJvbGxlci5nZXQoKTsgfQogICAgIE5vdGlmaWNhdGlvblByZXNlbnRlciogbm90
aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25QcmVzZW50
ZXIuZ2V0KCk7IH0KICAgICBUZXN0RXZlbnRQcmludGVyKiBwcmludGVyKCkgY29uc3QgeyByZXR1
cm4gbV9wcmludGVyLmdldCgpOyB9CiAKQEAgLTIwNSw2ICsyMDcsNyBAQCBwcml2YXRlOgogICAg
IE93blB0cjxEUlREZXZUb29sc0FnZW50PiBtX2RydERldlRvb2xzQWdlbnQ7CiAgICAgT3duUHRy
PERSVERldlRvb2xzQ2xpZW50PiBtX2RydERldlRvb2xzQ2xpZW50OwogICAgIE93blB0cjxBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcj4gbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsKKyAgICBPd25Q
dHI8R2FtZXBhZENvbnRyb2xsZXI+IG1fZ2FtZXBhZENvbnRyb2xsZXI7CiAgICAgT3duUHRyPEV2
ZW50U2VuZGVyPiBtX2V2ZW50U2VuZGVyOwogICAgIE93blB0cjxMYXlvdXRUZXN0Q29udHJvbGxl
cj4gbV9sYXlvdXRUZXN0Q29udHJvbGxlcjsKICAgICBPd25QdHI8UGxhaW5UZXh0Q29udHJvbGxl
cj4gbV9wbGFpblRleHRDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc1Y2YwM2U5Yjc5NGRjMDI2MjQzYjUy
Mzg4NDlmMzc2OTM1MjE5YjMuLjAzMTk2ZjA2NTIzOTlhZmE5ZWUzMmE2NWQ2YjNhOGY3NDcwMmY1
MzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMS0yMSAgU2NvdHQgR3JhaGFtICA8c2Nv
dHRtZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkaW5nIGdhbWVwYWQgc3VwcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0NTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3Nj
cmlwdC10ZXN0cy9wcm90b3R5cGUtaW5oZXJpdGFuY2UuanM6IEV4Y2x1ZGUKKyAgICAgICAgZ2Ft
ZXBhZENvbnRyb2xsZXIgZnJvbSBlbnVtZXJhdGlvbi4KKyAgICAgICAgKiBnYW1lcGFkL2dhbWVw
YWQtcG9sbGluZy1hY2Nlc3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBnYW1lcGFk
L2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MuaHRtbDogQWRkZWQuCisKIDIwMTEtMTEtMjEgIEFkYW0g
S2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmViYXNlbGluZSBmb250LWZh
Y2Utb3BlbnR5cGUuaHRtbCBvbiBjci1tYWMtbGVvcGFyZC4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9wcm90b3R5cGUtaW5oZXJpdGFuY2UuanMgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQtdGVzdHMvcHJvdG90eXBlLWluaGVyaXRhbmNlLmpzCmlu
ZGV4IGM5NGQ2ODU1OGIzMWQ4YmJiZTVkNGEwZDE5MDBmZGIxYWY4M2FhODIuLmRmZGZkOGNhYzFl
YTVhMWJjNTczZmJmMmI5OGQ1NTBjNmI0YzIyYmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NjcmlwdC10ZXN0cy9wcm90b3R5cGUtaW5oZXJpdGFuY2UuanMKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL3Byb3RvdHlwZS1pbmhlcml0YW5jZS5qcwpAQCAt
MTIsNiArMTIsNyBAQCB2YXIgc2tpcHBlZFByb3BlcnRpZXMgPSBbCiAgICAgIm9iakNDb250cm9s
bGVyIiwgInRleHRJbnB1dENvbnRyb2xsZXIiLCAibmF2aWdhdGlvbkNvbnRyb2xsZXIiLAogICAg
ICJldmVudFNlbmRlciIsICJvYmpDUGx1Z2luIiwgIm9iakNQbHVnaW5GdW5jdGlvbiIsCiAgICAg
ImFwcGxlU2NyaXB0Q29udHJvbGxlciIsICJwbGFpblRleHQiLCAiYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIiLAorICAgICJnYW1lcGFkQ29udHJvbGxlciIsCiAgICAgImludGVybmFscyIsCiAgICAg
Ly8gSWdub3JlIHRoZXNlIHByb3BlcnRpZXMgYmVjYXVzZSB0aGV5IGRvIG5vdCBleGlzdCBpbiBh
bGwgaW1wbGVtZW50YXRpb25zLiBUaGV5IHdpbGwgYmUgdGVzdGVkIHNlcGFyYXRlbHkKICAgICAi
d2Via2l0Tm90aWZpY2F0aW9ucyIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9nYW1lcGFkL2dh
bWVwYWQtcG9sbGluZy1hY2Nlc3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9n
YW1lcGFkLXBvbGxpbmctYWNjZXNzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDg0ZmQxYzIx
YzE0YzA4ZWYzY2RjMzlkNWU4NzcxOGE5NjUyYjUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXBvbGxpbmctYWNjZXNzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE5IEBACitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkcy5sZW5ndGggaXMgNAorUEFT
UyBuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0gaXMgdW5kZWZpbmVkLgorUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2FtZXBhZHNbMV0gaXMgdW5kZWZpbmVkLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0
R2FtZXBhZHNbMl0gaXMgdW5kZWZpbmVkLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNb
M10gaXMgdW5kZWZpbmVkLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0gaXMgbm9u
LW51bGwuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXSBpcyB1bmRlZmluZWQuCitQ
QVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5pZCBpcyAnTW9ja1N0aWNrIDMwMDAnCitQ
QVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5idXR0b25zLmxlbmd0aCBpcyAyCitQQVNT
IG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5heGVzLmxlbmd0aCBpcyAyCitQQVNTIG5hdmln
YXRvci53ZWJraXRHYW1lcGFkc1swXS5idXR0b25zWzBdIGlzIDEuMAorUEFTUyBuYXZpZ2F0b3Iu
d2Via2l0R2FtZXBhZHNbMF0uYnV0dG9uc1sxXSBpcyAwLjAKK1BBU1MgbmF2aWdhdG9yLndlYmtp
dEdhbWVwYWRzWzBdLmF4ZXMubGVuZ3RoIGlzIDIKK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdhbWVw
YWRzWzBdLmF4ZXNbMF0gaXMgMC41CitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5h
eGVzWzFdIGlzIC0xLjAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorVHlwaWNhbCBwb2xsaW5nIGFjY2VzcyB0byBnYW1lcGFkcyBjb250ZW50cy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy5odG1s
IGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXBvbGxpbmctYWNjZXNzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDU3NzVmY2RlY2UyOTIwYjY5ZWIwYmIxNWI5ZDk1MzA1OGZlZjkxOQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy5odG1s
CkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0i
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
KyAgICBpZiAod2luZG93LmdhbWVwYWRDb250cm9sbGVyKQorICAgIHsKKyAgICAgICAgLy8gc3Rh
cnQgYWxsIGRpc2Nvbm5lY3RlZAorICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5kaXNjb25uZWN0
KDApOworICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5kaXNjb25uZWN0KDEpOworICAgICAgICBn
YW1lcGFkQ29udHJvbGxlci5kaXNjb25uZWN0KDIpOworICAgICAgICBnYW1lcGFkQ29udHJvbGxl
ci5kaXNjb25uZWN0KDMpOworICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdEdhbWVw
YWRzLmxlbmd0aCIsICI0Iik7CisgICAgICAgIHNob3VsZEJlVW5kZWZpbmVkKCJuYXZpZ2F0b3Iu
d2Via2l0R2FtZXBhZHNbMF0iKTsKKyAgICAgICAgc2hvdWxkQmVVbmRlZmluZWQoIm5hdmlnYXRv
ci53ZWJraXRHYW1lcGFkc1sxXSIpOworICAgICAgICBzaG91bGRCZVVuZGVmaW5lZCgibmF2aWdh
dG9yLndlYmtpdEdhbWVwYWRzWzJdIik7CisgICAgICAgIHNob3VsZEJlVW5kZWZpbmVkKCJuYXZp
Z2F0b3Iud2Via2l0R2FtZXBhZHNbM10iKTsKKworICAgICAgICAvLyBjb25uZWN0IGFuZCBkaXNj
b25uZWN0CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLmNvbm5lY3QoMCk7CisgICAgICAgIHNo
b3VsZEJlTm9uTnVsbCgibmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdIik7CisgICAgICAgIGdh
bWVwYWRDb250cm9sbGVyLmRpc2Nvbm5lY3QoMCk7CisgICAgICAgIHNob3VsZEJlVW5kZWZpbmVk
KCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0iKTsKKworICAgICAgICAvLyBjb25uZWN0IGFn
YWluLCBhbmQgY2hlY2sgc3RhbmRhcmQgYWNjZXNzCisgICAgICAgIGdhbWVwYWRDb250cm9sbGVy
LmNvbm5lY3QoMCk7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLnNldElkKDAsICJNb2NrU3Rp
Y2sgMzAwMCIpOworICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5zZXRCdXR0b25Db3VudCgwLCAy
KTsKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIuc2V0QXhpc0NvdW50KDAsIDIpOworICAgICAg
ICBnYW1lcGFkQ29udHJvbGxlci5zZXRCdXR0b25EYXRhKDAsIDAsIDEpOworICAgICAgICBnYW1l
cGFkQ29udHJvbGxlci5zZXRCdXR0b25EYXRhKDAsIDEsIDApOworICAgICAgICBnYW1lcGFkQ29u
dHJvbGxlci5zZXRBeGlzRGF0YSgwLCAwLCAuNSk7CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVy
LnNldEF4aXNEYXRhKDAsIDEsIC0xLjApOworICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndl
YmtpdEdhbWVwYWRzWzBdLmlkIiwgIidNb2NrU3RpY2sgMzAwMCciKTsKKyAgICAgICAgc2hvdWxk
QmUoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5idXR0b25zLmxlbmd0aCIsICIyIik7Cisg
ICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uYXhlcy5sZW5ndGgi
LCAiMiIpOworICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmJ1
dHRvbnNbMF0iLCAiMS4wIik7CisgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0R2Ft
ZXBhZHNbMF0uYnV0dG9uc1sxXSIsICIwLjAiKTsKKyAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRv
ci53ZWJraXRHYW1lcGFkc1swXS5heGVzLmxlbmd0aCIsICIyIik7CisgICAgICAgIHNob3VsZEJl
KCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uYXhlc1swXSIsICIwLjUiKTsKKyAgICAgICAg
c2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5heGVzWzFdIiwgIi0xLjAiKTsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgY29uc29sZS5sb2coIkZBSUw6IG5vIGdh
bWVwYWRDb250cm9sbGVyIGF2YWlsYWJsZS4iKQorICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8cD5U
eXBpY2FsIHBvbGxpbmcgYWNjZXNzIHRvIGdhbWVwYWRzIGNvbnRlbnRzLjwvcD4KKzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116284</attachid>
            <date>2011-11-22 15:49:25 -0800</date>
            <delta_ts>2011-11-23 04:16:29 -0800</delta_ts>
            <desc>no change, just to EWS again with DEPS rolled</desc>
            <filename>bug-69451-20111122154924.patch</filename>
            <type>text/plain</type>
            <size>30265</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhiY2RmYzY1Y2QzNTUz
MWE4YWUxYTFmZDNmMGZhYWZhYjY0ZmY3YS4uZGYyZThiOGI4ZDQ0MGY0ZjdmYjg2M2RlZDI1MjZm
YjgzOTdkNmQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTExLTIyICBTY290
dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGRpbmcgZ2FtZXBh
ZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02OTQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBsdW1iIGdhbWVwYWQgZGF0YSBhY2Nlc3MgdGhyb3VnaCBwbGF0Zm9ybS4KKworICAgICAgICBU
ZXN0OiBnYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MuaHRtbAorCisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdmlnYXRvcjo6d2Via2l0R2FtZXBhZHMpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9y
Lmg6CisgICAgICAgICogcGxhdGZvcm0vR2FtZXBhZHMuaDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vR2FtZXBhZHNDaHJvbWl1bS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6c2FtcGxlR2FtZXBhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRm
b3JtU3VwcG9ydC5oOgorCiAyMDExLTExLTIyICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgTGF5b3V0IFRlc3QgaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0
ZW5zaW9ucy1ldmVudHMuaHRtbCBpcyB0aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDkwY2NjY2UwMjRhYWZjMDRlYmI3NzU5ZTFkYjhkM2NlZjE3YjBjYjEuLjRjZTE5MTQy
YWUxMmM4MWI0OWUwZTc2ZjQzMmVhZTNjNTExMjc0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMTEtMjIgIFNjb3R0IEdyYWhhbSAgPHNjb3R0bWdA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZGluZyBnYW1lcGFkIHN1cHBvcnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NDUxCisKKyAgICAgICAg
QWRkIGltcGxlbWVudGF0aW9uIG9mIHNhbXBsZUdhbWVwYWRzIGluIENocm9taXVtIHBsYXRmb3Jt
LiBSZXRyaWV2ZXMKKyAgICAgICAgZ2FtZXBhZCBkYXRhIGZyb20gQ2hyb21pdW0gcG9ydCBhbmQg
Y29udmVydHMgdG8gRE9NIGZvcm1hdCwgaS5lLgorICAgICAgICBHYW1lcGFkTGlzdC4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9QbGF0Zm9y
bVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0OjpzYW1wbGVH
YW1lcGFkcyk6CisKIDIwMTEtMTEtMjIgIEdyZWcgQmlsbG9jayAgPGdiaWxsb2NrQGdvb2dsZS5j
b20+CiAKICAgICAgICAgRW1wdHkgQVBJIGZvciB3ZWIgaW50ZW50cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDRhYmM4NDBmZTk3MGM1YzJiMjAxMTMxNGVlZDZjNjI2YWY4Zjg1NTYuLjJjMWMxYzdlMWRh
ODQ2ZjAwNzg3Njk5M2Q2ZjlkNjJhMDU0YjQ0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTMyNDAs
NiArMzI0MCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vRnJhbWVsZXNzU2Ny
b2xsVmlldy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Nj
cm9sbFZpZXcuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vRnJhbWVsZXNzU2Ny
b2xsVmlld0NsaWVudC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9HYW1lcGFk
c0Nocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJl
Y29nbml6ZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0dl
c3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vS2V5Q29kZUNvbnZlcnNpb24uaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXgg
ZGU1NGRjNTFlMWViZDE2MTYzZjNmM2M2OTRlZjVjYjU3ZTY5MGE3Yi4uYmMxZTA1MzRkMGVjOTAy
NzE5ZmE3NDRhNzE5OTMzZDQ5NGI5OWJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApA
QCAtNDcsNiArNDcsNyBAQAogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAjaW5jbHVkZSAiR2FtZXBh
ZExpc3QuaCIKKyNpbmNsdWRlICJHYW1lcGFkcy5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpAQCAtMzExLDggKzMxMiwxMCBAQCB2b2lkIE5hdmlnYXRvcjo6d2Via2l0R2V0
VXNlck1lZGlhKGNvbnN0IFN0cmluZyYgb3B0aW9ucywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVcwog
I2lmIEVOQUJMRShHQU1FUEFEKQogR2FtZXBhZExpc3QqIE5hdmlnYXRvcjo6d2Via2l0R2FtZXBh
ZHMoKQogewotICAgIC8vIFN0dWJiZWQgdW50aWwgcGxhdGZvcm0vIGNoYW5nZXMgbGFuZGVkLgot
ICAgIHJldHVybiAwOworICAgIGlmICghbV9nYW1lcGFkcykKKyAgICAgICAgbV9nYW1lcGFkcyA9
IEdhbWVwYWRMaXN0OjpjcmVhdGUoKTsKKyAgICBzYW1wbGVHYW1lcGFkcyhtX2dhbWVwYWRzLmdl
dCgpKTsKKyAgICByZXR1cm4gbV9nYW1lcGFkcy5nZXQoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3IuaAppbmRleCA1YmFiZGM1ZGQ4ZjJmOWRjMjVhOTEwMGNkMmJmNWZmZjdlYmJm
ZWFlLi42MzIxYjMxZDk3MzYyMjkzY2MxODIzZDY5ZGZhODlmMDgxNWIwMzIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yLmgKQEAgLTg1LDYgKzg1LDkgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFJl
ZlB0cjxET01QbHVnaW5BcnJheT4gbV9wbHVnaW5zOwogICAgIG11dGFibGUgUmVmUHRyPERPTU1p
bWVUeXBlQXJyYXk+IG1fbWltZVR5cGVzOwogICAgIG11dGFibGUgUmVmUHRyPEdlb2xvY2F0aW9u
PiBtX2dlb2xvY2F0aW9uOworI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIG11dGFibGUgUmVmUHRy
PEdhbWVwYWRMaXN0PiBtX2dhbWVwYWRzOworI2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9D
SykKICAgICBtdXRhYmxlIFJlZlB0cjxQb2ludGVyTG9jaz4gbV9wb2ludGVyOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HYW1lcGFkcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vR2FtZXBhZHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDAxZmI1OTE3YTRhMjM1YWUz
MTQ0NDlmYzFmMjU5Y2I2ZTc2YzAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vR2FtZXBhZHMuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
CisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEdhbWVwYWRzX2gKKyNkZWZpbmUgR2FtZXBhZHNfaAorCisjaWYgRU5BQkxFKEdBTUVQQUQp
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR2FtZXBhZExpc3Q7CisKK3ZvaWQgc2Ft
cGxlR2FtZXBhZHMoR2FtZXBhZExpc3QqIGludG8pOworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
R0FNRVBBRCkKKworI2VuZGlmIC8vIEdhbWVwYWRzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0dhbWVwYWRzQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vR2FtZXBhZHNDaHJvbWl1bS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI2
YTQ3ZWI5ZDQxZmM2N2IyYmNjMmEwNGM4MDViYWM3NTNiN2U0NQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dhbWVwYWRzQ2hyb21pdW0uY3BwCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1l
dDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAq
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
CisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSAorICogREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJHYW1lcGFkcy5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlICJHYW1l
cGFkTGlzdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEdhbWVwYWRMaXN0OworCit2b2lkIHNhbXBsZUdhbWVwYWRzKEdhbWVw
YWRMaXN0KiBpbnRvKQoreworICAgIFBsYXRmb3JtU3VwcG9ydDo6c2FtcGxlR2FtZXBhZHMoaW50
byk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCmluZGV4IGE4YTQyYzA0YjIzNzcwZTI3ZmE0NzJlZDg0
NTdmOTU2ZjJhZThiYWIuLjZjOGZkMjQ3MDM2YTJiN2JmOWZlOGRlODRkYTNiMmEzNjgyZGJmYmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3Vw
cG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3Vw
cG9ydC5oCkBAIC03MSw2ICs3MSw3IEBAIGNsYXNzIENvbG9yOwogY2xhc3MgQ3Vyc29yOwogY2xh
c3MgRG9jdW1lbnQ7CiBjbGFzcyBGcmFtZTsKK2NsYXNzIEdhbWVwYWRMaXN0OwogY2xhc3MgR2Vv
bG9jYXRpb25TZXJ2aWNlQnJpZGdlOwogY2xhc3MgR2VvbG9jYXRpb25TZXJ2aWNlQ2hyb21pdW07
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CkBAIC0xODIsNiArMTgzLDkgQEAgcHVibGljOgogICAg
IC8vIEluamVjdHMga2V5IHZpYSBrZXlQYXRoIGludG8gdmFsdWUuIFJldHVybnMgdHJ1ZSBvbiBz
dWNjZXNzLgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5q
ZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKTsKIAorICAg
IC8vIEdhbWVwYWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyAgICBzdGF0aWMgdm9pZCBzYW1wbGVHYW1lcGFkcyhHYW1lcGFkTGlz
dCogaW50byk7CisKICAgICAvLyBKYXZhU2NyaXB0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIHN0YXRpYyB2b2lkIG5vdGlmeUpT
T3V0T2ZNZW1vcnkoRnJhbWUqKTsKICAgICBzdGF0aWMgYm9vbCBhbGxvd1NjcmlwdERlc3BpdGVT
ZXR0aW5ncyhjb25zdCBLVVJMJiBkb2N1bWVudFVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAppbmRleCBlMDU4YTkzNjQ3MWUyMjdmNzQ1ZThj
MzMwMzlhZWIzYTc3MzUzOGExLi45MDI3ZGM0NWRlMzVmZWQ0NjAxOGI0MWVhZmZjYTVlNTM4ZTM0
MjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBv
cnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5j
cHAKQEAgLTkwLDYgKzkwLDcgQEAKICNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdhbWVwYWRMaXN0Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tl
bmRQcm94eS5oIgogI2luY2x1ZGUgIktVUkwuaCIKQEAgLTUyNSw2ICs1MjYsMzEgQEAgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFBsYXRmb3JtU3VwcG9ydDo6aW5qZWN0SURCS2V5
SW50b1NlcmlhbGl6ZWRWYWwKICAgICByZXR1cm4gd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmlu
amVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUoa2V5LCB2YWx1ZSwga2V5UGF0aCk7CiB9CiAK
Ky8vIEdhbWVwYWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OnNhbXBsZUdh
bWVwYWRzKEdhbWVwYWRMaXN0KiBpbnRvKQoreworICAgIFdlYkdhbWVwYWRzIGdhbWVwYWRzOwor
CisgICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPnNhbXBsZUdhbWVwYWRzKGdhbWVwYWRzKTsK
KworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXZWJLaXQ6OldlYkdhbWVwYWRzOjppdGVt
c0xlbmd0aENhcDsgKytpKSB7CisgICAgICAgIFdlYkdhbWVwYWQmIHdlYkdhbWVwYWQgPSBnYW1l
cGFkcy5pdGVtc1tpXTsKKyAgICAgICAgaWYgKGkgPCBnYW1lcGFkcy5sZW5ndGggJiYgd2ViR2Ft
ZXBhZC5jb25uZWN0ZWQpIHsKKyAgICAgICAgICAgIFJlZlB0cjxHYW1lcGFkPiBnYW1lcGFkID0g
aW50by0+aXRlbShpKTsKKyAgICAgICAgICAgIGlmICghZ2FtZXBhZCkKKyAgICAgICAgICAgICAg
ICBnYW1lcGFkID0gR2FtZXBhZDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBnYW1lcGFkLT5pZCh3
ZWJHYW1lcGFkLmlkKTsKKyAgICAgICAgICAgIGdhbWVwYWQtPmluZGV4KGkpOworICAgICAgICAg
ICAgZ2FtZXBhZC0+dGltZXN0YW1wKHdlYkdhbWVwYWQudGltZXN0YW1wKTsKKyAgICAgICAgICAg
IGdhbWVwYWQtPmF4ZXMod2ViR2FtZXBhZC5heGVzTGVuZ3RoLCB3ZWJHYW1lcGFkLmF4ZXMpOwor
ICAgICAgICAgICAgZ2FtZXBhZC0+YnV0dG9ucyh3ZWJHYW1lcGFkLmJ1dHRvbnNMZW5ndGgsIHdl
YkdhbWVwYWQuYnV0dG9ucyk7CisgICAgICAgICAgICBpbnRvLT5zZXQoaSwgZ2FtZXBhZCk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaW50by0+c2V0KGksIDApOworICAgIH0KK30KKwog
Ly8gS2V5Z2VuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBTdHJpbmcgUGxhdGZvcm1TdXBwb3J0OjpzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjdlZmFiZmJhMjM0MmM5ZWYwYmEwOGM0MGQ4OThiODU0
NGQxODlkNy4uNWVlM2RkNDhlYTUyN2Q1ZjBhNTljY2M4YmQwY2YxZTI3MDQ4MDc5NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDExLTExLTIyICBTY290dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBBZGRpbmcgZ2FtZXBhZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhICdnYW1lcGFkQ29udHJvbGxlcicgdG8gQ2hyb21p
dW0gRFJULiBBbGxvd3MgZm9yIHNldHRpbmcgb2YgbW9jaworICAgICAgICBnYW1lcGFkIGRhdGEg
dGhhdCB3aWxsIGJlIHJldHJpZXZlZCB3aGVuIEpTIGNvZGUgcHVsbHMgdmlhIEFQSSBhY2Nlc3Mu
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0dhbWVwYWRDb250cm9sbGVyLmNwcDogQWRkZWQu
CisgICAgICAgIChHYW1lcGFkQ29udHJvbGxlcjo6R2FtZXBhZENvbnRyb2xsZXIpOgorICAgICAg
ICAoR2FtZXBhZENvbnRyb2xsZXI6OmJpbmRUb0phdmFzY3JpcHQpOgorICAgICAgICAoR2FtZXBh
ZENvbnRyb2xsZXI6OnJlc2V0KToKKyAgICAgICAgKEdhbWVwYWRDb250cm9sbGVyOjpjb25uZWN0
KToKKyAgICAgICAgKEdhbWVwYWRDb250cm9sbGVyOjpkaXNjb25uZWN0KToKKyAgICAgICAgKEdh
bWVwYWRDb250cm9sbGVyOjpzZXRJZCk6CisgICAgICAgIChHYW1lcGFkQ29udHJvbGxlcjo6c2V0
QnV0dG9uQ291bnQpOgorICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OnNldEJ1dHRvbkRhdGEp
OgorICAgICAgICAoR2FtZXBhZENvbnRyb2xsZXI6OnNldEF4aXNDb3VudCk6CisgICAgICAgIChH
YW1lcGFkQ29udHJvbGxlcjo6c2V0QXhpc0RhdGEpOgorICAgICAgICAoR2FtZXBhZENvbnRyb2xs
ZXI6OmZhbGxiYWNrQ2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0dhbWVwYWRDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RTaGVsbC5jcHA6CisgICAgICAgIChUZXN0U2hlbGw6OlRlc3RTaGVsbCk6Cisg
ICAgICAgIChUZXN0U2hlbGw6OnJlc2V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoVGVzdFNo
ZWxsOjpiaW5kSlNPYmplY3RzVG9XaW5kb3cpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAoVGVzdFNoZWxsOjpnYW1lcGFkQ29udHJvbGxl
cik6CisKIDIwMTEtMTEtMTcgIFZpbmNlbnQgU2NoZWliICA8c2NoZWliQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBQb2ludGVyIExvY2s6IEluaXRpYWwgVGVzdHMgZm9yIG5hdmlnYXRvci53ZWJr
aXRQb250ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IDIz
NWI5NTM3MjZiY2VhYWIxODVlNWQ0ODI5NWNmMTMzOTlhZjI3NjMuLmIxOWJlMjI3MmM1NTVjNzlk
Mjk5NzE2MDUyNGFhZjcwY2YyZThmNjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUuZ3lwaQpAQCAtMTYsNiArMTYsOCBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL0R1bXBS
ZW5kZXJUcmVlLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9FdmVudFNlbmRlci5oJywKKyAgICAgICAgICAgICdjaHJv
bWl1bS9HYW1lcGFkQ29udHJvbGxlci5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL0dhbWVw
YWRDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suY3BwJywKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0dhbWVwYWRDb250cm9sbGVyLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0dhbWVwYWRDb250cm9sbGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yOTc0ZDNiY2RlMDI4ZDk4NTQ0NTBlNmJlZTgwZWZiZmNiMTdiYjQxCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vR2FtZXBhZENvbnRyb2xsZXIu
Y3BwCkBAIC0wLDAgKzEsMTcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVw
YWRDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJUZXN0U2hlbGwuaCIKKwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKKworR2FtZXBhZENvbnRyb2xsZXI6OkdhbWVwYWRDb250cm9sbGVyKFRlc3RT
aGVsbCogc2hlbGwpCisgICAgOiBtX3NoZWxsKHNoZWxsKQoreworICAgIGJpbmRNZXRob2QoImNv
bm5lY3QiLCAmR2FtZXBhZENvbnRyb2xsZXI6OmNvbm5lY3QpOworICAgIGJpbmRNZXRob2QoImRp
c2Nvbm5lY3QiLCAmR2FtZXBhZENvbnRyb2xsZXI6OmRpc2Nvbm5lY3QpOworICAgIGJpbmRNZXRo
b2QoInNldElkIiwgJkdhbWVwYWRDb250cm9sbGVyOjpzZXRJZCk7CisgICAgYmluZE1ldGhvZCgi
c2V0QnV0dG9uQ291bnQiLCAmR2FtZXBhZENvbnRyb2xsZXI6OnNldEJ1dHRvbkNvdW50KTsKKyAg
ICBiaW5kTWV0aG9kKCJzZXRCdXR0b25EYXRhIiwgJkdhbWVwYWRDb250cm9sbGVyOjpzZXRCdXR0
b25EYXRhKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRBeGlzQ291bnQiLCAmR2FtZXBhZENvbnRyb2xs
ZXI6OnNldEF4aXNDb3VudCk7CisgICAgYmluZE1ldGhvZCgic2V0QXhpc0RhdGEiLCAmR2FtZXBh
ZENvbnRyb2xsZXI6OnNldEF4aXNEYXRhKTsKKworICAgIGJpbmRGYWxsYmFja01ldGhvZCgmR2Ft
ZXBhZENvbnRyb2xsZXI6OmZhbGxiYWNrQ2FsbGJhY2spOworCisgICAgcmVzZXQoKTsKK30KKwor
dm9pZCBHYW1lcGFkQ29udHJvbGxlcjo6YmluZFRvSmF2YXNjcmlwdChXZWJGcmFtZSogZnJhbWUs
IGNvbnN0IFdlYlN0cmluZyYgY2xhc3NuYW1lKQoreworICAgIENwcEJvdW5kQ2xhc3M6OmJpbmRU
b0phdmFzY3JpcHQoZnJhbWUsIGNsYXNzbmFtZSk7Cit9CisKK3ZvaWQgR2FtZXBhZENvbnRyb2xs
ZXI6OnJlc2V0KCkKK3sKKyAgICBtZW1zZXQoJmludGVybmFsRGF0YSwgMCwgc2l6ZW9mKGludGVy
bmFsRGF0YSkpOworfQorCit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpjb25uZWN0KGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmdz
LnNpemUoKSA8IDEpIHsKKyAgICAgICAgcHJpbnRmKCJJbnZhbGlkIGFyZ3MiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpbnQgaW5kZXggPSBhcmdzWzBdLnRvSW50MzIoKTsKKyAgICBp
bnRlcm5hbERhdGEuaXRlbXNbaW5kZXhdLmNvbm5lY3RlZCA9IHRydWU7CisgICAgaW50ZXJuYWxE
YXRhLmxlbmd0aCA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdlYktpdDo6V2Vi
R2FtZXBhZHM6Oml0ZW1zTGVuZ3RoQ2FwOyArK2kpCisgICAgICAgIGlmIChpbnRlcm5hbERhdGEu
aXRlbXNbaV0uY29ubmVjdGVkKQorICAgICAgICAgICAgaW50ZXJuYWxEYXRhLmxlbmd0aCA9IGkg
KyAxOworICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRHYW1lcGFkRGF0YShpbnRlcm5hbERhdGEpOwor
ICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpkaXNj
b25uZWN0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCogcmVzdWx0KQor
eworICAgIGlmIChhcmdzLnNpemUoKSA8IDEpIHsKKyAgICAgICAgcHJpbnRmKCJJbnZhbGlkIGFy
Z3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbnQgaW5kZXggPSBhcmdzWzBdLnRv
SW50MzIoKTsKKyAgICBpbnRlcm5hbERhdGEuaXRlbXNbaW5kZXhdLmNvbm5lY3RlZCA9IGZhbHNl
OworICAgIGludGVybmFsRGF0YS5sZW5ndGggPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBXZWJLaXQ6OldlYkdhbWVwYWRzOjppdGVtc0xlbmd0aENhcDsgKytpKQorICAgICAgICBp
ZiAoaW50ZXJuYWxEYXRhLml0ZW1zW2ldLmNvbm5lY3RlZCkKKyAgICAgICAgICAgIGludGVybmFs
RGF0YS5sZW5ndGggPSBpICsgMTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6U2V0R2FtZXBhZERhdGEo
aW50ZXJuYWxEYXRhKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBHYW1lcGFk
Q29udHJvbGxlcjo6c2V0SWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmdzLCBDcHBWYXJpYW50
KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMikgeworICAgICAgICBwcmludGYo
IkludmFsaWQgYXJncyIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGludCBpbmRleCA9
IGFyZ3NbMF0udG9JbnQzMigpOworICAgIHN0ZDo6c3RyaW5nIHNyYyA9IGFyZ3NbMV0udG9TdHJp
bmcoKTsKKyAgICBjb25zdCBjaGFyKiBwID0gc3JjLmNfc3RyKCk7CisgICAgbWVtc2V0KGludGVy
bmFsRGF0YS5pdGVtc1tpbmRleF0uaWQsIDAsIHNpemVvZihpbnRlcm5hbERhdGEuaXRlbXNbaW5k
ZXhdLmlkKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgKnAgJiYgaSA8IFdlYktpdDo6V2Vi
R2FtZXBhZDo6aWRMZW5ndGhDYXAgLSAxOyArK2kpCisgICAgICAgIGludGVybmFsRGF0YS5pdGVt
c1tpbmRleF0uaWRbaV0gPSAqcCsrOworICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRHYW1lcGFkRGF0
YShpbnRlcm5hbERhdGEpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIEdhbWVw
YWRDb250cm9sbGVyOjpzZXRCdXR0b25Db3VudChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Ms
IENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgPCAyKSB7CisgICAg
ICAgIHByaW50ZigiSW52YWxpZCBhcmdzIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aW50IGluZGV4ID0gYXJnc1swXS50b0ludDMyKCk7CisgICAgaW50IGJ1dHRvbnMgPSBhcmdzWzFd
LnRvSW50MzIoKTsKKyAgICBpbnRlcm5hbERhdGEuaXRlbXNbaW5kZXhdLmJ1dHRvbnNMZW5ndGgg
PSBidXR0b25zOworICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRHYW1lcGFkRGF0YShpbnRlcm5hbERh
dGEpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIEdhbWVwYWRDb250cm9sbGVy
OjpzZXRCdXR0b25EYXRhKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJncywgQ3BwVmFyaWFudCog
cmVzdWx0KQoreworICAgIGlmIChhcmdzLnNpemUoKSA8IDMpIHsKKyAgICAgICAgcHJpbnRmKCJJ
bnZhbGlkIGFyZ3MiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpbnQgaW5kZXggPSBh
cmdzWzBdLnRvSW50MzIoKTsKKyAgICBpbnQgYnV0dG9uID0gYXJnc1sxXS50b0ludDMyKCk7Cisg
ICAgZG91YmxlIGRhdGEgPSBhcmdzWzJdLnRvRG91YmxlKCk7CisgICAgaW50ZXJuYWxEYXRhLml0
ZW1zW2luZGV4XS5idXR0b25zW2J1dHRvbl0gPSBkYXRhOworICAgIHdlYmtpdF9zdXBwb3J0OjpT
ZXRHYW1lcGFkRGF0YShpbnRlcm5hbERhdGEpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQor
Cit2b2lkIEdhbWVwYWRDb250cm9sbGVyOjpzZXRBeGlzQ291bnQoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmdzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpIDwg
MikgeworICAgICAgICBwcmludGYoIkludmFsaWQgYXJncyIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGludCBpbmRleCA9IGFyZ3NbMF0udG9JbnQzMigpOworICAgIGludCBheGVzID0g
YXJnc1sxXS50b0ludDMyKCk7CisgICAgaW50ZXJuYWxEYXRhLml0ZW1zW2luZGV4XS5heGVzTGVu
Z3RoID0gYXhlczsKKyAgICB3ZWJraXRfc3VwcG9ydDo6U2V0R2FtZXBhZERhdGEoaW50ZXJuYWxE
YXRhKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBHYW1lcGFkQ29udHJvbGxl
cjo6c2V0QXhpc0RhdGEoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmdzLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMykgeworICAgICAgICBwcmludGYoIklu
dmFsaWQgYXJncyIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGludCBpbmRleCA9IGFy
Z3NbMF0udG9JbnQzMigpOworICAgIGludCBheGlzID0gYXJnc1sxXS50b0ludDMyKCk7CisgICAg
ZG91YmxlIGRhdGEgPSBhcmdzWzJdLnRvRG91YmxlKCk7CisgICAgaW50ZXJuYWxEYXRhLml0ZW1z
W2luZGV4XS5heGVzW2F4aXNdID0gZGF0YTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6U2V0R2FtZXBh
ZERhdGEoaW50ZXJuYWxEYXRhKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBH
YW1lcGFkQ29udHJvbGxlcjo6ZmFsbGJhY2tDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcHJpbnRmKCJDT05TT0xFIE1FU1NBR0U6IEph
dmFTY3JpcHQgRVJST1I6IHVua25vd24gbWV0aG9kIGNhbGxlZCBvbiAiCisgICAgICAgICAgICJH
YW1lcGFkQ29udHJvbGxlclxuIik7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9HYW1lcGFkQ29udHJvbGxlci5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vR2FtZXBhZENvbnRyb2xsZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNmVlZGIwNWQ4ZDUyZjMzMWNiYmU3M2YyYWYyMmIxNDU5YzBkZDQzCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vR2FtZXBhZENvbnRyb2xsZXIu
aApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHYW1lcGFkQ29udHJvbGxlcl9oCisjZGVmaW5lIEdh
bWVwYWRDb250cm9sbGVyX2gKKworI2luY2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIKKyNpbmNsdWRl
ICJXZWJHYW1lcGFkcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkdhbWVwYWRz
OworY2xhc3MgV2ViRnJhbWU7Cit9CisKK2NsYXNzIFRlc3RTaGVsbDsKKworY2xhc3MgR2FtZXBh
ZENvbnRyb2xsZXIgOiBwdWJsaWMgQ3BwQm91bmRDbGFzcyB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgR2FtZXBhZENvbnRyb2xsZXIoVGVzdFNoZWxsKik7CisKKyAgICB2b2lkIGJpbmRUb0phdmFz
Y3JpcHQoV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBjbGFzc25h
bWUpOworICAgIHZvaWQgcmVzZXQoKTsKKworcHJpdmF0ZToKKyAgICAvLyBCb3VuZCBtZXRob2Rz
IGFuZCBwcm9wZXJ0aWVzCisgICAgdm9pZCBjb25uZWN0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0SWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0QnV0dG9uQ291bnQoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0QnV0dG9uRGF0YShjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBzZXRBeGlzQ291bnQoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0QXhpc0RhdGEoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgZmFsbGJhY2tDYWxsYmFj
ayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICBUZXN0U2hlbGwq
IG1fc2hlbGw7CisKKyAgICBXZWJLaXQ6OldlYkdhbWVwYWRzIGludGVybmFsRGF0YTsKK307CisK
KyNlbmRpZiAvLyBHYW1lcGFkQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsLmNwcAppbmRleCA1YzQ2NGE0ZmI3NjZjNTg5ODBkMmZmMzFhYzdmOTI3
NzEzYzM5ZWMzLi4xZTBhNjI2ODM0M2NkY2JiNDY5ZTM2OWRmZTI0YmQ5OWM1YmY3MTM5IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTEyNyw2ICsx
MjcsNyBAQCBUZXN0U2hlbGw6OlRlc3RTaGVsbChib29sIHRlc3RTaGVsbE1vZGUpCiAKICAgICBt
X3dlYlBlcm1pc3Npb25zID0gYWRvcHRQdHIobmV3IFdlYlBlcm1pc3Npb25zKHRoaXMpKTsKICAg
ICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKHRoaXMpKTsKKyAgICBtX2dhbWVwYWRDb250cm9sbGVyID0gYWRvcHRQdHIobmV3
IEdhbWVwYWRDb250cm9sbGVyKHRoaXMpKTsKICAgICBtX2xheW91dFRlc3RDb250cm9sbGVyID0g
YWRvcHRQdHIobmV3IExheW91dFRlc3RDb250cm9sbGVyKHRoaXMpKTsKICAgICBtX2V2ZW50U2Vu
ZGVyID0gYWRvcHRQdHIobmV3IEV2ZW50U2VuZGVyKHRoaXMpKTsKICAgICBtX3BsYWluVGV4dENv
bnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgUGxhaW5UZXh0Q29udHJvbGxlcigpKTsKQEAgLTI3MCw2
ICsyNzEsNyBAQCB2b2lkIFRlc3RTaGVsbDo6cmVzZXRUZXN0Q29udHJvbGxlcigpCiAgICAgcmVz
ZXRXZWJTZXR0aW5ncygqd2ViVmlldygpKTsKICAgICBtX3dlYlBlcm1pc3Npb25zLT5yZXNldCgp
OwogICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXItPnJlc2V0KCk7CisgICAgbV9nYW1lcGFk
Q29udHJvbGxlci0+cmVzZXQoKTsKICAgICBtX2xheW91dFRlc3RDb250cm9sbGVyLT5yZXNldCgp
OwogICAgIG1fZXZlbnRTZW5kZXItPnJlc2V0KCk7CiAgICAgbV93ZWJWaWV3SG9zdC0+cmVzZXQo
KTsKQEAgLTY3Myw2ICs2NzUsNyBAQCB2b2lkIFRlc3RTaGVsbDo6YmluZEpTT2JqZWN0c1RvV2lu
ZG93KFdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBXZWJUZXN0aW5nU3VwcG9ydDo6aW5qZWN0SW50
ZXJuYWxzT2JqZWN0KGZyYW1lKTsKICAgICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLT5iaW5k
VG9KYXZhc2NyaXB0KGZyYW1lLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlciIpKTsKKyAgICBtX2dhbWVwYWRDb250cm9sbGVyLT5iaW5kVG9KYXZhc2NyaXB0KGZy
YW1lLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJnYW1lcGFkQ29udHJvbGxlciIpKTsKICAgICBtX2xh
eW91dFRlc3RDb250cm9sbGVyLT5iaW5kVG9KYXZhc2NyaXB0KGZyYW1lLCBXZWJTdHJpbmc6OmZy
b21VVEY4KCJsYXlvdXRUZXN0Q29udHJvbGxlciIpKTsKICAgICBtX2V2ZW50U2VuZGVyLT5iaW5k
VG9KYXZhc2NyaXB0KGZyYW1lLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJldmVudFNlbmRlciIpKTsK
ICAgICBtX3BsYWluVGV4dENvbnRyb2xsZXItPmJpbmRUb0phdmFzY3JpcHQoZnJhbWUsIFdlYlN0
cmluZzo6ZnJvbVVURjgoInBsYWluVGV4dCIpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsLmgKaW5kZXggYjE5NGViMGIyMzk2MzBlMTIzZGZiNDMxMmQwY2Y3NDEzNzM4
NjIxMS4uMWY2NDhiMTVlZmI0NDAyNjFjMGU4MzgyMzZlY2YzNmUyYzNmMjI0NCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAog
I2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRTZW5k
ZXIuaCIKKyNpbmNsdWRlICJHYW1lcGFkQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkxheW91dFRl
c3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCiAjaW5j
bHVkZSAiUGxhaW5UZXh0Q29udHJvbGxlci5oIgpAQCAtOTEsNiArOTIsNyBAQCBwdWJsaWM6CiAg
ICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGxheW91dFRlc3RDb250cm9sbGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXlvdXRUZXN0Q29udHJvbGxlci5nZXQoKTsgfQogICAgIEV2ZW50U2VuZGVyKiBl
dmVudFNlbmRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRTZW5kZXIuZ2V0KCk7IH0KICAgICBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlciogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKSBjb25zdCB7
IHJldHVybiBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmdldCgpOyB9CisgICAgR2FtZXBhZENv
bnRyb2xsZXIqIGdhbWVwYWRDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9nYW1lcGFkQ29u
dHJvbGxlci5nZXQoKTsgfQogICAgIE5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9u
UHJlc2VudGVyKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25QcmVzZW50ZXIuZ2V0KCk7
IH0KICAgICBUZXN0RXZlbnRQcmludGVyKiBwcmludGVyKCkgY29uc3QgeyByZXR1cm4gbV9wcmlu
dGVyLmdldCgpOyB9CiAKQEAgLTIwNSw2ICsyMDcsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxE
UlREZXZUb29sc0FnZW50PiBtX2RydERldlRvb2xzQWdlbnQ7CiAgICAgT3duUHRyPERSVERldlRv
b2xzQ2xpZW50PiBtX2RydERldlRvb2xzQ2xpZW50OwogICAgIE93blB0cjxBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcj4gbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsKKyAgICBPd25QdHI8R2FtZXBh
ZENvbnRyb2xsZXI+IG1fZ2FtZXBhZENvbnRyb2xsZXI7CiAgICAgT3duUHRyPEV2ZW50U2VuZGVy
PiBtX2V2ZW50U2VuZGVyOwogICAgIE93blB0cjxMYXlvdXRUZXN0Q29udHJvbGxlcj4gbV9sYXlv
dXRUZXN0Q29udHJvbGxlcjsKICAgICBPd25QdHI8UGxhaW5UZXh0Q29udHJvbGxlcj4gbV9wbGFp
blRleHRDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDllODZjMzRkYmU4YjVjNTM2NmVlYmY0ZTQ5YjI0ZmQ5
MTIxZTNlNTUuLjdiYTdlNjRhYTAyOThkMTJhOTgwM2ViY2JhMzQ0YTc2ZTY3MzIyYjggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMS0yMiAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgQWRkaW5nIGdhbWVwYWQgc3VwcG9ydAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0NTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NjcmlwdC10ZXN0
cy9wcm90b3R5cGUtaW5oZXJpdGFuY2UuanM6IEV4Y2x1ZGUKKyAgICAgICAgZ2FtZXBhZENvbnRy
b2xsZXIgZnJvbSBlbnVtZXJhdGlvbi4KKyAgICAgICAgKiBnYW1lcGFkL2dhbWVwYWQtcG9sbGlu
Zy1hY2Nlc3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBnYW1lcGFkL2dhbWVwYWQt
cG9sbGluZy1hY2Nlc3MuaHRtbDogQWRkZWQuCisKIDIwMTEtMTEtMjIgIEFkYW0gS2xlaW4gIDxh
ZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgc3ZnL3pvb20vcGFnZS96b29tLXN2Zy10aHJv
dWdoLW9iamVjdC13aXRoLSoueGh0bWwgYXJlIGZsYWt5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zY3JpcHQtdGVzdHMvcHJvdG90eXBlLWluaGVyaXRhbmNlLmpzIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL3Byb3RvdHlwZS1pbmhlcml0YW5jZS5qcwppbmRl
eCBjOTRkNjg1NThiMzFkOGJiYmU1ZDRhMGQxOTAwZmRiMWFmODNhYTgyLi5kZmRmZDhjYWMxZWE1
YTFiYzU3M2ZiZjJiOThkNTUwYzZiNGMyMmJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zY3JpcHQtdGVzdHMvcHJvdG90eXBlLWluaGVyaXRhbmNlLmpzCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9wcm90b3R5cGUtaW5oZXJpdGFuY2UuanMKQEAgLTEy
LDYgKzEyLDcgQEAgdmFyIHNraXBwZWRQcm9wZXJ0aWVzID0gWwogICAgICJvYmpDQ29udHJvbGxl
ciIsICJ0ZXh0SW5wdXRDb250cm9sbGVyIiwgIm5hdmlnYXRpb25Db250cm9sbGVyIiwKICAgICAi
ZXZlbnRTZW5kZXIiLCAib2JqQ1BsdWdpbiIsICJvYmpDUGx1Z2luRnVuY3Rpb24iLAogICAgICJh
cHBsZVNjcmlwdENvbnRyb2xsZXIiLCAicGxhaW5UZXh0IiwgImFjY2Vzc2liaWxpdHlDb250cm9s
bGVyIiwKKyAgICAiZ2FtZXBhZENvbnRyb2xsZXIiLAogICAgICJpbnRlcm5hbHMiLAogICAgIC8v
IElnbm9yZSB0aGVzZSBwcm9wZXJ0aWVzIGJlY2F1c2UgdGhleSBkbyBub3QgZXhpc3QgaW4gYWxs
IGltcGxlbWVudGF0aW9ucy4gVGhleSB3aWxsIGJlIHRlc3RlZCBzZXBhcmF0ZWx5CiAgICAgIndl
YmtpdE5vdGlmaWNhdGlvbnMiLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1l
cGFkLXBvbGxpbmctYWNjZXNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2dhbWVwYWQvZ2Ft
ZXBhZC1wb2xsaW5nLWFjY2Vzcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ4NGZkMWMyMWMx
NGMwOGVmM2NkYzM5ZDVlODc3MThhOTY1MmI1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2dhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxOSBAQAorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHMubGVuZ3RoIGlzIDQKK1BBU1Mg
bmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdIGlzIHVuZGVmaW5lZC4KK1BBU1MgbmF2aWdhdG9y
LndlYmtpdEdhbWVwYWRzWzFdIGlzIHVuZGVmaW5lZC4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdh
bWVwYWRzWzJdIGlzIHVuZGVmaW5lZC4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzNd
IGlzIHVuZGVmaW5lZC4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdIGlzIG5vbi1u
dWxsLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0gaXMgdW5kZWZpbmVkLgorUEFT
UyBuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uaWQgaXMgJ01vY2tTdGljayAzMDAwJworUEFT
UyBuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uYnV0dG9ucy5sZW5ndGggaXMgMgorUEFTUyBu
YXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uYXhlcy5sZW5ndGggaXMgMgorUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2FtZXBhZHNbMF0uYnV0dG9uc1swXSBpcyAxLjAKK1BBU1MgbmF2aWdhdG9yLndl
YmtpdEdhbWVwYWRzWzBdLmJ1dHRvbnNbMV0gaXMgMC4wCitQQVNTIG5hdmlnYXRvci53ZWJraXRH
YW1lcGFkc1swXS5heGVzLmxlbmd0aCBpcyAyCitQQVNTIG5hdmlnYXRvci53ZWJraXRHYW1lcGFk
c1swXS5heGVzWzBdIGlzIDAuNQorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uYXhl
c1sxXSBpcyAtMS4wCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKK1R5cGljYWwgcG9sbGluZyBhY2Nlc3MgdG8gZ2FtZXBhZHMgY29udGVudHMuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MuaHRtbCBi
L0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1Nzc1ZmNkZWNlMjkyMGI2OWViMGJiMTViOWQ5NTMwNThmZWY5MTkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MuaHRtbApA
QCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cisg
ICAgaWYgKHdpbmRvdy5nYW1lcGFkQ29udHJvbGxlcikKKyAgICB7CisgICAgICAgIC8vIHN0YXJ0
IGFsbCBkaXNjb25uZWN0ZWQKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIuZGlzY29ubmVjdCgw
KTsKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIuZGlzY29ubmVjdCgxKTsKKyAgICAgICAgZ2Ft
ZXBhZENvbnRyb2xsZXIuZGlzY29ubmVjdCgyKTsKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIu
ZGlzY29ubmVjdCgzKTsKKyAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFk
cy5sZW5ndGgiLCAiNCIpOworICAgICAgICBzaG91bGRCZVVuZGVmaW5lZCgibmF2aWdhdG9yLndl
YmtpdEdhbWVwYWRzWzBdIik7CisgICAgICAgIHNob3VsZEJlVW5kZWZpbmVkKCJuYXZpZ2F0b3Iu
d2Via2l0R2FtZXBhZHNbMV0iKTsKKyAgICAgICAgc2hvdWxkQmVVbmRlZmluZWQoIm5hdmlnYXRv
ci53ZWJraXRHYW1lcGFkc1syXSIpOworICAgICAgICBzaG91bGRCZVVuZGVmaW5lZCgibmF2aWdh
dG9yLndlYmtpdEdhbWVwYWRzWzNdIik7CisKKyAgICAgICAgLy8gY29ubmVjdCBhbmQgZGlzY29u
bmVjdAorICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5jb25uZWN0KDApOworICAgICAgICBzaG91
bGRCZU5vbk51bGwoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXSIpOworICAgICAgICBnYW1l
cGFkQ29udHJvbGxlci5kaXNjb25uZWN0KDApOworICAgICAgICBzaG91bGRCZVVuZGVmaW5lZCgi
bmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdIik7CisKKyAgICAgICAgLy8gY29ubmVjdCBhZ2Fp
biwgYW5kIGNoZWNrIHN0YW5kYXJkIGFjY2VzcworICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5j
b25uZWN0KDApOworICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5zZXRJZCgwLCAiTW9ja1N0aWNr
IDMwMDAiKTsKKyAgICAgICAgZ2FtZXBhZENvbnRyb2xsZXIuc2V0QnV0dG9uQ291bnQoMCwgMik7
CisgICAgICAgIGdhbWVwYWRDb250cm9sbGVyLnNldEF4aXNDb3VudCgwLCAyKTsKKyAgICAgICAg
Z2FtZXBhZENvbnRyb2xsZXIuc2V0QnV0dG9uRGF0YSgwLCAwLCAxKTsKKyAgICAgICAgZ2FtZXBh
ZENvbnRyb2xsZXIuc2V0QnV0dG9uRGF0YSgwLCAxLCAwKTsKKyAgICAgICAgZ2FtZXBhZENvbnRy
b2xsZXIuc2V0QXhpc0RhdGEoMCwgMCwgLjUpOworICAgICAgICBnYW1lcGFkQ29udHJvbGxlci5z
ZXRBeGlzRGF0YSgwLCAxLCAtMS4wKTsKKyAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJr
aXRHYW1lcGFkc1swXS5pZCIsICInTW9ja1N0aWNrIDMwMDAnIik7CisgICAgICAgIHNob3VsZEJl
KCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uYnV0dG9ucy5sZW5ndGgiLCAiMiIpOworICAg
ICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmF4ZXMubGVuZ3RoIiwg
IjIiKTsKKyAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXS5idXR0
b25zWzBdIiwgIjEuMCIpOworICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdEdhbWVw
YWRzWzBdLmJ1dHRvbnNbMV0iLCAiMC4wIik7CisgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iu
d2Via2l0R2FtZXBhZHNbMF0uYXhlcy5sZW5ndGgiLCAiMiIpOworICAgICAgICBzaG91bGRCZSgi
bmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzWzBdLmF4ZXNbMF0iLCAiMC41Iik7CisgICAgICAgIHNo
b3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHNbMF0uYXhlc1sxXSIsICItMS4wIik7Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGNvbnNvbGUubG9nKCJGQUlMOiBubyBnYW1l
cGFkQ29udHJvbGxlciBhdmFpbGFibGUuIikKKyAgICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPHA+VHlw
aWNhbCBwb2xsaW5nIGFjY2VzcyB0byBnYW1lcGFkcyBjb250ZW50cy48L3A+Cis8L2JvZHk+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>