<?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>240156</bug_id>
          
          <creation_ts>2022-05-05 22:08:38 -0700</creation_ts>
          <short_desc>Make the various shouldApplyContainment() functions member functions on RenderElement</short_desc>
          <delta_ts>2022-05-06 10:12:13 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=240164</see_also>
          <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>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jfernandez</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>rbuis</cc>
    
    <cc>rego</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youssefdevelops</cc>
    
    <cc>y_soliman</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1867102</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-05 22:08:38 -0700</bug_when>
    <thetext>Make the various shouldApplyContainment() functions member functions on RenderElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867103</commentid>
    <comment_count>1</comment_count>
      <attachid>458932</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-05 22:09:57 -0700</bug_when>
    <thetext>Created attachment 458932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867227</commentid>
    <comment_count>2</comment_count>
      <attachid>458932</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-05-06 09:00:33 -0700</bug_when>
    <thetext>Comment on attachment 458932
Patch

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

&gt; Source/WebCore/rendering/RenderElement.h:505
&gt; +inline bool RenderElement::shouldApplyLayoutContainment() const
&gt; +{
&gt; +    return style().containsLayout() &amp;&amp; (!isInline() || isAtomicInlineLevelBox()) &amp;&amp; !isRubyText() &amp;&amp; (!isTablePart() || isRenderBlockFlow());
&gt; +}

