<?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>206813</bug_id>
          
          <creation_ts>2020-01-26 17:41:52 -0800</creation_ts>
          <short_desc>[LFC][IFC] Display::LineBox has one type of geometry only.</short_desc>
          <delta_ts>2020-08-03 09:40:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>215087</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1611257</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-26 17:41:52 -0800</bug_when>
    <thetext>LineBox can either be logical or physical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611258</commentid>
    <comment_count>1</comment_count>
      <attachid>388819</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-01-26 17:46:45 -0800</bug_when>
    <thetext>Created attachment 388819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611395</commentid>
    <comment_count>2</comment_count>
      <attachid>388819</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-01-27 07:20:13 -0800</bug_when>
    <thetext>Comment on attachment 388819
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        It can either represent a logical line box (during layout) or a physical one (during paint/hittest).

This doesn&apos;t feel right. Shouldn&apos;t we have separate classes for these cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611434</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-01-27 09:01:16 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #2)
&gt; Comment on attachment 388819 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388819&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        It can either represent a logical line box (during layout) or a physical one (during paint/hittest).
&gt; 
&gt; This doesn&apos;t feel right. Shouldn&apos;t we have separate classes for these cases?
Yes, that would be cleaner and more inline with what we do with runs. It also implies that we should do something similar with Display::InlineRect/Rect too.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388819</attachid>
            <date>2020-01-26 17:46:45 -0800</date>
            <delta_ts>2020-01-27 09:01:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206813-20200126174644.patch</filename>
            <type>text/plain</type>
            <size>39501</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGYwZTQyMjY4OTI1MTEw
