<?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>199898</bug_id>
          
          <creation_ts>2019-07-17 20:44:03 -0700</creation_ts>
          <short_desc>[LFC][IFC] InlineFormattingContext::LineLayout::placeInlineItems is getting too complex</short_desc>
          <delta_ts>2019-07-18 06:37: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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1553827</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-07-17 20:44:03 -0700</bug_when>
    <thetext>Let&apos;s scope it using class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553828</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-17 20:44:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/53235958&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553829</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-17 20:53:54 -0700</bug_when>
    <thetext>&lt;rdar://problem/53236146&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553830</commentid>
    <comment_count>3</comment_count>
      <attachid>374366</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-07-17 21:00:55 -0700</bug_when>
    <thetext>Created attachment 374366
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553892</commentid>
    <comment_count>4</comment_count>
      <attachid>374366</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-18 06:37:12 -0700</bug_when>
    <thetext>Comment on attachment 374366
Patch

Clearing flags on attachment: 374366

Committed r247562: &lt;https://trac.webkit.org/changeset/247562&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553893</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-18 06:37:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374366</attachid>
            <date>2019-07-17 21:00:55 -0700</date>
            <delta_ts>2019-07-18 06:37:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199898-20190717210053.patch</filename>
            <type>text/plain</type>
            <size>27442</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3NDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2QyMjVmZGFkMGQxMTQ5
