<?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>238851</bug_id>
          
          <creation_ts>2022-04-05 16:40:56 -0700</creation_ts>
          <short_desc>Unify the two ImageBuffer::create() functions, passing RenderingPurpose everywhere</short_desc>
          <delta_ts>2022-04-08 14:16:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1858648</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-04-05 16:40:56 -0700</bug_when>
    <thetext>Unify the two ImageBuffer::create() functions, passing RenderingPurpose everywhere</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858649</commentid>
    <comment_count>1</comment_count>
      <attachid>456766</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-04-05 16:47:07 -0700</bug_when>
    <thetext>Created attachment 456766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858651</commentid>
    <comment_count>2</comment_count>
      <attachid>456768</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-04-05 16:52:34 -0700</bug_when>
    <thetext>Created attachment 456768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858661</commentid>
    <comment_count>3</comment_count>
      <attachid>456768</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-05 17:24:56 -0700</bug_when>
    <thetext>Comment on attachment 456768
Patch

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

&gt; Source/WebCore/platform/graphics/ImageBuffer.h:67
&gt; +    WEBCORE_EXPORT static RefPtr&lt;ImageBuffer&gt; create(const FloatSize&amp;, OptionSet&lt;ImageBufferOptions&gt;, RenderingPurpose, float resolutionScale, const DestinationColorSpace&amp;, PixelFormat, const CreationContext&amp; = { });

I think ImageBufferOptions can be moved to the end just before CreationContext and it can have a default value { }. So many callers do not have to pass { } for it.

