<?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>97991</bug_id>
          
          <creation_ts>2012-09-30 21:44:32 -0700</creation_ts>
          <short_desc>image-rendering: -webkit-optimize-contrast not working for background images</short_desc>
          <delta_ts>2016-05-07 22:26:20 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://cavestory.org/irtest.php</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>153556</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter>realmmaster26</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>7raivis</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>icherevkov</cc>
    
    <cc>jeffrey+webkit</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mikelawther</cc>
    
    <cc>pkasting</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>syoichi</cc>
    
    <cc>tabatkins</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>731378</commentid>
    <comment_count>0</comment_count>
    <who name="">realmmaster26</who>
    <bug_when>2012-09-30 21:44:32 -0700</bug_when>
    <thetext>The css property image-rendering:-webkit-optimize-contrast works on img elements but fails to work on background images when using either the browser&apos;s zoom feature or the background-size property.

See an example of the issue here:
http://cavestory.org/irtest.php

Tested in r129988.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731926</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-01 13:08:48 -0700</bug_when>
    <thetext>I don&apos;t think we ever implemented it for CSS images.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732059</commentid>
    <comment_count>2</comment_count>
    <who name="Tab Atkins">tabatkins</who>
    <bug_when>2012-10-01 15:37:35 -0700</bug_when>
    <thetext>According to what I&apos;ve specced &lt;http://dev.w3.org/csswg/css4-images/#the-image-rendering&gt;, it should apply to all images on that element, both content and CSS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732112</commentid>
    <comment_count>3</comment_count>
    <who name="">realmmaster26</who>
    <bug_when>2012-10-01 16:29:05 -0700</bug_when>
    <thetext>Webkit&apos;s image-rendering was based on the image-rendering property shown in this draft:
http://www.w3.org/TR/2011/WD-css3-images-20110217/#image-rendering

It specified:
When specified on an element, it applies to all images given in properties for the element, such as background images, list-style images, or the content of replaced elements when they represent an image that must be scaled.

So even back then it specified background images, and as Tab mentioned this is the same case with the current draft. Webkit&apos;s is the only implementation that is broken in this regard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159303</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-01-27 09:50:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/24370136&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159346</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-01-27 11:42:35 -0800</bug_when>
    <thetext>This is a bit of a mess.

WebKit supports:
auto, optimizeSpeed, optimizeQuality, -webkit-optimize-contrast, -webkit-crisp-edges

We&apos;ll continue to parse, but deprecate all of these, and I&apos;ll add support for:
crisp-edges, pixelated
optimizeSpeed will be treated like pixelated
optimizeQuality will be treated like auto

Note that -webkit-optimize-contrast has no unprefixed version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159580</commentid>
    <comment_count>6</comment_count>
      <attachid>270079</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-01-27 19:57:56 -0800</bug_when>
    <thetext>Created attachment 270079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159729</commentid>
    <comment_count>7</comment_count>
      <attachid>270079</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-01-28 08:55:17 -0800</bug_when>
    <thetext>Comment on attachment 270079
Patch

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

Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:217:6: error: prototype for &apos;void WebCore::ImageBuffer::drawConsuming(std::unique_ptr&lt;WebCore::ImageBuffer&gt;, WebCore::GraphicsContext&amp;, const WebCore::FloatRect&amp;, const WebCore::FloatRect&amp;, WebCore::CompositeOperator, WebCore::BlendMode, bool)&apos; does not match any in class &apos;WebCore::ImageBuffer&apos;
Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:222:6: error: prototype for &apos;void WebCore::ImageBuffer::draw(WebCore::GraphicsContext&amp;, const WebCore::FloatRect&amp;, const WebCore::FloatRect&amp;, WebCore::CompositeOperator, WebCore::BlendMode, bool)&apos; does not match any in class &apos;WebCore::ImageBuffer&apos;

Error above indicate the Cairo code is still trying to pass the &quot;useLowQualityScale&quot; boolean.

C:\cygwin\home\buildbot\WebKit\Source\WebCore\platform\graphics\cg\ImageBufferCG.cpp(286): error C2065: &apos;useLowQualityScale&apos;: undeclared identifier [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\WebCore\WebCore.vcxproj]

Above is something similar on Windows.

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:680
&gt; +class InterpolationQualityMaintainer {
&gt; +public:
&gt; +    explicit InterpolationQualityMaintainer(GraphicsContext&amp; graphicsContext, InterpolationQuality interpolationQualityToUse)
&gt; +        : m_graphicsContext(graphicsContext)
&gt; +        , m_currentInterpolationQuality(graphicsContext.imageInterpolationQuality())
&gt; +        , m_interpolationQualityChanged(interpolationQualityToUse != InterpolationDefault &amp;&amp; m_currentInterpolationQuality != interpolationQualityToUse)
&gt; +    {
&gt; +        if (m_interpolationQualityChanged)
&gt; +            m_graphicsContext.setImageInterpolationQuality(interpolationQualityToUse);
&gt; +    }
&gt; +
&gt; +    explicit InterpolationQualityMaintainer(GraphicsContext&amp; graphicsContext, Optional&lt;InterpolationQuality&gt; interpolationQuality)
&gt; +        : InterpolationQualityMaintainer(graphicsContext, interpolationQuality ? interpolationQuality.value() : graphicsContext.imageInterpolationQuality())
&gt; +    {
&gt; +    }
&gt; +
&gt; +    ~InterpolationQualityMaintainer()
&gt; +    {
&gt; +        if (m_interpolationQualityChanged)
&gt; +            m_graphicsContext.setImageInterpolationQuality(m_currentInterpolationQuality);
&gt; +    }
&gt; +
&gt; +private:
&gt; +    GraphicsContext&amp; m_graphicsContext;
&gt; +    InterpolationQuality m_currentInterpolationQuality;
&gt; +    bool m_interpolationQualityChanged;
&gt; +};

Could make this class less wordy and easier to read by calling it context instead of graphicsContext (because inside this class it’s clear that it’s a graphics context) and quality instead of interpolationQuality (because inside this class it’s clear that it’s interpolation quality).

&gt; Source/WebCore/rendering/ImageQualityController.cpp:120
&gt; +    // If the image is not a bitmap image, then none of this is relevant and we just paint at high quality.
&gt; +    if (!(image.isBitmapImage() || image.isPDFDocumentImage()) || context.paintingDisabled())
&gt; +        return InterpolationDefault;

Comment says &quot;not a bitmap image&quot;, code says &quot;not a bitmap image or PDF document&quot;. That’s an annoying difference that would be easier to understand with a more precise comment that focuses a bit more on why rather than what the code does, since we can read the code.

&gt; Source/WebCore/rendering/ImageQualityController.cpp:123
&gt; +    if (Optional&lt;InterpolationQuality&gt; styleInterpolation = interpolationQualityFromStyle(object-&gt;style()))
&gt; +        return styleInterpolation.value();

I think this would read better with auto instead of the long type name.

&gt; Source/WebCore/rendering/ImageQualityController.h:41
&gt;  class RenderView;
&gt; +class RenderStyle;

Should be sorted alphabetically.

&gt; Source/WebCore/rendering/ImageQualityController.h:49
&gt; +    InterpolationQuality chooseInterpolationQuality(GraphicsContext&amp;, RenderBoxModelObject*, Image&amp;, const void* layer, const LayoutSize&amp;);

Why RenderBoxModelObject* instead of RenderBoxModelObject&amp;?

Is it really acceptable to have the layer argument type be const void*!?

&gt; Source/WebCore/rendering/RenderImage.cpp:551
&gt; +    // FIXME: Document when image != img.get().

I don’t understand this comment. Not clear what “document” means in this context, or what action someone is supposed to take. Maybe you can reword it so others will understand the meaning?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160037</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-01-28 22:35:29 -0800</bug_when>
    <thetext>Yes, I need to fix the non-cocoa platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160253</commentid>
    <comment_count>9</comment_count>
      <attachid>270251</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-01-29 13:54:22 -0800</bug_when>
    <thetext>Created attachment 270251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160299</commentid>
    <comment_count>10</comment_count>
      <attachid>270251</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-29 15:16:06 -0800</bug_when>
    <thetext>Comment on attachment 270251
Patch

Clearing flags on attachment: 270251

Committed r195848: &lt;http://trac.webkit.org/changeset/195848&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190995</commentid>
    <comment_count>11</comment_count>
    <who name="">icherevkov</who>
    <bug_when>2016-05-07 16:32:27 -0700</bug_when>
    <thetext>Not sure whether it&apos;s fixed, but it still not working for me in Safari 9.0.3 (latest) and  I ve registered here specifically to let you know</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191013</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-05-07 22:26:20 -0700</bug_when>
    <thetext>Please try Safari Technology Preview or a WebKit nightly build.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270079</attachid>
            <date>2016-01-27 19:57:56 -0800</date>
            <delta_ts>2016-01-28 08:55:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97991-20160127195730.patch</filename>
            <type>text/plain</type>
            <size>41839</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk1ODI4NjNkNmYyY2U2