ZjNkMDE4ZWU4MjE0YjNjNzZlYjYwODNmZS4uOTlkOGVlNGFmZWIzN2Q1NzJhNjE3ZmQxMWNjZmI5
MzU3MzU4NjcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDIwLTAxLTI2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBEaXNwbGF5
OjpMaW5lQm94IGhhcyBvbmUgdHlwZSBvZiBnZW9tZXRyeSBvbmx5LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2ODEzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgY2FuIGVpdGhlciByZXByZXNlbnQg
YSBsb2dpY2FsIGxpbmUgYm94IChkdXJpbmcgbGF5b3V0KSBvciBhIHBoeXNpY2FsIG9uZSAoZHVy
aW5nIHBhaW50L2hpdHRlc3QpLgorCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QgY29uc3Qp
OgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4
dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAg
ICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUxpbmVCb3guaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OnJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6TGluZUJveDo6dG9wTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpMaW5lQm94OjpsZWZ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6Okxp
bmVCb3g6OnJpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6
OnRvcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpib3R0b20g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6d2lkdGggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6aGVpZ2h0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OnNldFRvcExlZnQpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6c2V0SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkxpbmVCb3g6OnNldFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkxpbmVCb3g6OnNldEhlaWdodElmR3JlYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
OjpMaW5lQm94Ojpsb2dpY2FsUmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2FsVG9wTGVmdCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2FsTGVmdCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2FsUmlnaHQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6bG9naWNh
bFRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94
Ojpsb2dpY2FsQm90dG9tIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXk6OkxpbmVCb3g6OmxvZ2ljYWxXaWR0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpsb2dpY2FsSGVpZ2h0IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OnNldExvZ2ljYWxUb3BMZWZ0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OnNldExvZ2ljYWxIZWln
aHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6c2V0TG9n
aWNhbFdpZHRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6
OnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
OjpwYWludElubGluZUNvbnRlbnQpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aEZv
ckNvbnN0cmFpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6c2V0RGlzcGxheUJveGVzRm9yTGluZSk6CisgICAgICAgICogbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCdWlsZGVyOjpyZXNldENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQnVpbGRlcjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
QnVpbGRlcjo6YWxpZ25Db250ZW50VmVydGljYWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxpbmVCdWlsZGVyOjphbGlnbkhvcml6b250YWxseSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCdWlsZGVyOjpyZW1vdmVUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6dmlzdWFsbHlDb2xsYXBzZVByZVdy
YXBPdmVyZmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRl
cjo6bW92ZUxvZ2ljYWxMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxk
ZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphcHBl
bmROb25CcmVha2FibGVTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWls
ZGVyOjphcHBlbmRJbmxpbmVDb250YWluZXJFbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lQnVpbGRlcjo6YXBwZW5kVGV4dENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQnVpbGRlcjo6YXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0
KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5o
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6aXNWaXN1YWxseUVtcHR5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmxvZ2ljYWxM
aW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6Omxv
Z2ljYWxUb3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6
bG9naWNhbEJvdHRvbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWls
ZGVyOjpsb2dpY2FsTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVC
dWlsZGVyOjpsb2dpY2FsSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZUJ1aWxkZXI6OmNvbnRlbnRMb2dpY2FsV2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6Y29udGVudExvZ2ljYWxSaWdodCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpiYXNlbGluZU9mZnNldCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpsaW5lQm94IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250ZXh0Ojps
YXlvdXRMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUxheW91dENvbnRleHQ6
OmNsb3NlKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29u
dGV4dC5oOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxp
bmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVM
YXlvdXQ6OmNvbnRlbnRMb2dpY2FsSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6bGFzdExpbmVC
YXNlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGlu
ZUxheW91dDo6cGFpbnQpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVC
dWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0SW5saW5lUnVucyk6
CisKIDIwMjAtMDEtMjYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTEZDXVtJRkNdIERpc3BsYXk6OlJ1biBoYXMgbm9uLWxvZ2ljYWwgZ2VvbWV0cnkgb25seS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcAppbmRleCBmNmE1OTdiZWIwMzA0M2MxNmVlNzRjNDJjMjUzOGM3NTZjNGM1MzZmLi5kMGYy
M2YzNDRlNmY4NTYxNzBhYzQ0NmNkMTNiMjQ3ZGRhOTE5ZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC0xMzYsOCAr
MTM2LDggQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbnRlbnRI
ZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoY28KICAgICAgICAgYXV0byYgbGluZUJveGVz
ID0gbGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUoZm9ybWF0dGlu
Z1Jvb3RDb250YWluZXIpLmRpc3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVCb3hlczsKICAgICAg
ICAgLy8gRXZlbiBlbXB0eSBjb250YWluZXJzIGdlbmVyYXRlIG9uZSBsaW5lLiAKICAgICAgICAg
QVNTRVJUKCFsaW5lQm94ZXMuaXNFbXB0eSgpKTsKLSAgICAgICAgdG9wID0gbGluZUJveGVzLmZp
cnN0KCkubG9naWNhbFRvcCgpOwotICAgICAgICBib3R0b20gPSBsaW5lQm94ZXMubGFzdCgpLmxv
Z2ljYWxCb3R0b20oKTsKKyAgICAgICAgdG9wID0gbGluZUJveGVzLmZpcnN0KCkudG9wKCk7Cisg
ICAgICAgIGJvdHRvbSA9IGxpbmVCb3hlcy5sYXN0KCkuYm90dG9tKCk7CiAgICAgfSBlbHNlIGlm
IChmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQoKSB8fCBmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5lc3RhYmxpc2hlc1RhYmxlRm9ybWF0dGlu
Z0NvbnRleHQoKSB8fCBmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5pc0RvY3VtZW50Qm94KCkpIHsK
ICAgICAgICAgaWYgKGZvcm1hdHRpbmdSb290Q29udGFpbmVyLmhhc0luRmxvd0NoaWxkKCkpIHsK
ICAgICAgICAgICAgIGF1dG8mIGZpcnN0Qm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5n
ZW9tZXRyeUZvckJveCgqZm9ybWF0dGluZ1Jvb3RDb250YWluZXIuZmlyc3RJbkZsb3dDaGlsZCgp
LCBFc2NhcGVSZWFzb246Ok5lZWRzR2VvbWV0cnlGcm9tRXN0YWJsaXNoZWRGb3JtYXR0aW5nQ29u
dGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5k
ZXggMGNhZDhiMTgwNzExNTU3MGM1YWFiYTc3NWQ2MWZhMzBlN2EyMzliNi4uNDViZjVjY2YyMjFi
YzQxODBlNTcwOWQxNjE5MmI0NjQ4ZTQxZmQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtNzcsNyArNzcsNyBAQCBDb250ZW50SGVpZ2h0QW5k
TWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNl
ZEhlaWdodAogICAgICAgICAgICAgYXV0byYgbGluZUJveGVzID0gbGF5b3V0U3RhdGUoKS5lc3Rh
Ymxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZShsYXlvdXRDb250YWluZXIpLmRpc3BsYXlJbmxp
bmVDb250ZW50KCktPmxpbmVCb3hlczsKICAgICAgICAgICAgIC8vIEV2ZW4gZW1wdHkgY29udGFp
bmVycyBnZW5lcmF0ZSBvbmUgbGluZS4gCiAgICAgICAgICAgICBBU1NFUlQoIWxpbmVCb3hlcy5p
c0VtcHR5KCkpOwotICAgICAgICAgICAgcmV0dXJuIHsgdG9MYXlvdXRVbml0KGxpbmVCb3hlcy5s
YXN0KCkubG9naWNhbEJvdHRvbSgpKSAtIGJvcmRlckFuZFBhZGRpbmdUb3AsIG5vbkNvbGxhcHNl
ZE1hcmdpbiB9OworICAgICAgICAgICAgcmV0dXJuIHsgdG9MYXlvdXRVbml0KGxpbmVCb3hlcy5s
YXN0KCkuYm90dG9tKCkpIC0gYm9yZGVyQW5kUGFkZGluZ1RvcCwgbm9uQ29sbGFwc2VkTWFyZ2lu
IH07CiAgICAgICAgIH0KIAogICAgICAgICAvLyAyLiB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGJv
dHRvbSAocG9zc2libHkgY29sbGFwc2VkKSBtYXJnaW4gb2YgaXRzIGxhc3QgaW4tZmxvdyBjaGls
ZCwgaWYgdGhlIGNoaWxkJ3MgYm90dG9tIG1hcmdpbi4uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlMaW5lQm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUxpbmVCb3guaAppbmRleCAwNGY2NDc0OTk5NWU0
OWI5N2Y1Y2Q0MDAwZjQxNmEwNTYwOTczZGM4Li4wZjEyNDAyZTg0MDRkMDVhOTFkMTcyNDQ1YWE0
NDYzMmVjZjU3NDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheUxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheUxpbmVCb3guaApAQCAtNjEsMjMgKzYxLDIzIEBAIHB1YmxpYzoKICAgICBMaW5l
Qm94KGNvbnN0IElubGluZVJlY3QmLCBjb25zdCBCYXNlbGluZSYsIElubGluZUxheW91dFVuaXQg
YmFzZWxpbmVPZmZzZXQpOwogICAgIExpbmVCb3goKSA9IGRlZmF1bHQ7CiAKLSAgICBjb25zdCBJ
bmxpbmVSZWN0JiBsb2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQorICAgIGNv
bnN0IElubGluZVJlY3QmIHJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KICAgICBjb25z
dCBJbmxpbmVSZWN0JiBzY3JvbGxhYmxlT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX3Njcm9s
bGFibGVPdmVyZmxvdzsgfQogICAgIGNvbnN0IElubGluZVJlY3QmIGlua092ZXJmbG93KCkgY29u
c3QgeyByZXR1cm4gbV9pbmtPdmVyZmxvdzsgfQogCi0gICAgSW5saW5lTGF5b3V0UG9pbnQgbG9n
aWNhbFRvcExlZnQoKSBjb25zdCB7IHJldHVybiBtX3JlY3QudG9wTGVmdCgpOyB9Ci0gICAgSW5s
aW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5sZWZ0KCk7
IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVjdC5yaWdodCgpOyB9Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWN0LnRvcCgpOyB9Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsQm90
dG9tKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmJvdHRvbSgpOyB9CisgICAgSW5saW5lTGF5b3V0
UG9pbnQgdG9wTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC50b3BMZWZ0KCk7IH0KKyAgICBJ
bmxpbmVMYXlvdXRVbml0IGxlZnQoKSBjb25zdCB7IHJldHVybiBtX3JlY3QubGVmdCgpOyB9Cisg
ICAgSW5saW5lTGF5b3V0VW5pdCByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5yaWdodCgp
OyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCB0b3AoKSBjb25zdCB7IHJldHVybiBtX3JlY3QudG9w
KCk7IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVj
dC5ib3R0b20oKTsgfQogCi0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX3JlY3Qud2lkdGgoKTsgfQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNh
bEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5oZWlnaHQoKTsgfQorICAgIElubGluZUxh
eW91dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3JlY3Qud2lkdGgoKTsgfQorICAgIElu
bGluZUxheW91dFVuaXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LmhlaWdodCgpOyB9
CiAKICAgICBjb25zdCBCYXNlbGluZSYgYmFzZWxpbmUoKSBjb25zdDsKLSAgICAvLyBCYXNlbGlu
ZSBvZmZzZXQgZnJvbSBsaW5lIGxvZ2ljYWwgdG9wLiBOb3RlIHRoYXQgb2Zmc2V0IGRvZXMgbm90
IG5lY2Vzc2FyaWx5IGVxdWFsIHRvIGFzY2VudC4KKyAgICAvLyBCYXNlbGluZSBvZmZzZXQgZnJv
bSBsaW5lIHRvcC4gTm90ZSB0aGF0IG9mZnNldCBkb2VzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0
byBhc2NlbnQuCiAgICAgLy8KLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tICAgIGxpbmUgbG9n
aWNhbCB0b3AgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0gKHRvcCBhbGlnbikKKyAgICAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tICAgIGxpbmUgdG9wICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0t
LS0gKHRvcCBhbGlnbikKICAgICAvLyAgICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF4KICAgICAvLyAgICAgICAgICAgICB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgIHwKICAgICAvLyAgIF4gICAgICAg
ICB8IGJhc2VsaW5lIG9mZnNldCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgYmFzZWxp
bmUgb2Zmc2V0CkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICAvLyAgIF4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGVzY2VudAogICAgIC8vICAgfCBk
ZXNjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdgogICAgIC8vICAgdgot
ICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgbGluZSBsb2dpY2FsIGJvdHRvbSAgLS0tLS0t
LS0tLS0tLS0tLS0tLQorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgbGluZSBib3R0b20g
ICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIElubGluZUxheW91dFVuaXQgYmFzZWxp
bmVPZmZzZXQoKSBjb25zdDsKICAgICB2b2lkIHNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKElu
bGluZUxheW91dFVuaXQpOwogICAgIHZvaWQgc2V0QXNjZW50SWZHcmVhdGVyKElubGluZUxheW91
dFVuaXQpOwpAQCAtOTgsMTEgKzk4LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0QmFzZWxp
bmUoKTsKICAgICB2b2lkIHJlc2V0RGVzY2VudCgpIHsgbV9iYXNlbGluZS5zZXREZXNjZW50KDBf
bHUpOyB9CiAKLSAgICB2b2lkIHNldExvZ2ljYWxUb3BMZWZ0KGNvbnN0IElubGluZUxheW91dFBv
aW50JiBsb2dpY2FsVG9wTGVmdCkgeyBtX3JlY3Quc2V0VG9wTGVmdChsb2dpY2FsVG9wTGVmdCk7
IH0KLSAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsSGVp
Z2h0KSB7IG1fcmVjdC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCk7IH0KKyAgICB2b2lkIHNldFRv
cExlZnQoY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIHRvcExlZnQpIHsgbV9yZWN0LnNldFRvcExl
ZnQodG9wTGVmdCk7IH0KKyAgICB2b2lkIHNldEhlaWdodChJbmxpbmVMYXlvdXRVbml0IGhlaWdo
dCkgeyBtX3JlY3Quc2V0SGVpZ2h0KGhlaWdodCk7IH0KIAotICAgIHZvaWQgc2V0TG9naWNhbEhl
aWdodElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0KTsKLSAgICB2b2lkIHNldExvZ2ljYWxXaWR0
aChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkgeyBtX3JlY3Quc2V0V2lkdGgobG9naWNh
bFdpZHRoKTsgfQorICAgIHZvaWQgc2V0SGVpZ2h0SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQp
OworICAgIHZvaWQgc2V0V2lkdGgoSW5saW5lTGF5b3V0VW5pdCB3aWR0aCkgeyBtX3JlY3Quc2V0
V2lkdGgod2lkdGgpOyB9CiAKICAgICB2b2lkIHNldFNjcm9sbGFibGVPdmVyZmxvdyhjb25zdCBJ
bmxpbmVSZWN0JiByZWN0KSB7IG1fc2Nyb2xsYWJsZU92ZXJmbG93ID0gcmVjdDsgfQogICAgIHZv
aWQgc2V0SW5rT3ZlcmZsb3coY29uc3QgSW5saW5lUmVjdCYgcmVjdCkgeyBtX2lua092ZXJmbG93
ID0gcmVjdDsgfQpAQCAtMTQ5LDExICsxNDksMTEgQEAgaW5saW5lIExpbmVCb3g6OkxpbmVCb3go
Y29uc3QgSW5saW5lUmVjdCYgcmVjdCwgY29uc3QgQmFzZWxpbmUmIGJhc2VsaW5lLCBJbmxpbmUK
ICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBMaW5lQm94OjpzZXRMb2dpY2FsSGVpZ2h0SWZHcmVh
dGVyKElubGluZUxheW91dFVuaXQgbG9naWNhbEhlaWdodCkKK2lubGluZSB2b2lkIExpbmVCb3g6
OnNldEhlaWdodElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGhlaWdodCkKIHsKLSAgICBpZiAo
bG9naWNhbEhlaWdodCA8PSBtX3JlY3QuaGVpZ2h0KCkpCisgICAgaWYgKGhlaWdodCA8PSBtX3Jl
Y3QuaGVpZ2h0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3JlY3Quc2V0SGVpZ2h0KGxvZ2lj
YWxIZWlnaHQpOworICAgIG1fcmVjdC5zZXRIZWlnaHQoaGVpZ2h0KTsKIH0KIAogaW5saW5lIGNv
bnN0IExpbmVCb3g6OkJhc2VsaW5lJiBMaW5lQm94OjpiYXNlbGluZSgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcApp
bmRleCA0MmMyMTIwNTE4Y2FkNjZlMWZlZDFmZDk2ZDZiN2FjZTEyMjIzNTBlLi41NmNkNTlhNTQz
YmE3OTgwMWYwNmE2YzJjNTE1NmVkZWIwZGM4NzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKQEAgLTEyOSw5ICsxMjks
OSBAQCBzdGF0aWMgdm9pZCBwYWludElubGluZUNvbnRlbnQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBMYXlvdXRQb2ludCBhYnNvbHV0ZU9mZgogICAgICAgICAgICAgYXV0byBhYnNvbHV0ZUxl
ZnQgPSBhYnNvbHV0ZU9mZnNldC54KCkgKyBydW4ubGVmdCgpOwogICAgICAgICAgICAgLy8gRklY
TUU6IEFkZCBub24tYmFzZWxpbmUgYWxpZ24gcGFpbnRpbmcKICAgICAgICAgICAgIGF1dG8mIGxp
bmVCb3ggPSBkaXNwbGF5SW5saW5lQ29udGVudC0+bGluZUJveEZvclJ1bihydW4pOwotICAgICAg
ICAgICAgYXV0byBiYXNlbGluZU9mZnNldCA9IGFic29sdXRlT2Zmc2V0LnkoKSArIGxpbmVCb3gu
bG9naWNhbFRvcCgpICsgbGluZUJveC5iYXNlbGluZU9mZnNldCgpOworICAgICAgICAgICAgYXV0
byBiYXNlbGluZU9mZnNldCA9IGFic29sdXRlT2Zmc2V0LnkoKSArIGxpbmVCb3gudG9wKCkgKyBs
aW5lQm94LmJhc2VsaW5lT2Zmc2V0KCk7CiAgICAgICAgICAgICBhdXRvIGV4cGFuc2lvbkNvbnRl
eHQgPSB0ZXh0Q29udGV4dC0+ZXhwYW5zaW9uKCk7Ci0gICAgICAgICAgICBhdXRvIHRleHRSdW4g
PSBUZXh0UnVuIHsgdGV4dENvbnRleHQtPmNvbnRlbnQoKSwgcnVuLmxlZnQoKSAtIGxpbmVCb3gu
bG9naWNhbExlZnQoKSwKKyAgICAgICAgICAgIGF1dG8gdGV4dFJ1biA9IFRleHRSdW4geyB0ZXh0
Q29udGV4dC0+Y29udGVudCgpLCBydW4ubGVmdCgpIC0gbGluZUJveC5sZWZ0KCksCiAgICAgICAg
ICAgICAgICAgZXhwYW5zaW9uQ29udGV4dCA/IGV4cGFuc2lvbkNvbnRleHQtPmhvcml6b250YWxF
eHBhbnNpb24gOiAwLAogICAgICAgICAgICAgICAgIGV4cGFuc2lvbkNvbnRleHQgPyBleHBhbnNp
b25Db250ZXh0LT5iZWhhdmlvciA6IERlZmF1bHRFeHBhbnNpb24gfTsKICAgICAgICAgICAgIHRl
eHRSdW4uc2V0VGFiU2l6ZSghc3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCksIHN0eWxlLnRhYlNp
emUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNzhjODE0NWQw
MmEwNjUyNTI4OTRkY2E2OTg5NTRmNzRhYTFlMWM1ZS4uZjAzN2E2OTZmYTc0ODQ4NmU4ZWJjOTk2
ZjY3ZjZkMmRlZjhjYzJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApA
QCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlv
dXQoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMaW5lTGF5b3V0Q29uCiAKICAgICAgICAgcGFy
dGlhbExlYWRpbmdDb250ZW50TGVuZ3RoID0geyB9OwogICAgICAgICBpZiAobGluZUNvbnRlbnQu
dHJhaWxpbmdJbmxpbmVJdGVtSW5kZXgpIHsKLSAgICAgICAgICAgIGxpbmVMb2dpY2FsVG9wID0g
bGluZUNvbnRlbnQubGluZUJveC5sb2dpY2FsQm90dG9tKCk7CisgICAgICAgICAgICBsaW5lTG9n
aWNhbFRvcCA9IGxpbmVDb250ZW50LmxvZ2ljYWxMaW5lQm94LmJvdHRvbSgpOwogICAgICAgICAg
ICAgLy8gV2hlbiB0aGUgdHJhaWxpbmcgY29udGVudCBpcyBwYXJ0aWFsLCB3ZSBuZWVkIHRvIHJl
dXNlIHRoZSBsYXN0IElubGluSXRlbS4KICAgICAgICAgICAgIGlmIChsaW5lQ29udGVudC5wYXJ0
aWFsQ29udGVudCkgewogICAgICAgICAgICAgICAgIGxheW91dFJhbmdlLnN0YXJ0ID0gKmxpbmVD
b250ZW50LnRyYWlsaW5nSW5saW5lSXRlbUluZGV4OwpAQCAtMjQwLDcgKzI0MCw3IEBAIElubGlu
ZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lk
dGhGb3JDb25zdHJhaW50KGNvCiAgICAgICAgIElubGluZUxheW91dFVuaXQgZmxvYXRzV2lkdGgg
PSAwOwogICAgICAgICBmb3IgKGF1dG8mIGZsb2F0SXRlbSA6IGxpbmVDb250ZW50LmZsb2F0cykK
ICAgICAgICAgICAgIGZsb2F0c1dpZHRoICs9IGdlb21ldHJ5Rm9yQm94KGZsb2F0SXRlbS0+bGF5
b3V0Qm94KCkpLm1hcmdpbkJveFdpZHRoKCk7Ci0gICAgICAgIG1heGltdW1MaW5lV2lkdGggPSBz
dGQ6Om1heChtYXhpbXVtTGluZVdpZHRoLCBmbG9hdHNXaWR0aCArIGxpbmVDb250ZW50LmxpbmVC
b3gubG9naWNhbFdpZHRoKCkpOworICAgICAgICBtYXhpbXVtTGluZVdpZHRoID0gc3RkOjptYXgo
bWF4aW11bUxpbmVXaWR0aCwgZmxvYXRzV2lkdGggKyBsaW5lQ29udGVudC5sb2dpY2FsTGluZUJv
eC53aWR0aCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1heGltdW1MaW5lV2lkdGg7CiB9CkBAIC00
MjQsNiArNDI0LDggQEAgTGluZUJ1aWxkZXI6OkNvbnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdD
b250ZXh0Ojpjb25zdHJhaW50c0ZvckxpbmUoY29uc3QgSG9yaXoKIHZvaWQgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OnNldERpc3BsYXlCb3hlc0ZvckxpbmUoY29uc3QgTGluZUxheW91dENvbnRl
eHQ6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRz
JiBob3Jpem9udGFsQ29uc3RyYWludHMpCiB7CiAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0g
dGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7CisgICAgLy8gRklYTUU6IENvbnZlcnQgbG9naWNhbCBs
aW5lIHJlY3QgdG8gcGh5c2ljYWwgcmVjdC4KKyAgICBhdXRvJiBsaW5lQm94ID0gbGluZUNvbnRl
bnQubG9naWNhbExpbmVCb3g7CiAKICAgICBpZiAoIWxpbmVDb250ZW50LmZsb2F0cy5pc0VtcHR5
KCkpIHsKICAgICAgICAgYXV0byBmbG9hdGluZ0NvbnRleHQgPSBGbG9hdGluZ0NvbnRleHQgeyBy
b290KCksICp0aGlzLCBmb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpIH07CkBAIC00MzIs
OCArNDM0LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0RGlzcGxheUJveGVz
Rm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGkKICAgICAgICAgICAgIGF1dG8mIGZs
b2F0Qm94ID0gZmxvYXRJdGVtLT5sYXlvdXRCb3goKTsKICAgICAgICAgICAgIGF1dG8mIGRpc3Bs
YXlCb3ggPSBmb3JtYXR0aW5nU3RhdGUuZGlzcGxheUJveChmbG9hdEJveCk7CiAgICAgICAgICAg
ICAvLyBTZXQgc3RhdGljIHBvc2l0aW9uIGZpcnN0LgotICAgICAgICAgICAgYXV0byYgbGluZUJv
eCA9IGxpbmVDb250ZW50LmxpbmVCb3g7Ci0gICAgICAgICAgICBkaXNwbGF5Qm94LnNldFRvcExl
ZnQoeyBsaW5lQm94LmxvZ2ljYWxMZWZ0KCksIGxpbmVCb3gubG9naWNhbFRvcCgpIH0pOworICAg
ICAgICAgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KHsgbGluZUJveC5sZWZ0KCksIGxpbmVCb3gu
dG9wKCkgfSk7CiAgICAgICAgICAgICAvLyBGbG9hdCBpdC4KICAgICAgICAgICAgIGRpc3BsYXlC
b3guc2V0VG9wTGVmdChmbG9hdGluZ0NvbnRleHQucG9zaXRpb25Gb3JGbG9hdChmbG9hdEJveCkp
OwogICAgICAgICAgICAgZmxvYXRpbmdDb250ZXh0LmFwcGVuZChmbG9hdEJveCk7CkBAIC00NDgs
OCArNDQ5LDggQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0RGlzcGxheUJveGVz
Rm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGkKICAgICAgICAgaW5pdGlhbENvbnRh
aW5nQmxvY2tTaXplID0gZ2VvbWV0cnlGb3JCb3gocm9vdCgpLmluaXRpYWxDb250YWluaW5nQmxv
Y2soKSwgRXNjYXBlUmVhc29uOjpTdHJva2VPdmVyZmxvd05lZWRzVmlld3BvcnRHZW9tZXRyeSku
Y29udGVudEJveCgpLnNpemUoKTsKICAgICBhdXRvJiBpbmxpbmVDb250ZW50ID0gZm9ybWF0dGlu
Z1N0YXRlLmVuc3VyZURpc3BsYXlJbmxpbmVDb250ZW50KCk7CiAgICAgYXV0byBsaW5lSW5kZXgg
PSBpbmxpbmVDb250ZW50LmxpbmVCb3hlcy5zaXplKCk7Ci0gICAgaW5saW5lQ29udGVudC5saW5l
Qm94ZXMuYXBwZW5kKGxpbmVDb250ZW50LmxpbmVCb3gpOwotICAgIGF1dG8gbGluZUlua092ZXJm
bG93ID0gbGluZUNvbnRlbnQubGluZUJveC5zY3JvbGxhYmxlT3ZlcmZsb3coKTsKKyAgICBpbmxp
bmVDb250ZW50LmxpbmVCb3hlcy5hcHBlbmQobGluZUJveCk7CisgICAgYXV0byBsaW5lSW5rT3Zl
cmZsb3cgPSBsaW5lQm94LnNjcm9sbGFibGVPdmVyZmxvdygpOwogICAgIE9wdGlvbmFsPHVuc2ln
bmVkPiBsYXN0VGV4dEl0ZW1JbmRleDsKICAgICAvLyBDb21wdXRlIGJveCBmaW5hbCBnZW9tZXRy
eS4KICAgICBhdXRvJiBsaW5lUnVucyA9IGxpbmVDb250ZW50LnJ1bkxpc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
QnVpbGRlci5jcHAKaW5kZXggODQzZTZhODczY2YzMzVhMDUxMDcxNDEyNDQ5ZTRmY2YwZDliODZl
OC4uODFmYzM3OWIxZjUyNmNkMzU3ZWE1MjYxMWNmNWMxY2M5YzFhNTJlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmVCdWlsZGVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjppbml0aWFs
aXplKGNvbnN0IENvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKIAogICAgIGF1dG8gbGluZVJlY3Qg
PSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsgY29uc3RyYWludHMubG9naWNhbFRvcExlZnQsIDBfbHUs
IGluaXRpYWxMaW5lSGVpZ2h0IH07CiAgICAgYXV0byBiYXNlbGluZSA9IERpc3BsYXk6OkxpbmVC
b3g6OkJhc2VsaW5lIHsgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBpbml0aWFsTGluZUhlaWdodCAt
IGluaXRpYWxCYXNlbGluZU9mZnNldCB9OwotICAgIG1fbGluZUJveCA9IERpc3BsYXk6OkxpbmVC
b3ggeyBsaW5lUmVjdCwgYmFzZWxpbmUsIGluaXRpYWxCYXNlbGluZU9mZnNldCB9OworICAgIG1f
bG9naWNhbExpbmVCb3ggPSBEaXNwbGF5OjpMaW5lQm94IHsgbGluZVJlY3QsIGJhc2VsaW5lLCBp
bml0aWFsQmFzZWxpbmVPZmZzZXQgfTsKICAgICBtX2xpbmVMb2dpY2FsV2lkdGggPSBjb25zdHJh
aW50cy5hdmFpbGFibGVMb2dpY2FsV2lkdGg7CiAgICAgbV9oYXNJbnRydXNpdmVGbG9hdCA9IGNv
bnN0cmFpbnRzLmxpbmVJc0NvbnN0cmFpbmVkQnlGbG9hdDsKIApAQCAtMTAxLDggKzEwMSw4IEBA
IHZvaWQgTGluZUJ1aWxkZXI6OmluaXRpYWxpemUoY29uc3QgQ29uc3RyYWludHMmIGNvbnN0cmFp
bnRzKQogCiB2b2lkIExpbmVCdWlsZGVyOjpyZXNldENvbnRlbnQoKQogewotICAgIG1fbGluZUJv
eC5zZXRMb2dpY2FsV2lkdGgoeyB9KTsKLSAgICBtX2xpbmVCb3guc2V0SXNDb25zaWRlcmVkRW1w
dHkoKTsKKyAgICBtX2xvZ2ljYWxMaW5lQm94LnNldFdpZHRoKHsgfSk7CisgICAgbV9sb2dpY2Fs
TGluZUJveC5zZXRJc0NvbnNpZGVyZWRFbXB0eSgpOwogICAgIG1fcnVucy5jbGVhcigpOwogICAg
IG1fdHJpbW1hYmxlVHJhaWxpbmdDb250ZW50LnJlc2V0KCk7CiAgICAgbV9saW5lSXNWaXN1YWxs
eUVtcHR5QmVmb3JlVHJpbW1hYmxlVHJhaWxpbmdDb250ZW50ID0geyB9OwpAQCAtMTIzLDEzICsx
MjMsMTMgQEAgTGluZUJ1aWxkZXI6OlJ1bkxpc3QgTGluZUJ1aWxkZXI6OmNsb3NlKElzTGFzdExp
bmVXaXRoSW5saW5lQ29udGVudCBpc0xhc3RMaW5lV2kKICAgICAgICAgICAgIHJ1bi5zZXRMb2dp
Y2FsSGVpZ2h0KHJ1bkNvbnRlbnRIZWlnaHQocnVuKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGlzVmlzdWFsbHlFbXB0eSgpKSB7Ci0gICAgICAgICAgICBtX2xpbmVCb3gucmVzZXRCYXNlbGlu
ZSgpOwotICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHQoMF9sdSk7CisgICAg
ICAgICAgICBtX2xvZ2ljYWxMaW5lQm94LnJlc2V0QmFzZWxpbmUoKTsKKyAgICAgICAgICAgIG1f
bG9naWNhbExpbmVCb3guc2V0SGVpZ2h0KDBfbHUpOwogICAgICAgICB9CiAgICAgICAgIC8vIFJl
bW92ZSBkZXNjZW50IHdoZW4gYWxsIGNvbnRlbnQgaXMgYmFzZWxpbmUgYWxpZ25lZCBidXQgbm9u
ZSBvZiB0aGVtIGhhdmUgZGVzY2VudC4KICAgICAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0KCku
cXVpcmtzKCkubGluZURlc2NlbnROZWVkc0NvbGxhcHNpbmcobV9ydW5zKSkgewotICAgICAgICAg
ICAgbV9saW5lQm94LnNocmlua1ZlcnRpY2FsbHkobV9saW5lQm94LmJhc2VsaW5lKCkuZGVzY2Vu
dCgpKTsKLSAgICAgICAgICAgIG1fbGluZUJveC5yZXNldERlc2NlbnQoKTsKKyAgICAgICAgICAg
IG1fbG9naWNhbExpbmVCb3guc2hyaW5rVmVydGljYWxseShtX2xvZ2ljYWxMaW5lQm94LmJhc2Vs
aW5lKCkuZGVzY2VudCgpKTsKKyAgICAgICAgICAgIG1fbG9naWNhbExpbmVCb3gucmVzZXREZXNj
ZW50KCk7CiAgICAgICAgIH0KICAgICAgICAgYWxpZ25Db250ZW50VmVydGljYWxseSgpOwogICAg
ICAgICBhbGlnbkhvcml6b250YWxseShoYW5naW5nQ29udGVudCwgaXNMYXN0TGluZVdpdGhJbmxp
bmVDb250ZW50KTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBMaW5lQnVpbGRlcjo6UnVuTGlzdCBMaW5l
QnVpbGRlcjo6Y2xvc2UoSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50IGlzTGFzdExpbmVXaQog
dm9pZCBMaW5lQnVpbGRlcjo6YWxpZ25Db250ZW50VmVydGljYWxseSgpCiB7CiAgICAgQVNTRVJU
KCFtX2lzSW50cmluc2ljU2l6aW5nKTsKLSAgICBhdXRvIHNjcm9sbGFibGVPdmVyZmxvd1JlY3Qg
PSBtX2xpbmVCb3gubG9naWNhbFJlY3QoKTsKKyAgICBhdXRvIHNjcm9sbGFibGVPdmVyZmxvd1Jl
Y3QgPSBtX2xvZ2ljYWxMaW5lQm94LnJlY3QoKTsKICAgICBmb3IgKGF1dG8mIHJ1biA6IG1fcnVu
cykgewogICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxUb3AgPSAwOwogICAgICAgICBh
dXRvJiBsYXlvdXRCb3ggPSBydW4ubGF5b3V0Qm94KCk7CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9p
ZCBMaW5lQnVpbGRlcjo6YWxpZ25Db250ZW50VmVydGljYWxseSgpCiAgICAgICAgIHJ1bi5tb3Zl
VmVydGljYWxseSh0aGlzLT5sb2dpY2FsVG9wKCkpOwogICAgICAgICBydW4ubW92ZUhvcml6b250
YWxseSh0aGlzLT5sb2dpY2FsTGVmdCgpKTsKICAgICB9Ci0gICAgbV9saW5lQm94LnNldFNjcm9s
bGFibGVPdmVyZmxvdyhzY3JvbGxhYmxlT3ZlcmZsb3dSZWN0KTsKKyAgICBtX2xvZ2ljYWxMaW5l
Qm94LnNldFNjcm9sbGFibGVPdmVyZmxvdyhzY3JvbGxhYmxlT3ZlcmZsb3dSZWN0KTsKIH0KIAog
dm9pZCBMaW5lQnVpbGRlcjo6anVzdGlmeVJ1bnMoSW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVX
aWR0aCkKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjphbGlnbkhvcml6b250
YWxseShjb25zdCBIYW5naW5nQ29udGVudCYgaGFuZ2luZ0NvbnRlbnQsIElzTGFzdAogICAgIC8v
IHRoYXQgdGhlIGxpbmUgYm94IGlzIGFsaWduZWQgYXMgd2VsbAogICAgIC8vIGUuZy4gPGRpdiBz
dHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyB3aWR0aDogMTAwcHg7Ij5jZW50ZXJlZCB0ZXh0PC9k
aXY+IDogdGhlIGxpbmUgYm94IHdpbGwgYWxzbyBiZSBjZW50ZXJlZAogICAgIC8vIGFzIG9wcG9z
ZWQgdG8gc3RhcnQgYXQgMHB4IGFsbCB0aGUgd2F5IHRvIFtjZW50ZXJlZCB0ZXh0XSBydW4ncyBy
aWdodCBlZGdlLgotICAgIG1fbGluZUJveC5tb3ZlSG9yaXpvbnRhbGx5KCphZGp1c3RtZW50KTsK
KyAgICBtX2xvZ2ljYWxMaW5lQm94Lm1vdmVIb3Jpem9udGFsbHkoKmFkanVzdG1lbnQpOwogICAg
IGZvciAoYXV0byYgcnVuIDogbV9ydW5zKQogICAgICAgICBydW4ubW92ZUhvcml6b250YWxseSgq
YWRqdXN0bWVudCk7CiB9CkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6cmVt
b3ZlVHJhaWxpbmdUcmltbWFibGVDb250ZW50KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1f
bGluZUJveC5zaHJpbmtIb3Jpem9udGFsbHkobV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQucmVt
b3ZlKCkpOworICAgIG1fbG9naWNhbExpbmVCb3guc2hyaW5rSG9yaXpvbnRhbGx5KG1fdHJpbW1h
YmxlVHJhaWxpbmdDb250ZW50LnJlbW92ZSgpKTsKICAgICAvLyBJZiB3ZSByZW1vdmVkIHRoZSBm
aXJzdCB2aXNpYmxlIHJ1biBvbiB0aGUgbGluZSwgd2UgbmVlZCB0byByZS1jaGVjayB0aGUgdmlz
aWJpbGl0eSBzdGF0dXMuCiAgICAgaWYgKG1fbGluZUlzVmlzdWFsbHlFbXB0eUJlZm9yZVRyaW1t
YWJsZVRyYWlsaW5nQ29udGVudCkgewogICAgICAgICAvLyBKdXN0IGJlY2F1c2UgdGhlIGxpbmUg
d2FzIHZpc3VhbGx5IGVtcHR5IGJlZm9yZSB0aGUgcmVtb3ZlZCBjb250ZW50LCBpdCBkb2VzIG5v
dCBuZWNlc3NhcmlseSBtZWFuIGl0IGlzIHN0aWxsIHZpc3VhbGx5IGVtcHR5LgpAQCAtMzA3LDcg
KzMwNyw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OnJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVu
dCgpCiAgICAgICAgIH07CiAgICAgICAgIC8vIFdlIGNvdWxkIG9ubHkgZ28gZnJvbSB2aXN1YWxs
eSBub24gZW1wdHkgLT4gdG8gdmlzdWFsbHkgZW1wdHkuIFRyaW1tZWQgcnVucyBzaG91bGQgbmV2
ZXIgbWFrZSB0aGUgbGluZSB2aXNpYmxlLgogICAgICAgICBpZiAobGluZUlzVmlzdWFsbHlFbXB0
eSgpKQotICAgICAgICAgICAgbV9saW5lQm94LnNldElzQ29uc2lkZXJlZEVtcHR5KCk7CisgICAg
ICAgICAgICBtX2xvZ2ljYWxMaW5lQm94LnNldElzQ29uc2lkZXJlZEVtcHR5KCk7CiAgICAgICAg
IG1fbGluZUlzVmlzdWFsbHlFbXB0eUJlZm9yZVRyaW1tYWJsZVRyYWlsaW5nQ29udGVudCA9IHsg
fTsKICAgICB9CiB9CkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6dmlzdWFs
bHlDb2xsYXBzZVByZVdyYXBPdmVyZmxvd0NvbnRlbnQoKQogICAgICAgICBpZiAob3ZlcmZsb3dX
aWR0aCA8PSAwKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIG1fbGluZUJveC5zaHJp
bmtIb3Jpem9udGFsbHkodHJpbW1lZENvbnRlbnRXaWR0aCk7CisgICAgbV9sb2dpY2FsTGluZUJv
eC5zaHJpbmtIb3Jpem9udGFsbHkodHJpbW1lZENvbnRlbnRXaWR0aCk7CiB9CiAKIEhhbmdpbmdD
b250ZW50IExpbmVCdWlsZGVyOjpjb2xsZWN0SGFuZ2luZ0NvbnRlbnQoSXNMYXN0TGluZVdpdGhJ
bmxpbmVDb250ZW50IGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCkKQEAgLTM4MSw3ICszODEs
NyBAQCB2b2lkIExpbmVCdWlsZGVyOjptb3ZlTG9naWNhbExlZnQoSW5saW5lTGF5b3V0VW5pdCBk
ZWx0YSkKICAgICBpZiAoIWRlbHRhKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKGRlbHRh
ID4gMCk7Ci0gICAgbV9saW5lQm94Lm1vdmVIb3Jpem9udGFsbHkoZGVsdGEpOworICAgIG1fbG9n
aWNhbExpbmVCb3gubW92ZUhvcml6b250YWxseShkZWx0YSk7CiAgICAgbV9saW5lTG9naWNhbFdp
ZHRoIC09IGRlbHRhOwogfQogCkBAIC00MDksMTQgKzQwOSwxNCBAQCB2b2lkIExpbmVCdWlsZGVy
OjphcHBlbmQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsVwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAogICAgIC8vIENoZWNrIGlm
IHRoaXMgZnJlc2hseSBhcHBlbmRlZCBjb250ZW50IG1ha2VzIHRoZSBsaW5lIHZpc3VhbGx5IG5v
bi1lbXB0eS4KLSAgICBpZiAobV9saW5lQm94LmlzQ29uc2lkZXJlZEVtcHR5KCkgJiYgIW1fcnVu
cy5pc0VtcHR5KCkgJiYgaXNWaXN1YWxseU5vbkVtcHR5KG1fcnVucy5sYXN0KCkpKQotICAgICAg
ICBtX2xpbmVCb3guc2V0SXNDb25zaWRlcmVkTm9uRW1wdHkoKTsKKyAgICBpZiAobV9sb2dpY2Fs
TGluZUJveC5pc0NvbnNpZGVyZWRFbXB0eSgpICYmICFtX3J1bnMuaXNFbXB0eSgpICYmIGlzVmlz
dWFsbHlOb25FbXB0eShtX3J1bnMubGFzdCgpKSkKKyAgICAgICAgbV9sb2dpY2FsTGluZUJveC5z
ZXRJc0NvbnNpZGVyZWROb25FbXB0eSgpOwogfQogCiB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmRO
b25CcmVha2FibGVTcGFjZShjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBJbmxpbmVMYXlv
dXRVbml0IGxvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIHsKICAg
ICBtX3J1bnMuYXBwZW5kKHsgaW5saW5lSXRlbSwgbG9naWNhbExlZnQsIGxvZ2ljYWxXaWR0aCB9
KTsKLSAgICBtX2xpbmVCb3guZXhwYW5kSG9yaXpvbnRhbGx5KGxvZ2ljYWxXaWR0aCk7CisgICAg
bV9sb2dpY2FsTGluZUJveC5leHBhbmRIb3Jpem9udGFsbHkobG9naWNhbFdpZHRoKTsKIH0KIAog
dm9pZCBMaW5lQnVpbGRlcjo6YXBwZW5kSW5saW5lQ29udGFpbmVyU3RhcnQoY29uc3QgSW5saW5l
SXRlbSYgaW5saW5lSXRlbSwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpCkBAIC00MzEs
NyArNDMxLDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6YXBwZW5kSW5saW5lQ29udGFpbmVyRW5kKGNv
bnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIElubGluZUwKICAgICBhdXRvIHJlbW92ZVRyYWls
aW5nTGV0dGVyU3BhY2luZyA9IFsmXSB7CiAgICAgICAgIGlmICghbV90cmltbWFibGVUcmFpbGlu
Z0NvbnRlbnQuaXNUcmFpbGluZ1J1blBhcnRpYWxseVRyaW1tYWJsZSgpKQogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBtX2xpbmVCb3guc2hyaW5rSG9yaXpvbnRhbGx5KG1fdHJpbW1hYmxl
VHJhaWxpbmdDb250ZW50LnJlbW92ZVBhcnRpYWxseVRyaW1tYWJsZUNvbnRlbnQoKSk7CisgICAg
ICAgIG1fbG9naWNhbExpbmVCb3guc2hyaW5rSG9yaXpvbnRhbGx5KG1fdHJpbW1hYmxlVHJhaWxp
bmdDb250ZW50LnJlbW92ZVBhcnRpYWxseVRyaW1tYWJsZUNvbnRlbnQoKSk7CiAgICAgfTsKICAg
ICAvLyBQcmV2ZW50IHRyYWlsaW5nIGxldHRlci1zcGFjaW5nIGZyb20gc3BpbGxpbmcgb3V0IG9m
IHRoZSBpbmxpbmUgY29udGFpbmVyLgogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9j
c3MtdGV4dC0zLyNsZXR0ZXItc3BhY2luZy1wcm9wZXJ0eSBTZWUgZXhhbXBsZSAyMS4KQEAgLTQ3
Niw3ICs0NzYsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmRUZXh0Q29udGVudChjb25zdCBJ
bmxpbmVUZXh0SXRlbSYgaW5saW5lVGV4dEl0ZW0sIElubGluZQogICAgIGlmIChpbmxpbmVUZXh0
SXRlbU5lZWRzTmV3UnVuKQogICAgICAgICBtX3J1bnMuYXBwZW5kKHsgaW5saW5lVGV4dEl0ZW0s
IGNvbnRlbnRMb2dpY2FsV2lkdGgoKSwgbG9naWNhbFdpZHRoIH0pOwogCi0gICAgbV9saW5lQm94
LmV4cGFuZEhvcml6b250YWxseShsb2dpY2FsV2lkdGgpOworICAgIG1fbG9naWNhbExpbmVCb3gu
ZXhwYW5kSG9yaXpvbnRhbGx5KGxvZ2ljYWxXaWR0aCk7CiAKICAgICAvLyBTZXQgdGhlIHRyYWls
aW5nIHRyaW1tYWJsZSBjb250ZW50LgogICAgIGlmIChpbmxpbmVUZXh0SXRlbS5pc1doaXRlc3Bh
Y2UoKSAmJiAhVGV4dFV0aWw6OnNob3VsZFByZXNlcnZlVHJhaWxpbmdXaGl0ZXNwYWNlKGlubGlu
ZVRleHRJdGVtLnN0eWxlKCkpKSB7CkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBMaW5lQnVpbGRl
cjo6YXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVCb3goY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRl
bSwgSW5saW4KICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2Vv
bWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKICAgICBhdXRvIGhvcml6b250YWxNYXJnaW4gPSBib3hH
ZW9tZXRyeS5ob3Jpem9udGFsTWFyZ2luKCk7CiAgICAgbV9ydW5zLmFwcGVuZCh7IGlubGluZUl0
ZW0sIGNvbnRlbnRMb2dpY2FsV2lkdGgoKSArIGhvcml6b250YWxNYXJnaW4uc3RhcnQsIGxvZ2lj
YWxXaWR0aCB9KTsKLSAgICBtX2xpbmVCb3guZXhwYW5kSG9yaXpvbnRhbGx5KGxvZ2ljYWxXaWR0
aCArIGhvcml6b250YWxNYXJnaW4uc3RhcnQgKyBob3Jpem9udGFsTWFyZ2luLmVuZCk7CisgICAg
bV9sb2dpY2FsTGluZUJveC5leHBhbmRIb3Jpem9udGFsbHkobG9naWNhbFdpZHRoICsgaG9yaXpv
bnRhbE1hcmdpbi5zdGFydCArIGhvcml6b250YWxNYXJnaW4uZW5kKTsKICAgICBtX3RyaW1tYWJs
ZVRyYWlsaW5nQ29udGVudC5yZXNldCgpOwogfQogCkBAIC01MjAsMTUgKzUyMCwxNSBAQCB2b2lk
IExpbmVCdWlsZGVyOjphcHBlbmRMaW5lQnJlYWsoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRl
bSkKIAogdm9pZCBMaW5lQnVpbGRlcjo6YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0
IFJ1biYgcnVuKQogewotICAgIGF1dG8mIGJhc2VsaW5lID0gbV9saW5lQm94LmJhc2VsaW5lKCk7
CisgICAgYXV0byYgYmFzZWxpbmUgPSBtX2xvZ2ljYWxMaW5lQm94LmJhc2VsaW5lKCk7CiAgICAg
aWYgKHJ1bi5pc1RleHQoKSB8fCBydW4uaXNMaW5lQnJlYWsoKSkgewogICAgICAgICAvLyBGb3Ig
dGV4dCBjb250ZW50IHdlIHNldCB0aGUgYmFzZWxpbmUgZWl0aGVyIHRocm91Z2ggdGhlIGluaXRp
YWwgc3RydXQgKHNldCBieSB0aGUgZm9ybWF0dGluZyBjb250ZXh0IHJvb3QpIG9yCiAgICAgICAg
IC8vIHRocm91Z2ggdGhlIGlubGluZSBjb250YWluZXIgKHN0YXJ0KSAtc2VlIGFib3ZlLiBOb3Jt
YWxseSB0aGUgdGV4dCBjb250ZW50IGl0c2VsZiBkb2VzIG5vdCBzdHJldGNoIHRoZSBsaW5lLgog
ICAgICAgICBpZiAoIW1faW5pdGlhbFN0cnV0KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBtX2xpbmVCb3guc2V0QXNjZW50SWZHcmVhdGVyKG1faW5pdGlhbFN0cnV0LT5hc2NlbnQoKSk7
Ci0gICAgICAgIG1fbGluZUJveC5zZXREZXNjZW50SWZHcmVhdGVyKG1faW5pdGlhbFN0cnV0LT5k
ZXNjZW50KCkpOwotICAgICAgICBtX2xpbmVCb3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihi
YXNlbGluZS5oZWlnaHQoKSk7CisgICAgICAgIG1fbG9naWNhbExpbmVCb3guc2V0QXNjZW50SWZH
cmVhdGVyKG1faW5pdGlhbFN0cnV0LT5hc2NlbnQoKSk7CisgICAgICAgIG1fbG9naWNhbExpbmVC
b3guc2V0RGVzY2VudElmR3JlYXRlcihtX2luaXRpYWxTdHJ1dC0+ZGVzY2VudCgpKTsKKyAgICAg
ICAgbV9sb2dpY2FsTGluZUJveC5zZXRIZWlnaHRJZkdyZWF0ZXIoYmFzZWxpbmUuaGVpZ2h0KCkp
OwogICAgICAgICBtX2luaXRpYWxTdHJ1dCA9IHsgfTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTU0MywxMiArNTQzLDEyIEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFkanVzdEJhc2VsaW5lQW5k
TGluZUhlaWdodChjb25zdCBSdW4mIHJ1bikKICAgICAgICAgICAgIGF1dG8gaGFsZkxlYWRpbmcg
PSBoYWxmTGVhZGluZ01ldHJpY3MoZm9udE1ldHJpY3MsIHN0eWxlLmNvbXB1dGVkTGluZUhlaWdo
dCgpKTsKICAgICAgICAgICAgIC8vIEJvdGggaGFsZmxlYWRpbmcgYXNjZW50IGFuZCBkZXNjZW50
IGNvdWxkIGJlIG5lZ2F0aXZlICh0YWxsIGZvbnQgdnMuIHNtYWxsIGxpbmUtaGVpZ2h0IHZhbHVl
KQogICAgICAgICAgICAgaWYgKGhhbGZMZWFkaW5nLmRlc2NlbnQoKSA+IDApCi0gICAgICAgICAg
ICAgICAgbV9saW5lQm94LnNldERlc2NlbnRJZkdyZWF0ZXIoaGFsZkxlYWRpbmcuZGVzY2VudCgp
KTsKKyAgICAgICAgICAgICAgICBtX2xvZ2ljYWxMaW5lQm94LnNldERlc2NlbnRJZkdyZWF0ZXIo
aGFsZkxlYWRpbmcuZGVzY2VudCgpKTsKICAgICAgICAgICAgIGlmIChoYWxmTGVhZGluZy5hc2Nl
bnQoKSA+IDApCi0gICAgICAgICAgICAgICAgbV9saW5lQm94LnNldEFzY2VudElmR3JlYXRlciho
YWxmTGVhZGluZy5hc2NlbnQoKSk7Ci0gICAgICAgICAgICBtX2xpbmVCb3guc2V0TG9naWNhbEhl
aWdodElmR3JlYXRlcihiYXNlbGluZS5oZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgbV9sb2dp
Y2FsTGluZUJveC5zZXRBc2NlbnRJZkdyZWF0ZXIoaGFsZkxlYWRpbmcuYXNjZW50KCkpOworICAg
ICAgICAgICAgbV9sb2dpY2FsTGluZUJveC5zZXRIZWlnaHRJZkdyZWF0ZXIoYmFzZWxpbmUuaGVp
Z2h0KCkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fbGluZUJveC5zZXRMb2dpY2Fs
SGVpZ2h0SWZHcmVhdGVyKGZvbnRNZXRyaWNzLmhlaWdodCgpKTsKKyAgICAgICAgICAgIG1fbG9n
aWNhbExpbmVCb3guc2V0SGVpZ2h0SWZHcmVhdGVyKGZvbnRNZXRyaWNzLmhlaWdodCgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTcxLDI4ICs1NzEsMjggQEAgdm9pZCBMaW5lQnVp
bGRlcjo6YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IFJ1biYgcnVuKQogICAgICAg
ICAgICAgICAgIGF1dG8gaW5saW5lQmxvY2tCYXNlbGluZSA9IGxhc3RMaW5lQm94LmJhc2VsaW5l
KCk7CiAgICAgICAgICAgICAgICAgYXV0byBiZWZvcmVIZWlnaHQgPSBib3hHZW9tZXRyeS5tYXJn
aW5CZWZvcmUoKSArIGJveEdlb21ldHJ5LmJvcmRlclRvcCgpICsgYm94R2VvbWV0cnkucGFkZGlu
Z1RvcCgpLnZhbHVlT3IoMCk7CiAKLSAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0QXNjZW50
SWZHcmVhdGVyKGlubGluZUJsb2NrQmFzZWxpbmUuYXNjZW50KCkpOwotICAgICAgICAgICAgICAg
IG1fbGluZUJveC5zZXREZXNjZW50SWZHcmVhdGVyKGlubGluZUJsb2NrQmFzZWxpbmUuZGVzY2Vu
dCgpKTsKLSAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0
ZXIoYmVmb3JlSGVpZ2h0ICsgbGFzdExpbmVCb3guYmFzZWxpbmVPZmZzZXQoKSk7Ci0gICAgICAg
ICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIobWFyZ2luQm94SGVp
Z2h0KTsKKyAgICAgICAgICAgICAgICBtX2xvZ2ljYWxMaW5lQm94LnNldEFzY2VudElmR3JlYXRl
cihpbmxpbmVCbG9ja0Jhc2VsaW5lLmFzY2VudCgpKTsKKyAgICAgICAgICAgICAgICBtX2xvZ2lj
YWxMaW5lQm94LnNldERlc2NlbnRJZkdyZWF0ZXIoaW5saW5lQmxvY2tCYXNlbGluZS5kZXNjZW50
KCkpOworICAgICAgICAgICAgICAgIG1fbG9naWNhbExpbmVCb3guc2V0QmFzZWxpbmVPZmZzZXRJ
ZkdyZWF0ZXIoYmVmb3JlSGVpZ2h0ICsgbGFzdExpbmVCb3guYmFzZWxpbmVPZmZzZXQoKSk7Cisg
ICAgICAgICAgICAgICAgbV9sb2dpY2FsTGluZUJveC5zZXRIZWlnaHRJZkdyZWF0ZXIobWFyZ2lu
Qm94SGVpZ2h0KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gTm9u
IGlubGluZS1ibG9jayBib3hlcyBzaXQgb24gdGhlIGJhc2VsaW5lIChpbmNsdWRpbmcgdGhlaXIg
Ym90dG9tIG1hcmdpbikuCi0gICAgICAgICAgICAgICAgbV9saW5lQm94LnNldEFzY2VudElmR3Jl
YXRlcihtYXJnaW5Cb3hIZWlnaHQpOworICAgICAgICAgICAgICAgIG1fbG9naWNhbExpbmVCb3gu
c2V0QXNjZW50SWZHcmVhdGVyKG1hcmdpbkJveEhlaWdodCk7CiAgICAgICAgICAgICAgICAgLy8g
SWdub3JlIG5lZ2F0aXZlIGRlc2NlbnQgKHllcywgbmVnYXRpdmUgZGVzY2VudCBpcyBhIHRoaW5n
KS4KLSAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRlciht
YXJnaW5Cb3hIZWlnaHQgKyBzdGQ6Om1heDxJbmxpbmVMYXlvdXRVbml0PigwLCBiYXNlbGluZS5k
ZXNjZW50KCkpKTsKKyAgICAgICAgICAgICAgICBtX2xvZ2ljYWxMaW5lQm94LnNldEhlaWdodElm
R3JlYXRlcihtYXJnaW5Cb3hIZWlnaHQgKyBzdGQ6Om1heDxJbmxpbmVMYXlvdXRVbml0PigwLCBi
YXNlbGluZS5kZXNjZW50KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VG9wOgogICAgICAgICAgICAg
Ly8gVG9wIGFsaWduIGNvbnRlbnQgbmV2ZXIgY2hhbmdlcyB0aGUgYmFzZWxpbmUsIGl0IG9ubHkg
cHVzaGVzIHRoZSBib3R0b20gb2YgdGhlIGxpbmUgZnVydGhlciBkb3duLgotICAgICAgICAgICAg
bV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIobWFyZ2luQm94SGVpZ2h0KTsKKyAg
ICAgICAgICAgIG1fbG9naWNhbExpbmVCb3guc2V0SGVpZ2h0SWZHcmVhdGVyKG1hcmdpbkJveEhl
aWdodCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpC
b3R0b206IHsKICAgICAgICAgICAgIC8vIEJvdHRvbSBhbGlnbmVkLCB0YWxsIGNvbnRlbnQgcHVz
aGVzIHRoZSBiYXNlbGluZSBmdXJ0aGVyIGRvd24gZnJvbSB0aGUgbGluZSB0b3AuCi0gICAgICAg
ICAgICBhdXRvIGxpbmVMb2dpY2FsSGVpZ2h0ID0gbV9saW5lQm94LmxvZ2ljYWxIZWlnaHQoKTsK
KyAgICAgICAgICAgIGF1dG8gbGluZUxvZ2ljYWxIZWlnaHQgPSBtX2xvZ2ljYWxMaW5lQm94Lmhl
aWdodCgpOwogICAgICAgICAgICAgaWYgKG1hcmdpbkJveEhlaWdodCA+IGxpbmVMb2dpY2FsSGVp
Z2h0KSB7Ci0gICAgICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0
ZXIobWFyZ2luQm94SGVpZ2h0KTsKLSAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0QmFzZWxp
bmVPZmZzZXRJZkdyZWF0ZXIobV9saW5lQm94LmJhc2VsaW5lT2Zmc2V0KCkgKyAobWFyZ2luQm94
SGVpZ2h0IC0gbGluZUxvZ2ljYWxIZWlnaHQpKTsKKyAgICAgICAgICAgICAgICBtX2xvZ2ljYWxM
aW5lQm94LnNldEhlaWdodElmR3JlYXRlcihtYXJnaW5Cb3hIZWlnaHQpOworICAgICAgICAgICAg
ICAgIG1fbG9naWNhbExpbmVCb3guc2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIobV9sb2dpY2Fs
TGluZUJveC5iYXNlbGluZU9mZnNldCgpICsgKG1hcmdpbkJveEhlaWdodCAtIGxpbmVMb2dpY2Fs
SGVpZ2h0KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmVCdWlsZGVyLmgKaW5kZXggNGQ1YzI1MGQ4ZjRhNTZhYTk0NTA5OThmNjRmMjMxODNh
NDMxNjhmZC4uZTU0ZWIyYmFjMDdkZDZiYTNmZDM0NjMyODNkNGY0ZjljODA3MTdhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1
aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lQnVpbGRlci5oCkBAIC02MiwxNCArNjIsMTQgQEAgcHVibGljOgogICAgIHZvaWQgaW5p
dGlhbGl6ZShjb25zdCBDb25zdHJhaW50cyYpOwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IElubGlu
ZUl0ZW0mLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7CiAgICAgdm9pZCByZXNldENv
bnRlbnQoKTsKLSAgICBib29sIGlzVmlzdWFsbHlFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fbGlu
ZUJveC5pc0NvbnNpZGVyZWRFbXB0eSgpOyB9CisgICAgYm9vbCBpc1Zpc3VhbGx5RW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX2xvZ2ljYWxMaW5lQm94LmlzQ29uc2lkZXJlZEVtcHR5KCk7IH0KICAg
ICBib29sIGhhc0ludHJ1c2l2ZUZsb2F0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNJbnRydXNpdmVG
bG9hdDsgfQogICAgIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBsb2dpY2FsV2lkdGgoKSAtIGNvbnRlbnRMb2dpY2FsV2lkdGgoKTsgfQogCiAgICAgSW5s
aW5lTGF5b3V0VW5pdCB0cmltbWFibGVUcmFpbGluZ1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV90
cmltbWFibGVUcmFpbGluZ0NvbnRlbnQud2lkdGgoKTsgfQogICAgIGJvb2wgaXNUcmFpbGluZ1J1
bkZ1bGx5VHJpbW1hYmxlKCkgY29uc3QgeyByZXR1cm4gbV90cmltbWFibGVUcmFpbGluZ0NvbnRl
bnQuaXNUcmFpbGluZ1J1bkZ1bGx5VHJpbW1hYmxlKCk7IH0KIAotICAgIGNvbnN0IERpc3BsYXk6
OkxpbmVCb3gmIGxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3g7IH0KKyAgICBjb25z
dCBEaXNwbGF5OjpMaW5lQm94JiBsb2dpY2FsTGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9n
aWNhbExpbmVCb3g7IH0KICAgICB2b2lkIG1vdmVMb2dpY2FsTGVmdChJbmxpbmVMYXlvdXRVbml0
KTsKICAgICB2b2lkIG1vdmVMb2dpY2FsUmlnaHQoSW5saW5lTGF5b3V0VW5pdCk7CiAgICAgdm9p
ZCBzZXRIYXNJbnRydXNpdmVGbG9hdCgpIHsgbV9oYXNJbnRydXNpdmVGbG9hdCA9IHRydWU7IH0K
QEAgLTE0NiwxOCArMTQ2LDE4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRGlzcGxheTo6TGluZUJv
eDo6QmFzZWxpbmUgaGFsZkxlYWRpbmdNZXRyaWNzKGNvbnN0IEZvbnRNZXRyaWNzJiwgSW5saW5l
TGF5b3V0VW5pdCBsaW5lTG9naWNhbEhlaWdodCk7CiAKIHByaXZhdGU6Ci0gICAgSW5saW5lTGF5
b3V0VW5pdCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94LmxvZ2ljYWxUb3Ao
KTsgfQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJu
IG1fbGluZUJveC5sb2dpY2FsQm90dG9tKCk7IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxUb3AoKSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxMaW5lQm94LnRvcCgpOyB9CisgICAgSW5s
aW5lTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsTGlu
ZUJveC5ib3R0b20oKTsgfQogCi0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGluZUJveC5sb2dpY2FsTGVmdCgpOyB9CisgICAgSW5saW5lTGF5b3V0
VW5pdCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbExpbmVCb3gubGVmdCgp
OyB9CiAgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBs
b2dpY2FsTGVmdCgpICsgbG9naWNhbFdpZHRoKCk7IH0KIAogICAgIElubGluZUxheW91dFVuaXQg
bG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTG9naWNhbFdpZHRoOyB9Ci0gICAg
SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94
LmxvZ2ljYWxIZWlnaHQoKTsgfQorICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbEhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbExpbmVCb3guaGVpZ2h0KCk7IH0KIAotICAgIElubGlu
ZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJv
eC5sb2dpY2FsV2lkdGgoKTsgfQotICAgIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxS
aWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveC5sb2dpY2FsUmlnaHQoKTsgfQotICAgIElu
bGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3gu
YmFzZWxpbmVPZmZzZXQoKTsgfQorICAgIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbExpbmVCb3gud2lkdGgoKTsgfQorICAgIElu
bGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9n
aWNhbExpbmVCb3gucmlnaHQoKTsgfQorICAgIElubGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxMaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCk7IH0K
IAogICAgIHZvaWQgYXBwZW5kTm9uQnJlYWthYmxlU3BhY2UoY29uc3QgSW5saW5lSXRlbSYsIElu
bGluZUxheW91dFVuaXQgbG9naWNhbExlZnQsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRo
KTsKICAgICB2b2lkIGFwcGVuZFRleHRDb250ZW50KGNvbnN0IElubGluZVRleHRJdGVtJiwgSW5s
aW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpOwpAQCAtMjE2LDcgKzIxNiw3IEBAIHByaXZhdGU6
CiAgICAgT3B0aW9uYWw8VGV4dEFsaWduTW9kZT4gbV9ob3Jpem9udGFsQWxpZ25tZW50OwogICAg
IGJvb2wgbV9pc0ludHJpbnNpY1NpemluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc0ludHJ1
c2l2ZUZsb2F0IHsgZmFsc2UgfTsKLSAgICBEaXNwbGF5OjpMaW5lQm94IG1fbGluZUJveDsKKyAg
ICBEaXNwbGF5OjpMaW5lQm94IG1fbG9naWNhbExpbmVCb3g7CiAgICAgT3B0aW9uYWw8Ym9vbD4g
bV9saW5lSXNWaXN1YWxseUVtcHR5QmVmb3JlVHJpbW1hYmxlVHJhaWxpbmdDb250ZW50OwogICAg
IGJvb2wgbV9zaG91bGRJZ25vcmVUcmFpbGluZ0xldHRlclNwYWNpbmcgeyBmYWxzZSB9OwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVM
YXlvdXRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0xpbmVMYXlvdXRDb250ZXh0LmNwcAppbmRleCBiY2QxMzdjNjBhZWE1Y2NhNjRhMDA5OTZiODNj
ZWRlZjRlODFhNTI4Li5iNmVhOTExODY4NDU2N2M0ZmYxYmJlZTMzZDFjNzg0MmJjYzJjN2NmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5
b3V0Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvTGluZUxheW91dENvbnRleHQuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgTGluZUxheW91dENv
bnRleHQ6OkxpbmVDb250ZW50IExpbmVMYXlvdXRDb250ZXh0OjpsYXlvdXRMaW5lKExpbmVCdWls
ZGVyJiBsaW5lLAogICAgICAgICAvLyAyLiBBcHBseSBmbG9hdHMgYW5kIHNocmluayB0aGUgYXZh
aWxhYmxlIGhvcml6b250YWwgc3BhY2UgZS5nLiA8c3Bhbj5pbnRydV88ZGl2IHN0eWxlPSJmbG9h
dDogbGVmdCI+PC9kaXY+c2l2ZV9mbG9hdDwvc3Bhbj4uCiAgICAgICAgIC8vIDMuIENoZWNrIGlm
IHRoZSBjb250ZW50IGZpdHMgdGhlIGxpbmUgYW5kIGNvbW1pdCB0aGUgY29udGVudCBhY2NvcmRp
bmdseSAoZnVsbCwgcGFydGlhbCBvciBub3QgY29tbWl0IGF0IGFsbCkuCiAgICAgICAgIC8vIDQu
IFJldHVybiBpZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSBlaXRoZXIgYnkgbm90IGJl
aW5nIGFibGUgdG8gZml0IG1vcmUgY29udGVudCBvciBiZWNhdXNlIG9mIGFuIGV4cGxpY2l0IGxp
bmUgYnJlYWsuCi0gICAgICAgIG5leHRDb250ZW50Rm9yTGluZShjYW5kaWRhdGVDb250ZW50LCBj
dXJyZW50SXRlbUluZGV4LCBsYXlvdXRSYW5nZSwgcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3Ro
LCBsaW5lLmxpbmVCb3goKS5sb2dpY2FsV2lkdGgoKSk7CisgICAgICAgIG5leHRDb250ZW50Rm9y
TGluZShjYW5kaWRhdGVDb250ZW50LCBjdXJyZW50SXRlbUluZGV4LCBsYXlvdXRSYW5nZSwgcGFy
dGlhbExlYWRpbmdDb250ZW50TGVuZ3RoLCBsaW5lLmxvZ2ljYWxMaW5lQm94KCkud2lkdGgoKSk7
CiAgICAgICAgIGlmIChjYW5kaWRhdGVDb250ZW50Lmhhc0ludHJ1c2l2ZUZsb2F0cygpKSB7CiAg
ICAgICAgICAgICAvLyBBZGQgZmxvYXRzIGZpcnN0IGJlY2F1c2UgdGhleSBzaHJpbmsgdGhlIGF2
YWlsYWJsZSBob3Jpem9udGFsIHNwYWNlIGZvciB0aGUgcmVzdCBvZiB0aGUgY29udGVudC4KICAg
ICAgICAgICAgIGF1dG8gcmVzdWx0ID0gdHJ5QWRkaW5nRmxvYXRJdGVtcyhsaW5lLCBjYW5kaWRh
dGVDb250ZW50LmZsb2F0cygpKTsKQEAgLTMwOCw3ICszMDgsNyBAQCBMaW5lTGF5b3V0Q29udGV4
dDo6TGluZUNvbnRlbnQgTGluZUxheW91dENvbnRleHQ6OmNsb3NlKExpbmVCdWlsZGVyJiBsaW5l
LCBjb25zdAogewogICAgIEFTU0VSVChjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQgfHwgbGluZS5o
YXNJbnRydXNpdmVGbG9hdCgpKTsKICAgICBpZiAoIWNvbW1pdHRlZElubGluZUl0ZW1Db3VudCkK
LSAgICAgICAgcmV0dXJuIExpbmVDb250ZW50IHsgeyB9LCB7IH0sIFdURk1vdmUobV9mbG9hdHMp
LCBsaW5lLmNsb3NlKCksIGxpbmUubGluZUJveCgpIH07CisgICAgICAgIHJldHVybiBMaW5lQ29u
dGVudCB7IHsgfSwgeyB9LCBXVEZNb3ZlKG1fZmxvYXRzKSwgbGluZS5jbG9zZSgpLCBsaW5lLmxv
Z2ljYWxMaW5lQm94KCkgfTsKIAogICAgIC8vIEFkanVzdCBoeXBoZW5hdGVkIGxpbmUgY291bnQu
CiAgICAgaWYgKHBhcnRpYWxDb250ZW50ICYmIHBhcnRpYWxDb250ZW50LT50cmFpbGluZ0NvbnRl
bnROZWVkc0h5cGhlbikKQEAgLTMzMiw3ICszMzIsNyBAQCBMaW5lTGF5b3V0Q29udGV4dDo6TGlu
ZUNvbnRlbnQgTGluZUxheW91dENvbnRleHQ6OmNsb3NlKExpbmVCdWlsZGVyJiBsaW5lLCBjb25z
dAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIExpbmVCdWls
ZGVyOjpJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQ6Ok5vOwogICAgIH0oKTsKLSAgICByZXR1
cm4gTGluZUNvbnRlbnQgeyB0cmFpbGluZ0lubGluZUl0ZW1JbmRleCwgcGFydGlhbENvbnRlbnQs
IFdURk1vdmUobV9mbG9hdHMpLCBsaW5lLmNsb3NlKGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVu
dCksIGxpbmUubGluZUJveCgpIH07CisgICAgcmV0dXJuIExpbmVDb250ZW50IHsgdHJhaWxpbmdJ
bmxpbmVJdGVtSW5kZXgsIHBhcnRpYWxDb250ZW50LCBXVEZNb3ZlKG1fZmxvYXRzKSwgbGluZS5j
bG9zZShpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpLCBsaW5lLmxvZ2ljYWxMaW5lQm94KCkg
fTsKIH0KIAogdm9pZCBMaW5lTGF5b3V0Q29udGV4dDo6bmV4dENvbnRlbnRGb3JMaW5lKExpbmVD
YW5kaWRhdGVDb250ZW50JiBjYW5kaWRhdGVDb250ZW50LCB1bnNpZ25lZCBjdXJyZW50SW5saW5l
SXRlbUluZGV4LCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UgbGF5b3V0UmFuZ2UsIE9wdGlvbmFsPHVu
c2lnbmVkPiBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgsIElubGluZUxheW91dFVuaXQgY3Vy
cmVudExvZ2ljYWxSaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oCmluZGV4IDlmMGVkZDhiMmZkNGM0
MTJkNmQ5ZGIzYzc1N2RlZTk1Y2JlZjcxZjguLmY3OTUwODQ3NGUyZGQ1ODY5YzgzYmZkZDM0NmM3
MzE1MmRmZjU1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJs
aWM6CiAgICAgICAgIE9wdGlvbmFsPFBhcnRpYWxDb250ZW50PiBwYXJ0aWFsQ29udGVudDsKICAg
ICAgICAgVmVjdG9yPGNvbnN0IElubGluZUl0ZW0qPiBmbG9hdHM7CiAgICAgICAgIGNvbnN0IExp
bmVCdWlsZGVyOjpSdW5MaXN0IHJ1bkxpc3Q7Ci0gICAgICAgIGNvbnN0IERpc3BsYXk6OkxpbmVC
b3ggbGluZUJveDsKKyAgICAgICAgY29uc3QgRGlzcGxheTo6TGluZUJveCBsb2dpY2FsTGluZUJv
eDsKICAgICB9OwogICAgIHN0cnVjdCBJbmxpbmVJdGVtUmFuZ2UgewogICAgICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBzdGFydCA9PSBlbmQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHAKaW5kZXggMjM4ODY5YzZkNjI0MDgyMDRjZjFhMTk4YjllMjBkNzc5ODRm
ZTQ1ZC4uNTc4ZDRkZDA4ODA3OWM5NGRlN2M2ZmQzNjI1ZjM2NTVjYjliN2FhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGlu
ZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIExpbmVM
YXlvdXQ6OmxheW91dCgpCiBMYXlvdXRVbml0IExpbmVMYXlvdXQ6OmNvbnRlbnRMb2dpY2FsSGVp
Z2h0KCkgY29uc3QKIHsKICAgICBhdXRvJiBsaW5lQm94ZXMgPSBkaXNwbGF5SW5saW5lQ29udGVu
dCgpLT5saW5lQm94ZXM7Ci0gICAgcmV0dXJuIExheW91dFVuaXQgeyBsaW5lQm94ZXMubGFzdCgp
LmxvZ2ljYWxCb3R0b20oKSAtIGxpbmVCb3hlcy5maXJzdCgpLmxvZ2ljYWxUb3AoKSB9OworICAg
IHJldHVybiBMYXlvdXRVbml0IHsgbGluZUJveGVzLmxhc3QoKS5ib3R0b20oKSAtIGxpbmVCb3hl
cy5maXJzdCgpLnRvcCgpIH07CiB9CiAKIHNpemVfdCBMaW5lTGF5b3V0OjpsaW5lQ291bnQoKSBj
b25zdApAQCAtMTM3LDcgKzEzNyw3IEBAIExheW91dFVuaXQgTGluZUxheW91dDo6Zmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdAogICAgIH0KIAogICAgIGF1dG8mIGZpcnN0TGluZUJveCA9IGlubGlu
ZUNvbnRlbnQtPmxpbmVCb3hlcy5maXJzdCgpOwotICAgIHJldHVybiBMYXlvdXQ6OnRvTGF5b3V0
VW5pdChmaXJzdExpbmVCb3gubG9naWNhbFRvcCgpICsgZmlyc3RMaW5lQm94LmJhc2VsaW5lT2Zm
c2V0KCkpOworICAgIHJldHVybiBMYXlvdXQ6OnRvTGF5b3V0VW5pdChmaXJzdExpbmVCb3gudG9w
KCkgKyBmaXJzdExpbmVCb3guYmFzZWxpbmVPZmZzZXQoKSk7CiB9CiAKIExheW91dFVuaXQgTGlu
ZUxheW91dDo6bGFzdExpbmVCYXNlbGluZSgpIGNvbnN0CkBAIC0xNDksNyArMTQ5LDcgQEAgTGF5
b3V0VW5pdCBMaW5lTGF5b3V0OjpsYXN0TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICB9CiAKICAg
ICBhdXRvJiBsYXN0TGluZUJveCA9IGlubGluZUNvbnRlbnQtPmxpbmVCb3hlcy5sYXN0KCk7Ci0g
ICAgcmV0dXJuIExheW91dDo6dG9MYXlvdXRVbml0KGxhc3RMaW5lQm94LmxvZ2ljYWxUb3AoKSAr
IGxhc3RMaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCkpOworICAgIHJldHVybiBMYXlvdXQ6OnRvTGF5
b3V0VW5pdChsYXN0TGluZUJveC50b3AoKSArIGxhc3RMaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCkp
OwogfQogCiB2b2lkIExpbmVMYXlvdXQ6OmNvbGxlY3RPdmVyZmxvdyhSZW5kZXJCbG9ja0Zsb3cm
IGZsb3cpCkBAIC0yNTgsNyArMjU4LDcgQEAgdm9pZCBMaW5lTGF5b3V0OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgICAgICB9
CiAKICAgICAgICAgYXV0byYgbGluZUJveCA9IGlubGluZUNvbnRlbnQubGluZUJveEZvclJ1bihy
dW4pOwotICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0ID0gcGFpbnRPZmZzZXQueSgpICsgbGlu
ZUJveC5sb2dpY2FsVG9wKCkgKyBsaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCk7CisgICAgICAgIGF1
dG8gYmFzZWxpbmVPZmZzZXQgPSBwYWludE9mZnNldC55KCkgKyBsaW5lQm94LnRvcCgpICsgbGlu
ZUJveC5iYXNlbGluZU9mZnNldCgpOwogCiAgICAgICAgIGF1dG8gYmVoYXZpb3IgPSB0ZXh0Q29u
dGV4dC5leHBhbnNpb24oKSA/IHRleHRDb250ZXh0LmV4cGFuc2lvbigpLT5iZWhhdmlvciA6IERl
ZmF1bHRFeHBhbnNpb247CiAgICAgICAgIGF1dG8gaG9yaXpvbnRhbEV4cGFuc2lvbiA9IHRleHRD
b250ZXh0LmV4cGFuc2lvbigpID8gdGV4dENvbnRleHQuZXhwYW5zaW9uKCktPmhvcml6b250YWxF
eHBhbnNpb24gOiAwOwpAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAg
ICAgICAgU3RyaW5nIHRleHRXaXRoSHlwaGVuOwogICAgICAgICBpZiAodGV4dENvbnRleHQubmVl
ZHNIeXBoZW4oKSkKICAgICAgICAgICAgIHRleHRXaXRoSHlwaGVuID0gbWFrZVN0cmluZyh0ZXh0
Q29udGV4dC5jb250ZW50KCksIHN0eWxlLmh5cGhlblN0cmluZygpKTsKLSAgICAgICAgVGV4dFJ1
biB0ZXh0UnVuIHsgIXRleHRXaXRoSHlwaGVuLmlzRW1wdHkoKSA/IHRleHRXaXRoSHlwaGVuIDog
dGV4dENvbnRleHQuY29udGVudCgpLCBydW4ubGVmdCgpIC0gbGluZUJveC5sb2dpY2FsTGVmdCgp
LCBob3Jpem9udGFsRXhwYW5zaW9uLCBiZWhhdmlvciB9OworICAgICAgICBUZXh0UnVuIHRleHRS
dW4geyAhdGV4dFdpdGhIeXBoZW4uaXNFbXB0eSgpID8gdGV4dFdpdGhIeXBoZW4gOiB0ZXh0Q29u
dGV4dC5jb250ZW50KCksIHJ1bi5sZWZ0KCkgLSBsaW5lQm94LmxlZnQoKSwgaG9yaXpvbnRhbEV4
cGFuc2lvbiwgYmVoYXZpb3IgfTsKICAgICAgICAgdGV4dFJ1bi5zZXRUYWJTaXplKCFzdHlsZS5j
b2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsKICAgICAgICAgRmxvYXRQb2lu
dCB0ZXh0T3JpZ2luIHsgcmVjdC54KCkgKyBwYWludE9mZnNldC54KCksIHJvdW5kVG9EZXZpY2VQ
aXhlbChiYXNlbGluZU9mZnNldCwgZGV2aWNlU2NhbGVGYWN0b3IpIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApp
bmRleCAyZmJiYjljNDQ0NmEwZmRiYjkyN2JkZTAyOTdiOTM5MDAxYzMyZmY0Li5jMTQ2MjJlOTBj
MzlmNzQzMjQwOTFiMWVjZDY4MWZkNjkxOWI0NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC0zMzAsNyAr
MzMwLDcgQEAgc3RhdGljIHZvaWQgb3V0cHV0SW5saW5lUnVucyhUZXh0U3RyZWFtJiBzdHJlYW0s
IGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwKIAogICAgIHN0cmVhbSA8PCAibGluZXMg
YXJlIC0+ICI7CiAgICAgZm9yIChhdXRvJiBsaW5lQm94IDogbGluZUJveGVzKQotICAgICAgICBz
dHJlYW0gPDwgIlsiIDw8IGxpbmVCb3gubG9naWNhbExlZnQoKSA8PCAiLCIgPDwgbGluZUJveC5s
b2dpY2FsVG9wKCkgPDwgIiAiIDw8IGxpbmVCb3gubG9naWNhbFdpZHRoKCkgPDwgIngiIDw8IGxp
bmVCb3gubG9naWNhbEhlaWdodCgpIDw8ICJdICI7CisgICAgICAgIHN0cmVhbSA8PCAiWyIgPDwg
bGluZUJveC5sZWZ0KCkgPDwgIiwiIDw8IGxpbmVCb3gudG9wKCkgPDwgIiAiIDw8IGxpbmVCb3gu
d2lkdGgoKSA8PCAieCIgPDwgbGluZUJveC5oZWlnaHQoKSA8PCAiXSAiOwogICAgIHN0cmVhbS5u
ZXh0TGluZSgpOwogCiAgICAgZm9yIChhdXRvJiBkaXNwbGF5UnVuIDogZGlzcGxheVJ1bnMpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>