<?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>224169</bug_id>
          
          <creation_ts>2021-04-03 20:55:57 -0700</creation_ts>
          <short_desc>Wasted vector capacity in FEColorMatrix and filters</short_desc>
          <delta_ts>2021-04-05 18:51:14 -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>SVG</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>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1746847</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-04-03 20:55:57 -0700</bug_when>
    <thetext>Wasted vector capacit in FEColorMatrix and filters</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746848</commentid>
    <comment_count>1</comment_count>
      <attachid>425123</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-04-03 20:57:37 -0700</bug_when>
    <thetext>Created attachment 425123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746850</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-04-03 20:58:02 -0700</bug_when>
    <thetext>*** Bug 224168 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746857</commentid>
    <comment_count>3</comment_count>
      <attachid>425123</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-04-04 01:51:05 -0700</bug_when>
    <thetext>Comment on attachment 425123
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Shrink the vector of input effects in FilterEffect.

I think we can reserveInitialCapacity the inputEffects for all FilterEffects instead of shrinking them later. Also do not we care about shrinking CSSFilter::m_effects?

&gt; Source/WebCore/rendering/CSSFilter.cpp:299
&gt;                  effect-&gt;inputEffects().append(WTFMove(previousEffect));

I think this can be written like this:

    effect-&gt;inputEffects().reserveInitialCapacity(1);
    effect-&gt;inputEffects().uncheckedAppend(WTFMove(previousEffect));

Or
    effect-&gt;inputEffects() = { WTFMove(previousEffect) };

And we do not need to call didFinishBuilding().

&gt; Source/WebCore/rendering/CSSFilter.cpp:303
&gt; +            effect-&gt;didFinishBuilding();

Why do we need to call didFinishBuilding() for the case filterOperation.type() == FilterOperation::REFERENCE? CSSFilter::buildReferenceFilter() already calls didFinishBuilding() for all the effects including the last one which it returns and which is stored in &quot;effect&quot;.

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:108
&gt; +        effect-&gt;didFinishBuilding();

Why don&apos;t we let the SVG FilterEffect elements reserveInitialCapacity the inputEffects before appending to it instead of shrinking it here? I think all of them, except SVGFEMergeElement, have a fixed number of inputEffects. For example in SVGFEGaussianBlurElement::build() we can do this:

    auto effect = FEGaussianBlur::create(filter, stdDeviationX(), stdDeviationY(), edgeMode());
    effect-&gt;inputEffects().reserveInitialCapacity(1);
    effect-&gt;inputEffects().uncheckedAppend(WTFMove(input1));

Or 

    auto effect = FEGaussianBlur::create(filter, stdDeviationX(), stdDeviationY(), edgeMode());
    effect-&gt;inputEffects() = { WTFMove(input1) };

&gt; Source/WebCore/svg/SVGFEColorMatrixElement.cpp:141
&gt;          filterValues = values();
&gt; +        filterValues.shrinkToFit();

Can this be written like this?
    filterValues.reserveInitialCapacity(values().size());
    filterValues.appendVector(values());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747023</commentid>
    <comment_count>4</comment_count>
      <attachid>425176</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-04-05 11:18:28 -0700</bug_when>
    <thetext>Created attachment 425176
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747219</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-05 18:45:45 -0700</bug_when>
    <thetext>Committed r275471: &lt;https://commits.webkit.org/r275471&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425176.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747222</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-05 18:51:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/76247318&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425123</attachid>
            <date>2021-04-03 20:57:37 -0700</date>
            <delta_ts>2021-04-05 11:18:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224169-20210403205736.patch</filename>
            <type>text/plain</type>
            <size>17092</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2EyMWMzNjUxYmNiZjNm