YjExNjAzYjMyNjQ5MTU0MWY0ZDAwYTcwMC4uZDQyOTNhYWFlYmEzODAzM2NjZDY4NmM4NmMxZDMx
ODlkOTgzNDVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY3IEBACiAyMDE2LTAxLTI3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIGltYWdlLXJlbmRl
cmluZzogLXdlYmtpdC1vcHRpbWl6ZS1jb250cmFzdCBub3Qgd29ya2luZyBmb3IgYmFja2dyb3Vu
ZCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk3OTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAor
ICAgICAgICBEb24ndCBlcXVhdGUgInBpeGVsYXRlZCIgYW5kICJjcmlzcC1lZGdlcyIgdmFsdWVz
IGZvciBpbWFnZS1yZW5kZXJpbmcgd2l0aCBsb3cKKyAgICAgICAgcXVhbGl0eSBzY2FsaW5nOyB0
aGV5IHNob3VsZCBtYXAgdG8gSW50ZXJwb2xhdGlvbk5vbmUsIG5vdCBJbnRlcnBvbGF0aW9uTG93
LgorICAgICAgICAKKyAgICAgICAgVG8gc3VwcG9ydCB0aGlzIGNoYW5nZSBJbWFnZVF1YWxpdHlD
b250cm9sbGVyIHRvIHJldHVybiBhIEludGVycG9sYXRpb25RdWFsaXR5CisgICAgICAgIGZyb20g
dGhlIHJlbmFtZWQgY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoKS4gSWYgdGhlIHJldHVybmVk
IHZhbHVlIGlzIG5vdAorICAgICAgICBJbnRlcnBvbGF0aW9uRGVmYXVsdCwgc2V0IHRoZSBHcmFw
aGljc0NvbnRleHQgaW1hZ2UgaW50ZXJwb2xhdGlvbiB3aGVuIGRyYXdpbmcKKyAgICAgICAgaW1h
Z2VzIGFuZCBpbWFnZSBidWZmZXJzLgorICAgICAgICAKKyAgICAgICAgUmVtb3ZlIHRoZSByZWR1
bmRhbnQgInVzZUxvd1F1YWxpdHlTY2FsZSIgZnJvbSAKKworICAgICAgICBUZXN0OiBmYXN0L2lt
YWdlcy9pbWFnZS1yZW5kZXJpbmctaW50ZXJwb2xhdGlvbi5odG1sCisKKyAgICAgICAgKiBodG1s
L0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVt
ZW50OjpwYWludCk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAg
ICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRy
b2xsZXI6OmRvSW1hZ2VEcmFnKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXI6Oklu
dGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXI6On5JbnRlcnBvbGF0aW9uUXVhbGl0eU1h
aW50YWluZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OkltYWdl
UGFpbnRpbmdPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25z
Ojp1c2VzRGVmYXVsdEludGVycG9sYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJwb2xh
dGlvblF1YWxpdHlNYWludGFpbmVyOjpJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyOjp+SW50ZXJw
b2xhdGlvblF1YWxpdHlNYWludGFpbmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc1R5cGVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW1hZ2VRdWFs
aXR5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVF1YWxpdHlDb250cm9s
bGVyOjppbnRlcnBvbGF0aW9uUXVhbGl0eUZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpJbWFnZVF1YWxpdHlDb250cm9s
bGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6
OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcv
SW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6
Y2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KTogRGVsZXRlZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckhUTUxDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySFRNTENh
bnZhczo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorCisyMDE2LTAxLTI3ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCiAgICAgICAgIFN1cHBvcnQgQ1NTMyBJbWFn
ZXMgdmFsdWVzIGZvciB0aGUgaW1hZ2UtcmVuZGVyaW5nIHByb3BlcnR5CiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM1NTYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCBmNmY1MTY1ZGZkY2I5YzZiNDQyNTA2
NjUxOGVjOGI4MGIwNzExOGM3Li43YjM1Njk5YmNkNTJjMjc2NDFlNDA5YzVlN2Q4YmYwMmM3ZGFi
Y2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtNDAz
LDcgKzQwMyw3IEBAIGJvb2wgSFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50c0ludG9DYW52YXNCdWZm
ZXIoKSBjb25zdAogfQogCiAKLXZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgciwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUpCit2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IExheW91dFJlY3QmIHIpCiB7CiAgICAgLy8gQ2xlYXIgdGhlIGRpcnR5IHJl
Y3QKICAgICBtX2RpcnR5UmVjdCA9IEZsb2F0UmVjdCgpOwpAQCAtNDI2LDkgKzQyNiw5IEBAIHZv
aWQgSFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgTGF5b3V0UmVjdCYgciwgYm9vCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikK
ICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRp
b25FbnVtKHJlbmRlcmVyKCktPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZiAK
LSAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqbV9wcmVzZW50ZWRJbWFnZSwgc25h
cHBlZEludFJlY3QociksIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRp
b24sIHVzZUxvd1F1YWxpdHlTY2FsZSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlKCptX3ByZXNlbnRlZEltYWdlLCBzbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWludGluZ09w
dGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbikpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBzbmFwcGVk
SW50UmVjdChyKSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIHNuYXBwZWRJbnRSZWN0KHIpKTsKICAgICAg
ICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCmluZGV4
IDAyZGJjNTcxZGRiNmYyZjBmOTE3N2ViM2Y2NDI0MWMzYjA5YThlNDAuLmE3NzQ5MDAxYTc3YjA5
NDlmYjgyZGY5MGYxODY2NTY4MjVkZDhhZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmgKQEAgLTEwOSw3ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWREcmF3
KGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdl
ZChjb25zdCBGbG9hdFJlY3QmKTsKIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgTGF5b3V0UmVjdCYsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAg
IHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYpOwogCiAgICAg
R3JhcGhpY3NDb250ZXh0KiBkcmF3aW5nQ29udGV4dCgpIGNvbnN0OwogICAgIEdyYXBoaWNzQ29u
dGV4dCogZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAppbmRleCA0YzUyYTI4Zjk2OTVmMDM0NGJkMmIxZGVlMzMwN2ZlMDY0
OGM2MDU2Li5iMDE2ODNlMDI4MzIxYWYzYTkwMWUxNzM5M2VkOTBlYzNlNTQxZjUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtOTM1LDEwICs5MzUsNyBAQCB2b2lk
IERyYWdDb250cm9sbGVyOjpkb0ltYWdlRHJhZyhFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbnRQ
b2ludCYgZHJhZ09yaWdpbiwgYwogICAgIGlmICghZWxlbWVudC5yZW5kZXJlcigpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25E
ZXNjcmlwdGlvbihlbGVtZW50LnJlbmRlcmVyKCktPnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKCkpOwotI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgb3JpZW50YXRp
b25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShlbGVtZW50LnJlbmRlcmVyKCkt
PnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKLSNlbmRpZgorICAgIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKGVsZW1lbnQucmVuZGVyZXIoKS0+
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSwgZWxlbWVudC5yZW5kZXJlcigpLT5zdHls
ZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAKICAgICBJbWFnZSogaW1hZ2UgPSBnZXRJbWFnZShl
bGVtZW50KTsKICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKS5oZWlnaHQoKSAqIGltYWdl
LT5zaXplKCkud2lkdGgoKSA8PSBNYXhPcmlnaW5hbEltYWdlQXJlYQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggN2Rk
Y2M3MjZmMmExOGI2N2NmOWMxMjJkMWNhY2EyY2NmYmQyNzUwYy4uOTY1NTAzYzU0MzU4ZTI1YWI5
NjJhYjdhYWMzYmIyZTA1OGRiY2RmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03NywzMCArNzcsNiBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkIG1fb2Zmc2V0OwogfTsKIAotY2xhc3MgSW50ZXJwb2xhdGlvblF1
YWxpdHlNYWludGFpbmVyIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBJbnRlcnBvbGF0aW9uUXVh
bGl0eU1haW50YWluZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIEludGVycG9s
YXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5VG9Vc2UpCi0gICAgICAgIDogbV9ncmFw
aGljc0NvbnRleHQoZ3JhcGhpY3NDb250ZXh0KQotICAgICAgICAsIG1fY3VycmVudEludGVycG9s
YXRpb25RdWFsaXR5KGdyYXBoaWNzQ29udGV4dC5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkp
Ci0gICAgICAgICwgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQobV9jdXJyZW50SW50ZXJw
b2xhdGlvblF1YWxpdHkgIT0gaW50ZXJwb2xhdGlvblF1YWxpdHlUb1VzZSkKLSAgICB7Ci0gICAg
ICAgIGlmIChtX2ludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlZCkKLSAgICAgICAgICAgIG1fZ3Jh
cGhpY3NDb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1
YWxpdHlUb1VzZSk7Ci0gICAgfQotCi0gICAgfkludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5l
cigpCi0gICAgewotICAgICAgICBpZiAobV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQpCi0g
ICAgICAgICAgICBtX2dyYXBoaWNzQ29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5
KG1fY3VycmVudEludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
R3JhcGhpY3NDb250ZXh0JiBtX2dyYXBoaWNzQ29udGV4dDsKLSAgICBJbnRlcnBvbGF0aW9uUXVh
bGl0eSBtX2N1cnJlbnRJbnRlcnBvbGF0aW9uUXVhbGl0eTsKLSAgICBib29sIG1faW50ZXJwb2xh
dGlvblF1YWxpdHlDaGFuZ2VkOwotfTsKLQotCiAjZGVmaW5lIENIRUNLX0ZPUl9DSEFOR0VEX1BS
T1BFUlRZKGZsYWcsIHByb3BlcnR5KSBcCiAgICAgaWYgKChtX2NoYW5nZUZsYWdzICYgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmZsYWcpICYmIChtX3N0YXRlLnByb3BlcnR5ICE9IHN0YXRlLnByb3Bl
cnR5KSkgXAogICAgICAgICBjaGFuZ2VGbGFncyB8PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Zmxh
ZzsKQEAgLTc2Nyw3ICs3NDMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29ucwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVy
cG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5t
X3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Mb3cgOiBpbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KCkpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBv
bGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9p
bnRlcnBvbGF0aW9uUXVhbGl0eSk7CiAgICAgaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24s
IHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQ
YWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50
YXRpb25EZXNjcmlwdGlvbik7CiB9CiAKQEAgLTc4MSw3ICs3NTcsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSW50ZXJwb2xhdGlvblF1
YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25M
b3cgOiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOworICAgIEludGVycG9sYXRpb25RdWFs
aXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiAgICAgaW1hZ2UuZHJh
d1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9ibGVuZE1vZGUpOwogfQogCkBAIC04MDIsNyArNzc4LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEludGVycG9sYXRpb25RdWFs
aXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1h
Z2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTG93
IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0
eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdl
UGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIGltYWdlLmRyYXdU
aWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwg
dlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IpOwogfQogCkBA
IC04MjEsOCArNzk3LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGkKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0
eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdl
UGFpbnRpbmdPcHRpb25zLm1fdXNlTG93UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbkxvdyA6
IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UuZHJhdygqdGhpcywgZGVz
dGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRv
ciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWlu
ZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOworICAgIGltYWdlLmRyYXcoKnRoaXMsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0
b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQpAQCAtODQ2LDkgKzgyMiw4IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAh
aW1hZ2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1h
aW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fdXNlTG93UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbkxvdyA6IGlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0KLSAgICBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1
bWluZyhXVEZNb3ZlKGltYWdlKSwgKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
YmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSk7Cisg
ICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9y
VGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFs
aXR5KTsKKyAgICBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhXVEZNb3ZlKGltYWdlKSwgKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRl
T3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBy
ZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaAppbmRleCA0ZmZhN2M2ZDYwMjgyY2FiZTU5MzVjODMxNGFmNTQ3OGJlNThhMzA2Li5h
NDYwOGUwZmY5N2I3YTM4Y2QyNGE5M2IzMTY5NzcxM2FhMGIxZWZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMTAyLDE0
ICsxMDIsNiBAQCBlbnVtIFN0cm9rZVN0eWxlIHsKICAgICBXYXZ5U3Ryb2tlLAogfTsKIAotZW51
bSBJbnRlcnBvbGF0aW9uUXVhbGl0eSB7Ci0gICAgSW50ZXJwb2xhdGlvbkRlZmF1bHQsCi0gICAg
SW50ZXJwb2xhdGlvbk5vbmUsCi0gICAgSW50ZXJwb2xhdGlvbkxvdywKLSAgICBJbnRlcnBvbGF0
aW9uTWVkaXVtLAotICAgIEludGVycG9sYXRpb25IaWdoCi19OwotCiBuYW1lc3BhY2UgRGlzcGxh
eUxpc3QgewogY2xhc3MgUmVjb3JkZXI7CiB9CkBAIC0xOTQsMzQgKzE4NiwzNiBAQCBzdHJ1Y3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUgewogfTsKIAogc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25z
IHsKLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVu
ZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2Ny
aXB0aW9uID0gSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIGJvb2wgdXNlTG93UXVhbGl0
eVNjYWxlID0gZmFsc2UpCisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMoQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxl
bmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3Jp
ZW50YXRpb25EZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCBJbnRl
cnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZh
dWx0KQogICAgICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCiAg
ICAgICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQogICAgICAgICAsIG1fb3JpZW50YXRpb25E
ZXNjcmlwdGlvbihvcmllbnRhdGlvbkRlc2NyaXB0aW9uKQotICAgICAgICAsIG1fdXNlTG93UXVh
bGl0eVNjYWxlKHVzZUxvd1F1YWxpdHlTY2FsZSkKKyAgICAgICAgLCBtX2ludGVycG9sYXRpb25R
dWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQogICAgIHsKICAgICB9CiAKLSAgICBJbWFnZVBh
aW50aW5nT3B0aW9ucyhJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNj
cmlwdGlvbiwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSwgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxl
bmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBJbnRlcnBvbGF0
aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0LCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIs
IEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpCiAgICAgICAgIDogbV9jb21w
b3NpdGVPcGVyYXRvcihjb21wb3NpdGVPcGVyYXRvcikKICAgICAgICAgLCBtX2JsZW5kTW9kZShi
bGVuZE1vZGUpCiAgICAgICAgICwgbV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uKG9yaWVudGF0aW9u
RGVzY3JpcHRpb24pCi0gICAgICAgICwgbV91c2VMb3dRdWFsaXR5U2NhbGUodXNlTG93UXVhbGl0
eVNjYWxlKQorICAgICAgICAsIG1faW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1
YWxpdHkpCiAgICAgewogICAgIH0KIAotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKGJvb2wgdXNl
TG93UXVhbGl0eVNjYWxlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25E
ZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBi
bGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpCisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMoSW50
ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHksIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKCksIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCkKICAgICAg
ICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQogICAgICAgICAsIG1f
YmxlbmRNb2RlKGJsZW5kTW9kZSkKICAgICAgICAgLCBtX29yaWVudGF0aW9uRGVzY3JpcHRpb24o
b3JpZW50YXRpb25EZXNjcmlwdGlvbikKLSAgICAgICAgLCBtX3VzZUxvd1F1YWxpdHlTY2FsZSh1
c2VMb3dRdWFsaXR5U2NhbGUpCisgICAgICAgICwgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eShpbnRl
cnBvbGF0aW9uUXVhbGl0eSkKICAgICB7CiAgICAgfQorICAgIAorICAgIGJvb2wgdXNlc0RlZmF1
bHRJbnRlcnBvbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9
PSBJbnRlcnBvbGF0aW9uRGVmYXVsdDsgfQogCiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9jb21w
b3NpdGVPcGVyYXRvcjsKICAgICBCbGVuZE1vZGUgbV9ibGVuZE1vZGU7CiAgICAgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uIG1fb3JpZW50YXRpb25EZXNjcmlwdGlvbjsKLSAgICBib29sIG1f
dXNlTG93UXVhbGl0eVNjYWxlOworICAgIEludGVycG9sYXRpb25RdWFsaXR5IG1faW50ZXJwb2xh
dGlvblF1YWxpdHk7CiB9OwogCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UgewpA
QCAtNjU3LDYgKzY1MSwzNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zYXZlQW5kUmVzdG9yZTsK
IH07CiAKK2NsYXNzIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyKEdyYXBoaWNzQ29udGV4
dCYgZ3JhcGhpY3NDb250ZXh0LCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVh
bGl0eVRvVXNlKQorICAgICAgICA6IG1fZ3JhcGhpY3NDb250ZXh0KGdyYXBoaWNzQ29udGV4dCkK
KyAgICAgICAgLCBtX2N1cnJlbnRJbnRlcnBvbGF0aW9uUXVhbGl0eShncmFwaGljc0NvbnRleHQu
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKQorICAgICAgICAsIG1faW50ZXJwb2xhdGlvblF1
YWxpdHlDaGFuZ2VkKGludGVycG9sYXRpb25RdWFsaXR5VG9Vc2UgIT0gSW50ZXJwb2xhdGlvbkRl
ZmF1bHQgJiYgbV9jdXJyZW50SW50ZXJwb2xhdGlvblF1YWxpdHkgIT0gaW50ZXJwb2xhdGlvblF1
YWxpdHlUb1VzZSkKKyAgICB7CisgICAgICAgIGlmIChtX2ludGVycG9sYXRpb25RdWFsaXR5Q2hh
bmdlZCkKKyAgICAgICAgICAgIG1fZ3JhcGhpY3NDb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHlUb1VzZSk7CisgICAgfQorCisgICAgZXhwbGlj
aXQgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhp
Y3NDb250ZXh0LCBPcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gaW50ZXJwb2xhdGlvblF1
YWxpdHkpCisgICAgICAgIDogSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyKGdyYXBoaWNz
Q29udGV4dCwgaW50ZXJwb2xhdGlvblF1YWxpdHkgPyBpbnRlcnBvbGF0aW9uUXVhbGl0eS52YWx1
ZSgpIDogZ3JhcGhpY3NDb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSkKKyAgICB7
CisgICAgfQorCisgICAgfkludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcigpCisgICAgewor
ICAgICAgICBpZiAobV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQpCisgICAgICAgICAgICBt
X2dyYXBoaWNzQ29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KG1fY3VycmVudElu
dGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250
ZXh0JiBtX2dyYXBoaWNzQ29udGV4dDsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2N1cnJl
bnRJbnRlcnBvbGF0aW9uUXVhbGl0eTsKKyAgICBib29sIG1faW50ZXJwb2xhdGlvblF1YWxpdHlD
aGFuZ2VkOworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gR3JhcGhp
Y3NDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzVHlwZXMuaAppbmRleCA0ZWYzYmU4Y2MxMmM2ZjY0YzEwY2E2YTJmOTY1NjYxZWExNDZjNDY3
Li5lZGU3OTJkYjU4MjMzZjI5MjJkNzBkZjQ2ZDdlNGI4Mzg4ZDc4M2E1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCkBAIC03NSw2ICs3
NSwxNCBAQCBlbnVtIEdyYWRpZW50U3ByZWFkTWV0aG9kIHsKICAgICBTcHJlYWRNZXRob2RSZXBl
YXQKIH07CiAKK2VudW0gSW50ZXJwb2xhdGlvblF1YWxpdHkgeworICAgIEludGVycG9sYXRpb25E
ZWZhdWx0LAorICAgIEludGVycG9sYXRpb25Ob25lLAorICAgIEludGVycG9sYXRpb25Mb3csCisg
ICAgSW50ZXJwb2xhdGlvbk1lZGl1bSwKKyAgICBJbnRlcnBvbGF0aW9uSGlnaAorfTsKKwogZW51
bSBMaW5lQ2FwIHsgQnV0dENhcCwgUm91bmRDYXAsIFNxdWFyZUNhcCB9OwogCiBlbnVtIExpbmVK
b2luIHsgTWl0ZXJKb2luLCBSb3VuZEpvaW4sIEJldmVsSm9pbiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZjQxOWQzMjdkOTFmOThi
NTBhZDViZTFkODdhNDk2YjBmY2Y3ZDRjNi4uMDRmOWVmOTNhZWE5ZDIyZWFmMGU2MWM5YTIwZDY3
MzUzNzIyOTVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCkBAIC0xNDIsMTAgKzE0MiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZmx1c2hD
b250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKICAgICAKLSAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxvd1F1YWxp
dHlTY2FsZSA9IGZhbHNlKTsKKyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0
KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlciwg
QmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKIAotICAgIHN0YXRpYyB2b2lkIGRy
YXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0g
RmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxvd1F1YWxpdHlT
Y2FsZSA9IGZhbHNlKTsKKyAgICBzdGF0aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEp
LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJs
ZW5kTW9kZU5vcm1hbCk7CiAKICAgICBpbmxpbmUgdm9pZCBnZW5lcmljQ29udmVydFRvTHVtaW5h
bmNlTWFzaygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IDk1ZTRiMTU4YWVhNmFkNjk5Njc4NTE0NTVjYzU5
NzQ0YjJmMmY5NzIuLmJlNWQyNTg2N2JjZjYxYTQ0NTZlODVhMjI0NDRlOWE1NDhhYzBjMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwCkBAIC0yNjQsMTEgKzI2NCwxMSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1h
Z2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcgog
ICAgIHJldHVybiBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQm
IGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBk
ZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICNp
ZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogICAgIGlmICghaW1hZ2VCdWZm
ZXItPm1fZGF0YS5zdXJmYWNlKSB7Ci0gICAgICAgIGltYWdlQnVmZmVyLT5kcmF3KGRlc3RDb250
ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgdXNlTG93UXVhbGl0eVNjYWxl
KTsKKyAgICAgICAgaW1hZ2VCdWZmZXItPmRyYXcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcCwgYmxlbmRNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTI4
Nyw3ICsyODcsNyBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIEdyYXBoaQogI2VuZGlmCiB9CiAKLXZvaWQg
SW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSkKIHsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAg
aWYgKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpIHx8IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VR
dWFsaXR5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFs
aXR5Q29udHJvbGxlci5jcHAKaW5kZXggYmUwZDk0YTc4NWYyMDhmNDkxMTI2ZTMyNjczODNhOTk3
NTcwOTM3Yi4uNGVjZDg1YTYxMWQzNDJhNzkzYmMyMmJiZGNkY2Y3MTA0ZmYyYTliYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNw
cApAQCAtNDAsOCArNDAsNiBAQCBzdGF0aWMgY29uc3QgZG91YmxlIGNMb3dRdWFsaXR5VGltZVRo
cmVzaG9sZCA9IDAuNTAwOyAvLyA1MDAgbXMKIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OkltYWdl
UXVhbGl0eUNvbnRyb2xsZXIoY29uc3QgUmVuZGVyVmlldyYgcmVuZGVyVmlldykKICAgICA6IG1f
cmVuZGVyVmlldyhyZW5kZXJWaWV3KQogICAgICwgbV90aW1lcigqdGhpcywgJkltYWdlUXVhbGl0
eUNvbnRyb2xsZXI6OmhpZ2hRdWFsaXR5UmVwYWludFRpbWVyRmlyZWQpCi0gICAgLCBtX2FuaW1h
dGVkUmVzaXplSXNBY3RpdmUoZmFsc2UpCi0gICAgLCBtX2xpdmVSZXNpemVPcHRpbWl6YXRpb25J
c0FjdGl2ZShmYWxzZSkKIHsKIH0KIApAQCAtOTksMjMgKzk3LDMwIEBAIHZvaWQgSW1hZ2VRdWFs
aXR5Q29udHJvbGxlcjo6cmVzdGFydFRpbWVyKCkKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChj
TG93UXVhbGl0eVRpbWVUaHJlc2hvbGQpOwogfQogCi1ib29sIEltYWdlUXVhbGl0eUNvbnRyb2xs
ZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIG9iamVjdCwgSW1hZ2UmIGltYWdlLCBjb25zdCB2b2lkICpsYXll
ciwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKK09wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5
PiBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjppbnRlcnBvbGF0aW9uUXVhbGl0eUZyb21TdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgLy8gSWYgdGhlIGltYWdlIGlzIG5vdCBh
IGJpdG1hcCBpbWFnZSwgdGhlbiBub25lIG9mIHRoaXMgaXMgcmVsZXZhbnQgYW5kIHdlIGp1c3Qg
cGFpbnQgYXQgaGlnaAotICAgIC8vIHF1YWxpdHkuCi0gICAgaWYgKCEoaW1hZ2UuaXNCaXRtYXBJ
bWFnZSgpIHx8IGltYWdlLmlzUERGRG9jdW1lbnRJbWFnZSgpKSB8fCBjb250ZXh0LnBhaW50aW5n
RGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3dpdGNoIChvYmplY3Qt
PnN0eWxlKCkuaW1hZ2VSZW5kZXJpbmcoKSkgeworICAgIHN3aXRjaCAoc3R5bGUuaW1hZ2VSZW5k
ZXJpbmcoKSkgewogICAgIGNhc2UgSW1hZ2VSZW5kZXJpbmdPcHRpbWl6ZVNwZWVkOgorICAgICAg
ICByZXR1cm4gSW50ZXJwb2xhdGlvbkxvdzsKICAgICBjYXNlIEltYWdlUmVuZGVyaW5nQ3Jpc3BF
ZGdlczoKICAgICBjYXNlIEltYWdlUmVuZGVyaW5nUGl4ZWxhdGVkOgotICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgcmV0dXJuIEludGVycG9sYXRpb25Ob25lOwogICAgIGNhc2UgSW1hZ2VS
ZW5kZXJpbmdPcHRpbWl6ZVF1YWxpdHk6Ci0gICAgICAgIHJldHVybiBmYWxzZTsgLy8gRklYTUU6
IENTUyAzIEltYWdlcyBzYXlzIHRoYXQgb3B0aW1pemVRdWFsaXR5IHNob3VsZCBiZWhhdmUgbGlr
ZSAnYXV0bycsIGJ1dCB0aGF0IHByZXZlbnRzIGF1dGhvcnMgZnJvbSBvdmVycmlkaW5nIHRoaXMg
bG93IHF1YWxpdHkgcmVuZGVyaW5nIGJlaGF2aW9yLgorICAgICAgICByZXR1cm4gSW50ZXJwb2xh
dGlvbkRlZmF1bHQ7IC8vIEZJWE1FOiBDU1MgMyBJbWFnZXMgc2F5cyB0aGF0IG9wdGltaXplUXVh
bGl0eSBzaG91bGQgYmVoYXZlIGxpa2UgJ2F1dG8nLCBidXQgdGhhdCBwcmV2ZW50cyBhdXRob3Jz
IGZyb20gb3ZlcnJpZGluZyB0aGlzIGxvdyBxdWFsaXR5IHJlbmRlcmluZyBiZWhhdmlvci4KICAg
ICBjYXNlIEltYWdlUmVuZGVyaW5nQXV0bzoKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIHJl
dHVybiBOdWxsb3B0OworfQorCitJbnRlcnBvbGF0aW9uUXVhbGl0eSBJbWFnZVF1YWxpdHlDb250
cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIFJlbmRlckJveE1vZGVsT2JqZWN0KiBvYmplY3QsIEltYWdlJiBpbWFnZSwgY29uc3Qgdm9p
ZCAqbGF5ZXIsIGNvbnN0IExheW91dFNpemUmIHNpemUpCit7CisgICAgLy8gSWYgdGhlIGltYWdl
IGlzIG5vdCBhIGJpdG1hcCBpbWFnZSwgdGhlbiBub25lIG9mIHRoaXMgaXMgcmVsZXZhbnQgYW5k
IHdlIGp1c3QgcGFpbnQgYXQgaGlnaCBxdWFsaXR5LgorICAgIGlmICghKGltYWdlLmlzQml0bWFw
SW1hZ2UoKSB8fCBpbWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC5wYWludGlu
Z0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybiBJbnRlcnBvbGF0aW9uRGVmYXVsdDsKKworICAg
IGlmIChPcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gc3R5bGVJbnRlcnBvbGF0aW9uID0g
aW50ZXJwb2xhdGlvblF1YWxpdHlGcm9tU3R5bGUob2JqZWN0LT5zdHlsZSgpKSkKKyAgICAgICAg
cmV0dXJuIHN0eWxlSW50ZXJwb2xhdGlvbi52YWx1ZSgpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRv
IHVzZSB0aGUgdW56b29tZWQgaW1hZ2Ugc2l6ZSwgc2luY2UgaWYgYSBmdWxsIHBhZ2Ugem9vbSBp
cyBpbiBlZmZlY3QsIHRoZSBpbWFnZQogICAgIC8vIGlzIGFjdHVhbGx5IGJlaW5nIHNjYWxlZC4K
QEAgLTE0MSwxMCArMTQ2LDEwIEBAIGJvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxk
UGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSCiAgICAgICAgICAg
ICBzZXQob2JqZWN0LCBpbm5lck1hcCwgbGF5ZXIsIHNpemUpOwogICAgICAgICAgICAgcmVzdGFy
dFRpbWVyKCk7CiAgICAgICAgICAgICBtX2xpdmVSZXNpemVPcHRpbWl6YXRpb25Jc0FjdGl2ZSA9
IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBJbnRl
cnBvbGF0aW9uTG93OwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2xpdmVSZXNpemVPcHRpbWl6
YXRpb25Jc0FjdGl2ZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJl
dHVybiBJbnRlcnBvbGF0aW9uRGVmYXVsdDsKICAgICB9CiAKICAgICBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGN1cnJlbnRUcmFuc2Zvcm0gPSBjb250ZXh0LmdldENUTSgpOwpAQCAtMTUyLDIxICsx
NTcsMjEgQEAgYm9vbCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpzaG91bGRQYWludEF0TG93UXVh
bGl0eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFIKICAgICBpZiAoIWNvbnRleHRJc1NjYWxl
ZCAmJiBzaXplID09IGltYWdlU2l6ZSkgewogICAgICAgICAvLyBUaGVyZSBpcyBubyBzY2FsZSBp
biBlZmZlY3QuIElmIHdlIGhhZCBhIHNjYWxlIGluIGVmZmVjdCBiZWZvcmUsIHdlIGNhbiBqdXN0
IHJlbW92ZSB0aGlzIG9iamVjdCBmcm9tIHRoZSBsaXN0LgogICAgICAgICByZW1vdmVMYXllcihv
YmplY3QsIGlubmVyTWFwLCBsYXllcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIEludGVycG9sYXRpb25EZWZhdWx0OwogICAgIH0KIAogICAgIC8vIFRoZXJlIGlzIG5v
IG5lZWQgdG8gaGFzaCBzY2FsZWQgaW1hZ2VzIHRoYXQgYWx3YXlzIHVzZSBsb3cgcXVhbGl0eSBt
b2RlIHdoZW4gdGhlIHBhZ2UgZGVtYW5kcyBpdC4gVGhpcyBpcyB0aGUgaUNoYXQgY2FzZS4KICAg
ICBpZiAobV9yZW5kZXJWaWV3LmZyYW1lKCkucGFnZSgpLT5pbkxvd1F1YWxpdHlJbWFnZUludGVy
cG9sYXRpb25Nb2RlKCkpIHsKICAgICAgICAgZG91YmxlIHRvdGFsUGl4ZWxzID0gc3RhdGljX2Nh
c3Q8ZG91YmxlPihpbWFnZS53aWR0aCgpKSAqIHN0YXRpY19jYXN0PGRvdWJsZT4oaW1hZ2UuaGVp
Z2h0KCkpOwogICAgICAgICBpZiAodG90YWxQaXhlbHMgPiBjSW50ZXJwb2xhdGlvbkN1dG9mZikK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIEludGVycG9sYXRp
b25Mb3c7CiAgICAgfQogCiAgICAgLy8gSWYgYW4gYW5pbWF0ZWQgcmVzaXplIGlzIGFjdGl2ZSwg
cGFpbnQgaW4gbG93IHF1YWxpdHkgYW5kIGtpY2sgdGhlIHRpbWVyIGFoZWFkLgogICAgIGlmICht
X2FuaW1hdGVkUmVzaXplSXNBY3RpdmUpIHsKICAgICAgICAgc2V0KG9iamVjdCwgaW5uZXJNYXAs
IGxheWVyLCBzaXplKTsKICAgICAgICAgcmVzdGFydFRpbWVyKCk7Ci0gICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICByZXR1cm4gSW50ZXJwb2xhdGlvbkxvdzsKICAgICB9CiAgICAgLy8gSWYg
dGhpcyBpcyB0aGUgZmlyc3QgdGltZSByZXNpemluZyB0aGlzIGltYWdlLCBvciBpdHMgc2l6ZSBp
cyB0aGUKICAgICAvLyBzYW1lIGFzIHRoZSBsYXN0IHJlc2l6ZSwgZHJhdyBhdCBoaWdoIHJlcywg
YnV0IHJlY29yZCB0aGUgcGFpbnQKQEAgLTE3NCwxMyArMTc5LDEzIEBAIGJvb2wgSW1hZ2VRdWFs
aXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBSCiAgICAgaWYgKGlzRmlyc3RSZXNpemUgfHwgb2xkU2l6ZSA9PSBzaXplKSB7CiAg
ICAgICAgIHJlc3RhcnRUaW1lcigpOwogICAgICAgICBzZXQob2JqZWN0LCBpbm5lck1hcCwgbGF5
ZXIsIHNpemUpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBJbnRlcnBv
bGF0aW9uRGVmYXVsdDsKICAgICB9CiAgICAgLy8gSWYgdGhlIHRpbWVyIGlzIG5vIGxvbmdlciBh
Y3RpdmUsIGRyYXcgYXQgaGlnaCBxdWFsaXR5IGFuZCBkb24ndAogICAgIC8vIHNldCB0aGUgdGlt
ZXIuCiAgICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpIHsKICAgICAgICAgcmVtb3ZlTGF5ZXIo
b2JqZWN0LCBpbm5lck1hcCwgbGF5ZXIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiBJbnRlcnBvbGF0aW9uRGVmYXVsdDsKICAgICB9CiAgICAgLy8gVGhpcyBvYmplY3Qg
aGFzIGJlZW4gcmVzaXplZCB0byB0d28gZGlmZmVyZW50IHNpemVzIHdoaWxlIHRoZSB0aW1lcgog
ICAgIC8vIGlzIGFjdGl2ZSwgc28gZHJhdyBhdCBsb3cgcXVhbGl0eSwgc2V0IHRoZSBmbGFnIGZv
ciBhbmltYXRlZCByZXNpemVzIGFuZApAQCAtMTg4LDcgKzE5Myw3IEBAIGJvb2wgSW1hZ2VRdWFs
aXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBSCiAgICAgc2V0KG9iamVjdCwgaW5uZXJNYXAsIGxheWVyLCBzaXplKTsKICAgICBt
X2FuaW1hdGVkUmVzaXplSXNBY3RpdmUgPSB0cnVlOwogICAgIHJlc3RhcnRUaW1lcigpOwotICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBJbnRlcnBvbGF0aW9uTG93OwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaAppbmRl
eCA1ZjcxMTY0NzUxMGNkMjJiOTYyNTkyNjczNTg0Zjg2YzA4MWY1ODljLi40ZmY4NDZmN2IwZWI0
NmVlMDMzODAwZjk1NDQ3MzJkNGE1M2YyYzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmgKQEAgLTI2LDI0ICsyNiwyOCBAQAogI2lm
bmRlZiBJbWFnZVF1YWxpdHlDb250cm9sbGVyX2gKICNkZWZpbmUgSW1hZ2VRdWFsaXR5Q29udHJv
bGxlcl9oCiAKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZyYW1lOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwogY2xhc3MgSW1hZ2U7CiBjbGFzcyBMYXlvdXRTaXplOwogY2xhc3MgUmVuZGVyQm94TW9kZWxP
YmplY3Q7CiBjbGFzcyBSZW5kZXJWaWV3OworY2xhc3MgUmVuZGVyU3R5bGU7CiAKIGNsYXNzIElt
YWdlUXVhbGl0eUNvbnRyb2xsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlUXVh
bGl0eUNvbnRyb2xsZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBJbWFnZVF1YWxpdHlDb250cm9sbGVyKGNvbnN0IFJlbmRlclZpZXcmKTsKIAotICAg
IGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiwgUmVuZGVyQm94
TW9kZWxPYmplY3QqLCBJbWFnZSYsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXpl
Jik7CisgICAgc3RhdGljIE9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBpbnRlcnBvbGF0
aW9uUXVhbGl0eUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpOworICAgIEludGVycG9sYXRp
b25RdWFsaXR5IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYsIFJl
bmRlckJveE1vZGVsT2JqZWN0KiwgSW1hZ2UmLCBjb25zdCB2b2lkKiBsYXllciwgY29uc3QgTGF5
b3V0U2l6ZSYpOworCiAgICAgdm9pZCByZW5kZXJlcldpbGxCZURlc3Ryb3llZChSZW5kZXJCb3hN
b2RlbE9iamVjdCYgcmVuZGVyZXIpIHsgcmVtb3ZlT2JqZWN0KCZyZW5kZXJlcik7IH0KIAogcHJp
dmF0ZToKQEAgLTU5LDggKzYzLDggQEAgcHJpdmF0ZToKICAgICBjb25zdCBSZW5kZXJWaWV3JiBt
X3JlbmRlclZpZXc7CiAgICAgT2JqZWN0TGF5ZXJTaXplTWFwIG1fb2JqZWN0TGF5ZXJTaXplTWFw
OwogICAgIFRpbWVyIG1fdGltZXI7Ci0gICAgYm9vbCBtX2FuaW1hdGVkUmVzaXplSXNBY3RpdmU7
Ci0gICAgYm9vbCBtX2xpdmVSZXNpemVPcHRpbWl6YXRpb25Jc0FjdGl2ZTsKKyAgICBib29sIG1f
YW5pbWF0ZWRSZXNpemVJc0FjdGl2ZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2xpdmVSZXNpemVP
cHRpbWl6YXRpb25Jc0FjdGl2ZSB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5k
ZXggN2MxZDBhNzIxM2ViNDBjNjVkOTFmMDA0NGUyYWQ3MzI2ODhkNGYzZS4uNzQ3ZjZmZmU3OTc5
NzIzMmY2ZmQ0NDA2NTYzZWNlNTFkNTU4ZjA0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0xNjEsMTEgKzE2MSw2IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKQog
ICAgIGxheWVyKCktPmJhY2tpbmcoKS0+c3VzcGVuZEFuaW1hdGlvbnModGltZSk7CiB9CiAKLWJv
b2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCB2b2lkKiBsYXllciwgY29uc3Qg
TGF5b3V0U2l6ZSYgc2l6ZSkKLXsKLSAgICByZXR1cm4gdmlldygpLmltYWdlUXVhbGl0eUNvbnRy
b2xsZXIoKS5zaG91bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0LCB0aGlzLCBpbWFnZSwgbGF5
ZXIsIHNpemUpOwotfQotCiBSZW5kZXJCb3hNb2RlbE9iamVjdDo6UmVuZGVyQm94TW9kZWxPYmpl
Y3QoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBCYXNlVHlwZUZs
YWdzIGJhc2VUeXBlRmxhZ3MpCiAgICAgOiBSZW5kZXJMYXllck1vZGVsT2JqZWN0KGVsZW1lbnQs
IFdURk1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzIHwgUmVuZGVyQm94TW9kZWxPYmplY3RGbGFn
KQogewpAQCAtNTk0LDYgKzU4OSwxMSBAQCBzdGF0aWMgdm9pZCBhcHBseUJveFNoYWRvd0ZvckJh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJTdHlsZSogcwogICAgICAg
ICBjb250ZXh0LnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIGJveFNoYWRvdy0+cmFkaXVz
KCksIGJveFNoYWRvdy0+Y29sb3IoKSk7CiB9CiAKK0ludGVycG9sYXRpb25RdWFsaXR5IFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExheW91
dFNpemUmIHNpemUpCit7CisgICAgcmV0dXJuIHZpZXcoKS5pbWFnZVF1YWxpdHlDb250cm9sbGVy
KCkuY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgdGhpcywgaW1hZ2UsIGxheWVy
LCBzaXplKTsKK30KKwogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4
dEZpbGxCb3goSW1hZ2VCdWZmZXIqIG1hc2tJbWFnZSwgY29uc3QgSW50UmVjdCYgbWFza1JlY3Qs
IElubGluZUZsb3dCb3gqIGJveCwgY29uc3QgTGF5b3V0UmVjdCYgc2Nyb2xsZWRQYWludFJlY3Qp
CiB7CiAgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5j
b250ZXh0KCk7CkBAIC04MzQsOCArODM0LDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAg
ICAgICAgaWYgKCFnZW9tZXRyeS5kZXN0UmVjdCgpLmlzRW1wdHkoKSAmJiAoaW1hZ2UgPSBiZ0lt
YWdlLT5pbWFnZShiYWNrZ3JvdW5kT2JqZWN0ID8gYmFja2dyb3VuZE9iamVjdCA6IHRoaXMsIGdl
b21ldHJ5LnRpbGVTaXplKCkpKSkgewogICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gYmdMYXllci0+Y29tcG9zaXRl
KCkgOiBvcDsKICAgICAgICAgICAgIGNvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1hc2soYmdMYXll
ci0+bWFza1NvdXJjZVR5cGUoKSA9PSBNYXNrTHVtaW5hbmNlKTsKLSAgICAgICAgICAgIGJvb2wg
dXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0LCAq
aW1hZ2UsIGJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwotICAgICAgICAgICAgY29udGV4
dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9p
bnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0
cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVy
LT5ibGVuZE1vZGUoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxvd1F1YWxp
dHlTY2FsaW5nKSk7CisKKyAgICAgICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9s
YXRpb24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCAqaW1hZ2UsIGJnTGF5
ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOworICAgICAgICAgICAgY29udGV4dC5kcmF3VGlsZWRJ
bWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnku
cmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnkuc3BhY2VTaXpl
KCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVyLT5ibGVuZE1vZGUo
KSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIGludGVycG9sYXRpb24pKTsKICAgICAg
ICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuaAppbmRleCBhNTA5YjM5ODBjNGUyNDkyZTY2ZmVhOTAyYTg5OGQ0NDJhZjIyZTJj
Li5iNTM1ODExODI5MjA4ZDQ0YjA5ZTY4YmMzYTM5ZmFhMzcyOWZhMDVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtMjUxLDcgKzI1
MSw3IEBAIHByb3RlY3RlZDoKICAgICBSb3VuZGVkUmVjdCBiYWNrZ3JvdW5kUm91bmRlZFJlY3RB
ZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExh
eW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqLCBjb25z
dCBMYXlvdXRTaXplJiwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKSBjb25zdDsKICAgICBMYXlvdXRSZWN0IGJvcmRlcklubmVyUmVjdEFk
anVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5
b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSkgY29uc3Q7CiAKLSAgICBib29sIHNo
b3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYsIEltYWdlJiwgY29uc3Qgdm9p
ZCosIGNvbnN0IExheW91dFNpemUmKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBjaG9vc2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eShHcmFwaGljc0NvbnRleHQmLCBJbWFnZSYsIGNvbnN0IHZvaWQq
LCBjb25zdCBMYXlvdXRTaXplJik7CiAKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGlu
dWF0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250aW51YXRpb24oUmVuZGVyQm94TW9kZWxP
YmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJl
ZGRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRP
YmplY3QuY3BwCmluZGV4IGRlOTEwMTQ0OTAzYTVjMGMzNDM4NGYyOWU5ODNmNWRhNDZiODViOTIu
Ljg4MDU2MzE0ODFjYTY5YTBmNzQ4N2JmMTEzNWQ0M2U2NjVlYmEyNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApAQCAtMjE0LDEy
ICsyMTQsOSBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2Uo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dAogICAgIGlmIChhbGlnbmVkUmVjdC53
aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFs
aXR5KGNvbnRleHQsIGltYWdlLCAmaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7Ci0gICAgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24oKSk7Ci0jaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElP
TikKLSAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0
eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKLSNlbmRpZgotICAgIGNvbnRleHQuZHJhd0ltYWdl
KGltYWdlLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNj
cmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbnRlcnBvbGF0aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgaW1h
Z2UsICZpbWFnZSwgYWxpZ25lZFJlY3Quc2l6ZSgpKTsKKyAgICBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbigpLCBzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CisgICAgY29udGV4dC5kcmF3SW1h
Z2UoaW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRl
c2NyaXB0aW9uLCBpbnRlcnBvbGF0aW9uKSk7CiB9CiAKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmpl
Y3Q6OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJIVE1MQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2Fu
dmFzLmNwcAppbmRleCAzN2I1ODhmYTg0YjM0NWFiMTQ2Y2I0NmM1Y2JlY2YyMWRkMGIwYzAyLi5m
MmRlNzVkNTI4MzMxYmE1ZmQ5NWFhOWJhYjE0OTY4ZTAxZmZkNDIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJJbWFnZVF1YWxpdHlDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTg0LDggKzg1LDggQEAgdm9pZCBSZW5kZXJIVE1MQ2FudmFz
OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGEKICAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KHRoaXMsIGlu
dGVyc2VjdGlvbihyZXBsYWNlZENvbnRlbnRSZWN0LCBjb250ZW50Qm94UmVjdCkpOwogICAgIH0K
IAotICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gc3R5bGUoKS5pbWFnZVJlbmRlcmluZygp
ID09IEltYWdlUmVuZGVyaW5nQ3Jpc3BFZGdlcyB8fCBzdHlsZSgpLmltYWdlUmVuZGVyaW5nKCkg
PT0gSW1hZ2VSZW5kZXJpbmdQaXhlbGF0ZWQgfHwgc3R5bGUoKS5pbWFnZVJlbmRlcmluZygpID09
IEltYWdlUmVuZGVyaW5nT3B0aW1pemVTcGVlZDsKLSAgICBjYW52YXNFbGVtZW50KCkucGFpbnQo
Y29udGV4dCwgcmVwbGFjZWRDb250ZW50UmVjdCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICBJ
bnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvbk1haW50YWluZXIoY29u
dGV4dCwgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6aW50ZXJwb2xhdGlvblF1YWxpdHlGcm9tU3R5
bGUoc3R5bGUoKSkpOworICAgIGNhbnZhc0VsZW1lbnQoKS5wYWludChjb250ZXh0LCByZXBsYWNl
ZENvbnRlbnRSZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJIVE1MQ2FudmFzOjpjYW52YXNTaXplQ2hh
bmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBjMDY4
ZWFiMzc2OWQzNzI2NjM2YWZhMjVlOTQ1ZGZlZDA0MTc1MThmLi42MDI3MGFlNWU3ZGRmNmQyOWI3
YmRlZjI2MDhjOTEzMzdlMjg2NTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAKQEAgLTU0NywxNCArNTQ3LDEzIEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50
b1JlY3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAK
ICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBpczxIVE1MSW1hZ2VFbGVtZW50
PihlbGVtZW50KCkpID8gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKSA6IG51
bGxwdHI7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBpbWFnZUVs
ZW1lbnQgPyBpbWFnZUVsZW1lbnQtPmNvbXBvc2l0ZU9wZXJhdG9yKCkgOiBDb21wb3NpdGVTb3Vy
Y2VPdmVyOworCisgICAgLy8gRklYTUU6IERvY3VtZW50IHdoZW4gaW1hZ2UgIT0gaW1nLmdldCgp
LgogICAgIEltYWdlKiBpbWFnZSA9IGltYWdlUmVzb3VyY2UoKS5pbWFnZSgpLmdldCgpOwotICAg
IGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBpbWFnZSAmJiBzaG91bGRQYWludEF0TG93UXVh
bGl0eShjb250ZXh0LCAqaW1hZ2UsIGltYWdlLCBMYXlvdXRTaXplKHJlY3Quc2l6ZSgpKSk7Ci0g
ICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24oc2hv
dWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSk7Ci0jaWYgRU5BQkxFKENTU19JTUFHRV9PUklF
TlRBVElPTikKLSAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25F
bnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKLSNlbmRpZgotICAgIGNvbnRleHQuZHJh
d0ltYWdlKCppbWcsIHJlY3QsCi0gICAgICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGVOb3JtYWwsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxv
d1F1YWxpdHlTY2FsaW5nKSk7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlv
biA9IGltYWdlID8gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgKmltYWdlLCBp
bWFnZSwgTGF5b3V0U2l6ZShyZWN0LnNpemUoKSkpIDogSW50ZXJwb2xhdGlvbkRlZmF1bHQ7CisK
KyAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihz
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCBzdHlsZSgpLmltYWdlT3JpZW50YXRpb24o
KSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltZywgcmVjdCwgSW1hZ2VQYWludGluZ09wdGlv
bnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZU5vcm1hbCwgb3JpZW50YXRpb25EZXNjcmlw
dGlvbiwgaW50ZXJwb2xhdGlvbikpOwogfQogCiBib29sIFJlbmRlckltYWdlOjpib3hTaGFkb3dT
aG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gq
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBz
aG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbi5jcHAKaW5kZXggOTljOTY3YTQ3NTc5M2E1M2VlZDQxZWUyZTg1ZWE1ZjE2YTNh
OTVhYy4uOGUxMDBlYjVmNDQ0NWM4MjEzYzc3MjAwZWQ3ZWUyODMyYjViZTA1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3Bw
CkBAIC0xMzUsMTMgKzEzNSw5IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50
U25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvCiAgICAgaWYgKGFs
aWduZWRSZWN0LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUmVjdC5oZWlnaHQoKSA8PSAwKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFp
bnRBdExvd1F1YWxpdHkoY29udGV4dCwgKmltYWdlLCBpbWFnZSwgYWxpZ25lZFJlY3Quc2l6ZSgp
KTsKLQotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0
aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkpOwotI2lmIEVOQUJMRShDU1NfSU1B
R0VfT1JJRU5UQVRJT04pCi0gICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVu
dGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7Ci0jZW5kaWYKLSAgICBjb250
ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhv
cmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOworICAgIEludGVy
cG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0
eShjb250ZXh0LCAqaW1hZ2UsIGltYWdlLCBhbGlnbmVkUmVjdC5zaXplKCkpOworICAgIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHNob3VsZFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uKCksIHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICBj
b250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9u
cyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBpbnRlcnBvbGF0aW9uKSk7CiB9CiAKIEN1cnNvckRp
cmVjdGl2ZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6Z2V0Q3Vyc29yKGNvbnN0IExheW91dFBv
aW50JiBwb2ludCwgQ3Vyc29yJiBvdmVycmlkZUN1cnNvcikgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggYWY2NjZhNGQ2YmMzNDk2NDM0
YjUxNDNkNTdjZDNhYWNjMzg3M2Q3NC4uYWRmMTA1ZDU5ZGFmOGE2YjAwYWJhN2FjOTdlZjJlZGZm
M2Y0YTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKQEAgLTExNjMsOSArMTE2MywxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0ZsaXBwZWRMaW5l
c1dyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6aXNGbGlwcGVkTGluZXNXcml0
aW5nTW9kZSh3cml0aW5nTW9kZSgpKTsgfQogICAgIGJvb2wgaXNGbGlwcGVkQmxvY2tzV3JpdGlu
Z01vZGUoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjppc0ZsaXBwZWRXcml0aW5nTW9kZSh3cml0
aW5nTW9kZSgpKTsgfQogCisgICAgSW1hZ2VPcmllbnRhdGlvbkVudW0gaW1hZ2VPcmllbnRhdGlv
bigpIGNvbnN0CisgICAgewogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAg
SW1hZ2VPcmllbnRhdGlvbkVudW0gaW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEltYWdlT3JpZW50YXRpb25FbnVtPihyYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFn
ZU9yaWVudGF0aW9uKTsgfQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VPcmllbnRh
dGlvbkVudW0+KHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlT3JpZW50YXRpb24pOworI2Vsc2UK
KyAgICAgICAgcmV0dXJuIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOwogI2VuZGlmCisgICAgfQog
CiAgICAgRUltYWdlUmVuZGVyaW5nIGltYWdlUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUltYWdlUmVuZGVyaW5nPihyYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlbmRl
cmluZyk7IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGIzMTM5ZjU1ZjVlMWFiNTdhNWNlOTMxNzM4MGM0ZWRjNWQ1Mjdi
ZjIuLjJmZTU2YWYyODEzNmZhMjZhODgyZTYxZjQyZTVjNjZkOTRhMTQ0ZjUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNSBAQAogMjAxNi0wMS0yNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAorICAgICAgICBpbWFnZS1yZW5kZXJpbmc6IC13ZWJraXQtb3B0aW1pemUtY29udHJh
c3Qgbm90IHdvcmtpbmcgZm9yIGJhY2tncm91bmQgaW1hZ2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Nzk5MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9pbWFnZXMvaW1hZ2UtcmVuZGVyaW5n
LWludGVycG9sYXRpb24tZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFn
ZXMvaW1hZ2UtcmVuZGVyaW5nLWludGVycG9sYXRpb24uaHRtbDogQWRkZWQuCisKKzIwMTYtMDEt
MjcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKICAgICAgICAgU3Vw
cG9ydCBDU1MzIEltYWdlcyB2YWx1ZXMgZm9yIHRoZSBpbWFnZS1yZW5kZXJpbmcgcHJvcGVydHkK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzU1Ngog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1yZW5kZXJpbmctaW50
ZXJwb2xhdGlvbi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Ut
cmVuZGVyaW5nLWludGVycG9sYXRpb24tZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2E2ZmM2
NWY5NTY2Y2U3NjcyMzI3MGE0Yzc2OGVlZmMyODkzODNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2UtcmVuZGVyaW5nLWludGVycG9sYXRpb24tZXhwZWN0
ZWQuaHRtbApAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
CisgICAgPHN0eWxlPgorICAgICAgICAuY2xpcHBlciB7CisgICAgICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CisgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIGhlaWdo
dDogMTAwcHg7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICBvdmVyZmxv
dzogaGlkZGVuOworICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgICAg
IH0KKyAgICAgICAgaW1nIHsKKyAgICAgICAgICAgIGhlaWdodDogMTEwMHB4OworICAgICAgICAg
ICAgd2lkdGg6IDExMDBweDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLmJhY2tncm91
bmRlciB7CisgICAgICAgICAgICBoZWlnaHQ6IDExMDBweDsKKyAgICAgICAgICAgIHdpZHRoOiAx
MTAwcHg7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ3Jlc291cmNlcy9ncmlk
LXNtYWxsLnBuZycpOworICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlOworICAgICAg
ICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorCis8ZGl2IGNsYXNzPSJjbGlwcGVy
Ij4KKyAgICA8aW1nIHNyYz0icmVzb3VyY2VzL2dyaWQtc21hbGwucG5nIiB3aWR0aD0iMTEiIGhl
aWdodD0iMTEiPgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNsaXBwZXIiPgorPC9kaXY+CisKKzxk
aXYgY2xhc3M9ImNsaXBwZXIiPgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNsaXBwZXIiPgorICAg
IDxkaXYgY2xhc3M9ImJhY2tncm91bmRlciI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0i
Y2xpcHBlciI+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2xpcHBlciI+Cis8L2Rpdj4KKworPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Ut
cmVuZGVyaW5nLWludGVycG9sYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2lt
YWdlLXJlbmRlcmluZy1pbnRlcnBvbGF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRmZDdkYWNhYzAw
MjM0OTc2M2U3Yjc5YzAwYTE1NmM0MGZkMzljZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLXJlbmRlcmluZy1pbnRlcnBvbGF0aW9uLmh0bWwKQEAgLTAs
MCArMSw1NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4K
KyAgICAgICAgLmNsaXBwZXIgeworICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAg
ICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAg
ICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgICAgICB9CisgICAgICAgIGlt
ZyB7CisgICAgICAgICAgICBpbWFnZS1yZW5kZXJpbmc6IHBpeGVsYXRlZDsKKyAgICAgICAgICAg
IGhlaWdodDogMTEwMHB4OworICAgICAgICAgICAgd2lkdGg6IDExMDBweDsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgLmJhY2tncm91bmRlciB7CisgICAgICAgICAgICBoZWlnaHQ6IDEx
MDBweDsKKyAgICAgICAgICAgIHdpZHRoOiAxMTAwcHg7CisgICAgICAgICAgICBiYWNrZ3JvdW5k
LWltYWdlOiB1cmwoJ3Jlc291cmNlcy9ncmlkLXNtYWxsLnBuZycpOworICAgICAgICAgICAgYmFj
a2dyb3VuZC1zaXplOiAxMDAlOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorCis8ZGl2IGNsYXNzPSJjbGlwcGVyIj4KKyAgICA8aW1nIHNyYz0icmVzb3VyY2VzL2dy
aWQtc21hbGwucG5nIiB3aWR0aD0iMTEiIGhlaWdodD0iMTEiIHN0eWxlPSJpbWFnZS1yZW5kZXJp
bmc6IGF1dG87Ij4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjbGlwcGVyIj4KKyAgICA8aW1nIHNy
Yz0icmVzb3VyY2VzL2dyaWQtc21hbGwucG5nIiB3aWR0aD0iMTEiIGhlaWdodD0iMTEiIHN0eWxl
PSJpbWFnZS1yZW5kZXJpbmc6IHBpeGVsYXRlZDsiPgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNs
aXBwZXIiPgorICAgIDxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JpZC1zbWFsbC5wbmciIHdpZHRoPSIx
MSIgaGVpZ2h0PSIxMSIgc3R5bGU9ImltYWdlLXJlbmRlcmluZzogY3Jpc3AtZWRnZXM7Ij4KKzwv
ZGl2PgorCis8ZGl2IGNsYXNzPSJjbGlwcGVyIj4KKyAgICA8ZGl2IGNsYXNzPSJiYWNrZ3JvdW5k
ZXIiIHN0eWxlPSJpbWFnZS1yZW5kZXJpbmc6IGF1dG87Ij48L2Rpdj4KKzwvZGl2PgorCis8ZGl2
IGNsYXNzPSJjbGlwcGVyIj4KKyAgICA8ZGl2IGNsYXNzPSJiYWNrZ3JvdW5kZXIiIHN0eWxlPSJp
bWFnZS1yZW5kZXJpbmc6IHBpeGVsYXRlZDsiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9
ImNsaXBwZXIiPgorICAgIDxkaXYgY2xhc3M9ImJhY2tncm91bmRlciIgc3R5bGU9ImltYWdlLXJl
bmRlcmluZzogY3Jpc3AtZWRnZXM7Ij48L2Rpdj4KKzwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>
<flag name="review"
          id="294942"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270251</attachid>
            <date>2016-01-29 13:54:22 -0800</date>
            <delta_ts>2016-01-29 15:16:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97991-20160130085355.patch</filename>
            <type>text/plain</type>
            <size>43917</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1ODM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTUxYmUyYzEyZTZlMmQy
