<?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>60379</bug_id>
          
          <creation_ts>2011-05-06 10:07:21 -0700</creation_ts>
          <short_desc>Adding initial interfaces and stubs for track</short_desc>
          <delta_ts>2011-06-17 21:57:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>43668</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Victoria Kirst">vrk</reporter>
          <assigned_to name="Victoria Kirst">vrk</assigned_to>
          <cc>annacc</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>luiz</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>399590</commentid>
    <comment_count>0</comment_count>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2011-05-06 10:07:21 -0700</bug_when>
    <thetext>Adding initial interfaces and stubs for track</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399594</commentid>
    <comment_count>1</comment_count>
      <attachid>92597</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2011-05-06 10:10:22 -0700</bug_when>
    <thetext>Created attachment 92597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399597</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-06 10:14:26 -0700</bug_when>
    <thetext>Attachment 92597 did not pass style-queue:

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

Source/WebCore/platform/track/CueParserPrivate.h:49:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/TextTrackPrivate.h:42:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399600</commentid>
    <comment_count>3</comment_count>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2011-05-06 10:17:07 -0700</bug_when>
    <thetext>@annacc and I are beginning to upstream our work on &lt;track&gt;! 

We have coded a functional demo privately on our computers, but because the code is too large to review all at once we will be uploading pieces of it in a series of patches. This patch simply adds some of the core header components.

Here are some links that may provide more information and context:

* Complete code for demo (not to be committed):
  https://bugs.webkit.org/show_bug.cgi?id=60312
* Class diagram: http://bit.ly/mMdPB9
* Design doc (a bit out of date): http://bit.ly/lXS37N</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399998</commentid>
    <comment_count>4</comment_count>
      <attachid>92597</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2011-05-06 18:41:08 -0700</bug_when>
    <thetext>Comment on attachment 92597
Patch

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

I am not an official reviewer but here goes some thoughts.

&gt; Source/WebCore/WebCore.gypi:3002
&gt; +            &apos;html/LoadableTextTrack.cpp&apos;,
&gt; +            &apos;html/LoadableTextTrack.h&apos;,
&gt; +            &apos;html/LoadableTextTrackImpl.cpp&apos;,
&gt; +            &apos;html/LoadableTextTrackImpl.h&apos;,

Is this code chromium specific? I could not conclude from the information that I found in this bug.
If it is not then you will need to add this files to all the build systems. We have many of them! :)

&gt; Source/WebCore/html/LoadableTextTrack.h:42
&gt; +    static PassRefPtr&lt;LoadableTextTrack&gt; create(ScriptExecutionContext* context, const String&amp; kind, const String&amp; label, const String&amp; language, bool isDefault)

Boolean parameters reduce readability. Would it not be possible to use an enumeration?

&gt; Source/WebCore/html/LoadableTextTrack.h:51
&gt; +    LoadableTextTrack(ScriptExecutionContext*, const String&amp; kind, const String&amp; label, const String&amp; language, bool isDefault);

The same here.

&gt; Source/WebCore/html/LoadableTextTrackImpl.h:46
&gt; +    static PassOwnPtr&lt;LoadableTextTrackImpl&gt; create(ScriptExecutionContext* context, const String&amp; kind, const String&amp; label, const String&amp; language, bool isDefault)

And here.

&gt; Source/WebCore/html/LoadableTextTrackImpl.h:68
&gt; +    LoadableTextTrackImpl(ScriptExecutionContext*, const String&amp; kind, const String&amp; label, const String&amp; language, bool isDefault);

Ditto.

&gt; Source/WebCore/html/TextTrackCue.cpp:37
&gt; +TextTrackCue::TextTrackCue(ScriptExecutionContext* context, const String&amp; id, const double start, const double end, const String&amp; content, const String&amp; settings, const bool pauseOnExit)

Ditto.

&gt; Source/WebCore/html/TextTrackCue.h:43
&gt; +    static PassRefPtr&lt;TextTrackCue&gt; create(ScriptExecutionContext* context, const String&amp; id, double start, double end, const String&amp; content, const String&amp; settings, bool pauseOnExit)

Same thing.

&gt; Source/WebCore/html/TextTrackCue.h:72
&gt; +    TextTrackCue(ScriptExecutionContext*, const String&amp; id, double start, double end, const String&amp; content, const String&amp; settings, bool pauseOnExit);

Same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402420</commentid>
    <comment_count>5</comment_count>
      <attachid>92597</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2011-05-11 16:45:54 -0700</bug_when>
    <thetext>Comment on attachment 92597
Patch

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

&gt;&gt; Source/WebCore/WebCore.gypi:3002
&gt;&gt; +            &apos;html/LoadableTextTrackImpl.h&apos;,
&gt; 
&gt; Is this code chromium specific? I could not conclude from the information that I found in this bug.
&gt; If it is not then you will need to add this files to all the build systems. We have many of them! :)

Track is not chromium-specific. I&apos;ll chat with annacc to determine which other files I will update!

&gt;&gt; Source/WebCore/html/LoadableTextTrack.h:42
&gt;&gt; +    static PassRefPtr&lt;LoadableTextTrack&gt; create(ScriptExecutionContext* context, const String&amp; kind, const String&amp; label, const String&amp; language, bool isDefault)
&gt; 
&gt; Boolean parameters reduce readability. Would it not be possible to use an enumeration?

Sure, we can use enums instead. Can you give me an example of the typical naming convention for bools-turned-to-enums? Would it be enum Default {IS_DEFAULT, IS_NOT_DEFAULT}?

&gt;&gt; Source/WebCore/html/TextTrackCue.cpp:37
&gt;&gt; +TextTrackCue::TextTrackCue(ScriptExecutionContext* context, const String&amp; id, const double start, const double end, const String&amp; content, const String&amp; settings, const bool pauseOnExit)
&gt; 
&gt; Ditto.

Oops, also these primitive parameters are const for some reason. Don&apos;t think I did that anywhere else. I&apos;ll change that as well!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402860</commentid>
    <comment_count>6</comment_count>
      <attachid>92597</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-05-12 08:42:55 -0700</bug_when>
    <thetext>Comment on attachment 92597
Patch

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

I know it is a pain to split big patches, but there are a lot of basic errors here so I think it would be useful for your initial patches to be quite a bit smaller so you can integrate comments into subsequent patches before posting them.


&gt; Source/WebCore/html/CueIndex.cpp:40
&gt; +CueSet CueSet::difference(const CueSet&amp; other) const
&gt; +{
&gt; +    return CueSet();
&gt; +}

Is this implementation temporary? If so, please add a FIXME comment.

Ditto for the rest of the methods in this file.

&gt; Source/WebCore/html/CueIndex.h:47
&gt; +    void add(TextTrackCue*);
&gt; +    bool contains(TextTrackCue*) const;
&gt; +    void remove(TextTrackCue*);

Can you use constant references instead of mutable pointers?

&gt; Source/WebCore/html/LoadableTextTrack.cpp:45
&gt; +void LoadableTextTrack::load(const String&amp; url)
&gt; +{
&gt; +}

FIXME?

&gt; Source/WebCore/html/LoadableTextTrackImpl.cpp:41
&gt; +LoadableTextTrackImpl::LoadableTextTrackImpl(ScriptExecutionContext* context, const String&amp; kind, const String&amp; label, const String&amp; language, bool isDefault)
&gt; +    : m_kind(kind)
&gt; +    , m_label(label)
&gt; +    , m_language(language)
&gt; +{
&gt; +}

Don&apos;t you need to store &quot;default&quot;?

&gt; Source/WebCore/html/LoadableTextTrackImpl.cpp:74
&gt; +void LoadableTextTrackImpl::setMode(TextTrack::Mode mode)
&gt; +{
&gt; +}

&quot;m_mode = mode&quot;?

&gt; Source/WebCore/html/LoadableTextTrackImpl.cpp:96
&gt; +TextTrackCueList* LoadableTextTrackImpl::cues() const
&gt; +{
&gt; +    return 0;
&gt; +}
&gt; +
&gt; +TextTrackCueList* LoadableTextTrackImpl::activeCues() const
&gt; +{
&gt; +    return 0;
&gt; +}
&gt; +
&gt; +void LoadableTextTrackImpl::popNewestCues(Vector&lt;TextTrackCue*&gt;&amp; output)
&gt; +{
&gt; +}
&gt; +
&gt; +void LoadableTextTrackImpl::load(const String&amp; url)
&gt; +{
&gt; +}
&gt; +
&gt; +void LoadableTextTrackImpl::newCuesLoaded()
&gt; +{
&gt; +}

FIXMEs?

&gt; Source/WebCore/html/MutableTextTrack.cpp:46
&gt; +void MutableTextTrack::addCue(TextTrackCue* cue)
&gt; +{
&gt; +}
&gt; +void MutableTextTrack::removeCue(TextTrackCue* cue)
&gt; +{
&gt; +}

FIXMEs. 

We usually put a blank line between methods.

&gt; Source/WebCore/html/MutableTextTrack.h:46
&gt; +    void addCue(TextTrackCue*);
&gt; +    void removeCue(TextTrackCue*);

Is it necessary to pass a mutable pointer here, could you use &quot;const TextTrackCue&amp;&quot; instead?

&gt; Source/WebCore/html/MutableTextTrackImpl.cpp:55
&gt; +void MutableTextTrackImpl::addCue(TextTrackCue* cue)
&gt; +{
&gt; +}
&gt; +
&gt; +void MutableTextTrackImpl::removeCue(TextTrackCue* cue)
&gt; +{
&gt; +}

FIXME.

&gt; Source/WebCore/html/MutableTextTrackImpl.cpp:84
&gt; +void MutableTextTrackImpl::setMode(TextTrack::Mode mode)
&gt; +{
&gt; +}

Should this set m_mode?

&gt; Source/WebCore/html/MutableTextTrackImpl.cpp:102
&gt; +TextTrackCueList* MutableTextTrackImpl::cues() const
&gt; +{
&gt; +    return 0;
&gt; +}
&gt; +
&gt; +TextTrackCueList* MutableTextTrackImpl::activeCues() const
&gt; +{
&gt; +    return 0;
&gt; +}
&gt; +
&gt; +void MutableTextTrackImpl::newCuesLoaded()
&gt; +{
&gt; +}
&gt; +
&gt; +void MutableTextTrackImpl::popNewestCues(Vector&lt;TextTrackCue*&gt;&amp; output)
&gt; +{
&gt; +}

FIXME.

&gt; Source/WebCore/html/TextTrack.cpp:44
&gt; +TextTrack::TextTrack(ScriptExecutionContext* context)
&gt; +{
&gt; +}

Is &quot;context&quot; not needed? If not, why the argument? If it is just not being used yet, add a comment and an UNUSED_PARAM() so it doesn&apos;t break the compile.

&gt; Source/WebCore/html/TextTrack.cpp:53
&gt; +String TextTrack::kind() const
&gt; +{
&gt; +    return m_private-&gt;kind();
&gt; +}

Can m_private never be NULL? 

Ditto for the rest of the methods that use it.

&gt; Source/WebCore/html/TextTrack.cpp:77
&gt; +void TextTrack::setMode(unsigned short mode, ExceptionCode&amp; ec)
&gt; +{
&gt; +}

Does this method not call through to m_private? Named but unused parameters will break the build.

&gt; Source/WebCore/html/TextTrack.cpp:83
&gt; +TextTrackCueList* TextTrack::cues() const
&gt; +{
&gt; +    return 0;
&gt; +
&gt; +}

Blank line not needed. Does this method not call through to m_private?

&gt; Source/WebCore/html/TextTrack.cpp:88
&gt; +TextTrackCueList* TextTrack::activeCues() const
&gt; +{
&gt; +    return 0;
&gt; +}

Does this method not call through to m_private?

&gt; Source/WebCore/html/TextTrack.h:71
&gt; +    TextTrackCueList* cues() const;
&gt; +    TextTrackCueList* activeCues() const;

I am not sure of ownership of these return values or who will use them, but is it correct to return naked pointers?

&gt;&gt;&gt; Source/WebCore/html/TextTrackCue.cpp:37
&gt;&gt;&gt; +TextTrackCue::TextTrackCue(ScriptExecutionContext* context, const String&amp; id, const double start, const double end, const String&amp; content, const String&amp; settings, const bool pauseOnExit)
&gt;&gt; 
&gt;&gt; Ditto.
&gt; 
&gt; Oops, also these primitive parameters are const for some reason. Don&apos;t think I did that anywhere else. I&apos;ll change that as well!

&quot;context&quot; is unused, should it be?

&gt; Source/WebCore/html/TextTrackCue.cpp:58
&gt; +void TextTrackCue::setTrack(TextTrack* track)
&gt; +{
&gt; +}

&quot;m_track = track&quot;?

&gt; Source/WebCore/html/TextTrackCue.cpp:83
&gt; +String TextTrackCue::direction() const
&gt; +{
&gt; +    return &quot;&quot;;
&gt; +}

FIXME here and for the rest of the unimplemented methods in this file.

&gt; Source/WebCore/html/TextTrackCue.h:63
&gt; +    String direction() const;
&gt; +    bool snapToLines() const;
&gt; +    long linePosition() const;
&gt; +    long textPosition() const;
&gt; +    long size() const;
&gt; +    String alignment() const;

These aren&apos;t in the W3C spec, they all WebVTT specific. Don&apos;t they belong in a derived class?

&gt; Source/WebCore/html/TextTrackCueList.cpp:53
&gt; +TextTrackCueList::TextTrackCueList(ScriptExecutionContext* context)
&gt; +{
&gt; +}
&gt; +
&gt; +TextTrackCue* TextTrackCueList::getCueById(const String&amp; id) const
&gt; +{
&gt; +    return 0;
&gt; +}
&gt; +
&gt; +void TextTrackCueList::append(Vector&lt;PassRefPtr&lt;TextTrackCue&gt; &gt;&amp; newCues)
&gt; +{
&gt; +}
&gt; +
&gt; +void TextTrackCueList::append(const PassRefPtr&lt;TextTrackCue&gt;&amp; cue)
&gt; +{
&gt; +}
&gt; +
&gt; +void TextTrackCueList::remove(const PassRefPtr&lt;TextTrackCue&gt;&amp; cue)
&gt; +{
&gt; +}

Add FIXMEs. This won&apos;t compile without UNUSED_PARAMs everywhere.

&gt;&gt; Source/WebCore/html/TextTrackPrivate.h:42
&gt;&gt; +    WTF_MAKE_NONCOPYABLE(TextTrackPrivateInterface); WTF_MAKE_FAST_ALLOCATED;
&gt; 
&gt; More than one command on the same line  [whitespace/newline] [4]

What she said.

&gt; Source/WebCore/loader/CueLoader.h:43
&gt; +    virtual void takeNewCuesFrom(CueLoader*) = 0;

I am not wild about the name &quot;takeNewCuesFrom&quot; - take them where, and from what?

&gt; Source/WebCore/loader/CueLoader.h:55
&gt; +    virtual void popNewestCues(Vector&lt;TextTrackCue*&gt;&amp; outCues) = 0;

&quot;pop&quot; doesn&apos;t seem right, doesn&apos;t this method &quot;get&quot; the newest cues? 

The &quot;out&quot; prefix isn&apos;t necessary.

&gt; Source/WebCore/platform/track/CueParser.cpp:57
&gt; +void CueParser::load(ScriptExecutionContext* context, const String&amp; url)
&gt; +{
&gt; +}
&gt; +
&gt; +void CueParser::didReceiveData(const char* data, int len)
&gt; +{
&gt; +}
&gt; +
&gt; +void CueParser::depleteParsedCues(Vector&lt;PassRefPtr&lt;TextTrackCue&gt; &gt;&amp; outputCues)
&gt; +{
&gt; +}

FIXME + UNUSED_PARAM

&gt; Source/WebCore/platform/track/CueParser.h:54
&gt; +    void didReceiveData(const char* data, int dataLength);

Parameter names are not necessary.

&gt; Source/WebCore/platform/track/CueParser.h:57
&gt; +    void depleteParsedCues(Vector&lt;PassRefPtr&lt;TextTrackCue&gt; &gt;&amp; outputCues);

Ditto.

&gt; Source/WebCore/platform/track/CueParserPrivate.h:54
&gt; +    enum Format { WebVTT, XML };

I don&apos;t think we plan to support cues in generic XML, so this name isn&apos;t correct. Actually we probably don&apos;t need an enum at all until someone starts working on a new format.

&gt; Source/WebCore/platform/track/CueParserPrivate.h:57
&gt; +    virtual void parseBytes(const char* bytes, int length) = 0;

Parameter names not necessary.

&gt; Source/WebCore/platform/track/CueParserPrivate.h:60
&gt; +    // Transfers ownership of last parsed cues to caller.
&gt; +    virtual void depleteParsedCues(Vector&lt;PassRefPtr&lt;TextTrackCue&gt; &gt;&amp; outputCues) = 0;

&quot;deplete&quot; doesn&apos;t seem right, like &quot;popNewestCues&quot; doesn&apos;t this method &quot;get&quot; the newest cues? 

The &quot;output&quot; prefix isn&apos;t necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402989</commentid>
    <comment_count>7</comment_count>
      <attachid>92597</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-05-12 11:20:07 -0700</bug_when>
    <thetext>Comment on attachment 92597
Patch

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

&gt; Source/WebCore/html/LoadableTextTrackImpl.h:72
&gt; +    String m_language;

Many of these private vars can go in TextTrackPrivateInterface and getter methods for kind(), label(), language() can be defined there (reducing redundancy).

&gt; Source/WebCore/html/MutableTextTrackImpl.h:73
&gt; +    String m_language;

Ditto for private vars moved into TextTrackPrivateInterface (same as in LoadableTextTrackImpl)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418332</commentid>
    <comment_count>8</comment_count>
      <attachid>96650</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-06-09 15:02:28 -0700</bug_when>
    <thetext>Created attachment 96650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418334</commentid>
    <comment_count>9</comment_count>
      <attachid>92597</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-06-09 15:03:44 -0700</bug_when>
    <thetext>Comment on attachment 92597
Patch

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

&gt;&gt;&gt; Source/WebCore/WebCore.gypi:3002
&gt;&gt;&gt; +            &apos;html/LoadableTextTrackImpl.h&apos;,
&gt;&gt; 
&gt;&gt; Is this code chromium specific? I could not conclude from the information that I found in this bug.
&gt;&gt; If it is not then you will need to add this files to all the build systems. We have many of them! :)
&gt; 
&gt; Track is not chromium-specific. I&apos;ll chat with annacc to determine which other files I will update!

I think I&apos;ve added all new files to existing build systems, but would certainly appreciate a double-check :).

&gt;&gt; Source/WebCore/html/CueIndex.cpp:40
&gt;&gt; +}
&gt; 
&gt; Is this implementation temporary? If so, please add a FIXME comment.
&gt; 
&gt; Ditto for the rest of the methods in this file.

Done.

&gt;&gt; Source/WebCore/html/CueIndex.h:47
&gt;&gt; +    void remove(TextTrackCue*);
&gt; 
&gt; Can you use constant references instead of mutable pointers?

Yes, I think you are right, TextTrackCueList will have ownership of the TextTrackCues, so const ref makes the most sense here.

&gt;&gt; Source/WebCore/html/LoadableTextTrack.cpp:45
&gt;&gt; +}
&gt; 
&gt; FIXME?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418335</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-09 15:05:30 -0700</bug_when>
    <thetext>Attachment 96650 did not pass style-queue:

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

Source/WebCore/platform/track/CueParserPrivate.h:49:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/TextTrackPrivate.h:41:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422670</commentid>
    <comment_count>11</comment_count>
      <attachid>96650</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-06-17 09:54:40 -0700</bug_when>
    <thetext>Comment on attachment 96650
Patch

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

r=me with the minor cleanup suggested.

&gt; Source/WebCore/ChangeLog:28
&gt; +        (WebCore::CueSet::difference):
&gt; +        (WebCore::CueSet::unionSet):
&gt; +        (WebCore::CueSet::add):
&gt; +        (WebCore::CueSet::contains):
&gt; +        (WebCore::CueSet::remove):
&gt; +        (WebCore::CueSet::isEmpty):
&gt; +        (WebCore::CueSet::size):

There is no need to include the names of all of the new methods, just listing the files is enough (as long as there are no comments).

&gt; Source/WebCore/html/CueIndex.cpp:40
&gt; +    // FIXME(annacc/vrk): Implement.

All FIXMEs should have bug numbers rather than irc nicks, here and throughout the rest of the patch.


&gt; Source/WebCore/html/CueIndex.cpp:54
&gt; +void CueSet::add(const TextTrackCue&amp; cue)
&gt; +{
&gt; +    // FIXME(annacc/vrk): Implement.
&gt; +    UNUSED_PARAM(cue);
&gt; +}

Because &quot;cue&quot; can never be used, you can leave out the parameter name instead of using UNUSED_PARAM here and throughout the rest of the patch.


&gt; Source/WebCore/html/CueIndex.h:44
&gt; +    CueSet unionSet(const CueSet&amp; other) const;

You don&apos;t have &quot;Set&quot; or &quot;Cue&quot; in the other method names, so this might be better as just &quot;union&quot;?


&gt; Source/WebCore/html/CueIndex.h:61
&gt; +    // Returns set of cues visible at a time in seconds.
&gt; +    CueSet getVisibleCues(double time) const;

I don&apos;t think &quot;get&quot; is necessary, maybe &quot;visibleCuesAtTime()&quot;? This will also allow you to leave out the parameter name here.


&gt; Source/WebCore/html/MutableTextTrackImpl.cpp:65
&gt; +String MutableTextTrackImpl::kind() const
&gt; +{
&gt; +    return m_kind;
&gt; +}

MutableTextTrackImpl and LoadableTextTrackImpl have almost exactly the same right now. Is it worth factoring the common code into a shared base class?


&gt; Source/WebCore/html/TextTrack.cpp:50
&gt; +    virtual String kind() const { return &quot;&quot;; }
&gt; +    virtual String label() const { return &quot;&quot;; }
&gt; +    virtual String language() const { return &quot;&quot;; }

You can use emptyString() instead of &quot;&quot;.


&gt; Source/WebCore/html/TextTrack.cpp:101
&gt; +void TextTrack::setMode(unsigned short mode)
&gt; +{
&gt; +    m_private-&gt;setMode(static_cast&lt;Mode&gt;(mode));
&gt; +}

It doesn&apos;t look like the spec says what to do if the mode is set to an invalid value, but we should at least clamp to SHOWING, and it may be worth logging an error message as well.

&gt; Source/WebCore/html/TextTrackCue.cpp:85
&gt; +String TextTrackCue::getCueAsSource()
&gt; +{
&gt; +    // FIXME(annacc/vrk): Implement.
&gt; +    return &quot;&quot;;
&gt; +}

Use emptyString() instead of &quot;&quot;.


&gt; Source/WebCore/html/TextTrackCue.h:74
&gt; +    bool m_pauseOnExit;
&gt; +
&gt; +    bool m_isActive;
&gt; +    TextTrack* m_track;

Putting all of the bools at the end of the class can allow the compiler to make the structure slightly smaller.


&gt; Source/WebCore/loader/CueLoader.h:55
&gt; +    // Transfers ownership of currently loaded cues into outCues.
&gt; +    virtual void fetchNewestCues(Vector&lt;TextTrackCue*&gt;&amp; cues) = 0;

Your comment now has the wrong parameter name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422887</commentid>
    <comment_count>12</comment_count>
      <attachid>97653</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-06-17 14:32:41 -0700</bug_when>
    <thetext>Created attachment 97653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422888</commentid>
    <comment_count>13</comment_count>
      <attachid>96650</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-06-17 14:33:13 -0700</bug_when>
    <thetext>Comment on attachment 96650
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:28
&gt;&gt; +        (WebCore::CueSet::size):
&gt; 
&gt; There is no need to include the names of all of the new methods, just listing the files is enough (as long as there are no comments).

Done.

&gt;&gt; Source/WebCore/html/CueIndex.cpp:40
&gt;&gt; +    // FIXME(annacc/vrk): Implement.
&gt; 
&gt; All FIXMEs should have bug numbers rather than irc nicks, here and throughout the rest of the patch.

Done.

&gt;&gt; Source/WebCore/html/CueIndex.cpp:54
&gt;&gt; +}
&gt; 
&gt; Because &quot;cue&quot; can never be used, you can leave out the parameter name instead of using UNUSED_PARAM here and throughout the rest of the patch.

Done.

&gt;&gt; Source/WebCore/html/CueIndex.h:44
&gt;&gt; +    CueSet unionSet(const CueSet&amp; other) const;
&gt; 
&gt; You don&apos;t have &quot;Set&quot; or &quot;Cue&quot; in the other method names, so this might be better as just &quot;union&quot;?

&quot;union&quot; is unfortunately a C keyword.

&gt;&gt; Source/WebCore/html/CueIndex.h:61
&gt;&gt; +    CueSet getVisibleCues(double time) const;
&gt; 
&gt; I don&apos;t think &quot;get&quot; is necessary, maybe &quot;visibleCuesAtTime()&quot;? This will also allow you to leave out the parameter name here.

Done.

&gt;&gt; Source/WebCore/html/MutableTextTrackImpl.cpp:65
&gt;&gt; +}
&gt; 
&gt; MutableTextTrackImpl and LoadableTextTrackImpl have almost exactly the same right now. Is it worth factoring the common code into a shared base class?

I totally agree!  Done.

&gt;&gt; Source/WebCore/html/TextTrack.cpp:50
&gt;&gt; +    virtual String language() const { return &quot;&quot;; }
&gt; 
&gt; You can use emptyString() instead of &quot;&quot;.

Done.

&gt;&gt; Source/WebCore/html/TextTrack.cpp:101
&gt;&gt; +}
&gt; 
&gt; It doesn&apos;t look like the spec says what to do if the mode is set to an invalid value, but we should at least clamp to SHOWING, and it may be worth logging an error message as well.

Done.  I followed 4.8.10.12.5 Text track API: &quot;...On setting, if the new value is not either 0, 1, or 2, the user agent must throw an INVALID_ACCESS_ERR exception.&quot;

&gt;&gt; Source/WebCore/html/TextTrackCue.h:74
&gt;&gt; +    TextTrack* m_track;
&gt; 
&gt; Putting all of the bools at the end of the class can allow the compiler to make the structure slightly smaller.

Neat.  Done.

&gt;&gt; Source/WebCore/loader/CueLoader.h:55
&gt;&gt; +    virtual void fetchNewestCues(Vector&lt;TextTrackCue*&gt;&amp; cues) = 0;
&gt; 
&gt; Your comment now has the wrong parameter name.

Oops, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422946</commentid>
    <comment_count>14</comment_count>
      <attachid>97653</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-06-17 16:24:43 -0700</bug_when>
    <thetext>Comment on attachment 97653
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422952</commentid>
    <comment_count>15</comment_count>
      <attachid>97667</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-06-17 16:40:07 -0700</bug_when>
    <thetext>Created attachment 97667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422954</commentid>
    <comment_count>16</comment_count>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-06-17 16:42:22 -0700</bug_when>
    <thetext>Adding an updated patch because previous one wouldn&apos;t apply.

No changes other than update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422955</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-17 16:42:34 -0700</bug_when>
    <thetext>Attachment 97667 did not pass style-queue:

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

Source/WebCore/platform/track/CueParserPrivate.h:49:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/html/TextTrackPrivate.h:41:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422966</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-06-17 17:19:02 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Attachment 97667 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
&gt; 
&gt; Source/WebCore/platform/track/CueParserPrivate.h:49:  More than one command on the same line  [whitespace/newline] [4]
&gt; Source/WebCore/html/TextTrackPrivate.h:41:  More than one command on the same line  [whitespace/newline] [4]
&gt; Total errors found: 2 in 29 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Do these need to be fixed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422974</commentid>
    <comment_count>19</comment_count>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-06-17 17:25:31 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; Attachment 97667 [details] [details] did not pass style-queue:
&gt; &gt; 
&gt; &gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
&gt; &gt; 
&gt; &gt; Source/WebCore/platform/track/CueParserPrivate.h:49:  More than one command on the same line  [whitespace/newline] [4]
&gt; &gt; Source/WebCore/html/TextTrackPrivate.h:41:  More than one command on the same line  [whitespace/newline] [4]
&gt; &gt; Total errors found: 2 in 29 files
&gt; &gt; 
&gt; &gt; 
&gt; &gt; If any of these errors are false positives, please file a bug against check-webkit-style.
&gt; 
&gt; Do these need to be fixed?

I don&apos;t think so.  They are the:
WTF_MAKE_NONCOPYABLE(CueParserPrivateInterface); WTF_MAKE_FAST_ALLOCATED;
and I consistently see those together on the same line in other WebKit files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423028</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-06-17 19:52:04 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; &gt; 
&gt; &gt; &gt; If any of these errors are false positives, please file a bug against check-webkit-style.
&gt; &gt; 
&gt; &gt; Do these need to be fixed?
&gt; 
&gt; I don&apos;t think so.  They are the:
&gt; WTF_MAKE_NONCOPYABLE(CueParserPrivateInterface); WTF_MAKE_FAST_ALLOCATED;
&gt; and I consistently see those together on the same line in other WebKit files.

Why don&apos;t you file a bug against check-webkit-style?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423030</commentid>
    <comment_count>21</comment_count>
      <attachid>97667</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-06-17 19:58:39 -0700</bug_when>
    <thetext>Comment on attachment 97667
Patch

Marking r+ but not cq+ because it is Friday night and this patch touches all of the build projects, which is often a recipe for build breakage, and I don&apos;t see annac on irc. Feel free to ping me if you are around and I missed you, or you can have someone else cq+ it if I am not around when you are.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423041</commentid>
    <comment_count>22</comment_count>
      <attachid>97667</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-17 21:57:16 -0700</bug_when>
    <thetext>Comment on attachment 97667
Patch

Clearing flags on attachment: 97667

Committed r89186: &lt;http://trac.webkit.org/changeset/89186&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423042</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-17 21:57:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92597</attachid>
            <date>2011-05-06 10:10:22 -0700</date>
            <delta_ts>2011-06-09 15:03:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60379-20110506101021.patch</filename>
            <type>text/plain</type>
            <size>69064</size>
            <attacher name="Victoria Kirst">vrk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU5NTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjNzMwNjMzOGI0Y2Q4NzEy
Y2RjYWU5ZDZkYmZiMmNlOWM3MTg5MmJmLi44ODc2N2Y0ZDkyZTllZjkxYTdjM2FmZmUyYTZlM2Qx
NDM2ZmY3ZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ0IEBACisyMDExLTA1LTA2ICBWaWN0
b3JpYSBLaXJzdCAgPHZya0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIGluaXRpYWwgaW50ZXJmYWNlcyBhbmQgc3R1
YnMgZm9yIHRyYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MDM3OQorCisgICAgICAgIFRoaXMgbWFya3MgdGhlIGZpcnN0IHBhdGNoIG9mIGEgc2Vy
aWVzIHRvIGltcGxlbWVudCBvdXQtb2YtYmFuZAorICAgICAgICA8dHJhY2s+IHN1cHBvcnQgaW4g
V2ViS2l0LiBUaGlzIHBhdGNoIGFkZHMgc29tZSBvZiB0aGUgY29yZSBoZWFkZXIgZmlsZXMKKyAg
ICAgICAgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgc3R1YiAuY3BwIGZpbGVzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyBiZWNhdXNlIGZlYXR1cmUgaXMgaGlkZGVuIGJlaGluZCBWSURFT19UUkFD
SyBmZWF0dXJlCisgICAgICAgIGRlZmluZSwgd2hpY2ggaXMgdHVybmVkIG9mZi4KKworICAgICAg
ICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBodG1sL0N1ZUluZGV4LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDdWVT
ZXQ6OmRpZmZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3VlU2V0Ojp1bmlvblNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDdWVTZXQ6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpDdWVTZXQ6
OmNvbnRhaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkN1ZVNldDo6cmVtb3ZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1ZVNldDo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpDdWVTZXQ6OnNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VlSW5kZXg6OnRha2VOZXdDdWVzRnJvbSk6CisgICAg
ICAgIChXZWJDb3JlOjpDdWVJbmRleDo6cmVtb3ZlQ3Vlc0Zyb21JbmRleCk6CisgICAgICAgIChX
ZWJDb3JlOjpDdWVJbmRleDo6Z2V0VmlzaWJsZUN1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vl
SW5kZXg6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpDdWVJbmRleDo6cmVtb3ZlKToKKyAgICAg
ICAgKiBodG1sL0N1ZUluZGV4Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VlU2V0OjpD
dWVTZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VlU2V0Ojp+Q3VlU2V0KToKKyAgICAgICAgKiBo
dG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMb2Fk
YWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TG9h
ZGFibGVUZXh0VHJhY2s6On5Mb2FkYWJsZVRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpM
b2FkYWJsZVRleHRUcmFjazo6bG9hZCk6CisgICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFj
ay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjpjcmVhdGUp
OgorICAgICAgICAqIGh0bWwvTG9hZGFibGVUZXh0VHJhY2tJbXBsLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFja0ltcGw6OkxvYWRhYmxlVGV4dFRyYWNrSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFja0ltcGw6On5Mb2FkYWJsZVRl
eHRUcmFja0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2tJbXBsOjpr
aW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrSW1wbDo6bGFiZWwpOgor
ICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2tJbXBsOjpsYW5ndWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFja0ltcGw6OnJlYWR5U3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2tJbXBsOjptb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkxvYWRhYmxlVGV4dFRyYWNrSW1wbDo6c2V0TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpM
b2FkYWJsZVRleHRUcmFja0ltcGw6OmN1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVU
ZXh0VHJhY2tJbXBsOjphY3RpdmVDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4
dFRyYWNrSW1wbDo6cG9wTmV3ZXN0Q3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRl
eHRUcmFja0ltcGw6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2tJ
bXBsOjpuZXdDdWVzTG9hZGVkKToKKyAgICAgICAgKiBodG1sL0xvYWRhYmxlVGV4dFRyYWNrSW1w
bC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrSW1wbDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBodG1sL011dGFibGVUZXh0VHJhY2suY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok11dGFibGVUZXh0VHJhY2s6Ok11dGFibGVUZXh0VHJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6TXV0YWJsZVRleHRUcmFjazo6YWRkQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok11dGFibGVUZXh0VHJhY2s6OnJlbW92ZUN1ZSk6CisgICAgICAgICogaHRtbC9NdXRhYmxlVGV4
dFRyYWNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVRleHRUcmFjazo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVUZXh0VHJhY2s6On5NdXRhYmxlVGV4dFRy
YWNrKToKKyAgICAgICAgKiBodG1sL011dGFibGVUZXh0VHJhY2tJbXBsLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpNdXRhYmxlVGV4dFRyYWNrSW1wbDo6TXV0YWJsZVRleHRUcmFja0lt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVRleHRUcmFja0ltcGw6On5NdXRhYmxlVGV4
dFRyYWNrSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlVGV4dFRyYWNrSW1wbDo6YWRk
Q3VlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVUZXh0VHJhY2tJbXBsOjpyZW1vdmVDdWUp
OgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVRleHRUcmFja0ltcGw6OmtpbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6TXV0YWJsZVRleHRUcmFja0ltcGw6OmxhYmVsKToKKyAgICAgICAgKFdlYkNv
cmU6Ok11dGFibGVUZXh0VHJhY2tJbXBsOjpsYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpN
dXRhYmxlVGV4dFRyYWNrSW1wbDo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRh
YmxlVGV4dFRyYWNrSW1wbDo6bW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlVGV4dFRy
YWNrSW1wbDo6c2V0TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlVGV4dFRyYWNrSW1w
bDo6Y3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlVGV4dFRyYWNrSW1wbDo6YWN0aXZl
Q3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlVGV4dFRyYWNrSW1wbDo6bmV3Q3Vlc0xv
YWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlVGV4dFRyYWNrSW1wbDo6cG9wTmV3ZXN0
Q3Vlcyk6CisgICAgICAgICogaHRtbC9NdXRhYmxlVGV4dFRyYWNrSW1wbC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok11dGFibGVUZXh0VHJhY2tJbXBsOjpjcmVhdGUpOgorICAgICAgICAq
IGh0bWwvVGV4dFRyYWNrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OlRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6On5UZXh0VHJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpraW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFjazo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpsYW5ndWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrOjptb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c2V0
TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmN1ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrOjphY3RpdmVDdWVzKToKKyAgICAgICAgKiBodG1sL1RleHRUcmFjay5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0NsaWVudDo6flRleHRUcmFja0Ns
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDbGllbnQ6OnRleHRUcmFja1JlYWR5
U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0NsaWVudDo6dGV4dFRy
YWNrTW9kZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp0ZXh0
VHJhY2tDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y3JlYXRlKToKKyAg
ICAgICAgKiBodG1sL1RleHRUcmFja0N1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
Q3VlOjp+VGV4dFRyYWNrQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6dHJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpzZXRUcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmlkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0N1ZTo6c3RhcnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6ZW5kVGlt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OnBhdXNlT25FeGl0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6ZGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0N1ZTo6c25hcFRvTGluZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
Q3VlOjpsaW5lUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjp0ZXh0
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpzaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6YWxpZ25tZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0N1ZTo6Z2V0Q3VlQXNTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrQ3VlOjpnZXRDdWVBc0hUTUwpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpp
c0FjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OnNldElzQWN0aXZlKToK
KyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0N1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZUxpc3Qu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUxpc3Q6OlRleHRUcmFj
a0N1ZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6Z2V0Q3VlQnlJ
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjphcHBlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6cmVtb3ZlKToKKyAgICAgICAgKiBodG1sL1Rl
eHRUcmFja0N1ZUxpc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVM
aXN0OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNrUHJpdmF0ZS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1ByaXZhdGVJbnRlcmZhY2U6OlRleHRUcmFja1By
aXZhdGVJbnRlcmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUHJpdmF0ZUludGVy
ZmFjZTo6flRleHRUcmFja1ByaXZhdGVJbnRlcmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrUHJpdmF0ZUludGVyZmFjZTo6bG9hZCk6CisgICAgICAgICogbG9hZGVyL0N1ZUxvYWRl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q3VlTG9hZGVyOjpzZXRDdWVMb2FkZXJD
bGllbnQpOgorICAgICAgICAqIGxvYWRlci9DdWVMb2FkZXIuaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpD
dWVQYXJzZXI6OkN1ZVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDdWVQYXJzZXI6On5DdWVQ
YXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3VlUGFyc2VyOjpsb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1ZVBhcnNlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vl
UGFyc2VyOjpkZXBsZXRlUGFyc2VkQ3Vlcyk6CisgICAgICAgICogcGxhdGZvcm0vdHJhY2svQ3Vl
UGFyc2VyLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3RyYWNrL0N1ZVBhcnNlclByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDdWVQYXJzZXJQcml2YXRlSW50ZXJmYWNl
Ojp+Q3VlUGFyc2VyUHJpdmF0ZUludGVyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDdWVQYXJz
ZXJQcml2YXRlSW50ZXJmYWNlOjpDdWVQYXJzZXJQcml2YXRlSW50ZXJmYWNlKToKKwogMjAxMS0w
NS0wNiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5n
eXAKaW5kZXggNzBiODBkMWExYmUyZTJmOTQyYzExMzk4MzYyNmFkMzBjZDg1ODkxNi4uNzQ0YTQy
ZTQ0YjFhNGE5YmNlZGIyZTQ4ZDRmOGU1NzI4NTVjZjEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXAKQEAgLTE5Miw2ICsxOTIsNyBAQAogICAgICAgJy4uL3BsYXRmb3Jt
L3NxbCcsCiAgICAgICAnLi4vcGxhdGZvcm0vdGV4dCcsCiAgICAgICAnLi4vcGxhdGZvcm0vdGV4
dC90cmFuc2NvZGVyJywKKyAgICAgICcuLi9wbGF0Zm9ybS90cmFjaycsCiAgICAgICAnLi4vcGx1
Z2lucycsCiAgICAgICAnLi4vcGx1Z2lucy9jaHJvbWl1bScsCiAgICAgICAnLi4vcmVuZGVyaW5n
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1MDFhNzZkODQxNDRlMTZhZTdjODhlM2UxYzY4MThiNjBm
MzA4Zjc3Li4wOWRiNjlkZDRjZjVlM2Y1MGU0MGRjNzQ3ODM0ZDI5ZDM2ZTMwYThkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC0yODAzLDYgKzI4MDMsOCBAQAogICAgICAgICAgICAgJ2h0bWwvQ29sbGVj
dGlvbkNhY2hlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9Db2xvcklucHV0VHlwZS5jcHAnLAog
ICAgICAgICAgICAgJ2h0bWwvQ29sb3JJbnB1dFR5cGUuaCcsCisgICAgICAgICAgICAnaHRtbC9D
dWVJbmRleC5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvQ3VlSW5kZXguaCcsCiAgICAgICAgICAg
ICAnaHRtbC9ET01Gb3JtRGF0YS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvRE9NRm9ybURhdGEu
aCcsCiAgICAgICAgICAgICAnaHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5jcHAnLApAQCAtMjk5
NCw5ICsyOTk2LDE3IEBACiAgICAgICAgICAgICAnaHRtbC9Jc0luZGV4SW5wdXRUeXBlLmgnLAog
ICAgICAgICAgICAgJ2h0bWwvTGFiZWxzTm9kZUxpc3QuY3BwJywKICAgICAgICAgICAgICdodG1s
L0xhYmVsc05vZGVMaXN0LmgnLAorICAgICAgICAgICAgJ2h0bWwvTG9hZGFibGVUZXh0VHJhY2su
Y3BwJywKKyAgICAgICAgICAgICdodG1sL0xvYWRhYmxlVGV4dFRyYWNrLmgnLAorICAgICAgICAg
ICAgJ2h0bWwvTG9hZGFibGVUZXh0VHJhY2tJbXBsLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9M
b2FkYWJsZVRleHRUcmFja0ltcGwuaCcsCiAgICAgICAgICAgICAnaHRtbC9NZWRpYURvY3VtZW50
LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9NZWRpYURvY3VtZW50LmgnLAogICAgICAgICAgICAg
J2h0bWwvTWVkaWFFcnJvci5oJywKKyAgICAgICAgICAgICdodG1sL011dGFibGVUZXh0VHJhY2su
Y3BwJywKKyAgICAgICAgICAgICdodG1sL011dGFibGVUZXh0VHJhY2suaCcsCisgICAgICAgICAg
ICAnaHRtbC9NdXRhYmxlVGV4dFRyYWNrSW1wbC5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvTXV0
YWJsZVRleHRUcmFja0ltcGwuaCcsCiAgICAgICAgICAgICAnaHRtbC9Nb250aElucHV0VHlwZS5j
cHAnLAogICAgICAgICAgICAgJ2h0bWwvTW9udGhJbnB1dFR5cGUuaCcsCiAgICAgICAgICAgICAn
aHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwJywKQEAgLTMwMjYsNiArMzAzNiwxMyBAQAogICAgICAg
ICAgICAgJ2h0bWwvVGV4dElucHV0VHlwZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvVGV4dElu
cHV0VHlwZS5oJywKICAgICAgICAgICAgICdodG1sL1RleHRNZXRyaWNzLmgnLAorICAgICAgICAg
ICAgJ2h0bWwvVGV4dFRyYWNrLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9UZXh0VHJhY2suaCcs
CisgICAgICAgICAgICAnaHRtbC9UZXh0VHJhY2tDdWUuY3BwJywKKyAgICAgICAgICAgICdodG1s
L1RleHRUcmFja0N1ZS5oJywKKyAgICAgICAgICAgICdodG1sL1RleHRUcmFja0N1ZUxpc3QuY3Bw
JywKKyAgICAgICAgICAgICdodG1sL1RleHRUcmFja0N1ZUxpc3QuaCcsCisgICAgICAgICAgICAn
aHRtbC9UZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlLmgnLAogICAgICAgICAgICAgJ2h0bWwvVGlt
ZUlucHV0VHlwZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvVGltZUlucHV0VHlwZS5oJywKICAg
ICAgICAgICAgICdodG1sL1RpbWVSYW5nZXMuY3BwJywKQEAgLTMyODMsNiArMzMwMCw4IEBACiAg
ICAgICAgICAgICAnbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAnLAogICAgICAg
ICAgICAgJ2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCcsCiAgICAgICAgICAgICAn
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwJywKKyAgICAgICAgICAg
ICdsb2FkZXIvQ3VlTG9hZGVyLmNwcCcsCisgICAgICAgICAgICAnbG9hZGVyL0N1ZUxvYWRlci5o
JywKICAgICAgICAgICAgICdsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwJywKICAgICAgICAgICAg
ICdsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCcsCiAgICAgICAgICAgICAnbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oJywKQEAgLTQ5NjcsNiArNDk4Niw5IEBACiAg
ICAgICAgICAgICAncGxhdGZvcm0vdGV4dC93aW5jZS9UZXh0QnJlYWtJdGVyYXRvcldpbkNFLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC93aW5jZS9UZXh0Q29kZWNXaW5DRS5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvd2luY2UvVGV4dENvZGVjV2luQ0UuaCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyLmNwcCcsCisgICAgICAgICAgICAn
cGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RyYWNr
L0N1ZVBhcnNlclByaXZhdGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vd2luL0JTdHJpbmcu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS93aW4vQlN0cmluZy5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS93aW4vQml0bWFwSW5mby5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9DdWVJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1ZUluZGV4LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMDc3OTg2MjQxZjBkNTFhMDE2M2UwYTZmYzViZmIwNWNmZGZlNmVkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdWVJbmRleC5jcHAKQEAgLTAsMCAr
MSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCisKKyNpbmNsdWRlICJDdWVJbmRleC5oIgorCisjaW5jbHVkZSAiVGV4dFRyYWNr
Q3VlLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0N1ZVNldCBDdWVTZXQ6OmRpZmZlcmVuY2UoY29uc3QgQ3VlU2V0JiBvdGhlcikgY29u
c3QKK3sKKyAgICByZXR1cm4gQ3VlU2V0KCk7Cit9CisKK0N1ZVNldCBDdWVTZXQ6OnVuaW9uU2V0
KGNvbnN0IEN1ZVNldCYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIEN1ZVNldCgpOworfQor
Cit2b2lkIEN1ZVNldDo6YWRkKFRleHRUcmFja0N1ZSogY3VlKQoreworfQorCitib29sIEN1ZVNl
dDo6Y29udGFpbnMoVGV4dFRyYWNrQ3VlKiBjdWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCit2b2lkIEN1ZVNldDo6cmVtb3ZlKFRleHRUcmFja0N1ZSogY3VlKQoreworfQorCiti
b29sIEN1ZVNldDo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitp
bnQgQ3VlU2V0OjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBDdWVJ
bmRleDo6dGFrZU5ld0N1ZXNGcm9tKEN1ZUxvYWRlciogbG9hZGVyKQoreworfQorCit2b2lkIEN1
ZUluZGV4OjpyZW1vdmVDdWVzRnJvbUluZGV4KGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqIGN1ZUxp
c3QpCit7Cit9CisKK0N1ZVNldCBDdWVJbmRleDo6Z2V0VmlzaWJsZUN1ZXMoZG91YmxlIHRpbWUp
IGNvbnN0Cit7CisgICAgcmV0dXJuIEN1ZVNldCgpOworfQorCit2b2lkIEN1ZUluZGV4OjphZGQo
VGV4dFRyYWNrQ3VlKiBjdWUpCit7Cit9CisKK3ZvaWQgQ3VlSW5kZXg6OnJlbW92ZShUZXh0VHJh
Y2tDdWUqIGN1ZSkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VlSW5kZXguaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ3VlSW5kZXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTliMTQxYTNmZTJiOWJjZDlhMzU3YjY0ZDI2
YTYwOWJkMTM3YzY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdWVJ
bmRleC5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDdWVJbmRleF9oCisj
ZGVmaW5lIEN1ZUluZGV4X2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUg
IkN1ZUxvYWRlci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgVGV4dFRyYWNrQ3VlOworY2xhc3MgVGV4dFRyYWNrQ3VlTGlzdDsKKwor
Y2xhc3MgQ3VlU2V0IHsKK3B1YmxpYzoKKyAgICBDdWVTZXQoKSB7IH0KKyAgICB+Q3VlU2V0KCkg
eyB9CisgICAgQ3VlU2V0IGRpZmZlcmVuY2UoY29uc3QgQ3VlU2V0JiBvdGhlcikgY29uc3Q7Cisg
ICAgQ3VlU2V0IHVuaW9uU2V0KGNvbnN0IEN1ZVNldCYgb3RoZXIpIGNvbnN0OworICAgIHZvaWQg
YWRkKFRleHRUcmFja0N1ZSopOworICAgIGJvb2wgY29udGFpbnMoVGV4dFRyYWNrQ3VlKikgY29u
c3Q7CisgICAgdm9pZCByZW1vdmUoVGV4dFRyYWNrQ3VlKik7CisgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3Q7CisgICAgaW50IHNpemUoKSBjb25zdDsKK3ByaXZhdGU6CisgICAgSGFzaFNldDxUZXh0
VHJhY2tDdWUqPiBtX3NldDsKK307CisKK2NsYXNzIEN1ZUluZGV4IDogcHVibGljIEN1ZUxvYWRl
ckNsaWVudCB7CitwdWJsaWM6CisgICAgLy8gQ3VlTG9hZGVyQ2xpZW50IG1ldGhvZHMuCisgICAg
dm9pZCB0YWtlTmV3Q3Vlc0Zyb20oQ3VlTG9hZGVyKik7CisgICAgdm9pZCByZW1vdmVDdWVzRnJv
bUluZGV4KGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKTsKKworICAgIC8vIFJldHVybnMgc2V0IG9m
IGN1ZXMgdmlzaWJsZSBhdCBhIHRpbWUgaW4gc2Vjb25kcy4KKyAgICBDdWVTZXQgZ2V0VmlzaWJs
ZUN1ZXMoZG91YmxlIHRpbWUpIGNvbnN0OworICAgIHZvaWQgYWRkKFRleHRUcmFja0N1ZSopOwor
ICAgIHZvaWQgcmVtb3ZlKFRleHRUcmFja0N1ZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9M
b2FkYWJsZVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRy
YWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41MTFmY2VhNGE0YjdiM2UyZjU4ZWIyYjBlYjA3ZWI4MmZlZjRk
MDk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRU
cmFjay5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJMb2FkYWJsZVRleHRUcmFj
ay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0xvYWRhYmxlVGV4dFRyYWNrOjpMb2FkYWJs
ZVRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wg
aXNEZWZhdWx0KQorICAgIDogVGV4dFRyYWNrKGNvbnRleHQpCit7Cit9CisKK0xvYWRhYmxlVGV4
dFRyYWNrOjp+TG9hZGFibGVUZXh0VHJhY2soKQoreworfQorCit2b2lkIExvYWRhYmxlVGV4dFRy
YWNrOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRl
eHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmVhYzlhZDE3NjY5ODRkYjE3OTU3OWNhNzQzMzM0ZWM3ZWU4MmEzNDUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmgKQEAgLTAs
MCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTG9hZGFibGVUZXh0VHJhY2tfaAorI2RlZmlu
ZSBMb2FkYWJsZVRleHRUcmFja19oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNs
dWRlICJMb2FkYWJsZVRleHRUcmFja0ltcGwuaCIKKyNpbmNsdWRlICJQYXNzUmVmUHRyLmgiCisj
aW5jbHVkZSAiVGV4dFRyYWNrLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2Ns
YXNzIExvYWRhYmxlVGV4dFRyYWNrIDogcHVibGljIFRleHRUcmFjayB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8TG9hZGFibGVUZXh0VHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMb2FkYWJsZVRleHRUcmFjayhjb250ZXh0LCBraW5kLCBs
YWJlbCwgbGFuZ3VhZ2UsIGlzRGVmYXVsdCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5Mb2FkYWJs
ZVRleHRUcmFjaygpOworCisgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYgdXJsKTsKKworcHJp
dmF0ZToKKyAgICBMb2FkYWJsZVRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1
YWdlLCBib29sIGlzRGVmYXVsdCk7CisKK307Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4
dFRyYWNrSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrSW1w
bC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzQ5ZWM0ZWFhZDhmNzcwNjFmMjFhN2E3MTQ4MTgyOTMyNDU1Zjhm
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJh
Y2tJbXBsLmNwcApAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJMb2FkYWJsZVRleHRU
cmFja0ltcGwuaCIKKworI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitMb2FkYWJsZVRleHRUcmFja0ltcGw6OkxvYWRhYmxlVGV4dFRyYWNrSW1w
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNv
bnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0
KQorICAgIDogbV9raW5kKGtpbmQpCisgICAgLCBtX2xhYmVsKGxhYmVsKQorICAgICwgbV9sYW5n
dWFnZShsYW5ndWFnZSkKK3sKK30KKworTG9hZGFibGVUZXh0VHJhY2tJbXBsOjp+TG9hZGFibGVU
ZXh0VHJhY2tJbXBsKCkKK3sKK30KKworU3RyaW5nIExvYWRhYmxlVGV4dFRyYWNrSW1wbDo6a2lu
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fa2luZDsKK30KKworU3RyaW5nIExvYWRhYmxlVGV4
dFRyYWNrSW1wbDo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBtX2xhYmVsOworfQorCitT
dHJpbmcgTG9hZGFibGVUZXh0VHJhY2tJbXBsOjpsYW5ndWFnZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fbGFuZ3VhZ2U7Cit9CisKK1RleHRUcmFjazo6UmVhZHlTdGF0ZSBMb2FkYWJsZVRleHRU
cmFja0ltcGw6OnJlYWR5U3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlYWR5U3RhdGU7
Cit9CisKK1RleHRUcmFjazo6TW9kZSBMb2FkYWJsZVRleHRUcmFja0ltcGw6Om1vZGUoKSBjb25z
dAoreworICAgIHJldHVybiBtX21vZGU7Cit9CisKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2tJbXBs
OjpzZXRNb2RlKFRleHRUcmFjazo6TW9kZSBtb2RlKQoreworfQorCitUZXh0VHJhY2tDdWVMaXN0
KiBMb2FkYWJsZVRleHRUcmFja0ltcGw6OmN1ZXMoKSBjb25zdAoreworICAgIHJldHVybiAwOwor
fQorCitUZXh0VHJhY2tDdWVMaXN0KiBMb2FkYWJsZVRleHRUcmFja0ltcGw6OmFjdGl2ZUN1ZXMo
KSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCit2b2lkIExvYWRhYmxlVGV4dFRyYWNrSW1w
bDo6cG9wTmV3ZXN0Q3VlcyhWZWN0b3I8VGV4dFRyYWNrQ3VlKj4mIG91dHB1dCkKK3sKK30KKwor
dm9pZCBMb2FkYWJsZVRleHRUcmFja0ltcGw6OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwpCit7Cit9
CisKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2tJbXBsOjpuZXdDdWVzTG9hZGVkKCkKK3sKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2tJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xv
YWRhYmxlVGV4dFRyYWNrSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyOTNjYWU4MTY2NjZmYjRhYTE2MGU1
Y2I5MmM2YzMyMTVmNTQ2MjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0xvYWRhYmxlVGV4dFRyYWNrSW1wbC5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIExvYWRhYmxlVGV4dFRyYWNrSW1wbF9oCisjZGVmaW5lIExvYWRhYmxlVGV4dFRyYWNrSW1w
bF9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJDdWVMb2FkZXIuaCIK
KyNpbmNsdWRlICJDdWVQYXJzZXIuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tQcml2YXRlLmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNz
IFRleHRUcmFjazsKK2NsYXNzIFRleHRUcmFja0N1ZTsKK2NsYXNzIFRleHRUcmFja0N1ZUxpc3Q7
CisKK2NsYXNzIExvYWRhYmxlVGV4dFRyYWNrSW1wbCA6IHB1YmxpYyBUZXh0VHJhY2tQcml2YXRl
SW50ZXJmYWNlLCBwdWJsaWMgQ3VlTG9hZGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093
blB0cjxMb2FkYWJsZVRleHRUcmFja0ltcGw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0
IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBMb2FkYWJsZVRleHRUcmFja0ltcGwoY29udGV4dCwga2luZCwgbGFiZWws
IGxhbmd1YWdlLCBpc0RlZmF1bHQpKTsKKyAgICB9CisgICAgdmlydHVhbCB+TG9hZGFibGVUZXh0
VHJhY2tJbXBsKCk7CisKKyAgICAvLyBUZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlIG1ldGhvZHMK
KyAgICB2aXJ0dWFsIFN0cmluZyBraW5kKCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgbGFi
ZWwoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBsYW5ndWFnZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgVGV4dFRyYWNrOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFRleHRUcmFjazo6TW9kZSBtb2RlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldE1v
ZGUoVGV4dFRyYWNrOjpNb2RlKTsKKyAgICB2aXJ0dWFsIFRleHRUcmFja0N1ZUxpc3QqIGN1ZXMo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIFRleHRUcmFja0N1ZUxpc3QqIGFjdGl2ZUN1ZXMoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIHVybCk7CisKKyAgICAvLyBD
dWVMb2FkZXIgaW50ZXJmYWNlCisgICAgdmlydHVhbCB2b2lkIG5ld0N1ZXNMb2FkZWQoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcG9wTmV3ZXN0Q3VlcyhWZWN0b3I8VGV4dFRyYWNrQ3VlKj4mKTsKKwor
cHJpdmF0ZToKKyAgICBMb2FkYWJsZVRleHRUcmFja0ltcGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5n
JiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpOworCisgICAgU3RyaW5nIG1fa2luZDsKKyAgICBT
dHJpbmcgbV9sYWJlbDsKKyAgICBTdHJpbmcgbV9sYW5ndWFnZTsKKyAgICBUZXh0VHJhY2s6OlJl
YWR5U3RhdGUgbV9yZWFkeVN0YXRlOworICAgIFRleHRUcmFjazo6TW9kZSBtX21vZGU7CisKKyAg
ICBDdWVQYXJzZXIgbV9wYXJzZXI7CisgICAgUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IG1fY3Vl
czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFjay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL011dGFibGVUZXh0VHJhY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0ZDE5MjU3ZjE0
YjVkYmJiMjFjN2EzMTIwMjQwNGM1MDlmMzhkMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL011dGFibGVUZXh0VHJhY2suY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisj
aW5jbHVkZSAiTXV0YWJsZVRleHRUcmFjay5oIgorCisjaW5jbHVkZSAiTXV0YWJsZVRleHRUcmFj
a0ltcGwuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNdXRhYmxlVGV4dFRyYWNrOjpNdXRh
YmxlVGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKKyAg
ICA6IFRleHRUcmFjayhjb250ZXh0KQoreworfQorCit2b2lkIE11dGFibGVUZXh0VHJhY2s6OmFk
ZEN1ZShUZXh0VHJhY2tDdWUqIGN1ZSkKK3sKK30KK3ZvaWQgTXV0YWJsZVRleHRUcmFjazo6cmVt
b3ZlQ3VlKFRleHRUcmFja0N1ZSogY3VlKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NdXRhYmxlVGV4dFRy
YWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL011dGFibGVUZXh0VHJhY2suaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZjMyNTdhYTg0NzEwYjJiYWNlZjA2MzFkODgzZGVhMmJhYTY0NzY5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NdXRhYmxlVGV4dFRyYWNrLmgKQEAgLTAsMCArMSw1
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIE11dGFibGVUZXh0VHJhY2tfaAorI2RlZmluZSBNdXRh
YmxlVGV4dFRyYWNrX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlRl
eHRUcmFjay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRleHRUcmFja0N1ZTsK
KworY2xhc3MgTXV0YWJsZVRleHRUcmFjayA6IHB1YmxpYyBUZXh0VHJhY2sgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGFibGVUZXh0VHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYg
bGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE11dGFibGVUZXh0VHJhY2soY29udGV4dCwga2luZCwgbGFiZWwsIGxhbmd1YWdl
KSk7CisgICAgfQorICAgIHZpcnR1YWwgfk11dGFibGVUZXh0VHJhY2soKSB7IH0KKworICAgIHZv
aWQgYWRkQ3VlKFRleHRUcmFja0N1ZSopOworICAgIHZvaWQgcmVtb3ZlQ3VlKFRleHRUcmFja0N1
ZSopOworcHJpdmF0ZToKKyAgICBNdXRhYmxlVGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmlu
ZyYgbGFuZ3VhZ2UpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NdXRhYmxlVGV4dFRyYWNrSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL011dGFibGVUZXh0VHJhY2tJbXBsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNmQyMTIzMmQyMjk1MWRhZjQ1Mzc1NDZmOWU4NGY4Y2VkMjQxMjA3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NdXRhYmxlVGV4dFRyYWNrSW1wbC5jcHAK
QEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiTXV0YWJsZVRleHRUcmFja0ltcGwuaCIK
KworI2luY2x1ZGUgIlRleHRUcmFjay5oIgorI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgorI2lu
Y2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNdXRh
YmxlVGV4dFRyYWNrSW1wbDo6TXV0YWJsZVRleHRUcmFja0ltcGwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBj
b25zdCBTdHJpbmcmIGxhbmd1YWdlKQorICAgIDogbV9raW5kKGtpbmQpCisgICAgLCBtX2xhYmVs
KGxhYmVsKQorICAgICwgbV9sYW5ndWFnZShsYW5ndWFnZSkKK3sKK30KKworTXV0YWJsZVRleHRU
cmFja0ltcGw6On5NdXRhYmxlVGV4dFRyYWNrSW1wbCgpCit7Cit9CisKK3ZvaWQgTXV0YWJsZVRl
eHRUcmFja0ltcGw6OmFkZEN1ZShUZXh0VHJhY2tDdWUqIGN1ZSkKK3sKK30KKwordm9pZCBNdXRh
YmxlVGV4dFRyYWNrSW1wbDo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSogY3VlKQoreworfQorCitT
dHJpbmcgTXV0YWJsZVRleHRUcmFja0ltcGw6OmtpbmQoKSBjb25zdAoreworICAgIHJldHVybiBt
X2tpbmQ7Cit9CisKK1N0cmluZyBNdXRhYmxlVGV4dFRyYWNrSW1wbDo6bGFiZWwoKSBjb25zdAor
eworICAgIHJldHVybiBtX2xhYmVsOworfQorCitTdHJpbmcgTXV0YWJsZVRleHRUcmFja0ltcGw6
Omxhbmd1YWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYW5ndWFnZTsKK30KKworVGV4dFRy
YWNrOjpSZWFkeVN0YXRlIE11dGFibGVUZXh0VHJhY2tJbXBsOjpyZWFkeVN0YXRlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9yZWFkeVN0YXRlOworfQorCitUZXh0VHJhY2s6Ok1vZGUgTXV0YWJs
ZVRleHRUcmFja0ltcGw6Om1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX21vZGU7Cit9CisK
K3ZvaWQgTXV0YWJsZVRleHRUcmFja0ltcGw6OnNldE1vZGUoVGV4dFRyYWNrOjpNb2RlIG1vZGUp
Cit7Cit9CisKK1RleHRUcmFja0N1ZUxpc3QqIE11dGFibGVUZXh0VHJhY2tJbXBsOjpjdWVzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKworVGV4dFRyYWNrQ3VlTGlzdCogTXV0YWJsZVRl
eHRUcmFja0ltcGw6OmFjdGl2ZUN1ZXMoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCit2
b2lkIE11dGFibGVUZXh0VHJhY2tJbXBsOjpuZXdDdWVzTG9hZGVkKCkKK3sKK30KKwordm9pZCBN
dXRhYmxlVGV4dFRyYWNrSW1wbDo6cG9wTmV3ZXN0Q3VlcyhWZWN0b3I8VGV4dFRyYWNrQ3VlKj4m
IG91dHB1dCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFja0ltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFja0ltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWJlMmMx
MjliYjg2ZDkzNzI0NTA2NmIzMTVjN2EyZDFkNzUxYmY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NdXRhYmxlVGV4dFRyYWNrSW1wbC5oCkBAIC0wLDAgKzEsODQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE11dGFibGVUZXh0VHJhY2tJbXBsX2gKKyNkZWZpbmUgTXV0YWJs
ZVRleHRUcmFja0ltcGxfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAi
Q3VlTG9hZGVyLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEN1ZUxvYWRlckNsaWVudDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CitjbGFzcyBUZXh0VHJhY2s7CitjbGFzcyBUZXh0VHJhY2tDdWU7CitjbGFzcyBUZXh0
VHJhY2tDdWVMaXN0OworCitjbGFzcyBNdXRhYmxlVGV4dFRyYWNrSW1wbCA6IHB1YmxpYyBUZXh0
VHJhY2tQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQ3VlTG9hZGVyIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc093blB0cjxNdXRhYmxlVGV4dFRyYWNrSW1wbD4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgTXV0YWJsZVRleHRUcmFja0ltcGwoY29udGV4dCwga2luZCwgbGFiZWwsIGxhbmd1
YWdlKSk7CisgICAgfQorICAgIHZpcnR1YWwgfk11dGFibGVUZXh0VHJhY2tJbXBsKCk7CisKKyAg
ICAvLyBUZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlIG1ldGhvZHMKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBraW5kKCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgbGFiZWwoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIFN0cmluZyBsYW5ndWFnZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVGV4dFRyYWNrOjpS
ZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFRleHRUcmFjazo6TW9k
ZSBtb2RlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldE1vZGUoVGV4dFRyYWNrOjpNb2Rl
KTsKKyAgICB2aXJ0dWFsIFRleHRUcmFja0N1ZUxpc3QqIGN1ZXMoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFRleHRUcmFja0N1ZUxpc3QqIGFjdGl2ZUN1ZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgYWRkQ3VlKFRleHRUcmFja0N1ZSopOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDdWUoVGV4
dFRyYWNrQ3VlKik7CisKKyAgICAvLyBDdWVMb2FkZXIgaW50ZXJmYWNlCisgICAgdmlydHVhbCB2
b2lkIG5ld0N1ZXNMb2FkZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9wTmV3ZXN0Q3VlcyhWZWN0
b3I8VGV4dFRyYWNrQ3VlKj4mKTsKKworcHJpdmF0ZToKKyAgICBNdXRhYmxlVGV4dFRyYWNrSW1w
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKTsKKworICAgIFN0cmluZyBtX2tpbmQ7
CisgICAgU3RyaW5nIG1fbGFiZWw7CisgICAgU3RyaW5nIG1fbGFuZ3VhZ2U7CisgICAgVGV4dFRy
YWNrOjpSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKKyAgICBUZXh0VHJhY2s6Ok1vZGUgbV9tb2Rl
OworCisgICAgUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IG1fY3VlczsKKyAgICBWZWN0b3I8VGV4
dFRyYWNrQ3VlKj4gbV9uZXdlc3RDdWVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJh
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIx
YTFkMjJhYmQ2ZTIwZWVjODBlYzdiMzg5MDRhYWQ2NGQ1Yzk4MDEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5jcHAKQEAgLTAsMCArMSw5MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJU
ZXh0VHJhY2suaCIKKworI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKKyNpbmNsdWRlICJU
ZXh0VHJhY2tQcml2YXRlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dFRyYWNrOjpU
ZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKK30KKworVGV4dFRy
YWNrOjp+VGV4dFRyYWNrKCkKK3sKK30KKworU3RyaW5nIFRleHRUcmFjazo6a2luZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+a2luZCgpOworfQorCitTdHJpbmcgVGV4dFRyYWNr
OjpsYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bGFiZWwoKTsKK30KKwor
U3RyaW5nIFRleHRUcmFjazo6bGFuZ3VhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZh
dGUtPmxhbmd1YWdlKCk7Cit9CisKK1RleHRUcmFjazo6UmVhZHlTdGF0ZSBUZXh0VHJhY2s6OnJl
YWR5U3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKTsK
K30KKworVGV4dFRyYWNrOjpNb2RlIFRleHRUcmFjazo6bW9kZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+bW9kZSgpOworfQorCit2b2lkIFRleHRUcmFjazo6c2V0TW9kZSh1bnNp
Z25lZCBzaG9ydCBtb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKK30KKworVGV4dFRyYWNrQ3Vl
TGlzdCogVGV4dFRyYWNrOjpjdWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKKworfQorCitU
ZXh0VHJhY2tDdWVMaXN0KiBUZXh0VHJhY2s6OmFjdGl2ZUN1ZXMoKSBjb25zdAoreworICAgIHJl
dHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dFRyYWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI2NTBhZmRjODA4ZmQ3NjM4MTg2MjBjYjJlYmVmMzdh
ODQzZjRjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNr
LmgKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGV4dFRyYWNrX2gKKyNkZWZp
bmUgVGV4dFRyYWNrX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBUZXh0
VHJhY2s7CitjbGFzcyBUZXh0VHJhY2tDdWVMaXN0OworY2xhc3MgVGV4dFRyYWNrUHJpdmF0ZUlu
dGVyZmFjZTsKKworY2xhc3MgVGV4dFRyYWNrQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5UZXh0VHJhY2tDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVhZHlT
dGF0ZUNoYW5nZWQoVGV4dFRyYWNrKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01v
ZGVDaGFuZ2VkKFRleHRUcmFjayopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tDcmVh
dGVkKFRleHRUcmFjayopIHsgfQorfTsKKworY2xhc3MgVGV4dFRyYWNrIDogcHVibGljIFJlZkNv
dW50ZWQ8VGV4dFRyYWNrPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRy
YWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dFRyYWNrKGNvbnRleHQpKTsKKyAgICB9CisgICAg
dmlydHVhbCB+VGV4dFRyYWNrKCk7CisKKyAgICBTdHJpbmcga2luZCgpIGNvbnN0OworICAgIFN0
cmluZyBsYWJlbCgpIGNvbnN0OworICAgIFN0cmluZyBsYW5ndWFnZSgpIGNvbnN0OworCisgICAg
ZW51bSBSZWFkeVN0YXRlIHsgTk9ORSwgTE9BRElORywgTE9BREVELCBFUlJPUiB9OworICAgIFJl
YWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OworCisgICAgZW51bSBNb2RlIHsgT0ZGLCBISURE
RU4sIFNIT1dJTkcgfTsKKyAgICBNb2RlIG1vZGUoKSBjb25zdDsKKyAgICB2b2lkIHNldE1vZGUo
dW5zaWduZWQgc2hvcnQsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIFRleHRUcmFja0N1ZUxpc3Qq
IGN1ZXMoKSBjb25zdDsKKyAgICBUZXh0VHJhY2tDdWVMaXN0KiBhY3RpdmVDdWVzKCkgY29uc3Q7
CisKKyAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKCk7CisgICAgdm9pZCBtb2RlQ2hhbmdlZCgp
OworCitwcm90ZWN0ZWQ6CisgICAgVGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsK
KyAgICBPd25QdHI8VGV4dFRyYWNrUHJpdmF0ZUludGVyZmFjZT4gbV9wcml2YXRlOworCit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRUcmFja0N1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc1MzMzMmM5MWM5YmY2ZTAyZWU4NGNlYjdh
MGViMTY2M2M5YmI5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4
dFRyYWNrQ3VlLmNwcApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJUZXh0VHJhY2tD
dWUuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbmNsdWRlICJUZXh0VHJh
Y2suaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGlkLCBjb25z
dCBkb3VibGUgc3RhcnQsIGNvbnN0IGRvdWJsZSBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVudCwg
Y29uc3QgU3RyaW5nJiBzZXR0aW5ncywgY29uc3QgYm9vbCBwYXVzZU9uRXhpdCkKKyAgICA6IG1f
aWQoaWQpCisgICAgLCBtX3N0YXJ0VGltZShzdGFydCkKKyAgICAsIG1fZW5kVGltZShlbmQpCisg
ICAgLCBtX2NvbnRlbnQoY29udGVudCkKKyAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCisgICAg
LCBtX3BhdXNlT25FeGl0KHBhdXNlT25FeGl0KQoreworfQorCitUZXh0VHJhY2tDdWU6On5UZXh0
VHJhY2tDdWUoKQoreworfQorCitUZXh0VHJhY2sqIFRleHRUcmFja0N1ZTo6dHJhY2soKSBjb25z
dAoreworICAgIHJldHVybiBtX3RyYWNrOworfQorCit2b2lkIFRleHRUcmFja0N1ZTo6c2V0VHJh
Y2soVGV4dFRyYWNrKiB0cmFjaykKK3sKK30KKworU3RyaW5nIFRleHRUcmFja0N1ZTo6aWQoKSBj
b25zdAoreworICAgIHJldHVybiBtX2lkOworfQorCitkb3VibGUgVGV4dFRyYWNrQ3VlOjpzdGFy
dFRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YXJ0VGltZTsKK30KKworZG91YmxlIFRl
eHRUcmFja0N1ZTo6ZW5kVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZW5kVGltZTsKK30K
KworYm9vbCBUZXh0VHJhY2tDdWU6OnBhdXNlT25FeGl0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9wYXVzZU9uRXhpdDsKK30KKworU3RyaW5nIFRleHRUcmFja0N1ZTo6ZGlyZWN0aW9uKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gIiI7Cit9CisKK2Jvb2wgVGV4dFRyYWNrQ3VlOjpzbmFwVG9MaW5l
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitsb25nIFRleHRUcmFja0N1ZTo6
bGluZVBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gLTE7Cit9CisKK2xvbmcgVGV4dFRy
YWNrQ3VlOjp0ZXh0UG9zaXRpb24oKSBjb25zdAoreworICAgIHJldHVybiAtMTsKK30KKworbG9u
ZyBUZXh0VHJhY2tDdWU6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiAtMTsKK30KKworU3Ry
aW5nIFRleHRUcmFja0N1ZTo6YWxpZ25tZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIiI7Cit9
CisKK1N0cmluZyBUZXh0VHJhY2tDdWU6OmdldEN1ZUFzU291cmNlKCkKK3sKKyAgICByZXR1cm4g
IiI7Cit9CisKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gVGV4dFRyYWNrQ3VlOjpnZXRD
dWVBc0hUTUwoKQoreworICAgIHJldHVybiBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoMCk7Cit9
CisKK2Jvb2wgVGV4dFRyYWNrQ3VlOjppc0FjdGl2ZSgpCit7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIFRleHRUcmFja0N1ZTo6c2V0SXNBY3RpdmUoYm9vbCBhY3RpdmUpCit7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRUcmFja0N1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tD
dWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMzk4NzYzYmQ4YzExYzA2YjA3ZWIyYzAwZmVhZjI5MzdmNmY1MjA5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuaApA
QCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUZXh0VHJhY2tDdWVfaAorI2RlZmlu
ZSBUZXh0VHJhY2tDdWVfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAi
VGV4dFRyYWNrLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50RnJh
Z21lbnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgVGV4dFRyYWNrOwor
CitjbGFzcyBUZXh0VHJhY2tDdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgc3Rh
cnQsIGRvdWJsZSBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgY29uc3QgU3RyaW5nJiBzZXR0
aW5ncywgYm9vbCBwYXVzZU9uRXhpdCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgVGV4dFRyYWNrQ3VlKGNvbnRleHQsIGlkLCBzdGFydCwgZW5kLCBjb250ZW50LCBzZXR0aW5n
cywgcGF1c2VPbkV4aXQpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5UZXh0VHJhY2tDdWUoKTsK
KworICAgIFRleHRUcmFjayogdHJhY2soKSBjb25zdDsKKyAgICB2b2lkIHNldFRyYWNrKFRleHRU
cmFjayopOworCisgICAgU3RyaW5nIGlkKCkgY29uc3Q7CisgICAgZG91YmxlIHN0YXJ0VGltZSgp
IGNvbnN0OworICAgIGRvdWJsZSBlbmRUaW1lKCkgY29uc3Q7CisgICAgYm9vbCBwYXVzZU9uRXhp
dCgpIGNvbnN0OworCisgICAgU3RyaW5nIGRpcmVjdGlvbigpIGNvbnN0OworICAgIGJvb2wgc25h
cFRvTGluZXMoKSBjb25zdDsKKyAgICBsb25nIGxpbmVQb3NpdGlvbigpIGNvbnN0OworICAgIGxv
bmcgdGV4dFBvc2l0aW9uKCkgY29uc3Q7CisgICAgbG9uZyBzaXplKCkgY29uc3Q7CisgICAgU3Ry
aW5nIGFsaWdubWVudCgpIGNvbnN0OworCisgICAgU3RyaW5nIGdldEN1ZUFzU291cmNlKCk7Cisg
ICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBnZXRDdWVBc0hUTUwoKTsKKworICAgIGJv
b2wgaXNBY3RpdmUoKTsKKyAgICB2b2lkIHNldElzQWN0aXZlKGJvb2wpOworCitwcml2YXRlOgor
ICAgIFRleHRUcmFja0N1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBp
ZCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0
IFN0cmluZyYgc2V0dGluZ3MsIGJvb2wgcGF1c2VPbkV4aXQpOworCisgICAgU3RyaW5nIG1faWQ7
CisgICAgZG91YmxlIG1fc3RhcnRUaW1lOworICAgIGRvdWJsZSBtX2VuZFRpbWU7CisgICAgU3Ry
aW5nIG1fY29udGVudDsKKyAgICBTdHJpbmcgbV9zZXR0aW5nczsKKyAgICBib29sIG1fcGF1c2VP
bkV4aXQ7CisgICAgYm9vbCBtX2lzQWN0aXZlOworCisgICAgVGV4dFRyYWNrKiBtX3RyYWNrOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODYwOGIxOTM4OTg3NTFj
ZmY0ZjkzYzA3OWFlOGMzOGQyYzE4MjlmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNs
dWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dFRy
YWNrQ3VlTGlzdDo6VGV4dFRyYWNrQ3VlTGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQoreworfQorCitUZXh0VHJhY2tDdWUqIFRleHRUcmFja0N1ZUxpc3Q6OmdldEN1ZUJ5SWQo
Y29uc3QgU3RyaW5nJiBpZCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBUZXh0
VHJhY2tDdWVMaXN0OjphcHBlbmQoVmVjdG9yPFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBu
ZXdDdWVzKQoreworfQorCit2b2lkIFRleHRUcmFja0N1ZUxpc3Q6OmFwcGVuZChjb25zdCBQYXNz
UmVmUHRyPFRleHRUcmFja0N1ZT4mIGN1ZSkKK3sKK30KKwordm9pZCBUZXh0VHJhY2tDdWVMaXN0
OjpyZW1vdmUoY29uc3QgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+JiBjdWUpCit7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNr
Q3VlTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4M2JlOWIyMTAzZTYwZGEwZWNjOWU0OGJjMWI4YWY5NWQ2
MjYzZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1
ZUxpc3QuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUZXh0VHJhY2tDdWVM
aXN0X2gKKyNkZWZpbmUgVGV4dFRyYWNrQ3VlTGlzdF9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisKKyNpbmNsdWRlICJQYXNzUmVmUHRyLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgi
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKwor
Y2xhc3MgVGV4dFRyYWNrQ3VlTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHRUcmFja0N1ZUxp
c3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVGV4dFRyYWNrQ3VlTGlzdChjb250ZXh0KSk7CisgICAgfQorCisg
ICAgdW5zaWduZWQgbG9uZyBsZW5ndGgoKSBjb25zdDsKKyAgICBUZXh0VHJhY2tDdWUqIGdldEN1
ZUJ5SWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgVGV4dFRyYWNrQ3VlTGlzdCogYWN0aXZl
Q3VlcygpOworCisgICAgdm9pZCBhcHBlbmQoY29uc3QgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+
Jik7CisgICAgdm9pZCBhcHBlbmQoVmVjdG9yPFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+Jik7
CisgICAgdm9pZCByZW1vdmUoY29uc3QgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+Jik7CisKK3By
aXZhdGU6CisgICAgVGV4dFRyYWNrQ3VlTGlzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cisg
ICAgVmVjdG9yIDxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+IG1fbGlzdDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dFRyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJh
Y2tQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWU1NmRkMjlhNDFhNWU4OTQyNjVlZjkzZjM5ZDM5ZDQ2
NDQ1YWRlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNr
UHJpdmF0ZS5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRleHRUcmFja1By
aXZhdGVfaAorI2RlZmluZSBUZXh0VHJhY2tQcml2YXRlX2gKKworI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKworI2luY2x1ZGUgIlRleHRUcmFjay5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQ3VlTG9hZGVyQ2xpZW50OworY2xhc3MgVGV4dFRyYWNrQ3VlTGlzdDsKK2NsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIFRleHRUcmFja1ByaXZhdGVJbnRlcmZhY2Ug
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHRUcmFja1ByaXZhdGVJbnRlcmZhY2UpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBUZXh0VHJhY2tQcml2YXRlSW50
ZXJmYWNlKCkgeyB9CisgICAgdmlydHVhbCB+VGV4dFRyYWNrUHJpdmF0ZUludGVyZmFjZSgpIHsg
fQorCisgICAgdmlydHVhbCBTdHJpbmcga2luZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0
cmluZyBsYWJlbCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBsYW5ndWFnZSgpIGNv
bnN0ID0gMDsKKworICAgIHZpcnR1YWwgVGV4dFRyYWNrOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUo
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFRleHRUcmFjazo6TW9kZSBtb2RlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRNb2RlKFRleHRUcmFjazo6TW9kZSkgPSAwOworCisg
ICAgdmlydHVhbCBUZXh0VHJhY2tDdWVMaXN0KiBjdWVzKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgVGV4dFRyYWNrQ3VlTGlzdCogYWN0aXZlQ3VlcygpIGNvbnN0ID0gMDsKKworICAgIC8vIFRo
aXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIG92ZXJyaWRkZW4gYnkgdHJhY2tzIHRoYXQgbG9hZCBj
dWUgZGF0YQorICAgIC8vIGZyb20gYSBVUkwuCisgICAgdmlydHVhbCB2b2lkIGxvYWQoY29uc3Qg
U3RyaW5nJiB1cmwpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1ZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWZmMDc2
OWZmMjU4YjcwZjYwY2MxYmJiMDc3NmJlNDdjMjBkYzhhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0N1ZUxvYWRlci5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNp
bmNsdWRlICJDdWVMb2FkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEN1ZUxv
YWRlcjo6c2V0Q3VlTG9hZGVyQ2xpZW50KEN1ZUxvYWRlckNsaWVudCogY2xpZW50KQoreworICAg
IG1fY2xpZW50ID0gY2xpZW50OworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0N1ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1ZUxv
YWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZiNDE3Y2NiZjY3NTk0M2Q5MjczNjUwYWEwN2UwYTQ1M2NmYTM5
ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmgK
QEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEN1ZUxvYWRlcl9oCisjZGVmaW5l
IEN1ZUxvYWRlcl9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ3VlTG9hZGVyOworY2xh
c3MgVGV4dFRyYWNrQ3VlOworY2xhc3MgVGV4dFRyYWNrQ3VlTGlzdDsKKworLy8gTGlzdGVuZXIg
dG8gQ3VlTG9hZGVyLgorY2xhc3MgQ3VlTG9hZGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBR
dWVyaWVzIEN1ZUxvYWRlciBmb3IgbmV3ZXN0IGN1ZXMuCisgICAgdmlydHVhbCB2b2lkIHRha2VO
ZXdDdWVzRnJvbShDdWVMb2FkZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUN1ZXNG
cm9tSW5kZXgoY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopID0gMDsKK307CisKK2NsYXNzIEN1ZUxv
YWRlciB7CitwdWJsaWM6CisgICAgdm9pZCBzZXRDdWVMb2FkZXJDbGllbnQoQ3VlTG9hZGVyQ2xp
ZW50Kik7CisKKyAgICAvLyBJbmZvcm1zIGNsaWVudCB0aGF0IG5ldyBjdWVzIGhhdmUgYmVlbiBs
b2FkZWQuCisgICAgdmlydHVhbCB2b2lkIG5ld0N1ZXNMb2FkZWQoKSA9IDA7CisKKyAgICAvLyBU
cmFuc2ZlcnMgb3duZXJzaGlwIG9mIGN1cnJlbnRseSBsb2FkZWQgY3VlcyBpbnRvIG91dEN1ZXMu
CisgICAgdmlydHVhbCB2b2lkIHBvcE5ld2VzdEN1ZXMoVmVjdG9yPFRleHRUcmFja0N1ZSo+JiBv
dXRDdWVzKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBDdWVMb2FkZXJDbGllbnQqIG1fY2xpZW50
OworfTsKKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Ry
YWNrL0N1ZVBhcnNlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVjNTc5ZDIxYWQ4ZmEyNmEwNDFkZDRjYzYx
YzBkMWRhZmYxMjc4ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RyYWNrL0N1ZVBhcnNlci5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJDdWVQYXJzZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitDdWVQYXJzZXI6OkN1ZVBhcnNlcigpCit7Cit9CisKK0N1
ZVBhcnNlcjo6fkN1ZVBhcnNlcigpCit7Cit9CisKK3ZvaWQgQ3VlUGFyc2VyOjpsb2FkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsKQoreworfQorCit2
b2lkIEN1ZVBhcnNlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikK
K3sKK30KKwordm9pZCBDdWVQYXJzZXI6OmRlcGxldGVQYXJzZWRDdWVzKFZlY3RvcjxQYXNzUmVm
UHRyPFRleHRUcmFja0N1ZT4gPiYgb3V0cHV0Q3VlcykKK3sKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Ry
YWNrL0N1ZVBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2Vy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzY2ODU5NDdiYWE3ZjIyYzg1MTIwZDMxZDQ2ZTZjZjY4ZDA5MTFiMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RyYWNrL0N1ZVBhcnNl
ci5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDdWVQYXJzZXJfaAorI2RlZmluZSBDdWVQYXJz
ZXJfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQ3VlUGFyc2VyUHJp
dmF0ZS5oIgorI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKKyNpbmNsdWRlICJUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFRl
eHRUcmFja0N1ZTsKKworY2xhc3MgQ3VlUGFyc2VyIDogcHVibGljIFRocmVhZGFibGVMb2FkZXJD
bGllbnQgeworcHVibGljOgorICAgIEN1ZVBhcnNlcigpOworICAgIHZpcnR1YWwgfkN1ZVBhcnNl
cigpOworCisgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudCBtZXRob2RzLgorICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOworCisgICAg
dm9pZCBsb2FkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHVybCk7Cisg
ICAgdm9pZCBkZXBsZXRlUGFyc2VkQ3VlcyhWZWN0b3I8UGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+
ID4mIG91dHB1dEN1ZXMpOworCitwcml2YXRlOgorICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVy
PiBtX2xvYWRlcjsKKyAgICBPd25QdHI8Q3VlUGFyc2VyUHJpdmF0ZUludGVyZmFjZT4gbV9wcml2
YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyUHJpdmF0ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjlkMDhkY2YxZjBiZmY3MzllMzBkZGFjNWFhOWMzOTNlODQxYTkxOWMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90cmFjay9DdWVQYXJzZXJQcml2YXRl
LmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEN1ZVBhcnNlclByaXZhdGVfaAorI2RlZmluZSBD
dWVQYXJzZVByaXZhdGVfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAi
VGV4dFRyYWNrQ3VlLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQ3VlUGFyc2VyUHJpdmF0ZUNsaWVudCB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB2b2lkIG5ld0N1ZXNQYXJzZWQoKSA9IDA7Cit9OworCitjbGFzcyBDdWVQYXJzZXJQcml2
YXRlSW50ZXJmYWNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdWVQYXJzZXJQcml2YXRl
SW50ZXJmYWNlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+Q3VlUGFyc2VyUHJpdmF0ZUludGVyZmFjZSgpIHsgfQorCisgICAgLy8gVHlwZXMgb2YgQ3Vl
UGFyc2VyUHJpdmF0ZUludGVyZmFjZXMgdGhhdCBhcmUgc3VwcG9ydGVkLgorICAgIGVudW0gRm9y
bWF0IHsgV2ViVlRULCBYTUwgfTsKKworICAgIC8vIElucHV0IGRhdGEgdG8gdGhlIHBhcnNlciB0
byBwYXJzZS4KKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VCeXRlcyhjb25zdCBjaGFyKiBieXRlcywg
aW50IGxlbmd0aCkgPSAwOworCisgICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcCBvZiBsYXN0IHBh
cnNlZCBjdWVzIHRvIGNhbGxlci4KKyAgICB2aXJ0dWFsIHZvaWQgZGVwbGV0ZVBhcnNlZEN1ZXMo
VmVjdG9yPFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBvdXRwdXRDdWVzKSA9IDA7CisKK3By
b3RlY3RlZDoKKyAgICBDdWVQYXJzZXJQcml2YXRlSW50ZXJmYWNlKCkgeyB9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96650</attachid>
            <date>2011-06-09 15:02:28 -0700</date>
            <delta_ts>2011-06-17 14:33:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60379-20110609150227.patch</filename>
            <type>text/plain</type>
            <size>89233</size>
            <attacher name="Anna Cavender">annacc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg0NzkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDczNTc0
MGFhNGI0OWZlYjA2YmE5ZjBlZTllYTQwNGI4OWEwYmQzMC4uNzkzOWU5MzM5OTg3NWMyNTA0NDA2
YjFlZjcwMTE2ZTM3ZDVhM2M4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQ2LDYgKzQ2LDcg
QEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9w
bGF0Zm9ybS9zcWwiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvdHJhbnNjb2RlciIKKyAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vdHJhY2siCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsdWdpbnMiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3JlbmRlcmluZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcmVuZGVyaW5nL21h
dGhtbCIKQEAgLTE5NDIsNyArMTk0MywxNyBAQCBFTkRJRigpCiAKIElGIChFTkFCTEVfVklERU9f
VFJBQ0spCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgIGh0bWwvQ3Vl
SW5kZXguY3BwCiAgICAgICAgIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKKyAgICAgICAgaHRt
bC9Mb2FkYWJsZVRleHRUcmFjay5jcHAKKyAgICAgICAgaHRtbC9Mb2FkYWJsZVRleHRUcmFja0lt
cGwuY3BwCisgICAgICAgIGh0bWwvTXV0YWJsZVRleHRUcmFjay5jcHAKKyAgICAgICAgaHRtbC9N
dXRhYmxlVGV4dFRyYWNrSW1wbC5jcHAKKyAgICAgICAgaHRtbC9UZXh0VHJhY2suY3BwCisgICAg
ICAgIGh0bWwvVGV4dFRyYWNrQ3VlLmNwcAorICAgICAgICBodG1sL1RleHRUcmFja0N1ZUxpc3Qu
Y3BwCisgICAgICAgIGxvYWRlci9DdWVMb2FkZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL3RyYWNr
L0N1ZVBhcnNlci5jcHAKICAgICApCiBFTkRJRigpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMjA4ODhlNGI2
NDM5ZGM3MDY1ODY1MzY0MDdjYzY1YjUxODdhNWFhLi5iZDE3YTExNDNjOTBhZWVmYzg4ODYxODhk
NGYxYTA2MDgwNWFhZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUyIEBACisyMDExLTA2LTA5
ICBBbm5hIENhdmVuZGVyICA8YW5uYWNjQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgaW5pdGlhbCBpbnRlcmZhY2Vz
IGFuZCBzdHVicyBmb3IgdHJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYwMzc5CisKKyAgICAgICAgVGhpcyBtYXJrcyB0aGUgZmlyc3QgcGF0Y2gg
b2YgYSBzZXJpZXMgdG8gaW1wbGVtZW50IG91dC1vZi1iYW5kCisgICAgICAgIDx0cmFjaz4gc3Vw
cG9ydCBpbiBXZWJLaXQuIFRoaXMgcGF0Y2ggYWRkcyBzb21lIG9mIHRoZSBjb3JlIGhlYWRlciBm
aWxlcworICAgICAgICBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBzdHViIC5jcHAgZmlsZXMuCisg
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIGZlYXR1cmUgaXMgaGlkZGVuIGJlaGluZCBW
SURFT19UUkFDSyBmZWF0dXJlCisgICAgICAgIGRlZmluZSwgd2hpY2ggaXMgdHVybmVkIG9mZi4K
KyAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJD
b3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcmk6
CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvQ3VlSW5kZXguY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkN1ZVNldDo6ZGlmZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpDdWVT
ZXQ6OnVuaW9uU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1ZVNldDo6YWRkKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1ZVNldDo6Y29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VlU2V0Ojpy
ZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VlU2V0Ojppc0VtcHR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkN1ZVNldDo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdWVJbmRleDo6ZmV0Y2hO
ZXdDdWVzRnJvbUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDdWVJbmRleDo6cmVtb3ZlQ3Vl
c0Zyb21JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDdWVJbmRleDo6Z2V0VmlzaWJsZUN1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VlSW5kZXg6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpD
dWVJbmRleDo6cmVtb3ZlKToKKyAgICAgICAgKiBodG1sL0N1ZUluZGV4Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q3VlU2V0OjpDdWVTZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VlU2V0
Ojp+Q3VlU2V0KToKKyAgICAgICAgKiBodG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6On5Mb2FkYWJsZVRleHRUcmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bG9hZCk6CisgICAgICAg
ICogaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxv
YWRhYmxlVGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvTG9hZGFibGVUZXh0VHJh
Y2tJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFja0lt
cGw6OkxvYWRhYmxlVGV4dFRyYWNrSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRl
eHRUcmFja0ltcGw6On5Mb2FkYWJsZVRleHRUcmFja0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
TG9hZGFibGVUZXh0VHJhY2tJbXBsOjpraW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxl
VGV4dFRyYWNrSW1wbDo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJh
Y2tJbXBsOjpsYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFja0lt
cGw6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2tJbXBs
Ojptb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrSW1wbDo6c2V0TW9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFja0ltcGw6OmN1ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2tJbXBsOjphY3RpdmVDdWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrSW1wbDo6ZmV0Y2hOZXdlc3RDdWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrSW1wbDo6bG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFja0ltcGw6Om5ld0N1ZXNMb2FkZWQpOgorICAgICAgICAq
IGh0bWwvTG9hZGFibGVUZXh0VHJhY2tJbXBsLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TG9hZGFibGVUZXh0VHJhY2tJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvTXV0YWJsZVRl
eHRUcmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVRleHRUcmFjazo6
TXV0YWJsZVRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlVGV4dFRyYWNrOjph
ZGRDdWUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVRleHRUcmFjazo6cmVtb3ZlQ3VlKToK
KyAgICAgICAgKiBodG1sL011dGFibGVUZXh0VHJhY2suaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpNdXRhYmxlVGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJs
ZVRleHRUcmFjazo6fk11dGFibGVUZXh0VHJhY2spOgorICAgICAgICAqIGh0bWwvTXV0YWJsZVRl
eHRUcmFja0ltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVUZXh0VHJh
Y2tJbXBsOjpNdXRhYmxlVGV4dFRyYWNrSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxl
VGV4dFRyYWNrSW1wbDo6fk11dGFibGVUZXh0VHJhY2tJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
Ok11dGFibGVUZXh0VHJhY2tJbXBsOjphZGRDdWUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJs
ZVRleHRUcmFja0ltcGw6OnJlbW92ZUN1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlVGV4
dFRyYWNrSW1wbDo6a2luZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlVGV4dFRyYWNrSW1w
bDo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVRleHRUcmFja0ltcGw6Omxhbmd1
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVUZXh0VHJhY2tJbXBsOjpyZWFkeVN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVUZXh0VHJhY2tJbXBsOjptb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok11dGFibGVUZXh0VHJhY2tJbXBsOjpzZXRNb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok11dGFibGVUZXh0VHJhY2tJbXBsOjpjdWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok11
dGFibGVUZXh0VHJhY2tJbXBsOjphY3RpdmVDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFi
bGVUZXh0VHJhY2tJbXBsOjpuZXdDdWVzTG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFi
bGVUZXh0VHJhY2tJbXBsOjpmZXRjaE5ld2VzdEN1ZXMpOgorICAgICAgICAqIGh0bWwvTXV0YWJs
ZVRleHRUcmFja0ltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlVGV4dFRy
YWNrSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL1RleHRUcmFjay5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TnVsbFRleHRUcmFja1ByaXZhdGU6OmtpbmQpOgorICAgICAgICAo
V2ViQ29yZTo6TnVsbFRleHRUcmFja1ByaXZhdGU6OmxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6
Ok51bGxUZXh0VHJhY2tQcml2YXRlOjpsYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpOdWxs
VGV4dFRyYWNrUHJpdmF0ZTo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOdWxsVGV4
dFRyYWNrUHJpdmF0ZTo6bW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOdWxsVGV4dFRyYWNrUHJp
dmF0ZTo6c2V0TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOdWxsVGV4dFRyYWNrUHJpdmF0ZTo6
Y3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpOdWxsVGV4dFRyYWNrUHJpdmF0ZTo6YWN0aXZlQ3Vl
cyk6CisgICAgICAgIChXZWJDb3JlOjpOdWxsVGV4dFRyYWNrUHJpdmF0ZTo6bG9hZCk6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVOdWxsVGV4dFRyYWNrUHJpdmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2s6OlRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
On5UZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpraW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFjazo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrOjpsYW5ndWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnJlYWR5U3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjptb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFjazo6c2V0TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmN1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjphY3RpdmVDdWVzKToKKyAgICAgICAgKiBo
dG1sL1RleHRUcmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0NsaWVu
dDo6flRleHRUcmFja0NsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDbGllbnQ6
OnRleHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0NsaWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrQ2xpZW50Ojp0ZXh0VHJhY2tDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
azo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrQ3VlOjp+VGV4dFRyYWNrQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja0N1ZTo6dHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpzZXRU
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmlkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFja0N1ZTo6c3RhcnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFja0N1ZTo6ZW5kVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OnBhdXNl
T25FeGl0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Z2V0Q3VlQXNTb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpnZXRDdWVBc0hUTUwpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjppc0FjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2tDdWU6OnNldElzQWN0aXZlKToKKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBodG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0N1ZUxpc3Q6OlRleHRUcmFja0N1ZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrQ3VlTGlzdDo6Z2V0Q3VlQnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJh
Y2tDdWVMaXN0OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6
cmVtb3ZlKToKKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZUxpc3QuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwv
VGV4dFRyYWNrUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1By
aXZhdGVJbnRlcmZhY2U6OlRleHRUcmFja1ByaXZhdGVJbnRlcmZhY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrUHJpdmF0ZUludGVyZmFjZTo6flRleHRUcmFja1ByaXZhdGVJbnRlcmZh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUHJpdmF0ZUludGVyZmFjZTo6bG9hZCk6
CisgICAgICAgICogbG9hZGVyL0N1ZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q3VlTG9hZGVyOjpzZXRDdWVMb2FkZXJDbGllbnQpOgorICAgICAgICAqIGxvYWRlci9DdWVM
b2FkZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDdWVQYXJzZXI6OkN1ZVBhcnNlcik6CisgICAgICAg
IChXZWJDb3JlOjpDdWVQYXJzZXI6On5DdWVQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vl
UGFyc2VyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1ZVBhcnNlcjo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VlUGFyc2VyOjpmZXRjaFBhcnNlZEN1ZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL3RyYWNrL0N1ZVBhcnNlci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS90cmFjay9DdWVQYXJzZXJQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q3VlUGFyc2VyUHJpdmF0ZUludGVyZmFjZTo6fkN1ZVBhcnNlclByaXZhdGVJbnRlcmZhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VlUGFyc2VyUHJpdmF0ZUludGVyZmFjZTo6Q3VlUGFyc2VyUHJp
dmF0ZUludGVyZmFjZSk6CisKIDIwMTEtMDYtMDkgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZy
YWl4QGNvZGVhdXJvcmEub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3Rv
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCA0NjZhNmEwZjgwMDNm
YjgzNjU2NzQ3NDBlOTI0ODE5NzFhZTUxNGZhLi5kZjY0YTlmYzYzMTI5OGUzODQwOTdkNzdmYjNi
Nzc3NjczNjJiZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJD
b3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAt
MjAxLDYgKzIwMSw3IEBACiAgICAgICAnLi4vcGxhdGZvcm0vc3FsJywKICAgICAgICcuLi9wbGF0
Zm9ybS90ZXh0JywKICAgICAgICcuLi9wbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXInLAorICAgICAg
Jy4uL3BsYXRmb3JtL3RyYWNrJywKICAgICAgICcuLi9wbHVnaW5zJywKICAgICAgICcuLi9wbHVn
aW5zL2Nocm9taXVtJywKICAgICAgICcuLi9yZW5kZXJpbmcnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IDc0OTI1ODg5ZThlOGY2NTFkYWM5NDI4OGY0MDk0YTc2ZTA3NTE4YTYuLjA1MGU5NjQzYzAxN2Y4
NmQ4Y2JkNTNmOTM5MjkzZmZlMWU3Y2M4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI4MzksNiAr
MjgzOSw4IEBACiAgICAgICAgICAgICAnaHRtbC9Db2xsZWN0aW9uQ2FjaGUuY3BwJywKICAgICAg
ICAgICAgICdodG1sL0NvbG9ySW5wdXRUeXBlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9Db2xv
cklucHV0VHlwZS5oJywKKyAgICAgICAgICAgICdodG1sL0N1ZUluZGV4LmNwcCcsCisgICAgICAg
ICAgICAnaHRtbC9DdWVJbmRleC5oJywKICAgICAgICAgICAgICdodG1sL0RPTUZvcm1EYXRhLmNw
cCcsCiAgICAgICAgICAgICAnaHRtbC9ET01Gb3JtRGF0YS5oJywKICAgICAgICAgICAgICdodG1s
L0RPTVNldHRhYmxlVG9rZW5MaXN0LmNwcCcsCkBAIC0zMDMwLDkgKzMwMzIsMTcgQEAKICAgICAg
ICAgICAgICdodG1sL0lzSW5kZXhJbnB1dFR5cGUuaCcsCiAgICAgICAgICAgICAnaHRtbC9MYWJl
bHNOb2RlTGlzdC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvTGFiZWxzTm9kZUxpc3QuaCcsCisg
ICAgICAgICAgICAnaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAnLAorICAgICAgICAgICAgJ2h0
bWwvTG9hZGFibGVUZXh0VHJhY2suaCcsCisgICAgICAgICAgICAnaHRtbC9Mb2FkYWJsZVRleHRU
cmFja0ltcGwuY3BwJywKKyAgICAgICAgICAgICdodG1sL0xvYWRhYmxlVGV4dFRyYWNrSW1wbC5o
JywKICAgICAgICAgICAgICdodG1sL01lZGlhRG9jdW1lbnQuY3BwJywKICAgICAgICAgICAgICdo
dG1sL01lZGlhRG9jdW1lbnQuaCcsCiAgICAgICAgICAgICAnaHRtbC9NZWRpYUVycm9yLmgnLAor
ICAgICAgICAgICAgJ2h0bWwvTXV0YWJsZVRleHRUcmFjay5jcHAnLAorICAgICAgICAgICAgJ2h0
bWwvTXV0YWJsZVRleHRUcmFjay5oJywKKyAgICAgICAgICAgICdodG1sL011dGFibGVUZXh0VHJh
Y2tJbXBsLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9NdXRhYmxlVGV4dFRyYWNrSW1wbC5oJywK
ICAgICAgICAgICAgICdodG1sL01vbnRoSW5wdXRUeXBlLmNwcCcsCiAgICAgICAgICAgICAnaHRt
bC9Nb250aElucHV0VHlwZS5oJywKICAgICAgICAgICAgICdodG1sL051bWJlcklucHV0VHlwZS5j
cHAnLApAQCAtMzA2Niw2ICszMDc2LDEzIEBACiAgICAgICAgICAgICAnaHRtbC9UZXh0SW5wdXRU
eXBlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9UZXh0SW5wdXRUeXBlLmgnLAogICAgICAgICAg
ICAgJ2h0bWwvVGV4dE1ldHJpY3MuaCcsCisgICAgICAgICAgICAnaHRtbC9UZXh0VHJhY2suY3Bw
JywKKyAgICAgICAgICAgICdodG1sL1RleHRUcmFjay5oJywKKyAgICAgICAgICAgICdodG1sL1Rl
eHRUcmFja0N1ZS5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvVGV4dFRyYWNrQ3VlLmgnLAorICAg
ICAgICAgICAgJ2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAnLAorICAgICAgICAgICAgJ2h0bWwv
VGV4dFRyYWNrQ3VlTGlzdC5oJywKKyAgICAgICAgICAgICdodG1sL1RleHRUcmFja1ByaXZhdGVJ
bnRlcmZhY2UuaCcsCiAgICAgICAgICAgICAnaHRtbC9UaW1lSW5wdXRUeXBlLmNwcCcsCiAgICAg
ICAgICAgICAnaHRtbC9UaW1lSW5wdXRUeXBlLmgnLAogICAgICAgICAgICAgJ2h0bWwvVGltZVJh
bmdlcy5jcHAnLApAQCAtMzMyNiw2ICszMzQzLDggQEAKICAgICAgICAgICAgICdsb2FkZXIvQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL0Nyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5oJywKICAgICAgICAgICAgICdsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZS5jcHAnLAorICAgICAgICAgICAgJ2xvYWRlci9DdWVMb2FkZXIuY3Bw
JywKKyAgICAgICAgICAgICdsb2FkZXIvQ3VlTG9hZGVyLmgnLAogICAgICAgICAgICAgJ2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmgnLApAQCAtNTAzMiw2ICs1MDUxLDkgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS90
ZXh0L3dpbmNlL1RleHRCcmVha0l0ZXJhdG9yV2luQ0UuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS90ZXh0L3dpbmNlL1RleHRDb2RlY1dpbkNFLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vdGV4dC93aW5jZS9UZXh0Q29kZWNXaW5DRS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS90
cmFjay9DdWVQYXJzZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS90cmFjay9DdWVQYXJz
ZXIuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyUHJpdmF0ZS5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL3dpbi9CU3RyaW5nLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3dpbi9CaXRtYXBJ
bmZvLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJpCmluZGV4IDgwOTI2Yjg2MzAzYjg1M2ZmZDNlNWQ0NDdiMmJm
ZjQ5YTljNzc1Y2QuLjc0YzA4YmY4ZGUwNTZlMTc5NzVmMWRmYTc2ZDRlNDJmZTg4NTY4YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJpCkBAIC0xMDEsNiArMTAxLDcgQEAgV0VCQ09SRV9JTkNMVURFUEFUSCA9IFwK
ICAgICAkJFNPVVJDRV9ESVIvV2ViQ29yZS9wbGF0Zm9ybS9zcWwgXAogICAgICQkU09VUkNFX0RJ
Ui9XZWJDb3JlL3BsYXRmb3JtL3RleHQgXAogICAgICQkU09VUkNFX0RJUi9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvdHJhbnNjb2RlciBcCisgICAgJCRTT1VSQ0VfRElSL1dlYkNvcmUvcGxhdGZvcm0v
dHJhY2sgXAogICAgICQkU09VUkNFX0RJUi9XZWJDb3JlL3BsdWdpbnMgXAogICAgICQkU09VUkNF
X0RJUi9XZWJDb3JlL3JlbmRlcmluZyBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGJmMGVmZjI3NjJkZWFjZGUxZDI1YzM0OTdj
MDAxODI0YzZmMDhmNDAuLjE3NWE1OTI2NWJlYTcxZDYwZGFhYTIyYzRjZjRkNGI5NTY5MzM4YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvCkBAIC0xNjMzLDYgKzE2MzMsNyBAQCBIRUFERVJTICs9IFwKICAgICBo
dG1sL2NhbnZhcy9VaW50OEFycmF5LmggXAogICAgIGh0bWwvQ2xhc3NMaXN0LmggXAogICAgIGh0
bWwvQ29sbGVjdGlvbkNhY2hlLmggXAorICAgIGh0bWwvQ3VlSW5kZXguaCBcCiAgICAgaHRtbC9E
T01Gb3JtRGF0YS5oIFwKICAgICBodG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0LmggXAogICAgIGh0
bWwvRE9NVG9rZW5MaXN0LmggXApAQCAtMTcyMSwxNiArMTcyMiwyNSBAQCBIRUFERVJTICs9IFwK
ICAgICBodG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmggXAogICAgIGh0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5oIFwKICAgICBodG1sL0hUTUxUaXRsZUVsZW1lbnQuaCBcCisgICAgaHRtbC9I
VE1MVHJhY2tFbGVtZW50LmggXAogICAgIGh0bWwvSFRNTFVMaXN0RWxlbWVudC5oIFwKICAgICBo
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBcCiAgICAgaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50
LmggXAogICAgIGh0bWwvSW1hZ2VEYXRhLmggXAogICAgIGh0bWwvSW1hZ2VEb2N1bWVudC5oIFwK
ICAgICBodG1sL0xhYmVsc05vZGVMaXN0LmggXAorICAgIGh0bWwvTG9hZGFibGVUZXh0VHJhY2su
aCBcCisgICAgaHRtbC9Mb2FkYWJsZVRleHRUcmFja0ltcGwuaCBcCiAgICAgaHRtbC9NZWRpYURv
Y3VtZW50LmggXAorICAgIGh0bWwvTXV0YWJsZVRleHRUcmFjay5oIFwKKyAgICBodG1sL011dGFi
bGVUZXh0VHJhY2tJbXBsLmggXAogICAgIGh0bWwvUGx1Z2luRG9jdW1lbnQuaCBcCiAgICAgaHRt
bC9TdGVwUmFuZ2UuaCBcCiAgICAgaHRtbC9UZXh0RG9jdW1lbnQuaCBcCisgICAgaHRtbC9UZXh0
VHJhY2suaCBcCisgICAgaHRtbC9UZXh0VHJhY2tDdWUuaCBcCisgICAgaHRtbC9UZXh0VHJhY2tD
dWVMaXN0LmggXAorICAgIGh0bWwvVGV4dFRyYWNrUHJpdmF0ZS5oIFwKICAgICBodG1sL1RpbWVS
YW5nZXMuaCBcCiAgICAgaHRtbC9WYWxpZGl0eVN0YXRlLmggXAogICAgIGh0bWwvcGFyc2VyL0NT
U1ByZWxvYWRTY2FubmVyLmggXApAQCAtMTgxMiw2ICsxODIyLDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmggXAogICAgIGxvYWRlci9Dcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2wuaCBcCiAgICAgbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2Fj
aGUuaCBcCisgICAgbG9hZGVyL0N1ZUxvYWRlci5oIFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuaCBcCiAgICAgbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggXAogICAgIGxv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBcCkBAIC0yMDg1LDYgKzIwOTYsOCBAQCBI
RUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmggXAogICAgIHBsYXRm
b3JtL1RocmVhZFRpbWVycy5oIFwKICAgICBwbGF0Zm9ybS9UaW1lci5oIFwKKyAgICBwbGF0Zm9y
bS90cmFjay9DdWVQYXJzZXIuaCBcCisgICAgcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyUHJpdmF0
ZS5oIFwKICAgICBwbGF0Zm9ybS9XaWRnZXQuaCBcCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1TdHJh
dGVnaWVzLmggXAogICAgIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzQ2MzM1
NWIxN2YzMWU1ODM1NzEzNWNiMTA3MzM1NzliZmQ4YTdlZS4uYTJmMmVmN2ZmYjJhZGEwZGQ5YjM0
YTRjMDkyMjc2ZDlhYjMzNmVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDE1Nyw2ICs0MTU3LDI4IEBACiAJCUIxMkQyMzZE
MTM1NjAzNEQwMDJBMjhENCAvKiBKU011bHRpcGxlVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxMkQyMzZCMTM1NjAzNEQwMDJBMjhE
NCAvKiBKU011bHRpcGxlVHJhY2tMaXN0LmNwcCAqLzsgfTsKIAkJQjEyRDIzNkUxMzU2MDM0RDAw
MkEyOEQ0IC8qIEpTTXVsdGlwbGVUcmFja0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxMkQyMzZDMTM1NjAzNEQwMDJBMjhENCAvKiBKU011bHRp
cGxlVHJhY2tMaXN0LmggKi87IH07CiAJCUIxODI3NDkzMTM0Q0E0QzEwMEI5OEMyRCAvKiBDYWxs
YmFja0Z1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIxODI3NDkyMTM0Q0E0QzEwMEI5OEMyRCAvKiBDYWxsYmFja0Z1bmN0aW9uLmNwcCAq
LzsgfTsKKwkJQjFBRDRFNUMxM0ExMkEwQjAwODQ2QjI3IC8qIEN1ZUluZGV4LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTRCMTNBMTJBMEIw
MDg0NkIyNyAvKiBDdWVJbmRleC5jcHAgKi87IH07CisJCUIxQUQ0RTVEMTNBMTJBMEIwMDg0NkIy
NyAvKiBDdWVJbmRleC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjFBRDRFNEMxM0ExMkEwQjAwODQ2QjI3IC8qIEN1ZUluZGV4LmggKi87IH07CisJCUIx
QUQ0RTVFMTNBMTJBMEIwMDg0NkIyNyAvKiBMb2FkYWJsZVRleHRUcmFjay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUFENEU0RDEzQTEyQTBCMDA4
NDZCMjcgLyogTG9hZGFibGVUZXh0VHJhY2suY3BwICovOyB9OworCQlCMUFENEU1RjEzQTEyQTBC
MDA4NDZCMjcgLyogTG9hZGFibGVUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTRFMTNBMTJBMEIwMDg0NkIyNyAvKiBMb2FkYWJs
ZVRleHRUcmFjay5oICovOyB9OworCQlCMUFENEU2MDEzQTEyQTBCMDA4NDZCMjcgLyogTG9hZGFi
bGVUZXh0VHJhY2tJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIxQUQ0RTRGMTNBMTJBMEIwMDg0NkIyNyAvKiBMb2FkYWJsZVRleHRUcmFja0lt
cGwuY3BwICovOyB9OworCQlCMUFENEU2MTEzQTEyQTBCMDA4NDZCMjcgLyogTG9hZGFibGVUZXh0
VHJhY2tJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMUFENEU1MDEzQTEyQTBCMDA4NDZCMjcgLyogTG9hZGFibGVUZXh0VHJhY2tJbXBsLmggKi87
IH07CisJCUIxQUQ0RTYyMTNBMTJBMEIwMDg0NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTUxMTNB
MTJBMEIwMDg0NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNrLmNwcCAqLzsgfTsKKwkJQjFBRDRFNjMx
M0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTUyMTNBMTJBMEIwMDg0NkIyNyAvKiBN
dXRhYmxlVGV4dFRyYWNrLmggKi87IH07CisJCUIxQUQ0RTY0MTNBMTJBMEIwMDg0NkIyNyAvKiBN
dXRhYmxlVGV4dFRyYWNrSW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMUFENEU1MzEzQTEyQTBCMDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFj
a0ltcGwuY3BwICovOyB9OworCQlCMUFENEU2NTEzQTEyQTBCMDA4NDZCMjcgLyogTXV0YWJsZVRl
eHRUcmFja0ltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIxQUQ0RTU0MTNBMTJBMEIwMDg0NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNrSW1wbC5oICov
OyB9OworCQlCMUFENEU2NjEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTU1MTNBMTJBMEIw
MDg0NkIyNyAvKiBUZXh0VHJhY2suY3BwICovOyB9OworCQlCMUFENEU2NzEzQTEyQTBCMDA4NDZC
MjcgLyogVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMUFENEU1NjEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrLmggKi87IH07CisJ
CUIxQUQ0RTY4MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNTcxM0ExMkEwQjAwODQ2
QjI3IC8qIFRleHRUcmFja0N1ZS5jcHAgKi87IH07CisJCUIxQUQ0RTY5MTNBMTJBMEIwMDg0NkIy
NyAvKiBUZXh0VHJhY2tDdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIxQUQ0RTU4MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWUuaCAqLzsg
fTsKKwkJQjFBRDRFNkExM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZUxpc3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNTkxM0Ex
MkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZUxpc3QuY3BwICovOyB9OworCQlCMUFENEU2QjEz
QTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNUExM0ExMkEwQjAwODQ2QjI3IC8qIFRl
eHRUcmFja0N1ZUxpc3QuaCAqLzsgfTsKKwkJQjFBRDRFNkMxM0ExMkEwQjAwODQ2QjI3IC8qIFRl
eHRUcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIxQUQ0RTVCMTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tQcml2YXRlLmggKi87
IH07CisJCUIxQUQ0RTczMTNBMTJBNDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNzExM0ExMkE0NjAw
ODQ2QjI3IC8qIEN1ZUxvYWRlci5jcHAgKi87IH07CisJCUIxQUQ0RTc0MTNBMTJBNDYwMDg0NkIy
NyAvKiBDdWVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIxQUQ0RTcyMTNBMTJBNDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuaCAqLzsgfTsKKwkJ
QjFBRDRFN0IxM0ExMkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUFENEU3ODEzQTEyQTcyMDA4NDZCMjcg
LyogQ3VlUGFyc2VyLmNwcCAqLzsgfTsKKwkJQjFBRDRFN0MxM0ExMkE3MjAwODQ2QjI3IC8qIEN1
ZVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjFBRDRFNzkxM0ExMkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlci5oICovOyB9OworCQlCMUFENEU3
RDEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFN0ExM0ExMkE3MjAwODQ2QjI3IC8q
IEN1ZVBhcnNlclByaXZhdGUuaCAqLzsgfTsKIAkJQjFENUVDQjUxMzRCNThEQTAwODdDNzhGIC8q
IENhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIxRDVFQ0I0MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmgg
Ki87IH07CiAJCUIxRTU0NTdBMTM0NjI5MUYwMDkyQTU0NSAvKiBHZW5lcmF0ZWRTdHJlYW0uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1NzEx
MzQ2MjkxRjAwOTJBNTQ1IC8qIEdlbmVyYXRlZFN0cmVhbS5jcHAgKi87IH07CiAJCUIxRTU0NTdC
MTM0NjI5MUYwMDkyQTU0NSAvKiBHZW5lcmF0ZWRTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NTcyMTM0NjI5MUYwMDkyQTU0NSAvKiBH
ZW5lcmF0ZWRTdHJlYW0uaCAqLzsgfTsKQEAgLTEwNTI5LDYgKzEwNTUxLDI4IEBACiAJCUIxMkQy
MzZCMTM1NjAzNEQwMDJBMjhENCAvKiBKU011bHRpcGxlVHJhY2tMaXN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTXVsdGlwbGVUcmFja0xpc3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMTJEMjM2QzEzNTYwMzREMDAyQTI4RDQgLyogSlNN
dWx0aXBsZVRyYWNrTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU011
bHRpcGxlVHJhY2tMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxODI3NDky
MTM0Q0E0QzEwMEI5OEMyRCAvKiBDYWxsYmFja0Z1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxiYWNrRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCMUFENEU0QjEzQTEyQTBCMDA4NDZCMjcgLyogQ3VlSW5kZXguY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ3VlSW5kZXguY3BwOyBwYXRo
ID0gaHRtbC9DdWVJbmRleC5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQjFB
RDRFNEMxM0ExMkEwQjAwODQ2QjI3IC8qIEN1ZUluZGV4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEN1ZUluZGV4Lmg7IHBhdGggPSBodG1sL0N1ZUluZGV4Lmg7IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQjFBRDRFNEQxM0ExMkEwQjAwODQ2QjI3IC8qIExvYWRh
YmxlVGV4dFRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExv
YWRhYmxlVGV4dFRyYWNrLmNwcDsgcGF0aCA9IGh0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwOyBz
b3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUIxQUQ0RTRFMTNBMTJBMEIwMDg0NkIyNyAv
KiBMb2FkYWJsZVRleHRUcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBM
b2FkYWJsZVRleHRUcmFjay5oOyBwYXRoID0gaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oOyBzb3Vy
Y2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUIxQUQ0RTRGMTNBMTJBMEIwMDg0NkIyNyAvKiBM
b2FkYWJsZVRleHRUcmFja0ltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTG9hZGFibGVUZXh0VHJhY2tJbXBsLmNwcDsgcGF0aCA9IGh0bWwvTG9hZGFibGVUZXh0
VHJhY2tJbXBsLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlCMUFENEU1MDEz
QTEyQTBCMDA4NDZCMjcgLyogTG9hZGFibGVUZXh0VHJhY2tJbXBsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IExvYWRhYmxlVGV4dFRyYWNrSW1wbC5oOyBwYXRoID0gaHRtbC9M
b2FkYWJsZVRleHRUcmFja0ltcGwuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlC
MUFENEU1MTEzQTEyQTBCMDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFjay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNdXRhYmxlVGV4dFRyYWNrLmNwcDsgcGF0aCA9
IGh0bWwvTXV0YWJsZVRleHRUcmFjay5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
KwkJQjFBRDRFNTIxM0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTXV0YWJsZVRleHRUcmFjay5oOyBwYXRoID0gaHRt
bC9NdXRhYmxlVGV4dFRyYWNrLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQjFB
RDRFNTMxM0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2tJbXBsLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE11dGFibGVUZXh0VHJhY2tJbXBsLmNwcDsg
cGF0aCA9IGh0bWwvTXV0YWJsZVRleHRUcmFja0ltcGwuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IH07CisJCUIxQUQ0RTU0MTNBMTJBMEIwMDg0NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNr
SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNdXRhYmxlVGV4dFRyYWNr
SW1wbC5oOyBwYXRoID0gaHRtbC9NdXRhYmxlVGV4dFRyYWNrSW1wbC5oOyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07CisJCUIxQUQ0RTU1MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVGV4dFRyYWNrLmNwcDsg
cGF0aCA9IGh0bWwvVGV4dFRyYWNrLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9Owor
CQlCMUFENEU1NjEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFRleHRUcmFjay5oOyBwYXRoID0gaHRtbC9UZXh0VHJhY2suaDsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlCMUFENEU1NzEzQTEyQTBCMDA4NDZCMjcg
LyogVGV4dFRyYWNrQ3VlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFRleHRUcmFja0N1ZS5jcHA7IHBhdGggPSBodG1sL1RleHRUcmFja0N1ZS5jcHA7IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQjFBRDRFNTgxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRU
cmFja0N1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXh0VHJhY2tDdWUu
aDsgcGF0aCA9IGh0bWwvVGV4dFRyYWNrQ3VlLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsg
fTsKKwkJQjFBRDRFNTkxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZUxpc3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVGV4dFRyYWNrQ3VlTGlzdC5jcHA7
IHBhdGggPSBodG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JP
T1Q7IH07CisJCUIxQUQ0RTVBMTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWVMaXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRleHRUcmFja0N1ZUxpc3QuaDsgcGF0
aCA9IGh0bWwvVGV4dFRyYWNrQ3VlTGlzdC5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07
CisJCUIxQUQ0RTVCMTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tQcml2YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRleHRUcmFja1ByaXZhdGUuaDsgcGF0aCA9IGh0
bWwvVGV4dFRyYWNrUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUIx
QUQ0RTcxMTNBMTJBNDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQ3VlTG9hZGVyLmNwcDsgcGF0aCA9IGxvYWRlci9DdWVMb2Fk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUIxQUQ0RTcyMTNBMTJBNDYw
MDg0NkIyNyAvKiBDdWVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Q3VlTG9hZGVyLmg7IHBhdGggPSBsb2FkZXIvQ3VlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKKwkJQjFBRDRFNzgxM0ExMkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDdWVQYXJzZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMUFENEU3OTEzQTEyQTcyMDA4NDZCMjcgLyogQ3Vl
UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1ZVBhcnNlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMUFENEU3QTEzQTEyQTcyMDA4NDZCMjcgLyog
Q3VlUGFyc2VyUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdWVQ
YXJzZXJQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxRDVFQ0I0MTM0
QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhbGxiYWNrRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjFFNTQ1NzExMzQ2MjkxRjAwOTJBNTQ1IC8qIEdlbmVyYXRlZFN0cmVhbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0ZWRTdHJlYW0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMUU1NDU3MjEzNDYyOTFGMDA5MkE1NDUgLyog
R2VuZXJhdGVkU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVy
YXRlZFN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM2ODMsNiArMTM3
MjcsMjYgQEAKIAkJNDE3REE0Q0QxMzczNDIwNDAwN0M1N0ZCIC8qIHRlc3RpbmcgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUIxQUQ0RTc3MTNBMTJBNzIw
MDg0NkIyNyAvKiB0cmFjayAqLywKKwkJCQlCMUFENEU3MTEzQTEyQTQ2MDA4NDZCMjcgLyogQ3Vl
TG9hZGVyLmNwcCAqLywKKwkJCQlCMUFENEU3MjEzQTEyQTQ2MDA4NDZCMjcgLyogQ3VlTG9hZGVy
LmggKi8sCisJCQkJQjFBRDRFNEIxM0ExMkEwQjAwODQ2QjI3IC8qIEN1ZUluZGV4LmNwcCAqLywK
KwkJCQlCMUFENEU0QzEzQTEyQTBCMDA4NDZCMjcgLyogQ3VlSW5kZXguaCAqLywKKwkJCQlCMUFE
NEU0RDEzQTEyQTBCMDA4NDZCMjcgLyogTG9hZGFibGVUZXh0VHJhY2suY3BwICovLAorCQkJCUIx
QUQ0RTRFMTNBMTJBMEIwMDg0NkIyNyAvKiBMb2FkYWJsZVRleHRUcmFjay5oICovLAorCQkJCUIx
QUQ0RTRGMTNBMTJBMEIwMDg0NkIyNyAvKiBMb2FkYWJsZVRleHRUcmFja0ltcGwuY3BwICovLAor
CQkJCUIxQUQ0RTUwMTNBMTJBMEIwMDg0NkIyNyAvKiBMb2FkYWJsZVRleHRUcmFja0ltcGwuaCAq
LywKKwkJCQlCMUFENEU1MTEzQTEyQTBCMDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFjay5jcHAg
Ki8sCisJCQkJQjFBRDRFNTIxM0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2suaCAq
LywKKwkJCQlCMUFENEU1MzEzQTEyQTBCMDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFja0ltcGwu
Y3BwICovLAorCQkJCUIxQUQ0RTU0MTNBMTJBMEIwMDg0NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNr
SW1wbC5oICovLAorCQkJCUIxQUQ0RTU1MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2suY3Bw
ICovLAorCQkJCUIxQUQ0RTU2MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2suaCAqLywKKwkJ
CQlCMUFENEU1NzEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlLmNwcCAqLywKKwkJCQlC
MUFENEU1ODEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlLmggKi8sCisJCQkJQjFBRDRF
NTkxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZUxpc3QuY3BwICovLAorCQkJCUIxQUQ0
RTVBMTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWVMaXN0LmggKi8sCisJCQkJQjFBRDRF
NUIxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja1ByaXZhdGUuaCAqLywKIAkJCQk0MTgxNUMx
QjEzODMxOTYzMDA1N0FBQTQgLyoganMgKi8sCiAJCQkJNDE3REE0Q0YxMzczNDMyNjAwN0M1N0ZC
IC8qIEludGVybmFscy5jcHAgKi8sCiAJCQkJNDE3REE0Q0UxMzczNDMyNjAwN0M1N0ZCIC8qIElu
dGVybmFscy5oICovLApAQCAtMTczNjEsNiArMTc0MjUsMTcgQEAKIAkJCW5hbWUgPSBQbHVnaW5z
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQjFBRDRFNzcxM0ExMkE3MjAw
ODQ2QjI3IC8qIHRyYWNrICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQlCMUFENEU3ODEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyLmNwcCAqLywKKwkJ
CQlCMUFENEU3OTEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyLmggKi8sCisJCQkJQjFBRDRF
N0ExM0ExMkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlclByaXZhdGUuaCAqLywKKwkJCSk7CisJCQlu
YW1lID0gdHJhY2s7CisJCQlwYXRoID0gcGxhdGZvcm0vdHJhY2s7CisJCQlzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7CisJCX07CiAJCUIyMjI3N0NBMEQwMEJGMUUwMDcxQjc4MiAvKiBzdmcgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjMxNzMsNiArMjMy
NDgsMTggQEAKIAkJCQlGREYwOURDOTEzOTlCNjIyMDA2ODhFNUIgLyogSlNCaXF1YWRGaWx0ZXJO
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUE4NUI2QzEzOEQ1NzNBMDBFQ0I3QjMgLyogU3Ry
ZWFtRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QTg1Qjc4MTM4RDU4RUUwMEVDQjdCMyAv
KiBKU1N0cmVhbUV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlCMUFENEU1RDEzQTEyQTBCMDA4
NDZCMjcgLyogQ3VlSW5kZXguaCBpbiBIZWFkZXJzICovLAorCQkJCUIxQUQ0RTVGMTNBMTJBMEIw
MDg0NkIyNyAvKiBMb2FkYWJsZVRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjFBRDRF
NjExM0ExMkEwQjAwODQ2QjI3IC8qIExvYWRhYmxlVGV4dFRyYWNrSW1wbC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQjFBRDRFNjMxM0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2suaCBp
biBIZWFkZXJzICovLAorCQkJCUIxQUQ0RTY1MTNBMTJBMEIwMDg0NkIyNyAvKiBNdXRhYmxlVGV4
dFRyYWNrSW1wbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjFBRDRFNjcxM0ExMkEwQjAwODQ2QjI3
IC8qIFRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjFBRDRFNjkxM0ExMkEwQjAwODQ2
QjI3IC8qIFRleHRUcmFja0N1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjFBRDRFNkIxM0ExMkEw
QjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUIxQUQ0
RTZDMTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
KwkJCQlCMUFENEU3NDEzQTEyQTQ2MDA4NDZCMjcgLyogQ3VlTG9hZGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlCMUFENEU3QzEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlCMUFENEU3RDEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yNTkwNiw2ICsyNTk5MywxNiBAQAogCQkJCUZERjA5REM4MTM5
OUI2MjIwMDY4OEU1QiAvKiBKU0JpcXVhZEZpbHRlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDlBODVCNkIxMzhENTczQTAwRUNCN0IzIC8qIFN0cmVhbUV2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQ5QTg1Qjc3MTM4RDU4RUUwMEVDQjdCMyAvKiBKU1N0cmVhbUV2ZW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUIxQUQ0RTVDMTNBMTJBMEIwMDg0NkIyNyAvKiBDdWVJbmRleC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlCMUFENEU1RTEzQTEyQTBCMDA4NDZCMjcgLyogTG9hZGFi
bGVUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjFBRDRFNjAxM0ExMkEwQjAwODQ2
QjI3IC8qIExvYWRhYmxlVGV4dFRyYWNrSW1wbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMUFE
NEU2MjEzQTEyQTBCMDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFjay5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlCMUFENEU2NDEzQTEyQTBCMDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFja0ltcGwu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjFBRDRFNjYxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRU
cmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMUFENEU2ODEzQTEyQTBCMDA4NDZCMjcgLyog
VGV4dFRyYWNrQ3VlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUIxQUQ0RTZBMTNBMTJBMEIwMDg0
NkIyNyAvKiBUZXh0VHJhY2tDdWVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUIxQUQ0RTcz
MTNBMTJBNDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjFB
RDRFN0IxM0ExMkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VlSW5kZXguY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9DdWVJbmRleC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDFlY2UyNTc4MTYzMzNlY2JhMDFhYzFj
MDI2MDM1ZGU1MmE1MzcyMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Q3VlSW5kZXguY3BwCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkN1ZUluZGV4Lmgi
CisKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0
LmgiCisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworQ3VlU2V0IEN1ZVNldDo6ZGlmZmVyZW5jZShjb25zdCBDdWVTZXQmIG90aGVyKSBjb25zdAor
eworICAgIC8vIEZJWE1FKGFubmFjYy92cmspOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIEN1ZVNl
dCgpOworfQorCitDdWVTZXQgQ3VlU2V0Ojp1bmlvblNldChjb25zdCBDdWVTZXQmIG90aGVyKSBj
b25zdAoreworICAgIC8vIEZJWE1FKGFubmFjYy92cmspOiBJbXBsZW1lbnQuCisgICAgcmV0dXJu
IEN1ZVNldCgpOworfQorCit2b2lkIEN1ZVNldDo6YWRkKGNvbnN0IFRleHRUcmFja0N1ZSYgY3Vl
KQoreworICAgIC8vIEZJWE1FKGFubmFjYy92cmspOiBJbXBsZW1lbnQuCisgICAgVU5VU0VEX1BB
UkFNKGN1ZSk7Cit9CisKK2Jvb2wgQ3VlU2V0Ojpjb250YWlucyhjb25zdCBUZXh0VHJhY2tDdWUm
IGN1ZSkgY29uc3QKK3sKKyAgICAvLyBGSVhNRShhbm5hY2MvdnJrKTogSW1wbGVtZW50LgorICAg
IFVOVVNFRF9QQVJBTShjdWUpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDdWVTZXQ6
OnJlbW92ZShjb25zdCBUZXh0VHJhY2tDdWUmIGN1ZSkKK3sKKyAgICAvLyBGSVhNRShhbm5hY2Mv
dnJrKTogSW1wbGVtZW50LgorICAgIFVOVVNFRF9QQVJBTShjdWUpOworfQorCitib29sIEN1ZVNl
dDo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUUoYW5uYWNjL3Zyayk6IEltcGxlbWVu
dC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2ludCBDdWVTZXQ6OnNpemUoKSBjb25zdAorewor
ICAgIC8vIEZJWE1FKGFubmFjYy92cmspOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIDA7Cit9CisK
K3ZvaWQgQ3VlSW5kZXg6OmZldGNoTmV3Q3Vlc0Zyb21Mb2FkZXIoQ3VlTG9hZGVyKiBsb2FkZXIp
Cit7CisgICAgLy8gRklYTUUoYW5uYWNjL3Zyayk6IEltcGxlbWVudC4KKyAgICBVTlVTRURfUEFS
QU0obG9hZGVyKTsKK30KKwordm9pZCBDdWVJbmRleDo6cmVtb3ZlQ3Vlc0Zyb21JbmRleChjb25z
dCBUZXh0VHJhY2tDdWVMaXN0KiBjdWVMaXN0KQoreworICAgIC8vIEZJWE1FKGFubmFjYy92cmsp
OiBJbXBsZW1lbnQuCisgICAgVU5VU0VEX1BBUkFNKGN1ZUxpc3QpOworfQorCitDdWVTZXQgQ3Vl
SW5kZXg6OmdldFZpc2libGVDdWVzKGRvdWJsZSB0aW1lKSBjb25zdAoreworICAgIC8vIEZJWE1F
KGFubmFjYy92cmspOiBJbXBsZW1lbnQuCisgICAgVU5VU0VEX1BBUkFNKHRpbWUpOworICAgIHJl
dHVybiBDdWVTZXQoKTsKK30KKwordm9pZCBDdWVJbmRleDo6YWRkKFRleHRUcmFja0N1ZSogY3Vl
KQoreworICAgIC8vIEZJWE1FKGFubmFjYy92cmspOiBJbXBsZW1lbnQuCisgICAgVU5VU0VEX1BB
UkFNKGN1ZSk7Cit9CisKK3ZvaWQgQ3VlSW5kZXg6OnJlbW92ZShUZXh0VHJhY2tDdWUqIGN1ZSkK
K3sKKyAgICAvLyBGSVhNRShhbm5hY2MvdnJrKTogSW1wbGVtZW50LgorICAgIFVOVVNFRF9QQVJB
TShjdWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DdWVJbmRleC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9D
dWVJbmRleC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlMDgyNDYwYzc4MGVkY2YwNDEwZTFlNjJmOTQ2OWM0OThk
NDM2YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1ZUluZGV4LmgK
QEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEN1ZUluZGV4X2gKKyNkZWZpbmUg
Q3VlSW5kZXhfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQ3VlTG9h
ZGVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBUZXh0VHJhY2tDdWU7CitjbGFzcyBUZXh0VHJhY2tDdWVMaXN0OworCitjbGFzcyBD
dWVTZXQgeworcHVibGljOgorICAgIEN1ZVNldCgpIHsgfQorICAgIH5DdWVTZXQoKSB7IH0KKyAg
ICBDdWVTZXQgZGlmZmVyZW5jZShjb25zdCBDdWVTZXQmIG90aGVyKSBjb25zdDsKKyAgICBDdWVT
ZXQgdW5pb25TZXQoY29uc3QgQ3VlU2V0JiBvdGhlcikgY29uc3Q7CisgICAgdm9pZCBhZGQoY29u
c3QgVGV4dFRyYWNrQ3VlJik7CisgICAgYm9vbCBjb250YWlucyhjb25zdCBUZXh0VHJhY2tDdWUm
KSBjb25zdDsKKyAgICB2b2lkIHJlbW92ZShjb25zdCBUZXh0VHJhY2tDdWUmKTsKKyAgICBib29s
IGlzRW1wdHkoKSBjb25zdDsKKyAgICBpbnQgc2l6ZSgpIGNvbnN0OworcHJpdmF0ZToKKyAgICBI
YXNoU2V0PFRleHRUcmFja0N1ZSo+IG1fc2V0OworfTsKKworY2xhc3MgQ3VlSW5kZXggOiBwdWJs
aWMgQ3VlTG9hZGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBDdWVMb2FkZXJDbGllbnQgbWV0
aG9kcy4KKyAgICB2b2lkIGZldGNoTmV3Q3Vlc0Zyb21Mb2FkZXIoQ3VlTG9hZGVyKik7CisgICAg
dm9pZCByZW1vdmVDdWVzRnJvbUluZGV4KGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKTsKKworICAg
IC8vIFJldHVybnMgc2V0IG9mIGN1ZXMgdmlzaWJsZSBhdCBhIHRpbWUgaW4gc2Vjb25kcy4KKyAg
ICBDdWVTZXQgZ2V0VmlzaWJsZUN1ZXMoZG91YmxlIHRpbWUpIGNvbnN0OworICAgIHZvaWQgYWRk
KFRleHRUcmFja0N1ZSopOworICAgIHZvaWQgcmVtb3ZlKFRleHRUcmFja0N1ZSopOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YWM1MWE0YTllZDcxNzBlZDdk
NmQyMjc4N2YxZDA2YTJmYTM5ODBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRl
ICJMb2FkYWJsZVRleHRUcmFjay5oIgorCisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworTG9hZGFibGVUZXh0VHJhY2s6OkxvYWRhYmxlVGV4dFRy
YWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5n
JiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpCit7CisgICAgLy8gRklYTUUoYW5uYWNjL3Zyayk6
IEltcGxlbWVudC4KKyAgICBVTlVTRURfUEFSQU0oa2luZCk7CisgICAgVU5VU0VEX1BBUkFNKGxh
YmVsKTsKKyAgICBVTlVTRURfUEFSQU0obGFuZ3VhZ2UpOworICAgIFVOVVNFRF9QQVJBTShpc0Rl
ZmF1bHQpOworfQorCitMb2FkYWJsZVRleHRUcmFjazo6fkxvYWRhYmxlVGV4dFRyYWNrKCkKK3sK
KyAgICAvLyBGSVhNRShhbm5hY2MvdnJrKTogSW1wbGVtZW50LgorfQorCit2b2lkIExvYWRhYmxl
VGV4dFRyYWNrOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIC8vIEZJWE1FKGFubmFj
Yy92cmspOiBJbXBsZW1lbnQuCisgICAgVU5VU0VEX1BBUkFNKHVybCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0xvYWRhYmxlVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRy
YWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDRiMzk3OWYzZjY4OTUyMGU4OTljOTQwOTIxOTIyZjc4YjMyMjM5
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJh
Y2suaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBMb2FkYWJsZVRleHRUcmFj
a19oCisjZGVmaW5lIExvYWRhYmxlVGV4dFRyYWNrX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKKworI2luY2x1ZGUgIkxvYWRhYmxlVGV4dFRyYWNrSW1wbC5oIgorI2luY2x1ZGUgIlBhc3NS
ZWZQdHIuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2suaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWVM
aXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTG9hZGFibGVUZXh0VHJhY2sg
OiBwdWJsaWMgVGV4dFRyYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxMb2Fk
YWJsZVRleHRUcmFjaz4gY3JlYXRlKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IExvYWRhYmxlVGV4dFRyYWNrKGtpbmQsIGxhYmVsLCBs
YW5ndWFnZSwgaXNEZWZhdWx0KSk7CisgICAgfQorICAgIHZpcnR1YWwgfkxvYWRhYmxlVGV4dFRy
YWNrKCk7CisKKyAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiB1cmwpOworCitwcml2YXRlOgor
ICAgIExvYWRhYmxlVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpOworCit9OworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFja0ltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Mb2FkYWJsZVRleHRUcmFja0ltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2NmY4MjAxYjMzNGY2
ZDc2ZDM3YzNlMWM0OGU3YmMxNjRmNWNkMmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrSW1wbC5jcHAKQEAgLTAsMCArMSwxMTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQor
CisjaW5jbHVkZSAiTG9hZGFibGVUZXh0VHJhY2tJbXBsLmgiCisKKyNpbmNsdWRlICJUZXh0VHJh
Y2tDdWVMaXN0LmgiCisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworTG9hZGFibGVUZXh0VHJhY2tJbXBsOjpMb2FkYWJsZVRleHRUcmFja0ltcGwo
Y29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxh
bmd1YWdlLCBib29sIGlzRGVmYXVsdCkKKyAgICA6IG1fa2luZChraW5kKQorICAgICwgbV9sYWJl
bChsYWJlbCkKKyAgICAsIG1fbGFuZ3VhZ2UobGFuZ3VhZ2UpCisgICAgLCBtX2lzRGVmYXVsdChp
c0RlZmF1bHQpCit7Cit9CisKK0xvYWRhYmxlVGV4dFRyYWNrSW1wbDo6fkxvYWRhYmxlVGV4dFRy
YWNrSW1wbCgpCit7Cit9CisKK1N0cmluZyBMb2FkYWJsZVRleHRUcmFja0ltcGw6OmtpbmQoKSBj
b25zdAoreworICAgIHJldHVybiBtX2tpbmQ7Cit9CisKK1N0cmluZyBMb2FkYWJsZVRleHRUcmFj
a0ltcGw6OmxhYmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYWJlbDsKK30KKworU3RyaW5n
IExvYWRhYmxlVGV4dFRyYWNrSW1wbDo6bGFuZ3VhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBt
X2xhbmd1YWdlOworfQorCitUZXh0VHJhY2s6OlJlYWR5U3RhdGUgTG9hZGFibGVUZXh0VHJhY2tJ
bXBsOjpyZWFkeVN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWFkeVN0YXRlOworfQor
CitUZXh0VHJhY2s6Ok1vZGUgTG9hZGFibGVUZXh0VHJhY2tJbXBsOjptb2RlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9tb2RlOworfQorCit2b2lkIExvYWRhYmxlVGV4dFRyYWNrSW1wbDo6c2V0
TW9kZShUZXh0VHJhY2s6Ok1vZGUgbW9kZSkKK3sKKyAgICBtX21vZGUgPSBtb2RlOworfQorCitQ
YXNzUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IExvYWRhYmxlVGV4dFRyYWNrSW1wbDo6Y3Vlcygp
IGNvbnN0Cit7CisgICAgLy8gRklYTUUoYW5uYWNjL3Zyayk6IEltcGxlbWVudC4KKyAgICByZXR1
cm4gMDsKK30KKworUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBMb2FkYWJsZVRleHRUcmFj
a0ltcGw6OmFjdGl2ZUN1ZXMoKSBjb25zdAoreworICAgIC8vIEZJWE1FKGFubmFjYy92cmspOiBJ
bXBsZW1lbnQuCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2tJbXBs
OjpmZXRjaE5ld2VzdEN1ZXMoVmVjdG9yPFRleHRUcmFja0N1ZSo+JiBvdXRwdXQpCit7CisgICAg
Ly8gRklYTUUoYW5uYWNjL3Zyayk6IEltcGxlbWVudC4KKyAgICBVTlVTRURfUEFSQU0ob3V0cHV0
KTsKK30KKwordm9pZCBMb2FkYWJsZVRleHRUcmFja0ltcGw6OmxvYWQoY29uc3QgU3RyaW5nJiB1
cmwpCit7CisgICAgLy8gRklYTUUoYW5uYWNjL3Zyayk6IEltcGxlbWVudC4KKyAgICBVTlVTRURf
UEFSQU0odXJsKTsKK30KKwordm9pZCBMb2FkYWJsZVRleHRUcmFja0ltcGw6Om5ld0N1ZXNMb2Fk
ZWQoKQoreworICAgIC8vIEZJWE1FKGFubmFjYy92cmspOiBJbXBsZW1lbnQuCit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0xvYWRhYmxlVGV4dFRyYWNrSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJs
ZVRleHRUcmFja0ltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jY2FiZGJhMTkzNzUwNGU3YTczOTFlZTNjNTQ5
YjkwNTQ4NDQxNzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Mb2Fk
YWJsZVRleHRUcmFja0ltcGwuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBM
b2FkYWJsZVRleHRUcmFja0ltcGxfaAorI2RlZmluZSBMb2FkYWJsZVRleHRUcmFja0ltcGxfaAor
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQ3VlTG9hZGVyLmgiCisjaW5j
bHVkZSAiQ3VlUGFyc2VyLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrUHJpdmF0ZS5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFRleHRUcmFjazsKK2NsYXNzIFRleHRUcmFja0N1ZTsKK2Ns
YXNzIFRleHRUcmFja0N1ZUxpc3Q7CisKK2NsYXNzIExvYWRhYmxlVGV4dFRyYWNrSW1wbCA6IHB1
YmxpYyBUZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQ3VlTG9hZGVyIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxMb2FkYWJsZVRleHRUcmFja0ltcGw+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFu
Z3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBMb2FkYWJsZVRleHRUcmFja0ltcGwoa2luZCwgbGFiZWwsIGxhbmd1YWdlLCBpc0RlZmF1bHQp
KTsKKyAgICB9CisgICAgdmlydHVhbCB+TG9hZGFibGVUZXh0VHJhY2tJbXBsKCk7CisKKyAgICAv
LyBUZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlIG1ldGhvZHMKKyAgICB2aXJ0dWFsIFN0cmluZyBr
aW5kKCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgbGFiZWwoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFN0cmluZyBsYW5ndWFnZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVGV4dFRyYWNrOjpSZWFk
eVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFRleHRUcmFjazo6TW9kZSBt
b2RlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldE1vZGUoVGV4dFRyYWNrOjpNb2RlKTsK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gY3VlcygpIGNvbnN0Owor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBhY3RpdmVDdWVzKCkgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiB1cmwpOworCisgICAgLy8g
Q3VlTG9hZGVyIGludGVyZmFjZQorICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzTG9hZGVkKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGZldGNoTmV3ZXN0Q3VlcyhWZWN0b3I8VGV4dFRyYWNrQ3VlKj4mKTsK
KworcHJpdmF0ZToKKyAgICBMb2FkYWJsZVRleHRUcmFja0ltcGwoY29uc3QgU3RyaW5nJiBraW5k
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVm
YXVsdCk7CisKKyAgICBTdHJpbmcgbV9raW5kOworICAgIFN0cmluZyBtX2xhYmVsOworICAgIFN0
cmluZyBtX2xhbmd1YWdlOworICAgIGJvb2wgbV9pc0RlZmF1bHQ7CisKKyAgICBUZXh0VHJhY2s6
OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOworICAgIFRleHRUcmFjazo6TW9kZSBtX21vZGU7CisK
KyAgICBDdWVQYXJzZXIgbV9wYXJzZXI7CisgICAgUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IG1f
Y3VlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFjay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL011dGFibGVUZXh0VHJhY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmNTVhODdh
YWUyNGU3YTUyZjczZWE5OGMwODRjM2YxYjhhNmZkNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL011dGFibGVUZXh0VHJhY2suY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQor
CisjaW5jbHVkZSAiTXV0YWJsZVRleHRUcmFjay5oIgorCisjaW5jbHVkZSAiTXV0YWJsZVRleHRU
cmFja0ltcGwuaCIKKyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitNdXRhYmxlVGV4dFRyYWNrOjpNdXRhYmxlVGV4dFRyYWNrKGNvbnN0IFN0cmlu
ZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKK3sK
KyAgICBVTlVTRURfUEFSQU0oa2luZCk7CisgICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBV
TlVTRURfUEFSQU0obGFuZ3VhZ2UpOworfQorCit2b2lkIE11dGFibGVUZXh0VHJhY2s6OmFkZEN1
ZShQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gY3VlKQoreworICAgIC8vIEZJWE1FKGFubmFjYy92
cmspOiBJbXBsZW1lbnQuCisgICAgVU5VU0VEX1BBUkFNKGN1ZSk7Cit9CisKK3ZvaWQgTXV0YWJs
ZVRleHRUcmFjazo6cmVtb3ZlQ3VlKFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUpCit7Cisg
ICAgLy8gRklYTUUoYW5uYWNjL3Zyayk6IEltcGxlbWVudC4KKyAgICBVTlVTRURfUEFSQU0oY3Vl
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NdXRhYmxlVGV4dFRyYWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODMzM2NjOWE5ZDBlN2Y5Y2RhM2YxZDU4
YzgzM2VjNTc1MzQ2ZGY5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TXV0YWJsZVRleHRUcmFjay5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBN
dXRhYmxlVGV4dFRyYWNrX2gKKyNkZWZpbmUgTXV0YWJsZVRleHRUcmFja19oCisKKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJUZXh0VHJhY2suaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBUZXh0VHJhY2tDdWU7CisKK2NsYXNzIE11dGFibGVUZXh0VHJhY2sg
OiBwdWJsaWMgVGV4dFRyYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRh
YmxlVGV4dFRyYWNrPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxh
YmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBNdXRhYmxlVGV4dFRyYWNrKGtpbmQsIGxhYmVsLCBsYW5ndWFnZSkpOworICAgIH0K
KyAgICB2aXJ0dWFsIH5NdXRhYmxlVGV4dFRyYWNrKCkgeyB9CisKKyAgICB2b2lkIGFkZEN1ZShQ
YXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOworICAgIHZvaWQgcmVtb3ZlQ3VlKFBhc3NSZWZQdHI8
VGV4dFRyYWNrQ3VlPik7Citwcml2YXRlOgorICAgIE11dGFibGVUZXh0VHJhY2soY29uc3QgU3Ry
aW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFja0ltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NdXRhYmxlVGV4dFRyYWNrSW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGRhY2Iw
MzM5Mjk3YzEzYTc4NWNhNThhMGVkOGI4N2NlZDU4NDk3MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFja0ltcGwuY3BwCkBAIC0wLDAgKzEsMTE3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKworI2luY2x1ZGUgIk11dGFibGVUZXh0VHJhY2tJbXBsLmgiCisKKyNpbmNsdWRlICJU
ZXh0VHJhY2suaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNpbmNsdWRlICJUZXh0VHJh
Y2tDdWVMaXN0LmgiCisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworTXV0YWJsZVRleHRUcmFja0ltcGw6Ok11dGFibGVUZXh0VHJhY2tJbXBsKGNv
bnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5n
dWFnZSkKKyAgICA6IG1fa2luZChraW5kKQorICAgICwgbV9sYWJlbChsYWJlbCkKKyAgICAsIG1f
bGFuZ3VhZ2UobGFuZ3VhZ2UpCit7Cit9CisKK011dGFibGVUZXh0VHJhY2tJbXBsOjp+TXV0YWJs
ZVRleHRUcmFja0ltcGwoKQoreworfQorCit2b2lkIE11dGFibGVUZXh0VHJhY2tJbXBsOjphZGRD
dWUoVGV4dFRyYWNrQ3VlKiBjdWUpCit7CisgICAgLy8gRklYTUUoYW5uYWNjL3Zyayk6IEltcGxl
bWVudC4KKyAgICBVTlVTRURfUEFSQU0oY3VlKTsKK30KKwordm9pZCBNdXRhYmxlVGV4dFRyYWNr
SW1wbDo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSogY3VlKQoreworICAgIC8vIEZJWE1FKGFubmFj
Yy92cmspOiBJbXBsZW1lbnQuCisgICAgVU5VU0VEX1BBUkFNKGN1ZSk7Cit9CisKK1N0cmluZyBN
dXRhYmxlVGV4dFRyYWNrSW1wbDo6a2luZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fa2luZDsK
K30KKworU3RyaW5nIE11dGFibGVUZXh0VHJhY2tJbXBsOjpsYWJlbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fbGFiZWw7Cit9CisKK1N0cmluZyBNdXRhYmxlVGV4dFRyYWNrSW1wbDo6bGFuZ3Vh
Z2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2xhbmd1YWdlOworfQorCitUZXh0VHJhY2s6OlJl
YWR5U3RhdGUgTXV0YWJsZVRleHRUcmFja0ltcGw6OnJlYWR5U3RhdGUoKSBjb25zdAoreworICAg
IHJldHVybiBtX3JlYWR5U3RhdGU7Cit9CisKK1RleHRUcmFjazo6TW9kZSBNdXRhYmxlVGV4dFRy
YWNrSW1wbDo6bW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbW9kZTsKK30KKwordm9pZCBN
dXRhYmxlVGV4dFRyYWNrSW1wbDo6c2V0TW9kZShUZXh0VHJhY2s6Ok1vZGUgbW9kZSkKK3sKKyAg
ICBtX21vZGUgPSBtb2RlOworfQorCitQYXNzUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IE11dGFi
bGVUZXh0VHJhY2tJbXBsOjpjdWVzKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRShhbm5hY2MvdnJr
KTogSW1wbGVtZW50LgorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPFRleHRUcmFja0N1
ZUxpc3Q+IE11dGFibGVUZXh0VHJhY2tJbXBsOjphY3RpdmVDdWVzKCkgY29uc3QKK3sKKyAgICAv
LyBGSVhNRShhbm5hY2MvdnJrKTogSW1wbGVtZW50LgorICAgIHJldHVybiAwOworfQorCit2b2lk
IE11dGFibGVUZXh0VHJhY2tJbXBsOjpuZXdDdWVzTG9hZGVkKCkKK3sKKyAgICAvLyBGSVhNRShh
bm5hY2MvdnJrKTogSW1wbGVtZW50LgorfQorCit2b2lkIE11dGFibGVUZXh0VHJhY2tJbXBsOjpm
ZXRjaE5ld2VzdEN1ZXMoVmVjdG9yPFRleHRUcmFja0N1ZSo+JiBvdXRwdXQpCit7CisgICAgLy8g
RklYTUUoYW5uYWNjL3Zyayk6IEltcGxlbWVudC4KKyAgICBVTlVTRURfUEFSQU0ob3V0cHV0KTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFja0ltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTXV0YWJsZVRleHRUcmFja0ltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTczMmY3ODgzMzdkZDk2OTUy
MzQwMTZhOTgyYmMxZDI0YWVmOGY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NdXRhYmxlVGV4dFRyYWNrSW1wbC5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIE11dGFibGVUZXh0VHJhY2tJbXBsX2gKKyNkZWZpbmUgTXV0YWJsZVRleHRUcmFja0lt
cGxfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQ3VlTG9hZGVyLmgi
CisjaW5jbHVkZSAiVGV4dFRyYWNrUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEN1ZUxvYWRlckNsaWVudDsKK2NsYXNzIFRleHRUcmFjazsKK2NsYXNzIFRleHRUcmFja0N1
ZTsKK2NsYXNzIFRleHRUcmFja0N1ZUxpc3Q7CisKK2NsYXNzIE11dGFibGVUZXh0VHJhY2tJbXBs
IDogcHVibGljIFRleHRUcmFja1ByaXZhdGVJbnRlcmZhY2UsIHB1YmxpYyBDdWVMb2FkZXIgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPE11dGFibGVUZXh0VHJhY2tJbXBsPiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcm
IGxhbmd1YWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNdXRhYmxlVGV4
dFRyYWNrSW1wbChraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpKTsKKyAgICB9CisgICAgdmlydHVhbCB+
TXV0YWJsZVRleHRUcmFja0ltcGwoKTsKKworICAgIC8vIFRleHRUcmFja1ByaXZhdGVJbnRlcmZh
Y2UgbWV0aG9kcworICAgIHZpcnR1YWwgU3RyaW5nIGtpbmQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IFN0cmluZyBsYWJlbCgpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGxhbmd1YWdlKCkgY29u
c3Q7CisgICAgdmlydHVhbCBUZXh0VHJhY2s6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0
OworICAgIHZpcnR1YWwgVGV4dFRyYWNrOjpNb2RlIG1vZGUoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0TW9kZShUZXh0VHJhY2s6Ok1vZGUpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxU
ZXh0VHJhY2tDdWVMaXN0PiBjdWVzKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRl
eHRUcmFja0N1ZUxpc3Q+IGFjdGl2ZUN1ZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
Q3VlKFRleHRUcmFja0N1ZSopOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDdWUoVGV4dFRyYWNr
Q3VlKik7CisKKyAgICAvLyBDdWVMb2FkZXIgaW50ZXJmYWNlCisgICAgdmlydHVhbCB2b2lkIG5l
d0N1ZXNMb2FkZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmV0Y2hOZXdlc3RDdWVzKFZlY3RvcjxU
ZXh0VHJhY2tDdWUqPiYpOworCitwcml2YXRlOgorICAgIE11dGFibGVUZXh0VHJhY2tJbXBsKGNv
bnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5n
dWFnZSk7CisKKyAgICBTdHJpbmcgbV9raW5kOworICAgIFN0cmluZyBtX2xhYmVsOworICAgIFN0
cmluZyBtX2xhbmd1YWdlOworICAgIFRleHRUcmFjazo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7
CisgICAgVGV4dFRyYWNrOjpNb2RlIG1fbW9kZTsKKworICAgIFJlZlB0cjxUZXh0VHJhY2tDdWVM
aXN0PiBtX2N1ZXM7CisgICAgVmVjdG9yPFRleHRUcmFja0N1ZSo+IG1fbmV3ZXN0Q3VlczsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dFRyYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OGJhYmIwOTI0MjA2ZWUwY2Q5MjRlMDNmMWQ1MWRm
ZGEzNGE2NDdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJh
Y2suY3BwCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlRleHRUcmFjay5oIgorCisjaW5jbHVkZSAiVGV4
dFRyYWNrQ3VlTGlzdC5oIgorI2luY2x1ZGUgIlRleHRUcmFja1ByaXZhdGUuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBOdWxsVGV4dFRyYWNrUHJpdmF0ZSA6IHB1YmxpYyBUZXh0
VHJhY2tQcml2YXRlSW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICBOdWxsVGV4dFRyYWNrUHJpdmF0
ZSgpOworICAgIHZpcnR1YWwgfk51bGxUZXh0VHJhY2tQcml2YXRlKCk7CisKKyAgICAvLyBUZXh0
VHJhY2tQcml2YXRlSW50ZXJmYWNlIG1ldGhvZHMKKyAgICB2aXJ0dWFsIFN0cmluZyBraW5kKCkg
Y29uc3QgeyByZXR1cm4gIiI7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBsYWJlbCgpIGNvbnN0IHsg
cmV0dXJuICIiOyB9CisgICAgdmlydHVhbCBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVy
biAiIjsgfQorICAgIHZpcnR1YWwgVGV4dFRyYWNrOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBj
b25zdCB7IHJldHVybiBUZXh0VHJhY2s6Ok5PTkU7IH0KKyAgICB2aXJ0dWFsIFRleHRUcmFjazo6
TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gVGV4dFRyYWNrOjpPRkY7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0TW9kZShUZXh0VHJhY2s6Ok1vZGUpIHsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxUZXh0VHJhY2tDdWVMaXN0PiBjdWVzKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBhY3RpdmVDdWVzKCkgY29uc3QgeyByZXR1
cm4gMDsgfQorICAgIHZpcnR1YWwgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYgdXJsKSB7IH0KK307
CisKK3N0YXRpYyBQYXNzT3duUHRyPE51bGxUZXh0VHJhY2tQcml2YXRlPiBjcmVhdGVOdWxsVGV4
dFRyYWNrUHJpdmF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBOdWxsVGV4dFRyYWNr
UHJpdmF0ZSgpKTsKK30KKworVGV4dFRyYWNrOjpUZXh0VHJhY2soKQorICAgIDogbV9wcml2YXRl
KGNyZWF0ZU51bGxUZXh0VHJhY2tQcml2YXRlKCkpCit7Cit9CisKK1RleHRUcmFjazo6flRleHRU
cmFjaygpCit7Cit9CisKK1N0cmluZyBUZXh0VHJhY2s6OmtpbmQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3ByaXZhdGUtPmtpbmQoKTsKK30KKworU3RyaW5nIFRleHRUcmFjazo6bGFiZWwoKSBj
b25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmxhYmVsKCk7Cit9CisKK1N0cmluZyBUZXh0
VHJhY2s6Omxhbmd1YWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5sYW5ndWFn
ZSgpOworfQorCitUZXh0VHJhY2s6OlJlYWR5U3RhdGUgVGV4dFRyYWNrOjpyZWFkeVN0YXRlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5yZWFkeVN0YXRlKCk7Cit9CisKK1RleHRU
cmFjazo6TW9kZSBUZXh0VHJhY2s6Om1vZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZh
dGUtPm1vZGUoKTsKK30KKwordm9pZCBUZXh0VHJhY2s6OnNldE1vZGUodW5zaWduZWQgc2hvcnQg
bW9kZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldE1vZGUoc3RhdGljX2Nhc3Q8TW9kZT4obW9kZSkp
OworfQorCitQYXNzUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IFRleHRUcmFjazo6Y3VlcygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y3VlcygpOworfQorCitQYXNzUmVmUHRyPFRl
eHRUcmFja0N1ZUxpc3Q+IFRleHRUcmFjazo6YWN0aXZlQ3VlcygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+YWN0aXZlQ3VlcygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBlMWIwY2M3Mjg1
MmYxNWUzNjk4NGMyNjhlNjg0NjExNWY3ZDJmZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgVGV4dFRyYWNrX2gKKyNkZWZpbmUgVGV4dFRyYWNrX2gKKworI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBUZXh0VHJhY2s7CitjbGFzcyBUZXh0VHJhY2tDdWVMaXN0OworY2xh
c3MgVGV4dFRyYWNrUHJpdmF0ZUludGVyZmFjZTsKKworY2xhc3MgVGV4dFRyYWNrQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5UZXh0VHJhY2tDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgdGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKikgeyB9CisgICAgdmly
dHVhbCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayopIHsgfQorICAgIHZpcnR1
YWwgdm9pZCB0ZXh0VHJhY2tDcmVhdGVkKFRleHRUcmFjayopIHsgfQorfTsKKworY2xhc3MgVGV4
dFRyYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrPiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBUZXh0VHJhY2spOworICAgIH0KKyAgICB2aXJ0dWFsIH5UZXh0VHJhY2so
KTsKKworICAgIFN0cmluZyBraW5kKCkgY29uc3Q7CisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7
CisgICAgU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Q7CisKKyAgICBlbnVtIFJlYWR5U3RhdGUgeyBO
T05FLCBMT0FESU5HLCBMT0FERUQsIEVSUk9SIH07CisgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRl
KCkgY29uc3Q7CisKKyAgICBlbnVtIE1vZGUgeyBPRkYsIEhJRERFTiwgU0hPV0lORyB9OworICAg
IE1vZGUgbW9kZSgpIGNvbnN0OworICAgIHZvaWQgc2V0TW9kZSh1bnNpZ25lZCBzaG9ydCk7CisK
KyAgICBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IGN1ZXMoKSBjb25zdDsKKyAgICBQYXNz
UmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IGFjdGl2ZUN1ZXMoKSBjb25zdDsKKworICAgIHZvaWQg
cmVhZHlTdGF0ZUNoYW5nZWQoKTsKKyAgICB2b2lkIG1vZGVDaGFuZ2VkKCk7CisKK3Byb3RlY3Rl
ZDoKKyAgICBUZXh0VHJhY2soKTsKKyAgICBPd25QdHI8VGV4dFRyYWNrUHJpdmF0ZUludGVyZmFj
ZT4gbV9wcml2YXRlOworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGU1Mjcy
Zjc1ZmQ4YzBkNTcxMjg2YTgxMzQ4NjdkNTcxNTEwYjhkMgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlLmNwcApAQCAtMCwwICsxLDEwNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisK
KyNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQu
aCIKKyNpbmNsdWRlICJUZXh0VHJhY2suaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitUZXh0
VHJhY2tDdWU6OlRleHRUcmFja0N1ZShjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgc3RhcnQsIGRv
dWJsZSBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgY29uc3QgU3RyaW5nJiBzZXR0aW5ncywg
Ym9vbCBwYXVzZU9uRXhpdCkKKyAgICA6IG1faWQoaWQpCisgICAgLCBtX3N0YXJ0VGltZShzdGFy
dCkKKyAgICAsIG1fZW5kVGltZShlbmQpCisgICAgLCBtX2NvbnRlbnQoY29udGVudCkKKyAgICAs
IG1fc2V0dGluZ3Moc2V0dGluZ3MpCisgICAgLCBtX3BhdXNlT25FeGl0KHBhdXNlT25FeGl0KQor
eworfQorCitUZXh0VHJhY2tDdWU6On5UZXh0VHJhY2tDdWUoKQoreworfQorCitUZXh0VHJhY2sq
IFRleHRUcmFja0N1ZTo6dHJhY2soKSBjb25zdAoreworICAgIHJldHVybiBtX3RyYWNrOworfQor
Cit2b2lkIFRleHRUcmFja0N1ZTo6c2V0VHJhY2soVGV4dFRyYWNrKiB0cmFjaykKK3sKKyAgICBt
X3RyYWNrID0gdHJhY2s7Cit9CisKK1N0cmluZyBUZXh0VHJhY2tDdWU6OmlkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9pZDsKK30KKworZG91YmxlIFRleHRUcmFja0N1ZTo6c3RhcnRUaW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGFydFRpbWU7Cit9CisKK2RvdWJsZSBUZXh0VHJhY2tD
dWU6OmVuZFRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX2VuZFRpbWU7Cit9CisKK2Jvb2wg
VGV4dFRyYWNrQ3VlOjpwYXVzZU9uRXhpdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGF1c2VP
bkV4aXQ7Cit9CisKK1N0cmluZyBUZXh0VHJhY2tDdWU6OmdldEN1ZUFzU291cmNlKCkKK3sKKyAg
ICAvLyBGSVhNRShhbm5hY2MvdnJrKTogSW1wbGVtZW50LgorICAgIHJldHVybiAiIjsKK30KKwor
UGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBUZXh0VHJhY2tDdWU6OmdldEN1ZUFzSFRNTCgp
Cit7CisgICAgLy8gRklYTUUoYW5uYWNjL3Zyayk6IEltcGxlbWVudC4KKyAgICByZXR1cm4gRG9j
dW1lbnRGcmFnbWVudDo6Y3JlYXRlKDApOworfQorCitib29sIFRleHRUcmFja0N1ZTo6aXNBY3Rp
dmUoKQoreworICAgIC8vIEZJWE1FKGFubmFjYy92cmspOiBJbXBsZW1lbnQuCisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIFRleHRUcmFja0N1ZTo6c2V0SXNBY3RpdmUoYm9vbCBhY3RpdmUp
Cit7CisgICAgbV9pc0FjdGl2ZSA9IGFjdGl2ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3Vl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhMGQ5
YTc3NTRkMDljZTZjYjVkZjQxYTc5YWZlZDU5OWEyNTgwNjIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFRleHRUcmFja0N1ZV9oCisjZGVmaW5lIFRleHRUcmFja0N1ZV9oCisKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJUZXh0VHJhY2suaCIKKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKK2NsYXNzIFRleHRUcmFj
azsKKworY2xhc3MgVGV4dFRyYWNrQ3VlIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrQ3Vl
PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgc2V0dGluZ3MsIGJvb2wgcGF1c2VPbkV4aXQpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFja0N1ZShpZCwgc3RhcnQsIGVu
ZCwgY29udGVudCwgc2V0dGluZ3MsIHBhdXNlT25FeGl0KSk7CisgICAgfQorCisgICAgdmlydHVh
bCB+VGV4dFRyYWNrQ3VlKCk7CisKKyAgICBUZXh0VHJhY2sqIHRyYWNrKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRUcmFjayhUZXh0VHJhY2sqKTsKKworICAgIFN0cmluZyBpZCgpIGNvbnN0OworICAg
IGRvdWJsZSBzdGFydFRpbWUoKSBjb25zdDsKKyAgICBkb3VibGUgZW5kVGltZSgpIGNvbnN0Owor
ICAgIGJvb2wgcGF1c2VPbkV4aXQoKSBjb25zdDsKKworICAgIFN0cmluZyBnZXRDdWVBc1NvdXJj
ZSgpOworICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZ2V0Q3VlQXNIVE1MKCk7CisK
KyAgICBib29sIGlzQWN0aXZlKCk7CisgICAgdm9pZCBzZXRJc0FjdGl2ZShib29sKTsKKworcHJp
dmF0ZToKKyAgICBUZXh0VHJhY2tDdWUoY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIHN0YXJ0LCBk
b3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgc2V0dGluZ3Ms
IGJvb2wgcGF1c2VPbkV4aXQpOworCisgICAgU3RyaW5nIG1faWQ7CisgICAgZG91YmxlIG1fc3Rh
cnRUaW1lOworICAgIGRvdWJsZSBtX2VuZFRpbWU7CisgICAgU3RyaW5nIG1fY29udGVudDsKKyAg
ICBTdHJpbmcgbV9zZXR0aW5nczsKKyAgICBib29sIG1fcGF1c2VPbkV4aXQ7CisKKyAgICBib29s
IG1faXNBY3RpdmU7CisgICAgVGV4dFRyYWNrKiBtX3RyYWNrOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNr
Q3VlTGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UzOTQ4NWI1NjcyNTM4ZjFiMmQ5NjQwNTBiNTRhY2Qx
ZjNiMzNiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNr
Q3VlTGlzdC5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWVM
aXN0LmgiCisKKyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitUZXh0VHJhY2tDdWVMaXN0OjpUZXh0VHJhY2tDdWVMaXN0KCkKK3sKKyAgICAvLyBG
SVhNRShhbm5hY2MvdnJrKTogSW1wbGVtZW50LgorfQorCitUZXh0VHJhY2tDdWUqIFRleHRUcmFj
a0N1ZUxpc3Q6OmdldEN1ZUJ5SWQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QKK3sKKyAgICAvLyBG
SVhNRShhbm5hY2MvdnJrKTogSW1wbGVtZW50LgorICAgIFVOVVNFRF9QQVJBTShpZCk7CisgICAg
cmV0dXJuIDA7Cit9CisKK3ZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6YXBwZW5kKFZlY3RvcjxQYXNz
UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYgbmV3Q3VlcykKK3sKKyAgICAvLyBGSVhNRShhbm5hY2Mv
dnJrKTogSW1wbGVtZW50LgorICAgIFVOVVNFRF9QQVJBTShuZXdDdWVzKTsKK30KKwordm9pZCBU
ZXh0VHJhY2tDdWVMaXN0OjphcHBlbmQoY29uc3QgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+JiBj
dWUpCit7CisgICAgLy8gRklYTUUoYW5uYWNjL3Zyayk6IEltcGxlbWVudC4KKyAgICBVTlVTRURf
UEFSQU0oY3VlKTsKK30KKwordm9pZCBUZXh0VHJhY2tDdWVMaXN0OjpyZW1vdmUoY29uc3QgUGFz
c1JlZlB0cjxUZXh0VHJhY2tDdWU+JiBjdWUpCit7CisgICAgLy8gRklYTUUoYW5uYWNjL3Zyayk6
IEltcGxlbWVudC4KKyAgICBVTlVTRURfUEFSQU0oY3VlKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRy
YWNrQ3VlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2IzN2U0NGY1YzRhZGY2MGQ3ODhjMTIxOTc2N2U1ZTM5NmM1OWMxZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5oCkBAIC0w
LDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRleHRUcmFja0N1ZUxpc3RfaAorI2RlZmlu
ZSBUZXh0VHJhY2tDdWVMaXN0X2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1
ZGUgIlBhc3NSZWZQdHIuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBUZXh0VHJhY2tDdWVMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8VGV4
dFRyYWNrQ3VlTGlzdD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFj
a0N1ZUxpc3Q+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRl
eHRUcmFja0N1ZUxpc3QpOworICAgIH0KKworICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKCkgY29u
c3Q7CisgICAgVGV4dFRyYWNrQ3VlKiBnZXRDdWVCeUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0Owor
ICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gYWN0aXZlQ3VlcygpOworCisgICAgdm9p
ZCBhcHBlbmQoY29uc3QgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+Jik7CisgICAgdm9pZCBhcHBl
bmQoVmVjdG9yPFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+Jik7CisgICAgdm9pZCByZW1vdmUo
Y29uc3QgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+Jik7CisKK3ByaXZhdGU6CisgICAgVGV4dFRy
YWNrQ3VlTGlzdCgpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDUw
NjcxZjc0YTFjZjQ3MWFhM2FiZDQ2OGI3MGJkMzI5OTdjNDY0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tQcml2YXRlLmgKQEAgLTAsMCArMSw2NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgVGV4dFRyYWNrUHJpdmF0ZV9oCisjZGVmaW5lIFRleHRUcmFja1By
aXZhdGVfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVGV4dFRyYWNr
LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDdWVMb2FkZXJDbGllbnQ7CitjbGFz
cyBUZXh0VHJhY2tDdWVMaXN0OworCitjbGFzcyBUZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgVGV4dFRyYWNrUHJpdmF0ZUludGVy
ZmFjZSgpIHsgfQorICAgIHZpcnR1YWwgflRleHRUcmFja1ByaXZhdGVJbnRlcmZhY2UoKSB7IH0K
KworICAgIHZpcnR1YWwgU3RyaW5nIGtpbmQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJp
bmcgbGFiZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25z
dCA9IDA7CisKKyAgICB2aXJ0dWFsIFRleHRUcmFjazo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCBUZXh0VHJhY2s6Ok1vZGUgbW9kZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TW9kZShUZXh0VHJhY2s6Ok1vZGUpID0gMDsKKworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBjdWVzKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBhY3RpdmVDdWVzKCkgY29u
c3QgPSAwOworCisgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgb3ZlcnJpZGRlbiBi
eSB0cmFja3MgdGhhdCBsb2FkIGN1ZSBkYXRhIGZyb20gYSBVUkwuCisgICAgdmlydHVhbCB2b2lk
IGxvYWQoY29uc3QgU3RyaW5nJiB1cmwpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43ZWZmMDc2OWZmMjU4YjcwZjYwY2MxYmJiMDc3NmJlNDdjMjBkYzhhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1ZUxvYWRlci5jcHAKQEAgLTAsMCArMSw0
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCisKKyNpbmNsdWRlICJDdWVMb2FkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Cit2b2lkIEN1ZUxvYWRlcjo6c2V0Q3VlTG9hZGVyQ2xpZW50KEN1ZUxvYWRlckNsaWVudCogY2xp
ZW50KQoreworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0N1ZUxvYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzZTMyNDEzZjgyYzY5N2EwZDI4ZDQ5Mjhi
ZGU0ZTU5YzdkNDJmM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q3VlTG9hZGVyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEN1ZUxvYWRl
cl9oCisjZGVmaW5lIEN1ZUxvYWRlcl9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ3Vl
TG9hZGVyOworY2xhc3MgVGV4dFRyYWNrQ3VlOworY2xhc3MgVGV4dFRyYWNrQ3VlTGlzdDsKKwor
Ly8gTGlzdGVuZXIgdG8gQ3VlTG9hZGVyLgorY2xhc3MgQ3VlTG9hZGVyQ2xpZW50IHsKK3B1Ymxp
YzoKKyAgICAvLyBRdWVyaWVzIEN1ZUxvYWRlciBmb3IgbmV3ZXN0IGN1ZXMuCisgICAgdmlydHVh
bCB2b2lkIGZldGNoTmV3Q3Vlc0Zyb21Mb2FkZXIoQ3VlTG9hZGVyKikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVDdWVzRnJvbUluZGV4KGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSA9IDA7
Cit9OworCitjbGFzcyBDdWVMb2FkZXIgeworcHVibGljOgorICAgIHZvaWQgc2V0Q3VlTG9hZGVy
Q2xpZW50KEN1ZUxvYWRlckNsaWVudCopOworCisgICAgLy8gSW5mb3JtcyBjbGllbnQgdGhhdCBu
ZXcgY3VlcyBoYXZlIGJlZW4gbG9hZGVkLgorICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzTG9hZGVk
KCkgPSAwOworCisgICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcCBvZiBjdXJyZW50bHkgbG9hZGVk
IGN1ZXMgaW50byBvdXRDdWVzLgorICAgIHZpcnR1YWwgdm9pZCBmZXRjaE5ld2VzdEN1ZXMoVmVj
dG9yPFRleHRUcmFja0N1ZSo+JiBjdWVzKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBDdWVMb2Fk
ZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RyYWNrL0N1ZVBhcnNlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjBiNmZmZTNk
ZmVjMWEzNWE0Y2RjMDcwM2ViMmIzMWNhM2JiZDAwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RyYWNrL0N1ZVBhcnNlci5jcHAKQEAgLTAsMCArMSw3MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRl
ICJDdWVQYXJzZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0N1ZVBhcnNlcjo6Q3VlUGFyc2VyKCkKK3sKKyAgICAvLyBGSVhNRShh
bm5hY2MvdnJrKTogSW1wbGVtZW50LgorfQorCitDdWVQYXJzZXI6On5DdWVQYXJzZXIoKQorewor
fQorCit2b2lkIEN1ZVBhcnNlcjo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICAvLyBG
SVhNRShhbm5hY2MvdnJrKTogSW1wbGVtZW50LgorICAgIFVOVVNFRF9QQVJBTSh1cmwpOworfQor
Cit2b2lkIEN1ZVBhcnNlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxl
bikKK3sKKyAgICAvLyBGSVhNRShhbm5hY2MvdnJrKTogSW1wbGVtZW50LgorICAgIFVOVVNFRF9Q
QVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0obGVuKTsKK30KKwordm9pZCBDdWVQYXJzZXI6
OmZldGNoUGFyc2VkQ3VlcyhWZWN0b3I8UGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+ID4mIGN1ZXMp
Cit7CisgICAgLy8gRklYTUUoYW5uYWNjL3Zyayk6IEltcGxlbWVudC4KKyAgICBVTlVTRURfUEFS
QU0oY3Vlcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90cmFjay9DdWVQYXJzZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RyYWNrL0N1ZVBhcnNlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkMGQ2ZDgwM2Ex
NjRhZWI1ZWZkY2Q3NGZmMTNjNjI0YTczNjJiNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90cmFjay9DdWVQYXJzZXIuaApAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgQ3VlUGFyc2VyX2gKKyNkZWZpbmUgQ3VlUGFyc2VyX2gKKworI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKworI2luY2x1ZGUgIkN1ZVBhcnNlclByaXZhdGUuaCIKKyNpbmNsdWRlICJUaHJlYWRh
YmxlTG9hZGVyLmgiCisjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRl
eHRUcmFja0N1ZTsKKworY2xhc3MgQ3VlUGFyc2VyIDogcHVibGljIFRocmVhZGFibGVMb2FkZXJD
bGllbnQgeworcHVibGljOgorICAgIEN1ZVBhcnNlcigpOworICAgIHZpcnR1YWwgfkN1ZVBhcnNl
cigpOworCisgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudCBtZXRob2RzLgorICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCk7CisKKyAgICB2b2lkIGxvYWQoY29uc3Qg
U3RyaW5nJiB1cmwpOworICAgIHZvaWQgZmV0Y2hQYXJzZWRDdWVzKFZlY3RvcjxQYXNzUmVmUHRy
PFRleHRUcmFja0N1ZT4gPiYpOworCitwcml2YXRlOgorICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9h
ZGVyPiBtX2xvYWRlcjsKKyAgICBPd25QdHI8Q3VlUGFyc2VyUHJpdmF0ZUludGVyZmFjZT4gbV9w
cml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyUHJpdmF0ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJjM2U0ZmJjMDk1MWJlMzRjYmYwMTA3MWVkMjg2OWE5OWEyZjgzMGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90cmFjay9DdWVQYXJzZXJQcml2
YXRlLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEN1ZVBhcnNlclByaXZhdGVfaAorI2RlZmlu
ZSBDdWVQYXJzZVByaXZhdGVfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVk
ZSAiVGV4dFRyYWNrQ3VlLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQ3VlUGFyc2VyUHJpdmF0ZUNsaWVudCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB2b2lkIG5ld0N1ZXNQYXJzZWQoKSA9IDA7Cit9OworCitjbGFzcyBDdWVQYXJzZXJQ
cml2YXRlSW50ZXJmYWNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdWVQYXJzZXJQcml2
YXRlSW50ZXJmYWNlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+Q3VlUGFyc2VyUHJpdmF0ZUludGVyZmFjZSgpIHsgfQorCisgICAgLy8gSW5wdXQgZGF0
YSB0byB0aGUgcGFyc2VyIHRvIHBhcnNlLgorICAgIHZpcnR1YWwgdm9pZCBwYXJzZUJ5dGVzKGNv
bnN0IGNoYXIqLCBpbnQpID0gMDsKKworICAgIC8vIFRyYW5zZmVycyBvd25lcnNoaXAgb2YgbGFz
dCBwYXJzZWQgY3VlcyB0byBjYWxsZXIuCisgICAgdmlydHVhbCB2b2lkIGZldGNoUGFyc2VkQ3Vl
cyhWZWN0b3I8UGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+ID4mKSA9IDA7CisKK3Byb3RlY3RlZDoK
KyAgICBDdWVQYXJzZXJQcml2YXRlSW50ZXJmYWNlKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97653</attachid>
            <date>2011-06-17 14:32:41 -0700</date>
            <delta_ts>2011-06-17 16:40:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60379-20110617143240.patch</filename>
            <type>text/plain</type>
            <size>81845</size>
            <attacher name="Anna Cavender">annacc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkxNDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYzg1Nzk5
MjE4NGI2NTJiZDA3YmU0NmVjZjVlZjdlZTkwNmUwOWNiOC4uZTJhZWQzMjliZjM4N2JmNTA5Y2Nh
ZTY0YzY4MzQ5NTVhMzlhYmJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQ2LDYgKzQ2LDcg
QEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9w
bGF0Zm9ybS9zcWwiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvdHJhbnNjb2RlciIKKyAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vdHJhY2siCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsdWdpbnMiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3JlbmRlcmluZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcmVuZGVyaW5nL21h
dGhtbCIKQEAgLTE5NjEsNyArMTk2MiwxNyBAQCBFTkRJRiAoKQogCiBJRiAoRU5BQkxFX1ZJREVP
X1RSQUNLKQogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBodG1sL0N1
ZUluZGV4LmNwcAogICAgICAgICBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCisgICAgICAgIGh0
bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwCisgICAgICAgIGh0bWwvTG9hZGFibGVUZXh0VHJhY2tJ
bXBsLmNwcAorICAgICAgICBodG1sL011dGFibGVUZXh0VHJhY2suY3BwCisgICAgICAgIGh0bWwv
TXV0YWJsZVRleHRUcmFja0ltcGwuY3BwCisgICAgICAgIGh0bWwvVGV4dFRyYWNrLmNwcAorICAg
ICAgICBodG1sL1RleHRUcmFja0N1ZS5jcHAKKyAgICAgICAgaHRtbC9UZXh0VHJhY2tDdWVMaXN0
LmNwcAorICAgICAgICBsb2FkZXIvQ3VlTG9hZGVyLmNwcAorICAgICAgICBwbGF0Zm9ybS90cmFj
ay9DdWVQYXJzZXIuY3BwCiAgICAgKQogRU5ESUYoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWMyMTFiYzRl
ZGVmOTc4ZWQ3ODM1Zjc1NGM1NjAzMmEzN2EzZTY3OC4uMTkzMWNmNWVjY2M3OGI5MmEyMDViZWI0
NGI1NTkxNjRjNDUzZTliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDExLTA2LTE3
ICBBbm5hIENhdmVuZGVyICA8YW5uYWNjQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgaW5pdGlhbCBpbnRlcmZhY2Vz
IGFuZCBzdHVicyBmb3IgdHJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYwMzc5CisKKyAgICAgICAgVGhpcyBtYXJrcyB0aGUgZmlyc3QgcGF0Y2gg
b2YgYSBzZXJpZXMgdG8gaW1wbGVtZW50IG91dC1vZi1iYW5kCisgICAgICAgIDx0cmFjaz4gc3Vw
cG9ydCBpbiBXZWJLaXQuIFRoaXMgcGF0Y2ggYWRkcyBzb21lIG9mIHRoZSBjb3JlIGhlYWRlciBm
aWxlcworICAgICAgICBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBzdHViIC5jcHAgZmlsZXMuCisg
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIGZlYXR1cmUgaXMgaGlkZGVuIGJlaGluZCBW
SURFT19UUkFDSyBmZWF0dXJlCisgICAgICAgIGRlZmluZSwgd2hpY2ggaXMgdHVybmVkIG9mZi4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNv
cmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnByaToK
KyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9DdWVJbmRleC5jcHA6IEFkZGVkLgorICAgICAg
ICAqIGh0bWwvQ3VlSW5kZXguaDogQWRkZWQuCisgICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRU
cmFjay5jcHA6IEFkZGVkLgorICAgICAgICAqIGh0bWwvTG9hZGFibGVUZXh0VHJhY2suaDogQWRk
ZWQuCisgICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFja0ltcGwuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKiBodG1sL0xvYWRhYmxlVGV4dFRyYWNrSW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKiBo
dG1sL011dGFibGVUZXh0VHJhY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL011dGFibGVU
ZXh0VHJhY2suaDogQWRkZWQuCisgICAgICAgICogaHRtbC9NdXRhYmxlVGV4dFRyYWNrSW1wbC5j
cHA6IEFkZGVkLgorICAgICAgICAqIGh0bWwvTXV0YWJsZVRleHRUcmFja0ltcGwuaDogQWRkZWQu
CisgICAgICAgICogaHRtbC9UZXh0VHJhY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL1Rl
eHRUcmFjay5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZS5jcHA6IEFkZGVk
LgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNrQ3VlLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwv
VGV4dFRyYWNrQ3VlTGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNrQ3Vl
TGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL1RleHRUcmFja1ByaXZhdGUuaDogQWRkZWQu
CisgICAgICAgICogbG9hZGVyL0N1ZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxvYWRl
ci9DdWVMb2FkZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2Vy
LmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyLmg6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL3RyYWNrL0N1ZVBhcnNlclByaXZhdGUuaDogQWRkZWQuCisK
IDIwMTEtMDYtMTYgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXAKaW5kZXggNDY2YTZhMGY4MDAzZmI4MzY1Njc0NzQwZTkyNDgxOTcx
YWU1MTRmYS4uZGY2NGE5ZmM2MzEyOThlMzg0MDk3ZDc3ZmIzYjc3NzY3MzYyYmQ5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTIwMSw2ICsyMDEsNyBAQAogICAg
ICAgJy4uL3BsYXRmb3JtL3NxbCcsCiAgICAgICAnLi4vcGxhdGZvcm0vdGV4dCcsCiAgICAgICAn
Li4vcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyJywKKyAgICAgICcuLi9wbGF0Zm9ybS90cmFjaycs
CiAgICAgICAnLi4vcGx1Z2lucycsCiAgICAgICAnLi4vcGx1Z2lucy9jaHJvbWl1bScsCiAgICAg
ICAnLi4vcmVuZGVyaW5nJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwODRkNGZiMmI2MGEyYjBhNTcz
N2IwNmZmZTk1ZDQ0NzNjMTJmZTVmLi5hMjBiNTlkNjgxNTJhYzgwYWQwNzQ5YTcyOGU2OWRhOWQ3
NjdlMmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yODQ3LDYgKzI4NDcsOCBAQAogICAgICAgICAg
ICAgJ2h0bWwvQ29sbGVjdGlvbkNhY2hlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9Db2xvcklu
cHV0VHlwZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvQ29sb3JJbnB1dFR5cGUuaCcsCisgICAg
ICAgICAgICAnaHRtbC9DdWVJbmRleC5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvQ3VlSW5kZXgu
aCcsCiAgICAgICAgICAgICAnaHRtbC9ET01Gb3JtRGF0YS5jcHAnLAogICAgICAgICAgICAgJ2h0
bWwvRE9NRm9ybURhdGEuaCcsCiAgICAgICAgICAgICAnaHRtbC9ET01TZXR0YWJsZVRva2VuTGlz
dC5jcHAnLApAQCAtMzAzOCw5ICszMDQwLDE3IEBACiAgICAgICAgICAgICAnaHRtbC9Jc0luZGV4
SW5wdXRUeXBlLmgnLAogICAgICAgICAgICAgJ2h0bWwvTGFiZWxzTm9kZUxpc3QuY3BwJywKICAg
ICAgICAgICAgICdodG1sL0xhYmVsc05vZGVMaXN0LmgnLAorICAgICAgICAgICAgJ2h0bWwvTG9h
ZGFibGVUZXh0VHJhY2suY3BwJywKKyAgICAgICAgICAgICdodG1sL0xvYWRhYmxlVGV4dFRyYWNr
LmgnLAorICAgICAgICAgICAgJ2h0bWwvTG9hZGFibGVUZXh0VHJhY2tJbXBsLmNwcCcsCisgICAg
ICAgICAgICAnaHRtbC9Mb2FkYWJsZVRleHRUcmFja0ltcGwuaCcsCiAgICAgICAgICAgICAnaHRt
bC9NZWRpYURvY3VtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9NZWRpYURvY3VtZW50Lmgn
LAogICAgICAgICAgICAgJ2h0bWwvTWVkaWFFcnJvci5oJywKKyAgICAgICAgICAgICdodG1sL011
dGFibGVUZXh0VHJhY2suY3BwJywKKyAgICAgICAgICAgICdodG1sL011dGFibGVUZXh0VHJhY2su
aCcsCisgICAgICAgICAgICAnaHRtbC9NdXRhYmxlVGV4dFRyYWNrSW1wbC5jcHAnLAorICAgICAg
ICAgICAgJ2h0bWwvTXV0YWJsZVRleHRUcmFja0ltcGwuaCcsCiAgICAgICAgICAgICAnaHRtbC9N
b250aElucHV0VHlwZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvTW9udGhJbnB1dFR5cGUuaCcs
CiAgICAgICAgICAgICAnaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwJywKQEAgLTMwNzQsNiArMzA4
NCwxMyBAQAogICAgICAgICAgICAgJ2h0bWwvVGV4dElucHV0VHlwZS5jcHAnLAogICAgICAgICAg
ICAgJ2h0bWwvVGV4dElucHV0VHlwZS5oJywKICAgICAgICAgICAgICdodG1sL1RleHRNZXRyaWNz
LmgnLAorICAgICAgICAgICAgJ2h0bWwvVGV4dFRyYWNrLmNwcCcsCisgICAgICAgICAgICAnaHRt
bC9UZXh0VHJhY2suaCcsCisgICAgICAgICAgICAnaHRtbC9UZXh0VHJhY2tDdWUuY3BwJywKKyAg
ICAgICAgICAgICdodG1sL1RleHRUcmFja0N1ZS5oJywKKyAgICAgICAgICAgICdodG1sL1RleHRU
cmFja0N1ZUxpc3QuY3BwJywKKyAgICAgICAgICAgICdodG1sL1RleHRUcmFja0N1ZUxpc3QuaCcs
CisgICAgICAgICAgICAnaHRtbC9UZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlLmgnLAogICAgICAg
ICAgICAgJ2h0bWwvVGltZUlucHV0VHlwZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvVGltZUlu
cHV0VHlwZS5oJywKICAgICAgICAgICAgICdodG1sL1RpbWVSYW5nZXMuY3BwJywKQEAgLTMzMzYs
NiArMzM1Myw4IEBACiAgICAgICAgICAgICAnbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bC5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCcs
CiAgICAgICAgICAgICAnbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3Bw
JywKKyAgICAgICAgICAgICdsb2FkZXIvQ3VlTG9hZGVyLmNwcCcsCisgICAgICAgICAgICAnbG9h
ZGVyL0N1ZUxvYWRlci5oJywKICAgICAgICAgICAgICdsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
JywKICAgICAgICAgICAgICdsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCcsCiAg
ICAgICAgICAgICAnbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oJywKQEAgLTUwMzUs
NiArNTA1NCw5IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC93aW5jZS9UZXh0QnJlYWtJ
dGVyYXRvcldpbkNFLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC93aW5jZS9UZXh0
Q29kZWNXaW5DRS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvd2luY2UvVGV4dENv
ZGVjV2luQ0UuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyLmNwcCcs
CisgICAgICAgICAgICAncGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyLmgnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL3RyYWNrL0N1ZVBhcnNlclByaXZhdGUuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vd2luL0JTdHJpbmcuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS93aW4vQlN0cmluZy5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS93aW4vQml0bWFwSW5mby5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
aQppbmRleCA4MDkyNmI4NjMwM2I4NTNmZmQzZTVkNDQ3YjJiZmY0OWE5Yzc3NWNkLi43NGMwOGJm
OGRlMDU2ZTE3OTc1ZjFkZmE3NmQ0ZTQyZmU4ODU2OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQpAQCAtMTAx
LDYgKzEwMSw3IEBAIFdFQkNPUkVfSU5DTFVERVBBVEggPSBcCiAgICAgJCRTT1VSQ0VfRElSL1dl
YkNvcmUvcGxhdGZvcm0vc3FsIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0IFwKICAgICAkJFNPVVJDRV9ESVIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIg
XAorICAgICQkU09VUkNFX0RJUi9XZWJDb3JlL3BsYXRmb3JtL3RyYWNrIFwKICAgICAkJFNPVVJD
RV9ESVIvV2ViQ29yZS9wbHVnaW5zIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViQ29yZS9yZW5kZXJp
bmcgXAogICAgICQkU09VUkNFX0RJUi9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwppbmRleCA0MjQ3MDVjODNlNTJlZjJhMTg4Y2JiYjVmMzdjMzAxZTI1NWFlNzA5Li4xNzNi
ZjQ2YWZjOTNkZGNjZGUyNGEzYTUyNTgzOTdhM2VmZmE3Yzk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAt
MTYzNiw2ICsxNjM2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9jYW52YXMvVWludDhBcnJh
eS5oIFwKICAgICBodG1sL0NsYXNzTGlzdC5oIFwKICAgICBodG1sL0NvbGxlY3Rpb25DYWNoZS5o
IFwKKyAgICBodG1sL0N1ZUluZGV4LmggXAogICAgIGh0bWwvRE9NRm9ybURhdGEuaCBcCiAgICAg
aHRtbC9ET01TZXR0YWJsZVRva2VuTGlzdC5oIFwKICAgICBodG1sL0RPTVRva2VuTGlzdC5oIFwK
QEAgLTE3MjQsMTYgKzE3MjUsMjUgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudC5oIFwKICAgICBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBcCiAgICAg
aHRtbC9IVE1MVGl0bGVFbGVtZW50LmggXAorICAgIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5oIFwK
ICAgICBodG1sL0hUTUxVTGlzdEVsZW1lbnQuaCBcCiAgICAgaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmggXAogICAgIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oIFwKICAgICBodG1sL0ltYWdl
RGF0YS5oIFwKICAgICBodG1sL0ltYWdlRG9jdW1lbnQuaCBcCiAgICAgaHRtbC9MYWJlbHNOb2Rl
TGlzdC5oIFwKKyAgICBodG1sL0xvYWRhYmxlVGV4dFRyYWNrLmggXAorICAgIGh0bWwvTG9hZGFi
bGVUZXh0VHJhY2tJbXBsLmggXAogICAgIGh0bWwvTWVkaWFEb2N1bWVudC5oIFwKKyAgICBodG1s
L011dGFibGVUZXh0VHJhY2suaCBcCisgICAgaHRtbC9NdXRhYmxlVGV4dFRyYWNrSW1wbC5oIFwK
ICAgICBodG1sL1BsdWdpbkRvY3VtZW50LmggXAogICAgIGh0bWwvU3RlcFJhbmdlLmggXAogICAg
IGh0bWwvVGV4dERvY3VtZW50LmggXAorICAgIGh0bWwvVGV4dFRyYWNrLmggXAorICAgIGh0bWwv
VGV4dFRyYWNrQ3VlLmggXAorICAgIGh0bWwvVGV4dFRyYWNrQ3VlTGlzdC5oIFwKKyAgICBodG1s
L1RleHRUcmFja1ByaXZhdGUuaCBcCiAgICAgaHRtbC9UaW1lUmFuZ2VzLmggXAogICAgIGh0bWwv
VmFsaWRpdHlTdGF0ZS5oIFwKICAgICBodG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5oIFwK
QEAgLTE4MTYsNiArMTgyNiw3IEBAIEhFQURFUlMgKz0gXAogICAgIGxvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5oIFwKICAgICBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmggXAogICAg
IGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggXAorICAgIGxvYWRlci9D
dWVMb2FkZXIuaCBcCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggXAog
ICAgIGxvYWRlci9Eb2N1bWVudExvYWRlci5oIFwKICAgICBsb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmggXApAQCAtMjA5MCw2ICsyMTAxLDggQEAgSEVBREVSUyArPSBcCiAgICAgcGxh
dGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oIFwKICAgICBwbGF0Zm9ybS9UaHJlYWRUaW1lcnMuaCBc
CiAgICAgcGxhdGZvcm0vVGltZXIuaCBcCisgICAgcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyLmgg
XAorICAgIHBsYXRmb3JtL3RyYWNrL0N1ZVBhcnNlclByaXZhdGUuaCBcCiAgICAgcGxhdGZvcm0v
V2lkZ2V0LmggXAogICAgIHBsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5oIFwKICAgICBwbGF0
Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUwMjQxNWNkYmZhMmFmZmZlNzBlZWQ0OWE5
MzI0YjRjNTcyN2EzZDEuLmRjYTljYTYyZDViMzgyM2FiMDg1NWM4NDFhZmZlZGVkMWE1MmJhODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTQwMDEsNiArNDAwMSwyOCBAQAogCQlCMTQzNTNGODEzOEVBOTVCMDBENTMyNzYgLyog
SlNTdHJlYW1MaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIxNDM1M0Y2MTM4RUE5NUIwMEQ1MzI3NiAvKiBKU1N0cmVhbUxpc3QuY3BwICovOyB9
OwogCQlCMTQzNTNGOTEzOEVBOTVCMDBENTMyNzYgLyogSlNTdHJlYW1MaXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMTQzNTNGNzEzOEVBOTVCMDBE
NTMyNzYgLyogSlNTdHJlYW1MaXN0LmggKi87IH07CiAJCUIxODI3NDkzMTM0Q0E0QzEwMEI5OEMy
RCAvKiBDYWxsYmFja0Z1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIxODI3NDkyMTM0Q0E0QzEwMEI5OEMyRCAvKiBDYWxsYmFja0Z1bmN0
aW9uLmNwcCAqLzsgfTsKKwkJQjFBRDRFNUMxM0ExMkEwQjAwODQ2QjI3IC8qIEN1ZUluZGV4LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTRC
MTNBMTJBMEIwMDg0NkIyNyAvKiBDdWVJbmRleC5jcHAgKi87IH07CisJCUIxQUQ0RTVEMTNBMTJB
MEIwMDg0NkIyNyAvKiBDdWVJbmRleC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjFBRDRFNEMxM0ExMkEwQjAwODQ2QjI3IC8qIEN1ZUluZGV4LmggKi87
IH07CisJCUIxQUQ0RTVFMTNBMTJBMEIwMDg0NkIyNyAvKiBMb2FkYWJsZVRleHRUcmFjay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUFENEU0RDEz
QTEyQTBCMDA4NDZCMjcgLyogTG9hZGFibGVUZXh0VHJhY2suY3BwICovOyB9OworCQlCMUFENEU1
RjEzQTEyQTBCMDA4NDZCMjcgLyogTG9hZGFibGVUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTRFMTNBMTJBMEIwMDg0NkIyNyAv
KiBMb2FkYWJsZVRleHRUcmFjay5oICovOyB9OworCQlCMUFENEU2MDEzQTEyQTBCMDA4NDZCMjcg
LyogTG9hZGFibGVUZXh0VHJhY2tJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTRGMTNBMTJBMEIwMDg0NkIyNyAvKiBMb2FkYWJsZVRl
eHRUcmFja0ltcGwuY3BwICovOyB9OworCQlCMUFENEU2MTEzQTEyQTBCMDA4NDZCMjcgLyogTG9h
ZGFibGVUZXh0VHJhY2tJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMUFENEU1MDEzQTEyQTBCMDA4NDZCMjcgLyogTG9hZGFibGVUZXh0VHJhY2tJ
bXBsLmggKi87IH07CisJCUIxQUQ0RTYyMTNBMTJBMEIwMDg0NkIyNyAvKiBNdXRhYmxlVGV4dFRy
YWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIx
QUQ0RTUxMTNBMTJBMEIwMDg0NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNrLmNwcCAqLzsgfTsKKwkJ
QjFBRDRFNjMxM0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTUyMTNBMTJBMEIwMDg0
NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNrLmggKi87IH07CisJCUIxQUQ0RTY0MTNBMTJBMEIwMDg0
NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNrSW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUFENEU1MzEzQTEyQTBCMDA4NDZCMjcgLyogTXV0YWJs
ZVRleHRUcmFja0ltcGwuY3BwICovOyB9OworCQlCMUFENEU2NTEzQTEyQTBCMDA4NDZCMjcgLyog
TXV0YWJsZVRleHRUcmFja0ltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIxQUQ0RTU0MTNBMTJBMEIwMDg0NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNr
SW1wbC5oICovOyB9OworCQlCMUFENEU2NjEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTU1
MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2suY3BwICovOyB9OworCQlCMUFENEU2NzEzQTEy
QTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMUFENEU1NjEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrLmgg
Ki87IH07CisJCUIxQUQ0RTY4MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNTcxM0Ex
MkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZS5jcHAgKi87IH07CisJCUIxQUQ0RTY5MTNBMTJB
MEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTU4MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tD
dWUuaCAqLzsgfTsKKwkJQjFBRDRFNkExM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZUxp
c3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFB
RDRFNTkxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZUxpc3QuY3BwICovOyB9OworCQlC
MUFENEU2QjEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNUExM0ExMkEwQjAwODQ2
QjI3IC8qIFRleHRUcmFja0N1ZUxpc3QuaCAqLzsgfTsKKwkJQjFBRDRFNkMxM0ExMkEwQjAwODQ2
QjI3IC8qIFRleHRUcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTVCMTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tQcml2
YXRlLmggKi87IH07CisJCUIxQUQ0RTczMTNBMTJBNDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNzEx
M0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5jcHAgKi87IH07CisJCUIxQUQ0RTc0MTNBMTJB
NDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTcyMTNBMTJBNDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuaCAq
LzsgfTsKKwkJQjFBRDRFN0IxM0ExMkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUFENEU3ODEzQTEyQTcy
MDA4NDZCMjcgLyogQ3VlUGFyc2VyLmNwcCAqLzsgfTsKKwkJQjFBRDRFN0MxM0ExMkE3MjAwODQ2
QjI3IC8qIEN1ZVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjFBRDRFNzkxM0ExMkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlci5oICovOyB9Owor
CQlCMUFENEU3RDEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFN0ExM0ExMkE3MjAw
ODQ2QjI3IC8qIEN1ZVBhcnNlclByaXZhdGUuaCAqLzsgfTsKIAkJQjFENUVDQjUxMzRCNThEQTAw
ODdDNzhGIC8qIENhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIxRDVFQ0I0MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1
bmN0aW9uLmggKi87IH07CiAJCUIxRTU0NTdBMTM0NjI5MUYwMDkyQTU0NSAvKiBHZW5lcmF0ZWRT
dHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjFFNTQ1NzExMzQ2MjkxRjAwOTJBNTQ1IC8qIEdlbmVyYXRlZFN0cmVhbS5jcHAgKi87IH07CiAJ
CUIxRTU0NTdCMTM0NjI5MUYwMDkyQTU0NSAvKiBHZW5lcmF0ZWRTdHJlYW0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRTU0NTcyMTM0NjI5MUYwMDky
QTU0NSAvKiBHZW5lcmF0ZWRTdHJlYW0uaCAqLzsgfTsKQEAgLTEwMzg2LDYgKzEwNDA4LDI4IEBA
CiAJCUIxNDM1M0Y2MTM4RUE5NUIwMEQ1MzI3NiAvKiBKU1N0cmVhbUxpc3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJlYW1MaXN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjE0MzUzRjcxMzhFQTk1QjAwRDUzMjc2IC8qIEpTU3RyZWFt
TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmVhbUxpc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjE4Mjc0OTIxMzRDQTRDMTAwQjk4QzJEIC8q
IENhbGxiYWNrRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2FsbGJhY2tGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIx
QUQ0RTRCMTNBMTJBMEIwMDg0NkIyNyAvKiBDdWVJbmRleC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBDdWVJbmRleC5jcHA7IHBhdGggPSBodG1sL0N1ZUluZGV4LmNw
cDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlCMUFENEU0QzEzQTEyQTBCMDA4NDZC
MjcgLyogQ3VlSW5kZXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VlSW5k
ZXguaDsgcGF0aCA9IGh0bWwvQ3VlSW5kZXguaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OworCQlCMUFENEU0RDEzQTEyQTBCMDA4NDZCMjcgLyogTG9hZGFibGVUZXh0VHJhY2suY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTG9hZGFibGVUZXh0VHJhY2suY3Bw
OyBwYXRoID0gaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKKwkJQjFBRDRFNEUxM0ExMkEwQjAwODQ2QjI3IC8qIExvYWRhYmxlVGV4dFRyYWNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExvYWRhYmxlVGV4dFRyYWNrLmg7
IHBhdGggPSBodG1sL0xvYWRhYmxlVGV4dFRyYWNrLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9P
VDsgfTsKKwkJQjFBRDRFNEYxM0ExMkEwQjAwODQ2QjI3IC8qIExvYWRhYmxlVGV4dFRyYWNrSW1w
bC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMb2FkYWJsZVRleHRU
cmFja0ltcGwuY3BwOyBwYXRoID0gaHRtbC9Mb2FkYWJsZVRleHRUcmFja0ltcGwuY3BwOyBzb3Vy
Y2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUIxQUQ0RTUwMTNBMTJBMEIwMDg0NkIyNyAvKiBM
b2FkYWJsZVRleHRUcmFja0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TG9hZGFibGVUZXh0VHJhY2tJbXBsLmg7IHBhdGggPSBodG1sL0xvYWRhYmxlVGV4dFRyYWNrSW1w
bC5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUIxQUQ0RTUxMTNBMTJBMEIwMDg0
NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IE11dGFibGVUZXh0VHJhY2suY3BwOyBwYXRoID0gaHRtbC9NdXRhYmxlVGV4dFRy
YWNrLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlCMUFENEU1MjEzQTEyQTBC
MDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBNdXRhYmxlVGV4dFRyYWNrLmg7IHBhdGggPSBodG1sL011dGFibGVUZXh0VHJhY2su
aDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlCMUFENEU1MzEzQTEyQTBCMDA4NDZC
MjcgLyogTXV0YWJsZVRleHRUcmFja0ltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTXV0YWJsZVRleHRUcmFja0ltcGwuY3BwOyBwYXRoID0gaHRtbC9NdXRhYmxl
VGV4dFRyYWNrSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQjFBRDRF
NTQxM0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2tJbXBsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE11dGFibGVUZXh0VHJhY2tJbXBsLmg7IHBhdGggPSBodG1s
L011dGFibGVUZXh0VHJhY2tJbXBsLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJ
QjFBRDRFNTUxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUZXh0VHJhY2suY3BwOyBwYXRoID0gaHRtbC9UZXh0VHJh
Y2suY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUIxQUQ0RTU2MTNBMTJBMEIw
MDg0NkIyNyAvKiBUZXh0VHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
VGV4dFRyYWNrLmg7IHBhdGggPSBodG1sL1RleHRUcmFjay5oOyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IH07CisJCUIxQUQ0RTU3MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVGV4dFRyYWNrQ3VlLmNwcDsg
cGF0aCA9IGh0bWwvVGV4dFRyYWNrQ3VlLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OworCQlCMUFENEU1ODEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRleHRUcmFja0N1ZS5oOyBwYXRoID0gaHRtbC9UZXh0
VHJhY2tDdWUuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlCMUFENEU1OTEzQTEy
QTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBUZXh0VHJhY2tDdWVMaXN0LmNwcDsgcGF0aCA9IGh0bWwvVGV4dFRy
YWNrQ3VlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQjFBRDRFNUEx
M0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gVGV4dFRyYWNrQ3VlTGlzdC5oOyBwYXRoID0gaHRtbC9UZXh0VHJhY2tD
dWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQjFBRDRFNUIxM0ExMkEw
QjAwODQ2QjI3IC8qIFRleHRUcmFja1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gVGV4dFRyYWNrUHJpdmF0ZS5oOyBwYXRoID0gaHRtbC9UZXh0VHJhY2tQcml2YXRl
Lmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQjFBRDRFNzExM0ExMkE0NjAwODQ2
QjI3IC8qIEN1ZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBDdWVMb2FkZXIuY3BwOyBwYXRoID0gbG9hZGVyL0N1ZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKKwkJQjFBRDRFNzIxM0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdWVMb2FkZXIuaDsgcGF0aCA9
IGxvYWRlci9DdWVMb2FkZXIuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlCMUFE
NEU3ODEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEN1ZVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUIxQUQ0RTc5MTNBMTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VlUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUIxQUQ0RTdBMTNBMTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXJQcml2YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEN1ZVBhcnNlclByaXZhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjFENUVDQjQxMzRCNThEQTAwODdDNzhGIC8qIENh
bGxiYWNrRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbGJh
Y2tGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMUU1NDU3MTEzNDYy
OTFGMDA5MkE1NDUgLyogR2VuZXJhdGVkU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRlZFN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIxRTU0NTcyMTM0NjI5MUYwMDkyQTU0NSAvKiBHZW5lcmF0ZWRTdHJlYW0uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdGVkU3RyZWFtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzU0Miw2ICsxMzU4NiwyNiBAQAogCQk0MTdEQTRD
RDEzNzM0MjA0MDA3QzU3RkIgLyogdGVzdGluZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJQjFBRDRFNzcxM0ExMkE3MjAwODQ2QjI3IC8qIHRyYWNrICov
LAorCQkJCUIxQUQ0RTcxMTNBMTJBNDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuY3BwICovLAorCQkJ
CUIxQUQ0RTcyMTNBMTJBNDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuaCAqLywKKwkJCQlCMUFENEU0
QjEzQTEyQTBCMDA4NDZCMjcgLyogQ3VlSW5kZXguY3BwICovLAorCQkJCUIxQUQ0RTRDMTNBMTJB
MEIwMDg0NkIyNyAvKiBDdWVJbmRleC5oICovLAorCQkJCUIxQUQ0RTREMTNBMTJBMEIwMDg0NkIy
NyAvKiBMb2FkYWJsZVRleHRUcmFjay5jcHAgKi8sCisJCQkJQjFBRDRFNEUxM0ExMkEwQjAwODQ2
QjI3IC8qIExvYWRhYmxlVGV4dFRyYWNrLmggKi8sCisJCQkJQjFBRDRFNEYxM0ExMkEwQjAwODQ2
QjI3IC8qIExvYWRhYmxlVGV4dFRyYWNrSW1wbC5jcHAgKi8sCisJCQkJQjFBRDRFNTAxM0ExMkEw
QjAwODQ2QjI3IC8qIExvYWRhYmxlVGV4dFRyYWNrSW1wbC5oICovLAorCQkJCUIxQUQ0RTUxMTNB
MTJBMEIwMDg0NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNrLmNwcCAqLywKKwkJCQlCMUFENEU1MjEz
QTEyQTBCMDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFjay5oICovLAorCQkJCUIxQUQ0RTUzMTNB
MTJBMEIwMDg0NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNrSW1wbC5jcHAgKi8sCisJCQkJQjFBRDRF
NTQxM0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2tJbXBsLmggKi8sCisJCQkJQjFB
RDRFNTUxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFjay5jcHAgKi8sCisJCQkJQjFBRDRFNTYx
M0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFjay5oICovLAorCQkJCUIxQUQ0RTU3MTNBMTJBMEIw
MDg0NkIyNyAvKiBUZXh0VHJhY2tDdWUuY3BwICovLAorCQkJCUIxQUQ0RTU4MTNBMTJBMEIwMDg0
NkIyNyAvKiBUZXh0VHJhY2tDdWUuaCAqLywKKwkJCQlCMUFENEU1OTEzQTEyQTBCMDA4NDZCMjcg
LyogVGV4dFRyYWNrQ3VlTGlzdC5jcHAgKi8sCisJCQkJQjFBRDRFNUExM0ExMkEwQjAwODQ2QjI3
IC8qIFRleHRUcmFja0N1ZUxpc3QuaCAqLywKKwkJCQlCMUFENEU1QjEzQTEyQTBCMDA4NDZCMjcg
LyogVGV4dFRyYWNrUHJpdmF0ZS5oICovLAogCQkJCTQxODE1QzFCMTM4MzE5NjMwMDU3QUFBNCAv
KiBqcyAqLywKIAkJCQk0MTdEQTRDRjEzNzM0MzI2MDA3QzU3RkIgLyogSW50ZXJuYWxzLmNwcCAq
LywKIAkJCQk0MTdEQTRDRTEzNzM0MzI2MDA3QzU3RkIgLyogSW50ZXJuYWxzLmggKi8sCkBAIC0x
NzIyMyw2ICsxNzI4NywxNyBAQAogCQkJbmFtZSA9IFBsdWdpbnM7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwogCQl9OworCQlCMUFENEU3NzEzQTEyQTcyMDA4NDZCMjcgLyogdHJhY2sgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUIxQUQ0RTc4MTNB
MTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXIuY3BwICovLAorCQkJCUIxQUQ0RTc5MTNBMTJBNzIw
MDg0NkIyNyAvKiBDdWVQYXJzZXIuaCAqLywKKwkJCQlCMUFENEU3QTEzQTEyQTcyMDA4NDZCMjcg
LyogQ3VlUGFyc2VyUHJpdmF0ZS5oICovLAorCQkJKTsKKwkJCW5hbWUgPSB0cmFjazsKKwkJCXBh
dGggPSBwbGF0Zm9ybS90cmFjazsKKwkJCXNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsKKwkJfTsK
IAkJQjIyMjc3Q0EwRDAwQkYxRTAwNzFCNzgyIC8qIHN2ZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yMjg3NSw2ICsyMjk1MCwxOCBAQAogCQkJCUUxQkU1
MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUIxQUQ0RTVEMTNBMTJBMEIwMDg0NkIyNyAvKiBDdWVJbmRleC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQjFBRDRFNUYxM0ExMkEwQjAwODQ2QjI3IC8qIExvYWRhYmxlVGV4dFRyYWNr
LmggaW4gSGVhZGVycyAqLywKKwkJCQlCMUFENEU2MTEzQTEyQTBCMDA4NDZCMjcgLyogTG9hZGFi
bGVUZXh0VHJhY2tJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQlCMUFENEU2MzEzQTEyQTBCMDA4
NDZCMjcgLyogTXV0YWJsZVRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjFBRDRFNjUx
M0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2tJbXBsLmggaW4gSGVhZGVycyAqLywK
KwkJCQlCMUFENEU2NzEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrLmggaW4gSGVhZGVycyAq
LywKKwkJCQlCMUFENEU2OTEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlCMUFENEU2QjEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlTGlz
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjFBRDRFNkMxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRU
cmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUIxQUQ0RTc0MTNBMTJBNDYwMDg0NkIy
NyAvKiBDdWVMb2FkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUIxQUQ0RTdDMTNBMTJBNzIwMDg0
NkIyNyAvKiBDdWVQYXJzZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUIxQUQ0RTdEMTNBMTJBNzIw
MDg0NkIyNyAvKiBDdWVQYXJzZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1NjEyLDYg
KzI1Njk5LDE2IEBACiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2Rl
U29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyog
WFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhE
Q0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjFBRDRFNUMxM0ExMkEwQjAw
ODQ2QjI3IC8qIEN1ZUluZGV4LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUIxQUQ0RTVFMTNBMTJB
MEIwMDg0NkIyNyAvKiBMb2FkYWJsZVRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlC
MUFENEU2MDEzQTEyQTBCMDA4NDZCMjcgLyogTG9hZGFibGVUZXh0VHJhY2tJbXBsLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUIxQUQ0RTYyMTNBMTJBMEIwMDg0NkIyNyAvKiBNdXRhYmxlVGV4dFRy
YWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUIxQUQ0RTY0MTNBMTJBMEIwMDg0NkIyNyAvKiBN
dXRhYmxlVGV4dFRyYWNrSW1wbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMUFENEU2NjEzQTEy
QTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUIxQUQ0RTY4
MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QjFBRDRFNkExM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZUxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQjFBRDRFNzMxM0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlCMUFENEU3QjEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DdWVJbmRl
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1ZUluZGV4LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2Nm
OTJlNWMxNTA2OWZkM2IzZWVkMjczNDIyOWNiZGNkZjZjOTNiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9DdWVJbmRleC5jcHAKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisj
aW5jbHVkZSAiQ3VlSW5kZXguaCIKKworI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgorI2luY2x1
ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDdWVTZXQg
Q3VlU2V0OjpkaWZmZXJlbmNlKGNvbnN0IEN1ZVNldCYpIGNvbnN0Cit7CisgICAgLy8gRklYTUUo
NjI4ODMpOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIEN1ZVNldCgpOworfQorCitDdWVTZXQgQ3Vl
U2V0Ojp1bmlvblNldChjb25zdCBDdWVTZXQmKSBjb25zdAoreworICAgIC8vIEZJWE1FKDYyODgz
KTogSW1wbGVtZW50LgorICAgIHJldHVybiBDdWVTZXQoKTsKK30KKwordm9pZCBDdWVTZXQ6OmFk
ZChjb25zdCBUZXh0VHJhY2tDdWUmKQoreworICAgIC8vIEZJWE1FKDYyODgzKTogSW1wbGVtZW50
LgorfQorCitib29sIEN1ZVNldDo6Y29udGFpbnMoY29uc3QgVGV4dFRyYWNrQ3VlJikgY29uc3QK
K3sKKyAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgQ3VlU2V0OjpyZW1vdmUoY29uc3QgVGV4dFRyYWNrQ3VlJikKK3sKKyAgICAvLyBG
SVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KK30KKworYm9vbCBDdWVTZXQ6OmlzRW1wdHkoKSBjb25z
dAoreworICAgIC8vIEZJWE1FKDYyODgzKTogSW1wbGVtZW50LgorICAgIHJldHVybiBmYWxzZTsK
K30KKworaW50IEN1ZVNldDo6c2l6ZSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUUoNjI4ODMpOiBJ
bXBsZW1lbnQuCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgQ3VlSW5kZXg6OmZldGNoTmV3Q3Vl
c0Zyb21Mb2FkZXIoQ3VlTG9hZGVyKikKK3sKKyAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVu
dC4KK30KKwordm9pZCBDdWVJbmRleDo6cmVtb3ZlQ3Vlc0Zyb21JbmRleChjb25zdCBUZXh0VHJh
Y2tDdWVMaXN0KikKK3sKKyAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KK30KKworQ3Vl
U2V0IEN1ZUluZGV4Ojp2aXNpYmxlQ3Vlc0F0VGltZShkb3VibGUpIGNvbnN0Cit7CisgICAgLy8g
RklYTUUoNjI4NTUpOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIEN1ZVNldCgpOworfQorCit2b2lk
IEN1ZUluZGV4OjphZGQoVGV4dFRyYWNrQ3VlKikKK3sKKyAgICAvLyBGSVhNRSg2Mjg5MCk6IElt
cGxlbWVudC4KK30KKwordm9pZCBDdWVJbmRleDo6cmVtb3ZlKFRleHRUcmFja0N1ZSopCit7Cisg
ICAgLy8gRklYTUUoNjI4OTApOiBJbXBsZW1lbnQuCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1ZUluZGV4Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1ZUluZGV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODYyZTJkYTQ5YzJj
OTMyNmZhOTU4YTBkY2EzMWU1YzQxODA5YTBjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ3VlSW5kZXguaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgQ3VlSW5kZXhfaAorI2RlZmluZSBDdWVJbmRleF9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisKKyNpbmNsdWRlICJDdWVMb2FkZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRleHRUcmFja0N1ZTsKK2NsYXNzIFRleHRU
cmFja0N1ZUxpc3Q7CisKK2NsYXNzIEN1ZVNldCB7CitwdWJsaWM6CisgICAgQ3VlU2V0KCkgeyB9
CisgICAgfkN1ZVNldCgpIHsgfQorICAgIEN1ZVNldCBkaWZmZXJlbmNlKGNvbnN0IEN1ZVNldCYp
IGNvbnN0OworICAgIEN1ZVNldCB1bmlvblNldChjb25zdCBDdWVTZXQmKSBjb25zdDsKKyAgICB2
b2lkIGFkZChjb25zdCBUZXh0VHJhY2tDdWUmKTsKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IFRl
eHRUcmFja0N1ZSYpIGNvbnN0OworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFRleHRUcmFja0N1ZSYp
OworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworICAgIGludCBzaXplKCkgY29uc3Q7Citwcml2
YXRlOgorICAgIEhhc2hTZXQ8VGV4dFRyYWNrQ3VlKj4gbV9zZXQ7Cit9OworCitjbGFzcyBDdWVJ
bmRleCA6IHB1YmxpYyBDdWVMb2FkZXJDbGllbnQgeworcHVibGljOgorICAgIC8vIEN1ZUxvYWRl
ckNsaWVudCBtZXRob2RzLgorICAgIHZvaWQgZmV0Y2hOZXdDdWVzRnJvbUxvYWRlcihDdWVMb2Fk
ZXIqKTsKKyAgICB2b2lkIHJlbW92ZUN1ZXNGcm9tSW5kZXgoY29uc3QgVGV4dFRyYWNrQ3VlTGlz
dCopOworCisgICAgLy8gUmV0dXJucyBzZXQgb2YgY3VlcyB2aXNpYmxlIGF0IGEgdGltZSBpbiBz
ZWNvbmRzLgorICAgIEN1ZVNldCB2aXNpYmxlQ3Vlc0F0VGltZShkb3VibGUpIGNvbnN0OworICAg
IHZvaWQgYWRkKFRleHRUcmFja0N1ZSopOworICAgIHZvaWQgcmVtb3ZlKFRleHRUcmFja0N1ZSop
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjlkYWExNDVj
ODNmNmM2YWJiY2YzMDUxN2Q3N2E0YzNlYjlhZTE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisK
KyNpbmNsdWRlICJMb2FkYWJsZVRleHRUcmFjay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0xvYWRhYmxlVGV4dFRyYWNrOjpMb2FkYWJsZVRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZh
dWx0KQoreworICAgIC8vIEZJWE1FKDYyODgxKTogSW1wbGVtZW50LgorICAgIG1fcHJpdmF0ZSA9
IExvYWRhYmxlVGV4dFRyYWNrSW1wbDo6Y3JlYXRlKGtpbmQsIGxhYmVsLCBsYW5ndWFnZSwgaXNE
ZWZhdWx0KTsKK30KKworTG9hZGFibGVUZXh0VHJhY2s6On5Mb2FkYWJsZVRleHRUcmFjaygpCit7
CisgICAgLy8gRklYTUUoNjI4ODEpOiBJbXBsZW1lbnQuCit9CisKK3ZvaWQgTG9hZGFibGVUZXh0
VHJhY2s6OmxvYWQoY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRSg2Mjg4MSk6IEltcGxl
bWVudC4KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzEyOTYyMWRhNjI4OTk4NjMx
OGY3M2VkN2VjODI5YWNmODQyNzc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIExvYWRhYmxlVGV4dFRyYWNrX2gKKyNkZWZpbmUgTG9hZGFibGVUZXh0VHJhY2tfaAorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiTG9hZGFibGVUZXh0VHJhY2tJbXBs
LmgiCisjaW5jbHVkZSAiUGFzc1JlZlB0ci5oIgorI2luY2x1ZGUgIlRleHRUcmFjay5oIgorI2lu
Y2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBMb2FkYWJsZVRleHRUcmFjayA6IHB1YmxpYyBUZXh0VHJhY2sgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPExvYWRhYmxlVGV4dFRyYWNrPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBr
aW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlz
RGVmYXVsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTG9hZGFibGVUZXh0
VHJhY2soa2luZCwgbGFiZWwsIGxhbmd1YWdlLCBpc0RlZmF1bHQpKTsKKyAgICB9CisgICAgdmly
dHVhbCB+TG9hZGFibGVUZXh0VHJhY2soKTsKKworICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcm
KTsKKworcHJpdmF0ZToKKyAgICBMb2FkYWJsZVRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZh
dWx0KTsKKworfTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2tJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2tJbXBsLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZmZjNjlkMmVmY2NiYzUyZjdiOTcyNzk3YWNhY2U4MjY3ODNlOWQwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFja0ltcGwuY3BwCkBAIC0w
LDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiTG9hZGFibGVUZXh0VHJhY2tJbXBsLmgiCisKKyNp
bmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTG9h
ZGFibGVUZXh0VHJhY2tJbXBsOjpMb2FkYWJsZVRleHRUcmFja0ltcGwoY29uc3QgU3RyaW5nJiBr
aW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlz
RGVmYXVsdCkKKyAgICA6IFRleHRUcmFja1ByaXZhdGVJbnRlcmZhY2Uoa2luZCwgbGFiZWwsIGxh
bmd1YWdlKQorICAgICwgbV9pc0RlZmF1bHQoaXNEZWZhdWx0KQoreworfQorCitMb2FkYWJsZVRl
eHRUcmFja0ltcGw6On5Mb2FkYWJsZVRleHRUcmFja0ltcGwoKQoreworfQorCitQYXNzUmVmUHRy
PFRleHRUcmFja0N1ZUxpc3Q+IExvYWRhYmxlVGV4dFRyYWNrSW1wbDo6Y3VlcygpIGNvbnN0Cit7
CisgICAgLy8gRklYTUUoNjI4ODUpOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIDA7Cit9CisKK1Bh
c3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gTG9hZGFibGVUZXh0VHJhY2tJbXBsOjphY3RpdmVD
dWVzKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KKyAgICByZXR1
cm4gMDsKK30KKwordm9pZCBMb2FkYWJsZVRleHRUcmFja0ltcGw6OmZldGNoTmV3ZXN0Q3VlcyhW
ZWN0b3I8VGV4dFRyYWNrQ3VlKj4mKQoreworICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50
LgorfQorCit2b2lkIExvYWRhYmxlVGV4dFRyYWNrSW1wbDo6bG9hZChjb25zdCBTdHJpbmcmKQor
eworICAgIC8vIEZJWE1FKDYyODgxKTogSW1wbGVtZW50LgorfQorCit2b2lkIExvYWRhYmxlVGV4
dFRyYWNrSW1wbDo6bmV3Q3Vlc0xvYWRlZCgpCit7CisgICAgLy8gRklYTUUoNjI4ODEpOiBJbXBs
ZW1lbnQuCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrSW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFja0ltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTgxNjc0MTUy
YzFiZjAxZTgwYmUwZjViMDhmMmNlNDljOTg2OGFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFja0ltcGwuaApAQCAtMCwwICsxLDcyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBMb2FkYWJsZVRleHRUcmFja0ltcGxfaAorI2RlZmluZSBMb2FkYWJs
ZVRleHRUcmFja0ltcGxfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAi
Q3VlTG9hZGVyLmgiCisjaW5jbHVkZSAiQ3VlUGFyc2VyLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNr
UHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRleHRUcmFjazsKK2NsYXNz
IFRleHRUcmFja0N1ZTsKK2NsYXNzIFRleHRUcmFja0N1ZUxpc3Q7CisKK2NsYXNzIExvYWRhYmxl
VGV4dFRyYWNrSW1wbCA6IHB1YmxpYyBUZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMg
Q3VlTG9hZGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxMb2FkYWJsZVRleHRU
cmFja0ltcGw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWws
IGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBMb2FkYWJsZVRleHRUcmFja0ltcGwoa2luZCwgbGFiZWwsIGxh
bmd1YWdlLCBpc0RlZmF1bHQpKTsKKyAgICB9CisgICAgdmlydHVhbCB+TG9hZGFibGVUZXh0VHJh
Y2tJbXBsKCk7CisKKyAgICAvLyBUZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlIG1ldGhvZHMKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gY3VlcygpIGNvbnN0OworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBhY3RpdmVDdWVzKCkgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJik7CisKKyAgICAvLyBDdWVMb2Fk
ZXIgaW50ZXJmYWNlCisgICAgdmlydHVhbCB2b2lkIG5ld0N1ZXNMb2FkZWQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZmV0Y2hOZXdlc3RDdWVzKFZlY3RvcjxUZXh0VHJhY2tDdWUqPiYpOworCitwcml2
YXRlOgorICAgIExvYWRhYmxlVGV4dFRyYWNrSW1wbChjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KTsK
KworICAgIGJvb2wgbV9pc0RlZmF1bHQ7CisKKyAgICBDdWVQYXJzZXIgbV9wYXJzZXI7CisgICAg
UmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IG1fY3VlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TXV0YWJsZVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL011dGFibGVUZXh0VHJh
Y2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQwMzJlNGI0YmVjZDhmMmQxNmIwYzI1YzU1OTMxOGU4N2IwYzU3
ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL011dGFibGVUZXh0VHJh
Y2suY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiTXV0YWJsZVRleHRUcmFjay5o
IgorCisjaW5jbHVkZSAiTXV0YWJsZVRleHRUcmFja0ltcGwuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitNdXRhYmxlVGV4dFRyYWNrOjpNdXRhYmxlVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYg
a2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKK3sKKyAg
ICBtX3ByaXZhdGUgPSBNdXRhYmxlVGV4dFRyYWNrSW1wbDo6Y3JlYXRlKGtpbmQsIGxhYmVsLCBs
YW5ndWFnZSk7Cit9CisKK3ZvaWQgTXV0YWJsZVRleHRUcmFjazo6YWRkQ3VlKFBhc3NSZWZQdHI8
VGV4dFRyYWNrQ3VlPikKK3sKKyAgICAvLyBGSVhNRSg2Mjg5MCk6IEltcGxlbWVudC4KK30KKwor
dm9pZCBNdXRhYmxlVGV4dFRyYWNrOjpyZW1vdmVDdWUoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+
KQoreworICAgIC8vIEZJWE1FKDYyODkwKTogSW1wbGVtZW50LgorfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NdXRh
YmxlVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL011dGFibGVUZXh0VHJhY2suaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44MzMzY2M5YTlkMGU3ZjljZGEzZjFkNThjODMzZWM1NzUzNDZkZjk3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NdXRhYmxlVGV4dFRyYWNrLmgKQEAg
LTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE11dGFibGVUZXh0VHJhY2tfaAorI2Rl
ZmluZSBNdXRhYmxlVGV4dFRyYWNrX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2lu
Y2x1ZGUgIlRleHRUcmFjay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRleHRU
cmFja0N1ZTsKKworY2xhc3MgTXV0YWJsZVRleHRUcmFjayA6IHB1YmxpYyBUZXh0VHJhY2sgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGFibGVUZXh0VHJhY2s+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFu
Z3VhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE11dGFibGVUZXh0VHJh
Y2soa2luZCwgbGFiZWwsIGxhbmd1YWdlKSk7CisgICAgfQorICAgIHZpcnR1YWwgfk11dGFibGVU
ZXh0VHJhY2soKSB7IH0KKworICAgIHZvaWQgYWRkQ3VlKFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3Vl
Pik7CisgICAgdm9pZCByZW1vdmVDdWUoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKK3ByaXZh
dGU6CisgICAgTXV0YWJsZVRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9NdXRhYmxlVGV4dFRyYWNrSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL011dGFibGVU
ZXh0VHJhY2tJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDg3MGIxZTIxOTMyNTQ4ODQ0ZmM3ODZjZDFh
Y2M3NjhmMWY1ZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NdXRh
YmxlVGV4dFRyYWNrSW1wbC5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJNdXRh
YmxlVGV4dFRyYWNrSW1wbC5oIgorCisjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCisjaW5jbHVkZSAi
VGV4dFRyYWNrQ3VlLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK011dGFibGVUZXh0VHJhY2tJbXBsOjpNdXRhYmxlVGV4dFRyYWNrSW1w
bChjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYg
bGFuZ3VhZ2UpCisgICAgOiBUZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlKGtpbmQsIGxhYmVsLCBs
YW5ndWFnZSkKK3sKK30KKworTXV0YWJsZVRleHRUcmFja0ltcGw6On5NdXRhYmxlVGV4dFRyYWNr
SW1wbCgpCit7Cit9CisKK3ZvaWQgTXV0YWJsZVRleHRUcmFja0ltcGw6OmFkZEN1ZShUZXh0VHJh
Y2tDdWUqKQoreworICAgIC8vIEZJWE1FKDYyODkwKTogSW1wbGVtZW50LgorfQorCit2b2lkIE11
dGFibGVUZXh0VHJhY2tJbXBsOjpyZW1vdmVDdWUoVGV4dFRyYWNrQ3VlKikKK3sKKyAgICAvLyBG
SVhNRSg2Mjg5MCk6IEltcGxlbWVudC4KK30KKworUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVMaXN0
PiBNdXRhYmxlVGV4dFRyYWNrSW1wbDo6Y3VlcygpIGNvbnN0Cit7CisgICAgLy8gRklYTUUoNjI4
ODUpOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8VGV4dFRyYWNr
Q3VlTGlzdD4gTXV0YWJsZVRleHRUcmFja0ltcGw6OmFjdGl2ZUN1ZXMoKSBjb25zdAoreworICAg
IC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgorICAgIHJldHVybiAwOworfQorCit2b2lkIE11
dGFibGVUZXh0VHJhY2tJbXBsOjpuZXdDdWVzTG9hZGVkKCkKK3sKKyAgICAvLyBGSVhNRSg2Mjg5
MCk6IEltcGxlbWVudC4KK30KKwordm9pZCBNdXRhYmxlVGV4dFRyYWNrSW1wbDo6ZmV0Y2hOZXdl
c3RDdWVzKFZlY3RvcjxUZXh0VHJhY2tDdWUqPiYpCit7CisgICAgLy8gRklYTUUoNjI4OTApOiBJ
bXBsZW1lbnQuCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL011dGFibGVUZXh0VHJhY2tJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL011dGFibGVUZXh0VHJhY2tJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzU5ODU0Y2Y2
ZjMzNTAwZDExYTcwNzcxYmVjZTdlMzEwYzU0ODEzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFja0ltcGwuaApAQCAtMCwwICsxLDcxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBNdXRhYmxlVGV4dFRyYWNrSW1wbF9oCisjZGVmaW5lIE11dGFibGVU
ZXh0VHJhY2tJbXBsX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkN1
ZUxvYWRlci5oIgorI2luY2x1ZGUgIlRleHRUcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBDdWVMb2FkZXJDbGllbnQ7CitjbGFzcyBUZXh0VHJhY2s7CitjbGFzcyBU
ZXh0VHJhY2tDdWU7CitjbGFzcyBUZXh0VHJhY2tDdWVMaXN0OworCitjbGFzcyBNdXRhYmxlVGV4
dFRyYWNrSW1wbCA6IHB1YmxpYyBUZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQ3Vl
TG9hZGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxNdXRhYmxlVGV4dFRyYWNr
SW1wbD4gY3JlYXRlKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29u
c3QgU3RyaW5nJiBsYW5ndWFnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
TXV0YWJsZVRleHRUcmFja0ltcGwoa2luZCwgbGFiZWwsIGxhbmd1YWdlKSk7CisgICAgfQorICAg
IHZpcnR1YWwgfk11dGFibGVUZXh0VHJhY2tJbXBsKCk7CisKKyAgICAvLyBUZXh0VHJhY2tQcml2
YXRlSW50ZXJmYWNlIG1ldGhvZHMKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3Vl
TGlzdD4gY3VlcygpIGNvbnN0OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVM
aXN0PiBhY3RpdmVDdWVzKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZEN1ZShUZXh0VHJh
Y2tDdWUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSopOworCisg
ICAgLy8gQ3VlTG9hZGVyIGludGVyZmFjZQorICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzTG9hZGVk
KCk7CisgICAgdmlydHVhbCB2b2lkIGZldGNoTmV3ZXN0Q3VlcyhWZWN0b3I8VGV4dFRyYWNrQ3Vl
Kj4mKTsKKworcHJpdmF0ZToKKyAgICBNdXRhYmxlVGV4dFRyYWNrSW1wbChjb25zdCBTdHJpbmcm
IGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpOworCisg
ICAgUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IG1fY3VlczsKKyAgICBWZWN0b3I8VGV4dFRyYWNr
Q3VlKj4gbV9uZXdlc3RDdWVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzM2U1OGRl
ZTlkMjkxNmM4ODE1YWM4OTZkODU1NzFhYmU0MWE0ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5jcHAKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVGV4dFRy
YWNrLmgiCisKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCisjaW5jbHVkZSAiVGV4dFRy
YWNrUHJpdmF0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE51bGxUZXh0VHJh
Y2tQcml2YXRlIDogcHVibGljIFRleHRUcmFja1ByaXZhdGVJbnRlcmZhY2UgeworcHVibGljOgor
ICAgIE51bGxUZXh0VHJhY2tQcml2YXRlKCk7CisgICAgdmlydHVhbCB+TnVsbFRleHRUcmFja1By
aXZhdGUoKTsKKworICAgIC8vIFRleHRUcmFja1ByaXZhdGVJbnRlcmZhY2UgbWV0aG9kcworICAg
IHZpcnR1YWwgU3RyaW5nIGtpbmQoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9Cisg
ICAgdmlydHVhbCBTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9
CisgICAgdmlydHVhbCBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmlu
ZygpOyB9CisgICAgdmlydHVhbCBUZXh0VHJhY2s6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIFRleHRUcmFjazo6Tk9ORTsgfQorICAgIHZpcnR1YWwgVGV4dFRyYWNrOjpN
b2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBUZXh0VHJhY2s6Ok9GRjsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRNb2RlKFRleHRUcmFjazo6TW9kZSkgeyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFRleHRUcmFja0N1ZUxpc3Q+IGN1ZXMoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IGFjdGl2ZUN1ZXMoKSBjb25zdCB7IHJldHVy
biAwOyB9CisgICAgdmlydHVhbCB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJikgeyB9Cit9OworCitz
dGF0aWMgUGFzc093blB0cjxOdWxsVGV4dFRyYWNrUHJpdmF0ZT4gY3JlYXRlTnVsbFRleHRUcmFj
a1ByaXZhdGUoKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgTnVsbFRleHRUcmFja1ByaXZh
dGUoKSk7Cit9CisKK1RleHRUcmFjazo6VGV4dFRyYWNrKCkKKyAgICA6IG1fcHJpdmF0ZShjcmVh
dGVOdWxsVGV4dFRyYWNrUHJpdmF0ZSgpKQoreworfQorCitUZXh0VHJhY2s6On5UZXh0VHJhY2so
KQoreworfQorCitTdHJpbmcgVGV4dFRyYWNrOjpraW5kKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9wcml2YXRlLT5raW5kKCk7Cit9CisKK1N0cmluZyBUZXh0VHJhY2s6OmxhYmVsKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5sYWJlbCgpOworfQorCitTdHJpbmcgVGV4dFRyYWNr
OjpsYW5ndWFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bGFuZ3VhZ2UoKTsK
K30KKworVGV4dFRyYWNrOjpSZWFkeVN0YXRlIFRleHRUcmFjazo6cmVhZHlTdGF0ZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpOworfQorCitUZXh0VHJhY2s6
Ok1vZGUgVGV4dFRyYWNrOjptb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5t
b2RlKCk7Cit9CisKK3ZvaWQgVGV4dFRyYWNrOjpzZXRNb2RlKHVuc2lnbmVkIHNob3J0IG1vZGUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIDQuOC4xMC4xMi41IE9uIHNldHRpbmcgdGhl
IG1vZGUsIGlmIHRoZSBuZXcgdmFsdWUgaXMgbm90IGVpdGhlciAwLCAxLCBvciAyLAorICAgIC8v
IHRoZSB1c2VyIGFnZW50IG11c3QgdGhyb3cgYW4gSU5WQUxJRF9BQ0NFU1NfRVJSIGV4Y2VwdGlv
bi4KKyAgICBpZiAobW9kZSA9PSBUZXh0VHJhY2s6Ok9GRiB8fCBtb2RlID09IFRleHRUcmFjazo6
SElEREVOIHx8IG1vZGUgPT0gVGV4dFRyYWNrOjpTSE9XSU5HKQorICAgICAgICBtX3ByaXZhdGUt
PnNldE1vZGUoc3RhdGljX2Nhc3Q8TW9kZT4obW9kZSkpOworICAgIGVsc2UKKyAgICAgICAgZWMg
PSBJTlZBTElEX0FDQ0VTU19FUlI7Cit9CisKK1Bhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4g
VGV4dFRyYWNrOjpjdWVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5jdWVzKCk7
Cit9CisKK1Bhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gVGV4dFRyYWNrOjphY3RpdmVDdWVz
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5hY3RpdmVDdWVzKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lNGVhMTA3NWY0MGM4NWU5ZjYyYmRkMWU2ZDg1ZTA4OWRmYTMyYTUxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaApAQCAtMCwwICsxLDg0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBUZXh0VHJhY2tfaAorI2RlZmluZSBUZXh0VHJhY2tfaAor
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBUZXh0VHJhY2s7CitjbGFzcyBUZXh0VHJhY2tDdWVMaXN0OworY2xhc3MgVGV4dFRy
YWNrUHJpdmF0ZUludGVyZmFjZTsKKworY2xhc3MgVGV4dFRyYWNrQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5UZXh0VHJhY2tDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4
dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKikgeyB9CisgICAgdmlydHVhbCB2b2lk
IHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0
ZXh0VHJhY2tDcmVhdGVkKFRleHRUcmFjayopIHsgfQorfTsKKworY2xhc3MgVGV4dFRyYWNrIDog
cHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8VGV4dFRyYWNrPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBUZXh0VHJhY2spOworICAgIH0KKyAgICB2aXJ0dWFsIH5UZXh0VHJhY2soKTsKKworICAg
IFN0cmluZyBraW5kKCkgY29uc3Q7CisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CisgICAgU3Ry
aW5nIGxhbmd1YWdlKCkgY29uc3Q7CisKKyAgICBlbnVtIFJlYWR5U3RhdGUgeyBOT05FLCBMT0FE
SU5HLCBMT0FERUQsIEVSUk9SIH07CisgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7
CisKKyAgICBlbnVtIE1vZGUgeyBPRkYgPSAwLCBISURERU4gPSAxLCBTSE9XSU5HID0gMiB9Owor
ICAgIE1vZGUgbW9kZSgpIGNvbnN0OworICAgIHZvaWQgc2V0TW9kZSh1bnNpZ25lZCBzaG9ydCwg
RXhjZXB0aW9uQ29kZSYpOworCisgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBjdWVz
KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBhY3RpdmVDdWVzKCkg
Y29uc3Q7CisKKyAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKCk7CisgICAgdm9pZCBtb2RlQ2hh
bmdlZCgpOworCitwcm90ZWN0ZWQ6CisgICAgVGV4dFRyYWNrKCk7CisgICAgT3duUHRyPFRleHRU
cmFja1ByaXZhdGVJbnRlcmZhY2U+IG1fcHJpdmF0ZTsKKworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNiN2E4OTNjMmNmMDM5ZTJlOTkxZTA5NmY1ZjZmNDU0OWU3YTBlMjUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5jcHAKQEAg
LTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCisKKyNpbmNsdWRl
ICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworVGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUoY29uc3QgU3RyaW5nJiBp
ZCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0
IFN0cmluZyYgc2V0dGluZ3MsIGJvb2wgcGF1c2VPbkV4aXQpCisgICAgOiBtX2lkKGlkKQorICAg
ICwgbV9zdGFydFRpbWUoc3RhcnQpCisgICAgLCBtX2VuZFRpbWUoZW5kKQorICAgICwgbV9jb250
ZW50KGNvbnRlbnQpCisgICAgLCBtX3NldHRpbmdzKHNldHRpbmdzKQorICAgICwgbV9wYXVzZU9u
RXhpdChwYXVzZU9uRXhpdCkKK3sKK30KKworVGV4dFRyYWNrQ3VlOjp+VGV4dFRyYWNrQ3VlKCkK
K3sKK30KKworVGV4dFRyYWNrKiBUZXh0VHJhY2tDdWU6OnRyYWNrKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV90cmFjazsKK30KKwordm9pZCBUZXh0VHJhY2tDdWU6OnNldFRyYWNrKFRleHRUcmFj
ayogdHJhY2spCit7CisgICAgbV90cmFjayA9IHRyYWNrOworfQorCitTdHJpbmcgVGV4dFRyYWNr
Q3VlOjppZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWQ7Cit9CisKK2RvdWJsZSBUZXh0VHJh
Y2tDdWU6OnN0YXJ0VGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhcnRUaW1lOworfQor
Citkb3VibGUgVGV4dFRyYWNrQ3VlOjplbmRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9l
bmRUaW1lOworfQorCitib29sIFRleHRUcmFja0N1ZTo6cGF1c2VPbkV4aXQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3BhdXNlT25FeGl0OworfQorCitTdHJpbmcgVGV4dFRyYWNrQ3VlOjpnZXRD
dWVBc1NvdXJjZSgpCit7CisgICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCisgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gVGV4
dFRyYWNrQ3VlOjpnZXRDdWVBc0hUTUwoKQoreworICAgIC8vIEZJWE1FKDYyODgzKTogSW1wbGVt
ZW50LgorICAgIHJldHVybiBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoMCk7Cit9CisKK2Jvb2wg
VGV4dFRyYWNrQ3VlOjppc0FjdGl2ZSgpCit7CisgICAgLy8gRklYTUUoNjI4ODUpOiBJbXBsZW1l
bnQuCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFRleHRUcmFja0N1ZTo6c2V0SXNBY3Rp
dmUoYm9vbCBhY3RpdmUpCit7CisgICAgbV9pc0FjdGl2ZSA9IGFjdGl2ZTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dFRyYWNrQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM5YzE1MzM1OTliZTRmMTFkN2M5YWIzMzU3ZTc1NWFlMTViMjZkYjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5oCkBAIC0wLDAg
KzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRleHRUcmFja0N1ZV9oCisjZGVmaW5lIFRleHRU
cmFja0N1ZV9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJUZXh0VHJh
Y2suaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsK
K2NsYXNzIFRleHRUcmFjazsKKworY2xhc3MgVGV4dFRyYWNrQ3VlIDogcHVibGljIFJlZkNvdW50
ZWQ8VGV4dFRyYWNrQ3VlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRy
YWNrQ3VlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5k
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgc2V0dGluZ3MsIGJvb2wgcGF1
c2VPbkV4aXQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFja0N1
ZShpZCwgc3RhcnQsIGVuZCwgY29udGVudCwgc2V0dGluZ3MsIHBhdXNlT25FeGl0KSk7CisgICAg
fQorCisgICAgdmlydHVhbCB+VGV4dFRyYWNrQ3VlKCk7CisKKyAgICBUZXh0VHJhY2sqIHRyYWNr
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRUcmFjayhUZXh0VHJhY2sqKTsKKworICAgIFN0cmluZyBp
ZCgpIGNvbnN0OworICAgIGRvdWJsZSBzdGFydFRpbWUoKSBjb25zdDsKKyAgICBkb3VibGUgZW5k
VGltZSgpIGNvbnN0OworICAgIGJvb2wgcGF1c2VPbkV4aXQoKSBjb25zdDsKKworICAgIFN0cmlu
ZyBnZXRDdWVBc1NvdXJjZSgpOworICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZ2V0
Q3VlQXNIVE1MKCk7CisKKyAgICBib29sIGlzQWN0aXZlKCk7CisgICAgdm9pZCBzZXRJc0FjdGl2
ZShib29sKTsKKworcHJpdmF0ZToKKyAgICBUZXh0VHJhY2tDdWUoY29uc3QgU3RyaW5nJiBpZCwg
ZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFN0
cmluZyYgc2V0dGluZ3MsIGJvb2wgcGF1c2VPbkV4aXQpOworCisgICAgVGV4dFRyYWNrKiBtX3Ry
YWNrOworICAgIAorICAgIFN0cmluZyBtX2lkOworICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKKyAg
ICBkb3VibGUgbV9lbmRUaW1lOworICAgIFN0cmluZyBtX2NvbnRlbnQ7CisgICAgU3RyaW5nIG1f
c2V0dGluZ3M7CisgICAgYm9vbCBtX3BhdXNlT25FeGl0OworICAgIGJvb2wgbV9pc0FjdGl2ZTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhMDZiZDUxNmM5ZmUw
OWZhYzA2OGMzNWQ3ZDI1ZjBiZWQyOTlmNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5j
bHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHRU
cmFja0N1ZUxpc3Q6OlRleHRUcmFja0N1ZUxpc3QoKQoreworICAgIC8vIEZJWE1FKDYyODgzKTog
SW1wbGVtZW50LgorfQorCitUZXh0VHJhY2tDdWUqIFRleHRUcmFja0N1ZUxpc3Q6OmdldEN1ZUJ5
SWQoY29uc3QgU3RyaW5nJikgY29uc3QKK3sKKyAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVu
dC4KKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBUZXh0VHJhY2tDdWVMaXN0OjphcHBlbmQoVmVj
dG9yPFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JikKK3sKKyAgICAvLyBGSVhNRSg2Mjg4Myk6
IEltcGxlbWVudC4KK30KKwordm9pZCBUZXh0VHJhY2tDdWVMaXN0OjphcHBlbmQoY29uc3QgUGFz
c1JlZlB0cjxUZXh0VHJhY2tDdWU+JikKK3sKKyAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVu
dC4KK30KKwordm9pZCBUZXh0VHJhY2tDdWVMaXN0OjpyZW1vdmUoY29uc3QgUGFzc1JlZlB0cjxU
ZXh0VHJhY2tDdWU+JikKK3sKKyAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJh
Y2tDdWVMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2IzN2U0NGY1YzRhZGY2MGQ3ODhjMTIxOTc2N2U1ZTM5
NmM1OWMxZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNr
Q3VlTGlzdC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRleHRUcmFja0N1
ZUxpc3RfaAorI2RlZmluZSBUZXh0VHJhY2tDdWVMaXN0X2gKKworI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKworI2luY2x1ZGUgIlBhc3NSZWZQdHIuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWUu
aCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0VHJhY2tDdWVMaXN0IDogcHVibGlj
IFJlZkNvdW50ZWQ8VGV4dFRyYWNrQ3VlTGlzdD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFRleHRUcmFja0N1ZUxpc3QpOworICAgIH0KKworICAgIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoKCkgY29uc3Q7CisgICAgVGV4dFRyYWNrQ3VlKiBnZXRDdWVCeUlkKGNvbnN0IFN0
cmluZyYpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gYWN0aXZlQ3Vl
cygpOworCisgICAgdm9pZCBhcHBlbmQoY29uc3QgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+Jik7
CisgICAgdm9pZCBhcHBlbmQoVmVjdG9yPFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+Jik7Cisg
ICAgdm9pZCByZW1vdmUoY29uc3QgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+Jik7CisKK3ByaXZh
dGU6CisgICAgVGV4dFRyYWNrQ3VlTGlzdCgpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
VHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja1ByaXZhdGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yY2NjN2FmOTUyOGFmZTFjMzIxMjc4YTNjZjUzYmQyYjEwOGE0MmEwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tQcml2YXRlLmgKQEAg
LTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGV4dFRyYWNrUHJpdmF0ZV9oCisjZGVm
aW5lIFRleHRUcmFja1ByaXZhdGVfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5j
bHVkZSAiVGV4dFRyYWNrLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDdWVMb2Fk
ZXJDbGllbnQ7CitjbGFzcyBUZXh0VHJhY2tDdWVMaXN0OworCitjbGFzcyBUZXh0VHJhY2tQcml2
YXRlSW50ZXJmYWNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZXh0VHJhY2tQcml2YXRl
SW50ZXJmYWNlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgVGV4dFRy
YWNrUHJpdmF0ZUludGVyZmFjZShjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCisgICAgICAgIDogbV9raW5kKGtpbmQpCisgICAg
ICAgICwgbV9sYWJlbChsYWJlbCkKKyAgICAgICAgLCBtX2xhbmd1YWdlKGxhbmd1YWdlKQorICAg
ICAgICAsIG1fcmVhZHlTdGF0ZShUZXh0VHJhY2s6Ok5PTkUpCisgICAgICAgICwgbV9tb2RlKFRl
eHRUcmFjazo6U0hPV0lORykKKyAgICB7CisgICAgfQorICAgIHZpcnR1YWwgflRleHRUcmFja1By
aXZhdGVJbnRlcmZhY2UoKSB7IH0KKworICAgIHZpcnR1YWwgU3RyaW5nIGtpbmQoKSBjb25zdCB7
IHJldHVybiBtX2tpbmQ7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFiZWw7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFuZ3VhZ2U7IH0KKworICAgIHZpcnR1YWwgVGV4dFRyYWNrOjpSZWFkeVN0YXRlIHJl
YWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3RhdGU7IH0KKworICAgIHZpcnR1YWwg
VGV4dFRyYWNrOjpNb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0TW9kZShUZXh0VHJhY2s6Ok1vZGUgbW9kZSkgeyBtX21vZGUgPSBtb2RlOyB9
CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gY3VlcygpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gYWN0aXZlQ3Vl
cygpIGNvbnN0ID0gMDsKKworICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIG92ZXJy
aWRkZW4gYnkgdHJhY2tzIHRoYXQgbG9hZCBjdWUgZGF0YSBmcm9tIGEgVVJMLgorICAgIHZpcnR1
YWwgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYpIHsgfQorCitwcml2YXRlOgorICAgIFN0cmluZyBt
X2tpbmQ7CisgICAgU3RyaW5nIG1fbGFiZWw7CisgICAgU3RyaW5nIG1fbGFuZ3VhZ2U7CisgICAg
VGV4dFRyYWNrOjpSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKKyAgICBUZXh0VHJhY2s6Ok1vZGUg
bV9tb2RlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1ZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWZmMDc2OWZmMjU4Yjcw
ZjYwY2MxYmJiMDc3NmJlNDdjMjBkYzhhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0N1ZUxvYWRlci5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJD
dWVMb2FkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEN1ZUxvYWRlcjo6c2V0
Q3VlTG9hZGVyQ2xpZW50KEN1ZUxvYWRlckNsaWVudCogY2xpZW50KQoreworICAgIG1fY2xpZW50
ID0gY2xpZW50OworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0N1ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1ZUxvYWRlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBiZjdiOTI2NTJiODhjMWY2M2I3OWM4OTJhOTNiN2M1MjJkNDVmMTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmgKQEAgLTAsMCAr
MSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEN1ZUxvYWRlcl9oCisjZGVmaW5lIEN1ZUxvYWRl
cl9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ3VlTG9hZGVyOworY2xhc3MgVGV4dFRy
YWNrQ3VlOworY2xhc3MgVGV4dFRyYWNrQ3VlTGlzdDsKKworLy8gTGlzdGVuZXIgdG8gQ3VlTG9h
ZGVyLgorY2xhc3MgQ3VlTG9hZGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBRdWVyaWVzIEN1
ZUxvYWRlciBmb3IgbmV3ZXN0IGN1ZXMuCisgICAgdmlydHVhbCB2b2lkIGZldGNoTmV3Q3Vlc0Zy
b21Mb2FkZXIoQ3VlTG9hZGVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDdWVzRnJv
bUluZGV4KGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSA9IDA7Cit9OworCitjbGFzcyBDdWVMb2Fk
ZXIgeworcHVibGljOgorICAgIHZvaWQgc2V0Q3VlTG9hZGVyQ2xpZW50KEN1ZUxvYWRlckNsaWVu
dCopOworCisgICAgLy8gSW5mb3JtcyBjbGllbnQgdGhhdCBuZXcgY3VlcyBoYXZlIGJlZW4gbG9h
ZGVkLgorICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzTG9hZGVkKCkgPSAwOworCisgICAgLy8gVHJh
bnNmZXJzIG93bmVyc2hpcCBvZiBjdXJyZW50bHkgbG9hZGVkIGN1ZXMuCisgICAgdmlydHVhbCB2
b2lkIGZldGNoTmV3ZXN0Q3VlcyhWZWN0b3I8VGV4dFRyYWNrQ3VlKj4mIGN1ZXMpID0gMDsKKwor
cHJvdGVjdGVkOgorICAgIEN1ZUxvYWRlckNsaWVudCogbV9jbGllbnQ7Cit9OworCit9CisKKyNl
bmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90cmFjay9D
dWVQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNjZhMWVhNjA4YWZkNjFlYzM0ZDNkYmIxZjYwOTJkZGViNGExNjRlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2Vy
LmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKworI2luY2x1ZGUgIkN1ZVBhcnNlci5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0N1ZVBhcnNlcjo6Q3VlUGFyc2VyKCkKK3sKKyAgICAvLyBGSVhNRSg2Mjg5Myk6IElt
cGxlbWVudC4KK30KKworQ3VlUGFyc2VyOjp+Q3VlUGFyc2VyKCkKK3sKK30KKwordm9pZCBDdWVQ
YXJzZXI6OmxvYWQoY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRSg2Mjg4MSk6IEltcGxl
bWVudC4KK30KKwordm9pZCBDdWVQYXJzZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBp
bnQpCit7CisgICAgLy8gRklYTUUoNjI4ODEpOiBJbXBsZW1lbnQuCit9CisKK3ZvaWQgQ3VlUGFy
c2VyOjpmZXRjaFBhcnNlZEN1ZXMoVmVjdG9yPFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JikK
K3sKKyAgICAvLyBGSVhNRSg2Mjg5Myk6IEltcGxlbWVudC4KK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Ry
YWNrL0N1ZVBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2Vy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzdhNzlmNGIwZDc0ZGYxZTJiOTQ0ZWNlYjZjNmFmODI5NTdkNThiYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RyYWNrL0N1ZVBhcnNl
ci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDdWVQYXJzZXJfaAorI2RlZmluZSBDdWVQYXJz
ZXJfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQ3VlUGFyc2VyUHJp
dmF0ZS5oIgorI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKKyNpbmNsdWRlICJUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dFRyYWNrQ3VlOworCitjbGFzcyBDdWVQYXJzZXIg
OiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CitwdWJsaWM6CisgICAgQ3VlUGFyc2Vy
KCk7CisgICAgdmlydHVhbCB+Q3VlUGFyc2VyKCk7CisKKyAgICAvLyBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50IG1ldGhvZHMuCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgaW50
KTsKKworICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGZldGNoUGFyc2Vk
Q3VlcyhWZWN0b3I8UGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+ID4mKTsKKworcHJpdmF0ZToKKyAg
ICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gbV9sb2FkZXI7CisgICAgT3duUHRyPEN1ZVBhcnNl
clByaXZhdGVJbnRlcmZhY2U+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RyYWNrL0N1ZVBhcnNlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RyYWNr
L0N1ZVBhcnNlclByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzNlNGZiYzA5NTFiZTM0Y2JmMDEwNzFl
ZDI4NjlhOTlhMmY4MzBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdHJhY2svQ3VlUGFyc2VyUHJpdmF0ZS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDdWVQ
YXJzZXJQcml2YXRlX2gKKyNkZWZpbmUgQ3VlUGFyc2VQcml2YXRlX2gKKworI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKworI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgorI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEN1ZVBhcnNlclByaXZhdGVD
bGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzUGFyc2VkKCkgPSAwOwor
fTsKKworY2xhc3MgQ3VlUGFyc2VyUHJpdmF0ZUludGVyZmFjZSB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQ3VlUGFyc2VyUHJpdmF0ZUludGVyZmFjZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfkN1ZVBhcnNlclByaXZhdGVJbnRlcmZhY2UoKSB7
IH0KKworICAgIC8vIElucHV0IGRhdGEgdG8gdGhlIHBhcnNlciB0byBwYXJzZS4KKyAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VCeXRlcyhjb25zdCBjaGFyKiwgaW50KSA9IDA7CisKKyAgICAvLyBUcmFu
c2ZlcnMgb3duZXJzaGlwIG9mIGxhc3QgcGFyc2VkIGN1ZXMgdG8gY2FsbGVyLgorICAgIHZpcnR1
YWwgdm9pZCBmZXRjaFBhcnNlZEN1ZXMoVmVjdG9yPFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+
JikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgQ3VlUGFyc2VyUHJpdmF0ZUludGVyZmFjZSgpIHsg
fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97667</attachid>
            <date>2011-06-17 16:40:07 -0700</date>
            <delta_ts>2011-06-17 21:57:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60379-20110617164006.patch</filename>
            <type>text/plain</type>
            <size>81894</size>
            <attacher name="Anna Cavender">annacc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkxODAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjFmYjM2
MmNiZWU1MjgzNGE3ZjJjYmEzYWVkYWVkMzQ5Y2ZmN2M5ZS4uNjdmOWRkZTA2OTg1NTc0NDM4Y2Mw
NGU1Yzc0MTk1NDM3MjhhNjYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQ2LDYgKzQ2LDcg
QEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9w
bGF0Zm9ybS9zcWwiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvdHJhbnNjb2RlciIKKyAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vdHJhY2siCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsdWdpbnMiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3JlbmRlcmluZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcmVuZGVyaW5nL21h
dGhtbCIKQEAgLTE5NjMsNyArMTk2NCwxNyBAQCBFTkRJRiAoKQogCiBJRiAoRU5BQkxFX1ZJREVP
X1RSQUNLKQogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBodG1sL0N1
ZUluZGV4LmNwcAogICAgICAgICBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCisgICAgICAgIGh0
bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwCisgICAgICAgIGh0bWwvTG9hZGFibGVUZXh0VHJhY2tJ
bXBsLmNwcAorICAgICAgICBodG1sL011dGFibGVUZXh0VHJhY2suY3BwCisgICAgICAgIGh0bWwv
TXV0YWJsZVRleHRUcmFja0ltcGwuY3BwCisgICAgICAgIGh0bWwvVGV4dFRyYWNrLmNwcAorICAg
ICAgICBodG1sL1RleHRUcmFja0N1ZS5jcHAKKyAgICAgICAgaHRtbC9UZXh0VHJhY2tDdWVMaXN0
LmNwcAorICAgICAgICBsb2FkZXIvQ3VlTG9hZGVyLmNwcAorICAgICAgICBwbGF0Zm9ybS90cmFj
ay9DdWVQYXJzZXIuY3BwCiAgICAgKQogRU5ESUYoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ3ODFhMDA1
ZDlmMmJkNGE3NjFjZDY0MDdhNjdmZTk5Yzk1NjNlZS4uMDdhODhhNjM3NGYyYzE1ODEzMjAwZjRm
ZWM5NDgyOTkxYjE2MjAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDExLTA2LTE3
ICBBbm5hIENhdmVuZGVyICA8YW5uYWNjQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgaW5pdGlhbCBpbnRlcmZhY2Vz
IGFuZCBzdHVicyBmb3IgdHJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYwMzc5CisKKyAgICAgICAgVGhpcyBtYXJrcyB0aGUgZmlyc3QgcGF0Y2gg
b2YgYSBzZXJpZXMgdG8gaW1wbGVtZW50IG91dC1vZi1iYW5kCisgICAgICAgIDx0cmFjaz4gc3Vw
cG9ydCBpbiBXZWJLaXQuIFRoaXMgcGF0Y2ggYWRkcyBzb21lIG9mIHRoZSBjb3JlIGhlYWRlciBm
aWxlcworICAgICAgICBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBzdHViIC5jcHAgZmlsZXMuCisg
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIGZlYXR1cmUgaXMgaGlkZGVuIGJlaGluZCBW
SURFT19UUkFDSyBmZWF0dXJlCisgICAgICAgIGRlZmluZSwgd2hpY2ggaXMgdHVybmVkIG9mZi4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNv
cmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnByaToK
KyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9DdWVJbmRleC5jcHA6IEFkZGVkLgorICAgICAg
ICAqIGh0bWwvQ3VlSW5kZXguaDogQWRkZWQuCisgICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRU
cmFjay5jcHA6IEFkZGVkLgorICAgICAgICAqIGh0bWwvTG9hZGFibGVUZXh0VHJhY2suaDogQWRk
ZWQuCisgICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFja0ltcGwuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKiBodG1sL0xvYWRhYmxlVGV4dFRyYWNrSW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKiBo
dG1sL011dGFibGVUZXh0VHJhY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL011dGFibGVU
ZXh0VHJhY2suaDogQWRkZWQuCisgICAgICAgICogaHRtbC9NdXRhYmxlVGV4dFRyYWNrSW1wbC5j
cHA6IEFkZGVkLgorICAgICAgICAqIGh0bWwvTXV0YWJsZVRleHRUcmFja0ltcGwuaDogQWRkZWQu
CisgICAgICAgICogaHRtbC9UZXh0VHJhY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL1Rl
eHRUcmFjay5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZS5jcHA6IEFkZGVk
LgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNrQ3VlLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwv
VGV4dFRyYWNrQ3VlTGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNrQ3Vl
TGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL1RleHRUcmFja1ByaXZhdGUuaDogQWRkZWQu
CisgICAgICAgICogbG9hZGVyL0N1ZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxvYWRl
ci9DdWVMb2FkZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2Vy
LmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyLmg6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL3RyYWNrL0N1ZVBhcnNlclByaXZhdGUuaDogQWRkZWQuCisK
IDIwMTEtMDYtMTcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4OTE0My4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggNDY2YTZhMGY4MDAzZmI4MzY1Njc0NzQwZTkyNDgx
OTcxYWU1MTRmYS4uZGY2NGE5ZmM2MzEyOThlMzg0MDk3ZDc3ZmIzYjc3NzY3MzYyYmQ5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTIwMSw2ICsyMDEsNyBAQAog
ICAgICAgJy4uL3BsYXRmb3JtL3NxbCcsCiAgICAgICAnLi4vcGxhdGZvcm0vdGV4dCcsCiAgICAg
ICAnLi4vcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyJywKKyAgICAgICcuLi9wbGF0Zm9ybS90cmFj
aycsCiAgICAgICAnLi4vcGx1Z2lucycsCiAgICAgICAnLi4vcGx1Z2lucy9jaHJvbWl1bScsCiAg
ICAgICAnLi4vcmVuZGVyaW5nJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjY2JmMjcxNTg4MDA4ZmFi
ZDRhYmZiOGIxYTkyNzBiNDI1NTk1NWQzLi4xNTNkZjMyNjlkNmY2ODIwNWFlOTBmMjEwZTQxNmI2
MjQzOGU0MjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yODQ3LDYgKzI4NDcsOCBAQAogICAgICAg
ICAgICAgJ2h0bWwvQ29sbGVjdGlvbkNhY2hlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9Db2xv
cklucHV0VHlwZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvQ29sb3JJbnB1dFR5cGUuaCcsCisg
ICAgICAgICAgICAnaHRtbC9DdWVJbmRleC5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvQ3VlSW5k
ZXguaCcsCiAgICAgICAgICAgICAnaHRtbC9ET01Gb3JtRGF0YS5jcHAnLAogICAgICAgICAgICAg
J2h0bWwvRE9NRm9ybURhdGEuaCcsCiAgICAgICAgICAgICAnaHRtbC9ET01TZXR0YWJsZVRva2Vu
TGlzdC5jcHAnLApAQCAtMzA0MCw5ICszMDQyLDE3IEBACiAgICAgICAgICAgICAnaHRtbC9MYWJl
bHNOb2RlTGlzdC5oJywKICAgICAgICAgICAgICdodG1sL0xpbmtSZWxBdHRyaWJ1dGUuY3BwJywK
ICAgICAgICAgICAgICdodG1sL0xpbmtSZWxBdHRyaWJ1dGUuaCcsCisgICAgICAgICAgICAnaHRt
bC9Mb2FkYWJsZVRleHRUcmFjay5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvTG9hZGFibGVUZXh0
VHJhY2suaCcsCisgICAgICAgICAgICAnaHRtbC9Mb2FkYWJsZVRleHRUcmFja0ltcGwuY3BwJywK
KyAgICAgICAgICAgICdodG1sL0xvYWRhYmxlVGV4dFRyYWNrSW1wbC5oJywKICAgICAgICAgICAg
ICdodG1sL01lZGlhRG9jdW1lbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL01lZGlhRG9jdW1l
bnQuaCcsCiAgICAgICAgICAgICAnaHRtbC9NZWRpYUVycm9yLmgnLAorICAgICAgICAgICAgJ2h0
bWwvTXV0YWJsZVRleHRUcmFjay5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvTXV0YWJsZVRleHRU
cmFjay5oJywKKyAgICAgICAgICAgICdodG1sL011dGFibGVUZXh0VHJhY2tJbXBsLmNwcCcsCisg
ICAgICAgICAgICAnaHRtbC9NdXRhYmxlVGV4dFRyYWNrSW1wbC5oJywKICAgICAgICAgICAgICdo
dG1sL01vbnRoSW5wdXRUeXBlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9Nb250aElucHV0VHlw
ZS5oJywKICAgICAgICAgICAgICdodG1sL051bWJlcklucHV0VHlwZS5jcHAnLApAQCAtMzA3Niw2
ICszMDg2LDEzIEBACiAgICAgICAgICAgICAnaHRtbC9UZXh0SW5wdXRUeXBlLmNwcCcsCiAgICAg
ICAgICAgICAnaHRtbC9UZXh0SW5wdXRUeXBlLmgnLAogICAgICAgICAgICAgJ2h0bWwvVGV4dE1l
dHJpY3MuaCcsCisgICAgICAgICAgICAnaHRtbC9UZXh0VHJhY2suY3BwJywKKyAgICAgICAgICAg
ICdodG1sL1RleHRUcmFjay5oJywKKyAgICAgICAgICAgICdodG1sL1RleHRUcmFja0N1ZS5jcHAn
LAorICAgICAgICAgICAgJ2h0bWwvVGV4dFRyYWNrQ3VlLmgnLAorICAgICAgICAgICAgJ2h0bWwv
VGV4dFRyYWNrQ3VlTGlzdC5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvVGV4dFRyYWNrQ3VlTGlz
dC5oJywKKyAgICAgICAgICAgICdodG1sL1RleHRUcmFja1ByaXZhdGVJbnRlcmZhY2UuaCcsCiAg
ICAgICAgICAgICAnaHRtbC9UaW1lSW5wdXRUeXBlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9U
aW1lSW5wdXRUeXBlLmgnLAogICAgICAgICAgICAgJ2h0bWwvVGltZVJhbmdlcy5jcHAnLApAQCAt
MzMzOCw2ICszMzU1LDggQEAKICAgICAgICAgICAgICdsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bC5oJywKICAgICAgICAgICAgICdsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNo
ZS5jcHAnLAorICAgICAgICAgICAgJ2xvYWRlci9DdWVMb2FkZXIuY3BwJywKKyAgICAgICAgICAg
ICdsb2FkZXIvQ3VlTG9hZGVyLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
JywKICAgICAgICAgICAgICdsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgnLApAQCAt
NTA0MCw2ICs1MDU5LDkgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L3dpbmNlL1RleHRC
cmVha0l0ZXJhdG9yV2luQ0UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L3dpbmNl
L1RleHRDb2RlY1dpbkNFLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC93aW5jZS9U
ZXh0Q29kZWNXaW5DRS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS90cmFjay9DdWVQYXJzZXIu
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS90cmFjay9DdWVQYXJzZXIuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyUHJpdmF0ZS5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS93aW4vQlN0cmluZy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3dpbi9CU3Ry
aW5nLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3dpbi9CaXRtYXBJbmZvLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJpCmluZGV4IDgwOTI2Yjg2MzAzYjg1M2ZmZDNlNWQ0NDdiMmJmZjQ5YTljNzc1Y2QuLjc0
YzA4YmY4ZGUwNTZlMTc5NzVmMWRmYTc2ZDRlNDJmZTg4NTY4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCkBA
IC0xMDEsNiArMTAxLDcgQEAgV0VCQ09SRV9JTkNMVURFUEFUSCA9IFwKICAgICAkJFNPVVJDRV9E
SVIvV2ViQ29yZS9wbGF0Zm9ybS9zcWwgXAogICAgICQkU09VUkNFX0RJUi9XZWJDb3JlL3BsYXRm
b3JtL3RleHQgXAogICAgICQkU09VUkNFX0RJUi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvdHJhbnNj
b2RlciBcCisgICAgJCRTT1VSQ0VfRElSL1dlYkNvcmUvcGxhdGZvcm0vdHJhY2sgXAogICAgICQk
U09VUkNFX0RJUi9XZWJDb3JlL3BsdWdpbnMgXAogICAgICQkU09VUkNFX0RJUi9XZWJDb3JlL3Jl
bmRlcmluZyBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvCmluZGV4IGUwNWI3NWM0YzQzMjBiZTRjNDBlYzcwYzU4M2Q0YTA0ZjdhYmM2OTcu
LmM3YWIyYzcwMTU5YjI5NjM2NTdhYjhjMTYwM2ZiYTk2NWViNmJjZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
CkBAIC0xNjM4LDYgKzE2MzgsNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL2NhbnZhcy9VaW50
OEFycmF5LmggXAogICAgIGh0bWwvQ2xhc3NMaXN0LmggXAogICAgIGh0bWwvQ29sbGVjdGlvbkNh
Y2hlLmggXAorICAgIGh0bWwvQ3VlSW5kZXguaCBcCiAgICAgaHRtbC9ET01Gb3JtRGF0YS5oIFwK
ICAgICBodG1sL0RPTVNldHRhYmxlVG9rZW5MaXN0LmggXAogICAgIGh0bWwvRE9NVG9rZW5MaXN0
LmggXApAQCAtMTcyNiw2ICsxNzI3LDcgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9IVE1MVGFi
bGVTZWN0aW9uRWxlbWVudC5oIFwKICAgICBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBcCiAg
ICAgaHRtbC9IVE1MVGl0bGVFbGVtZW50LmggXAorICAgIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5o
IFwKICAgICBodG1sL0hUTUxVTGlzdEVsZW1lbnQuaCBcCiAgICAgaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmggXAogICAgIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oIFwKQEAgLTE3MzMsMTAg
KzE3MzUsMTggQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9JbWFnZURvY3VtZW50LmggXAogICAg
IGh0bWwvTGFiZWxzTm9kZUxpc3QuaCBcCiAgICAgaHRtbC9MaW5rUmVsQXR0cmlidXRlLmggXAor
ICAgIGh0bWwvTG9hZGFibGVUZXh0VHJhY2suaCBcCisgICAgaHRtbC9Mb2FkYWJsZVRleHRUcmFj
a0ltcGwuaCBcCiAgICAgaHRtbC9NZWRpYURvY3VtZW50LmggXAorICAgIGh0bWwvTXV0YWJsZVRl
eHRUcmFjay5oIFwKKyAgICBodG1sL011dGFibGVUZXh0VHJhY2tJbXBsLmggXAogICAgIGh0bWwv
UGx1Z2luRG9jdW1lbnQuaCBcCiAgICAgaHRtbC9TdGVwUmFuZ2UuaCBcCiAgICAgaHRtbC9UZXh0
RG9jdW1lbnQuaCBcCisgICAgaHRtbC9UZXh0VHJhY2suaCBcCisgICAgaHRtbC9UZXh0VHJhY2tD
dWUuaCBcCisgICAgaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmggXAorICAgIGh0bWwvVGV4dFRyYWNr
UHJpdmF0ZS5oIFwKICAgICBodG1sL1RpbWVSYW5nZXMuaCBcCiAgICAgaHRtbC9WYWxpZGl0eVN0
YXRlLmggXAogICAgIGh0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmggXApAQCAtMTgxOSw2
ICsxODI5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgg
XAogICAgIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBcCiAgICAgbG9hZGVyL0Ny
b3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCBcCisgICAgbG9hZGVyL0N1ZUxvYWRlci5o
IFwKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBcCiAgICAgbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmggXAogICAgIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
aCBcCkBAIC0yMDk1LDYgKzIxMDYsOCBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9UaHJl
YWRHbG9iYWxEYXRhLmggXAogICAgIHBsYXRmb3JtL1RocmVhZFRpbWVycy5oIFwKICAgICBwbGF0
Zm9ybS9UaW1lci5oIFwKKyAgICBwbGF0Zm9ybS90cmFjay9DdWVQYXJzZXIuaCBcCisgICAgcGxh
dGZvcm0vdHJhY2svQ3VlUGFyc2VyUHJpdmF0ZS5oIFwKICAgICBwbGF0Zm9ybS9XaWRnZXQuaCBc
CiAgICAgcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmggXAogICAgIHBsYXRmb3JtL0xvY2Fs
aXplZFN0cmluZ3MuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMzY4M2RmNjYzNmNkZTE1YWNlMzVjMjZkYTNiYjg5N2I4OTFk
YjcxOS4uZjQ2YjQyZWNjOGM0NjZmZDQyYzJjMTc1ZDEzMzc0MjIzNjQzMjYyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDAw
Niw2ICs0MDA2LDI4IEBACiAJCUIxNDM1M0Y4MTM4RUE5NUIwMEQ1MzI3NiAvKiBKU1N0cmVhbUxp
c3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjE0
MzUzRjYxMzhFQTk1QjAwRDUzMjc2IC8qIEpTU3RyZWFtTGlzdC5jcHAgKi87IH07CiAJCUIxNDM1
M0Y5MTM4RUE5NUIwMEQ1MzI3NiAvKiBKU1N0cmVhbUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxNDM1M0Y3MTM4RUE5NUIwMEQ1MzI3NiAvKiBK
U1N0cmVhbUxpc3QuaCAqLzsgfTsKIAkJQjE4Mjc0OTMxMzRDQTRDMTAwQjk4QzJEIC8qIENhbGxi
YWNrRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjE4Mjc0OTIxMzRDQTRDMTAwQjk4QzJEIC8qIENhbGxiYWNrRnVuY3Rpb24uY3BwICov
OyB9OworCQlCMUFENEU1QzEzQTEyQTBCMDA4NDZCMjcgLyogQ3VlSW5kZXguY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNEIxM0ExMkEwQjAw
ODQ2QjI3IC8qIEN1ZUluZGV4LmNwcCAqLzsgfTsKKwkJQjFBRDRFNUQxM0ExMkEwQjAwODQ2QjI3
IC8qIEN1ZUluZGV4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMUFENEU0QzEzQTEyQTBCMDA4NDZCMjcgLyogQ3VlSW5kZXguaCAqLzsgfTsKKwkJQjFB
RDRFNUUxM0ExMkEwQjAwODQ2QjI3IC8qIExvYWRhYmxlVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTREMTNBMTJBMEIwMDg0
NkIyNyAvKiBMb2FkYWJsZVRleHRUcmFjay5jcHAgKi87IH07CisJCUIxQUQ0RTVGMTNBMTJBMEIw
MDg0NkIyNyAvKiBMb2FkYWJsZVRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNEUxM0ExMkEwQjAwODQ2QjI3IC8qIExvYWRhYmxl
VGV4dFRyYWNrLmggKi87IH07CisJCUIxQUQ0RTYwMTNBMTJBMEIwMDg0NkIyNyAvKiBMb2FkYWJs
ZVRleHRUcmFja0ltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjFBRDRFNEYxM0ExMkEwQjAwODQ2QjI3IC8qIExvYWRhYmxlVGV4dFRyYWNrSW1w
bC5jcHAgKi87IH07CisJCUIxQUQ0RTYxMTNBMTJBMEIwMDg0NkIyNyAvKiBMb2FkYWJsZVRleHRU
cmFja0ltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIxQUQ0RTUwMTNBMTJBMEIwMDg0NkIyNyAvKiBMb2FkYWJsZVRleHRUcmFja0ltcGwuaCAqLzsg
fTsKKwkJQjFBRDRFNjIxM0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2suY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNTExM0Ex
MkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2suY3BwICovOyB9OworCQlCMUFENEU2MzEz
QTEyQTBCMDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNTIxM0ExMkEwQjAwODQ2QjI3IC8qIE11
dGFibGVUZXh0VHJhY2suaCAqLzsgfTsKKwkJQjFBRDRFNjQxM0ExMkEwQjAwODQ2QjI3IC8qIE11
dGFibGVUZXh0VHJhY2tJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIxQUQ0RTUzMTNBMTJBMEIwMDg0NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNr
SW1wbC5jcHAgKi87IH07CisJCUIxQUQ0RTY1MTNBMTJBMEIwMDg0NkIyNyAvKiBNdXRhYmxlVGV4
dFRyYWNrSW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjFBRDRFNTQxM0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2tJbXBsLmggKi87
IH07CisJCUIxQUQ0RTY2MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFBRDRFNTUxM0ExMkEwQjAw
ODQ2QjI3IC8qIFRleHRUcmFjay5jcHAgKi87IH07CisJCUIxQUQ0RTY3MTNBMTJBMEIwMDg0NkIy
NyAvKiBUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIxQUQ0RTU2MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2suaCAqLzsgfTsKKwkJ
QjFBRDRFNjgxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUFENEU1NzEzQTEyQTBCMDA4NDZC
MjcgLyogVGV4dFRyYWNrQ3VlLmNwcCAqLzsgfTsKKwkJQjFBRDRFNjkxM0ExMkEwQjAwODQ2QjI3
IC8qIFRleHRUcmFja0N1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjFBRDRFNTgxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZS5oICovOyB9
OworCQlCMUFENEU2QTEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlTGlzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUFENEU1OTEzQTEy
QTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlTGlzdC5jcHAgKi87IH07CisJCUIxQUQ0RTZCMTNB
MTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUFENEU1QTEzQTEyQTBCMDA4NDZCMjcgLyogVGV4
dFRyYWNrQ3VlTGlzdC5oICovOyB9OworCQlCMUFENEU2QzEzQTEyQTBCMDA4NDZCMjcgLyogVGV4
dFRyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjFBRDRFNUIxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja1ByaXZhdGUuaCAqLzsg
fTsKKwkJQjFBRDRFNzMxM0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUFENEU3MTEzQTEyQTQ2MDA4
NDZCMjcgLyogQ3VlTG9hZGVyLmNwcCAqLzsgfTsKKwkJQjFBRDRFNzQxM0ExMkE0NjAwODQ2QjI3
IC8qIEN1ZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjFBRDRFNzIxM0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5oICovOyB9OworCQlC
MUFENEU3QjEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQUQ0RTc4MTNBMTJBNzIwMDg0NkIyNyAv
KiBDdWVQYXJzZXIuY3BwICovOyB9OworCQlCMUFENEU3QzEzQTEyQTcyMDA4NDZCMjcgLyogQ3Vl
UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MUFENEU3OTEzQTEyQTcyMDA4NDZCMjcgLyogQ3VlUGFyc2VyLmggKi87IH07CisJCUIxQUQ0RTdE
MTNBMTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUFENEU3QTEzQTEyQTcyMDA4NDZCMjcgLyog
Q3VlUGFyc2VyUHJpdmF0ZS5oICovOyB9OwogCQlCMUQ1RUNCNTEzNEI1OERBMDA4N0M3OEYgLyog
Q2FsbGJhY2tGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjFENUVDQjQxMzRCNThEQTAwODdDNzhGIC8qIENhbGxiYWNrRnVuY3Rpb24uaCAq
LzsgfTsKIAkJQjFFNTQ1N0ExMzQ2MjkxRjAwOTJBNTQ1IC8qIEdlbmVyYXRlZFN0cmVhbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUU1NDU3MTEz
NDYyOTFGMDA5MkE1NDUgLyogR2VuZXJhdGVkU3RyZWFtLmNwcCAqLzsgfTsKIAkJQjFFNTQ1N0Ix
MzQ2MjkxRjAwOTJBNTQ1IC8qIEdlbmVyYXRlZFN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFFNTQ1NzIxMzQ2MjkxRjAwOTJBNTQ1IC8qIEdl
bmVyYXRlZFN0cmVhbS5oICovOyB9OwpAQCAtMTAzOTYsNiArMTA0MTgsMjggQEAKIAkJQjE0MzUz
RjYxMzhFQTk1QjAwRDUzMjc2IC8qIEpTU3RyZWFtTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1N0cmVhbUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMTQzNTNGNzEzOEVBOTVCMDBENTMyNzYgLyogSlNTdHJlYW1MaXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyZWFtTGlzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCMTgyNzQ5MjEzNENBNEMxMDBCOThDMkQgLyogQ2FsbGJhY2tG
dW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsYmFj
a0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFBRDRFNEIxM0Ex
MkEwQjAwODQ2QjI3IC8qIEN1ZUluZGV4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEN1ZUluZGV4LmNwcDsgcGF0aCA9IGh0bWwvQ3VlSW5kZXguY3BwOyBzb3VyY2VU
cmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUIxQUQ0RTRDMTNBMTJBMEIwMDg0NkIyNyAvKiBDdWVJ
bmRleC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdWVJbmRleC5oOyBwYXRo
ID0gaHRtbC9DdWVJbmRleC5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUIxQUQ0
RTREMTNBMTJBMEIwMDg0NkIyNyAvKiBMb2FkYWJsZVRleHRUcmFjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMb2FkYWJsZVRleHRUcmFjay5jcHA7IHBhdGggPSBo
dG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9Owor
CQlCMUFENEU0RTEzQTEyQTBCMDA4NDZCMjcgLyogTG9hZGFibGVUZXh0VHJhY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTG9hZGFibGVUZXh0VHJhY2suaDsgcGF0aCA9IGh0
bWwvTG9hZGFibGVUZXh0VHJhY2suaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlC
MUFENEU0RjEzQTEyQTBCMDA4NDZCMjcgLyogTG9hZGFibGVUZXh0VHJhY2tJbXBsLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExvYWRhYmxlVGV4dFRyYWNrSW1wbC5j
cHA7IHBhdGggPSBodG1sL0xvYWRhYmxlVGV4dFRyYWNrSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSBT
T1VSQ0VfUk9PVDsgfTsKKwkJQjFBRDRFNTAxM0ExMkEwQjAwODQ2QjI3IC8qIExvYWRhYmxlVGV4
dFRyYWNrSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMb2FkYWJsZVRl
eHRUcmFja0ltcGwuaDsgcGF0aCA9IGh0bWwvTG9hZGFibGVUZXh0VHJhY2tJbXBsLmg7IHNvdXJj
ZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQjFBRDRFNTExM0ExMkEwQjAwODQ2QjI3IC8qIE11
dGFibGVUZXh0VHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
TXV0YWJsZVRleHRUcmFjay5jcHA7IHBhdGggPSBodG1sL011dGFibGVUZXh0VHJhY2suY3BwOyBz
b3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUIxQUQ0RTUyMTNBMTJBMEIwMDg0NkIyNyAv
KiBNdXRhYmxlVGV4dFRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE11
dGFibGVUZXh0VHJhY2suaDsgcGF0aCA9IGh0bWwvTXV0YWJsZVRleHRUcmFjay5oOyBzb3VyY2VU
cmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUIxQUQ0RTUzMTNBMTJBMEIwMDg0NkIyNyAvKiBNdXRh
YmxlVGV4dFRyYWNrSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBNdXRhYmxlVGV4dFRyYWNrSW1wbC5jcHA7IHBhdGggPSBodG1sL011dGFibGVUZXh0VHJhY2tJ
bXBsLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlCMUFENEU1NDEzQTEyQTBC
MDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFja0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gTXV0YWJsZVRleHRUcmFja0ltcGwuaDsgcGF0aCA9IGh0bWwvTXV0YWJsZVRl
eHRUcmFja0ltcGwuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlCMUFENEU1NTEz
QTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFRleHRUcmFjay5jcHA7IHBhdGggPSBodG1sL1RleHRUcmFjay5jcHA7IHNv
dXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQjFBRDRFNTYxM0ExMkEwQjAwODQ2QjI3IC8q
IFRleHRUcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXh0VHJhY2su
aDsgcGF0aCA9IGh0bWwvVGV4dFRyYWNrLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
KwkJQjFBRDRFNTcxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja0N1ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUZXh0VHJhY2tDdWUuY3BwOyBwYXRoID0gaHRt
bC9UZXh0VHJhY2tDdWUuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUIxQUQ0
RTU4MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gVGV4dFRyYWNrQ3VlLmg7IHBhdGggPSBodG1sL1RleHRUcmFja0N1ZS5o
OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUIxQUQ0RTU5MTNBMTJBMEIwMDg0NkIy
NyAvKiBUZXh0VHJhY2tDdWVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFRleHRUcmFja0N1ZUxpc3QuY3BwOyBwYXRoID0gaHRtbC9UZXh0VHJhY2tDdWVMaXN0
LmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlCMUFENEU1QTEzQTEyQTBCMDA4
NDZCMjcgLyogVGV4dFRyYWNrQ3VlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBUZXh0VHJhY2tDdWVMaXN0Lmg7IHBhdGggPSBodG1sL1RleHRUcmFja0N1ZUxpc3QuaDsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlCMUFENEU1QjEzQTEyQTBCMDA4NDZCMjcg
LyogVGV4dFRyYWNrUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBU
ZXh0VHJhY2tQcml2YXRlLmg7IHBhdGggPSBodG1sL1RleHRUcmFja1ByaXZhdGUuaDsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlCMUFENEU3MTEzQTEyQTQ2MDA4NDZCMjcgLyogQ3Vl
TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEN1ZUxvYWRl
ci5jcHA7IHBhdGggPSBsb2FkZXIvQ3VlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OworCQlCMUFENEU3MjEzQTEyQTQ2MDA4NDZCMjcgLyogQ3VlTG9hZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1ZUxvYWRlci5oOyBwYXRoID0gbG9hZGVyL0N1
ZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUIxQUQ0RTc4MTNBMTJB
NzIwMDg0NkIyNyAvKiBDdWVQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ3VlUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFB
RDRFNzkxM0ExMkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDdWVQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QjFBRDRFN0ExM0ExMkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlclByaXZhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VlUGFyc2VyUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMUQ1RUNCNDEzNEI1OERBMDA4N0M3OEYgLyogQ2FsbGJhY2tGdW5j
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsYmFja0Z1bmN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIxRTU0NTcxMTM0NjI5MUYwMDkyQTU0
NSAvKiBHZW5lcmF0ZWRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR2VuZXJhdGVkU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjFFNTQ1NzIxMzQ2MjkxRjAwOTJBNTQ1IC8qIEdlbmVyYXRlZFN0cmVhbS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0ZWRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTEzNTUyLDYgKzEzNTk2LDI2IEBACiAJCTQxN0RBNENEMTM3MzQyMDQw
MDdDNTdGQiAvKiB0ZXN0aW5nICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlCMUFENEU3NzEzQTEyQTcyMDA4NDZCMjcgLyogdHJhY2sgKi8sCisJCQkJQjFB
RDRFNzExM0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5jcHAgKi8sCisJCQkJQjFBRDRFNzIx
M0ExMkE0NjAwODQ2QjI3IC8qIEN1ZUxvYWRlci5oICovLAorCQkJCUIxQUQ0RTRCMTNBMTJBMEIw
MDg0NkIyNyAvKiBDdWVJbmRleC5jcHAgKi8sCisJCQkJQjFBRDRFNEMxM0ExMkEwQjAwODQ2QjI3
IC8qIEN1ZUluZGV4LmggKi8sCisJCQkJQjFBRDRFNEQxM0ExMkEwQjAwODQ2QjI3IC8qIExvYWRh
YmxlVGV4dFRyYWNrLmNwcCAqLywKKwkJCQlCMUFENEU0RTEzQTEyQTBCMDA4NDZCMjcgLyogTG9h
ZGFibGVUZXh0VHJhY2suaCAqLywKKwkJCQlCMUFENEU0RjEzQTEyQTBCMDA4NDZCMjcgLyogTG9h
ZGFibGVUZXh0VHJhY2tJbXBsLmNwcCAqLywKKwkJCQlCMUFENEU1MDEzQTEyQTBCMDA4NDZCMjcg
LyogTG9hZGFibGVUZXh0VHJhY2tJbXBsLmggKi8sCisJCQkJQjFBRDRFNTExM0ExMkEwQjAwODQ2
QjI3IC8qIE11dGFibGVUZXh0VHJhY2suY3BwICovLAorCQkJCUIxQUQ0RTUyMTNBMTJBMEIwMDg0
NkIyNyAvKiBNdXRhYmxlVGV4dFRyYWNrLmggKi8sCisJCQkJQjFBRDRFNTMxM0ExMkEwQjAwODQ2
QjI3IC8qIE11dGFibGVUZXh0VHJhY2tJbXBsLmNwcCAqLywKKwkJCQlCMUFENEU1NDEzQTEyQTBC
MDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFja0ltcGwuaCAqLywKKwkJCQlCMUFENEU1NTEzQTEy
QTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrLmNwcCAqLywKKwkJCQlCMUFENEU1NjEzQTEyQTBCMDA4
NDZCMjcgLyogVGV4dFRyYWNrLmggKi8sCisJCQkJQjFBRDRFNTcxM0ExMkEwQjAwODQ2QjI3IC8q
IFRleHRUcmFja0N1ZS5jcHAgKi8sCisJCQkJQjFBRDRFNTgxM0ExMkEwQjAwODQ2QjI3IC8qIFRl
eHRUcmFja0N1ZS5oICovLAorCQkJCUIxQUQ0RTU5MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJh
Y2tDdWVMaXN0LmNwcCAqLywKKwkJCQlCMUFENEU1QTEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRy
YWNrQ3VlTGlzdC5oICovLAorCQkJCUIxQUQ0RTVCMTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJh
Y2tQcml2YXRlLmggKi8sCiAJCQkJNDE4MTVDMUIxMzgzMTk2MzAwNTdBQUE0IC8qIGpzICovLAog
CQkJCTQxN0RBNENGMTM3MzQzMjYwMDdDNTdGQiAvKiBJbnRlcm5hbHMuY3BwICovLAogCQkJCTQx
N0RBNENFMTM3MzQzMjYwMDdDNTdGQiAvKiBJbnRlcm5hbHMuaCAqLywKQEAgLTE3MjM1LDYgKzE3
Mjk5LDE3IEBACiAJCQluYW1lID0gUGx1Z2luczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CiAJCX07CisJCUIxQUQ0RTc3MTNBMTJBNzIwMDg0NkIyNyAvKiB0cmFjayAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQjFBRDRFNzgxM0ExMkE3MjAwODQ2
QjI3IC8qIEN1ZVBhcnNlci5jcHAgKi8sCisJCQkJQjFBRDRFNzkxM0ExMkE3MjAwODQ2QjI3IC8q
IEN1ZVBhcnNlci5oICovLAorCQkJCUIxQUQ0RTdBMTNBMTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJz
ZXJQcml2YXRlLmggKi8sCisJCQkpOworCQkJbmFtZSA9IHRyYWNrOworCQkJcGF0aCA9IHBsYXRm
b3JtL3RyYWNrOworCQkJc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOworCQl9OwogCQlCMjIyNzdD
QTBEMDBCRjFFMDA3MUI3ODIgLyogc3ZnICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKQEAgLTIyODkzLDYgKzIyOTY4LDE4IEBACiAJCQkJOTc3RTJFMEYxMkYwRkM5
QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTM3MzUzMTM3
QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTg1QkI5NkUx
M0E5NDA1ODAwN0EwQjY5IC8qIExpbmtSZWxBdHRyaWJ1dGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUIxQUQ0RTVEMTNBMTJBMEIwMDg0NkIyNyAvKiBDdWVJbmRleC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQjFBRDRFNUYxM0ExMkEwQjAwODQ2QjI3IC8qIExvYWRhYmxlVGV4dFRyYWNrLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlCMUFENEU2MTEzQTEyQTBCMDA4NDZCMjcgLyogTG9hZGFibGVUZXh0VHJh
Y2tJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQlCMUFENEU2MzEzQTEyQTBCMDA4NDZCMjcgLyog
TXV0YWJsZVRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjFBRDRFNjUxM0ExMkEwQjAw
ODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2tJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQlCMUFE
NEU2NzEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlC
MUFENEU2OTEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlLmggaW4gSGVhZGVycyAqLywK
KwkJCQlCMUFENEU2QjEzQTEyQTBCMDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlTGlzdC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQjFBRDRFNkMxM0ExMkEwQjAwODQ2QjI3IC8qIFRleHRUcmFja1ByaXZh
dGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUIxQUQ0RTc0MTNBMTJBNDYwMDg0NkIyNyAvKiBDdWVM
b2FkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUIxQUQ0RTdDMTNBMTJBNzIwMDg0NkIyNyAvKiBD
dWVQYXJzZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUIxQUQ0RTdEMTNBMTJBNzIwMDg0NkIyNyAv
KiBDdWVQYXJzZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1NjMyLDYgKzI1NzE5LDE2
IEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTk4NUJCOTZEMTNBOTQwNTgwMDdBMEI2OSAvKiBMaW5rUmVsQXR0
cmlidXRlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUIxQUQ0RTVDMTNBMTJBMEIwMDg0NkIyNyAv
KiBDdWVJbmRleC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMUFENEU1RTEzQTEyQTBCMDA4NDZC
MjcgLyogTG9hZGFibGVUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjFBRDRFNjAx
M0ExMkEwQjAwODQ2QjI3IC8qIExvYWRhYmxlVGV4dFRyYWNrSW1wbC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlCMUFENEU2MjEzQTEyQTBCMDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFjay5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlCMUFENEU2NDEzQTEyQTBCMDA4NDZCMjcgLyogTXV0YWJsZVRl
eHRUcmFja0ltcGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjFBRDRFNjYxM0ExMkEwQjAwODQ2
QjI3IC8qIFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMUFENEU2ODEzQTEyQTBC
MDA4NDZCMjcgLyogVGV4dFRyYWNrQ3VlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUIxQUQ0RTZB
MTNBMTJBMEIwMDg0NkIyNyAvKiBUZXh0VHJhY2tDdWVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUIxQUQ0RTczMTNBMTJBNDYwMDg0NkIyNyAvKiBDdWVMb2FkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQjFBRDRFN0IxM0ExMkE3MjAwODQ2QjI3IC8qIEN1ZVBhcnNlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VlSW5kZXguY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9DdWVJbmRleC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNjZjkyZTVjMTUw
NjlmZDNiM2VlZDI3MzQyMjljYmRjZGY2YzkzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ3VlSW5kZXguY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUg
IkN1ZUluZGV4LmgiCisKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNpbmNsdWRlICJUZXh0
VHJhY2tDdWVMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ3VlU2V0IEN1ZVNldDo6
ZGlmZmVyZW5jZShjb25zdCBDdWVTZXQmKSBjb25zdAoreworICAgIC8vIEZJWE1FKDYyODgzKTog
SW1wbGVtZW50LgorICAgIHJldHVybiBDdWVTZXQoKTsKK30KKworQ3VlU2V0IEN1ZVNldDo6dW5p
b25TZXQoY29uc3QgQ3VlU2V0JikgY29uc3QKK3sKKyAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxl
bWVudC4KKyAgICByZXR1cm4gQ3VlU2V0KCk7Cit9CisKK3ZvaWQgQ3VlU2V0OjphZGQoY29uc3Qg
VGV4dFRyYWNrQ3VlJikKK3sKKyAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KK30KKwor
Ym9vbCBDdWVTZXQ6OmNvbnRhaW5zKGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0Cit7CisgICAg
Ly8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IEN1ZVNldDo6cmVtb3ZlKGNvbnN0IFRleHRUcmFja0N1ZSYpCit7CisgICAgLy8gRklYTUUoNjI4
ODMpOiBJbXBsZW1lbnQuCit9CisKK2Jvb2wgQ3VlU2V0Ojppc0VtcHR5KCkgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2lu
dCBDdWVTZXQ6OnNpemUoKSBjb25zdAoreworICAgIC8vIEZJWE1FKDYyODgzKTogSW1wbGVtZW50
LgorICAgIHJldHVybiAwOworfQorCit2b2lkIEN1ZUluZGV4OjpmZXRjaE5ld0N1ZXNGcm9tTG9h
ZGVyKEN1ZUxvYWRlciopCit7CisgICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCit9CisK
K3ZvaWQgQ3VlSW5kZXg6OnJlbW92ZUN1ZXNGcm9tSW5kZXgoY29uc3QgVGV4dFRyYWNrQ3VlTGlz
dCopCit7CisgICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCit9CisKK0N1ZVNldCBDdWVJ
bmRleDo6dmlzaWJsZUN1ZXNBdFRpbWUoZG91YmxlKSBjb25zdAoreworICAgIC8vIEZJWE1FKDYy
ODU1KTogSW1wbGVtZW50LgorICAgIHJldHVybiBDdWVTZXQoKTsKK30KKwordm9pZCBDdWVJbmRl
eDo6YWRkKFRleHRUcmFja0N1ZSopCit7CisgICAgLy8gRklYTUUoNjI4OTApOiBJbXBsZW1lbnQu
Cit9CisKK3ZvaWQgQ3VlSW5kZXg6OnJlbW92ZShUZXh0VHJhY2tDdWUqKQoreworICAgIC8vIEZJ
WE1FKDYyODkwKTogSW1wbGVtZW50LgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DdWVJbmRleC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9DdWVJbmRleC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2MmUyZGE0OWMyYzkzMjZmYTk1
OGEwZGNhMzFlNWM0MTgwOWEwY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0N1ZUluZGV4LmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEN1ZUlu
ZGV4X2gKKyNkZWZpbmUgQ3VlSW5kZXhfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisj
aW5jbHVkZSAiQ3VlTG9hZGVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0VHJhY2tDdWU7CitjbGFzcyBUZXh0VHJhY2tDdWVM
aXN0OworCitjbGFzcyBDdWVTZXQgeworcHVibGljOgorICAgIEN1ZVNldCgpIHsgfQorICAgIH5D
dWVTZXQoKSB7IH0KKyAgICBDdWVTZXQgZGlmZmVyZW5jZShjb25zdCBDdWVTZXQmKSBjb25zdDsK
KyAgICBDdWVTZXQgdW5pb25TZXQoY29uc3QgQ3VlU2V0JikgY29uc3Q7CisgICAgdm9pZCBhZGQo
Y29uc3QgVGV4dFRyYWNrQ3VlJik7CisgICAgYm9vbCBjb250YWlucyhjb25zdCBUZXh0VHJhY2tD
dWUmKSBjb25zdDsKKyAgICB2b2lkIHJlbW92ZShjb25zdCBUZXh0VHJhY2tDdWUmKTsKKyAgICBi
b29sIGlzRW1wdHkoKSBjb25zdDsKKyAgICBpbnQgc2l6ZSgpIGNvbnN0OworcHJpdmF0ZToKKyAg
ICBIYXNoU2V0PFRleHRUcmFja0N1ZSo+IG1fc2V0OworfTsKKworY2xhc3MgQ3VlSW5kZXggOiBw
dWJsaWMgQ3VlTG9hZGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBDdWVMb2FkZXJDbGllbnQg
bWV0aG9kcy4KKyAgICB2b2lkIGZldGNoTmV3Q3Vlc0Zyb21Mb2FkZXIoQ3VlTG9hZGVyKik7Cisg
ICAgdm9pZCByZW1vdmVDdWVzRnJvbUluZGV4KGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKTsKKwor
ICAgIC8vIFJldHVybnMgc2V0IG9mIGN1ZXMgdmlzaWJsZSBhdCBhIHRpbWUgaW4gc2Vjb25kcy4K
KyAgICBDdWVTZXQgdmlzaWJsZUN1ZXNBdFRpbWUoZG91YmxlKSBjb25zdDsKKyAgICB2b2lkIGFk
ZChUZXh0VHJhY2tDdWUqKTsKKyAgICB2b2lkIHJlbW92ZShUZXh0VHJhY2tDdWUqKTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI5ZGFhMTQ1YzgzZjZjNmFi
YmNmMzA1MTdkNzdhNGMzZWI5YWUxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVk
ZSAiTG9hZGFibGVUZXh0VHJhY2suaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitMb2FkYWJs
ZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBT
dHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCkKK3sK
KyAgICAvLyBGSVhNRSg2Mjg4MSk6IEltcGxlbWVudC4KKyAgICBtX3ByaXZhdGUgPSBMb2FkYWJs
ZVRleHRUcmFja0ltcGw6OmNyZWF0ZShraW5kLCBsYWJlbCwgbGFuZ3VhZ2UsIGlzRGVmYXVsdCk7
Cit9CisKK0xvYWRhYmxlVGV4dFRyYWNrOjp+TG9hZGFibGVUZXh0VHJhY2soKQoreworICAgIC8v
IEZJWE1FKDYyODgxKTogSW1wbGVtZW50LgorfQorCit2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjps
b2FkKGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUUoNjI4ODEpOiBJbXBsZW1lbnQuCit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xv
YWRhYmxlVGV4dFRyYWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjcxMjk2MjFkYTYyODk5ODYzMThmNzNlZDdl
YzgyOWFjZjg0Mjc3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTG9h
ZGFibGVUZXh0VHJhY2suaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBMb2Fk
YWJsZVRleHRUcmFja19oCisjZGVmaW5lIExvYWRhYmxlVGV4dFRyYWNrX2gKKworI2lmIEVOQUJM
RShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkxvYWRhYmxlVGV4dFRyYWNrSW1wbC5oIgorI2lu
Y2x1ZGUgIlBhc3NSZWZQdHIuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2suaCIKKyNpbmNsdWRlICJU
ZXh0VHJhY2tDdWVMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTG9hZGFi
bGVUZXh0VHJhY2sgOiBwdWJsaWMgVGV4dFRyYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxMb2FkYWJsZVRleHRUcmFjaz4gY3JlYXRlKGNvbnN0IFN0cmluZyYga2luZCwgY29u
c3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IExvYWRhYmxlVGV4dFRyYWNrKGtp
bmQsIGxhYmVsLCBsYW5ndWFnZSwgaXNEZWZhdWx0KSk7CisgICAgfQorICAgIHZpcnR1YWwgfkxv
YWRhYmxlVGV4dFRyYWNrKCk7CisKKyAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJik7CisKK3By
aXZhdGU6CisgICAgTG9hZGFibGVUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBT
dHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCk7CisK
K307Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrSW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZmYzY5
ZDJlZmNjYmM1MmY3Yjk3Mjc5N2FjYWNlODI2NzgzZTlkMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2tJbXBsLmNwcApAQCAtMCwwICsxLDc1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKworI2luY2x1ZGUgIkxvYWRhYmxlVGV4dFRyYWNrSW1wbC5oIgorCisjaW5jbHVkZSAi
VGV4dFRyYWNrQ3VlTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0xvYWRhYmxlVGV4
dFRyYWNrSW1wbDo6TG9hZGFibGVUZXh0VHJhY2tJbXBsKGNvbnN0IFN0cmluZyYga2luZCwgY29u
c3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQp
CisgICAgOiBUZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlKGtpbmQsIGxhYmVsLCBsYW5ndWFnZSkK
KyAgICAsIG1faXNEZWZhdWx0KGlzRGVmYXVsdCkKK3sKK30KKworTG9hZGFibGVUZXh0VHJhY2tJ
bXBsOjp+TG9hZGFibGVUZXh0VHJhY2tJbXBsKCkKK3sKK30KKworUGFzc1JlZlB0cjxUZXh0VHJh
Y2tDdWVMaXN0PiBMb2FkYWJsZVRleHRUcmFja0ltcGw6OmN1ZXMoKSBjb25zdAoreworICAgIC8v
IEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRy
PFRleHRUcmFja0N1ZUxpc3Q+IExvYWRhYmxlVGV4dFRyYWNrSW1wbDo6YWN0aXZlQ3VlcygpIGNv
bnN0Cit7CisgICAgLy8gRklYTUUoNjI4ODUpOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIDA7Cit9
CisKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2tJbXBsOjpmZXRjaE5ld2VzdEN1ZXMoVmVjdG9yPFRl
eHRUcmFja0N1ZSo+JikKK3sKKyAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KK30KKwor
dm9pZCBMb2FkYWJsZVRleHRUcmFja0ltcGw6OmxvYWQoY29uc3QgU3RyaW5nJikKK3sKKyAgICAv
LyBGSVhNRSg2Mjg4MSk6IEltcGxlbWVudC4KK30KKwordm9pZCBMb2FkYWJsZVRleHRUcmFja0lt
cGw6Om5ld0N1ZXNMb2FkZWQoKQoreworICAgIC8vIEZJWE1FKDYyODgxKTogSW1wbGVtZW50Lgor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFja0ltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTG9hZGFibGVUZXh0VHJhY2tJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWE4MTY3NDE1MmMxYmYwMWU4
MGJlMGY1YjA4ZjJjZTQ5Yzk4NjhhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTG9hZGFibGVUZXh0VHJhY2tJbXBsLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgTG9hZGFibGVUZXh0VHJhY2tJbXBsX2gKKyNkZWZpbmUgTG9hZGFibGVUZXh0VHJh
Y2tJbXBsX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkN1ZUxvYWRl
ci5oIgorI2luY2x1ZGUgIkN1ZVBhcnNlci5oIgorI2luY2x1ZGUgIlRleHRUcmFja1ByaXZhdGUu
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0VHJhY2s7CitjbGFzcyBUZXh0VHJh
Y2tDdWU7CitjbGFzcyBUZXh0VHJhY2tDdWVMaXN0OworCitjbGFzcyBMb2FkYWJsZVRleHRUcmFj
a0ltcGwgOiBwdWJsaWMgVGV4dFRyYWNrUHJpdmF0ZUludGVyZmFjZSwgcHVibGljIEN1ZUxvYWRl
ciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8TG9hZGFibGVUZXh0VHJhY2tJbXBs
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBT
dHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgTG9hZGFibGVUZXh0VHJhY2tJbXBsKGtpbmQsIGxhYmVsLCBsYW5ndWFnZSwg
aXNEZWZhdWx0KSk7CisgICAgfQorICAgIHZpcnR1YWwgfkxvYWRhYmxlVGV4dFRyYWNrSW1wbCgp
OworCisgICAgLy8gVGV4dFRyYWNrUHJpdmF0ZUludGVyZmFjZSBtZXRob2RzCisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IGN1ZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gYWN0aXZlQ3VlcygpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYpOworCisgICAgLy8gQ3VlTG9hZGVyIGludGVy
ZmFjZQorICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzTG9hZGVkKCk7CisgICAgdmlydHVhbCB2b2lk
IGZldGNoTmV3ZXN0Q3VlcyhWZWN0b3I8VGV4dFRyYWNrQ3VlKj4mKTsKKworcHJpdmF0ZToKKyAg
ICBMb2FkYWJsZVRleHRUcmFja0ltcGwoY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCk7CisKKyAgICBi
b29sIG1faXNEZWZhdWx0OworCisgICAgQ3VlUGFyc2VyIG1fcGFyc2VyOworICAgIFJlZlB0cjxU
ZXh0VHJhY2tDdWVMaXN0PiBtX2N1ZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL011dGFibGVU
ZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NdXRhYmxlVGV4dFRyYWNrLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40MDMyZTRiNGJlY2Q4ZjJkMTZiMGMyNWM1NTkzMThlODdiMGM1N2U4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NdXRhYmxlVGV4dFRyYWNrLmNwcApA
QCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIk11dGFibGVUZXh0VHJhY2suaCIKKworI2lu
Y2x1ZGUgIk11dGFibGVUZXh0VHJhY2tJbXBsLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
TXV0YWJsZVRleHRUcmFjazo6TXV0YWJsZVRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNv
bnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCit7CisgICAgbV9wcml2
YXRlID0gTXV0YWJsZVRleHRUcmFja0ltcGw6OmNyZWF0ZShraW5kLCBsYWJlbCwgbGFuZ3VhZ2Up
OworfQorCit2b2lkIE11dGFibGVUZXh0VHJhY2s6OmFkZEN1ZShQYXNzUmVmUHRyPFRleHRUcmFj
a0N1ZT4pCit7CisgICAgLy8gRklYTUUoNjI4OTApOiBJbXBsZW1lbnQuCit9CisKK3ZvaWQgTXV0
YWJsZVRleHRUcmFjazo6cmVtb3ZlQ3VlKFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPikKK3sKKyAg
ICAvLyBGSVhNRSg2Mjg5MCk6IEltcGxlbWVudC4KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRU
cmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NdXRhYmxlVGV4dFRyYWNrLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODMzM2NjOWE5ZDBlN2Y5Y2RhM2YxZDU4YzgzM2VjNTc1MzQ2ZGY5NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFjay5oCkBAIC0wLDAgKzEs
NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNdXRhYmxlVGV4dFRyYWNrX2gKKyNkZWZpbmUgTXV0
YWJsZVRleHRUcmFja19oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJU
ZXh0VHJhY2suaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0VHJhY2tDdWU7
CisKK2NsYXNzIE11dGFibGVUZXh0VHJhY2sgOiBwdWJsaWMgVGV4dFRyYWNrIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhYmxlVGV4dFRyYWNrPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNdXRhYmxlVGV4dFRyYWNrKGtpbmQs
IGxhYmVsLCBsYW5ndWFnZSkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5NdXRhYmxlVGV4dFRyYWNr
KCkgeyB9CisKKyAgICB2b2lkIGFkZEN1ZShQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOworICAg
IHZvaWQgcmVtb3ZlQ3VlKFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7Citwcml2YXRlOgorICAg
IE11dGFibGVUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVs
LCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJs
ZVRleHRUcmFja0ltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NdXRhYmxlVGV4dFRyYWNr
SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA4NzBiMWUyMTkzMjU0ODg0NGZjNzg2Y2QxYWNjNzY4ZjFm
NWUyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRU
cmFja0ltcGwuY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiTXV0YWJsZVRleHRU
cmFja0ltcGwuaCIKKworI2luY2x1ZGUgIlRleHRUcmFjay5oIgorI2luY2x1ZGUgIlRleHRUcmFj
a0N1ZS5oIgorI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitNdXRhYmxlVGV4dFRyYWNrSW1wbDo6TXV0YWJsZVRleHRUcmFja0ltcGwoY29uc3Qg
U3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdl
KQorICAgIDogVGV4dFRyYWNrUHJpdmF0ZUludGVyZmFjZShraW5kLCBsYWJlbCwgbGFuZ3VhZ2Up
Cit7Cit9CisKK011dGFibGVUZXh0VHJhY2tJbXBsOjp+TXV0YWJsZVRleHRUcmFja0ltcGwoKQor
eworfQorCit2b2lkIE11dGFibGVUZXh0VHJhY2tJbXBsOjphZGRDdWUoVGV4dFRyYWNrQ3VlKikK
K3sKKyAgICAvLyBGSVhNRSg2Mjg5MCk6IEltcGxlbWVudC4KK30KKwordm9pZCBNdXRhYmxlVGV4
dFRyYWNrSW1wbDo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSopCit7CisgICAgLy8gRklYTUUoNjI4
OTApOiBJbXBsZW1lbnQuCit9CisKK1Bhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gTXV0YWJs
ZVRleHRUcmFja0ltcGw6OmN1ZXMoKSBjb25zdAoreworICAgIC8vIEZJWE1FKDYyODg1KTogSW1w
bGVtZW50LgorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+
IE11dGFibGVUZXh0VHJhY2tJbXBsOjphY3RpdmVDdWVzKCkgY29uc3QKK3sKKyAgICAvLyBGSVhN
RSg2Mjg4NSk6IEltcGxlbWVudC4KKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBNdXRhYmxlVGV4
dFRyYWNrSW1wbDo6bmV3Q3Vlc0xvYWRlZCgpCit7CisgICAgLy8gRklYTUUoNjI4OTApOiBJbXBs
ZW1lbnQuCit9CisKK3ZvaWQgTXV0YWJsZVRleHRUcmFja0ltcGw6OmZldGNoTmV3ZXN0Q3VlcyhW
ZWN0b3I8VGV4dFRyYWNrQ3VlKj4mKQoreworICAgIC8vIEZJWE1FKDYyODkwKTogSW1wbGVtZW50
LgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9NdXRhYmxlVGV4dFRyYWNrSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NdXRhYmxlVGV4dFRyYWNrSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1OTg1NGNmNmYzMzUwMGQx
MWE3MDc3MWJlY2U3ZTMxMGM1NDgxMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL011dGFibGVUZXh0VHJhY2tJbXBsLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgTXV0YWJsZVRleHRUcmFja0ltcGxfaAorI2RlZmluZSBNdXRhYmxlVGV4dFRyYWNr
SW1wbF9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJDdWVMb2FkZXIu
aCIKKyNpbmNsdWRlICJUZXh0VHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQ3VlTG9hZGVyQ2xpZW50OworY2xhc3MgVGV4dFRyYWNrOworY2xhc3MgVGV4dFRyYWNr
Q3VlOworY2xhc3MgVGV4dFRyYWNrQ3VlTGlzdDsKKworY2xhc3MgTXV0YWJsZVRleHRUcmFja0lt
cGwgOiBwdWJsaWMgVGV4dFRyYWNrUHJpdmF0ZUludGVyZmFjZSwgcHVibGljIEN1ZUxvYWRlciB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8TXV0YWJsZVRleHRUcmFja0ltcGw+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmlu
ZyYgbGFuZ3VhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE11dGFibGVU
ZXh0VHJhY2tJbXBsKGtpbmQsIGxhYmVsLCBsYW5ndWFnZSkpOworICAgIH0KKyAgICB2aXJ0dWFs
IH5NdXRhYmxlVGV4dFRyYWNrSW1wbCgpOworCisgICAgLy8gVGV4dFRyYWNrUHJpdmF0ZUludGVy
ZmFjZSBtZXRob2RzCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IGN1
ZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gYWN0
aXZlQ3VlcygpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRDdWUoVGV4dFRyYWNrQ3VlKik7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUN1ZShUZXh0VHJhY2tDdWUqKTsKKworICAgIC8vIEN1
ZUxvYWRlciBpbnRlcmZhY2UKKyAgICB2aXJ0dWFsIHZvaWQgbmV3Q3Vlc0xvYWRlZCgpOworICAg
IHZpcnR1YWwgdm9pZCBmZXRjaE5ld2VzdEN1ZXMoVmVjdG9yPFRleHRUcmFja0N1ZSo+Jik7CisK
K3ByaXZhdGU6CisgICAgTXV0YWJsZVRleHRUcmFja0ltcGwoY29uc3QgU3RyaW5nJiBraW5kLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKTsKKworICAgIFJlZlB0
cjxUZXh0VHJhY2tDdWVMaXN0PiBtX2N1ZXM7CisgICAgVmVjdG9yPFRleHRUcmFja0N1ZSo+IG1f
bmV3ZXN0Q3VlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzNlNThkZWU5ZDI5MTZj
ODgxNWFjODk2ZDg1NTcxYWJlNDFhNGZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0VHJhY2suY3BwCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlRleHRUcmFjay5oIgor
CisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgorI2luY2x1ZGUgIlRleHRUcmFja1ByaXZh
dGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOdWxsVGV4dFRyYWNrUHJpdmF0
ZSA6IHB1YmxpYyBUZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICBOdWxs
VGV4dFRyYWNrUHJpdmF0ZSgpOworICAgIHZpcnR1YWwgfk51bGxUZXh0VHJhY2tQcml2YXRlKCk7
CisKKyAgICAvLyBUZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlIG1ldGhvZHMKKyAgICB2aXJ0dWFs
IFN0cmluZyBraW5kKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQorICAgIHZpcnR1
YWwgU3RyaW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQorICAgIHZp
cnR1YWwgU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQor
ICAgIHZpcnR1YWwgVGV4dFRyYWNrOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJl
dHVybiBUZXh0VHJhY2s6Ok5PTkU7IH0KKyAgICB2aXJ0dWFsIFRleHRUcmFjazo6TW9kZSBtb2Rl
KCkgY29uc3QgeyByZXR1cm4gVGV4dFRyYWNrOjpPRkY7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
TW9kZShUZXh0VHJhY2s6Ok1vZGUpIHsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUZXh0VHJh
Y2tDdWVMaXN0PiBjdWVzKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBhY3RpdmVDdWVzKCkgY29uc3QgeyByZXR1cm4gMDsgfQor
ICAgIHZpcnR1YWwgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYpIHsgfQorfTsKKworc3RhdGljIFBh
c3NPd25QdHI8TnVsbFRleHRUcmFja1ByaXZhdGU+IGNyZWF0ZU51bGxUZXh0VHJhY2tQcml2YXRl
KCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IE51bGxUZXh0VHJhY2tQcml2YXRlKCkpOwor
fQorCitUZXh0VHJhY2s6OlRleHRUcmFjaygpCisgICAgOiBtX3ByaXZhdGUoY3JlYXRlTnVsbFRl
eHRUcmFja1ByaXZhdGUoKSkKK3sKK30KKworVGV4dFRyYWNrOjp+VGV4dFRyYWNrKCkKK3sKK30K
KworU3RyaW5nIFRleHRUcmFjazo6a2luZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+a2luZCgpOworfQorCitTdHJpbmcgVGV4dFRyYWNrOjpsYWJlbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+bGFiZWwoKTsKK30KKworU3RyaW5nIFRleHRUcmFjazo6bGFuZ3Vh
Z2UoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmxhbmd1YWdlKCk7Cit9CisKK1Rl
eHRUcmFjazo6UmVhZHlTdGF0ZSBUZXh0VHJhY2s6OnJlYWR5U3RhdGUoKSBjb25zdAoreworICAg
IHJldHVybiBtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKTsKK30KKworVGV4dFRyYWNrOjpNb2RlIFRl
eHRUcmFjazo6bW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bW9kZSgpOwor
fQorCit2b2lkIFRleHRUcmFjazo6c2V0TW9kZSh1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICAvLyA0LjguMTAuMTIuNSBPbiBzZXR0aW5nIHRoZSBtb2RlLCBp
ZiB0aGUgbmV3IHZhbHVlIGlzIG5vdCBlaXRoZXIgMCwgMSwgb3IgMiwKKyAgICAvLyB0aGUgdXNl
ciBhZ2VudCBtdXN0IHRocm93IGFuIElOVkFMSURfQUNDRVNTX0VSUiBleGNlcHRpb24uCisgICAg
aWYgKG1vZGUgPT0gVGV4dFRyYWNrOjpPRkYgfHwgbW9kZSA9PSBUZXh0VHJhY2s6OkhJRERFTiB8
fCBtb2RlID09IFRleHRUcmFjazo6U0hPV0lORykKKyAgICAgICAgbV9wcml2YXRlLT5zZXRNb2Rl
KHN0YXRpY19jYXN0PE1vZGU+KG1vZGUpKTsKKyAgICBlbHNlCisgICAgICAgIGVjID0gSU5WQUxJ
RF9BQ0NFU1NfRVJSOworfQorCitQYXNzUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IFRleHRUcmFj
azo6Y3VlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y3VlcygpOworfQorCitQ
YXNzUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IFRleHRUcmFjazo6YWN0aXZlQ3VlcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YWN0aXZlQ3VlcygpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTRlYTEwNzVmNDBjODVlOWY2MmJkZDFlNmQ4NWUwODlkZmEzMmE1MQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmgKQEAgLTAsMCArMSw4NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgVGV4dFRyYWNrX2gKKyNkZWZpbmUgVGV4dFRyYWNrX2gKKworI2lmIEVO
QUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
VGV4dFRyYWNrOworY2xhc3MgVGV4dFRyYWNrQ3VlTGlzdDsKK2NsYXNzIFRleHRUcmFja1ByaXZh
dGVJbnRlcmZhY2U7CisKK2NsYXNzIFRleHRUcmFja0NsaWVudCB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+VGV4dFRyYWNrQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1Jl
YWR5U3RhdGVDaGFuZ2VkKFRleHRUcmFjayopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJh
Y2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNr
Q3JlYXRlZChUZXh0VHJhY2sqKSB7IH0KK307CisKK2NsYXNzIFRleHRUcmFjayA6IHB1YmxpYyBS
ZWZDb3VudGVkPFRleHRUcmFjaz4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRl
eHRUcmFjaz4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4
dFRyYWNrKTsKKyAgICB9CisgICAgdmlydHVhbCB+VGV4dFRyYWNrKCk7CisKKyAgICBTdHJpbmcg
a2luZCgpIGNvbnN0OworICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OworICAgIFN0cmluZyBsYW5n
dWFnZSgpIGNvbnN0OworCisgICAgZW51bSBSZWFkeVN0YXRlIHsgTk9ORSwgTE9BRElORywgTE9B
REVELCBFUlJPUiB9OworICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OworCisgICAg
ZW51bSBNb2RlIHsgT0ZGID0gMCwgSElEREVOID0gMSwgU0hPV0lORyA9IDIgfTsKKyAgICBNb2Rl
IG1vZGUoKSBjb25zdDsKKyAgICB2b2lkIHNldE1vZGUodW5zaWduZWQgc2hvcnQsIEV4Y2VwdGlv
bkNvZGUmKTsKKworICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gY3VlcygpIGNvbnN0
OworICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gYWN0aXZlQ3VlcygpIGNvbnN0Owor
CisgICAgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZCgpOworICAgIHZvaWQgbW9kZUNoYW5nZWQoKTsK
KworcHJvdGVjdGVkOgorICAgIFRleHRUcmFjaygpOworICAgIE93blB0cjxUZXh0VHJhY2tQcml2
YXRlSW50ZXJmYWNlPiBtX3ByaXZhdGU7CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRy
YWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zYjdhODkzYzJjZjAzOWUyZTk5MWUwOTZmNWY2ZjQ1NDllN2EwZTI1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuY3BwCkBAIC0wLDAgKzEs
MTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURF
T19UUkFDSykKKworI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgorCisjaW5jbHVkZSAiRG9jdW1l
bnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIlRleHRUcmFjay5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1RleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKGNvbnN0IFN0cmluZyYgaWQsIGRvdWJs
ZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcm
IHNldHRpbmdzLCBib29sIHBhdXNlT25FeGl0KQorICAgIDogbV9pZChpZCkKKyAgICAsIG1fc3Rh
cnRUaW1lKHN0YXJ0KQorICAgICwgbV9lbmRUaW1lKGVuZCkKKyAgICAsIG1fY29udGVudChjb250
ZW50KQorICAgICwgbV9zZXR0aW5ncyhzZXR0aW5ncykKKyAgICAsIG1fcGF1c2VPbkV4aXQocGF1
c2VPbkV4aXQpCit7Cit9CisKK1RleHRUcmFja0N1ZTo6flRleHRUcmFja0N1ZSgpCit7Cit9CisK
K1RleHRUcmFjayogVGV4dFRyYWNrQ3VlOjp0cmFjaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
dHJhY2s7Cit9CisKK3ZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRUcmFjayhUZXh0VHJhY2sqIHRyYWNr
KQoreworICAgIG1fdHJhY2sgPSB0cmFjazsKK30KKworU3RyaW5nIFRleHRUcmFja0N1ZTo6aWQo
KSBjb25zdAoreworICAgIHJldHVybiBtX2lkOworfQorCitkb3VibGUgVGV4dFRyYWNrQ3VlOjpz
dGFydFRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YXJ0VGltZTsKK30KKworZG91Ymxl
IFRleHRUcmFja0N1ZTo6ZW5kVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZW5kVGltZTsK
K30KKworYm9vbCBUZXh0VHJhY2tDdWU6OnBhdXNlT25FeGl0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wYXVzZU9uRXhpdDsKK30KKworU3RyaW5nIFRleHRUcmFja0N1ZTo6Z2V0Q3VlQXNTb3Vy
Y2UoKQoreworICAgIC8vIEZJWE1FKDYyODgzKTogSW1wbGVtZW50LgorICAgIHJldHVybiBlbXB0
eVN0cmluZygpOworfQorCitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFRleHRUcmFja0N1
ZTo6Z2V0Q3VlQXNIVE1MKCkKK3sKKyAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVudC4KKyAg
ICByZXR1cm4gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKDApOworfQorCitib29sIFRleHRUcmFj
a0N1ZTo6aXNBY3RpdmUoKQoreworICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgorICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBUZXh0VHJhY2tDdWU6OnNldElzQWN0aXZlKGJvb2wg
YWN0aXZlKQoreworICAgIG1faXNBY3RpdmUgPSBhY3RpdmU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRU
cmFja0N1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jOWMxNTMzNTk5YmU0ZjExZDdjOWFiMzM1N2U3NTVhZTE1YjI2ZGI4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuaApAQCAtMCwwICsxLDgwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBUZXh0VHJhY2tDdWVfaAorI2RlZmluZSBUZXh0VHJhY2tDdWVf
aAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50RnJhZ21lbnQ7CitjbGFzcyBU
ZXh0VHJhY2s7CisKK2NsYXNzIFRleHRUcmFja0N1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHRU
cmFja0N1ZT4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgaWQsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHNldHRpbmdzLCBib29sIHBhdXNlT25FeGl0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0VHJhY2tDdWUoaWQsIHN0
YXJ0LCBlbmQsIGNvbnRlbnQsIHNldHRpbmdzLCBwYXVzZU9uRXhpdCkpOworICAgIH0KKworICAg
IHZpcnR1YWwgflRleHRUcmFja0N1ZSgpOworCisgICAgVGV4dFRyYWNrKiB0cmFjaygpIGNvbnN0
OworICAgIHZvaWQgc2V0VHJhY2soVGV4dFRyYWNrKik7CisKKyAgICBTdHJpbmcgaWQoKSBjb25z
dDsKKyAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3Q7CisgICAgZG91YmxlIGVuZFRpbWUoKSBj
b25zdDsKKyAgICBib29sIHBhdXNlT25FeGl0KCkgY29uc3Q7CisKKyAgICBTdHJpbmcgZ2V0Q3Vl
QXNTb3VyY2UoKTsKKyAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGdldEN1ZUFzSFRN
TCgpOworCisgICAgYm9vbCBpc0FjdGl2ZSgpOworICAgIHZvaWQgc2V0SXNBY3RpdmUoYm9vbCk7
CisKK3ByaXZhdGU6CisgICAgVGV4dFRyYWNrQ3VlKGNvbnN0IFN0cmluZyYgaWQsIGRvdWJsZSBz
dGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHNl
dHRpbmdzLCBib29sIHBhdXNlT25FeGl0KTsKKworICAgIFRleHRUcmFjayogbV90cmFjazsKKyAg
ICAKKyAgICBTdHJpbmcgbV9pZDsKKyAgICBkb3VibGUgbV9zdGFydFRpbWU7CisgICAgZG91Ymxl
IG1fZW5kVGltZTsKKyAgICBTdHJpbmcgbV9jb250ZW50OworICAgIFN0cmluZyBtX3NldHRpbmdz
OworICAgIGJvb2wgbV9wYXVzZU9uRXhpdDsKKyAgICBib29sIG1faXNBY3RpdmU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0VHJhY2tDdWVMaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTA2YmQ1MTZjOWZlMDlmYWMwNjhj
MzVkN2QyNWYwYmVkMjk5ZjZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0VHJhY2tDdWVMaXN0LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlRl
eHRUcmFja0N1ZUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitUZXh0VHJhY2tDdWVM
aXN0OjpUZXh0VHJhY2tDdWVMaXN0KCkKK3sKKyAgICAvLyBGSVhNRSg2Mjg4Myk6IEltcGxlbWVu
dC4KK30KKworVGV4dFRyYWNrQ3VlKiBUZXh0VHJhY2tDdWVMaXN0OjpnZXRDdWVCeUlkKGNvbnN0
IFN0cmluZyYpIGNvbnN0Cit7CisgICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCisgICAg
cmV0dXJuIDA7Cit9CisKK3ZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6YXBwZW5kKFZlY3RvcjxQYXNz
UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYpCit7CisgICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1l
bnQuCit9CisKK3ZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6YXBwZW5kKGNvbnN0IFBhc3NSZWZQdHI8
VGV4dFRyYWNrQ3VlPiYpCit7CisgICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCit9CisK
K3ZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6cmVtb3ZlKGNvbnN0IFBhc3NSZWZQdHI8VGV4dFRyYWNr
Q3VlPiYpCit7CisgICAgLy8gRklYTUUoNjI4ODMpOiBJbXBsZW1lbnQuCit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRUcmFja0N1ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlz
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNiMzdlNDRmNWM0YWRmNjBkNzg4YzEyMTk3NjdlNWUzOTZjNTljMWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3Qu
aApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUZXh0VHJhY2tDdWVMaXN0X2gK
KyNkZWZpbmUgVGV4dFRyYWNrQ3VlTGlzdF9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisK
KyNpbmNsdWRlICJQYXNzUmVmUHRyLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dFRyYWNrQ3VlTGlzdCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFRleHRUcmFja0N1ZUxpc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxU
ZXh0VHJhY2tDdWVMaXN0PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBUZXh0VHJhY2tDdWVMaXN0KTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBsb25nIGxlbmd0
aCgpIGNvbnN0OworICAgIFRleHRUcmFja0N1ZSogZ2V0Q3VlQnlJZChjb25zdCBTdHJpbmcmKSBj
b25zdDsKKyAgICBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IGFjdGl2ZUN1ZXMoKTsKKwor
ICAgIHZvaWQgYXBwZW5kKGNvbnN0IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiYpOworICAgIHZv
aWQgYXBwZW5kKFZlY3RvcjxQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gPiYpOworICAgIHZvaWQg
cmVtb3ZlKGNvbnN0IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiYpOworCitwcml2YXRlOgorICAg
IFRleHRUcmFja0N1ZUxpc3QoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrUHJp
dmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tQcml2YXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmNjYzdhZjk1MjhhZmUxYzMyMTI3OGEzY2Y1M2JkMmIxMDhhNDJhMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrUHJpdmF0ZS5oCkBAIC0wLDAgKzEs
NzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRleHRUcmFja1ByaXZhdGVfaAorI2RlZmluZSBUZXh0
VHJhY2tQcml2YXRlX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlRl
eHRUcmFjay5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ3VlTG9hZGVyQ2xpZW50
OworY2xhc3MgVGV4dFRyYWNrQ3VlTGlzdDsKKworY2xhc3MgVGV4dFRyYWNrUHJpdmF0ZUludGVy
ZmFjZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dFRyYWNrUHJpdmF0ZUludGVyZmFj
ZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFRleHRUcmFja1ByaXZh
dGVJbnRlcmZhY2UoY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCBTdHJpbmcmIGxhbmd1YWdlKQorICAgICAgICA6IG1fa2luZChraW5kKQorICAgICAgICAsIG1f
bGFiZWwobGFiZWwpCisgICAgICAgICwgbV9sYW5ndWFnZShsYW5ndWFnZSkKKyAgICAgICAgLCBt
X3JlYWR5U3RhdGUoVGV4dFRyYWNrOjpOT05FKQorICAgICAgICAsIG1fbW9kZShUZXh0VHJhY2s6
OlNIT1dJTkcpCisgICAgeworICAgIH0KKyAgICB2aXJ0dWFsIH5UZXh0VHJhY2tQcml2YXRlSW50
ZXJmYWNlKCkgeyB9CisKKyAgICB2aXJ0dWFsIFN0cmluZyBraW5kKCkgY29uc3QgeyByZXR1cm4g
bV9raW5kOyB9CisgICAgdmlydHVhbCBTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xh
YmVsOyB9CisgICAgdmlydHVhbCBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xh
bmd1YWdlOyB9CisKKyAgICB2aXJ0dWFsIFRleHRUcmFjazo6UmVhZHlTdGF0ZSByZWFkeVN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9CisKKyAgICB2aXJ0dWFsIFRleHRUcmFj
azo6TW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CisgICAgdmlydHVhbCB2b2lk
IHNldE1vZGUoVGV4dFRyYWNrOjpNb2RlIG1vZGUpIHsgbV9tb2RlID0gbW9kZTsgfQorCisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IGN1ZXMoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IGFjdGl2ZUN1ZXMoKSBjb25z
dCA9IDA7CisKKyAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBvdmVycmlkZGVuIGJ5
IHRyYWNrcyB0aGF0IGxvYWQgY3VlIGRhdGEgZnJvbSBhIFVSTC4KKyAgICB2aXJ0dWFsIHZvaWQg
bG9hZChjb25zdCBTdHJpbmcmKSB7IH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9raW5kOwor
ICAgIFN0cmluZyBtX2xhYmVsOworICAgIFN0cmluZyBtX2xhbmd1YWdlOworICAgIFRleHRUcmFj
azo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CisgICAgVGV4dFRyYWNrOjpNb2RlIG1fbW9kZTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9DdWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0N1ZUxvYWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2VmZjA3NjlmZjI1OGI3MGY2MGNjMWJi
YjA3NzZiZTQ3YzIwZGM4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9DdWVMb2FkZXIuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQ3VlTG9hZGVy
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBDdWVMb2FkZXI6OnNldEN1ZUxvYWRl
ckNsaWVudChDdWVMb2FkZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9IGNsaWVu
dDsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
dWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9DdWVMb2FkZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wYmY3YjkyNjUyYjg4YzFmNjNiNzljODkyYTkzYjdjNTIyZDQ1ZjEyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1ZUxvYWRlci5oCkBAIC0wLDAgKzEsNjQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBDdWVMb2FkZXJfaAorI2RlZmluZSBDdWVMb2FkZXJfaAorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEN1ZUxvYWRlcjsKK2NsYXNzIFRleHRUcmFja0N1ZTsK
K2NsYXNzIFRleHRUcmFja0N1ZUxpc3Q7CisKKy8vIExpc3RlbmVyIHRvIEN1ZUxvYWRlci4KK2Ns
YXNzIEN1ZUxvYWRlckNsaWVudCB7CitwdWJsaWM6CisgICAgLy8gUXVlcmllcyBDdWVMb2FkZXIg
Zm9yIG5ld2VzdCBjdWVzLgorICAgIHZpcnR1YWwgdm9pZCBmZXRjaE5ld0N1ZXNGcm9tTG9hZGVy
KEN1ZUxvYWRlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ3Vlc0Zyb21JbmRleChj
b25zdCBUZXh0VHJhY2tDdWVMaXN0KikgPSAwOworfTsKKworY2xhc3MgQ3VlTG9hZGVyIHsKK3B1
YmxpYzoKKyAgICB2b2lkIHNldEN1ZUxvYWRlckNsaWVudChDdWVMb2FkZXJDbGllbnQqKTsKKwor
ICAgIC8vIEluZm9ybXMgY2xpZW50IHRoYXQgbmV3IGN1ZXMgaGF2ZSBiZWVuIGxvYWRlZC4KKyAg
ICB2aXJ0dWFsIHZvaWQgbmV3Q3Vlc0xvYWRlZCgpID0gMDsKKworICAgIC8vIFRyYW5zZmVycyBv
d25lcnNoaXAgb2YgY3VycmVudGx5IGxvYWRlZCBjdWVzLgorICAgIHZpcnR1YWwgdm9pZCBmZXRj
aE5ld2VzdEN1ZXMoVmVjdG9yPFRleHRUcmFja0N1ZSo+JiBjdWVzKSA9IDA7CisKK3Byb3RlY3Rl
ZDoKKyAgICBDdWVMb2FkZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworfQorCisjZW5kaWYKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RyYWNrL0N1ZVBhcnNlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDY2YTFlYTYwOGFmZDYxZWMzNGQzZGJiMWY2MDkyZGRlYjRhMTY0ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RyYWNrL0N1ZVBhcnNlci5jcHAKQEAg
LTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisKKyNpbmNsdWRlICJDdWVQYXJzZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitD
dWVQYXJzZXI6OkN1ZVBhcnNlcigpCit7CisgICAgLy8gRklYTUUoNjI4OTMpOiBJbXBsZW1lbnQu
Cit9CisKK0N1ZVBhcnNlcjo6fkN1ZVBhcnNlcigpCit7Cit9CisKK3ZvaWQgQ3VlUGFyc2VyOjps
b2FkKGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklYTUUoNjI4ODEpOiBJbXBsZW1lbnQuCit9
CisKK3ZvaWQgQ3VlUGFyc2VyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgaW50KQorewor
ICAgIC8vIEZJWE1FKDYyODgxKTogSW1wbGVtZW50LgorfQorCit2b2lkIEN1ZVBhcnNlcjo6ZmV0
Y2hQYXJzZWRDdWVzKFZlY3RvcjxQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gPiYpCit7CisgICAg
Ly8gRklYTUUoNjI4OTMpOiBJbXBsZW1lbnQuCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90cmFjay9DdWVQ
YXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RyYWNrL0N1ZVBhcnNlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc3YTc5ZjRiMGQ3NGRmMWUyYjk0NGVjZWI2YzZhZjgyOTU3ZDU4YmIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90cmFjay9DdWVQYXJzZXIuaApAQCAt
MCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgQ3VlUGFyc2VyX2gKKyNkZWZpbmUgQ3VlUGFyc2VyX2gKKwor
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkN1ZVBhcnNlclByaXZhdGUuaCIK
KyNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCisjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRl
ckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFRleHRUcmFja0N1ZTsKKworY2xhc3MgQ3VlUGFyc2VyIDogcHVibGlj
IFRocmVhZGFibGVMb2FkZXJDbGllbnQgeworcHVibGljOgorICAgIEN1ZVBhcnNlcigpOworICAg
IHZpcnR1YWwgfkN1ZVBhcnNlcigpOworCisgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudCBt
ZXRob2RzLgorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCk7CisKKyAg
ICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBmZXRjaFBhcnNlZEN1ZXMoVmVj
dG9yPFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+Jik7CisKK3ByaXZhdGU6CisgICAgUmVmUHRy
PFRocmVhZGFibGVMb2FkZXI+IG1fbG9hZGVyOworICAgIE93blB0cjxDdWVQYXJzZXJQcml2YXRl
SW50ZXJmYWNlPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90cmFjay9D
dWVQYXJzZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90cmFjay9DdWVQYXJz
ZXJQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmMzZTRmYmMwOTUxYmUzNGNiZjAxMDcxZWQyODY5YTk5
YTJmODMwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RyYWNr
L0N1ZVBhcnNlclByaXZhdGUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ3VlUGFyc2VyUHJp
dmF0ZV9oCisjZGVmaW5lIEN1ZVBhcnNlUHJpdmF0ZV9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDdWVQYXJzZXJQcml2YXRlQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgbmV3Q3Vlc1BhcnNlZCgpID0gMDsKK307CisKK2Ns
YXNzIEN1ZVBhcnNlclByaXZhdGVJbnRlcmZhY2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEN1ZVBhcnNlclByaXZhdGVJbnRlcmZhY2UpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5DdWVQYXJzZXJQcml2YXRlSW50ZXJmYWNlKCkgeyB9CisKKyAg
ICAvLyBJbnB1dCBkYXRhIHRvIHRoZSBwYXJzZXIgdG8gcGFyc2UuCisgICAgdmlydHVhbCB2b2lk
IHBhcnNlQnl0ZXMoY29uc3QgY2hhciosIGludCkgPSAwOworCisgICAgLy8gVHJhbnNmZXJzIG93
bmVyc2hpcCBvZiBsYXN0IHBhcnNlZCBjdWVzIHRvIGNhbGxlci4KKyAgICB2aXJ0dWFsIHZvaWQg
ZmV0Y2hQYXJzZWRDdWVzKFZlY3RvcjxQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gPiYpID0gMDsK
KworcHJvdGVjdGVkOgorICAgIEN1ZVBhcnNlclByaXZhdGVJbnRlcmZhY2UoKSB7IH0KK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>