OGRjMGU4MDgxOTk3OTMyMDc5MjlkYzA3OC4uM2M3NjlmYzlhMmVlMWM5ODQ0YzUzNzAwYjExODY0
OGVlNGQ3MThiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTA0LTAzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFdhc3RlZCB2ZWN0
b3IgY2FwYWNpdHkgaW4gRkVDb2xvck1hdHJpeCBhbmQgZmlsdGVycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MTY5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hyaW5rIHRoZSB2ZWN0b3Igb2YgaW5w
dXQgZWZmZWN0cyBpbiBGaWx0ZXJFZmZlY3QuCisKKyAgICAgICAgU2hyaW5rIHRoZSBWZWN0b3I8
ZmxvYXQ+IHdoaWNoIGlzIGlucHV0IHRvIEZFQ29sb3JNYXRyaXguCisKKyAgICAgICAgVGhpcyBz
YXZlcyBhcm91bmQgNDBLQiBvbiBmYWNlYm9vay5jb20gZmVlZCBwYWdlcy4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRUNvbG9yTWF0cml4OjpGRUNvbG9yTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6
OkZFQ29sb3JNYXRyaXg6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpkaWRG
aW5pc2hCdWlsZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRmlsdGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjplbmRNYXRyaXhSb3cp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bGFzdE1hdHJpeFJvdyk6IERlbGV0ZWQuCisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNv
bnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKwogMjAy
MS0wNC0wMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXYXN0ZWQgdmVjdG9yIGNhcGFjaXR5IGluIENTU1NlZ21lbnRlZEZvbnRGYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRy
aXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9y
TWF0cml4LmNwcAppbmRleCBmM2YwZGJmMDQ5MjgyNzA5N2E5ZWMwMjZhNWQ5M2RlNTE4NTE4ODlj
Li5lMTNkNDM3YmFlMGM4OTc2MzkxNTVkZTI0MjZkYTliMjlmYmNiMTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1h
dHJpeC5jcHAKQEAgLTM1LDE2ICszNSwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZF
Q29sb3JNYXRyaXg6OkZFQ29sb3JNYXRyaXgoRmlsdGVyJiBmaWx0ZXIsIENvbG9yTWF0cml4VHlw
ZSB0eXBlLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMpCitGRUNvbG9yTWF0cml4OjpGRUNv
bG9yTWF0cml4KEZpbHRlciYgZmlsdGVyLCBDb2xvck1hdHJpeFR5cGUgdHlwZSwgVmVjdG9yPGZs
b2F0PiYmIHZhbHVlcykKICAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIFR5cGU6OkNvbG9yTWF0
cml4KQogICAgICwgbV90eXBlKHR5cGUpCi0gICAgLCBtX3ZhbHVlcyh2YWx1ZXMpCisgICAgLCBt
X3ZhbHVlcyhXVEZNb3ZlKHZhbHVlcykpCiB7CiB9CiAKLVJlZjxGRUNvbG9yTWF0cml4PiBGRUNv
bG9yTWF0cml4OjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIENvbG9yTWF0cml4VHlwZSB0eXBlLCBj
b25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMpCitSZWY8RkVDb2xvck1hdHJpeD4gRkVDb2xvck1h
dHJpeDo6Y3JlYXRlKEZpbHRlciYgZmlsdGVyLCBDb2xvck1hdHJpeFR5cGUgdHlwZSwgVmVjdG9y
PGZsb2F0PiYmIHZhbHVlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUNvbG9yTWF0
cml4KGZpbHRlciwgdHlwZSwgdmFsdWVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVD
b2xvck1hdHJpeChmaWx0ZXIsIHR5cGUsIFdURk1vdmUodmFsdWVzKSkpOwogfQogCiBib29sIEZF
Q29sb3JNYXRyaXg6OnNldFR5cGUoQ29sb3JNYXRyaXhUeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5o
CmluZGV4IDdjNmRjNTdmYmEyMWJiNjMxNWM1YTc2YzAwZTAyYjFmYWJlZWEwY2UuLjI5ZTQxYThh
ZWQxZTRmMGI1Mzk3MDNhYzRkYjU1MjRlZmE0YzEyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCkBAIC0z
OCw3ICszOCw3IEBAIGVudW0gQ29sb3JNYXRyaXhUeXBlIHsKIAogY2xhc3MgRkVDb2xvck1hdHJp
eCA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RkVDb2xv
ck1hdHJpeD4gY3JlYXRlKEZpbHRlciYsIENvbG9yTWF0cml4VHlwZSwgY29uc3QgVmVjdG9yPGZs
b2F0PiYpOworICAgIHN0YXRpYyBSZWY8RkVDb2xvck1hdHJpeD4gY3JlYXRlKEZpbHRlciYsIENv
bG9yTWF0cml4VHlwZSwgVmVjdG9yPGZsb2F0PiYmKTsKIAogICAgIENvbG9yTWF0cml4VHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgYm9vbCBzZXRUeXBlKENvbG9yTWF0
cml4VHlwZSk7CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgaW5saW5lIHZv
aWQgY2FsY3VsYXRlSHVlUm90YXRlQ29tcG9uZW50cyhmbG9hdCogY29tcG9uZW50cywgZmxvYXQg
dmFsdWUpOwogCiBwcml2YXRlOgotICAgIEZFQ29sb3JNYXRyaXgoRmlsdGVyJiwgQ29sb3JNYXRy
aXhUeXBlLCBjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisgICAgRkVDb2xvck1hdHJpeChGaWx0ZXIm
LCBDb2xvck1hdHJpeFR5cGUsIFZlY3RvcjxmbG9hdD4mJik7CiAKICAgICBjb25zdCBjaGFyKiBm
aWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkZFQ29sb3JNYXRyaXgiOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcAppbmRleCAxODY3ZmNlNTEzNTIxZWE0Y2E1YmE5MDRmMmQ2MDVkZjk5YTQ0
YTA0Li4wNGRjMmZkZTI1YTU3YmRmMWQwZDgyZjdlNWJkMjA4MzhmYjY0NDYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJF
ZmZlY3QuY3BwCkBAIC0xNjMsNiArMTYzLDExIEBAIHVuc2lnbmVkIEZpbHRlckVmZmVjdDo6dG90
YWxOdW1iZXJPZkVmZmVjdElucHV0cygpIGNvbnN0CiAgICAgcmV0dXJuIGNvbGxlY3RFZmZlY3Rz
KHRoaXMsIGFsbEVmZmVjdHMpOwogfQogCit2b2lkIEZpbHRlckVmZmVjdDo6ZGlkRmluaXNoQnVp
bGRpbmcoKQoreworICAgIG1faW5wdXRFZmZlY3RzLnNocmlua1RvRml0KCk7Cit9CisKIHZvaWQg
RmlsdGVyRWZmZWN0OjphcHBseSgpCiB7CiAgICAgaWYgKGhhc1Jlc3VsdCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
LmgKaW5kZXggMGExMDJkOGNkZmUwZGRjMWQ3M2U5NGNmN2JlMWViNGIwZTIwZWFjOC4uOThkNjkx
YWJjMGNiYTk3MzNkNGMwZmJiNWY4NGNlZGI5YTcyZTIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC04
NiwxMSArODYsMTQgQEAgcHVibGljOgogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcHJl
bXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xv
clNwYWNlPiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBjb3B5VW5tdWx0aXBsaWVkUmVzdWx0
KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYsIE9wdGlvbmFs
PERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgY29weVBy
ZW11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJ
bnRSZWN0JiwgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IFdURjo6bnVsbG9wdCk7
CisKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZmZWN0cygpIHsgcmV0dXJuIG1faW5w
dXRFZmZlY3RzOyB9CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dEVmZmVjdCh1bnNpZ25lZCkgY29u
c3Q7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZFZmZlY3RJbnB1dHMoKSBjb25zdCB7IHJldHVybiBt
X2lucHV0RWZmZWN0cy5zaXplKCk7IH0KICAgICB1bnNpZ25lZCB0b3RhbE51bWJlck9mRWZmZWN0
SW5wdXRzKCkgY29uc3Q7CiAgICAgCisgICAgdm9pZCBkaWRGaW5pc2hCdWlsZGluZygpOworICAg
IAogICAgIGlubGluZSBib29sIGhhc1Jlc3VsdCgpIGNvbnN0CiAgICAgewogICAgICAgICAvLyBU
aGlzIGZ1bmN0aW9uIG5lZWRzIHBsYXRmb3JtIHNwZWNpZmljIGNoZWNrcywgaWYgdGhlIG1lbW9y
eSBtYW5hZ21lbnQgaXMgbm90IGRvbmUgYnkgRmlsdGVyRWZmZWN0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ1NTRmlsdGVyLmNwcAppbmRleCA3YTlkMDBjMmI5MDI4MzI5MjViYWMzZmNjZjJhMzhm
Y2M5YzAyMTc4Li42MTYyZmRkYWY5M2JkNzYwZWU4ZDAwZWVhM2I0ZTdmYmQ0N2U3MjQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcApAQCAtNTIsMjEgKzUyLDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIHZvaWQgZW5kTWF0cml4Um93KFZl
Y3RvcjxmbG9hdD4mIHBhcmFtZXRlcnMpCi17Ci0gICAgcGFyYW1ldGVycy5hcHBlbmQoMCk7Ci0g
ICAgcGFyYW1ldGVycy5hcHBlbmQoMCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBsYXN0TWF0
cml4Um93KFZlY3RvcjxmbG9hdD4mIHBhcmFtZXRlcnMpCi17Ci0gICAgcGFyYW1ldGVycy5hcHBl
bmQoMCk7Ci0gICAgcGFyYW1ldGVycy5hcHBlbmQoMCk7Ci0gICAgcGFyYW1ldGVycy5hcHBlbmQo
MCk7Ci0gICAgcGFyYW1ldGVycy5hcHBlbmQoMSk7Ci0gICAgcGFyYW1ldGVycy5hcHBlbmQoMCk7
Ci19Ci0KIFJlZjxDU1NGaWx0ZXI+IENTU0ZpbHRlcjo6Y3JlYXRlKCkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NGaWx0ZXIpOwpAQCAtMTI3LDYgKzExMiw3IEBAIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIEZpCiAgICAgICAgIGlmIChlZmZlY3RFbGVtZW50LnJlbmRlcmVyKCkpCiAgICAg
ICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWZmZWN0RWxlbWVudC5yZW5k
ZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09
IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpM
aW5lYXJTUkdCIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKIAorICAgICAgICBlZmZl
Y3QtPmRpZEZpbmlzaEJ1aWxkaW5nKCk7CiAgICAgICAgIGJ1aWxkZXItPmFkZChlZmZlY3RFbGVt
ZW50LnJlc3VsdCgpLCBlZmZlY3QpOwogICAgICAgICByZWZlcmVuY2VFZmZlY3RzLmFwcGVuZCgq
ZWZmZWN0KTsKICAgICB9CkBAIC0xNTUsNzIgKzE0MSw4NiBAQCBib29sIENTU0ZpbHRlcjo6YnVp
bGQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJh
dGlvbgogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6
IHsKICAgICAgICAgICAgIGF1dG8mIGNvbG9yTWF0cml4T3BlcmF0aW9uID0gZG93bmNhc3Q8QmFz
aWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAg
ICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzOwogICAgICAgICAgICAgZG91YmxlIG9u
ZU1pbnVzQW1vdW50ID0gY2xhbXBUbygxIC0gY29sb3JNYXRyaXhPcGVyYXRpb24uYW1vdW50KCks
IDAuMCwgMS4wKTsKIAogICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZHZjcy53My5vcmcvaGcv
RlhURi9yYXctZmlsZS90aXAvZmlsdGVycy9pbmRleC5odG1sI2dyYXlzY2FsZUVxdWl2YWxlbnQK
ICAgICAgICAgICAgIC8vIGZvciBpbmZvcm1hdGlvbiBvbiBwYXJhbWV0ZXJzLgogCi0gICAgICAg
ICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4yMTI2
ICsgMC43ODc0ICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVy
cy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjcxNTIgLSAwLjcxNTIgKiBvbmVNaW51
c0Ftb3VudCkpOwotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KDAuMDcyMiAtIDAuMDcyMiAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAg
ICAgICBlbmRNYXRyaXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKLQotICAgICAgICAgICAgaW5wdXRQ
YXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMjEyNiAtIDAuMjEyNiAq
IG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQoMC43MTUyICsgMC4yODQ4ICogb25lTWludXNBbW91bnQpKTsK
LSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9h
dCgwLjA3MjIgLSAwLjA3MjIgKiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAgZW5kTWF0
cml4Um93KGlucHV0UGFyYW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5h
cHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjIxMjYgLSAwLjIxMjYgKiBvbmVNaW51c0Ft
b3VudCkpOwotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KDAuNzE1MiAtIDAuNzE1MiAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgICAg
ICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4wNzIyICsg
MC45Mjc4ICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGVuZE1hdHJpeFJvdyhpbnB1
dFBhcmFtZXRlcnMpOwotCi0gICAgICAgICAgICBsYXN0TWF0cml4Um93KGlucHV0UGFyYW1ldGVy
cyk7Ci0KLSAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSgqdGhpcywg
RkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCwgaW5wdXRQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAg
IFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzIHsKKyAgICAgICAgICAgICAgICBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KDAuMjEyNiArIDAuNzg3NCAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAg
ICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNzE1MiAtIDAuNzE1MiAqIG9uZU1p
bnVzQW1vdW50KSwKKyAgICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMDcy
MiAtIDAuMDcyMiAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAgICAgICAgICAwLAorICAgICAg
ICAgICAgICAgIDAsCisKKyAgICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAu
MjEyNiAtIDAuMjEyNiAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAgICAgICAgICBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KDAuNzE1MiArIDAuMjg0OCAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAg
ICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMDcyMiAtIDAuMDcyMiAqIG9uZU1p
bnVzQW1vdW50KSwKKyAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgIDAsCisKKyAg
ICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMjEyNiAtIDAuMjEyNiAqIG9u
ZU1pbnVzQW1vdW50KSwKKyAgICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAu
NzE1MiAtIDAuNzE1MiAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAgICAgICAgICBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KDAuMDcyMiArIDAuOTI3OCAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAg
ICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgIDAsCisKKyAgICAgICAgICAgICAgICAwLAor
ICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAx
LAorICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBlZmZl
Y3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoKnRoaXMsIEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRS
SVgsIFdURk1vdmUoaW5wdXRQYXJhbWV0ZXJzKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6IHsKICAgICAgICAgICAg
IGF1dG8mIGNvbG9yTWF0cml4T3BlcmF0aW9uID0gZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZp
bHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgICAgIFZlY3RvcjxmbG9h
dD4gaW5wdXRQYXJhbWV0ZXJzOwogICAgICAgICAgICAgZG91YmxlIG9uZU1pbnVzQW1vdW50ID0g
Y2xhbXBUbygxIC0gY29sb3JNYXRyaXhPcGVyYXRpb24uYW1vdW50KCksIDAuMCwgMS4wKTsKIAog
ICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvRlhURi9yYXctZmlsZS90
aXAvZmlsdGVycy9pbmRleC5odG1sI3NlcGlhRXF1aXZhbGVudAogICAgICAgICAgICAgLy8gZm9y
IGluZm9ybWF0aW9uIG9uIHBhcmFtZXRlcnMuCiAKLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVy
cy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjM5MyArIDAuNjA3ICogb25lTWludXNB
bW91bnQpKTsKLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lz
aW9uVG9GbG9hdCgwLjc2OSAtIDAuNzY5ICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAg
IGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjE4OSAtIDAu
MTg5ICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGVuZE1hdHJpeFJvdyhpbnB1dFBh
cmFtZXRlcnMpOwotCi0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQoMC4zNDkgLSAwLjM0OSAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAg
ICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC42ODYg
KyAwLjMxNCAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMu
YXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4xNjggLSAwLjE2OCAqIG9uZU1pbnVzQW1v
dW50KSk7Ci0gICAgICAgICAgICBlbmRNYXRyaXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKLQotICAg
ICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAu
MjcyIC0gMC4yNzIgKiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAgaW5wdXRQYXJhbWV0
ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNTM0IC0gMC41MzQgKiBvbmVNaW51
c0Ftb3VudCkpOwotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KDAuMTMxICsgMC44NjkgKiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAgICAg
ICAgZW5kTWF0cml4Um93KGlucHV0UGFyYW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGxhc3RNYXRy
aXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKLQotICAgICAgICAgICAgZWZmZWN0ID0gRkVDb2xvck1h
dHJpeDo6Y3JlYXRlKCp0aGlzLCBGRUNPTE9STUFUUklYX1RZUEVfTUFUUklYLCBpbnB1dFBhcmFt
ZXRlcnMpOworICAgICAgICAgICAgVmVjdG9yPGZsb2F0PiBpbnB1dFBhcmFtZXRlcnMgeworICAg
ICAgICAgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4zOTMgKyAwLjYwNyAqIG9uZU1p
bnVzQW1vdW50KSwKKyAgICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNzY5
IC0gMC43NjkgKiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgICAgICAgICAgbmFycm93UHJlY2lz
aW9uVG9GbG9hdCgwLjE4OSAtIDAuMTg5ICogb25lTWludXNBbW91bnQpLAorICAgICAgICAgICAg
ICAgIDAsCisgICAgICAgICAgICAgICAgMCwKKworICAgICAgICAgICAgICAgIG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQoMC4zNDkgLSAwLjM0OSAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAgICAg
ICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNjg2ICsgMC4zMTQgKiBvbmVNaW51c0Ftb3Vu
dCksCisgICAgICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjE2OCAtIDAuMTY4
ICogb25lTWludXNBbW91bnQpLAorICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAg
MCwKKworICAgICAgICAgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4yNzIgLSAwLjI3
MiAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KDAuNTM0IC0gMC41MzQgKiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgICAgICAgICAgbmFy
cm93UHJlY2lzaW9uVG9GbG9hdCgwLjEzMSArIDAuODY5ICogb25lTWludXNBbW91bnQpLAorICAg
ICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgMCwKKworICAgICAgICAgICAgICAgIDAs
CisgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAg
IDEsCisgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGVm
ZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSgqdGhpcywgRkVDT0xPUk1BVFJJWF9UWVBFX01B
VFJJWCwgV1RGTW92ZShpbnB1dFBhcmFtZXRlcnMpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURTogewogICAgICAg
ICAgICAgYXV0byYgY29sb3JNYXRyaXhPcGVyYXRpb24gPSBkb3duY2FzdDxCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOwotICAgICAgICAgICAgVmVjdG9y
PGZsb2F0PiBpbnB1dFBhcmFtZXRlcnM7Ci0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBw
ZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29sb3JNYXRyaXhPcGVyYXRpb24uYW1vdW50KCkp
KTsKLSAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSgqdGhpcywgRkVD
T0xPUk1BVFJJWF9UWVBFX1NBVFVSQVRFLCBpbnB1dFBhcmFtZXRlcnMpOworICAgICAgICAgICAg
VmVjdG9yPGZsb2F0PiBpbnB1dFBhcmFtZXRlcnMgeyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNv
bG9yTWF0cml4T3BlcmF0aW9uLmFtb3VudCgpKSB9OworICAgICAgICAgICAgZWZmZWN0ID0gRkVD
b2xvck1hdHJpeDo6Y3JlYXRlKCp0aGlzLCBGRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUsIFdU
Rk1vdmUoaW5wdXRQYXJhbWV0ZXJzKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURTogewogICAgICAgICAgICAg
YXV0byYgY29sb3JNYXRyaXhPcGVyYXRpb24gPSBkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4Rmls
dGVyT3BlcmF0aW9uPihmaWx0ZXJPcGVyYXRpb24pOwotICAgICAgICAgICAgVmVjdG9yPGZsb2F0
PiBpbnB1dFBhcmFtZXRlcnM7Ci0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQoY29sb3JNYXRyaXhPcGVyYXRpb24uYW1vdW50KCkpKTsKLSAg
ICAgICAgICAgIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSgqdGhpcywgRkVDT0xPUk1B
VFJJWF9UWVBFX0hVRVJPVEFURSwgaW5wdXRQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgIFZlY3Rv
cjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzIHsgbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb2xvck1h
dHJpeE9wZXJhdGlvbi5hbW91bnQoKSkgfTsKKyAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29sb3JN
YXRyaXg6OmNyZWF0ZSgqdGhpcywgRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSwgV1RGTW92
ZShpbnB1dFBhcmFtZXRlcnMpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6IHsKQEAgLTI5OSw2ICsyOTksOCBAQCBi
b29sIENTU0ZpbHRlcjo6YnVpbGQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIG9wZXJhdGlvbgogICAgICAgICAgICAgICAgIGVmZmVjdC0+aW5wdXRFZmZl
Y3RzKCkuYXBwZW5kKFdURk1vdmUocHJldmlvdXNFZmZlY3QpKTsKICAgICAgICAgICAgICAgICBt
X2VmZmVjdHMuYXBwZW5kKCplZmZlY3QpOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBl
ZmZlY3QtPmRpZEZpbmlzaEJ1aWxkaW5nKCk7CiAgICAgICAgICAgICBwcmV2aW91c0VmZmVjdCA9
IFdURk1vdmUoZWZmZWN0KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXgg
ZjMyZWQ3ZGZjYjI2MTFkMTQ4YjMwZWE4MDg3NjE1OTAxOTEzYWQxZS4uODg5MTFiODAyYWVhYjgy
Nzg1MjJhZWVjMDk2OGRiNGRmOGNmMTIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTk0LDcgKzk0
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlclNWR1Jlc291cmNl
RmlsdGVyOjpidWlsZFByaW1pdGl2ZXMoU1ZHRmkKICAgICBidWlsZGVyLT5zZXRUYXJnZXRCb3Vu
ZGluZ0JveCh0YXJnZXRCb3VuZGluZ0JveCk7CiAgICAgCiAgICAgZm9yIChhdXRvJiBlbGVtZW50
IDogY2hpbGRyZW5PZlR5cGU8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPihm
aWx0ZXJFbGVtZW50KCkpKSB7Ci0gICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9
IGVsZW1lbnQuYnVpbGQoYnVpbGRlci5nZXQoKSwgZmlsdGVyKTsKKyAgICAgICAgYXV0byBlZmZl
Y3QgPSBlbGVtZW50LmJ1aWxkKGJ1aWxkZXIuZ2V0KCksIGZpbHRlcik7CiAgICAgICAgIGlmICgh
ZWZmZWN0KSB7CiAgICAgICAgICAgICBidWlsZGVyLT5jbGVhckVmZmVjdHMoKTsKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTA0LDYgKzEwNCw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxT
VkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVz
KFNWR0ZpCiAgICAgICAgIGVmZmVjdC0+c2V0RWZmZWN0Qm91bmRhcmllcyhTVkdMZW5ndGhDb250
ZXh0OjpyZXNvbHZlUmVjdGFuZ2xlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cz4oJmVsZW1lbnQsIGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpLCB0YXJnZXRCb3Vu
ZGluZ0JveCkpOwogICAgICAgICBpZiAoZWxlbWVudC5yZW5kZXJlcigpKQogICAgICAgICAgICAg
ZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUo
KS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVycG9s
YXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQiA6IERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisKKyAgICAgICAgZWZmZWN0LT5kaWRGaW5pc2hC
dWlsZGluZygpOwogICAgICAgICBidWlsZGVyLT5hZGQoZWxlbWVudC5yZXN1bHQoKSwgV1RGTW92
ZShlZmZlY3QpKTsKICAgICB9CiAgICAgcmV0dXJuIGJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAppbmRleCBlMGM1OTdkZjkyYTViMzBm
N2E3ZjlhNDkzNTY0M2ZjNTM0MGFlY2RiLi4zYjllODExM2RhNWQ3ZGZkMzk5ZWJiNDhlY2E4Mzdh
Mjg4YjY3Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxl
bWVudC5jcHAKQEAgLTExMywxNSArMTEzLDE4IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsCiAg
ICAgLy8gVXNlIGRlZmF1bHRzIGlmIHZhbHVlcyBpcyBlbXB0eSAoU1ZHIDEuMSAxNS4xMCkuCiAg
ICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnZhbHVlc0F0dHIpKSB7CiAgICAgICAgIHN3
aXRjaCAoZmlsdGVyVHlwZSkgewotICAgICAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRS
SVg6Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDIwOyBpKyspCi0gICAgICAg
ICAgICAgICAgZmlsdGVyVmFsdWVzLmFwcGVuZCgoaSAlIDYpID8gMCA6IDEpOworICAgICAgICBj
YXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVg6IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgbWF0cml4VmFsdWVDb3VudCA9IDIwOworICAgICAgICAgICAgZmlsdGVy
VmFsdWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobWF0cml4VmFsdWVDb3VudCk7CisgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hdHJpeFZhbHVlQ291bnQ7IGkrKykKKyAgICAg
ICAgICAgICAgICBmaWx0ZXJWYWx1ZXMudW5jaGVja2VkQXBwZW5kKChpICUgNikgPyAwIDogMSk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIEZFQ09MT1JNQVRS
SVhfVFlQRV9IVUVST1RBVEU6Ci0gICAgICAgICAgICBmaWx0ZXJWYWx1ZXMuYXBwZW5kKDApOwor
ICAgICAgICAgICAgZmlsdGVyVmFsdWVzID0geyAwIH07CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEU6Ci0gICAgICAgICAgICBmaWx0
ZXJWYWx1ZXMuYXBwZW5kKDEpOworICAgICAgICAgICAgZmlsdGVyVmFsdWVzID0geyAxIH07CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTM1LDkgKzEzOCwxMCBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0cml4
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbAogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIAogICAgICAgICBmaWx0ZXJWYWx1ZXMgPSB2YWx1ZXMo
KTsKKyAgICAgICAgZmlsdGVyVmFsdWVzLnNocmlua1RvRml0KCk7CiAgICAgfQogCi0gICAgYXV0
byBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoZmlsdGVyLCBmaWx0ZXJUeXBlLCBmaWx0
ZXJWYWx1ZXMpOworICAgIGF1dG8gZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGZpbHRl
ciwgZmlsdGVyVHlwZSwgV1RGTW92ZShmaWx0ZXJWYWx1ZXMpKTsKICAgICBlZmZlY3QtPmlucHV0
RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOwogICAgIHJldHVybiBlZmZlY3Q7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425176</attachid>
            <date>2021-04-05 11:18:28 -0700</date>
            <delta_ts>2021-04-05 18:45:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224169-20210405111827.patch</filename>
            <type>text/plain</type>
            <size>23020</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ3NWZkYmIzNzQxMDMz