&gt; Source/WebCore/platform/graphics/RenderingMode.h:47
&gt; +enum class ImageBufferOptions : uint8_t {

Should this be moved to ImageBuffer.h since it is only used for ImageBuffer?

&gt; Source/WebCore/platform/graphics/filters/software/FETileSoftwareApplier.cpp:54
&gt; +    OptionSet&lt;ImageBufferOptions&gt; bufferOptions;
&gt; +    if (filter.renderingMode() == RenderingMode::Accelerated)
&gt; +        bufferOptions.add(ImageBufferOptions::Accelerated);

This code is repeated many times in the patch. Can&apos;t we add an inline function in RenderingMode.h

inline OptionSet&lt;ImageBufferOptions&gt; bufferOptions(RenderingMode renderringMode)
{

}

Or something else. And use this inline directly in the call to ImageBuffer::create(tileRect.size(), bufferOptions(filter.renderingMode()), ...).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858683</commentid>
    <comment_count>4</comment_count>
      <attachid>456778</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-04-05 20:50:20 -0700</bug_when>
    <thetext>Created attachment 456778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858684</commentid>
    <comment_count>5</comment_count>
      <attachid>456779</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-04-05 21:01:12 -0700</bug_when>
    <thetext>Created attachment 456779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858836</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-06 08:23:50 -0700</bug_when>
    <thetext>Committed r292469 (249320@main): &lt;https://commits.webkit.org/249320@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456779.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858837</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-06 08:24:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/91354760&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859884</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-08 14:16:42 -0700</bug_when>
    <thetext>There’s a &quot;RendingMode&quot; typo in here.

I suggest grepping for &quot;endingMode&quot;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456766</attachid>
            <date>2022-04-05 16:47:07 -0700</date>
            <delta_ts>2022-04-05 17:20:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238851-20220405164707.patch</filename>
            <type>text/plain</type>
            <size>55361</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI2NWUxZGNmY2YzZTk2
MTk2NDgwMTc4ZWMyNDZkNTY2ZDUwMmVjNi4uOWQ1ZTE1NDQwZWE4NDkwZTQyMzcyOTgyYTQ0ZDAz
MTM5ZTgyYzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIyLTA0LTA1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVuaWZ5IHRoZSB0
d28gSW1hZ2VCdWZmZXI6OmNyZWF0ZSgpIGZ1bmN0aW9ucywgcGFzc2luZyBSZW5kZXJpbmdQdXJw
b3NlIGV2ZXJ5d2hlcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzODg1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEkgbmVlZCB0byBleHRlbmQgUmVuZGVyaW5nUHVycG9zZSBmbGFncyB0byBkaXN0aW5n
dWlzaCBsYXllciBiYWNraW5nIHN0b3JlIGJ1ZmZlcnMgZnJvbQorICAgICAgICBvdGhlciBraW5k
cyBvZiBidWZmZXJzLiBCZWZvcmUgZG9pbmcgc28sIGNvbGxhcHNlIHRoZSB0d28gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZSgpIGZ1bmN0aW9ucworICAgICAgICB0b2dldGhlciBieSBjb21iaW5pbmcgUmVu
ZGVyaW5nTW9kZSBhbmQgU2hvdWxkVXNlRGlzcGxheUxpc3QgaW50byBPcHRpb25TZXQ8SW1hZ2VC
dWZmZXJPcHRpb25zPiwKKyAgICAgICAgYW5kIHBhc3NpbmcgUmVuZGVyaW5nUHVycG9zZSBldmVy
eXdoZXJlLgorICAgICAgICAKKyAgICAgICAgQWx3YXlzIHBhc3NpbmcgUmVuZGVyaW5nUHVycG9z
ZSBpcyByZXZlYWxpbmcsIGJlY2F1c2UgaXQgZmluZHMgY2FsbCBzaXRlcyBpbiB0aGUKKyAgICAg
ICAgd2ViIHByb2Nlc3MgdGhhdCBjYW4gdHJpZ2dlciBhY2NlbGVyYXRlZCBidWZmZXJzIChlLmcu
IHdlYmtpdC5vcmcvYi8yMzg4NDYpLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRl
cjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXJ0d29ya0ltYWdlTG9hZGVy
Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAgICAg
ICAqIGh0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9t
UGFpbnRDYW52YXM6OmNvcGllZEltYWdlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVh
dGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZUJ1ZmZlckZvclBh
aW50aW5nIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICogaHRt
bC9PZmZzY3JlZW5DYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFz
Ojp0cmFuc2ZlclRvSW1hZ2VCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2Fu
dmFzOjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvSW1h
Z2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0
bWFwUmVuZGVyaW5nQ29udGV4dDo6c2V0T3V0cHV0Qml0bWFwKToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVy
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uSW1hZ2UpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEpOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hv
dHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcCk6
CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnBy
ZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6V1RGX1JF
UVVJUkVTX0xPQ0spOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFk
b3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJh
d1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRy
YXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6
ZHJhd1NoYWRvd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXIgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVySW1hZ2U6OmltYWdlQnVmZmVyRnJvbVBpeGVsQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmdldENvbnZlcnRlZFBpeGVsQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5IGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjppbWFnZUJ1ZmZl
ciBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dCk6CisgICAgICAg
ICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlt
YWdlQnVmZmVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKwogMjAyMi0wNC0wNSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE1hcmsgU3RyaW5nKGNvbnN0IGNo
YXIqKSBjb25zdHJ1Y3RvciBhcyBleHBsaWNpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IGQwZDBjZGE5ODU2OGQyYmIxYTAxMzUyODJhYWUxZGVjN2JmNDc4YWQuLmZkYWQ5MjdmODNl
ZGRiMzkzZDc4YWZiYTNkNDU5YWQzYjgzMDdjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMi0wNC0wNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KKworICAgICAgICBVbmlmeSB0aGUgdHdvIEltYWdlQnVmZmVyOjpjcmVh
dGUoKSBmdW5jdGlvbnMsIHBhc3NpbmcgUmVuZGVyaW5nUHVycG9zZSBldmVyeXdoZXJlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg4NTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJIG5lZWQgdG8gZXh0
ZW5kIFJlbmRlcmluZ1B1cnBvc2UgZmxhZ3MgdG8gZGlzdGluZ3Vpc2ggbGF5ZXIgYmFja2luZyBz
dG9yZSBidWZmZXJzIGZyb20KKyAgICAgICAgb3RoZXIga2luZHMgb2YgYnVmZmVycy4gQmVmb3Jl
IGRvaW5nIHNvLCBjb2xsYXBzZSB0aGUgdHdvIEltYWdlQnVmZmVyOjpjcmVhdGUoKSBmdW5jdGlv
bnMKKyAgICAgICAgdG9nZXRoZXIgYnkgY29tYmluaW5nIFJlbmRlcmluZ01vZGUgYW5kIFNob3Vs
ZFVzZURpc3BsYXlMaXN0IGludG8gT3B0aW9uU2V0PEltYWdlQnVmZmVyT3B0aW9ucz4sCisgICAg
ICAgIGFuZCBwYXNzaW5nIFJlbmRlcmluZ1B1cnBvc2UgZXZlcnl3aGVyZS4KKyAgICAgICAgCisg
ICAgICAgIEFsd2F5cyBwYXNzaW5nIFJlbmRlcmluZ1B1cnBvc2UgaXMgcmV2ZWFsaW5nLCBiZWNh
dXNlIGl0IGZpbmRzIGNhbGwgc2l0ZXMgaW4gdGhlCisgICAgICAgIHdlYiBwcm9jZXNzIHRoYXQg
Y2FuIHRyaWdnZXIgYWNjZWxlcmF0ZWQgYnVmZmVycyAoZS5nLiB3ZWJraXQub3JnL2IvMjM4ODQ2
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tOgor
ICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2
aWNlUGlja2VySXRlbSk6CisKIDIwMjItMDQtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBNYXJrIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgYXMg
ZXhwbGljaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHAKaW5kZXggYjY2YjViZjE2YWI3MWUyMDY0ZmZmYjc4MjBhYzMxNDI2ODAxZGIxNS4uYmFlZWU4
ODU4MmUwZTM2NjE2NmMzYTliNjBhNzhhYjVhYTM4ODMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lk
IENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVy
OjpzYW5pdGl6ZURhdGFJZk5lZQogCiAgICAgICAgIGF1dG8gYml0bWFwSW1hZ2UgPSBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKCk7CiAgICAgICAgIGJpdG1hcEltYWdlLT5zZXREYXRhKFdURk1vdmUoYnVm
ZmVyVG9TYW5pdGl6ZSksIHRydWUpOwotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0
bWFwSW1hZ2UtPnNpemUoKSwgeyB9LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgMSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAg
ICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgICAgIG1fZGF0YSA9IHsgbnVsbFN0cmlu
ZygpIH07CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCmluZGV4IDg3NGFhN2YwYjE4ZjBl
ZTc1ODgwYmE1ZjVlZjY3ZDQ3YmZjMmIyYjQuLmRkMjFhNGNlNTYzM2ZkNGE0ODM5MDRlYTI4MmIz
MjI2MGVjYTY5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgQXJ0d29ya0lt
YWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IE5ldHdvcmtMCiAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2Fu
aXRpemUgPSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgYXV0byBiaXRtYXBJ
bWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0YShX
VEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShi
aXRtYXBJbWFnZS0+c2l6ZSgpLCB7IH0sIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgIG1fY2FsbGJhY2sobnVsbHB0cik7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcApp
bmRleCA1ZDdhNTUxZWViM2VmZjQwMzY2NzY3NDA1N2M4OGU1MTVhMTFmOTVlLi4wMTY1MDcyMzk1
ZDUzOWE3MzY1NzVhNTQxMTYzMzNmOWQ3ODAzNWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZpbHRlckltYWdlVmFsdWUuY3BwCkBAIC0xMTQsOSArMTE0LDExIEBAIFJlZlB0cjxJbWFnZT4g
Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0
IEZsb2F0U2l6CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbElt
YWdlKCk7CiAKLSAgICAvLyBUcmFuc2Zvcm0gSW1hZ2UgaW50byBJbWFnZUJ1ZmZlci4KICAgICBh
dXRvIHJlbmRlcmluZ01vZGUgPSByZW5kZXJlci5wYWdlKCkuYWNjZWxlcmF0ZWRGaWx0ZXJzRW5h
YmxlZCgpID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkOwotICAgIGF1dG8gc291cmNlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVy
cG9zZTo6RE9NLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4LCB7IHJlbmRlcmVyLmhvc3RXaW5kb3coKSB9KTsKKyAgICBPcHRpb25TZXQ8SW1hZ2VC
dWZmZXJPcHRpb25zPiBidWZmZXJPcHRpb25zOworICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJl
bmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQorICAgICAgICBidWZmZXJPcHRpb25zLmFkZChJbWFn
ZUJ1ZmZlck9wdGlvbnM6OkFjY2VsZXJhdGVkKTsKKyAgICBhdXRvIHNvdXJjZUltYWdlID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaXplLCBidWZmZXJPcHRpb25zLCBSZW5kZXJpbmdQdXJwb3NlOjpE
T00sIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgs
IHsgcmVuZGVyZXIuaG9zdFdpbmRvdygpIH0pOwogICAgIGlmICghc291cmNlSW1hZ2UpCiAgICAg
ICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3Vz
dG9tUGFpbnRDYW52YXMuY3BwCmluZGV4IGEyNDBiMDhkNWEyMzdmZDY4ODI0ZTdkODgwODFjOGI2
YWE5NjcwNWQuLmIxNzIxMWZmZTBjMTQxNDllYTgxNzdmZjZiMzQ2MjE4NmU4YzFhYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCkBAIC05Miw3ICs5Miw3IEBA
IEltYWdlKiBDdXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UoKSBjb25zdAogICAgIGlmICgh
d2lkdGgoKSB8fCAhaGVpZ2h0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbV9j
b3BpZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgbV9jb3BpZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUoKSwgeyB9LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgMSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7
CiAgICAgaWYgKCFtX2NvcGllZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggOTI5ODU4Njk4NDk0
YmFjMWFkMDE2NTc3ODFhMjA2MDcyYWFhMTBhNy4uYjhmYzk4NzIzYmMzOGE5ZjE1NTg5MWI4ZDUw
MWI4NTRkNDMzYjg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAKQEAgLTg4Niw5ICs4ODYsMTIgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoKSBjb25zdAogCiAgICAgYXV0byBob3N0V2luZG93ID0gKGRvY3VtZW50KCkudmll
dygpICYmIGRvY3VtZW50KCkudmlldygpLT5yb290KCkpID8gZG9jdW1lbnQoKS52aWV3KCktPnJv
b3QoKS0+aG9zdFdpbmRvdygpIDogbnVsbHB0cjsKIAotICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9
IHNob3VsZEFjY2VsZXJhdGUoYXJlYSkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CisgICAgT3B0aW9uU2V0PEltYWdlQnVmZmVyT3B0
aW9ucz4gYnVmZmVyT3B0aW9uczsKKyAgICBpZiAoc2hvdWxkQWNjZWxlcmF0ZShhcmVhKSkKKyAg
ICAgICAgYnVmZmVyT3B0aW9ucy5hZGQoSW1hZ2VCdWZmZXJPcHRpb25zOjpBY2NlbGVyYXRlZCk7
CiAgICAgLy8gRklYTUU6IEFkZCBhIG5ldyBzZXR0aW5nIGZvciBEaXNwbGF5TGlzdCBkcmF3aW5n
IG9uIGNhbnZhcy4KLSAgICBhdXRvIHVzZURpc3BsYXlMaXN0ID0gbV91c2VzRGlzcGxheUxpc3RE
cmF3aW5nLnZhbHVlX29yKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERyYXdpbmdF
bmFibGVkKCkpID8gU2hvdWxkVXNlRGlzcGxheUxpc3Q6OlllcyA6IFNob3VsZFVzZURpc3BsYXlM
aXN0OjpObzsKKyAgICBpZiAobV91c2VzRGlzcGxheUxpc3REcmF3aW5nLnZhbHVlX29yKGRvY3Vt
ZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKCkpKQorICAgICAgICBi
dWZmZXJPcHRpb25zLmFkZChJbWFnZUJ1ZmZlck9wdGlvbnM6OlVzZURpc3BsYXlMaXN0KTsKIAog
ICAgIGF1dG8gW2NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0XSA9IFsmXSB7CiAgICAgICAgIGlmICht
X2NvbnRleHQpCkBAIC04OTYsNyArODk5LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogICAgICAgICByZXR1cm4gc3RkOjpwYWlyIHsgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCB9OwogICAgIH0oKTsK
IAotICAgIHNldEltYWdlQnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCByZW5kZXJp
bmdNb2RlLCB1c2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCAxLCBjb2xv
clNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdykpOworICAgIHNldEltYWdlQnVmZmVyKElt
YWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBidWZmZXJPcHRpb25zLCBSZW5kZXJpbmdQdXJwb3Nl
OjpDYW52YXMsIDEsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBob3N0V2luZG93KSk7CiAKICNp
ZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogICAgIGlmIChtX2NvbnRleHQg
JiYgbV9jb250ZXh0LT5pczJkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwCmluZGV4IGViMzg2ZWZiMzMwZDYzODU4OGViYzYyMDc4MzAxZDU5ZDU0OTc1MGMuLjFl
YzEzZDFiODZmOTIzMTIzOTY2YjZmYzZlMDJhMmVkMTFhOGFkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMjk3LDggKzI5NywxNSBAQCBzdGQ6Om9wdGlv
bmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gSFRNTFZpZGVvRWxlbWVudDo6Y29sb3JTcGFjZSgp
IGNvbnN0CiBSZWZQdHI8SW1hZ2VCdWZmZXI+IEhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZUJ1ZmZl
ckZvclBhaW50aW5nKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewogICAgIGF1dG8qIGhvc3RXaW5kb3cgPSBkb2N1bWVu
dCgpLnZpZXcoKSAmJiBkb2N1bWVudCgpLnZpZXcoKS0+cm9vdCgpID8gZG9jdW1lbnQoKS52aWV3
KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpIDogbnVsbHB0cjsKLSAgICBhdXRvIHNob3VsZFVzZURp
c3BsYXlMaXN0ID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpLmRpc3BsYXlMaXN0RHJhd2luZ0VuYWJs
ZWQoKSA/IFNob3VsZFVzZURpc3BsYXlMaXN0OjpZZXMgOiBTaG91bGRVc2VEaXNwbGF5TGlzdDo6
Tm87Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwg
c2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2U6Ok1lZGlhUGFpbnRpbmcsIDEs
IGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBob3N0V2luZG93KTsKKworICAgIE9wdGlvblNldDxJ
bWFnZUJ1ZmZlck9wdGlvbnM+IGJ1ZmZlck9wdGlvbnM7CisgICAgaWYgKHJlbmRlcmluZ01vZGUg
PT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCisgICAgICAgIGJ1ZmZlck9wdGlvbnMuYWRk
KEltYWdlQnVmZmVyT3B0aW9uczo6QWNjZWxlcmF0ZWQpOworCisgICAgaWYgKGRvY3VtZW50KCku
c2V0dGluZ3MoKS5kaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKCkpCisgICAgICAgIGJ1ZmZlck9w
dGlvbnMuYWRkKEltYWdlQnVmZmVyT3B0aW9uczo6VXNlRGlzcGxheUxpc3QpOworCisgICAgcmV0
dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgYnVmZmVyT3B0aW9ucywgUmVuZGVyaW5nUHVy
cG9zZTo6TWVkaWFQYWludGluZywgMSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5k
b3cpOwogfQogCiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggYWNjZWFhNTNiY2JjZjM4MzdiZDRi
OTkyZDZlMmFhNTQ3OTQyOTA5ZC4uYTM2NGMwZTBmY2FkMzk1YTBmMWY4YTkzZjFjNTcwYTY4Mjg4
MjEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTg5LDE2ICs4OSwyMCBA
QCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcAogI2VuZGlmCiAgICAgfQogCisgICAgT3B0aW9uU2V0
PEltYWdlQnVmZmVyT3B0aW9ucz4gYnVmZmVyT3B0aW9uczsKKyAgICBpZiAocmVuZGVyaW5nTW9k
ZSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKKyAgICAgICAgYnVmZmVyT3B0aW9ucy5h
ZGQoSW1hZ2VCdWZmZXJPcHRpb25zOjpBY2NlbGVyYXRlZCk7CisKICAgICBpZiAoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBk
b3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgICAgIGlmIChk
b2N1bWVudC52aWV3KCkgJiYgZG9jdW1lbnQudmlldygpLT5yb290KCkpIHsKICAgICAgICAgICAg
IGF1dG8gaG9zdFdpbmRvdyA9IGRvY3VtZW50LnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCk7
Ci0gICAgICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdN
b2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywg
cmVzb2x1dGlvblNjYWxlLCAqaW1hZ2VCdWZmZXJDb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdS
QTgsIGhvc3RXaW5kb3cpOworICAgICAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSwgYnVmZmVyT3B0aW9ucywgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9u
U2NhbGUsICppbWFnZUJ1ZmZlckNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdp
bmRvdyk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBGSVhNRSA8aHR0cHM6Ly93ZWJraXQu
b3JnL2IvMjE4NDgyPiBFbmFibGUgd29ya2VyIGJhc2VkIEltYWdlQml0bWFwIGFuZCBPZmZzY3Jl
ZW5DYW52YXMgZHJhd2luZyB0byB1c2UgR1BVIFByb2Nlc3MgcmVuZGVyaW5nCi0gICAgcmV0dXJu
IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxl
LCAqaW1hZ2VCdWZmZXJDb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIHJldHVy
biBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIGJ1ZmZlck9wdGlvbnMsIFJlbmRlcmluZ1B1cnBv
c2U6OlVuc3BlY2lmaWVkLCByZXNvbHV0aW9uU2NhbGUsICppbWFnZUJ1ZmZlckNvbG9yU3BhY2Us
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiB9CiAKIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21p
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1hZ2VC
aXRtYXA6OlNvdXJjZSYmIHNvdXJjZSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgSW1h
Z2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5D
YW52YXMuY3BwCmluZGV4IDg4ZDlmNzhjOWE1YzljYmIyMjA4Y2RjNzg5NDExZGU4Mjc2NmMzMGEu
LjcyNjFiYTE4OTdmYjcxMWQ3NjI5NDU5MmY2MzI3ZjE3OTBmOGY2MzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCBFeGNlcHRpb25P
cjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJp
dG1hcCgpCiAgICAgICAgICAgICByZXR1cm4geyBSZWZQdHI8SW1hZ2VCaXRtYXA+IHsgbnVsbHB0
ciB9IH07CiAKICAgICAgICAgaWYgKCFtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlcikgewotICAgICAg
ICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKmNhbnZh
c0Jhc2VTY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCwgbV9jb250ZXh0LT5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgYXV0byBi
dWZmZXIgPSBJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKmNhbnZhc0Jhc2VTY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIHNpemUoKSwgeyB9LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNp
ZmllZCwgbV9jb250ZXh0LT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgcmV0dXJuIHsgSW1h
Z2VCaXRtYXA6OmNyZWF0ZShJbWFnZUJpdG1hcEJhY2tpbmcoV1RGTW92ZShidWZmZXIpKSkgfTsK
ICAgICAgICAgfQogCkBAIC00OTIsNyArNDkyLDcgQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6OmNy
ZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBjb2xv
clNwYWNlID0gbV9jb250ZXh0ID8gbV9jb250ZXh0LT5jb2xvclNwYWNlKCkgOiBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKTsKLSAgICBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJpdG1hcDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoKmNhbnZhc0Jhc2VTY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNpemUo
KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgY29sb3JTcGFjZSkpOworICAgIHNldElt
YWdlQnVmZmVyKEltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcigqY2FudmFzQmFzZVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgc2l6ZSgpLCB7IH0sIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3Bl
Y2lmaWVkLCBjb2xvclNwYWNlKSk7CiB9CiAKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gT2Zmc2NyZWVu
Q2FudmFzOjp0YWtlSW1hZ2VCdWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXgg
ZTQ2ZGRjYWY2YWYzNWMwNDJiZmZkNDhmYmYzYmVmYWJmMGViZTlkNS4uODk2MTYxODM4YzliM2Jm
NDc4YWJlMTQ2ZjUyZjVlZjE0ZGJkMTIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC05NCw4
ICs5NCwxMyBAQCB2b2lkIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDo6c2V0T3V0cHV0Qml0
bWFwKFJlZlB0cjxJbWFnZUJpdG1hcD4gaW1hZ2VCaXRtYQogICAgICAgICAvLyBjYW4gbmV2ZXIg
YmUgY2hhbmdlZD8gV291bGRuJ3QgYSAxeDEgYnVmZmVyIGdpdmUgdGhlIHNhbWUgcmVuZGVyaW5n
PyBUaGUKICAgICAgICAgLy8gb25seSByZWFzb24gSSBjYW4gdGhpbmsgb2YgaXMgdG9EYXRhVVJM
KCksIGJ1dCB0aGF0IGRvZXNuJ3Qgc2VlbSBsaWtlCiAgICAgICAgIC8vIGEgZ29vZCBlbm91Z2gg
YXJndW1lbnQgdG8gd2FzdGUgbWVtb3J5LgorICAgICAgICBPcHRpb25TZXQ8SW1hZ2VCdWZmZXJP
cHRpb25zPiBidWZmZXJPcHRpb25zOworICAgICAgICBpZiAoaXNBY2NlbGVyYXRlZCgpKQorICAg
ICAgICAgICAgYnVmZmVyT3B0aW9ucy5hZGQoSW1hZ2VCdWZmZXJPcHRpb25zOjpBY2NlbGVyYXRl
ZCk7CiAKLSAgICAgICAgY2FudmFzKCktPnNldEltYWdlQnVmZmVyQW5kTWFya0RpcnR5KEltYWdl
QnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVp
Z2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRz
IHRvIHVzZSBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMgdG8gYXZvaWQgYWNjZWxlcmF0ZWQgYnVm
ZmVycyBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzICh3ZWJraXQub3JnL2IvMjM4ODQ2KS4KKyAg
ICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShjYW52YXMo
KS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKSwgYnVmZmVyT3B0aW9ucywgUmVuZGVyaW5n
UHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICBjYW52YXMoKS0+c2V0SW1hZ2VCdWZmZXJBbmRN
YXJrRGlydHkoV1RGTW92ZShidWZmZXIpKTsKIAogICAgICAgICAvLyAxLjQuIFNldCB0aGUgb3V0
cHV0IGJpdG1hcCdzIG9yaWdpbi1jbGVhbiBmbGFnIHRvIHRydWUuCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAK
aW5kZXggMGQxMmQyMjM3MjFlNDY3NzdlYzYzNmUyYjVmYzYyMWE1ZDZmMGRjZS4uMGJkMzFlZGJm
OTQzNWMyMGI1ZjViY2UwM2IyOTYxNjQ2MmM1YTFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTc4
MzcsNyArNzgzNyw3IEBAIEltYWdlQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpM
UlVJbWFnZUJ1ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcihjb25zdCBJCiAgICAgfQogCiAgICAgLy8g
RklYTUUgKDE0OTQyMyk6IFNob3VsZCB0aGlzIEltYWdlQnVmZmVyIGJlIHVuY29uZGl0aW9uYWxs
eSB1bmFjY2VsZXJhdGVkPwotICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICBhdXRvIHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHsg
fSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgaWYgKCF0ZW1wKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICBBU1NFUlQobV9idWZmZXJzLnNpemUoKSA+IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWlu
ZXJFbGVtZW50LmNwcAppbmRleCBhZmI1ZjFlNmNkZWVhMzgxZDExZGFkY2NmNjVhYWY5ZGY4Nzlk
MWJlLi5lYTA3YzdiYjBiZmYzNDNlZWRhNDczOWVhY2Y5MmE1NDljMjFhZTgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWlu
ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcApAQCAtNDIwLDcgKzQyMCw3IEBAIFJlZlB0
cjxJbWFnZT4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4
dFRyYWNrUmVwcmVzZW50YXRpCiAgICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBJbnRSZWN0KElu
dFBvaW50KCksIGxheWVyLT5zaXplKCkpOwogCiAgICAgLy8gRklYTUUgKDE0OTQyMik6IFRoaXMg
YnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAg
YXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCksIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUoKSwgeyB9LCBSZW5kZXJp
bmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzLmNwcAppbmRleCA1MGFkNWNiYzk2NWRlMDAwYjg4MTY4OTdiYWU5ODE3YTNl
ZGM5ZmU2Li5kMGVkOTU4MzU4Yzc0YjVhNjczMjYwMTQ1ZjgwODQ3MmQyZDFkN2RiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTA5OCw3ICsx
MDk4LDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFW
YXJpYW50IGRhdGEpCiAgICAgICAgICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0g
aW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgSW1hZ2UqIGlt
YWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYm
IGltYWdlICE9ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIHsgfSwgUmVuZGVyaW5nUHVy
cG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4
dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAg
ICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zKTsKICAg
ICAgICAgICAgICAgICB9CkBAIC0xMTEyLDcgKzExMTIsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFz
OjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkKIAogICAgICAgICAgICAg
dW5zaWduZWQgdmlkZW9XaWR0aCA9IHZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpOwogICAgICAg
ICAgICAgdW5zaWduZWQgdmlkZW9IZWlnaHQgPSB2aWRlb0VsZW1lbnQtPnZpZGVvSGVpZ2h0KCk7
Ci0gICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9h
dFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZs
b2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6
VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOwogICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAgICAgICAgICAgICAg
ICAgdmlkZW9FbGVtZW50LT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChpbWFnZUJ1ZmZlci0+
Y29udGV4dCgpLCBGbG9hdFJlY3QoMCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpKTsKICAg
ICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5n
Il9zKTsKQEAgLTExNDksNyArMTE0OSw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9y
RGF0YShEdXBsaWNhdGVEYXRhVmFyaWFudCBkYXRhKQogICAgICAgICAgICAgaWYgKGF1dG8qIGNh
Y2hlZEltYWdlID0gY3NzSW1hZ2VWYWx1ZS0+aW1hZ2UoKSkgewogICAgICAgICAgICAgICAgIGF1
dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGlt
YWdlICYmIGltYWdlICE9ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIHsgfSwgUmVuZGVy
aW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+
Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAg
ICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9z
KTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lU25hcHNob3R0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuY3BwCmluZGV4IDVkMjg3NmE1ZGZkYTVkNjVlZmMyOWFkODAwNGRhOWMwMzE3ZmY1NGIuLmY5
Y2Q3NDkyZWM5YjRkNGIyMmFmOTY4YzgzMzM0NWEzYjE3MWEzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgUmVmUHRyPElt
YWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKEZyYW1lJiBmcmFtZSwgY29uc3Qg
SW50UmVjdCYgaW1hZ2UKICAgICBpZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFwc2hvdEZs
YWdzOjpQYWludFdpdGhJbnRlZ3JhbFNjYWxlRmFjdG9yKSkKICAgICAgICAgc2NhbGVGYWN0b3Ig
PSBjZWlsZihzY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgc2Nh
bGVGYWN0b3IsIG9wdGlvbnMuY29sb3JTcGFjZSwgb3B0aW9ucy5waXhlbEZvcm1hdCk7CisgICAg
YXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIHsgfSwg
UmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHNjYWxlRmFjdG9yLCBvcHRpb25zLmNvbG9y
U3BhY2UsIG9wdGlvbnMucGl4ZWxGb3JtYXQpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLWltYWdlUmVj
dC54KCksIC1pbWFnZVJlY3QueSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUNvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNs
aWVudC5jcHAKaW5kZXggZGU5OWI3Nzg2YzNhOGYyNWIzMDczYjI4MDdmYTUyYzJiOWRmZDRmNy4u
YWNmOTdhMWRmNWE2ZDM0NThjMWI5MTE2NjUwYzJlZDI3ZDEyMDNjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIFBh
Z2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIFJlZgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hl
ZEltYWdlID0gaW1hZ2VFbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdXRvKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZSAmJiBpbWFnZSAhPSAmSW1hZ2U6Om51bGxJbWFn
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBzaG90ID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25hcHNob3QgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGltYWdlLT5zaXplKCksIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdC0+Y29udGV4dCgpLmRyYXdJ
bWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lk
IFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIFJlZgogICAgICAgICAgICAgICAgICAgICAgICAgYXV0byYgdmlkZW9F
bGVtZW50ID0gZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKm5vZGUpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9XaWR0aCA9IHZpZGVvRWxlbWVudC52aWRlb1dpZHRo
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb0hlaWdodCA9IHZpZGVv
RWxlbWVudC52aWRlb0hlaWdodCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgc25hcHNob3Qg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCks
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAgICAgICAgICAgc25h
cHNob3QgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hl
aWdodCksIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgdmlkZW9FbGVtZW50LnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KHNuYXBzaG90
LT5jb250ZXh0KCksIEZsb2F0UmVjdCgwLCAwLCB2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCkpOwog
ICAgICAgICAgICAgICAgICAgICB9CiAjZW5kaWYKQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lkIFBh
Z2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIFJlZgogICAgICAgICAgICAgdGFyZ2V0ID0gcG9zc2libGVUYXJnZXQ7CiAg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9u
dGVuZHMoKSkpIHsKICAgICAgICAgICAgICAgICBhdXRvIHNvdXJjZVNpemUgPSBpbWFnZURhdGEt
PnNpemUoKTsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoc291cmNlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c291cmNlU2l6ZSwgeyB9LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0KEludFBvaW50KCksIHNvdXJjZVNpemUpOwog
ICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIoaW1hZ2VEYXRh
LT5waXhlbEJ1ZmZlcigpLCBzb3VyY2VSZWN0KTsKICAgICAgICAgICAgICAgICAgICAgZGF0YVVS
TCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgc3RkOjpudWxsb3B0LCBQ
cmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggMzhjZjg3OTZmOWE4MTdkYjVlOTY0NjczYmNi
Y2EwOGQ4Zjc4OWFkMS4uYmNlZTY4YjEwMjgwMTMwMTQ1YmRiM2NiYWIxNjk0NDVmM2FmZjAxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cApAQCAtMTYwLDcgKzE2MCw3IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gQml0bWFwSW1hZ2U6OnBy
ZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoYm9vbCByCiAgICAgICAgIHJl
dHVybiBpbWFnZTsKIAogICAgIGF1dG8gY29ycmVjdGVkU2l6ZUZsb2F0ID0gY29ycmVjdGVkU2l6
ZSA/IEZsb2F0U2l6ZShjb3JyZWN0ZWRTaXplLnZhbHVlKCkpIDogc2l6ZSgpOwotICAgIGF1dG8g
YnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb3JyZWN0ZWRTaXplRmxvYXQsIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShjb3JyZWN0ZWRTaXplRmxvYXQsIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwog
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gaW1hZ2U7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDI3
NTFhYzA4OTkxMmU3NmVmZWQ1MWE1OTMyMzcyYmM2ZjA3MmFiMTMuLmE3OWRlNWFjYTJhN2NlMWQ1
ZTlhYjQ3ZmVlNTM3M2ViNDllODgwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMTk4LDEwICsxOTgsMTUgQEAg
SW50U2l6ZSBHcmFwaGljc0NvbnRleHQ6OmNvbXBhdGlibGVJbWFnZUJ1ZmZlclNpemUoY29uc3Qg
RmxvYXRTaXplJiBzaXplKSBjb25zdAogCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3Rk
OjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlLCBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ01ldGhvZD4gcmVuZGVyaW5nTWV0aG9kKSBjb25zdAogeworICAgIE9wdGlvblNldDxJ
bWFnZUJ1ZmZlck9wdGlvbnM+IGJ1ZmZlck9wdGlvbnM7CisgICAgaWYgKHJlbmRlcmluZ01vZGUu
dmFsdWVfb3IodGhpcy0+cmVuZGVyaW5nTW9kZSgpKSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVy
YXRlZCkKKyAgICAgICAgYnVmZmVyT3B0aW9ucy5hZGQoSW1hZ2VCdWZmZXJPcHRpb25zOjpBY2Nl
bGVyYXRlZCk7CisKICAgICBpZiAoIXJlbmRlcmluZ01ldGhvZCB8fCAqcmVuZGVyaW5nTWV0aG9k
ID09IFJlbmRlcmluZ01ldGhvZDo6TG9jYWwpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUudmFsdWVfb3IodGhpcy0+cmVuZGVyaW5nTW9kZSgp
KSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAg
ICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBidWZmZXJPcHRpb25zLCBSZW5k
ZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOwogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSwgcmVuZGVyaW5nTW9kZS52YWx1ZV9vcih0aGlzLT5yZW5kZXJpbmdNb2RlKCkpLCBTaG91bGRV
c2VEaXNwbGF5TGlzdDo6WWVzLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGJ1ZmZlck9w
dGlvbnMuYWRkKEltYWdlQnVmZmVyT3B0aW9uczo6VXNlRGlzcGxheUxpc3QpOworICAgIHJldHVy
biBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIGJ1ZmZlck9wdGlvbnMsIFJlbmRlcmluZ1B1cnBv
c2U6OlVuc3BlY2lmaWVkLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CiB9CiAKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVh
dGVTY2FsZWRJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEZsb2F0U2l6
ZSYgc2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpv
cHRpb25hbDxSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlLCBzdGQ6Om9wdGlvbmFsPFJlbmRl
cmluZ01ldGhvZD4gcmVuZGVyaW5nTWV0aG9kKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IGI4YTk1ZjU0MWM1ZmY1OWUx
ZDQyMWRlYzcwMTM3ZGNiZjY5YTMyMGUuLjNjNTRkZGRhZmYwMjdhNTNiYWIzYmI2ZmFiNTliMGVi
Mjk5NTIzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5jcHAKQEAgLTM3LDMzICszNywyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0
aWMgY29uc3QgZmxvYXQgTWF4Q2xhbXBlZExlbmd0aCA9IDQwOTY7CiBzdGF0aWMgY29uc3QgZmxv
YXQgTWF4Q2xhbXBlZEFyZWEgPSBNYXhDbGFtcGVkTGVuZ3RoICogTWF4Q2xhbXBlZExlbmd0aDsK
IAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlz
dCBzaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwg
UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IENyZWF0aW9uQ29udGV4dCYgY3JlYXRpb25D
b250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgT3B0aW9uU2V0PEltYWdlQnVmZmVyT3B0aW9ucz4gb3B0aW9ucywgUmVu
ZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNv
bnN0IENyZWF0aW9uQ29udGV4dCYgY3JlYXRpb25Db250ZXh0KQogewogICAgIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAgICAgCiAgICAgLy8gR2l2ZSBTaG91bGRVc2VEaXNwbGF5
TGlzdCBhIGhpZ2hlciBwcmVjZWRlbmNlIHNpbmNlIGl0IGlzIGEgZGVidWcgb3B0aW9uLgotICAg
IGlmIChzaG91bGRVc2VEaXNwbGF5TGlzdCA9PSBTaG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzKSB7
Ci0gICAgICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVk
KQorICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKEltYWdlQnVmZmVyT3B0aW9uczo6VXNlRGlzcGxh
eUxpc3QpKSB7CisgICAgICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKEltYWdlQnVmZmVyT3B0aW9u
czo6QWNjZWxlcmF0ZWQpKQogICAgICAgICAgICAgaW1hZ2VCdWZmZXIgPSBEaXNwbGF5TGlzdEFj
Y2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIHBpeGVsRm9ybWF0LCBjcmVhdGlvbkNvbnRleHQpOwogICAgICAgICAKICAgICAgICAg
aWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIGltYWdlQnVmZmVyID0gRGlzcGxheUxpc3RV
bmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBjcmVhdGlvbkNvbnRleHQpOwogICAgIH0KICAgICAKLSAg
ICBpZiAoY3JlYXRpb25Db250ZXh0Lmhvc3RXaW5kb3cgJiYgIWltYWdlQnVmZmVyKQorICAgIGlm
IChjcmVhdGlvbkNvbnRleHQuaG9zdFdpbmRvdyAmJiAhaW1hZ2VCdWZmZXIpIHsKKyAgICAgICAg
YXV0byByZW5kZXJpbmdNb2RlID0gb3B0aW9ucy5jb250YWlucyhJbWFnZUJ1ZmZlck9wdGlvbnM6
OkFjY2VsZXJhdGVkKSA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZDsKICAgICAgICAgaW1hZ2VCdWZmZXIgPSBjcmVhdGlvbkNvbnRleHQu
aG9zdFdpbmRvdy0+Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcHVycG9z
ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCk7CisgICAgfQogCi0g
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQsIGNyZWF0aW9uQ29udGV4dCk7Ci0KLSAgICByZXR1cm4gaW1hZ2VCdWZmZXI7
Ci19CisgICAgaWYgKGltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiAK
LVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUm
IHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0LCBjb25zdCBDcmVhdGlvbkNvbnRleHQmIGNyZWF0aW9uQ29udGV4dCkKLXsKLSAg
ICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwotICAgIAotICAgIGlmIChyZW5kZXJp
bmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQorICAgIGlmIChvcHRpb25zLmNv
bnRhaW5zKEltYWdlQnVmZmVyT3B0aW9uczo6QWNjZWxlcmF0ZWQpKQogICAgICAgICBpbWFnZUJ1
ZmZlciA9IEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBjcmVhdGlvbkNvbnRleHQpOwogICAgIAogICAg
IGlmICghaW1hZ2VCdWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaAppbmRleCA3N2U1NWFmMGI4NjIyZmYwYzdjZDgzODQ5ZWFhODhhYzA5YjQz
ZDdjLi5lMmZlZTAxZWQ5YjU0ODk4OWFjZDc5OTFiNDIzM2RmMDU4YzRlZmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmQuaCIKICNpbmNsdWRlICJSZW5kZXJp
bmdNb2RlLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCisjaW5j
bHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNjMsOCArNjQsNyBAQCBwdWJsaWM6CiAgICAgfTsK
IAogICAgIC8vIFdpbGwgcmV0dXJuIGEgbnVsbCBwb2ludGVyIG9uIGFsbG9jYXRpb24gZmFpbHVy
ZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUo
Y29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3QsIFJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQsIGNvbnN0IENyZWF0aW9uQ29udGV4dCYgPSB7IH0pOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25z
dCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0LCBjb25zdCBDcmVhdGlvbkNvbnRl
eHQmID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVy
PiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgT3B0aW9uU2V0PEltYWdlQnVmZmVyT3B0aW9ucz4s
IFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQsIGNvbnN0IENyZWF0aW9uQ29udGV4dCYgPSB7IH0p
OwogCiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjbG9uZSgpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKaW5kZXggNWVmOWIz
YjQwYzAwMzJlYjk4MzMzZGZiZTFjZjVhNmViMTA4MjZhNi4uMzM2M2VjNzA3OGY5ZmJjNzQ0Yzky
ODkwZDZiYzRmN2FjZTE3ZTlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlbmRlcmluZ01vZGUuaApAQCAtMzQsOCArMzQsMTkgQEAgZW51bSBjbGFzcyBSZW5k
ZXJpbmdQdXJwb3NlIDogdWludDhfdCB7CiAgICAgTWVkaWFQYWludGluZwogfTsKIAotZW51bSBj
bGFzcyBTaG91bGRVc2VEaXNwbGF5TGlzdCA6IGJvb2wgeyBObywgWWVzIH07Ci1lbnVtIGNsYXNz
IFJlbmRlcmluZ01vZGUgOiBib29sIHsgVW5hY2NlbGVyYXRlZCwgQWNjZWxlcmF0ZWQgfTsKLWVu
dW0gY2xhc3MgUmVuZGVyaW5nTWV0aG9kIDogYm9vbCB7IExvY2FsLCBEaXNwbGF5TGlzdCB9Owor
ZW51bSBjbGFzcyBSZW5kZXJpbmdNZXRob2QgOiBib29sIHsKKyAgICBMb2NhbCwKKyAgICBEaXNw
bGF5TGlzdAorfTsKKworZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9vbCB7CisgICAgVW5h
Y2NlbGVyYXRlZCwKKyAgICBBY2NlbGVyYXRlZAorfTsKKworZW51bSBjbGFzcyBJbWFnZUJ1ZmZl
ck9wdGlvbnMgOiB1aW50OF90IHsKKyAgICBBY2NlbGVyYXRlZCAgICAgPSAxIDw8IDAsCisgICAg
VXNlRGlzcGxheUxpc3QgID0gMSA8PCAxCit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4
IDkwMjRmNWQxYWJmY2UzODA4MTgzYTNiMjMxZmJjZTBmZmIyZmY0MTQuLjYwODAwZDdlN2JjNzE2
NzIzNmJlODc2MzA1MTE0YjYzZmQ4YTlhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgY2xlYXJTY3JhdGNoQnVmZmVyKCk7CiAKICAgICAgICAgLy8gU2hhZG93Qmx1ciBpcyBu
b3QgdXNlZCB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcsIHNvIGl0J3MgT0sgdG8gbWFrZSBhbiB1
bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIuCi0gICAgICAgIG1faW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocm91
bmRlZFNpemUsIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICByZXR1
cm4gbV9pbWFnZUJ1ZmZlcjsKICAgICB9CiAKQEAgLTYwNiw3ICs2MDYsNyBAQCB2b2lkIFNoYWRv
d0JsdXI6OmRyYXdJbnNldFNoYWRvdyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwg
Y29uc3QgSW50UmVjdAogCiB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRp
bGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBzaGFk
b3dlZFJlY3QsIGNvbnN0IExheWVySW1hZ2VQcm9wZXJ0aWVzJiBsYXllckltYWdlUHJvcGVydGll
cywgY29uc3QgRHJhd0J1ZmZlckNhbGxiYWNrJiBkcmF3QnVmZmVyKQogewotICAgIGF1dG8gbGF5
ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQ
cm9wZXJ0aWVzLmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1
dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVy
SW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSksIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVj
aWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogICAgIGlmICghbGF5ZXJJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02MzQsNyAr
NjM0LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXQKIAogdm9pZCBTaGFkb3dCbHVyOjpkcmF3
SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0UmVjdCYgZnVsbFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25z
dCBMYXllckltYWdlUHJvcGVydGllcyYgbGF5ZXJJbWFnZVByb3BlcnRpZXMsIGNvbnN0IERyYXdC
dWZmZXJDYWxsYmFjayYgZHJhd0J1ZmZlcikKIHsKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXll
clNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGxheWVySW1hZ2Ug
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGll
cy5sYXllclNpemUpLCB7IH0sIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAo
IWxheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtNzEwLDcgKzcxMCw3IEBAIHZvaWQg
U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtLCBjb25zCiAgICAgVU5VU0VEX1BBUkFNKGxheWVySW1hZ2VQcm9wZXJ0aWVz
KTsKICNlbmRpZgogCi0gICAgaWYgKGF1dG8gbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSkKKyAgICBp
ZiAoYXV0byBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNp
emUsIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKQogICAgICAgICBkcmF3UmVjdFNo
YWRvd1dpdGhUaWxpbmdXaXRoTGF5ZXJJbWFnZUJ1ZmZlcigqbGF5ZXJJbWFnZUJ1ZmZlciwgdHJh
bnNmb3JtLCBzaGFkb3dlZFJlY3QsIHRlbXBsYXRlU2l6ZSwgZWRnZVNpemUsIGRyYXdJbWFnZSwg
ZmlsbFJlY3QsIHRlbXBsYXRlU2hhZG93KTsKIH0KIApAQCAtNzY0LDcgKzc2NCw3IEBAIHZvaWQg
U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHRyYW5zZm9ybSwgY29uCiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoYXV0byBsYXllcklt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpKQorICAgIGlmIChhdXRvIGxheWVySW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHRlbXBsYXRlU2l6ZSwgeyB9LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNp
ZmllZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JB
OCkpCiAgICAgICAgIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmdXaXRoTGF5ZXJJbWFnZUJ1ZmZl
cigqbGF5ZXJJbWFnZUJ1ZmZlciwgdHJhbnNmb3JtLCBmdWxsUmVjdCwgaG9sZVJlY3QsIHRlbXBs
YXRlU2l6ZSwgZWRnZVNpemUsIGRyYXdJbWFnZSwgZmlsbFJlY3RXaXRoSG9sZSwgdGVtcGxhdGVC
b3VuZHMsIHRlbXBsYXRlSG9sZSk7CiB9CiAKQEAgLTkyMyw3ICs5MjMsNyBAQCB2b2lkIFNoYWRv
d0JsdXI6OmRyYXdTaGFkb3dMYXllcihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwg
Y29uc3QgSW50UmVjdAogCiAgICAgYWRqdXN0Qmx1clJhZGl1cyh0cmFuc2Zvcm0pOwogCi0gICAg
YXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5
ZXJJbWFnZVByb3BlcnRpZXMtPmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OworICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRT
aXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLT5sYXllclNpemUpLCB7IH0sIFJlbmRlcmluZ1B1cnBv
c2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwCmlu
ZGV4IDBkMTg3ZmM5MDFhYzkyN2NhNWJmOTg4YzA2N2M0ZmZlZjMwODRmNjQuLjVhNzZmMDc2NmVk
ZTIxMzc1ZWUyMmFlZTEzMTViYjZiZDNjNDBjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgSW1hZ2VC
dWZmZXIqIFNvdXJjZUltYWdlOjppbWFnZUJ1ZmZlcigpIGNvbnN0CiAgICAgICAgIGF1dG8gbmF0
aXZlSW1hZ2UgPSBzdGQ6OmdldDxSZWY8TmF0aXZlSW1hZ2U+PihtX2ltYWdlVmFyaWFudCk7CiAK
ICAgICAgICAgYXV0byByZWN0ID0gRmxvYXRSZWN0IHsgeyB9LCBuYXRpdmVJbWFnZS0+c2l6ZSgp
IH07Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG5hdGl2
ZUltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShuYXRpdmVJbWFnZS0+c2l6ZSgpLCB7
IH0sIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZl
cikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3BwCmluZGV4IDJh
MDA4ZmViMWNjMzQzODQ0NDdiMThmZjAzYTExOWEyZjM5OWI0MjkuLmMxMmYzNmRiMDBlMTczM2Qy
ZjY0ZDY2OWYwYzIzYmY3YTQ1Mjk5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3BwCkBAIC05OSw3ICs5OSwx
MyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVySW1hZ2U6OmltYWdlQnVmZmVyRnJvbVBpeGVsQnVmZmVy
KCkKICAgICBpZiAobV9pbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIu
Z2V0KCk7CiAKLSAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtX2Fic29s
dXRlSW1hZ2VSZWN0LnNpemUoKSwgbV9yZW5kZXJpbmdNb2RlLCAxLCBtX2NvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CisgICAgT3B0aW9uU2V0PEltYWdlQnVmZmVyT3B0aW9ucz4gYnVm
ZmVyT3B0aW9uczsKKyAgICBpZiAobV9yZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFj
Y2VsZXJhdGVkKQorICAgICAgICBidWZmZXJPcHRpb25zLmFkZChJbWFnZUJ1ZmZlck9wdGlvbnM6
OkFjY2VsZXJhdGVkKTsKKworICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIHVzZSBhIHNwZWNp
ZmljIFJlbmRlcmluZ1B1cnBvc2UgdG8gYXZvaWQgYWNjZWxlcmF0ZWQgYnVmZmVycyBpbiB0aGUg
V2ViQ29udGVudCBwcm9jZXNzICh3ZWJraXQub3JnL2IvMjM4ODQ4KS4KKyAgICAvLyBGSVhNRTog
VGVzdAorICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVJ
bWFnZVJlY3Quc2l6ZSgpLCBidWZmZXJPcHRpb25zLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNp
ZmllZCwgMSwgbV9jb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbV9p
bWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE3MCw3ICsxNzYsNyBA
QCBzdGF0aWMgdm9pZCBjb3B5SW1hZ2VCeXRlcyhjb25zdCBQaXhlbEJ1ZmZlciYgc291cmNlUGl4
ZWxCdWZmZXIsIFBpeGVsQnVmZmVyJiBkZQogc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IGdldENvbnZlcnRlZFBpeGVsQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYUZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgYXV0byBjbGFtcGVk
U2l6ZSA9IEltYWdlQnVmZmVyOjpjbGFtcGVkU2l6ZShzb3VyY2VSZWN0LnNpemUoKSk7Ci0gICAg
YXV0byBjb252ZXJ0ZWRJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNp
emUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgYXV0byBjb252ZXJ0ZWRJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoY2xhbXBlZFNpemUsIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQs
IDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgCiAgICAgaWYgKCFjb252
ZXJ0ZWRJbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE4Nyw3
ICsxOTMsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0Q29udmVydGVk
UGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImIHNvdXJjZVBpeAogICAgIGF1dG8gY2xhbXBlZFNpemUg
PSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUoc291cmNlUmVjdC5zaXplKCkpOwogCiAgICAgYXV0
byYgc291cmNlQ29sb3JTcGFjZSA9IHNvdXJjZVBpeGVsQnVmZmVyLmZvcm1hdCgpLmNvbG9yU3Bh
Y2U7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNp
emUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIHNvdXJjZUNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoY2xhbXBlZFNpemUsIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEs
IHNvdXJjZUNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFnZUJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2Fy
ZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
b2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IDU1MmQxOTQ2ZjI4YmUwOTQ2
Y2EwNDZlMDZmZDdlM2E4YzlmZmZlYzAuLjMyY2M3ODMxNGNjZGNjMmUwOTE4ZDRlNjQxMjdlNjg2
MmQ1MmQ2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBw
bGllci5jcHAKQEAgLTQ5LDcgKzQ5LDExIEBAIGJvb2wgRkVUaWxlU29mdHdhcmVBcHBsaWVyOjph
cHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3ImCiAgICAg
YXV0byBtYXhSZXN1bHRSZWN0ID0gcmVzdWx0Lm1heEVmZmVjdFJlY3QoZmlsdGVyKTsKICAgICBt
YXhSZXN1bHRSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAotICAgIGF1dG8gdGls
ZUltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0aWxlUmVjdC5zaXplKCksIGZpbHRlci5yZW5k
ZXJpbmdNb2RlKCksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOworICAgIE9wdGlvblNldDxJbWFnZUJ1ZmZlck9wdGlvbnM+IGJ1ZmZlck9wdGlv
bnM7CisgICAgaWYgKGZpbHRlci5yZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNj
ZWxlcmF0ZWQpCisgICAgICAgIGJ1ZmZlck9wdGlvbnMuYWRkKEltYWdlQnVmZmVyT3B0aW9uczo6
QWNjZWxlcmF0ZWQpOworCisgICAgYXV0byB0aWxlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHRpbGVSZWN0LnNpemUoKSwgYnVmZmVyT3B0aW9ucywgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVj
aWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogICAgIGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZS5jcHAKaW5kZXggNGZlYzRkOTM5YmIyOTJkNjQ2NDlmOTVkZTJkNzdlOTcyODY4MDcxZi4u
OTc0MGRlMWM1ZTUxZmZlMmE3NmM0NzMzNWE3YmI5NjE5Y2JkNDg5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHAKQEAgLTQ3Myw3ICs0NzMsNyBAQCBJbWFnZUJ1ZmZlciogTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2U6OmltYWdlQnVmZmVyKCkgY29uc3QKICAgICBpZiAobV9pbWFnZUJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CiAKLSAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShjYXB0dXJlU2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjYXB0dXJlU2l6ZSgpLCB7
IH0sIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwCmluZGV4IDZkMzdiZDIwYTVlYTIxMjBiYWE0YTNlYjU4ZGQ4ODlkZGMzYjkw
OTEuLmFiYTAyMDI1YjY2NTZkOWM5NDlhMDcwMzc1MmFkODIzYTgzMDMxNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdl
LCBmbG9hdCB0aHJlc2hvbGQsIGMKICAgICBJbnRSZWN0IG1hcmdpblJlY3QgPSBzbmFwcGVkSW50
UmVjdChtYXJnaW5SKTsKICAgICBhdXRvIGludGVydmFscyA9IG1ha2VVbmlxdWU8UmFzdGVyU2hh
cGVJbnRlcnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7CiAgICAg
Ly8gRklYTUUgKDE0OTQyMCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25h
bGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
YXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwg
eyB9LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgMSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKICAgICBhdXRvIGNyZWF0ZVNoYXBl
ID0gWyZdKCkgewogICAgICAgICBhdXRvIHJhc3RlclNoYXBlID0gbWFrZVVuaXF1ZTxSYXN0ZXJT
aGFwZT4oV1RGTW92ZShpbnRlcnZhbHMpLCBtYXJnaW5SZWN0LnNpemUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ci5jcHAKaW5kZXggMWIwZTAyZjE1ODRiNWVjODQzNTM3MGFjOGRiMDM3NGZkMTQ1YTcwZS4uMzRj
YTgzMTMwNTkzYjIwODhmYTEwNTc0M2EzNmExZjEzODdkMWFjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cApAQCAtMTYyLDcgKzE2Miw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBs
eUNsaXBwaW5nVG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKIAogICAgIGlmICgh
Y2xpcHBlckRhdGEuaXNWYWxpZEZvckdlb21ldHJ5KG9iamVjdEJvdW5kaW5nQm94LCBjbGlwcGVk
Q29udGVudEJvdW5kcywgYWJzb2x1dGVUcmFuc2Zvcm0pKSB7CiAgICAgICAgIC8vIEZJWE1FICgx
NDk0NjkpOiBUaGlzIGltYWdlIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1
bmFjY2VsZXJhdGVkLiBNYWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRleHQgYnJlYWtzIG5lc3RlZCBj
bGlwcGluZywgdGhvdWdoLgotICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IGNvbnRleHQuY3JlYXRl
U2NhbGVkSW1hZ2VCdWZmZXIoY2xpcHBlZENvbnRlbnRCb3VuZHMsIHNjYWxlLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CisgICAg
ICAgIGF1dG8gbWFza0ltYWdlID0gY29udGV4dC5jcmVhdGVTY2FsZWRJbWFnZUJ1ZmZlcihjbGlw
cGVkQ29udGVudEJvdW5kcywgc2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsgLy8gRklYTUUKICAgICAgICAgaWYgKCFtYXNr
SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGNjMzJkMjkwMmIxZDdmNDhlYWI5NTJmM2JjZjMxMzM2
NjEyNzFiY2EuLjE3YTcyNDZlNTA0Zjc2NzMzOTVhMjE4NDllYzRkYzcyMDMxZjY4MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMTk5LDggKzE5OSw3IEBA
IHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
YXV0byBjbGFtcGluZ1NjYWxlID0gY2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZShzY2Fs
ZWRSZWN0LnNpemUoKSk7Ci0KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzY2FsZWRSZWN0LnNpemUoKSAqIGNsYW1waW5nU2NhbGUsIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6
RE9NLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
LCBob3N0V2luZG93KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShzY2FsZWRSZWN0LnNpemUoKSAqIGNsYW1waW5nU2NhbGUsIHsgfSwgUmVuZGVyaW5nUHVycG9z
ZTo6RE9NLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4LCB7IGhvc3RXaW5kb3cgfSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmlu
ZGV4IDEzMTg1ZjIxMTg5Njk2YTRmZjI2YzA3MjZhZmJhMWQ2ZjE4NTgxZDkuLjkzOGQ5ZWQxNzhh
ODY3NTY4MTViMTNlNTU0YTQzYTZjNzY5NTI3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcApAQCAtMjAzLDE0ICsyMDMsMTUgQEAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBTVkdJbWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWMKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBi
b29sIGFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQgPSBtX3BhZ2UtPnNldHRpbmdzKCkuYWNjZWxl
cmF0ZWREcmF3aW5nRW5hYmxlZCgpOwotICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9IGFjY2VsZXJh
dGVkRHJhd2luZ0VuYWJsZWQgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQ7CisgICAgT3B0aW9uU2V0PEltYWdlQnVmZmVyT3B0aW9ucz4g
YnVmZmVyT3B0aW9uczsKKyAgICBpZiAobV9wYWdlLT5zZXR0aW5ncygpLmFjY2VsZXJhdGVkRHJh
d2luZ0VuYWJsZWQoKSkKKyAgICAgICAgYnVmZmVyT3B0aW9ucy5hZGQoSW1hZ2VCdWZmZXJPcHRp
b25zOjpBY2NlbGVyYXRlZCk7CiAKICAgICBIb3N0V2luZG93KiBob3N0V2luZG93ID0gbnVsbHB0
cjsKICAgICBpZiAoYXV0byBjb250ZW50UmVuZGVyZXIgPSBlbWJlZGRlZENvbnRlbnRCb3goKSkK
ICAgICAgICAgaG9zdFdpbmRvdyA9IGNvbnRlbnRSZW5kZXJlci0+aG9zdFdpbmRvdygpOwogCi0g
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCByZW5kZXJp
bmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkRPTSwg
MSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKKyAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIGJ1ZmZlck9wdGlvbnMs
IFJlbmRlcmluZ1B1cnBvc2U6OkRPTSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
LCB7IGhvc3RXaW5kb3cgfSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXggMTY1YzViZjAwYWM2
YTFhODFmOGU3MjMxNTE0MzQyODM3MDc4MjE3NS4uNmMyNWY3N2RjNzcwOGI3ZmI1YjhmZDAyODQ5
M2YxYTI5MzIzZDRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KQEAgLTIxNCw3ICsy
MTQsNyBAQCBSZXRhaW5QdHI8TlNJbWFnZT4gV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9y
Q3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbQogICAgICAgICByZXR1cm4gbmlsOwogCiAg
ICAgLy8gVGhpcyBpcyBlZmZlY3RpdmVseSBhIHNuYXBzaG90LCBhbmQgd2lsbCBiZSBwYWludGVk
IGluIGFuIHVuYWNjZWxlcmF0ZWQgZmFzaGlvbiBpbiBsaW5lIHdpdGggRnJhbWVTbmFwc2hvdHRp
bmcuCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Quc2l6ZSgpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUocmVjdC5zaXplKCksIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwog
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDI2MjU0ODkzN2EyMGMwODIwNTBi
NzcxMDkwYjcwZTNiMzc5ZjQzMC4uNjRjYzQyYzg2M2RjOTdhY2M0ZmYzYTMzZWVjMTMzNDYzNTk4
MTgxMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIzIEBACisyMDIyLTA0LTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgorCisgICAgICAgIFVuaWZ5IHRoZSB0d28gSW1hZ2VCdWZmZXI6OmNyZWF0ZSgp
IGZ1bmN0aW9ucywgcGFzc2luZyBSZW5kZXJpbmdQdXJwb3NlIGV2ZXJ5d2hlcmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODg1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkgbmVlZCB0byBleHRlbmQg
UmVuZGVyaW5nUHVycG9zZSBmbGFncyB0byBkaXN0aW5ndWlzaCBsYXllciBiYWNraW5nIHN0b3Jl
IGJ1ZmZlcnMgZnJvbQorICAgICAgICBvdGhlciBraW5kcyBvZiBidWZmZXJzLiBCZWZvcmUgZG9p
bmcgc28sIGNvbGxhcHNlIHRoZSB0d28gSW1hZ2VCdWZmZXI6OmNyZWF0ZSgpIGZ1bmN0aW9ucwor
ICAgICAgICB0b2dldGhlciBieSBjb21iaW5pbmcgUmVuZGVyaW5nTW9kZSBhbmQgU2hvdWxkVXNl
RGlzcGxheUxpc3QgaW50byBPcHRpb25TZXQ8SW1hZ2VCdWZmZXJPcHRpb25zPiwKKyAgICAgICAg
YW5kIHBhc3NpbmcgUmVuZGVyaW5nUHVycG9zZSBldmVyeXdoZXJlLgorICAgICAgICAKKyAgICAg
ICAgQWx3YXlzIHBhc3NpbmcgUmVuZGVyaW5nUHVycG9zZSBpcyByZXZlYWxpbmcsIGJlY2F1c2Ug
aXQgZmluZHMgY2FsbCBzaXRlcyBpbiB0aGUKKyAgICAgICAgd2ViIHByb2Nlc3MgdGhhdCBjYW4g
dHJpZ2dlciBhY2NlbGVyYXRlZCBidWZmZXJzIChlLmcuIHdlYmtpdC5vcmcvYi8yMzg4NDYpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ltYWdlQnVmZmVyVGVzdHMu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMi0wNC0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIE1hcmsgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3Rv
ciBhcyBleHBsaWNpdApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0ltYWdlQnVmZmVyVGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0ltYWdlQnVmZmVyVGVzdHMuY3BwCmluZGV4IGE0MjA2MTBhMDRlM2FiMDJjYjdlMzI5N2Fj
ZDI1MTExYTgyZDczYTcuLmE5YTMxMWMxMTk0NmJjN2Q1ZDZhYTIyYmM3MzRhMzBiNzgxYzdiMDAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbWFnZUJ1ZmZl
clRlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW1hZ2VC
dWZmZXJUZXN0cy5jcHAKQEAgLTU1LDEwICs1NSwxMCBAQCBURVNUKEltYWdlQnVmZmVyVGVzdHMs
IEltYWdlQnVmZmVyU3ViVHlwZUNyZWF0ZUNyZWF0ZXNTdWJ0eXBlcykKICAgICBhdXRvIHBpeGVs
Rm9ybWF0ID0gUGl4ZWxGb3JtYXQ6OkJHUkE4OwogICAgIEZsb2F0U2l6ZSBzaXplIHsgMS5mLCAx
LmYgfTsKICAgICBmbG9hdCBzY2FsZSA9IDEuZjsKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IHVu
YWNjZWxlcmF0ZWQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsIHNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0cik7Ci0g
ICAgUmVmUHRyPEltYWdlQnVmZmVyPiBhY2NlbGVyYXRlZCA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSwgUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQsIHNjYWxlLCBjb2xvclNwYWNlLCBwaXhl
bEZvcm1hdCwgbnVsbHB0cik7Ci0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBkaXNwbGF5TGlzdEFj
Y2VsZXJhdGVkID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzLCBSZW5kZXJpbmdQdXJwb3NlOjpV
bnNwZWNpZmllZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRyKTsKLSAg
ICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGRpc3BsYXlMaXN0VW5hY2NlbGVyYXRlZCA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQsIFNob3VsZFVzZURp
c3BsYXlMaXN0OjpZZXMsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCBzY2FsZSwgY29s
b3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIpOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
dW5hY2NlbGVyYXRlZCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgeyB9LCBSZW5kZXJpbmdQ
dXJwb3NlOjpVbnNwZWNpZmllZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBudWxs
cHRyKTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGFjY2VsZXJhdGVkID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShzaXplLCB7IEltYWdlQnVmZmVyT3B0aW9uczo6QWNjZWxlcmF0ZWQgfSwgUmVuZGVy
aW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwg
bnVsbHB0cik7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBkaXNwbGF5TGlzdEFjY2VsZXJhdGVk
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCB7IEltYWdlQnVmZmVyT3B0aW9uczo6VXNlRGlz
cGxheUxpc3QgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHNjYWxlLCBjb2xvclNw
YWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0cik7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBkaXNw
bGF5TGlzdFVuYWNjZWxlcmF0ZWQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHsgSW1hZ2VC
dWZmZXJPcHRpb25zOjpBY2NlbGVyYXRlZCwgSW1hZ2VCdWZmZXJPcHRpb25zOjpVc2VEaXNwbGF5
TGlzdCB9LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgc2NhbGUsIGNvbG9yU3BhY2Us
IHBpeGVsRm9ybWF0LCBudWxscHRyKTsKIAogICAgIEVYUEVDVF9ORShudWxscHRyLCBhY2NlbGVy
YXRlZCk7CiAgICAgRVhQRUNUX05FKG51bGxwdHIsIHVuYWNjZWxlcmF0ZWQpOwpAQCAtNzIsOCAr
NzIsOCBAQCBURVNUKEltYWdlQnVmZmVyVGVzdHMsIEltYWdlQnVmZmVyU3ViUGl4ZWxEcmF3aW5n
KQogICAgIGF1dG8gcGl4ZWxGb3JtYXQgPSBQaXhlbEZvcm1hdDo6QkdSQTg7CiAgICAgRmxvYXRT
aXplIGxvZ2ljYWxTaXplIHsgMzkyLCA0NCB9OwogICAgIGZsb2F0IHNjYWxlID0gMS45MTMyNjUz
NTsKLSAgICBhdXRvIGZyb250SW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2lj
YWxTaXplLCBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBp
eGVsRm9ybWF0LCBudWxscHRyKTsKLSAgICBhdXRvIGJhY2tJbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkLCBzY2Fs
ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIpOworICAgIGF1dG8gZnJvbnRJbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHsgSW1hZ2VCdWZmZXJP
cHRpb25zOjpBY2NlbGVyYXRlZCB9LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgc2Nh
bGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRyKTsKKyAgICBhdXRvIGJhY2tJbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHsgSW1hZ2VCdWZmZXJP
cHRpb25zOjpBY2NlbGVyYXRlZCB9LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgc2Nh
bGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRyKTsKICAgICAKICAgICBhdXRvIHN0
cm9rZVJlY3QgPSBGbG9hdFJlY3QgeyB7IH0sIGxvZ2ljYWxTaXplIH07CiAgICAgc3Ryb2tlUmVj
dC5pbmZsYXRlKC0wLjUpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIFRFU1QoSW1hZ2VCdWZmZXJUZXN0
cywgRElTQUJMRURfRHJhd0ltYWdlQnVmZmVyRG9lc05vdFJlZmVyZW5jZUV4dHJhTWVtb3J5KQog
CiAgICAgewogICAgICAgICAvLyBNYWtlIHBvdGVudGlhbCBhY2NlbGVyYXRlZCBkcmF3aW5nIGJh
Y2tlbmQgaW5zdGFudGlhdGUgcm91Z2hseSB0aGUgZ2xvYmFsIHN0cnVjdHVyZXMgbmVlZGVkIGZv
ciB0aGlzIHRlc3QuCi0gICAgICAgIGF1dG8gYWNjZWxlcmF0ZWQgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgc2NhbGUsIGNvbG9y
U3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRyKTsKKyAgICAgICAgYXV0byBhY2NlbGVyYXRlZCA9
IEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHsgSW1hZ2VCdWZmZXJPcHRpb25zOjpB
Y2NlbGVyYXRlZCB9LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgc2NhbGUsIGNvbG9y
U3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRyKTsKICAgICAgICAgYXV0byBmaWxsUmVjdCA9IEZs
b2F0UmVjdCB7IHsgfSwgbG9naWNhbFNpemUgfTsKICAgICAgICAgYWNjZWxlcmF0ZWQtPmNvbnRl
eHQoKS5maWxsUmVjdChmaWxsUmVjdCwgQ29sb3I6OmdyZWVuKTsKICAgICAgICAgRVhQRUNUX1RS
VUUoaW1hZ2VCdWZmZXJQaXhlbElzKENvbG9yOjpncmVlbiwgKmFjY2VsZXJhdGVkLCBmaWxsUmVj
dC5tYXhYKCkgLSAxLCBmaWxsUmVjdC5tYXhZKCkgLSAxKSk7CkBAIC0xNDEsMTMgKzE0MSwxMyBA
QCBURVNUKEltYWdlQnVmZmVyVGVzdHMsIERJU0FCTEVEX0RyYXdJbWFnZUJ1ZmZlckRvZXNOb3RS
ZWZlcmVuY2VFeHRyYU1lbW9yeSkKICAgICBhdXRvIGxhc3RGb290cHJpbnQgPSBpbml0aWFsRm9v
dHByaW50OwogICAgIEVYUEVDVF9HVChsYXN0Rm9vdHByaW50LCAwdSk7CiAKLSAgICBhdXRvIGFj
Y2VsZXJhdGVkID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9k
ZTo6QWNjZWxlcmF0ZWQsIHNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0cik7
CisgICAgYXV0byBhY2NlbGVyYXRlZCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUs
IHsgSW1hZ2VCdWZmZXJPcHRpb25zOjpBY2NlbGVyYXRlZCB9LCBSZW5kZXJpbmdQdXJwb3NlOjpV
bnNwZWNpZmllZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRyKTsKICAg
ICBhdXRvIGZpbGxSZWN0ID0gRmxvYXRSZWN0IHsgeyB9LCBsb2dpY2FsU2l6ZSB9OwogICAgIGFj
Y2VsZXJhdGVkLT5jb250ZXh0KCkuZmlsbFJlY3QoZmlsbFJlY3QsIENvbG9yOjpncmVlbik7CiAg
ICAgYWNjZWxlcmF0ZWQtPmZsdXNoQ29udGV4dCgpOwogICAgIEVYUEVDVF9UUlVFKG1lbW9yeUZv
b3RwcmludENoYW5nZWRCeShsYXN0Rm9vdHByaW50LCBsb2dpY2FsU2l6ZUJ5dGVzLCBmb290cHJp
bnRFcnJvcikpOwogCi0gICAgYXV0byB1bmFjY2VsZXJhdGVkID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgc2NhbGUsIGNvbG9y
U3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRyKTsKKyAgICBhdXRvIHVuYWNjZWxlcmF0ZWQgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCB7IH0sIFJlbmRlcmluZ1B1cnBvc2U6OlVu
c3BlY2lmaWVkLCBzY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIpOwogICAg
IHVuYWNjZWxlcmF0ZWQtPmNvbnRleHQoKS5maWxsUmVjdChmaWxsUmVjdCwgQ29sb3I6OnllbGxv
dyk7CiAgICAgRVhQRUNUX1RSVUUoaW1hZ2VCdWZmZXJQaXhlbElzKENvbG9yOjp5ZWxsb3csICp1
bmFjY2VsZXJhdGVkLCBmaWxsUmVjdC5tYXhYKCkgLSAxLCBmaWxsUmVjdC5tYXhZKCkgLSAxKSk7
CiAgICAgRVhQRUNUX1RSVUUobWVtb3J5Rm9vdHByaW50Q2hhbmdlZEJ5KGxhc3RGb290cHJpbnQs
IGxvZ2ljYWxTaXplQnl0ZXMsIGZvb3RwcmludEVycm9yKSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3Bw
CmluZGV4IGJjYzVhMTE4ZjIzZDdjYmI2NGVmYzFlNjRjYzI3MTM5MDk1ZGIwMzAuLmNkNmQ5ZmM4
ZTIzNTAwMjQ4NTkxNjVkMzRhNjRhNDZiZTY2MDI1MzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3Bw
CkBAIC03Myw3ICs3Myw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgUmVwbGF5V2l0aE1pc3Np
bmdSZXNvdXJjZSkKICAgICB9CiAKICAgICB7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHsgMTAwLCAxMDAgfSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoeyAxMDAsIDEwMCB9LCB7IH0sIFJlbmRl
cmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogICAgICAgICBMb2NhbFJlc291cmNlSGVhcCByZXNvdXJjZUhlYXA7CiAgICAgICAgIHJl
c291cmNlSGVhcC5hZGQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBpbWFnZUJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpKTsKIAo=
</data>
<flag name="commit-queue"
          id="485173"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456768</attachid>
            <date>2022-04-05 16:52:34 -0700</date>
            <delta_ts>2022-04-05 17:52:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238851-20220405165233.patch</filename>
            <type>text/plain</type>
            <size>57526</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI2NWUxZGNmY2YzZTk2
MTk2NDgwMTc4ZWMyNDZkNTY2ZDUwMmVjNi4uYzIxZmQzYTFhMGMwYWFlYmM4M2RhYTQ3M2FiN2U2
MjQ0NjJmNzdhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDIyLTA0LTA1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVuaWZ5IHRoZSB0
d28gSW1hZ2VCdWZmZXI6OmNyZWF0ZSgpIGZ1bmN0aW9ucywgcGFzc2luZyBSZW5kZXJpbmdQdXJw
b3NlIGV2ZXJ5d2hlcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzODg1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEkgbmVlZCB0byBleHRlbmQgUmVuZGVyaW5nUHVycG9zZSBmbGFncyB0byBkaXN0aW5n
dWlzaCBsYXllciBiYWNraW5nIHN0b3JlIGJ1ZmZlcnMgZnJvbQorICAgICAgICBvdGhlciBraW5k
cyBvZiBidWZmZXJzLiBCZWZvcmUgZG9pbmcgc28sIGNvbGxhcHNlIHRoZSB0d28gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZSgpIGZ1bmN0aW9ucworICAgICAgICB0b2dldGhlciBieSBjb21iaW5pbmcgUmVu
ZGVyaW5nTW9kZSBhbmQgU2hvdWxkVXNlRGlzcGxheUxpc3QgaW50byBPcHRpb25TZXQ8SW1hZ2VC
dWZmZXJPcHRpb25zPiwKKyAgICAgICAgYW5kIHBhc3NpbmcgUmVuZGVyaW5nUHVycG9zZSBldmVy
eXdoZXJlLgorICAgICAgICAKKyAgICAgICAgQWx3YXlzIHBhc3NpbmcgUmVuZGVyaW5nUHVycG9z
ZSBpcyByZXZlYWxpbmcsIGJlY2F1c2UgaXQgZmluZHMgY2FsbCBzaXRlcyBpbiB0aGUKKyAgICAg
ICAgd2ViIHByb2Nlc3MgdGhhdCBjYW4gdHJpZ2dlciBhY2NlbGVyYXRlZCBidWZmZXJzIChlLmcu
IHdlYmtpdC5vcmcvYi8yMzg4NDYpLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRl
cjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXJ0d29ya0ltYWdlTG9hZGVy
Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAgICAg
ICAqIGh0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9t
UGFpbnRDYW52YXM6OmNvcGllZEltYWdlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVh
dGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZUJ1ZmZlckZvclBh
aW50aW5nIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICogaHRt
bC9PZmZzY3JlZW5DYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFz
Ojp0cmFuc2ZlclRvSW1hZ2VCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2Fu
dmFzOjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvSW1h
Z2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0
bWFwUmVuZGVyaW5nQ29udGV4dDo6c2V0T3V0cHV0Qml0bWFwKToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVy
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uSW1hZ2UpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEpOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hv
dHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcCk6
CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnBy
ZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6V1RGX1JF
UVVJUkVTX0xPQ0spOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFk
b3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJh
d1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRy
YXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6
ZHJhd1NoYWRvd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXIgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVySW1hZ2U6OmltYWdlQnVmZmVyRnJvbVBpeGVsQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmdldENvbnZlcnRlZFBpeGVsQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5IGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
R0NHTEFOR0xFTGF5ZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6R0NHTEFOR0xFTGF5ZXI6OnN3
YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmU6OnVwZGF0
ZUNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjppbWFn
ZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKwogMjAyMi0wNC0wNSAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE1hcmsgU3RyaW5nKGNv
bnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBhcyBleHBsaWNpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IGQwZDBjZGE5ODU2OGQyYmIxYTAxMzUyODJhYWUxZGVjN2JmNDc4YWQuLmZkYWQ5
MjdmODNlZGRiMzkzZDc4YWZiYTNkNDU5YWQzYjgzMDdjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMi0wNC0wNSAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBVbmlmeSB0aGUgdHdvIEltYWdlQnVmZmVy
OjpjcmVhdGUoKSBmdW5jdGlvbnMsIHBhc3NpbmcgUmVuZGVyaW5nUHVycG9zZSBldmVyeXdoZXJl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg4NTEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJIG5lZWQg
dG8gZXh0ZW5kIFJlbmRlcmluZ1B1cnBvc2UgZmxhZ3MgdG8gZGlzdGluZ3Vpc2ggbGF5ZXIgYmFj
a2luZyBzdG9yZSBidWZmZXJzIGZyb20KKyAgICAgICAgb3RoZXIga2luZHMgb2YgYnVmZmVycy4g
QmVmb3JlIGRvaW5nIHNvLCBjb2xsYXBzZSB0aGUgdHdvIEltYWdlQnVmZmVyOjpjcmVhdGUoKSBm
dW5jdGlvbnMKKyAgICAgICAgdG9nZXRoZXIgYnkgY29tYmluaW5nIFJlbmRlcmluZ01vZGUgYW5k
IFNob3VsZFVzZURpc3BsYXlMaXN0IGludG8gT3B0aW9uU2V0PEltYWdlQnVmZmVyT3B0aW9ucz4s
CisgICAgICAgIGFuZCBwYXNzaW5nIFJlbmRlcmluZ1B1cnBvc2UgZXZlcnl3aGVyZS4KKyAgICAg
ICAgCisgICAgICAgIEFsd2F5cyBwYXNzaW5nIFJlbmRlcmluZ1B1cnBvc2UgaXMgcmV2ZWFsaW5n
LCBiZWNhdXNlIGl0IGZpbmRzIGNhbGwgc2l0ZXMgaW4gdGhlCisgICAgICAgIHdlYiBwcm9jZXNz
IHRoYXQgY2FuIHRyaWdnZXIgYWNjZWxlcmF0ZWQgYnVmZmVycyAoZS5nLiB3ZWJraXQub3JnL2Iv
MjM4ODQ2KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lm1tOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJp
bmdTZXJ2aWNlUGlja2VySXRlbSk6CisKIDIwMjItMDQtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJrIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0
b3IgYXMgZXhwbGljaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZS5jcHAKaW5kZXggYjY2YjViZjE2YWI3MWUyMDY0ZmZmYjc4MjBhYzMxNDI2ODAxZGIxNS4u
YmFlZWU4ODU4MmUwZTM2NjE2NmMzYTliNjBhNzhhYjVhYTM4ODMxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI4OSw3ICsyODksNyBA
QCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBl
TG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogCiAgICAgICAgIGF1dG8gYml0bWFwSW1hZ2UgPSBC
aXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgICAgIGJpdG1hcEltYWdlLT5zZXREYXRhKFdURk1v
dmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgeyB9LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmll
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgICAgIG1fZGF0YSA9IHsgbnVs
bFN0cmluZygpIH07CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCmluZGV4IDg3NGFhN2Yw
YjE4ZjBlZTc1ODgwYmE1ZjVlZjY3ZDQ3YmZjMmIyYjQuLmRkMjFhNGNlNTYzM2ZkNGE0ODM5MDRl
YTI4MmIzMjI2MGVjYTY5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgQXJ0
d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IE5ldHdvcmtMCiAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZl
clRvU2FuaXRpemUgPSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgYXV0byBi
aXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBiaXRtYXBJbWFnZS0+c2V0
RGF0YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICBhdXRvIGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCB7IH0sIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lm
aWVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgIG1fY2FsbGJhY2sobnVsbHB0cik7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0
ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVl
LmNwcAppbmRleCA1ZDdhNTUxZWViM2VmZjQwMzY2NzY3NDA1N2M4OGU1MTVhMTFmOTVlLi4wMTY1
MDcyMzk1ZDUzOWE3MzY1NzVhNTQxMTYzMzNmOWQ3ODAzNWVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCkBAIC0xMTQsOSArMTE0LDExIEBAIFJlZlB0cjxJ
bWFnZT4gQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IGNvbnN0IEZsb2F0U2l6CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuICZJbWFnZTo6
bnVsbEltYWdlKCk7CiAKLSAgICAvLyBUcmFuc2Zvcm0gSW1hZ2UgaW50byBJbWFnZUJ1ZmZlci4K
ICAgICBhdXRvIHJlbmRlcmluZ01vZGUgPSByZW5kZXJlci5wYWdlKCkuYWNjZWxlcmF0ZWRGaWx0
ZXJzRW5hYmxlZCgpID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkOwotICAgIGF1dG8gc291cmNlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVuZGVy
aW5nUHVycG9zZTo6RE9NLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4LCB7IHJlbmRlcmVyLmhvc3RXaW5kb3coKSB9KTsKKyAgICBPcHRpb25TZXQ8
SW1hZ2VCdWZmZXJPcHRpb25zPiBidWZmZXJPcHRpb25zOworICAgIGlmIChyZW5kZXJpbmdNb2Rl
ID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQorICAgICAgICBidWZmZXJPcHRpb25zLmFk
ZChJbWFnZUJ1ZmZlck9wdGlvbnM6OkFjY2VsZXJhdGVkKTsKKyAgICBhdXRvIHNvdXJjZUltYWdl
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBidWZmZXJPcHRpb25zLCBSZW5kZXJpbmdQdXJw
b3NlOjpET00sIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgsIHsgcmVuZGVyZXIuaG9zdFdpbmRvdygpIH0pOwogICAgIGlmICghc291cmNlSW1hZ2Up
CiAgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCmluZGV4IGEyNDBiMDhkNWEyMzdmZDY4ODI0ZTdkODgw
ODFjOGI2YWE5NjcwNWQuLmIxNzIxMWZmZTBjMTQxNDllYTgxNzdmZjZiMzQ2MjE4NmU4YzFhYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIEltYWdlKiBDdXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UoKSBjb25zdAogICAg
IGlmICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgbV9jb3BpZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBp
eGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgbV9jb3BpZWRCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHNpemUoKSwgeyB9LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVs
bHB0cik7CiAgICAgaWYgKCFtX2NvcGllZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggOTI5ODU4
Njk4NDk0YmFjMWFkMDE2NTc3ODFhMjA2MDcyYWFhMTBhNy4uYjhmYzk4NzIzYmMzOGE5ZjE1NTg5
MWI4ZDUwMWI4NTRkNDMzYjg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAKQEAgLTg4Niw5ICs4ODYsMTIgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogCiAgICAgYXV0byBob3N0V2luZG93ID0gKGRvY3VtZW50
KCkudmlldygpICYmIGRvY3VtZW50KCkudmlldygpLT5yb290KCkpID8gZG9jdW1lbnQoKS52aWV3
KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpIDogbnVsbHB0cjsKIAotICAgIGF1dG8gcmVuZGVyaW5n
TW9kZSA9IHNob3VsZEFjY2VsZXJhdGUoYXJlYSkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRl
ZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CisgICAgT3B0aW9uU2V0PEltYWdlQnVm
ZmVyT3B0aW9ucz4gYnVmZmVyT3B0aW9uczsKKyAgICBpZiAoc2hvdWxkQWNjZWxlcmF0ZShhcmVh
KSkKKyAgICAgICAgYnVmZmVyT3B0aW9ucy5hZGQoSW1hZ2VCdWZmZXJPcHRpb25zOjpBY2NlbGVy
YXRlZCk7CiAgICAgLy8gRklYTUU6IEFkZCBhIG5ldyBzZXR0aW5nIGZvciBEaXNwbGF5TGlzdCBk
cmF3aW5nIG9uIGNhbnZhcy4KLSAgICBhdXRvIHVzZURpc3BsYXlMaXN0ID0gbV91c2VzRGlzcGxh
eUxpc3REcmF3aW5nLnZhbHVlX29yKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERy
YXdpbmdFbmFibGVkKCkpID8gU2hvdWxkVXNlRGlzcGxheUxpc3Q6OlllcyA6IFNob3VsZFVzZURp
c3BsYXlMaXN0OjpObzsKKyAgICBpZiAobV91c2VzRGlzcGxheUxpc3REcmF3aW5nLnZhbHVlX29y
KGRvY3VtZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKCkpKQorICAg
ICAgICBidWZmZXJPcHRpb25zLmFkZChJbWFnZUJ1ZmZlck9wdGlvbnM6OlVzZURpc3BsYXlMaXN0
KTsKIAogICAgIGF1dG8gW2NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0XSA9IFsmXSB7CiAgICAgICAg
IGlmIChtX2NvbnRleHQpCkBAIC04OTYsNyArODk5LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogICAgICAgICByZXR1cm4gc3RkOjpwYWlyIHsg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCB9OwogICAg
IH0oKTsKIAotICAgIHNldEltYWdlQnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBy
ZW5kZXJpbmdNb2RlLCB1c2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCAx
LCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdykpOworICAgIHNldEltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBidWZmZXJPcHRpb25zLCBSZW5kZXJpbmdQ
dXJwb3NlOjpDYW52YXMsIDEsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBob3N0V2luZG93KSk7
CiAKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogICAgIGlmIChtX2Nv
bnRleHQgJiYgbV9jb250ZXh0LT5pczJkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwCmluZGV4IGViMzg2ZWZiMzMwZDYzODU4OGViYzYyMDc4MzAxZDU5ZDU0OTc1
MGMuLjFlYzEzZDFiODZmOTIzMTIzOTY2YjZmYzZlMDJhMmVkMTFhOGFkMjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMjk3LDggKzI5NywxNSBAQCBzdGQ6
Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gSFRNTFZpZGVvRWxlbWVudDo6Y29sb3JT
cGFjZSgpIGNvbnN0CiBSZWZQdHI8SW1hZ2VCdWZmZXI+IEhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0
ZUJ1ZmZlckZvclBhaW50aW5nKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewogICAgIGF1dG8qIGhvc3RXaW5kb3cgPSBk
b2N1bWVudCgpLnZpZXcoKSAmJiBkb2N1bWVudCgpLnZpZXcoKS0+cm9vdCgpID8gZG9jdW1lbnQo
KS52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpIDogbnVsbHB0cjsKLSAgICBhdXRvIHNob3Vs
ZFVzZURpc3BsYXlMaXN0ID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpLmRpc3BsYXlMaXN0RHJhd2lu
Z0VuYWJsZWQoKSA/IFNob3VsZFVzZURpc3BsYXlMaXN0OjpZZXMgOiBTaG91bGRVc2VEaXNwbGF5
TGlzdDo6Tm87Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5n
TW9kZSwgc2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2U6Ok1lZGlhUGFpbnRp
bmcsIDEsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBob3N0V2luZG93KTsKKworICAgIE9wdGlv
blNldDxJbWFnZUJ1ZmZlck9wdGlvbnM+IGJ1ZmZlck9wdGlvbnM7CisgICAgaWYgKHJlbmRlcmlu
Z01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCisgICAgICAgIGJ1ZmZlck9wdGlv
bnMuYWRkKEltYWdlQnVmZmVyT3B0aW9uczo6QWNjZWxlcmF0ZWQpOworCisgICAgaWYgKGRvY3Vt
ZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKCkpCisgICAgICAgIGJ1
ZmZlck9wdGlvbnMuYWRkKEltYWdlQnVmZmVyT3B0aW9uczo6VXNlRGlzcGxheUxpc3QpOworCisg
ICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgYnVmZmVyT3B0aW9ucywgUmVuZGVy
aW5nUHVycG9zZTo6TWVkaWFQYWludGluZywgMSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhv
c3RXaW5kb3cpOwogfQogCiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhaW50Q3VycmVudEZyYW1l
SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggYWNjZWFhNTNiY2JjZjM4
MzdiZDRiOTkyZDZlMmFhNTQ3OTQyOTA5ZC4uYTM2NGMwZTBmY2FkMzk1YTBmMWY4YTkzZjFjNTcw
YTY4Mjg4MjEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTg5LDE2ICs4
OSwyMCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZl
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcAogI2VuZGlmCiAgICAgfQogCisgICAgT3B0
aW9uU2V0PEltYWdlQnVmZmVyT3B0aW9ucz4gYnVmZmVyT3B0aW9uczsKKyAgICBpZiAocmVuZGVy
aW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKKyAgICAgICAgYnVmZmVyT3B0
aW9ucy5hZGQoSW1hZ2VCdWZmZXJPcHRpb25zOjpBY2NlbGVyYXRlZCk7CisKICAgICBpZiAoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgYXV0byYgZG9jdW1l
bnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgICAg
IGlmIChkb2N1bWVudC52aWV3KCkgJiYgZG9jdW1lbnQudmlldygpLT5yb290KCkpIHsKICAgICAg
ICAgICAgIGF1dG8gaG9zdFdpbmRvdyA9IGRvY3VtZW50LnZpZXcoKS0+cm9vdCgpLT5ob3N0V2lu
ZG93KCk7Ci0gICAgICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5k
ZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkNh
bnZhcywgcmVzb2x1dGlvblNjYWxlLCAqaW1hZ2VCdWZmZXJDb2xvclNwYWNlLCBQaXhlbEZvcm1h
dDo6QkdSQTgsIGhvc3RXaW5kb3cpOworICAgICAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpj
cmVhdGUoc2l6ZSwgYnVmZmVyT3B0aW9ucywgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNv
bHV0aW9uU2NhbGUsICppbWFnZUJ1ZmZlckNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwg
aG9zdFdpbmRvdyk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBGSVhNRSA8aHR0cHM6Ly93
ZWJraXQub3JnL2IvMjE4NDgyPiBFbmFibGUgd29ya2VyIGJhc2VkIEltYWdlQml0bWFwIGFuZCBP
ZmZzY3JlZW5DYW52YXMgZHJhd2luZyB0byB1c2UgR1BVIFByb2Nlc3MgcmVuZGVyaW5nCi0gICAg
cmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlv
blNjYWxlLCAqaW1hZ2VCdWZmZXJDb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIGJ1ZmZlck9wdGlvbnMsIFJlbmRlcmlu
Z1B1cnBvc2U6OlVuc3BlY2lmaWVkLCByZXNvbHV0aW9uU2NhbGUsICppbWFnZUJ1ZmZlckNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiB9CiAKIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0
ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
SW1hZ2VCaXRtYXA6OlNvdXJjZSYmIHNvdXJjZSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9u
cywgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZz
Y3JlZW5DYW52YXMuY3BwCmluZGV4IDg4ZDlmNzhjOWE1YzljYmIyMjA4Y2RjNzg5NDExZGU4Mjc2
NmMzMGEuLjcyNjFiYTE4OTdmYjcxMWQ3NjI5NDU5MmY2MzI3ZjE3OTBmOGY2MzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCBFeGNl
cHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9J
bWFnZUJpdG1hcCgpCiAgICAgICAgICAgICByZXR1cm4geyBSZWZQdHI8SW1hZ2VCaXRtYXA+IHsg
bnVsbHB0ciB9IH07CiAKICAgICAgICAgaWYgKCFtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlcikgewot
ICAgICAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
KmNhbnZhc0Jhc2VTY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgbV9jb250ZXh0LT5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAg
YXV0byBidWZmZXIgPSBJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKmNhbnZhc0Jhc2VT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNpemUoKSwgeyB9LCBSZW5kZXJpbmdQdXJwb3NlOjpV
bnNwZWNpZmllZCwgbV9jb250ZXh0LT5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgcmV0dXJu
IHsgSW1hZ2VCaXRtYXA6OmNyZWF0ZShJbWFnZUJpdG1hcEJhY2tpbmcoV1RGTW92ZShidWZmZXIp
KSkgfTsKICAgICAgICAgfQogCkBAIC00OTIsNyArNDkyLDcgQEAgdm9pZCBPZmZzY3JlZW5DYW52
YXM6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byBjb2xvclNwYWNlID0gbV9jb250ZXh0ID8gbV9jb250ZXh0LT5jb2xvclNwYWNlKCkgOiBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKLSAgICBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJpdG1h
cDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKmNhbnZhc0Jhc2VTY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgY29sb3JTcGFjZSkpOworICAg
IHNldEltYWdlQnVmZmVyKEltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcigqY2FudmFzQmFz
ZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc2l6ZSgpLCB7IH0sIFJlbmRlcmluZ1B1cnBvc2U6
OlVuc3BlY2lmaWVkLCBjb2xvclNwYWNlKSk7CiB9CiAKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gT2Zm
c2NyZWVuQ2FudmFzOjp0YWtlSW1hZ2VCdWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggZTQ2ZGRjYWY2YWYzNWMwNDJiZmZkNDhmYmYzYmVmYWJmMGViZTlkNS4uODk2MTYxODM4
YzliM2JmNDc4YWJlMTQ2ZjUyZjVlZjE0ZGJkMTIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwCkBA
IC05NCw4ICs5NCwxMyBAQCB2b2lkIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDo6c2V0T3V0
cHV0Qml0bWFwKFJlZlB0cjxJbWFnZUJpdG1hcD4gaW1hZ2VCaXRtYQogICAgICAgICAvLyBjYW4g
bmV2ZXIgYmUgY2hhbmdlZD8gV291bGRuJ3QgYSAxeDEgYnVmZmVyIGdpdmUgdGhlIHNhbWUgcmVu
ZGVyaW5nPyBUaGUKICAgICAgICAgLy8gb25seSByZWFzb24gSSBjYW4gdGhpbmsgb2YgaXMgdG9E
YXRhVVJMKCksIGJ1dCB0aGF0IGRvZXNuJ3Qgc2VlbSBsaWtlCiAgICAgICAgIC8vIGEgZ29vZCBl
bm91Z2ggYXJndW1lbnQgdG8gd2FzdGUgbWVtb3J5LgorICAgICAgICBPcHRpb25TZXQ8SW1hZ2VC
dWZmZXJPcHRpb25zPiBidWZmZXJPcHRpb25zOworICAgICAgICBpZiAoaXNBY2NlbGVyYXRlZCgp
KQorICAgICAgICAgICAgYnVmZmVyT3B0aW9ucy5hZGQoSW1hZ2VCdWZmZXJPcHRpb25zOjpBY2Nl
bGVyYXRlZCk7CiAKLSAgICAgICAgY2FudmFzKCktPnNldEltYWdlQnVmZmVyQW5kTWFya0RpcnR5
KEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMo
KS0+aGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIC8vIEZJWE1FOiBUaGlz
IG5lZWRzIHRvIHVzZSBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMgdG8gYXZvaWQgYWNjZWxlcmF0
ZWQgYnVmZmVycyBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzICh3ZWJraXQub3JnL2IvMjM4ODQ2
KS4KKyAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShj
YW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKSwgYnVmZmVyT3B0aW9ucywgUmVu
ZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICBjYW52YXMoKS0+c2V0SW1hZ2VCdWZm
ZXJBbmRNYXJrRGlydHkoV1RGTW92ZShidWZmZXIpKTsKIAogICAgICAgICAvLyAxLjQuIFNldCB0
aGUgb3V0cHV0IGJpdG1hcCdzIG9yaWdpbi1jbGVhbiBmbGFnIHRvIHRydWUuCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAKaW5kZXggMGQxMmQyMjM3MjFlNDY3NzdlYzYzNmUyYjVmYzYyMWE1ZDZmMGRjZS4uMGJk
MzFlZGJmOTQzNWMyMGI1ZjViY2UwM2IyOTYxNjQ2MmM1YTFjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAK
QEAgLTc4MzcsNyArNzgzNyw3IEBAIEltYWdlQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcihjb25zdCBJCiAgICAgfQogCiAg
ICAgLy8gRklYTUUgKDE0OTQyMyk6IFNob3VsZCB0aGlzIEltYWdlQnVmZmVyIGJlIHVuY29uZGl0
aW9uYWxseSB1bmFjY2VsZXJhdGVkPwotICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgY29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUsIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCF0ZW1wKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBBU1NFUlQobV9idWZmZXJzLnNpemUoKSA+IDApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50LmNwcAppbmRleCBhZmI1ZjFlNmNkZWVhMzgxZDExZGFkY2NmNjVhYWY5
ZGY4NzlkMWJlLi5lYTA3YzdiYjBiZmYzNDNlZWRhNDczOWVhY2Y5MmE1NDljMjFhZTgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcApAQCAtNDIwLDcgKzQyMCw3IEBA
IFJlZlB0cjxJbWFnZT4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3Jl
YXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpCiAgICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBJbnRS
ZWN0KEludFBvaW50KCksIGxheWVyLT5zaXplKCkpOwogCiAgICAgLy8gRklYTUUgKDE0OTQyMik6
IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQu
Ci0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXpl
KCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRv
IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUoKSwgeyB9LCBS
ZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghYnVm
ZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAppbmRleCA1MGFkNWNiYzk2NWRlMDAwYjg4MTY4OTdiYWU5
ODE3YTNlZGM5ZmU2Li5kMGVkOTU4MzU4Yzc0YjVhNjczMjYwMTQ1ZjgwODQ3MmQyZDFkN2RiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTA5
OCw3ICsxMDk4LDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0
ZURhdGFWYXJpYW50IGRhdGEpCiAgICAgICAgICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlID0gaW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgSW1h
Z2UqIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGlt
YWdlICYmIGltYWdlICE9ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIHsgfSwgUmVuZGVy
aW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+
Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAg
ICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9z
KTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMTEyLDcgKzExMTIsNyBAQCBpbnQgSW5zcGVjdG9y
Q2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkKIAogICAgICAg
ICAgICAgdW5zaWduZWQgdmlkZW9XaWR0aCA9IHZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpOwog
ICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9IZWlnaHQgPSB2aWRlb0VsZW1lbnQtPnZpZGVvSGVp
Z2h0KCk7Ci0gICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShGbG9hdFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIHsgfSwgUmVuZGVyaW5nUHVy
cG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAgICAgICAg
ICAgICAgICAgdmlkZW9FbGVtZW50LT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChpbWFnZUJ1
ZmZlci0+Y29udGV4dCgpLCBGbG9hdFJlY3QoMCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQp
KTsKICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1h
Z2UvcG5nIl9zKTsKQEAgLTExNDksNyArMTE0OSw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6Omlu
ZGV4Rm9yRGF0YShEdXBsaWNhdGVEYXRhVmFyaWFudCBkYXRhKQogICAgICAgICAgICAgaWYgKGF1
dG8qIGNhY2hlZEltYWdlID0gY3NzSW1hZ2VWYWx1ZS0+aW1hZ2UoKSkgewogICAgICAgICAgICAg
ICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgICAgICAgICAgICAg
aWYgKGltYWdlICYmIGltYWdlICE9ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNp
emUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIHsgfSwg
UmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1
ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAg
ICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2Uv
cG5nIl9zKTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFw
c2hvdHRpbmcuY3BwCmluZGV4IDVkMjg3NmE1ZGZkYTVkNjVlZmMyOWFkODAwNGRhOWMwMzE3ZmY1
NGIuLmY5Y2Q3NDkyZWM5YjRkNGIyMmFmOTY4YzgzMzM0NWEzYjE3MWEzY2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgUmVm
UHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKEZyYW1lJiBmcmFtZSwg
Y29uc3QgSW50UmVjdCYgaW1hZ2UKICAgICBpZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFw
c2hvdEZsYWdzOjpQYWludFdpdGhJbnRlZ3JhbFNjYWxlRmFjdG9yKSkKICAgICAgICAgc2NhbGVG
YWN0b3IgPSBjZWlsZihzY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgc2NhbGVGYWN0b3IsIG9wdGlvbnMuY29sb3JTcGFjZSwgb3B0aW9ucy5waXhlbEZvcm1hdCk7
CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCks
IHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHNjYWxlRmFjdG9yLCBvcHRpb25z
LmNvbG9yU3BhY2UsIG9wdGlvbnMucGl4ZWxGb3JtYXQpOwogICAgIGlmICghYnVmZmVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLWlt
YWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29u
c29sZUNsaWVudC5jcHAKaW5kZXggZGU5OWI3Nzg2YzNhOGYyNWIzMDczYjI4MDdmYTUyYzJiOWRm
ZDRmNy4uYWNmOTdhMWRmNWE2ZDM0NThjMWI5MTE2NjUwYzJlZDI3ZDEyMDNjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCB2
b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIFJlZgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8q
IGNhY2hlZEltYWdlID0gaW1hZ2VFbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZSAmJiBpbWFnZSAhPSAmSW1hZ2U6Om51
bGxJbWFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBzaG90ID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25hcHNob3QgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVj
aWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdC0+Y29udGV4dCgp
LmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTM2NSw3ICszNjUsNyBA
QCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIFJlZgogICAgICAgICAgICAgICAgICAgICAgICAgYXV0byYg
dmlkZW9FbGVtZW50ID0gZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKm5vZGUpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9XaWR0aCA9IHZpZGVvRWxlbWVudC52aWRl
b1dpZHRoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb0hlaWdodCA9
IHZpZGVvRWxlbWVudC52aWRlb0hlaWdodCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgc25h
cHNob3QgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hl
aWdodCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgc25hcHNob3QgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2
aWRlb0hlaWdodCksIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50LnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KHNu
YXBzaG90LT5jb250ZXh0KCksIEZsb2F0UmVjdCgwLCAwLCB2aWRlb1dpZHRoLCB2aWRlb0hlaWdo
dCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAjZW5kaWYKQEAgLTM5MCw3ICszOTAsNyBAQCB2
b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIFJlZgogICAgICAgICAgICAgdGFyZ2V0ID0gcG9zc2libGVUYXJn
ZXQ7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpo
YXNGcm9udGVuZHMoKSkpIHsKICAgICAgICAgICAgICAgICBhdXRvIHNvdXJjZVNpemUgPSBpbWFn
ZURhdGEtPnNpemUoKTsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoc291cmNlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoc291cmNlU2l6ZSwgeyB9LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgMSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0KEludFBvaW50KCksIHNvdXJjZVNp
emUpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIoaW1h
Z2VEYXRhLT5waXhlbEJ1ZmZlcigpLCBzb3VyY2VSZWN0KTsKICAgICAgICAgICAgICAgICAgICAg
ZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgc3RkOjpudWxs
b3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggMzhjZjg3OTZmOWE4MTdkYjVlOTY0
NjczYmNiY2EwOGQ4Zjc4OWFkMS4uYmNlZTY4YjEwMjgwMTMwMTQ1YmRiM2NiYWIxNjk0NDVmM2Fm
ZjAxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gQml0bWFwSW1h
Z2U6OnByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoYm9vbCByCiAgICAg
ICAgIHJldHVybiBpbWFnZTsKIAogICAgIGF1dG8gY29ycmVjdGVkU2l6ZUZsb2F0ID0gY29ycmVj
dGVkU2l6ZSA/IEZsb2F0U2l6ZShjb3JyZWN0ZWRTaXplLnZhbHVlKCkpIDogc2l6ZSgpOwotICAg
IGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb3JyZWN0ZWRTaXplRmxvYXQsIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShjb3JyZWN0ZWRTaXplRmxvYXQsIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVj
aWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gaW1hZ2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmlu
ZGV4IDI3NTFhYzA4OTkxMmU3NmVmZWQ1MWE1OTMyMzcyYmM2ZjA3MmFiMTMuLmE3OWRlNWFjYTJh
N2NlMWQ1ZTlhYjQ3ZmVlNTM3M2ViNDllODgwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMTk4LDEwICsxOTgs
MTUgQEAgSW50U2l6ZSBHcmFwaGljc0NvbnRleHQ6OmNvbXBhdGlibGVJbWFnZUJ1ZmZlclNpemUo
Y29uc3QgRmxvYXRTaXplJiBzaXplKSBjb25zdAogCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBo
aWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFj
ZSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlLCBzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ01ldGhvZD4gcmVuZGVyaW5nTWV0aG9kKSBjb25zdAogeworICAgIE9wdGlv
blNldDxJbWFnZUJ1ZmZlck9wdGlvbnM+IGJ1ZmZlck9wdGlvbnM7CisgICAgaWYgKHJlbmRlcmlu
Z01vZGUudmFsdWVfb3IodGhpcy0+cmVuZGVyaW5nTW9kZSgpKSA9PSBSZW5kZXJpbmdNb2RlOjpB
Y2NlbGVyYXRlZCkKKyAgICAgICAgYnVmZmVyT3B0aW9ucy5hZGQoSW1hZ2VCdWZmZXJPcHRpb25z
OjpBY2NlbGVyYXRlZCk7CisKICAgICBpZiAoIXJlbmRlcmluZ01ldGhvZCB8fCAqcmVuZGVyaW5n
TWV0aG9kID09IFJlbmRlcmluZ01ldGhvZDo6TG9jYWwpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUudmFsdWVfb3IodGhpcy0+cmVuZGVyaW5n
TW9kZSgpKSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OworICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBidWZmZXJPcHRpb25z
LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVh
dGUoc2l6ZSwgcmVuZGVyaW5nTW9kZS52YWx1ZV9vcih0aGlzLT5yZW5kZXJpbmdNb2RlKCkpLCBT
aG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGJ1
ZmZlck9wdGlvbnMuYWRkKEltYWdlQnVmZmVyT3B0aW9uczo6VXNlRGlzcGxheUxpc3QpOworICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIGJ1ZmZlck9wdGlvbnMsIFJlbmRlcmlu
Z1B1cnBvc2U6OlVuc3BlY2lmaWVkLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CiB9CiAKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0
OjpjcmVhdGVTY2FsZWRJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYgc2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwg
c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlLCBzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ01ldGhvZD4gcmVuZGVyaW5nTWV0aG9kKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IGI4YTk1ZjU0MWM1
ZmY1OWUxZDQyMWRlYzcwMTM3ZGNiZjY5YTMyMGUuLjNjNTRkZGRhZmYwMjdhNTNiYWIzYmI2ZmFi
NTliMGViMjk5NTIzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHAKQEAgLTM3LDMzICszNywyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBzdGF0aWMgY29uc3QgZmxvYXQgTWF4Q2xhbXBlZExlbmd0aCA9IDQwOTY7CiBzdGF0aWMgY29u
c3QgZmxvYXQgTWF4Q2xhbXBlZEFyZWEgPSBNYXhDbGFtcGVkTGVuZ3RoICogTWF4Q2xhbXBlZExl
bmd0aDsKIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNw
bGF5TGlzdCBzaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IENyZWF0aW9uQ29udGV4dCYgY3Jl
YXRpb25Db250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgT3B0aW9uU2V0PEltYWdlQnVmZmVyT3B0aW9ucz4gb3B0aW9u
cywgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQsIGNvbnN0IENyZWF0aW9uQ29udGV4dCYgY3JlYXRpb25Db250ZXh0KQogewogICAgIFJlZlB0
cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAgICAgCiAgICAgLy8gR2l2ZSBTaG91bGRVc2VE
aXNwbGF5TGlzdCBhIGhpZ2hlciBwcmVjZWRlbmNlIHNpbmNlIGl0IGlzIGEgZGVidWcgb3B0aW9u
LgotICAgIGlmIChzaG91bGRVc2VEaXNwbGF5TGlzdCA9PSBTaG91bGRVc2VEaXNwbGF5TGlzdDo6
WWVzKSB7Ci0gICAgICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2Vs
ZXJhdGVkKQorICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKEltYWdlQnVmZmVyT3B0aW9uczo6VXNl
RGlzcGxheUxpc3QpKSB7CisgICAgICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKEltYWdlQnVmZmVy
T3B0aW9uczo6QWNjZWxlcmF0ZWQpKQogICAgICAgICAgICAgaW1hZ2VCdWZmZXIgPSBEaXNwbGF5
TGlzdEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBjcmVhdGlvbkNvbnRleHQpOwogICAgICAgICAKICAg
ICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIGltYWdlQnVmZmVyID0gRGlzcGxh
eUxpc3RVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBjcmVhdGlvbkNvbnRleHQpOwogICAgIH0KICAg
ICAKLSAgICBpZiAoY3JlYXRpb25Db250ZXh0Lmhvc3RXaW5kb3cgJiYgIWltYWdlQnVmZmVyKQor
ICAgIGlmIChjcmVhdGlvbkNvbnRleHQuaG9zdFdpbmRvdyAmJiAhaW1hZ2VCdWZmZXIpIHsKKyAg
ICAgICAgYXV0byByZW5kZXJpbmdNb2RlID0gb3B0aW9ucy5jb250YWlucyhJbWFnZUJ1ZmZlck9w
dGlvbnM6OkFjY2VsZXJhdGVkKSA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKICAgICAgICAgaW1hZ2VCdWZmZXIgPSBjcmVhdGlvbkNv
bnRleHQuaG9zdFdpbmRvdy0+Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwg
cHVycG9zZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCk7CisgICAg
fQogCi0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgcGl4ZWxGb3JtYXQsIGNyZWF0aW9uQ29udGV4dCk7Ci0KLSAgICByZXR1cm4gaW1hZ2VC
dWZmZXI7Ci19CisgICAgaWYgKGltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4gaW1hZ2VCdWZm
ZXI7CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9h
dFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0LCBjb25zdCBDcmVhdGlvbkNvbnRleHQmIGNyZWF0aW9uQ29udGV4dCkK
LXsKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwotICAgIAotICAgIGlmIChy
ZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQorICAgIGlmIChvcHRp
b25zLmNvbnRhaW5zKEltYWdlQnVmZmVyT3B0aW9uczo6QWNjZWxlcmF0ZWQpKQogICAgICAgICBp
bWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZXNvbHV0
aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBjcmVhdGlvbkNvbnRleHQpOwogICAg
IAogICAgIGlmICghaW1hZ2VCdWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCA3N2U1NWFmMGI4NjIyZmYwYzdjZDgzODQ5ZWFhODhh
YzA5YjQzZDdjLi5lMmZlZTAxZWQ5YjU0ODk4OWFjZDc5OTFiNDIzM2RmMDU4YzRlZmIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmQuaCIKICNpbmNsdWRlICJS
ZW5kZXJpbmdNb2RlLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNjMsOCArNjQsNyBAQCBwdWJsaWM6CiAg
ICAgfTsKIAogICAgIC8vIFdpbGwgcmV0dXJuIGEgbnVsbCBwb2ludGVyIG9uIGFsbG9jYXRpb24g
ZmFpbHVyZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxp
c3QsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQsIGNvbnN0IENyZWF0aW9uQ29udGV4dCYgPSB7
IH0pOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0
ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0LCBjb25zdCBDcmVhdGlv
bkNvbnRleHQmID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdl
QnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgT3B0aW9uU2V0PEltYWdlQnVmZmVyT3B0
aW9ucz4sIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQsIGNvbnN0IENyZWF0aW9uQ29udGV4dCYg
PSB7IH0pOwogCiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjbG9uZSgpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKaW5kZXgg
NWVmOWIzYjQwYzAwMzJlYjk4MzMzZGZiZTFjZjVhNmViMTA4MjZhNi4uMzM2M2VjNzA3OGY5ZmJj
NzQ0YzkyODkwZDZiYzRmN2FjZTE3ZTlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaApAQCAtMzQsOCArMzQsMTkgQEAgZW51bSBjbGFz
cyBSZW5kZXJpbmdQdXJwb3NlIDogdWludDhfdCB7CiAgICAgTWVkaWFQYWludGluZwogfTsKIAot
ZW51bSBjbGFzcyBTaG91bGRVc2VEaXNwbGF5TGlzdCA6IGJvb2wgeyBObywgWWVzIH07Ci1lbnVt
IGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sIHsgVW5hY2NlbGVyYXRlZCwgQWNjZWxlcmF0ZWQg
fTsKLWVudW0gY2xhc3MgUmVuZGVyaW5nTWV0aG9kIDogYm9vbCB7IExvY2FsLCBEaXNwbGF5TGlz
dCB9OworZW51bSBjbGFzcyBSZW5kZXJpbmdNZXRob2QgOiBib29sIHsKKyAgICBMb2NhbCwKKyAg
ICBEaXNwbGF5TGlzdAorfTsKKworZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9vbCB7Cisg
ICAgVW5hY2NlbGVyYXRlZCwKKyAgICBBY2NlbGVyYXRlZAorfTsKKworZW51bSBjbGFzcyBJbWFn
ZUJ1ZmZlck9wdGlvbnMgOiB1aW50OF90IHsKKyAgICBBY2NlbGVyYXRlZCAgICAgPSAxIDw8IDAs
CisgICAgVXNlRGlzcGxheUxpc3QgID0gMSA8PCAxCit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
CmluZGV4IDkwMjRmNWQxYWJmY2UzODA4MTgzYTNiMjMxZmJjZTBmZmIyZmY0MTQuLjYwODAwZDdl
N2JjNzE2NzIzNmJlODc2MzA1MTE0YjYzZmQ4YTlhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgY2xlYXJTY3JhdGNoQnVmZmVyKCk7CiAKICAgICAgICAgLy8gU2hhZG93Qmx1
ciBpcyBub3QgdXNlZCB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcsIHNvIGl0J3MgT0sgdG8gbWFr
ZSBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIuCi0gICAgICAgIG1faW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUocm91bmRlZFNpemUsIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAg
ICByZXR1cm4gbV9pbWFnZUJ1ZmZlcjsKICAgICB9CiAKQEAgLTYwNiw3ICs2MDYsNyBAQCB2b2lk
IFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvdyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5z
Zm9ybSwgY29uc3QgSW50UmVjdAogCiB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0
aG91dFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiBzaGFkb3dlZFJlY3QsIGNvbnN0IExheWVySW1hZ2VQcm9wZXJ0aWVzJiBsYXllckltYWdlUHJv
cGVydGllcywgY29uc3QgRHJhd0J1ZmZlckNhbGxiYWNrJiBkcmF3QnVmZmVyKQogewotICAgIGF1
dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVy
SW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXpl
KGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSksIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6
VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOwogICAgIGlmICghbGF5ZXJJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02
MzQsNyArNjM0LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxp
bmcoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXQKIAogdm9pZCBTaGFkb3dCbHVy
OjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNv
bnN0IEZsb2F0UmVjdCYgZnVsbFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0
LCBjb25zdCBMYXllckltYWdlUHJvcGVydGllcyYgbGF5ZXJJbWFnZVByb3BlcnRpZXMsIGNvbnN0
IERyYXdCdWZmZXJDYWxsYmFjayYgZHJhd0J1ZmZlcikKIHsKLSAgICBhdXRvIGxheWVySW1hZ2Ug
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGll
cy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGxheWVy
SW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJv
cGVydGllcy5sYXllclNpemUpLCB7IH0sIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtNzEwLDcgKzcxMCw3IEBA
IHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zCiAgICAgVU5VU0VEX1BBUkFNKGxheWVySW1hZ2VQcm9w
ZXJ0aWVzKTsKICNlbmRpZgogCi0gICAgaWYgKGF1dG8gbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSkK
KyAgICBpZiAoYXV0byBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1w
bGF0ZVNpemUsIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKQogICAgICAgICBkcmF3
UmVjdFNoYWRvd1dpdGhUaWxpbmdXaXRoTGF5ZXJJbWFnZUJ1ZmZlcigqbGF5ZXJJbWFnZUJ1ZmZl
ciwgdHJhbnNmb3JtLCBzaGFkb3dlZFJlY3QsIHRlbXBsYXRlU2l6ZSwgZWRnZVNpemUsIGRyYXdJ
bWFnZSwgZmlsbFJlY3QsIHRlbXBsYXRlU2hhZG93KTsKIH0KIApAQCAtNzY0LDcgKzc2NCw3IEBA
IHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uCiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoYXV0byBs
YXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpKQorICAgIGlmIChhdXRvIGxheWVySW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHRlbXBsYXRlU2l6ZSwgeyB9LCBSZW5kZXJpbmdQdXJwb3NlOjpV
bnNwZWNpZmllZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0
OjpCR1JBOCkpCiAgICAgICAgIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmdXaXRoTGF5ZXJJbWFn
ZUJ1ZmZlcigqbGF5ZXJJbWFnZUJ1ZmZlciwgdHJhbnNmb3JtLCBmdWxsUmVjdCwgaG9sZVJlY3Qs
IHRlbXBsYXRlU2l6ZSwgZWRnZVNpemUsIGRyYXdJbWFnZSwgZmlsbFJlY3RXaXRoSG9sZSwgdGVt
cGxhdGVCb3VuZHMsIHRlbXBsYXRlSG9sZSk7CiB9CiAKQEAgLTkyMyw3ICs5MjMsNyBAQCB2b2lk
IFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5z
Zm9ybSwgY29uc3QgSW50UmVjdAogCiAgICAgYWRqdXN0Qmx1clJhZGl1cyh0cmFuc2Zvcm0pOwog
Ci0gICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNp
emUobGF5ZXJJbWFnZVByb3BlcnRpZXMtPmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOworICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5k
ZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLT5sYXllclNpemUpLCB7IH0sIFJlbmRlcmlu
Z1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2Uu
Y3BwCmluZGV4IDBkMTg3ZmM5MDFhYzkyN2NhNWJmOTg4YzA2N2M0ZmZlZjMwODRmNjQuLjVhNzZm
MDc2NmVkZTIxMzc1ZWUyMmFlZTEzMTViYjZiZDNjNDBjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAg
SW1hZ2VCdWZmZXIqIFNvdXJjZUltYWdlOjppbWFnZUJ1ZmZlcigpIGNvbnN0CiAgICAgICAgIGF1
dG8gbmF0aXZlSW1hZ2UgPSBzdGQ6OmdldDxSZWY8TmF0aXZlSW1hZ2U+PihtX2ltYWdlVmFyaWFu
dCk7CiAKICAgICAgICAgYXV0byByZWN0ID0gRmxvYXRSZWN0IHsgeyB9LCBuYXRpdmVJbWFnZS0+
c2l6ZSgpIH07Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KG5hdGl2ZUltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShuYXRpdmVJbWFnZS0+c2l6
ZSgpLCB7IH0sIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3BwCmlu
ZGV4IDJhMDA4ZmViMWNjMzQzODQ0NDdiMThmZjAzYTExOWEyZjM5OWI0MjkuLmMxMmYzNmRiMDBl
MTczM2QyZjY0ZDY2OWYwYzIzYmY3YTQ1Mjk5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3BwCkBAIC05OSw3
ICs5OSwxMyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVySW1hZ2U6OmltYWdlQnVmZmVyRnJvbVBpeGVs
QnVmZmVyKCkKICAgICBpZiAobV9pbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG1faW1hZ2VC
dWZmZXIuZ2V0KCk7CiAKLSAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSht
X2Fic29sdXRlSW1hZ2VSZWN0LnNpemUoKSwgbV9yZW5kZXJpbmdNb2RlLCAxLCBtX2NvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgT3B0aW9uU2V0PEltYWdlQnVmZmVyT3B0aW9u
cz4gYnVmZmVyT3B0aW9uczsKKyAgICBpZiAobV9yZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01v
ZGU6OkFjY2VsZXJhdGVkKQorICAgICAgICBidWZmZXJPcHRpb25zLmFkZChJbWFnZUJ1ZmZlck9w
dGlvbnM6OkFjY2VsZXJhdGVkKTsKKworICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIHVzZSBh
IHNwZWNpZmljIFJlbmRlcmluZ1B1cnBvc2UgdG8gYXZvaWQgYWNjZWxlcmF0ZWQgYnVmZmVycyBp
biB0aGUgV2ViQ29udGVudCBwcm9jZXNzICh3ZWJraXQub3JnL2IvMjM4ODQ4KS4KKyAgICAvLyBG
SVhNRTogVGVzdAorICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJz
b2x1dGVJbWFnZVJlY3Quc2l6ZSgpLCBidWZmZXJPcHRpb25zLCBSZW5kZXJpbmdQdXJwb3NlOjpV
bnNwZWNpZmllZCwgMSwgbV9jb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlm
ICghbV9pbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE3MCw3ICsx
NzYsNyBAQCBzdGF0aWMgdm9pZCBjb3B5SW1hZ2VCeXRlcyhjb25zdCBQaXhlbEJ1ZmZlciYgc291
cmNlUGl4ZWxCdWZmZXIsIFBpeGVsQnVmZmVyJiBkZQogc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IGdldENvbnZlcnRlZFBpeGVsQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
ciwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYUZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgYXV0byBj
bGFtcGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjbGFtcGVkU2l6ZShzb3VyY2VSZWN0LnNpemUoKSk7
Ci0gICAgYXV0byBjb252ZXJ0ZWRJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xh
bXBlZFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBjb252ZXJ0ZWRJbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVj
aWZpZWQsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgCiAgICAgaWYg
KCFjb252ZXJ0ZWRJbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTE4Nyw3ICsxOTMsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0Q29u
dmVydGVkUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImIHNvdXJjZVBpeAogICAgIGF1dG8gY2xhbXBl
ZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUoc291cmNlUmVjdC5zaXplKCkpOwogCiAg
ICAgYXV0byYgc291cmNlQ29sb3JTcGFjZSA9IHNvdXJjZVBpeGVsQnVmZmVyLmZvcm1hdCgpLmNv
bG9yU3BhY2U7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xh
bXBlZFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIHNvdXJjZUNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZp
ZWQsIDEsIHNvdXJjZUNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFp
bWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVT
b2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IDU1MmQxOTQ2ZjI4
YmUwOTQ2Y2EwNDZlMDZmZDdlM2E4YzlmZmZlYzAuLjMyY2M3ODMxNGNjZGNjMmUwOTE4ZDRlNjQx
MjdlNjg2MmQ1MmQ2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3
YXJlQXBwbGllci5jcHAKQEAgLTQ5LDcgKzQ5LDExIEBAIGJvb2wgRkVUaWxlU29mdHdhcmVBcHBs
aWVyOjphcHBseShjb25zdCBGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVySW1hZ2VWZWN0b3Im
CiAgICAgYXV0byBtYXhSZXN1bHRSZWN0ID0gcmVzdWx0Lm1heEVmZmVjdFJlY3QoZmlsdGVyKTsK
ICAgICBtYXhSZXN1bHRSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAotICAgIGF1
dG8gdGlsZUltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0aWxlUmVjdC5zaXplKCksIGZpbHRl
ci5yZW5kZXJpbmdNb2RlKCksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgIE9wdGlvblNldDxJbWFnZUJ1ZmZlck9wdGlvbnM+IGJ1ZmZl
ck9wdGlvbnM7CisgICAgaWYgKGZpbHRlci5yZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9k
ZTo6QWNjZWxlcmF0ZWQpCisgICAgICAgIGJ1ZmZlck9wdGlvbnMuYWRkKEltYWdlQnVmZmVyT3B0
aW9uczo6QWNjZWxlcmF0ZWQpOworCisgICAgYXV0byB0aWxlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHRpbGVSZWN0LnNpemUoKSwgYnVmZmVyT3B0aW9ucywgUmVuZGVyaW5nUHVycG9zZTo6
VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOwogICAgIGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuY3BwCmluZGV4IGU5
MTQ2M2Q5NzQ5N2FiOTRhMzk3YTlkNzk2Mzg0YTQwZDJiYzY2YTAuLjNjNzg2MjVlZWIzNTFkNGQ1
MmE3ZmM1YzY1NGJkMjVmMTE3NmVlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3Np
YUdDR0xBTkdMRUxheWVyLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEdDR0xBTkdMRUxheWVy
Ojpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICNlbmRpZgogCiAgICAgLy8gRmFsbGJhY2sgcGF0aCwg
cmVhZCBiYWNrIHRleHR1cmUgdG8gbWFpbiBtZW1vcnkKLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1h
Z2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCB7IH0sIFJlbmRlcmluZ1B1cnBv
c2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAg
ICAgbV9jb250ZXh0LnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCppbWFnZUJ1ZmZlci5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKaW5kZXggZTI0NDkzYjI1ZDQ5MGFjMDFiZTYzNjcwMjZk
NzllNjJkZjRkZTdlNi4uZDBhMDQwNjU4ZDc4OTVkNDE1ZTAyNDc2MjIyNTQ5MTg3NGVlZTM3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1h
cFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlLmNwcApAQCAtMzgsNyArMzgsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmU6
OnVwZGF0ZUNvbnRlbnRzKEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBjb25zdCBJbnRSZWN0
JiB0YQogewogICAgIC8vIE1ha2luZyBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBi
dWZmZXIgaGVyZSBpcyBPSyBiZWNhdXNlIHRoaXMgY29kZQogICAgIC8vIGlzbid0IHVzZWQgYnkg
YW55IHBsYXRmb3JtcyB0aGF0IHJlc3BlY3QgdGhlIGFjY2VsZXJhdGVkIGJpdC4KLSAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0YXJnZXRSZWN0LnNpemUoKSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUodGFyZ2V0UmVjdC5zaXplKCksIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5z
cGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmNwcAppbmRleCA0ZmVjNGQ5MzliYjI5MmQ2NDY0OWY5NWRlMmQ3N2U5NzI4NjgwNzFmLi45
NzQwZGUxYzVlNTFmZmUyYTc2YzQ3MzM1YTdiYjk2MTljYmQ0ODk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNw
cApAQCAtNDczLDcgKzQ3Myw3IEBAIEltYWdlQnVmZmVyKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6aW1hZ2VCdWZmZXIoKSBjb25zdAogICAgIGlmIChtX2ltYWdlQnVmZmVyKQogICAgICAgICBy
ZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKIAotICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGNhcHR1cmVTaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNhcHR1cmVTaXplKCksIHsg
fSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbV9pbWFnZUJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZS5jcHAKaW5kZXggNmQzN2JkMjBhNWVhMjEyMGJhYTRhM2ViNThkZDg4OWRkYzNiOTA5
MS4uYWJhMDIwMjViNjY1NmQ5Yzk0OWEwNzAzNzUyYWQ4MjNhODMwMzE1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTE4MSw3ICsxODEsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2Us
IGZsb2F0IHRocmVzaG9sZCwgYwogICAgIEludFJlY3QgbWFyZ2luUmVjdCA9IHNuYXBwZWRJbnRS
ZWN0KG1hcmdpblIpOwogICAgIGF1dG8gaW50ZXJ2YWxzID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFw
ZUludGVydmFscz4obWFyZ2luUmVjdC5oZWlnaHQoKSwgLW1hcmdpblJlY3QueSgpKTsKICAgICAv
LyBGSVhNRSAoMTQ5NDIwKTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFs
bHkgdW5hY2NlbGVyYXRlZC4KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBh
dXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCB7
IH0sIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIAogICAgIGF1dG8gY3JlYXRlU2hhcGUg
PSBbJl0oKSB7CiAgICAgICAgIGF1dG8gcmFzdGVyU2hhcGUgPSBtYWtlVW5pcXVlPFJhc3RlclNo
YXBlPihXVEZNb3ZlKGludGVydmFscyksIG1hcmdpblJlY3Quc2l6ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
LmNwcAppbmRleCAxYjBlMDJmMTU4NGI1ZWM4NDM1MzcwYWM4ZGIwMzc0ZmQxNDVhNzBlLi4zNGNh
ODMxMzA1OTNiMjA4OGZhMTA1NzQzYTM2YTFmMTM4N2QxYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
CkBAIC0xNjIsNyArMTYyLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5
Q2xpcHBpbmdUb0NvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogCiAgICAgaWYgKCFj
bGlwcGVyRGF0YS5pc1ZhbGlkRm9yR2VvbWV0cnkob2JqZWN0Qm91bmRpbmdCb3gsIGNsaXBwZWRD
b250ZW50Qm91bmRzLCBhYnNvbHV0ZVRyYW5zZm9ybSkpIHsKICAgICAgICAgLy8gRklYTUUgKDE0
OTQ2OSk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVu
YWNjZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgbmVzdGVkIGNs
aXBwaW5nLCB0aG91Z2guCi0gICAgICAgIGF1dG8gbWFza0ltYWdlID0gY29udGV4dC5jcmVhdGVT
Y2FsZWRJbWFnZUJ1ZmZlcihjbGlwcGVkQ29udGVudEJvdW5kcywgc2NhbGUsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKKyAgICAg
ICAgYXV0byBtYXNrSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZVNjYWxlZEltYWdlQnVmZmVyKGNsaXBw
ZWRDb250ZW50Qm91bmRzLCBzY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOyAvLyBGSVhNRQogICAgICAgICBpZiAoIW1hc2tJ
bWFnZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUltYWdlRWxlbWVudC5jcHAKaW5kZXggY2MzMmQyOTAyYjFkN2Y0OGVhYjk1MmYzYmNmMzEzMzY2
MTI3MWJjYS4uMTdhNzI0NmU1MDRmNzY3MzM5NWEyMTg0OWVjNGRjNzIwMzFmNjgwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCkBAIC0xOTksOCArMTk5LDcgQEAg
c3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBGbG9hdFMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBh
dXRvIGNsYW1waW5nU2NhbGUgPSBjbGFtcGluZ1NjYWxlRm9ySW1hZ2VCdWZmZXJTaXplKHNjYWxl
ZFJlY3Quc2l6ZSgpKTsKLQotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNjYWxlZFJlY3Quc2l6ZSgpICogY2xhbXBpbmdTY2FsZSwgUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpE
T00sIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgs
IGhvc3RXaW5kb3cpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHNjYWxlZFJlY3Quc2l6ZSgpICogY2xhbXBpbmdTY2FsZSwgeyB9LCBSZW5kZXJpbmdQdXJwb3Nl
OjpET00sIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgsIHsgaG9zdFdpbmRvdyB9KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5k
ZXggMTMxODVmMjExODk2OTZhNGZmMjZjMDcyNmFmYmExZDZmMTg1ODFkOS4uOTM4ZDllZDE3OGE4
Njc1NjgxNWIxM2U1NTRhNDNhNmM3Njk1Mjc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCkBAIC0yMDMsMTQgKzIwMywxNSBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+
IFNWR0ltYWdlOjpuYXRpdmVJbWFnZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhYwogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGJv
b2wgYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCA9IG1fcGFnZS0+c2V0dGluZ3MoKS5hY2NlbGVy
YXRlZERyYXdpbmdFbmFibGVkKCk7Ci0gICAgYXV0byByZW5kZXJpbmdNb2RlID0gYWNjZWxlcmF0
ZWREcmF3aW5nRW5hYmxlZCA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZDsKKyAgICBPcHRpb25TZXQ8SW1hZ2VCdWZmZXJPcHRpb25zPiBi
dWZmZXJPcHRpb25zOworICAgIGlmIChtX3BhZ2UtPnNldHRpbmdzKCkuYWNjZWxlcmF0ZWREcmF3
aW5nRW5hYmxlZCgpKQorICAgICAgICBidWZmZXJPcHRpb25zLmFkZChJbWFnZUJ1ZmZlck9wdGlv
bnM6OkFjY2VsZXJhdGVkKTsKIAogICAgIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cgPSBudWxscHRy
OwogICAgIGlmIChhdXRvIGNvbnRlbnRSZW5kZXJlciA9IGVtYmVkZGVkQ29udGVudEJveCgpKQog
ICAgICAgICBob3N0V2luZG93ID0gY29udGVudFJlbmRlcmVyLT5ob3N0V2luZG93KCk7CiAKLSAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIHJlbmRlcmlu
Z01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCAx
LCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOworICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgYnVmZmVyT3B0aW9ucywg
UmVuZGVyaW5nUHVycG9zZTo6RE9NLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgs
IHsgaG9zdFdpbmRvdyB9KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQppbmRleCAxNjVjNWJmMDBhYzZh
MWE4MWY4ZTcyMzE1MTQzNDI4MzcwNzgyMTc1Li42YzI1Zjc3ZGM3NzA4YjdmYjViOGZkMDI4NDkz
ZjFhMjkzMjNkNGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQpAQCAtMjE0LDcgKzIx
NCw3IEBAIFJldGFpblB0cjxOU0ltYWdlPiBXZWJDb250ZXh0TWVudUNsaWVudDo6aW1hZ2VGb3JD
dXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAg
ICAvLyBUaGlzIGlzIGVmZmVjdGl2ZWx5IGEgc25hcHNob3QsIGFuZCB3aWxsIGJlIHBhaW50ZWQg
aW4gYW4gdW5hY2NlbGVyYXRlZCBmYXNoaW9uIGluIGxpbmUgd2l0aCBGcmFtZVNuYXBzaG90dGlu
Zy4KLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocmVjdC5zaXplKCksIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShyZWN0LnNpemUoKSwgeyB9LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAg
ICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMjYyNTQ4OTM3YTIwYzA4MjA1MGI3
NzEwOTBiNzBlM2IzNzlmNDMwLi42NGNjNDJjODYzZGM5N2FjYzRmZjNhMzNlZWMxMzM0NjM1OTgx
ODEwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMjItMDQtMDUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgdGhlIHR3byBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKCkg
ZnVuY3Rpb25zLCBwYXNzaW5nIFJlbmRlcmluZ1B1cnBvc2UgZXZlcnl3aGVyZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4ODUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSBuZWVkIHRvIGV4dGVuZCBS
ZW5kZXJpbmdQdXJwb3NlIGZsYWdzIHRvIGRpc3Rpbmd1aXNoIGxheWVyIGJhY2tpbmcgc3RvcmUg
YnVmZmVycyBmcm9tCisgICAgICAgIG90aGVyIGtpbmRzIG9mIGJ1ZmZlcnMuIEJlZm9yZSBkb2lu
ZyBzbywgY29sbGFwc2UgdGhlIHR3byBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKCkgZnVuY3Rpb25zCisg
ICAgICAgIHRvZ2V0aGVyIGJ5IGNvbWJpbmluZyBSZW5kZXJpbmdNb2RlIGFuZCBTaG91bGRVc2VE
aXNwbGF5TGlzdCBpbnRvIE9wdGlvblNldDxJbWFnZUJ1ZmZlck9wdGlvbnM+LAorICAgICAgICBh
bmQgcGFzc2luZyBSZW5kZXJpbmdQdXJwb3NlIGV2ZXJ5d2hlcmUuCisgICAgICAgIAorICAgICAg
ICBBbHdheXMgcGFzc2luZyBSZW5kZXJpbmdQdXJwb3NlIGlzIHJldmVhbGluZywgYmVjYXVzZSBp
dCBmaW5kcyBjYWxsIHNpdGVzIGluIHRoZQorICAgICAgICB3ZWIgcHJvY2VzcyB0aGF0IGNhbiB0
cmlnZ2VyIGFjY2VsZXJhdGVkIGJ1ZmZlcnMgKGUuZy4gd2Via2l0Lm9yZy9iLzIzODg0NikuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW1hZ2VCdWZmZXJUZXN0cy5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIyLTA0LTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgTWFyayBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9y
IGFzIGV4cGxpY2l0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvSW1hZ2VCdWZmZXJUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvSW1hZ2VCdWZmZXJUZXN0cy5jcHAKaW5kZXggYTQyMDYxMGEwNGUzYWIwMmNiN2UzMjk3YWNk
MjUxMTFhODJkNzNhNy4uYTlhMzExYzExOTQ2YmM3ZDVkNmFhMjJiYzczNGEzMGI3ODFjN2IwMCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ltYWdlQnVmZmVy
VGVzdHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbWFnZUJ1
ZmZlclRlc3RzLmNwcApAQCAtNTUsMTAgKzU1LDEwIEBAIFRFU1QoSW1hZ2VCdWZmZXJUZXN0cywg
SW1hZ2VCdWZmZXJTdWJUeXBlQ3JlYXRlQ3JlYXRlc1N1YnR5cGVzKQogICAgIGF1dG8gcGl4ZWxG
b3JtYXQgPSBQaXhlbEZvcm1hdDo6QkdSQTg7CiAgICAgRmxvYXRTaXplIHNpemUgeyAxLmYsIDEu
ZiB9OwogICAgIGZsb2F0IHNjYWxlID0gMS5mOwotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gdW5h
Y2NlbGVyYXRlZCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRyKTsKLSAg
ICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGFjY2VsZXJhdGVkID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShz
aXplLCBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVs
Rm9ybWF0LCBudWxscHRyKTsKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGRpc3BsYXlMaXN0QWNj
ZWxlcmF0ZWQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpZZXMsIFJlbmRlcmluZ1B1cnBvc2U6OlVu
c3BlY2lmaWVkLCBzY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIpOwotICAg
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gZGlzcGxheUxpc3RVbmFjY2VsZXJhdGVkID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgU2hvdWxkVXNlRGlz
cGxheUxpc3Q6OlllcywgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHNjYWxlLCBjb2xv
clNwYWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0cik7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiB1
bmFjY2VsZXJhdGVkID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCB7IH0sIFJlbmRlcmluZ1B1
cnBvc2U6OlVuc3BlY2lmaWVkLCBzY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxw
dHIpOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gYWNjZWxlcmF0ZWQgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIHsgSW1hZ2VCdWZmZXJPcHRpb25zOjpBY2NlbGVyYXRlZCB9LCBSZW5kZXJp
bmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBu
dWxscHRyKTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGRpc3BsYXlMaXN0QWNjZWxlcmF0ZWQg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHsgSW1hZ2VCdWZmZXJPcHRpb25zOjpVc2VEaXNw
bGF5TGlzdCB9LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgc2NhbGUsIGNvbG9yU3Bh
Y2UsIHBpeGVsRm9ybWF0LCBudWxscHRyKTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGRpc3Bs
YXlMaXN0VW5hY2NlbGVyYXRlZCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgeyBJbWFnZUJ1
ZmZlck9wdGlvbnM6OkFjY2VsZXJhdGVkLCBJbWFnZUJ1ZmZlck9wdGlvbnM6OlVzZURpc3BsYXlM
aXN0IH0sIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCBzY2FsZSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQsIG51bGxwdHIpOwogCiAgICAgRVhQRUNUX05FKG51bGxwdHIsIGFjY2VsZXJh
dGVkKTsKICAgICBFWFBFQ1RfTkUobnVsbHB0ciwgdW5hY2NlbGVyYXRlZCk7CkBAIC03Miw4ICs3
Miw4IEBAIFRFU1QoSW1hZ2VCdWZmZXJUZXN0cywgSW1hZ2VCdWZmZXJTdWJQaXhlbERyYXdpbmcp
CiAgICAgYXV0byBwaXhlbEZvcm1hdCA9IFBpeGVsRm9ybWF0OjpCR1JBODsKICAgICBGbG9hdFNp
emUgbG9naWNhbFNpemUgeyAzOTIsIDQ0IH07CiAgICAgZmxvYXQgc2NhbGUgPSAxLjkxMzI2NTM1
OwotICAgIGF1dG8gZnJvbnRJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNh
bFNpemUsIFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkLCBzY2FsZSwgY29sb3JTcGFjZSwgcGl4
ZWxGb3JtYXQsIG51bGxwdHIpOwotICAgIGF1dG8gYmFja0ltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQsIHNjYWxl
LCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0cik7CisgICAgYXV0byBmcm9udEltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgeyBJbWFnZUJ1ZmZlck9w
dGlvbnM6OkFjY2VsZXJhdGVkIH0sIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCBzY2Fs
ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIpOworICAgIGF1dG8gYmFja0ltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgeyBJbWFnZUJ1ZmZlck9w
dGlvbnM6OkFjY2VsZXJhdGVkIH0sIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCBzY2Fs
ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIpOwogICAgIAogICAgIGF1dG8gc3Ry
b2tlUmVjdCA9IEZsb2F0UmVjdCB7IHsgfSwgbG9naWNhbFNpemUgfTsKICAgICBzdHJva2VSZWN0
LmluZmxhdGUoLTAuNSk7CkBAIC0xMzEsNyArMTMxLDcgQEAgVEVTVChJbWFnZUJ1ZmZlclRlc3Rz
LCBESVNBQkxFRF9EcmF3SW1hZ2VCdWZmZXJEb2VzTm90UmVmZXJlbmNlRXh0cmFNZW1vcnkpCiAK
ICAgICB7CiAgICAgICAgIC8vIE1ha2UgcG90ZW50aWFsIGFjY2VsZXJhdGVkIGRyYXdpbmcgYmFj
a2VuZCBpbnN0YW50aWF0ZSByb3VnaGx5IHRoZSBnbG9iYWwgc3RydWN0dXJlcyBuZWVkZWQgZm9y
IHRoaXMgdGVzdC4KLSAgICAgICAgYXV0byBhY2NlbGVyYXRlZCA9IEltYWdlQnVmZmVyOjpjcmVh
dGUobG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkLCBzY2FsZSwgY29sb3JT
cGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIpOworICAgICAgICBhdXRvIGFjY2VsZXJhdGVkID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgeyBJbWFnZUJ1ZmZlck9wdGlvbnM6OkFj
Y2VsZXJhdGVkIH0sIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCBzY2FsZSwgY29sb3JT
cGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIpOwogICAgICAgICBhdXRvIGZpbGxSZWN0ID0gRmxv
YXRSZWN0IHsgeyB9LCBsb2dpY2FsU2l6ZSB9OwogICAgICAgICBhY2NlbGVyYXRlZC0+Y29udGV4
dCgpLmZpbGxSZWN0KGZpbGxSZWN0LCBDb2xvcjo6Z3JlZW4pOwogICAgICAgICBFWFBFQ1RfVFJV
RShpbWFnZUJ1ZmZlclBpeGVsSXMoQ29sb3I6OmdyZWVuLCAqYWNjZWxlcmF0ZWQsIGZpbGxSZWN0
Lm1heFgoKSAtIDEsIGZpbGxSZWN0Lm1heFkoKSAtIDEpKTsKQEAgLTE0MSwxMyArMTQxLDEzIEBA
IFRFU1QoSW1hZ2VCdWZmZXJUZXN0cywgRElTQUJMRURfRHJhd0ltYWdlQnVmZmVyRG9lc05vdFJl
ZmVyZW5jZUV4dHJhTWVtb3J5KQogICAgIGF1dG8gbGFzdEZvb3RwcmludCA9IGluaXRpYWxGb290
cHJpbnQ7CiAgICAgRVhQRUNUX0dUKGxhc3RGb290cHJpbnQsIDB1KTsKIAotICAgIGF1dG8gYWNj
ZWxlcmF0ZWQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2Rl
OjpBY2NlbGVyYXRlZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRyKTsK
KyAgICBhdXRvIGFjY2VsZXJhdGVkID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwg
eyBJbWFnZUJ1ZmZlck9wdGlvbnM6OkFjY2VsZXJhdGVkIH0sIFJlbmRlcmluZ1B1cnBvc2U6OlVu
c3BlY2lmaWVkLCBzY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIpOwogICAg
IGF1dG8gZmlsbFJlY3QgPSBGbG9hdFJlY3QgeyB7IH0sIGxvZ2ljYWxTaXplIH07CiAgICAgYWNj
ZWxlcmF0ZWQtPmNvbnRleHQoKS5maWxsUmVjdChmaWxsUmVjdCwgQ29sb3I6OmdyZWVuKTsKICAg
ICBhY2NlbGVyYXRlZC0+Zmx1c2hDb250ZXh0KCk7CiAgICAgRVhQRUNUX1RSVUUobWVtb3J5Rm9v
dHByaW50Q2hhbmdlZEJ5KGxhc3RGb290cHJpbnQsIGxvZ2ljYWxTaXplQnl0ZXMsIGZvb3Rwcmlu
dEVycm9yKSk7CiAKLSAgICBhdXRvIHVuYWNjZWxlcmF0ZWQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBzY2FsZSwgY29sb3JT
cGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIpOworICAgIGF1dG8gdW5hY2NlbGVyYXRlZCA9IElt
YWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHsgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5z
cGVjaWZpZWQsIHNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0cik7CiAgICAg
dW5hY2NlbGVyYXRlZC0+Y29udGV4dCgpLmZpbGxSZWN0KGZpbGxSZWN0LCBDb2xvcjo6eWVsbG93
KTsKICAgICBFWFBFQ1RfVFJVRShpbWFnZUJ1ZmZlclBpeGVsSXMoQ29sb3I6OnllbGxvdywgKnVu
YWNjZWxlcmF0ZWQsIGZpbGxSZWN0Lm1heFgoKSAtIDEsIGZpbGxSZWN0Lm1heFkoKSAtIDEpKTsK
ICAgICBFWFBFQ1RfVFJVRShtZW1vcnlGb290cHJpbnRDaGFuZ2VkQnkobGFzdEZvb3RwcmludCwg
bG9naWNhbFNpemVCeXRlcywgZm9vdHByaW50RXJyb3IpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAK
aW5kZXggYmNjNWExMThmMjNkN2NiYjY0ZWZjMWU2NGNjMjcxMzkwOTVkYjAzMC4uY2Q2ZDlmYzhl
MjM1MDAyNDg1OTE2NWQzNGE2NGE0NmJlNjYwMjUzOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAK
QEAgLTczLDcgKzczLDcgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBSZXBsYXlXaXRoTWlzc2lu
Z1Jlc291cmNlKQogICAgIH0KIAogICAgIHsKLSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoeyAxMDAsIDEwMCB9LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh7IDEwMCwgMTAwIH0sIHsgfSwgUmVuZGVy
aW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JB
OCk7CiAgICAgICAgIExvY2FsUmVzb3VyY2VIZWFwIHJlc291cmNlSGVhcDsKICAgICAgICAgcmVz
b3VyY2VIZWFwLmFkZChpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGltYWdlQnVmZmVyLnJlbGVhc2VO
b25OdWxsKCkpOwogCg==
</data>
<flag name="review"
          id="485169"
          type_id="1"
          status="+"
          setter="sabouhallawa"
    />
    <flag name="commit-queue"
          id="485177"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456778</attachid>
            <date>2022-04-05 20:50:20 -0700</date>
            <delta_ts>2022-04-05 21:01:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238851-20220405205019.patch</filename>
            <type>text/plain</type>
            <size>56968</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI2NWUxZGNmY2YzZTk2
MTk2NDgwMTc4ZWMyNDZkNTY2ZDUwMmVjNi4uMzdkMzQ3MDIzZTM2YTIyODNhNTUyYWZjNmVlNWYy
Y2IzNWZmNzFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDIyLTA0LTA1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVuaWZ5IHRoZSB0
d28gSW1hZ2VCdWZmZXI6OmNyZWF0ZSgpIGZ1bmN0aW9ucywgcGFzc2luZyBSZW5kZXJpbmdQdXJw
b3NlIGV2ZXJ5d2hlcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzODg1MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhaWQgQWJvdS1IYWxsYXdhLgor
CisgICAgICAgIEkgbmVlZCB0byBleHRlbmQgUmVuZGVyaW5nUHVycG9zZSBmbGFncyB0byBkaXN0
aW5ndWlzaCBsYXllciBiYWNraW5nIHN0b3JlIGJ1ZmZlcnMgZnJvbQorICAgICAgICBvdGhlciBr
aW5kcyBvZiBidWZmZXJzLiBCZWZvcmUgZG9pbmcgc28sIGNvbGxhcHNlIHRoZSB0d28gSW1hZ2VC
dWZmZXI6OmNyZWF0ZSgpIGZ1bmN0aW9ucworICAgICAgICB0b2dldGhlciBieSBjb21iaW5pbmcg
UmVuZGVyaW5nTW9kZSBhbmQgU2hvdWxkVXNlRGlzcGxheUxpc3QgaW50byBPcHRpb25TZXQ8SW1h
Z2VCdWZmZXJPcHRpb25zPiwKKyAgICAgICAgYW5kIHBhc3NpbmcgUmVuZGVyaW5nUHVycG9zZSBl
dmVyeXdoZXJlLgorICAgICAgICAKKyAgICAgICAgQWx3YXlzIHBhc3NpbmcgUmVuZGVyaW5nUHVy
cG9zZSBpcyByZXZlYWxpbmcsIGJlY2F1c2UgaXQgZmluZHMgY2FsbCBzaXRlcyBpbiB0aGUKKyAg
ICAgICAgd2ViIHByb2Nlc3MgdGhhdCBjYW4gdHJpZ2dlciBhY2NlbGVyYXRlZCBidWZmZXJzIChl
LmcuIHdlYmtpdC5vcmcvYi8yMzg4NDYpLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxv
YWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXJ0d29ya0ltYWdlTG9h
ZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAg
ICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tUGFpbnRDYW52YXM6OmNvcGllZEltYWdlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50Ojpj
cmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZUJ1ZmZlckZv
clBhaW50aW5nIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
aHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2Fu
dmFzOjp0cmFuc2ZlclRvSW1hZ2VCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVu
Q2FudmFzOjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogaHRtbC9jYW52YXMv
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
Qml0bWFwUmVuZGVyaW5nQ29udGV4dDo6c2V0T3V0cHV0Qml0bWFwKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWlu
ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0Nv
bnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uSW1hZ2UpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEpOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFw
c2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xp
cCk6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OnByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6V1RG
X1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RT
aGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJ
bnNldFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6
ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6
OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1
cjo6ZHJhd1NoYWRvd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVySW1hZ2U6OmltYWdlQnVmZmVyRnJvbVBpeGVsQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmdldENvbnZlcnRlZFBpeGVsQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBw
bGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGVTb2Z0d2FyZUFwcGxpZXI6OmFwcGx5
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhR0NHTEFOR0xFTGF5ZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6R0NHTEFOR0xFTGF5ZXI6
OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmU6OnVw
ZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVv
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpp
bWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dCk6
CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKwogMjAyMi0wNC0w
NSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE1hcmsgU3RyaW5n
KGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBhcyBleHBsaWNpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IGQwZDBjZGE5ODU2OGQyYmIxYTAxMzUyODJhYWUxZGVjN2JmNDc4YWQuLjQ5
Mjc0ZDU0OWUzZjA1YmVmOWExZGZhMDFhNjQyYzcwYzJiZDJiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMi0wNC0wNSAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBVbmlmeSB0aGUgdHdvIEltYWdlQnVm
ZmVyOjpjcmVhdGUoKSBmdW5jdGlvbnMsIHBhc3NpbmcgUmVuZGVyaW5nUHVycG9zZSBldmVyeXdo
ZXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg4
NTEKKworICAgICAgICBSZXZpZXdlZCBieSBTYWlkIEFib3UtSGFsbGF3YS4KKworICAgICAgICBJ
IG5lZWQgdG8gZXh0ZW5kIFJlbmRlcmluZ1B1cnBvc2UgZmxhZ3MgdG8gZGlzdGluZ3Vpc2ggbGF5
ZXIgYmFja2luZyBzdG9yZSBidWZmZXJzIGZyb20KKyAgICAgICAgb3RoZXIga2luZHMgb2YgYnVm
ZmVycy4gQmVmb3JlIGRvaW5nIHNvLCBjb2xsYXBzZSB0aGUgdHdvIEltYWdlQnVmZmVyOjpjcmVh
dGUoKSBmdW5jdGlvbnMKKyAgICAgICAgdG9nZXRoZXIgYnkgY29tYmluaW5nIFJlbmRlcmluZ01v
ZGUgYW5kIFNob3VsZFVzZURpc3BsYXlMaXN0IGludG8gT3B0aW9uU2V0PEltYWdlQnVmZmVyT3B0
aW9ucz4sCisgICAgICAgIGFuZCBwYXNzaW5nIFJlbmRlcmluZ1B1cnBvc2UgZXZlcnl3aGVyZS4K
KyAgICAgICAgCisgICAgICAgIEFsd2F5cyBwYXNzaW5nIFJlbmRlcmluZ1B1cnBvc2UgaXMgcmV2
ZWFsaW5nLCBiZWNhdXNlIGl0IGZpbmRzIGNhbGwgc2l0ZXMgaW4gdGhlCisgICAgICAgIHdlYiBw
cm9jZXNzIHRoYXQgY2FuIHRyaWdnZXIgYWNjZWxlcmF0ZWQgYnVmZmVycyAoZS5nLiB3ZWJraXQu
b3JnL2IvMjM4ODQ2KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVu
dFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbSk6CisKIDIwMjItMDQtMDUgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJrIFN0cmluZyhjb25zdCBjaGFyKikgY29u
c3RydWN0b3IgYXMgZXhwbGljaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5jcHAKaW5kZXggYjY2YjViZjE2YWI3MWUyMDY0ZmZmYjc4MjBhYzMxNDI2ODAx
ZGIxNS4uYWQ0MDRkN2YyOTI4YTdhZTVhYzhiNmM1MDIyYWNkOTcxYWRhZmZlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTI4OSw3ICsy
ODksNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0
ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogCiAgICAgICAgIGF1dG8gYml0bWFwSW1h
Z2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgICAgIGJpdG1hcEltYWdlLT5zZXREYXRh
KFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwotICAgICAgICBhdXRvIGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZp
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgICAgICBtX2RhdGEgPSB7IG51
bGxTdHJpbmcoKSB9OwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAppbmRleCA4NzRhYTdm
MGIxOGYwZWU3NTg4MGJhNWY1ZWY2N2Q0N2JmYzJiMmI0Li4xNzMwM2ViZmQ0Y2I2ZTI4YTBlNTA5
N2QwYmM3YjkxYjdhYmYxODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIEFy
dHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBjb25zdCBOZXR3b3JrTAogICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIGF1dG8g
Yml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgYml0bWFwSW1hZ2UtPnNl
dERhdGEoV1RGTW92ZShidWZmZXJUb1Nhbml0aXplKSwgdHJ1ZSk7Ci0gICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwog
ICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgbV9jYWxsYmFjayhudWxscHRyKTsKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlcklt
YWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
CmluZGV4IDVkN2E1NTFlZWIzZWZmNDAzNjY3Njc0MDU3Yzg4ZTUxNWExMWY5NWUuLmIxZTVjNzJl
YjJkN2U5ODg3MWMyMzNiOWNjYTRhZmNlNzI2ZDJmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTExNCw5ICsxMTQsOCBAQCBSZWZQdHI8SW1hZ2U+
IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25z
dCBGbG9hdFNpegogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJ
bWFnZSgpOwogCi0gICAgLy8gVHJhbnNmb3JtIEltYWdlIGludG8gSW1hZ2VCdWZmZXIuCiAgICAg
YXV0byByZW5kZXJpbmdNb2RlID0gcmVuZGVyZXIucGFnZSgpLmFjY2VsZXJhdGVkRmlsdGVyc0Vu
YWJsZWQoKSA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZDsKLSAgICBhdXRvIHNvdXJjZUltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShz
aXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1
cnBvc2U6OkRPTSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0
OjpCR1JBOCwgeyByZW5kZXJlci5ob3N0V2luZG93KCkgfSk7CisgICAgYXV0byBzb3VyY2VJbWFn
ZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBidWZmZXJP
cHRpb25zRm9yUmVuZGluZ01vZGUocmVuZGVyaW5nTW9kZSksIHsgcmVuZGVyZXIuaG9zdFdpbmRv
dygpIH0pOwogICAgIGlmICghc291cmNlSW1hZ2UpCiAgICAgICAgIHJldHVybiAmSW1hZ2U6Om51
bGxJbWFnZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50
Q2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCmlu
ZGV4IGEyNDBiMDhkNWEyMzdmZDY4ODI0ZTdkODgwODFjOGI2YWE5NjcwNWQuLjMyZDExZDg5ZTgw
Y2E1NWZjYjZkNmE4NjAxZWRhOTYwNmIwZmNhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3Vz
dG9tUGFpbnRDYW52YXMuY3BwCkBAIC05Miw3ICs5Miw3IEBAIEltYWdlKiBDdXN0b21QYWludENh
bnZhczo6Y29waWVkSW1hZ2UoKSBjb25zdAogICAgIGlmICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbV9jb3BpZWRCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7
CisgICAgbV9jb3BpZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVy
aW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbV9jb3BpZWRCdWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCmluZGV4IDkyOTg1ODY5ODQ5NGJhYzFhZDAxNjU3NzgxYTIwNjA3MmFhYTEwYTcuLjNmNDU4
NmZiYzYwYmM4OTc4ZGQzMjg0MDZiNDZhMGYwOWMxYmM5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC04ODYsOSArODg2LDEyIEBAIHZvaWQgSFRNTENh
bnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QKIAogICAgIGF1dG8gaG9zdFdp
bmRvdyA9IChkb2N1bWVudCgpLnZpZXcoKSAmJiBkb2N1bWVudCgpLnZpZXcoKS0+cm9vdCgpKSA/
IGRvY3VtZW50KCkudmlldygpLT5yb290KCktPmhvc3RXaW5kb3coKSA6IG51bGxwdHI7CiAKLSAg
ICBhdXRvIHJlbmRlcmluZ01vZGUgPSBzaG91bGRBY2NlbGVyYXRlKGFyZWEpID8gUmVuZGVyaW5n
TW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOworICAgIE9w
dGlvblNldDxJbWFnZUJ1ZmZlck9wdGlvbnM+IGJ1ZmZlck9wdGlvbnM7CisgICAgaWYgKHNob3Vs
ZEFjY2VsZXJhdGUoYXJlYSkpCisgICAgICAgIGJ1ZmZlck9wdGlvbnMuYWRkKEltYWdlQnVmZmVy
T3B0aW9uczo6QWNjZWxlcmF0ZWQpOwogICAgIC8vIEZJWE1FOiBBZGQgYSBuZXcgc2V0dGluZyBm
b3IgRGlzcGxheUxpc3QgZHJhd2luZyBvbiBjYW52YXMuCi0gICAgYXV0byB1c2VEaXNwbGF5TGlz
dCA9IG1fdXNlc0Rpc3BsYXlMaXN0RHJhd2luZy52YWx1ZV9vcihkb2N1bWVudCgpLnNldHRpbmdz
KCkuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCgpKSA/IFNob3VsZFVzZURpc3BsYXlMaXN0OjpZ
ZXMgOiBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm87CisgICAgaWYgKG1fdXNlc0Rpc3BsYXlMaXN0
RHJhd2luZy52YWx1ZV9vcihkb2N1bWVudCgpLnNldHRpbmdzKCkuZGlzcGxheUxpc3REcmF3aW5n
RW5hYmxlZCgpKSkKKyAgICAgICAgYnVmZmVyT3B0aW9ucy5hZGQoSW1hZ2VCdWZmZXJPcHRpb25z
OjpVc2VEaXNwbGF5TGlzdCk7CiAKICAgICBhdXRvIFtjb2xvclNwYWNlLCBwaXhlbEZvcm1hdF0g
PSBbJl0gewogICAgICAgICBpZiAobV9jb250ZXh0KQpAQCAtODk2LDcgKzg5OSw3IEBAIHZvaWQg
SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QKICAgICAgICAgcmV0
dXJuIHN0ZDo6cGFpciB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1h
dDo6QkdSQTggfTsKICAgICB9KCk7CiAKLSAgICBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUoKSwgcmVuZGVyaW5nTW9kZSwgdXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1
cnBvc2U6OkNhbnZhcywgMSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpKTsK
KyAgICBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5n
UHVycG9zZTo6Q2FudmFzLCAxLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgYnVmZmVyT3B0aW9u
cywgeyBob3N0V2luZG93IH0pKTsKIAogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdf
U1RPUkUpCiAgICAgaWYgKG1fY29udGV4dCAmJiBtX2NvbnRleHQtPmlzMmQoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggZWIzODZlZmIzMzBkNjM4NTg4
ZWJjNjIwNzgzMDFkNTlkNTQ5NzUwYy4uMDYwYWMzMDc1YjY2MzExZGNjZmMxZjUwYTdjMjA4YzEw
YjAwODE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0y
OTcsOCArMjk3LDEyIEBAIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBIVE1M
VmlkZW9FbGVtZW50Ojpjb2xvclNwYWNlKCkgY29uc3QKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSFRN
TFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7CiAgICAg
YXV0byogaG9zdFdpbmRvdyA9IGRvY3VtZW50KCkudmlldygpICYmIGRvY3VtZW50KCkudmlldygp
LT5yb290KCkgPyBkb2N1bWVudCgpLnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCkgOiBudWxs
cHRyOwotICAgIGF1dG8gc2hvdWxkVXNlRGlzcGxheUxpc3QgPSBkb2N1bWVudCgpLnNldHRpbmdz
KCkuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCgpID8gU2hvdWxkVXNlRGlzcGxheUxpc3Q6Olll
cyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBzaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5n
UHVycG9zZTo6TWVkaWFQYWludGluZywgMSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhvc3RX
aW5kb3cpOworCisgICAgYXV0byBidWZmZXJPcHRpb25zID0gYnVmZmVyT3B0aW9uc0ZvclJlbmRp
bmdNb2RlKHJlbmRlcmluZ01vZGUpOworICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkuZGlz
cGxheUxpc3REcmF3aW5nRW5hYmxlZCgpKQorICAgICAgICBidWZmZXJPcHRpb25zLmFkZChJbWFn
ZUJ1ZmZlck9wdGlvbnM6OlVzZURpc3BsYXlMaXN0KTsKKworICAgIHJldHVybiBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ1B1cnBvc2U6Ok1lZGlhUGFpbnRpbmcsIDEsIGNvbG9y
U3BhY2UsIHBpeGVsRm9ybWF0LCBidWZmZXJPcHRpb25zLCB7IGhvc3RXaW5kb3cgfSk7CiB9CiAK
IHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlQml0bWFwLmNwcAppbmRleCBhY2NlYWE1M2JjYmNmMzgzN2JkNGI5OTJkNmUyYWE1
NDc5NDI5MDlkLi4wMjEwNGI0ZGYyNTc4NDE5NDYzN2M4NDFkYjExZDQ3OGEwYWNjNTJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcApAQCAtODksMTYgKzg5LDE4IEBAIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gSW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwCiAjZW5kaWYKICAgICB9CiAKKyAgICBhdXRvIGJ1ZmZlck9wdGlvbnMg
PSBidWZmZXJPcHRpb25zRm9yUmVuZGluZ01vZGUocmVuZGVyaW5nTW9kZSk7CisKICAgICBpZiAo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgYXV0byYgZG9j
dW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAg
ICAgIGlmIChkb2N1bWVudC52aWV3KCkgJiYgZG9jdW1lbnQudmlldygpLT5yb290KCkpIHsKICAg
ICAgICAgICAgIGF1dG8gaG9zdFdpbmRvdyA9IGRvY3VtZW50LnZpZXcoKS0+cm9vdCgpLT5ob3N0
V2luZG93KCk7Ci0gICAgICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBy
ZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6
OkNhbnZhcywgcmVzb2x1dGlvblNjYWxlLCAqaW1hZ2VCdWZmZXJDb2xvclNwYWNlLCBQaXhlbEZv
cm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOworICAgICAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVy
OjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2NhbGUs
ICppbWFnZUJ1ZmZlckNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgYnVmZmVyT3B0aW9u
cywgeyBob3N0V2luZG93IH0pOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gRklYTUUgPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzIxODQ4Mj4gRW5hYmxlIHdvcmtlciBiYXNlZCBJbWFnZUJpdG1h
cCBhbmQgT2Zmc2NyZWVuQ2FudmFzIGRyYXdpbmcgdG8gdXNlIEdQVSBQcm9jZXNzIHJlbmRlcmlu
ZwotICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJl
c29sdXRpb25TY2FsZSwgKmltYWdlQnVmZmVyQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdQdXJwb3Nl
OjpVbnNwZWNpZmllZCwgcmVzb2x1dGlvblNjYWxlLCAqaW1hZ2VCdWZmZXJDb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdDo6QkdSQTgsIGJ1ZmZlck9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQml0bWFw
OjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIEltYWdlQml0bWFwOjpTb3VyY2UmJiBzb3VyY2UsIEltYWdlQml0bWFwT3B0aW9ucyYm
IG9wdGlvbnMsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAppbmRleCA4OGQ5Zjc4YzlhNWM5Y2JiMjIwOGNkYzc4OTQx
MWRlODI3NjZjMzBhLi40N2E2M2FlYjA1ZWM5ODcwOTk1ZGQyMjg3MTdjOWI5NjM2Y2RjMjZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCkBAIC0yNzYsNyArMjc2LDcg
QEAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlQml0bWFwPj4gT2Zmc2NyZWVuQ2FudmFzOjp0cmFu
c2ZlclRvSW1hZ2VCaXRtYXAoKQogICAgICAgICAgICAgcmV0dXJuIHsgUmVmUHRyPEltYWdlQml0
bWFwPiB7IG51bGxwdHIgfSB9OwogCiAgICAgICAgIGlmICghbV9oYXNDcmVhdGVkSW1hZ2VCdWZm
ZXIpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdl
QnVmZmVyKCpjYW52YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzaXplKCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIG1fY29udGV4dC0+Y29sb3JTcGFjZSgpKTsKKyAgICAg
ICAgICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKCpjYW52
YXNCYXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzaXplKCksIFJlbmRlcmluZ1B1cnBvc2U6
OlVuc3BlY2lmaWVkLCBtX2NvbnRleHQtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICByZXR1
cm4geyBJbWFnZUJpdG1hcDo6Y3JlYXRlKEltYWdlQml0bWFwQmFja2luZyhXVEZNb3ZlKGJ1ZmZl
cikpKSB9OwogICAgICAgICB9CiAKQEAgLTQ5Miw3ICs0OTIsNyBAQCB2b2lkIE9mZnNjcmVlbkNh
bnZhczo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogICAgICAgICByZXR1cm47CiAKICAgICBh
dXRvIGNvbG9yU3BhY2UgPSBtX2NvbnRleHQgPyBtX2NvbnRleHQtPmNvbG9yU3BhY2UoKSA6IERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwotICAgIHNldEltYWdlQnVmZmVyKEltYWdlQml0
bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcigqY2FudmFzQmFzZVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBjb2xvclNwYWNlKSk7Cisg
ICAgc2V0SW1hZ2VCdWZmZXIoSW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKCpjYW52YXNC
YXNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzaXplKCksIFJlbmRlcmluZ1B1cnBvc2U6OlVu
c3BlY2lmaWVkLCBjb2xvclNwYWNlKSk7CiB9CiAKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gT2Zmc2Ny
ZWVuQ2FudmFzOjp0YWtlSW1hZ2VCdWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggZTQ2ZGRjYWY2YWYzNWMwNDJiZmZkNDhmYmYzYmVmYWJmMGViZTlkNS4uYWVlNTJiYjgxODI4
M2UyNmExM2YyNzhiZTZmZmFhODkyMmQ1YWMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC05
NSw3ICs5NSw5IEBAIHZvaWQgSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0OjpzZXRPdXRwdXRC
aXRtYXAoUmVmUHRyPEltYWdlQml0bWFwPiBpbWFnZUJpdG1hCiAgICAgICAgIC8vIG9ubHkgcmVh
c29uIEkgY2FuIHRoaW5rIG9mIGlzIHRvRGF0YVVSTCgpLCBidXQgdGhhdCBkb2Vzbid0IHNlZW0g
bGlrZQogICAgICAgICAvLyBhIGdvb2QgZW5vdWdoIGFyZ3VtZW50IHRvIHdhc3RlIG1lbW9yeS4K
IAotICAgICAgICBjYW52YXMoKS0+c2V0SW1hZ2VCdWZmZXJBbmRNYXJrRGlydHkoSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShGbG9hdFNpemUoY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQo
KSksIGJ1ZmZlclJlbmRlcmluZ01vZGUsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8g
dXNlIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcyB0byBhdm9pZCBhY2NlbGVyYXRlZCBidWZmZXJz
IGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgKHdlYmtpdC5vcmcvYi8yMzg4NDYpLgorICAgICAg
ICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKGNhbnZhcygpLT53
aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmll
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCwg
YnVmZmVyT3B0aW9uc0ZvclJlbmRpbmdNb2RlKGJ1ZmZlclJlbmRlcmluZ01vZGUpKTsKKyAgICAg
ICAgY2FudmFzKCktPnNldEltYWdlQnVmZmVyQW5kTWFya0RpcnR5KFdURk1vdmUoYnVmZmVyKSk7
CiAKICAgICAgICAgLy8gMS40LiBTZXQgdGhlIG91dHB1dCBiaXRtYXAncyBvcmlnaW4tY2xlYW4g
ZmxhZyB0byB0cnVlLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDBkMTJkMjIzNzIxZTQ2Nzc3ZWM2
MzZlMmI1ZmM2MjFhNWQ2ZjBkY2UuLmI1ODZmYzdhYjU5NTQ5ODRkNzcxZmMzYTVhNWQ4NDkzYmYw
MzZiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03ODM3LDcgKzc4MzcsNyBAQCBJbWFnZUJ1ZmZl
ciogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6aW1hZ2VC
dWZmZXIoY29uc3QgSQogICAgIH0KIAogICAgIC8vIEZJWE1FICgxNDk0MjMpOiBTaG91bGQgdGhp
cyBJbWFnZUJ1ZmZlciBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZD8KLSAgICBhdXRv
IHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byB0ZW1w
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmll
ZCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIXRlbXApCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEFTU0VSVChtX2J1ZmZlcnMuc2l6ZSgpID4gMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0
VHJhY2tDb250YWluZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwCmluZGV4IGFmYjVmMWU2Y2Rl
ZWEzODFkMTFkYWRjY2Y2NWFhZjlkZjg3OWQxYmUuLmQyZTZhZGExMjA2MWQ3MGI5YzhmNTdiNWE2
MmMyOGI1NTk3MDBhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3Bw
CkBAIC00MjAsNyArNDIwLDcgQEAgUmVmUHRyPEltYWdlPiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGkKICAgICBJbnRSZWN0
IHBhaW50aW5nUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPnNpemUoKSk7CiAKICAg
ICAvLyBGSVhNRSAoMTQ5NDIyKTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlv
bmFsbHkgdW5hY2NlbGVyYXRlZC4KLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUocGFpbnRpbmdSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgZGV2
aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGlu
Z1JlY3Quc2l6ZSgpLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgZGV2aWNlU2NhbGVG
YWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAppbmRleCA1MGFkNWNiYzk2NWRl
MDAwYjg4MTY4OTdiYWU5ODE3YTNlZGM5ZmU2Li5jNzc4NmY0ODljZmU5ZDMwMjBmZTgyZjNhODRl
YWU5ZDBiY2ZmZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2Fu
dmFzLmNwcApAQCAtMTA5OCw3ICsxMDk4LDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhG
b3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAgICAgICAgICAgICBpZiAoQ2FjaGVk
SW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpKSB7CiAgICAg
ICAgICAgICAgICAgSW1hZ2UqIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgICAg
ICAgICAgICAgaWYgKGltYWdlICYmIGltYWdlICE9ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
aW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXpl
KCksIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgICAgICAgICAgICAgaW1h
Z2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBvaW50KDAsIDApKTsK
ICAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImlt
YWdlL3BuZyJfcyk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTExMiw3ICsxMTEyLDcgQEAgaW50
IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEp
CiAKICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVvV2lkdGggPSB2aWRlb0VsZW1lbnQtPnZpZGVv
V2lkdGgoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVvSGVpZ2h0ID0gdmlkZW9FbGVtZW50
LT52aWRlb0hlaWdodCgpOwotICAgICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoRmxvYXRTaXplKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShGbG9hdFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5kZXJp
bmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAgICAgICBpZiAoaW1hZ2VCdWZmZXIpIHsKICAg
ICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQtPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGlt
YWdlQnVmZmVyLT5jb250ZXh0KCksIEZsb2F0UmVjdCgwLCAwLCB2aWRlb1dpZHRoLCB2aWRlb0hl
aWdodCkpOwogICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhVVJM
KCJpbWFnZS9wbmciX3MpOwpAQCAtMTE0OSw3ICsxMTQ5LDcgQEAgaW50IEluc3BlY3RvckNhbnZh
czo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAgICAgICAgICAgICBp
ZiAoYXV0byogY2FjaGVkSW1hZ2UgPSBjc3NJbWFnZVZhbHVlLT5pbWFnZSgpKSB7CiAgICAgICAg
ICAgICAgICAgYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAg
ICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UgIT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAg
ICAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFn
ZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgICAgICAgICAg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwg
UmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1
ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAg
ICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2Uv
cG5nIl9zKTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFw
c2hvdHRpbmcuY3BwCmluZGV4IDVkMjg3NmE1ZGZkYTVkNjVlZmMyOWFkODAwNGRhOWMwMzE3ZmY1
NGIuLjBiNGI1NTZkOTcxNGUwYmMyYTU2ZTA5YzBiODI5Nzc2ZmY1MDllNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgUmVm
UHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdGhDbGlwKEZyYW1lJiBmcmFtZSwg
Y29uc3QgSW50UmVjdCYgaW1hZ2UKICAgICBpZiAob3B0aW9ucy5mbGFncy5jb250YWlucyhTbmFw
c2hvdEZsYWdzOjpQYWludFdpdGhJbnRlZ3JhbFNjYWxlRmFjdG9yKSkKICAgICAgICAgc2NhbGVG
YWN0b3IgPSBjZWlsZihzY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgc2NhbGVGYWN0b3IsIG9wdGlvbnMuY29sb3JTcGFjZSwgb3B0aW9ucy5waXhlbEZvcm1hdCk7
CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCks
IFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCBzY2FsZUZhY3Rvciwgb3B0aW9ucy5jb2xv
clNwYWNlLCBvcHRpb25zLnBpeGVsRm9ybWF0KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC1pbWFnZVJl
Y3QueCgpLCAtaW1hZ2VSZWN0LnkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVD
bGllbnQuY3BwCmluZGV4IGRlOTliNzc4NmMzYThmMjViMzA3M2IyODA3ZmE1MmMyYjlkZmQ0Zjcu
LjA3YWMxNzAyZWViN2VhZTgwNTcwMjY3ZWY3MjZhNjVjZDRhOWIwZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBQ
YWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBSZWYKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjYWNo
ZWRJbWFnZSA9IGltYWdlRWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UgIT0gJkltYWdlOjpudWxsSW1h
Z2UoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBzaG90ID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgMSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBzaG90LT5jb250ZXh0KCkuZHJhd0ltYWdl
KCppbWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgUGFn
ZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgUmVmCiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvJiB2aWRlb0VsZW1l
bnQgPSBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50Pigqbm9kZSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCB2aWRlb1dpZHRoID0gdmlkZW9FbGVtZW50LnZpZGVvV2lkdGgoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVvSGVpZ2h0ID0gdmlkZW9FbGVt
ZW50LnZpZGVvSGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hv
dCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0
KSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
dmlkZW9FbGVtZW50LnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KHNuYXBzaG90LT5jb250ZXh0
KCksIEZsb2F0UmVjdCgwLCAwLCB2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCkpOwogICAgICAgICAg
ICAgICAgICAgICB9CiAjZW5kaWYKQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lkIFBhZ2VDb25zb2xl
Q2xpZW50OjpzY3JlZW5zaG90KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIFJlZgogICAgICAgICAgICAgdGFyZ2V0ID0gcG9zc2libGVUYXJnZXQ7CiAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSkp
IHsKICAgICAgICAgICAgICAgICBhdXRvIHNvdXJjZVNpemUgPSBpbWFnZURhdGEtPnNpemUoKTsK
LSAgICAgICAgICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoc291cmNlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc291cmNlU2l6
ZSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKSB7CiAgICAgICAgICAgICAgICAgICAgIElu
dFJlY3Qgc291cmNlUmVjdChJbnRQb2ludCgpLCBzb3VyY2VTaXplKTsKICAgICAgICAgICAgICAg
ICAgICAgaW1hZ2VCdWZmZXItPnB1dFBpeGVsQnVmZmVyKGltYWdlRGF0YS0+cGl4ZWxCdWZmZXIo
KSwgc291cmNlUmVjdCk7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZl
ci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MsIHN0ZDo6bnVsbG9wdCwgUHJlc2VydmVSZXNvbHV0
aW9uOjpZZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwCmluZGV4IDM4Y2Y4Nzk2ZjlhODE3ZGI1ZTk2NDY3M2JjYmNhMDhkOGY3ODlhZDEu
LjFhMGJhMzY2ZjQyM2I1MmI3NzJlZDg1YjNiZDNlMzhmNTNlYjkxMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTE2MCw3ICsx
NjAsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgcgogICAgICAgICByZXR1cm4gaW1hZ2U7CiAK
ICAgICBhdXRvIGNvcnJlY3RlZFNpemVGbG9hdCA9IGNvcnJlY3RlZFNpemUgPyBGbG9hdFNpemUo
Y29ycmVjdGVkU2l6ZS52YWx1ZSgpKSA6IHNpemUoKTsKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoY29ycmVjdGVkU2l6ZUZsb2F0LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY29ycmVjdGVkU2l6
ZUZsb2F0LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgMSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgIHJldHVybiBpbWFnZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMjc1MWFjMDg5OTEyZTc2ZWZlZDUx
YTU5MzIzNzJiYzZmMDcyYWIxMy4uZjZiNTAzZjAxODFkOWU0ODQ2ZmFmZTcxMTIxMDY1NzE2NTZi
YWM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCkBAIC0xOTgsMTAgKzE5OCwxMyBAQCBJbnRTaXplIEdyYXBoaWNzQ29u
dGV4dDo6Y29tcGF0aWJsZUltYWdlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpIGNv
bnN0CiAKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z01vZGU+IHJlbmRlcmluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTWV0aG9kPiByZW5k
ZXJpbmdNZXRob2QpIGNvbnN0CiB7CisgICAgYXV0byBidWZmZXJPcHRpb25zID0gYnVmZmVyT3B0
aW9uc0ZvclJlbmRpbmdNb2RlKHJlbmRlcmluZ01vZGUudmFsdWVfb3IodGhpcy0+cmVuZGVyaW5n
TW9kZSgpKSk7CisKICAgICBpZiAoIXJlbmRlcmluZ01ldGhvZCB8fCAqcmVuZGVyaW5nTWV0aG9k
ID09IFJlbmRlcmluZ01ldGhvZDo6TG9jYWwpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUudmFsdWVfb3IodGhpcy0+cmVuZGVyaW5nTW9kZSgp
KSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAg
ICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdQdXJwb3NlOjpV
bnNwZWNpZmllZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdS
QTgsIGJ1ZmZlck9wdGlvbnMpOwogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSwgcmVuZGVyaW5nTW9kZS52YWx1ZV9vcih0aGlzLT5yZW5kZXJpbmdNb2RlKCkpLCBTaG91bGRV
c2VEaXNwbGF5TGlzdDo6WWVzLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGJ1ZmZlck9w
dGlvbnMuYWRkKEltYWdlQnVmZmVyT3B0aW9uczo6VXNlRGlzcGxheUxpc3QpOworICAgIHJldHVy
biBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVk
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgYnVmZmVy
T3B0aW9ucyk7CiB9CiAKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVh
dGVTY2FsZWRJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEZsb2F0U2l6
ZSYgc2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpv
cHRpb25hbDxSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlLCBzdGQ6Om9wdGlvbmFsPFJlbmRl
cmluZ01ldGhvZD4gcmVuZGVyaW5nTWV0aG9kKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IGI4YTk1ZjU0MWM1ZmY1OWUx
ZDQyMWRlYzcwMTM3ZGNiZjY5YTMyMGUuLmViZjE4MDEyODA1MDMxMGI1NmE0NmQxZmEyYTFhOWM1
NDM2NTAwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5jcHAKQEAgLTM3LDMzICszNywyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0
aWMgY29uc3QgZmxvYXQgTWF4Q2xhbXBlZExlbmd0aCA9IDQwOTY7CiBzdGF0aWMgY29uc3QgZmxv
YXQgTWF4Q2xhbXBlZEFyZWEgPSBNYXhDbGFtcGVkTGVuZ3RoICogTWF4Q2xhbXBlZExlbmd0aDsK
IAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlz
dCBzaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwg
UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IENyZWF0aW9uQ29udGV4dCYgY3JlYXRpb25D
b250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIE9wdGlvblNldDxJbWFnZUJ1ZmZlck9wdGlvbnM+IG9wdGlvbnMsIGNv
bnN0IENyZWF0aW9uQ29udGV4dCYgY3JlYXRpb25Db250ZXh0KQogewogICAgIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAgICAgCi0gICAgLy8gR2l2ZSBTaG91bGRVc2VEaXNwbGF5
TGlzdCBhIGhpZ2hlciBwcmVjZWRlbmNlIHNpbmNlIGl0IGlzIGEgZGVidWcgb3B0aW9uLgotICAg
IGlmIChzaG91bGRVc2VEaXNwbGF5TGlzdCA9PSBTaG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzKSB7
Ci0gICAgICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVk
KQorICAgIC8vIEdpdmUgVXNlRGlzcGxheUxpc3QgYSBoaWdoZXIgcHJlY2VkZW5jZSBzaW5jZSBp
dCBpcyBhIGRlYnVnIG9wdGlvbi4KKyAgICBpZiAob3B0aW9ucy5jb250YWlucyhJbWFnZUJ1ZmZl
ck9wdGlvbnM6OlVzZURpc3BsYXlMaXN0KSkgeworICAgICAgICBpZiAob3B0aW9ucy5jb250YWlu
cyhJbWFnZUJ1ZmZlck9wdGlvbnM6OkFjY2VsZXJhdGVkKSkKICAgICAgICAgICAgIGltYWdlQnVm
ZmVyID0gRGlzcGxheUxpc3RBY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgY3JlYXRpb25Db250ZXh0KTsK
ICAgICAgICAgCiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICBpbWFnZUJ1
ZmZlciA9IERpc3BsYXlMaXN0VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgY3JlYXRpb25Db250ZXh0
KTsKICAgICB9CiAgICAgCi0gICAgaWYgKGNyZWF0aW9uQ29udGV4dC5ob3N0V2luZG93ICYmICFp
bWFnZUJ1ZmZlcikKKyAgICBpZiAoY3JlYXRpb25Db250ZXh0Lmhvc3RXaW5kb3cgJiYgIWltYWdl
QnVmZmVyKSB7CisgICAgICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9IG9wdGlvbnMuY29udGFpbnMo
SW1hZ2VCdWZmZXJPcHRpb25zOjpBY2NlbGVyYXRlZCkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVy
YXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAgICAgICAgIGltYWdlQnVmZmVy
ID0gY3JlYXRpb25Db250ZXh0Lmhvc3RXaW5kb3ctPmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJl
bmRlcmluZ01vZGUsIHB1cnBvc2UsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxG
b3JtYXQpOworICAgIH0KIAotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBjcmVhdGlvbkNvbnRleHQpOwotCi0gICAg
cmV0dXJuIGltYWdlQnVmZmVyOwotfQorICAgIGlmIChpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0
dXJuIGltYWdlQnVmZmVyOwogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVh
dGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNw
YWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgQ3JlYXRpb25Db250ZXh0JiBjcmVh
dGlvbkNvbnRleHQpCi17Ci0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKLSAg
ICAKLSAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkK
KyAgICBpZiAob3B0aW9ucy5jb250YWlucyhJbWFnZUJ1ZmZlck9wdGlvbnM6OkFjY2VsZXJhdGVk
KSkKICAgICAgICAgaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgY3JlYXRpb25D
b250ZXh0KTsKICAgICAKICAgICBpZiAoIWltYWdlQnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggNzdlNTVhZjBiODYyMmZmMGM3
Y2Q4Mzg0OWVhYTg4YWMwOWI0M2Q3Yy4uZWQzZGZlYjJmMDE1MTVkNWZlNDZhYjVlNDg4ZTBiMGZh
NzRhMDk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kLmgi
CiAjaW5jbHVkZSAiUmVuZGVyaW5nTW9kZS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTQyLDYgKzQzLDEx
IEBAIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJT1N1cmZhY2VQb29sOwogI2VuZGlmCiAKK2Vu
dW0gY2xhc3MgSW1hZ2VCdWZmZXJPcHRpb25zIDogdWludDhfdCB7CisgICAgQWNjZWxlcmF0ZWQg
ICAgID0gMSA8PCAwLAorICAgIFVzZURpc3BsYXlMaXN0ICA9IDEgPDwgMQorfTsKKwogY2xhc3Mg
SW1hZ2VCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VCdWZmZXIsIFdU
Rjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VC
dWZmZXI+IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgQ3JlYXRpb25Db250ZXh0IHsKQEAgLTYzLDgg
KzY5LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICAvLyBXaWxsIHJldHVybiBhIG51bGwgcG9p
bnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUs
IFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0LCBjb25zdCBD
cmVhdGlvbkNvbnRleHQmID0geyB9KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZv
cm1hdCwgY29uc3QgQ3JlYXRpb25Db250ZXh0JiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRl
cmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgUGl4ZWxGb3JtYXQsIE9wdGlvblNldDxJbWFnZUJ1ZmZlck9wdGlvbnM+ID0geyB9
LCBjb25zdCBDcmVhdGlvbkNvbnRleHQmID0geyB9KTsKIAogICAgIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gY2xvbmUoKSBjb25zdDsKIApAQCAtMTU3LDQgKzE2MiwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB2b2lkIGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpID0gMDsKIH07CiAKK2lubGluZSBPcHRpb25TZXQ8SW1hZ2VCdWZmZXJPcHRp
b25zPiBidWZmZXJPcHRpb25zRm9yUmVuZGluZ01vZGUoUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlKQoreworICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJh
dGVkKQorICAgICAgICByZXR1cm4geyBJbWFnZUJ1ZmZlck9wdGlvbnM6OkFjY2VsZXJhdGVkIH07
CisgICAgcmV0dXJuIHsgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCmluZGV4IDVlZjli
M2I0MGMwMDMyZWI5ODMzM2RmYmUxY2Y1YTZlYjEwODI2YTYuLjYwNjc1YTg5MDEzNGY0ZjU5NmIw
MzFmMjQyYjI5YmJmMTdjN2QyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKQEAgLTM0LDcgKzM0LDYgQEAgZW51bSBjbGFzcyBSZW5k
ZXJpbmdQdXJwb3NlIDogdWludDhfdCB7CiAgICAgTWVkaWFQYWludGluZwogfTsKIAotZW51bSBj
bGFzcyBTaG91bGRVc2VEaXNwbGF5TGlzdCA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNz
IFJlbmRlcmluZ01vZGUgOiBib29sIHsgVW5hY2NlbGVyYXRlZCwgQWNjZWxlcmF0ZWQgfTsKIGVu
dW0gY2xhc3MgUmVuZGVyaW5nTWV0aG9kIDogYm9vbCB7IExvY2FsLCBEaXNwbGF5TGlzdCB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmlu
ZGV4IDkwMjRmNWQxYWJmY2UzODA4MTgzYTNiMjMxZmJjZTBmZmIyZmY0MTQuLjgxNjFiNDgzOWYy
MDU4NzI4YTg0MDk4ODQ0MGUxMDM1OGI5NDA2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgY2xlYXJTY3JhdGNoQnVmZmVyKCk7CiAKICAgICAgICAgLy8gU2hhZG93Qmx1ciBp
cyBub3QgdXNlZCB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcsIHNvIGl0J3MgT0sgdG8gbWFrZSBh
biB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIuCi0gICAgICAgIG1faW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
cm91bmRlZFNpemUsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgcmV0dXJu
IG1faW1hZ2VCdWZmZXI7CiAgICAgfQogCkBAIC02MDYsNyArNjA2LDcgQEAgdm9pZCBTaGFkb3dC
bHVyOjpkcmF3SW5zZXRTaGFkb3coY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNv
bnN0IEludFJlY3QKIAogdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxp
bmcoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93
ZWRSZWN0LCBjb25zdCBMYXllckltYWdlUHJvcGVydGllcyYgbGF5ZXJJbWFnZVByb3BlcnRpZXMs
IGNvbnN0IERyYXdCdWZmZXJDYWxsYmFjayYgZHJhd0J1ZmZlcikKIHsKLSAgICBhdXRvIGxheWVy
SW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJv
cGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRv
IGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllcklt
YWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAg
ICAgaWYgKCFsYXllckltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTYzNCw3ICs2MzQsNyBA
QCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdAogCiB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNo
YWRvd1dpdGhvdXRUaWxpbmcoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRSZWN0
JiBmdWxsUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IExheWVy
SW1hZ2VQcm9wZXJ0aWVzJiBsYXllckltYWdlUHJvcGVydGllcywgY29uc3QgRHJhd0J1ZmZlckNh
bGxiYWNrJiBkcmF3QnVmZmVyKQogewotICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSks
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVy
U2l6ZSksIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2Up
CiAgICAgICAgIHJldHVybjsKIApAQCAtNzEwLDcgKzcxMCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3Jt
LCBjb25zCiAgICAgVU5VU0VEX1BBUkFNKGxheWVySW1hZ2VQcm9wZXJ0aWVzKTsKICNlbmRpZgog
Ci0gICAgaWYgKGF1dG8gbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVt
cGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSkKKyAgICBpZiAoYXV0byBsYXll
ckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmlu
Z1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KSkKICAgICAgICAgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nV2l0
aExheWVySW1hZ2VCdWZmZXIoKmxheWVySW1hZ2VCdWZmZXIsIHRyYW5zZm9ybSwgc2hhZG93ZWRS
ZWN0LCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplLCBkcmF3SW1hZ2UsIGZpbGxSZWN0LCB0ZW1wbGF0
ZVNoYWRvdyk7CiB9CiAKQEAgLTc2NCw3ICs3NjQsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJ
bnNldFNoYWRvd1dpdGhUaWxpbmcoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNv
bgogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKGF1dG8gbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSkK
KyAgICBpZiAoYXV0byBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1w
bGF0ZVNpemUsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSkKICAgICAgICAgZHJhd0luc2V0
U2hhZG93V2l0aFRpbGluZ1dpdGhMYXllckltYWdlQnVmZmVyKCpsYXllckltYWdlQnVmZmVyLCB0
cmFuc2Zvcm0sIGZ1bGxSZWN0LCBob2xlUmVjdCwgdGVtcGxhdGVTaXplLCBlZGdlU2l6ZSwgZHJh
d0ltYWdlLCBmaWxsUmVjdFdpdGhIb2xlLCB0ZW1wbGF0ZUJvdW5kcywgdGVtcGxhdGVIb2xlKTsK
IH0KIApAQCAtOTIzLDcgKzkyMyw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1NoYWRvd0xheWVy
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0CiAKICAgICBh
ZGp1c3RCbHVyUmFkaXVzKHRyYW5zZm9ybSk7CiAKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy0+bGF5
ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBsYXllckltYWdl
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRp
ZXMtPmxheWVyU2l6ZSksIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxh
eWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwCmluZGV4IDBkMTg3ZmM5MDFhYzkyN2NhNWJmOTg4
YzA2N2M0ZmZlZjMwODRmNjQuLjRmYjYyYTVlNDcwNTZjOTllMDE3NDBlYWE3Mjk3OGZhOWZmNDVm
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUlt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VJbWFn
ZS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgSW1hZ2VCdWZmZXIqIFNvdXJjZUltYWdlOjppbWFnZUJ1
ZmZlcigpIGNvbnN0CiAgICAgICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBzdGQ6OmdldDxSZWY8TmF0
aXZlSW1hZ2U+PihtX2ltYWdlVmFyaWFudCk7CiAKICAgICAgICAgYXV0byByZWN0ID0gRmxvYXRS
ZWN0IHsgeyB9LCBuYXRpdmVJbWFnZS0+c2l6ZSgpIH07Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG5hdGl2ZUltYWdlLT5zaXplKCksIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShuYXRpdmVJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmll
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckltYWdlLmNwcAppbmRleCAyYTAwOGZlYjFjYzM0Mzg0NDQ3YjE4ZmYwM2ExMTlhMmYz
OTliNDI5Li4zNjlhMWI2OGQ4NTE3OTI3YWQ3NzRiMjI4ZmVkYTcxMTk3OGQ3ZTA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckltYWdlLmNwcApAQCAtOTksNyArOTksOSBAQCBJbWFnZUJ1ZmZlciogRmlsdGVySW1hZ2U6Omlt
YWdlQnVmZmVyRnJvbVBpeGVsQnVmZmVyKCkKICAgICBpZiAobV9pbWFnZUJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CiAKLSAgICBtX2ltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShtX2Fic29sdXRlSW1hZ2VSZWN0LnNpemUoKSwgbV9yZW5kZXJpbmdN
b2RlLCAxLCBtX2NvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgLy8gRklYTUU6
IFRoaXMgbmVlZHMgdG8gdXNlIGEgc3BlY2lmaWMgUmVuZGVyaW5nUHVycG9zZSB0byBhdm9pZCBh
Y2NlbGVyYXRlZCBidWZmZXJzIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgKHdlYmtpdC5vcmcv
Yi8yMzg4NDgpLgorICAgIC8vIEZJWE1FOiBUZXN0CisgICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZUltYWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ1B1cnBv
c2U6OlVuc3BlY2lmaWVkLCAxLCBtX2NvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgYnVm
ZmVyT3B0aW9uc0ZvclJlbmRpbmdNb2RlKG1fcmVuZGVyaW5nTW9kZSkpOwogICAgIGlmICghbV9p
bWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE3MCw3ICsxNzIsNyBA
QCBzdGF0aWMgdm9pZCBjb3B5SW1hZ2VCeXRlcyhjb25zdCBQaXhlbEJ1ZmZlciYgc291cmNlUGl4
ZWxCdWZmZXIsIFBpeGVsQnVmZmVyJiBkZQogc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IGdldENvbnZlcnRlZFBpeGVsQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYUZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgYXV0byBjbGFtcGVk
U2l6ZSA9IEltYWdlQnVmZmVyOjpjbGFtcGVkU2l6ZShzb3VyY2VSZWN0LnNpemUoKSk7Ci0gICAg
YXV0byBjb252ZXJ0ZWRJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNp
emUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgYXV0byBjb252ZXJ0ZWRJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoY2xhbXBlZFNpemUsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBj
b2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIAogICAgIGlmICghY29udmVydGVk
SW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xODcsNyArMTg5
LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGdldENvbnZlcnRlZFBpeGVs
QnVmZmVyKFBpeGVsQnVmZmVyJiBzb3VyY2VQaXgKICAgICBhdXRvIGNsYW1wZWRTaXplID0gSW1h
Z2VCdWZmZXI6OmNsYW1wZWRTaXplKHNvdXJjZVJlY3Quc2l6ZSgpKTsKIAogICAgIGF1dG8mIHNv
dXJjZUNvbG9yU3BhY2UgPSBzb3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKS5jb2xvclNwYWNlOwot
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBzb3VyY2VDb2xvclNwYWNlLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGNsYW1wZWRTaXplLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgMSwgc291cmNlQ29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNvZnR3YXJlQXBwbGllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZF
VGlsZVNvZnR3YXJlQXBwbGllci5jcHAKaW5kZXggNTUyZDE5NDZmMjhiZTA5NDZjYTA0NmUwNmZk
N2UzYThjOWZmZmVjMC4uOTJiMmJkOWNlZTUxNDZhMGNmMTMxZjg0NDExN2Y0MDUzZWNkYzNiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0
d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcApA
QCAtNDksNyArNDksNyBAQCBib29sIEZFVGlsZVNvZnR3YXJlQXBwbGllcjo6YXBwbHkoY29uc3Qg
RmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEZpbHRlckltYWdlVmVjdG9yJgogICAgIGF1dG8gbWF4UmVz
dWx0UmVjdCA9IHJlc3VsdC5tYXhFZmZlY3RSZWN0KGZpbHRlcik7CiAgICAgbWF4UmVzdWx0UmVj
dC5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKLSAgICBhdXRvIHRpbGVJbWFnZSA9IElt
YWdlQnVmZmVyOjpjcmVhdGUodGlsZVJlY3Quc2l6ZSgpLCBmaWx0ZXIucmVuZGVyaW5nTW9kZSgp
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICBhdXRvIHRpbGVJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZVJlY3Quc2l6ZSgp
LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCwgYnVmZmVyT3B0aW9uc0ZvclJlbmRpbmdNb2Rl
KGZpbHRlci5yZW5kZXJpbmdNb2RlKCkpKTsKICAgICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxh
eWVyLmNwcAppbmRleCBlOTE0NjNkOTc0OTdhYjk0YTM5N2E5ZDc5NjM4NGE0MGQyYmM2NmEwLi5m
OGVjNGJjZjQ1MDg3NjM0MDA4MmIzZWRkZDVkZTdhYTA5NGMzOTJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFO
R0xFTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9p
ZCBHQ0dMQU5HTEVMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAjZW5kaWYKIAogICAgIC8v
IEZhbGxiYWNrIHBhdGgsIHJlYWQgYmFjayB0ZXh0dXJlIHRvIG1haW4gbWVtb3J5Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVu
ZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAg
IHJldHVybjsKICAgICBtX2NvbnRleHQucGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKmlt
YWdlQnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAppbmRleCBlMjQ0OTNiMjVkNDkwYWMw
MWJlNjM2NzAyNmQ3OWU2MmRmNGRlN2U2Li5kMzRlNTg4ZDI0ODcxNzVlMTk4ZTkxNjFkNmRiMzgy
ODkzNjcyZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHZvaWQgQml0
bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoR3JhcGhpY3NMYXllciogc291cmNlTGF5ZXIsIGNv
bnN0IEludFJlY3QmIHRhCiB7CiAgICAgLy8gTWFraW5nIGFuIHVuY29uZGl0aW9uYWxseSB1bmFj
Y2VsZXJhdGVkIGJ1ZmZlciBoZXJlIGlzIE9LIGJlY2F1c2UgdGhpcyBjb2RlCiAgICAgLy8gaXNu
J3QgdXNlZCBieSBhbnkgcGxhdGZvcm1zIHRoYXQgcmVzcGVjdCB0aGUgYWNjZWxlcmF0ZWQgYml0
LgotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRhcmdldFJlY3Qu
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0YXJnZXRSZWN0LnNpemUoKSwgUmVuZGVyaW5nUHVycG9z
ZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlLmNwcAppbmRleCA0ZmVjNGQ5MzliYjI5MmQ2NDY0OWY5NWRlMmQ3N2U5NzI4Njgw
NzFmLi4zZTRlMGU5MzQyNWU2ODBiOTAzNjI3YmU5OWZiNDNmMmEyM2MyZTBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmNwcApAQCAtNDczLDcgKzQ3Myw3IEBAIEltYWdlQnVmZmVyKiBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6aW1hZ2VCdWZmZXIoKSBjb25zdAogICAgIGlmIChtX2ltYWdlQnVmZmVyKQogICAg
ICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKIAotICAgIG1faW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGNhcHR1cmVTaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOworICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNhcHR1cmVTaXpl
KCksIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwCmluZGV4IDZkMzdiZDIwYTVlYTIxMjBiYWE0YTNlYjU4ZGQ4ODlkZGMzYjkw
OTEuLjBiNTY4ZTc3ZDU2YjM4OGY4NzdhZTllYjZmZjBkM2IwMzE5ZjA1YzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdl
LCBmbG9hdCB0aHJlc2hvbGQsIGMKICAgICBJbnRSZWN0IG1hcmdpblJlY3QgPSBzbmFwcGVkSW50
UmVjdChtYXJnaW5SKTsKICAgICBhdXRvIGludGVydmFscyA9IG1ha2VVbmlxdWU8UmFzdGVyU2hh
cGVJbnRlcnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7CiAgICAg
Ly8gRklYTUUgKDE0OTQyMCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25h
bGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
YXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwg
UmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCiAgICAgYXV0byBjcmVhdGVTaGFwZSA9IFsm
XSgpIHsKICAgICAgICAgYXV0byByYXN0ZXJTaGFwZSA9IG1ha2VVbmlxdWU8UmFzdGVyU2hhcGU+
KFdURk1vdmUoaW50ZXJ2YWxzKSwgbWFyZ2luUmVjdC5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
CmluZGV4IDFiMGUwMmYxNTg0YjVlYzg0MzUzNzBhYzhkYjAzNzRmZDE0NWE3MGUuLjM0Y2E4MzEz
MDU5M2IyMDg4ZmExMDU3NDNhMzZhMWYxMzg3ZDFhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKQEAg
LTE2Miw3ICsxNjIsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlw
cGluZ1RvQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBpZiAoIWNsaXBw
ZXJEYXRhLmlzVmFsaWRGb3JHZW9tZXRyeShvYmplY3RCb3VuZGluZ0JveCwgY2xpcHBlZENvbnRl
bnRCb3VuZHMsIGFic29sdXRlVHJhbnNmb3JtKSkgewogICAgICAgICAvLyBGSVhNRSAoMTQ5NDY5
KTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2Nl
bGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFrcyBuZXN0ZWQgY2xpcHBp
bmcsIHRob3VnaC4KLSAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZVNjYWxl
ZEltYWdlQnVmZmVyKGNsaXBwZWRDb250ZW50Qm91bmRzLCBzY2FsZSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOworICAgICAgICBh
dXRvIG1hc2tJbWFnZSA9IGNvbnRleHQuY3JlYXRlU2NhbGVkSW1hZ2VCdWZmZXIoY2xpcHBlZENv
bnRlbnRCb3VuZHMsIHNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7IC8vIEZJWE1FCiAgICAgICAgIGlmICghbWFza0ltYWdl
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1h
Z2VFbGVtZW50LmNwcAppbmRleCBjYzMyZDI5MDJiMWQ3ZjQ4ZWFiOTUyZjNiY2YzMTMzNjYxMjcx
YmNhLi43ZTA1MTQ4ZDIxYzFkODA0MDE5YzNjZjQ3MzI4Y2YxODI3MGMyMWUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKQEAgLTE5OSw4ICsxOTksNyBAQCBzdGF0
aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IEZsb2F0UwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8g
Y2xhbXBpbmdTY2FsZSA9IGNsYW1waW5nU2NhbGVGb3JJbWFnZUJ1ZmZlclNpemUoc2NhbGVkUmVj
dC5zaXplKCkpOwotCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2NhbGVkUmVjdC5zaXplKCkgKiBjbGFtcGluZ1NjYWxlLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkRPTSwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9z
dFdpbmRvdyk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2Nh
bGVkUmVjdC5zaXplKCkgKiBjbGFtcGluZ1NjYWxlLCBSZW5kZXJpbmdQdXJwb3NlOjpET00sIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIHsgfSwg
eyBob3N0V2luZG93IH0pOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCAx
MzE4NWYyMTE4OTY5NmE0ZmYyNmMwNzI2YWZiYTFkNmYxODU4MWQ5Li4xY2Y4ZTE5YTU2OTVhYmQ1
NDBhOGI3MTA4OTM2ZDMwMTE4ZTE3ZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAKQEAgLTIwMywxNCArMjAzLDE1IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gU1ZH
SW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFj
CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYm9vbCBh
Y2NlbGVyYXRlZERyYXdpbmdFbmFibGVkID0gbV9wYWdlLT5zZXR0aW5ncygpLmFjY2VsZXJhdGVk
RHJhd2luZ0VuYWJsZWQoKTsKLSAgICBhdXRvIHJlbmRlcmluZ01vZGUgPSBhY2NlbGVyYXRlZERy
YXdpbmdFbmFibGVkID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkOworICAgIE9wdGlvblNldDxJbWFnZUJ1ZmZlck9wdGlvbnM+IGJ1ZmZl
ck9wdGlvbnM7CisgICAgaWYgKG1fcGFnZS0+c2V0dGluZ3MoKS5hY2NlbGVyYXRlZERyYXdpbmdF
bmFibGVkKCkpCisgICAgICAgIGJ1ZmZlck9wdGlvbnMuYWRkKEltYWdlQnVmZmVyT3B0aW9uczo6
QWNjZWxlcmF0ZWQpOwogCiAgICAgSG9zdFdpbmRvdyogaG9zdFdpbmRvdyA9IG51bGxwdHI7CiAg
ICAgaWYgKGF1dG8gY29udGVudFJlbmRlcmVyID0gZW1iZWRkZWRDb250ZW50Qm94KCkpCiAgICAg
ICAgIGhvc3RXaW5kb3cgPSBjb250ZW50UmVuZGVyZXItPmhvc3RXaW5kb3coKTsKIAotICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgcmVuZGVyaW5nTW9k
ZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpET00sIDEsIGNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7CisgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJpbmdQdXJwb3NlOjpE
T00sIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgYnVmZmVyT3B0aW9ucywgeyBo
b3N0V2luZG93IH0pOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IDE2NWM1YmYwMGFjNmExYTgx
ZjhlNzIzMTUxNDM0MjgzNzA3ODIxNzUuLjAxNzA1Nzc5ZmYwNjBmNjc3MGRjMGE0OWM3MTM5MWIy
ODExYWRmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC0yMTQsNyArMjE0LDcg
QEAgUmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJl
bnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0KICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIC8v
IFRoaXMgaXMgZWZmZWN0aXZlbHkgYSBzbmFwc2hvdCwgYW5kIHdpbGwgYmUgcGFpbnRlZCBpbiBh
biB1bmFjY2VsZXJhdGVkIGZhc2hpb24gaW4gbGluZSB3aXRoIEZyYW1lU25hcHNob3R0aW5nLgot
ICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyZWN0LnNpemUoKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMjYyNTQ4OTM3YTIwYzA4MjA1MGI3NzEwOTBiNzBl
M2IzNzlmNDMwLi45Njk4ZmViMzc4ZDZkNDI1MTMyMTEzZjQwOTgwN2UxNjBmOGM4MTY1IDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjMgQEAKKzIwMjItMDQtMDUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CisKKyAgICAgICAgVW5pZnkgdGhlIHR3byBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKCkgZnVuY3Rpb25z
LCBwYXNzaW5nIFJlbmRlcmluZ1B1cnBvc2UgZXZlcnl3aGVyZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4ODUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2FpZCBBYm91LUhhbGxhd2EuCisKKyAgICAgICAgSSBuZWVkIHRvIGV4dGVuZCBSZW5kZXJp
bmdQdXJwb3NlIGZsYWdzIHRvIGRpc3Rpbmd1aXNoIGxheWVyIGJhY2tpbmcgc3RvcmUgYnVmZmVy
cyBmcm9tCisgICAgICAgIG90aGVyIGtpbmRzIG9mIGJ1ZmZlcnMuIEJlZm9yZSBkb2luZyBzbywg
Y29sbGFwc2UgdGhlIHR3byBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKCkgZnVuY3Rpb25zCisgICAgICAg
IHRvZ2V0aGVyIGJ5IGNvbWJpbmluZyBSZW5kZXJpbmdNb2RlIGFuZCBTaG91bGRVc2VEaXNwbGF5
TGlzdCBpbnRvIE9wdGlvblNldDxJbWFnZUJ1ZmZlck9wdGlvbnM+LAorICAgICAgICBhbmQgcGFz
c2luZyBSZW5kZXJpbmdQdXJwb3NlIGV2ZXJ5d2hlcmUuCisgICAgICAgIAorICAgICAgICBBbHdh
eXMgcGFzc2luZyBSZW5kZXJpbmdQdXJwb3NlIGlzIHJldmVhbGluZywgYmVjYXVzZSBpdCBmaW5k
cyBjYWxsIHNpdGVzIGluIHRoZQorICAgICAgICB3ZWIgcHJvY2VzcyB0aGF0IGNhbiB0cmlnZ2Vy
IGFjY2VsZXJhdGVkIGJ1ZmZlcnMgKGUuZy4gd2Via2l0Lm9yZy9iLzIzODg0NikuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW1hZ2VCdWZmZXJUZXN0cy5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorCiAyMDIyLTA0LTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgTWFyayBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9yIGFzIGV4
cGxpY2l0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW1h
Z2VCdWZmZXJUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW1h
Z2VCdWZmZXJUZXN0cy5jcHAKaW5kZXggYTQyMDYxMGEwNGUzYWIwMmNiN2UzMjk3YWNkMjUxMTFh
ODJkNzNhNy4uZDQ5Y2U0N2ZlYTI3NjgwYjllNzg1NTEyMGU1YWZmOWI4MWMxMWRjMyAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ltYWdlQnVmZmVyVGVzdHMu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbWFnZUJ1ZmZlclRl
c3RzLmNwcApAQCAtNTUsMTAgKzU1LDEwIEBAIFRFU1QoSW1hZ2VCdWZmZXJUZXN0cywgSW1hZ2VC
dWZmZXJTdWJUeXBlQ3JlYXRlQ3JlYXRlc1N1YnR5cGVzKQogICAgIGF1dG8gcGl4ZWxGb3JtYXQg
PSBQaXhlbEZvcm1hdDo6QkdSQTg7CiAgICAgRmxvYXRTaXplIHNpemUgeyAxLmYsIDEuZiB9Owog
ICAgIGZsb2F0IHNjYWxlID0gMS5mOwotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gdW5hY2NlbGVy
YXRlZCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRyKTsKLSAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGFjY2VsZXJhdGVkID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBS
ZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0
LCBudWxscHRyKTsKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGRpc3BsYXlMaXN0QWNjZWxlcmF0
ZWQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpZZXMsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lm
aWVkLCBzY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIpOwotICAgIFJlZlB0
cjxJbWFnZUJ1ZmZlcj4gZGlzcGxheUxpc3RVbmFjY2VsZXJhdGVkID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgU2hvdWxkVXNlRGlzcGxheUxp
c3Q6OlllcywgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHNjYWxlLCBjb2xvclNwYWNl
LCBwaXhlbEZvcm1hdCwgbnVsbHB0cik7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiB1bmFjY2Vs
ZXJhdGVkID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNw
ZWNpZmllZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKKyAgICBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGFjY2VsZXJhdGVkID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJp
bmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCB7
IEltYWdlQnVmZmVyT3B0aW9uczo6QWNjZWxlcmF0ZWQgfSk7CisgICAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBkaXNwbGF5TGlzdEFjY2VsZXJhdGVkID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBS
ZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9y
bWF0LCB7IEltYWdlQnVmZmVyT3B0aW9uczo6VXNlRGlzcGxheUxpc3QgfSk7CisgICAgUmVmUHRy
PEltYWdlQnVmZmVyPiBkaXNwbGF5TGlzdFVuYWNjZWxlcmF0ZWQgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCBzY2FsZSwgY29sb3JTcGFj
ZSwgcGl4ZWxGb3JtYXQsIHsgSW1hZ2VCdWZmZXJPcHRpb25zOjpBY2NlbGVyYXRlZCwgSW1hZ2VC
dWZmZXJPcHRpb25zOjpVc2VEaXNwbGF5TGlzdCB9KTsKIAogICAgIEVYUEVDVF9ORShudWxscHRy
LCBhY2NlbGVyYXRlZCk7CiAgICAgRVhQRUNUX05FKG51bGxwdHIsIHVuYWNjZWxlcmF0ZWQpOwpA
QCAtNzIsOCArNzIsOCBAQCBURVNUKEltYWdlQnVmZmVyVGVzdHMsIEltYWdlQnVmZmVyU3ViUGl4
ZWxEcmF3aW5nKQogICAgIGF1dG8gcGl4ZWxGb3JtYXQgPSBQaXhlbEZvcm1hdDo6QkdSQTg7CiAg
ICAgRmxvYXRTaXplIGxvZ2ljYWxTaXplIHsgMzkyLCA0NCB9OwogICAgIGZsb2F0IHNjYWxlID0g
MS45MTMyNjUzNTsKLSAgICBhdXRvIGZyb250SW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgc2NhbGUsIGNvbG9y
U3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRyKTsKLSAgICBhdXRvIGJhY2tJbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGU6OkFjY2VsZXJh
dGVkLCBzY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIpOworICAgIGF1dG8g
ZnJvbnRJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIFJlbmRl
cmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCBzY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQs
IHsgSW1hZ2VCdWZmZXJPcHRpb25zOjpBY2NlbGVyYXRlZCB9KTsKKyAgICBhdXRvIGJhY2tJbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIFJlbmRlcmluZ1B1cnBv
c2U6OlVuc3BlY2lmaWVkLCBzY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIHsgSW1hZ2VC
dWZmZXJPcHRpb25zOjpBY2NlbGVyYXRlZCB9KTsKICAgICAKICAgICBhdXRvIHN0cm9rZVJlY3Qg
PSBGbG9hdFJlY3QgeyB7IH0sIGxvZ2ljYWxTaXplIH07CiAgICAgc3Ryb2tlUmVjdC5pbmZsYXRl
KC0wLjUpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIFRFU1QoSW1hZ2VCdWZmZXJUZXN0cywgRElTQUJM
RURfRHJhd0ltYWdlQnVmZmVyRG9lc05vdFJlZmVyZW5jZUV4dHJhTWVtb3J5KQogCiAgICAgewog
ICAgICAgICAvLyBNYWtlIHBvdGVudGlhbCBhY2NlbGVyYXRlZCBkcmF3aW5nIGJhY2tlbmQgaW5z
dGFudGlhdGUgcm91Z2hseSB0aGUgZ2xvYmFsIHN0cnVjdHVyZXMgbmVlZGVkIGZvciB0aGlzIHRl
c3QuCi0gICAgICAgIGF1dG8gYWNjZWxlcmF0ZWQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2lj
YWxTaXplLCBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBp
eGVsRm9ybWF0LCBudWxscHRyKTsKKyAgICAgICAgYXV0byBhY2NlbGVyYXRlZCA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCBz
Y2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIHsgSW1hZ2VCdWZmZXJPcHRpb25zOjpBY2Nl
bGVyYXRlZCB9KTsKICAgICAgICAgYXV0byBmaWxsUmVjdCA9IEZsb2F0UmVjdCB7IHsgfSwgbG9n
aWNhbFNpemUgfTsKICAgICAgICAgYWNjZWxlcmF0ZWQtPmNvbnRleHQoKS5maWxsUmVjdChmaWxs
UmVjdCwgQ29sb3I6OmdyZWVuKTsKICAgICAgICAgRVhQRUNUX1RSVUUoaW1hZ2VCdWZmZXJQaXhl
bElzKENvbG9yOjpncmVlbiwgKmFjY2VsZXJhdGVkLCBmaWxsUmVjdC5tYXhYKCkgLSAxLCBmaWxs
UmVjdC5tYXhZKCkgLSAxKSk7CkBAIC0xNDEsMTMgKzE0MSwxMyBAQCBURVNUKEltYWdlQnVmZmVy
VGVzdHMsIERJU0FCTEVEX0RyYXdJbWFnZUJ1ZmZlckRvZXNOb3RSZWZlcmVuY2VFeHRyYU1lbW9y
eSkKICAgICBhdXRvIGxhc3RGb290cHJpbnQgPSBpbml0aWFsRm9vdHByaW50OwogICAgIEVYUEVD
VF9HVChsYXN0Rm9vdHByaW50LCAwdSk7CiAKLSAgICBhdXRvIGFjY2VsZXJhdGVkID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQsIHNj
YWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0cik7CisgICAgYXV0byBhY2NlbGVy
YXRlZCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIFJlbmRlcmluZ1B1cnBvc2U6
OlVuc3BlY2lmaWVkLCBzY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIHsgSW1hZ2VCdWZm
ZXJPcHRpb25zOjpBY2NlbGVyYXRlZCB9KTsKICAgICBhdXRvIGZpbGxSZWN0ID0gRmxvYXRSZWN0
IHsgeyB9LCBsb2dpY2FsU2l6ZSB9OwogICAgIGFjY2VsZXJhdGVkLT5jb250ZXh0KCkuZmlsbFJl
Y3QoZmlsbFJlY3QsIENvbG9yOjpncmVlbik7CiAgICAgYWNjZWxlcmF0ZWQtPmZsdXNoQ29udGV4
dCgpOwogICAgIEVYUEVDVF9UUlVFKG1lbW9yeUZvb3RwcmludENoYW5nZWRCeShsYXN0Rm9vdHBy
aW50LCBsb2dpY2FsU2l6ZUJ5dGVzLCBmb290cHJpbnRFcnJvcikpOwogCi0gICAgYXV0byB1bmFj
Y2VsZXJhdGVkID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRy
KTsKKyAgICBhdXRvIHVuYWNjZWxlcmF0ZWQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxT
aXplLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBp
eGVsRm9ybWF0KTsKICAgICB1bmFjY2VsZXJhdGVkLT5jb250ZXh0KCkuZmlsbFJlY3QoZmlsbFJl
Y3QsIENvbG9yOjp5ZWxsb3cpOwogICAgIEVYUEVDVF9UUlVFKGltYWdlQnVmZmVyUGl4ZWxJcyhD
b2xvcjo6eWVsbG93LCAqdW5hY2NlbGVyYXRlZCwgZmlsbFJlY3QubWF4WCgpIC0gMSwgZmlsbFJl
Y3QubWF4WSgpIC0gMSkpOwogICAgIEVYUEVDVF9UUlVFKG1lbW9yeUZvb3RwcmludENoYW5nZWRC
eShsYXN0Rm9vdHByaW50LCBsb2dpY2FsU2l6ZUJ5dGVzLCBmb290cHJpbnRFcnJvcikpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0
VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxh
eUxpc3RUZXN0c0NHLmNwcAppbmRleCBiY2M1YTExOGYyM2Q3Y2JiNjRlZmMxZTY0Y2MyNzEzOTA5
NWRiMDMwLi45NTQyYTk1Y2YwMDZhZTU5NjhkYmYyOWJhZGMxN2E1OTg5MTUzZDhjIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0
c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxh
eUxpc3RUZXN0c0NHLmNwcApAQCAtNzMsNyArNzMsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMs
IFJlcGxheVdpdGhNaXNzaW5nUmVzb3VyY2UpCiAgICAgfQogCiAgICAgewotICAgICAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh7IDEwMCwgMTAwIH0sIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHsgMTAwLCAx
MDAgfSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIGNvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CiAgICAgICAgIExvY2FsUmVzb3VyY2VIZWFwIHJlc291cmNlSGVhcDsK
ICAgICAgICAgcmVzb3VyY2VIZWFwLmFkZChpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGltYWdlQnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456779</attachid>
            <date>2022-04-05 21:01:12 -0700</date>
            <delta_ts>2022-04-06 10:22:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238851-20220405210111.patch</filename>
            <type>text/plain</type>
            <size>55391</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI2NWUxZGNmY2YzZTk2
MTk2NDgwMTc4ZWMyNDZkNTY2ZDUwMmVjNi4uYjYxZmM2OWVhYzA5N2ZhNjBjN2QzZDUwYTEwMjU2
ZTNlOGY2ZTkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIyLTA0LTA1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVuaWZ5IHRoZSB0
d28gSW1hZ2VCdWZmZXI6OmNyZWF0ZSgpIGZ1bmN0aW9ucywgcGFzc2luZyBSZW5kZXJpbmdQdXJw
b3NlIGV2ZXJ5d2hlcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzODg1MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhaWQgQWJvdS1IYWxsYXdhLgor
CisgICAgICAgIEkgbmVlZCB0byBleHRlbmQgUmVuZGVyaW5nUHVycG9zZSBmbGFncyB0byBkaXN0
aW5ndWlzaCBsYXllciBiYWNraW5nIHN0b3JlIGJ1ZmZlcnMgZnJvbQorICAgICAgICBvdGhlciBr
aW5kcyBvZiBidWZmZXJzLiBCZWZvcmUgZG9pbmcgc28sIGNvbGxhcHNlIHRoZSB0d28gSW1hZ2VC
dWZmZXI6OmNyZWF0ZSgpIGZ1bmN0aW9ucworICAgICAgICB0b2dldGhlciBieSBjb21iaW5pbmcg
UmVuZGVyaW5nTW9kZSBhbmQgU2hvdWxkVXNlRGlzcGxheUxpc3QgaW50byBPcHRpb25TZXQ8SW1h
Z2VCdWZmZXJPcHRpb25zPiwKKyAgICAgICAgYW5kIHBhc3NpbmcgUmVuZGVyaW5nUHVycG9zZSBl
dmVyeXdoZXJlLgorICAgICAgICAKKyAgICAgICAgQWx3YXlzIHBhc3NpbmcgUmVuZGVyaW5nUHVy
cG9zZSBpcyByZXZlYWxpbmcsIGJlY2F1c2UgaXQgZmluZHMgY2FsbCBzaXRlcyBpbiB0aGUKKyAg
ICAgICAgd2ViIHByb2Nlc3MgdGhhdCBjYW4gdHJpZ2dlciBhY2NlbGVyYXRlZCBidWZmZXJzIChl
LmcuIHdlYmtpdC5vcmcvYi8yMzg4NDYpLgorCisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxv
YWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXJ0d29ya0ltYWdlTG9h
ZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAg
ICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tUGFpbnRDYW52YXM6OmNvcGllZEltYWdlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50Ojpj
cmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZUJ1ZmZlckZv
clBhaW50aW5nIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
aHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDo6c2V0T3V0cHV0Qml0bWFwKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2Fj
aGU6OmltYWdlQnVmZmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0
VHJhY2tDb250YWluZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9u
SW1hZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEpOgorICAgICAgICAqIHBh
Z2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFt
ZVJlY3RXaXRoQ2xpcCk6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OnByZVRyYW5zZm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRj
aEJ1ZmZlcjo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1
cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93Qmx1cjo6ZHJhd1NoYWRvd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Tb3VyY2VJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VJbWFnZTo6aW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVySW1hZ2U6OmltYWdlQnVmZmVy
RnJvbVBpeGVsQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmdldENvbnZlcnRlZFBpeGVsQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGls
ZVNvZnR3YXJlQXBwbGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGVTb2Z0d2FyZUFw
cGxpZXI6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6R0NH
TEFOR0xFTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjppbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGlu
Z1RvQ29udGV4dCk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToK
KwogMjAyMi0wNC0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IE1hcmsgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBhcyBleHBsaWNpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGQwZDBjZGE5ODU2OGQyYmIxYTAxMzUyODJhYWUxZGVj
N2JmNDc4YWQuLjQ5Mjc0ZDU0OWUzZjA1YmVmOWExZGZhMDFhNjQyYzcwYzJiZDJiMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMi0wNC0wNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBVbmlmeSB0aGUg
dHdvIEltYWdlQnVmZmVyOjpjcmVhdGUoKSBmdW5jdGlvbnMsIHBhc3NpbmcgUmVuZGVyaW5nUHVy
cG9zZSBldmVyeXdoZXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg4NTEKKworICAgICAgICBSZXZpZXdlZCBieSBTYWlkIEFib3UtSGFsbGF3YS4K
KworICAgICAgICBJIG5lZWQgdG8gZXh0ZW5kIFJlbmRlcmluZ1B1cnBvc2UgZmxhZ3MgdG8gZGlz
dGluZ3Vpc2ggbGF5ZXIgYmFja2luZyBzdG9yZSBidWZmZXJzIGZyb20KKyAgICAgICAgb3RoZXIg
a2luZHMgb2YgYnVmZmVycy4gQmVmb3JlIGRvaW5nIHNvLCBjb2xsYXBzZSB0aGUgdHdvIEltYWdl
QnVmZmVyOjpjcmVhdGUoKSBmdW5jdGlvbnMKKyAgICAgICAgdG9nZXRoZXIgYnkgY29tYmluaW5n
IFJlbmRlcmluZ01vZGUgYW5kIFNob3VsZFVzZURpc3BsYXlMaXN0IGludG8gT3B0aW9uU2V0PElt
YWdlQnVmZmVyT3B0aW9ucz4sCisgICAgICAgIGFuZCBwYXNzaW5nIFJlbmRlcmluZ1B1cnBvc2Ug
ZXZlcnl3aGVyZS4KKyAgICAgICAgCisgICAgICAgIEFsd2F5cyBwYXNzaW5nIFJlbmRlcmluZ1B1
cnBvc2UgaXMgcmV2ZWFsaW5nLCBiZWNhdXNlIGl0IGZpbmRzIGNhbGwgc2l0ZXMgaW4gdGhlCisg
ICAgICAgIHdlYiBwcm9jZXNzIHRoYXQgY2FuIHRyaWdnZXIgYWNjZWxlcmF0ZWQgYnVmZmVycyAo
ZS5nLiB3ZWJraXQub3JnL2IvMjM4ODQ2KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50Lm1tOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6Omlt
YWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbSk6CisKIDIwMjItMDQtMDUgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJrIFN0cmluZyhjb25z
dCBjaGFyKikgY29uc3RydWN0b3IgYXMgZXhwbGljaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggYjY2YjViZjE2YWI3MWUyMDY0ZmZmYjc4
MjBhYzMxNDI2ODAxZGIxNS4uYWQ0MDRkN2YyOTI4YTdhZTVhYzhiNmM1MDIyYWNkOTcxYWRhZmZl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6
OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogCiAgICAgICAgIGF1
dG8gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgICAgIGJpdG1hcElt
YWdlLT5zZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwotICAgICAgICBh
dXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nUHVycG9z
ZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgICAgICBt
X2RhdGEgPSB7IG51bGxTdHJpbmcoKSB9OwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApp
bmRleCA4NzRhYTdmMGIxOGYwZWU3NTg4MGJhNWY1ZWY2N2Q0N2JmYzJiMmI0Li4xNzMwM2ViZmQ0
Y2I2ZTI4YTBlNTA5N2QwYmM3YjkxYjdhYmYxODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApAQCAtODAsNyArODAs
NyBAQCB2b2lkIEFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTAogICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgp
OwogICAgIGF1dG8gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgYml0
bWFwSW1hZ2UtPnNldERhdGEoV1RGTW92ZShidWZmZXJUb1Nhbml0aXplKSwgdHJ1ZSk7Ci0gICAg
YXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUo
KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nUHVycG9zZTo6
VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgbV9jYWxsYmFjayhu
dWxscHRyKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlcklt
YWdlVmFsdWUuY3BwCmluZGV4IDVkN2E1NTFlZWIzZWZmNDAzNjY3Njc0MDU3Yzg4ZTUxNWExMWY5
NWUuLmIxZTVjNzJlYjJkN2U5ODg3MWMyMzNiOWNjYTRhZmNlNzI2ZDJmMTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTExNCw5ICsxMTQsOCBAQCBS
ZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiAm
SW1hZ2U6Om51bGxJbWFnZSgpOwogCi0gICAgLy8gVHJhbnNmb3JtIEltYWdlIGludG8gSW1hZ2VC
dWZmZXIuCiAgICAgYXV0byByZW5kZXJpbmdNb2RlID0gcmVuZGVyZXIucGFnZSgpLmFjY2VsZXJh
dGVkRmlsdGVyc0VuYWJsZWQoKSA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKLSAgICBhdXRvIHNvdXJjZUltYWdlID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8s
IFJlbmRlcmluZ1B1cnBvc2U6OkRPTSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IFBpeGVsRm9ybWF0OjpCR1JBOCwgeyByZW5kZXJlci5ob3N0V2luZG93KCkgfSk7CisgICAgYXV0
byBzb3VyY2VJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nUHVycG9z
ZTo6RE9NLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4LCBidWZmZXJPcHRpb25zRm9yUmVuZGluZ01vZGUocmVuZGVyaW5nTW9kZSksIHsgcmVuZGVy
ZXIuaG9zdFdpbmRvdygpIH0pOwogICAgIGlmICghc291cmNlSW1hZ2UpCiAgICAgICAgIHJldHVy
biAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0N1c3RvbVBhaW50Q2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRD
YW52YXMuY3BwCmluZGV4IGEyNDBiMDhkNWEyMzdmZDY4ODI0ZTdkODgwODFjOGI2YWE5NjcwNWQu
LjMyZDExZDg5ZTgwY2E1NWZjYjZkNmE4NjAxZWRhOTYwNmIwZmNhMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCkBAIC05Miw3ICs5Miw3IEBAIEltYWdlKiBD
dXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UoKSBjb25zdAogICAgIGlmICghd2lkdGgoKSB8
fCAhaGVpZ2h0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbV9jb3BpZWRCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JB
OCwgbnVsbHB0cik7CisgICAgbV9jb3BpZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUoKSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbV9jb3BpZWRCdWZm
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuY3BwCmluZGV4IDkyOTg1ODY5ODQ5NGJhYzFhZDAxNjU3NzgxYTIwNjA3MmFh
YTEwYTcuLjNmNDU4NmZiYzYwYmM4OTc4ZGQzMjg0MDZiNDZhMGYwOWMxYmM5YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC04ODYsOSArODg2LDEyIEBA
IHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QKIAogICAg
IGF1dG8gaG9zdFdpbmRvdyA9IChkb2N1bWVudCgpLnZpZXcoKSAmJiBkb2N1bWVudCgpLnZpZXco
KS0+cm9vdCgpKSA/IGRvY3VtZW50KCkudmlldygpLT5yb290KCktPmhvc3RXaW5kb3coKSA6IG51
bGxwdHI7CiAKLSAgICBhdXRvIHJlbmRlcmluZ01vZGUgPSBzaG91bGRBY2NlbGVyYXRlKGFyZWEp
ID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkOworICAgIE9wdGlvblNldDxJbWFnZUJ1ZmZlck9wdGlvbnM+IGJ1ZmZlck9wdGlvbnM7Cisg
ICAgaWYgKHNob3VsZEFjY2VsZXJhdGUoYXJlYSkpCisgICAgICAgIGJ1ZmZlck9wdGlvbnMuYWRk
KEltYWdlQnVmZmVyT3B0aW9uczo6QWNjZWxlcmF0ZWQpOwogICAgIC8vIEZJWE1FOiBBZGQgYSBu
ZXcgc2V0dGluZyBmb3IgRGlzcGxheUxpc3QgZHJhd2luZyBvbiBjYW52YXMuCi0gICAgYXV0byB1
c2VEaXNwbGF5TGlzdCA9IG1fdXNlc0Rpc3BsYXlMaXN0RHJhd2luZy52YWx1ZV9vcihkb2N1bWVu
dCgpLnNldHRpbmdzKCkuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCgpKSA/IFNob3VsZFVzZURp
c3BsYXlMaXN0OjpZZXMgOiBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm87CisgICAgaWYgKG1fdXNl
c0Rpc3BsYXlMaXN0RHJhd2luZy52YWx1ZV9vcihkb2N1bWVudCgpLnNldHRpbmdzKCkuZGlzcGxh
eUxpc3REcmF3aW5nRW5hYmxlZCgpKSkKKyAgICAgICAgYnVmZmVyT3B0aW9ucy5hZGQoSW1hZ2VC
dWZmZXJPcHRpb25zOjpVc2VEaXNwbGF5TGlzdCk7CiAKICAgICBhdXRvIFtjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdF0gPSBbJl0gewogICAgICAgICBpZiAobV9jb250ZXh0KQpAQCAtODk2LDcgKzg5
OSw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIHN0ZDo6cGFpciB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTggfTsKICAgICB9KCk7CiAKLSAgICBzZXRJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgcmVuZGVyaW5nTW9kZSwgdXNlRGlzcGxheUxpc3Qs
IFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgMSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhv
c3RXaW5kb3cpKTsKKyAgICBzZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUo
KSwgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCAxLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwg
YnVmZmVyT3B0aW9ucywgeyBob3N0V2luZG93IH0pKTsKIAogI2lmIFVTRShJT1NVUkZBQ0VfQ0FO
VkFTX0JBQ0tJTkdfU1RPUkUpCiAgICAgaWYgKG1fY29udGV4dCAmJiBtX2NvbnRleHQtPmlzMmQo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggZWIzODZl
ZmIzMzBkNjM4NTg4ZWJjNjIwNzgzMDFkNTlkNTQ5NzUwYy4uMDYwYWMzMDc1YjY2MzExZGNjZmMx
ZjUwYTdjMjA4YzEwYjAwODE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwCkBAIC0yOTcsOCArMjk3LDEyIEBAIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25Db2xv
clNwYWNlPiBIVE1MVmlkZW9FbGVtZW50Ojpjb2xvclNwYWNlKCkgY29uc3QKIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNv
bnN0CiB7CiAgICAgYXV0byogaG9zdFdpbmRvdyA9IGRvY3VtZW50KCkudmlldygpICYmIGRvY3Vt
ZW50KCkudmlldygpLT5yb290KCkgPyBkb2N1bWVudCgpLnZpZXcoKS0+cm9vdCgpLT5ob3N0V2lu
ZG93KCkgOiBudWxscHRyOwotICAgIGF1dG8gc2hvdWxkVXNlRGlzcGxheUxpc3QgPSBkb2N1bWVu
dCgpLnNldHRpbmdzKCkuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCgpID8gU2hvdWxkVXNlRGlz
cGxheUxpc3Q6OlllcyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKLSAgICByZXR1cm4gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBzaG91bGRVc2VEaXNwbGF5TGlz
dCwgUmVuZGVyaW5nUHVycG9zZTo6TWVkaWFQYWludGluZywgMSwgY29sb3JTcGFjZSwgcGl4ZWxG
b3JtYXQsIGhvc3RXaW5kb3cpOworCisgICAgYXV0byBidWZmZXJPcHRpb25zID0gYnVmZmVyT3B0
aW9uc0ZvclJlbmRpbmdNb2RlKHJlbmRlcmluZ01vZGUpOworICAgIGlmIChkb2N1bWVudCgpLnNl
dHRpbmdzKCkuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCgpKQorICAgICAgICBidWZmZXJPcHRp
b25zLmFkZChJbWFnZUJ1ZmZlck9wdGlvbnM6OlVzZURpc3BsYXlMaXN0KTsKKworICAgIHJldHVy
biBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ1B1cnBvc2U6Ok1lZGlhUGFpbnRp
bmcsIDEsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBidWZmZXJPcHRpb25zLCB7IGhvc3RXaW5k
b3cgfSk7CiB9CiAKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNv
bnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAppbmRleCBhY2NlYWE1M2JjYmNmMzgzN2Jk
NGI5OTJkNmUyYWE1NDc5NDI5MDlkLi4wMjEwNGI0ZGYyNTc4NDE5NDYzN2M4NDFkYjExZDQ3OGEw
YWNjNTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcApAQCAtODksMTYgKzg5LDE4
IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwCiAjZW5kaWYKICAgICB9CiAKKyAgICBhdXRvIGJ1
ZmZlck9wdGlvbnMgPSBidWZmZXJPcHRpb25zRm9yUmVuZGluZ01vZGUocmVuZGVyaW5nTW9kZSk7
CisKICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5pc0RvY3VtZW50KCkpIHsKICAgICAg
ICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7CiAgICAgICAgIGlmIChkb2N1bWVudC52aWV3KCkgJiYgZG9jdW1lbnQudmlldygpLT5y
b290KCkpIHsKICAgICAgICAgICAgIGF1dG8gaG9zdFdpbmRvdyA9IGRvY3VtZW50LnZpZXcoKS0+
cm9vdCgpLT5ob3N0V2luZG93KCk7Ci0gICAgICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRl
cmluZ1B1cnBvc2U6OkNhbnZhcywgcmVzb2x1dGlvblNjYWxlLCAqaW1hZ2VCdWZmZXJDb2xvclNw
YWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOworICAgICAgICAgICAgcmV0dXJu
IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNv
bHV0aW9uU2NhbGUsICppbWFnZUJ1ZmZlckNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwg
YnVmZmVyT3B0aW9ucywgeyBob3N0V2luZG93IH0pOwogICAgICAgICB9CiAgICAgfQogCiAgICAg
Ly8gRklYTUUgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxODQ4Mj4gRW5hYmxlIHdvcmtlciBiYXNl
ZCBJbWFnZUJpdG1hcCBhbmQgT2Zmc2NyZWVuQ2FudmFzIGRyYXdpbmcgdG8gdXNlIEdQVSBQcm9j
ZXNzIHJlbmRlcmluZwotICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRl
cmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgKmltYWdlQnVmZmVyQ29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5k
ZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgcmVzb2x1dGlvblNjYWxlLCAqaW1hZ2VCdWZmZXJD
b2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGJ1ZmZlck9wdGlvbnMpOwogfQogCiB2b2lk
IEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIEltYWdlQml0bWFwOjpTb3VyY2UmJiBzb3VyY2UsIEltYWdlQml0
bWFwT3B0aW9ucyYmIG9wdGlvbnMsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRl
cmluZ0NvbnRleHQuY3BwCmluZGV4IGU0NmRkY2FmNmFmMzVjMDQyYmZmZDQ4ZmJmM2JlZmFiZjBl
YmU5ZDUuLmFlZTUyYmI4MTgyODNlMjZhMTNmMjc4YmU2ZmZhYTg5MjJkNWFjMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJp
bmdDb250ZXh0LmNwcApAQCAtOTUsNyArOTUsOSBAQCB2b2lkIEltYWdlQml0bWFwUmVuZGVyaW5n
Q29udGV4dDo6c2V0T3V0cHV0Qml0bWFwKFJlZlB0cjxJbWFnZUJpdG1hcD4gaW1hZ2VCaXRtYQog
ICAgICAgICAvLyBvbmx5IHJlYXNvbiBJIGNhbiB0aGluayBvZiBpcyB0b0RhdGFVUkwoKSwgYnV0
IHRoYXQgZG9lc24ndCBzZWVtIGxpa2UKICAgICAgICAgLy8gYSBnb29kIGVub3VnaCBhcmd1bWVu
dCB0byB3YXN0ZSBtZW1vcnkuCiAKLSAgICAgICAgY2FudmFzKCktPnNldEltYWdlQnVmZmVyQW5k
TWFya0RpcnR5KEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKGNhbnZhcygpLT53aWR0aCgp
LCBjYW52YXMoKS0+aGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlLCAxLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIG5lZWRzIHRvIHVzZSBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMgdG8gYXZvaWQg
YWNjZWxlcmF0ZWQgYnVmZmVycyBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzICh3ZWJraXQub3Jn
L2IvMjM4ODQ2KS4KKyAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZs
b2F0U2l6ZShjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKSwgUmVuZGVyaW5n
UHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQ
aXhlbEZvcm1hdDo6QkdSQTgsIGJ1ZmZlck9wdGlvbnNGb3JSZW5kaW5nTW9kZShidWZmZXJSZW5k
ZXJpbmdNb2RlKSk7CisgICAgICAgIGNhbnZhcygpLT5zZXRJbWFnZUJ1ZmZlckFuZE1hcmtEaXJ0
eShXVEZNb3ZlKGJ1ZmZlcikpOwogCiAgICAgICAgIC8vIDEuNC4gU2V0IHRoZSBvdXRwdXQgYml0
bWFwJ3Mgb3JpZ2luLWNsZWFuIGZsYWcgdG8gdHJ1ZS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAw
ZDEyZDIyMzcyMWU0Njc3N2VjNjM2ZTJiNWZjNjIxYTVkNmYwZGNlLi5iNTg2ZmM3YWI1OTU0OTg0
ZDc3MWZjM2E1YTVkODQ5M2JmMDM2YmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNzgzNyw3ICs3
ODM3LDcgQEAgSW1hZ2VCdWZmZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdl
QnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVyKGNvbnN0IEkKICAgICB9CiAKICAgICAvLyBGSVhNRSAo
MTQ5NDIzKTogU2hvdWxkIHRoaXMgSW1hZ2VCdWZmZXIgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNj
ZWxlcmF0ZWQ/Ci0gICAgYXV0byB0ZW1wID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOworICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5n
UHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAgICAgaWYgKCF0ZW1wKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQobV9i
dWZmZXJzLnNpemUoKSA+IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNw
cAppbmRleCBhZmI1ZjFlNmNkZWVhMzgxZDExZGFkY2NmNjVhYWY5ZGY4NzlkMWJlLi5kMmU2YWRh
MTIwNjFkNzBiOWM4ZjU3YjVhNjJjMjhiNTU5NzAwYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50LmNwcApAQCAtNDIwLDcgKzQyMCw3IEBAIFJlZlB0cjxJbWFnZT4gTWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVz
ZW50YXRpCiAgICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIGxh
eWVyLT5zaXplKCkpOwogCiAgICAgLy8gRklYTUUgKDE0OTQyMik6IFRoaXMgYnVmZmVyIHNob3Vs
ZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAgYXV0byBidWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUoKSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVj
aWZpZWQsIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAK
aW5kZXggNTBhZDVjYmM5NjVkZTAwMGI4ODE2ODk3YmFlOTgxN2EzZWRjOWZlNi4uYzc3ODZmNDg5
Y2ZlOWQzMDIwZmU4MmYzYTg0ZWFlOWQwYmNmZmYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKQEAgLTEwOTgsNyArMTA5OCw3IEBAIGludCBJbnNw
ZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShEdXBsaWNhdGVEYXRhVmFyaWFudCBkYXRhKQogICAg
ICAgICAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGltYWdlRWxlbWVudC0+Y2Fj
aGVkSW1hZ2UoKSkgewogICAgICAgICAgICAgICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZEltYWdl
LT5pbWFnZSgpOwogICAgICAgICAgICAgICAgIGlmIChpbWFnZSAmJiBpbWFnZSAhPSAmSW1hZ2U6
Om51bGxJbWFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgMSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAg
ICAgICAgICAgICAgICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwg
RmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1
ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MpOwogICAgICAgICAgICAgICAgIH0KQEAgLTEx
MTIsNyArMTExMiw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShEdXBsaWNh
dGVEYXRhVmFyaWFudCBkYXRhKQogCiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb1dpZHRoID0g
dmlkZW9FbGVtZW50LT52aWRlb1dpZHRoKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb0hl
aWdodCA9IHZpZGVvRWxlbWVudC0+dmlkZW9IZWlnaHQoKTsKLSAgICAgICAgICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRl
b0hlaWdodCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICAgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKHZpZGVvV2lkdGgsIHZp
ZGVvSGVpZ2h0KSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgaWYg
KGltYWdlQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50LT5wYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dChpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBGbG9hdFJlY3QoMCwgMCwg
dmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpKTsKICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1h
Z2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zKTsKQEAgLTExNDksNyArMTE0OSw3IEBA
IGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShEdXBsaWNhdGVEYXRhVmFyaWFudCBk
YXRhKQogICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0gY3NzSW1hZ2VWYWx1ZS0+
aW1hZ2UoKSkgewogICAgICAgICAgICAgICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmlt
YWdlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGltYWdlICE9ICZJbWFnZTo6bnVs
bEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAg
ICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBGbG9h
dFBvaW50KDAsIDApKTsKICAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVy
LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcyk7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAppbmRleCA1ZDI4NzZhNWRmZGE1ZDY1ZWZj
MjlhZDgwMDRkYTljMDMxN2ZmNTRiLi4wYjRiNTU2ZDk3MTRlMGJjMmE1NmUwOWMwYjgyOTc3NmZm
NTA5ZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcApAQCAt
MTE0LDcgKzExNCw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3RXaXRo
Q2xpcChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWdlCiAgICAgaWYgKG9wdGlvbnMu
ZmxhZ3MuY29udGFpbnMoU25hcHNob3RGbGFnczo6UGFpbnRXaXRoSW50ZWdyYWxTY2FsZUZhY3Rv
cikpCiAgICAgICAgIHNjYWxlRmFjdG9yID0gY2VpbGYoc2NhbGVGYWN0b3IpOwogCi0gICAgYXV0
byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIHNjYWxlRmFjdG9yLCBvcHRpb25zLmNvbG9yU3BhY2UsIG9w
dGlvbnMucGl4ZWxGb3JtYXQpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgc2NhbGVG
YWN0b3IsIG9wdGlvbnMuY29sb3JTcGFjZSwgb3B0aW9ucy5waXhlbEZvcm1hdCk7CiAgICAgaWYg
KCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGJ1ZmZlci0+Y29udGV4dCgp
LnRyYW5zbGF0ZSgtaW1hZ2VSZWN0LngoKSwgLWltYWdlUmVjdC55KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAppbmRleCBkZTk5Yjc3ODZjM2E4ZjI1YjMwNzNi
MjgwN2ZhNTJjMmI5ZGZkNGY3Li4wN2FjMTcwMmVlYjdlYWU4MDU3MDI2N2VmNzI2YTY1Y2Q0YTli
MGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApAQCAtMzQ4
LDcgKzM0OCw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmCiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoYXV0byogY2FjaGVkSW1hZ2UgPSBpbWFnZUVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2Ut
PmltYWdlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGltYWdl
ICE9ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc25hcHNob3QgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFw
c2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nUHVycG9z
ZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdC0+
Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTM2NSw3
ICszNjUsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFJlZgogICAgICAgICAgICAgICAgICAgICAg
ICAgYXV0byYgdmlkZW9FbGVtZW50ID0gZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4oKm5vZGUp
OwogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9XaWR0aCA9IHZpZGVvRWxl
bWVudC52aWRlb1dpZHRoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB2aWRl
b0hlaWdodCA9IHZpZGVvRWxlbWVudC52aWRlb0hlaWdodCgpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgc25hcHNob3QgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRo
LCB2aWRlb0hlaWdodCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgc25hcHNob3QgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRl
b1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHZpZGVvRWxlbWVudC5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4
dChzbmFwc2hvdC0+Y29udGV4dCgpLCBGbG9hdFJlY3QoMCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9I
ZWlnaHQpKTsKICAgICAgICAgICAgICAgICAgICAgfQogI2VuZGlmCkBAIC0zOTAsNyArMzkwLDcg
QEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBSZWYKICAgICAgICAgICAgIHRhcmdldCA9IHBvc3NpYmxl
VGFyZ2V0OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aGFzRnJvbnRlbmRzKCkpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBzb3VyY2VTaXplID0g
aW1hZ2VEYXRhLT5zaXplKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHNvdXJjZVNpemUsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSkgewogICAg
ICAgICAgICAgICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3QoSW50UG9pbnQoKSwgc291cmNlU2l6
ZSk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVmZmVyLT5wdXRQaXhlbEJ1ZmZlcihpbWFn
ZURhdGEtPnBpeGVsQnVmZmVyKCksIHNvdXJjZVJlY3QpOwogICAgICAgICAgICAgICAgICAgICBk
YXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zLCBzdGQ6Om51bGxv
cHQsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCAzOGNmODc5NmY5YTgxN2RiNWU5NjQ2
NzNiY2JjYTA4ZDhmNzg5YWQxLi4xYTBiYTM2NmY0MjNiNTJiNzcyZWQ4NWIzYmQzZTM4ZjUzZWI5
MTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFn
ZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHIKICAgICAg
ICAgcmV0dXJuIGltYWdlOwogCiAgICAgYXV0byBjb3JyZWN0ZWRTaXplRmxvYXQgPSBjb3JyZWN0
ZWRTaXplID8gRmxvYXRTaXplKGNvcnJlY3RlZFNpemUudmFsdWUoKSkgOiBzaXplKCk7Ci0gICAg
YXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvcnJlY3RlZFNpemVGbG9hdCwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGNvcnJlY3RlZFNpemVGbG9hdCwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwog
ICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gaW1hZ2U7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDI3
NTFhYzA4OTkxMmU3NmVmZWQ1MWE1OTMyMzcyYmM2ZjA3MmFiMTMuLmY2YjUwM2YwMTgxZDllNDg0
NmZhZmU3MTEyMTA2NTcxNjU2YmFjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMTk4LDEwICsxOTgsMTMgQEAg
SW50U2l6ZSBHcmFwaGljc0NvbnRleHQ6OmNvbXBhdGlibGVJbWFnZUJ1ZmZlclNpemUoY29uc3Qg
RmxvYXRTaXplJiBzaXplKSBjb25zdAogCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3Rk
OjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlLCBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ01ldGhvZD4gcmVuZGVyaW5nTWV0aG9kKSBjb25zdAogeworICAgIGF1dG8gYnVmZmVy
T3B0aW9ucyA9IGJ1ZmZlck9wdGlvbnNGb3JSZW5kaW5nTW9kZShyZW5kZXJpbmdNb2RlLnZhbHVl
X29yKHRoaXMtPnJlbmRlcmluZ01vZGUoKSkpOworCiAgICAgaWYgKCFyZW5kZXJpbmdNZXRob2Qg
fHwgKnJlbmRlcmluZ01ldGhvZCA9PSBSZW5kZXJpbmdNZXRob2Q6OkxvY2FsKQotICAgICAgICBy
ZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLnZhbHVlX29yKHRo
aXMtPnJlbmRlcmluZ01vZGUoKSksIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwg
UmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBidWZmZXJPcHRpb25zKTsKIAotICAgIHJldHVybiBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUudmFsdWVfb3IodGhpcy0+cmVuZGVy
aW5nTW9kZSgpKSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6OlllcywgUmVuZGVyaW5nUHVycG9zZTo6
VW5zcGVjaWZpZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKKyAgICBidWZmZXJPcHRpb25zLmFkZChJbWFnZUJ1ZmZlck9wdGlvbnM6OlVzZURpc3Bs
YXlMaXN0KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdQ
dXJwb3NlOjpVbnNwZWNpZmllZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZv
cm1hdDo6QkdSQTgsIGJ1ZmZlck9wdGlvbnMpOwogfQogCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IEdy
YXBoaWNzQ29udGV4dDo6Y3JlYXRlU2NhbGVkSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBjb25zdCBGbG9hdFNpemUmIHNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGNvbG9yU3BhY2UsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZSwg
c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNZXRob2Q+IHJlbmRlcmluZ01ldGhvZCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRl
eCBiOGE5NWY1NDFjNWZmNTllMWQ0MjFkZWM3MDEzN2RjYmY2OWEzMjBlLi5lYmYxODAxMjgwNTAz
MTBiNTZhNDZkMWZhMmExYTljNTQzNjUwMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC0zNywzMyArMzcsMjggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0IGZsb2F0IE1heENsYW1wZWRMZW5ndGggPSA0MDk2
Owogc3RhdGljIGNvbnN0IGZsb2F0IE1heENsYW1wZWRBcmVhID0gTWF4Q2xhbXBlZExlbmd0aCAq
IE1heENsYW1wZWRMZW5ndGg7CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
U2hvdWxkVXNlRGlzcGxheUxpc3Qgc2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBv
c2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBDcmVhdGlv
bkNvbnRleHQmIGNyZWF0aW9uQ29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9z
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBPcHRpb25TZXQ8SW1hZ2VCdWZmZXJP
cHRpb25zPiBvcHRpb25zLCBjb25zdCBDcmVhdGlvbkNvbnRleHQmIGNyZWF0aW9uQ29udGV4dCkK
IHsKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwogICAgIAotICAgIC8vIEdp
dmUgU2hvdWxkVXNlRGlzcGxheUxpc3QgYSBoaWdoZXIgcHJlY2VkZW5jZSBzaW5jZSBpdCBpcyBh
IGRlYnVnIG9wdGlvbi4KLSAgICBpZiAoc2hvdWxkVXNlRGlzcGxheUxpc3QgPT0gU2hvdWxkVXNl
RGlzcGxheUxpc3Q6OlllcykgewotICAgICAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJp
bmdNb2RlOjpBY2NlbGVyYXRlZCkKKyAgICAvLyBHaXZlIFVzZURpc3BsYXlMaXN0IGEgaGlnaGVy
IHByZWNlZGVuY2Ugc2luY2UgaXQgaXMgYSBkZWJ1ZyBvcHRpb24uCisgICAgaWYgKG9wdGlvbnMu
Y29udGFpbnMoSW1hZ2VCdWZmZXJPcHRpb25zOjpVc2VEaXNwbGF5TGlzdCkpIHsKKyAgICAgICAg
aWYgKG9wdGlvbnMuY29udGFpbnMoSW1hZ2VCdWZmZXJPcHRpb25zOjpBY2NlbGVyYXRlZCkpCiAg
ICAgICAgICAgICBpbWFnZUJ1ZmZlciA9IERpc3BsYXlMaXN0QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQs
IGNyZWF0aW9uQ29udGV4dCk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQog
ICAgICAgICAgICAgaW1hZ2VCdWZmZXIgPSBEaXNwbGF5TGlzdFVuYWNjZWxlcmF0ZWRJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3Jt
YXQsIGNyZWF0aW9uQ29udGV4dCk7CiAgICAgfQogICAgIAotICAgIGlmIChjcmVhdGlvbkNvbnRl
eHQuaG9zdFdpbmRvdyAmJiAhaW1hZ2VCdWZmZXIpCisgICAgaWYgKGNyZWF0aW9uQ29udGV4dC5o
b3N0V2luZG93ICYmICFpbWFnZUJ1ZmZlcikgeworICAgICAgICBhdXRvIHJlbmRlcmluZ01vZGUg
PSBvcHRpb25zLmNvbnRhaW5zKEltYWdlQnVmZmVyT3B0aW9uczo6QWNjZWxlcmF0ZWQpID8gUmVu
ZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwog
ICAgICAgICBpbWFnZUJ1ZmZlciA9IGNyZWF0aW9uQ29udGV4dC5ob3N0V2luZG93LT5jcmVhdGVJ
bWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKKyAgICB9CiAKLSAgICBpZiAoIWltYWdlQnVmZmVy
KQotICAgICAgICBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVy
aW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgY3JlYXRp
b25Db250ZXh0KTsKLQotICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKLX0KKyAgICBpZiAoaW1hZ2VC
dWZmZXIpCisgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIAotUmVmUHRyPEltYWdlQnVmZmVy
PiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IENy
ZWF0aW9uQ29udGV4dCYgY3JlYXRpb25Db250ZXh0KQotewotICAgIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gaW1hZ2VCdWZmZXI7Ci0gICAgCi0gICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5n
TW9kZTo6QWNjZWxlcmF0ZWQpCisgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoSW1hZ2VCdWZmZXJP
cHRpb25zOjpBY2NlbGVyYXRlZCkpCiAgICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4
ZWxGb3JtYXQsIGNyZWF0aW9uQ29udGV4dCk7CiAgICAgCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4
IDc3ZTU1YWYwYjg2MjJmZjBjN2NkODM4NDllYWE4OGFjMDliNDNkN2MuLmVkM2RmZWIyZjAxNTE1
ZDVmZTQ2YWI1ZTQ4OGUwYjBmYTc0YTA5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIklt
YWdlQnVmZmVyQmFja2VuZC5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ01vZGUuaCIKICNpbmNsdWRl
ICJSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCkBAIC00Miw2ICs0MywxMSBAQCBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgSU9TdXJmYWNl
UG9vbDsKICNlbmRpZgogCitlbnVtIGNsYXNzIEltYWdlQnVmZmVyT3B0aW9ucyA6IHVpbnQ4X3Qg
eworICAgIEFjY2VsZXJhdGVkICAgICA9IDEgPDwgMCwKKyAgICBVc2VEaXNwbGF5TGlzdCAgPSAx
IDw8IDEKK307CisKIGNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPEltYWdlQnVmZmVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiwgcHVibGljIENh
bk1ha2VXZWFrUHRyPEltYWdlQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IENyZWF0aW9u
Q29udGV4dCB7CkBAIC02Myw4ICs2OSw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgLy8gV2ls
bCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJlLgotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNp
emUmLCBSZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9z
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQ
aXhlbEZvcm1hdCwgY29uc3QgQ3JlYXRpb25Db250ZXh0JiA9IHsgfSk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQsIGNvbnN0IENyZWF0aW9uQ29udGV4dCYgPSB7IH0pOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25z
dCBGbG9hdFNpemUmLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0LCBPcHRpb25TZXQ8SW1hZ2VC
dWZmZXJPcHRpb25zPiA9IHsgfSwgY29uc3QgQ3JlYXRpb25Db250ZXh0JiA9IHsgfSk7CiAKICAg
ICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNsb25lKCkgY29uc3Q7CiAKQEAgLTE1Nyw0ICsxNjIsMTEg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiB9OwogCitpbmxpbmUgT3B0aW9u
U2V0PEltYWdlQnVmZmVyT3B0aW9ucz4gYnVmZmVyT3B0aW9uc0ZvclJlbmRpbmdNb2RlKFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSkKK3sKKyAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5k
ZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKKyAgICAgICAgcmV0dXJuIHsgSW1hZ2VCdWZmZXJPcHRp
b25zOjpBY2NlbGVyYXRlZCB9OworICAgIHJldHVybiB7IH07Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
bmRlcmluZ01vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmlu
Z01vZGUuaAppbmRleCA1ZWY5YjNiNDBjMDAzMmViOTgzMzNkZmJlMWNmNWE2ZWIxMDgyNmE2Li42
MDY3NWE4OTAxMzRmNGY1OTZiMDMxZjI0MmIyOWJiZjE3YzdkMjI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCkBAIC0zNCw3ICszNCw2
IEBAIGVudW0gY2xhc3MgUmVuZGVyaW5nUHVycG9zZSA6IHVpbnQ4X3QgewogICAgIE1lZGlhUGFp
bnRpbmcKIH07CiAKLWVudW0gY2xhc3MgU2hvdWxkVXNlRGlzcGxheUxpc3QgOiBib29sIHsgTm8s
IFllcyB9OwogZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9vbCB7IFVuYWNjZWxlcmF0ZWQs
IEFjY2VsZXJhdGVkIH07CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01ldGhvZCA6IGJvb2wgeyBMb2Nh
bCwgRGlzcGxheUxpc3QgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaGFkb3dCbHVyLmNwcAppbmRleCA5MDI0ZjVkMWFiZmNlMzgwODE4M2EzYjIzMWZiY2UwZmZi
MmZmNDE0Li44MTYxYjQ4MzlmMjA1ODcyOGE4NDA5ODg0NDBlMTAzNThiOTQwNmIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtODUs
NyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNsZWFyU2NyYXRjaEJ1ZmZlcigpOwogCiAgICAg
ICAgIC8vIFNoYWRvd0JsdXIgaXMgbm90IHVzZWQgd2l0aCBhY2NlbGVyYXRlZCBkcmF3aW5nLCBz
byBpdCdzIE9LIHRvIG1ha2UgYW4gdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVy
LgotICAgICAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyb3VuZGVkU2l6
ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNp
ZmllZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JB
OCk7CiAgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyOwogICAgIH0KIApAQCAtNjA2LDcgKzYw
Niw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgdHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0CiAKIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1Jl
Y3RTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgTGF5ZXJJbWFnZVByb3BlcnRpZXMmIGxh
eWVySW1hZ2VQcm9wZXJ0aWVzLCBjb25zdCBEcmF3QnVmZmVyQ2FsbGJhY2smIGRyYXdCdWZmZXIp
CiB7Ci0gICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZElu
dFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CisgICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBh
bmRlZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgUmVuZGVyaW5nUHVy
cG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbGF5ZXJJbWFnZSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC02MzQsNyArNjM0LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhv
dXRUaWxpbmcoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXQKIAogdm9pZCBTaGFk
b3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IEZsb2F0UmVjdCYgZnVsbFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhv
bGVSZWN0LCBjb25zdCBMYXllckltYWdlUHJvcGVydGllcyYgbGF5ZXJJbWFnZVByb3BlcnRpZXMs
IGNvbnN0IERyYXdCdWZmZXJDYWxsYmFjayYgZHJhd0J1ZmZlcikKIHsKLSAgICBhdXRvIGxheWVy
SW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJv
cGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRv
IGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllcklt
YWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAg
ICAgaWYgKCFsYXllckltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTcxMCw3ICs3MTAsNyBA
QCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29ucwogICAgIFVOVVNFRF9QQVJBTShsYXllckltYWdlUHJv
cGVydGllcyk7CiAjZW5kaWYKIAotICAgIGlmIChhdXRvIGxheWVySW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKHRlbXBsYXRlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkp
CisgICAgaWYgKGF1dG8gbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVt
cGxhdGVTaXplLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpCiAgICAgICAgIGRyYXdSZWN0
U2hhZG93V2l0aFRpbGluZ1dpdGhMYXllckltYWdlQnVmZmVyKCpsYXllckltYWdlQnVmZmVyLCB0
cmFuc2Zvcm0sIHNoYWRvd2VkUmVjdCwgdGVtcGxhdGVTaXplLCBlZGdlU2l6ZSwgZHJhd0ltYWdl
LCBmaWxsUmVjdCwgdGVtcGxhdGVTaGFkb3cpOwogfQogCkBAIC03NjQsNyArNzY0LDcgQEAgdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgdHJhbnNmb3JtLCBjb24KICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChhdXRvIGxheWVy
SW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRlbXBsYXRlU2l6ZSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBp
eGVsRm9ybWF0OjpCR1JBOCkpCisgICAgaWYgKGF1dG8gbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmll
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkp
CiAgICAgICAgIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmdXaXRoTGF5ZXJJbWFnZUJ1ZmZlcigq
bGF5ZXJJbWFnZUJ1ZmZlciwgdHJhbnNmb3JtLCBmdWxsUmVjdCwgaG9sZVJlY3QsIHRlbXBsYXRl
U2l6ZSwgZWRnZVNpemUsIGRyYXdJbWFnZSwgZmlsbFJlY3RXaXRoSG9sZSwgdGVtcGxhdGVCb3Vu
ZHMsIHRlbXBsYXRlSG9sZSk7CiB9CiAKQEAgLTkyMyw3ICs5MjMsNyBAQCB2b2lkIFNoYWRvd0Js
dXI6OmRyYXdTaGFkb3dMYXllcihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29u
c3QgSW50UmVjdAogCiAgICAgYWRqdXN0Qmx1clJhZGl1cyh0cmFuc2Zvcm0pOwogCi0gICAgYXV0
byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJ
bWFnZVByb3BlcnRpZXMtPmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXpl
KGxheWVySW1hZ2VQcm9wZXJ0aWVzLT5sYXllclNpemUpLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNw
ZWNpZmllZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiAgICAgaWYgKCFsYXllckltYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUltYWdlLmNwcAppbmRleCAwZDE4
N2ZjOTAxYWM5MjdjYTViZjk4OGMwNjdjNGZmZWYzMDg0ZjY0Li40ZmI2MmE1ZTQ3MDU2Yzk5ZTAx
NzQwZWFhNzI5NzhmYTlmZjQ1ZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Tb3VyY2VJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlSW1hZ2UuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIEltYWdlQnVmZmVyKiBT
b3VyY2VJbWFnZTo6aW1hZ2VCdWZmZXIoKSBjb25zdAogICAgICAgICBhdXRvIG5hdGl2ZUltYWdl
ID0gc3RkOjpnZXQ8UmVmPE5hdGl2ZUltYWdlPj4obV9pbWFnZVZhcmlhbnQpOwogCiAgICAgICAg
IGF1dG8gcmVjdCA9IEZsb2F0UmVjdCB7IHsgfSwgbmF0aXZlSW1hZ2UtPnNpemUoKSB9OwotICAg
ICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShuYXRpdmVJbWFnZS0+
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUobmF0aXZlSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5n
UHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5jcHAKaW5kZXggMmEwMDhmZWIxY2MzNDM4
NDQ0N2IxOGZmMDNhMTE5YTJmMzk5YjQyOS4uMzY5YTFiNjhkODUxNzkyN2FkNzc0YjIyOGZlZGE3
MTE5NzhkN2UwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJJbWFnZS5jcHAKQEAgLTk5LDcgKzk5LDkgQEAgSW1hZ2VCdWZm
ZXIqIEZpbHRlckltYWdlOjppbWFnZUJ1ZmZlckZyb21QaXhlbEJ1ZmZlcigpCiAgICAgaWYgKG1f
aW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyLmdldCgpOwogCi0gICAg
bV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZUltYWdlUmVjdC5z
aXplKCksIG1fcmVuZGVyaW5nTW9kZSwgMSwgbV9jb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOworICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIHVzZSBhIHNwZWNpZmljIFJlbmRlcmlu
Z1B1cnBvc2UgdG8gYXZvaWQgYWNjZWxlcmF0ZWQgYnVmZmVycyBpbiB0aGUgV2ViQ29udGVudCBw
cm9jZXNzICh3ZWJraXQub3JnL2IvMjM4ODQ4KS4KKyAgICAvLyBGSVhNRTogVGVzdAorICAgIG1f
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVJbWFnZVJlY3Quc2l6
ZSgpLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgMSwgbV9jb2xvclNwYWNlLCBQaXhl
bEZvcm1hdDo6QkdSQTgsIGJ1ZmZlck9wdGlvbnNGb3JSZW5kaW5nTW9kZShtX3JlbmRlcmluZ01v
ZGUpKTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CkBAIC0xNzAsNyArMTcyLDcgQEAgc3RhdGljIHZvaWQgY29weUltYWdlQnl0ZXMoY29uc3QgUGl4
ZWxCdWZmZXImIHNvdXJjZVBpeGVsQnVmZmVyLCBQaXhlbEJ1ZmZlciYgZGUKIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRDb252ZXJ0ZWRQaXhlbEJ1ZmZlcihJbWFnZUJ1ZmZl
ciYgaW1hZ2VCdWZmZXIsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFGb3JtYXQsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQog
ewogICAgIGF1dG8gY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUoc291cmNl
UmVjdC5zaXplKCkpOwotICAgIGF1dG8gY29udmVydGVkSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBj
b2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gY29udmVydGVkSW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBSZW5kZXJpbmdQdXJwb3Nl
OjpVbnNwZWNpZmllZCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAK
ICAgICBpZiAoIWNvbnZlcnRlZEltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtMTg3LDcgKzE4OSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVy
PiBnZXRDb252ZXJ0ZWRQaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlciYgc291cmNlUGl4CiAgICAgYXV0
byBjbGFtcGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjbGFtcGVkU2l6ZShzb3VyY2VSZWN0LnNpemUo
KSk7CiAKICAgICBhdXRvJiBzb3VyY2VDb2xvclNwYWNlID0gc291cmNlUGl4ZWxCdWZmZXIuZm9y
bWF0KCkuY29sb3JTcGFjZTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShjbGFtcGVkU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgc291cmNl
Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVj
aWZpZWQsIDEsIHNvdXJjZUNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYg
KCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9zb2Z0d2FyZS9GRVRp
bGVTb2Z0d2FyZUFwcGxpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9zb2Z0d2FyZS9GRVRpbGVTb2Z0d2FyZUFwcGxpZXIuY3BwCmluZGV4IDU1MmQxOTQ2
ZjI4YmUwOTQ2Y2EwNDZlMDZmZDdlM2E4YzlmZmZlYzAuLjkyYjJiZDljZWU1MTQ2YTBjZjEzMWY4
NDQxMTdmNDA1M2VjZGMzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc29mdHdhcmUvRkVUaWxlU29mdHdhcmVBcHBsaWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NvZnR3YXJlL0ZFVGlsZVNv
ZnR3YXJlQXBwbGllci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgYm9vbCBGRVRpbGVTb2Z0d2FyZUFw
cGxpZXI6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyLCBjb25zdCBGaWx0ZXJJbWFnZVZlY3Rv
ciYKICAgICBhdXRvIG1heFJlc3VsdFJlY3QgPSByZXN1bHQubWF4RWZmZWN0UmVjdChmaWx0ZXIp
OwogICAgIG1heFJlc3VsdFJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogCi0gICAg
YXV0byB0aWxlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRpbGVSZWN0LnNpemUoKSwgZmls
dGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHRpbGVSZWN0LnNpemUoKSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGJ1ZmZlck9w
dGlvbnNGb3JSZW5kaW5nTW9kZShmaWx0ZXIucmVuZGVyaW5nTW9kZSgpKSk7CiAgICAgaWYgKCF0
aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFw
L05pY29zaWFHQ0dMQU5HTEVMYXllci5jcHAKaW5kZXggZTkxNDYzZDk3NDk3YWI5NGEzOTdhOWQ3
OTYzODRhNDBkMmJjNjZhMC4uZjhlYzRiY2Y0NTA4NzYzNDAwODJiM2VkZGQ1ZGU3YWEwOTRjMzky
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuY3BwCkBA
IC03Myw3ICs3Myw3IEBAIHZvaWQgR0NHTEFOR0xFTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQo
KQogI2VuZGlmCiAKICAgICAvLyBGYWxsYmFjayBwYXRoLCByZWFkIGJhY2sgdGV4dHVyZSB0byBt
YWluIG1lbW9yeQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWlt
YWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZXh0LnBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKCppbWFnZUJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKaW5k
ZXggZTI0NDkzYjI1ZDQ5MGFjMDFiZTYzNjcwMjZkNzllNjJkZjRkZTdlNi4uZDM0ZTU4OGQyNDg3
MTc1ZTE5OGU5MTYxZDZkYjM4Mjg5MzY3MmRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcApAQCAtMzgs
NyArMzgsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKEdyYXBoaWNzTGF5
ZXIqIHNvdXJjZUxheWVyLCBjb25zdCBJbnRSZWN0JiB0YQogewogICAgIC8vIE1ha2luZyBhbiB1
bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIgaGVyZSBpcyBPSyBiZWNhdXNlIHRo
aXMgY29kZQogICAgIC8vIGlzbid0IHVzZWQgYnkgYW55IHBsYXRmb3JtcyB0aGF0IHJlc3BlY3Qg
dGhlIGFjY2VsZXJhdGVkIGJpdC4KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZSh0YXJnZXRSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cisg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGFyZ2V0UmVjdC5zaXpl
KCksIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggNGZlYzRkOTM5YmIyOTJkNjQ2
NDlmOTVkZTJkNzdlOTcyODY4MDcxZi4uM2U0ZTBlOTM0MjVlNjgwYjkwMzYyN2JlOTlmYjQzZjJh
MjNjMmUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTQ3Myw3ICs0NzMsNyBAQCBJbWFnZUJ1ZmZl
ciogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmltYWdlQnVmZmVyKCkgY29uc3QKICAgICBpZiAo
bV9pbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CiAKLSAg
ICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjYXB0dXJlU2l6ZSgpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShjYXB0dXJlU2l6ZSgpLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgMSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAg
aWYgKCFtX2ltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAppbmRleCA2ZDM3YmQyMGE1ZWEyMTIwYmFh
NGEzZWI1OGRkODg5ZGRjM2I5MDkxLi4wYjU2OGU3N2Q1NmIzODhmODc3YWU5ZWI2ZmYwZDNiMDMx
OWYwNWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcApAQCAt
MTgxLDcgKzE4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3Rl
clNoYXBlKEltYWdlKiBpbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjCiAgICAgSW50UmVjdCBtYXJn
aW5SZWN0ID0gc25hcHBlZEludFJlY3QobWFyZ2luUik7CiAgICAgYXV0byBpbnRlcnZhbHMgPSBt
YWtlVW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5SZWN0LmhlaWdodCgpLCAtbWFy
Z2luUmVjdC55KCkpOwogICAgIC8vIEZJWE1FICgxNDk0MjApOiBUaGlzIGJ1ZmZlciBzaG91bGQg
bm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLgotICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGltYWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIAogICAgIGF1
dG8gY3JlYXRlU2hhcGUgPSBbJl0oKSB7CiAgICAgICAgIGF1dG8gcmFzdGVyU2hhcGUgPSBtYWtl
VW5pcXVlPFJhc3RlclNoYXBlPihXVEZNb3ZlKGludGVydmFscyksIG1hcmdpblJlY3Quc2l6ZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCAxYjBlMDJmMTU4NGI1ZWM4NDM1MzcwYWM4ZGIwMzc0
ZmQxNDVhNzBlLi4zNGNhODMxMzA1OTNiMjA4OGZhMTA1NzQzYTM2YTFmMTM4N2QxYWM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xp
cHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUNsaXBwZXIuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LAogCiAgICAgaWYgKCFjbGlwcGVyRGF0YS5pc1ZhbGlkRm9yR2VvbWV0cnkob2JqZWN0Qm91bmRp
bmdCb3gsIGNsaXBwZWRDb250ZW50Qm91bmRzLCBhYnNvbHV0ZVRyYW5zZm9ybSkpIHsKICAgICAg
ICAgLy8gRklYTUUgKDE0OTQ2OSk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5j
b25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBi
cmVha3MgbmVzdGVkIGNsaXBwaW5nLCB0aG91Z2guCi0gICAgICAgIGF1dG8gbWFza0ltYWdlID0g
Y29udGV4dC5jcmVhdGVTY2FsZWRJbWFnZUJ1ZmZlcihjbGlwcGVkQ29udGVudEJvdW5kcywgc2Nh
bGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkKTsKKyAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZVNjYWxlZElt
YWdlQnVmZmVyKGNsaXBwZWRDb250ZW50Qm91bmRzLCBzY2FsZSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOyAvLyBGSVhNRQogICAg
ICAgICBpZiAoIW1hc2tJbWFnZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKaW5kZXggY2MzMmQyOTAyYjFkN2Y0OGVh
Yjk1MmYzYmNmMzEzMzY2MTI3MWJjYS4uN2UwNTE0OGQyMWMxZDgwNDAxOWMzY2Y0NzMyOGNmMTgy
NzBjMjFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCkBAIC0x
OTksOCArMTk5LDcgQEAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFMKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBhdXRvIGNsYW1waW5nU2NhbGUgPSBjbGFtcGluZ1NjYWxlRm9ySW1hZ2VC
dWZmZXJTaXplKHNjYWxlZFJlY3Quc2l6ZSgpKTsKLQotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNjYWxlZFJlY3Quc2l6ZSgpICogY2xhbXBpbmdTY2FsZSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vLCBSZW5k
ZXJpbmdQdXJwb3NlOjpET00sIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKHNjYWxlZFJlY3Quc2l6ZSgpICogY2xhbXBpbmdTY2FsZSwgUmVuZGVy
aW5nUHVycG9zZTo6RE9NLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4LCB7IH0sIHsgaG9zdFdpbmRvdyB9KTsKICAgICBpZiAoIWltYWdlQnVmZmVy
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAKaW5kZXggMTMxODVmMjExODk2OTZhNGZmMjZjMDcyNmFmYmExZDZmMTg1ODFk
OS4uMWNmOGUxOWE1Njk1YWJkNTQwYThiNzEwODkzNmQzMDExOGUxN2RhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0yMDMsMTQgKzIwMywxNSBAQCBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZShjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmIGNvbG9yU3BhYwogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIGJvb2wgYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCA9IG1fcGFnZS0+c2V0
dGluZ3MoKS5hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKCk7Ci0gICAgYXV0byByZW5kZXJpbmdN
b2RlID0gYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJh
dGVkIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKKyAgICBPcHRpb25TZXQ8SW1hZ2VC
dWZmZXJPcHRpb25zPiBidWZmZXJPcHRpb25zOworICAgIGlmIChtX3BhZ2UtPnNldHRpbmdzKCku
YWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCgpKQorICAgICAgICBidWZmZXJPcHRpb25zLmFkZChJ
bWFnZUJ1ZmZlck9wdGlvbnM6OkFjY2VsZXJhdGVkKTsKIAogICAgIEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3cgPSBudWxscHRyOwogICAgIGlmIChhdXRvIGNvbnRlbnRSZW5kZXJlciA9IGVtYmVkZGVk
Q29udGVudEJveCgpKQogICAgICAgICBob3N0V2luZG93ID0gY29udGVudFJlbmRlcmVyLT5ob3N0
V2luZG93KCk7CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShz
aXplKCksIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5n
UHVycG9zZTo6RE9NLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5k
b3cpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwg
UmVuZGVyaW5nUHVycG9zZTo6RE9NLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgs
IGJ1ZmZlck9wdGlvbnMsIHsgaG9zdFdpbmRvdyB9KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQppbmRl
eCAxNjVjNWJmMDBhYzZhMWE4MWY4ZTcyMzE1MTQzNDI4MzcwNzgyMTc1Li4wMTcwNTc3OWZmMDYw
ZjY3NzBkYzBhNDljNzEzOTFiMjgxMWFkZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5t
bQpAQCAtMjE0LDcgKzIxNCw3IEBAIFJldGFpblB0cjxOU0ltYWdlPiBXZWJDb250ZXh0TWVudUNs
aWVudDo6aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKICAgICAvLyBUaGlzIGlzIGVmZmVjdGl2ZWx5IGEgc25hcHNob3QsIGFuZCB3
aWxsIGJlIHBhaW50ZWQgaW4gYW4gdW5hY2NlbGVyYXRlZCBmYXNoaW9uIGluIGxpbmUgd2l0aCBG
cmFtZVNuYXBzaG90dGluZy4KLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
cmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gYnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyZWN0LnNpemUoKSwgUmVuZGVyaW5nUHVycG9zZTo6VW5z
cGVjaWZpZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDI2MjU0ODkzN2Ey
MGMwODIwNTBiNzcxMDkwYjcwZTNiMzc5ZjQzMC4uOTY5OGZlYjM3OGQ2ZDQyNTEzMjExM2Y0MDk4
MDdlMTYwZjhjODE2NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIyLTA0LTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVuaWZ5IHRoZSB0d28gSW1hZ2VCdWZmZXI6
OmNyZWF0ZSgpIGZ1bmN0aW9ucywgcGFzc2luZyBSZW5kZXJpbmdQdXJwb3NlIGV2ZXJ5d2hlcmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODg1MQor
CisgICAgICAgIFJldmlld2VkIGJ5IFNhaWQgQWJvdS1IYWxsYXdhLgorCisgICAgICAgIEkgbmVl
ZCB0byBleHRlbmQgUmVuZGVyaW5nUHVycG9zZSBmbGFncyB0byBkaXN0aW5ndWlzaCBsYXllciBi
YWNraW5nIHN0b3JlIGJ1ZmZlcnMgZnJvbQorICAgICAgICBvdGhlciBraW5kcyBvZiBidWZmZXJz
LiBCZWZvcmUgZG9pbmcgc28sIGNvbGxhcHNlIHRoZSB0d28gSW1hZ2VCdWZmZXI6OmNyZWF0ZSgp
IGZ1bmN0aW9ucworICAgICAgICB0b2dldGhlciBieSBjb21iaW5pbmcgUmVuZGVyaW5nTW9kZSBh
bmQgU2hvdWxkVXNlRGlzcGxheUxpc3QgaW50byBPcHRpb25TZXQ8SW1hZ2VCdWZmZXJPcHRpb25z
PiwKKyAgICAgICAgYW5kIHBhc3NpbmcgUmVuZGVyaW5nUHVycG9zZSBldmVyeXdoZXJlLgorICAg
ICAgICAKKyAgICAgICAgQWx3YXlzIHBhc3NpbmcgUmVuZGVyaW5nUHVycG9zZSBpcyByZXZlYWxp
bmcsIGJlY2F1c2UgaXQgZmluZHMgY2FsbCBzaXRlcyBpbiB0aGUKKyAgICAgICAgd2ViIHByb2Nl
c3MgdGhhdCBjYW4gdHJpZ2dlciBhY2NlbGVyYXRlZCBidWZmZXJzIChlLmcuIHdlYmtpdC5vcmcv
Yi8yMzg4NDYpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ltYWdl
QnVmZmVyVGVzdHMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMi0wNC0wNSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE1hcmsgU3RyaW5nKGNvbnN0IGNoYXIq
KSBjb25zdHJ1Y3RvciBhcyBleHBsaWNpdApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ltYWdlQnVmZmVyVGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ltYWdlQnVmZmVyVGVzdHMuY3BwCmluZGV4IGE0MjA2MTBhMDRlM2Fi
MDJjYjdlMzI5N2FjZDI1MTExYTgyZDczYTcuLmQ0OWNlNDdmZWEyNzY4MGI5ZTc4NTUxMjBlNWFm
ZjliODFjMTFkYzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9JbWFnZUJ1ZmZlclRlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvSW1hZ2VCdWZmZXJUZXN0cy5jcHAKQEAgLTU1LDEwICs1NSwxMCBAQCBURVNUKEltYWdl
QnVmZmVyVGVzdHMsIEltYWdlQnVmZmVyU3ViVHlwZUNyZWF0ZUNyZWF0ZXNTdWJ0eXBlcykKICAg
ICBhdXRvIHBpeGVsRm9ybWF0ID0gUGl4ZWxGb3JtYXQ6OkJHUkE4OwogICAgIEZsb2F0U2l6ZSBz
aXplIHsgMS5mLCAxLmYgfTsKICAgICBmbG9hdCBzY2FsZSA9IDEuZjsKLSAgICBSZWZQdHI8SW1h
Z2VCdWZmZXI+IHVuYWNjZWxlcmF0ZWQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwg
bnVsbHB0cik7Ci0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBhY2NlbGVyYXRlZCA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQsIHNjYWxlLCBjb2xv
clNwYWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0cik7Ci0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBk
aXNwbGF5TGlzdEFjY2VsZXJhdGVkID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzLCBSZW5kZXJp
bmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBu
dWxscHRyKTsKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGRpc3BsYXlMaXN0VW5hY2NlbGVyYXRl
ZCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQs
IFNob3VsZFVzZURpc3BsYXlMaXN0OjpZZXMsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVk
LCBzY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIpOworICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gdW5hY2NlbGVyYXRlZCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVu
ZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1h
dCk7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBhY2NlbGVyYXRlZCA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoc2l6ZSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHNjYWxlLCBjb2xvclNw
YWNlLCBwaXhlbEZvcm1hdCwgeyBJbWFnZUJ1ZmZlck9wdGlvbnM6OkFjY2VsZXJhdGVkIH0pOwor
ICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gZGlzcGxheUxpc3RBY2NlbGVyYXRlZCA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHNjYWxlLCBj
b2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgeyBJbWFnZUJ1ZmZlck9wdGlvbnM6OlVzZURpc3BsYXlM
aXN0IH0pOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gZGlzcGxheUxpc3RVbmFjY2VsZXJhdGVk
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmll
ZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCB7IEltYWdlQnVmZmVyT3B0aW9uczo6
QWNjZWxlcmF0ZWQsIEltYWdlQnVmZmVyT3B0aW9uczo6VXNlRGlzcGxheUxpc3QgfSk7CiAKICAg
ICBFWFBFQ1RfTkUobnVsbHB0ciwgYWNjZWxlcmF0ZWQpOwogICAgIEVYUEVDVF9ORShudWxscHRy
LCB1bmFjY2VsZXJhdGVkKTsKQEAgLTcyLDggKzcyLDggQEAgVEVTVChJbWFnZUJ1ZmZlclRlc3Rz
LCBJbWFnZUJ1ZmZlclN1YlBpeGVsRHJhd2luZykKICAgICBhdXRvIHBpeGVsRm9ybWF0ID0gUGl4
ZWxGb3JtYXQ6OkJHUkE4OwogICAgIEZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSB7IDM5MiwgNDQgfTsK
ICAgICBmbG9hdCBzY2FsZSA9IDEuOTEzMjY1MzU7Ci0gICAgYXV0byBmcm9udEltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZTo6QWNjZWxl
cmF0ZWQsIHNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0cik7Ci0gICAgYXV0
byBiYWNrSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBSZW5k
ZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBu
dWxscHRyKTsKKyAgICBhdXRvIGZyb250SW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgc2NhbGUsIGNvbG9y
U3BhY2UsIHBpeGVsRm9ybWF0LCB7IEltYWdlQnVmZmVyT3B0aW9uczo6QWNjZWxlcmF0ZWQgfSk7
CisgICAgYXV0byBiYWNrSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxT
aXplLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBp
eGVsRm9ybWF0LCB7IEltYWdlQnVmZmVyT3B0aW9uczo6QWNjZWxlcmF0ZWQgfSk7CiAgICAgCiAg
ICAgYXV0byBzdHJva2VSZWN0ID0gRmxvYXRSZWN0IHsgeyB9LCBsb2dpY2FsU2l6ZSB9OwogICAg
IHN0cm9rZVJlY3QuaW5mbGF0ZSgtMC41KTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBURVNUKEltYWdl
QnVmZmVyVGVzdHMsIERJU0FCTEVEX0RyYXdJbWFnZUJ1ZmZlckRvZXNOb3RSZWZlcmVuY2VFeHRy
YU1lbW9yeSkKIAogICAgIHsKICAgICAgICAgLy8gTWFrZSBwb3RlbnRpYWwgYWNjZWxlcmF0ZWQg
ZHJhd2luZyBiYWNrZW5kIGluc3RhbnRpYXRlIHJvdWdobHkgdGhlIGdsb2JhbCBzdHJ1Y3R1cmVz
IG5lZWRlZCBmb3IgdGhpcyB0ZXN0LgotICAgICAgICBhdXRvIGFjY2VsZXJhdGVkID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQsIHNj
YWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0cik7CisgICAgICAgIGF1dG8gYWNj
ZWxlcmF0ZWQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdQdXJw
b3NlOjpVbnNwZWNpZmllZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCB7IEltYWdl
QnVmZmVyT3B0aW9uczo6QWNjZWxlcmF0ZWQgfSk7CiAgICAgICAgIGF1dG8gZmlsbFJlY3QgPSBG
bG9hdFJlY3QgeyB7IH0sIGxvZ2ljYWxTaXplIH07CiAgICAgICAgIGFjY2VsZXJhdGVkLT5jb250
ZXh0KCkuZmlsbFJlY3QoZmlsbFJlY3QsIENvbG9yOjpncmVlbik7CiAgICAgICAgIEVYUEVDVF9U
UlVFKGltYWdlQnVmZmVyUGl4ZWxJcyhDb2xvcjo6Z3JlZW4sICphY2NlbGVyYXRlZCwgZmlsbFJl
Y3QubWF4WCgpIC0gMSwgZmlsbFJlY3QubWF4WSgpIC0gMSkpOwpAQCAtMTQxLDEzICsxNDEsMTMg
QEAgVEVTVChJbWFnZUJ1ZmZlclRlc3RzLCBESVNBQkxFRF9EcmF3SW1hZ2VCdWZmZXJEb2VzTm90
UmVmZXJlbmNlRXh0cmFNZW1vcnkpCiAgICAgYXV0byBsYXN0Rm9vdHByaW50ID0gaW5pdGlhbEZv
b3RwcmludDsKICAgICBFWFBFQ1RfR1QobGFzdEZvb3RwcmludCwgMHUpOwogCi0gICAgYXV0byBh
Y2NlbGVyYXRlZCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIFJlbmRlcmluZ01v
ZGU6OkFjY2VsZXJhdGVkLCBzY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIp
OworICAgIGF1dG8gYWNjZWxlcmF0ZWQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXpl
LCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmllZCwgc2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVs
Rm9ybWF0LCB7IEltYWdlQnVmZmVyT3B0aW9uczo6QWNjZWxlcmF0ZWQgfSk7CiAgICAgYXV0byBm
aWxsUmVjdCA9IEZsb2F0UmVjdCB7IHsgfSwgbG9naWNhbFNpemUgfTsKICAgICBhY2NlbGVyYXRl
ZC0+Y29udGV4dCgpLmZpbGxSZWN0KGZpbGxSZWN0LCBDb2xvcjo6Z3JlZW4pOwogICAgIGFjY2Vs
ZXJhdGVkLT5mbHVzaENvbnRleHQoKTsKICAgICBFWFBFQ1RfVFJVRShtZW1vcnlGb290cHJpbnRD
aGFuZ2VkQnkobGFzdEZvb3RwcmludCwgbG9naWNhbFNpemVCeXRlcywgZm9vdHByaW50RXJyb3Ip
KTsKIAotICAgIGF1dG8gdW5hY2NlbGVyYXRlZCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNh
bFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHNjYWxlLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCwgbnVsbHB0cik7CisgICAgYXV0byB1bmFjY2VsZXJhdGVkID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHNj
YWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCk7CiAgICAgdW5hY2NlbGVyYXRlZC0+Y29udGV4
dCgpLmZpbGxSZWN0KGZpbGxSZWN0LCBDb2xvcjo6eWVsbG93KTsKICAgICBFWFBFQ1RfVFJVRShp
bWFnZUJ1ZmZlclBpeGVsSXMoQ29sb3I6OnllbGxvdywgKnVuYWNjZWxlcmF0ZWQsIGZpbGxSZWN0
Lm1heFgoKSAtIDEsIGZpbGxSZWN0Lm1heFkoKSAtIDEpKTsKICAgICBFWFBFQ1RfVFJVRShtZW1v
cnlGb290cHJpbnRDaGFuZ2VkQnkobGFzdEZvb3RwcmludCwgbG9naWNhbFNpemVCeXRlcywgZm9v
dHByaW50RXJyb3IpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKaW5kZXggYmNjNWExMThmMjNkN2Ni
YjY0ZWZjMWU2NGNjMjcxMzkwOTVkYjAzMC4uOTU0MmE5NWNmMDA2YWU1OTY4ZGJmMjliYWRjMTdh
NTk4OTE1M2Q4YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKQEAgLTczLDcgKzczLDcgQEAgVEVT
VChEaXNwbGF5TGlzdFRlc3RzLCBSZXBsYXlXaXRoTWlzc2luZ1Jlc291cmNlKQogICAgIH0KIAog
ICAgIHsKLSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoeyAx
MDAsIDEwMCB9LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBjb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZSh7IDEwMCwgMTAwIH0sIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAx
LCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICBMb2NhbFJlc291cmNl
SGVhcCByZXNvdXJjZUhlYXA7CiAgICAgICAgIHJlc291cmNlSGVhcC5hZGQoaW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyLCBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKIAo=
</data>
<flag name="commit-queue"
          id="485253"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>