at some point these could all be moved to RenderBlock (or maybe even RenderBlockFlow) since the current render tree has this built-in type information. super not important -and also LFC tree does not work like that either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867228</commentid>
    <comment_count>3</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-05-06 09:02:02 -0700</bug_when>
    <thetext>IIRC somebody (Darin?) requested free functions during review, but I am fine with class methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867251</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-06 09:44:31 -0700</bug_when>
    <thetext>(In reply to Rob Buis from comment #3)
&gt; IIRC somebody (Darin?) requested free functions during review, but I am fine
&gt; with class methods.

I think it was me, but seeing how all the callers pass *this, I changed my mind :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867267</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-06 10:11:50 -0700</bug_when>
    <thetext>Committed r293900 (250358@main): &lt;https://commits.webkit.org/250358@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 458932.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867270</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-05-06 10:12:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/92867194&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458932</attachid>
            <date>2022-05-05 22:09:57 -0700</date>
            <delta_ts>2022-05-06 10:11:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240156-20220505220956.patch</filename>
            <type>text/plain</type>
            <size>48134</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzODc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTEzODRhNzBjMGMxMGFi
YTRhZjVlNTRmZjQ3OWFjNzY2ODVmOWQxYS4uNjYyYTg1M2VkOTlhYTNjZWRlMDBkMGE3YzY3ZTQ0
ZDFkOWUyOTE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAyMi0wNS0wNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHRoZSB2
YXJpb3VzIHNob3VsZEFwcGx5Q29udGFpbm1lbnQoKSBmdW5jdGlvbnMgbWVtYmVyIGZ1bmN0aW9u
cyBvbiBSZW5kZXJFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNDAxNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGVzZSB3ZXJlIGZyZWUgZnVuY3Rpb25zLCBidXQgbWFrZSBtb3JlIHNlbnNl
IGFzIG1lbWJlciBmdW5jdGlvbnMgb24gUmVuZGVyRWxlbWVudAorICAgICAgICBzaW5jZSBtb3N0
IGNhbGxlcnMgcGFzc2VkIGAqdGhpc2AuIEp1c3Qgb25lIGNhbGwgc2l0ZSBuZWVkcyB0byBkb3du
Y2FzdDw+IHRvCisgICAgICAgIFJlbmRlckVsZW1lbnQuCisKKyAgICAgICAgTm8gYmVoYXZpb3Ig
Y2hhbmdlLgorCisgICAgICAgICogcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5j
cHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZUJsb2NrUHJlZmVycmVkTG9naWNh
bFdpZHRocyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Zmlyc3RMaW5l
QmFzZWxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmlubGluZUJs
b2NrQmFzZWxpbmUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW50cmluc2lj
TG9naWNhbFdpZHRocyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6
OmFkanVzdEJsb2NrQ2hpbGRGb3JQYWdpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrRmxvdzo6YWRqdXN0U2l6ZUNvbnRhaW5tZW50Q2hpbGRGb3JQYWdpbmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Zmlyc3RMaW5lQmFzZWxpbmUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjppbmxpbmVCbG9ja0Jhc2VsaW5l
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGlu
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzdHlsZURpZENoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnVwZGF0ZUxvZ2ljYWxIZWlnaHQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojppc1Vuc3BsaXR0YWJsZUZvclBhZ2luYXRpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpsYXlvdXRPdmVyZmxvd1JlY3RGb3JQ
cm9wYWdhdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojp1cGRhdGVG
cm9tU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQnV0dG9uOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtl
Q291bnRlck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ291bnRlcjo6cmVuZGVyZXJT
dWJ0cmVlQXR0YWNoZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6
OmNhbkNvbnRhaW5GaXhlZFBvc2l0aW9uT2JqZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJFbGVtZW50OjpjYW5Db250YWluQWJzb2x1dGVseVBvc2l0aW9uZWRPYmplY3RzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnNob3VsZEFwcGx5TGF5b3V0
Q29udGFpbm1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2hv
dWxkQXBwbHlTaXplQ29udGFpbm1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RWxlbWVudDo6c2hvdWxkQXBwbHlJbmxpbmVTaXplQ29udGFpbm1lbnQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2hvdWxkQXBwbHlTdHlsZUNvbnRhaW5tZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnNob3VsZEFwcGx5UGFpbnRD
b250YWlubWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzaG91
bGRBcHBseUFueUNvbnRhaW5tZW50IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2w6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxleGlibGVCb3g6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpmaXJzdExpbmVCYXNlbGluZSBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyR3JpZDo6bGF5b3V0QmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6Y29tcHV0ZUVtcHR5VHJhY2tzRm9yQXV0b1JlcGVhdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJHcmlkOjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpj
b21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlcklubGluZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjYW5DcmVhdGVTdGFja2luZ0NvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNob3VsZEJlQ1NTU3RhY2tpbmdDb250ZXh0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXRBbmNlc3RvckNoYWluSGFzU2VsZlBh
aW50aW5nTGF5ZXJEZXNjZW5kYW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpz
ZXRBbmNlc3RvckNoYWluSGFzVmlzaWJsZURlc2NlbmRhbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6
Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGlzdEJveDo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFJlbmRlck1lbnVMaXN0Ojpjb21wdXRl
SW50cmluc2ljTG9naWNhbFdpZHRocyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvYmplY3RJc1JlbGF5b3V0Qm91bmRhcnkp
OgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQXBwbHlMYXlvdXRDb250YWlubWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpzaG91bGRBcHBseVNpemVDb250YWlubWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpzaG91bGRBcHBseUlubGluZVNpemVDb250YWlubWVudCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzaG91bGRBcHBseVN0eWxlQ29udGFpbm1lbnQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQXBwbHlQYWludENvbnRhaW5tZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEFwcGx5QW55Q29udGFpbm1lbnQp
OiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UmVwbGFjZWQ6OmNvbXB1dGVBc3BlY3RSYXRpb0luZm9ybWF0aW9uRm9yUmVuZGVyQm94IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljUmF0
aW9JbmZvcm1hdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTbGlkZXI6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGFibGU6OmZpcnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENv
bnRyb2w6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86
OmNhbGN1bGF0ZUludHJpbnNpY1NpemUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnJlbmRlcmVyRm9yUm9vdEJhY2tn
cm91bmQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHUm9v
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSZW5kZXJTVkdSb290Ojpjb21wdXRlSW50
cmluc2ljUmF0aW9JbmZvcm1hdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1
dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBzdHlsZS9Db250
YWluZXJRdWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q29udGFp
bmVyUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlU2l6ZUZlYXR1cmUgY29uc3QpOgorCiAyMDIyLTA1
LTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
ZHVjZSB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGNhbkNvbnRhaW5GaXhlZFBvc2l0aW9uT2JqZWN0
cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5n
QWxnb3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdB
bGdvcml0aG0uY3BwCmluZGV4IDkwMWE3ODMzOWFlZmI0YmI2NjBlMGNiNDkwNzFjNmFjZTIxNjBk
ZTQuLmJkNzZkNDYxMTMyZGEwZWJlZjFlOTUzYjEyMjRhYzBlNWVjMmI3MDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3Bw
CkBAIC0xMDQ1LDggKzEwNDUsOCBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBmaW5kVXNlZEZsZXhG
cmFjdGlvbihWZWN0b3I8dW5zaWduZWQ+JiBmbGV4aWJsZVNpemVkVHJhY2tzSW5kZXgsIEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2Up
IGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgcmVjb21wdXRlVXNlZEZsZXhGcmFjdGlvbklmTmVl
ZGVkKGRvdWJsZSYgZmxleEZyYWN0aW9uLCBMYXlvdXRVbml0JiB0b3RhbEdyb3d0aCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5pdCBmcmVlU3BhY2VGb3JTdHJldGNoQXV0b1RyYWNrc1N0
ZXAoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzQ29tcHV0aW5nU2l6ZUNvbnRhaW5tZW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKnJl
bmRlckdyaWQoKSk7IH0KLSAgICBib29sIGlzQ29tcHV0aW5nSW5saW5lU2l6ZUNvbnRhaW5tZW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2hvdWxkQXBwbHlJbmxpbmVTaXplQ29udGFpbm1l
bnQoKnJlbmRlckdyaWQoKSk7IH0KKyAgICBib29sIGlzQ29tcHV0aW5nU2l6ZUNvbnRhaW5tZW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcmVuZGVyR3JpZCgpLT5zaG91bGRBcHBseVNpemVD
b250YWlubWVudCgpOyB9CisgICAgYm9vbCBpc0NvbXB1dGluZ0lubGluZVNpemVDb250YWlubWVu
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJlbmRlckdyaWQoKS0+c2hvdWxkQXBwbHlJbmxp
bmVTaXplQ29udGFpbm1lbnQoKTsgfQogICAgIHZvaWQgYWNjdW11bGF0ZUZsZXhGcmFjdGlvbihk
b3VibGUmIGZsZXhGcmFjdGlvbiwgR3JpZEl0ZXJhdG9yJiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uIG91dGVybW9zdERpcmVjdGlvbiwgSGFzaFNldDxSZW5kZXJCb3gqPiYgaXRlbXNTZXQpIGNv
bnN0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXgg
NDdlZDI0ZWQ1YzdhNzIzODk4NWRhNDY3ZjA5ZWU4NmE0MzRkMGVkOC4uY2U3YmYxNTVmZDFmY2Rl
ZDYzZjUwMTVlNTEyOTkwYjdmYTg0MTZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCkBAIC0yMjU4LDcgKzIyNTgsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpvZmZz
ZXRGb3JDb250ZW50cyhMYXlvdXRQb2ludCYgb2Zmc2V0KSBjb25zdAogdm9pZCBSZW5kZXJCbG9j
azo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdp
ZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFj
aGlsZHJlbklubGluZSgpKTsKLSAgICBhdXRvIHNob3VsZElnbm9yZURlc2NlbmRhbnRDb250ZW50
Rm9yTG9naWNhbFdpZHRoID0gc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKnRoaXMpIHx8IHNo
b3VsZEFwcGx5SW5saW5lU2l6ZUNvbnRhaW5tZW50KCp0aGlzKTsKKyAgICBhdXRvIHNob3VsZEln
bm9yZURlc2NlbmRhbnRDb250ZW50Rm9yTG9naWNhbFdpZHRoID0gc2hvdWxkQXBwbHlTaXplQ29u
dGFpbm1lbnQoKSB8fCBzaG91bGRBcHBseUlubGluZVNpemVDb250YWlubWVudCgpOwogICAgIGlm
ICghc2hvdWxkSWdub3JlRGVzY2VuZGFudENvbnRlbnRGb3JMb2dpY2FsV2lkdGgpCiAgICAgICAg
IGNvbXB1dGVCbG9ja1ByZWZlcnJlZExvZ2ljYWxXaWR0aHMobWluTG9naWNhbFdpZHRoLCBtYXhM
b2dpY2FsV2lkdGgpOwogCkBAIC0yMjkzLDcgKzIyOTMsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAKIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1
dGVCbG9ja1ByZWZlcnJlZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRo
LCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFzaG91
bGRBcHBseUlubGluZVNpemVDb250YWlubWVudCgqdGhpcykpOworICAgIEFTU0VSVCghc2hvdWxk
QXBwbHlJbmxpbmVTaXplQ29udGFpbm1lbnQoKSk7CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGVUb1VzZSA9IHN0eWxlKCk7CiAgICAgYm9vbCBub3dyYXAgPSBzdHlsZVRvVXNlLndoaXRl
U3BhY2UoKSA9PSBXaGl0ZVNwYWNlOjpOb1dyYXA7CkBAIC0yNTMxLDcgKzI1MzEsNyBAQCBMYXlv
dXRVbml0IFJlbmRlckJsb2NrOjptaW5MaW5lSGVpZ2h0Rm9yUmVwbGFjZWRSZW5kZXJlcihib29s
IGlzRmlyc3RMaW5lLCBMYXlvdQogCiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJs
b2NrOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7Ci0gICAgaWYgKHNob3VsZEFwcGx5TGF5
b3V0Q29udGFpbm1lbnQoKnRoaXMpKQorICAgIGlmIChzaG91bGRBcHBseUxheW91dENvbnRhaW5t
ZW50KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaXNXcml0aW5n
TW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpCkBAIC0yNTQ5LDcgKzI1NDksNyBAQCBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
CiAKIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFz
ZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QKIHsKLSAgICBpZiAo
c2hvdWxkQXBwbHlMYXlvdXRDb250YWlubWVudCgqdGhpcykpCisgICAgaWYgKHNob3VsZEFwcGx5
TGF5b3V0Q29udGFpbm1lbnQoKSkKICAgICAgICAgcmV0dXJuIHN5bnRoZXNpemVkQmFzZWxpbmVG
cm9tQm9yZGVyQm94KCp0aGlzLCBsaW5lRGlyZWN0aW9uKSArIChsaW5lRGlyZWN0aW9uID09IEhv
cml6b250YWxMaW5lID8gbWFyZ2luQm90dG9tKCkgOiBtYXJnaW5MZWZ0KCkpOwogCiAgICAgaWYg
KGlzV3JpdGluZ01vZGVSb290KCkgJiYgIWlzUnVieVJ1bigpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA4M2NmNWE2Y2FkMzhmYjAxZDI1NTcx
MDFhMGMxZjQ2YzRjNDdkMjlkLi40M2I5ODQyMTliNTJjZGQ1ODdkMzA1YWYwYjQ1NGVkNmI4YjQy
ZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApA
QCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjphZGp1c3RJbnRyaW5zaWNM
b2dpY2FsV2lkdGhzRm9yQ29sdW1ucyhMYXlvdXRVbml0JiBtaW5Mb2dpCiAKIHZvaWQgUmVuZGVy
QmxvY2tGbG93Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5M
b2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3QKIHsKLSAgICBh
dXRvIHNob3VsZElnbm9yZURlc2NlbmRhbnRDb250ZW50Rm9yTG9naWNhbFdpZHRoID0gc2hvdWxk
QXBwbHlTaXplQ29udGFpbm1lbnQoKnRoaXMpIHx8IHNob3VsZEFwcGx5SW5saW5lU2l6ZUNvbnRh
aW5tZW50KCp0aGlzKTsKKyAgICBhdXRvIHNob3VsZElnbm9yZURlc2NlbmRhbnRDb250ZW50Rm9y
TG9naWNhbFdpZHRoID0gc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSB8fCBzaG91bGRBcHBs
eUlubGluZVNpemVDb250YWlubWVudCgpOwogICAgIGlmICghc2hvdWxkSWdub3JlRGVzY2VuZGFu
dENvbnRlbnRGb3JMb2dpY2FsV2lkdGgpIHsKICAgICAgICAgaWYgKGNoaWxkcmVuSW5saW5lKCkp
CiAgICAgICAgICAgICBjb21wdXRlSW5saW5lUHJlZmVycmVkTG9naWNhbFdpZHRocyhtaW5Mb2dp
Y2FsV2lkdGgsIG1heExvZ2ljYWxXaWR0aCk7CkBAIC0xNTIzLDcgKzE1MjMsNyBAQCBMYXlvdXRV
bml0IFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0QmxvY2tDaGlsZEZvclBhZ2luYXRpb24oTGF5b3V0
VW5pdCBsb2dpY2FsVG9wQQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHNob3VsZEFwcGx5
U2l6ZUNvbnRhaW5tZW50KGNoaWxkKSkKKyAgICBpZiAoY2hpbGQuc2hvdWxkQXBwbHlTaXplQ29u
dGFpbm1lbnQoKSkKICAgICAgICAgYWRqdXN0U2l6ZUNvbnRhaW5tZW50Q2hpbGRGb3JQYWdpbmF0
aW9uKGNoaWxkLCByZXN1bHQpOwogCiAgICAgLy8gRm9yIHJlcGxhY2VkIGVsZW1lbnRzIGFuZCBz
Y3JvbGxlZCBlbGVtZW50cywgd2Ugd2FudCB0byBzaGlmdCB0aGVtIHRvIHRoZSBuZXh0IHBhZ2Ug
aWYgdGhleSBkb24ndCBmaXQgb24gdGhlIGN1cnJlbnQgb25lLgpAQCAtMTkwMyw3ICsxOTAzLDcg
QEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6OmxvZ2ljYWxIZWlnaHRGb3JDaGlsZEZvckZy
YWdtZW50YXRpb24oY29uc3QgUmVuZGVyQm8KIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmFkanVz
dFNpemVDb250YWlubWVudENoaWxkRm9yUGFnaW5hdGlvbihSZW5kZXJCb3gmIGNoaWxkLCBMYXlv
dXRVbml0IG9mZnNldCkKIHsKLSAgICBpZiAoIXNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KGNo
aWxkKSkKKyAgICBpZiAoIWNoaWxkLnNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIExheW91dFVuaXQgY2hpbGRPdmVyZmxvd0hlaWdodCA9IGNoaWxk
LmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGlsZC5sYXlvdXRPdmVyZmxvd1JlY3QoKS5t
YXhZKCkgOiBjaGlsZC5sYXlvdXRPdmVyZmxvd1JlY3QoKS5tYXhYKCk7CkBAIC0yOTQ2LDcgKzI5
NDYsNyBAQCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6Zmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdAogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc1J1
YnlSdW4oKSAmJiAhaXNHcmlkSXRlbSgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgaWYgKHNob3VsZEFwcGx5TGF5b3V0Q29udGFpbm1lbnQoKnRoaXMpKQorICAgIGlmIChz
aG91bGRBcHBseUxheW91dENvbnRhaW5tZW50KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoIWNoaWxkcmVuSW5saW5lKCkpCkBAIC0yOTcxLDcgKzI5NzEsNyBAQCBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNl
bGluZShMaW5lRGlyZWN0aW9uTW9kZQogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpICYmICFp
c1J1YnlSdW4oKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGlmIChzaG91
bGRBcHBseUxheW91dENvbnRhaW5tZW50KCp0aGlzKSkKKyAgICBpZiAoc2hvdWxkQXBwbHlMYXlv
dXRDb250YWlubWVudCgpKQogICAgICAgICByZXR1cm4gUmVuZGVyQmxvY2s6OmlubGluZUJsb2Nr
QmFzZWxpbmUobGluZURpcmVjdGlvbik7CiAKICAgICBpZiAoc3R5bGUoKS5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6OklubGluZUJsb2NrKSB7CkBAIC00MDgzLDcgKzQwODMsNyBAQCBzdGF0aWMg
aW5saW5lIExheW91dFVuaXQgcHJlZmVycmVkV2lkdGgoTGF5b3V0VW5pdCBwcmVmZXJyZWRXaWR0
aCwgZmxvYXQgcmVzdWx0KQogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRV
bml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFzaG91bGRBcHBseUlu
bGluZVNpemVDb250YWlubWVudCgqdGhpcykpOworICAgIEFTU0VSVCghc2hvdWxkQXBwbHlJbmxp
bmVTaXplQ29udGFpbm1lbnQoKSk7CiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09O
VEVYVCkKICAgICBpZiAoY29uc3RfY2FzdDxSZW5kZXJCbG9ja0Zsb3cmPigqdGhpcykudHJ5Q29t
cHV0ZVByZWZlcnJlZFdpZHRoc1VzaW5nTW9kZXJuUGF0aChtaW5Mb2dpY2FsV2lkdGgsIG1heExv
Z2ljYWxXaWR0aCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGI1
YjQyMjI4MTEwZTI2NDc1YTY1ZjNlNzkxZTY5M2I4NjczOWFkYmEuLjc1Yjg4Y2E3MmViZDBmZTAw
OGU2N2NmMTQ5N2VkMTg2ZWQ5MDkxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUKICAgICAg
ICAgICAgIC8vIFByb3BhZ2F0ZSB0aGUgbmV3IHdyaXRpbmcgbW9kZSBhbmQgZGlyZWN0aW9uIHVw
IHRvIHRoZSBSZW5kZXJWaWV3LgogICAgICAgICAgICAgaWYgKCFkb2N1bWVudEVsZW1lbnRSZW5k
ZXJlcikKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAoIWlzQm9keVJl
bmRlcmVyIHx8ICEoc2hvdWxkQXBwbHlBbnlDb250YWlubWVudCgqdGhpcykgfHwgc2hvdWxkQXBw
bHlBbnlDb250YWlubWVudCgqZG9jdW1lbnRFbGVtZW50UmVuZGVyZXIpKSkgeworICAgICAgICAg
ICAgaWYgKCFpc0JvZHlSZW5kZXJlciB8fCAhKHNob3VsZEFwcGx5QW55Q29udGFpbm1lbnQoKSB8
fCBkb2N1bWVudEVsZW1lbnRSZW5kZXJlci0+c2hvdWxkQXBwbHlBbnlDb250YWlubWVudCgpKSkg
ewogICAgICAgICAgICAgICAgIGlmICh2aWV3U3R5bGUuZGlyZWN0aW9uKCkgIT0gbmV3U3R5bGUu
ZGlyZWN0aW9uKCkgJiYgKGlzRG9jRWxlbWVudFJlbmRlcmVyIHx8ICFkb2N1bWVudEVsZW1lbnRS
ZW5kZXJlci0+c3R5bGUoKS5oYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKCkpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHZpZXdTdHlsZS5zZXREaXJlY3Rpb24obmV3U3R5bGUuZGlyZWN0aW9uKCkp
OwogICAgICAgICAgICAgICAgICAgICB2aWV3RGlyZWN0aW9uT3JXcml0aW5nTW9kZUNoYW5nZWQg
PSB0cnVlOwpAQCAtMzA4OCw3ICszMDg4LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNhY2hlSW50cmlu
c2ljQ29udGVudExvZ2ljYWxIZWlnaHRGb3JGbGV4SXRlbShMYXlvdXRVbml0IGhlaWdodCkKIAog
dm9pZCBSZW5kZXJCb3g6OnVwZGF0ZUxvZ2ljYWxIZWlnaHQoKQogewotICAgIGlmIChzaG91bGRB
cHBseVNpemVDb250YWlubWVudCgqdGhpcykgJiYgIWlzUmVuZGVyR3JpZCgpKSB7CisgICAgaWYg
KHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkgJiYgIWlzUmVuZGVyR3JpZCgpKSB7CiAgICAg
ICAgIC8vIFdlIG5lZWQgdGhlIGV4YWN0IHdpZHRoIG9mIGJvcmRlciBhbmQgcGFkZGluZyBoZXJl
LCB5ZXQgd2UgY2FuJ3QgdXNlIGJvcmRlckFuZFBhZGRpbmcqIGludGVyZmFjZXMuCiAgICAgICAg
IC8vIEJlY2F1c2UgdGhlc2UgaW50ZXJmYWNlcyBldmV0dWFsbHkgY2FsbCBib3JkZXJBZnRlci9C
ZWZvcmUsIGFuZCBSZW5kZXJCbG9jazo6Ym9yZGVyQmVmb3JlCiAgICAgICAgIC8vIGFkZHMgZXh0
cmEgYm9yZGVyIHRvIGZpZWxkc2V0IGJ5IGFkZGluZyBpbnRyaW5zaWNCb3JkZXJGb3JGaWVsZHNl
dCB3aGljaCBpcyBub3QgbmVlZGVkIGhlcmUuCkBAIC01MTMwLDcgKzUxMzAsNyBAQCBib29sIFJl
bmRlckJveDo6aXNVbnNwbGl0dGFibGVGb3JQYWdpbmF0aW9uKCkgY29uc3QKICAgICAgICAgfHwg
aGFzVW5zcGxpdHRhYmxlU2Nyb2xsaW5nT3ZlcmZsb3coKQogICAgICAgICB8fCAocGFyZW50KCkg
JiYgaXNXcml0aW5nTW9kZVJvb3QoKSkKICAgICAgICAgfHwgKGlzRmxvYXRpbmcoKSAmJiBzdHls
ZSgpLnN0eWxlVHlwZSgpID09IFBzZXVkb0lkOjpGaXJzdExldHRlciAmJiBzdHlsZSgpLmluaXRp
YWxMZXR0ZXJEcm9wKCkgPiAwKQotICAgICAgICB8fCBzaG91bGRBcHBseVNpemVDb250YWlubWVu
dCgqdGhpcyk7CisgICAgICAgIHx8IHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCk7CiB9CiAK
IExheW91dFVuaXQgUmVuZGVyQm94OjpsaW5lSGVpZ2h0KGJvb2wgLypmaXJzdExpbmUqLywgTGlu
ZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIC8qbGluZVBvc2l0aW9u
TW9kZSovKSBjb25zdApAQCAtNTE5OCw3ICs1MTk4LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6
OmxheW91dE92ZXJmbG93UmVjdEZvclByb3BhZ2F0aW9uKGNvbnN0IFJlbmRlclN0eWxlKiBwYXJl
bnQKIHsKICAgICAvLyBPbmx5IHByb3BhZ2F0ZSBpbnRlcmlvciBsYXlvdXQgb3ZlcmZsb3cgaWYg
d2UgZG9uJ3QgY29tcGxldGVseSBjbGlwIGl0LgogICAgIExheW91dFJlY3QgcmVjdCA9IGJvcmRl
ckJveFJlY3QoKTsKLSAgICBpZiAoIXNob3VsZEFwcGx5TGF5b3V0Q29udGFpbm1lbnQoKnRoaXMp
KSB7CisgICAgaWYgKCFzaG91bGRBcHBseUxheW91dENvbnRhaW5tZW50KCkpIHsKICAgICAgICAg
aWYgKHN0eWxlKCkub3ZlcmZsb3dYKCkgPT0gT3ZlcmZsb3c6OkNsaXAgJiYgc3R5bGUoKS5vdmVy
Zmxvd1koKSA9PSBPdmVyZmxvdzo6VmlzaWJsZSkgewogICAgICAgICAgICAgTGF5b3V0UmVjdCBj
bGlwcGVkT3ZlcmZsb3dSZWN0ID0gbGF5b3V0T3ZlcmZsb3dSZWN0KCk7CiAgICAgICAgICAgICBj
bGlwcGVkT3ZlcmZsb3dSZWN0LnNldFgocmVjdC54KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggNDViZGNiYmI2MjllYWJh
NzVjNGRhZWJmYWQxNTE0MDViODQzMzVkMS4uNjZiYTg4NWRiNzdjZmIxODdmNjk0ODIxYTlhNDk4
MjNhYmE0MzcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6dXBkYXRlRnJvbVN0eWxlKCkKICAgICBzZXRIb3Jpem9udGFsV3JpdGluZ01vZGUoc3R5
bGVUb1VzZS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKTsKICAgICBpZiAoc3R5bGVUb1VzZS5p
c0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKQogICAgICAgICB2aWV3KCkuZnJhbWVWaWV3KCku
c2V0SGFzRmxpcHBlZEJsb2NrUmVuZGVyZXJzKHRydWUpOwotICAgIHNldFBhaW50Q29udGFpbm1l
bnRBcHBsaWVzKHNob3VsZEFwcGx5UGFpbnRDb250YWlubWVudCgqdGhpcykpOworICAgIHNldFBh
aW50Q29udGFpbm1lbnRBcHBsaWVzKHNob3VsZEFwcGx5UGFpbnRDb250YWlubWVudCgpKTsKIH0K
IAogc3RhdGljIExheW91dFNpemUgYWNjdW11bGF0ZUluRmxvd1Bvc2l0aW9uT2Zmc2V0cyhjb25z
dCBSZW5kZXJPYmplY3QqIGNoaWxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJ1dHRvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0
dG9uLmNwcAppbmRleCAwNzNhZjVjODI0MGQzMGEwM2JhNmQwNDhmM2M1NDI4ZjRjZGU5ZTIzLi5k
ODhiODk3YzljMWI4Yjg4ZDNjZTc4YjdhNDIwODBiMmYyZGFmMzVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyBM
YXlvdXRVbml0IHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQ29udGVudEJveChjb25zdCBSZW5kZXJC
b3gmIGJveCwgTGluZURpCiAKIExheW91dFVuaXQgUmVuZGVyQnV0dG9uOjpiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSBmb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0
aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbW9kZSkgY29uc3QKIHsKLSAgICBp
ZiAoc2hvdWxkQXBwbHlMYXlvdXRDb250YWlubWVudCgqdGhpcykpCisgICAgaWYgKHNob3VsZEFw
cGx5TGF5b3V0Q29udGFpbm1lbnQoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlckZsZXhpYmxlQm94
OjpiYXNlbGluZVBvc2l0aW9uKGZvbnRCYXNlbGluZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIG1v
ZGUpOwogICAgIC8vIFdlIGNhbm5vdCByZWx5IG9uIFJlbmRlckZsZXhpYmxlQm94OjpiYXNlbGlu
ZVBvc2l0aW9uKCkgYmVjYXVzZSBvZiBmbGV4Ym94ZXMgaGF2ZSBzb21lIHNwZWNpYWwgYmVoYXZp
b3IKICAgICAvLyByZWdhcmRpbmcgYmFzZWxpbmVzIHRoYXQgc2hvdWxkbid0IGFwcGx5IHRvIGJ1
dHRvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5kZXgg
NDg1Y2U3M2Q5YzM0YTBjOWEzNDJkM2NmZTcwYTU1ZTQ0NmZjYTI5OC4uZjdkMmZkMWU4MTc3ZDM2
NzBkYWU2NGEyMDgwZjFjZjAxOWI2YjFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJDb3VudGVyLmNwcApAQCAtMzU3LDcgKzM1Nyw3IEBAIHN0YXRpYyBDb3VudGVyTm9kZSog
bWFrZUNvdW50ZXJOb2RlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBBdG9tU3RyaW5n
JiBpCiAgICAgbWFwcy5hZGQoJnJlbmRlcmVyLCBtYWtlVW5pcXVlPENvdW50ZXJNYXA+KCkpLml0
ZXJhdG9yLT52YWx1ZS0+YWRkKGlkZW50aWZpZXIsIG5ld05vZGUuY29weVJlZigpKTsKICAgICBy
ZW5kZXJlci5zZXRIYXNDb3VudGVyTm9kZU1hcCh0cnVlKTsKIAotICAgIGlmIChuZXdOb2RlLT5w
YXJlbnQoKSB8fCBzaG91bGRBcHBseVN0eWxlQ29udGFpbm1lbnQocmVuZGVyZXIpKQorICAgIGlm
IChuZXdOb2RlLT5wYXJlbnQoKSB8fCByZW5kZXJlci5zaG91bGRBcHBseVN0eWxlQ29udGFpbm1l
bnQoKSkKICAgICAgICAgcmV0dXJuIG5ld05vZGUucHRyKCk7CiAKICAgICAvLyBDaGVjayBpZiBz
b21lIG5vZGVzIHRoYXQgd2VyZSBwcmV2aW91c2x5IHJvb3Qgbm9kZXMgc2hvdWxkIGJlY29tZSBj
aGlsZHJlbiBvZiB0aGlzIG5vZGUgbm93LgpAQCAtMzY1LDcgKzM2NSw3IEBAIHN0YXRpYyBDb3Vu
dGVyTm9kZSogbWFrZUNvdW50ZXJOb2RlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBB
dG9tU3RyaW5nJiBpCiAgICAgYXV0byogc3RheVdpdGhpbiA9IHBhcmVudE9yUHNldWRvSG9zdEVs
ZW1lbnQocmVuZGVyZXIpOwogICAgIGJvb2wgc2tpcERlc2NlbmRhbnRzID0gZmFsc2U7CiAgICAg
d2hpbGUgKChjdXJyZW50UmVuZGVyZXIgPSBuZXh0SW5QcmVPcmRlcigqY3VycmVudFJlbmRlcmVy
LCBzdGF5V2l0aGluLCBza2lwRGVzY2VuZGFudHMpKSkgewotICAgICAgICBza2lwRGVzY2VuZGFu
dHMgPSBzaG91bGRBcHBseVN0eWxlQ29udGFpbm1lbnQoKmN1cnJlbnRSZW5kZXJlcik7CisgICAg
ICAgIHNraXBEZXNjZW5kYW50cyA9IGN1cnJlbnRSZW5kZXJlci0+c2hvdWxkQXBwbHlTdHlsZUNv
bnRhaW5tZW50KCk7CiAgICAgICAgIGlmICghY3VycmVudFJlbmRlcmVyLT5oYXNDb3VudGVyTm9k
ZU1hcCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGF1dG8qIGN1cnJlbnRDb3Vu
dGVyID0gbWFwcy5maW5kKGN1cnJlbnRSZW5kZXJlciktPnZhbHVlLT5nZXQoaWRlbnRpZmllcik7
CkBAIC01NzEsMTAgKzU3MSwxNCBAQCB2b2lkIFJlbmRlckNvdW50ZXI6OnJlbmRlcmVyU3VidHJl
ZUF0dGFjaGVkKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogICAgICAgICBlbGVtZW50ID0gcmVu
ZGVyZXIuZ2VuZXJhdGluZ0VsZW1lbnQoKTsKICAgICBpZiAoZWxlbWVudCAmJiAhZWxlbWVudC0+
cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOyAvLyBObyBuZWVkIHRvIHVwZGF0ZSBpZiB0aGUg
cGFyZW50IGlzIG5vdCBhdHRhY2hlZCB5ZXQKKwogICAgIGJvb2wgY3Jvc3NlZFN0eWxlQ29udGFp
bm1lbnRCb3VuZGFyeSA9IGZhbHNlOwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBkZXNjZW5kYW50
ID0gJnJlbmRlcmVyOyBkZXNjZW5kYW50OyBkZXNjZW5kYW50ID0gZGVzY2VuZGFudC0+bmV4dElu
UHJlT3JkZXIoJnJlbmRlcmVyKSkgewotICAgICAgICBjcm9zc2VkU3R5bGVDb250YWlubWVudEJv
dW5kYXJ5ID0gY3Jvc3NlZFN0eWxlQ29udGFpbm1lbnRCb3VuZGFyeSB8fCBzaG91bGRBcHBseVN0
eWxlQ29udGFpbm1lbnQoKmRlc2NlbmRhbnQpOwotICAgICAgICBpZiAoY3Jvc3NlZFN0eWxlQ29u
dGFpbm1lbnRCb3VuZGFyeSAmJiBpczxSZW5kZXJFbGVtZW50PigqZGVzY2VuZGFudCkpCisgICAg
ICAgIGlmICghaXM8UmVuZGVyRWxlbWVudD4oZGVzY2VuZGFudCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICBjcm9zc2VkU3R5bGVDb250YWlubWVudEJvdW5kYXJ5ID0gY3Jvc3Nl
ZFN0eWxlQ29udGFpbm1lbnRCb3VuZGFyeSB8fCBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqZGVz
Y2VuZGFudCkuc2hvdWxkQXBwbHlTdHlsZUNvbnRhaW5tZW50KCk7CisgICAgICAgIGlmIChjcm9z
c2VkU3R5bGVDb250YWlubWVudEJvdW5kYXJ5KQogICAgICAgICAgICAgdXBkYXRlQ291bnRlcnMo
ZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmRlc2NlbmRhbnQpKTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3guY3BwCmluZGV4IDFiNzBkMjE0YjQzNTUzZmU2MzFhMDAxZWY2YWE3Yjk4MTdjOTdkYjAuLjVm
MjlkZjFhOWVhMTZkNDNmOWY1NDQ2MjNkNzZlNGRmMDM3NmY3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3Bw
CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmNv
bXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkwKICAgICAgICAgbWlu
TG9naWNhbFdpZHRoICs9IHNjcm9sbGJhcldpZHRoOwogICAgIH07CiAKLSAgICBpZiAoc2hvdWxk
QXBwbHlTaXplQ29udGFpbm1lbnQoKnRoaXMpKSB7CisgICAgaWYgKHNob3VsZEFwcGx5U2l6ZUNv
bnRhaW5tZW50KCkpIHsKICAgICAgICAgYWRkU2Nyb2xsYmFyV2lkdGgoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4
IGRkZjg3MWI3YTVmNjYzYmE0YzJjYTg0ZDA1NThmMDI4NDgxOWVmN2EuLmZlNGM0ODBmMWUxYWM1
NTdlODBhYWRjYmE2ODcyZGEzMWFlYTU5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuaApAQCAtODYsNiArODYsMTMgQEAgcHVibGljOgogICAgIGJvb2wgY2FuQ29u
dGFpbkFic29sdXRlbHlQb3NpdGlvbmVkT2JqZWN0cygpIGNvbnN0OwogICAgIGJvb2wgY2FuRXN0
YWJsaXNoQ29udGFpbmluZ0Jsb2NrV2l0aFRyYW5zZm9ybSgpIGNvbnN0OwogCisgICAgYm9vbCBz
aG91bGRBcHBseUxheW91dENvbnRhaW5tZW50KCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRBcHBs
eVNpemVDb250YWlubWVudCgpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkQXBwbHlJbmxpbmVTaXpl
Q29udGFpbm1lbnQoKSBjb25zdDsKKyAgICBib29sIHNob3VsZEFwcGx5U3R5bGVDb250YWlubWVu
dCgpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkQXBwbHlQYWludENvbnRhaW5tZW50KCkgY29uc3Q7
CisgICAgYm9vbCBzaG91bGRBcHBseUFueUNvbnRhaW5tZW50KCkgY29uc3Q7CisKICAgICBDb2xv
ciBzZWxlY3Rpb25Db2xvcihDU1NQcm9wZXJ0eUlEKSBjb25zdDsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IHNlbGVjdGlvblBzZXVkb1N0eWxlKCkgY29uc3Q7CiAKQEAgLTQ3MSw4
ICs0NzgsOCBAQCBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50OjpjYW5Db250YWluRml4ZWRQb3Np
dGlvbk9iamVjdHMoKSBjb25zdAogICAgICAgICAvLyBGSVhNRTogd2lsbC1jaGFuZ2Ugc2hvdWxk
IGNyZWF0ZSBjb250YWluaW5nIGJsb2NrcyBvbiBpbmxpbmUgYm94ZXMgKGJ1ZyAyMjUwMzUpCiAg
ICAgICAgIHx8IChpc1JlbmRlckJsb2NrKCkgJiYgc3R5bGUoKS53aWxsQ2hhbmdlKCkgJiYgc3R5
bGUoKS53aWxsQ2hhbmdlKCktPmNyZWF0ZXNDb250YWluaW5nQmxvY2tGb3JPdXRPZkZsb3dQb3Np
dGlvbmVkKCkpCiAgICAgICAgIHx8IGlzU1ZHRm9yZWlnbk9iamVjdCgpCi0gICAgICAgIHx8IHNo
b3VsZEFwcGx5TGF5b3V0Q29udGFpbm1lbnQoKnRoaXMpCi0gICAgICAgIHx8IHNob3VsZEFwcGx5
UGFpbnRDb250YWlubWVudCgqdGhpcyk7CisgICAgICAgIHx8IHNob3VsZEFwcGx5TGF5b3V0Q29u
dGFpbm1lbnQoKQorICAgICAgICB8fCBzaG91bGRBcHBseVBhaW50Q29udGFpbm1lbnQoKTsKIH0K
IAogaW5saW5lIGJvb2wgUmVuZGVyRWxlbWVudDo6Y2FuQ29udGFpbkFic29sdXRlbHlQb3NpdGlv
bmVkT2JqZWN0cygpIGNvbnN0CkBAIC00ODIsOCArNDg5LDggQEAgaW5saW5lIGJvb2wgUmVuZGVy
RWxlbWVudDo6Y2FuQ29udGFpbkFic29sdXRlbHlQb3NpdGlvbmVkT2JqZWN0cygpIGNvbnN0CiAg
ICAgICAgIC8vIEZJWE1FOiB3aWxsLWNoYW5nZSBzaG91bGQgY3JlYXRlIGNvbnRhaW5pbmcgYmxv
Y2tzIG9uIGlubGluZSBib3hlcyAoYnVnIDIyNTAzNSkKICAgICAgICAgfHwgKGlzUmVuZGVyQmxv
Y2soKSAmJiBzdHlsZSgpLndpbGxDaGFuZ2UoKSAmJiBzdHlsZSgpLndpbGxDaGFuZ2UoKS0+Y3Jl
YXRlc0NvbnRhaW5pbmdCbG9ja0ZvckFic29sdXRlbHlQb3NpdGlvbmVkKCkpCiAgICAgICAgIHx8
IGlzU1ZHRm9yZWlnbk9iamVjdCgpCi0gICAgICAgIHx8IHNob3VsZEFwcGx5TGF5b3V0Q29udGFp
bm1lbnQoKnRoaXMpCi0gICAgICAgIHx8IHNob3VsZEFwcGx5UGFpbnRDb250YWlubWVudCgqdGhp
cykKKyAgICAgICAgfHwgc2hvdWxkQXBwbHlMYXlvdXRDb250YWlubWVudCgpCisgICAgICAgIHx8
IHNob3VsZEFwcGx5UGFpbnRDb250YWlubWVudCgpCiAgICAgICAgIHx8IGlzUmVuZGVyVmlldygp
OwogfQogCkBAIC00OTIsNiArNDk5LDQyIEBAIGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OmNh
bkVzdGFibGlzaENvbnRhaW5pbmdCbG9ja1dpdGhUcmFuc2Zvcm0oKSBjb25zdAogICAgIHJldHVy
biBpc1JlbmRlckJsb2NrKCkgfHwgKGlzVGFibGVQYXJ0KCkgJiYgIWlzUmVuZGVyVGFibGVDb2wo
KSk7CiB9CiAKK2lubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OnNob3VsZEFwcGx5TGF5b3V0Q29u
dGFpbm1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBzdHlsZSgpLmNvbnRhaW5zTGF5b3V0KCkg
JiYgKCFpc0lubGluZSgpIHx8IGlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSkgJiYgIWlzUnVieVRl
eHQoKSAmJiAoIWlzVGFibGVQYXJ0KCkgfHwgaXNSZW5kZXJCbG9ja0Zsb3coKSk7Cit9CisKK2lu
bGluZSBib29sIFJlbmRlckVsZW1lbnQ6OnNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gc3R5bGUoKS5jb250YWluc1NpemUoKSAmJiAoIWlzSW5saW5lKCkg
fHwgaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpKSAmJiAhaXNSdWJ5VGV4dCgpICYmICghaXNUYWJs
ZVBhcnQoKSB8fCBpc1RhYmxlQ2FwdGlvbigpKSAmJiAhaXNUYWJsZSgpOworfQorCitpbmxpbmUg
Ym9vbCBSZW5kZXJFbGVtZW50OjpzaG91bGRBcHBseUlubGluZVNpemVDb250YWlubWVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHN0eWxlKCkuZWZmZWN0aXZlQ29udGFpbm1lbnQoKS5jb250YWlu
cyhDb250YWlubWVudDo6SW5saW5lU2l6ZSkgJiYgKCFpc0lubGluZSgpIHx8IGlzQXRvbWljSW5s
aW5lTGV2ZWxCb3goKSkgJiYgIWlzUnVieVRleHQoKSAmJiAoIWlzVGFibGVQYXJ0KCkgfHwgaXNU
YWJsZUNhcHRpb24oKSkgJiYgIWlzVGFibGUoKTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyRWxl
bWVudDo6c2hvdWxkQXBwbHlTdHlsZUNvbnRhaW5tZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIXN0
eWxlKCkuY29udGFpbnNTdHlsZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
ICghaXNJbmxpbmUoKSB8fCBpc0F0b21pY0lubGluZUxldmVsQm94KCkpICYmICFpc1J1YnlUZXh0
KCkgJiYgKCFpc1RhYmxlUGFydCgpIHx8IGlzVGFibGVDYXB0aW9uKCkpICYmICFpc1RhYmxlKCk7
Cit9CisKK2lubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OnNob3VsZEFwcGx5UGFpbnRDb250YWlu
bWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0eWxlKCkuY29udGFpbnNQYWludCgpICYmICgh
aXNJbmxpbmUoKSB8fCBpc0F0b21pY0lubGluZUxldmVsQm94KCkpICYmICFpc1J1YnlUZXh0KCkg
JiYgKCFpc1RhYmxlUGFydCgpIHx8IGlzUmVuZGVyQmxvY2tGbG93KCkpOworfQorCitpbmxpbmUg
Ym9vbCBSZW5kZXJFbGVtZW50OjpzaG91bGRBcHBseUFueUNvbnRhaW5tZW50KCkgY29uc3QKK3sK
KyAgICBpZiAoc3R5bGUoKS5lZmZlY3RpdmVDb250YWlubWVudCgpLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgoc3R5bGUoKS5jb250YWluc0xheW91dCgpIHx8IHN0
eWxlKCkuY29udGFpbnNQYWludCgpKSAmJiAoIWlzSW5saW5lKCkgfHwgaXNBdG9taWNJbmxpbmVM
ZXZlbEJveCgpKSAmJiAhaXNSdWJ5VGV4dCgpICYmICghaXNUYWJsZVBhcnQoKSB8fCBpc1JlbmRl
ckJsb2NrRmxvdygpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIChzdHlsZSgp
LmNvbnRhaW5zU2l6ZSgpIHx8IHN0eWxlKCkuY29udGFpbnNTdHlsZSgpKSAmJiAoIWlzSW5saW5l
KCkgfHwgaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpKSAmJiAhaXNSdWJ5VGV4dCgpICYmICghaXNU
YWJsZVBhcnQoKSB8fCBpc1RhYmxlQ2FwdGlvbigpKSAmJiAhaXNUYWJsZSgpOworfQorCiBpbmxp
bmUgYm9vbCBSZW5kZXJFbGVtZW50OjpjcmVhdGVzR3JvdXBGb3JTdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIHN0eWxlLmhhc09wYWNpdHkoKSB8fCBzdHlsZS5o
YXNNYXNrKCkgfHwgc3R5bGUuY2xpcFBhdGgoKSB8fCBzdHlsZS5oYXNGaWx0ZXIoKSB8fCBzdHls
ZS5oYXNCYWNrZHJvcEZpbHRlcigpIHx8IHN0eWxlLmhhc0JsZW5kTW9kZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKaW5k
ZXggODA4OTlhZGU5MTZmYTFkYWI0YWRlZTU0ZDFlZjVjMmJiNjM4ZWE1My4uYWYzYjk1ZjNlZmYy
OGYxYTU5ZWU3NDMxYjYyMDE2MjAyMTA4NGQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0xOTgsNyArMTk4LDcg
QEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW4KIAogdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJv
bDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdp
ZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0CiB7Ci0gICAgaWYgKHNob3Vs
ZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCp0aGlzKSkKKyAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29u
dGFpbm1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZpZ3VyZSBvdXQgaG93IGJpZyB0
aGUgZmlsZW5hbWUgc3BhY2UgbmVlZHMgdG8gYmUgZm9yIGEgZ2l2ZW4gbnVtYmVyIG9mIGNoYXJh
Y3RlcnMKICAgICAvLyAodXNpbmcgIjAiIGFzIHRoZSBub21pbmFsIGNoYXJhY3RlcikuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCA5MDEy
Yjg4MDNmOWJhNWQ3OTUwMWU1MDJlYjI2NmEwYjY3NmY5MzExLi4wZGYxOTEwNzdmNWQ4MzIwMDFi
MTgzMDMyZGQ4YWEwZGQwMmFlYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFJlbmRlckZsZXhp
YmxlQm94Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dp
Y2FsV2lkdAogICAgICAgICBtaW5Mb2dpY2FsV2lkdGggKz0gc2Nyb2xsYmFyV2lkdGg7CiAgICAg
fTsKIAotICAgIGF1dG8gc2hvdWxkSWdub3JlRmxleEl0ZW1Db250ZW50Rm9yTG9naWNhbFdpZHRo
ID0gc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKnRoaXMpIHx8IHNob3VsZEFwcGx5SW5saW5l
U2l6ZUNvbnRhaW5tZW50KCp0aGlzKTsKKyAgICBhdXRvIHNob3VsZElnbm9yZUZsZXhJdGVtQ29u
dGVudEZvckxvZ2ljYWxXaWR0aCA9IHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkgfHwgc2hv
dWxkQXBwbHlJbmxpbmVTaXplQ29udGFpbm1lbnQoKTsKICAgICBpZiAoc2hvdWxkSWdub3JlRmxl
eEl0ZW1Db250ZW50Rm9yTG9naWNhbFdpZHRoKSB7CiAgICAgICAgIGFkZFNjcm9sbGJhcldpZHRo
KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI1Niw3ICsyNTYsNyBAQCBMYXlvdXRVbml0IFJlbmRl
ckZsZXhpYmxlQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURp
cmVjdGlvbgogCiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94Ojpm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzV3JpdGluZ01vZGVSb290KCkg
fHwgbV9udW1iZXJPZkluRmxvd0NoaWxkcmVuT25GaXJzdExpbmUgPD0gMCB8fCBzaG91bGRBcHBs
eUxheW91dENvbnRhaW5tZW50KCp0aGlzKSkKKyAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSB8
fCBtX251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZpcnN0TGluZSA8PSAwIHx8IHNob3VsZEFwcGx5
TGF5b3V0Q29udGFpbm1lbnQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4oKTsKICAgICBSZW5kZXJCb3gqIGJhc2VsaW5lQ2hpbGQgPSBudWxscHRyOwogICAgIGlu
dCBjaGlsZE51bWJlciA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAK
aW5kZXggMjJlOTgxODg5ZTdiMWEzNDA0Njg5YWY0MDhkZmUxOGU0OGVmZjIwMC4uNzdiMTQwNjdi
M2NlYTEyMjczY2NjNjE3OTIxN2Q5ZDI1MTQ4MTBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6bGF5
b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgICAgICAvLyBs
b2dpY2FsIHdpZHRoIGlzIGFsd2F5cyBkZWZpbml0ZSBhcyB0aGUgYWJvdmUgY2FsbCB0byB1cGRh
dGVMb2dpY2FsV2lkdGgoKSBwcm9wZXJseSByZXNvbHZlcyBpbnRyaW5zaWMgCiAgICAgICAgIC8v
IHNpemVzLiBXZSBjYW5ub3QgZG8gdGhlIHNhbWUgZm9yIGhlaWdodHMgdGhvdWdoIGJlY2F1c2Ug
bWFueSBjb2RlIHBhdGhzIGluc2lkZSB1cGRhdGVMb2dpY2FsSGVpZ2h0KCkgcmVxdWlyZSAKICAg
ICAgICAgLy8gYSBwcmV2aW91cyBjYWxsIHRvIHNldExvZ2ljYWxIZWlnaHQoKSB0byByZXNvbHZl
IGhlaWdodHMgcHJvcGVybHkgKGxpa2UgZm9yIHBvc2l0aW9uZWQgaXRlbXMgZm9yIGV4YW1wbGUp
LgotICAgICAgICBhdXRvIHNob3VsZElnbm9yZUdyaWRJdGVtQ29udGVudEZvckxvZ2ljYWxXaWR0
aCA9IHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCp0aGlzKSB8fCBzaG91bGRBcHBseUlubGlu
ZVNpemVDb250YWlubWVudCgqdGhpcyk7CisgICAgICAgIGF1dG8gc2hvdWxkSWdub3JlR3JpZEl0
ZW1Db250ZW50Rm9yTG9naWNhbFdpZHRoID0gc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSB8
fCBzaG91bGRBcHBseUlubGluZVNpemVDb250YWlubWVudCgpOwogICAgICAgICBpZiAoc2hvdWxk
SWdub3JlR3JpZEl0ZW1Db250ZW50Rm9yTG9naWNhbFdpZHRoKQogICAgICAgICAgICAgY29tcHV0
ZVRyYWNrU2l6ZXNGb3JJbmRlZmluaXRlU2l6ZShtX3RyYWNrU2l6aW5nQWxnb3JpdGhtLCBGb3JD
b2x1bW5zKTsKICAgICAgICAgZWxzZQpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgUmVuZGVyR3Jp
ZDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgICAg
ICBib29sIHNob3VsZFJlY29tcHV0ZUhlaWdodCA9IGZhbHNlOwogICAgICAgICBpZiAoIWhhc0Rl
ZmluaXRlTG9naWNhbEhlaWdodCkgewogICAgICAgICAgICAgY29tcHV0ZVRyYWNrU2l6ZXNGb3JJ
bmRlZmluaXRlU2l6ZShtX3RyYWNrU2l6aW5nQWxnb3JpdGhtLCBGb3JSb3dzKTsKLSAgICAgICAg
ICAgIGlmIChzaG91bGRBcHBseVNpemVDb250YWlubWVudCgqdGhpcykpCisgICAgICAgICAgICBp
ZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkKICAgICAgICAgICAgICAgICBzaG91bGRS
ZWNvbXB1dGVIZWlnaHQgPSB0cnVlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGNvbXB1
dGVUcmFja1NpemVzRm9yRGVmaW5pdGVTaXplKEZvclJvd3MsIGF2YWlsYWJsZUxvZ2ljYWxIZWln
aHQoRXhjbHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpKTsKQEAgLTY0Myw3ICs2NDMsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+IFJlbmRlckdyaWQ6OmNvbXB1dGVFbXB0
eVRyYWNrc0ZvckF1dG9SZXBlYQogICAgIHVuc2lnbmVkIGZpcnN0QXV0b1JlcGVhdFRyYWNrID0g
aW5zZXJ0aW9uUG9pbnQgKyBncmlkLmV4cGxpY2l0R3JpZFN0YXJ0KGRpcmVjdGlvbik7CiAgICAg
dW5zaWduZWQgbGFzdEF1dG9SZXBlYXRUcmFjayA9IGZpcnN0QXV0b1JlcGVhdFRyYWNrICsgZ3Jp
ZC5hdXRvUmVwZWF0VHJhY2tzKGRpcmVjdGlvbik7CiAKLSAgICBpZiAoIWdyaWQuaGFzR3JpZEl0
ZW1zKCkgfHwgc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKnRoaXMpIHx8IHNob3VsZEFwcGx5
SW5saW5lU2l6ZUNvbnRhaW5tZW50KCp0aGlzKSkgeworICAgIGlmICghZ3JpZC5oYXNHcmlkSXRl
bXMoKSB8fCBzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpIHx8IHNob3VsZEFwcGx5SW5saW5l
U2l6ZUNvbnRhaW5tZW50KCkpIHsKICAgICAgICAgZW1wdHlUcmFja0luZGV4ZXMgPSBtYWtlVW5p
cXVlPE9yZGVyZWRUcmFja0luZGV4U2V0PigpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIHRyYWNr
SW5kZXggPSBmaXJzdEF1dG9SZXBlYXRUcmFjazsgdHJhY2tJbmRleCA8IGxhc3RBdXRvUmVwZWF0
VHJhY2s7ICsrdHJhY2tJbmRleCkKICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzLT5hZGQo
dHJhY2tJbmRleCk7CkBAIC0xNDMzLDcgKzE0MzMsNyBAQCBMYXlvdXRVbml0IFJlbmRlckdyaWQ6
OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBk
aQogCiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3QKIHsKLSAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSB8fCAhbV9ncmlkLmhh
c0dyaWRJdGVtcygpIHx8IHNob3VsZEFwcGx5TGF5b3V0Q29udGFpbm1lbnQoKnRoaXMpKQorICAg
IGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpIHx8ICFtX2dyaWQuaGFzR3JpZEl0ZW1zKCkgfHwgc2hv
dWxkQXBwbHlMYXlvdXRDb250YWlubWVudCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgY29uc3QgUmVuZGVyQm94KiBiYXNlbGluZUNoaWxkID0gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDhmODM5NWI0N2Q0YzExYjM2
YjU5MjYxODI2N2YwNDNmZmNkNDhiZGIuLjVkYTAwMDljZmQ2ZmI5NzgyZmM2OTdjOTcxNmFkMmQw
ZDhlM2QxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAt
ODU4LDcgKzg1OCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmxheW91dFNoYWRvd0NvbnRlbnQoY29u
c3QgTGF5b3V0U2l6ZSYgb2xkU2l6ZSkKIAogdm9pZCBSZW5kZXJJbWFnZTo6Y29tcHV0ZUludHJp
bnNpY1JhdGlvSW5mb3JtYXRpb24oRmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLCBkb3VibGUmIGlu
dHJpbnNpY1JhdGlvKSBjb25zdAogewotICAgIEFTU0VSVCghc2hvdWxkQXBwbHlTaXplQ29udGFp
bm1lbnQoKnRoaXMpKTsKKyAgICBBU1NFUlQoIXNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkp
OwogICAgIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlvbihp
bnRyaW5zaWNTaXplLCBpbnRyaW5zaWNSYXRpbyk7CiAKICAgICAvLyBPdXIgaW50cmluc2ljU2l6
ZSBpcyBlbXB0eSBpZiB3ZSdyZSByZW5kZXJpbmcgZ2VuZXJhdGVkIGltYWdlcyB3aXRoIHJlbGF0
aXZlIHdpZHRoL2hlaWdodC4gRmlndXJlIG91dCB0aGUgcmlnaHQgaW50cmluc2ljIHNpemUgdG8g
dXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4IDQzYmQwNmJl
Y2E1MDUxMjE2NmVmMTI2M2UzZGFkNmYzNTgwNGRhMGEuLjAzZGQzODQ4YmQ3NmU2ZjQ5YTlkY2Zh
OTkwOGE5YTJlYTdkZTQ5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBtYXlBZmZlY3RMYXlvdXQo
KSBjb25zdDsKIAotICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGlzSW5GbG93UG9zaXRpb25lZCgpIHx8IGNyZWF0ZXNHcm91cCgpIHx8IGhhc0NsaXBQYXRo
KCkgfHwgc2hvdWxkQXBwbHlQYWludENvbnRhaW5tZW50KCp0aGlzKSB8fCB3aWxsQ2hhbmdlQ3Jl
YXRlc1N0YWNraW5nQ29udGV4dCgpIHx8IGhhc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbnMo
KTsgfQorICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGlz
SW5GbG93UG9zaXRpb25lZCgpIHx8IGNyZWF0ZXNHcm91cCgpIHx8IGhhc0NsaXBQYXRoKCkgfHwg
c2hvdWxkQXBwbHlQYWludENvbnRhaW5tZW50KCkgfHwgd2lsbENoYW5nZUNyZWF0ZXNTdGFja2lu
Z0NvbnRleHQoKSB8fCBoYXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25zKCk7IH0KIAogcHJv
dGVjdGVkOgogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA5YjQwNzgyMWViOGFhOWQ3ZWEzYmM1
ZGI3MTE1ZWQ4NWJmYWI3Nzk0Li5jYTViNjc2ZWQyNzY5MmQxZWU5YzdjOTBlMTkzOGI3NWIyMDU0
MTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTU2Myw3
ICs1NjMsNyBAQCBzdGF0aWMgYm9vbCBjYW5DcmVhdGVTdGFja2luZ0NvbnRleHQoY29uc3QgUmVu
ZGVyTGF5ZXImIGxheWVyKQogICAgICAgICB8fCByZW5kZXJlci5pc1Bvc2l0aW9uZWQoKSAvLyBO
b3RlIHRoYXQgdGhpcyBvbmx5IGNyZWF0ZXMgc3RhY2tpbmcgY29udGV4dCBpbiBjb25qdW5jdGlv
biB3aXRoIGV4cGxpY2l0IHotaW5kZXguCiAgICAgICAgIHx8IHJlbmRlcmVyLmhhc1JlZmxlY3Rp
b24oKQogICAgICAgICB8fCByZW5kZXJlci5zdHlsZSgpLmhhc0lzb2xhdGlvbigpCi0gICAgICAg
IHx8IHNob3VsZEFwcGx5UGFpbnRDb250YWlubWVudChyZW5kZXJlcikKKyAgICAgICAgfHwgcmVu
ZGVyZXIuc2hvdWxkQXBwbHlQYWludENvbnRhaW5tZW50KCkKICAgICAgICAgfHwgIXJlbmRlcmVy
LnN0eWxlKCkuaGFzQXV0b1VzZWRaSW5kZXgoKQogICAgICAgICB8fCAocmVuZGVyZXIuc3R5bGUo
KS53aWxsQ2hhbmdlKCkgJiYgcmVuZGVyZXIuc3R5bGUoKS53aWxsQ2hhbmdlKCktPmNhbkNyZWF0
ZVN0YWNraW5nQ29udGV4dCgpKQogICAgICAgICB8fCBsYXllci5lc3RhYmxpc2hlc1RvcExheWVy
KCk7CkBAIC01OTUsNyArNTk1LDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6c2hvdWxkQmVOb3JtYWxG
bG93T25seSgpIGNvbnN0CiAKIGJvb2wgUmVuZGVyTGF5ZXI6OnNob3VsZEJlQ1NTU3RhY2tpbmdD
b250ZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gIXJlbmRlcmVyKCkuc3R5bGUoKS5oYXNBdXRv
VXNlZFpJbmRleCgpIHx8IHNob3VsZEFwcGx5UGFpbnRDb250YWlubWVudChyZW5kZXJlcigpKSB8
fCBpc1JlbmRlclZpZXdMYXllcigpOworICAgIHJldHVybiAhcmVuZGVyZXIoKS5zdHlsZSgpLmhh
c0F1dG9Vc2VkWkluZGV4KCkgfHwgcmVuZGVyZXIoKS5zaG91bGRBcHBseVBhaW50Q29udGFpbm1l
bnQoKSB8fCBpc1JlbmRlclZpZXdMYXllcigpOwogfQogCiBib29sIFJlbmRlckxheWVyOjpzZXRJ
c05vcm1hbEZsb3dPbmx5KGJvb2wgaXNOb3JtYWxGbG93T25seSkKQEAgLTExMDAsNyArMTEwMCw3
IEBAIExheW91dFJlY3QgUmVuZGVyTGF5ZXI6OnJlcGFpbnRSZWN0SW5jbHVkaW5nTm9uQ29tcG9z
aXRpbmdEZXNjZW5kYW50cygpIGNvbnN0CiB2b2lkIFJlbmRlckxheWVyOjpzZXRBbmNlc3RvckNo
YWluSGFzU2VsZlBhaW50aW5nTGF5ZXJEZXNjZW5kYW50KCkKIHsKICAgICBmb3IgKFJlbmRlckxh
eWVyKiBsYXllciA9IHRoaXM7IGxheWVyOyBsYXllciA9IGxheWVyLT5wYXJlbnQoKSkgewotICAg
ICAgICBpZiAoc2hvdWxkQXBwbHlQYWludENvbnRhaW5tZW50KHJlbmRlcmVyKCkpKSB7CisgICAg
ICAgIGlmIChyZW5kZXJlcigpLnNob3VsZEFwcGx5UGFpbnRDb250YWlubWVudCgpKSB7CiAgICAg
ICAgICAgICBtX2hhc1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudCA9IHRydWU7CiAgICAgICAg
ICAgICBtX2hhc1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudERpcnR5ID0gZmFsc2U7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTE1MjMsNyArMTUyMyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRp
cnR5QW5jZXN0b3JDaGFpblZpc2libGVEZXNjZW5kYW50U3RhdHVzKCkKIHZvaWQgUmVuZGVyTGF5
ZXI6OnNldEFuY2VzdG9yQ2hhaW5IYXNWaXNpYmxlRGVzY2VuZGFudCgpCiB7CiAgICAgZm9yIChh
dXRvKiBsYXllciA9IHRoaXM7IGxheWVyOyBsYXllciA9IGxheWVyLT5wYXJlbnQoKSkgewotICAg
ICAgICBpZiAoc2hvdWxkQXBwbHlQYWludENvbnRhaW5tZW50KHJlbmRlcmVyKCkpKSB7CisgICAg
ICAgIGlmIChyZW5kZXJlcigpLnNob3VsZEFwcGx5UGFpbnRDb250YWlubWVudCgpKSB7CiAgICAg
ICAgICAgICBtX2hhc1Zpc2libGVEZXNjZW5kYW50ID0gdHJ1ZTsKICAgICAgICAgICAgIG1fdmlz
aWJsZURlc2NlbmRhbnRTdGF0dXNEaXJ0eSA9IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC00NjUyLDcgKzQ2NTIsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMo
Y29uc3QgQ2xpcFJlY3RzQ29udGV4dCYgY2xpcFJlY3RzQ29udGV4dCwgQwogICAgICAgICAgICAg
Y2xpcFJlY3RzLnNldE92ZXJmbG93Q2xpcFJlY3QoaW50ZXJzZWN0aW9uKG5ld092ZXJmbG93Q2xp
cCwgY2xpcFJlY3RzLm92ZXJmbG93Q2xpcFJlY3QoKSkpOwogICAgICAgICAgICAgaWYgKHJlbmRl
cmVyKCkuaXNQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICAgICAgY2xpcFJlY3RzLnNldFBvc0Ns
aXBSZWN0KGludGVyc2VjdGlvbihuZXdPdmVyZmxvd0NsaXAsIGNsaXBSZWN0cy5wb3NDbGlwUmVj
dCgpKSk7Ci0gICAgICAgICAgICBpZiAoc2hvdWxkQXBwbHlQYWludENvbnRhaW5tZW50KHJlbmRl
cmVyKCkpKSB7CisgICAgICAgICAgICBpZiAocmVuZGVyZXIoKS5zaG91bGRBcHBseVBhaW50Q29u
dGFpbm1lbnQoKSkgewogICAgICAgICAgICAgICAgIGNsaXBSZWN0cy5zZXRQb3NDbGlwUmVjdChp
bnRlcnNlY3Rpb24obmV3T3ZlcmZsb3dDbGlwLCBjbGlwUmVjdHMucG9zQ2xpcFJlY3QoKSkpOwog
ICAgICAgICAgICAgICAgIGNsaXBSZWN0cy5zZXRGaXhlZENsaXBSZWN0KGludGVyc2VjdGlvbihu
ZXdPdmVyZmxvd0NsaXAsIGNsaXBSZWN0cy5maXhlZENsaXBSZWN0KCkpKTsKICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCBkMGQ1
MDE3OTZmOTM4ZWIxYzhlZWUxM2Q3Njk5YTgzNTM2NzdhN2JlLi5hNjExYWE5MTRkNmE4M2U1N2Mw
N2ViYzY0OTFiZjY5N2MwYzAwZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwCkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpzY3Jv
bGxUb1JldmVhbFNlbGVjdGlvbigpCiAKIHZvaWQgUmVuZGVyTGlzdEJveDo6Y29tcHV0ZUludHJp
bnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0
JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0CiB7Ci0gICAgbWF4TG9naWNhbFdpZHRoID0gc2hvdWxk
QXBwbHlTaXplQ29udGFpbm1lbnQoKnRoaXMpID8gMiAqIG9wdGlvbnNTcGFjaW5nSG9yaXpvbnRh
bCA6IG1fb3B0aW9uc1dpZHRoICsgMiAqIG9wdGlvbnNTcGFjaW5nSG9yaXpvbnRhbDsKKyAgICBt
YXhMb2dpY2FsV2lkdGggPSBzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpID8gMiAqIG9wdGlv
bnNTcGFjaW5nSG9yaXpvbnRhbCA6IG1fb3B0aW9uc1dpZHRoICsgMiAqIG9wdGlvbnNTcGFjaW5n
SG9yaXpvbnRhbDsKICAgICBpZiAobV92QmFyKQogICAgICAgICBtYXhMb2dpY2FsV2lkdGggKz0g
bV92QmFyLT53aWR0aCgpOwogICAgIGlmICghc3R5bGUoKS53aWR0aCgpLmlzUGVyY2VudE9yQ2Fs
Y3VsYXRlZCgpKQpAQCAtMjcxLDcgKzI3MSw3IEBAIFJlbmRlckJveDo6TG9naWNhbEV4dGVudENv
bXB1dGVkVmFsdWVzIFJlbmRlckxpc3RCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91CiBM
YXlvdXRVbml0IFJlbmRlckxpc3RCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJh
c2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rp
b24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICBhdXRv
IGJhc2VsaW5lID0gUmVuZGVyQm94OjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmly
c3RMaW5lLCBsaW5lRGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKTsKLSAgICBpZiAoIXNob3Vs
ZEFwcGx5TGF5b3V0Q29udGFpbm1lbnQoKnRoaXMpKQorICAgIGlmICghc2hvdWxkQXBwbHlMYXlv
dXRDb250YWlubWVudCgpKQogICAgICAgICBiYXNlbGluZSAtPSBiYXNlbGluZUFkanVzdG1lbnQ7
CiAgICAgcmV0dXJuIGJhc2VsaW5lOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5jcHAKaW5kZXggMDFjNTk2NjE2ZmRkYjNjZmExNGMyOTU1NGQ3ZTVhMjc2NTll
N2UxZi4uYjk5OTJmNWM5NDIzZWZlNDg3YWZjMjc3NzQ3ZjA2MGY3NGE2OTM2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0zMTcsNyArMzE3LDcg
QEAgTGF5b3V0UmVjdCBSZW5kZXJNZW51TGlzdDo6Y29udHJvbENsaXBSZWN0KGNvbnN0IExheW91
dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0KQogCiB2b2lkIFJlbmRlck1lbnVMaXN0Ojpjb21wdXRl
SW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91
dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3QKIHsKLSAgICBtYXhMb2dpY2FsV2lkdGggPSBz
aG91bGRBcHBseVNpemVDb250YWlubWVudCgqdGhpcykgPyB0aGVtZSgpLm1pbmltdW1NZW51TGlz
dFNpemUoc3R5bGUoKSkgOiBzdGQ6Om1heChtX29wdGlvbnNXaWR0aCwgdGhlbWUoKS5taW5pbXVt
TWVudUxpc3RTaXplKHN0eWxlKCkpKTsKKyAgICBtYXhMb2dpY2FsV2lkdGggPSBzaG91bGRBcHBs
eVNpemVDb250YWlubWVudCgpID8gdGhlbWUoKS5taW5pbXVtTWVudUxpc3RTaXplKHN0eWxlKCkp
IDogc3RkOjptYXgobV9vcHRpb25zV2lkdGgsIHRoZW1lKCkubWluaW11bU1lbnVMaXN0U2l6ZShz
dHlsZSgpKSk7CiAgICAgbWF4TG9naWNhbFdpZHRoICs9IG1faW5uZXJCbG9jay0+cGFkZGluZ0xl
ZnQoKSArIG1faW5uZXJCbG9jay0+cGFkZGluZ1JpZ2h0KCk7CiAgICAgaWYgKCFzdHlsZSgpLndp
ZHRoKCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9
IG1heExvZ2ljYWxXaWR0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKaW5kZXggNjE5MTFjOGFjNjYyZmMzYzIzYTkzNTY1NmQ4ODE4ZWZjYzZjOWQ4Mi4uOGJkOGMw
YzIzZmM1MDcyZThhZWY0OTM0NTM4YTI5YmY2OThlMmM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgb2JqZWN0SXNSZWxheW91dEJvdW5kYXJ5KGNvbnN0IFJlbmRlckVsZW1lbnQqIG9iamVj
dCkKICAgICBpZiAob2JqZWN0LT5pc1RleHRDb250cm9sKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgaWYgKHNob3VsZEFwcGx5TGF5b3V0Q29udGFpbm1lbnQoKm9iamVjdCkgJiYgc2hv
dWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKm9iamVjdCkpCisgICAgaWYgKG9iamVjdC0+c2hvdWxk
QXBwbHlMYXlvdXRDb250YWlubWVudCgpICYmIG9iamVjdC0+c2hvdWxkQXBwbHlTaXplQ29udGFp
bm1lbnQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAob2JqZWN0LT5pc1NWR1Jv
b3RPckxlZ2FjeVNWR1Jvb3QoKSkKQEAgLTI2MTYsNDAgKzI2MTYsMyBAQCB2b2lkIHNob3dSZW5k
ZXJUcmVlKGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCogb2JqZWN0KQogfQogCiAjZW5kaWYK
LQotYm9vbCBXZWJDb3JlOjpzaG91bGRBcHBseUxheW91dENvbnRhaW5tZW50KGNvbnN0IFdlYkNv
cmU6OlJlbmRlck9iamVjdCYgcmVuZGVyZXIpCi17Ci0gICAgcmV0dXJuIHJlbmRlcmVyLnN0eWxl
KCkuY29udGFpbnNMYXlvdXQoKSAmJiAoIXJlbmRlcmVyLmlzSW5saW5lKCkgfHwgcmVuZGVyZXIu
aXNBdG9taWNJbmxpbmVMZXZlbEJveCgpKSAmJiAhcmVuZGVyZXIuaXNSdWJ5VGV4dCgpICYmICgh
cmVuZGVyZXIuaXNUYWJsZVBhcnQoKSB8fCByZW5kZXJlci5pc1JlbmRlckJsb2NrRmxvdygpKTsK
LX0KLQotYm9vbCBXZWJDb3JlOjpzaG91bGRBcHBseVNpemVDb250YWlubWVudChjb25zdCBXZWJD
b3JlOjpSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQotewotICAgIHJldHVybiByZW5kZXJlci5zdHls
ZSgpLmNvbnRhaW5zU2l6ZSgpICYmICghcmVuZGVyZXIuaXNJbmxpbmUoKSB8fCByZW5kZXJlci5p
c0F0b21pY0lubGluZUxldmVsQm94KCkpICYmICFyZW5kZXJlci5pc1J1YnlUZXh0KCkgJiYgKCFy
ZW5kZXJlci5pc1RhYmxlUGFydCgpIHx8IHJlbmRlcmVyLmlzVGFibGVDYXB0aW9uKCkpICYmICFy
ZW5kZXJlci5pc1RhYmxlKCk7Ci19Ci0KLWJvb2wgV2ViQ29yZTo6c2hvdWxkQXBwbHlJbmxpbmVT
aXplQ29udGFpbm1lbnQoY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0JiByZW5kZXJlcikKLXsK
LSAgICByZXR1cm4gcmVuZGVyZXIuc3R5bGUoKS5lZmZlY3RpdmVDb250YWlubWVudCgpLmNvbnRh
aW5zKENvbnRhaW5tZW50OjpJbmxpbmVTaXplKSAmJiAoIXJlbmRlcmVyLmlzSW5saW5lKCkgfHwg
cmVuZGVyZXIuaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpKSAmJiAhcmVuZGVyZXIuaXNSdWJ5VGV4
dCgpICYmICghcmVuZGVyZXIuaXNUYWJsZVBhcnQoKSB8fCByZW5kZXJlci5pc1RhYmxlQ2FwdGlv
bigpKSAmJiAhcmVuZGVyZXIuaXNUYWJsZSgpOwotfQotCi1ib29sIFdlYkNvcmU6OnNob3VsZEFw
cGx5U3R5bGVDb250YWlubWVudChjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QmIHJlbmRlcmVy
KQotewotICAgIGlmICghcmVuZGVyZXIuc3R5bGUoKS5jb250YWluc1N0eWxlKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gKCFyZW5kZXJlci5pc0lubGluZSgpIHx8IHJlbmRl
cmVyLmlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSkgJiYgIXJlbmRlcmVyLmlzUnVieVRleHQoKSAm
JiAoIXJlbmRlcmVyLmlzVGFibGVQYXJ0KCkgfHwgcmVuZGVyZXIuaXNUYWJsZUNhcHRpb24oKSkg
JiYgIXJlbmRlcmVyLmlzVGFibGUoKTsKLX0KLQotYm9vbCBXZWJDb3JlOjpzaG91bGRBcHBseVBh
aW50Q29udGFpbm1lbnQoY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0JiByZW5kZXJlcikKLXsK
LSAgICByZXR1cm4gcmVuZGVyZXIuc3R5bGUoKS5jb250YWluc1BhaW50KCkgJiYgKCFyZW5kZXJl
ci5pc0lubGluZSgpIHx8IHJlbmRlcmVyLmlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSkgJiYgIXJl
bmRlcmVyLmlzUnVieVRleHQoKSAmJiAoIXJlbmRlcmVyLmlzVGFibGVQYXJ0KCkgfHwgcmVuZGVy
ZXIuaXNSZW5kZXJCbG9ja0Zsb3coKSk7Ci19Ci0KLWJvb2wgV2ViQ29yZTo6c2hvdWxkQXBwbHlB
bnlDb250YWlubWVudChjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQotewot
ICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLmVmZmVjdGl2ZUNvbnRhaW5tZW50KCkuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKChyZW5kZXJlci5zdHlsZSgpLmNvbnRh
aW5zTGF5b3V0KCkgfHwgcmVuZGVyZXIuc3R5bGUoKS5jb250YWluc1BhaW50KCkpICYmICghcmVu
ZGVyZXIuaXNJbmxpbmUoKSB8fCByZW5kZXJlci5pc0F0b21pY0lubGluZUxldmVsQm94KCkpICYm
ICFyZW5kZXJlci5pc1J1YnlUZXh0KCkgJiYgKCFyZW5kZXJlci5pc1RhYmxlUGFydCgpIHx8IHJl
bmRlcmVyLmlzUmVuZGVyQmxvY2tGbG93KCkpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBy
ZXR1cm4gKHJlbmRlcmVyLnN0eWxlKCkuY29udGFpbnNTaXplKCkgfHwgcmVuZGVyZXIuc3R5bGUo
KS5jb250YWluc1N0eWxlKCkpICYmICghcmVuZGVyZXIuaXNJbmxpbmUoKSB8fCByZW5kZXJlci5p
c0F0b21pY0lubGluZUxldmVsQm94KCkpICYmICFyZW5kZXJlci5pc1J1YnlUZXh0KCkgJiYgKCFy
ZW5kZXJlci5pc1RhYmxlUGFydCgpIHx8IHJlbmRlcmVyLmlzVGFibGVDYXB0aW9uKCkpICYmICFy
ZW5kZXJlci5pc1RhYmxlKCk7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAppbmRleCAzZjk4MzcxNmNhZTIwY2IyZmUxYWUxOTBjZmEzYzFlNTJkNjM3YzQxLi42YjUz
N2JjZThhZGM0ZmZhMjQ5Zjg0NjI5OTA5ZjQyYzk1MWYzY2RhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0xMjM0LDEzICsxMjM0LDYgQEAgdm9pZCBwcmludExh
eWVyVHJlZUZvckxpdmVEb2N1bWVudHMoKTsKIHZvaWQgcHJpbnRHcmFwaGljc0xheWVyVHJlZUZv
ckxpdmVEb2N1bWVudHMoKTsKICNlbmRpZgogCi1ib29sIHNob3VsZEFwcGx5TGF5b3V0Q29udGFp
bm1lbnQoY29uc3QgUmVuZGVyT2JqZWN0Jik7Ci1ib29sIHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5t
ZW50KGNvbnN0IFJlbmRlck9iamVjdCYpOwotYm9vbCBzaG91bGRBcHBseUlubGluZVNpemVDb250
YWlubWVudChjb25zdCBSZW5kZXJPYmplY3QmKTsKLWJvb2wgc2hvdWxkQXBwbHlTdHlsZUNvbnRh
aW5tZW50KGNvbnN0IFJlbmRlck9iamVjdCYpOwotYm9vbCBzaG91bGRBcHBseVBhaW50Q29udGFp
bm1lbnQoY29uc3QgUmVuZGVyT2JqZWN0Jik7Ci1ib29sIHNob3VsZEFwcGx5QW55Q29udGFpbm1l
bnQoY29uc3QgUmVuZGVyT2JqZWN0Jik7Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Rl
ZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoVG9WYWx1ZVR5cGVOYW1l
LCBwcmVkaWNhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwCmluZGV4IDg4YzBlZTE3MzRlODdlMDUwZjVmNDYwMmY4NTAwZDY2OTQxMzcwM2EuLmM3ZWQz
NDFkYmYxODM2NWEzNDI4MGYzODVmYTQ2NmRlMGZjZDc0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtNDEzLDcgKzQxMyw3IEBAIGJvb2wgUmVu
ZGVyUmVwbGFjZWQ6OnNldE5lZWRzTGF5b3V0SWZOZWVkZWRBZnRlckludHJpbnNpY1NpemVDaGFu
Z2UoKQogdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUFzcGVjdFJhdGlvSW5mb3JtYXRpb25G
b3JSZW5kZXJCb3goUmVuZGVyQm94KiBjb250ZW50UmVuZGVyZXIsIEZsb2F0U2l6ZSYgY29uc3Ry
YWluZWRTaXplLCBkb3VibGUmIGludHJpbnNpY1JhdGlvKSBjb25zdAogewogICAgIEZsb2F0U2l6
ZSBpbnRyaW5zaWNTaXplOwotICAgIGlmIChzaG91bGRBcHBseVNpemVDb250YWlubWVudCgqdGhp
cykpCisgICAgaWYgKHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpCiAgICAgICAgIFJlbmRl
clJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlvbihpbnRyaW5zaWNTaXpl
LCBpbnRyaW5zaWNSYXRpbyk7CiAgICAgZWxzZSBpZiAoY29udGVudFJlbmRlcmVyKSB7CiAgICAg
ICAgIGNvbnRlbnRSZW5kZXJlci0+Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oaW50
cmluc2ljU2l6ZSwgaW50cmluc2ljUmF0aW8pOwpAQCAtNTExLDcgKzUxMSw3IEBAIFJvdW5kZWRS
ZWN0IFJlbmRlclJlcGxhY2VkOjpyb3VuZGVkQ29udGVudEJveFJlY3QoKSBjb25zdAogdm9pZCBS
ZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oRmxvYXRTaXpl
JiBpbnRyaW5zaWNTaXplLCBkb3VibGUmIGludHJpbnNpY1JhdGlvKSBjb25zdAogewogICAgIC8v
IElmIHRoZXJlJ3MgYW4gZW1iZWRkZWRDb250ZW50Qm94KCkgb2YgYSByZW1vdGUsIHJlZmVyZW5j
ZWQgZG9jdW1lbnQgYXZhaWxhYmxlLCB0aGlzIGNvZGUtcGF0aCBzaG91bGQgbmV2ZXIgYmUgdXNl
ZC4KLSAgICBBU1NFUlQoIWVtYmVkZGVkQ29udGVudEJveCgpIHx8IHNob3VsZEFwcGx5U2l6ZUNv
bnRhaW5tZW50KCp0aGlzKSk7CisgICAgQVNTRVJUKCFlbWJlZGRlZENvbnRlbnRCb3goKSB8fCBz
aG91bGRBcHBseVNpemVDb250YWlubWVudCgpKTsKICAgICBpbnRyaW5zaWNTaXplID0gRmxvYXRT
aXplKGludHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkpOwog
CiAgICAgaWYgKHN0eWxlKCkuaGFzQXNwZWN0UmF0aW8oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAppbmRleCA0NDNhMTJjZmMwNDU0ZGU0MDZlZWM4Y2ZhNDk3
OGQ2OTc5NjA5NDYzLi44MmM1ODI3ZWI4MjBlM2VlYzkzOGMzMTBhNzU5NzdlZjdhMGVkN2IyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaApAQCAtNDIsNyArNDIs
NyBAQCBwdWJsaWM6CiAKICAgICBMYXlvdXRTaXplIGludHJpbnNpY1NpemUoKSBjb25zdCBmaW5h
bAogICAgIHsKLSAgICAgICAgaWYgKHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCp0aGlzKSkK
KyAgICAgICAgaWYgKHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gTGF5b3V0U2l6ZSgpOwogICAgICAgICByZXR1cm4gbV9pbnRyaW5zaWNTaXplOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKaW5kZXggOWU5NDRi
ZTAwYmIwMmUzODUxYTQzZDU2NjY2MTlmN2M0MjlhNWQ5NC4uMjE2NWIyOWQ5OThlMzA0Y2RhOTFl
Y2QyYmEzNjQwMDVkZmJlODUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNsaWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNs
aWRlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJTbGlkZXI6OmJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIC8qZmlyc3RMaW5lKi8sIExpbmUKIAogdm9p
ZCBSZW5kZXJTbGlkZXI6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQm
IG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdAogewot
ICAgIGlmIChzaG91bGRBcHBseVNpemVDb250YWlubWVudCgqdGhpcykpCisgICAgaWYgKHNob3Vs
ZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpCiAgICAgICAgIHJldHVybjsKICAgICBtYXhMb2dpY2Fs
V2lkdGggPSBkZWZhdWx0VHJhY2tMZW5ndGggKiBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKTsKICAg
ICBpZiAoIXN0eWxlKCkud2lkdGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IDU1MDdmZWViNjIyZWJjMzEzMjJm
YTlmZjZhNGEwNTdkODRlMzMxMGIuLjExMjU5YzRhMmE5MDkyZTdlN2FkOGRjNjJlYTA2OTZlNDY3
NThkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtMTUw
NSw3ICsxNTA1LDcgQEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJUYWJsZTo6Zmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdAogICAgIC8vIGRvZXNuJ3QgZGVmaW5lIHRoZSBiYXNlbGlu
ZSBvZiBhICd0YWJsZScgb25seSBhbiAnaW5saW5lLXRhYmxlJykuCiAgICAgLy8gVGhpcyBpcyBh
bHNvIG5lZWRlZCB0byBwcm9wZXJseSBkZXRlcm1pbmUgdGhlIGJhc2VsaW5lIG9mIGEgY2VsbCBp
ZiBpdCBoYXMgYSB0YWJsZSBjaGlsZC4KIAotICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpIHx8
IHNob3VsZEFwcGx5TGF5b3V0Q29udGFpbm1lbnQoKnRoaXMpKQorICAgIGlmIChpc1dyaXRpbmdN
b2RlUm9vdCgpIHx8IHNob3VsZEFwcGx5TGF5b3V0Q29udGFpbm1lbnQoKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIAogICAgIHJlY2FsY1NlY3Rpb25zSWZO
ZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
Y3BwCmluZGV4IDhhMWRhYTY3Yzc3N2RiMDZiOWFiZTk1YzViYTAxZjE1YzY5ZmJkZjcuLjNkYmU4
YTc2ODc2NjYyOTVlODRhN2IyYjRhMjI2MjkyZGZmYzM5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIGZs
b2F0IFJlbmRlclRleHRDb250cm9sOjpzY2FsZUVtVG9Vbml0cyhpbnQgeCkgY29uc3QKIAogdm9p
ZCBSZW5kZXJUZXh0Q29udHJvbDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0
VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0
CiB7Ci0gICAgaWYgKHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCp0aGlzKSkKKyAgICBpZiAo
c2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIFVz
ZSBhdmVyYWdlIGNoYXJhY3RlciB3aWR0aC4gTWF0Y2hlcyBJRS4KICAgICBtYXhMb2dpY2FsV2lk
dGggPSBwcmVmZXJyZWRDb250ZW50TG9naWNhbFdpZHRoKGNvbnN0X2Nhc3Q8UmVuZGVyVGV4dENv
bnRyb2wqPih0aGlzKS0+Z2V0QXZlcmFnZUNoYXJXaWR0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlkZW8uY3BwCmluZGV4IGRmM2JmZjdjYzQ3M2UwYmFlOGQ3NTZjNWY4YzNi
YmJiMzYzOWU0MTEuLjBkNDJlMmM1ZmU1ZDExOTQxYWZiMTM0OTRhYzU4OWU5ZDYyM2FlYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcApAQCAtMTEzLDcgKzExMyw3
IEBAIGJvb2wgUmVuZGVyVmlkZW86OnVwZGF0ZUludHJpbnNpY1NpemUoKQogCiBMYXlvdXRTaXpl
IFJlbmRlclZpZGVvOjpjYWxjdWxhdGVJbnRyaW5zaWNTaXplKCkKIHsKLSAgICBpZiAoc2hvdWxk
QXBwbHlTaXplQ29udGFpbm1lbnQoKnRoaXMpKQorICAgIGlmIChzaG91bGRBcHBseVNpemVDb250
YWlubWVudCgpKQogICAgICAgICByZXR1cm4gTGF5b3V0U2l6ZSgpOwogCiAgICAgLy8gU3BlYyB0
ZXh0IGZyb20gNC44LjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRl
eCBhYWZkOWRjZDA1NjgzOWY4NzdiOTM2NzE2YWRkYjZiYzBjZWEzYjJkLi5jNTYzODQ5MGZhY2E5
ZGM0NjhhZTZjNDg5YjMzNDExZDYyZmZjYzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCkBAIC0zMjksMTIgKzMyOSwxMiBAQCBSZW5kZXJFbGVtZW50KiBSZW5kZXJW
aWV3OjpyZW5kZXJlckZvclJvb3RCYWNrZ3JvdW5kKCkgY29uc3QKICAgICBpZiAoIWlzPEhUTUxI
dG1sRWxlbWVudD4oZG9jdW1lbnRSZW5kZXJlci5lbGVtZW50KCkpKQogICAgICAgICByZXR1cm4g
JmRvY3VtZW50UmVuZGVyZXI7CiAKLSAgICBpZiAoc2hvdWxkQXBwbHlBbnlDb250YWlubWVudChk
b2N1bWVudFJlbmRlcmVyKSkKKyAgICBpZiAoZG9jdW1lbnRSZW5kZXJlci5zaG91bGRBcHBseUFu
eUNvbnRhaW5tZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGF1dG8q
IGJvZHkgPSBkb2N1bWVudCgpLmJvZHkoKSkgewogICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIg
PSBib2R5LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBpZiAoIXNob3VsZEFwcGx5QW55Q29u
dGFpbm1lbnQoKnJlbmRlcmVyKSkKKyAgICAgICAgICAgIGlmICghcmVuZGVyZXItPnNob3VsZEFw
cGx5QW55Q29udGFpbm1lbnQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9M
ZWdhY3lSZW5kZXJTVkdSb290LmNwcAppbmRleCA0ZTBmOWZhNWFiODNjMmE1ZmMxZWU1NjI3Zjgy
M2NlY2RiNzc2MWM5Li5hYWFkZGI1ZTZmZDYxMWE5M2QwNWVhMGFjMzkwYmE3Yzk4YmQ1ZjAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1Jv
b3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZH
Um9vdC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgU1ZHU1ZHRWxlbWVudCYgTGVnYWN5UmVuZGVyU1ZH
Um9vdDo6c3ZnU1ZHRWxlbWVudCgpIGNvbnN0CiAKIHZvaWQgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6
Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oRmxvYXRTaXplJiBpbnRyaW5zaWNTaXpl
LCBkb3VibGUmIGludHJpbnNpY1JhdGlvKSBjb25zdAogewotICAgIEFTU0VSVCghc2hvdWxkQXBw
bHlTaXplQ29udGFpbm1lbnQoKnRoaXMpKTsKKyAgICBBU1NFUlQoIXNob3VsZEFwcGx5U2l6ZUNv
bnRhaW5tZW50KCkpOwogCiAgICAgLy8gU3BlYzogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2Nv
b3Jkcy5odG1sI0ludHJpbnNpY1NpemluZwogICAgIC8vIFNWRyBuZWVkcyB0byBzcGVjaWZ5IGhv
dyB0byBjYWxjdWxhdGUgc29tZSBpbnRyaW5zaWMgc2l6aW5nIHByb3BlcnRpZXMgdG8gZW5hYmxl
IGluY2x1c2lvbiB3aXRoaW4gb3RoZXIgbGFuZ3VhZ2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggMTI0ZjliNzM2OTg2ZDA1ZjRiMDdi
M2E0MzU4MjdmY2Q4MzIwODdjMy4uMzVjNjczNzBjZjJlZDgxZWIyNDRjZTcyZTc2MzIzNDk2NWU1
NGM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3Qu
Y3BwCkBAIC03NSw3ICs3NSw3IEBAIFNWR1NWR0VsZW1lbnQmIFJlbmRlclNWR1Jvb3Q6OnN2Z1NW
R0VsZW1lbnQoKSBjb25zdAogCiB2b2lkIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNS
YXRpb0luZm9ybWF0aW9uKEZsb2F0U2l6ZSYgaW50cmluc2ljU2l6ZSwgZG91YmxlJiBpbnRyaW5z
aWNSYXRpbykgY29uc3QKIHsKLSAgICBBU1NFUlQoIXNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50
KCp0aGlzKSk7CisgICAgQVNTRVJUKCFzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpKTsKIAog
ICAgIC8vIFNwZWM6IGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9jb29yZHMuaHRtbCNJbnRyaW5z
aWNTaXppbmcKICAgICAvLyBTVkcgbmVlZHMgdG8gc3BlY2lmeSBob3cgdG8gY2FsY3VsYXRlIHNv
bWUgaW50cmluc2ljIHNpemluZyBwcm9wZXJ0aWVzIHRvIGVuYWJsZSBpbmNsdXNpb24gd2l0aGlu
IG90aGVyIGxhbmd1YWdlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRh
aW5lclF1ZXJ5RXZhbHVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NvbnRhaW5lclF1
ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCBiMTVhNGY1MWFkZGVmNjgwYmQwOTQxODZlNDViODFlNjY4
NmIxMDQwLi5iZGZmM2I3Yzk4ZDE2ZTViMTE3NmVkZmY4NTgwNzY3N2E0MTIyYzA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Db250YWluZXJRdWVyeUV2YWx1YXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvQ29udGFpbmVyUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC0y
MzksMTMgKzIzOSwxMyBAQCBhdXRvIENvbnRhaW5lclF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZVNp
emVGZWF0dXJlKGNvbnN0IENROjpTaXplRmVhdHVyZSYgc2l6ZUZlYQogICAgIGF1dG8mIHJlbmRl
cmVyID0gKmNvbnRhaW5lci5yZW5kZXJlcjsKIAogICAgIGF1dG8gaGFzRWxpZ2libGVDb250YWlu
bWVudCA9IFsmXSB7Ci0gICAgICAgIGlmICghc2hvdWxkQXBwbHlMYXlvdXRDb250YWlubWVudChy
ZW5kZXJlcikpCisgICAgICAgIGlmICghcmVuZGVyZXIuc2hvdWxkQXBwbHlMYXlvdXRDb250YWlu
bWVudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBzd2l0Y2ggKHJlbmRl
cmVyLnN0eWxlKCkuY29udGFpbmVyVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQ29udGFpbmVyVHlw
ZTo6SW5saW5lU2l6ZToKLSAgICAgICAgICAgIHJldHVybiBzaG91bGRBcHBseUlubGluZVNpemVD
b250YWlubWVudChyZW5kZXJlcik7CisgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXIuc2hvdWxk
QXBwbHlJbmxpbmVTaXplQ29udGFpbm1lbnQoKTsKICAgICAgICAgY2FzZSBDb250YWluZXJUeXBl
OjpTaXplOgotICAgICAgICAgICAgcmV0dXJuIHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KHJl
bmRlcmVyKTsKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJlci5zaG91bGRBcHBseVNpemVDb250
YWlubWVudCgpOwogICAgICAgICBjYXNlIENvbnRhaW5lclR5cGU6Ok5vbmU6CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>