MDI5NDI0NDdhYjM1YTc5M2ZiZjE1ZDZmNS4uYjY0OGIxMGVmNGMyMTAzOWJlYjNlNDY3OWMxMDg4
ODFiYTkwNTc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIxLTA0LTAzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFdhc3RlZCB2ZWN0
b3IgY2FwYWNpdHkgaW4gRkVDb2xvck1hdHJpeCBhbmQgZmlsdGVycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MTY5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2FpZCBBYm91LUhhbGxhd2EuCisKKyAgICAgICAgV2hlbiBidWlsZGluZyBmaWx0ZXIg
ZWZmZWN0cywgYXZvaWQgdGhlIGlucHV0RWZmZWN0cygpIGhhdmluZyBhIGxhcmdlcgorICAgICAg
ICBjYXBhY2l0eSB0aGFuIG5lZWRlZC4KKworICAgICAgICBTaHJpbmsgdGhlIFZlY3RvcjxmbG9h
dD4gd2hpY2ggaXMgaW5wdXQgdG8gRkVDb2xvck1hdHJpeC4KKworICAgICAgICBUaGlzIHNhdmVz
IGFyb3VuZCA0MEtCIG9uIGZhY2Vib29rLmNvbSBmZWVkIHBhZ2VzLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFQ29sb3JNYXRyaXg6OkZFQ29sb3JNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6RkVD
b2xvck1hdHJpeDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguaDoKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6ZW5k
TWF0cml4Um93KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omxhc3RNYXRyaXhSb3cpOiBE
ZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJp
bWl0aXZlcyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZCBjb25z
dCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZCBjb25z
dCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpidWlsZCBjb25zdCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRURyb3BTaGFkb3dFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkIGNvbnN0
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICog
c3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNl
dEVsZW1lbnQ6OmJ1aWxkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50OjpidWlsZCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQgY29uc3QpOgorCiAy
MDIxLTA0LTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFdhc3RlZCB2ZWN0b3IgY2FwYWNpdHkgaW4gQ1NTU2VnbWVudGVkRm9udEZhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1h
dHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29s
b3JNYXRyaXguY3BwCmluZGV4IGYzZjBkYmYwNDkyODI3MDk3YTllYzAyNmE1ZDkzZGU1MTg1MTg4
OWMuLmUxM2Q0MzdiYWUwYzg5NzYzOTE1NWRlMjQyNmRhOWIyOWZiY2IxNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9y
TWF0cml4LmNwcApAQCAtMzUsMTYgKzM1LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
RkVDb2xvck1hdHJpeDo6RkVDb2xvck1hdHJpeChGaWx0ZXImIGZpbHRlciwgQ29sb3JNYXRyaXhU
eXBlIHR5cGUsIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcykKK0ZFQ29sb3JNYXRyaXg6OkZF
Q29sb3JNYXRyaXgoRmlsdGVyJiBmaWx0ZXIsIENvbG9yTWF0cml4VHlwZSB0eXBlLCBWZWN0b3I8
ZmxvYXQ+JiYgdmFsdWVzKQogICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgVHlwZTo6Q29sb3JN
YXRyaXgpCiAgICAgLCBtX3R5cGUodHlwZSkKLSAgICAsIG1fdmFsdWVzKHZhbHVlcykKKyAgICAs
IG1fdmFsdWVzKFdURk1vdmUodmFsdWVzKSkKIHsKIH0KIAotUmVmPEZFQ29sb3JNYXRyaXg+IEZF
Q29sb3JNYXRyaXg6OmNyZWF0ZShGaWx0ZXImIGZpbHRlciwgQ29sb3JNYXRyaXhUeXBlIHR5cGUs
IGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcykKK1JlZjxGRUNvbG9yTWF0cml4PiBGRUNvbG9y
TWF0cml4OjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIsIENvbG9yTWF0cml4VHlwZSB0eXBlLCBWZWN0
b3I8ZmxvYXQ+JiYgdmFsdWVzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFQ29sb3JN
YXRyaXgoZmlsdGVyLCB0eXBlLCB2YWx1ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
RUNvbG9yTWF0cml4KGZpbHRlciwgdHlwZSwgV1RGTW92ZSh2YWx1ZXMpKSk7CiB9CiAKIGJvb2wg
RkVDb2xvck1hdHJpeDo6c2V0VHlwZShDb2xvck1hdHJpeFR5cGUgdHlwZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4
LmgKaW5kZXggN2M2ZGM1N2ZiYTIxYmI2MzE1YzVhNzZjMDBlMDJiMWZhYmVlYTBjZS4uMjllNDFh
OGFlZDFlNGYwYjUzOTcwM2FjNGRiNTUyNGVmYTRjMTIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKQEAg
LTM4LDcgKzM4LDcgQEAgZW51bSBDb2xvck1hdHJpeFR5cGUgewogCiBjbGFzcyBGRUNvbG9yTWF0
cml4IDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGRUNv
bG9yTWF0cml4PiBjcmVhdGUoRmlsdGVyJiwgQ29sb3JNYXRyaXhUeXBlLCBjb25zdCBWZWN0b3I8
ZmxvYXQ+Jik7CisgICAgc3RhdGljIFJlZjxGRUNvbG9yTWF0cml4PiBjcmVhdGUoRmlsdGVyJiwg
Q29sb3JNYXRyaXhUeXBlLCBWZWN0b3I8ZmxvYXQ+JiYpOwogCiAgICAgQ29sb3JNYXRyaXhUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBib29sIHNldFR5cGUoQ29sb3JN
YXRyaXhUeXBlKTsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBpbmxpbmUg
dm9pZCBjYWxjdWxhdGVIdWVSb3RhdGVDb21wb25lbnRzKGZsb2F0KiBjb21wb25lbnRzLCBmbG9h
dCB2YWx1ZSk7CiAKIHByaXZhdGU6Ci0gICAgRkVDb2xvck1hdHJpeChGaWx0ZXImLCBDb2xvck1h
dHJpeFR5cGUsIGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKKyAgICBGRUNvbG9yTWF0cml4KEZpbHRl
ciYsIENvbG9yTWF0cml4VHlwZSwgVmVjdG9yPGZsb2F0PiYmKTsKIAogICAgIGNvbnN0IGNoYXIq
IGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRkVDb2xvck1hdHJpeCI7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAppbmRleCA3YTlkMDBjMmI5MDI4MzI5
MjViYWMzZmNjZjJhMzhmY2M5YzAyMTc4Li45NGQxMDNjMmJmY2I3ZDVjZjU3YzFiYjM0ZGE1M2Nk
Njg3MzkxOGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcApAQCAtNTIs
MjEgKzUyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIHZvaWQg
ZW5kTWF0cml4Um93KFZlY3RvcjxmbG9hdD4mIHBhcmFtZXRlcnMpCi17Ci0gICAgcGFyYW1ldGVy
cy5hcHBlbmQoMCk7Ci0gICAgcGFyYW1ldGVycy5hcHBlbmQoMCk7Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgdm9pZCBsYXN0TWF0cml4Um93KFZlY3RvcjxmbG9hdD4mIHBhcmFtZXRlcnMpCi17Ci0gICAg
cGFyYW1ldGVycy5hcHBlbmQoMCk7Ci0gICAgcGFyYW1ldGVycy5hcHBlbmQoMCk7Ci0gICAgcGFy
YW1ldGVycy5hcHBlbmQoMCk7Ci0gICAgcGFyYW1ldGVycy5hcHBlbmQoMSk7Ci0gICAgcGFyYW1l
dGVycy5hcHBlbmQoMCk7Ci19Ci0KIFJlZjxDU1NGaWx0ZXI+IENTU0ZpbHRlcjo6Y3JlYXRlKCkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGaWx0ZXIpOwpAQCAtMTU1LDcyICsxNDAs
ODYgQEAgYm9vbCBDU1NGaWx0ZXI6OmJ1aWxkKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb24KICAgICAgICAgfQogICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOiB7CiAgICAgICAgICAgICBhdXRvJiBjb2xvck1hdHJp
eE9wZXJhdGlvbiA9IGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KGZp
bHRlck9wZXJhdGlvbik7Ci0gICAgICAgICAgICBWZWN0b3I8ZmxvYXQ+IGlucHV0UGFyYW1ldGVy
czsKICAgICAgICAgICAgIGRvdWJsZSBvbmVNaW51c0Ftb3VudCA9IGNsYW1wVG8oMSAtIGNvbG9y
TWF0cml4T3BlcmF0aW9uLmFtb3VudCgpLCAwLjAsIDEuMCk7CiAKICAgICAgICAgICAgIC8vIFNl
ZSBodHRwczovL2R2Y3MudzMub3JnL2hnL0ZYVEYvcmF3LWZpbGUvdGlwL2ZpbHRlcnMvaW5kZXgu
aHRtbCNncmF5c2NhbGVFcXVpdmFsZW50CiAgICAgICAgICAgICAvLyBmb3IgaW5mb3JtYXRpb24g
b24gcGFyYW1ldGVycy4KIAotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KDAuMjEyNiArIDAuNzg3NCAqIG9uZU1pbnVzQW1vdW50KSk7Ci0g
ICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
MC43MTUyIC0gMC43MTUyICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGlucHV0UGFy
YW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjA3MjIgLSAwLjA3MjIgKiBv
bmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAgZW5kTWF0cml4Um93KGlucHV0UGFyYW1ldGVy
cyk7Ci0KLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9u
VG9GbG9hdCgwLjIxMjYgLSAwLjIxMjYgKiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAg
aW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuNzE1MiArIDAu
Mjg0OCAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBw
ZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4wNzIyIC0gMC4wNzIyICogb25lTWludXNBbW91
bnQpKTsKLSAgICAgICAgICAgIGVuZE1hdHJpeFJvdyhpbnB1dFBhcmFtZXRlcnMpOwotCi0gICAg
ICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4y
MTI2IC0gMC4yMTI2ICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGlucHV0UGFyYW1l
dGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjcxNTIgLSAwLjcxNTIgKiBvbmVN
aW51c0Ftb3VudCkpOwotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KDAuMDcyMiArIDAuOTI3OCAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAg
ICAgICAgICBlbmRNYXRyaXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKLQotICAgICAgICAgICAgbGFz
dE1hdHJpeFJvdyhpbnB1dFBhcmFtZXRlcnMpOwotCi0gICAgICAgICAgICBlZmZlY3QgPSBGRUNv
bG9yTWF0cml4OjpjcmVhdGUoKnRoaXMsIEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVgsIGlucHV0
UGFyYW1ldGVycyk7CisgICAgICAgICAgICBWZWN0b3I8ZmxvYXQ+IGlucHV0UGFyYW1ldGVycyB7
CisgICAgICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjIxMjYgKyAwLjc4NzQg
KiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9h
dCgwLjcxNTIgLSAwLjcxNTIgKiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgICAgICAgICAgbmFy
cm93UHJlY2lzaW9uVG9GbG9hdCgwLjA3MjIgLSAwLjA3MjIgKiBvbmVNaW51c0Ftb3VudCksCisg
ICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAwLAorCisgICAgICAgICAgICAgICAg
bmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjIxMjYgLSAwLjIxMjYgKiBvbmVNaW51c0Ftb3VudCks
CisgICAgICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjcxNTIgKyAwLjI4NDgg
KiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9h
dCgwLjA3MjIgLSAwLjA3MjIgKiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgICAgICAgICAgMCwK
KyAgICAgICAgICAgICAgICAwLAorCisgICAgICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9G
bG9hdCgwLjIxMjYgLSAwLjIxMjYgKiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgICAgICAgICAg
bmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjcxNTIgLSAwLjcxNTIgKiBvbmVNaW51c0Ftb3VudCks
CisgICAgICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjA3MjIgKyAwLjkyNzgg
KiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAw
LAorCisgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAg
ICAgIDAsCisgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICAwLAorICAgICAgICAg
ICAgfTsKKworICAgICAgICAgICAgZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKCp0aGlz
LCBGRUNPTE9STUFUUklYX1RZUEVfTUFUUklYLCBXVEZNb3ZlKGlucHV0UGFyYW1ldGVycykpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246OlNFUElBOiB7CiAgICAgICAgICAgICBhdXRvJiBjb2xvck1hdHJpeE9wZXJhdGlvbiA9IGRv
d25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KGZpbHRlck9wZXJhdGlvbik7
Ci0gICAgICAgICAgICBWZWN0b3I8ZmxvYXQ+IGlucHV0UGFyYW1ldGVyczsKICAgICAgICAgICAg
IGRvdWJsZSBvbmVNaW51c0Ftb3VudCA9IGNsYW1wVG8oMSAtIGNvbG9yTWF0cml4T3BlcmF0aW9u
LmFtb3VudCgpLCAwLjAsIDEuMCk7CiAKICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2R2Y3Mu
dzMub3JnL2hnL0ZYVEYvcmF3LWZpbGUvdGlwL2ZpbHRlcnMvaW5kZXguaHRtbCNzZXBpYUVxdWl2
YWxlbnQKICAgICAgICAgICAgIC8vIGZvciBpbmZvcm1hdGlvbiBvbiBwYXJhbWV0ZXJzLgogCi0g
ICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
MC4zOTMgKyAwLjYwNyAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBpbnB1dFBhcmFt
ZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC43NjkgLSAwLjc2OSAqIG9uZU1p
bnVzQW1vdW50KSk7Ci0gICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQoMC4xODkgLSAwLjE4OSAqIG9uZU1pbnVzQW1vdW50KSk7Ci0gICAgICAg
ICAgICBlbmRNYXRyaXhSb3coaW5wdXRQYXJhbWV0ZXJzKTsKLQotICAgICAgICAgICAgaW5wdXRQ
YXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMzQ5IC0gMC4zNDkgKiBv
bmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KDAuNjg2ICsgMC4zMTQgKiBvbmVNaW51c0Ftb3VudCkpOwotICAg
ICAgICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAu
MTY4IC0gMC4xNjggKiBvbmVNaW51c0Ftb3VudCkpOwotICAgICAgICAgICAgZW5kTWF0cml4Um93
KGlucHV0UGFyYW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQo
bmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjI3MiAtIDAuMjcyICogb25lTWludXNBbW91bnQpKTsK
LSAgICAgICAgICAgIGlucHV0UGFyYW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9h
dCgwLjUzNCAtIDAuNTM0ICogb25lTWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGlucHV0UGFy
YW1ldGVycy5hcHBlbmQobmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjEzMSArIDAuODY5ICogb25l
TWludXNBbW91bnQpKTsKLSAgICAgICAgICAgIGVuZE1hdHJpeFJvdyhpbnB1dFBhcmFtZXRlcnMp
OwotCi0gICAgICAgICAgICBsYXN0TWF0cml4Um93KGlucHV0UGFyYW1ldGVycyk7Ci0KLSAgICAg
ICAgICAgIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSgqdGhpcywgRkVDT0xPUk1BVFJJ
WF9UWVBFX01BVFJJWCwgaW5wdXRQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgIFZlY3RvcjxmbG9h
dD4gaW5wdXRQYXJhbWV0ZXJzIHsKKyAgICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KDAuMzkzICsgMC42MDcgKiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgICAgICAgICAgbmFy
cm93UHJlY2lzaW9uVG9GbG9hdCgwLjc2OSAtIDAuNzY5ICogb25lTWludXNBbW91bnQpLAorICAg
ICAgICAgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4xODkgLSAwLjE4OSAqIG9uZU1p
bnVzQW1vdW50KSwKKyAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgIDAsCisKKyAg
ICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KDAuMzQ5IC0gMC4zNDkgKiBvbmVN
aW51c0Ftb3VudCksCisgICAgICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjY4
NiArIDAuMzE0ICogb25lTWludXNBbW91bnQpLAorICAgICAgICAgICAgICAgIG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQoMC4xNjggLSAwLjE2OCAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAgICAg
ICAgICAwLAorICAgICAgICAgICAgICAgIDAsCisKKyAgICAgICAgICAgICAgICBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KDAuMjcyIC0gMC4yNzIgKiBvbmVNaW51c0Ftb3VudCksCisgICAgICAgICAg
ICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdCgwLjUzNCAtIDAuNTM0ICogb25lTWludXNBbW91
bnQpLAorICAgICAgICAgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoMC4xMzEgKyAwLjg2
OSAqIG9uZU1pbnVzQW1vdW50KSwKKyAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAg
IDAsCisKKyAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAg
ICAgICAgMCwKKyAgICAgICAgICAgICAgICAxLAorICAgICAgICAgICAgICAgIDAsCisgICAgICAg
ICAgICB9OworCisgICAgICAgICAgICBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoKnRo
aXMsIEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVgsIFdURk1vdmUoaW5wdXRQYXJhbWV0ZXJzKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6U0FUVVJBVEU6IHsKICAgICAgICAgICAgIGF1dG8mIGNvbG9yTWF0cml4T3BlcmF0aW9u
ID0gZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0
aW9uKTsKLSAgICAgICAgICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzOwotICAgICAg
ICAgICAgaW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9y
TWF0cml4T3BlcmF0aW9uLmFtb3VudCgpKSk7Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUNvbG9y
TWF0cml4OjpjcmVhdGUoKnRoaXMsIEZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURSwgaW5wdXRQ
YXJhbWV0ZXJzKTsKKyAgICAgICAgICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzIHsg
bmFycm93UHJlY2lzaW9uVG9GbG9hdChjb2xvck1hdHJpeE9wZXJhdGlvbi5hbW91bnQoKSkgfTsK
KyAgICAgICAgICAgIGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZSgqdGhpcywgRkVDT0xP
Uk1BVFJJWF9UWVBFX1NBVFVSQVRFLCBXVEZNb3ZlKGlucHV0UGFyYW1ldGVycykpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhV
RV9ST1RBVEU6IHsKICAgICAgICAgICAgIGF1dG8mIGNvbG9yTWF0cml4T3BlcmF0aW9uID0gZG93
bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oZmlsdGVyT3BlcmF0aW9uKTsK
LSAgICAgICAgICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQYXJhbWV0ZXJzOwotICAgICAgICAgICAg
aW5wdXRQYXJhbWV0ZXJzLmFwcGVuZChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yTWF0cml4
T3BlcmF0aW9uLmFtb3VudCgpKSk7Ci0gICAgICAgICAgICBlZmZlY3QgPSBGRUNvbG9yTWF0cml4
OjpjcmVhdGUoKnRoaXMsIEZFQ09MT1JNQVRSSVhfVFlQRV9IVUVST1RBVEUsIGlucHV0UGFyYW1l
dGVycyk7CisgICAgICAgICAgICBWZWN0b3I8ZmxvYXQ+IGlucHV0UGFyYW1ldGVycyB7IG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQoY29sb3JNYXRyaXhPcGVyYXRpb24uYW1vdW50KCkpIH07CisgICAg
ICAgICAgICBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoKnRoaXMsIEZFQ09MT1JNQVRS
SVhfVFlQRV9IVUVST1RBVEUsIFdURk1vdmUoaW5wdXRQYXJhbWV0ZXJzKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJU
OiB7CkBAIC0yOTYsNyArMjk1LDcgQEAgYm9vbCBDU1NGaWx0ZXI6OmJ1aWxkKFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb24KICAgICAgICAg
ICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoZmlsdGVyT3BlcmF0aW9uLnR5
cGUoKSAhPSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRSkgewotICAgICAgICAgICAgICAgIGVm
ZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKFdURk1vdmUocHJldmlvdXNFZmZlY3QpKTsKKyAg
ICAgICAgICAgICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBXVEZNb3ZlKHByZXZpb3Vz
RWZmZWN0KSB9OwogICAgICAgICAgICAgICAgIG1fZWZmZWN0cy5hcHBlbmQoKmVmZmVjdCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBwcmV2aW91c0VmZmVjdCA9IFdURk1vdmUoZWZmZWN0
KTsKQEAgLTMwNyw2ICszMDYsOCBAQCBib29sIENTU0ZpbHRlcjo6YnVpbGQoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbgogICAgIGlmICht
X2VmZmVjdHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBtX2VmZmVj
dHMuc2hyaW5rVG9GaXQoKTsKKwogICAgIHNldE1heEVmZmVjdFJlY3RzKG1fc291cmNlRHJhd2lu
Z1JlZ2lvbik7CiAjaWYgVVNFKENPUkVfSU1BR0UpCiAgICAgaWYgKCFtX2ZpbHRlclJlbmRlcmVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmNwcAppbmRleCBmMzJlZDdkZmNiMjYxMWQxNDhiMzBlYTgwODc2MTU5MDE5
MTNhZDFlLi43ODlhODljNTQzMmVmOGUzMmY5MDRlMzQ3MDNhZjI1MDQ4M2E1NzEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRmlsdGVyQnVp
bGRlcj4gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0aXZlcyhTVkdGaQogICAg
IGJ1aWxkZXItPnNldFRhcmdldEJvdW5kaW5nQm94KHRhcmdldEJvdW5kaW5nQm94KTsKICAgICAK
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBjaGlsZHJlbk9mVHlwZTxTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM+KGZpbHRlckVsZW1lbnQoKSkpIHsKLSAgICAgICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gZWxlbWVudC5idWlsZChidWlsZGVyLmdldCgpLCBmaWx0
ZXIpOworICAgICAgICBhdXRvIGVmZmVjdCA9IGVsZW1lbnQuYnVpbGQoYnVpbGRlci5nZXQoKSwg
ZmlsdGVyKTsKICAgICAgICAgaWYgKCFlZmZlY3QpIHsKICAgICAgICAgICAgIGJ1aWxkZXItPmNs
ZWFyRWZmZWN0cygpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAppbmRleCBlMGM1OTdkZjkyYTVi
MzBmN2E3ZjlhNDkzNTY0M2ZjNTM0MGFlY2RiLi4wNTI0ODU3OGMyNzRjOGZhMmIzZTFmMjQ0ZTQz
Njc4NjhmNDJiYTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4
RWxlbWVudC5jcHAKQEAgLTExMywxNSArMTEzLDE4IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWls
CiAgICAgLy8gVXNlIGRlZmF1bHRzIGlmIHZhbHVlcyBpcyBlbXB0eSAoU1ZHIDEuMSAxNS4xMCku
CiAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnZhbHVlc0F0dHIpKSB7CiAgICAgICAg
IHN3aXRjaCAoZmlsdGVyVHlwZSkgewotICAgICAgICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9N
QVRSSVg6Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDIwOyBpKyspCi0gICAg
ICAgICAgICAgICAgZmlsdGVyVmFsdWVzLmFwcGVuZCgoaSAlIDYpID8gMCA6IDEpOworICAgICAg
ICBjYXNlIEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVg6IHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgbWF0cml4VmFsdWVDb3VudCA9IDIwOworICAgICAgICAgICAgZmls
dGVyVmFsdWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobWF0cml4VmFsdWVDb3VudCk7CisgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hdHJpeFZhbHVlQ291bnQ7IGkrKykKKyAg
ICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZXMudW5jaGVja2VkQXBwZW5kKChpICUgNikgPyAwIDog
MSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIEZFQ09MT1JN
QVRSSVhfVFlQRV9IVUVST1RBVEU6Ci0gICAgICAgICAgICBmaWx0ZXJWYWx1ZXMuYXBwZW5kKDAp
OworICAgICAgICAgICAgZmlsdGVyVmFsdWVzID0geyAwIH07CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBGRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEU6Ci0gICAgICAgICAgICBm
aWx0ZXJWYWx1ZXMuYXBwZW5kKDEpOworICAgICAgICAgICAgZmlsdGVyVmFsdWVzID0geyAxIH07
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTM1LDEwICsxMzgsMTEgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWwKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAKICAgICAgICAgZmlsdGVyVmFsdWVzID0gdmFs
dWVzKCk7CisgICAgICAgIGZpbHRlclZhbHVlcy5zaHJpbmtUb0ZpdCgpOwogICAgIH0KIAotICAg
IGF1dG8gZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGZpbHRlciwgZmlsdGVyVHlwZSwg
ZmlsdGVyVmFsdWVzKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEp
OworICAgIGF1dG8gZWZmZWN0ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGZpbHRlciwgZmlsdGVy
VHlwZSwgV1RGTW92ZShmaWx0ZXJWYWx1ZXMpKTsKKyAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygp
ID0geyBpbnB1dDEgfTsKICAgICByZXR1cm4gZWZmZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAppbmRleCA0OTFh
MWI0NWU3YTc2ZjhhYTk0NjMzMjU3M2E2OWQyYWQwYWQyMWE5Li5lODkyNjdjZTdkMzQxNDZkMmE2
NWQ2ZjAxZGNlNWRlZjQ5YzgyZjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqIGZpbHQKICAgICB9CiAgICAgCiAgICAgYXV0byBlZmZlY3QgPSBGRUNvbXBv
bmVudFRyYW5zZmVyOjpjcmVhdGUoZmlsdGVyLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7Ci0g
ICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKKyAgICBlZmZlY3QtPmlu
cHV0RWZmZWN0cygpID0geyBpbnB1dDEgfTsKICAgICByZXR1cm4gZWZmZWN0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRl
eCBkNDAyMGRlNzc5OWVmYzNkNzJkMmI0NzBkNDNhYzIxYWUzNDQ3Y2VkLi40ZThiNmM1OTIyZThi
MjllMGY5NjYzYzEzMTIwNDU4ODYzMDM5OGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciogZmlsdGVyQgogICAgIH0KIAogICAgIGF1dG8gZWZmZWN0ID0gRkVDb252b2x2
ZU1hdHJpeDo6Y3JlYXRlKGZpbHRlciwgSW50U2l6ZShvcmRlclhWYWx1ZSwgb3JkZXJZVmFsdWUp
LCBkaXZpc29yVmFsdWUsIGJpYXMoKSwgSW50UG9pbnQodGFyZ2V0WFZhbHVlLCB0YXJnZXRZVmFs
dWUpLCBlZGdlTW9kZSgpLCBGbG9hdFBvaW50KGtlcm5lbFVuaXRMZW5ndGhYVmFsdWUsIGtlcm5l
bFVuaXRMZW5ndGhZVmFsdWUpLCBwcmVzZXJ2ZUFscGhhKCksIGtlcm5lbE1hdHJpeCk7Ci0gICAg
ZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKKyAgICBlZmZlY3QtPmlucHV0
RWZmZWN0cygpID0geyBpbnB1dDEgfTsKICAgICByZXR1cm4gZWZmZWN0OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4
IDg4Njg4ZThhNDM1ODcyZTAwZGQ4NmE3YjVjODljNGQ4NTc0NDU2MGUuLjc1MWFkYWMxMjhhOGIz
ZjhmODAxNzkzMDc1ODIzYmVlY2ZkOTRiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiBmaWx0ZXIKICAgICBDb2xvciBjb2xvciA9IHJlbmRlcmVyLT5zdHlsZSgp
LmNvbG9yQnlBcHBseWluZ0NvbG9yRmlsdGVyKHJlbmRlcmVyLT5zdHlsZSgpLnN2Z1N0eWxlKCku
bGlnaHRpbmdDb2xvcigpKTsKIAogICAgIGF1dG8gZWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6
OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50KCks
IGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIFdURk1vdmUobGlnaHRT
b3VyY2UpKTsKLSAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOworICAg
IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IGlucHV0MSB9OwogICAgIHJldHVybiBlZmZlY3Q7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcApp
bmRleCAxYWJmNGI0NjgxYTM1OGVhN2YyMzRjNzgwYWY4NjE2YTU5ZjE3YjAyLi4yMmJjZTFkMzMz
MTdjOTU3MWZlNWQ3OWY0YjMyNmE4OWJmYzViNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciogZmlsdGVyQnVpbGQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGVmZmVj
dCA9IEZFRHJvcFNoYWRvdzo6Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZp
YXRpb25ZKCksIGR4KCksIGR5KCksIGNvbG9yLCBvcGFjaXR5KTsKLSAgICBlZmZlY3QtPmlucHV0
RWZmZWN0cygpLmFwcGVuZChpbnB1dDEpOworICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7
IGlucHV0MSB9OwogICAgIHJldHVybiBlZmZlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKaW5kZXggOTlmZWM5YjQ3NzFjNDU1ZDZi
NzJlNjA1YmZiZDU1NDJlZDA1YmNiNS4uN2E5OTgyMjRjOTIxOTU1NTI0NGE4NjljYTc4YTgzMGQ1
NjNjNTk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudC5jcHAKQEAgLTk4LDcgKzk4LDYgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUKIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CiB7CiAgICAgYXV0
byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLQogICAgIGlm
ICghaW5wdXQxKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTA2LDcgKzEwNSw3IEBA
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciogZmlsdGVyQnVpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
YXV0byBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKGZpbHRlciwgc3RkRGV2aWF0aW9u
WCgpLCBzdGREZXZpYXRpb25ZKCksIGVkZ2VNb2RlKCkpOwotICAgIGVmZmVjdC0+aW5wdXRFZmZl
Y3RzKCkuYXBwZW5kKGlucHV0MSk7CisgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5w
dXQxIH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1l
cmdlRWxlbWVudC5jcHAKaW5kZXggNDViYWVhZjEwN2I2OGExODMwMTQxZmYwMmQxNjY0NDcyN2Yx
YzY1Yy4uYTU3MmFkNTNkOWYxZDY1ZGEzZGVmNGQ1MTEzZDUwYTQyNTIxODg4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFJlZjxT
VkdGRU1lcmdlRWxlbWVudD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBECiBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1lcmdlRWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIp
IGNvbnN0CiB7CiAgICAgYXV0byBlZmZlY3QgPSBGRU1lcmdlOjpjcmVhdGUoZmlsdGVyKTsKLSAg
ICBGaWx0ZXJFZmZlY3RWZWN0b3ImIG1lcmdlSW5wdXRzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMo
KTsKKyAgICBhdXRvJiBtZXJnZUlucHV0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCk7CiAKICAg
ICBmb3IgKGF1dG8mIG1lcmdlTm9kZSA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZFTWVyZ2VOb2RlRWxl
bWVudD4oKnRoaXMpKSB7CiAgICAgICAgIGF1dG8gbWVyZ2VFZmZlY3QgPSBmaWx0ZXJCdWlsZGVy
LT5nZXRFZmZlY3RCeUlkKG1lcmdlTm9kZS5pbjEoKSk7CkBAIC01Niw2ICs1Niw4IEBAIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTWVyZ2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiBmaWx0ZXJCdWlsZGVyLCBGCiAgICAgICAgIG1lcmdlSW5wdXRzLmFwcGVuZChXVEZNb3ZlKG1l
cmdlRWZmZWN0KSk7CiAgICAgfQogCisgICAgbWVyZ2VJbnB1dHMuc2hyaW5rVG9GaXQoKTsKKwog
ICAgIGlmIChtZXJnZUlucHV0cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKaW5kZXgg
MGY1YzQ3ZmU2YTJkN2VmMjhhYzQwMjIwZWQzZWEyNGQ5NGQyOWViOS4uZDZmYjk1YzhlMzc3NmU2
ZDIwOTNiZWFjZTM1ZTJlZDE3OTVkMzIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU1vcnBob2xvZ3lFbGVtZW50LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZp
bHRlckJ1aWxkCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBlZmZlY3QgPSBG
RU1vcnBob2xvZ3k6OmNyZWF0ZShmaWx0ZXIsIHN2Z09wZXJhdG9yKCksIHhSYWRpdXMsIHlSYWRp
dXMpOwotICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CisgICAgZWZm
ZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAppbmRleCA0ODVjMDYw
OWQ5NTcwNTIwNmNlM2JmMGE4ZGUzNmU4M2E5YjZjMGY3Li4wMzgyNjhiODliMmYxOWY5YmU1Njg3
MzlkMTIzMDM1NDEwMGE1ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVP
ZmZzZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVt
ZW50LmNwcApAQCAtODksNyArODksNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU9mZnNl
dEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBlZmZlY3QgPSBGRU9mZnNldDo6Y3JlYXRlKGZp
bHRlciwgZHgoKSwgZHkoKSk7Ci0gICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5w
dXQxKTsKKyAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBpbnB1dDEgfTsKICAgICByZXR1
cm4gZWZmZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggYmNkNzkyNTk0OWRiY2I0YTcxOThiMmZhNzk2YTUx
MGRmOWM2ZjlhMC4uMjY0ZDE5N2VmMzY1NmJiZmI4NDFiNjc2MDQzYjYwMzFkMWNlY2Q4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
LmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlCiAgICAgQ29s
b3IgY29sb3IgPSByZW5kZXJlci0+c3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcihy
ZW5kZXJlci0+c3R5bGUoKS5zdmdTdHlsZSgpLmxpZ2h0aW5nQ29sb3IoKSk7CiAKICAgICBhdXRv
IGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZh
Y2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksIHNwZWN1bGFyRXhwb25lbnQoKSwga2VybmVs
VW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgV1RGTW92ZShsaWdodFNvdXJjZSkp
OwotICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkuYXBwZW5kKGlucHV0MSk7CisgICAgZWZmZWN0
LT5pbnB1dEVmZmVjdHMoKSA9IHsgaW5wdXQxIH07CiAgICAgcmV0dXJuIGVmZmVjdDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCmluZGV4IDVjNTlkNzhlZDA2ZDYw
MmNkYWFkNDM0NDBmNTA1YjcyNjgyYzk0NzQuLjM5YmRjYzc3MzU5NjY1MDM2ZTFhZTc0NzYxMmVh
ZDZmOWFjMzczNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKQEAg
LTc4LDcgKzc4LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUaWxlRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBhdXRvIGVmZmVjdCA9IEZFVGlsZTo6Y3JlYXRlKGZpbHRlcik7Ci0gICAg
ZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKKyAgICBlZmZlY3QtPmlucHV0
RWZmZWN0cygpID0geyBpbnB1dDEgfTsKICAgICByZXR1cm4gZWZmZWN0OwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>