<?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>210228</bug_id>
          
          <creation_ts>2020-04-08 17:16:21 -0700</creation_ts>
          <short_desc>IPC serialization of enums should serialize std::underlying_type instead of uint64_t</short_desc>
          <delta_ts>2020-04-10 12:22:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>noam</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</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>1639378</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-08 17:16:21 -0700</bug_when>
    <thetext>IPC serialization of enums should serialize std::underlying_type instead of uint64_t</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639379</commentid>
    <comment_count>1</comment_count>
      <attachid>395888</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-08 17:17:57 -0700</bug_when>
    <thetext>Created attachment 395888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639407</commentid>
    <comment_count>2</comment_count>
      <attachid>395895</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-08 18:07:36 -0700</bug_when>
    <thetext>Created attachment 395895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639444</commentid>
    <comment_count>3</comment_count>
      <attachid>395904</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-08 20:15:20 -0700</bug_when>
    <thetext>Created attachment 395904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639450</commentid>
    <comment_count>4</comment_count>
      <attachid>395904</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-08 20:36:22 -0700</bug_when>
    <thetext>Comment on attachment 395904
Patch

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

&gt; Source/WebCore/platform/graphics/ca/PlatformCALayer.cpp:135
&gt; +        graphicsContext.setTextDrawingMode(TextDrawingModeFlags(TextDrawingMode::Fill) | TextDrawingMode::Stroke);

I suggest initializer list syntax here: { TextDrawingMode::Fill, TextDrawingMode::Stroke }.

&gt; Source/WebCore/platform/graphics/cairo/CairoOperations.cpp:318
&gt; +    if (!(textDrawingMode &amp; TextDrawingMode::Fill) || shadow.type() == ShadowBlur::NoShadow)

