<?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>70452</bug_id>
          
          <creation_ts>2011-10-19 16:44:04 -0700</creation_ts>
          <short_desc>Implement storage and retrieval of TextTrackCues during video playback.</short_desc>
          <delta_ts>2011-11-14 06:39:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>72269</dependson>
          <blocked>62883</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Anna Cavender">annacc</reporter>
          <assigned_to name="Anna Cavender">annacc</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ojan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>487129</commentid>
    <comment_count>0</comment_count>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-10-19 16:44:04 -0700</bug_when>
    <thetext>TextTrackCueIndex is used as a fast look-up for text track cues (from any text track) during video playback.  TextTrackCueSet is used as a structure for common operations on sets of text track cues.  Both can point to existing text track cues but neither owns or modifies them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488778</commentid>
    <comment_count>1</comment_count>
      <attachid>112047</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-10-21 17:19:15 -0700</bug_when>
    <thetext>Created attachment 112047
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489049</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-10-23 12:10:55 -0700</bug_when>
    <thetext>Can you explain the algorithm you use for fast lookup.  On the base of it, I would assume an IntervalMap to be a good data structure for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489050</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-10-23 12:12:01 -0700</bug_when>
    <thetext>Also, if this is an optimization, can you please show the speedups through some sort of perf test (it doesn&apos;t have to be checked in, you just need to show that this is speeding something up).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489166</commentid>
    <comment_count>4</comment_count>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-10-23 22:13:33 -0700</bug_when>
    <thetext>&apos;fast&apos; is a relative term, so I probably should not have used it here as there is no current functionality to compare to (there are no demonstrable speedups because this is new).

The intent of TextTrackCueIndex is a handy storage mechanism for TextTrackCues that may come from multiple text tracks to be used in HTMLMediaElement (or any other player).  As cues are parsed or otherwise discovered, they will be stored in a TextTrackCueIndex in order of startTime/endTime so that as playback progresses, the cues that should be currently visible can be easily looked up.  The alternative would be for HTMLMediaElement to iterate through it&apos;s list of tracks, finding cues with timestamps in the range of the current playback position, and then sort them in text track cue order before displaying them.  TextTrackCueIndex and TextTrackCueSet make this process easier and likely more efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493058</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-10-30 12:15:34 -0700</bug_when>
    <thetext>Without any performance data, I don&apos;t think it makes sense to complicate the code with this.  I also think an IntervalMap-type data structure would probably be a better fix for this type of optimization, should it be shown to be needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493312</commentid>
    <comment_count>6</comment_count>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-10-31 07:42:47 -0700</bug_when>
    <thetext>Sam, are you suggesting that TextTrackCueIndex and TextTrackCueSet not be included at all and HTMLMediaElement would be responsible for managing cues visible at runtime?

Can you tell me more (and/or add a link) about IntervalMap.  I don&apos;t see this as a WebKit data structure.

Thanks for the feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499085</commentid>
    <comment_count>7</comment_count>
      <attachid>114304</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-11-09 09:50:24 -0800</bug_when>
    <thetext>Created attachment 114304
uses PODIntervalTree as data structure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499087</commentid>
    <comment_count>8</comment_count>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-11-09 09:52:17 -0800</bug_when>
    <thetext>This patch overlaps a bit with this one: https://bugs.webkit.org/show_bug.cgi?id=71123 so we&apos;ll need to take turns, but I thought I&apos;d get the review process started.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500490</commentid>
    <comment_count>9</comment_count>
      <attachid>114304</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-11-10 20:51:50 -0800</bug_when>
    <thetext>Comment on attachment 114304
uses PODIntervalTree as data structure

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

&gt; Source/WebCore/html/HTMLMediaElement.h:523
&gt; +    typedef PODInterval&lt;float, TextTrackCue*&gt; CueInterval;
&gt; +    PODIntervalTree&lt;float, TextTrackCue*&gt; m_cueTree;
&gt; +    Vector&lt;CueInterval&gt; m_currentlyVisibleCues;

This might read slightly cleaner if you wrote it as:

typedef PODIntervalTree &lt;float, TextTrackCue*&gt; CueIntervalTree;
CueIntervalTree m_cueTree;
Vectore&lt;CueIntervalTree::IntervalType&gt; m_currentlyVisibleCues;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500798</commentid>
    <comment_count>10</comment_count>
      <attachid>114304</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-11 08:33:45 -0800</bug_when>
    <thetext>Comment on attachment 114304
uses PODIntervalTree as data structure

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

Every non-DOM object that is an EventTarget needs code (for JSC at lease, I don&apos;t know about V8) to make sure that the wrapper isn&apos;t collected during event dispatch or while the parent/owner object is reachable. For example, see JSTextTrackListOwner::isReachableFromOpaqueRoots and the tracklist-is-reachable.html test added in https://bugs.webkit.org/show_bug.cgi?id=71123. 

I think this is fine to do in a follow up patch, but please file a bug for the fix (and I am happy to make the changes for JSC).

&gt; Source/WebCore/html/HTMLMediaElement.cpp:852
&gt; +void HTMLMediaElement::updateActiveTextTrackCues()
&gt; +{
&gt; +    float movieTime = currentTime();
&gt; +

Nit: it would be slightly more efficient if this function took the current time because one of the places it is called will have just fetched it.

&gt; Source/WebCore/html/HTMLMediaElement.h:522
&gt; +    typedef PODInterval&lt;float, TextTrackCue*&gt; CueInterval;
&gt; +    PODIntervalTree&lt;float, TextTrackCue*&gt; m_cueTree;

TextTrackCue startTime and endTime times both doubles, why use float ?

&gt; Source/WebCore/html/TextTrackCue.cpp:154
&gt; +    if (active)
&gt; +        dispatchEvent(Event::create(eventNames().enterEvent, false, false), ec);
&gt; +    else
&gt; +        dispatchEvent(Event::create(eventNames().exitEvent, false, false), ec);
&gt; +

This is missing a number of the steps listed in the spec. All of the cue events for a time should be put into a queue, sorted and filtered, and then fired asynchronously.

Because the events have to fire in order across all of the tracks/cues, maybe it make sense for the media element to own and maintain a queue of cue events?

&gt; Source/WebCore/html/TextTrackCue.cpp:156
&gt; +    if (m_track)
&gt; +        m_track-&gt;fireCueChangeEvent();

The &apos;cuechange&apos; event must fire on both the TextTrack and &lt;track&gt; : 

    ... queue a task to fire a simple event named cuechange at the TextTrack object, and, if the text track has a corresponding track element, to then fire a simple event named cuechange at the track element as well ...

&gt; LayoutTests/media/track/track-cues-cuechange.html:25
&gt; +        function cueChanged()
&gt; +        {
&gt; +            var cues = testTrack.track.cues;
&gt; +            
&gt; +            var currentCue = cues[Math.floor(cueChangeCount/2)];
&gt; +

Nit: I think it would be helpful to log &quot;EVENT(cuechange)&quot; here so the results make it obvious these checks happen in response to the event.

&gt; LayoutTests/media/track/track-cues-cuechange.html:49
&gt; +                testTrack = document.getElementById(&quot;testTrack&quot;);
&gt; +                testExpected(&quot;testTrack.track.cues.length&quot;, 3);
&gt; +                testTrack.track.addEventListener(&apos;cuechange&apos;, cueChanged);

This should also verify that &apos;cuechange&apos; is fired on the &lt;track&gt;.

&gt; LayoutTests/media/track/track-cues-enter-exit.html:10
&gt; +        &lt;p&gt;Tests that TextTrack&apos;s cues are indexed and updated within 500ms during video playback. Test uses the enter and exits events on TextTrackCue.&lt;/p&gt;

How did you decide on 500ms?

&gt; LayoutTests/media/track/track-cues-enter-exit.html:22
&gt; +        function cueEntered()
&gt; +        {
&gt; +            var currentCue = testTrack.track.cues[cueCount];

Nit: I think it would be helpful to log &quot;EVENT(enter)&quot; here so the results make it obvious these checks happen in response to the event.

&gt; LayoutTests/media/track/track-cues-enter-exit.html:33
&gt; +        function cueExited()
&gt; +        {
&gt; +            var currentCue = testTrack.track.cues[cueCount];

Logging the event name would be good here as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501055</commentid>
    <comment_count>11</comment_count>
      <attachid>114304</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-11-11 13:43:13 -0800</bug_when>
    <thetext>Comment on attachment 114304
uses PODIntervalTree as data structure

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

Thanks Eric and Sam.  I&apos;ll look into the changes needed for non-DOM objects to extend EventTarget as a follow up.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:852
&gt;&gt; +
&gt; 
&gt; Nit: it would be slightly more efficient if this function took the current time because one of the places it is called will have just fetched it.

Done.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.h:522
&gt;&gt; +    PODIntervalTree&lt;float, TextTrackCue*&gt; m_cueTree;
&gt; 
&gt; TextTrackCue startTime and endTime times both doubles, why use float ?

Oops, thanks.  Fixed

&gt;&gt; Source/WebCore/html/HTMLMediaElement.h:523
&gt;&gt; +    Vector&lt;CueInterval&gt; m_currentlyVisibleCues;
&gt; 
&gt; This might read slightly cleaner if you wrote it as:
&gt; 
&gt; typedef PODIntervalTree &lt;float, TextTrackCue*&gt; CueIntervalTree;
&gt; CueIntervalTree m_cueTree;
&gt; Vectore&lt;CueIntervalTree::IntervalType&gt; m_currentlyVisibleCues;

Done.

&gt;&gt; Source/WebCore/html/TextTrackCue.cpp:154
&gt;&gt; +
&gt; 
&gt; This is missing a number of the steps listed in the spec. All of the cue events for a time should be put into a queue, sorted and filtered, and then fired asynchronously.
&gt; 
&gt; Because the events have to fire in order across all of the tracks/cues, maybe it make sense for the media element to own and maintain a queue of cue events?

Sounds like a great idea for a follow up patch.  I&apos;ll file a bug

&gt;&gt; Source/WebCore/html/TextTrackCue.cpp:156
&gt;&gt; +        m_track-&gt;fireCueChangeEvent();
&gt; 
&gt; The &apos;cuechange&apos; event must fire on both the TextTrack and &lt;track&gt; : 
&gt; 
&gt;     ... queue a task to fire a simple event named cuechange at the TextTrack object, and, if the text track has a corresponding track element, to then fire a simple event named cuechange at the track element as well ...

Done.

&gt;&gt; LayoutTests/media/track/track-cues-cuechange.html:25
&gt;&gt; +
&gt; 
&gt; Nit: I think it would be helpful to log &quot;EVENT(cuechange)&quot; here so the results make it obvious these checks happen in response to the event.

Done.

&gt;&gt; LayoutTests/media/track/track-cues-enter-exit.html:10
&gt;&gt; +        &lt;p&gt;Tests that TextTrack&apos;s cues are indexed and updated within 500ms during video playback. Test uses the enter and exits events on TextTrackCue.&lt;/p&gt;
&gt; 
&gt; How did you decide on 500ms?

We fire time updates every 250ms, so I figured every cue should be encountered and appropriate events should be fired within 500ms.  I&apos;m open to suggestions on the best way to check for this.

&gt;&gt; LayoutTests/media/track/track-cues-enter-exit.html:22
&gt;&gt; +            var currentCue = testTrack.track.cues[cueCount];
&gt; 
&gt; Nit: I think it would be helpful to log &quot;EVENT(enter)&quot; here so the results make it obvious these checks happen in response to the event.

Done.

&gt;&gt; LayoutTests/media/track/track-cues-enter-exit.html:33
&gt;&gt; +            var currentCue = testTrack.track.cues[cueCount];
&gt; 
&gt; Logging the event name would be good here as well.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501056</commentid>
    <comment_count>12</comment_count>
      <attachid>114764</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-11-11 13:43:35 -0800</bug_when>
    <thetext>Created attachment 114764
addressing reviewer comments and updating to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501058</commentid>
    <comment_count>13</comment_count>
      <attachid>114764</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-11-11 13:45:49 -0800</bug_when>
    <thetext>Comment on attachment 114764
addressing reviewer comments and updating to ToT

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:-507
&gt; -

I believe this is no longer needed here because it is covered by trackWasAdded().  eric.carlson, please check my logic here as you recently added this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501220</commentid>
    <comment_count>14</comment_count>
      <attachid>114764</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-11 16:36:09 -0800</bug_when>
    <thetext>Comment on attachment 114764
addressing reviewer comments and updating to ToT

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

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:-507

&gt; 
&gt; I believe this is no longer needed here because it is covered by trackWasAdded().  eric.carlson, please check my logic here as you recently added this.

There is a problem, but I think it is that HTMLMediaElement::addTextTrack should call scheduleLoad(TextTrackResource) instead of configureTextTracks() because we need to start the load asynchronously.


&gt; Source/WebCore/html/HTMLMediaElement.cpp:1965
&gt; +    float movieTime = currentTime();
&gt; +    updateActiveTextTrackCues(movieTime);

Nit: the local variable isn&apos;t necessary.


&gt; Source/WebCore/html/HTMLTrackElement.cpp:157
&gt; +        m_track = LoadableTextTrack::create(scriptExecutionContext(), this, kind(), label(), srclang(), isDefault());

You shouldn&apos;t need to pass a ScriptExecutionContext, the track can use the Document associated with the track element for the ScriptExecutionContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501223</commentid>
    <comment_count>15</comment_count>
      <attachid>114799</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-11-11 16:40:15 -0800</bug_when>
    <thetext>Created attachment 114799
using scheduleLoad(TextTrackResource) instead of configureTextTracks()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501232</commentid>
    <comment_count>16</comment_count>
      <attachid>114801</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-11-11 16:59:28 -0800</bug_when>
    <thetext>Created attachment 114801
addressing Eric&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501331</commentid>
    <comment_count>17</comment_count>
      <attachid>114801</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 19:37:57 -0800</bug_when>
    <thetext>Comment on attachment 114801
addressing Eric&apos;s comments

Clearing flags on attachment: 114801

Committed r100064: &lt;http://trac.webkit.org/changeset/100064&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501332</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 19:38:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112047</attachid>
            <date>2011-10-21 17:19:15 -0700</date>
            <delta_ts>2011-11-09 09:50:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70452-20111021171914.patch</filename>
            <type>text/plain</type>
            <size>12164</size>
            <attacher name="Anna Cavender">annacc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgxNjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNGVjN2FhYTQxMmYxN2I4
MDhiOGEwYWUwNWYxMzc3YzA3YThlN2M4Li5jM2QzM2FhYTkyN2M3NWZmMjRjN2U3MjY2NzEzYzMy
ZGE0YTY3YzEzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMTAtMjEgIEFubmEg
Q2F2ZW5kZXIgIDxhbm5hY2NAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBUZXh0
VHJhY2tDdWVJbmRleCBhbmQgVGV4dFRyYWNrQ3VlU2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDQ1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtZHVy
aW5nLXBsYXliYWNrLmh0bWwKKworICAgICAgICAqIGh0bWwvVGV4dFRyYWNrQ3VlSW5kZXguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlU2V0OjpkaWZmZXJlbmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZVNldDo6dW5pb25TZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrQ3VlU2V0OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3Vl
U2V0Ojpjb250YWlucyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVTZXQ6OnJlbW92
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVTZXQ6OmNsZWFyKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0N1ZVNldDo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2tDdWVTZXQ6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlSW5k
ZXg6OmFkZEN1ZXNUb0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUluZGV4
OjpyZW1vdmVDdWVzRnJvbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUlu
ZGV4Ojp2aXNpYmxlQ3Vlc0F0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVJ
bmRleDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUluZGV4OjpyZW1vdmUp
OgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNrQ3VlSW5kZXguaDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0N1ZVNldDo6b3BlcmF0b3JbXSk6CisKIDIwMTEtMTAtMjEgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBJbnRyb2R1Y2UgRXZlbnQ6Omhhc0ludGVy
ZmFjZSB0byBtYWtlIHVzZXMgb2YgaW50ZXJmYWNlTmFtZSBtb3JlIHJlYWRhYmxlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUluZGV4LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlSW5kZXguY3BwCmluZGV4IDI2Y2M1MDUyYmFlYjU2MTNk
NTRiMTA3MWY4M2NmYzMxNDNhMjg4YjIuLmFlM2RiZGU0ODNiZDhhNjgwOWVmODk1MmY4ODQ0MmYz
ZDY3MjJmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlSW5k
ZXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlSW5kZXguY3BwCkBA
IC0zNCw3MCArMzQsMTE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVGV4dFRyYWNrQ3Vl
U2V0IFRleHRUcmFja0N1ZVNldDo6ZGlmZmVyZW5jZShjb25zdCBUZXh0VHJhY2tDdWVTZXQmKSBj
b25zdAorVGV4dFRyYWNrQ3VlU2V0IFRleHRUcmFja0N1ZVNldDo6ZGlmZmVyZW5jZShjb25zdCBU
ZXh0VHJhY2tDdWVTZXQmIG90aGVyKSBjb25zdAogewotICAgIC8vIEZJWE1FKDYyODgzKTogSW1w
bGVtZW50LgotICAgIHJldHVybiBUZXh0VHJhY2tDdWVTZXQoKTsKKyAgICBUZXh0VHJhY2tDdWVT
ZXQgbmV3U2V0OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3RoZXIubV9zZXQuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgVGV4dFRyYWNrQ3VlKiBjdWUgPSBvdGhlci5tX3NldFtpXTsKKyAg
ICAgICAgaWYgKCFtX3NldC5jb250YWlucyhjdWUpKQorICAgICAgICAgICAgbmV3U2V0LmFkZCgq
Y3VlKTsKKyAgICB9CisgICAgcmV0dXJuIG5ld1NldDsKIH0KIAotVGV4dFRyYWNrQ3VlU2V0IFRl
eHRUcmFja0N1ZVNldDo6dW5pb25TZXQoY29uc3QgVGV4dFRyYWNrQ3VlU2V0JikgY29uc3QKK1Rl
eHRUcmFja0N1ZVNldCBUZXh0VHJhY2tDdWVTZXQ6OnVuaW9uU2V0KGNvbnN0IFRleHRUcmFja0N1
ZVNldCYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCi0g
ICAgcmV0dXJuIFRleHRUcmFja0N1ZVNldCgpOworICAgIFRleHRUcmFja0N1ZVNldCBuZXdTZXQ7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvdGhlci5tX3NldC5zaXplKCk7ICsraSkKKyAg
ICAgICAgbmV3U2V0LmFkZCgqKG90aGVyLm1fc2V0W2ldKSk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX3NldC5zaXplKCk7ICsraSkKKyAgICAgICAgbmV3U2V0LmFkZCgqKG1fc2V0W2ld
KSk7CisgICAgcmV0dXJuIG5ld1NldDsKIH0KIAotdm9pZCBUZXh0VHJhY2tDdWVTZXQ6OmFkZChj
b25zdCBUZXh0VHJhY2tDdWUmKQordm9pZCBUZXh0VHJhY2tDdWVTZXQ6OmFkZChjb25zdCBUZXh0
VHJhY2tDdWUmIGN1ZSkKIHsKLSAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KKyAgICBt
X3NldC5hcHBlbmQoY29uc3RfY2FzdDxUZXh0VHJhY2tDdWUqPigmY3VlKSk7CiB9CiAKLWJvb2wg
VGV4dFRyYWNrQ3VlU2V0Ojpjb250YWlucyhjb25zdCBUZXh0VHJhY2tDdWUmKSBjb25zdAorYm9v
bCBUZXh0VHJhY2tDdWVTZXQ6OmNvbnRhaW5zKGNvbnN0IFRleHRUcmFja0N1ZSYgY3VlKSBjb25z
dAogewotICAgIC8vIEZJWE1FKDYyODgzKTogSW1wbGVtZW50LgotICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gbV9zZXQuY29udGFpbnMoJmN1ZSk7CiB9CiAKLXZvaWQgVGV4dFRyYWNrQ3Vl
U2V0OjpyZW1vdmUoY29uc3QgVGV4dFRyYWNrQ3VlJikKK3ZvaWQgVGV4dFRyYWNrQ3VlU2V0Ojpy
ZW1vdmUoY29uc3QgVGV4dFRyYWNrQ3VlJiBjdWUpCiB7Ci0gICAgLy8gRklYTUUoNjI4ODMpOiBJ
bXBsZW1lbnQuCisgICAgc2l6ZV90IGluZGV4ID0gbV9zZXQuZmluZCgmY3VlKTsKKyAgICBpZiAo
aW5kZXggIT0gbm90Rm91bmQpCisgICAgICAgIG1fc2V0LnJlbW92ZShpbmRleCk7Cit9CisKK3Zv
aWQgVGV4dFRyYWNrQ3VlU2V0OjpjbGVhcigpCit7CisgICAgbV9zZXQuY2xlYXIoKTsKIH0KIAog
Ym9vbCBUZXh0VHJhY2tDdWVTZXQ6OmlzRW1wdHkoKSBjb25zdAogewotICAgIC8vIEZJWE1FKDYy
ODgzKTogSW1wbGVtZW50LgotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9zZXQuaXNF
bXB0eSgpOwogfQogCiBpbnQgVGV4dFRyYWNrQ3VlU2V0OjpzaXplKCkgY29uc3QKIHsKLSAgICAv
LyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9z
ZXQuc2l6ZSgpOworfQorCit2b2lkIFRleHRUcmFja0N1ZUluZGV4OjphZGRDdWVzVG9JbmRleChj
b25zdCBUZXh0VHJhY2tDdWVMaXN0KiBjdWVMaXN0KQoreworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY3VlTGlzdC0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgYWRkKGN1ZUxpc3QtPml0ZW0o
aSkpOwogfQogCi12b2lkIFRleHRUcmFja0N1ZUluZGV4OjpmZXRjaE5ld0N1ZXNGcm9tTG9hZGVy
KFRleHRUcmFja0xvYWRlciopCit2b2lkIFRleHRUcmFja0N1ZUluZGV4OjpyZW1vdmVDdWVzRnJv
bUluZGV4KGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqIGN1ZUxpc3QpCiB7Ci0gICAgLy8gRklYTUUo
NjI4ODMpOiBJbXBsZW1lbnQuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjdWVMaXN0LT5s
ZW5ndGgoKTsgKytpKQorICAgICAgICByZW1vdmUoY3VlTGlzdC0+aXRlbShpKSk7CiB9CiAKLXZv
aWQgVGV4dFRyYWNrQ3VlSW5kZXg6OnJlbW92ZUN1ZXNGcm9tSW5kZXgoY29uc3QgVGV4dFRyYWNr
Q3VlTGlzdCopCitUZXh0VHJhY2tDdWVTZXQgVGV4dFRyYWNrQ3VlSW5kZXg6OnZpc2libGVDdWVz
QXRUaW1lKGRvdWJsZSB0aW1lKSBjb25zdAogewotICAgIC8vIEZJWE1FKDYyODgzKTogSW1wbGVt
ZW50LgorICAgIFRleHRUcmFja0N1ZVNldCB2aXNpYmxlOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9jdWVzQnlTdGFydFRpbWUuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgVGV4dFRyYWNr
Q3VlKiBjdWUgPSBtX2N1ZXNCeVN0YXJ0VGltZVtpXTsKKyAgICAgICAgaWYgKGN1ZS0+dHJhY2so
KS0+bW9kZSgpID09IFRleHRUcmFjazo6U2hvd2luZykgeworICAgICAgICAgICAgaWYgKGN1ZS0+
c3RhcnRUaW1lKCkgPD0gdGltZSkgeworICAgICAgICAgICAgICAgIGlmIChjdWUtPmVuZFRpbWUo
KSA+IHRpbWUpCisgICAgICAgICAgICAgICAgICAgIHZpc2libGUuYWRkKCpjdWUpOworICAgICAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIHZpc2libGU7CiB9CiAKLVRleHRUcmFja0N1ZVNldCBUZXh0VHJhY2tDdWVJbmRl
eDo6dmlzaWJsZUN1ZXNBdFRpbWUoZG91YmxlKSBjb25zdAordm9pZCBUZXh0VHJhY2tDdWVJbmRl
eDo6YWRkKFRleHRUcmFja0N1ZSogY3VlKQogewotICAgIC8vIEZJWE1FKDYyODU1KTogSW1wbGVt
ZW50LgotICAgIHJldHVybiBUZXh0VHJhY2tDdWVTZXQoKTsKKyAgICBhZGQoY3VlLCAwLCBtX2N1
ZXNCeVN0YXJ0VGltZS5zaXplKCkpOwogfQogCi12b2lkIFRleHRUcmFja0N1ZUluZGV4OjphZGQo
VGV4dFRyYWNrQ3VlKikKK3ZvaWQgVGV4dFRyYWNrQ3VlSW5kZXg6OmFkZChUZXh0VHJhY2tDdWUq
IGN1ZSwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgZW5kKQogewotICAgIC8vIEZJWE1FKDYyODkwKTog
SW1wbGVtZW50LgorICAgIEFTU0VSVChzdGFydCA+PSAwICYmIHN0YXJ0IDw9IG1fY3Vlc0J5U3Rh
cnRUaW1lLnNpemUoKSk7CisgICAgQVNTRVJUKGVuZCA+PSAwICYmIGVuZCA8PSBtX2N1ZXNCeVN0
YXJ0VGltZS5zaXplKCkpOworIAorICAgIGlmIChzdGFydCA9PSBlbmQpIHsKKyAgICAgICBtX2N1
ZXNCeVN0YXJ0VGltZS5pbnNlcnQoc3RhcnQsIGN1ZSk7CisgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHNpemVfdCBpbmRleCA9IChzdGFydCArIGVuZCkgLyAyOworICAgIGlmIChjdWUtPnN0
YXJ0VGltZSgpIDwgbV9jdWVzQnlTdGFydFRpbWVbaW5kZXhdLT5zdGFydFRpbWUoKQorICAgICAg
ICB8fCAoY3VlLT5zdGFydFRpbWUoKSA9PSBtX2N1ZXNCeVN0YXJ0VGltZVtpbmRleF0tPnN0YXJ0
VGltZSgpCisgICAgICAgICYmIGN1ZS0+ZW5kVGltZSgpIDwgbV9jdWVzQnlTdGFydFRpbWVbaW5k
ZXhdLT5lbmRUaW1lKCkpKSB7CisgICAgICAgIGFkZChjdWUsIHN0YXJ0LCBpbmRleCk7CisgICAg
fSBlbHNlCisgICAgICAgIGFkZChjdWUsIGluZGV4ICsgMSwgZW5kKTsKIH0KIAotdm9pZCBUZXh0
VHJhY2tDdWVJbmRleDo6cmVtb3ZlKFRleHRUcmFja0N1ZSopCit2b2lkIFRleHRUcmFja0N1ZUlu
ZGV4OjpyZW1vdmUoVGV4dFRyYWNrQ3VlKiBjdWUpCiB7Ci0gICAgLy8gRklYTUUoNjI4OTApOiBJ
bXBsZW1lbnQuCisgICAgc2l6ZV90IGluZGV4ID0gbV9jdWVzQnlTdGFydFRpbWUuZmluZChjdWUp
OworICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKKyAgICAgICAgbV9jdWVzQnlTdGFydFRpbWUu
cmVtb3ZlKGluZGV4KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVJbmRleC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9UZXh0VHJhY2tDdWVJbmRleC5oCmluZGV4IDllZDBiMjIwYTUwNTIzODI2Mjc3OGUzZDUx
MjQ3NmFjODA2MDc2MDEuLmQ1NzVkMDdkMzFjYmJjYTg0YzNjZmE4Y2ViMGFhODY3Yjc2NzA4NGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlSW5kZXguaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUluZGV4LmgKQEAgLTI5LDEzICsyOSwx
NSBAQAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2luY2x1ZGUgIlRleHRUcmFja0xvYWRl
ci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgVGV4dFRyYWNrQ3VlOwogY2xhc3MgVGV4dFRyYWNrQ3VlTGlzdDsKIAorLy8gVGV4dFRy
YWNrQ3VlU2V0IGlzIHVzZWQgYXMgYSBzdHJ1Y3R1cmUgZm9yIGNvbW1vbiBvcGVyYXRpb25zIG9u
IHNldHMgb2YgVGV4dFRyYWNrQ3Vlcy4KKy8vIEl0IHBvaW50cyB0byBleGlzdGluZyBUZXh0VHJh
Y2tDdWVzIGJ1dCBkb2VzIG5vdCBvd24sIG1haW50YWluLCBvciBtb2RpZnkgdGhlbS4KKwogY2xh
c3MgVGV4dFRyYWNrQ3VlU2V0IHsKIHB1YmxpYzoKICAgICBUZXh0VHJhY2tDdWVTZXQoKSB7IH0K
QEAgLTQ1LDIyICs0NywzNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGQoY29uc3QgVGV4dFRyYWNr
Q3VlJik7CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBUZXh0VHJhY2tDdWUmKSBjb25zdDsKICAg
ICB2b2lkIHJlbW92ZShjb25zdCBUZXh0VHJhY2tDdWUmKTsKKyAgICB2b2lkIGNsZWFyKCk7CiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAgICAgaW50IHNpemUoKSBjb25zdDsKKyAgICBjb25z
dCBUZXh0VHJhY2tDdWUmIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuICptX3Nl
dFtpXTsgfQorCiBwcml2YXRlOgotICAgIEhhc2hTZXQ8VGV4dFRyYWNrQ3VlKj4gbV9zZXQ7Cisg
ICAgVmVjdG9yPFRleHRUcmFja0N1ZSo+IG1fc2V0OwogfTsKIAotY2xhc3MgVGV4dFRyYWNrQ3Vl
SW5kZXggOiBwdWJsaWMgVGV4dFRyYWNrTG9hZGVyQ2xpZW50IHsKKy8vIEN1ZUluZGV4IGlzIHVz
ZWQgYXMgYSBmYXN0IGxvb2stdXAgZm9yIFRleHRUcmFja0N1ZXMgZHVyaW5nIHZpZGVvIHBsYXli
YWNrLgorLy8gSXQga2VlcHMgcmVmZXJlbmNlcyB0byBUZXh0VHJhY2tDdWVzLCBidXQgZG9lcyBu
b3Qgb3duLCBtYWludGFpbiwgb3IgbW9kaWZ5IHRoZW0uCisvLyBUZXh0VHJhY2tDdWVzIGFyZSBv
d25lZCBieSB0aGUgVGV4dFRyYWNrQ3VlTGlzdHMgb2YgdGhlaXIgcmVzcGVjdGl2ZSBUZXh0VHJh
Y2tzLAorLy8gd2hpY2ggYXJlIHJlc3BvbnNpYmxlIGZvciBub3RpZnlpbmcgQ3VlSW5kZXggb2Yg
bGlmZXRpbWUgY2hhbmdlcyBvZiBUZXh0VHJhY2tDdWVzLgorCitjbGFzcyBUZXh0VHJhY2tDdWVJ
bmRleCB7CiBwdWJsaWM6Ci0gICAgLy8gVGV4dFRyYWNrTG9hZGVyQ2xpZW50IG1ldGhvZHMuCi0g
ICAgdm9pZCBmZXRjaE5ld0N1ZXNGcm9tTG9hZGVyKFRleHRUcmFja0xvYWRlciopOworICAgIHZv
aWQgYWRkQ3Vlc1RvSW5kZXgoY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopOwogICAgIHZvaWQgcmVt
b3ZlQ3Vlc0Zyb21JbmRleChjb25zdCBUZXh0VHJhY2tDdWVMaXN0Kik7CiAKICAgICAvLyBSZXR1
cm5zIHNldCBvZiBjdWVzIHZpc2libGUgYXQgYSB0aW1lIGluIHNlY29uZHMuCiAgICAgVGV4dFRy
YWNrQ3VlU2V0IHZpc2libGVDdWVzQXRUaW1lKGRvdWJsZSkgY29uc3Q7CiAgICAgdm9pZCBhZGQo
VGV4dFRyYWNrQ3VlKik7CiAgICAgdm9pZCByZW1vdmUoVGV4dFRyYWNrQ3VlKik7CisKK3ByaXZh
dGU6CisgICAgdm9pZCBhZGQoVGV4dFRyYWNrQ3VlKiwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgZW5k
KTsKKworICAgIFZlY3RvcjxUZXh0VHJhY2tDdWUqPiBtX2N1ZXNCeVN0YXJ0VGltZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2NjI5MGFmMGM3OTg0NmEzMDkzNDM2OWQw
Y2UyZmUyNzJhZTQ5YjM1Li43ZjQ5M2YxMTE4MzA3Y2MyYjcxZTQxYTk4OTZlNTc3ZTQ2NzRkMjVk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTAtMjEgIEFubmEgQ2F2ZW5kZXIgIDxhbm5h
Y2NAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBUZXh0VHJhY2tDdWVJbmRleCBh
bmQgVGV4dFRyYWNrQ3VlU2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MDQ1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1kdXJpbmctcGxheWJhY2stZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1jdWVzLWR1cmluZy1w
bGF5YmFjay5odG1sOiBBZGRlZC4KKwogMjAxMS0xMC0yMSAgQWRhbSBLbGVpbiAgPGFkYW1rQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbTXV0YXRpb25PYnNlcnZlcnNdIEltcGxlbWVudCBiYXNp
YyBzdWJ0cmVlIG9ic2VydmF0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay9jYXB0aW9ucy13ZWJ2dHQvb3ZlcmxhcHBpbmctY3Vlcy52dHQgYi9MYXlvdXRUZXN0cy9tZWRp
YS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvb3ZlcmxhcHBpbmctY3Vlcy52dHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2YwMzVkMzMxZjA4MmE4NmQyYzYzZTFjZGNjY2ZjNjMxMTdiMWE1MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9vdmVybGFwcGluZy1j
dWVzLnZ0dApAQCAtMCwwICsxLDE0IEBACitXRUJWVFQKK0N1ZXMgdGhhdCBoYXZlIG92ZXJsYXBw
aW5nIHRpbWUgcmFuZ2VzLgorCisxCiswMDowMDowMS4wMDAgLS0+IDAwOjAwOjA2LjAwMAorQmVh
ciBpcyBDb21pbmchISEhIQorCisyCiswMDowMDowMS41MDAgLS0+IDAwOjAwOjA1LjAwMAorSSBz
YWlkIEJlYXIgaXMgY29taW5nISEhIQorCiszCiswMDowMDowMi4wMDAgLS0+IDAwOjAwOjA1LjAw
MAorSSBzYWlkIEJlYXIgaXMgY29taW5nIG5vdyEhISEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWVzLWR1cmlu
Zy1wbGF5YmFjay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1j
dWVzLWR1cmluZy1wbGF5YmFjay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q0ZWE4YWNmZWFk
NDI5NjMxMDljNTdjMDg3NzkzZWFiMzU5NjYwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtZHVyaW5nLXBsYXliYWNrLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDMyIEBACitUZXN0cyBUZXh0VHJhY2sncyBhY3RpdmVDdWVzIGFyZSBpbmRleGVk
IGFuZCB1cGRhdGVkIGR1cmluZyB2aWRlbyBwbGF5YmFjay4KKworRVZFTlQoY2FucGxheXRocm91
Z2gpCitFWFBFQ1RFRCAodGVzdFRyYWNrLnRyYWNrLmN1ZXMubGVuZ3RoID09ICczJykgT0sKK1JV
Tih2aWRlby5jdXJyZW50VGltZSA9IDAuNSkKKworRVZFTlQoc2Vla2VkKQorCitFWFBFQ1RFRCAo
dmlkZW8uY3VycmVudFRpbWUgPT0gJzAuNScpIE9LCitFWFBFQ1RFRCAoYWN0aXZlQ3Vlcy5sZW5n
dGggPT0gJzAnKSBPSworUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMSkKKworRVZFTlQoc2Vla2Vk
KQorCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPT0gJzEnKSBPSworRVhQRUNURUQgKGFj
dGl2ZUN1ZXMubGVuZ3RoID09ICcxJykgT0sKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDEuNSkK
KworRVZFTlQoc2Vla2VkKQorCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPT0gJzEuNScp
IE9LCitFWFBFQ1RFRCAoYWN0aXZlQ3Vlcy5sZW5ndGggPT0gJzInKSBPSworUlVOKHZpZGVvLmN1
cnJlbnRUaW1lID0gMikKKworRVZFTlQoc2Vla2VkKQorCitFWFBFQ1RFRCAodmlkZW8uY3VycmVu
dFRpbWUgPT0gJzInKSBPSworRVhQRUNURUQgKGFjdGl2ZUN1ZXMubGVuZ3RoID09ICczJykgT0sK
K1JVTih2aWRlby5jdXJyZW50VGltZSA9IDIuNSkKKworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1kdXJpbmctcGxheWJhY2suaHRt
bCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtZHVyaW5nLXBsYXliYWNrLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGJkNTcyODllMmMxZjdkNDYxZTE5N2Y4MTg1YTAyNjE2ZGM0NzNkMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtZHVy
aW5nLXBsYXliYWNrLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBj
b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CisKKyAgICAgICAgPHNjcmlwdCBz
cmM9Li4vbWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vdmlk
ZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxw
PlRlc3RzIFRleHRUcmFjaydzIGFjdGl2ZUN1ZXMgYXJlIGluZGV4ZWQgYW5kIHVwZGF0ZWQgZHVy
aW5nIHZpZGVvIHBsYXliYWNrLjwvcD4KKyAgICAgICAgPHZpZGVvIGNvbnRyb2xzPgorICAgICAg
ICAgICAgPHRyYWNrIGlkPSJ0ZXN0VHJhY2siIHNyYz0iY2FwdGlvbnMtd2VidnR0L292ZXJsYXBw
aW5nLWN1ZXMudnR0IiBraW5kPSJzdWJ0aXRsZXMiPgorICAgICAgICA8L3ZpZGVvPgorICAgICAg
ICA8c2NyaXB0PiAgICAgICAgICAgIAorICAgICAgICAgICAgCisgICAgICAgIHZhciBzZWVrZWRD
b3VudCA9IDA7CisgICAgICAgIHZhciB0ZXN0VHJhY2s7CisKKyAgICAgICAgZnVuY3Rpb24gc2Vl
a2VkKCkKKyAgICAgICAgeyAKKyAgICAgICAgICAgICsrc2Vla2VkQ291bnQ7CisgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIiIpOworCisgICAgICAgICAgICBhY3RpdmVDdWVzID0gdGVzdFRyYWNr
LnRyYWNrLmFjdGl2ZUN1ZXM7CisKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uY3Vy
cmVudFRpbWUiLCBzZWVrZWRDb3VudCAqIDAuNSk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
ImFjdGl2ZUN1ZXMubGVuZ3RoIiwgc2Vla2VkQ291bnQgLSAxKTsKKyAgICAgICAgICAgIHJ1bigi
dmlkZW8uY3VycmVudFRpbWUgPSAiICsgKHNlZWtlZENvdW50ICsgMSkgKiAwLjUpOworCisgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworCisgICAgICAgICAgICBpZiAoc2Vla2VkQ291bnQg
PT0gNCkKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKyAgICAKKyAgICAg
ICAgd2FpdEZvckV2ZW50KCdzZWVrZWQnLCBzZWVrZWQgKTsKKworICAgICAgICB3YWl0Rm9yRXZl
bnQoJ2NhbnBsYXl0aHJvdWdoJywKKyAgICAgICAgICAgIGZ1bmN0aW9uICgpIAorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHRlc3RUcmFjayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0ZXN0VHJhY2siKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRlc3RUcmFjay50
cmFjay5jdWVzLmxlbmd0aCIsIDMpOworICAgICAgICAgICAgICAgIHJ1bigidmlkZW8uY3VycmVu
dFRpbWUgPSAwLjUiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAg
ICAgICAgfQorICAgICAgICApOworCisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAgICAg
ICAgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4vY29udGVudC90ZXN0Iik7
CisgICAgICAgIAorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114304</attachid>
            <date>2011-11-09 09:50:24 -0800</date>
            <delta_ts>2011-11-11 13:43:31 -0800</delta_ts>
            <desc>uses PODIntervalTree as data structure</desc>
            <filename>bug-70452-20111109095022.patch</filename>
            <type>text/plain</type>
            <size>45190</size>
            <attacher name="Anna Cavender">annacc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk3MjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZDJhZmU0Nzc3Zjc0OWUx
OTkzMjE0NTJiNjVkODBmMmE3ZmY5NTdjLi41NmY3NTc1NTIzYTM4MzJjY2VlMzhmYTJmNTg3ZjRl
ZmMxODNkYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA0IEBACisyMDExLTExLTA5ICBBbm5h
IENhdmVuZGVyICA8YW5uYWNjQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdG9yYWdlIGFuZCBy
ZXRyaWV2YWwgb2YgVGV4dFRyYWNrQ3VlcyBkdXJpbmcgdmlkZW8gcGxheWJhY2ssIGluY2x1ZGlu
ZworICAgICAgICBjdWVjaGFuZ2UsIGVudGVyLCBhbmQgZXhpdCBldmVudHMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDQ1MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBtZWRpYS90cmFjay90
cmFjay1jdWVzLWN1ZWNoYW5nZS5odG1sCisgICAgICAgICAgICAgICBtZWRpYS90cmFjay90cmFj
ay1jdWVzLWVudGVyLWV4aXQuaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvdHJhY2svdHJhY2st
Y3Vlcy1zZWVraW5nLmh0bWwKKworICAgICAgICBBZGQgY3VlY2hhbmdlLCBlbnRlciwgYW5kIGV4
aXQgZXZlbnRzIGFuZCBtYWtlIFRleHRUcmFjayBhbmQKKyAgICAgICAgVGV4dFRyYWNrQ3VlIEV2
ZW50VGFyZ2V0czoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9F
dmVudFRhcmdldC5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKToKKyAgICAgICAgICAgIFJlbW92ZSBjYWxsIHRv
IGxvYWRUZXh0VHJhY2tzKCksIHRoaXMgaXMgY292ZXJlZCBieSB0cmFja1dhc0FkZGVkKCkuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tD
dWVzKToKKyAgICAgICAgICAgIFVwZGF0ZXMgdGhlIGxpc3Qgb2YgY3VycmVudGx5IGFjdGl2ZSBj
dWVzIGR1cmluZyBwbGF5YmFjay4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnRleHRUcmFja0FkZEN1ZXMpOgorICAgICAgICAgICAgQWRkcyBjdWVzIHRvIGN1ZVRyZWUuICBD
YWxsZWQgd2hlbiBjdWVzIGFyZSBkaXNjb3ZlcmVkL2xvYWRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja1JlbW92ZUN1ZXMpOgorICAgICAgICAgICAgUmVt
b3ZlcyBjdWVzIGZyb20gY3VlVHJlZS4gIENhbGxlZCB3aGVuIGN1ZXMgYW5kL29yIHRyYWNrcyBk
aWUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWUp
OgorICAgICAgICAgICAgQWRkcyBhIGN1ZSB0byBjdWVUcmVlLiAgQ2FsbGVkIHdoZW4gY3VlcyBh
cmUgZGlzY292ZXJlZC9sb2FkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tSZW1vdmVDdWUpOgorICAgICAgICAgICAgUmVtb3ZlcyBhIGN1ZSBmcm9tIGN1
ZVRyZWUuICBDYWxsZWQgd2hlbiBjdWVzIGFuZC9vciB0cmFja3MgZGllLgorCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja1Byb2dyZXNzVGltZXJGaXJlZCk6Cisg
ICAgICAgICAgICBVcGRhdGUgdGhlIGFjdGl2ZSBUZXh0VHJhY2tDdWVzIHdoZW4gcGxheWJhY2tQ
cm9ncmVzc1RpbWVyRmlyZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojph
ZGRUcmFjayk6CisgICAgICAgICAgICBQYXNzIGFsb25nIGEgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCB0byBUZXh0VHJhY2s6OmNyZWF0ZSgpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCk6CisgICAgICAgICAgICBVcGRhdGUgdGhlIGFj
dGl2ZSBUZXh0VHJhY2tDdWVzIHdoZW4gdGhlIG1lZGlhIHBsYXllciB0aW1lIGNoYW5nZXMuCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICAgICBVc2UgYSBQb2RJ
bnRlcnZhbFRyZWUgY3VlVHJlZSB0byBzdG9yZSBhbmQgcmV0cmlldmUgVGV4dFRyYWNrQ3Vlcwor
ICAgICAgICAgICAgZHVyaW5nIHBsYXliYWNrLgorCisgICAgICAgIFRoZSBmb2xsb3dpbmcgcGFz
c2VzIGFsb25nIGEgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBuZWVkZWQgZm9yCisgICAgICAgIEV2
ZW50VGFyZ2V0IGludGVyZmFjZToKKyAgICAgICAgKiBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6bG9hZCk6CisgICAgICAgICog
aHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRl
eHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVU
ZXh0VHJhY2s6OmxvYWQpOgorICAgICAgICAqIGh0bWwvTG9hZGFibGVUZXh0VHJhY2suaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGh0
bWwvVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6VGV4dFRyYWNr
KToKKworICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpjdWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFjazo6YWN0aXZlQ3Vlcyk6CisgICAgICAgICAgICBSZXR1cm4gYSBUZXh0VHJh
Y2tDdWVMaXN0IHRoYXQgcmVwcmVzZW50cyB0aGUgY3VycmVudGx5IGFjdGl2ZSBjdWVzLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpmaXJlQ3VlQ2hhbmdlRXZlbnQpOgorICAgICAgICAg
ICAgUmVjaWV2ZXMgbm90aWZpY2F0aW9uIGZyb20gaXRzIGN1ZXMgdGhhdCB0aGVyZSBoYXMgYmVl
biBhIGN1ZSBjaGFuZ2UuCisgICAgICAgICogaHRtbC9UZXh0VHJhY2suaDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFjazo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL1RleHRUcmFjay5pZGw6
CisgICAgICAgICAgICBNYWtlcyBUZXh0VHJhY2sgZXh0ZW5kIEV2ZW50VGFyZ2V0IGludGVyZmFj
ZSBhbmQgYWRkIG9uY3VlY2hhbmdlLgorCisgICAgICAgICogaHRtbC9UZXh0VHJhY2tDdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUpOgorICAgICAg
ICAgICAgVGV4dFRyYWNrQ3VlIHNob3VsZCBleHRlbmQgRXZlbnRUYXJnZXQsIG5vdCBBY3RpdmVE
T01PYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmlzQWN0aXZlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6c2V0SXNBY3RpdmUpOgorICAgICAgICAgICAg
RGlzcGF0Y2ggYW4gZW50ZXIgb3IgZXhpdCBldmVudCBkZXBlbmRpbmcgb24gYWN0aXZlIHN0YXRl
IGFuZCBub3RpZnkKKyAgICAgICAgICAgIHRoZSBjb3JyZXNwb25kaW5nIHRyYWNrIHRvIGZpcmUg
YSBjdWVjaGFuZ2UgZXZlbnQuCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyBhcmUgbmVlZGVkIGZv
ciBFdmVudFRhcmdldCBpbnRlcmZhY2U6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6
OmludGVyZmFjZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6ZXZlbnRU
YXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6ZW5zdXJlRXZlbnRU
YXJnZXREYXRhKToKKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ3VlOjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2tDdWU6OmRlcmVmRXZlbnRUYXJnZXQpOgorCisgICAgICAgICogaHRtbC9UZXh0VHJh
Y2tDdWUuaWRsOgorICAgICAgICAgICAgRXh0ZW5kIEV2ZW50VGFyZ2V0IGFuZCBhZGQgb25lbnRl
ciBhbmQgb25leGl0LgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjphY3RpdmVDdWVzKToKKyAgICAgICAgICAg
IFVwZGF0ZSBhbmQgcmV0dXJuIHRoZSBsaXN0IG9mIGN1cnJlbnRseSBhY3RpdmUgY3Vlcy4KKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUxpc3Q6OmNsZWFyKToKKyAgICAgICAgICAgIENs
ZWFyIHRoZSBjdWVzIGZyb20gbGlzdCAobmVlZGVkIHRvIHJldHVybiBzYW1lIG9iamVjdCBlYWNo
IHRpbWUpLgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNrQ3VlTGlzdC5oOgorCisgICAgICAgIFRo
ZSBmb2xsb3dpbmcgYXJlIG5lZWRlZCBmb3IgRXZlbnRUYXJnZXQgaW50ZXJmYWNlOgorICAgICAg
ICAqIGh0bWwvdHJhY2svVHJhY2tCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFz
ZTo6VHJhY2tCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6aW50ZXJmYWNlTmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNlOjpldmVudFRhcmdldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJhY2tCYXNlOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAq
IGh0bWwvdHJhY2svVHJhY2tCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OnJl
ZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6ZGVyZWZFdmVudFRh
cmdldCk6CisKIDIwMTEtMTEtMDkgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgog
CiAgICAgICAgIFN0eWxlU2hlZXQ6IERldmlydHVhbGl6ZSBzdHlsZVNoZWV0Q2hhbmdlZCgpLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggNmMyZjQzNTQ5M2ExZTZmNDY4NTE5ZWViYjVmYzMx
NGU1NmQ3OWYyNC4uYzUzNmNmYzAwNDgwY2M3NGQ0ZWExMmVkZjFiZDZlN2Y0NzU3ZTlmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0xNDYsNiArMTQ2LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIG1hY3JvKHdhaXRpbmcpIFwKICAgICBcCiAgICAgbWFjcm8oYWRkdHJhY2spIFwK
KyAgICBtYWNybyhjdWVjaGFuZ2UpIFwKKyAgICBtYWNybyhlbnRlcikgXAorICAgIG1hY3JvKGV4
aXQpIFwKICAgICBcCiAgICAgbWFjcm8od2Via2l0YmVnaW5mdWxsc2NyZWVuKSBcCiAgICAgbWFj
cm8od2Via2l0ZW5kZnVsbHNjcmVlbikgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCBj
NmYxZjNkNDQzYjg1YjZmNjQyMGNlZWM5NGJlZmIyMjc4NjJkNDQ2Li5lNjIxYjVkMWE4YWFiZjRm
YjIwMTQwOTVhZmYwZWRiYWZiOTI3OGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAt
NjQsNiArNjQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXI7CiAgICAgY2xhc3MgU2hhcmVkV29y
a2VyQ29udGV4dDsKKyAgICBjbGFzcyBUZXh0VHJhY2s7CisgICAgY2xhc3MgVGV4dFRyYWNrQ3Vl
OwogICAgIGNsYXNzIFdlYlNvY2tldDsKICAgICBjbGFzcyBXb3JrZXI7CiAgICAgY2xhc3MgWE1M
SHR0cFJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRG
YWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRl
eCA2YmRiMmUyMWNhOTZiM2UxMGQzYmUxYzcxZWY3MzBkMjdmMDBkOTFkLi4xMTFhZGJlNmY3NzY2
NDRiNTAyZTYzNDg4Nzk0ZGYyODBhN2VhNjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW4KQEAgLTIxLDYgKzIxLDggQEAgUGVlckNvbm5lY3Rpb24gY29uZGl0aW9u
YWw9TUVESUFfU1RSRUFNCiBTaGFyZWRXb3JrZXIgY29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMK
IFNoYXJlZFdvcmtlckNvbnRleHQgY29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKIFNWR0VsZW1l
bnRJbnN0YW5jZSBjb25kaXRpb25hbD1TVkcKK1RleHRUcmFjayBjb25kaXRpb25hbD1WSURFT19U
UkFDSworVGV4dFRyYWNrQ3VlIGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiBXZWJTb2NrZXQgY29u
ZGl0aW9uYWw9V0VCX1NPQ0tFVFMKIFdvcmtlciBjb25kaXRpb25hbD1XT1JLRVJTCiBYTUxIdHRw
UmVxdWVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYzkw
NjVmNjkxYTljMGNhZTllNmVmNjQzMmI4MTdjZmMyYmQ3OTcwZi4uMDBjZWMyNzc4ZWFjNWE4NTEx
YmFmNGFjNTE2N2YyNmJhYzdlMGY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC04OSw2ICs4OSw3IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogI2lu
Y2x1ZGUgIkhUTUxUcmFja0VsZW1lbnQuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoV0VCX0FVRElPKQpAQCAtNjMzLDkgKzYzNCw2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bG9hZEludGVybmFsKCkKICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVQYWdl
Q29uc2VudFRvTG9hZE1lZGlhUmVzdHJpY3Rpb24pOwogCiAgICAgc2VsZWN0TWVkaWFSZXNvdXJj
ZSgpOwotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBsb2FkVGV4dFRyYWNrcygpOwotI2Vu
ZGlmCiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXJjZSgpCkBA
IC04MzcsMTcgKzgzNSw2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKGNv
bnN0IEtVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50CiB9CiAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUZXh0VHJhY2tzKCkK
LXsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFi
bGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoTm9kZSogbm9kZSA9IGZpcnN0Q2hp
bGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKG5v
ZGUtPmhhc1RhZ05hbWUodHJhY2tUYWcpKQotICAgICAgICAgICAgbG9hZE5leHRUZXh0VHJhY2so
c3RhdGljX2Nhc3Q8SFRNTFRyYWNrRWxlbWVudCo+KG5vZGUpKTsKLSAgICB9Ci19Ci0KIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bG9hZE5leHRUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJh
Y2spCiB7CiAgICAgLy8gRklYTUUoNzExMjQpOiBUaGlzIHNob3VsZCBzY2hlZHVsZSBhbiAqYXN5
bmNocm9ub3VzKiBsb2FkLgpAQCAtODU5LDYgKzg0NiwyMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmxvYWROZXh0VGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrKQogICAgIC8vIEZJ
WE1FKDcxMTIzKTogU2V0IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYWNjb3JkaW5nbHkuCiB9CiAKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcygpCit7CisgICAg
ZmxvYXQgbW92aWVUaW1lID0gY3VycmVudFRpbWUoKTsKKworICAgIFZlY3RvcjxDdWVJbnRlcnZh
bD4gcHJldmlvdXNseVZpc2libGVDdWVzID0gbV9jdXJyZW50bHlWaXNpYmxlQ3VlczsKKyAgICBt
X2N1cnJlbnRseVZpc2libGVDdWVzID0gbV9jdWVUcmVlLmFsbE92ZXJsYXBzKG1fY3VlVHJlZS5j
cmVhdGVJbnRlcnZhbChtb3ZpZVRpbWUsIG1vdmllVGltZSkpOworCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBwcmV2aW91c2x5VmlzaWJsZUN1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
aWYgKCFtX2N1cnJlbnRseVZpc2libGVDdWVzLmNvbnRhaW5zKHByZXZpb3VzbHlWaXNpYmxlQ3Vl
c1tpXSkpCisgICAgICAgICAgICBwcmV2aW91c2x5VmlzaWJsZUN1ZXNbaV0uZGF0YSgpLT5zZXRJ
c0FjdGl2ZShmYWxzZSk7CisgICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jdXJy
ZW50bHlWaXNpYmxlQ3Vlcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoIXByZXZpb3VzbHlW
aXNpYmxlQ3Vlcy5jb250YWlucyhtX2N1cnJlbnRseVZpc2libGVDdWVzW2ldKSkKKyAgICAgICAg
ICAgIG1fY3VycmVudGx5VmlzaWJsZUN1ZXNbaV0uZGF0YSgpLT5zZXRJc0FjdGl2ZSh0cnVlKTsK
KyAgICB9Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNo
YW5nZWQoVGV4dFRyYWNrKikKIHsKICAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KQEAg
LTg3NCwyNCArODc4LDI2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrQ3JlYXRl
ZChUZXh0VHJhY2sqKQogICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgogfQogCi12b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4
dFRyYWNrQ3VlTGlzdCopIAordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVz
KFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqIGN1ZXMpIAogewotICAgIC8vIEZJ
WE1FKDYyODg1KTogSW1wbGVtZW50LgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY3Vlcy0+
bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgdGV4dFRyYWNrQWRkQ3VlKGN1ZXMtPml0ZW0oaSktPnRy
YWNrKCksIGN1ZXMtPml0ZW0oaSkpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRU
cmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopIAordm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0
IFRleHRUcmFja0N1ZUxpc3QqIGN1ZXMpIAogewotICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVt
ZW50LgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY3Vlcy0+bGVuZ3RoKCk7ICsraSkKKyAg
ICAgICAgdGV4dFRyYWNrUmVtb3ZlQ3VlKGN1ZXMtPml0ZW0oaSktPnRyYWNrKCksIGN1ZXMtPml0
ZW0oaSkpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0FkZEN1ZShUZXh0
VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gY3Vl
KQogewotICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgorICAgIG1fY3VlVHJlZS5hZGQo
bV9jdWVUcmVlLmNyZWF0ZUludGVydmFsKGN1ZS0+c3RhcnRUaW1lKCksIGN1ZS0+ZW5kVGltZSgp
LCBjdWUuZ2V0KCkpKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1v
dmVDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KQordm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0
VHJhY2tDdWU+IGN1ZSkKIHsKLSAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KKyAgICBt
X2N1ZVRyZWUucmVtb3ZlKG1fY3VlVHJlZS5jcmVhdGVJbnRlcnZhbChjdWUtPnN0YXJ0VGltZSgp
LCBjdWUtPmVuZFRpbWUoKSwgY3VlLmdldCgpKSk7CiB9CiAKICNlbmRpZgpAQCAtMTk0MCw2ICsx
OTQ2LDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tQcm9ncmVzc1RpbWVyRmly
ZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKQogICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkp
CiAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+cGxheWJhY2tQcm9ncmVzc2VkKCk7CiAgICAgLy8g
RklYTUU6IGRlYWwgd2l0aCBjdWUgcmFuZ2VzIGhlcmUKKyAgICAKKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisgICAgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcygpOworI2VuZGlmCiB9CiAKIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVUaW1ldXBkYXRlRXZlbnQoYm9vbCBwZXJpb2Rp
Y0V2ZW50KQpAQCAtMTk4OSw3ICsxOTk5LDcgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6cGVy
Y2VudExvYWRlZCgpIGNvbnN0CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogUGFzc1JlZlB0cjxU
ZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKIHsKLSAgICBSZWZQ
dHI8VGV4dFRyYWNrPiB0ZXh0VHJhY2sgPSBUZXh0VHJhY2s6OmNyZWF0ZSh0aGlzLCBraW5kLCBs
YWJlbCwgbGFuZ3VhZ2UpOworICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjayA9IFRleHRU
cmFjazo6Y3JlYXRlKEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0
aGlzLCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpOwogICAgIG1fdGV4dFRyYWNrcy5hcHBlbmQodGV4
dFRyYWNrKTsKICAgICByZXR1cm4gdGV4dFRyYWNrLnJlbGVhc2UoKTsKIH0KQEAgLTIyNDksNiAr
MjI1OSw5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZChN
ZWRpYVBsYXllciopCiAgICAgICAgIG1fc2VudEVuZEV2ZW50ID0gZmFsc2U7CiAKICAgICB1cGRh
dGVQbGF5U3RhdGUoKTsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgdXBkYXRlQWN0aXZl
VGV4dFRyYWNrQ3VlcygpOworI2VuZGlmCiAgICAgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2Fs
bGJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCAw
ZDJmOWZjNDllMTAwY2I1MTdiZWYwZDE1MGFjNGY3N2E1NzVlOWVjLi5lNzk5ZWNlZjc3MTc3NTdl
M2ZjY2FmZWVlYjVkMjhjYjlmNjcxYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaApAQCAtMzgsNyArMzgsOSBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisjaW5jbHVkZSAiUE9ESW50ZXJ2YWxUcmVlLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrLmgi
CisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzU1LDggKzM1Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtZWRpYUxvYWRpbmdGYWls
ZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSk7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
Ci0gICAgdm9pZCBsb2FkVGV4dFRyYWNrcygpOwogICAgIHZvaWQgbG9hZE5leHRUZXh0VHJhY2so
SFRNTFRyYWNrRWxlbWVudCopOworICAgIHZvaWQgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcygp
OwogCiAgICAgLy8gVGV4dFRyYWNrQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1Jl
YWR5U3RhdGVDaGFuZ2VkKFRleHRUcmFjayopOwpAQCAtNTE1LDkgKzUxNywzNCBAQCBwcml2YXRl
OgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNr
PiA+IG1fdGV4dFRyYWNrczsKKyAgICAKKyAgICB0eXBlZGVmIFBPREludGVydmFsPGZsb2F0LCBU
ZXh0VHJhY2tDdWUqPiBDdWVJbnRlcnZhbDsKKyAgICBQT0RJbnRlcnZhbFRyZWU8ZmxvYXQsIFRl
eHRUcmFja0N1ZSo+IG1fY3VlVHJlZTsKKyAgICBWZWN0b3I8Q3VlSW50ZXJ2YWw+IG1fY3VycmVu
dGx5VmlzaWJsZUN1ZXM7CiAjZW5kaWYKIH07CiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisj
aWZuZGVmIE5ERUJVRworLy8gVGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIHJlcXVpcmVkIGJ5IFBv
ZEludGVydmFsVHJlZSBpbiBkZWJ1ZyBtb2RlLgordGVtcGxhdGUgPD4KK3N0cnVjdCBWYWx1ZVRv
U3RyaW5nPGZsb2F0PiB7CisgICAgc3RhdGljIFN0cmluZyBzdHJpbmcoY29uc3QgZmxvYXQgdmFs
dWUpCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIodmFsdWUpOworICAgIH0K
K307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgVmFsdWVUb1N0cmluZzxUZXh0VHJhY2tDdWUqPiB7
CisgICAgc3RhdGljIFN0cmluZyBzdHJpbmcoVGV4dFRyYWNrQ3VlKiBjb25zdCYgY3VlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcCBpZD0lcyBpbnRlcnZhbD0lZi0t
PiVmIGN1ZT0lcykiLCBjdWUsIGN1ZS0+aWQoKS51dGY4KCkuZGF0YSgpLCBjdWUtPnN0YXJ0VGlt
ZSgpLCBjdWUtPmVuZFRpbWUoKSwgY3VlLT5nZXRDdWVBc1NvdXJjZSgpLnV0ZjgoKS5kYXRhKCkp
OworICAgIH0KK307CisjZW5kaWYKKyNlbmRpZgorCiB9IC8vbmFtZXNwYWNlCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5kZXggMDUxZTk4MGQ0MTll
MTNhZGEzYWIzNmJiOWQwMTM0ZGVlYjA1MThhNy4uYzIxN2FmMzg2YmMyNmEzZWYxY2EwOTlhNDQ1
N2UzZWU0OWViZmFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3Bw
CkBAIC0xNTksMTAgKzE1OSwxMCBAQCBib29sIEhUTUxUcmFja0VsZW1lbnQ6OmlzVVJMQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cmlidXRlKSBjb25zdAogCiB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6
OmxvYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiB0
cmFja0NsaWVudCkKIHsKLSAgICBtX3RyYWNrID0gTG9hZGFibGVUZXh0VHJhY2s6OmNyZWF0ZSh0
cmFja0NsaWVudCwgdGhpcywga2luZCgpLCBsYWJlbCgpLCBzcmNsYW5nKCksIGlzRGVmYXVsdCgp
KTsKKyAgICBtX3RyYWNrID0gTG9hZGFibGVUZXh0VHJhY2s6OmNyZWF0ZShjb250ZXh0LCB0cmFj
a0NsaWVudCwgdGhpcywga2luZCgpLCBsYWJlbCgpLCBzcmNsYW5nKCksIGlzRGVmYXVsdCgpKTsK
IAogICAgIGlmIChoYXNBdHRyaWJ1dGUoc3JjQXR0cikpCi0gICAgICAgIG1fdHJhY2stPmxvYWQo
Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0ciksIGNvbnRleHQpOworICAgICAgICBtX3Ry
YWNrLT5sb2FkKGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpKTsKIH0KIAogdm9pZCBI
VE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tMb2FkaW5nQ29tcGxldGVkKExvYWRhYmxlVGV4dFRy
YWNrKiwgYm9vbCBsb2FkaW5nRmFpbGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9Mb2FkYWJsZVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4
dFRyYWNrLmNwcAppbmRleCBkOTg4OTZhODYwMTUyZGEwZTE3ZjA3YTc3M2EzMWJlOWFmYzk3YTc0
Li5lNTI3ZmRlNjY3OTU0N2IzMDRmNTUwNGVmOTYyZjE1ZDA5YWQ5NDAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcApAQCAtMjksMTIgKzI5LDEzIEBACiAKICNp
bmNsdWRlICJMb2FkYWJsZVRleHRUcmFjay5oIgogCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1Mb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2soVGV4dFRyYWNr
Q2xpZW50KiB0cmFja0NsaWVudCwgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCogbG9hZGluZ0NsaWVu
dCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcm
IGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCkKLSAgICA6IFRleHRUcmFjayh0cmFja0NsaWVudCwg
a2luZCwgbGFiZWwsIGxhbmd1YWdlKQorTG9hZGFibGVUZXh0VHJhY2s6OkxvYWRhYmxlVGV4dFRy
YWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogdHJh
Y2tDbGllbnQsIFRleHRUcmFja0xvYWRpbmdDbGllbnQqIGxvYWRpbmdDbGllbnQsIGNvbnN0IFN0
cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwg
Ym9vbCBpc0RlZmF1bHQpCisgICAgOiBUZXh0VHJhY2soY29udGV4dCwgdHJhY2tDbGllbnQsIGtp
bmQsIGxhYmVsLCBsYW5ndWFnZSkKICAgICAsIG1fbG9hZGluZ0NsaWVudChsb2FkaW5nQ2xpZW50
KQogICAgICwgbV9pc0RlZmF1bHQoaXNEZWZhdWx0KQogewpAQCAtNDQsMTAgKzQ1LDEwIEBAIExv
YWRhYmxlVGV4dFRyYWNrOjp+TG9hZGFibGVUZXh0VHJhY2soKQogewogfQogCi12b2lkIExvYWRh
YmxlVGV4dFRyYWNrOjpsb2FkKGNvbnN0IEtVUkwmIHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmxvYWQoY29uc3QgS1VSTCYgdXJs
KQogewogICAgIGlmICghbV9sb2FkZXIpCi0gICAgICAgIG1fbG9hZGVyID0gVGV4dFRyYWNrTG9h
ZGVyOjpjcmVhdGUodGhpcywgY29udGV4dCk7CisgICAgICAgIG1fbG9hZGVyID0gVGV4dFRyYWNr
TG9hZGVyOjpjcmVhdGUodGhpcywgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBtX2xv
YWRlci0+bG9hZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xv
YWRhYmxlVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNr
LmgKaW5kZXggZGY1MjE5MDFjY2M3YzIxNzQzNDgxODEwNDE2NzNhNGQyZmI2MTZjOS4uNzBjN2Vj
NjgxZWQwODM3NTFlNTM4MjJhNTZkY2ZlYWZjNzM4Y2I1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TG9hZGFibGVUZXh0VHJhY2suaApAQCAtNDgsMTMgKzQ4LDEzIEBAIHB1YmxpYzoKIAogY2xhc3Mg
TG9hZGFibGVUZXh0VHJhY2sgOiBwdWJsaWMgVGV4dFRyYWNrLCBwcml2YXRlIFRleHRUcmFja0xv
YWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TG9hZGFibGVUZXh0
VHJhY2s+IGNyZWF0ZShUZXh0VHJhY2tDbGllbnQqIHRyYWNrQ2xpZW50LCBUZXh0VHJhY2tMb2Fk
aW5nQ2xpZW50KiBsb2FkaW5nQ2xpZW50LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPExvYWRhYmxlVGV4dFRyYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiB0cmFja0NsaWVudCwgVGV4dFRyYWNr
TG9hZGluZ0NsaWVudCogbG9hZGluZ0NsaWVudCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBT
dHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTG9hZGFibGVUZXh0VHJhY2sodHJhY2tD
bGllbnQsIGxvYWRpbmdDbGllbnQsIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSwgaXNEZWZhdWx0KSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTG9hZGFibGVUZXh0VHJhY2soY29udGV4dCwg
dHJhY2tDbGllbnQsIGxvYWRpbmdDbGllbnQsIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSwgaXNEZWZh
dWx0KSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkxvYWRhYmxlVGV4dFRyYWNrKCk7CiAKLSAgICB2
b2lkIGxvYWQoY29uc3QgS1VSTCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICB2b2lk
IGxvYWQoY29uc3QgS1VSTCYpOwogICAgIGJvb2wgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYp
OwogCiBwcml2YXRlOgpAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBjdWVMb2FkaW5nU3RhcnRlZChUZXh0VHJhY2tMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQg
Y3VlTG9hZGluZ0NvbXBsZXRlZChUZXh0VHJhY2tMb2FkZXIqLCBib29sIGxvYWRpbmdGYWlsZWQp
OwogCi0gICAgTG9hZGFibGVUZXh0VHJhY2soVGV4dFRyYWNrQ2xpZW50KiwgVGV4dFRyYWNrTG9h
ZGluZ0NsaWVudCosIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29u
c3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpOworICAgIExvYWRhYmxlVGV4dFRy
YWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUZXh0VHJhY2tDbGllbnQqLCBUZXh0VHJhY2tM
b2FkaW5nQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBj
b25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCk7CiAKICAgICBPd25QdHI8VGV4
dFRyYWNrTG9hZGVyPiBtX2xvYWRlcjsKICAgICBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50KiBtX2xv
YWRpbmdDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5jcHAKaW5kZXggYWFjMDNmYTdkMjI5
YzJlNWQ3YThkYmM1NGNhMjA4YmE0OWFjNDRhMi4uMGEyNjVhODY2OGIwMGM0NDUwOTQ2NGQyN2Q4
MGYwOWY0YjI5YjRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcApAQCAtMzQsMTQgKzM0
LDE1IEBACiAKICNpbmNsdWRlICJUZXh0VHJhY2suaCIKIAorI2luY2x1ZGUgIkV2ZW50LmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIK
ICNpbmNsdWRlICJUcmFja0Jhc2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1UZXh0VHJh
Y2s6OlRleHRUcmFjayhUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBraW5k
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQotICAgIDogVHJh
Y2tCYXNlKFRyYWNrQmFzZTo6VGV4dFRyYWNrKQorVGV4dFRyYWNrOjpUZXh0VHJhY2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0
IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFn
ZSkKKyAgICA6IFRyYWNrQmFzZShjb250ZXh0LCBUcmFja0Jhc2U6OlRleHRUcmFjaykKICAgICAs
IG1fa2luZChraW5kKQogICAgICwgbV9sYWJlbChsYWJlbCkKICAgICAsIG1fbGFuZ3VhZ2UobGFu
Z3VhZ2UpCkBAIC0xMDksMTQgKzExMCwyMSBAQCBUZXh0VHJhY2tDdWVMaXN0KiBUZXh0VHJhY2s6
OmN1ZXMoKSBjb25zdAogICAgIC8vIE90aGVyd2lzZSwgaXQgbXVzdCByZXR1cm4gbnVsbC4gV2hl
biBhbiBvYmplY3QgaXMgcmV0dXJuZWQsIHRoZQogICAgIC8vIHNhbWUgb2JqZWN0IG11c3QgYmUg
cmV0dXJuZWQgZWFjaCB0aW1lLgogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93
ZWItYXBwcy9jdXJyZW50LXdvcmsvI2RvbS10ZXh0dHJhY2stY3VlcwotICAgIGlmIChtX21vZGUg
IT0gVGV4dFRyYWNrOjpESVNBQkxFRCkKKyAgICBpZiAobV9jdWVzICYmIG1fbW9kZSAhPSBUZXh0
VHJhY2s6OkRJU0FCTEVEKQogICAgICAgICByZXR1cm4gbV9jdWVzLmdldCgpOwogICAgIHJldHVy
biAwOwogfQogCiBUZXh0VHJhY2tDdWVMaXN0KiBUZXh0VHJhY2s6OmFjdGl2ZUN1ZXMoKSBjb25z
dAogewotICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgorICAgIC8vIDQuOC4xMC4xMi41
IElmIHRoZSB0ZXh0IHRyYWNrIG1vZGUgLi4uIGlzIG5vdCB0aGUgdGV4dCB0cmFjayBkaXNhYmxl
ZCBtb2RlLAorICAgIC8vIHRoZW4gdGhlIGFjdGl2ZUN1ZXMgYXR0cmlidXRlIG11c3QgcmV0dXJu
IGEgbGl2ZSBUZXh0VHJhY2tDdWVMaXN0IG9iamVjdCAuLi4KKyAgICAvLyAuLi4gd2hvc2UgYWN0
aXZlIGZsYWcgd2FzIHNldCB3aGVuIHRoZSBzY3JpcHQgc3RhcnRlZCwgaW4gdGV4dCB0cmFjayBj
dWUKKyAgICAvLyBvcmRlci4gT3RoZXJ3aXNlLCBpdCBtdXN0IHJldHVybiBudWxsLiBXaGVuIGFu
IG9iamVjdCBpcyByZXR1cm5lZCwgdGhlCisgICAgLy8gc2FtZSBvYmplY3QgbXVzdCBiZSByZXR1
cm5lZCBlYWNoIHRpbWUuCisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1h
cHBzL2N1cnJlbnQtd29yay8jZG9tLXRleHR0cmFjay1hY3RpdmVjdWVzCisgICAgaWYgKG1fY3Vl
cyAmJiBtX21vZGUgIT0gVGV4dFRyYWNrOjpESVNBQkxFRCkKKyAgICAgICAgcmV0dXJuIG1fY3Vl
cy0+YWN0aXZlQ3VlcygpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xNDEsNiArMTQ5LDEyIEBA
IHZvaWQgVGV4dFRyYWNrOjpmZXRjaE5ld2VzdEN1ZXMoVmVjdG9yPFRleHRUcmFja0N1ZSo+JikK
ICAgICAvLyBGSVhNRSg2Mjg5MCk6IEltcGxlbWVudC4KIH0KIAordm9pZCBUZXh0VHJhY2s6OmZp
cmVDdWVDaGFuZ2VFdmVudCgpCit7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jdWVjaGFuZ2VFdmVudCwgZmFs
c2UsIGZhbHNlKSwgZWMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dFRyYWNrLmgKaW5kZXggYmMwODdiMTI0NTVlYTczNGY2MTFlM2ZiYTdhM2Iy
Mzg4YWJmYjQzMy4uMzQyNGZlN2M5NmE3YTg2N2YwMTRkYjc3OGEzNzZiNjIwYmJiYjAyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRUcmFjay5oCkBAIC01NSw5ICs1NSw5IEBAIHB1YmxpYzoKIAogY2xhc3Mg
VGV4dFRyYWNrIDogcHVibGljIFRyYWNrQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8VGV4dFRyYWNrPiBjcmVhdGUoVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0
cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBr
aW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0VHJhY2soY2xpZW50LCBraW5kLCBsYWJl
bCwgbGFuZ3VhZ2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0VHJhY2soY29u
dGV4dCwgY2xpZW50LCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpKTsKICAgICB9CiAgICAgdmlydHVh
bCB+VGV4dFRyYWNrKCk7CiAKQEAgLTg2LDkgKzg2LDEyIEBAIHB1YmxpYzoKICAgICAKICAgICB2
aXJ0dWFsIHZvaWQgbmV3Q3Vlc0xvYWRlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBmZXRjaE5ld2Vz
dEN1ZXMoVmVjdG9yPFRleHRUcmFja0N1ZSo+Jik7CisgICAgCisgICAgdm9pZCBmaXJlQ3VlQ2hh
bmdlRXZlbnQoKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGN1ZWNoYW5n
ZSk7CiAKIHByb3RlY3RlZDoKLSAgICBUZXh0VHJhY2soVGV4dFRyYWNrQ2xpZW50KiwgY29uc3Qg
U3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdl
KTsKKyAgICBUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRleHRUcmFja0NsaWVu
dCosIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5n
JiBsYW5ndWFnZSk7CiAKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoUmVhZHlTdGF0ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dFRyYWNrLmlkbAppbmRleCBhZTQyNzEyYzljNWE0YzA0NzM0NjIyMTI4YWQ4
ODAyNjljOWNiMGE2Li5hYWM0MmQwNzM0ZTk0MjljNDA4NTQ0YmYzMjA0MTg0ZDYyOGE2Y2YwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaWRsCkBAIC0yOCw2ICsyOCw3IEBAIG1vZHVsZSBodG1s
IHsKICAgICBpbnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKICAg
ICAgICAgRW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrLAorICAgICAgICBFdmVudFRh
cmdldAogICAgIF0gVGV4dFRyYWNrIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyBraW5kOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOwpA
QCAtNDgsMTAgKzQ5LDIxIEBAIG1vZHVsZSBodG1sIHsKIAogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgVGV4dFRyYWNrQ3VlTGlzdCBjdWVzOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
VGV4dFRyYWNrQ3VlTGlzdCBhY3RpdmVDdWVzOworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbmN1ZWNoYW5nZTsKIAogICAgICAgICB2b2lkIGFkZEN1ZShpbiBUZXh0
VHJhY2tDdWUgY3VlKQogICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAg
ICB2b2lkIHJlbW92ZUN1ZShpbiBUZXh0VHJhY2tDdWUgY3VlKQogICAgICAgICAgICAgcmFpc2Vz
IChET01FeGNlcHRpb24pOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAg
ICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7
CisgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVy
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVh
biB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2
dCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CiAgICAgfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dFRyYWNrQ3VlLmNwcAppbmRleCBkMGJiZTU4NzJmMmY5ZTNiOGNiYmRkNWE4
MjhlNjdkMzUyMDY5OTE5Li5jMGZiMDc1OGEzMjNmMjBmMTdmYmJmNGE5YTk3Njk3MzY3M2Y0OGI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAK
ICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKIAorI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIlRleHRUcmFjay5oIgogI2luY2x1ZGUg
IldlYlZUVFBhcnNlci5oIgpAQCAtNDIsOCArNDMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQsIGNvbnN0IFN0
cmluZyYgY29udGVudCwgY29uc3QgU3RyaW5nJiBzZXR0aW5ncywgYm9vbCBwYXVzZU9uRXhpdCkK
LSAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQotICAgICwgbV9pZChpZCkKKyAg
ICA6IG1faWQoaWQpCiAgICAgLCBtX3N0YXJ0VGltZShzdGFydCkKICAgICAsIG1fZW5kVGltZShl
bmQpCiAgICAgLCBtX2NvbnRlbnQoY29udGVudCkKQEAgLTU1LDYgKzU1LDcgQEAgVGV4dFRyYWNr
Q3VlOjpUZXh0VHJhY2tDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBpZCwgZG8KICAgICAsIG1fY3VlU2l6ZSgxMDApCiAgICAgLCBtX2N1ZUFsaWdubWVu
dChNaWRkbGUpCiAgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQorICAgICwgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0KGNvbnRleHQpCiB7CiAgICAgcGFyc2VTZXR0aW5ncyhzZXR0aW5ncyk7CiB9CkBA
IC0xMzgsMTggKzEzOSwyMSBAQCB2b2lkIFRleHRUcmFja0N1ZTo6c2V0Q3VlSFRNTChQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50KQogCiBib29sIFRleHRUcmFja0N1ZTo6aXNB
Y3RpdmUoKQogewotICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgotICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gbV9pc0FjdGl2ZTsKIH0KIAogdm9pZCBUZXh0VHJhY2tDdWU6OnNl
dElzQWN0aXZlKGJvb2wgYWN0aXZlKQogewogICAgIG1faXNBY3RpdmUgPSBhY3RpdmU7Ci19CiAK
LVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFRleHRUcmFja0N1ZTo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlmIChhY3RpdmUp
CisgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW50ZXJF
dmVudCwgZmFsc2UsIGZhbHNlKSwgZWMpOworICAgIGVsc2UKKyAgICAgICAgZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5leGl0RXZlbnQsIGZhbHNlLCBmYWxzZSksIGVj
KTsKKworICAgIGlmIChtX3RyYWNrKQorICAgICAgICBtX3RyYWNrLT5maXJlQ3VlQ2hhbmdlRXZl
bnQoKTsKIH0KIAogdm9pZCBUZXh0VHJhY2tDdWU6OnBhcnNlU2V0dGluZ3MoY29uc3QgU3RyaW5n
JiBpbnB1dCkKQEAgLTMwNyw2ICszMTEsMjYgQEAgT3RoZXJ3aXNlOgogICAgIH0KIH0KIAorY29u
c3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2tDdWU6OmludGVyZmFjZU5hbWUoKSBjb25zdAorewor
ICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yVGV4dFRyYWNrQ3VlOworfQorCitT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBUZXh0VHJhY2tDdWU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdAoreworICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Cit9CisK
K0V2ZW50VGFyZ2V0RGF0YSogVGV4dFRyYWNrQ3VlOjpldmVudFRhcmdldERhdGEoKQoreworICAg
IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogVGV4dFRy
YWNrQ3VlOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRh
cmdldERhdGE7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9UZXh0VHJhY2tDdWUuaAppbmRleCBhYzIzMjE0NDI5NzJjOWQ5OGFkYjhmMDNkMDI4ZWM2
NjhlMjJmMGRhLi5hNjQ3Y2U2NWZjMTdjM2IxOGFjNjhmM2NiY2NiYjU5ZjdiMGUzZjdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKIAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUg
IkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDQsNyArNDQsNyBA
QCBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IGNsYXNzIFRleHRUcmFjazsKIAotY2xhc3MgVGV4dFRyYWNrQ3VlIDogcHVibGljIFJlZkNvdW50
ZWQ8VGV4dFRyYWNrQ3VlPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitjbGFzcyBUZXh0VHJh
Y2tDdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+LCBwdWJsaWMgRXZlbnRUYXJn
ZXQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgaWQsIGRvdWJs
ZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcm
IHNldHRpbmdzLCBib29sIHBhdXNlT25FeGl0KQogICAgIHsKQEAgLTc4LDEzICs3OCwyOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0FjdGl2ZSgpOwogICAgIHZvaWQgc2V0SXNBY3RpdmUoYm9vbCk7
CiAgICAgCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBj
b25zdDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdDsKIAorICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
ZW50ZXIpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXhpdCk7CisKKyAg
ICB1c2luZyBSZWZDb3VudGVkPFRleHRUcmFja0N1ZT46OnJlZjsKKyAgICB1c2luZyBSZWZDb3Vu
dGVkPFRleHRUcmFja0N1ZT46OmRlcmVmOworCitwcm90ZWN0ZWQ6CisKKyAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCBFdmVudFRhcmdl
dERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOworCiBwcml2YXRlOgogICAgIFRleHRUcmFj
a0N1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIHN0
YXJ0LCBkb3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgc2V0
dGluZ3MsIGJvb2wgcGF1c2VPbkV4aXQpOwogCiAgICAgdm9pZCBwYXJzZVNldHRpbmdzKGNvbnN0
IFN0cmluZyYpOwogICAgIAorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVm
KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQor
ICAgIAogICAgIFRleHRUcmFjayogbV90cmFjazsKICAgICAKICAgICBTdHJpbmcgbV9pZDsKQEAg
LTEwMSw2ICsxMTYsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBt
X2RvY3VtZW50RnJhZ21lbnQ7CiAKICAgICBib29sIG1faXNBY3RpdmU7CisgICAgCisgICAgRXZl
bnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlLmlkbAppbmRleCBmY2U5NWE2YmEyODQxYzFm
N2IzMTJhMThiMzE5MWIwOTIwOGIxOWNmLi5mYWMxZTA0ODhlODY2MDZiOGIzMGI4MjcxMjFhM2Q3
YTYyMGE0NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuaWRsCkBAIC0zMSw3ICsz
MSw4IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgQ2FuQmVDb25zdHJ1Y3RlZCwKICAgICAgICAg
R2VuZXJhdGVOYXRpdmVDb252ZXJ0ZXIsCiAgICAgICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmlu
ZyBpZCwgaW4gZG91YmxlIHN0YXJ0VGltZSwgaW4gZG91YmxlIGVuZFRpbWUsIGluIERPTVN0cmlu
ZyB0ZXh0LCBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyBzZXR0
aW5ncywgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBib29sZWFuIHBhdXNlT25F
eGl0KSwKLSAgICAgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgICAgICBD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAorICAgICAgICBFdmVudFRhcmdldAogICAg
IF0gVGV4dFRyYWNrQ3VlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFjayB0
cmFjazsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpZDsKQEAgLTQ5LDYg
KzUwLDE5IEBAIG1vZHVsZSBodG1sIHsKIAogICAgICAgICBET01TdHJpbmcgZ2V0Q3VlQXNTb3Vy
Y2UoKTsKICAgICAgICAgRG9jdW1lbnRGcmFnbWVudCBnZXRDdWVBc0hUTUwoKTsKKyAgICAgICAg
CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZW50ZXI7CisgICAgICAgIGF0dHJp
YnV0ZSBFdmVudExpc3RlbmVyIG9uZXhpdDsKKyAgICAgICAgCisgICAgICAgIC8vIEV2ZW50VGFy
Z2V0IGludGVyZmFjZQorICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5n
IHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBs
aXN0ZW5lciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJv
b2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBE
T01TdHJpbmcgdHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVu
dExpc3RlbmVyIGxpc3RlbmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRj
aEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7
CiAgICAgfTsKIAogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCmluZGV4IDI4MzY5YWExZDA3YTYwMDJlNzhiYzA2OWQ3
ZDUwMzU0YzUxMGE2ZGIuLmJmYTk3ZTgwMGE2MzYzZjliNjkwYWZlY2MzY2JmNTUzYzQ3YzUzMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcApAQCAtNTYsNiArNTYs
MjAgQEAgVGV4dFRyYWNrQ3VlKiBUZXh0VHJhY2tDdWVMaXN0OjpnZXRDdWVCeUlkKGNvbnN0IFN0
cmluZyYgaWQpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK1RleHRUcmFja0N1ZUxpc3QqIFRl
eHRUcmFja0N1ZUxpc3Q6OmFjdGl2ZUN1ZXMoKQoreworICAgIGlmICghbV9hY3RpdmVDdWVzKQor
ICAgICAgICBtX2FjdGl2ZUN1ZXMgPSBjcmVhdGUoKTsKKworICAgIG1fYWN0aXZlQ3Vlcy0+Y2xl
YXIoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGlzdC5zaXplKCk7ICsraSkgewor
ICAgICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUgPSBtX2xpc3RbaV07CisgICAgICAgIGlm
IChjdWUtPmlzQWN0aXZlKCkpCisgICAgICAgICAgICBtX2FjdGl2ZUN1ZXMtPmFkZChjdWUpOwor
ICAgIH0KKyAgICByZXR1cm4gbV9hY3RpdmVDdWVzLmdldCgpOworfQorCiB2b2lkIFRleHRUcmFj
a0N1ZUxpc3Q6OmFkZChjb25zdCBWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYgbmV3Q3Vl
cykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld0N1ZXMuc2l6ZSgpOyArK2kpCkBA
IC0xMDEsNiArMTE1LDExIEBAIGJvb2wgVGV4dFRyYWNrQ3VlTGlzdDo6Y29udGFpbnMoVGV4dFRy
YWNrQ3VlKiBjdWUpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGlzdC5jb250YWlucyhjdWUpOwogfQog
Cit2b2lkIFRleHRUcmFja0N1ZUxpc3Q6OmNsZWFyKCkKK3sKKyAgICBtX2xpc3QuY2xlYXIoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0VHJhY2tDdWVMaXN0LmgKaW5kZXggYWU0NzRlZTczZTQyYjI4YmJhZTFjNDEwZjZjYmJjZTkz
ZmZjNWQ1NS4uNzc0ODUwY2ZlMmU2YTViNWQzMjMzOGZiZjRkYzNjNzQ0NTZmZmUxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmgKQEAgLTU3LDggKzU3LDExIEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrQ3VlTGlzdCgpOwogICAgIHZvaWQgYWRkKFBhc3NS
ZWZQdHI8VGV4dFRyYWNrQ3VlPiwgc2l6ZV90LCBzaXplX3QpOworICAgIHZvaWQgY2xlYXIoKTsK
ICAgICAKICAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiBtX2xpc3Q7CisgICAgUmVm
UHRyPFRleHRUcmFja0N1ZUxpc3Q+IG1fYWN0aXZlQ3VlczsKKyAgICAKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJh
Y2tCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAppbmRl
eCA1NTM1ODQ4NjhlOGQ3MjFiM2RhYWJmNmQ4OTgzYjBiNjIxN2QyODBkLi42YTJjMzU4MjNlNjE5
NjJhMzdjOWY4ZjRjZWZkOTg5ZGRhYjUwZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
cmFja0Jhc2UuY3BwCkBAIC0zMCw3ICszMCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
VHJhY2tCYXNlOjpUcmFja0Jhc2UoVHlwZSB0eXBlKQorVHJhY2tCYXNlOjpUcmFja0Jhc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVHlwZSB0eXBlKQorICAgIDogbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKHR5cGUgIT0gQmFzZVRyYWNr
KTsKICAgICBtX3R5cGUgPSB0eXBlOwpAQCAtNDAsNiArNDEsMjYgQEAgVHJhY2tCYXNlOjp+VHJh
Y2tCYXNlKCkKIHsKIH0KIAorY29uc3QgQXRvbWljU3RyaW5nJiBUcmFja0Jhc2U6OmludGVyZmFj
ZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yVGV4
dFRyYWNrOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBUcmFja0Jhc2U6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogVHJhY2tCYXNlOjpldmVudFRhcmdldERhdGEo
KQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Cit9CisKK0V2ZW50VGFyZ2V0RGF0
YSogVHJhY2tCYXNlOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9l
dmVudFRhcmdldERhdGE7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAppbmRleCBkNDQ3MGEyM2IzYjZlNTE4Yjk1
NmRjZjQ4MzU5MzllNjViOGY3YjIwLi5jMDA2NjBmMDUzYWQ2NDk0MTY1OGYyMGQ3NTAzMGNhYmM5
MzI3OTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmgKQEAgLTI4LDIyICsy
OCw0MCBAQAogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCisjaW5jbHVkZSAiRXZlbnRUYXJn
ZXQuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFRyYWNrQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNrQmFzZT4geworY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3MgVHJhY2tCYXNlIDogcHVibGljIFJl
ZkNvdW50ZWQ8VHJhY2tCYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5UcmFja0Jhc2UoKTsKIAogICAgIGVudW0gVHlwZSB7IEJhc2VUcmFjaywgVGV4dFRy
YWNrLCBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrIH07CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9CiAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJm
YWNlTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAgIAorICAgIHVzaW5nIFJlZkNvdW50ZWQ8
VHJhY2tCYXNlPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8VHJhY2tCYXNlPjo6ZGVyZWY7
CisKIHByb3RlY3RlZDoKLSAgICBUcmFja0Jhc2UoVHlwZSk7CisgICAgVHJhY2tCYXNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBUeXBlKTsKKyAgICAKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0
RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVu
c3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwogCiBwcml2YXRlOgogICAgIFR5cGUgbV90eXBlOworICAg
IAorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgIAorICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBFdmVudFRh
cmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZWUxZjYyY2E0YmYxMGE2NzJhZDE3NTA2ZGRkN2YyODIzYzFkNjdhNy4uMTgwOWE1
YzUxNmNiZDE1NGMzMzZiZjY1ZTE0ZGY1ZWE0MDMzYjE5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDExLTExLTA5ICBBbm5hIENhdmVuZGVyICA8YW5uYWNjQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBTdG9yYWdlIGFuZCByZXRyaWV2YWwgb2YgVGV4dFRyYWNrQ3VlcyBkdXJpbmcgdmlkZW8g
cGxheWJhY2ssIGluY2x1ZGluZworICAgICAgICBjdWVjaGFuZ2UsIGVudGVyLCBhbmQgZXhpdCBl
dmVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MDQ1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
bWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L2N1ZXMtY2hyb25vLW9yZGVyLnZ0dDogQWRkZWQu
CisgICAgICAgICogbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L2N1ZXMtb3ZlcmxhcHBpbmcu
dnR0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1jdWVzLWN1ZWNoYW5nZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtY3Vl
Y2hhbmdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtZW50
ZXItZXhpdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNr
LWN1ZXMtZW50ZXItZXhpdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFj
ay1jdWVzLXNlZWtpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFj
ay90cmFjay1jdWVzLXNlZWtpbmcuaHRtbDogQWRkZWQuCisKIDIwMTEtMTEtMDkgIFBhdmVsIEZl
bGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZDogbWFr
ZSBuZXcgaW5zcGVjdG9yIHRlc3QgcGFzcyBvbiBRdC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9jdWVzLWNocm9uby1vcmRlci52dHQgYi9MYXlv
dXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvY3Vlcy1jaHJvbm8tb3JkZXIudnR0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZkNmQ0ODRmODg4Y2Y1ODYwODc2Nzg4MTE3MTQ1OGRmNzFmZmZhMGMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQv
Y3Vlcy1jaHJvbm8tb3JkZXIudnR0CkBAIC0wLDAgKzEsMTQgQEAKK1dFQlZUVAorQ3VlcyB0aGF0
IGhhdmUgb3ZlcmxhcHBpbmcgdGltZSByYW5nZXMuCisKKzEKKzAwOjAwOjAxLjAwMCAtLT4gMDA6
MDA6MDIuMDAwCitCZWFyIGlzIENvbWluZyEhISEhCisKKzIKKzAwOjAwOjAyLjUwMCAtLT4gMDA6
MDA6MDMuNTAwCitJIHNhaWQgQmVhciBpcyBjb21pbmchISEhCisKKzMKKzAwOjAwOjA0LjAwMCAt
LT4gMDA6MDA6MDUuMDAwCitJIHNhaWQgQmVhciBpcyBjb21pbmcgbm93ISEhIQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2Nh
cHRpb25zLXdlYnZ0dC9jdWVzLW92ZXJsYXBwaW5nLnZ0dCBiL0xheW91dFRlc3RzL21lZGlhL3Ry
YWNrL2NhcHRpb25zLXdlYnZ0dC9jdWVzLW92ZXJsYXBwaW5nLnZ0dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjAz
NWQzMzFmMDgyYTg2ZDJjNjNlMWNkY2NjZmM2MzExN2IxYTUxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L2N1ZXMtb3ZlcmxhcHBpbmcu
dnR0CkBAIC0wLDAgKzEsMTQgQEAKK1dFQlZUVAorQ3VlcyB0aGF0IGhhdmUgb3ZlcmxhcHBpbmcg
dGltZSByYW5nZXMuCisKKzEKKzAwOjAwOjAxLjAwMCAtLT4gMDA6MDA6MDYuMDAwCitCZWFyIGlz
IENvbWluZyEhISEhCisKKzIKKzAwOjAwOjAxLjUwMCAtLT4gMDA6MDA6MDUuMDAwCitJIHNhaWQg
QmVhciBpcyBjb21pbmchISEhCisKKzMKKzAwOjAwOjAyLjAwMCAtLT4gMDA6MDA6MDUuMDAwCitJ
IHNhaWQgQmVhciBpcyBjb21pbmcgbm93ISEhIQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtY3VlY2hhbmdl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtY3VlY2hh
bmdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWY0MmJmYjUxMjU0MTJkYjhlMDdmYWFiZGFh
MDM5ZWM1N2U4MmIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
dHJhY2stY3Vlcy1jdWVjaGFuZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzUgQEAKK1Rlc3Rz
IHRoYXQgVGV4dFRyYWNrJ3MgY3VlcyBhcmUgaW5kZXhlZCBhbmQgdXBkYXRlZCB3aXRoaW4gNTAw
bXMgZHVyaW5nIHZpZGVvIHBsYXliYWNrLiBUZXN0IHVzZXMgdGhlIGN1ZWNoYW5nZSBldmVudC4K
KworRVZFTlQoY2FucGxheXRocm91Z2gpCitFWFBFQ1RFRCAodGVzdFRyYWNrLnRyYWNrLmN1ZXMu
bGVuZ3RoID09ICczJykgT0sKK1JVTih2aWRlby5wbGF5KCkpCisKK1RoaXMgY3VlIGlzIHRoZSBj
dXJyZW50bHkgYWN0aXZlIGN1ZToKK0VYUEVDVEVEIChbb2JqZWN0IFRleHRUcmFja0N1ZV0gPT0g
J1tvYmplY3QgVGV4dFRyYWNrQ3VlXScpIE9LCitTdGFydCB0aW1lOgorRVhQRUNURUQgKHZpZGVv
LmN1cnJlbnRUaW1lID49ICcxJykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA8ICcx
LjUnKSBPSworRW5kIHRpbWU6CitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPj0gJzInKSBP
SworRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lIDwgJzIuNScpIE9LCisKK1RoaXMgY3VlIGlz
IHRoZSBjdXJyZW50bHkgYWN0aXZlIGN1ZToKK0VYUEVDVEVEIChbb2JqZWN0IFRleHRUcmFja0N1
ZV0gPT0gJ1tvYmplY3QgVGV4dFRyYWNrQ3VlXScpIE9LCitTdGFydCB0aW1lOgorRVhQRUNURUQg
KHZpZGVvLmN1cnJlbnRUaW1lID49ICcyLjUnKSBPSworRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRU
aW1lIDwgJzMnKSBPSworRW5kIHRpbWU6CitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPj0g
JzMuNScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPCAnNCcpIE9LCisKK1RoaXMg
Y3VlIGlzIHRoZSBjdXJyZW50bHkgYWN0aXZlIGN1ZToKK0VYUEVDVEVEIChbb2JqZWN0IFRleHRU
cmFja0N1ZV0gPT0gJ1tvYmplY3QgVGV4dFRyYWNrQ3VlXScpIE9LCitTdGFydCB0aW1lOgorRVhQ
RUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID49ICc0JykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJy
ZW50VGltZSA8ICc0LjUnKSBPSworRW5kIHRpbWU6CitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRp
bWUgPj0gJzUnKSBPSworRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lIDwgJzUuNScpIE9LCisK
K0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNr
LWN1ZXMtY3VlY2hhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWVz
LWN1ZWNoYW5nZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjMmY2NGUxNDg1MDdjNjk0NzA1NmNkZjYwZDJj
ODI4ZTExOTIyMTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90
cmFjay1jdWVzLWN1ZWNoYW5nZS5odG1sCkBAIC0wLDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgorCisgICAgICAgIDxz
Y3JpcHQgc3JjPS4uL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3Jj
PS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAg
ICAgICA8cD5UZXN0cyB0aGF0IFRleHRUcmFjaydzIGN1ZXMgYXJlIGluZGV4ZWQgYW5kIHVwZGF0
ZWQgd2l0aGluIDUwMG1zIGR1cmluZyB2aWRlbyBwbGF5YmFjay4gVGVzdCB1c2VzIHRoZSBjdWVj
aGFuZ2UgZXZlbnQuPC9wPgorICAgICAgICA8dmlkZW8gY29udHJvbHM+CisgICAgICAgICAgICA8
dHJhY2sgaWQ9InRlc3RUcmFjayIgc3JjPSJjYXB0aW9ucy13ZWJ2dHQvY3Vlcy1jaHJvbm8tb3Jk
ZXIudnR0IiBraW5kPSJjYXB0aW9ucyI+CisgICAgICAgIDwvdmlkZW8+CisgICAgICAgIDxzY3Jp
cHQ+ICAgICAgICAgICAgCisKKyAgICAgICAgdmFyIHRpbWVJbnRlcnZhbCA9IDAuNTsKKyAgICAg
ICAgdmFyIGN1ZUNoYW5nZUNvdW50ID0gMDsKKyAgICAgICAgdmFyIHRlc3RUcmFjazsKKworICAg
ICAgICBmdW5jdGlvbiBjdWVDaGFuZ2VkKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGN1
ZXMgPSB0ZXN0VHJhY2sudHJhY2suY3VlczsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFy
IGN1cnJlbnRDdWUgPSBjdWVzW01hdGguZmxvb3IoY3VlQ2hhbmdlQ291bnQvMildOworCisgICAg
ICAgICAgICBpZiAoY3VlQ2hhbmdlQ291bnQgJSAyID09IDApIHsKKyAgICAgICAgICAgICAgICBj
b25zb2xlV3JpdGUoIlRoaXMgY3VlIGlzIHRoZSBjdXJyZW50bHkgYWN0aXZlIGN1ZToiKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoY3VycmVudEN1ZSwgdGVzdFRyYWNrLnRyYWNrLmFj
dGl2ZUN1ZXNbMF0pOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU3RhcnQgdGltZToi
KTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJlbnRUaW1lIiwgY3Vy
cmVudEN1ZS5zdGFydFRpbWUsICc+PScpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
dmlkZW8uY3VycmVudFRpbWUiLCBjdXJyZW50Q3VlLnN0YXJ0VGltZSArIHRpbWVJbnRlcnZhbCwg
JzwnKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCJFbmQgdGltZToiKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJl
bnRUaW1lIiwgY3VycmVudEN1ZS5lbmRUaW1lLCAnPj0nKTsKKyAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInZpZGVvLmN1cnJlbnRUaW1lIiwgY3VycmVudEN1ZS5lbmRUaW1lICsgdGltZUlu
dGVydmFsLCAnPCcpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICsrY3VlQ2hhbmdlQ291bnQ7CisgICAgICAgICAgICBpZiAo
Y3VlQ2hhbmdlQ291bnQgPT0gdGVzdFRyYWNrLnRyYWNrLmN1ZXMubGVuZ3RoICogMikKKyAgICAg
ICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICB3YWl0Rm9yRXZlbnQo
J2NhbnBsYXl0aHJvdWdoJywKKyAgICAgICAgICAgIGZ1bmN0aW9uICgpIAorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHRlc3RUcmFjayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
ZXN0VHJhY2siKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRlc3RUcmFjay50cmFj
ay5jdWVzLmxlbmd0aCIsIDMpOworICAgICAgICAgICAgICAgIHRlc3RUcmFjay50cmFjay5hZGRF
dmVudExpc3RlbmVyKCdjdWVjaGFuZ2UnLCBjdWVDaGFuZ2VkKTsKKyAgICAgICAgICAgICAgICBy
dW4oInZpZGVvLnBsYXkoKSIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7Cisg
ICAgICAgICAgICB9CisgICAgICAgICk7CisKKyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwor
ICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L3Rl
c3QiKTsKKyAgICAgICAgCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtZW50ZXItZXhp
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWVzLWVudGVy
LWV4aXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2ZTM4OGZjYjgxZTFiMGVmODRlMzNhMTVj
MWMxNGY4NGE5ZTFlZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay90cmFjay1jdWVzLWVudGVyLWV4aXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzUgQEAKK1Rl
c3RzIHRoYXQgVGV4dFRyYWNrJ3MgY3VlcyBhcmUgaW5kZXhlZCBhbmQgdXBkYXRlZCB3aXRoaW4g
NTAwbXMgZHVyaW5nIHZpZGVvIHBsYXliYWNrLiBUZXN0IHVzZXMgdGhlIGVudGVyIGFuZCBleGl0
cyBldmVudHMgb24gVGV4dFRyYWNrQ3VlLgorCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK0VYUEVD
VEVEICh0ZXN0VHJhY2sudHJhY2suY3Vlcy5sZW5ndGggPT0gJzMnKSBPSworUlVOKHZpZGVvLnBs
YXkoKSkKKworVGhpcyBjdWUgaXMgdGhlIGN1cnJlbnRseSBhY3RpdmUgY3VlOgorRVhQRUNURUQg
KFtvYmplY3QgVGV4dFRyYWNrQ3VlXSA9PSAnW29iamVjdCBUZXh0VHJhY2tDdWVdJykgT0sKK1N0
YXJ0IHRpbWU6CitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPj0gJzEnKSBPSworRVhQRUNU
RUQgKHZpZGVvLmN1cnJlbnRUaW1lIDwgJzEuNScpIE9LCitFbmQgdGltZToKK0VYUEVDVEVEICh2
aWRlby5jdXJyZW50VGltZSA+PSAnMicpIE9LCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUg
PCAnMi41JykgT0sKKworVGhpcyBjdWUgaXMgdGhlIGN1cnJlbnRseSBhY3RpdmUgY3VlOgorRVhQ
RUNURUQgKFtvYmplY3QgVGV4dFRyYWNrQ3VlXSA9PSAnW29iamVjdCBUZXh0VHJhY2tDdWVdJykg
T0sKK1N0YXJ0IHRpbWU6CitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPj0gJzIuNScpIE9L
CitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPCAnMycpIE9LCitFbmQgdGltZToKK0VYUEVD
VEVEICh2aWRlby5jdXJyZW50VGltZSA+PSAnMy41JykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJy
ZW50VGltZSA8ICc0JykgT0sKKworVGhpcyBjdWUgaXMgdGhlIGN1cnJlbnRseSBhY3RpdmUgY3Vl
OgorRVhQRUNURUQgKFtvYmplY3QgVGV4dFRyYWNrQ3VlXSA9PSAnW29iamVjdCBUZXh0VHJhY2tD
dWVdJykgT0sKK1N0YXJ0IHRpbWU6CitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPj0gJzQn
KSBPSworRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lIDwgJzQuNScpIE9LCitFbmQgdGltZToK
K0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA+PSAnNScpIE9LCitFWFBFQ1RFRCAodmlkZW8u
Y3VycmVudFRpbWUgPCAnNS41JykgT0sKKworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1lbnRlci1leGl0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWVzLWVudGVyLWV4aXQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
Mjc5ZWQ1MjU2OGY0NWY1MmNiNmVlN2I0MzBjYmQ4OTQ2YmNiZjExCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1lbnRlci1leGl0Lmh0bWwKQEAg
LTAsMCArMSw2NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9dXRmLTgiIC8+CisKKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vbWVkaWEtZmlsZS5qcz48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPlRlc3RzIHRoYXQgVGV4dFRyYWNr
J3MgY3VlcyBhcmUgaW5kZXhlZCBhbmQgdXBkYXRlZCB3aXRoaW4gNTAwbXMgZHVyaW5nIHZpZGVv
IHBsYXliYWNrLiBUZXN0IHVzZXMgdGhlIGVudGVyIGFuZCBleGl0cyBldmVudHMgb24gVGV4dFRy
YWNrQ3VlLjwvcD4KKyAgICAgICAgPHZpZGVvIGNvbnRyb2xzPgorICAgICAgICAgICAgPHRyYWNr
IGlkPSJ0ZXN0VHJhY2siIHNyYz0iY2FwdGlvbnMtd2VidnR0L2N1ZXMtY2hyb25vLW9yZGVyLnZ0
dCIga2luZD0iY2FwdGlvbnMiPgorICAgICAgICA8L3ZpZGVvPgorICAgICAgICA8c2NyaXB0PiAg
ICAgICAgICAgIAorICAgICAgICAgICAgCisgICAgICAgIHZhciB0aW1lSW50ZXJ2YWwgPSAwLjUK
KyAgICAgICAgdmFyIGN1ZUNvdW50ID0gMDsKKyAgICAgICAgdmFyIHRlc3RUcmFjazsKKworICAg
ICAgICBmdW5jdGlvbiBjdWVFbnRlcmVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGN1
cnJlbnRDdWUgPSB0ZXN0VHJhY2sudHJhY2suY3Vlc1tjdWVDb3VudF07CisKKyAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiVGhpcyBjdWUgaXMgdGhlIGN1cnJlbnRseSBhY3RpdmUgY3VlOiIpOwor
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKGN1cnJlbnRDdWUsIHRlc3RUcmFjay50cmFjay5hY3Rp
dmVDdWVzWzBdKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU3RhcnQgdGltZToiKTsKKyAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uY3VycmVudFRpbWUiLCBjdXJyZW50Q3VlLnN0
YXJ0VGltZSwgJz49Jyk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJlbnRU
aW1lIiwgY3VycmVudEN1ZS5zdGFydFRpbWUgKyB0aW1lSW50ZXJ2YWwsICc8Jyk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjdWVFeGl0ZWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgY3VycmVudEN1ZSA9IHRlc3RUcmFjay50cmFjay5jdWVzW2N1ZUNvdW50XTsKKworICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCJFbmQgdGltZToiKTsKKyAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8uY3VycmVudFRpbWUiLCBjdXJyZW50Q3VlLmVuZFRpbWUsICc+PScpOworICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5jdXJyZW50VGltZSIsIGN1cnJlbnRDdWUuZW5k
VGltZSArIHRpbWVJbnRlcnZhbCwgJzwnKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7
CisKKyAgICAgICAgICAgICsrY3VlQ291bnQ7CisgICAgICAgICAgICBpZiAoY3VlQ291bnQgPT0g
dGVzdFRyYWNrLnRyYWNrLmN1ZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLAorICAg
ICAgICAgICAgZnVuY3Rpb24gKCkgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGVz
dFRyYWNrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RUcmFjayIpOworICAgICAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgidGVzdFRyYWNrLnRyYWNrLmN1ZXMubGVuZ3RoIiwgMyk7Cisg
ICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0VHJhY2sudHJhY2suY3Vlcy5s
ZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0ZXN0VHJhY2sudHJhY2suY3Vlc1tp
XS5hZGRFdmVudExpc3RlbmVyKCdlbnRlcicsIGN1ZUVudGVyZWQpOworICAgICAgICAgICAgICAg
ICAgICB0ZXN0VHJhY2sudHJhY2suY3Vlc1tpXS5hZGRFdmVudExpc3RlbmVyKCdleGl0JywgY3Vl
RXhpdGVkKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcnVuKCJ2aWRlby5w
bGF5KCkiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAg
fQorICAgICAgICApOworCisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgdmlk
ZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4vY29udGVudC90ZXN0Iik7CisgICAg
ICAgIAorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWVzLXNlZWtpbmctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1zZWVraW5nLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jZDRlYThhY2ZlYWQ0Mjk2MzEwOWM1N2MwODc3OTNlYWIzNTk2NjA0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1zZWVr
aW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMyIEBACitUZXN0cyBUZXh0VHJhY2sncyBhY3Rp
dmVDdWVzIGFyZSBpbmRleGVkIGFuZCB1cGRhdGVkIGR1cmluZyB2aWRlbyBwbGF5YmFjay4KKwor
RVZFTlQoY2FucGxheXRocm91Z2gpCitFWFBFQ1RFRCAodGVzdFRyYWNrLnRyYWNrLmN1ZXMubGVu
Z3RoID09ICczJykgT0sKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDAuNSkKKworRVZFTlQoc2Vl
a2VkKQorCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPT0gJzAuNScpIE9LCitFWFBFQ1RF
RCAoYWN0aXZlQ3Vlcy5sZW5ndGggPT0gJzAnKSBPSworUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0g
MSkKKworRVZFTlQoc2Vla2VkKQorCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPT0gJzEn
KSBPSworRVhQRUNURUQgKGFjdGl2ZUN1ZXMubGVuZ3RoID09ICcxJykgT0sKK1JVTih2aWRlby5j
dXJyZW50VGltZSA9IDEuNSkKKworRVZFTlQoc2Vla2VkKQorCitFWFBFQ1RFRCAodmlkZW8uY3Vy
cmVudFRpbWUgPT0gJzEuNScpIE9LCitFWFBFQ1RFRCAoYWN0aXZlQ3Vlcy5sZW5ndGggPT0gJzIn
KSBPSworUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMikKKworRVZFTlQoc2Vla2VkKQorCitFWFBF
Q1RFRCAodmlkZW8uY3VycmVudFRpbWUgPT0gJzInKSBPSworRVhQRUNURUQgKGFjdGl2ZUN1ZXMu
bGVuZ3RoID09ICczJykgT0sKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDIuNSkKKworRU5EIE9G
IFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1z
ZWVraW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWVzLXNlZWtpbmcu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jODkwYjRhMWUzYjQ4NjFhYjMwZGUxZjMxMWYwZmI0NjZhNDI0ZTk3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1z
ZWVraW5nLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CisKKyAgICAgICAgPHNjcmlwdCBzcmM9Li4v
bWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVz
dC5qcz48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPlRlc3Rz
IFRleHRUcmFjaydzIGFjdGl2ZUN1ZXMgYXJlIGluZGV4ZWQgYW5kIHVwZGF0ZWQgZHVyaW5nIHZp
ZGVvIHBsYXliYWNrLjwvcD4KKyAgICAgICAgPHZpZGVvIGNvbnRyb2xzPgorICAgICAgICAgICAg
PHRyYWNrIGlkPSJ0ZXN0VHJhY2siIHNyYz0iY2FwdGlvbnMtd2VidnR0L2N1ZXMtb3ZlcmxhcHBp
bmcudnR0IiBraW5kPSJzdWJ0aXRsZXMiPgorICAgICAgICA8L3ZpZGVvPgorICAgICAgICA8c2Ny
aXB0PiAgICAgICAgICAgIAorICAgICAgICAgICAgCisgICAgICAgIHZhciBzZWVrZWRDb3VudCA9
IDA7CisgICAgICAgIHZhciB0ZXN0VHJhY2s7CisKKyAgICAgICAgZnVuY3Rpb24gc2Vla2VkKCkK
KyAgICAgICAgeyAKKyAgICAgICAgICAgICsrc2Vla2VkQ291bnQ7CisgICAgICAgICAgICBjb25z
b2xlV3JpdGUoIiIpOworCisgICAgICAgICAgICBhY3RpdmVDdWVzID0gdGVzdFRyYWNrLnRyYWNr
LmFjdGl2ZUN1ZXM7CisKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uY3VycmVudFRp
bWUiLCBzZWVrZWRDb3VudCAqIDAuNSk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImFjdGl2
ZUN1ZXMubGVuZ3RoIiwgc2Vla2VkQ291bnQgLSAxKTsKKyAgICAgICAgICAgIHJ1bigidmlkZW8u
Y3VycmVudFRpbWUgPSAiICsgKHNlZWtlZENvdW50ICsgMSkgKiAwLjUpOworCisgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIiIpOworCisgICAgICAgICAgICBpZiAoc2Vla2VkQ291bnQgPT0gNCkK
KyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgd2Fp
dEZvckV2ZW50KCdzZWVrZWQnLCBzZWVrZWQgKTsKKworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2Nh
bnBsYXl0aHJvdWdoJywKKyAgICAgICAgICAgIGZ1bmN0aW9uICgpIAorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHRlc3RUcmFjayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0
VHJhY2siKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRlc3RUcmFjay50cmFjay5j
dWVzLmxlbmd0aCIsIDMpOworICAgICAgICAgICAgICAgIHJ1bigidmlkZW8uY3VycmVudFRpbWUg
PSAwLjUiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAg
fQorICAgICAgICApOworCisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgdmlk
ZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiLi4vY29udGVudC90ZXN0Iik7CisgICAg
ICAgIAorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114764</attachid>
            <date>2011-11-11 13:43:35 -0800</date>
            <delta_ts>2011-11-11 16:40:10 -0800</delta_ts>
            <desc>addressing reviewer comments and updating to ToT</desc>
            <filename>bug-70452-20111111134334.patch</filename>
            <type>text/plain</type>
            <size>46331</size>
            <attacher name="Anna Cavender">annacc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk5ODYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0Y2IzNWUwMjkzMzA1NGZl
YzAzMWZiMWNjNDllNjkzOTM1NzA3NTk5Li43ZjNmN2E3M2VkMGJiNWEyZDk0ZmUyNTg2ZDI3YThh
OTU1MTdmOTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA2IEBACisyMDExLTExLTExICBBbm5h
IENhdmVuZGVyICA8YW5uYWNjQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdG9yYWdlIGFuZCBy
ZXRyaWV2YWwgb2YgVGV4dFRyYWNrQ3VlcyBkdXJpbmcgdmlkZW8gcGxheWJhY2ssIGluY2x1ZGlu
ZworICAgICAgICBjdWVjaGFuZ2UsIGVudGVyLCBhbmQgZXhpdCBldmVudHMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDQ1MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBtZWRpYS90cmFjay90
cmFjay1jdWVzLWN1ZWNoYW5nZS5odG1sCisgICAgICAgICAgICAgICBtZWRpYS90cmFjay90cmFj
ay1jdWVzLWVudGVyLWV4aXQuaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvdHJhY2svdHJhY2st
Y3Vlcy1zZWVraW5nLmh0bWwKKworICAgICAgICBBZGQgY3VlY2hhbmdlLCBlbnRlciwgYW5kIGV4
aXQgZXZlbnRzIGFuZCBtYWtlIFRleHRUcmFjayBhbmQKKyAgICAgICAgVGV4dFRyYWNrQ3VlIEV2
ZW50VGFyZ2V0czoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9F
dmVudFRhcmdldC5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQpOgorICAgICAgICAgICAgUmVtb3ZlIGNhbGwg
dG8gY29uZmlndXJlVGV4dFRyYWNrcygpLCB0aGlzIGlzIGNvdmVyZWQgYnkgdHJhY2tXYXNBZGRl
ZCgpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4
dFRyYWNrQ3Vlcyk6CisgICAgICAgICAgICBVcGRhdGVzIHRoZSBsaXN0IG9mIGN1cnJlbnRseSBh
Y3RpdmUgY3VlcyBkdXJpbmcgcGxheWJhY2suCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKToKKyAgICAgICAgICAgIEFkZHMgY3VlcyB0byBjdWVU
cmVlLiAgQ2FsbGVkIHdoZW4gY3VlcyBhcmUgZGlzY292ZXJlZC9sb2FkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKToKKyAgICAgICAg
ICAgIFJlbW92ZXMgY3VlcyBmcm9tIGN1ZVRyZWUuICBDYWxsZWQgd2hlbiBjdWVzIGFuZC9vciB0
cmFja3MgZGllLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
QWRkQ3VlKToKKyAgICAgICAgICAgIEFkZHMgYSBjdWUgdG8gY3VlVHJlZS4gIENhbGxlZCB3aGVu
IGN1ZXMgYXJlIGRpc2NvdmVyZWQvbG9hZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlKToKKyAgICAgICAgICAgIFJlbW92ZXMgYSBjdWUg
ZnJvbSBjdWVUcmVlLiAgQ2FsbGVkIHdoZW4gY3VlcyBhbmQvb3IgdHJhY2tzIGRpZS4KKworICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tQcm9ncmVzc1RpbWVyRmly
ZWQpOgorICAgICAgICAgICAgVXBkYXRlIHRoZSBhY3RpdmUgVGV4dFRyYWNrQ3VlcyB3aGVuIHBs
YXliYWNrUHJvZ3Jlc3NUaW1lckZpcmVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6YWRkVHJhY2spOgorICAgICAgICAgICAgUGFzcyBhbG9uZyBhIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgdG8gVGV4dFRyYWNrOjpjcmVhdGUoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQpOgorICAgICAgICAgICAgVXBkYXRl
IHRoZSBhY3RpdmUgVGV4dFRyYWNrQ3VlcyB3aGVuIHRoZSBtZWRpYSBwbGF5ZXIgdGltZSBjaGFu
Z2VzLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAgICAgVXNl
IGEgUG9kSW50ZXJ2YWxUcmVlIGN1ZVRyZWUgdG8gc3RvcmUgYW5kIHJldHJpZXZlIFRleHRUcmFj
a0N1ZXMKKyAgICAgICAgICAgIGR1cmluZyBwbGF5YmFjay4KKworICAgICAgICAqIGh0bWwvSFRN
TFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojpl
bnN1cmVUcmFjayk6CisgICAgICAgICAgICBQYXNzIGFsb25nIGEgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCBuZWVkZWQgZm9yIEV2ZW50VGFyZ2V0IGludGVyZmFjZS4KKyAgICAgICAgKiBodG1sL0xv
YWRhYmxlVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNr
OjpMb2FkYWJsZVRleHRUcmFjayk6CisgICAgICAgICAgICBQYXNzIGFsb25nIGEgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCBuZWVkZWQgZm9yIEV2ZW50VGFyZ2V0IGludGVyZmFjZS4KKyAgICAgICAg
KFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjpmaXJlQ3VlQ2hhbmdlRXZlbnQpOgorICAgICAg
ICAgICAgRmlyZSBhIGN1ZSBjaGFuZ2UgZXZlbnQgb24gdGhpcyBUZXh0VHJhY2sncyA8dHJhY2s+
CisgICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6
TG9hZGFibGVUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgICAgICBQYXNzIGFsb25nIGEgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCBuZWVkZWQgZm9yIEV2ZW50VGFyZ2V0IGludGVyZmFjZS4KKyAg
ICAgICAgKiBodG1sL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OlRleHRUcmFjayk6CisgICAgICAgICAgICBQYXNzIGFsb25nIGEgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCBuZWVkZWQgZm9yIEV2ZW50VGFyZ2V0IGludGVyZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFjazo6Y3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmFjdGl2ZUN1
ZXMpOgorICAgICAgICAgICAgUmV0dXJuIGEgVGV4dFRyYWNrQ3VlTGlzdCB0aGF0IHJlcHJlc2Vu
dHMgdGhlIGN1cnJlbnRseSBhY3RpdmUgY3Vlcy4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
azo6ZmlyZUN1ZUNoYW5nZUV2ZW50KToKKyAgICAgICAgICAgIEZpcmVzIGEgY3VlIGNoYW5nZSBl
dmVudC4KKyAgICAgICAgKiBodG1sL1RleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAgICAgUGFzcyBhbG9uZyBhIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgbmVlZGVkIGZvciBFdmVudFRhcmdldCBpbnRlcmZhY2UuCisgICAgICAgICogaHRt
bC9UZXh0VHJhY2suaWRsOgorICAgICAgICAgICAgTWFrZXMgVGV4dFRyYWNrIGV4dGVuZCBFdmVu
dFRhcmdldCBpbnRlcmZhY2UgYW5kIGFkZCBvbmN1ZWNoYW5nZS4KKyAgICAgICAgKiBodG1sL1Rl
eHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OlRleHRUcmFj
a0N1ZSk6CisgICAgICAgICAgICBUZXh0VHJhY2tDdWUgc2hvdWxkIGV4dGVuZCBFdmVudFRhcmdl
dCwgbm90IEFjdGl2ZURPTU9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6
aXNBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpzZXRJc0FjdGl2ZSk6
CisgICAgICAgICAgICBEaXNwYXRjaCBhbiBlbnRlciBvciBleGl0IGV2ZW50IGRlcGVuZGluZyBv
biBhY3RpdmUgc3RhdGUgYW5kIG5vdGlmeQorICAgICAgICAgICAgdGhlIGNvcnJlc3BvbmRpbmcg
dHJhY2sgdG8gZmlyZSBhIGN1ZWNoYW5nZSBldmVudC4KKworICAgICAgICBUaGUgZm9sbG93aW5n
IGFyZSBuZWVkZWQgZm9yIEV2ZW50VGFyZ2V0IGludGVyZmFjZToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0N1ZTo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJh
Y2tDdWU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrQ3VlOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3Vl
OjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNrQ3VlLmg6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6ZGVyZWZFdmVudFRhcmdldCk6CisKKyAgICAgICAg
KiBodG1sL1RleHRUcmFja0N1ZS5pZGw6CisgICAgICAgICAgICBFeHRlbmQgRXZlbnRUYXJnZXQg
YW5kIGFkZCBvbmVudGVyIGFuZCBvbmV4aXQuCisgICAgICAgICogaHRtbC9UZXh0VHJhY2tDdWVM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUxpc3Q6OmFjdGl2ZUN1ZXMp
OgorICAgICAgICAgICAgVXBkYXRlIGFuZCByZXR1cm4gdGhlIGxpc3Qgb2YgY3VycmVudGx5IGFj
dGl2ZSBjdWVzLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6Y2xlYXIpOgor
ICAgICAgICAgICAgQ2xlYXIgdGhlIGN1ZXMgZnJvbSBsaXN0IChuZWVkZWQgdG8gcmV0dXJuIHNh
bWUgb2JqZWN0IGVhY2ggdGltZSkuCisgICAgICAgICogaHRtbC9UZXh0VHJhY2tDdWVMaXN0Lmg6
CisKKyAgICAgICAgVGhlIGZvbGxvd2luZyBhcmUgbmVlZGVkIGZvciBFdmVudFRhcmdldCBpbnRl
cmZhY2U6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhY2tCYXNlOjpUcmFja0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNl
OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OmV2ZW50VGFyZ2V0
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0
YSk6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlRyYWNrQmFzZTo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tCYXNl
OjpkZXJlZkV2ZW50VGFyZ2V0KToKKwogMjAxMS0xMS0xMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgVGV4dFRyYWNrTGlzdCBhbmQg
dGhlIHRleHRUcmFja3MgYXR0cmlidXRlIG9mIEhUTUxNZWRpYUVsZW1lbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5oCmluZGV4IDZjMmY0MzU0OTNhMWU2ZjQ2ODUxOWVlYmI1ZmMzMTRlNTZkNzlmMjQu
LmM1MzZjZmMwMDQ4MGNjNzRkNGVhMTJlZGYxYmQ2ZTdmNDc1N2U5ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaApAQCAtMTQ2LDYgKzE0Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBt
YWNybyh3YWl0aW5nKSBcCiAgICAgXAogICAgIG1hY3JvKGFkZHRyYWNrKSBcCisgICAgbWFjcm8o
Y3VlY2hhbmdlKSBcCisgICAgbWFjcm8oZW50ZXIpIFwKKyAgICBtYWNybyhleGl0KSBcCiAgICAg
XAogICAgIG1hY3JvKHdlYmtpdGJlZ2luZnVsbHNjcmVlbikgXAogICAgIG1hY3JvKHdlYmtpdGVu
ZGZ1bGxzY3JlZW4pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggYzZmMWYzZDQ0M2I4
NWI2ZjY0MjBjZWVjOTRiZWZiMjI3ODYyZDQ0Ni4uZTYyMWI1ZDFhOGFhYmY0ZmIyMDE0MDk1YWZm
MGVkYmFmYjkyNzhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTY0LDYgKzY0LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyOwogICAgIGNsYXNzIFNoYXJlZFdvcmtlckNvbnRleHQ7
CisgICAgY2xhc3MgVGV4dFRyYWNrOworICAgIGNsYXNzIFRleHRUcmFja0N1ZTsKICAgICBjbGFz
cyBXZWJTb2NrZXQ7CiAgICAgY2xhc3MgV29ya2VyOwogICAgIGNsYXNzIFhNTEh0dHBSZXF1ZXN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggN2FjZjEyMTg2
MmMzYzgzZTgzNDk3NzI4Njk1ZWJkNGIxMTZkMzMzOC4uMGNlMjRmNTQzYjA3MWFhY2E1NjMzZTRh
MmVlODcwNmFiYjNjNWQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5
LmluCkBAIC0yMSw2ICsyMSw4IEBAIFBlZXJDb25uZWN0aW9uIGNvbmRpdGlvbmFsPU1FRElBX1NU
UkVBTQogU2hhcmVkV29ya2VyIGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCiBTaGFyZWRXb3Jr
ZXJDb250ZXh0IGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCiBTVkdFbGVtZW50SW5zdGFuY2Ug
Y29uZGl0aW9uYWw9U1ZHCitUZXh0VHJhY2sgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKK1RleHRU
cmFja0N1ZSBjb25kaXRpb25hbD1WSURFT19UUkFDSwogVGV4dFRyYWNrTGlzdCBjb25kaXRpb25h
bD1WSURFT19UUkFDSwogV2ViU29ja2V0IGNvbmRpdGlvbmFsPVdFQl9TT0NLRVRTCiBXb3JrZXIg
Y29uZGl0aW9uYWw9V09SS0VSUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKaW5kZXggZGYyMmJiMWFlNGQ2MTFjY2FiYzI2MTg4YTE5ODVjYTNlOTg2NjcyOS4uYTAwNDhm
MzZkODQ5OGZlZWJkMTU5NDgzYTVmNjQ3NDY5MWQzYTI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC04OSw2ICs4OSw3IEBACiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogI2luY2x1ZGUgIkhUTUxUcmFja0VsZW1lbnQuaCIKICNpbmNsdWRlICJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgogI2luY2x1
ZGUgIlRleHRUcmFja0xpc3QuaCIKICNlbmRpZgogCkBAIC01MDAsMTEgKzUwMSw2IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4q
KQogICAgICAgICAgICAgbG9hZEludGVybmFsKCk7CiAgICAgfQogCi0jaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQotICAgIGlmIChtX3BlbmRpbmdMb2FkRmxhZ3MgJiBUZXh0VHJhY2tSZXNvdXJjZSkK
LSAgICAgICAgY29uZmlndXJlVGV4dFRyYWNrcygpOwotI2VuZGlmCi0KICAgICBtX3BlbmRpbmdM
b2FkRmxhZ3MgPSAwOwogfQogCkBAIC04NjIsNiArODU4LDI3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bG9hZFJlc291cmNlKGNvbnN0IEtVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBj
b250ZW50CiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCit2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoZmxvYXQgbW92aWVUaW1lKQoreworICAgIFZl
Y3RvcjxDdWVJbnRlcnZhbFRyZWU6OkludGVydmFsVHlwZT4gcHJldmlvdXNseVZpc2libGVDdWVz
ID0gbV9jdXJyZW50bHlWaXNpYmxlQ3VlczsKKworICAgIG1fY3VycmVudGx5VmlzaWJsZUN1ZXMg
PSBtX2N1ZVRyZWUuYWxsT3ZlcmxhcHMobV9jdWVUcmVlLmNyZWF0ZUludGVydmFsKG1vdmllVGlt
ZSwgbW92aWVUaW1lKSk7CisgICAgCisgICAgLy8gRklYTUUoNzIxNzEpOiBFdmVudHMgbmVlZCB0
byBiZSBzb3J0ZWQgYW5kIGZpbHRlcmVkIGJlZm9yZSBkaXNwYXRjaGluZy4KKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcHJldmlvdXNseVZpc2libGVDdWVzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIGlmICghbV9jdXJyZW50bHlWaXNpYmxlQ3Vlcy5jb250YWlucyhwcmV2aW91c2x5Vmlz
aWJsZUN1ZXNbaV0pKQorICAgICAgICAgICAgcHJldmlvdXNseVZpc2libGVDdWVzW2ldLmRhdGEo
KS0+c2V0SXNBY3RpdmUoZmFsc2UpOworICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fY3VycmVudGx5VmlzaWJsZUN1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFwcmV2
aW91c2x5VmlzaWJsZUN1ZXMuY29udGFpbnMobV9jdXJyZW50bHlWaXNpYmxlQ3Vlc1tpXSkpCisg
ICAgICAgICAgICBtX2N1cnJlbnRseVZpc2libGVDdWVzW2ldLmRhdGEoKS0+c2V0SXNBY3RpdmUo
dHJ1ZSk7CisgICAgfQorICAgIAorICAgIC8vIEZJWE1FKDcyMTczKTogUGF1c2UgdGhlIG1lZGlh
IGVsZW1lbnQgZm9yIGN1ZXMgZ29pbmcgcGFzdCB0aGVpciBlbmRUaW1lCisgICAgLy8gZHVyaW5n
IGEgbW9ub3RvbmljIHRpbWUgaW5jcmVhc2UuCit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKikKIHsKICAgICAvLyBGSVhNRSg2
Mjg4NSk6IEltcGxlbWVudC4KQEAgLTg3MiwyNCArODg5LDI2IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKikKICAgICAvLyBGSVhNRSg2Mjg4
NSk6IEltcGxlbWVudC4KIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRD
dWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSAKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6dGV4dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVM
aXN0KiBjdWVzKSAKIHsKLSAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGN1ZXMtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIHRleHRUcmFj
a0FkZEN1ZShjdWVzLT5pdGVtKGkpLT50cmFjaygpLCBjdWVzLT5pdGVtKGkpKTsKIH0KIAotdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0
IFRleHRUcmFja0N1ZUxpc3QqKSAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVt
b3ZlQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0KiBjdWVzKSAKIHsKLSAg
ICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGN1ZXMtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIHRleHRUcmFja1JlbW92ZUN1ZShjdWVzLT5p
dGVtKGkpLT50cmFjaygpLCBjdWVzLT5pdGVtKGkpKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+
KQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiwgUGFz
c1JlZlB0cjxUZXh0VHJhY2tDdWU+IGN1ZSkKIHsKLSAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxl
bWVudC4KKyAgICBtX2N1ZVRyZWUuYWRkKG1fY3VlVHJlZS5jcmVhdGVJbnRlcnZhbChjdWUtPnN0
YXJ0VGltZSgpLCBjdWUtPmVuZFRpbWUoKSwgY3VlLmdldCgpKSk7CiB9CiAKLXZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4
dFRyYWNrQ3VlPikKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlKFRl
eHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUpCiB7Ci0gICAgLy8gRklYTUUo
NjI4ODUpOiBJbXBsZW1lbnQuCisgICAgbV9jdWVUcmVlLnJlbW92ZShtX2N1ZVRyZWUuY3JlYXRl
SW50ZXJ2YWwoY3VlLT5zdGFydFRpbWUoKSwgY3VlLT5lbmRUaW1lKCksIGN1ZS5nZXQoKSkpOwog
fQogCiAjZW5kaWYKQEAgLTE5NDAsNiArMTk1OSwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnBsYXliYWNrUHJvZ3Jlc3NUaW1lckZpcmVkKFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+KikKICAg
ICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICBtZWRpYUNvbnRyb2xzKCktPnBsYXli
YWNrUHJvZ3Jlc3NlZCgpOwogICAgIC8vIEZJWE1FOiBkZWFsIHdpdGggY3VlIHJhbmdlcyBoZXJl
CisgICAgCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGZsb2F0IG1vdmllVGltZSA9IGN1
cnJlbnRUaW1lKCk7CisgICAgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhtb3ZpZVRpbWUpOwor
I2VuZGlmCiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVUaW1ldXBkYXRlRXZl
bnQoYm9vbCBwZXJpb2RpY0V2ZW50KQpAQCAtMTk5Myw3ICsyMDE3LDcgQEAgUGFzc1JlZlB0cjxU
ZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwg
Y29uc3QgU3RyaW4KICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBGSVhNRSg3MTkxNSk6IGFk
ZFRyYWNrIHNob3VsZCB0aHJvdyBhIFN5bnRheEVycm9yIGV4Y2VwdGlvbiBpZiAna2luZCcgaXMg
YW4gdW5rbm93biB2YWx1ZS4KLSAgICBSZWZQdHI8VGV4dFRyYWNrPiB0ZXh0VHJhY2sgPSBUZXh0
VHJhY2s6OmNyZWF0ZSh0aGlzLCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpOworICAgIFJlZlB0cjxU
ZXh0VHJhY2s+IHRleHRUcmFjayA9IFRleHRUcmFjazo6Y3JlYXRlKEFjdGl2ZURPTU9iamVjdDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpOwog
ICAgIGFkZFRleHRUcmFjayh0ZXh0VHJhY2spOwogICAgIHJldHVybiB0ZXh0VHJhY2sucmVsZWFz
ZSgpOwogfQpAQCAtMjMyNSw2ICsyMzQ5LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICAgICAgbV9zZW50RW5kRXZlbnQg
PSBmYWxzZTsKIAogICAgIHVwZGF0ZVBsYXlTdGF0ZSgpOworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKyAgICB1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKG5vdyk7CisjZW5kaWYKICAgICBlbmRQ
cm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCmluZGV4IGY0YWJiNmMxOWNhYWM1ZmVkZWVjMTk5ZDU2MGRhMmRkMzQx
YWE5OTQuLmZiMzY4NmI3MGEyNWUxM2YwMTAwZDhhYzc0ZjdhNWE0YjdlZmI1ZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zOCw3ICszOCw5IEBACiAjZW5kaWYK
IAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJQT0RJbnRlcnZhbFRyZWUuaCIK
ICNpbmNsdWRlICJUZXh0VHJhY2suaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKICNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNzMsNiArMzc1LDcgQEAgcHJpdmF0ZToKIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2b2lkIGNvbmZpZ3VyZVRleHRUcmFja3MoKTsK
KyAgICB2b2lkIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoZmxvYXQpOwogI2VuZGlmCiAKICAg
ICAvLyBUaGVzZSAiaW50ZXJuYWwiIGZ1bmN0aW9ucyBkbyBub3QgY2hlY2sgdXNlciBnZXN0dXJl
IHJlc3RyaWN0aW9ucy4KQEAgLTUyNSw5ICs1MjgsMzQgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKICAgICBSZWZQdHI8VGV4dFRyYWNrTGlzdD4gbV90ZXh0VHJhY2tzOwor
ICAgIAorICAgIHR5cGVkZWYgUE9ESW50ZXJ2YWxUcmVlIDxkb3VibGUsIFRleHRUcmFja0N1ZSo+
IEN1ZUludGVydmFsVHJlZTsKKyAgICBDdWVJbnRlcnZhbFRyZWUgbV9jdWVUcmVlOworICAgIFZl
Y3RvcjxDdWVJbnRlcnZhbFRyZWU6OkludGVydmFsVHlwZT4gbV9jdXJyZW50bHlWaXNpYmxlQ3Vl
czsKICNlbmRpZgogfTsKIAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpZm5kZWYgTkRFQlVH
CisvLyBUZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMgcmVxdWlyZWQgYnkgUG9kSW50ZXJ2YWxUcmVl
IGluIGRlYnVnIG1vZGUuCit0ZW1wbGF0ZSA8Pgorc3RydWN0IFZhbHVlVG9TdHJpbmc8ZG91Ymxl
PiB7CisgICAgc3RhdGljIFN0cmluZyBzdHJpbmcoY29uc3QgZG91YmxlIHZhbHVlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHZhbHVlKTsKKyAgICB9Cit9OworCit0ZW1w
bGF0ZSA8Pgorc3RydWN0IFZhbHVlVG9TdHJpbmc8VGV4dFRyYWNrQ3VlKj4geworICAgIHN0YXRp
YyBTdHJpbmcgc3RyaW5nKFRleHRUcmFja0N1ZSogY29uc3QmIGN1ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXAgaWQ9JXMgaW50ZXJ2YWw9JWYtLT4lZiBjdWU9JXMp
IiwgY3VlLCBjdWUtPmlkKCkudXRmOCgpLmRhdGEoKSwgY3VlLT5zdGFydFRpbWUoKSwgY3VlLT5l
bmRUaW1lKCksIGN1ZS0+Z2V0Q3VlQXNTb3VyY2UoKS51dGY4KCkuZGF0YSgpKTsKKyAgICB9Cit9
OworI2VuZGlmCisjZW5kaWYKKwogfSAvL25hbWVzcGFjZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCmluZGV4IGE1YjA4YTJmOTc0M2YzNjAyYzdmMGNm
MTgzNDU5MDMwNGZjOWFlMzAuLmVlMDU1ZTVhNjVlMzMzN2E0ZTdiMDQ2YmE1NjMyZDVmNDQ5NWY4
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcApAQCAtMTU0LDcg
KzE1NCw3IEBAIExvYWRhYmxlVGV4dFRyYWNrKiBIVE1MVHJhY2tFbGVtZW50OjplbnN1cmVUcmFj
aygpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFtX3RyYWNrKQotICAgICAgICBtX3Ry
YWNrID0gTG9hZGFibGVUZXh0VHJhY2s6OmNyZWF0ZSh0aGlzLCBraW5kKCksIGxhYmVsKCksIHNy
Y2xhbmcoKSwgaXNEZWZhdWx0KCkpOworICAgICAgICBtX3RyYWNrID0gTG9hZGFibGVUZXh0VHJh
Y2s6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIGtpbmQoKSwgbGFiZWwo
KSwgc3JjbGFuZygpLCBpc0RlZmF1bHQoKSk7CiAgICAgcmV0dXJuIG1fdHJhY2suZ2V0KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAKaW5kZXggNzFjZWJh
OGI3ZTljMDkwNjBjYWViNWRhZTQxYWUzNmQ1NTg4MGY4OC4uZjRkNjZhYjAyYmViYzJkOTNmYTky
YzRiMmYwNzdkMzgxNjYyNjcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Mb2Fk
YWJsZVRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRU
cmFjay5jcHAKQEAgLTI5LDE0ICsyOSwxNiBAQAogCiAjaW5jbHVkZSAiTG9hZGFibGVUZXh0VHJh
Y2suaCIKIAorI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRyYWNrRWxlbWVudC5o
IgogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUxvYWRhYmxlVGV4dFRyYWNrOjpMb2FkYWJsZVRleHRUcmFjayhIVE1M
VHJhY2tFbGVtZW50KiB0cmFjaywgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxh
YmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCkKLSAgICA6IFRleHRU
cmFjayh0cmFjaywga2luZCwgbGFiZWwsIGxhbmd1YWdlKQorTG9hZGFibGVUZXh0VHJhY2s6Okxv
YWRhYmxlVGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEhUTUxUcmFj
a0VsZW1lbnQqIHRyYWNrLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWws
IGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQorICAgIDogVGV4dFRyYWNr
KGNvbnRleHQsIHRyYWNrLCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpCiAgICAgLCBtX3RyYWNrRWxl
bWVudCh0cmFjaykKICAgICAsIG1fbG9hZFRpbWVyKHRoaXMsICZMb2FkYWJsZVRleHRUcmFjazo6
bG9hZFRpbWVyRmlyZWQpCiAgICAgLCBtX2lzRGVmYXVsdChpc0RlZmF1bHQpCkBAIC0xMTEsNiAr
MTEzLDEzIEBAIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmN1ZUxvYWRpbmdDb21wbGV0ZWQoVGV4
dFRyYWNrTG9hZGVyKiBsb2FkZXIsIGJvb2wgbG9hZGluCiAgICAgICAgIG1fdHJhY2tFbGVtZW50
LT5kaWRDb21wbGV0ZUxvYWQodGhpcywgbG9hZGluZ0ZhaWxlZCk7CiB9CiAKK3ZvaWQgTG9hZGFi
bGVUZXh0VHJhY2s6OmZpcmVDdWVDaGFuZ2VFdmVudCgpCit7CisgICAgVGV4dFRyYWNrOjpmaXJl
Q3VlQ2hhbmdlRXZlbnQoKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBtX3RyYWNr
RWxlbWVudC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jdWVjaGFu
Z2VFdmVudCwgZmFsc2UsIGZhbHNlKSwgZWMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRU
cmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oCmluZGV4IDJk
ODgxOWI2OGZmMjA1ZDkzYmQzYzliNzY3ZmY4MzRhNDgyNzlkMzguLjAwOTY1M2NjYWNmMDMxY2Fm
Y2Q2NWFkNTkwNDlkYzUxNjBhOTA3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TG9hZGFibGVUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4
dFRyYWNrLmgKQEAgLTQ4LDkgKzQ4LDkgQEAgcHVibGljOgogCiBjbGFzcyBMb2FkYWJsZVRleHRU
cmFjayA6IHB1YmxpYyBUZXh0VHJhY2ssIHByaXZhdGUgVGV4dFRyYWNrTG9hZGVyQ2xpZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxMb2FkYWJsZVRleHRUcmFjaz4gY3JlYXRl
KEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPExvYWRhYmxlVGV4dFRyYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgSFRNTFRyYWNrRWxlbWVudCogdHJhY2ssIGNvbnN0IFN0cmluZyYg
a2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBp
c0RlZmF1bHQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IExvYWRhYmxlVGV4
dFRyYWNrKHRyYWNrLCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UsIGlzRGVmYXVsdCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IExvYWRhYmxlVGV4dFRyYWNrKGNvbnRleHQsIHRyYWNrLCBr
aW5kLCBsYWJlbCwgbGFuZ3VhZ2UsIGlzRGVmYXVsdCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5M
b2FkYWJsZVRleHRUcmFjaygpOwogCkBAIC02NSw5ICs2NSwxMSBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBjdWVMb2FkaW5nU3RhcnRlZChUZXh0VHJhY2tMb2FkZXIqKTsKICAgICB2aXJ0
dWFsIHZvaWQgY3VlTG9hZGluZ0NvbXBsZXRlZChUZXh0VHJhY2tMb2FkZXIqLCBib29sIGxvYWRp
bmdGYWlsZWQpOwogCi0gICAgTG9hZGFibGVUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCosIGNv
bnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5n
dWFnZSwgYm9vbCBpc0RlZmF1bHQpOworICAgIExvYWRhYmxlVGV4dFRyYWNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBIVE1MVHJhY2tFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25z
dCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCk7
CiAKICAgICB2b2lkIGxvYWRUaW1lckZpcmVkKFRpbWVyPExvYWRhYmxlVGV4dFRyYWNrPiopOwor
ICAgIAorICAgIHZpcnR1YWwgdm9pZCBmaXJlQ3VlQ2hhbmdlRXZlbnQoKTsKIAogICAgIEhUTUxU
cmFja0VsZW1lbnQqIG1fdHJhY2tFbGVtZW50OwogICAgIFRpbWVyPExvYWRhYmxlVGV4dFRyYWNr
PiBtX2xvYWRUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcAppbmRleCA2NDVlNTQ2YTAw
ODNlZTc4MDk2OGNkYThmMWU1YWVlZDE1NWUyNzQ5Li4yNGY4Nzk1ZjAwOWVkYzA5YWU5MTYyYjAy
ZDRlZWNlYjVmMmE5YjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suY3BwCkBAIC0zNCwxNCAr
MzQsMTUgQEAKIAogI2luY2x1ZGUgIlRleHRUcmFjay5oIgogCisjaW5jbHVkZSAiRXZlbnQuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5o
IgogI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVRleHRU
cmFjazo6VGV4dFRyYWNrKFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIGtp
bmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCi0gICAgOiBU
cmFja0Jhc2UoVHJhY2tCYXNlOjpUZXh0VHJhY2spCitUZXh0VHJhY2s6OlRleHRUcmFjayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29u
c3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1
YWdlKQorICAgIDogVHJhY2tCYXNlKGNvbnRleHQsIFRyYWNrQmFzZTo6VGV4dFRyYWNrKQogICAg
ICwgbV9raW5kKGtpbmQpCiAgICAgLCBtX2xhYmVsKGxhYmVsKQogICAgICwgbV9sYW5ndWFnZShs
YW5ndWFnZSkKQEAgLTEwOSwxNCArMTEwLDIxIEBAIFRleHRUcmFja0N1ZUxpc3QqIFRleHRUcmFj
azo6Y3VlcygpIGNvbnN0CiAgICAgLy8gT3RoZXJ3aXNlLCBpdCBtdXN0IHJldHVybiBudWxsLiBX
aGVuIGFuIG9iamVjdCBpcyByZXR1cm5lZCwgdGhlCiAgICAgLy8gc2FtZSBvYmplY3QgbXVzdCBi
ZSByZXR1cm5lZCBlYWNoIHRpbWUuCiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay8jZG9tLXRleHR0cmFjay1jdWVzCi0gICAgaWYgKG1fbW9k
ZSAhPSBUZXh0VHJhY2s6OkRJU0FCTEVEKQorICAgIGlmIChtX2N1ZXMgJiYgbV9tb2RlICE9IFRl
eHRUcmFjazo6RElTQUJMRUQpCiAgICAgICAgIHJldHVybiBtX2N1ZXMuZ2V0KCk7CiAgICAgcmV0
dXJuIDA7CiB9CiAKIFRleHRUcmFja0N1ZUxpc3QqIFRleHRUcmFjazo6YWN0aXZlQ3VlcygpIGNv
bnN0CiB7Ci0gICAgLy8gRklYTUUoNjI4ODUpOiBJbXBsZW1lbnQuCisgICAgLy8gNC44LjEwLjEy
LjUgSWYgdGhlIHRleHQgdHJhY2sgbW9kZSAuLi4gaXMgbm90IHRoZSB0ZXh0IHRyYWNrIGRpc2Fi
bGVkIG1vZGUsCisgICAgLy8gdGhlbiB0aGUgYWN0aXZlQ3VlcyBhdHRyaWJ1dGUgbXVzdCByZXR1
cm4gYSBsaXZlIFRleHRUcmFja0N1ZUxpc3Qgb2JqZWN0IC4uLgorICAgIC8vIC4uLiB3aG9zZSBh
Y3RpdmUgZmxhZyB3YXMgc2V0IHdoZW4gdGhlIHNjcmlwdCBzdGFydGVkLCBpbiB0ZXh0IHRyYWNr
IGN1ZQorICAgIC8vIG9yZGVyLiBPdGhlcndpc2UsIGl0IG11c3QgcmV0dXJuIG51bGwuIFdoZW4g
YW4gb2JqZWN0IGlzIHJldHVybmVkLCB0aGUKKyAgICAvLyBzYW1lIG9iamVjdCBtdXN0IGJlIHJl
dHVybmVkIGVhY2ggdGltZS4KKyAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2Vi
LWFwcHMvY3VycmVudC13b3JrLyNkb20tdGV4dHRyYWNrLWFjdGl2ZWN1ZXMKKyAgICBpZiAobV9j
dWVzICYmIG1fbW9kZSAhPSBUZXh0VHJhY2s6OkRJU0FCTEVEKQorICAgICAgICByZXR1cm4gbV9j
dWVzLT5hY3RpdmVDdWVzKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTE0MSw2ICsxNDksMTIg
QEAgdm9pZCBUZXh0VHJhY2s6OmZldGNoTmV3ZXN0Q3VlcyhWZWN0b3I8VGV4dFRyYWNrQ3VlKj4m
KQogICAgIC8vIEZJWE1FKDYyODkwKTogSW1wbGVtZW50LgogfQogCit2b2lkIFRleHRUcmFjazo6
ZmlyZUN1ZUNoYW5nZUV2ZW50KCkKK3sKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBk
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmN1ZWNoYW5nZUV2ZW50LCBm
YWxzZSwgZmFsc2UpLCBlYyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9UZXh0VHJhY2suaAppbmRleCA4OGI3ZmFlM2Y4Zjc3YzI1MzdhNzk4ZTZjMTYw
MmQzOGJlYTI0ODA1Li5lMDY1ZTY2YzQwZDlkMzAzYmNjYzdmM2ZiYWJkNDNjNmVlMDY3YmQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmgKQEAgLTU0LDkgKzU0LDkgQEAgcHVibGljOgogCiBjbGFz
cyBUZXh0VHJhY2sgOiBwdWJsaWMgVHJhY2tCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxUZXh0VHJhY2s+IGNyZWF0ZShUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3Qg
U3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdl
KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFjaz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcm
IGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFjayhjbGllbnQsIGtpbmQsIGxh
YmVsLCBsYW5ndWFnZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFjayhj
b250ZXh0LCBjbGllbnQsIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSkpOwogICAgIH0KICAgICB2aXJ0
dWFsIH5UZXh0VHJhY2soKTsKIApAQCAtODUsOSArODUsMTIgQEAgcHVibGljOgogICAgIAogICAg
IHZvaWQgbmV3Q3Vlc0xvYWRlZCgpOwogICAgIHZvaWQgZmV0Y2hOZXdlc3RDdWVzKFZlY3RvcjxU
ZXh0VHJhY2tDdWUqPiYpOworICAgIAorICAgIHZpcnR1YWwgdm9pZCBmaXJlQ3VlQ2hhbmdlRXZl
bnQoKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGN1ZWNoYW5nZSk7CiAK
IHByb3RlY3RlZDoKLSAgICBUZXh0VHJhY2soVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgU3RyaW5n
JiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKTsKKyAg
ICBUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRleHRUcmFja0NsaWVudCosIGNv
bnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5n
dWFnZSk7CiAKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoUmVhZHlTdGF0ZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dFRyYWNrLmlkbAppbmRleCBhZTQyNzEyYzljNWE0YzA0NzM0NjIyMTI4YWQ4ODAyNjlj
OWNiMGE2Li5hYWM0MmQwNzM0ZTk0MjljNDA4NTQ0YmYzMjA0MTg0ZDYyOGE2Y2YwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0VHJhY2suaWRsCkBAIC0yOCw2ICsyOCw3IEBAIG1vZHVsZSBodG1sIHsKICAg
ICBpbnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKICAgICAgICAg
RW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrLAorICAgICAgICBFdmVudFRhcmdldAog
ICAgIF0gVGV4dFRyYWNrIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBr
aW5kOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOwpAQCAtNDgs
MTAgKzQ5LDIxIEBAIG1vZHVsZSBodG1sIHsKIAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
VGV4dFRyYWNrQ3VlTGlzdCBjdWVzOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGV4dFRy
YWNrQ3VlTGlzdCBhY3RpdmVDdWVzOworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgRXZlbnRM
aXN0ZW5lciBvbmN1ZWNoYW5nZTsKIAogICAgICAgICB2b2lkIGFkZEN1ZShpbiBUZXh0VHJhY2tD
dWUgY3VlKQogICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICB2b2lk
IHJlbW92ZUN1ZShpbiBUZXh0VHJhY2tDdWUgY3VlKQogICAgICAgICAgICAgcmFpc2VzIChET01F
eGNlcHRpb24pOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2
b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAg
ICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VD
YXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAg
ICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dFRyYWNrQ3VlLmNwcAppbmRleCBkMGJiZTU4NzJmMmY5ZTNiOGNiYmRkNWE4MjhlNjdk
MzUyMDY5OTE5Li5jMGZiMDc1OGEzMjNmMjBmMTdmYmJmNGE5YTk3Njk3MzY3M2Y0OGI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNs
dWRlICJUZXh0VHJhY2tDdWUuaCIKIAorI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIlRleHRUcmFjay5oIgogI2luY2x1ZGUgIldlYlZU
VFBhcnNlci5oIgpAQCAtNDIsOCArNDMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBUZXh0
VHJhY2tDdWU6OlRleHRUcmFja0N1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIGlkLCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQsIGNvbnN0IFN0cmluZyYg
Y29udGVudCwgY29uc3QgU3RyaW5nJiBzZXR0aW5ncywgYm9vbCBwYXVzZU9uRXhpdCkKLSAgICA6
IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQotICAgICwgbV9pZChpZCkKKyAgICA6IG1f
aWQoaWQpCiAgICAgLCBtX3N0YXJ0VGltZShzdGFydCkKICAgICAsIG1fZW5kVGltZShlbmQpCiAg
ICAgLCBtX2NvbnRlbnQoY29udGVudCkKQEAgLTU1LDYgKzU1LDcgQEAgVGV4dFRyYWNrQ3VlOjpU
ZXh0VHJhY2tDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBpZCwgZG8KICAgICAsIG1fY3VlU2l6ZSgxMDApCiAgICAgLCBtX2N1ZUFsaWdubWVudChNaWRk
bGUpCiAgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQorICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0KGNvbnRleHQpCiB7CiAgICAgcGFyc2VTZXR0aW5ncyhzZXR0aW5ncyk7CiB9CkBAIC0xMzgs
MTggKzEzOSwyMSBAQCB2b2lkIFRleHRUcmFja0N1ZTo6c2V0Q3VlSFRNTChQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50KQogCiBib29sIFRleHRUcmFja0N1ZTo6aXNBY3RpdmUo
KQogewotICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgotICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gbV9pc0FjdGl2ZTsKIH0KIAogdm9pZCBUZXh0VHJhY2tDdWU6OnNldElzQWN0
aXZlKGJvb2wgYWN0aXZlKQogewogICAgIG1faXNBY3RpdmUgPSBhY3RpdmU7Ci19CiAKLVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIFRleHRUcmFja0N1ZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlmIChhY3RpdmUpCisgICAg
ICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW50ZXJFdmVudCwg
ZmFsc2UsIGZhbHNlKSwgZWMpOworICAgIGVsc2UKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5leGl0RXZlbnQsIGZhbHNlLCBmYWxzZSksIGVjKTsKKwor
ICAgIGlmIChtX3RyYWNrKQorICAgICAgICBtX3RyYWNrLT5maXJlQ3VlQ2hhbmdlRXZlbnQoKTsK
IH0KIAogdm9pZCBUZXh0VHJhY2tDdWU6OnBhcnNlU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBpbnB1
dCkKQEAgLTMwNyw2ICszMTEsMjYgQEAgT3RoZXJ3aXNlOgogICAgIH0KIH0KIAorY29uc3QgQXRv
bWljU3RyaW5nJiBUZXh0VHJhY2tDdWU6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yVGV4dFRyYWNrQ3VlOworfQorCitTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBUZXh0VHJhY2tDdWU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdAoreworICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Cit9CisKK0V2ZW50
VGFyZ2V0RGF0YSogVGV4dFRyYWNrQ3VlOjpldmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVy
biAmbV9ldmVudFRhcmdldERhdGE7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogVGV4dFRyYWNrQ3Vl
OjplbnN1cmVFdmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERh
dGE7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0VHJhY2tDdWUuaAppbmRleCBhYzIzMjE0NDI5NzJjOWQ5OGFkYjhmMDNkMDI4ZWM2NjhlMjJm
MGRhLi5hNjQ3Y2U2NWZjMTdjM2IxOGFjNjhmM2NiY2NiYjU5ZjdiMGUzZjdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dFRyYWNrQ3VlLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShWSURF
T19UUkFDSykKIAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDQsNyArNDQsNyBAQCBjbGFz
cyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNz
IFRleHRUcmFjazsKIAotY2xhc3MgVGV4dFRyYWNrQ3VlIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4
dFRyYWNrQ3VlPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitjbGFzcyBUZXh0VHJhY2tDdWUg
OiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+LCBwdWJsaWMgRXZlbnRUYXJnZXQgewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgaWQsIGRvdWJsZSBzdGFy
dCwgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHNldHRp
bmdzLCBib29sIHBhdXNlT25FeGl0KQogICAgIHsKQEAgLTc4LDEzICs3OCwyOCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0FjdGl2ZSgpOwogICAgIHZvaWQgc2V0SXNBY3RpdmUoYm9vbCk7CiAgICAg
CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdDsKIAorICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZW50ZXIp
OworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXhpdCk7CisKKyAgICB1c2lu
ZyBSZWZDb3VudGVkPFRleHRUcmFja0N1ZT46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPFRl
eHRUcmFja0N1ZT46OmRlcmVmOworCitwcm90ZWN0ZWQ6CisKKyAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEq
IGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOworCiBwcml2YXRlOgogICAgIFRleHRUcmFja0N1ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIHN0YXJ0LCBk
b3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgc2V0dGluZ3Ms
IGJvb2wgcGF1c2VPbkV4aXQpOwogCiAgICAgdm9pZCBwYXJzZVNldHRpbmdzKGNvbnN0IFN0cmlu
ZyYpOwogICAgIAorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgIAog
ICAgIFRleHRUcmFjayogbV90cmFjazsKICAgICAKICAgICBTdHJpbmcgbV9pZDsKQEAgLTEwMSw2
ICsxMTYsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBtX2RvY3Vt
ZW50RnJhZ21lbnQ7CiAKICAgICBib29sIG1faXNBY3RpdmU7CisgICAgCisgICAgRXZlbnRUYXJn
ZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlLmlkbAppbmRleCBlMmExODgzZjFmM2RlNjM3YjVjOTZm
NzRmMjU3MTE1YmExNDcwNzVhLi4xMWJkNDQ1Mzg3M2UwOGUyZmYyZjMxMDU3Yzg4MDI2OWM5MjFm
N2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuaWRsCkBAIC0zMCw3ICszMCw4IEBA
IG1vZHVsZSBodG1sIHsKICAgICAgICAgRW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNr
LAogICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciwKICAgICAgICAgQ29uc3RydWN0b3Io
aW4gRE9NU3RyaW5nIGlkLCBpbiBkb3VibGUgc3RhcnRUaW1lLCBpbiBkb3VibGUgZW5kVGltZSwg
aW4gRE9NU3RyaW5nIHRleHQsIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9N
U3RyaW5nIHNldHRpbmdzLCBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGJvb2xl
YW4gcGF1c2VPbkV4aXQpLAotICAgICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
CisgICAgICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgICAgIEV2ZW50
VGFyZ2V0CiAgICAgXSBUZXh0VHJhY2tDdWUgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
VGV4dFRyYWNrIHRyYWNrOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlk
OwpAQCAtNDgsNiArNDksMTkgQEAgbW9kdWxlIGh0bWwgewogCiAgICAgICAgIERPTVN0cmluZyBn
ZXRDdWVBc1NvdXJjZSgpOwogICAgICAgICBEb2N1bWVudEZyYWdtZW50IGdldEN1ZUFzSFRNTCgp
OworICAgICAgICAKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lbnRlcjsKKyAg
ICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25leGl0OworICAgICAgICAKKyAgICAgICAg
Ly8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihp
biBET01TdHJpbmcgdHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVu
dExpc3RlbmVyIGxpc3RlbmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtP
cHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgdm9pZCByZW1vdmVFdmVudExp
c3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29s
ZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50
RXhjZXB0aW9uKTsKICAgICB9OwogCiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAKaW5kZXggYTk4OGM1MjQxMDA1OTJm
OGNkN2ViY2RkOWE4NDY4ZjY3NDAxOTNlMS4uNmIyNTk3MWVkNDQzYTM3NmY3MjcyZjY4ZTQ3NWZl
MTUzZTgwMmM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVM
aXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCkBA
IC01Niw2ICs1NiwyMCBAQCBUZXh0VHJhY2tDdWUqIFRleHRUcmFja0N1ZUxpc3Q6OmdldEN1ZUJ5
SWQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAorVGV4dFRyYWNr
Q3VlTGlzdCogVGV4dFRyYWNrQ3VlTGlzdDo6YWN0aXZlQ3VlcygpCit7CisgICAgaWYgKCFtX2Fj
dGl2ZUN1ZXMpCisgICAgICAgIG1fYWN0aXZlQ3VlcyA9IGNyZWF0ZSgpOworCisgICAgbV9hY3Rp
dmVDdWVzLT5jbGVhcigpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9saXN0LnNpemUo
KTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxUZXh0VHJhY2tDdWU+IGN1ZSA9IG1fbGlzdFtpXTsK
KyAgICAgICAgaWYgKGN1ZS0+aXNBY3RpdmUoKSkKKyAgICAgICAgICAgIG1fYWN0aXZlQ3Vlcy0+
YWRkKGN1ZSk7CisgICAgfQorICAgIHJldHVybiBtX2FjdGl2ZUN1ZXMuZ2V0KCk7Cit9CisKIHZv
aWQgVGV4dFRyYWNrQ3VlTGlzdDo6YWRkKGNvbnN0IFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3Vl
PiA+JiBuZXdDdWVzKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3Q3Vlcy5zaXpl
KCk7ICsraSkKQEAgLTEwMSw2ICsxMTUsMTEgQEAgYm9vbCBUZXh0VHJhY2tDdWVMaXN0Ojpjb250
YWlucyhUZXh0VHJhY2tDdWUqIGN1ZSkgY29uc3QKICAgICByZXR1cm4gbV9saXN0LmNvbnRhaW5z
KGN1ZSk7CiB9CiAKK3ZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6Y2xlYXIoKQoreworICAgIG1fbGlz
dC5jbGVhcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuaAppbmRleCBhZTQ3NGVlNzNlNDJiMjhiYmFlMWM0
MTBmNmNiYmNlOTNmZmM1ZDU1Li43NzQ4NTBjZmUyZTZhNWI1ZDMyMzM4ZmJmNGRjM2M3NDQ1NmZm
ZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuaApAQCAtNTcsOCArNTcs
MTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBUZXh0VHJhY2tDdWVMaXN0KCk7CiAgICAgdm9p
ZCBhZGQoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+LCBzaXplX3QsIHNpemVfdCk7CisgICAgdm9p
ZCBjbGVhcigpOwogICAgIAogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+IG1fbGlz
dDsKKyAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gbV9hY3RpdmVDdWVzOworICAgIAogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UcmFja0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jh
c2UuY3BwCmluZGV4IDU1MzU4NDg2OGU4ZDcyMWIzZGFhYmY2ZDg5ODNiMGI2MjE3ZDI4MGQuLjZh
MmMzNTgyM2U2MTk2MmEzN2M5ZjhmNGNlZmQ5ODlkZGFiNTBkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKQEAgLTMwLDcgKzMwLDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1UcmFja0Jhc2U6OlRyYWNrQmFzZShUeXBlIHR5cGUpCitUcmFja0Jhc2U6OlRy
YWNrQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUeXBlIHR5cGUpCisgICAg
OiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKIHsKICAgICBBU1NFUlQodHlwZSAh
PSBCYXNlVHJhY2spOwogICAgIG1fdHlwZSA9IHR5cGU7CkBAIC00MCw2ICs0MSwyNiBAQCBUcmFj
a0Jhc2U6On5UcmFja0Jhc2UoKQogewogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFRyYWNrQmFz
ZTo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRl
cmZhY2VGb3JUZXh0VHJhY2s7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFRyYWNrQmFz
ZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKK30KKworRXZlbnRUYXJnZXREYXRhKiBUcmFja0Jhc2U6OmV2ZW50
VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworRXZl
bnRUYXJnZXREYXRhKiBUcmFja0Jhc2U6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAg
cmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCmluZGV4IGQ0NDcwYTIz
YjNiNmU1MThiOTU2ZGNmNDgzNTkzOWU2NWI4ZjdiMjAuLmMwMDY2MGYwNTNhZDY0OTQxNjU4ZjIw
ZDc1MDMwY2FiYzkzMjc5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VHJhY2tCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaApA
QCAtMjgsMjIgKzI4LDQwIEBACiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKKyNpbmNsdWRl
ICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgVHJhY2tCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhY2tC
YXNlPiB7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBUcmFja0Jhc2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxUcmFja0Jhc2U+LCBwdWJsaWMgRXZlbnRUYXJnZXQgewogcHVi
bGljOgogICAgIHZpcnR1YWwgflRyYWNrQmFzZSgpOwogCiAgICAgZW51bSBUeXBlIHsgQmFzZVRy
YWNrLCBUZXh0VHJhY2ssIEF1ZGlvVHJhY2ssIFZpZGVvVHJhY2sgfTsKICAgICBUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisgICAgCisgICAgdXNpbmcg
UmVmQ291bnRlZDxUcmFja0Jhc2U+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0Jh
c2U+OjpkZXJlZjsKKwogcHJvdGVjdGVkOgotICAgIFRyYWNrQmFzZShUeXBlKTsKKyAgICBUcmFj
a0Jhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFR5cGUpOworICAgIAorICAgIHZpcnR1YWwg
RXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CiAKIHByaXZhdGU6CiAgICAgVHlwZSBt
X3R5cGU7CisgICAgCisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAg
CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Owor
ICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA5YjE5MWJhMDE5YWRjMzdmYmQ4MWMwYWEyZTdlMzYyOGRlYjM0
YTcwLi4xNTczOWY4ODAxY2NlODA1NzlkMzg3YzQzZTVmZmFlZWVmOWRjNjM2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTEtMTEtMTEgIEFubmEgQ2F2ZW5kZXIgIDxhbm5hY2NAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFN0b3JhZ2UgYW5kIHJldHJpZXZhbCBvZiBUZXh0VHJhY2tDdWVzIGR1
cmluZyB2aWRlbyBwbGF5YmFjaywgaW5jbHVkaW5nCisgICAgICAgIGN1ZWNoYW5nZSwgZW50ZXIs
IGFuZCBleGl0IGV2ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcwNDUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBtZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvY3Vlcy1jaHJvbm8tb3JkZXIu
dnR0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvY3Vlcy1v
dmVybGFwcGluZy52dHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWN1ZXMt
Y3VlY2hhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJh
Y2stY3Vlcy1jdWVjaGFuZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJh
Y2stY3Vlcy1lbnRlci1leGl0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEv
dHJhY2svdHJhY2stY3Vlcy1lbnRlci1leGl0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlh
L3RyYWNrL3RyYWNrLWN1ZXMtc2Vla2luZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtc2Vla2luZy5odG1sOiBBZGRlZC4KKwogMjAxMS0xMS0x
MSAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEV4cGVj
dCBjaHJvbWl1bSB0byBwYXNzIHRoaXMgdGVzdCBhZnRlciByOTk5NTguCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvY3Vlcy1jaHJvbm8tb3JkZXIu
dnR0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L2N1ZXMtY2hyb25v
LW9yZGVyLnZ0dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDZkNDg0Zjg4OGNmNTg2MDg3Njc4ODExNzE0NThkZjcx
ZmZmYTBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlv
bnMtd2VidnR0L2N1ZXMtY2hyb25vLW9yZGVyLnZ0dApAQCAtMCwwICsxLDE0IEBACitXRUJWVFQK
K0N1ZXMgdGhhdCBoYXZlIG92ZXJsYXBwaW5nIHRpbWUgcmFuZ2VzLgorCisxCiswMDowMDowMS4w
MDAgLS0+IDAwOjAwOjAyLjAwMAorQmVhciBpcyBDb21pbmchISEhIQorCisyCiswMDowMDowMi41
MDAgLS0+IDAwOjAwOjAzLjUwMAorSSBzYWlkIEJlYXIgaXMgY29taW5nISEhIQorCiszCiswMDow
MDowNC4wMDAgLS0+IDAwOjAwOjA1LjAwMAorSSBzYWlkIEJlYXIgaXMgY29taW5nIG5vdyEhISEK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRp
YS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvY3Vlcy1vdmVybGFwcGluZy52dHQgYi9MYXlvdXRUZXN0
cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvY3Vlcy1vdmVybGFwcGluZy52dHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2YwMzVkMzMxZjA4MmE4NmQyYzYzZTFjZGNjY2ZjNjMxMTdiMWE1MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9jdWVzLW92
ZXJsYXBwaW5nLnZ0dApAQCAtMCwwICsxLDE0IEBACitXRUJWVFQKK0N1ZXMgdGhhdCBoYXZlIG92
ZXJsYXBwaW5nIHRpbWUgcmFuZ2VzLgorCisxCiswMDowMDowMS4wMDAgLS0+IDAwOjAwOjA2LjAw
MAorQmVhciBpcyBDb21pbmchISEhIQorCisyCiswMDowMDowMS41MDAgLS0+IDAwOjAwOjA1LjAw
MAorSSBzYWlkIEJlYXIgaXMgY29taW5nISEhIQorCiszCiswMDowMDowMi4wMDAgLS0+IDAwOjAw
OjA1LjAwMAorSSBzYWlkIEJlYXIgaXMgY29taW5nIG5vdyEhISEKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWVz
LWN1ZWNoYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1j
dWVzLWN1ZWNoYW5nZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODljYWRjNWU4YmQxMDg2Njg2
MTgzZjU4Njk3YWYwMWVhNWNhMTI4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21l
ZGlhL3RyYWNrL3RyYWNrLWN1ZXMtY3VlY2hhbmdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDc0
IEBACitUZXN0cyB0aGF0IFRleHRUcmFjaydzIGN1ZXMgYXJlIGluZGV4ZWQgYW5kIHVwZGF0ZWQg
d2l0aGluIDUwMG1zIGR1cmluZyB2aWRlbyBwbGF5YmFjay4gVGVzdCB1c2VzIHRoZSBjdWVjaGFu
Z2UgZXZlbnQuCisKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorRVhQRUNURUQgKHRlc3RUcmFjay50
cmFjay5jdWVzLmxlbmd0aCA9PSAnMycpIE9LCitSVU4odmlkZW8ucGxheSgpKQorCitFVkVOVChj
dWVjaGFuZ2UpIGZyb20gVGV4dFRyYWNrCitFWFBFQ1RFRCAoW29iamVjdCBUZXh0VHJhY2tDdWVd
ID09ICdbb2JqZWN0IFRleHRUcmFja0N1ZV0nKSBPSworU3RhcnQgdGltZToKK0VYUEVDVEVEICh2
aWRlby5jdXJyZW50VGltZSA+PSAnMScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUg
PCAnMS41JykgT0sKKworRVZFTlQoY3VlY2hhbmdlKSBmcm9tIDx0cmFjaz4KK0VYUEVDVEVEIChb
b2JqZWN0IFRleHRUcmFja0N1ZV0gPT0gJ1tvYmplY3QgVGV4dFRyYWNrQ3VlXScpIE9LCitTdGFy
dCB0aW1lOgorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID49ICcxJykgT0sKK0VYUEVDVEVE
ICh2aWRlby5jdXJyZW50VGltZSA8ICcxLjUnKSBPSworCitFVkVOVChjdWVjaGFuZ2UpIGZyb20g
VGV4dFRyYWNrCitFbmQgdGltZToKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA+PSAnMicp
IE9LCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPCAnMi41JykgT0sKKworRVZFTlQoY3Vl
Y2hhbmdlKSBmcm9tIDx0cmFjaz4KK0VuZCB0aW1lOgorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRU
aW1lID49ICcyJykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA8ICcyLjUnKSBPSwor
CitFVkVOVChjdWVjaGFuZ2UpIGZyb20gVGV4dFRyYWNrCitFWFBFQ1RFRCAoW29iamVjdCBUZXh0
VHJhY2tDdWVdID09ICdbb2JqZWN0IFRleHRUcmFja0N1ZV0nKSBPSworU3RhcnQgdGltZToKK0VY
UEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA+PSAnMi41JykgT0sKK0VYUEVDVEVEICh2aWRlby5j
dXJyZW50VGltZSA8ICczJykgT0sKKworRVZFTlQoY3VlY2hhbmdlKSBmcm9tIDx0cmFjaz4KK0VY
UEVDVEVEIChbb2JqZWN0IFRleHRUcmFja0N1ZV0gPT0gJ1tvYmplY3QgVGV4dFRyYWNrQ3VlXScp
IE9LCitTdGFydCB0aW1lOgorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID49ICcyLjUnKSBP
SworRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lIDwgJzMnKSBPSworCitFVkVOVChjdWVjaGFu
Z2UpIGZyb20gVGV4dFRyYWNrCitFbmQgdGltZToKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGlt
ZSA+PSAnMy41JykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA8ICc0JykgT0sKKwor
RVZFTlQoY3VlY2hhbmdlKSBmcm9tIDx0cmFjaz4KK0VuZCB0aW1lOgorRVhQRUNURUQgKHZpZGVv
LmN1cnJlbnRUaW1lID49ICczLjUnKSBPSworRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lIDwg
JzQnKSBPSworCitFVkVOVChjdWVjaGFuZ2UpIGZyb20gVGV4dFRyYWNrCitFWFBFQ1RFRCAoW29i
amVjdCBUZXh0VHJhY2tDdWVdID09ICdbb2JqZWN0IFRleHRUcmFja0N1ZV0nKSBPSworU3RhcnQg
dGltZToKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA+PSAnNCcpIE9LCitFWFBFQ1RFRCAo
dmlkZW8uY3VycmVudFRpbWUgPCAnNC41JykgT0sKKworRVZFTlQoY3VlY2hhbmdlKSBmcm9tIDx0
cmFjaz4KK0VYUEVDVEVEIChbb2JqZWN0IFRleHRUcmFja0N1ZV0gPT0gJ1tvYmplY3QgVGV4dFRy
YWNrQ3VlXScpIE9LCitTdGFydCB0aW1lOgorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID49
ICc0JykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA8ICc0LjUnKSBPSworCitFVkVO
VChjdWVjaGFuZ2UpIGZyb20gVGV4dFRyYWNrCitFbmQgdGltZToKK0VYUEVDVEVEICh2aWRlby5j
dXJyZW50VGltZSA+PSAnNScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPCAnNS41
JykgT0sKKworRVZFTlQoY3VlY2hhbmdlKSBmcm9tIDx0cmFjaz4KK0VuZCB0aW1lOgorRVhQRUNU
RUQgKHZpZGVvLmN1cnJlbnRUaW1lID49ICc1JykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50
VGltZSA8ICc1LjUnKSBPSworCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9tZWRpYS90cmFjay90cmFjay1jdWVzLWN1ZWNoYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdHJhY2stY3Vlcy1jdWVjaGFuZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjcxYWMzODky
Y2FiY2I4ODQyNGY2MjEyOGJmYzFiYmYzMWY4NmI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1jdWVjaGFuZ2UuaHRtbApAQCAtMCwwICsxLDcy
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCIgLz4KKworICAgICAgICA8c2NyaXB0IHNyYz0uLi9tZWRpYS1maWxlLmpzPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHA+VGVzdHMgdGhhdCBUZXh0VHJhY2sncyBjdWVzIGFy
ZSBpbmRleGVkIGFuZCB1cGRhdGVkIHdpdGhpbiA1MDBtcyBkdXJpbmcgdmlkZW8gcGxheWJhY2su
IFRlc3QgdXNlcyB0aGUgY3VlY2hhbmdlIGV2ZW50LjwvcD4KKyAgICAgICAgPHZpZGVvIGNvbnRy
b2xzPgorICAgICAgICAgICAgPHRyYWNrIGlkPSJ0ZXN0VHJhY2siIHNyYz0iY2FwdGlvbnMtd2Vi
dnR0L2N1ZXMtY2hyb25vLW9yZGVyLnZ0dCIga2luZD0iY2FwdGlvbnMiPgorICAgICAgICA8L3Zp
ZGVvPgorICAgICAgICA8c2NyaXB0PiAgICAgICAgICAgIAorCisgICAgICAgIHZhciB0aW1lSW50
ZXJ2YWwgPSAwLjU7CisgICAgICAgIHZhciBjdWVDaGFuZ2VDb3VudCA9IDA7CisgICAgICAgIHZh
ciB0ZXN0VHJhY2s7CisKKyAgICAgICAgZnVuY3Rpb24gY3VlQ2hhbmdlZEZyb21UcmFja0VsZW1l
bnQoKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGN1ZWNoYW5n
ZSkgZnJvbSAmbHQ7dHJhY2smZ3Q7Iik7CisgICAgICAgICAgICBjaGVja0N1ZSgpOworCisgICAg
ICAgICAgICArK2N1ZUNoYW5nZUNvdW50OworICAgICAgICAgICAgaWYgKGN1ZUNoYW5nZUNvdW50
ID09IHRlc3RUcmFjay50cmFjay5jdWVzLmxlbmd0aCAqIDIpCisgICAgICAgICAgICAgICAgZW5k
VGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY3VlQ2hhbmdlZEZyb21UZXh0
VHJhY2soKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGN1ZWNo
YW5nZSkgZnJvbSBUZXh0VHJhY2siKTsKKyAgICAgICAgICAgIGNoZWNrQ3VlKCk7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrQ3VlKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGN1ZXMgPSB0ZXN0VHJhY2sudHJhY2suY3VlczsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgdmFyIGN1cnJlbnRDdWUgPSBjdWVzW01hdGguZmxvb3IoY3VlQ2hhbmdlQ291
bnQvMildOworCisgICAgICAgICAgICBpZiAoY3VlQ2hhbmdlQ291bnQgJSAyID09IDApIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoY3VycmVudEN1ZSwgdGVzdFRyYWNrLnRyYWNrLmFj
dGl2ZUN1ZXNbMF0pOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU3RhcnQgdGltZToi
KTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJlbnRUaW1lIiwgY3Vy
cmVudEN1ZS5zdGFydFRpbWUsICc+PScpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
dmlkZW8uY3VycmVudFRpbWUiLCBjdXJyZW50Q3VlLnN0YXJ0VGltZSArIHRpbWVJbnRlcnZhbCwg
JzwnKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCJFbmQgdGltZToiKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJl
bnRUaW1lIiwgY3VycmVudEN1ZS5lbmRUaW1lLCAnPj0nKTsKKyAgICAgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInZpZGVvLmN1cnJlbnRUaW1lIiwgY3VycmVudEN1ZS5lbmRUaW1lICsgdGltZUlu
dGVydmFsLCAnPCcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc29sZVdyaXRlKCIi
KTsKKyAgICAgICAgfQorCisgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLAor
ICAgICAgICAgICAgZnVuY3Rpb24gKCkgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
dGVzdFRyYWNrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RUcmFjayIpOworICAgICAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidGVzdFRyYWNrLnRyYWNrLmN1ZXMubGVuZ3RoIiwgMyk7
CisgICAgICAgICAgICAgICAgdGVzdFRyYWNrLmFkZEV2ZW50TGlzdGVuZXIoJ2N1ZWNoYW5nZScs
IGN1ZUNoYW5nZWRGcm9tVHJhY2tFbGVtZW50KTsKKyAgICAgICAgICAgICAgICB0ZXN0VHJhY2su
dHJhY2suYWRkRXZlbnRMaXN0ZW5lcignY3VlY2hhbmdlJywgY3VlQ2hhbmdlZEZyb21UZXh0VHJh
Y2spOworICAgICAgICAgICAgICAgIHJ1bigidmlkZW8ucGxheSgpIik7CisgICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAg
ICBmaW5kTWVkaWFFbGVtZW50KCk7CisgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUo
InZpZGVvIiwgIi4uL2NvbnRlbnQvdGVzdCIpOworICAgICAgICAKKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJh
Y2svdHJhY2stY3Vlcy1lbnRlci1leGl0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlh
L3RyYWNrL3RyYWNrLWN1ZXMtZW50ZXItZXhpdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDRh
MjA5MTI4YzMyMTljZTg4ZGVkYjBjOWIwZDVhOTNhMzkyOWM5MQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtZW50ZXItZXhpdC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0NCBAQAorVGVzdHMgdGhhdCBUZXh0VHJhY2sncyBjdWVzIGFyZSBpbmRl
eGVkIGFuZCB1cGRhdGVkIHdpdGhpbiA1MDBtcyBkdXJpbmcgdmlkZW8gcGxheWJhY2suIFRlc3Qg
dXNlcyB0aGUgZW50ZXIgYW5kIGV4aXRzIGV2ZW50cyBvbiBUZXh0VHJhY2tDdWUuCisKK0VWRU5U
KGNhbnBsYXl0aHJvdWdoKQorRVhQRUNURUQgKHRlc3RUcmFjay50cmFjay5jdWVzLmxlbmd0aCA9
PSAnMycpIE9LCitSVU4odmlkZW8ucGxheSgpKQorCitFVkVOVChlbnRlcikKK1RoaXMgY3VlIGlz
IHRoZSBjdXJyZW50bHkgYWN0aXZlIGN1ZToKK0VYUEVDVEVEIChbb2JqZWN0IFRleHRUcmFja0N1
ZV0gPT0gJ1tvYmplY3QgVGV4dFRyYWNrQ3VlXScpIE9LCitTdGFydCB0aW1lOgorRVhQRUNURUQg
KHZpZGVvLmN1cnJlbnRUaW1lID49ICcxJykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGlt
ZSA8ICcxLjUnKSBPSworCitFVkVOVChleGl0KQorRW5kIHRpbWU6CitFWFBFQ1RFRCAodmlkZW8u
Y3VycmVudFRpbWUgPj0gJzInKSBPSworRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lIDwgJzIu
NScpIE9LCisKK0VWRU5UKGVudGVyKQorVGhpcyBjdWUgaXMgdGhlIGN1cnJlbnRseSBhY3RpdmUg
Y3VlOgorRVhQRUNURUQgKFtvYmplY3QgVGV4dFRyYWNrQ3VlXSA9PSAnW29iamVjdCBUZXh0VHJh
Y2tDdWVdJykgT0sKK1N0YXJ0IHRpbWU6CitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPj0g
JzIuNScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPCAnMycpIE9LCisKK0VWRU5U
KGV4aXQpCitFbmQgdGltZToKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA+PSAnMy41Jykg
T0sKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA8ICc0JykgT0sKKworRVZFTlQoZW50ZXIp
CitUaGlzIGN1ZSBpcyB0aGUgY3VycmVudGx5IGFjdGl2ZSBjdWU6CitFWFBFQ1RFRCAoW29iamVj
dCBUZXh0VHJhY2tDdWVdID09ICdbb2JqZWN0IFRleHRUcmFja0N1ZV0nKSBPSworU3RhcnQgdGlt
ZToKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA+PSAnNCcpIE9LCitFWFBFQ1RFRCAodmlk
ZW8uY3VycmVudFRpbWUgPCAnNC41JykgT0sKKworRVZFTlQoZXhpdCkKK0VuZCB0aW1lOgorRVhQ
RUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID49ICc1JykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJy
ZW50VGltZSA8ICc1LjUnKSBPSworCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWVzLWVudGVyLWV4aXQuaHRtbCBiL0xheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtZW50ZXItZXhpdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3MWVj
NGJmNzY5NTQxYzFhYWYwYzgxYmM4ZDNlZWJlN2MyNzZhOGIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWVzLWVudGVyLWV4aXQuaHRtbApAQCAtMCww
ICsxLDY5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCIgLz4KKworICAgICAgICA8c2NyaXB0IHNyYz0uLi9tZWRpYS1maWxlLmpzPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHA+VGVzdHMgdGhhdCBUZXh0VHJhY2sncyBj
dWVzIGFyZSBpbmRleGVkIGFuZCB1cGRhdGVkIHdpdGhpbiA1MDBtcyBkdXJpbmcgdmlkZW8gcGxh
eWJhY2suIFRlc3QgdXNlcyB0aGUgZW50ZXIgYW5kIGV4aXRzIGV2ZW50cyBvbiBUZXh0VHJhY2tD
dWUuPC9wPgorICAgICAgICA8dmlkZW8gY29udHJvbHM+CisgICAgICAgICAgICA8dHJhY2sgaWQ9
InRlc3RUcmFjayIgc3JjPSJjYXB0aW9ucy13ZWJ2dHQvY3Vlcy1jaHJvbm8tb3JkZXIudnR0IiBr
aW5kPSJjYXB0aW9ucyI+CisgICAgICAgIDwvdmlkZW8+CisgICAgICAgIDxzY3JpcHQ+ICAgICAg
ICAgICAgCisgICAgICAgICAgICAKKyAgICAgICAgdmFyIHRpbWVJbnRlcnZhbCA9IDAuNQorICAg
ICAgICB2YXIgY3VlQ291bnQgPSAwOworICAgICAgICB2YXIgdGVzdFRyYWNrOworCisgICAgICAg
IGZ1bmN0aW9uIGN1ZUVudGVyZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIkVWRU5UKGVudGVyKSIpOworCisgICAgICAgICAgICB2YXIgY3VycmVudEN1ZSA9IHRlc3RU
cmFjay50cmFjay5jdWVzW2N1ZUNvdW50XTsKKworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJU
aGlzIGN1ZSBpcyB0aGUgY3VycmVudGx5IGFjdGl2ZSBjdWU6Iik7CisgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoY3VycmVudEN1ZSwgdGVzdFRyYWNrLnRyYWNrLmFjdGl2ZUN1ZXNbMF0pOworICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCJTdGFydCB0aW1lOiIpOworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJ2aWRlby5jdXJyZW50VGltZSIsIGN1cnJlbnRDdWUuc3RhcnRUaW1lLCAnPj0nKTsK
KyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uY3VycmVudFRpbWUiLCBjdXJyZW50Q3Vl
LnN0YXJ0VGltZSArIHRpbWVJbnRlcnZhbCwgJzwnKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiIik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjdWVFeGl0ZWQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGV4aXQpIik7CisKKyAgICAgICAg
ICAgIHZhciBjdXJyZW50Q3VlID0gdGVzdFRyYWNrLnRyYWNrLmN1ZXNbY3VlQ291bnRdOworCisg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVuZCB0aW1lOiIpOworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJ2aWRlby5jdXJyZW50VGltZSIsIGN1cnJlbnRDdWUuZW5kVGltZSwgJz49Jyk7Cisg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJlbnRUaW1lIiwgY3VycmVudEN1ZS5l
bmRUaW1lICsgdGltZUludGVydmFsLCAnPCcpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIi
KTsKKworICAgICAgICAgICAgKytjdWVDb3VudDsKKyAgICAgICAgICAgIGlmIChjdWVDb3VudCA9
PSB0ZXN0VHJhY2sudHJhY2suY3Vlcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgZW5kVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsCisg
ICAgICAgICAgICBmdW5jdGlvbiAoKSAKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0
ZXN0VHJhY2sgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdFRyYWNrIik7CisgICAgICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0ZXN0VHJhY2sudHJhY2suY3Vlcy5sZW5ndGgiLCAzKTsK
KyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RUcmFjay50cmFjay5jdWVz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RUcmFjay50cmFjay5jdWVz
W2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2VudGVyJywgY3VlRW50ZXJlZCk7CisgICAgICAgICAgICAg
ICAgICAgIHRlc3RUcmFjay50cmFjay5jdWVzW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2V4aXQnLCBj
dWVFeGl0ZWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBydW4oInZpZGVv
LnBsYXkoKSIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAg
ICB9CisgICAgICAgICk7CisKKyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworICAgICAgICB2
aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICIuLi9jb250ZW50L3Rlc3QiKTsKKyAg
ICAgICAgCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtc2Vla2luZy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWVzLXNlZWtpbmctZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNkNGVhOGFjZmVhZDQyOTYzMTA5YzU3YzA4Nzc5M2VhYjM1OTY2MDQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWVzLXNl
ZWtpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzIgQEAKK1Rlc3RzIFRleHRUcmFjaydzIGFj
dGl2ZUN1ZXMgYXJlIGluZGV4ZWQgYW5kIHVwZGF0ZWQgZHVyaW5nIHZpZGVvIHBsYXliYWNrLgor
CitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK0VYUEVDVEVEICh0ZXN0VHJhY2sudHJhY2suY3Vlcy5s
ZW5ndGggPT0gJzMnKSBPSworUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMC41KQorCitFVkVOVChz
ZWVrZWQpCisKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA9PSAnMC41JykgT0sKK0VYUEVD
VEVEIChhY3RpdmVDdWVzLmxlbmd0aCA9PSAnMCcpIE9LCitSVU4odmlkZW8uY3VycmVudFRpbWUg
PSAxKQorCitFVkVOVChzZWVrZWQpCisKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA9PSAn
MScpIE9LCitFWFBFQ1RFRCAoYWN0aXZlQ3Vlcy5sZW5ndGggPT0gJzEnKSBPSworUlVOKHZpZGVv
LmN1cnJlbnRUaW1lID0gMS41KQorCitFVkVOVChzZWVrZWQpCisKK0VYUEVDVEVEICh2aWRlby5j
dXJyZW50VGltZSA9PSAnMS41JykgT0sKK0VYUEVDVEVEIChhY3RpdmVDdWVzLmxlbmd0aCA9PSAn
MicpIE9LCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAyKQorCitFVkVOVChzZWVrZWQpCisKK0VY
UEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA9PSAnMicpIE9LCitFWFBFQ1RFRCAoYWN0aXZlQ3Vl
cy5sZW5ndGggPT0gJzMnKSBPSworUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMi41KQorCitFTkQg
T0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWVz
LXNlZWtpbmcuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtc2Vla2lu
Zy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM0ZTdjODg0MzMzYWVkZjIxYmRhNjY4OTFlNmQ1Zjg3MTczODQx
OWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWVz
LXNlZWtpbmcuaHRtbApAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KKworICAgICAgICA8c2NyaXB0IHNyYz0u
Li9tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10
ZXN0LmpzPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHA+VGVz
dHMgVGV4dFRyYWNrJ3MgYWN0aXZlQ3VlcyBhcmUgaW5kZXhlZCBhbmQgdXBkYXRlZCBkdXJpbmcg
dmlkZW8gcGxheWJhY2suPC9wPgorICAgICAgICA8dmlkZW8gY29udHJvbHM+CisgICAgICAgICAg
ICA8dHJhY2sgaWQ9InRlc3RUcmFjayIgc3JjPSJjYXB0aW9ucy13ZWJ2dHQvY3Vlcy1vdmVybGFw
cGluZy52dHQiIGtpbmQ9InN1YnRpdGxlcyI+CisgICAgICAgIDwvdmlkZW8+CisgICAgICAgIDxz
Y3JpcHQ+ICAgICAgICAgICAgCisgICAgICAgICAgICAKKyAgICAgICAgdmFyIHNlZWtlZENvdW50
ID0gMDsKKyAgICAgICAgdmFyIHRlc3RUcmFjazsKKworICAgICAgICBmdW5jdGlvbiBzZWVrZWQo
KQorICAgICAgICB7CisgICAgICAgICAgICArK3NlZWtlZENvdW50OworICAgICAgICAgICAgY29u
c29sZVdyaXRlKCIiKTsKKworICAgICAgICAgICAgYWN0aXZlQ3VlcyA9IHRlc3RUcmFjay50cmFj
ay5hY3RpdmVDdWVzOworCisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJlbnRU
aW1lIiwgc2Vla2VkQ291bnQgKiAwLjUpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJhY3Rp
dmVDdWVzLmxlbmd0aCIsIHNlZWtlZENvdW50IC0gMSk7CisgICAgICAgICAgICBydW4oInZpZGVv
LmN1cnJlbnRUaW1lID0gIiArIChzZWVrZWRDb3VudCArIDEpICogMC41KTsKKworICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCIiKTsKKworICAgICAgICAgICAgaWYgKHNlZWtlZENvdW50ID09IDQp
CisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9CisgICAgCisgICAgICAgIHdh
aXRGb3JFdmVudCgnc2Vla2VkJywgc2Vla2VkICk7CisKKyAgICAgICAgd2FpdEZvckV2ZW50KCdj
YW5wbGF5dGhyb3VnaCcsCisgICAgICAgICAgICBmdW5jdGlvbiAoKSAKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICB0ZXN0VHJhY2sgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVz
dFRyYWNrIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0ZXN0VHJhY2sudHJhY2su
Y3Vlcy5sZW5ndGgiLCAzKTsKKyAgICAgICAgICAgICAgICBydW4oInZpZGVvLmN1cnJlbnRUaW1l
ID0gMC41Iik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgKTsKKworICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisgICAgICAgIHZp
ZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvdGVzdCIpOworICAg
ICAgICAKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114799</attachid>
            <date>2011-11-11 16:40:15 -0800</date>
            <delta_ts>2011-11-11 16:59:23 -0800</delta_ts>
            <desc>using scheduleLoad(TextTrackResource) instead of configureTextTracks()</desc>
            <filename>bug-70452-20111111164013.patch</filename>
            <type>text/plain</type>
            <size>46882</size>
            <attacher name="Anna Cavender">annacc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYyZTlhNWRlNjQwODYw
MzdhZGI2NDQ1ZjJiZTAwMmRhNmE0YjkzYi4uZjU4NmQ5OTA2Nzc3NjFmNmMzMGVmMTliZjUxOTQ1
NTVjYTNiYmQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMS0xMS0xMSAgQW5u
YSBDYXZlbmRlciAgPGFubmFjY0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3RvcmFnZSBhbmQg
cmV0cmlldmFsIG9mIFRleHRUcmFja0N1ZXMgZHVyaW5nIHZpZGVvIHBsYXliYWNrLCBpbmNsdWRp
bmcKKyAgICAgICAgY3VlY2hhbmdlLCBlbnRlciwgYW5kIGV4aXQgZXZlbnRzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogbWVkaWEvdHJhY2sv
dHJhY2stY3Vlcy1jdWVjaGFuZ2UuaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvdHJhY2svdHJh
Y2stY3Vlcy1lbnRlci1leGl0Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3RyYWNrL3RyYWNr
LWN1ZXMtc2Vla2luZy5odG1sCisKKyAgICAgICAgQWRkIGN1ZWNoYW5nZSwgZW50ZXIsIGFuZCBl
eGl0IGV2ZW50cyBhbmQgbWFrZSBUZXh0VHJhY2sgYW5kCisgICAgICAgIFRleHRUcmFja0N1ZSBF
dmVudFRhcmdldHM6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBkb20v
RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVkKToKKyAgICAgICAgICAgIFVzZSBzY2hlZHVs
ZUxvYWQoKSBpbnN0ZWFkIG9mIGNvbmZpZ3VyZVRleHRUcmFja3MoKSB0byBzdGFydCBhbiBhc3lu
YyBsb2FkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZl
VGV4dFRyYWNrQ3Vlcyk6CisgICAgICAgICAgICBVcGRhdGVzIHRoZSBsaXN0IG9mIGN1cnJlbnRs
eSBhY3RpdmUgY3VlcyBkdXJpbmcgcGxheWJhY2suCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKToKKyAgICAgICAgICAgIEFkZHMgY3VlcyB0byBj
dWVUcmVlLiAgQ2FsbGVkIHdoZW4gY3VlcyBhcmUgZGlzY292ZXJlZC9sb2FkZWQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKToKKyAgICAg
ICAgICAgIFJlbW92ZXMgY3VlcyBmcm9tIGN1ZVRyZWUuICBDYWxsZWQgd2hlbiBjdWVzIGFuZC9v
ciB0cmFja3MgZGllLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrQWRkQ3VlKToKKyAgICAgICAgICAgIEFkZHMgYSBjdWUgdG8gY3VlVHJlZS4gIENhbGxlZCB3
aGVuIGN1ZXMgYXJlIGRpc2NvdmVyZWQvbG9hZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlKToKKyAgICAgICAgICAgIFJlbW92ZXMgYSBj
dWUgZnJvbSBjdWVUcmVlLiAgQ2FsbGVkIHdoZW4gY3VlcyBhbmQvb3IgdHJhY2tzIGRpZS4KKwor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tQcm9ncmVzc1RpbWVy
RmlyZWQpOgorICAgICAgICAgICAgVXBkYXRlIHRoZSBhY3RpdmUgVGV4dFRyYWNrQ3VlcyB3aGVu
IHBsYXliYWNrUHJvZ3Jlc3NUaW1lckZpcmVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6YWRkVHJhY2spOgorICAgICAgICAgICAgUGFzcyBhbG9uZyBhIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgdG8gVGV4dFRyYWNrOjpjcmVhdGUoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQpOgorICAgICAgICAgICAgVXBk
YXRlIHRoZSBhY3RpdmUgVGV4dFRyYWNrQ3VlcyB3aGVuIHRoZSBtZWRpYSBwbGF5ZXIgdGltZSBj
aGFuZ2VzLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAgICAg
VXNlIGEgUG9kSW50ZXJ2YWxUcmVlIGN1ZVRyZWUgdG8gc3RvcmUgYW5kIHJldHJpZXZlIFRleHRU
cmFja0N1ZXMKKyAgICAgICAgICAgIGR1cmluZyBwbGF5YmFjay4KKworICAgICAgICAqIGh0bWwv
SFRNTFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50
OjplbnN1cmVUcmFjayk6CisgICAgICAgICAgICBQYXNzIGFsb25nIGEgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCBuZWVkZWQgZm9yIEV2ZW50VGFyZ2V0IGludGVyZmFjZS4KKyAgICAgICAgKiBodG1s
L0xvYWRhYmxlVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRy
YWNrOjpMb2FkYWJsZVRleHRUcmFjayk6CisgICAgICAgICAgICBQYXNzIGFsb25nIGEgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCBuZWVkZWQgZm9yIEV2ZW50VGFyZ2V0IGludGVyZmFjZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjpmaXJlQ3VlQ2hhbmdlRXZlbnQpOgorICAg
ICAgICAgICAgRmlyZSBhIGN1ZSBjaGFuZ2UgZXZlbnQgb24gdGhpcyBUZXh0VHJhY2sncyA8dHJh
Y2s+CisgICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29y
ZTo6TG9hZGFibGVUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgICAgICBQYXNzIGFsb25nIGEg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBuZWVkZWQgZm9yIEV2ZW50VGFyZ2V0IGludGVyZmFjZS4K
KyAgICAgICAgKiBodG1sL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJh
Y2s6OlRleHRUcmFjayk6CisgICAgICAgICAgICBQYXNzIGFsb25nIGEgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCBuZWVkZWQgZm9yIEV2ZW50VGFyZ2V0IGludGVyZmFjZS4KKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFjazo6Y3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmFjdGl2
ZUN1ZXMpOgorICAgICAgICAgICAgUmV0dXJuIGEgVGV4dFRyYWNrQ3VlTGlzdCB0aGF0IHJlcHJl
c2VudHMgdGhlIGN1cnJlbnRseSBhY3RpdmUgY3Vlcy4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFjazo6ZmlyZUN1ZUNoYW5nZUV2ZW50KToKKyAgICAgICAgICAgIEZpcmVzIGEgY3VlIGNoYW5n
ZSBldmVudC4KKyAgICAgICAgKiBodG1sL1RleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAgICAgUGFzcyBhbG9uZyBhIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgbmVlZGVkIGZvciBFdmVudFRhcmdldCBpbnRlcmZhY2UuCisgICAgICAgICog
aHRtbC9UZXh0VHJhY2suaWRsOgorICAgICAgICAgICAgTWFrZXMgVGV4dFRyYWNrIGV4dGVuZCBF
dmVudFRhcmdldCBpbnRlcmZhY2UgYW5kIGFkZCBvbmN1ZWNoYW5nZS4KKyAgICAgICAgKiBodG1s
L1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OlRleHRU
cmFja0N1ZSk6CisgICAgICAgICAgICBUZXh0VHJhY2tDdWUgc2hvdWxkIGV4dGVuZCBFdmVudFRh
cmdldCwgbm90IEFjdGl2ZURPTU9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1
ZTo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpzZXRJc0FjdGl2
ZSk6CisgICAgICAgICAgICBEaXNwYXRjaCBhbiBlbnRlciBvciBleGl0IGV2ZW50IGRlcGVuZGlu
ZyBvbiBhY3RpdmUgc3RhdGUgYW5kIG5vdGlmeQorICAgICAgICAgICAgdGhlIGNvcnJlc3BvbmRp
bmcgdHJhY2sgdG8gZmlyZSBhIGN1ZWNoYW5nZSBldmVudC4KKworICAgICAgICBUaGUgZm9sbG93
aW5nIGFyZSBuZWVkZWQgZm9yIEV2ZW50VGFyZ2V0IGludGVyZmFjZToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja0N1ZTo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tDdWU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ3VlOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
Q3VlOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNrQ3Vl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OnJlZkV2ZW50VGFyZ2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6ZGVyZWZFdmVudFRhcmdldCk6CisKKyAgICAg
ICAgKiBodG1sL1RleHRUcmFja0N1ZS5pZGw6CisgICAgICAgICAgICBFeHRlbmQgRXZlbnRUYXJn
ZXQgYW5kIGFkZCBvbmVudGVyIGFuZCBvbmV4aXQuCisgICAgICAgICogaHRtbC9UZXh0VHJhY2tD
dWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUxpc3Q6OmFjdGl2ZUN1
ZXMpOgorICAgICAgICAgICAgVXBkYXRlIGFuZCByZXR1cm4gdGhlIGxpc3Qgb2YgY3VycmVudGx5
IGFjdGl2ZSBjdWVzLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6Y2xlYXIp
OgorICAgICAgICAgICAgQ2xlYXIgdGhlIGN1ZXMgZnJvbSBsaXN0IChuZWVkZWQgdG8gcmV0dXJu
IHNhbWUgb2JqZWN0IGVhY2ggdGltZSkuCisgICAgICAgICogaHRtbC9UZXh0VHJhY2tDdWVMaXN0
Lmg6CisKKyAgICAgICAgVGhlIGZvbGxvd2luZyBhcmUgbmVlZGVkIGZvciBFdmVudFRhcmdldCBp
bnRlcmZhY2U6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tCYXNlOjpUcmFja0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tC
YXNlOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OmV2ZW50VGFy
Z2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OmVuc3VyZUV2ZW50VGFyZ2V0
RGF0YSk6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0Jhc2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlRyYWNrQmFzZTo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tC
YXNlOjpkZXJlZkV2ZW50VGFyZ2V0KToKKwogMjAxMS0xMS0xMSAgQWRhbSBLbGVpbiAgPGFkYW1r
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgbm8tb3AgU3RvcmFnZU5hbWVzcGFjZTo6
dW5sb2NrIG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggNmMyZjQzNTQ5M2ExZTZm
NDY4NTE5ZWViYjVmYzMxNGU1NmQ3OWYyNC4uYzUzNmNmYzAwNDgwY2M3NGQ0ZWExMmVkZjFiZDZl
N2Y0NzU3ZTlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0xNDYsNiArMTQ2LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHdhaXRpbmcpIFwKICAgICBcCiAgICAgbWFj
cm8oYWRkdHJhY2spIFwKKyAgICBtYWNybyhjdWVjaGFuZ2UpIFwKKyAgICBtYWNybyhlbnRlcikg
XAorICAgIG1hY3JvKGV4aXQpIFwKICAgICBcCiAgICAgbWFjcm8od2Via2l0YmVnaW5mdWxsc2Ny
ZWVuKSBcCiAgICAgbWFjcm8od2Via2l0ZW5kZnVsbHNjcmVlbikgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuaAppbmRleCBjNmYxZjNkNDQzYjg1YjZmNjQyMGNlZWM5NGJlZmIyMjc4NjJkNDQ2Li5l
NjIxYjVkMWE4YWFiZjRmYjIwMTQwOTVhZmYwZWRiYWZiOTI3OGYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuaApAQCAtNjQsNiArNjQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXI7CiAgICAg
Y2xhc3MgU2hhcmVkV29ya2VyQ29udGV4dDsKKyAgICBjbGFzcyBUZXh0VHJhY2s7CisgICAgY2xh
c3MgVGV4dFRyYWNrQ3VlOwogICAgIGNsYXNzIFdlYlNvY2tldDsKICAgICBjbGFzcyBXb3JrZXI7
CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbgppbmRleCA3YWNmMTIxODYyYzNjODNlODM0OTc3Mjg2OTVlYmQ0YjExNmQzMzM4
Li4wY2UyNGY1NDNiMDcxYWFjYTU2MzNlNGEyZWU4NzA2YWJiM2M1ZDhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTIxLDYgKzIxLDggQEAgUGVlckNvbm5l
Y3Rpb24gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBTaGFyZWRXb3JrZXIgY29uZGl0aW9uYWw9
U0hBUkVEX1dPUktFUlMKIFNoYXJlZFdvcmtlckNvbnRleHQgY29uZGl0aW9uYWw9U0hBUkVEX1dP
UktFUlMKIFNWR0VsZW1lbnRJbnN0YW5jZSBjb25kaXRpb25hbD1TVkcKK1RleHRUcmFjayBjb25k
aXRpb25hbD1WSURFT19UUkFDSworVGV4dFRyYWNrQ3VlIGNvbmRpdGlvbmFsPVZJREVPX1RSQUNL
CiBUZXh0VHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiBXZWJTb2NrZXQgY29uZGl0
aW9uYWw9V0VCX1NPQ0tFVFMKIFdvcmtlciBjb25kaXRpb25hbD1XT1JLRVJTCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBkZjIyYmIxYWU0ZDYxMWNjYWJjMjYx
ODhhMTk4NWNhM2U5ODY2NzI5Li42MTNkYTU5NmM0OTA2MmIxMTA0Y2I4ZmJhMmFiODBkOGQ2ZTFl
NjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTg5LDYg
Kzg5LDcgQEAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAjaW5jbHVkZSAiSFRNTFRyYWNrRWxl
bWVudC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJU
ZXh0VHJhY2tDdWVMaXN0LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgogI2VuZGlmCiAK
QEAgLTUwMiw3ICs1MDMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVk
KFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+KikKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAg
ICBpZiAobV9wZW5kaW5nTG9hZEZsYWdzICYgVGV4dFRyYWNrUmVzb3VyY2UpCi0gICAgICAgIGNv
bmZpZ3VyZVRleHRUcmFja3MoKTsKKyAgICAgICAgc2NoZWR1bGVMb2FkKFRleHRUcmFja1Jlc291
cmNlKTsKICNlbmRpZgogCiAgICAgbV9wZW5kaW5nTG9hZEZsYWdzID0gMDsKQEAgLTg2Miw2ICs4
NjMsMjcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoY29uc3QgS1VSTCYg
aW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnQKIH0KIAogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhm
bG9hdCBtb3ZpZVRpbWUpCit7CisgICAgVmVjdG9yPEN1ZUludGVydmFsVHJlZTo6SW50ZXJ2YWxU
eXBlPiBwcmV2aW91c2x5VmlzaWJsZUN1ZXMgPSBtX2N1cnJlbnRseVZpc2libGVDdWVzOworCisg
ICAgbV9jdXJyZW50bHlWaXNpYmxlQ3VlcyA9IG1fY3VlVHJlZS5hbGxPdmVybGFwcyhtX2N1ZVRy
ZWUuY3JlYXRlSW50ZXJ2YWwobW92aWVUaW1lLCBtb3ZpZVRpbWUpKTsKKyAgICAKKyAgICAvLyBG
SVhNRSg3MjE3MSk6IEV2ZW50cyBuZWVkIHRvIGJlIHNvcnRlZCBhbmQgZmlsdGVyZWQgYmVmb3Jl
IGRpc3BhdGNoaW5nLgorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmV2aW91c2x5Vmlz
aWJsZUN1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFtX2N1cnJlbnRseVZpc2libGVD
dWVzLmNvbnRhaW5zKHByZXZpb3VzbHlWaXNpYmxlQ3Vlc1tpXSkpCisgICAgICAgICAgICBwcmV2
aW91c2x5VmlzaWJsZUN1ZXNbaV0uZGF0YSgpLT5zZXRJc0FjdGl2ZShmYWxzZSk7CisgICAgfQor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jdXJyZW50bHlWaXNpYmxlQ3Vlcy5zaXplKCk7
ICsraSkgeworICAgICAgICBpZiAoIXByZXZpb3VzbHlWaXNpYmxlQ3Vlcy5jb250YWlucyhtX2N1
cnJlbnRseVZpc2libGVDdWVzW2ldKSkKKyAgICAgICAgICAgIG1fY3VycmVudGx5VmlzaWJsZUN1
ZXNbaV0uZGF0YSgpLT5zZXRJc0FjdGl2ZSh0cnVlKTsKKyAgICB9CisgICAgCisgICAgLy8gRklY
TUUoNzIxNzMpOiBQYXVzZSB0aGUgbWVkaWEgZWxlbWVudCBmb3IgY3VlcyBnb2luZyBwYXN0IHRo
ZWlyIGVuZFRpbWUKKyAgICAvLyBkdXJpbmcgYSBtb25vdG9uaWMgdGltZSBpbmNyZWFzZS4KK30K
Kwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0
VHJhY2sqKQogewogICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgpAQCAtODcyLDI0ICs4
OTQsMjYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0
VHJhY2sqKQogICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgogfQogCi12b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNr
Q3VlTGlzdCopIAordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKFRleHRU
cmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqIGN1ZXMpIAogewotICAgIC8vIEZJWE1FKDYy
ODg1KTogSW1wbGVtZW50LgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY3Vlcy0+bGVuZ3Ro
KCk7ICsraSkKKyAgICAgICAgdGV4dFRyYWNrQWRkQ3VlKGN1ZXMtPml0ZW0oaSktPnRyYWNrKCks
IGN1ZXMtPml0ZW0oaSkpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja1Jl
bW92ZUN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopIAordm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRU
cmFja0N1ZUxpc3QqIGN1ZXMpIAogewotICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50Lgor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY3Vlcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAg
dGV4dFRyYWNrUmVtb3ZlQ3VlKGN1ZXMtPml0ZW0oaSktPnRyYWNrKCksIGN1ZXMtPml0ZW0oaSkp
OwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sq
LCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRU
cmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gY3VlKQogewot
ICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgorICAgIG1fY3VlVHJlZS5hZGQobV9jdWVU
cmVlLmNyZWF0ZUludGVydmFsKGN1ZS0+c3RhcnRUaW1lKCksIGN1ZS0+ZW5kVGltZSgpLCBjdWUu
Z2V0KCkpKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUo
VGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KQordm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tD
dWU+IGN1ZSkKIHsKLSAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KKyAgICBtX2N1ZVRy
ZWUucmVtb3ZlKG1fY3VlVHJlZS5jcmVhdGVJbnRlcnZhbChjdWUtPnN0YXJ0VGltZSgpLCBjdWUt
PmVuZFRpbWUoKSwgY3VlLmdldCgpKSk7CiB9CiAKICNlbmRpZgpAQCAtMTk0MCw2ICsxOTY0LDEx
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tQcm9ncmVzc1RpbWVyRmlyZWQoVGlt
ZXI8SFRNTE1lZGlhRWxlbWVudD4qKQogICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAg
ICAgIG1lZGlhQ29udHJvbHMoKS0+cGxheWJhY2tQcm9ncmVzc2VkKCk7CiAgICAgLy8gRklYTUU6
IGRlYWwgd2l0aCBjdWUgcmFuZ2VzIGhlcmUKKyAgICAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CisgICAgZmxvYXQgbW92aWVUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICB1cGRhdGVBY3RpdmVU
ZXh0VHJhY2tDdWVzKG1vdmllVGltZSk7CisjZW5kaWYKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpzY2hlZHVsZVRpbWV1cGRhdGVFdmVudChib29sIHBlcmlvZGljRXZlbnQpCkBAIC0xOTkz
LDcgKzIwMjIsNyBAQCBQYXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6YWRk
VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbgogICAgICAgICByZXR1cm4gMDsK
IAogICAgIC8vIEZJWE1FKDcxOTE1KTogYWRkVHJhY2sgc2hvdWxkIHRocm93IGEgU3ludGF4RXJy
b3IgZXhjZXB0aW9uIGlmICdraW5kJyBpcyBhbiB1bmtub3duIHZhbHVlLgotICAgIFJlZlB0cjxU
ZXh0VHJhY2s+IHRleHRUcmFjayA9IFRleHRUcmFjazo6Y3JlYXRlKHRoaXMsIGtpbmQsIGxhYmVs
LCBsYW5ndWFnZSk7CisgICAgUmVmUHRyPFRleHRUcmFjaz4gdGV4dFRyYWNrID0gVGV4dFRyYWNr
OjpjcmVhdGUoQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMs
IGtpbmQsIGxhYmVsLCBsYW5ndWFnZSk7CiAgICAgYWRkVGV4dFRyYWNrKHRleHRUcmFjayk7CiAg
ICAgcmV0dXJuIHRleHRUcmFjay5yZWxlYXNlKCk7CiB9CkBAIC0yMzI1LDYgKzIzNTQsOSBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQoTWVkaWFQbGF5ZXIq
KQogICAgICAgICBtX3NlbnRFbmRFdmVudCA9IGZhbHNlOwogCiAgICAgdXBkYXRlUGxheVN0YXRl
KCk7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1
ZXMobm93KTsKKyNlbmRpZgogICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZjRhYmI2YzE5
Y2FhYzVmZWRlZWMxOTlkNTYwZGEyZGQzNDFhYTk5NC4uZmIzNjg2YjcwYTI1ZTEzZjAxMDBkOGFj
NzRmN2E1YTRiN2VmYjVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
QEAgLTM4LDcgKzM4LDkgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2lu
Y2x1ZGUgIlBPREludGVydmFsVHJlZS5oIgogI2luY2x1ZGUgIlRleHRUcmFjay5oIgorI2luY2x1
ZGUgIlRleHRUcmFja0N1ZS5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3
Myw2ICszNzUsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIHZv
aWQgY29uZmlndXJlVGV4dFRyYWNrcygpOworICAgIHZvaWQgdXBkYXRlQWN0aXZlVGV4dFRyYWNr
Q3VlcyhmbG9hdCk7CiAjZW5kaWYKIAogICAgIC8vIFRoZXNlICJpbnRlcm5hbCIgZnVuY3Rpb25z
IGRvIG5vdCBjaGVjayB1c2VyIGdlc3R1cmUgcmVzdHJpY3Rpb25zLgpAQCAtNTI1LDkgKzUyOCwz
NCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIFJlZlB0cjxUZXh0
VHJhY2tMaXN0PiBtX3RleHRUcmFja3M7CisgICAgCisgICAgdHlwZWRlZiBQT0RJbnRlcnZhbFRy
ZWUgPGRvdWJsZSwgVGV4dFRyYWNrQ3VlKj4gQ3VlSW50ZXJ2YWxUcmVlOworICAgIEN1ZUludGVy
dmFsVHJlZSBtX2N1ZVRyZWU7CisgICAgVmVjdG9yPEN1ZUludGVydmFsVHJlZTo6SW50ZXJ2YWxU
eXBlPiBtX2N1cnJlbnRseVZpc2libGVDdWVzOwogI2VuZGlmCiB9OwogCisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorI2lmbmRlZiBOREVCVUcKKy8vIFRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucyBy
ZXF1aXJlZCBieSBQb2RJbnRlcnZhbFRyZWUgaW4gZGVidWcgbW9kZS4KK3RlbXBsYXRlIDw+Citz
dHJ1Y3QgVmFsdWVUb1N0cmluZzxkb3VibGU+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHN0cmluZyhj
b25zdCBkb3VibGUgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIo
dmFsdWUpOworICAgIH0KK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgVmFsdWVUb1N0cmluZzxU
ZXh0VHJhY2tDdWUqPiB7CisgICAgc3RhdGljIFN0cmluZyBzdHJpbmcoVGV4dFRyYWNrQ3VlKiBj
b25zdCYgY3VlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcCBpZD0l
cyBpbnRlcnZhbD0lZi0tPiVmIGN1ZT0lcykiLCBjdWUsIGN1ZS0+aWQoKS51dGY4KCkuZGF0YSgp
LCBjdWUtPnN0YXJ0VGltZSgpLCBjdWUtPmVuZFRpbWUoKSwgY3VlLT5nZXRDdWVBc1NvdXJjZSgp
LnV0ZjgoKS5kYXRhKCkpOworICAgIH0KK307CisjZW5kaWYKKyNlbmRpZgorCiB9IC8vbmFtZXNw
YWNlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5k
ZXggYTViMDhhMmY5NzQzZjM2MDJjN2YwY2YxODM0NTkwMzA0ZmM5YWUzMC4uZWUwNTVlNWE2NWUz
MzM3YTRlN2IwNDZiYTU2MzJkNWY0NDk1ZjhiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
cmFja0VsZW1lbnQuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgTG9hZGFibGVUZXh0VHJhY2sqIEhU
TUxUcmFja0VsZW1lbnQ6OmVuc3VyZVRyYWNrKCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBp
ZiAoIW1fdHJhY2spCi0gICAgICAgIG1fdHJhY2sgPSBMb2FkYWJsZVRleHRUcmFjazo6Y3JlYXRl
KHRoaXMsIGtpbmQoKSwgbGFiZWwoKSwgc3JjbGFuZygpLCBpc0RlZmF1bHQoKSk7CisgICAgICAg
IG1fdHJhY2sgPSBMb2FkYWJsZVRleHRUcmFjazo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgdGhpcywga2luZCgpLCBsYWJlbCgpLCBzcmNsYW5nKCksIGlzRGVmYXVsdCgpKTsKICAg
ICByZXR1cm4gbV90cmFjay5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxl
VGV4dFRyYWNrLmNwcAppbmRleCA3MWNlYmE4YjdlOWMwOTA2MGNhZWI1ZGFlNDFhZTM2ZDU1ODgw
Zjg4Li5mNGQ2NmFiMDJiZWJjMmQ5M2ZhOTJjNGIyZjA3N2QzODE2NjI2NzE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcApAQCAtMjksMTQgKzI5LDE2IEBACiAK
ICNpbmNsdWRlICJMb2FkYWJsZVRleHRUcmFjay5oIgogCisjaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlICJIVE1MVHJhY2tFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5l
ci5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUZXh0
VHJhY2tDdWVMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTG9hZGFibGVUZXh0VHJh
Y2s6OkxvYWRhYmxlVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrLCBjb25zdCBTdHJp
bmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJv
b2wgaXNEZWZhdWx0KQotICAgIDogVGV4dFRyYWNrKHRyYWNrLCBraW5kLCBsYWJlbCwgbGFuZ3Vh
Z2UpCitMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgSFRNTFRyYWNrRWxlbWVudCogdHJhY2ssIGNvbnN0IFN0cmluZyYg
a2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBp
c0RlZmF1bHQpCisgICAgOiBUZXh0VHJhY2soY29udGV4dCwgdHJhY2ssIGtpbmQsIGxhYmVsLCBs
YW5ndWFnZSkKICAgICAsIG1fdHJhY2tFbGVtZW50KHRyYWNrKQogICAgICwgbV9sb2FkVGltZXIo
dGhpcywgJkxvYWRhYmxlVGV4dFRyYWNrOjpsb2FkVGltZXJGaXJlZCkKICAgICAsIG1faXNEZWZh
dWx0KGlzRGVmYXVsdCkKQEAgLTExMSw2ICsxMTMsMTMgQEAgdm9pZCBMb2FkYWJsZVRleHRUcmFj
azo6Y3VlTG9hZGluZ0NvbXBsZXRlZChUZXh0VHJhY2tMb2FkZXIqIGxvYWRlciwgYm9vbCBsb2Fk
aW4KICAgICAgICAgbV90cmFja0VsZW1lbnQtPmRpZENvbXBsZXRlTG9hZCh0aGlzLCBsb2FkaW5n
RmFpbGVkKTsKIH0KIAordm9pZCBMb2FkYWJsZVRleHRUcmFjazo6ZmlyZUN1ZUNoYW5nZUV2ZW50
KCkKK3sKKyAgICBUZXh0VHJhY2s6OmZpcmVDdWVDaGFuZ2VFdmVudCgpOworICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIG1fdHJhY2tFbGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmN1ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpLCBlYyk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xv
YWRhYmxlVGV4dFRyYWNrLmgKaW5kZXggMmQ4ODE5YjY4ZmYyMDVkOTNiZDNjOWI3NjdmZjgzNGE0
ODI3OWQzOC4uMDA5NjUzY2NhY2YwMzFjYWZjZDY1YWQ1OTA0OWRjNTE2MGE5MDdlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaApAQCAtNDgsOSArNDgsOSBAQCBwdWJs
aWM6CiAKIGNsYXNzIExvYWRhYmxlVGV4dFRyYWNrIDogcHVibGljIFRleHRUcmFjaywgcHJpdmF0
ZSBUZXh0VHJhY2tMb2FkZXJDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PExvYWRhYmxlVGV4dFRyYWNrPiBjcmVhdGUoSFRNTFRyYWNrRWxlbWVudCogdHJhY2ssIGNvbnN0
IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFn
ZSwgYm9vbCBpc0RlZmF1bHQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TG9hZGFibGVUZXh0VHJh
Y2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBIVE1MVHJhY2tFbGVt
ZW50KiB0cmFjaywgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgTG9hZGFibGVUZXh0VHJhY2sodHJhY2ssIGtpbmQsIGxhYmVsLCBsYW5n
dWFnZSwgaXNEZWZhdWx0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTG9hZGFibGVU
ZXh0VHJhY2soY29udGV4dCwgdHJhY2ssIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSwgaXNEZWZhdWx0
KSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkxvYWRhYmxlVGV4dFRyYWNrKCk7CiAKQEAgLTY1LDkg
KzY1LDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGN1ZUxvYWRpbmdTdGFydGVkKFRl
eHRUcmFja0xvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBjdWVMb2FkaW5nQ29tcGxldGVkKFRl
eHRUcmFja0xvYWRlciosIGJvb2wgbG9hZGluZ0ZhaWxlZCk7CiAKLSAgICBMb2FkYWJsZVRleHRU
cmFjayhIVE1MVHJhY2tFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCk7CisgICAgTG9h
ZGFibGVUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEhUTUxUcmFja0VsZW1lbnQq
LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYg
bGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KTsKIAogICAgIHZvaWQgbG9hZFRpbWVyRmlyZWQoVGlt
ZXI8TG9hZGFibGVUZXh0VHJhY2s+Kik7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGZpcmVDdWVD
aGFuZ2VFdmVudCgpOwogCiAgICAgSFRNTFRyYWNrRWxlbWVudCogbV90cmFja0VsZW1lbnQ7CiAg
ICAgVGltZXI8TG9hZGFibGVUZXh0VHJhY2s+IG1fbG9hZFRpbWVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
VHJhY2suY3BwCmluZGV4IDY0NWU1NDZhMDA4M2VlNzgwOTY4Y2RhOGYxZTVhZWVkMTU1ZTI3NDku
LjI0Zjg3OTVmMDA5ZWRjMDlhZTkxNjJiMDJkNGVlY2ViNWYyYTliMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRUcmFjay5jcHAKQEAgLTM0LDE0ICszNCwxNSBAQAogCiAjaW5jbHVkZSAiVGV4dFRyYWNr
LmgiCiAKKyNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotVGV4dFRyYWNrOjpUZXh0VHJhY2soVGV4dFRyYWNrQ2xpZW50
KiBjbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qg
U3RyaW5nJiBsYW5ndWFnZSkKLSAgICA6IFRyYWNrQmFzZShUcmFja0Jhc2U6OlRleHRUcmFjaykK
K1RleHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRl
eHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYg
bGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCisgICAgOiBUcmFja0Jhc2UoY29udGV4dCwg
VHJhY2tCYXNlOjpUZXh0VHJhY2spCiAgICAgLCBtX2tpbmQoa2luZCkKICAgICAsIG1fbGFiZWwo
bGFiZWwpCiAgICAgLCBtX2xhbmd1YWdlKGxhbmd1YWdlKQpAQCAtMTA5LDE0ICsxMTAsMjEgQEAg
VGV4dFRyYWNrQ3VlTGlzdCogVGV4dFRyYWNrOjpjdWVzKCkgY29uc3QKICAgICAvLyBPdGhlcndp
c2UsIGl0IG11c3QgcmV0dXJuIG51bGwuIFdoZW4gYW4gb2JqZWN0IGlzIHJldHVybmVkLCB0aGUK
ICAgICAvLyBzYW1lIG9iamVjdCBtdXN0IGJlIHJldHVybmVkIGVhY2ggdGltZS4KICAgICAvLyBo
dHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNkb20tdGV4
dHRyYWNrLWN1ZXMKLSAgICBpZiAobV9tb2RlICE9IFRleHRUcmFjazo6RElTQUJMRUQpCisgICAg
aWYgKG1fY3VlcyAmJiBtX21vZGUgIT0gVGV4dFRyYWNrOjpESVNBQkxFRCkKICAgICAgICAgcmV0
dXJuIG1fY3Vlcy5nZXQoKTsKICAgICByZXR1cm4gMDsKIH0KIAogVGV4dFRyYWNrQ3VlTGlzdCog
VGV4dFRyYWNrOjphY3RpdmVDdWVzKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRSg2Mjg4NSk6IElt
cGxlbWVudC4KKyAgICAvLyA0LjguMTAuMTIuNSBJZiB0aGUgdGV4dCB0cmFjayBtb2RlIC4uLiBp
cyBub3QgdGhlIHRleHQgdHJhY2sgZGlzYWJsZWQgbW9kZSwKKyAgICAvLyB0aGVuIHRoZSBhY3Rp
dmVDdWVzIGF0dHJpYnV0ZSBtdXN0IHJldHVybiBhIGxpdmUgVGV4dFRyYWNrQ3VlTGlzdCBvYmpl
Y3QgLi4uCisgICAgLy8gLi4uIHdob3NlIGFjdGl2ZSBmbGFnIHdhcyBzZXQgd2hlbiB0aGUgc2Ny
aXB0IHN0YXJ0ZWQsIGluIHRleHQgdHJhY2sgY3VlCisgICAgLy8gb3JkZXIuIE90aGVyd2lzZSwg
aXQgbXVzdCByZXR1cm4gbnVsbC4gV2hlbiBhbiBvYmplY3QgaXMgcmV0dXJuZWQsIHRoZQorICAg
IC8vIHNhbWUgb2JqZWN0IG11c3QgYmUgcmV0dXJuZWQgZWFjaCB0aW1lLgorICAgIC8vIGh0dHA6
Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI2RvbS10ZXh0dHJh
Y2stYWN0aXZlY3VlcworICAgIGlmIChtX2N1ZXMgJiYgbV9tb2RlICE9IFRleHRUcmFjazo6RElT
QUJMRUQpCisgICAgICAgIHJldHVybiBtX2N1ZXMtPmFjdGl2ZUN1ZXMoKTsKICAgICByZXR1cm4g
MDsKIH0KIApAQCAtMTQxLDYgKzE0OSwxMiBAQCB2b2lkIFRleHRUcmFjazo6ZmV0Y2hOZXdlc3RD
dWVzKFZlY3RvcjxUZXh0VHJhY2tDdWUqPiYpCiAgICAgLy8gRklYTUUoNjI4OTApOiBJbXBsZW1l
bnQuCiB9CiAKK3ZvaWQgVGV4dFRyYWNrOjpmaXJlQ3VlQ2hhbmdlRXZlbnQoKQoreworICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuY3VlY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSksIGVjKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCmluZGV4IDg4
YjdmYWUzZjhmNzdjMjUzN2E3OThlNmMxNjAyZDM4YmVhMjQ4MDUuLmUwNjVlNjZjNDBkOWQzMDNi
Y2NjN2YzZmJhYmQ0M2M2ZWUwNjdiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaApAQCAtNTQs
OSArNTQsOSBAQCBwdWJsaWM6CiAKIGNsYXNzIFRleHRUcmFjayA6IHB1YmxpYyBUcmFja0Jhc2Ug
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFjaz4gY3JlYXRlKFRleHRU
cmFja0NsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRy
YWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29u
c3QgU3RyaW5nJiBsYW5ndWFnZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
VGV4dFRyYWNrKGNsaWVudCwga2luZCwgbGFiZWwsIGxhbmd1YWdlKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVGV4dFRyYWNrKGNvbnRleHQsIGNsaWVudCwga2luZCwgbGFiZWwsIGxh
bmd1YWdlKSk7CiAgICAgfQogICAgIHZpcnR1YWwgflRleHRUcmFjaygpOwogCkBAIC04NSw5ICs4
NSwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBuZXdDdWVzTG9hZGVkKCk7CiAgICAgdm9p
ZCBmZXRjaE5ld2VzdEN1ZXMoVmVjdG9yPFRleHRUcmFja0N1ZSo+Jik7CisgICAgCisgICAgdmly
dHVhbCB2b2lkIGZpcmVDdWVDaGFuZ2VFdmVudCgpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoY3VlY2hhbmdlKTsKIAogcHJvdGVjdGVkOgotICAgIFRleHRUcmFjayhUZXh0
VHJhY2tDbGllbnQqLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNv
bnN0IFN0cmluZyYgbGFuZ3VhZ2UpOworICAgIFRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKTsKIAogICAgIHZvaWQgc2V0UmVhZHlTdGF0
ZShSZWFkeVN0YXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJh
Y2suaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaWRsCmluZGV4IGFlNDI3MTJj
OWM1YTRjMDQ3MzQ2MjIxMjhhZDg4MDI2OWM5Y2IwYTYuLmFhYzQyZDA3MzRlOTQyOWM0MDg1NDRi
ZjMyMDQxODRkNjI4YTZjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRy
YWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5pZGwKQEAgLTI4LDYg
KzI4LDcgQEAgbW9kdWxlIGh0bWwgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlv
bmFsPVZJREVPX1RSQUNLLAogICAgICAgICBFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJh
Y2ssCisgICAgICAgIEV2ZW50VGFyZ2V0CiAgICAgXSBUZXh0VHJhY2sgewogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtpbmQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgbGFiZWw7CkBAIC00OCwxMCArNDksMjEgQEAgbW9kdWxlIGh0bWwgewogCiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tDdWVMaXN0IGN1ZXM7CiAgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tDdWVMaXN0IGFjdGl2ZUN1ZXM7CisgICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY3VlY2hhbmdlOwogCiAgICAgICAg
IHZvaWQgYWRkQ3VlKGluIFRleHRUcmFja0N1ZSBjdWUpCiAgICAgICAgICAgICByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgcmVtb3ZlQ3VlKGluIFRleHRUcmFja0N1ZSBjdWUp
CiAgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgLy8gRXZlbnRU
YXJnZXQgaW50ZXJmYWNlCisgICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJp
bmcgdHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVy
IGxpc3RlbmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0g
Ym9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGlu
IERPTVN0cmluZyB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2
ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3Bh
dGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9u
KTsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tD
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IGQwYmJl
NTg3MmYyZjllM2I4Y2JiZGQ1YTgyOGU2N2QzNTIwNjk5MTkuLmMwZmIwNzU4YTMyM2YyMGYxN2Zi
YmY0YTlhOTc2OTczNjczZjQ4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4
dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgogCisjaW5jbHVk
ZSAiRXZlbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiVGV4
dFRyYWNrLmgiCiAjaW5jbHVkZSAiV2ViVlRUUGFyc2VyLmgiCkBAIC00Miw4ICs0Myw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgaWQsIGRvdWJsZSBzdGFydCwg
ZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHNldHRpbmdz
LCBib29sIHBhdXNlT25FeGl0KQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMp
Ci0gICAgLCBtX2lkKGlkKQorICAgIDogbV9pZChpZCkKICAgICAsIG1fc3RhcnRUaW1lKHN0YXJ0
KQogICAgICwgbV9lbmRUaW1lKGVuZCkKICAgICAsIG1fY29udGVudChjb250ZW50KQpAQCAtNTUs
NiArNTUsNyBAQCBUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGlkLCBkbwogICAgICwgbV9jdWVTaXplKDEwMCkK
ICAgICAsIG1fY3VlQWxpZ25tZW50KE1pZGRsZSkKICAgICAsIG1faXNBY3RpdmUoZmFsc2UpCisg
ICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKIHsKICAgICBwYXJzZVNldHRp
bmdzKHNldHRpbmdzKTsKIH0KQEAgLTEzOCwxOCArMTM5LDIxIEBAIHZvaWQgVGV4dFRyYWNrQ3Vl
OjpzZXRDdWVIVE1MKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQpCiAKIGJv
b2wgVGV4dFRyYWNrQ3VlOjppc0FjdGl2ZSgpCiB7Ci0gICAgLy8gRklYTUUoNjI4ODUpOiBJbXBs
ZW1lbnQuCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2lzQWN0aXZlOwogfQogCiB2
b2lkIFRleHRUcmFja0N1ZTo6c2V0SXNBY3RpdmUoYm9vbCBhY3RpdmUpCiB7CiAgICAgbV9pc0Fj
dGl2ZSA9IGFjdGl2ZTsKLX0KIAotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogVGV4dFRyYWNrQ3Vl
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gQWN0aXZlRE9N
T2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgaWYgKGFjdGl2ZSkKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5lbnRlckV2ZW50LCBmYWxzZSwgZmFsc2UpLCBlYyk7CisgICAgZWxzZQor
ICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmV4aXRFdmVu
dCwgZmFsc2UsIGZhbHNlKSwgZWMpOworCisgICAgaWYgKG1fdHJhY2spCisgICAgICAgIG1fdHJh
Y2stPmZpcmVDdWVDaGFuZ2VFdmVudCgpOwogfQogCiB2b2lkIFRleHRUcmFja0N1ZTo6cGFyc2VT
ZXR0aW5ncyhjb25zdCBTdHJpbmcmIGlucHV0KQpAQCAtMzA3LDYgKzMxMSwyNiBAQCBPdGhlcndp
c2U6CiAgICAgfQogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja0N1ZTo6aW50ZXJm
YWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JU
ZXh0VHJhY2tDdWU7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFRleHRUcmFja0N1ZTo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKK30KKworRXZlbnRUYXJnZXREYXRhKiBUZXh0VHJhY2tDdWU6OmV2ZW50
VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworRXZl
bnRUYXJnZXREYXRhKiBUZXh0VHJhY2tDdWU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7Cisg
ICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3Vl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5oCmluZGV4IGFjMjMyMTQ0Mjk3
MmM5ZDk4YWRiOGYwM2QwMjhlYzY2OGUyMmYwZGEuLmE2NDdjZTY1ZmMxN2MzYjE4YWM2OGYzY2Jj
Y2JiNTlmN2IwZTNmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNr
Q3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuaApAQCAtMzMsNyAr
MzMsNyBAQAogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCi0jaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJUZXh0VHJhY2su
aCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVGV4dFRyYWNrOwogCi1jbGFzcyBUZXh0VHJhY2tD
dWUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+LCBwdWJsaWMgQWN0aXZlRE9NT2Jq
ZWN0IHsKK2NsYXNzIFRleHRUcmFja0N1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHRUcmFja0N1
ZT4sIHB1YmxpYyBFdmVudFRhcmdldCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
VGV4dFRyYWNrQ3VlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBpZCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnQsIGNvbnN0IFN0cmluZyYgc2V0dGluZ3MsIGJvb2wgcGF1c2VPbkV4aXQpCiAgICAgewpA
QCAtNzgsMTMgKzc4LDI4IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWN0aXZlKCk7CiAgICAgdm9p
ZCBzZXRJc0FjdGl2ZShib29sKTsKICAgICAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCisgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihlbnRlcik7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihleGl0KTsKKworICAgIHVzaW5nIFJlZkNvdW50ZWQ8VGV4dFRyYWNrQ3VlPjo6cmVm
OworICAgIHVzaW5nIFJlZkNvdW50ZWQ8VGV4dFRyYWNrQ3VlPjo6ZGVyZWY7CisKK3Byb3RlY3Rl
ZDoKKworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAg
ICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisKIHBy
aXZhdGU6CiAgICAgVGV4dFRyYWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIGlkLCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVu
dCwgY29uc3QgU3RyaW5nJiBzZXR0aW5ncywgYm9vbCBwYXVzZU9uRXhpdCk7CiAKICAgICB2b2lk
IHBhcnNlU2V0dGluZ3MoY29uc3QgU3RyaW5nJik7CiAgICAgCisgICAgdmlydHVhbCB2b2lkIHJl
ZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFy
Z2V0KCkgeyBkZXJlZigpOyB9CisgICAgCiAgICAgVGV4dFRyYWNrKiBtX3RyYWNrOwogICAgIAog
ICAgIFN0cmluZyBtX2lkOwpAQCAtMTAxLDYgKzExNiw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IG1fZG9jdW1lbnRGcmFnbWVudDsKIAogICAgIGJvb2wgbV9pc0Fj
dGl2ZTsKKyAgICAKKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CisgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0VHJhY2tDdWUuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuaWRsCmlu
ZGV4IGUyYTE4ODNmMWYzZGU2MzdiNWM5NmY3NGYyNTcxMTViYTE0NzA3NWEuLjExYmQ0NDUzODcz
ZTA4ZTJmZjJmMzEwNTdjODgwMjY5YzkyMWY3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dFRyYWNrQ3VlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFj
a0N1ZS5pZGwKQEAgLTMwLDcgKzMwLDggQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBFbmFibGVk
QXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2ssCiAgICAgICAgIEdlbmVyYXRlTmF0aXZlQ29udmVy
dGVyLAogICAgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgaWQsIGluIGRvdWJsZSBzdGFy
dFRpbWUsIGluIGRvdWJsZSBlbmRUaW1lLCBpbiBET01TdHJpbmcgdGV4dCwgaW4gW09wdGlvbmFs
PUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgc2V0dGluZ3MsIGluIFtPcHRpb25hbD1D
YWxsV2l0aERlZmF1bHRWYWx1ZV0gYm9vbGVhbiBwYXVzZU9uRXhpdCksCi0gICAgICAgIENhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKKyAgICAgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwKKyAgICAgICAgRXZlbnRUYXJnZXQKICAgICBdIFRleHRUcmFja0N1ZSB7CiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2sgdHJhY2s7CiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CkBAIC00OCw2ICs0OSwxOSBAQCBtb2R1bGUgaHRt
bCB7CiAKICAgICAgICAgRE9NU3RyaW5nIGdldEN1ZUFzU291cmNlKCk7CiAgICAgICAgIERvY3Vt
ZW50RnJhZ21lbnQgZ2V0Q3VlQXNIVE1MKCk7CisgICAgICAgIAorICAgICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbmVudGVyOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBv
bmV4aXQ7CisgICAgICAgIAorICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAg
ICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwor
ICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4g
dXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQp
CisgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwogICAgIH07CiAKIH0KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRUcmFja0N1ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0
LmNwcAppbmRleCBhOTg4YzUyNDEwMDU5MmY4Y2Q3ZWJjZGQ5YTg0NjhmNjc0MDE5M2UxLi42YjI1
OTcxZWQ0NDNhMzc2ZjcyNzJmNjhlNDc1ZmUxNTNlODAyYzg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAKQEAgLTU2LDYgKzU2LDIwIEBAIFRleHRUcmFja0N1ZSog
VGV4dFRyYWNrQ3VlTGlzdDo6Z2V0Q3VlQnlJZChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAogICAg
IHJldHVybiAwOwogfQogCitUZXh0VHJhY2tDdWVMaXN0KiBUZXh0VHJhY2tDdWVMaXN0OjphY3Rp
dmVDdWVzKCkKK3sKKyAgICBpZiAoIW1fYWN0aXZlQ3VlcykKKyAgICAgICAgbV9hY3RpdmVDdWVz
ID0gY3JlYXRlKCk7CisKKyAgICBtX2FjdGl2ZUN1ZXMtPmNsZWFyKCk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2xpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPFRleHRU
cmFja0N1ZT4gY3VlID0gbV9saXN0W2ldOworICAgICAgICBpZiAoY3VlLT5pc0FjdGl2ZSgpKQor
ICAgICAgICAgICAgbV9hY3RpdmVDdWVzLT5hZGQoY3VlKTsKKyAgICB9CisgICAgcmV0dXJuIG1f
YWN0aXZlQ3Vlcy5nZXQoKTsKK30KKwogdm9pZCBUZXh0VHJhY2tDdWVMaXN0OjphZGQoY29uc3Qg
VmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4mIG5ld0N1ZXMpCiB7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBuZXdDdWVzLnNpemUoKTsgKytpKQpAQCAtMTAxLDYgKzExNSwxMSBAQCBi
b29sIFRleHRUcmFja0N1ZUxpc3Q6OmNvbnRhaW5zKFRleHRUcmFja0N1ZSogY3VlKSBjb25zdAog
ICAgIHJldHVybiBtX2xpc3QuY29udGFpbnMoY3VlKTsKIH0KIAordm9pZCBUZXh0VHJhY2tDdWVM
aXN0OjpjbGVhcigpCit7CisgICAgbV9saXN0LmNsZWFyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRU
cmFja0N1ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5oCmlu
ZGV4IGFlNDc0ZWU3M2U0MmIyOGJiYWUxYzQxMGY2Y2JiY2U5M2ZmYzVkNTUuLjc3NDg1MGNmZTJl
NmE1YjVkMzIzMzhmYmY0ZGMzYzc0NDU2ZmZlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRy
YWNrQ3VlTGlzdC5oCkBAIC01Nyw4ICs1NywxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFRl
eHRUcmFja0N1ZUxpc3QoKTsKICAgICB2b2lkIGFkZChQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4s
IHNpemVfdCwgc2l6ZV90KTsKKyAgICB2b2lkIGNsZWFyKCk7CiAgICAgCiAgICAgVmVjdG9yPFJl
ZlB0cjxUZXh0VHJhY2tDdWU+ID4gbV9saXN0OworICAgIFJlZlB0cjxUZXh0VHJhY2tDdWVMaXN0
PiBtX2FjdGl2ZUN1ZXM7CisgICAgCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKaW5kZXggNTUzNTg0ODY4ZThkNzIxYjNk
YWFiZjZkODk4M2IwYjYyMTdkMjgwZC4uNmEyYzM1ODIzZTYxOTYyYTM3YzlmOGY0Y2VmZDk4OWRk
YWI1MGRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcApAQCAtMzAs
NyArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVRyYWNrQmFzZTo6VHJhY2tCYXNl
KFR5cGUgdHlwZSkKK1RyYWNrQmFzZTo6VHJhY2tCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFR5cGUgdHlwZSkKKyAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250
ZXh0KQogewogICAgIEFTU0VSVCh0eXBlICE9IEJhc2VUcmFjayk7CiAgICAgbV90eXBlID0gdHlw
ZTsKQEAgLTQwLDYgKzQxLDI2IEBAIFRyYWNrQmFzZTo6flRyYWNrQmFzZSgpCiB7CiB9CiAKK2Nv
bnN0IEF0b21pY1N0cmluZyYgVHJhY2tCYXNlOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclRleHRUcmFjazsKK30KKworU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogVHJhY2tCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworfQorCitFdmVudFRh
cmdldERhdGEqIFRyYWNrQmFzZTo6ZXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1f
ZXZlbnRUYXJnZXREYXRhOworfQorCitFdmVudFRhcmdldERhdGEqIFRyYWNrQmFzZTo6ZW5zdXJl
RXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VHJhY2tCYXNlLmgKaW5kZXggZDQ0NzBhMjNiM2I2ZTUxOGI5NTZkY2Y0ODM1OTM5ZTY1YjhmN2Iy
MC4uYzAwNjYwZjA1M2FkNjQ5NDE2NThmMjBkNzUwMzBjYWJjOTMyNzk4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCkBAIC0yOCwyMiArMjgsNDAgQEAKIAogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKIAorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUcmFja0Jhc2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxUcmFja0Jhc2U+IHsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CisKK2NsYXNzIFRyYWNrQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNrQmFzZT4s
IHB1YmxpYyBFdmVudFRhcmdldCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VHJhY2tCYXNlKCk7
CiAKICAgICBlbnVtIFR5cGUgeyBCYXNlVHJhY2ssIFRleHRUcmFjaywgQXVkaW9UcmFjaywgVmlk
ZW9UcmFjayB9OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCisg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdDsKKyAgICAKKyAgICB1c2luZyBSZWZDb3VudGVkPFRyYWNrQmFzZT46OnJlZjsKKyAg
ICB1c2luZyBSZWZDb3VudGVkPFRyYWNrQmFzZT46OmRlcmVmOworCiBwcm90ZWN0ZWQ6Ci0gICAg
VHJhY2tCYXNlKFR5cGUpOworICAgIFRyYWNrQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
VHlwZSk7CisgICAgCisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0
YSgpOworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEo
KTsKIAogcHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQg
cmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRU
YXJnZXQoKSB7IGRlcmVmKCk7IH0KKyAgICAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJn
ZXREYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMyMzI1YjVmZDI3
N2E4MWI1NTA1ZmQyMDJlM2YyNGVjMDFlZDllZGEuLjQ0NjMyNTlkYzk3ZWJkMjUxNjgwMzlmMzcy
Nzg0ZTY3NmQxNmU3YTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0xMS0xMSAgQW5uYSBD
YXZlbmRlciAgPGFubmFjY0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3RvcmFnZSBhbmQgcmV0
cmlldmFsIG9mIFRleHRUcmFja0N1ZXMgZHVyaW5nIHZpZGVvIHBsYXliYWNrLCBpbmNsdWRpbmcK
KyAgICAgICAgY3VlY2hhbmdlLCBlbnRlciwgYW5kIGV4aXQgZXZlbnRzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0NTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL3RyYWNrL2NhcHRpb25z
LXdlYnZ0dC9jdWVzLWNocm9uby1vcmRlci52dHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3Ry
YWNrL2NhcHRpb25zLXdlYnZ0dC9jdWVzLW92ZXJsYXBwaW5nLnZ0dDogQWRkZWQuCisgICAgICAg
ICogbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1jdWVjaGFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1jdWVzLWN1ZWNoYW5nZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1jdWVzLWVudGVyLWV4aXQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1jdWVzLWVudGVyLWV4aXQuaHRt
bDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1zZWVraW5nLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1zZWVraW5n
Lmh0bWw6IEFkZGVkLgorCiAyMDExLTExLTExICBTdGVwaGVuIENoZW5uZXkgIDxzY2hlbm5leUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBEUlQgZG9lcyBub3QgaGF2ZSBMYXlv
dXRUZXN0Q29udHJvbGxlci5wYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L2N1ZXMtY2hyb25vLW9yZGVy
LnZ0dCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9jdWVzLWNocm9u
by1vcmRlci52dHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ2ZDQ4NGY4ODhjZjU4NjA4NzY3ODgxMTcxNDU4ZGY3
MWZmZmEwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRp
b25zLXdlYnZ0dC9jdWVzLWNocm9uby1vcmRlci52dHQKQEAgLTAsMCArMSwxNCBAQAorV0VCVlRU
CitDdWVzIHRoYXQgaGF2ZSBvdmVybGFwcGluZyB0aW1lIHJhbmdlcy4KKworMQorMDA6MDA6MDEu
MDAwIC0tPiAwMDowMDowMi4wMDAKK0JlYXIgaXMgQ29taW5nISEhISEKKworMgorMDA6MDA6MDIu
NTAwIC0tPiAwMDowMDowMy41MDAKK0kgc2FpZCBCZWFyIGlzIGNvbWluZyEhISEKKworMworMDA6
MDA6MDQuMDAwIC0tPiAwMDowMDowNS4wMDAKK0kgc2FpZCBCZWFyIGlzIGNvbWluZyBub3chISEh
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L2N1ZXMtb3ZlcmxhcHBpbmcudnR0IGIvTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L2N1ZXMtb3ZlcmxhcHBpbmcudnR0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjNmMDM1ZDMzMWYwODJhODZkMmM2M2UxY2RjY2NmYzYzMTE3YjFhNTEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvY3Vlcy1v
dmVybGFwcGluZy52dHQKQEAgLTAsMCArMSwxNCBAQAorV0VCVlRUCitDdWVzIHRoYXQgaGF2ZSBv
dmVybGFwcGluZyB0aW1lIHJhbmdlcy4KKworMQorMDA6MDA6MDEuMDAwIC0tPiAwMDowMDowNi4w
MDAKK0JlYXIgaXMgQ29taW5nISEhISEKKworMgorMDA6MDA6MDEuNTAwIC0tPiAwMDowMDowNS4w
MDAKK0kgc2FpZCBCZWFyIGlzIGNvbWluZyEhISEKKworMworMDA6MDA6MDIuMDAwIC0tPiAwMDow
MDowNS4wMDAKK0kgc2FpZCBCZWFyIGlzIGNvbWluZyBub3chISEhClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vl
cy1jdWVjaGFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2st
Y3Vlcy1jdWVjaGFuZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1NzY5NzdmYmUwNDQ3MThm
NjIxOTYwOWYyZmYxNGI2OTViZGE0MDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay90cmFjay1jdWVzLWN1ZWNoYW5nZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3
NiBAQAorVGVzdHMgdGhhdCBUZXh0VHJhY2sncyBjdWVzIGFyZSBpbmRleGVkIGFuZCB1cGRhdGVk
IHdpdGhpbiA1MDBtcyBkdXJpbmcgdmlkZW8gcGxheWJhY2suIFRlc3QgdXNlcyB0aGUgY3VlY2hh
bmdlIGV2ZW50LgorCitUaGlzIHRlc3QgbWF5IGZhaWwgb2NjYXNpb25hbGx5IHNpbmNlIHdlIGNh
bm5vdCBndWFyYW50ZWUgdGhhdCBjdWUgZXZlbnRzIHdpbGwgZmlyZSB3aXRoaW4gMjUwbXMgb2Yg
dGhlaXIgc3RhcnRUaW1lIG9yIGVuZFRpbWUuCisKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorRVhQ
RUNURUQgKHRlc3RUcmFjay50cmFjay5jdWVzLmxlbmd0aCA9PSAnMycpIE9LCitSVU4odmlkZW8u
cGxheSgpKQorCitFVkVOVChjdWVjaGFuZ2UpIGZyb20gVGV4dFRyYWNrCitFWFBFQ1RFRCAoW29i
amVjdCBUZXh0VHJhY2tDdWVdID09ICdbb2JqZWN0IFRleHRUcmFja0N1ZV0nKSBPSworU3RhcnQg
dGltZToKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA+PSAnMScpIE9LCitFWFBFQ1RFRCAo
dmlkZW8uY3VycmVudFRpbWUgPCAnMS41JykgT0sKKworRVZFTlQoY3VlY2hhbmdlKSBmcm9tIDx0
cmFjaz4KK0VYUEVDVEVEIChbb2JqZWN0IFRleHRUcmFja0N1ZV0gPT0gJ1tvYmplY3QgVGV4dFRy
YWNrQ3VlXScpIE9LCitTdGFydCB0aW1lOgorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID49
ICcxJykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA8ICcxLjUnKSBPSworCitFVkVO
VChjdWVjaGFuZ2UpIGZyb20gVGV4dFRyYWNrCitFbmQgdGltZToKK0VYUEVDVEVEICh2aWRlby5j
dXJyZW50VGltZSA+PSAnMicpIE9LCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPCAnMi41
JykgT0sKKworRVZFTlQoY3VlY2hhbmdlKSBmcm9tIDx0cmFjaz4KK0VuZCB0aW1lOgorRVhQRUNU
RUQgKHZpZGVvLmN1cnJlbnRUaW1lID49ICcyJykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50
VGltZSA8ICcyLjUnKSBPSworCitFVkVOVChjdWVjaGFuZ2UpIGZyb20gVGV4dFRyYWNrCitFWFBF
Q1RFRCAoW29iamVjdCBUZXh0VHJhY2tDdWVdID09ICdbb2JqZWN0IFRleHRUcmFja0N1ZV0nKSBP
SworU3RhcnQgdGltZToKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA+PSAnMi41JykgT0sK
K0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA8ICczJykgT0sKKworRVZFTlQoY3VlY2hhbmdl
KSBmcm9tIDx0cmFjaz4KK0VYUEVDVEVEIChbb2JqZWN0IFRleHRUcmFja0N1ZV0gPT0gJ1tvYmpl
Y3QgVGV4dFRyYWNrQ3VlXScpIE9LCitTdGFydCB0aW1lOgorRVhQRUNURUQgKHZpZGVvLmN1cnJl
bnRUaW1lID49ICcyLjUnKSBPSworRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lIDwgJzMnKSBP
SworCitFVkVOVChjdWVjaGFuZ2UpIGZyb20gVGV4dFRyYWNrCitFbmQgdGltZToKK0VYUEVDVEVE
ICh2aWRlby5jdXJyZW50VGltZSA+PSAnMy41JykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50
VGltZSA8ICc0JykgT0sKKworRVZFTlQoY3VlY2hhbmdlKSBmcm9tIDx0cmFjaz4KK0VuZCB0aW1l
OgorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID49ICczLjUnKSBPSworRVhQRUNURUQgKHZp
ZGVvLmN1cnJlbnRUaW1lIDwgJzQnKSBPSworCitFVkVOVChjdWVjaGFuZ2UpIGZyb20gVGV4dFRy
YWNrCitFWFBFQ1RFRCAoW29iamVjdCBUZXh0VHJhY2tDdWVdID09ICdbb2JqZWN0IFRleHRUcmFj
a0N1ZV0nKSBPSworU3RhcnQgdGltZToKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA+PSAn
NCcpIE9LCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPCAnNC41JykgT0sKKworRVZFTlQo
Y3VlY2hhbmdlKSBmcm9tIDx0cmFjaz4KK0VYUEVDVEVEIChbb2JqZWN0IFRleHRUcmFja0N1ZV0g
PT0gJ1tvYmplY3QgVGV4dFRyYWNrQ3VlXScpIE9LCitTdGFydCB0aW1lOgorRVhQRUNURUQgKHZp
ZGVvLmN1cnJlbnRUaW1lID49ICc0JykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA8
ICc0LjUnKSBPSworCitFVkVOVChjdWVjaGFuZ2UpIGZyb20gVGV4dFRyYWNrCitFbmQgdGltZToK
K0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA+PSAnNScpIE9LCitFWFBFQ1RFRCAodmlkZW8u
Y3VycmVudFRpbWUgPCAnNS41JykgT0sKKworRVZFTlQoY3VlY2hhbmdlKSBmcm9tIDx0cmFjaz4K
K0VuZCB0aW1lOgorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID49ICc1JykgT0sKK0VYUEVD
VEVEICh2aWRlby5jdXJyZW50VGltZSA8ICc1LjUnKSBPSworCitFTkQgT0YgVEVTVAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWVzLWN1ZWNoYW5nZS5odG1s
IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1jdWVjaGFuZ2UuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZWY1NzBmMjQ5NWU0NDJlZWM2NGQxNDc0NWVjNjYwZjZhNjMyNDQyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1jdWVjaGFuZ2Uu
aHRtbApAQCAtMCwwICsxLDczIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCIgLz4KKworICAgICAgICA8c2NyaXB0IHNyYz0uLi9tZWRpYS1m
aWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHA+VGVzdHMgdGhhdCBU
ZXh0VHJhY2sncyBjdWVzIGFyZSBpbmRleGVkIGFuZCB1cGRhdGVkIHdpdGhpbiA1MDBtcyBkdXJp
bmcgdmlkZW8gcGxheWJhY2suIFRlc3QgdXNlcyB0aGUgY3VlY2hhbmdlIGV2ZW50LjwvcD4KKyAg
ICAgICAgPHA+VGhpcyB0ZXN0IG1heSBmYWlsIG9jY2FzaW9uYWxseSBzaW5jZSB3ZSBjYW5ub3Qg
Z3VhcmFudGVlIHRoYXQgY3VlIGV2ZW50cyB3aWxsIGZpcmUgd2l0aGluIDI1MG1zIG9mIHRoZWly
IHN0YXJ0VGltZSBvciBlbmRUaW1lLjwvcD4KKyAgICAgICAgPHZpZGVvIGNvbnRyb2xzPgorICAg
ICAgICAgICAgPHRyYWNrIGlkPSJ0ZXN0VHJhY2siIHNyYz0iY2FwdGlvbnMtd2VidnR0L2N1ZXMt
Y2hyb25vLW9yZGVyLnZ0dCIga2luZD0iY2FwdGlvbnMiPgorICAgICAgICA8L3ZpZGVvPgorICAg
ICAgICA8c2NyaXB0PiAgICAgICAgICAgIAorCisgICAgICAgIHZhciB0aW1lSW50ZXJ2YWwgPSAw
LjU7CisgICAgICAgIHZhciBjdWVDaGFuZ2VDb3VudCA9IDA7CisgICAgICAgIHZhciB0ZXN0VHJh
Y2s7CisKKyAgICAgICAgZnVuY3Rpb24gY3VlQ2hhbmdlZEZyb21UcmFja0VsZW1lbnQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGN1ZWNoYW5nZSkgZnJvbSAm
bHQ7dHJhY2smZ3Q7Iik7CisgICAgICAgICAgICBjaGVja0N1ZSgpOworCisgICAgICAgICAgICAr
K2N1ZUNoYW5nZUNvdW50OworICAgICAgICAgICAgaWYgKGN1ZUNoYW5nZUNvdW50ID09IHRlc3RU
cmFjay50cmFjay5jdWVzLmxlbmd0aCAqIDIpCisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY3VlQ2hhbmdlZEZyb21UZXh0VHJhY2soKQor
ICAgICAgICB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGN1ZWNoYW5nZSkgZnJv
bSBUZXh0VHJhY2siKTsKKyAgICAgICAgICAgIGNoZWNrQ3VlKCk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrQ3VlKCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGN1ZXMgPSB0ZXN0VHJhY2sudHJhY2suY3VlczsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgdmFyIGN1cnJlbnRDdWUgPSBjdWVzW01hdGguZmxvb3IoY3VlQ2hhbmdlQ291bnQvMildOwor
CisgICAgICAgICAgICBpZiAoY3VlQ2hhbmdlQ291bnQgJSAyID09IDApIHsKKyAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoY3VycmVudEN1ZSwgdGVzdFRyYWNrLnRyYWNrLmFjdGl2ZUN1ZXNb
MF0pOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU3RhcnQgdGltZToiKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJlbnRUaW1lIiwgY3VycmVudEN1ZS5z
dGFydFRpbWUsICc+PScpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uY3Vy
cmVudFRpbWUiLCBjdXJyZW50Q3VlLnN0YXJ0VGltZSArIHRpbWVJbnRlcnZhbCwgJzwnKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJFbmQgdGlt
ZToiKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJlbnRUaW1lIiwg
Y3VycmVudEN1ZS5lbmRUaW1lLCAnPj0nKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
InZpZGVvLmN1cnJlbnRUaW1lIiwgY3VycmVudEN1ZS5lbmRUaW1lICsgdGltZUludGVydmFsLCAn
PCcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLAorICAgICAgICAg
ICAgZnVuY3Rpb24gKCkgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGVzdFRyYWNr
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RUcmFjayIpOworICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidGVzdFRyYWNrLnRyYWNrLmN1ZXMubGVuZ3RoIiwgMyk7CisgICAgICAg
ICAgICAgICAgdGVzdFRyYWNrLmFkZEV2ZW50TGlzdGVuZXIoJ2N1ZWNoYW5nZScsIGN1ZUNoYW5n
ZWRGcm9tVHJhY2tFbGVtZW50KTsKKyAgICAgICAgICAgICAgICB0ZXN0VHJhY2sudHJhY2suYWRk
RXZlbnRMaXN0ZW5lcignY3VlY2hhbmdlJywgY3VlQ2hhbmdlZEZyb21UZXh0VHJhY2spOworICAg
ICAgICAgICAgICAgIHJ1bigidmlkZW8ucGxheSgpIik7CisgICAgICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBmaW5kTWVk
aWFFbGVtZW50KCk7CisgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwg
Ii4uL2NvbnRlbnQvdGVzdCIpOworICAgICAgICAKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2st
Y3Vlcy1lbnRlci1leGl0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3Ry
YWNrLWN1ZXMtZW50ZXItZXhpdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDliOWUxMjcwYWZh
YTA2NDQ3OGMwYmU4NTk3NTcxZTczMTM2Zjc0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtZW50ZXItZXhpdC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0NiBAQAorVGVzdHMgdGhhdCBUZXh0VHJhY2sncyBjdWVzIGFyZSBpbmRleGVkIGFuZCB1
cGRhdGVkIHdpdGhpbiA1MDBtcyBkdXJpbmcgdmlkZW8gcGxheWJhY2suIFRlc3QgdXNlcyB0aGUg
ZW50ZXIgYW5kIGV4aXRzIGV2ZW50cyBvbiBUZXh0VHJhY2tDdWUuCisKK1RoaXMgdGVzdCBtYXkg
ZmFpbCBvY2Nhc2lvbmFsbHkgc2luY2Ugd2UgY2Fubm90IGd1YXJhbnRlZSB0aGF0IGN1ZSBldmVu
dHMgd2lsbCBmaXJlIHdpdGhpbiAyNTBtcyBvZiB0aGVpciBzdGFydFRpbWUgb3IgZW5kVGltZS4K
KworRVZFTlQoY2FucGxheXRocm91Z2gpCitFWFBFQ1RFRCAodGVzdFRyYWNrLnRyYWNrLmN1ZXMu
bGVuZ3RoID09ICczJykgT0sKK1JVTih2aWRlby5wbGF5KCkpCisKK0VWRU5UKGVudGVyKQorVGhp
cyBjdWUgaXMgdGhlIGN1cnJlbnRseSBhY3RpdmUgY3VlOgorRVhQRUNURUQgKFtvYmplY3QgVGV4
dFRyYWNrQ3VlXSA9PSAnW29iamVjdCBUZXh0VHJhY2tDdWVdJykgT0sKK1N0YXJ0IHRpbWU6CitF
WFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPj0gJzEnKSBPSworRVhQRUNURUQgKHZpZGVvLmN1
cnJlbnRUaW1lIDwgJzEuNScpIE9LCisKK0VWRU5UKGV4aXQpCitFbmQgdGltZToKK0VYUEVDVEVE
ICh2aWRlby5jdXJyZW50VGltZSA+PSAnMicpIE9LCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRp
bWUgPCAnMi41JykgT0sKKworRVZFTlQoZW50ZXIpCitUaGlzIGN1ZSBpcyB0aGUgY3VycmVudGx5
IGFjdGl2ZSBjdWU6CitFWFBFQ1RFRCAoW29iamVjdCBUZXh0VHJhY2tDdWVdID09ICdbb2JqZWN0
IFRleHRUcmFja0N1ZV0nKSBPSworU3RhcnQgdGltZToKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50
VGltZSA+PSAnMi41JykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA8ICczJykgT0sK
KworRVZFTlQoZXhpdCkKK0VuZCB0aW1lOgorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID49
ICczLjUnKSBPSworRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lIDwgJzQnKSBPSworCitFVkVO
VChlbnRlcikKK1RoaXMgY3VlIGlzIHRoZSBjdXJyZW50bHkgYWN0aXZlIGN1ZToKK0VYUEVDVEVE
IChbb2JqZWN0IFRleHRUcmFja0N1ZV0gPT0gJ1tvYmplY3QgVGV4dFRyYWNrQ3VlXScpIE9LCitT
dGFydCB0aW1lOgorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID49ICc0JykgT0sKK0VYUEVD
VEVEICh2aWRlby5jdXJyZW50VGltZSA8ICc0LjUnKSBPSworCitFVkVOVChleGl0KQorRW5kIHRp
bWU6CitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPj0gJzUnKSBPSworRVhQRUNURUQgKHZp
ZGVvLmN1cnJlbnRUaW1lIDwgJzUuNScpIE9LCisKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtZW50ZXItZXhpdC5odG1sIGIvTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1lbnRlci1leGl0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDhlMDRkNTE3MmI2NWQ5YTZmNmJkNTg5Yjg3Yzk1NWU5NzY5NzU4MQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtZW50ZXItZXhpdC5odG1s
CkBAIC0wLDAgKzEsNzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04IiAvPgorCisgICAgICAgIDxzY3JpcHQgc3JjPS4uL21lZGlhLWZpbGUu
anM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8cD5UZXN0cyB0aGF0IFRleHRU
cmFjaydzIGN1ZXMgYXJlIGluZGV4ZWQgYW5kIHVwZGF0ZWQgd2l0aGluIDUwMG1zIGR1cmluZyB2
aWRlbyBwbGF5YmFjay4gVGVzdCB1c2VzIHRoZSBlbnRlciBhbmQgZXhpdHMgZXZlbnRzIG9uIFRl
eHRUcmFja0N1ZS48L3A+CisgICAgICAgIDxwPlRoaXMgdGVzdCBtYXkgZmFpbCBvY2Nhc2lvbmFs
bHkgc2luY2Ugd2UgY2Fubm90IGd1YXJhbnRlZSB0aGF0IGN1ZSBldmVudHMgd2lsbCBmaXJlIHdp
dGhpbiAyNTBtcyBvZiB0aGVpciBzdGFydFRpbWUgb3IgZW5kVGltZS48L3A+CisgICAgICAgIDx2
aWRlbyBjb250cm9scz4KKyAgICAgICAgICAgIDx0cmFjayBpZD0idGVzdFRyYWNrIiBzcmM9ImNh
cHRpb25zLXdlYnZ0dC9jdWVzLWNocm9uby1vcmRlci52dHQiIGtpbmQ9ImNhcHRpb25zIj4KKyAg
ICAgICAgPC92aWRlbz4KKyAgICAgICAgPHNjcmlwdD4gICAgICAgICAgICAKKyAgICAgICAgICAg
IAorICAgICAgICB2YXIgdGltZUludGVydmFsID0gMC41CisgICAgICAgIHZhciBjdWVDb3VudCA9
IDA7CisgICAgICAgIHZhciB0ZXN0VHJhY2s7CisKKyAgICAgICAgZnVuY3Rpb24gY3VlRW50ZXJl
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoZW50ZXIpIik7
CisKKyAgICAgICAgICAgIHZhciBjdXJyZW50Q3VlID0gdGVzdFRyYWNrLnRyYWNrLmN1ZXNbY3Vl
Q291bnRdOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRoaXMgY3VlIGlzIHRoZSBjdXJy
ZW50bHkgYWN0aXZlIGN1ZToiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZChjdXJyZW50Q3Vl
LCB0ZXN0VHJhY2sudHJhY2suYWN0aXZlQ3Vlc1swXSk7CisgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIlN0YXJ0IHRpbWU6Iik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJl
bnRUaW1lIiwgY3VycmVudEN1ZS5zdGFydFRpbWUsICc+PScpOworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJ2aWRlby5jdXJyZW50VGltZSIsIGN1cnJlbnRDdWUuc3RhcnRUaW1lICsgdGltZUlu
dGVydmFsLCAnPCcpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGN1ZUV4aXRlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiRVZFTlQoZXhpdCkiKTsKKworICAgICAgICAgICAgdmFyIGN1cnJlbnRDdWUg
PSB0ZXN0VHJhY2sudHJhY2suY3Vlc1tjdWVDb3VudF07CisKKyAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiRW5kIHRpbWU6Iik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJl
bnRUaW1lIiwgY3VycmVudEN1ZS5lbmRUaW1lLCAnPj0nKTsKKyAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8uY3VycmVudFRpbWUiLCBjdXJyZW50Q3VlLmVuZFRpbWUgKyB0aW1lSW50ZXJ2
YWwsICc8Jyk7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworCisgICAgICAgICAgICAr
K2N1ZUNvdW50OworICAgICAgICAgICAgaWYgKGN1ZUNvdW50ID09IHRlc3RUcmFjay50cmFjay5j
dWVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywKKyAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRlc3RUcmFjayA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0VHJhY2siKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInRlc3RUcmFjay50cmFjay5jdWVzLmxlbmd0aCIsIDMpOworICAgICAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGVzdFRyYWNrLnRyYWNrLmN1ZXMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdFRyYWNrLnRyYWNrLmN1ZXNbaV0uYWRkRXZlbnRMaXN0ZW5l
cignZW50ZXInLCBjdWVFbnRlcmVkKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFRyYWNrLnRy
YWNrLmN1ZXNbaV0uYWRkRXZlbnRMaXN0ZW5lcignZXhpdCcsIGN1ZUV4aXRlZCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJ1bigidmlkZW8ucGxheSgpIik7CisgICAgICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKwor
ICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRp
YUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvdGVzdCIpOworICAgICAgICAKKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdHJhY2stY3Vlcy1zZWVraW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21l
ZGlhL3RyYWNrL3RyYWNrLWN1ZXMtc2Vla2luZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q0
ZWE4YWNmZWFkNDI5NjMxMDljNTdjMDg3NzkzZWFiMzU5NjYwNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtc2Vla2luZy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzMiBAQAorVGVzdHMgVGV4dFRyYWNrJ3MgYWN0aXZlQ3VlcyBhcmUgaW5kZXhl
ZCBhbmQgdXBkYXRlZCBkdXJpbmcgdmlkZW8gcGxheWJhY2suCisKK0VWRU5UKGNhbnBsYXl0aHJv
dWdoKQorRVhQRUNURUQgKHRlc3RUcmFjay50cmFjay5jdWVzLmxlbmd0aCA9PSAnMycpIE9LCitS
VU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjUpCisKK0VWRU5UKHNlZWtlZCkKKworRVhQRUNURUQg
KHZpZGVvLmN1cnJlbnRUaW1lID09ICcwLjUnKSBPSworRVhQRUNURUQgKGFjdGl2ZUN1ZXMubGVu
Z3RoID09ICcwJykgT0sKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDEpCisKK0VWRU5UKHNlZWtl
ZCkKKworRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID09ICcxJykgT0sKK0VYUEVDVEVEIChh
Y3RpdmVDdWVzLmxlbmd0aCA9PSAnMScpIE9LCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAxLjUp
CisKK0VWRU5UKHNlZWtlZCkKKworRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID09ICcxLjUn
KSBPSworRVhQRUNURUQgKGFjdGl2ZUN1ZXMubGVuZ3RoID09ICcyJykgT0sKK1JVTih2aWRlby5j
dXJyZW50VGltZSA9IDIpCisKK0VWRU5UKHNlZWtlZCkKKworRVhQRUNURUQgKHZpZGVvLmN1cnJl
bnRUaW1lID09ICcyJykgT0sKK0VYUEVDVEVEIChhY3RpdmVDdWVzLmxlbmd0aCA9PSAnMycpIE9L
CitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAyLjUpCisKK0VORCBPRiBURVNUCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtc2Vla2luZy5odG1sIGIvTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1zZWVraW5nLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzRlN2M4ODQzMzNhZWRmMjFiZGE2Njg5MWU2ZDVmODcxNzM4NDE5YgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtc2Vla2luZy5odG1sCkBAIC0w
LDAgKzEsNTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04IiAvPgorCisgICAgICAgIDxzY3JpcHQgc3JjPS4uL21lZGlhLWZpbGUuanM+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8cD5UZXN0cyBUZXh0VHJhY2sncyBhY3Rp
dmVDdWVzIGFyZSBpbmRleGVkIGFuZCB1cGRhdGVkIGR1cmluZyB2aWRlbyBwbGF5YmFjay48L3A+
CisgICAgICAgIDx2aWRlbyBjb250cm9scz4KKyAgICAgICAgICAgIDx0cmFjayBpZD0idGVzdFRy
YWNrIiBzcmM9ImNhcHRpb25zLXdlYnZ0dC9jdWVzLW92ZXJsYXBwaW5nLnZ0dCIga2luZD0ic3Vi
dGl0bGVzIj4KKyAgICAgICAgPC92aWRlbz4KKyAgICAgICAgPHNjcmlwdD4gICAgICAgICAgICAK
KyAgICAgICAgICAgIAorICAgICAgICB2YXIgc2Vla2VkQ291bnQgPSAwOworICAgICAgICB2YXIg
dGVzdFRyYWNrOworCisgICAgICAgIGZ1bmN0aW9uIHNlZWtlZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgICsrc2Vla2VkQ291bnQ7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworCisg
ICAgICAgICAgICBhY3RpdmVDdWVzID0gdGVzdFRyYWNrLnRyYWNrLmFjdGl2ZUN1ZXM7CisKKyAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uY3VycmVudFRpbWUiLCBzZWVrZWRDb3VudCAq
IDAuNSk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImFjdGl2ZUN1ZXMubGVuZ3RoIiwgc2Vl
a2VkQ291bnQgLSAxKTsKKyAgICAgICAgICAgIHJ1bigidmlkZW8uY3VycmVudFRpbWUgPSAiICsg
KHNlZWtlZENvdW50ICsgMSkgKiAwLjUpOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIp
OworCisgICAgICAgICAgICBpZiAoc2Vla2VkQ291bnQgPT0gNCkKKyAgICAgICAgICAgICAgICBl
bmRUZXN0KCk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgd2FpdEZvckV2ZW50KCdzZWVrZWQn
LCBzZWVrZWQgKTsKKworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywKKyAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRl
c3RUcmFjayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0VHJhY2siKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInRlc3RUcmFjay50cmFjay5jdWVzLmxlbmd0aCIsIDMpOwor
ICAgICAgICAgICAgICAgIHJ1bigidmlkZW8uY3VycmVudFRpbWUgPSAwLjUiKTsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgfQorICAgICAgICApOworCisg
ICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlh
RmlsZSgidmlkZW8iLCAiLi4vY29udGVudC90ZXN0Iik7CisgICAgICAgIAorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114801</attachid>
            <date>2011-11-11 16:59:28 -0800</date>
            <delta_ts>2011-11-11 19:37:57 -0800</delta_ts>
            <desc>addressing Eric&apos;s comments</desc>
            <filename>bug-70452-20111111165927.patch</filename>
            <type>text/plain</type>
            <size>45058</size>
            <attacher name="Anna Cavender">annacc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYyZTlhNWRlNjQwODYw
MzdhZGI2NDQ1ZjJiZTAwMmRhNmE0YjkzYi4uZjU4NmQ5OTA2Nzc3NjFmNmMzMGVmMTliZjUxOTQ1
NTVjYTNiYmQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMS0xMS0xMSAgQW5u
YSBDYXZlbmRlciAgPGFubmFjY0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3RvcmFnZSBhbmQg
cmV0cmlldmFsIG9mIFRleHRUcmFja0N1ZXMgZHVyaW5nIHZpZGVvIHBsYXliYWNrLCBpbmNsdWRp
bmcKKyAgICAgICAgY3VlY2hhbmdlLCBlbnRlciwgYW5kIGV4aXQgZXZlbnRzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogbWVkaWEvdHJhY2sv
dHJhY2stY3Vlcy1jdWVjaGFuZ2UuaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvdHJhY2svdHJh
Y2stY3Vlcy1lbnRlci1leGl0Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3RyYWNrL3RyYWNr
LWN1ZXMtc2Vla2luZy5odG1sCisKKyAgICAgICAgQWRkIGN1ZWNoYW5nZSwgZW50ZXIsIGFuZCBl
eGl0IGV2ZW50cyBhbmQgbWFrZSBUZXh0VHJhY2sgYW5kCisgICAgICAgIFRleHRUcmFja0N1ZSBF
dmVudFRhcmdldHM6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBkb20v
RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVkKToKKyAgICAgICAgICAgIFVzZSBzY2hlZHVs
ZUxvYWQoKSBpbnN0ZWFkIG9mIGNvbmZpZ3VyZVRleHRUcmFja3MoKSB0byBzdGFydCBhbiBhc3lu
YyBsb2FkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZl
VGV4dFRyYWNrQ3Vlcyk6CisgICAgICAgICAgICBVcGRhdGVzIHRoZSBsaXN0IG9mIGN1cnJlbnRs
eSBhY3RpdmUgY3VlcyBkdXJpbmcgcGxheWJhY2suCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKToKKyAgICAgICAgICAgIEFkZHMgY3VlcyB0byBj
dWVUcmVlLiAgQ2FsbGVkIHdoZW4gY3VlcyBhcmUgZGlzY292ZXJlZC9sb2FkZWQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKToKKyAgICAg
ICAgICAgIFJlbW92ZXMgY3VlcyBmcm9tIGN1ZVRyZWUuICBDYWxsZWQgd2hlbiBjdWVzIGFuZC9v
ciB0cmFja3MgZGllLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrQWRkQ3VlKToKKyAgICAgICAgICAgIEFkZHMgYSBjdWUgdG8gY3VlVHJlZS4gIENhbGxlZCB3
aGVuIGN1ZXMgYXJlIGRpc2NvdmVyZWQvbG9hZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlKToKKyAgICAgICAgICAgIFJlbW92ZXMgYSBj
dWUgZnJvbSBjdWVUcmVlLiAgQ2FsbGVkIHdoZW4gY3VlcyBhbmQvb3IgdHJhY2tzIGRpZS4KKwor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tQcm9ncmVzc1RpbWVy
RmlyZWQpOgorICAgICAgICAgICAgVXBkYXRlIHRoZSBhY3RpdmUgVGV4dFRyYWNrQ3VlcyB3aGVu
IHBsYXliYWNrUHJvZ3Jlc3NUaW1lckZpcmVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6YWRkVHJhY2spOgorICAgICAgICAgICAgUGFzcyBhbG9uZyBhIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgdG8gVGV4dFRyYWNrOjpjcmVhdGUoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQpOgorICAgICAgICAgICAgVXBk
YXRlIHRoZSBhY3RpdmUgVGV4dFRyYWNrQ3VlcyB3aGVuIHRoZSBtZWRpYSBwbGF5ZXIgdGltZSBj
aGFuZ2VzLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAgICAg
VXNlIGEgUG9kSW50ZXJ2YWxUcmVlIGN1ZVRyZWUgdG8gc3RvcmUgYW5kIHJldHJpZXZlIFRleHRU
cmFja0N1ZXMKKyAgICAgICAgICAgIGR1cmluZyBwbGF5YmFjay4KKworICAgICAgICAqIGh0bWwv
SFRNTFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50
OjplbnN1cmVUcmFjayk6CisgICAgICAgICAgICBQYXNzIGFsb25nIGEgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCBuZWVkZWQgZm9yIEV2ZW50VGFyZ2V0IGludGVyZmFjZS4KKyAgICAgICAgKiBodG1s
L0xvYWRhYmxlVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRy
YWNrOjpMb2FkYWJsZVRleHRUcmFjayk6CisgICAgICAgICAgICBQYXNzIGFsb25nIGEgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCBuZWVkZWQgZm9yIEV2ZW50VGFyZ2V0IGludGVyZmFjZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjpmaXJlQ3VlQ2hhbmdlRXZlbnQpOgorICAg
ICAgICAgICAgRmlyZSBhIGN1ZSBjaGFuZ2UgZXZlbnQgb24gdGhpcyBUZXh0VHJhY2sncyA8dHJh
Y2s+CisgICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29y
ZTo6TG9hZGFibGVUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAgICAgICBQYXNzIGFsb25nIGEg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBuZWVkZWQgZm9yIEV2ZW50VGFyZ2V0IGludGVyZmFjZS4K
KyAgICAgICAgKiBodG1sL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJh
Y2s6OlRleHRUcmFjayk6CisgICAgICAgICAgICBQYXNzIGFsb25nIGEgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCBuZWVkZWQgZm9yIEV2ZW50VGFyZ2V0IGludGVyZmFjZS4KKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFjazo6Y3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmFjdGl2
ZUN1ZXMpOgorICAgICAgICAgICAgUmV0dXJuIGEgVGV4dFRyYWNrQ3VlTGlzdCB0aGF0IHJlcHJl
c2VudHMgdGhlIGN1cnJlbnRseSBhY3RpdmUgY3Vlcy4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFjazo6ZmlyZUN1ZUNoYW5nZUV2ZW50KToKKyAgICAgICAgICAgIEZpcmVzIGEgY3VlIGNoYW5n
ZSBldmVudC4KKyAgICAgICAgKiBodG1sL1RleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAgICAgUGFzcyBhbG9uZyBhIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgbmVlZGVkIGZvciBFdmVudFRhcmdldCBpbnRlcmZhY2UuCisgICAgICAgICog
aHRtbC9UZXh0VHJhY2suaWRsOgorICAgICAgICAgICAgTWFrZXMgVGV4dFRyYWNrIGV4dGVuZCBF
dmVudFRhcmdldCBpbnRlcmZhY2UgYW5kIGFkZCBvbmN1ZWNoYW5nZS4KKyAgICAgICAgKiBodG1s
L1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OlRleHRU
cmFja0N1ZSk6CisgICAgICAgICAgICBUZXh0VHJhY2tDdWUgc2hvdWxkIGV4dGVuZCBFdmVudFRh
cmdldCwgbm90IEFjdGl2ZURPTU9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1
ZTo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpzZXRJc0FjdGl2
ZSk6CisgICAgICAgICAgICBEaXNwYXRjaCBhbiBlbnRlciBvciBleGl0IGV2ZW50IGRlcGVuZGlu
ZyBvbiBhY3RpdmUgc3RhdGUgYW5kIG5vdGlmeQorICAgICAgICAgICAgdGhlIGNvcnJlc3BvbmRp
bmcgdHJhY2sgdG8gZmlyZSBhIGN1ZWNoYW5nZSBldmVudC4KKworICAgICAgICBUaGUgZm9sbG93
aW5nIGFyZSBuZWVkZWQgZm9yIEV2ZW50VGFyZ2V0IGludGVyZmFjZToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja0N1ZTo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tDdWU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ3VlOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
Q3VlOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNrQ3Vl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OnJlZkV2ZW50VGFyZ2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6ZGVyZWZFdmVudFRhcmdldCk6CisKKyAgICAg
ICAgKiBodG1sL1RleHRUcmFja0N1ZS5pZGw6CisgICAgICAgICAgICBFeHRlbmQgRXZlbnRUYXJn
ZXQgYW5kIGFkZCBvbmVudGVyIGFuZCBvbmV4aXQuCisgICAgICAgICogaHRtbC9UZXh0VHJhY2tD
dWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUxpc3Q6OmFjdGl2ZUN1
ZXMpOgorICAgICAgICAgICAgVXBkYXRlIGFuZCByZXR1cm4gdGhlIGxpc3Qgb2YgY3VycmVudGx5
IGFjdGl2ZSBjdWVzLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6Y2xlYXIp
OgorICAgICAgICAgICAgQ2xlYXIgdGhlIGN1ZXMgZnJvbSBsaXN0IChuZWVkZWQgdG8gcmV0dXJu
IHNhbWUgb2JqZWN0IGVhY2ggdGltZSkuCisgICAgICAgICogaHRtbC9UZXh0VHJhY2tDdWVMaXN0
Lmg6CisKKyAgICAgICAgVGhlIGZvbGxvd2luZyBhcmUgbmVlZGVkIGZvciBFdmVudFRhcmdldCBp
bnRlcmZhY2U6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHJhY2tCYXNlOjpUcmFja0Jhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tC
YXNlOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrQmFzZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OmV2ZW50VGFy
Z2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0Jhc2U6OmVuc3VyZUV2ZW50VGFyZ2V0
RGF0YSk6CisgICAgICAgICogaHRtbC90cmFjay9UcmFja0Jhc2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlRyYWNrQmFzZTo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tC
YXNlOjpkZXJlZkV2ZW50VGFyZ2V0KToKKwogMjAxMS0xMS0xMSAgQWRhbSBLbGVpbiAgPGFkYW1r
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgbm8tb3AgU3RvcmFnZU5hbWVzcGFjZTo6
dW5sb2NrIG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggNmMyZjQzNTQ5M2ExZTZm
NDY4NTE5ZWViYjVmYzMxNGU1NmQ3OWYyNC4uYzUzNmNmYzAwNDgwY2M3NGQ0ZWExMmVkZjFiZDZl
N2Y0NzU3ZTlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0xNDYsNiArMTQ2LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHdhaXRpbmcpIFwKICAgICBcCiAgICAgbWFj
cm8oYWRkdHJhY2spIFwKKyAgICBtYWNybyhjdWVjaGFuZ2UpIFwKKyAgICBtYWNybyhlbnRlcikg
XAorICAgIG1hY3JvKGV4aXQpIFwKICAgICBcCiAgICAgbWFjcm8od2Via2l0YmVnaW5mdWxsc2Ny
ZWVuKSBcCiAgICAgbWFjcm8od2Via2l0ZW5kZnVsbHNjcmVlbikgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuaAppbmRleCBjNmYxZjNkNDQzYjg1YjZmNjQyMGNlZWM5NGJlZmIyMjc4NjJkNDQ2Li5l
NjIxYjVkMWE4YWFiZjRmYjIwMTQwOTVhZmYwZWRiYWZiOTI3OGYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuaApAQCAtNjQsNiArNjQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXI7CiAgICAg
Y2xhc3MgU2hhcmVkV29ya2VyQ29udGV4dDsKKyAgICBjbGFzcyBUZXh0VHJhY2s7CisgICAgY2xh
c3MgVGV4dFRyYWNrQ3VlOwogICAgIGNsYXNzIFdlYlNvY2tldDsKICAgICBjbGFzcyBXb3JrZXI7
CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbgppbmRleCA3YWNmMTIxODYyYzNjODNlODM0OTc3Mjg2OTVlYmQ0YjExNmQzMzM4
Li4wY2UyNGY1NDNiMDcxYWFjYTU2MzNlNGEyZWU4NzA2YWJiM2M1ZDhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTIxLDYgKzIxLDggQEAgUGVlckNvbm5l
Y3Rpb24gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBTaGFyZWRXb3JrZXIgY29uZGl0aW9uYWw9
U0hBUkVEX1dPUktFUlMKIFNoYXJlZFdvcmtlckNvbnRleHQgY29uZGl0aW9uYWw9U0hBUkVEX1dP
UktFUlMKIFNWR0VsZW1lbnRJbnN0YW5jZSBjb25kaXRpb25hbD1TVkcKK1RleHRUcmFjayBjb25k
aXRpb25hbD1WSURFT19UUkFDSworVGV4dFRyYWNrQ3VlIGNvbmRpdGlvbmFsPVZJREVPX1RSQUNL
CiBUZXh0VHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPX1RSQUNLCiBXZWJTb2NrZXQgY29uZGl0
aW9uYWw9V0VCX1NPQ0tFVFMKIFdvcmtlciBjb25kaXRpb25hbD1XT1JLRVJTCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBkZjIyYmIxYWU0ZDYxMWNjYWJjMjYx
ODhhMTk4NWNhM2U5ODY2NzI5Li40NjRhZjkwN2NkZmYxNjFmODQyNTFmOTQ1NjQxNDdkZWE5YTZk
NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTg5LDYg
Kzg5LDcgQEAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAjaW5jbHVkZSAiSFRNTFRyYWNrRWxl
bWVudC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJU
ZXh0VHJhY2tDdWVMaXN0LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgogI2VuZGlmCiAK
QEAgLTUwMiw3ICs1MDMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVk
KFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+KikKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAg
ICBpZiAobV9wZW5kaW5nTG9hZEZsYWdzICYgVGV4dFRyYWNrUmVzb3VyY2UpCi0gICAgICAgIGNv
bmZpZ3VyZVRleHRUcmFja3MoKTsKKyAgICAgICAgc2NoZWR1bGVMb2FkKFRleHRUcmFja1Jlc291
cmNlKTsKICNlbmRpZgogCiAgICAgbV9wZW5kaW5nTG9hZEZsYWdzID0gMDsKQEAgLTg2Miw2ICs4
NjMsMjcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoY29uc3QgS1VSTCYg
aW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnQKIH0KIAogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhm
bG9hdCBtb3ZpZVRpbWUpCit7CisgICAgVmVjdG9yPEN1ZUludGVydmFsVHJlZTo6SW50ZXJ2YWxU
eXBlPiBwcmV2aW91c2x5VmlzaWJsZUN1ZXMgPSBtX2N1cnJlbnRseVZpc2libGVDdWVzOworCisg
ICAgbV9jdXJyZW50bHlWaXNpYmxlQ3VlcyA9IG1fY3VlVHJlZS5hbGxPdmVybGFwcyhtX2N1ZVRy
ZWUuY3JlYXRlSW50ZXJ2YWwobW92aWVUaW1lLCBtb3ZpZVRpbWUpKTsKKyAgICAKKyAgICAvLyBG
SVhNRSg3MjE3MSk6IEV2ZW50cyBuZWVkIHRvIGJlIHNvcnRlZCBhbmQgZmlsdGVyZWQgYmVmb3Jl
IGRpc3BhdGNoaW5nLgorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmV2aW91c2x5Vmlz
aWJsZUN1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFtX2N1cnJlbnRseVZpc2libGVD
dWVzLmNvbnRhaW5zKHByZXZpb3VzbHlWaXNpYmxlQ3Vlc1tpXSkpCisgICAgICAgICAgICBwcmV2
aW91c2x5VmlzaWJsZUN1ZXNbaV0uZGF0YSgpLT5zZXRJc0FjdGl2ZShmYWxzZSk7CisgICAgfQor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jdXJyZW50bHlWaXNpYmxlQ3Vlcy5zaXplKCk7
ICsraSkgeworICAgICAgICBpZiAoIXByZXZpb3VzbHlWaXNpYmxlQ3Vlcy5jb250YWlucyhtX2N1
cnJlbnRseVZpc2libGVDdWVzW2ldKSkKKyAgICAgICAgICAgIG1fY3VycmVudGx5VmlzaWJsZUN1
ZXNbaV0uZGF0YSgpLT5zZXRJc0FjdGl2ZSh0cnVlKTsKKyAgICB9CisgICAgCisgICAgLy8gRklY
TUUoNzIxNzMpOiBQYXVzZSB0aGUgbWVkaWEgZWxlbWVudCBmb3IgY3VlcyBnb2luZyBwYXN0IHRo
ZWlyIGVuZFRpbWUKKyAgICAvLyBkdXJpbmcgYSBtb25vdG9uaWMgdGltZSBpbmNyZWFzZS4KK30K
Kwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0
VHJhY2sqKQogewogICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgpAQCAtODcyLDI0ICs4
OTQsMjYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0
VHJhY2sqKQogICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgogfQogCi12b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNr
Q3VlTGlzdCopIAordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKFRleHRU
cmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqIGN1ZXMpIAogewotICAgIC8vIEZJWE1FKDYy
ODg1KTogSW1wbGVtZW50LgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY3Vlcy0+bGVuZ3Ro
KCk7ICsraSkKKyAgICAgICAgdGV4dFRyYWNrQWRkQ3VlKGN1ZXMtPml0ZW0oaSktPnRyYWNrKCks
IGN1ZXMtPml0ZW0oaSkpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja1Jl
bW92ZUN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopIAordm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRU
cmFja0N1ZUxpc3QqIGN1ZXMpIAogewotICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50Lgor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY3Vlcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAg
dGV4dFRyYWNrUmVtb3ZlQ3VlKGN1ZXMtPml0ZW0oaSktPnRyYWNrKCksIGN1ZXMtPml0ZW0oaSkp
OwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sq
LCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRU
cmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gY3VlKQogewot
ICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgorICAgIG1fY3VlVHJlZS5hZGQobV9jdWVU
cmVlLmNyZWF0ZUludGVydmFsKGN1ZS0+c3RhcnRUaW1lKCksIGN1ZS0+ZW5kVGltZSgpLCBjdWUu
Z2V0KCkpKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUo
VGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KQordm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tD
dWU+IGN1ZSkKIHsKLSAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KKyAgICBtX2N1ZVRy
ZWUucmVtb3ZlKG1fY3VlVHJlZS5jcmVhdGVJbnRlcnZhbChjdWUtPnN0YXJ0VGltZSgpLCBjdWUt
PmVuZFRpbWUoKSwgY3VlLmdldCgpKSk7CiB9CiAKICNlbmRpZgpAQCAtMTk0MCw2ICsxOTY0LDEw
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tQcm9ncmVzc1RpbWVyRmlyZWQoVGlt
ZXI8SFRNTE1lZGlhRWxlbWVudD4qKQogICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAg
ICAgIG1lZGlhQ29udHJvbHMoKS0+cGxheWJhY2tQcm9ncmVzc2VkKCk7CiAgICAgLy8gRklYTUU6
IGRlYWwgd2l0aCBjdWUgcmFuZ2VzIGhlcmUKKyAgICAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CisgICAgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhjdXJyZW50VGltZSgpKTsKKyNlbmRpZgog
fQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlVGltZXVwZGF0ZUV2ZW50KGJvb2wg
cGVyaW9kaWNFdmVudCkKQEAgLTE5OTMsNyArMjAyMSw3IEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNr
PiBIVE1MTWVkaWFFbGVtZW50OjphZGRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0
cmluCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gRklYTUUoNzE5MTUpOiBhZGRUcmFjayBz
aG91bGQgdGhyb3cgYSBTeW50YXhFcnJvciBleGNlcHRpb24gaWYgJ2tpbmQnIGlzIGFuIHVua25v
d24gdmFsdWUuCi0gICAgUmVmUHRyPFRleHRUcmFjaz4gdGV4dFRyYWNrID0gVGV4dFRyYWNrOjpj
cmVhdGUodGhpcywga2luZCwgbGFiZWwsIGxhbmd1YWdlKTsKKyAgICBSZWZQdHI8VGV4dFRyYWNr
PiB0ZXh0VHJhY2sgPSBUZXh0VHJhY2s6OmNyZWF0ZShBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgdGhpcywga2luZCwgbGFiZWwsIGxhbmd1YWdlKTsKICAgICBhZGRU
ZXh0VHJhY2sodGV4dFRyYWNrKTsKICAgICByZXR1cm4gdGV4dFRyYWNrLnJlbGVhc2UoKTsKIH0K
QEAgLTIzMjUsNiArMjM1Myw5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJU
aW1lQ2hhbmdlZChNZWRpYVBsYXllciopCiAgICAgICAgIG1fc2VudEVuZEV2ZW50ID0gZmFsc2U7
CiAKICAgICB1cGRhdGVQbGF5U3RhdGUoKTsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAg
dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhub3cpOworI2VuZGlmCiAgICAgZW5kUHJvY2Vzc2lu
Z01lZGlhUGxheWVyQ2FsbGJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAppbmRleCBmNGFiYjZjMTljYWFjNWZlZGVlYzE5OWQ1NjBkYTJkZDM0MWFhOTk0Li5m
YjM2ODZiNzBhMjVlMTNmMDEwMGQ4YWM3NGY3YTVhNGI3ZWZiNWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzgsNyArMzgsOSBAQAogI2VuZGlmCiAKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiUE9ESW50ZXJ2YWxUcmVlLmgiCiAjaW5jbHVk
ZSAiVGV4dFRyYWNrLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMzczLDYgKzM3NSw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCiAgICAgdm9pZCBjb25maWd1cmVUZXh0VHJhY2tzKCk7CisgICAgdm9p
ZCB1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGZsb2F0KTsKICNlbmRpZgogCiAgICAgLy8gVGhl
c2UgImludGVybmFsIiBmdW5jdGlvbnMgZG8gbm90IGNoZWNrIHVzZXIgZ2VzdHVyZSByZXN0cmlj
dGlvbnMuCkBAIC01MjUsOSArNTI4LDM0IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCiAgICAgUmVmUHRyPFRleHRUcmFja0xpc3Q+IG1fdGV4dFRyYWNrczsKKyAgICAKKyAg
ICB0eXBlZGVmIFBPREludGVydmFsVHJlZSA8ZG91YmxlLCBUZXh0VHJhY2tDdWUqPiBDdWVJbnRl
cnZhbFRyZWU7CisgICAgQ3VlSW50ZXJ2YWxUcmVlIG1fY3VlVHJlZTsKKyAgICBWZWN0b3I8Q3Vl
SW50ZXJ2YWxUcmVlOjpJbnRlcnZhbFR5cGU+IG1fY3VycmVudGx5VmlzaWJsZUN1ZXM7CiAjZW5k
aWYKIH07CiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaWZuZGVmIE5ERUJVRworLy8gVGVt
cGxhdGUgc3BlY2lhbGl6YXRpb25zIHJlcXVpcmVkIGJ5IFBvZEludGVydmFsVHJlZSBpbiBkZWJ1
ZyBtb2RlLgordGVtcGxhdGUgPD4KK3N0cnVjdCBWYWx1ZVRvU3RyaW5nPGRvdWJsZT4geworICAg
IHN0YXRpYyBTdHJpbmcgc3RyaW5nKGNvbnN0IGRvdWJsZSB2YWx1ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBTdHJpbmc6Om51bWJlcih2YWx1ZSk7CisgICAgfQorfTsKKwordGVtcGxhdGUgPD4K
K3N0cnVjdCBWYWx1ZVRvU3RyaW5nPFRleHRUcmFja0N1ZSo+IHsKKyAgICBzdGF0aWMgU3RyaW5n
IHN0cmluZyhUZXh0VHJhY2tDdWUqIGNvbnN0JiBjdWUpCisgICAgeworICAgICAgICByZXR1cm4g
U3RyaW5nOjpmb3JtYXQoIiVwIGlkPSVzIGludGVydmFsPSVmLS0+JWYgY3VlPSVzKSIsIGN1ZSwg
Y3VlLT5pZCgpLnV0ZjgoKS5kYXRhKCksIGN1ZS0+c3RhcnRUaW1lKCksIGN1ZS0+ZW5kVGltZSgp
LCBjdWUtPmdldEN1ZUFzU291cmNlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgfQorfTsKKyNlbmRp
ZgorI2VuZGlmCisKIH0gLy9uYW1lc3BhY2UKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TG9hZGFibGVUZXh0VHJhY2suY3BwCmluZGV4IDcxY2ViYThiN2U5YzA5MDYwY2FlYjVkYWU0MWFl
MzZkNTU4ODBmODguLjQxNWU4MzQxYjA0ZjhjZWQ0OWQxOGU1MDJlN2JmMzQxZjYzN2Q4ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwCkBAIC0yOSwxNCArMjks
MTYgQEAKIAogI2luY2x1ZGUgIkxvYWRhYmxlVGV4dFRyYWNrLmgiCiAKKyNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkhUTUxUcmFja0VsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVu
dExpc3RlbmVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1
ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBMb2FkYWJs
ZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2ssIGNv
bnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5n
dWFnZSwgYm9vbCBpc0RlZmF1bHQpCi0gICAgOiBUZXh0VHJhY2sodHJhY2ssIGtpbmQsIGxhYmVs
LCBsYW5ndWFnZSkKKyAgICA6IFRleHRUcmFjayh0cmFjay0+ZG9jdW1lbnQoKSwgdHJhY2ssIGtp
bmQsIGxhYmVsLCBsYW5ndWFnZSkKICAgICAsIG1fdHJhY2tFbGVtZW50KHRyYWNrKQogICAgICwg
bV9sb2FkVGltZXIodGhpcywgJkxvYWRhYmxlVGV4dFRyYWNrOjpsb2FkVGltZXJGaXJlZCkKICAg
ICAsIG1faXNEZWZhdWx0KGlzRGVmYXVsdCkKQEAgLTExMSw2ICsxMTMsMTMgQEAgdm9pZCBMb2Fk
YWJsZVRleHRUcmFjazo6Y3VlTG9hZGluZ0NvbXBsZXRlZChUZXh0VHJhY2tMb2FkZXIqIGxvYWRl
ciwgYm9vbCBsb2FkaW4KICAgICAgICAgbV90cmFja0VsZW1lbnQtPmRpZENvbXBsZXRlTG9hZCh0
aGlzLCBsb2FkaW5nRmFpbGVkKTsKIH0KIAordm9pZCBMb2FkYWJsZVRleHRUcmFjazo6ZmlyZUN1
ZUNoYW5nZUV2ZW50KCkKK3sKKyAgICBUZXh0VHJhY2s6OmZpcmVDdWVDaGFuZ2VFdmVudCgpOwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIG1fdHJhY2tFbGVtZW50LT5kaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmN1ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFs
c2UpLCBlYyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmgKaW5kZXggMmQ4ODE5YjY4ZmYyMDVkOTNiZDNj
OWI3NjdmZjgzNGE0ODI3OWQzOC4uNDJiOWVhYzEyNzVmMjJhY2YzZWYwOTY1NDFmMmNhNDIxNzNj
MTY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaApAQCAtNjgsNiAr
NjgsOCBAQCBwcml2YXRlOgogICAgIExvYWRhYmxlVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQq
LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYg
bGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KTsKIAogICAgIHZvaWQgbG9hZFRpbWVyRmlyZWQoVGlt
ZXI8TG9hZGFibGVUZXh0VHJhY2s+Kik7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGZpcmVDdWVD
aGFuZ2VFdmVudCgpOwogCiAgICAgSFRNTFRyYWNrRWxlbWVudCogbV90cmFja0VsZW1lbnQ7CiAg
ICAgVGltZXI8TG9hZGFibGVUZXh0VHJhY2s+IG1fbG9hZFRpbWVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
VHJhY2suY3BwCmluZGV4IDY0NWU1NDZhMDA4M2VlNzgwOTY4Y2RhOGYxZTVhZWVkMTU1ZTI3NDku
LjI0Zjg3OTVmMDA5ZWRjMDlhZTkxNjJiMDJkNGVlY2ViNWYyYTliMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRUcmFjay5jcHAKQEAgLTM0LDE0ICszNCwxNSBAQAogCiAjaW5jbHVkZSAiVGV4dFRyYWNr
LmgiCiAKKyNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotVGV4dFRyYWNrOjpUZXh0VHJhY2soVGV4dFRyYWNrQ2xpZW50
KiBjbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qg
U3RyaW5nJiBsYW5ndWFnZSkKLSAgICA6IFRyYWNrQmFzZShUcmFja0Jhc2U6OlRleHRUcmFjaykK
K1RleHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRl
eHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYg
bGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCisgICAgOiBUcmFja0Jhc2UoY29udGV4dCwg
VHJhY2tCYXNlOjpUZXh0VHJhY2spCiAgICAgLCBtX2tpbmQoa2luZCkKICAgICAsIG1fbGFiZWwo
bGFiZWwpCiAgICAgLCBtX2xhbmd1YWdlKGxhbmd1YWdlKQpAQCAtMTA5LDE0ICsxMTAsMjEgQEAg
VGV4dFRyYWNrQ3VlTGlzdCogVGV4dFRyYWNrOjpjdWVzKCkgY29uc3QKICAgICAvLyBPdGhlcndp
c2UsIGl0IG11c3QgcmV0dXJuIG51bGwuIFdoZW4gYW4gb2JqZWN0IGlzIHJldHVybmVkLCB0aGUK
ICAgICAvLyBzYW1lIG9iamVjdCBtdXN0IGJlIHJldHVybmVkIGVhY2ggdGltZS4KICAgICAvLyBo
dHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNkb20tdGV4
dHRyYWNrLWN1ZXMKLSAgICBpZiAobV9tb2RlICE9IFRleHRUcmFjazo6RElTQUJMRUQpCisgICAg
aWYgKG1fY3VlcyAmJiBtX21vZGUgIT0gVGV4dFRyYWNrOjpESVNBQkxFRCkKICAgICAgICAgcmV0
dXJuIG1fY3Vlcy5nZXQoKTsKICAgICByZXR1cm4gMDsKIH0KIAogVGV4dFRyYWNrQ3VlTGlzdCog
VGV4dFRyYWNrOjphY3RpdmVDdWVzKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRSg2Mjg4NSk6IElt
cGxlbWVudC4KKyAgICAvLyA0LjguMTAuMTIuNSBJZiB0aGUgdGV4dCB0cmFjayBtb2RlIC4uLiBp
cyBub3QgdGhlIHRleHQgdHJhY2sgZGlzYWJsZWQgbW9kZSwKKyAgICAvLyB0aGVuIHRoZSBhY3Rp
dmVDdWVzIGF0dHJpYnV0ZSBtdXN0IHJldHVybiBhIGxpdmUgVGV4dFRyYWNrQ3VlTGlzdCBvYmpl
Y3QgLi4uCisgICAgLy8gLi4uIHdob3NlIGFjdGl2ZSBmbGFnIHdhcyBzZXQgd2hlbiB0aGUgc2Ny
aXB0IHN0YXJ0ZWQsIGluIHRleHQgdHJhY2sgY3VlCisgICAgLy8gb3JkZXIuIE90aGVyd2lzZSwg
aXQgbXVzdCByZXR1cm4gbnVsbC4gV2hlbiBhbiBvYmplY3QgaXMgcmV0dXJuZWQsIHRoZQorICAg
IC8vIHNhbWUgb2JqZWN0IG11c3QgYmUgcmV0dXJuZWQgZWFjaCB0aW1lLgorICAgIC8vIGh0dHA6
Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI2RvbS10ZXh0dHJh
Y2stYWN0aXZlY3VlcworICAgIGlmIChtX2N1ZXMgJiYgbV9tb2RlICE9IFRleHRUcmFjazo6RElT
QUJMRUQpCisgICAgICAgIHJldHVybiBtX2N1ZXMtPmFjdGl2ZUN1ZXMoKTsKICAgICByZXR1cm4g
MDsKIH0KIApAQCAtMTQxLDYgKzE0OSwxMiBAQCB2b2lkIFRleHRUcmFjazo6ZmV0Y2hOZXdlc3RD
dWVzKFZlY3RvcjxUZXh0VHJhY2tDdWUqPiYpCiAgICAgLy8gRklYTUUoNjI4OTApOiBJbXBsZW1l
bnQuCiB9CiAKK3ZvaWQgVGV4dFRyYWNrOjpmaXJlQ3VlQ2hhbmdlRXZlbnQoKQoreworICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuY3VlY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSksIGVjKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCmluZGV4IDg4
YjdmYWUzZjhmNzdjMjUzN2E3OThlNmMxNjAyZDM4YmVhMjQ4MDUuLmUwNjVlNjZjNDBkOWQzMDNi
Y2NjN2YzZmJhYmQ0M2M2ZWUwNjdiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaApAQCAtNTQs
OSArNTQsOSBAQCBwdWJsaWM6CiAKIGNsYXNzIFRleHRUcmFjayA6IHB1YmxpYyBUcmFja0Jhc2Ug
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFjaz4gY3JlYXRlKFRleHRU
cmFja0NsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRy
YWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29u
c3QgU3RyaW5nJiBsYW5ndWFnZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
VGV4dFRyYWNrKGNsaWVudCwga2luZCwgbGFiZWwsIGxhbmd1YWdlKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVGV4dFRyYWNrKGNvbnRleHQsIGNsaWVudCwga2luZCwgbGFiZWwsIGxh
bmd1YWdlKSk7CiAgICAgfQogICAgIHZpcnR1YWwgflRleHRUcmFjaygpOwogCkBAIC04NSw5ICs4
NSwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBuZXdDdWVzTG9hZGVkKCk7CiAgICAgdm9p
ZCBmZXRjaE5ld2VzdEN1ZXMoVmVjdG9yPFRleHRUcmFja0N1ZSo+Jik7CisgICAgCisgICAgdmly
dHVhbCB2b2lkIGZpcmVDdWVDaGFuZ2VFdmVudCgpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoY3VlY2hhbmdlKTsKIAogcHJvdGVjdGVkOgotICAgIFRleHRUcmFjayhUZXh0
VHJhY2tDbGllbnQqLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNv
bnN0IFN0cmluZyYgbGFuZ3VhZ2UpOworICAgIFRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKTsKIAogICAgIHZvaWQgc2V0UmVhZHlTdGF0
ZShSZWFkeVN0YXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJh
Y2suaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaWRsCmluZGV4IGFlNDI3MTJj
OWM1YTRjMDQ3MzQ2MjIxMjhhZDg4MDI2OWM5Y2IwYTYuLmFhYzQyZDA3MzRlOTQyOWM0MDg1NDRi
ZjMyMDQxODRkNjI4YTZjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRy
YWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5pZGwKQEAgLTI4LDYg
KzI4LDcgQEAgbW9kdWxlIGh0bWwgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlv
bmFsPVZJREVPX1RSQUNLLAogICAgICAgICBFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJh
Y2ssCisgICAgICAgIEV2ZW50VGFyZ2V0CiAgICAgXSBUZXh0VHJhY2sgewogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtpbmQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgbGFiZWw7CkBAIC00OCwxMCArNDksMjEgQEAgbW9kdWxlIGh0bWwgewogCiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tDdWVMaXN0IGN1ZXM7CiAgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tDdWVMaXN0IGFjdGl2ZUN1ZXM7CisgICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY3VlY2hhbmdlOwogCiAgICAgICAg
IHZvaWQgYWRkQ3VlKGluIFRleHRUcmFja0N1ZSBjdWUpCiAgICAgICAgICAgICByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgcmVtb3ZlQ3VlKGluIFRleHRUcmFja0N1ZSBjdWUp
CiAgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgLy8gRXZlbnRU
YXJnZXQgaW50ZXJmYWNlCisgICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJp
bmcgdHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVy
IGxpc3RlbmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0g
Ym9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGlu
IERPTVN0cmluZyB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2
ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3Bh
dGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9u
KTsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tD
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IGQwYmJl
NTg3MmYyZjllM2I4Y2JiZGQ1YTgyOGU2N2QzNTIwNjk5MTkuLmMwZmIwNzU4YTMyM2YyMGYxN2Zi
YmY0YTlhOTc2OTczNjczZjQ4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4
dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgogCisjaW5jbHVk
ZSAiRXZlbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiVGV4
dFRyYWNrLmgiCiAjaW5jbHVkZSAiV2ViVlRUUGFyc2VyLmgiCkBAIC00Miw4ICs0Myw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgaWQsIGRvdWJsZSBzdGFydCwg
ZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHNldHRpbmdz
LCBib29sIHBhdXNlT25FeGl0KQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMp
Ci0gICAgLCBtX2lkKGlkKQorICAgIDogbV9pZChpZCkKICAgICAsIG1fc3RhcnRUaW1lKHN0YXJ0
KQogICAgICwgbV9lbmRUaW1lKGVuZCkKICAgICAsIG1fY29udGVudChjb250ZW50KQpAQCAtNTUs
NiArNTUsNyBAQCBUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGlkLCBkbwogICAgICwgbV9jdWVTaXplKDEwMCkK
ICAgICAsIG1fY3VlQWxpZ25tZW50KE1pZGRsZSkKICAgICAsIG1faXNBY3RpdmUoZmFsc2UpCisg
ICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKIHsKICAgICBwYXJzZVNldHRp
bmdzKHNldHRpbmdzKTsKIH0KQEAgLTEzOCwxOCArMTM5LDIxIEBAIHZvaWQgVGV4dFRyYWNrQ3Vl
OjpzZXRDdWVIVE1MKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQpCiAKIGJv
b2wgVGV4dFRyYWNrQ3VlOjppc0FjdGl2ZSgpCiB7Ci0gICAgLy8gRklYTUUoNjI4ODUpOiBJbXBs
ZW1lbnQuCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2lzQWN0aXZlOwogfQogCiB2
b2lkIFRleHRUcmFja0N1ZTo6c2V0SXNBY3RpdmUoYm9vbCBhY3RpdmUpCiB7CiAgICAgbV9pc0Fj
dGl2ZSA9IGFjdGl2ZTsKLX0KIAotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogVGV4dFRyYWNrQ3Vl
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gQWN0aXZlRE9N
T2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgaWYgKGFjdGl2ZSkKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5lbnRlckV2ZW50LCBmYWxzZSwgZmFsc2UpLCBlYyk7CisgICAgZWxzZQor
ICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmV4aXRFdmVu
dCwgZmFsc2UsIGZhbHNlKSwgZWMpOworCisgICAgaWYgKG1fdHJhY2spCisgICAgICAgIG1fdHJh
Y2stPmZpcmVDdWVDaGFuZ2VFdmVudCgpOwogfQogCiB2b2lkIFRleHRUcmFja0N1ZTo6cGFyc2VT
ZXR0aW5ncyhjb25zdCBTdHJpbmcmIGlucHV0KQpAQCAtMzA3LDYgKzMxMSwyNiBAQCBPdGhlcndp
c2U6CiAgICAgfQogfQogCitjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja0N1ZTo6aW50ZXJm
YWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JU
ZXh0VHJhY2tDdWU7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFRleHRUcmFja0N1ZTo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKK30KKworRXZlbnRUYXJnZXREYXRhKiBUZXh0VHJhY2tDdWU6OmV2ZW50
VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworRXZl
bnRUYXJnZXREYXRhKiBUZXh0VHJhY2tDdWU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7Cisg
ICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3Vl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5oCmluZGV4IGFjMjMyMTQ0Mjk3
MmM5ZDk4YWRiOGYwM2QwMjhlYzY2OGUyMmYwZGEuLmE2NDdjZTY1ZmMxN2MzYjE4YWM2OGYzY2Jj
Y2JiNTlmN2IwZTNmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNr
Q3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuaApAQCAtMzMsNyAr
MzMsNyBAQAogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogCi0jaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJUZXh0VHJhY2su
aCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVGV4dFRyYWNrOwogCi1jbGFzcyBUZXh0VHJhY2tD
dWUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+LCBwdWJsaWMgQWN0aXZlRE9NT2Jq
ZWN0IHsKK2NsYXNzIFRleHRUcmFja0N1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHRUcmFja0N1
ZT4sIHB1YmxpYyBFdmVudFRhcmdldCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
VGV4dFRyYWNrQ3VlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBpZCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnQsIGNvbnN0IFN0cmluZyYgc2V0dGluZ3MsIGJvb2wgcGF1c2VPbkV4aXQpCiAgICAgewpA
QCAtNzgsMTMgKzc4LDI4IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWN0aXZlKCk7CiAgICAgdm9p
ZCBzZXRJc0FjdGl2ZShib29sKTsKICAgICAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCisgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihlbnRlcik7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihleGl0KTsKKworICAgIHVzaW5nIFJlZkNvdW50ZWQ8VGV4dFRyYWNrQ3VlPjo6cmVm
OworICAgIHVzaW5nIFJlZkNvdW50ZWQ8VGV4dFRyYWNrQ3VlPjo6ZGVyZWY7CisKK3Byb3RlY3Rl
ZDoKKworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAg
ICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisKIHBy
aXZhdGU6CiAgICAgVGV4dFRyYWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIGlkLCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVu
dCwgY29uc3QgU3RyaW5nJiBzZXR0aW5ncywgYm9vbCBwYXVzZU9uRXhpdCk7CiAKICAgICB2b2lk
IHBhcnNlU2V0dGluZ3MoY29uc3QgU3RyaW5nJik7CiAgICAgCisgICAgdmlydHVhbCB2b2lkIHJl
ZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFy
Z2V0KCkgeyBkZXJlZigpOyB9CisgICAgCiAgICAgVGV4dFRyYWNrKiBtX3RyYWNrOwogICAgIAog
ICAgIFN0cmluZyBtX2lkOwpAQCAtMTAxLDYgKzExNiw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IG1fZG9jdW1lbnRGcmFnbWVudDsKIAogICAgIGJvb2wgbV9pc0Fj
dGl2ZTsKKyAgICAKKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CisgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0VHJhY2tDdWUuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuaWRsCmlu
ZGV4IGUyYTE4ODNmMWYzZGU2MzdiNWM5NmY3NGYyNTcxMTViYTE0NzA3NWEuLjExYmQ0NDUzODcz
ZTA4ZTJmZjJmMzEwNTdjODgwMjY5YzkyMWY3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dFRyYWNrQ3VlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFj
a0N1ZS5pZGwKQEAgLTMwLDcgKzMwLDggQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBFbmFibGVk
QXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2ssCiAgICAgICAgIEdlbmVyYXRlTmF0aXZlQ29udmVy
dGVyLAogICAgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgaWQsIGluIGRvdWJsZSBzdGFy
dFRpbWUsIGluIGRvdWJsZSBlbmRUaW1lLCBpbiBET01TdHJpbmcgdGV4dCwgaW4gW09wdGlvbmFs
PUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgc2V0dGluZ3MsIGluIFtPcHRpb25hbD1D
YWxsV2l0aERlZmF1bHRWYWx1ZV0gYm9vbGVhbiBwYXVzZU9uRXhpdCksCi0gICAgICAgIENhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKKyAgICAgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwKKyAgICAgICAgRXZlbnRUYXJnZXQKICAgICBdIFRleHRUcmFja0N1ZSB7CiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2sgdHJhY2s7CiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CkBAIC00OCw2ICs0OSwxOSBAQCBtb2R1bGUgaHRt
bCB7CiAKICAgICAgICAgRE9NU3RyaW5nIGdldEN1ZUFzU291cmNlKCk7CiAgICAgICAgIERvY3Vt
ZW50RnJhZ21lbnQgZ2V0Q3VlQXNIVE1MKCk7CisgICAgICAgIAorICAgICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbmVudGVyOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBv
bmV4aXQ7CisgICAgICAgIAorICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAg
ICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwor
ICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4g
dXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQp
CisgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwogICAgIH07CiAKIH0KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRUcmFja0N1ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0
LmNwcAppbmRleCBhOTg4YzUyNDEwMDU5MmY4Y2Q3ZWJjZGQ5YTg0NjhmNjc0MDE5M2UxLi42YjI1
OTcxZWQ0NDNhMzc2ZjcyNzJmNjhlNDc1ZmUxNTNlODAyYzg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAKQEAgLTU2LDYgKzU2LDIwIEBAIFRleHRUcmFja0N1ZSog
VGV4dFRyYWNrQ3VlTGlzdDo6Z2V0Q3VlQnlJZChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAogICAg
IHJldHVybiAwOwogfQogCitUZXh0VHJhY2tDdWVMaXN0KiBUZXh0VHJhY2tDdWVMaXN0OjphY3Rp
dmVDdWVzKCkKK3sKKyAgICBpZiAoIW1fYWN0aXZlQ3VlcykKKyAgICAgICAgbV9hY3RpdmVDdWVz
ID0gY3JlYXRlKCk7CisKKyAgICBtX2FjdGl2ZUN1ZXMtPmNsZWFyKCk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2xpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPFRleHRU
cmFja0N1ZT4gY3VlID0gbV9saXN0W2ldOworICAgICAgICBpZiAoY3VlLT5pc0FjdGl2ZSgpKQor
ICAgICAgICAgICAgbV9hY3RpdmVDdWVzLT5hZGQoY3VlKTsKKyAgICB9CisgICAgcmV0dXJuIG1f
YWN0aXZlQ3Vlcy5nZXQoKTsKK30KKwogdm9pZCBUZXh0VHJhY2tDdWVMaXN0OjphZGQoY29uc3Qg
VmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4mIG5ld0N1ZXMpCiB7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBuZXdDdWVzLnNpemUoKTsgKytpKQpAQCAtMTAxLDYgKzExNSwxMSBAQCBi
b29sIFRleHRUcmFja0N1ZUxpc3Q6OmNvbnRhaW5zKFRleHRUcmFja0N1ZSogY3VlKSBjb25zdAog
ICAgIHJldHVybiBtX2xpc3QuY29udGFpbnMoY3VlKTsKIH0KIAordm9pZCBUZXh0VHJhY2tDdWVM
aXN0OjpjbGVhcigpCit7CisgICAgbV9saXN0LmNsZWFyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRU
cmFja0N1ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5oCmlu
ZGV4IGFlNDc0ZWU3M2U0MmIyOGJiYWUxYzQxMGY2Y2JiY2U5M2ZmYzVkNTUuLjc3NDg1MGNmZTJl
NmE1YjVkMzIzMzhmYmY0ZGMzYzc0NDU2ZmZlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRy
YWNrQ3VlTGlzdC5oCkBAIC01Nyw4ICs1NywxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFRl
eHRUcmFja0N1ZUxpc3QoKTsKICAgICB2b2lkIGFkZChQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4s
IHNpemVfdCwgc2l6ZV90KTsKKyAgICB2b2lkIGNsZWFyKCk7CiAgICAgCiAgICAgVmVjdG9yPFJl
ZlB0cjxUZXh0VHJhY2tDdWU+ID4gbV9saXN0OworICAgIFJlZlB0cjxUZXh0VHJhY2tDdWVMaXN0
PiBtX2FjdGl2ZUN1ZXM7CisgICAgCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKaW5kZXggNTUzNTg0ODY4ZThkNzIxYjNk
YWFiZjZkODk4M2IwYjYyMTdkMjgwZC4uNmEyYzM1ODIzZTYxOTYyYTM3YzlmOGY0Y2VmZDk4OWRk
YWI1MGRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcApAQCAtMzAs
NyArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVRyYWNrQmFzZTo6VHJhY2tCYXNl
KFR5cGUgdHlwZSkKK1RyYWNrQmFzZTo6VHJhY2tCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFR5cGUgdHlwZSkKKyAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250
ZXh0KQogewogICAgIEFTU0VSVCh0eXBlICE9IEJhc2VUcmFjayk7CiAgICAgbV90eXBlID0gdHlw
ZTsKQEAgLTQwLDYgKzQxLDI2IEBAIFRyYWNrQmFzZTo6flRyYWNrQmFzZSgpCiB7CiB9CiAKK2Nv
bnN0IEF0b21pY1N0cmluZyYgVHJhY2tCYXNlOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclRleHRUcmFjazsKK30KKworU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogVHJhY2tCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworfQorCitFdmVudFRh
cmdldERhdGEqIFRyYWNrQmFzZTo6ZXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1f
ZXZlbnRUYXJnZXREYXRhOworfQorCitFdmVudFRhcmdldERhdGEqIFRyYWNrQmFzZTo6ZW5zdXJl
RXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VHJhY2tCYXNlLmgKaW5kZXggZDQ0NzBhMjNiM2I2ZTUxOGI5NTZkY2Y0ODM1OTM5ZTY1YjhmN2Iy
MC4uYzAwNjYwZjA1M2FkNjQ5NDE2NThmMjBkNzUwMzBjYWJjOTMyNzk4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oCkBAIC0yOCwyMiArMjgsNDAgQEAKIAogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKIAorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUcmFja0Jhc2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxUcmFja0Jhc2U+IHsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CisKK2NsYXNzIFRyYWNrQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNrQmFzZT4s
IHB1YmxpYyBFdmVudFRhcmdldCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VHJhY2tCYXNlKCk7
CiAKICAgICBlbnVtIFR5cGUgeyBCYXNlVHJhY2ssIFRleHRUcmFjaywgQXVkaW9UcmFjaywgVmlk
ZW9UcmFjayB9OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCisg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdDsKKyAgICAKKyAgICB1c2luZyBSZWZDb3VudGVkPFRyYWNrQmFzZT46OnJlZjsKKyAg
ICB1c2luZyBSZWZDb3VudGVkPFRyYWNrQmFzZT46OmRlcmVmOworCiBwcm90ZWN0ZWQ6Ci0gICAg
VHJhY2tCYXNlKFR5cGUpOworICAgIFRyYWNrQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
VHlwZSk7CisgICAgCisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0
YSgpOworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEo
KTsKIAogcHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQg
cmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRU
YXJnZXQoKSB7IGRlcmVmKCk7IH0KKyAgICAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJn
ZXREYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMyMzI1YjVmZDI3
N2E4MWI1NTA1ZmQyMDJlM2YyNGVjMDFlZDllZGEuLjQ0NjMyNTlkYzk3ZWJkMjUxNjgwMzlmMzcy
Nzg0ZTY3NmQxNmU3YTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0xMS0xMSAgQW5uYSBD
YXZlbmRlciAgPGFubmFjY0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3RvcmFnZSBhbmQgcmV0
cmlldmFsIG9mIFRleHRUcmFja0N1ZXMgZHVyaW5nIHZpZGVvIHBsYXliYWNrLCBpbmNsdWRpbmcK
KyAgICAgICAgY3VlY2hhbmdlLCBlbnRlciwgYW5kIGV4aXQgZXZlbnRzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0NTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL3RyYWNrL2NhcHRpb25z
LXdlYnZ0dC9jdWVzLWNocm9uby1vcmRlci52dHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3Ry
YWNrL2NhcHRpb25zLXdlYnZ0dC9jdWVzLW92ZXJsYXBwaW5nLnZ0dDogQWRkZWQuCisgICAgICAg
ICogbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1jdWVjaGFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1jdWVzLWN1ZWNoYW5nZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1jdWVzLWVudGVyLWV4aXQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1jdWVzLWVudGVyLWV4aXQuaHRt
bDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1zZWVraW5nLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1zZWVraW5n
Lmh0bWw6IEFkZGVkLgorCiAyMDExLTExLTExICBTdGVwaGVuIENoZW5uZXkgIDxzY2hlbm5leUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBEUlQgZG9lcyBub3QgaGF2ZSBMYXlv
dXRUZXN0Q29udHJvbGxlci5wYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L2N1ZXMtY2hyb25vLW9yZGVy
LnZ0dCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9jdWVzLWNocm9u
by1vcmRlci52dHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ2ZDQ4NGY4ODhjZjU4NjA4NzY3ODgxMTcxNDU4ZGY3
MWZmZmEwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRp
b25zLXdlYnZ0dC9jdWVzLWNocm9uby1vcmRlci52dHQKQEAgLTAsMCArMSwxNCBAQAorV0VCVlRU
CitDdWVzIHRoYXQgaGF2ZSBvdmVybGFwcGluZyB0aW1lIHJhbmdlcy4KKworMQorMDA6MDA6MDEu
MDAwIC0tPiAwMDowMDowMi4wMDAKK0JlYXIgaXMgQ29taW5nISEhISEKKworMgorMDA6MDA6MDIu
NTAwIC0tPiAwMDowMDowMy41MDAKK0kgc2FpZCBCZWFyIGlzIGNvbWluZyEhISEKKworMworMDA6
MDA6MDQuMDAwIC0tPiAwMDowMDowNS4wMDAKK0kgc2FpZCBCZWFyIGlzIGNvbWluZyBub3chISEh
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L2N1ZXMtb3ZlcmxhcHBpbmcudnR0IGIvTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L2N1ZXMtb3ZlcmxhcHBpbmcudnR0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjNmMDM1ZDMzMWYwODJhODZkMmM2M2UxY2RjY2NmYzYzMTE3YjFhNTEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvY3Vlcy1v
dmVybGFwcGluZy52dHQKQEAgLTAsMCArMSwxNCBAQAorV0VCVlRUCitDdWVzIHRoYXQgaGF2ZSBv
dmVybGFwcGluZyB0aW1lIHJhbmdlcy4KKworMQorMDA6MDA6MDEuMDAwIC0tPiAwMDowMDowNi4w
MDAKK0JlYXIgaXMgQ29taW5nISEhISEKKworMgorMDA6MDA6MDEuNTAwIC0tPiAwMDowMDowNS4w
MDAKK0kgc2FpZCBCZWFyIGlzIGNvbWluZyEhISEKKworMworMDA6MDA6MDIuMDAwIC0tPiAwMDow
MDowNS4wMDAKK0kgc2FpZCBCZWFyIGlzIGNvbWluZyBub3chISEhClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vl
cy1jdWVjaGFuZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2st
Y3Vlcy1jdWVjaGFuZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1NzY5NzdmYmUwNDQ3MThm
NjIxOTYwOWYyZmYxNGI2OTViZGE0MDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay90cmFjay1jdWVzLWN1ZWNoYW5nZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3
NiBAQAorVGVzdHMgdGhhdCBUZXh0VHJhY2sncyBjdWVzIGFyZSBpbmRleGVkIGFuZCB1cGRhdGVk
IHdpdGhpbiA1MDBtcyBkdXJpbmcgdmlkZW8gcGxheWJhY2suIFRlc3QgdXNlcyB0aGUgY3VlY2hh
bmdlIGV2ZW50LgorCitUaGlzIHRlc3QgbWF5IGZhaWwgb2NjYXNpb25hbGx5IHNpbmNlIHdlIGNh
bm5vdCBndWFyYW50ZWUgdGhhdCBjdWUgZXZlbnRzIHdpbGwgZmlyZSB3aXRoaW4gMjUwbXMgb2Yg
dGhlaXIgc3RhcnRUaW1lIG9yIGVuZFRpbWUuCisKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorRVhQ
RUNURUQgKHRlc3RUcmFjay50cmFjay5jdWVzLmxlbmd0aCA9PSAnMycpIE9LCitSVU4odmlkZW8u
cGxheSgpKQorCitFVkVOVChjdWVjaGFuZ2UpIGZyb20gVGV4dFRyYWNrCitFWFBFQ1RFRCAoW29i
amVjdCBUZXh0VHJhY2tDdWVdID09ICdbb2JqZWN0IFRleHRUcmFja0N1ZV0nKSBPSworU3RhcnQg
dGltZToKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA+PSAnMScpIE9LCitFWFBFQ1RFRCAo
dmlkZW8uY3VycmVudFRpbWUgPCAnMS41JykgT0sKKworRVZFTlQoY3VlY2hhbmdlKSBmcm9tIDx0
cmFjaz4KK0VYUEVDVEVEIChbb2JqZWN0IFRleHRUcmFja0N1ZV0gPT0gJ1tvYmplY3QgVGV4dFRy
YWNrQ3VlXScpIE9LCitTdGFydCB0aW1lOgorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID49
ICcxJykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA8ICcxLjUnKSBPSworCitFVkVO
VChjdWVjaGFuZ2UpIGZyb20gVGV4dFRyYWNrCitFbmQgdGltZToKK0VYUEVDVEVEICh2aWRlby5j
dXJyZW50VGltZSA+PSAnMicpIE9LCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPCAnMi41
JykgT0sKKworRVZFTlQoY3VlY2hhbmdlKSBmcm9tIDx0cmFjaz4KK0VuZCB0aW1lOgorRVhQRUNU
RUQgKHZpZGVvLmN1cnJlbnRUaW1lID49ICcyJykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50
VGltZSA8ICcyLjUnKSBPSworCitFVkVOVChjdWVjaGFuZ2UpIGZyb20gVGV4dFRyYWNrCitFWFBF
Q1RFRCAoW29iamVjdCBUZXh0VHJhY2tDdWVdID09ICdbb2JqZWN0IFRleHRUcmFja0N1ZV0nKSBP
SworU3RhcnQgdGltZToKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA+PSAnMi41JykgT0sK
K0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA8ICczJykgT0sKKworRVZFTlQoY3VlY2hhbmdl
KSBmcm9tIDx0cmFjaz4KK0VYUEVDVEVEIChbb2JqZWN0IFRleHRUcmFja0N1ZV0gPT0gJ1tvYmpl
Y3QgVGV4dFRyYWNrQ3VlXScpIE9LCitTdGFydCB0aW1lOgorRVhQRUNURUQgKHZpZGVvLmN1cnJl
bnRUaW1lID49ICcyLjUnKSBPSworRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lIDwgJzMnKSBP
SworCitFVkVOVChjdWVjaGFuZ2UpIGZyb20gVGV4dFRyYWNrCitFbmQgdGltZToKK0VYUEVDVEVE
ICh2aWRlby5jdXJyZW50VGltZSA+PSAnMy41JykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50
VGltZSA8ICc0JykgT0sKKworRVZFTlQoY3VlY2hhbmdlKSBmcm9tIDx0cmFjaz4KK0VuZCB0aW1l
OgorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID49ICczLjUnKSBPSworRVhQRUNURUQgKHZp
ZGVvLmN1cnJlbnRUaW1lIDwgJzQnKSBPSworCitFVkVOVChjdWVjaGFuZ2UpIGZyb20gVGV4dFRy
YWNrCitFWFBFQ1RFRCAoW29iamVjdCBUZXh0VHJhY2tDdWVdID09ICdbb2JqZWN0IFRleHRUcmFj
a0N1ZV0nKSBPSworU3RhcnQgdGltZToKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA+PSAn
NCcpIE9LCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPCAnNC41JykgT0sKKworRVZFTlQo
Y3VlY2hhbmdlKSBmcm9tIDx0cmFjaz4KK0VYUEVDVEVEIChbb2JqZWN0IFRleHRUcmFja0N1ZV0g
PT0gJ1tvYmplY3QgVGV4dFRyYWNrQ3VlXScpIE9LCitTdGFydCB0aW1lOgorRVhQRUNURUQgKHZp
ZGVvLmN1cnJlbnRUaW1lID49ICc0JykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA8
ICc0LjUnKSBPSworCitFVkVOVChjdWVjaGFuZ2UpIGZyb20gVGV4dFRyYWNrCitFbmQgdGltZToK
K0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA+PSAnNScpIE9LCitFWFBFQ1RFRCAodmlkZW8u
Y3VycmVudFRpbWUgPCAnNS41JykgT0sKKworRVZFTlQoY3VlY2hhbmdlKSBmcm9tIDx0cmFjaz4K
K0VuZCB0aW1lOgorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID49ICc1JykgT0sKK0VYUEVD
VEVEICh2aWRlby5jdXJyZW50VGltZSA8ICc1LjUnKSBPSworCitFTkQgT0YgVEVTVAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWVzLWN1ZWNoYW5nZS5odG1s
IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1jdWVjaGFuZ2UuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZWY1NzBmMjQ5NWU0NDJlZWM2NGQxNDc0NWVjNjYwZjZhNjMyNDQyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1jdWVjaGFuZ2Uu
aHRtbApAQCAtMCwwICsxLDczIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCIgLz4KKworICAgICAgICA8c2NyaXB0IHNyYz0uLi9tZWRpYS1m
aWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHA+VGVzdHMgdGhhdCBU
ZXh0VHJhY2sncyBjdWVzIGFyZSBpbmRleGVkIGFuZCB1cGRhdGVkIHdpdGhpbiA1MDBtcyBkdXJp
bmcgdmlkZW8gcGxheWJhY2suIFRlc3QgdXNlcyB0aGUgY3VlY2hhbmdlIGV2ZW50LjwvcD4KKyAg
ICAgICAgPHA+VGhpcyB0ZXN0IG1heSBmYWlsIG9jY2FzaW9uYWxseSBzaW5jZSB3ZSBjYW5ub3Qg
Z3VhcmFudGVlIHRoYXQgY3VlIGV2ZW50cyB3aWxsIGZpcmUgd2l0aGluIDI1MG1zIG9mIHRoZWly
IHN0YXJ0VGltZSBvciBlbmRUaW1lLjwvcD4KKyAgICAgICAgPHZpZGVvIGNvbnRyb2xzPgorICAg
ICAgICAgICAgPHRyYWNrIGlkPSJ0ZXN0VHJhY2siIHNyYz0iY2FwdGlvbnMtd2VidnR0L2N1ZXMt
Y2hyb25vLW9yZGVyLnZ0dCIga2luZD0iY2FwdGlvbnMiPgorICAgICAgICA8L3ZpZGVvPgorICAg
ICAgICA8c2NyaXB0PiAgICAgICAgICAgIAorCisgICAgICAgIHZhciB0aW1lSW50ZXJ2YWwgPSAw
LjU7CisgICAgICAgIHZhciBjdWVDaGFuZ2VDb3VudCA9IDA7CisgICAgICAgIHZhciB0ZXN0VHJh
Y2s7CisKKyAgICAgICAgZnVuY3Rpb24gY3VlQ2hhbmdlZEZyb21UcmFja0VsZW1lbnQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGN1ZWNoYW5nZSkgZnJvbSAm
bHQ7dHJhY2smZ3Q7Iik7CisgICAgICAgICAgICBjaGVja0N1ZSgpOworCisgICAgICAgICAgICAr
K2N1ZUNoYW5nZUNvdW50OworICAgICAgICAgICAgaWYgKGN1ZUNoYW5nZUNvdW50ID09IHRlc3RU
cmFjay50cmFjay5jdWVzLmxlbmd0aCAqIDIpCisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY3VlQ2hhbmdlZEZyb21UZXh0VHJhY2soKQor
ICAgICAgICB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKGN1ZWNoYW5nZSkgZnJv
bSBUZXh0VHJhY2siKTsKKyAgICAgICAgICAgIGNoZWNrQ3VlKCk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrQ3VlKCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGN1ZXMgPSB0ZXN0VHJhY2sudHJhY2suY3VlczsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgdmFyIGN1cnJlbnRDdWUgPSBjdWVzW01hdGguZmxvb3IoY3VlQ2hhbmdlQ291bnQvMildOwor
CisgICAgICAgICAgICBpZiAoY3VlQ2hhbmdlQ291bnQgJSAyID09IDApIHsKKyAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoY3VycmVudEN1ZSwgdGVzdFRyYWNrLnRyYWNrLmFjdGl2ZUN1ZXNb
MF0pOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiU3RhcnQgdGltZToiKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJlbnRUaW1lIiwgY3VycmVudEN1ZS5z
dGFydFRpbWUsICc+PScpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uY3Vy
cmVudFRpbWUiLCBjdXJyZW50Q3VlLnN0YXJ0VGltZSArIHRpbWVJbnRlcnZhbCwgJzwnKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJFbmQgdGlt
ZToiKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJlbnRUaW1lIiwg
Y3VycmVudEN1ZS5lbmRUaW1lLCAnPj0nKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
InZpZGVvLmN1cnJlbnRUaW1lIiwgY3VycmVudEN1ZS5lbmRUaW1lICsgdGltZUludGVydmFsLCAn
PCcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLAorICAgICAgICAg
ICAgZnVuY3Rpb24gKCkgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGVzdFRyYWNr
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RUcmFjayIpOworICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidGVzdFRyYWNrLnRyYWNrLmN1ZXMubGVuZ3RoIiwgMyk7CisgICAgICAg
ICAgICAgICAgdGVzdFRyYWNrLmFkZEV2ZW50TGlzdGVuZXIoJ2N1ZWNoYW5nZScsIGN1ZUNoYW5n
ZWRGcm9tVHJhY2tFbGVtZW50KTsKKyAgICAgICAgICAgICAgICB0ZXN0VHJhY2sudHJhY2suYWRk
RXZlbnRMaXN0ZW5lcignY3VlY2hhbmdlJywgY3VlQ2hhbmdlZEZyb21UZXh0VHJhY2spOworICAg
ICAgICAgICAgICAgIHJ1bigidmlkZW8ucGxheSgpIik7CisgICAgICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICBmaW5kTWVk
aWFFbGVtZW50KCk7CisgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwg
Ii4uL2NvbnRlbnQvdGVzdCIpOworICAgICAgICAKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2st
Y3Vlcy1lbnRlci1leGl0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3Ry
YWNrLWN1ZXMtZW50ZXItZXhpdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDliOWUxMjcwYWZh
YTA2NDQ3OGMwYmU4NTk3NTcxZTczMTM2Zjc0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtZW50ZXItZXhpdC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0NiBAQAorVGVzdHMgdGhhdCBUZXh0VHJhY2sncyBjdWVzIGFyZSBpbmRleGVkIGFuZCB1
cGRhdGVkIHdpdGhpbiA1MDBtcyBkdXJpbmcgdmlkZW8gcGxheWJhY2suIFRlc3QgdXNlcyB0aGUg
ZW50ZXIgYW5kIGV4aXRzIGV2ZW50cyBvbiBUZXh0VHJhY2tDdWUuCisKK1RoaXMgdGVzdCBtYXkg
ZmFpbCBvY2Nhc2lvbmFsbHkgc2luY2Ugd2UgY2Fubm90IGd1YXJhbnRlZSB0aGF0IGN1ZSBldmVu
dHMgd2lsbCBmaXJlIHdpdGhpbiAyNTBtcyBvZiB0aGVpciBzdGFydFRpbWUgb3IgZW5kVGltZS4K
KworRVZFTlQoY2FucGxheXRocm91Z2gpCitFWFBFQ1RFRCAodGVzdFRyYWNrLnRyYWNrLmN1ZXMu
bGVuZ3RoID09ICczJykgT0sKK1JVTih2aWRlby5wbGF5KCkpCisKK0VWRU5UKGVudGVyKQorVGhp
cyBjdWUgaXMgdGhlIGN1cnJlbnRseSBhY3RpdmUgY3VlOgorRVhQRUNURUQgKFtvYmplY3QgVGV4
dFRyYWNrQ3VlXSA9PSAnW29iamVjdCBUZXh0VHJhY2tDdWVdJykgT0sKK1N0YXJ0IHRpbWU6CitF
WFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPj0gJzEnKSBPSworRVhQRUNURUQgKHZpZGVvLmN1
cnJlbnRUaW1lIDwgJzEuNScpIE9LCisKK0VWRU5UKGV4aXQpCitFbmQgdGltZToKK0VYUEVDVEVE
ICh2aWRlby5jdXJyZW50VGltZSA+PSAnMicpIE9LCitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRp
bWUgPCAnMi41JykgT0sKKworRVZFTlQoZW50ZXIpCitUaGlzIGN1ZSBpcyB0aGUgY3VycmVudGx5
IGFjdGl2ZSBjdWU6CitFWFBFQ1RFRCAoW29iamVjdCBUZXh0VHJhY2tDdWVdID09ICdbb2JqZWN0
IFRleHRUcmFja0N1ZV0nKSBPSworU3RhcnQgdGltZToKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50
VGltZSA+PSAnMi41JykgT0sKK0VYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZSA8ICczJykgT0sK
KworRVZFTlQoZXhpdCkKK0VuZCB0aW1lOgorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID49
ICczLjUnKSBPSworRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lIDwgJzQnKSBPSworCitFVkVO
VChlbnRlcikKK1RoaXMgY3VlIGlzIHRoZSBjdXJyZW50bHkgYWN0aXZlIGN1ZToKK0VYUEVDVEVE
IChbb2JqZWN0IFRleHRUcmFja0N1ZV0gPT0gJ1tvYmplY3QgVGV4dFRyYWNrQ3VlXScpIE9LCitT
dGFydCB0aW1lOgorRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID49ICc0JykgT0sKK0VYUEVD
VEVEICh2aWRlby5jdXJyZW50VGltZSA8ICc0LjUnKSBPSworCitFVkVOVChleGl0KQorRW5kIHRp
bWU6CitFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUgPj0gJzUnKSBPSworRVhQRUNURUQgKHZp
ZGVvLmN1cnJlbnRUaW1lIDwgJzUuNScpIE9LCisKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtZW50ZXItZXhpdC5odG1sIGIvTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1lbnRlci1leGl0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDhlMDRkNTE3MmI2NWQ5YTZmNmJkNTg5Yjg3Yzk1NWU5NzY5NzU4MQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtZW50ZXItZXhpdC5odG1s
CkBAIC0wLDAgKzEsNzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04IiAvPgorCisgICAgICAgIDxzY3JpcHQgc3JjPS4uL21lZGlhLWZpbGUu
anM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8cD5UZXN0cyB0aGF0IFRleHRU
cmFjaydzIGN1ZXMgYXJlIGluZGV4ZWQgYW5kIHVwZGF0ZWQgd2l0aGluIDUwMG1zIGR1cmluZyB2
aWRlbyBwbGF5YmFjay4gVGVzdCB1c2VzIHRoZSBlbnRlciBhbmQgZXhpdHMgZXZlbnRzIG9uIFRl
eHRUcmFja0N1ZS48L3A+CisgICAgICAgIDxwPlRoaXMgdGVzdCBtYXkgZmFpbCBvY2Nhc2lvbmFs
bHkgc2luY2Ugd2UgY2Fubm90IGd1YXJhbnRlZSB0aGF0IGN1ZSBldmVudHMgd2lsbCBmaXJlIHdp
dGhpbiAyNTBtcyBvZiB0aGVpciBzdGFydFRpbWUgb3IgZW5kVGltZS48L3A+CisgICAgICAgIDx2
aWRlbyBjb250cm9scz4KKyAgICAgICAgICAgIDx0cmFjayBpZD0idGVzdFRyYWNrIiBzcmM9ImNh
cHRpb25zLXdlYnZ0dC9jdWVzLWNocm9uby1vcmRlci52dHQiIGtpbmQ9ImNhcHRpb25zIj4KKyAg
ICAgICAgPC92aWRlbz4KKyAgICAgICAgPHNjcmlwdD4gICAgICAgICAgICAKKyAgICAgICAgICAg
IAorICAgICAgICB2YXIgdGltZUludGVydmFsID0gMC41CisgICAgICAgIHZhciBjdWVDb3VudCA9
IDA7CisgICAgICAgIHZhciB0ZXN0VHJhY2s7CisKKyAgICAgICAgZnVuY3Rpb24gY3VlRW50ZXJl
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoZW50ZXIpIik7
CisKKyAgICAgICAgICAgIHZhciBjdXJyZW50Q3VlID0gdGVzdFRyYWNrLnRyYWNrLmN1ZXNbY3Vl
Q291bnRdOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRoaXMgY3VlIGlzIHRoZSBjdXJy
ZW50bHkgYWN0aXZlIGN1ZToiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZChjdXJyZW50Q3Vl
LCB0ZXN0VHJhY2sudHJhY2suYWN0aXZlQ3Vlc1swXSk7CisgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIlN0YXJ0IHRpbWU6Iik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJl
bnRUaW1lIiwgY3VycmVudEN1ZS5zdGFydFRpbWUsICc+PScpOworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJ2aWRlby5jdXJyZW50VGltZSIsIGN1cnJlbnRDdWUuc3RhcnRUaW1lICsgdGltZUlu
dGVydmFsLCAnPCcpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGN1ZUV4aXRlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiRVZFTlQoZXhpdCkiKTsKKworICAgICAgICAgICAgdmFyIGN1cnJlbnRDdWUg
PSB0ZXN0VHJhY2sudHJhY2suY3Vlc1tjdWVDb3VudF07CisKKyAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiRW5kIHRpbWU6Iik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmN1cnJl
bnRUaW1lIiwgY3VycmVudEN1ZS5lbmRUaW1lLCAnPj0nKTsKKyAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8uY3VycmVudFRpbWUiLCBjdXJyZW50Q3VlLmVuZFRpbWUgKyB0aW1lSW50ZXJ2
YWwsICc8Jyk7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworCisgICAgICAgICAgICAr
K2N1ZUNvdW50OworICAgICAgICAgICAgaWYgKGN1ZUNvdW50ID09IHRlc3RUcmFjay50cmFjay5j
dWVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywKKyAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRlc3RUcmFjayA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0VHJhY2siKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInRlc3RUcmFjay50cmFjay5jdWVzLmxlbmd0aCIsIDMpOworICAgICAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGVzdFRyYWNrLnRyYWNrLmN1ZXMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdFRyYWNrLnRyYWNrLmN1ZXNbaV0uYWRkRXZlbnRMaXN0ZW5l
cignZW50ZXInLCBjdWVFbnRlcmVkKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFRyYWNrLnRy
YWNrLmN1ZXNbaV0uYWRkRXZlbnRMaXN0ZW5lcignZXhpdCcsIGN1ZUV4aXRlZCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJ1bigidmlkZW8ucGxheSgpIik7CisgICAgICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKwor
ICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRp
YUZpbGUoInZpZGVvIiwgIi4uL2NvbnRlbnQvdGVzdCIpOworICAgICAgICAKKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdHJhY2stY3Vlcy1zZWVraW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21l
ZGlhL3RyYWNrL3RyYWNrLWN1ZXMtc2Vla2luZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q0
ZWE4YWNmZWFkNDI5NjMxMDljNTdjMDg3NzkzZWFiMzU5NjYwNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtc2Vla2luZy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzMiBAQAorVGVzdHMgVGV4dFRyYWNrJ3MgYWN0aXZlQ3VlcyBhcmUgaW5kZXhl
ZCBhbmQgdXBkYXRlZCBkdXJpbmcgdmlkZW8gcGxheWJhY2suCisKK0VWRU5UKGNhbnBsYXl0aHJv
dWdoKQorRVhQRUNURUQgKHRlc3RUcmFjay50cmFjay5jdWVzLmxlbmd0aCA9PSAnMycpIE9LCitS
VU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjUpCisKK0VWRU5UKHNlZWtlZCkKKworRVhQRUNURUQg
KHZpZGVvLmN1cnJlbnRUaW1lID09ICcwLjUnKSBPSworRVhQRUNURUQgKGFjdGl2ZUN1ZXMubGVu
Z3RoID09ICcwJykgT0sKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDEpCisKK0VWRU5UKHNlZWtl
ZCkKKworRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID09ICcxJykgT0sKK0VYUEVDVEVEIChh
Y3RpdmVDdWVzLmxlbmd0aCA9PSAnMScpIE9LCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAxLjUp
CisKK0VWRU5UKHNlZWtlZCkKKworRVhQRUNURUQgKHZpZGVvLmN1cnJlbnRUaW1lID09ICcxLjUn
KSBPSworRVhQRUNURUQgKGFjdGl2ZUN1ZXMubGVuZ3RoID09ICcyJykgT0sKK1JVTih2aWRlby5j
dXJyZW50VGltZSA9IDIpCisKK0VWRU5UKHNlZWtlZCkKKworRVhQRUNURUQgKHZpZGVvLmN1cnJl
bnRUaW1lID09ICcyJykgT0sKK0VYUEVDVEVEIChhY3RpdmVDdWVzLmxlbmd0aCA9PSAnMycpIE9L
CitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAyLjUpCisKK0VORCBPRiBURVNUCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtc2Vla2luZy5odG1sIGIvTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1zZWVraW5nLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzRlN2M4ODQzMzNhZWRmMjFiZGE2Njg5MWU2ZDVmODcxNzM4NDE5YgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZXMtc2Vla2luZy5odG1sCkBAIC0w
LDAgKzEsNTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04IiAvPgorCisgICAgICAgIDxzY3JpcHQgc3JjPS4uL21lZGlhLWZpbGUuanM+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8cD5UZXN0cyBUZXh0VHJhY2sncyBhY3Rp
dmVDdWVzIGFyZSBpbmRleGVkIGFuZCB1cGRhdGVkIGR1cmluZyB2aWRlbyBwbGF5YmFjay48L3A+
CisgICAgICAgIDx2aWRlbyBjb250cm9scz4KKyAgICAgICAgICAgIDx0cmFjayBpZD0idGVzdFRy
YWNrIiBzcmM9ImNhcHRpb25zLXdlYnZ0dC9jdWVzLW92ZXJsYXBwaW5nLnZ0dCIga2luZD0ic3Vi
dGl0bGVzIj4KKyAgICAgICAgPC92aWRlbz4KKyAgICAgICAgPHNjcmlwdD4gICAgICAgICAgICAK
KyAgICAgICAgICAgIAorICAgICAgICB2YXIgc2Vla2VkQ291bnQgPSAwOworICAgICAgICB2YXIg
dGVzdFRyYWNrOworCisgICAgICAgIGZ1bmN0aW9uIHNlZWtlZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgICsrc2Vla2VkQ291bnQ7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworCisg
ICAgICAgICAgICBhY3RpdmVDdWVzID0gdGVzdFRyYWNrLnRyYWNrLmFjdGl2ZUN1ZXM7CisKKyAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uY3VycmVudFRpbWUiLCBzZWVrZWRDb3VudCAq
IDAuNSk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImFjdGl2ZUN1ZXMubGVuZ3RoIiwgc2Vl
a2VkQ291bnQgLSAxKTsKKyAgICAgICAgICAgIHJ1bigidmlkZW8uY3VycmVudFRpbWUgPSAiICsg
KHNlZWtlZENvdW50ICsgMSkgKiAwLjUpOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIp
OworCisgICAgICAgICAgICBpZiAoc2Vla2VkQ291bnQgPT0gNCkKKyAgICAgICAgICAgICAgICBl
bmRUZXN0KCk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgd2FpdEZvckV2ZW50KCdzZWVrZWQn
LCBzZWVrZWQgKTsKKworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywKKyAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRl
c3RUcmFjayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0VHJhY2siKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInRlc3RUcmFjay50cmFjay5jdWVzLmxlbmd0aCIsIDMpOwor
ICAgICAgICAgICAgICAgIHJ1bigidmlkZW8uY3VycmVudFRpbWUgPSAwLjUiKTsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgfQorICAgICAgICApOworCisg
ICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgdmlkZW8uc3JjID0gZmluZE1lZGlh
RmlsZSgidmlkZW8iLCAiLi4vY29udGVudC90ZXN0Iik7CisgICAgICAgIAorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>