<?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>290597</bug_id>
          
          <creation_ts>2025-03-27 19:25:40 -0700</creation_ts>
          <short_desc>[content visibility] Decouple hidden and auto override scopes (forced layout)</short_desc>
          <delta_ts>2025-03-28 15:59:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2106676</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2025-03-27 19:25:40 -0700</bug_when>
    <thetext>Asia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2106677</commentid>
    <comment_count>1</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2025-03-27 19:26:06 -0700</bug_when>
    <thetext>(In reply to zalan from comment #0)
&gt; Asia
thank you autocorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2106679</commentid>
    <comment_count>2</comment_count>
      <attachid>474748</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-03-27 19:30:09 -0700</bug_when>
    <thetext>Created attachment 474748
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2106840</commentid>
    <comment_count>3</comment_count>
      <attachid>474750</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-03-28 09:45:57 -0700</bug_when>
    <thetext>Created attachment 474750
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2106982</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2025-03-28 15:58:39 -0700</bug_when>
    <thetext>Committed 292855@main (19825c7e72a8): &lt;https://commits.webkit.org/292855@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 474750.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2106983</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2025-03-28 15:59:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/148130671&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>474748</attachid>
            <date>2025-03-27 19:30:09 -0700</date>
            <delta_ts>2025-03-28 09:45:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-290597-20250327193008.patch</filename>
            <type>text/plain</type>
            <size>34495</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAxNTY5N2QwOWRmN2VhMDYyMmVmNTc4Zjc5ZTUxMjUyOGNiNmVlMmYxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMjcgTWFyIDIwMjUgMTk6MjY6MTUgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbY29udGVu
dCB2aXNpYmlsaXR5XSBEZWNvdXBsZSBoaWRkZW4gYW5kIGF1dG8gb3ZlcnJpZGUgc2NvcGVzCiAo
Zm9yY2VkIGxheW91dCkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5
MDU5NwoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpUaGlzIGlzIGluIHByZXBhcmF0aW9u
IGZvciBmaXhpbmcgZmluZC1pbi1wYWdlIGJ1ZyB3aGVyZSAnYy12OiBhdXRvJyBjb250ZW50IGlz
IG5vdCBkaXNjb3ZlcmFibGUuClRoaXMgZW5hYmxlcyB1cyB0byBydW4gImZvcmNlZCIgbGF5b3V0
IG9uICdjLXY6IGF1dG8nIGNvbnRlbnQgb25seSBhcyBvcHBvc2VkIHRvIHRvIGFsbCBjLXYuCgoq
IFNvdXJjZS9XZWJDb3JlL2Nzcy9Db21wdXRlZFN0eWxlRXh0cmFjdG9yLmNwcDoKKFdlYkNvcmU6
OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUgY29uc3QpOgoqIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHA6CihXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlTGF5b3V0
KToKKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVMYXlvdXRJZkRpbWVuc2lvbnNPdXRPZkRhdGUp
OgoqIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEVudW1zLmg6CiogU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwOgooV2ViQ29yZTo6RWxlbWVudDo6b2Zmc2V0TGVmdCk6CihXZWJDb3Jl
OjpFbGVtZW50OjpvZmZzZXRUb3ApOgooV2ViQ29yZTo6RWxlbWVudDo6b2Zmc2V0UGFyZW50KToK
KFdlYkNvcmU6OkVsZW1lbnQ6OmNsaWVudExlZnQpOgooV2ViQ29yZTo6RWxlbWVudDo6Y2xpZW50
VG9wKToKKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbExlZnQpOgooV2ViQ29yZTo6RWxlbWVudDo6
c2Nyb2xsVG9wKToKKFdlYkNvcmU6OkVsZW1lbnQ6OnNldFNjcm9sbExlZnQpOgooV2ViQ29yZTo6
RWxlbWVudDo6c2V0U2Nyb2xsVG9wKToKKFdlYkNvcmU6OkVsZW1lbnQ6OmdldENsaWVudFJlY3Rz
KToKKFdlYkNvcmU6OkVsZW1lbnQ6OmJvdW5kaW5nQ2xpZW50UmVjdCk6CiogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6
OndpZHRoKToKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmhlaWdodCk6CihXZWJDb3JlOjpI
VE1MSW1hZ2VFbGVtZW50Ojp4IGNvbnN0KToKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6Onkg
Y29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwOgooV2ViQ29y
ZTo6SW1hZ2VJbnB1dFR5cGU6OmhlaWdodCBjb25zdCk6CihXZWJDb3JlOjpJbWFnZUlucHV0VHlw
ZTo6d2lkdGggY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXdMYXlv
dXRDb250ZXh0LmNwcDoKKFdlYkNvcmU6OkxvY2FsRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6aXNT
a2lwcGVkQ29udGVudEZvckxheW91dCBjb25zdCk6CihXZWJDb3JlOjpMb2NhbEZyYW1lVmlld0xh
eW91dENvbnRleHQ6OmlzU2tpcHBlZENvbnRlbnRSb290Rm9yTGF5b3V0IGNvbnN0KToKKiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oOgoqIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5jcHA6CihXZWJDb3JlOjpDb250ZW50
VmlzaWJpbGl0eU92ZXJyaWRlU2NvcGU6OkNvbnRlbnRWaXNpYmlsaXR5T3ZlcnJpZGVTY29wZSk6
CihXZWJDb3JlOjpDb250ZW50VmlzaWJpbGl0eU92ZXJyaWRlU2NvcGU6On5Db250ZW50VmlzaWJp
bGl0eU92ZXJyaWRlU2NvcGUpOgooV2ViQ29yZTo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91
dFNjb3BlOjpDb250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0U2NvcGUpOiBEZWxldGVkLgooV2Vi
Q29yZTo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dFNjb3BlOjp+Q29udGVudFZpc2liaWxp
dHlGb3JjZUxheW91dFNjb3BlKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5b3V0U3RhdGUuaDoKKiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVt
ZW50LmNwcDoKKFdlYkNvcmU6OlNWR0dlb21ldHJ5RWxlbWVudDo6Z2V0VG90YWxMZW5ndGggY29u
c3QpOgooV2ViQ29yZTo6U1ZHR2VvbWV0cnlFbGVtZW50OjpnZXRQb2ludEF0TGVuZ3RoIGNvbnN0
KToKKFdlYkNvcmU6OlNWR0dlb21ldHJ5RWxlbWVudDo6aXNQb2ludEluRmlsbCk6CihXZWJDb3Jl
OjpTVkdHZW9tZXRyeUVsZW1lbnQ6OmlzUG9pbnRJblN0cm9rZSk6CiogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xvY2F0YWJsZS5jcHA6CihXZWJDb3JlOjpTVkdMb2NhdGFibGU6OmdldEJCb3gpOgoo
V2ViQ29yZTo6U1ZHTG9jYXRhYmxlOjpjb21wdXRlQ1RNKToKKiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEVsZW1lbnQuY3BwOgooV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmdldFRvdGFsTGVu
Z3RoIGNvbnN0KToKKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpnZXRQb2ludEF0TGVuZ3RoIGNv
bnN0KToKKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpnZXRQYXRoU2VnQXRMZW5ndGggY29uc3Qp
OgooV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmdldEJCb3gpOgoqIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTVkdFbGVtZW50LmNwcDoKKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmdldEludGVyc2Vj
dGlvbkxpc3QpOgooV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6Z2V0RW5jbG9zdXJlTGlzdCk6CihX
ZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpjaGVja0ludGVyc2VjdGlvbik6CihXZWJDb3JlOjpTVkdT
VkdFbGVtZW50OjpjaGVja0VuY2xvc3VyZSk6CiogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRD
b250ZW50RWxlbWVudC5jcHA6CihXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmdldE51
bWJlck9mQ2hhcnMpOgooV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpnZXRDb21wdXRl
ZFRleHRMZW5ndGgpOgooV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpnZXRDaGFyTnVt
QXRQb3NpdGlvbik6Ci0tLQogU291cmNlL1dlYkNvcmUvY3NzL0NvbXB1dGVkU3R5bGVFeHRyYWN0
b3IuY3BwIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgICAgICAgICAg
ICAgICB8IDE1ICsrKysrKysrKystLS0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEVudW1z
LmggICAgICAgICAgICB8ICA5ICsrKystLS0tCiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgICAgICAgICAgICAgICAgfCAyMiArKysrKysrKystLS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwICAgICAgfCAgOCArKystLS0tCiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcCAgICAgICAgfCAgNCArKy0tCiAuLi4vcGFnZS9M
b2NhbEZyYW1lVmlld0xheW91dENvbnRleHQuY3BwICAgICAgfCAxNiArKysrKysrKysrKy0tLQog
Li4uL3BhZ2UvTG9jYWxGcmFtZVZpZXdMYXlvdXRDb250ZXh0LmggICAgICAgIHwgMTIgKysrKysr
LS0tLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmNwcCAgIHwgMTMg
KysrKysrLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5o
ICB8IDEwICsrKysrKy0tLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5j
cHAgICAgIHwgIDggKysrLS0tLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5jcHAg
ICAgICAgICAgIHwgIDQgKystLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNw
cCAgICAgICAgIHwgIDggKysrLS0tLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
Y3BwICAgICAgICAgIHwgIDggKysrLS0tLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250
ZW50RWxlbWVudC5jcHAgIHwgIDYgKystLS0KIDE1IGZpbGVzIGNoYW5nZWQsIDg4IGluc2VydGlv
bnMoKyksIDU3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
b21wdXRlZFN0eWxlRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db21wdXRlZFN0
eWxlRXh0cmFjdG9yLmNwcAppbmRleCBlYzEwMjI5MDUzOGQuLjg3YWEyZWQ1MzNjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NvbXB1dGVkU3R5bGVFeHRyYWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Db21wdXRlZFN0eWxlRXh0cmFjdG9yLmNwcApAQCAtMzU5NSw3
ICszNTk1LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9w
ZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAgfSgpOwogCiAgICAg
ICAgIGlmIChmb3JjZWRMYXlvdXQgPT0gRm9yY2VkTGF5b3V0OjpZZXMpCi0gICAgICAgICAgICBk
b2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKExheW91dE9wdGlv
bnM6OkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXQsIG1fZWxlbWVudC5nZXQoKSk7CisgICAg
ICAgICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsg
TGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2liaWxpdHlIaWRkZW4sIExheW91dE9wdGlv
bnM6Oklnbm9yZUNvbnRlbnRWaXNpYmlsaXR5QXV0byB9LCBtX2VsZW1lbnQuZ2V0KCkpOwogICAg
ICAgICBlbHNlIGlmIChmb3JjZWRMYXlvdXQgPT0gRm9yY2VkTGF5b3V0OjpQYXJlbnREb2N1bWVu
dCkgewogICAgICAgICAgICAgaWYgKFJlZlB0ciBvd25lciA9IGRvY3VtZW50LT5vd25lckVsZW1l
bnQoKSkKICAgICAgICAgICAgICAgICBvd25lci0+cHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRl
TGF5b3V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlZDkzYmIxMjJlNDIuLjg4M2Iw
ZmE3ZjIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yOTc1LDcgKzI5NzUsNyBAQCBh
dXRvIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQoT3B0aW9uU2V0PExheW91dE9wdGlvbnM+IGxheW91
dE9wdGlvbnMsIGNvbnN0IEVsZW1lbgogCiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRDb250ZXh0
ID0gZnJhbWVWaWV3LT5sYXlvdXRDb250ZXh0KCk7CiAgICAgICAgICAgICBhdXRvIHJ1bkZvcmNl
ZExheW91dE9uU2tpcHBlZENvbnRlbnRJZk5lZWRlZCA9IFsmXSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCFsYXlvdXRPcHRpb25zLmNvbnRhaW5zKExheW91dE9wdGlvbnM6OkNvbnRlbnRWaXNpYmls
aXR5Rm9yY2VMYXlvdXQpKQorICAgICAgICAgICAgICAgIGlmICghbGF5b3V0T3B0aW9ucy5jb250
YWluc0FsbCh7IExheW91dE9wdGlvbnM6Oklnbm9yZUNvbnRlbnRWaXNpYmlsaXR5SGlkZGVuLCBM
YXlvdXRPcHRpb25zOjpJZ25vcmVDb250ZW50VmlzaWJpbGl0eUF1dG8gfSkpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAgICAgICAgIEFTU0VSVChjb250ZXh0
KTsKQEAgLTI5OTIsNyArMjk5MiwxNiBAQCBhdXRvIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQoT3B0
aW9uU2V0PExheW91dE9wdGlvbnM+IGxheW91dE9wdGlvbnMsIGNvbnN0IEVsZW1lbgogCiAgICAg
ICAgICAgICAgICAgc2tpcHBlZFN1YnRyZWVlUm9vdFJlbmRlcmVyLnNldE5lZWRzTGF5b3V0KCk7
CiAKLSAgICAgICAgICAgICAgICBhdXRvIGNvbnRlbnRWaXNpYmlsaXR5U2NvcGUgPSBDb250ZW50
VmlzaWJpbGl0eUZvcmNlTGF5b3V0U2NvcGUgeyBsYXlvdXRDb250ZXh0IH07CisgICAgICAgICAg
ICAgICAgYXV0byBvdmVycmlkZVR5cGVzID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byB0eXBlcyA9IE9wdGlvblNldDxDb250ZW50VmlzaWJpbGl0eU92ZXJyaWRlU2NvcGU6Ok92ZXJy
aWRlVHlwZT4geyB9OworCisgICAgICAgICAgICAgICAgICAgIGlmIChsYXlvdXRPcHRpb25zLmNv
bnRhaW5zKExheW91dE9wdGlvbnM6Oklnbm9yZUNvbnRlbnRWaXNpYmlsaXR5SGlkZGVuKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLmFkZChDb250ZW50VmlzaWJpbGl0eU92ZXJyaWRl
U2NvcGU6Ok92ZXJyaWRlVHlwZTo6SGlkZGVuKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxh
eW91dE9wdGlvbnMuY29udGFpbnMoTGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2liaWxp
dHlBdXRvKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLmFkZChDb250ZW50VmlzaWJp
bGl0eU92ZXJyaWRlU2NvcGU6Ok92ZXJyaWRlVHlwZTo6QXV0byk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0eXBlczsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIGF1
dG8gY29udGVudFZpc2liaWxpdHlPdmVycmlkZVNjb3BlID0gQ29udGVudFZpc2liaWxpdHlPdmVy
cmlkZVNjb3BlIHsgbGF5b3V0Q29udGV4dCwgb3ZlcnJpZGVUeXBlcygpIH07CiAgICAgICAgICAg
ICAgICAgbGF5b3V0Q29udGV4dC5sYXlvdXQobGF5b3V0T3B0aW9ucy5jb250YWlucyhMYXlvdXRP
cHRpb25zOjpDYW5EZWZlclVwZGF0ZUxheWVyUG9zaXRpb25zKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9OwpAQCAtMzA4Nyw3ICszMDk2LDcgQEAgYm9vbCBE
b2N1bWVudDo6dXBkYXRlTGF5b3V0SWZEaW1lbnNpb25zT3V0T2ZEYXRlKEVsZW1lbnQmIGVsZW1l
bnQsIE9wdGlvblNldDxEaW0KIAogICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAotICAgIGlm
IChsYXlvdXRPcHRpb25zLmNvbnRhaW5zKExheW91dE9wdGlvbnM6OkNvbnRlbnRWaXNpYmlsaXR5
Rm9yY2VMYXlvdXQpKSB7CisgICAgaWYgKGxheW91dE9wdGlvbnMuY29udGFpbnNBbGwoeyBMYXlv
dXRPcHRpb25zOjpJZ25vcmVDb250ZW50VmlzaWJpbGl0eUhpZGRlbiwgTGF5b3V0T3B0aW9uczo6
SWdub3JlQ29udGVudFZpc2liaWxpdHlBdXRvIH0pKSB7CiAgICAgICAgIGlmIChDaGVja2VkUHRy
IHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOyByZW5kZXJlciAmJiAgcmVuZGVyZXItPnN0
eWxlKCkuaGFzU2tpcHBlZENvbnRlbnQoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gd2FzU2tp
cHBlZER1cmluZ0xhc3RMYXlvdXQgPSByZW5kZXJlci0+d2FzU2tpcHBlZER1cmluZ0xhc3RMYXlv
dXREdWVUb0NvbnRlbnRWaXNpYmlsaXR5KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoKndhc1Nr
aXBwZWREdXJpbmdMYXN0TGF5b3V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50RW51bXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEVudW1zLmgKaW5kZXgg
NzdkYmYyZGQ1OTExLi4zNGYzZDExYzE5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEVudW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RW51bXMu
aApAQCAtNTMsMTQgKzUzLDE1IEBAIGVudW0gY2xhc3MgRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9k
ZSA6IHVpbnQ4X3QgewogZW51bSBjbGFzcyBMYXlvdXRPcHRpb25zIDogdWludDhfdCB7CiAgICAg
UnVuUG9zdExheW91dFRhc2tzU3luY2hyb25vdXNseSA9IDEgPDwgMCwKICAgICBJZ25vcmVQZW5k
aW5nU3R5bGVzaGVldHMgPSAxIDw8IDEsCi0gICAgQ29udGVudFZpc2liaWxpdHlGb3JjZUxheW91
dCA9IDEgPDwgMiwKLSAgICBVcGRhdGVDb21wb3NpdGluZ0xheWVycyA9IDEgPDwgMywKLSAgICBE
b05vdExheW91dEFuY2VzdG9yRG9jdW1lbnRzID0gMSA8PCA0LAorICAgIElnbm9yZUNvbnRlbnRW
aXNpYmlsaXR5SGlkZGVuID0gMSA8PCAyLAorICAgIElnbm9yZUNvbnRlbnRWaXNpYmlsaXR5QXV0
byA9IDEgPDwgMywKKyAgICBVcGRhdGVDb21wb3NpdGluZ0xheWVycyA9IDEgPDwgNCwKKyAgICBE
b05vdExheW91dEFuY2VzdG9yRG9jdW1lbnRzID0gMSA8PCA1LAogICAgIC8vIERvZXNuJ3QgY2Fs
bCBSZW5kZXJMYXllcjo6cmVjdXJzaXZlVXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlckxheW91dCBp
ZgogICAgIC8vIHBvc3NpYmxlLiBUaGUgY2FsbGVyIHNob3VsZCB1c2UgYSBMb2NhbEZyYW1lVmll
dzo6QXV0b1ByZXZlbnRMYXllckFjY2VzcwogICAgIC8vIGZvciB0aGUgc2NvcGUgdGhhdCBsYXlv
dXQgaXMgZXhwZWN0ZWQgdG8gYmUgZmx1c2hlZCB0byBzdG9wIGFueSBhY2Nlc3MgdG8KICAgICAv
LyB0aGUgc3RhbGUgUmVuZGVyTGF5ZXJzLgotICAgIENhbkRlZmVyVXBkYXRlTGF5ZXJQb3NpdGlv
bnMgPSAxIDw8IDUKKyAgICBDYW5EZWZlclVwZGF0ZUxheWVyUG9zaXRpb25zID0gMSA8PCA2CiB9
OwogCiBlbnVtIGNsYXNzIENhbk5hdmlnYXRlU3RhdGUgOiB1aW50OF90IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAppbmRleCBlMWU1MWE4MTVmNjIuLjdmMzFmNGZjM2FlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtMTQwMCw3ICsxNDAwLDcgQEAgaW50IEVsZW1lbnQ6Om9mZnNldExlZnRGb3JC
aW5kaW5ncygpCiAKIGludCBFbGVtZW50OjpvZmZzZXRMZWZ0KCkKIHsKLSAgICBwcm90ZWN0ZWRE
b2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRP
cHRpb25zOjpDb250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0IH0sIHRoaXMpOworICAgIHByb3Rl
Y3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7IExh
eW91dE9wdGlvbnM6Oklnbm9yZUNvbnRlbnRWaXNpYmlsaXR5SGlkZGVuLCBMYXlvdXRPcHRpb25z
OjpJZ25vcmVDb250ZW50VmlzaWJpbGl0eUF1dG8gfSwgdGhpcyk7CiAgICAgaWYgKENoZWNrZWRQ
dHIgcmVuZGVyZXIgPSByZW5kZXJCb3hNb2RlbE9iamVjdCgpKQogICAgICAgICByZXR1cm4gYWRq
dXN0T2Zmc2V0Rm9yWm9vbUFuZFN1YnBpeGVsTGF5b3V0KCpyZW5kZXJlciwgcmVuZGVyZXItPm9m
ZnNldExlZnQoKSk7CiAgICAgcmV0dXJuIDA7CkBAIC0xNDI5LDcgKzE0MjksNyBAQCBpbnQgRWxl
bWVudDo6b2Zmc2V0VG9wRm9yQmluZGluZ3MoKQogCiBpbnQgRWxlbWVudDo6b2Zmc2V0VG9wKCkK
IHsKLSAgICBwcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpDb250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0IH0s
IHRoaXMpOworICAgIHByb3RlY3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cyh7IExheW91dE9wdGlvbnM6Oklnbm9yZUNvbnRlbnRWaXNpYmlsaXR5SGlk
ZGVuLCBMYXlvdXRPcHRpb25zOjpJZ25vcmVDb250ZW50VmlzaWJpbGl0eUF1dG8gfSwgdGhpcyk7
CiAgICAgaWYgKENoZWNrZWRQdHIgcmVuZGVyZXIgPSByZW5kZXJCb3hNb2RlbE9iamVjdCgpKQog
ICAgICAgICByZXR1cm4gYWRqdXN0T2Zmc2V0Rm9yWm9vbUFuZFN1YnBpeGVsTGF5b3V0KCpyZW5k
ZXJlciwgcmVuZGVyZXItPm9mZnNldFRvcCgpKTsKICAgICByZXR1cm4gMDsKQEAgLTE0NjcsNyAr
MTQ2Nyw3IEBAIFJlZlB0cjxFbGVtZW50PiBFbGVtZW50OjpvZmZzZXRQYXJlbnRGb3JCaW5kaW5n
cygpCiAKIEVsZW1lbnQqIEVsZW1lbnQ6Om9mZnNldFBhcmVudCgpCiB7Ci0gICAgcHJvdGVjdGVk
RG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0
T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dCB9LCB0aGlzKTsKKyAgICBwcm90
ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBM
YXlvdXRPcHRpb25zOjpJZ25vcmVDb250ZW50VmlzaWJpbGl0eUhpZGRlbiwgTGF5b3V0T3B0aW9u
czo6SWdub3JlQ29udGVudFZpc2liaWxpdHlBdXRvIH0sIHRoaXMpOwogICAgIENoZWNrZWRQdHIg
cmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMTQ3Nyw3ICsxNDc3LDcgQEAgRWxlbWVudCogRWxlbWVudDo6
b2Zmc2V0UGFyZW50KCkKIAogaW50IEVsZW1lbnQ6OmNsaWVudExlZnQoKQogewotICAgIHByb3Rl
Y3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7IExh
eW91dE9wdGlvbnM6OkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXQgfSwgdGhpcyk7CisgICAg
cHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KHsgTGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2liaWxpdHlIaWRkZW4sIExheW91dE9w
dGlvbnM6Oklnbm9yZUNvbnRlbnRWaXNpYmlsaXR5QXV0byB9LCB0aGlzKTsKIAogICAgIGlmIChD
aGVja2VkUHRyIHJlbmRlcmVyID0gcmVuZGVyQm94KCkpIHsKICAgICAgICAgYXV0byBjbGllbnRM
ZWZ0ID0gTGF5b3V0VW5pdCB7IHJvdW5kVG9JbnQocmVuZGVyZXItPmNsaWVudExlZnQoKSkgfTsK
QEAgLTE0ODgsNyArMTQ4OCw3IEBAIGludCBFbGVtZW50OjpjbGllbnRMZWZ0KCkKIAogaW50IEVs
ZW1lbnQ6OmNsaWVudFRvcCgpCiB7Ci0gICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6Q29udGVudFZpc2li
aWxpdHlGb3JjZUxheW91dCB9LCB0aGlzKTsKKyAgICBwcm90ZWN0ZWREb2N1bWVudCgpLT51cGRh
dGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpJZ25vcmVD
b250ZW50VmlzaWJpbGl0eUhpZGRlbiwgTGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2li
aWxpdHlBdXRvIH0sIHRoaXMpOwogCiAgICAgaWYgKENoZWNrZWRQdHIgcmVuZGVyZXIgPSByZW5k
ZXJCb3goKSkgewogICAgICAgICBhdXRvIGNsaWVudFRvcCA9IExheW91dFVuaXQgeyByb3VuZFRv
SW50KHJlbmRlcmVyLT5jbGllbnRUb3AoKSkgfTsKQEAgLTE1NzUsNyArMTU3NSw3IEBAIEFMV0FZ
U19JTkxJTkUgTG9jYWxGcmFtZSogRWxlbWVudDo6ZG9jdW1lbnRGcmFtZVdpdGhOb25OdWxsVmll
dygpIGNvbnN0CiBpbnQgRWxlbWVudDo6c2Nyb2xsTGVmdCgpCiB7CiAgICAgUmVmIGRvY3VtZW50
ID0gdGhpcy0+ZG9jdW1lbnQoKTsKLSAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxh
eW91dCB9LCB0aGlzKTsKKyAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2liaWxpdHlIaWRkZW4s
IExheW91dE9wdGlvbnM6Oklnbm9yZUNvbnRlbnRWaXNpYmlsaXR5QXV0byB9LCB0aGlzKTsKIAog
ICAgIGlmIChkb2N1bWVudC0+c2Nyb2xsaW5nRWxlbWVudCgpID09IHRoaXMpIHsKICAgICAgICAg
aWYgKFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50RnJhbWVXaXRoTm9uTnVsbFZpZXcoKSkKQEAgLTE1
OTEsNyArMTU5MSw3IEBAIGludCBFbGVtZW50OjpzY3JvbGxMZWZ0KCkKIGludCBFbGVtZW50Ojpz
Y3JvbGxUb3AoKQogewogICAgIFJlZiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Ci0gICAg
ZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7IExheW91dE9w
dGlvbnM6OkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXQgfSwgdGhpcyk7CisgICAgZG9jdW1l
bnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7IExheW91dE9wdGlvbnM6
Oklnbm9yZUNvbnRlbnRWaXNpYmlsaXR5SGlkZGVuLCBMYXlvdXRPcHRpb25zOjpJZ25vcmVDb250
ZW50VmlzaWJpbGl0eUF1dG8gfSwgdGhpcyk7CiAKICAgICBpZiAoZG9jdW1lbnQtPnNjcm9sbGlu
Z0VsZW1lbnQoKSA9PSB0aGlzKSB7CiAgICAgICAgIGlmIChSZWZQdHIgZnJhbWUgPSBkb2N1bWVu
dEZyYW1lV2l0aE5vbk51bGxWaWV3KCkpCkBAIC0xNjA3LDcgKzE2MDcsNyBAQCBpbnQgRWxlbWVu
dDo6c2Nyb2xsVG9wKCkKIHZvaWQgRWxlbWVudDo6c2V0U2Nyb2xsTGVmdChpbnQgbmV3TGVmdCkK
IHsKICAgICBSZWYgZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwotICAgIGRvY3VtZW50LT51
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpDb250
ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0IH0sIHRoaXMpOworICAgIGRvY3VtZW50LT51cGRhdGVM
YXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpJZ25vcmVDb250
ZW50VmlzaWJpbGl0eUhpZGRlbiwgTGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2liaWxp
dHlBdXRvIH0sIHRoaXMpOwogCiAgICAgYXV0byBvcHRpb25zID0gU2Nyb2xsUG9zaXRpb25DaGFu
Z2VPcHRpb25zOjpjcmVhdGVQcm9ncmFtbWF0aWMoKTsKICAgICBvcHRpb25zLmFuaW1hdGVkID0g
dXNlU21vb3RoU2Nyb2xsaW5nKFNjcm9sbEJlaGF2aW9yOjpBdXRvLCB0aGlzKSA/IFNjcm9sbElz
QW5pbWF0ZWQ6OlllcyA6IFNjcm9sbElzQW5pbWF0ZWQ6Ok5vOwpAQCAtMTYzMyw3ICsxNjMzLDcg
QEAgdm9pZCBFbGVtZW50OjpzZXRTY3JvbGxMZWZ0KGludCBuZXdMZWZ0KQogdm9pZCBFbGVtZW50
OjpzZXRTY3JvbGxUb3AoaW50IG5ld1RvcCkKIHsKICAgICBSZWYgZG9jdW1lbnQgPSB0aGlzLT5k
b2N1bWVudCgpOwotICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVz
aGVldHMoeyBMYXlvdXRPcHRpb25zOjpDb250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0IH0sIHRo
aXMpOworICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMo
eyBMYXlvdXRPcHRpb25zOjpJZ25vcmVDb250ZW50VmlzaWJpbGl0eUhpZGRlbiwgTGF5b3V0T3B0
aW9uczo6SWdub3JlQ29udGVudFZpc2liaWxpdHlBdXRvIH0sIHRoaXMpOwogCiAgICAgYXV0byBv
cHRpb25zID0gU2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25zOjpjcmVhdGVQcm9ncmFtbWF0aWMo
KTsKICAgICBvcHRpb25zLmFuaW1hdGVkID0gdXNlU21vb3RoU2Nyb2xsaW5nKFNjcm9sbEJlaGF2
aW9yOjpBdXRvLCB0aGlzKSA/IFNjcm9sbElzQW5pbWF0ZWQ6OlllcyA6IFNjcm9sbElzQW5pbWF0
ZWQ6Ok5vOwpAQCAtMTg4NSw3ICsxODg1LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjpw
YWlyPENoZWNrZWRSZWY8UmVuZGVyTGlzdEJveD4sIExheW91dFJlY3Q+PiBsaXN0Qm94RWwKIAog
UmVmPERPTVJlY3RMaXN0PiBFbGVtZW50OjpnZXRDbGllbnRSZWN0cygpCiB7Ci0gICAgcHJvdGVj
dGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5
b3V0T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dCB9LCB0aGlzKTsKKyAgICBw
cm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMo
eyBMYXlvdXRPcHRpb25zOjpJZ25vcmVDb250ZW50VmlzaWJpbGl0eUhpZGRlbiwgTGF5b3V0T3B0
aW9uczo6SWdub3JlQ29udGVudFZpc2liaWxpdHlBdXRvIH0sIHRoaXMpOwogCiAgICAgQ2hlY2tl
ZFB0ciByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAKQEAgLTE5MzEsNyArMTkzMSw3IEBA
IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPENoZWNrZWRQdHI8UmVuZGVyRWxlbWVudD4sIEZsb2F0
UmVjdD4+IEVsZW1lbnQ6OmJvdW5kaW5nCiBGbG9hdFJlY3QgRWxlbWVudDo6Ym91bmRpbmdDbGll
bnRSZWN0KCkKIHsKICAgICBSZWYgZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwotICAgIGRv
Y3VtZW50LT51cGRhdGVMYXlvdXRJZkRpbWVuc2lvbnNPdXRPZkRhdGUoKnRoaXMsIHsgRGltZW5z
aW9uc0NoZWNrOjpMZWZ0LCBEaW1lbnNpb25zQ2hlY2s6OlRvcCwgRGltZW5zaW9uc0NoZWNrOjpX
aWR0aCwgRGltZW5zaW9uc0NoZWNrOjpIZWlnaHQsIERpbWVuc2lvbnNDaGVjazo6SWdub3JlT3Zl
cmZsb3cgfSwgeyBMYXlvdXRPcHRpb25zOjpDb250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0LCBM
YXlvdXRPcHRpb25zOjpDYW5EZWZlclVwZGF0ZUxheWVyUG9zaXRpb25zLCBMYXlvdXRPcHRpb25z
OjpJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMgfSk7CisgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91
dElmRGltZW5zaW9uc091dE9mRGF0ZSgqdGhpcywgeyBEaW1lbnNpb25zQ2hlY2s6OkxlZnQsIERp
bWVuc2lvbnNDaGVjazo6VG9wLCBEaW1lbnNpb25zQ2hlY2s6OldpZHRoLCBEaW1lbnNpb25zQ2hl
Y2s6OkhlaWdodCwgRGltZW5zaW9uc0NoZWNrOjpJZ25vcmVPdmVyZmxvdyB9LCB7IExheW91dE9w
dGlvbnM6Oklnbm9yZUNvbnRlbnRWaXNpYmlsaXR5SGlkZGVuLCBMYXlvdXRPcHRpb25zOjpJZ25v
cmVDb250ZW50VmlzaWJpbGl0eUF1dG8sIExheW91dE9wdGlvbnM6OkNhbkRlZmVyVXBkYXRlTGF5
ZXJQb3NpdGlvbnMsIExheW91dE9wdGlvbnM6Oklnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyB9KTsK
ICAgICBMb2NhbEZyYW1lVmlldzo6QXV0b1ByZXZlbnRMYXllckFjY2VzcyBwcmV2ZW50QWNjZXNz
KGRvY3VtZW50LT52aWV3KCkpOwogICAgIGF1dG8gcGFpciA9IGJvdW5kaW5nQWJzb2x1dGVSZWN0
V2l0aG91dExheW91dCgpOwogICAgIGlmICghcGFpcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuY3BwCmluZGV4IGIwZGZiOTNjNTYyMi4uZGQ5NTVhZTJlYjk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTU2NSw3ICs1NjUsNyBAQCB2
b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnNldFBpY3R1cmVFbGVtZW50KEhUTUxQaWN0dXJlRWxlbWVu
dCogcGljdHVyZUVsZW1lbnQpCiB1bnNpZ25lZCBIVE1MSW1hZ2VFbGVtZW50Ojp3aWR0aCgpCiB7
CiAgICAgaWYgKGluUmVuZGVyZWREb2N1bWVudCgpKQotICAgICAgICBwcm90ZWN0ZWREb2N1bWVu
dCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25z
OjpDb250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0IH0sIHRoaXMpOworICAgICAgICBwcm90ZWN0
ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlv
dXRPcHRpb25zOjpJZ25vcmVDb250ZW50VmlzaWJpbGl0eUhpZGRlbiwgTGF5b3V0T3B0aW9uczo6
SWdub3JlQ29udGVudFZpc2liaWxpdHlBdXRvIH0sIHRoaXMpOwogCiAgICAgaWYgKCFyZW5kZXJl
cigpKSB7CiAgICAgICAgIC8vIGNoZWNrIHRoZSBhdHRyaWJ1dGUgZmlyc3QgZm9yIGFuIGV4cGxp
Y2l0IHBpeGVsIHZhbHVlCkBAIC01ODgsNyArNTg4LDcgQEAgdW5zaWduZWQgSFRNTEltYWdlRWxl
bWVudDo6d2lkdGgoKQogdW5zaWduZWQgSFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0KCkKIHsKICAg
ICBpZiAoaW5SZW5kZXJlZERvY3VtZW50KCkpCi0gICAgICAgIHByb3RlY3RlZERvY3VtZW50KCkt
PnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7IExheW91dE9wdGlvbnM6OkNv
bnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXQgfSwgdGhpcyk7CisgICAgICAgIHByb3RlY3RlZERv
Y3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7IExheW91dE9w
dGlvbnM6Oklnbm9yZUNvbnRlbnRWaXNpYmlsaXR5SGlkZGVuLCBMYXlvdXRPcHRpb25zOjpJZ25v
cmVDb250ZW50VmlzaWJpbGl0eUF1dG8gfSwgdGhpcyk7CiAKICAgICBpZiAoIXJlbmRlcmVyKCkp
IHsKICAgICAgICAgLy8gY2hlY2sgdGhlIGF0dHJpYnV0ZSBmaXJzdCBmb3IgYW4gZXhwbGljaXQg
cGl4ZWwgdmFsdWUKQEAgLTc0MCw3ICs3NDAsNyBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnNl
dFdpZHRoKHVuc2lnbmVkIHZhbHVlKQogCiBpbnQgSFRNTEltYWdlRWxlbWVudDo6eCgpIGNvbnN0
CiB7Ci0gICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dCB9
LCB0aGlzKTsKKyAgICBwcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5k
aW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpJZ25vcmVDb250ZW50VmlzaWJpbGl0eUhp
ZGRlbiwgTGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2liaWxpdHlBdXRvIH0sIHRoaXMp
OwogICAgIGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVy
ZXIpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNzUxLDcgKzc1MSw3IEBAIGludCBIVE1MSW1hZ2VF
bGVtZW50Ojp4KCkgY29uc3QKIAogaW50IEhUTUxJbWFnZUVsZW1lbnQ6OnkoKSBjb25zdAogewot
ICAgIHByb3RlY3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0cyh7IExheW91dE9wdGlvbnM6OkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXQgfSwgdGhp
cyk7CisgICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2liaWxpdHlIaWRkZW4s
IExheW91dE9wdGlvbnM6Oklnbm9yZUNvbnRlbnRWaXNpYmlsaXR5QXV0byB9LCB0aGlzKTsKICAg
ICBhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQog
ICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJ
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAKaW5k
ZXggZmFhNmI0NTFmOGMwLi45NmRlN2JjY2JmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJ
bnB1dFR5cGUuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgdW5zaWduZWQgSW1hZ2VJbnB1dFR5cGU6
OmhlaWdodCgpIGNvbnN0CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgUmVmPEhUTUxJbnB1
dEVsZW1lbnQ+IGVsZW1lbnQoKnRoaXMtPmVsZW1lbnQoKSk7CiAKLSAgICBlbGVtZW50LT5wcm90
ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoeyBMYXlvdXRPcHRpb25zOjpDb250ZW50Vmlz
aWJpbGl0eUZvcmNlTGF5b3V0IH0sIGVsZW1lbnQucHRyKCkpOworICAgIGVsZW1lbnQtPnByb3Rl
Y3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dCh7IExheW91dE9wdGlvbnM6Oklnbm9yZUNvbnRl
bnRWaXNpYmlsaXR5SGlkZGVuLCBMYXlvdXRPcHRpb25zOjpJZ25vcmVDb250ZW50VmlzaWJpbGl0
eUF1dG8gfSwgZWxlbWVudC5wdHIoKSk7CiAKICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBlbGVt
ZW50LT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gYWRqdXN0Rm9yQWJzb2x1dGVab29tKGRv
d25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVyKS5jb250ZW50Qm94SGVpZ2h0KCksICpyZW5kZXJl
cik7CkBAIC0xOTcsNyArMTk3LDcgQEAgdW5zaWduZWQgSW1hZ2VJbnB1dFR5cGU6OndpZHRoKCkg
Y29uc3QKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKICAgICBSZWY8SFRNTElucHV0RWxlbWVudD4g
ZWxlbWVudCgqdGhpcy0+ZWxlbWVudCgpKTsKIAotICAgIGVsZW1lbnQtPnByb3RlY3RlZERvY3Vt
ZW50KCktPnVwZGF0ZUxheW91dCh7IExheW91dE9wdGlvbnM6OkNvbnRlbnRWaXNpYmlsaXR5Rm9y
Y2VMYXlvdXQgfSwgZWxlbWVudC5wdHIoKSk7CisgICAgZWxlbWVudC0+cHJvdGVjdGVkRG9jdW1l
bnQoKS0+dXBkYXRlTGF5b3V0KHsgTGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2liaWxp
dHlIaWRkZW4sIExheW91dE9wdGlvbnM6Oklnbm9yZUNvbnRlbnRWaXNpYmlsaXR5QXV0byB9LCBl
bGVtZW50LnB0cigpKTsKIAogICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRl
cmVyKCkpCiAgICAgICAgIHJldHVybiBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oZG93bmNhc3Q8UmVu
ZGVyQm94PigqcmVuZGVyZXIpLmNvbnRlbnRCb3hXaWR0aCgpLCAqcmVuZGVyZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlld0xheW91dENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCmlu
ZGV4IDA1MmU0NTEwZTIyYS4uYmI1OWI2Nzk3ODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2FsRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Mb2NhbEZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCkBAIC02NzAsMTYgKzY3MCwy
NiBAQCB2b2lkIExvY2FsRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6YWRkTGF5b3V0RGVsdGEoY29u
c3QgTGF5b3V0U2l6ZSYgZGVsdGEpCiAKIGJvb2wgTG9jYWxGcmFtZVZpZXdMYXlvdXRDb250ZXh0
Ojppc1NraXBwZWRDb250ZW50Rm9yTGF5b3V0KGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
KSBjb25zdAogewotICAgIGlmIChza2lwcGVkQ29udGVudE5lZWRzTGF5b3V0KCkpCisgICAgaWYg
KGlzVmlzaWJsaXR5SGlkZGVuSWdub3JlZCgpIHx8IGlzVmlzaWJsaXR5QXV0b0lnbm9yZWQoKSkg
eworICAgICAgICAvLyBJbiB0aGVvcnkgd2Ugc2hvdWxkIG9ubHkgZGVzY2VuZCBpbnRvIGEgaGlk
ZGVuL2F1dG8gc3VicmVlIHdoZW4gaGlkZGVuL2F1dG8gcm9vdCBpcyBpZ25vcmVkIChzZWUgaXNT
a2lwcGVkQ29udGVudFJvb3RGb3JMYXlvdXQgYmVsb3cpLgogICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQogICAgIHJldHVybiByZW5kZXJlci5pc1NraXBwZWRDb250ZW50KCk7CiB9CiAKIGJv
b2wgTG9jYWxGcmFtZVZpZXdMYXlvdXRDb250ZXh0Ojppc1NraXBwZWRDb250ZW50Um9vdEZvckxh
eW91dChjb25zdCBSZW5kZXJCb3gmIHJlbmRlckJveCkgY29uc3QKIHsKLSAgICBpZiAoc2tpcHBl
ZENvbnRlbnROZWVkc0xheW91dCgpKQorICAgIGlmICghaXNTa2lwcGVkQ29udGVudFJvb3QocmVu
ZGVyQm94KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBjb250ZW50VmlzaWJp
bGl0eSA9IHJlbmRlckJveC5zdHlsZSgpLmNvbnRlbnRWaXNpYmlsaXR5KCk7CisgICAgaWYgKGNv
bnRlbnRWaXNpYmlsaXR5ID09IENvbnRlbnRWaXNpYmlsaXR5OjpIaWRkZW4gJiYgaXNWaXNpYmxp
dHlIaWRkZW5JZ25vcmVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gaXNT
a2lwcGVkQ29udGVudFJvb3QocmVuZGVyQm94KTsKKworICAgIGlmIChjb250ZW50VmlzaWJpbGl0
eSA9PSBDb250ZW50VmlzaWJpbGl0eTo6QXV0byAmJiBpc1Zpc2libGl0eUF1dG9JZ25vcmVkKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiAjaWYgQVNT
RVJUX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZp
ZXdMYXlvdXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3TGF5
b3V0Q29udGV4dC5oCmluZGV4IDUxNjg0ZGVjYTlkZi4uOGVmY2JmNzU2MjY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXdMYXlvdXRDb250ZXh0LmgKQEAgLTE2
Myw3ICsxNjMsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMYXlvdXRTdGF0ZURpc2Fi
bGVyOwogICAgIGZyaWVuZCBjbGFzcyBTdWJ0cmVlTGF5b3V0U3RhdGVNYWludGFpbmVyOwogICAg
IGZyaWVuZCBjbGFzcyBGbGV4UGVyY2VudFJlc29sdmVEaXNhYmxlcjsKLSAgICBmcmllbmQgY2xh
c3MgQ29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dFNjb3BlOworICAgIGZyaWVuZCBjbGFzcyBD
b250ZW50VmlzaWJpbGl0eU92ZXJyaWRlU2NvcGU7CiAKICAgICBib29sIG5lZWRzTGF5b3V0SW50
ZXJuYWwoKSBjb25zdDsKIApAQCAtMTk5LDggKzE5OSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlzYWJsZVBhaW50T2Zmc2V0Q2FjaGUoKSB7IG1fcGFpbnRPZmZzZXRDYWNoZURpc2FibGVDb3Vu
dCsrOyB9CiAgICAgdm9pZCBlbmFibGVQYWludE9mZnNldENhY2hlKCkgeyBBU1NFUlQobV9wYWlu
dE9mZnNldENhY2hlRGlzYWJsZUNvdW50ID4gMCk7IG1fcGFpbnRPZmZzZXRDYWNoZURpc2FibGVD
b3VudC0tOyB9CiAKLSAgICBib29sIHNraXBwZWRDb250ZW50TmVlZHNMYXlvdXQoKSBjb25zdCB7
IHJldHVybiBtX3NraXBwZWRDb250ZW50TmVlZHNMYXlvdXQ7IH0KLSAgICB2b2lkIHNldFNraXBw
ZWRDb250ZW50TmVlZHNMYXlvdXQoYm9vbCBza2lwcGVkQ29udGVudE5lZWRzTGF5b3V0KSB7IG1f
c2tpcHBlZENvbnRlbnROZWVkc0xheW91dCA9IHNraXBwZWRDb250ZW50TmVlZHNMYXlvdXQ7IH0K
KyAgICBib29sIGlzVmlzaWJsaXR5SGlkZGVuSWdub3JlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlz
aWJsaXR5SGlkZGVuSXNJZ25vcmVkOyB9CisgICAgdm9pZCBzZXRJc1Zpc2libGl0eUhpZGRlbkln
bm9yZWQoYm9vbCBpZ25vcmVkKSB7IG1fdmlzaWJsaXR5SGlkZGVuSXNJZ25vcmVkID0gaWdub3Jl
ZDsgfQorCisgICAgYm9vbCBpc1Zpc2libGl0eUF1dG9JZ25vcmVkKCkgY29uc3QgeyByZXR1cm4g
bV92aXNpYmxpdHlBdXRvSXNJZ25vcmVkOyB9CisgICAgdm9pZCBzZXRJc1Zpc2libGl0eUF1dG9J
Z25vcmVkKGJvb2wgaWdub3JlZCkgeyBtX3Zpc2libGl0eUF1dG9Jc0lnbm9yZWQgPSBpZ25vcmVk
OyB9CiAKICAgICB2b2lkIGRpc2FibGVQZXJjZW50SGVpZ2h0UmVzb2x2ZUZvcihjb25zdCBSZW5k
ZXJCb3gmIGZsZXhJdGVtKTsKICAgICB2b2lkIGVuYWJsZVBlcmNlbnRIZWlnaHRSZXNvbHZlRm9y
KGNvbnN0IFJlbmRlckJveCYgZmxleEl0ZW0pOwpAQCAtMjIzLDcgKzIyNiw4IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX25lZWRzRnVsbFJlcGFpbnQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2luQXN5
bmNocm9ub3VzVGFza3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zZXROZWVkc0xheW91dFdhc0Rl
ZmVycmVkIHsgZmFsc2UgfTsKLSAgICBib29sIG1fc2tpcHBlZENvbnRlbnROZWVkc0xheW91dCB7
IGZhbHNlIH07CisgICAgYm9vbCBtX3Zpc2libGl0eUhpZGRlbklzSWdub3JlZCB7IGZhbHNlIH07
CisgICAgYm9vbCBtX3Zpc2libGl0eUF1dG9Jc0lnbm9yZWQgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV91cGRhdGVDb21wb3NpdGluZ0xheWVyc0lzUGVuZGluZyB7IGZhbHNlIH07CiAgICAgTGF5b3V0
UGhhc2UgbV9sYXlvdXRQaGFzZSB7IExheW91dFBoYXNlOjpPdXRzaWRlTGF5b3V0IH07CiAgICAg
ZW51bSBjbGFzcyBMYXlvdXROZXN0ZWRTdGF0ZSA6IHVpbnQ4X3QgIHsgTm90SW5MYXlvdXQsIE5v
dE5lc3RlZCwgTmVzdGVkIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5b3V0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eW91dFN0YXRlLmNwcAppbmRleCBhNzcwN2QyYTkzOTYuLjQ2YTU3MjhmMWY5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuY3BwCkBAIC0zNTEsMTYg
KzM1MSwxOSBAQCBGbGV4UGVyY2VudFJlc29sdmVEaXNhYmxlcjo6fkZsZXhQZXJjZW50UmVzb2x2
ZURpc2FibGVyKCkKICAgICBtX2xheW91dENvbnRleHQtPmVuYWJsZVBlcmNlbnRIZWlnaHRSZXNv
bHZlRm9yKG1fZmxleEl0ZW0pOwogfQogCi1Db250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0U2Nv
cGU6OkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXRTY29wZShMb2NhbEZyYW1lVmlld0xheW91
dENvbnRleHQmIGxheW91dENvbnRleHQpCitDb250ZW50VmlzaWJpbGl0eU92ZXJyaWRlU2NvcGU6
OkNvbnRlbnRWaXNpYmlsaXR5T3ZlcnJpZGVTY29wZShMb2NhbEZyYW1lVmlld0xheW91dENvbnRl
eHQmIGxheW91dENvbnRleHQsIE9wdGlvblNldDxPdmVycmlkZVR5cGU+IG92ZXJyaWRlVHlwZXMp
CiAgICAgOiBtX2xheW91dENvbnRleHQobGF5b3V0Q29udGV4dCkKIHsKLSAgICBtX2xheW91dENv
bnRleHQtPnNldFNraXBwZWRDb250ZW50TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgaWYgKG92ZXJy
aWRlVHlwZXMuY29udGFpbnMoT3ZlcnJpZGVUeXBlOjpIaWRkZW4pKQorICAgICAgICBsYXlvdXRD
b250ZXh0LnNldElzVmlzaWJsaXR5SGlkZGVuSWdub3JlZCh0cnVlKTsKKyAgICBpZiAob3ZlcnJp
ZGVUeXBlcy5jb250YWlucyhPdmVycmlkZVR5cGU6OkF1dG8pKQorICAgICAgICBsYXlvdXRDb250
ZXh0LnNldElzVmlzaWJsaXR5QXV0b0lnbm9yZWQodHJ1ZSk7CiB9CiAKLUNvbnRlbnRWaXNpYmls
aXR5Rm9yY2VMYXlvdXRTY29wZTo6fkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXRTY29wZSgp
CitDb250ZW50VmlzaWJpbGl0eU92ZXJyaWRlU2NvcGU6On5Db250ZW50VmlzaWJpbGl0eU92ZXJy
aWRlU2NvcGUoKQogewotICAgIEFTU0VSVChtX2xheW91dENvbnRleHQtPnNraXBwZWRDb250ZW50
TmVlZHNMYXlvdXQoKSk7Ci0gICAgbV9sYXlvdXRDb250ZXh0LT5zZXRTa2lwcGVkQ29udGVudE5l
ZWRzTGF5b3V0KGZhbHNlKTsKKyAgICBtX2xheW91dENvbnRleHQtPnNldElzVmlzaWJsaXR5SGlk
ZGVuSWdub3JlZChmYWxzZSk7CisgICAgbV9sYXlvdXRDb250ZXh0LT5zZXRJc1Zpc2libGl0eUF1
dG9JZ25vcmVkKGZhbHNlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuaAppbmRleCA4ZjkzMzQ4ZDlkZTAu
LmMzYTU1NTNjZmU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheW91dFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91
dFN0YXRlLmgKQEAgLTIwNSwxMCArMjA1LDE0IEBAIHByaXZhdGU6CiAgICAgQ2hlY2tlZFJlZjxj
b25zdCBSZW5kZXJCb3g+IG1fZmxleEl0ZW07CiB9OwogCi1jbGFzcyBDb250ZW50VmlzaWJpbGl0
eUZvcmNlTGF5b3V0U2NvcGUgeworY2xhc3MgQ29udGVudFZpc2liaWxpdHlPdmVycmlkZVNjb3Bl
IHsKIHB1YmxpYzoKLSAgICBDb250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0U2NvcGUoTG9jYWxG
cmFtZVZpZXdMYXlvdXRDb250ZXh0Jik7Ci0gICAgfkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlv
dXRTY29wZSgpOworICAgIGVudW0gY2xhc3MgT3ZlcnJpZGVUeXBlIHsKKyAgICAgICAgSGlkZGVu
ID0gMSA8PCAwLAorICAgICAgICBBdXRvICA9IDEgPDwgMQorICAgIH07CisgICAgQ29udGVudFZp
c2liaWxpdHlPdmVycmlkZVNjb3BlKExvY2FsRnJhbWVWaWV3TGF5b3V0Q29udGV4dCYsIE9wdGlv
blNldDxPdmVycmlkZVR5cGU+KTsKKyAgICB+Q29udGVudFZpc2liaWxpdHlPdmVycmlkZVNjb3Bl
KCk7CiAKIHByaXZhdGU6CiAgICAgQ2hlY2tlZFJlZjxMb2NhbEZyYW1lVmlld0xheW91dENvbnRl
eHQ+IG1fbGF5b3V0Q29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
ZW9tZXRyeUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVu
dC5jcHAKaW5kZXggNzU4OTYzMTExMWE4Li44NjA1NjEyMjZhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFNWR0dlb21ldHJ5
RWxlbWVudDo6U1ZHR2VvbWV0cnlFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkCiAKIGZsb2F0IFNWR0dlb21ldHJ5RWxlbWVudDo6Z2V0VG90YWxMZW5ndGgo
KSBjb25zdAogewotICAgIHByb3RlY3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBl
bmRpbmdTdHlsZXNoZWV0cyh7IExheW91dE9wdGlvbnM6OkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VM
YXlvdXQgfSwgdGhpcyk7CisgICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdu
b3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2li
aWxpdHlIaWRkZW4sIExheW91dE9wdGlvbnM6Oklnbm9yZUNvbnRlbnRWaXNpYmlsaXR5QXV0byB9
LCB0aGlzKTsKIAogICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBp
ZiAoIXJlbmRlcmVyKQpAQCAtNjYsNyArNjYsNyBAQCBmbG9hdCBTVkdHZW9tZXRyeUVsZW1lbnQ6
OmdldFRvdGFsTGVuZ3RoKCkgY29uc3QKIAogRXhjZXB0aW9uT3I8UmVmPFNWR1BvaW50Pj4gU1ZH
R2VvbWV0cnlFbGVtZW50OjpnZXRQb2ludEF0TGVuZ3RoKGZsb2F0IGRpc3RhbmNlKSBjb25zdAog
ewotICAgIHByb3RlY3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cyh7IExheW91dE9wdGlvbnM6OkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXQgfSwg
dGhpcyk7CisgICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2liaWxpdHlIaWRk
ZW4sIExheW91dE9wdGlvbnM6Oklnbm9yZUNvbnRlbnRWaXNpYmlsaXR5QXV0byB9LCB0aGlzKTsK
IAogICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICAvLyBTcGVjOiBJ
ZiBjdXJyZW50IGVsZW1lbnQgaXMgYSBub24tcmVuZGVyZWQgZWxlbWVudCwgdGhyb3cgYW4gSW52
YWxpZFN0YXRlRXJyb3IuCkBAIC04OSw3ICs4OSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTVkdQb2lu
dD4+IFNWR0dlb21ldHJ5RWxlbWVudDo6Z2V0UG9pbnRBdExlbmd0aChmbG9hdCBkaXN0YW5jZSkK
IAogYm9vbCBTVkdHZW9tZXRyeUVsZW1lbnQ6OmlzUG9pbnRJbkZpbGwoRE9NUG9pbnRJbml0JiYg
cG9pbnRJbml0KQogewotICAgIHByb3RlY3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9y
ZVBlbmRpbmdTdHlsZXNoZWV0cyh7IExheW91dE9wdGlvbnM6OkNvbnRlbnRWaXNpYmlsaXR5Rm9y
Y2VMYXlvdXQgfSwgdGhpcyk7CisgICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0
SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVudFZp
c2liaWxpdHlIaWRkZW4sIExheW91dE9wdGlvbnM6Oklnbm9yZUNvbnRlbnRWaXNpYmlsaXR5QXV0
byB9LCB0aGlzKTsKIAogICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAg
ICBpZiAoIXJlbmRlcmVyKQpAQCAtMTA4LDcgKzEwOCw3IEBAIGJvb2wgU1ZHR2VvbWV0cnlFbGVt
ZW50Ojppc1BvaW50SW5GaWxsKERPTVBvaW50SW5pdCYmIHBvaW50SW5pdCkKIAogYm9vbCBTVkdH
ZW9tZXRyeUVsZW1lbnQ6OmlzUG9pbnRJblN0cm9rZShET01Qb2ludEluaXQmJiBwb2ludEluaXQp
CiB7Ci0gICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dCB9
LCB0aGlzKTsKKyAgICBwcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5k
aW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpJZ25vcmVDb250ZW50VmlzaWJpbGl0eUhp
ZGRlbiwgTGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2liaWxpdHlBdXRvIH0sIHRoaXMp
OwogCiAgICAgYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVu
ZGVyZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMb2NhdGFibGUuY3BwCmluZGV4IDJlMzAzZTJhZTliNi4u
YTNiOTc5NWM0YzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcApAQCAtNzUsNyAr
NzUsNyBAQCBGbG9hdFJlY3QgU1ZHTG9jYXRhYmxlOjpnZXRCQm94KFNWR0VsZW1lbnQqIGVsZW1l
bnQsIFN0eWxlVXBkYXRlU3RyYXRlZ3kgc3R5bGVVcAogewogICAgIEFTU0VSVChlbGVtZW50KTsK
ICAgICBpZiAoc3R5bGVVcGRhdGVTdHJhdGVneSA9PSBBbGxvd1N0eWxlVXBkYXRlKQotICAgICAg
ICBlbGVtZW50LT5wcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5n
U3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpDb250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0
IH0sIGVsZW1lbnQpOworICAgICAgICBlbGVtZW50LT5wcm90ZWN0ZWREb2N1bWVudCgpLT51cGRh
dGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpJZ25vcmVD
b250ZW50VmlzaWJpbGl0eUhpZGRlbiwgTGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2li
aWxpdHlBdXRvIH0sIGVsZW1lbnQpOwogCiAgICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgd2Ugc2hv
dWxkIHN1cHBvcnQgZ2V0QkJveCBmb3IgZGV0YWNoZWQgZWxlbWVudHMuCiAgICAgaWYgKCFlbGVt
ZW50LT5yZW5kZXJlcigpKQpAQCAtODgsNyArODgsNyBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHTG9j
YXRhYmxlOjpjb21wdXRlQ1RNKFNWR0VsZW1lbnQqIGVsZW1lbnQsIENUTVNjb3BlIG1vZGUsIFN0
eQogewogICAgIEFTU0VSVChlbGVtZW50KTsKICAgICBpZiAoc3R5bGVVcGRhdGVTdHJhdGVneSA9
PSBBbGxvd1N0eWxlVXBkYXRlKQotICAgICAgICBlbGVtZW50LT5wcm90ZWN0ZWREb2N1bWVudCgp
LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpD
b250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0IH0sIGVsZW1lbnQpOworICAgICAgICBlbGVtZW50
LT5wcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMoeyBMYXlvdXRPcHRpb25zOjpJZ25vcmVDb250ZW50VmlzaWJpbGl0eUhpZGRlbiwgTGF5b3V0
T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2liaWxpdHlBdXRvIH0sIGVsZW1lbnQpOwogCiAgICAg
UmVmUHRyIHN0b3BBdEVsZW1lbnQgPSBtb2RlID09IE5lYXJlc3RWaWV3cG9ydFNjb3BlID8gbmVh
cmVzdFZpZXdwb3J0RWxlbWVudChlbGVtZW50KSA6IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEVsZW1lbnQuY3BwCmluZGV4IGYzODhmNTJkMjcxOS4uYzYwNDU3ZmFmZjVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKQEAgLTE4MCwxNCArMTgwLDE0IEBAIHZv
aWQgU1ZHUGF0aEVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3Zh
bFR5cGUsIENvbnRhaW5lck5vZGUmCiAKIGZsb2F0IFNWR1BhdGhFbGVtZW50OjpnZXRUb3RhbExl
bmd0aCgpIGNvbnN0CiB7Ci0gICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdu
b3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlG
b3JjZUxheW91dCB9LCB0aGlzKTsKKyAgICBwcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpJZ25vcmVDb250ZW50
VmlzaWJpbGl0eUhpZGRlbiwgTGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2liaWxpdHlB
dXRvIH0sIHRoaXMpOwogCiAgICAgcmV0dXJuIGdldFRvdGFsTGVuZ3RoT2ZTVkdQYXRoQnl0ZVN0
cmVhbShwYXRoQnl0ZVN0cmVhbSgpKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPFNWR1BvaW50Pj4g
U1ZHUGF0aEVsZW1lbnQ6OmdldFBvaW50QXRMZW5ndGgoZmxvYXQgZGlzdGFuY2UpIGNvbnN0CiB7
Ci0gICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxl
c2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dCB9LCB0
aGlzKTsKKyAgICBwcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5n
U3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpJZ25vcmVDb250ZW50VmlzaWJpbGl0eUhpZGRl
biwgTGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2liaWxpdHlBdXRvIH0sIHRoaXMpOwog
CiAgICAgLy8gU3BlYzogSWYgaXQgaXMgbm90IGFibGUgdG8gY29tcHV0ZSB0aGUgdG90YWwgbGVu
Z3RoIG9mIHBhdGgsIHRoZW4gdGhyb3cuCiAgICAgaWYgKHBhdGhCeXRlU3RyZWFtKCkuaXNFbXB0
eSgpKQpAQCAtMjAyLDcgKzIwMiw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTVkdQb2ludD4+IFNWR1Bh
dGhFbGVtZW50OjpnZXRQb2ludEF0TGVuZ3RoKGZsb2F0IGRpc3RhbmNlKSBjb25zCiAKIHVuc2ln
bmVkIFNWR1BhdGhFbGVtZW50OjpnZXRQYXRoU2VnQXRMZW5ndGgoZmxvYXQgbGVuZ3RoKSBjb25z
dAogewotICAgIHByb3RlY3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cyh7IExheW91dE9wdGlvbnM6OkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXQg
fSwgdGhpcyk7CisgICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2liaWxpdHlI
aWRkZW4sIExheW91dE9wdGlvbnM6Oklnbm9yZUNvbnRlbnRWaXNpYmlsaXR5QXV0byB9LCB0aGlz
KTsKIAogICAgIHJldHVybiBnZXRTVkdQYXRoU2VnQXRMZW5ndGhGcm9tU1ZHUGF0aEJ5dGVTdHJl
YW0ocGF0aEJ5dGVTdHJlYW0oKSwgbGVuZ3RoKTsKIH0KQEAgLTIxMCw3ICsyMTAsNyBAQCB1bnNp
Z25lZCBTVkdQYXRoRWxlbWVudDo6Z2V0UGF0aFNlZ0F0TGVuZ3RoKGZsb2F0IGxlbmd0aCkgY29u
c3QKIEZsb2F0UmVjdCBTVkdQYXRoRWxlbWVudDo6Z2V0QkJveChTdHlsZVVwZGF0ZVN0cmF0ZWd5
IHN0eWxlVXBkYXRlU3RyYXRlZ3kpCiB7CiAgICAgaWYgKHN0eWxlVXBkYXRlU3RyYXRlZ3kgPT0g
QWxsb3dTdHlsZVVwZGF0ZSkKLSAgICAgICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6Q29udGVudFZpc2li
aWxpdHlGb3JjZUxheW91dCB9LCB0aGlzKTsKKyAgICAgICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6SWdu
b3JlQ29udGVudFZpc2liaWxpdHlIaWRkZW4sIExheW91dE9wdGlvbnM6Oklnbm9yZUNvbnRlbnRW
aXNpYmlsaXR5QXV0byB9LCB0aGlzKTsKIAogICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHNo
b3VsZCBzdXBwb3J0IGdldEJCb3ggZm9yIGRldGFjaGVkIGVsZW1lbnRzLgogICAgIC8vIEZJWE1F
OiBJZiB0aGUgcGF0aCBpcyBudWxsIGl0IG1lYW5zIHdlJ3JlIGNhbGxpbmcgZ2V0QkJveCgpIGJl
Zm9yZSBsYXlpbmcgb3V0IHRoaXMgZWxlbWVudCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50
LmNwcAppbmRleCAxOWJmNTVlOGMwZmMuLjM3YzhhNDdiNjI3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTVkdFbGVtZW50LmNwcApAQCAtMzEwLDI1ICszMTAsMjUgQEAgc3RhdGljIGJvb2wgY2hlY2tF
bmNsb3N1cmVXaXRob3V0VXBkYXRpbmdMYXlvdXQoU1ZHRWxlbWVudCYgZWxlbWVudCwgU1ZHUmVj
dCYgcmUKIAogUmVmPE5vZGVMaXN0PiBTVkdTVkdFbGVtZW50OjpnZXRJbnRlcnNlY3Rpb25MaXN0
KFNWR1JlY3QmIHJlY3QsIFNWR0VsZW1lbnQqIHJlZmVyZW5jZUVsZW1lbnQpCiB7Ci0gICAgcHJv
dGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsg
TGF5b3V0T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dCB9LCB0aGlzKTsKKyAg
ICBwcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMoeyBMYXlvdXRPcHRpb25zOjpJZ25vcmVDb250ZW50VmlzaWJpbGl0eUhpZGRlbiwgTGF5b3V0
T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2liaWxpdHlBdXRvIH0sIHRoaXMpOwogICAgIHJldHVy
biBjb2xsZWN0SW50ZXJzZWN0aW9uT3JFbmNsb3N1cmVMaXN0KHJlY3QsIHJlZmVyZW5jZUVsZW1l
bnQsIGNoZWNrSW50ZXJzZWN0aW9uV2l0aG91dFVwZGF0aW5nTGF5b3V0KTsKIH0KIAogUmVmPE5v
ZGVMaXN0PiBTVkdTVkdFbGVtZW50OjpnZXRFbmNsb3N1cmVMaXN0KFNWR1JlY3QmIHJlY3QsIFNW
R0VsZW1lbnQqIHJlZmVyZW5jZUVsZW1lbnQpCiB7Ci0gICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6Q29u
dGVudFZpc2liaWxpdHlGb3JjZUxheW91dCB9LCB0aGlzKTsKKyAgICBwcm90ZWN0ZWREb2N1bWVu
dCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25z
OjpJZ25vcmVDb250ZW50VmlzaWJpbGl0eUhpZGRlbiwgTGF5b3V0T3B0aW9uczo6SWdub3JlQ29u
dGVudFZpc2liaWxpdHlBdXRvIH0sIHRoaXMpOwogICAgIHJldHVybiBjb2xsZWN0SW50ZXJzZWN0
aW9uT3JFbmNsb3N1cmVMaXN0KHJlY3QsIHJlZmVyZW5jZUVsZW1lbnQsIGNoZWNrRW5jbG9zdXJl
V2l0aG91dFVwZGF0aW5nTGF5b3V0KTsKIH0KIAogYm9vbCBTVkdTVkdFbGVtZW50OjpjaGVja0lu
dGVyc2VjdGlvbihSZWY8U1ZHRWxlbWVudD4mJiBlbGVtZW50LCBTVkdSZWN0JiByZWN0KQogewot
ICAgIGVsZW1lbnQtPnByb3RlY3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cyh7IExheW91dE9wdGlvbnM6OkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlv
dXQgfSwgZWxlbWVudC5wdHIoKSk7CisgICAgZWxlbWVudC0+cHJvdGVjdGVkRG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6SWdu
b3JlQ29udGVudFZpc2liaWxpdHlIaWRkZW4sIExheW91dE9wdGlvbnM6Oklnbm9yZUNvbnRlbnRW
aXNpYmlsaXR5QXV0byB9LCBlbGVtZW50LnB0cigpKTsKICAgICByZXR1cm4gY2hlY2tJbnRlcnNl
Y3Rpb25XaXRob3V0VXBkYXRpbmdMYXlvdXQoZWxlbWVudCwgcmVjdCk7CiB9CiAKIGJvb2wgU1ZH
U1ZHRWxlbWVudDo6Y2hlY2tFbmNsb3N1cmUoUmVmPFNWR0VsZW1lbnQ+JiYgZWxlbWVudCwgU1ZH
UmVjdCYgcmVjdCkKIHsKLSAgICBlbGVtZW50LT5wcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVM
YXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpDb250ZW50Vmlz
aWJpbGl0eUZvcmNlTGF5b3V0IH0sIGVsZW1lbnQucHRyKCkpOworICAgIGVsZW1lbnQtPnByb3Rl
Y3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7IExh
eW91dE9wdGlvbnM6Oklnbm9yZUNvbnRlbnRWaXNpYmlsaXR5SGlkZGVuLCBMYXlvdXRPcHRpb25z
OjpJZ25vcmVDb250ZW50VmlzaWJpbGl0eUF1dG8gfSwgZWxlbWVudC5wdHIoKSk7CiAgICAgcmV0
dXJuIGNoZWNrRW5jbG9zdXJlV2l0aG91dFVwZGF0aW5nTGF5b3V0KGVsZW1lbnQsIHJlY3QpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCmluZGV4
IDM5MTcwMTJmYmNjMi4uYzhjMzViZGI1YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmNwcApAQCAtNTYsMTMgKzU2LDEzIEBAIFNWR1RleHRDb250ZW50
RWxlbWVudDo6U1ZHVGV4dENvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtCiAKIHVuc2lnbmVkIFNWR1RleHRDb250ZW50RWxlbWVudDo6Z2V0TnVtYmVyT2ZD
aGFycygpCiB7Ci0gICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxh
eW91dCB9LCB0aGlzKTsKKyAgICBwcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpJZ25vcmVDb250ZW50VmlzaWJp
bGl0eUhpZGRlbiwgTGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVudFZpc2liaWxpdHlBdXRvIH0s
IHRoaXMpOwogICAgIHJldHVybiBTVkdUZXh0UXVlcnkoY2hlY2tlZFJlbmRlcmVyKCkuZ2V0KCkp
Lm51bWJlck9mQ2hhcmFjdGVycygpOwogfQogCiBmbG9hdCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OmdldENvbXB1dGVkVGV4dExlbmd0aCgpCiB7Ci0gICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6Q29udGVu
dFZpc2liaWxpdHlGb3JjZUxheW91dCB9LCB0aGlzKTsKKyAgICBwcm90ZWN0ZWREb2N1bWVudCgp
LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpJ
Z25vcmVDb250ZW50VmlzaWJpbGl0eUhpZGRlbiwgTGF5b3V0T3B0aW9uczo6SWdub3JlQ29udGVu
dFZpc2liaWxpdHlBdXRvIH0sIHRoaXMpOwogICAgIHJldHVybiBTVkdUZXh0UXVlcnkoY2hlY2tl
ZFJlbmRlcmVyKCkuZ2V0KCkpLnRleHRMZW5ndGgoKTsKIH0KIApAQCAtMTEwLDcgKzExMCw3IEBA
IEV4Y2VwdGlvbk9yPGZsb2F0PiBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmdldFJvdGF0aW9uT2ZD
aGFyKHVuc2lnbmVkIGNoYXJudW0pCiAKIGludCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmdldENo
YXJOdW1BdFBvc2l0aW9uKERPTVBvaW50SW5pdCYmIHBvaW50SW5pdCkKIHsKLSAgICBwcm90ZWN0
ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlv
dXRPcHRpb25zOjpDb250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0IH0sIHRoaXMpOworICAgIHBy
b3RlY3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7
IExheW91dE9wdGlvbnM6Oklnbm9yZUNvbnRlbnRWaXNpYmlsaXR5SGlkZGVuLCBMYXlvdXRPcHRp
b25zOjpJZ25vcmVDb250ZW50VmlzaWJpbGl0eUF1dG8gfSwgdGhpcyk7CiAgICAgRmxvYXRQb2lu
dCB0cmFuc2Zvcm1Qb2ludCB7c3RhdGljX2Nhc3Q8ZmxvYXQ+KHBvaW50SW5pdC54KSwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHBvaW50SW5pdC55KX07CiAgICAgcmV0dXJuIFNWR1RleHRRdWVyeShjaGVj
a2VkUmVuZGVyZXIoKS5nZXQoKSkuY2hhcmFjdGVyTnVtYmVyQXRQb3NpdGlvbih0cmFuc2Zvcm1Q
b2ludCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>474750</attachid>
            <date>2025-03-28 09:45:57 -0700</date>
            <delta_ts>2025-03-28 15:58:40 -0700</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-290597-20250328094556.patch</filename>
            <type>text/plain</type>
            <size>35160</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAyZWZjNzJiMjdlZmFjODJiMDNlM2I4ZmZhYzBmOGY1MDE0ZmRiY2Q3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IEZyaSwgMjggTWFyIDIwMjUgMDc6NTY6NTEgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbY29udGVu
dCB2aXNpYmlsaXR5XSBEZWNvdXBsZSBoaWRkZW4gYW5kIGF1dG8gb3ZlcnJpZGUgc2NvcGVzCiAo
Zm9yY2VkIGxheW91dCkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5
MDU5NwoKUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCgpUaGlzIGlzIGluIHByZXBhcmF0aW9u
IGZvciBmaXhpbmcgZmluZC1pbi1wYWdlIGJ1ZyB3aGVyZSAnYy12OiBhdXRvJyBjb250ZW50IGlz
IG5vdCBkaXNjb3ZlcmFibGUuClRoaXMgZW5hYmxlcyB1cyB0byBydW4gImZvcmNlZCIgbGF5b3V0
IG9uICdjLXY6IGF1dG8nIGNvbnRlbnQgb25seSBhcyBvcHBvc2VkIHRvIHRvIGFsbCBjLXYuCgoq
IExheW91dFRlc3RzL2Zhc3QvYmxvY2svZmxvYXQvMDAxLmh0bWw6CiogU291cmNlL1dlYkNvcmUv
Y3NzL0NvbXB1dGVkU3R5bGVFeHRyYWN0b3IuY3BwOgooV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcDoKKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVMYXlvdXQpOgooV2ViQ29yZTo6RG9j
dW1lbnQ6OnVwZGF0ZUxheW91dElmRGltZW5zaW9uc091dE9mRGF0ZSk6CiogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50RW51bXMuaDoKKiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHA6
CihXZWJDb3JlOjpFbGVtZW50OjpvZmZzZXRMZWZ0KToKKFdlYkNvcmU6OkVsZW1lbnQ6Om9mZnNl
dFRvcCk6CihXZWJDb3JlOjpFbGVtZW50OjpvZmZzZXRQYXJlbnQpOgooV2ViQ29yZTo6RWxlbWVu
dDo6Y2xpZW50TGVmdCk6CihXZWJDb3JlOjpFbGVtZW50OjpjbGllbnRUb3ApOgooV2ViQ29yZTo6
RWxlbWVudDo6c2Nyb2xsTGVmdCk6CihXZWJDb3JlOjpFbGVtZW50OjpzY3JvbGxUb3ApOgooV2Vi
Q29yZTo6RWxlbWVudDo6c2V0U2Nyb2xsTGVmdCk6CihXZWJDb3JlOjpFbGVtZW50OjpzZXRTY3Jv
bGxUb3ApOgooV2ViQ29yZTo6RWxlbWVudDo6Z2V0Q2xpZW50UmVjdHMpOgooV2ViQ29yZTo6RWxl
bWVudDo6Ym91bmRpbmdDbGllbnRSZWN0KToKKiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwOgooV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6d2lkdGgpOgooV2ViQ29y
ZTo6SFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0KToKKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6
OnggY29uc3QpOgooV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6eSBjb25zdCk6CiogU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CihXZWJDb3JlOjpJbWFnZUlucHV0VHlw
ZTo6aGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6OkltYWdlSW5wdXRUeXBlOjp3aWR0aCBjb25zdCk6
CiogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlld0xheW91dENvbnRleHQuY3BwOgoo
V2ViQ29yZTo6TG9jYWxGcmFtZVZpZXdMYXlvdXRDb250ZXh0Ojppc1NraXBwZWRDb250ZW50Rm9y
TGF5b3V0IGNvbnN0KToKKFdlYkNvcmU6OkxvY2FsRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6aXNT
a2lwcGVkQ29udGVudFJvb3RGb3JMYXlvdXQgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
TG9jYWxGcmFtZVZpZXdMYXlvdXRDb250ZXh0Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheW91dFN0YXRlLmNwcDoKKFdlYkNvcmU6OkNvbnRlbnRWaXNpYmlsaXR5T3ZlcnJp
ZGVTY29wZTo6Q29udGVudFZpc2liaWxpdHlPdmVycmlkZVNjb3BlKToKKFdlYkNvcmU6OkNvbnRl
bnRWaXNpYmlsaXR5T3ZlcnJpZGVTY29wZTo6fkNvbnRlbnRWaXNpYmlsaXR5T3ZlcnJpZGVTY29w
ZSk6CihXZWJDb3JlOjpDb250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0U2NvcGU6OkNvbnRlbnRW
aXNpYmlsaXR5Rm9yY2VMYXlvdXRTY29wZSk6IERlbGV0ZWQuCihXZWJDb3JlOjpDb250ZW50Vmlz
aWJpbGl0eUZvcmNlTGF5b3V0U2NvcGU6On5Db250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0U2Nv
cGUpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0
ZS5oOgoqIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwOgooV2ViQ29y
ZTo6U1ZHR2VvbWV0cnlFbGVtZW50OjpnZXRUb3RhbExlbmd0aCBjb25zdCk6CihXZWJDb3JlOjpT
VkdHZW9tZXRyeUVsZW1lbnQ6OmdldFBvaW50QXRMZW5ndGggY29uc3QpOgooV2ViQ29yZTo6U1ZH
R2VvbWV0cnlFbGVtZW50Ojppc1BvaW50SW5GaWxsKToKKFdlYkNvcmU6OlNWR0dlb21ldHJ5RWxl
bWVudDo6aXNQb2ludEluU3Ryb2tlKToKKiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxl
LmNwcDoKKFdlYkNvcmU6OlNWR0xvY2F0YWJsZTo6Z2V0QkJveCk6CihXZWJDb3JlOjpTVkdMb2Nh
dGFibGU6OmNvbXB1dGVDVE0pOgoqIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5j
cHA6CihXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6Z2V0VG90YWxMZW5ndGggY29uc3QpOgooV2Vi
Q29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmdldFBvaW50QXRMZW5ndGggY29uc3QpOgooV2ViQ29yZTo6
U1ZHUGF0aEVsZW1lbnQ6OmdldFBhdGhTZWdBdExlbmd0aCBjb25zdCk6CihXZWJDb3JlOjpTVkdQ
YXRoRWxlbWVudDo6Z2V0QkJveCk6CiogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
Y3BwOgooV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6Z2V0SW50ZXJzZWN0aW9uTGlzdCk6CihXZWJD
b3JlOjpTVkdTVkdFbGVtZW50OjpnZXRFbmNsb3N1cmVMaXN0KToKKFdlYkNvcmU6OlNWR1NWR0Vs
ZW1lbnQ6OmNoZWNrSW50ZXJzZWN0aW9uKToKKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmNoZWNr
RW5jbG9zdXJlKToKKiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNw
cDoKKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6Z2V0TnVtYmVyT2ZDaGFycyk6CihX
ZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmdldENvbXB1dGVkVGV4dExlbmd0aCk6CihX
ZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmdldENoYXJOdW1BdFBvc2l0aW9uKToKLS0t
CiBTb3VyY2UvV2ViQ29yZS9jc3MvQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvci5jcHAgfCAgMiArLQog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCAgICAgICAgICAgICAgIHwgMTUgKysrKysr
KysrKy0tLQogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RW51bXMuaCAgICAgICAgICAgIHwg
IDkgKysrKy0tLS0KIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCAgICAgICAgICAgICAg
ICB8IDIyICsrKysrKysrKy0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAgICAgICB8ICA4ICsrKy0tLS0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJ
bnB1dFR5cGUuY3BwICAgICAgICB8ICA0ICsrLS0KIC4uLi9wYWdlL0xvY2FsRnJhbWVWaWV3TGF5
b3V0Q29udGV4dC5jcHAgICAgICB8IDE2ICsrKysrKysrKysrLS0tCiAuLi4vcGFnZS9Mb2NhbEZy
YW1lVmlld0xheW91dENvbnRleHQuaCAgICAgICAgfCAxMiArKysrKystLS0tCiAuLi4vV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuY3BwICAgfCAxMyArKysrKystLS0tLQogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmggIHwgMTAgKysrKysrLS0t
CiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcCAgICAgfCAgOCArKyst
LS0tCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcCAgICAgICAgICAgfCAgNCAr
Ky0tCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwICAgICAgICAgfCAgOCAr
KystLS0tCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgICAgICAgICAgfCAg
OCArKystLS0tCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcCAg
fCAgNiArKy0tLQogMTUgZmlsZXMgY2hhbmdlZCwgODggaW5zZXJ0aW9ucygrKSwgNTcgZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NvbXB1dGVkU3R5bGVFeHRy
YWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NvbXB1dGVkU3R5bGVFeHRyYWN0b3IuY3Bw
CmluZGV4IGVjMTAyMjkwNTM4ZC4uZDQxNDExMDA2OWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NvbXB1dGVkU3R5bGVFeHRyYWN0b3IuY3BwCkBAIC0zNTk1LDcgKzM1OTUsNyBAQCBSZWZQ
dHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICB9KCk7CiAKICAgICAgICAgaWYgKGZvcmNlZExh
eW91dCA9PSBGb3JjZWRMYXlvdXQ6OlllcykKLSAgICAgICAgICAgIGRvY3VtZW50LT51cGRhdGVM
YXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoTGF5b3V0T3B0aW9uczo6Q29udGVudFZpc2li
aWxpdHlGb3JjZUxheW91dCwgbV9lbGVtZW50LmdldCgpKTsKKyAgICAgICAgICAgIGRvY3VtZW50
LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpU
cmVhdENvbnRlbnRWaXNpYmlsaXR5SGlkZGVuQXNWaXNpYmxlLCBMYXlvdXRPcHRpb25zOjpUcmVh
dENvbnRlbnRWaXNpYmlsaXR5QXV0b0FzVmlzaWJsZSB9LCBtX2VsZW1lbnQuZ2V0KCkpOwogICAg
ICAgICBlbHNlIGlmIChmb3JjZWRMYXlvdXQgPT0gRm9yY2VkTGF5b3V0OjpQYXJlbnREb2N1bWVu
dCkgewogICAgICAgICAgICAgaWYgKFJlZlB0ciBvd25lciA9IGRvY3VtZW50LT5vd25lckVsZW1l
bnQoKSkKICAgICAgICAgICAgICAgICBvd25lci0+cHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRl
TGF5b3V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlZDkzYmIxMjJlNDIuLjAzNTJk
YWI1ODMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yOTc1LDcgKzI5NzUsNyBAQCBh
dXRvIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQoT3B0aW9uU2V0PExheW91dE9wdGlvbnM+IGxheW91
dE9wdGlvbnMsIGNvbnN0IEVsZW1lbgogCiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRDb250ZXh0
ID0gZnJhbWVWaWV3LT5sYXlvdXRDb250ZXh0KCk7CiAgICAgICAgICAgICBhdXRvIHJ1bkZvcmNl
ZExheW91dE9uU2tpcHBlZENvbnRlbnRJZk5lZWRlZCA9IFsmXSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCFsYXlvdXRPcHRpb25zLmNvbnRhaW5zKExheW91dE9wdGlvbnM6OkNvbnRlbnRWaXNpYmls
aXR5Rm9yY2VMYXlvdXQpKQorICAgICAgICAgICAgICAgIGlmICghbGF5b3V0T3B0aW9ucy5jb250
YWluc0FsbCh7IExheW91dE9wdGlvbnM6OlRyZWF0Q29udGVudFZpc2liaWxpdHlIaWRkZW5Bc1Zp
c2libGUsIExheW91dE9wdGlvbnM6OlRyZWF0Q29udGVudFZpc2liaWxpdHlBdXRvQXNWaXNpYmxl
IH0pKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgICAg
ICBBU1NFUlQoY29udGV4dCk7CkBAIC0yOTkyLDcgKzI5OTIsMTYgQEAgYXV0byBEb2N1bWVudDo6
dXBkYXRlTGF5b3V0KE9wdGlvblNldDxMYXlvdXRPcHRpb25zPiBsYXlvdXRPcHRpb25zLCBjb25z
dCBFbGVtZW4KIAogICAgICAgICAgICAgICAgIHNraXBwZWRTdWJ0cmVlZVJvb3RSZW5kZXJlci5z
ZXROZWVkc0xheW91dCgpOwogCi0gICAgICAgICAgICAgICAgYXV0byBjb250ZW50VmlzaWJpbGl0
eVNjb3BlID0gQ29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dFNjb3BlIHsgbGF5b3V0Q29udGV4
dCB9OworICAgICAgICAgICAgICAgIGF1dG8gb3ZlcnJpZGVUeXBlcyA9IFsmXSB7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gdHlwZXMgPSBPcHRpb25TZXQ8Q29udGVudFZpc2liaWxpdHlPdmVy
cmlkZVNjb3BlOjpPdmVycmlkZVR5cGU+IHsgfTsKKworICAgICAgICAgICAgICAgICAgICBpZiAo
bGF5b3V0T3B0aW9ucy5jb250YWlucyhMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmls
aXR5SGlkZGVuQXNWaXNpYmxlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLmFkZChD
b250ZW50VmlzaWJpbGl0eU92ZXJyaWRlU2NvcGU6Ok92ZXJyaWRlVHlwZTo6SGlkZGVuKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGxheW91dE9wdGlvbnMuY29udGFpbnMoTGF5b3V0T3B0aW9u
czo6VHJlYXRDb250ZW50VmlzaWJpbGl0eUF1dG9Bc1Zpc2libGUpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZXMuYWRkKENvbnRlbnRWaXNpYmlsaXR5T3ZlcnJpZGVTY29wZTo6T3ZlcnJp
ZGVUeXBlOjpBdXRvKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVzOworICAgICAg
ICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgYXV0byBjb250ZW50VmlzaWJpbGl0eU92ZXJy
aWRlU2NvcGUgPSBDb250ZW50VmlzaWJpbGl0eU92ZXJyaWRlU2NvcGUgeyBsYXlvdXRDb250ZXh0
LCBvdmVycmlkZVR5cGVzKCkgfTsKICAgICAgICAgICAgICAgICBsYXlvdXRDb250ZXh0LmxheW91
dChsYXlvdXRPcHRpb25zLmNvbnRhaW5zKExheW91dE9wdGlvbnM6OkNhbkRlZmVyVXBkYXRlTGF5
ZXJQb3NpdGlvbnMpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IH07CkBAIC0zMDg3LDcgKzMwOTYsNyBAQCBib29sIERvY3VtZW50Ojp1cGRhdGVMYXlvdXRJZkRp
bWVuc2lvbnNPdXRPZkRhdGUoRWxlbWVudCYgZWxlbWVudCwgT3B0aW9uU2V0PERpbQogCiAgICAg
dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogCi0gICAgaWYgKGxheW91dE9wdGlvbnMuY29udGFpbnMo
TGF5b3V0T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dCkpIHsKKyAgICBpZiAo
bGF5b3V0T3B0aW9ucy5jb250YWluc0FsbCh7IExheW91dE9wdGlvbnM6OlRyZWF0Q29udGVudFZp
c2liaWxpdHlIaWRkZW5Bc1Zpc2libGUsIExheW91dE9wdGlvbnM6OlRyZWF0Q29udGVudFZpc2li
aWxpdHlBdXRvQXNWaXNpYmxlIH0pKSB7CiAgICAgICAgIGlmIChDaGVja2VkUHRyIHJlbmRlcmVy
ID0gZWxlbWVudC5yZW5kZXJlcigpOyByZW5kZXJlciAmJiAgcmVuZGVyZXItPnN0eWxlKCkuaGFz
U2tpcHBlZENvbnRlbnQoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gd2FzU2tpcHBlZER1cmlu
Z0xhc3RMYXlvdXQgPSByZW5kZXJlci0+d2FzU2tpcHBlZER1cmluZ0xhc3RMYXlvdXREdWVUb0Nv
bnRlbnRWaXNpYmlsaXR5KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoKndhc1NraXBwZWREdXJp
bmdMYXN0TGF5b3V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RW51
bXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEVudW1zLmgKaW5kZXggNzdkYmYyZGQ1
OTExLi5iZDY0MTM3MDM2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dEVudW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RW51bXMuaApAQCAtNTMs
MTQgKzUzLDE1IEBAIGVudW0gY2xhc3MgRG9jdW1lbnRDb21wYXRpYmlsaXR5TW9kZSA6IHVpbnQ4
X3QgewogZW51bSBjbGFzcyBMYXlvdXRPcHRpb25zIDogdWludDhfdCB7CiAgICAgUnVuUG9zdExh
eW91dFRhc2tzU3luY2hyb25vdXNseSA9IDEgPDwgMCwKICAgICBJZ25vcmVQZW5kaW5nU3R5bGVz
aGVldHMgPSAxIDw8IDEsCi0gICAgQ29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dCA9IDEgPDwg
MiwKLSAgICBVcGRhdGVDb21wb3NpdGluZ0xheWVycyA9IDEgPDwgMywKLSAgICBEb05vdExheW91
dEFuY2VzdG9yRG9jdW1lbnRzID0gMSA8PCA0LAorICAgIFRyZWF0Q29udGVudFZpc2liaWxpdHlI
aWRkZW5Bc1Zpc2libGUgPSAxIDw8IDIsCisgICAgVHJlYXRDb250ZW50VmlzaWJpbGl0eUF1dG9B
c1Zpc2libGUgPSAxIDw8IDMsCisgICAgVXBkYXRlQ29tcG9zaXRpbmdMYXllcnMgPSAxIDw8IDQs
CisgICAgRG9Ob3RMYXlvdXRBbmNlc3RvckRvY3VtZW50cyA9IDEgPDwgNSwKICAgICAvLyBEb2Vz
bid0IGNhbGwgUmVuZGVyTGF5ZXI6OnJlY3Vyc2l2ZVVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJM
YXlvdXQgaWYKICAgICAvLyBwb3NzaWJsZS4gVGhlIGNhbGxlciBzaG91bGQgdXNlIGEgTG9jYWxG
cmFtZVZpZXc6OkF1dG9QcmV2ZW50TGF5ZXJBY2Nlc3MKICAgICAvLyBmb3IgdGhlIHNjb3BlIHRo
YXQgbGF5b3V0IGlzIGV4cGVjdGVkIHRvIGJlIGZsdXNoZWQgdG8gc3RvcCBhbnkgYWNjZXNzIHRv
CiAgICAgLy8gdGhlIHN0YWxlIFJlbmRlckxheWVycy4KLSAgICBDYW5EZWZlclVwZGF0ZUxheWVy
UG9zaXRpb25zID0gMSA8PCA1CisgICAgQ2FuRGVmZXJVcGRhdGVMYXllclBvc2l0aW9ucyA9IDEg
PDwgNgogfTsKIAogZW51bSBjbGFzcyBDYW5OYXZpZ2F0ZVN0YXRlIDogdWludDhfdCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKaW5kZXggZTFlNTFhODE1ZjYyLi4yY2JiY2UyNzI5NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKQEAgLTE0MDAsNyArMTQwMCw3IEBAIGludCBFbGVtZW50OjpvZmZzZXRM
ZWZ0Rm9yQmluZGluZ3MoKQogCiBpbnQgRWxlbWVudDo6b2Zmc2V0TGVmdCgpCiB7Ci0gICAgcHJv
dGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsg
TGF5b3V0T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dCB9LCB0aGlzKTsKKyAg
ICBwcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMoeyBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5SGlkZGVuQXNWaXNpYmxl
LCBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5QXV0b0FzVmlzaWJsZSB9LCB0
aGlzKTsKICAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJlciA9IHJlbmRlckJveE1vZGVsT2JqZWN0
KCkpCiAgICAgICAgIHJldHVybiBhZGp1c3RPZmZzZXRGb3Jab29tQW5kU3VicGl4ZWxMYXlvdXQo
KnJlbmRlcmVyLCByZW5kZXJlci0+b2Zmc2V0TGVmdCgpKTsKICAgICByZXR1cm4gMDsKQEAgLTE0
MjksNyArMTQyOSw3IEBAIGludCBFbGVtZW50OjpvZmZzZXRUb3BGb3JCaW5kaW5ncygpCiAKIGlu
dCBFbGVtZW50OjpvZmZzZXRUb3AoKQogewotICAgIHByb3RlY3RlZERvY3VtZW50KCktPnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7IExheW91dE9wdGlvbnM6OkNvbnRlbnRW
aXNpYmlsaXR5Rm9yY2VMYXlvdXQgfSwgdGhpcyk7CisgICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6VHJl
YXRDb250ZW50VmlzaWJpbGl0eUhpZGRlbkFzVmlzaWJsZSwgTGF5b3V0T3B0aW9uczo6VHJlYXRD
b250ZW50VmlzaWJpbGl0eUF1dG9Bc1Zpc2libGUgfSwgdGhpcyk7CiAgICAgaWYgKENoZWNrZWRQ
dHIgcmVuZGVyZXIgPSByZW5kZXJCb3hNb2RlbE9iamVjdCgpKQogICAgICAgICByZXR1cm4gYWRq
dXN0T2Zmc2V0Rm9yWm9vbUFuZFN1YnBpeGVsTGF5b3V0KCpyZW5kZXJlciwgcmVuZGVyZXItPm9m
ZnNldFRvcCgpKTsKICAgICByZXR1cm4gMDsKQEAgLTE0NjcsNyArMTQ2Nyw3IEBAIFJlZlB0cjxF
bGVtZW50PiBFbGVtZW50OjpvZmZzZXRQYXJlbnRGb3JCaW5kaW5ncygpCiAKIEVsZW1lbnQqIEVs
ZW1lbnQ6Om9mZnNldFBhcmVudCgpCiB7Ci0gICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRl
TGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6Q29udGVudFZp
c2liaWxpdHlGb3JjZUxheW91dCB9LCB0aGlzKTsKKyAgICBwcm90ZWN0ZWREb2N1bWVudCgpLT51
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpUcmVh
dENvbnRlbnRWaXNpYmlsaXR5SGlkZGVuQXNWaXNpYmxlLCBMYXlvdXRPcHRpb25zOjpUcmVhdENv
bnRlbnRWaXNpYmlsaXR5QXV0b0FzVmlzaWJsZSB9LCB0aGlzKTsKICAgICBDaGVja2VkUHRyIHJl
bmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTE0NzcsNyArMTQ3Nyw3IEBAIEVsZW1lbnQqIEVsZW1lbnQ6Om9m
ZnNldFBhcmVudCgpCiAKIGludCBFbGVtZW50OjpjbGllbnRMZWZ0KCkKIHsKLSAgICBwcm90ZWN0
ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlv
dXRPcHRpb25zOjpDb250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0IH0sIHRoaXMpOworICAgIHBy
b3RlY3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7
IExheW91dE9wdGlvbnM6OlRyZWF0Q29udGVudFZpc2liaWxpdHlIaWRkZW5Bc1Zpc2libGUsIExh
eW91dE9wdGlvbnM6OlRyZWF0Q29udGVudFZpc2liaWxpdHlBdXRvQXNWaXNpYmxlIH0sIHRoaXMp
OwogCiAgICAgaWYgKENoZWNrZWRQdHIgcmVuZGVyZXIgPSByZW5kZXJCb3goKSkgewogICAgICAg
ICBhdXRvIGNsaWVudExlZnQgPSBMYXlvdXRVbml0IHsgcm91bmRUb0ludChyZW5kZXJlci0+Y2xp
ZW50TGVmdCgpKSB9OwpAQCAtMTQ4OCw3ICsxNDg4LDcgQEAgaW50IEVsZW1lbnQ6OmNsaWVudExl
ZnQoKQogCiBpbnQgRWxlbWVudDo6Y2xpZW50VG9wKCkKIHsKLSAgICBwcm90ZWN0ZWREb2N1bWVu
dCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25z
OjpDb250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0IH0sIHRoaXMpOworICAgIHByb3RlY3RlZERv
Y3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7IExheW91dE9w
dGlvbnM6OlRyZWF0Q29udGVudFZpc2liaWxpdHlIaWRkZW5Bc1Zpc2libGUsIExheW91dE9wdGlv
bnM6OlRyZWF0Q29udGVudFZpc2liaWxpdHlBdXRvQXNWaXNpYmxlIH0sIHRoaXMpOwogCiAgICAg
aWYgKENoZWNrZWRQdHIgcmVuZGVyZXIgPSByZW5kZXJCb3goKSkgewogICAgICAgICBhdXRvIGNs
aWVudFRvcCA9IExheW91dFVuaXQgeyByb3VuZFRvSW50KHJlbmRlcmVyLT5jbGllbnRUb3AoKSkg
fTsKQEAgLTE1NzUsNyArMTU3NSw3IEBAIEFMV0FZU19JTkxJTkUgTG9jYWxGcmFtZSogRWxlbWVu
dDo6ZG9jdW1lbnRGcmFtZVdpdGhOb25OdWxsVmlldygpIGNvbnN0CiBpbnQgRWxlbWVudDo6c2Ny
b2xsTGVmdCgpCiB7CiAgICAgUmVmIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKLSAgICBk
b2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0
aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dCB9LCB0aGlzKTsKKyAgICBkb2N1bWVu
dC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6
VHJlYXRDb250ZW50VmlzaWJpbGl0eUhpZGRlbkFzVmlzaWJsZSwgTGF5b3V0T3B0aW9uczo6VHJl
YXRDb250ZW50VmlzaWJpbGl0eUF1dG9Bc1Zpc2libGUgfSwgdGhpcyk7CiAKICAgICBpZiAoZG9j
dW1lbnQtPnNjcm9sbGluZ0VsZW1lbnQoKSA9PSB0aGlzKSB7CiAgICAgICAgIGlmIChSZWZQdHIg
ZnJhbWUgPSBkb2N1bWVudEZyYW1lV2l0aE5vbk51bGxWaWV3KCkpCkBAIC0xNTkxLDcgKzE1OTEs
NyBAQCBpbnQgRWxlbWVudDo6c2Nyb2xsTGVmdCgpCiBpbnQgRWxlbWVudDo6c2Nyb2xsVG9wKCkK
IHsKICAgICBSZWYgZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwotICAgIGRvY3VtZW50LT51
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpDb250
ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0IH0sIHRoaXMpOworICAgIGRvY3VtZW50LT51cGRhdGVM
YXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRl
bnRWaXNpYmlsaXR5SGlkZGVuQXNWaXNpYmxlLCBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRW
aXNpYmlsaXR5QXV0b0FzVmlzaWJsZSB9LCB0aGlzKTsKIAogICAgIGlmIChkb2N1bWVudC0+c2Ny
b2xsaW5nRWxlbWVudCgpID09IHRoaXMpIHsKICAgICAgICAgaWYgKFJlZlB0ciBmcmFtZSA9IGRv
Y3VtZW50RnJhbWVXaXRoTm9uTnVsbFZpZXcoKSkKQEAgLTE2MDcsNyArMTYwNyw3IEBAIGludCBF
bGVtZW50OjpzY3JvbGxUb3AoKQogdm9pZCBFbGVtZW50OjpzZXRTY3JvbGxMZWZ0KGludCBuZXdM
ZWZ0KQogewogICAgIFJlZiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Ci0gICAgZG9jdW1l
bnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7IExheW91dE9wdGlvbnM6
OkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXQgfSwgdGhpcyk7CisgICAgZG9jdW1lbnQtPnVw
ZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7IExheW91dE9wdGlvbnM6OlRyZWF0
Q29udGVudFZpc2liaWxpdHlIaWRkZW5Bc1Zpc2libGUsIExheW91dE9wdGlvbnM6OlRyZWF0Q29u
dGVudFZpc2liaWxpdHlBdXRvQXNWaXNpYmxlIH0sIHRoaXMpOwogCiAgICAgYXV0byBvcHRpb25z
ID0gU2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25zOjpjcmVhdGVQcm9ncmFtbWF0aWMoKTsKICAg
ICBvcHRpb25zLmFuaW1hdGVkID0gdXNlU21vb3RoU2Nyb2xsaW5nKFNjcm9sbEJlaGF2aW9yOjpB
dXRvLCB0aGlzKSA/IFNjcm9sbElzQW5pbWF0ZWQ6OlllcyA6IFNjcm9sbElzQW5pbWF0ZWQ6Ok5v
OwpAQCAtMTYzMyw3ICsxNjMzLDcgQEAgdm9pZCBFbGVtZW50OjpzZXRTY3JvbGxMZWZ0KGludCBu
ZXdMZWZ0KQogdm9pZCBFbGVtZW50OjpzZXRTY3JvbGxUb3AoaW50IG5ld1RvcCkKIHsKICAgICBS
ZWYgZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwotICAgIGRvY3VtZW50LT51cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpDb250ZW50VmlzaWJp
bGl0eUZvcmNlTGF5b3V0IH0sIHRoaXMpOworICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXRJZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmls
aXR5SGlkZGVuQXNWaXNpYmxlLCBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5
QXV0b0FzVmlzaWJsZSB9LCB0aGlzKTsKIAogICAgIGF1dG8gb3B0aW9ucyA9IFNjcm9sbFBvc2l0
aW9uQ2hhbmdlT3B0aW9uczo6Y3JlYXRlUHJvZ3JhbW1hdGljKCk7CiAgICAgb3B0aW9ucy5hbmlt
YXRlZCA9IHVzZVNtb290aFNjcm9sbGluZyhTY3JvbGxCZWhhdmlvcjo6QXV0bywgdGhpcykgPyBT
Y3JvbGxJc0FuaW1hdGVkOjpZZXMgOiBTY3JvbGxJc0FuaW1hdGVkOjpObzsKQEAgLTE4ODUsNyAr
MTg4NSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDaGVja2VkUmVmPFJlbmRl
ckxpc3RCb3g+LCBMYXlvdXRSZWN0Pj4gbGlzdEJveEVsCiAKIFJlZjxET01SZWN0TGlzdD4gRWxl
bWVudDo6Z2V0Q2xpZW50UmVjdHMoKQogewotICAgIHByb3RlY3RlZERvY3VtZW50KCktPnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7IExheW91dE9wdGlvbnM6OkNvbnRlbnRW
aXNpYmlsaXR5Rm9yY2VMYXlvdXQgfSwgdGhpcyk7CisgICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6VHJl
YXRDb250ZW50VmlzaWJpbGl0eUhpZGRlbkFzVmlzaWJsZSwgTGF5b3V0T3B0aW9uczo6VHJlYXRD
b250ZW50VmlzaWJpbGl0eUF1dG9Bc1Zpc2libGUgfSwgdGhpcyk7CiAKICAgICBDaGVja2VkUHRy
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKIApAQCAtMTkzMSw3ICsxOTMxLDcgQEAgc3Rk
OjpvcHRpb25hbDxzdGQ6OnBhaXI8Q2hlY2tlZFB0cjxSZW5kZXJFbGVtZW50PiwgRmxvYXRSZWN0
Pj4gRWxlbWVudDo6Ym91bmRpbmcKIEZsb2F0UmVjdCBFbGVtZW50Ojpib3VuZGluZ0NsaWVudFJl
Y3QoKQogewogICAgIFJlZiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Ci0gICAgZG9jdW1l
bnQtPnVwZGF0ZUxheW91dElmRGltZW5zaW9uc091dE9mRGF0ZSgqdGhpcywgeyBEaW1lbnNpb25z
Q2hlY2s6OkxlZnQsIERpbWVuc2lvbnNDaGVjazo6VG9wLCBEaW1lbnNpb25zQ2hlY2s6OldpZHRo
LCBEaW1lbnNpb25zQ2hlY2s6OkhlaWdodCwgRGltZW5zaW9uc0NoZWNrOjpJZ25vcmVPdmVyZmxv
dyB9LCB7IExheW91dE9wdGlvbnM6OkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXQsIExheW91
dE9wdGlvbnM6OkNhbkRlZmVyVXBkYXRlTGF5ZXJQb3NpdGlvbnMsIExheW91dE9wdGlvbnM6Okln
bm9yZVBlbmRpbmdTdHlsZXNoZWV0cyB9KTsKKyAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWZE
aW1lbnNpb25zT3V0T2ZEYXRlKCp0aGlzLCB7IERpbWVuc2lvbnNDaGVjazo6TGVmdCwgRGltZW5z
aW9uc0NoZWNrOjpUb3AsIERpbWVuc2lvbnNDaGVjazo6V2lkdGgsIERpbWVuc2lvbnNDaGVjazo6
SGVpZ2h0LCBEaW1lbnNpb25zQ2hlY2s6Oklnbm9yZU92ZXJmbG93IH0sIHsgTGF5b3V0T3B0aW9u
czo6VHJlYXRDb250ZW50VmlzaWJpbGl0eUhpZGRlbkFzVmlzaWJsZSwgTGF5b3V0T3B0aW9uczo6
VHJlYXRDb250ZW50VmlzaWJpbGl0eUF1dG9Bc1Zpc2libGUsIExheW91dE9wdGlvbnM6OkNhbkRl
ZmVyVXBkYXRlTGF5ZXJQb3NpdGlvbnMsIExheW91dE9wdGlvbnM6Oklnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cyB9KTsKICAgICBMb2NhbEZyYW1lVmlldzo6QXV0b1ByZXZlbnRMYXllckFjY2VzcyBw
cmV2ZW50QWNjZXNzKGRvY3VtZW50LT52aWV3KCkpOwogICAgIGF1dG8gcGFpciA9IGJvdW5kaW5n
QWJzb2x1dGVSZWN0V2l0aG91dExheW91dCgpOwogICAgIGlmICghcGFpcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGIwZGZiOTNjNTYyMi4uMTFlOTBhNDU5
M2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTU2NSw3
ICs1NjUsNyBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnNldFBpY3R1cmVFbGVtZW50KEhUTUxQ
aWN0dXJlRWxlbWVudCogcGljdHVyZUVsZW1lbnQpCiB1bnNpZ25lZCBIVE1MSW1hZ2VFbGVtZW50
Ojp3aWR0aCgpCiB7CiAgICAgaWYgKGluUmVuZGVyZWREb2N1bWVudCgpKQotICAgICAgICBwcm90
ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBM
YXlvdXRPcHRpb25zOjpDb250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0IH0sIHRoaXMpOworICAg
ICAgICBwcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVz
aGVldHMoeyBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5SGlkZGVuQXNWaXNp
YmxlLCBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5QXV0b0FzVmlzaWJsZSB9
LCB0aGlzKTsKIAogICAgIGlmICghcmVuZGVyZXIoKSkgewogICAgICAgICAvLyBjaGVjayB0aGUg
YXR0cmlidXRlIGZpcnN0IGZvciBhbiBleHBsaWNpdCBwaXhlbCB2YWx1ZQpAQCAtNTg4LDcgKzU4
OCw3IEBAIHVuc2lnbmVkIEhUTUxJbWFnZUVsZW1lbnQ6OndpZHRoKCkKIHVuc2lnbmVkIEhUTUxJ
bWFnZUVsZW1lbnQ6OmhlaWdodCgpCiB7CiAgICAgaWYgKGluUmVuZGVyZWREb2N1bWVudCgpKQot
ICAgICAgICBwcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpDb250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0IH0s
IHRoaXMpOworICAgICAgICBwcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQ
ZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5
SGlkZGVuQXNWaXNpYmxlLCBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5QXV0
b0FzVmlzaWJsZSB9LCB0aGlzKTsKIAogICAgIGlmICghcmVuZGVyZXIoKSkgewogICAgICAgICAv
LyBjaGVjayB0aGUgYXR0cmlidXRlIGZpcnN0IGZvciBhbiBleHBsaWNpdCBwaXhlbCB2YWx1ZQpA
QCAtNzQwLDcgKzc0MCw3IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0V2lkdGgodW5zaWdu
ZWQgdmFsdWUpCiAKIGludCBIVE1MSW1hZ2VFbGVtZW50Ojp4KCkgY29uc3QKIHsKLSAgICBwcm90
ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBM
YXlvdXRPcHRpb25zOjpDb250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0IH0sIHRoaXMpOworICAg
IHByb3RlY3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0
cyh7IExheW91dE9wdGlvbnM6OlRyZWF0Q29udGVudFZpc2liaWxpdHlIaWRkZW5Bc1Zpc2libGUs
IExheW91dE9wdGlvbnM6OlRyZWF0Q29udGVudFZpc2liaWxpdHlBdXRvQXNWaXNpYmxlIH0sIHRo
aXMpOwogICAgIGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVu
ZGVyZXIpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNzUxLDcgKzc1MSw3IEBAIGludCBIVE1MSW1h
Z2VFbGVtZW50Ojp4KCkgY29uc3QKIAogaW50IEhUTUxJbWFnZUVsZW1lbnQ6OnkoKSBjb25zdAog
ewotICAgIHByb3RlY3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cyh7IExheW91dE9wdGlvbnM6OkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXQgfSwg
dGhpcyk7CisgICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6VHJlYXRDb250ZW50VmlzaWJpbGl0eUhpZGRl
bkFzVmlzaWJsZSwgTGF5b3V0T3B0aW9uczo6VHJlYXRDb250ZW50VmlzaWJpbGl0eUF1dG9Bc1Zp
c2libGUgfSwgdGhpcyk7CiAgICAgYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAg
ICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VJbnB1dFR5cGUuY3BwCmluZGV4IGZhYTZiNDUxZjhjMC4uMWRiM2NhYTliMjVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHVuc2ln
bmVkIEltYWdlSW5wdXRUeXBlOjpoZWlnaHQoKSBjb25zdAogICAgIEFTU0VSVChlbGVtZW50KCkp
OwogICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBlbGVtZW50KCp0aGlzLT5lbGVtZW50KCkpOwog
Ci0gICAgZWxlbWVudC0+cHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KHsgTGF5b3V0
T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dCB9LCBlbGVtZW50LnB0cigpKTsK
KyAgICBlbGVtZW50LT5wcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoeyBMYXlvdXRP
cHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5SGlkZGVuQXNWaXNpYmxlLCBMYXlvdXRPcHRp
b25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5QXV0b0FzVmlzaWJsZSB9LCBlbGVtZW50LnB0cigp
KTsKIAogICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAg
ICAgIHJldHVybiBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oZG93bmNhc3Q8UmVuZGVyQm94PigqcmVu
ZGVyZXIpLmNvbnRlbnRCb3hIZWlnaHQoKSwgKnJlbmRlcmVyKTsKQEAgLTE5Nyw3ICsxOTcsNyBA
QCB1bnNpZ25lZCBJbWFnZUlucHV0VHlwZTo6d2lkdGgoKSBjb25zdAogICAgIEFTU0VSVChlbGVt
ZW50KCkpOwogICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBlbGVtZW50KCp0aGlzLT5lbGVtZW50
KCkpOwogCi0gICAgZWxlbWVudC0+cHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KHsg
TGF5b3V0T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dCB9LCBlbGVtZW50LnB0
cigpKTsKKyAgICBlbGVtZW50LT5wcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoeyBM
YXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5SGlkZGVuQXNWaXNpYmxlLCBMYXlv
dXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5QXV0b0FzVmlzaWJsZSB9LCBlbGVtZW50
LnB0cigpKTsKIAogICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCkp
CiAgICAgICAgIHJldHVybiBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oZG93bmNhc3Q8UmVuZGVyQm94
PigqcmVuZGVyZXIpLmNvbnRlbnRCb3hXaWR0aCgpLCAqcmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlld0xheW91dENvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCmluZGV4IDA1
MmU0NTEwZTIyYS4uYmI1OWI2Nzk3ODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0xvY2FsRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Mb2NhbEZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCkBAIC02NzAsMTYgKzY3MCwyNiBAQCB2
b2lkIExvY2FsRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6YWRkTGF5b3V0RGVsdGEoY29uc3QgTGF5
b3V0U2l6ZSYgZGVsdGEpCiAKIGJvb2wgTG9jYWxGcmFtZVZpZXdMYXlvdXRDb250ZXh0Ojppc1Nr
aXBwZWRDb250ZW50Rm9yTGF5b3V0KGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKSBjb25z
dAogewotICAgIGlmIChza2lwcGVkQ29udGVudE5lZWRzTGF5b3V0KCkpCisgICAgaWYgKGlzVmlz
aWJsaXR5SGlkZGVuSWdub3JlZCgpIHx8IGlzVmlzaWJsaXR5QXV0b0lnbm9yZWQoKSkgeworICAg
ICAgICAvLyBJbiB0aGVvcnkgd2Ugc2hvdWxkIG9ubHkgZGVzY2VuZCBpbnRvIGEgaGlkZGVuL2F1
dG8gc3VicmVlIHdoZW4gaGlkZGVuL2F1dG8gcm9vdCBpcyBpZ25vcmVkIChzZWUgaXNTa2lwcGVk
Q29udGVudFJvb3RGb3JMYXlvdXQgYmVsb3cpLgogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQogICAgIHJldHVybiByZW5kZXJlci5pc1NraXBwZWRDb250ZW50KCk7CiB9CiAKIGJvb2wgTG9j
YWxGcmFtZVZpZXdMYXlvdXRDb250ZXh0Ojppc1NraXBwZWRDb250ZW50Um9vdEZvckxheW91dChj
b25zdCBSZW5kZXJCb3gmIHJlbmRlckJveCkgY29uc3QKIHsKLSAgICBpZiAoc2tpcHBlZENvbnRl
bnROZWVkc0xheW91dCgpKQorICAgIGlmICghaXNTa2lwcGVkQ29udGVudFJvb3QocmVuZGVyQm94
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBjb250ZW50VmlzaWJpbGl0eSA9
IHJlbmRlckJveC5zdHlsZSgpLmNvbnRlbnRWaXNpYmlsaXR5KCk7CisgICAgaWYgKGNvbnRlbnRW
aXNpYmlsaXR5ID09IENvbnRlbnRWaXNpYmlsaXR5OjpIaWRkZW4gJiYgaXNWaXNpYmxpdHlIaWRk
ZW5JZ25vcmVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gaXNTa2lwcGVk
Q29udGVudFJvb3QocmVuZGVyQm94KTsKKworICAgIGlmIChjb250ZW50VmlzaWJpbGl0eSA9PSBD
b250ZW50VmlzaWJpbGl0eTo6QXV0byAmJiBpc1Zpc2libGl0eUF1dG9JZ25vcmVkKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiAjaWYgQVNTRVJUX0VO
QUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXdMYXlv
dXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3TGF5b3V0Q29u
dGV4dC5oCmluZGV4IDUxNjg0ZGVjYTlkZi4uOGVmY2JmNzU2MjY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXdMYXlvdXRDb250ZXh0LmgKQEAgLTE2Myw3ICsx
NjMsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMYXlvdXRTdGF0ZURpc2FibGVyOwog
ICAgIGZyaWVuZCBjbGFzcyBTdWJ0cmVlTGF5b3V0U3RhdGVNYWludGFpbmVyOwogICAgIGZyaWVu
ZCBjbGFzcyBGbGV4UGVyY2VudFJlc29sdmVEaXNhYmxlcjsKLSAgICBmcmllbmQgY2xhc3MgQ29u
dGVudFZpc2liaWxpdHlGb3JjZUxheW91dFNjb3BlOworICAgIGZyaWVuZCBjbGFzcyBDb250ZW50
VmlzaWJpbGl0eU92ZXJyaWRlU2NvcGU7CiAKICAgICBib29sIG5lZWRzTGF5b3V0SW50ZXJuYWwo
KSBjb25zdDsKIApAQCAtMTk5LDggKzE5OSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzYWJs
ZVBhaW50T2Zmc2V0Q2FjaGUoKSB7IG1fcGFpbnRPZmZzZXRDYWNoZURpc2FibGVDb3VudCsrOyB9
CiAgICAgdm9pZCBlbmFibGVQYWludE9mZnNldENhY2hlKCkgeyBBU1NFUlQobV9wYWludE9mZnNl
dENhY2hlRGlzYWJsZUNvdW50ID4gMCk7IG1fcGFpbnRPZmZzZXRDYWNoZURpc2FibGVDb3VudC0t
OyB9CiAKLSAgICBib29sIHNraXBwZWRDb250ZW50TmVlZHNMYXlvdXQoKSBjb25zdCB7IHJldHVy
biBtX3NraXBwZWRDb250ZW50TmVlZHNMYXlvdXQ7IH0KLSAgICB2b2lkIHNldFNraXBwZWRDb250
ZW50TmVlZHNMYXlvdXQoYm9vbCBza2lwcGVkQ29udGVudE5lZWRzTGF5b3V0KSB7IG1fc2tpcHBl
ZENvbnRlbnROZWVkc0xheW91dCA9IHNraXBwZWRDb250ZW50TmVlZHNMYXlvdXQ7IH0KKyAgICBi
b29sIGlzVmlzaWJsaXR5SGlkZGVuSWdub3JlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsaXR5
SGlkZGVuSXNJZ25vcmVkOyB9CisgICAgdm9pZCBzZXRJc1Zpc2libGl0eUhpZGRlbklnbm9yZWQo
Ym9vbCBpZ25vcmVkKSB7IG1fdmlzaWJsaXR5SGlkZGVuSXNJZ25vcmVkID0gaWdub3JlZDsgfQor
CisgICAgYm9vbCBpc1Zpc2libGl0eUF1dG9JZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gbV92aXNp
YmxpdHlBdXRvSXNJZ25vcmVkOyB9CisgICAgdm9pZCBzZXRJc1Zpc2libGl0eUF1dG9JZ25vcmVk
KGJvb2wgaWdub3JlZCkgeyBtX3Zpc2libGl0eUF1dG9Jc0lnbm9yZWQgPSBpZ25vcmVkOyB9CiAK
ICAgICB2b2lkIGRpc2FibGVQZXJjZW50SGVpZ2h0UmVzb2x2ZUZvcihjb25zdCBSZW5kZXJCb3gm
IGZsZXhJdGVtKTsKICAgICB2b2lkIGVuYWJsZVBlcmNlbnRIZWlnaHRSZXNvbHZlRm9yKGNvbnN0
IFJlbmRlckJveCYgZmxleEl0ZW0pOwpAQCAtMjIzLDcgKzIyNiw4IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX25lZWRzRnVsbFJlcGFpbnQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2luQXN5bmNocm9u
b3VzVGFza3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zZXROZWVkc0xheW91dFdhc0RlZmVycmVk
IHsgZmFsc2UgfTsKLSAgICBib29sIG1fc2tpcHBlZENvbnRlbnROZWVkc0xheW91dCB7IGZhbHNl
IH07CisgICAgYm9vbCBtX3Zpc2libGl0eUhpZGRlbklzSWdub3JlZCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX3Zpc2libGl0eUF1dG9Jc0lnbm9yZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91cGRh
dGVDb21wb3NpdGluZ0xheWVyc0lzUGVuZGluZyB7IGZhbHNlIH07CiAgICAgTGF5b3V0UGhhc2Ug
bV9sYXlvdXRQaGFzZSB7IExheW91dFBoYXNlOjpPdXRzaWRlTGF5b3V0IH07CiAgICAgZW51bSBj
bGFzcyBMYXlvdXROZXN0ZWRTdGF0ZSA6IHVpbnQ4X3QgIHsgTm90SW5MYXlvdXQsIE5vdE5lc3Rl
ZCwgTmVzdGVkIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5b3V0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0
YXRlLmNwcAppbmRleCBhNzcwN2QyYTkzOTYuLjQ2YTU3MjhmMWY5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuY3BwCkBAIC0zNTEsMTYgKzM1MSwx
OSBAQCBGbGV4UGVyY2VudFJlc29sdmVEaXNhYmxlcjo6fkZsZXhQZXJjZW50UmVzb2x2ZURpc2Fi
bGVyKCkKICAgICBtX2xheW91dENvbnRleHQtPmVuYWJsZVBlcmNlbnRIZWlnaHRSZXNvbHZlRm9y
KG1fZmxleEl0ZW0pOwogfQogCi1Db250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0U2NvcGU6OkNv
bnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXRTY29wZShMb2NhbEZyYW1lVmlld0xheW91dENvbnRl
eHQmIGxheW91dENvbnRleHQpCitDb250ZW50VmlzaWJpbGl0eU92ZXJyaWRlU2NvcGU6OkNvbnRl
bnRWaXNpYmlsaXR5T3ZlcnJpZGVTY29wZShMb2NhbEZyYW1lVmlld0xheW91dENvbnRleHQmIGxh
eW91dENvbnRleHQsIE9wdGlvblNldDxPdmVycmlkZVR5cGU+IG92ZXJyaWRlVHlwZXMpCiAgICAg
OiBtX2xheW91dENvbnRleHQobGF5b3V0Q29udGV4dCkKIHsKLSAgICBtX2xheW91dENvbnRleHQt
PnNldFNraXBwZWRDb250ZW50TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgaWYgKG92ZXJyaWRlVHlw
ZXMuY29udGFpbnMoT3ZlcnJpZGVUeXBlOjpIaWRkZW4pKQorICAgICAgICBsYXlvdXRDb250ZXh0
LnNldElzVmlzaWJsaXR5SGlkZGVuSWdub3JlZCh0cnVlKTsKKyAgICBpZiAob3ZlcnJpZGVUeXBl
cy5jb250YWlucyhPdmVycmlkZVR5cGU6OkF1dG8pKQorICAgICAgICBsYXlvdXRDb250ZXh0LnNl
dElzVmlzaWJsaXR5QXV0b0lnbm9yZWQodHJ1ZSk7CiB9CiAKLUNvbnRlbnRWaXNpYmlsaXR5Rm9y
Y2VMYXlvdXRTY29wZTo6fkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXRTY29wZSgpCitDb250
ZW50VmlzaWJpbGl0eU92ZXJyaWRlU2NvcGU6On5Db250ZW50VmlzaWJpbGl0eU92ZXJyaWRlU2Nv
cGUoKQogewotICAgIEFTU0VSVChtX2xheW91dENvbnRleHQtPnNraXBwZWRDb250ZW50TmVlZHNM
YXlvdXQoKSk7Ci0gICAgbV9sYXlvdXRDb250ZXh0LT5zZXRTa2lwcGVkQ29udGVudE5lZWRzTGF5
b3V0KGZhbHNlKTsKKyAgICBtX2xheW91dENvbnRleHQtPnNldElzVmlzaWJsaXR5SGlkZGVuSWdu
b3JlZChmYWxzZSk7CisgICAgbV9sYXlvdXRDb250ZXh0LT5zZXRJc1Zpc2libGl0eUF1dG9JZ25v
cmVkKGZhbHNlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuaAppbmRleCA4ZjkzMzQ4ZDlkZTAuLmMzYTU1
NTNjZmU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91
dFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRl
LmgKQEAgLTIwNSwxMCArMjA1LDE0IEBAIHByaXZhdGU6CiAgICAgQ2hlY2tlZFJlZjxjb25zdCBS
ZW5kZXJCb3g+IG1fZmxleEl0ZW07CiB9OwogCi1jbGFzcyBDb250ZW50VmlzaWJpbGl0eUZvcmNl
TGF5b3V0U2NvcGUgeworY2xhc3MgQ29udGVudFZpc2liaWxpdHlPdmVycmlkZVNjb3BlIHsKIHB1
YmxpYzoKLSAgICBDb250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0U2NvcGUoTG9jYWxGcmFtZVZp
ZXdMYXlvdXRDb250ZXh0Jik7Ci0gICAgfkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXRTY29w
ZSgpOworICAgIGVudW0gY2xhc3MgT3ZlcnJpZGVUeXBlIHsKKyAgICAgICAgSGlkZGVuID0gMSA8
PCAwLAorICAgICAgICBBdXRvICA9IDEgPDwgMQorICAgIH07CisgICAgQ29udGVudFZpc2liaWxp
dHlPdmVycmlkZVNjb3BlKExvY2FsRnJhbWVWaWV3TGF5b3V0Q29udGV4dCYsIE9wdGlvblNldDxP
dmVycmlkZVR5cGU+KTsKKyAgICB+Q29udGVudFZpc2liaWxpdHlPdmVycmlkZVNjb3BlKCk7CiAK
IHByaXZhdGU6CiAgICAgQ2hlY2tlZFJlZjxMb2NhbEZyYW1lVmlld0xheW91dENvbnRleHQ+IG1f
bGF5b3V0Q29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRy
eUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAK
aW5kZXggNzU4OTYzMTExMWE4Li5lNjg0ZmIxNWQ2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHZW9tZXRyeUVsZW1lbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIFNWR0dlb21ldHJ5RWxlbWVu
dDo6U1ZHR2VvbWV0cnlFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkCiAKIGZsb2F0IFNWR0dlb21ldHJ5RWxlbWVudDo6Z2V0VG90YWxMZW5ndGgoKSBjb25z
dAogewotICAgIHByb3RlY3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cyh7IExheW91dE9wdGlvbnM6OkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXQg
fSwgdGhpcyk7CisgICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6VHJlYXRDb250ZW50VmlzaWJpbGl0eUhp
ZGRlbkFzVmlzaWJsZSwgTGF5b3V0T3B0aW9uczo6VHJlYXRDb250ZW50VmlzaWJpbGl0eUF1dG9B
c1Zpc2libGUgfSwgdGhpcyk7CiAKICAgICBhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCk7CiAgICAgaWYgKCFyZW5kZXJlcikKQEAgLTY2LDcgKzY2LDcgQEAgZmxvYXQgU1ZHR2VvbWV0
cnlFbGVtZW50OjpnZXRUb3RhbExlbmd0aCgpIGNvbnN0CiAKIEV4Y2VwdGlvbk9yPFJlZjxTVkdQ
b2ludD4+IFNWR0dlb21ldHJ5RWxlbWVudDo6Z2V0UG9pbnRBdExlbmd0aChmbG9hdCBkaXN0YW5j
ZSkgY29uc3QKIHsKLSAgICBwcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQ
ZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpDb250ZW50VmlzaWJpbGl0eUZvcmNl
TGF5b3V0IH0sIHRoaXMpOworICAgIHByb3RlY3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dEln
bm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7IExheW91dE9wdGlvbnM6OlRyZWF0Q29udGVudFZpc2li
aWxpdHlIaWRkZW5Bc1Zpc2libGUsIExheW91dE9wdGlvbnM6OlRyZWF0Q29udGVudFZpc2liaWxp
dHlBdXRvQXNWaXNpYmxlIH0sIHRoaXMpOwogCiAgICAgYXV0byogcmVuZGVyZXIgPSB0aGlzLT5y
ZW5kZXJlcigpOwogICAgIC8vIFNwZWM6IElmIGN1cnJlbnQgZWxlbWVudCBpcyBhIG5vbi1yZW5k
ZXJlZCBlbGVtZW50LCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvci4KQEAgLTg5LDcgKzg5LDcg
QEAgRXhjZXB0aW9uT3I8UmVmPFNWR1BvaW50Pj4gU1ZHR2VvbWV0cnlFbGVtZW50OjpnZXRQb2lu
dEF0TGVuZ3RoKGZsb2F0IGRpc3RhbmNlKQogCiBib29sIFNWR0dlb21ldHJ5RWxlbWVudDo6aXNQ
b2ludEluRmlsbChET01Qb2ludEluaXQmJiBwb2ludEluaXQpCiB7Ci0gICAgcHJvdGVjdGVkRG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0
aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dCB9LCB0aGlzKTsKKyAgICBwcm90ZWN0
ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlv
dXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5SGlkZGVuQXNWaXNpYmxlLCBMYXlvdXRP
cHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5QXV0b0FzVmlzaWJsZSB9LCB0aGlzKTsKIAog
ICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVy
KQpAQCAtMTA4LDcgKzEwOCw3IEBAIGJvb2wgU1ZHR2VvbWV0cnlFbGVtZW50Ojppc1BvaW50SW5G
aWxsKERPTVBvaW50SW5pdCYmIHBvaW50SW5pdCkKIAogYm9vbCBTVkdHZW9tZXRyeUVsZW1lbnQ6
OmlzUG9pbnRJblN0cm9rZShET01Qb2ludEluaXQmJiBwb2ludEluaXQpCiB7Ci0gICAgcHJvdGVj
dGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5
b3V0T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dCB9LCB0aGlzKTsKKyAgICBw
cm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMo
eyBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5SGlkZGVuQXNWaXNpYmxlLCBM
YXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5QXV0b0FzVmlzaWJsZSB9LCB0aGlz
KTsKIAogICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJl
bmRlcmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcAppbmRleCAyZTMwM2UyYWU5YjYu
LjJmZmNjMGE3MGQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5jcHAKQEAgLTc1LDcg
Kzc1LDcgQEAgRmxvYXRSZWN0IFNWR0xvY2F0YWJsZTo6Z2V0QkJveChTVkdFbGVtZW50KiBlbGVt
ZW50LCBTdHlsZVVwZGF0ZVN0cmF0ZWd5IHN0eWxlVXAKIHsKICAgICBBU1NFUlQoZWxlbWVudCk7
CiAgICAgaWYgKHN0eWxlVXBkYXRlU3RyYXRlZ3kgPT0gQWxsb3dTdHlsZVVwZGF0ZSkKLSAgICAg
ICAgZWxlbWVudC0+cHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91
dCB9LCBlbGVtZW50KTsKKyAgICAgICAgZWxlbWVudC0+cHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6VHJlYXRD
b250ZW50VmlzaWJpbGl0eUhpZGRlbkFzVmlzaWJsZSwgTGF5b3V0T3B0aW9uczo6VHJlYXRDb250
ZW50VmlzaWJpbGl0eUF1dG9Bc1Zpc2libGUgfSwgZWxlbWVudCk7CiAKICAgICAvLyBGSVhNRTog
RXZlbnR1YWxseSB3ZSBzaG91bGQgc3VwcG9ydCBnZXRCQm94IGZvciBkZXRhY2hlZCBlbGVtZW50
cy4KICAgICBpZiAoIWVsZW1lbnQtPnJlbmRlcmVyKCkpCkBAIC04OCw3ICs4OCw3IEBAIEFmZmlu
ZVRyYW5zZm9ybSBTVkdMb2NhdGFibGU6OmNvbXB1dGVDVE0oU1ZHRWxlbWVudCogZWxlbWVudCwg
Q1RNU2NvcGUgbW9kZSwgU3R5CiB7CiAgICAgQVNTRVJUKGVsZW1lbnQpOwogICAgIGlmIChzdHls
ZVVwZGF0ZVN0cmF0ZWd5ID09IEFsbG93U3R5bGVVcGRhdGUpCi0gICAgICAgIGVsZW1lbnQtPnBy
b3RlY3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7
IExheW91dE9wdGlvbnM6OkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXQgfSwgZWxlbWVudCk7
CisgICAgICAgIGVsZW1lbnQtPnByb3RlY3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9y
ZVBlbmRpbmdTdHlsZXNoZWV0cyh7IExheW91dE9wdGlvbnM6OlRyZWF0Q29udGVudFZpc2liaWxp
dHlIaWRkZW5Bc1Zpc2libGUsIExheW91dE9wdGlvbnM6OlRyZWF0Q29udGVudFZpc2liaWxpdHlB
dXRvQXNWaXNpYmxlIH0sIGVsZW1lbnQpOwogCiAgICAgUmVmUHRyIHN0b3BBdEVsZW1lbnQgPSBt
b2RlID09IE5lYXJlc3RWaWV3cG9ydFNjb3BlID8gbmVhcmVzdFZpZXdwb3J0RWxlbWVudChlbGVt
ZW50KSA6IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCmluZGV4
IGYzODhmNTJkMjcxOS4uNjcyMjlhNGYxMGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxl
bWVudC5jcHAKQEAgLTE4MCwxNCArMTgwLDE0IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnJlbW92
ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmCiAK
IGZsb2F0IFNWR1BhdGhFbGVtZW50OjpnZXRUb3RhbExlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcHJv
dGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsg
TGF5b3V0T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dCB9LCB0aGlzKTsKKyAg
ICBwcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMoeyBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5SGlkZGVuQXNWaXNpYmxl
LCBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5QXV0b0FzVmlzaWJsZSB9LCB0
aGlzKTsKIAogICAgIHJldHVybiBnZXRUb3RhbExlbmd0aE9mU1ZHUGF0aEJ5dGVTdHJlYW0ocGF0
aEJ5dGVTdHJlYW0oKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxTVkdQb2ludD4+IFNWR1BhdGhF
bGVtZW50OjpnZXRQb2ludEF0TGVuZ3RoKGZsb2F0IGRpc3RhbmNlKSBjb25zdAogewotICAgIHBy
b3RlY3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7
IExheW91dE9wdGlvbnM6OkNvbnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXQgfSwgdGhpcyk7Cisg
ICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKHsgTGF5b3V0T3B0aW9uczo6VHJlYXRDb250ZW50VmlzaWJpbGl0eUhpZGRlbkFzVmlzaWJs
ZSwgTGF5b3V0T3B0aW9uczo6VHJlYXRDb250ZW50VmlzaWJpbGl0eUF1dG9Bc1Zpc2libGUgfSwg
dGhpcyk7CiAKICAgICAvLyBTcGVjOiBJZiBpdCBpcyBub3QgYWJsZSB0byBjb21wdXRlIHRoZSB0
b3RhbCBsZW5ndGggb2YgcGF0aCwgdGhlbiB0aHJvdy4KICAgICBpZiAocGF0aEJ5dGVTdHJlYW0o
KS5pc0VtcHR5KCkpCkBAIC0yMDIsNyArMjAyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFNWR1BvaW50
Pj4gU1ZHUGF0aEVsZW1lbnQ6OmdldFBvaW50QXRMZW5ndGgoZmxvYXQgZGlzdGFuY2UpIGNvbnMK
IAogdW5zaWduZWQgU1ZHUGF0aEVsZW1lbnQ6OmdldFBhdGhTZWdBdExlbmd0aChmbG9hdCBsZW5n
dGgpIGNvbnN0CiB7Ci0gICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3Jl
UGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3Jj
ZUxheW91dCB9LCB0aGlzKTsKKyAgICBwcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJ
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNp
YmlsaXR5SGlkZGVuQXNWaXNpYmxlLCBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmls
aXR5QXV0b0FzVmlzaWJsZSB9LCB0aGlzKTsKIAogICAgIHJldHVybiBnZXRTVkdQYXRoU2VnQXRM
ZW5ndGhGcm9tU1ZHUGF0aEJ5dGVTdHJlYW0ocGF0aEJ5dGVTdHJlYW0oKSwgbGVuZ3RoKTsKIH0K
QEAgLTIxMCw3ICsyMTAsNyBAQCB1bnNpZ25lZCBTVkdQYXRoRWxlbWVudDo6Z2V0UGF0aFNlZ0F0
TGVuZ3RoKGZsb2F0IGxlbmd0aCkgY29uc3QKIEZsb2F0UmVjdCBTVkdQYXRoRWxlbWVudDo6Z2V0
QkJveChTdHlsZVVwZGF0ZVN0cmF0ZWd5IHN0eWxlVXBkYXRlU3RyYXRlZ3kpCiB7CiAgICAgaWYg
KHN0eWxlVXBkYXRlU3RyYXRlZ3kgPT0gQWxsb3dTdHlsZVVwZGF0ZSkKLSAgICAgICAgcHJvdGVj
dGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5
b3V0T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dCB9LCB0aGlzKTsKKyAgICAg
ICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKHsgTGF5b3V0T3B0aW9uczo6VHJlYXRDb250ZW50VmlzaWJpbGl0eUhpZGRlbkFzVmlzaWJs
ZSwgTGF5b3V0T3B0aW9uczo6VHJlYXRDb250ZW50VmlzaWJpbGl0eUF1dG9Bc1Zpc2libGUgfSwg
dGhpcyk7CiAKICAgICAvLyBGSVhNRTogRXZlbnR1YWxseSB3ZSBzaG91bGQgc3VwcG9ydCBnZXRC
Qm94IGZvciBkZXRhY2hlZCBlbGVtZW50cy4KICAgICAvLyBGSVhNRTogSWYgdGhlIHBhdGggaXMg
bnVsbCBpdCBtZWFucyB3ZSdyZSBjYWxsaW5nIGdldEJCb3goKSBiZWZvcmUgbGF5aW5nIG91dCB0
aGlzIGVsZW1lbnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKaW5kZXggMTliZjU1
ZThjMGZjLi5mZjJkOGZkMzI4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAK
QEAgLTMxMCwyNSArMzEwLDI1IEBAIHN0YXRpYyBib29sIGNoZWNrRW5jbG9zdXJlV2l0aG91dFVw
ZGF0aW5nTGF5b3V0KFNWR0VsZW1lbnQmIGVsZW1lbnQsIFNWR1JlY3QmIHJlCiAKIFJlZjxOb2Rl
TGlzdD4gU1ZHU1ZHRWxlbWVudDo6Z2V0SW50ZXJzZWN0aW9uTGlzdChTVkdSZWN0JiByZWN0LCBT
VkdFbGVtZW50KiByZWZlcmVuY2VFbGVtZW50KQogewotICAgIHByb3RlY3RlZERvY3VtZW50KCkt
PnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7IExheW91dE9wdGlvbnM6OkNv
bnRlbnRWaXNpYmlsaXR5Rm9yY2VMYXlvdXQgfSwgdGhpcyk7CisgICAgcHJvdGVjdGVkRG9jdW1l
bnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9u
czo6VHJlYXRDb250ZW50VmlzaWJpbGl0eUhpZGRlbkFzVmlzaWJsZSwgTGF5b3V0T3B0aW9uczo6
VHJlYXRDb250ZW50VmlzaWJpbGl0eUF1dG9Bc1Zpc2libGUgfSwgdGhpcyk7CiAgICAgcmV0dXJu
IGNvbGxlY3RJbnRlcnNlY3Rpb25PckVuY2xvc3VyZUxpc3QocmVjdCwgcmVmZXJlbmNlRWxlbWVu
dCwgY2hlY2tJbnRlcnNlY3Rpb25XaXRob3V0VXBkYXRpbmdMYXlvdXQpOwogfQogCiBSZWY8Tm9k
ZUxpc3Q+IFNWR1NWR0VsZW1lbnQ6OmdldEVuY2xvc3VyZUxpc3QoU1ZHUmVjdCYgcmVjdCwgU1ZH
RWxlbWVudCogcmVmZXJlbmNlRWxlbWVudCkKIHsKLSAgICBwcm90ZWN0ZWREb2N1bWVudCgpLT51
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpDb250
ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0IH0sIHRoaXMpOworICAgIHByb3RlY3RlZERvY3VtZW50
KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7IExheW91dE9wdGlvbnM6
OlRyZWF0Q29udGVudFZpc2liaWxpdHlIaWRkZW5Bc1Zpc2libGUsIExheW91dE9wdGlvbnM6OlRy
ZWF0Q29udGVudFZpc2liaWxpdHlBdXRvQXNWaXNpYmxlIH0sIHRoaXMpOwogICAgIHJldHVybiBj
b2xsZWN0SW50ZXJzZWN0aW9uT3JFbmNsb3N1cmVMaXN0KHJlY3QsIHJlZmVyZW5jZUVsZW1lbnQs
IGNoZWNrRW5jbG9zdXJlV2l0aG91dFVwZGF0aW5nTGF5b3V0KTsKIH0KIAogYm9vbCBTVkdTVkdF
bGVtZW50OjpjaGVja0ludGVyc2VjdGlvbihSZWY8U1ZHRWxlbWVudD4mJiBlbGVtZW50LCBTVkdS
ZWN0JiByZWN0KQogewotICAgIGVsZW1lbnQtPnByb3RlY3RlZERvY3VtZW50KCktPnVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyh7IExheW91dE9wdGlvbnM6OkNvbnRlbnRWaXNp
YmlsaXR5Rm9yY2VMYXlvdXQgfSwgZWxlbWVudC5wdHIoKSk7CisgICAgZWxlbWVudC0+cHJvdGVj
dGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5
b3V0T3B0aW9uczo6VHJlYXRDb250ZW50VmlzaWJpbGl0eUhpZGRlbkFzVmlzaWJsZSwgTGF5b3V0
T3B0aW9uczo6VHJlYXRDb250ZW50VmlzaWJpbGl0eUF1dG9Bc1Zpc2libGUgfSwgZWxlbWVudC5w
dHIoKSk7CiAgICAgcmV0dXJuIGNoZWNrSW50ZXJzZWN0aW9uV2l0aG91dFVwZGF0aW5nTGF5b3V0
KGVsZW1lbnQsIHJlY3QpOwogfQogCiBib29sIFNWR1NWR0VsZW1lbnQ6OmNoZWNrRW5jbG9zdXJl
KFJlZjxTVkdFbGVtZW50PiYmIGVsZW1lbnQsIFNWR1JlY3QmIHJlY3QpCiB7Ci0gICAgZWxlbWVu
dC0+cHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKHsgTGF5b3V0T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dCB9LCBlbGVt
ZW50LnB0cigpKTsKKyAgICBlbGVtZW50LT5wcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRW
aXNpYmlsaXR5SGlkZGVuQXNWaXNpYmxlLCBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNp
YmlsaXR5QXV0b0FzVmlzaWJsZSB9LCBlbGVtZW50LnB0cigpKTsKICAgICByZXR1cm4gY2hlY2tF
bmNsb3N1cmVXaXRob3V0VXBkYXRpbmdMYXlvdXQoZWxlbWVudCwgcmVjdCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKaW5kZXggMzkxNzAxMmZi
Y2MyLi5lMDM4MDE0YTYwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
Q29udGVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVu
dEVsZW1lbnQuY3BwCkBAIC01NiwxMyArNTYsMTMgQEAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpT
VkdUZXh0Q29udGVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW0K
IAogdW5zaWduZWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpnZXROdW1iZXJPZkNoYXJzKCkKIHsK
LSAgICBwcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVz
aGVldHMoeyBMYXlvdXRPcHRpb25zOjpDb250ZW50VmlzaWJpbGl0eUZvcmNlTGF5b3V0IH0sIHRo
aXMpOworICAgIHByb3RlY3RlZERvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cyh7IExheW91dE9wdGlvbnM6OlRyZWF0Q29udGVudFZpc2liaWxpdHlIaWRkZW5B
c1Zpc2libGUsIExheW91dE9wdGlvbnM6OlRyZWF0Q29udGVudFZpc2liaWxpdHlBdXRvQXNWaXNp
YmxlIH0sIHRoaXMpOwogICAgIHJldHVybiBTVkdUZXh0UXVlcnkoY2hlY2tlZFJlbmRlcmVyKCku
Z2V0KCkpLm51bWJlck9mQ2hhcmFjdGVycygpOwogfQogCiBmbG9hdCBTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6OmdldENvbXB1dGVkVGV4dExlbmd0aCgpCiB7Ci0gICAgcHJvdGVjdGVkRG9jdW1lbnQo
KS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6
Q29udGVudFZpc2liaWxpdHlGb3JjZUxheW91dCB9LCB0aGlzKTsKKyAgICBwcm90ZWN0ZWREb2N1
bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRp
b25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5SGlkZGVuQXNWaXNpYmxlLCBMYXlvdXRPcHRpb25z
OjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5QXV0b0FzVmlzaWJsZSB9LCB0aGlzKTsKICAgICByZXR1
cm4gU1ZHVGV4dFF1ZXJ5KGNoZWNrZWRSZW5kZXJlcigpLmdldCgpKS50ZXh0TGVuZ3RoKCk7CiB9
CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBFeGNlcHRpb25PcjxmbG9hdD4gU1ZHVGV4dENvbnRlbnRF
bGVtZW50OjpnZXRSb3RhdGlvbk9mQ2hhcih1bnNpZ25lZCBjaGFybnVtKQogCiBpbnQgU1ZHVGV4
dENvbnRlbnRFbGVtZW50OjpnZXRDaGFyTnVtQXRQb3NpdGlvbihET01Qb2ludEluaXQmJiBwb2lu
dEluaXQpCiB7Ci0gICAgcHJvdGVjdGVkRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKHsgTGF5b3V0T3B0aW9uczo6Q29udGVudFZpc2liaWxpdHlGb3JjZUxh
eW91dCB9LCB0aGlzKTsKKyAgICBwcm90ZWN0ZWREb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMoeyBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmls
aXR5SGlkZGVuQXNWaXNpYmxlLCBMYXlvdXRPcHRpb25zOjpUcmVhdENvbnRlbnRWaXNpYmlsaXR5
QXV0b0FzVmlzaWJsZSB9LCB0aGlzKTsKICAgICBGbG9hdFBvaW50IHRyYW5zZm9ybVBvaW50IHtz
dGF0aWNfY2FzdDxmbG9hdD4ocG9pbnRJbml0LngpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocG9pbnRJ
bml0LnkpfTsKICAgICByZXR1cm4gU1ZHVGV4dFF1ZXJ5KGNoZWNrZWRSZW5kZXJlcigpLmdldCgp
KS5jaGFyYWN0ZXJOdW1iZXJBdFBvc2l0aW9uKHRyYW5zZm9ybVBvaW50KTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>