I suggest using contains here.

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:-1763
&gt; -    switch (mode) {

Not new, but a strange omission that this function does nothing if neither Fill or Stroke is set. Doesn’t set a mode at all. Not even kCGTextInvisible. Nor assert.

&gt; Source/WebCore/rendering/TextPaintStyle.cpp:188
&gt; +        newMode = newMode | TextDrawingMode::Letterpress;

I suggest add() here.

&gt; Source/WebCore/rendering/TextPaintStyle.cpp:193
&gt; +        newMode = newMode | TextDrawingMode::Stroke;

Ditto.

&gt; Source/WebKit/Platform/IPC/Decoder.h:108
&gt; -    template&lt;typename E&gt;
&gt; -    auto decode(E&amp; e) -&gt; std::enable_if_t&lt;std::is_enum&lt;E&gt;::value, bool&gt;
&gt; +    template&lt;typename E, typename = std::enable_if_t&lt;std::is_enum&lt;E&gt;::value&gt;&gt;
&gt; +    bool decode(E&amp; e)

Why this change?

&gt; Source/WebKit/Platform/IPC/Decoder.h:120
&gt; -    template&lt;typename E, std::enable_if_t&lt;std::is_enum&lt;E&gt;::value&gt;* = nullptr&gt;
&gt; +    template&lt;typename E, typename = std::enable_if_t&lt;std::is_enum&lt;E&gt;::value&gt;&gt;

Why this change?

&gt; Source/WebKit/Shared/cf/ArgumentCodersCF.cpp:576
&gt; +    encoder &lt;&lt; static_cast&lt;UInt32&gt;(encoding);

Why UInt32 instead of uint32_t?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639452</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-08 20:44:40 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; &gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:-1763
&gt; &gt; -    switch (mode) {
&gt; 
&gt; Not new, but a strange omission that this function does nothing if neither
&gt; Fill or Stroke is set. Doesn’t set a mode at all. Not even kCGTextInvisible.
&gt; Nor assert.
I&apos;d rather not make a change like this in an IPC patch.  I put a FIXME comment.

&gt; &gt; Source/WebKit/Platform/IPC/Decoder.h:120
&gt; &gt; -    template&lt;typename E, std::enable_if_t&lt;std::is_enum&lt;E&gt;::value&gt;* = nullptr&gt;
&gt; &gt; +    template&lt;typename E, typename = std::enable_if_t&lt;std::is_enum&lt;E&gt;::value&gt;&gt;
&gt; 
&gt; Why this change?
This is a little nicer syntax.  It makes it clearer that we&apos;re not using a pointer for sfinae, we&apos;re using a typename.

&gt; &gt; Source/WebKit/Shared/cf/ArgumentCodersCF.cpp:576
&gt; &gt; +    encoder &lt;&lt; static_cast&lt;UInt32&gt;(encoding);
&gt; 
&gt; Why UInt32 instead of uint32_t?
CFStringEncoding is typedef&apos;ed to UInt32, and since this is in ArgumentCodersCF, I figured it was a good idea to use the same CF type.
I&apos;m also adding a FIXME comment to add parameter validation.  I wasn&apos;t confident enough to do it in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639453</commentid>
    <comment_count>6</comment_count>
      <attachid>395906</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-08 20:45:18 -0700</bug_when>
    <thetext>Created attachment 395906
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639471</commentid>
    <comment_count>7</comment_count>
      <attachid>395906</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-08 21:38:28 -0700</bug_when>
    <thetext>Comment on attachment 395906
Patch

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

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:1772
&gt; +    // FIXME: Should we use kCGTextInvisible if neither fill nor stroke is true?

Or assert this never gets called with that kind of mode?

&gt; Source/WebCore/rendering/TextPaintStyle.cpp:204
&gt; +    if (mode &amp; TextDrawingMode::Fill &amp;&amp; (fillColor != context.fillColor()))

Should eventually change this to contains and remove the extra parentheses here too. Sorry, missed it last time.

&gt; Source/WebCore/rendering/TextPainter.cpp:167
&gt; -                m_context.setTextDrawingMode(textDrawingMode &amp; ~TextModeStroke);
&gt; +                textDrawingMode.remove(TextDrawingMode::Stroke);
&gt; +                m_context.setTextDrawingMode(textDrawingMode);
&gt;                  paintTextWithShadows(shadowToUse, shadowColorFilter, *m_font, textRun, boxRect, textOrigin, startOffset, endOffset, nullAtom(), 0, false);
&gt;                  shadowToUse = nullptr;
&gt;                  m_context.setTextDrawingMode(textDrawingMode);

Don’t land it like this! Just noticed that this messes up the save/restore here. The second call to setTextDrawingMode is supposed to restore it to its old value.

&gt; Source/WebCore/rendering/TextPainter.cpp:174
&gt; -                m_context.setTextDrawingMode(textDrawingMode &amp; ~TextModeFill);
&gt; +                textDrawingMode.remove(TextDrawingMode::Fill);
&gt; +                m_context.setTextDrawingMode(textDrawingMode);
&gt;                  paintTextWithShadows(shadowToUse, shadowColorFilter, *m_font, textRun, boxRect, textOrigin, startOffset, endOffset, nullAtom(), 0, paintStyle.strokeWidth &gt; 0);
&gt;                  shadowToUse = nullptr;
&gt;                  m_context.setTextDrawingMode(textDrawingMode);

Same error here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639497</commentid>
    <comment_count>8</comment_count>
      <attachid>395914</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-08 23:16:37 -0700</bug_when>
    <thetext>Created attachment 395914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639666</commentid>
    <comment_count>9</comment_count>
      <attachid>395914</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-09 09:13:14 -0700</bug_when>
    <thetext>Comment on attachment 395914
Patch

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

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:1773
&gt; +        ASSERT_NOT_REACHED();

It turns out this is reached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639669</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-09 09:18:54 -0700</bug_when>
    <thetext>Committed without adding that assertion to https://trac.webkit.org/changeset/259804/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639671</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-09 09:19:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/61520948&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639734</commentid>
    <comment_count>12</comment_count>
      <attachid>395914</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-09 11:16:00 -0700</bug_when>
    <thetext>Comment on attachment 395914
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:1773
&gt;&gt; +        ASSERT_NOT_REACHED();
&gt; 
&gt; It turns out this is reached.

An interesting mystery, why this is OK. It means in that case that we just leave the text drawing mode as-is. I wonder why that’s good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639803</commentid>
    <comment_count>13</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-04-09 13:00:47 -0700</bug_when>
    <thetext>Reverted r259804 for reason:

Breaks the watchOS build.

Committed r259817: &lt;https://trac.webkit.org/changeset/259817&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639806</commentid>
    <comment_count>14</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-04-09 13:01:29 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #13)
&gt; Reverted r259804 for reason:
&gt; 
&gt; Breaks the watchOS build.
Build log in radar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639969</commentid>
    <comment_count>15</comment_count>
      <attachid>395914</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-09 17:07:16 -0700</bug_when>
    <thetext>Comment on attachment 395914
Patch

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

&gt; Source/WebKit/Shared/cf/ArgumentCodersCF.cpp:576
&gt; +    encoder &lt;&lt; static_cast&lt;UInt32&gt;(encoding);

watchOS didn&apos;t like this.  UInt32 is unsigned long on 32-bit platforms and unsigned int on 64-bit platforms, and there&apos;s no unsigned long encoder.  I think I&apos;ll just cast this to a uint32_t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640002</commentid>
    <comment_count>16</comment_count>
      <attachid>396036</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-09 20:00:34 -0700</bug_when>
    <thetext>Created attachment 396036
patch using uint32_t instead of UInt32</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640033</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-09 21:54:00 -0700</bug_when>
    <thetext>Committed r259845: &lt;https://trac.webkit.org/changeset/259845&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 396036.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640210</commentid>
    <comment_count>18</comment_count>
      <attachid>396036</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-10 09:16:53 -0700</bug_when>
    <thetext>Comment on attachment 396036
patch using uint32_t instead of UInt32

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

&gt; Source/WebCore/rendering/TextPaintStyle.cpp:207
&gt; +    if (mode &amp; TextDrawingMode::Stroke) {

Should switch this one to contains</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640291</commentid>
    <comment_count>19</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-10 11:39:23 -0700</bug_when>
    <thetext>Why?  Wouldn&apos;t that behave the same?  It reads similarly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640302</commentid>
    <comment_count>20</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-10 12:14:27 -0700</bug_when>
    <thetext>It’s arbitrarily different than the one two lines above (and many others in the patch). No strong feeling on which style, but consistency is nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640304</commentid>
    <comment_count>21</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-10 12:22:59 -0700</bug_when>
    <thetext>Ah, ok.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395888</attachid>
            <date>2020-04-08 17:17:57 -0700</date>
            <delta_ts>2020-04-08 18:07:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210228-20200408171756.patch</filename>
            <type>text/plain</type>
            <size>20857</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIwLTA0LTA4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSVBDIHNlcmlh
bGl6YXRpb24gb2YgZW51bXMgc2hvdWxkIHNlcmlhbGl6ZSBzdGQ6OnVuZGVybHlpbmdfdHlwZSBp
bnN0ZWFkIG9mIHVpbnQ2NF90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTAyMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IsIG90aGVyIHRoYW4gbGVzcyBtZW1vcnkg
YW5kIHRpbWUgc3BlbnQgaW4gSVBDIGNvZGUuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGVDaGFuZ2U6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdS
ZXBhaW50SW5kaWNhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtVGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FzY2FkZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVXNlTGV0dGVy
cHJlc3NFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdUZXh0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dXBkYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBhaW50ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OnBhaW50VGV4dEFuZEVtcGhhc2lz
TWFya3NJZk5lZWRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlR3JhZGll
bnQ6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0
dGVybjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZVNvbGlkQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VTb2xpZENvbG9yOjphcHBseVJlc291cmNlKToKKwogMjAyMC0wNC0wNiAgQW50b2luZSBRdWlu
dCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQW5pbWF0aW9uc10gTW92ZSBE
b2N1bWVudC5nZXRBbmltYXRpb25zKCkgdG8gRG9jdW1lbnRPclNoYWRvd1Jvb3QKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU4LDcg
KzU1OCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEkKICAgICAg
ICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGMtPnN0cm9rZVRoaWNr
bmVzcygpKTsKICAgICAgICAgfQogCi0gICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0VGV4dERy
YXdpbmdNb2RlKGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0TW9kZVN0cm9rZSk7CisgICAgICAg
IG1hc2tJbWFnZUNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0RHJhd2luZ01v
ZGU6OkZpbGwgOiBUZXh0RHJhd2luZ01vZGU6OlN0cm9rZSk7CiAKICAgICAgICAgaWYgKHVzZU1h
eFdpZHRoKSB7CiAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZShsb2NhdGlv
biAtIG1hc2tSZWN0LmxvY2F0aW9uKCkpOwpAQCAtNTc4LDcgKzU3OCw3IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEkKICAgICB9CiAjZW5kaWYKIAotICAgIGMtPnNl
dFRleHREcmF3aW5nTW9kZShmaWxsID8gVGV4dE1vZGVGaWxsIDogVGV4dE1vZGVTdHJva2UpOwor
ICAgIGMtPnNldFRleHREcmF3aW5nTW9kZShmaWxsID8gVGV4dERyYXdpbmdNb2RlOjpGaWxsIDog
VGV4dERyYXdpbmdNb2RlOjpTdHJva2UpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpjKTsKICAgICBpZiAodXNlTWF4V2lkdGgpIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAko
cmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmR1bXAoVGUKICAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJzdHJva2UtdGhpY2tuZXNzIiwgbV9zdGF0ZS5zdHJva2VUaGlja25lc3MpOwogCiAgICAg
aWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3
aW5nTW9kZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidGV4dC1kcmF3aW5nLW1v
ZGUiLCBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSk7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
dGV4dC1kcmF3aW5nLW1vZGUiLCBtX3N0YXRlLnRleHREcmF3aW5nTW9kZS50b1JhdygpKTsKIAog
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VDb2xvckNoYW5nZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLWNvbG9yIiwg
bV9zdGF0ZS5zdHJva2VDb2xvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2aXNpb24gMjU5NTc3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk4LDE0ICs5OCwxNCBAQCBjbGFzcyBQYXRoOwogY2xhc3MgVGV4dFJ1bjsKIGNs
YXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCi1lbnVtIFRleHREcmF3aW5nTW9kZSB7Ci0gICAg
VGV4dE1vZGVGaWxsID0gMSA8PCAwLAotICAgIFRleHRNb2RlU3Ryb2tlID0gMSA8PCAxLAorZW51
bSBjbGFzcyBUZXh0RHJhd2luZ01vZGUgOiB1aW50OF90IHsKKyAgICBGaWxsID0gMSA8PCAwLAor
ICAgIFN0cm9rZSA9IDEgPDwgMSwKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCi0gICAgVGV4dE1v
ZGVMZXR0ZXJwcmVzcyA9IDEgPDwgMiwKKyAgICBMZXR0ZXJwcmVzcyA9IDEgPDwgMiwKICNlbmRp
ZgogfTsKLXR5cGVkZWYgdW5zaWduZWQgVGV4dERyYXdpbmdNb2RlRmxhZ3M7Cit1c2luZyBUZXh0
RHJhd2luZ01vZGVGbGFncyA9IE9wdGlvblNldDxUZXh0RHJhd2luZ01vZGU+OwogCiBlbnVtIFN0
cm9rZVN0eWxlIHsKICAgICBOb1N0cm9rZSwKQEAgLTIxMCw3ICsyMTAsNyBAQCBzdHJ1Y3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUgewogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyB7IDAgfTsKICAg
ICBmbG9hdCBzaGFkb3dCbHVyIHsgMCB9OwogCi0gICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4
dERyYXdpbmdNb2RlIHsgVGV4dE1vZGVGaWxsIH07CisgICAgVGV4dERyYXdpbmdNb2RlRmxhZ3Mg
dGV4dERyYXdpbmdNb2RlIHsgVGV4dERyYXdpbmdNb2RlOjpGaWxsIH07CiAKICAgICBDb2xvciBz
dHJva2VDb2xvciB7IENvbG9yOjpibGFjayB9OwogICAgIENvbG9yIGZpbGxDb2xvciB7IENvbG9y
OjpibGFjayB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxh
dGZvcm1DQUxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdS
ZXBhaW50SW5kaWNhdAogICAgIGlmICghcGxhdGZvcm1DQUxheWVyLT5pc09wYXF1ZSgpICYmIHBs
YXRmb3JtQ0FMYXllci0+c3VwcG9ydHNTdWJwaXhlbEFudGlhbGlhc2VkVGV4dCgpICYmIHBsYXRm
b3JtQ0FMYXllci0+YWNjZWxlcmF0ZXNEcmF3aW5nKCkpIHsKICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldFN0cm9rZUNvbG9yKGxpbmVhckdseXBoTWFza091dGxpbmVDb2xvcik7CiAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoNC41KTsKLSAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShUZXh0TW9kZUZpbGwgfCBUZXh0TW9kZVN0cm9r
ZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdp
bmdNb2RlRmxhZ3MoVGV4dERyYXdpbmdNb2RlOjpGaWxsKSB8IFRleHREcmF3aW5nTW9kZTo6U3Ry
b2tlKTsKICAgICB9CiAKICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKHBsYXRmb3Jt
Q0FMYXllci0+YWNjZWxlcmF0ZXNEcmF3aW5nKCkgPyBhY2NlbGVyYXRlZENvbnRleHRMYWJlbENv
bG9yIDogdW5hY2NlbGVyYXRlZENvbnRleHRMYWJlbENvbG9yKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHAJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2MCwxOSAr
MTc2MCwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1UZXh0RHJhCiAgICAg
QVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0
ID0gcGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBUZXh0
TW9kZUZpbGw6CisgICAgCisgICAgYm9vbCBmaWxsID0gbW9kZS5jb250YWlucyhUZXh0RHJhd2lu
Z01vZGU6OkZpbGwpOworICAgIGJvb2wgc3Ryb2tlID0gbW9kZS5jb250YWlucyhUZXh0RHJhd2lu
Z01vZGU6OlN0cm9rZSk7CisgICAgaWYgKGZpbGwgJiYgc3Ryb2tlKQorICAgICAgICBDR0NvbnRl
eHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dEZpbGxTdHJva2UpOworICAgIGVs
c2UgaWYgKGZpbGwpCiAgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0
LCBrQ0dUZXh0RmlsbCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGV4dE1vZGVTdHJva2U6
CisgICAgZWxzZSBpZiAoc3Ryb2tlKQogICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01v
ZGUoY29udGV4dCwga0NHVGV4dFN0cm9rZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGV4
dE1vZGVGaWxsIHwgVGV4dE1vZGVTdHJva2U6Ci0gICAgICAgIENHQ29udGV4dFNldFRleHREcmF3
aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0RmlsbFN0cm9rZSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
Q2FzY2FkZUNvY29hLm1tCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC05MSw3ICs5MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsVmVjdG9yV2l0aEhvcml6b24K
IHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRVc2VMZXR0ZXJwcmVzc0VmZmVjdChjb25zdCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAjaWYgRU5BQkxFKExFVFRFUlBSRVNTKQotICAgIHJl
dHVybiBjb250ZXh0LnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVMZXR0ZXJwcmVzczsKKyAg
ICByZXR1cm4gY29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHREcmF3aW5nTW9kZTo6TGV0
dGVycHJlc3M7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhH
cmFwaGljc0NvbgogICAgICAgICB9CiAgICAgfTsKIAotICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93
ID0gY29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZUZpbGwgJiYgc2hhZG93Q29s
b3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICFwbGF0Zm9ybURhdGEuaXNDb2xvckJpdG1h
cEZvbnQoKSAmJiAoIWNvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBjb250ZXh0
Q1RNLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpICYmICFjb250ZXh0LmlzSW5U
cmFuc3BhcmVuY3lMYXllcigpOworICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gY29udGV4dC50
ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0RHJhd2luZ01vZGU6OkZpbGwgJiYgc2hhZG93Q29sb3Iu
aXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICFwbGF0Zm9ybURhdGEuaXNDb2xvckJpdG1hcEZv
bnQoKSAmJiAoIWNvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBjb250ZXh0Q1RN
LmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpICYmICFjb250ZXh0LmlzSW5UcmFu
c3BhcmVuY3lMYXllcigpOwogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpIHsKICAgICAgICAgLy8g
UGFpbnQgc2ltcGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGluc3RlYWQgb2YgcmVseWluZyBvbiBDRyBz
aGFkb3dzLCB0byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwgYW50aWFsaWFzaW5nLgogICAgICAgICBj
b250ZXh0LmNsZWFyU2hhZG93KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNpb24gMjU5
NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjpkcmF3VGV4dChHCiAgICAgSW50U2l6ZSBjYXB0dXJlU2l6ZSA9IHRo
aXMtPmNhcHR1cmVTaXplKCk7CiAgICAgRmxvYXRQb2ludCB0aW1lTG9jYXRpb24oY2FwdHVyZVNp
emUud2lkdGgoKSAqIC4wNSwgY2FwdHVyZVNpemUuaGVpZ2h0KCkgKiAuMTUpOwogICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSk7Ci0gICAgY29udGV4dC5zZXRUZXh0RHJhd2lu
Z01vZGUoVGV4dE1vZGVGaWxsKTsKKyAgICBjb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShUZXh0
RHJhd2luZ01vZGU6OkZpbGwpOwogICAgIFN0cmluZyBzdHJpbmcgPSBtYWtlU3RyaW5nKHBhZCgn
MCcsIDIsIGhvdXJzKSwgJzonLCBwYWQoJzAnLCAyLCBtaW51dGVzKSwgJzonLCBwYWQoJzAnLCAy
LCBzZWNvbmRzKSwgJy4nLCBwYWQoJzAnLCAzLCBtaWxsaXNlY29uZHMgJSAxMDAwKSk7CiAgICAg
Y29udGV4dC5kcmF3VGV4dCh0aW1lRm9udCwgVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJpbmcpKSks
IHRpbWVMb2NhdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFp
bnRTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQ
YWludFN0eWxlLmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRQYWludFN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDEyICsxODUsMTIg
QEAgdm9pZCB1cGRhdGVHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZQogICAgIFRleHREcmF3
aW5nTW9kZUZsYWdzIG5ld01vZGUgPSBtb2RlOwogI2lmIEVOQUJMRShMRVRURVJQUkVTUykKICAg
ICBpZiAocGFpbnRTdHlsZS51c2VMZXR0ZXJwcmVzc0VmZmVjdCkKLSAgICAgICAgbmV3TW9kZSB8
PSBUZXh0TW9kZUxldHRlcnByZXNzOworICAgICAgICBuZXdNb2RlID0gbmV3TW9kZSB8IFRleHRE
cmF3aW5nTW9kZTo6TGV0dGVycHJlc3M7CiAgICAgZWxzZQotICAgICAgICBuZXdNb2RlICY9IH5U
ZXh0TW9kZUxldHRlcnByZXNzOworICAgICAgICBuZXdNb2RlLnJlbW92ZShUZXh0RHJhd2luZ01v
ZGU6OkxldHRlcnByZXNzKTsKICNlbmRpZgogICAgIGlmIChwYWludFN0eWxlLnN0cm9rZVdpZHRo
ID4gMCAmJiBwYWludFN0eWxlLnN0cm9rZUNvbG9yLmlzVmlzaWJsZSgpKQotICAgICAgICBuZXdN
b2RlIHw9IFRleHRNb2RlU3Ryb2tlOworICAgICAgICBuZXdNb2RlID0gbmV3TW9kZSB8IFRleHRE
cmF3aW5nTW9kZTo6U3Ryb2tlOwogICAgIGlmIChtb2RlICE9IG5ld01vZGUpIHsKICAgICAgICAg
Y29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUobmV3TW9kZSk7CiAgICAgICAgIG1vZGUgPSBuZXdN
b2RlOwpAQCAtMjAxLDEwICsyMDEsMTAgQEAgdm9pZCB1cGRhdGVHcmFwaGljc0NvbnRleHQoR3Jh
cGhpY3NDb250ZQogI2VuZGlmCiAKICAgICBDb2xvciBmaWxsQ29sb3IgPSBmaWxsQ29sb3JUeXBl
ID09IFVzZUVtcGhhc2lzTWFya0NvbG9yID8gcGFpbnRTdHlsZS5lbXBoYXNpc01hcmtDb2xvciA6
IHBhaW50U3R5bGUuZmlsbENvbG9yOwotICAgIGlmIChtb2RlICYgVGV4dE1vZGVGaWxsICYmIChm
aWxsQ29sb3IgIT0gY29udGV4dC5maWxsQ29sb3IoKSkpCisgICAgaWYgKG1vZGUgJiBUZXh0RHJh
d2luZ01vZGU6OkZpbGwgJiYgKGZpbGxDb2xvciAhPSBjb250ZXh0LmZpbGxDb2xvcigpKSkKICAg
ICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yKTsKIAotICAgIGlmIChtb2RlICYg
VGV4dE1vZGVTdHJva2UpIHsKKyAgICBpZiAobW9kZSAmIFRleHREcmF3aW5nTW9kZTo6U3Ryb2tl
KSB7CiAgICAgICAgIGlmIChwYWludFN0eWxlLnN0cm9rZUNvbG9yICE9IGNvbnRleHQuc3Ryb2tl
Q29sb3IoKSkKICAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IocGFpbnRTdHlsZS5z
dHJva2VDb2xvcik7CiAgICAgICAgIGlmIChwYWludFN0eWxlLnN0cm9rZVdpZHRoICE9IGNvbnRl
eHQuc3Ryb2tlVGhpY2tuZXNzKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dFBhaW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
UGFpbnRlci5jcHAJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0UGFpbnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MCwxMyArMTYwLDE1IEBAIHZv
aWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dEFuZEVtcGhhc2lzTWEKICAgICAgICAgZm9yIChhdXRv
IG9yZGVyIDogcGFpbnRPcmRlcikgewogICAgICAgICAgICAgc3dpdGNoIChvcmRlcikgewogICAg
ICAgICAgICAgY2FzZSBQYWludFR5cGU6OkZpbGw6Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0
LnNldFRleHREcmF3aW5nTW9kZSh0ZXh0RHJhd2luZ01vZGUgJiB+VGV4dE1vZGVTdHJva2UpOwor
ICAgICAgICAgICAgICAgIHRleHREcmF3aW5nTW9kZS5yZW1vdmUoVGV4dERyYXdpbmdNb2RlOjpT
dHJva2UpOworICAgICAgICAgICAgICAgIG1fY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUodGV4
dERyYXdpbmdNb2RlKTsKICAgICAgICAgICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyhzaGFk
b3dUb1VzZSwgc2hhZG93Q29sb3JGaWx0ZXIsICptX2ZvbnQsIHRleHRSdW4sIGJveFJlY3QsIHRl
eHRPcmlnaW4sIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIG51bGxBdG9tKCksIDAsIGZhbHNlKTsK
ICAgICAgICAgICAgICAgICBzaGFkb3dUb1VzZSA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAg
bV9jb250ZXh0LnNldFRleHREcmF3aW5nTW9kZSh0ZXh0RHJhd2luZ01vZGUpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYWludFR5cGU6OlN0cm9rZToKLSAgICAg
ICAgICAgICAgICBtX2NvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9kZSAm
IH5UZXh0TW9kZUZpbGwpOworICAgICAgICAgICAgICAgIHRleHREcmF3aW5nTW9kZS5yZW1vdmUo
VGV4dERyYXdpbmdNb2RlOjpGaWxsKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQuc2V0VGV4
dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9kZSk7CiAgICAgICAgICAgICAgICAgcGFpbnRUZXh0
V2l0aFNoYWRvd3Moc2hhZG93VG9Vc2UsIHNoYWRvd0NvbG9yRmlsdGVyLCAqbV9mb250LCB0ZXh0
UnVuLCBib3hSZWN0LCB0ZXh0T3JpZ2luLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBudWxsQXRv
bSgpLCAwLCBwYWludFN0eWxlLnN0cm9rZVdpZHRoID4gMCk7CiAgICAgICAgICAgICAgICAgc2hh
ZG93VG9Vc2UgPSBudWxscHRyOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC5zZXRUZXh0RHJh
d2luZ01vZGUodGV4dERyYXdpbmdNb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAkocmV2
aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUdyYWRpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDcgKzE2Nyw3IEBAIGJv
b2wgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXMKICAgICAgICAgfQogI2VuZGlm
CiAKLSAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKHJlc291cmNlTW9kZS5jb250
YWlucyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6OkFwcGx5VG9GaWxsKSA/IFRleHRNb2RlRmlsbCA6
IFRleHRNb2RlU3Ryb2tlKTsKKyAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKHJl
c291cmNlTW9kZS5jb250YWlucyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6OkFwcGx5VG9GaWxsKSA/
IFRleHREcmF3aW5nTW9kZTo6RmlsbCA6IFRleHREcmF3aW5nTW9kZTo6U3Ryb2tlKTsKICAgICB9
CiAKICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZS5zdmdTdHlsZSgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODUsMTMgKzE4NSwxMyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlUGF0dGVy
bjo6YXBwbHlSZXNvCiAKICAgICBpZiAocmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jl
c291cmNlTW9kZTo6QXBwbHlUb1RleHQpKSB7CiAgICAgICAgIGlmIChyZXNvdXJjZU1vZGUuY29u
dGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvRmlsbCkpIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShUZXh0TW9kZUZpbGwpOworICAgICAgICAgICAg
Y29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZTo6RmlsbCk7CiAKICNp
ZiBVU0UoQ0cpCiAgICAgICAgICAgICBjb250ZXh0LT5hcHBseUZpbGxQYXR0ZXJuKCk7CiAjZW5k
aWYKICAgICAgICAgfSBlbHNlIGlmIChyZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVz
b3VyY2VNb2RlOjpBcHBseVRvU3Ryb2tlKSkgewotICAgICAgICAgICAgY29udGV4dC0+c2V0VGV4
dERyYXdpbmdNb2RlKFRleHRNb2RlU3Ryb2tlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFRl
eHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGU6OlN0cm9rZSk7CiAKICNpZiBVU0UoQ0cpCiAg
ICAgICAgICAgICBjb250ZXh0LT5hcHBseVN0cm9rZVBhdHRlcm4oKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
U29saWRDb2xvci5jcHAJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTEsNyArNTEsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlU29saWRDb2xvcjo6YXBwbHlS
CiAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsUnVsZShzdmdTdHlsZS5maWxsUnVsZSgpKTsK
IAogICAgICAgICBpZiAocmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9k
ZTo6QXBwbHlUb1RleHQpKQotICAgICAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2Rl
KFRleHRNb2RlRmlsbCk7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUo
VGV4dERyYXdpbmdNb2RlOjpGaWxsKTsKICAgICB9IGVsc2UgaWYgKHJlc291cmNlTW9kZS5jb250
YWlucyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6OkFwcGx5VG9TdHJva2UpKSB7CiAgICAgICAgIC8v
IFdoZW4gcmVuZGVyaW5nIHRoZSBtYXNrIGZvciBhIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciwg
dGhlIHN0cm9rZSBjb2RlIHBhdGggaXMgbmV2ZXIgaGl0LgogICAgICAgICBBU1NFUlQoIWlzUmVu
ZGVyaW5nTWFzayk7CkBAIC02MSw3ICs2MSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VTb2xp
ZENvbG9yOjphcHBseVIKICAgICAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6YXBwbHlTdHJva2VTdHls
ZVRvQ29udGV4dChjb250ZXh0LCBzdHlsZSwgcmVuZGVyZXIpOwogCiAgICAgICAgIGlmIChyZXNv
dXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvVGV4dCkpCi0g
ICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dE1vZGVTdHJva2UpOwor
ICAgICAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZTo6
U3Ryb2tlKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNTk3NjcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE5IEBACisyMDIwLTA0LTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgSVBDIHNlcmlhbGl6YXRpb24gb2YgZW51bXMgc2hvdWxk
IHNlcmlhbGl6ZSBzdGQ6OnVuZGVybHlpbmdfdHlwZSBpbnN0ZWFkIG9mIHVpbnQ2NF90CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAyMjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmg6CisgICAgICAgIChJUEM6OkRlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkRlY29kZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGVF
bnVtKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5oOgorICAgICAgICAqIFNoYXJl
ZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcDoKKyAgICAgICAgKElQQzo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6ZGVjb2RlKToKKwogMjAyMC0wNC0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgSGFuZGxlIFtQREZEb2N1bWVudCBpbml0V2l0aFByb3ZpZGVy
Ol0gcmV0dXJuaW5nIG5pbApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAko
cmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMTAgKzEwNCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBk
ZWNvZGUoZG91YmxlJik7CiAgICAgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxkb3VibGU+
Jik7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFPgotICAgIGF1dG8gZGVjb2RlKEUmIGUpIC0+
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZSwgYm9vbD4KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBFLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVt
PEU+Ojp2YWx1ZT4+CisgICAgYm9vbCBkZWNvZGUoRSYgZSkKICAgICB7Ci0gICAgICAgIHVpbnQ2
NF90IHZhbHVlOworICAgICAgICB0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlw
ZSB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGUodmFsdWUpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICBpZiAoIWlzVmFsaWRFbnVtPEU+KHZhbHVlKSkKQEAgLTExNywxMCAr
MTE3LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVl
PiogPSBudWxscHRyPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lID0gc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPj4KICAgICBEZWNvZGVyJiBvcGVyYXRv
cj4+KE9wdGlvbmFsPEU+JiBvcHRpb25hbCkKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiB2YWx1ZTsKKyAgICAgICAgT3B0aW9uYWw8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5
cGU8RT46OnR5cGU+IHZhbHVlOwogICAgICAgICAqdGhpcyA+PiB2YWx1ZTsKICAgICAgICAgaWYg
KHZhbHVlICYmIGlzVmFsaWRFbnVtPEU+KCp2YWx1ZSkpCiAgICAgICAgICAgICBvcHRpb25hbCA9
IHN0YXRpY19jYXN0PEU+KCp2YWx1ZSk7CkBAIC0xMjksMTIgKzEyOSwxMCBAQCBwdWJsaWM6CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIGRlY29kZUVudW0oVCYgcmVzdWx0KQogICAg
IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPD0gOCwgIkVudW0gdHlwZSBUIG11
c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMhIik7Ci0KLSAgICAgICAgdWludDY0X3QgdmFs
dWU7CisgICAgICAgIHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPFQ+Ojp0eXBlIHZhbHVl
OwogICAgICAgICBpZiAoIWRlY29kZSh2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFQ+KHZhbHVlKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRW5jb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Vu
Y29kZXIuaAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RW5jb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw5ICs2MSw3IEBAIHB1YmxpYzoKIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgZW5jb2RlRW51bShUIHQpCiAgICAgewotICAgICAg
ICBDT01QSUxFX0FTU0VSVChzaXplb2YoVCkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgZW51bV90eXBl
X211c3Rfbm90X2JlX2xhcmdlcl90aGFuXzY0X2JpdHMpOwotCi0gICAgICAgIGVuY29kZShzdGF0
aWNfY2FzdDx1aW50NjRfdD4odCkpOworICAgICAgICBlbmNvZGUoc3RhdGljX2Nhc3Q8dHlwZW5h
bWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8VD46OnR5cGU+KHQpKTsKICAgICB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08dHlwZW5hbWUg
c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4+Ojp2YWx1ZT4q
ID0gbnVsbHB0cj4KQEAgLTc1LDcgKzczLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0
cj4KICAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KFQmJiB0KQogICAgIHsKLSAgICAgICAgZW5jb2Rl
KHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0KSk7CisgICAgICAgIGVuY29kZShzdGF0aWNfY2FzdDx0
eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxUPjo6dHlwZT4odCkpOwogICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgfQogCkBAIC0xMTMsMTAgKzExMSw4IEBAIHByaXZhdGU6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRT4KICAgICBhdXRvIGVuY29kZShFIHZhbHVlKSAtPiBzdGQ6OmVuYWJs
ZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWU+CiAgICAgewotICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihFKSA8PSBzaXplb2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJl
IGxhcmdlciB0aGFuIDY0IGJpdHMuIik7Ci0KLSAgICAgICAgQVNTRVJUKGlzVmFsaWRFbnVtPEU+
KHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSkpKTsKLSAgICAgICAgZW5jb2RlKHN0YXRpY19j
YXN0PHVpbnQ2NF90Pih2YWx1ZSkpOworICAgICAgICBBU1NFUlQoaXNWYWxpZEVudW08RT4oc3Rh
dGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGU+KHZhbHVlKSkp
OworICAgICAgICBlbmNvZGUoc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5
cGU8RT46OnR5cGU+KHZhbHVlKSk7CiAgICAgfQogCiAgICAgdm9pZCBlbmNvZGVIZWFkZXIoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCShy
ZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVy
c0NGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDkxLDcgKzQ5MSw3IEBAIHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIENGTnVtYmVyUmUKICAgICBib29sIHJlc3VsdCA9IENGTnVtYmVyR2V0
VmFsdWUobnVtYmVyLCBudW1iZXJUeXBlLCBidWZmZXIuZGF0YSgpKTsKICAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0KTsKIAotICAgIGVuY29kZXIuZW5jb2RlRW51bShudW1iZXJUeXBl
KTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG51bWJlclR5cGUpOwogICAg
IGVuY29kZXIgPDwgSVBDOjpEYXRhUmVmZXJlbmNlKGJ1ZmZlcik7CiB9CiAKQEAgLTUzNyw5ICs1
MzcsMTEgQEAgc3RhdGljIHNpemVfdCBzaXplRm9yTnVtYmVyVHlwZShDRk51bWJlcgogCiBib29s
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+JiByZXN1bHQp
CiB7Ci0gICAgQ0ZOdW1iZXJUeXBlIG51bWJlclR5cGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZUVudW0obnVtYmVyVHlwZSkpCisgICAgT3B0aW9uYWw8dWludDhfdD4gbnVtYmVyVHlwZUZyb21J
UEM7CisgICAgZGVjb2RlciA+PiBudW1iZXJUeXBlRnJvbUlQQzsKKyAgICBpZiAoIW51bWJlclR5
cGVGcm9tSVBDIHx8ICpudW1iZXJUeXBlRnJvbUlQQyA+IGtDRk51bWJlck1heFR5cGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvIG51bWJlclR5cGUgPSBzdGF0aWNfY2FzdDxDRk51
bWJlclR5cGU+KCpudW1iZXJUeXBlRnJvbUlQQyk7CiAKICAgICBJUEM6OkRhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQpA
QCAtNTcxLDE1ICs1NzMsMTYgQEAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgQ0ZTdHJp
bmdSZQogICAgIG51bUNvbnZlcnRlZEJ5dGVzID0gQ0ZTdHJpbmdHZXRCeXRlcyhzdHJpbmcsIHJh
bmdlLCBlbmNvZGluZywgMCwgZmFsc2UsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksICZi
dWZmZXJMZW5ndGgpOwogICAgIEFTU0VSVChudW1Db252ZXJ0ZWRCeXRlcyA9PSBsZW5ndGgpOwog
Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKGVuY29kaW5nKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRp
Y19jYXN0PFVJbnQzMj4oZW5jb2RpbmcpOwogICAgIGVuY29kZXIgPDwgSVBDOjpEYXRhUmVmZXJl
bmNlKGJ1ZmZlcik7CiB9CiAKIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4mIHJlc3VsdCkKIHsKLSAgICBDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5n
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKGVuY29kaW5nKSkKKyAgICBVSW50MzIgZW5j
b2RpbmdGcm9tSVBDOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW5jb2RpbmdGcm9tSVBDKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gZW5jb2RpbmcgPSBzdGF0aWNfY2FzdDxD
RlN0cmluZ0VuY29kaW5nPihlbmNvZGluZ0Zyb21JUEMpOwogCiAgICAgaWYgKCFDRlN0cmluZ0lz
RW5jb2RpbmdBdmFpbGFibGUoZW5jb2RpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395895</attachid>
            <date>2020-04-08 18:07:36 -0700</date>
            <delta_ts>2020-04-08 20:15:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210228-20200408180735.patch</filename>
            <type>text/plain</type>
            <size>22218</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIwLTA0LTA4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSVBDIHNlcmlh
bGl6YXRpb24gb2YgZW51bXMgc2hvdWxkIHNlcmlhbGl6ZSBzdGQ6OnVuZGVybHlpbmdfdHlwZSBp
bnN0ZWFkIG9mIHVpbnQ2NF90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTAyMjgKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IsIG90aGVyIHRoYW4gbGVzcyBtZW1vcnkgYW5k
IHRpbWUgc3BlbnQgaW4gSVBDIGNvZGUuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGVDaGFuZ2U6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdSZXBh
aW50SW5kaWNhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtVGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q2FzY2FkZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVXNlTGV0dGVycHJl
c3NFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdUZXh0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBk
YXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OnBhaW50VGV4dEFuZEVtcGhhc2lzTWFy
a3NJZk5lZWRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6
OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVy
bjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZVNvbGlkQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VT
b2xpZENvbG9yOjphcHBseVJlc291cmNlKToKKwogMjAyMC0wNC0wNiAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQW5pbWF0aW9uc10gTW92ZSBEb2N1
bWVudC5nZXRBbmltYXRpb25zKCkgdG8gRG9jdW1lbnRPclNoYWRvd1Jvb3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU4LDcgKzU1
OCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEkKICAgICAgICAg
ICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGMtPnN0cm9rZVRoaWNrbmVz
cygpKTsKICAgICAgICAgfQogCi0gICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0VGV4dERyYXdp
bmdNb2RlKGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0TW9kZVN0cm9rZSk7CisgICAgICAgIG1h
c2tJbWFnZUNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0RHJhd2luZ01vZGU6
OkZpbGwgOiBUZXh0RHJhd2luZ01vZGU6OlN0cm9rZSk7CiAKICAgICAgICAgaWYgKHVzZU1heFdp
ZHRoKSB7CiAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZShsb2NhdGlvbiAt
IG1hc2tSZWN0LmxvY2F0aW9uKCkpOwpAQCAtNTc4LDcgKzU3OCw3IEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEkKICAgICB9CiAjZW5kaWYKIAotICAgIGMtPnNldFRl
eHREcmF3aW5nTW9kZShmaWxsID8gVGV4dE1vZGVGaWxsIDogVGV4dE1vZGVTdHJva2UpOworICAg
IGMtPnNldFRleHREcmF3aW5nTW9kZShmaWxsID8gVGV4dERyYXdpbmdNb2RlOjpGaWxsIDogVGV4
dERyYXdpbmdNb2RlOjpTdHJva2UpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpjKTsKICAgICBpZiAodXNlTWF4V2lkdGgpIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2
aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmR1bXAoVGUKICAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJzdHJva2UtdGhpY2tuZXNzIiwgbV9zdGF0ZS5zdHJva2VUaGlja25lc3MpOwogCiAgICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5n
TW9kZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidGV4dC1kcmF3aW5nLW1vZGUi
LCBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSk7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidGV4
dC1kcmF3aW5nLW1vZGUiLCBtX3N0YXRlLnRleHREcmF3aW5nTW9kZS50b1JhdygpKTsKIAogICAg
IGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VD
b2xvckNoYW5nZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLWNvbG9yIiwgbV9z
dGF0ZS5zdHJva2VDb2xvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk4LDE0ICs5OCwxNCBAQCBjbGFzcyBQYXRoOwogY2xhc3MgVGV4dFJ1bjsKIGNsYXNz
IFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCi1lbnVtIFRleHREcmF3aW5nTW9kZSB7Ci0gICAgVGV4
dE1vZGVGaWxsID0gMSA8PCAwLAotICAgIFRleHRNb2RlU3Ryb2tlID0gMSA8PCAxLAorZW51bSBj
bGFzcyBUZXh0RHJhd2luZ01vZGUgOiB1aW50OF90IHsKKyAgICBGaWxsID0gMSA8PCAwLAorICAg
IFN0cm9rZSA9IDEgPDwgMSwKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCi0gICAgVGV4dE1vZGVM
ZXR0ZXJwcmVzcyA9IDEgPDwgMiwKKyAgICBMZXR0ZXJwcmVzcyA9IDEgPDwgMiwKICNlbmRpZgog
fTsKLXR5cGVkZWYgdW5zaWduZWQgVGV4dERyYXdpbmdNb2RlRmxhZ3M7Cit1c2luZyBUZXh0RHJh
d2luZ01vZGVGbGFncyA9IE9wdGlvblNldDxUZXh0RHJhd2luZ01vZGU+OwogCiBlbnVtIFN0cm9r
ZVN0eWxlIHsKICAgICBOb1N0cm9rZSwKQEAgLTIxMCw3ICsyMTAsNyBAQCBzdHJ1Y3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUgewogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyB7IDAgfTsKICAgICBm
bG9hdCBzaGFkb3dCbHVyIHsgMCB9OwogCi0gICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERy
YXdpbmdNb2RlIHsgVGV4dE1vZGVGaWxsIH07CisgICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4
dERyYXdpbmdNb2RlIHsgVGV4dERyYXdpbmdNb2RlOjpGaWxsIH07CiAKICAgICBDb2xvciBzdHJv
a2VDb2xvciB7IENvbG9yOjpibGFjayB9OwogICAgIENvbG9yIGZpbGxDb2xvciB7IENvbG9yOjpi
bGFjayB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZv
cm1DQUxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdSZXBh
aW50SW5kaWNhdAogICAgIGlmICghcGxhdGZvcm1DQUxheWVyLT5pc09wYXF1ZSgpICYmIHBsYXRm
b3JtQ0FMYXllci0+c3VwcG9ydHNTdWJwaXhlbEFudGlhbGlhc2VkVGV4dCgpICYmIHBsYXRmb3Jt
Q0FMYXllci0+YWNjZWxlcmF0ZXNEcmF3aW5nKCkpIHsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LnNldFN0cm9rZUNvbG9yKGxpbmVhckdseXBoTWFza091dGxpbmVDb2xvcik7CiAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoNC41KTsKLSAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LnNldFRleHREcmF3aW5nTW9kZShUZXh0TW9kZUZpbGwgfCBUZXh0TW9kZVN0cm9rZSk7
CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdN
b2RlRmxhZ3MoVGV4dERyYXdpbmdNb2RlOjpGaWxsKSB8IFRleHREcmF3aW5nTW9kZTo6U3Ryb2tl
KTsKICAgICB9CiAKICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKHBsYXRmb3JtQ0FM
YXllci0+YWNjZWxlcmF0ZXNEcmF3aW5nKCkgPyBhY2NlbGVyYXRlZENvbnRleHRMYWJlbENvbG9y
IDogdW5hY2NlbGVyYXRlZENvbnRleHRMYWJlbENvbG9yKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2MCwxOSArMTc2
MCwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1UZXh0RHJhCiAgICAgQVNT
RVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0g
cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBUZXh0TW9k
ZUZpbGw6CisgICAgCisgICAgYm9vbCBmaWxsID0gbW9kZS5jb250YWlucyhUZXh0RHJhd2luZ01v
ZGU6OkZpbGwpOworICAgIGJvb2wgc3Ryb2tlID0gbW9kZS5jb250YWlucyhUZXh0RHJhd2luZ01v
ZGU6OlN0cm9rZSk7CisgICAgaWYgKGZpbGwgJiYgc3Ryb2tlKQorICAgICAgICBDR0NvbnRleHRT
ZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dEZpbGxTdHJva2UpOworICAgIGVsc2Ug
aWYgKGZpbGwpCiAgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBr
Q0dUZXh0RmlsbCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGV4dE1vZGVTdHJva2U6Cisg
ICAgZWxzZSBpZiAoc3Ryb2tlKQogICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUo
Y29udGV4dCwga0NHVGV4dFN0cm9rZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGV4dE1v
ZGVGaWxsIHwgVGV4dE1vZGVTdHJva2U6Ci0gICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5n
TW9kZShjb250ZXh0LCBrQ0dUZXh0RmlsbFN0cm9rZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2Fz
Y2FkZUNvY29hLm1tCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05
MSw3ICs5MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsVmVjdG9yV2l0aEhvcml6b24KIHN0
YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRVc2VMZXR0ZXJwcmVzc0VmZmVjdChjb25zdCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCiB7CiAjaWYgRU5BQkxFKExFVFRFUlBSRVNTKQotICAgIHJldHVy
biBjb250ZXh0LnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVMZXR0ZXJwcmVzczsKKyAgICBy
ZXR1cm4gY29udGV4dC50ZXh0RHJhd2luZ01vZGUoKS5jb250YWlucyhUZXh0RHJhd2luZ01vZGU6
OkxldHRlcnByZXNzKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI3OCw3ICsyNzgsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhzKEdyYXBoaWNzQ29uCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgYm9vbCBoYXNTaW1wbGVT
aGFkb3cgPSBjb250ZXh0LnRleHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmlsbCAmJiBzaGFk
b3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgIXBsYXRmb3JtRGF0YS5pc0NvbG9y
Qml0bWFwRm9udCgpICYmICghY29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGNv
bnRleHRDVE0uaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSkgJiYgIWNvbnRleHQu
aXNJblRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBjb250
ZXh0LnRleHREcmF3aW5nTW9kZSgpID09IFRleHREcmF3aW5nTW9kZTo6RmlsbCAmJiBzaGFkb3dD
b2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgIXBsYXRmb3JtRGF0YS5pc0NvbG9yQml0
bWFwRm9udCgpICYmICghY29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGNvbnRl
eHRDVE0uaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSkgJiYgIWNvbnRleHQuaXNJ
blRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykgewogICAgICAg
ICAvLyBQYWludCBzaW1wbGUgc2hhZG93cyBvdXJzZWx2ZXMgaW5zdGVhZCBvZiByZWx5aW5nIG9u
IENHIHNoYWRvd3MsIHRvIGF2b2lkIGxvc2luZyBzdWJwaXhlbCBhbnRpYWxpYXNpbmcuCiAgICAg
ICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAkod29ya2luZyBjb3B5KQpAQCAt
NDE2LDcgKzQxNiw3IEBAIHZvaWQgU2V0U3RhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSAK
ICAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VUaGlja25lc3M7CiAKICAgICBpZiAoY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNo
YW5nZSkpCi0gICAgICAgIGVuY29kZXIuZW5jb2RlRW51bShzdGF0ZS50ZXh0RHJhd2luZ01vZGUp
OworICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnRleHREcmF3aW5nTW9kZTsKIAogICAgIGlmIChj
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFu
Z2UpKQogICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9rZUNvbG9yOwpAQCAtNTY4LDExICs1
NjgsMTIgQEAgT3B0aW9uYWw8UmVmPFNldFN0YXRlPj4gU2V0U3RhdGU6OmRlY29kZQogICAgIH0K
IAogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKSB7Ci0gICAgICAgIFRleHREcmF3aW5n
TW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVu
dW0odGV4dERyYXdpbmdNb2RlKSkKKyAgICAgICAgT3B0aW9uYWw8VGV4dERyYXdpbmdNb2RlRmxh
Z3M+IHRleHREcmF3aW5nTW9kZTsKKyAgICAgICAgZGVjb2RlciA+PiB0ZXh0RHJhd2luZ01vZGU7
CisgICAgICAgIGlmICghdGV4dERyYXdpbmdNb2RlKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIAotICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnRleHREcmF3aW5nTW9kZSA9
IHRleHREcmF3aW5nTW9kZTsKKyAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS50ZXh0RHJhd2lu
Z01vZGUgPSBXVEZNb3ZlKCp0ZXh0RHJhd2luZ01vZGUpOwogICAgIH0KIAogICAgIGlmIChzdGF0
ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VDb2xvckNoYW5nZSkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAyNTk1Nzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUzLDcgKzM1Myw3IEBAIHZvaWQgTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmRyYXdUZXh0KEcKICAgICBJbnRTaXplIGNhcHR1cmVTaXplID0gdGhpcy0+
Y2FwdHVyZVNpemUoKTsKICAgICBGbG9hdFBvaW50IHRpbWVMb2NhdGlvbihjYXB0dXJlU2l6ZS53
aWR0aCgpICogLjA1LCBjYXB0dXJlU2l6ZS5oZWlnaHQoKSAqIC4xNSk7CiAgICAgY29udGV4dC5z
ZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlKTsKLSAgICBjb250ZXh0LnNldFRleHREcmF3aW5nTW9k
ZShUZXh0TW9kZUZpbGwpOworICAgIGNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3
aW5nTW9kZTo6RmlsbCk7CiAgICAgU3RyaW5nIHN0cmluZyA9IG1ha2VTdHJpbmcocGFkKCcwJywg
MiwgaG91cnMpLCAnOicsIHBhZCgnMCcsIDIsIG1pbnV0ZXMpLCAnOicsIHBhZCgnMCcsIDIsIHNl
Y29uZHMpLCAnLicsIHBhZCgnMCcsIDMsIG1pbGxpc2Vjb25kcyAlIDEwMDApKTsKICAgICBjb250
ZXh0LmRyYXdUZXh0KHRpbWVGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgdGlt
ZUxvY2F0aW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0
eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50
U3R5bGUuY3BwCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dFBhaW50U3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsMTIgKzE4NSwxMiBAQCB2
b2lkIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRlCiAgICAgVGV4dERyYXdpbmdN
b2RlRmxhZ3MgbmV3TW9kZSA9IG1vZGU7CiAjaWYgRU5BQkxFKExFVFRFUlBSRVNTKQogICAgIGlm
IChwYWludFN0eWxlLnVzZUxldHRlcnByZXNzRWZmZWN0KQotICAgICAgICBuZXdNb2RlIHw9IFRl
eHRNb2RlTGV0dGVycHJlc3M7CisgICAgICAgIG5ld01vZGUgPSBuZXdNb2RlIHwgVGV4dERyYXdp
bmdNb2RlOjpMZXR0ZXJwcmVzczsKICAgICBlbHNlCi0gICAgICAgIG5ld01vZGUgJj0gflRleHRN
b2RlTGV0dGVycHJlc3M7CisgICAgICAgIG5ld01vZGUucmVtb3ZlKFRleHREcmF3aW5nTW9kZTo6
TGV0dGVycHJlc3MpOwogI2VuZGlmCiAgICAgaWYgKHBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAw
ICYmIHBhaW50U3R5bGUuc3Ryb2tlQ29sb3IuaXNWaXNpYmxlKCkpCi0gICAgICAgIG5ld01vZGUg
fD0gVGV4dE1vZGVTdHJva2U7CisgICAgICAgIG5ld01vZGUgPSBuZXdNb2RlIHwgVGV4dERyYXdp
bmdNb2RlOjpTdHJva2U7CiAgICAgaWYgKG1vZGUgIT0gbmV3TW9kZSkgewogICAgICAgICBjb250
ZXh0LnNldFRleHREcmF3aW5nTW9kZShuZXdNb2RlKTsKICAgICAgICAgbW9kZSA9IG5ld01vZGU7
CkBAIC0yMDEsMTAgKzIwMSwxMCBAQCB2b2lkIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChHcmFwaGlj
c0NvbnRlCiAjZW5kaWYKIAogICAgIENvbG9yIGZpbGxDb2xvciA9IGZpbGxDb2xvclR5cGUgPT0g
VXNlRW1waGFzaXNNYXJrQ29sb3IgPyBwYWludFN0eWxlLmVtcGhhc2lzTWFya0NvbG9yIDogcGFp
bnRTdHlsZS5maWxsQ29sb3I7Ci0gICAgaWYgKG1vZGUgJiBUZXh0TW9kZUZpbGwgJiYgKGZpbGxD
b2xvciAhPSBjb250ZXh0LmZpbGxDb2xvcigpKSkKKyAgICBpZiAobW9kZSAmIFRleHREcmF3aW5n
TW9kZTo6RmlsbCAmJiAoZmlsbENvbG9yICE9IGNvbnRleHQuZmlsbENvbG9yKCkpKQogICAgICAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IpOwogCi0gICAgaWYgKG1vZGUgJiBUZXh0
TW9kZVN0cm9rZSkgeworICAgIGlmIChtb2RlICYgVGV4dERyYXdpbmdNb2RlOjpTdHJva2UpIHsK
ICAgICAgICAgaWYgKHBhaW50U3R5bGUuc3Ryb2tlQ29sb3IgIT0gY29udGV4dC5zdHJva2VDb2xv
cigpKQogICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihwYWludFN0eWxlLnN0cm9r
ZUNvbG9yKTsKICAgICAgICAgaWYgKHBhaW50U3R5bGUuc3Ryb2tlV2lkdGggIT0gY29udGV4dC5z
dHJva2VUaGlja25lc3MoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFp
bnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWlu
dGVyLmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRQYWludGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDEzICsxNjAsMTUgQEAgdm9pZCBU
ZXh0UGFpbnRlcjo6cGFpbnRUZXh0QW5kRW1waGFzaXNNYQogICAgICAgICBmb3IgKGF1dG8gb3Jk
ZXIgOiBwYWludE9yZGVyKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG9yZGVyKSB7CiAgICAgICAg
ICAgICBjYXNlIFBhaW50VHlwZTo6RmlsbDoKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQuc2V0
VGV4dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9kZSAmIH5UZXh0TW9kZVN0cm9rZSk7CisgICAg
ICAgICAgICAgICAgdGV4dERyYXdpbmdNb2RlLnJlbW92ZShUZXh0RHJhd2luZ01vZGU6OlN0cm9r
ZSk7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LnNldFRleHREcmF3aW5nTW9kZSh0ZXh0RHJh
d2luZ01vZGUpOwogICAgICAgICAgICAgICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKHNoYWRvd1Rv
VXNlLCBzaGFkb3dDb2xvckZpbHRlciwgKm1fZm9udCwgdGV4dFJ1biwgYm94UmVjdCwgdGV4dE9y
aWdpbiwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbnVsbEF0b20oKSwgMCwgZmFsc2UpOwogICAg
ICAgICAgICAgICAgIHNoYWRvd1RvVXNlID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBtX2Nv
bnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9kZSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhaW50VHlwZTo6U3Ryb2tlOgotICAgICAgICAg
ICAgICAgIG1fY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUodGV4dERyYXdpbmdNb2RlICYgflRl
eHRNb2RlRmlsbCk7CisgICAgICAgICAgICAgICAgdGV4dERyYXdpbmdNb2RlLnJlbW92ZShUZXh0
RHJhd2luZ01vZGU6OkZpbGwpOworICAgICAgICAgICAgICAgIG1fY29udGV4dC5zZXRUZXh0RHJh
d2luZ01vZGUodGV4dERyYXdpbmdNb2RlKTsKICAgICAgICAgICAgICAgICBwYWludFRleHRXaXRo
U2hhZG93cyhzaGFkb3dUb1VzZSwgc2hhZG93Q29sb3JGaWx0ZXIsICptX2ZvbnQsIHRleHRSdW4s
IGJveFJlY3QsIHRleHRPcmlnaW4sIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIG51bGxBdG9tKCks
IDAsIHBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwKTsKICAgICAgICAgICAgICAgICBzaGFkb3dU
b1VzZSA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LnNldFRleHREcmF3aW5n
TW9kZSh0ZXh0RHJhd2luZ01vZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCShyZXZpc2lv
biAyNTk1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNyArMTY3LDcgQEAgYm9vbCBS
ZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlcwogICAgICAgICB9CiAjZW5kaWYKIAot
ICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUocmVzb3VyY2VNb2RlLmNvbnRhaW5z
KFJlbmRlclNWR1Jlc291cmNlTW9kZTo6QXBwbHlUb0ZpbGwpID8gVGV4dE1vZGVGaWxsIDogVGV4
dE1vZGVTdHJva2UpOworICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUocmVzb3Vy
Y2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6QXBwbHlUb0ZpbGwpID8gVGV4
dERyYXdpbmdNb2RlOjpGaWxsIDogVGV4dERyYXdpbmdNb2RlOjpTdHJva2UpOwogICAgIH0KIAog
ICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlLnN2Z1N0eWxlKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVy
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE4NSwxMyArMTg1LDEzIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjph
cHBseVJlc28KIAogICAgIGlmIChyZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVzb3Vy
Y2VNb2RlOjpBcHBseVRvVGV4dCkpIHsKICAgICAgICAgaWYgKHJlc291cmNlTW9kZS5jb250YWlu
cyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6OkFwcGx5VG9GaWxsKSkgewotICAgICAgICAgICAgY29u
dGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKFRleHRNb2RlRmlsbCk7CisgICAgICAgICAgICBjb250
ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlOjpGaWxsKTsKIAogI2lmIFVT
RShDRykKICAgICAgICAgICAgIGNvbnRleHQtPmFwcGx5RmlsbFBhdHRlcm4oKTsKICNlbmRpZgog
ICAgICAgICB9IGVsc2UgaWYgKHJlc291cmNlTW9kZS5jb250YWlucyhSZW5kZXJTVkdSZXNvdXJj
ZU1vZGU6OkFwcGx5VG9TdHJva2UpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJh
d2luZ01vZGUoVGV4dE1vZGVTdHJva2UpOworICAgICAgICAgICAgY29udGV4dC0+c2V0VGV4dERy
YXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZTo6U3Ryb2tlKTsKIAogI2lmIFVTRShDRykKICAgICAg
ICAgICAgIGNvbnRleHQtPmFwcGx5U3Ryb2tlUGF0dGVybigpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xp
ZENvbG9yLmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw3ICs1MSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVIKICAg
ICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxSdWxlKHN2Z1N0eWxlLmZpbGxSdWxlKCkpOwogCiAg
ICAgICAgIGlmIChyZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpB
cHBseVRvVGV4dCkpCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoVGV4
dE1vZGVGaWxsKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShUZXh0
RHJhd2luZ01vZGU6OkZpbGwpOwogICAgIH0gZWxzZSBpZiAocmVzb3VyY2VNb2RlLmNvbnRhaW5z
KFJlbmRlclNWR1Jlc291cmNlTW9kZTo6QXBwbHlUb1N0cm9rZSkpIHsKICAgICAgICAgLy8gV2hl
biByZW5kZXJpbmcgdGhlIG1hc2sgZm9yIGEgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLCB0aGUg
c3Ryb2tlIGNvZGUgcGF0aCBpcyBuZXZlciBoaXQuCiAgICAgICAgIEFTU0VSVCghaXNSZW5kZXJp
bmdNYXNrKTsKQEAgLTYxLDcgKzYxLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29s
b3I6OmFwcGx5UgogICAgICAgICBTVkdSZW5kZXJTdXBwb3J0OjphcHBseVN0cm9rZVN0eWxlVG9D
b250ZXh0KGNvbnRleHQsIHN0eWxlLCByZW5kZXJlcik7CiAKICAgICAgICAgaWYgKHJlc291cmNl
TW9kZS5jb250YWlucyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6OkFwcGx5VG9UZXh0KSkKLSAgICAg
ICAgICAgIGNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShUZXh0TW9kZVN0cm9rZSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlOjpTdHJv
a2UpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1
OTc2NykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMjAtMDQtMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBJUEMgc2VyaWFsaXphdGlvbiBvZiBlbnVtcyBzaG91bGQgc2Vy
aWFsaXplIHN0ZDo6dW5kZXJseWluZ190eXBlIGluc3RlYWQgb2YgdWludDY0X3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDIyOAorCisgICAgICAg
IFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29k
ZXIuaDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6RGVj
b2Rlcjo6b3BlcmF0b3I+Pik6CisgICAgICAgIChJUEM6OkRlY29kZXI6OmRlY29kZUVudW0pOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmg6CisgICAgICAgICogU2hhcmVkL2NmL0Fy
Z3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICAoSVBDOjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpkZWNvZGUpOgorCiAyMDIwLTA0LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBIYW5kbGUgW1BERkRvY3VtZW50IGluaXRXaXRoUHJvdmlkZXI6XSByZXR1
cm5pbmcgbmlsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCShyZXZpc2lv
biAyNTk1NzcpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwNCwxMCArMTA0LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGRlY29kZShk
b3VibGUmKTsKICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4mKTsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEU+Ci0gICAgYXV0byBkZWNvZGUoRSYgZSkgLT4gc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlLCBib29sPgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZh
bHVlPj4KKyAgICBib29sIGRlY29kZShFJiBlKQogICAgIHsKLSAgICAgICAgdWludDY0X3QgdmFs
dWU7CisgICAgICAgIHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEU+Ojp0eXBlIHZhbHVl
OwogICAgICAgICBpZiAoIWRlY29kZSh2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIGlmICghaXNWYWxpZEVudW08RT4odmFsdWUpKQpAQCAtMTE3LDEwICsxMTcsMTAg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWU+KiA9IG51
bGxwdHI+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9p
Zl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWU+PgogICAgIERlY29kZXImIG9wZXJhdG9yPj4oT3B0
aW9uYWw8RT4mIG9wdGlvbmFsKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHZh
bHVlOworICAgICAgICBPcHRpb25hbDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6
dHlwZT4gdmFsdWU7CiAgICAgICAgICp0aGlzID4+IHZhbHVlOwogICAgICAgICBpZiAodmFsdWUg
JiYgaXNWYWxpZEVudW08RT4oKnZhbHVlKSkKICAgICAgICAgICAgIG9wdGlvbmFsID0gc3RhdGlj
X2Nhc3Q8RT4oKnZhbHVlKTsKQEAgLTEyOSwxMiArMTI5LDEwIEBAIHB1YmxpYzoKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgZGVjb2RlRW51bShUJiByZXN1bHQpCiAgICAgewotICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihUKSA8PSA4LCAiRW51bSB0eXBlIFQgbXVzdCBub3Qg
YmUgbGFyZ2VyIHRoYW4gNjQgYml0cyEiKTsKLQotICAgICAgICB1aW50NjRfdCB2YWx1ZTsKKyAg
ICAgICAgdHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8VD46OnR5cGUgdmFsdWU7CiAgICAg
ICAgIGlmICghZGVjb2RlKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgCisKICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VD4odmFsdWUpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNv
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5o
CShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDkgKzYxLDcgQEAgcHVibGljOgogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gdm9pZCBlbmNvZGVFbnVtKFQgdCkKICAgICB7Ci0gICAgICAgIENPTVBJ
TEVfQVNTRVJUKHNpemVvZihUKSA8PSBzaXplb2YodWludDY0X3QpLCBlbnVtX3R5cGVfbXVzdF9u
b3RfYmVfbGFyZ2VyX3RoYW5fNjRfYml0cyk7Ci0KLSAgICAgICAgZW5jb2RlKHN0YXRpY19jYXN0
PHVpbnQ2NF90Pih0KSk7CisgICAgICAgIGVuY29kZShzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6
OnVuZGVybHlpbmdfdHlwZTxUPjo6dHlwZT4odCkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTx0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Pj46OnZhbHVlPiogPSBudWxs
cHRyPgpAQCAtNzUsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08VD46OnZhbHVlPiogPSBudWxscHRyPgogICAg
IEVuY29kZXImIG9wZXJhdG9yPDwoVCYmIHQpCiAgICAgewotICAgICAgICBlbmNvZGUoc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHQpKTsKKyAgICAgICAgZW5jb2RlKHN0YXRpY19jYXN0PHR5cGVuYW1l
IHN0ZDo6dW5kZXJseWluZ190eXBlPFQ+Ojp0eXBlPih0KSk7CiAgICAgICAgIHJldHVybiAqdGhp
czsKICAgICB9CiAKQEAgLTExMywxMCArMTExLDggQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBFPgogICAgIGF1dG8gZW5jb2RlKEUgdmFsdWUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4KICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKEUpIDw9IHNpemVvZih1aW50NjRfdCksICJFbnVtIHR5cGUgbXVzdCBub3QgYmUgbGFyZ2Vy
IHRoYW4gNjQgYml0cy4iKTsKLQotICAgICAgICBBU1NFUlQoaXNWYWxpZEVudW08RT4oc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHZhbHVlKSkpOwotICAgICAgICBlbmNvZGUoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHZhbHVlKSk7CisgICAgICAgIEFTU0VSVChpc1ZhbGlkRW51bTxFPihzdGF0aWNfY2Fz
dDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlwZT4odmFsdWUpKSk7CisgICAg
ICAgIGVuY29kZShzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6
dHlwZT4odmFsdWUpKTsKICAgICB9CiAKICAgICB2b2lkIGVuY29kZUhlYWRlcigpOwpJbmRleDog
U291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAJKHJldmlzaW9u
IDI1OTU3NykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OTEsNyArNDkxLDcgQEAgdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgQ0ZOdW1iZXJSZQogICAgIGJvb2wgcmVzdWx0ID0gQ0ZOdW1iZXJHZXRWYWx1ZShu
dW1iZXIsIG51bWJlclR5cGUsIGJ1ZmZlci5kYXRhKCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQpOwogCi0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKG51bWJlclR5cGUpOworICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDhfdD4obnVtYmVyVHlwZSk7CiAgICAgZW5jb2Rl
ciA8PCBJUEM6OkRhdGFSZWZlcmVuY2UoYnVmZmVyKTsKIH0KIApAQCAtNTM3LDkgKzUzNywxMSBA
QCBzdGF0aWMgc2l6ZV90IHNpemVGb3JOdW1iZXJUeXBlKENGTnVtYmVyCiAKIGJvb2wgZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxDRk51bWJlclJlZj4mIHJlc3VsdCkKIHsKLSAg
ICBDRk51bWJlclR5cGUgbnVtYmVyVHlwZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShu
dW1iZXJUeXBlKSkKKyAgICBPcHRpb25hbDx1aW50OF90PiBudW1iZXJUeXBlRnJvbUlQQzsKKyAg
ICBkZWNvZGVyID4+IG51bWJlclR5cGVGcm9tSVBDOworICAgIGlmICghbnVtYmVyVHlwZUZyb21J
UEMgfHwgKm51bWJlclR5cGVGcm9tSVBDID4ga0NGTnVtYmVyTWF4VHlwZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGF1dG8gbnVtYmVyVHlwZSA9IHN0YXRpY19jYXN0PENGTnVtYmVyVHlw
ZT4oKm51bWJlclR5cGVGcm9tSVBDKTsKIAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVm
ZXJlbmNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCkBAIC01NzEs
MTUgKzU3MywxNiBAQCB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBDRlN0cmluZ1JlCiAg
ICAgbnVtQ29udmVydGVkQnl0ZXMgPSBDRlN0cmluZ0dldEJ5dGVzKHN0cmluZywgcmFuZ2UsIGVu
Y29kaW5nLCAwLCBmYWxzZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgJmJ1ZmZlckxl
bmd0aCk7CiAgICAgQVNTRVJUKG51bUNvbnZlcnRlZEJ5dGVzID09IGxlbmd0aCk7CiAKLSAgICBl
bmNvZGVyLmVuY29kZUVudW0oZW5jb2RpbmcpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8
VUludDMyPihlbmNvZGluZyk7CiAgICAgZW5jb2RlciA8PCBJUEM6OkRhdGFSZWZlcmVuY2UoYnVm
ZmVyKTsKIH0KIAogYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiYgcmVzdWx0KQogewotICAgIENGU3RyaW5nRW5jb2RpbmcgZW5jb2Rpbmc7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZUVudW0oZW5jb2RpbmcpKQorICAgIFVJbnQzMiBlbmNvZGluZ0Zy
b21JUEM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbmNvZGluZ0Zyb21JUEMpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBlbmNvZGluZyA9IHN0YXRpY19jYXN0PENGU3RyaW5n
RW5jb2Rpbmc+KGVuY29kaW5nRnJvbUlQQyk7CiAKICAgICBpZiAoIUNGU3RyaW5nSXNFbmNvZGlu
Z0F2YWlsYWJsZShlbmNvZGluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395904</attachid>
            <date>2020-04-08 20:15:20 -0700</date>
            <delta_ts>2020-04-08 20:45:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210228-20200408201519.patch</filename>
            <type>text/plain</type>
            <size>28246</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIwLTA0LTA4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSVBDIHNlcmlh
bGl6YXRpb24gb2YgZW51bXMgc2hvdWxkIHNlcmlhbGl6ZSBzdGQ6OnVuZGVybHlpbmdfdHlwZSBp
bnN0ZWFkIG9mIHVpbnQ2NF90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTAyMjgKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IsIG90aGVyIHRoYW4gbGVzcyBtZW1vcnkgYW5k
IHRpbWUgc3BlbnQgaW4gSVBDIGNvZGUuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGVDaGFuZ2U6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdSZXBh
aW50SW5kaWNhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtVGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q2FzY2FkZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVXNlTGV0dGVycHJl
c3NFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdUZXh0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBk
YXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OnBhaW50VGV4dEFuZEVtcGhhc2lzTWFy
a3NJZk5lZWRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6
OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVy
bjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZVNvbGlkQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VT
b2xpZENvbG9yOjphcHBseVJlc291cmNlKToKKwogMjAyMC0wNC0wNiAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQW5pbWF0aW9uc10gTW92ZSBEb2N1
bWVudC5nZXRBbmltYXRpb25zKCkgdG8gRG9jdW1lbnRPclNoYWRvd1Jvb3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU4LDcgKzU1
OCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEkKICAgICAgICAg
ICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGMtPnN0cm9rZVRoaWNrbmVz
cygpKTsKICAgICAgICAgfQogCi0gICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0VGV4dERyYXdp
bmdNb2RlKGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0TW9kZVN0cm9rZSk7CisgICAgICAgIG1h
c2tJbWFnZUNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0RHJhd2luZ01vZGU6
OkZpbGwgOiBUZXh0RHJhd2luZ01vZGU6OlN0cm9rZSk7CiAKICAgICAgICAgaWYgKHVzZU1heFdp
ZHRoKSB7CiAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZShsb2NhdGlvbiAt
IG1hc2tSZWN0LmxvY2F0aW9uKCkpOwpAQCAtNTc4LDcgKzU3OCw3IEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEkKICAgICB9CiAjZW5kaWYKIAotICAgIGMtPnNldFRl
eHREcmF3aW5nTW9kZShmaWxsID8gVGV4dE1vZGVGaWxsIDogVGV4dE1vZGVTdHJva2UpOworICAg
IGMtPnNldFRleHREcmF3aW5nTW9kZShmaWxsID8gVGV4dERyYXdpbmdNb2RlOjpGaWxsIDogVGV4
dERyYXdpbmdNb2RlOjpTdHJva2UpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpjKTsKICAgICBpZiAodXNlTWF4V2lkdGgpIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2
aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2U6OmR1bXAoVGUKICAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJzdHJva2UtdGhpY2tuZXNzIiwgbV9zdGF0ZS5zdHJva2VUaGlja25lc3MpOwogCiAgICAgaWYg
KG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5n
TW9kZUNoYW5nZSkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidGV4dC1kcmF3aW5nLW1vZGUi
LCBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSk7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidGV4
dC1kcmF3aW5nLW1vZGUiLCBtX3N0YXRlLnRleHREcmF3aW5nTW9kZS50b1JhdygpKTsKIAogICAg
IGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VD
b2xvckNoYW5nZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLWNvbG9yIiwgbV9z
dGF0ZS5zdHJva2VDb2xvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk4LDE0ICs5OCwxNCBAQCBjbGFzcyBQYXRoOwogY2xhc3MgVGV4dFJ1bjsKIGNsYXNz
IFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCi1lbnVtIFRleHREcmF3aW5nTW9kZSB7Ci0gICAgVGV4
dE1vZGVGaWxsID0gMSA8PCAwLAotICAgIFRleHRNb2RlU3Ryb2tlID0gMSA8PCAxLAorZW51bSBj
bGFzcyBUZXh0RHJhd2luZ01vZGUgOiB1aW50OF90IHsKKyAgICBGaWxsID0gMSA8PCAwLAorICAg
IFN0cm9rZSA9IDEgPDwgMSwKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCi0gICAgVGV4dE1vZGVM
ZXR0ZXJwcmVzcyA9IDEgPDwgMiwKKyAgICBMZXR0ZXJwcmVzcyA9IDEgPDwgMiwKICNlbmRpZgog
fTsKLXR5cGVkZWYgdW5zaWduZWQgVGV4dERyYXdpbmdNb2RlRmxhZ3M7Cit1c2luZyBUZXh0RHJh
d2luZ01vZGVGbGFncyA9IE9wdGlvblNldDxUZXh0RHJhd2luZ01vZGU+OwogCiBlbnVtIFN0cm9r
ZVN0eWxlIHsKICAgICBOb1N0cm9rZSwKQEAgLTIxMCw3ICsyMTAsNyBAQCBzdHJ1Y3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUgewogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyB7IDAgfTsKICAgICBm
bG9hdCBzaGFkb3dCbHVyIHsgMCB9OwogCi0gICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERy
YXdpbmdNb2RlIHsgVGV4dE1vZGVGaWxsIH07CisgICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4
dERyYXdpbmdNb2RlIHsgVGV4dERyYXdpbmdNb2RlOjpGaWxsIH07CiAKICAgICBDb2xvciBzdHJv
a2VDb2xvciB7IENvbG9yOjpibGFjayB9OwogICAgIENvbG9yIGZpbGxDb2xvciB7IENvbG9yOjpi
bGFjayB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZv
cm1DQUxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdSZXBh
aW50SW5kaWNhdAogICAgIGlmICghcGxhdGZvcm1DQUxheWVyLT5pc09wYXF1ZSgpICYmIHBsYXRm
b3JtQ0FMYXllci0+c3VwcG9ydHNTdWJwaXhlbEFudGlhbGlhc2VkVGV4dCgpICYmIHBsYXRmb3Jt
Q0FMYXllci0+YWNjZWxlcmF0ZXNEcmF3aW5nKCkpIHsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LnNldFN0cm9rZUNvbG9yKGxpbmVhckdseXBoTWFza091dGxpbmVDb2xvcik7CiAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoNC41KTsKLSAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LnNldFRleHREcmF3aW5nTW9kZShUZXh0TW9kZUZpbGwgfCBUZXh0TW9kZVN0cm9rZSk7
CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdN
b2RlRmxhZ3MoVGV4dERyYXdpbmdNb2RlOjpGaWxsKSB8IFRleHREcmF3aW5nTW9kZTo6U3Ryb2tl
KTsKICAgICB9CiAKICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKHBsYXRmb3JtQ0FM
YXllci0+YWNjZWxlcmF0ZXNEcmF3aW5nKCkgPyBhY2NlbGVyYXRlZENvbnRleHRMYWJlbENvbG9y
IDogdW5hY2NlbGVyYXRlZENvbnRleHRMYWJlbENvbG9yKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25z
LmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE1LDcgKzMx
NSw3IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNUb0NvbnRleHQoY2Fpcm9fdCoKIHN0YXRpYyB2
b2lkIGRyYXdHbHlwaHNTaGFkb3coUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4
dCwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlLCBUZXh0RHJhd2luZ01vZGVGbGFncyB0
ZXh0RHJhd2luZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBjb25zdCBDb2xv
ciYgc2hhZG93Q29sb3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjYWlyb19zY2FsZWRfZm9u
dF90KiBzY2FsZWRGb250LCBkb3VibGUgc3ludGhldGljQm9sZE9mZnNldCwgY29uc3QgVmVjdG9y
PGNhaXJvX2dseXBoX3Q+JiBnbHlwaHMsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdN
b2RlKQogewogICAgIFNoYWRvd0JsdXIgc2hhZG93KHsgc2hhZG93U3RhdGUuYmx1ciwgc2hhZG93
U3RhdGUuYmx1ciB9LCBzaGFkb3dTdGF0ZS5vZmZzZXQsIHNoYWRvd1N0YXRlLmNvbG9yLCBzaGFk
b3dTdGF0ZS5pZ25vcmVUcmFuc2Zvcm1zKTsKLSAgICBpZiAoISh0ZXh0RHJhd2luZ01vZGUgJiBU
ZXh0TW9kZUZpbGwpIHx8IHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9TaGFkb3cpCisg
ICAgaWYgKCEodGV4dERyYXdpbmdNb2RlICYgVGV4dERyYXdpbmdNb2RlOjpGaWxsKSB8fCBzaGFk
b3cudHlwZSgpID09IFNoYWRvd0JsdXI6Ok5vU2hhZG93KQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoIXNoYWRvd1N0YXRlLmlzUmVxdWlyZWQocGxhdGZvcm1Db250ZXh0KSkgewpAQCAtODMy
LDcgKzgzMiw3IEBAIHZvaWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGwKICAg
ICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dC5jcigpOwogICAgIGNhaXJvX3NhdmUoY3Ip
OwogCi0gICAgaWYgKHRleHREcmF3aW5nTW9kZSAmIFRleHRNb2RlRmlsbCkgeworICAgIGlmICh0
ZXh0RHJhd2luZ01vZGUuY29udGFpbnMoVGV4dERyYXdpbmdNb2RlOjpGaWxsKSkgewogICAgICAg
ICBwcmVwYXJlRm9yRmlsbGluZyhjciwgZmlsbFNvdXJjZSwgQWRqdXN0UGF0dGVybkZvckdsb2Jh
bEFscGhhKTsKICAgICAgICAgZHJhd0dseXBoc1RvQ29udGV4dChjciwgc2NhbGVkRm9udCwgc3lu
dGhldGljQm9sZE9mZnNldCwgZ2x5cGhzLCBmb250U21vb3RoaW5nTW9kZSk7CiAgICAgfQpAQCAt
ODQxLDcgKzg0MSw3IEBAIHZvaWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGwK
ICAgICAvLyB0d2ljZSB0aGUgc2l6ZSBvZiB0aGUgd2lkdGggb2YgdGhlIHRleHQgd2Ugd2lsbCBu
b3QgYXNrIGNhaXJvIHRvIHN0cm9rZQogICAgIC8vIHRoZSB0ZXh0IGFzIGV2ZW4gb25lIHNpbmds
ZSBzdHJva2Ugd291bGQgY292ZXIgdGhlIGZ1bGwgd2R0aCBvZiB0aGUgdGV4dC4KICAgICAvLyAg
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzc1OS4KLSAgICBp
ZiAodGV4dERyYXdpbmdNb2RlICYgVGV4dE1vZGVTdHJva2UgJiYgc3Ryb2tlVGhpY2tuZXNzIDwg
MiAqIHhPZmZzZXQpIHsKKyAgICBpZiAodGV4dERyYXdpbmdNb2RlLmNvbnRhaW5zKFRleHREcmF3
aW5nTW9kZTo6U3Ryb2tlKSAmJiBzdHJva2VUaGlja25lc3MgPCAyICogeE9mZnNldCkgewogICAg
ICAgICBwcmVwYXJlRm9yU3Ryb2tpbmcoY3IsIHN0cm9rZVNvdXJjZSwgUHJlc2VydmVBbHBoYSk7
CiAgICAgICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKGNyLCBzdHJva2VUaGlja25lc3MpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3NjAsMTkgKzE3NjAsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtVGV4dERyYQogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAgICBDR0Nv
bnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwotICAgIHN3aXRjaCAobW9kZSkg
ewotICAgIGNhc2UgVGV4dE1vZGVGaWxsOgorICAgIAorICAgIGJvb2wgZmlsbCA9IG1vZGUuY29u
dGFpbnMoVGV4dERyYXdpbmdNb2RlOjpGaWxsKTsKKyAgICBib29sIHN0cm9rZSA9IG1vZGUuY29u
dGFpbnMoVGV4dERyYXdpbmdNb2RlOjpTdHJva2UpOworICAgIGlmIChmaWxsICYmIHN0cm9rZSkK
KyAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRGaWxs
U3Ryb2tlKTsKKyAgICBlbHNlIGlmIChmaWxsKQogICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJh
d2luZ01vZGUoY29udGV4dCwga0NHVGV4dEZpbGwpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFRleHRNb2RlU3Ryb2tlOgorICAgIGVsc2UgaWYgKHN0cm9rZSkKICAgICAgICAgQ0dDb250ZXh0
U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRTdHJva2UpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFRleHRNb2RlRmlsbCB8IFRleHRNb2RlU3Ryb2tlOgotICAgICAgICBDR0Nv
bnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dEZpbGxTdHJva2UpOwotICAg
ICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBj
b2xvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRD
YXNjYWRlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQkocmV2aXNpb24gMjU5NTc3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFZl
Y3RvcldpdGhIb3Jpem9uCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkVXNlTGV0dGVycHJlc3NF
ZmZlY3QoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogI2lmIEVOQUJMRShMRVRU
RVJQUkVTUykKLSAgICByZXR1cm4gY29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2Rl
TGV0dGVycHJlc3M7CisgICAgcmV0dXJuIGNvbnRleHQudGV4dERyYXdpbmdNb2RlKCkuY29udGFp
bnMoVGV4dERyYXdpbmdNb2RlOjpMZXR0ZXJwcmVzcyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0KTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBG
b250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbgogICAgICAgICB9CiAgICAgfTsKIAot
ICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gY29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBU
ZXh0TW9kZUZpbGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICFw
bGF0Zm9ybURhdGEuaXNDb2xvckJpdG1hcEZvbnQoKSAmJiAoIWNvbnRleHQuc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMoKSB8fCBjb250ZXh0Q1RNLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlw
cGVkKCkpICYmICFjb250ZXh0LmlzSW5UcmFuc3BhcmVuY3lMYXllcigpOworICAgIGJvb2wgaGFz
U2ltcGxlU2hhZG93ID0gY29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0RHJhd2luZ01v
ZGU6OkZpbGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICFwbGF0
Zm9ybURhdGEuaXNDb2xvckJpdG1hcEZvbnQoKSAmJiAoIWNvbnRleHQuc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMoKSB8fCBjb250ZXh0Q1RNLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVk
KCkpICYmICFjb250ZXh0LmlzSW5UcmFuc3BhcmVuY3lMYXllcigpOwogICAgIGlmIChoYXNTaW1w
bGVTaGFkb3cpIHsKICAgICAgICAgLy8gUGFpbnQgc2ltcGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGlu
c3RlYWQgb2YgcmVseWluZyBvbiBDRyBzaGFkb3dzLCB0byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwg
YW50aWFsaWFzaW5nLgogICAgICAgICBjb250ZXh0LmNsZWFyU2hhZG93KCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIFNldFN0YXRlOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgCiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tlVGhpY2tu
ZXNzOwogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICBlbmNvZGVyLmVuY29kZUVudW0oc3Rh
dGUudGV4dERyYXdpbmdNb2RlKTsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS50ZXh0RHJhd2lu
Z01vZGU7CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKICAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VD
b2xvcjsKQEAgLTU2OCwxMSArNTY4LDEyIEBAIE9wdGlvbmFsPFJlZjxTZXRTdGF0ZT4+IFNldFN0
YXRlOjpkZWNvZGUKICAgICB9CiAKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKSkgewot
ICAgICAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGU7Ci0gICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGVFbnVtKHRleHREcmF3aW5nTW9kZSkpCisgICAgICAgIE9wdGlvbmFs
PFRleHREcmF3aW5nTW9kZUZsYWdzPiB0ZXh0RHJhd2luZ01vZGU7CisgICAgICAgIGRlY29kZXIg
Pj4gdGV4dERyYXdpbmdNb2RlOworICAgICAgICBpZiAoIXRleHREcmF3aW5nTW9kZSkKICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0
ZS50ZXh0RHJhd2luZ01vZGUgPSB0ZXh0RHJhd2luZ01vZGU7CisgICAgICAgIHN0YXRlQ2hhbmdl
Lm1fc3RhdGUudGV4dERyYXdpbmdNb2RlID0gV1RGTW92ZSgqdGV4dERyYXdpbmdNb2RlKTsKICAg
ICB9CiAKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUu
Y3BwCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcg
QEAgdm9pZCBCaXRtYXBUZXh0dXJlOjp1cGRhdGVDb250ZW50cyhUZXh0dQogCiAgICAgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKICAgICBjb250ZXh0
LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHk6OkRlZmF1
bHQpOwotICAgIGNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKFRleHRNb2RlRmlsbCk7CisgICAg
Y29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlOjpGaWxsKTsKIAogICAg
IEludFJlY3Qgc291cmNlUmVjdCh0YXJnZXRSZWN0KTsKICAgICBzb3VyY2VSZWN0LnNldExvY2F0
aW9uKG9mZnNldCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
RGlyZWN0MkRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjU5NTc3
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3NSw3ICs3NzUsNyBAQCB2b2lkIGRyYXdHbHlw
aHMoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmCiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAg
Z3JhcGhpY3NDb250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRv
d0NvbG9yKTsKIAotICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LnRl
eHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkg
JiYgIXNoYWRvd0JsdXIgJiYgKCFncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMoKSB8fCBncmFwaGljc0NvbnRleHQuZ2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25P
ckZsaXBwZWQoKSk7CisgICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBncmFwaGljc0NvbnRleHQu
dGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dERyYXdpbmdNb2RlOjpGaWxsICYmIHNoYWRvd0NvbG9y
LmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAoIWdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcygpIHx8IGdyYXBoaWNzQ29udGV4dC5nZXRDVE0oKS5pc0lkZW50aXR5T3JU
cmFuc2xhdGlvbk9yRmxpcHBlZCgpKTsKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KSB7CiAgICAg
ICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNlbHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcg
b24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1YnBpeGVsIGFudGlhbGlhc2luZy4KICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcAkocmV2aXNpb24g
MjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIEZvbnRDYXNjYWRl
OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29uCiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAgZ3Jh
cGhpY3NDb250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0Nv
bG9yKTsKIAotICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LnRleHRE
cmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYg
IXNoYWRvd0JsdXIgJiYgKCFncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMo
KSB8fCBncmFwaGljc0NvbnRleHQuZ2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZs
aXBwZWQoKSk7CisgICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBncmFwaGljc0NvbnRleHQudGV4
dERyYXdpbmdNb2RlKCkgPT0gVGV4dERyYXdpbmdNb2RlOjpGaWxsICYmIHNoYWRvd0NvbG9yLmlz
VmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAoIWdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcygpIHx8IGdyYXBoaWNzQ29udGV4dC5nZXRDVE0oKS5pc0lkZW50aXR5T3JUcmFu
c2xhdGlvbk9yRmxpcHBlZCgpKTsKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KSB7CiAgICAgICAg
IC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNlbHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24g
Q0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1YnBpeGVsIGFudGlhbGlhc2luZy4KICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhc2NhZGVEaXJlY3QyRC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYXNjYWRlRGlyZWN0
MkQuY3BwCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENhc2NhZGVEaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3
ICsxMTYsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29uCiAgICAg
Q29sb3Igc2hhZG93Q29sb3I7CiAgICAgZ3JhcGhpY3NDb250ZXh0LmdldFNoYWRvdyhzaGFkb3dP
ZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAotICAgIGJvb2wgaGFzU2ltcGxlU2hh
ZG93ID0gZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmlsbCAm
JiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgKCFncmFwaGljc0NvbnRl
eHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBncmFwaGljc0NvbnRleHQuZ2V0Q1RNKCku
aXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSk7CisgICAgYm9vbCBoYXNTaW1wbGVT
aGFkb3cgPSBncmFwaGljc0NvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dERyYXdpbmdN
b2RlOjpGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAoIWdy
YXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGdyYXBoaWNzQ29udGV4
dC5nZXRDVE0oKS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKTsKICAgICBpZiAo
aGFzU2ltcGxlU2hhZG93KSB7CiAgICAgICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNl
bHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1
YnBpeGVsIGFudGlhbGlhc2luZy4KICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVv
U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpk
cmF3VGV4dChHCiAgICAgSW50U2l6ZSBjYXB0dXJlU2l6ZSA9IHRoaXMtPmNhcHR1cmVTaXplKCk7
CiAgICAgRmxvYXRQb2ludCB0aW1lTG9jYXRpb24oY2FwdHVyZVNpemUud2lkdGgoKSAqIC4wNSwg
Y2FwdHVyZVNpemUuaGVpZ2h0KCkgKiAuMTUpOwogICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENv
bG9yOjp3aGl0ZSk7Ci0gICAgY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dE1vZGVGaWxs
KTsKKyAgICBjb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGU6OkZpbGwp
OwogICAgIFN0cmluZyBzdHJpbmcgPSBtYWtlU3RyaW5nKHBhZCgnMCcsIDIsIGhvdXJzKSwgJzon
LCBwYWQoJzAnLCAyLCBtaW51dGVzKSwgJzonLCBwYWQoJzAnLCAyLCBzZWNvbmRzKSwgJy4nLCBw
YWQoJzAnLCAzLCBtaWxsaXNlY29uZHMgJSAxMDAwKSk7CiAgICAgY29udGV4dC5kcmF3VGV4dCh0
aW1lRm9udCwgVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJpbmcpKSksIHRpbWVMb2NhdGlvbik7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAkocmV2
aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDEyICsxODUsMTIgQEAgdm9pZCB1cGRhdGVHcmFw
aGljc0NvbnRleHQoR3JhcGhpY3NDb250ZQogICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIG5ld01v
ZGUgPSBtb2RlOwogI2lmIEVOQUJMRShMRVRURVJQUkVTUykKICAgICBpZiAocGFpbnRTdHlsZS51
c2VMZXR0ZXJwcmVzc0VmZmVjdCkKLSAgICAgICAgbmV3TW9kZSB8PSBUZXh0TW9kZUxldHRlcnBy
ZXNzOworICAgICAgICBuZXdNb2RlID0gbmV3TW9kZSB8IFRleHREcmF3aW5nTW9kZTo6TGV0dGVy
cHJlc3M7CiAgICAgZWxzZQotICAgICAgICBuZXdNb2RlICY9IH5UZXh0TW9kZUxldHRlcnByZXNz
OworICAgICAgICBuZXdNb2RlLnJlbW92ZShUZXh0RHJhd2luZ01vZGU6OkxldHRlcnByZXNzKTsK
ICNlbmRpZgogICAgIGlmIChwYWludFN0eWxlLnN0cm9rZVdpZHRoID4gMCAmJiBwYWludFN0eWxl
LnN0cm9rZUNvbG9yLmlzVmlzaWJsZSgpKQotICAgICAgICBuZXdNb2RlIHw9IFRleHRNb2RlU3Ry
b2tlOworICAgICAgICBuZXdNb2RlID0gbmV3TW9kZSB8IFRleHREcmF3aW5nTW9kZTo6U3Ryb2tl
OwogICAgIGlmIChtb2RlICE9IG5ld01vZGUpIHsKICAgICAgICAgY29udGV4dC5zZXRUZXh0RHJh
d2luZ01vZGUobmV3TW9kZSk7CiAgICAgICAgIG1vZGUgPSBuZXdNb2RlOwpAQCAtMjAxLDEwICsy
MDEsMTAgQEAgdm9pZCB1cGRhdGVHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZQogI2VuZGlm
CiAKICAgICBDb2xvciBmaWxsQ29sb3IgPSBmaWxsQ29sb3JUeXBlID09IFVzZUVtcGhhc2lzTWFy
a0NvbG9yID8gcGFpbnRTdHlsZS5lbXBoYXNpc01hcmtDb2xvciA6IHBhaW50U3R5bGUuZmlsbENv
bG9yOwotICAgIGlmIChtb2RlICYgVGV4dE1vZGVGaWxsICYmIChmaWxsQ29sb3IgIT0gY29udGV4
dC5maWxsQ29sb3IoKSkpCisgICAgaWYgKG1vZGUgJiBUZXh0RHJhd2luZ01vZGU6OkZpbGwgJiYg
KGZpbGxDb2xvciAhPSBjb250ZXh0LmZpbGxDb2xvcigpKSkKICAgICAgICAgY29udGV4dC5zZXRG
aWxsQ29sb3IoZmlsbENvbG9yKTsKIAotICAgIGlmIChtb2RlICYgVGV4dE1vZGVTdHJva2UpIHsK
KyAgICBpZiAobW9kZSAmIFRleHREcmF3aW5nTW9kZTo6U3Ryb2tlKSB7CiAgICAgICAgIGlmIChw
YWludFN0eWxlLnN0cm9rZUNvbG9yICE9IGNvbnRleHQuc3Ryb2tlQ29sb3IoKSkKICAgICAgICAg
ICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IocGFpbnRTdHlsZS5zdHJva2VDb2xvcik7CiAgICAg
ICAgIGlmIChwYWludFN0eWxlLnN0cm9rZVdpZHRoICE9IGNvbnRleHQuc3Ryb2tlVGhpY2tuZXNz
KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAJKHJldmlz
aW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE2MCwxMyArMTYwLDE1IEBAIHZvaWQgVGV4dFBhaW50ZXI6OnBh
aW50VGV4dEFuZEVtcGhhc2lzTWEKICAgICAgICAgZm9yIChhdXRvIG9yZGVyIDogcGFpbnRPcmRl
cikgewogICAgICAgICAgICAgc3dpdGNoIChvcmRlcikgewogICAgICAgICAgICAgY2FzZSBQYWlu
dFR5cGU6OkZpbGw6Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LnNldFRleHREcmF3aW5nTW9k
ZSh0ZXh0RHJhd2luZ01vZGUgJiB+VGV4dE1vZGVTdHJva2UpOworICAgICAgICAgICAgICAgIHRl
eHREcmF3aW5nTW9kZS5yZW1vdmUoVGV4dERyYXdpbmdNb2RlOjpTdHJva2UpOworICAgICAgICAg
ICAgICAgIG1fY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUodGV4dERyYXdpbmdNb2RlKTsKICAg
ICAgICAgICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyhzaGFkb3dUb1VzZSwgc2hhZG93Q29s
b3JGaWx0ZXIsICptX2ZvbnQsIHRleHRSdW4sIGJveFJlY3QsIHRleHRPcmlnaW4sIHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQsIG51bGxBdG9tKCksIDAsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBz
aGFkb3dUb1VzZSA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LnNldFRleHRE
cmF3aW5nTW9kZSh0ZXh0RHJhd2luZ01vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBQYWludFR5cGU6OlN0cm9rZToKLSAgICAgICAgICAgICAgICBtX2NvbnRl
eHQuc2V0VGV4dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9kZSAmIH5UZXh0TW9kZUZpbGwpOwor
ICAgICAgICAgICAgICAgIHRleHREcmF3aW5nTW9kZS5yZW1vdmUoVGV4dERyYXdpbmdNb2RlOjpG
aWxsKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKHRleHRE
cmF3aW5nTW9kZSk7CiAgICAgICAgICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3Moc2hhZG93
VG9Vc2UsIHNoYWRvd0NvbG9yRmlsdGVyLCAqbV9mb250LCB0ZXh0UnVuLCBib3hSZWN0LCB0ZXh0
T3JpZ2luLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBudWxsQXRvbSgpLCAwLCBwYWludFN0eWxl
LnN0cm9rZVdpZHRoID4gMCk7CiAgICAgICAgICAgICAgICAgc2hhZG93VG9Vc2UgPSBudWxscHRy
OwogICAgICAgICAgICAgICAgIG1fY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUodGV4dERyYXdp
bmdNb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDcgKzE2Nyw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudDo6YXBwbHlSZXMKICAgICAgICAgfQogI2VuZGlmCiAKLSAgICAgICAgY29udGV4
dC0+c2V0VGV4dERyYXdpbmdNb2RlKHJlc291cmNlTW9kZS5jb250YWlucyhSZW5kZXJTVkdSZXNv
dXJjZU1vZGU6OkFwcGx5VG9GaWxsKSA/IFRleHRNb2RlRmlsbCA6IFRleHRNb2RlU3Ryb2tlKTsK
KyAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKHJlc291cmNlTW9kZS5jb250YWlu
cyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6OkFwcGx5VG9GaWxsKSA/IFRleHREcmF3aW5nTW9kZTo6
RmlsbCA6IFRleHREcmF3aW5nTW9kZTo6U3Ryb2tlKTsKICAgICB9CiAKICAgICBjb25zdCBTVkdS
ZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZS5zdmdTdHlsZSgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsMTMg
KzE4NSwxMyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YXBwbHlSZXNvCiAKICAg
ICBpZiAocmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6QXBwbHlU
b1RleHQpKSB7CiAgICAgICAgIGlmIChyZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVz
b3VyY2VNb2RlOjpBcHBseVRvRmlsbCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFRleHRE
cmF3aW5nTW9kZShUZXh0TW9kZUZpbGwpOworICAgICAgICAgICAgY29udGV4dC0+c2V0VGV4dERy
YXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZTo6RmlsbCk7CiAKICNpZiBVU0UoQ0cpCiAgICAgICAg
ICAgICBjb250ZXh0LT5hcHBseUZpbGxQYXR0ZXJuKCk7CiAjZW5kaWYKICAgICAgICAgfSBlbHNl
IGlmIChyZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRv
U3Ryb2tlKSkgewotICAgICAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKFRleHRN
b2RlU3Ryb2tlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShUZXh0
RHJhd2luZ01vZGU6OlN0cm9rZSk7CiAKICNpZiBVU0UoQ0cpCiAgICAgICAgICAgICBjb250ZXh0
LT5hcHBseVN0cm9rZVBhdHRlcm4oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHAJKHJl
dmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VTb2xpZENvbG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBi
b29sIFJlbmRlclNWR1Jlc291cmNlU29saWRDb2xvcjo6YXBwbHlSCiAgICAgICAgICAgICBjb250
ZXh0LT5zZXRGaWxsUnVsZShzdmdTdHlsZS5maWxsUnVsZSgpKTsKIAogICAgICAgICBpZiAocmVz
b3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6QXBwbHlUb1RleHQpKQot
ICAgICAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKFRleHRNb2RlRmlsbCk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlOjpG
aWxsKTsKICAgICB9IGVsc2UgaWYgKHJlc291cmNlTW9kZS5jb250YWlucyhSZW5kZXJTVkdSZXNv
dXJjZU1vZGU6OkFwcGx5VG9TdHJva2UpKSB7CiAgICAgICAgIC8vIFdoZW4gcmVuZGVyaW5nIHRo
ZSBtYXNrIGZvciBhIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciwgdGhlIHN0cm9rZSBjb2RlIHBh
dGggaXMgbmV2ZXIgaGl0LgogICAgICAgICBBU1NFUlQoIWlzUmVuZGVyaW5nTWFzayk7CkBAIC02
MSw3ICs2MSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVIKICAg
ICAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6YXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChjb250ZXh0
LCBzdHlsZSwgcmVuZGVyZXIpOwogCiAgICAgICAgIGlmIChyZXNvdXJjZU1vZGUuY29udGFpbnMo
UmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvVGV4dCkpCi0gICAgICAgICAgICBjb250ZXh0
LT5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dE1vZGVTdHJva2UpOworICAgICAgICAgICAgY29udGV4
dC0+c2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZTo6U3Ryb2tlKTsKICAgICB9CiAK
ICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTk3NjcpCisrKyBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDIw
LTA0LTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgSVBDIHNlcmlhbGl6YXRpb24gb2YgZW51bXMgc2hvdWxkIHNlcmlhbGl6ZSBzdGQ6OnVu
ZGVybHlpbmdfdHlwZSBpbnN0ZWFkIG9mIHVpbnQ2NF90CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAyMjgKKworICAgICAgICBSZXZpZXdlZCBieSBD
aHJpcyBEdW1lei4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAg
IChJUEM6OkRlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChJUEM6OkRlY29kZXI6Om9wZXJhdG9y
Pj4pOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGVFbnVtKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvRW5jb2Rlci5oOgorICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NG
LmNwcDoKKyAgICAgICAgKElQQzo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6ZGVjb2RlKToKKwog
MjAyMC0wNC0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
SGFuZGxlIFtQREZEb2N1bWVudCBpbml0V2l0aFByb3ZpZGVyOl0gcmV0dXJuaW5nIG5pbApJbmRl
eDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAkocmV2aXNpb24gMjU5NTc3KQorKysg
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDQsMTAgKzEwNCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZWNvZGUoZG91YmxlJik7CiAgICAg
RGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxkb3VibGU+Jik7CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBFPgotICAgIGF1dG8gZGVjb2RlKEUmIGUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19lbnVtPEU+Ojp2YWx1ZSwgYm9vbD4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCB0eXBl
bmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4+CisgICAgYm9v
bCBkZWNvZGUoRSYgZSkKICAgICB7Ci0gICAgICAgIHVpbnQ2NF90IHZhbHVlOworICAgICAgICB0
eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlwZSB2YWx1ZTsKICAgICAgICAgaWYg
KCFkZWNvZGUodmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAo
IWlzVmFsaWRFbnVtPEU+KHZhbHVlKSkKQEAgLTExNywxMCArMTE3LDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRSwgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Vu
dW08RT46OnZhbHVlPj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPEU+JiBvcHRp
b25hbCkKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKKyAgICAgICAg
T3B0aW9uYWw8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGU+IHZhbHVlOwog
ICAgICAgICAqdGhpcyA+PiB2YWx1ZTsKICAgICAgICAgaWYgKHZhbHVlICYmIGlzVmFsaWRFbnVt
PEU+KCp2YWx1ZSkpCiAgICAgICAgICAgICBvcHRpb25hbCA9IHN0YXRpY19jYXN0PEU+KCp2YWx1
ZSk7CkBAIC0xMjksMTIgKzEyOSwxMCBAQCBwdWJsaWM6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBib29sIGRlY29kZUVudW0oVCYgcmVzdWx0KQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoVCkgPD0gOCwgIkVudW0gdHlwZSBUIG11c3Qgbm90IGJlIGxhcmdlciB0aGFu
IDY0IGJpdHMhIik7Ci0KLSAgICAgICAgdWludDY0X3QgdmFsdWU7CisgICAgICAgIHR5cGVuYW1l
IHN0ZDo6dW5kZXJseWluZ190eXBlPFQ+Ojp0eXBlIHZhbHVlOwogICAgICAgICBpZiAoIWRlY29k
ZSh2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAorCiAgICAgICAg
IHJlc3VsdCA9IHN0YXRpY19jYXN0PFQ+KHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAkocmV2aXNpb24gMjU5
NTc3KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MSw5ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHZvaWQgZW5jb2RlRW51bShUIHQpCiAgICAgewotICAgICAgICBDT01QSUxFX0FTU0VSVChzaXpl
b2YoVCkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgZW51bV90eXBlX211c3Rfbm90X2JlX2xhcmdlcl90
aGFuXzY0X2JpdHMpOwotCi0gICAgICAgIGVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4odCkp
OworICAgICAgICBlbmNvZGUoc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5
cGU8VD46OnR5cGU+KHQpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6
OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3RfdDxz
dGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KQEAgLTc1LDcg
KzczLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lm
X3Q8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBFbmNvZGVyJiBvcGVy
YXRvcjw8KFQmJiB0KQogICAgIHsKLSAgICAgICAgZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90
Pih0KSk7CisgICAgICAgIGVuY29kZShzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlp
bmdfdHlwZTxUPjo6dHlwZT4odCkpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCkBA
IC0xMTMsMTAgKzExMSw4IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRT4KICAg
ICBhdXRvIGVuY29kZShFIHZhbHVlKSAtPiBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxF
Pjo6dmFsdWU+CiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFKSA8PSBzaXpl
b2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMu
Iik7Ci0KLSAgICAgICAgQVNTRVJUKGlzVmFsaWRFbnVtPEU+KHN0YXRpY19jYXN0PHVpbnQ2NF90
Pih2YWx1ZSkpKTsKLSAgICAgICAgZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSkp
OworICAgICAgICBBU1NFUlQoaXNWYWxpZEVudW08RT4oc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3Rk
Ojp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGU+KHZhbHVlKSkpOworICAgICAgICBlbmNvZGUoc3Rh
dGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGU+KHZhbHVlKSk7
CiAgICAgfQogCiAgICAgdm9pZCBlbmNvZGVIZWFkZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCShyZXZpc2lvbiAyNTk1NzcpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDkxLDcgKzQ5MSw3IEBAIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIENGTnVt
YmVyUmUKICAgICBib29sIHJlc3VsdCA9IENGTnVtYmVyR2V0VmFsdWUobnVtYmVyLCBudW1iZXJU
eXBlLCBidWZmZXIuZGF0YSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsK
IAotICAgIGVuY29kZXIuZW5jb2RlRW51bShudW1iZXJUeXBlKTsKKyAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KG51bWJlclR5cGUpOwogICAgIGVuY29kZXIgPDwgSVBDOjpEYXRh
UmVmZXJlbmNlKGJ1ZmZlcik7CiB9CiAKQEAgLTUzNyw5ICs1MzcsMTEgQEAgc3RhdGljIHNpemVf
dCBzaXplRm9yTnVtYmVyVHlwZShDRk51bWJlcgogCiBib29sIGRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+JiByZXN1bHQpCiB7Ci0gICAgQ0ZOdW1iZXJUeXBl
IG51bWJlclR5cGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0obnVtYmVyVHlwZSkpCisg
ICAgT3B0aW9uYWw8dWludDhfdD4gbnVtYmVyVHlwZUZyb21JUEM7CisgICAgZGVjb2RlciA+PiBu
dW1iZXJUeXBlRnJvbUlQQzsKKyAgICBpZiAoIW51bWJlclR5cGVGcm9tSVBDIHx8ICpudW1iZXJU
eXBlRnJvbUlQQyA+IGtDRk51bWJlck1heFR5cGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBhdXRvIG51bWJlclR5cGUgPSBzdGF0aWNfY2FzdDxDRk51bWJlclR5cGU+KCpudW1iZXJUeXBl
RnJvbUlQQyk7CiAKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQpAQCAtNTcxLDE1ICs1NzMsMTYgQEAg
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgQ0ZTdHJpbmdSZQogICAgIG51bUNvbnZlcnRl
ZEJ5dGVzID0gQ0ZTdHJpbmdHZXRCeXRlcyhzdHJpbmcsIHJhbmdlLCBlbmNvZGluZywgMCwgZmFs
c2UsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksICZidWZmZXJMZW5ndGgpOwogICAgIEFT
U0VSVChudW1Db252ZXJ0ZWRCeXRlcyA9PSBsZW5ndGgpOwogCi0gICAgZW5jb2Rlci5lbmNvZGVF
bnVtKGVuY29kaW5nKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PFVJbnQzMj4oZW5jb2Rp
bmcpOwogICAgIGVuY29kZXIgPDwgSVBDOjpEYXRhUmVmZXJlbmNlKGJ1ZmZlcik7CiB9CiAKIGJv
b2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxDRlN0cmluZ1JlZj4mIHJlc3Vs
dCkKIHsKLSAgICBDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nOwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGVFbnVtKGVuY29kaW5nKSkKKyAgICBVSW50MzIgZW5jb2RpbmdGcm9tSVBDOworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZW5jb2RpbmdGcm9tSVBDKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGF1dG8gZW5jb2RpbmcgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ0VuY29kaW5nPihlbmNv
ZGluZ0Zyb21JUEMpOwogCiAgICAgaWYgKCFDRlN0cmluZ0lzRW5jb2RpbmdBdmFpbGFibGUoZW5j
b2RpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395906</attachid>
            <date>2020-04-08 20:45:18 -0700</date>
            <delta_ts>2020-04-08 23:16:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210228-20200408204517.patch</filename>
            <type>text/plain</type>
            <size>28426</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIwLTA0LTA4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSVBDIHNlcmlh
bGl6YXRpb24gb2YgZW51bXMgc2hvdWxkIHNlcmlhbGl6ZSBzdGQ6OnVuZGVybHlpbmdfdHlwZSBp
bnN0ZWFkIG9mIHVpbnQ2NF90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTAyMjgKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1leiBhbmQg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLCBvdGhlciB0aGFu
IGxlc3MgbWVtb3J5IGFuZCB0aW1lIHNwZW50IGluIElQQyBjb2RlLgorCisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9kZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZFVzZUxldHRlcnByZXNzRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRl
OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVv
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpk
cmF3VGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnVwZGF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L1RleHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRl
eHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdS
ZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm46OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlU29saWRDb2xvcjo6YXBwbHlSZXNvdXJjZSk6CisKIDIwMjAtMDQtMDYg
IEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1h
dGlvbnNdIE1vdmUgRG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygpIHRvIERvY3VtZW50T3JTaGFkb3dS
b290CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU1OCw3ICs1NTgsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJh
d1RleHRJCiAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhj
LT5zdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBtYXNrSW1hZ2VDb250
ZXh0LnNldFRleHREcmF3aW5nTW9kZShmaWxsID8gVGV4dE1vZGVGaWxsIDogVGV4dE1vZGVTdHJv
a2UpOworICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShmaWxsID8g
VGV4dERyYXdpbmdNb2RlOjpGaWxsIDogVGV4dERyYXdpbmdNb2RlOjpTdHJva2UpOwogCiAgICAg
ICAgIGlmICh1c2VNYXhXaWR0aCkgewogICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC50cmFu
c2xhdGUobG9jYXRpb24gLSBtYXNrUmVjdC5sb2NhdGlvbigpKTsKQEAgLTU3OCw3ICs1NzgsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJCiAgICAgfQogI2VuZGlm
CiAKLSAgICBjLT5zZXRUZXh0RHJhd2luZ01vZGUoZmlsbCA/IFRleHRNb2RlRmlsbCA6IFRleHRN
b2RlU3Ryb2tlKTsKKyAgICBjLT5zZXRUZXh0RHJhd2luZ01vZGUoZmlsbCA/IFRleHREcmF3aW5n
TW9kZTo6RmlsbCA6IFRleHREcmF3aW5nTW9kZTo6U3Ryb2tlKTsKIAogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYyk7CiAgICAgaWYgKHVzZU1heFdpZHRoKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw3ICsy
ODUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpkdW1wKFRlCiAgICAgICAg
IHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXRoaWNrbmVzcyIsIG1fc3RhdGUuc3Ryb2tlVGhpY2tu
ZXNzKTsKIAogICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInRl
eHQtZHJhd2luZy1tb2RlIiwgbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUpOworICAgICAgICB0cy5k
dW1wUHJvcGVydHkoInRleHQtZHJhd2luZy1tb2RlIiwgbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUu
dG9SYXcoKSk7CiAKICAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0
cm9rZS1jb2xvciIsIG1fc3RhdGUuc3Ryb2tlQ29sb3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDI1
OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCwxNCArOTgsMTQgQEAgY2xhc3MgUGF0aDsKIGNsYXNz
IFRleHRSdW47CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAotZW51bSBUZXh0RHJhd2lu
Z01vZGUgewotICAgIFRleHRNb2RlRmlsbCA9IDEgPDwgMCwKLSAgICBUZXh0TW9kZVN0cm9rZSA9
IDEgPDwgMSwKK2VudW0gY2xhc3MgVGV4dERyYXdpbmdNb2RlIDogdWludDhfdCB7CisgICAgRmls
bCA9IDEgPDwgMCwKKyAgICBTdHJva2UgPSAxIDw8IDEsCiAjaWYgRU5BQkxFKExFVFRFUlBSRVNT
KQotICAgIFRleHRNb2RlTGV0dGVycHJlc3MgPSAxIDw8IDIsCisgICAgTGV0dGVycHJlc3MgPSAx
IDw8IDIsCiAjZW5kaWYKIH07Ci10eXBlZGVmIHVuc2lnbmVkIFRleHREcmF3aW5nTW9kZUZsYWdz
OwordXNpbmcgVGV4dERyYXdpbmdNb2RlRmxhZ3MgPSBPcHRpb25TZXQ8VGV4dERyYXdpbmdNb2Rl
PjsKIAogZW51bSBTdHJva2VTdHlsZSB7CiAgICAgTm9TdHJva2UsCkBAIC0yMTAsNyArMjEwLDcg
QEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKICAgICBmbG9hdCBzdHJva2VUaGlja25l
c3MgeyAwIH07CiAgICAgZmxvYXQgc2hhZG93Qmx1ciB7IDAgfTsKIAotICAgIFRleHREcmF3aW5n
TW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSB7IFRleHRNb2RlRmlsbCB9OworICAgIFRleHREcmF3
aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSB7IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9Owog
CiAgICAgQ29sb3Igc3Ryb2tlQ29sb3IgeyBDb2xvcjo6YmxhY2sgfTsKICAgICBDb2xvciBmaWxs
Q29sb3IgeyBDb2xvcjo6YmxhY2sgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAkocmV2aXNpb24gMjU5
NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgUGxhdGZvcm1D
QUxheWVyOjpkcmF3UmVwYWludEluZGljYXQKICAgICBpZiAoIXBsYXRmb3JtQ0FMYXllci0+aXNP
cGFxdWUoKSAmJiBwbGF0Zm9ybUNBTGF5ZXItPnN1cHBvcnRzU3VicGl4ZWxBbnRpYWxpYXNlZFRl
eHQoKSAmJiBwbGF0Zm9ybUNBTGF5ZXItPmFjY2VsZXJhdGVzRHJhd2luZygpKSB7CiAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xvcihsaW5lYXJHbHlwaE1hc2tPdXRsaW5lQ29s
b3IpOwogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDQuNSk7Ci0g
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dE1vZGVGaWxsIHwg
VGV4dE1vZGVTdHJva2UpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0VGV4dERyYXdpbmdN
b2RlKFRleHREcmF3aW5nTW9kZUZsYWdzIHsgVGV4dERyYXdpbmdNb2RlOjpGaWxsLCBUZXh0RHJh
d2luZ01vZGU6OlN0cm9rZSB9KTsKICAgICB9CiAKICAgICBncmFwaGljc0NvbnRleHQuc2V0Rmls
bENvbG9yKHBsYXRmb3JtQ0FMYXllci0+YWNjZWxlcmF0ZXNEcmF3aW5nKCkgPyBhY2NlbGVyYXRl
ZENvbnRleHRMYWJlbENvbG9yIDogdW5hY2NlbGVyYXRlZENvbnRleHRMYWJlbENvbG9yKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzE1LDcgKzMxNSw3IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNUb0NvbnRleHQo
Y2Fpcm9fdCoKIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlLCBUZXh0
RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93
T2Zmc2V0LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250LCBkb3VibGUgc3ludGhldGljQm9sZE9m
ZnNldCwgY29uc3QgVmVjdG9yPGNhaXJvX2dseXBoX3Q+JiBnbHlwaHMsIEZvbnRTbW9vdGhpbmdN
b2RlIGZvbnRTbW9vdGhpbmdNb2RlKQogewogICAgIFNoYWRvd0JsdXIgc2hhZG93KHsgc2hhZG93
U3RhdGUuYmx1ciwgc2hhZG93U3RhdGUuYmx1ciB9LCBzaGFkb3dTdGF0ZS5vZmZzZXQsIHNoYWRv
d1N0YXRlLmNvbG9yLCBzaGFkb3dTdGF0ZS5pZ25vcmVUcmFuc2Zvcm1zKTsKLSAgICBpZiAoISh0
ZXh0RHJhd2luZ01vZGUgJiBUZXh0TW9kZUZpbGwpIHx8IHNoYWRvdy50eXBlKCkgPT0gU2hhZG93
Qmx1cjo6Tm9TaGFkb3cpCisgICAgaWYgKCF0ZXh0RHJhd2luZ01vZGUuY29udGFpbnMoVGV4dERy
YXdpbmdNb2RlOjpGaWxsKSB8fCBzaGFkb3cudHlwZSgpID09IFNoYWRvd0JsdXI6Ok5vU2hhZG93
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXNoYWRvd1N0YXRlLmlzUmVxdWlyZWQocGxh
dGZvcm1Db250ZXh0KSkgewpAQCAtODMyLDcgKzgzMiw3IEBAIHZvaWQgZHJhd0dseXBocyhQbGF0
Zm9ybUNvbnRleHRDYWlybyYgcGwKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dC5j
cigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwogCi0gICAgaWYgKHRleHREcmF3aW5nTW9kZSAmIFRl
eHRNb2RlRmlsbCkgeworICAgIGlmICh0ZXh0RHJhd2luZ01vZGUuY29udGFpbnMoVGV4dERyYXdp
bmdNb2RlOjpGaWxsKSkgewogICAgICAgICBwcmVwYXJlRm9yRmlsbGluZyhjciwgZmlsbFNvdXJj
ZSwgQWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhKTsKICAgICAgICAgZHJhd0dseXBoc1RvQ29u
dGV4dChjciwgc2NhbGVkRm9udCwgc3ludGhldGljQm9sZE9mZnNldCwgZ2x5cGhzLCBmb250U21v
b3RoaW5nTW9kZSk7CiAgICAgfQpAQCAtODQxLDcgKzg0MSw3IEBAIHZvaWQgZHJhd0dseXBocyhQ
bGF0Zm9ybUNvbnRleHRDYWlybyYgcGwKICAgICAvLyB0d2ljZSB0aGUgc2l6ZSBvZiB0aGUgd2lk
dGggb2YgdGhlIHRleHQgd2Ugd2lsbCBub3QgYXNrIGNhaXJvIHRvIHN0cm9rZQogICAgIC8vIHRo
ZSB0ZXh0IGFzIGV2ZW4gb25lIHNpbmdsZSBzdHJva2Ugd291bGQgY292ZXIgdGhlIGZ1bGwgd2R0
aCBvZiB0aGUgdGV4dC4KICAgICAvLyAgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMzc1OS4KLSAgICBpZiAodGV4dERyYXdpbmdNb2RlICYgVGV4dE1vZGVTdHJv
a2UgJiYgc3Ryb2tlVGhpY2tuZXNzIDwgMiAqIHhPZmZzZXQpIHsKKyAgICBpZiAodGV4dERyYXdp
bmdNb2RlLmNvbnRhaW5zKFRleHREcmF3aW5nTW9kZTo6U3Ryb2tlKSAmJiBzdHJva2VUaGlja25l
c3MgPCAyICogeE9mZnNldCkgewogICAgICAgICBwcmVwYXJlRm9yU3Ryb2tpbmcoY3IsIHN0cm9r
ZVNvdXJjZSwgUHJlc2VydmVBbHBoYSk7CiAgICAgICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKGNy
LCBzdHJva2VUaGlja25lc3MpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAy
NTk1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NjAsMTkgKzE3NjAsMTYgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtVGV4dERyYQogICAgIEFTU0VSVChoYXNQbGF0Zm9y
bUNvbnRleHQoKSk7CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4
dCgpOwotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgVGV4dE1vZGVGaWxsOgorICAgIAor
ICAgIGJvb2wgZmlsbCA9IG1vZGUuY29udGFpbnMoVGV4dERyYXdpbmdNb2RlOjpGaWxsKTsKKyAg
ICBib29sIHN0cm9rZSA9IG1vZGUuY29udGFpbnMoVGV4dERyYXdpbmdNb2RlOjpTdHJva2UpOwor
ICAgIGlmIChmaWxsICYmIHN0cm9rZSkKKyAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdN
b2RlKGNvbnRleHQsIGtDR1RleHRGaWxsU3Ryb2tlKTsKKyAgICBlbHNlIGlmIChmaWxsKQogICAg
ICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dEZpbGwpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRNb2RlU3Ryb2tlOgorICAgIGVsc2UgaWYgKHN0
cm9rZSkKICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1Rl
eHRTdHJva2UpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRNb2RlRmlsbCB8IFRleHRN
b2RlU3Ryb2tlOgotICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwg
a0NHVGV4dEZpbGxTdHJva2UpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAg
ICBicmVhazsKLSAgICB9CisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSB1c2Uga0NHVGV4dEludmlz
aWJsZSBpZiBuZWl0aGVyIGZpbGwgbm9yIHN0cm9rZSBpcyB0cnVlPwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYXNjYWRlQ29jb2EubW0JKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGZpbGxWZWN0b3JXaXRo
SG9yaXpvbgogc3RhdGljIGlubGluZSBib29sIHNob3VsZFVzZUxldHRlcnByZXNzRWZmZWN0KGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1Mp
Ci0gICAgcmV0dXJuIGNvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZUxldHRlcnBy
ZXNzOworICAgIHJldHVybiBjb250ZXh0LnRleHREcmF3aW5nTW9kZSgpLmNvbnRhaW5zKFRleHRE
cmF3aW5nTW9kZTo6TGV0dGVycHJlc3MpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4
dCk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgRm9udENhc2Nh
ZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb24KICAgICAgICAgfQogICAgIH07CiAKLSAgICBib29s
IGhhc1NpbXBsZVNoYWRvdyA9IGNvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dE1vZGVG
aWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAhcGxhdGZvcm1E
YXRhLmlzQ29sb3JCaXRtYXBGb250KCkgJiYgKCFjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKCkgfHwgY29udGV4dENUTS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKSAm
JiAhY29udGV4dC5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICBib29sIGhhc1NpbXBsZVNo
YWRvdyA9IGNvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dERyYXdpbmdNb2RlOjpGaWxs
ICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAhcGxhdGZvcm1EYXRh
LmlzQ29sb3JCaXRtYXBGb250KCkgJiYgKCFjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KCkgfHwgY29udGV4dENUTS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKSAmJiAh
Y29udGV4dC5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93
KSB7CiAgICAgICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNlbHZlcyBpbnN0ZWFkIG9m
IHJlbHlpbmcgb24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1YnBpeGVsIGFudGlhbGlh
c2luZy4KICAgICAgICAgY29udGV4dC5jbGVhclNoYWRvdygpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBTZXRTdGF0ZTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIAogICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnN0cm9rZVRoaWNrbmVzczsKIAog
ICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERy
YXdpbmdNb2RlQ2hhbmdlKSkKLSAgICAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHN0YXRlLnRleHRE
cmF3aW5nTW9kZSk7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUudGV4dERyYXdpbmdNb2RlOwog
CiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VDb2xvckNoYW5nZSkpCiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuc3Ryb2tlQ29sb3I7CkBA
IC01NjgsMTEgKzU2OCwxMiBAQCBPcHRpb25hbDxSZWY8U2V0U3RhdGU+PiBTZXRTdGF0ZTo6ZGVj
b2RlCiAgICAgfQogCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpIHsKLSAgICAgICAg
VGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlOwotICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlRW51bSh0ZXh0RHJhd2luZ01vZGUpKQorICAgICAgICBPcHRpb25hbDxUZXh0RHJh
d2luZ01vZGVGbGFncz4gdGV4dERyYXdpbmdNb2RlOworICAgICAgICBkZWNvZGVyID4+IHRleHRE
cmF3aW5nTW9kZTsKKyAgICAgICAgaWYgKCF0ZXh0RHJhd2luZ01vZGUpCiAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUudGV4dERy
YXdpbmdNb2RlID0gdGV4dERyYXdpbmdNb2RlOworICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRl
LnRleHREcmF3aW5nTW9kZSA9IFdURk1vdmUoKnRleHREcmF3aW5nTW9kZSk7CiAgICAgfQogCiAg
ICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAkocmV2
aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0JpdG1hcFRleHR1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQg
Qml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHUKIAogICAgIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CiAgICAgY29udGV4dC5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0KTsKLSAg
ICBjb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShUZXh0TW9kZUZpbGwpOworICAgIGNvbnRleHQu
c2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZTo6RmlsbCk7CiAKICAgICBJbnRSZWN0
IHNvdXJjZVJlY3QodGFyZ2V0UmVjdCk7CiAgICAgc291cmNlUmVjdC5zZXRMb2NhdGlvbihvZmZz
ZXQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJE
T3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI1OTU3NykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NzUsNyArNzc1LDcgQEAgdm9pZCBkcmF3R2x5cGhzKFBsYXRm
b3JtQ29udGV4dERpcmVjdDJEJgogICAgIENvbG9yIHNoYWRvd0NvbG9yOwogICAgIGdyYXBoaWNz
Q29udGV4dC5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7
CiAKLSAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9IGdyYXBoaWNzQ29udGV4dC50ZXh0RHJhd2lu
Z01vZGUoKSA9PSBUZXh0TW9kZUZpbGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFk
b3dCbHVyICYmICghZ3JhcGhpY3NDb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwg
Z3JhcGhpY3NDb250ZXh0LmdldENUTSgpLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVk
KCkpOworICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3
aW5nTW9kZSgpID09IFRleHREcmF3aW5nTW9kZTo6RmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlk
KCkgJiYgIXNoYWRvd0JsdXIgJiYgKCFncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMoKSB8fCBncmFwaGljc0NvbnRleHQuZ2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRp
b25PckZsaXBwZWQoKSk7CiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykgewogICAgICAgICAvLyBQ
YWludCBzaW1wbGUgc2hhZG93cyBvdXJzZWx2ZXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIENHIHNo
YWRvd3MsIHRvIGF2b2lkIGxvc2luZyBzdWJwaXhlbCBhbnRpYWxpYXNpbmcuCiAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAJKHJldmlzaW9uIDI1OTU3NykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0ds
eXBocyhHcmFwaGljc0NvbgogICAgIENvbG9yIHNoYWRvd0NvbG9yOwogICAgIGdyYXBoaWNzQ29u
dGV4dC5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CiAK
LSAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9IGdyYXBoaWNzQ29udGV4dC50ZXh0RHJhd2luZ01v
ZGUoKSA9PSBUZXh0TW9kZUZpbGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dC
bHVyICYmICghZ3JhcGhpY3NDb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgZ3Jh
cGhpY3NDb250ZXh0LmdldENUTSgpLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkp
OworICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5n
TW9kZSgpID09IFRleHREcmF3aW5nTW9kZTo6RmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkg
JiYgIXNoYWRvd0JsdXIgJiYgKCFncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMoKSB8fCBncmFwaGljc0NvbnRleHQuZ2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25P
ckZsaXBwZWQoKSk7CiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykgewogICAgICAgICAvLyBQYWlu
dCBzaW1wbGUgc2hhZG93cyBvdXJzZWx2ZXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIENHIHNoYWRv
d3MsIHRvIGF2b2lkIGxvc2luZyBzdWJwaXhlbCBhbnRpYWxpYXNpbmcuCiAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDYXNjYWRlRGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FzY2FkZURpcmVjdDJELmNwcAko
cmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDYXNjYWRlRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcg
QEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbgogICAgIENvbG9yIHNo
YWRvd0NvbG9yOwogICAgIGdyYXBoaWNzQ29udGV4dC5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBz
aGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CiAKLSAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9IGdy
YXBoaWNzQ29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZUZpbGwgJiYgc2hhZG93
Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICghZ3JhcGhpY3NDb250ZXh0LnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgZ3JhcGhpY3NDb250ZXh0LmdldENUTSgpLmlzSWRlbnRp
dHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpOworICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0g
Z3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9kZSgpID09IFRleHREcmF3aW5nTW9kZTo6Rmls
bCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgKCFncmFwaGljc0Nv
bnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBncmFwaGljc0NvbnRleHQuZ2V0Q1RN
KCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSk7CiAgICAgaWYgKGhhc1NpbXBs
ZVNoYWRvdykgewogICAgICAgICAvLyBQYWludCBzaW1wbGUgc2hhZG93cyBvdXJzZWx2ZXMgaW5z
dGVhZCBvZiByZWx5aW5nIG9uIENHIHNoYWRvd3MsIHRvIGF2b2lkIGxvc2luZyBzdWJwaXhlbCBh
bnRpYWxpYXNpbmcuCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZS5jcHAJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTMsNyArMzUzLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQo
RwogICAgIEludFNpemUgY2FwdHVyZVNpemUgPSB0aGlzLT5jYXB0dXJlU2l6ZSgpOwogICAgIEZs
b2F0UG9pbnQgdGltZUxvY2F0aW9uKGNhcHR1cmVTaXplLndpZHRoKCkgKiAuMDUsIGNhcHR1cmVT
aXplLmhlaWdodCgpICogLjE1KTsKICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6d2hp
dGUpOwotICAgIGNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKFRleHRNb2RlRmlsbCk7CisgICAg
Y29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlOjpGaWxsKTsKICAgICBT
dHJpbmcgc3RyaW5nID0gbWFrZVN0cmluZyhwYWQoJzAnLCAyLCBob3VycyksICc6JywgcGFkKCcw
JywgMiwgbWludXRlcyksICc6JywgcGFkKCcwJywgMiwgc2Vjb25kcyksICcuJywgcGFkKCcwJywg
MywgbWlsbGlzZWNvbmRzICUgMTAwMCkpOwogICAgIGNvbnRleHQuZHJhd1RleHQodGltZUZvbnQs
IFRleHRSdW4oKFN0cmluZ1ZpZXcoc3RyaW5nKSkpLCB0aW1lTG9jYXRpb24pOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAJKHJldmlzaW9uIDI1
OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4NSwxMiArMTg1LDEyIEBAIHZvaWQgdXBkYXRlR3JhcGhpY3NDb250
ZXh0KEdyYXBoaWNzQ29udGUKICAgICBUZXh0RHJhd2luZ01vZGVGbGFncyBuZXdNb2RlID0gbW9k
ZTsKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCiAgICAgaWYgKHBhaW50U3R5bGUudXNlTGV0dGVy
cHJlc3NFZmZlY3QpCi0gICAgICAgIG5ld01vZGUgfD0gVGV4dE1vZGVMZXR0ZXJwcmVzczsKKyAg
ICAgICAgbmV3TW9kZS5hZGQoVGV4dERyYXdpbmdNb2RlOjpMZXR0ZXJwcmVzcyk7CiAgICAgZWxz
ZQotICAgICAgICBuZXdNb2RlICY9IH5UZXh0TW9kZUxldHRlcnByZXNzOworICAgICAgICBuZXdN
b2RlLnJlbW92ZShUZXh0RHJhd2luZ01vZGU6OkxldHRlcnByZXNzKTsKICNlbmRpZgogICAgIGlm
IChwYWludFN0eWxlLnN0cm9rZVdpZHRoID4gMCAmJiBwYWludFN0eWxlLnN0cm9rZUNvbG9yLmlz
VmlzaWJsZSgpKQotICAgICAgICBuZXdNb2RlIHw9IFRleHRNb2RlU3Ryb2tlOworICAgICAgICBu
ZXdNb2RlLmFkZChUZXh0RHJhd2luZ01vZGU6OlN0cm9rZSk7CiAgICAgaWYgKG1vZGUgIT0gbmV3
TW9kZSkgewogICAgICAgICBjb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShuZXdNb2RlKTsKICAg
ICAgICAgbW9kZSA9IG5ld01vZGU7CkBAIC0yMDEsMTAgKzIwMSwxMCBAQCB2b2lkIHVwZGF0ZUdy
YXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRlCiAjZW5kaWYKIAogICAgIENvbG9yIGZpbGxDb2xv
ciA9IGZpbGxDb2xvclR5cGUgPT0gVXNlRW1waGFzaXNNYXJrQ29sb3IgPyBwYWludFN0eWxlLmVt
cGhhc2lzTWFya0NvbG9yIDogcGFpbnRTdHlsZS5maWxsQ29sb3I7Ci0gICAgaWYgKG1vZGUgJiBU
ZXh0TW9kZUZpbGwgJiYgKGZpbGxDb2xvciAhPSBjb250ZXh0LmZpbGxDb2xvcigpKSkKKyAgICBp
ZiAobW9kZSAmIFRleHREcmF3aW5nTW9kZTo6RmlsbCAmJiAoZmlsbENvbG9yICE9IGNvbnRleHQu
ZmlsbENvbG9yKCkpKQogICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IpOwog
Ci0gICAgaWYgKG1vZGUgJiBUZXh0TW9kZVN0cm9rZSkgeworICAgIGlmIChtb2RlICYgVGV4dERy
YXdpbmdNb2RlOjpTdHJva2UpIHsKICAgICAgICAgaWYgKHBhaW50U3R5bGUuc3Ryb2tlQ29sb3Ig
IT0gY29udGV4dC5zdHJva2VDb2xvcigpKQogICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VD
b2xvcihwYWludFN0eWxlLnN0cm9rZUNvbG9yKTsKICAgICAgICAgaWYgKHBhaW50U3R5bGUuc3Ry
b2tlV2lkdGggIT0gY29udGV4dC5zdHJva2VUaGlja25lc3MoKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYw
LDEzICsxNjAsMTUgQEAgdm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0QW5kRW1waGFzaXNNYQog
ICAgICAgICBmb3IgKGF1dG8gb3JkZXIgOiBwYWludE9yZGVyKSB7CiAgICAgICAgICAgICBzd2l0
Y2ggKG9yZGVyKSB7CiAgICAgICAgICAgICBjYXNlIFBhaW50VHlwZTo6RmlsbDoKLSAgICAgICAg
ICAgICAgICBtX2NvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9kZSAmIH5U
ZXh0TW9kZVN0cm9rZSk7CisgICAgICAgICAgICAgICAgdGV4dERyYXdpbmdNb2RlLnJlbW92ZShU
ZXh0RHJhd2luZ01vZGU6OlN0cm9rZSk7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LnNldFRl
eHREcmF3aW5nTW9kZSh0ZXh0RHJhd2luZ01vZGUpOwogICAgICAgICAgICAgICAgIHBhaW50VGV4
dFdpdGhTaGFkb3dzKHNoYWRvd1RvVXNlLCBzaGFkb3dDb2xvckZpbHRlciwgKm1fZm9udCwgdGV4
dFJ1biwgYm94UmVjdCwgdGV4dE9yaWdpbiwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbnVsbEF0
b20oKSwgMCwgZmFsc2UpOwogICAgICAgICAgICAgICAgIHNoYWRvd1RvVXNlID0gbnVsbHB0cjsK
ICAgICAgICAgICAgICAgICBtX2NvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKHRleHREcmF3aW5n
TW9kZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhaW50VHlw
ZTo6U3Ryb2tlOgotICAgICAgICAgICAgICAgIG1fY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUo
dGV4dERyYXdpbmdNb2RlICYgflRleHRNb2RlRmlsbCk7CisgICAgICAgICAgICAgICAgdGV4dERy
YXdpbmdNb2RlLnJlbW92ZShUZXh0RHJhd2luZ01vZGU6OkZpbGwpOworICAgICAgICAgICAgICAg
IG1fY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUodGV4dERyYXdpbmdNb2RlKTsKICAgICAgICAg
ICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyhzaGFkb3dUb1VzZSwgc2hhZG93Q29sb3JGaWx0
ZXIsICptX2ZvbnQsIHRleHRSdW4sIGJveFJlY3QsIHRleHRPcmlnaW4sIHN0YXJ0T2Zmc2V0LCBl
bmRPZmZzZXQsIG51bGxBdG9tKCksIDAsIHBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwKTsKICAg
ICAgICAgICAgICAgICBzaGFkb3dUb1VzZSA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgbV9j
b250ZXh0LnNldFRleHREcmF3aW5nTW9kZSh0ZXh0RHJhd2luZ01vZGUpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuY3BwCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjcsNyArMTY3LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlcwog
ICAgICAgICB9CiAjZW5kaWYKIAotICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUo
cmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6QXBwbHlUb0ZpbGwp
ID8gVGV4dE1vZGVGaWxsIDogVGV4dE1vZGVTdHJva2UpOworICAgICAgICBjb250ZXh0LT5zZXRU
ZXh0RHJhd2luZ01vZGUocmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9k
ZTo6QXBwbHlUb0ZpbGwpID8gVGV4dERyYXdpbmdNb2RlOjpGaWxsIDogVGV4dERyYXdpbmdNb2Rl
OjpTdHJva2UpOwogICAgIH0KIAogICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9
IHN0eWxlLnN2Z1N0eWxlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCShyZXZpc2lvbiAyNTk1
NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSwxMyArMTg1LDEzIEBAIGJvb2wgUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuOjphcHBseVJlc28KIAogICAgIGlmIChyZXNvdXJjZU1vZGUuY29u
dGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvVGV4dCkpIHsKICAgICAgICAgaWYg
KHJlc291cmNlTW9kZS5jb250YWlucyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6OkFwcGx5VG9GaWxs
KSkgewotICAgICAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKFRleHRNb2RlRmls
bCk7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdN
b2RlOjpGaWxsKTsKIAogI2lmIFVTRShDRykKICAgICAgICAgICAgIGNvbnRleHQtPmFwcGx5Rmls
bFBhdHRlcm4oKTsKICNlbmRpZgogICAgICAgICB9IGVsc2UgaWYgKHJlc291cmNlTW9kZS5jb250
YWlucyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6OkFwcGx5VG9TdHJva2UpKSB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dE1vZGVTdHJva2UpOworICAgICAgICAg
ICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZTo6U3Ryb2tlKTsK
IAogI2lmIFVTRShDRykKICAgICAgICAgICAgIGNvbnRleHQtPmFwcGx5U3Ryb2tlUGF0dGVybigp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNv
bGlkQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VT
b2xpZENvbG9yOjphcHBseVIKICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxSdWxlKHN2Z1N0
eWxlLmZpbGxSdWxlKCkpOwogCiAgICAgICAgIGlmIChyZXNvdXJjZU1vZGUuY29udGFpbnMoUmVu
ZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvVGV4dCkpCi0gICAgICAgICAgICBjb250ZXh0LT5z
ZXRUZXh0RHJhd2luZ01vZGUoVGV4dE1vZGVGaWxsKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNl
dFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGU6OkZpbGwpOwogICAgIH0gZWxzZSBpZiAo
cmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6QXBwbHlUb1N0cm9r
ZSkpIHsKICAgICAgICAgLy8gV2hlbiByZW5kZXJpbmcgdGhlIG1hc2sgZm9yIGEgUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyLCB0aGUgc3Ryb2tlIGNvZGUgcGF0aCBpcyBuZXZlciBoaXQuCiAgICAg
ICAgIEFTU0VSVCghaXNSZW5kZXJpbmdNYXNrKTsKQEAgLTYxLDcgKzYxLDcgQEAgYm9vbCBSZW5k
ZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3I6OmFwcGx5UgogICAgICAgICBTVkdSZW5kZXJTdXBwb3J0
OjphcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KGNvbnRleHQsIHN0eWxlLCByZW5kZXJlcik7CiAK
ICAgICAgICAgaWYgKHJlc291cmNlTW9kZS5jb250YWlucyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6
OkFwcGx5VG9UZXh0KSkKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShU
ZXh0TW9kZVN0cm9rZSk7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUo
VGV4dERyYXdpbmdNb2RlOjpTdHJva2UpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpJbmRl
eDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI1OTc2NykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDQtMDggIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJUEMgc2VyaWFsaXphdGlv
biBvZiBlbnVtcyBzaG91bGQgc2VyaWFsaXplIHN0ZDo6dW5kZXJseWluZ190eXBlIGluc3RlYWQg
b2YgdWludDY0X3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMDIyOAorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6IGFuZCBEYXJpbiBB
ZGxlci4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmg6CisgICAgICAgIChJUEM6
OkRlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChJUEM6OkRlY29kZXI6Om9wZXJhdG9yPj4pOgor
ICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGVFbnVtKToKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvRW5jb2Rlci5oOgorICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcDoK
KyAgICAgICAgKElQQzo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6ZGVjb2RlKToKKwogMjAyMC0w
NC0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSGFuZGxl
IFtQREZEb2N1bWVudCBpbml0V2l0aFByb3ZpZGVyOl0gcmV0dXJuaW5nIG5pbApJbmRleDogU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMTAg
KzEwNCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZWNvZGUoZG91YmxlJik7CiAgICAgRGVjb2Rl
ciYgb3BlcmF0b3I+PihPcHRpb25hbDxkb3VibGU+Jik7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBFPgotICAgIGF1dG8gZGVjb2RlKEUmIGUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19l
bnVtPEU+Ojp2YWx1ZSwgYm9vbD4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCB0eXBlbmFtZSA9
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4+CisgICAgYm9vbCBkZWNv
ZGUoRSYgZSkKICAgICB7Ci0gICAgICAgIHVpbnQ2NF90IHZhbHVlOworICAgICAgICB0eXBlbmFt
ZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlwZSB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNv
ZGUodmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIWlzVmFs
aWRFbnVtPEU+KHZhbHVlKSkKQEAgLTExNywxMCArMTE3LDEwIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRSwgc3RkOjplbmFi
bGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiogPSBudWxscHRyPgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46
OnZhbHVlPj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPEU+JiBvcHRpb25hbCkK
ICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB2YWx1ZTsKKyAgICAgICAgT3B0aW9u
YWw8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGU+IHZhbHVlOwogICAgICAg
ICAqdGhpcyA+PiB2YWx1ZTsKICAgICAgICAgaWYgKHZhbHVlICYmIGlzVmFsaWRFbnVtPEU+KCp2
YWx1ZSkpCiAgICAgICAgICAgICBvcHRpb25hbCA9IHN0YXRpY19jYXN0PEU+KCp2YWx1ZSk7CkBA
IC0xMjksMTIgKzEyOSwxMCBAQCBwdWJsaWM6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBi
b29sIGRlY29kZUVudW0oVCYgcmVzdWx0KQogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChz
aXplb2YoVCkgPD0gOCwgIkVudW0gdHlwZSBUIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJp
dHMhIik7Ci0KLSAgICAgICAgdWludDY0X3QgdmFsdWU7CisgICAgICAgIHR5cGVuYW1lIHN0ZDo6
dW5kZXJseWluZ190eXBlPFQ+Ojp0eXBlIHZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZSh2YWx1
ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3Vs
dCA9IHN0YXRpY19jYXN0PFQ+KHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAkocmV2aXNpb24gMjU5NTc3KQor
KysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC02MSw5ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQg
ZW5jb2RlRW51bShUIHQpCiAgICAgewotICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoVCkg
PD0gc2l6ZW9mKHVpbnQ2NF90KSwgZW51bV90eXBlX211c3Rfbm90X2JlX2xhcmdlcl90aGFuXzY0
X2JpdHMpOwotCi0gICAgICAgIGVuY29kZShzdGF0aWNfY2FzdDx1aW50NjRfdD4odCkpOworICAg
ICAgICBlbmNvZGUoc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8VD46
OnR5cGU+KHQpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJs
ZV9pZl90PCFzdGQ6OmlzX2VudW08dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJl
bW92ZV9yZWZlcmVuY2VfdDxUPj4+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KQEAgLTc1LDcgKzczLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBFbmNvZGVyJiBvcGVyYXRvcjw8
KFQmJiB0KQogICAgIHsKLSAgICAgICAgZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0KSk7
CisgICAgICAgIGVuY29kZShzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlw
ZTxUPjo6dHlwZT4odCkpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCkBAIC0xMTMs
MTAgKzExMSw4IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRT4KICAgICBhdXRv
IGVuY29kZShFIHZhbHVlKSAtPiBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFs
dWU+CiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihFKSA8PSBzaXplb2YodWlu
dDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMuIik7Ci0K
LSAgICAgICAgQVNTRVJUKGlzVmFsaWRFbnVtPEU+KHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1
ZSkpKTsKLSAgICAgICAgZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSkpOworICAg
ICAgICBBU1NFUlQoaXNWYWxpZEVudW08RT4oc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjp1bmRl
cmx5aW5nX3R5cGU8RT46OnR5cGU+KHZhbHVlKSkpOworICAgICAgICBlbmNvZGUoc3RhdGljX2Nh
c3Q8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGU+KHZhbHVlKSk7CiAgICAg
fQogCiAgICAgdm9pZCBlbmNvZGVIZWFkZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDkxLDcgKzQ5MSw3IEBAIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIENGTnVtYmVyUmUK
ICAgICBib29sIHJlc3VsdCA9IENGTnVtYmVyR2V0VmFsdWUobnVtYmVyLCBudW1iZXJUeXBlLCBi
dWZmZXIuZGF0YSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKIAotICAg
IGVuY29kZXIuZW5jb2RlRW51bShudW1iZXJUeXBlKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KG51bWJlclR5cGUpOwogICAgIGVuY29kZXIgPDwgSVBDOjpEYXRhUmVmZXJl
bmNlKGJ1ZmZlcik7CiB9CiAKQEAgLTUzNyw5ICs1MzcsMTEgQEAgc3RhdGljIHNpemVfdCBzaXpl
Rm9yTnVtYmVyVHlwZShDRk51bWJlcgogCiBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBS
ZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+JiByZXN1bHQpCiB7Ci0gICAgQ0ZOdW1iZXJUeXBlIG51bWJl
clR5cGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0obnVtYmVyVHlwZSkpCisgICAgT3B0
aW9uYWw8dWludDhfdD4gbnVtYmVyVHlwZUZyb21JUEM7CisgICAgZGVjb2RlciA+PiBudW1iZXJU
eXBlRnJvbUlQQzsKKyAgICBpZiAoIW51bWJlclR5cGVGcm9tSVBDIHx8ICpudW1iZXJUeXBlRnJv
bUlQQyA+IGtDRk51bWJlck1heFR5cGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRv
IG51bWJlclR5cGUgPSBzdGF0aWNfY2FzdDxDRk51bWJlclR5cGU+KCpudW1iZXJUeXBlRnJvbUlQ
Qyk7CiAKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQpAQCAtNTcxLDE1ICs1NzMsMTcgQEAgdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgQ0ZTdHJpbmdSZQogICAgIG51bUNvbnZlcnRlZEJ5dGVz
ID0gQ0ZTdHJpbmdHZXRCeXRlcyhzdHJpbmcsIHJhbmdlLCBlbmNvZGluZywgMCwgZmFsc2UsIGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksICZidWZmZXJMZW5ndGgpOwogICAgIEFTU0VSVChu
dW1Db252ZXJ0ZWRCeXRlcyA9PSBsZW5ndGgpOwogCi0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKGVu
Y29kaW5nKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PFVJbnQzMj4oZW5jb2RpbmcpOwog
ICAgIGVuY29kZXIgPDwgSVBDOjpEYXRhUmVmZXJlbmNlKGJ1ZmZlcik7CiB9CiAKIGJvb2wgZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxDRlN0cmluZ1JlZj4mIHJlc3VsdCkKIHsK
LSAgICBDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVF
bnVtKGVuY29kaW5nKSkKKyAgICBVSW50MzIgZW5jb2RpbmdGcm9tSVBDOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZW5jb2RpbmdGcm9tSVBDKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IC8vIEZJWE1FOiBTaG91bGQgd2UgdmFsaWRhdGUgdGhhdCB0aGlzIHZhbHVlIGlzIGFuIGV4cGVj
dGVkIHZhbHVlPworICAgIGF1dG8gZW5jb2RpbmcgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ0VuY29k
aW5nPihlbmNvZGluZ0Zyb21JUEMpOwogCiAgICAgaWYgKCFDRlN0cmluZ0lzRW5jb2RpbmdBdmFp
bGFibGUoZW5jb2RpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395914</attachid>
            <date>2020-04-08 23:16:37 -0700</date>
            <delta_ts>2020-04-09 20:00:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210228-20200408231637.patch</filename>
            <type>text/plain</type>
            <size>28776</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIwLTA0LTA4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSVBDIHNlcmlh
bGl6YXRpb24gb2YgZW51bXMgc2hvdWxkIHNlcmlhbGl6ZSBzdGQ6OnVuZGVybHlpbmdfdHlwZSBp
bnN0ZWFkIG9mIHVpbnQ2NF90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTAyMjgKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1leiBhbmQg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLCBvdGhlciB0aGFu
IGxlc3MgbWVtb3J5IGFuZCB0aW1lIHNwZW50IGluIElQQyBjb2RlLgorCisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9kZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZFVzZUxldHRlcnByZXNzRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRl
OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVv
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpk
cmF3VGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnVwZGF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L1RleHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRl
eHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdS
ZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm46OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlU29saWRDb2xvcjo6YXBwbHlSZXNvdXJjZSk6CisKIDIwMjAtMDQtMDYg
IEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1h
dGlvbnNdIE1vdmUgRG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygpIHRvIERvY3VtZW50T3JTaGFkb3dS
b290CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU1OCw3ICs1NTgsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJh
d1RleHRJCiAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhj
LT5zdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBtYXNrSW1hZ2VDb250
ZXh0LnNldFRleHREcmF3aW5nTW9kZShmaWxsID8gVGV4dE1vZGVGaWxsIDogVGV4dE1vZGVTdHJv
a2UpOworICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShmaWxsID8g
VGV4dERyYXdpbmdNb2RlOjpGaWxsIDogVGV4dERyYXdpbmdNb2RlOjpTdHJva2UpOwogCiAgICAg
ICAgIGlmICh1c2VNYXhXaWR0aCkgewogICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC50cmFu
c2xhdGUobG9jYXRpb24gLSBtYXNrUmVjdC5sb2NhdGlvbigpKTsKQEAgLTU3OCw3ICs1NzgsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJCiAgICAgfQogI2VuZGlm
CiAKLSAgICBjLT5zZXRUZXh0RHJhd2luZ01vZGUoZmlsbCA/IFRleHRNb2RlRmlsbCA6IFRleHRN
b2RlU3Ryb2tlKTsKKyAgICBjLT5zZXRUZXh0RHJhd2luZ01vZGUoZmlsbCA/IFRleHREcmF3aW5n
TW9kZTo6RmlsbCA6IFRleHREcmF3aW5nTW9kZTo6U3Ryb2tlKTsKIAogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYyk7CiAgICAgaWYgKHVzZU1heFdpZHRoKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw3ICsy
ODUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpkdW1wKFRlCiAgICAgICAg
IHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXRoaWNrbmVzcyIsIG1fc3RhdGUuc3Ryb2tlVGhpY2tu
ZXNzKTsKIAogICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInRl
eHQtZHJhd2luZy1tb2RlIiwgbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUpOworICAgICAgICB0cy5k
dW1wUHJvcGVydHkoInRleHQtZHJhd2luZy1tb2RlIiwgbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUu
dG9SYXcoKSk7CiAKICAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0
cm9rZS1jb2xvciIsIG1fc3RhdGUuc3Ryb2tlQ29sb3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDI1
OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCwxNCArOTgsMTQgQEAgY2xhc3MgUGF0aDsKIGNsYXNz
IFRleHRSdW47CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAotZW51bSBUZXh0RHJhd2lu
Z01vZGUgewotICAgIFRleHRNb2RlRmlsbCA9IDEgPDwgMCwKLSAgICBUZXh0TW9kZVN0cm9rZSA9
IDEgPDwgMSwKK2VudW0gY2xhc3MgVGV4dERyYXdpbmdNb2RlIDogdWludDhfdCB7CisgICAgRmls
bCA9IDEgPDwgMCwKKyAgICBTdHJva2UgPSAxIDw8IDEsCiAjaWYgRU5BQkxFKExFVFRFUlBSRVNT
KQotICAgIFRleHRNb2RlTGV0dGVycHJlc3MgPSAxIDw8IDIsCisgICAgTGV0dGVycHJlc3MgPSAx
IDw8IDIsCiAjZW5kaWYKIH07Ci10eXBlZGVmIHVuc2lnbmVkIFRleHREcmF3aW5nTW9kZUZsYWdz
OwordXNpbmcgVGV4dERyYXdpbmdNb2RlRmxhZ3MgPSBPcHRpb25TZXQ8VGV4dERyYXdpbmdNb2Rl
PjsKIAogZW51bSBTdHJva2VTdHlsZSB7CiAgICAgTm9TdHJva2UsCkBAIC0yMTAsNyArMjEwLDcg
QEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKICAgICBmbG9hdCBzdHJva2VUaGlja25l
c3MgeyAwIH07CiAgICAgZmxvYXQgc2hhZG93Qmx1ciB7IDAgfTsKIAotICAgIFRleHREcmF3aW5n
TW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSB7IFRleHRNb2RlRmlsbCB9OworICAgIFRleHREcmF3
aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSB7IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9Owog
CiAgICAgQ29sb3Igc3Ryb2tlQ29sb3IgeyBDb2xvcjo6YmxhY2sgfTsKICAgICBDb2xvciBmaWxs
Q29sb3IgeyBDb2xvcjo6YmxhY2sgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAkocmV2aXNpb24gMjU5
NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgUGxhdGZvcm1D
QUxheWVyOjpkcmF3UmVwYWludEluZGljYXQKICAgICBpZiAoIXBsYXRmb3JtQ0FMYXllci0+aXNP
cGFxdWUoKSAmJiBwbGF0Zm9ybUNBTGF5ZXItPnN1cHBvcnRzU3VicGl4ZWxBbnRpYWxpYXNlZFRl
eHQoKSAmJiBwbGF0Zm9ybUNBTGF5ZXItPmFjY2VsZXJhdGVzRHJhd2luZygpKSB7CiAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xvcihsaW5lYXJHbHlwaE1hc2tPdXRsaW5lQ29s
b3IpOwogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDQuNSk7Ci0g
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dE1vZGVGaWxsIHwg
VGV4dE1vZGVTdHJva2UpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0VGV4dERyYXdpbmdN
b2RlKFRleHREcmF3aW5nTW9kZUZsYWdzIHsgVGV4dERyYXdpbmdNb2RlOjpGaWxsLCBUZXh0RHJh
d2luZ01vZGU6OlN0cm9rZSB9KTsKICAgICB9CiAKICAgICBncmFwaGljc0NvbnRleHQuc2V0Rmls
bENvbG9yKHBsYXRmb3JtQ0FMYXllci0+YWNjZWxlcmF0ZXNEcmF3aW5nKCkgPyBhY2NlbGVyYXRl
ZENvbnRleHRMYWJlbENvbG9yIDogdW5hY2NlbGVyYXRlZENvbnRleHRMYWJlbENvbG9yKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzE1LDcgKzMxNSw3IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNUb0NvbnRleHQo
Y2Fpcm9fdCoKIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlLCBUZXh0
RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93
T2Zmc2V0LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250LCBkb3VibGUgc3ludGhldGljQm9sZE9m
ZnNldCwgY29uc3QgVmVjdG9yPGNhaXJvX2dseXBoX3Q+JiBnbHlwaHMsIEZvbnRTbW9vdGhpbmdN
b2RlIGZvbnRTbW9vdGhpbmdNb2RlKQogewogICAgIFNoYWRvd0JsdXIgc2hhZG93KHsgc2hhZG93
U3RhdGUuYmx1ciwgc2hhZG93U3RhdGUuYmx1ciB9LCBzaGFkb3dTdGF0ZS5vZmZzZXQsIHNoYWRv
d1N0YXRlLmNvbG9yLCBzaGFkb3dTdGF0ZS5pZ25vcmVUcmFuc2Zvcm1zKTsKLSAgICBpZiAoISh0
ZXh0RHJhd2luZ01vZGUgJiBUZXh0TW9kZUZpbGwpIHx8IHNoYWRvdy50eXBlKCkgPT0gU2hhZG93
Qmx1cjo6Tm9TaGFkb3cpCisgICAgaWYgKCF0ZXh0RHJhd2luZ01vZGUuY29udGFpbnMoVGV4dERy
YXdpbmdNb2RlOjpGaWxsKSB8fCBzaGFkb3cudHlwZSgpID09IFNoYWRvd0JsdXI6Ok5vU2hhZG93
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXNoYWRvd1N0YXRlLmlzUmVxdWlyZWQocGxh
dGZvcm1Db250ZXh0KSkgewpAQCAtODMyLDcgKzgzMiw3IEBAIHZvaWQgZHJhd0dseXBocyhQbGF0
Zm9ybUNvbnRleHRDYWlybyYgcGwKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dC5j
cigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwogCi0gICAgaWYgKHRleHREcmF3aW5nTW9kZSAmIFRl
eHRNb2RlRmlsbCkgeworICAgIGlmICh0ZXh0RHJhd2luZ01vZGUuY29udGFpbnMoVGV4dERyYXdp
bmdNb2RlOjpGaWxsKSkgewogICAgICAgICBwcmVwYXJlRm9yRmlsbGluZyhjciwgZmlsbFNvdXJj
ZSwgQWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhKTsKICAgICAgICAgZHJhd0dseXBoc1RvQ29u
dGV4dChjciwgc2NhbGVkRm9udCwgc3ludGhldGljQm9sZE9mZnNldCwgZ2x5cGhzLCBmb250U21v
b3RoaW5nTW9kZSk7CiAgICAgfQpAQCAtODQxLDcgKzg0MSw3IEBAIHZvaWQgZHJhd0dseXBocyhQ
bGF0Zm9ybUNvbnRleHRDYWlybyYgcGwKICAgICAvLyB0d2ljZSB0aGUgc2l6ZSBvZiB0aGUgd2lk
dGggb2YgdGhlIHRleHQgd2Ugd2lsbCBub3QgYXNrIGNhaXJvIHRvIHN0cm9rZQogICAgIC8vIHRo
ZSB0ZXh0IGFzIGV2ZW4gb25lIHNpbmdsZSBzdHJva2Ugd291bGQgY292ZXIgdGhlIGZ1bGwgd2R0
aCBvZiB0aGUgdGV4dC4KICAgICAvLyAgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMzc1OS4KLSAgICBpZiAodGV4dERyYXdpbmdNb2RlICYgVGV4dE1vZGVTdHJv
a2UgJiYgc3Ryb2tlVGhpY2tuZXNzIDwgMiAqIHhPZmZzZXQpIHsKKyAgICBpZiAodGV4dERyYXdp
bmdNb2RlLmNvbnRhaW5zKFRleHREcmF3aW5nTW9kZTo6U3Ryb2tlKSAmJiBzdHJva2VUaGlja25l
c3MgPCAyICogeE9mZnNldCkgewogICAgICAgICBwcmVwYXJlRm9yU3Ryb2tpbmcoY3IsIHN0cm9r
ZVNvdXJjZSwgUHJlc2VydmVBbHBoYSk7CiAgICAgICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKGNy
LCBzdHJva2VUaGlja25lc3MpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAy
NTk1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NjAsMTkgKzE3NjAsMTcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtVGV4dERyYQogICAgIEFTU0VSVChoYXNQbGF0Zm9y
bUNvbnRleHQoKSk7CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4
dCgpOwotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgVGV4dE1vZGVGaWxsOgorICAgIAor
ICAgIGJvb2wgZmlsbCA9IG1vZGUuY29udGFpbnMoVGV4dERyYXdpbmdNb2RlOjpGaWxsKTsKKyAg
ICBib29sIHN0cm9rZSA9IG1vZGUuY29udGFpbnMoVGV4dERyYXdpbmdNb2RlOjpTdHJva2UpOwor
ICAgIGlmIChmaWxsICYmIHN0cm9rZSkKKyAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdN
b2RlKGNvbnRleHQsIGtDR1RleHRGaWxsU3Ryb2tlKTsKKyAgICBlbHNlIGlmIChmaWxsKQogICAg
ICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dEZpbGwpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRNb2RlU3Ryb2tlOgorICAgIGVsc2UgaWYgKHN0
cm9rZSkKICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1Rl
eHRTdHJva2UpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRNb2RlRmlsbCB8IFRleHRN
b2RlU3Ryb2tlOgotICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwg
a0NHVGV4dEZpbGxTdHJva2UpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAg
ICBicmVhazsKLSAgICB9CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29uc3Qg
Q29sb3ImIGNvbG9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udENhc2NhZGVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCShyZXZpc2lvbiAyNTk1Nzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBmaWxsVmVjdG9yV2l0aEhvcml6b24KIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRVc2VMZXR0
ZXJwcmVzc0VmZmVjdChjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAjaWYgRU5B
QkxFKExFVFRFUlBSRVNTKQotICAgIHJldHVybiBjb250ZXh0LnRleHREcmF3aW5nTW9kZSgpICYg
VGV4dE1vZGVMZXR0ZXJwcmVzczsKKyAgICByZXR1cm4gY29udGV4dC50ZXh0RHJhd2luZ01vZGUo
KS5jb250YWlucyhUZXh0RHJhd2luZ01vZGU6OkxldHRlcnByZXNzKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGNvbnRleHQpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTI3OCw3ICsyNzgsNyBA
QCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29uCiAgICAgICAgIH0KICAg
ICB9OwogCi0gICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBjb250ZXh0LnRleHREcmF3aW5nTW9k
ZSgpID09IFRleHRNb2RlRmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0Js
dXIgJiYgIXBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgpICYmICghY29udGV4dC5zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGNvbnRleHRDVE0uaXNJZGVudGl0eU9yVHJhbnNsYXRp
b25PckZsaXBwZWQoKSkgJiYgIWNvbnRleHQuaXNJblRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAg
Ym9vbCBoYXNTaW1wbGVTaGFkb3cgPSBjb250ZXh0LnRleHREcmF3aW5nTW9kZSgpID09IFRleHRE
cmF3aW5nTW9kZTo6RmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIg
JiYgIXBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgpICYmICghY29udGV4dC5zaGFkb3dz
SWdub3JlVHJhbnNmb3JtcygpIHx8IGNvbnRleHRDVE0uaXNJZGVudGl0eU9yVHJhbnNsYXRpb25P
ckZsaXBwZWQoKSkgJiYgIWNvbnRleHQuaXNJblRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgaWYg
KGhhc1NpbXBsZVNoYWRvdykgewogICAgICAgICAvLyBQYWludCBzaW1wbGUgc2hhZG93cyBvdXJz
ZWx2ZXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIENHIHNoYWRvd3MsIHRvIGF2b2lkIGxvc2luZyBz
dWJwaXhlbCBhbnRpYWxpYXNpbmcuCiAgICAgICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAkocmV2aXNpb24gMjU5NTc3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgU2V0U3RhdGU6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSAKICAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5zdHJv
a2VUaGlja25lc3M7CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSkpCi0gICAgICAgIGVuY29kZXIuZW5jb2Rl
RW51bShzdGF0ZS50ZXh0RHJhd2luZ01vZGUpOworICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnRl
eHREcmF3aW5nTW9kZTsKIAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQogICAgICAgICBlbmNvZGVyIDw8IHN0YXRl
LnN0cm9rZUNvbG9yOwpAQCAtNTY4LDExICs1NjgsMTIgQEAgT3B0aW9uYWw8UmVmPFNldFN0YXRl
Pj4gU2V0U3RhdGU6OmRlY29kZQogICAgIH0KIAogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFu
Z2UpKSB7Ci0gICAgICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZTsKLSAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0odGV4dERyYXdpbmdNb2RlKSkKKyAgICAgICAg
T3B0aW9uYWw8VGV4dERyYXdpbmdNb2RlRmxhZ3M+IHRleHREcmF3aW5nTW9kZTsKKyAgICAgICAg
ZGVjb2RlciA+PiB0ZXh0RHJhd2luZ01vZGU7CisgICAgICAgIGlmICghdGV4dERyYXdpbmdNb2Rl
KQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgICAgICBzdGF0ZUNoYW5n
ZS5tX3N0YXRlLnRleHREcmF3aW5nTW9kZSA9IHRleHREcmF3aW5nTW9kZTsKKyAgICAgICAgc3Rh
dGVDaGFuZ2UubV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUgPSBXVEZNb3ZlKCp0ZXh0RHJhd2luZ01v
ZGUpOwogICAgIH0KIAogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VDb2xvckNoYW5nZSkpIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZS5jcHAJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NyArNDUsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1CiAKICAg
ICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwogICAg
IGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0
eTo6RGVmYXVsdCk7Ci0gICAgY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dE1vZGVGaWxs
KTsKKyAgICBjb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGU6OkZpbGwp
OwogCiAgICAgSW50UmVjdCBzb3VyY2VSZWN0KHRhcmdldFJlY3QpOwogICAgIHNvdXJjZVJlY3Qu
c2V0TG9jYXRpb24ob2Zmc2V0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAyNTk1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0
MkRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzc1LDcgKzc3NSw3IEBAIHZvaWQg
ZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYKICAgICBDb2xvciBzaGFkb3dDb2xv
cjsKICAgICBncmFwaGljc0NvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1
ciwgc2hhZG93Q29sb3IpOwogCi0gICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBncmFwaGljc0Nv
bnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dE1vZGVGaWxsICYmIHNoYWRvd0NvbG9yLmlz
VmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAoIWdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcygpIHx8IGdyYXBoaWNzQ29udGV4dC5nZXRDVE0oKS5pc0lkZW50aXR5T3JUcmFu
c2xhdGlvbk9yRmxpcHBlZCgpKTsKKyAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9IGdyYXBoaWNz
Q29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0RHJhd2luZ01vZGU6OkZpbGwgJiYgc2hh
ZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICghZ3JhcGhpY3NDb250ZXh0LnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgZ3JhcGhpY3NDb250ZXh0LmdldENUTSgpLmlzSWRl
bnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpOwogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cp
IHsKICAgICAgICAgLy8gUGFpbnQgc2ltcGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGluc3RlYWQgb2Yg
cmVseWluZyBvbiBDRyBzaGFkb3dzLCB0byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwgYW50aWFsaWFz
aW5nLgogICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCShy
ZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udENHV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgRm9u
dENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb24KICAgICBDb2xvciBzaGFkb3dDb2xvcjsK
ICAgICBncmFwaGljc0NvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwg
c2hhZG93Q29sb3IpOwogCi0gICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBncmFwaGljc0NvbnRl
eHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dE1vZGVGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFs
aWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAoIWdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJh
bnNmb3JtcygpIHx8IGdyYXBoaWNzQ29udGV4dC5nZXRDVE0oKS5pc0lkZW50aXR5T3JUcmFuc2xh
dGlvbk9yRmxpcHBlZCgpKTsKKyAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9IGdyYXBoaWNzQ29u
dGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0RHJhd2luZ01vZGU6OkZpbGwgJiYgc2hhZG93
Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICghZ3JhcGhpY3NDb250ZXh0LnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgZ3JhcGhpY3NDb250ZXh0LmdldENUTSgpLmlzSWRlbnRp
dHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpOwogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpIHsK
ICAgICAgICAgLy8gUGFpbnQgc2ltcGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGluc3RlYWQgb2YgcmVs
eWluZyBvbiBDRyBzaGFkb3dzLCB0byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwgYW50aWFsaWFzaW5n
LgogICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FzY2FkZURpcmVjdDJELmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhc2Nh
ZGVEaXJlY3QyRC5jcHAJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FzY2FkZURpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3ND
b24KICAgICBDb2xvciBzaGFkb3dDb2xvcjsKICAgICBncmFwaGljc0NvbnRleHQuZ2V0U2hhZG93
KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOwogCi0gICAgYm9vbCBoYXNT
aW1wbGVTaGFkb3cgPSBncmFwaGljc0NvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dE1v
ZGVGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAoIWdyYXBo
aWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGdyYXBoaWNzQ29udGV4dC5n
ZXRDVE0oKS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKTsKKyAgICBib29sIGhh
c1NpbXBsZVNoYWRvdyA9IGdyYXBoaWNzQ29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0
RHJhd2luZ01vZGU6OkZpbGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVy
ICYmICghZ3JhcGhpY3NDb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgZ3JhcGhp
Y3NDb250ZXh0LmdldENUTSgpLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpOwog
ICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpIHsKICAgICAgICAgLy8gUGFpbnQgc2ltcGxlIHNoYWRv
d3Mgb3Vyc2VsdmVzIGluc3RlYWQgb2YgcmVseWluZyBvbiBDRyBzaGFkb3dzLCB0byBhdm9pZCBs
b3Npbmcgc3VicGl4ZWwgYW50aWFsaWFzaW5nLgogICAgICAgICBncmFwaGljc0NvbnRleHQuY2xl
YXJTaGFkb3coKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAyNTk1NzcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzUzLDcgKzM1Myw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6OmRyYXdUZXh0KEcKICAgICBJbnRTaXplIGNhcHR1cmVTaXplID0gdGhpcy0+Y2FwdHVy
ZVNpemUoKTsKICAgICBGbG9hdFBvaW50IHRpbWVMb2NhdGlvbihjYXB0dXJlU2l6ZS53aWR0aCgp
ICogLjA1LCBjYXB0dXJlU2l6ZS5oZWlnaHQoKSAqIC4xNSk7CiAgICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoQ29sb3I6OndoaXRlKTsKLSAgICBjb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShUZXh0
TW9kZUZpbGwpOworICAgIGNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9k
ZTo6RmlsbCk7CiAgICAgU3RyaW5nIHN0cmluZyA9IG1ha2VTdHJpbmcocGFkKCcwJywgMiwgaG91
cnMpLCAnOicsIHBhZCgnMCcsIDIsIG1pbnV0ZXMpLCAnOicsIHBhZCgnMCcsIDIsIHNlY29uZHMp
LCAnLicsIHBhZCgnMCcsIDMsIG1pbGxpc2Vjb25kcyAlIDEwMDApKTsKICAgICBjb250ZXh0LmRy
YXdUZXh0KHRpbWVGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgdGltZUxvY2F0
aW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUu
Y3BwCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBh
aW50U3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsMTIgKzE4NSwxMiBAQCB2b2lkIHVw
ZGF0ZUdyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRlCiAgICAgVGV4dERyYXdpbmdNb2RlRmxh
Z3MgbmV3TW9kZSA9IG1vZGU7CiAjaWYgRU5BQkxFKExFVFRFUlBSRVNTKQogICAgIGlmIChwYWlu
dFN0eWxlLnVzZUxldHRlcnByZXNzRWZmZWN0KQotICAgICAgICBuZXdNb2RlIHw9IFRleHRNb2Rl
TGV0dGVycHJlc3M7CisgICAgICAgIG5ld01vZGUuYWRkKFRleHREcmF3aW5nTW9kZTo6TGV0dGVy
cHJlc3MpOwogICAgIGVsc2UKLSAgICAgICAgbmV3TW9kZSAmPSB+VGV4dE1vZGVMZXR0ZXJwcmVz
czsKKyAgICAgICAgbmV3TW9kZS5yZW1vdmUoVGV4dERyYXdpbmdNb2RlOjpMZXR0ZXJwcmVzcyk7
CiAjZW5kaWYKICAgICBpZiAocGFpbnRTdHlsZS5zdHJva2VXaWR0aCA+IDAgJiYgcGFpbnRTdHls
ZS5zdHJva2VDb2xvci5pc1Zpc2libGUoKSkKLSAgICAgICAgbmV3TW9kZSB8PSBUZXh0TW9kZVN0
cm9rZTsKKyAgICAgICAgbmV3TW9kZS5hZGQoVGV4dERyYXdpbmdNb2RlOjpTdHJva2UpOwogICAg
IGlmIChtb2RlICE9IG5ld01vZGUpIHsKICAgICAgICAgY29udGV4dC5zZXRUZXh0RHJhd2luZ01v
ZGUobmV3TW9kZSk7CiAgICAgICAgIG1vZGUgPSBuZXdNb2RlOwpAQCAtMjAxLDEwICsyMDEsMTAg
QEAgdm9pZCB1cGRhdGVHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZQogI2VuZGlmCiAKICAg
ICBDb2xvciBmaWxsQ29sb3IgPSBmaWxsQ29sb3JUeXBlID09IFVzZUVtcGhhc2lzTWFya0NvbG9y
ID8gcGFpbnRTdHlsZS5lbXBoYXNpc01hcmtDb2xvciA6IHBhaW50U3R5bGUuZmlsbENvbG9yOwot
ICAgIGlmIChtb2RlICYgVGV4dE1vZGVGaWxsICYmIChmaWxsQ29sb3IgIT0gY29udGV4dC5maWxs
Q29sb3IoKSkpCisgICAgaWYgKG1vZGUuY29udGFpbnMoVGV4dERyYXdpbmdNb2RlOjpGaWxsKSAm
JiAoZmlsbENvbG9yICE9IGNvbnRleHQuZmlsbENvbG9yKCkpKQogICAgICAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihmaWxsQ29sb3IpOwogCi0gICAgaWYgKG1vZGUgJiBUZXh0TW9kZVN0cm9rZSkg
eworICAgIGlmIChtb2RlICYgVGV4dERyYXdpbmdNb2RlOjpTdHJva2UpIHsKICAgICAgICAgaWYg
KHBhaW50U3R5bGUuc3Ryb2tlQ29sb3IgIT0gY29udGV4dC5zdHJva2VDb2xvcigpKQogICAgICAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihwYWludFN0eWxlLnN0cm9rZUNvbG9yKTsKICAg
ICAgICAgaWYgKHBhaW50U3R5bGUuc3Ryb2tlV2lkdGggIT0gY29udGV4dC5zdHJva2VUaGlja25l
c3MoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAkocmV2
aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDE3ICsxNTksMjMgQEAgdm9pZCBUZXh0UGFpbnRlcjo6
cGFpbnRUZXh0QW5kRW1waGFzaXNNYQogCiAgICAgICAgIGZvciAoYXV0byBvcmRlciA6IHBhaW50
T3JkZXIpIHsKICAgICAgICAgICAgIHN3aXRjaCAob3JkZXIpIHsKLSAgICAgICAgICAgIGNhc2Ug
UGFpbnRUeXBlOjpGaWxsOgotICAgICAgICAgICAgICAgIG1fY29udGV4dC5zZXRUZXh0RHJhd2lu
Z01vZGUodGV4dERyYXdpbmdNb2RlICYgflRleHRNb2RlU3Ryb2tlKTsKKyAgICAgICAgICAgIGNh
c2UgUGFpbnRUeXBlOjpGaWxsOiB7CisgICAgICAgICAgICAgICAgYXV0byB0ZXh0RHJhd2luZ01v
ZGVXaXRob3V0U3Ryb2tlID0gdGV4dERyYXdpbmdNb2RlOworICAgICAgICAgICAgICAgIHRleHRE
cmF3aW5nTW9kZVdpdGhvdXRTdHJva2UucmVtb3ZlKFRleHREcmF3aW5nTW9kZTo6U3Ryb2tlKTsK
KyAgICAgICAgICAgICAgICBtX2NvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKHRleHREcmF3aW5n
TW9kZVdpdGhvdXRTdHJva2UpOwogICAgICAgICAgICAgICAgIHBhaW50VGV4dFdpdGhTaGFkb3dz
KHNoYWRvd1RvVXNlLCBzaGFkb3dDb2xvckZpbHRlciwgKm1fZm9udCwgdGV4dFJ1biwgYm94UmVj
dCwgdGV4dE9yaWdpbiwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwgbnVsbEF0b20oKSwgMCwgZmFs
c2UpOwogICAgICAgICAgICAgICAgIHNoYWRvd1RvVXNlID0gbnVsbHB0cjsKICAgICAgICAgICAg
ICAgICBtX2NvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9kZSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBhaW50VHlwZTo6U3Ryb2tlOgot
ICAgICAgICAgICAgICAgIG1fY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUodGV4dERyYXdpbmdN
b2RlICYgflRleHRNb2RlRmlsbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFBh
aW50VHlwZTo6U3Ryb2tlOiB7CisgICAgICAgICAgICAgICAgYXV0byB0ZXh0RHJhd2luZ01vZGVX
aXRob3V0RmlsbCA9IHRleHREcmF3aW5nTW9kZTsKKyAgICAgICAgICAgICAgICB0ZXh0RHJhd2lu
Z01vZGVXaXRob3V0RmlsbC5yZW1vdmUoVGV4dERyYXdpbmdNb2RlOjpGaWxsKTsKKyAgICAgICAg
ICAgICAgICBtX2NvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9kZVdpdGhv
dXRGaWxsKTsKICAgICAgICAgICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyhzaGFkb3dUb1Vz
ZSwgc2hhZG93Q29sb3JGaWx0ZXIsICptX2ZvbnQsIHRleHRSdW4sIGJveFJlY3QsIHRleHRPcmln
aW4sIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIG51bGxBdG9tKCksIDAsIHBhaW50U3R5bGUuc3Ry
b2tlV2lkdGggPiAwKTsKICAgICAgICAgICAgICAgICBzaGFkb3dUb1VzZSA9IG51bGxwdHI7CiAg
ICAgICAgICAgICAgICAgbV9jb250ZXh0LnNldFRleHREcmF3aW5nTW9kZSh0ZXh0RHJhd2luZ01v
ZGUpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBQYWludFR5cGU6Ok1hcmtlcnM6CiAgICAgICAgICAgICAgICAgY29udGludWU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHAJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2Nyw3ICsxNjcsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFw
cGx5UmVzCiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIGNvbnRleHQtPnNldFRleHREcmF3
aW5nTW9kZShyZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBs
eVRvRmlsbCkgPyBUZXh0TW9kZUZpbGwgOiBUZXh0TW9kZVN0cm9rZSk7CisgICAgICAgIGNvbnRl
eHQtPnNldFRleHREcmF3aW5nTW9kZShyZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVz
b3VyY2VNb2RlOjpBcHBseVRvRmlsbCkgPyBUZXh0RHJhd2luZ01vZGU6OkZpbGwgOiBUZXh0RHJh
d2luZ01vZGU6OlN0cm9rZSk7CiAgICAgfQogCiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2
Z1N0eWxlID0gc3R5bGUuc3ZnU3R5bGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAJKHJldmlz
aW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDEzICsxODUsMTMgQEAgYm9v
bCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmFwcGx5UmVzbwogCiAgICAgaWYgKHJlc291cmNl
TW9kZS5jb250YWlucyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6OkFwcGx5VG9UZXh0KSkgewogICAg
ICAgICBpZiAocmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6QXBw
bHlUb0ZpbGwpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoVGV4
dE1vZGVGaWxsKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShUZXh0
RHJhd2luZ01vZGU6OkZpbGwpOwogCiAjaWYgVVNFKENHKQogICAgICAgICAgICAgY29udGV4dC0+
YXBwbHlGaWxsUGF0dGVybigpOwogI2VuZGlmCiAgICAgICAgIH0gZWxzZSBpZiAocmVzb3VyY2VN
b2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6QXBwbHlUb1N0cm9rZSkpIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShUZXh0TW9kZVN0cm9rZSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlOjpT
dHJva2UpOwogCiAjaWYgVVNFKENHKQogICAgICAgICAgICAgY29udGV4dC0+YXBwbHlTdHJva2VQ
YXR0ZXJuKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlU29saWRDb2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwCShyZXZpc2lvbiAyNTk1Nzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRD
b2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgYm9vbCBSZW5kZXJTVkdS
ZXNvdXJjZVNvbGlkQ29sb3I6OmFwcGx5UgogICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbFJ1
bGUoc3ZnU3R5bGUuZmlsbFJ1bGUoKSk7CiAKICAgICAgICAgaWYgKHJlc291cmNlTW9kZS5jb250
YWlucyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6OkFwcGx5VG9UZXh0KSkKLSAgICAgICAgICAgIGNv
bnRleHQtPnNldFRleHREcmF3aW5nTW9kZShUZXh0TW9kZUZpbGwpOworICAgICAgICAgICAgY29u
dGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZTo6RmlsbCk7CiAgICAgfSBl
bHNlIGlmIChyZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBs
eVRvU3Ryb2tlKSkgewogICAgICAgICAvLyBXaGVuIHJlbmRlcmluZyB0aGUgbWFzayBmb3IgYSBS
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIsIHRoZSBzdHJva2UgY29kZSBwYXRoIGlzIG5ldmVyIGhp
dC4KICAgICAgICAgQVNTRVJUKCFpc1JlbmRlcmluZ01hc2spOwpAQCAtNjEsNyArNjEsNyBAQCBi
b29sIFJlbmRlclNWR1Jlc291cmNlU29saWRDb2xvcjo6YXBwbHlSCiAgICAgICAgIFNWR1JlbmRl
clN1cHBvcnQ6OmFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoY29udGV4dCwgc3R5bGUsIHJlbmRl
cmVyKTsKIAogICAgICAgICBpZiAocmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291
cmNlTW9kZTo6QXBwbHlUb1RleHQpKQotICAgICAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdp
bmdNb2RlKFRleHRNb2RlU3Ryb2tlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFRleHREcmF3
aW5nTW9kZShUZXh0RHJhd2luZ01vZGU6OlN0cm9rZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRy
dWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU5NzY3KQorKysgU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNC0wOCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIElQQyBzZXJp
YWxpemF0aW9uIG9mIGVudW1zIHNob3VsZCBzZXJpYWxpemUgc3RkOjp1bmRlcmx5aW5nX3R5cGUg
aW5zdGVhZCBvZiB1aW50NjRfdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEwMjI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXogYW5k
IERhcmluIEFkbGVyLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuaDoKKyAgICAg
ICAgKElQQzo6RGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6b3BlcmF0
b3I+Pik6CisgICAgICAgIChJUEM6OkRlY29kZXI6OmRlY29kZUVudW0pOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9FbmNvZGVyLmg6CisgICAgICAgICogU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJz
Q0YuY3BwOgorICAgICAgICAoSVBDOjplbmNvZGUpOgorICAgICAgICAoSVBDOjpkZWNvZGUpOgor
CiAyMDIwLTA0LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBIYW5kbGUgW1BERkRvY3VtZW50IGluaXRXaXRoUHJvdmlkZXI6XSByZXR1cm5pbmcgbmlsCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCShyZXZpc2lvbiAyNTk1NzcpCisr
KyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwNCwxMCArMTA0LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGRlY29kZShkb3VibGUmKTsKICAg
ICBEZWNvZGVyJiBvcGVyYXRvcj4+KE9wdGlvbmFsPGRvdWJsZT4mKTsKIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEU+Ci0gICAgYXV0byBkZWNvZGUoRSYgZSkgLT4gc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX2VudW08RT46OnZhbHVlLCBib29sPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHR5
cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPj4KKyAgICBi
b29sIGRlY29kZShFJiBlKQogICAgIHsKLSAgICAgICAgdWludDY0X3QgdmFsdWU7CisgICAgICAg
IHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEU+Ojp0eXBlIHZhbHVlOwogICAgICAgICBp
ZiAoIWRlY29kZSh2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlm
ICghaXNWYWxpZEVudW08RT4odmFsdWUpKQpAQCAtMTE3LDEwICsxMTcsMTAgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
ZW51bTxFPjo6dmFsdWU+PgogICAgIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8RT4mIG9w
dGlvbmFsKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHZhbHVlOworICAgICAg
ICBPcHRpb25hbDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlwZT4gdmFsdWU7
CiAgICAgICAgICp0aGlzID4+IHZhbHVlOwogICAgICAgICBpZiAodmFsdWUgJiYgaXNWYWxpZEVu
dW08RT4oKnZhbHVlKSkKICAgICAgICAgICAgIG9wdGlvbmFsID0gc3RhdGljX2Nhc3Q8RT4oKnZh
bHVlKTsKQEAgLTEyOSwxMiArMTI5LDEwIEBAIHB1YmxpYzoKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGJvb2wgZGVjb2RlRW51bShUJiByZXN1bHQpCiAgICAgewotICAgICAgICBzdGF0aWNf
YXNzZXJ0KHNpemVvZihUKSA8PSA4LCAiRW51bSB0eXBlIFQgbXVzdCBub3QgYmUgbGFyZ2VyIHRo
YW4gNjQgYml0cyEiKTsKLQotICAgICAgICB1aW50NjRfdCB2YWx1ZTsKKyAgICAgICAgdHlwZW5h
bWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8VD46OnR5cGUgdmFsdWU7CiAgICAgICAgIGlmICghZGVj
b2RlKHZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCisKICAgICAg
ICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VD4odmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCShyZXZpc2lvbiAy
NTk1NzcpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYxLDkgKzYxLDcgQEAgcHVibGljOgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gdm9pZCBlbmNvZGVFbnVtKFQgdCkKICAgICB7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJUKHNp
emVvZihUKSA8PSBzaXplb2YodWludDY0X3QpLCBlbnVtX3R5cGVfbXVzdF9ub3RfYmVfbGFyZ2Vy
X3RoYW5fNjRfYml0cyk7Ci0KLSAgICAgICAgZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0
KSk7CisgICAgICAgIGVuY29kZShzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdf
dHlwZTxUPjo6dHlwZT4odCkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0
ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90
PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Pj46OnZhbHVlPiogPSBudWxscHRyPgpAQCAtNzUs
NyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVf
aWZfdDxzdGQ6OmlzX2VudW08VD46OnZhbHVlPiogPSBudWxscHRyPgogICAgIEVuY29kZXImIG9w
ZXJhdG9yPDwoVCYmIHQpCiAgICAgewotICAgICAgICBlbmNvZGUoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHQpKTsKKyAgICAgICAgZW5jb2RlKHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6dW5kZXJs
eWluZ190eXBlPFQ+Ojp0eXBlPih0KSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAK
QEAgLTExMywxMCArMTExLDggQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFPgog
ICAgIGF1dG8gZW5jb2RlKEUgdmFsdWUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVt
PEU+Ojp2YWx1ZT4KICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEUpIDw9IHNp
emVvZih1aW50NjRfdCksICJFbnVtIHR5cGUgbXVzdCBub3QgYmUgbGFyZ2VyIHRoYW4gNjQgYml0
cy4iKTsKLQotICAgICAgICBBU1NFUlQoaXNWYWxpZEVudW08RT4oc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHZhbHVlKSkpOwotICAgICAgICBlbmNvZGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVl
KSk7CisgICAgICAgIEFTU0VSVChpc1ZhbGlkRW51bTxFPihzdGF0aWNfY2FzdDx0eXBlbmFtZSBz
dGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlwZT4odmFsdWUpKSk7CisgICAgICAgIGVuY29kZShz
dGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlwZT4odmFsdWUp
KTsKICAgICB9CiAKICAgICB2b2lkIGVuY29kZUhlYWRlcigpOwpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAJKHJldmlzaW9uIDI1OTU3NykKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OTEsNyArNDkxLDcgQEAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgQ0ZO
dW1iZXJSZQogICAgIGJvb2wgcmVzdWx0ID0gQ0ZOdW1iZXJHZXRWYWx1ZShudW1iZXIsIG51bWJl
clR5cGUsIGJ1ZmZlci5kYXRhKCkpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQp
OwogCi0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKG51bWJlclR5cGUpOworICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8dWludDhfdD4obnVtYmVyVHlwZSk7CiAgICAgZW5jb2RlciA8PCBJUEM6OkRh
dGFSZWZlcmVuY2UoYnVmZmVyKTsKIH0KIApAQCAtNTM3LDkgKzUzNywxMSBAQCBzdGF0aWMgc2l6
ZV90IHNpemVGb3JOdW1iZXJUeXBlKENGTnVtYmVyCiAKIGJvb2wgZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFJldGFpblB0cjxDRk51bWJlclJlZj4mIHJlc3VsdCkKIHsKLSAgICBDRk51bWJlclR5
cGUgbnVtYmVyVHlwZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShudW1iZXJUeXBlKSkK
KyAgICBPcHRpb25hbDx1aW50OF90PiBudW1iZXJUeXBlRnJvbUlQQzsKKyAgICBkZWNvZGVyID4+
IG51bWJlclR5cGVGcm9tSVBDOworICAgIGlmICghbnVtYmVyVHlwZUZyb21JUEMgfHwgKm51bWJl
clR5cGVGcm9tSVBDID4ga0NGTnVtYmVyTWF4VHlwZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGF1dG8gbnVtYmVyVHlwZSA9IHN0YXRpY19jYXN0PENGTnVtYmVyVHlwZT4oKm51bWJlclR5
cGVGcm9tSVBDKTsKIAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCkBAIC01NzEsMTUgKzU3MywxNyBA
QCB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBDRlN0cmluZ1JlCiAgICAgbnVtQ29udmVy
dGVkQnl0ZXMgPSBDRlN0cmluZ0dldEJ5dGVzKHN0cmluZywgcmFuZ2UsIGVuY29kaW5nLCAwLCBm
YWxzZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgJmJ1ZmZlckxlbmd0aCk7CiAgICAg
QVNTRVJUKG51bUNvbnZlcnRlZEJ5dGVzID09IGxlbmd0aCk7CiAKLSAgICBlbmNvZGVyLmVuY29k
ZUVudW0oZW5jb2RpbmcpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8VUludDMyPihlbmNv
ZGluZyk7CiAgICAgZW5jb2RlciA8PCBJUEM6OkRhdGFSZWZlcmVuY2UoYnVmZmVyKTsKIH0KIAog
Ym9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPENGU3RyaW5nUmVmPiYgcmVz
dWx0KQogewotICAgIENGU3RyaW5nRW5jb2RpbmcgZW5jb2Rpbmc7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZUVudW0oZW5jb2RpbmcpKQorICAgIFVJbnQzMiBlbmNvZGluZ0Zyb21JUEM7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShlbmNvZGluZ0Zyb21JUEMpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSB2YWxpZGF0ZSB0aGF0IHRoaXMgdmFsdWUgaXMg
YW4gZXhwZWN0ZWQgdmFsdWU/CisgICAgYXV0byBlbmNvZGluZyA9IHN0YXRpY19jYXN0PENGU3Ry
aW5nRW5jb2Rpbmc+KGVuY29kaW5nRnJvbUlQQyk7CiAKICAgICBpZiAoIUNGU3RyaW5nSXNFbmNv
ZGluZ0F2YWlsYWJsZShlbmNvZGluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396036</attachid>
            <date>2020-04-09 20:00:34 -0700</date>
            <delta_ts>2020-04-09 21:54:01 -0700</delta_ts>
            <desc>patch using uint32_t instead of UInt32</desc>
            <filename>attachment.cgi.patch</filename>
            <type>text/plain</type>
            <size>28695</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIwLTA0LTA4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSVBDIHNlcmlh
bGl6YXRpb24gb2YgZW51bXMgc2hvdWxkIHNlcmlhbGl6ZSBzdGQ6OnVuZGVybHlpbmdfdHlwZSBp
bnN0ZWFkIG9mIHVpbnQ2NF90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTAyMjgKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1leiBhbmQg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLCBvdGhlciB0aGFu
IGxlc3MgbWVtb3J5IGFuZCB0aW1lIHNwZW50IGluIElQQyBjb2RlLgorCisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9kZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZFVzZUxldHRlcnByZXNzRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRl
OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVv
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpk
cmF3VGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnVwZGF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L1RleHRQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRl
eHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdS
ZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm46OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlU29saWRDb2xvcjo6YXBwbHlSZXNvdXJjZSk6CisKIDIwMjAtMDQtMDYg
IEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1h
dGlvbnNdIE1vdmUgRG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygpIHRvIERvY3VtZW50T3JTaGFkb3dS
b290CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU1OCw3ICs1NTgsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJh
d1RleHRJCiAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhj
LT5zdHJva2VUaGlja25lc3MoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBtYXNrSW1hZ2VDb250
ZXh0LnNldFRleHREcmF3aW5nTW9kZShmaWxsID8gVGV4dE1vZGVGaWxsIDogVGV4dE1vZGVTdHJv
a2UpOworICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShmaWxsID8g
VGV4dERyYXdpbmdNb2RlOjpGaWxsIDogVGV4dERyYXdpbmdNb2RlOjpTdHJva2UpOwogCiAgICAg
ICAgIGlmICh1c2VNYXhXaWR0aCkgewogICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC50cmFu
c2xhdGUobG9jYXRpb24gLSBtYXNrUmVjdC5sb2NhdGlvbigpKTsKQEAgLTU3OCw3ICs1NzgsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJCiAgICAgfQogI2VuZGlm
CiAKLSAgICBjLT5zZXRUZXh0RHJhd2luZ01vZGUoZmlsbCA/IFRleHRNb2RlRmlsbCA6IFRleHRN
b2RlU3Ryb2tlKTsKKyAgICBjLT5zZXRUZXh0RHJhd2luZ01vZGUoZmlsbCA/IFRleHREcmF3aW5n
TW9kZTo6RmlsbCA6IFRleHREcmF3aW5nTW9kZTo6U3Ryb2tlKTsKIAogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYyk7CiAgICAgaWYgKHVzZU1heFdpZHRoKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw3ICsy
ODUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOjpkdW1wKFRlCiAgICAgICAg
IHRzLmR1bXBQcm9wZXJ0eSgic3Ryb2tlLXRoaWNrbmVzcyIsIG1fc3RhdGUuc3Ryb2tlVGhpY2tu
ZXNzKTsKIAogICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInRl
eHQtZHJhd2luZy1tb2RlIiwgbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUpOworICAgICAgICB0cy5k
dW1wUHJvcGVydHkoInRleHQtZHJhd2luZy1tb2RlIiwgbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUu
dG9SYXcoKSk7CiAKICAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN0
cm9rZS1jb2xvciIsIG1fc3RhdGUuc3Ryb2tlQ29sb3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDI1
OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCwxNCArOTgsMTQgQEAgY2xhc3MgUGF0aDsKIGNsYXNz
IFRleHRSdW47CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAotZW51bSBUZXh0RHJhd2lu
Z01vZGUgewotICAgIFRleHRNb2RlRmlsbCA9IDEgPDwgMCwKLSAgICBUZXh0TW9kZVN0cm9rZSA9
IDEgPDwgMSwKK2VudW0gY2xhc3MgVGV4dERyYXdpbmdNb2RlIDogdWludDhfdCB7CisgICAgRmls
bCA9IDEgPDwgMCwKKyAgICBTdHJva2UgPSAxIDw8IDEsCiAjaWYgRU5BQkxFKExFVFRFUlBSRVNT
KQotICAgIFRleHRNb2RlTGV0dGVycHJlc3MgPSAxIDw8IDIsCisgICAgTGV0dGVycHJlc3MgPSAx
IDw8IDIsCiAjZW5kaWYKIH07Ci10eXBlZGVmIHVuc2lnbmVkIFRleHREcmF3aW5nTW9kZUZsYWdz
OwordXNpbmcgVGV4dERyYXdpbmdNb2RlRmxhZ3MgPSBPcHRpb25TZXQ8VGV4dERyYXdpbmdNb2Rl
PjsKIAogZW51bSBTdHJva2VTdHlsZSB7CiAgICAgTm9TdHJva2UsCkBAIC0yMTAsNyArMjEwLDcg
QEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKICAgICBmbG9hdCBzdHJva2VUaGlja25l
c3MgeyAwIH07CiAgICAgZmxvYXQgc2hhZG93Qmx1ciB7IDAgfTsKIAotICAgIFRleHREcmF3aW5n
TW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSB7IFRleHRNb2RlRmlsbCB9OworICAgIFRleHREcmF3
aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSB7IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9Owog
CiAgICAgQ29sb3Igc3Ryb2tlQ29sb3IgeyBDb2xvcjo6YmxhY2sgfTsKICAgICBDb2xvciBmaWxs
Q29sb3IgeyBDb2xvcjo6YmxhY2sgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAkocmV2aXNpb24gMjU5
NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgUGxhdGZvcm1D
QUxheWVyOjpkcmF3UmVwYWludEluZGljYXQKICAgICBpZiAoIXBsYXRmb3JtQ0FMYXllci0+aXNP
cGFxdWUoKSAmJiBwbGF0Zm9ybUNBTGF5ZXItPnN1cHBvcnRzU3VicGl4ZWxBbnRpYWxpYXNlZFRl
eHQoKSAmJiBwbGF0Zm9ybUNBTGF5ZXItPmFjY2VsZXJhdGVzRHJhd2luZygpKSB7CiAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xvcihsaW5lYXJHbHlwaE1hc2tPdXRsaW5lQ29s
b3IpOwogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDQuNSk7Ci0g
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dE1vZGVGaWxsIHwg
VGV4dE1vZGVTdHJva2UpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0VGV4dERyYXdpbmdN
b2RlKFRleHREcmF3aW5nTW9kZUZsYWdzIHsgVGV4dERyYXdpbmdNb2RlOjpGaWxsLCBUZXh0RHJh
d2luZ01vZGU6OlN0cm9rZSB9KTsKICAgICB9CiAKICAgICBncmFwaGljc0NvbnRleHQuc2V0Rmls
bENvbG9yKHBsYXRmb3JtQ0FMYXllci0+YWNjZWxlcmF0ZXNEcmF3aW5nKCkgPyBhY2NlbGVyYXRl
ZENvbnRleHRMYWJlbENvbG9yIDogdW5hY2NlbGVyYXRlZENvbnRleHRMYWJlbENvbG9yKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzE1LDcgKzMxNSw3IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNUb0NvbnRleHQo
Y2Fpcm9fdCoKIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlLCBUZXh0
RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93
T2Zmc2V0LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250LCBkb3VibGUgc3ludGhldGljQm9sZE9m
ZnNldCwgY29uc3QgVmVjdG9yPGNhaXJvX2dseXBoX3Q+JiBnbHlwaHMsIEZvbnRTbW9vdGhpbmdN
b2RlIGZvbnRTbW9vdGhpbmdNb2RlKQogewogICAgIFNoYWRvd0JsdXIgc2hhZG93KHsgc2hhZG93
U3RhdGUuYmx1ciwgc2hhZG93U3RhdGUuYmx1ciB9LCBzaGFkb3dTdGF0ZS5vZmZzZXQsIHNoYWRv
d1N0YXRlLmNvbG9yLCBzaGFkb3dTdGF0ZS5pZ25vcmVUcmFuc2Zvcm1zKTsKLSAgICBpZiAoISh0
ZXh0RHJhd2luZ01vZGUgJiBUZXh0TW9kZUZpbGwpIHx8IHNoYWRvdy50eXBlKCkgPT0gU2hhZG93
Qmx1cjo6Tm9TaGFkb3cpCisgICAgaWYgKCF0ZXh0RHJhd2luZ01vZGUuY29udGFpbnMoVGV4dERy
YXdpbmdNb2RlOjpGaWxsKSB8fCBzaGFkb3cudHlwZSgpID09IFNoYWRvd0JsdXI6Ok5vU2hhZG93
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXNoYWRvd1N0YXRlLmlzUmVxdWlyZWQocGxh
dGZvcm1Db250ZXh0KSkgewpAQCAtODMyLDcgKzgzMiw3IEBAIHZvaWQgZHJhd0dseXBocyhQbGF0
Zm9ybUNvbnRleHRDYWlybyYgcGwKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dC5j
cigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwogCi0gICAgaWYgKHRleHREcmF3aW5nTW9kZSAmIFRl
eHRNb2RlRmlsbCkgeworICAgIGlmICh0ZXh0RHJhd2luZ01vZGUuY29udGFpbnMoVGV4dERyYXdp
bmdNb2RlOjpGaWxsKSkgewogICAgICAgICBwcmVwYXJlRm9yRmlsbGluZyhjciwgZmlsbFNvdXJj
ZSwgQWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhKTsKICAgICAgICAgZHJhd0dseXBoc1RvQ29u
dGV4dChjciwgc2NhbGVkRm9udCwgc3ludGhldGljQm9sZE9mZnNldCwgZ2x5cGhzLCBmb250U21v
b3RoaW5nTW9kZSk7CiAgICAgfQpAQCAtODQxLDcgKzg0MSw3IEBAIHZvaWQgZHJhd0dseXBocyhQ
bGF0Zm9ybUNvbnRleHRDYWlybyYgcGwKICAgICAvLyB0d2ljZSB0aGUgc2l6ZSBvZiB0aGUgd2lk
dGggb2YgdGhlIHRleHQgd2Ugd2lsbCBub3QgYXNrIGNhaXJvIHRvIHN0cm9rZQogICAgIC8vIHRo
ZSB0ZXh0IGFzIGV2ZW4gb25lIHNpbmdsZSBzdHJva2Ugd291bGQgY292ZXIgdGhlIGZ1bGwgd2R0
aCBvZiB0aGUgdGV4dC4KICAgICAvLyAgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMzc1OS4KLSAgICBpZiAodGV4dERyYXdpbmdNb2RlICYgVGV4dE1vZGVTdHJv
a2UgJiYgc3Ryb2tlVGhpY2tuZXNzIDwgMiAqIHhPZmZzZXQpIHsKKyAgICBpZiAodGV4dERyYXdp
bmdNb2RlLmNvbnRhaW5zKFRleHREcmF3aW5nTW9kZTo6U3Ryb2tlKSAmJiBzdHJva2VUaGlja25l
c3MgPCAyICogeE9mZnNldCkgewogICAgICAgICBwcmVwYXJlRm9yU3Ryb2tpbmcoY3IsIHN0cm9r
ZVNvdXJjZSwgUHJlc2VydmVBbHBoYSk7CiAgICAgICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKGNy
LCBzdHJva2VUaGlja25lc3MpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAy
NTk1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NjAsMTkgKzE3NjAsMTUgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtVGV4dERyYQogICAgIEFTU0VSVChoYXNQbGF0Zm9y
bUNvbnRleHQoKSk7CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4
dCgpOwotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgVGV4dE1vZGVGaWxsOgorICAgIAor
ICAgIGJvb2wgZmlsbCA9IG1vZGUuY29udGFpbnMoVGV4dERyYXdpbmdNb2RlOjpGaWxsKTsKKyAg
ICBib29sIHN0cm9rZSA9IG1vZGUuY29udGFpbnMoVGV4dERyYXdpbmdNb2RlOjpTdHJva2UpOwor
ICAgIGlmIChmaWxsICYmIHN0cm9rZSkKKyAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdN
b2RlKGNvbnRleHQsIGtDR1RleHRGaWxsU3Ryb2tlKTsKKyAgICBlbHNlIGlmIChmaWxsKQogICAg
ICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dEZpbGwpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRNb2RlU3Ryb2tlOgorICAgIGVsc2UgaWYgKHN0
cm9rZSkKICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1Rl
eHRTdHJva2UpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRleHRNb2RlRmlsbCB8IFRleHRN
b2RlU3Ryb2tlOgotICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwg
a0NHVGV4dEZpbGxTdHJva2UpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAg
ICBicmVhazsKLSAgICB9CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0
cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQko
cmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udENhc2NhZGVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgZmlsbFZlY3RvcldpdGhIb3Jpem9uCiBzdGF0aWMgaW5saW5lIGJv
b2wgc2hvdWxkVXNlTGV0dGVycHJlc3NFZmZlY3QoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQogewogI2lmIEVOQUJMRShMRVRURVJQUkVTUykKLSAgICByZXR1cm4gY29udGV4dC50ZXh0
RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlTGV0dGVycHJlc3M7CisgICAgcmV0dXJuIGNvbnRleHQu
dGV4dERyYXdpbmdNb2RlKCkuY29udGFpbnMoVGV4dERyYXdpbmdNb2RlOjpMZXR0ZXJwcmVzcyk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICByZXR1cm4gZmFsc2U7CkBA
IC0yNzgsNyArMjc4LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0Nv
bgogICAgICAgICB9CiAgICAgfTsKIAotICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gY29udGV4
dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZUZpbGwgJiYgc2hhZG93Q29sb3IuaXNWYWxp
ZCgpICYmICFzaGFkb3dCbHVyICYmICFwbGF0Zm9ybURhdGEuaXNDb2xvckJpdG1hcEZvbnQoKSAm
JiAoIWNvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBjb250ZXh0Q1RNLmlzSWRl
bnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpICYmICFjb250ZXh0LmlzSW5UcmFuc3BhcmVu
Y3lMYXllcigpOworICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gY29udGV4dC50ZXh0RHJhd2lu
Z01vZGUoKSA9PSBUZXh0RHJhd2luZ01vZGU6OkZpbGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgp
ICYmICFzaGFkb3dCbHVyICYmICFwbGF0Zm9ybURhdGEuaXNDb2xvckJpdG1hcEZvbnQoKSAmJiAo
IWNvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBjb250ZXh0Q1RNLmlzSWRlbnRp
dHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpICYmICFjb250ZXh0LmlzSW5UcmFuc3BhcmVuY3lM
YXllcigpOwogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpIHsKICAgICAgICAgLy8gUGFpbnQgc2lt
cGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGluc3RlYWQgb2YgcmVseWluZyBvbiBDRyBzaGFkb3dzLCB0
byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwgYW50aWFsaWFzaW5nLgogICAgICAgICBjb250ZXh0LmNs
ZWFyU2hhZG93KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHJldmlz
aW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNiw3ICs0MTYsNyBA
QCB2b2lkIFNldFN0YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgCiAgICAgICAgIGVuY29k
ZXIgPDwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzOwogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpUZXh0RHJhd2luZ01vZGVDaGFuZ2UpKQotICAgICAg
ICBlbmNvZGVyLmVuY29kZUVudW0oc3RhdGUudGV4dERyYXdpbmdNb2RlKTsKKyAgICAgICAgZW5j
b2RlciA8PCBzdGF0ZS50ZXh0RHJhd2luZ01vZGU7CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlKSkKICAgICAgICAg
ZW5jb2RlciA8PCBzdGF0ZS5zdHJva2VDb2xvcjsKQEAgLTU2OCwxMSArNTY4LDEyIEBAIE9wdGlv
bmFsPFJlZjxTZXRTdGF0ZT4+IFNldFN0YXRlOjpkZWNvZGUKICAgICB9CiAKICAgICBpZiAoc3Rh
dGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4
dERyYXdpbmdNb2RlQ2hhbmdlKSkgewotICAgICAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0
RHJhd2luZ01vZGU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHRleHREcmF3aW5n
TW9kZSkpCisgICAgICAgIE9wdGlvbmFsPFRleHREcmF3aW5nTW9kZUZsYWdzPiB0ZXh0RHJhd2lu
Z01vZGU7CisgICAgICAgIGRlY29kZXIgPj4gdGV4dERyYXdpbmdNb2RlOworICAgICAgICBpZiAo
IXRleHREcmF3aW5nTW9kZSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAg
ICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUgPSB0ZXh0RHJhd2luZ01v
ZGU7CisgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUudGV4dERyYXdpbmdNb2RlID0gV1RGTW92
ZSgqdGV4dERyYXdpbmdNb2RlKTsKICAgICB9CiAKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2Up
KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBCaXRtYXBUZXh0dXJlOjp1cGRhdGVDb250
ZW50cyhUZXh0dQogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gaW1hZ2VCdWZmZXIt
PmNvbnRleHQoKTsKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50
ZXJwb2xhdGlvblF1YWxpdHk6OkRlZmF1bHQpOwotICAgIGNvbnRleHQuc2V0VGV4dERyYXdpbmdN
b2RlKFRleHRNb2RlRmlsbCk7CisgICAgY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dERy
YXdpbmdNb2RlOjpGaWxsKTsKIAogICAgIEludFJlY3Qgc291cmNlUmVjdCh0YXJnZXRSZWN0KTsK
ICAgICBzb3VyY2VSZWN0LnNldExvY2F0aW9uKG9mZnNldCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3NSw3
ICs3NzUsNyBAQCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmCiAgICAg
Q29sb3Igc2hhZG93Q29sb3I7CiAgICAgZ3JhcGhpY3NDb250ZXh0LmdldFNoYWRvdyhzaGFkb3dP
ZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAotICAgIGJvb2wgaGFzU2ltcGxlU2hh
ZG93ID0gZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmlsbCAm
JiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgKCFncmFwaGljc0NvbnRl
eHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBncmFwaGljc0NvbnRleHQuZ2V0Q1RNKCku
aXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSk7CisgICAgYm9vbCBoYXNTaW1wbGVT
aGFkb3cgPSBncmFwaGljc0NvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dERyYXdpbmdN
b2RlOjpGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAoIWdy
YXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGdyYXBoaWNzQ29udGV4
dC5nZXRDVE0oKS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKTsKICAgICBpZiAo
aGFzU2ltcGxlU2hhZG93KSB7CiAgICAgICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNl
bHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1
YnBpeGVsIGFudGlhbGlhc2luZy4KICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udENHV2luLmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsx
ODEsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29uCiAgICAgQ29s
b3Igc2hhZG93Q29sb3I7CiAgICAgZ3JhcGhpY3NDb250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAotICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93
ID0gZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmlsbCAmJiBz
aGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgKCFncmFwaGljc0NvbnRleHQu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBncmFwaGljc0NvbnRleHQuZ2V0Q1RNKCkuaXNJ
ZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSk7CisgICAgYm9vbCBoYXNTaW1wbGVTaGFk
b3cgPSBncmFwaGljc0NvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dERyYXdpbmdNb2Rl
OjpGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAoIWdyYXBo
aWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGdyYXBoaWNzQ29udGV4dC5n
ZXRDVE0oKS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKTsKICAgICBpZiAoaGFz
U2ltcGxlU2hhZG93KSB7CiAgICAgICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNlbHZl
cyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1YnBp
eGVsIGFudGlhbGlhc2luZy4KICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhc2NhZGVE
aXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDYXNjYWRlRGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhc2NhZGVEaXJlY3QyRC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhzKEdyYXBoaWNzQ29uCiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAgZ3JhcGhpY3ND
b250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsK
IAotICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5n
TW9kZSgpID09IFRleHRNb2RlRmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRv
d0JsdXIgJiYgKCFncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBn
cmFwaGljc0NvbnRleHQuZ2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQo
KSk7CisgICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBncmFwaGljc0NvbnRleHQudGV4dERyYXdp
bmdNb2RlKCkgPT0gVGV4dERyYXdpbmdNb2RlOjpGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQo
KSAmJiAhc2hhZG93Qmx1ciAmJiAoIWdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNm
b3JtcygpIHx8IGdyYXBoaWNzQ29udGV4dC5nZXRDVE0oKS5pc0lkZW50aXR5T3JUcmFuc2xhdGlv
bk9yRmxpcHBlZCgpKTsKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KSB7CiAgICAgICAgIC8vIFBh
aW50IHNpbXBsZSBzaGFkb3dzIG91cnNlbHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gQ0cgc2hh
ZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1YnBpeGVsIGFudGlhbGlhc2luZy4KICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNp
b24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3VGV4dChHCiAgICAgSW50U2l6ZSBjYXB0dXJlU2l6
ZSA9IHRoaXMtPmNhcHR1cmVTaXplKCk7CiAgICAgRmxvYXRQb2ludCB0aW1lTG9jYXRpb24oY2Fw
dHVyZVNpemUud2lkdGgoKSAqIC4wNSwgY2FwdHVyZVNpemUuaGVpZ2h0KCkgKiAuMTUpOwogICAg
IGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSk7Ci0gICAgY29udGV4dC5zZXRUZXh0
RHJhd2luZ01vZGUoVGV4dE1vZGVGaWxsKTsKKyAgICBjb250ZXh0LnNldFRleHREcmF3aW5nTW9k
ZShUZXh0RHJhd2luZ01vZGU6OkZpbGwpOwogICAgIFN0cmluZyBzdHJpbmcgPSBtYWtlU3RyaW5n
KHBhZCgnMCcsIDIsIGhvdXJzKSwgJzonLCBwYWQoJzAnLCAyLCBtaW51dGVzKSwgJzonLCBwYWQo
JzAnLCAyLCBzZWNvbmRzKSwgJy4nLCBwYWQoJzAnLCAzLCBtaWxsaXNlY29uZHMgJSAxMDAwKSk7
CiAgICAgY29udGV4dC5kcmF3VGV4dCh0aW1lRm9udCwgVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJp
bmcpKSksIHRpbWVMb2NhdGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0UGFpbnRTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRQYWludFN0eWxlLmNwcAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDEyICsx
ODUsMTIgQEAgdm9pZCB1cGRhdGVHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZQogICAgIFRl
eHREcmF3aW5nTW9kZUZsYWdzIG5ld01vZGUgPSBtb2RlOwogI2lmIEVOQUJMRShMRVRURVJQUkVT
UykKICAgICBpZiAocGFpbnRTdHlsZS51c2VMZXR0ZXJwcmVzc0VmZmVjdCkKLSAgICAgICAgbmV3
TW9kZSB8PSBUZXh0TW9kZUxldHRlcnByZXNzOworICAgICAgICBuZXdNb2RlLmFkZChUZXh0RHJh
d2luZ01vZGU6OkxldHRlcnByZXNzKTsKICAgICBlbHNlCi0gICAgICAgIG5ld01vZGUgJj0gflRl
eHRNb2RlTGV0dGVycHJlc3M7CisgICAgICAgIG5ld01vZGUucmVtb3ZlKFRleHREcmF3aW5nTW9k
ZTo6TGV0dGVycHJlc3MpOwogI2VuZGlmCiAgICAgaWYgKHBhaW50U3R5bGUuc3Ryb2tlV2lkdGgg
PiAwICYmIHBhaW50U3R5bGUuc3Ryb2tlQ29sb3IuaXNWaXNpYmxlKCkpCi0gICAgICAgIG5ld01v
ZGUgfD0gVGV4dE1vZGVTdHJva2U7CisgICAgICAgIG5ld01vZGUuYWRkKFRleHREcmF3aW5nTW9k
ZTo6U3Ryb2tlKTsKICAgICBpZiAobW9kZSAhPSBuZXdNb2RlKSB7CiAgICAgICAgIGNvbnRleHQu
c2V0VGV4dERyYXdpbmdNb2RlKG5ld01vZGUpOwogICAgICAgICBtb2RlID0gbmV3TW9kZTsKQEAg
LTIwMSwxMCArMjAxLDEwIEBAIHZvaWQgdXBkYXRlR3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29u
dGUKICNlbmRpZgogCiAgICAgQ29sb3IgZmlsbENvbG9yID0gZmlsbENvbG9yVHlwZSA9PSBVc2VF
bXBoYXNpc01hcmtDb2xvciA/IHBhaW50U3R5bGUuZW1waGFzaXNNYXJrQ29sb3IgOiBwYWludFN0
eWxlLmZpbGxDb2xvcjsKLSAgICBpZiAobW9kZSAmIFRleHRNb2RlRmlsbCAmJiAoZmlsbENvbG9y
ICE9IGNvbnRleHQuZmlsbENvbG9yKCkpKQorICAgIGlmIChtb2RlLmNvbnRhaW5zKFRleHREcmF3
aW5nTW9kZTo6RmlsbCkgJiYgKGZpbGxDb2xvciAhPSBjb250ZXh0LmZpbGxDb2xvcigpKSkKICAg
ICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yKTsKIAotICAgIGlmIChtb2RlICYg
VGV4dE1vZGVTdHJva2UpIHsKKyAgICBpZiAobW9kZSAmIFRleHREcmF3aW5nTW9kZTo6U3Ryb2tl
KSB7CiAgICAgICAgIGlmIChwYWludFN0eWxlLnN0cm9rZUNvbG9yICE9IGNvbnRleHQuc3Ryb2tl
Q29sb3IoKSkKICAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IocGFpbnRTdHlsZS5z
dHJva2VDb2xvcik7CiAgICAgICAgIGlmIChwYWludFN0eWxlLnN0cm9rZVdpZHRoICE9IGNvbnRl
eHQuc3Ryb2tlVGhpY2tuZXNzKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dFBhaW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
UGFpbnRlci5jcHAJKHJldmlzaW9uIDI1OTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0UGFpbnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSwxNyArMTU5LDIzIEBAIHZv
aWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dEFuZEVtcGhhc2lzTWEKIAogICAgICAgICBmb3IgKGF1
dG8gb3JkZXIgOiBwYWludE9yZGVyKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG9yZGVyKSB7Ci0g
ICAgICAgICAgICBjYXNlIFBhaW50VHlwZTo6RmlsbDoKLSAgICAgICAgICAgICAgICBtX2NvbnRl
eHQuc2V0VGV4dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9kZSAmIH5UZXh0TW9kZVN0cm9rZSk7
CisgICAgICAgICAgICBjYXNlIFBhaW50VHlwZTo6RmlsbDogeworICAgICAgICAgICAgICAgIGF1
dG8gdGV4dERyYXdpbmdNb2RlV2l0aG91dFN0cm9rZSA9IHRleHREcmF3aW5nTW9kZTsKKyAgICAg
ICAgICAgICAgICB0ZXh0RHJhd2luZ01vZGVXaXRob3V0U3Ryb2tlLnJlbW92ZShUZXh0RHJhd2lu
Z01vZGU6OlN0cm9rZSk7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LnNldFRleHREcmF3aW5n
TW9kZSh0ZXh0RHJhd2luZ01vZGVXaXRob3V0U3Ryb2tlKTsKICAgICAgICAgICAgICAgICBwYWlu
dFRleHRXaXRoU2hhZG93cyhzaGFkb3dUb1VzZSwgc2hhZG93Q29sb3JGaWx0ZXIsICptX2ZvbnQs
IHRleHRSdW4sIGJveFJlY3QsIHRleHRPcmlnaW4sIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIG51
bGxBdG9tKCksIDAsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBzaGFkb3dUb1VzZSA9IG51bGxw
dHI7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LnNldFRleHREcmF3aW5nTW9kZSh0ZXh0RHJh
d2luZ01vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQYWlu
dFR5cGU6OlN0cm9rZToKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQuc2V0VGV4dERyYXdpbmdN
b2RlKHRleHREcmF3aW5nTW9kZSAmIH5UZXh0TW9kZUZpbGwpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY2FzZSBQYWludFR5cGU6OlN0cm9rZTogeworICAgICAgICAgICAgICAgIGF1dG8g
dGV4dERyYXdpbmdNb2RlV2l0aG91dEZpbGwgPSB0ZXh0RHJhd2luZ01vZGU7CisgICAgICAgICAg
ICAgICAgdGV4dERyYXdpbmdNb2RlV2l0aG91dEZpbGwucmVtb3ZlKFRleHREcmF3aW5nTW9kZTo6
RmlsbCk7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LnNldFRleHREcmF3aW5nTW9kZSh0ZXh0
RHJhd2luZ01vZGVXaXRob3V0RmlsbCk7CiAgICAgICAgICAgICAgICAgcGFpbnRUZXh0V2l0aFNo
YWRvd3Moc2hhZG93VG9Vc2UsIHNoYWRvd0NvbG9yRmlsdGVyLCAqbV9mb250LCB0ZXh0UnVuLCBi
b3hSZWN0LCB0ZXh0T3JpZ2luLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBudWxsQXRvbSgpLCAw
LCBwYWludFN0eWxlLnN0cm9rZVdpZHRoID4gMCk7CiAgICAgICAgICAgICAgICAgc2hhZG93VG9V
c2UgPSBudWxscHRyOwogICAgICAgICAgICAgICAgIG1fY29udGV4dC5zZXRUZXh0RHJhd2luZ01v
ZGUodGV4dERyYXdpbmdNb2RlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgUGFpbnRUeXBlOjpNYXJrZXJzOgogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUdyYWRpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCShyZXZpc2lvbiAyNTk1NzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNyArMTY3LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50OjphcHBseVJlcwogICAgICAgICB9CiAjZW5kaWYKIAotICAgICAgICBjb250
ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUocmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jl
c291cmNlTW9kZTo6QXBwbHlUb0ZpbGwpID8gVGV4dE1vZGVGaWxsIDogVGV4dE1vZGVTdHJva2Up
OworICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUocmVzb3VyY2VNb2RlLmNvbnRh
aW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6QXBwbHlUb0ZpbGwpID8gVGV4dERyYXdpbmdNb2Rl
OjpGaWxsIDogVGV4dERyYXdpbmdNb2RlOjpTdHJva2UpOwogICAgIH0KIAogICAgIGNvbnN0IFNW
R1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlLnN2Z1N0eWxlKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm4uY3BwCShyZXZpc2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSwx
MyArMTg1LDEzIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjphcHBseVJlc28KIAog
ICAgIGlmIChyZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBs
eVRvVGV4dCkpIHsKICAgICAgICAgaWYgKHJlc291cmNlTW9kZS5jb250YWlucyhSZW5kZXJTVkdS
ZXNvdXJjZU1vZGU6OkFwcGx5VG9GaWxsKSkgewotICAgICAgICAgICAgY29udGV4dC0+c2V0VGV4
dERyYXdpbmdNb2RlKFRleHRNb2RlRmlsbCk7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0
RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlOjpGaWxsKTsKIAogI2lmIFVTRShDRykKICAgICAg
ICAgICAgIGNvbnRleHQtPmFwcGx5RmlsbFBhdHRlcm4oKTsKICNlbmRpZgogICAgICAgICB9IGVs
c2UgaWYgKHJlc291cmNlTW9kZS5jb250YWlucyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6OkFwcGx5
VG9TdHJva2UpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoVGV4
dE1vZGVTdHJva2UpOworICAgICAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKFRl
eHREcmF3aW5nTW9kZTo6U3Ryb2tlKTsKIAogI2lmIFVTRShDRykKICAgICAgICAgICAgIGNvbnRl
eHQtPmFwcGx5U3Ryb2tlUGF0dGVybigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcAko
cmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBA
IGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVIKICAgICAgICAgICAgIGNv
bnRleHQtPnNldEZpbGxSdWxlKHN2Z1N0eWxlLmZpbGxSdWxlKCkpOwogCiAgICAgICAgIGlmIChy
ZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvVGV4dCkp
Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dE1vZGVGaWxsKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGU6
OkZpbGwpOwogICAgIH0gZWxzZSBpZiAocmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jl
c291cmNlTW9kZTo6QXBwbHlUb1N0cm9rZSkpIHsKICAgICAgICAgLy8gV2hlbiByZW5kZXJpbmcg
dGhlIG1hc2sgZm9yIGEgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLCB0aGUgc3Ryb2tlIGNvZGUg
cGF0aCBpcyBuZXZlciBoaXQuCiAgICAgICAgIEFTU0VSVCghaXNSZW5kZXJpbmdNYXNrKTsKQEAg
LTYxLDcgKzYxLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3I6OmFwcGx5Ugog
ICAgICAgICBTVkdSZW5kZXJTdXBwb3J0OjphcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KGNvbnRl
eHQsIHN0eWxlLCByZW5kZXJlcik7CiAKICAgICAgICAgaWYgKHJlc291cmNlTW9kZS5jb250YWlu
cyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6OkFwcGx5VG9UZXh0KSkKLSAgICAgICAgICAgIGNvbnRl
eHQtPnNldFRleHREcmF3aW5nTW9kZShUZXh0TW9kZVN0cm9rZSk7CisgICAgICAgICAgICBjb250
ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlOjpTdHJva2UpOwogICAgIH0K
IAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTc2NykKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MjAtMDQtMDggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBJUEMgc2VyaWFsaXphdGlvbiBvZiBlbnVtcyBzaG91bGQgc2VyaWFsaXplIHN0ZDo6
dW5kZXJseWluZ190eXBlIGluc3RlYWQgb2YgdWludDY0X3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDIyOAorCisgICAgICAgIFJldmlld2VkIGJ5
IENocmlzIER1bWV6IGFuZCBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9E
ZWNvZGVyLmg6CisgICAgICAgIChJUEM6OkRlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChJUEM6
OkRlY29kZXI6Om9wZXJhdG9yPj4pOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpkZWNvZGVFbnVt
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5oOgorICAgICAgICAqIFNoYXJlZC9j
Zi9Bcmd1bWVudENvZGVyc0NGLmNwcDoKKyAgICAgICAgKElQQzo6ZW5jb2RlKToKKyAgICAgICAg
KElQQzo6ZGVjb2RlKToKKwogMjAyMC0wNC0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgSGFuZGxlIFtQREZEb2N1bWVudCBpbml0V2l0aFByb3ZpZGVyOl0g
cmV0dXJuaW5nIG5pbApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAkocmV2
aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDQsMTAgKzEwNCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZWNv
ZGUoZG91YmxlJik7CiAgICAgRGVjb2RlciYgb3BlcmF0b3I+PihPcHRpb25hbDxkb3VibGU+Jik7
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFPgotICAgIGF1dG8gZGVjb2RlKEUmIGUpIC0+IHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZSwgYm9vbD4KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBFLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+
Ojp2YWx1ZT4+CisgICAgYm9vbCBkZWNvZGUoRSYgZSkKICAgICB7Ci0gICAgICAgIHVpbnQ2NF90
IHZhbHVlOworICAgICAgICB0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFPjo6dHlwZSB2
YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGUodmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBpZiAoIWlzVmFsaWRFbnVtPEU+KHZhbHVlKSkKQEAgLTExNywxMCArMTE3
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgRSwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPiog
PSBudWxscHRyPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHR5cGVuYW1lID0gc3RkOjplbmFi
bGVfaWZfdDxzdGQ6OmlzX2VudW08RT46OnZhbHVlPj4KICAgICBEZWNvZGVyJiBvcGVyYXRvcj4+
KE9wdGlvbmFsPEU+JiBvcHRpb25hbCkKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiB2YWx1ZTsKKyAgICAgICAgT3B0aW9uYWw8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8
RT46OnR5cGU+IHZhbHVlOwogICAgICAgICAqdGhpcyA+PiB2YWx1ZTsKICAgICAgICAgaWYgKHZh
bHVlICYmIGlzVmFsaWRFbnVtPEU+KCp2YWx1ZSkpCiAgICAgICAgICAgICBvcHRpb25hbCA9IHN0
YXRpY19jYXN0PEU+KCp2YWx1ZSk7CkBAIC0xMjksMTIgKzEyOSwxMCBAQCBwdWJsaWM6CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIGRlY29kZUVudW0oVCYgcmVzdWx0KQogICAgIHsK
LSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPD0gOCwgIkVudW0gdHlwZSBUIG11c3Qg
bm90IGJlIGxhcmdlciB0aGFuIDY0IGJpdHMhIik7Ci0KLSAgICAgICAgdWludDY0X3QgdmFsdWU7
CisgICAgICAgIHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPFQ+Ojp0eXBlIHZhbHVlOwog
ICAgICAgICBpZiAoIWRlY29kZSh2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIAorCiAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFQ+KHZhbHVlKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RW5jb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29k
ZXIuaAkocmV2aXNpb24gMjU5NTc3KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5j
b2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw5ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgZW5jb2RlRW51bShUIHQpCiAgICAgewotICAgICAgICBD
T01QSUxFX0FTU0VSVChzaXplb2YoVCkgPD0gc2l6ZW9mKHVpbnQ2NF90KSwgZW51bV90eXBlX211
c3Rfbm90X2JlX2xhcmdlcl90aGFuXzY0X2JpdHMpOwotCi0gICAgICAgIGVuY29kZShzdGF0aWNf
Y2FzdDx1aW50NjRfdD4odCkpOworICAgICAgICBlbmNvZGUoc3RhdGljX2Nhc3Q8dHlwZW5hbWUg
c3RkOjp1bmRlcmx5aW5nX3R5cGU8VD46OnR5cGU+KHQpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08dHlwZW5hbWUgc3Rk
OjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4+Ojp2YWx1ZT4qID0g
bnVsbHB0cj4KQEAgLTc1LDcgKzczLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4K
ICAgICBFbmNvZGVyJiBvcGVyYXRvcjw8KFQmJiB0KQogICAgIHsKLSAgICAgICAgZW5jb2RlKHN0
YXRpY19jYXN0PHVpbnQ2NF90Pih0KSk7CisgICAgICAgIGVuY29kZShzdGF0aWNfY2FzdDx0eXBl
bmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxUPjo6dHlwZT4odCkpOwogICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICAgfQogCkBAIC0xMTMsMTAgKzExMSw4IEBAIHByaXZhdGU6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRT4KICAgICBhdXRvIGVuY29kZShFIHZhbHVlKSAtPiBzdGQ6OmVuYWJsZV9p
Zl90PHN0ZDo6aXNfZW51bTxFPjo6dmFsdWU+CiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZihFKSA8PSBzaXplb2YodWludDY0X3QpLCAiRW51bSB0eXBlIG11c3Qgbm90IGJlIGxh
cmdlciB0aGFuIDY0IGJpdHMuIik7Ci0KLSAgICAgICAgQVNTRVJUKGlzVmFsaWRFbnVtPEU+KHN0
YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSkpKTsKLSAgICAgICAgZW5jb2RlKHN0YXRpY19jYXN0
PHVpbnQ2NF90Pih2YWx1ZSkpOworICAgICAgICBBU1NFUlQoaXNWYWxpZEVudW08RT4oc3RhdGlj
X2Nhc3Q8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RT46OnR5cGU+KHZhbHVlKSkpOwor
ICAgICAgICBlbmNvZGUoc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8
RT46OnR5cGU+KHZhbHVlKSk7CiAgICAgfQogCiAgICAgdm9pZCBlbmNvZGVIZWFkZXIoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCShyZXZp
c2lvbiAyNTk1NzcpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NG
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDkxLDcgKzQ5MSw3IEBAIHZvaWQgZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIENGTnVtYmVyUmUKICAgICBib29sIHJlc3VsdCA9IENGTnVtYmVyR2V0VmFs
dWUobnVtYmVyLCBudW1iZXJUeXBlLCBidWZmZXIuZGF0YSgpKTsKICAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0KTsKIAotICAgIGVuY29kZXIuZW5jb2RlRW51bShudW1iZXJUeXBlKTsK
KyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG51bWJlclR5cGUpOwogICAgIGVu
Y29kZXIgPDwgSVBDOjpEYXRhUmVmZXJlbmNlKGJ1ZmZlcik7CiB9CiAKQEAgLTUzNyw5ICs1Mzcs
MTEgQEAgc3RhdGljIHNpemVfdCBzaXplRm9yTnVtYmVyVHlwZShDRk51bWJlcgogCiBib29sIGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+JiByZXN1bHQpCiB7
Ci0gICAgQ0ZOdW1iZXJUeXBlIG51bWJlclR5cGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUVu
dW0obnVtYmVyVHlwZSkpCisgICAgT3B0aW9uYWw8dWludDhfdD4gbnVtYmVyVHlwZUZyb21JUEM7
CisgICAgZGVjb2RlciA+PiBudW1iZXJUeXBlRnJvbUlQQzsKKyAgICBpZiAoIW51bWJlclR5cGVG
cm9tSVBDIHx8ICpudW1iZXJUeXBlRnJvbUlQQyA+IGtDRk51bWJlck1heFR5cGUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBhdXRvIG51bWJlclR5cGUgPSBzdGF0aWNfY2FzdDxDRk51bWJl
clR5cGU+KCpudW1iZXJUeXBlRnJvbUlQQyk7CiAKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0
YVJlZmVyZW5jZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQpAQCAt
NTcxLDE1ICs1NzMsMTcgQEAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgQ0ZTdHJpbmdS
ZQogICAgIG51bUNvbnZlcnRlZEJ5dGVzID0gQ0ZTdHJpbmdHZXRCeXRlcyhzdHJpbmcsIHJhbmdl
LCBlbmNvZGluZywgMCwgZmFsc2UsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksICZidWZm
ZXJMZW5ndGgpOwogICAgIEFTU0VSVChudW1Db252ZXJ0ZWRCeXRlcyA9PSBsZW5ndGgpOwogCi0g
ICAgZW5jb2Rlci5lbmNvZGVFbnVtKGVuY29kaW5nKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PHVpbnQzMl90PihlbmNvZGluZyk7CiAgICAgZW5jb2RlciA8PCBJUEM6OkRhdGFSZWZlcmVu
Y2UoYnVmZmVyKTsKIH0KIAogYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiYgcmVzdWx0KQogewotICAgIENGU3RyaW5nRW5jb2RpbmcgZW5jb2Rpbmc7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oZW5jb2RpbmcpKQorICAgIE9wdGlvbmFsPHVp
bnQzMl90PiBlbmNvZGluZ0Zyb21JUEM7CisgICAgZGVjb2RlciA+PiBlbmNvZGluZ0Zyb21JUEM7
CisgICAgaWYgKCFlbmNvZGluZ0Zyb21JUEMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBh
dXRvIGVuY29kaW5nID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdFbmNvZGluZz4oKmVuY29kaW5nRnJv
bUlQQyk7CiAKICAgICBpZiAoIUNGU3RyaW5nSXNFbmNvZGluZ0F2YWlsYWJsZShlbmNvZGluZykp
CiAgICAgICAgIHJldHVybiBmYWxzZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>