<?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>190762</bug_id>
          
          <creation_ts>2018-10-19 14:29:42 -0700</creation_ts>
          <short_desc>CSS Paint API should give a 2d rendering context</short_desc>
          <delta_ts>2018-10-25 13:15:05 -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>Layout and Rendering</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>
          
          <blocked>190217</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Michaud">justin_michaud</reporter>
          <assigned_to name="Justin Michaud">justin_michaud</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1470991</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-19 14:29:42 -0700</bug_when>
    <thetext>As defined in the spec, the first parameter to the paint callback should be a PaintRenderingContext2D, which is a subset of a normal 2d rendering context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470996</commentid>
    <comment_count>1</comment_count>
      <attachid>352825</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-19 14:53:40 -0700</bug_when>
    <thetext>Created attachment 352825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471008</commentid>
    <comment_count>2</comment_count>
      <attachid>352828</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-19 15:20:40 -0700</bug_when>
    <thetext>Created attachment 352828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471019</commentid>
    <comment_count>3</comment_count>
      <attachid>352828</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-10-19 16:20:38 -0700</bug_when>
    <thetext>Comment on attachment 352828
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Add a new type of canvas and 2d rendering context to support the CSS Painting API.
&gt; +        Make many of the methods from HTMLCanvasElement virtual functions on CanvasBase, and

Thanks for doing this. It&apos;s been on my TODO for 12+ months.

&gt; Source/WebCore/bindings/js/JSPaintRenderingContext2DCustom.cpp:18
&gt; +/*
&gt; + * Copyright (C) 2018 Apple Inc. All rights reserved.
&gt; + *
&gt; + * This library is free software; you can redistribute it and/or
&gt; + * modify it under the terms of the GNU Library General Public
&gt; + * License as published by the Free Software Foundation; either
&gt; + * version 2 of the License, or (at your option) any later version.
&gt; + *
&gt; + * This library is distributed in the hope that it will be useful,
&gt; + * but WITHOUT ANY WARRANTY; without even the implied warranty of
&gt; + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
&gt; + * Library General Public License for more details.
&gt; + *
&gt; + * You should have received a copy of the GNU Library General Public License
&gt; + * along with this library; see the file COPYING.LIB.  If not, write to
&gt; + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
&gt; + * Boston, MA 02110-1301, USA.
&gt; + */

Why this license?

&gt; Source/WebCore/html/CanvasBase.cpp:44
&gt; +    ASSERT(!m_context); // Should have been set to null by base class

Nit: .

&gt; Source/WebCore/html/CustomPaintCanvas.cpp:89
&gt; +    m_context = PaintRenderingContext2D::create(*this);
&gt; +    if (!m_context)
&gt; +        return { nullptr };

What would cause this to happen?

&gt; Source/WebCore/html/CustomPaintCanvas.cpp:137
&gt; +    if (!m_imageBuffer)
&gt; +        return;

This would only happen if ImageBuffer::create fails. I wonder if you should reset m_hasCreatedImageBuffer too?

&gt; Source/WebCore/html/CustomPaintCanvas.cpp:139
&gt; +    m_imageBuffer-&gt;context().setShadowsIgnoreTransforms(true);
&gt; +    m_imageBuffer-&gt;context().setStrokeThickness(1);

Could you add a comment here explaining why you need these?

&gt; Source/WebCore/html/CustomPaintCanvas.cpp:146
&gt; +    m_imageBuffer = WTFMove(buffer);
&gt; +    if (m_imageBuffer &amp;&amp; m_size != m_imageBuffer-&gt;internalSize())
&gt; +        m_size = m_imageBuffer-&gt;internalSize();

Should you set m_size to (0,0) if the buffer was null?

&gt; Source/WebCore/html/canvas/PaintRenderingContext2D.idl:31
&gt; +CustomIsReachable,
&gt; +EnabledAtRuntime=CSSPaintingAPI,
&gt; +Conditional=CSS_PAINTING_API,
&gt; +JSGenerateToJSObject,
&gt; +JSCustomMarkFunction,

We usually indent these.

&gt; Source/WebCore/html/canvas/WebMetalRenderPassAttachmentDescriptor.h:31
&gt; -#include &lt;wtf/Ref.h&gt;
&gt;  #include &lt;wtf/RefCounted.h&gt;
&gt; +#include &lt;wtf/RefPtr.h&gt;

Drive-by!

&gt; LayoutTests/fast/css-custom-paint/basic.html:79
&gt; +      for (var i = 0; i &lt; 6; i++){
&gt; +        for (var j = 0; j &lt; 6; j++){
&gt; +          ctx.fillStyle = &apos;rgb(&apos; + Math.floor(255 - 42.5 * i) + &apos;,&apos; +
&gt; +                           Math.floor(255 - 42.5 * j) + &apos;,0)&apos;;
&gt; +          ctx.fillRect(j * 25, i * 25, 25, 25);
&gt; +        }
&gt; +      }

At this point can&apos;t you have a ref-test against a normal canvas object?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471059</commentid>
    <comment_count>4</comment_count>
      <attachid>352849</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-19 19:56:31 -0700</bug_when>
    <thetext>Created attachment 352849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471062</commentid>
    <comment_count>5</comment_count>
      <attachid>352828</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-19 20:09:02 -0700</bug_when>
    <thetext>Comment on attachment 352828
Patch

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

&gt;&gt; Source/WebCore/html/CustomPaintCanvas.cpp:139
&gt;&gt; +    m_imageBuffer-&gt;context().setStrokeThickness(1);
&gt; 
&gt; Could you add a comment here explaining why you need these?

No. I have no clue, I copied it from HTMLCanvasElement. The blame (git log --pretty=short -u -L 940,941:Source/WebCore/html/HTMLCanvasElement.cpp) isn&apos;t very helpful either, this line was there since well before 2010. Do you know who might know about this?

&gt;&gt; Source/WebCore/html/canvas/WebMetalRenderPassAttachmentDescriptor.h:31
&gt;&gt; +#include &lt;wtf/RefPtr.h&gt;
&gt; 
&gt; Drive-by!

We really need a bot to build without unified sources. This is yet another build error caused by them.

&gt;&gt; LayoutTests/fast/css-custom-paint/basic.html:79
&gt;&gt; +      }
&gt; 
&gt; At this point can&apos;t you have a ref-test against a normal canvas object?

Yep. In the patch that starts off the Worklets implementation (which should be next), I am hoping to re-write all of these tests so they can work without the dom. Then, I am going to start adding some ref tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471069</commentid>
    <comment_count>6</comment_count>
      <attachid>352849</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-10-19 21:59:38 -0700</bug_when>
    <thetext>Comment on attachment 352849
Patch

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

&gt; Source/WebCore/html/CustomPaintCanvas.h:75
&gt; +    bool hasCreatedImageBuffer() const final { return m_hasCreatedImageBuffer; }
&gt; +    ImageBuffer* buffer() const final;
&gt; +    Image* copiedImage() const final;

I don&apos;t think this new canvas type should necessarily be backed by an image buffer. It should be display-list based.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471070</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-10-19 22:06:06 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #6)
&gt; Comment on attachment 352849 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=352849&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/CustomPaintCanvas.h:75
&gt; &gt; +    bool hasCreatedImageBuffer() const final { return m_hasCreatedImageBuffer; }
&gt; &gt; +    ImageBuffer* buffer() const final;
&gt; &gt; +    Image* copiedImage() const final;
&gt; 
&gt; I don&apos;t think this new canvas type should necessarily be backed by an image
&gt; buffer. It should be display-list based.

From talking to Justin today I think this is a stop-gap to get things working, but display lists are the endgame. Are you thinking he should just go straight to display lists?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471072</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-10-19 22:11:39 -0700</bug_when>
    <thetext>I do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471353</commentid>
    <comment_count>9</comment_count>
      <attachid>352911</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-22 14:50:35 -0700</bug_when>
    <thetext>Created attachment 352911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471356</commentid>
    <comment_count>10</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-22 14:52:58 -0700</bug_when>
    <thetext>This patch uses display lists to do the drawing. I think drawImage is the only supported function that won&apos;t work right now with display lists, and I would like to fix it in a different patch. This also still calls the paint callback during paint, but I think fixing that should probably go in another patch too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471361</commentid>
    <comment_count>11</comment_count>
      <attachid>352849</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-10-22 15:01:20 -0700</bug_when>
    <thetext>Comment on attachment 352849
Patch

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

&gt; Source/WebCore/html/canvas/PaintRenderingContext2D.idl:33
&gt; +[
&gt; +    CustomIsReachable,
&gt; +    EnabledAtRuntime=CSSPaintingAPI,
&gt; +    Conditional=CSS_PAINTING_API,
&gt; +    JSGenerateToJSObject,
&gt; +    JSCustomMarkFunction,
&gt; +] interface PaintRenderingContext2D {
&gt; +};

Does the IDL need to be taught about workers? When I was looking at the CSS Typed OM stuff I saw Exposed=(Window,LayoutWorklet,PaintWorklet) in Chrome&apos;s IDL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471365</commentid>
    <comment_count>12</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-22 15:04:17 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #11)
&gt; Comment on attachment 352849 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=352849&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/canvas/PaintRenderingContext2D.idl:33
&gt; &gt; +[
&gt; &gt; +    CustomIsReachable,
&gt; &gt; +    EnabledAtRuntime=CSSPaintingAPI,
&gt; &gt; +    Conditional=CSS_PAINTING_API,
&gt; &gt; +    JSGenerateToJSObject,
&gt; &gt; +    JSCustomMarkFunction,
&gt; &gt; +] interface PaintRenderingContext2D {
&gt; &gt; +};
&gt; 
&gt; Does the IDL need to be taught about workers? When I was looking at the CSS
&gt; Typed OM stuff I saw Exposed=(Window,LayoutWorklet,PaintWorklet) in Chrome&apos;s
&gt; IDL.

I think it will eventually. I am going to see how much of the Worklets spec needs to be implemented for custom paint to work next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471389</commentid>
    <comment_count>13</comment_count>
      <attachid>352911</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-10-22 15:39:29 -0700</bug_when>
    <thetext>Comment on attachment 352911
Patch

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

&gt; Source/WebCore/html/CustomPaintCanvas.cpp:89
&gt; +    downcast&lt;PaintRenderingContext2D&gt;(*m_context).setUsesDisplayListDrawing(true);
&gt; +    downcast&lt;PaintRenderingContext2D&gt;(*m_context).setTracksDisplayListReplay(false);

smfr++ for recommending this. I didn&apos;t know it was stable enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471398</commentid>
    <comment_count>14</comment_count>
      <attachid>352921</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-22 16:00:31 -0700</bug_when>
    <thetext>Created attachment 352921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471423</commentid>
    <comment_count>15</comment_count>
      <attachid>352929</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-22 17:07:06 -0700</bug_when>
    <thetext>Created attachment 352929
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471443</commentid>
    <comment_count>16</comment_count>
      <attachid>352929</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-22 17:46:23 -0700</bug_when>
    <thetext>Comment on attachment 352929
Patch

Clearing flags on attachment: 352929

Committed r237344: &lt;https://trac.webkit.org/changeset/237344&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471444</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-22 17:46:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471445</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-22 17:47:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/45472741&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472164</commentid>
    <comment_count>19</comment_count>
      <attachid>352929</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-10-25 13:15:05 -0700</bug_when>
    <thetext>Comment on attachment 352929
Patch

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

&gt; Source/WebCore/platform/graphics/CustomPaintImage.cpp:66
&gt; +    UNUSED_PARAM(destContext);

Why is this here? The code below seems to use destContext.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352825</attachid>
            <date>2018-10-19 14:53:40 -0700</date>
            <delta_ts>2018-10-19 15:20:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190762-20181019145338.patch</filename>
            <type>text/plain</type>
            <size>56128</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ4M2QyZmU0N2E4ODVm
NjA0ODZlYjJlMWJjNGYzNTY5YTBjYzk3Yy4uNTMwZWI1NmU0ZGY4Mjk3NzA3ZDE5Mjk2NmFhOWY2
ZTM3ZGMxYTAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDE4LTEwLTE5ICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBDU1MgUGFp
bnQgQVBJIHNob3VsZCBnaXZlIGEgMmQgcmVuZGVyaW5nIGNvbnRleHQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyB0eXBlIG9mIGNhbnZh
cyBhbmQgMmQgcmVuZGVyaW5nIGNvbnRleHQgdG8gc3VwcG9ydCB0aGUgQ1NTIFBhaW50aW5nIEFQ
SS4KKyAgICAgICAgTWFrZSBtYW55IG9mIHRoZSBtZXRob2RzIGZyb20gSFRNTENhbnZhc0VsZW1l
bnQgdmlydHVhbCBmdW5jdGlvbnMgb24gQ2FudmFzQmFzZSwgYW5kCisgICAgICAgIHJlbW92ZSBt
YW55IG9mIHRoZSBkb3duY2FzdHMgaW4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZSBhcyBh
IHJlc3VsdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGFpbnRS
ZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJv
b3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFJlbmRlcmluZ0NvbnRleHQyRE93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1BhaW50UmVu
ZGVyaW5nQ29udGV4dDJEOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGNzcy9DU1NQYWludENh
bGxiYWNrLmg6CisgICAgICAgICogY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsOgorICAgICAgICAq
IGh0bWwvQ2FudmFzQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjp+Q2Fu
dmFzQmFzZSk6CisgICAgICAgICogaHRtbC9DYW52YXNCYXNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNCYXNlOjppc0N1c3RvbVBhaW50Q2FudmFzIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L0N1c3RvbVBhaW50Q2FudmFzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDdXN0b21Q
YWludENhbnZhczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFz
OjpDdXN0b21QYWludENhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZh
czo6fkN1c3RvbVBhaW50Q2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2Fu
dmFzOjp3aWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6
c2V0V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OmhlaWdodCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6c2V0SGVpZ2h0KToK
KyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpzaXplIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbVBhaW50Q2FudmFzOjpnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbVBhaW50Q2FudmFzOjpidWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9t
UGFpbnRDYW52YXM6OmNvcGllZEltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bVBhaW50Q2FudmFzOjpkcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21QYWludENhbnZhczo6ZXhpc3RpbmdEcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OnNldEltYWdlQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjptYWtlUmVuZGVyaW5nUmVz
dWx0c0F2YWlsYWJsZSk6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludENhbnZhcy5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oLgorICAgICAgICAq
IGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZh
cy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWludE9yaWdp
bik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aXNQYWludCBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp1bndpbmRTdGF0
ZVN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6
OmlzQWNjZWxlcmF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0RmlsbFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnJlc2V0VHJhbnNmb3JtKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjbGVhckNhbnZhcyk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp0cmFuc2Zv
cm1BcmVhVG9EZXZpY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6cmVjdENvbnRhaW5zQ2FudmFzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVm
ZmVyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
Ojpjb21wb3NpdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpkaWREcmF3RW50aXJlQ2FudmFzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRpZERyYXcpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6ZHJhd2luZ0NvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6Z2V0SW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnB1dEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oLgorICAgICAgICAo
V2ViQ29yZTo6UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYWludFJlbmRlcmluZ0NvbnRleHQyRDo6UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmguCisgICAgICAgICogaHRt
bC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWlu
dEltYWdlOjpkb0N1c3RvbVBhaW50KToKKwogMjAxOC0xMC0xOSAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gUmVuZGVyUmVwbGFjZWQgcmVuZGVy
ZXIgc2hvdWxkIGNyZWF0ZSBJbmxpbmVCb3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOGIwMmE1
MmQ1MGQwMWQ3N2VjMWUzNjEwY2M3ODcyNjEyNjM0ZTkzOC4uYTU5NjQwNTIwOWU2M2IzYTRkMjI2
YjZmYmNjZTdmZTcwNDQwY2M5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTgwMyw2ICs4MDMs
NyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGh0bWwvY2FudmFzL0ltYWdl
Qml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmlkbAogICAgIGh0bWwvY2FudmFzL0ltYWdl
U21vb3RoaW5nUXVhbGl0eS5pZGwKICAgICBodG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaWRsCisgICAgaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0
MkQuaWRsCiAgICAgaHRtbC9jYW52YXMvUGF0aDJELmlkbAogICAgIGh0bWwvY2FudmFzL1dlYk1l
dGFsQnVmZmVyLmlkbAogICAgIGh0bWwvY2FudmFzL1dlYk1ldGFsQ29tbWFuZEJ1ZmZlci5pZGwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDE1YTVkNmJkOTVlNzZkZjAxMmQ0Zjcz
ODI2ZTA1MGZmZjhlYzk2MzYuLmVkOTY1M2Y4YTE2NTFkMjQzYjE3OTAwYjI3NDcwNjQ5OGZmMTlj
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNzI2LDYgKzcyNiw3IEBAIEpT
X0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL09FU1RleHR1cmVI
YWxmRmxvYXRMaW5lYXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL09FU1ZlcnRl
eEFycmF5T2JqZWN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9PZmZzY3JlZW5D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsIFwKKwkkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1Bh
aW50UmVuZGVyaW5nQ29udGV4dDJELmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9Q
YXRoMkQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMQWN0aXZlSW5mby5p
ZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAwNDYzZDE1NzllNGM2MmQ5MzAxMmMwNjE1ZTkzMmJhNzRm
MTYzZDNhLi5mM2MyNzkyZjk1ZGFiMGZlNGE5MWRhMTE4MWNmM2EzMzZlMTA5OGM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtNDQzLDYgKzQ0Myw3IEBAIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAK
IGJpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNOb2Rl
TGlzdEN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQ3VzdG9tLmNwcAorYmluZGluZ3MvanMvSlNQYWludFJlbmRlcmluZ0NvbnRleHQyREN1
c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTUGF5bWVudE1ldGhvZENoYW5nZUV2ZW50Q3VzdG9tLmNw
cAogYmluZGluZ3MvanMvSlNQYXltZW50UmVzcG9uc2VDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9K
U1BlcmZvcm1hbmNlRW50cnlDdXN0b20uY3BwCkBAIC05NjgsNiArOTY5LDcgQEAgaHRtbC9CdXR0
b25JbnB1dFR5cGUuY3BwCiBodG1sL0NhbnZhc0Jhc2UuY3BwCiBodG1sL0NoZWNrYm94SW5wdXRU
eXBlLmNwcAogaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKK2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMu
Y3BwCiBodG1sL0RPTUZvcm1EYXRhLmNwcAogaHRtbC9ET01Ub2tlbkxpc3QuY3BwCiBodG1sL0RP
TVVSTC5jcHAKQEAgLTExMjYsNiArMTEyOCw3IEBAIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwCiBodG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKIGh0bWwvY2Fu
dmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAKIGh0bWwvY2FudmFzL09mZnNjcmVl
bkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKK2h0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5n
Q29udGV4dDJELmNwcAogaHRtbC9jYW52YXMvUGF0aDJELmNwcAogaHRtbC9jYW52YXMvUGxhY2Vo
b2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcAogaHRtbC9jYW52YXMvV2ViTWV0YWxCdWZmZXIuY3Bw
CkBAIC0yODQzLDYgKzI4NDYsNyBAQCBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5jcHAK
IEpTT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKIEpTT2Zmc2NyZWVuQ2FudmFzLmNwcAogSlNPZmZz
Y3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCitKU1BhaW50UmVuZGVyaW5nQ29udGV4
dDJELmNwcAogSlNPc2NpbGxhdG9yTm9kZS5jcHAKIEpTT3ZlcmNvbnN0cmFpbmVkRXJyb3IuY3Bw
CiBKU092ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmExNWZjZjFkZWVjMDRmZWE2
NDM2YzMwYTU4MWM2YjJkMjUzYWFlZS4uYTFiOWJjMzliYWE1YjllMDFiYTk4NGM5YjY0YzgxOGEw
OTgwMzBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTM0NSw2ICsxMzQ1LDggQEAKIAkJNEE5Q0M4MjExNkJGOUJCNDAwRUM2
NDVBIC8qIEluc3BlY3RvckNTU09NV3JhcHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBOUNDODFGMTZCRjlCQjQwMEVDNjQ1QSAvKiBJbnNwZWN0
b3JDU1NPTVdyYXBwZXJzLmggKi87IH07CiAJCTRBRDAxMDA5MTI3RTY0MkEwMDE1MDM1RiAvKiBI
VE1MT3V0cHV0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEFEMDEwMDYxMjdFNjQyQTAwMTUwMzVGIC8qIEhUTUxPdXRwdXRFbGVtZW50Lmgg
Ki87IH07CiAJCTRBRDAxNzNEMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTcz
QjEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5oICovOyB9OworCQk0QjFF
MTNFNzIxNzkwRDY2MDA0MkNGOTggLyogQ3VzdG9tUGFpbnRDYW52YXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMUUxM0U2MjE3OTBENjYwMDQyQ0Y5
OCAvKiBDdXN0b21QYWludENhbnZhcy5oICovOyB9OworCQk0QjFFMTNFQjIxNzkzN0IzMDA0MkNG
OTggLyogUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMUUxM0VBMjE3OTM3QjMwMDQyQ0Y5OCAvKiBQYWludFJl
bmRlcmluZ0NvbnRleHQyRC5oICovOyB9OwogCQk0QjI3MDhDNzBBRjE5RUU0MDA2NTEyN0YgLyog
UGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8qIFBhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QjMwNDNDRDBBRTAzNzNCMDBB
ODI2NDcgLyogRWRpdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0QjMwNDNDQjBBRTAzNzNCMDBBODI2NDcgLyogRWRpdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEIzNDgwOTQwRUVGNTBENDAw
QUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNH
LmggKi87IH07CkBAIC03ODgzLDYgKzc4ODUsMTIgQEAKIAkJNEFEMDE3M0ExMjdFODI4NjAwMTUw
MzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNIVE1MT3V0cHV0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRBRDAxNzNCMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTE91dHB1dEVsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEIxNzA2NjQyMTYyQjQyRjAwRTU3OEJC
IC8qIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
U1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0QjFFMTNFNjIxNzkwRDY2MDA0MkNGOTggLyogQ3VzdG9tUGFpbnRDYW52YXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ3VzdG9tUGFpbnRDYW52YXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNEIxRTEzRTkyMTc5MEQ3RTAwNDJDRjk4IC8qIEN1c3RvbVBhaW50Q2FudmFzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbVBhaW50Q2FudmFzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNEIxRTEzRUEyMTc5MzdCMzAwNDJDRjk4IC8qIFBhaW50UmVuZGVyaW5n
Q29udGV4dDJELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCMUUxM0VDMjE3OTM4MzgwMDQyQ0Y5OCAvKiBQ
YWludFJlbmRlcmluZ0NvbnRleHQyRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWludFJlbmRl
cmluZ0NvbnRleHQyRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCMUUxM0VE
MjE3OTNEQzEwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGFp
bnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
QjFFMTNFRTIxNzk0MTMyMDA0MkNGOTggLyogSlNQYWludFJlbmRlcmluZ0NvbnRleHQyREN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEIyNzA4QzUwQUYxOUVFNDAwNjUx
MjdGIC8qIFBhc3RlYm9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFz
dGVib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjI3MDk4MTBBRjJFNUUw
MDA2NTEyN0YgLyogUGFzdGVib2FyZE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFBhc3RlYm9hcmRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTRCMzA0M0NBMEFFMDM3M0IwMEE4MjY0NyAvKiBFZGl0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVkaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNzYyOCw2ICsxNzYzNiw5IEBACiAJCQkJMzE0MEM1MUQxRkRGMTUxQTAwRDJB
ODczIC8qIE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgKi8sCiAJCQkJMzE0
MEM1MUUxRkRGMTUxQTAwRDJBODczIC8qIE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oICovLAogCQkJCTMxNDBDNTFCMUZERjEzRDIwMEQyQTg3MyAvKiBPZmZzY3JlZW5DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaWRsICovLAorCQkJCTRCMUUxM0VDMjE3OTM4MzgwMDQyQ0Y5OCAv
KiBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5jcHAgKi8sCisJCQkJNEIxRTEzRUEyMTc5MzdCMzAw
NDJDRjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmggKi8sCisJCQkJNEIxRTEzRUQyMTc5
M0RDMTAwNDJDRjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmlkbCAqLywKIAkJCQk3QzE5
M0JBNzFGNUUwRUFGMDA4OEYzRTYgLyogUGF0aDJELmNwcCAqLywKIAkJCQk3QzE5M0JBQjFGNUUw
RUIxMDA4OEYzRTYgLyogUGF0aDJELmggKi8sCiAJCQkJN0MxOTNCQjQxRjVFMEVCNzAwODhGM0U2
IC8qIFBhdGgyRC5pZGwgKi8sCkBAIC0yMDIwNSw2ICsyMDIxNiw3IEBACiAJCQkJQkNEOUMyNjEw
QzE3QUE2NzAwNUM5MEEyIC8qIEpTTm9kZUxpc3RDdXN0b20uY3BwICovLAogCQkJCUFEMjBCMThD
MThFOUQyMTYwMDVBODA4MyAvKiBKU05vZGVMaXN0Q3VzdG9tLmggKi8sCiAJCQkJMzE0MEM1MkIx
RkUwNkI0OTAwRDJBODczIC8qIEpTT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3Vz
dG9tLmNwcCAqLywKKwkJCQk0QjFFMTNFRTIxNzk0MTMyMDA0MkNGOTggLyogSlNQYWludFJlbmRl
cmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8sCiAJCQkJQ0IzOEZENTUxQ0QyMUQ1QjAwNTkyQTNG
IC8qIEpTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAgKi8sCiAJCQkJODMzQ0Y3MEYyMERCM0Y1
RjAwMTQxQkNDIC8qIEpTUGVyZm9ybWFuY2VPYnNlcnZlckN1c3RvbS5jcHAgKi8sCiAJCQkJQTRB
NjlCOEJCOTFCNDlEMEE4MDRDMzFEIC8qIEpTUHJvbWlzZVJlamVjdGlvbkV2ZW50Q3VzdG9tLmNw
cCAqLywKQEAgLTIwNzcxLDYgKzIwNzgzLDggQEAKIAkJCQk5M0M0NDFGRjBGODEzQUUxMDBDMUE2
MzQgLyogQ29sbGVjdGlvblR5cGUuaCAqLywKIAkJCQlCQzI5OTM1QzE3QTFERDU4MDBCQ0U4ODAg
LyogQ29sb3JJbnB1dFR5cGUuY3BwICovLAogCQkJCUY1NUIzRDgwMTI1MUYxMkQwMDNFRjI2OSAv
KiBDb2xvcklucHV0VHlwZS5oICovLAorCQkJCTRCMUUxM0U5MjE3OTBEN0UwMDQyQ0Y5OCAvKiBD
dXN0b21QYWludENhbnZhcy5jcHAgKi8sCisJCQkJNEIxRTEzRTYyMTc5MEQ2NjAwNDJDRjk4IC8q
IEN1c3RvbVBhaW50Q2FudmFzLmggKi8sCiAJCQkJRTUxNzY3MDIyMEI4OEMxNDAwRDQxMTY3IC8q
IERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmggKi8sCiAJCQkJRjU1QjNEODExMjUxRjEy
RDAwM0VGMjY5IC8qIERhdGVJbnB1dFR5cGUuY3BwICovLAogCQkJCUY1NUIzRDgyMTI1MUYxMkQw
MDNFRjI2OSAvKiBEYXRlSW5wdXRUeXBlLmggKi8sCkBAIC0yODA4OSw2ICsyODEwMyw3IEBACiAJ
CQkJOTNENDM3QTAxRDU3QjE5QTAwQUI4NUVBIC8qIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkQ0RTkxQjFDNDYyQ0ZDMDA1MDY1QkMgLyogQ3VzdG9t
RWxlbWVudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk2MkNEMzI1QTExNTdFNTdDMDA2
M0IwQTcgLyogQ3VzdG9tRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCMUUxM0U3MjE3OTBE
NjYwMDQyQ0Y5OCAvKiBDdXN0b21QYWludENhbnZhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEI3
QUU0OTMyMTc3QjU2RjAwQzU5OTU5IC8qIEN1c3RvbVBhaW50SW1hZ2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4Q0I0MTNFMEU4NjMzRkQwMDMyQzRGMCAvKiBEYXNoQXJyYXkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4MEU2RDBCMEExOTg5Q0EwMDdGQjhDNSAvKiBEYXNoYm9hcmRSZWdpb24uaCBp
biBIZWFkZXJzICovLApAQCAtMzAxMTQsNiArMzAxMjksNyBAQAogCQkJCTU1RUM5NTk5MjA2QUE3
QTAwMDdERDBBOSAvKiBQYWludEZyZXF1ZW5jeVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA4ODUwNjdGMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCTA4ODUwNjgwMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0QjFFMTNFQjIxNzkzN0IzMDA0MkNGOTggLyogUGFpbnRSZW5kZXJpbmdDb250ZXh0
MkQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0ZCMEExOTg5Q0EwMDdGQjhDNSAvKiBQYWly
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBMzEyQjAyNkY3MDBDMUEzNTkgLyogUGFubmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxQTEyQjAyNjc2MDBDMUEzNTkgLyogUGFubmVy
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1BhaW50UmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGFpbnRSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJiNzdmYzk3NzZiOGQwZGU0ZThmNzc5ODkyOTE3NzBkZTI0YzEwOGEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BhaW50UmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJ
TlRJTkdfQVBJKQorCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CitpbmxpbmUgdm9pZCogcm9vdChDdXN0b21QYWludENhbnZhcyogY2FudmFzKQoreworICAgIHJl
dHVybiBjYW52YXM7Cit9CisKK2Jvb2wgSlNQYWludFJlbmRlcmluZ0NvbnRleHQyRE93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRs
ZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQorewor
ICAgIGlmIChVTkxJS0VMWShyZWFzb24pKQorICAgICAgICAqcmVhc29uID0gIkNhbnZhcyBpcyBv
cGFxdWUgcm9vdCI7CisKKyAgICBKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJEKiBqc1BhaW50UmVu
ZGVyaW5nQ29udGV4dCA9IGpzQ2FzdDxKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJEKj4oaGFuZGxl
LnNsb3QoKS0+YXNDZWxsKCkpOworICAgIHZvaWQqIHJvb3QgPSBXZWJDb3JlOjpyb290KCZqc1Bh
aW50UmVuZGVyaW5nQ29udGV4dC0+d3JhcHBlZCgpLmNhbnZhcygpKTsKKyAgICByZXR1cm4gdmlz
aXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCk7Cit9CisKK3ZvaWQgSlNQYWludFJlbmRlcmlu
Z0NvbnRleHQyRDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoJndyYXBwZWQoKS5jYW52YXMoKSkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4IDAyNDkzMGQxNWM0
YjRkMDIzMzEzMTc4YjE0MDVkNzgyYTQ1ZjZkNzEuLjAwODVhZDdlZmRiZDNjZjkxMTE3OTI1ZDBl
MTcwMzg2MjI0NGVjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJD
b3JlQnVpbHRpbk5hbWVzLmgKQEAgLTExMyw2ICsxMTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgbWFjcm8oTmF2aWdhdG9yVXNlck1lZGlhKSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVuQ2Fu
dmFzKSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKSBcCisg
ICAgbWFjcm8oUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQpIFwKICAgICBtYWNybyhQYXltZW50QWRk
cmVzcykgXAogICAgIG1hY3JvKFBheW1lbnRNZXRob2RDaGFuZ2VFdmVudCkgXAogICAgIG1hY3Jv
KFBheW1lbnRSZXF1ZXN0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFp
bnRDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaAppbmRl
eCBmMGVjMmM0NDEzNWFlNDRjYzg5MzUwNmQ4NWE1MDc1OTYzYjIzMTM2Li5mMjFlNjc4YmM5MWZk
MGIyYmI2M2UxMWJiNTk1NmM0MWE3ZjcwOWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFpbnRDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENh
bGxiYWNrLmgKQEAgLTMyLDEzICszMiwxMyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dDsKK2Ns
YXNzIFBhaW50UmVuZGVyaW5nQ29udGV4dDJEOwogCiBjbGFzcyBDU1NQYWludENhbGxiYWNrIDog
cHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFpbnRDYWxsYmFjaz4sIHB1YmxpYyBBY3RpdmVET01DYWxs
YmFjayB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQWN0aXZlRE9NQ2FsbGJhY2s6OkFjdGl2ZURPTUNh
bGxiYWNrOwogCi0gICAgdmlydHVhbCBDYWxsYmFja1Jlc3VsdDx2b2lkPiBoYW5kbGVFdmVudChX
ZWJHTFJlbmRlcmluZ0NvbnRleHQmKSA9IDA7CisgICAgdmlydHVhbCBDYWxsYmFja1Jlc3VsdDx2
b2lkPiBoYW5kbGVFdmVudChQYWludFJlbmRlcmluZ0NvbnRleHQyRCYpID0gMDsKIAogICAgIHZp
cnR1YWwgfkNTU1BhaW50Q2FsbGJhY2soKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWlu
dENhbGxiYWNrLmlkbAppbmRleCA3NmQ5YjZjOTViYTFjZjhkMjk1MmE0NzlkMWM1MzA3NDk0Y2M4
MDljLi4yOTQxNDczYTAzMGJjODFjNWZiNmRkZDIzYTdjZDljZjMxMDUzNWJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsCkBAIC0yNiw0ICsyNiw0IEBACiBbCiAgICAg
RW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKICAgICBDb25kaXRpb25hbD1DU1NfUEFJ
TlRJTkdfQVBJLAotXSBjYWxsYmFjayBDU1NQYWludENhbGxiYWNrID0gdm9pZCAoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0IGNvbnRleHQpOworXSBjYWxsYmFjayBDU1NQYWludENhbGxiYWNrID0gdm9p
ZCAoUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNC
YXNlLmNwcAppbmRleCA4NTkzOWIyNzRmNTkwYjAwY2M4M2EzNzk3Yjc5OTY5NmRkZDZhOGMyLi5m
NGYzYzVlYTM4NDgwMWQxZWQ0NjAyZDk2ZGFhMDMyNzcwZDY3MGMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Q2FudmFzQmFzZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgQ2FudmFzQmFzZTo6Q2FudmFzQmFzZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogCiBDYW52YXNC
YXNlOjp+Q2FudmFzQmFzZSgpCiB7CisgICAgQVNTRVJUKCFtX2NvbnRleHQpOyAvLyBTaG91bGQg
aGF2ZSBiZWVuIHNldCB0byBudWxsIGJ5IGJhc2UgY2xhc3MKICAgICBub3RpZnlPYnNlcnZlcnND
YW52YXNEZXN0cm95ZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9D
YW52YXNCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuaAppbmRleCA1ZGZl
MjkzNTJlMTUzNGY2NjIwYzUzNjZiZWI5ODQ0MWExZjQ3MmY3Li5jOTFiNWM5NjAwOTA0NTc3OGNm
ZTM0MjMxOGM0YTllZjI5OThmZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Nh
bnZhc0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuaApAQCAtMzAs
OSArMzAsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBZmZpbmVUcmFuc2Zv
cm07CiBjbGFzcyBDYW52YXNCYXNlOwogY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDsKIGNs
YXNzIEVsZW1lbnQ7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBJbWFnZTsKK2NsYXNz
IEltYWdlQnVmZmVyOwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CkBAIC01OCw2ICs2Miw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgYm9vbCBpc0hUTUxDYW52YXNFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNPZmZzY3JlZW5DYW52YXMoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0N1c3RvbVBhaW50Q2FudmFzKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgdW5zaWduZWQgd2lkdGgoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdCA9IDA7CkBAIC04MSw2ICs4NiwxOCBA
QCBwdWJsaWM6CiAKICAgICBIYXNoU2V0PEVsZW1lbnQqPiBjc3NDYW52YXNDbGllbnRzKCkgY29u
c3Q7CiAKKyAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCogZHJhd2luZ0NvbnRleHQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQqIGV4aXN0aW5nRHJhd2luZ0NvbnRl
eHQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlbmRlcmluZ1Jlc3VsdHNB
dmFpbGFibGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoY29uc3QgRmxvYXRSZWN0
JikgPSAwOworCisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNv
bnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBJbWFnZUJ1ZmZlciogYnVmZmVyKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgSW1hZ2UqIGNvcGllZEltYWdlKCkgY29uc3QgPSAwOworCiBwcm90ZWN0ZWQ6CiAg
ICAgQ2FudmFzQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjliNmY3MGQ5NGM3M2MzZjIw
NDQ3N2U0MmZkNjliZjA5MTU0N2Y2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkN1c3RvbVBhaW50Q2FudmFzLmgiCisK
KyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkltYWdlQml0bWFwLmgi
CisjaW5jbHVkZSAiUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitSZWY8Q3VzdG9tUGFpbnRDYW52YXM+IEN1c3RvbVBhaW50Q2FudmFzOjpjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVk
IGhlaWdodCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdXN0b21QYWludENhbnZhcyhj
b250ZXh0LCB3aWR0aCwgaGVpZ2h0KSk7Cit9CisKK0N1c3RvbVBhaW50Q2FudmFzOjpDdXN0b21Q
YWludENhbnZhcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCB3aWR0
aCwgdW5zaWduZWQgaGVpZ2h0KQorICAgIDogQ2FudmFzQmFzZSgmY29udGV4dCkKKyAgICAsIG1f
c2l6ZSh3aWR0aCwgaGVpZ2h0KQoreworfQorCitDdXN0b21QYWludENhbnZhczo6fkN1c3RvbVBh
aW50Q2FudmFzKCkKK3sKKyAgICBtX2NvbnRleHQgPSBudWxscHRyOyAvLyBFbnN1cmUgdGhpcyBn
b2VzIGF3YXkgYmVmb3JlIHRoZSBJbWFnZUJ1ZmZlci4KK30KKwordW5zaWduZWQgQ3VzdG9tUGFp
bnRDYW52YXM6OndpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplLndpZHRoKCk7Cit9
CisKK3ZvaWQgQ3VzdG9tUGFpbnRDYW52YXM6OnNldFdpZHRoKHVuc2lnbmVkIG5ld1dpZHRoKQor
eworICAgIHJldHVybiBtX3NpemUuc2V0V2lkdGgobmV3V2lkdGgpOworfQorCit1bnNpZ25lZCBD
dXN0b21QYWludENhbnZhczo6aGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplLmhl
aWdodCgpOworfQorCit2b2lkIEN1c3RvbVBhaW50Q2FudmFzOjpzZXRIZWlnaHQodW5zaWduZWQg
bmV3SGVpZ2h0KQoreworICAgIHJldHVybiBtX3NpemUuc2V0SGVpZ2h0KG5ld0hlaWdodCk7Cit9
CisKK2NvbnN0IEludFNpemUmIEN1c3RvbVBhaW50Q2FudmFzOjpzaXplKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zaXplOworfQorCit2b2lkIEN1c3RvbVBhaW50Q2FudmFzOjpzZXRTaXplKGNv
bnN0IEludFNpemUmIG5ld1NpemUpCit7CisgICAgbV9zaXplID0gbmV3U2l6ZTsKK30KKworRXhj
ZXB0aW9uT3I8UmVmUHRyPFBhaW50UmVuZGVyaW5nQ29udGV4dDJEPj4gQ3VzdG9tUGFpbnRDYW52
YXM6OmdldENvbnRleHQoKQoreworICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgIHJldHVybiB7
IFJlZlB0cjxQYWludFJlbmRlcmluZ0NvbnRleHQyRD4geyAmZG93bmNhc3Q8UGFpbnRSZW5kZXJp
bmdDb250ZXh0MkQ+KCptX2NvbnRleHQpIH0gfTsKKworICAgIG1fY29udGV4dCA9IFBhaW50UmVu
ZGVyaW5nQ29udGV4dDJEOjpjcmVhdGUoKnRoaXMpOworICAgIGlmICghbV9jb250ZXh0KQorICAg
ICAgICByZXR1cm4geyBudWxscHRyIH07CisKKyAgICByZXR1cm4geyBSZWZQdHI8UGFpbnRSZW5k
ZXJpbmdDb250ZXh0MkQ+IHsgJmRvd25jYXN0PFBhaW50UmVuZGVyaW5nQ29udGV4dDJEPigqbV9j
b250ZXh0KSB9IH07Cit9CisKK0ltYWdlQnVmZmVyKiBDdXN0b21QYWludENhbnZhczo6YnVmZmVy
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1faGFzQ3JlYXRlZEltYWdlQnVmZmVyKQorICAgICAgICBj
cmVhdGVJbWFnZUJ1ZmZlcigpOworICAgIHJldHVybiBtX2ltYWdlQnVmZmVyLmdldCgpOworfQor
CitJbWFnZSogQ3VzdG9tUGFpbnRDYW52YXM6OmNvcGllZEltYWdlKCkgY29uc3QKK3sKKyAgICBp
ZiAoYnVmZmVyKCkpIHsKKyAgICAgICAgaWYgKG1fY29udGV4dCkKKyAgICAgICAgICAgIG1fY29u
dGV4dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKKyAgICAgICAgbV9jb3BpZWRJ
bWFnZSA9IGJ1ZmZlcigpLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNv
bHV0aW9uOjpZZXMpOworICAgIH0KKyAgICByZXR1cm4gbV9jb3BpZWRJbWFnZS5nZXQoKTsKK30K
KworR3JhcGhpY3NDb250ZXh0KiBDdXN0b21QYWludENhbnZhczo6ZHJhd2luZ0NvbnRleHQoKSBj
b25zdAoreworICAgIHJldHVybiBidWZmZXIoKSA/ICZtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkg
OiBudWxscHRyOworfQorCitHcmFwaGljc0NvbnRleHQqIEN1c3RvbVBhaW50Q2FudmFzOjpleGlz
dGluZ0RyYXdpbmdDb250ZXh0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1faGFzQ3JlYXRlZEltYWdl
QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBkcmF3aW5nQ29u
dGV4dCgpOworfQorCit2b2lkIEN1c3RvbVBhaW50Q2FudmFzOjpjcmVhdGVJbWFnZUJ1ZmZlcigp
IGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX2ltYWdlQnVmZmVyKTsKKworICAgIG1faGFzQ3JlYXRl
ZEltYWdlQnVmZmVyID0gdHJ1ZTsKKworICAgIGlmICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IFVuYWNj
ZWxlcmF0ZWQ7CisKKyAgICBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUo
KSwgcmVuZGVyaW5nTW9kZSwgMSwgQ29sb3JTcGFjZVNSR0IsIG51bGxwdHIpKTsKKyAgICBpZiAo
IW1faW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybjsKKyAgICBtX2ltYWdlQnVmZmVyLT5jb250
ZXh0KCkuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXModHJ1ZSk7CisgICAgbV9pbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxKTsKK30KKwordm9pZCBDdXN0b21QYWlu
dENhbnZhczo6c2V0SW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmIGJ1
ZmZlcikgY29uc3QKK3sKKyAgICBtX2ltYWdlQnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAg
IGlmIChtX2ltYWdlQnVmZmVyICYmIG1fc2l6ZSAhPSBtX2ltYWdlQnVmZmVyLT5pbnRlcm5hbFNp
emUoKSkKKyAgICAgICAgbV9zaXplID0gbV9pbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCk7Cit9
CisKK3ZvaWQgQ3VzdG9tUGFpbnRDYW52YXM6Om1ha2VSZW5kZXJpbmdSZXN1bHRzQXZhaWxhYmxl
KCkKK3sKKyAgICBpZiAobV9jb250ZXh0KQorICAgICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKCk7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9D
dXN0b21QYWludENhbnZhcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyM2Q4M2E0OGZhMDkyZGNkNDJiMTdlYjc4
NTUzNzczMzdiNjgwMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1
c3RvbVBhaW50Q2FudmFzLmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKKyNpbmNsdWRlICJBZmZpbmVU
cmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJDYW52YXNCYXNlLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJn
ZXQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgi
CisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgi
CisjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEltYWdlQml0bWFwOworY2xhc3Mg
UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ7CisKK2NsYXNzIEN1c3RvbVBhaW50Q2FudmFzIGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tUGFpbnRDYW52YXM+LCBwdWJsaWMgQ2FudmFzQmFz
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisKKyAgICBzdGF0aWMg
UmVmPEN1c3RvbVBhaW50Q2FudmFzPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHVu
c2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpOworICAgIHZpcnR1YWwgfkN1c3RvbVBhaW50
Q2FudmFzKCk7CisgICAgYm9vbCBpc0N1c3RvbVBhaW50Q2FudmFzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQorCisgICAgdW5zaWduZWQgd2lkdGgoKSBjb25zdCBmaW5hbDsKKyAgICB2
b2lkIHNldFdpZHRoKHVuc2lnbmVkKTsKKyAgICB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdCBmaW5h
bDsKKyAgICB2b2lkIHNldEhlaWdodCh1bnNpZ25lZCk7CisKKyAgICBjb25zdCBJbnRTaXplJiBz
aXplKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBmaW5h
bDsKKworICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxQYWludFJlbmRlcmluZ0NvbnRleHQyRD4+IGdl
dENvbnRleHQoKTsKKworICAgIEdyYXBoaWNzQ29udGV4dCogZHJhd2luZ0NvbnRleHQoKSBjb25z
dCBmaW5hbDsKKyAgICBHcmFwaGljc0NvbnRleHQqIGV4aXN0aW5nRHJhd2luZ0NvbnRleHQoKSBj
b25zdCBmaW5hbDsKKworICAgIHZvaWQgbWFrZVJlbmRlcmluZ1Jlc3VsdHNBdmFpbGFibGUoKSBm
aW5hbDsKKyAgICB2b2lkIGRpZERyYXcoY29uc3QgRmxvYXRSZWN0JikgZmluYWwgeyB9CisKKyAg
ICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0IGZpbmFsIHsgQVNTRVJUKG1f
aGFzQ3JlYXRlZEltYWdlQnVmZmVyKTsgcmV0dXJuIG1faW1hZ2VCdWZmZXItPmJhc2VUcmFuc2Zv
cm0oKTsgfQorCisgICAgYm9vbCBoYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlcjsgfQorICAgIEltYWdlQnVmZmVyKiBidWZm
ZXIoKSBjb25zdCBmaW5hbDsKKyAgICBJbWFnZSogY29waWVkSW1hZ2UoKSBjb25zdCBmaW5hbDsK
KworICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJl
ZjsKKworcHJpdmF0ZToKKyAgICBDdXN0b21QYWludENhbnZhcyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CisKKyAgICB2b2lkIHJlZkNh
bnZhc0Jhc2UoKSBmaW5hbCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkNhbnZhc0Jhc2UoKSBm
aW5hbCB7IGRlcmVmKCk7IH0KKworICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdDsK
KyAgICB2b2lkIHNldEltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mJikg
Y29uc3Q7CisKKyAgICBtdXRhYmxlIEludFNpemUgbV9zaXplOworICAgIG11dGFibGUgYm9vbCBt
X2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlciB7IGZhbHNlIH07CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8SW1h
Z2U+IG1fY29waWVkSW1hZ2U7Cit9OworCit9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBTlZB
UyhXZWJDb3JlOjpDdXN0b21QYWludENhbnZhcywgaXNDdXN0b21QYWludENhbnZhcygpKQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggMmRmOWMwYjMw
ZjU2MDZkOGJlZTZjMWM4MTg3NzljNmIxZTQ4ZTg4Yy4uMzRjYmZlYWJjYzAxOTU2MTk0MDZjMjM3
M2NlMDJiZDc2Njc1MjU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aApAQCAtMTEyLDIwICsxMTIsMjAgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHRv
QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPEJsb2JDYWxsYmFjaz4mJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgSlNDOjpKU1ZhbHVlIHF1YWxpdHkpOwogCiAgICAgLy8gVXNlZCBm
b3IgcmVuZGVyaW5nCi0gICAgdm9pZCBkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZv
aWQgZGlkRHJhdyhjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKIAogICAgIHZvaWQgcGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0
KiBkcmF3aW5nQ29udGV4dCgpIGNvbnN0OwotICAgIEdyYXBoaWNzQ29udGV4dCogZXhpc3RpbmdE
cmF3aW5nQ29udGV4dCgpIGNvbnN0OworICAgIEdyYXBoaWNzQ29udGV4dCogZHJhd2luZ0NvbnRl
eHQoKSBjb25zdCBmaW5hbDsKKyAgICBHcmFwaGljc0NvbnRleHQqIGV4aXN0aW5nRHJhd2luZ0Nv
bnRleHQoKSBjb25zdCBmaW5hbDsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgUmVm
UHRyPE1lZGlhU2FtcGxlPiB0b01lZGlhU2FtcGxlKCk7CiAgICAgRXhjZXB0aW9uT3I8UmVmPE1l
ZGlhU3RyZWFtPj4gY2FwdHVyZVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjpv
cHRpb25hbDxkb3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0ZSk7CiAjZW5kaWYKIAotICAgIEltYWdl
QnVmZmVyKiBidWZmZXIoKSBjb25zdDsKLSAgICBJbWFnZSogY29waWVkSW1hZ2UoKSBjb25zdDsK
KyAgICBJbWFnZUJ1ZmZlciogYnVmZmVyKCkgY29uc3QgZmluYWw7CisgICAgSW1hZ2UqIGNvcGll
ZEltYWdlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBjbGVhckNvcGllZEltYWdlKCk7CiAgICAg
UmVmUHRyPEltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKCk7CiAgICAgdm9pZCBtYWtlUHJlc2VudGF0
aW9uQ29weSgpOwpAQCAtMTMzLDEwICsxMzMsMTAgQEAgcHVibGljOgogCiAgICAgU2VjdXJpdHlP
cmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWw7CiAKLSAgICBBZmZpbmVUcmFuc2Zv
cm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0OworICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNm
b3JtKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIG1ha2VSZW5kZXJpbmdSZXN1bHRzQXZhaWxh
YmxlKCk7Ci0gICAgYm9vbCBoYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlcjsgfQorICAgIHZvaWQgbWFrZVJlbmRlcmluZ1Jlc3VsdHNB
dmFpbGFibGUoKSBmaW5hbDsKKyAgICBib29sIGhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyOyB9CiAKICAgICBib29sIHNo
b3VsZEFjY2VsZXJhdGUoY29uc3QgSW50U2l6ZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9P
ZmZzY3JlZW5DYW52YXMuaAppbmRleCBjMjcyZWQ2ZTk5OWY4YzAyMDliNDc0YjY3NmE4NDBkYTBl
Njg5MjZjLi5iZGExYzBmYTgyYjA5OTczMTA3YzhmODJlZjBkMzQwZDAzNzhmOWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJDYW52YXNC
YXNlLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgpAQCAtNzUsNiArNzYsMTggQEAgcHVibGljOgogICAgIFJlZlB0cjxJbWFnZUJpdG1hcD4gdHJh
bnNmZXJUb0ltYWdlQml0bWFwKCk7CiAgICAgLy8gdm9pZCBjb252ZXJ0VG9CbG9iKEltYWdlRW5j
b2RlT3B0aW9ucyBvcHRpb25zKTsKIAorICAgIEdyYXBoaWNzQ29udGV4dCogZHJhd2luZ0NvbnRl
eHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisgICAgR3JhcGhpY3NDb250ZXh0
KiBleGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsg
fQorCisgICAgdm9pZCBtYWtlUmVuZGVyaW5nUmVzdWx0c0F2YWlsYWJsZSgpIGZpbmFsIHsgfQor
ICAgIHZvaWQgZGlkRHJhdyhjb25zdCBGbG9hdFJlY3QmKSBmaW5hbCB7IH0KKworICAgIEFmZmlu
ZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyB9OyB9CisK
KyAgICBib29sIGhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICBJbWFnZSogY29waWVkSW1hZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBu
dWxscHRyOyB9CisKICAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNpbmcgUmVmQ291
bnRlZDo6ZGVyZWY7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYzM0NjEwMjE1ZTU2OWZlN2FhMTE5Y2E1MjE2
YTdkODNlMTU1NjIyOS4uMzM2MTQzOGYxZWYyMzM2OTlkMGVkYTM1MjFjMDU2ZGU2N2JhZWQyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IENhbnZhc1BhdHRlcm4qIHBhdHRlcm4pCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRP
cmlnaW4oY29uc3QgSFRNTENhbnZhc0VsZW1lbnQqIHNvdXJjZUNhbnZhcykKK2Jvb2wgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBDYW52YXNCYXNlKiBzb3Vy
Y2VDYW52YXMpCiB7CiAgICAgaWYgKG1fY2FudmFzLm9yaWdpbkNsZWFuKCkgJiYgc291cmNlQ2Fu
dmFzICYmICFzb3VyY2VDYW52YXMtPm9yaWdpbkNsZWFuKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dC5oCmluZGV4IDJkMmQ4ODc1NzkwMThkMGZhZmRhYWRmYWU2ZDIyYzFlYjM5MDQxZTIuLmYw
MDcxYzJjZTJmNDA4MDcyOTgzYjBjNWIzNjUxMmE1NzY1MmFkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTYzLDYg
KzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0JpdG1hcFJlbmRlcmVyKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQbGFjZWhvbGRlcigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzT2Zmc2NyZWVuMmQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1BhaW50KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb0NhbnZhcygpIHt9CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
KCkgY29uc3QgeyByZXR1cm4gMDsgfQpAQCAtNzMsNyArNzQsNyBAQCBwdWJsaWM6CiBwcm90ZWN0
ZWQ6CiAgICAgZXhwbGljaXQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJik7CiAg
ICAgYm9vbCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IENhbnZhc1BhdHRlcm4qKTsKLSAgICBib29s
IHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTENhbnZhc0VsZW1lbnQqKTsKKyAgICBib29sIHdv
dWxkVGFpbnRPcmlnaW4oY29uc3QgQ2FudmFzQmFzZSopOwogICAgIGJvb2wgd291bGRUYWludE9y
aWdpbihjb25zdCBIVE1MSW1hZ2VFbGVtZW50Kik7CiAgICAgYm9vbCB3b3VsZFRhaW50T3JpZ2lu
KGNvbnN0IEhUTUxWaWRlb0VsZW1lbnQqKTsKICAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29u
c3QgSW1hZ2VCaXRtYXAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggMTQ0ZTY4ZGVjYzU2
Yjk2YzU1OThiY2I5ODk1MWU3MzlkZDE3OWZiNy4uMDA1Y2M3MDRiNmJlOTg3YzE5YmMzZTEzMTY3
ZDkyNmM4NDI2MTIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE0Niw4ICsxNDYsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnVud2luZFN0YXRlU3RhY2soKQog
ICAgIC8vIGlzIGNsZWFyZWQgYmVmb3JlIGRlc3RydWN0aW9uLCB0byBhdm9pZCBhc3NlcnRpb25z
IGluIHRoZQogICAgIC8vIEdyYXBoaWNzQ29udGV4dCBkdG9yLgogICAgIGlmIChzaXplX3Qgc3Rh
Y2tTaXplID0gbV9zdGF0ZVN0YWNrLnNpemUoKSkgewotICAgICAgICBhdXRvJiBjYW52YXMgPSBk
b3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKLSAgICAgICAgaWYgKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCA9IGNhbnZhcy5leGlzdGluZ0RyYXdpbmdDb250ZXh0KCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBjYW52YXNCYXNlKCkuZXhpc3RpbmdEcmF3
aW5nQ29udGV4dCgpKSB7CiAgICAgICAgICAgICB3aGlsZSAoLS1zdGFja1NpemUpCiAgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICB9CkBAIC0xNjcsOCArMTY2LDcg
QEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6fkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UoKQogYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjppc0FjY2VsZXJhdGVk
KCkgY29uc3QKIHsKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKSB8fCBF
TkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIGF1dG8mIGNhbnZhcyA9IGRvd25jYXN0
PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwotICAgIGlmICghY2FudmFzLmhhc0Ny
ZWF0ZWRJbWFnZUJ1ZmZlcigpKQorICAgIGlmICghY2FudmFzQmFzZSgpLmhhc0NyZWF0ZWRJbWFn
ZUJ1ZmZlcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYXV0byogY29udGV4dCA9IGRy
YXdpbmdDb250ZXh0KCk7CiAgICAgcmV0dXJuIGNvbnRleHQgJiYgY29udGV4dC0+aXNBY2NlbGVy
YXRlZENvbnRleHQoKTsKQEAgLTQwMSw5ICszOTksOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OnNldFN0cm9rZVN0eWxlKENhbnZhc1N0eWxlIHN0eWxlKQogICAgIGlmIChz
dGF0ZSgpLnN0cm9rZVN0eWxlLmlzVmFsaWQoKSAmJiBzdGF0ZSgpLnN0cm9rZVN0eWxlLmlzRXF1
aXZhbGVudENvbG9yKHN0eWxlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgY2FudmFz
ID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7CisgICAgaWYgKHN0
eWxlLmlzQ3VycmVudENvbG9yKCkgJiYgaXM8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2Uo
KSkpIHsKKyAgICAgICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+
KGNhbnZhc0Jhc2UoKSk7CiAKLSAgICBpZiAoc3R5bGUuaXNDdXJyZW50Q29sb3IoKSkgewogICAg
ICAgICBpZiAoc3R5bGUuaGFzT3ZlcnJpZGVBbHBoYSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhN
RTogU2hvdWxkIG5vdCB1c2UgUkdCQTMyIGhlcmUuCiAgICAgICAgICAgICBzdHlsZSA9IENhbnZh
c1N0eWxlKGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoY3VycmVudENvbG9yKCZjYW52YXMpLnJnYigp
LCBzdHlsZS5vdmVycmlkZUFscGhhKCkpKTsKQEAgLTQzMCw5ICs0MjgsOSBAQCB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldEZpbGxTdHlsZShDYW52YXNTdHlsZSBzdHlsZSkK
ICAgICBpZiAoc3RhdGUoKS5maWxsU3R5bGUuaXNWYWxpZCgpICYmIHN0YXRlKCkuZmlsbFN0eWxl
LmlzRXF1aXZhbGVudENvbG9yKHN0eWxlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYg
Y2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7CisgICAg
aWYgKHN0eWxlLmlzQ3VycmVudENvbG9yKCkgJiYgaXM8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZh
c0Jhc2UoKSkpIHsKKyAgICAgICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0Vs
ZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7CiAKLSAgICBpZiAoc3R5bGUuaXNDdXJyZW50Q29sb3IoKSkg
ewogICAgICAgICBpZiAoc3R5bGUuaGFzT3ZlcnJpZGVBbHBoYSgpKSB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogU2hvdWxkIG5vdCB1c2UgUkdCQTMyIGhlcmUuCiAgICAgICAgICAgICBzdHlsZSA9
IENhbnZhc1N0eWxlKGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoY3VycmVudENvbG9yKCZjYW52YXMp
LnJnYigpLCBzdHlsZS5vdmVycmlkZUFscGhhKCkpKTsKQEAgLTkyOCw4ICs5MjYsNyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnJlc2V0VHJhbnNmb3JtKCkKIAogICAgIHJl
YWxpemVTYXZlcygpOwogCi0gICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0Vs
ZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7Ci0gICAgYy0+c2V0Q1RNKGNhbnZhcy5iYXNlVHJhbnNmb3Jt
KCkpOworICAgIGMtPnNldENUTShjYW52YXNCYXNlKCkuYmFzZVRyYW5zZm9ybSgpKTsKICAgICBt
b2RpZmlhYmxlU3RhdGUoKS50cmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oKTsKIAogICAgIGlm
IChoYXNJbnZlcnRpYmxlVHJhbnNmb3JtKQpAQCAtMTU2NSw3ICsxNTYyLDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKEhUTUxJbWFn
ZUVsZW1lbnQmIGltYWcKICAgICByZXR1cm4geyB9OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQm
IHNvdXJjZUNhbnZhcywgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QpCitFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpkcmF3SW1hZ2UoQ2FudmFzQmFzZSYgc291cmNlQ2FudmFzLCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKIHsKICAgICBGbG9hdFJlY3Qgc3JjQ2Fu
dmFzUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNvdXJjZUNhbnZhcy5zaXplKCkpOwog
CkBAIC0xNzI3LDE4ICsxNzI0LDE2IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6Y2xlYXJDYW52YXMoKQogICAgICAgICByZXR1cm47CiAKICAgICBjLT5zYXZlKCk7Ci0gICAg
YXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7
Ci0gICAgYy0+c2V0Q1RNKGNhbnZhcy5iYXNlVHJhbnNmb3JtKCkpOwotICAgIGMtPmNsZWFyUmVj
dChGbG9hdFJlY3QoMCwgMCwgY2FudmFzLndpZHRoKCksIGNhbnZhcy5oZWlnaHQoKSkpOworICAg
IGMtPnNldENUTShjYW52YXNCYXNlKCkuYmFzZVRyYW5zZm9ybSgpKTsKKyAgICBjLT5jbGVhclJl
Y3QoRmxvYXRSZWN0KDAsIDAsIGNhbnZhc0Jhc2UoKS53aWR0aCgpLCBjYW52YXNCYXNlKCkuaGVp
Z2h0KCkpKTsKICAgICBjLT5yZXN0b3JlKCk7CiB9CiAKIFBhdGggQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6dHJhbnNmb3JtQXJlYVRvRGV2aWNlKGNvbnN0IFBhdGgmIHBhdGgpIGNvbnN0
CiB7CiAgICAgUGF0aCB0cmFuc2Zvcm1lZChwYXRoKTsKLSAgICBhdXRvJiBjYW52YXMgPSBkb3du
Y2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKICAgICB0cmFuc2Zvcm1lZC50
cmFuc2Zvcm0oc3RhdGUoKS50cmFuc2Zvcm0pOwotICAgIHRyYW5zZm9ybWVkLnRyYW5zZm9ybShj
YW52YXMuYmFzZVRyYW5zZm9ybSgpKTsKKyAgICB0cmFuc2Zvcm1lZC50cmFuc2Zvcm0oY2FudmFz
QmFzZSgpLmJhc2VUcmFuc2Zvcm0oKSk7CiAgICAgcmV0dXJuIHRyYW5zZm9ybWVkOwogfQogCkBA
IC0xNzUyLDE3ICsxNzQ3LDE0IEBAIFBhdGggQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
dHJhbnNmb3JtQXJlYVRvRGV2aWNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIGJvb2wgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cmVjdENvbnRhaW5zQ2FudmFzKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkgY29uc3QKIHsKICAgICBGbG9hdFF1YWQgcXVhZChyZWN0KTsKLSAgICBhdXRvJiBj
YW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKLSAgICBG
bG9hdFF1YWQgY2FudmFzUXVhZChGbG9hdFJlY3QoMCwgMCwgY2FudmFzLndpZHRoKCksIGNhbnZh
cy5oZWlnaHQoKSkpOworICAgIEZsb2F0UXVhZCBjYW52YXNRdWFkKEZsb2F0UmVjdCgwLCAwLCBj
YW52YXNCYXNlKCkud2lkdGgoKSwgY2FudmFzQmFzZSgpLmhlaWdodCgpKSk7CiAgICAgcmV0dXJu
IHN0YXRlKCkudHJhbnNmb3JtLm1hcFF1YWQocXVhZCkuY29udGFpbnNRdWFkKGNhbnZhc1F1YWQp
OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPiBJbnRSZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2U6OmNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVmZmVyUmVjdChjb25zdCBUJiBhcmVhLCBJbnRT
aXplKiBjcm9wcGVkT2Zmc2V0KQogewotICAgIGF1dG8mIGNhbnZhcyA9IGRvd25jYXN0PEhUTUxD
YW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwotCi0gICAgSW50UmVjdCBjYW52YXNSZWN0KDAs
IDAsIGNhbnZhcy53aWR0aCgpLCBjYW52YXMuaGVpZ2h0KCkpOwotICAgIGNhbnZhc1JlY3QgPSBj
YW52YXMuYmFzZVRyYW5zZm9ybSgpLm1hcFJlY3QoY2FudmFzUmVjdCk7CisgICAgSW50UmVjdCBj
YW52YXNSZWN0KDAsIDAsIGNhbnZhc0Jhc2UoKS53aWR0aCgpLCBjYW52YXNCYXNlKCkuaGVpZ2h0
KCkpOworICAgIGNhbnZhc1JlY3QgPSBjYW52YXNCYXNlKCkuYmFzZVRyYW5zZm9ybSgpLm1hcFJl
Y3QoY2FudmFzUmVjdCk7CiAgICAgUGF0aCBwYXRoID0gdHJhbnNmb3JtQXJlYVRvRGV2aWNlKGFy
ZWEpOwogICAgIEludFJlY3QgYnVmZmVyUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QocGF0aC5mYXN0
Qm91bmRpbmdSZWN0KCkpOwogICAgIEludFBvaW50IG9yaWdpbmFsTG9jYXRpb24gPSBidWZmZXJS
ZWN0LmxvY2F0aW9uKCk7CkBAIC0xNzc5LDkgKzE3NzEsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZUNvbXBvc2l0aW5n
QnVmZgogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNvbXBvc2l0ZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBJbnRSZWN0JiBidWZmZXJSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBvcCkKIHsKLSAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFz
RWxlbWVudD4oY2FudmFzQmFzZSgpKTsKLSAgICBJbnRSZWN0IGNhbnZhc1JlY3QoMCwgMCwgY2Fu
dmFzLndpZHRoKCksIGNhbnZhcy5oZWlnaHQoKSk7Ci0gICAgY2FudmFzUmVjdCA9IGNhbnZhcy5i
YXNlVHJhbnNmb3JtKCkubWFwUmVjdChjYW52YXNSZWN0KTsKKyAgICBJbnRSZWN0IGNhbnZhc1Jl
Y3QoMCwgMCwgY2FudmFzQmFzZSgpLndpZHRoKCksIGNhbnZhc0Jhc2UoKS5oZWlnaHQoKSk7Cisg
ICAgY2FudmFzUmVjdCA9IGNhbnZhc0Jhc2UoKS5iYXNlVHJhbnNmb3JtKCkubWFwUmVjdChjYW52
YXNSZWN0KTsKIAogICAgIGF1dG8qIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykK
QEAgLTE5NDYsNyArMTkzNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4g
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybihICiAgICAgcmV0dXJu
IFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZSgqY2FjaGVkSW1h
Z2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VFbGVtZW50LnJlbmRlcmVyKCkpLCByZXBlYXRYLCBy
ZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1Bh
dHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKEhUTUxD
YW52YXNFbGVtZW50JiBjYW52YXMsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQorRXhjZXB0
aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpjcmVhdGVQYXR0ZXJuKENhbnZhc0Jhc2UmIGNhbnZhcywgYm9vbCByZXBlYXRYLCBib29sIHJl
cGVhdFkpCiB7CiAgICAgaWYgKCFjYW52YXMud2lkdGgoKSB8fCAhY2FudmFzLmhlaWdodCgpIHx8
ICFjYW52YXMuYnVmZmVyKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9OwpAQCAtMTk4OCw4ICsxOTc5LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZh
c1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKEkK
IAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkaWREcmF3RW50aXJlQ2FudmFz
KCkKIHsKLSAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2Fu
dmFzQmFzZSgpKTsKLSAgICBkaWREcmF3KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGNh
bnZhcy5zaXplKCkpLCBDYW52YXNEaWREcmF3QXBwbHlDbGlwKTsKKyAgICBkaWREcmF3KEZsb2F0
UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGNhbnZhc0Jhc2UoKS5zaXplKCkpLCBDYW52YXNEaWRE
cmF3QXBwbHlDbGlwKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpk
aWREcmF3KGNvbnN0IEZsb2F0UmVjdCYgciwgdW5zaWduZWQgb3B0aW9ucykKQEAgLTIwMzQsOCAr
MjAyNCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZGlkRHJhdyhjb25z
dCBGbG9hdFJlY3QmIHIsIHVuc2lnbmVkIG9wdGlvbnMpCiAgICAgICAgIC8vIHdlJ2QgaGF2ZSB0
byBrZWVwIHRoZSBjbGlwIHBhdGggYXJvdW5kLgogICAgIH0KIAotICAgIGF1dG8mIGNhbnZhcyA9
IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwotICAgIGNhbnZhcy5k
aWREcmF3KGRpcnR5UmVjdCk7CisgICAgY2FudmFzQmFzZSgpLmRpZERyYXcoZGlydHlSZWN0KTsK
IH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzZXRUcmFja3NEaXNwbGF5
TGlzdFJlcGxheShib29sIHRyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KQpAQCAtMjA3NSwxMCArMjA2
NCw4IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9DYW52YXMoKQogICAgICAgICBpZiAoIW1fcmVjb3JkaW5nQ29udGV4dCkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2Fu
dmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKLQotICAgICAgICBGbG9hdFJlY3QgY2xpcChGbG9h
dFBvaW50Ojp6ZXJvKCksIGNhbnZhcy5zaXplKCkpOwotICAgICAgICBEaXNwbGF5TGlzdDo6UmVw
bGF5ZXIgcmVwbGF5ZXIoKmNhbnZhcy5kcmF3aW5nQ29udGV4dCgpLCBtX3JlY29yZGluZ0NvbnRl
eHQtPmRpc3BsYXlMaXN0KTsKKyAgICAgICAgRmxvYXRSZWN0IGNsaXAoRmxvYXRQb2ludDo6emVy
bygpLCBjYW52YXNCYXNlKCkuc2l6ZSgpKTsKKyAgICAgICAgRGlzcGxheUxpc3Q6OlJlcGxheWVy
IHJlcGxheWVyKCpjYW52YXNCYXNlKCkuZHJhd2luZ0NvbnRleHQoKSwgbV9yZWNvcmRpbmdDb250
ZXh0LT5kaXNwbGF5TGlzdCk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKG1fdHJhY2tzRGlzcGxh
eUxpc3RSZXBsYXkpKSB7CiAgICAgICAgICAgICBhdXRvIHJlcGxheUxpc3QgPSByZXBsYXllci5y
ZXBsYXkoY2xpcCwgbV90cmFja3NEaXNwbGF5TGlzdFJlcGxheSk7CkBAIC0yMDkyLDE0ICsyMDc5
LDEzIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9DYW52YXMoKQogCiBHcmFwaGljc0NvbnRleHQqIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmRyYXdpbmdDb250ZXh0KCkgY29uc3QKIHsKLSAgICBhdXRvJiBjYW52YXMgPSBk
b3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKICAgICBpZiAoVU5MSUtF
TFkobV91c2VzRGlzcGxheUxpc3REcmF3aW5nKSkgewogICAgICAgICBpZiAoIW1fcmVjb3JkaW5n
Q29udGV4dCkKLSAgICAgICAgICAgIG1fcmVjb3JkaW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlx
dWU8RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dD4oKmNhbnZhcy5kcmF3aW5nQ29udGV4dCgpLCBG
bG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBjYW52YXMuc2l6ZSgpKSk7CisgICAgICAgICAg
ICBtX3JlY29yZGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0RHJhd2lu
Z0NvbnRleHQ+KCpjYW52YXNCYXNlKCkuZHJhd2luZ0NvbnRleHQoKSwgRmxvYXRSZWN0KEZsb2F0
UG9pbnQ6Onplcm8oKSwgY2FudmFzQmFzZSgpLnNpemUoKSkpOwogICAgICAgICByZXR1cm4gJm1f
cmVjb3JkaW5nQ29udGV4dC0+Y29udGV4dDsKICAgICB9CiAKLSAgICByZXR1cm4gY2FudmFzLmRy
YXdpbmdDb250ZXh0KCk7CisgICAgcmV0dXJuIGNhbnZhc0Jhc2UoKS5kcmF3aW5nQ29udGV4dCgp
OwogfQogCiBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlRW1wdHlJbWFnZURhdGEoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTIxNjcsOSArMjE1Myw4IEBAIEV4Y2VwdGlvbk9yPFJlZlB0
cjxJbWFnZURhdGE+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpnZXRJbWFnZURhdGEo
SW1hZ2VCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSW50UmVjdCBpbWFnZURhdGFS
ZWN0ID0gZW5jbG9zaW5nSW50UmVjdChsb2dpY2FsUmVjdCk7Ci0gICAgYXV0byYgY2FudmFzID0g
ZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7CiAKLSAgICBJbWFnZUJ1
ZmZlciogYnVmZmVyID0gY2FudmFzLmJ1ZmZlcigpOworICAgIEltYWdlQnVmZmVyKiBidWZmZXIg
PSBjYW52YXNCYXNlKCkuYnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVy
biBjcmVhdGVFbXB0eUltYWdlRGF0YShpbWFnZURhdGFSZWN0LnNpemUoKSk7CiAKQEAgLTIyMDAs
OSArMjE4NSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cHV0SW1hZ2VE
YXRhKEltYWdlRGF0YSYgZGF0YSwgZmxvYXQgZHgsIGZsb2F0CiAKIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6cHV0SW1hZ2VEYXRhKEltYWdlRGF0YSYgZGF0YSwgSW1hZ2VCdWZm
ZXI6OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSwgZmxvYXQgZHgsIGZsb2F0IGR5
LCBmbG9hdCBkaXJ0eVgsIGZsb2F0IGRpcnR5WSwgZmxvYXQgZGlydHlXaWR0aCwgZmxvYXQgZGly
dHlIZWlnaHQpCiB7Ci0gICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1l
bnQ+KGNhbnZhc0Jhc2UoKSk7Ci0KLSAgICBJbWFnZUJ1ZmZlciogYnVmZmVyID0gY2FudmFzLmJ1
ZmZlcigpOworICAgIEltYWdlQnVmZmVyKiBidWZmZXIgPSBjYW52YXNCYXNlKCkuYnVmZmVyKCk7
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjI1NSw5ICsyMjM4LDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjppbmZsYXRlU3Ryb2tlUmVjdChG
bG9hdFJlY3QmIHJlY3QpIGNvbnN0CiAKIFBsYXRmb3JtTGF5ZXIqIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotICAgIGF1dG8mIGNhbnZhcyA9
IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwotCi0gICAgcmV0dXJu
IGNhbnZhcy5idWZmZXIoKSA/IGNhbnZhcy5idWZmZXIoKS0+cGxhdGZvcm1MYXllcigpIDogbnVs
bHB0cjsKKyAgICByZXR1cm4gY2FudmFzQmFzZSgpLmJ1ZmZlcigpID8gY2FudmFzQmFzZSgpLmJ1
ZmZlcigpLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuaAppbmRleCA2NTU0OGFkMWY0OTZiMGFjMDM2MDYxMzczNWU5YjM2ZTE1Mzc0OTYxLi40
NzI0MmE3ODU3MDQyZjk0ZjYwNDlmNWQzMzkyZjc0OWI5Y2M3ZjgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5oCkBAIC0zMTYsNyArMzE2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0RmlsbFN0eWxl
KENhbnZhc1N0eWxlKTsKIAogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4g
Y3JlYXRlUGF0dGVybihIVE1MSW1hZ2VFbGVtZW50JiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVh
dFkpOwotICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4gY3JlYXRlUGF0dGVy
bihIVE1MQ2FudmFzRWxlbWVudCYsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKKyAgICBF
eGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IGNyZWF0ZVBhdHRlcm4oQ2FudmFzQmFz
ZSYsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKICNpZiBFTkFCTEUoVklERU8pCiAgICAg
RXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBjcmVhdGVQYXR0ZXJuKEhUTUxWaWRl
b0VsZW1lbnQmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CiAjZW5kaWYKQEAgLTMyNCw3
ICszMjQsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3SW1hZ2Uo
SFRNTEltYWdlRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0KTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3SW1hZ2UoSFRNTEltYWdl
RWxlbWVudCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBDb21wb3NpdGVPcGVyYXRvciYsIGNvbnN0IEJsZW5kTW9kZSYpOwotICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IGRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCYsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KTsKKyAgICBFeGNlcHRpb25P
cjx2b2lkPiBkcmF3SW1hZ2UoQ2FudmFzQmFzZSYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KTsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgRXhjZXB0
aW9uT3I8dm9pZD4gZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQmLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iYWUxZmNhMjEwNDNmMjAzYWI2MTkzZDA5MWRiYWI0ZDZiMGU4ZmQ4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGFpbnRS
ZW5kZXJpbmdDb250ZXh0MkQuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6dW5pcXVlX3B0cjxQYWludFJlbmRlcmluZ0NvbnRl
eHQyRD4gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZShDYW52YXNCYXNlJiBjYW52YXMp
Cit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxQYWludFJlbmRlcmluZ0NvbnRleHQyRD4o
bmV3IFBhaW50UmVuZGVyaW5nQ29udGV4dDJEKGNhbnZhcykpOworfQorCitQYWludFJlbmRlcmlu
Z0NvbnRleHQyRDo6UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQoQ2FudmFzQmFzZSYgY2FudmFzKQor
ICAgIDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZShjYW52YXMsIGZhbHNlLCBmYWxzZSkK
K3sKK30KKworUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ6On5QYWludFJlbmRlcmluZ0NvbnRleHQy
RCgpID0gZGVmYXVsdDsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRleHQyRC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZDhhNDA0OTUxMmRhMjYyNjE2MzNhZmZmOWIyYTRhYTg3YTEzZTE1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdD
b250ZXh0MkQuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2lu
Y2x1ZGUgIkN1c3RvbVBhaW50Q2FudmFzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgZmluYWwgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQYWlu
dFJlbmRlcmluZ0NvbnRleHQyRD4gY3JlYXRlKENhbnZhc0Jhc2UmKTsKKworICAgIHZpcnR1YWwg
flBhaW50UmVuZGVyaW5nQ29udGV4dDJEKCk7CisKKyAgICBib29sIGlzUGFpbnQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgQ3VzdG9tUGFpbnRDYW52YXMmIGNhbnZhcygp
IGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEN1c3RvbVBhaW50Q2FudmFzPihjYW52YXNCYXNlKCkp
OyB9CisKK3ByaXZhdGU6CisgICAgUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQoQ2FudmFzQmFzZSYp
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19D
QU5WQVNSRU5ERVJJTkdDT05URVhUKFdlYkNvcmU6OlBhaW50UmVuZGVyaW5nQ29udGV4dDJELCBp
c1BhaW50KCkpCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzQzODViYjljMmYxZmVm
MjQyYzY5MGNkNWMyNDc0ODc5NDY5ZDgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsCkBAIC0wLDAgKzEsNDUg
QEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworWworQ3VzdG9tSXNSZWFjaGFibGUsCitFbmFibGVk
QXRSdW50aW1lPUNTU1BhaW50aW5nQVBJLAorQ29uZGl0aW9uYWw9Q1NTX1BBSU5USU5HX0FQSSwK
K0pTR2VuZXJhdGVUb0pTT2JqZWN0LAorSlNDdXN0b21NYXJrRnVuY3Rpb24sCitdIGludGVyZmFj
ZSBQYWludFJlbmRlcmluZ0NvbnRleHQyRCB7Cit9OworCitQYWludFJlbmRlcmluZ0NvbnRleHQy
RCBpbXBsZW1lbnRzIENhbnZhc1N0YXRlOworUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgaW1wbGVt
ZW50cyBDYW52YXNUcmFuc2Zvcm07CitQYWludFJlbmRlcmluZ0NvbnRleHQyRCBpbXBsZW1lbnRz
IENhbnZhc0NvbXBvc2l0aW5nOworUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgaW1wbGVtZW50cyBD
YW52YXNJbWFnZVNtb290aGluZzsKK1BhaW50UmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMg
Q2FudmFzRmlsbFN0cm9rZVN0eWxlczsKK1BhaW50UmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVu
dHMgQ2FudmFzU2hhZG93U3R5bGVzOworUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgaW1wbGVtZW50
cyBDYW52YXNSZWN0OworUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgaW1wbGVtZW50cyBDYW52YXNE
cmF3UGF0aDsKK1BhaW50UmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMgQ2FudmFzRHJhd0lt
YWdlOworUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgaW1wbGVtZW50cyBDYW52YXNQYXRoRHJhd2lu
Z1N0eWxlczsKK1BhaW50UmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMgQ2FudmFzUGF0aDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJ
bWFnZS5jcHAKaW5kZXggOGIzNDkzNjI3OWM0YzYxOWJmZWVmNTNkMDg0NmQ4N2M5MjFkMDFjZS4u
ZDJlNDJjMGM5ZTYxOTlmNTI3NDI5MTY3MGYxN2EwNmU5ZGU4MjBmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAg
LTI4LDEyICsyOCwxMiBAQAogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCiAKKyNpbmNs
dWRlICJDdXN0b21QYWludENhbnZhcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkltYWdlQml0bWFwLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNs
dWRlICJKU0NTU1BhaW50Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIK
LSNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJQYWludFJlbmRl
cmluZ0NvbnRleHQyRC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUxLDI5ICs1MSwy
NCBAQCBJbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFpbnRJbWFnZTo6ZG9DdXN0b21QYWludChHcmFw
aGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwogICAgIGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgPSBjYWxsYmFjay5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRO
b3RoaW5nOwotICAgIGF1dG8qIGV4ZWNTdGF0ZSA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmV4
ZWNTdGF0ZSgpOwotICAgIGlmICghZXhlY1N0YXRlKQotICAgICAgICByZXR1cm4gSW1hZ2VEcmF3
UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgYXV0byBjYW52YXMgPSBPZmZzY3JlZW5DYW52YXM6
OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZGVzdFNpemUud2lkdGgoKSwgZGVzdFNp
emUuaGVpZ2h0KCkpOwotICAgIEV4Y2VwdGlvbk9yPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+
IGNvbnRleHRPckV4Y2VwdGlvbiA9IGNhbnZhcy0+Z2V0Q29udGV4dCgqZXhlY1N0YXRlLCBPZmZz
Y3JlZW5DYW52YXM6OlJlbmRlcmluZ0NvbnRleHRUeXBlOjpXZWJnbCwgeyB9KTsKKyAgICBhdXRv
IGNhbnZhcyA9IEN1c3RvbVBhaW50Q2FudmFzOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIGRlc3RTaXplLndpZHRoKCksIGRlc3RTaXplLmhlaWdodCgpKTsKKyAgICBFeGNlcHRpb25P
cjxSZWZQdHI8UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ+PiBjb250ZXh0T3JFeGNlcHRpb24gPSBj
YW52YXMtPmdldENvbnRleHQoKTsKIAogICAgIGlmIChjb250ZXh0T3JFeGNlcHRpb24uaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAg
ICAgYXV0byBjb250ZXh0ID0gY29udGV4dE9yRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
OwogCi0gICAgY29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAwLCAxLjApOwotICAgIGNvbnRleHQt
PmNsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCiAgICAgYXV0byByZXN1bHQgPSBtX3BhaW50
Q2FsbGJhY2stPmhhbmRsZUV2ZW50KCpjb250ZXh0KTsKICAgICBpZiAocmVzdWx0LnR5cGUoKSAh
PSBDYWxsYmFja1Jlc3VsdFR5cGU6OlN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdS
ZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBhdXRvIGJpdG1hcCA9IGNhbnZhcy0+dHJhbnNmZXJU
b0ltYWdlQml0bWFwKCk7Ci0gICAgaWYgKCFiaXRtYXApCisgICAgVU5VU0VEX1BBUkFNKGRlc3RD
b250ZXh0KTsKKyAgICBhdXRvIGltYWdlID0gY2FudmFzLT5jb3BpZWRJbWFnZSgpOworICAgIGlm
ICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAK
LSAgICBkZXN0Q29udGV4dC5kcmF3SW1hZ2UoKmJpdG1hcC0+YnVmZmVyKCktPmNvcHlJbWFnZSgp
LCBGbG9hdFBvaW50KCkpOworICAgIGRlc3RDb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0
UG9pbnQoKSk7CiAKICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3OwogfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDhiN2IzNDYzMWFmMmZmNzQ5MDc5MWNlZWE3OTM1Y2ZhMzQxYjcyMzguLmVjMjM0NmE3M2E5
MTg4YzgxYTEzOTQ4YmUwMzc1YmY0M2Y3MzUxMTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
OC0xMC0xOSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgQ1NTIFBhaW50IEFQSSBzaG91bGQgZ2l2ZSBhIDJkIHJlbmRlcmluZyBjb250ZXh0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3NjIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3Nz
LWN1c3RvbS1wYWludC9iYXNpYy5odG1sOgorCiAyMDE4LTEwLTE5ICBDb21taXQgUXVldWUgIDxj
b21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMjM3MjU0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50
L2Jhc2ljLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRt
bAppbmRleCBjZjNhZmU4MzQ1MTZmN2YwMWIwNzI2MTZkMmY5MjZhOWZhYWJlZjAyLi4zZjRkYzNh
MmQwMmVmMjFhMmU5NzJkNGM4YjRmMmZhZThjMzg5NDU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbApAQCAtOCw4ICs4LDggQEAKIDxzdHlsZT4KICAg
I3BhaW50IHsKICAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7Ci0gICAgd2lk
dGg6IDUwcHg7Ci0gICAgaGVpZ2h0OiA1MHB4OworICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWln
aHQ6IDE1MHB4OwogICB9CiA8L3N0eWxlPgogCkBAIC03MCw4ICs3MCwxMyBAQCBsZXQgcGFpbnRf
Y2FsbGVkX3Rlc3QgPSBhc3luY190ZXN0KCd0ZXN0IHRoYXQgdGVzdCBkaXYgcGFpbnQgY2FsbGJh
Y2sgZ2V0cyBjYWxsZQogcGFpbnRfY2FsbGVkX3Rlc3Quc3RlcChmdW5jdGlvbigpIHsKICAgQ1NT
LnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgY2xhc3Mg
ewogICAgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcykgewotICAgICAgY3R4LmNsZWFyQ29s
b3IoMCwxLjAsMCwxLjApOwotICAgICAgY3R4LmNsZWFyKGN0eC5DT0xPUl9CVUZGRVJfQklUKTsK
KyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKXsKKyAgICAgICAgZm9yICh2YXIgaiA9
IDA7IGogPCA2OyBqKyspeworICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKCcgKyBNYXRo
LmZsb29yKDI1NSAtIDQyLjUgKiBpKSArICcsJyArCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBqKSArICcsMCknOworICAgICAgICAgIGN0eC5maWxs
UmVjdChqICogMjUsIGkgKiAyNSwgMjUsIDI1KTsKKyAgICAgICAgfQorICAgICAgfQogICAgICAg
cGFpbnRfY2FsbGVkX3Rlc3QuZG9uZSgpOwogICAgIH0KICAgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352828</attachid>
            <date>2018-10-19 15:20:40 -0700</date>
            <delta_ts>2018-10-19 19:56:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190762-20181019152039.patch</filename>
            <type>text/plain</type>
            <size>56733</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ4M2QyZmU0N2E4ODVm
NjA0ODZlYjJlMWJjNGYzNTY5YTBjYzk3Yy4uMmY4MTQxOWFkYTNkYzhlNDdjYmE2NDFiMDZmYmU3
NTQwNjZkMzEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDE4LTEwLTE5ICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBDU1MgUGFp
bnQgQVBJIHNob3VsZCBnaXZlIGEgMmQgcmVuZGVyaW5nIGNvbnRleHQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyB0eXBlIG9mIGNhbnZh
cyBhbmQgMmQgcmVuZGVyaW5nIGNvbnRleHQgdG8gc3VwcG9ydCB0aGUgQ1NTIFBhaW50aW5nIEFQ
SS4KKyAgICAgICAgTWFrZSBtYW55IG9mIHRoZSBtZXRob2RzIGZyb20gSFRNTENhbnZhc0VsZW1l
bnQgdmlydHVhbCBmdW5jdGlvbnMgb24gQ2FudmFzQmFzZSwgYW5kCisgICAgICAgIHJlbW92ZSBt
YW55IG9mIHRoZSBkb3duY2FzdHMgaW4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZSBhcyBh
IHJlc3VsdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGFpbnRS
ZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJv
b3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFJlbmRlcmluZ0NvbnRleHQyRE93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1BhaW50UmVu
ZGVyaW5nQ29udGV4dDJEOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGNzcy9DU1NQYWludENh
bGxiYWNrLmg6CisgICAgICAgICogY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsOgorICAgICAgICAq
IGh0bWwvQ2FudmFzQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjp+Q2Fu
dmFzQmFzZSk6CisgICAgICAgICogaHRtbC9DYW52YXNCYXNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNCYXNlOjppc0N1c3RvbVBhaW50Q2FudmFzIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L0N1c3RvbVBhaW50Q2FudmFzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDdXN0b21Q
YWludENhbnZhczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFz
OjpDdXN0b21QYWludENhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZh
czo6fkN1c3RvbVBhaW50Q2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2Fu
dmFzOjp3aWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6
c2V0V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OmhlaWdodCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6c2V0SGVpZ2h0KToK
KyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpzaXplIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbVBhaW50Q2FudmFzOjpnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbVBhaW50Q2FudmFzOjpidWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9t
UGFpbnRDYW52YXM6OmNvcGllZEltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bVBhaW50Q2FudmFzOjpkcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21QYWludENhbnZhczo6ZXhpc3RpbmdEcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OnNldEltYWdlQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjptYWtlUmVuZGVyaW5nUmVz
dWx0c0F2YWlsYWJsZSk6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludENhbnZhcy5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oLgorICAgICAgICAq
IGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZh
cy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWludE9yaWdp
bik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aXNQYWludCBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp1bndpbmRTdGF0
ZVN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6
OmlzQWNjZWxlcmF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0RmlsbFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnJlc2V0VHJhbnNmb3JtKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjbGVhckNhbnZhcyk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp0cmFuc2Zv
cm1BcmVhVG9EZXZpY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6cmVjdENvbnRhaW5zQ2FudmFzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVm
ZmVyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
Ojpjb21wb3NpdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpkaWREcmF3RW50aXJlQ2FudmFzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRpZERyYXcpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6ZHJhd2luZ0NvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6Z2V0SW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnB1dEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oLgorICAgICAgICAo
V2ViQ29yZTo6UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYWludFJlbmRlcmluZ0NvbnRleHQyRDo6UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmguCisgICAgICAgICogaHRt
bC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwuCisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFpbnQpOgorCiAyMDE4LTEwLTE5ICBaYWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBSZW5kZXJSZXBsYWNl
ZCByZW5kZXJlciBzaG91bGQgY3JlYXRlIElubGluZUJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCA4YjAyYTUyZDUwZDAxZDc3ZWMxZTM2MTBjYzc4NzI2MTI2MzRlOTM4Li5hNTk2NDA1MjA5ZTYz
YjNhNGQyMjZiNmZiY2NlN2ZlNzA0NDBjYzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODAz
LDYgKzgwMyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgaHRtbC9jYW52
YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuaWRsCiAgICAgaHRtbC9jYW52
YXMvSW1hZ2VTbW9vdGhpbmdRdWFsaXR5LmlkbAogICAgIGh0bWwvY2FudmFzL09mZnNjcmVlbkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKKyAgICBodG1sL2NhbnZhcy9QYWludFJlbmRlcmlu
Z0NvbnRleHQyRC5pZGwKICAgICBodG1sL2NhbnZhcy9QYXRoMkQuaWRsCiAgICAgaHRtbC9jYW52
YXMvV2ViTWV0YWxCdWZmZXIuaWRsCiAgICAgaHRtbC9jYW52YXMvV2ViTWV0YWxDb21tYW5kQnVm
ZmVyLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMTVhNWQ2YmQ5NWU3NmRm
MDEyZDRmNzM4MjZlMDUwZmZmOGVjOTYzNi4uZWQ5NjUzZjhhMTY1MWQyNDNiMTc5MDBiMjc0NzA2
NDk4ZmYxOWM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC03MjYsNiArNzI2
LDcgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvT0VT
VGV4dHVyZUhhbGZGbG9hdExpbmVhci5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMv
T0VTVmVydGV4QXJyYXlPYmplY3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL09m
ZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC9j
YW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL1BhdGgyRC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xBY3Rp
dmVJbmZvLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDA0NjNkMTU3OWU0YzYyZDkzMDEyYzA2MTVl
OTMyYmE3NGYxNjNkM2EuLmYzYzI3OTJmOTVkYWIwZmU0YTkxZGExMTgxY2YzYTMzNmUxMDk4Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC00NDMsNiArNDQzLDcgQEAgYmluZGluZ3MvanMvSlNOb2RlQ3Vz
dG9tLmNwcAogYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwCiBiaW5kaW5ncy9q
cy9KU05vZGVMaXN0Q3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNPZmZzY3JlZW5DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCitiaW5kaW5ncy9qcy9KU1BhaW50UmVuZGVyaW5nQ29u
dGV4dDJEQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnRD
dXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU1BheW1lbnRSZXNwb25zZUN1c3RvbS5jcHAKIGJpbmRp
bmdzL2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAKQEAgLTk2OCw2ICs5NjksNyBAQCBo
dG1sL0J1dHRvbklucHV0VHlwZS5jcHAKIGh0bWwvQ2FudmFzQmFzZS5jcHAKIGh0bWwvQ2hlY2ti
b3hJbnB1dFR5cGUuY3BwCiBodG1sL0NvbG9ySW5wdXRUeXBlLmNwcAoraHRtbC9DdXN0b21QYWlu
dENhbnZhcy5jcHAKIGh0bWwvRE9NRm9ybURhdGEuY3BwCiBodG1sL0RPTVRva2VuTGlzdC5jcHAK
IGh0bWwvRE9NVVJMLmNwcApAQCAtMTEyNiw2ICsxMTI4LDcgQEAgaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKIGh0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAog
aHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAogaHRtbC9jYW52YXMv
T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAoraHRtbC9jYW52YXMvUGFpbnRS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwCiBodG1sL2NhbnZhcy9QYXRoMkQuY3BwCiBodG1sL2NhbnZh
cy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCiBodG1sL2NhbnZhcy9XZWJNZXRhbEJ1
ZmZlci5jcHAKQEAgLTI4NDMsNiArMjg0Niw3IEBAIEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2
ZW50LmNwcAogSlNPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAogSlNPZmZzY3JlZW5DYW52YXMuY3Bw
CiBKU09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKK0pTUGFpbnRSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCiBKU09zY2lsbGF0b3JOb2RlLmNwcAogSlNPdmVyY29uc3RyYWluZWRF
cnJvci5jcHAKIEpTT3ZlcmNvbnN0cmFpbmVkRXJyb3JFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYTE1ZmNmMWRl
ZWMwNGZlYTY0MzZjMzBhNTgxYzZiMmQyNTNhYWVlLi5hMWI5YmMzOWJhYTViOWUwMWJhOTg0Yzli
NjRjODE4YTA5ODAzMGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzQ1LDYgKzEzNDUsOCBAQAogCQk0QTlDQzgyMTE2QkY5
QkI0MDBFQzY0NUEgLyogSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE5Q0M4MUYxNkJGOUJCNDAwRUM2NDVBIC8q
IEluc3BlY3RvckNTU09NV3JhcHBlcnMuaCAqLzsgfTsKIAkJNEFEMDEwMDkxMjdFNjQyQTAwMTUw
MzVGIC8qIEhUTUxPdXRwdXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTAwNjEyN0U2NDJBMDAxNTAzNUYgLyogSFRNTE91dHB1dEVs
ZW1lbnQuaCAqLzsgfTsKIAkJNEFEMDE3M0QxMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1
dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRBRDAxNzNCMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggKi87IH07
CisJCTRCMUUxM0U3MjE3OTBENjYwMDQyQ0Y5OCAvKiBDdXN0b21QYWludENhbnZhcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIxRTEzRTYyMTc5MEQ2
NjAwNDJDRjk4IC8qIEN1c3RvbVBhaW50Q2FudmFzLmggKi87IH07CisJCTRCMUUxM0VCMjE3OTM3
QjMwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIxRTEzRUEyMTc5MzdCMzAwNDJDRjk4IC8q
IFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmggKi87IH07CiAJCTRCMjcwOEM3MEFGMTlFRTQwMDY1
MTI3RiAvKiBQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QjI3MDhDNTBBRjE5RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCMzA0M0NEMEFF
MDM3M0IwMEE4MjY0NyAvKiBFZGl0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRCMzA0M0NCMEFFMDM3M0IwMEE4MjY0NyAvKiBFZGl0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QjM0ODA5NDBF
RUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdl
U291cmNlQ0cuaCAqLzsgfTsKQEAgLTc4ODMsNiArNzg4NSwxMiBAQAogCQk0QUQwMTczQTEyN0U4
Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxPdXRwdXRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNEFEMDE3M0IxMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1
dEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MT3V0cHV0
RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjE3MDY2NDIxNjJCNDJG
MDBFNTc4QkIgLyogQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTRCMUUxM0U2MjE3OTBENjYwMDQyQ0Y5OCAvKiBDdXN0b21QYWludENhbnZh
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21QYWludENhbnZhcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0QjFFMTNFOTIxNzkwRDdFMDA0MkNGOTggLyogQ3VzdG9tUGFpbnRDYW52
YXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3VzdG9tUGFpbnRDYW52YXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0QjFFMTNFQTIxNzkzN0IzMDA0MkNGOTggLyogUGFpbnRS
ZW5kZXJpbmdDb250ZXh0MkQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFpbnRSZW5kZXJpbmdDb250ZXh0
MkQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEIxRTEzRUMyMTc5MzgzODAwNDJD
Rjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
aW50UmVuZGVyaW5nQ29udGV4dDJELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NEIxRTEzRUQyMTc5M0RDMTAwNDJDRjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTRCMUUxM0VFMjE3OTQxMzIwMDQyQ0Y5OCAvKiBKU1BhaW50UmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGFpbnRSZW5kZXJpbmdDb250ZXh0
MkRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjI3MDhDNTBBRjE5
RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCMjcwOTgx
MEFGMkU1RTAwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzdGVib2FyZE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEIzMDQzQ0EwQUUwMzczQjAwQTgyNjQ3IC8qIEVkaXRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWRpdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NjI4LDYgKzE3NjM2LDkgQEAKIAkJCQkzMTQwQzUxRDFGREYx
NTFBMDBEMkE4NzMgLyogT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCAqLywK
IAkJCQkzMTQwQzUxRTFGREYxNTFBMDBEMkE4NzMgLyogT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmggKi8sCiAJCQkJMzE0MEM1MUIxRkRGMTNEMjAwRDJBODczIC8qIE9mZnNjcmVl
bkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwgKi8sCisJCQkJNEIxRTEzRUMyMTc5MzgzODAw
NDJDRjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcCAqLywKKwkJCQk0QjFFMTNFQTIx
NzkzN0IzMDA0MkNGOTggLyogUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCAqLywKKwkJCQk0QjFF
MTNFRDIxNzkzREMxMDA0MkNGOTggLyogUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsICovLAog
CQkJCTdDMTkzQkE3MUY1RTBFQUYwMDg4RjNFNiAvKiBQYXRoMkQuY3BwICovLAogCQkJCTdDMTkz
QkFCMUY1RTBFQjEwMDg4RjNFNiAvKiBQYXRoMkQuaCAqLywKIAkJCQk3QzE5M0JCNDFGNUUwRUI3
MDA4OEYzRTYgLyogUGF0aDJELmlkbCAqLywKQEAgLTIwMjA1LDYgKzIwMjE2LDcgQEAKIAkJCQlC
Q0Q5QzI2MTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlTGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJ
QUQyMEIxOEMxOEU5RDIxNjAwNUE4MDgzIC8qIEpTTm9kZUxpc3RDdXN0b20uaCAqLywKIAkJCQkz
MTQwQzUyQjFGRTA2QjQ5MDBEMkE4NzMgLyogSlNPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwICovLAorCQkJCTRCMUUxM0VFMjE3OTQxMzIwMDQyQ0Y5OCAvKiBKU1Bh
aW50UmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKIAkJCQlDQjM4RkQ1NTFDRDIxRDVC
MDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZUVudHJ5Q3VzdG9tLmNwcCAqLywKIAkJCQk4MzNDRjcw
RjIwREIzRjVGMDAxNDFCQ0MgLyogSlNQZXJmb3JtYW5jZU9ic2VydmVyQ3VzdG9tLmNwcCAqLywK
IAkJCQlBNEE2OUI4QkI5MUI0OUQwQTgwNEMzMUQgLyogSlNQcm9taXNlUmVqZWN0aW9uRXZlbnRD
dXN0b20uY3BwICovLApAQCAtMjA3NzEsNiArMjA3ODMsOCBAQAogCQkJCTkzQzQ0MUZGMEY4MTNB
RTEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uVHlwZS5oICovLAogCQkJCUJDMjk5MzVDMTdBMURENTgw
MEJDRTg4MCAvKiBDb2xvcklucHV0VHlwZS5jcHAgKi8sCiAJCQkJRjU1QjNEODAxMjUxRjEyRDAw
M0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmggKi8sCisJCQkJNEIxRTEzRTkyMTc5MEQ3RTAwNDJD
Rjk4IC8qIEN1c3RvbVBhaW50Q2FudmFzLmNwcCAqLywKKwkJCQk0QjFFMTNFNjIxNzkwRDY2MDA0
MkNGOTggLyogQ3VzdG9tUGFpbnRDYW52YXMuaCAqLywKIAkJCQlFNTE3NjcwMjIwQjg4QzE0MDBE
NDExNjcgLyogRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaCAqLywKIAkJCQlGNTVCM0Q4
MTEyNTFGMTJEMDAzRUYyNjkgLyogRGF0ZUlucHV0VHlwZS5jcHAgKi8sCiAJCQkJRjU1QjNEODIx
MjUxRjEyRDAwM0VGMjY5IC8qIERhdGVJbnB1dFR5cGUuaCAqLywKQEAgLTI4MDg5LDYgKzI4MTAz
LDcgQEAKIAkJCQk5M0Q0MzdBMDFENTdCMTlBMDBBQjg1RUEgLyogQ3VzdG9tRWxlbWVudFJlYWN0
aW9uUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCRDRFOTFCMUM0NjJDRkMwMDUwNjVCQyAv
KiBDdXN0b21FbGVtZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTYyQ0QzMjVBMTE1
N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEIxRTEz
RTcyMTc5MEQ2NjAwNDJDRjk4IC8qIEN1c3RvbVBhaW50Q2FudmFzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0QjdBRTQ5MzIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThDQjQxM0UwRTg2MzNGRDAwMzJDNEYwIC8qIERhc2hBcnJheS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMEIwQTE5ODlDQTAwN0ZCOEM1IC8qIERhc2hib2FyZFJl
Z2lvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDExNCw2ICszMDEyOSw3IEBACiAJCQkJNTVFQzk1
OTkyMDZBQTdBMDAwN0REMEE5IC8qIFBhaW50RnJlcXVlbmN5VHJhY2tlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDg4NTA2N0YxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50SW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg4NTA2ODAxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50UGhhc2UuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTRCMUUxM0VCMjE3OTM3QjMwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmlu
Z0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRkIwQTE5ODlDQTAwN0ZCOEM1
IC8qIFBhaXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEEzMTJCMDI2RjcwMEMxQTM1OSAv
KiBQYW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDFBMTJCMDI2NzYwMEMxQTM1OSAv
KiBQYW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGFpbnRSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYWludFJlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmI3N2ZjOTc3NmI4ZDBkZTRlOGY3Nzk4OTI5MTc3MGRlMjRjMTA4YQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRSZW5kZXJp
bmdDb250ZXh0MkRDdXN0b20uY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSlNQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oIgorCisjaWYgRU5BQkxF
KENTU19QQUlOVElOR19BUEkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFj
ZSBKU0M7CisKK2lubGluZSB2b2lkKiByb290KEN1c3RvbVBhaW50Q2FudmFzKiBjYW52YXMpCit7
CisgICAgcmV0dXJuIGNhbnZhczsKK30KKworYm9vbCBKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJE
T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFz
b24pCit7CisgICAgaWYgKFVOTElLRUxZKHJlYXNvbikpCisgICAgICAgICpyZWFzb24gPSAiQ2Fu
dmFzIGlzIG9wYXF1ZSByb290IjsKKworICAgIEpTUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQqIGpz
UGFpbnRSZW5kZXJpbmdDb250ZXh0ID0ganNDYXN0PEpTUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQq
PihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6OnJv
b3QoJmpzUGFpbnRSZW5kZXJpbmdDb250ZXh0LT53cmFwcGVkKCkuY2FudmFzKCkpOworICAgIHJl
dHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KTsKK30KKwordm9pZCBKU1BhaW50
UmVuZGVyaW5nQ29udGV4dDJEOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpLmNh
bnZhcygpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggMDI0
OTMwZDE1YzRiNGQwMjMzMTMxNzhiMTQwNWQ3ODJhNDVmNmQ3MS4uMDA4NWFkN2VmZGJkM2NmOTEx
MTc5MjVkMGUxNzAzODYyMjQ0ZWM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtMTEzLDYgKzExMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBtYWNybyhOYXZpZ2F0b3JVc2VyTWVkaWEpIFwKICAgICBtYWNybyhPZmZz
Y3JlZW5DYW52YXMpIFwKICAgICBtYWNybyhPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQpIFwKKyAgICBtYWNybyhQYWludFJlbmRlcmluZ0NvbnRleHQyRCkgXAogICAgIG1hY3JvKFBh
eW1lbnRBZGRyZXNzKSBcCiAgICAgbWFjcm8oUGF5bWVudE1ldGhvZENoYW5nZUV2ZW50KSBcCiAg
ICAgbWFjcm8oUGF5bWVudFJlcXVlc3QpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYWludENhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFj
ay5oCmluZGV4IGYwZWMyYzQ0MTM1YWU0NGNjODkzNTA2ZDg1YTUwNzU5NjNiMjMxMzYuLmYyMWU2
NzhiYzkxZmQwYjJiYjYzZTExYmI1OTU2YzQxYTdmNzA5ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhaW50Q2FsbGJhY2suaApAQCAtMzIsMTMgKzMyLDEzIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OworY2xhc3MgUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ7CiAKIGNsYXNzIENTU1BhaW50Q2Fs
bGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NQYWludENhbGxiYWNrPiwgcHVibGljIEFjdGl2
ZURPTUNhbGxiYWNrIHsKIHB1YmxpYzoKICAgICB1c2luZyBBY3RpdmVET01DYWxsYmFjazo6QWN0
aXZlRE9NQ2FsbGJhY2s7CiAKLSAgICB2aXJ0dWFsIENhbGxiYWNrUmVzdWx0PHZvaWQ+IGhhbmRs
ZUV2ZW50KFdlYkdMUmVuZGVyaW5nQ29udGV4dCYpID0gMDsKKyAgICB2aXJ0dWFsIENhbGxiYWNr
UmVzdWx0PHZvaWQ+IGhhbmRsZUV2ZW50KFBhaW50UmVuZGVyaW5nQ29udGV4dDJEJikgPSAwOwog
CiAgICAgdmlydHVhbCB+Q1NTUGFpbnRDYWxsYmFjaygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhaW50Q2FsbGJhY2suaWRsCmluZGV4IDc2ZDliNmM5NWJhMWNmOGQyOTUyYTQ3OWQxYzUz
MDc0OTRjYzgwOWMuLjI5NDE0NzNhMDMwYmM4MWM1ZmI2ZGRkMjNhN2NkOWNmMzEwNTM1YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKQEAgLTI2LDQgKzI2LDQgQEAK
IFsKICAgICBFbmFibGVkQXRSdW50aW1lPUNTU1BhaW50aW5nQVBJLAogICAgIENvbmRpdGlvbmFs
PUNTU19QQUlOVElOR19BUEksCi1dIGNhbGxiYWNrIENTU1BhaW50Q2FsbGJhY2sgPSB2b2lkIChX
ZWJHTFJlbmRlcmluZ0NvbnRleHQgY29udGV4dCk7CitdIGNhbGxiYWNrIENTU1BhaW50Q2FsbGJh
Y2sgPSB2b2lkIChQYWludFJlbmRlcmluZ0NvbnRleHQyRCBjb250ZXh0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0NhbnZhc0Jhc2UuY3BwCmluZGV4IDg1OTM5YjI3NGY1OTBiMDBjYzgzYTM3OTdiNzk5Njk2ZGRk
NmE4YzIuLmY0ZjNjNWVhMzg0ODAxZDFlZDQ2MDJkOTZkYWEwMzI3NzBkNjcwYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9DYW52YXNCYXNlLmNwcApAQCAtNDEsNiArNDEsNyBAQCBDYW52YXNCYXNlOjpDYW52
YXNCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAK
IENhbnZhc0Jhc2U6On5DYW52YXNCYXNlKCkKIHsKKyAgICBBU1NFUlQoIW1fY29udGV4dCk7IC8v
IFNob3VsZCBoYXZlIGJlZW4gc2V0IHRvIG51bGwgYnkgYmFzZSBjbGFzcwogICAgIG5vdGlmeU9i
c2VydmVyc0NhbnZhc0Rlc3Ryb3llZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NhbnZhc0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5oCmlu
ZGV4IDVkZmUyOTM1MmUxNTM0ZjY2MjBjNTM2NmJlYjk4NDQxYTFmNDcyZjcuLmM5MWI1Yzk2MDA5
MDQ1Nzc4Y2ZlMzQyMzE4YzRhOWVmMjk5OGZmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ2FudmFzQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5o
CkBAIC0zMCw5ICszMCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFmZmlu
ZVRyYW5zZm9ybTsKIGNsYXNzIENhbnZhc0Jhc2U7CiBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250
ZXh0OwogY2xhc3MgRWxlbWVudDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2NsYXNzIEltYWdl
OworY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgRmxvYXRSZWN0Owog
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKQEAgLTU4LDYgKzYyLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBib29sIGlzSFRNTENhbnZhc0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc09mZnNjcmVlbkNhbnZhcygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQ3VzdG9tUGFpbnRDYW52YXMoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGhlaWdodCgpIGNvbnN0ID0gMDsKQEAgLTgxLDYg
Kzg2LDE4IEBAIHB1YmxpYzoKIAogICAgIEhhc2hTZXQ8RWxlbWVudCo+IGNzc0NhbnZhc0NsaWVu
dHMoKSBjb25zdDsKIAorICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0KiBkcmF3aW5nQ29udGV4
dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCogZXhpc3RpbmdEcmF3
aW5nQ29udGV4dCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBtYWtlUmVuZGVyaW5n
UmVzdWx0c0F2YWlsYWJsZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdyhjb25zdCBG
bG9hdFJlY3QmKSA9IDA7CisKKyAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNm
b3JtKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGhhc0NyZWF0ZWRJbWFnZUJ1ZmZl
cigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEltYWdlQnVmZmVyKiBidWZmZXIoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBJbWFnZSogY29waWVkSW1hZ2UoKSBjb25zdCA9IDA7CisKIHByb3Rl
Y3RlZDoKICAgICBDYW52YXNCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWI2ZjcwZDk0
YzczYzNmMjA0NDc3ZTQyZmQ2OWJmMDkxNTQ3ZjZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKQEAgLTAsMCArMSwxNTYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3VzdG9tUGFpbnRDYW52
YXMuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiSW1hZ2VC
aXRtYXAuaCIKKyNpbmNsdWRlICJQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1JlZjxDdXN0b21QYWludENhbnZhcz4gQ3VzdG9tUGFpbnRDYW52YXM6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCB3aWR0aCwg
dW5zaWduZWQgaGVpZ2h0KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEN1c3RvbVBhaW50
Q2FudmFzKGNvbnRleHQsIHdpZHRoLCBoZWlnaHQpKTsKK30KKworQ3VzdG9tUGFpbnRDYW52YXM6
OkN1c3RvbVBhaW50Q2FudmFzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVuc2ln
bmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCisgICAgOiBDYW52YXNCYXNlKCZjb250ZXh0KQor
ICAgICwgbV9zaXplKHdpZHRoLCBoZWlnaHQpCit7Cit9CisKK0N1c3RvbVBhaW50Q2FudmFzOjp+
Q3VzdG9tUGFpbnRDYW52YXMoKQoreworICAgIG1fY29udGV4dCA9IG51bGxwdHI7IC8vIEVuc3Vy
ZSB0aGlzIGdvZXMgYXdheSBiZWZvcmUgdGhlIEltYWdlQnVmZmVyLgorfQorCit1bnNpZ25lZCBD
dXN0b21QYWludENhbnZhczo6d2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3NpemUud2lk
dGgoKTsKK30KKwordm9pZCBDdXN0b21QYWludENhbnZhczo6c2V0V2lkdGgodW5zaWduZWQgbmV3
V2lkdGgpCit7CisgICAgcmV0dXJuIG1fc2l6ZS5zZXRXaWR0aChuZXdXaWR0aCk7Cit9CisKK3Vu
c2lnbmVkIEN1c3RvbVBhaW50Q2FudmFzOjpoZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBt
X3NpemUuaGVpZ2h0KCk7Cit9CisKK3ZvaWQgQ3VzdG9tUGFpbnRDYW52YXM6OnNldEhlaWdodCh1
bnNpZ25lZCBuZXdIZWlnaHQpCit7CisgICAgcmV0dXJuIG1fc2l6ZS5zZXRIZWlnaHQobmV3SGVp
Z2h0KTsKK30KKworY29uc3QgSW50U2l6ZSYgQ3VzdG9tUGFpbnRDYW52YXM6OnNpemUoKSBjb25z
dAoreworICAgIHJldHVybiBtX3NpemU7Cit9CisKK3ZvaWQgQ3VzdG9tUGFpbnRDYW52YXM6OnNl
dFNpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKK3sKKyAgICBtX3NpemUgPSBuZXdTaXplOwor
fQorCitFeGNlcHRpb25PcjxSZWZQdHI8UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ+PiBDdXN0b21Q
YWludENhbnZhczo6Z2V0Q29udGV4dCgpCit7CisgICAgaWYgKG1fY29udGV4dCkKKyAgICAgICAg
cmV0dXJuIHsgUmVmUHRyPFBhaW50UmVuZGVyaW5nQ29udGV4dDJEPiB7ICZkb3duY2FzdDxQYWlu
dFJlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkgfSB9OworCisgICAgbV9jb250ZXh0ID0g
UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZSgqdGhpcyk7CisgICAgaWYgKCFtX2NvbnRl
eHQpCisgICAgICAgIHJldHVybiB7IG51bGxwdHIgfTsKKworICAgIHJldHVybiB7IFJlZlB0cjxQ
YWludFJlbmRlcmluZ0NvbnRleHQyRD4geyAmZG93bmNhc3Q8UGFpbnRSZW5kZXJpbmdDb250ZXh0
MkQ+KCptX2NvbnRleHQpIH0gfTsKK30KKworSW1hZ2VCdWZmZXIqIEN1c3RvbVBhaW50Q2FudmFz
OjpidWZmZXIoKSBjb25zdAoreworICAgIGlmICghbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIpCisg
ICAgICAgIGNyZWF0ZUltYWdlQnVmZmVyKCk7CisgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0
KCk7Cit9CisKK0ltYWdlKiBDdXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UoKSBjb25zdAor
eworICAgIGlmIChidWZmZXIoKSkgeworICAgICAgICBpZiAobV9jb250ZXh0KQorICAgICAgICAg
ICAgbV9jb250ZXh0LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpOworICAgICAgICBt
X2NvcGllZEltYWdlID0gYnVmZmVyKCktPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlLCBQcmVz
ZXJ2ZVJlc29sdXRpb246Olllcyk7CisgICAgfQorICAgIHJldHVybiBtX2NvcGllZEltYWdlLmdl
dCgpOworfQorCitHcmFwaGljc0NvbnRleHQqIEN1c3RvbVBhaW50Q2FudmFzOjpkcmF3aW5nQ29u
dGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJ1ZmZlcigpID8gJm1faW1hZ2VCdWZmZXItPmNv
bnRleHQoKSA6IG51bGxwdHI7Cit9CisKK0dyYXBoaWNzQ29udGV4dCogQ3VzdG9tUGFpbnRDYW52
YXM6OmV4aXN0aW5nRHJhd2luZ0NvbnRleHQoKSBjb25zdAoreworICAgIGlmICghbV9oYXNDcmVh
dGVkSW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGRy
YXdpbmdDb250ZXh0KCk7Cit9CisKK3ZvaWQgQ3VzdG9tUGFpbnRDYW52YXM6OmNyZWF0ZUltYWdl
QnVmZmVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1faW1hZ2VCdWZmZXIpOworCisgICAgbV9o
YXNDcmVhdGVkSW1hZ2VCdWZmZXIgPSB0cnVlOworCisgICAgaWYgKCF3aWR0aCgpIHx8ICFoZWln
aHQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
ID0gVW5hY2NlbGVyYXRlZDsKKworICAgIHNldEltYWdlQnVmZmVyKEltYWdlQnVmZmVyOjpjcmVh
dGUoc2l6ZSgpLCByZW5kZXJpbmdNb2RlLCAxLCBDb2xvclNwYWNlU1JHQiwgbnVsbHB0cikpOwor
ICAgIGlmICghbV9pbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworICAgIG1faW1hZ2VCdWZm
ZXItPmNvbnRleHQoKS5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyh0cnVlKTsKKyAgICBtX2lt
YWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKDEpOworfQorCit2b2lkIEN1
c3RvbVBhaW50Q2FudmFzOjpzZXRJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+JiYgYnVmZmVyKSBjb25zdAoreworICAgIG1faW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJ1ZmZl
cik7CisgICAgaWYgKG1faW1hZ2VCdWZmZXIgJiYgbV9zaXplICE9IG1faW1hZ2VCdWZmZXItPmlu
dGVybmFsU2l6ZSgpKQorICAgICAgICBtX3NpemUgPSBtX2ltYWdlQnVmZmVyLT5pbnRlcm5hbFNp
emUoKTsKK30KKwordm9pZCBDdXN0b21QYWludENhbnZhczo6bWFrZVJlbmRlcmluZ1Jlc3VsdHNB
dmFpbGFibGUoKQoreworICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgIG1fY29udGV4dC0+cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTIzZDgzYTQ4ZmEwOTJkY2Q0
MmIxN2ViNzg1NTM3NzMzN2I2ODAzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuaApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUg
IkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkNhbnZhc0Jhc2UuaCIKKyNpbmNsdWRlICJF
dmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiSW1hZ2VC
dWZmZXIuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVm
ZXJyZWQuaCIKKyNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW1hZ2VCaXRtYXA7
CitjbGFzcyBQYWludFJlbmRlcmluZ0NvbnRleHQyRDsKKworY2xhc3MgQ3VzdG9tUGFpbnRDYW52
YXMgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxDdXN0b21QYWludENhbnZhcz4sIHB1YmxpYyBD
YW52YXNCYXNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKworICAg
IHN0YXRpYyBSZWY8Q3VzdG9tUGFpbnRDYW52YXM+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CisgICAgdmlydHVhbCB+Q3Vz
dG9tUGFpbnRDYW52YXMoKTsKKyAgICBib29sIGlzQ3VzdG9tUGFpbnRDYW52YXMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CisKKyAgICB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0IGZpbmFs
OworICAgIHZvaWQgc2V0V2lkdGgodW5zaWduZWQpOworICAgIHVuc2lnbmVkIGhlaWdodCgpIGNv
bnN0IGZpbmFsOworICAgIHZvaWQgc2V0SGVpZ2h0KHVuc2lnbmVkKTsKKworICAgIGNvbnN0IElu
dFNpemUmIHNpemUoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6
ZSYpIGZpbmFsOworCisgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFBhaW50UmVuZGVyaW5nQ29udGV4
dDJEPj4gZ2V0Q29udGV4dCgpOworCisgICAgR3JhcGhpY3NDb250ZXh0KiBkcmF3aW5nQ29udGV4
dCgpIGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNzQ29udGV4dCogZXhpc3RpbmdEcmF3aW5nQ29u
dGV4dCgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBtYWtlUmVuZGVyaW5nUmVzdWx0c0F2YWls
YWJsZSgpIGZpbmFsOworICAgIHZvaWQgZGlkRHJhdyhjb25zdCBGbG9hdFJlY3QmKSBmaW5hbCB7
IH0KKworICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgZmluYWwgeyBB
U1NFUlQobV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIpOyByZXR1cm4gbV9pbWFnZUJ1ZmZlci0+YmFz
ZVRyYW5zZm9ybSgpOyB9CisKKyAgICBib29sIGhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyOyB9CisgICAgSW1hZ2VCdWZm
ZXIqIGJ1ZmZlcigpIGNvbnN0IGZpbmFsOworICAgIEltYWdlKiBjb3BpZWRJbWFnZSgpIGNvbnN0
IGZpbmFsOworCisgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50
ZWQ6OmRlcmVmOworCitwcml2YXRlOgorICAgIEN1c3RvbVBhaW50Q2FudmFzKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKKworICAgIHZv
aWQgcmVmQ2FudmFzQmFzZSgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmQ2FudmFz
QmFzZSgpIGZpbmFsIHsgZGVyZWYoKTsgfQorCisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcigp
IGNvbnN0OworICAgIHZvaWQgc2V0SW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiYmKSBjb25zdDsKKworICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7CisgICAgbXV0YWJs
ZSBib29sIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyIHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJl
ZlB0cjxJbWFnZT4gbV9jb3BpZWRJbWFnZTsKK307CisKK30KK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQ0FOVkFTKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzLCBpc0N1c3RvbVBhaW50Q2FudmFz
KCkpCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCAy
ZGY5YzBiMzBmNTYwNmQ4YmVlNmMxYzgxODc3OWM2YjFlNDhlODhjLi4zNGNiZmVhYmNjMDE5NTYx
OTQwNmMyMzczY2UwMmJkNzY2NzUyNTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5oCkBAIC0xMTIsMjAgKzExMiwyMCBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gdG9CbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8QmxvYkNhbGxiYWNrPiYm
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBKU0M6OkpTVmFsdWUgcXVhbGl0eSk7CiAKICAgICAv
LyBVc2VkIGZvciByZW5kZXJpbmcKLSAgICB2b2lkIGRpZERyYXcoY29uc3QgRmxvYXRSZWN0Jik7
CisgICAgdm9pZCBkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsOwogCiAgICAgdm9pZCBw
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAKLSAgICBHcmFwaGlj
c0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgY29uc3Q7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBl
eGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29uc3Q7CisgICAgR3JhcGhpY3NDb250ZXh0KiBkcmF3
aW5nQ29udGV4dCgpIGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNzQ29udGV4dCogZXhpc3RpbmdE
cmF3aW5nQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHRvTWVkaWFTYW1wbGUoKTsKICAgICBFeGNlcHRpb25P
cjxSZWY8TWVkaWFTdHJlYW0+PiBjYXB0dXJlU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBmcmFtZVJlcXVlc3RSYXRlKTsKICNlbmRpZgogCi0g
ICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OwotICAgIEltYWdlKiBjb3BpZWRJbWFnZSgp
IGNvbnN0OworICAgIEltYWdlQnVmZmVyKiBidWZmZXIoKSBjb25zdCBmaW5hbDsKKyAgICBJbWFn
ZSogY29waWVkSW1hZ2UoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGNsZWFyQ29waWVkSW1hZ2Uo
KTsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoKTsKICAgICB2b2lkIG1ha2VQ
cmVzZW50YXRpb25Db3B5KCk7CkBAIC0xMzMsMTAgKzEzMywxMCBAQCBwdWJsaWM6CiAKICAgICBT
ZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdCBmaW5hbDsKIAotICAgIEFmZmlu
ZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3Q7CisgICAgQWZmaW5lVHJhbnNmb3JtIGJh
c2VUcmFuc2Zvcm0oKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgbWFrZVJlbmRlcmluZ1Jlc3Vs
dHNBdmFpbGFibGUoKTsKLSAgICBib29sIGhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1faGFzQ3JlYXRlZEltYWdlQnVmZmVyOyB9CisgICAgdm9pZCBtYWtlUmVuZGVyaW5n
UmVzdWx0c0F2YWlsYWJsZSgpIGZpbmFsOworICAgIGJvb2wgaGFzQ3JlYXRlZEltYWdlQnVmZmVy
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXI7IH0KIAogICAg
IGJvb2wgc2hvdWxkQWNjZWxlcmF0ZShjb25zdCBJbnRTaXplJikgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCmluZGV4IGMyNzJlZDZlOTk5ZjhjMDIwOWI0NzRiNjc2
YTg0MGRhMGU2ODkyNmMuLmJkYTFjMGZhODJiMDk5NzMxMDdjOGY4MmVmMGQzNDBkMDM3OGY5YmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApAQCAtMjUsNiArMjUsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUg
IkNhbnZhc0Jhc2UuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbk9yLmgiCkBAIC03NSw2ICs3NiwxOCBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEltYWdlQml0
bWFwPiB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTsKICAgICAvLyB2b2lkIGNvbnZlcnRUb0Jsb2Io
SW1hZ2VFbmNvZGVPcHRpb25zIG9wdGlvbnMpOwogCisgICAgR3JhcGhpY3NDb250ZXh0KiBkcmF3
aW5nQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBHcmFwaGlj
c0NvbnRleHQqIGV4aXN0aW5nRHJhd2luZ0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBu
dWxscHRyOyB9CisKKyAgICB2b2lkIG1ha2VSZW5kZXJpbmdSZXN1bHRzQXZhaWxhYmxlKCkgZmlu
YWwgeyB9CisgICAgdm9pZCBkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsIHsgfQorCisg
ICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCBmaW5hbCB7IHJldHVybiB7
IH07IH0KKworICAgIGJvb2wgaGFzQ3JlYXRlZEltYWdlQnVmZmVyKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBJbWFnZUJ1ZmZlciogYnVmZmVyKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIEltYWdlKiBjb3BpZWRJbWFnZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG51bGxwdHI7IH0KKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2lu
ZyBSZWZDb3VudGVkOjpkZXJlZjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBjMzQ2MTAyMTVlNTY5ZmU3YWEx
MTljYTUyMTZhN2Q4M2UxNTU2MjI5Li4zMzYxNDM4ZjFlZjIzMzY5OWQwZWRhMzUyMWMwNTZkZTY3
YmFlZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBib29sIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgQ2FudmFzUGF0dGVybiogcGF0dGVybikK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6d291
bGRUYWludE9yaWdpbihjb25zdCBIVE1MQ2FudmFzRWxlbWVudCogc291cmNlQ2FudmFzKQorYm9v
bCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IENhbnZhc0Jh
c2UqIHNvdXJjZUNhbnZhcykKIHsKICAgICBpZiAobV9jYW52YXMub3JpZ2luQ2xlYW4oKSAmJiBz
b3VyY2VDYW52YXMgJiYgIXNvdXJjZUNhbnZhcy0+b3JpZ2luQ2xlYW4oKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmgKaW5kZXggMmQyZDg4NzU3OTAxOGQwZmFmZGFhZGZhZTZkMjJjMWViMzkw
NDFlMi4uZjAwNzFjMmNlMmY0MDgwNzI5ODNiMGM1YjM2NTEyYTU3NjUyYWQxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaApA
QCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQml0bWFwUmVuZGVy
ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1BsYWNlaG9s
ZGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNPZmZzY3Jl
ZW4yZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzUGFpbnQo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKCkge30KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRm
b3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CkBAIC03Myw3ICs3NCw3IEBAIHB1YmxpYzoK
IHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jh
c2UmKTsKICAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgQ2FudmFzUGF0dGVybiopOwot
ICAgIGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBIVE1MQ2FudmFzRWxlbWVudCopOworICAg
IGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBDYW52YXNCYXNlKik7CiAgICAgYm9vbCB3b3Vs
ZFRhaW50T3JpZ2luKGNvbnN0IEhUTUxJbWFnZUVsZW1lbnQqKTsKICAgICBib29sIHdvdWxkVGFp
bnRPcmlnaW4oY29uc3QgSFRNTFZpZGVvRWxlbWVudCopOwogICAgIGJvb2wgd291bGRUYWludE9y
aWdpbihjb25zdCBJbWFnZUJpdG1hcCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCAxNDRl
NjhkZWNjNTZiOTZjNTU5OGJjYjk4OTUxZTczOWRkMTc5ZmI3Li4wMDVjYzcwNGI2YmU5ODdjMTli
YzNlMTMxNjdkOTI2Yzg0MjYxMjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMTQ2LDgg
KzE0Niw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6dW53aW5kU3RhdGVT
dGFjaygpCiAgICAgLy8gaXMgY2xlYXJlZCBiZWZvcmUgZGVzdHJ1Y3Rpb24sIHRvIGF2b2lkIGFz
c2VydGlvbnMgaW4gdGhlCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0IGR0b3IuCiAgICAgaWYgKHNp
emVfdCBzdGFja1NpemUgPSBtX3N0YXRlU3RhY2suc2l6ZSgpKSB7Ci0gICAgICAgIGF1dG8mIGNh
bnZhcyA9IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwotICAgICAg
ICBpZiAoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gY2FudmFzLmV4aXN0aW5nRHJhd2luZ0Nv
bnRleHQoKSkgeworICAgICAgICBpZiAoYXV0byogY29udGV4dCA9IGNhbnZhc0Jhc2UoKS5leGlz
dGluZ0RyYXdpbmdDb250ZXh0KCkpIHsKICAgICAgICAgICAgIHdoaWxlICgtLXN0YWNrU2l6ZSkK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgIH0KQEAgLTE2Nyw4
ICsxNjYsNyBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp+Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZSgpCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmlzQWNj
ZWxlcmF0ZWQoKSBjb25zdAogewogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RP
UkUpIHx8IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCi0gICAgYXV0byYgY2FudmFzID0g
ZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7Ci0gICAgaWYgKCFjYW52
YXMuaGFzQ3JlYXRlZEltYWdlQnVmZmVyKCkpCisgICAgaWYgKCFjYW52YXNCYXNlKCkuaGFzQ3Jl
YXRlZEltYWdlQnVmZmVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhdXRvKiBjb250
ZXh0ID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICByZXR1cm4gY29udGV4dCAmJiBjb250ZXh0LT5p
c0FjY2VsZXJhdGVkQ29udGV4dCgpOwpAQCAtNDAxLDkgKzM5OSw5IEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0U3Ryb2tlU3R5bGUoQ2FudmFzU3R5bGUgc3R5bGUpCiAg
ICAgaWYgKHN0YXRlKCkuc3Ryb2tlU3R5bGUuaXNWYWxpZCgpICYmIHN0YXRlKCkuc3Ryb2tlU3R5
bGUuaXNFcXVpdmFsZW50Q29sb3Ioc3R5bGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRv
JiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKKyAg
ICBpZiAoc3R5bGUuaXNDdXJyZW50Q29sb3IoKSAmJiBpczxIVE1MQ2FudmFzRWxlbWVudD4oY2Fu
dmFzQmFzZSgpKSkgeworICAgICAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFz
RWxlbWVudD4oY2FudmFzQmFzZSgpKTsKIAotICAgIGlmIChzdHlsZS5pc0N1cnJlbnRDb2xvcigp
KSB7CiAgICAgICAgIGlmIChzdHlsZS5oYXNPdmVycmlkZUFscGhhKCkpIHsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBTaG91bGQgbm90IHVzZSBSR0JBMzIgaGVyZS4KICAgICAgICAgICAgIHN0eWxl
ID0gQ2FudmFzU3R5bGUoY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShjdXJyZW50Q29sb3IoJmNhbnZh
cykucmdiKCksIHN0eWxlLm92ZXJyaWRlQWxwaGEoKSkpOwpAQCAtNDMwLDkgKzQyOCw5IEBAIHZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0RmlsbFN0eWxlKENhbnZhc1N0eWxl
IHN0eWxlKQogICAgIGlmIChzdGF0ZSgpLmZpbGxTdHlsZS5pc1ZhbGlkKCkgJiYgc3RhdGUoKS5m
aWxsU3R5bGUuaXNFcXVpdmFsZW50Q29sb3Ioc3R5bGUpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgp
KTsKKyAgICBpZiAoc3R5bGUuaXNDdXJyZW50Q29sb3IoKSAmJiBpczxIVE1MQ2FudmFzRWxlbWVu
dD4oY2FudmFzQmFzZSgpKSkgeworICAgICAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1M
Q2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKIAotICAgIGlmIChzdHlsZS5pc0N1cnJlbnRD
b2xvcigpKSB7CiAgICAgICAgIGlmIChzdHlsZS5oYXNPdmVycmlkZUFscGhhKCkpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBTaG91bGQgbm90IHVzZSBSR0JBMzIgaGVyZS4KICAgICAgICAgICAg
IHN0eWxlID0gQ2FudmFzU3R5bGUoY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShjdXJyZW50Q29sb3Io
JmNhbnZhcykucmdiKCksIHN0eWxlLm92ZXJyaWRlQWxwaGEoKSkpOwpAQCAtOTI4LDggKzkyNiw3
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cmVzZXRUcmFuc2Zvcm0oKQog
CiAgICAgcmVhbGl6ZVNhdmVzKCk7CiAKLSAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1M
Q2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKLSAgICBjLT5zZXRDVE0oY2FudmFzLmJhc2VU
cmFuc2Zvcm0oKSk7CisgICAgYy0+c2V0Q1RNKGNhbnZhc0Jhc2UoKS5iYXNlVHJhbnNmb3JtKCkp
OwogICAgIG1vZGlmaWFibGVTdGF0ZSgpLnRyYW5zZm9ybSA9IEFmZmluZVRyYW5zZm9ybSgpOwog
CiAgICAgaWYgKGhhc0ludmVydGlibGVUcmFuc2Zvcm0pCkBAIC0xNTY1LDcgKzE1NjIsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2Uo
SFRNTEltYWdlRWxlbWVudCYgaW1hZwogICAgIHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlvbk9y
PHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZShIVE1MQ2FudmFz
RWxlbWVudCYgc291cmNlQ2FudmFzLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmRyYXdJbWFnZShDYW52YXNCYXNlJiBzb3VyY2VDYW52YXMsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KQogewogICAgIEZsb2F0UmVj
dCBzcmNDYW52YXNSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc291cmNlQ2FudmFzLnNp
emUoKSk7CiAKQEAgLTE3MjcsMTggKzE3MjQsMTYgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpjbGVhckNhbnZhcygpCiAgICAgICAgIHJldHVybjsKIAogICAgIGMtPnNhdmUo
KTsKLSAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFz
QmFzZSgpKTsKLSAgICBjLT5zZXRDVE0oY2FudmFzLmJhc2VUcmFuc2Zvcm0oKSk7Ci0gICAgYy0+
Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBjYW52YXMud2lkdGgoKSwgY2FudmFzLmhlaWdodCgp
KSk7CisgICAgYy0+c2V0Q1RNKGNhbnZhc0Jhc2UoKS5iYXNlVHJhbnNmb3JtKCkpOworICAgIGMt
PmNsZWFyUmVjdChGbG9hdFJlY3QoMCwgMCwgY2FudmFzQmFzZSgpLndpZHRoKCksIGNhbnZhc0Jh
c2UoKS5oZWlnaHQoKSkpOwogICAgIGMtPnJlc3RvcmUoKTsKIH0KIAogUGF0aCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjp0cmFuc2Zvcm1BcmVhVG9EZXZpY2UoY29uc3QgUGF0aCYgcGF0
aCkgY29uc3QKIHsKICAgICBQYXRoIHRyYW5zZm9ybWVkKHBhdGgpOwotICAgIGF1dG8mIGNhbnZh
cyA9IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwogICAgIHRyYW5z
Zm9ybWVkLnRyYW5zZm9ybShzdGF0ZSgpLnRyYW5zZm9ybSk7Ci0gICAgdHJhbnNmb3JtZWQudHJh
bnNmb3JtKGNhbnZhcy5iYXNlVHJhbnNmb3JtKCkpOworICAgIHRyYW5zZm9ybWVkLnRyYW5zZm9y
bShjYW52YXNCYXNlKCkuYmFzZVRyYW5zZm9ybSgpKTsKICAgICByZXR1cm4gdHJhbnNmb3JtZWQ7
CiB9CiAKQEAgLTE3NTIsMTcgKzE3NDcsMTQgQEAgUGF0aCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjp0cmFuc2Zvcm1BcmVhVG9EZXZpY2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogYm9v
bCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpyZWN0Q29udGFpbnNDYW52YXMoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KSBjb25zdAogewogICAgIEZsb2F0UXVhZCBxdWFkKHJlY3QpOwotICAg
IGF1dG8mIGNhbnZhcyA9IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkp
OwotICAgIEZsb2F0UXVhZCBjYW52YXNRdWFkKEZsb2F0UmVjdCgwLCAwLCBjYW52YXMud2lkdGgo
KSwgY2FudmFzLmhlaWdodCgpKSk7CisgICAgRmxvYXRRdWFkIGNhbnZhc1F1YWQoRmxvYXRSZWN0
KDAsIDAsIGNhbnZhc0Jhc2UoKS53aWR0aCgpLCBjYW52YXNCYXNlKCkuaGVpZ2h0KCkpKTsKICAg
ICByZXR1cm4gc3RhdGUoKS50cmFuc2Zvcm0ubWFwUXVhZChxdWFkKS5jb250YWluc1F1YWQoY2Fu
dmFzUXVhZCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+IEludFJlY3QgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6Y2FsY3VsYXRlQ29tcG9zaXRpbmdCdWZmZXJSZWN0KGNvbnN0IFQmIGFy
ZWEsIEludFNpemUqIGNyb3BwZWRPZmZzZXQpCiB7Ci0gICAgYXV0byYgY2FudmFzID0gZG93bmNh
c3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7Ci0KLSAgICBJbnRSZWN0IGNhbnZh
c1JlY3QoMCwgMCwgY2FudmFzLndpZHRoKCksIGNhbnZhcy5oZWlnaHQoKSk7Ci0gICAgY2FudmFz
UmVjdCA9IGNhbnZhcy5iYXNlVHJhbnNmb3JtKCkubWFwUmVjdChjYW52YXNSZWN0KTsKKyAgICBJ
bnRSZWN0IGNhbnZhc1JlY3QoMCwgMCwgY2FudmFzQmFzZSgpLndpZHRoKCksIGNhbnZhc0Jhc2Uo
KS5oZWlnaHQoKSk7CisgICAgY2FudmFzUmVjdCA9IGNhbnZhc0Jhc2UoKS5iYXNlVHJhbnNmb3Jt
KCkubWFwUmVjdChjYW52YXNSZWN0KTsKICAgICBQYXRoIHBhdGggPSB0cmFuc2Zvcm1BcmVhVG9E
ZXZpY2UoYXJlYSk7CiAgICAgSW50UmVjdCBidWZmZXJSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChw
YXRoLmZhc3RCb3VuZGluZ1JlY3QoKSk7CiAgICAgSW50UG9pbnQgb3JpZ2luYWxMb2NhdGlvbiA9
IGJ1ZmZlclJlY3QubG9jYXRpb24oKTsKQEAgLTE3NzksOSArMTc3MSw4IEBAIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlQ29t
cG9zaXRpbmdCdWZmCiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y29tcG9z
aXRlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEludFJlY3QmIGJ1ZmZlclJlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewotICAgIGF1dG8mIGNhbnZhcyA9IGRvd25jYXN0PEhU
TUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwotICAgIEludFJlY3QgY2FudmFzUmVjdCgw
LCAwLCBjYW52YXMud2lkdGgoKSwgY2FudmFzLmhlaWdodCgpKTsKLSAgICBjYW52YXNSZWN0ID0g
Y2FudmFzLmJhc2VUcmFuc2Zvcm0oKS5tYXBSZWN0KGNhbnZhc1JlY3QpOworICAgIEludFJlY3Qg
Y2FudmFzUmVjdCgwLCAwLCBjYW52YXNCYXNlKCkud2lkdGgoKSwgY2FudmFzQmFzZSgpLmhlaWdo
dCgpKTsKKyAgICBjYW52YXNSZWN0ID0gY2FudmFzQmFzZSgpLmJhc2VUcmFuc2Zvcm0oKS5tYXBS
ZWN0KGNhbnZhc1JlY3QpOwogCiAgICAgYXV0byogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAg
aWYgKCFjKQpAQCAtMTk0Niw3ICsxOTM3LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1Bh
dHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKEgKICAg
ICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKCpj
YWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZUVsZW1lbnQucmVuZGVyZXIoKSksIHJl
cGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9OwogfQogCi1FeGNlcHRpb25PcjxSZWZQdHI8
Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRl
cm4oSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcywgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkp
CitFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oQ2FudmFzQmFzZSYgY2FudmFzLCBib29sIHJlcGVhdFgs
IGJvb2wgcmVwZWF0WSkKIHsKICAgICBpZiAoIWNhbnZhcy53aWR0aCgpIHx8ICFjYW52YXMuaGVp
Z2h0KCkgfHwgIWNhbnZhcy5idWZmZXIoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CkBAIC0xOTg4LDggKzE5NzksNyBAQCBFeGNlcHRpb25PcjxSZWZQ
dHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBh
dHRlcm4oSQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRpZERyYXdFbnRp
cmVDYW52YXMoKQogewotICAgIGF1dG8mIGNhbnZhcyA9IGRvd25jYXN0PEhUTUxDYW52YXNFbGVt
ZW50PihjYW52YXNCYXNlKCkpOwotICAgIGRpZERyYXcoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onpl
cm8oKSwgY2FudmFzLnNpemUoKSksIENhbnZhc0RpZERyYXdBcHBseUNsaXApOworICAgIGRpZERy
YXcoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFzQmFzZSgpLnNpemUoKSksIENh
bnZhc0RpZERyYXdBcHBseUNsaXApOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2U6OmRpZERyYXcoY29uc3QgRmxvYXRSZWN0JiByLCB1bnNpZ25lZCBvcHRpb25zKQpAQCAt
MjAzNCw4ICsyMDI0LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkaWRE
cmF3KGNvbnN0IEZsb2F0UmVjdCYgciwgdW5zaWduZWQgb3B0aW9ucykKICAgICAgICAgLy8gd2Un
ZCBoYXZlIHRvIGtlZXAgdGhlIGNsaXAgcGF0aCBhcm91bmQuCiAgICAgfQogCi0gICAgYXV0byYg
Y2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7Ci0gICAg
Y2FudmFzLmRpZERyYXcoZGlydHlSZWN0KTsKKyAgICBjYW52YXNCYXNlKCkuZGlkRHJhdyhkaXJ0
eVJlY3QpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFRyYWNr
c0Rpc3BsYXlMaXN0UmVwbGF5KGJvb2wgdHJhY2tzRGlzcGxheUxpc3RSZXBsYXkpCkBAIC0yMDc1
LDEwICsyMDY0LDggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpCiAgICAgICAgIGlmICghbV9yZWNvcmRpbmdDb250ZXh0
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8mIGNhbnZhcyA9IGRvd25jYXN0
PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwotCi0gICAgICAgIEZsb2F0UmVjdCBj
bGlwKEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFzLnNpemUoKSk7Ci0gICAgICAgIERpc3BsYXlM
aXN0OjpSZXBsYXllciByZXBsYXllcigqY2FudmFzLmRyYXdpbmdDb250ZXh0KCksIG1fcmVjb3Jk
aW5nQ29udGV4dC0+ZGlzcGxheUxpc3QpOworICAgICAgICBGbG9hdFJlY3QgY2xpcChGbG9hdFBv
aW50Ojp6ZXJvKCksIGNhbnZhc0Jhc2UoKS5zaXplKCkpOworICAgICAgICBEaXNwbGF5TGlzdDo6
UmVwbGF5ZXIgcmVwbGF5ZXIoKmNhbnZhc0Jhc2UoKS5kcmF3aW5nQ29udGV4dCgpLCBtX3JlY29y
ZGluZ0NvbnRleHQtPmRpc3BsYXlMaXN0KTsKIAogICAgICAgICBpZiAoVU5MSUtFTFkobV90cmFj
a3NEaXNwbGF5TGlzdFJlcGxheSkpIHsKICAgICAgICAgICAgIGF1dG8gcmVwbGF5TGlzdCA9IHJl
cGxheWVyLnJlcGxheShjbGlwLCBtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KTsKQEAgLTIwOTIs
MTQgKzIwNzksMTMgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpCiAKIEdyYXBoaWNzQ29udGV4dCogQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6ZHJhd2luZ0NvbnRleHQoKSBjb25zdAogewotICAgIGF1dG8mIGNh
bnZhcyA9IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwogICAgIGlm
IChVTkxJS0VMWShtX3VzZXNEaXNwbGF5TGlzdERyYXdpbmcpKSB7CiAgICAgICAgIGlmICghbV9y
ZWNvcmRpbmdDb250ZXh0KQotICAgICAgICAgICAgbV9yZWNvcmRpbmdDb250ZXh0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0PigqY2FudmFzLmRyYXdpbmdDb250
ZXh0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGNhbnZhcy5zaXplKCkpKTsKKyAg
ICAgICAgICAgIG1fcmVjb3JkaW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxp
c3REcmF3aW5nQ29udGV4dD4oKmNhbnZhc0Jhc2UoKS5kcmF3aW5nQ29udGV4dCgpLCBGbG9hdFJl
Y3QoRmxvYXRQb2ludDo6emVybygpLCBjYW52YXNCYXNlKCkuc2l6ZSgpKSk7CiAgICAgICAgIHJl
dHVybiAmbV9yZWNvcmRpbmdDb250ZXh0LT5jb250ZXh0OwogICAgIH0KIAotICAgIHJldHVybiBj
YW52YXMuZHJhd2luZ0NvbnRleHQoKTsKKyAgICByZXR1cm4gY2FudmFzQmFzZSgpLmRyYXdpbmdD
b250ZXh0KCk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGVFbXB0eUltYWdl
RGF0YShjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtMjE2Nyw5ICsyMTUzLDggQEAgRXhjZXB0aW9u
T3I8UmVmUHRyPEltYWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmdldElt
YWdlRGF0YShJbWFnZUIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBJbnRSZWN0IGlt
YWdlRGF0YVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGxvZ2ljYWxSZWN0KTsKLSAgICBhdXRvJiBj
YW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKIAotICAg
IEltYWdlQnVmZmVyKiBidWZmZXIgPSBjYW52YXMuYnVmZmVyKCk7CisgICAgSW1hZ2VCdWZmZXIq
IGJ1ZmZlciA9IGNhbnZhc0Jhc2UoKS5idWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZUVtcHR5SW1hZ2VEYXRhKGltYWdlRGF0YVJlY3Quc2l6ZSgpKTsKIApA
QCAtMjIwMCw5ICsyMTg1LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpw
dXRJbWFnZURhdGEoSW1hZ2VEYXRhJiBkYXRhLCBmbG9hdCBkeCwgZmxvYXQKIAogdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwdXRJbWFnZURhdGEoSW1hZ2VEYXRhJiBkYXRhLCBJ
bWFnZUJ1ZmZlcjo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtLCBmbG9hdCBkeCwg
ZmxvYXQgZHksIGZsb2F0IGRpcnR5WCwgZmxvYXQgZGlydHlZLCBmbG9hdCBkaXJ0eVdpZHRoLCBm
bG9hdCBkaXJ0eUhlaWdodCkKIHsKLSAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2Fu
dmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKLQotICAgIEltYWdlQnVmZmVyKiBidWZmZXIgPSBj
YW52YXMuYnVmZmVyKCk7CisgICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlciA9IGNhbnZhc0Jhc2UoKS5i
dWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjU1LDkg
KzIyMzgsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmluZmxhdGVTdHJv
a2VSZWN0KEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKIAogUGxhdGZvcm1MYXllciogQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7Ci0gICAgYXV0byYg
Y2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7Ci0KLSAg
ICByZXR1cm4gY2FudmFzLmJ1ZmZlcigpID8gY2FudmFzLmJ1ZmZlcigpLT5wbGF0Zm9ybUxheWVy
KCkgOiBudWxscHRyOworICAgIHJldHVybiBjYW52YXNCYXNlKCkuYnVmZmVyKCkgPyBjYW52YXNC
YXNlKCkuYnVmZmVyKCktPnBsYXRmb3JtTGF5ZXIoKSA6IG51bGxwdHI7CiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5oCmluZGV4IDY1NTQ4YWQxZjQ5NmIwYWMwMzYwNjEzNzM1ZTliMzZlMTUz
NzQ5NjEuLjQ3MjQyYTc4NTcwNDJmOTRmNjA0OWY1ZDMzOTJmNzQ5YjljYzdmODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmgKQEAgLTMxNiw3ICszMTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRG
aWxsU3R5bGUoQ2FudmFzU3R5bGUpOwogCiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1Bh
dHRlcm4+PiBjcmVhdGVQYXR0ZXJuKEhUTUxJbWFnZUVsZW1lbnQmLCBib29sIHJlcGVhdFgsIGJv
b2wgcmVwZWF0WSk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBjcmVh
dGVQYXR0ZXJuKEhUTUxDYW52YXNFbGVtZW50JiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkp
OworICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4gY3JlYXRlUGF0dGVybihD
YW52YXNCYXNlJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpOwogI2lmIEVOQUJMRShWSURF
TykKICAgICBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IGNyZWF0ZVBhdHRlcm4o
SFRNTFZpZGVvRWxlbWVudCYsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKICNlbmRpZgpA
QCAtMzI0LDcgKzMyNCw3IEBAIHByb3RlY3RlZDoKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRy
YXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRyYXdJbWFnZShI
VE1MSW1hZ2VFbGVtZW50JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IENvbXBvc2l0ZU9wZXJhdG9yJiwgY29uc3QgQmxlbmRNb2RlJik7
Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QpOworICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IGRyYXdJbWFnZShDYW52YXNCYXNlJiwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QpOwogI2lmIEVOQUJMRShWSURFTykKICAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0
MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJhZTFmY2EyMTA0M2YyMDNhYjYxOTNkMDkxZGJhYjRkNmIwZThm
ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYWludFJl
bmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oIgorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19B
UEkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlxdWVfcHRyPFBhaW50UmVuZGVy
aW5nQ29udGV4dDJEPiBQYWludFJlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlKENhbnZhc0Jhc2Um
IGNhbnZhcykKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBhaW50UmVuZGVyaW5nQ29u
dGV4dDJEPihuZXcgUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQoY2FudmFzKSk7Cit9CisKK1BhaW50
UmVuZGVyaW5nQ29udGV4dDJEOjpQYWludFJlbmRlcmluZ0NvbnRleHQyRChDYW52YXNCYXNlJiBj
YW52YXMpCisgICAgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlKGNhbnZhcywgZmFsc2Us
IGZhbHNlKQoreworfQorCitQYWludFJlbmRlcmluZ0NvbnRleHQyRDo6flBhaW50UmVuZGVyaW5n
Q29udGV4dDJEKCkgPSBkZWZhdWx0OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29u
dGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRl
eHQyRC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNkOGE0MDQ5NTEyZGEyNjI2MTYzM2FmZmY5YjJhNGFhODdhMTNl
MTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYWludFJl
bmRlcmluZ0NvbnRleHQyRC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJ
KQorCisjaW5jbHVkZSAiQ3VzdG9tUGFpbnRDYW52YXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBQYWludFJlbmRlcmluZ0NvbnRleHQyRCBmaW5hbCA6IHB1YmxpYyBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFBhaW50UmVuZGVyaW5nQ29udGV4dDJEPiBjcmVhdGUoQ2FudmFzQmFzZSYpOworCisgICAg
dmlydHVhbCB+UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQoKTsKKworICAgIGJvb2wgaXNQYWludCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBDdXN0b21QYWludENhbnZhcyYg
Y2FudmFzKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8Q3VzdG9tUGFpbnRDYW52YXM+KGNhbnZh
c0Jhc2UoKSk7IH0KKworcHJpdmF0ZToKKyAgICBQYWludFJlbmRlcmluZ0NvbnRleHQyRChDYW52
YXNCYXNlJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0NBTlZBU1JFTkRFUklOR0NPTlRFWFQoV2ViQ29yZTo6UGFpbnRSZW5kZXJpbmdDb250
ZXh0MkQsIGlzUGFpbnQoKSkKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjNDM4NWJi
OWMyZjFmZWYyNDJjNjkwY2Q1YzI0NzQ4Nzk0NjlkODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRleHQyRC5pZGwKQEAgLTAs
MCArMSw0NSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitbCitDdXN0b21Jc1JlYWNoYWJsZSwK
K0VuYWJsZWRBdFJ1bnRpbWU9Q1NTUGFpbnRpbmdBUEksCitDb25kaXRpb25hbD1DU1NfUEFJTlRJ
TkdfQVBJLAorSlNHZW5lcmF0ZVRvSlNPYmplY3QsCitKU0N1c3RvbU1hcmtGdW5jdGlvbiwKK10g
aW50ZXJmYWNlIFBhaW50UmVuZGVyaW5nQ29udGV4dDJEIHsKK307CisKK1BhaW50UmVuZGVyaW5n
Q29udGV4dDJEIGltcGxlbWVudHMgQ2FudmFzU3RhdGU7CitQYWludFJlbmRlcmluZ0NvbnRleHQy
RCBpbXBsZW1lbnRzIENhbnZhc1RyYW5zZm9ybTsKK1BhaW50UmVuZGVyaW5nQ29udGV4dDJEIGlt
cGxlbWVudHMgQ2FudmFzQ29tcG9zaXRpbmc7CitQYWludFJlbmRlcmluZ0NvbnRleHQyRCBpbXBs
ZW1lbnRzIENhbnZhc0ltYWdlU21vb3RoaW5nOworUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgaW1w
bGVtZW50cyBDYW52YXNGaWxsU3Ryb2tlU3R5bGVzOworUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQg
aW1wbGVtZW50cyBDYW52YXNTaGFkb3dTdHlsZXM7CitQYWludFJlbmRlcmluZ0NvbnRleHQyRCBp
bXBsZW1lbnRzIENhbnZhc1JlY3Q7CitQYWludFJlbmRlcmluZ0NvbnRleHQyRCBpbXBsZW1lbnRz
IENhbnZhc0RyYXdQYXRoOworUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgaW1wbGVtZW50cyBDYW52
YXNEcmF3SW1hZ2U7CitQYWludFJlbmRlcmluZ0NvbnRleHQyRCBpbXBsZW1lbnRzIENhbnZhc1Bh
dGhEcmF3aW5nU3R5bGVzOworUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgaW1wbGVtZW50cyBDYW52
YXNQYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYk1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgKaW5kZXggMjZiYzNl
MGM3NWEyMjExMTQ2YzQzZWVhZmNjYWZiZDdlMDk4MzMxYy4uZWRkNGIwNTdlNDYyMTAxYmQ4Mjdi
NjRiYzI2YTcxOGVkZmJmZDViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRv
ci5oCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoV0VCTUVUQUwpCiAKLSNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcAppbmRleCA4YjM0OTM2
Mjc5YzRjNjE5YmZlZWY1M2QwODQ2ZDg3YzkyMWQwMWNlLi5kMmU0MmMwYzllNjE5OWY1Mjc0Mjkx
NjcwZjE3YTA2ZTlkZTgyMGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAKICNp
ZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKIAorI2luY2x1ZGUgIkN1c3RvbVBhaW50Q2FudmFz
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2VCaXRtYXAu
aCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTQ1NTUGFpbnRDYWxsYmFj
ay5oIgotI2luY2x1ZGUgIk9mZnNjcmVlbkNhbnZhcy5oIgotI2luY2x1ZGUgIldlYkdMUmVuZGVy
aW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIlBhaW50UmVuZGVyaW5nQ29udGV4dDJELmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTEsMjkgKzUxLDI0IEBAIEltYWdlRHJhd1Jlc3VsdCBD
dXN0b21QYWludEltYWdlOjpkb0N1c3RvbVBhaW50KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRl
eHQsIGNvCiAgICAgYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGNhbGxiYWNrLnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAg
ICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7Ci0gICAgYXV0byogZXhl
Y1N0YXRlID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZXhlY1N0YXRlKCk7Ci0gICAgaWYgKCFl
eGVjU3RhdGUpCi0gICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAK
LSAgICBhdXRvIGNhbnZhcyA9IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBkZXN0U2l6ZS53aWR0aCgpLCBkZXN0U2l6ZS5oZWlnaHQoKSk7Ci0gICAgRXhj
ZXB0aW9uT3I8T2Zmc2NyZWVuUmVuZGVyaW5nQ29udGV4dD4gY29udGV4dE9yRXhjZXB0aW9uID0g
Y2FudmFzLT5nZXRDb250ZXh0KCpleGVjU3RhdGUsIE9mZnNjcmVlbkNhbnZhczo6UmVuZGVyaW5n
Q29udGV4dFR5cGU6OldlYmdsLCB7IH0pOworICAgIGF1dG8gY2FudmFzID0gQ3VzdG9tUGFpbnRD
YW52YXM6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZGVzdFNpemUud2lkdGgoKSwg
ZGVzdFNpemUuaGVpZ2h0KCkpOworICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxQYWludFJlbmRlcmlu
Z0NvbnRleHQyRD4+IGNvbnRleHRPckV4Y2VwdGlvbiA9IGNhbnZhcy0+Z2V0Q29udGV4dCgpOwog
CiAgICAgaWYgKGNvbnRleHRPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKICAgICBhdXRvIGNvbnRleHQgPSBjb250
ZXh0T3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7CiAKLSAgICBjb250ZXh0LT5jbGVh
ckNvbG9yKDAsIDAsIDAsIDEuMCk7Ci0gICAgY29udGV4dC0+Y2xlYXIoR0xfQ09MT1JfQlVGRkVS
X0JJVCk7Ci0KICAgICBhdXRvIHJlc3VsdCA9IG1fcGFpbnRDYWxsYmFjay0+aGFuZGxlRXZlbnQo
KmNvbnRleHQpOwogICAgIGlmIChyZXN1bHQudHlwZSgpICE9IENhbGxiYWNrUmVzdWx0VHlwZTo6
U3VjY2VzcykKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAot
ICAgIGF1dG8gYml0bWFwID0gY2FudmFzLT50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTsKLSAgICBp
ZiAoIWJpdG1hcCkKKyAgICBVTlVTRURfUEFSQU0oZGVzdENvbnRleHQpOworICAgIGF1dG8gaW1h
Z2UgPSBjYW52YXMtPmNvcGllZEltYWdlKCk7CisgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0
dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGRlc3RDb250ZXh0LmRyYXdJ
bWFnZSgqYml0bWFwLT5idWZmZXIoKS0+Y29weUltYWdlKCksIEZsb2F0UG9pbnQoKSk7CisgICAg
ZGVzdENvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgpKTsKIAogICAgIHJldHVy
biBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGI3YjM0NjMxYWYyZmY3NDkw
NzkxY2VlYTc5MzVjZmEzNDFiNzIzOC4uZWMyMzQ2YTczYTkxODhjODFhMTM5NDhiZTAzNzViZjQz
ZjczNTExMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE4LTEwLTE5ICBKdXN0aW4gTWljaGF1
ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBDU1MgUGFpbnQgQVBJIHNo
b3VsZCBnaXZlIGEgMmQgcmVuZGVyaW5nIGNvbnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLmh0
bWw6CisKIDIwMTgtMTAtMTkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzcyNTQuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNpYy5odG1sCmluZGV4IGNmM2FmZTgzNDUxNmY3
ZjAxYjA3MjYxNmQyZjkyNmE5ZmFhYmVmMDIuLjNmNGRjM2EyZDAyZWYyMWEyZTk3MmQ0YzhiNGYy
ZmFlOGMzODk0NTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC9iYXNpYy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNp
Yy5odG1sCkBAIC04LDggKzgsOCBAQAogPHN0eWxlPgogICAjcGFpbnQgewogICAgIGJhY2tncm91
bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50KTsKLSAgICB3aWR0aDogNTBweDsKLSAgICBoZWlnaHQ6
IDUwcHg7CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUwcHg7CiAgIH0KIDwvc3R5
bGU+CiAKQEAgLTcwLDggKzcwLDEzIEBAIGxldCBwYWludF9jYWxsZWRfdGVzdCA9IGFzeW5jX3Rl
c3QoJ3Rlc3QgdGhhdCB0ZXN0IGRpdiBwYWludCBjYWxsYmFjayBnZXRzIGNhbGxlCiBwYWludF9j
YWxsZWRfdGVzdC5zdGVwKGZ1bmN0aW9uKCkgewogICBDU1MucGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUucmVnaXN0ZXJQYWludCgnbXktcGFpbnQnLCBjbGFzcyB7CiAgICAgcGFpbnQoY3R4LCBnZW9t
LCBwcm9wZXJ0aWVzKSB7Ci0gICAgICBjdHguY2xlYXJDb2xvcigwLDEuMCwwLDEuMCk7Ci0gICAg
ICBjdHguY2xlYXIoY3R4LkNPTE9SX0JVRkZFUl9CSVQpOworICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCA2OyBpKyspeworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDY7IGorKyl7CisgICAg
ICAgICAgY3R4LmZpbGxTdHlsZSA9ICdyZ2IoJyArIE1hdGguZmxvb3IoMjU1IC0gNDIuNSAqIGkp
ICsgJywnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoMjU1IC0gNDIu
NSAqIGopICsgJywwKSc7CisgICAgICAgICAgY3R4LmZpbGxSZWN0KGogKiAyNSwgaSAqIDI1LCAy
NSwgMjUpOworICAgICAgICB9CisgICAgICB9CiAgICAgICBwYWludF9jYWxsZWRfdGVzdC5kb25l
KCk7CiAgICAgfQogICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352849</attachid>
            <date>2018-10-19 19:56:31 -0700</date>
            <delta_ts>2018-10-22 14:50:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190762-20181019195630.patch</filename>
            <type>text/plain</type>
            <size>57302</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ4M2QyZmU0N2E4ODVm
NjA0ODZlYjJlMWJjNGYzNTY5YTBjYzk3Yy4uMmY4MTQxOWFkYTNkYzhlNDdjYmE2NDFiMDZmYmU3
NTQwNjZkMzEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDE4LTEwLTE5ICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBDU1MgUGFp
bnQgQVBJIHNob3VsZCBnaXZlIGEgMmQgcmVuZGVyaW5nIGNvbnRleHQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyB0eXBlIG9mIGNhbnZh
cyBhbmQgMmQgcmVuZGVyaW5nIGNvbnRleHQgdG8gc3VwcG9ydCB0aGUgQ1NTIFBhaW50aW5nIEFQ
SS4KKyAgICAgICAgTWFrZSBtYW55IG9mIHRoZSBtZXRob2RzIGZyb20gSFRNTENhbnZhc0VsZW1l
bnQgdmlydHVhbCBmdW5jdGlvbnMgb24gQ2FudmFzQmFzZSwgYW5kCisgICAgICAgIHJlbW92ZSBt
YW55IG9mIHRoZSBkb3duY2FzdHMgaW4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZSBhcyBh
IHJlc3VsdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGFpbnRS
ZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnJv
b3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNQYWludFJlbmRlcmluZ0NvbnRleHQyRE93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1BhaW50UmVu
ZGVyaW5nQ29udGV4dDJEOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGNzcy9DU1NQYWludENh
bGxiYWNrLmg6CisgICAgICAgICogY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsOgorICAgICAgICAq
IGh0bWwvQ2FudmFzQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjp+Q2Fu
dmFzQmFzZSk6CisgICAgICAgICogaHRtbC9DYW52YXNCYXNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNCYXNlOjppc0N1c3RvbVBhaW50Q2FudmFzIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L0N1c3RvbVBhaW50Q2FudmFzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDdXN0b21Q
YWludENhbnZhczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFz
OjpDdXN0b21QYWludENhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZh
czo6fkN1c3RvbVBhaW50Q2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2Fu
dmFzOjp3aWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6
c2V0V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OmhlaWdodCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6c2V0SGVpZ2h0KToK
KyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpzaXplIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbVBhaW50Q2FudmFzOjpnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbVBhaW50Q2FudmFzOjpidWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9t
UGFpbnRDYW52YXM6OmNvcGllZEltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bVBhaW50Q2FudmFzOjpkcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21QYWludENhbnZhczo6ZXhpc3RpbmdEcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OnNldEltYWdlQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjptYWtlUmVuZGVyaW5nUmVz
dWx0c0F2YWlsYWJsZSk6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludENhbnZhcy5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oLgorICAgICAgICAq
IGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZh
cy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWludE9yaWdp
bik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6aXNQYWludCBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp1bndpbmRTdGF0
ZVN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6
OmlzQWNjZWxlcmF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0RmlsbFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnJlc2V0VHJhbnNmb3JtKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjbGVhckNhbnZhcyk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp0cmFuc2Zv
cm1BcmVhVG9EZXZpY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6cmVjdENvbnRhaW5zQ2FudmFzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVm
ZmVyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
Ojpjb21wb3NpdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpkaWREcmF3RW50aXJlQ2FudmFzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRpZERyYXcpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6ZHJhd2luZ0NvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6Z2V0SW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnB1dEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oLgorICAgICAgICAo
V2ViQ29yZTo6UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYWludFJlbmRlcmluZ0NvbnRleHQyRDo6UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmguCisgICAgICAgICogaHRt
bC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwuCisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFpbnQpOgorCiAyMDE4LTEwLTE5ICBaYWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBSZW5kZXJSZXBsYWNl
ZCByZW5kZXJlciBzaG91bGQgY3JlYXRlIElubGluZUJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCA4YjAyYTUyZDUwZDAxZDc3ZWMxZTM2MTBjYzc4NzI2MTI2MzRlOTM4Li5hNTk2NDA1MjA5ZTYz
YjNhNGQyMjZiNmZiY2NlN2ZlNzA0NDBjYzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODAz
LDYgKzgwMyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgaHRtbC9jYW52
YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuaWRsCiAgICAgaHRtbC9jYW52
YXMvSW1hZ2VTbW9vdGhpbmdRdWFsaXR5LmlkbAogICAgIGh0bWwvY2FudmFzL09mZnNjcmVlbkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKKyAgICBodG1sL2NhbnZhcy9QYWludFJlbmRlcmlu
Z0NvbnRleHQyRC5pZGwKICAgICBodG1sL2NhbnZhcy9QYXRoMkQuaWRsCiAgICAgaHRtbC9jYW52
YXMvV2ViTWV0YWxCdWZmZXIuaWRsCiAgICAgaHRtbC9jYW52YXMvV2ViTWV0YWxDb21tYW5kQnVm
ZmVyLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMTVhNWQ2YmQ5NWU3NmRm
MDEyZDRmNzM4MjZlMDUwZmZmOGVjOTYzNi4uZWQ5NjUzZjhhMTY1MWQyNDNiMTc5MDBiMjc0NzA2
NDk4ZmYxOWM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC03MjYsNiArNzI2
LDcgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvT0VT
VGV4dHVyZUhhbGZGbG9hdExpbmVhci5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMv
T0VTVmVydGV4QXJyYXlPYmplY3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL09m
ZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwgXAorCSQoV2ViQ29yZSkvaHRtbC9j
YW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL1BhdGgyRC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xBY3Rp
dmVJbmZvLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDA0NjNkMTU3OWU0YzYyZDkzMDEyYzA2MTVl
OTMyYmE3NGYxNjNkM2EuLmYzYzI3OTJmOTVkYWIwZmU0YTkxZGExMTgxY2YzYTMzNmUxMDk4Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC00NDMsNiArNDQzLDcgQEAgYmluZGluZ3MvanMvSlNOb2RlQ3Vz
dG9tLmNwcAogYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwCiBiaW5kaW5ncy9q
cy9KU05vZGVMaXN0Q3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNPZmZzY3JlZW5DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwCitiaW5kaW5ncy9qcy9KU1BhaW50UmVuZGVyaW5nQ29u
dGV4dDJEQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnRD
dXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU1BheW1lbnRSZXNwb25zZUN1c3RvbS5jcHAKIGJpbmRp
bmdzL2pzL0pTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAKQEAgLTk2OCw2ICs5NjksNyBAQCBo
dG1sL0J1dHRvbklucHV0VHlwZS5jcHAKIGh0bWwvQ2FudmFzQmFzZS5jcHAKIGh0bWwvQ2hlY2ti
b3hJbnB1dFR5cGUuY3BwCiBodG1sL0NvbG9ySW5wdXRUeXBlLmNwcAoraHRtbC9DdXN0b21QYWlu
dENhbnZhcy5jcHAKIGh0bWwvRE9NRm9ybURhdGEuY3BwCiBodG1sL0RPTVRva2VuTGlzdC5jcHAK
IGh0bWwvRE9NVVJMLmNwcApAQCAtMTEyNiw2ICsxMTI4LDcgQEAgaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKIGh0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAog
aHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAogaHRtbC9jYW52YXMv
T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAoraHRtbC9jYW52YXMvUGFpbnRS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwCiBodG1sL2NhbnZhcy9QYXRoMkQuY3BwCiBodG1sL2NhbnZh
cy9QbGFjZWhvbGRlclJlbmRlcmluZ0NvbnRleHQuY3BwCiBodG1sL2NhbnZhcy9XZWJNZXRhbEJ1
ZmZlci5jcHAKQEAgLTI4NDMsNiArMjg0Niw3IEBAIEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2
ZW50LmNwcAogSlNPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAogSlNPZmZzY3JlZW5DYW52YXMuY3Bw
CiBKU09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKK0pTUGFpbnRSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCiBKU09zY2lsbGF0b3JOb2RlLmNwcAogSlNPdmVyY29uc3RyYWluZWRF
cnJvci5jcHAKIEpTT3ZlcmNvbnN0cmFpbmVkRXJyb3JFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYTE1ZmNmMWRl
ZWMwNGZlYTY0MzZjMzBhNTgxYzZiMmQyNTNhYWVlLi5hMWI5YmMzOWJhYTViOWUwMWJhOTg0Yzli
NjRjODE4YTA5ODAzMGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzQ1LDYgKzEzNDUsOCBAQAogCQk0QTlDQzgyMTE2QkY5
QkI0MDBFQzY0NUEgLyogSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE5Q0M4MUYxNkJGOUJCNDAwRUM2NDVBIC8q
IEluc3BlY3RvckNTU09NV3JhcHBlcnMuaCAqLzsgfTsKIAkJNEFEMDEwMDkxMjdFNjQyQTAwMTUw
MzVGIC8qIEhUTUxPdXRwdXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTAwNjEyN0U2NDJBMDAxNTAzNUYgLyogSFRNTE91dHB1dEVs
ZW1lbnQuaCAqLzsgfTsKIAkJNEFEMDE3M0QxMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1
dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRBRDAxNzNCMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggKi87IH07
CisJCTRCMUUxM0U3MjE3OTBENjYwMDQyQ0Y5OCAvKiBDdXN0b21QYWludENhbnZhcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIxRTEzRTYyMTc5MEQ2
NjAwNDJDRjk4IC8qIEN1c3RvbVBhaW50Q2FudmFzLmggKi87IH07CisJCTRCMUUxM0VCMjE3OTM3
QjMwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIxRTEzRUEyMTc5MzdCMzAwNDJDRjk4IC8q
IFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmggKi87IH07CiAJCTRCMjcwOEM3MEFGMTlFRTQwMDY1
MTI3RiAvKiBQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QjI3MDhDNTBBRjE5RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCMzA0M0NEMEFF
MDM3M0IwMEE4MjY0NyAvKiBFZGl0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRCMzA0M0NCMEFFMDM3M0IwMEE4MjY0NyAvKiBFZGl0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QjM0ODA5NDBF
RUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdl
U291cmNlQ0cuaCAqLzsgfTsKQEAgLTc4ODMsNiArNzg4NSwxMiBAQAogCQk0QUQwMTczQTEyN0U4
Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxPdXRwdXRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNEFEMDE3M0IxMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1
dEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MT3V0cHV0
RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjE3MDY2NDIxNjJCNDJG
MDBFNTc4QkIgLyogQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTRCMUUxM0U2MjE3OTBENjYwMDQyQ0Y5OCAvKiBDdXN0b21QYWludENhbnZh
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21QYWludENhbnZhcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0QjFFMTNFOTIxNzkwRDdFMDA0MkNGOTggLyogQ3VzdG9tUGFpbnRDYW52
YXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3VzdG9tUGFpbnRDYW52YXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0QjFFMTNFQTIxNzkzN0IzMDA0MkNGOTggLyogUGFpbnRS
ZW5kZXJpbmdDb250ZXh0MkQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFpbnRSZW5kZXJpbmdDb250ZXh0
MkQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEIxRTEzRUMyMTc5MzgzODAwNDJD
Rjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
aW50UmVuZGVyaW5nQ29udGV4dDJELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NEIxRTEzRUQyMTc5M0RDMTAwNDJDRjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTRCMUUxM0VFMjE3OTQxMzIwMDQyQ0Y5OCAvKiBKU1BhaW50UmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGFpbnRSZW5kZXJpbmdDb250ZXh0
MkRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjI3MDhDNTBBRjE5
RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCMjcwOTgx
MEFGMkU1RTAwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzdGVib2FyZE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNEIzMDQzQ0EwQUUwMzczQjAwQTgyNjQ3IC8qIEVkaXRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWRpdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NjI4LDYgKzE3NjM2LDkgQEAKIAkJCQkzMTQwQzUxRDFGREYx
NTFBMDBEMkE4NzMgLyogT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCAqLywK
IAkJCQkzMTQwQzUxRTFGREYxNTFBMDBEMkE4NzMgLyogT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmggKi8sCiAJCQkJMzE0MEM1MUIxRkRGMTNEMjAwRDJBODczIC8qIE9mZnNjcmVl
bkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwgKi8sCisJCQkJNEIxRTEzRUMyMTc5MzgzODAw
NDJDRjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcCAqLywKKwkJCQk0QjFFMTNFQTIx
NzkzN0IzMDA0MkNGOTggLyogUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCAqLywKKwkJCQk0QjFF
MTNFRDIxNzkzREMxMDA0MkNGOTggLyogUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsICovLAog
CQkJCTdDMTkzQkE3MUY1RTBFQUYwMDg4RjNFNiAvKiBQYXRoMkQuY3BwICovLAogCQkJCTdDMTkz
QkFCMUY1RTBFQjEwMDg4RjNFNiAvKiBQYXRoMkQuaCAqLywKIAkJCQk3QzE5M0JCNDFGNUUwRUI3
MDA4OEYzRTYgLyogUGF0aDJELmlkbCAqLywKQEAgLTIwMjA1LDYgKzIwMjE2LDcgQEAKIAkJCQlC
Q0Q5QzI2MTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlTGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJ
QUQyMEIxOEMxOEU5RDIxNjAwNUE4MDgzIC8qIEpTTm9kZUxpc3RDdXN0b20uaCAqLywKIAkJCQkz
MTQwQzUyQjFGRTA2QjQ5MDBEMkE4NzMgLyogSlNPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwICovLAorCQkJCTRCMUUxM0VFMjE3OTQxMzIwMDQyQ0Y5OCAvKiBKU1Bh
aW50UmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKIAkJCQlDQjM4RkQ1NTFDRDIxRDVC
MDA1OTJBM0YgLyogSlNQZXJmb3JtYW5jZUVudHJ5Q3VzdG9tLmNwcCAqLywKIAkJCQk4MzNDRjcw
RjIwREIzRjVGMDAxNDFCQ0MgLyogSlNQZXJmb3JtYW5jZU9ic2VydmVyQ3VzdG9tLmNwcCAqLywK
IAkJCQlBNEE2OUI4QkI5MUI0OUQwQTgwNEMzMUQgLyogSlNQcm9taXNlUmVqZWN0aW9uRXZlbnRD
dXN0b20uY3BwICovLApAQCAtMjA3NzEsNiArMjA3ODMsOCBAQAogCQkJCTkzQzQ0MUZGMEY4MTNB
RTEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uVHlwZS5oICovLAogCQkJCUJDMjk5MzVDMTdBMURENTgw
MEJDRTg4MCAvKiBDb2xvcklucHV0VHlwZS5jcHAgKi8sCiAJCQkJRjU1QjNEODAxMjUxRjEyRDAw
M0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmggKi8sCisJCQkJNEIxRTEzRTkyMTc5MEQ3RTAwNDJD
Rjk4IC8qIEN1c3RvbVBhaW50Q2FudmFzLmNwcCAqLywKKwkJCQk0QjFFMTNFNjIxNzkwRDY2MDA0
MkNGOTggLyogQ3VzdG9tUGFpbnRDYW52YXMuaCAqLywKIAkJCQlFNTE3NjcwMjIwQjg4QzE0MDBE
NDExNjcgLyogRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaCAqLywKIAkJCQlGNTVCM0Q4
MTEyNTFGMTJEMDAzRUYyNjkgLyogRGF0ZUlucHV0VHlwZS5jcHAgKi8sCiAJCQkJRjU1QjNEODIx
MjUxRjEyRDAwM0VGMjY5IC8qIERhdGVJbnB1dFR5cGUuaCAqLywKQEAgLTI4MDg5LDYgKzI4MTAz
LDcgQEAKIAkJCQk5M0Q0MzdBMDFENTdCMTlBMDBBQjg1RUEgLyogQ3VzdG9tRWxlbWVudFJlYWN0
aW9uUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCRDRFOTFCMUM0NjJDRkMwMDUwNjVCQyAv
KiBDdXN0b21FbGVtZW50UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTYyQ0QzMjVBMTE1
N0U1N0MwMDYzQjBBNyAvKiBDdXN0b21FdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEIxRTEz
RTcyMTc5MEQ2NjAwNDJDRjk4IC8qIEN1c3RvbVBhaW50Q2FudmFzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0QjdBRTQ5MzIxNzdCNTZGMDBDNTk5NTkgLyogQ3VzdG9tUGFpbnRJbWFnZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThDQjQxM0UwRTg2MzNGRDAwMzJDNEYwIC8qIERhc2hBcnJheS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMEIwQTE5ODlDQTAwN0ZCOEM1IC8qIERhc2hib2FyZFJl
Z2lvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDExNCw2ICszMDEyOSw3IEBACiAJCQkJNTVFQzk1
OTkyMDZBQTdBMDAwN0REMEE5IC8qIFBhaW50RnJlcXVlbmN5VHJhY2tlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDg4NTA2N0YxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50SW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg4NTA2ODAxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50UGhhc2UuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTRCMUUxM0VCMjE3OTM3QjMwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmlu
Z0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRkIwQTE5ODlDQTAwN0ZCOEM1
IC8qIFBhaXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEEzMTJCMDI2RjcwMEMxQTM1OSAv
KiBQYW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDFBMTJCMDI2NzYwMEMxQTM1OSAv
KiBQYW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGFpbnRSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYWludFJlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2I4MTM2ZjMyZjE4YWZlZmMzYWMzMzdmNzA3OTcwOTZkZThjZTI1NgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRSZW5kZXJp
bmdDb250ZXh0MkRDdXN0b20uY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSlNQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oIgorCisjaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK2lu
bGluZSB2b2lkKiByb290KEN1c3RvbVBhaW50Q2FudmFzKiBjYW52YXMpCit7CisgICAgcmV0dXJu
IGNhbnZhczsKK30KKworYm9vbCBKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJET3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2
b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24pCit7CisgICAg
aWYgKFVOTElLRUxZKHJlYXNvbikpCisgICAgICAgICpyZWFzb24gPSAiQ2FudmFzIGlzIG9wYXF1
ZSByb290IjsKKworICAgIEpTUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQqIGpzUGFpbnRSZW5kZXJp
bmdDb250ZXh0ID0ganNDYXN0PEpTUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQqPihoYW5kbGUuc2xv
dCgpLT5hc0NlbGwoKSk7CisgICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoJmpzUGFpbnRS
ZW5kZXJpbmdDb250ZXh0LT53cmFwcGVkKCkuY2FudmFzKCkpOworICAgIHJldHVybiB2aXNpdG9y
LmNvbnRhaW5zT3BhcXVlUm9vdChyb290KTsKK30KKwordm9pZCBKU1BhaW50UmVuZGVyaW5nQ29u
dGV4dDJEOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpLmNhbnZhcygpKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggMDI0OTMwZDE1YzRiNGQw
MjMzMTMxNzhiMTQwNWQ3ODJhNDVmNmQ3MS4uMDA4NWFkN2VmZGJkM2NmOTExMTc5MjVkMGUxNzAz
ODYyMjQ0ZWM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29y
ZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVC
dWlsdGluTmFtZXMuaApAQCAtMTEzLDYgKzExMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBtYWNybyhOYXZpZ2F0b3JVc2VyTWVkaWEpIFwKICAgICBtYWNybyhPZmZzY3JlZW5DYW52YXMp
IFwKICAgICBtYWNybyhPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpIFwKKyAgICBt
YWNybyhQYWludFJlbmRlcmluZ0NvbnRleHQyRCkgXAogICAgIG1hY3JvKFBheW1lbnRBZGRyZXNz
KSBcCiAgICAgbWFjcm8oUGF5bWVudE1ldGhvZENoYW5nZUV2ZW50KSBcCiAgICAgbWFjcm8oUGF5
bWVudFJlcXVlc3QpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENh
bGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oCmluZGV4IGYw
ZWMyYzQ0MTM1YWU0NGNjODkzNTA2ZDg1YTUwNzU5NjNiMjMxMzYuLmYyMWU2NzhiYzkxZmQwYjJi
YjYzZTExYmI1OTU2YzQxYTdmNzA5ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYWludENhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJh
Y2suaApAQCAtMzIsMTMgKzMyLDEzIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0OworY2xhc3Mg
UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ7CiAKIGNsYXNzIENTU1BhaW50Q2FsbGJhY2sgOiBwdWJs
aWMgUmVmQ291bnRlZDxDU1NQYWludENhbGxiYWNrPiwgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNr
IHsKIHB1YmxpYzoKICAgICB1c2luZyBBY3RpdmVET01DYWxsYmFjazo6QWN0aXZlRE9NQ2FsbGJh
Y2s7CiAKLSAgICB2aXJ0dWFsIENhbGxiYWNrUmVzdWx0PHZvaWQ+IGhhbmRsZUV2ZW50KFdlYkdM
UmVuZGVyaW5nQ29udGV4dCYpID0gMDsKKyAgICB2aXJ0dWFsIENhbGxiYWNrUmVzdWx0PHZvaWQ+
IGhhbmRsZUV2ZW50KFBhaW50UmVuZGVyaW5nQ29udGV4dDJEJikgPSAwOwogCiAgICAgdmlydHVh
bCB+Q1NTUGFpbnRDYWxsYmFjaygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2Fs
bGJhY2suaWRsCmluZGV4IDc2ZDliNmM5NWJhMWNmOGQyOTUyYTQ3OWQxYzUzMDc0OTRjYzgwOWMu
LjI5NDE0NzNhMDMwYmM4MWM1ZmI2ZGRkMjNhN2NkOWNmMzEwNTM1YmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKQEAgLTI2LDQgKzI2LDQgQEAKIFsKICAgICBFbmFi
bGVkQXRSdW50aW1lPUNTU1BhaW50aW5nQVBJLAogICAgIENvbmRpdGlvbmFsPUNTU19QQUlOVElO
R19BUEksCi1dIGNhbGxiYWNrIENTU1BhaW50Q2FsbGJhY2sgPSB2b2lkIChXZWJHTFJlbmRlcmlu
Z0NvbnRleHQgY29udGV4dCk7CitdIGNhbGxiYWNrIENTU1BhaW50Q2FsbGJhY2sgPSB2b2lkIChQ
YWludFJlbmRlcmluZ0NvbnRleHQyRCBjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2Uu
Y3BwCmluZGV4IDg1OTM5YjI3NGY1OTBiMDBjYzgzYTM3OTdiNzk5Njk2ZGRkNmE4YzIuLjQwZjhk
YjA1YzlkNDdiODM4YjI1NjhmZmUxOTVhNjRiODM4MzA0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52
YXNCYXNlLmNwcApAQCAtNDEsNiArNDEsNyBAQCBDYW52YXNCYXNlOjpDYW52YXNCYXNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAKIENhbnZhc0Jhc2U6
On5DYW52YXNCYXNlKCkKIHsKKyAgICBBU1NFUlQoIW1fY29udGV4dCk7IC8vIFNob3VsZCBoYXZl
IGJlZW4gc2V0IHRvIG51bGwgYnkgYmFzZSBjbGFzcy4KICAgICBub3RpZnlPYnNlcnZlcnNDYW52
YXNEZXN0cm95ZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52
YXNCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuaAppbmRleCA1ZGZlMjkz
NTJlMTUzNGY2NjIwYzUzNjZiZWI5ODQ0MWExZjQ3MmY3Li5jOTFiNWM5NjAwOTA0NTc3OGNmZTM0
MjMxOGM0YTllZjI5OThmZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZh
c0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuaApAQCAtMzAsOSAr
MzAsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBZmZpbmVUcmFuc2Zvcm07
CiBjbGFzcyBDYW52YXNCYXNlOwogY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNz
IEVsZW1lbnQ7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBJbWFnZTsKK2NsYXNzIElt
YWdlQnVmZmVyOwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CkBAIC01OCw2ICs2Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgYm9vbCBpc0hUTUxDYW52YXNFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNPZmZzY3JlZW5DYW52YXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc0N1c3RvbVBhaW50Q2FudmFzKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgdW5zaWduZWQgd2lkdGgoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdCA9IDA7CkBAIC04MSw2ICs4NiwxOCBAQCBw
dWJsaWM6CiAKICAgICBIYXNoU2V0PEVsZW1lbnQqPiBjc3NDYW52YXNDbGllbnRzKCkgY29uc3Q7
CiAKKyAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCogZHJhd2luZ0NvbnRleHQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQqIGV4aXN0aW5nRHJhd2luZ0NvbnRleHQo
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlbmRlcmluZ1Jlc3VsdHNBdmFp
bGFibGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoY29uc3QgRmxvYXRSZWN0Jikg
PSAwOworCisgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBJbWFnZUJ1ZmZlciogYnVmZmVyKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgSW1hZ2UqIGNvcGllZEltYWdlKCkgY29uc3QgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAg
Q2FudmFzQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9DdXN0b21QYWludENhbnZhcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFhOTgwNTU4MWQ3ZmJhMTIzMmU3
OTlmZTQyNjcwOWQ1OTgwMmJiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCkBAIC0wLDAgKzEsMTU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkN1c3RvbVBhaW50Q2FudmFzLmgiCisKKyNp
ZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkltYWdlQml0bWFwLmgiCisj
aW5jbHVkZSAiUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitSZWY8Q3VzdG9tUGFpbnRDYW52YXM+IEN1c3RvbVBhaW50Q2FudmFzOjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhl
aWdodCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdXN0b21QYWludENhbnZhcyhjb250
ZXh0LCB3aWR0aCwgaGVpZ2h0KSk7Cit9CisKK0N1c3RvbVBhaW50Q2FudmFzOjpDdXN0b21QYWlu
dENhbnZhcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCB3aWR0aCwg
dW5zaWduZWQgaGVpZ2h0KQorICAgIDogQ2FudmFzQmFzZSgmY29udGV4dCkKKyAgICAsIG1fc2l6
ZSh3aWR0aCwgaGVpZ2h0KQoreworfQorCitDdXN0b21QYWludENhbnZhczo6fkN1c3RvbVBhaW50
Q2FudmFzKCkKK3sKKyAgICBtX2NvbnRleHQgPSBudWxscHRyOyAvLyBFbnN1cmUgdGhpcyBnb2Vz
IGF3YXkgYmVmb3JlIHRoZSBJbWFnZUJ1ZmZlci4KK30KKwordW5zaWduZWQgQ3VzdG9tUGFpbnRD
YW52YXM6OndpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplLndpZHRoKCk7Cit9CisK
K3ZvaWQgQ3VzdG9tUGFpbnRDYW52YXM6OnNldFdpZHRoKHVuc2lnbmVkIG5ld1dpZHRoKQorewor
ICAgIHJldHVybiBtX3NpemUuc2V0V2lkdGgobmV3V2lkdGgpOworfQorCit1bnNpZ25lZCBDdXN0
b21QYWludENhbnZhczo6aGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaXplLmhlaWdo
dCgpOworfQorCit2b2lkIEN1c3RvbVBhaW50Q2FudmFzOjpzZXRIZWlnaHQodW5zaWduZWQgbmV3
SGVpZ2h0KQoreworICAgIHJldHVybiBtX3NpemUuc2V0SGVpZ2h0KG5ld0hlaWdodCk7Cit9CisK
K2NvbnN0IEludFNpemUmIEN1c3RvbVBhaW50Q2FudmFzOjpzaXplKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9zaXplOworfQorCit2b2lkIEN1c3RvbVBhaW50Q2FudmFzOjpzZXRTaXplKGNvbnN0
IEludFNpemUmIG5ld1NpemUpCit7CisgICAgbV9zaXplID0gbmV3U2l6ZTsKK30KKworRXhjZXB0
aW9uT3I8UmVmUHRyPFBhaW50UmVuZGVyaW5nQ29udGV4dDJEPj4gQ3VzdG9tUGFpbnRDYW52YXM6
OmdldENvbnRleHQoKQoreworICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgIHJldHVybiB7IFJl
ZlB0cjxQYWludFJlbmRlcmluZ0NvbnRleHQyRD4geyAmZG93bmNhc3Q8UGFpbnRSZW5kZXJpbmdD
b250ZXh0MkQ+KCptX2NvbnRleHQpIH0gfTsKKworICAgIG1fY29udGV4dCA9IFBhaW50UmVuZGVy
aW5nQ29udGV4dDJEOjpjcmVhdGUoKnRoaXMpOworCisgICAgcmV0dXJuIHsgUmVmUHRyPFBhaW50
UmVuZGVyaW5nQ29udGV4dDJEPiB7ICZkb3duY2FzdDxQYWludFJlbmRlcmluZ0NvbnRleHQyRD4o
Km1fY29udGV4dCkgfSB9OworfQorCitJbWFnZUJ1ZmZlciogQ3VzdG9tUGFpbnRDYW52YXM6OmJ1
ZmZlcigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlcikKKyAgICAg
ICAgY3JlYXRlSW1hZ2VCdWZmZXIoKTsKKyAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsK
K30KKworSW1hZ2UqIEN1c3RvbVBhaW50Q2FudmFzOjpjb3BpZWRJbWFnZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKGJ1ZmZlcigpKSB7CisgICAgICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgICAgICBt
X2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCk7CisgICAgICAgIG1fY29w
aWVkSW1hZ2UgPSBidWZmZXIoKS0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZl
UmVzb2x1dGlvbjo6WWVzKTsKKyAgICB9CisgICAgcmV0dXJuIG1fY29waWVkSW1hZ2UuZ2V0KCk7
Cit9CisKK0dyYXBoaWNzQ29udGV4dCogQ3VzdG9tUGFpbnRDYW52YXM6OmRyYXdpbmdDb250ZXh0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYnVmZmVyKCkgPyAmbV9pbWFnZUJ1ZmZlci0+Y29udGV4
dCgpIDogbnVsbHB0cjsKK30KKworR3JhcGhpY3NDb250ZXh0KiBDdXN0b21QYWludENhbnZhczo6
ZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc0NyZWF0ZWRJ
bWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gZHJhd2lu
Z0NvbnRleHQoKTsKK30KKwordm9pZCBDdXN0b21QYWludENhbnZhczo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoKSBjb25zdAoreworICAgIEFTU0VSVCghbV9pbWFnZUJ1ZmZlcik7CisgICAgbV9oYXNDcmVh
dGVkSW1hZ2VCdWZmZXIgPSBmYWxzZTsKKworICAgIGlmICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IFVu
YWNjZWxlcmF0ZWQ7CisKKyAgICBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUoKSwgcmVuZGVyaW5nTW9kZSwgMSwgQ29sb3JTcGFjZVNSR0IsIG51bGxwdHIpKTsKKyAgICBp
ZiAoIW1faW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybjsKKyAgICBtX2ltYWdlQnVmZmVyLT5j
b250ZXh0KCkuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXModHJ1ZSk7CisgICAgbV9pbWFnZUJ1
ZmZlci0+Y29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxKTsKKworICAgIG1faGFzQ3JlYXRl
ZEltYWdlQnVmZmVyID0gdHJ1ZTsKK30KKwordm9pZCBDdXN0b21QYWludENhbnZhczo6c2V0SW1h
Z2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikgY29uc3QKK3sK
KyAgICBtX2ltYWdlQnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgIGlmIChtX2ltYWdlQnVm
ZmVyICYmIG1fc2l6ZSAhPSBtX2ltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKSkKKyAgICAgICAg
bV9zaXplID0gbV9pbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCk7CisgICAgZWxzZSBpZiAoIW1f
aW1hZ2VCdWZmZXIpCisgICAgICAgIG1fc2l6ZSA9IEludFNpemUoKTsKK30KKwordm9pZCBDdXN0
b21QYWludENhbnZhczo6bWFrZVJlbmRlcmluZ1Jlc3VsdHNBdmFpbGFibGUoKQoreworICAgIGlm
IChtX2NvbnRleHQpCisgICAgICAgIG1fY29udGV4dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9D
YW52YXMoKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0N1c3RvbVBhaW50Q2FudmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2Fu
dmFzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTIzZDgzYTQ4ZmEwOTJkY2Q0MmIxN2ViNzg1NTM3NzMzN2I2ODAz
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52
YXMuaApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKKworI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgor
I2luY2x1ZGUgIkNhbnZhc0Jhc2UuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1
ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJ
bnRTaXplLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJT
Y3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW1hZ2VCaXRtYXA7CitjbGFzcyBQYWludFJlbmRlcmlu
Z0NvbnRleHQyRDsKKworY2xhc3MgQ3VzdG9tUGFpbnRDYW52YXMgZmluYWwgOiBwdWJsaWMgUmVm
Q291bnRlZDxDdXN0b21QYWludENhbnZhcz4sIHB1YmxpYyBDYW52YXNCYXNlIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKworICAgIHN0YXRpYyBSZWY8Q3VzdG9tUGFp
bnRDYW52YXM+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgdW5zaWduZWQgd2lkdGgs
IHVuc2lnbmVkIGhlaWdodCk7CisgICAgdmlydHVhbCB+Q3VzdG9tUGFpbnRDYW52YXMoKTsKKyAg
ICBib29sIGlzQ3VzdG9tUGFpbnRDYW52YXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CisKKyAgICB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0V2lkdGgo
dW5zaWduZWQpOworICAgIHVuc2lnbmVkIGhlaWdodCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQg
c2V0SGVpZ2h0KHVuc2lnbmVkKTsKKworICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBjb25zdCBm
aW5hbDsKKyAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOworCisgICAgRXhj
ZXB0aW9uT3I8UmVmUHRyPFBhaW50UmVuZGVyaW5nQ29udGV4dDJEPj4gZ2V0Q29udGV4dCgpOwor
CisgICAgR3JhcGhpY3NDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIGNvbnN0IGZpbmFsOworICAg
IEdyYXBoaWNzQ29udGV4dCogZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpIGNvbnN0IGZpbmFsOwor
CisgICAgdm9pZCBtYWtlUmVuZGVyaW5nUmVzdWx0c0F2YWlsYWJsZSgpIGZpbmFsOworICAgIHZv
aWQgZGlkRHJhdyhjb25zdCBGbG9hdFJlY3QmKSBmaW5hbCB7IH0KKworICAgIEFmZmluZVRyYW5z
Zm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgZmluYWwgeyBBU1NFUlQobV9oYXNDcmVhdGVkSW1h
Z2VCdWZmZXIpOyByZXR1cm4gbV9pbWFnZUJ1ZmZlci0+YmFzZVRyYW5zZm9ybSgpOyB9CisKKyAg
ICBib29sIGhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faGFz
Q3JlYXRlZEltYWdlQnVmZmVyOyB9CisgICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IGZp
bmFsOworICAgIEltYWdlKiBjb3BpZWRJbWFnZSgpIGNvbnN0IGZpbmFsOworCisgICAgdXNpbmcg
UmVmQ291bnRlZDo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOworCitwcml2YXRl
OgorICAgIEN1c3RvbVBhaW50Q2FudmFzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCB1bnNpZ25l
ZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKKworICAgIHZvaWQgcmVmQ2FudmFzQmFzZSgpIGZp
bmFsIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmQ2FudmFzQmFzZSgpIGZpbmFsIHsgZGVyZWYo
KTsgfQorCisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgc2V0
SW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmKSBjb25zdDsKKworICAg
IG11dGFibGUgSW50U2l6ZSBtX3NpemU7CisgICAgbXV0YWJsZSBib29sIG1faGFzQ3JlYXRlZElt
YWdlQnVmZmVyIHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxJbWFnZT4gbV9jb3BpZWRJ
bWFnZTsKK307CisKK30KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FOVkFTKFdlYkNvcmU6OkN1
c3RvbVBhaW50Q2FudmFzLCBpc0N1c3RvbVBhaW50Q2FudmFzKCkpCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCAyZGY5YzBiMzBmNTYwNmQ4YmVlNmMx
YzgxODc3OWM2YjFlNDhlODhjLi4zNGNiZmVhYmNjMDE5NTYxOTQwNmMyMzczY2UwMmJkNzY2NzUy
NTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCkBAIC0xMTIsMjAg
KzExMiwyMCBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gdG9CbG9iKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBSZWY8QmxvYkNhbGxiYWNrPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBKU0M6OkpTVmFsdWUgcXVhbGl0eSk7CiAKICAgICAvLyBVc2VkIGZvciByZW5kZXJpbmcK
LSAgICB2b2lkIGRpZERyYXcoY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBkaWREcmF3KGNv
bnN0IEZsb2F0UmVjdCYpIGZpbmFsOwogCiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBMYXlvdXRSZWN0Jik7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250
ZXh0KCkgY29uc3Q7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBleGlzdGluZ0RyYXdpbmdDb250ZXh0
KCkgY29uc3Q7CisgICAgR3JhcGhpY3NDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIGNvbnN0IGZp
bmFsOworICAgIEdyYXBoaWNzQ29udGV4dCogZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpIGNvbnN0
IGZpbmFsOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8TWVkaWFTYW1w
bGU+IHRvTWVkaWFTYW1wbGUoKTsKICAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW0+PiBj
YXB0dXJlU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4mJiBmcmFtZVJlcXVlc3RSYXRlKTsKICNlbmRpZgogCi0gICAgSW1hZ2VCdWZmZXIqIGJ1ZmZl
cigpIGNvbnN0OwotICAgIEltYWdlKiBjb3BpZWRJbWFnZSgpIGNvbnN0OworICAgIEltYWdlQnVm
ZmVyKiBidWZmZXIoKSBjb25zdCBmaW5hbDsKKyAgICBJbWFnZSogY29waWVkSW1hZ2UoKSBjb25z
dCBmaW5hbDsKICAgICB2b2lkIGNsZWFyQ29waWVkSW1hZ2UoKTsKICAgICBSZWZQdHI8SW1hZ2VE
YXRhPiBnZXRJbWFnZURhdGEoKTsKICAgICB2b2lkIG1ha2VQcmVzZW50YXRpb25Db3B5KCk7CkBA
IC0xMzMsMTAgKzEzMywxMCBAQCBwdWJsaWM6CiAKICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJp
dHlPcmlnaW4oKSBjb25zdCBmaW5hbDsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNm
b3JtKCkgY29uc3Q7CisgICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCBm
aW5hbDsKIAotICAgIHZvaWQgbWFrZVJlbmRlcmluZ1Jlc3VsdHNBdmFpbGFibGUoKTsKLSAgICBi
b29sIGhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ3JlYXRlZElt
YWdlQnVmZmVyOyB9CisgICAgdm9pZCBtYWtlUmVuZGVyaW5nUmVzdWx0c0F2YWlsYWJsZSgpIGZp
bmFsOworICAgIGJvb2wgaGFzQ3JlYXRlZEltYWdlQnVmZmVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXI7IH0KIAogICAgIGJvb2wgc2hvdWxkQWNjZWxlcmF0
ZShjb25zdCBJbnRTaXplJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvT2Zmc2NyZWVuQ2FudmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZh
cy5oCmluZGV4IGMyNzJlZDZlOTk5ZjhjMDIwOWI0NzRiNjc2YTg0MGRhMGU2ODkyNmMuLmJkYTFj
MGZhODJiMDk5NzMxMDdjOGY4MmVmMGQzNDBkMDM3OGY5YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9P
ZmZzY3JlZW5DYW52YXMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkNhbnZhc0Jhc2UuaCIKICNpbmNs
dWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCkBAIC03NSw2ICs3
NiwxOCBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEltYWdlQml0bWFwPiB0cmFuc2ZlclRvSW1hZ2VC
aXRtYXAoKTsKICAgICAvLyB2b2lkIGNvbnZlcnRUb0Jsb2IoSW1hZ2VFbmNvZGVPcHRpb25zIG9w
dGlvbnMpOwogCisgICAgR3JhcGhpY3NDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBHcmFwaGljc0NvbnRleHQqIGV4aXN0aW5nRHJh
d2luZ0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICB2b2lk
IG1ha2VSZW5kZXJpbmdSZXN1bHRzQXZhaWxhYmxlKCkgZmluYWwgeyB9CisgICAgdm9pZCBkaWRE
cmF3KGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsIHsgfQorCisgICAgQWZmaW5lVHJhbnNmb3JtIGJh
c2VUcmFuc2Zvcm0oKSBjb25zdCBmaW5hbCB7IHJldHVybiB7IH07IH0KKworICAgIGJvb2wgaGFz
Q3JlYXRlZEltYWdlQnVmZmVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBJ
bWFnZUJ1ZmZlciogYnVmZmVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorICAg
IEltYWdlKiBjb3BpZWRJbWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKwog
ICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmNwcAppbmRleCBjMzQ2MTAyMTVlNTY5ZmU3YWExMTljYTUyMTZhN2Q4M2UxNTU2MjI5
Li4zMzYxNDM4ZjFlZjIzMzY5OWQwZWRhMzUyMWMwNTZkZTY3YmFlZDI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcApA
QCAtNjEsNyArNjEsNyBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRP
cmlnaW4oY29uc3QgQ2FudmFzUGF0dGVybiogcGF0dGVybikKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBI
VE1MQ2FudmFzRWxlbWVudCogc291cmNlQ2FudmFzKQorYm9vbCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IENhbnZhc0Jhc2UqIHNvdXJjZUNhbnZhcykKIHsK
ICAgICBpZiAobV9jYW52YXMub3JpZ2luQ2xlYW4oKSAmJiBzb3VyY2VDYW52YXMgJiYgIXNvdXJj
ZUNhbnZhcy0+b3JpZ2luQ2xlYW4oKSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXgg
MmQyZDg4NzU3OTAxOGQwZmFmZGFhZGZhZTZkMjJjMWViMzkwNDFlMi4uZjAwNzFjMmNlMmY0MDgw
NzI5ODNiMGM1YjM2NTEyYTU3NjUyYWQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGlzQml0bWFwUmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1BsYWNlaG9sZGVyKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNPZmZzY3JlZW4yZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzUGFpbnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkg
e30KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiAwOyB9CkBAIC03Myw3ICs3NCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBleHBs
aWNpdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmKTsKICAgICBib29sIHdvdWxk
VGFpbnRPcmlnaW4oY29uc3QgQ2FudmFzUGF0dGVybiopOwotICAgIGJvb2wgd291bGRUYWludE9y
aWdpbihjb25zdCBIVE1MQ2FudmFzRWxlbWVudCopOworICAgIGJvb2wgd291bGRUYWludE9yaWdp
bihjb25zdCBDYW52YXNCYXNlKik7CiAgICAgYm9vbCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEhU
TUxJbWFnZUVsZW1lbnQqKTsKICAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTFZp
ZGVvRWxlbWVudCopOwogICAgIGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBJbWFnZUJpdG1h
cCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCAxNDRlNjhkZWNjNTZiOTZjNTU5OGJjYjk4
OTUxZTczOWRkMTc5ZmI3Li4wMDVjYzcwNGI2YmU5ODdjMTliYzNlMTMxNjdkOTI2Yzg0MjYxMjMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMTQ2LDggKzE0Niw3IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6dW53aW5kU3RhdGVTdGFjaygpCiAgICAgLy8gaXMgY2xl
YXJlZCBiZWZvcmUgZGVzdHJ1Y3Rpb24sIHRvIGF2b2lkIGFzc2VydGlvbnMgaW4gdGhlCiAgICAg
Ly8gR3JhcGhpY3NDb250ZXh0IGR0b3IuCiAgICAgaWYgKHNpemVfdCBzdGFja1NpemUgPSBtX3N0
YXRlU3RhY2suc2l6ZSgpKSB7Ci0gICAgICAgIGF1dG8mIGNhbnZhcyA9IGRvd25jYXN0PEhUTUxD
YW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwotICAgICAgICBpZiAoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0ID0gY2FudmFzLmV4aXN0aW5nRHJhd2luZ0NvbnRleHQoKSkgeworICAgICAgICBp
ZiAoYXV0byogY29udGV4dCA9IGNhbnZhc0Jhc2UoKS5leGlzdGluZ0RyYXdpbmdDb250ZXh0KCkp
IHsKICAgICAgICAgICAgIHdoaWxlICgtLXN0YWNrU2l6ZSkKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgIH0KQEAgLTE2Nyw4ICsxNjYsNyBAQCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjp+Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZSgpCiBib29s
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmlzQWNjZWxlcmF0ZWQoKSBjb25zdAogewog
I2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpIHx8IEVOQUJMRShBQ0NFTEVS
QVRFRF8yRF9DQU5WQVMpCi0gICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0Vs
ZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7Ci0gICAgaWYgKCFjYW52YXMuaGFzQ3JlYXRlZEltYWdlQnVm
ZmVyKCkpCisgICAgaWYgKCFjYW52YXNCYXNlKCkuaGFzQ3JlYXRlZEltYWdlQnVmZmVyKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhdXRvKiBjb250ZXh0ID0gZHJhd2luZ0NvbnRleHQo
KTsKICAgICByZXR1cm4gY29udGV4dCAmJiBjb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgp
OwpAQCAtNDAxLDkgKzM5OSw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
c2V0U3Ryb2tlU3R5bGUoQ2FudmFzU3R5bGUgc3R5bGUpCiAgICAgaWYgKHN0YXRlKCkuc3Ryb2tl
U3R5bGUuaXNWYWxpZCgpICYmIHN0YXRlKCkuc3Ryb2tlU3R5bGUuaXNFcXVpdmFsZW50Q29sb3Io
c3R5bGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxI
VE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKKyAgICBpZiAoc3R5bGUuaXNDdXJyZW50
Q29sb3IoKSAmJiBpczxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKSkgeworICAgICAg
ICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgp
KTsKIAotICAgIGlmIChzdHlsZS5pc0N1cnJlbnRDb2xvcigpKSB7CiAgICAgICAgIGlmIChzdHls
ZS5oYXNPdmVycmlkZUFscGhhKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgbm90
IHVzZSBSR0JBMzIgaGVyZS4KICAgICAgICAgICAgIHN0eWxlID0gQ2FudmFzU3R5bGUoY29sb3JX
aXRoT3ZlcnJpZGVBbHBoYShjdXJyZW50Q29sb3IoJmNhbnZhcykucmdiKCksIHN0eWxlLm92ZXJy
aWRlQWxwaGEoKSkpOwpAQCAtNDMwLDkgKzQyOCw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6c2V0RmlsbFN0eWxlKENhbnZhc1N0eWxlIHN0eWxlKQogICAgIGlmIChzdGF0
ZSgpLmZpbGxTdHlsZS5pc1ZhbGlkKCkgJiYgc3RhdGUoKS5maWxsU3R5bGUuaXNFcXVpdmFsZW50
Q29sb3Ioc3R5bGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBjYW52YXMgPSBkb3du
Y2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKKyAgICBpZiAoc3R5bGUuaXND
dXJyZW50Q29sb3IoKSAmJiBpczxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKSkgewor
ICAgICAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFz
QmFzZSgpKTsKIAotICAgIGlmIChzdHlsZS5pc0N1cnJlbnRDb2xvcigpKSB7CiAgICAgICAgIGlm
IChzdHlsZS5oYXNPdmVycmlkZUFscGhhKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91
bGQgbm90IHVzZSBSR0JBMzIgaGVyZS4KICAgICAgICAgICAgIHN0eWxlID0gQ2FudmFzU3R5bGUo
Y29sb3JXaXRoT3ZlcnJpZGVBbHBoYShjdXJyZW50Q29sb3IoJmNhbnZhcykucmdiKCksIHN0eWxl
Lm92ZXJyaWRlQWxwaGEoKSkpOwpAQCAtOTI4LDggKzkyNiw3IEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6cmVzZXRUcmFuc2Zvcm0oKQogCiAgICAgcmVhbGl6ZVNhdmVzKCk7
CiAKLSAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFz
QmFzZSgpKTsKLSAgICBjLT5zZXRDVE0oY2FudmFzLmJhc2VUcmFuc2Zvcm0oKSk7CisgICAgYy0+
c2V0Q1RNKGNhbnZhc0Jhc2UoKS5iYXNlVHJhbnNmb3JtKCkpOwogICAgIG1vZGlmaWFibGVTdGF0
ZSgpLnRyYW5zZm9ybSA9IEFmZmluZVRyYW5zZm9ybSgpOwogCiAgICAgaWYgKGhhc0ludmVydGli
bGVUcmFuc2Zvcm0pCkBAIC0xNTY1LDcgKzE1NjIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoSFRNTEltYWdlRWxlbWVudCYgaW1h
ZwogICAgIHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCYgc291cmNlQ2FudmFz
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKK0V4
Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZShD
YW52YXNCYXNlJiBzb3VyY2VDYW52YXMsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0KQogewogICAgIEZsb2F0UmVjdCBzcmNDYW52YXNSZWN0ID0gRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc291cmNlQ2FudmFzLnNpemUoKSk7CiAKQEAgLTE3MjcsMTgg
KzE3MjQsMTYgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjbGVhckNhbnZh
cygpCiAgICAgICAgIHJldHVybjsKIAogICAgIGMtPnNhdmUoKTsKLSAgICBhdXRvJiBjYW52YXMg
PSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKLSAgICBjLT5zZXRD
VE0oY2FudmFzLmJhc2VUcmFuc2Zvcm0oKSk7Ci0gICAgYy0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgw
LCAwLCBjYW52YXMud2lkdGgoKSwgY2FudmFzLmhlaWdodCgpKSk7CisgICAgYy0+c2V0Q1RNKGNh
bnZhc0Jhc2UoKS5iYXNlVHJhbnNmb3JtKCkpOworICAgIGMtPmNsZWFyUmVjdChGbG9hdFJlY3Qo
MCwgMCwgY2FudmFzQmFzZSgpLndpZHRoKCksIGNhbnZhc0Jhc2UoKS5oZWlnaHQoKSkpOwogICAg
IGMtPnJlc3RvcmUoKTsKIH0KIAogUGF0aCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp0
cmFuc2Zvcm1BcmVhVG9EZXZpY2UoY29uc3QgUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICBQYXRo
IHRyYW5zZm9ybWVkKHBhdGgpOwotICAgIGF1dG8mIGNhbnZhcyA9IGRvd25jYXN0PEhUTUxDYW52
YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwogICAgIHRyYW5zZm9ybWVkLnRyYW5zZm9ybShzdGF0
ZSgpLnRyYW5zZm9ybSk7Ci0gICAgdHJhbnNmb3JtZWQudHJhbnNmb3JtKGNhbnZhcy5iYXNlVHJh
bnNmb3JtKCkpOworICAgIHRyYW5zZm9ybWVkLnRyYW5zZm9ybShjYW52YXNCYXNlKCkuYmFzZVRy
YW5zZm9ybSgpKTsKICAgICByZXR1cm4gdHJhbnNmb3JtZWQ7CiB9CiAKQEAgLTE3NTIsMTcgKzE3
NDcsMTQgQEAgUGF0aCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp0cmFuc2Zvcm1BcmVh
VG9EZXZpY2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogYm9vbCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpyZWN0Q29udGFpbnNDYW52YXMoY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25z
dAogewogICAgIEZsb2F0UXVhZCBxdWFkKHJlY3QpOwotICAgIGF1dG8mIGNhbnZhcyA9IGRvd25j
YXN0PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwotICAgIEZsb2F0UXVhZCBjYW52
YXNRdWFkKEZsb2F0UmVjdCgwLCAwLCBjYW52YXMud2lkdGgoKSwgY2FudmFzLmhlaWdodCgpKSk7
CisgICAgRmxvYXRRdWFkIGNhbnZhc1F1YWQoRmxvYXRSZWN0KDAsIDAsIGNhbnZhc0Jhc2UoKS53
aWR0aCgpLCBjYW52YXNCYXNlKCkuaGVpZ2h0KCkpKTsKICAgICByZXR1cm4gc3RhdGUoKS50cmFu
c2Zvcm0ubWFwUXVhZChxdWFkKS5jb250YWluc1F1YWQoY2FudmFzUXVhZCk7CiB9CiAKIHRlbXBs
YXRlPGNsYXNzIFQ+IEludFJlY3QgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y2FsY3Vs
YXRlQ29tcG9zaXRpbmdCdWZmZXJSZWN0KGNvbnN0IFQmIGFyZWEsIEludFNpemUqIGNyb3BwZWRP
ZmZzZXQpCiB7Ci0gICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+
KGNhbnZhc0Jhc2UoKSk7Ci0KLSAgICBJbnRSZWN0IGNhbnZhc1JlY3QoMCwgMCwgY2FudmFzLndp
ZHRoKCksIGNhbnZhcy5oZWlnaHQoKSk7Ci0gICAgY2FudmFzUmVjdCA9IGNhbnZhcy5iYXNlVHJh
bnNmb3JtKCkubWFwUmVjdChjYW52YXNSZWN0KTsKKyAgICBJbnRSZWN0IGNhbnZhc1JlY3QoMCwg
MCwgY2FudmFzQmFzZSgpLndpZHRoKCksIGNhbnZhc0Jhc2UoKS5oZWlnaHQoKSk7CisgICAgY2Fu
dmFzUmVjdCA9IGNhbnZhc0Jhc2UoKS5iYXNlVHJhbnNmb3JtKCkubWFwUmVjdChjYW52YXNSZWN0
KTsKICAgICBQYXRoIHBhdGggPSB0cmFuc2Zvcm1BcmVhVG9EZXZpY2UoYXJlYSk7CiAgICAgSW50
UmVjdCBidWZmZXJSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChwYXRoLmZhc3RCb3VuZGluZ1JlY3Qo
KSk7CiAgICAgSW50UG9pbnQgb3JpZ2luYWxMb2NhdGlvbiA9IGJ1ZmZlclJlY3QubG9jYXRpb24o
KTsKQEAgLTE3NzksOSArMTc3MSw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlQ29tcG9zaXRpbmdCdWZmCiAKIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y29tcG9zaXRlQnVmZmVyKEltYWdlQnVmZmVy
JiBidWZmZXIsIGNvbnN0IEludFJlY3QmIGJ1ZmZlclJlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
KQogewotICAgIGF1dG8mIGNhbnZhcyA9IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihjYW52
YXNCYXNlKCkpOwotICAgIEludFJlY3QgY2FudmFzUmVjdCgwLCAwLCBjYW52YXMud2lkdGgoKSwg
Y2FudmFzLmhlaWdodCgpKTsKLSAgICBjYW52YXNSZWN0ID0gY2FudmFzLmJhc2VUcmFuc2Zvcm0o
KS5tYXBSZWN0KGNhbnZhc1JlY3QpOworICAgIEludFJlY3QgY2FudmFzUmVjdCgwLCAwLCBjYW52
YXNCYXNlKCkud2lkdGgoKSwgY2FudmFzQmFzZSgpLmhlaWdodCgpKTsKKyAgICBjYW52YXNSZWN0
ID0gY2FudmFzQmFzZSgpLmJhc2VUcmFuc2Zvcm0oKS5tYXBSZWN0KGNhbnZhc1JlY3QpOwogCiAg
ICAgYXV0byogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFjKQpAQCAtMTk0Niw3ICsx
OTM3LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKEgKICAgICByZXR1cm4gUmVmUHRyPENhbnZh
c1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKCpjYWNoZWRJbWFnZS0+aW1hZ2VGb3JS
ZW5kZXJlcihpbWFnZUVsZW1lbnQucmVuZGVyZXIoKSksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdp
bkNsZWFuKSB9OwogfQogCi1FeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSFRNTENhbnZhc0VsZW1lbnQm
IGNhbnZhcywgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCitFeGNlcHRpb25PcjxSZWZQdHI8
Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRl
cm4oQ2FudmFzQmFzZSYgY2FudmFzLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSkKIHsKICAg
ICBpZiAoIWNhbnZhcy53aWR0aCgpIHx8ICFjYW52YXMuaGVpZ2h0KCkgfHwgIWNhbnZhcy5idWZm
ZXIoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CkBA
IC0xOTg4LDggKzE5NzksNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSQogCiB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRpZERyYXdFbnRpcmVDYW52YXMoKQogewotICAgIGF1
dG8mIGNhbnZhcyA9IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwot
ICAgIGRpZERyYXcoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFzLnNpemUoKSks
IENhbnZhc0RpZERyYXdBcHBseUNsaXApOworICAgIGRpZERyYXcoRmxvYXRSZWN0KEZsb2F0UG9p
bnQ6Onplcm8oKSwgY2FudmFzQmFzZSgpLnNpemUoKSksIENhbnZhc0RpZERyYXdBcHBseUNsaXAp
OwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRpZERyYXcoY29uc3Qg
RmxvYXRSZWN0JiByLCB1bnNpZ25lZCBvcHRpb25zKQpAQCAtMjAzNCw4ICsyMDI0LDcgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYg
ciwgdW5zaWduZWQgb3B0aW9ucykKICAgICAgICAgLy8gd2UnZCBoYXZlIHRvIGtlZXAgdGhlIGNs
aXAgcGF0aCBhcm91bmQuCiAgICAgfQogCi0gICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRN
TENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7Ci0gICAgY2FudmFzLmRpZERyYXcoZGlydHlS
ZWN0KTsKKyAgICBjYW52YXNCYXNlKCkuZGlkRHJhdyhkaXJ0eVJlY3QpOwogfQogCiB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFRyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KGJv
b2wgdHJhY2tzRGlzcGxheUxpc3RSZXBsYXkpCkBAIC0yMDc1LDEwICsyMDY0LDggQEAgdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cygpCiAgICAgICAgIGlmICghbV9yZWNvcmRpbmdDb250ZXh0KQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGF1dG8mIGNhbnZhcyA9IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50Pihj
YW52YXNCYXNlKCkpOwotCi0gICAgICAgIEZsb2F0UmVjdCBjbGlwKEZsb2F0UG9pbnQ6Onplcm8o
KSwgY2FudmFzLnNpemUoKSk7Ci0gICAgICAgIERpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXll
cigqY2FudmFzLmRyYXdpbmdDb250ZXh0KCksIG1fcmVjb3JkaW5nQ29udGV4dC0+ZGlzcGxheUxp
c3QpOworICAgICAgICBGbG9hdFJlY3QgY2xpcChGbG9hdFBvaW50Ojp6ZXJvKCksIGNhbnZhc0Jh
c2UoKS5zaXplKCkpOworICAgICAgICBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIoKmNh
bnZhc0Jhc2UoKS5kcmF3aW5nQ29udGV4dCgpLCBtX3JlY29yZGluZ0NvbnRleHQtPmRpc3BsYXlM
aXN0KTsKIAogICAgICAgICBpZiAoVU5MSUtFTFkobV90cmFja3NEaXNwbGF5TGlzdFJlcGxheSkp
IHsKICAgICAgICAgICAgIGF1dG8gcmVwbGF5TGlzdCA9IHJlcGxheWVyLnJlcGxheShjbGlwLCBt
X3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KTsKQEAgLTIwOTIsMTQgKzIwNzksMTMgQEAgdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cygpCiAKIEdyYXBoaWNzQ29udGV4dCogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJh
d2luZ0NvbnRleHQoKSBjb25zdAogewotICAgIGF1dG8mIGNhbnZhcyA9IGRvd25jYXN0PEhUTUxD
YW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwogICAgIGlmIChVTkxJS0VMWShtX3VzZXNEaXNw
bGF5TGlzdERyYXdpbmcpKSB7CiAgICAgICAgIGlmICghbV9yZWNvcmRpbmdDb250ZXh0KQotICAg
ICAgICAgICAgbV9yZWNvcmRpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0PigqY2FudmFzLmRyYXdpbmdDb250ZXh0KCksIEZsb2F0UmVjdChGbG9h
dFBvaW50Ojp6ZXJvKCksIGNhbnZhcy5zaXplKCkpKTsKKyAgICAgICAgICAgIG1fcmVjb3JkaW5n
Q29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dD4oKmNh
bnZhc0Jhc2UoKS5kcmF3aW5nQ29udGV4dCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygp
LCBjYW52YXNCYXNlKCkuc2l6ZSgpKSk7CiAgICAgICAgIHJldHVybiAmbV9yZWNvcmRpbmdDb250
ZXh0LT5jb250ZXh0OwogICAgIH0KIAotICAgIHJldHVybiBjYW52YXMuZHJhd2luZ0NvbnRleHQo
KTsKKyAgICByZXR1cm4gY2FudmFzQmFzZSgpLmRyYXdpbmdDb250ZXh0KCk7CiB9CiAKIHN0YXRp
YyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGVFbXB0eUltYWdlRGF0YShjb25zdCBJbnRTaXplJiBz
aXplKQpAQCAtMjE2Nyw5ICsyMTUzLDggQEAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmdldEltYWdlRGF0YShJbWFnZUIKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBJbnRSZWN0IGltYWdlRGF0YVJlY3QgPSBlbmNsb3Np
bmdJbnRSZWN0KGxvZ2ljYWxSZWN0KTsKLSAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1M
Q2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKIAotICAgIEltYWdlQnVmZmVyKiBidWZmZXIg
PSBjYW52YXMuYnVmZmVyKCk7CisgICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlciA9IGNhbnZhc0Jhc2Uo
KS5idWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNyZWF0ZUVtcHR5
SW1hZ2VEYXRhKGltYWdlRGF0YVJlY3Quc2l6ZSgpKTsKIApAQCAtMjIwMCw5ICsyMTg1LDcgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwdXRJbWFnZURhdGEoSW1hZ2VEYXRh
JiBkYXRhLCBmbG9hdCBkeCwgZmxvYXQKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpwdXRJbWFnZURhdGEoSW1hZ2VEYXRhJiBkYXRhLCBJbWFnZUJ1ZmZlcjo6Q29vcmRpbmF0
ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtLCBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGRpcnR5
WCwgZmxvYXQgZGlydHlZLCBmbG9hdCBkaXJ0eVdpZHRoLCBmbG9hdCBkaXJ0eUhlaWdodCkKIHsK
LSAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFz
ZSgpKTsKLQotICAgIEltYWdlQnVmZmVyKiBidWZmZXIgPSBjYW52YXMuYnVmZmVyKCk7CisgICAg
SW1hZ2VCdWZmZXIqIGJ1ZmZlciA9IGNhbnZhc0Jhc2UoKS5idWZmZXIoKTsKICAgICBpZiAoIWJ1
ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjU1LDkgKzIyMzgsNyBAQCB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmluZmxhdGVTdHJva2VSZWN0KEZsb2F0UmVjdCYgcmVj
dCkgY29uc3QKIAogUGxhdGZvcm1MYXllciogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7Ci0gICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRN
TENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7Ci0KLSAgICByZXR1cm4gY2FudmFzLmJ1ZmZl
cigpID8gY2FudmFzLmJ1ZmZlcigpLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOworICAgIHJl
dHVybiBjYW52YXNCYXNlKCkuYnVmZmVyKCkgPyBjYW52YXNCYXNlKCkuYnVmZmVyKCktPnBsYXRm
b3JtTGF5ZXIoKSA6IG51bGxwdHI7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCmluZGV4
IDY1NTQ4YWQxZjQ5NmIwYWMwMzYwNjEzNzM1ZTliMzZlMTUzNzQ5NjEuLjQ3MjQyYTc4NTcwNDJm
OTRmNjA0OWY1ZDMzOTJmNzQ5YjljYzdmODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKQEAgLTMxNiw3
ICszMTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRGaWxsU3R5bGUoQ2FudmFzU3R5bGUp
OwogCiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBjcmVhdGVQYXR0ZXJu
KEhUTUxJbWFnZUVsZW1lbnQmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7Ci0gICAgRXhj
ZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBjcmVhdGVQYXR0ZXJuKEhUTUxDYW52YXNF
bGVtZW50JiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpOworICAgIEV4Y2VwdGlvbk9yPFJl
ZlB0cjxDYW52YXNQYXR0ZXJuPj4gY3JlYXRlUGF0dGVybihDYW52YXNCYXNlJiwgYm9vbCByZXBl
YXRYLCBib29sIHJlcGVhdFkpOwogI2lmIEVOQUJMRShWSURFTykKICAgICBFeGNlcHRpb25PcjxS
ZWZQdHI8Q2FudmFzUGF0dGVybj4+IGNyZWF0ZVBhdHRlcm4oSFRNTFZpZGVvRWxlbWVudCYsIGJv
b2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKICNlbmRpZgpAQCAtMzI0LDcgKzMyNCw3IEBAIHBy
b3RlY3RlZDoKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRyYXdJbWFnZShIVE1MSW1hZ2VFbGVt
ZW50JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qp
OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRyYXdJbWFnZShIVE1MSW1hZ2VFbGVtZW50JiwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IENv
bXBvc2l0ZU9wZXJhdG9yJiwgY29uc3QgQmxlbmRNb2RlJik7Ci0gICAgRXhjZXB0aW9uT3I8dm9p
ZD4gZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRyYXdJ
bWFnZShDYW52YXNCYXNlJiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QpOwogI2lmIEVOQUJMRShWSURFTykKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBk
cmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJh
ZTFmY2EyMTA0M2YyMDNhYjYxOTNkMDkxZGJhYjRkNmIwZThmZDgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRleHQyRC5jcHAK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQYWludFJlbmRlcmluZ0NvbnRl
eHQyRC5oIgorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RkOjp1bmlxdWVfcHRyPFBhaW50UmVuZGVyaW5nQ29udGV4dDJEPiBQYWludFJl
bmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlKENhbnZhc0Jhc2UmIGNhbnZhcykKK3sKKyAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPFBhaW50UmVuZGVyaW5nQ29udGV4dDJEPihuZXcgUGFpbnRSZW5k
ZXJpbmdDb250ZXh0MkQoY2FudmFzKSk7Cit9CisKK1BhaW50UmVuZGVyaW5nQ29udGV4dDJEOjpQ
YWludFJlbmRlcmluZ0NvbnRleHQyRChDYW52YXNCYXNlJiBjYW52YXMpCisgICAgOiBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlKGNhbnZhcywgZmFsc2UsIGZhbHNlKQoreworfQorCitQYWlu
dFJlbmRlcmluZ0NvbnRleHQyRDo6flBhaW50UmVuZGVyaW5nQ29udGV4dDJEKCkgPSBkZWZhdWx0
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRleHQyRC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNk
OGE0MDQ5NTEyZGEyNjI2MTYzM2FmZmY5YjJhNGFhODdhMTNlMTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRleHQyRC5oCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiQ3VzdG9t
UGFpbnRDYW52YXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWludFJlbmRl
cmluZ0NvbnRleHQyRCBmaW5hbCA6IHB1YmxpYyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhaW50UmVuZGVyaW5nQ29u
dGV4dDJEPiBjcmVhdGUoQ2FudmFzQmFzZSYpOworCisgICAgdmlydHVhbCB+UGFpbnRSZW5kZXJp
bmdDb250ZXh0MkQoKTsKKworICAgIGJvb2wgaXNQYWludCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKyAgICBDdXN0b21QYWludENhbnZhcyYgY2FudmFzKCkgY29uc3QgeyByZXR1
cm4gZG93bmNhc3Q8Q3VzdG9tUGFpbnRDYW52YXM+KGNhbnZhc0Jhc2UoKSk7IH0KKworcHJpdmF0
ZToKKyAgICBQYWludFJlbmRlcmluZ0NvbnRleHQyRChDYW52YXNCYXNlJik7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBTlZBU1JFTkRFUklO
R0NPTlRFWFQoV2ViQ29yZTo6UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQsIGlzUGFpbnQoKSkKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJp
bmdDb250ZXh0MkQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJp
bmdDb250ZXh0MkQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlOTFjZTdlNDhlMDVjYzhmMTIzYWExZmZhZTlh
OGUyZTg2OTk4MGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9QYWludFJlbmRlcmluZ0NvbnRleHQyRC5pZGwKQEAgLTAsMCArMSw0NSBAQAorLyoKKyogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisqLworCitbCisgICAgQ3VzdG9tSXNSZWFjaGFibGUsCisgICAgRW5hYmxlZEF0UnVu
dGltZT1DU1NQYWludGluZ0FQSSwKKyAgICBDb25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAor
ICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorXSBp
bnRlcmZhY2UgUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgeworfTsKKworUGFpbnRSZW5kZXJpbmdD
b250ZXh0MkQgaW1wbGVtZW50cyBDYW52YXNTdGF0ZTsKK1BhaW50UmVuZGVyaW5nQ29udGV4dDJE
IGltcGxlbWVudHMgQ2FudmFzVHJhbnNmb3JtOworUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgaW1w
bGVtZW50cyBDYW52YXNDb21wb3NpdGluZzsKK1BhaW50UmVuZGVyaW5nQ29udGV4dDJEIGltcGxl
bWVudHMgQ2FudmFzSW1hZ2VTbW9vdGhpbmc7CitQYWludFJlbmRlcmluZ0NvbnRleHQyRCBpbXBs
ZW1lbnRzIENhbnZhc0ZpbGxTdHJva2VTdHlsZXM7CitQYWludFJlbmRlcmluZ0NvbnRleHQyRCBp
bXBsZW1lbnRzIENhbnZhc1NoYWRvd1N0eWxlczsKK1BhaW50UmVuZGVyaW5nQ29udGV4dDJEIGlt
cGxlbWVudHMgQ2FudmFzUmVjdDsKK1BhaW50UmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMg
Q2FudmFzRHJhd1BhdGg7CitQYWludFJlbmRlcmluZ0NvbnRleHQyRCBpbXBsZW1lbnRzIENhbnZh
c0RyYXdJbWFnZTsKK1BhaW50UmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMgQ2FudmFzUGF0
aERyYXdpbmdTdHlsZXM7CitQYWludFJlbmRlcmluZ0NvbnRleHQyRCBpbXBsZW1lbnRzIENhbnZh
c1BhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaAppbmRleCAyNmJjM2Uw
Yzc1YTIyMTExNDZjNDNlZWFmY2NhZmJkN2UwOTgzMzFjLi5lZGQ0YjA1N2U0NjIxMDFiZDgyN2I2
NGJjMjZhNzE4ZWRmYmZkNWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
LmgKQEAgLTI3LDggKzI3LDggQEAKIAogI2lmIEVOQUJMRShXRUJNRVRBTCkKIAotI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCmluZGV4IDhiMzQ5MzYy
NzljNGM2MTliZmVlZjUzZDA4NDZkODdjOTIxZDAxY2UuLmQyZTQyYzBjOWU2MTk5ZjUyNzQyOTE2
NzBmMTdhMDZlOWRlODIwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKIAogI2lm
IEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQogCisjaW5jbHVkZSAiQ3VzdG9tUGFpbnRDYW52YXMu
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZUJpdG1hcC5o
IgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNDU1NQYWludENhbGxiYWNr
LmgiCi0jaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCi0jaW5jbHVkZSAiV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmgiCisjaW5jbHVkZSAiUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MSwyOSArNTEsMjQgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1
c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFpbnQoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4
dCwgY28KICAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gY2FsbGJhY2suc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAg
ICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKLSAgICBhdXRvKiBleGVj
U3RhdGUgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5leGVjU3RhdGUoKTsKLSAgICBpZiAoIWV4
ZWNTdGF0ZSkKLSAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAot
ICAgIGF1dG8gY2FudmFzID0gT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIGRlc3RTaXplLndpZHRoKCksIGRlc3RTaXplLmhlaWdodCgpKTsKLSAgICBFeGNl
cHRpb25PcjxPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0PiBjb250ZXh0T3JFeGNlcHRpb24gPSBj
YW52YXMtPmdldENvbnRleHQoKmV4ZWNTdGF0ZSwgT2Zmc2NyZWVuQ2FudmFzOjpSZW5kZXJpbmdD
b250ZXh0VHlwZTo6V2ViZ2wsIHsgfSk7CisgICAgYXV0byBjYW52YXMgPSBDdXN0b21QYWludENh
bnZhczo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBkZXN0U2l6ZS53aWR0aCgpLCBk
ZXN0U2l6ZS5oZWlnaHQoKSk7CisgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFBhaW50UmVuZGVyaW5n
Q29udGV4dDJEPj4gY29udGV4dE9yRXhjZXB0aW9uID0gY2FudmFzLT5nZXRDb250ZXh0KCk7CiAK
ICAgICBpZiAoY29udGV4dE9yRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogICAgIGF1dG8gY29udGV4dCA9IGNvbnRl
eHRPckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIAotICAgIGNvbnRleHQtPmNsZWFy
Q29sb3IoMCwgMCwgMCwgMS4wKTsKLSAgICBjb250ZXh0LT5jbGVhcihHTF9DT0xPUl9CVUZGRVJf
QklUKTsKLQogICAgIGF1dG8gcmVzdWx0ID0gbV9wYWludENhbGxiYWNrLT5oYW5kbGVFdmVudCgq
Y29udGV4dCk7CiAgICAgaWYgKHJlc3VsdC50eXBlKCkgIT0gQ2FsbGJhY2tSZXN1bHRUeXBlOjpT
dWNjZXNzKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0g
ICAgYXV0byBiaXRtYXAgPSBjYW52YXMtPnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpOwotICAgIGlm
ICghYml0bWFwKQorICAgIFVOVVNFRF9QQVJBTShkZXN0Q29udGV4dCk7CisgICAgYXV0byBpbWFn
ZSA9IGNhbnZhcy0+Y29waWVkSW1hZ2UoKTsKKyAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1
cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgZGVzdENvbnRleHQuZHJhd0lt
YWdlKCpiaXRtYXAtPmJ1ZmZlcigpLT5jb3B5SW1hZ2UoKSwgRmxvYXRQb2ludCgpKTsKKyAgICBk
ZXN0Q29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBvaW50KCkpOwogCiAgICAgcmV0dXJu
IEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YjdiMzQ2MzFhZjJmZjc0OTA3
OTFjZWVhNzkzNWNmYTM0MWI3MjM4Li5lYzIzNDZhNzNhOTE4OGM4MWExMzk0OGJlMDM3NWJmNDNm
NzM1MTEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMTAtMTkgIEp1c3RpbiBNaWNoYXVk
ICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIENTUyBQYWludCBBUEkgc2hv
dWxkIGdpdmUgYSAyZCByZW5kZXJpbmcgY29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRt
bDoKKwogMjAxOC0xMC0xOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNzI1NC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9iYXNpYy5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLmh0bWwKaW5kZXggY2YzYWZlODM0NTE2Zjdm
MDFiMDcyNjE2ZDJmOTI2YTlmYWFiZWYwMi4uM2Y0ZGMzYTJkMDJlZjIxYTJlOTcyZDRjOGI0ZjJm
YWU4YzM4OTQ1OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50
L2Jhc2ljLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2lj
Lmh0bWwKQEAgLTgsOCArOCw4IEBACiA8c3R5bGU+CiAgICNwYWludCB7CiAgICAgYmFja2dyb3Vu
ZC1pbWFnZTogcGFpbnQobXktcGFpbnQpOwotICAgIHdpZHRoOiA1MHB4OwotICAgIGhlaWdodDog
NTBweDsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsKICAgfQogPC9zdHls
ZT4KIApAQCAtNzAsOCArNzAsMTMgQEAgbGV0IHBhaW50X2NhbGxlZF90ZXN0ID0gYXN5bmNfdGVz
dCgndGVzdCB0aGF0IHRlc3QgZGl2IHBhaW50IGNhbGxiYWNrIGdldHMgY2FsbGUKIHBhaW50X2Nh
bGxlZF90ZXN0LnN0ZXAoZnVuY3Rpb24oKSB7CiAgIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5yZWdpc3RlclBhaW50KCdteS1wYWludCcsIGNsYXNzIHsKICAgICBwYWludChjdHgsIGdlb20s
IHByb3BlcnRpZXMpIHsKLSAgICAgIGN0eC5jbGVhckNvbG9yKDAsMS4wLDAsMS4wKTsKLSAgICAg
IGN0eC5jbGVhcihjdHguQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDY7IGkrKyl7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgNjsgaisrKXsKKyAgICAg
ICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYignICsgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaSkg
KyAnLCcgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcigyNTUgLSA0Mi41
ICogaikgKyAnLDApJzsKKyAgICAgICAgICBjdHguZmlsbFJlY3QoaiAqIDI1LCBpICogMjUsIDI1
LCAyNSk7CisgICAgICAgIH0KKyAgICAgIH0KICAgICAgIHBhaW50X2NhbGxlZF90ZXN0LmRvbmUo
KTsKICAgICB9CiAgIH0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352911</attachid>
            <date>2018-10-22 14:50:35 -0700</date>
            <delta_ts>2018-10-22 16:00:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190762-20181022145034.patch</filename>
            <type>text/plain</type>
            <size>54491</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ4M2QyZmU0N2E4ODVm
NjA0ODZlYjJlMWJjNGYzNTY5YTBjYzk3Yy4uZTc3OWZiNzU0NWI0MmRhYmZkNDJlMTVkY2U0MGVk
OThiYWRkMTk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE4LTEwLTIyICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBDU1MgUGFp
bnQgQVBJIHNob3VsZCBnaXZlIGEgMmQgcmVuZGVyaW5nIGNvbnRleHQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyB0eXBlIG9mIGNhbnZh
cyBhbmQgMmQgcmVuZGVyaW5nIGNvbnRleHQgdG8gc3VwcG9ydCB0aGUgQ1NTIFBhaW50aW5nIEFQ
SS4KKyAgICAgICAgTWFrZSBtYW55IG9mIHRoZSBtZXRob2RzIGZyb20gSFRNTENhbnZhc0VsZW1l
bnQgdmlydHVhbCBmdW5jdGlvbnMgb24gQ2FudmFzQmFzZSwgYW5kCisgICAgICAgIHJlbW92ZSBt
YW55IG9mIHRoZSBkb3duY2FzdHMgaW4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZSBhcyBh
IHJlc3VsdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGFpbnRS
ZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFpbnRDYWxsYmFjay5oLgorICAgICAgICAoV2ViQ29yZTo6cm9vdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJET3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUGFpbnRSZW5kZXJpbmdDb250ZXh0
MkQ6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJD
b3JlQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogY3NzL0NTU1BhaW50Q2FsbGJhY2suaDoKKyAg
ICAgICAgKiBjc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGw6CisgICAgICAgICogaHRtbC9DYW52YXNC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0Jhc2U6On5DYW52YXNCYXNlKToKKyAg
ICAgICAgKiBodG1sL0NhbnZhc0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0Jhc2U6
OmlzQ3VzdG9tUGFpbnRDYW52YXMgY29uc3QpOgorICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRD
YW52YXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OkN1c3RvbVBhaW50
Q2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjp+Q3VzdG9tUGFp
bnRDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OndpZHRoIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpzZXRXaWR0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6aGVpZ2h0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpzZXRIZWlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tUGFpbnRDYW52YXM6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFp
bnRDYW52YXM6OmdldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52
YXM6OmNvcGllZEltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2Fu
dmFzOjpkcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWlu
dENhbnZhczo6ZXhpc3RpbmdEcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21QYWludENhbnZhczo6bWFrZVJlbmRlcmluZ1Jlc3VsdHNBdmFpbGFibGUpOgorICAg
ICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRDYW52YXMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaC4KKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9PZmZzY3JlZW5DYW52YXMuaDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4pOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQ6OmlzUGFpbnQgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3REcmF3aW5nQ29udGV4dDo6RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp1bndpbmRTdGF0ZVN0
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6Omlz
QWNjZWxlcmF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0RmlsbFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnJlc2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNsZWFyQ2FudmFzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnRyYW5zZm9ybUFyZWFU
b0RldmljZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpyZWN0Q29udGFpbnNDYW52YXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y2FsY3VsYXRlQ29tcG9zaXRpbmdCdWZmZXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNvbXBv
c2l0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpjcmVhdGVQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OmRpZERyYXdFbnRpcmVDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZGlkRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3
aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29u
dGV4dDJELmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJh
Y2suaC4KKyAgICAgICAgKFdlYkNvcmU6OlBhaW50UmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ6OlBhaW50UmVuZGVy
aW5nQ29udGV4dDJEKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRl
eHQyRC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5o
LgorICAgICAgICAqIGh0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmlkbDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsLgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpkb0N1c3RvbVBhaW50KToKKwogMjAxOC0x
MC0xOSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lG
Q10gUmVuZGVyUmVwbGFjZWQgcmVuZGVyZXIgc2hvdWxkIGNyZWF0ZSBJbmxpbmVCb3gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggOGIwMmE1MmQ1MGQwMWQ3N2VjMWUzNjEwY2M3ODcyNjEyNjM0ZTkz
OC4uYTU5NjQwNTIwOWU2M2IzYTRkMjI2YjZmYmNjZTdmZTcwNDQwY2M5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTgwMyw2ICs4MDMsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxF
UwogICAgIGh0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmlk
bAogICAgIGh0bWwvY2FudmFzL0ltYWdlU21vb3RoaW5nUXVhbGl0eS5pZGwKICAgICBodG1sL2Nh
bnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCisgICAgaHRtbC9jYW52
YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsCiAgICAgaHRtbC9jYW52YXMvUGF0aDJELmlk
bAogICAgIGh0bWwvY2FudmFzL1dlYk1ldGFsQnVmZmVyLmlkbAogICAgIGh0bWwvY2FudmFzL1dl
Yk1ldGFsQ29tbWFuZEJ1ZmZlci5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IDE1YTVkNmJkOTVlNzZkZjAxMmQ0ZjczODI2ZTA1MGZmZjhlYzk2MzYuLmVkOTY1M2Y4YTE2NTFk
MjQzYjE3OTAwYjI3NDcwNjQ5OGZmMTljNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtNzI2LDYgKzcyNiw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUp
L2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaWRsIFwKICAgICAkKFdlYkNv
cmUpL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsIFwKKwkk
KFdlYkNvcmUpL2h0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmlkbCBcCiAgICAg
JChXZWJDb3JlKS9odG1sL2NhbnZhcy9QYXRoMkQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL1dlYkdMQWN0aXZlSW5mby5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAwNDYzZDE1Nzll
NGM2MmQ5MzAxMmMwNjE1ZTkzMmJhNzRmMTYzZDNhLi5mM2MyNzkyZjk1ZGFiMGZlNGE5MWRhMTE4
MWNmM2EzMzZlMTA5OGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNDQzLDYgKzQ0Myw3IEBAIGJpbmRp
bmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9t
LmNwcAogYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTT2Zm
c2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAorYmluZGluZ3MvanMvSlNQ
YWludFJlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTUGF5bWVudE1l
dGhvZENoYW5nZUV2ZW50Q3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNQYXltZW50UmVzcG9uc2VD
dXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU1BlcmZvcm1hbmNlRW50cnlDdXN0b20uY3BwCkBAIC05
NjgsNiArOTY5LDcgQEAgaHRtbC9CdXR0b25JbnB1dFR5cGUuY3BwCiBodG1sL0NhbnZhc0Jhc2Uu
Y3BwCiBodG1sL0NoZWNrYm94SW5wdXRUeXBlLmNwcAogaHRtbC9Db2xvcklucHV0VHlwZS5jcHAK
K2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCiBodG1sL0RPTUZvcm1EYXRhLmNwcAogaHRtbC9E
T01Ub2tlbkxpc3QuY3BwCiBodG1sL0RPTVVSTC5jcHAKQEAgLTExMjYsNiArMTEyOCw3IEBAIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCiBodG1sL2NhbnZhcy9D
YW52YXNTdHlsZS5jcHAKIGh0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5j
cHAKIGh0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKK2h0
bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcAogaHRtbC9jYW52YXMvUGF0aDJE
LmNwcAogaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcAogaHRtbC9j
YW52YXMvV2ViTWV0YWxCdWZmZXIuY3BwCkBAIC0yODQzLDYgKzI4NDYsNyBAQCBKU09mZmxpbmVB
dWRpb0NvbXBsZXRpb25FdmVudC5jcHAKIEpTT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKIEpTT2Zm
c2NyZWVuQ2FudmFzLmNwcAogSlNPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CitKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcAogSlNPc2NpbGxhdG9yTm9kZS5jcHAKIEpT
T3ZlcmNvbnN0cmFpbmVkRXJyb3IuY3BwCiBKU092ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggYmExNWZjZjFkZWVjMDRmZWE2NDM2YzMwYTU4MWM2YjJkMjUzYWFlZS4uYTFiOWJjMzli
YWE1YjllMDFiYTk4NGM5YjY0YzgxOGEwOTgwMzBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM0NSw2ICsxMzQ1LDggQEAK
IAkJNEE5Q0M4MjExNkJGOUJCNDAwRUM2NDVBIC8qIEluc3BlY3RvckNTU09NV3JhcHBlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBOUNDODFGMTZC
RjlCQjQwMEVDNjQ1QSAvKiBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmggKi87IH07CiAJCTRBRDAx
MDA5MTI3RTY0MkEwMDE1MDM1RiAvKiBIVE1MT3V0cHV0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFEMDEwMDYxMjdFNjQyQTAwMTUwMzVG
IC8qIEhUTUxPdXRwdXRFbGVtZW50LmggKi87IH07CiAJCTRBRDAxNzNEMTI3RTgyODYwMDE1MDM1
RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTczQjEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0
RWxlbWVudC5oICovOyB9OworCQk0QjFFMTNFNzIxNzkwRDY2MDA0MkNGOTggLyogQ3VzdG9tUGFp
bnRDYW52YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCMUUxM0U2MjE3OTBENjYwMDQyQ0Y5OCAvKiBDdXN0b21QYWludENhbnZhcy5oICovOyB9Owor
CQk0QjFFMTNFQjIxNzkzN0IzMDA0MkNGOTggLyogUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMUUxM0VBMjE3
OTM3QjMwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oICovOyB9OwogCQk0QjI3
MDhDNzBBRjE5RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8qIFBh
c3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0QjMwNDNDRDBBRTAzNzNCMDBBODI2NDcgLyogRWRpdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjMwNDNDQjBBRTAzNzNCMDBBODI2NDcg
LyogRWRpdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNEIzNDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMzQ4MDkyMEVFRjUwRDQw
MEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHLmggKi87IH07CkBAIC03ODgzLDYgKzc4ODUsMTIgQEAK
IAkJNEFEMDE3M0ExMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3V0cHV0RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBRDAxNzNCMTI3RTgyODYwMDE1MDM1
RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTSFRNTE91dHB1dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEIxNzA2NjQyMTYyQjQyRjAwRTU3OEJCIC8qIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjFFMTNFNjIxNzkwRDY2MDA0MkNGOTggLyog
Q3VzdG9tUGFpbnRDYW52YXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VzdG9tUGFpbnRDYW52YXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEIxRTEzRTkyMTc5MEQ3RTAwNDJDRjk4IC8q
IEN1c3RvbVBhaW50Q2FudmFzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbVBhaW50Q2Fu
dmFzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEIxRTEzRUEyMTc5MzdCMzAw
NDJDRjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhaW50
UmVuZGVyaW5nQ29udGV4dDJELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCMUUx
M0VDMjE3OTM4MzgwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTRCMUUxM0VEMjE3OTNEQzEwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmlu
Z0NvbnRleHQyRC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0QjFFMTNFRTIxNzk0MTMyMDA0MkNGOTggLyogSlNQYWlu
dFJlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BhaW50
UmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8qIFBhc3RlYm9hcmQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0QjI3MDk4MTBBRjJFNUUwMDA2NTEyN0YgLyogUGFzdGVib2FyZE1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3RlYm9hcmRNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCMzA0M0NBMEFFMDM3M0IwMEE4MjY0NyAvKiBF
ZGl0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVkaXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzYyOCw2ICsxNzYzNiw5IEBACiAJ
CQkJMzE0MEM1MUQxRkRGMTUxQTAwRDJBODczIC8qIE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAgKi8sCiAJCQkJMzE0MEM1MUUxRkRGMTUxQTAwRDJBODczIC8qIE9mZnNjcmVl
bkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oICovLAogCQkJCTMxNDBDNTFCMUZERjEzRDIwMEQy
QTg3MyAvKiBPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsICovLAorCQkJCTRC
MUUxM0VDMjE3OTM4MzgwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5jcHAgKi8s
CisJCQkJNEIxRTEzRUEyMTc5MzdCMzAwNDJDRjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJE
LmggKi8sCisJCQkJNEIxRTEzRUQyMTc5M0RDMTAwNDJDRjk4IC8qIFBhaW50UmVuZGVyaW5nQ29u
dGV4dDJELmlkbCAqLywKIAkJCQk3QzE5M0JBNzFGNUUwRUFGMDA4OEYzRTYgLyogUGF0aDJELmNw
cCAqLywKIAkJCQk3QzE5M0JBQjFGNUUwRUIxMDA4OEYzRTYgLyogUGF0aDJELmggKi8sCiAJCQkJ
N0MxOTNCQjQxRjVFMEVCNzAwODhGM0U2IC8qIFBhdGgyRC5pZGwgKi8sCkBAIC0yMDIwNSw2ICsy
MDIxNiw3IEBACiAJCQkJQkNEOUMyNjEwQzE3QUE2NzAwNUM5MEEyIC8qIEpTTm9kZUxpc3RDdXN0
b20uY3BwICovLAogCQkJCUFEMjBCMThDMThFOUQyMTYwMDVBODA4MyAvKiBKU05vZGVMaXN0Q3Vz
dG9tLmggKi8sCiAJCQkJMzE0MEM1MkIxRkUwNkI0OTAwRDJBODczIC8qIEpTT2Zmc2NyZWVuQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKKwkJCQk0QjFFMTNFRTIxNzk0MTMy
MDA0MkNGOTggLyogSlNQYWludFJlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8sCiAJCQkJ
Q0IzOEZENTUxQ0QyMUQ1QjAwNTkyQTNGIC8qIEpTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAg
Ki8sCiAJCQkJODMzQ0Y3MEYyMERCM0Y1RjAwMTQxQkNDIC8qIEpTUGVyZm9ybWFuY2VPYnNlcnZl
ckN1c3RvbS5jcHAgKi8sCiAJCQkJQTRBNjlCOEJCOTFCNDlEMEE4MDRDMzFEIC8qIEpTUHJvbWlz
ZVJlamVjdGlvbkV2ZW50Q3VzdG9tLmNwcCAqLywKQEAgLTIwNzcxLDYgKzIwNzgzLDggQEAKIAkJ
CQk5M0M0NDFGRjBGODEzQUUxMDBDMUE2MzQgLyogQ29sbGVjdGlvblR5cGUuaCAqLywKIAkJCQlC
QzI5OTM1QzE3QTFERDU4MDBCQ0U4ODAgLyogQ29sb3JJbnB1dFR5cGUuY3BwICovLAogCQkJCUY1
NUIzRDgwMTI1MUYxMkQwMDNFRjI2OSAvKiBDb2xvcklucHV0VHlwZS5oICovLAorCQkJCTRCMUUx
M0U5MjE3OTBEN0UwMDQyQ0Y5OCAvKiBDdXN0b21QYWludENhbnZhcy5jcHAgKi8sCisJCQkJNEIx
RTEzRTYyMTc5MEQ2NjAwNDJDRjk4IC8qIEN1c3RvbVBhaW50Q2FudmFzLmggKi8sCiAJCQkJRTUx
NzY3MDIyMEI4OEMxNDAwRDQxMTY3IC8qIERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmgg
Ki8sCiAJCQkJRjU1QjNEODExMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVJbnB1dFR5cGUuY3BwICov
LAogCQkJCUY1NUIzRDgyMTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlSW5wdXRUeXBlLmggKi8sCkBA
IC0yODA4OSw2ICsyODEwMyw3IEBACiAJCQkJOTNENDM3QTAxRDU3QjE5QTAwQUI4NUVBIC8qIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkQ0RTkxQjFD
NDYyQ0ZDMDA1MDY1QkMgLyogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk2MkNEMzI1QTExNTdFNTdDMDA2M0IwQTcgLyogQ3VzdG9tRXZlbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTRCMUUxM0U3MjE3OTBENjYwMDQyQ0Y5OCAvKiBDdXN0b21QYWludENhbnZhcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEI3QUU0OTMyMTc3QjU2RjAwQzU5OTU5IC8qIEN1c3RvbVBh
aW50SW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0I0MTNFMEU4NjMzRkQwMDMyQzRGMCAv
KiBEYXNoQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2RDBCMEExOTg5Q0EwMDdGQjhD
NSAvKiBEYXNoYm9hcmRSZWdpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMzAxMTQsNiArMzAxMjks
NyBAQAogCQkJCTU1RUM5NTk5MjA2QUE3QTAwMDdERDBBOSAvKiBQYWludEZyZXF1ZW5jeVRyYWNr
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4ODUwNjdGMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWlu
dEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTA4ODUwNjgwMTFEQTA0NUIwMDE4MkI5OCAvKiBQ
YWludFBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0QjFFMTNFQjIxNzkzN0IzMDA0MkNGOTgg
LyogUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0ZC
MEExOTg5Q0EwMDdGQjhDNSAvKiBQYWlyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBMzEy
QjAyNkY3MDBDMUEzNTkgLyogUGFubmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxQTEy
QjAyNjc2MDBDMUEzNTkgLyogUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BhaW50UmVuZGVyaW5nQ29udGV4dDJEQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiODEzNmYzMmYxOGFmZWZjM2FjMzM3ZjcwNzk3
MDk2ZGU4Y2UyNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BhaW50UmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcApAQCAtMCwwICsxLDU2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCIKKworI2lmIEVO
QUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1l
c3BhY2UgSlNDOworCitpbmxpbmUgdm9pZCogcm9vdChDdXN0b21QYWludENhbnZhcyogY2FudmFz
KQoreworICAgIHJldHVybiBjYW52YXM7Cit9CisKK2Jvb2wgSlNQYWludFJlbmRlcmluZ0NvbnRl
eHQyRE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiog
cmVhc29uKQoreworICAgIGlmIChVTkxJS0VMWShyZWFzb24pKQorICAgICAgICAqcmVhc29uID0g
IkNhbnZhcyBpcyBvcGFxdWUgcm9vdCI7CisKKyAgICBKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJE
KiBqc1BhaW50UmVuZGVyaW5nQ29udGV4dCA9IGpzQ2FzdDxKU1BhaW50UmVuZGVyaW5nQ29udGV4
dDJEKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgIHZvaWQqIHJvb3QgPSBXZWJDb3Jl
Ojpyb290KCZqc1BhaW50UmVuZGVyaW5nQ29udGV4dC0+d3JhcHBlZCgpLmNhbnZhcygpKTsKKyAg
ICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCk7Cit9CisKK3ZvaWQgSlNQ
YWludFJlbmRlcmluZ0NvbnRleHQyRDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoJndyYXBwZWQo
KS5jYW52YXMoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4
IDAyNDkzMGQxNWM0YjRkMDIzMzEzMTc4YjE0MDVkNzgyYTQ1ZjZkNzEuLjAwODVhZDdlZmRiZDNj
ZjkxMTE3OTI1ZDBlMTcwMzg2MjI0NGVjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTExMyw2ICsxMTMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oTmF2aWdhdG9yVXNlck1lZGlhKSBcCiAgICAgbWFjcm8o
T2Zmc2NyZWVuQ2FudmFzKSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEKSBcCisgICAgbWFjcm8oUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQpIFwKICAgICBtYWNy
byhQYXltZW50QWRkcmVzcykgXAogICAgIG1hY3JvKFBheW1lbnRNZXRob2RDaGFuZ2VFdmVudCkg
XAogICAgIG1hY3JvKFBheW1lbnRSZXF1ZXN0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2Fs
bGJhY2suaAppbmRleCBmMGVjMmM0NDEzNWFlNDRjYzg5MzUwNmQ4NWE1MDc1OTYzYjIzMTM2Li5m
MjFlNjc4YmM5MWZkMGIyYmI2M2UxMWJiNTk1NmM0MWE3ZjcwOWRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYWludENhbGxiYWNrLmgKQEAgLTMyLDEzICszMiwxMyBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDsKK2NsYXNzIFBhaW50UmVuZGVyaW5nQ29udGV4dDJEOwogCiBjbGFzcyBDU1NQYWlu
dENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFpbnRDYWxsYmFjaz4sIHB1YmxpYyBB
Y3RpdmVET01DYWxsYmFjayB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQWN0aXZlRE9NQ2FsbGJhY2s6
OkFjdGl2ZURPTUNhbGxiYWNrOwogCi0gICAgdmlydHVhbCBDYWxsYmFja1Jlc3VsdDx2b2lkPiBo
YW5kbGVFdmVudChXZWJHTFJlbmRlcmluZ0NvbnRleHQmKSA9IDA7CisgICAgdmlydHVhbCBDYWxs
YmFja1Jlc3VsdDx2b2lkPiBoYW5kbGVFdmVudChQYWludFJlbmRlcmluZ0NvbnRleHQyRCYpID0g
MDsKIAogICAgIHZpcnR1YWwgfkNTU1BhaW50Q2FsbGJhY2soKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbAppbmRleCA3NmQ5YjZjOTViYTFjZjhkMjk1MmE0Nzlk
MWM1MzA3NDk0Y2M4MDljLi4yOTQxNDczYTAzMGJjODFjNWZiNmRkZDIzYTdjZDljZjMxMDUzNWJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsCkBAIC0yNiw0ICsyNiw0
IEBACiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKICAgICBDb25kaXRp
b25hbD1DU1NfUEFJTlRJTkdfQVBJLAotXSBjYWxsYmFjayBDU1NQYWludENhbGxiYWNrID0gdm9p
ZCAoV2ViR0xSZW5kZXJpbmdDb250ZXh0IGNvbnRleHQpOworXSBjYWxsYmFjayBDU1NQYWludENh
bGxiYWNrID0gdm9pZCAoUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgY29udGV4dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9DYW52YXNCYXNlLmNwcAppbmRleCA4NTkzOWIyNzRmNTkwYjAwY2M4M2EzNzk3Yjc5OTY5
NmRkZDZhOGMyLi40MGY4ZGIwNWM5ZDQ3YjgzOGIyNTY4ZmZlMTk1YTY0YjgzODMwNDQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgQ2FudmFzQmFzZTo6
Q2FudmFzQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQogCiBDYW52YXNCYXNlOjp+Q2FudmFzQmFzZSgpCiB7CisgICAgQVNTRVJUKCFtX2NvbnRleHQp
OyAvLyBTaG91bGQgaGF2ZSBiZWVuIHNldCB0byBudWxsIGJ5IGJhc2UgY2xhc3MuCiAgICAgbm90
aWZ5T2JzZXJ2ZXJzQ2FudmFzRGVzdHJveWVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNl
LmgKaW5kZXggNWRmZTI5MzUyZTE1MzRmNjYyMGM1MzY2YmViOTg0NDFhMWY0NzJmNy4uZmFkODFi
ZDIyNWU3M2VkNzllNjI0YjIwZjdjZDA0MmY3MDY4NWYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9DYW52YXNCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNC
YXNlLmgKQEAgLTMwLDkgKzMwLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
QWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgQ2FudmFzQmFzZTsKIGNsYXNzIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ7CiBjbGFzcyBFbGVtZW50OworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3Mg
SW1hZ2U7CitjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBGbG9hdFJl
Y3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpAQCAtNTgsNiArNjIsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNIVE1MQ2FudmFzRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzT2Zmc2NyZWVuQ2FudmFzKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0b21QYWludENhbnZhcygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHdpZHRoKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgPSAwOwpAQCAt
ODEsNiArODYsMTUgQEAgcHVibGljOgogCiAgICAgSGFzaFNldDxFbGVtZW50Kj4gY3NzQ2FudmFz
Q2xpZW50cygpIGNvbnN0OwogCisgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdD
b250ZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0KiBleGlzdGlu
Z0RyYXdpbmdDb250ZXh0KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIG1ha2VSZW5k
ZXJpbmdSZXN1bHRzQXZhaWxhYmxlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KGNv
bnN0IEZsb2F0UmVjdCYpID0gMDsKKworICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VU
cmFuc2Zvcm0oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbWFnZSogY29waWVkSW1hZ2UoKSBj
b25zdCA9IDA7CisKIHByb3RlY3RlZDoKICAgICBDYW52YXNCYXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENh
bnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNzZhYWQ1ZmI5NTI2MWVkNzg0OWRhMzY2YzA0ODVmOWIzMWQ3NmY4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKQEAg
LTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ3VzdG9tUGFpbnRDYW52YXMuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQor
CisjaW5jbHVkZSAiSW1hZ2VCaXRtYXAuaCIKKyNpbmNsdWRlICJQYWludFJlbmRlcmluZ0NvbnRl
eHQyRC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxDdXN0b21QYWludENhbnZhcz4g
Q3VzdG9tUGFpbnRDYW52YXM6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEN1c3RvbVBhaW50Q2FudmFzKGNvbnRleHQsIHdpZHRoLCBoZWlnaHQpKTsKK30KKwor
Q3VzdG9tUGFpbnRDYW52YXM6OkN1c3RvbVBhaW50Q2FudmFzKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCisgICAgOiBDYW52
YXNCYXNlKCZjb250ZXh0KQorICAgICwgbV9zaXplKHdpZHRoLCBoZWlnaHQpCit7Cit9CisKK0N1
c3RvbVBhaW50Q2FudmFzOjp+Q3VzdG9tUGFpbnRDYW52YXMoKQoreworICAgIG1fY29udGV4dCA9
IG51bGxwdHI7IC8vIEVuc3VyZSB0aGlzIGdvZXMgYXdheSBiZWZvcmUgdGhlIEltYWdlQnVmZmVy
LgorfQorCit1bnNpZ25lZCBDdXN0b21QYWludENhbnZhczo6d2lkdGgoKSBjb25zdAoreworICAg
IHJldHVybiBtX3NpemUud2lkdGgoKTsKK30KKwordm9pZCBDdXN0b21QYWludENhbnZhczo6c2V0
V2lkdGgodW5zaWduZWQgbmV3V2lkdGgpCit7CisgICAgcmV0dXJuIG1fc2l6ZS5zZXRXaWR0aChu
ZXdXaWR0aCk7Cit9CisKK3Vuc2lnbmVkIEN1c3RvbVBhaW50Q2FudmFzOjpoZWlnaHQoKSBjb25z
dAoreworICAgIHJldHVybiBtX3NpemUuaGVpZ2h0KCk7Cit9CisKK3ZvaWQgQ3VzdG9tUGFpbnRD
YW52YXM6OnNldEhlaWdodCh1bnNpZ25lZCBuZXdIZWlnaHQpCit7CisgICAgcmV0dXJuIG1fc2l6
ZS5zZXRIZWlnaHQobmV3SGVpZ2h0KTsKK30KKworY29uc3QgSW50U2l6ZSYgQ3VzdG9tUGFpbnRD
YW52YXM6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NpemU7Cit9CisKK3ZvaWQgQ3Vz
dG9tUGFpbnRDYW52YXM6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKK3sKKyAgICBt
X3NpemUgPSBuZXdTaXplOworfQorCitFeGNlcHRpb25PcjxSZWZQdHI8UGFpbnRSZW5kZXJpbmdD
b250ZXh0MkQ+PiBDdXN0b21QYWludENhbnZhczo6Z2V0Q29udGV4dCgpCit7CisgICAgaWYgKG1f
Y29udGV4dCkKKyAgICAgICAgcmV0dXJuIHsgUmVmUHRyPFBhaW50UmVuZGVyaW5nQ29udGV4dDJE
PiB7ICZkb3duY2FzdDxQYWludFJlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkgfSB9Owor
CisgICAgbV9jb250ZXh0ID0gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZSgqdGhpcyk7
CisgICAgZG93bmNhc3Q8UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ+KCptX2NvbnRleHQpLnNldFVz
ZXNEaXNwbGF5TGlzdERyYXdpbmcodHJ1ZSk7CisgICAgZG93bmNhc3Q8UGFpbnRSZW5kZXJpbmdD
b250ZXh0MkQ+KCptX2NvbnRleHQpLnNldFRyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KGZhbHNlKTsK
KworICAgIHJldHVybiB7IFJlZlB0cjxQYWludFJlbmRlcmluZ0NvbnRleHQyRD4geyAmZG93bmNh
c3Q8UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ+KCptX2NvbnRleHQpIH0gfTsKK30KKworSW1hZ2Uq
IEN1c3RvbVBhaW50Q2FudmFzOjpjb3BpZWRJbWFnZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFt
X2Rlc3RpbmF0aW9uR3JhcGhpY3NDb250ZXh0KTsKKyAgICBpZiAoIXdpZHRoKCkgfHwgIWhlaWdo
dCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIG1fY29waWVkQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFVuYWNjZWxlcmF0ZWQsIDEsIENvbG9yU3BhY2VTUkdC
LCBudWxscHRyKTsKKyAgICBpZiAoIW1fY29waWVkQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIG1fZGVzdGluYXRpb25HcmFwaGljc0NvbnRleHQgPSAmbV9jb3BpZWRCdWZm
ZXItPmNvbnRleHQoKTsKKyAgICBpZiAobV9jb250ZXh0KQorICAgICAgICBtX2NvbnRleHQtPnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCk7CisgICAgbV9kZXN0aW5hdGlvbkdyYXBoaWNz
Q29udGV4dCA9IG51bGxwdHI7CisKKyAgICBtX2NvcGllZEltYWdlID0gbV9jb3BpZWRCdWZmZXIt
PmNvcHlJbWFnZShtX2NvcGllZEJ1ZmZlci0+ZmFzdENvcHlJbWFnZU1vZGUoKSwgUHJlc2VydmVS
ZXNvbHV0aW9uOjpZZXMpOworICAgIHJldHVybiBtX2NvcGllZEltYWdlLmdldCgpOworfQorCitH
cmFwaGljc0NvbnRleHQqIEN1c3RvbVBhaW50Q2FudmFzOjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fZGVzdGluYXRpb25HcmFwaGljc0NvbnRleHQ7Cit9CisKK0dyYXBo
aWNzQ29udGV4dCogQ3VzdG9tUGFpbnRDYW52YXM6OmV4aXN0aW5nRHJhd2luZ0NvbnRleHQoKSBj
b25zdAoreworICAgIHJldHVybiBkcmF3aW5nQ29udGV4dCgpOworfQorCit2b2lkIEN1c3RvbVBh
aW50Q2FudmFzOjptYWtlUmVuZGVyaW5nUmVzdWx0c0F2YWlsYWJsZSgpCit7CisgICAgaWYgKG1f
Y29udGV4dCkKKyAgICAgICAgbV9jb250ZXh0LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cygpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3Vz
dG9tUGFpbnRDYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45OTU3MWZkZjczYjgyNjhlZTY1ZDFkZWYwMGFhZDRkZWVjYWRkMTM4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5o
CkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5j
bHVkZSAiQ2FudmFzQmFzZS5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAi
RXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkludFNp
emUuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIlNjcmlw
dFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBJbWFnZUJpdG1hcDsKK2NsYXNzIFBhaW50UmVuZGVyaW5nQ29u
dGV4dDJEOworCitjbGFzcyBDdXN0b21QYWludENhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEN1c3RvbVBhaW50Q2FudmFzPiwgcHVibGljIENhbnZhc0Jhc2UgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorCisgICAgc3RhdGljIFJlZjxDdXN0b21QYWludENh
bnZhcz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCB1bnNpZ25lZCB3aWR0aCwgdW5z
aWduZWQgaGVpZ2h0KTsKKyAgICB2aXJ0dWFsIH5DdXN0b21QYWludENhbnZhcygpOworICAgIGJv
b2wgaXNDdXN0b21QYWludENhbnZhcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIHVuc2lnbmVkIHdpZHRoKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRXaWR0aCh1bnNp
Z25lZCk7CisgICAgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRI
ZWlnaHQodW5zaWduZWQpOworCisgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IGZpbmFs
OworICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CisKKyAgICBFeGNlcHRp
b25PcjxSZWZQdHI8UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ+PiBnZXRDb250ZXh0KCk7CisKKyAg
ICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgY29uc3QgZmluYWw7CisgICAgR3Jh
cGhpY3NDb250ZXh0KiBleGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29uc3QgZmluYWw7CisKKyAg
ICB2b2lkIG1ha2VSZW5kZXJpbmdSZXN1bHRzQXZhaWxhYmxlKCkgZmluYWw7CisgICAgdm9pZCBk
aWREcmF3KGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsIHsgfQorCisgICAgQWZmaW5lVHJhbnNmb3Jt
IGJhc2VUcmFuc2Zvcm0oKSBjb25zdCBmaW5hbCB7IEFTU0VSVChtX2Rlc3RpbmF0aW9uR3JhcGhp
Y3NDb250ZXh0ICYmIG1fY29waWVkQnVmZmVyKTsgcmV0dXJuIG1fY29waWVkQnVmZmVyLT5iYXNl
VHJhbnNmb3JtKCk7IH0KKyAgICBJbWFnZSogY29waWVkSW1hZ2UoKSBjb25zdCBmaW5hbDsKKwor
ICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsK
KworcHJpdmF0ZToKKyAgICBDdXN0b21QYWludENhbnZhcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CisKKyAgICB2b2lkIHJlZkNhbnZh
c0Jhc2UoKSBmaW5hbCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkNhbnZhc0Jhc2UoKSBmaW5h
bCB7IGRlcmVmKCk7IH0KKworICAgIG11dGFibGUgR3JhcGhpY3NDb250ZXh0KiBtX2Rlc3RpbmF0
aW9uR3JhcGhpY3NDb250ZXh0ID0gbnVsbHB0cjsKKyAgICBtdXRhYmxlIEludFNpemUgbV9zaXpl
OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2NvcGllZEJ1ZmZl
cjsKKyAgICBtdXRhYmxlIFJlZlB0cjxJbWFnZT4gbV9jb3BpZWRJbWFnZTsKK307CisKK30KK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FOVkFTKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzLCBp
c0N1c3RvbVBhaW50Q2FudmFzKCkpCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuaAppbmRleCAyZGY5YzBiMzBmNTYwNmQ4YmVlNmMxYzgxODc3OWM2YjFlNDhlODhj
Li4wYmY0Nzc0ZDNjNmQ2YmM3MDYxZDQwZTZlZGM5YmEzYzdmMGZjYzJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCkBAIC0xMTIsMTIgKzExMiwxMiBAQCBwdWJsaWM6
CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gdG9CbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBS
ZWY8QmxvYkNhbGxiYWNrPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBKU0M6OkpTVmFsdWUg
cXVhbGl0eSk7CiAKICAgICAvLyBVc2VkIGZvciByZW5kZXJpbmcKLSAgICB2b2lkIGRpZERyYXco
Y29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYpIGZp
bmFsOwogCiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0
Jik7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgY29uc3Q7Ci0gICAg
R3JhcGhpY3NDb250ZXh0KiBleGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29uc3Q7CisgICAgR3Jh
cGhpY3NDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNz
Q29udGV4dCogZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHRvTWVkaWFTYW1wbGUo
KTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIEltYWdlQnVmZmVy
KiBidWZmZXIoKSBjb25zdDsKLSAgICBJbWFnZSogY29waWVkSW1hZ2UoKSBjb25zdDsKKyAgICBJ
bWFnZSogY29waWVkSW1hZ2UoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGNsZWFyQ29waWVkSW1h
Z2UoKTsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoKTsKICAgICB2b2lkIG1h
a2VQcmVzZW50YXRpb25Db3B5KCk7CkBAIC0xMzMsOSArMTMzLDkgQEAgcHVibGljOgogCiAgICAg
U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWw7CiAKLSAgICBBZmZp
bmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0OworICAgIEFmZmluZVRyYW5zZm9ybSBi
YXNlVHJhbnNmb3JtKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIG1ha2VSZW5kZXJpbmdSZXN1
bHRzQXZhaWxhYmxlKCk7CisgICAgdm9pZCBtYWtlUmVuZGVyaW5nUmVzdWx0c0F2YWlsYWJsZSgp
IGZpbmFsOwogICAgIGJvb2wgaGFzQ3JlYXRlZEltYWdlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXI7IH0KIAogICAgIGJvb2wgc2hvdWxkQWNjZWxlcmF0ZShj
b25zdCBJbnRTaXplJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09m
ZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApp
bmRleCBjMjcyZWQ2ZTk5OWY4YzAyMDliNDc0YjY3NmE4NDBkYTBlNjg5MjZjLi5mYzg2M2RmNmNm
MWRhMzFiMzRlODZhY2ZkMTk0Y2IzMzNhYmEwZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJDYW52YXNCYXNlLmgiCiAjaW5jbHVkZSAi
RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgpAQCAtNzUsNiArNzYsMTUg
QEAgcHVibGljOgogICAgIFJlZlB0cjxJbWFnZUJpdG1hcD4gdHJhbnNmZXJUb0ltYWdlQml0bWFw
KCk7CiAgICAgLy8gdm9pZCBjb252ZXJ0VG9CbG9iKEltYWdlRW5jb2RlT3B0aW9ucyBvcHRpb25z
KTsKIAorICAgIEdyYXBoaWNzQ29udGV4dCogZHJhd2luZ0NvbnRleHQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBudWxscHRyOyB9CisgICAgR3JhcGhpY3NDb250ZXh0KiBleGlzdGluZ0RyYXdpbmdD
b250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgdm9pZCBtYWtl
UmVuZGVyaW5nUmVzdWx0c0F2YWlsYWJsZSgpIGZpbmFsIHsgfQorICAgIHZvaWQgZGlkRHJhdyhj
b25zdCBGbG9hdFJlY3QmKSBmaW5hbCB7IH0KKworICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJh
bnNmb3JtKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyB9OyB9CisgICAgSW1hZ2UqIGNvcGllZElt
YWdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorCiAgICAgdXNpbmcgUmVmQ291
bnRlZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4
IGMzNDYxMDIxNWU1NjlmZTdhYTExOWNhNTIxNmE3ZDgzZTE1NTYyMjkuLjMzNjE0MzhmMWVmMjMz
Njk5ZDBlZGEzNTIxYzA1NmRlNjdiYWVkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBDYW52
YXNQYXR0ZXJuKiBwYXR0ZXJuKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEhUTUxDYW52YXNFbGVtZW50
KiBzb3VyY2VDYW52YXMpCitib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRP
cmlnaW4oY29uc3QgQ2FudmFzQmFzZSogc291cmNlQ2FudmFzKQogewogICAgIGlmIChtX2NhbnZh
cy5vcmlnaW5DbGVhbigpICYmIHNvdXJjZUNhbnZhcyAmJiAhc291cmNlQ2FudmFzLT5vcmlnaW5D
bGVhbigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCAyZDJkODg3NTc5MDE4ZDBm
YWZkYWFkZmFlNmQyMmMxZWIzOTA0MWUyLi5mMDA3MWMyY2UyZjQwODA3Mjk4M2IwYzViMzY1MTJh
NTc2NTJhZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dC5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNCaXRtYXBSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGlzUGxhY2Vob2xkZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc09mZnNjcmVlbjJkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNQYWludCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKSB7fQogICAgIHZpcnR1YWwg
UGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KQEAgLTcz
LDcgKzc0LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IENhbnZhc1JlbmRl
cmluZ0NvbnRleHQoQ2FudmFzQmFzZSYpOwogICAgIGJvb2wgd291bGRUYWludE9yaWdpbihjb25z
dCBDYW52YXNQYXR0ZXJuKik7Ci0gICAgYm9vbCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEhUTUxD
YW52YXNFbGVtZW50Kik7CisgICAgYm9vbCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IENhbnZhc0Jh
c2UqKTsKICAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTEltYWdlRWxlbWVudCop
OwogICAgIGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBIVE1MVmlkZW9FbGVtZW50Kik7CiAg
ICAgYm9vbCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEltYWdlQml0bWFwKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwCmluZGV4IDE0NGU2OGRlY2M1NmI5NmM1NTk4YmNiOTg5NTFlNzM5ZGQxNzlmYjcu
Ljg4ZjM1NjYyZDA5YjViODIyOGQzNzA4ZWI3ZDJkYjllNjUzZDdjMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwCkBAIC04OCw4ICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgRGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0IGRpc3BsYXlMaXN0OwogICAgIAogICAgIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGNsaXApCisgICAg
ICAgIDogRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dChjb250ZXh0LnN0YXRlKCksIGNsaXApCisg
ICAgeworICAgIH0KKworICAgIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApCiAgICAgICAgIDog
Y29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBkaXNwbGF5TGlzdENvbnRleHQpIHsKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlz
cGxheUxpc3RDb250ZXh0LCBkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBjbGlwLCBBZmZp
bmVUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNw
bGF5TGlzdDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgZGlzcGxheUxpc3QsIHN0YXRl
LCBjbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgICAgIH0pCiAgICAgewogICAgIH0KQEAg
LTE0Niw4ICsxNTEsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnVud2lu
ZFN0YXRlU3RhY2soKQogICAgIC8vIGlzIGNsZWFyZWQgYmVmb3JlIGRlc3RydWN0aW9uLCB0byBh
dm9pZCBhc3NlcnRpb25zIGluIHRoZQogICAgIC8vIEdyYXBoaWNzQ29udGV4dCBkdG9yLgogICAg
IGlmIChzaXplX3Qgc3RhY2tTaXplID0gbV9zdGF0ZVN0YWNrLnNpemUoKSkgewotICAgICAgICBh
dXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsK
LSAgICAgICAgaWYgKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGNhbnZhcy5leGlzdGluZ0Ry
YXdpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBjYW52YXNCYXNl
KCkuZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpKSB7CiAgICAgICAgICAgICB3aGlsZSAoLS1zdGFj
a1NpemUpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICB9CkBA
IC0xNjcsMTAgKzE3MSw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6On5DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlKCkKIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6aXNBY2NlbGVyYXRlZCgpIGNvbnN0CiB7CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFD
S0lOR19TVE9SRSkgfHwgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBhdXRvJiBj
YW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKLSAgICBp
ZiAoIWNhbnZhcy5oYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGF1dG8qIGNvbnRleHQgPSBkcmF3aW5nQ29udGV4dCgpOworICAgIGF1dG8qIGNvbnRl
eHQgPSBjYW52YXNCYXNlKCkuZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpOwogICAgIHJldHVybiBj
b250ZXh0ICYmIGNvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCk7CiAjZWxzZQogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTQwMSw5ICs0MDIsOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OnNldFN0cm9rZVN0eWxlKENhbnZhc1N0eWxlIHN0eWxlKQogICAgIGlmIChzdGF0
ZSgpLnN0cm9rZVN0eWxlLmlzVmFsaWQoKSAmJiBzdGF0ZSgpLnN0cm9rZVN0eWxlLmlzRXF1aXZh
bGVudENvbG9yKHN0eWxlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgY2FudmFzID0g
ZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7CisgICAgaWYgKHN0eWxl
LmlzQ3VycmVudENvbG9yKCkgJiYgaXM8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSkp
IHsKKyAgICAgICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNh
bnZhc0Jhc2UoKSk7CiAKLSAgICBpZiAoc3R5bGUuaXNDdXJyZW50Q29sb3IoKSkgewogICAgICAg
ICBpZiAoc3R5bGUuaGFzT3ZlcnJpZGVBbHBoYSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTog
U2hvdWxkIG5vdCB1c2UgUkdCQTMyIGhlcmUuCiAgICAgICAgICAgICBzdHlsZSA9IENhbnZhc1N0
eWxlKGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoY3VycmVudENvbG9yKCZjYW52YXMpLnJnYigpLCBz
dHlsZS5vdmVycmlkZUFscGhhKCkpKTsKQEAgLTQzMCw5ICs0MzEsOSBAQCB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2U6OnNldEZpbGxTdHlsZShDYW52YXNTdHlsZSBzdHlsZSkKICAg
ICBpZiAoc3RhdGUoKS5maWxsU3R5bGUuaXNWYWxpZCgpICYmIHN0YXRlKCkuZmlsbFN0eWxlLmlz
RXF1aXZhbGVudENvbG9yKHN0eWxlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgY2Fu
dmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7CisgICAgaWYg
KHN0eWxlLmlzQ3VycmVudENvbG9yKCkgJiYgaXM8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jh
c2UoKSkpIHsKKyAgICAgICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1l
bnQ+KGNhbnZhc0Jhc2UoKSk7CiAKLSAgICBpZiAoc3R5bGUuaXNDdXJyZW50Q29sb3IoKSkgewog
ICAgICAgICBpZiAoc3R5bGUuaGFzT3ZlcnJpZGVBbHBoYSgpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogU2hvdWxkIG5vdCB1c2UgUkdCQTMyIGhlcmUuCiAgICAgICAgICAgICBzdHlsZSA9IENh
bnZhc1N0eWxlKGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoY3VycmVudENvbG9yKCZjYW52YXMpLnJn
YigpLCBzdHlsZS5vdmVycmlkZUFscGhhKCkpKTsKQEAgLTkyOCw4ICs5MjksNyBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnJlc2V0VHJhbnNmb3JtKCkKIAogICAgIHJlYWxp
emVTYXZlcygpOwogCi0gICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1l
bnQ+KGNhbnZhc0Jhc2UoKSk7Ci0gICAgYy0+c2V0Q1RNKGNhbnZhcy5iYXNlVHJhbnNmb3JtKCkp
OworICAgIGMtPnNldENUTShjYW52YXNCYXNlKCkuYmFzZVRyYW5zZm9ybSgpKTsKICAgICBtb2Rp
ZmlhYmxlU3RhdGUoKS50cmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oKTsKIAogICAgIGlmICho
YXNJbnZlcnRpYmxlVHJhbnNmb3JtKQpAQCAtMTcyNywxOCArMTcyNywxNiBAQCB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNsZWFyQ2FudmFzKCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgYy0+c2F2ZSgpOwotICAgIGF1dG8mIGNhbnZhcyA9IGRvd25jYXN0PEhUTUxDYW52YXNF
bGVtZW50PihjYW52YXNCYXNlKCkpOwotICAgIGMtPnNldENUTShjYW52YXMuYmFzZVRyYW5zZm9y
bSgpKTsKLSAgICBjLT5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCgpLCBj
YW52YXMuaGVpZ2h0KCkpKTsKKyAgICBjLT5zZXRDVE0oY2FudmFzQmFzZSgpLmJhc2VUcmFuc2Zv
cm0oKSk7CisgICAgYy0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBjYW52YXNCYXNlKCkud2lk
dGgoKSwgY2FudmFzQmFzZSgpLmhlaWdodCgpKSk7CiAgICAgYy0+cmVzdG9yZSgpOwogfQogCiBQ
YXRoIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnRyYW5zZm9ybUFyZWFUb0RldmljZShj
b25zdCBQYXRoJiBwYXRoKSBjb25zdAogewogICAgIFBhdGggdHJhbnNmb3JtZWQocGF0aCk7Ci0g
ICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2Uo
KSk7CiAgICAgdHJhbnNmb3JtZWQudHJhbnNmb3JtKHN0YXRlKCkudHJhbnNmb3JtKTsKLSAgICB0
cmFuc2Zvcm1lZC50cmFuc2Zvcm0oY2FudmFzLmJhc2VUcmFuc2Zvcm0oKSk7CisgICAgdHJhbnNm
b3JtZWQudHJhbnNmb3JtKGNhbnZhc0Jhc2UoKS5iYXNlVHJhbnNmb3JtKCkpOwogICAgIHJldHVy
biB0cmFuc2Zvcm1lZDsKIH0KIApAQCAtMTc1MiwxNyArMTc1MCwxNCBAQCBQYXRoIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2U6OnRyYW5zZm9ybUFyZWFUb0RldmljZShjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnJlY3RDb250YWlu
c0NhbnZhcyhjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgRmxvYXRRdWFkIHF1
YWQocmVjdCk7Ci0gICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+
KGNhbnZhc0Jhc2UoKSk7Ci0gICAgRmxvYXRRdWFkIGNhbnZhc1F1YWQoRmxvYXRSZWN0KDAsIDAs
IGNhbnZhcy53aWR0aCgpLCBjYW52YXMuaGVpZ2h0KCkpKTsKKyAgICBGbG9hdFF1YWQgY2FudmFz
UXVhZChGbG9hdFJlY3QoMCwgMCwgY2FudmFzQmFzZSgpLndpZHRoKCksIGNhbnZhc0Jhc2UoKS5o
ZWlnaHQoKSkpOwogICAgIHJldHVybiBzdGF0ZSgpLnRyYW5zZm9ybS5tYXBRdWFkKHF1YWQpLmNv
bnRhaW5zUXVhZChjYW52YXNRdWFkKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4gSW50UmVjdCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjYWxjdWxhdGVDb21wb3NpdGluZ0J1ZmZlclJl
Y3QoY29uc3QgVCYgYXJlYSwgSW50U2l6ZSogY3JvcHBlZE9mZnNldCkKIHsKLSAgICBhdXRvJiBj
YW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKLQotICAg
IEludFJlY3QgY2FudmFzUmVjdCgwLCAwLCBjYW52YXMud2lkdGgoKSwgY2FudmFzLmhlaWdodCgp
KTsKLSAgICBjYW52YXNSZWN0ID0gY2FudmFzLmJhc2VUcmFuc2Zvcm0oKS5tYXBSZWN0KGNhbnZh
c1JlY3QpOworICAgIEludFJlY3QgY2FudmFzUmVjdCgwLCAwLCBjYW52YXNCYXNlKCkud2lkdGgo
KSwgY2FudmFzQmFzZSgpLmhlaWdodCgpKTsKKyAgICBjYW52YXNSZWN0ID0gY2FudmFzQmFzZSgp
LmJhc2VUcmFuc2Zvcm0oKS5tYXBSZWN0KGNhbnZhc1JlY3QpOwogICAgIFBhdGggcGF0aCA9IHRy
YW5zZm9ybUFyZWFUb0RldmljZShhcmVhKTsKICAgICBJbnRSZWN0IGJ1ZmZlclJlY3QgPSBlbmNs
b3NpbmdJbnRSZWN0KHBhdGguZmFzdEJvdW5kaW5nUmVjdCgpKTsKICAgICBJbnRQb2ludCBvcmln
aW5hbExvY2F0aW9uID0gYnVmZmVyUmVjdC5sb2NhdGlvbigpOwpAQCAtMTc3OSw5ICsxNzc0LDgg
QEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpjcmVhdGVDb21wb3NpdGluZ0J1ZmYKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpjb21wb3NpdGVCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgSW50UmVj
dCYgYnVmZmVyUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7Ci0gICAgYXV0byYgY2FudmFz
ID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7Ci0gICAgSW50UmVj
dCBjYW52YXNSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCgpLCBjYW52YXMuaGVpZ2h0KCkpOwotICAg
IGNhbnZhc1JlY3QgPSBjYW52YXMuYmFzZVRyYW5zZm9ybSgpLm1hcFJlY3QoY2FudmFzUmVjdCk7
CisgICAgSW50UmVjdCBjYW52YXNSZWN0KDAsIDAsIGNhbnZhc0Jhc2UoKS53aWR0aCgpLCBjYW52
YXNCYXNlKCkuaGVpZ2h0KCkpOworICAgIGNhbnZhc1JlY3QgPSBjYW52YXNCYXNlKCkuYmFzZVRy
YW5zZm9ybSgpLm1hcFJlY3QoY2FudmFzUmVjdCk7CiAKICAgICBhdXRvKiBjID0gZHJhd2luZ0Nv
bnRleHQoKTsKICAgICBpZiAoIWMpCkBAIC0xOTQ2LDEyICsxOTQwLDE2IEBAIEV4Y2VwdGlvbk9y
PFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3Jl
YXRlUGF0dGVybihICiAgICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1Bh
dHRlcm46OmNyZWF0ZSgqY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VFbGVtZW50
LnJlbmRlcmVyKCkpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKIH0KIAotRXhj
ZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpjcmVhdGVQYXR0ZXJuKEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMsIGJvb2wgcmVwZWF0
WCwgYm9vbCByZXBlYXRZKQorRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKENhbnZhc0Jhc2UmIGNhbnZh
cywgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCiB7Ci0gICAgaWYgKCFjYW52YXMud2lkdGgo
KSB8fCAhY2FudmFzLmhlaWdodCgpIHx8ICFjYW52YXMuYnVmZmVyKCkpCisgICAgaWYgKCFjYW52
YXMud2lkdGgoKSB8fCAhY2FudmFzLmhlaWdodCgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKyAgICBhdXRvKiBjb3BpZWRJbWFnZSA9IGNhbnZhcy5j
b3BpZWRJbWFnZSgpOworCisgICAgaWYgKCFjb3BpZWRJbWFnZSkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKLSAgICByZXR1cm4gUmVmUHRyPENhbnZh
c1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKCpjYW52YXMuY29waWVkSW1hZ2UoKSwg
cmVwZWF0WCwgcmVwZWF0WSwgY2FudmFzLm9yaWdpbkNsZWFuKCkpIH07CisgICAgcmV0dXJuIFJl
ZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZSgqY29waWVkSW1hZ2Us
IHJlcGVhdFgsIHJlcGVhdFksIGNhbnZhcy5vcmlnaW5DbGVhbigpKSB9OwogfQogICAgIAogI2lm
IEVOQUJMRShWSURFTykKQEAgLTE5ODgsOCArMTk4Niw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxD
YW52YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVy
bihJCiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZGlkRHJhd0VudGlyZUNh
bnZhcygpCiB7Ci0gICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+
KGNhbnZhc0Jhc2UoKSk7Ci0gICAgZGlkRHJhdyhGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygp
LCBjYW52YXMuc2l6ZSgpKSwgQ2FudmFzRGlkRHJhd0FwcGx5Q2xpcCk7CisgICAgZGlkRHJhdyhG
bG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBjYW52YXNCYXNlKCkuc2l6ZSgpKSwgQ2FudmFz
RGlkRHJhd0FwcGx5Q2xpcCk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6ZGlkRHJhdyhjb25zdCBGbG9hdFJlY3QmIHIsIHVuc2lnbmVkIG9wdGlvbnMpCkBAIC0yMDM0
LDggKzIwMzEsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRpZERyYXco
Y29uc3QgRmxvYXRSZWN0JiByLCB1bnNpZ25lZCBvcHRpb25zKQogICAgICAgICAvLyB3ZSdkIGhh
dmUgdG8ga2VlcCB0aGUgY2xpcCBwYXRoIGFyb3VuZC4KICAgICB9CiAKLSAgICBhdXRvJiBjYW52
YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKLSAgICBjYW52
YXMuZGlkRHJhdyhkaXJ0eVJlY3QpOworICAgIGNhbnZhc0Jhc2UoKS5kaWREcmF3KGRpcnR5UmVj
dCk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0VHJhY2tzRGlz
cGxheUxpc3RSZXBsYXkoYm9vbCB0cmFja3NEaXNwbGF5TGlzdFJlcGxheSkKQEAgLTIwNzUsMTAg
KzIwNzEsOCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKCkKICAgICAgICAgaWYgKCFtX3JlY29yZGluZ0NvbnRleHQpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRN
TENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7Ci0KLSAgICAgICAgRmxvYXRSZWN0IGNsaXAo
RmxvYXRQb2ludDo6emVybygpLCBjYW52YXMuc2l6ZSgpKTsKLSAgICAgICAgRGlzcGxheUxpc3Q6
OlJlcGxheWVyIHJlcGxheWVyKCpjYW52YXMuZHJhd2luZ0NvbnRleHQoKSwgbV9yZWNvcmRpbmdD
b250ZXh0LT5kaXNwbGF5TGlzdCk7CisgICAgICAgIEZsb2F0UmVjdCBjbGlwKEZsb2F0UG9pbnQ6
Onplcm8oKSwgY2FudmFzQmFzZSgpLnNpemUoKSk7CisgICAgICAgIERpc3BsYXlMaXN0OjpSZXBs
YXllciByZXBsYXllcigqY2FudmFzQmFzZSgpLmRyYXdpbmdDb250ZXh0KCksIG1fcmVjb3JkaW5n
Q29udGV4dC0+ZGlzcGxheUxpc3QpOwogCiAgICAgICAgIGlmIChVTkxJS0VMWShtX3RyYWNrc0Rp
c3BsYXlMaXN0UmVwbGF5KSkgewogICAgICAgICAgICAgYXV0byByZXBsYXlMaXN0ID0gcmVwbGF5
ZXIucmVwbGF5KGNsaXAsIG1fdHJhY2tzRGlzcGxheUxpc3RSZXBsYXkpOwpAQCAtMjA5MiwxNCAr
MjA4NiwxMyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKCkKIAogR3JhcGhpY3NDb250ZXh0KiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgYXV0byYgY2FudmFz
ID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7CiAgICAgaWYgKFVO
TElLRUxZKG1fdXNlc0Rpc3BsYXlMaXN0RHJhd2luZykpIHsKICAgICAgICAgaWYgKCFtX3JlY29y
ZGluZ0NvbnRleHQpCi0gICAgICAgICAgICBtX3JlY29yZGluZ0NvbnRleHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQ+KCpjYW52YXMuZHJhd2luZ0NvbnRleHQo
KSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFzLnNpemUoKSkpOworICAgICAg
ICAgICAgbV9yZWNvcmRpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdERy
YXdpbmdDb250ZXh0PihHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoRmxvYXRQb2lu
dDo6emVybygpLCBjYW52YXNCYXNlKCkuc2l6ZSgpKSk7CiAgICAgICAgIHJldHVybiAmbV9yZWNv
cmRpbmdDb250ZXh0LT5jb250ZXh0OwogICAgIH0KIAotICAgIHJldHVybiBjYW52YXMuZHJhd2lu
Z0NvbnRleHQoKTsKKyAgICByZXR1cm4gY2FudmFzQmFzZSgpLmRyYXdpbmdDb250ZXh0KCk7CiB9
CiAKIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGVFbXB0eUltYWdlRGF0YShjb25zdCBJ
bnRTaXplJiBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCmluZGV4IDY1NTQ4YWQxZjQ5NmIwYWMwMzYw
NjEzNzM1ZTliMzZlMTUzNzQ5NjEuLmFkNTM4Y2Q3OTBiNDc2ZWMzMjE4YTkyMTZhNmI1NjY4OWUw
YjY4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKQEAgLTMxNiw3ICszMTYsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBzZXRGaWxsU3R5bGUoQ2FudmFzU3R5bGUpOwogCiAgICAgRXhjZXB0aW9uT3I8
UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBjcmVhdGVQYXR0ZXJuKEhUTUxJbWFnZUVsZW1lbnQmLCBi
b29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZh
c1BhdHRlcm4+PiBjcmVhdGVQYXR0ZXJuKEhUTUxDYW52YXNFbGVtZW50JiwgYm9vbCByZXBlYXRY
LCBib29sIHJlcGVhdFkpOworICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4g
Y3JlYXRlUGF0dGVybihDYW52YXNCYXNlJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpOwog
I2lmIEVOQUJMRShWSURFTykKICAgICBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+
IGNyZWF0ZVBhdHRlcm4oSFRNTFZpZGVvRWxlbWVudCYsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBl
YXRZKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGFp
bnRSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGFp
bnRSZW5kZXJpbmdDb250ZXh0MkQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhZTFmY2EyMTA0M2YyMDNhYjYx
OTNkMDkxZGJhYjRkNmIwZThmZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTAsMCArMSw0NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oIgorCisjaWYgRU5B
QkxFKENTU19QQUlOVElOR19BUEkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlx
dWVfcHRyPFBhaW50UmVuZGVyaW5nQ29udGV4dDJEPiBQYWludFJlbmRlcmluZ0NvbnRleHQyRDo6
Y3JlYXRlKENhbnZhc0Jhc2UmIGNhbnZhcykKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PFBhaW50UmVuZGVyaW5nQ29udGV4dDJEPihuZXcgUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQoY2Fu
dmFzKSk7Cit9CisKK1BhaW50UmVuZGVyaW5nQ29udGV4dDJEOjpQYWludFJlbmRlcmluZ0NvbnRl
eHQyRChDYW52YXNCYXNlJiBjYW52YXMpCisgICAgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlKGNhbnZhcywgZmFsc2UsIGZhbHNlKQoreworfQorCitQYWludFJlbmRlcmluZ0NvbnRleHQy
RDo6flBhaW50UmVuZGVyaW5nQ29udGV4dDJEKCkgPSBkZWZhdWx0OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9Q
YWludFJlbmRlcmluZ0NvbnRleHQyRC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkOGE0MDQ5NTEyZGEyNjI2MTYz
M2FmZmY5YjJhNGFhODdhMTNlMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaCIKKworI2lmIEVOQUJM
RShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiQ3VzdG9tUGFpbnRDYW52YXMuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWludFJlbmRlcmluZ0NvbnRleHQyRCBmaW5h
bCA6IHB1YmxpYyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhaW50UmVuZGVyaW5nQ29udGV4dDJEPiBjcmVhdGUoQ2Fu
dmFzQmFzZSYpOworCisgICAgdmlydHVhbCB+UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQoKTsKKwor
ICAgIGJvb2wgaXNQYWludCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBD
dXN0b21QYWludENhbnZhcyYgY2FudmFzKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8Q3VzdG9t
UGFpbnRDYW52YXM+KGNhbnZhc0Jhc2UoKSk7IH0KKworcHJpdmF0ZToKKyAgICBQYWludFJlbmRl
cmluZ0NvbnRleHQyRChDYW52YXNCYXNlJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBTlZBU1JFTkRFUklOR0NPTlRFWFQoV2ViQ29yZTo6
UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQsIGlzUGFpbnQoKSkKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjNlOTFjZTdlNDhlMDVjYzhmMTIzYWExZmZhZTlhOGUyZTg2OTk4MGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0Nv
bnRleHQyRC5pZGwKQEAgLTAsMCArMSw0NSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitbCisg
ICAgQ3VzdG9tSXNSZWFjaGFibGUsCisgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQ
SSwKKyAgICBDb25kaXRpb25hbD1DU1NfUEFJTlRJTkdfQVBJLAorICAgIEpTR2VuZXJhdGVUb0pT
T2JqZWN0LAorICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorXSBpbnRlcmZhY2UgUGFpbnRSZW5k
ZXJpbmdDb250ZXh0MkQgeworfTsKKworUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgaW1wbGVtZW50
cyBDYW52YXNTdGF0ZTsKK1BhaW50UmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMgQ2FudmFz
VHJhbnNmb3JtOworUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgaW1wbGVtZW50cyBDYW52YXNDb21w
b3NpdGluZzsKK1BhaW50UmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMgQ2FudmFzSW1hZ2VT
bW9vdGhpbmc7CitQYWludFJlbmRlcmluZ0NvbnRleHQyRCBpbXBsZW1lbnRzIENhbnZhc0ZpbGxT
dHJva2VTdHlsZXM7CitQYWludFJlbmRlcmluZ0NvbnRleHQyRCBpbXBsZW1lbnRzIENhbnZhc1No
YWRvd1N0eWxlczsKK1BhaW50UmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMgQ2FudmFzUmVj
dDsKK1BhaW50UmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMgQ2FudmFzRHJhd1BhdGg7CitQ
YWludFJlbmRlcmluZ0NvbnRleHQyRCBpbXBsZW1lbnRzIENhbnZhc0RyYXdJbWFnZTsKK1BhaW50
UmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMgQ2FudmFzUGF0aERyYXdpbmdTdHlsZXM7CitQ
YWludFJlbmRlcmluZ0NvbnRleHQyRCBpbXBsZW1lbnRzIENhbnZhc1BhdGg7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50
RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3IuaAppbmRleCAyNmJjM2UwYzc1YTIyMTExNDZjNDNlZWFm
Y2NhZmJkN2UwOTgzMzFjLi5lZGQ0YjA1N2U0NjIxMDFiZDgyN2I2NGJjMjZhNzE4ZWRmYmZkNWJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYk1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTI3LDggKzI3LDgg
QEAKIAogI2lmIEVOQUJMRShXRUJNRVRBTCkKIAotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9DdXN0b21QYWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCmluZGV4IDhiMzQ5MzYyNzljNGM2MTliZmVlZjUzZDA4
NDZkODdjOTIxZDAxY2UuLmQyZTQyYzBjOWU2MTk5ZjUyNzQyOTE2NzBmMTdhMDZlOWRlODIwZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBh
aW50SW1hZ2UuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJ
TkdfQVBJKQogCisjaW5jbHVkZSAiQ3VzdG9tUGFpbnRDYW52YXMuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIkltYWdl
QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNDU1NQYWludENhbGxiYWNrLmgiCi0jaW5jbHVkZSAiT2Zm
c2NyZWVuQ2FudmFzLmgiCi0jaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5j
bHVkZSAiUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01MSwyOSArNTEsMjQgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRv
Q3VzdG9tUGFpbnQoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY28KICAgICBhdXRvKiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0ID0gY2FsbGJhY2suc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OwogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuIEltYWdl
RHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKLSAgICBhdXRvKiBleGVjU3RhdGUgPSBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5leGVjU3RhdGUoKTsKLSAgICBpZiAoIWV4ZWNTdGF0ZSkKLSAgICAgICAg
cmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGF1dG8gY2FudmFzID0g
T2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGRlc3RTaXpl
LndpZHRoKCksIGRlc3RTaXplLmhlaWdodCgpKTsKLSAgICBFeGNlcHRpb25PcjxPZmZzY3JlZW5S
ZW5kZXJpbmdDb250ZXh0PiBjb250ZXh0T3JFeGNlcHRpb24gPSBjYW52YXMtPmdldENvbnRleHQo
KmV4ZWNTdGF0ZSwgT2Zmc2NyZWVuQ2FudmFzOjpSZW5kZXJpbmdDb250ZXh0VHlwZTo6V2ViZ2ws
IHsgfSk7CisgICAgYXV0byBjYW52YXMgPSBDdXN0b21QYWludENhbnZhczo6Y3JlYXRlKCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBkZXN0U2l6ZS53aWR0aCgpLCBkZXN0U2l6ZS5oZWlnaHQoKSk7
CisgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFBhaW50UmVuZGVyaW5nQ29udGV4dDJEPj4gY29udGV4
dE9yRXhjZXB0aW9uID0gY2FudmFzLT5nZXRDb250ZXh0KCk7CiAKICAgICBpZiAoY29udGV4dE9y
RXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0
OjpEaWROb3RoaW5nOwogICAgIGF1dG8gY29udGV4dCA9IGNvbnRleHRPckV4Y2VwdGlvbi5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKIAotICAgIGNvbnRleHQtPmNsZWFyQ29sb3IoMCwgMCwgMCwgMS4w
KTsKLSAgICBjb250ZXh0LT5jbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLQogICAgIGF1dG8g
cmVzdWx0ID0gbV9wYWludENhbGxiYWNrLT5oYW5kbGVFdmVudCgqY29udGV4dCk7CiAgICAgaWYg
KHJlc3VsdC50eXBlKCkgIT0gQ2FsbGJhY2tSZXN1bHRUeXBlOjpTdWNjZXNzKQogICAgICAgICBy
ZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgYXV0byBiaXRtYXAgPSBj
YW52YXMtPnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpOwotICAgIGlmICghYml0bWFwKQorICAgIFVO
VVNFRF9QQVJBTShkZXN0Q29udGV4dCk7CisgICAgYXV0byBpbWFnZSA9IGNhbnZhcy0+Y29waWVk
SW1hZ2UoKTsKKyAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0
OjpEaWROb3RoaW5nOwogCi0gICAgZGVzdENvbnRleHQuZHJhd0ltYWdlKCpiaXRtYXAtPmJ1ZmZl
cigpLT5jb3B5SW1hZ2UoKSwgRmxvYXRQb2ludCgpKTsKKyAgICBkZXN0Q29udGV4dC5kcmF3SW1h
Z2UoKmltYWdlLCBGbG9hdFBvaW50KCkpOwogCiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6
RGlkRHJhdzsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA4YjdiMzQ2MzFhZjJmZjc0OTA3OTFjZWVhNzkzNWNmYTM0MWI3
MjM4Li4yODAyNjg0NDgzOWQyNTJmOTliMzQwZTMzODM3NGZiNTc2MWY2NmU4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTgtMTAtMjIgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIENTUyBQYWludCBBUEkgc2hvdWxkIGdpdmUgYSAyZCByZW5k
ZXJpbmcgY29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkwNzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbDoKKwogMjAxOC0xMC0xOSAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjIzNzI1NC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9iYXNpYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9t
LXBhaW50L2Jhc2ljLmh0bWwKaW5kZXggY2YzYWZlODM0NTE2ZjdmMDFiMDcyNjE2ZDJmOTI2YTlm
YWFiZWYwMi4uM2Y0ZGMzYTJkMDJlZjIxYTJlOTcyZDRjOGI0ZjJmYWU4YzM4OTQ1OCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLmh0bWwKQEAgLTgsOCArOCw4
IEBACiA8c3R5bGU+CiAgICNwYWludCB7CiAgICAgYmFja2dyb3VuZC1pbWFnZTogcGFpbnQobXkt
cGFpbnQpOwotICAgIHdpZHRoOiA1MHB4OwotICAgIGhlaWdodDogNTBweDsKKyAgICB3aWR0aDog
MTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsKICAgfQogPC9zdHlsZT4KIApAQCAtNzAsOCArNzAs
MTMgQEAgbGV0IHBhaW50X2NhbGxlZF90ZXN0ID0gYXN5bmNfdGVzdCgndGVzdCB0aGF0IHRlc3Qg
ZGl2IHBhaW50IGNhbGxiYWNrIGdldHMgY2FsbGUKIHBhaW50X2NhbGxlZF90ZXN0LnN0ZXAoZnVu
Y3Rpb24oKSB7CiAgIENTUy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCdt
eS1wYWludCcsIGNsYXNzIHsKICAgICBwYWludChjdHgsIGdlb20sIHByb3BlcnRpZXMpIHsKLSAg
ICAgIGN0eC5jbGVhckNvbG9yKDAsMS4wLDAsMS4wKTsKLSAgICAgIGN0eC5jbGVhcihjdHguQ09M
T1JfQlVGRkVSX0JJVCk7CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7CisgICAg
ICAgIGZvciAodmFyIGogPSAwOyBqIDwgNjsgaisrKXsKKyAgICAgICAgICBjdHguZmlsbFN0eWxl
ID0gJ3JnYignICsgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaikgKyAnLDApJzsKKyAg
ICAgICAgICBjdHguZmlsbFJlY3QoaiAqIDI1LCBpICogMjUsIDI1LCAyNSk7CisgICAgICAgIH0K
KyAgICAgIH0KICAgICAgIHBhaW50X2NhbGxlZF90ZXN0LmRvbmUoKTsKICAgICB9CiAgIH0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352921</attachid>
            <date>2018-10-22 16:00:31 -0700</date>
            <delta_ts>2018-10-22 17:07:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190762-20181022160031.patch</filename>
            <type>text/plain</type>
            <size>55045</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ4M2QyZmU0N2E4ODVm
NjA0ODZlYjJlMWJjNGYzNTY5YTBjYzk3Yy4uZTc3OWZiNzU0NWI0MmRhYmZkNDJlMTVkY2U0MGVk
OThiYWRkMTk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE4LTEwLTIyICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBDU1MgUGFp
bnQgQVBJIHNob3VsZCBnaXZlIGEgMmQgcmVuZGVyaW5nIGNvbnRleHQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyB0eXBlIG9mIGNhbnZh
cyBhbmQgMmQgcmVuZGVyaW5nIGNvbnRleHQgdG8gc3VwcG9ydCB0aGUgQ1NTIFBhaW50aW5nIEFQ
SS4KKyAgICAgICAgTWFrZSBtYW55IG9mIHRoZSBtZXRob2RzIGZyb20gSFRNTENhbnZhc0VsZW1l
bnQgdmlydHVhbCBmdW5jdGlvbnMgb24gQ2FudmFzQmFzZSwgYW5kCisgICAgICAgIHJlbW92ZSBt
YW55IG9mIHRoZSBkb3duY2FzdHMgaW4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZSBhcyBh
IHJlc3VsdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGFpbnRS
ZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFpbnRDYWxsYmFjay5oLgorICAgICAgICAoV2ViQ29yZTo6cm9vdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJET3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUGFpbnRSZW5kZXJpbmdDb250ZXh0
MkQ6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJD
b3JlQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogY3NzL0NTU1BhaW50Q2FsbGJhY2suaDoKKyAg
ICAgICAgKiBjc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGw6CisgICAgICAgICogaHRtbC9DYW52YXNC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0Jhc2U6On5DYW52YXNCYXNlKToKKyAg
ICAgICAgKiBodG1sL0NhbnZhc0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0Jhc2U6
OmlzQ3VzdG9tUGFpbnRDYW52YXMgY29uc3QpOgorICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRD
YW52YXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OkN1c3RvbVBhaW50
Q2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjp+Q3VzdG9tUGFp
bnRDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OndpZHRoIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpzZXRXaWR0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6aGVpZ2h0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpzZXRIZWlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tUGFpbnRDYW52YXM6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFp
bnRDYW52YXM6OmdldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52
YXM6OmNvcGllZEltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2Fu
dmFzOjpkcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWlu
dENhbnZhczo6ZXhpc3RpbmdEcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21QYWludENhbnZhczo6bWFrZVJlbmRlcmluZ1Jlc3VsdHNBdmFpbGFibGUpOgorICAg
ICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRDYW52YXMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaC4KKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9PZmZzY3JlZW5DYW52YXMuaDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4pOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQ6OmlzUGFpbnQgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3REcmF3aW5nQ29udGV4dDo6RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp1bndpbmRTdGF0ZVN0
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6Omlz
QWNjZWxlcmF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0RmlsbFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnJlc2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNsZWFyQ2FudmFzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnRyYW5zZm9ybUFyZWFU
b0RldmljZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpyZWN0Q29udGFpbnNDYW52YXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y2FsY3VsYXRlQ29tcG9zaXRpbmdCdWZmZXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNvbXBv
c2l0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpjcmVhdGVQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OmRpZERyYXdFbnRpcmVDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZGlkRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3
aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29u
dGV4dDJELmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJh
Y2suaC4KKyAgICAgICAgKFdlYkNvcmU6OlBhaW50UmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ6OlBhaW50UmVuZGVy
aW5nQ29udGV4dDJEKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRl
eHQyRC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5o
LgorICAgICAgICAqIGh0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmlkbDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsLgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpkb0N1c3RvbVBhaW50KToKKwogMjAxOC0x
MC0xOSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lG
Q10gUmVuZGVyUmVwbGFjZWQgcmVuZGVyZXIgc2hvdWxkIGNyZWF0ZSBJbmxpbmVCb3gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggOGIwMmE1MmQ1MGQwMWQ3N2VjMWUzNjEwY2M3ODcyNjEyNjM0ZTkz
OC4uYTU5NjQwNTIwOWU2M2IzYTRkMjI2YjZmYmNjZTdmZTcwNDQwY2M5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTgwMyw2ICs4MDMsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxF
UwogICAgIGh0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmlk
bAogICAgIGh0bWwvY2FudmFzL0ltYWdlU21vb3RoaW5nUXVhbGl0eS5pZGwKICAgICBodG1sL2Nh
bnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCisgICAgaHRtbC9jYW52
YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsCiAgICAgaHRtbC9jYW52YXMvUGF0aDJELmlk
bAogICAgIGh0bWwvY2FudmFzL1dlYk1ldGFsQnVmZmVyLmlkbAogICAgIGh0bWwvY2FudmFzL1dl
Yk1ldGFsQ29tbWFuZEJ1ZmZlci5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IDE1YTVkNmJkOTVlNzZkZjAxMmQ0ZjczODI2ZTA1MGZmZjhlYzk2MzYuLmVkOTY1M2Y4YTE2NTFk
MjQzYjE3OTAwYjI3NDcwNjQ5OGZmMTljNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtNzI2LDYgKzcyNiw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUp
L2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaWRsIFwKICAgICAkKFdlYkNv
cmUpL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsIFwKKwkk
KFdlYkNvcmUpL2h0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmlkbCBcCiAgICAg
JChXZWJDb3JlKS9odG1sL2NhbnZhcy9QYXRoMkQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL1dlYkdMQWN0aXZlSW5mby5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAwNDYzZDE1Nzll
NGM2MmQ5MzAxMmMwNjE1ZTkzMmJhNzRmMTYzZDNhLi5mM2MyNzkyZjk1ZGFiMGZlNGE5MWRhMTE4
MWNmM2EzMzZlMTA5OGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNDQzLDYgKzQ0Myw3IEBAIGJpbmRp
bmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9t
LmNwcAogYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTT2Zm
c2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAorYmluZGluZ3MvanMvSlNQ
YWludFJlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTUGF5bWVudE1l
dGhvZENoYW5nZUV2ZW50Q3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNQYXltZW50UmVzcG9uc2VD
dXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU1BlcmZvcm1hbmNlRW50cnlDdXN0b20uY3BwCkBAIC05
NjgsNiArOTY5LDcgQEAgaHRtbC9CdXR0b25JbnB1dFR5cGUuY3BwCiBodG1sL0NhbnZhc0Jhc2Uu
Y3BwCiBodG1sL0NoZWNrYm94SW5wdXRUeXBlLmNwcAogaHRtbC9Db2xvcklucHV0VHlwZS5jcHAK
K2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCiBodG1sL0RPTUZvcm1EYXRhLmNwcAogaHRtbC9E
T01Ub2tlbkxpc3QuY3BwCiBodG1sL0RPTVVSTC5jcHAKQEAgLTExMjYsNiArMTEyOCw3IEBAIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCiBodG1sL2NhbnZhcy9D
YW52YXNTdHlsZS5jcHAKIGh0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5j
cHAKIGh0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKK2h0
bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcAogaHRtbC9jYW52YXMvUGF0aDJE
LmNwcAogaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcAogaHRtbC9j
YW52YXMvV2ViTWV0YWxCdWZmZXIuY3BwCkBAIC0yODQzLDYgKzI4NDYsNyBAQCBKU09mZmxpbmVB
dWRpb0NvbXBsZXRpb25FdmVudC5jcHAKIEpTT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKIEpTT2Zm
c2NyZWVuQ2FudmFzLmNwcAogSlNPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CitKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcAogSlNPc2NpbGxhdG9yTm9kZS5jcHAKIEpT
T3ZlcmNvbnN0cmFpbmVkRXJyb3IuY3BwCiBKU092ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggYmExNWZjZjFkZWVjMDRmZWE2NDM2YzMwYTU4MWM2YjJkMjUzYWFlZS4uYTFiOWJjMzli
YWE1YjllMDFiYTk4NGM5YjY0YzgxOGEwOTgwMzBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM0NSw2ICsxMzQ1LDggQEAK
IAkJNEE5Q0M4MjExNkJGOUJCNDAwRUM2NDVBIC8qIEluc3BlY3RvckNTU09NV3JhcHBlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBOUNDODFGMTZC
RjlCQjQwMEVDNjQ1QSAvKiBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmggKi87IH07CiAJCTRBRDAx
MDA5MTI3RTY0MkEwMDE1MDM1RiAvKiBIVE1MT3V0cHV0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFEMDEwMDYxMjdFNjQyQTAwMTUwMzVG
IC8qIEhUTUxPdXRwdXRFbGVtZW50LmggKi87IH07CiAJCTRBRDAxNzNEMTI3RTgyODYwMDE1MDM1
RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTczQjEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0
RWxlbWVudC5oICovOyB9OworCQk0QjFFMTNFNzIxNzkwRDY2MDA0MkNGOTggLyogQ3VzdG9tUGFp
bnRDYW52YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCMUUxM0U2MjE3OTBENjYwMDQyQ0Y5OCAvKiBDdXN0b21QYWludENhbnZhcy5oICovOyB9Owor
CQk0QjFFMTNFQjIxNzkzN0IzMDA0MkNGOTggLyogUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMUUxM0VBMjE3
OTM3QjMwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oICovOyB9OwogCQk0QjI3
MDhDNzBBRjE5RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8qIFBh
c3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0QjMwNDNDRDBBRTAzNzNCMDBBODI2NDcgLyogRWRpdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjMwNDNDQjBBRTAzNzNCMDBBODI2NDcg
LyogRWRpdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNEIzNDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMzQ4MDkyMEVFRjUwRDQw
MEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHLmggKi87IH07CkBAIC03ODgzLDYgKzc4ODUsMTIgQEAK
IAkJNEFEMDE3M0ExMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3V0cHV0RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBRDAxNzNCMTI3RTgyODYwMDE1MDM1
RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTSFRNTE91dHB1dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEIxNzA2NjQyMTYyQjQyRjAwRTU3OEJCIC8qIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjFFMTNFNjIxNzkwRDY2MDA0MkNGOTggLyog
Q3VzdG9tUGFpbnRDYW52YXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VzdG9tUGFpbnRDYW52YXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEIxRTEzRTkyMTc5MEQ3RTAwNDJDRjk4IC8q
IEN1c3RvbVBhaW50Q2FudmFzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbVBhaW50Q2Fu
dmFzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEIxRTEzRUEyMTc5MzdCMzAw
NDJDRjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhaW50
UmVuZGVyaW5nQ29udGV4dDJELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCMUUx
M0VDMjE3OTM4MzgwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTRCMUUxM0VEMjE3OTNEQzEwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmlu
Z0NvbnRleHQyRC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0QjFFMTNFRTIxNzk0MTMyMDA0MkNGOTggLyogSlNQYWlu
dFJlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BhaW50
UmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8qIFBhc3RlYm9hcmQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0QjI3MDk4MTBBRjJFNUUwMDA2NTEyN0YgLyogUGFzdGVib2FyZE1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3RlYm9hcmRNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCMzA0M0NBMEFFMDM3M0IwMEE4MjY0NyAvKiBF
ZGl0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVkaXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzYyOCw2ICsxNzYzNiw5IEBACiAJ
CQkJMzE0MEM1MUQxRkRGMTUxQTAwRDJBODczIC8qIE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAgKi8sCiAJCQkJMzE0MEM1MUUxRkRGMTUxQTAwRDJBODczIC8qIE9mZnNjcmVl
bkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oICovLAogCQkJCTMxNDBDNTFCMUZERjEzRDIwMEQy
QTg3MyAvKiBPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsICovLAorCQkJCTRC
MUUxM0VDMjE3OTM4MzgwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5jcHAgKi8s
CisJCQkJNEIxRTEzRUEyMTc5MzdCMzAwNDJDRjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJE
LmggKi8sCisJCQkJNEIxRTEzRUQyMTc5M0RDMTAwNDJDRjk4IC8qIFBhaW50UmVuZGVyaW5nQ29u
dGV4dDJELmlkbCAqLywKIAkJCQk3QzE5M0JBNzFGNUUwRUFGMDA4OEYzRTYgLyogUGF0aDJELmNw
cCAqLywKIAkJCQk3QzE5M0JBQjFGNUUwRUIxMDA4OEYzRTYgLyogUGF0aDJELmggKi8sCiAJCQkJ
N0MxOTNCQjQxRjVFMEVCNzAwODhGM0U2IC8qIFBhdGgyRC5pZGwgKi8sCkBAIC0yMDIwNSw2ICsy
MDIxNiw3IEBACiAJCQkJQkNEOUMyNjEwQzE3QUE2NzAwNUM5MEEyIC8qIEpTTm9kZUxpc3RDdXN0
b20uY3BwICovLAogCQkJCUFEMjBCMThDMThFOUQyMTYwMDVBODA4MyAvKiBKU05vZGVMaXN0Q3Vz
dG9tLmggKi8sCiAJCQkJMzE0MEM1MkIxRkUwNkI0OTAwRDJBODczIC8qIEpTT2Zmc2NyZWVuQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKKwkJCQk0QjFFMTNFRTIxNzk0MTMy
MDA0MkNGOTggLyogSlNQYWludFJlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8sCiAJCQkJ
Q0IzOEZENTUxQ0QyMUQ1QjAwNTkyQTNGIC8qIEpTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAg
Ki8sCiAJCQkJODMzQ0Y3MEYyMERCM0Y1RjAwMTQxQkNDIC8qIEpTUGVyZm9ybWFuY2VPYnNlcnZl
ckN1c3RvbS5jcHAgKi8sCiAJCQkJQTRBNjlCOEJCOTFCNDlEMEE4MDRDMzFEIC8qIEpTUHJvbWlz
ZVJlamVjdGlvbkV2ZW50Q3VzdG9tLmNwcCAqLywKQEAgLTIwNzcxLDYgKzIwNzgzLDggQEAKIAkJ
CQk5M0M0NDFGRjBGODEzQUUxMDBDMUE2MzQgLyogQ29sbGVjdGlvblR5cGUuaCAqLywKIAkJCQlC
QzI5OTM1QzE3QTFERDU4MDBCQ0U4ODAgLyogQ29sb3JJbnB1dFR5cGUuY3BwICovLAogCQkJCUY1
NUIzRDgwMTI1MUYxMkQwMDNFRjI2OSAvKiBDb2xvcklucHV0VHlwZS5oICovLAorCQkJCTRCMUUx
M0U5MjE3OTBEN0UwMDQyQ0Y5OCAvKiBDdXN0b21QYWludENhbnZhcy5jcHAgKi8sCisJCQkJNEIx
RTEzRTYyMTc5MEQ2NjAwNDJDRjk4IC8qIEN1c3RvbVBhaW50Q2FudmFzLmggKi8sCiAJCQkJRTUx
NzY3MDIyMEI4OEMxNDAwRDQxMTY3IC8qIERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmgg
Ki8sCiAJCQkJRjU1QjNEODExMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVJbnB1dFR5cGUuY3BwICov
LAogCQkJCUY1NUIzRDgyMTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlSW5wdXRUeXBlLmggKi8sCkBA
IC0yODA4OSw2ICsyODEwMyw3IEBACiAJCQkJOTNENDM3QTAxRDU3QjE5QTAwQUI4NUVBIC8qIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkQ0RTkxQjFD
NDYyQ0ZDMDA1MDY1QkMgLyogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk2MkNEMzI1QTExNTdFNTdDMDA2M0IwQTcgLyogQ3VzdG9tRXZlbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTRCMUUxM0U3MjE3OTBENjYwMDQyQ0Y5OCAvKiBDdXN0b21QYWludENhbnZhcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEI3QUU0OTMyMTc3QjU2RjAwQzU5OTU5IC8qIEN1c3RvbVBh
aW50SW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0I0MTNFMEU4NjMzRkQwMDMyQzRGMCAv
KiBEYXNoQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2RDBCMEExOTg5Q0EwMDdGQjhD
NSAvKiBEYXNoYm9hcmRSZWdpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMzAxMTQsNiArMzAxMjks
NyBAQAogCQkJCTU1RUM5NTk5MjA2QUE3QTAwMDdERDBBOSAvKiBQYWludEZyZXF1ZW5jeVRyYWNr
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4ODUwNjdGMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWlu
dEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTA4ODUwNjgwMTFEQTA0NUIwMDE4MkI5OCAvKiBQ
YWludFBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0QjFFMTNFQjIxNzkzN0IzMDA0MkNGOTgg
LyogUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0ZC
MEExOTg5Q0EwMDdGQjhDNSAvKiBQYWlyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBMzEy
QjAyNkY3MDBDMUEzNTkgLyogUGFubmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxQTEy
QjAyNjc2MDBDMUEzNTkgLyogUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BhaW50UmVuZGVyaW5nQ29udGV4dDJEQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiODEzNmYzMmYxOGFmZWZjM2FjMzM3ZjcwNzk3
MDk2ZGU4Y2UyNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BhaW50UmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcApAQCAtMCwwICsxLDU2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCIKKworI2lmIEVO
QUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1l
c3BhY2UgSlNDOworCitpbmxpbmUgdm9pZCogcm9vdChDdXN0b21QYWludENhbnZhcyogY2FudmFz
KQoreworICAgIHJldHVybiBjYW52YXM7Cit9CisKK2Jvb2wgSlNQYWludFJlbmRlcmluZ0NvbnRl
eHQyRE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiog
cmVhc29uKQoreworICAgIGlmIChVTkxJS0VMWShyZWFzb24pKQorICAgICAgICAqcmVhc29uID0g
IkNhbnZhcyBpcyBvcGFxdWUgcm9vdCI7CisKKyAgICBKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJE
KiBqc1BhaW50UmVuZGVyaW5nQ29udGV4dCA9IGpzQ2FzdDxKU1BhaW50UmVuZGVyaW5nQ29udGV4
dDJEKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgIHZvaWQqIHJvb3QgPSBXZWJDb3Jl
Ojpyb290KCZqc1BhaW50UmVuZGVyaW5nQ29udGV4dC0+d3JhcHBlZCgpLmNhbnZhcygpKTsKKyAg
ICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCk7Cit9CisKK3ZvaWQgSlNQ
YWludFJlbmRlcmluZ0NvbnRleHQyRDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoJndyYXBwZWQo
KS5jYW52YXMoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4
IDAyNDkzMGQxNWM0YjRkMDIzMzEzMTc4YjE0MDVkNzgyYTQ1ZjZkNzEuLjAwODVhZDdlZmRiZDNj
ZjkxMTE3OTI1ZDBlMTcwMzg2MjI0NGVjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTExMyw2ICsxMTMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oTmF2aWdhdG9yVXNlck1lZGlhKSBcCiAgICAgbWFjcm8o
T2Zmc2NyZWVuQ2FudmFzKSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEKSBcCisgICAgbWFjcm8oUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQpIFwKICAgICBtYWNy
byhQYXltZW50QWRkcmVzcykgXAogICAgIG1hY3JvKFBheW1lbnRNZXRob2RDaGFuZ2VFdmVudCkg
XAogICAgIG1hY3JvKFBheW1lbnRSZXF1ZXN0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2Fs
bGJhY2suaAppbmRleCBmMGVjMmM0NDEzNWFlNDRjYzg5MzUwNmQ4NWE1MDc1OTYzYjIzMTM2Li5m
MjFlNjc4YmM5MWZkMGIyYmI2M2UxMWJiNTk1NmM0MWE3ZjcwOWRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYWludENhbGxiYWNrLmgKQEAgLTMyLDEzICszMiwxMyBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDsKK2NsYXNzIFBhaW50UmVuZGVyaW5nQ29udGV4dDJEOwogCiBjbGFzcyBDU1NQYWlu
dENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFpbnRDYWxsYmFjaz4sIHB1YmxpYyBB
Y3RpdmVET01DYWxsYmFjayB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQWN0aXZlRE9NQ2FsbGJhY2s6
OkFjdGl2ZURPTUNhbGxiYWNrOwogCi0gICAgdmlydHVhbCBDYWxsYmFja1Jlc3VsdDx2b2lkPiBo
YW5kbGVFdmVudChXZWJHTFJlbmRlcmluZ0NvbnRleHQmKSA9IDA7CisgICAgdmlydHVhbCBDYWxs
YmFja1Jlc3VsdDx2b2lkPiBoYW5kbGVFdmVudChQYWludFJlbmRlcmluZ0NvbnRleHQyRCYpID0g
MDsKIAogICAgIHZpcnR1YWwgfkNTU1BhaW50Q2FsbGJhY2soKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbAppbmRleCA3NmQ5YjZjOTViYTFjZjhkMjk1MmE0Nzlk
MWM1MzA3NDk0Y2M4MDljLi4yOTQxNDczYTAzMGJjODFjNWZiNmRkZDIzYTdjZDljZjMxMDUzNWJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsCkBAIC0yNiw0ICsyNiw0
IEBACiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKICAgICBDb25kaXRp
b25hbD1DU1NfUEFJTlRJTkdfQVBJLAotXSBjYWxsYmFjayBDU1NQYWludENhbGxiYWNrID0gdm9p
ZCAoV2ViR0xSZW5kZXJpbmdDb250ZXh0IGNvbnRleHQpOworXSBjYWxsYmFjayBDU1NQYWludENh
bGxiYWNrID0gdm9pZCAoUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgY29udGV4dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9DYW52YXNCYXNlLmNwcAppbmRleCA4NTkzOWIyNzRmNTkwYjAwY2M4M2EzNzk3Yjc5OTY5
NmRkZDZhOGMyLi40MGY4ZGIwNWM5ZDQ3YjgzOGIyNTY4ZmZlMTk1YTY0YjgzODMwNDQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgQ2FudmFzQmFzZTo6
Q2FudmFzQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQogCiBDYW52YXNCYXNlOjp+Q2FudmFzQmFzZSgpCiB7CisgICAgQVNTRVJUKCFtX2NvbnRleHQp
OyAvLyBTaG91bGQgaGF2ZSBiZWVuIHNldCB0byBudWxsIGJ5IGJhc2UgY2xhc3MuCiAgICAgbm90
aWZ5T2JzZXJ2ZXJzQ2FudmFzRGVzdHJveWVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNl
LmgKaW5kZXggNWRmZTI5MzUyZTE1MzRmNjYyMGM1MzY2YmViOTg0NDFhMWY0NzJmNy4uZmFkODFi
ZDIyNWU3M2VkNzllNjI0YjIwZjdjZDA0MmY3MDY4NWYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9DYW52YXNCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNC
YXNlLmgKQEAgLTMwLDkgKzMwLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
QWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgQ2FudmFzQmFzZTsKIGNsYXNzIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ7CiBjbGFzcyBFbGVtZW50OworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3Mg
SW1hZ2U7CitjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBGbG9hdFJl
Y3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpAQCAtNTgsNiArNjIsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNIVE1MQ2FudmFzRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzT2Zmc2NyZWVuQ2FudmFzKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0b21QYWludENhbnZhcygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHdpZHRoKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgPSAwOwpAQCAt
ODEsNiArODYsMTUgQEAgcHVibGljOgogCiAgICAgSGFzaFNldDxFbGVtZW50Kj4gY3NzQ2FudmFz
Q2xpZW50cygpIGNvbnN0OwogCisgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdD
b250ZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0KiBleGlzdGlu
Z0RyYXdpbmdDb250ZXh0KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIG1ha2VSZW5k
ZXJpbmdSZXN1bHRzQXZhaWxhYmxlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KGNv
bnN0IEZsb2F0UmVjdCYpID0gMDsKKworICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VU
cmFuc2Zvcm0oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbWFnZSogY29waWVkSW1hZ2UoKSBj
b25zdCA9IDA7CisKIHByb3RlY3RlZDoKICAgICBDYW52YXNCYXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENh
bnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNzZhYWQ1ZmI5NTI2MWVkNzg0OWRhMzY2YzA0ODVmOWIzMWQ3NmY4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKQEAg
LTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ3VzdG9tUGFpbnRDYW52YXMuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQor
CisjaW5jbHVkZSAiSW1hZ2VCaXRtYXAuaCIKKyNpbmNsdWRlICJQYWludFJlbmRlcmluZ0NvbnRl
eHQyRC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxDdXN0b21QYWludENhbnZhcz4g
Q3VzdG9tUGFpbnRDYW52YXM6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEN1c3RvbVBhaW50Q2FudmFzKGNvbnRleHQsIHdpZHRoLCBoZWlnaHQpKTsKK30KKwor
Q3VzdG9tUGFpbnRDYW52YXM6OkN1c3RvbVBhaW50Q2FudmFzKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCisgICAgOiBDYW52
YXNCYXNlKCZjb250ZXh0KQorICAgICwgbV9zaXplKHdpZHRoLCBoZWlnaHQpCit7Cit9CisKK0N1
c3RvbVBhaW50Q2FudmFzOjp+Q3VzdG9tUGFpbnRDYW52YXMoKQoreworICAgIG1fY29udGV4dCA9
IG51bGxwdHI7IC8vIEVuc3VyZSB0aGlzIGdvZXMgYXdheSBiZWZvcmUgdGhlIEltYWdlQnVmZmVy
LgorfQorCit1bnNpZ25lZCBDdXN0b21QYWludENhbnZhczo6d2lkdGgoKSBjb25zdAoreworICAg
IHJldHVybiBtX3NpemUud2lkdGgoKTsKK30KKwordm9pZCBDdXN0b21QYWludENhbnZhczo6c2V0
V2lkdGgodW5zaWduZWQgbmV3V2lkdGgpCit7CisgICAgcmV0dXJuIG1fc2l6ZS5zZXRXaWR0aChu
ZXdXaWR0aCk7Cit9CisKK3Vuc2lnbmVkIEN1c3RvbVBhaW50Q2FudmFzOjpoZWlnaHQoKSBjb25z
dAoreworICAgIHJldHVybiBtX3NpemUuaGVpZ2h0KCk7Cit9CisKK3ZvaWQgQ3VzdG9tUGFpbnRD
YW52YXM6OnNldEhlaWdodCh1bnNpZ25lZCBuZXdIZWlnaHQpCit7CisgICAgcmV0dXJuIG1fc2l6
ZS5zZXRIZWlnaHQobmV3SGVpZ2h0KTsKK30KKworY29uc3QgSW50U2l6ZSYgQ3VzdG9tUGFpbnRD
YW52YXM6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NpemU7Cit9CisKK3ZvaWQgQ3Vz
dG9tUGFpbnRDYW52YXM6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKK3sKKyAgICBt
X3NpemUgPSBuZXdTaXplOworfQorCitFeGNlcHRpb25PcjxSZWZQdHI8UGFpbnRSZW5kZXJpbmdD
b250ZXh0MkQ+PiBDdXN0b21QYWludENhbnZhczo6Z2V0Q29udGV4dCgpCit7CisgICAgaWYgKG1f
Y29udGV4dCkKKyAgICAgICAgcmV0dXJuIHsgUmVmUHRyPFBhaW50UmVuZGVyaW5nQ29udGV4dDJE
PiB7ICZkb3duY2FzdDxQYWludFJlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkgfSB9Owor
CisgICAgbV9jb250ZXh0ID0gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZSgqdGhpcyk7
CisgICAgZG93bmNhc3Q8UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ+KCptX2NvbnRleHQpLnNldFVz
ZXNEaXNwbGF5TGlzdERyYXdpbmcodHJ1ZSk7CisgICAgZG93bmNhc3Q8UGFpbnRSZW5kZXJpbmdD
b250ZXh0MkQ+KCptX2NvbnRleHQpLnNldFRyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KGZhbHNlKTsK
KworICAgIHJldHVybiB7IFJlZlB0cjxQYWludFJlbmRlcmluZ0NvbnRleHQyRD4geyAmZG93bmNh
c3Q8UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ+KCptX2NvbnRleHQpIH0gfTsKK30KKworSW1hZ2Uq
IEN1c3RvbVBhaW50Q2FudmFzOjpjb3BpZWRJbWFnZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFt
X2Rlc3RpbmF0aW9uR3JhcGhpY3NDb250ZXh0KTsKKyAgICBpZiAoIXdpZHRoKCkgfHwgIWhlaWdo
dCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIG1fY29waWVkQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFVuYWNjZWxlcmF0ZWQsIDEsIENvbG9yU3BhY2VTUkdC
LCBudWxscHRyKTsKKyAgICBpZiAoIW1fY29waWVkQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIG1fZGVzdGluYXRpb25HcmFwaGljc0NvbnRleHQgPSAmbV9jb3BpZWRCdWZm
ZXItPmNvbnRleHQoKTsKKyAgICBpZiAobV9jb250ZXh0KQorICAgICAgICBtX2NvbnRleHQtPnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCk7CisgICAgbV9kZXN0aW5hdGlvbkdyYXBoaWNz
Q29udGV4dCA9IG51bGxwdHI7CisKKyAgICBtX2NvcGllZEltYWdlID0gbV9jb3BpZWRCdWZmZXIt
PmNvcHlJbWFnZShtX2NvcGllZEJ1ZmZlci0+ZmFzdENvcHlJbWFnZU1vZGUoKSwgUHJlc2VydmVS
ZXNvbHV0aW9uOjpZZXMpOworICAgIHJldHVybiBtX2NvcGllZEltYWdlLmdldCgpOworfQorCitH
cmFwaGljc0NvbnRleHQqIEN1c3RvbVBhaW50Q2FudmFzOjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fZGVzdGluYXRpb25HcmFwaGljc0NvbnRleHQ7Cit9CisKK0dyYXBo
aWNzQ29udGV4dCogQ3VzdG9tUGFpbnRDYW52YXM6OmV4aXN0aW5nRHJhd2luZ0NvbnRleHQoKSBj
b25zdAoreworICAgIHJldHVybiBkcmF3aW5nQ29udGV4dCgpOworfQorCit2b2lkIEN1c3RvbVBh
aW50Q2FudmFzOjptYWtlUmVuZGVyaW5nUmVzdWx0c0F2YWlsYWJsZSgpCit7CisgICAgaWYgKG1f
Y29udGV4dCkKKyAgICAgICAgbV9jb250ZXh0LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cygpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3Vz
dG9tUGFpbnRDYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45OTU3MWZkZjczYjgyNjhlZTY1ZDFkZWYwMGFhZDRkZWVjYWRkMTM4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5o
CkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5j
bHVkZSAiQ2FudmFzQmFzZS5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAi
RXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkludFNp
emUuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIlNjcmlw
dFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBJbWFnZUJpdG1hcDsKK2NsYXNzIFBhaW50UmVuZGVyaW5nQ29u
dGV4dDJEOworCitjbGFzcyBDdXN0b21QYWludENhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEN1c3RvbVBhaW50Q2FudmFzPiwgcHVibGljIENhbnZhc0Jhc2UgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorCisgICAgc3RhdGljIFJlZjxDdXN0b21QYWludENh
bnZhcz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCB1bnNpZ25lZCB3aWR0aCwgdW5z
aWduZWQgaGVpZ2h0KTsKKyAgICB2aXJ0dWFsIH5DdXN0b21QYWludENhbnZhcygpOworICAgIGJv
b2wgaXNDdXN0b21QYWludENhbnZhcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIHVuc2lnbmVkIHdpZHRoKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRXaWR0aCh1bnNp
Z25lZCk7CisgICAgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRI
ZWlnaHQodW5zaWduZWQpOworCisgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IGZpbmFs
OworICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CisKKyAgICBFeGNlcHRp
b25PcjxSZWZQdHI8UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ+PiBnZXRDb250ZXh0KCk7CisKKyAg
ICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgY29uc3QgZmluYWw7CisgICAgR3Jh
cGhpY3NDb250ZXh0KiBleGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29uc3QgZmluYWw7CisKKyAg
ICB2b2lkIG1ha2VSZW5kZXJpbmdSZXN1bHRzQXZhaWxhYmxlKCkgZmluYWw7CisgICAgdm9pZCBk
aWREcmF3KGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsIHsgfQorCisgICAgQWZmaW5lVHJhbnNmb3Jt
IGJhc2VUcmFuc2Zvcm0oKSBjb25zdCBmaW5hbCB7IEFTU0VSVChtX2Rlc3RpbmF0aW9uR3JhcGhp
Y3NDb250ZXh0ICYmIG1fY29waWVkQnVmZmVyKTsgcmV0dXJuIG1fY29waWVkQnVmZmVyLT5iYXNl
VHJhbnNmb3JtKCk7IH0KKyAgICBJbWFnZSogY29waWVkSW1hZ2UoKSBjb25zdCBmaW5hbDsKKwor
ICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsK
KworcHJpdmF0ZToKKyAgICBDdXN0b21QYWludENhbnZhcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CisKKyAgICB2b2lkIHJlZkNhbnZh
c0Jhc2UoKSBmaW5hbCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkNhbnZhc0Jhc2UoKSBmaW5h
bCB7IGRlcmVmKCk7IH0KKworICAgIG11dGFibGUgR3JhcGhpY3NDb250ZXh0KiBtX2Rlc3RpbmF0
aW9uR3JhcGhpY3NDb250ZXh0ID0gbnVsbHB0cjsKKyAgICBtdXRhYmxlIEludFNpemUgbV9zaXpl
OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2NvcGllZEJ1ZmZl
cjsKKyAgICBtdXRhYmxlIFJlZlB0cjxJbWFnZT4gbV9jb3BpZWRJbWFnZTsKK307CisKK30KK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FOVkFTKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzLCBp
c0N1c3RvbVBhaW50Q2FudmFzKCkpCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuaAppbmRleCAyZGY5YzBiMzBmNTYwNmQ4YmVlNmMxYzgxODc3OWM2YjFlNDhlODhj
Li4wYmY0Nzc0ZDNjNmQ2YmM3MDYxZDQwZTZlZGM5YmEzYzdmMGZjYzJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCkBAIC0xMTIsMTIgKzExMiwxMiBAQCBwdWJsaWM6
CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gdG9CbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBS
ZWY8QmxvYkNhbGxiYWNrPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBKU0M6OkpTVmFsdWUg
cXVhbGl0eSk7CiAKICAgICAvLyBVc2VkIGZvciByZW5kZXJpbmcKLSAgICB2b2lkIGRpZERyYXco
Y29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYpIGZp
bmFsOwogCiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0
Jik7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgY29uc3Q7Ci0gICAg
R3JhcGhpY3NDb250ZXh0KiBleGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29uc3Q7CisgICAgR3Jh
cGhpY3NDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNz
Q29udGV4dCogZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHRvTWVkaWFTYW1wbGUo
KTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIEltYWdlQnVmZmVy
KiBidWZmZXIoKSBjb25zdDsKLSAgICBJbWFnZSogY29waWVkSW1hZ2UoKSBjb25zdDsKKyAgICBJ
bWFnZSogY29waWVkSW1hZ2UoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGNsZWFyQ29waWVkSW1h
Z2UoKTsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoKTsKICAgICB2b2lkIG1h
a2VQcmVzZW50YXRpb25Db3B5KCk7CkBAIC0xMzMsOSArMTMzLDkgQEAgcHVibGljOgogCiAgICAg
U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWw7CiAKLSAgICBBZmZp
bmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0OworICAgIEFmZmluZVRyYW5zZm9ybSBi
YXNlVHJhbnNmb3JtKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIG1ha2VSZW5kZXJpbmdSZXN1
bHRzQXZhaWxhYmxlKCk7CisgICAgdm9pZCBtYWtlUmVuZGVyaW5nUmVzdWx0c0F2YWlsYWJsZSgp
IGZpbmFsOwogICAgIGJvb2wgaGFzQ3JlYXRlZEltYWdlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXI7IH0KIAogICAgIGJvb2wgc2hvdWxkQWNjZWxlcmF0ZShj
b25zdCBJbnRTaXplJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09m
ZnNjcmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5j
cHAKaW5kZXggMDNhMTBmMzRhMmVhNWRiZTkwOTRiMDA4ZTYyZjFmY2Y1Yzk0ZjNhMC4uM2E4ZjI5
NDY0ZGI1ZGM2ODkwNmFlMjAzNmEzZmRkNDEzMDY2NjAwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
T2Zmc2NyZWVuQ2FudmFzLmNwcApAQCAtNDIsNyArNDIsMTAgQEAgT2Zmc2NyZWVuQ2FudmFzOjpP
ZmZzY3JlZW5DYW52YXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdW5zaWduZWQg
d2lkdGgKIHsKIH0KIAotT2Zmc2NyZWVuQ2FudmFzOjp+T2Zmc2NyZWVuQ2FudmFzKCkgPSBkZWZh
dWx0OworT2Zmc2NyZWVuQ2FudmFzOjp+T2Zmc2NyZWVuQ2FudmFzKCkKK3sKKyAgICBtX2NvbnRl
eHQgPSBudWxscHRyOworfQogCiB1bnNpZ25lZCBPZmZzY3JlZW5DYW52YXM6OndpZHRoKCkgY29u
c3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCmluZGV4IGMyNzJlZDZlOTk5
ZjhjMDIwOWI0NzRiNjc2YTg0MGRhMGU2ODkyNmMuLmZjODYzZGY2Y2YxZGEzMWIzNGU4NmFjZmQx
OTRjYjMzM2FiYTBlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVu
Q2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApAQCAt
MjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9y
bS5oIgogI2luY2x1ZGUgIkNhbnZhc0Jhc2UuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCkBAIC03NSw2ICs3NiwxNSBAQCBwdWJsaWM6CiAgICAg
UmVmUHRyPEltYWdlQml0bWFwPiB0cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTsKICAgICAvLyB2b2lk
IGNvbnZlcnRUb0Jsb2IoSW1hZ2VFbmNvZGVPcHRpb25zIG9wdGlvbnMpOwogCisgICAgR3JhcGhp
Y3NDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7
IH0KKyAgICBHcmFwaGljc0NvbnRleHQqIGV4aXN0aW5nRHJhd2luZ0NvbnRleHQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBudWxscHRyOyB9CisKKyAgICB2b2lkIG1ha2VSZW5kZXJpbmdSZXN1bHRz
QXZhaWxhYmxlKCkgZmluYWwgeyB9CisgICAgdm9pZCBkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYp
IGZpbmFsIHsgfQorCisgICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25zdCBm
aW5hbCB7IHJldHVybiB7IH07IH0KKyAgICBJbWFnZSogY29waWVkSW1hZ2UoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBudWxscHRyOyB9CisKICAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CiAgICAg
dXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYzM0NjEwMjE1ZTU2OWZl
N2FhMTE5Y2E1MjE2YTdkODNlMTU1NjIyOS4uMzM2MTQzOGYxZWYyMzM2OTlkMGVkYTM1MjFjMDU2
ZGU2N2JhZWQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgYm9vbCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IENhbnZhc1BhdHRlcm4qIHBhdHRl
cm4pCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6
OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTENhbnZhc0VsZW1lbnQqIHNvdXJjZUNhbnZhcykK
K2Jvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBDYW52
YXNCYXNlKiBzb3VyY2VDYW52YXMpCiB7CiAgICAgaWYgKG1fY2FudmFzLm9yaWdpbkNsZWFuKCkg
JiYgc291cmNlQ2FudmFzICYmICFzb3VyY2VDYW52YXMtPm9yaWdpbkNsZWFuKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDJkMmQ4ODc1NzkwMThkMGZhZmRhYWRmYWU2ZDIyYzFl
YjM5MDQxZTIuLmYwMDcxYzJjZTJmNDA4MDcyOTgzYjBjNWIzNjUxMmE1NzY1MmFkMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0JpdG1hcFJl
bmRlcmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQbGFj
ZWhvbGRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzT2Zm
c2NyZWVuMmQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Bh
aW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIHt9CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBw
bGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQpAQCAtNzMsNyArNzQsNyBAQCBwdWJs
aWM6CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dChDYW52
YXNCYXNlJik7CiAgICAgYm9vbCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IENhbnZhc1BhdHRlcm4q
KTsKLSAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTENhbnZhc0VsZW1lbnQqKTsK
KyAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgQ2FudmFzQmFzZSopOwogICAgIGJvb2wg
d291bGRUYWludE9yaWdpbihjb25zdCBIVE1MSW1hZ2VFbGVtZW50Kik7CiAgICAgYm9vbCB3b3Vs
ZFRhaW50T3JpZ2luKGNvbnN0IEhUTUxWaWRlb0VsZW1lbnQqKTsKICAgICBib29sIHdvdWxkVGFp
bnRPcmlnaW4oY29uc3QgSW1hZ2VCaXRtYXAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXgg
MTQ0ZTY4ZGVjYzU2Yjk2YzU1OThiY2I5ODk1MWU3MzlkZDE3OWZiNy4uODhmMzU2NjJkMDliNWI4
MjI4ZDM3MDhlYjdkMmRiOWU2NTNkN2MxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTg4
LDggKzg4LDEzIEBAIHB1YmxpYzoKICAgICBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QgZGlzcGxh
eUxpc3Q7CiAgICAgCiAgICAgRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKKyAgICAgICAgOiBEaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0KGNvbnRleHQuc3RhdGUoKSwgY2xpcCkKKyAgICB7CisgICAgfQorCisg
ICAgRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYg
c3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKICAgICAgICAgOiBjb250ZXh0KFsmXShHcmFw
aGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQs
IGRpc3BsYXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIGNsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRl
cj4oZGlzcGxheUxpc3RDb250ZXh0LCBkaXNwbGF5TGlzdCwgc3RhdGUsIGNsaXAsIEFmZmluZVRy
YW5zZm9ybSgpKTsKICAgICAgICAgfSkKICAgICB7CiAgICAgfQpAQCAtMTQ2LDggKzE1MSw3IEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6dW53aW5kU3RhdGVTdGFjaygpCiAg
ICAgLy8gaXMgY2xlYXJlZCBiZWZvcmUgZGVzdHJ1Y3Rpb24sIHRvIGF2b2lkIGFzc2VydGlvbnMg
aW4gdGhlCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0IGR0b3IuCiAgICAgaWYgKHNpemVfdCBzdGFj
a1NpemUgPSBtX3N0YXRlU3RhY2suc2l6ZSgpKSB7Ci0gICAgICAgIGF1dG8mIGNhbnZhcyA9IGRv
d25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwotICAgICAgICBpZiAoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0ID0gY2FudmFzLmV4aXN0aW5nRHJhd2luZ0NvbnRleHQoKSkg
eworICAgICAgICBpZiAoYXV0byogY29udGV4dCA9IGNhbnZhc0Jhc2UoKS5leGlzdGluZ0RyYXdp
bmdDb250ZXh0KCkpIHsKICAgICAgICAgICAgIHdoaWxlICgtLXN0YWNrU2l6ZSkKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgIH0KQEAgLTE2NywxMCArMTcxLDcg
QEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6fkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UoKQogYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjppc0FjY2VsZXJhdGVk
KCkgY29uc3QKIHsKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKSB8fCBF
TkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIGF1dG8mIGNhbnZhcyA9IGRvd25jYXN0
PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwotICAgIGlmICghY2FudmFzLmhhc0Ny
ZWF0ZWRJbWFnZUJ1ZmZlcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byogY29u
dGV4dCA9IGRyYXdpbmdDb250ZXh0KCk7CisgICAgYXV0byogY29udGV4dCA9IGNhbnZhc0Jhc2Uo
KS5leGlzdGluZ0RyYXdpbmdDb250ZXh0KCk7CiAgICAgcmV0dXJuIGNvbnRleHQgJiYgY29udGV4
dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
NDAxLDkgKzQwMiw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0U3Ry
b2tlU3R5bGUoQ2FudmFzU3R5bGUgc3R5bGUpCiAgICAgaWYgKHN0YXRlKCkuc3Ryb2tlU3R5bGUu
aXNWYWxpZCgpICYmIHN0YXRlKCkuc3Ryb2tlU3R5bGUuaXNFcXVpdmFsZW50Q29sb3Ioc3R5bGUp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2Fu
dmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKKyAgICBpZiAoc3R5bGUuaXNDdXJyZW50Q29sb3Io
KSAmJiBpczxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKSkgeworICAgICAgICBhdXRv
JiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKIAot
ICAgIGlmIChzdHlsZS5pc0N1cnJlbnRDb2xvcigpKSB7CiAgICAgICAgIGlmIChzdHlsZS5oYXNP
dmVycmlkZUFscGhhKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgbm90IHVzZSBS
R0JBMzIgaGVyZS4KICAgICAgICAgICAgIHN0eWxlID0gQ2FudmFzU3R5bGUoY29sb3JXaXRoT3Zl
cnJpZGVBbHBoYShjdXJyZW50Q29sb3IoJmNhbnZhcykucmdiKCksIHN0eWxlLm92ZXJyaWRlQWxw
aGEoKSkpOwpAQCAtNDMwLDkgKzQzMSw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6c2V0RmlsbFN0eWxlKENhbnZhc1N0eWxlIHN0eWxlKQogICAgIGlmIChzdGF0ZSgpLmZp
bGxTdHlsZS5pc1ZhbGlkKCkgJiYgc3RhdGUoKS5maWxsU3R5bGUuaXNFcXVpdmFsZW50Q29sb3Io
c3R5bGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxI
VE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKKyAgICBpZiAoc3R5bGUuaXNDdXJyZW50
Q29sb3IoKSAmJiBpczxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKSkgeworICAgICAg
ICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgp
KTsKIAotICAgIGlmIChzdHlsZS5pc0N1cnJlbnRDb2xvcigpKSB7CiAgICAgICAgIGlmIChzdHls
ZS5oYXNPdmVycmlkZUFscGhhKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgbm90
IHVzZSBSR0JBMzIgaGVyZS4KICAgICAgICAgICAgIHN0eWxlID0gQ2FudmFzU3R5bGUoY29sb3JX
aXRoT3ZlcnJpZGVBbHBoYShjdXJyZW50Q29sb3IoJmNhbnZhcykucmdiKCksIHN0eWxlLm92ZXJy
aWRlQWxwaGEoKSkpOwpAQCAtOTI4LDggKzkyOSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6cmVzZXRUcmFuc2Zvcm0oKQogCiAgICAgcmVhbGl6ZVNhdmVzKCk7CiAKLSAg
ICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgp
KTsKLSAgICBjLT5zZXRDVE0oY2FudmFzLmJhc2VUcmFuc2Zvcm0oKSk7CisgICAgYy0+c2V0Q1RN
KGNhbnZhc0Jhc2UoKS5iYXNlVHJhbnNmb3JtKCkpOwogICAgIG1vZGlmaWFibGVTdGF0ZSgpLnRy
YW5zZm9ybSA9IEFmZmluZVRyYW5zZm9ybSgpOwogCiAgICAgaWYgKGhhc0ludmVydGlibGVUcmFu
c2Zvcm0pCkBAIC0xNzI3LDE4ICsxNzI3LDE2IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZTo6Y2xlYXJDYW52YXMoKQogICAgICAgICByZXR1cm47CiAKICAgICBjLT5zYXZlKCk7
Ci0gICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jh
c2UoKSk7Ci0gICAgYy0+c2V0Q1RNKGNhbnZhcy5iYXNlVHJhbnNmb3JtKCkpOwotICAgIGMtPmNs
ZWFyUmVjdChGbG9hdFJlY3QoMCwgMCwgY2FudmFzLndpZHRoKCksIGNhbnZhcy5oZWlnaHQoKSkp
OworICAgIGMtPnNldENUTShjYW52YXNCYXNlKCkuYmFzZVRyYW5zZm9ybSgpKTsKKyAgICBjLT5j
bGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIGNhbnZhc0Jhc2UoKS53aWR0aCgpLCBjYW52YXNCYXNl
KCkuaGVpZ2h0KCkpKTsKICAgICBjLT5yZXN0b3JlKCk7CiB9CiAKIFBhdGggQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6dHJhbnNmb3JtQXJlYVRvRGV2aWNlKGNvbnN0IFBhdGgmIHBhdGgp
IGNvbnN0CiB7CiAgICAgUGF0aCB0cmFuc2Zvcm1lZChwYXRoKTsKLSAgICBhdXRvJiBjYW52YXMg
PSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKICAgICB0cmFuc2Zv
cm1lZC50cmFuc2Zvcm0oc3RhdGUoKS50cmFuc2Zvcm0pOwotICAgIHRyYW5zZm9ybWVkLnRyYW5z
Zm9ybShjYW52YXMuYmFzZVRyYW5zZm9ybSgpKTsKKyAgICB0cmFuc2Zvcm1lZC50cmFuc2Zvcm0o
Y2FudmFzQmFzZSgpLmJhc2VUcmFuc2Zvcm0oKSk7CiAgICAgcmV0dXJuIHRyYW5zZm9ybWVkOwog
fQogCkBAIC0xNzUyLDE3ICsxNzUwLDE0IEBAIFBhdGggQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6dHJhbnNmb3JtQXJlYVRvRGV2aWNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIGJvb2wg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cmVjdENvbnRhaW5zQ2FudmFzKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkgY29uc3QKIHsKICAgICBGbG9hdFF1YWQgcXVhZChyZWN0KTsKLSAgICBh
dXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsK
LSAgICBGbG9hdFF1YWQgY2FudmFzUXVhZChGbG9hdFJlY3QoMCwgMCwgY2FudmFzLndpZHRoKCks
IGNhbnZhcy5oZWlnaHQoKSkpOworICAgIEZsb2F0UXVhZCBjYW52YXNRdWFkKEZsb2F0UmVjdCgw
LCAwLCBjYW52YXNCYXNlKCkud2lkdGgoKSwgY2FudmFzQmFzZSgpLmhlaWdodCgpKSk7CiAgICAg
cmV0dXJuIHN0YXRlKCkudHJhbnNmb3JtLm1hcFF1YWQocXVhZCkuY29udGFpbnNRdWFkKGNhbnZh
c1F1YWQpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPiBJbnRSZWN0IENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OmNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVmZmVyUmVjdChjb25zdCBUJiBhcmVh
LCBJbnRTaXplKiBjcm9wcGVkT2Zmc2V0KQogewotICAgIGF1dG8mIGNhbnZhcyA9IGRvd25jYXN0
PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwotCi0gICAgSW50UmVjdCBjYW52YXNS
ZWN0KDAsIDAsIGNhbnZhcy53aWR0aCgpLCBjYW52YXMuaGVpZ2h0KCkpOwotICAgIGNhbnZhc1Jl
Y3QgPSBjYW52YXMuYmFzZVRyYW5zZm9ybSgpLm1hcFJlY3QoY2FudmFzUmVjdCk7CisgICAgSW50
UmVjdCBjYW52YXNSZWN0KDAsIDAsIGNhbnZhc0Jhc2UoKS53aWR0aCgpLCBjYW52YXNCYXNlKCku
aGVpZ2h0KCkpOworICAgIGNhbnZhc1JlY3QgPSBjYW52YXNCYXNlKCkuYmFzZVRyYW5zZm9ybSgp
Lm1hcFJlY3QoY2FudmFzUmVjdCk7CiAgICAgUGF0aCBwYXRoID0gdHJhbnNmb3JtQXJlYVRvRGV2
aWNlKGFyZWEpOwogICAgIEludFJlY3QgYnVmZmVyUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QocGF0
aC5mYXN0Qm91bmRpbmdSZWN0KCkpOwogICAgIEludFBvaW50IG9yaWdpbmFsTG9jYXRpb24gPSBi
dWZmZXJSZWN0LmxvY2F0aW9uKCk7CkBAIC0xNzc5LDkgKzE3NzQsOCBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZUNvbXBv
c2l0aW5nQnVmZgogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNvbXBvc2l0
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBJbnRSZWN0JiBidWZmZXJSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1M
Q2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKLSAgICBJbnRSZWN0IGNhbnZhc1JlY3QoMCwg
MCwgY2FudmFzLndpZHRoKCksIGNhbnZhcy5oZWlnaHQoKSk7Ci0gICAgY2FudmFzUmVjdCA9IGNh
bnZhcy5iYXNlVHJhbnNmb3JtKCkubWFwUmVjdChjYW52YXNSZWN0KTsKKyAgICBJbnRSZWN0IGNh
bnZhc1JlY3QoMCwgMCwgY2FudmFzQmFzZSgpLndpZHRoKCksIGNhbnZhc0Jhc2UoKS5oZWlnaHQo
KSk7CisgICAgY2FudmFzUmVjdCA9IGNhbnZhc0Jhc2UoKS5iYXNlVHJhbnNmb3JtKCkubWFwUmVj
dChjYW52YXNSZWN0KTsKIAogICAgIGF1dG8qIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlm
ICghYykKQEAgLTE5NDYsMTIgKzE5NDAsMTYgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1Bh
dHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKEgKICAg
ICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKCpj
YWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZUVsZW1lbnQucmVuZGVyZXIoKSksIHJl
cGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9OwogfQogCi1FeGNlcHRpb25PcjxSZWZQdHI8
Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRl
cm4oSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcywgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkp
CitFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oQ2FudmFzQmFzZSYgY2FudmFzLCBib29sIHJlcGVhdFgs
IGJvb2wgcmVwZWF0WSkKIHsKLSAgICBpZiAoIWNhbnZhcy53aWR0aCgpIHx8ICFjYW52YXMuaGVp
Z2h0KCkgfHwgIWNhbnZhcy5idWZmZXIoKSkKKyAgICBpZiAoIWNhbnZhcy53aWR0aCgpIHx8ICFj
YW52YXMuaGVpZ2h0KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9OworICAgIGF1dG8qIGNvcGllZEltYWdlID0gY2FudmFzLmNvcGllZEltYWdlKCk7CisK
KyAgICBpZiAoIWNvcGllZEltYWdlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfTsKIAotICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52
YXNQYXR0ZXJuOjpjcmVhdGUoKmNhbnZhcy5jb3BpZWRJbWFnZSgpLCByZXBlYXRYLCByZXBlYXRZ
LCBjYW52YXMub3JpZ2luQ2xlYW4oKSkgfTsKKyAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRl
cm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKCpjb3BpZWRJbWFnZSwgcmVwZWF0WCwgcmVwZWF0
WSwgY2FudmFzLm9yaWdpbkNsZWFuKCkpIH07CiB9CiAgICAgCiAjaWYgRU5BQkxFKFZJREVPKQpA
QCAtMTk4OCw4ICsxOTg2LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKEkKIAogdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkaWREcmF3RW50aXJlQ2FudmFzKCkKIHsKLSAgICBh
dXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsK
LSAgICBkaWREcmF3KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGNhbnZhcy5zaXplKCkp
LCBDYW52YXNEaWREcmF3QXBwbHlDbGlwKTsKKyAgICBkaWREcmF3KEZsb2F0UmVjdChGbG9hdFBv
aW50Ojp6ZXJvKCksIGNhbnZhc0Jhc2UoKS5zaXplKCkpLCBDYW52YXNEaWREcmF3QXBwbHlDbGlw
KTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkaWREcmF3KGNvbnN0
IEZsb2F0UmVjdCYgciwgdW5zaWduZWQgb3B0aW9ucykKQEAgLTIwMzQsOCArMjAzMSw3IEBAIHZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZGlkRHJhdyhjb25zdCBGbG9hdFJlY3Qm
IHIsIHVuc2lnbmVkIG9wdGlvbnMpCiAgICAgICAgIC8vIHdlJ2QgaGF2ZSB0byBrZWVwIHRoZSBj
bGlwIHBhdGggYXJvdW5kLgogICAgIH0KIAotICAgIGF1dG8mIGNhbnZhcyA9IGRvd25jYXN0PEhU
TUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOwotICAgIGNhbnZhcy5kaWREcmF3KGRpcnR5
UmVjdCk7CisgICAgY2FudmFzQmFzZSgpLmRpZERyYXcoZGlydHlSZWN0KTsKIH0KIAogdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzZXRUcmFja3NEaXNwbGF5TGlzdFJlcGxheShi
b29sIHRyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KQpAQCAtMjA3NSwxMCArMjA3MSw4IEBAIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoKQogICAgICAgICBpZiAoIW1fcmVjb3JkaW5nQ29udGV4dCkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4o
Y2FudmFzQmFzZSgpKTsKLQotICAgICAgICBGbG9hdFJlY3QgY2xpcChGbG9hdFBvaW50Ojp6ZXJv
KCksIGNhbnZhcy5zaXplKCkpOwotICAgICAgICBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5
ZXIoKmNhbnZhcy5kcmF3aW5nQ29udGV4dCgpLCBtX3JlY29yZGluZ0NvbnRleHQtPmRpc3BsYXlM
aXN0KTsKKyAgICAgICAgRmxvYXRSZWN0IGNsaXAoRmxvYXRQb2ludDo6emVybygpLCBjYW52YXNC
YXNlKCkuc2l6ZSgpKTsKKyAgICAgICAgRGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyKCpj
YW52YXNCYXNlKCkuZHJhd2luZ0NvbnRleHQoKSwgbV9yZWNvcmRpbmdDb250ZXh0LT5kaXNwbGF5
TGlzdCk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKG1fdHJhY2tzRGlzcGxheUxpc3RSZXBsYXkp
KSB7CiAgICAgICAgICAgICBhdXRvIHJlcGxheUxpc3QgPSByZXBsYXllci5yZXBsYXkoY2xpcCwg
bV90cmFja3NEaXNwbGF5TGlzdFJlcGxheSk7CkBAIC0yMDkyLDE0ICsyMDg2LDEzIEBAIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoKQogCiBHcmFwaGljc0NvbnRleHQqIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRy
YXdpbmdDb250ZXh0KCkgY29uc3QKIHsKLSAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxIVE1M
Q2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKICAgICBpZiAoVU5MSUtFTFkobV91c2VzRGlz
cGxheUxpc3REcmF3aW5nKSkgewogICAgICAgICBpZiAoIW1fcmVjb3JkaW5nQ29udGV4dCkKLSAg
ICAgICAgICAgIG1fcmVjb3JkaW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxp
c3REcmF3aW5nQ29udGV4dD4oKmNhbnZhcy5kcmF3aW5nQ29udGV4dCgpLCBGbG9hdFJlY3QoRmxv
YXRQb2ludDo6emVybygpLCBjYW52YXMuc2l6ZSgpKSk7CisgICAgICAgICAgICBtX3JlY29yZGlu
Z0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQ+KEdy
YXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGNhbnZh
c0Jhc2UoKS5zaXplKCkpKTsKICAgICAgICAgcmV0dXJuICZtX3JlY29yZGluZ0NvbnRleHQtPmNv
bnRleHQ7CiAgICAgfQogCi0gICAgcmV0dXJuIGNhbnZhcy5kcmF3aW5nQ29udGV4dCgpOworICAg
IHJldHVybiBjYW52YXNCYXNlKCkuZHJhd2luZ0NvbnRleHQoKTsKIH0KIAogc3RhdGljIFJlZlB0
cjxJbWFnZURhdGE+IGNyZWF0ZUVtcHR5SW1hZ2VEYXRhKGNvbnN0IEludFNpemUmIHNpemUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmgKaW5kZXggNjU1NDhhZDFmNDk2YjBhYzAzNjA2MTM3MzVlOWIzNmUxNTM3
NDk2MS4uYWQ1MzhjZDc5MGI0NzZlYzMyMThhOTIxNmE2YjU2Njg5ZTBiNjg3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2UuaApAQCAtMzE2LDcgKzMxNiw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldEZp
bGxTdHlsZShDYW52YXNTdHlsZSk7CiAKICAgICBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0
dGVybj4+IGNyZWF0ZVBhdHRlcm4oSFRNTEltYWdlRWxlbWVudCYsIGJvb2wgcmVwZWF0WCwgYm9v
bCByZXBlYXRZKTsKLSAgICBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IGNyZWF0
ZVBhdHRlcm4oSFRNTENhbnZhc0VsZW1lbnQmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7
CisgICAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBjcmVhdGVQYXR0ZXJuKENh
bnZhc0Jhc2UmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CiAjaWYgRU5BQkxFKFZJREVP
KQogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4gY3JlYXRlUGF0dGVybihI
VE1MVmlkZW9FbGVtZW50JiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRl
eHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFlMWZjYTIxMDQzZjIwM2FiNjE5M2QwOTFkYmFiNGQ2YjBl
OGZkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BhaW50
UmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlBhaW50UmVuZGVyaW5nQ29udGV4dDJELmgiCisKKyNpZiBFTkFCTEUoQ1NTX1BBSU5USU5H
X0FQSSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGQ6OnVuaXF1ZV9wdHI8UGFpbnRSZW5k
ZXJpbmdDb250ZXh0MkQ+IFBhaW50UmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGUoQ2FudmFzQmFz
ZSYgY2FudmFzKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnRSZW5kZXJpbmdD
b250ZXh0MkQ+KG5ldyBQYWludFJlbmRlcmluZ0NvbnRleHQyRChjYW52YXMpKTsKK30KKworUGFp
bnRSZW5kZXJpbmdDb250ZXh0MkQ6OlBhaW50UmVuZGVyaW5nQ29udGV4dDJEKENhbnZhc0Jhc2Um
IGNhbnZhcykKKyAgICA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UoY2FudmFzLCBmYWxz
ZSwgZmFsc2UpCit7Cit9CisKK1BhaW50UmVuZGVyaW5nQ29udGV4dDJEOjp+UGFpbnRSZW5kZXJp
bmdDb250ZXh0MkQoKSA9IGRlZmF1bHQ7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdD
b250ZXh0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29u
dGV4dDJELmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q4YTQwNDk1MTJkYTI2MjYxNjMzYWZmZjliMmE0YWE4N2Ex
M2UxNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BhaW50
UmVuZGVyaW5nQ29udGV4dDJELmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oIgorCisjaWYgRU5BQkxFKENTU19QQUlOVElOR19B
UEkpCisKKyNpbmNsdWRlICJDdXN0b21QYWludENhbnZhcy5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFBhaW50UmVuZGVyaW5nQ29udGV4dDJEIGZpbmFsIDogcHVibGljIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ+IGNyZWF0ZShDYW52YXNCYXNlJik7CisKKyAg
ICB2aXJ0dWFsIH5QYWludFJlbmRlcmluZ0NvbnRleHQyRCgpOworCisgICAgYm9vbCBpc1BhaW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIEN1c3RvbVBhaW50Q2FudmFz
JiBjYW52YXMoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxDdXN0b21QYWludENhbnZhcz4oY2Fu
dmFzQmFzZSgpKTsgfQorCitwcml2YXRlOgorICAgIFBhaW50UmVuZGVyaW5nQ29udGV4dDJEKENh
bnZhc0Jhc2UmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQ0FOVkFTUkVOREVSSU5HQ09OVEVYVChXZWJDb3JlOjpQYWludFJlbmRlcmluZ0Nv
bnRleHQyRCwgaXNQYWludCgpKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRleHQyRC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRleHQyRC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2U5MWNl
N2U0OGUwNWNjOGYxMjNhYTFmZmFlOWE4ZTJlODY5OTgwYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmlkbApAQCAt
MCwwICsxLDQ1IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6Cisq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK1sKKyAgICBDdXN0b21Jc1JlYWNo
YWJsZSwKKyAgICBFbmFibGVkQXRSdW50aW1lPUNTU1BhaW50aW5nQVBJLAorICAgIENvbmRpdGlv
bmFsPUNTU19QQUlOVElOR19BUEksCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgSlND
dXN0b21NYXJrRnVuY3Rpb24sCitdIGludGVyZmFjZSBQYWludFJlbmRlcmluZ0NvbnRleHQyRCB7
Cit9OworCitQYWludFJlbmRlcmluZ0NvbnRleHQyRCBpbXBsZW1lbnRzIENhbnZhc1N0YXRlOwor
UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgaW1wbGVtZW50cyBDYW52YXNUcmFuc2Zvcm07CitQYWlu
dFJlbmRlcmluZ0NvbnRleHQyRCBpbXBsZW1lbnRzIENhbnZhc0NvbXBvc2l0aW5nOworUGFpbnRS
ZW5kZXJpbmdDb250ZXh0MkQgaW1wbGVtZW50cyBDYW52YXNJbWFnZVNtb290aGluZzsKK1BhaW50
UmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMgQ2FudmFzRmlsbFN0cm9rZVN0eWxlczsKK1Bh
aW50UmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMgQ2FudmFzU2hhZG93U3R5bGVzOworUGFp
bnRSZW5kZXJpbmdDb250ZXh0MkQgaW1wbGVtZW50cyBDYW52YXNSZWN0OworUGFpbnRSZW5kZXJp
bmdDb250ZXh0MkQgaW1wbGVtZW50cyBDYW52YXNEcmF3UGF0aDsKK1BhaW50UmVuZGVyaW5nQ29u
dGV4dDJEIGltcGxlbWVudHMgQ2FudmFzRHJhd0ltYWdlOworUGFpbnRSZW5kZXJpbmdDb250ZXh0
MkQgaW1wbGVtZW50cyBDYW52YXNQYXRoRHJhd2luZ1N0eWxlczsKK1BhaW50UmVuZGVyaW5nQ29u
dGV4dDJEIGltcGxlbWVudHMgQ2FudmFzUGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvci5oCmluZGV4IDI2YmMzZTBjNzVhMjIxMTE0NmM0M2VlYWZjY2FmYmQ3ZTA5ODMzMWMu
LmVkZDRiMDU3ZTQ2MjEwMWJkODI3YjY0YmMyNmE3MThlZGZiZmQ1YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3IuaApAQCAtMjcsOCArMjcsOCBAQAogCiAjaWYgRU5BQkxF
KFdFQk1FVEFMKQogCi0jaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJ
bWFnZS5jcHAKaW5kZXggOGIzNDkzNjI3OWM0YzYxOWJmZWVmNTNkMDg0NmQ4N2M5MjFkMDFjZS4u
ZDJlNDJjMGM5ZTYxOTlmNTI3NDI5MTY3MGYxN2EwNmU5ZGU4MjBmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAg
LTI4LDEyICsyOCwxMiBAQAogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCiAKKyNpbmNs
dWRlICJDdXN0b21QYWludENhbnZhcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkltYWdlQml0bWFwLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNs
dWRlICJKU0NTU1BhaW50Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIK
LSNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJQYWludFJlbmRl
cmluZ0NvbnRleHQyRC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUxLDI5ICs1MSwy
NCBAQCBJbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFpbnRJbWFnZTo6ZG9DdXN0b21QYWludChHcmFw
aGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwogICAgIGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgPSBjYWxsYmFjay5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRO
b3RoaW5nOwotICAgIGF1dG8qIGV4ZWNTdGF0ZSA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmV4
ZWNTdGF0ZSgpOwotICAgIGlmICghZXhlY1N0YXRlKQotICAgICAgICByZXR1cm4gSW1hZ2VEcmF3
UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgYXV0byBjYW52YXMgPSBPZmZzY3JlZW5DYW52YXM6
OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZGVzdFNpemUud2lkdGgoKSwgZGVzdFNp
emUuaGVpZ2h0KCkpOwotICAgIEV4Y2VwdGlvbk9yPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+
IGNvbnRleHRPckV4Y2VwdGlvbiA9IGNhbnZhcy0+Z2V0Q29udGV4dCgqZXhlY1N0YXRlLCBPZmZz
Y3JlZW5DYW52YXM6OlJlbmRlcmluZ0NvbnRleHRUeXBlOjpXZWJnbCwgeyB9KTsKKyAgICBhdXRv
IGNhbnZhcyA9IEN1c3RvbVBhaW50Q2FudmFzOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIGRlc3RTaXplLndpZHRoKCksIGRlc3RTaXplLmhlaWdodCgpKTsKKyAgICBFeGNlcHRpb25P
cjxSZWZQdHI8UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ+PiBjb250ZXh0T3JFeGNlcHRpb24gPSBj
YW52YXMtPmdldENvbnRleHQoKTsKIAogICAgIGlmIChjb250ZXh0T3JFeGNlcHRpb24uaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAg
ICAgYXV0byBjb250ZXh0ID0gY29udGV4dE9yRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
OwogCi0gICAgY29udGV4dC0+Y2xlYXJDb2xvcigwLCAwLCAwLCAxLjApOwotICAgIGNvbnRleHQt
PmNsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCiAgICAgYXV0byByZXN1bHQgPSBtX3BhaW50
Q2FsbGJhY2stPmhhbmRsZUV2ZW50KCpjb250ZXh0KTsKICAgICBpZiAocmVzdWx0LnR5cGUoKSAh
PSBDYWxsYmFja1Jlc3VsdFR5cGU6OlN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdS
ZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBhdXRvIGJpdG1hcCA9IGNhbnZhcy0+dHJhbnNmZXJU
b0ltYWdlQml0bWFwKCk7Ci0gICAgaWYgKCFiaXRtYXApCisgICAgVU5VU0VEX1BBUkFNKGRlc3RD
b250ZXh0KTsKKyAgICBhdXRvIGltYWdlID0gY2FudmFzLT5jb3BpZWRJbWFnZSgpOworICAgIGlm
ICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAK
LSAgICBkZXN0Q29udGV4dC5kcmF3SW1hZ2UoKmJpdG1hcC0+YnVmZmVyKCktPmNvcHlJbWFnZSgp
LCBGbG9hdFBvaW50KCkpOworICAgIGRlc3RDb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0
UG9pbnQoKSk7CiAKICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3OwogfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDhiN2IzNDYzMWFmMmZmNzQ5MDc5MWNlZWE3OTM1Y2ZhMzQxYjcyMzguLjI4MDI2ODQ0ODM5
ZDI1MmY5OWIzNDBlMzM4Mzc0ZmI1NzYxZjY2ZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
OC0xMC0yMiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgQ1NTIFBhaW50IEFQSSBzaG91bGQgZ2l2ZSBhIDJkIHJlbmRlcmluZyBjb250ZXh0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3NjIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3Nz
LWN1c3RvbS1wYWludC9iYXNpYy5odG1sOgorCiAyMDE4LTEwLTE5ICBDb21taXQgUXVldWUgIDxj
b21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMjM3MjU0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50
L2Jhc2ljLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRt
bAppbmRleCBjZjNhZmU4MzQ1MTZmN2YwMWIwNzI2MTZkMmY5MjZhOWZhYWJlZjAyLi4zZjRkYzNh
MmQwMmVmMjFhMmU5NzJkNGM4YjRmMmZhZThjMzg5NDU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbApAQCAtOCw4ICs4LDggQEAKIDxzdHlsZT4KICAg
I3BhaW50IHsKICAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7Ci0gICAgd2lk
dGg6IDUwcHg7Ci0gICAgaGVpZ2h0OiA1MHB4OworICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWln
aHQ6IDE1MHB4OwogICB9CiA8L3N0eWxlPgogCkBAIC03MCw4ICs3MCwxMyBAQCBsZXQgcGFpbnRf
Y2FsbGVkX3Rlc3QgPSBhc3luY190ZXN0KCd0ZXN0IHRoYXQgdGVzdCBkaXYgcGFpbnQgY2FsbGJh
Y2sgZ2V0cyBjYWxsZQogcGFpbnRfY2FsbGVkX3Rlc3Quc3RlcChmdW5jdGlvbigpIHsKICAgQ1NT
LnBhaW50V29ya2xldEdsb2JhbFNjb3BlLnJlZ2lzdGVyUGFpbnQoJ215LXBhaW50JywgY2xhc3Mg
ewogICAgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcykgewotICAgICAgY3R4LmNsZWFyQ29s
b3IoMCwxLjAsMCwxLjApOwotICAgICAgY3R4LmNsZWFyKGN0eC5DT0xPUl9CVUZGRVJfQklUKTsK
KyAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKXsKKyAgICAgICAgZm9yICh2YXIgaiA9
IDA7IGogPCA2OyBqKyspeworICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAncmdiKCcgKyBNYXRo
LmZsb29yKDI1NSAtIDQyLjUgKiBpKSArICcsJyArCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNYXRoLmZsb29yKDI1NSAtIDQyLjUgKiBqKSArICcsMCknOworICAgICAgICAgIGN0eC5maWxs
UmVjdChqICogMjUsIGkgKiAyNSwgMjUsIDI1KTsKKyAgICAgICAgfQorICAgICAgfQogICAgICAg
cGFpbnRfY2FsbGVkX3Rlc3QuZG9uZSgpOwogICAgIH0KICAgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352929</attachid>
            <date>2018-10-22 17:07:06 -0700</date>
            <delta_ts>2018-10-22 17:46:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190762-20181022170705.patch</filename>
            <type>text/plain</type>
            <size>55217</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ4M2QyZmU0N2E4ODVm
NjA0ODZlYjJlMWJjNGYzNTY5YTBjYzk3Yy4uZTc3OWZiNzU0NWI0MmRhYmZkNDJlMTVkY2U0MGVk
OThiYWRkMTk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE4LTEwLTIyICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBDU1MgUGFp
bnQgQVBJIHNob3VsZCBnaXZlIGEgMmQgcmVuZGVyaW5nIGNvbnRleHQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyB0eXBlIG9mIGNhbnZh
cyBhbmQgMmQgcmVuZGVyaW5nIGNvbnRleHQgdG8gc3VwcG9ydCB0aGUgQ1NTIFBhaW50aW5nIEFQ
SS4KKyAgICAgICAgTWFrZSBtYW55IG9mIHRoZSBtZXRob2RzIGZyb20gSFRNTENhbnZhc0VsZW1l
bnQgdmlydHVhbCBmdW5jdGlvbnMgb24gQ2FudmFzQmFzZSwgYW5kCisgICAgICAgIHJlbW92ZSBt
YW55IG9mIHRoZSBkb3duY2FzdHMgaW4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZSBhcyBh
IHJlc3VsdC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGFpbnRS
ZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFpbnRDYWxsYmFjay5oLgorICAgICAgICAoV2ViQ29yZTo6cm9vdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJET3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUGFpbnRSZW5kZXJpbmdDb250ZXh0
MkQ6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJD
b3JlQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogY3NzL0NTU1BhaW50Q2FsbGJhY2suaDoKKyAg
ICAgICAgKiBjc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGw6CisgICAgICAgICogaHRtbC9DYW52YXNC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0Jhc2U6On5DYW52YXNCYXNlKToKKyAg
ICAgICAgKiBodG1sL0NhbnZhc0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0Jhc2U6
OmlzQ3VzdG9tUGFpbnRDYW52YXMgY29uc3QpOgorICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRD
YW52YXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OkN1c3RvbVBhaW50
Q2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjp+Q3VzdG9tUGFp
bnRDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OndpZHRoIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpzZXRXaWR0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6aGVpZ2h0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpzZXRIZWlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tUGFpbnRDYW52YXM6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFp
bnRDYW52YXM6OmdldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52
YXM6OmNvcGllZEltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2Fu
dmFzOjpkcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWlu
dENhbnZhczo6ZXhpc3RpbmdEcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21QYWludENhbnZhczo6bWFrZVJlbmRlcmluZ1Jlc3VsdHNBdmFpbGFibGUpOgorICAg
ICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRDYW52YXMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaC4KKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9PZmZzY3JlZW5DYW52YXMuaDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4pOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQ6OmlzUGFpbnQgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3REcmF3aW5nQ29udGV4dDo6RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp1bndpbmRTdGF0ZVN0
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6Omlz
QWNjZWxlcmF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0RmlsbFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnJlc2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNsZWFyQ2FudmFzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnRyYW5zZm9ybUFyZWFU
b0RldmljZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpyZWN0Q29udGFpbnNDYW52YXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y2FsY3VsYXRlQ29tcG9zaXRpbmdCdWZmZXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNvbXBv
c2l0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpjcmVhdGVQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OmRpZERyYXdFbnRpcmVDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZGlkRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3
aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29u
dGV4dDJELmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJh
Y2suaC4KKyAgICAgICAgKFdlYkNvcmU6OlBhaW50UmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ6OlBhaW50UmVuZGVy
aW5nQ29udGV4dDJEKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRl
eHQyRC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5o
LgorICAgICAgICAqIGh0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmlkbDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsLgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpkb0N1c3RvbVBhaW50KToKKwogMjAxOC0x
MC0xOSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lG
Q10gUmVuZGVyUmVwbGFjZWQgcmVuZGVyZXIgc2hvdWxkIGNyZWF0ZSBJbmxpbmVCb3gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggOGIwMmE1MmQ1MGQwMWQ3N2VjMWUzNjEwY2M3ODcyNjEyNjM0ZTkz
OC4uYTU5NjQwNTIwOWU2M2IzYTRkMjI2YjZmYmNjZTdmZTcwNDQwY2M5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTgwMyw2ICs4MDMsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxF
UwogICAgIGh0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmlk
bAogICAgIGh0bWwvY2FudmFzL0ltYWdlU21vb3RoaW5nUXVhbGl0eS5pZGwKICAgICBodG1sL2Nh
bnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCisgICAgaHRtbC9jYW52
YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsCiAgICAgaHRtbC9jYW52YXMvUGF0aDJELmlk
bAogICAgIGh0bWwvY2FudmFzL1dlYk1ldGFsQnVmZmVyLmlkbAogICAgIGh0bWwvY2FudmFzL1dl
Yk1ldGFsQ29tbWFuZEJ1ZmZlci5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IDE1YTVkNmJkOTVlNzZkZjAxMmQ0ZjczODI2ZTA1MGZmZjhlYzk2MzYuLmVkOTY1M2Y4YTE2NTFk
MjQzYjE3OTAwYjI3NDcwNjQ5OGZmMTljNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtNzI2LDYgKzcyNiw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUp
L2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaWRsIFwKICAgICAkKFdlYkNv
cmUpL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsIFwKKwkk
KFdlYkNvcmUpL2h0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmlkbCBcCiAgICAg
JChXZWJDb3JlKS9odG1sL2NhbnZhcy9QYXRoMkQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwv
Y2FudmFzL1dlYkdMQWN0aXZlSW5mby5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAwNDYzZDE1Nzll
NGM2MmQ5MzAxMmMwNjE1ZTkzMmJhNzRmMTYzZDNhLi5mM2MyNzkyZjk1ZGFiMGZlNGE5MWRhMTE4
MWNmM2EzMzZlMTA5OGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNDQzLDYgKzQ0Myw3IEBAIGJpbmRp
bmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9t
LmNwcAogYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTT2Zm
c2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAorYmluZGluZ3MvanMvSlNQ
YWludFJlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTUGF5bWVudE1l
dGhvZENoYW5nZUV2ZW50Q3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNQYXltZW50UmVzcG9uc2VD
dXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU1BlcmZvcm1hbmNlRW50cnlDdXN0b20uY3BwCkBAIC05
NjgsNiArOTY5LDcgQEAgaHRtbC9CdXR0b25JbnB1dFR5cGUuY3BwCiBodG1sL0NhbnZhc0Jhc2Uu
Y3BwCiBodG1sL0NoZWNrYm94SW5wdXRUeXBlLmNwcAogaHRtbC9Db2xvcklucHV0VHlwZS5jcHAK
K2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCiBodG1sL0RPTUZvcm1EYXRhLmNwcAogaHRtbC9E
T01Ub2tlbkxpc3QuY3BwCiBodG1sL0RPTVVSTC5jcHAKQEAgLTExMjYsNiArMTEyOCw3IEBAIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCiBodG1sL2NhbnZhcy9D
YW52YXNTdHlsZS5jcHAKIGh0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5j
cHAKIGh0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKK2h0
bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcAogaHRtbC9jYW52YXMvUGF0aDJE
LmNwcAogaHRtbC9jYW52YXMvUGxhY2Vob2xkZXJSZW5kZXJpbmdDb250ZXh0LmNwcAogaHRtbC9j
YW52YXMvV2ViTWV0YWxCdWZmZXIuY3BwCkBAIC0yODQzLDYgKzI4NDYsNyBAQCBKU09mZmxpbmVB
dWRpb0NvbXBsZXRpb25FdmVudC5jcHAKIEpTT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKIEpTT2Zm
c2NyZWVuQ2FudmFzLmNwcAogSlNPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CitKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcAogSlNPc2NpbGxhdG9yTm9kZS5jcHAKIEpT
T3ZlcmNvbnN0cmFpbmVkRXJyb3IuY3BwCiBKU092ZXJjb25zdHJhaW5lZEVycm9yRXZlbnQuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggYmExNWZjZjFkZWVjMDRmZWE2NDM2YzMwYTU4MWM2YjJkMjUzYWFlZS4uYTFiOWJjMzli
YWE1YjllMDFiYTk4NGM5YjY0YzgxOGEwOTgwMzBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM0NSw2ICsxMzQ1LDggQEAK
IAkJNEE5Q0M4MjExNkJGOUJCNDAwRUM2NDVBIC8qIEluc3BlY3RvckNTU09NV3JhcHBlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBOUNDODFGMTZC
RjlCQjQwMEVDNjQ1QSAvKiBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmggKi87IH07CiAJCTRBRDAx
MDA5MTI3RTY0MkEwMDE1MDM1RiAvKiBIVE1MT3V0cHV0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFEMDEwMDYxMjdFNjQyQTAwMTUwMzVG
IC8qIEhUTUxPdXRwdXRFbGVtZW50LmggKi87IH07CiAJCTRBRDAxNzNEMTI3RTgyODYwMDE1MDM1
RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTczQjEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0
RWxlbWVudC5oICovOyB9OworCQk0QjFFMTNFNzIxNzkwRDY2MDA0MkNGOTggLyogQ3VzdG9tUGFp
bnRDYW52YXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCMUUxM0U2MjE3OTBENjYwMDQyQ0Y5OCAvKiBDdXN0b21QYWludENhbnZhcy5oICovOyB9Owor
CQk0QjFFMTNFQjIxNzkzN0IzMDA0MkNGOTggLyogUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMUUxM0VBMjE3
OTM3QjMwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oICovOyB9OwogCQk0QjI3
MDhDNzBBRjE5RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8qIFBh
c3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0QjMwNDNDRDBBRTAzNzNCMDBBODI2NDcgLyogRWRpdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjMwNDNDQjBBRTAzNzNCMDBBODI2NDcg
LyogRWRpdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNEIzNDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMzQ4MDkyMEVFRjUwRDQw
MEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHLmggKi87IH07CkBAIC03ODgzLDYgKzc4ODUsMTIgQEAK
IAkJNEFEMDE3M0ExMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3V0cHV0RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBRDAxNzNCMTI3RTgyODYwMDE1MDM1
RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTSFRNTE91dHB1dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEIxNzA2NjQyMTYyQjQyRjAwRTU3OEJCIC8qIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjFFMTNFNjIxNzkwRDY2MDA0MkNGOTggLyog
Q3VzdG9tUGFpbnRDYW52YXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3VzdG9tUGFpbnRDYW52YXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEIxRTEzRTkyMTc5MEQ3RTAwNDJDRjk4IC8q
IEN1c3RvbVBhaW50Q2FudmFzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbVBhaW50Q2Fu
dmFzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEIxRTEzRUEyMTc5MzdCMzAw
NDJDRjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJELmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhaW50
UmVuZGVyaW5nQ29udGV4dDJELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRCMUUx
M0VDMjE3OTM4MzgwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTRCMUUxM0VEMjE3OTNEQzEwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmlu
Z0NvbnRleHQyRC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0QjFFMTNFRTIxNzk0MTMyMDA0MkNGOTggLyogSlNQYWlu
dFJlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BhaW50
UmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8qIFBhc3RlYm9hcmQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0QjI3MDk4MTBBRjJFNUUwMDA2NTEyN0YgLyogUGFzdGVib2FyZE1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3RlYm9hcmRNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCMzA0M0NBMEFFMDM3M0IwMEE4MjY0NyAvKiBF
ZGl0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVkaXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzYyOCw2ICsxNzYzNiw5IEBACiAJ
CQkJMzE0MEM1MUQxRkRGMTUxQTAwRDJBODczIC8qIE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAgKi8sCiAJCQkJMzE0MEM1MUUxRkRGMTUxQTAwRDJBODczIC8qIE9mZnNjcmVl
bkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oICovLAogCQkJCTMxNDBDNTFCMUZERjEzRDIwMEQy
QTg3MyAvKiBPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsICovLAorCQkJCTRC
MUUxM0VDMjE3OTM4MzgwMDQyQ0Y5OCAvKiBQYWludFJlbmRlcmluZ0NvbnRleHQyRC5jcHAgKi8s
CisJCQkJNEIxRTEzRUEyMTc5MzdCMzAwNDJDRjk4IC8qIFBhaW50UmVuZGVyaW5nQ29udGV4dDJE
LmggKi8sCisJCQkJNEIxRTEzRUQyMTc5M0RDMTAwNDJDRjk4IC8qIFBhaW50UmVuZGVyaW5nQ29u
dGV4dDJELmlkbCAqLywKIAkJCQk3QzE5M0JBNzFGNUUwRUFGMDA4OEYzRTYgLyogUGF0aDJELmNw
cCAqLywKIAkJCQk3QzE5M0JBQjFGNUUwRUIxMDA4OEYzRTYgLyogUGF0aDJELmggKi8sCiAJCQkJ
N0MxOTNCQjQxRjVFMEVCNzAwODhGM0U2IC8qIFBhdGgyRC5pZGwgKi8sCkBAIC0yMDIwNSw2ICsy
MDIxNiw3IEBACiAJCQkJQkNEOUMyNjEwQzE3QUE2NzAwNUM5MEEyIC8qIEpTTm9kZUxpc3RDdXN0
b20uY3BwICovLAogCQkJCUFEMjBCMThDMThFOUQyMTYwMDVBODA4MyAvKiBKU05vZGVMaXN0Q3Vz
dG9tLmggKi8sCiAJCQkJMzE0MEM1MkIxRkUwNkI0OTAwRDJBODczIC8qIEpTT2Zmc2NyZWVuQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKKwkJCQk0QjFFMTNFRTIxNzk0MTMy
MDA0MkNGOTggLyogSlNQYWludFJlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8sCiAJCQkJ
Q0IzOEZENTUxQ0QyMUQ1QjAwNTkyQTNGIC8qIEpTUGVyZm9ybWFuY2VFbnRyeUN1c3RvbS5jcHAg
Ki8sCiAJCQkJODMzQ0Y3MEYyMERCM0Y1RjAwMTQxQkNDIC8qIEpTUGVyZm9ybWFuY2VPYnNlcnZl
ckN1c3RvbS5jcHAgKi8sCiAJCQkJQTRBNjlCOEJCOTFCNDlEMEE4MDRDMzFEIC8qIEpTUHJvbWlz
ZVJlamVjdGlvbkV2ZW50Q3VzdG9tLmNwcCAqLywKQEAgLTIwNzcxLDYgKzIwNzgzLDggQEAKIAkJ
CQk5M0M0NDFGRjBGODEzQUUxMDBDMUE2MzQgLyogQ29sbGVjdGlvblR5cGUuaCAqLywKIAkJCQlC
QzI5OTM1QzE3QTFERDU4MDBCQ0U4ODAgLyogQ29sb3JJbnB1dFR5cGUuY3BwICovLAogCQkJCUY1
NUIzRDgwMTI1MUYxMkQwMDNFRjI2OSAvKiBDb2xvcklucHV0VHlwZS5oICovLAorCQkJCTRCMUUx
M0U5MjE3OTBEN0UwMDQyQ0Y5OCAvKiBDdXN0b21QYWludENhbnZhcy5jcHAgKi8sCisJCQkJNEIx
RTEzRTYyMTc5MEQ2NjAwNDJDRjk4IC8qIEN1c3RvbVBhaW50Q2FudmFzLmggKi8sCiAJCQkJRTUx
NzY3MDIyMEI4OEMxNDAwRDQxMTY3IC8qIERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmgg
Ki8sCiAJCQkJRjU1QjNEODExMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVJbnB1dFR5cGUuY3BwICov
LAogCQkJCUY1NUIzRDgyMTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlSW5wdXRUeXBlLmggKi8sCkBA
IC0yODA4OSw2ICsyODEwMyw3IEBACiAJCQkJOTNENDM3QTAxRDU3QjE5QTAwQUI4NUVBIC8qIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkQ0RTkxQjFD
NDYyQ0ZDMDA1MDY1QkMgLyogQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk2MkNEMzI1QTExNTdFNTdDMDA2M0IwQTcgLyogQ3VzdG9tRXZlbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTRCMUUxM0U3MjE3OTBENjYwMDQyQ0Y5OCAvKiBDdXN0b21QYWludENhbnZhcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEI3QUU0OTMyMTc3QjU2RjAwQzU5OTU5IC8qIEN1c3RvbVBh
aW50SW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0I0MTNFMEU4NjMzRkQwMDMyQzRGMCAv
KiBEYXNoQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2RDBCMEExOTg5Q0EwMDdGQjhD
NSAvKiBEYXNoYm9hcmRSZWdpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMzAxMTQsNiArMzAxMjks
NyBAQAogCQkJCTU1RUM5NTk5MjA2QUE3QTAwMDdERDBBOSAvKiBQYWludEZyZXF1ZW5jeVRyYWNr
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4ODUwNjdGMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWlu
dEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTA4ODUwNjgwMTFEQTA0NUIwMDE4MkI5OCAvKiBQ
YWludFBoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0QjFFMTNFQjIxNzkzN0IzMDA0MkNGOTgg
LyogUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0ZC
MEExOTg5Q0EwMDdGQjhDNSAvKiBQYWlyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBMzEy
QjAyNkY3MDBDMUEzNTkgLyogUGFubmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxQTEy
QjAyNjc2MDBDMUEzNTkgLyogUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BhaW50UmVuZGVyaW5nQ29udGV4dDJEQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiODEzNmYzMmYxOGFmZWZjM2FjMzM3ZjcwNzk3
MDk2ZGU4Y2UyNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BhaW50UmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcApAQCAtMCwwICsxLDU2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaCIKKworI2lmIEVO
QUJMRShDU1NfUEFJTlRJTkdfQVBJKQorCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1l
c3BhY2UgSlNDOworCitpbmxpbmUgdm9pZCogcm9vdChDdXN0b21QYWludENhbnZhcyogY2FudmFz
KQoreworICAgIHJldHVybiBjYW52YXM7Cit9CisKK2Jvb2wgSlNQYWludFJlbmRlcmluZ0NvbnRl
eHQyRE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiog
cmVhc29uKQoreworICAgIGlmIChVTkxJS0VMWShyZWFzb24pKQorICAgICAgICAqcmVhc29uID0g
IkNhbnZhcyBpcyBvcGFxdWUgcm9vdCI7CisKKyAgICBKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJE
KiBqc1BhaW50UmVuZGVyaW5nQ29udGV4dCA9IGpzQ2FzdDxKU1BhaW50UmVuZGVyaW5nQ29udGV4
dDJEKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgIHZvaWQqIHJvb3QgPSBXZWJDb3Jl
Ojpyb290KCZqc1BhaW50UmVuZGVyaW5nQ29udGV4dC0+d3JhcHBlZCgpLmNhbnZhcygpKTsKKyAg
ICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCk7Cit9CisKK3ZvaWQgSlNQ
YWludFJlbmRlcmluZ0NvbnRleHQyRDo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHJvb3QoJndyYXBwZWQo
KS5jYW52YXMoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4
IDAyNDkzMGQxNWM0YjRkMDIzMzEzMTc4YjE0MDVkNzgyYTQ1ZjZkNzEuLjAwODVhZDdlZmRiZDNj
ZjkxMTE3OTI1ZDBlMTcwMzg2MjI0NGVjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTExMyw2ICsxMTMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oTmF2aWdhdG9yVXNlck1lZGlhKSBcCiAgICAgbWFjcm8o
T2Zmc2NyZWVuQ2FudmFzKSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEKSBcCisgICAgbWFjcm8oUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQpIFwKICAgICBtYWNy
byhQYXltZW50QWRkcmVzcykgXAogICAgIG1hY3JvKFBheW1lbnRNZXRob2RDaGFuZ2VFdmVudCkg
XAogICAgIG1hY3JvKFBheW1lbnRSZXF1ZXN0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2Fs
bGJhY2suaAppbmRleCBmMGVjMmM0NDEzNWFlNDRjYzg5MzUwNmQ4NWE1MDc1OTYzYjIzMTM2Li5m
MjFlNjc4YmM5MWZkMGIyYmI2M2UxMWJiNTk1NmM0MWE3ZjcwOWRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYWludENhbGxiYWNrLmgKQEAgLTMyLDEzICszMiwxMyBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDsKK2NsYXNzIFBhaW50UmVuZGVyaW5nQ29udGV4dDJEOwogCiBjbGFzcyBDU1NQYWlu
dENhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUGFpbnRDYWxsYmFjaz4sIHB1YmxpYyBB
Y3RpdmVET01DYWxsYmFjayB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQWN0aXZlRE9NQ2FsbGJhY2s6
OkFjdGl2ZURPTUNhbGxiYWNrOwogCi0gICAgdmlydHVhbCBDYWxsYmFja1Jlc3VsdDx2b2lkPiBo
YW5kbGVFdmVudChXZWJHTFJlbmRlcmluZ0NvbnRleHQmKSA9IDA7CisgICAgdmlydHVhbCBDYWxs
YmFja1Jlc3VsdDx2b2lkPiBoYW5kbGVFdmVudChQYWludFJlbmRlcmluZ0NvbnRleHQyRCYpID0g
MDsKIAogICAgIHZpcnR1YWwgfkNTU1BhaW50Q2FsbGJhY2soKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYWludENhbGxiYWNrLmlkbAppbmRleCA3NmQ5YjZjOTViYTFjZjhkMjk1MmE0Nzlk
MWM1MzA3NDk0Y2M4MDljLi4yOTQxNDczYTAzMGJjODFjNWZiNmRkZDIzYTdjZDljZjMxMDUzNWJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRDYWxsYmFjay5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50Q2FsbGJhY2suaWRsCkBAIC0yNiw0ICsyNiw0
IEBACiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKICAgICBDb25kaXRp
b25hbD1DU1NfUEFJTlRJTkdfQVBJLAotXSBjYWxsYmFjayBDU1NQYWludENhbGxiYWNrID0gdm9p
ZCAoV2ViR0xSZW5kZXJpbmdDb250ZXh0IGNvbnRleHQpOworXSBjYWxsYmFjayBDU1NQYWludENh
bGxiYWNrID0gdm9pZCAoUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgY29udGV4dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9DYW52YXNCYXNlLmNwcAppbmRleCA4NTkzOWIyNzRmNTkwYjAwY2M4M2EzNzk3Yjc5OTY5
NmRkZDZhOGMyLi40MGY4ZGIwNWM5ZDQ3YjgzOGIyNTY4ZmZlMTk1YTY0YjgzODMwNDQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgQ2FudmFzQmFzZTo6
Q2FudmFzQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQogCiBDYW52YXNCYXNlOjp+Q2FudmFzQmFzZSgpCiB7CisgICAgQVNTRVJUKCFtX2NvbnRleHQp
OyAvLyBTaG91bGQgaGF2ZSBiZWVuIHNldCB0byBudWxsIGJ5IGJhc2UgY2xhc3MuCiAgICAgbm90
aWZ5T2JzZXJ2ZXJzQ2FudmFzRGVzdHJveWVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNl
LmgKaW5kZXggNWRmZTI5MzUyZTE1MzRmNjYyMGM1MzY2YmViOTg0NDFhMWY0NzJmNy4uZmFkODFi
ZDIyNWU3M2VkNzllNjI0YjIwZjdjZDA0MmY3MDY4NWYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9DYW52YXNCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNC
YXNlLmgKQEAgLTMwLDkgKzMwLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
QWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgQ2FudmFzQmFzZTsKIGNsYXNzIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQ7CiBjbGFzcyBFbGVtZW50OworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3Mg
SW1hZ2U7CitjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBGbG9hdFJl
Y3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpAQCAtNTgsNiArNjIsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNIVE1MQ2FudmFzRWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzT2Zmc2NyZWVuQ2FudmFzKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0b21QYWludENhbnZhcygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHdpZHRoKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgPSAwOwpAQCAt
ODEsNiArODYsMTUgQEAgcHVibGljOgogCiAgICAgSGFzaFNldDxFbGVtZW50Kj4gY3NzQ2FudmFz
Q2xpZW50cygpIGNvbnN0OwogCisgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdD
b250ZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0KiBleGlzdGlu
Z0RyYXdpbmdDb250ZXh0KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIG1ha2VSZW5k
ZXJpbmdSZXN1bHRzQXZhaWxhYmxlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KGNv
bnN0IEZsb2F0UmVjdCYpID0gMDsKKworICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VU
cmFuc2Zvcm0oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbWFnZSogY29waWVkSW1hZ2UoKSBj
b25zdCA9IDA7CisKIHByb3RlY3RlZDoKICAgICBDYW52YXNCYXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENh
bnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNzZhYWQ1ZmI5NTI2MWVkNzg0OWRhMzY2YzA0ODVmOWIzMWQ3NmY4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKQEAg
LTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ3VzdG9tUGFpbnRDYW52YXMuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQor
CisjaW5jbHVkZSAiSW1hZ2VCaXRtYXAuaCIKKyNpbmNsdWRlICJQYWludFJlbmRlcmluZ0NvbnRl
eHQyRC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxDdXN0b21QYWludENhbnZhcz4g
Q3VzdG9tUGFpbnRDYW52YXM6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEN1c3RvbVBhaW50Q2FudmFzKGNvbnRleHQsIHdpZHRoLCBoZWlnaHQpKTsKK30KKwor
Q3VzdG9tUGFpbnRDYW52YXM6OkN1c3RvbVBhaW50Q2FudmFzKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCisgICAgOiBDYW52
YXNCYXNlKCZjb250ZXh0KQorICAgICwgbV9zaXplKHdpZHRoLCBoZWlnaHQpCit7Cit9CisKK0N1
c3RvbVBhaW50Q2FudmFzOjp+Q3VzdG9tUGFpbnRDYW52YXMoKQoreworICAgIG1fY29udGV4dCA9
IG51bGxwdHI7IC8vIEVuc3VyZSB0aGlzIGdvZXMgYXdheSBiZWZvcmUgdGhlIEltYWdlQnVmZmVy
LgorfQorCit1bnNpZ25lZCBDdXN0b21QYWludENhbnZhczo6d2lkdGgoKSBjb25zdAoreworICAg
IHJldHVybiBtX3NpemUud2lkdGgoKTsKK30KKwordm9pZCBDdXN0b21QYWludENhbnZhczo6c2V0
V2lkdGgodW5zaWduZWQgbmV3V2lkdGgpCit7CisgICAgcmV0dXJuIG1fc2l6ZS5zZXRXaWR0aChu
ZXdXaWR0aCk7Cit9CisKK3Vuc2lnbmVkIEN1c3RvbVBhaW50Q2FudmFzOjpoZWlnaHQoKSBjb25z
dAoreworICAgIHJldHVybiBtX3NpemUuaGVpZ2h0KCk7Cit9CisKK3ZvaWQgQ3VzdG9tUGFpbnRD
YW52YXM6OnNldEhlaWdodCh1bnNpZ25lZCBuZXdIZWlnaHQpCit7CisgICAgcmV0dXJuIG1fc2l6
ZS5zZXRIZWlnaHQobmV3SGVpZ2h0KTsKK30KKworY29uc3QgSW50U2l6ZSYgQ3VzdG9tUGFpbnRD
YW52YXM6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NpemU7Cit9CisKK3ZvaWQgQ3Vz
dG9tUGFpbnRDYW52YXM6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKK3sKKyAgICBt
X3NpemUgPSBuZXdTaXplOworfQorCitFeGNlcHRpb25PcjxSZWZQdHI8UGFpbnRSZW5kZXJpbmdD
b250ZXh0MkQ+PiBDdXN0b21QYWludENhbnZhczo6Z2V0Q29udGV4dCgpCit7CisgICAgaWYgKG1f
Y29udGV4dCkKKyAgICAgICAgcmV0dXJuIHsgUmVmUHRyPFBhaW50UmVuZGVyaW5nQ29udGV4dDJE
PiB7ICZkb3duY2FzdDxQYWludFJlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkgfSB9Owor
CisgICAgbV9jb250ZXh0ID0gUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZSgqdGhpcyk7
CisgICAgZG93bmNhc3Q8UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ+KCptX2NvbnRleHQpLnNldFVz
ZXNEaXNwbGF5TGlzdERyYXdpbmcodHJ1ZSk7CisgICAgZG93bmNhc3Q8UGFpbnRSZW5kZXJpbmdD
b250ZXh0MkQ+KCptX2NvbnRleHQpLnNldFRyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KGZhbHNlKTsK
KworICAgIHJldHVybiB7IFJlZlB0cjxQYWludFJlbmRlcmluZ0NvbnRleHQyRD4geyAmZG93bmNh
c3Q8UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ+KCptX2NvbnRleHQpIH0gfTsKK30KKworSW1hZ2Uq
IEN1c3RvbVBhaW50Q2FudmFzOjpjb3BpZWRJbWFnZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFt
X2Rlc3RpbmF0aW9uR3JhcGhpY3NDb250ZXh0KTsKKyAgICBpZiAoIXdpZHRoKCkgfHwgIWhlaWdo
dCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIG1fY29waWVkQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFVuYWNjZWxlcmF0ZWQsIDEsIENvbG9yU3BhY2VTUkdC
LCBudWxscHRyKTsKKyAgICBpZiAoIW1fY29waWVkQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIG1fZGVzdGluYXRpb25HcmFwaGljc0NvbnRleHQgPSAmbV9jb3BpZWRCdWZm
ZXItPmNvbnRleHQoKTsKKyAgICBpZiAobV9jb250ZXh0KQorICAgICAgICBtX2NvbnRleHQtPnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCk7CisgICAgbV9kZXN0aW5hdGlvbkdyYXBoaWNz
Q29udGV4dCA9IG51bGxwdHI7CisKKyAgICBtX2NvcGllZEltYWdlID0gbV9jb3BpZWRCdWZmZXIt
PmNvcHlJbWFnZShtX2NvcGllZEJ1ZmZlci0+ZmFzdENvcHlJbWFnZU1vZGUoKSwgUHJlc2VydmVS
ZXNvbHV0aW9uOjpZZXMpOworICAgIHJldHVybiBtX2NvcGllZEltYWdlLmdldCgpOworfQorCitH
cmFwaGljc0NvbnRleHQqIEN1c3RvbVBhaW50Q2FudmFzOjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fZGVzdGluYXRpb25HcmFwaGljc0NvbnRleHQ7Cit9CisKK0dyYXBo
aWNzQ29udGV4dCogQ3VzdG9tUGFpbnRDYW52YXM6OmV4aXN0aW5nRHJhd2luZ0NvbnRleHQoKSBj
b25zdAoreworICAgIHJldHVybiBkcmF3aW5nQ29udGV4dCgpOworfQorCit2b2lkIEN1c3RvbVBh
aW50Q2FudmFzOjptYWtlUmVuZGVyaW5nUmVzdWx0c0F2YWlsYWJsZSgpCit7CisgICAgaWYgKG1f
Y29udGV4dCkKKyAgICAgICAgbV9jb250ZXh0LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cygpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3Vz
dG9tUGFpbnRDYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45OTU3MWZkZjczYjgyNjhlZTY1ZDFkZWYwMGFhZDRkZWVjYWRkMTM4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5o
CkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShDU1NfUEFJTlRJTkdfQVBJKQorCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5j
bHVkZSAiQ2FudmFzQmFzZS5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAi
RXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkludFNp
emUuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIlNjcmlw
dFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBJbWFnZUJpdG1hcDsKK2NsYXNzIFBhaW50UmVuZGVyaW5nQ29u
dGV4dDJEOworCitjbGFzcyBDdXN0b21QYWludENhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEN1c3RvbVBhaW50Q2FudmFzPiwgcHVibGljIENhbnZhc0Jhc2UgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorCisgICAgc3RhdGljIFJlZjxDdXN0b21QYWludENh
bnZhcz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCB1bnNpZ25lZCB3aWR0aCwgdW5z
aWduZWQgaGVpZ2h0KTsKKyAgICB2aXJ0dWFsIH5DdXN0b21QYWludENhbnZhcygpOworICAgIGJv
b2wgaXNDdXN0b21QYWludENhbnZhcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIHVuc2lnbmVkIHdpZHRoKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRXaWR0aCh1bnNp
Z25lZCk7CisgICAgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRI
ZWlnaHQodW5zaWduZWQpOworCisgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IGZpbmFs
OworICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CisKKyAgICBFeGNlcHRp
b25PcjxSZWZQdHI8UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ+PiBnZXRDb250ZXh0KCk7CisKKyAg
ICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgY29uc3QgZmluYWw7CisgICAgR3Jh
cGhpY3NDb250ZXh0KiBleGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29uc3QgZmluYWw7CisKKyAg
ICB2b2lkIG1ha2VSZW5kZXJpbmdSZXN1bHRzQXZhaWxhYmxlKCkgZmluYWw7CisgICAgdm9pZCBk
aWREcmF3KGNvbnN0IEZsb2F0UmVjdCYpIGZpbmFsIHsgfQorCisgICAgQWZmaW5lVHJhbnNmb3Jt
IGJhc2VUcmFuc2Zvcm0oKSBjb25zdCBmaW5hbCB7IEFTU0VSVChtX2Rlc3RpbmF0aW9uR3JhcGhp
Y3NDb250ZXh0ICYmIG1fY29waWVkQnVmZmVyKTsgcmV0dXJuIG1fY29waWVkQnVmZmVyLT5iYXNl
VHJhbnNmb3JtKCk7IH0KKyAgICBJbWFnZSogY29waWVkSW1hZ2UoKSBjb25zdCBmaW5hbDsKKwor
ICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsK
KworcHJpdmF0ZToKKyAgICBDdXN0b21QYWludENhbnZhcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCk7CisKKyAgICB2b2lkIHJlZkNhbnZh
c0Jhc2UoKSBmaW5hbCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkNhbnZhc0Jhc2UoKSBmaW5h
bCB7IGRlcmVmKCk7IH0KKworICAgIG11dGFibGUgR3JhcGhpY3NDb250ZXh0KiBtX2Rlc3RpbmF0
aW9uR3JhcGhpY3NDb250ZXh0ID0gbnVsbHB0cjsKKyAgICBtdXRhYmxlIEludFNpemUgbV9zaXpl
OworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtX2NvcGllZEJ1ZmZl
cjsKKyAgICBtdXRhYmxlIFJlZlB0cjxJbWFnZT4gbV9jb3BpZWRJbWFnZTsKK307CisKK30KK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FOVkFTKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzLCBp
c0N1c3RvbVBhaW50Q2FudmFzKCkpCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuaAppbmRleCAyZGY5YzBiMzBmNTYwNmQ4YmVlNmMxYzgxODc3OWM2YjFlNDhlODhj
Li4wYmY0Nzc0ZDNjNmQ2YmM3MDYxZDQwZTZlZGM5YmEzYzdmMGZjYzJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCkBAIC0xMTIsMTIgKzExMiwxMiBAQCBwdWJsaWM6
CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gdG9CbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBS
ZWY8QmxvYkNhbGxiYWNrPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBKU0M6OkpTVmFsdWUg
cXVhbGl0eSk7CiAKICAgICAvLyBVc2VkIGZvciByZW5kZXJpbmcKLSAgICB2b2lkIGRpZERyYXco
Y29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYpIGZp
bmFsOwogCiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0
Jik7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgY29uc3Q7Ci0gICAg
R3JhcGhpY3NDb250ZXh0KiBleGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29uc3Q7CisgICAgR3Jh
cGhpY3NDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIGNvbnN0IGZpbmFsOworICAgIEdyYXBoaWNz
Q29udGV4dCogZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKICAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHRvTWVkaWFTYW1wbGUo
KTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIEltYWdlQnVmZmVy
KiBidWZmZXIoKSBjb25zdDsKLSAgICBJbWFnZSogY29waWVkSW1hZ2UoKSBjb25zdDsKKyAgICBJ
bWFnZSogY29waWVkSW1hZ2UoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGNsZWFyQ29waWVkSW1h
Z2UoKTsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoKTsKICAgICB2b2lkIG1h
a2VQcmVzZW50YXRpb25Db3B5KCk7CkBAIC0xMzMsOSArMTMzLDkgQEAgcHVibGljOgogCiAgICAg
U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgZmluYWw7CiAKLSAgICBBZmZp
bmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0OworICAgIEFmZmluZVRyYW5zZm9ybSBi
YXNlVHJhbnNmb3JtKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIG1ha2VSZW5kZXJpbmdSZXN1
bHRzQXZhaWxhYmxlKCk7CisgICAgdm9pZCBtYWtlUmVuZGVyaW5nUmVzdWx0c0F2YWlsYWJsZSgp
IGZpbmFsOwogICAgIGJvb2wgaGFzQ3JlYXRlZEltYWdlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXI7IH0KIAogICAgIGJvb2wgc2hvdWxkQWNjZWxlcmF0ZShj
b25zdCBJbnRTaXplJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09m
ZnNjcmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5j
cHAKaW5kZXggMDNhMTBmMzRhMmVhNWRiZTkwOTRiMDA4ZTYyZjFmY2Y1Yzk0ZjNhMC4uZWNkOGZl
MzQ4OTkxNWE2MjVmODQ3NDRmOWFiOTA2YWE5ZmU3YWU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
T2Zmc2NyZWVuQ2FudmFzLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIk9mZnNjcmVlbkNhbnZhcy5oIgogCisjaW5jbHVkZSAiQ2FudmFzUmVuZGVy
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlQml0bWFwLmgiCiAjaW5jbHVkZSAiV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmgiCiAKQEAgLTQyLDcgKzQzLDEwIEBAIE9mZnNjcmVlbkNhbnZhczo6
T2Zmc2NyZWVuQ2FudmFzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVuc2lnbmVk
IHdpZHRoCiB7CiB9CiAKLU9mZnNjcmVlbkNhbnZhczo6fk9mZnNjcmVlbkNhbnZhcygpID0gZGVm
YXVsdDsKK09mZnNjcmVlbkNhbnZhczo6fk9mZnNjcmVlbkNhbnZhcygpCit7CisgICAgbV9jb250
ZXh0ID0gbnVsbHB0cjsKK30KIAogdW5zaWduZWQgT2Zmc2NyZWVuQ2FudmFzOjp3aWR0aCgpIGNv
bnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCBjMjcyZWQ2ZTk5
OWY4YzAyMDliNDc0YjY3NmE4NDBkYTBlNjg5MjZjLi5mYzg2M2RmNmNmMWRhMzFiMzRlODZhY2Zk
MTk0Y2IzMzNhYmEwZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVl
bkNhbnZhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zv
cm0uaCIKICNpbmNsdWRlICJDYW52YXNCYXNlLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgpAQCAtNzUsNiArNzYsMTUgQEAgcHVibGljOgogICAg
IFJlZlB0cjxJbWFnZUJpdG1hcD4gdHJhbnNmZXJUb0ltYWdlQml0bWFwKCk7CiAgICAgLy8gdm9p
ZCBjb252ZXJ0VG9CbG9iKEltYWdlRW5jb2RlT3B0aW9ucyBvcHRpb25zKTsKIAorICAgIEdyYXBo
aWNzQ29udGV4dCogZHJhd2luZ0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRy
OyB9CisgICAgR3JhcGhpY3NDb250ZXh0KiBleGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgdm9pZCBtYWtlUmVuZGVyaW5nUmVzdWx0
c0F2YWlsYWJsZSgpIGZpbmFsIHsgfQorICAgIHZvaWQgZGlkRHJhdyhjb25zdCBGbG9hdFJlY3Qm
KSBmaW5hbCB7IH0KKworICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4geyB9OyB9CisgICAgSW1hZ2UqIGNvcGllZEltYWdlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbnVsbHB0cjsgfQorCiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwogICAg
IHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGMzNDYxMDIxNWU1Njlm
ZTdhYTExOWNhNTIxNmE3ZDgzZTE1NTYyMjkuLjMzNjE0MzhmMWVmMjMzNjk5ZDBlZGEzNTIxYzA1
NmRlNjdiYWVkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGJvb2wgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBDYW52YXNQYXR0ZXJuKiBwYXR0
ZXJuKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEhUTUxDYW52YXNFbGVtZW50KiBzb3VyY2VDYW52YXMp
Citib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgQ2Fu
dmFzQmFzZSogc291cmNlQ2FudmFzKQogewogICAgIGlmIChtX2NhbnZhcy5vcmlnaW5DbGVhbigp
ICYmIHNvdXJjZUNhbnZhcyAmJiAhc291cmNlQ2FudmFzLT5vcmlnaW5DbGVhbigpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCAyZDJkODg3NTc5MDE4ZDBmYWZkYWFkZmFlNmQyMmMx
ZWIzOTA0MWUyLi5mMDA3MWMyY2UyZjQwODA3Mjk4M2IwYzViMzY1MTJhNTc2NTJhZDFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNCaXRtYXBS
ZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGxh
Y2Vob2xkZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc09m
ZnNjcmVlbjJkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNQ
YWludCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKSB7fQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KQEAgLTczLDcgKzc0LDcgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQoQ2Fu
dmFzQmFzZSYpOwogICAgIGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBDYW52YXNQYXR0ZXJu
Kik7Ci0gICAgYm9vbCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEhUTUxDYW52YXNFbGVtZW50Kik7
CisgICAgYm9vbCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IENhbnZhc0Jhc2UqKTsKICAgICBib29s
IHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTEltYWdlRWxlbWVudCopOwogICAgIGJvb2wgd291
bGRUYWludE9yaWdpbihjb25zdCBIVE1MVmlkZW9FbGVtZW50Kik7CiAgICAgYm9vbCB3b3VsZFRh
aW50T3JpZ2luKGNvbnN0IEltYWdlQml0bWFwKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4
IDE0NGU2OGRlY2M1NmI5NmM1NTk4YmNiOTg5NTFlNzM5ZGQxNzlmYjcuLjg4ZjM1NjYyZDA5YjVi
ODIyOGQzNzA4ZWI3ZDJkYjllNjUzZDdjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC04
OCw4ICs4OCwxMyBAQCBwdWJsaWM6CiAgICAgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3Bs
YXlMaXN0OwogICAgIAogICAgIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGNsaXApCisgICAgICAgIDogRGlzcGxheUxp
c3REcmF3aW5nQ29udGV4dChjb250ZXh0LnN0YXRlKCksIGNsaXApCisgICAgeworICAgIH0KKwor
ICAgIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
IHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApCiAgICAgICAgIDogY29udGV4dChbJl0oR3Jh
cGhpY3NDb250ZXh0JiBkaXNwbGF5TGlzdENvbnRleHQpIHsKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0
LCBkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBjbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgZGlzcGxheUxpc3QsIHN0YXRlLCBjbGlwLCBBZmZpbmVU
cmFuc2Zvcm0oKSk7CiAgICAgICAgIH0pCiAgICAgewogICAgIH0KQEAgLTE0Niw4ICsxNTEsNyBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnVud2luZFN0YXRlU3RhY2soKQog
ICAgIC8vIGlzIGNsZWFyZWQgYmVmb3JlIGRlc3RydWN0aW9uLCB0byBhdm9pZCBhc3NlcnRpb25z
IGluIHRoZQogICAgIC8vIEdyYXBoaWNzQ29udGV4dCBkdG9yLgogICAgIGlmIChzaXplX3Qgc3Rh
Y2tTaXplID0gbV9zdGF0ZVN0YWNrLnNpemUoKSkgewotICAgICAgICBhdXRvJiBjYW52YXMgPSBk
b3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKLSAgICAgICAgaWYgKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCA9IGNhbnZhcy5leGlzdGluZ0RyYXdpbmdDb250ZXh0KCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBjYW52YXNCYXNlKCkuZXhpc3RpbmdEcmF3
aW5nQ29udGV4dCgpKSB7CiAgICAgICAgICAgICB3aGlsZSAoLS1zdGFja1NpemUpCiAgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICB9CkBAIC0xNjcsMTAgKzE3MSw3
IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6On5DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlKCkKIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6aXNBY2NlbGVyYXRl
ZCgpIGNvbnN0CiB7CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkgfHwg
RU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLSAgICBhdXRvJiBjYW52YXMgPSBkb3duY2Fz
dDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKLSAgICBpZiAoIWNhbnZhcy5oYXND
cmVhdGVkSW1hZ2VCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8qIGNv
bnRleHQgPSBkcmF3aW5nQ29udGV4dCgpOworICAgIGF1dG8qIGNvbnRleHQgPSBjYW52YXNCYXNl
KCkuZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpOwogICAgIHJldHVybiBjb250ZXh0ICYmIGNvbnRl
eHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKQEAg
LTQwMSw5ICs0MDIsOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldFN0
cm9rZVN0eWxlKENhbnZhc1N0eWxlIHN0eWxlKQogICAgIGlmIChzdGF0ZSgpLnN0cm9rZVN0eWxl
LmlzVmFsaWQoKSAmJiBzdGF0ZSgpLnN0cm9rZVN0eWxlLmlzRXF1aXZhbGVudENvbG9yKHN0eWxl
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENh
bnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7CisgICAgaWYgKHN0eWxlLmlzQ3VycmVudENvbG9y
KCkgJiYgaXM8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSkpIHsKKyAgICAgICAgYXV0
byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7CiAK
LSAgICBpZiAoc3R5bGUuaXNDdXJyZW50Q29sb3IoKSkgewogICAgICAgICBpZiAoc3R5bGUuaGFz
T3ZlcnJpZGVBbHBoYSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCB1c2Ug
UkdCQTMyIGhlcmUuCiAgICAgICAgICAgICBzdHlsZSA9IENhbnZhc1N0eWxlKGNvbG9yV2l0aE92
ZXJyaWRlQWxwaGEoY3VycmVudENvbG9yKCZjYW52YXMpLnJnYigpLCBzdHlsZS5vdmVycmlkZUFs
cGhhKCkpKTsKQEAgLTQzMCw5ICs0MzEsOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2U6OnNldEZpbGxTdHlsZShDYW52YXNTdHlsZSBzdHlsZSkKICAgICBpZiAoc3RhdGUoKS5m
aWxsU3R5bGUuaXNWYWxpZCgpICYmIHN0YXRlKCkuZmlsbFN0eWxlLmlzRXF1aXZhbGVudENvbG9y
KHN0eWxlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8
SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7CisgICAgaWYgKHN0eWxlLmlzQ3VycmVu
dENvbG9yKCkgJiYgaXM8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSkpIHsKKyAgICAg
ICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2Uo
KSk7CiAKLSAgICBpZiAoc3R5bGUuaXNDdXJyZW50Q29sb3IoKSkgewogICAgICAgICBpZiAoc3R5
bGUuaGFzT3ZlcnJpZGVBbHBoYSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIG5v
dCB1c2UgUkdCQTMyIGhlcmUuCiAgICAgICAgICAgICBzdHlsZSA9IENhbnZhc1N0eWxlKGNvbG9y
V2l0aE92ZXJyaWRlQWxwaGEoY3VycmVudENvbG9yKCZjYW52YXMpLnJnYigpLCBzdHlsZS5vdmVy
cmlkZUFscGhhKCkpKTsKQEAgLTkyOCw4ICs5MjksNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OnJlc2V0VHJhbnNmb3JtKCkKIAogICAgIHJlYWxpemVTYXZlcygpOwogCi0g
ICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2Uo
KSk7Ci0gICAgYy0+c2V0Q1RNKGNhbnZhcy5iYXNlVHJhbnNmb3JtKCkpOworICAgIGMtPnNldENU
TShjYW52YXNCYXNlKCkuYmFzZVRyYW5zZm9ybSgpKTsKICAgICBtb2RpZmlhYmxlU3RhdGUoKS50
cmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oKTsKIAogICAgIGlmIChoYXNJbnZlcnRpYmxlVHJh
bnNmb3JtKQpAQCAtMTcyNywxOCArMTcyNywxNiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmNsZWFyQ2FudmFzKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYy0+c2F2ZSgp
OwotICAgIGF1dG8mIGNhbnZhcyA9IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNC
YXNlKCkpOwotICAgIGMtPnNldENUTShjYW52YXMuYmFzZVRyYW5zZm9ybSgpKTsKLSAgICBjLT5j
bGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCgpLCBjYW52YXMuaGVpZ2h0KCkp
KTsKKyAgICBjLT5zZXRDVE0oY2FudmFzQmFzZSgpLmJhc2VUcmFuc2Zvcm0oKSk7CisgICAgYy0+
Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBjYW52YXNCYXNlKCkud2lkdGgoKSwgY2FudmFzQmFz
ZSgpLmhlaWdodCgpKSk7CiAgICAgYy0+cmVzdG9yZSgpOwogfQogCiBQYXRoIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2U6OnRyYW5zZm9ybUFyZWFUb0RldmljZShjb25zdCBQYXRoJiBwYXRo
KSBjb25zdAogewogICAgIFBhdGggdHJhbnNmb3JtZWQocGF0aCk7Ci0gICAgYXV0byYgY2FudmFz
ID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7CiAgICAgdHJhbnNm
b3JtZWQudHJhbnNmb3JtKHN0YXRlKCkudHJhbnNmb3JtKTsKLSAgICB0cmFuc2Zvcm1lZC50cmFu
c2Zvcm0oY2FudmFzLmJhc2VUcmFuc2Zvcm0oKSk7CisgICAgdHJhbnNmb3JtZWQudHJhbnNmb3Jt
KGNhbnZhc0Jhc2UoKS5iYXNlVHJhbnNmb3JtKCkpOwogICAgIHJldHVybiB0cmFuc2Zvcm1lZDsK
IH0KIApAQCAtMTc1MiwxNyArMTc1MCwxNCBAQCBQYXRoIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2U6OnRyYW5zZm9ybUFyZWFUb0RldmljZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiBib29s
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnJlY3RDb250YWluc0NhbnZhcyhjb25zdCBG
bG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgRmxvYXRRdWFkIHF1YWQocmVjdCk7Ci0gICAg
YXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7
Ci0gICAgRmxvYXRRdWFkIGNhbnZhc1F1YWQoRmxvYXRSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCgp
LCBjYW52YXMuaGVpZ2h0KCkpKTsKKyAgICBGbG9hdFF1YWQgY2FudmFzUXVhZChGbG9hdFJlY3Qo
MCwgMCwgY2FudmFzQmFzZSgpLndpZHRoKCksIGNhbnZhc0Jhc2UoKS5oZWlnaHQoKSkpOwogICAg
IHJldHVybiBzdGF0ZSgpLnRyYW5zZm9ybS5tYXBRdWFkKHF1YWQpLmNvbnRhaW5zUXVhZChjYW52
YXNRdWFkKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4gSW50UmVjdCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpjYWxjdWxhdGVDb21wb3NpdGluZ0J1ZmZlclJlY3QoY29uc3QgVCYgYXJl
YSwgSW50U2l6ZSogY3JvcHBlZE9mZnNldCkKIHsKLSAgICBhdXRvJiBjYW52YXMgPSBkb3duY2Fz
dDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKLQotICAgIEludFJlY3QgY2FudmFz
UmVjdCgwLCAwLCBjYW52YXMud2lkdGgoKSwgY2FudmFzLmhlaWdodCgpKTsKLSAgICBjYW52YXNS
ZWN0ID0gY2FudmFzLmJhc2VUcmFuc2Zvcm0oKS5tYXBSZWN0KGNhbnZhc1JlY3QpOworICAgIElu
dFJlY3QgY2FudmFzUmVjdCgwLCAwLCBjYW52YXNCYXNlKCkud2lkdGgoKSwgY2FudmFzQmFzZSgp
LmhlaWdodCgpKTsKKyAgICBjYW52YXNSZWN0ID0gY2FudmFzQmFzZSgpLmJhc2VUcmFuc2Zvcm0o
KS5tYXBSZWN0KGNhbnZhc1JlY3QpOwogICAgIFBhdGggcGF0aCA9IHRyYW5zZm9ybUFyZWFUb0Rl
dmljZShhcmVhKTsKICAgICBJbnRSZWN0IGJ1ZmZlclJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHBh
dGguZmFzdEJvdW5kaW5nUmVjdCgpKTsKICAgICBJbnRQb2ludCBvcmlnaW5hbExvY2F0aW9uID0g
YnVmZmVyUmVjdC5sb2NhdGlvbigpOwpAQCAtMTc3OSw5ICsxNzc0LDggQEAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVDb21w
b3NpdGluZ0J1ZmYKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjb21wb3Np
dGVCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgSW50UmVjdCYgYnVmZmVyUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7Ci0gICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRN
TENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7Ci0gICAgSW50UmVjdCBjYW52YXNSZWN0KDAs
IDAsIGNhbnZhcy53aWR0aCgpLCBjYW52YXMuaGVpZ2h0KCkpOwotICAgIGNhbnZhc1JlY3QgPSBj
YW52YXMuYmFzZVRyYW5zZm9ybSgpLm1hcFJlY3QoY2FudmFzUmVjdCk7CisgICAgSW50UmVjdCBj
YW52YXNSZWN0KDAsIDAsIGNhbnZhc0Jhc2UoKS53aWR0aCgpLCBjYW52YXNCYXNlKCkuaGVpZ2h0
KCkpOworICAgIGNhbnZhc1JlY3QgPSBjYW52YXNCYXNlKCkuYmFzZVRyYW5zZm9ybSgpLm1hcFJl
Y3QoY2FudmFzUmVjdCk7CiAKICAgICBhdXRvKiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBp
ZiAoIWMpCkBAIC0xOTQ2LDEyICsxOTQwLDE2IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQ
YXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybihICiAg
ICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZSgq
Y2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VFbGVtZW50LnJlbmRlcmVyKCkpLCBy
ZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmUHRy
PENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0
ZXJuKEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZ
KQorRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKENhbnZhc0Jhc2UmIGNhbnZhcywgYm9vbCByZXBlYXRY
LCBib29sIHJlcGVhdFkpCiB7Ci0gICAgaWYgKCFjYW52YXMud2lkdGgoKSB8fCAhY2FudmFzLmhl
aWdodCgpIHx8ICFjYW52YXMuYnVmZmVyKCkpCisgICAgaWYgKCFjYW52YXMud2lkdGgoKSB8fCAh
Y2FudmFzLmhlaWdodCgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKKyAgICBhdXRvKiBjb3BpZWRJbWFnZSA9IGNhbnZhcy5jb3BpZWRJbWFnZSgpOwor
CisgICAgaWYgKCFjb3BpZWRJbWFnZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CiAKLSAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2Fu
dmFzUGF0dGVybjo6Y3JlYXRlKCpjYW52YXMuY29waWVkSW1hZ2UoKSwgcmVwZWF0WCwgcmVwZWF0
WSwgY2FudmFzLm9yaWdpbkNsZWFuKCkpIH07CisgICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0
ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZSgqY29waWVkSW1hZ2UsIHJlcGVhdFgsIHJlcGVh
dFksIGNhbnZhcy5vcmlnaW5DbGVhbigpKSB9OwogfQogICAgIAogI2lmIEVOQUJMRShWSURFTykK
QEAgLTE5ODgsOCArMTk4Niw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4g
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybihJCiAKIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZGlkRHJhd0VudGlyZUNhbnZhcygpCiB7Ci0gICAg
YXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7
Ci0gICAgZGlkRHJhdyhGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBjYW52YXMuc2l6ZSgp
KSwgQ2FudmFzRGlkRHJhd0FwcGx5Q2xpcCk7CisgICAgZGlkRHJhdyhGbG9hdFJlY3QoRmxvYXRQ
b2ludDo6emVybygpLCBjYW52YXNCYXNlKCkuc2l6ZSgpKSwgQ2FudmFzRGlkRHJhd0FwcGx5Q2xp
cCk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZGlkRHJhdyhjb25z
dCBGbG9hdFJlY3QmIHIsIHVuc2lnbmVkIG9wdGlvbnMpCkBAIC0yMDM0LDggKzIwMzEsNyBAQCB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRpZERyYXcoY29uc3QgRmxvYXRSZWN0
JiByLCB1bnNpZ25lZCBvcHRpb25zKQogICAgICAgICAvLyB3ZSdkIGhhdmUgdG8ga2VlcCB0aGUg
Y2xpcCBwYXRoIGFyb3VuZC4KICAgICB9CiAKLSAgICBhdXRvJiBjYW52YXMgPSBkb3duY2FzdDxI
VE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsKLSAgICBjYW52YXMuZGlkRHJhdyhkaXJ0
eVJlY3QpOworICAgIGNhbnZhc0Jhc2UoKS5kaWREcmF3KGRpcnR5UmVjdCk7CiB9CiAKIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c2V0VHJhY2tzRGlzcGxheUxpc3RSZXBsYXko
Ym9vbCB0cmFja3NEaXNwbGF5TGlzdFJlcGxheSkKQEAgLTIwNzUsMTAgKzIwNzEsOCBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2Fu
dmFzKCkKICAgICAgICAgaWYgKCFtX3JlY29yZGluZ0NvbnRleHQpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+
KGNhbnZhc0Jhc2UoKSk7Ci0KLSAgICAgICAgRmxvYXRSZWN0IGNsaXAoRmxvYXRQb2ludDo6emVy
bygpLCBjYW52YXMuc2l6ZSgpKTsKLSAgICAgICAgRGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxh
eWVyKCpjYW52YXMuZHJhd2luZ0NvbnRleHQoKSwgbV9yZWNvcmRpbmdDb250ZXh0LT5kaXNwbGF5
TGlzdCk7CisgICAgICAgIEZsb2F0UmVjdCBjbGlwKEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFz
QmFzZSgpLnNpemUoKSk7CisgICAgICAgIERpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllcigq
Y2FudmFzQmFzZSgpLmRyYXdpbmdDb250ZXh0KCksIG1fcmVjb3JkaW5nQ29udGV4dC0+ZGlzcGxh
eUxpc3QpOwogCiAgICAgICAgIGlmIChVTkxJS0VMWShtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5
KSkgewogICAgICAgICAgICAgYXV0byByZXBsYXlMaXN0ID0gcmVwbGF5ZXIucmVwbGF5KGNsaXAs
IG1fdHJhY2tzRGlzcGxheUxpc3RSZXBsYXkpOwpAQCAtMjA5MiwxNCArMjA4NiwxMyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2Fu
dmFzKCkKIAogR3JhcGhpY3NDb250ZXh0KiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpk
cmF3aW5nQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRN
TENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UoKSk7CiAgICAgaWYgKFVOTElLRUxZKG1fdXNlc0Rp
c3BsYXlMaXN0RHJhd2luZykpIHsKICAgICAgICAgaWYgKCFtX3JlY29yZGluZ0NvbnRleHQpCi0g
ICAgICAgICAgICBtX3JlY29yZGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlM
aXN0RHJhd2luZ0NvbnRleHQ+KCpjYW52YXMuZHJhd2luZ0NvbnRleHQoKSwgRmxvYXRSZWN0KEZs
b2F0UG9pbnQ6Onplcm8oKSwgY2FudmFzLnNpemUoKSkpOworICAgICAgICAgICAgbV9yZWNvcmRp
bmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0PihH
cmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBjYW52
YXNCYXNlKCkuc2l6ZSgpKSk7CiAgICAgICAgIHJldHVybiAmbV9yZWNvcmRpbmdDb250ZXh0LT5j
b250ZXh0OwogICAgIH0KIAotICAgIHJldHVybiBjYW52YXMuZHJhd2luZ0NvbnRleHQoKTsKKyAg
ICByZXR1cm4gY2FudmFzQmFzZSgpLmRyYXdpbmdDb250ZXh0KCk7CiB9CiAKIHN0YXRpYyBSZWZQ
dHI8SW1hZ2VEYXRhPiBjcmVhdGVFbXB0eUltYWdlRGF0YShjb25zdCBJbnRTaXplJiBzaXplKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5oCmluZGV4IDY1NTQ4YWQxZjQ5NmIwYWMwMzYwNjEzNzM1ZTliMzZlMTUz
NzQ5NjEuLmFkNTM4Y2Q3OTBiNDc2ZWMzMjE4YTkyMTZhNmI1NjY4OWUwYjY4N2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmgKQEAgLTMxNiw3ICszMTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRG
aWxsU3R5bGUoQ2FudmFzU3R5bGUpOwogCiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1Bh
dHRlcm4+PiBjcmVhdGVQYXR0ZXJuKEhUTUxJbWFnZUVsZW1lbnQmLCBib29sIHJlcGVhdFgsIGJv
b2wgcmVwZWF0WSk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBjcmVh
dGVQYXR0ZXJuKEhUTUxDYW52YXNFbGVtZW50JiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkp
OworICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4gY3JlYXRlUGF0dGVybihD
YW52YXNCYXNlJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpOwogI2lmIEVOQUJMRShWSURF
TykKICAgICBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IGNyZWF0ZVBhdHRlcm4o
SFRNTFZpZGVvRWxlbWVudCYsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250
ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhZTFmY2EyMTA0M2YyMDNhYjYxOTNkMDkxZGJhYjRkNmIw
ZThmZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYWlu
dFJlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJQYWludFJlbmRlcmluZ0NvbnRleHQyRC5oIgorCisjaWYgRU5BQkxFKENTU19QQUlOVElO
R19BUEkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlxdWVfcHRyPFBhaW50UmVu
ZGVyaW5nQ29udGV4dDJEPiBQYWludFJlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlKENhbnZhc0Jh
c2UmIGNhbnZhcykKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBhaW50UmVuZGVyaW5n
Q29udGV4dDJEPihuZXcgUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQoY2FudmFzKSk7Cit9CisKK1Bh
aW50UmVuZGVyaW5nQ29udGV4dDJEOjpQYWludFJlbmRlcmluZ0NvbnRleHQyRChDYW52YXNCYXNl
JiBjYW52YXMpCisgICAgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlKGNhbnZhcywgZmFs
c2UsIGZhbHNlKQoreworfQorCitQYWludFJlbmRlcmluZ0NvbnRleHQyRDo6flBhaW50UmVuZGVy
aW5nQ29udGV4dDJEKCkgPSBkZWZhdWx0OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5n
Q29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0Nv
bnRleHQyRC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkOGE0MDQ5NTEyZGEyNjI2MTYzM2FmZmY5YjJhNGFhODdh
MTNlMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYWlu
dFJlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaCIKKworI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdf
QVBJKQorCisjaW5jbHVkZSAiQ3VzdG9tUGFpbnRDYW52YXMuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBQYWludFJlbmRlcmluZ0NvbnRleHQyRCBmaW5hbCA6IHB1YmxpYyBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFBhaW50UmVuZGVyaW5nQ29udGV4dDJEPiBjcmVhdGUoQ2FudmFzQmFzZSYpOworCisg
ICAgdmlydHVhbCB+UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQoKTsKKworICAgIGJvb2wgaXNQYWlu
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBDdXN0b21QYWludENhbnZh
cyYgY2FudmFzKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8Q3VzdG9tUGFpbnRDYW52YXM+KGNh
bnZhc0Jhc2UoKSk7IH0KKworcHJpdmF0ZToKKyAgICBQYWludFJlbmRlcmluZ0NvbnRleHQyRChD
YW52YXNCYXNlJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0NBTlZBU1JFTkRFUklOR0NPTlRFWFQoV2ViQ29yZTo6UGFpbnRSZW5kZXJpbmdD
b250ZXh0MkQsIGlzUGFpbnQoKSkKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlOTFj
ZTdlNDhlMDVjYzhmMTIzYWExZmZhZTlhOGUyZTg2OTk4MGIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRleHQyRC5pZGwKQEAg
LTAsMCArMSw0NSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0Ogor
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitbCisgICAgQ3VzdG9tSXNSZWFj
aGFibGUsCisgICAgRW5hYmxlZEF0UnVudGltZT1DU1NQYWludGluZ0FQSSwKKyAgICBDb25kaXRp
b25hbD1DU1NfUEFJTlRJTkdfQVBJLAorICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorICAgIEpT
Q3VzdG9tTWFya0Z1bmN0aW9uLAorXSBpbnRlcmZhY2UgUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQg
eworfTsKKworUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQgaW1wbGVtZW50cyBDYW52YXNTdGF0ZTsK
K1BhaW50UmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMgQ2FudmFzVHJhbnNmb3JtOworUGFp
bnRSZW5kZXJpbmdDb250ZXh0MkQgaW1wbGVtZW50cyBDYW52YXNDb21wb3NpdGluZzsKK1BhaW50
UmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMgQ2FudmFzSW1hZ2VTbW9vdGhpbmc7CitQYWlu
dFJlbmRlcmluZ0NvbnRleHQyRCBpbXBsZW1lbnRzIENhbnZhc0ZpbGxTdHJva2VTdHlsZXM7CitQ
YWludFJlbmRlcmluZ0NvbnRleHQyRCBpbXBsZW1lbnRzIENhbnZhc1NoYWRvd1N0eWxlczsKK1Bh
aW50UmVuZGVyaW5nQ29udGV4dDJEIGltcGxlbWVudHMgQ2FudmFzUmVjdDsKK1BhaW50UmVuZGVy
aW5nQ29udGV4dDJEIGltcGxlbWVudHMgQ2FudmFzRHJhd1BhdGg7CitQYWludFJlbmRlcmluZ0Nv
bnRleHQyRCBpbXBsZW1lbnRzIENhbnZhc0RyYXdJbWFnZTsKK1BhaW50UmVuZGVyaW5nQ29udGV4
dDJEIGltcGxlbWVudHMgQ2FudmFzUGF0aERyYXdpbmdTdHlsZXM7CitQYWludFJlbmRlcmluZ0Nv
bnRleHQyRCBpbXBsZW1lbnRzIENhbnZhc1BhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViTWV0YWxSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IuaAppbmRleCAyNmJjM2UwYzc1YTIyMTExNDZjNDNlZWFmY2NhZmJkN2UwOTgzMzFj
Li5lZGQ0YjA1N2U0NjIxMDFiZDgyN2I2NGJjMjZhNzE4ZWRmYmZkNWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJNZXRhbFJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYk1ldGFsUmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTI3LDggKzI3LDggQEAKIAogI2lmIEVOQUJM
RShXRUJNRVRBTCkKIAotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWlu
dEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50
SW1hZ2UuY3BwCmluZGV4IDhiMzQ5MzYyNzljNGM2MTliZmVlZjUzZDA4NDZkODdjOTIxZDAxY2Uu
LmQyZTQyYzBjOWU2MTk5ZjUyNzQyOTE2NzBmMTdhMDZlOWRlODIwZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCkBA
IC0yOCwxMiArMjgsMTIgQEAKIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQogCisjaW5j
bHVkZSAiQ3VzdG9tUGFpbnRDYW52YXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
ICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5j
bHVkZSAiSlNDU1NQYWludENhbGxiYWNrLmgiCi0jaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgi
Ci0jaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiUGFpbnRSZW5k
ZXJpbmdDb250ZXh0MkQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MSwyOSArNTEs
MjQgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY28KICAgICBhdXRvKiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0ID0gY2FsbGJhY2suc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlk
Tm90aGluZzsKLSAgICBhdXRvKiBleGVjU3RhdGUgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5l
eGVjU3RhdGUoKTsKLSAgICBpZiAoIWV4ZWNTdGF0ZSkKLSAgICAgICAgcmV0dXJuIEltYWdlRHJh
d1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGF1dG8gY2FudmFzID0gT2Zmc2NyZWVuQ2FudmFz
OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGRlc3RTaXplLndpZHRoKCksIGRlc3RT
aXplLmhlaWdodCgpKTsKLSAgICBFeGNlcHRpb25PcjxPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0
PiBjb250ZXh0T3JFeGNlcHRpb24gPSBjYW52YXMtPmdldENvbnRleHQoKmV4ZWNTdGF0ZSwgT2Zm
c2NyZWVuQ2FudmFzOjpSZW5kZXJpbmdDb250ZXh0VHlwZTo6V2ViZ2wsIHsgfSk7CisgICAgYXV0
byBjYW52YXMgPSBDdXN0b21QYWludENhbnZhczo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBkZXN0U2l6ZS53aWR0aCgpLCBkZXN0U2l6ZS5oZWlnaHQoKSk7CisgICAgRXhjZXB0aW9u
T3I8UmVmUHRyPFBhaW50UmVuZGVyaW5nQ29udGV4dDJEPj4gY29udGV4dE9yRXhjZXB0aW9uID0g
Y2FudmFzLT5nZXRDb250ZXh0KCk7CiAKICAgICBpZiAoY29udGV4dE9yRXhjZXB0aW9uLmhhc0V4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwog
ICAgIGF1dG8gY29udGV4dCA9IGNvbnRleHRPckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUo
KTsKIAotICAgIGNvbnRleHQtPmNsZWFyQ29sb3IoMCwgMCwgMCwgMS4wKTsKLSAgICBjb250ZXh0
LT5jbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLQogICAgIGF1dG8gcmVzdWx0ID0gbV9wYWlu
dENhbGxiYWNrLT5oYW5kbGVFdmVudCgqY29udGV4dCk7CiAgICAgaWYgKHJlc3VsdC50eXBlKCkg
IT0gQ2FsbGJhY2tSZXN1bHRUeXBlOjpTdWNjZXNzKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3
UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgYXV0byBiaXRtYXAgPSBjYW52YXMtPnRyYW5zZmVy
VG9JbWFnZUJpdG1hcCgpOwotICAgIGlmICghYml0bWFwKQorICAgIFVOVVNFRF9QQVJBTShkZXN0
Q29udGV4dCk7CisgICAgYXV0byBpbWFnZSA9IGNhbnZhcy0+Y29waWVkSW1hZ2UoKTsKKyAgICBp
ZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwog
Ci0gICAgZGVzdENvbnRleHQuZHJhd0ltYWdlKCpiaXRtYXAtPmJ1ZmZlcigpLT5jb3B5SW1hZ2Uo
KSwgRmxvYXRQb2ludCgpKTsKKyAgICBkZXN0Q29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBGbG9h
dFBvaW50KCkpOwogCiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKIH0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA4YjdiMzQ2MzFhZjJmZjc0OTA3OTFjZWVhNzkzNWNmYTM0MWI3MjM4Li4yODAyNjg0NDgz
OWQyNTJmOTliMzQwZTMzODM3NGZiNTc2MWY2NmU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTgtMTAtMjIgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisg
ICAgICAgIENTUyBQYWludCBBUEkgc2hvdWxkIGdpdmUgYSAyZCByZW5kZXJpbmcgY29udGV4dAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzYyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nz
cy1jdXN0b20tcGFpbnQvYmFzaWMuaHRtbDoKKwogMjAxOC0xMC0xOSAgQ29tbWl0IFF1ZXVlICA8
Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjIzNzI1NC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC9iYXNpYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLmh0
bWwKaW5kZXggY2YzYWZlODM0NTE2ZjdmMDFiMDcyNjE2ZDJmOTI2YTlmYWFiZWYwMi4uM2Y0ZGMz
YTJkMDJlZjIxYTJlOTcyZDRjOGI0ZjJmYWU4YzM4OTQ1OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtY3VzdG9tLXBhaW50L2Jhc2ljLmh0bWwKQEAgLTgsOCArOCw4IEBACiA8c3R5bGU+CiAg
ICNwYWludCB7CiAgICAgYmFja2dyb3VuZC1pbWFnZTogcGFpbnQobXktcGFpbnQpOwotICAgIHdp
ZHRoOiA1MHB4OwotICAgIGhlaWdodDogNTBweDsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVp
Z2h0OiAxNTBweDsKICAgfQogPC9zdHlsZT4KIApAQCAtNzAsOCArNzAsMTMgQEAgbGV0IHBhaW50
X2NhbGxlZF90ZXN0ID0gYXN5bmNfdGVzdCgndGVzdCB0aGF0IHRlc3QgZGl2IHBhaW50IGNhbGxi
YWNrIGdldHMgY2FsbGUKIHBhaW50X2NhbGxlZF90ZXN0LnN0ZXAoZnVuY3Rpb24oKSB7CiAgIENT
Uy5wYWludFdvcmtsZXRHbG9iYWxTY29wZS5yZWdpc3RlclBhaW50KCdteS1wYWludCcsIGNsYXNz
IHsKICAgICBwYWludChjdHgsIGdlb20sIHByb3BlcnRpZXMpIHsKLSAgICAgIGN0eC5jbGVhckNv
bG9yKDAsMS4wLDAsMS4wKTsKLSAgICAgIGN0eC5jbGVhcihjdHguQ09MT1JfQlVGRkVSX0JJVCk7
CisgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKyl7CisgICAgICAgIGZvciAodmFyIGog
PSAwOyBqIDwgNjsgaisrKXsKKyAgICAgICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYignICsgTWF0
aC5mbG9vcigyNTUgLSA0Mi41ICogaSkgKyAnLCcgKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTWF0aC5mbG9vcigyNTUgLSA0Mi41ICogaikgKyAnLDApJzsKKyAgICAgICAgICBjdHguZmls
bFJlY3QoaiAqIDI1LCBpICogMjUsIDI1LCAyNSk7CisgICAgICAgIH0KKyAgICAgIH0KICAgICAg
IHBhaW50X2NhbGxlZF90ZXN0LmRvbmUoKTsKICAgICB9CiAgIH0pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>