Mzg3YjFhODRiOGJiZjViNDJmY2IwYjNkNC4uMmJiZDlhYWI3OGQ5YTc2Nzc4YTZkNDlmNzI5M2Jh
MTA5YjFmY2VlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE5LTA3LTE3ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6TGluZUxheW91dDo6cGxhY2VJbmxpbmVJdGVtcyBpcyBnZXR0aW5n
IHRvbyBjb21wbGV4LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk5ODk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzIzNTk1OD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCdzIHRpbWUgdG8gcmVz
dHJ1Y3R1cmUgTGluZUxheW91dDo6cGxhY2VJbmxpbmVJdGVtcyB0byBiZSBhYmxlIHRvIGV4cGFu
ZCBpdCBmdXJ0aGVyLgorICAgICAgICBJbnRyb2R1Y2UgdGhlIExpbmVMYXlvdXQgY2xhc3MuIFRo
aXMgY2xhc3MgaXMgcmVzcG9uc2libGUgdG8gcGxhY2UgdGhlIGlubGluZSBpdGVtcyBvbiB0aGUg
Y3VycmVudCBsaW5lLgorICAgICAgICAoUmVuYW1lIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojps
aW5lTGF5b3V0IC0+IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVMYXlvdXQgYW5kCisg
ICAgICAgIHVzZSBMaW5lOjpJbml0aWFsQ29uc3RyYWludHMgaW4gTGluZUlucHV0KQorCisgICAg
ICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5
b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNvbnN0KToKKyAgICAgICAg
KiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZUxheW91
dDo6bGF5b3V0U3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OmlubGluZUl0ZW1XaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVMYXlvdXQ6OmxheW91dFN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGluZUxheW91dDo6VW5jb21taXR0ZWRDb250ZW50OjpydW5zKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUxheW91dDo6VW5jb21taXR0ZWRDb250ZW50Ojppc0VtcHR5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUxheW91dDo6VW5jb21taXR0
ZWRDb250ZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUxh
eW91dDo6VW5jb21taXR0ZWRDb250ZW50Ojp3aWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVMYXlvdXQ6OlVuY29tbWl0dGVkQ29udGVudDo6YWRkKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUxheW91dDo6VW5jb21taXR0ZWRDb250ZW50OjpyZXNldCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXQ6OkxpbmVMYXlvdXQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5b3V0Ojpjb21taXRQZW5kaW5nQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXQ6OmNsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUxheW91dDo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGluZUlucHV0OjpMaW5lSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpJbmxpbmVMYXlvdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5l
TGF5b3V0OjpsYXlvdXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjphbGlnblJ1
bnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpVbmNvbW1pdHRlZENvbnRlbnQ6
OnJ1bnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpVbmNvbW1pdHRlZENv
bnRlbnQ6OmlzRW1wdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpVbmNvbW1pdHRlZENvbnRlbnQ6OnNpemUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpVbmNvbW1pdHRlZENvbnRlbnQ6OndpZHRoIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VW5jb21taXR0ZWRDb250ZW50OjphZGQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpVbmNvbW1pdHRlZENvbnRlbnQ6OnJlc2V0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUlucHV0OjpIb3Jpem9u
dGFsQ29uc3RyYWludDo6SG9yaXpvbnRhbENvbnN0cmFpbnQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZUxheW91dDo6TGlu
ZUxheW91dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1h
dHRpbmdDb250ZXh0OjpMaW5lTGF5b3V0OjpwbGFjZUlubGluZUl0ZW1zIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okxp
bmVMYXlvdXQ6OmxheW91dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lTGF5b3V0Ojpjb21wdXRlZEludHJpbnNp
Y1dpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OkxpbmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OkxpbmVMYXlvdXQ6OmFsaWduUnVucyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmU6OkxpbmUpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmUuaDoKKwogMjAxOS0wNy0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIENoYW5nZSBSRUxFQVNFX0FTU0VSVCBpbiBEb2N1bWVu
dFdyaXRlcjo6YWRkRGF0YSB0byBBU1NFUlQgYW5kIGVhcmx5IHJldHVybgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGY2NzEwZjk0NTAwMDRiM2U4YTdmODg2MWE2ODQw
M2E1Y2VhMDJlMDAuLjQ2YzlmYWNmYWVmMDQ2MDgyNWQ3NDU5NTZjNDUwYzA2YzI2NzZmZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9p
ZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KCkgY29uc3QKICAgICBmb3JtYXR0aW5n
U3RhdGUoKS5pbmxpbmVSdW5zKCkuY2xlYXIoKTsKIAogICAgIGNvbGxlY3RJbmxpbmVDb250ZW50
KCk7Ci0gICAgTGluZUxheW91dCgqdGhpcykubGF5b3V0KGZvcm1hdHRpbmdTdGF0ZSgpLmlubGlu
ZUl0ZW1zKCksIGF2YWlsYWJsZVdpZHRoKTsKKyAgICBJbmxpbmVMYXlvdXQoKnRoaXMpLmxheW91
dChmb3JtYXR0aW5nU3RhdGUoKS5pbmxpbmVJdGVtcygpLCBhdmFpbGFibGVXaWR0aCk7CiAgICAg
TE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltFbmRd
IC0+IGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQgLT4gZm9ybWF0dGluZyByb290KCIgPDwgJnJv
b3QgPDwgIikiKTsKIH0KIApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbXB1dGVJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgY29uc3QKICAgICAg
ICAgICAgIGF1dG8gaW50cmluc2ljV2lkdGhzID0gbGF5b3V0U3RhdGUuZm9ybWF0dGluZ1N0YXRl
Rm9yQm94KCpmb3JtYXR0aW5nUm9vdCkuaW50cmluc2ljV2lkdGhDb25zdHJhaW50cygqZm9ybWF0
dGluZ1Jvb3QpOwogICAgICAgICAgICAgbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJv
eCgqZm9ybWF0dGluZ1Jvb3QpLnNldENvbnRlbnRCb3hXaWR0aChhdmFpbGFibGVXaWR0aCA/IGlu
dHJpbnNpY1dpZHRocy0+bWF4aW11bSA6IGludHJpbnNpY1dpZHRocy0+bWluaW11bSk7CiAgICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIExpbmVMYXlvdXQoKnRoaXMpLmNvbXB1dGVkSW50cmluc2lj
V2lkdGgoZm9ybWF0dGluZ1N0YXRlKCkuaW5saW5lSXRlbXMoKSwgYXZhaWxhYmxlV2lkdGgpOwor
ICAgICAgICByZXR1cm4gSW5saW5lTGF5b3V0KCp0aGlzKS5jb21wdXRlZEludHJpbnNpY1dpZHRo
KGZvcm1hdHRpbmdTdGF0ZSgpLmlubGluZUl0ZW1zKCksIGF2YWlsYWJsZVdpZHRoKTsKICAgICB9
OwogCiAgICAgYXV0byBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzID0gR2VvbWV0cnk6OmNvbnN0
cmFpbkJ5TWluTWF4V2lkdGgocm9vdCwgeyBtYXhpbXVtTGluZVdpZHRoKDApLCBtYXhpbXVtTGlu
ZVdpZHRoKExheW91dFVuaXQ6Om1heCgpKSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5oCmluZGV4IGQ0NDc3YjA0ZTA0ODg5NDlmYmQ3ZjQ5ZGMxODgzOTUzZDg5MzJmNDIuLmJlNmY5
MTVmYzkyNGExMGQ0ODdlNTFkNGQ3ZDhlOGUzY2Y1MDdkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuaApAQCAtNTIsOSArNTIsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZv
aWQgY29tcHV0ZUludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIGNsYXNzIExpbmVMYXlvdXQgeworICAgIGNsYXNzIElubGluZUxheW91dCB7CiAgICAgcHVi
bGljOgotICAgICAgICBMaW5lTGF5b3V0KGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7
CisgICAgICAgIElubGluZUxheW91dChjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYpOwog
ICAgICAgICB2b2lkIGxheW91dChjb25zdCBJbmxpbmVJdGVtcyYsIExheW91dFVuaXQgd2lkdGhD
b25zdHJhaW50KSBjb25zdDsKICAgICAgICAgTGF5b3V0VW5pdCBjb21wdXRlZEludHJpbnNpY1dp
ZHRoKGNvbnN0IElubGluZUl0ZW1zJiwgTGF5b3V0VW5pdCB3aWR0aENvbnN0cmFpbnQpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNw
cAppbmRleCA4ZTI1MDU3N2I0NGJlMjIyODI4NDllNWUyMDY1MGRkZTY4NjMxMzNmLi5jNDBhZTQ5
NjBiYzFkMTA0ZWI1YmEwZWQ0ZGFmYmI3NzU5MGE5ODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVM
YXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAKQEAgLTQxLDIwICs0MSw0NiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKK3N0YXRpYyBMYXlvdXRV
bml0IGlubGluZUl0ZW1XaWR0aChjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0
IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0KQor
eworICAgIGlmIChpbmxpbmVJdGVtLmlzTGluZUJyZWFrKCkpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgaWYgKGlzPElubGluZVRleHRJdGVtPihpbmxpbmVJdGVtKSkgeworICAgICAgICBhdXRv
JiBpbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihpbmxpbmVJdGVtKTsK
KyAgICAgICAgYXV0byBlbmQgPSBpbmxpbmVUZXh0SXRlbS5pc0NvbGxhcHNlZCgpID8gaW5saW5l
VGV4dEl0ZW0uc3RhcnQoKSArIDEgOiBpbmxpbmVUZXh0SXRlbS5lbmQoKTsKKyAgICAgICAgcmV0
dXJuIFRleHRVdGlsOjp3aWR0aChkb3duY2FzdDxJbmxpbmVCb3g+KGlubGluZVRleHRJdGVtLmxh
eW91dEJveCgpKSwgaW5saW5lVGV4dEl0ZW0uc3RhcnQoKSwgZW5kLCBjb250ZW50TG9naWNhbExl
ZnQpOworICAgIH0KKworICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUl0ZW0ubGF5b3V0Qm94
KCk7CisgICAgQVNTRVJUKGxheW91dFN0YXRlLmhhc0Rpc3BsYXlCb3gobGF5b3V0Qm94KSk7Cisg
ICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
bGF5b3V0Qm94KTsKKworICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkK
KyAgICAgICAgcmV0dXJuIGRpc3BsYXlCb3gubWFyZ2luQm94V2lkdGgoKTsKKworICAgIGlmIChs
YXlvdXRCb3guaXNSZXBsYWNlZCgpKQorICAgICAgICByZXR1cm4gZGlzcGxheUJveC53aWR0aCgp
OworCisgICAgaWYgKGlubGluZUl0ZW0uaXNDb250YWluZXJTdGFydCgpKQorICAgICAgICByZXR1
cm4gZGlzcGxheUJveC5tYXJnaW5TdGFydCgpICsgZGlzcGxheUJveC5ib3JkZXJMZWZ0KCkgKyBk
aXNwbGF5Qm94LnBhZGRpbmdMZWZ0KCkudmFsdWVPcigwKTsKKworICAgIGlmIChpbmxpbmVJdGVt
LmlzQ29udGFpbmVyRW5kKCkpCisgICAgICAgIHJldHVybiBkaXNwbGF5Qm94Lm1hcmdpbkVuZCgp
ICsgZGlzcGxheUJveC5ib3JkZXJSaWdodCgpICsgZGlzcGxheUJveC5wYWRkaW5nUmlnaHQoKS52
YWx1ZU9yKDApOworCisgICAgLy8gTm9uLXJlcGxhY2VkIGlubGluZSBib3ggKGUuZy4gaW5saW5l
LWJsb2NrKQorICAgIHJldHVybiBkaXNwbGF5Qm94LndpZHRoKCk7Cit9CisKIHN0cnVjdCBJbmxp
bmVJbmRleEFuZFNwbGl0UG9zaXRpb24gewogICAgIHVuc2lnbmVkIGluZGV4IHsgMCB9OwogICAg
IE9wdGlvbmFsPHVuc2lnbmVkPiBzcGxpdFBvc2l0aW9uOwogfTsKIAogc3RydWN0IExpbmVJbnB1
dCB7Ci0gICAgTGluZUlucHV0KExheW91dFBvaW50IGxvZ2ljYWxUb3BMZWZ0LCBMYXlvdXRVbml0
IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgTGluZTo6U2tpcFZlcnRpY2FsQWxpZ21lbnQsIElubGlu
ZUluZGV4QW5kU3BsaXRQb3NpdGlvbiBmaXJzdFRvUHJvY2VzcywgY29uc3QgSW5saW5lSXRlbXMm
KTsKLSAgICBzdHJ1Y3QgSG9yaXpvbnRhbENvbnN0cmFpbnQgewotICAgICAgICBIb3Jpem9udGFs
Q29uc3RyYWludChMYXlvdXRQb2ludCBsb2dpY2FsVG9wTGVmdCwgTGF5b3V0VW5pdCBhdmFpbGFi
bGVMb2dpY2FsV2lkdGgpOworICAgIExpbmVJbnB1dChjb25zdCBMaW5lOjpJbml0aWFsQ29uc3Ry
YWludHMmIGluaXRpYWxMaW5lQ29uc3RyYWludHMsIExpbmU6OlNraXBWZXJ0aWNhbEFsaWdtZW50
LCBJbmxpbmVJbmRleEFuZFNwbGl0UG9zaXRpb24gZmlyc3RUb1Byb2Nlc3MsIGNvbnN0IElubGlu
ZUl0ZW1zJik7CiAKLSAgICAgICAgTGF5b3V0UG9pbnQgbG9naWNhbFRvcExlZnQ7Ci0gICAgICAg
IExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoOwotICAgIH07Ci0gICAgSG9yaXpvbnRh
bENvbnN0cmFpbnQgaG9yaXpvbnRhbENvbnN0cmFpbnQ7CisgICAgTGluZTo6SW5pdGlhbENvbnN0
cmFpbnRzIGluaXRpYWxDb25zdHJhaW50czsKICAgICAvLyBGSVhNRSBBbHRlcm5hdGl2ZWx5IHdl
IGNvdWxkIGp1c3QgaGF2ZSBhIHNlY29uZCBwYXNzIHdpdGggdmVydGljYWwgcG9zaXRpb25pbmcg
KHByZWZlcnJlZCB3aWR0aCBjb21wdXRhdGlvbiBvcHRzIG91dCkgCiAgICAgTGluZTo6U2tpcFZl
cnRpY2FsQWxpZ21lbnQgc2tpcFZlcnRpY2FsQWxpZ21lbnQ7CiAgICAgSW5saW5lSW5kZXhBbmRT
cGxpdFBvc2l0aW9uIGZpcnN0SW5saW5lSXRlbTsKQEAgLTY4LDE0MyArOTQsMTExIEBAIHN0cnVj
dCBMaW5lQ29udGVudCB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExpbmU6OkNvbnRlbnQ+IHJ1bnM7
CiB9OwogCi1zdHJ1Y3QgVW5jb21taXR0ZWRDb250ZW50IHsKLSAgICBzdHJ1Y3QgUnVuIHsKLSAg
ICAgICAgY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbTsKLSAgICAgICAgTGF5b3V0VW5pdCBs
b2dpY2FsV2lkdGg7Ci0gICAgICAgIC8vIEZJWE1FOiBhZGQgb3B0aW9uYWwgYnJlYWtpbmcgY29u
dGV4dCAoc3RhcnQgYW5kIGVuZCBwb3NpdGlvbikgZm9yIHNwbGl0IHRleHQgY29udGVudC4KLSAg
ICB9OwotICAgIHZvaWQgYWRkKGNvbnN0IElubGluZUl0ZW0mLCBMYXlvdXRVbml0IGxvZ2ljYWxX
aWR0aCk7Ci0gICAgdm9pZCByZXNldCgpOworY2xhc3MgTGluZUxheW91dCB7CitwdWJsaWM6Cisg
ICAgTGluZUxheW91dChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IExpbmVJbnB1dCYpOwogCi0g
ICAgVmVjdG9yPFJ1bj4gcnVucygpIHsgcmV0dXJuIG1fdW5jb21taXR0ZWRSdW5zOyB9Ci0gICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV91bmNvbW1pdHRlZFJ1bnMuaXNFbXB0eSgp
OyB9Ci0gICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5jb21taXR0ZWRSdW5z
LnNpemUoKTsgfQotICAgIExheW91dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRo
OyB9CisgICAgTGluZUNvbnRlbnQgbGF5b3V0KCk7CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPFJ1
bj4gbV91bmNvbW1pdHRlZFJ1bnM7Ci0gICAgTGF5b3V0VW5pdCBtX3dpZHRoOworICAgIGNvbnN0
IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0U3RhdGU7
IH0KKyAgICB2b2lkIGNvbW1pdFBlbmRpbmdDb250ZW50KCk7CisgICAgTGluZUNvbnRlbnQgY2xv
c2UoKTsKKyAgICAKKyAgICBzdHJ1Y3QgVW5jb21taXR0ZWRDb250ZW50IHsKKyAgICAgICAgc3Ry
dWN0IFJ1biB7CisgICAgICAgICAgICBjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtOworICAg
ICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGg7CisgICAgICAgICAgICAvLyBGSVhNRTog
YWRkIG9wdGlvbmFsIGJyZWFraW5nIGNvbnRleHQgKHN0YXJ0IGFuZCBlbmQgcG9zaXRpb24pIGZv
ciBzcGxpdCB0ZXh0IGNvbnRlbnQuCisgICAgICAgIH07CisgICAgICAgIHZvaWQgYWRkKGNvbnN0
IElubGluZUl0ZW0mLCBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7CisgICAgICAgIHZvaWQgcmVz
ZXQoKTsKKworICAgICAgICBWZWN0b3I8UnVuPiBydW5zKCkgeyByZXR1cm4gbV91bmNvbW1pdHRl
ZFJ1bnM7IH0KKyAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV91bmNvbW1p
dHRlZFJ1bnMuaXNFbXB0eSgpOyB9CisgICAgICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3VuY29tbWl0dGVkUnVucy5zaXplKCk7IH0KKyAgICAgICAgTGF5b3V0VW5pdCB3aWR0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFZl
Y3RvcjxSdW4+IG1fdW5jb21taXR0ZWRSdW5zOworICAgICAgICBMYXlvdXRVbml0IG1fd2lkdGg7
CisgICAgfTsKKworICAgIGNvbnN0IExheW91dFN0YXRlJiBtX2xheW91dFN0YXRlOworICAgIGNv
bnN0IExpbmVJbnB1dCYgbV9saW5lSW5wdXQ7CisgICAgTGluZSBtX2xpbmU7CisgICAgTGluZUJy
ZWFrZXIgbV9saW5lQnJlYWtlcjsKKyAgICBib29sIG1fbGluZUhhc0Zsb2F0Qm94IHsgZmFsc2Ug
fTsKKyAgICBVbmNvbW1pdHRlZENvbnRlbnQgbV91bmNvbW1pdHRlZENvbnRlbnQ7CisgICAgdW5z
aWduZWQgbV9jb21taXR0ZWRJbmxpbmVJdGVtQ291bnQgeyAwIH07CisgICAgVmVjdG9yPFdlYWtQ
dHI8SW5saW5lSXRlbT4+IG1fZmxvYXRzOworICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX3NwbGl0
UG9zaXRpb247CiB9OwogCi12b2lkIFVuY29tbWl0dGVkQ29udGVudDo6YWRkKGNvbnN0IElubGlu
ZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQgbG9naWNhbFdpZHRoKQordm9pZCBMaW5lTGF5
b3V0OjpVbmNvbW1pdHRlZENvbnRlbnQ6OmFkZChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVt
LCBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIHsKICAgICBtX3VuY29tbWl0dGVkUnVucy5hcHBl
bmQoeyBpbmxpbmVJdGVtLCBsb2dpY2FsV2lkdGggfSk7CiAgICAgbV93aWR0aCArPSBsb2dpY2Fs
V2lkdGg7CiB9CiAKLXZvaWQgVW5jb21taXR0ZWRDb250ZW50OjpyZXNldCgpCit2b2lkIExpbmVM
YXlvdXQ6OlVuY29tbWl0dGVkQ29udGVudDo6cmVzZXQoKQogewogICAgIG1fdW5jb21taXR0ZWRS
dW5zLmNsZWFyKCk7CiAgICAgbV93aWR0aCA9IDA7CiB9CiAKLUxpbmVJbnB1dDo6SG9yaXpvbnRh
bENvbnN0cmFpbnQ6Okhvcml6b250YWxDb25zdHJhaW50KExheW91dFBvaW50IGxvZ2ljYWxUb3BM
ZWZ0LCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkKLSAgICA6IGxvZ2ljYWxUb3BM
ZWZ0KGxvZ2ljYWxUb3BMZWZ0KQotICAgICwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKGF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aCkKK0xpbmVMYXlvdXQ6OkxpbmVMYXlvdXQoY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBMaW5lSW5wdXQmIGxpbmVJbnB1dCkKKyAgICA6IG1fbGF5b3V0
U3RhdGUobGF5b3V0U3RhdGUpCisgICAgLCBtX2xpbmVJbnB1dChsaW5lSW5wdXQpCisgICAgLCBt
X2xpbmUobGF5b3V0U3RhdGUsIGxpbmVJbnB1dC5pbml0aWFsQ29uc3RyYWludHMsIGxpbmVJbnB1
dC5za2lwVmVydGljYWxBbGlnbWVudCkKKyAgICAsIG1fbGluZUhhc0Zsb2F0Qm94KGxpbmVJbnB1
dC5mbG9hdE1pbmltdW1Mb2dpY2FsQm90dG9tLmhhc1ZhbHVlKCkpCiB7CiB9CiAKLUxpbmVJbnB1
dDo6TGluZUlucHV0KExheW91dFBvaW50IGxvZ2ljYWxUb3BMZWZ0LCBMYXlvdXRVbml0IGF2YWls
YWJsZUxvZ2ljYWxXaWR0aCwgTGluZTo6U2tpcFZlcnRpY2FsQWxpZ21lbnQgc2tpcFZlcnRpY2Fs
QWxpZ21lbnQsIElubGluZUluZGV4QW5kU3BsaXRQb3NpdGlvbiBmaXJzdFRvUHJvY2VzcywgY29u
c3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zKQotICAgIDogaG9yaXpvbnRhbENvbnN0cmFpbnQo
bG9naWNhbFRvcExlZnQsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkKLSAgICAsIHNraXBWZXJ0aWNh
bEFsaWdtZW50KHNraXBWZXJ0aWNhbEFsaWdtZW50KQotICAgICwgZmlyc3RJbmxpbmVJdGVtKGZp
cnN0VG9Qcm9jZXNzKQotICAgICwgaW5saW5lSXRlbXMoaW5saW5lSXRlbXMpCi17Ci19Ci0KLUlu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lTGF5b3V0OjpMaW5lTGF5b3V0KGNvbnN0IElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKLSAgICA6IG1fbGF5
b3V0U3RhdGUoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGF5b3V0U3RhdGUoKSkKLSAgICAsIG1f
Zm9ybWF0dGluZ1Jvb3QoZG93bmNhc3Q8Q29udGFpbmVyPihpbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5yb290KCkpKQordm9pZCBMaW5lTGF5b3V0Ojpjb21taXRQZW5kaW5nQ29udGVudCgpCiB7Cisg
ICAgaWYgKG1fdW5jb21taXR0ZWRDb250ZW50LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fY29tbWl0dGVkSW5saW5lSXRlbUNvdW50ICs9IG1fdW5jb21taXR0ZWRDb250ZW50LnNp
emUoKTsKKyAgICBmb3IgKGF1dG8mIHVuY29tbWl0dGVkUnVuIDogbV91bmNvbW1pdHRlZENvbnRl
bnQucnVucygpKQorICAgICAgICBtX2xpbmUuYXBwZW5kKHVuY29tbWl0dGVkUnVuLmlubGluZUl0
ZW0sIHVuY29tbWl0dGVkUnVuLmxvZ2ljYWxXaWR0aCk7CisgICAgbV91bmNvbW1pdHRlZENvbnRl
bnQucmVzZXQoKTsKIH0KIAotc3RhdGljIExheW91dFVuaXQgaW5saW5lSXRlbVdpZHRoKGNvbnN0
IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwg
TGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQpCitMaW5lQ29udGVudCBMaW5lTGF5b3V0Ojpj
bG9zZSgpCiB7Ci0gICAgaWYgKGlubGluZUl0ZW0uaXNMaW5lQnJlYWsoKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBpZiAoaXM8SW5saW5lVGV4dEl0ZW0+KGlubGluZUl0ZW0pKSB7Ci0gICAg
ICAgIGF1dG8mIGlubGluZVRleHRJdGVtID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KGlubGlu
ZUl0ZW0pOwotICAgICAgICBhdXRvIGVuZCA9IGlubGluZVRleHRJdGVtLmlzQ29sbGFwc2VkKCkg
PyBpbmxpbmVUZXh0SXRlbS5zdGFydCgpICsgMSA6IGlubGluZVRleHRJdGVtLmVuZCgpOwotICAg
ICAgICByZXR1cm4gVGV4dFV0aWw6OndpZHRoKGRvd25jYXN0PElubGluZUJveD4oaW5saW5lVGV4
dEl0ZW0ubGF5b3V0Qm94KCkpLCBpbmxpbmVUZXh0SXRlbS5zdGFydCgpLCBlbmQsIGNvbnRlbnRM
b2dpY2FsTGVmdCk7Ci0gICAgfQotCi0gICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lSXRlbS5s
YXlvdXRCb3goKTsKLSAgICBBU1NFUlQobGF5b3V0U3RhdGUuaGFzRGlzcGxheUJveChsYXlvdXRC
b3gpKTsKLSAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxh
eW91dEJveChsYXlvdXRCb3gpOwotCi0gICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRp
b25lZCgpKQotICAgICAgICByZXR1cm4gZGlzcGxheUJveC5tYXJnaW5Cb3hXaWR0aCgpOwotCi0g
ICAgaWYgKGxheW91dEJveC5pc1JlcGxhY2VkKCkpCi0gICAgICAgIHJldHVybiBkaXNwbGF5Qm94
LndpZHRoKCk7Ci0KLSAgICBpZiAoaW5saW5lSXRlbS5pc0NvbnRhaW5lclN0YXJ0KCkpCi0gICAg
ICAgIHJldHVybiBkaXNwbGF5Qm94Lm1hcmdpblN0YXJ0KCkgKyBkaXNwbGF5Qm94LmJvcmRlckxl
ZnQoKSArIGRpc3BsYXlCb3gucGFkZGluZ0xlZnQoKS52YWx1ZU9yKDApOwotCi0gICAgaWYgKGlu
bGluZUl0ZW0uaXNDb250YWluZXJFbmQoKSkKLSAgICAgICAgcmV0dXJuIGRpc3BsYXlCb3gubWFy
Z2luRW5kKCkgKyBkaXNwbGF5Qm94LmJvcmRlclJpZ2h0KCkgKyBkaXNwbGF5Qm94LnBhZGRpbmdS
aWdodCgpLnZhbHVlT3IoMCk7Ci0KLSAgICAvLyBOb24tcmVwbGFjZWQgaW5saW5lIGJveCAoZS5n
LiBpbmxpbmUtYmxvY2spCi0gICAgcmV0dXJuIGRpc3BsYXlCb3gud2lkdGgoKTsKKyAgICBBU1NF
UlQobV9jb21taXR0ZWRJbmxpbmVJdGVtQ291bnQgfHwgbV9saW5lSGFzRmxvYXRCb3gpOworICAg
IGlmICghbV9jb21taXR0ZWRJbmxpbmVJdGVtQ291bnQpCisgICAgICAgIHJldHVybiBMaW5lQ29u
dGVudCB7IFdURjo6bnVsbG9wdCwgV1RGTW92ZShtX2Zsb2F0cyksIG1fbGluZS5jbG9zZSgpIH07
CisgICAgYXV0byBsYXN0Q29tbWl0ZWRJdGVtID0gSW5saW5lSW5kZXhBbmRTcGxpdFBvc2l0aW9u
IHsgbV9saW5lSW5wdXQuZmlyc3RJbmxpbmVJdGVtLmluZGV4ICsgKG1fY29tbWl0dGVkSW5saW5l
SXRlbUNvdW50IC0gMSksIG1fc3BsaXRQb3NpdGlvbiB9OworICAgIHJldHVybiBMaW5lQ29udGVu
dCB7IGxhc3RDb21taXRlZEl0ZW0sIFdURk1vdmUobV9mbG9hdHMpLCBtX2xpbmUuY2xvc2UoKSB9
OwogfQogCi1MaW5lQ29udGVudCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZUxheW91dDo6
cGxhY2VJbmxpbmVJdGVtcyhjb25zdCBMaW5lSW5wdXQmIGxpbmVJbnB1dCkgY29uc3QKK0xpbmVD
b250ZW50IExpbmVMYXlvdXQ6OmxheW91dCgpCiB7Ci0gICAgYXV0byBpbml0aWFsTGluZUNvbnN0
cmFpbnRzID0gTGluZTo6SW5pdGlhbENvbnN0cmFpbnRzIHsKLSAgICAgICAgbGluZUlucHV0Lmhv
cml6b250YWxDb25zdHJhaW50LmxvZ2ljYWxUb3BMZWZ0LAotICAgICAgICBsaW5lSW5wdXQuaG9y
aXpvbnRhbENvbnN0cmFpbnQuYXZhaWxhYmxlTG9naWNhbFdpZHRoLAotICAgICAgICBRdWlya3M6
OmxpbmVIZWlnaHRDb25zdHJhaW50cyhsYXlvdXRTdGF0ZSgpLCBtX2Zvcm1hdHRpbmdSb290KQot
ICAgIH07Ci0gICAgYXV0byBsaW5lID0gTGluZSB7IGxheW91dFN0YXRlKCksIGluaXRpYWxMaW5l
Q29uc3RyYWludHMsIGxpbmVJbnB1dC5za2lwVmVydGljYWxBbGlnbWVudCB9OwotCi0gICAgVmVj
dG9yPFdlYWtQdHI8SW5saW5lSXRlbT4+IGZsb2F0czsKLSAgICB1bnNpZ25lZCBjb21taXR0ZWRJ
bmxpbmVJdGVtQ291bnQgPSAwOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBzcGxpdFBvc2l0aW9u
OwotCi0gICAgVW5jb21taXR0ZWRDb250ZW50IHVuY29tbWl0dGVkQ29udGVudDsKLSAgICBhdXRv
IGNvbW1pdFBlbmRpbmdDb250ZW50ID0gWyZdIHsKLSAgICAgICAgaWYgKHVuY29tbWl0dGVkQ29u
dGVudC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNvbW1pdHRlZElu
bGluZUl0ZW1Db3VudCArPSB1bmNvbW1pdHRlZENvbnRlbnQuc2l6ZSgpOwotICAgICAgICBmb3Ig
KGF1dG8mIHVuY29tbWl0dGVkUnVuIDogdW5jb21taXR0ZWRDb250ZW50LnJ1bnMoKSkKLSAgICAg
ICAgICAgIGxpbmUuYXBwZW5kKHVuY29tbWl0dGVkUnVuLmlubGluZUl0ZW0sIHVuY29tbWl0dGVk
UnVuLmxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIHVuY29tbWl0dGVkQ29udGVudC5yZXNldCgpOwot
ICAgIH07Ci0KLSAgICBhdXRvIGxpbmVIYXNGbG9hdEJveCA9IGxpbmVJbnB1dC5mbG9hdE1pbmlt
dW1Mb2dpY2FsQm90dG9tLmhhc1ZhbHVlKCk7Ci0gICAgYXV0byBjbG9zZUxpbmUgPSBbJl0gewot
ICAgICAgICBBU1NFUlQoY29tbWl0dGVkSW5saW5lSXRlbUNvdW50IHx8IGxpbmVIYXNGbG9hdEJv
eCk7Ci0gICAgICAgIGlmICghY29tbWl0dGVkSW5saW5lSXRlbUNvdW50KQotICAgICAgICAgICAg
cmV0dXJuIExpbmVDb250ZW50IHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGZsb2F0cyksIGxpbmUu
Y2xvc2UoKSB9OwotICAgICAgICBhdXRvIGxhc3RDb21taXRlZEl0ZW0gPSBJbmxpbmVJbmRleEFu
ZFNwbGl0UG9zaXRpb24geyBsaW5lSW5wdXQuZmlyc3RJbmxpbmVJdGVtLmluZGV4ICsgKGNvbW1p
dHRlZElubGluZUl0ZW1Db3VudCAtIDEpLCBzcGxpdFBvc2l0aW9uIH07Ci0gICAgICAgIHJldHVy
biBMaW5lQ29udGVudCB7IGxhc3RDb21taXRlZEl0ZW0sIFdURk1vdmUoZmxvYXRzKSwgbGluZS5j
bG9zZSgpIH07Ci0gICAgfTsKLSAgICBMaW5lQnJlYWtlciBsaW5lQnJlYWtlcjsKICAgICAvLyBJ
dGVyYXRlIHRocm91Z2ggdGhlIGlubGluZSBjb250ZW50IGFuZCBwbGFjZSB0aGUgaW5saW5lIGJv
eGVzIG9uIHRoZSBjdXJyZW50IGxpbmUuCi0gICAgZm9yIChhdXRvIGlubGluZUl0ZW1JbmRleCA9
IGxpbmVJbnB1dC5maXJzdElubGluZUl0ZW0uaW5kZXg7IGlubGluZUl0ZW1JbmRleCA8IGxpbmVJ
bnB1dC5pbmxpbmVJdGVtcy5zaXplKCk7ICsraW5saW5lSXRlbUluZGV4KSB7Ci0gICAgICAgIGF1
dG8gYXZhaWxhYmxlV2lkdGggPSBsaW5lLmF2YWlsYWJsZVdpZHRoKCkgLSB1bmNvbW1pdHRlZENv
bnRlbnQud2lkdGgoKTsKLSAgICAgICAgYXV0byBjdXJyZW50TG9naWNhbFJpZ2h0ID0gbGluZS5j
b250ZW50TG9naWNhbFJpZ2h0KCkgKyB1bmNvbW1pdHRlZENvbnRlbnQud2lkdGgoKTsKLSAgICAg
ICAgYXV0byYgaW5saW5lSXRlbSA9IGxpbmVJbnB1dC5pbmxpbmVJdGVtc1tpbmxpbmVJdGVtSW5k
ZXhdOworICAgIGZvciAoYXV0byBpbmxpbmVJdGVtSW5kZXggPSBtX2xpbmVJbnB1dC5maXJzdElu
bGluZUl0ZW0uaW5kZXg7IGlubGluZUl0ZW1JbmRleCA8IG1fbGluZUlucHV0LmlubGluZUl0ZW1z
LnNpemUoKTsgKytpbmxpbmVJdGVtSW5kZXgpIHsKKyAgICAgICAgYXV0byBhdmFpbGFibGVXaWR0
aCA9IG1fbGluZS5hdmFpbGFibGVXaWR0aCgpIC0gbV91bmNvbW1pdHRlZENvbnRlbnQud2lkdGgo
KTsKKyAgICAgICAgYXV0byBjdXJyZW50TG9naWNhbFJpZ2h0ID0gbV9saW5lLmNvbnRlbnRMb2dp
Y2FsUmlnaHQoKSArIG1fdW5jb21taXR0ZWRDb250ZW50LndpZHRoKCk7CisgICAgICAgIGF1dG8m
IGlubGluZUl0ZW0gPSBtX2xpbmVJbnB1dC5pbmxpbmVJdGVtc1tpbmxpbmVJdGVtSW5kZXhdOwog
ICAgICAgICBhdXRvIGl0ZW1Mb2dpY2FsV2lkdGggPSBpbmxpbmVJdGVtV2lkdGgobGF5b3V0U3Rh
dGUoKSwgKmlubGluZUl0ZW0sIGN1cnJlbnRMb2dpY2FsUmlnaHQpOwogCiAgICAgICAgIC8vIEZJ
WE1FOiBFbnN1cmUgTGluZUNvbnRleHQ6OnRyaW1tYWJsZVdpZHRoIGluY2x1ZGVzIHVuY29tbWl0
dGVkIGNvbnRlbnQgaWYgbmVlZGVkLgotICAgICAgICBhdXRvIGxpbmVJc0NvbnNpZGVyZWRFbXB0
eSA9ICFsaW5lLmhhc0NvbnRlbnQoKSAmJiAhbGluZUhhc0Zsb2F0Qm94OwotICAgICAgICBhdXRv
IGJyZWFraW5nQ29udGV4dCA9IGxpbmVCcmVha2VyLmJyZWFraW5nQ29udGV4dCgqaW5saW5lSXRl
bSwgaXRlbUxvZ2ljYWxXaWR0aCwgeyBhdmFpbGFibGVXaWR0aCwgY3VycmVudExvZ2ljYWxSaWdo
dCwgbGluZS50cmFpbGluZ1RyaW1tYWJsZVdpZHRoKCksIGxpbmVJc0NvbnNpZGVyZWRFbXB0eSB9
KTsKKyAgICAgICAgYXV0byBsaW5lSXNDb25zaWRlcmVkRW1wdHkgPSAhbV9saW5lLmhhc0NvbnRl
bnQoKSAmJiAhbV9saW5lSGFzRmxvYXRCb3g7CisgICAgICAgIGF1dG8gYnJlYWtpbmdDb250ZXh0
ID0gbV9saW5lQnJlYWtlci5icmVha2luZ0NvbnRleHQoKmlubGluZUl0ZW0sIGl0ZW1Mb2dpY2Fs
V2lkdGgsIHsgYXZhaWxhYmxlV2lkdGgsIGN1cnJlbnRMb2dpY2FsUmlnaHQsIG1fbGluZS50cmFp
bGluZ1RyaW1tYWJsZVdpZHRoKCksIGxpbmVJc0NvbnNpZGVyZWRFbXB0eSB9KTsKICAgICAgICAg
aWYgKGJyZWFraW5nQ29udGV4dC5pc0F0QnJlYWtpbmdPcHBvcnR1bml0eSkKICAgICAgICAgICAg
IGNvbW1pdFBlbmRpbmdDb250ZW50KCk7CiAKICAgICAgICAgLy8gQ29udGVudCBkb2VzIG5vdCBm
aXQgdGhlIGN1cnJlbnQgbGluZS4KICAgICAgICAgaWYgKGJyZWFraW5nQ29udGV4dC5icmVha2lu
Z0JlaGF2aW9yID09IExpbmVCcmVha2VyOjpCcmVha2luZ0JlaGF2aW9yOjpXcmFwKQotICAgICAg
ICAgICAgcmV0dXJuIGNsb3NlTGluZSgpOworICAgICAgICAgICAgcmV0dXJuIGNsb3NlKCk7CiAK
ICAgICAgICAgLy8gUGFydGlhbCBjb250ZW50IHN0YXlzIG9uIHRoZSBjdXJyZW50IGxpbmUuIAog
ICAgICAgICBpZiAoYnJlYWtpbmdDb250ZXh0LmJyZWFraW5nQmVoYXZpb3IgPT0gTGluZUJyZWFr
ZXI6OkJyZWFraW5nQmVoYXZpb3I6OlNwbGl0KSB7CiAgICAgICAgICAgICBBU1NFUlQoaW5saW5l
SXRlbS0+aXNUZXh0KCkpOwogCiAgICAgICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lF
VCgpOwotICAgICAgICAgICAgcmV0dXJuIGNsb3NlTGluZSgpOworICAgICAgICAgICAgcmV0dXJu
IGNsb3NlKCk7CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoYnJlYWtpbmdDb250ZXh0LmJy
ZWFraW5nQmVoYXZpb3IgPT0gTGluZUJyZWFrZXI6OkJyZWFraW5nQmVoYXZpb3I6OktlZXApOwpA
QCAtMjEzLDI1ICsyMDcsMzkgQEAgTGluZUNvbnRlbnQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OkxpbmVMYXlvdXQ6OnBsYWNlSW5saW5lSXRlbXMoY29uc3QgTGluZUlucHUKICAgICAgICAgICAg
IEFTU0VSVChsYXlvdXRTdGF0ZSgpLmhhc0Rpc3BsYXlCb3goZmxvYXRCb3gpKTsKICAgICAgICAg
ICAgIC8vIFNocmluayBhdmFpbGJsZSBzcGFjZSBmb3IgY3VycmVudCBsaW5lIGFuZCBtb3ZlIGV4
aXN0aW5nIGlubGluZSBydW5zLgogICAgICAgICAgICAgYXV0byBmbG9hdEJveFdpZHRoID0gbGF5
b3V0U3RhdGUoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGZsb2F0Qm94KS5tYXJnaW5Cb3hXaWR0
aCgpOwotICAgICAgICAgICAgZmxvYXRCb3guaXNMZWZ0RmxvYXRpbmdQb3NpdGlvbmVkKCkgPyBs
aW5lLm1vdmVMb2dpY2FsTGVmdChmbG9hdEJveFdpZHRoKSA6IGxpbmUubW92ZUxvZ2ljYWxSaWdo
dChmbG9hdEJveFdpZHRoKTsKLSAgICAgICAgICAgIGZsb2F0cy5hcHBlbmQobWFrZVdlYWtQdHIo
KmlubGluZUl0ZW0pKTsKLSAgICAgICAgICAgICsrY29tbWl0dGVkSW5saW5lSXRlbUNvdW50Owot
ICAgICAgICAgICAgbGluZUhhc0Zsb2F0Qm94ID0gdHJ1ZTsKKyAgICAgICAgICAgIGZsb2F0Qm94
LmlzTGVmdEZsb2F0aW5nUG9zaXRpb25lZCgpID8gbV9saW5lLm1vdmVMb2dpY2FsTGVmdChmbG9h
dEJveFdpZHRoKSA6IG1fbGluZS5tb3ZlTG9naWNhbFJpZ2h0KGZsb2F0Qm94V2lkdGgpOworICAg
ICAgICAgICAgbV9mbG9hdHMuYXBwZW5kKG1ha2VXZWFrUHRyKCppbmxpbmVJdGVtKSk7CisgICAg
ICAgICAgICArK21fY29tbWl0dGVkSW5saW5lSXRlbUNvdW50OworICAgICAgICAgICAgbV9saW5l
SGFzRmxvYXRCb3ggPSB0cnVlOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAot
ICAgICAgICB1bmNvbW1pdHRlZENvbnRlbnQuYWRkKCppbmxpbmVJdGVtLCBpdGVtTG9naWNhbFdp
ZHRoKTsKKyAgICAgICAgbV91bmNvbW1pdHRlZENvbnRlbnQuYWRkKCppbmxpbmVJdGVtLCBpdGVt
TG9naWNhbFdpZHRoKTsKICAgICAgICAgaWYgKGJyZWFraW5nQ29udGV4dC5pc0F0QnJlYWtpbmdP
cHBvcnR1bml0eSkKICAgICAgICAgICAgIGNvbW1pdFBlbmRpbmdDb250ZW50KCk7CiAKICAgICAg
ICAgaWYgKGlubGluZUl0ZW0tPmlzSGFyZExpbmVCcmVhaygpKQotICAgICAgICAgICAgcmV0dXJu
IGNsb3NlTGluZSgpOworICAgICAgICAgICAgcmV0dXJuIGNsb3NlKCk7CiAgICAgfQogICAgIGNv
bW1pdFBlbmRpbmdDb250ZW50KCk7Ci0gICAgcmV0dXJuIGNsb3NlTGluZSgpOworICAgIHJldHVy
biBjbG9zZSgpOworfQorCitMaW5lSW5wdXQ6OkxpbmVJbnB1dChjb25zdCBMaW5lOjpJbml0aWFs
Q29uc3RyYWludHMmIGluaXRpYWxMaW5lQ29uc3RyYWludHMsIExpbmU6OlNraXBWZXJ0aWNhbEFs
aWdtZW50IHNraXBWZXJ0aWNhbEFsaWdtZW50LCBJbmxpbmVJbmRleEFuZFNwbGl0UG9zaXRpb24g
Zmlyc3RUb1Byb2Nlc3MsIGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcykKKyAgICA6IGlu
aXRpYWxDb25zdHJhaW50cyhpbml0aWFsTGluZUNvbnN0cmFpbnRzKQorICAgICwgc2tpcFZlcnRp
Y2FsQWxpZ21lbnQoc2tpcFZlcnRpY2FsQWxpZ21lbnQpCisgICAgLCBmaXJzdElubGluZUl0ZW0o
Zmlyc3RUb1Byb2Nlc3MpCisgICAgLCBpbmxpbmVJdGVtcyhpbmxpbmVJdGVtcykKK3sKK30KKwor
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6SW5saW5lTGF5b3V0KGNvbnN0
IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKKyAgICA6
IG1fbGF5b3V0U3RhdGUoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGF5b3V0U3RhdGUoKSkKKyAg
ICAsIG1fZm9ybWF0dGluZ1Jvb3QoZG93bmNhc3Q8Q29udGFpbmVyPihpbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5yb290KCkpKQorewogfQogCi12b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpM
aW5lTGF5b3V0OjpsYXlvdXQoY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMYXlvdXRV
bml0IHdpZHRoQ29uc3RyYWludCkgY29uc3QKK3ZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OklubGluZUxheW91dDo6bGF5b3V0KGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgTGF5
b3V0VW5pdCB3aWR0aENvbnN0cmFpbnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpbmxpbmVJdGVt
cy5pc0VtcHR5KCkpOwogCkBAIC0yNDUsOCArMjUzLDggQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6TGluZUxheW91dDo6bGF5b3V0KGNvbnN0IElubGluZUl0ZW1zJiBpbmxpbmVJdGVt
cywKICAgICAgICAgLy8gQ2hlY2sgZm9yIGludHJ1ZGluZyBmbG9hdHMgYW5kIGFkanVzdCBsb2dp
Y2FsIGxlZnQvYXZhaWxhYmxlIHdpZHRoIGZvciB0aGlzIGxpbmUgYWNjb3JkaW5nbHkuCiAgICAg
ICAgIGlmIChmbG9hdGluZ1N0YXRlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgYXV0byBhdmFpbGFibGVXaWR0aCA9IGxpbmVJbnB1dC5ob3Jpem9udGFsQ29uc3RyYWlu
dC5hdmFpbGFibGVMb2dpY2FsV2lkdGg7Ci0gICAgICAgIGF1dG8gbGluZUxvZ2ljYWxMZWZ0ID0g
bGluZUlucHV0Lmhvcml6b250YWxDb25zdHJhaW50LmxvZ2ljYWxUb3BMZWZ0LngoKTsKKyAgICAg
ICAgYXV0byBhdmFpbGFibGVXaWR0aCA9IGxpbmVJbnB1dC5pbml0aWFsQ29uc3RyYWludHMuYXZh
aWxhYmxlTG9naWNhbFdpZHRoOworICAgICAgICBhdXRvIGxpbmVMb2dpY2FsTGVmdCA9IGxpbmVJ
bnB1dC5pbml0aWFsQ29uc3RyYWludHMubG9naWNhbFRvcExlZnQueCgpOwogICAgICAgICBhdXRv
IGZsb2F0Q29uc3RyYWludHMgPSBmbG9hdGluZ1N0YXRlLmNvbnN0cmFpbnRzKHsgbGluZUxvZ2lj
YWxUb3AgfSwgbV9mb3JtYXR0aW5nUm9vdCk7CiAgICAgICAgIC8vIENoZWNrIGlmIHRoZXNlIGNv
bnN0cmFpbnRzIGFjdHVhbGx5IHB1dCBsaW1pdGF0aW9uIG9uIHRoZSBsaW5lLgogICAgICAgICBp
ZiAoZmxvYXRDb25zdHJhaW50cy5sZWZ0ICYmIGZsb2F0Q29uc3RyYWludHMubGVmdC0+eCA8PSBm
b3JtYXR0aW5nUm9vdERpc3BsYXlCb3guY29udGVudEJveExlZnQoKSkKQEAgLTI3MywxNSArMjgx
LDE1IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmVMYXlvdXQ6OmxheW91dChj
b25zdCBJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsCiAgICAgICAgICAgICBBU1NFUlQoZmxvYXRD
b25zdHJhaW50cy5yaWdodC0+eCA+PSBsaW5lTG9naWNhbExlZnQpOwogICAgICAgICAgICAgYXZh
aWxhYmxlV2lkdGggPSBmbG9hdENvbnN0cmFpbnRzLnJpZ2h0LT54IC0gbGluZUxvZ2ljYWxMZWZ0
OwogICAgICAgICB9Ci0gICAgICAgIGxpbmVJbnB1dC5ob3Jpem9udGFsQ29uc3RyYWludC5hdmFp
bGFibGVMb2dpY2FsV2lkdGggPSBhdmFpbGFibGVXaWR0aDsKLSAgICAgICAgbGluZUlucHV0Lmhv
cml6b250YWxDb25zdHJhaW50LmxvZ2ljYWxUb3BMZWZ0LnNldFgobGluZUxvZ2ljYWxMZWZ0KTsK
KyAgICAgICAgbGluZUlucHV0LmluaXRpYWxDb25zdHJhaW50cy5hdmFpbGFibGVMb2dpY2FsV2lk
dGggPSBhdmFpbGFibGVXaWR0aDsKKyAgICAgICAgbGluZUlucHV0LmluaXRpYWxDb25zdHJhaW50
cy5sb2dpY2FsVG9wTGVmdC5zZXRYKGxpbmVMb2dpY2FsTGVmdCk7CiAgICAgfTsKIAogICAgIElu
bGluZUluZGV4QW5kU3BsaXRQb3NpdGlvbiBjdXJyZW50SW5saW5lSXRlbTsKICAgICB3aGlsZSAo
Y3VycmVudElubGluZUl0ZW0uaW5kZXggPCBpbmxpbmVJdGVtcy5zaXplKCkpIHsKLSAgICAgICAg
YXV0byBsaW5lSW5wdXQgPSBMaW5lSW5wdXQgeyB7IGxpbmVMb2dpY2FsTGVmdCwgbGluZUxvZ2lj
YWxUb3AgfSwgd2lkdGhDb25zdHJhaW50LCBMaW5lOjpTa2lwVmVydGljYWxBbGlnbWVudDo6Tm8s
IGN1cnJlbnRJbmxpbmVJdGVtLCBpbmxpbmVJdGVtcyB9OworICAgICAgICBhdXRvIGxpbmVJbnB1
dCA9IExpbmVJbnB1dCB7IHsgeyBsaW5lTG9naWNhbExlZnQsIGxpbmVMb2dpY2FsVG9wIH0sIHdp
ZHRoQ29uc3RyYWludCwgUXVpcmtzOjpsaW5lSGVpZ2h0Q29uc3RyYWludHMobGF5b3V0U3RhdGUo
KSwgbV9mb3JtYXR0aW5nUm9vdCkgfSwgTGluZTo6U2tpcFZlcnRpY2FsQWxpZ21lbnQ6Ok5vLCBj
dXJyZW50SW5saW5lSXRlbSwgaW5saW5lSXRlbXMgfTsKICAgICAgICAgYXBwbHlGbG9hdENvbnN0
cmFpbnQobGluZUlucHV0KTsKLSAgICAgICAgYXV0byBsaW5lQ29udGVudCA9IHBsYWNlSW5saW5l
SXRlbXMobGluZUlucHV0KTsKKyAgICAgICAgYXV0byBsaW5lQ29udGVudCA9IExpbmVMYXlvdXQo
bGF5b3V0U3RhdGUoKSwgbGluZUlucHV0KS5sYXlvdXQoKTsKICAgICAgICAgY3JlYXRlRGlzcGxh
eVJ1bnMoKmxpbmVDb250ZW50LnJ1bnMsIGxpbmVDb250ZW50LmZsb2F0cywgd2lkdGhDb25zdHJh
aW50KTsKICAgICAgICAgaWYgKCFsaW5lQ29udGVudC5sYXN0Q29tbWl0dGVkKSB7CiAgICAgICAg
ICAgICAvLyBGbG9hdHMgcHJldmVudGVkIHVzIHB1dHRpbmcgYW55IGNvbnRlbnQgb24gdGhlIGxp
bmUuCkBAIC0yOTUsMTIgKzMwMywxMiBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpM
aW5lTGF5b3V0OjpsYXlvdXQoY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLAogICAgIH0K
IH0KIAotTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZUxheW91dDo6Y29t
cHV0ZWRJbnRyaW5zaWNXaWR0aChjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIExheW91
dFVuaXQgd2lkdGhDb25zdHJhaW50KSBjb25zdAorTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6SW5saW5lTGF5b3V0Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoKGNvbnN0IElubGlu
ZUl0ZW1zJiBpbmxpbmVJdGVtcywgTGF5b3V0VW5pdCB3aWR0aENvbnN0cmFpbnQpIGNvbnN0CiB7
CiAgICAgTGF5b3V0VW5pdCBtYXhpbXVtTGluZVdpZHRoOwogICAgIElubGluZUluZGV4QW5kU3Bs
aXRQb3NpdGlvbiBjdXJyZW50SW5saW5lSXRlbTsKICAgICB3aGlsZSAoY3VycmVudElubGluZUl0
ZW0uaW5kZXggPCBpbmxpbmVJdGVtcy5zaXplKCkpIHsKLSAgICAgICAgYXV0byBsaW5lQ29udGVu
dCA9IHBsYWNlSW5saW5lSXRlbXMoeyB7IH0sIHdpZHRoQ29uc3RyYWludCwgTGluZTo6U2tpcFZl
cnRpY2FsQWxpZ21lbnQ6OlllcywgY3VycmVudElubGluZUl0ZW0sIGlubGluZUl0ZW1zIH0pOwor
ICAgICAgICBhdXRvIGxpbmVDb250ZW50ID0gTGluZUxheW91dChsYXlvdXRTdGF0ZSgpLCB7IHsg
eyB9LCB3aWR0aENvbnN0cmFpbnQsIFF1aXJrczo6bGluZUhlaWdodENvbnN0cmFpbnRzKGxheW91
dFN0YXRlKCksIG1fZm9ybWF0dGluZ1Jvb3QpIH0sIExpbmU6OlNraXBWZXJ0aWNhbEFsaWdtZW50
OjpZZXMsIGN1cnJlbnRJbmxpbmVJdGVtLCBpbmxpbmVJdGVtcyB9KS5sYXlvdXQoKTsKICAgICAg
ICAgY3VycmVudElubGluZUl0ZW0gPSB7IGxpbmVDb250ZW50Lmxhc3RDb21taXR0ZWQtPmluZGV4
ICsgMSwgV1RGOjpudWxsb3B0IH07CiAgICAgICAgIExheW91dFVuaXQgZmxvYXRzV2lkdGg7CiAg
ICAgICAgIGZvciAoYXV0byYgZmxvYXRJdGVtIDogbGluZUNvbnRlbnQuZmxvYXRzKQpAQCAtMzEw
LDcgKzMxOCw3IEBAIExheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmVMYXlv
dXQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGgoY29uc3QgSW5sCiAgICAgcmV0dXJuIG1heGltdW1M
aW5lV2lkdGg7CiB9CiAKLXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmVMYXlvdXQ6
OmNyZWF0ZURpc3BsYXlSdW5zKGNvbnN0IExpbmU6OkNvbnRlbnQmIGxpbmVDb250ZW50LCBjb25z
dCBWZWN0b3I8V2Vha1B0cjxJbmxpbmVJdGVtPj4mIGZsb2F0cywgTGF5b3V0VW5pdCB3aWR0aENv
bnN0cmFpbnQpIGNvbnN0Cit2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVMYXlv
dXQ6OmNyZWF0ZURpc3BsYXlSdW5zKGNvbnN0IExpbmU6OkNvbnRlbnQmIGxpbmVDb250ZW50LCBj
b25zdCBWZWN0b3I8V2Vha1B0cjxJbmxpbmVJdGVtPj4mIGZsb2F0cywgTGF5b3V0VW5pdCB3aWR0
aENvbnN0cmFpbnQpIGNvbnN0CiB7CiAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gZG93bmNh
c3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihsYXlvdXRTdGF0ZSgpLmVzdGFibGlzaGVkRm9ybWF0
dGluZ1N0YXRlKG1fZm9ybWF0dGluZ1Jvb3QpKTsKICAgICBhdXRvJiBmbG9hdGluZ1N0YXRlID0g
Zm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKTsKQEAgLTQ0NSw3ICs0NTMsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaG9yaXpvbnRhbEFkanVzdG1lbnRGb3JBbGlnbm1lbnQo
VGV4dEFsaWduTW9kZSBhbGlnbgogICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OkxpbmVMYXlvdXQ6OmFsaWduUnVucyhUZXh0QWxpZ25Nb2RlIHRleHRB
bGlnbiwgSW5saW5lUnVucyYgaW5saW5lRGlzcGxheVJ1bnMsIHVuc2lnbmVkIGZpcnN0UnVuSW5k
ZXgsIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpIGNvbnN0Cit2b2lkIElubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6OmFsaWduUnVucyhUZXh0QWxpZ25Nb2RlIHRleHRBbGln
biwgSW5saW5lUnVucyYgaW5saW5lRGlzcGxheVJ1bnMsIHVuc2lnbmVkIGZpcnN0UnVuSW5kZXgs
IExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpIGNvbnN0CiB7CiAgICAgYXV0byBhZGp1c3RtZW50
ID0gaG9yaXpvbnRhbEFkanVzdG1lbnRGb3JBbGlnbm1lbnQodGV4dEFsaWduLCBhdmFpbGFibGVX
aWR0aCk7CiAgICAgaWYgKCFhZGp1c3RtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcAppbmRleCBlODZjYjc1ZDNlYzYz
N2MxNDY2MmFiMGZlMzdjYzg2NTI3MWE4NzAzLi5jOTQ1YmM5MjE5ZjgyZjAyYmEyZGFmMDg1NGRi
NDI5ZThlYjc4MTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIExpbmU6OkNvbnRl
bnQ6OlJ1bjo6UnVuKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0IFRleHRDb250
ZXh0JiB0ZXh0Q29uCiBMaW5lOjpMaW5lKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwg
Y29uc3QgSW5pdGlhbENvbnN0cmFpbnRzJiBpbml0aWFsQ29uc3RyYWludHMsIFNraXBWZXJ0aWNh
bEFsaWdtZW50IHNraXBWZXJ0aWNhbEFsaWdtZW50KQogICAgIDogbV9sYXlvdXRTdGF0ZShsYXlv
dXRTdGF0ZSkKICAgICAsIG1fY29udGVudChzdGQ6Om1ha2VfdW5pcXVlPExpbmU6OkNvbnRlbnQ+
KCkpCi0gICAgLCBtX2xvZ2ljYWxUb3BMZWZ0KGluaXRpYWxDb25zdHJhaW50cy50b3BMZWZ0KQor
ICAgICwgbV9sb2dpY2FsVG9wTGVmdChpbml0aWFsQ29uc3RyYWludHMubG9naWNhbFRvcExlZnQp
CiAgICAgLCBtX2Jhc2VsaW5lKHsgaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5l
LmJhc2VsaW5lT2Zmc2V0LCBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuaGVp
Z2h0IC0gaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLmJhc2VsaW5lT2Zmc2V0
IH0pCiAgICAgLCBtX2luaXRpYWxTdHJ1dChpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFz
ZWxpbmUuc3RydXQpCiAgICAgLCBtX2xpbmVMb2dpY2FsSGVpZ2h0KGluaXRpYWxDb25zdHJhaW50
cy5oZWlnaHRBbmRCYXNlbGluZS5oZWlnaHQpCi0gICAgLCBtX2xpbmVMb2dpY2FsV2lkdGgoaW5p
dGlhbENvbnN0cmFpbnRzLmF2YWlsYWJsZVdpZHRoKQorICAgICwgbV9saW5lTG9naWNhbFdpZHRo
KGluaXRpYWxDb25zdHJhaW50cy5hdmFpbGFibGVMb2dpY2FsV2lkdGgpCiAgICAgLCBtX3NraXBW
ZXJ0aWNhbEFsaWdtZW50KHNraXBWZXJ0aWNhbEFsaWdtZW50ID09IFNraXBWZXJ0aWNhbEFsaWdt
ZW50OjpZZXMpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lLmgKaW5kZXggNGY2ZjMwYjQ2YjE0YmJmNjQ2NjEzYjhhODcyMTEz
NmIzMjg2MWQ1ZS4uZmFmMDU0NzUzZDM3MjJhYmMwMWQ4YTczZjQ3OTkzNDliY2IxYWExMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGlu
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmUuaApAQCAtMzksOCArMzksOCBAQCBjbGFzcyBMaW5lIHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKExpbmUpOwogcHVibGljOgogICAgIHN0cnVjdCBJbml0aWFsQ29uc3RyYWludHMgewot
ICAgICAgICBMYXlvdXRQb2ludCB0b3BMZWZ0OwotICAgICAgICBMYXlvdXRVbml0IGF2YWlsYWJs
ZVdpZHRoOworICAgICAgICBMYXlvdXRQb2ludCBsb2dpY2FsVG9wTGVmdDsKKyAgICAgICAgTGF5
b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGg7CiAgICAgICAgIHN0cnVjdCBIZWlnaHRBbmRC
YXNlbGluZSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0IGhlaWdodDsKICAgICAgICAgICAgIExh
eW91dFVuaXQgYmFzZWxpbmVPZmZzZXQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>