NjVkMDQyZjU2ZDlmMDgwNzMwNDdjYTliMy4uMDIzMzhiNTEyOWM2M2RjNmU4NDk4NzRhMmJlZWI2
YTgzYzU3MmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE2LTAxLTI5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIGltYWdlLXJlbmRl
cmluZzogLXdlYmtpdC1vcHRpbWl6ZS1jb250cmFzdCBub3Qgd29ya2luZyBmb3IgYmFja2dyb3Vu
ZCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk3OTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisgICAgICAgIAorICAg
ICAgICBEb24ndCBlcXVhdGUgInBpeGVsYXRlZCIgYW5kICJjcmlzcC1lZGdlcyIgdmFsdWVzIGZv
ciBpbWFnZS1yZW5kZXJpbmcgd2l0aCBsb3cKKyAgICAgICAgcXVhbGl0eSBzY2FsaW5nOyB0aGV5
IHNob3VsZCBtYXAgdG8gSW50ZXJwb2xhdGlvbk5vbmUsIG5vdCBJbnRlcnBvbGF0aW9uTG93Lgor
ICAgICAgICAKKyAgICAgICAgVG8gc3VwcG9ydCB0aGlzIGNoYW5nZSBJbWFnZVF1YWxpdHlDb250
cm9sbGVyIHRvIHJldHVybiBhIEludGVycG9sYXRpb25RdWFsaXR5CisgICAgICAgIGZyb20gdGhl
IHJlbmFtZWQgY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoKS4gSWYgdGhlIHJldHVybmVkIHZh
bHVlIGlzIG5vdAorICAgICAgICBJbnRlcnBvbGF0aW9uRGVmYXVsdCwgc2V0IHRoZSBHcmFwaGlj
c0NvbnRleHQgaW1hZ2UgaW50ZXJwb2xhdGlvbiB3aGVuIGRyYXdpbmcKKyAgICAgICAgaW1hZ2Vz
IGFuZCBpbWFnZSBidWZmZXJzLgorICAgICAgICAKKyAgICAgICAgUmVtb3ZlIHRoZSByZWR1bmRh
bnQgInVzZUxvd1F1YWxpdHlTY2FsZSIgZnJvbSAKKworICAgICAgICBUZXN0OiBmYXN0L2ltYWdl
cy9pbWFnZS1yZW5kZXJpbmctaW50ZXJwb2xhdGlvbi5odG1sCisKKyAgICAgICAgKiBodG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50
OjpwYWludCk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OmRvSW1hZ2VEcmFnKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXI6OkludGVy
cG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXI6On5JbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50
YWluZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OkltYWdlUGFp
bnRpbmdPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjp1
c2VzRGVmYXVsdEludGVycG9sYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJwb2xhdGlv
blF1YWxpdHlNYWludGFpbmVyOjpJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyOjp+SW50ZXJwb2xh
dGlvblF1YWxpdHlNYWludGFpbmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyOjpkcmF3KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW1hZ2VRdWFsaXR5
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVF1YWxpdHlDb250cm9sbGVy
OjppbnRlcnBvbGF0aW9uUXVhbGl0eUZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpJbWFnZVF1YWxpdHlDb250cm9sbGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNo
b3VsZFBhaW50QXRMb3dRdWFsaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvSW1h
Z2VRdWFsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2hv
b3NlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KTogRGVsZXRlZC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckhUTUxDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySFRNTENhbnZh
czo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorCiAyMDE2LTAxLTI5ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBNb2Rlcm4gSURCOiBzdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vaW5kZXgtMy5odG1sIGZhaWxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcAppbmRleCBmNmY1MTY1ZGZkY2I5YzZiNDQyNTA2NjUxOGVjOGI4MGIw
NzExOGM3Li43YjM1Njk5YmNkNTJjMjc2NDFlNDA5YzVlN2Q4YmYwMmM3ZGFiY2E2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtNDAzLDcgKzQwMyw3IEBA
IGJvb2wgSFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50c0ludG9DYW52YXNCdWZmZXIoKSBjb25zdAog
fQogCiAKLXZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgciwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lk
IEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IExheW91dFJlY3QmIHIpCiB7CiAgICAgLy8gQ2xlYXIgdGhlIGRpcnR5IHJlY3QKICAgICBtX2Rp
cnR5UmVjdCA9IEZsb2F0UmVjdCgpOwpAQCAtNDI2LDkgKzQyNiw5IEBAIHZvaWQgSFRNTENhbnZh
c0VsZW1lbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVj
dCYgciwgYm9vCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICAgICAgICAg
ICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHJlbmRl
cmVyKCktPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZiAKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LmRyYXdJbWFnZSgqbV9wcmVzZW50ZWRJbWFnZSwgc25hcHBlZEludFJlY3Qo
ciksIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1
YWxpdHlTY2FsZSkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCptX3ByZXNl
bnRlZEltYWdlLCBzbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50
YXRpb25EZXNjcmlwdGlvbikpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
Y29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBzbmFwcGVkSW50UmVjdChyKSwg
dXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1
ZmZlcigqaW1hZ2VCdWZmZXIsIHNuYXBwZWRJbnRSZWN0KHIpKTsKICAgICAgICAgfQogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCmluZGV4IDAyZGJjNTcxZGRi
NmYyZjBmOTE3N2ViM2Y2NDI0MWMzYjA5YThlNDAuLmE3NzQ5MDAxYTc3YjA5NDlmYjgyZGY5MGYx
ODY2NTY4MjVkZDhhZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgK
QEAgLTEwOSw3ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWREcmF3KGNvbnN0IEZsb2F0
UmVjdCYpOwogICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZChjb25zdCBGbG9h
dFJlY3QmKTsKIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0
UmVjdCYsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFsc2UpOworICAgIHZvaWQgcGFpbnQo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYpOwogCiAgICAgR3JhcGhpY3NDb250
ZXh0KiBkcmF3aW5nQ29udGV4dCgpIGNvbnN0OwogICAgIEdyYXBoaWNzQ29udGV4dCogZXhpc3Rp
bmdEcmF3aW5nQ29udGV4dCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcAppbmRleCA0YzUyYTI4Zjk2OTVmMDM0NGJkMmIxZGVlMzMwN2ZlMDY0OGM2MDU2Li5iMDE2
ODNlMDI4MzIxYWYzYTkwMWUxNzM5M2VkOTBlYzNlNTQxZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmNwcApAQCAtOTM1LDEwICs5MzUsNyBAQCB2b2lkIERyYWdDb250cm9s
bGVyOjpkb0ltYWdlRHJhZyhFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09y
aWdpbiwgYwogICAgIGlmICghZWxlbWVudC5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihl
bGVtZW50LnJlbmRlcmVyKCktPnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkpOwotI2lm
IEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgb3JpZW50YXRpb25EZXNjcmlwdGlv
bi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShlbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuaW1h
Z2VPcmllbnRhdGlvbigpKTsKLSNlbmRpZgorICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
biBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKGVsZW1lbnQucmVuZGVyZXIoKS0+c2hvdWxkUmVzcGVj
dEltYWdlT3JpZW50YXRpb24oKSwgZWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLmltYWdlT3Jp
ZW50YXRpb24oKSk7CiAKICAgICBJbWFnZSogaW1hZ2UgPSBnZXRJbWFnZShlbGVtZW50KTsKICAg
ICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPnNpemUoKS5oZWlnaHQoKSAqIGltYWdlLT5zaXplKCkud2lk
dGgoKSA8PSBNYXhPcmlnaW5hbEltYWdlQXJlYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggN2RkY2M3MjZmMmExOGI2
N2NmOWMxMjJkMWNhY2EyY2NmYmQyNzUwYy4uOTY1NTAzYzU0MzU4ZTI1YWI5NjJhYjdhYWMzYmIy
ZTA1OGRiY2RmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03NywzMCArNzcsNiBAQCBwcml2YXRlOgogICAgIHVu
c2lnbmVkIG1fb2Zmc2V0OwogfTsKIAotY2xhc3MgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFp
bmVyIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWlu
ZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIEludGVycG9sYXRpb25RdWFsaXR5
IGludGVycG9sYXRpb25RdWFsaXR5VG9Vc2UpCi0gICAgICAgIDogbV9ncmFwaGljc0NvbnRleHQo
Z3JhcGhpY3NDb250ZXh0KQotICAgICAgICAsIG1fY3VycmVudEludGVycG9sYXRpb25RdWFsaXR5
KGdyYXBoaWNzQ29udGV4dC5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpCi0gICAgICAgICwg
bV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQobV9jdXJyZW50SW50ZXJwb2xhdGlvblF1YWxp
dHkgIT0gaW50ZXJwb2xhdGlvblF1YWxpdHlUb1VzZSkKLSAgICB7Ci0gICAgICAgIGlmIChtX2lu
dGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlZCkKLSAgICAgICAgICAgIG1fZ3JhcGhpY3NDb250ZXh0
LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHlUb1VzZSk7
Ci0gICAgfQotCi0gICAgfkludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcigpCi0gICAgewot
ICAgICAgICBpZiAobV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQpCi0gICAgICAgICAgICBt
X2dyYXBoaWNzQ29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KG1fY3VycmVudElu
dGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgR3JhcGhpY3NDb250
ZXh0JiBtX2dyYXBoaWNzQ29udGV4dDsKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2N1cnJl
bnRJbnRlcnBvbGF0aW9uUXVhbGl0eTsKLSAgICBib29sIG1faW50ZXJwb2xhdGlvblF1YWxpdHlD
aGFuZ2VkOwotfTsKLQotCiAjZGVmaW5lIENIRUNLX0ZPUl9DSEFOR0VEX1BST1BFUlRZKGZsYWcs
IHByb3BlcnR5KSBcCiAgICAgaWYgKChtX2NoYW5nZUZsYWdzICYgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OmZsYWcpICYmIChtX3N0YXRlLnByb3BlcnR5ICE9IHN0YXRlLnByb3BlcnR5KSkgXAogICAg
ICAgICBjaGFuZ2VGbGFncyB8PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmxhZzsKQEAgLTc2Nyw3
ICs3NDMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29ucwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFs
aXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxp
dHlTY2FsZSA/IEludGVycG9sYXRpb25Mb3cgOiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkp
OworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9u
UXVhbGl0eSk7CiAgICAgaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlw
dGlvbik7CiB9CiAKQEAgLTc4MSw3ICs3NTcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFp
bmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Mb3cgOiBpbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KCkpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5l
ciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiAgICAgaW1hZ2UuZHJhd1RpbGVkKCp0aGlz
LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1v
ZGUpOwogfQogCkBAIC04MDIsNyArNzc4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdU
aWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5l
ciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09w
dGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTG93IDogaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIg
aW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIGltYWdlLmRyYXdUaWxlZCgqdGhpcywg
ZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdl
UGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IpOwogfQogCkBAIC04MjEsOCArNzk3
LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYg
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIg
aW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fdXNlTG93UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbkxvdyA6IGltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNv
dXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fdXNlTG93UXVh
bGl0eVNjYWxlKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xh
dGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1faW50
ZXJwb2xhdGlvblF1YWxpdHkpOworICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBz
b3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdl
LCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQpAQCAtODQ2LDkgKzgyMiw4IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBpbWFnCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50
ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fdXNlTG93UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbkxvdyA6IGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoKSk7Ci0KLSAgICBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhXVEZNb3Zl
KGltYWdlKSwgKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgSW50ZXJwb2xh
dGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0
aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBJ
bWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhXVEZNb3ZlKGltYWdlKSwgKnRoaXMsIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGlt
YWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmNsaXBSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRl
eCA0ZmZhN2M2ZDYwMjgyY2FiZTU5MzVjODMxNGFmNTQ3OGJlNThhMzA2Li5hNDYwOGUwZmY5N2I3
YTM4Y2QyNGE5M2IzMTY5NzcxM2FhMGIxZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMTAyLDE0ICsxMDIsNiBAQCBl
bnVtIFN0cm9rZVN0eWxlIHsKICAgICBXYXZ5U3Ryb2tlLAogfTsKIAotZW51bSBJbnRlcnBvbGF0
aW9uUXVhbGl0eSB7Ci0gICAgSW50ZXJwb2xhdGlvbkRlZmF1bHQsCi0gICAgSW50ZXJwb2xhdGlv
bk5vbmUsCi0gICAgSW50ZXJwb2xhdGlvbkxvdywKLSAgICBJbnRlcnBvbGF0aW9uTWVkaXVtLAot
ICAgIEludGVycG9sYXRpb25IaWdoCi19OwotCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xh
c3MgUmVjb3JkZXI7CiB9CkBAIC0xOTQsMzQgKzE4NiwzNiBAQCBzdHJ1Y3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUgewogfTsKIAogc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKLSAgICBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWws
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFs
c2UpCisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMoQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxlbmRNb2RlID0gQmxl
bmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNj
cmlwdGlvbiA9IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCBJbnRlcnBvbGF0aW9uUXVh
bGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0KQogICAgICAg
ICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCiAgICAgICAgICwgbV9i
bGVuZE1vZGUoYmxlbmRNb2RlKQogICAgICAgICAsIG1fb3JpZW50YXRpb25EZXNjcmlwdGlvbihv
cmllbnRhdGlvbkRlc2NyaXB0aW9uKQotICAgICAgICAsIG1fdXNlTG93UXVhbGl0eVNjYWxlKHVz
ZUxvd1F1YWxpdHlTY2FsZSkKKyAgICAgICAgLCBtX2ludGVycG9sYXRpb25RdWFsaXR5KGludGVy
cG9sYXRpb25RdWFsaXR5KQogICAgIHsKICAgICB9CiAKLSAgICBJbWFnZVBhaW50aW5nT3B0aW9u
cyhJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbiwgYm9v
bCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxlbmRNb2RlID0gQmxl
bmRNb2RlTm9ybWFsKQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBp
bnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0LCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBi
bGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpCiAgICAgICAgIDogbV9jb21wb3NpdGVPcGVyYXRv
cihjb21wb3NpdGVPcGVyYXRvcikKICAgICAgICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCiAg
ICAgICAgICwgbV9vcmllbnRhdGlvbkRlc2NyaXB0aW9uKG9yaWVudGF0aW9uRGVzY3JpcHRpb24p
Ci0gICAgICAgICwgbV91c2VMb3dRdWFsaXR5U2NhbGUodXNlTG93UXVhbGl0eVNjYWxlKQorICAg
ICAgICAsIG1faW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCiAgICAg
ewogICAgIH0KIAotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKGJvb2wgdXNlTG93UXVhbGl0eVNj
YWxlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbiA9
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBC
bGVuZE1vZGVOb3JtYWwpCisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMoSW50ZXJwb2xhdGlvblF1
YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHksIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBv
cmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlciwg
QmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCkKICAgICAgICAgOiBtX2NvbXBv
c2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQogICAgICAgICAsIG1fYmxlbmRNb2RlKGJs
ZW5kTW9kZSkKICAgICAgICAgLCBtX29yaWVudGF0aW9uRGVzY3JpcHRpb24ob3JpZW50YXRpb25E
ZXNjcmlwdGlvbikKLSAgICAgICAgLCBtX3VzZUxvd1F1YWxpdHlTY2FsZSh1c2VMb3dRdWFsaXR5
U2NhbGUpCisgICAgICAgICwgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eShpbnRlcnBvbGF0aW9uUXVh
bGl0eSkKICAgICB7CiAgICAgfQorICAgIAorICAgIGJvb2wgdXNlc0RlZmF1bHRJbnRlcnBvbGF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9PSBJbnRlcnBvbGF0
aW9uRGVmYXVsdDsgfQogCiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9jb21wb3NpdGVPcGVyYXRv
cjsKICAgICBCbGVuZE1vZGUgbV9ibGVuZE1vZGU7CiAgICAgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uIG1fb3JpZW50YXRpb25EZXNjcmlwdGlvbjsKLSAgICBib29sIG1fdXNlTG93UXVhbGl0
eVNjYWxlOworICAgIEludGVycG9sYXRpb25RdWFsaXR5IG1faW50ZXJwb2xhdGlvblF1YWxpdHk7
CiB9OwogCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UgewpAQCAtNjU3LDYgKzY1
MSwzNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zYXZlQW5kUmVzdG9yZTsKIH07CiAKK2NsYXNz
IEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
SW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3ND
b250ZXh0LCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eVRvVXNlKQor
ICAgICAgICA6IG1fZ3JhcGhpY3NDb250ZXh0KGdyYXBoaWNzQ29udGV4dCkKKyAgICAgICAgLCBt
X2N1cnJlbnRJbnRlcnBvbGF0aW9uUXVhbGl0eShncmFwaGljc0NvbnRleHQuaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSgpKQorICAgICAgICAsIG1faW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2Vk
KGludGVycG9sYXRpb25RdWFsaXR5VG9Vc2UgIT0gSW50ZXJwb2xhdGlvbkRlZmF1bHQgJiYgbV9j
dXJyZW50SW50ZXJwb2xhdGlvblF1YWxpdHkgIT0gaW50ZXJwb2xhdGlvblF1YWxpdHlUb1VzZSkK
KyAgICB7CisgICAgICAgIGlmIChtX2ludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlZCkKKyAgICAg
ICAgICAgIG1fZ3JhcGhpY3NDb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoaW50
ZXJwb2xhdGlvblF1YWxpdHlUb1VzZSk7CisgICAgfQorCisgICAgZXhwbGljaXQgSW50ZXJwb2xh
dGlvblF1YWxpdHlNYWludGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBP
cHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gaW50ZXJwb2xhdGlvblF1YWxpdHkpCisgICAg
ICAgIDogSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyKGdyYXBoaWNzQ29udGV4dCwgaW50
ZXJwb2xhdGlvblF1YWxpdHkgPyBpbnRlcnBvbGF0aW9uUXVhbGl0eS52YWx1ZSgpIDogZ3JhcGhp
Y3NDb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSkKKyAgICB7CisgICAgfQorCisg
ICAgfkludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcigpCisgICAgeworICAgICAgICBpZiAo
bV9pbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZWQpCisgICAgICAgICAgICBtX2dyYXBoaWNzQ29u
dGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KG1fY3VycmVudEludGVycG9sYXRpb25R
dWFsaXR5KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0JiBtX2dyYXBo
aWNzQ29udGV4dDsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2N1cnJlbnRJbnRlcnBvbGF0
aW9uUXVhbGl0eTsKKyAgICBib29sIG1faW50ZXJwb2xhdGlvblF1YWxpdHlDaGFuZ2VkOworfTsK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gR3JhcGhpY3NDb250ZXh0X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaApp
bmRleCA0ZWYzYmU4Y2MxMmM2ZjY0YzEwY2E2YTJmOTY1NjYxZWExNDZjNDY3Li5lZGU3OTJkYjU4
MjMzZjI5MjJkNzBkZjQ2ZDdlNGI4Mzg4ZDc4M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCkBAIC03NSw2ICs3NSwxNCBAQCBlbnVt
IEdyYWRpZW50U3ByZWFkTWV0aG9kIHsKICAgICBTcHJlYWRNZXRob2RSZXBlYXQKIH07CiAKK2Vu
dW0gSW50ZXJwb2xhdGlvblF1YWxpdHkgeworICAgIEludGVycG9sYXRpb25EZWZhdWx0LAorICAg
IEludGVycG9sYXRpb25Ob25lLAorICAgIEludGVycG9sYXRpb25Mb3csCisgICAgSW50ZXJwb2xh
dGlvbk1lZGl1bSwKKyAgICBJbnRlcnBvbGF0aW9uSGlnaAorfTsKKwogZW51bSBMaW5lQ2FwIHsg
QnV0dENhcCwgUm91bmRDYXAsIFNxdWFyZUNhcCB9OwogCiBlbnVtIExpbmVKb2luIHsgTWl0ZXJK
b2luLCBSb3VuZEpvaW4sIEJldmVsSm9pbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZjQxOWQzMjdkOTFmOThiNTBhZDViZTFkODdh
NDk2YjBmY2Y3ZDRjNi4uMDRmOWVmOTNhZWE5ZDIyZWFmMGU2MWM5YTIwZDY3MzUzNzIyOTVhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBA
IC0xNDIsMTAgKzE0MiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29u
c3Q7CiAjZW5kaWYKICAgICAKLSAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0
KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlciwg
QmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZh
bHNlKTsKKyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAt
MSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0g
QmxlbmRNb2RlTm9ybWFsKTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJu
VHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKIAotICAgIHN0YXRpYyB2b2lkIGRyYXdDb25zdW1pbmco
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAs
IDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxl
bmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNl
KTsKKyAgICBzdGF0aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVP
cGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1h
bCk7CiAKICAgICBpbmxpbmUgdm9pZCBnZW5lcmljQ29udmVydFRvTHVtaW5hbmNlTWFzaygpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDQ4NjY1MTliNzU3ZjI2NDM1YzI0OWYzMmI1MDQ3
NDc3MTkzZWE1YzUuLjM4N2EyMGE5MDAwOGY0YmViZjIwNTIyMTkzM2JlMjI2NjVmYjk1OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0yMTQsMTcgKzIxNCwxNyBAQCBCYWNraW5nU3RvcmVD
b3B5IEltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9kZSgpCiAgICAgcmV0dXJuIERvbnRDb3B5
QmFja2luZ1N0b3JlOwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgZGVz
dENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wgdXNl
TG93UXVhbGl0eVNjYWxlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewotICAgIGlt
YWdlQnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5k
TW9kZSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29u
dGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOwogfQogCiB2b2lkIEltYWdl
QnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCi0gICAgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNj
YWxlKQorICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewog
ICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSAmZGVzdGluYXRpb25Db250ZXh0ID09ICZj
b250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7CiAgICAg
UmVmUHRyPEltYWdlPiBpbWFnZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVzdGluYXRp
b25Db250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwg
dXNlTG93UXVhbGl0eVNjYWxlKSk7CisgICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFnZSgq
aW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRN
b2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSkpOwogfQogCiB2b2lkIEltYWdlQnVm
ZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
LmNwcAppbmRleCA5NWU0YjE1OGFlYTZhZDY5OTY3ODUxNDU1Y2M1OTc0NGIyZjJmOTcyLi44NDYz
OTZjMTkwMjdjMmMyYmUyNTVjNzY0YWNhZTc2MmZlN2U5ODdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMjY0
LDExICsyNjQsMTEgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVmZmVyOjpjb3B5TmF0
aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IKICAgICByZXR1cm4gaW1hZ2U7
CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2Nh
bGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAjaWYgVVNFKElPU1VSRkFDRV9D
QU5WQVNfQkFDS0lOR19TVE9SRSkKICAgICBpZiAoIWltYWdlQnVmZmVyLT5tX2RhdGEuc3VyZmFj
ZSkgewotICAgICAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wLCBibGVuZE1vZGUsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgICAgIGltYWdl
QnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9k
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0yODMsMTEgKzI4MywxMSBAQCB2
b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gaW1hZ2VCdWZmZXIsIEdyYXBoaQogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShyZXNvbHV0
aW9uU2NhbGUsIHJlc29sdXRpb25TY2FsZSk7CiAgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUlt
YWdlKGltYWdlLmdldCgpLCBiYWNraW5nU3RvcmVTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNS
ZWN0LCBvcCwgYmxlbmRNb2RlKTsKICNlbHNlCi0gICAgaW1hZ2VCdWZmZXItPmRyYXcoZGVzdENv
bnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCB1c2VMb3dRdWFsaXR5U2Nh
bGUpOworICAgIGltYWdlQnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3AsIGJsZW5kTW9kZSk7CiAjZW5kaWYKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBib29sKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQm
IGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewog
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKICAgICBpZiAoJmRlc3RDb250ZXh0ID09
ICZjb250ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcApp
bmRleCBiZTBkOTRhNzg1ZjIwOGY0OTExMjZlMzI2NzM4M2E5OTc1NzA5MzdiLi40ZWNkODVhNjEx
ZDM0MmE3OTNiYzIyYmJkY2RjZjcxMDRmZjJhOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwCkBAIC00MCw4ICs0MCw2IEBA
IHN0YXRpYyBjb25zdCBkb3VibGUgY0xvd1F1YWxpdHlUaW1lVGhyZXNob2xkID0gMC41MDA7IC8v
IDUwMCBtcwogSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6SW1hZ2VRdWFsaXR5Q29udHJvbGxlcihj
b25zdCBSZW5kZXJWaWV3JiByZW5kZXJWaWV3KQogICAgIDogbV9yZW5kZXJWaWV3KHJlbmRlclZp
ZXcpCiAgICAgLCBtX3RpbWVyKCp0aGlzLCAmSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6aGlnaFF1
YWxpdHlSZXBhaW50VGltZXJGaXJlZCkKLSAgICAsIG1fYW5pbWF0ZWRSZXNpemVJc0FjdGl2ZShm
YWxzZSkKLSAgICAsIG1fbGl2ZVJlc2l6ZU9wdGltaXphdGlvbklzQWN0aXZlKGZhbHNlKQogewog
fQogCkBAIC05OSwyMyArOTcsMzAgQEAgdm9pZCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpyZXN0
YXJ0VGltZXIoKQogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KGNMb3dRdWFsaXR5VGltZVRocmVz
aG9sZCk7CiB9CiAKLWJvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExv
d1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCog
b2JqZWN0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IHZvaWQgKmxheWVyLCBjb25zdCBMYXlvdXRTaXpl
JiBzaXplKQorT3B0aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IEltYWdlUXVhbGl0eUNvbnRy
b2xsZXI6OmludGVycG9sYXRpb25RdWFsaXR5RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkKIHsKLSAgICAvLyBJZiB0aGUgaW1hZ2UgaXMgbm90IGEgYml0bWFwIGltYWdlLCB0aGVu
IG5vbmUgb2YgdGhpcyBpcyByZWxldmFudCBhbmQgd2UganVzdCBwYWludCBhdCBoaWdoCi0gICAg
Ly8gcXVhbGl0eS4KLSAgICBpZiAoIShpbWFnZS5pc0JpdG1hcEltYWdlKCkgfHwgaW1hZ2UuaXNQ
REZEb2N1bWVudEltYWdlKCkpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzd2l0Y2ggKG9iamVjdC0+c3R5bGUoKS5pbWFnZVJlbmRl
cmluZygpKSB7CisgICAgc3dpdGNoIChzdHlsZS5pbWFnZVJlbmRlcmluZygpKSB7CiAgICAgY2Fz
ZSBJbWFnZVJlbmRlcmluZ09wdGltaXplU3BlZWQ6CisgICAgICAgIHJldHVybiBJbnRlcnBvbGF0
aW9uTG93OwogICAgIGNhc2UgSW1hZ2VSZW5kZXJpbmdDcmlzcEVkZ2VzOgogICAgIGNhc2UgSW1h
Z2VSZW5kZXJpbmdQaXhlbGF0ZWQ6Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1
cm4gSW50ZXJwb2xhdGlvbk5vbmU7CiAgICAgY2FzZSBJbWFnZVJlbmRlcmluZ09wdGltaXplUXVh
bGl0eToKLSAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBGSVhNRTogQ1NTIDMgSW1hZ2VzIHNheXMg
dGhhdCBvcHRpbWl6ZVF1YWxpdHkgc2hvdWxkIGJlaGF2ZSBsaWtlICdhdXRvJywgYnV0IHRoYXQg
cHJldmVudHMgYXV0aG9ycyBmcm9tIG92ZXJyaWRpbmcgdGhpcyBsb3cgcXVhbGl0eSByZW5kZXJp
bmcgYmVoYXZpb3IuCisgICAgICAgIHJldHVybiBJbnRlcnBvbGF0aW9uRGVmYXVsdDsgLy8gRklY
TUU6IENTUyAzIEltYWdlcyBzYXlzIHRoYXQgb3B0aW1pemVRdWFsaXR5IHNob3VsZCBiZWhhdmUg
bGlrZSAnYXV0bycsIGJ1dCB0aGF0IHByZXZlbnRzIGF1dGhvcnMgZnJvbSBvdmVycmlkaW5nIHRo
aXMgbG93IHF1YWxpdHkgcmVuZGVyaW5nIGJlaGF2aW9yLgogICAgIGNhc2UgSW1hZ2VSZW5kZXJp
bmdBdXRvOgogICAgICAgICBicmVhazsKICAgICB9CisgICAgcmV0dXJuIE51bGxvcHQ7Cit9CisK
K0ludGVycG9sYXRpb25RdWFsaXR5IEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OmNob29zZUludGVy
cG9sYXRpb25RdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQm94TW9kZWxP
YmplY3QqIG9iamVjdCwgSW1hZ2UmIGltYWdlLCBjb25zdCB2b2lkICpsYXllciwgY29uc3QgTGF5
b3V0U2l6ZSYgc2l6ZSkKK3sKKyAgICAvLyBJZiB0aGUgaW1hZ2UgaXMgbm90IGEgYml0bWFwIGlt
YWdlLCB0aGVuIG5vbmUgb2YgdGhpcyBpcyByZWxldmFudCBhbmQgd2UganVzdCBwYWludCBhdCBo
aWdoIHF1YWxpdHkuCisgICAgaWYgKCEoaW1hZ2UuaXNCaXRtYXBJbWFnZSgpIHx8IGltYWdlLmlz
UERGRG9jdW1lbnRJbWFnZSgpKSB8fCBjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAg
ICAgcmV0dXJuIEludGVycG9sYXRpb25EZWZhdWx0OworCisgICAgaWYgKE9wdGlvbmFsPEludGVy
cG9sYXRpb25RdWFsaXR5PiBzdHlsZUludGVycG9sYXRpb24gPSBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZyb21TdHlsZShvYmplY3QtPnN0eWxlKCkpKQorICAgICAgICByZXR1cm4gc3R5bGVJbnRlcnBv
bGF0aW9uLnZhbHVlKCk7CiAKICAgICAvLyBNYWtlIHN1cmUgdG8gdXNlIHRoZSB1bnpvb21lZCBp
bWFnZSBzaXplLCBzaW5jZSBpZiBhIGZ1bGwgcGFnZSB6b29tIGlzIGluIGVmZmVjdCwgdGhlIGlt
YWdlCiAgICAgLy8gaXMgYWN0dWFsbHkgYmVpbmcgc2NhbGVkLgpAQCAtMTQxLDEwICsxNDYsMTAg
QEAgYm9vbCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpzaG91bGRQYWludEF0TG93UXVhbGl0eShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFIKICAgICAgICAgICAgIHNldChvYmplY3QsIGlubmVy
TWFwLCBsYXllciwgc2l6ZSk7CiAgICAgICAgICAgICByZXN0YXJ0VGltZXIoKTsKICAgICAgICAg
ICAgIG1fbGl2ZVJlc2l6ZU9wdGltaXphdGlvbklzQWN0aXZlID0gdHJ1ZTsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIEludGVycG9sYXRpb25Mb3c7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKG1fbGl2ZVJlc2l6ZU9wdGltaXphdGlvbklzQWN0aXZlKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIEludGVycG9sYXRpb25E
ZWZhdWx0OwogICAgIH0KIAogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY3VycmVudFRyYW5z
Zm9ybSA9IGNvbnRleHQuZ2V0Q1RNKCk7CkBAIC0xNTIsMjEgKzE1NywyMSBAQCBib29sIEltYWdl
UXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgUgogICAgIGlmICghY29udGV4dElzU2NhbGVkICYmIHNpemUgPT0gaW1hZ2VT
aXplKSB7CiAgICAgICAgIC8vIFRoZXJlIGlzIG5vIHNjYWxlIGluIGVmZmVjdC4gSWYgd2UgaGFk
IGEgc2NhbGUgaW4gZWZmZWN0IGJlZm9yZSwgd2UgY2FuIGp1c3QgcmVtb3ZlIHRoaXMgb2JqZWN0
IGZyb20gdGhlIGxpc3QuCiAgICAgICAgIHJlbW92ZUxheWVyKG9iamVjdCwgaW5uZXJNYXAsIGxh
eWVyKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gSW50ZXJwb2xhdGlv
bkRlZmF1bHQ7CiAgICAgfQogCiAgICAgLy8gVGhlcmUgaXMgbm8gbmVlZCB0byBoYXNoIHNjYWxl
ZCBpbWFnZXMgdGhhdCBhbHdheXMgdXNlIGxvdyBxdWFsaXR5IG1vZGUgd2hlbiB0aGUgcGFnZSBk
ZW1hbmRzIGl0LiBUaGlzIGlzIHRoZSBpQ2hhdCBjYXNlLgogICAgIGlmIChtX3JlbmRlclZpZXcu
ZnJhbWUoKS5wYWdlKCktPmluTG93UXVhbGl0eUltYWdlSW50ZXJwb2xhdGlvbk1vZGUoKSkgewog
ICAgICAgICBkb3VibGUgdG90YWxQaXhlbHMgPSBzdGF0aWNfY2FzdDxkb3VibGU+KGltYWdlLndp
ZHRoKCkpICogc3RhdGljX2Nhc3Q8ZG91YmxlPihpbWFnZS5oZWlnaHQoKSk7CiAgICAgICAgIGlm
ICh0b3RhbFBpeGVscyA+IGNJbnRlcnBvbGF0aW9uQ3V0b2ZmKQotICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICByZXR1cm4gSW50ZXJwb2xhdGlvbkxvdzsKICAgICB9CiAKICAg
ICAvLyBJZiBhbiBhbmltYXRlZCByZXNpemUgaXMgYWN0aXZlLCBwYWludCBpbiBsb3cgcXVhbGl0
eSBhbmQga2ljayB0aGUgdGltZXIgYWhlYWQuCiAgICAgaWYgKG1fYW5pbWF0ZWRSZXNpemVJc0Fj
dGl2ZSkgewogICAgICAgICBzZXQob2JqZWN0LCBpbm5lck1hcCwgbGF5ZXIsIHNpemUpOwogICAg
ICAgICByZXN0YXJ0VGltZXIoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVy
biBJbnRlcnBvbGF0aW9uTG93OwogICAgIH0KICAgICAvLyBJZiB0aGlzIGlzIHRoZSBmaXJzdCB0
aW1lIHJlc2l6aW5nIHRoaXMgaW1hZ2UsIG9yIGl0cyBzaXplIGlzIHRoZQogICAgIC8vIHNhbWUg
YXMgdGhlIGxhc3QgcmVzaXplLCBkcmF3IGF0IGhpZ2ggcmVzLCBidXQgcmVjb3JkIHRoZSBwYWlu
dApAQCAtMTc0LDEzICsxNzksMTMgQEAgYm9vbCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpzaG91
bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFIKICAgICBpZiAo
aXNGaXJzdFJlc2l6ZSB8fCBvbGRTaXplID09IHNpemUpIHsKICAgICAgICAgcmVzdGFydFRpbWVy
KCk7CiAgICAgICAgIHNldChvYmplY3QsIGlubmVyTWFwLCBsYXllciwgc2l6ZSk7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEludGVycG9sYXRpb25EZWZhdWx0OwogICAg
IH0KICAgICAvLyBJZiB0aGUgdGltZXIgaXMgbm8gbG9uZ2VyIGFjdGl2ZSwgZHJhdyBhdCBoaWdo
IHF1YWxpdHkgYW5kIGRvbid0CiAgICAgLy8gc2V0IHRoZSB0aW1lci4KICAgICBpZiAoIW1fdGlt
ZXIuaXNBY3RpdmUoKSkgewogICAgICAgICByZW1vdmVMYXllcihvYmplY3QsIGlubmVyTWFwLCBs
YXllcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIEludGVycG9sYXRp
b25EZWZhdWx0OwogICAgIH0KICAgICAvLyBUaGlzIG9iamVjdCBoYXMgYmVlbiByZXNpemVkIHRv
IHR3byBkaWZmZXJlbnQgc2l6ZXMgd2hpbGUgdGhlIHRpbWVyCiAgICAgLy8gaXMgYWN0aXZlLCBz
byBkcmF3IGF0IGxvdyBxdWFsaXR5LCBzZXQgdGhlIGZsYWcgZm9yIGFuaW1hdGVkIHJlc2l6ZXMg
YW5kCkBAIC0xODgsNyArMTkzLDcgQEAgYm9vbCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpzaG91
bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFIKICAgICBzZXQo
b2JqZWN0LCBpbm5lck1hcCwgbGF5ZXIsIHNpemUpOwogICAgIG1fYW5pbWF0ZWRSZXNpemVJc0Fj
dGl2ZSA9IHRydWU7CiAgICAgcmVzdGFydFRpbWVyKCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIEludGVycG9sYXRpb25Mb3c7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oCmluZGV4IDVmNzExNjQ3NTEwY2QyMmI5
NjI1OTI2NzM1ODRmODZjMDgxZjU4OWMuLjRmZjg0NmY3YjBlYjQ2ZWUwMzM4MDBmOTU0NDczMmQ0
YTUzZjJjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxp
dHlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0
eUNvbnRyb2xsZXIuaApAQCAtMjYsMjQgKzI2LDI4IEBACiAjaWZuZGVmIEltYWdlUXVhbGl0eUNv
bnRyb2xsZXJfaAogI2RlZmluZSBJbWFnZVF1YWxpdHlDb250cm9sbGVyX2gKIAorI2luY2x1ZGUg
IkdyYXBoaWNzVHlwZXMuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgRnJhbWU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZTsKIGNs
YXNzIExheW91dFNpemU7CiBjbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdDsKIGNsYXNzIFJlbmRl
clZpZXc7CitjbGFzcyBSZW5kZXJTdHlsZTsKIAogY2xhc3MgSW1hZ2VRdWFsaXR5Q29udHJvbGxl
ciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VRdWFsaXR5Q29udHJvbGxlcik7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEltYWdlUXVhbGl0
eUNvbnRyb2xsZXIoY29uc3QgUmVuZGVyVmlldyYpOwogCi0gICAgYm9vbCBzaG91bGRQYWludEF0
TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCosIEltYWdl
JiwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExheW91dFNpemUmKTsKKyAgICBzdGF0aWMgT3B0
aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IGludGVycG9sYXRpb25RdWFsaXR5RnJvbVN0eWxl
KGNvbnN0IFJlbmRlclN0eWxlJik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgY2hvb3NlSW50
ZXJwb2xhdGlvblF1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiwgUmVuZGVyQm94TW9kZWxPYmplY3Qq
LCBJbWFnZSYsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJik7CisKICAgICB2
b2lkIHJlbmRlcmVyV2lsbEJlRGVzdHJveWVkKFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJl
cikgeyByZW1vdmVPYmplY3QoJnJlbmRlcmVyKTsgfQogCiBwcml2YXRlOgpAQCAtNTksOCArNjMs
OCBAQCBwcml2YXRlOgogICAgIGNvbnN0IFJlbmRlclZpZXcmIG1fcmVuZGVyVmlldzsKICAgICBP
YmplY3RMYXllclNpemVNYXAgbV9vYmplY3RMYXllclNpemVNYXA7CiAgICAgVGltZXIgbV90aW1l
cjsKLSAgICBib29sIG1fYW5pbWF0ZWRSZXNpemVJc0FjdGl2ZTsKLSAgICBib29sIG1fbGl2ZVJl
c2l6ZU9wdGltaXphdGlvbklzQWN0aXZlOworICAgIGJvb2wgbV9hbmltYXRlZFJlc2l6ZUlzQWN0
aXZlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbGl2ZVJlc2l6ZU9wdGltaXphdGlvbklzQWN0aXZl
IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA3YzFkMGE3MjEzZWI0MGM2
NWQ5MWYwMDQ0ZTJhZDczMjY4OGQ0ZjNlLi43NDdmNmZmZTc5Nzk3MjMyZjZmZDQ0MDY1NjNlY2U1
MWQ1NThmMDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKQEAgLTE2MSwxMSArMTYxLDYgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpCiAgICAgbGF5ZXIoKS0+YmFja2lu
ZygpLT5zdXNwZW5kQW5pbWF0aW9ucyh0aW1lKTsKIH0KIAotYm9vbCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJ
bWFnZSYgaW1hZ2UsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQot
ewotICAgIHJldHVybiB2aWV3KCkuaW1hZ2VRdWFsaXR5Q29udHJvbGxlcigpLnNob3VsZFBhaW50
QXRMb3dRdWFsaXR5KGNvbnRleHQsIHRoaXMsIGltYWdlLCBsYXllciwgc2l6ZSk7Ci19Ci0KIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpSZW5kZXJCb3hNb2RlbE9iamVjdChFbGVtZW50JiBlbGVtZW50
LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykK
ICAgICA6IFJlbmRlckxheWVyTW9kZWxPYmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIGJh
c2VUeXBlRmxhZ3MgfCBSZW5kZXJCb3hNb2RlbE9iamVjdEZsYWcpCiB7CkBAIC01OTQsNiArNTg5
LDExIEBAIHN0YXRpYyB2b2lkIGFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFJlbmRlclN0eWxlKiBzCiAgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5
U2hhZG93KHNoYWRvd09mZnNldCwgYm94U2hhZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xv
cigpKTsKIH0KIAorSW50ZXJwb2xhdGlvblF1YWxpdHkgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNo
b29zZUludGVycG9sYXRpb25RdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2Um
IGltYWdlLCBjb25zdCB2b2lkKiBsYXllciwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKK3sKKyAg
ICByZXR1cm4gdmlldygpLmltYWdlUXVhbGl0eUNvbnRyb2xsZXIoKS5jaG9vc2VJbnRlcnBvbGF0
aW9uUXVhbGl0eShjb250ZXh0LCB0aGlzLCBpbWFnZSwgbGF5ZXIsIHNpemUpOworfQorCiB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE1hc2tGb3JUZXh0RmlsbEJveChJbWFnZUJ1ZmZl
ciogbWFza0ltYWdlLCBjb25zdCBJbnRSZWN0JiBtYXNrUmVjdCwgSW5saW5lRmxvd0JveCogYm94
LCBjb25zdCBMYXlvdXRSZWN0JiBzY3JvbGxlZFBhaW50UmVjdCkKIHsKICAgICBHcmFwaGljc0Nv
bnRleHQmIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrSW1hZ2UtPmNvbnRleHQoKTsKQEAgLTgzNCw4
ICs4MzQsOSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVu
ZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICBpZiAoIWdlb21ldHJ5
LmRlc3RSZWN0KCkuaXNFbXB0eSgpICYmIChpbWFnZSA9IGJnSW1hZ2UtPmltYWdlKGJhY2tncm91
bmRPYmplY3QgPyBiYWNrZ3JvdW5kT2JqZWN0IDogdGhpcywgZ2VvbWV0cnkudGlsZVNpemUoKSkp
KSB7CiAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IG9wID09IENv
bXBvc2l0ZVNvdXJjZU92ZXIgPyBiZ0xheWVyLT5jb21wb3NpdGUoKSA6IG9wOwogICAgICAgICAg
ICAgY29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhiZ0xheWVyLT5tYXNrU291cmNlVHlwZSgp
ID09IE1hc2tMdW1pbmFuY2UpOwotICAgICAgICAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGlu
ZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsICppbWFnZSwgYmdMYXllciwgZ2Vv
bWV0cnkudGlsZVNpemUoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LmRyYXdUaWxlZEltYWdlKCpp
bWFnZSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2
ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1h
Z2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXItPmJsZW5kTW9kZSgpLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKKworICAg
ICAgICAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVy
cG9sYXRpb25RdWFsaXR5KGNvbnRleHQsICppbWFnZSwgYmdMYXllciwgZ2VvbWV0cnkudGlsZVNp
emUoKSk7CisgICAgICAgICAgICBjb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2VvbWV0
cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBn
ZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1hZ2VQYWludGluZ09w
dGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXItPmJsZW5kTW9kZSgpLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24oKSwgaW50ZXJwb2xhdGlvbikpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IGE1
MDliMzk4MGM0ZTI0OTJlNjZmZWE5MDJhODk4ZDQ0MmFmMjJlMmMuLmI1MzU4MTE4MjkyMDhkNDRi
MDllNjhiYzNhMzlmYWEzNzI5ZmEwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0yNTEsNyArMjUxLDcgQEAgcHJvdGVjdGVkOgog
ICAgIFJvdW5kZWRSZWN0IGJhY2tncm91bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9p
ZGFuY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91
bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCosIGNvbnN0IExheW91dFNpemUmLCBib29s
IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpIGNv
bnN0OwogICAgIExheW91dFJlY3QgYm9yZGVySW5uZXJSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lk
YW5jZShjb25zdCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3Vu
ZEJsZWVkQXZvaWRhbmNlKSBjb25zdDsKIAotICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxp
dHkoR3JhcGhpY3NDb250ZXh0JiwgSW1hZ2UmLCBjb25zdCB2b2lkKiwgY29uc3QgTGF5b3V0U2l6
ZSYpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5
KEdyYXBoaWNzQ29udGV4dCYsIEltYWdlJiwgY29uc3Qgdm9pZCosIGNvbnN0IExheW91dFNpemUm
KTsKIAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250aW51YXRpb24oKSBjb25zdDsKICAg
ICB2b2lkIHNldENvbnRpbnVhdGlvbihSZW5kZXJCb3hNb2RlbE9iamVjdCopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKaW5kZXggZGU5
MTAxNDQ5MDNhNWMwYzM0Mzg0ZjI5ZTk4M2Y1ZGE0NmI4NWI5Mi4uODgwNTYzMTQ4MWNhNjlhMGY3
NDg3YmYxMTM1ZDQzZTY2NWViYTI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCkBAIC0yMTQsMTIgKzIxNCw5IEBAIHZvaWQgUmVu
ZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZShQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0CiAgICAgaWYgKGFsaWduZWRSZWN0LndpZHRoKCkgPD0gMCB8fCBhbGln
bmVkUmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHVzZUxv
d1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgaW1hZ2Us
ICZpbWFnZSwgYWxpZ25lZFJlY3Quc2l6ZSgpKTsKLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bigpKTsKLSNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgIG9yaWVudGF0aW9u
RGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0
aW9uKCkpOwotI2VuZGlmCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGFsaWduZWRSZWN0
LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFs
aXR5U2NhbGluZykpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb24gPSBj
aG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCBpbWFnZSwgJmltYWdlLCBhbGlnbmVk
UmVjdC5zaXplKCkpOworICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlv
bkRlc2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCksIHN0eWxlKCkuaW1h
Z2VPcmllbnRhdGlvbigpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgYWxpZ25lZFJl
Y3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIGludGVycG9s
YXRpb24pKTsKIH0KIAogdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRDb250ZW50cyhQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwCmluZGV4IDM3YjU4
OGZhODRiMzQ1YWIxNDZjYjQ2YzVjYmVjZjIxZGQwYjBjMDIuLmYyZGU3NWQ1MjgzMzFiYTVmZDk1
YWE5YmFiMTQ5NjhlMDFmZmQ0MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJIVE1MQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySFRNTENhbnZhcy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgorI2luY2x1ZGUgIkltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgpA
QCAtODQsOCArODUsOCBAQCB2b2lkIFJlbmRlckhUTUxDYW52YXM6OnBhaW50UmVwbGFjZWQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYQogICAgICAgICAgICAgcGFn
ZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QodGhpcywgaW50ZXJzZWN0aW9uKHJlcGxhY2Vk
Q29udGVudFJlY3QsIGNvbnRlbnRCb3hSZWN0KSk7CiAgICAgfQogCi0gICAgYm9vbCB1c2VMb3dR
dWFsaXR5U2NhbGUgPSBzdHlsZSgpLmltYWdlUmVuZGVyaW5nKCkgPT0gSW1hZ2VSZW5kZXJpbmdD
cmlzcEVkZ2VzIHx8IHN0eWxlKCkuaW1hZ2VSZW5kZXJpbmcoKSA9PSBJbWFnZVJlbmRlcmluZ1Bp
eGVsYXRlZCB8fCBzdHlsZSgpLmltYWdlUmVuZGVyaW5nKCkgPT0gSW1hZ2VSZW5kZXJpbmdPcHRp
bWl6ZVNwZWVkOwotICAgIGNhbnZhc0VsZW1lbnQoKS5wYWludChjb250ZXh0LCByZXBsYWNlZENv
bnRlbnRSZWN0LCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5
TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uTWFpbnRhaW5lcihjb250ZXh0LCBJbWFnZVF1YWxpdHlD
b250cm9sbGVyOjppbnRlcnBvbGF0aW9uUXVhbGl0eUZyb21TdHlsZShzdHlsZSgpKSk7CisgICAg
Y2FudmFzRWxlbWVudCgpLnBhaW50KGNvbnRleHQsIHJlcGxhY2VkQ29udGVudFJlY3QpOwogfQog
CiB2b2lkIFJlbmRlckhUTUxDYW52YXM6OmNhbnZhc1NpemVDaGFuZ2VkKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IGMwNjhlYWIzNzY5ZDM3MjY2MzZhZmEy
NWU5NDVkZmVkMDQxNzUxOGYuLjYwMjcwYWU1ZTdkZGY2ZDI5YjdiZGVmMjYwOGM5MTMzN2UyODY1
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNTQ3LDE0
ICs1NDcsMTMgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIAogICAgIEhUTUxJbWFnZUVsZW1l
bnQqIGltYWdlRWxlbWVudCA9IGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkgPyBkb3du
Y2FzdDxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpIDogbnVsbHB0cjsKICAgICBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IGltYWdlRWxlbWVudCA/IGltYWdlRWxlbWVu
dC0+Y29tcG9zaXRlT3BlcmF0b3IoKSA6IENvbXBvc2l0ZVNvdXJjZU92ZXI7CisKKyAgICAvLyBG
SVhNRTogRG9jdW1lbnQgd2hlbiBpbWFnZSAhPSBpbWcuZ2V0KCkuCiAgICAgSW1hZ2UqIGltYWdl
ID0gaW1hZ2VSZXNvdXJjZSgpLmltYWdlKCkuZ2V0KCk7Ci0gICAgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGluZyA9IGltYWdlICYmIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsICppbWFn
ZSwgaW1hZ2UsIExheW91dFNpemUocmVjdC5zaXplKCkpKTsKLSAgICBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihzaG91bGRSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbigpKTsKLSNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgIG9yaWVu
dGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9y
aWVudGF0aW9uKCkpOwotI2VuZGlmCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoKmltZywgcmVjdCwK
LSAgICAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZU5vcm1hbCwgb3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsK
KyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uID0gaW1hZ2UgPyBjaG9vc2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCAqaW1hZ2UsIGltYWdlLCBMYXlvdXRTaXplKHJl
Y3Quc2l6ZSgpKSkgOiBJbnRlcnBvbGF0aW9uRGVmYXVsdDsKKworICAgIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHNob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uKCksIHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICBjb250ZXh0LmRy
YXdJbWFnZSgqaW1nLCByZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlTm9ybWFsLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBpbnRlcnBvbGF0aW9u
KSk7CiB9CiAKIGJvb2wgUmVuZGVySW1hZ2U6OmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFj
a2dyb3VuZChjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCopIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAppbmRl
eCA5OWM5NjdhNDc1NzkzYTUzZWVkNDFlZTJlODVlYTVmMTZhM2E5NWFjLi44ZTEwMGViNWY0NDQ1
YzgyMTNjNzcyMDBlZDdlZTI4MzJiNWJlMDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKQEAgLTEzNSwxMyArMTM1LDkg
QEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG8KICAgICBpZiAoYWxpZ25lZFJlY3Qud2lkdGgoKSA8
PSAwIHx8IGFsaWduZWRSZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAg
IGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShjb250
ZXh0LCAqaW1hZ2UsIGltYWdlLCBhbGlnbmVkUmVjdC5zaXplKCkpOwotCi0gICAgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdElt
YWdlT3JpZW50YXRpb24oKSk7Ci0jaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAg
ICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCku
aW1hZ2VPcmllbnRhdGlvbigpKTsKLSNlbmRpZgotICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFn
ZSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRp
b24sIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50
ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsICppbWFnZSwg
aW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7CisgICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24o
KSwgc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCpp
bWFnZSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3Jp
cHRpb24sIGludGVycG9sYXRpb24pKTsKIH0KIAogQ3Vyc29yRGlyZWN0aXZlIFJlbmRlclNuYXBz
aG90dGVkUGx1Z0luOjpnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXJzb3Im
IG92ZXJyaWRlQ3Vyc29yKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaAppbmRleCBhZjY2NmE0ZDZiYzM0OTY0MzRiNTE0M2Q1N2NkM2FhY2MzODcz
ZDc0Li5hZGYxMDVkNTlkYWY4YTZiMDBhYmE3YWM5N2VmMmVkZmYzZjRhOTE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMTE2Myw5ICsxMTYz
LDE0IEBAIHB1YmxpYzoKICAgICBib29sIGlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSBjb25z
dCB7IHJldHVybiBXZWJDb3JlOjppc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKHdyaXRpbmdNb2Rl
KCkpOyB9CiAgICAgYm9vbCBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIFdlYkNvcmU6OmlzRmxpcHBlZFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKCkpOyB9CiAKKyAg
ICBJbWFnZU9yaWVudGF0aW9uRW51bSBpbWFnZU9yaWVudGF0aW9uKCkgY29uc3QKKyAgICB7CiAj
aWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICBJbWFnZU9yaWVudGF0aW9uRW51
bSBpbWFnZU9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SW1hZ2VPcmll
bnRhdGlvbkVudW0+KHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlT3JpZW50YXRpb24pOyB9Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbWFnZU9yaWVudGF0aW9uRW51bT4ocmFyZUluaGVy
aXRlZERhdGEtPm1faW1hZ2VPcmllbnRhdGlvbik7CisjZWxzZQorICAgICAgICByZXR1cm4gRGVm
YXVsdEltYWdlT3JpZW50YXRpb247CiAjZW5kaWYKKyAgICB9CiAKICAgICBFSW1hZ2VSZW5kZXJp
bmcgaW1hZ2VSZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFSW1hZ2VSZW5k
ZXJpbmc+KHJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVuZGVyaW5nKTsgfQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NjlmZDQ3YzQ5ODk1NzE4ODgzZDI4N2JiMzE3ZTJlMWUzNTUzMzI5ZS4uMzg0YmMwNDVjZGE5ZmNk
ZjQ5OTE1OWY5ZTJjMDAzODE4MGI4YTA3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTAx
LTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIGlt
YWdlLXJlbmRlcmluZzogLXdlYmtpdC1vcHRpbWl6ZS1jb250cmFzdCBub3Qgd29ya2luZyBmb3Ig
YmFja2dyb3VuZCBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk3OTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgKiBmYXN0L2ltYWdlcy9pbWFnZS1yZW5kZXJpbmctaW50ZXJwb2xhdGlvbi1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9pbWFnZS1yZW5kZXJpbmctaW50
ZXJwb2xhdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxNi0wMS0yOSAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjogc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL2luZGV4LTMuaHRtbCBmYWlscy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL2ltYWdlLXJlbmRlcmluZy1pbnRlcnBvbGF0aW9uLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1yZW5kZXJpbmctaW50ZXJwb2xhdGlvbi1leHBlY3Rl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhjYTZmYzY1Zjk1NjZjZTc2NzIzMjcwYTRjNzY4ZWVmYzI4OTM4
M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1yZW5k
ZXJpbmctaW50ZXJwb2xhdGlvbi1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIC5jbGlwcGVy
IHsKKyAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIHdpZHRoOiAx
MDBweDsKKyAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgICAgICAgICBib3JkZXI6
IDFweCBzb2xpZCBibGFjazsKKyAgICAgICAgfQorICAgICAgICBpbWcgeworICAgICAgICAgICAg
aGVpZ2h0OiAxMTAwcHg7CisgICAgICAgICAgICB3aWR0aDogMTEwMHB4OworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICAuYmFja2dyb3VuZGVyIHsKKyAgICAgICAgICAgIGhlaWdodDogMTEw
MHB4OworICAgICAgICAgICAgd2lkdGg6IDExMDBweDsKKyAgICAgICAgICAgIGJhY2tncm91bmQt
aW1hZ2U6IHVybCgncmVzb3VyY2VzL2dyaWQtc21hbGwucG5nJyk7CisgICAgICAgICAgICBiYWNr
Z3JvdW5kLXNpemU6IDEwMCU7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+CisKKzxkaXYgY2xhc3M9ImNsaXBwZXIiPgorICAgIDxpbWcgc3JjPSJyZXNvdXJjZXMvZ3Jp
ZC1zbWFsbC5wbmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+Cis8L2Rpdj4KKworPGRpdiBjbGFz
cz0iY2xpcHBlciI+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2xpcHBlciI+Cis8L2Rpdj4KKwor
PGRpdiBjbGFzcz0iY2xpcHBlciI+CisgICAgPGRpdiBjbGFzcz0iYmFja2dyb3VuZGVyIj48L2Rp
dj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjbGlwcGVyIj4KKzwvZGl2PgorCis8ZGl2IGNsYXNz
PSJjbGlwcGVyIj4KKzwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1yZW5kZXJpbmctaW50ZXJwb2xhdGlvbi5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2UtcmVuZGVyaW5nLWludGVycG9sYXRpb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xZGZkN2RhY2FjMDAyMzQ5NzYzZTdiNzljMDBhMTU2YzQwZmQzOWNkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2UtcmVuZGVyaW5n
LWludGVycG9sYXRpb24uaHRtbApAQCAtMCwwICsxLDU0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICAuY2xpcHBlciB7CisgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAg
ICAgICBvdmVyZmxvdzogaGlkZGVuOworICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxh
Y2s7CisgICAgICAgIH0KKyAgICAgICAgaW1nIHsKKyAgICAgICAgICAgIGltYWdlLXJlbmRlcmlu
ZzogcGl4ZWxhdGVkOworICAgICAgICAgICAgaGVpZ2h0OiAxMTAwcHg7CisgICAgICAgICAgICB3
aWR0aDogMTEwMHB4OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAuYmFja2dyb3VuZGVy
IHsKKyAgICAgICAgICAgIGhlaWdodDogMTEwMHB4OworICAgICAgICAgICAgd2lkdGg6IDExMDBw
eDsKKyAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgncmVzb3VyY2VzL2dyaWQtc21h
bGwucG5nJyk7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7CisgICAgICAgIH0K
KyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzxkaXYgY2xhc3M9ImNsaXBwZXIiPgor
ICAgIDxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JpZC1zbWFsbC5wbmciIHdpZHRoPSIxMSIgaGVpZ2h0
PSIxMSIgc3R5bGU9ImltYWdlLXJlbmRlcmluZzogYXV0bzsiPgorPC9kaXY+CisKKzxkaXYgY2xh
c3M9ImNsaXBwZXIiPgorICAgIDxpbWcgc3JjPSJyZXNvdXJjZXMvZ3JpZC1zbWFsbC5wbmciIHdp
ZHRoPSIxMSIgaGVpZ2h0PSIxMSIgc3R5bGU9ImltYWdlLXJlbmRlcmluZzogcGl4ZWxhdGVkOyI+
Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2xpcHBlciI+CisgICAgPGltZyBzcmM9InJlc291cmNl
cy9ncmlkLXNtYWxsLnBuZyIgd2lkdGg9IjExIiBoZWlnaHQ9IjExIiBzdHlsZT0iaW1hZ2UtcmVu
ZGVyaW5nOiBjcmlzcC1lZGdlczsiPgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNsaXBwZXIiPgor
ICAgIDxkaXYgY2xhc3M9ImJhY2tncm91bmRlciIgc3R5bGU9ImltYWdlLXJlbmRlcmluZzogYXV0
bzsiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNsaXBwZXIiPgorICAgIDxkaXYgY2xh
c3M9ImJhY2tncm91bmRlciIgc3R5bGU9ImltYWdlLXJlbmRlcmluZzogcGl4ZWxhdGVkOyI+PC9k
aXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2xpcHBlciI+CisgICAgPGRpdiBjbGFzcz0iYmFj
a2dyb3VuZGVyIiBzdHlsZT0iaW1hZ2UtcmVuZGVyaW5nOiBjcmlzcC1lZGdlczsiPjwvZGl2Pgor
PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>