<?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>193671</bug_id>
          
          <creation_ts>2019-01-22 08:43:49 -0800</creation_ts>
          <short_desc>Scroll Snap broken when using RTL layout</short_desc>
          <delta_ts>2020-09-08 12:46:40 -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>Scrolling</component>
          <version>Safari 12</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 12</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=207826</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HTML5, InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Graham">webkit</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>callie.riggins</cc>
    
    <cc>charlie.croom</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>graouts</cc>
    
    <cc>graouts</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>miguel</cc>
    
    <cc>rado</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit</cc>
    
    <cc>webkit</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1496774</commentid>
    <comment_count>0</comment_count>
    <who name="Graham">webkit</who>
    <bug_when>2019-01-22 08:43:49 -0800</bug_when>
    <thetext>Hi,

The scroll-snap behavior is broken when the HTML dir attribute is set to &quot;rtl&quot;

It starts on the right-most element as expected, but despite the child elements, there are only three scroll-snap points. 
One at the right-most position of the container, 
another at the almost-left-most position (maybe 30px offset from the left-most position) of the container,
and a final one at the left-most position of the container.
So the scroll-snap behavior skips over the middle elements which is not intended.

A example of the issue can be found here: https://codepen.io/theGrahamScanlon/full/KJKrJa
Please view the example using an iOS device to successfully reproduce the issue.

The device I&apos;m running:
iPhone X (Model MQA62LL/A)
Version 12.1.2 (16C101)


This effects the three major browsers on iOS: Safari, Chrome and Firefox.


Thanks,
Graham

Please let me know if you have any questions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496931</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-22 13:22:42 -0800</bug_when>
    <thetext>&lt;rdar://problem/47457471&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575526</commentid>
    <comment_count>2</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-10-01 07:25:50 -0700</bug_when>
    <thetext>*** Bug 202377 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575603</commentid>
    <comment_count>3</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2019-10-01 11:12:10 -0700</bug_when>
    <thetext>This is impacting us at Airbnb and we&apos;ve had to disable scroll snap for our users in Safari. @simon.fraser Would it be possible to get this prioritized? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619574</commentid>
    <comment_count>4</comment_count>
      <attachid>390899</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-02-16 21:28:44 -0800</bug_when>
    <thetext>Created attachment 390899
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641387</commentid>
    <comment_count>5</comment_count>
    <who name="Rado">rado</who>
    <bug_when>2020-04-14 08:50:57 -0700</bug_when>
    <thetext>Just encountered this shocking bug. Please fix it, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656112</commentid>
    <comment_count>6</comment_count>
    <who name="Charlie Croom">charlie.croom</who>
    <bug_when>2020-05-26 11:47:47 -0700</bug_when>
    <thetext>Wanted to add in that Twitter is exploring replacing a lot of our currently JS-heavy code with native web solutions including scrollSnap. However, the lack of support internationally means that scrollSnap is effectively not implemented in Safari, so we will also have to weigh disabling it or polyfillying.

