<?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>214521</bug_id>
          
          <creation_ts>2020-07-18 11:36:14 -0700</creation_ts>
          <short_desc>Remove ColorBuilder</short_desc>
          <delta_ts>2020-07-19 13:08:12 -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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>annulen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1672816</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-18 11:36:14 -0700</bug_when>
    <thetext>Remove ColorBuilder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672817</commentid>
    <comment_count>1</comment_count>
      <attachid>404644</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-18 11:42:19 -0700</bug_when>
    <thetext>Created attachment 404644
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672898</commentid>
    <comment_count>2</comment_count>
      <attachid>404644</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-19 08:41:52 -0700</bug_when>
    <thetext>Comment on attachment 404644
Patch

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

&gt; Source/WebCore/platform/graphics/ColorTypes.h:45
&gt; +template&lt;typename Parent&gt; struct ColorType {

Seems like this should be called CanApplyAlpha or AlphaHelper or something. The generic name ColorType doesn&apos;t truly express what it currently does. But maybe in future it will do more.

&gt; Source/WebCore/platform/graphics/ColorTypes.h:48
&gt; +    constexpr Parent colorWithAlpha(uint8_t overrideAlpha) const

Because this always takes uint8_t with no overloading, it is dangerous to pass a 1.0 to this function. It will set alpha to 1/255, I think, without necessarily warning.

&gt; Source/WebCore/platform/graphics/ColorTypes.h:53
&gt; +        copy.alpha = overrideAlpha;

Will this do the right thing if the color type’s component type is float?

&gt; Source/WebCore/platform/graphics/ColorTypes.h:106
&gt; +    constexpr LinearSRGBA(T red, T green, T blue, T alpha = ComponentTraits&lt;T&gt;::maxValue)

Super unhappy that we have to write all these constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672909</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-19 10:36:15 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 404644 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=404644&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ColorTypes.h:45
&gt; &gt; +template&lt;typename Parent&gt; struct ColorType {
&gt; 
&gt; Seems like this should be called CanApplyAlpha or AlphaHelper or something.
&gt; The generic name ColorType doesn&apos;t truly express what it currently does. But
&gt; maybe in future it will do more.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ColorTypes.h:48
&gt; &gt; +    constexpr Parent colorWithAlpha(uint8_t overrideAlpha) const
&gt; 
&gt; Because this always takes uint8_t with no overloading, it is dangerous to
&gt; pass a 1.0 to this function. It will set alpha to 1/255, I think, without
&gt; necessarily warning.

Yeah, alpha handling and Color are a bit messed up still. The Color class is not even consistent about this yet. 

- Color::alpha() returns 0-255 uint8_t
- Color::alphaAsFloat() returns 0-1 float
- Color::colorWithAlpha()/Color::invertedColorWithAlpha() take alpha as 1-0 float.

My intuition is that the more we can treat alpha as a 0-1 float consistently, the better off we are, but I could be off base. When I proposed a few options for SRGBA&lt;uint8_t&gt; literal syntax to Simon a few days ago, one I suggested was:

SRGBA&lt;uint8_t&gt; = srgba({0-255 uint8_t value},{0-255 uint8_t value},{0-255 uint8_t value}, {0-1 float value})

and he was generally against it, and I ended up going with the following for now:

SRGBA&lt;uint8_t&gt; = SRGBA&lt;uint8_t&gt; { {0-255 uint8_t value},{0-255 uint8_t value},{0-255 uint8_t value}, 0-255 uint8_t value})

That said, perhaps there is some naming that we could do to make the specific case of colorWithAlpha() consistent. For instance, maybe we could a whole different direction and do:

SRGBA&lt;uint8_t&gt;::colorWithAlphaPercentage(0-100 float).

Or, just be okay with the slight inconsistency and make it match Color::colorWithAlpha(), despite being different than the constructor / literal form:

SRGBA&lt;uint8_t&gt;::colorWithAlpha(0-1 float)


&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ColorTypes.h:53
&gt; &gt; +        copy.alpha = overrideAlpha;
&gt; 
&gt; Will this do the right thing if the color type’s component type is float?

No, it won&apos;t. But the static_assert above it won&apos;t allow that to happen.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ColorTypes.h:106
&gt; &gt; +    constexpr LinearSRGBA(T red, T green, T blue, T alpha = ComponentTraits&lt;T&gt;::maxValue)
&gt; 
&gt; Super unhappy that we have to write all these constructors.

:(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672910</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-19 10:41:14 -0700</bug_when>
    <thetext>While considering different interfaces, seems we could name the function colorWithAlphaByte for now. And Color::alpha could be renamed alphaByte for now.

Then if you want to add colorWithAlpha(0-1 float), could do that later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672911</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-19 10:42:22 -0700</bug_when>
    <thetext>&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/ColorTypes.h:106
&gt; &gt; &gt; +    constexpr LinearSRGBA(T red, T green, T blue, T alpha = ComponentTraits&lt;T&gt;::maxValue)
&gt; &gt; 
&gt; &gt; Super unhappy that we have to write all these constructors.
&gt; 
&gt; :(

I believe we could get rid of both the constructors if we were ok with removing the functionality of one them (though I haven&apos;t tested that c++ will actually allow this in practice). That is, if we were ok with not having the behavior of

LinearSRGBA { } == LinearSRGBA { 0, 0, 0, 0 }

We could remove both constructors and just set T alpha = ComponentTraits&lt;T&gt;::maxValue at the member definition.

Or, if we are ok with not having the behavior of:

LinearSRGBA { r, g, b } == LinearSRGBA { r, g, b, ComponentTraits&lt;T&gt;::maxValue }

We could remove both constructors and just set all the members to default to ComponentTraits&lt;T&gt;::minValue.

But I can&apos;t think of a way to maintain both behaviors without both constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672912</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-19 10:42:37 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; While considering different interfaces, seems we could name the function
&gt; colorWithAlphaByte for now. And Color::alpha could be renamed alphaByte for
&gt; now.
&gt; 
&gt; Then if you want to add colorWithAlpha(0-1 float), could do that later.

Yeah, that seems like a good idea. Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672913</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-19 10:44:51 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #6)
&gt; (In reply to Darin Adler from comment #4)
&gt; &gt; While considering different interfaces, seems we could name the function
&gt; &gt; colorWithAlphaByte for now. And Color::alpha could be renamed alphaByte for
&gt; &gt; now.
&gt; &gt; 
&gt; &gt; Then if you want to add colorWithAlpha(0-1 float), could do that later.
&gt; 
&gt; Yeah, that seems like a good idea. Will do.

Also fun, since it kind sounds like alphabet when I say it fast in my head :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672914</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-19 10:50:20 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #5)
&gt; I believe we could get rid of both the constructors if we were ok with
&gt; removing the functionality of one them (though I haven&apos;t tested that c++
&gt; will actually allow this in practice).

Something that might help with this: Have a type sRGB&lt;uint8_t&gt; as well as sRGBA&lt;uint8_t&gt;. Maybe that would decrease the need for a constructor for sRGBA&lt;uint8_t&gt; with default values. I would still suggest initializing to 0 since uninitialized structure members are unpleasant.

There are at least some places that would use sRGB&lt;uint8_t&gt;; for one thing it exactly corresponds to HTML&apos;s &quot;simple color&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672922</commentid>
    <comment_count>9</comment_count>
      <attachid>404676</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-19 11:19:28 -0700</bug_when>
    <thetext>Created attachment 404676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672927</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-19 11:26:38 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #8)
&gt; (In reply to Sam Weinig from comment #5)
&gt; &gt; I believe we could get rid of both the constructors if we were ok with
&gt; &gt; removing the functionality of one them (though I haven&apos;t tested that c++
&gt; &gt; will actually allow this in practice).
&gt; 
&gt; Something that might help with this: Have a type sRGB&lt;uint8_t&gt; as well as
&gt; sRGBA&lt;uint8_t&gt;. Maybe that would decrease the need for a constructor for
&gt; sRGBA&lt;uint8_t&gt; with default values. I would still suggest initializing to 0
&gt; since uninitialized structure members are unpleasant.
&gt; 
&gt; There are at least some places that would use sRGB&lt;uint8_t&gt;; for one thing
&gt; it exactly corresponds to HTML&apos;s &quot;simple color&quot;.

Good idea. 

As an aside, I am pretty unhappy with the name SRGBA&lt;&gt;/SRGB&lt;&gt; (capital S), and would much prefer sRGBA/sRGB, but have resisted for two reasons:

1) WebCore style indicates classes/structs begin with capital letters.
2) Unclear what to do with helper functions like toSRGBA() (my initial thought is I would be tempted to change toSRGBA() to a more generic things that take the class, like convertTo&lt;sRGBA&gt;())

Where do you stand on this controversial idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672930</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-19 11:45:10 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #10)
&gt; Where do you stand on this controversial idea?

I say we stick with capital S for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672933</commentid>
    <comment_count>12</comment_count>
      <attachid>404678</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-19 11:53:19 -0700</bug_when>
    <thetext>Created attachment 404678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672941</commentid>
    <comment_count>13</comment_count>
      <attachid>404678</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-19 12:20:42 -0700</bug_when>
    <thetext>Comment on attachment 404678
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:288
&gt; +                &amp;&amp; tableBGColor != cellColor &amp;&amp; cellColor.alphaByte() != 1) // FIXME (https://bugs.webkit.org/show_bug.cgi?id=214537): This comparison to 1 is likely incorrect. It likely should be checking !cellColor.isOpaque().

Renaming FTW! Someone needs to add a test case now.

&gt; Source/WebCore/rendering/RenderThemeIOS.mm:337
&gt;      if (isChecked(box)) {
&gt; -        ASSERT(style.visitedDependentColor(CSSPropertyBorderTopColor).alpha() % 255 == 0);
&gt; -        ASSERT(style.visitedDependentColor(CSSPropertyBorderRightColor).alpha() % 255 == 0);
&gt; -        ASSERT(style.visitedDependentColor(CSSPropertyBorderBottomColor).alpha() % 255 == 0);
&gt; -        ASSERT(style.visitedDependentColor(CSSPropertyBorderLeftColor).alpha() % 255 == 0);
&gt; +        ASSERT(style.visitedDependentColor(CSSPropertyBorderTopColor).alphaByte() % 255 == 0);
&gt; +        ASSERT(style.visitedDependentColor(CSSPropertyBorderRightColor).alphaByte() % 255 == 0);
&gt; +        ASSERT(style.visitedDependentColor(CSSPropertyBorderBottomColor).alphaByte() % 255 == 0);
&gt; +        ASSERT(style.visitedDependentColor(CSSPropertyBorderLeftColor).alphaByte() % 255 == 0);
&gt;      }

Could rewrite these to a less silly style some day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672949</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-19 13:07:12 -0700</bug_when>
    <thetext>Committed r264584: &lt;https://trac.webkit.org/changeset/264584&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404678.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672950</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-19 13:08:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/65795418&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404644</attachid>
            <date>2020-07-18 11:42:19 -0700</date>
            <delta_ts>2020-07-19 11:19:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214521-20200718114218.patch</filename>
            <type>text/plain</type>
            <size>21041</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDIwLTA3LTE4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgQ29sb3JCdWlsZGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ1MjEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb2xvckJ1aWxk
ZXIgaXMgdW5uZWNlc3NhcnkgYW5kIGp1c3QgbWFrZXMgZGVkdWN0aW9uIGNvbnRleHRzIG1vcmUg
Y29tcGxpY2F0ZWQuCisgICAgICAgIEluc3RlYWQsIHdlIGNhbiBnZXQgdGhlIHNhbWUgYmVoYXZp
b3IgYnkgaGF2aW5nIGNvbG9yIHR5cGVzIGluaGVyaXQgZnJvbSBhIHNoYXJlZAorICAgICAgICBi
YXNlIGNsYXNzIENvbG9yVHlwZSB0aGF0IHVzZXMgdGhlIGN1cmlvdXNseSByZWN1cnJpbmcgdGVt
cGxhdGUgcGF0dGVybiwgd2hpY2ggCisgICAgICAgIGV4cG9zZXMgdGhlIGNvbG9yV2l0aEFscGhh
IGZ1bmN0aW9uLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIFJlbW92ZSBDb2xvckJ1aWxkZXIu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJ1aWxkZXIuaDogUmVtb3ZlZC4K
KworICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQpOgor
ICAgICAgICAqIHBhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5OjpkcmF3UmVjdCk6CisgICAgICAgIE5vIG5l
ZWQgdG8gY2FsbCAuY29sb3IoKSBub3cgdGhhdCBjb2xvcldpdGhBbHBoYSByZXR1cm5zIHRoZSBj
b3JyZWN0IHR5cGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAgICAgU3RvcCB1c2luZyBD
b2xvckJ1aWxkZXIgZm9yIGNvbG9yIG5hbWVkIGNvbG9yIHR5cGVzLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JUeXBl
Ojpjb2xvcldpdGhBbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lYXJTUkdCQTo6
TGluZWFyU1JHQkEpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVAzOjpEaXNwbGF5UDMpOgor
ICAgICAgICAoV2ViQ29yZTo6TGluZWFyRGlzcGxheVAzOjpMaW5lYXJEaXNwbGF5UDMpOgorICAg
ICAgICAoV2ViQ29yZTo6SFNMQTo6SFNMQSk6CisgICAgICAgIChXZWJDb3JlOjpDTVlLQTo6Q01Z
S0EpOgorICAgICAgICAoV2ViQ29yZTo6WFlaQTo6WFlaQSk6CisgICAgICAgIFN3aXRjaCBlYWNo
IGNvbG9yIHR5cGUgdG8gaW5oZXJpdGluZyBmcm9tIG5ldyBDb2xvclR5cGUgYmFzZSBzdHJ1Y3Qu
IFVzZSBvcGVydHVuaXR5IHRvIGdpdmUKKyAgICAgICAgZWFjaCBjb2xvciB0eXBlIHRoZSBzYW1l
IGNvbnN0cnVjdGlvbiBpbnRlcmZhY2UgYXMgd2VsbC4gTm93IHRoYXQgZWFjaCB0eXBlIGhhcyBj
b25zdHJ1Y3RvcnMsCisgICAgICAgIHRoZSBkZWR1Y3Rpb24gZ3VpZGVzIGFyZSBubyBsb25nZXIg
bmVjZXNzYXJ5LgorCiAyMDIwLTA3LTE4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggYnVpbGQgd2FybmluZ3MgaW4gdGhl
IFdlYlhSIGJhY2tlbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjY0NTY1KQor
KysgU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTA4Myw3
ICsxMDgzLDYgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAotICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yQnVpbGRlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JD
b21wb25lbnRzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9ySGFzaC5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjQ1NjUpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTIyMDksNyArMjIwOSw2IEBACiAJCTdBRjlCMjBGMThDRkI1RjQwMEM2NEJF
RiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBRjlCMjBCMThDRkI1RjMwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3Qu
aCAqLzsgfTsKIAkJN0JFNzQyNzM4MUZBOTA2RkJCNEYwRjJDIC8qIEpTU1ZHR3JhcGhpY3NFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBD
NEMwMkJFRDg5MzZGODE4RTJGOTkgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCAqLzsgfTsKIAkJ
N0MwMjlDNkUyNDkzQzhGODAwMjY4MjA0IC8qIENvbG9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAv
KiBDb2xvclR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJN0MxNEEwMDcyNEI1RkUyMTAwMUE2QzZDIC8qIENvbG9yQnVpbGRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxNEEwMDYyNEI1RkUy
MTAwMUE2QzZDIC8qIENvbG9yQnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTdDMTg0M0ZFMUM4QjcyODMwMDJFQjk3MyAvKiBBdXRvZmls
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxODQz
RkMxQzhCNzI4MzAwMkVCOTczIC8qIEF1dG9maWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxOTNCQkIxRjVFMEVFRDAwODhGM0U2IC8qIENh
bnZhc0RpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MxOTNCQjYxRjVFMEVCOTAwODhGM0U2IC8qIENhbnZhc0RpcmVjdGlvbi5oICovOyB9
OwogCQk3QzE5M0JCQzFGNUUwRUVEMDA4OEYzRTYgLyogQ2FudmFzRmlsbFJ1bGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTkzQkExMUY1RTBFQUIw
MDg4RjNFNiAvKiBDYW52YXNGaWxsUnVsZS5oICovOyB9OwpAQCAtOTkzMiw3ICs5OTMxLDYgQEAK
IAkJN0MwQ0VGMkUxRTRBNTgzMjAwOERFQjgwIC8qIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUJ1aWx0aW5D
b25zdHJ1Y3RvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzBDRUYy
RjFFNEE1OEFEMDA4REVCODAgLyogSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzBDRUYzMDFFNEE1OEYxMDA4REVCODAgLyogSlNE
T01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0RPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJN0MxNEEwMDYyNEI1RkUyMTAwMUE2QzZDIC8qIENvbG9yQnVpbGRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvckJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0MxODQzRkIxQzhCNzI4MzAwMkVCOTczIC8qIEF1dG9maWxsLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dG9maWxsLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0MxODQzRkMxQzhCNzI4MzAwMkVCOTczIC8qIEF1dG9maWxsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dG9maWxsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDMTkzQjlBMUY1RTBFQTcwMDg4RjNFNiAvKiBDYW52YXNEcmF3
SW1hZ2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENhbnZhc0RyYXdJbWFnZS5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTU0Nyw3ICsyNTU0NSw2IEBACiAJCQkJQjI3
NTM1MzkwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmggKi8sCiAJCQkJN0MxQjRBNjUyNEE5OTc1
OTAwMzM3MjdGIC8qIENvbG9yQmxlbmRpbmcuY3BwICovLAogCQkJCTdDMUI0QTY3MjRBOTk3NjYw
MDMzNzI3RiAvKiBDb2xvckJsZW5kaW5nLmggKi8sCi0JCQkJN0MxNEEwMDYyNEI1RkUyMTAwMUE2
QzZDIC8qIENvbG9yQnVpbGRlci5oICovLAogCQkJCTdDQUM2QUVDMjQ3RjFDNTEwMEU2MUQ1OSAv
KiBDb2xvckNvbXBvbmVudHMuaCAqLywKIAkJCQk3QzUxNEUwMjI0QUY4MDU4MDA1MDcxMEYgLyog
Q29sb3JDb252ZXJzaW9uLmNwcCAqLywKIAkJCQk3QzUxNEUwMDI0QUY4MDU4MDA1MDcxMEYgLyog
Q29sb3JDb252ZXJzaW9uLmggKi8sCkBAIC0zMDE1MCw3ICszMDE0Nyw2IEBACiAJCQkJNDZFQkVB
MDIxQjdENEQ2NTAwQkU0OTQxIC8qIENvbGxlY3Rpb25UcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzQzQ0MjAwMEY4MTNBRTEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uVHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjI3NTM1NjcwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk3QzE0QTAwNzI0QjVGRTIxMDAxQTZDNkMgLyogQ29sb3JCdWlsZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMzMwQTIyMzEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9v
c2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyogQ29s
b3JDaG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDhEMkFBNTIxNTk3NDBEMDBD
Njc1MkIgLyogQ29sb3JDb2NvYS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDM0Miw3ICszNDMzOCw3
IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CQlzaGVsbFBhdGggPSAvYmluL3NoOwotCQkJc2hlbGxTY3JpcHQgPSAiaWYgWyBcIiR7QUNUSU9O
fVwiID0gXCJpbnN0YWxsaGRyc1wiIC1vIFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxhcGlcIiBd
OyB0aGVuXG4gICAgZXhpdCAwO1xuZmlcblxuaWYgWyAtZiAuLi8uLi9Ub29scy9TY3JpcHRzL2No
ZWNrLWZvci13ZWFrLXZ0YWJsZXMtYW5kLWV4dGVybmFscyBdOyB0aGVuXG4gICAgLi4vLi4vVG9v
bHMvU2NyaXB0cy9jaGVjay1mb3Itd2Vhay12dGFibGVzLWFuZC1leHRlcm5hbHMgfHwgZXhpdCAk
P1xuZmkiOworCQkJc2hlbGxTY3JpcHQgPSAiaWYgWyBcIiR7QUNUSU9OfVwiID0gXCJpbnN0YWxs
aGRyc1wiIC1vIFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxhcGlcIiBdOyB0aGVuXG4gICAgZXhp
dCAwO1xuZmlcblxuaWYgWyAtZiAuLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci13ZWFrLXZ0
YWJsZXMtYW5kLWV4dGVybmFscyBdOyB0aGVuXG4gICAgLi4vLi4vVG9vbHMvU2NyaXB0cy9jaGVj
ay1mb3Itd2Vhay12dGFibGVzLWFuZC1leHRlcm5hbHMgfHwgZXhpdCAkP1xuZmlcbiI7CiAJCX07
CiAJCTVEMkY3REEwMEM2ODc5QzYwMEI1QjcyQiAvKiBVcGRhdGUgSW5mby5wbGlzdCB3aXRoIHZl
cnNpb24gaW5mb3JtYXRpb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhh
c2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAkocmV2
aXNpb24gMjY0NTY1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIE5vbkZhc3RTY3JvbGxh
YmxlUmVnaW9uT3ZlcmxheTo6ZHJhCiAjZW5kaWYKIAogICAgIGZvciAoY29uc3QgYXV0byYgc3lu
Y2hyb25vdXNFdmVudFJlZ2lvbiA6IG1fZXZlbnRUcmFja2luZ1JlZ2lvbnMuZXZlbnRTcGVjaWZp
Y1N5bmNocm9ub3VzRGlzcGF0Y2hSZWdpb25zKSB7Ci0gICAgICAgIGF1dG8gcmVnaW9uQ29sb3Ig
PSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoNjQpLmNvbG9yKCk7CisgICAgICAgIGF1dG8g
cmVnaW9uQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoNjQpOwogICAgICAgICBh
dXRvIGl0ID0gdG91Y2hFdmVudFJlZ2lvbkNvbG9ycygpLmZpbmQoc3luY2hyb25vdXNFdmVudFJl
Z2lvbi5rZXkpOwogICAgICAgICBpZiAoaXQgIT0gdG91Y2hFdmVudFJlZ2lvbkNvbG9ycygpLmVu
ZCgpKQogICAgICAgICAgICAgcmVnaW9uQ29sb3IgPSBpdC0+dmFsdWU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNjQ1NjUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDggKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29u
c3RleHByIGF1dG8gbGlnaHRlbmVkQmxhY2sgPSBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+
IHsgODQsIDg0LCA4NCB9Owotc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRhcmtlbmVkV2hpdGUgPSBD
b2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsgMTcxLCAxNzEsIDE3MSB9Oworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGxpZ2h0ZW5lZEJsYWNrID0gU1JHQkE8dWludDhfdD4geyA4NCwgODQsIDg0
IH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gZGFya2VuZWRXaGl0ZSA9IFNSR0JBPHVpbnQ4X3Q+
IHsgMTcxLCAxNzEsIDE3MSB9OwogCiBDb2xvcjo6Q29sb3IoY29uc3QgQ29sb3ImIG90aGVyKQog
ICAgIDogbV9jb2xvckRhdGEob3RoZXIubV9jb2xvckRhdGEpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI2NDU2NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcg
KzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDb2xvckJ1aWxkZXIuaCIKICNp
bmNsdWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNs
dWRlICJFeHRlbmRlZENvbG9yLmgiCkBAIC0xNDYsMjAgKzE0NSwyMCBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgRDJEMV9WRUNUT1JfNEYoKSBjb25zdDsKICNlbmRpZgog
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJsYWNrID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVp
bnQ4X3Q+PiB7IDAsIDAsIDAgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gd2hpdGUgPSBD
b2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsgMjU1LCAyNTUsIDI1NSB9OwotICAgIHN0YXRp
YyBjb25zdGV4cHIgYXV0byBkYXJrR3JheSA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4g
eyAxMjgsIDEyOCwgMTI4IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGdyYXkgPSBDb2xv
ckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsgMTYwLCAxNjAsIDE2MCB9OwotICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBsaWdodEdyYXkgPSBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsg
MTkyLCAxOTIsIDE5MiB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byB0cmFuc3BhcmVudCA9
IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIg
YXV0byBjeWFuID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDAsIDI1NSwgMjU1IH07
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHllbGxvdyA9IENvbG9yQnVpbGRlcjxTUkdCQTx1
aW50OF90Pj4geyAyNTUsIDI1NSwgMCB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byByZWQg
PSBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsgMjU1LCAwLCAwIH07Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIG1hZ2VudGEgPSBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsg
MjU1LCAwLCAyNTUgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gYmx1ZSA9IENvbG9yQnVp
bGRlcjxTUkdCQTx1aW50OF90Pj4geyAwLCAwLCAyNTUgfTsKLSAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8gZ3JlZW4gPSBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsgMCwgMjU1LCAwIH07
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRhcmtHcmVlbiA9IENvbG9yQnVpbGRlcjxTUkdC
QTx1aW50OF90Pj4geyAwLCAxMjgsIDAgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gb3Jh
bmdlID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDI1NSwgMTI4LCAwIH07CisgICAg
c3RhdGljIGNvbnN0ZXhwciBhdXRvIGJsYWNrID0gU1JHQkE8dWludDhfdD4geyAwLCAwLCAwIH07
CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHdoaXRlID0gU1JHQkE8dWludDhfdD4geyAyNTUs
IDI1NSwgMjU1IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRhcmtHcmF5ID0gU1JHQkE8
dWludDhfdD4geyAxMjgsIDEyOCwgMTI4IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGdy
YXkgPSBTUkdCQTx1aW50OF90PiB7IDE2MCwgMTYwLCAxNjAgfTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGF1dG8gbGlnaHRHcmF5ID0gU1JHQkE8dWludDhfdD4geyAxOTIsIDE5MiwgMTkyIH07Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRyYW5zcGFyZW50ID0gU1JHQkE8dWludDhfdD4geyB9
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjeWFuID0gU1JHQkE8dWludDhfdD4geyAwLCAy
NTUsIDI1NSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byB5ZWxsb3cgPSBTUkdCQTx1aW50
OF90PiB7IDI1NSwgMjU1LCAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHJlZCA9IFNS
R0JBPHVpbnQ4X3Q+IHsgMjU1LCAwLCAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1h
Z2VudGEgPSBTUkdCQTx1aW50OF90PiB7IDI1NSwgMCwgMjU1IH07CisgICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGJsdWUgPSBTUkdCQTx1aW50OF90PiB7IDAsIDAsIDI1NSB9OworICAgIHN0YXRp
YyBjb25zdGV4cHIgYXV0byBncmVlbiA9IFNSR0JBPHVpbnQ4X3Q+IHsgMCwgMjU1LCAwIH07Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRhcmtHcmVlbiA9IFNSR0JBPHVpbnQ4X3Q+IHsgMCwg
MTI4LCAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIG9yYW5nZSA9IFNSR0JBPHVpbnQ4
X3Q+IHsgMjU1LCAxMjgsIDAgfTsKIAogICAgIGJvb2wgaXNFeHRlbmRlZCgpIGNvbnN0IHsgcmV0
dXJuICEobV9jb2xvckRhdGEuaW5saW5lQ29sb3JBbmRGbGFncyAmIGludmFsaWRJbmxpbmVDb2xv
cik7IH0KICAgICBib29sIGlzSW5saW5lKCkgY29uc3QgeyByZXR1cm4gIWlzRXh0ZW5kZWQoKTsg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCdWlsZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCdWls
ZGVyLmgJKHJldmlzaW9uIDI2NDU2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQnVpbGRlci5oCShub25leGlzdGVudCkKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEhlbHBlciB0
byBhbGxvdyBjb252ZW5pZW50IHN5bnRheCBmb3Igd29ya2luZyB3aXRoIGNvbG9yIHR5cGVzLgot
Ly8gZS5nLiBhdXRvIHllbGxvd1dpdGg1MFBlcmNlbnRBbHBoYSA9IENvbG9yOjp5ZWxsb3cuY29s
b3JXaXRoQWxwaGEoMTI4KTsKLXRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gc3RydWN0IENv
bG9yQnVpbGRlciA6IHB1YmxpYyBDb2xvclR5cGUgewotICAgIHVzaW5nIENvbG9yVHlwZTo6Q29s
b3JUeXBlOwotCi0gICAgY29uc3RleHByIENvbG9yVHlwZSBjb2xvcigpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgY29uc3RleHByIENvbG9yQnVpbGRl
ciBjb2xvcldpdGhBbHBoYSh1aW50OF90IG92ZXJyaWRlQWxwaGEpIGNvbnN0Ci0gICAgewotICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PHR5cGVuYW1lIENvbG9yVHlwZTo6Q29t
cG9uZW50VHlwZSwgdWludDhfdD4sICJPbmx5IHVpbnQ4X3QgYmFzZWQgY29sb3IgdHlwZXMgYXJl
IHN1cHBvcnRlZC4iKTsKLQotICAgICAgICBhdXRvIGNvcHkgPSAqdGhpczsKLSAgICAgICAgY29w
eS5hbHBoYSA9IG92ZXJyaWRlQWxwaGE7Ci0gICAgICAgIHJldHVybiBjb3B5OwotICAgIH0KLX07
Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5
cGVzLmgJKHJldmlzaW9uIDI2NDU2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsMjAgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQ29tcG9uZW50VHJhaXRzPGZsb2F0PgogICAgIHN0YXRpYyBjb25zdGV4cHIg
ZmxvYXQgbWF4VmFsdWUgPSAxLjBmOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IFNSR0JBIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFBhcmVudD4gc3RydWN0IENvbG9yVHlwZSB7Cisg
ICAgLy8gSGVscGVyIHRvIGFsbG93IGNvbnZlbmllbnQgc3ludGF4IGZvciB3b3JraW5nIHdpdGgg
Y29sb3IgdHlwZXMuCisgICAgLy8gZS5nLiBhdXRvIHllbGxvd1dpdGg1MFBlcmNlbnRBbHBoYSA9
IENvbG9yOjp5ZWxsb3cuY29sb3JXaXRoQWxwaGEoMTI4KTsKKyAgICBjb25zdGV4cHIgUGFyZW50
IGNvbG9yV2l0aEFscGhhKHVpbnQ4X3Qgb3ZlcnJpZGVBbHBoYSkgY29uc3QKKyAgICB7CisgICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFBh
cmVudD4oKS5hbHBoYSksIHVpbnQ4X3Q+LCAiT25seSB1aW50OF90IGJhc2VkIGNvbG9yIHR5cGVz
IGFyZSBzdXBwb3J0ZWQuIik7CisKKyAgICAgICAgYXV0byBjb3B5ID0gKnN0YXRpY19jYXN0PGNv
bnN0IFBhcmVudCo+KHRoaXMpOworICAgICAgICBjb3B5LmFscGhhID0gb3ZlcnJpZGVBbHBoYTsK
KyAgICAgICAgcmV0dXJuIGNvcHk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IFNSR0JBIDogQ29sb3JUeXBlPFNSR0JBPFQ+PiB7CiAgICAgdXNpbmcgQ29tcG9uZW50
VHlwZSA9IFQ7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2UgPSBDb2xvclNw
YWNlOjpTUkdCOwogCkBAIC04NiwxOCArOTksMjkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29u
c3RleHByIGJvb2wgb3BlcgogfQogCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMaW5l
YXJTUkdCQSB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTGluZWFyU1JHQkEgOiBDb2xv
clR5cGU8TGluZWFyU1JHQkE8VD4+IHsKKyAgICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OkxpbmVhclJH
QjsKKworICAgIGNvbnN0ZXhwciBMaW5lYXJTUkdCQShUIHJlZCwgVCBncmVlbiwgVCBibHVlLCBU
IGFscGhhID0gQ29tcG9uZW50VHJhaXRzPFQ+OjptYXhWYWx1ZSkKKyAgICAgICAgOiByZWQgeyBy
ZWQgfQorICAgICAgICAsIGdyZWVuIHsgZ3JlZW4gfQorICAgICAgICAsIGJsdWUgeyBibHVlIH0K
KyAgICAgICAgLCBhbHBoYSB7IGFscGhhIH0KKyAgICB7CisgICAgfQorCisgICAgY29uc3RleHBy
IExpbmVhclNSR0JBKCkKKyAgICAgICAgOiBMaW5lYXJTUkdCQSB7IENvbXBvbmVudFRyYWl0czxU
Pjo6bWluVmFsdWUsIENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUsIENvbXBvbmVudFRyYWl0
czxUPjo6bWluVmFsdWUsIENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUgfQorICAgIHsKKyAg
ICB9CisKICAgICBUIHJlZDsKICAgICBUIGdyZWVuOwogICAgIFQgYmx1ZTsKICAgICBUIGFscGhh
OwotCi0gICAgdXNpbmcgQ29tcG9uZW50VHlwZSA9IFQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpMaW5lYXJSR0I7CiB9OwogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBMaW5lYXJTUkdCQShULCBULCBULCBUKSAtPiBMaW5lYXJTUkdCQTxUPjsKLQog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBhc0NvbG9y
Q29tcG9uZW50cyhjb25zdCBMaW5lYXJTUkdCQTxUPiYgYykKIHsKICAgICByZXR1cm4geyBjLnJl
ZCwgYy5ncmVlbiwgYy5ibHVlLCBjLmFscGhhIH07CkBAIC0xMTksMTggKzE0MywyOSBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyCiB9CiAKIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IERpc3BsYXlQMyB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
RGlzcGxheVAzIDogQ29sb3JUeXBlPERpc3BsYXlQMzxUPj4geworICAgIHVzaW5nIENvbXBvbmVu
dFR5cGUgPSBUOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29sb3JT
cGFjZTo6RGlzcGxheVAzOworCisgICAgY29uc3RleHByIERpc3BsYXlQMyhUIHJlZCwgVCBncmVl
biwgVCBibHVlLCBUIGFscGhhID0gQ29tcG9uZW50VHJhaXRzPFQ+OjptYXhWYWx1ZSkKKyAgICAg
ICAgOiByZWQgeyByZWQgfQorICAgICAgICAsIGdyZWVuIHsgZ3JlZW4gfQorICAgICAgICAsIGJs
dWUgeyBibHVlIH0KKyAgICAgICAgLCBhbHBoYSB7IGFscGhhIH0KKyAgICB7CisgICAgfQorCisg
ICAgY29uc3RleHByIERpc3BsYXlQMygpCisgICAgICAgIDogRGlzcGxheVAzIHsgQ29tcG9uZW50
VHJhaXRzPFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSwgQ29tcG9u
ZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSB9Cisg
ICAgeworICAgIH0KKwogICAgIFQgcmVkOwogICAgIFQgZ3JlZW47CiAgICAgVCBibHVlOwogICAg
IFQgYWxwaGE7Ci0KLSAgICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsKLSAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OkRpc3BsYXlQMzsKIH07CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+IERpc3BsYXlQMyhULCBULCBULCBUKSAtPiBEaXNwbGF5UDM8VD47
Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gYXND
b2xvckNvbXBvbmVudHMoY29uc3QgRGlzcGxheVAzPFQ+JiBjKQogewogICAgIHJldHVybiB7IGMu
cmVkLCBjLmdyZWVuLCBjLmJsdWUsIGMuYWxwaGEgfTsKQEAgLTE1MiwxNyArMTg3LDI4IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXIKIH0KIAogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgTGluZWFyRGlzcGxheVAzIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBMaW5lYXJEaXNwbGF5UDMgOiBDb2xvclR5cGU8TGluZWFyRGlzcGxheVAzPFQ+PiB7
CisgICAgdXNpbmcgQ29tcG9uZW50VHlwZSA9IFQ7CisKKyAgICBjb25zdGV4cHIgTGluZWFyRGlz
cGxheVAzKFQgcmVkLCBUIGdyZWVuLCBUIGJsdWUsIFQgYWxwaGEgPSBDb21wb25lbnRUcmFpdHM8
VD46Om1heFZhbHVlKQorICAgICAgICA6IHJlZCB7IHJlZCB9CisgICAgICAgICwgZ3JlZW4geyBn
cmVlbiB9CisgICAgICAgICwgYmx1ZSB7IGJsdWUgfQorICAgICAgICAsIGFscGhhIHsgYWxwaGEg
fQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgTGluZWFyRGlzcGxheVAzKCkKKyAgICAg
ICAgOiBMaW5lYXJEaXNwbGF5UDMgeyBDb21wb25lbnRUcmFpdHM8VD46Om1pblZhbHVlLCBDb21w
b25lbnRUcmFpdHM8VD46Om1pblZhbHVlLCBDb21wb25lbnRUcmFpdHM8VD46Om1pblZhbHVlLCBD
b21wb25lbnRUcmFpdHM8VD46Om1pblZhbHVlIH0KKyAgICB7CisgICAgfQorCiAgICAgVCByZWQ7
CiAgICAgVCBncmVlbjsKICAgICBUIGJsdWU7CiAgICAgVCBhbHBoYTsKLQotICAgIHVzaW5nIENv
bXBvbmVudFR5cGUgPSBUOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gTGluZWFyRGlzcGxh
eVAzKFQsIFQsIFQsIFQpIC0+IExpbmVhckRpc3BsYXlQMzxUPjsKLQogdGVtcGxhdGU8dHlwZW5h
bWUgVD4gY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBhc0NvbG9yQ29tcG9uZW50cyhjb25z
dCBMaW5lYXJEaXNwbGF5UDM8VD4mIGMpCiB7CiAgICAgcmV0dXJuIHsgYy5yZWQsIGMuZ3JlZW4s
IGMuYmx1ZSwgYy5hbHBoYSB9OwpAQCAtMTg0LDEzICsyMzAsMjYgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gY29uc3RleHByIGJvb2wgb3BlcgogfQogCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBIU0xBIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIU0xBIDogQ29sb3JUeXBl
PEhTTEE8VD4+IHsKKyAgICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsKKworICAgIGNvbnN0ZXhw
ciBIU0xBKFQgaHVlLCBUIHNhdHVyYXRpb24sIFQgbGlnaHRuZXNzLCBUIGFscGhhID0gQ29tcG9u
ZW50VHJhaXRzPFQ+OjptYXhWYWx1ZSkKKyAgICAgICAgOiBodWUgeyBodWUgfQorICAgICAgICAs
IHNhdHVyYXRpb24geyBzYXR1cmF0aW9uIH0KKyAgICAgICAgLCBsaWdodG5lc3MgeyBsaWdodG5l
c3MgfQorICAgICAgICAsIGFscGhhIHsgYWxwaGEgfQorICAgIHsKKyAgICB9CisKKyAgICBjb25z
dGV4cHIgSFNMQSgpCisgICAgICAgIDogSFNMQSB7IENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFs
dWUsIENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUsIENvbXBvbmVudFRyYWl0czxUPjo6bWlu
VmFsdWUsIENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUgfQorICAgIHsKKyAgICB9CisKICAg
ICBUIGh1ZTsKICAgICBUIHNhdHVyYXRpb247CiAgICAgVCBsaWdodG5lc3M7CiAgICAgVCBhbHBo
YTsKLQotICAgIHVzaW5nIENvbXBvbmVudFR5cGUgPSBUOwogfTsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4gSFNMQShULCBULCBULCBUKSAtPiBIU0xBPFQ+OwpAQCAtMjE3LDE4ICsyNzYsMzAgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcgogCiAKIC8vIEZJWE1FOiBX
aGVuIENvbG9yQ29tcG9uZW50cyBzdXBwb3J0cyBtb3JlIHRoYW4gbGVuZ3RoID09IDQsIGFkZCBj
b252ZXJzaW9uIHRvL2Zyb20gQ29sb3JDb21wb25lbnRzPFQ+IGZvciBDTVlLQQotdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IENNWUtBIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBD
TVlLQSA6IENvbG9yVHlwZTxDTVlLQTxUPj4geworICAgIHVzaW5nIENvbXBvbmVudFR5cGUgPSBU
OworCisgICAgY29uc3RleHByIENNWUtBKFQgY3lhbiwgVCBtYWdlbnRhLCBUIHllbGxvdywgVCBi
bGFjaywgVCBhbHBoYSA9IENvbXBvbmVudFRyYWl0czxUPjo6bWF4VmFsdWUpCisgICAgICAgIDog
Y3lhbiB7IGN5YW4gfQorICAgICAgICAsIG1hZ2VudGEgeyBtYWdlbnRhIH0KKyAgICAgICAgLCB5
ZWxsb3cgeyB5ZWxsb3cgfQorICAgICAgICAsIGJsYWNrIHsgYmxhY2sgfQorICAgICAgICAsIGFs
cGhhIHsgYWxwaGEgfQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgQ01ZS0EoKQorICAg
ICAgICA6IENNWUtBIHsgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJh
aXRzPFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50
VHJhaXRzPFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSB9CisgICAg
eworICAgIH0KKwogICAgIFQgY3lhbjsKICAgICBUIG1hZ2VudGE7CiAgICAgVCB5ZWxsb3c7CiAg
ICAgVCBibGFjazsKICAgICBUIGFscGhhOwotCi0gICAgdXNpbmcgQ29tcG9uZW50VHlwZSA9IFQ7
CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBDTVlLQShULCBULCBULCBULCBUKSAtPiBDTVlL
QTxUPjsKLQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDTVlLQTxUPiYgYSwgY29uc3QgQ01ZS0E8VD4mIGIpCiB7CiAgICAgcmV0dXJuIGEuY3lh
biA9PSBiLmN5YW4gJiYgYS5tYWdlbnRhID09IGIubWFnZW50YSAmJiBhLnllbGxvdyA9PSBiLnll
bGxvdyAmJiBhLmJsYWNrID09IGIuYmxhY2sgJiYgYS5hbHBoYSA9PSBiLmFscGhhOwpAQCAtMjQw
LDE3ICszMTEsMjggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3Blcgog
fQogCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBYWVpBIHsKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBYWVpBIDogQ29sb3JUeXBlPFhZWkE8VD4+IHsKKyAgICB1c2luZyBDb21w
b25lbnRUeXBlID0gVDsKKworICAgIGNvbnN0ZXhwciBYWVpBKFQgeCwgVCB5LCBUIHosIFQgYWxw
aGEgPSBDb21wb25lbnRUcmFpdHM8VD46Om1heFZhbHVlKQorICAgICAgICA6IHggeyB4IH0KKyAg
ICAgICAgLCB5IHsgeSB9CisgICAgICAgICwgeiB7IHogfQorICAgICAgICAsIGFscGhhIHsgYWxw
aGEgfQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgWFlaQSgpCisgICAgICAgIDogWFla
QSB7IENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUsIENvbXBvbmVudFRyYWl0czxUPjo6bWlu
VmFsdWUsIENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUsIENvbXBvbmVudFRyYWl0czxUPjo6
bWluVmFsdWUgfQorICAgIHsKKyAgICB9CisKICAgICBUIHg7CiAgICAgVCB5OwogICAgIFQgejsK
ICAgICBUIGFscGhhOwotCi0gICAgdXNpbmcgQ29tcG9uZW50VHlwZSA9IFQ7CiB9OwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBYWVpBKFQsIFQsIFQsIFQpIC0+IFhZWkE8VD47Ci0KIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4gYXNDb2xvckNvbXBvbmVu
dHMoY29uc3QgWFlaQTxUPiYgYykKIHsKICAgICByZXR1cm4geyBjLngsIGMueSwgYy56LCBjLmFs
cGhhIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1l
TW9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3Jv
bGxiYXJUaGVtZU1vY2suY3BwCShyZXZpc2lvbiAyNjQ1NjUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lTW9jazo6c2Nyb2xsYmFyVGhpY2tuZQogCiB2
b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdHJhY2tS
ZWN0KQogewotICAgIGNvbnRleHQuZmlsbFJlY3QodHJhY2tSZWN0LCBzY3JvbGxiYXIuZW5hYmxl
ZCgpID8gQ29sb3I6OmxpZ2h0R3JheS5jb2xvcigpIDogU1JHQkE8dWludDhfdD4geyAyMjQsIDIy
NCwgMjI0IH0pOworICAgIGNvbnRleHQuZmlsbFJlY3QodHJhY2tSZWN0LCBzY3JvbGxiYXIuZW5h
YmxlZCgpID8gQ29sb3I6OmxpZ2h0R3JheSA6IFNSR0JBPHVpbnQ4X3Q+IHsgMjI0LCAyMjQsIDIy
NCB9KTsKIH0KIAogdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1
bWJSZWN0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404676</attachid>
            <date>2020-07-19 11:19:28 -0700</date>
            <delta_ts>2020-07-19 11:53:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214521-20200719111927.patch</filename>
            <type>text/plain</type>
            <size>55506</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDU3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBAQAorMjAyMC0wNy0xOSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIENvbG9yQnVpbGRlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTIxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQ29sb3JCdWlsZGVy
IGlzIHVubmVjZXNzYXJ5IGFuZCBqdXN0IG1ha2VzIGRlZHVjdGlvbiBjb250ZXh0cyBtb3JlIGNv
bXBsaWNhdGVkLgorICAgICAgICBJbnN0ZWFkLCB3ZSBjYW4gZ2V0IHRoZSBzYW1lIGJlaGF2aW9y
IGJ5IGhhdmluZyBjb2xvciB0eXBlcyBpbmhlcml0IGZyb20gYSBzaGFyZWQKKyAgICAgICAgYmFz
ZSBjbGFzcyBDb2xvclR5cGUgdGhhdCB1c2VzIHRoZSBjdXJpb3VzbHkgcmVjdXJyaW5nIHRlbXBs
YXRlIHBhdHRlcm4sIHdoaWNoIAorICAgICAgICBleHBvc2VzIHRoZSBjb2xvcldpdGhBbHBoYUJ5
dGUgZnVuY3Rpb24gKHJlbmFtZWQgZnJvbSBjb2xvcldpdGhBbHBoYSBmb3IgY2xhcml0eQorICAg
ICAgICBvZiB0aGUgcGFyYW1ldGVyKS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBSZW1vdmUg
Q29sb3JCdWlsZGVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCdWlsZGVy
Lmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb2xvcjo6bGlnaHRlbmVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmFscGhhQnl0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6YWxwaGEgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICBTdG9wIHVzaW5nIENvbG9yQnVpbGRlciBmb3IgY29sb3IgbmFtZWQgY29sb3Ig
dHlwZXMgYW5kIHJlbmFtZSBDb2xvcjo6YWxwaGEgdG8gQ29sb3I6YWxwaGFCeXRlKCkKKyAgICAg
ICAgZm9yIGNvbnNpc3RlbmN5IHdpdGggY29sb3JXaXRoQWxwaGFCeXRlKCkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xv
clR5cGU6OmNvbG9yV2l0aEFscGhhQnl0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5l
YXJTUkdCQTo6TGluZWFyU1JHQkEpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVAzOjpEaXNw
bGF5UDMpOgorICAgICAgICAoV2ViQ29yZTo6TGluZWFyRGlzcGxheVAzOjpMaW5lYXJEaXNwbGF5
UDMpOgorICAgICAgICAoV2ViQ29yZTo6SFNMQTo6SFNMQSk6CisgICAgICAgIChXZWJDb3JlOjpD
TVlLQTo6Q01ZS0EpOgorICAgICAgICAoV2ViQ29yZTo6WFlaQTo6WFlaQSk6CisgICAgICAgIFN3
aXRjaCBlYWNoIGNvbG9yIHR5cGUgdG8gaW5oZXJpdGluZyBmcm9tIG5ldyBDb2xvcldpdGhBbHBo
YUhlbHBlciBzdHJ1Y3QuIFVzZSB0aGUgb3BlcnR1bml0eSB0bworICAgICAgICBnaXZlIGVhY2gg
Y29sb3IgdHlwZSB0aGUgc2FtZSBjb25zdHJ1Y3Rpb24gaW50ZXJmYWNlIGFzIHdlbGwuIE5vdyB0
aGF0IGVhY2ggdHlwZSBoYXMgY29uc3RydWN0b3JzLAorICAgICAgICB0aGUgZGVkdWN0aW9uIGd1
aWRlcyBhcmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQmxlbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRTb3VyY2VPdmVy
KToKKyAgICAgICAgU3dpdGNoIGZyb20gIWNvbG9yLmFscGhhKCkgdG8gIWNvbG9yLmlzVmlzaWJs
ZSgpIHRvIG1vcmUgY2xlYXJseSBpbmRpY2F0ZSB0aGUgaW50ZW50LgorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSBjb25zdCk6CisgICAgICAgIFVwZGF0ZSB0byBj
YWxsIGFscGhhQnl0ZSgpIGFuZCBhZGQgRklYTUUgaW5kaWNhdGluZyB0aGF0IGl0IGlzIHByb2Jh
Ymx5IGluY29ycmVjdCBhbmQgZmlsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNDUzNyB0byB0cmFjayB0aGluZ3MgZnVydGhlci4KKyAgICAgICAg
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JP
dmVybGF5OjpkcmF3UGFpbnRSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVy
bGF5OjpkcmF3Qm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmRy
YXdSdWxlcnMpOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNh
cHRpb25zQmFja2dyb3VuZENTUyBjb25zdCk6CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJs
YXk6OmRyYXdSZWN0KToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRl
cnNBdENhcmV0KToKKyAgICAgICAgKiBwYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGlu
dXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3Jt
SW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6Z2V0RGVidWdCb3JkZXJJbmZvIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb3Zl
cmFnZU1hcDo6VGlsZUNvdmVyYWdlTWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Njcm9s
bGJhclRoZW1lTW9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6
OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgorICAg
ICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZVRleHRCb3g6OnJlc29sdmVTdHlsZUZvck1hcmtlZFRleHQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJuRm9yVG91Y2hBY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVybkZvckV2ZW50TGlzdGVuZXJSZWdpb25UeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnREZWJ1Z092ZXJs
YXlzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OnBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IgY29uc3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMpOgorICAgICAgICAq
IHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnBhaW50Rmxvdyk6CisgICAgICAgICogdGVzdGluZy9jb2Nv
YS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tOgorICAgICAgICAoLVtXZWJW
aWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5IGluaXRXaXRoV2ViVmlldzpraW5kOmRlcHJl
Y2F0ZWQ6XSk6CisgICAgICAgIFVwZGF0ZSB0byBjYWxsIGNvbG9yV2l0aEFscGhhQnl0ZSByYXRo
ZXIgdGhhbiBjb2xvcldpdGhBbHBoYS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjphZGRSb3VuZGVkQm9y
ZGVyQ2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRDaGVja2Jv
eERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFJh
ZGlvRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50
TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3QmFkZ2UpOgorICAgICAgICBVcGRhdGUgdG8gdXNlIGNv
bG9yV2l0aEFscGhhQnl0ZSByYXRoZXIgdGhhbiBjb2xvcldpdGhBbHBoYSBhbmQgYWxwaGFCeXRl
IHJhdGhlciB0aGFuIGFscGhhLgorCiAyMDIwLTA3LTE5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGRpdGlvbmFsIENvbG9yIHJlbGF0ZWQgY2xlYW51cHMKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjY0NTc3KQorKysgU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTA4Myw3ICsxMDgzLDYgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0F1
ZGlvVHJhY2tQcml2YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
QnVpbGRlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9ySGFzaC5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIyMDks
NyArMjIwOSw2IEBACiAJCTdBRjlCMjBGMThDRkI1RjQwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxp
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlC
MjBCMThDRkI1RjMwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCAqLzsgfTsKIAkJN0JFNzQy
NzM4MUZBOTA2RkJCNEYwRjJDIC8qIEpTU1ZHR3JhcGhpY3NFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBDNEMwMkJFRDg5MzZGODE4RTJG
OTkgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCAqLzsgfTsKIAkJN0MwMjlDNkUyNDkzQzhGODAw
MjY4MjA0IC8qIENvbG9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJN0MxNEEwMDcy
NEI1RkUyMTAwMUE2QzZDIC8qIENvbG9yQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxNEEwMDYyNEI1RkUyMTAwMUE2QzZDIC8qIENvbG9y
QnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdDMTg0M0ZFMUM4QjcyODMwMDJFQjk3MyAvKiBBdXRvZmlsbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxODQzRkMxQzhCNzI4MzAwMkVCOTcz
IC8qIEF1dG9maWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0MxOTNCQkIxRjVFMEVFRDAwODhGM0U2IC8qIENhbnZhc0RpcmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxOTNCQjYxRjVF
MEVCOTAwODhGM0U2IC8qIENhbnZhc0RpcmVjdGlvbi5oICovOyB9OwogCQk3QzE5M0JCQzFGNUUw
RUVEMDA4OEYzRTYgLyogQ2FudmFzRmlsbFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTkzQkExMUY1RTBFQUIwMDg4RjNFNiAvKiBDYW52YXNG
aWxsUnVsZS5oICovOyB9OwpAQCAtOTkzMiw3ICs5OTMxLDYgQEAKIAkJN0MwQ0VGMkUxRTRBNTgz
MjAwOERFQjgwIC8qIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzBDRUYyRjFFNEE1OEFEMDA4REVCODAg
LyogSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QzBDRUYzMDFFNEE1OEYxMDA4REVCODAgLyogSlNET01Db25zdHJ1Y3RvcldpdGhE
b2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUNv
bnN0cnVjdG9yV2l0aERvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
N0MxNEEwMDYyNEI1RkUyMTAwMUE2QzZDIC8qIENvbG9yQnVpbGRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb2xvckJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MxODQzRkIx
QzhCNzI4MzAwMkVCOTczIC8qIEF1dG9maWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEF1dG9maWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0MxODQzRkMxQzhCNzI4MzAwMkVCOTczIC8qIEF1dG9maWxsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEF1dG9maWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDMTkzQjlBMUY1RTBFQTcwMDg4RjNFNiAvKiBDYW52YXNEcmF3SW1hZ2UuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IENhbnZhc0RyYXdJbWFnZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNTU0Nyw3ICsyNTU0NSw2IEBACiAJCQkJQjI3NTM1MzkwQjA1MzgxNDAwMkNF
NjRGIC8qIENvbG9yLmggKi8sCiAJCQkJN0MxQjRBNjUyNEE5OTc1OTAwMzM3MjdGIC8qIENvbG9y
QmxlbmRpbmcuY3BwICovLAogCQkJCTdDMUI0QTY3MjRBOTk3NjYwMDMzNzI3RiAvKiBDb2xvckJs
ZW5kaW5nLmggKi8sCi0JCQkJN0MxNEEwMDYyNEI1RkUyMTAwMUE2QzZDIC8qIENvbG9yQnVpbGRl
ci5oICovLAogCQkJCTdDQUM2QUVDMjQ3RjFDNTEwMEU2MUQ1OSAvKiBDb2xvckNvbXBvbmVudHMu
aCAqLywKIAkJCQk3QzUxNEUwMjI0QUY4MDU4MDA1MDcxMEYgLyogQ29sb3JDb252ZXJzaW9uLmNw
cCAqLywKIAkJCQk3QzUxNEUwMDI0QUY4MDU4MDA1MDcxMEYgLyogQ29sb3JDb252ZXJzaW9uLmgg
Ki8sCkBAIC0zMDE1MCw3ICszMDE0Nyw2IEBACiAJCQkJNDZFQkVBMDIxQjdENEQ2NTAwQkU0OTQx
IC8qIENvbGxlY3Rpb25UcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzQ0MjAwMEY4
MTNBRTEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3
NTM1NjcwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QzE0
QTAwNzI0QjVGRTIxMDAxQTZDNkMgLyogQ29sb3JCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDMzMwQTIyMzEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyogQ29sb3JDaG9vc2VyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNDhEMkFBNTIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2Nv
YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDM0Miw3ICszNDMzOCw3IEBACiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlzaGVsbFBhdGggPSAvYmlu
L3NoOwotCQkJc2hlbGxTY3JpcHQgPSAiaWYgWyBcIiR7QUNUSU9OfVwiID0gXCJpbnN0YWxsaGRy
c1wiIC1vIFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxhcGlcIiBdOyB0aGVuXG4gICAgZXhpdCAw
O1xuZmlcblxuaWYgWyAtZiAuLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci13ZWFrLXZ0YWJs
ZXMtYW5kLWV4dGVybmFscyBdOyB0aGVuXG4gICAgLi4vLi4vVG9vbHMvU2NyaXB0cy9jaGVjay1m
b3Itd2Vhay12dGFibGVzLWFuZC1leHRlcm5hbHMgfHwgZXhpdCAkP1xuZmkiOworCQkJc2hlbGxT
Y3JpcHQgPSAiaWYgWyBcIiR7QUNUSU9OfVwiID0gXCJpbnN0YWxsaGRyc1wiIC1vIFwiJHtBQ1RJ
T059XCIgPSBcImluc3RhbGxhcGlcIiBdOyB0aGVuXG4gICAgZXhpdCAwO1xuZmlcblxuaWYgWyAt
ZiAuLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci13ZWFrLXZ0YWJsZXMtYW5kLWV4dGVybmFs
cyBdOyB0aGVuXG4gICAgLi4vLi4vVG9vbHMvU2NyaXB0cy9jaGVjay1mb3Itd2Vhay12dGFibGVz
LWFuZC1leHRlcm5hbHMgfHwgZXhpdCAkP1xuZmlcbiI7CiAJCX07CiAJCTVEMkY3REEwMEM2ODc5
QzYwMEI1QjcyQiAvKiBVcGRhdGUgSW5mby5wbGlzdCB3aXRoIHZlcnNpb24gaW5mb3JtYXRpb24g
Ki8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCShy
ZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw3ICsyODUsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjCiAgICAgICAgICAgICAvLyB0aGVuIGl0
IGlzIHByb2JhYmx5IGEgZGF0YSB0YWJsZSBjZWxsIChzcGFjaW5nIGFuZCBjb2xvcnMgdGFrZSB0
aGUgcGxhY2Ugb2YgYm9yZGVycykuCiAgICAgICAgICAgICBDb2xvciBjZWxsQ29sb3IgPSByZW5k
ZXJTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Ip
OwogICAgICAgICAgICAgaWYgKHRhYmxlLmhCb3JkZXJTcGFjaW5nKCkgPiAwICYmIHRhYmxlLnZC
b3JkZXJTcGFjaW5nKCkgPiAwCi0gICAgICAgICAgICAgICAgJiYgdGFibGVCR0NvbG9yICE9IGNl
bGxDb2xvciAmJiBjZWxsQ29sb3IuYWxwaGEoKSAhPSAxKQorICAgICAgICAgICAgICAgICYmIHRh
YmxlQkdDb2xvciAhPSBjZWxsQ29sb3IgJiYgY2VsbENvbG9yLmFscGhhQnl0ZSgpICE9IDEpIC8v
IEZJWE1FIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTM3KTog
VGhpcyBjb21wYXJpc29uIHRvIDEgaXMgbGlrZWx5IGluY29ycmVjdC4gSXQgbGlrZWx5IHNob3Vs
ZCBiZSBjaGVja2luZyAhY2VsbENvbG9yLmlzT3BhcXVlKCkuCiAgICAgICAgICAgICAgICAgKyti
YWNrZ3JvdW5kRGlmZmVyZW5jZUNlbGxDb3VudDsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Ly8gSWYgd2UndmUgZm91bmQgMTAgImdvb2QiIGNlbGxzLCB3ZSBkb24ndCBuZWVkIHRvIGtlZXAg
c2VhcmNoaW5nLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDg1LDcgKzIwODUsNyBAQCBSZW5kZXJTdHlsZSBI
VE1MSW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lCiAgICAgaWYgKGhhc0F1dG9GaWxsU3Ryb25nUGFz
c3dvcmRCdXR0b24oKSAmJiAhaXNEaXNhYmxlZE9yUmVhZE9ubHkoKSkgewogICAgICAgICB0ZXh0
QmxvY2tTdHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jayk7CiAgICAgICAg
IHRleHRCbG9ja1N0eWxlLnNldE1heFdpZHRoKExlbmd0aCB7IDEwMCwgUGVyY2VudCB9KTsKLSAg
ICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0Q29sb3IoQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhh
KDE1MykpOworICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRDb2xvcihDb2xvcjo6YmxhY2suY29s
b3JXaXRoQWxwaGFCeXRlKDE1MykpOwogICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRUZXh0T3Zl
cmZsb3coVGV4dE92ZXJmbG93OjpDbGlwKTsKICAgICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0TWFz
a0ltYWdlKFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShhdXRvRmlsbFN0cm9uZ1Bhc3N3b3Jk
TWFza0ltYWdlKCkpKTsKICAgICAgICAgLy8gQSBzdGFja2luZyBjb250ZXh0IGlzIG5lZWRlZCBm
b3IgdGhlIG1hc2suCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuY3BwCShyZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxMSw3ICs2MTEsNyBA
QCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdQYWludFJlY3RzKEdyCiB7CiAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogCi0gICAgY29uc3RleHBy
IGF1dG8gcGFpbnRSZWN0c0NvbG9yID0gQ29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYSgxMjgpOwor
ICAgIGNvbnN0ZXhwciBhdXRvIHBhaW50UmVjdHNDb2xvciA9IENvbG9yOjpyZWQuY29sb3JXaXRo
QWxwaGFCeXRlKDEyOCk7CiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IocGFpbnRSZWN0c0NvbG9y
KTsKIAogICAgIGZvciAoY29uc3QgVGltZVJlY3RQYWlyJiBwYWlyIDogcGFpbnRSZWN0cykKQEAg
LTY2Miw3ICs2NjIsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdCb3VuZHMoR3JhcGhp
CiAKICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygxKTsKIAotICAgIGNvbnN0ZXhwciBh
dXRvIGJvdW5kc0NvbG9yID0gQ29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYSgxNTMpOworICAgIGNv
bnN0ZXhwciBhdXRvIGJvdW5kc0NvbG9yID0gQ29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYUJ5dGUo
MTUzKTsKICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGJvdW5kc0NvbG9yKTsKIAogICAgIGNv
bnRleHQuc3Ryb2tlUGF0aChwYXRoKTsKQEAgLTY3MCw5ICs2NzAsOSBAQCB2b2lkIEluc3BlY3Rv
ck92ZXJsYXk6OmRyYXdCb3VuZHMoR3JhcGhpCiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJh
d1J1bGVycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEluc3BlY3Rvck92ZXJsYXk6
OlJ1bGVyRXhjbHVzaW9uJiBydWxlckV4Y2x1c2lvbikKIHsKLSAgICBjb25zdGV4cHIgYXV0byBy
dWxlckJhY2tncm91bmRDb2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYSgxNTMpOwot
ICAgIGNvbnN0ZXhwciBhdXRvIGxpZ2h0UnVsZXJDb2xvciA9IENvbG9yOjpibGFjay5jb2xvcldp
dGhBbHBoYSg1MSk7Ci0gICAgY29uc3RleHByIGF1dG8gZGFya1J1bGVyQ29sb3IgPSBDb2xvcjo6
YmxhY2suY29sb3JXaXRoQWxwaGEoMTI4KTsKKyAgICBjb25zdGV4cHIgYXV0byBydWxlckJhY2tn
cm91bmRDb2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYUJ5dGUoMTUzKTsKKyAgICBj
b25zdGV4cHIgYXV0byBsaWdodFJ1bGVyQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxw
aGFCeXRlKDUxKTsKKyAgICBjb25zdGV4cHIgYXV0byBkYXJrUnVsZXJDb2xvciA9IENvbG9yOjpi
bGFjay5jb2xvcldpdGhBbHBoYUJ5dGUoMTI4KTsKIAogICAgIEludFBvaW50IHNjcm9sbE9mZnNl
dDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWVkaWFBRi5jcHAJKHJldmlzaW9uIDI2NDU3NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yODksNyArMjg5LDcgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpj
YQogewogICAgIC8vIFRoaXMgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBv
bmUgc3BlY2lmaWVkIGluIG1lZGlhQ29udHJvbHMuY3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQt
dHJhY2stcGFzdC1ub2RlcwogICAgIC8vIGFuZCB3ZWJraXQtbWVkaWEtdGV4dC10cmFjay1mdXR1
cmUtbm9kZXMuCi0gICAgY29uc3RleHByIGF1dG8gZGVmYXVsdEJhY2tncm91bmRDb2xvciA9IENv
bG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSgyMDQpOworICAgIGNvbnN0ZXhwciBhdXRvIGRlZmF1
bHRCYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGFCeXRlKDIwNCk7
CiAKICAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCShyZXZpc2lvbiAyNjQ1Nzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXkoUGFnZSYgcGFnZSkKLSAgICAgICAgOiBS
ZWdpb25PdmVybGF5KHBhZ2UsIENvbG9yOjpvcmFuZ2UuY29sb3JXaXRoQWxwaGEoMTAyKSkKKyAg
ICAgICAgOiBSZWdpb25PdmVybGF5KHBhZ2UsIENvbG9yOjpvcmFuZ2UuY29sb3JXaXRoQWxwaGFC
eXRlKDEwMikpCiAgICAgewogICAgIH0KIApAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgTm9uRmFz
dFNjcm9sbGFibGVSZWdpb25PdmVybGF5OjpkcmEKICNlbmRpZgogCiAgICAgZm9yIChjb25zdCBh
dXRvJiBzeW5jaHJvbm91c0V2ZW50UmVnaW9uIDogbV9ldmVudFRyYWNraW5nUmVnaW9ucy5ldmVu
dFNwZWNpZmljU3luY2hyb25vdXNEaXNwYXRjaFJlZ2lvbnMpIHsKLSAgICAgICAgYXV0byByZWdp
b25Db2xvciA9IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSg2NCkuY29sb3IoKTsKKyAgICAg
ICAgYXV0byByZWdpb25Db2xvciA9IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYUJ5dGUoNjQp
OwogICAgICAgICBhdXRvIGl0ID0gdG91Y2hFdmVudFJlZ2lvbkNvbG9ycygpLmZpbmQoc3luY2hy
b25vdXNFdmVudFJlZ2lvbi5rZXkpOwogICAgICAgICBpZiAoaXQgIT0gdG91Y2hFdmVudFJlZ2lv
bkNvbG9ycygpLmVuZCgpKQogICAgICAgICAgICAgcmVnaW9uQ29sb3IgPSBpdC0+dmFsdWU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjY0NTc3
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NDUsNyArMTQ0NSw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6Omluc2VydERyb3Bw
ZWRJbWFnZVAKICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21TdHJpbmc6Om51bWJlcihzaXplLndpZHRoKCkp
KTsKICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRN
TE5hbWVzOjpoZWlnaHRBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoc2l6ZS5oZWlnaHQoKSkpOwog
ICAgICAgICBpbWFnZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1heFdpZHRo
LCAxMDAsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7Ci0gICAgICAgIGltYWdlLT5zZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBzZXJpYWxpemF0
aW9uRm9yQ1NTKENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSgxMykpKTsKKyAgICAgICAgaW1h
Z2UtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIHNl
cmlhbGl6YXRpb25Gb3JDU1MoQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhQnl0ZSgxMykpKTsK
ICAgICAgICAgaW1hZ2UtPnNldElzRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIoKTsKICAgICAgICAg
ZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUoaW1hZ2UpKTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlM
aW51eC5jcHAJKHJldmlzaW9uIDI2NDU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgv
UmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXll
ciosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBjbGlwLCBHcmFw
aGljc0xheWVyUGFpbnRCZWhhdmlvcikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC5m
aWxsUmVjdChjbGlwLCBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoMjA0KSk7CisgICAgICAg
IGNvbnRleHQuZmlsbFJlY3QoY2xpcCwgQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhQnl0ZSgy
MDQpKTsKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoU1JHQkE8dWludDhfdD4geyAyMzAs
IDIzMCwgMjMwIH0pOwogCiAgICAgICAgIEZsb2F0UG9pbnQgcG9zaXRpb24gPSB7IDEwLCAyMCB9
OwpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3Jt
SW5pdGkKICAgICBtX3BhaW50TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUob3ZlcmxheSgp
LnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKm1fb3Zl
cmxheVBhaW50ZXIpOwogICAgIG1fcGFpbnRMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2lu
dDNEKCkpOwogICAgIG1fcGFpbnRMYXllci0+c2V0U2l6ZSh7IG5vcm1hbFdpZHRoLCBub3JtYWxI
ZWlnaHQgfSk7Ci0gICAgbV9wYWludExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmJs
YWNrLmNvbG9yV2l0aEFscGhhKDIwNCkpOworICAgIG1fcGFpbnRMYXllci0+c2V0QmFja2dyb3Vu
ZENvbG9yKENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYUJ5dGUoMjA0KSk7CiAgICAgbV9wYWlu
dExheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAgICAgb3ZlcmxheSgpLmxheWVyKCkuYWRk
Q2hpbGQoKm1fcGFpbnRMYXllcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJKHJldmlzaW9uIDI2NDU3NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjM3LDcgKzIzNyw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhH
cmFwaGkKIAogICAgICAgICBpZiAoIWZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJs
ZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdM
ZXZlbCwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSkpIHsKICAg
ICAgICAgICAgIGlmIChtX3Nob3dEZWJ1Z0JhY2tncm91bmQpCi0gICAgICAgICAgICAgICAgZmls
bFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcjo6eWVsbG93LmNvbG9yV2l0
aEFscGhhKDEyOCksIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CisgICAgICAgICAgICAg
ICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcjo6eWVsbG93LmNv
bG9yV2l0aEFscGhhQnl0ZSgxMjgpLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCkBAIC0yNDgsNyArMjQ4LDcgQEAg
SW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaQogICAgICAgICBBU1NFUlRf
SU1QTElFUyhzdGF0dXMgPT0gU3RhcnRBbmltYXRpb25TdGF0dXM6OkRlY29kaW5nQWN0aXZlLCAo
IW1fY3VycmVudEZyYW1lICYmICFtX3JlcGV0aXRpb25zQ29tcGxldGUpIHx8IGZyYW1lSGFzRnVs
bFNpemVOYXRpdmVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNhbXBs
aW5nTGV2ZWwpKTsKIAogICAgICAgICBpZiAoc3RhdHVzID09IFN0YXJ0QW5pbWF0aW9uU3RhdHVz
OjpEZWNvZGluZ0FjdGl2ZSAmJiBtX3Nob3dEZWJ1Z0JhY2tncm91bmQpIHsKLSAgICAgICAgICAg
IGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwgQ29sb3I6OnllbGxvdy5jb2xv
cldpdGhBbHBoYSgxMjgpLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOworICAgICAgICAg
ICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcjo6eWVsbG93LmNv
bG9yV2l0aEFscGhhQnl0ZSgxMjgpLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKQEAgLTI2Niw3ICsy
NjYsNyBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpCiAgICAgICAg
IH0gZWxzZSBpZiAoZnJhbWVJc0JlaW5nRGVjb2RlZCkgewogICAgICAgICAgICAgLy8gRklYTUU6
IGluc3RlYWQgb2Ygc2hvd2luZyB0aGUgeWVsbG93IHJlY3RhbmdsZSBhbmQgcmV0dXJuaW5nIHdl
IG5lZWQgdG8gd2FpdCBmb3IgdGhpcyBmcmFtZSB0byBmaW5pc2ggZGVjb2RpbmcuCiAgICAgICAg
ICAgICBpZiAobV9zaG93RGVidWdCYWNrZ3JvdW5kKSB7Ci0gICAgICAgICAgICAgICAgZmlsbFdp
dGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcjo6eWVsbG93LmNvbG9yV2l0aEFs
cGhhKDEyOCksIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CisgICAgICAgICAgICAgICAg
ZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcjo6eWVsbG93LmNvbG9y
V2l0aEFscGhhQnl0ZSgxMjgpLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAg
ICAgICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDogJXMgW3dh
aXRpbmcgZm9yIGFzeW5jIGRlY29kaW5nIHRvIGZpbmlzaF0iLCBfX0ZVTkNUSU9OX18sIHRoaXMs
IHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5nOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNpb24g
MjY0NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RhdGljIGNvbnN0ZXhwciBhdXRvIGxpZ2h0ZW5lZEJsYWNrID0gQ29sb3JCdWlsZGVyPFNSR0JB
PHVpbnQ4X3Q+PiB7IDg0LCA4NCwgODQgfTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBkYXJrZW5l
ZFdoaXRlID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDE3MSwgMTcxLCAxNzEgfTsK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBsaWdodGVuZWRCbGFjayA9IFNSR0JBPHVpbnQ4X3Q+IHsg
ODQsIDg0LCA4NCB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRhcmtlbmVkV2hpdGUgPSBTUkdC
QTx1aW50OF90PiB7IDE3MSwgMTcxLCAxNzEgfTsKIAogQ29sb3I6OkNvbG9yKGNvbnN0IENvbG9y
JiBvdGhlcikKICAgICA6IG1fY29sb3JEYXRhKG90aGVyLm1fY29sb3JEYXRhKQpAQCAtODcsNyAr
ODcsNyBAQCBDb2xvciBDb2xvcjo6bGlnaHRlbmVkKCkgY29uc3QKICAgICBmbG9hdCB2ID0gc3Rk
OjptYXgoeyByLCBnLCBiIH0pOwogCiAgICAgaWYgKHYgPT0gMC4wZikKLSAgICAgICAgcmV0dXJu
IGxpZ2h0ZW5lZEJsYWNrLmNvbG9yV2l0aEFscGhhKGFscGhhKCkpOworICAgICAgICByZXR1cm4g
bGlnaHRlbmVkQmxhY2suY29sb3JXaXRoQWxwaGFCeXRlKGFscGhhQnl0ZSgpKTsKIAogICAgIGZs
b2F0IG11bHRpcGxpZXIgPSBzdGQ6Om1pbigxLjBmLCB2ICsgMC4zM2YpIC8gdjsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNjQ1Nzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29sb3JC
dWlsZGVyLmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkNvbG9yVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiRXh0ZW5kZWRDb2xvci5oIgpAQCAtMTAxLDcgKzEwMCw3IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkg
PyBhc0V4dGVuZGVkKCkuYWxwaGEoKSA9PSAxLjAgOiBhc0lubGluZSgpLmFscGhhID09IDI1NTsg
fQogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gaXNFeHRlbmRlZCgpID8gYXNF
eHRlbmRlZCgpLmFscGhhKCkgPiAwLjAgOiBhc0lubGluZSgpLmFscGhhID4gMDsgfQotICAgIHVp
bnQ4X3QgYWxwaGEoKSBjb25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkgPyBjb252ZXJ0VG9Db21w
b25lbnRCeXRlKGFzRXh0ZW5kZWQoKS5hbHBoYSgpKSA6IGFzSW5saW5lKCkuYWxwaGE7IH0KKyAg
ICB1aW50OF90IGFscGhhQnl0ZSgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQoKSA/IGNvbnZl
cnRUb0NvbXBvbmVudEJ5dGUoYXNFeHRlbmRlZCgpLmFscGhhKCkpIDogYXNJbmxpbmUoKS5hbHBo
YTsgfQogICAgIGZsb2F0IGFscGhhQXNGbG9hdCgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQo
KSA/IGFzRXh0ZW5kZWQoKS5hbHBoYSgpIDogY29udmVydFRvQ29tcG9uZW50RmxvYXQoYXNJbmxp
bmUoKS5hbHBoYSk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IGx1bWluYW5jZSgpIGNv
bnN0OwpAQCAtMTQ2LDIwICsxNDUsMjAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIG9w
ZXJhdG9yIEQyRDFfVkVDVE9SXzRGKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBibGFjayA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAwLCAwLCAw
IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHdoaXRlID0gQ29sb3JCdWlsZGVyPFNSR0JB
PHVpbnQ4X3Q+PiB7IDI1NSwgMjU1LCAyNTUgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8g
ZGFya0dyYXkgPSBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsgMTI4LCAxMjgsIDEyOCB9
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBncmF5ID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVp
bnQ4X3Q+PiB7IDE2MCwgMTYwLCAxNjAgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gbGln
aHRHcmF5ID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDE5MiwgMTkyLCAxOTIgfTsK
LSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gdHJhbnNwYXJlbnQgPSBDb2xvckJ1aWxkZXI8U1JH
QkE8dWludDhfdD4+IHsgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY3lhbiA9IENvbG9y
QnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAwLCAyNTUsIDI1NSB9OwotICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byB5ZWxsb3cgPSBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsgMjU1LCAy
NTUsIDAgfTsKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gcmVkID0gQ29sb3JCdWlsZGVyPFNS
R0JBPHVpbnQ4X3Q+PiB7IDI1NSwgMCwgMCB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBt
YWdlbnRhID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDI1NSwgMCwgMjU1IH07Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJsdWUgPSBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhf
dD4+IHsgMCwgMCwgMjU1IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGdyZWVuID0gQ29s
b3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDAsIDI1NSwgMCB9OwotICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBkYXJrR3JlZW4gPSBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsgMCwg
MTI4LCAwIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIG9yYW5nZSA9IENvbG9yQnVpbGRl
cjxTUkdCQTx1aW50OF90Pj4geyAyNTUsIDEyOCwgMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIg
YXV0byBibGFjayA9IFNSR0JBPHVpbnQ4X3Q+IHsgMCwgMCwgMCB9OworICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byB3aGl0ZSA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAyNTUsIDI1NSB9OworICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byBkYXJrR3JheSA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTI4LCAx
MjgsIDEyOCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBncmF5ID0gU1JHQkE8dWludDhf
dD4geyAxNjAsIDE2MCwgMTYwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGxpZ2h0R3Jh
eSA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTkyLCAxOTIsIDE5MiB9OworICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byB0cmFuc3BhcmVudCA9IFNSR0JBPHVpbnQ4X3Q+IHsgfTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gY3lhbiA9IFNSR0JBPHVpbnQ4X3Q+IHsgMCwgMjU1LCAyNTUgfTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGF1dG8geWVsbG93ID0gU1JHQkE8dWludDhfdD4geyAyNTUsIDI1NSwg
MCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byByZWQgPSBTUkdCQTx1aW50OF90PiB7IDI1
NSwgMCwgMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBtYWdlbnRhID0gU1JHQkE8dWlu
dDhfdD4geyAyNTUsIDAsIDI1NSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBibHVlID0g
U1JHQkE8dWludDhfdD4geyAwLCAwLCAyNTUgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8g
Z3JlZW4gPSBTUkdCQTx1aW50OF90PiB7IDAsIDI1NSwgMCB9OworICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBkYXJrR3JlZW4gPSBTUkdCQTx1aW50OF90PiB7IDAsIDEyOCwgMCB9OworICAgIHN0
YXRpYyBjb25zdGV4cHIgYXV0byBvcmFuZ2UgPSBTUkdCQTx1aW50OF90PiB7IDI1NSwgMTI4LCAw
IH07CiAKICAgICBib29sIGlzRXh0ZW5kZWQoKSBjb25zdCB7IHJldHVybiAhKG1fY29sb3JEYXRh
LmlubGluZUNvbG9yQW5kRmxhZ3MgJiBpbnZhbGlkSW5saW5lQ29sb3IpOyB9CiAgICAgYm9vbCBp
c0lubGluZSgpIGNvbnN0IHsgcmV0dXJuICFpc0V4dGVuZGVkKCk7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCShyZXZp
c2lvbiAyNjQ1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJs
ZW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBDb2xvciBibGVuZFNv
dXJjZU92ZXIoY29uc3QgQ29sb3ImIGJhY2tkCiAgICAgaWYgKCFiYWNrZHJvcC5pc1Zpc2libGUo
KSB8fCBzb3VyY2UuaXNPcGFxdWUoKSkKICAgICAgICAgcmV0dXJuIHNvdXJjZTsKIAotICAgIGlm
ICghc291cmNlLmFscGhhKCkpCisgICAgaWYgKCFzb3VyY2UuaXNWaXNpYmxlKCkpCiAgICAgICAg
IHJldHVybiBiYWNrZHJvcDsKIAogICAgIGF1dG8gW2JhY2tkcm9wUiwgYmFja2Ryb3BHLCBiYWNr
ZHJvcEIsIGJhY2tkcm9wQV0gPSBiYWNrZHJvcC50b1NSR0JBTG9zc3k8dWludDhfdD4oKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQnVpbGRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQnVpbGRlci5o
CShyZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvckJ1aWxkZXIuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBIZWxwZXIgdG8gYWxs
b3cgY29udmVuaWVudCBzeW50YXggZm9yIHdvcmtpbmcgd2l0aCBjb2xvciB0eXBlcy4KLS8vIGUu
Zy4gYXV0byB5ZWxsb3dXaXRoNTBQZXJjZW50QWxwaGEgPSBDb2xvcjo6eWVsbG93LmNvbG9yV2l0
aEFscGhhKDEyOCk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IHN0cnVjdCBDb2xvckJ1
aWxkZXIgOiBDb2xvclR5cGUgewotICAgIHVzaW5nIENvbG9yVHlwZTo6Q29sb3JUeXBlOwotCi0g
ICAgY29uc3RleHByIENvbG9yVHlwZSBjb2xvcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgY29uc3RleHByIENvbG9yQnVpbGRlciBjb2xvcldpdGhB
bHBoYSh1aW50OF90IG92ZXJyaWRlQWxwaGEpIGNvbnN0Ci0gICAgewotICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfc2FtZV92PGRlY2x0eXBlKENvbG9yVHlwZSgpLmFscGhhKSwgdWludDhf
dD4sICJPbmx5IHVpbnQ4X3QgYmFzZWQgY29sb3IgdHlwZXMgYXJlIHN1cHBvcnRlZC4iKTsKLQot
ICAgICAgICBhdXRvIGNvcHkgPSAqdGhpczsKLSAgICAgICAgY29weS5hbHBoYSA9IG92ZXJyaWRl
QWxwaGE7Ci0gICAgICAgIHJldHVybiBjb3B5OwotICAgIH0KLX07Ci0KLX0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHJldmlzaW9uIDI2
NDU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsMjAgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29tcG9u
ZW50VHJhaXRzPGZsb2F0PgogICAgIHN0YXRpYyBjb25zdGV4cHIgZmxvYXQgbWF4VmFsdWUgPSAx
LjBmOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNSR0JBIHsKK3RlbXBsYXRl
PHR5cGVuYW1lIFBhcmVudD4gc3RydWN0IENvbG9yV2l0aEFscGhhSGVscGVyIHsKKyAgICAvLyBI
ZWxwZXIgdG8gYWxsb3cgY29udmVuaWVudCBzeW50YXggZm9yIHdvcmtpbmcgd2l0aCBjb2xvciB0
eXBlcy4KKyAgICAvLyBlLmcuIGF1dG8geWVsbG93V2l0aDUwUGVyY2VudEFscGhhID0gQ29sb3I6
OnllbGxvdy5jb2xvcldpdGhBbHBoYUJ5dGUoMTI4KTsKKyAgICBjb25zdGV4cHIgUGFyZW50IGNv
bG9yV2l0aEFscGhhQnl0ZSh1aW50OF90IG92ZXJyaWRlQWxwaGEpIGNvbnN0CisgICAgeworICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxQ
YXJlbnQ+KCkuYWxwaGEpLCB1aW50OF90PiwgIk9ubHkgdWludDhfdCBiYXNlZCBjb2xvciB0eXBl
cyBhcmUgc3VwcG9ydGVkLiIpOworCisgICAgICAgIGF1dG8gY29weSA9ICpzdGF0aWNfY2FzdDxj
b25zdCBQYXJlbnQqPih0aGlzKTsKKyAgICAgICAgY29weS5hbHBoYSA9IG92ZXJyaWRlQWxwaGE7
CisgICAgICAgIHJldHVybiBjb3B5OworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBTUkdCQSA6IENvbG9yV2l0aEFscGhhSGVscGVyPFNSR0JBPFQ+PiB7CiAgICAgdXNp
bmcgQ29tcG9uZW50VHlwZSA9IFQ7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3Bh
Y2UgPSBDb2xvclNwYWNlOjpTUkdCOwogCkBAIC04NiwxOCArOTksMjkgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcgogfQogCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBMaW5lYXJTUkdCQSB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTGluZWFy
U1JHQkEgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxMaW5lYXJTUkdCQTxUPj4geworICAgIHVzaW5n
IENvbXBvbmVudFR5cGUgPSBUOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNl
ID0gQ29sb3JTcGFjZTo6TGluZWFyUkdCOworCisgICAgY29uc3RleHByIExpbmVhclNSR0JBKFQg
cmVkLCBUIGdyZWVuLCBUIGJsdWUsIFQgYWxwaGEgPSBDb21wb25lbnRUcmFpdHM8VD46Om1heFZh
bHVlKQorICAgICAgICA6IHJlZCB7IHJlZCB9CisgICAgICAgICwgZ3JlZW4geyBncmVlbiB9Cisg
ICAgICAgICwgYmx1ZSB7IGJsdWUgfQorICAgICAgICAsIGFscGhhIHsgYWxwaGEgfQorICAgIHsK
KyAgICB9CisKKyAgICBjb25zdGV4cHIgTGluZWFyU1JHQkEoKQorICAgICAgICA6IExpbmVhclNS
R0JBIHsgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+Ojpt
aW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+
OjptaW5WYWx1ZSB9CisgICAgeworICAgIH0KKwogICAgIFQgcmVkOwogICAgIFQgZ3JlZW47CiAg
ICAgVCBibHVlOwogICAgIFQgYWxwaGE7Ci0KLSAgICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsK
LSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OkxpbmVh
clJHQjsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVhclNSR0JBKFQsIFQsIFQsIFQp
IC0+IExpbmVhclNSR0JBPFQ+OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgQ29s
b3JDb21wb25lbnRzPFQ+IGFzQ29sb3JDb21wb25lbnRzKGNvbnN0IExpbmVhclNSR0JBPFQ+JiBj
KQogewogICAgIHJldHVybiB7IGMucmVkLCBjLmdyZWVuLCBjLmJsdWUsIGMuYWxwaGEgfTsKQEAg
LTExOSwxOCArMTQzLDI5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9w
ZXIKIH0KIAogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGlzcGxheVAzIHsKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEaXNwbGF5UDMgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxE
aXNwbGF5UDM8VD4+IHsKKyAgICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OkRpc3BsYXlQMzsKKworICAg
IGNvbnN0ZXhwciBEaXNwbGF5UDMoVCByZWQsIFQgZ3JlZW4sIFQgYmx1ZSwgVCBhbHBoYSA9IENv
bXBvbmVudFRyYWl0czxUPjo6bWF4VmFsdWUpCisgICAgICAgIDogcmVkIHsgcmVkIH0KKyAgICAg
ICAgLCBncmVlbiB7IGdyZWVuIH0KKyAgICAgICAgLCBibHVlIHsgYmx1ZSB9CisgICAgICAgICwg
YWxwaGEgeyBhbHBoYSB9CisgICAgeworICAgIH0KKworICAgIGNvbnN0ZXhwciBEaXNwbGF5UDMo
KQorICAgICAgICA6IERpc3BsYXlQMyB7IENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUsIENv
bXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUsIENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUs
IENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUgfQorICAgIHsKKyAgICB9CisKICAgICBUIHJl
ZDsKICAgICBUIGdyZWVuOwogICAgIFQgYmx1ZTsKICAgICBUIGFscGhhOwotCi0gICAgdXNpbmcg
Q29tcG9uZW50VHlwZSA9IFQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2Ug
PSBDb2xvclNwYWNlOjpEaXNwbGF5UDM7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBEaXNw
bGF5UDMoVCwgVCwgVCwgVCkgLT4gRGlzcGxheVAzPFQ+OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IGFzQ29sb3JDb21wb25lbnRzKGNvbnN0IERp
c3BsYXlQMzxUPiYgYykKIHsKICAgICByZXR1cm4geyBjLnJlZCwgYy5ncmVlbiwgYy5ibHVlLCBj
LmFscGhhIH07CkBAIC0xNTIsMTcgKzE4NywyOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25z
dGV4cHIgYm9vbCBvcGVyCiB9CiAKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExpbmVh
ckRpc3BsYXlQMyB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTGluZWFyRGlzcGxheVAz
IDogQ29sb3JXaXRoQWxwaGFIZWxwZXI8TGluZWFyRGlzcGxheVAzPFQ+PiB7CisgICAgdXNpbmcg
Q29tcG9uZW50VHlwZSA9IFQ7CisKKyAgICBjb25zdGV4cHIgTGluZWFyRGlzcGxheVAzKFQgcmVk
LCBUIGdyZWVuLCBUIGJsdWUsIFQgYWxwaGEgPSBDb21wb25lbnRUcmFpdHM8VD46Om1heFZhbHVl
KQorICAgICAgICA6IHJlZCB7IHJlZCB9CisgICAgICAgICwgZ3JlZW4geyBncmVlbiB9CisgICAg
ICAgICwgYmx1ZSB7IGJsdWUgfQorICAgICAgICAsIGFscGhhIHsgYWxwaGEgfQorICAgIHsKKyAg
ICB9CisKKyAgICBjb25zdGV4cHIgTGluZWFyRGlzcGxheVAzKCkKKyAgICAgICAgOiBMaW5lYXJE
aXNwbGF5UDMgeyBDb21wb25lbnRUcmFpdHM8VD46Om1pblZhbHVlLCBDb21wb25lbnRUcmFpdHM8
VD46Om1pblZhbHVlLCBDb21wb25lbnRUcmFpdHM8VD46Om1pblZhbHVlLCBDb21wb25lbnRUcmFp
dHM8VD46Om1pblZhbHVlIH0KKyAgICB7CisgICAgfQorCiAgICAgVCByZWQ7CiAgICAgVCBncmVl
bjsKICAgICBUIGJsdWU7CiAgICAgVCBhbHBoYTsKLQotICAgIHVzaW5nIENvbXBvbmVudFR5cGUg
PSBUOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gTGluZWFyRGlzcGxheVAzKFQsIFQsIFQs
IFQpIC0+IExpbmVhckRpc3BsYXlQMzxUPjsKLQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3Rl
eHByIENvbG9yQ29tcG9uZW50czxUPiBhc0NvbG9yQ29tcG9uZW50cyhjb25zdCBMaW5lYXJEaXNw
bGF5UDM8VD4mIGMpCiB7CiAgICAgcmV0dXJuIHsgYy5yZWQsIGMuZ3JlZW4sIGMuYmx1ZSwgYy5h
bHBoYSB9OwpAQCAtMTg0LDEzICsyMzAsMjYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3Rl
eHByIGJvb2wgb3BlcgogfQogCiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIU0xBIHsK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIU0xBIDogQ29sb3JXaXRoQWxwaGFIZWxwZXI8
SFNMQTxUPj4geworICAgIHVzaW5nIENvbXBvbmVudFR5cGUgPSBUOworCisgICAgY29uc3RleHBy
IEhTTEEoVCBodWUsIFQgc2F0dXJhdGlvbiwgVCBsaWdodG5lc3MsIFQgYWxwaGEgPSBDb21wb25l
bnRUcmFpdHM8VD46Om1heFZhbHVlKQorICAgICAgICA6IGh1ZSB7IGh1ZSB9CisgICAgICAgICwg
c2F0dXJhdGlvbiB7IHNhdHVyYXRpb24gfQorICAgICAgICAsIGxpZ2h0bmVzcyB7IGxpZ2h0bmVz
cyB9CisgICAgICAgICwgYWxwaGEgeyBhbHBoYSB9CisgICAgeworICAgIH0KKworICAgIGNvbnN0
ZXhwciBIU0xBKCkKKyAgICAgICAgOiBIU0xBIHsgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1
ZSwgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5W
YWx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSB9CisgICAgeworICAgIH0KKwogICAg
IFQgaHVlOwogICAgIFQgc2F0dXJhdGlvbjsKICAgICBUIGxpZ2h0bmVzczsKICAgICBUIGFscGhh
OwotCi0gICAgdXNpbmcgQ29tcG9uZW50VHlwZSA9IFQ7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBIU0xBKFQsIFQsIFQsIFQpIC0+IEhTTEE8VD47CkBAIC0yMTcsMTggKzI3NiwzMCBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyCiAKIAogLy8gRklYTUU6IFdo
ZW4gQ29sb3JDb21wb25lbnRzIHN1cHBvcnRzIG1vcmUgdGhhbiBsZW5ndGggPT0gNCwgYWRkIGNv
bnZlcnNpb24gdG8vZnJvbSBDb2xvckNvbXBvbmVudHM8VD4gZm9yIENNWUtBCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgQ01ZS0EgewordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENN
WUtBIDogQ29sb3JXaXRoQWxwaGFIZWxwZXI8Q01ZS0E8VD4+IHsKKyAgICB1c2luZyBDb21wb25l
bnRUeXBlID0gVDsKKworICAgIGNvbnN0ZXhwciBDTVlLQShUIGN5YW4sIFQgbWFnZW50YSwgVCB5
ZWxsb3csIFQgYmxhY2ssIFQgYWxwaGEgPSBDb21wb25lbnRUcmFpdHM8VD46Om1heFZhbHVlKQor
ICAgICAgICA6IGN5YW4geyBjeWFuIH0KKyAgICAgICAgLCBtYWdlbnRhIHsgbWFnZW50YSB9Cisg
ICAgICAgICwgeWVsbG93IHsgeWVsbG93IH0KKyAgICAgICAgLCBibGFjayB7IGJsYWNrIH0KKyAg
ICAgICAgLCBhbHBoYSB7IGFscGhhIH0KKyAgICB7CisgICAgfQorCisgICAgY29uc3RleHByIENN
WUtBKCkKKyAgICAgICAgOiBDTVlLQSB7IENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUsIENv
bXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUsIENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUs
IENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUsIENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFs
dWUgfQorICAgIHsKKyAgICB9CisKICAgICBUIGN5YW47CiAgICAgVCBtYWdlbnRhOwogICAgIFQg
eWVsbG93OwogICAgIFQgYmxhY2s7CiAgICAgVCBhbHBoYTsKLQotICAgIHVzaW5nIENvbXBvbmVu
dFR5cGUgPSBUOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gQ01ZS0EoVCwgVCwgVCwgVCwg
VCkgLT4gQ01ZS0E8VD47Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ01ZS0E8VD4mIGEsIGNvbnN0IENNWUtBPFQ+JiBiKQogewogICAgIHJl
dHVybiBhLmN5YW4gPT0gYi5jeWFuICYmIGEubWFnZW50YSA9PSBiLm1hZ2VudGEgJiYgYS55ZWxs
b3cgPT0gYi55ZWxsb3cgJiYgYS5ibGFjayA9PSBiLmJsYWNrICYmIGEuYWxwaGEgPT0gYi5hbHBo
YTsKQEAgLTI0MCwxNyArMzExLDI4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBi
b29sIG9wZXIKIH0KIAogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgWFlaQSB7Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgWFlaQSA6IENvbG9yV2l0aEFscGhhSGVscGVyPFhZWkE8
VD4+IHsKKyAgICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsKKworICAgIGNvbnN0ZXhwciBYWVpB
KFQgeCwgVCB5LCBUIHosIFQgYWxwaGEgPSBDb21wb25lbnRUcmFpdHM8VD46Om1heFZhbHVlKQor
ICAgICAgICA6IHggeyB4IH0KKyAgICAgICAgLCB5IHsgeSB9CisgICAgICAgICwgeiB7IHogfQor
ICAgICAgICAsIGFscGhhIHsgYWxwaGEgfQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIg
WFlaQSgpCisgICAgICAgIDogWFlaQSB7IENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUsIENv
bXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUsIENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUs
IENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUgfQorICAgIHsKKyAgICB9CisKICAgICBUIHg7
CiAgICAgVCB5OwogICAgIFQgejsKICAgICBUIGFscGhhOwotCi0gICAgdXNpbmcgQ29tcG9uZW50
VHlwZSA9IFQ7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBYWVpBKFQsIFQsIFQsIFQpIC0+
IFhZWkE8VD47Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xvckNvbXBvbmVu
dHM8VD4gYXNDb2xvckNvbXBvbmVudHMoY29uc3QgWFlaQTxUPiYgYykKIHsKICAgICByZXR1cm4g
eyBjLngsIGMueSwgYy56LCBjLmFscGhhIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAkocmV2aXNpb24gMjY0NTc3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU5OCwxNCArNTk4LDE0IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6Z2V0
RGVidWdCb3JkZXJJbmZvKEMKICAgICB3aWR0aCA9IDI7CiAKICAgICBpZiAobmVlZHNCYWNrZHJv
cCgpKSB7Ci0gICAgICAgIGNvbG9yID0gQ29sb3I6Om1hZ2VudGEuY29sb3JXaXRoQWxwaGEoMTI4
KTsgLy8gaGFzIGJhY2tkcm9wOiBtYWdlbnRhCisgICAgICAgIGNvbG9yID0gQ29sb3I6Om1hZ2Vu
dGEuY29sb3JXaXRoQWxwaGFCeXRlKDEyOCk7IC8vIGhhcyBiYWNrZHJvcDogbWFnZW50YQogICAg
ICAgICB3aWR0aCA9IDEyOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIGlmIChk
cmF3c0NvbnRlbnQoKSkgewogICAgICAgICBpZiAodGlsZWRCYWNraW5nKCkpIHsKLSAgICAgICAg
ICAgIGNvbG9yID0gQ29sb3I6Om9yYW5nZS5jb2xvcldpdGhBbHBoYSgxMjgpOyAvLyB0aWxlZCBs
YXllcjogb3JhbmdlCisgICAgICAgICAgICBjb2xvciA9IENvbG9yOjpvcmFuZ2UuY29sb3JXaXRo
QWxwaGFCeXRlKDEyOCk7IC8vIHRpbGVkIGxheWVyOiBvcmFuZ2UKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC02MjUsNyArNjI1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpn
ZXREZWJ1Z0JvcmRlckluZm8oQwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29sb3Ig
PSBDb2xvcjo6eWVsbG93LmNvbG9yV2l0aEFscGhhKDE5Mik7IC8vIGNvbnRhaW5lcjogeWVsbG93
CisgICAgY29sb3IgPSBDb2xvcjo6eWVsbG93LmNvbG9yV2l0aEFscGhhQnl0ZSgxOTIpOyAvLyBj
b250YWluZXI6IHllbGxvdwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZURlYnVnSW5k
aWNhdG9ycygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHJldmlzaW9uIDI2NDU3NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1OTAsOCArMTU5MCw4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpyZWN1
cnNpdmVDb21taXRDaGEKICAgICAvLyBVc2UgaGF2aW5nIGEgdHJhbnNmb3JtIGFzIGEga2V5IHRv
IG1ha2luZyB0aGUgdGlsZSB3YXNoIGxheWVyLiBJZiBldmVyeSBsYXllciBnZXRzIGEgd2FzaCwK
ICAgICAvLyB0aGV5IHN0YXJ0IHRvIG9ic2N1cmUgdXNlZnVsIGluZm9ybWF0aW9uLgogICAgIGlm
ICgoIW1fdHJhbnNmb3JtLmlzSWRlbnRpdHkoKSB8fCB0aWxlZEJhY2tpbmcoKSkgJiYgIW1fdmlz
aWJsZVRpbGVXYXNoTGF5ZXIpIHsKLSAgICAgICAgY29uc3RleHByIGF1dG8gd2FzaEZpbGxDb2xv
ciA9IENvbG9yOjpyZWQuY29sb3JXaXRoQWxwaGEoNTApOwotICAgICAgICBjb25zdGV4cHIgYXV0
byB3YXNoQm9yZGVyQ29sb3IgPSBDb2xvcjo6cmVkLmNvbG9yV2l0aEFscGhhKDEwMCk7CisgICAg
ICAgIGNvbnN0ZXhwciBhdXRvIHdhc2hGaWxsQ29sb3IgPSBDb2xvcjo6cmVkLmNvbG9yV2l0aEFs
cGhhQnl0ZSg1MCk7CisgICAgICAgIGNvbnN0ZXhwciBhdXRvIHdhc2hCb3JkZXJDb2xvciA9IENv
bG9yOjpyZWQuY29sb3JXaXRoQWxwaGFCeXRlKDEwMCk7CiAgICAgICAgIAogICAgICAgICBtX3Zp
c2libGVUaWxlV2FzaExheWVyID0gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlTGF5ZXIsIHRoaXMpOwogICAgICAgICBTdHJpbmcgbmFtZSA9IG1ha2VTdHJp
bmcoIlZpc2libGUgVGlsZSBXYXNoIExheWVyIDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90PihtX3Zpc2libGVUaWxlV2FzaExheWVyLT5wbGF0Zm9ybUxheWVyKCkpLCBMb3dlcmNh
c2UpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAkocmV2aXNpb24gMjY0NTc3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODcsOCArODcsOCBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJ
bmRpY2F0CiAgICAgY29uc3RleHByIGF1dG8gYmFja2dyb3VuZENvbG9yID0gU1JHQkE8dWludDhf
dD4geyAxMjgsIDY0LCAyNTUgfTsKICAgICBjb25zdGV4cHIgYXV0byBhY2NlbGVyYXRlZENvbnRl
eHRMYWJlbENvbG9yID0gQ29sb3I6OnJlZDsKICAgICBjb25zdGV4cHIgYXV0byB1bmFjY2VsZXJh
dGVkQ29udGV4dExhYmVsQ29sb3IgPSBDb2xvcjo6d2hpdGU7Ci0gICAgY29uc3RleHByIGF1dG8g
bGluZWFyR2x5cGhNYXNrT3V0bGluZUNvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhh
KDE5Mik7Ci0gICAgY29uc3RleHByIGF1dG8gZGlzcGxheUxpc3RCb3JkZXJDb2xvciA9IENvbG9y
OjpibGFjay5jb2xvcldpdGhBbHBoYSgxNjYpOworICAgIGNvbnN0ZXhwciBhdXRvIGxpbmVhckds
eXBoTWFza091dGxpbmVDb2xvciA9IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYUJ5dGUoMTky
KTsKKyAgICBjb25zdGV4cHIgYXV0byBkaXNwbGF5TGlzdEJvcmRlckNvbG9yID0gQ29sb3I6OmJs
YWNrLmNvbG9yV2l0aEFscGhhQnl0ZSgxNjYpOwogCiAgICAgVGV4dFJ1biB0ZXh0UnVuKFN0cmlu
Zzo6bnVtYmVyKHJlcGFpbnRDb3VudCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5jcHAJKHJldmlzaW9u
IDI2NDU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb3Zl
cmFnZU1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgVGlsZUNvdmVyYWdl
TWFwOjpUaWxlQ292ZXJhZ2VNYXAoY29uc3QgVAogICAgIG1fdmlzaWJsZVZpZXdwb3J0SW5kaWNh
dG9yTGF5ZXIuZ2V0KCkuc2V0TmFtZSgidmlzaWJsZSB2aWV3cG9ydCBpbmRpY2F0b3IiKTsKICAg
ICBtX3Zpc2libGVWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlcldpZHRoKDIp
OwogICAgIG1fdmlzaWJsZVZpZXdwb3J0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0QW5jaG9yUG9p
bnQoRmxvYXRQb2ludDNEKCkpOwotICAgIG1fdmlzaWJsZVZpZXdwb3J0SW5kaWNhdG9yTGF5ZXIu
Z2V0KCkuc2V0Qm9yZGVyQ29sb3IoQ29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYSgyMDApKTsKKyAg
ICBtX3Zpc2libGVWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlckNvbG9yKENv
bG9yOjpyZWQuY29sb3JXaXRoQWxwaGFCeXRlKDIwMCkpOwogCiAgICAgbV9sYXlvdXRWaWV3cG9y
dEluZGljYXRvckxheWVyLmdldCgpLnNldE5hbWUoImxheW91dCB2aWV3cG9ydCBpbmRpY2F0b3Ii
KTsKICAgICBtX2xheW91dFZpZXdwb3J0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0Qm9yZGVyV2lk
dGgoMik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1l
TW9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3Jv
bGxiYXJUaGVtZU1vY2suY3BwCShyZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDcgKzQ2LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lTW9jazo6c2Nyb2xsYmFyVGhpY2tuZQogCiB2
b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdHJhY2tS
ZWN0KQogewotICAgIGNvbnRleHQuZmlsbFJlY3QodHJhY2tSZWN0LCBzY3JvbGxiYXIuZW5hYmxl
ZCgpID8gQ29sb3I6OmxpZ2h0R3JheS5jb2xvcigpIDogU1JHQkE8dWludDhfdD4geyAyMjQsIDIy
NCwgMjI0IH0pOworICAgIGNvbnRleHQuZmlsbFJlY3QodHJhY2tSZWN0LCBzY3JvbGxiYXIuZW5h
YmxlZCgpID8gQ29sb3I6OmxpZ2h0R3JheSA6IFNSR0JBPHVpbnQ4X3Q+IHsgMjI0LCAyMjQsIDIy
NCB9KTsKIH0KIAogdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1
bWJSZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdp
bi5jcHAJKHJldmlzaW9uIDI2NDU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNyArMTk2LDcgQEAgRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbQogIAogICAgIC8vIERyYXcgdGhlIHRl
eHQKICAgICBjb25zdGV4cHIgYXV0byB0b3BDb2xvciA9IENvbG9yOjpibGFjazsgLy8gb3JpZ2lu
YWwgYWxwaGEgPSAwLjc1Ci0gICAgY29uc3RleHByIGF1dG8gYm90dG9tQ29sb3IgPSBDb2xvcjo6
d2hpdGUuY29sb3JXaXRoQWxwaGEoMTI3KTsgLy8gb3JpZ2luYWwgYWxwaGEgPSAwLjUKKyAgICBj
b25zdGV4cHIgYXV0byBib3R0b21Db2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYUJ5
dGUoMTI3KTsgLy8gb3JpZ2luYWwgYWxwaGEgPSAwLjUKICAgICBpZiAoZHJhd1VSTFN0cmluZykg
ewogICAgICAgICBpZiAoY2xpcFVSTFN0cmluZykKICAgICAgICAgICAgIHVybFN0cmluZyA9IFN0
cmluZ1RydW5jYXRvcjo6cmlnaHRUcnVuY2F0ZSh1cmxTdHJpbmcsIGltYWdlU2l6ZS53aWR0aCgp
IC0gKERyYWdMYWJlbEJvcmRlclggKiAyLjBmKSwgKnVybEZvbnQpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkocmV2aXNpb24gMjY0NTc3KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NTMsNyArODUzLDcgQEAgYXV0byBJbmxpbmVUZXh0Qm94OjpyZXNvbHZlU3R5bGVGb3JN
YXJrZQogCiAgICAgICAgIENvbG9yIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IHJlbmRlcmVy
KCkuc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CiAgICAgICAgIHN0eWxlLmJhY2tncm91bmRD
b2xvciA9IHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcjsKLSAgICAgICAgaWYgKHNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvci5pc1ZhbGlkKCkgJiYgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yLmFscGhh
KCkgJiYgc3R5bGUudGV4dFN0eWxlcy5maWxsQ29sb3IgPT0gc2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKQorICAgICAgICBpZiAoc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSAmJiBz
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IuaXNWaXNpYmxlKCkgJiYgc3R5bGUudGV4dFN0eWxlcy5m
aWxsQ29sb3IgPT0gc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKQogICAgICAgICAgICAgc3R5bGUu
YmFja2dyb3VuZENvbG9yID0gc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yLmludmVydGVkQ29sb3JX
aXRoQWxwaGEoMS4wKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCShyZXZpc2lvbiAy
NjQ1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBy
ZXBsYWNlbWVudEFycm93Q2lyY2wKIHN0YXRpYyBjb25zdGV4cHIgYXV0byByZXBsYWNlbWVudFRl
eHRSb3VuZGVkUmVjdFByZXNzZWRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTA1LCAxMDUsIDEw
NSwgMjQyIH07CiBzdGF0aWMgY29uc3RleHByIGF1dG8gcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJl
Y3RDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTI1LCAxMjUsIDEyNSwgMjQyIH07CiBzdGF0aWMg
Y29uc3RleHByIGF1dG8gcmVwbGFjZW1lbnRUZXh0Q29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDI0
MCwgMjQwLCAyNDAgfTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byB1bmF2YWlsYWJsZVBsdWdpbkJv
cmRlckNvbG9yID0gQ29sb3I6OndoaXRlLmNvbG9yV2l0aEFscGhhKDIxNik7CitzdGF0aWMgY29u
c3RleHByIGF1dG8gdW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvciA9IENvbG9yOjp3aGl0ZS5j
b2xvcldpdGhBbHBoYUJ5dGUoMjE2KTsKIAogUmVuZGVyRW1iZWRkZWRPYmplY3Q6OlJlbmRlckVt
YmVkZGVkT2JqZWN0KEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSkKICAgICA6IFJlbmRlcldpZGdldChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CShyZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE2MSw3ICszMTYxLDcgQEAgc3RhdGlj
IFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuRm9yVG91Y2hBYwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9OwogCi0gICAgY29uc3RleHByIGF1dG8gZmlsbENvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9y
V2l0aEFscGhhKDEyOCk7CisgICAgY29uc3RleHByIGF1dG8gZmlsbENvbG9yID0gQ29sb3I6OmJs
YWNrLmNvbG9yV2l0aEFscGhhQnl0ZSgxMjgpOwogCiAgICAgc3RhdGljIGNvbnN0IFBhdHRlcm5E
ZXNjcmlwdGlvbiBwYXR0ZXJuRGVzY3JpcHRpb25zW10gPSB7CiAgICAgICAgIHsgImF1dG8iX3Ms
IHsgfSwgZmlsbENvbG9yIH0sCkBAIC0zMTgzLDcgKzMxODMsNyBAQCBzdGF0aWMgUmVmUHRyPFBh
dHRlcm4+IHBhdHRlcm5Gb3JUb3VjaEFjCiAjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX1JFR0lPTlMp
CiBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JFdmVudExpc3RlbmVyUmVnaW9uVHlw
ZShFdmVudExpc3RlbmVyUmVnaW9uVHlwZSB0eXBlLCBGbG9hdFNpemUgY29udGVudE9mZnNldCwg
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCkKIHsKLSAgICBjb25zdGV4cHIgYXV0byBmaWxs
Q29sb3IgPSBDb2xvcjo6ZGFya0dyZWVuLmNvbG9yV2l0aEFscGhhKDEyOCk7CisgICAgY29uc3Rl
eHByIGF1dG8gZmlsbENvbG9yID0gQ29sb3I6OmRhcmtHcmVlbi5jb2xvcldpdGhBbHBoYUJ5dGUo
MTI4KTsKIAogICAgIGF1dG8gcGF0dGVybkFuZFBoYXNlID0gWyZdKCkgLT4gUGF0dGVybkRlc2Ny
aXB0aW9uIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0zMjIwLDcgKzMyMjAsNyBAQCB2
b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnREZWJ1Z092ZXJsCiAjaWYgRU5BQkxFKFRPVUNI
X0FDVElPTl9SRUdJT05TKQogICAgIC8vIFBhaW50IHJlY3RzIGZvciB0b3VjaCBhY3Rpb24uCiAg
ICAgaWYgKHZpc2libGVEZWJ1Z092ZXJsYXlSZWdpb25zICYgVG91Y2hBY3Rpb25SZWdpb24pIHsK
LSAgICAgICAgY29uc3RleHByIGF1dG8gcmVnaW9uQ29sb3IgPSBDb2xvcjo6Ymx1ZS5jb2xvcldp
dGhBbHBoYSg1MCk7CisgICAgICAgIGNvbnN0ZXhwciBhdXRvIHJlZ2lvbkNvbG9yID0gQ29sb3I6
OmJsdWUuY29sb3JXaXRoQWxwaGFCeXRlKDUwKTsKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29s
b3IocmVnaW9uQ29sb3IpOwogICAgICAgICBmb3IgKGF1dG8gcmVjdCA6IGV2ZW50UmVnaW9uLnJl
Z2lvbigpLnJlY3RzKCkpCiAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHJlY3QpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCShyZXZpc2lvbiAyNjQ1
NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTI3LDcgKzE1MjcsNyBAQCBDb2xvciBSZW5kZXJUaGVtZTo6cGxhdGZvcm1U
YXBIaWdobGlnaHRDCiB7CiAgICAgLy8gVGhpcyBjb2xvciBpcyBleHBlY3RlZCB0byBiZSBkcmF3
biBvbiBhIHNlbWktdHJhbnNwYXJlbnQgb3ZlcmxheSwKICAgICAvLyBtYWtpbmcgaXQgbW9yZSB0
cmFuc3BhcmVudCB0aGFuIGl0cyBhbHBoYSB2YWx1ZSBpbmRpY2F0ZXMuCi0gICAgcmV0dXJuIENv
bG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSgxMDIpOworICAgIHJldHVybiBDb2xvcjo6YmxhY2su
Y29sb3JXaXRoQWxwaGFCeXRlKDEwMik7CiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQkocmV2aXNpb24gMjY0NTc3KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMzAsMTAgKzMzMCwxMCBAQCBGbG9hdFJlY3QgUmVuZGVyVGhlbWVJT1M6OmFkZFJvdW5kZWRC
b3JkCiAgICAgICAgIGNvbnRleHQuY2xpcChib3JkZXIucmVjdCgpKTsKIAogICAgIGlmIChpc0No
ZWNrZWQoYm94KSkgewotICAgICAgICBBU1NFUlQoc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpLmFscGhhKCkgJSAyNTUgPT0gMCk7Ci0gICAgICAg
IEFTU0VSVChzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJSaWdo
dENvbG9yKS5hbHBoYSgpICUgMjU1ID09IDApOwotICAgICAgICBBU1NFUlQoc3R5bGUudmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IpLmFscGhhKCkgJSAy
NTUgPT0gMCk7Ci0gICAgICAgIEFTU0VSVChzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpLmFscGhhKCkgJSAyNTUgPT0gMCk7CisgICAgICAgIEFT
U0VSVChzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xv
cikuYWxwaGFCeXRlKCkgJSAyNTUgPT0gMCk7CisgICAgICAgIEFTU0VSVChzdHlsZS52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yKS5hbHBoYUJ5dGUoKSAl
IDI1NSA9PSAwKTsKKyAgICAgICAgQVNTRVJUKHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yKS5hbHBoYUJ5dGUoKSAlIDI1NSA9PSAwKTsKKyAg
ICAgICAgQVNTRVJUKHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRl
ckxlZnRDb2xvcikuYWxwaGFCeXRlKCkgJSAyNTUgPT0gMCk7CiAgICAgfQogCiAgICAgcmV0dXJu
IGJvcmRlci5yZWN0KCk7CkBAIC0zODEsNyArMzgxLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6
cGFpbnRDaGVja2JveERlY29yYQogCiAgICAgaWYgKGNoZWNrZWQgfHwgaW5kZXRlcm1pbmF0ZSkg
ewogICAgICAgICBhdXRvIGJvcmRlciA9IGJveC5zdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3Io
cmVjdCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJvdW5kZWRSZWN0KGJvcmRl
ci5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGJveC5kb2N1bWVudCgpLmRldmlj
ZVNjYWxlRmFjdG9yKCkpLCBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoMjA0KSk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJvdW5kZWRSZWN0KGJvcmRlci5waXhlbFNuYXBw
ZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGJveC5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCkpLCBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGFCeXRlKDIwNCkpOwogCiAgICAgICAgIGF1
dG8gY2xpcCA9IGFkZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJbmZvLmNvbnRleHQoKSwg
cmVjdCk7CiAgICAgICAgIGF1dG8gd2lkdGggPSBjbGlwLndpZHRoKCk7CkBAIC00MTcsMTAgKzQx
NywxMCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludENoZWNrYm94RGVjb3JhCiAgICAgICAg
IH0KIAogICAgICAgICBsaW5lV2lkdGggPSBzdGQ6Om1heDxmbG9hdD4obGluZVdpZHRoLCAxKTsK
LSAgICAgICAgZHJhd0pvaW5lZExpbmVzKGNnQ29udGV4dCwgVmVjdG9yPENHUG9pbnQ+IHsgV1RG
TW92ZShzaGFkb3cpIH0sIGtDR0xpbmVDYXBTcXVhcmUsIGxpbmVXaWR0aCwgQ29sb3I6OmJsYWNr
LmNvbG9yV2l0aEFscGhhKDE3OSkpOworICAgICAgICBkcmF3Sm9pbmVkTGluZXMoY2dDb250ZXh0
LCBWZWN0b3I8Q0dQb2ludD4geyBXVEZNb3ZlKHNoYWRvdykgfSwga0NHTGluZUNhcFNxdWFyZSwg
bGluZVdpZHRoLCBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGFCeXRlKDE3OSkpOwogCiAgICAg
ICAgIGxpbmVXaWR0aCA9IHN0ZDo6bWF4PGZsb2F0PihzdGQ6Om1pbih3aWR0aCwgaGVpZ2h0KSAq
IHRoaWNrbmVzc1JhdGlvLCAxKTsKLSAgICAgICAgZHJhd0pvaW5lZExpbmVzKGNnQ29udGV4dCwg
VmVjdG9yPENHUG9pbnQ+IHsgV1RGTW92ZShsaW5lKSB9LCBrQ0dMaW5lQ2FwQnV0dCwgbGluZVdp
ZHRoLCBDb2xvcjo6d2hpdGUuY29sb3JXaXRoQWxwaGEoMjQwKSk7CisgICAgICAgIGRyYXdKb2lu
ZWRMaW5lcyhjZ0NvbnRleHQsIFZlY3RvcjxDR1BvaW50PiB7IFdURk1vdmUobGluZSkgfSwga0NH
TGluZUNhcEJ1dHQsIGxpbmVXaWR0aCwgQ29sb3I6OndoaXRlLmNvbG9yV2l0aEFscGhhQnl0ZSgy
NDApKTsKICAgICB9IGVsc2UgewogICAgICAgICBhdXRvIGNsaXAgPSBhZGRSb3VuZGVkQm9yZGVy
Q2xpcChib3gsIHBhaW50SW5mby5jb250ZXh0KCksIHJlY3QpOwogICAgICAgICBhdXRvIHdpZHRo
ID0gY2xpcC53aWR0aCgpOwpAQCAtNDc4LDcgKzQ3OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6
OnBhaW50UmFkaW9EZWNvcmF0aW8KIAogICAgIGlmIChpc0NoZWNrZWQoYm94KSkgewogICAgICAg
ICBhdXRvIGJvcmRlciA9IGJveC5zdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3IocmVjdCk7Ci0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJvdW5kZWRSZWN0KGJvcmRlci5waXhlbFNu
YXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGJveC5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCkpLCBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoMjA0KSk7CisgICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkuZmlsbFJvdW5kZWRSZWN0KGJvcmRlci5waXhlbFNuYXBwZWRSb3VuZGVk
UmVjdEZvclBhaW50aW5nKGJveC5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpLCBDb2xv
cjo6YmxhY2suY29sb3JXaXRoQWxwaGFCeXRlKDIwNCkpOwogCiAgICAgICAgIGF1dG8gY2xpcCA9
IGFkZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJbmZvLmNvbnRleHQoKSwgcmVjdCk7CiAg
ICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShDb25j
YXZlR3JhZGllbnQpLCBjbGlwLmxvY2F0aW9uKCksIEZsb2F0UG9pbnQoY2xpcC54KCksIGNsaXAu
bWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CkBAIC00OTEsNyArNDkxLDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZUlPUzo6cGFpbnRSYWRpb0RlY29yYXRpbwogICAgICAgICBjbGlwLmluZmxhdGVY
KC1jbGlwLndpZHRoKCkgKiBJbm5lckludmVyc2VSYXRpbyk7CiAgICAgICAgIGNsaXAuaW5mbGF0
ZVkoLWNsaXAuaGVpZ2h0KCkgKiBJbm5lckludmVyc2VSYXRpbyk7CiAgICAgICAgIAotICAgICAg
ICBjb25zdGV4cHIgYXV0byBzaGFkb3dDb2xvciA9IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBo
YSgxNzkpOworICAgICAgICBjb25zdGV4cHIgYXV0byBzaGFkb3dDb2xvciA9IENvbG9yOjpibGFj
ay5jb2xvcldpdGhBbHBoYUJ5dGUoMTc5KTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5k
cmF3UmFpc2VkRWxsaXBzZShjbGlwLCBDb2xvcjo6d2hpdGUsIHNoYWRvd0NvbG9yKTsKIAogICAg
ICAgICBGbG9hdFNpemUgcmFkaXVzKGNsaXAud2lkdGgoKSAvIDIuMGYsIGNsaXAuaGVpZ2h0KCkg
LyAyLjBmKTsKQEAgLTczOSw3ICs3MzksNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1l
bnVMaXN0QnV0dG9uCiAgICAgICAgIEZsb2F0UmVjdCBlbGxpcHNlKGJ1dHRvbkNsaXAueCgpICsg
KGJ1dHRvbkNsaXAud2lkdGgoKSAtIGNvdW50ICogKHNpemUgKyBwYWRkaW5nKSArIHBhZGRpbmcp
IC8gMi4wLCBidXR0b25DbGlwLm1heFkoKSAtIDEwLjAsIHNpemUsIHNpemUpOwogCiAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5kcmF3UmFpc2VkRWxsaXBzZShlbGxpcHNlLCBDb2xvcjo6d2hpdGUsIENvbG9y
OjpibGFjay5jb2xvcldpdGhBbHBoYSgxMjgpKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250
ZXh0KCkuZHJhd1JhaXNlZEVsbGlwc2UoZWxsaXBzZSwgQ29sb3I6OndoaXRlLCBDb2xvcjo6Ymxh
Y2suY29sb3JXaXRoQWxwaGFCeXRlKDEyOCkpOwogICAgICAgICAgICAgZWxsaXBzZS5tb3ZlKHNp
emUgKyBwYWRkaW5nLCAwKTsKICAgICAgICAgfQogICAgIH0gIGVsc2UgewpAQCAtNzU5LDggKzc1
OSw4IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b24KICAgICAgICAg
fTsKIAogICAgICAgICB1aW50OF90IG9wYWNpdHkgPSBpc1JlYWRPbmx5Q29udHJvbChib3gpID8g
NTEgOiAxMjg7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29s
b3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhKG9wYWNpdHkpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhKG9wYWNpdHkp
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcjo6Ymxh
Y2suY29sb3JXaXRoQWxwaGFCeXRlKG9wYWNpdHkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhQnl0ZShvcGFjaXR5
KSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd1BhdGgoUGF0aDo6cG9seWdvblBh
dGhGcm9tUG9pbnRzKHNoYWRvdykpOwogCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0
U3Ryb2tlQ29sb3IoQ29sb3I6OndoaXRlKTsKQEAgLTE4NTYsNyArMTg1Niw3IEBAIHZvaWQgUmVu
ZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0IKICAgICAvLyBEcmF3IGEgZHJvcCBzaGFk
b3cgYXJvdW5kIHRoZSBjaXJjbGUuCiAgICAgLy8gVXNlIHRoZSBHcmFwaGljc0NvbnRleHQgZnVu
Y3Rpb24sIGJlY2F1c2UgaXQgY2FsY3VsYXRlcyB0aGUgYmx1ciByYWRpdXMgaW4gY29udGV4dCBz
cGFjZSwKICAgICAvLyByYXRoZXIgdGhhbiBzY3JlZW4gc3BhY2UuCi0gICAgY29uc3RleHByIGF1
dG8gc2hhZG93Q29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoMjYpOworICAgIGNv
bnN0ZXhwciBhdXRvIHNoYWRvd0NvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhQnl0
ZSgyNik7CiAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNoYWRvdyhGbG9hdFNpemUgeyB9LCAxNiwg
c2hhZG93Q29sb3IpOwogCiAgICAgLy8gVGhlIGNpcmNsZSBtdXN0IGhhdmUgYW4gYWxwaGEgY2hh
bm5lbCB2YWx1ZSBvZiAxIGZvciB0aGUgc2hhZG93IGNvbG9yIHRvIGFwcGVhci4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHJldmlzaW9uIDI2NDU3
NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTU5Miw4ICsxNTkyLDggQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRN
ZW51TGlzdEJ1dHRvbgogICAgIH07CiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUGF0aChQ
YXRoOjpwb2x5Z29uUGF0aEZyb21Qb2ludHMoYXJyb3cyKSk7CiAKLSAgICBjb25zdGV4cHIgYXV0
byBsZWZ0U2VwYXJhdG9yQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoNDApOwot
ICAgIGNvbnN0ZXhwciBhdXRvIHJpZ2h0U2VwYXJhdG9yQ29sb3IgPSBDb2xvcjo6d2hpdGUuY29s
b3JXaXRoQWxwaGEoNDApOworICAgIGNvbnN0ZXhwciBhdXRvIGxlZnRTZXBhcmF0b3JDb2xvciA9
IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYUJ5dGUoNDApOworICAgIGNvbnN0ZXhwciBhdXRv
IHJpZ2h0U2VwYXJhdG9yQ29sb3IgPSBDb2xvcjo6d2hpdGUuY29sb3JXaXRoQWxwaGFCeXRlKDQw
KTsKIAogICAgIC8vIEZJWE1FOiBTaG91bGQgdGhlIHNlcGFyYXRvciB0aGlja25lc3MgYW5kIHNw
YWNlIGJlIHNjYWxlZCB1cCBieSBmb250U2NhbGU/CiAgICAgaW50IHNlcGFyYXRvclNwYWNlID0g
MjsgLy8gRGVsaWJlcmF0ZWx5IGlnbm9yZXMgem9vbSBzaW5jZSBpdCBsb29rcyBuaWNlciBpZiBp
dCBzdGF5cyB0aGluLgpAQCAtMjQxMyw4ICsyNDEzLDggQEAgY29uc3QgQ0dGbG9hdCBhdHRhY2ht
ZW50SWNvblNlbGVjdGlvbkJvcgogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50SWNvbkJhY2tncm91
bmRSYWRpdXMgPSAzOwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50SWNvblRvVGl0bGVNYXJnaW4g
PSAyOwogCi1jb25zdGV4cHIgYXV0byBhdHRhY2htZW50SWNvbkJhY2tncm91bmRDb2xvciA9IENv
bG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSgzMCk7Ci1jb25zdGV4cHIgYXV0byBhdHRhY2htZW50
SWNvbkJvcmRlckNvbG9yID0gQ29sb3I6OndoaXRlLmNvbG9yV2l0aEFscGhhKDEyNSk7Citjb25z
dGV4cHIgYXV0byBhdHRhY2htZW50SWNvbkJhY2tncm91bmRDb2xvciA9IENvbG9yOjpibGFjay5j
b2xvcldpdGhBbHBoYUJ5dGUoMzApOworY29uc3RleHByIGF1dG8gYXR0YWNobWVudEljb25Cb3Jk
ZXJDb2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYUJ5dGUoMTI1KTsKIAogY29uc3Qg
Q0dGbG9hdCBhdHRhY2htZW50VGl0bGVGb250U2l6ZSA9IDEyOwogY29uc3QgQ0dGbG9hdCBhdHRh
Y2htZW50VGl0bGVCYWNrZ3JvdW5kUmFkaXVzID0gMzsKQEAgLTI0MzMsMTIgKzI0MzMsMTIgQEAg
Y29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJXaWR0aAogY29uc3QgQ0dGbG9hdCBh
dHRhY2htZW50UHJvZ3Jlc3NCYXJIZWlnaHQgPSA1OwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50
UHJvZ3Jlc3NCYXJPZmZzZXQgPSAtOTsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFByb2dyZXNz
QmFyQm9yZGVyV2lkdGggPSAxOwotY29uc3RleHByIGF1dG8gYXR0YWNobWVudFByb2dyZXNzQmFy
QmFja2dyb3VuZENvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhKDg5KTsKK2NvbnN0
ZXhwciBhdXRvIGF0dGFjaG1lbnRQcm9ncmVzc0JhckJhY2tncm91bmRDb2xvciA9IENvbG9yOjpi
bGFjay5jb2xvcldpdGhBbHBoYUJ5dGUoODkpOwogY29uc3RleHByIGF1dG8gYXR0YWNobWVudFBy
b2dyZXNzQmFyRmlsbENvbG9yID0gQ29sb3I6OndoaXRlOwotY29uc3RleHByIGF1dG8gYXR0YWNo
bWVudFByb2dyZXNzQmFyQm9yZGVyQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEo
MTI4KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRQcm9ncmVzc0JhckJvcmRlckNvbG9yID0g
Q29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhQnl0ZSgxMjgpOwogCiBjb25zdCBDR0Zsb2F0IGF0
dGFjaG1lbnRQbGFjZWhvbGRlckJvcmRlclJhZGl1cyA9IDU7Ci1jb25zdGV4cHIgYXV0byBhdHRh
Y2htZW50UGxhY2Vob2xkZXJCb3JkZXJDb2xvciA9IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBo
YSg1Nik7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50UGxhY2Vob2xkZXJCb3JkZXJDb2xvciA9
IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYUJ5dGUoNTYpOwogY29uc3QgQ0dGbG9hdCBhdHRh
Y2htZW50UGxhY2Vob2xkZXJCb3JkZXJXaWR0aCA9IDI7CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1l
bnRQbGFjZWhvbGRlckJvcmRlckRhc2hMZW5ndGggPSA2OwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCShy
ZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lk
IHBhaW50Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsCiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2hhZG93RGF0YT4gZGVidWdTaGFkb3cgPSBudWxscHRyOwogICAgIGlmIChmbG93LnNldHRp
bmdzKCkuc2ltcGxlTGluZUxheW91dERlYnVnQm9yZGVyc0VuYWJsZWQoKSkgewotICAgICAgICBk
ZWJ1Z1NoYWRvdyA9IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oSW50UG9pbnQoMCwgMCksIDEwLCAy
MCwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3I6OmdyZWVuLmNvbG9yV2l0aEFscGhh
KDIwMCkpOworICAgICAgICBkZWJ1Z1NoYWRvdyA9IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oSW50
UG9pbnQoMCwgMCksIDEwLCAyMCwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3I6Omdy
ZWVuLmNvbG9yV2l0aEFscGhhQnl0ZSgyMDApKTsKICAgICAgICAgdGV4dFBhaW50ZXIuc2V0U2hh
ZG93KGRlYnVnU2hhZG93LmdldCgpKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVudGlm
aWNhdGlvbk92ZXJsYXkubW0JKHJldmlzaW9uIDI2NDU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3
OihQbGF0Zm9yCiAgICAgX2xheWVyID0gYWRvcHROUyhbW0NBVGlsZWRMYXllciBhbGxvY10gaW5p
dF0pOwogICAgIFtfbGF5ZXIgc2V0TmFtZTpAIldlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92
ZXJsYXkiXTsKICAgICBbX2xheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgW192aWV3IGJv
dW5kc10uc2l6ZS53aWR0aCwgW192aWV3IGJvdW5kc10uc2l6ZS5oZWlnaHQpXTsKLSAgICBhdXRv
IHZpZXdDb2xvciA9IGlzRGVwcmVjYXRlZCA/IFdlYkNvcmU6OkNvbG9yOjpyZWQuY29sb3JXaXRo
QWxwaGEoNTApIDogV2ViQ29yZTo6Q29sb3I6OmJsdWUuY29sb3JXaXRoQWxwaGEoMzIpOworICAg
IGF1dG8gdmlld0NvbG9yID0gaXNEZXByZWNhdGVkID8gV2ViQ29yZTo6Q29sb3I6OnJlZC5jb2xv
cldpdGhBbHBoYUJ5dGUoNTApIDogV2ViQ29yZTo6Q29sb3I6OmJsdWUuY29sb3JXaXRoQWxwaGFC
eXRlKDMyKTsKICAgICBbX2xheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKHZp
ZXdDb2xvcildOwogICAgIFtfbGF5ZXIgc2V0WlBvc2l0aW9uOjk5OV07CiAgICAgW19sYXllciBz
ZXREZWxlZ2F0ZTpzZWxmXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIw
LTA3LTE5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
Q29sb3JCdWlsZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTQ1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvckNsaWVudDo6c2hvd1BhaW50UmVjdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RmluZENvbnRyb2xsZXI6OmRyYXdSZWN0KToKKyAgICAgICAgVXBkYXRlIGZvciByZW5hbWUgZnJv
bSBjb2xvcldpdGhBbHBoYSB0byBjb2xvcldpdGhBbHBoYUJ5dGUuCisKIDIwMjAtMDctMTggIENv
bW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJldmVydGluZyByMjY0NTYzLgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAkocmV2aXNpb24g
MjY0NTc3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJlY3QoYwogICAgIHBhaW50TGF5ZXItPnNldEFuY2hv
clBvaW50KEZsb2F0UG9pbnQzRCgpKTsKICAgICBwYWludExheWVyLT5zZXRQb3NpdGlvbihyZWN0
LmxvY2F0aW9uKCkpOwogICAgIHBhaW50TGF5ZXItPnNldFNpemUocmVjdC5zaXplKCkpOwotICAg
IHBhaW50TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6cmVkLmNvbG9yV2l0aEFscGhh
KDUxKSk7CisgICAgcGFpbnRMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjpyZWQuY29s
b3JXaXRoQWxwaGFCeXRlKDUxKSk7CiAKICAgICBLZXlmcmFtZVZhbHVlTGlzdCBmYWRlS2V5ZnJh
bWVzKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KTsKICAgICBmYWRlS2V5ZnJhbWVzLmluc2VydCht
YWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIDEpKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDI2NDU3NykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA5LDcgKzUwOSw3IEBAIHZvaWQgRmluZENv
bnRyb2xsZXI6OmRyYXdSZWN0KFBhZ2VPdmVybGEKICAgICBjb25zdCBpbnQgYm9yZGVyV2lkdGgg
PSAxOwogCiAgICAgY29uc3RleHByIGF1dG8gb3ZlcmxheUJhY2tncm91bmRDb2xvciA9IFNSR0JB
PHVpbnQ4X3Q+IHsgMjYsIDI2LCAyNiwgNjQgfTsKLSAgICBjb25zdGV4cHIgYXV0byBzaGFkb3dD
b2xvciA9IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSgxMjgpOworICAgIGNvbnN0ZXhwciBh
dXRvIHNoYWRvd0NvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhQnl0ZSgxMjgpOwog
CiAgICAgSW50UmVjdCBib3JkZXJJbmZsYXRlZERpcnR5UmVjdCA9IGRpcnR5UmVjdDsKICAgICBi
b3JkZXJJbmZsYXRlZERpcnR5UmVjdC5pbmZsYXRlKGJvcmRlcldpZHRoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404678</attachid>
            <date>2020-07-19 11:53:19 -0700</date>
            <delta_ts>2020-07-19 13:07:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214521-20200719115319.patch</filename>
            <type>text/plain</type>
            <size>56459</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDU3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBAQAorMjAyMC0wNy0xOSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIENvbG9yQnVpbGRlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTIxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQ29sb3JCdWlsZGVy
IGlzIHVubmVjZXNzYXJ5IGFuZCBqdXN0IG1ha2VzIGRlZHVjdGlvbiBjb250ZXh0cyBtb3JlIGNv
bXBsaWNhdGVkLgorICAgICAgICBJbnN0ZWFkLCB3ZSBjYW4gZ2V0IHRoZSBzYW1lIGJlaGF2aW9y
IGJ5IGhhdmluZyBjb2xvciB0eXBlcyBpbmhlcml0IGZyb20gYSBzaGFyZWQKKyAgICAgICAgYmFz
ZSBjbGFzcyBDb2xvclR5cGUgdGhhdCB1c2VzIHRoZSBjdXJpb3VzbHkgcmVjdXJyaW5nIHRlbXBs
YXRlIHBhdHRlcm4sIHdoaWNoIAorICAgICAgICBleHBvc2VzIHRoZSBjb2xvcldpdGhBbHBoYUJ5
dGUgZnVuY3Rpb24gKHJlbmFtZWQgZnJvbSBjb2xvcldpdGhBbHBoYSBmb3IgY2xhcml0eQorICAg
ICAgICBvZiB0aGUgcGFyYW1ldGVyKS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBSZW1vdmUg
Q29sb3JCdWlsZGVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCdWlsZGVy
Lmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb2xvcjo6bGlnaHRlbmVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3I6OmFscGhhQnl0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6YWxwaGEgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICBTdG9wIHVzaW5nIENvbG9yQnVpbGRlciBmb3IgY29sb3IgbmFtZWQgY29sb3Ig
dHlwZXMgYW5kIHJlbmFtZSBDb2xvcjo6YWxwaGEgdG8gQ29sb3I6YWxwaGFCeXRlKCkKKyAgICAg
ICAgZm9yIGNvbnNpc3RlbmN5IHdpdGggY29sb3JXaXRoQWxwaGFCeXRlKCkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xv
clR5cGU6OmNvbG9yV2l0aEFscGhhQnl0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5l
YXJTUkdCQTo6TGluZWFyU1JHQkEpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVAzOjpEaXNw
bGF5UDMpOgorICAgICAgICAoV2ViQ29yZTo6TGluZWFyRGlzcGxheVAzOjpMaW5lYXJEaXNwbGF5
UDMpOgorICAgICAgICAoV2ViQ29yZTo6SFNMQTo6SFNMQSk6CisgICAgICAgIChXZWJDb3JlOjpD
TVlLQTo6Q01ZS0EpOgorICAgICAgICAoV2ViQ29yZTo6WFlaQTo6WFlaQSk6CisgICAgICAgIFN3
aXRjaCBlYWNoIGNvbG9yIHR5cGUgdG8gaW5oZXJpdGluZyBmcm9tIG5ldyBDb2xvcldpdGhBbHBo
YUhlbHBlciBzdHJ1Y3QuIFVzZSB0aGUgb3BlcnR1bml0eSB0bworICAgICAgICBnaXZlIGVhY2gg
Y29sb3IgdHlwZSB0aGUgc2FtZSBjb25zdHJ1Y3Rpb24gaW50ZXJmYWNlIGFzIHdlbGwuIE5vdyB0
aGF0IGVhY2ggdHlwZSBoYXMgY29uc3RydWN0b3JzLAorICAgICAgICB0aGUgZGVkdWN0aW9uIGd1
aWRlcyBhcmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQmxlbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRTb3VyY2VPdmVy
KToKKyAgICAgICAgU3dpdGNoIGZyb20gIWNvbG9yLmFscGhhKCkgdG8gIWNvbG9yLmlzVmlzaWJs
ZSgpIHRvIG1vcmUgY2xlYXJseSBpbmRpY2F0ZSB0aGUgaW50ZW50LgorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSBjb25zdCk6CisgICAgICAgIFVwZGF0ZSB0byBj
YWxsIGFscGhhQnl0ZSgpIGFuZCBhZGQgRklYTUUgaW5kaWNhdGluZyB0aGF0IGl0IGlzIHByb2Jh
Ymx5IGluY29ycmVjdCBhbmQgZmlsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNDUzNyB0byB0cmFjayB0aGluZ3MgZnVydGhlci4KKyAgICAgICAg
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JP
dmVybGF5OjpkcmF3UGFpbnRSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVy
bGF5OjpkcmF3Qm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmRy
YXdSdWxlcnMpOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OmNh
cHRpb25zQmFja2dyb3VuZENTUyBjb25zdCk6CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJs
YXk6OmRyYXdSZWN0KToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRl
cnNBdENhcmV0KToKKyAgICAgICAgKiBwYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGlu
dXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3Jt
SW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6Z2V0RGVidWdCb3JkZXJJbmZvIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb3Zl
cmFnZU1hcDo6VGlsZUNvdmVyYWdlTWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Njcm9s
bGJhclRoZW1lTW9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6
OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgorICAg
ICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZVRleHRCb3g6OnJlc29sdmVTdHlsZUZvck1hcmtlZFRleHQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJuRm9yVG91Y2hBY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVybkZvckV2ZW50TGlzdGVuZXJSZWdpb25UeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnREZWJ1Z092ZXJs
YXlzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OnBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IgY29uc3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMpOgorICAgICAgICAq
IHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnBhaW50Rmxvdyk6CisgICAgICAgICogdGVzdGluZy9jb2Nv
YS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tOgorICAgICAgICAoLVtXZWJW
aWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5IGluaXRXaXRoV2ViVmlldzpraW5kOmRlcHJl
Y2F0ZWQ6XSk6CisgICAgICAgIFVwZGF0ZSB0byBjYWxsIGNvbG9yV2l0aEFscGhhQnl0ZSByYXRo
ZXIgdGhhbiBjb2xvcldpdGhBbHBoYS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjphZGRSb3VuZGVkQm9y
ZGVyQ2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRDaGVja2Jv
eERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFJh
ZGlvRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50
TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3QmFkZ2UpOgorICAgICAgICBVcGRhdGUgdG8gdXNlIGNv
bG9yV2l0aEFscGhhQnl0ZSByYXRoZXIgdGhhbiBjb2xvcldpdGhBbHBoYSBhbmQgYWxwaGFCeXRl
IHJhdGhlciB0aGFuIGFscGhhLgorCiAyMDIwLTA3LTE5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGRpdGlvbmFsIENvbG9yIHJlbGF0ZWQgY2xlYW51cHMKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjY0NTc3KQorKysgU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTA4Myw3ICsxMDgzLDYgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0F1
ZGlvVHJhY2tQcml2YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
QnVpbGRlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9ySGFzaC5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIyMDks
NyArMjIwOSw2IEBACiAJCTdBRjlCMjBGMThDRkI1RjQwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxp
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjlC
MjBCMThDRkI1RjMwMEM2NEJFRiAvKiBKU1ZUVFJlZ2lvbkxpc3QuaCAqLzsgfTsKIAkJN0JFNzQy
NzM4MUZBOTA2RkJCNEYwRjJDIC8qIEpTU1ZHR3JhcGhpY3NFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBDNEMwMkJFRDg5MzZGODE4RTJG
OTkgLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuaCAqLzsgfTsKIAkJN0MwMjlDNkUyNDkzQzhGODAw
MjY4MjA0IC8qIENvbG9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDMDI5QzZEMjQ5M0M4RjgwMDI2ODIwNCAvKiBDb2xvclR5cGVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJN0MxNEEwMDcy
NEI1RkUyMTAwMUE2QzZDIC8qIENvbG9yQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxNEEwMDYyNEI1RkUyMTAwMUE2QzZDIC8qIENvbG9y
QnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdDMTg0M0ZFMUM4QjcyODMwMDJFQjk3MyAvKiBBdXRvZmlsbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxODQzRkMxQzhCNzI4MzAwMkVCOTcz
IC8qIEF1dG9maWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0MxOTNCQkIxRjVFMEVFRDAwODhGM0U2IC8qIENhbnZhc0RpcmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxOTNCQjYxRjVF
MEVCOTAwODhGM0U2IC8qIENhbnZhc0RpcmVjdGlvbi5oICovOyB9OwogCQk3QzE5M0JCQzFGNUUw
RUVEMDA4OEYzRTYgLyogQ2FudmFzRmlsbFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTkzQkExMUY1RTBFQUIwMDg4RjNFNiAvKiBDYW52YXNG
aWxsUnVsZS5oICovOyB9OwpAQCAtOTkzMiw3ICs5OTMxLDYgQEAKIAkJN0MwQ0VGMkUxRTRBNTgz
MjAwOERFQjgwIC8qIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzBDRUYyRjFFNEE1OEFEMDA4REVCODAg
LyogSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QzBDRUYzMDFFNEE1OEYxMDA4REVCODAgLyogSlNET01Db25zdHJ1Y3RvcldpdGhE
b2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUNv
bnN0cnVjdG9yV2l0aERvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
N0MxNEEwMDYyNEI1RkUyMTAwMUE2QzZDIC8qIENvbG9yQnVpbGRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb2xvckJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MxODQzRkIx
QzhCNzI4MzAwMkVCOTczIC8qIEF1dG9maWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEF1dG9maWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0MxODQzRkMxQzhCNzI4MzAwMkVCOTczIC8qIEF1dG9maWxsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEF1dG9maWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDMTkzQjlBMUY1RTBFQTcwMDg4RjNFNiAvKiBDYW52YXNEcmF3SW1hZ2UuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IENhbnZhc0RyYXdJbWFnZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNTU0Nyw3ICsyNTU0NSw2IEBACiAJCQkJQjI3NTM1MzkwQjA1MzgxNDAwMkNF
NjRGIC8qIENvbG9yLmggKi8sCiAJCQkJN0MxQjRBNjUyNEE5OTc1OTAwMzM3MjdGIC8qIENvbG9y
QmxlbmRpbmcuY3BwICovLAogCQkJCTdDMUI0QTY3MjRBOTk3NjYwMDMzNzI3RiAvKiBDb2xvckJs
ZW5kaW5nLmggKi8sCi0JCQkJN0MxNEEwMDYyNEI1RkUyMTAwMUE2QzZDIC8qIENvbG9yQnVpbGRl
ci5oICovLAogCQkJCTdDQUM2QUVDMjQ3RjFDNTEwMEU2MUQ1OSAvKiBDb2xvckNvbXBvbmVudHMu
aCAqLywKIAkJCQk3QzUxNEUwMjI0QUY4MDU4MDA1MDcxMEYgLyogQ29sb3JDb252ZXJzaW9uLmNw
cCAqLywKIAkJCQk3QzUxNEUwMDI0QUY4MDU4MDA1MDcxMEYgLyogQ29sb3JDb252ZXJzaW9uLmgg
Ki8sCkBAIC0zMDE1MCw3ICszMDE0Nyw2IEBACiAJCQkJNDZFQkVBMDIxQjdENEQ2NTAwQkU0OTQx
IC8qIENvbGxlY3Rpb25UcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzQ0MjAwMEY4
MTNBRTEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3
NTM1NjcwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QzE0
QTAwNzI0QjVGRTIxMDAxQTZDNkMgLyogQ29sb3JCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDMzMwQTIyMzEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyogQ29sb3JDaG9vc2VyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNDhEMkFBNTIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2Nv
YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDM0Miw3ICszNDMzOCw3IEBACiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlzaGVsbFBhdGggPSAvYmlu
L3NoOwotCQkJc2hlbGxTY3JpcHQgPSAiaWYgWyBcIiR7QUNUSU9OfVwiID0gXCJpbnN0YWxsaGRy
c1wiIC1vIFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxhcGlcIiBdOyB0aGVuXG4gICAgZXhpdCAw
O1xuZmlcblxuaWYgWyAtZiAuLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci13ZWFrLXZ0YWJs
ZXMtYW5kLWV4dGVybmFscyBdOyB0aGVuXG4gICAgLi4vLi4vVG9vbHMvU2NyaXB0cy9jaGVjay1m
b3Itd2Vhay12dGFibGVzLWFuZC1leHRlcm5hbHMgfHwgZXhpdCAkP1xuZmkiOworCQkJc2hlbGxT
Y3JpcHQgPSAiaWYgWyBcIiR7QUNUSU9OfVwiID0gXCJpbnN0YWxsaGRyc1wiIC1vIFwiJHtBQ1RJ
T059XCIgPSBcImluc3RhbGxhcGlcIiBdOyB0aGVuXG4gICAgZXhpdCAwO1xuZmlcblxuaWYgWyAt
ZiAuLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci13ZWFrLXZ0YWJsZXMtYW5kLWV4dGVybmFs
cyBdOyB0aGVuXG4gICAgLi4vLi4vVG9vbHMvU2NyaXB0cy9jaGVjay1mb3Itd2Vhay12dGFibGVz
LWFuZC1leHRlcm5hbHMgfHwgZXhpdCAkP1xuZmlcbiI7CiAJCX07CiAJCTVEMkY3REEwMEM2ODc5
QzYwMEI1QjcyQiAvKiBVcGRhdGUgSW5mby5wbGlzdCB3aXRoIHZlcnNpb24gaW5mb3JtYXRpb24g
Ki8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCShy
ZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw3ICsyODUsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjCiAgICAgICAgICAgICAvLyB0aGVuIGl0
IGlzIHByb2JhYmx5IGEgZGF0YSB0YWJsZSBjZWxsIChzcGFjaW5nIGFuZCBjb2xvcnMgdGFrZSB0
aGUgcGxhY2Ugb2YgYm9yZGVycykuCiAgICAgICAgICAgICBDb2xvciBjZWxsQ29sb3IgPSByZW5k
ZXJTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Ip
OwogICAgICAgICAgICAgaWYgKHRhYmxlLmhCb3JkZXJTcGFjaW5nKCkgPiAwICYmIHRhYmxlLnZC
b3JkZXJTcGFjaW5nKCkgPiAwCi0gICAgICAgICAgICAgICAgJiYgdGFibGVCR0NvbG9yICE9IGNl
bGxDb2xvciAmJiBjZWxsQ29sb3IuYWxwaGEoKSAhPSAxKQorICAgICAgICAgICAgICAgICYmIHRh
YmxlQkdDb2xvciAhPSBjZWxsQ29sb3IgJiYgY2VsbENvbG9yLmFscGhhQnl0ZSgpICE9IDEpIC8v
IEZJWE1FIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTM3KTog
VGhpcyBjb21wYXJpc29uIHRvIDEgaXMgbGlrZWx5IGluY29ycmVjdC4gSXQgbGlrZWx5IHNob3Vs
ZCBiZSBjaGVja2luZyAhY2VsbENvbG9yLmlzT3BhcXVlKCkuCiAgICAgICAgICAgICAgICAgKyti
YWNrZ3JvdW5kRGlmZmVyZW5jZUNlbGxDb3VudDsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Ly8gSWYgd2UndmUgZm91bmQgMTAgImdvb2QiIGNlbGxzLCB3ZSBkb24ndCBuZWVkIHRvIGtlZXAg
c2VhcmNoaW5nLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDg1LDcgKzIwODUsNyBAQCBSZW5kZXJTdHlsZSBI
VE1MSW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lCiAgICAgaWYgKGhhc0F1dG9GaWxsU3Ryb25nUGFz
c3dvcmRCdXR0b24oKSAmJiAhaXNEaXNhYmxlZE9yUmVhZE9ubHkoKSkgewogICAgICAgICB0ZXh0
QmxvY2tTdHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jayk7CiAgICAgICAg
IHRleHRCbG9ja1N0eWxlLnNldE1heFdpZHRoKExlbmd0aCB7IDEwMCwgUGVyY2VudCB9KTsKLSAg
ICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0Q29sb3IoQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhh
KDE1MykpOworICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRDb2xvcihDb2xvcjo6YmxhY2suY29s
b3JXaXRoQWxwaGFCeXRlKDE1MykpOwogICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRUZXh0T3Zl
cmZsb3coVGV4dE92ZXJmbG93OjpDbGlwKTsKICAgICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0TWFz
a0ltYWdlKFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShhdXRvRmlsbFN0cm9uZ1Bhc3N3b3Jk
TWFza0ltYWdlKCkpKTsKICAgICAgICAgLy8gQSBzdGFja2luZyBjb250ZXh0IGlzIG5lZWRlZCBm
b3IgdGhlIG1hc2suCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuY3BwCShyZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxMSw3ICs2MTEsNyBA
QCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdQYWludFJlY3RzKEdyCiB7CiAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogCi0gICAgY29uc3RleHBy
IGF1dG8gcGFpbnRSZWN0c0NvbG9yID0gQ29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYSgxMjgpOwor
ICAgIGNvbnN0ZXhwciBhdXRvIHBhaW50UmVjdHNDb2xvciA9IENvbG9yOjpyZWQuY29sb3JXaXRo
QWxwaGFCeXRlKDEyOCk7CiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IocGFpbnRSZWN0c0NvbG9y
KTsKIAogICAgIGZvciAoY29uc3QgVGltZVJlY3RQYWlyJiBwYWlyIDogcGFpbnRSZWN0cykKQEAg
LTY2Miw3ICs2NjIsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdCb3VuZHMoR3JhcGhp
CiAKICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygxKTsKIAotICAgIGNvbnN0ZXhwciBh
dXRvIGJvdW5kc0NvbG9yID0gQ29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYSgxNTMpOworICAgIGNv
bnN0ZXhwciBhdXRvIGJvdW5kc0NvbG9yID0gQ29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYUJ5dGUo
MTUzKTsKICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGJvdW5kc0NvbG9yKTsKIAogICAgIGNv
bnRleHQuc3Ryb2tlUGF0aChwYXRoKTsKQEAgLTY3MCw5ICs2NzAsOSBAQCB2b2lkIEluc3BlY3Rv
ck92ZXJsYXk6OmRyYXdCb3VuZHMoR3JhcGhpCiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJh
d1J1bGVycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEluc3BlY3Rvck92ZXJsYXk6
OlJ1bGVyRXhjbHVzaW9uJiBydWxlckV4Y2x1c2lvbikKIHsKLSAgICBjb25zdGV4cHIgYXV0byBy
dWxlckJhY2tncm91bmRDb2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYSgxNTMpOwot
ICAgIGNvbnN0ZXhwciBhdXRvIGxpZ2h0UnVsZXJDb2xvciA9IENvbG9yOjpibGFjay5jb2xvcldp
dGhBbHBoYSg1MSk7Ci0gICAgY29uc3RleHByIGF1dG8gZGFya1J1bGVyQ29sb3IgPSBDb2xvcjo6
YmxhY2suY29sb3JXaXRoQWxwaGEoMTI4KTsKKyAgICBjb25zdGV4cHIgYXV0byBydWxlckJhY2tn
cm91bmRDb2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYUJ5dGUoMTUzKTsKKyAgICBj
b25zdGV4cHIgYXV0byBsaWdodFJ1bGVyQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxw
aGFCeXRlKDUxKTsKKyAgICBjb25zdGV4cHIgYXV0byBkYXJrUnVsZXJDb2xvciA9IENvbG9yOjpi
bGFjay5jb2xvcldpdGhBbHBoYUJ5dGUoMTI4KTsKIAogICAgIEludFBvaW50IHNjcm9sbE9mZnNl
dDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWVkaWFBRi5jcHAJKHJldmlzaW9uIDI2NDU3NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yODksNyArMjg5LDcgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpj
YQogewogICAgIC8vIFRoaXMgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBv
bmUgc3BlY2lmaWVkIGluIG1lZGlhQ29udHJvbHMuY3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQt
dHJhY2stcGFzdC1ub2RlcwogICAgIC8vIGFuZCB3ZWJraXQtbWVkaWEtdGV4dC10cmFjay1mdXR1
cmUtbm9kZXMuCi0gICAgY29uc3RleHByIGF1dG8gZGVmYXVsdEJhY2tncm91bmRDb2xvciA9IENv
bG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSgyMDQpOworICAgIGNvbnN0ZXhwciBhdXRvIGRlZmF1
bHRCYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGFCeXRlKDIwNCk7
CiAKICAgICBNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3IgYmVoYXZpb3I7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCShyZXZpc2lvbiAyNjQ1Nzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXkoUGFnZSYgcGFnZSkKLSAgICAgICAgOiBS
ZWdpb25PdmVybGF5KHBhZ2UsIENvbG9yOjpvcmFuZ2UuY29sb3JXaXRoQWxwaGEoMTAyKSkKKyAg
ICAgICAgOiBSZWdpb25PdmVybGF5KHBhZ2UsIENvbG9yOjpvcmFuZ2UuY29sb3JXaXRoQWxwaGFC
eXRlKDEwMikpCiAgICAgewogICAgIH0KIApAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgTm9uRmFz
dFNjcm9sbGFibGVSZWdpb25PdmVybGF5OjpkcmEKICNlbmRpZgogCiAgICAgZm9yIChjb25zdCBh
dXRvJiBzeW5jaHJvbm91c0V2ZW50UmVnaW9uIDogbV9ldmVudFRyYWNraW5nUmVnaW9ucy5ldmVu
dFNwZWNpZmljU3luY2hyb25vdXNEaXNwYXRjaFJlZ2lvbnMpIHsKLSAgICAgICAgYXV0byByZWdp
b25Db2xvciA9IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSg2NCkuY29sb3IoKTsKKyAgICAg
ICAgYXV0byByZWdpb25Db2xvciA9IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYUJ5dGUoNjQp
OwogICAgICAgICBhdXRvIGl0ID0gdG91Y2hFdmVudFJlZ2lvbkNvbG9ycygpLmZpbmQoc3luY2hy
b25vdXNFdmVudFJlZ2lvbi5rZXkpOwogICAgICAgICBpZiAoaXQgIT0gdG91Y2hFdmVudFJlZ2lv
bkNvbG9ycygpLmVuZCgpKQogICAgICAgICAgICAgcmVnaW9uQ29sb3IgPSBpdC0+dmFsdWU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjY0NTc3
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NDUsNyArMTQ0NSw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6Omluc2VydERyb3Bw
ZWRJbWFnZVAKICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21TdHJpbmc6Om51bWJlcihzaXplLndpZHRoKCkp
KTsKICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRN
TE5hbWVzOjpoZWlnaHRBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoc2l6ZS5oZWlnaHQoKSkpOwog
ICAgICAgICBpbWFnZS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1heFdpZHRo
LCAxMDAsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7Ci0gICAgICAgIGltYWdlLT5zZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBzZXJpYWxpemF0
aW9uRm9yQ1NTKENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSgxMykpKTsKKyAgICAgICAgaW1h
Z2UtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIHNl
cmlhbGl6YXRpb25Gb3JDU1MoQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhQnl0ZSgxMykpKTsK
ICAgICAgICAgaW1hZ2UtPnNldElzRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIoKTsKICAgICAgICAg
ZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUoaW1hZ2UpKTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlM
aW51eC5jcHAJKHJldmlzaW9uIDI2NDU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgv
UmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXll
ciosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBjbGlwLCBHcmFw
aGljc0xheWVyUGFpbnRCZWhhdmlvcikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC5m
aWxsUmVjdChjbGlwLCBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoMjA0KSk7CisgICAgICAg
IGNvbnRleHQuZmlsbFJlY3QoY2xpcCwgQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhQnl0ZSgy
MDQpKTsKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoU1JHQkE8dWludDhfdD4geyAyMzAs
IDIzMCwgMjMwIH0pOwogCiAgICAgICAgIEZsb2F0UG9pbnQgcG9zaXRpb24gPSB7IDEwLCAyMCB9
OwpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3Jt
SW5pdGkKICAgICBtX3BhaW50TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUob3ZlcmxheSgp
LnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKm1fb3Zl
cmxheVBhaW50ZXIpOwogICAgIG1fcGFpbnRMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2lu
dDNEKCkpOwogICAgIG1fcGFpbnRMYXllci0+c2V0U2l6ZSh7IG5vcm1hbFdpZHRoLCBub3JtYWxI
ZWlnaHQgfSk7Ci0gICAgbV9wYWludExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmJs
YWNrLmNvbG9yV2l0aEFscGhhKDIwNCkpOworICAgIG1fcGFpbnRMYXllci0+c2V0QmFja2dyb3Vu
ZENvbG9yKENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYUJ5dGUoMjA0KSk7CiAgICAgbV9wYWlu
dExheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAgICAgb3ZlcmxheSgpLmxheWVyKCkuYWRk
Q2hpbGQoKm1fcGFpbnRMYXllcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Fk
d2FpdGEvU2Nyb2xsYmFyVGhlbWVBZHdhaXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHAJKHJldmlzaW9u
IDI2NDU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Fkd2FpdGEvU2Nyb2xsYmFyVGhl
bWVBZHdhaXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgY29u
c3QgdW5zaWduZWQgdGh1bWJTaXplID0gNjsKIHN0YXRpYyBjb25zdCBkb3VibGUgc2Nyb2xsYmFy
T3BhY2l0eSA9IDAuODsKIHN0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JvbGxiYXJCYWNrZ3JvdW5k
Q29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDI1MiwgMjUyLCAyNTIgfTsKIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBzY3JvbGxiYXJCb3JkZXJDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjIwLCAyMjMs
IDIyNyB9Owotc3RhdGljIGNvbnN0ZXhwciBhdXRvIG92ZXJsYXlUaHVtYkJvcmRlckNvbG9yID0g
Q29sb3I6OndoaXRlLmNvbG9yV2l0aEFscGhhKDEwMCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8g
b3ZlcmxheVRodW1iQm9yZGVyQ29sb3IgPSBDb2xvcjo6d2hpdGUuY29sb3JXaXRoQWxwaGFCeXRl
KDEwMCk7CiBzdGF0aWMgY29uc3RleHByIGF1dG8gb3ZlcmxheVRodW1iQ29sb3IgPSBTUkdCQTx1
aW50OF90PiB7IDQ2LCA1MiwgNTQsIDEwMCB9Owogc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRodW1i
SG92ZXJlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyA4NiwgOTEsIDkyIH07CiBzdGF0aWMgY29u
c3RleHByIGF1dG8gdGh1bWJQcmVzc2VkQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDI3LCAxMDYs
IDIwMyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAkocmV2aXNpb24gMjY0NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsNyArMjM3
LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaQogCiAgICAgICAg
IGlmICghZnJhbWVIYXNEZWNvZGVkTmF0aXZlSW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnNBdElu
ZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ09w
dGlvbnMoRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMpKSkgewogICAgICAgICAgICAgaWYgKG1f
c2hvd0RlYnVnQmFja2dyb3VuZCkKLSAgICAgICAgICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3Io
Y29udGV4dCwgZGVzdFJlY3QsIENvbG9yOjp5ZWxsb3cuY29sb3JXaXRoQWxwaGEoMTI4KSwgb3B0
aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKKyAgICAgICAgICAgICAgICBmaWxsV2l0aFNvbGlk
Q29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yOjp5ZWxsb3cuY29sb3JXaXRoQWxwaGFCeXRl
KDEyOCksIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICB9CiAKQEAgLTI0OCw3ICsyNDgsNyBAQCBJbWFnZURyYXdSZXN1bHQg
Qml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpCiAgICAgICAgIEFTU0VSVF9JTVBMSUVTKHN0YXR1cyA9
PSBTdGFydEFuaW1hdGlvblN0YXR1czo6RGVjb2RpbmdBY3RpdmUsICghbV9jdXJyZW50RnJhbWUg
JiYgIW1fcmVwZXRpdGlvbnNDb21wbGV0ZSkgfHwgZnJhbWVIYXNGdWxsU2l6ZU5hdGl2ZUltYWdl
QXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCkpOwogCiAg
ICAgICAgIGlmIChzdGF0dXMgPT0gU3RhcnRBbmltYXRpb25TdGF0dXM6OkRlY29kaW5nQWN0aXZl
ICYmIG1fc2hvd0RlYnVnQmFja2dyb3VuZCkgewotICAgICAgICAgICAgZmlsbFdpdGhTb2xpZENv
bG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcjo6eWVsbG93LmNvbG9yV2l0aEFscGhhKDEyOCks
IG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CisgICAgICAgICAgICBmaWxsV2l0aFNvbGlk
Q29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yOjp5ZWxsb3cuY29sb3JXaXRoQWxwaGFCeXRl
KDEyOCksIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIApAQCAtMjY2LDcgKzI2Niw3IEBAIEltYWdlRHJh
d1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGkKICAgICAgICAgfSBlbHNlIGlmIChmcmFt
ZUlzQmVpbmdEZWNvZGVkKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogaW5zdGVhZCBvZiBzaG93
aW5nIHRoZSB5ZWxsb3cgcmVjdGFuZ2xlIGFuZCByZXR1cm5pbmcgd2UgbmVlZCB0byB3YWl0IGZv
ciB0aGlzIGZyYW1lIHRvIGZpbmlzaCBkZWNvZGluZy4KICAgICAgICAgICAgIGlmIChtX3Nob3dE
ZWJ1Z0JhY2tncm91bmQpIHsKLSAgICAgICAgICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29u
dGV4dCwgZGVzdFJlY3QsIENvbG9yOjp5ZWxsb3cuY29sb3JXaXRoQWxwaGEoMTI4KSwgb3B0aW9u
cy5jb21wb3NpdGVPcGVyYXRvcigpKTsKKyAgICAgICAgICAgICAgICBmaWxsV2l0aFNvbGlkQ29s
b3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yOjp5ZWxsb3cuY29sb3JXaXRoQWxwaGFCeXRlKDEy
OCksIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAgICAgICAgICAgICAgICAgTE9HKElt
YWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbd2FpdGluZyBmb3IgYXN5bmMg
ZGVjb2RpbmcgdG8gZmluaXNoXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2Rpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDggKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3RleHBy
IGF1dG8gbGlnaHRlbmVkQmxhY2sgPSBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsgODQs
IDg0LCA4NCB9Owotc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRhcmtlbmVkV2hpdGUgPSBDb2xvckJ1
aWxkZXI8U1JHQkE8dWludDhfdD4+IHsgMTcxLCAxNzEsIDE3MSB9Oworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIGxpZ2h0ZW5lZEJsYWNrID0gU1JHQkE8dWludDhfdD4geyA4NCwgODQsIDg0IH07Citz
dGF0aWMgY29uc3RleHByIGF1dG8gZGFya2VuZWRXaGl0ZSA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTcx
LCAxNzEsIDE3MSB9OwogCiBDb2xvcjo6Q29sb3IoY29uc3QgQ29sb3ImIG90aGVyKQogICAgIDog
bV9jb2xvckRhdGEob3RoZXIubV9jb2xvckRhdGEpCkBAIC04Nyw3ICs4Nyw3IEBAIENvbG9yIENv
bG9yOjpsaWdodGVuZWQoKSBjb25zdAogICAgIGZsb2F0IHYgPSBzdGQ6Om1heCh7IHIsIGcsIGIg
fSk7CiAKICAgICBpZiAodiA9PSAwLjBmKQotICAgICAgICByZXR1cm4gbGlnaHRlbmVkQmxhY2su
Y29sb3JXaXRoQWxwaGEoYWxwaGEoKSk7CisgICAgICAgIHJldHVybiBsaWdodGVuZWRCbGFjay5j
b2xvcldpdGhBbHBoYUJ5dGUoYWxwaGFCeXRlKCkpOwogCiAgICAgZmxvYXQgbXVsdGlwbGllciA9
IHN0ZDo6bWluKDEuMGYsIHYgKyAwLjMzZikgLyB2OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI2NDU3NykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1
LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDb2xvckJ1aWxkZXIuaCIKICNpbmNs
dWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJFeHRlbmRlZENvbG9yLmgiCkBAIC0xMDEsNyArMTAwLDcgQEAgcHVibGljOgogCiAgICAgYm9v
bCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQoKSA/IGFzRXh0ZW5kZWQoKS5h
bHBoYSgpID09IDEuMCA6IGFzSW5saW5lKCkuYWxwaGEgPT0gMjU1OyB9CiAgICAgYm9vbCBpc1Zp
c2libGUoKSBjb25zdCB7IHJldHVybiBpc0V4dGVuZGVkKCkgPyBhc0V4dGVuZGVkKCkuYWxwaGEo
KSA+IDAuMCA6IGFzSW5saW5lKCkuYWxwaGEgPiAwOyB9Ci0gICAgdWludDhfdCBhbHBoYSgpIGNv
bnN0IHsgcmV0dXJuIGlzRXh0ZW5kZWQoKSA/IGNvbnZlcnRUb0NvbXBvbmVudEJ5dGUoYXNFeHRl
bmRlZCgpLmFscGhhKCkpIDogYXNJbmxpbmUoKS5hbHBoYTsgfQorICAgIHVpbnQ4X3QgYWxwaGFC
eXRlKCkgY29uc3QgeyByZXR1cm4gaXNFeHRlbmRlZCgpID8gY29udmVydFRvQ29tcG9uZW50Qnl0
ZShhc0V4dGVuZGVkKCkuYWxwaGEoKSkgOiBhc0lubGluZSgpLmFscGhhOyB9CiAgICAgZmxvYXQg
YWxwaGFBc0Zsb2F0KCkgY29uc3QgeyByZXR1cm4gaXNFeHRlbmRlZCgpID8gYXNFeHRlbmRlZCgp
LmFscGhhKCkgOiBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChhc0lubGluZSgpLmFscGhhKTsgfQog
CiAgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgbHVtaW5hbmNlKCkgY29uc3Q7CkBAIC0xNDYsMjAg
KzE0NSwyMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgRDJEMV9WRUNU
T1JfNEYoKSBjb25zdDsKICNlbmRpZgogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJsYWNr
ID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDAsIDAsIDAgfTsKLSAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8gd2hpdGUgPSBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsgMjU1
LCAyNTUsIDI1NSB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBkYXJrR3JheSA9IENvbG9y
QnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAxMjgsIDEyOCwgMTI4IH07Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGdyYXkgPSBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsgMTYwLCAx
NjAsIDE2MCB9OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBsaWdodEdyYXkgPSBDb2xvckJ1
aWxkZXI8U1JHQkE8dWludDhfdD4+IHsgMTkyLCAxOTIsIDE5MiB9OwotICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byB0cmFuc3BhcmVudCA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyB9
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjeWFuID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVp
bnQ4X3Q+PiB7IDAsIDI1NSwgMjU1IH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHllbGxv
dyA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAyNTUsIDI1NSwgMCB9OwotICAgIHN0
YXRpYyBjb25zdGV4cHIgYXV0byByZWQgPSBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsg
MjU1LCAwLCAwIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1hZ2VudGEgPSBDb2xvckJ1
aWxkZXI8U1JHQkE8dWludDhfdD4+IHsgMjU1LCAwLCAyNTUgfTsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIGF1dG8gYmx1ZSA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAwLCAwLCAyNTUg
fTsKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZ3JlZW4gPSBDb2xvckJ1aWxkZXI8U1JHQkE8
dWludDhfdD4+IHsgMCwgMjU1LCAwIH07Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRhcmtH
cmVlbiA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAwLCAxMjgsIDAgfTsKLSAgICBz
dGF0aWMgY29uc3RleHByIGF1dG8gb3JhbmdlID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+
PiB7IDI1NSwgMTI4LCAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJsYWNrID0gU1JH
QkE8dWludDhfdD4geyAwLCAwLCAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHdoaXRl
ID0gU1JHQkE8dWludDhfdD4geyAyNTUsIDI1NSwgMjU1IH07CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIGRhcmtHcmF5ID0gU1JHQkE8dWludDhfdD4geyAxMjgsIDEyOCwgMTI4IH07CisgICAg
c3RhdGljIGNvbnN0ZXhwciBhdXRvIGdyYXkgPSBTUkdCQTx1aW50OF90PiB7IDE2MCwgMTYwLCAx
NjAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gbGlnaHRHcmF5ID0gU1JHQkE8dWludDhf
dD4geyAxOTIsIDE5MiwgMTkyIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRyYW5zcGFy
ZW50ID0gU1JHQkE8dWludDhfdD4geyB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjeWFu
ID0gU1JHQkE8dWludDhfdD4geyAwLCAyNTUsIDI1NSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIg
YXV0byB5ZWxsb3cgPSBTUkdCQTx1aW50OF90PiB7IDI1NSwgMjU1LCAwIH07CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIHJlZCA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAwLCAwIH07CisgICAg
c3RhdGljIGNvbnN0ZXhwciBhdXRvIG1hZ2VudGEgPSBTUkdCQTx1aW50OF90PiB7IDI1NSwgMCwg
MjU1IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJsdWUgPSBTUkdCQTx1aW50OF90PiB7
IDAsIDAsIDI1NSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBncmVlbiA9IFNSR0JBPHVp
bnQ4X3Q+IHsgMCwgMjU1LCAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRhcmtHcmVl
biA9IFNSR0JBPHVpbnQ4X3Q+IHsgMCwgMTI4LCAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIG9yYW5nZSA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAxMjgsIDAgfTsKIAogICAgIGJvb2wg
aXNFeHRlbmRlZCgpIGNvbnN0IHsgcmV0dXJuICEobV9jb2xvckRhdGEuaW5saW5lQ29sb3JBbmRG
bGFncyAmIGludmFsaWRJbmxpbmVDb2xvcik7IH0KICAgICBib29sIGlzSW5saW5lKCkgY29uc3Qg
eyByZXR1cm4gIWlzRXh0ZW5kZWQoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JCbGVuZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCbGVuZGluZy5jcHAJKHJldmlzaW9uIDI2NDU3NykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQmxlbmRpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIENvbG9yIGJsZW5kU291cmNlT3Zlcihjb25zdCBD
b2xvciYgYmFja2QKICAgICBpZiAoIWJhY2tkcm9wLmlzVmlzaWJsZSgpIHx8IHNvdXJjZS5pc09w
YXF1ZSgpKQogICAgICAgICByZXR1cm4gc291cmNlOwogCi0gICAgaWYgKCFzb3VyY2UuYWxwaGEo
KSkKKyAgICBpZiAoIXNvdXJjZS5pc1Zpc2libGUoKSkKICAgICAgICAgcmV0dXJuIGJhY2tkcm9w
OwogCiAgICAgYXV0byBbYmFja2Ryb3BSLCBiYWNrZHJvcEcsIGJhY2tkcm9wQiwgYmFja2Ryb3BB
XSA9IGJhY2tkcm9wLnRvU1JHQkFMb3NzeTx1aW50OF90PigpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCdWlsZGVyLmgJKHJldmlzaW9uIDI2NDU3
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQnVpbGRlci5oCShu
b25leGlzdGVudCkKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEhlbHBlciB0byBhbGxvdyBjb252ZW5pZW50IHN5
bnRheCBmb3Igd29ya2luZyB3aXRoIGNvbG9yIHR5cGVzLgotLy8gZS5nLiBhdXRvIHllbGxvd1dp
dGg1MFBlcmNlbnRBbHBoYSA9IENvbG9yOjp5ZWxsb3cuY29sb3JXaXRoQWxwaGEoMTI4KTsKLXRl
bXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gc3RydWN0IENvbG9yQnVpbGRlciA6IENvbG9yVHlw
ZSB7Ci0gICAgdXNpbmcgQ29sb3JUeXBlOjpDb2xvclR5cGU7Ci0KLSAgICBjb25zdGV4cHIgQ29s
b3JUeXBlIGNvbG9yKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9
Ci0KLSAgICBjb25zdGV4cHIgQ29sb3JCdWlsZGVyIGNvbG9yV2l0aEFscGhhKHVpbnQ4X3Qgb3Zl
cnJpZGVBbHBoYSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19z
YW1lX3Y8ZGVjbHR5cGUoQ29sb3JUeXBlKCkuYWxwaGEpLCB1aW50OF90PiwgIk9ubHkgdWludDhf
dCBiYXNlZCBjb2xvciB0eXBlcyBhcmUgc3VwcG9ydGVkLiIpOwotCi0gICAgICAgIGF1dG8gY29w
eSA9ICp0aGlzOwotICAgICAgICBjb3B5LmFscGhhID0gb3ZlcnJpZGVBbHBoYTsKLSAgICAgICAg
cmV0dXJuIGNvcHk7Ci0gICAgfQotfTsKLQotfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkocmV2aXNpb24gMjY0NTc3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw3ICs0MiwyMCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb21wb25lbnRUcmFpdHM8ZmxvYXQ+
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdCBtYXhWYWx1ZSA9IDEuMGY7CiB9OwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU1JHQkEgewordGVtcGxhdGU8dHlwZW5hbWUgUGFyZW50
PiBzdHJ1Y3QgQ29sb3JXaXRoQWxwaGFIZWxwZXIgeworICAgIC8vIEhlbHBlciB0byBhbGxvdyBj
b252ZW5pZW50IHN5bnRheCBmb3Igd29ya2luZyB3aXRoIGNvbG9yIHR5cGVzLgorICAgIC8vIGUu
Zy4gYXV0byB5ZWxsb3dXaXRoNTBQZXJjZW50QWxwaGEgPSBDb2xvcjo6eWVsbG93LmNvbG9yV2l0
aEFscGhhQnl0ZSgxMjgpOworICAgIGNvbnN0ZXhwciBQYXJlbnQgY29sb3JXaXRoQWxwaGFCeXRl
KHVpbnQ4X3Qgb3ZlcnJpZGVBbHBoYSkgY29uc3QKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFBhcmVudD4oKS5hbHBoYSks
IHVpbnQ4X3Q+LCAiT25seSB1aW50OF90IGJhc2VkIGNvbG9yIHR5cGVzIGFyZSBzdXBwb3J0ZWQu
Iik7CisKKyAgICAgICAgYXV0byBjb3B5ID0gKnN0YXRpY19jYXN0PGNvbnN0IFBhcmVudCo+KHRo
aXMpOworICAgICAgICBjb3B5LmFscGhhID0gb3ZlcnJpZGVBbHBoYTsKKyAgICAgICAgcmV0dXJu
IGNvcHk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNSR0JBIDog
Q29sb3JXaXRoQWxwaGFIZWxwZXI8U1JHQkE8VD4+IHsKICAgICB1c2luZyBDb21wb25lbnRUeXBl
ID0gVDsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6
OlNSR0I7CiAKQEAgLTg2LDE4ICs5OSwyOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4
cHIgYm9vbCBvcGVyCiB9CiAKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExpbmVhclNS
R0JBIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMaW5lYXJTUkdCQSA6IENvbG9yV2l0
aEFscGhhSGVscGVyPExpbmVhclNSR0JBPFQ+PiB7CisgICAgdXNpbmcgQ29tcG9uZW50VHlwZSA9
IFQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpM
aW5lYXJSR0I7CisKKyAgICBjb25zdGV4cHIgTGluZWFyU1JHQkEoVCByZWQsIFQgZ3JlZW4sIFQg
Ymx1ZSwgVCBhbHBoYSA9IENvbXBvbmVudFRyYWl0czxUPjo6bWF4VmFsdWUpCisgICAgICAgIDog
cmVkIHsgcmVkIH0KKyAgICAgICAgLCBncmVlbiB7IGdyZWVuIH0KKyAgICAgICAgLCBibHVlIHsg
Ymx1ZSB9CisgICAgICAgICwgYWxwaGEgeyBhbHBoYSB9CisgICAgeworICAgIH0KKworICAgIGNv
bnN0ZXhwciBMaW5lYXJTUkdCQSgpCisgICAgICAgIDogTGluZWFyU1JHQkEgeyBDb21wb25lbnRU
cmFpdHM8VD46Om1pblZhbHVlLCBDb21wb25lbnRUcmFpdHM8VD46Om1pblZhbHVlLCBDb21wb25l
bnRUcmFpdHM8VD46Om1pblZhbHVlLCBDb21wb25lbnRUcmFpdHM8VD46Om1pblZhbHVlIH0KKyAg
ICB7CisgICAgfQorCiAgICAgVCByZWQ7CiAgICAgVCBncmVlbjsKICAgICBUIGJsdWU7CiAgICAg
VCBhbHBoYTsKLQotICAgIHVzaW5nIENvbXBvbmVudFR5cGUgPSBUOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6TGluZWFyUkdCOwogfTsKIAotdGVt
cGxhdGU8dHlwZW5hbWUgVD4gTGluZWFyU1JHQkEoVCwgVCwgVCwgVCkgLT4gTGluZWFyU1JHQkE8
VD47Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xvckNvbXBvbmVudHM8VD4g
YXNDb2xvckNvbXBvbmVudHMoY29uc3QgTGluZWFyU1JHQkE8VD4mIGMpCiB7CiAgICAgcmV0dXJu
IHsgYy5yZWQsIGMuZ3JlZW4sIGMuYmx1ZSwgYy5hbHBoYSB9OwpAQCAtMTE5LDE4ICsxNDMsMjkg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcgogfQogCiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEaXNwbGF5UDMgewordGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IERpc3BsYXlQMyA6IENvbG9yV2l0aEFscGhhSGVscGVyPERpc3BsYXlQMzxUPj4gewor
ICAgIHVzaW5nIENvbXBvbmVudFR5cGUgPSBUOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBj
b2xvclNwYWNlID0gQ29sb3JTcGFjZTo6RGlzcGxheVAzOworCisgICAgY29uc3RleHByIERpc3Bs
YXlQMyhUIHJlZCwgVCBncmVlbiwgVCBibHVlLCBUIGFscGhhID0gQ29tcG9uZW50VHJhaXRzPFQ+
OjptYXhWYWx1ZSkKKyAgICAgICAgOiByZWQgeyByZWQgfQorICAgICAgICAsIGdyZWVuIHsgZ3Jl
ZW4gfQorICAgICAgICAsIGJsdWUgeyBibHVlIH0KKyAgICAgICAgLCBhbHBoYSB7IGFscGhhIH0K
KyAgICB7CisgICAgfQorCisgICAgY29uc3RleHByIERpc3BsYXlQMygpCisgICAgICAgIDogRGlz
cGxheVAzIHsgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+
OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRz
PFQ+OjptaW5WYWx1ZSB9CisgICAgeworICAgIH0KKwogICAgIFQgcmVkOwogICAgIFQgZ3JlZW47
CiAgICAgVCBibHVlOwogICAgIFQgYWxwaGE7Ci0KLSAgICB1c2luZyBDb21wb25lbnRUeXBlID0g
VDsKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OkRp
c3BsYXlQMzsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IERpc3BsYXlQMyhULCBULCBULCBU
KSAtPiBEaXNwbGF5UDM8VD47Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xv
ckNvbXBvbmVudHM8VD4gYXNDb2xvckNvbXBvbmVudHMoY29uc3QgRGlzcGxheVAzPFQ+JiBjKQog
ewogICAgIHJldHVybiB7IGMucmVkLCBjLmdyZWVuLCBjLmJsdWUsIGMuYWxwaGEgfTsKQEAgLTE1
MiwxNyArMTg3LDI4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXIK
IH0KIAogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTGluZWFyRGlzcGxheVAzIHsKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMaW5lYXJEaXNwbGF5UDMgOiBDb2xvcldpdGhBbHBo
YUhlbHBlcjxMaW5lYXJEaXNwbGF5UDM8VD4+IHsKKyAgICB1c2luZyBDb21wb25lbnRUeXBlID0g
VDsKKworICAgIGNvbnN0ZXhwciBMaW5lYXJEaXNwbGF5UDMoVCByZWQsIFQgZ3JlZW4sIFQgYmx1
ZSwgVCBhbHBoYSA9IENvbXBvbmVudFRyYWl0czxUPjo6bWF4VmFsdWUpCisgICAgICAgIDogcmVk
IHsgcmVkIH0KKyAgICAgICAgLCBncmVlbiB7IGdyZWVuIH0KKyAgICAgICAgLCBibHVlIHsgYmx1
ZSB9CisgICAgICAgICwgYWxwaGEgeyBhbHBoYSB9CisgICAgeworICAgIH0KKworICAgIGNvbnN0
ZXhwciBMaW5lYXJEaXNwbGF5UDMoKQorICAgICAgICA6IExpbmVhckRpc3BsYXlQMyB7IENvbXBv
bmVudFRyYWl0czxUPjo6bWluVmFsdWUsIENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUsIENv
bXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUsIENvbXBvbmVudFRyYWl0czxUPjo6bWluVmFsdWUg
fQorICAgIHsKKyAgICB9CisKICAgICBUIHJlZDsKICAgICBUIGdyZWVuOwogICAgIFQgYmx1ZTsK
ICAgICBUIGFscGhhOwotCi0gICAgdXNpbmcgQ29tcG9uZW50VHlwZSA9IFQ7CiB9OwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJEaXNwbGF5UDMoVCwgVCwgVCwgVCkgLT4gTGluZWFyRGlz
cGxheVAzPFQ+OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgQ29sb3JDb21wb25l
bnRzPFQ+IGFzQ29sb3JDb21wb25lbnRzKGNvbnN0IExpbmVhckRpc3BsYXlQMzxUPiYgYykKIHsK
ICAgICByZXR1cm4geyBjLnJlZCwgYy5ncmVlbiwgYy5ibHVlLCBjLmFscGhhIH07CkBAIC0xODQs
MTMgKzIzMCwyNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyCiB9
CiAKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhTTEEgewordGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IEhTTEEgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxIU0xBPFQ+PiB7CisgICAg
dXNpbmcgQ29tcG9uZW50VHlwZSA9IFQ7CisKKyAgICBjb25zdGV4cHIgSFNMQShUIGh1ZSwgVCBz
YXR1cmF0aW9uLCBUIGxpZ2h0bmVzcywgVCBhbHBoYSA9IENvbXBvbmVudFRyYWl0czxUPjo6bWF4
VmFsdWUpCisgICAgICAgIDogaHVlIHsgaHVlIH0KKyAgICAgICAgLCBzYXR1cmF0aW9uIHsgc2F0
dXJhdGlvbiB9CisgICAgICAgICwgbGlnaHRuZXNzIHsgbGlnaHRuZXNzIH0KKyAgICAgICAgLCBh
bHBoYSB7IGFscGhhIH0KKyAgICB7CisgICAgfQorCisgICAgY29uc3RleHByIEhTTEEoKQorICAg
ICAgICA6IEhTTEEgeyBDb21wb25lbnRUcmFpdHM8VD46Om1pblZhbHVlLCBDb21wb25lbnRUcmFp
dHM8VD46Om1pblZhbHVlLCBDb21wb25lbnRUcmFpdHM8VD46Om1pblZhbHVlLCBDb21wb25lbnRU
cmFpdHM8VD46Om1pblZhbHVlIH0KKyAgICB7CisgICAgfQorCiAgICAgVCBodWU7CiAgICAgVCBz
YXR1cmF0aW9uOwogICAgIFQgbGlnaHRuZXNzOwogICAgIFQgYWxwaGE7Ci0KLSAgICB1c2luZyBD
b21wb25lbnRUeXBlID0gVDsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEhTTEEoVCwgVCwg
VCwgVCkgLT4gSFNMQTxUPjsKQEAgLTIxNywxOCArMjc2LDMwIEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGNvbnN0ZXhwciBib29sIG9wZXIKIAogCiAvLyBGSVhNRTogV2hlbiBDb2xvckNvbXBvbmVu
dHMgc3VwcG9ydHMgbW9yZSB0aGFuIGxlbmd0aCA9PSA0LCBhZGQgY29udmVyc2lvbiB0by9mcm9t
IENvbG9yQ29tcG9uZW50czxUPiBmb3IgQ01ZS0EKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBDTVlLQSB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ01ZS0EgOiBDb2xvcldpdGhB
bHBoYUhlbHBlcjxDTVlLQTxUPj4geworICAgIHVzaW5nIENvbXBvbmVudFR5cGUgPSBUOworCisg
ICAgY29uc3RleHByIENNWUtBKFQgY3lhbiwgVCBtYWdlbnRhLCBUIHllbGxvdywgVCBibGFjaywg
VCBhbHBoYSA9IENvbXBvbmVudFRyYWl0czxUPjo6bWF4VmFsdWUpCisgICAgICAgIDogY3lhbiB7
IGN5YW4gfQorICAgICAgICAsIG1hZ2VudGEgeyBtYWdlbnRhIH0KKyAgICAgICAgLCB5ZWxsb3cg
eyB5ZWxsb3cgfQorICAgICAgICAsIGJsYWNrIHsgYmxhY2sgfQorICAgICAgICAsIGFscGhhIHsg
YWxwaGEgfQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgQ01ZS0EoKQorICAgICAgICA6
IENNWUtBIHsgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+
OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRz
PFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSB9CisgICAgeworICAg
IH0KKwogICAgIFQgY3lhbjsKICAgICBUIG1hZ2VudGE7CiAgICAgVCB5ZWxsb3c7CiAgICAgVCBi
bGFjazsKICAgICBUIGFscGhhOwotCi0gICAgdXNpbmcgQ29tcG9uZW50VHlwZSA9IFQ7CiB9Owog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBDTVlLQShULCBULCBULCBULCBUKSAtPiBDTVlLQTxUPjsK
LQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
TVlLQTxUPiYgYSwgY29uc3QgQ01ZS0E8VD4mIGIpCiB7CiAgICAgcmV0dXJuIGEuY3lhbiA9PSBi
LmN5YW4gJiYgYS5tYWdlbnRhID09IGIubWFnZW50YSAmJiBhLnllbGxvdyA9PSBiLnllbGxvdyAm
JiBhLmJsYWNrID09IGIuYmxhY2sgJiYgYS5hbHBoYSA9PSBiLmFscGhhOwpAQCAtMjQwLDE3ICsz
MTEsMjggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcgogfQogCiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBYWVpBIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBYWVpBIDogQ29sb3JXaXRoQWxwaGFIZWxwZXI8WFlaQTxUPj4geworICAgIHVzaW5n
IENvbXBvbmVudFR5cGUgPSBUOworCisgICAgY29uc3RleHByIFhZWkEoVCB4LCBUIHksIFQgeiwg
VCBhbHBoYSA9IENvbXBvbmVudFRyYWl0czxUPjo6bWF4VmFsdWUpCisgICAgICAgIDogeCB7IHgg
fQorICAgICAgICAsIHkgeyB5IH0KKyAgICAgICAgLCB6IHsgeiB9CisgICAgICAgICwgYWxwaGEg
eyBhbHBoYSB9CisgICAgeworICAgIH0KKworICAgIGNvbnN0ZXhwciBYWVpBKCkKKyAgICAgICAg
OiBYWVpBIHsgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+
OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRz
PFQ+OjptaW5WYWx1ZSB9CisgICAgeworICAgIH0KKwogICAgIFQgeDsKICAgICBUIHk7CiAgICAg
VCB6OwogICAgIFQgYWxwaGE7Ci0KLSAgICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsKIH07CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFhZWkEoVCwgVCwgVCwgVCkgLT4gWFlaQTxUPjsKLQogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBhc0NvbG9yQ29t
cG9uZW50cyhjb25zdCBYWVpBPFQ+JiBjKQogewogICAgIHJldHVybiB7IGMueCwgYy55LCBjLnos
IGMuYWxwaGEgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuY3BwCShyZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTk4LDE0ICs1OTgsMTQgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRlckluZm8o
QwogICAgIHdpZHRoID0gMjsKIAogICAgIGlmIChuZWVkc0JhY2tkcm9wKCkpIHsKLSAgICAgICAg
Y29sb3IgPSBDb2xvcjo6bWFnZW50YS5jb2xvcldpdGhBbHBoYSgxMjgpOyAvLyBoYXMgYmFja2Ry
b3A6IG1hZ2VudGEKKyAgICAgICAgY29sb3IgPSBDb2xvcjo6bWFnZW50YS5jb2xvcldpdGhBbHBo
YUJ5dGUoMTI4KTsgLy8gaGFzIGJhY2tkcm9wOiBtYWdlbnRhCiAgICAgICAgIHdpZHRoID0gMTI7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgaWYgKGRyYXdzQ29udGVudCgpKSB7
CiAgICAgICAgIGlmICh0aWxlZEJhY2tpbmcoKSkgewotICAgICAgICAgICAgY29sb3IgPSBDb2xv
cjo6b3JhbmdlLmNvbG9yV2l0aEFscGhhKDEyOCk7IC8vIHRpbGVkIGxheWVyOiBvcmFuZ2UKKyAg
ICAgICAgICAgIGNvbG9yID0gQ29sb3I6Om9yYW5nZS5jb2xvcldpdGhBbHBoYUJ5dGUoMTI4KTsg
Ly8gdGlsZWQgbGF5ZXI6IG9yYW5nZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTYyNSw3ICs2MjUsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OmdldERlYnVnQm9yZGVySW5m
byhDCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb2xvciA9IENvbG9yOjp5ZWxsb3cu
Y29sb3JXaXRoQWxwaGEoMTkyKTsgLy8gY29udGFpbmVyOiB5ZWxsb3cKKyAgICBjb2xvciA9IENv
bG9yOjp5ZWxsb3cuY29sb3JXaXRoQWxwaGFCeXRlKDE5Mik7IC8vIGNvbnRhaW5lcjogeWVsbG93
CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllcjo6dXBkYXRlRGVidWdJbmRpY2F0b3JzKCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcAkocmV2aXNpb24gMjY0NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5
MCw4ICsxNTkwLDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYQog
ICAgIC8vIFVzZSBoYXZpbmcgYSB0cmFuc2Zvcm0gYXMgYSBrZXkgdG8gbWFraW5nIHRoZSB0aWxl
IHdhc2ggbGF5ZXIuIElmIGV2ZXJ5IGxheWVyIGdldHMgYSB3YXNoLAogICAgIC8vIHRoZXkgc3Rh
cnQgdG8gb2JzY3VyZSB1c2VmdWwgaW5mb3JtYXRpb24uCiAgICAgaWYgKCghbV90cmFuc2Zvcm0u
aXNJZGVudGl0eSgpIHx8IHRpbGVkQmFja2luZygpKSAmJiAhbV92aXNpYmxlVGlsZVdhc2hMYXll
cikgewotICAgICAgICBjb25zdGV4cHIgYXV0byB3YXNoRmlsbENvbG9yID0gQ29sb3I6OnJlZC5j
b2xvcldpdGhBbHBoYSg1MCk7Ci0gICAgICAgIGNvbnN0ZXhwciBhdXRvIHdhc2hCb3JkZXJDb2xv
ciA9IENvbG9yOjpyZWQuY29sb3JXaXRoQWxwaGEoMTAwKTsKKyAgICAgICAgY29uc3RleHByIGF1
dG8gd2FzaEZpbGxDb2xvciA9IENvbG9yOjpyZWQuY29sb3JXaXRoQWxwaGFCeXRlKDUwKTsKKyAg
ICAgICAgY29uc3RleHByIGF1dG8gd2FzaEJvcmRlckNvbG9yID0gQ29sb3I6OnJlZC5jb2xvcldp
dGhBbHBoYUJ5dGUoMTAwKTsKICAgICAgICAgCiAgICAgICAgIG1fdmlzaWJsZVRpbGVXYXNoTGF5
ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXll
ciwgdGhpcyk7CiAgICAgICAgIFN0cmluZyBuYW1lID0gbWFrZVN0cmluZygiVmlzaWJsZSBUaWxl
IFdhc2ggTGF5ZXIgMHgiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fdmlzaWJs
ZVRpbGVXYXNoTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSksIExvd2VyY2FzZSkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
TGF5ZXIuY3BwCShyZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw4ICs4
Nyw4IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXQKICAgICBjb25z
dGV4cHIgYXV0byBiYWNrZ3JvdW5kQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDEyOCwgNjQsIDI1
NSB9OwogICAgIGNvbnN0ZXhwciBhdXRvIGFjY2VsZXJhdGVkQ29udGV4dExhYmVsQ29sb3IgPSBD
b2xvcjo6cmVkOwogICAgIGNvbnN0ZXhwciBhdXRvIHVuYWNjZWxlcmF0ZWRDb250ZXh0TGFiZWxD
b2xvciA9IENvbG9yOjp3aGl0ZTsKLSAgICBjb25zdGV4cHIgYXV0byBsaW5lYXJHbHlwaE1hc2tP
dXRsaW5lQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoMTkyKTsKLSAgICBjb25z
dGV4cHIgYXV0byBkaXNwbGF5TGlzdEJvcmRlckNvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0
aEFscGhhKDE2Nik7CisgICAgY29uc3RleHByIGF1dG8gbGluZWFyR2x5cGhNYXNrT3V0bGluZUNv
bG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhQnl0ZSgxOTIpOworICAgIGNvbnN0ZXhw
ciBhdXRvIGRpc3BsYXlMaXN0Qm9yZGVyQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxw
aGFCeXRlKDE2Nik7CiAKICAgICBUZXh0UnVuIHRleHRSdW4oU3RyaW5nOjpudW1iZXIocmVwYWlu
dENvdW50KSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Rp
bGVDb3ZlcmFnZU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcAkocmV2aXNpb24gMjY0NTc3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBUaWxlQ292ZXJhZ2VNYXA6OlRpbGVDb3ZlcmFn
ZU1hcChjb25zdCBUCiAgICAgbV92aXNpYmxlVmlld3BvcnRJbmRpY2F0b3JMYXllci5nZXQoKS5z
ZXROYW1lKCJ2aXNpYmxlIHZpZXdwb3J0IGluZGljYXRvciIpOwogICAgIG1fdmlzaWJsZVZpZXdw
b3J0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0Qm9yZGVyV2lkdGgoMik7CiAgICAgbV92aXNpYmxl
Vmlld3BvcnRJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0Qo
KSk7Ci0gICAgbV92aXNpYmxlVmlld3BvcnRJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRCb3JkZXJD
b2xvcihDb2xvcjo6cmVkLmNvbG9yV2l0aEFscGhhKDIwMCkpOworICAgIG1fdmlzaWJsZVZpZXdw
b3J0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0Qm9yZGVyQ29sb3IoQ29sb3I6OnJlZC5jb2xvcldp
dGhBbHBoYUJ5dGUoMjAwKSk7CiAKICAgICBtX2xheW91dFZpZXdwb3J0SW5kaWNhdG9yTGF5ZXIu
Z2V0KCkuc2V0TmFtZSgibGF5b3V0IHZpZXdwb3J0IGluZGljYXRvciIpOwogICAgIG1fbGF5b3V0
Vmlld3BvcnRJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRCb3JkZXJXaWR0aCgyKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5j
cHAJKHJldmlzaW9uIDI2NDU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Ny
b2xsYmFyVGhlbWVNb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBpbnQg
U2Nyb2xsYmFyVGhlbWVNb2NrOjpzY3JvbGxiYXJUaGlja25lCiAKIHZvaWQgU2Nyb2xsYmFyVGhl
bWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNj
cm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCiB7Ci0gICAgY29u
dGV4dC5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGln
aHRHcmF5LmNvbG9yKCkgOiBTUkdCQTx1aW50OF90PiB7IDIyNCwgMjI0LCAyMjQgfSk7CisgICAg
Y29udGV4dC5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6
bGlnaHRHcmF5IDogU1JHQkE8dWludDhfdD4geyAyMjQsIDIyNCwgMjI0IH0pOwogfQogCiB2b2lk
IFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3QpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAkocmV2aXNpb24g
MjY0NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsxOTYsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJh
Z0ltYWdlRm9yTGluayhFbGVtCiAgCiAgICAgLy8gRHJhdyB0aGUgdGV4dAogICAgIGNvbnN0ZXhw
ciBhdXRvIHRvcENvbG9yID0gQ29sb3I6OmJsYWNrOyAvLyBvcmlnaW5hbCBhbHBoYSA9IDAuNzUK
LSAgICBjb25zdGV4cHIgYXV0byBib3R0b21Db2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhB
bHBoYSgxMjcpOyAvLyBvcmlnaW5hbCBhbHBoYSA9IDAuNQorICAgIGNvbnN0ZXhwciBhdXRvIGJv
dHRvbUNvbG9yID0gQ29sb3I6OndoaXRlLmNvbG9yV2l0aEFscGhhQnl0ZSgxMjcpOyAvLyBvcmln
aW5hbCBhbHBoYSA9IDAuNQogICAgIGlmIChkcmF3VVJMU3RyaW5nKSB7CiAgICAgICAgIGlmIChj
bGlwVVJMU3RyaW5nKQogICAgICAgICAgICAgdXJsU3RyaW5nID0gU3RyaW5nVHJ1bmNhdG9yOjpy
aWdodFRydW5jYXRlKHVybFN0cmluZywgaW1hZ2VTaXplLndpZHRoKCkgLSAoRHJhZ0xhYmVsQm9y
ZGVyWCAqIDIuMGYpLCAqdXJsRm9udCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZVRleHRCb3guY3BwCShyZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1Myw3ICs4NTMs
NyBAQCBhdXRvIElubGluZVRleHRCb3g6OnJlc29sdmVTdHlsZUZvck1hcmtlCiAKICAgICAgICAg
Q29sb3Igc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yID0gcmVuZGVyZXIoKS5zZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKTsKICAgICAgICAgc3R5bGUuYmFja2dyb3VuZENvbG9yID0gc2VsZWN0aW9u
QmFja2dyb3VuZENvbG9yOwotICAgICAgICBpZiAoc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yLmlz
VmFsaWQoKSAmJiBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IuYWxwaGEoKSAmJiBzdHlsZS50ZXh0
U3R5bGVzLmZpbGxDb2xvciA9PSBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgIGlm
IChzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpICYmIHNlbGVjdGlvbkJhY2tncm91
bmRDb2xvci5pc1Zpc2libGUoKSAmJiBzdHlsZS50ZXh0U3R5bGVzLmZpbGxDb2xvciA9PSBzZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IpCiAgICAgICAgICAgICBzdHlsZS5iYWNrZ3JvdW5kQ29sb3Ig
PSBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IuaW52ZXJ0ZWRDb2xvcldpdGhBbHBoYSgxLjApOwog
ICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRW1iZWRkZWRPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHJldmlzaW9uIDI2NDU3NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHJlcGxhY2VtZW50QXJyb3dD
aXJjbAogc3RhdGljIGNvbnN0ZXhwciBhdXRvIHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UHJl
c3NlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAxMDUsIDEwNSwgMTA1LCAyNDIgfTsKIHN0YXRp
YyBjb25zdGV4cHIgYXV0byByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdENvbG9yID0gU1JHQkE8
dWludDhfdD4geyAxMjUsIDEyNSwgMTI1LCAyNDIgfTsKIHN0YXRpYyBjb25zdGV4cHIgYXV0byBy
ZXBsYWNlbWVudFRleHRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjQwLCAyNDAsIDI0MCB9Owot
c3RhdGljIGNvbnN0ZXhwciBhdXRvIHVuYXZhaWxhYmxlUGx1Z2luQm9yZGVyQ29sb3IgPSBDb2xv
cjo6d2hpdGUuY29sb3JXaXRoQWxwaGEoMjE2KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB1bmF2
YWlsYWJsZVBsdWdpbkJvcmRlckNvbG9yID0gQ29sb3I6OndoaXRlLmNvbG9yV2l0aEFscGhhQnl0
ZSgyMTYpOwogCiBSZW5kZXJFbWJlZGRlZE9iamVjdDo6UmVuZGVyRW1iZWRkZWRPYmplY3QoSFRN
TEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDog
UmVuZGVyV2lkZ2V0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDI2NDU3
NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMTYxLDcgKzMxNjEsNyBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+
IHBhdHRlcm5Gb3JUb3VjaEFjCiAgICAgICAgIHJldHVybiAwOwogICAgIH07CiAKLSAgICBjb25z
dGV4cHIgYXV0byBmaWxsQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoMTI4KTsK
KyAgICBjb25zdGV4cHIgYXV0byBmaWxsQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxw
aGFCeXRlKDEyOCk7CiAKICAgICBzdGF0aWMgY29uc3QgUGF0dGVybkRlc2NyaXB0aW9uIHBhdHRl
cm5EZXNjcmlwdGlvbnNbXSA9IHsKICAgICAgICAgeyAiYXV0byJfcywgeyB9LCBmaWxsQ29sb3Ig
fSwKQEAgLTMxODMsNyArMzE4Myw3IEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4gcGF0dGVybkZv
clRvdWNoQWMKICNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfUkVHSU9OUykKIHN0YXRpYyBSZWZQdHI8
UGF0dGVybj4gcGF0dGVybkZvckV2ZW50TGlzdGVuZXJSZWdpb25UeXBlKEV2ZW50TGlzdGVuZXJS
ZWdpb25UeXBlIHR5cGUsIEZsb2F0U2l6ZSBjb250ZW50T2Zmc2V0LCBHcmFwaGljc0NvbnRleHQm
IGRlc3RDb250ZXh0KQogewotICAgIGNvbnN0ZXhwciBhdXRvIGZpbGxDb2xvciA9IENvbG9yOjpk
YXJrR3JlZW4uY29sb3JXaXRoQWxwaGEoMTI4KTsKKyAgICBjb25zdGV4cHIgYXV0byBmaWxsQ29s
b3IgPSBDb2xvcjo6ZGFya0dyZWVuLmNvbG9yV2l0aEFscGhhQnl0ZSgxMjgpOwogCiAgICAgYXV0
byBwYXR0ZXJuQW5kUGhhc2UgPSBbJl0oKSAtPiBQYXR0ZXJuRGVzY3JpcHRpb24gewogICAgICAg
ICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTMyMjAsNyArMzIyMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjpwYWludERlYnVnT3ZlcmwKICNpZiBFTkFCTEUoVE9VQ0hfQUNUSU9OX1JFR0lPTlMp
CiAgICAgLy8gUGFpbnQgcmVjdHMgZm9yIHRvdWNoIGFjdGlvbi4KICAgICBpZiAodmlzaWJsZURl
YnVnT3ZlcmxheVJlZ2lvbnMgJiBUb3VjaEFjdGlvblJlZ2lvbikgewotICAgICAgICBjb25zdGV4
cHIgYXV0byByZWdpb25Db2xvciA9IENvbG9yOjpibHVlLmNvbG9yV2l0aEFscGhhKDUwKTsKKyAg
ICAgICAgY29uc3RleHByIGF1dG8gcmVnaW9uQ29sb3IgPSBDb2xvcjo6Ymx1ZS5jb2xvcldpdGhB
bHBoYUJ5dGUoNTApOwogICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihyZWdpb25Db2xvcik7
CiAgICAgICAgIGZvciAoYXV0byByZWN0IDogZXZlbnRSZWdpb24ucmVnaW9uKCkucmVjdHMoKSkK
ICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocmVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHJldmlzaW9uIDI2NDU3NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Mjcs
NyArMTUyNyw3IEBAIENvbG9yIFJlbmRlclRoZW1lOjpwbGF0Zm9ybVRhcEhpZ2hsaWdodEMKIHsK
ICAgICAvLyBUaGlzIGNvbG9yIGlzIGV4cGVjdGVkIHRvIGJlIGRyYXduIG9uIGEgc2VtaS10cmFu
c3BhcmVudCBvdmVybGF5LAogICAgIC8vIG1ha2luZyBpdCBtb3JlIHRyYW5zcGFyZW50IHRoYW4g
aXRzIGFscGhhIHZhbHVlIGluZGljYXRlcy4KLSAgICByZXR1cm4gQ29sb3I6OmJsYWNrLmNvbG9y
V2l0aEFscGhhKDEwMik7CisgICAgcmV0dXJuIENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYUJ5
dGUoMTAyKTsKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lSU9TLm1tCShyZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzMCwxMCArMzMwLDEw
IEBAIEZsb2F0UmVjdCBSZW5kZXJUaGVtZUlPUzo6YWRkUm91bmRlZEJvcmQKICAgICAgICAgY29u
dGV4dC5jbGlwKGJvcmRlci5yZWN0KCkpOwogCiAgICAgaWYgKGlzQ2hlY2tlZChib3gpKSB7Ci0g
ICAgICAgIEFTU0VSVChzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BDb2xvcikuYWxwaGEoKSAlIDI1NSA9PSAwKTsKLSAgICAgICAgQVNTRVJUKHN0eWxlLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IpLmFscGhhKCkg
JSAyNTUgPT0gMCk7Ci0gICAgICAgIEFTU0VSVChzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcikuYWxwaGEoKSAlIDI1NSA9PSAwKTsKLSAgICAg
ICAgQVNTRVJUKHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRDb2xvcikuYWxwaGEoKSAlIDI1NSA9PSAwKTsKKyAgICAgICAgQVNTRVJUKHN0eWxlLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKS5hbHBoYUJ5dGUoKSAl
IDI1NSA9PSAwKTsKKyAgICAgICAgQVNTRVJUKHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IpLmFscGhhQnl0ZSgpICUgMjU1ID09IDApOworICAg
ICAgICBBU1NFUlQoc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tQ29sb3IpLmFscGhhQnl0ZSgpICUgMjU1ID09IDApOworICAgICAgICBBU1NFUlQoc3R5
bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKS5hbHBo
YUJ5dGUoKSAlIDI1NSA9PSAwKTsKICAgICB9CiAKICAgICByZXR1cm4gYm9yZGVyLnJlY3QoKTsK
QEAgLTM4MSw3ICszODEsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludENoZWNrYm94RGVj
b3JhCiAKICAgICBpZiAoY2hlY2tlZCB8fCBpbmRldGVybWluYXRlKSB7CiAgICAgICAgIGF1dG8g
Ym9yZGVyID0gYm94LnN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihyZWN0KTsKLSAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUm91bmRlZFJlY3QoYm9yZGVyLnBpeGVsU25hcHBlZFJv
dW5kZWRSZWN0Rm9yUGFpbnRpbmcoYm94LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSks
IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSgyMDQpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5maWxsUm91bmRlZFJlY3QoYm9yZGVyLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9y
UGFpbnRpbmcoYm94LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIENvbG9yOjpibGFj
ay5jb2xvcldpdGhBbHBoYUJ5dGUoMjA0KSk7CiAKICAgICAgICAgYXV0byBjbGlwID0gYWRkUm91
bmRlZEJvcmRlckNsaXAoYm94LCBwYWludEluZm8uY29udGV4dCgpLCByZWN0KTsKICAgICAgICAg
YXV0byB3aWR0aCA9IGNsaXAud2lkdGgoKTsKQEAgLTQxNywxMCArNDE3LDEwIEBAIGJvb2wgUmVu
ZGVyVGhlbWVJT1M6OnBhaW50Q2hlY2tib3hEZWNvcmEKICAgICAgICAgfQogCiAgICAgICAgIGxp
bmVXaWR0aCA9IHN0ZDo6bWF4PGZsb2F0PihsaW5lV2lkdGgsIDEpOwotICAgICAgICBkcmF3Sm9p
bmVkTGluZXMoY2dDb250ZXh0LCBWZWN0b3I8Q0dQb2ludD4geyBXVEZNb3ZlKHNoYWRvdykgfSwg
a0NHTGluZUNhcFNxdWFyZSwgbGluZVdpZHRoLCBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEo
MTc5KSk7CisgICAgICAgIGRyYXdKb2luZWRMaW5lcyhjZ0NvbnRleHQsIFZlY3RvcjxDR1BvaW50
PiB7IFdURk1vdmUoc2hhZG93KSB9LCBrQ0dMaW5lQ2FwU3F1YXJlLCBsaW5lV2lkdGgsIENvbG9y
OjpibGFjay5jb2xvcldpdGhBbHBoYUJ5dGUoMTc5KSk7CiAKICAgICAgICAgbGluZVdpZHRoID0g
c3RkOjptYXg8ZmxvYXQ+KHN0ZDo6bWluKHdpZHRoLCBoZWlnaHQpICogdGhpY2tuZXNzUmF0aW8s
IDEpOwotICAgICAgICBkcmF3Sm9pbmVkTGluZXMoY2dDb250ZXh0LCBWZWN0b3I8Q0dQb2ludD4g
eyBXVEZNb3ZlKGxpbmUpIH0sIGtDR0xpbmVDYXBCdXR0LCBsaW5lV2lkdGgsIENvbG9yOjp3aGl0
ZS5jb2xvcldpdGhBbHBoYSgyNDApKTsKKyAgICAgICAgZHJhd0pvaW5lZExpbmVzKGNnQ29udGV4
dCwgVmVjdG9yPENHUG9pbnQ+IHsgV1RGTW92ZShsaW5lKSB9LCBrQ0dMaW5lQ2FwQnV0dCwgbGlu
ZVdpZHRoLCBDb2xvcjo6d2hpdGUuY29sb3JXaXRoQWxwaGFCeXRlKDI0MCkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGF1dG8gY2xpcCA9IGFkZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJ
bmZvLmNvbnRleHQoKSwgcmVjdCk7CiAgICAgICAgIGF1dG8gd2lkdGggPSBjbGlwLndpZHRoKCk7
CkBAIC00NzgsNyArNDc4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRSYWRpb0RlY29y
YXRpbwogCiAgICAgaWYgKGlzQ2hlY2tlZChib3gpKSB7CiAgICAgICAgIGF1dG8gYm9yZGVyID0g
Ym94LnN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihyZWN0KTsKLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5maWxsUm91bmRlZFJlY3QoYm9yZGVyLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0
Rm9yUGFpbnRpbmcoYm94LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIENvbG9yOjpi
bGFjay5jb2xvcldpdGhBbHBoYSgyMDQpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5m
aWxsUm91bmRlZFJlY3QoYm9yZGVyLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmco
Ym94LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIENvbG9yOjpibGFjay5jb2xvcldp
dGhBbHBoYUJ5dGUoMjA0KSk7CiAKICAgICAgICAgYXV0byBjbGlwID0gYWRkUm91bmRlZEJvcmRl
ckNsaXAoYm94LCBwYWludEluZm8uY29udGV4dCgpLCByZWN0KTsKICAgICAgICAgZHJhd0F4aWFs
R3JhZGllbnQoY2dDb250ZXh0LCBncmFkaWVudFdpdGhOYW1lKENvbmNhdmVHcmFkaWVudCksIGNs
aXAubG9jYXRpb24oKSwgRmxvYXRQb2ludChjbGlwLngoKSwgY2xpcC5tYXhZKCkpLCBMaW5lYXJJ
bnRlcnBvbGF0aW9uKTsKQEAgLTQ5MSw3ICs0OTEsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpw
YWludFJhZGlvRGVjb3JhdGlvCiAgICAgICAgIGNsaXAuaW5mbGF0ZVgoLWNsaXAud2lkdGgoKSAq
IElubmVySW52ZXJzZVJhdGlvKTsKICAgICAgICAgY2xpcC5pbmZsYXRlWSgtY2xpcC5oZWlnaHQo
KSAqIElubmVySW52ZXJzZVJhdGlvKTsKICAgICAgICAgCi0gICAgICAgIGNvbnN0ZXhwciBhdXRv
IHNoYWRvd0NvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhKDE3OSk7CisgICAgICAg
IGNvbnN0ZXhwciBhdXRvIHNoYWRvd0NvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhh
Qnl0ZSgxNzkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdSYWlzZWRFbGxpcHNl
KGNsaXAsIENvbG9yOjp3aGl0ZSwgc2hhZG93Q29sb3IpOwogCiAgICAgICAgIEZsb2F0U2l6ZSBy
YWRpdXMoY2xpcC53aWR0aCgpIC8gMi4wZiwgY2xpcC5oZWlnaHQoKSAvIDIuMGYpOwpAQCAtNzM5
LDcgKzczOSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b24KICAg
ICAgICAgRmxvYXRSZWN0IGVsbGlwc2UoYnV0dG9uQ2xpcC54KCkgKyAoYnV0dG9uQ2xpcC53aWR0
aCgpIC0gY291bnQgKiAoc2l6ZSArIHBhZGRpbmcpICsgcGFkZGluZykgLyAyLjAsIGJ1dHRvbkNs
aXAubWF4WSgpIC0gMTAuMCwgc2l6ZSwgc2l6ZSk7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdS
YWlzZWRFbGxpcHNlKGVsbGlwc2UsIENvbG9yOjp3aGl0ZSwgQ29sb3I6OmJsYWNrLmNvbG9yV2l0
aEFscGhhKDEyOCkpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3UmFpc2Vk
RWxsaXBzZShlbGxpcHNlLCBDb2xvcjo6d2hpdGUsIENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBo
YUJ5dGUoMTI4KSk7CiAgICAgICAgICAgICBlbGxpcHNlLm1vdmUoc2l6ZSArIHBhZGRpbmcsIDAp
OwogICAgICAgICB9CiAgICAgfSAgZWxzZSB7CkBAIC03NTksOCArNzU5LDggQEAgYm9vbCBSZW5k
ZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRvbgogICAgICAgICB9OwogCiAgICAgICAgIHVp
bnQ4X3Qgb3BhY2l0eSA9IGlzUmVhZE9ubHlDb250cm9sKGJveCkgPyA1MSA6IDEyODsKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2suY29sb3JX
aXRoQWxwaGEob3BhY2l0eSkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxD
b2xvcihDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEob3BhY2l0eSkpOworICAgICAgICBwYWlu
dEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBo
YUJ5dGUob3BhY2l0eSkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xv
cihDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGFCeXRlKG9wYWNpdHkpKTsKICAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5kcmF3UGF0aChQYXRoOjpwb2x5Z29uUGF0aEZyb21Qb2ludHMoc2hh
ZG93KSk7CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xv
cjo6d2hpdGUpOwpAQCAtMTg1Niw3ICsxODU2LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6cGFp
bnRTeXN0ZW1QcmV2aWV3QgogICAgIC8vIERyYXcgYSBkcm9wIHNoYWRvdyBhcm91bmQgdGhlIGNp
cmNsZS4KICAgICAvLyBVc2UgdGhlIEdyYXBoaWNzQ29udGV4dCBmdW5jdGlvbiwgYmVjYXVzZSBp
dCBjYWxjdWxhdGVzIHRoZSBibHVyIHJhZGl1cyBpbiBjb250ZXh0IHNwYWNlLAogICAgIC8vIHJh
dGhlciB0aGFuIHNjcmVlbiBzcGFjZS4KLSAgICBjb25zdGV4cHIgYXV0byBzaGFkb3dDb2xvciA9
IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSgyNik7CisgICAgY29uc3RleHByIGF1dG8gc2hh
ZG93Q29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGFCeXRlKDI2KTsKICAgICBncmFw
aGljc0NvbnRleHQuc2V0U2hhZG93KEZsb2F0U2l6ZSB7IH0sIDE2LCBzaGFkb3dDb2xvcik7CiAK
ICAgICAvLyBUaGUgY2lyY2xlIG11c3QgaGF2ZSBhbiBhbHBoYSBjaGFubmVsIHZhbHVlIG9mIDEg
Zm9yIHRoZSBzaGFkb3cgY29sb3IgdG8gYXBwZWFyLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMjY0NTc3KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTky
LDggKzE1OTIsOCBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uCiAg
ICAgfTsKICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxQYXRoKFBhdGg6OnBvbHlnb25QYXRo
RnJvbVBvaW50cyhhcnJvdzIpKTsKIAotICAgIGNvbnN0ZXhwciBhdXRvIGxlZnRTZXBhcmF0b3JD
b2xvciA9IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSg0MCk7Ci0gICAgY29uc3RleHByIGF1
dG8gcmlnaHRTZXBhcmF0b3JDb2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYSg0MCk7
CisgICAgY29uc3RleHByIGF1dG8gbGVmdFNlcGFyYXRvckNvbG9yID0gQ29sb3I6OmJsYWNrLmNv
bG9yV2l0aEFscGhhQnl0ZSg0MCk7CisgICAgY29uc3RleHByIGF1dG8gcmlnaHRTZXBhcmF0b3JD
b2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYUJ5dGUoNDApOwogCiAgICAgLy8gRklY
TUU6IFNob3VsZCB0aGUgc2VwYXJhdG9yIHRoaWNrbmVzcyBhbmQgc3BhY2UgYmUgc2NhbGVkIHVw
IGJ5IGZvbnRTY2FsZT8KICAgICBpbnQgc2VwYXJhdG9yU3BhY2UgPSAyOyAvLyBEZWxpYmVyYXRl
bHkgaWdub3JlcyB6b29tIHNpbmNlIGl0IGxvb2tzIG5pY2VyIGlmIGl0IHN0YXlzIHRoaW4uCkBA
IC0yNDEzLDggKzI0MTMsOCBAQCBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRJY29uU2VsZWN0aW9u
Qm9yCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZFJhZGl1cyA9IDM7CiBj
b25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRJY29uVG9UaXRsZU1hcmdpbiA9IDI7CiAKLWNvbnN0ZXhw
ciBhdXRvIGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZENvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9y
V2l0aEFscGhhKDMwKTsKLWNvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRJY29uQm9yZGVyQ29sb3Ig
PSBDb2xvcjo6d2hpdGUuY29sb3JXaXRoQWxwaGEoMTI1KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFj
aG1lbnRJY29uQmFja2dyb3VuZENvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhQnl0
ZSgzMCk7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50SWNvbkJvcmRlckNvbG9yID0gQ29sb3I6
OndoaXRlLmNvbG9yV2l0aEFscGhhQnl0ZSgxMjUpOwogCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1l
bnRUaXRsZUZvbnRTaXplID0gMTI7CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRUaXRsZUJhY2tn
cm91bmRSYWRpdXMgPSAzOwpAQCAtMjQzMywxMiArMjQzMywxMiBAQCBjb25zdCBDR0Zsb2F0IGF0
dGFjaG1lbnRQcm9ncmVzc0JhcldpZHRoCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQcm9ncmVz
c0JhckhlaWdodCA9IDU7CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQcm9ncmVzc0Jhck9mZnNl
dCA9IC05OwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJCb3JkZXJXaWR0aCA9
IDE7Ci1jb25zdGV4cHIgYXV0byBhdHRhY2htZW50UHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3Ig
PSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoODkpOworY29uc3RleHByIGF1dG8gYXR0YWNo
bWVudFByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFs
cGhhQnl0ZSg4OSk7CiBjb25zdGV4cHIgYXV0byBhdHRhY2htZW50UHJvZ3Jlc3NCYXJGaWxsQ29s
b3IgPSBDb2xvcjo6d2hpdGU7Ci1jb25zdGV4cHIgYXV0byBhdHRhY2htZW50UHJvZ3Jlc3NCYXJC
b3JkZXJDb2xvciA9IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSgxMjgpOworY29uc3RleHBy
IGF1dG8gYXR0YWNobWVudFByb2dyZXNzQmFyQm9yZGVyQ29sb3IgPSBDb2xvcjo6YmxhY2suY29s
b3JXaXRoQWxwaGFCeXRlKDEyOCk7CiAKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFBsYWNlaG9s
ZGVyQm9yZGVyUmFkaXVzID0gNTsKLWNvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRQbGFjZWhvbGRl
ckJvcmRlckNvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhKDU2KTsKK2NvbnN0ZXhw
ciBhdXRvIGF0dGFjaG1lbnRQbGFjZWhvbGRlckJvcmRlckNvbG9yID0gQ29sb3I6OmJsYWNrLmNv
bG9yV2l0aEFscGhhQnl0ZSg1Nik7CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQbGFjZWhvbGRl
ckJvcmRlcldpZHRoID0gMjsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFBsYWNlaG9sZGVyQm9y
ZGVyRGFzaExlbmd0aCA9IDY7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDI2NDU3NykK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgcGFpbnRGbG93KGNvbnN0
IFJlbmRlckJsb2NrRmxvdyYgZmwKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBk
ZWJ1Z1NoYWRvdyA9IG51bGxwdHI7CiAgICAgaWYgKGZsb3cuc2V0dGluZ3MoKS5zaW1wbGVMaW5l
TGF5b3V0RGVidWdCb3JkZXJzRW5hYmxlZCgpKSB7Ci0gICAgICAgIGRlYnVnU2hhZG93ID0gbWFr
ZVVuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCgwLCAwKSwgMTAsIDIwLCBTaGFkb3dTdHlsZTo6
Tm9ybWFsLCB0cnVlLCBDb2xvcjo6Z3JlZW4uY29sb3JXaXRoQWxwaGEoMjAwKSk7CisgICAgICAg
IGRlYnVnU2hhZG93ID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCgwLCAwKSwgMTAs
IDIwLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBDb2xvcjo6Z3JlZW4uY29sb3JXaXRoQWxw
aGFCeXRlKDIwMCkpOwogICAgICAgICB0ZXh0UGFpbnRlci5zZXRTaGFkb3coZGVidWdTaGFkb3cu
Z2V0KCkpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJW
aWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5t
bQkocmV2aXNpb24gMjY0NTc3KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJW
aWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3
ICs5MSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFBsYXRmb3IKICAgICBf
bGF5ZXIgPSBhZG9wdE5TKFtbQ0FUaWxlZExheWVyIGFsbG9jXSBpbml0XSk7CiAgICAgW19sYXll
ciBzZXROYW1lOkAiV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheSJdOwogICAgIFtf
bGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBbX3ZpZXcgYm91bmRzXS5zaXplLndpZHRo
LCBbX3ZpZXcgYm91bmRzXS5zaXplLmhlaWdodCldOwotICAgIGF1dG8gdmlld0NvbG9yID0gaXNE
ZXByZWNhdGVkID8gV2ViQ29yZTo6Q29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYSg1MCkgOiBXZWJD
b3JlOjpDb2xvcjo6Ymx1ZS5jb2xvcldpdGhBbHBoYSgzMik7CisgICAgYXV0byB2aWV3Q29sb3Ig
PSBpc0RlcHJlY2F0ZWQgPyBXZWJDb3JlOjpDb2xvcjo6cmVkLmNvbG9yV2l0aEFscGhhQnl0ZSg1
MCkgOiBXZWJDb3JlOjpDb2xvcjo6Ymx1ZS5jb2xvcldpdGhBbHBoYUJ5dGUoMzIpOwogICAgIFtf
bGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3Iodmlld0NvbG9yKV07CiAgICAg
W19sYXllciBzZXRaUG9zaXRpb246OTk5XTsKICAgICBbX2xheWVyIHNldERlbGVnYXRlOnNlbGZd
OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDU3NykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDctMTkgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBDb2xvckJ1aWxkZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yQ2xpZW50OjpzaG93UGFpbnRSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6
ZHJhd1JlY3QpOgorICAgICAgICBVcGRhdGUgZm9yIHJlbmFtZSBmcm9tIGNvbG9yV2l0aEFscGhh
IHRvIGNvbG9yV2l0aEFscGhhQnl0ZS4KKwogMjAyMC0wNy0xOCAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIy
NjQ1NjMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCShyZXZpc2lvbiAyNjQ1NzcpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckNsaWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6
c2hvd1BhaW50UmVjdChjCiAgICAgcGFpbnRMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2lu
dDNEKCkpOwogICAgIHBhaW50TGF5ZXItPnNldFBvc2l0aW9uKHJlY3QubG9jYXRpb24oKSk7CiAg
ICAgcGFpbnRMYXllci0+c2V0U2l6ZShyZWN0LnNpemUoKSk7Ci0gICAgcGFpbnRMYXllci0+c2V0
QmFja2dyb3VuZENvbG9yKENvbG9yOjpyZWQuY29sb3JXaXRoQWxwaGEoNTEpKTsKKyAgICBwYWlu
dExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYUJ5dGUo
NTEpKTsKIAogICAgIEtleWZyYW1lVmFsdWVMaXN0IGZhZGVLZXlmcmFtZXMoQW5pbWF0ZWRQcm9w
ZXJ0eU9wYWNpdHkpOwogICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRB
bmltYXRpb25WYWx1ZT4oMCwgMSkpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjY0NTc3KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDksNyArNTA5LDcgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYQogICAgIGNvbnN0IGludCBib3JkZXJXaWR0aCA9IDE7CiAKICAgICBjb25z
dGV4cHIgYXV0byBvdmVybGF5QmFja2dyb3VuZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNiwg
MjYsIDI2LCA2NCB9OwotICAgIGNvbnN0ZXhwciBhdXRvIHNoYWRvd0NvbG9yID0gQ29sb3I6OmJs
YWNrLmNvbG9yV2l0aEFscGhhKDEyOCk7CisgICAgY29uc3RleHByIGF1dG8gc2hhZG93Q29sb3Ig
PSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGFCeXRlKDEyOCk7CiAKICAgICBJbnRSZWN0IGJv
cmRlckluZmxhdGVkRGlydHlSZWN0ID0gZGlydHlSZWN0OwogICAgIGJvcmRlckluZmxhdGVkRGly
dHlSZWN0LmluZmxhdGUoYm9yZGVyV2lkdGgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>