Would be great to get some of these really critical bugs fixed! Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656274</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-05-26 20:07:49 -0700</bug_when>
    <thetext>(In reply to Charlie Croom from comment #6)
&gt; Wanted to add in that Twitter is exploring replacing a lot of our currently
&gt; JS-heavy code with native web solutions including scrollSnap. However, the
&gt; lack of support internationally means that scrollSnap is effectively not
&gt; implemented in Safari, so we will also have to weigh disabling it or
&gt; polyfillying.
&gt; 
&gt; Would be great to get some of these really critical bugs fixed! Thanks!

I would love to get Scroll Snap into proper shape. I’ll see if Wenson and I can take another look soon.

Thank you for reaching out to help me gauge priority/interest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670057</commentid>
    <comment_count>8</comment_count>
      <attachid>403854</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-07-09 03:03:15 -0700</bug_when>
    <thetext>Created attachment 403854
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675059</commentid>
    <comment_count>9</comment_count>
      <attachid>405241</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-07-25 22:23:23 -0700</bug_when>
    <thetext>Created attachment 405241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675150</commentid>
    <comment_count>10</comment_count>
      <attachid>405241</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-07-26 16:58:08 -0700</bug_when>
    <thetext>Comment on attachment 405241
Patch

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

&gt; Source/WebCore/page/scrolling/AxisScrollSnapOffsets.cpp:59
&gt; +static LayoutUnit computeScrollSnapAlignOffset(LayoutUnit minLocation, LayoutUnit maxLocation, ScrollSnapAxisAlignType alignment, bool isRTL)

Nit - it seems a bit confusing that isRTL is false when computing offsets in the y-axis, even though we could be in RTL. What do you think about `isFlipped`, or `startsAtMaxLocation`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675153</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-07-26 19:04:22 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/264908/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686682</commentid>
    <comment_count>12</comment_count>
    <who name="Rado">rado</who>
    <bug_when>2020-09-08 12:42:32 -0700</bug_when>
    <thetext>Thanks for fixing it in Safari 14. Now RTL scroll snap doesn&apos;t work when embedded inside a RTL scroll snap item, unlike Chrome and FF. Please fix that too. Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686685</commentid>
    <comment_count>13</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-09-08 12:46:40 -0700</bug_when>
    <thetext>Could you file a dedicated bug for this specific issue, ideally with a test? This would help towards writing a fix. Thank you.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390899</attachid>
            <date>2020-02-16 21:28:44 -0800</date>
            <delta_ts>2020-07-09 03:03:13 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-193671-20200216212843.patch</filename>
            <type>text/plain</type>
            <size>23329</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjk4MzI3YjY1YTA0YjFh
OGM5ZGNhYTVhYWRlZjgyOGI0NDgxNTM5My4uODI3NjIyM2U3YjI1YzA4YWYzYzQ3ODhmN2FlZWQz
YzY3ZTYzODM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTAyLTE2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFNjcm9sbCBTbmFw
IGJyb2tlbiBvbiBpT1Mgd2hlbiB1c2luZyBSVEwgbGF5b3V0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2NzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsaW5nTm9k
ZVNjcm9sbGFibGVBcmVhR2VvbWV0cnkpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0F4aXNT
Y3JvbGxTbmFwT2Zmc2V0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVTbmFwT2Zmc2V0
c0ZvclNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNjcm9sbE9mZnNldCBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3I6OnVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvck9mZnNldCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsT2Zmc2V0IGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxUeXBlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnNldEFjdGl2ZVNjcm9sbFNuYXBJ
bmRpY2VzRm9yT2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5p
bWF0b3JTdGF0ZS5oOgorCiAyMDIwLTAyLTE1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW0xGQ10gSW50cm9kdWNlIE91dE9mRmxvd0hvcml6b250YWxDb25zdHJh
aW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBlMWQ4Mzc1NzBjYWVmNGM1MTZjNjM3NjA3YTVjOTBmNDA3MjA2YWJl
Li5iZTAyM2QyOWVhMWY4MjkzN2IyOTNmMGE2MTNjY2RiN2MwYTlmZWYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDIwLTAyLTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFNjcm9sbCBTbmFwIGJyb2tlbiBvbiBpT1Mgd2hlbiB1c2luZyBS
VEwgbGF5b3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTM2NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzXSk6CisgICAgICAgICogVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eTo6c2hvdWxkU25hcEZvck1haW5GcmFtZVNjcm9sbGluZyBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zm
c2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6aGFzQWN0aXZlU25hcFBvaW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6bmVhcmVzdEFj
dGl2ZUNvbnRlbnRJbnNldEFkanVzdGVkU25hcE9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6Om5lYXJlc3RBY3RpdmVDb250ZW50
SW5zZXRBZGp1c3RlZFNuYXBQb2ludCBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMDItMTQgIENv
bW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIyNTY2MzMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IGQ1Nzk3
YmE3ODIzZDlkN2NkZDFiODk0ZGI4M2Q3MThjOWNlNzM3NWIuLjIyMmIzN2Q0ZjNkYTA1MThmNjFi
NWY1N2ZjOTFkYTdiMzI4ZDhhOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02NjMsNiAr
NjYzLDggQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRGcmFtZVNjcm9sbGlu
Z05vZGVTdGF0ZShTY3JvbGxpbmdOb2RlSUQgbm9kZUkKIAogdm9pZCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjpzZXRTY3JvbGxpbmdOb2RlU2Nyb2xsYWJsZUFyZWFHZW9tZXRyeShTY3JvbGxp
bmdOb2RlSUQgbm9kZUlELCBTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7CisgICAg
TE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpzZXRTY3JvbGxpbmdOb2RlU2Nyb2xsYWJsZUFyZWFHZW9tZXRyeSBub2RlICIgPDwg
bm9kZUlEKTsKKwogICAgIGF1dG8qIHN0YXRlTm9kZSA9IG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5z
dGF0ZU5vZGVGb3JJRChub2RlSUQpOwogICAgIEFTU0VSVChzdGF0ZU5vZGUpOwogICAgIGlmICgh
c3RhdGVOb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhp
c1Njcm9sbFNuYXBPZmZzZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4
aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKaW5kZXggZDI2Y2VmZTRmMjAyMzZjN2M0M2FjNWUyNWVl
NzE2ZWRkNTQwZTEwZi4uM2UxMDVjNzk1M2M3ZTVkN2NiNGNiN2NiOTUwOTFjZmVkMGUxOTY0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBP
ZmZzZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xs
U25hcE9mZnNldHMuY3BwCkBAIC0yMTMsOCArMjEzLDkgQEAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0
c0ZvclNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgSFRNTEVs
ZW0KICAgICBIYXNoU2V0PGZsb2F0PiBzZWVuSG9yaXpvbnRhbFNuYXBPZmZzZXRzOwogICAgIGJv
b2wgaGFzSG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gc2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3Jv
bGxTbmFwQXhpczo6Qm90aCB8fCBzY3JvbGxTbmFwVHlwZS5heGlzID09IFNjcm9sbFNuYXBBeGlz
OjpYQXhpcyB8fCBzY3JvbGxTbmFwVHlwZS5heGlzID09IFNjcm9sbFNuYXBBeGlzOjpJbmxpbmU7
CiAgICAgYm9vbCBoYXNWZXJ0aWNhbFNuYXBPZmZzZXRzID0gc2Nyb2xsU25hcFR5cGUuYXhpcyA9
PSBTY3JvbGxTbmFwQXhpczo6Qm90aCB8fCBzY3JvbGxTbmFwVHlwZS5heGlzID09IFNjcm9sbFNu
YXBBeGlzOjpZQXhpcyB8fCBzY3JvbGxTbmFwVHlwZS5heGlzID09IFNjcm9sbFNuYXBBeGlzOjpC
bG9jazsKLSAgICBhdXRvIG1heFNjcm9sbExlZnQgPSBzY3JvbGxpbmdFbGVtZW50Qm94LnNjcm9s
bFdpZHRoKCkgLSBzY3JvbGxpbmdFbGVtZW50Qm94LmNvbnRlbnRXaWR0aCgpOwotICAgIGF1dG8g
bWF4U2Nyb2xsVG9wID0gc2Nyb2xsaW5nRWxlbWVudEJveC5zY3JvbGxIZWlnaHQoKSAtIHNjcm9s
bGluZ0VsZW1lbnRCb3guY29udGVudEhlaWdodCgpOworCisgICAgYXV0byBtYXhTY3JvbGxPZmZz
ZXQgPSBzY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCk7CisKICAgICBMYXlvdXRQ
b2ludCBjb250YWluZXJTY3JvbGxPZmZzZXQoc2Nyb2xsaW5nRWxlbWVudEJveC5zY3JvbGxMZWZ0
KCksIHNjcm9sbGluZ0VsZW1lbnRCb3guc2Nyb2xsVG9wKCkpOwogCiAgICAgLy8gVGhlIGJvdW5k
cyBvZiB0aGUgc2Nyb2xsaW5nIGNvbnRhaW5lcidzIHNuYXAgcG9ydCwgd2hlcmUgdGhlIHRvcCBs
ZWZ0IG9mIHRoZSBzY3JvbGxpbmcgY29udGFpbmVyJ3MgYm9yZGVyIGJveCBpcyB0aGUgb3JpZ2lu
LgpAQCAtMjM2LDE0ICsyMzcsMTYgQEAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFi
bGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgSFRNTEVsZW0KICNlbmRpZgog
ICAgICAgICBhdXRvIGFsaWdubWVudCA9IGNoaWxkLT5zdHlsZSgpLnNjcm9sbFNuYXBBbGlnbigp
OwogICAgICAgICBpZiAoaGFzSG9yaXpvbnRhbFNuYXBPZmZzZXRzICYmIGFsaWdubWVudC54ICE9
IFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlOjpOb25lKSB7Ci0gICAgICAgICAgICBhdXRvIGFic29s
dXRlU2Nyb2xsT2Zmc2V0ID0gY2xhbXBUbzxMYXlvdXRVbml0Pihjb21wdXRlU2Nyb2xsU25hcEFs
aWduT2Zmc2V0KHNjcm9sbFNuYXBBcmVhLngoKSwgc2Nyb2xsU25hcEFyZWEud2lkdGgoKSwgYWxp
Z25tZW50LngpIC0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxTbmFwUG9ydC54
KCksIHNjcm9sbFNuYXBQb3J0LndpZHRoKCksIGFsaWdubWVudC54KSwgMCwgbWF4U2Nyb2xsTGVm
dCk7CisgICAgICAgICAgICBhdXRvIGFic29sdXRlU2Nyb2xsWFBvc2l0aW9uID0gY29tcHV0ZVNj
cm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxTbmFwQXJlYS54KCksIHNjcm9sbFNuYXBBcmVhLndp
ZHRoKCksIGFsaWdubWVudC54KSAtIGNvbXB1dGVTY3JvbGxTbmFwQWxpZ25PZmZzZXQoc2Nyb2xs
U25hcFBvcnQueCgpLCBzY3JvbGxTbmFwUG9ydC53aWR0aCgpLCBhbGlnbm1lbnQueCk7CisgICAg
ICAgICAgICBhdXRvIGFic29sdXRlU2Nyb2xsT2Zmc2V0ID0gY2xhbXBUbzxpbnQ+KHNjcm9sbGFi
bGVBcmVhLnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbih7IHJvdW5kVG9JbnQoYWJzb2x1dGVTY3Jv
bGxYUG9zaXRpb24pLCAwIH0pLngoKSwgMCwgbWF4U2Nyb2xsT2Zmc2V0LngoKSk7CiAgICAgICAg
ICAgICBpZiAoIXNlZW5Ib3Jpem9udGFsU25hcE9mZnNldHMuY29udGFpbnMoYWJzb2x1dGVTY3Jv
bGxPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgc2Vlbkhvcml6b250YWxTbmFwT2Zmc2V0cy5h
ZGQoYWJzb2x1dGVTY3JvbGxPZmZzZXQpOwogICAgICAgICAgICAgICAgIGhvcml6b250YWxTbmFw
T2Zmc2V0cy5hcHBlbmQoYWJzb2x1dGVTY3JvbGxPZmZzZXQpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIGlmIChoYXNWZXJ0aWNhbFNuYXBPZmZzZXRzICYmIGFsaWdubWVudC55
ICE9IFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlOjpOb25lKSB7Ci0gICAgICAgICAgICBhdXRvIGFi
c29sdXRlU2Nyb2xsT2Zmc2V0ID0gY2xhbXBUbzxMYXlvdXRVbml0Pihjb21wdXRlU2Nyb2xsU25h
cEFsaWduT2Zmc2V0KHNjcm9sbFNuYXBBcmVhLnkoKSwgc2Nyb2xsU25hcEFyZWEuaGVpZ2h0KCks
IGFsaWdubWVudC55KSAtIGNvbXB1dGVTY3JvbGxTbmFwQWxpZ25PZmZzZXQoc2Nyb2xsU25hcFBv
cnQueSgpLCBzY3JvbGxTbmFwUG9ydC5oZWlnaHQoKSwgYWxpZ25tZW50LnkpLCAwLCBtYXhTY3Jv
bGxUb3ApOworICAgICAgICAgICAgYXV0byBhYnNvbHV0ZVNjcm9sbFlQb3NpdGlvbiA9IGNvbXB1
dGVTY3JvbGxTbmFwQWxpZ25PZmZzZXQoc2Nyb2xsU25hcEFyZWEueSgpLCBzY3JvbGxTbmFwQXJl
YS5oZWlnaHQoKSwgYWxpZ25tZW50LnkpIC0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChz
Y3JvbGxTbmFwUG9ydC55KCksIHNjcm9sbFNuYXBQb3J0LmhlaWdodCgpLCBhbGlnbm1lbnQueSk7
CisgICAgICAgICAgICBhdXRvIGFic29sdXRlU2Nyb2xsT2Zmc2V0ID0gY2xhbXBUbzxpbnQ+KHNj
cm9sbGFibGVBcmVhLnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbih7IDAsIHJvdW5kVG9JbnQoYWJz
b2x1dGVTY3JvbGxZUG9zaXRpb24pIH0pLnkoKSwgMCwgbWF4U2Nyb2xsT2Zmc2V0LnkoKSk7CiAg
ICAgICAgICAgICBpZiAoIXNlZW5WZXJ0aWNhbFNuYXBPZmZzZXRzLmNvbnRhaW5zKGFic29sdXRl
U2Nyb2xsT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIHNlZW5WZXJ0aWNhbFNuYXBPZmZzZXRz
LmFkZChhYnNvbHV0ZVNjcm9sbE9mZnNldCk7CiAgICAgICAgICAgICAgICAgdmVydGljYWxTbmFw
T2Zmc2V0cy5hcHBlbmQoYWJzb2x1dGVTY3JvbGxPZmZzZXQpOwpAQCAtMjUyLDcgKzI1NSw3IEBA
IHZvaWQgdXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYg
c2Nyb2xsYWJsZUFyZWEsIEhUTUxFbGVtCiAgICAgfQogCiAgICAgaWYgKCFob3Jpem9udGFsU25h
cE9mZnNldHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGFkanVzdEF4aXNTbmFwT2Zmc2V0c0ZvclNj
cm9sbEV4dGVudChob3Jpem9udGFsU25hcE9mZnNldHMsIG1heFNjcm9sbExlZnQpOworICAgICAg
ICBhZGp1c3RBeGlzU25hcE9mZnNldHNGb3JTY3JvbGxFeHRlbnQoaG9yaXpvbnRhbFNuYXBPZmZz
ZXRzLCBtYXhTY3JvbGxPZmZzZXQueCgpKTsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgICAgIExP
RyhTY3JvbGxpbmcsICIgPT4gQ29tcHV0ZWQgaG9yaXpvbnRhbCBzY3JvbGwgc25hcCBvZmZzZXRz
OiAlcyIsIHNuYXBPZmZzZXRzVG9TdHJpbmcoaG9yaXpvbnRhbFNuYXBPZmZzZXRzKS51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgTE9HKFNjcm9sbGluZywgIiA9PiBDb21wdXRlZCBob3Jpem9udGFs
IHNjcm9sbCBzbmFwIG9mZnNldCByYW5nZXM6ICVzIiwgc25hcE9mZnNldFJhbmdlc1RvU3RyaW5n
KGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKS51dGY4KCkuZGF0YSgpKTsKQEAgLTI2Niw3ICsy
NjksNyBAQCB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJs
ZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBIVE1MRWxlbQogICAgICAgICBzY3JvbGxhYmxlQXJlYS5j
bGVhckhvcml6b250YWxTbmFwT2Zmc2V0cygpOwogCiAgICAgaWYgKCF2ZXJ0aWNhbFNuYXBPZmZz
ZXRzLmlzRW1wdHkoKSkgewotICAgICAgICBhZGp1c3RBeGlzU25hcE9mZnNldHNGb3JTY3JvbGxF
eHRlbnQodmVydGljYWxTbmFwT2Zmc2V0cywgbWF4U2Nyb2xsVG9wKTsKKyAgICAgICAgYWRqdXN0
QXhpc1NuYXBPZmZzZXRzRm9yU2Nyb2xsRXh0ZW50KHZlcnRpY2FsU25hcE9mZnNldHMsIG1heFNj
cm9sbE9mZnNldC55KCkpOwogI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgTE9HKFNjcm9sbGlu
ZywgIiA9PiBDb21wdXRlZCB2ZXJ0aWNhbCBzY3JvbGwgc25hcCBvZmZzZXRzOiAlcyIsIHNuYXBP
ZmZzZXRzVG9TdHJpbmcodmVydGljYWxTbmFwT2Zmc2V0cykudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIExPRyhTY3JvbGxpbmcsICIgPT4gQ29tcHV0ZWQgdmVydGljYWwgc2Nyb2xsIHNuYXAgb2Zm
c2V0IHJhbmdlczogJXMiLCBzbmFwT2Zmc2V0UmFuZ2VzVG9TdHJpbmcodmVydGljYWxTbmFwT2Zm
c2V0UmFuZ2VzKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVNYWMubW0KaW5kZXggOGQ0OGU2ZDQ0ODM2ODZjYTI5ODM5MWNkMDAzZGEy
MWNiZmFkZWRmNy4uN2JkODkzMjZkMzhlMWJmN2VjNDY2NjdkYjY0NmU4NzJmODVmNzViOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KQEAgLTI1
Niw3ICsyNTYsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6
OmFkanVzdFNjcm9sbFBvc2l0aW9uVG9Cb3VuZHNJZk5lY2VzcwogI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCiBGbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWM6OnNjcm9sbE9mZnNldCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRTY3JvbGxQb3Np
dGlvbigpOworICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsT2Zmc2V0RnJvbVBvc2l0
aW9uKGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLCBzY3JvbGxPcmlnaW4oKSk7CiB9CiAKIHZvaWQg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6aW1tZWRpYXRlU2Nyb2xsT25B
eGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBkZWx0YSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCAwZmM3MjllOTEyYjU3MGNiMjMzZDg4Nzhl
YThmNjAxMWJhZDY0Nzg3Li43MTcxYjk5MTEwZmMyNWEwMTQxODQzZTg3M2NmZDNiODBiMzhiMjky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC0xOTEs
OCArMTkxLDggQEAgdm9pZCBTY3JvbGxBbmltYXRvcjo6c2V0Q3VycmVudFBvc2l0aW9uKGNvbnN0
IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQogdm9pZCBTY3JvbGxBbmltYXRvcjo6dXBkYXRlQWN0aXZl
U2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0KCkKIHsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQotICAgIC8vIEZJWE1FOiBOZWVkcyBvZmZzZXQvcG9zaXRpb24gZGlzYW1iaWd1YXRpb24uCi0g
ICAgbV9zY3JvbGxDb250cm9sbGVyLnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzRm9yT2Zmc2V0
KG1fY3VycmVudFBvc2l0aW9uLngoKSwgbV9jdXJyZW50UG9zaXRpb24ueSgpKTsKKyAgICBhdXRv
IHNjcm9sbE9mZnNldCA9IG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT2Zmc2V0RnJvbVBvc2l0aW9u
KHJvdW5kZWRJbnRQb2ludChjdXJyZW50UG9zaXRpb24oKSkpOworICAgIG1fc2Nyb2xsQ29udHJv
bGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlc0Zvck9mZnNldChzY3JvbGxPZmZzZXQpOwog
ICAgIGlmIChtX3Njcm9sbENvbnRyb2xsZXIuYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdl
KCkpIHsKICAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQ
b2ludEluZGV4KG1fc2Nyb2xsQ29udHJvbGxlci5hY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlz
KFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkpOwogICAgICAgICBtX3Njcm9sbGFibGVBcmVh
LnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KG1fc2Nyb2xsQ29udHJvbGxlci5hY3Rp
dmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpKTsKQEAg
LTIxNSw3ICsyMTUsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjp1cGRhdGVTY3JvbGxTbmFwU3Rh
dGUoKQogCiBGbG9hdFBvaW50IFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxPZmZzZXQoKSBjb25zdAog
ewotICAgIHJldHVybiBtX2N1cnJlbnRQb3NpdGlvbjsKKyAgICByZXR1cm4gbV9zY3JvbGxhYmxl
QXJlYS5zY3JvbGxPZmZzZXRGcm9tUG9zaXRpb24ocm91bmRlZEludFBvaW50KGN1cnJlbnRQb3Np
dGlvbigpKSk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmltbWVkaWF0ZVNjcm9sbE9uQXhp
cyhTY3JvbGxFdmVudEF4aXMgYXhpcywgZmxvYXQgZGVsdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVHlwZXMuaAppbmRleCA1YzUyZDViYmRlMjgzNDZmYTdjNzNiODlkMDRkYzU2NTExNmUz
NzQzLi5jYTBlZmUzMmNlNjM2MjU3YTFiYmU5YTBkYmRlYmZjOGJhM2U4NDJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMzQsNiArMzUsMTEgQEAg
Y2xhc3MgVGV4dFN0cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBzY3JvbGxQb3Np
dGlvbiBpcyBpbiBjb250ZW50IGNvb3JkaW5hdGVzICgwLDAgaXMgYXQgc2Nyb2xsT3JpZ2luKSwg
c28gbWF5IGhhdmUgbmVnYXRpdmUgY29tcG9uZW50cy4KK3VzaW5nIFNjcm9sbFBvc2l0aW9uID0g
SW50UG9pbnQ7CisvLyBzY3JvbGxPZmZzZXQoKSBpcyB0aGUgdmFsdWUgdXNlZCBieSBzY3JvbGxi
YXJzIChtaW4gaXMgMCwwKSwgYW5kIHNob3VsZCBuZXZlciBoYXZlIG5lZ2F0aXZlIGNvbXBvbmVu
dHMuCit1c2luZyBTY3JvbGxPZmZzZXQgPSBJbnRQb2ludDsKKwogZW51bSBjbGFzcyBTY3JvbGxU
eXBlIDogdWludDhfdCB7CiAgICAgVXNlciwKICAgICBQcm9ncmFtbWF0aWMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IGZkZGRmMmY5YmViN2UwYjI4ZjA3MmNi
MTIxZDFlZTExN2JmMDA5NjkuLmJiODhkMDU1ZTA4YWIwNTJhOGUzMmRiNTkwZTUxMTY4MzNlMDU5
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtNDMsMTIg
KzQzLDYgQEAgY2xhc3MgU2Nyb2xsQW5pbWF0b3I7CiBjbGFzcyBHcmFwaGljc0xheWVyOwogY2xh
c3MgVGlsZWRCYWNraW5nOwogCi0vLyBzY3JvbGxQb3NpdGlvbiBpcyBpbiBjb250ZW50IGNvb3Jk
aW5hdGVzICgwLDAgaXMgYXQgc2Nyb2xsT3JpZ2luKSwgc28gbWF5IGhhdmUgbmVnYXRpdmUgY29t
cG9uZW50cy4KLXR5cGVkZWYgSW50UG9pbnQgU2Nyb2xsUG9zaXRpb247Ci0vLyBzY3JvbGxPZmZz
ZXQoKSBpcyB0aGUgdmFsdWUgdXNlZCBieSBzY3JvbGxiYXJzIChtaW4gaXMgMCwwKSwgYW5kIHNo
b3VsZCBuZXZlciBoYXZlIG5lZ2F0aXZlIGNvbXBvbmVudHMuCi10eXBlZGVmIEludFBvaW50IFNj
cm9sbE9mZnNldDsKLQotCiBpbmxpbmUgaW50IG9mZnNldEZvck9yaWVudGF0aW9uKFNjcm9sbE9m
ZnNldCBvZmZzZXQsIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIHN3
aXRjaCAob3JpZW50YXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Njcm9sbENvbnRyb2xsZXIuaAppbmRleCA2OTYwN2NkY2E5ZDRkOWI1YTU5M2QwYTY5YTEzMjRm
ZTI4NjY2MTY4Li5iODliYWZjYzg3NGNhMjRmNjY0MTBmMTdiMDgyZDI1OTc5MThkNDAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCkBA
IC0xMzYsNyArMTM2LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAg
ICAgdm9pZCB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpcywgY29uc3QgVmVj
dG9yPExheW91dFVuaXQ+JiwgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVu
aXQ+PiYpOwogICAgIHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxF
dmVudEF4aXMsIHVuc2lnbmVkKTsKLSAgICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2Vz
Rm9yT2Zmc2V0KGludCB4LCBpbnQgeSk7CisgICAgdm9pZCBzZXRBY3RpdmVTY3JvbGxTbmFwSW5k
aWNlc0Zvck9mZnNldChTY3JvbGxPZmZzZXQpOwogICAgIGJvb2wgYWN0aXZlU2Nyb2xsU25hcElu
ZGV4RGlkQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRD
aGFuZ2U7IH0KICAgICB2b2lkIHNldFNjcm9sbFNuYXBJbmRleERpZENoYW5nZShib29sIHN0YXRl
KSB7IG1fYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlID0gc3RhdGU7IH0KICAgICB1bnNp
Z25lZCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcykgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9s
bGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5t
bQppbmRleCAzNTYwYmFiZjI5YWM3MDIyODBhZTcxYmViNDRlMzY5OTU1ODM0MmU3Li41MDE3MTEx
NmE3M2EzNjQwMzgyM2Q2OTk1Mzc1ZTU2MGQxZTY0MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbXBvcnQgIlNjcm9sbENvbnRyb2xsZXIuaCIKIAogI2ltcG9ydCAiTGF5b3V0U2l6ZS5oIgor
I2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW1w
b3J0ICJXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCIKICNpbXBvcnQgPHN5cy9zeXNjdGwuaD4KQEAg
LTYxNiwxNyArNjE3LDI0IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25h
cFN0YXRlKGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlCiAKIHZvaWQgU2Nyb2xs
Q29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXMgYXhpcywg
Y29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBzbmFwUG9pbnRzLCBjb25zdCBWZWN0b3I8U2Nyb2xs
T2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBzbmFwUmFuZ2VzKQogeworICAgIGJvb2wgc2hvdWxk
Q29tcHV0ZUN1cnJlbnRTbmFwSW5kaWNlcyA9IGZhbHNlOwogICAgIGlmICghbV9zY3JvbGxTbmFw
U3RhdGUpIHsKICAgICAgICAgaWYgKHNuYXBQb2ludHMuaXNFbXB0eSgpKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0gbWFrZVVuaXF1ZTxTY3JvbGxT
bmFwQW5pbWF0b3JTdGF0ZT4oKTsKKyAgICAgICAgc2hvdWxkQ29tcHV0ZUN1cnJlbnRTbmFwSW5k
aWNlcyA9IHRydWU7CiAgICAgfQogCiAgICAgaWYgKHNuYXBQb2ludHMuaXNFbXB0eSgpICYmIG1f
c2Nyb2xsU25hcFN0YXRlLT5zbmFwT2Zmc2V0c0ZvckF4aXMob3RoZXJTY3JvbGxFdmVudEF4aXMo
YXhpcykpLmlzRW1wdHkoKSkKICAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBudWxscHRyOwot
ICAgIGVsc2UKKyAgICBlbHNlIHsKICAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUtPnNldFNuYXBP
ZmZzZXRzQW5kUG9zaXRpb25SYW5nZXNGb3JBeGlzKGF4aXMsIHNuYXBQb2ludHMsIHNuYXBSYW5n
ZXMpOworICAgICAgICBpZiAoc2hvdWxkQ29tcHV0ZUN1cnJlbnRTbmFwSW5kaWNlcykgeworICAg
ICAgICAgICAgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXNGb3JPZmZzZXQocm91bmRlZEludFBv
aW50KG1fY2xpZW50LnNjcm9sbE9mZnNldCgpKSk7CisgICAgICAgICAgICBMT0dfV0lUSF9TVFJF
QU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNu
YXBQb2ludHMgLSBjb21wdXRlZCBpbml0aWFsIHNuYXAgaW5kaWNlczogeCAiIDw8IG1fc2Nyb2xs
U25hcFN0YXRlLT5hY3RpdmVTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpv
bnRhbCkgPDwgIiwgeSAiIDw8IG1fc2Nyb2xsU25hcFN0YXRlLT5hY3RpdmVTbmFwSW5kZXhGb3JB
eGlzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAog
dW5zaWduZWQgU2Nyb2xsQ29udHJvbGxlcjo6YWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhT
Y3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKQEAgLTY2OSwxMyArNjc3LDEzIEBAIHZvaWQgU2Ny
b2xsQ29udHJvbGxlcjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQo
U2Nyb2xsRXZlbnRBeGlzCiAgICAgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhheGlz
LCBhY3RpdmVJbmRleCk7CiB9CiAKLXZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6c2V0QWN0aXZlU2Ny
b2xsU25hcEluZGljZXNGb3JPZmZzZXQoaW50IHgsIGludCB5KQordm9pZCBTY3JvbGxDb250cm9s
bGVyOjpzZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlc0Zvck9mZnNldChTY3JvbGxPZmZzZXQgb2Zm
c2V0KQogewogICAgIGlmICghbV9zY3JvbGxTbmFwU3RhdGUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHNldE5lYXJlc3RTY3JvbGxTbmFwSW5kZXhGb3JBeGlzQW5kT2Zmc2V0KFNjcm9sbEV2ZW50
QXhpczo6SG9yaXpvbnRhbCwgeCk7Ci0gICAgc2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4
aXNBbmRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgeSk7CisgICAgc2V0TmVhcmVz
dFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9u
dGFsLCBvZmZzZXQueCgpKTsKKyAgICBzZXROZWFyZXN0U2Nyb2xsU25hcEluZGV4Rm9yQXhpc0Fu
ZE9mZnNldChTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBvZmZzZXQueSgpKTsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25h
cEFuaW1hdG9yU3RhdGUuaAppbmRleCAxYzM4ZGRhOGRjNGQ0MjVlODQwZGIwZDQ5MzM5Mjk1NGE5
NTZiYmQwLi4zMzdkZjI3YmUwYWRmN2M4ZjRkMmZlZWM4MzM5MWRmYTM3YThiMzMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbFNuYXBBbmltYXRv
clN0YXRlLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlX2gKLSNkZWZpbmUg
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGVfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoQ1NT
X1NDUk9MTF9TTkFQKQogCkBAIC0xMTUsNSArMTE0LDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0KLSNlbmRp
ZiAvLyBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IGIzZDc5MWJlZWQwZThlZTZmMDAzOWVh
OTUxMTQ1NmM5MDU1YmJiZGMuLjdkZmJlMTAzNGExZjBmMjY0YTM3M2FmYTVlNzFlMGZjOTA0YTYy
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9T
Lm1tCkBAIC0yMDA1LDcgKzIwMDUsNyBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxlQ29udGVudFJl
Y3RzCiAgICAgICAgIFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSogY29v
cmRpbmF0b3IgPSBfcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSgpOwogICAgICAgICBp
ZiAoY29vcmRpbmF0b3IgJiYgY29vcmRpbmF0b3ItPmhhc0FjdGl2ZVNuYXBQb2ludCgpKSB7CiAg
ICAgICAgICAgICBDR1BvaW50IGN1cnJlbnRQb2ludCA9IFtfc2Nyb2xsVmlldyBjb250ZW50T2Zm
c2V0XTsKLSAgICAgICAgICAgIENHUG9pbnQgYWN0aXZlUG9pbnQgPSBjb29yZGluYXRvci0+bmVh
cmVzdEFjdGl2ZUNvbnRlbnRJbnNldEFkanVzdGVkU25hcFBvaW50KHVub2JzY3VyZWRSZWN0Lm9y
aWdpbi55LCBjdXJyZW50UG9pbnQpOworICAgICAgICAgICAgQ0dQb2ludCBhY3RpdmVQb2ludCA9
IGNvb3JkaW5hdG9yLT5uZWFyZXN0QWN0aXZlQ29udGVudEluc2V0QWRqdXN0ZWRTbmFwT2Zmc2V0
KHVub2JzY3VyZWRSZWN0Lm9yaWdpbi55LCBjdXJyZW50UG9pbnQpOwogCiAgICAgICAgICAgICBp
ZiAoIUNHUG9pbnRFcXVhbFRvUG9pbnQoYWN0aXZlUG9pbnQsIGN1cnJlbnRQb2ludCkpIHsKICAg
ICAgICAgICAgICAgICBSZXRhaW5QdHI8V0tTY3JvbGxWaWV3PiBzdHJvbmdTY3JvbGxWaWV3ID0g
X3Njcm9sbFZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHkuaAppbmRleCBiNzQwNzYxODcyMDQ5MWZjNTU5MjczYjBjNDkyMmYwNmE2NmNlNjA3Li5kNWFj
MzU1NDI5MjU4YWYwMTI4ZTkxY2RjODAxMjU1ZTQzMzBmZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGlj
OgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgdm9pZCBhZGp1c3RUYXJnZXRDb250
ZW50T2Zmc2V0Rm9yU25hcHBpbmcoQ0dTaXplIG1heFNjcm9sbERpbWVuc2lvbnMsIENHUG9pbnQg
dmVsb2NpdHksIENHRmxvYXQgdG9wSW5zZXQsIENHUG9pbnQqIHRhcmdldENvbnRlbnRPZmZzZXQp
OwogICAgIGJvb2wgaGFzQWN0aXZlU25hcFBvaW50KCkgY29uc3Q7Ci0gICAgQ0dQb2ludCBuZWFy
ZXN0QWN0aXZlQ29udGVudEluc2V0QWRqdXN0ZWRTbmFwUG9pbnQoQ0dGbG9hdCB0b3BJbnNldCwg
Y29uc3QgQ0dQb2ludCYpIGNvbnN0OworICAgIENHUG9pbnQgbmVhcmVzdEFjdGl2ZUNvbnRlbnRJ
bnNldEFkanVzdGVkU25hcE9mZnNldChDR0Zsb2F0IHRvcEluc2V0LCBjb25zdCBDR1BvaW50Jikg
Y29uc3Q7CiAgICAgYm9vbCBzaG91bGRTZXRTY3JvbGxWaWV3RGVjZWxlcmF0aW9uUmF0ZUZhc3Qo
KSBjb25zdDsKICNlbmRpZgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5kZXggZDFlY2VhYTZkMzVlNzI4ZWUx
NzRmYzhkYzA1MjQ1MjRiZjMyYTU4Ni4uY2MzMTI4NDZkODcwMTk3ZDYxYTdjZmU4MDhkNWU3NDNm
OGM1ZjBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eUlPUy5tbQpAQCAtMjA1LDggKzIwNSw4IEBAIGJvb2wgUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eTo6c2hvdWxkU25hcEZvck1haW5GcmFtZVNjcm9sbGluZyhTY3Jv
bGxFdmVuCiB7CiAgICAgU2Nyb2xsaW5nVHJlZU5vZGUqIHJvb3QgPSBtX3Njcm9sbGluZ1RyZWUt
PnJvb3ROb2RlKCk7CiAgICAgaWYgKHJvb3QgJiYgcm9vdC0+aXNGcmFtZVNjcm9sbGluZ05vZGUo
KSkgewotICAgICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKiByb290RnJhbWUg
PSBzdGF0aWNfY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKj4ocm9vdCk7Ci0g
ICAgICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzID0gYXhpcyA9PSBTY3JvbGxF
dmVudEF4aXM6Okhvcml6b250YWwgPyByb290RnJhbWUtPmhvcml6b250YWxTbmFwT2Zmc2V0cygp
IDogcm9vdEZyYW1lLT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCk7CisgICAgICAgIFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGUqIHJvb3RTY3JvbGxpbmdOb2RlID0gc3RhdGljX2Nhc3Q8U2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSo+KHJvb3QpOworICAgICAgICBjb25zdCBWZWN0
b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cyA9IGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9u
dGFsID8gcm9vdFNjcm9sbGluZ05vZGUtPmhvcml6b250YWxTbmFwT2Zmc2V0cygpIDogcm9vdFNj
cm9sbGluZ05vZGUtPnZlcnRpY2FsU25hcE9mZnNldHMoKTsKICAgICAgICAgdW5zaWduZWQgY3Vy
cmVudEluZGV4ID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyBtX2N1cnJl
bnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggOiBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludElu
ZGV4OwogICAgICAgICByZXR1cm4gc25hcE9mZnNldHMuc2l6ZSgpICYmIChjdXJyZW50SW5kZXgg
PCBzbmFwT2Zmc2V0cy5zaXplKCkgfHwgY3VycmVudEluZGV4ID09IGludmFsaWRTbmFwT2Zmc2V0
SW5kZXgpOwogICAgIH0KQEAgLTIxNyw5ICsyMTcsOSBAQCBmbG9hdCBSZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyhT
YwogewogICAgIFNjcm9sbGluZ1RyZWVOb2RlKiByb290ID0gbV9zY3JvbGxpbmdUcmVlLT5yb290
Tm9kZSgpOwogICAgIEFTU0VSVChyb290ICYmIHJvb3QtPmlzRnJhbWVTY3JvbGxpbmdOb2RlKCkp
OwotICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUqIHJvb3RGcmFtZSA9IHN0YXRp
Y19jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUqPihyb290KTsKLSAgICBjb25z
dCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cyA9IGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpI
b3Jpem9udGFsID8gcm9vdEZyYW1lLT5ob3Jpem9udGFsU25hcE9mZnNldHMoKSA6IHJvb3RGcmFt
ZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpOwotICAgIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRS
YW5nZTxmbG9hdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6
Okhvcml6b250YWwgPyByb290RnJhbWUtPmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCkgOiBy
b290RnJhbWUtPnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpOworICAgIFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGUqIHJvb3RTY3JvbGxpbmdOb2RlID0gc3RhdGljX2Nhc3Q8U2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSo+KHJvb3QpOworICAgIGNvbnN0IFZlY3RvcjxmbG9h
dD4mIHNuYXBPZmZzZXRzID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyBy
b290U2Nyb2xsaW5nTm9kZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkgOiByb290U2Nyb2xsaW5n
Tm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpOworICAgIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZz
ZXRSYW5nZTxmbG9hdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwgPyByb290U2Nyb2xsaW5nTm9kZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRS
YW5nZXMoKSA6IHJvb3RTY3JvbGxpbmdOb2RlLT52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoKTsK
IAogICAgIGZsb2F0IHNjYWxlZFNjcm9sbERlc3RpbmF0aW9uID0gc2Nyb2xsRGVzdGluYXRpb24g
LyBtX3dlYlBhZ2VQcm94eS5kaXNwbGF5ZWRDb250ZW50U2NhbGUoKTsKICAgICBmbG9hdCByYXdD
bG9zZXN0U25hcE9mZnNldCA9IGNsb3Nlc3RTbmFwT2Zmc2V0KHNuYXBPZmZzZXRzLCBzbmFwT2Zm
c2V0UmFuZ2VzLCBzY2FsZWRTY3JvbGxEZXN0aW5hdGlvbiwgdmVsb2NpdHksIGN1cnJlbnRJbmRl
eCk7CkBAIC0yMzUsOSArMjM1LDkgQEAgYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5OjpoYXNBY3RpdmVTbmFwUG9pbnQoKSBjb25zdAogICAgIGlmICghaXM8U2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZT4ocm9vdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUmIHJvb3RGcmFtZSA9IGRvd25jYXN0PFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KCpyb290KTsKLSAgICBjb25zdCBWZWN0b3I8
ZmxvYXQ+JiBob3Jpem9udGFsID0gcm9vdEZyYW1lLmhvcml6b250YWxTbmFwT2Zmc2V0cygpOwot
ICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2FsID0gcm9vdEZyYW1lLnZlcnRpY2FsU25h
cE9mZnNldHMoKTsKKyAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlJiByb290U2Ny
b2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KCpy
b290KTsKKyAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBob3Jpem9udGFsID0gcm9vdFNjcm9sbGlu
Z05vZGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCk7CisgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYg
dmVydGljYWwgPSByb290U2Nyb2xsaW5nTm9kZS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCk7CiAKICAg
ICBpZiAoaG9yaXpvbnRhbC5pc0VtcHR5KCkgJiYgdmVydGljYWwuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yNTAsMTUgKzI1MCwxNSBAQCBib29sIFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHk6Omhhc0FjdGl2ZVNuYXBQb2ludCgpIGNvbnN0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAgICAgCi1DR1BvaW50IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6
Om5lYXJlc3RBY3RpdmVDb250ZW50SW5zZXRBZGp1c3RlZFNuYXBQb2ludChDR0Zsb2F0IHRvcElu
c2V0LCBjb25zdCBDR1BvaW50JiBjdXJyZW50UG9pbnQpIGNvbnN0CitDR1BvaW50IFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6Om5lYXJlc3RBY3RpdmVDb250ZW50SW5zZXRBZGp1c3Rl
ZFNuYXBPZmZzZXQoQ0dGbG9hdCB0b3BJbnNldCwgY29uc3QgQ0dQb2ludCYgY3VycmVudFBvaW50
KSBjb25zdAogewogICAgIENHUG9pbnQgYWN0aXZlUG9pbnQgPSBjdXJyZW50UG9pbnQ7CiAKICAg
ICBTY3JvbGxpbmdUcmVlTm9kZSogcm9vdCA9IG1fc2Nyb2xsaW5nVHJlZS0+cm9vdE5vZGUoKTsK
ICAgICBBU1NFUlQocm9vdCAmJiBpczxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihy
b290KSk7Ci0gICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSYgcm9vdEZyYW1lID0g
ZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oKnJvb3QpOwotICAgIGNv
bnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWwgPSByb290RnJhbWUuaG9yaXpvbnRhbFNuYXBP
ZmZzZXRzKCk7Ci0gICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmVydGljYWwgPSByb290RnJhbWUu
dmVydGljYWxTbmFwT2Zmc2V0cygpOworICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGUmIHJvb3RTY3JvbGxpbmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZT4oKnJvb3QpOworICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWwgPSBy
b290U2Nyb2xsaW5nTm9kZS5ob3Jpem9udGFsU25hcE9mZnNldHMoKTsKKyAgICBjb25zdCBWZWN0
b3I8ZmxvYXQ+JiB2ZXJ0aWNhbCA9IHJvb3RTY3JvbGxpbmdOb2RlLnZlcnRpY2FsU25hcE9mZnNl
dHMoKTsKIAogICAgIC8vIFRoZSBib3VuZHMgY2hlY2tpbmcgd2l0aCBtYXhTY3JvbGxPZmZzZXRz
IGlzIHRvIGVuc3VyZSB0aGF0IHdlIHdvbid0IGludGVyZmVyZSB3aXRoIHJ1YmJlci1iYW5kaW5n
IHdoZW4gc2Nyb2xsaW5nIHRvIHRoZSBlZGdlIG9mIHRoZSBwYWdlLgogICAgIGlmICghaG9yaXpv
bnRhbC5pc0VtcHR5KCkgJiYgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4IDwgaG9y
aXpvbnRhbC5zaXplKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403854</attachid>
            <date>2020-07-09 03:03:15 -0700</date>
            <delta_ts>2020-07-25 22:23:22 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-193671-20200709120314.patch</filename>
            <type>text/plain</type>
            <size>22649</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGRiNTdkYzc4YzFmZDdj
ZWRjYzJkMmIwYzM4ODAzZDMwMWNhYWE0Mi4uMjFlY2ExZjJlNWEyODM2MmQwZDFkMTk1NzI5NTQx
MDZkMzgwYzhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA3LTA5ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFNjcm9sbCBTbmFwIGJy
b2tlbiBvbiBpT1Mgd2hlbiB1c2luZyBSVEwgbGF5b3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2NzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjo6c2V0U2Nyb2xsaW5nTm9kZVNjcm9sbGFibGVBcmVhR2VvbWV0cnkpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6
OnNjcm9sbE9mZnNldCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnVwZGF0ZUFjdGl2ZVNjcm9s
bFNuYXBJbmRleEZvck9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6
c2Nyb2xsT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxUeXBlcy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvU2Nyb2xsQ29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Njcm9s
bENvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRh
dGVTY3JvbGxTbmFwUG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6
OnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzRm9yT2Zmc2V0KToKKwogMjAyMC0wNy0wOSAgQWxp
Y2lhIEJveWEgR2FyY8OtYSAgPGFib3lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW01TRV1bR1N0
cmVhbWVyXSBSZW1vdmUgb3JwaGFuIGNvZGUgaW4gU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1l
cjo6YXBwZW5kKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggN2UxMzMxMmNhMTk5OWMwZTBhMzE1MmJiMWZiYThkZjFm
NjczMjAwYi4uYWM0YjJiMWU2YzJkMGFlMjBkODM2NjBlOGM3ODViZWM2NTUwYjBlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0wNy0wOSAgQW50b2luZSBRdWludCAgPGdyYW91dHNA
d2Via2l0Lm9yZz4KKworICAgICAgICBTY3JvbGwgU25hcCBicm9rZW4gb24gaU9TIHdoZW4gdXNp
bmcgUlRMIGxheW91dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkzNjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c10pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHk6OnNob3VsZFNuYXBGb3JNYWluRnJhbWVTY3JvbGxpbmcgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9zZXN0U25h
cE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6Omhhc0FjdGl2ZVNuYXBQb2ludCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6Om5lYXJl
c3RBY3RpdmVDb250ZW50SW5zZXRBZGp1c3RlZFNuYXBPZmZzZXQgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpuZWFyZXN0QWN0aXZlQ29u
dGVudEluc2V0QWRqdXN0ZWRTbmFwUG9pbnQgY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTA3LTA5
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
U09VUF0gQWRkIHN1cHBvcnQgZm9yIEhUVFBDb29raWVBY2NlcHRQb2xpY3k6Ok9ubHlGcm9tTWFp
bkRvY3VtZW50RG9tYWluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDUzZDY0ZGE4Nzg4Njc3
NGZmMGQwYjZiNzk1ODU2MGRjYTNjNDUyMzcuLmM1Y2ZmMjk1MTkwYTUwMGU0NDA0ZGUxYTQwOTU0
YzkyMTZjOWVlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0Fz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC02OTgsNiArNjk4LDggQEAg
dm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRGcmFtZVNjcm9sbGluZ05vZGVTdGF0
ZShTY3JvbGxpbmdOb2RlSUQgbm9kZUkKIAogdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
OjpzZXRTY3JvbGxpbmdOb2RlU2Nyb2xsYWJsZUFyZWFHZW9tZXRyeShTY3JvbGxpbmdOb2RlSUQg
bm9kZUlELCBTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7CisgICAgTE9HX1dJVEhf
U1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpz
ZXRTY3JvbGxpbmdOb2RlU2Nyb2xsYWJsZUFyZWFHZW9tZXRyeSBub2RlICIgPDwgbm9kZUlEKTsK
KwogICAgIGF1dG8qIHN0YXRlTm9kZSA9IG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVG
b3JJRChub2RlSUQpOwogICAgIEFTU0VSVChzdGF0ZU5vZGUpOwogICAgIGlmICghc3RhdGVOb2Rl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNu
YXBPZmZzZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxT
bmFwT2Zmc2V0cy5jcHAKaW5kZXggOWEzZDlkZTY4NjE0ZGYwZDExZTJiYTMyZDBjNmUxOTFmMmI5
MzdkYi4uNDVmMzQ0YmY0ZjYzMmQ3MjIwYmUxZmNlMjVmMjkyYWI0ZDczZmZhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNl
dHMuY3BwCkBAIC0xOTAsOCArMTkwLDkgQEAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9s
bGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgSFRNTEVsZW0KICAgICBI
YXNoU2V0PGZsb2F0PiBzZWVuSG9yaXpvbnRhbFNuYXBPZmZzZXRzOwogICAgIGJvb2wgaGFzSG9y
aXpvbnRhbFNuYXBPZmZzZXRzID0gc2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhp
czo6Qm90aCB8fCBzY3JvbGxTbmFwVHlwZS5heGlzID09IFNjcm9sbFNuYXBBeGlzOjpYQXhpcyB8
fCBzY3JvbGxTbmFwVHlwZS5heGlzID09IFNjcm9sbFNuYXBBeGlzOjpJbmxpbmU7CiAgICAgYm9v
bCBoYXNWZXJ0aWNhbFNuYXBPZmZzZXRzID0gc2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxT
bmFwQXhpczo6Qm90aCB8fCBzY3JvbGxTbmFwVHlwZS5heGlzID09IFNjcm9sbFNuYXBBeGlzOjpZ
QXhpcyB8fCBzY3JvbGxTbmFwVHlwZS5heGlzID09IFNjcm9sbFNuYXBBeGlzOjpCbG9jazsKLSAg
ICBhdXRvIG1heFNjcm9sbExlZnQgPSBzY3JvbGxpbmdFbGVtZW50Qm94LnNjcm9sbFdpZHRoKCkg
LSBzY3JvbGxpbmdFbGVtZW50Qm94LmNvbnRlbnRXaWR0aCgpOwotICAgIGF1dG8gbWF4U2Nyb2xs
VG9wID0gc2Nyb2xsaW5nRWxlbWVudEJveC5zY3JvbGxIZWlnaHQoKSAtIHNjcm9sbGluZ0VsZW1l
bnRCb3guY29udGVudEhlaWdodCgpOworCisgICAgYXV0byBtYXhTY3JvbGxPZmZzZXQgPSBzY3Jv
bGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCk7CisKICAgICBMYXlvdXRQb2ludCBjb250
YWluZXJTY3JvbGxPZmZzZXQoc2Nyb2xsaW5nRWxlbWVudEJveC5zY3JvbGxMZWZ0KCksIHNjcm9s
bGluZ0VsZW1lbnRCb3guc2Nyb2xsVG9wKCkpOwogCiAgICAgLy8gVGhlIGJvdW5kcyBvZiB0aGUg
c2Nyb2xsaW5nIGNvbnRhaW5lcidzIHNuYXAgcG9ydCwgd2hlcmUgdGhlIHRvcCBsZWZ0IG9mIHRo
ZSBzY3JvbGxpbmcgY29udGFpbmVyJ3MgYm9yZGVyIGJveCBpcyB0aGUgb3JpZ2luLgpAQCAtMjA5
LDE0ICsyMTAsMTYgQEAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKFNj
cm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgSFRNTEVsZW0KICAgICAgICAgTE9HX1dJVEhf
U1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAiICAgIENvbnNpZGVyaW5nIHNjcm9sbCBzbmFw
IHRhcmdldCBhcmVhICIgPDwgc2Nyb2xsU25hcEFyZWEpOwogICAgICAgICBhdXRvIGFsaWdubWVu
dCA9IGNoaWxkLT5zdHlsZSgpLnNjcm9sbFNuYXBBbGlnbigpOwogICAgICAgICBpZiAoaGFzSG9y
aXpvbnRhbFNuYXBPZmZzZXRzICYmIGFsaWdubWVudC54ICE9IFNjcm9sbFNuYXBBeGlzQWxpZ25U
eXBlOjpOb25lKSB7Ci0gICAgICAgICAgICBhdXRvIGFic29sdXRlU2Nyb2xsT2Zmc2V0ID0gY2xh
bXBUbzxMYXlvdXRVbml0Pihjb21wdXRlU2Nyb2xsU25hcEFsaWduT2Zmc2V0KHNjcm9sbFNuYXBB
cmVhLngoKSwgc2Nyb2xsU25hcEFyZWEud2lkdGgoKSwgYWxpZ25tZW50LngpIC0gY29tcHV0ZVNj
cm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxTbmFwUG9ydC54KCksIHNjcm9sbFNuYXBQb3J0Lndp
ZHRoKCksIGFsaWdubWVudC54KSwgMCwgbWF4U2Nyb2xsTGVmdCk7CisgICAgICAgICAgICBhdXRv
IGFic29sdXRlU2Nyb2xsWFBvc2l0aW9uID0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChz
Y3JvbGxTbmFwQXJlYS54KCksIHNjcm9sbFNuYXBBcmVhLndpZHRoKCksIGFsaWdubWVudC54KSAt
IGNvbXB1dGVTY3JvbGxTbmFwQWxpZ25PZmZzZXQoc2Nyb2xsU25hcFBvcnQueCgpLCBzY3JvbGxT
bmFwUG9ydC53aWR0aCgpLCBhbGlnbm1lbnQueCk7CisgICAgICAgICAgICBhdXRvIGFic29sdXRl
U2Nyb2xsT2Zmc2V0ID0gY2xhbXBUbzxpbnQ+KHNjcm9sbGFibGVBcmVhLnNjcm9sbE9mZnNldEZy
b21Qb3NpdGlvbih7IHJvdW5kVG9JbnQoYWJzb2x1dGVTY3JvbGxYUG9zaXRpb24pLCAwIH0pLngo
KSwgMCwgbWF4U2Nyb2xsT2Zmc2V0LngoKSk7CiAgICAgICAgICAgICBpZiAoIXNlZW5Ib3Jpem9u
dGFsU25hcE9mZnNldHMuY29udGFpbnMoYWJzb2x1dGVTY3JvbGxPZmZzZXQpKSB7CiAgICAgICAg
ICAgICAgICAgc2Vlbkhvcml6b250YWxTbmFwT2Zmc2V0cy5hZGQoYWJzb2x1dGVTY3JvbGxPZmZz
ZXQpOwogICAgICAgICAgICAgICAgIGhvcml6b250YWxTbmFwT2Zmc2V0cy5hcHBlbmQoYWJzb2x1
dGVTY3JvbGxPZmZzZXQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICho
YXNWZXJ0aWNhbFNuYXBPZmZzZXRzICYmIGFsaWdubWVudC55ICE9IFNjcm9sbFNuYXBBeGlzQWxp
Z25UeXBlOjpOb25lKSB7Ci0gICAgICAgICAgICBhdXRvIGFic29sdXRlU2Nyb2xsT2Zmc2V0ID0g
Y2xhbXBUbzxMYXlvdXRVbml0Pihjb21wdXRlU2Nyb2xsU25hcEFsaWduT2Zmc2V0KHNjcm9sbFNu
YXBBcmVhLnkoKSwgc2Nyb2xsU25hcEFyZWEuaGVpZ2h0KCksIGFsaWdubWVudC55KSAtIGNvbXB1
dGVTY3JvbGxTbmFwQWxpZ25PZmZzZXQoc2Nyb2xsU25hcFBvcnQueSgpLCBzY3JvbGxTbmFwUG9y
dC5oZWlnaHQoKSwgYWxpZ25tZW50LnkpLCAwLCBtYXhTY3JvbGxUb3ApOworICAgICAgICAgICAg
YXV0byBhYnNvbHV0ZVNjcm9sbFlQb3NpdGlvbiA9IGNvbXB1dGVTY3JvbGxTbmFwQWxpZ25PZmZz
ZXQoc2Nyb2xsU25hcEFyZWEueSgpLCBzY3JvbGxTbmFwQXJlYS5oZWlnaHQoKSwgYWxpZ25tZW50
LnkpIC0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxTbmFwUG9ydC55KCksIHNj
cm9sbFNuYXBQb3J0LmhlaWdodCgpLCBhbGlnbm1lbnQueSk7CisgICAgICAgICAgICBhdXRvIGFi
c29sdXRlU2Nyb2xsT2Zmc2V0ID0gY2xhbXBUbzxpbnQ+KHNjcm9sbGFibGVBcmVhLnNjcm9sbE9m
ZnNldEZyb21Qb3NpdGlvbih7IDAsIHJvdW5kVG9JbnQoYWJzb2x1dGVTY3JvbGxZUG9zaXRpb24p
IH0pLnkoKSwgMCwgbWF4U2Nyb2xsT2Zmc2V0LnkoKSk7CiAgICAgICAgICAgICBpZiAoIXNlZW5W
ZXJ0aWNhbFNuYXBPZmZzZXRzLmNvbnRhaW5zKGFic29sdXRlU2Nyb2xsT2Zmc2V0KSkgewogICAg
ICAgICAgICAgICAgIHNlZW5WZXJ0aWNhbFNuYXBPZmZzZXRzLmFkZChhYnNvbHV0ZVNjcm9sbE9m
ZnNldCk7CiAgICAgICAgICAgICAgICAgdmVydGljYWxTbmFwT2Zmc2V0cy5hcHBlbmQoYWJzb2x1
dGVTY3JvbGxPZmZzZXQpOwpAQCAtMjI1LDcgKzIyOCw3IEBAIHZvaWQgdXBkYXRlU25hcE9mZnNl
dHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIEhUTUxF
bGVtCiAgICAgfQogCiAgICAgaWYgKCFob3Jpem9udGFsU25hcE9mZnNldHMuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGFkanVzdEF4aXNTbmFwT2Zmc2V0c0ZvclNjcm9sbEV4dGVudChob3Jpem9udGFs
U25hcE9mZnNldHMsIG1heFNjcm9sbExlZnQpOworICAgICAgICBhZGp1c3RBeGlzU25hcE9mZnNl
dHNGb3JTY3JvbGxFeHRlbnQoaG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBtYXhTY3JvbGxPZmZzZXQu
eCgpKTsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAiID0+
IENvbXB1dGVkIGhvcml6b250YWwgc2Nyb2xsIHNuYXAgb2Zmc2V0czogIiA8PCBob3Jpem9udGFs
U25hcE9mZnNldHMpOwogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFt
IDw8ICIgPT4gQ29tcHV0ZWQgaG9yaXpvbnRhbCBzY3JvbGwgc25hcCBvZmZzZXQgcmFuZ2VzOiAi
IDw8IGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKTsKICAgICAgICAgaWYgKHNjcm9sbFNuYXBU
eXBlLnN0cmljdG5lc3MgPT0gU2Nyb2xsU25hcFN0cmljdG5lc3M6OlByb3hpbWl0eSkKQEAgLTIz
Nyw3ICsyNDAsNyBAQCB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Ny
b2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBIVE1MRWxlbQogICAgICAgICBzY3JvbGxhYmxl
QXJlYS5jbGVhckhvcml6b250YWxTbmFwT2Zmc2V0cygpOwogCiAgICAgaWYgKCF2ZXJ0aWNhbFNu
YXBPZmZzZXRzLmlzRW1wdHkoKSkgewotICAgICAgICBhZGp1c3RBeGlzU25hcE9mZnNldHNGb3JT
Y3JvbGxFeHRlbnQodmVydGljYWxTbmFwT2Zmc2V0cywgbWF4U2Nyb2xsVG9wKTsKKyAgICAgICAg
YWRqdXN0QXhpc1NuYXBPZmZzZXRzRm9yU2Nyb2xsRXh0ZW50KHZlcnRpY2FsU25hcE9mZnNldHMs
IG1heFNjcm9sbE9mZnNldC55KCkpOwogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25h
cCwgc3RyZWFtIDw8ICIgPT4gQ29tcHV0ZWQgdmVydGljYWwgc2Nyb2xsIHNuYXAgb2Zmc2V0czog
IiA8PCB2ZXJ0aWNhbFNuYXBPZmZzZXRzKTsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9s
bFNuYXAsIHN0cmVhbSA8PCAiID0+IENvbXB1dGVkIHZlcnRpY2FsIHNjcm9sbCBzbmFwIG9mZnNl
dCByYW5nZXM6ICIgPDwgdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKTsKICAgICAgICAgaWYgKHNj
cm9sbFNuYXBUeXBlLnN0cmljdG5lc3MgPT0gU2Nyb2xsU25hcFN0cmljdG5lc3M6OlByb3hpbWl0
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KaW5k
ZXggZjc5N2EzZTk5MDY3MTRmZDE0MGFlNDMzYmJmZmY4YzRiNjE0MTQ2OC4uYThhOTI5NDBlNWQ3
NTlmY2YyODc0NDE0NWIxOTBlODQ0M2RiYTI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KQEAgLTMyOCw3ICszMjgsNyBAQCB2b2lkIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OmFkanVzdFNjcm9sbFBvc2l0aW9uVG9C
b3VuZHNJZk5lY2VzcwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiBGbG9hdFBvaW50IFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNjcm9sbE9mZnNldCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpOworICAgIHJldHVybiBTY3Jv
bGxhYmxlQXJlYTo6c2Nyb2xsT2Zmc2V0RnJvbVBvc2l0aW9uKGN1cnJlbnRTY3JvbGxQb3NpdGlv
bigpLCBzY3JvbGxPcmlnaW4oKSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU1hYzo6aW1tZWRpYXRlU2Nyb2xsT25BeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlz
LCBmbG9hdCBkZWx0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNw
cAppbmRleCAxYzA4MGNiYTlhNjJkNzE3NDE2NDlkMDg4MmQzMzRkODAzMzQ2ZTNkLi42NGIwYWY0
ZTNhNjljNTU1NjQ1MTgxNmJkOGJhNzM2MDAzZjgyYWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC0yMDAsOCArMjAwLDggQEAgdm9pZCBTY3JvbGxB
bmltYXRvcjo6c2V0Q3VycmVudFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQog
dm9pZCBTY3JvbGxBbmltYXRvcjo6dXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0
KCkKIHsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIC8vIEZJWE1FOiBOZWVkcyBv
ZmZzZXQvcG9zaXRpb24gZGlzYW1iaWd1YXRpb24uCi0gICAgbV9zY3JvbGxDb250cm9sbGVyLnNl
dEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzRm9yT2Zmc2V0KG1fY3VycmVudFBvc2l0aW9uLngoKSwg
bV9jdXJyZW50UG9zaXRpb24ueSgpKTsKKyAgICBhdXRvIHNjcm9sbE9mZnNldCA9IG1fc2Nyb2xs
YWJsZUFyZWEuc2Nyb2xsT2Zmc2V0RnJvbVBvc2l0aW9uKHJvdW5kZWRJbnRQb2ludChjdXJyZW50
UG9zaXRpb24oKSkpOworICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zZXRBY3RpdmVTY3JvbGxTbmFw
SW5kaWNlc0Zvck9mZnNldChzY3JvbGxPZmZzZXQpOwogICAgIGlmIChtX3Njcm9sbENvbnRyb2xs
ZXIuYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlKCkpIHsKICAgICAgICAgbV9zY3JvbGxh
YmxlQXJlYS5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KG1fc2Nyb2xsQ29udHJv
bGxlci5hY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpv
bnRhbCkpOwogICAgICAgICBtX3Njcm9sbGFibGVBcmVhLnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQ
b2ludEluZGV4KG1fc2Nyb2xsQ29udHJvbGxlci5hY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlz
KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpKTsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFNj
cm9sbEFuaW1hdG9yOjp1cGRhdGVTY3JvbGxTbmFwU3RhdGUoKQogCiBGbG9hdFBvaW50IFNjcm9s
bEFuaW1hdG9yOjpzY3JvbGxPZmZzZXQoKSBjb25zdAogewotICAgIHJldHVybiBtX2N1cnJlbnRQ
b3NpdGlvbjsKKyAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxPZmZzZXRGcm9tUG9z
aXRpb24ocm91bmRlZEludFBvaW50KGN1cnJlbnRQb3NpdGlvbigpKSk7CiB9CiAKIHZvaWQgU2Ny
b2xsQW5pbWF0b3I6OmltbWVkaWF0ZVNjcm9sbE9uQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcywg
ZmxvYXQgZGVsdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxU
eXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaAppbmRleCAzMTdi
NjUyZmNlNGNiOTMxMTVhNmQzZDQ5NGNlNDdlNjg2NzAyNzgzLi5hMjIwMWNjNmRiNmRlNDJiZjhh
MzA4NDQ5NWJjM2E5MGFmNzc4OThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVz
LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJJbnRQb2lu
dC5oIgogI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgpAQCAtMzUsNiArMzYsMTEgQEAgY2xhc3MgVGV4dFN0
cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBzY3JvbGxQb3NpdGlvbiBpcyBpbiBj
b250ZW50IGNvb3JkaW5hdGVzICgwLDAgaXMgYXQgc2Nyb2xsT3JpZ2luKSwgc28gbWF5IGhhdmUg
bmVnYXRpdmUgY29tcG9uZW50cy4KK3VzaW5nIFNjcm9sbFBvc2l0aW9uID0gSW50UG9pbnQ7Cisv
LyBzY3JvbGxPZmZzZXQoKSBpcyB0aGUgdmFsdWUgdXNlZCBieSBzY3JvbGxiYXJzIChtaW4gaXMg
MCwwKSwgYW5kIHNob3VsZCBuZXZlciBoYXZlIG5lZ2F0aXZlIGNvbXBvbmVudHMuCit1c2luZyBT
Y3JvbGxPZmZzZXQgPSBJbnRQb2ludDsKKyAgICAKIGVudW0gY2xhc3MgU2Nyb2xsVHlwZSA6IGJv
b2wgewogICAgIFVzZXIsCiAgICAgUHJvZ3JhbW1hdGljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaAppbmRleCA4YjQ0MWEzZjM4NjU3YmJiZmNmMjFkYmE5ZTBhY2FmODJm
NjE0MmRmLi5jY2QxYTZkNmEyNTZiODJhZjIxYTZlNWMzMjAxOTU0ZjA1ZjlmYmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTQ3LDExICs0Nyw2IEBAIGNs
YXNzIFNjcm9sbEFuaW1hdG9yOwogY2xhc3MgR3JhcGhpY3NMYXllcjsKIGNsYXNzIFRpbGVkQmFj
a2luZzsKIAotLy8gc2Nyb2xsUG9zaXRpb24gaXMgaW4gY29udGVudCBjb29yZGluYXRlcyAoMCww
IGlzIGF0IHNjcm9sbE9yaWdpbiksIHNvIG1heSBoYXZlIG5lZ2F0aXZlIGNvbXBvbmVudHMuCi10
eXBlZGVmIEludFBvaW50IFNjcm9sbFBvc2l0aW9uOwotLy8gc2Nyb2xsT2Zmc2V0KCkgaXMgdGhl
IHZhbHVlIHVzZWQgYnkgc2Nyb2xsYmFycyAobWluIGlzIDAsMCksIGFuZCBzaG91bGQgbmV2ZXIg
aGF2ZSBuZWdhdGl2ZSBjb21wb25lbnRzLgotdHlwZWRlZiBJbnRQb2ludCBTY3JvbGxPZmZzZXQ7
Ci0KIGlubGluZSBpbnQgb2Zmc2V0Rm9yT3JpZW50YXRpb24oU2Nyb2xsT2Zmc2V0IG9mZnNldCwg
U2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgc3dpdGNoIChvcmllbnRh
dGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xs
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJv
bGxlci5oCmluZGV4IGQ5ZmY2ZThiM2RjNjgxZjkzNTQzMDVhMTY2MDVmN2NmNzQ0ZTZjYTQuLjQz
MWM0ZTExYjc2YzlmNGUyMDBhNzc4MThjMzY5MzE0ZTJkNzQ5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLmgKQEAgLTE0NCw3ICsxNDQs
NyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICB2b2lkIHVwZGF0
ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5p
dD4mLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+Jik7CiAgICAg
dm9pZCBzZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcywgdW5z
aWduZWQpOwotICAgIHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXNGb3JPZmZzZXQoaW50
IHgsIGludCB5KTsKKyAgICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzRm9yT2Zmc2V0
KFNjcm9sbE9mZnNldCk7CiAgICAgYm9vbCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZTsgfQogICAg
IHZvaWQgc2V0U2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlKGJvb2wgc3RhdGUpIHsgbV9hY3RpdmVT
Y3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UgPSBzdGF0ZTsgfQogICAgIHVuc2lnbmVkIGFjdGl2ZVNj
cm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCmluZGV4IDE4MjY0
MDIxMGRjN2IyNTM4MWVlMDMxNzdhMTc5YTdhNjdlZjUyNTQuLjIzNzIwZjFkMDM1ZWU2YzJjNGRi
MDFiYTIwNDY4MzI1NWFmMDUwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAtNzcxLDE3ICs3NzEsMjQgQEAgdm9pZCBTY3Jv
bGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwU3RhdGUoY29uc3QgU2Nyb2xsYWJsZUFyZWEm
IHNjcm9sbGFibGVBcmUKIAogdm9pZCBTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFw
UG9pbnRzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4mIHNu
YXBQb2ludHMsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIHNu
YXBSYW5nZXMpCiB7CisgICAgYm9vbCBzaG91bGRDb21wdXRlQ3VycmVudFNuYXBJbmRpY2VzID0g
ZmFsc2U7CiAgICAgaWYgKCFtX3Njcm9sbFNuYXBTdGF0ZSkgewogICAgICAgICBpZiAoc25hcFBv
aW50cy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9zY3JvbGxT
bmFwU3RhdGUgPSBtYWtlVW5pcXVlPFNjcm9sbFNuYXBBbmltYXRvclN0YXRlPigpOworICAgICAg
ICBzaG91bGRDb21wdXRlQ3VycmVudFNuYXBJbmRpY2VzID0gdHJ1ZTsKICAgICB9CiAKICAgICBp
ZiAoc25hcFBvaW50cy5pc0VtcHR5KCkgJiYgbV9zY3JvbGxTbmFwU3RhdGUtPnNuYXBPZmZzZXRz
Rm9yQXhpcyhvdGhlclNjcm9sbEV2ZW50QXhpcyhheGlzKSkuaXNFbXB0eSgpKQogICAgICAgICBt
X3Njcm9sbFNuYXBTdGF0ZSA9IG51bGxwdHI7Ci0gICAgZWxzZQorICAgIGVsc2UgewogICAgICAg
ICBtX3Njcm9sbFNuYXBTdGF0ZS0+c2V0U25hcE9mZnNldHNBbmRQb3NpdGlvblJhbmdlc0ZvckF4
aXMoYXhpcywgc25hcFBvaW50cywgc25hcFJhbmdlcyk7CisgICAgICAgIGlmIChzaG91bGRDb21w
dXRlQ3VycmVudFNuYXBJbmRpY2VzKSB7CisgICAgICAgICAgICBzZXRBY3RpdmVTY3JvbGxTbmFw
SW5kaWNlc0Zvck9mZnNldChyb3VuZGVkSW50UG9pbnQobV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCkp
KTsKKy8vICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJT
Y3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRzIC0gY29tcHV0ZWQgaW5pdGlh
bCBzbmFwIGluZGljZXM6IHggIiA8PCBtX3Njcm9sbFNuYXBTdGF0ZS0+YWN0aXZlU25hcEluZGV4
Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpIDw8ICIsIHkgIiA8PCBtX3Njcm9s
bFNuYXBTdGF0ZS0+YWN0aXZlU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRp
Y2FsKSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHVuc2lnbmVkIFNjcm9sbENvbnRyb2xsZXI6
OmFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMpIGNvbnN0
CkBAIC04MjQsMTMgKzgzMSwxMyBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnNldE5lYXJlc3RT
Y3JvbGxTbmFwSW5kZXhGb3JBeGlzQW5kT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcwogICAgIHNldEFj
dGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoYXhpcywgYWN0aXZlSW5kZXgpOwogfQogCi12b2lk
IFNjcm9sbENvbnRyb2xsZXI6OnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzRm9yT2Zmc2V0KGlu
dCB4LCBpbnQgeSkKK3ZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6c2V0QWN0aXZlU2Nyb2xsU25hcElu
ZGljZXNGb3JPZmZzZXQoU2Nyb2xsT2Zmc2V0IG9mZnNldCkKIHsKICAgICBpZiAoIW1fc2Nyb2xs
U25hcFN0YXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXROZWFyZXN0U2Nyb2xsU25hcElu
ZGV4Rm9yQXhpc0FuZE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHgpOwotICAg
IHNldE5lYXJlc3RTY3JvbGxTbmFwSW5kZXhGb3JBeGlzQW5kT2Zmc2V0KFNjcm9sbEV2ZW50QXhp
czo6VmVydGljYWwsIHkpOworICAgIHNldE5lYXJlc3RTY3JvbGxTbmFwSW5kZXhGb3JBeGlzQW5k
T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgb2Zmc2V0LngoKSk7CisgICAgc2V0
TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpW
ZXJ0aWNhbCwgb2Zmc2V0LnkoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQppbmRleCA5MjAwZGRjMjZmNDUxOTY0YTA1
YjAwNGQyOTY0ZWMzMmMwYzZiM2U5Li4xZWYwODlkZGZlOTVjNDVlZmMyNWYyMmIyMjEyNzQ0Nzdk
M2E5Mzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2Vi
Vmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmll
d0lPUy5tbQpAQCAtMjAwMCw3ICsyMDAwLDcgQEAgLSAodm9pZClfdXBkYXRlVmlzaWJsZUNvbnRl
bnRSZWN0cwogICAgICAgICBXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkq
IGNvb3JkaW5hdG9yID0gX3BhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKTsKICAgICAg
ICAgaWYgKGNvb3JkaW5hdG9yICYmIGNvb3JkaW5hdG9yLT5oYXNBY3RpdmVTbmFwUG9pbnQoKSkg
ewogICAgICAgICAgICAgQ0dQb2ludCBjdXJyZW50UG9pbnQgPSBbX3Njcm9sbFZpZXcgY29udGVu
dE9mZnNldF07Ci0gICAgICAgICAgICBDR1BvaW50IGFjdGl2ZVBvaW50ID0gY29vcmRpbmF0b3It
Pm5lYXJlc3RBY3RpdmVDb250ZW50SW5zZXRBZGp1c3RlZFNuYXBQb2ludCh1bm9ic2N1cmVkUmVj
dC5vcmlnaW4ueSwgY3VycmVudFBvaW50KTsKKyAgICAgICAgICAgIENHUG9pbnQgYWN0aXZlUG9p
bnQgPSBjb29yZGluYXRvci0+bmVhcmVzdEFjdGl2ZUNvbnRlbnRJbnNldEFkanVzdGVkU25hcE9m
ZnNldCh1bm9ic2N1cmVkUmVjdC5vcmlnaW4ueSwgY3VycmVudFBvaW50KTsKIAogICAgICAgICAg
ICAgaWYgKCFDR1BvaW50RXF1YWxUb1BvaW50KGFjdGl2ZVBvaW50LCBjdXJyZW50UG9pbnQpKSB7
CiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPFdLU2Nyb2xsVmlldz4gc3Ryb25nU2Nyb2xsVmll
dyA9IF9zY3JvbGxWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5LmgKaW5kZXggMmVkMzVmMGEzY2NjOTdlZTFhM2FiZmRhZGQ1MzNiYTlmMDYwMmE1OC4u
NDMxNDUyNmExZmMyYzYwYjZjMGNkOTA5NDJhMGRhMmNhODQxMmFjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCkBAIC05OSw3ICs5OSw3IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHZvaWQgYWRqdXN0VGFyZ2V0
Q29udGVudE9mZnNldEZvclNuYXBwaW5nKENHU2l6ZSBtYXhTY3JvbGxEaW1lbnNpb25zLCBDR1Bv
aW50IHZlbG9jaXR5LCBDR0Zsb2F0IHRvcEluc2V0LCBDR1BvaW50KiB0YXJnZXRDb250ZW50T2Zm
c2V0KTsKICAgICBib29sIGhhc0FjdGl2ZVNuYXBQb2ludCgpIGNvbnN0OwotICAgIENHUG9pbnQg
bmVhcmVzdEFjdGl2ZUNvbnRlbnRJbnNldEFkanVzdGVkU25hcFBvaW50KENHRmxvYXQgdG9wSW5z
ZXQsIGNvbnN0IENHUG9pbnQmKSBjb25zdDsKKyAgICBDR1BvaW50IG5lYXJlc3RBY3RpdmVDb250
ZW50SW5zZXRBZGp1c3RlZFNuYXBPZmZzZXQoQ0dGbG9hdCB0b3BJbnNldCwgY29uc3QgQ0dQb2lu
dCYpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkU2V0U2Nyb2xsVmlld0RlY2VsZXJhdGlvblJhdGVG
YXN0KCkgY29uc3Q7CiAjZW5kaWYKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IGQxZWNlYWE2ZDM1ZTcy
OGVlMTc0ZmM4ZGMwNTI0NTI0YmYzMmE1ODYuLmNjMzEyODQ2ZDg3MDE5N2Q2MWE3Y2ZlODA4ZDVl
NzQzZjhjNWYwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KQEAgLTIwNSw4ICsyMDUsOCBAQCBib29sIFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnNob3VsZFNuYXBGb3JNYWluRnJhbWVTY3JvbGxpbmco
U2Nyb2xsRXZlbgogewogICAgIFNjcm9sbGluZ1RyZWVOb2RlKiByb290ID0gbV9zY3JvbGxpbmdU
cmVlLT5yb290Tm9kZSgpOwogICAgIGlmIChyb290ICYmIHJvb3QtPmlzRnJhbWVTY3JvbGxpbmdO
b2RlKCkpIHsKLSAgICAgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSogcm9vdEZy
YW1lID0gc3RhdGljX2Nhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSo+KHJvb3Qp
OwotICAgICAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cyA9IGF4aXMgPT0gU2Ny
b2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gcm9vdEZyYW1lLT5ob3Jpem9udGFsU25hcE9mZnNl
dHMoKSA6IHJvb3RGcmFtZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpOworICAgICAgICBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKiByb290U2Nyb2xsaW5nTm9kZSA9IHN0YXRpY19jYXN0
PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUqPihyb290KTsKKyAgICAgICAgY29uc3Qg
VmVjdG9yPGZsb2F0PiYgc25hcE9mZnNldHMgPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9y
aXpvbnRhbCA/IHJvb3RTY3JvbGxpbmdOb2RlLT5ob3Jpem9udGFsU25hcE9mZnNldHMoKSA6IHJv
b3RTY3JvbGxpbmdOb2RlLT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCk7CiAgICAgICAgIHVuc2lnbmVk
IGN1cnJlbnRJbmRleCA9IGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gbV9j
dXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4IDogbV9jdXJyZW50VmVydGljYWxTbmFwUG9p
bnRJbmRleDsKICAgICAgICAgcmV0dXJuIHNuYXBPZmZzZXRzLnNpemUoKSAmJiAoY3VycmVudElu
ZGV4IDwgc25hcE9mZnNldHMuc2l6ZSgpIHx8IGN1cnJlbnRJbmRleCA9PSBpbnZhbGlkU25hcE9m
ZnNldEluZGV4KTsKICAgICB9CkBAIC0yMTcsOSArMjE3LDkgQEAgZmxvYXQgUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eTo6Y2xvc2VzdFNuYXBPZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxp
bmcoU2MKIHsKICAgICBTY3JvbGxpbmdUcmVlTm9kZSogcm9vdCA9IG1fc2Nyb2xsaW5nVHJlZS0+
cm9vdE5vZGUoKTsKICAgICBBU1NFUlQocm9vdCAmJiByb290LT5pc0ZyYW1lU2Nyb2xsaW5nTm9k
ZSgpKTsKLSAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKiByb290RnJhbWUgPSBz
dGF0aWNfY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKj4ocm9vdCk7Ci0gICAg
Y29uc3QgVmVjdG9yPGZsb2F0PiYgc25hcE9mZnNldHMgPSBheGlzID09IFNjcm9sbEV2ZW50QXhp
czo6SG9yaXpvbnRhbCA/IHJvb3RGcmFtZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkgOiByb290
RnJhbWUtPnZlcnRpY2FsU25hcE9mZnNldHMoKTsKLSAgICBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zm
c2V0UmFuZ2U8ZmxvYXQ+PiYgc25hcE9mZnNldFJhbmdlcyA9IGF4aXMgPT0gU2Nyb2xsRXZlbnRB
eGlzOjpIb3Jpem9udGFsID8gcm9vdEZyYW1lLT5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygp
IDogcm9vdEZyYW1lLT52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoKTsKKyAgICBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlKiByb290U2Nyb2xsaW5nTm9kZSA9IHN0YXRpY19jYXN0PFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUqPihyb290KTsKKyAgICBjb25zdCBWZWN0b3I8
ZmxvYXQ+JiBzbmFwT2Zmc2V0cyA9IGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFs
ID8gcm9vdFNjcm9sbGluZ05vZGUtPmhvcml6b250YWxTbmFwT2Zmc2V0cygpIDogcm9vdFNjcm9s
bGluZ05vZGUtPnZlcnRpY2FsU25hcE9mZnNldHMoKTsKKyAgICBjb25zdCBWZWN0b3I8U2Nyb2xs
T2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgc25hcE9mZnNldFJhbmdlcyA9IGF4aXMgPT0gU2Nyb2xsRXZl
bnRBeGlzOjpIb3Jpem9udGFsID8gcm9vdFNjcm9sbGluZ05vZGUtPmhvcml6b250YWxTbmFwT2Zm
c2V0UmFuZ2VzKCkgOiByb290U2Nyb2xsaW5nTm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0UmFuZ2Vz
KCk7CiAKICAgICBmbG9hdCBzY2FsZWRTY3JvbGxEZXN0aW5hdGlvbiA9IHNjcm9sbERlc3RpbmF0
aW9uIC8gbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7CiAgICAgZmxvYXQg
cmF3Q2xvc2VzdFNuYXBPZmZzZXQgPSBjbG9zZXN0U25hcE9mZnNldChzbmFwT2Zmc2V0cywgc25h
cE9mZnNldFJhbmdlcywgc2NhbGVkU2Nyb2xsRGVzdGluYXRpb24sIHZlbG9jaXR5LCBjdXJyZW50
SW5kZXgpOwpAQCAtMjM1LDkgKzIzNSw5IEBAIGJvb2wgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eTo6aGFzQWN0aXZlU25hcFBvaW50KCkgY29uc3QKICAgICBpZiAoIWlzPFNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KHJvb3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlJiByb290RnJhbWUgPSBkb3duY2Fz
dDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPigqcm9vdCk7Ci0gICAgY29uc3QgVmVj
dG9yPGZsb2F0PiYgaG9yaXpvbnRhbCA9IHJvb3RGcmFtZS5ob3Jpem9udGFsU25hcE9mZnNldHMo
KTsKLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNhbCA9IHJvb3RGcmFtZS52ZXJ0aWNh
bFNuYXBPZmZzZXRzKCk7CisgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSYgcm9v
dFNjcm9sbGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
Pigqcm9vdCk7CisgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRhbCA9IHJvb3RTY3Jv
bGxpbmdOb2RlLmhvcml6b250YWxTbmFwT2Zmc2V0cygpOworICAgIGNvbnN0IFZlY3RvcjxmbG9h
dD4mIHZlcnRpY2FsID0gcm9vdFNjcm9sbGluZ05vZGUudmVydGljYWxTbmFwT2Zmc2V0cygpOwog
CiAgICAgaWYgKGhvcml6b250YWwuaXNFbXB0eSgpICYmIHZlcnRpY2FsLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjUwLDE1ICsyNTAsMTUgQEAgYm9vbCBSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5OjpoYXNBY3RpdmVTbmFwUG9pbnQoKSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogICAgIAotQ0dQb2ludCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5OjpuZWFyZXN0QWN0aXZlQ29udGVudEluc2V0QWRqdXN0ZWRTbmFwUG9pbnQoQ0dGbG9hdCB0
b3BJbnNldCwgY29uc3QgQ0dQb2ludCYgY3VycmVudFBvaW50KSBjb25zdAorQ0dQb2ludCBSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpuZWFyZXN0QWN0aXZlQ29udGVudEluc2V0QWRq
dXN0ZWRTbmFwT2Zmc2V0KENHRmxvYXQgdG9wSW5zZXQsIGNvbnN0IENHUG9pbnQmIGN1cnJlbnRQ
b2ludCkgY29uc3QKIHsKICAgICBDR1BvaW50IGFjdGl2ZVBvaW50ID0gY3VycmVudFBvaW50Owog
CiAgICAgU2Nyb2xsaW5nVHJlZU5vZGUqIHJvb3QgPSBtX3Njcm9sbGluZ1RyZWUtPnJvb3ROb2Rl
KCk7CiAgICAgQVNTRVJUKHJvb3QgJiYgaXM8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZT4ocm9vdCkpOwotICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUmIHJvb3RGcmFt
ZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KCpyb290KTsKLSAg
ICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBob3Jpem9udGFsID0gcm9vdEZyYW1lLmhvcml6b250YWxT
bmFwT2Zmc2V0cygpOwotICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZlcnRpY2FsID0gcm9vdEZy
YW1lLnZlcnRpY2FsU25hcE9mZnNldHMoKTsKKyAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlJiByb290U2Nyb2xsaW5nTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGU+KCpyb290KTsKKyAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBob3Jpem9udGFs
ID0gcm9vdFNjcm9sbGluZ05vZGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCk7CisgICAgY29uc3Qg
VmVjdG9yPGZsb2F0PiYgdmVydGljYWwgPSByb290U2Nyb2xsaW5nTm9kZS52ZXJ0aWNhbFNuYXBP
ZmZzZXRzKCk7CiAKICAgICAvLyBUaGUgYm91bmRzIGNoZWNraW5nIHdpdGggbWF4U2Nyb2xsT2Zm
c2V0cyBpcyB0byBlbnN1cmUgdGhhdCB3ZSB3b24ndCBpbnRlcmZlcmUgd2l0aCBydWJiZXItYmFu
ZGluZyB3aGVuIHNjcm9sbGluZyB0byB0aGUgZWRnZSBvZiB0aGUgcGFnZS4KICAgICBpZiAoIWhv
cml6b250YWwuaXNFbXB0eSgpICYmIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCA8
IGhvcml6b250YWwuc2l6ZSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405241</attachid>
            <date>2020-07-25 22:23:23 -0700</date>
            <delta_ts>2020-07-26 16:58:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193671-20200725222322.patch</filename>
            <type>text/plain</type>
            <size>52422</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0ODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFiOTEzMGVkNTM3OTMz
NTg1N2IxZmY3MDBkZDMyYzZjMzA4YmQ1MC4uMTNlZTBjM2U0NGIyMTczZGM2NGEyOWUwZjM4YjI3
YmEzNjMzNDQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIwLTA3LTI1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFNjcm9sbCBTbmFw
IGJyb2tlbiB3aGVuIHVzaW5nIFJUTCBsYXlvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzY3MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDc0
NTc0NzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhlcmUgd2VyZSB2YXJpb3VzIHBsYWNlcyBpbiB0aGUgc2Nyb2xsIHNuYXBwaW5nIGNvZGUgd2hp
Y2ggY29uZnVzZWQgc2Nyb2xsIG9mZnNldHMgKHplcm8tYmFzZWQpCisgICAgICAgIHdpdGggc2Ny
b2xsIHBvc2l0aW9ucyAocmVsYXRpdmUgdG8gc2Nyb2xsIG9yaWdpbiwgY2FuIGJlIG5lZ2F0aXZl
KS4gVGhpcyBicm9rZSBzbmFwcGluZyBpbgorICAgICAgICBgZGlyZWN0aW9uOiBydGxgIGNvbnRl
bnQuCisgICAgICAgIAorICAgICAgICBUaGUgY29tcHV0YXRpb24gb2Ygc25hcCBsb2NhdGlvbnMg
aW4gdXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYSgpIHdhcyBhbHNvIGJyb2tlbgor
ICAgICAgICBpbiBSVEw7IHdlIG5lZWQgdG8gc25hcCB0aGUgcmlnaHQgZWRnZSBvZiBib3hlcyB0
byB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgc2Nyb2xsZXIgZm9yIHRoZSAnc3RhcnQnCisgICAgICAg
IGFsaWdubWVudC4gKFNuYXBwaW5nIGZvciBMVFIgYm94ZXMgaW4gYW4gUlRMIHNjcm9sbGVyIGlz
IHBvb3JseSBkZWZpbmVkOyBmb3Igbm93LCBmb2xsb3cgR2Vja28uKQorCisgICAgICAgIFRlc3Rz
OiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLTJkLWNoYW5nZS1heGlzLXR5cGUtcnRsLmh0
bWwKKyAgICAgICAgICAgICAgIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtMmQtb2Zmc2V0
cy1jb21wdXRlZC1pbmRlcGVuZGVudGx5LnJ0bC5odG1sCisgICAgICAgICAgICAgICBjc3MzL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWVsZW1lbnRzLWNvbnRhaW5lci1sYXJnZXItdGhhbi1jaGls
ZHJlbi1ydGwuaHRtbAorICAgICAgICAgICAgICAgY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtcnRsLmh0bWwKKyAgICAgICAgICAgICAgIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtb2Zmc2V0cy1taXhlZC1ydGwuaHRtbAorICAgICAgICAgICAgICAgY3NzMy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1vZmZzZXRzLXJ0bC5odG1sCisKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0
ZVNjcm9sbFNuYXBBbGlnbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVTbmFwT2Zm
c2V0c0ZvclNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnNjcm9sbE9mZnNldCBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3I6OnVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvck9mZnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsT2Zmc2V0IGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyk6CisK
IDIwMjAtMDctMjUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgU29tZSBzY3JvbGwgc25hcCBjbGVhbnVwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZlYmMyZDI4YjFkY2Mw
MmE3MGQwMGMzNjA2N2QzMTE3YjBlNWY1NGMuLjEwOGJkOTdkZDMxZWEzNjJjOTVhZTlkN2U1ODA2
ODgyMmVmNDZhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDctMjUgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgU2Nyb2xsIFNuYXAg
YnJva2VuIHdoZW4gdXNpbmcgUlRMIGxheW91dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjcxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzQ1
NzQ3MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGVyZSB3ZXJlIHZhcmlvdXMgcGxhY2VzIGluIHRoZSBzY3JvbGwgc25hcHBpbmcgY29kZSB3aGlj
aCBjb25mdXNlZCBzY3JvbGwgb2Zmc2V0cyAoemVyby1iYXNlZCkKKyAgICAgICAgd2l0aCBzY3Jv
bGwgcG9zaXRpb25zIChyZWxhdGl2ZSB0byBzY3JvbGwgb3JpZ2luLCBjYW4gYmUgbmVnYXRpdmUp
LiBUaGlzIGJyb2tlIHNuYXBwaW5nIGluCisgICAgICAgIGBkaXJlY3Rpb246IHJ0bGAgY29udGVu
dC4KKyAgICAgICAgCisgICAgICAgIFRoZSBjb21wdXRhdGlvbiBvZiBzbmFwIGxvY2F0aW9ucyBp
biB1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKCkgd2FzIGFsc28gYnJva2VuCisg
ICAgICAgIGluIFJUTDsgd2UgbmVlZCB0byBzbmFwIHRoZSByaWdodCBlZGdlIG9mIGJveGVzIHRv
IHRoZSByaWdodCBlZGdlIG9mIHRoZSBzY3JvbGxlciBmb3IgdGhlICdzdGFydCcKKyAgICAgICAg
YWxpZ25tZW50LiAoU25hcHBpbmcgZm9yIExUUiBib3hlcyBpbiBhbiBSVEwgc2Nyb2xsZXIgaXMg
cG9vcmx5IGRlZmluZWQ7IGZvciBub3csIGZvbGxvdyBHZWNrby4pCisKKyAgICAgICAgKiBTaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpkdW1wKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lv
cy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNv
bnRlbnRSZWN0c10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW06CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnNob3VsZFNuYXBG
b3JNYWluRnJhbWVTY3JvbGxpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9s
bGluZyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHk6Omhhc0FjdGl2ZVNuYXBQb2ludCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6Om5lYXJlc3RBY3RpdmVDb250ZW50SW5zZXRBZGp1
c3RlZFNuYXBPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5OjpuZWFyZXN0QWN0aXZlQ29udGVudEluc2V0QWRqdXN0ZWRTbmFwUG9p
bnQgY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTA3LTI1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNjQ2OTApOiBbIGlPUyB3
azIgXSBlZGl0aW5nL3NlbGVjdGlvbi9zaGlmdC1jbGljay1pbmNsdWRlcy1leGlzdGluZy1zZWxl
Y3Rpb24uaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwCmluZGV4IDNjYmYxNjQ3
MTc0YjFiNzZiNjY2MWZlOGNkNDk5NzkzMTYwNjdjOWQuLmQzYzhjNDk3MTkxMGJmNDM4MWZkM2U1
NTNmYzRmMWM4ZjkwNTc1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcApAQCAtNTYsMTUgKzU2LDE1IEBAIHN0
YXRpYyBMYXlvdXRSZWN0IGNvbXB1dGVTY3JvbGxTbmFwUG9ydE9yQXJlYVJlY3QoY29uc3QgTGF5
b3V0UmVjdCYgcmVjdCwgY29uc3QKICAgICByZXR1cm4gc25hcFBvcnRPckFyZWE7CiB9CiAKLXN0
YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVTY3JvbGxTbmFwQWxpZ25PZmZzZXQoY29uc3QgTGF5b3V0
VW5pdCYgbGVmdE9yVG9wLCBjb25zdCBMYXlvdXRVbml0JiB3aWR0aE9ySGVpZ2h0LCBTY3JvbGxT
bmFwQXhpc0FsaWduVHlwZSBhbGlnbm1lbnQpCitzdGF0aWMgTGF5b3V0VW5pdCBjb21wdXRlU2Ny
b2xsU25hcEFsaWduT2Zmc2V0KExheW91dFVuaXQgbWluTG9jYXRpb24sIExheW91dFVuaXQgbWF4
TG9jYXRpb24sIFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlIGFsaWdubWVudCwgYm9vbCBpc1JUTCkK
IHsKICAgICBzd2l0Y2ggKGFsaWdubWVudCkgewogICAgIGNhc2UgU2Nyb2xsU25hcEF4aXNBbGln
blR5cGU6OlN0YXJ0OgotICAgICAgICByZXR1cm4gbGVmdE9yVG9wOworICAgICAgICByZXR1cm4g
aXNSVEwgPyBtYXhMb2NhdGlvbiA6IG1pbkxvY2F0aW9uOwogICAgIGNhc2UgU2Nyb2xsU25hcEF4
aXNBbGlnblR5cGU6OkNlbnRlcjoKLSAgICAgICAgcmV0dXJuIGxlZnRPclRvcCArIHdpZHRoT3JI
ZWlnaHQgLyAyOworICAgICAgICByZXR1cm4gKG1pbkxvY2F0aW9uICsgbWF4TG9jYXRpb24pIC8g
MjsKICAgICBjYXNlIFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlOjpFbmQ6Ci0gICAgICAgIHJldHVy
biBsZWZ0T3JUb3AgKyB3aWR0aE9ySGVpZ2h0OworICAgICAgICByZXR1cm4gaXNSVEwgPyBtaW5M
b2NhdGlvbiA6IG1heExvY2F0aW9uOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE5Myw2ICsxOTMsNyBAQCB2b2lkIHVw
ZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFi
bGVBcmVhLCBIVE1MRWxlbQogCiAgICAgYXV0byBtYXhTY3JvbGxPZmZzZXQgPSBzY3JvbGxhYmxl
QXJlYS5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCk7CiAgICAgYXV0byBzY3JvbGxQb3NpdGlvbiA9IExh
eW91dFBvaW50IHsgc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsUG9zaXRpb24oKSB9OworICAgIGJvb2wg
c2Nyb2xsZXJJc1JUTCA9ICFzY3JvbGxpbmdFbGVtZW50Qm94LnN0eWxlKCkuaXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpOwogCiAgICAgLy8gVGhlIGJvdW5kcyBvZiB0aGUgc2Nyb2xsaW5nIGNvbnRh
aW5lcidzIHNuYXAgcG9ydCwgd2hlcmUgdGhlIHRvcCBsZWZ0IG9mIHRoZSBzY3JvbGxpbmcgY29u
dGFpbmVyJ3MgYm9yZGVyIGJveCBpcyB0aGUgb3JpZ2luLgogICAgIGF1dG8gc2Nyb2xsU25hcFBv
cnQgPSBjb21wdXRlU2Nyb2xsU25hcFBvcnRPckFyZWFSZWN0KHNjcm9sbGluZ0VsZW1lbnRCb3gu
cGFkZGluZ0JveFJlY3QoKSwgc2Nyb2xsaW5nRWxlbWVudFN0eWxlLnNjcm9sbFBhZGRpbmcoKSwg
SW5zZXRPck91dHNldDo6SW5zZXQpOwpAQCAtMjAzLDEzICsyMDQsMTQgQEAgdm9pZCB1cGRhdGVT
bmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJl
YSwgSFRNTEVsZW0KIAogICAgICAgICAvLyBUaGUgYm91bmRzIG9mIHRoZSBjaGlsZCBlbGVtZW50
J3Mgc25hcCBhcmVhLCB3aGVyZSB0aGUgdG9wIGxlZnQgb2YgdGhlIHNjcm9sbGluZyBjb250YWlu
ZXIncyBib3JkZXIgYm94IGlzIHRoZSBvcmlnaW4uCiAgICAgICAgIC8vIFRoZSBzbmFwIGFyZWEg
aXMgdGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgY2hpbGQgZWxlbWVudCdzIGJvcmRlciBib3gsIGFm
dGVyIGFwcGx5aW5nIHRyYW5zZm9ybWF0aW9ucy4KKyAgICAgICAgLy8gRklYTUU6IEZvciBub3cs
IGp1c3QgY29uc2lkZXIgd2hldGhlciB0aGUgc2Nyb2xsZXIgaXMgUlRMLiBUaGUgYmVoYXZpb3Ig
b2YgTFRSIGJveGVzIGluc2lkZSBhIFJUTCBzY3JvbGxlciBpcyBwb29ybHkgZGVmaW5lZDogaHR0
cHM6Ly9naXRodWIuY29tL3czYy9jc3N3Zy1kcmFmdHMvaXNzdWVzLzUzNjEuCiAgICAgICAgIGF1
dG8gc2Nyb2xsU25hcEFyZWEgPSBMYXlvdXRSZWN0KGNoaWxkLT5sb2NhbFRvQ29udGFpbmVyUXVh
ZChGbG9hdFF1YWQoY2hpbGQtPmJvcmRlckJvdW5kaW5nQm94KCkpLCBzY3JvbGxpbmdFbGVtZW50
LnJlbmRlckJveCgpKS5ib3VuZGluZ0JveCgpKTsKICAgICAgICAgc2Nyb2xsU25hcEFyZWEubW92
ZUJ5KHNjcm9sbFBvc2l0aW9uKTsKICAgICAgICAgc2Nyb2xsU25hcEFyZWEgPSBjb21wdXRlU2Ny
b2xsU25hcFBvcnRPckFyZWFSZWN0KHNjcm9sbFNuYXBBcmVhLCBjaGlsZC0+c3R5bGUoKS5zY3Jv
bGxTbmFwTWFyZ2luKCksIEluc2V0T3JPdXRzZXQ6Ok91dHNldCk7CiAgICAgICAgIExPR19XSVRI
X1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIiAgICBDb25zaWRlcmluZyBzY3JvbGwgc25h
cCB0YXJnZXQgYXJlYSAiIDw8IHNjcm9sbFNuYXBBcmVhKTsKICAgICAgICAgYXV0byBhbGlnbm1l
bnQgPSBjaGlsZC0+c3R5bGUoKS5zY3JvbGxTbmFwQWxpZ24oKTsKICAgICAgICAgaWYgKGhhc0hv
cml6b250YWxTbmFwT2Zmc2V0cyAmJiBhbGlnbm1lbnQueCAhPSBTY3JvbGxTbmFwQXhpc0FsaWdu
VHlwZTo6Tm9uZSkgewotICAgICAgICAgICAgYXV0byBhYnNvbHV0ZVNjcm9sbFhQb3NpdGlvbiA9
IGNvbXB1dGVTY3JvbGxTbmFwQWxpZ25PZmZzZXQoc2Nyb2xsU25hcEFyZWEueCgpLCBzY3JvbGxT
bmFwQXJlYS53aWR0aCgpLCBhbGlnbm1lbnQueCkgLSBjb21wdXRlU2Nyb2xsU25hcEFsaWduT2Zm
c2V0KHNjcm9sbFNuYXBQb3J0LngoKSwgc2Nyb2xsU25hcFBvcnQud2lkdGgoKSwgYWxpZ25tZW50
LngpOworICAgICAgICAgICAgYXV0byBhYnNvbHV0ZVNjcm9sbFhQb3NpdGlvbiA9IGNvbXB1dGVT
Y3JvbGxTbmFwQWxpZ25PZmZzZXQoc2Nyb2xsU25hcEFyZWEueCgpLCBzY3JvbGxTbmFwQXJlYS5t
YXhYKCksIGFsaWdubWVudC54LCBzY3JvbGxlcklzUlRMKSAtIGNvbXB1dGVTY3JvbGxTbmFwQWxp
Z25PZmZzZXQoc2Nyb2xsU25hcFBvcnQueCgpLCBzY3JvbGxTbmFwUG9ydC5tYXhYKCksIGFsaWdu
bWVudC54LCBzY3JvbGxlcklzUlRMKTsKICAgICAgICAgICAgIGF1dG8gYWJzb2x1dGVTY3JvbGxP
ZmZzZXQgPSBjbGFtcFRvPGludD4oc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT2Zmc2V0RnJvbVBvc2l0
aW9uKHsgcm91bmRUb0ludChhYnNvbHV0ZVNjcm9sbFhQb3NpdGlvbiksIDAgfSkueCgpLCAwLCBt
YXhTY3JvbGxPZmZzZXQueCgpKTsKICAgICAgICAgICAgIGlmICghc2Vlbkhvcml6b250YWxTbmFw
T2Zmc2V0cy5jb250YWlucyhhYnNvbHV0ZVNjcm9sbE9mZnNldCkpIHsKICAgICAgICAgICAgICAg
ICBzZWVuSG9yaXpvbnRhbFNuYXBPZmZzZXRzLmFkZChhYnNvbHV0ZVNjcm9sbE9mZnNldCk7CkBA
IC0yMTcsNyArMjE5LDcgQEAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVh
KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgSFRNTEVsZW0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICBpZiAoaGFzVmVydGljYWxTbmFwT2Zmc2V0cyAmJiBhbGlnbm1l
bnQueSAhPSBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZSkgewotICAgICAgICAgICAgYXV0
byBhYnNvbHV0ZVNjcm9sbFlQb3NpdGlvbiA9IGNvbXB1dGVTY3JvbGxTbmFwQWxpZ25PZmZzZXQo
c2Nyb2xsU25hcEFyZWEueSgpLCBzY3JvbGxTbmFwQXJlYS5oZWlnaHQoKSwgYWxpZ25tZW50Lnkp
IC0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxTbmFwUG9ydC55KCksIHNjcm9s
bFNuYXBQb3J0LmhlaWdodCgpLCBhbGlnbm1lbnQueSk7CisgICAgICAgICAgICBhdXRvIGFic29s
dXRlU2Nyb2xsWVBvc2l0aW9uID0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxT
bmFwQXJlYS55KCksIHNjcm9sbFNuYXBBcmVhLm1heFkoKSwgYWxpZ25tZW50LnksIGZhbHNlKSAt
IGNvbXB1dGVTY3JvbGxTbmFwQWxpZ25PZmZzZXQoc2Nyb2xsU25hcFBvcnQueSgpLCBzY3JvbGxT
bmFwUG9ydC5tYXhZKCksIGFsaWdubWVudC55LCBmYWxzZSk7CiAgICAgICAgICAgICBhdXRvIGFi
c29sdXRlU2Nyb2xsT2Zmc2V0ID0gY2xhbXBUbzxpbnQ+KHNjcm9sbGFibGVBcmVhLnNjcm9sbE9m
ZnNldEZyb21Qb3NpdGlvbih7IDAsIHJvdW5kVG9JbnQoYWJzb2x1dGVTY3JvbGxZUG9zaXRpb24p
IH0pLnkoKSwgMCwgbWF4U2Nyb2xsT2Zmc2V0LnkoKSk7CiAgICAgICAgICAgICBpZiAoIXNlZW5W
ZXJ0aWNhbFNuYXBPZmZzZXRzLmNvbnRhaW5zKGFic29sdXRlU2Nyb2xsT2Zmc2V0KSkgewogICAg
ICAgICAgICAgICAgIHNlZW5WZXJ0aWNhbFNuYXBPZmZzZXRzLmFkZChhYnNvbHV0ZVNjcm9sbE9m
ZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1t
CmluZGV4IDE4ODY3Zjk3ZTNiMTJiMGIzNDFiOTViYzAzN2U2NDFhMDMxYjI3MzUuLjAyODU0Y2Ni
YTYxNzQ3OTA4MGM4ZWM2ODIxMmJlY2M1ZmIzZmFkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjphZGp1c3RTY3JvbGxQb3NpdGlv
blRvQm91bmRzSWZOZWNlc3MKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogRmxvYXRQb2lu
dCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzY3JvbGxPZmZzZXQoKSBj
b25zdAogewotICAgIHJldHVybiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKTsKKyAgICByZXR1cm4g
U2Nyb2xsYWJsZUFyZWE6OnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbihjdXJyZW50U2Nyb2xsUG9z
aXRpb24oKSwgc2Nyb2xsT3JpZ2luKCkpOwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVNYWM6OmltbWVkaWF0ZVNjcm9sbE9uQXhpcyhTY3JvbGxFdmVudEF4aXMg
YXhpcywgZmxvYXQgZGVsdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHAKaW5kZXggNzRiN2YyZjlkNjA0NGZhM2EyMGNmNDc2NGE2ZWMzMWQyNzU4NmU2Yi4uZWUx
YjI2ZjZhMjc3NjU1ZDFhZmJiMTFiMzk0NmZlZDFkZWIwY2VjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtMjAwLDggKzIwMCw4IEBAIHZvaWQgU2Ny
b2xsQW5pbWF0b3I6OnNldEN1cnJlbnRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlv
bikKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvck9m
ZnNldCgpCiB7CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICAvLyBGSVhNRTogTmVl
ZHMgb2Zmc2V0L3Bvc2l0aW9uIGRpc2FtYmlndWF0aW9uLgotICAgIG1fc2Nyb2xsQ29udHJvbGxl
ci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlc0Zvck9mZnNldChyb3VuZGVkSW50UG9pbnQoY3Vy
cmVudFBvc2l0aW9uKCkpKTsKKyAgICBhdXRvIHNjcm9sbE9mZnNldCA9IG1fc2Nyb2xsYWJsZUFy
ZWEuc2Nyb2xsT2Zmc2V0RnJvbVBvc2l0aW9uKHJvdW5kZWRJbnRQb2ludChjdXJyZW50UG9zaXRp
b24oKSkpOworICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNl
c0Zvck9mZnNldChzY3JvbGxPZmZzZXQpOwogICAgIGlmIChtX3Njcm9sbENvbnRyb2xsZXIuYWN0
aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlKCkpIHsKICAgICAgICAgbV9zY3JvbGxhYmxlQXJl
YS5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KG1fc2Nyb2xsQ29udHJvbGxlci5h
Y3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkp
OwogICAgICAgICBtX3Njcm9sbGFibGVBcmVhLnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludElu
ZGV4KG1fc2Nyb2xsQ29udHJvbGxlci5hY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9s
bEV2ZW50QXhpczo6VmVydGljYWwpKTsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFNjcm9sbEFu
aW1hdG9yOjp1cGRhdGVTY3JvbGxTbmFwU3RhdGUoKQogCiBGbG9hdFBvaW50IFNjcm9sbEFuaW1h
dG9yOjpzY3JvbGxPZmZzZXQoKSBjb25zdAogewotICAgIHJldHVybiBtX2N1cnJlbnRQb3NpdGlv
bjsKKyAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxPZmZzZXRGcm9tUG9zaXRpb24o
cm91bmRlZEludFBvaW50KGN1cnJlbnRQb3NpdGlvbigpKSk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5p
bWF0b3I6OmltbWVkaWF0ZVNjcm9sbE9uQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcywgZmxvYXQg
ZGVsdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxD
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJv
bGxlci5tbQppbmRleCBlOThiMGEwZWRkYzQ3NWQ2Y2UwMTc1ZTA3ZTAyMTBmZDc3YzMwNzVjLi44
OGEzM2Y4ZTFhZjEyNTBmMzllNjM3MGQwNTQ0YmNlN2JmZDc2NmJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KQEAgLTc4OCwxNyAr
Nzg4LDI0IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFN0YXRlKGNv
bnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlCiAKIHZvaWQgU2Nyb2xsQ29udHJvbGxl
cjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVj
dG9yPExheW91dFVuaXQ+JiBzbmFwUG9pbnRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFu
Z2U8TGF5b3V0VW5pdD4+JiBzbmFwUmFuZ2VzKQogeworICAgIGJvb2wgc2hvdWxkQ29tcHV0ZUN1
cnJlbnRTbmFwSW5kaWNlcyA9IGZhbHNlOwogICAgIGlmICghbV9zY3JvbGxTbmFwU3RhdGUpIHsK
ICAgICAgICAgaWYgKHNuYXBQb2ludHMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0gbWFrZVVuaXF1ZTxTY3JvbGxTbmFwQW5pbWF0
b3JTdGF0ZT4oKTsKKyAgICAgICAgc2hvdWxkQ29tcHV0ZUN1cnJlbnRTbmFwSW5kaWNlcyA9IHRy
dWU7CiAgICAgfQogCiAgICAgaWYgKHNuYXBQb2ludHMuaXNFbXB0eSgpICYmIG1fc2Nyb2xsU25h
cFN0YXRlLT5zbmFwT2Zmc2V0c0ZvckF4aXMob3RoZXJTY3JvbGxFdmVudEF4aXMoYXhpcykpLmlz
RW1wdHkoKSkKICAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBudWxscHRyOwotICAgIGVsc2UK
KyAgICBlbHNlIHsKICAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUtPnNldFNuYXBPZmZzZXRzQW5k
UG9zaXRpb25SYW5nZXNGb3JBeGlzKGF4aXMsIHNuYXBQb2ludHMsIHNuYXBSYW5nZXMpOworICAg
ICAgICBpZiAoc2hvdWxkQ29tcHV0ZUN1cnJlbnRTbmFwSW5kaWNlcykgeworICAgICAgICAgICAg
c2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXNGb3JPZmZzZXQocm91bmRlZEludFBvaW50KG1fY2xp
ZW50LnNjcm9sbE9mZnNldCgpKSk7CisgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xs
U25hcCwgc3RyZWFtIDw8ICJTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRz
IC0gY29tcHV0ZWQgaW5pdGlhbCBzbmFwIGluZGljZXM6IHggIiA8PCBtX3Njcm9sbFNuYXBTdGF0
ZS0+YWN0aXZlU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpIDw8
ICIsIHkgIiA8PCBtX3Njcm9sbFNuYXBTdGF0ZS0+YWN0aXZlU25hcEluZGV4Rm9yQXhpcyhTY3Jv
bGxFdmVudEF4aXM6OlZlcnRpY2FsKSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHVuc2lnbmVk
IFNjcm9sbENvbnRyb2xsZXI6OmFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZl
bnRBeGlzIGF4aXMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JUcmFuc2FjdGlvbi5jcHAKaW5kZXggMzk4ZDllOGQxZjQ5MzZiM2ZkODRiOGZlYmVmN2Iy
NjVhNGNlM2JjZS4uMjFhNTVkNTY2ZmNhMjEzMzAyNDk2MTMyNDQwYjI2Y2RlYzJiYjViMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNw
cApAQCAtNjMyLDYgKzYzMiwyMCBAQCBzdGF0aWMgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzLCBj
b25zdCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIG5vZGUsIGJvb2wgYwogCiAgICAgaWYg
KCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQogICAgICAgICB0
cy5kdW1wUHJvcGVydHkoInNjcm9sbGVkLWNvbnRlbnRzLWxheWVyIiwgc3RhdGljX2Nhc3Q8R3Jh
cGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLnNjcm9sbGVkQ29udGVudHNMYXllcigp
KSk7CisKKyNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQorICAgIGlmICghY2hhbmdlZFByb3Bl
cnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJob3Jpem9udGFsIHNuYXAgb2Zmc2V0cyIsIG5vZGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkp
OworCisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpWZXJ0aWNhbFNuYXBPZmZzZXRzKSkK
KyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJ2ZXJ0aWNhbCBzbmFwIG9mZnNldHMiLCBub2RlLnZl
cnRpY2FsU25hcE9mZnNldHMoKSk7CisKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8
fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkN1
cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4KSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJjdXJyZW50IGhvcml6b250YWwgc25hcCBwb2ludCBpbmRleCIsIG5vZGUuY3VycmVudEhvcml6
b250YWxTbmFwUG9pbnRJbmRleCgpKTsKKworICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5
IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4KSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJjdXJyZW50IHZlcnRpY2FsIHNuYXAgcG9pbnQgaW5kZXgiLCBub2RlLmN1cnJlbnRWZXJ0aWNh
bFNuYXBQb2ludEluZGV4KCkpOworI2VuZGlmCiB9CiAKIHN0YXRpYyB2b2lkIGR1bXAoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGluZ1N0YXRlRnJhbWVIb3N0aW5nTm9kZSYgbm9kZSwgYm9v
bCBjaGFuZ2VkUHJvcGVydGllc09ubHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IGFmNGUzYTU0NjQ3ZGM5NTY3MzhmNGUzMjk5N2Jj
NTQwNjA0NGU1Y2EuLjY1YTE2ZDE0YTU4NDc2YzkzMjFkOWNmMGNhZjRiYjY2ZGNkZmYwNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBA
IC0yMDEyLDcgKzIwMTIsNyBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzCiAg
ICAgICAgIFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSogY29vcmRpbmF0
b3IgPSBfcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSgpOwogICAgICAgICBpZiAoY29v
cmRpbmF0b3IgJiYgY29vcmRpbmF0b3ItPmhhc0FjdGl2ZVNuYXBQb2ludCgpKSB7CiAgICAgICAg
ICAgICBDR1BvaW50IGN1cnJlbnRQb2ludCA9IFtfc2Nyb2xsVmlldyBjb250ZW50T2Zmc2V0XTsK
LSAgICAgICAgICAgIENHUG9pbnQgYWN0aXZlUG9pbnQgPSBjb29yZGluYXRvci0+bmVhcmVzdEFj
dGl2ZUNvbnRlbnRJbnNldEFkanVzdGVkU25hcFBvaW50KHVub2JzY3VyZWRSZWN0Lm9yaWdpbi55
LCBjdXJyZW50UG9pbnQpOworICAgICAgICAgICAgQ0dQb2ludCBhY3RpdmVQb2ludCA9IGNvb3Jk
aW5hdG9yLT5uZWFyZXN0QWN0aXZlQ29udGVudEluc2V0QWRqdXN0ZWRTbmFwT2Zmc2V0KHVub2Jz
Y3VyZWRSZWN0Lm9yaWdpbi55LCBjdXJyZW50UG9pbnQpOwogCiAgICAgICAgICAgICBpZiAoIUNH
UG9pbnRFcXVhbFRvUG9pbnQoYWN0aXZlUG9pbnQsIGN1cnJlbnRQb2ludCkpIHsKICAgICAgICAg
ICAgICAgICBSZXRhaW5QdHI8V0tTY3JvbGxWaWV3PiBzdHJvbmdTY3JvbGxWaWV3ID0gX3Njcm9s
bFZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaApp
bmRleCAxMmQyOTc5ZThiNzEyNTVkMzdjNzk3ZDE1Njc4NWFhMjYzOTM1YTU0Li4wZTU2ZTQ5YWE3
MmQzYzhlYzU2NTQyYzQ1MjAzNjQzMTFjNTBiMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICB2b2lkIGFkanVzdFRhcmdldENvbnRlbnRP
ZmZzZXRGb3JTbmFwcGluZyhDR1NpemUgbWF4U2Nyb2xsRGltZW5zaW9ucywgQ0dQb2ludCB2ZWxv
Y2l0eSwgQ0dGbG9hdCB0b3BJbnNldCwgQ0dQb2ludCogdGFyZ2V0Q29udGVudE9mZnNldCk7CiAg
ICAgYm9vbCBoYXNBY3RpdmVTbmFwUG9pbnQoKSBjb25zdDsKLSAgICBDR1BvaW50IG5lYXJlc3RB
Y3RpdmVDb250ZW50SW5zZXRBZGp1c3RlZFNuYXBQb2ludChDR0Zsb2F0IHRvcEluc2V0LCBjb25z
dCBDR1BvaW50JikgY29uc3Q7CisgICAgQ0dQb2ludCBuZWFyZXN0QWN0aXZlQ29udGVudEluc2V0
QWRqdXN0ZWRTbmFwT2Zmc2V0KENHRmxvYXQgdG9wSW5zZXQsIGNvbnN0IENHUG9pbnQmKSBjb25z
dDsKICAgICBib29sIHNob3VsZFNldFNjcm9sbFZpZXdEZWNlbGVyYXRpb25SYXRlRmFzdCgpIGNv
bnN0OwogI2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQppbmRleCBjMjBlMWY4ODg2Nzc3OGY1YzBjMjk1
Zjg4MTM4NzZhMWM0YzUyZDUwLi4xOGY2N2FmOWE2ZjE1NWIzZWFlYzUzNjgyZTA4M2QyMDcxZWYy
MTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5SU9TLm1tCkBAIC0yMTEsOCArMjExLDggQEAgYm9vbCBSZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5OjpzaG91bGRTbmFwRm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFNjcm9sbEV2
ZW4KIHsKICAgICBTY3JvbGxpbmdUcmVlTm9kZSogcm9vdCA9IG1fc2Nyb2xsaW5nVHJlZS0+cm9v
dE5vZGUoKTsKICAgICBpZiAocm9vdCAmJiByb290LT5pc0ZyYW1lU2Nyb2xsaW5nTm9kZSgpKSB7
Ci0gICAgICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUqIHJvb3RGcmFtZSA9IHN0
YXRpY19jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUqPihyb290KTsKLSAgICAg
ICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgc25hcE9mZnNldHMgPSBheGlzID09IFNjcm9sbEV2ZW50
QXhpczo6SG9yaXpvbnRhbCA/IHJvb3RGcmFtZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkgOiBy
b290RnJhbWUtPnZlcnRpY2FsU25hcE9mZnNldHMoKTsKKyAgICAgICAgU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZSogcm9vdFNjcm9sbGluZ05vZGUgPSBzdGF0aWNfY2FzdDxTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKj4ocm9vdCk7CisgICAgICAgIGNvbnN0IFZlY3Rvcjxm
bG9hdD4mIHNuYXBPZmZzZXRzID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwg
PyByb290U2Nyb2xsaW5nTm9kZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkgOiByb290U2Nyb2xs
aW5nTm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpOwogICAgICAgICB1bnNpZ25lZCBjdXJyZW50
SW5kZXggPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IG1fY3VycmVudEhv
cml6b250YWxTbmFwUG9pbnRJbmRleCA6IG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXg7
CiAgICAgICAgIHJldHVybiBzbmFwT2Zmc2V0cy5zaXplKCkgJiYgKGN1cnJlbnRJbmRleCA8IHNu
YXBPZmZzZXRzLnNpemUoKSB8fCBjdXJyZW50SW5kZXggPT0gaW52YWxpZFNuYXBPZmZzZXRJbmRl
eCk7CiAgICAgfQpAQCAtMjIzLDkgKzIyMyw5IEBAIGZsb2F0IFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFNjCiB7
CiAgICAgU2Nyb2xsaW5nVHJlZU5vZGUqIHJvb3QgPSBtX3Njcm9sbGluZ1RyZWUtPnJvb3ROb2Rl
KCk7CiAgICAgQVNTRVJUKHJvb3QgJiYgcm9vdC0+aXNGcmFtZVNjcm9sbGluZ05vZGUoKSk7Ci0g
ICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSogcm9vdEZyYW1lID0gc3RhdGljX2Nh
c3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSo+KHJvb3QpOwotICAgIGNvbnN0IFZl
Y3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6
b250YWwgPyByb290RnJhbWUtPmhvcml6b250YWxTbmFwT2Zmc2V0cygpIDogcm9vdEZyYW1lLT52
ZXJ0aWNhbFNuYXBPZmZzZXRzKCk7Ci0gICAgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdl
PGZsb2F0Pj4mIHNuYXBPZmZzZXRSYW5nZXMgPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9y
aXpvbnRhbCA/IHJvb3RGcmFtZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSA6IHJvb3RG
cmFtZS0+dmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCk7CisgICAgU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZSogcm9vdFNjcm9sbGluZ05vZGUgPSBzdGF0aWNfY2FzdDxTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlKj4ocm9vdCk7CisgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYg
c25hcE9mZnNldHMgPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHJvb3RT
Y3JvbGxpbmdOb2RlLT5ob3Jpem9udGFsU25hcE9mZnNldHMoKSA6IHJvb3RTY3JvbGxpbmdOb2Rl
LT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCk7CisgICAgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJh
bmdlPGZsb2F0Pj4mIHNuYXBPZmZzZXRSYW5nZXMgPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6
SG9yaXpvbnRhbCA/IHJvb3RTY3JvbGxpbmdOb2RlLT5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdl
cygpIDogcm9vdFNjcm9sbGluZ05vZGUtPnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpOwogCiAg
ICAgZmxvYXQgc2NhbGVkU2Nyb2xsRGVzdGluYXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbiAvIG1f
d2ViUGFnZVByb3h5LmRpc3BsYXllZENvbnRlbnRTY2FsZSgpOwogICAgIGZsb2F0IHJhd0Nsb3Nl
c3RTbmFwT2Zmc2V0ID0gY2xvc2VzdFNuYXBPZmZzZXQoc25hcE9mZnNldHMsIHNuYXBPZmZzZXRS
YW5nZXMsIHNjYWxlZFNjcm9sbERlc3RpbmF0aW9uLCB2ZWxvY2l0eSwgY3VycmVudEluZGV4KTsK
QEAgLTI0MSw5ICsyNDEsOSBAQCBib29sIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6
Omhhc0FjdGl2ZVNuYXBQb2ludCgpIGNvbnN0CiAgICAgaWYgKCFpczxTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlPihyb290KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSYgcm9vdEZyYW1lID0gZG93bmNhc3Q8U2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oKnJvb3QpOwotICAgIGNvbnN0IFZlY3RvcjxmbG9h
dD4mIGhvcml6b250YWwgPSByb290RnJhbWUuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCk7Ci0gICAg
Y29uc3QgVmVjdG9yPGZsb2F0PiYgdmVydGljYWwgPSByb290RnJhbWUudmVydGljYWxTbmFwT2Zm
c2V0cygpOworICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUmIHJvb3RTY3JvbGxp
bmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oKnJvb3Qp
OworICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWwgPSByb290U2Nyb2xsaW5nTm9k
ZS5ob3Jpem9udGFsU25hcE9mZnNldHMoKTsKKyAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0
aWNhbCA9IHJvb3RTY3JvbGxpbmdOb2RlLnZlcnRpY2FsU25hcE9mZnNldHMoKTsKIAogICAgIGlm
IChob3Jpem9udGFsLmlzRW1wdHkoKSAmJiB2ZXJ0aWNhbC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI1NiwxNSArMjU2LDE1IEBAIGJvb2wgUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eTo6aGFzQWN0aXZlU25hcFBvaW50KCkgY29uc3QKICAgICByZXR1cm4gdHJ1
ZTsKIH0KICAgICAKLUNHUG9pbnQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6bmVh
cmVzdEFjdGl2ZUNvbnRlbnRJbnNldEFkanVzdGVkU25hcFBvaW50KENHRmxvYXQgdG9wSW5zZXQs
IGNvbnN0IENHUG9pbnQmIGN1cnJlbnRQb2ludCkgY29uc3QKK0NHUG9pbnQgUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eTo6bmVhcmVzdEFjdGl2ZUNvbnRlbnRJbnNldEFkanVzdGVkU25h
cE9mZnNldChDR0Zsb2F0IHRvcEluc2V0LCBjb25zdCBDR1BvaW50JiBjdXJyZW50UG9pbnQpIGNv
bnN0CiB7CiAgICAgQ0dQb2ludCBhY3RpdmVQb2ludCA9IGN1cnJlbnRQb2ludDsKIAogICAgIFNj
cm9sbGluZ1RyZWVOb2RlKiByb290ID0gbV9zY3JvbGxpbmdUcmVlLT5yb290Tm9kZSgpOwogICAg
IEFTU0VSVChyb290ICYmIGlzPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KHJvb3Qp
KTsKLSAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlJiByb290RnJhbWUgPSBkb3du
Y2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPigqcm9vdCk7Ci0gICAgY29uc3Qg
VmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRhbCA9IHJvb3RGcmFtZS5ob3Jpem9udGFsU25hcE9mZnNl
dHMoKTsKLSAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2ZXJ0aWNhbCA9IHJvb3RGcmFtZS52ZXJ0
aWNhbFNuYXBPZmZzZXRzKCk7CisgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSYg
cm9vdFNjcm9sbGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlPigqcm9vdCk7CisgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRhbCA9IHJvb3RT
Y3JvbGxpbmdOb2RlLmhvcml6b250YWxTbmFwT2Zmc2V0cygpOworICAgIGNvbnN0IFZlY3Rvcjxm
bG9hdD4mIHZlcnRpY2FsID0gcm9vdFNjcm9sbGluZ05vZGUudmVydGljYWxTbmFwT2Zmc2V0cygp
OwogCiAgICAgLy8gVGhlIGJvdW5kcyBjaGVja2luZyB3aXRoIG1heFNjcm9sbE9mZnNldHMgaXMg
dG8gZW5zdXJlIHRoYXQgd2Ugd29uJ3QgaW50ZXJmZXJlIHdpdGggcnViYmVyLWJhbmRpbmcgd2hl
biBzY3JvbGxpbmcgdG8gdGhlIGVkZ2Ugb2YgdGhlIHBhZ2UuCiAgICAgaWYgKCFob3Jpem9udGFs
LmlzRW1wdHkoKSAmJiBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggPCBob3Jpem9u
dGFsLnNpemUoKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA3NmFhMmViYTg5NGJhZGEzOWEzZDRlMzBlZTZmYWZjY2U0NDRh
OWVkLi5kZDdkMTFkMDc4ZWZmNjczOWM5M2JkNmNlNjhjZmU2YzI3ZjVlMmQ1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjkgQEAKKzIwMjAtMDctMjUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgU2Nyb2xsIFNuYXAgYnJva2VuIHdoZW4gdXNpbmcgUlRMIGxheW91
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjcx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzQ1NzQ3MT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvcmVzb3VyY2Vz
L2lmcmFtZS1jb250ZW50LXJ0bC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLTJkLWNoYW5nZS1heGlzLXR5cGUtcnRsLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC0yZC1jaGFuZ2UtYXhp
cy10eXBlLXJ0bC5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLTJkLWNoYW5nZS1heGlzLXR5cGUuaHRtbC4KKyAgICAgICAgKiBjc3MzL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLTJkLWNoYW5nZS1heGlzLXR5cGUuaHRtbDoKKyAgICAgICAg
KiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLTJkLW9mZnNldHMtY29tcHV0ZWQtaW5kZXBl
bmRlbnRseS5odG1sOgorICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtMmQt
b2Zmc2V0cy1jb21wdXRlZC1pbmRlcGVuZGVudGx5LnJ0bC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtMmQtb2Zmc2V0cy1jb21wdXRl
ZC1pbmRlcGVuZGVudGx5LnJ0bC5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9jc3MzL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLTJkLW9mZnNldHMtY29tcHV0ZWQtaW5kZXBlbmRlbnRseS5o
dG1sLgorICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtZWxlbWVudHMtY29u
dGFpbmVyLWxhcmdlci10aGFuLWNoaWxkcmVuLXJ0bC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtZWxlbWVudHMtY29udGFpbmVyLWxh
cmdlci10aGFuLWNoaWxkcmVuLXJ0bC5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9jc3Mz
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWVsZW1lbnRzLWNvbnRhaW5lci1sYXJnZXItdGhhbi1j
aGlsZHJlbi5odG1sLgorICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtZWxl
bWVudHMtY29udGFpbmVyLWxhcmdlci10aGFuLWNoaWxkcmVuLmh0bWw6CisgICAgICAgICogY3Nz
My9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtcnRsLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtcnRsLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtb2Zmc2V0cy1t
aXhlZC1ydGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLW9mZnNldHMtbWl4ZWQtcnRsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNz
czMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtb2Zmc2V0cy1ydGwtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW9mZnNldHMtcnRsLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL2hvbWUtZW5kLWtleXMtc2Nyb2xs
LWluLXJ0bC1kb2N1bWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDIwLTA3LTI1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNvbWUgc2Nyb2xs
IHNuYXAgY2xlYW51cApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9y
ZXNvdXJjZXMvaWZyYW1lLWNvbnRlbnQtcnRsLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9s
bC1zbmFwL3Jlc291cmNlcy9pZnJhbWUtY29udGVudC1ydGwuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjky
MDYwNmJlMGU2YTFhODYwM2YwYzNkZDViNDYyZTZkOTVjM2FkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9yZXNvdXJjZXMvaWZyYW1lLWNvbnRlbnQtcnRs
Lmh0bWwKQEAgLTAsMCArMSw4MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBkaXI9InJ0bCI+
CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDQwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogNTBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eURyYXdlciB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDUwcHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAuY29sb3JCb3ggewor
ICAgICAgICAgICAgICAgIGhlaWdodDogNTBweDsKKyAgICAgICAgICAgICAgICB3aWR0aDogNDAw
cHg7CisgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgICAgICAgICAgICAgc2Nyb2xs
LXNuYXAtYWxpZ246IHN0YXJ0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAubm9Jbml0
aWFsIHsKKyAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC10eXBlOiB4IG1hbmRhdG9yeTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgI2l0ZW0wIHsgYmFja2dyb3VuZC1jb2xvcjogcmVk
OyB9CisgICAgICAgICAgICAjaXRlbTEgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgfQorICAg
ICAgICAgICAgI2l0ZW0yIHsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsgfQorICAgICAgICAgICAg
I2l0ZW0zIHsgYmFja2dyb3VuZC1jb2xvcjogYXF1YTsgfQorICAgICAgICAgICAgI2l0ZW00IHsg
YmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyB9CisgICAgICAgICAgICAjaXRlbTUgeyBiYWNrZ3Jv
dW5kLWNvbG9yOiBmdWNoc2lhOyB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgIHRvcC5zdWNjZWVkZWQgPSB0cnVlOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgc3R5bGU9IndpZHRoOiA0MDBweCI+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJub0luaXRpYWwiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSBu
b0luaXRpYWwiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
RHJhd2VyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbTAiIGNsYXNzPSJjb2xv
ckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW0xIiBjbGFzcz0i
Y29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtMiIgY2xh
c3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbTMi
IGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0
ZW00IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlk
PSJpdGVtNSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4K
KyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQ+CisKKyAgICAgICAgZnVuY3Rpb24gc2hvdWxk
TWF0Y2goX2EsIF9iLCByZXN1bHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0eXBlb2Yg
X2EgIT09ICJzdHJpbmciIHx8IHR5cGVvZiBfYiAhPT0gInN0cmluZyIpCisgICAgICAgICAgICAg
ICAgdG9wLmRlYnVnKCJXQVJOOiBzaG91bGRNYXRjaCgpIGV4cGVjdHMgc3RyaW5nIGFyZ3VtZW50
cyIpOworCisgICAgICAgICAgICB2YXIgX2F2OworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgICAgICBfYXYgPSBldmFsKF9hKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgCisgICAgICAgICAgICBy
ZXR1cm4gdG9wLmlzUmVzdWx0Q29ycmVjdChfYXYsIF9iKTsgICAgICAKKyAgICAgICAgfQorCisg
ICAgICAgIHZhciBub0luaXRpYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm9Jbml0aWFs
Jyk7CisgICAgICAgIHRvcC5zdWNjZWVkZWQgPSBzaG91bGRNYXRjaCgid2luZG93LmdldENvbXB1
dGVkU3R5bGUobm9Jbml0aWFsKS5nZXRQcm9wZXJ0eVZhbHVlKCdzY3JvbGwtc25hcC10eXBlJyki
LCAiYm90aCBtYW5kYXRvcnkiKTsKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgi
LmNvbG9yQm94IikuZm9yRWFjaChjb2xvckJveCA9PiB7CisgICAgICAgICAgICB3aW5kb3cuY29s
b3JCb3ggPSBjb2xvckJveDsKKyAgICAgICAgICAgIHRvcC5zdWNjZWVkZWQgPSBzaG91bGRNYXRj
aCgiZ2V0Q29tcHV0ZWRTdHlsZShjb2xvckJveCkuZ2V0UHJvcGVydHlWYWx1ZSgnc2Nyb2xsLXNu
YXAtYWxpZ24nKSIsICJzdGFydCBzdGFydCIpOworICAgICAgICB9KTsKKyAgICAgICAgaWYgKHRv
cC5zdWNjZWVkZWQpCisgICAgICAgICAgICB0b3AuZGVidWcoImlmcmFtZSBwcm9jZXNzZWQgYWxs
IHRlc3RzIHN1Y2Nlc3NmdWxseS4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdG9wLmRl
YnVnKCJpZnJhbWUgcHJvY2Vzc2luZyBmYWlsZWQuIik7CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC0yZC1jaGFuZ2UtYXhpcy10eXBlLXJ0bC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLTJkLWNoYW5nZS1heGlzLXR5
cGUtcnRsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMmJlNTMzYzhlNmQyOTUwMzg3MDc5OTdk
NjNkYThhMTg1ODIyMDJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC0yZC1jaGFuZ2UtYXhpcy10eXBlLXJ0bC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw3IEBACitUaGUgc2Nyb2xsIG9mZnNldHMgYXJlOiBob3Jpem9udGFsID0geyAw
LCA0MDAsIDgwMCB9LCB2ZXJ0aWNhbCA9IHsgMCwgNDAwLCA4MDAgfQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLTJkLWNoYW5nZS1heGlzLXR5cGUt
cnRsLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLTJkLWNo
YW5nZS1heGlzLXR5cGUtcnRsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc0YjljMmRiN2UyNmVmNGJjZmNl
Y2JhN2ExYjcyZjFlZTkwN2Q4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtMmQtY2hhbmdlLWF4aXMtdHlwZS1ydGwuaHRtbApAQCAt
MCwwICsxLDczIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c3R5bGU+CisgICAgICAgICAgICAjY29udGFpbmVyIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBydGw7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDQwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogNDAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGF1dG87CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNu
YXAtdHlwZTogeCBtYW5kYXRvcnk7CisgICAgICAgICAgICAgICAgbGVmdDogMHB4OworICAgICAg
ICAgICAgICAgIHRvcDogMHB4OworICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKKyAgICAgICAg
ICAgICAgICBwYWRkaW5nOiAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICA6Oi13ZWJr
aXQtc2Nyb2xsYmFyIHsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAuY2VsbCB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDQwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogNDAwcHg7CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAwcHg7CisgICAgICAgICAgICAgICAgcGFkZGluZzogMHB4OworICAgICAgICAgICAgICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC1hbGlnbjogY2Vu
dGVyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAuZ3JlZW4geworICAgICAgICAgICAg
ICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAucmVkIHsKKyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1
bmN0aW9uIHJ1bigpIHsKKyAgICAgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAg
ICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhd2luZG93LmludGVybmFscykgeworICAg
ICAgICAgICAgICAgIGRlYnVnKGBUbyBtYW51YWxseSB0ZXN0LCB2ZXJpZnkgdGhhdCBzY3JvbGxp
bmcgaW4gdGhlIGNvbnRhaW5lciBzbmFwcyBzbyB0aGF0IGVhY2ggY29sb3JlZCBib3ggY2FuIGZp
bGwKKyAgICAgICAgICAgICAgICAgICAgdGhlIHNjcm9sbCBjb250YWluZXIuYCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZXRUaW1lb3V0
KCgpID0+IHsKKyAgICAgICAgICAgICAgICBkZWJ1ZyhgVGhlIHNjcm9sbCBvZmZzZXRzIGFyZTog
JHtpbnRlcm5hbHMuc2Nyb2xsU25hcE9mZnNldHMoY29udGFpbmVyKX1gKTsKKyAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICB9CisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9cnVuKCk+CisgICAg
ICAgIDxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAgICAgICAgICA8ZGl2IHN0eWxlPSJ0b3A6IDBw
eDsgbGVmdDogMHB4OyIgY2xhc3M9ImNlbGwgZ3JlZW4iPjwvZGl2PgorICAgICAgICAgICAgPGRp
diBzdHlsZT0idG9wOiAwcHg7IGxlZnQ6IC00MDBweDsiIGNsYXNzPSJjZWxsIHJlZCI+PC9kaXY+
CisgICAgICAgICAgICA8ZGl2IHN0eWxlPSJ0b3A6IDBweDsgbGVmdDogLTgwMHB4OyIgY2xhc3M9
ImNlbGwgZ3JlZW4iPjwvZGl2Pjxici8+CisgICAgICAgICAgICA8ZGl2IHN0eWxlPSJ0b3A6IDQw
MHB4OyBsZWZ0OiAwcHg7IiBjbGFzcz0iY2VsbCByZWQiPjwvZGl2PgorICAgICAgICAgICAgPGRp
diBzdHlsZT0idG9wOiA0MDBweDsgbGVmdDogLTQwMHB4OyIgY2xhc3M9ImNlbGwgZ3JlZW4iPjwv
ZGl2PgorICAgICAgICAgICAgPGRpdiBzdHlsZT0idG9wOiA0MDBweDsgbGVmdDogLTgwMHB4OyIg
Y2xhc3M9ImNlbGwgcmVkIj48L2Rpdj48YnIvPgorICAgICAgICAgICAgPGRpdiBzdHlsZT0idG9w
OiA4MDBweDsgbGVmdDogMHB4OyIgY2xhc3M9ImNlbGwgZ3JlZW4iPjwvZGl2PgorICAgICAgICAg
ICAgPGRpdiBzdHlsZT0idG9wOiA4MDBweDsgbGVmdDogLTQwMHB4OyIgY2xhc3M9ImNlbGwgcmVk
Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgc3R5bGU9InRvcDogODAwcHg7IGxlZnQ6IC04MDBw
eDsiIGNsYXNzPSJjZWxsIGdyZWVuIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgICAgICBjb250YWluZXIuc3R5bGUuc2Nyb2xsU25hcFR5cGUgPSAiYm90
aCBtYW5kYXRvcnkiOworICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPGRpdiBpZD0ib3V0cHV0
Ij48L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9j
c3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLTJkLWNoYW5nZS1heGlzLXR5cGUuaHRtbCBiL0xh
eW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtMmQtY2hhbmdlLWF4aXMtdHlw
ZS5odG1sCmluZGV4IDE3MzBjYTYxODM3ODVkYjJlNTJjOTMyZmY2YzVkMWZlNzFiNjc4MDUuLjdl
MDdjYjEzOTcwYjc0NGU4Y2EyNGQ3YzhhODY4N2UyNzk1OGQyMDYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtMmQtY2hhbmdlLWF4aXMtdHlwZS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtMmQtY2hh
bmdlLWF4aXMtdHlwZS5odG1sCkBAIC00OCw3ICs0OCw3IEBACiAgICAgICAgICAgICBzZXRUaW1l
b3V0KCgpID0+IHsKICAgICAgICAgICAgICAgICBkZWJ1ZyhgVGhlIHNjcm9sbCBvZmZzZXRzIGFy
ZTogJHtpbnRlcm5hbHMuc2Nyb2xsU25hcE9mZnNldHMoY29udGFpbmVyKX1gKTsKICAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgICAgIH0sIDEwMDApOworICAgICAgICAg
ICAgfSwgMCk7CiAgICAgICAgIH0KICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFkPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC0yZC1vZmZz
ZXRzLWNvbXB1dGVkLWluZGVwZW5kZW50bHkuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtMmQtb2Zmc2V0cy1jb21wdXRlZC1pbmRlcGVuZGVudGx5Lmh0bWwK
aW5kZXggYTEyMTQyYjNmMTlhOWQwN2ZlYTc3YTU0ZDJjZGE3MTZjOWFlYjdiNC4uMGE3YWM1YTg0
MjQxNzI4MjMxNTczYzc5YTM4NzU5ZDJkY2QxY2E1MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Y3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC0yZC1vZmZzZXRzLWNvbXB1dGVkLWluZGVwZW5k
ZW50bHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LTJkLW9mZnNldHMtY29tcHV0ZWQtaW5kZXBlbmRlbnRseS5odG1sCkBAIC0zLDExICszLDExIEBA
CiAgICAgPGhlYWQ+CiAgICAgICAgIDxzdHlsZT4KICAgICAgICAgICAgICNjb250YWluZXIgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgICAgICB3aWR0
aDogNDAwcHg7CiAgICAgICAgICAgICAgICAgaGVpZ2h0OiA0MDBweDsKICAgICAgICAgICAgICAg
ICBvdmVyZmxvdzogYXV0bzsKICAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC10eXBlOiBib3Ro
IG1hbmRhdG9yeTsKLSAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAg
ICAgICAgICAgbGVmdDogMHB4OwogICAgICAgICAgICAgICAgIHRvcDogMHB4OwogICAgICAgICAg
ICAgICAgIG1hcmdpbjogMDsKQEAgLTU5LDcgKzU5LDcgQEAKICAgICAgICAgICAgIHNldFRpbWVv
dXQoKCkgPT4gewogICAgICAgICAgICAgICAgIGRlYnVnKGBUaGUgc2Nyb2xsIG9mZnNldHMgYXJl
OiAke2ludGVybmFscy5zY3JvbGxTbmFwT2Zmc2V0cyhjb250YWluZXIpfWApOwogICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICAgICAgfSwgMTAwMCk7CisgICAgICAgICAg
ICB9LCAwKTsKICAgICAgICAgfQogICAgICAgICA8L3NjcmlwdD4KICAgICA8L2hlYWQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLTJkLW9mZnNl
dHMtY29tcHV0ZWQtaW5kZXBlbmRlbnRseS5ydGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
Y3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC0yZC1vZmZzZXRzLWNvbXB1dGVkLWluZGVwZW5k
ZW50bHkucnRsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMmJlNTMzYzhlNmQyOTUwMzg3MDc5
OTdkNjNkYThhMTg1ODIyMDJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC0yZC1vZmZzZXRzLWNvbXB1dGVkLWluZGVwZW5kZW50bHku
cnRsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1RoZSBzY3JvbGwgb2Zmc2V0cyBhcmU6
IGhvcml6b250YWwgPSB7IDAsIDQwMCwgODAwIH0sIHZlcnRpY2FsID0geyAwLCA0MDAsIDgwMCB9
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtMmQt
b2Zmc2V0cy1jb21wdXRlZC1pbmRlcGVuZGVudGx5LnJ0bC5odG1sIGIvTGF5b3V0VGVzdHMvY3Nz
My9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC0yZC1vZmZzZXRzLWNvbXB1dGVkLWluZGVwZW5kZW50
bHkucnRsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY4OTM2YmUyZDQwYTFkZjFiMjMxOTEyZTMyZWFlNTky
YzFmNWVhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtMmQtb2Zmc2V0cy1jb21wdXRlZC1pbmRlcGVuZGVudGx5LnJ0bC5odG1sCkBA
IC0wLDAgKzEsODEgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxzdHlsZT4KKyAgICAgICAgICAgICNjb250YWluZXIgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgICAgICBkaXJlY3Rpb246IHJ0bDsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiA0MDBweDsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdzogYXV0bzsKKyAgICAgICAgICAgICAgICBzY3JvbGwt
c25hcC10eXBlOiBib3RoIG1hbmRhdG9yeTsKKyAgICAgICAgICAgICAgICBsZWZ0OiAwcHg7Cisg
ICAgICAgICAgICAgICAgdG9wOiAwcHg7CisgICAgICAgICAgICAgICAgbWFyZ2luOiAwOworICAg
ICAgICAgICAgICAgIHBhZGRpbmc6IDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIDo6
LXdlYmtpdC1zY3JvbGxiYXIgeworICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC5jZWxsIHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
NDAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiA0MDBweDsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDBweDsKKyAgICAgICAgICAgICAgICBwYWRkaW5nOiAwcHg7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjdG9w
LWxlZnQgeworICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWFsaWduOiBlbmQ7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICNtaWRkbGUgeworICAgICAgICAgICAgICAgIHNjcm9sbC1z
bmFwLWFsaWduOiBjZW50ZXI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNib3R0b20t
cmlnaHQgeworICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLmdyZWVuIHsKKyAgICAgICAgICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBncmVlbjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLnJlZCB7Cisg
ICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAgICAgICAgICAgfQorICAg
ICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBydW4o
KSB7CisgICAgICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICgh
d2luZG93LnRlc3RSdW5uZXIgfHwgIXdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAg
ICBkZWJ1ZyhgVG8gbWFudWFsbHkgdGVzdCwgdmVyaWZ5IHRoYXQgc2Nyb2xsaW5nIGluIHRoZSBj
b250YWluZXIgc25hcHMgc28gdGhhdCBlYWNoIGNvbG9yZWQgYm94IGNhbiBmaWxsCisgICAgICAg
ICAgICAgICAgICAgIHRoZSBzY3JvbGwgY29udGFpbmVyLmApOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgZGVidWcoYFRoZSBzY3JvbGwgb2Zmc2V0cyBhcmU6ICR7aW50ZXJuYWxz
LnNjcm9sbFNuYXBPZmZzZXRzKGNvbnRhaW5lcil9YCk7CisgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPXJ1bigpPgorICAgICAgICA8ZGl2IGlk
PSJjb250YWluZXIiPgorICAgICAgICAgICAgPGRpdiBzdHlsZT0idG9wOiAwcHg7IGxlZnQ6IDBw
eDsiIGNsYXNzPSJjZWxsIGdyZWVuIiBpZD0idG9wLWxlZnQiPjwvZGl2PgorICAgICAgICAgICAg
PGRpdiBzdHlsZT0idG9wOiAwcHg7IGxlZnQ6IC00MDBweDsiIGNsYXNzPSJjZWxsIHJlZCI+PC9k
aXY+CisgICAgICAgICAgICA8ZGl2IHN0eWxlPSJ0b3A6IDBweDsgbGVmdDogLTgwMHB4OyIgY2xh
c3M9ImNlbGwgZ3JlZW4iPjwvZGl2Pjxici8+CisgICAgICAgICAgICA8ZGl2IHN0eWxlPSJ0b3A6
IDQwMHB4OyBsZWZ0OiAwcHg7IiBjbGFzcz0iY2VsbCByZWQiPjwvZGl2PgorICAgICAgICAgICAg
PGRpdiBzdHlsZT0idG9wOiA0MDBweDsgbGVmdDogLTQwMHB4OyIgY2xhc3M9ImNlbGwgZ3JlZW4i
IGlkPSJtaWRkbGUiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBzdHlsZT0idG9wOiA0MDBweDsg
bGVmdDogLTgwMHB4OyIgY2xhc3M9ImNlbGwgcmVkIj48L2Rpdj48YnIvPgorICAgICAgICAgICAg
PGRpdiBzdHlsZT0idG9wOiA4MDBweDsgbGVmdDogMHB4OyIgY2xhc3M9ImNlbGwgZ3JlZW4iPjwv
ZGl2PgorICAgICAgICAgICAgPGRpdiBzdHlsZT0idG9wOiA4MDBweDsgbGVmdDogLTQwMHB4OyIg
Y2xhc3M9ImNlbGwgcmVkIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgc3R5bGU9InRvcDogODAw
cHg7IGxlZnQ6IC04MDBweDsiIGNsYXNzPSJjZWxsIGdyZWVuIiBpZD0iYm90dG9tLXJpZ2h0Ij48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1lbGVtZW50cy1jb250YWluZXItbGFyZ2VyLXRoYW4tY2hpbGRyZW4t
cnRsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtZWxlbWVudHMtY29udGFpbmVyLWxhcmdlci10aGFuLWNoaWxkcmVuLXJ0bC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzQ0NjljZDZhZWNkYTdjYjY4MmVmMjQzMDgyNzZiYmEwZDQ5NmU2ZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtZWxlbWVudHMtY29udGFpbmVyLWxhcmdlci10aGFuLWNoaWxkcmVuLXJ0bC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw1IEBACitTY3JvbGwtc25hcCBvZmZzZXRzOiBob3Jpem9udGFsID0geyAw
LCAxMDAsIDMwMCwgNTAwLCA3MDAsIDkwMCwgMTUwMCB9CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3Nz
My9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1lbGVtZW50cy1jb250YWluZXItbGFyZ2VyLXRoYW4t
Y2hpbGRyZW4tcnRsLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWVsZW1lbnRzLWNvbnRhaW5lci1sYXJnZXItdGhhbi1jaGlsZHJlbi1ydGwuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMWQ5ODhkMjQ4OGFkNmZjMDgzYmI5MjUxN2MzODNmYjIxYmY1YjYxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1lbGVt
ZW50cy1jb250YWluZXItbGFyZ2VyLXRoYW4tY2hpbGRyZW4tcnRsLmh0bWwKQEAgLTAsMCArMSw1
OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgI291dGVyLWNvbnRhaW5lciB7CisgICAgICAgICAgICAgICAgZGlyZWN0
aW9uOiBydGw7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNu
YXAtdHlwZTogeCBtYW5kYXRvcnk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAjaW5uZXIt
Y29udGFpbmVyIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMTgwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAuc25hcC1jaGls
ZCB7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBmbG9h
dDogbGVmdDsKKyAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDIwMHB4OworICAgICAgICAgICAg
ICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDsKKyAgICAgICAgICAgICAgICBib3JkZXI6IDFw
eCBzb2xpZCBibGFjazsKKyAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94Owor
ICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRlci1jb250YWlu
ZXIiKTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiU2Nyb2xsLXNuYXAgb2Zmc2V0czogIiArIHdp
bmRvdy5pbnRlcm5hbHMuc2Nyb2xsU25hcE9mZnNldHMoY29udGFpbmVyKSk7CisKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVu
Y3Rpb24gb25Mb2FkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQocnVuVGVzdCwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9b25Mb2FkKCk+
CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgaGVpZ2h0OiA1MDBweDsg
d2lkdGg6IDUwMHB4Ij4KKyAgICAgICAgICAgIDxkaXYgaWQ9Im91dGVyLWNvbnRhaW5lciI+Cisg
ICAgICAgICAgICAgICAgPGRpdiBpZD0iaW5uZXItY29udGFpbmVyIj4KKyAgICAgICAgICAgICAg
ICAgICAgPGRpdiBpZD0iaXRlbTAiIGNsYXNzPSJzbmFwLWNoaWxkIj48L2Rpdj4KKyAgICAgICAg
ICAgICAgICAgICAgPGRpdiBpZD0iaXRlbTEiIGNsYXNzPSJzbmFwLWNoaWxkIj48L2Rpdj4KKyAg
ICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbTIiIGNsYXNzPSJzbmFwLWNoaWxkIj48L2Rp
dj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbTMiIGNsYXNzPSJzbmFwLWNoaWxk
Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbTQiIGNsYXNzPSJzbmFw
LWNoaWxkIj48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbTUiIGNsYXNz
PSJzbmFwLWNoaWxkIj48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAg
IDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1lbGVtZW50cy1jb250YWluZXItbGFyZ2VyLXRoYW4tY2hpbGRyZW4uaHRt
bCBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtZWxlbWVudHMtY29u
dGFpbmVyLWxhcmdlci10aGFuLWNoaWxkcmVuLmh0bWwKaW5kZXggODQzNmQ4ZWE4ODlmMzAwZDBl
YWNmNTIyOTBjM2EzZWVhMTMyOWYxZC4uMzcyZTgyNjM2NjIxNjA2Njk0ZjYyNTVhMzc0ZWU0ZTkz
NmNlODc5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1lbGVtZW50cy1jb250YWluZXItbGFyZ2VyLXRoYW4tY2hpbGRyZW4uaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWVsZW1lbnRzLWNvbnRhaW5l
ci1sYXJnZXItdGhhbi1jaGlsZHJlbi5odG1sCkBAIC0xOCw2ICsxOCw4IEBACiAgICAgICAgICAg
ICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgICAgICAgICAgbWluLXdpZHRoOiAyMDBweDsKICAg
ICAgICAgICAgICAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7CisgICAgICAgICAgICAgICAg
Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgICAgICAgICAgICAgYm94LXNpemluZzogYm9y
ZGVyLWJveDsKICAgICAgICAgICAgIH0KICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLXJ0bC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS1ydGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczZGEwMjA0YTMxN2I2ZThlMzBlMzEwM2Qx
ZTIzM2Y4M2ZhYTc0ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS1ydGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEg
QEAKK2lmcmFtZSBwcm9jZXNzZWQgYWxsIHRlc3RzIHN1Y2Nlc3NmdWxseS4KK1BBU1Mgc3VjY2Vl
ZGVkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorVmVyaWZ5IHRoYXQgdGhlIGlmcmFtZSBwcm9wZXJ5IHBhcnNlcyBzbmFwLXBvaW50IHNl
dHRpbmdzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS1ydGwuaHRtbCBi
L0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLXJ0bC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjkwYWI4MGU1NTNkZmJmMzI4OGY4YWJjYTNlZDViMWEwYWRjY2ZlMjUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS1ydGwuaHRtbApAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgfQorCisgICAgdmFyIHN1Y2Nl
ZWRlZCA9IGZhbHNlOworICAgIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKKworICAg
IHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgc2hvdWxkQmUoInN1Y2NlZWRl
ZCIsICJ0cnVlIik7CisKKyAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICB9Owor
ICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+CisgICAgPGlmcmFtZSBpZD0iZnJhbWUiIHNyYz0icmVzb3VyY2VzL2lmcmFtZS1jb250ZW50
LXJ0bC5odG1sIiBzdHlsZT0id2lkdGg6IDEwMHZ3OyBoZWlnaHQ6IDEwMHZoIj48L2lmcmFtZT4K
KyAgICA8c2NyaXB0PgorICAgICAgICBkZXNjcmlwdGlvbigiVmVyaWZ5IHRoYXQgdGhlIGlmcmFt
ZSBwcm9wZXJ5IHBhcnNlcyBzbmFwLXBvaW50IHNldHRpbmdzLiIpOworICAgIDwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1vZmZzZXRzLW1peGVkLXJ0bC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW9mZnNldHMtbWl4ZWQtcnRsLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42N2NiNjIxOTk4N2U0ODU4NGIxZjAwZjZiMDgzOGY3ZWQxYWU3NWNk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1vZmZzZXRzLW1peGVkLXJ0bC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIG92ZXJmbG93
IHJlZ2lvbnMuCitydGxydGxsdHJydGxsdHJydGwKK1Njcm9sbC1zbmFwIG9mZnNldHMgZm9yIGhv
cml6b250YWxUYXJnZXQ6IGhvcml6b250YWwgPSB7IDAsIDIwMCwgNTAwLCA4MDAsIDEwMDAsIDEz
MDAgfQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtb2Zm
c2V0cy1taXhlZC1ydGwuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtb2Zmc2V0cy1taXhlZC1ydGwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzlhMjdmYWEwYWFkMGVk
ZjU1YWIxMDYzNDU4NzQxY2Q0YWY1YjAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
Y3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1vZmZzZXRzLW1peGVkLXJ0bC5odG1sCkBAIC0w
LDAgKzEsOTcgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGlu
dGVybmFsOkFzeW5jT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkPXRydWUgXSAtLT4KKzxodG1sPgor
PGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICAuYm9yZGVyZWQgeworICAgICAgICAgICAgYm9y
ZGVyLXRvcDogMjBweCBzb2xpZCBibGFjazsKKyAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDEw
cHggc29saWQgYmxhY2s7CisgICAgICAgICAgICBib3JkZXItbGVmdDogMTVweCBzb2xpZCBibGFj
azsKKyAgICAgICAgICAgIGJvcmRlci1yaWdodDogOXB4IHNvbGlkIGJsYWNrOworICAgICAgICB9
CisgICAgICAgIC5wYWRkZWQgeworICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAyMHB4OworICAg
ICAgICAgICAgcGFkZGluZy1yaWdodDogMTBweDsKKyAgICAgICAgICAgIHBhZGRpbmctdG9wOiAx
NXB4OworICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDlweDsKKyAgICAgICAgfQorICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxh
Y2s7CisgICAgICAgICAgICBkaXJlY3Rpb246IHJ0bDsKKyAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICBzY3JvbGwtc25hcC10eXBlOiB4IG1hbmRhdG9yeTsKKyAgICAg
ICAgfQorICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnlEcmF3ZXIgeworICAgICAgICAgICAgd2lk
dGg6IDE2MDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwJTsKKyAgICAgICAgfQorICAgICAg
ICAuY29sb3JCb3ggeworICAgICAgICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0OworICAg
ICAgICAgICAgcGFkZGluZzogMjBweDsKKyAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZwdDsKKyAg
ICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICBib3gtc2l6aW5nOiBib3Jk
ZXItYm94OworICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgICAgIH0KKyAgICAgICAgLm5h
cnJvdyB7CisgICAgICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIH0KKyAgICAgICAgLnJ0
bCB7CisgICAgICAgICAgICBkaXJlY3Rpb246IHJ0bDsKKyAgICAgICAgfQorICAgICAgICAubHRy
IHsKKyAgICAgICAgICAgIGRpcmVjdGlvbjogbHRyOworICAgICAgICB9CisKKyAgICAgICAgI2l0
ZW1IMCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfQorICAgICAgICAjaXRlbUgxIHsgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47IH0KKyAgICAgICAgI2l0ZW1IMiB7IGJhY2tncm91bmQtY29sb3I6
IGJsdWU7IH0KKyAgICAgICAgI2l0ZW1IMyB7IGJhY2tncm91bmQtY29sb3I6IGFxdWE7IH0KKyAg
ICAgICAgI2l0ZW1INCB7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsgfQorICAgICAgICAjaXRl
bUg1IHsgYmFja2dyb3VuZC1jb2xvcjogZnVjaHNpYTsgfQorICAgIDwvc3R5bGU+CisgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0PgorICAgIGZ1bmN0aW9uIHJlcG9ydFJlc3VsdChob3Jpem9udGFsVGFyZ2V0SUQsIHZlcnRp
Y2FsVGFyZ2V0SUQpCisgICAgeworICAgICAgICBsZXQgaG9yaXpvbnRhbFRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGhvcml6b250YWxUYXJnZXRJRCk7CisgICAgICAgIGRlYnVnKCJT
Y3JvbGwtc25hcCBvZmZzZXRzIGZvciAiICsgaG9yaXpvbnRhbFRhcmdldElEICsgIjogIiArIHdp
bmRvdy5pbnRlcm5hbHMuc2Nyb2xsU25hcE9mZnNldHMoaG9yaXpvbnRhbFRhcmdldCkpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAgICAgcmVwb3J0UmVzdWx0
KCdob3Jpem9udGFsVGFyZ2V0JywgJ3ZlcnRpY2FsVGFyZ2V0Jyk7CisKKyAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICB7CisgICAgICAg
IGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KHJ1blRlc3QsIDApOworICAgIH0KKyAgICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICA8ZGl2IHN0eWxlPSJwb3Np
dGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweCI+CisgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBvdmVyZmxvdyByZWdpb25z
LjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgaWQ9Imhvcml6
b250YWxUYXJnZXQiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnlE
cmF3ZXIiPgorICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1IMCIgY2xhc3M9InJ0bCBjb2xv
ckJveCI+cnRsPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUgxIiBjbGFzcz0i
cnRsIG5hcnJvdyBjb2xvckJveCI+cnRsPC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBpZD0i
aXRlbUgyIiBjbGFzcz0ibHRyIGNvbG9yQm94Ij5sdHI8L2Rpdj4KKyAgICAgICAgICAgICAgICA8
ZGl2IGlkPSJpdGVtSDMiIGNsYXNzPSJydGwgY29sb3JCb3giPnJ0bDwvZGl2PgorICAgICAgICAg
ICAgICAgIDxkaXYgaWQ9Iml0ZW1INCIgY2xhc3M9Imx0ciBuYXJyb3cgY29sb3JCb3giPmx0cjwv
ZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1INSIgY2xhc3M9InJ0bCBjb2xvckJv
eCI+cnRsPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9k
aXY+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW9mZnNldHMt
cnRsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtb2Zmc2V0cy1ydGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmOGFmMjM2NTYxZTM4NGNj
ZDU0MDU4M2Q3MzIzMmQ3OWUzOGVjZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9j
c3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW9mZnNldHMtcnRsLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEwIEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIG92ZXJmbG93IHJlZ2lvbnMuCitTY3JvbGwtc25hcCBvZmZzZXRzIGZvciBob3Jp
em9udGFsVGFyZ2V0OiBob3Jpem9udGFsID0geyAwLCAxMDAsIDIwMCwgMzAwLCA0MDAsIDUwMCB9
CitTY3JvbGwtc25hcCBvZmZzZXRzIGZvciBob3Jpem9udGFsQm9yZGVyZWRUYXJnZXQ6IGhvcml6
b250YWwgPSB7IDAsIDEwMCwgMjAwLCAzMDAsIDQwMCwgNTAwIH0KK1Njcm9sbC1zbmFwIG9mZnNl
dHMgZm9yIGhvcml6b250YWxQYWRkZWRUYXJnZXQ6IGhvcml6b250YWwgPSB7IDAsIDcwLCAxNzAs
IDI3MCwgMzcwLCA0NzAsIDQ4MCB9CitTY3JvbGwtc25hcCBvZmZzZXRzIGZvciBob3Jpem9udGFs
Qm9yZGVyZWRQYWRkZWRUYXJnZXQ6IGhvcml6b250YWwgPSB7IDAsIDcwLCAxNzAsIDI3MCwgMzcw
LCA0NzAsIDQ4MCB9CitTY3JvbGwtc25hcCBvZmZzZXRzIGZvciBob3Jpem9udGFsUm90YXRlZFRh
cmdldDogaG9yaXpvbnRhbCA9IHsgMCwgNzAsIDE3MCwgMjcwLCAzNzAsIDQ3MCwgNDgwIH0KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW9mZnNldHMtcnRs
Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW9mZnNldHMt
cnRsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmFlMGFjYzlmZDhjYTRhZmMwY2RhMTRjMzZjY2Y1MmMwNjE3
N2M4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtb2Zmc2V0cy1ydGwuaHRtbApAQCAtMCwwICsxLDEyNyBAQAorPCFET0NUWVBFIGh0
bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgaW50ZXJuYWw6QXN5bmNPdmVyZmxvd1Njcm9s
bGluZ0VuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ib3JkZXJlZCB7CisgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDog
MjBweCBzb2xpZCBibGFjazsKKyAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxMHB4IHNv
bGlkIGJsYWNrOworICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxNXB4IHNvbGlkIGJsYWNr
OworICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogOXB4IHNvbGlkIGJsYWNrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnBhZGRlZCB7CisgICAgICAgICAgICAgICAgcGFkZGluZy1s
ZWZ0OiAyMHB4OworICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7CisgICAgICAg
ICAgICAgICAgcGFkZGluZy10b3A6IDE1cHg7CisgICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0
b206IDlweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBydGw7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDEwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1vdmVy
Zmxvdy1zY3JvbGxpbmc6IHRvdWNoOworICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLXR5cGU6
IHggbWFuZGF0b3J5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5RHJhd2VyIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogNjAwJTsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDEwMCU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAuY29sb3JCb3ggewor
ICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAg
ICAgICAgICBmbG9hdDogbGVmdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICNpdGVtSDAs
ICNpdGVtVjAgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0KKyAgICAgICAgICAgICNpdGVtSDEs
ICNpdGVtVjEgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgfQorICAgICAgICAgICAgI2l0ZW1I
MiwgI2l0ZW1WMiB7IGJhY2tncm91bmQtY29sb3I6IGJsdWU7IH0KKyAgICAgICAgICAgICNpdGVt
SDMsICNpdGVtVjMgeyBiYWNrZ3JvdW5kLWNvbG9yOiBhcXVhOyB9CisgICAgICAgICAgICAjaXRl
bUg0LCAjaXRlbVY0IHsgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyB9CisgICAgICAgICAgICAj
aXRlbUg1LCAjaXRlbVY1IHsgYmFja2dyb3VuZC1jb2xvcjogZnVjaHNpYTsgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiByZXBvcnRSZXN1
bHQoaG9yaXpvbnRhbFRhcmdldElELCB2ZXJ0aWNhbFRhcmdldElEKQorICAgICAgICB7CisgICAg
ICAgICAgICBsZXQgaG9yaXpvbnRhbFRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGhv
cml6b250YWxUYXJnZXRJRCk7CisgICAgICAgICAgICBkZWJ1ZygiU2Nyb2xsLXNuYXAgb2Zmc2V0
cyBmb3IgIiArIGhvcml6b250YWxUYXJnZXRJRCArICI6ICIgKyB3aW5kb3cuaW50ZXJuYWxzLnNj
cm9sbFNuYXBPZmZzZXRzKGhvcml6b250YWxUYXJnZXQpKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICByZXBvcnRSZXN1bHQo
J2hvcml6b250YWxUYXJnZXQnLCAndmVydGljYWxUYXJnZXQnKTsKKyAgICAgICAgICAgIHJlcG9y
dFJlc3VsdCgnaG9yaXpvbnRhbEJvcmRlcmVkVGFyZ2V0JywgJ3ZlcnRpY2FsQm9yZGVyZWRUYXJn
ZXQnKTsKKyAgICAgICAgICAgIHJlcG9ydFJlc3VsdCgnaG9yaXpvbnRhbFBhZGRlZFRhcmdldCcs
ICd2ZXJ0aWNhbFBhZGRlZFRhcmdldCcpOworICAgICAgICAgICAgcmVwb3J0UmVzdWx0KCdob3Jp
em9udGFsQm9yZGVyZWRQYWRkZWRUYXJnZXQnLCAndmVydGljYWxCb3JkZXJlZFBhZGRlZFRhcmdl
dCcpOworICAgICAgICAgICAgcmVwb3J0UmVzdWx0KCdob3Jpem9udGFsUm90YXRlZFRhcmdldCcs
ICd2ZXJ0aWNhbFJvdGF0ZWRUYXJnZXQnKQorCisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQocnVuVGVzdCwgMCk7CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHgiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIG92ZXJmbG93IHJlZ2lvbnMuPC9kaXY+CisgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgaWQ9Imhvcml6b250YWxUYXJnZXQiPgor
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5RHJhd2VyIj4KKyAg
ICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUgwIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2
PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDEiIGNsYXNzPSJjb2xvckJveCI+
PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1IMiIgY2xhc3M9ImNvbG9y
Qm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUgzIiBjbGFzcz0i
Y29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDQiIGNs
YXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1I
NSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAg
ICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkg
Ym9yZGVyZWQiIGlkPSJob3Jpem9udGFsQm9yZGVyZWRUYXJnZXQiPgorICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5RHJhd2VyIj4KKyAgICAgICAgICAgICAgICAg
ICAgPGRpdiBpZD0iaXRlbUgwIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGlkPSJpdGVtSDEiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAg
ICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1IMiIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAg
ICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUgzIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2
PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDQiIGNsYXNzPSJjb2xvckJveCI+
PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1INSIgY2xhc3M9ImNvbG9y
Qm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2Pgor
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkgcGFkZGVkIiBpZD0iaG9y
aXpvbnRhbFBhZGRlZFRhcmdldCI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnlEcmF3ZXIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDAi
IGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0
ZW1IMSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBp
ZD0iaXRlbUgyIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8
ZGl2IGlkPSJpdGVtSDMiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAg
ICAgIDxkaXYgaWQ9Iml0ZW1INCIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAg
ICAgICAgICAgPGRpdiBpZD0iaXRlbUg1IiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAg
ICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSBib3JkZXJlZCBwYWRkZWQiIGlkPSJob3Jpem9udGFsQm9y
ZGVyZWRQYWRkZWRUYXJnZXQiPgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5RHJhd2VyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUgwIiBj
bGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVt
SDEiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9
Iml0ZW1IMiIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPGRp
diBpZD0iaXRlbUgzIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJpdGVtSDQiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAgICAgICAgICAg
ICAgICAgIDxkaXYgaWQ9Iml0ZW1INSIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4KKyAgICAgICAg
ICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFz
cz0iaG9yaXpvbnRhbEdhbGxlcnkgYm9yZGVyZWQgcGFkZGVkIiBpZD0iaG9yaXpvbnRhbFJvdGF0
ZWRUYXJnZXQiIHN0eWxlPSJ0cmFuc2Zvcm06IHJvdGF0ZSgyMGRlZykiPgorICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5RHJhd2VyIj4KKyAgICAgICAgICAgICAg
ICAgICAgPGRpdiBpZD0iaXRlbUgwIiBjbGFzcz0iY29sb3JCb3giPjwvZGl2PgorICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDEiIGNsYXNzPSJjb2xvckJveCI+PC9kaXY+CisgICAg
ICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1IMiIgY2xhc3M9ImNvbG9yQm94Ij48L2Rpdj4K
KyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaXRlbUgzIiBjbGFzcz0iY29sb3JCb3giPjwv
ZGl2PgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpdGVtSDQiIGNsYXNzPSJjb2xvckJv
eCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Iml0ZW1INSIgY2xhc3M9ImNv
bG9yQm94Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2
PgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2Pgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL2hvbWUtZW5kLWtleXMtc2Nyb2xsLWluLXJ0bC1kb2N1bWVudC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9ob21lLWVuZC1rZXlzLXNjcm9sbC1pbi1ydGwtZG9j
dW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MDNjMmQ1M2Y3YmYxMzdiYzMzN2NlNzM3
OWY1ODFiZDE5MjIxZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9ob21lLWVuZC1rZXlzLXNjcm9sbC1pbi1ydGwtZG9jdW1lbnQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEgQEAKK1BBU1M6IHNjcm9sbExlZnQgaXMgLTEyMDgK
</data>
<flag name="review"
          id="420636"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
      

    </bug>

</bugzilla>