<?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>123400</bug_id>
          
          <creation_ts>2013-10-28 06:11:43 -0700</creation_ts>
          <short_desc>Prepare simple line layout to support multiple runs per line</short_desc>
          <delta_ts>2022-10-09 06:15:12 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ahmad.saleem792</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>944059</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-28 06:11:43 -0700</bug_when>
    <thetext>poch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944060</commentid>
    <comment_count>1</comment_count>
      <attachid>215298</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-28 06:20:27 -0700</bug_when>
    <thetext>Created attachment 215298
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1904346</commentid>
    <comment_count>2</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-10-09 06:15:12 -0700</bug_when>
    <thetext>Landed - https://github.com/WebKit/WebKit/commit/7614158bfb642a5291bf775edc74e52e3b6f928d

Checked via BugID on Webkit GitHub and it seems that it didn&apos;t backed out as well. Hence, I am marking this as &quot;RESOLVED FIXED&quot;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215298</attachid>
            <date>2013-10-28 06:20:27 -0700</date>
            <delta_ts>2013-10-28 06:34:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>simple-line-run-rename-2.patch</filename>
            <type>text/plain</type>
            <size>29696</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODEwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEzLTEwLTI4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBQcmVwYXJlIHNpbXBsZSBsaW5l
IGxheW91dCB0byBzdXBwb3J0IG11bHRpcGxlIHJ1bnMgcGVyIGxpbmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzQwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1bmNoIG9mIHJlbmFtaW5nIGFuZCBz
b21lIHJlZmFjdG9yaW5nIGZvciBmdXR1cmUgc3VwcG9ydCBmb3IgdGV4dCBydW5zLgorCisgICAg
ICAgIFNpbXBsZUxpbmVMYXlvdXQ6OkxpbmVzIC0+IFNpbXBsZUxpbmVMYXlvdXQ6OkxheW91dCBh
bmQgYmVjb21lcyBhIGNsYXNzIGluc3RlYWQgb2YgYSB0eXBlZGVmLgorICAgICAgICBTaW1wbGVM
aW5lTGF5b3V0OjpSZXNvbHZlcjo6TGluZXMgLT4gU2ltcGxlTGluZUxheW91dDo6UmVzb2x2ZXI6
OlJ1bnMKKyAgICAgICAgU2ltcGxlTGluZUxheW91dDo6Y3JlYXRlTGluZXMoKSAtPiBTaW1wbGVM
aW5lTGF5b3V0OjpjcmVhdGUoKQorICAgICAgICBSZW5kZXJCbG9ja0Zsb3c6OnNpbXBsZUxpbmVz
KCkgLT4gUmVuZGVyQmxvY2tGbG93OjpzaW1wbGVMaW5lTGF5b3V0KCkKKyAgICAgICAgUmVuZGVy
VGV4dDo6c2ltcGxlTGluZXMoKSAtPiBSZW5kZXJUZXh0OjpzaW1wbGVMaW5lTGF5b3V0KCkKKyAg
ICAgICAgCisgICAgICAgIEFkZGVkIHJlc29sdmVyIGNvbnN0cnVjdGlvbiBmdW5jdGlvbnM6Cisg
ICAgICAgIAorICAgICAgICBTaW1wbGVMaW5lTGF5b3V0OjpydW5SZXNvbHZlcigpCisgICAgICAg
IFNpbXBsZUxpbmVMYXlvdXQ6OmxpbmVSZXNvbHZlcigpCisKIDIwMTMtMTAtMjggIE1hcmlvIFNh
bmNoZXogUHJhZGEgIDxtYXJpby5wcmFkYUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbR1RLXSBF
eHBvc2UgdGl0bGUgYW5kIGFsdGVybmF0aXZlIHRleHQgZm9yIGxpbmtzIGluIGltYWdlIG1hcHMK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDE1
ODEwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIwLDcgKzUyMCw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0
Tm9kZSgpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmIChyZW5kZXJlci0+
c2ltcGxlTGluZXMoKSkgeworICAgIGlmIChyZW5kZXJlci0+c2ltcGxlTGluZUxheW91dCgpKSB7
CiAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUg
JiYgIW1faWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAvLyBUaGlzIGNvZGUgYWltcyB0byBwcm9kdWNlIHNhbWUgcmVzdWx0cyBhcyBoYW5k
bGVUZXh0Qm94KCkgYmVsb3cgc28gdGVzdCByZXN1bHRzIGRvbid0IGNoYW5nZS4gSXQgZG9lcyBu
b3QgbWFrZSBtdWNoIGxvZ2ljYWwgc2Vuc2UuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAkocmV2aXNpb24gMTU4MTA0KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUz
MSw3ICs1MzEsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5lQ2hpbGRyCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3NpbXBsZUxpbmVzID0gbnVsbHB0cjsKKyAg
ICBtX3NpbXBsZUxpbmVMYXlvdXQgPSBudWxscHRyOwogICAgIGxheW91dExpbmVCb3hlcyhyZWxh
eW91dENoaWxkcmVuLCByZXBhaW50TG9naWNhbFRvcCwgcmVwYWludExvZ2ljYWxCb3R0b20pOwog
fQogCkBAIC0xNjUyLDkgKzE2NTIsOSBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6ZGVsZXRlTGlu
ZXMoKQogICAgIGlmIChjb250YWluc0Zsb2F0cygpKQogICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0
cy0+Y2xlYXJMaW5lQm94VHJlZVBvaW50ZXJzKCk7CiAKLSAgICBpZiAobV9zaW1wbGVMaW5lcykg
eworICAgIGlmIChtX3NpbXBsZUxpbmVMYXlvdXQpIHsKICAgICAgICAgQVNTRVJUKCFtX2xpbmVC
b3hlcy5maXJzdExpbmVCb3goKSk7Ci0gICAgICAgIG1fc2ltcGxlTGluZXMgPSBudWxscHRyOwor
ICAgICAgICBtX3NpbXBsZUxpbmVMYXlvdXQgPSBudWxscHRyOwogICAgIH0gZWxzZQogICAgICAg
ICBtX2xpbmVCb3hlcy5kZWxldGVMaW5lQm94VHJlZShyZW5kZXJBcmVuYSgpKTsKIApAQCAtMjQz
OCw4ICsyNDM4LDggQEAgYm9vbCBSZW5kZXJCbG9ja0Zsb3c6OmhpdFRlc3RJbmxpbmVDaGlsZAog
ewogICAgIEFTU0VSVChjaGlsZHJlbklubGluZSgpKTsKIAotICAgIGlmIChtX3NpbXBsZUxpbmVz
KQotICAgICAgICByZXR1cm4gU2ltcGxlTGluZUxheW91dDo6aGl0VGVzdEZsb3coKnRoaXMsICpt
X3NpbXBsZUxpbmVzLCByZXF1ZXN0LCByZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIGFjY3Vt
dWxhdGVkT2Zmc2V0LCBoaXRUZXN0QWN0aW9uKTsKKyAgICBpZiAobV9zaW1wbGVMaW5lTGF5b3V0
KQorICAgICAgICByZXR1cm4gU2ltcGxlTGluZUxheW91dDo6aGl0VGVzdEZsb3coKnRoaXMsICpt
X3NpbXBsZUxpbmVMYXlvdXQsIHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lciwg
YWNjdW11bGF0ZWRPZmZzZXQsIGhpdFRlc3RBY3Rpb24pOwogCiAgICAgcmV0dXJuIG1fbGluZUJv
eGVzLmhpdFRlc3QodGhpcywgcmVxdWVzdCwgcmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBh
Y2N1bXVsYXRlZE9mZnNldCwgaGl0VGVzdEFjdGlvbik7CiB9CkBAIC0yNTQ1LDggKzI1NDUsOCBA
QCBpbnQgUmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSgpCiAgICAgaWYgKCFoYXNM
aW5lcygpKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAobV9zaW1wbGVMaW5lcykKLSAg
ICAgICAgcmV0dXJuIFNpbXBsZUxpbmVMYXlvdXQ6OmNvbXB1dGVGbG93Rmlyc3RMaW5lQmFzZWxp
bmUoKnRoaXMsICptX3NpbXBsZUxpbmVzKTsKKyAgICBpZiAobV9zaW1wbGVMaW5lTGF5b3V0KQor
ICAgICAgICByZXR1cm4gU2ltcGxlTGluZUxheW91dDo6Y29tcHV0ZUZsb3dGaXJzdExpbmVCYXNl
bGluZSgqdGhpcywgKm1fc2ltcGxlTGluZUxheW91dCk7CiAKICAgICBBU1NFUlQoZmlyc3RMaW5l
Qm94KCkpOwogICAgIHJldHVybiBmaXJzdExpbmVCb3goKS0+bG9naWNhbFRvcCgpICsgZmlyc3RM
aW5lU3R5bGUoKS0+Zm9udE1ldHJpY3MoKS5hc2NlbnQoZmlyc3RSb290Qm94KCktPmJhc2VsaW5l
VHlwZSgpKTsKQEAgLTI1NjksOCArMjU2OSw4IEBAIGludCBSZW5kZXJCbG9ja0Zsb3c6OmlubGlu
ZUJsb2NrQmFzZWxpbmUKICAgICAgICAgICAgICArIChsaW5lRGlyZWN0aW9uID09IEhvcml6b250
YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBib3JkZXJSaWdodCgpICsgcGFk
ZGluZ1JpZ2h0KCkpOwogICAgIH0KIAotICAgIGlmIChtX3NpbXBsZUxpbmVzKQotICAgICAgICBy
ZXR1cm4gU2ltcGxlTGluZUxheW91dDo6Y29tcHV0ZUZsb3dMYXN0TGluZUJhc2VsaW5lKCp0aGlz
LCAqbV9zaW1wbGVMaW5lcyk7CisgICAgaWYgKG1fc2ltcGxlTGluZUxheW91dCkKKyAgICAgICAg
cmV0dXJuIFNpbXBsZUxpbmVMYXlvdXQ6OmNvbXB1dGVGbG93TGFzdExpbmVCYXNlbGluZSgqdGhp
cywgKm1fc2ltcGxlTGluZUxheW91dCk7CiAKICAgICBib29sIGlzRmlyc3RMaW5lID0gbGFzdExp
bmVCb3goKSA9PSBmaXJzdExpbmVCb3goKTsKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBpc0Zp
cnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwpAQCAtMjU4MCw3ICsy
NTgwLDcgQEAgaW50IFJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZQogR2FwUmVj
dHMgUmVuZGVyQmxvY2tGbG93OjppbmxpbmVTZWxlY3Rpb25HYXBzKFJlbmRlckJsb2NrJiByb290
QmxvY2ssIGNvbnN0IExheW91dFBvaW50JiByb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBjb25z
dCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdEJsb2NrLAogICAgIExheW91dFVuaXQmIGxhc3RM
b2dpY2FsVG9wLCBMYXlvdXRVbml0JiBsYXN0TG9naWNhbExlZnQsIExheW91dFVuaXQmIGxhc3RM
b2dpY2FsUmlnaHQsIGNvbnN0IExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMmIGNhY2hlLCBj
b25zdCBQYWludEluZm8qIHBhaW50SW5mbykKIHsKLSAgICBBU1NFUlQoIW1fc2ltcGxlTGluZXMp
OworICAgIEFTU0VSVCghbV9zaW1wbGVMaW5lTGF5b3V0KTsKIAogICAgIEdhcFJlY3RzIHJlc3Vs
dDsKIApAQCAtMjkzOSw4ICsyOTM5LDggQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnBhaW50SW5s
aW5lQ2hpbGRyZQogewogICAgIEFTU0VSVChjaGlsZHJlbklubGluZSgpKTsKIAotICAgIGlmICht
X3NpbXBsZUxpbmVzKSB7Ci0gICAgICAgIFNpbXBsZUxpbmVMYXlvdXQ6OnBhaW50RmxvdygqdGhp
cywgKm1fc2ltcGxlTGluZXMsIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOworICAgIGlmIChtX3Np
bXBsZUxpbmVMYXlvdXQpIHsKKyAgICAgICAgU2ltcGxlTGluZUxheW91dDo6cGFpbnRGbG93KCp0
aGlzLCAqbV9zaW1wbGVMaW5lTGF5b3V0LCBwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBtX2xpbmVCb3hlcy5wYWludCh0aGlzLCBwYWludEluZm8s
IHBhaW50T2Zmc2V0KTsKQEAgLTMwMDIsOCArMzAwMiw4IEBAIGJvb2wgUmVuZGVyQmxvY2tGbG93
OjpoYXNMaW5lcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGNoaWxkcmVuSW5saW5lKCkpOwogCi0g
ICAgaWYgKG1fc2ltcGxlTGluZXMpCi0gICAgICAgIHJldHVybiAhbV9zaW1wbGVMaW5lcy0+aXNF
bXB0eSgpOworICAgIGlmIChtX3NpbXBsZUxpbmVMYXlvdXQpCisgICAgICAgIHJldHVybiBtX3Np
bXBsZUxpbmVMYXlvdXQtPmxpbmVDb3VudDsKIAogICAgIHJldHVybiBsaW5lQm94ZXMoKS5maXJz
dExpbmVCb3goKTsKIH0KQEAgLTMwMTIsOSArMzAxMiw5IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93
OjpsYXlvdXRTaW1wbGVMaW5lcygKIHsKICAgICBBU1NFUlQoIW1fbGluZUJveGVzLmZpcnN0TGlu
ZUJveCgpKTsKIAotICAgIG1fc2ltcGxlTGluZXMgPSBTaW1wbGVMaW5lTGF5b3V0OjpjcmVhdGVM
aW5lcygqdGhpcyk7CisgICAgbV9zaW1wbGVMaW5lTGF5b3V0ID0gU2ltcGxlTGluZUxheW91dDo6
Y3JlYXRlKCp0aGlzKTsKIAotICAgIExheW91dFVuaXQgbGluZUxheW91dEhlaWdodCA9IFNpbXBs
ZUxpbmVMYXlvdXQ6OmNvbXB1dGVGbG93SGVpZ2h0KCp0aGlzLCAqbV9zaW1wbGVMaW5lcyk7Cisg
ICAgTGF5b3V0VW5pdCBsaW5lTGF5b3V0SGVpZ2h0ID0gU2ltcGxlTGluZUxheW91dDo6Y29tcHV0
ZUZsb3dIZWlnaHQoKnRoaXMsICptX3NpbXBsZUxpbmVMYXlvdXQpOwogICAgIExheW91dFVuaXQg
bGluZUxheW91dFRvcCA9IGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKTsKIAogICAgIHJlcGFpbnRM
b2dpY2FsVG9wID0gbGluZUxheW91dFRvcDsKQEAgLTMwMzQsOSArMzAzNCw5IEBAIHZvaWQgUmVu
ZGVyQmxvY2tGbG93OjplbnN1cmVMaW5lQm94ZXMoKQogewogICAgIG1fbGluZUxheW91dFBhdGgg
PSBGb3JjZUxpbmVCb3hlc1BhdGg7CiAKLSAgICBpZiAoIW1fc2ltcGxlTGluZXMpCisgICAgaWYg
KCFtX3NpbXBsZUxpbmVMYXlvdXQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3NpbXBsZUxpbmVz
ID0gbnVsbHB0cjsKKyAgICBtX3NpbXBsZUxpbmVMYXlvdXQgPSBudWxscHRyOwogCiAjaWYgIUFT
U0VSVF9ESVNBQkxFRAogICAgIExheW91dFVuaXQgb2xkSGVpZ2h0ID0gbG9naWNhbEhlaWdodCgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAkocmV2
aXNpb24gMTU4MTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjQsNyArMzI0LDcgQEAgcHVibGljOgogCiAgICAgYm9v
bCBjb250YWluc05vblplcm9CaWRpTGV2ZWwoKSBjb25zdDsKIAotICAgIGNvbnN0IFNpbXBsZUxp
bmVMYXlvdXQ6OkxpbmVzKiBzaW1wbGVMaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fc2ltcGxlTGlu
ZXMuZ2V0KCk7IH0KKyAgICBjb25zdCBTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQqIHNpbXBsZUxp
bmVMYXlvdXQoKSBjb25zdCB7IHJldHVybiBtX3NpbXBsZUxpbmVMYXlvdXQuZ2V0KCk7IH0KICAg
ICB2b2lkIGRlbGV0ZUxpbmVCb3hlc0JlZm9yZVNpbXBsZUxpbmVMYXlvdXQoKTsKICAgICB2b2lk
IGVuc3VyZUxpbmVCb3hlcygpOwogCkBAIC00ODcsNyArNDg3LDcgQEAgcHJvdGVjdGVkOgogICAg
IE93blB0cjxGbG9hdGluZ09iamVjdHM+IG1fZmxvYXRpbmdPYmplY3RzOwogICAgIE93blB0cjxS
ZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YT4gbV9yYXJlRGF0YTsKICAgICBSZW5kZXJMaW5lQm94TGlz
dCBtX2xpbmVCb3hlczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2ltcGxlTGluZUxheW91dDo6TGlu
ZXM+IG1fc2ltcGxlTGluZXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNpbXBsZUxpbmVMYXlvdXQ6
OkxheW91dD4gbV9zaW1wbGVMaW5lTGF5b3V0OwogCiAgICAgZnJpZW5kIGNsYXNzIEJyZWFraW5n
Q29udGV4dDsKICAgICBmcmllbmQgY2xhc3MgTGluZUJyZWFrZXI7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNp
b24gMTU4MTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxh
eW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NDAsNyArMTg0MCw3IEBAIHZvaWQgUmVuZGVy
QmxvY2tGbG93OjpyZXBhaW50RGlydHlGbG9hdHMKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6Omxh
eW91dExpbmVCb3hlcyhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIHJlcGFpbnRM
b2dpY2FsVG9wLCBMYXlvdXRVbml0JiByZXBhaW50TG9naWNhbEJvdHRvbSkKIHsKLSAgICBBU1NF
UlQoIW1fc2ltcGxlTGluZXMpOworICAgIEFTU0VSVCghbV9zaW1wbGVMaW5lTGF5b3V0KTsKIAog
ICAgIHNldExvZ2ljYWxIZWlnaHQoYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpKTsKICAgICAKQEAg
LTM1MTcsOSArMzUxNyw5IEBAIElubGluZUl0ZXJhdG9yIExpbmVCcmVha2VyOjpuZXh0U2VnbWVu
dEIKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmFkZE92ZXJmbG93RnJvbUlubGluZUNoaWxkcmVu
KCkKIHsKLSAgICBpZiAoYXV0byBsaW5lcyA9IHNpbXBsZUxpbmVzKCkpIHsKKyAgICBpZiAoYXV0
byBsYXlvdXQgPSBzaW1wbGVMaW5lTGF5b3V0KCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNPdmVy
Zmxvd0NsaXAoKSk7Ci0gICAgICAgIFNpbXBsZUxpbmVMYXlvdXQ6OmNvbGxlY3RGbG93T3ZlcmZs
b3coKnRoaXMsICpsaW5lcyk7CisgICAgICAgIFNpbXBsZUxpbmVMYXlvdXQ6OmNvbGxlY3RGbG93
T3ZlcmZsb3coKnRoaXMsICpsYXlvdXQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIExh
eW91dFVuaXQgZW5kUGFkZGluZyA9IGhhc092ZXJmbG93Q2xpcCgpID8gcGFkZGluZ0VuZCgpIDog
TGF5b3V0VW5pdCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cAkocmV2aXNpb24gMTU4MTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzcsNyArODc3LDcgQEAgdm9pZCBSZW5kZXJUZXh0
OjpzZXRUZXh0V2l0aE9mZnNldChjb25zdAogICAgIGludCBkZWx0YSA9IHRleHQubGVuZ3RoKCkg
LSB0ZXh0TGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgZW5kID0gbGVuID8gb2Zmc2V0ICsgbGVuIC0g
MSA6IG9mZnNldDsKIAotICAgIG1fbGluZXNEaXJ0eSA9IHNpbXBsZUxpbmVzKCkgfHwgbV9saW5l
Qm94ZXMuZGlydHlSYW5nZSgqdGhpcywgb2Zmc2V0LCBlbmQsIGRlbHRhKTsKKyAgICBtX2xpbmVz
RGlydHkgPSBzaW1wbGVMaW5lTGF5b3V0KCkgfHwgbV9saW5lQm94ZXMuZGlydHlSYW5nZSgqdGhp
cywgb2Zmc2V0LCBlbmQsIGRlbHRhKTsKIAogICAgIHNldFRleHQodGV4dCwgZm9yY2UgfHwgbV9s
aW5lc0RpcnR5KTsKIH0KQEAgLTEwNTcsMTEgKzEwNTcsMTEgQEAgdm9pZCBSZW5kZXJUZXh0Ojpl
bnN1cmVMaW5lQm94ZXMoKQogICAgIHRvUmVuZGVyQmxvY2tGbG93KHBhcmVudCgpKS0+ZW5zdXJl
TGluZUJveGVzKCk7CiB9CiAKLWNvbnN0IFNpbXBsZUxpbmVMYXlvdXQ6OkxpbmVzKiBSZW5kZXJU
ZXh0OjpzaW1wbGVMaW5lcygpIGNvbnN0Citjb25zdCBTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQq
IFJlbmRlclRleHQ6OnNpbXBsZUxpbmVMYXlvdXQoKSBjb25zdAogewogICAgIGlmICghcGFyZW50
KCktPmlzUmVuZGVyQmxvY2tGbG93KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiB0b1JlbmRlckJsb2NrRmxvdyhwYXJlbnQoKSktPnNpbXBsZUxpbmVzKCk7CisgICAgcmV0
dXJuIHRvUmVuZGVyQmxvY2tGbG93KHBhcmVudCgpKS0+c2ltcGxlTGluZUxheW91dCgpOwogfQog
CiBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGZs
b2F0IHhQb3MsIGJvb2wgZmlyc3RMaW5lLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4q
IGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cqIGdseXBoT3ZlcmZsb3cpIGNvbnN0CkBAIC0x
MTE0LDE1ICsxMTE0LDE1IEBAIGZsb2F0IFJlbmRlclRleHQ6OndpZHRoKHVuc2lnbmVkIGZyb20s
IHUKIAogSW50UmVjdCBSZW5kZXJUZXh0OjpsaW5lc0JvdW5kaW5nQm94KCkgY29uc3QKIHsKLSAg
ICBpZiAoYXV0byBsaW5lcyA9IHNpbXBsZUxpbmVzKCkpCi0gICAgICAgIHJldHVybiBTaW1wbGVM
aW5lTGF5b3V0Ojpjb21wdXRlVGV4dEJvdW5kaW5nQm94KCp0aGlzLCAqbGluZXMpOworICAgIGlm
IChhdXRvIGxheW91dCA9IHNpbXBsZUxpbmVMYXlvdXQoKSkKKyAgICAgICAgcmV0dXJuIFNpbXBs
ZUxpbmVMYXlvdXQ6OmNvbXB1dGVUZXh0Qm91bmRpbmdCb3goKnRoaXMsICpsYXlvdXQpOwogCiAg
ICAgcmV0dXJuIG1fbGluZUJveGVzLmJvdW5kaW5nQm94KCp0aGlzKTsKIH0KIAogTGF5b3V0UmVj
dCBSZW5kZXJUZXh0OjpsaW5lc1Zpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSBjb25zdAogewot
ICAgIEFTU0VSVCghc2ltcGxlTGluZXMoKSk7CisgICAgQVNTRVJUKCFzaW1wbGVMaW5lTGF5b3V0
KCkpOwogICAgIHJldHVybiBtX2xpbmVCb3hlcy52aXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCp0
aGlzKTsKIH0KIApAQCAtMTE0NSw3ICsxMTQ1LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJUZXh0Ojpj
bGlwcGVkT3ZlcmZsb3dSZQogTGF5b3V0UmVjdCBSZW5kZXJUZXh0OjpzZWxlY3Rpb25SZWN0Rm9y
UmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBi
b29sIGNsaXBUb1Zpc2libGVDb250ZW50KQogewogICAgIEFTU0VSVCghbmVlZHNMYXlvdXQoKSk7
Ci0gICAgQVNTRVJUKCFzaW1wbGVMaW5lcygpKTsKKyAgICBBU1NFUlQoIXNpbXBsZUxpbmVMYXlv
dXQoKSk7CiAKICAgICBpZiAoc2VsZWN0aW9uU3RhdGUoKSA9PSBTZWxlY3Rpb25Ob25lKQogICAg
ICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwpAQCAtMTE4Nyw0MSArMTE4Nyw0MSBAQCBMYXlvdXRS
ZWN0IFJlbmRlclRleHQ6OnNlbGVjdGlvblJlY3RGb3JSCiAKIGludCBSZW5kZXJUZXh0OjpjYXJl
dE1pbk9mZnNldCgpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8gbGluZXMgPSBzaW1wbGVMaW5lcygp
KQotICAgICAgICByZXR1cm4gU2ltcGxlTGluZUxheW91dDo6ZmluZFRleHRDYXJldE1pbmltdW1P
ZmZzZXQoKnRoaXMsICpsaW5lcyk7CisgICAgaWYgKGF1dG8gbGF5b3V0ID0gc2ltcGxlTGluZUxh
eW91dCgpKQorICAgICAgICByZXR1cm4gU2ltcGxlTGluZUxheW91dDo6ZmluZFRleHRDYXJldE1p
bmltdW1PZmZzZXQoKnRoaXMsICpsYXlvdXQpOwogICAgIHJldHVybiBtX2xpbmVCb3hlcy5jYXJl
dE1pbk9mZnNldCgpOwogfQogCiBpbnQgUmVuZGVyVGV4dDo6Y2FyZXRNYXhPZmZzZXQoKSBjb25z
dAogewotICAgIGlmIChhdXRvIGxpbmVzID0gc2ltcGxlTGluZXMoKSkKLSAgICAgICAgcmV0dXJu
IFNpbXBsZUxpbmVMYXlvdXQ6OmZpbmRUZXh0Q2FyZXRNYXhpbXVtT2Zmc2V0KCp0aGlzLCAqbGlu
ZXMpOworICAgIGlmIChhdXRvIGxheW91dCA9IHNpbXBsZUxpbmVMYXlvdXQoKSkKKyAgICAgICAg
cmV0dXJuIFNpbXBsZUxpbmVMYXlvdXQ6OmZpbmRUZXh0Q2FyZXRNYXhpbXVtT2Zmc2V0KCp0aGlz
LCAqbGF5b3V0KTsKICAgICByZXR1cm4gbV9saW5lQm94ZXMuY2FyZXRNYXhPZmZzZXQoKnRoaXMp
OwogfQogCiB1bnNpZ25lZCBSZW5kZXJUZXh0Ojpjb3VudFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0
c1VudGlsKHVuc2lnbmVkIG9mZnNldCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIXNpbXBsZUxpbmVz
KCkpOworICAgIEFTU0VSVCghc2ltcGxlTGluZUxheW91dCgpKTsKICAgICByZXR1cm4gbV9saW5l
Qm94ZXMuY291bnRDaGFyYWN0ZXJPZmZzZXRzVW50aWwob2Zmc2V0KTsKIH0KIAogYm9vbCBSZW5k
ZXJUZXh0Ojpjb250YWluc1JlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQoIXNpbXBsZUxpbmVzKCkpOworICAgIEFTU0VSVCghc2ltcGxl
TGluZUxheW91dCgpKTsKICAgICByZXR1cm4gbV9saW5lQm94ZXMuY29udGFpbnNPZmZzZXQoKnRo
aXMsIG9mZnNldCwgUmVuZGVyVGV4dExpbmVCb3hlczo6Q2hhcmFjdGVyT2Zmc2V0KTsKIH0KIAog
Ym9vbCBSZW5kZXJUZXh0Ojpjb250YWluc0NhcmV0T2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgY29u
c3QKIHsKLSAgICBpZiAoYXV0byBsYXlvdXQgPSBzaW1wbGVMaW5lcygpKQorICAgIGlmIChhdXRv
IGxheW91dCA9IHNpbXBsZUxpbmVMYXlvdXQoKSkKICAgICAgICAgcmV0dXJuIFNpbXBsZUxpbmVM
YXlvdXQ6OmNvbnRhaW5zVGV4dENhcmV0T2Zmc2V0KCp0aGlzLCAqbGF5b3V0LCBvZmZzZXQpOwog
ICAgIHJldHVybiBtX2xpbmVCb3hlcy5jb250YWluc09mZnNldCgqdGhpcywgb2Zmc2V0LCBSZW5k
ZXJUZXh0TGluZUJveGVzOjpDYXJldE9mZnNldCk7CiB9CiAKIGJvb2wgUmVuZGVyVGV4dDo6aGFz
UmVuZGVyZWRUZXh0KCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byBsaW5lcyA9IHNpbXBsZUxpbmVz
KCkpCi0gICAgICAgIHJldHVybiBTaW1wbGVMaW5lTGF5b3V0Ojppc1RleHRSZW5kZXJlZCgqdGhp
cywgKmxpbmVzKTsKKyAgICBpZiAoYXV0byBsYXlvdXQgPSBzaW1wbGVMaW5lTGF5b3V0KCkpCisg
ICAgICAgIHJldHVybiBTaW1wbGVMaW5lTGF5b3V0Ojppc1RleHRSZW5kZXJlZCgqdGhpcywgKmxh
eW91dCk7CiAgICAgcmV0dXJuIG1fbGluZUJveGVzLmhhc1JlbmRlcmVkVGV4dCgpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgJKHJldmlzaW9uIDE1ODEwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1NCw3ICsxNTQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVuc3VyZUxpbmVCb3hlcygp
OwogICAgIHZvaWQgZGVsZXRlTGluZUJveGVzQmVmb3JlU2ltcGxlTGluZUxheW91dCgpOwotICAg
IGNvbnN0IFNpbXBsZUxpbmVMYXlvdXQ6OkxpbmVzKiBzaW1wbGVMaW5lcygpIGNvbnN0OworICAg
IGNvbnN0IFNpbXBsZUxpbmVMYXlvdXQ6OkxheW91dCogc2ltcGxlTGluZUxheW91dCgpIGNvbnN0
OwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzKGZsb2F0IGxlYWRXaWR0aCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVHJlZUFzVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCShyZXZpc2lvbiAxNTgxMDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
Niw3ICsyNDYsNyBAQCB2b2lkIFJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0CiAg
ICAgICAgIC8vIG1hbnkgdGVzdCByZXN1bHRzLgogICAgICAgICBjb25zdCBSZW5kZXJUZXh0JiB0
ZXh0ID0gdG9SZW5kZXJUZXh0KG8pOwogICAgICAgICBJbnRSZWN0IGxpbmVzQm94ID0gdGV4dC5s
aW5lc0JvdW5kaW5nQm94KCk7Ci0gICAgICAgIGlmICh0ZXh0LnNpbXBsZUxpbmVzKCkpIHsKKyAg
ICAgICAgaWYgKHRleHQuc2ltcGxlTGluZUxheW91dCgpKSB7CiAgICAgICAgICAgICBpbnQgeSA9
IGxpbmVzQm94LnkoKTsKICAgICAgICAgICAgIGlmICh0ZXh0LmNvbnRhaW5pbmdCbG9jaygpLT5p
c1RhYmxlQ2VsbCgpKQogICAgICAgICAgICAgICAgIHkgLT0gdG9SZW5kZXJUYWJsZUNlbGwoby5j
b250YWluaW5nQmxvY2soKSktPmludHJpbnNpY1BhZGRpbmdCZWZvcmUoKTsKQEAgLTU5MywxMyAr
NTkzLDEzIEBAIHZvaWQgd3JpdGUoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck8KIAogICAg
IGlmIChvLmlzVGV4dCgpKSB7CiAgICAgICAgIGF1dG8mIHRleHQgPSB0b1JlbmRlclRleHQobyk7
Ci0gICAgICAgIGlmIChhdXRvIGxpbmVzID0gdGV4dC5zaW1wbGVMaW5lcygpKSB7CisgICAgICAg
IGlmIChhdXRvIGxheW91dCA9IHRleHQuc2ltcGxlTGluZUxheW91dCgpKSB7CiAgICAgICAgICAg
ICBBU1NFUlQoIXRleHQuZmlyc3RUZXh0Qm94KCkpOwotICAgICAgICAgICAgU2ltcGxlTGluZUxh
eW91dDo6UmVzb2x2ZXIgcmVzb2x2ZXIoKmxpbmVzLCB0b1JlbmRlckJsb2NrRmxvdygqdGV4dC5w
YXJlbnQoKSkpOworICAgICAgICAgICAgYXV0byByZXNvbHZlciA9IHJ1blJlc29sdmVyKHRvUmVu
ZGVyQmxvY2tGbG93KCp0ZXh0LnBhcmVudCgpKSwgKmxheW91dCk7CiAgICAgICAgICAgICBmb3Ig
KGF1dG8gaXQgPSByZXNvbHZlci5iZWdpbigpLCBlbmQgPSByZXNvbHZlci5lbmQoKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAgICAgYXV0byBsaW5lID0gKml0OworICAgICAgICAg
ICAgICAgIGF1dG8gcnVuID0gKml0OwogICAgICAgICAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBp
bmRlbnQgKyAxKTsKLSAgICAgICAgICAgICAgICB3cml0ZVNpbXBsZUxpbmUodHMsIHRleHQsIGxp
bmUucmVjdCgpLCBsaW5lLnRleHQoKSk7CisgICAgICAgICAgICAgICAgd3JpdGVTaW1wbGVMaW5l
KHRzLCB0ZXh0LCBydW4ucmVjdCgpLCBydW4udGV4dCgpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZvciAoYXV0byBib3ggPSB0ZXh0LmZpcnN0VGV4dEJv
eCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAkocmV2aXNpb24gMTU4MTA0KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzEsOSArMjMxLDkgQEAgc3RhdGljIGZsb2F0IGNvbXB1dGVMaW5lTGVmdChF
VGV4dEFsaWduIAogICAgIHJldHVybiAwOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8TGluZXM+IGNy
ZWF0ZUxpbmVzKFJlbmRlckJsb2NrRmxvdyYgZmxvdykKK3N0ZDo6dW5pcXVlX3B0cjxMYXlvdXQ+
IGNyZWF0ZShSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCiB7Ci0gICAgYXV0byBsaW5lcyA9IHN0ZDo6
bWFrZV91bmlxdWU8TGluZXM+KCk7CisgICAgYXV0byBsYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVl
PExheW91dD4oKTsKIAogICAgIFJlbmRlclRleHQmIHRleHRSZW5kZXJlciA9IHRvUmVuZGVyVGV4
dCgqZmxvdy5maXJzdENoaWxkKCkpOwogICAgIEFTU0VSVCghdGV4dFJlbmRlcmVyLmZpcnN0VGV4
dEJveCgpKTsKQEAgLTI5MiwxOSArMjkyLDIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxMaW5lcz4gY3Jl
YXRlTGluZXMoUmVuZGUKICAgICAgICAgZmxvYXQgYWxpZ25lZExlZnQgPSBjb21wdXRlTGluZUxl
ZnQodGV4dEFsaWduLCBsaW5lV2lkdGguYXZhaWxhYmxlV2lkdGgoKSAtIGxpbmVXaWR0aC5jb21t
aXR0ZWRXaWR0aCgpKTsKICAgICAgICAgZmxvYXQgYWxpZ25lZFJpZ2h0ID0gYWxpZ25lZExlZnQg
KyBsaW5lV2lkdGguY29tbWl0dGVkV2lkdGgoKTsKIAotICAgICAgICBMaW5lIGxpbmU7Ci0gICAg
ICAgIGxpbmUudGV4dE9mZnNldCA9IGxpbmVTdGFydE9mZnNldDsKLSAgICAgICAgbGluZS50ZXh0
TGVuZ3RoID0gbGluZUVuZE9mZnNldCAtIGxpbmVTdGFydE9mZnNldDsKLSAgICAgICAgbGluZS5s
ZWZ0ID0gZmxvb3IoYWxpZ25lZExlZnQpOwotICAgICAgICBsaW5lLndpZHRoID0gY2VpbChhbGln
bmVkUmlnaHQpIC0gbGluZS5sZWZ0OworICAgICAgICBSdW4gcnVuOworICAgICAgICBydW4udGV4
dE9mZnNldCA9IGxpbmVTdGFydE9mZnNldDsKKyAgICAgICAgcnVuLnRleHRMZW5ndGggPSBsaW5l
RW5kT2Zmc2V0IC0gbGluZVN0YXJ0T2Zmc2V0OworICAgICAgICBydW4ubGVmdCA9IGZsb29yKGFs
aWduZWRMZWZ0KTsKKyAgICAgICAgcnVuLndpZHRoID0gY2VpbChhbGlnbmVkUmlnaHQpIC0gcnVu
LmxlZnQ7CiAKLSAgICAgICAgbGluZXMtPmFwcGVuZChsaW5lKTsKKyAgICAgICAgbGF5b3V0LT5y
dW5zLmFwcGVuZChydW4pOworICAgICAgICBsYXlvdXQtPmxpbmVDb3VudCsrOwogICAgIH0KIAog
ICAgIHRleHRSZW5kZXJlci5jbGVhck5lZWRzTGF5b3V0KCk7CiAKLSAgICBsaW5lcy0+c2hyaW5r
VG9GaXQoKTsKLSAgICByZXR1cm4gbGluZXM7CisgICAgbGF5b3V0LT5ydW5zLnNocmlua1RvRml0
KCk7CisgICAgcmV0dXJuIGxheW91dDsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oCShyZXZpc2lvbiAxNTgxMDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NywxNiArMzcsMjEgQEAgbmFtZXNwYWNlIFNpbXBsZUxpbmVMYXlvdXQgewogCiBib29sIGNhblVz
ZUZvcihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmKTsKIAotc3RydWN0IExpbmUgeworc3RydWN0IFJ1
biB7CiAgICAgdW5zaWduZWQgdGV4dE9mZnNldDsKICAgICB1bnNpZ25lZCB0ZXh0TGVuZ3RoOwog
ICAgIGZsb2F0IGxlZnQ7CiAgICAgZmxvYXQgd2lkdGg7CiB9OwogCi10eXBlZGVmIFZlY3RvcjxM
aW5lPiBMaW5lczsKK3N0cnVjdCBMYXlvdXQgeworICAgIExheW91dCgpIDogbGluZUNvdW50KDAp
IHsgfQogCi1zdGQ6OnVuaXF1ZV9wdHI8TGluZXM+IGNyZWF0ZUxpbmVzKFJlbmRlckJsb2NrRmxv
dyYpOworICAgIHVuc2lnbmVkIGxpbmVDb3VudDsKKyAgICBWZWN0b3I8UnVuPiBydW5zOworfTsK
Kworc3RkOjp1bmlxdWVfcHRyPExheW91dD4gY3JlYXRlKFJlbmRlckJsb2NrRmxvdyYpOwogCiB9
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXRGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAxNTgxMDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDcgKzQ1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBTaW1wbGVM
aW5lTGF5b3V0IHsKIAotdm9pZCBwYWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93
LCBjb25zdCBMaW5lcyYgbGluZXMsIFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQpCit2b2lkIHBhaW50Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
IGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0LCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0g
UGFpbnRQaGFzZUZvcmVncm91bmQpCiAgICAgICAgIHJldHVybjsKQEAgLTYyLDE5ICs2MiwxOSBA
QCB2b2lkIHBhaW50Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsCiAKICAgICB1cGRhdGVH
cmFwaGljc0NvbnRleHQoY29udGV4dCwgdGV4dFBhaW50U3R5bGUpOwogCi0gICAgUmVzb2x2ZXIg
cmVzb2x2ZXIobGluZXMsIGZsb3cpOworICAgIGF1dG8gcmVzb2x2ZXIgPSBydW5SZXNvbHZlcihm
bG93LCBsYXlvdXQpOwogICAgIGZvciAoYXV0byBpdCA9IHJlc29sdmVyLmJlZ2luKCksIGVuZCA9
IHJlc29sdmVyLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgYXV0byBsaW5lID0g
Kml0OwotICAgICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFRleHRSdW4obGluZS50ZXh0KCkp
LCBsaW5lLmJhc2VsaW5lKCkgKyBwYWludE9mZnNldCk7CisgICAgICAgIGF1dG8gcnVuID0gKml0
OworICAgICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFRleHRSdW4ocnVuLnRleHQoKSksIHJ1
bi5iYXNlbGluZSgpICsgcGFpbnRPZmZzZXQpOwogICAgIH0KIH0KIAotYm9vbCBoaXRUZXN0Rmxv
dyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExpbmVzJiBsaW5lcywgY29uc3Qg
SGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0
VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKK2Jvb2wgaGl0VGVz
dEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBMYXlvdXQmIGxheW91dCwg
Y29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29u
c3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2lu
dCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKIHsKICAg
ICBpZiAoaGl0VGVzdEFjdGlvbiAhPSBIaXRUZXN0Rm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgaWYgKGxpbmVzLmlzRW1wdHkoKSkKKyAgICBpZiAobGF5b3V0LnJ1bnMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBSZW5kZXJTdHlsZSYgc3R5
bGUgPSAqZmxvdy5zdHlsZSgpOwpAQCAtODMsNyArODMsNyBAQCBib29sIGhpdFRlc3RGbG93KGNv
bnN0IFJlbmRlckJsb2NrRmxvdyYgCiAKICAgICBSZW5kZXJUZXh0JiB0ZXh0UmVuZGVyZXIgPSB0
b1JlbmRlclRleHQoKmZsb3cuZmlyc3RDaGlsZCgpKTsKIAotICAgIFJlc29sdmVyIHJlc29sdmVy
KGxpbmVzLCBmbG93KTsKKyAgICBhdXRvIHJlc29sdmVyID0gbGluZVJlc29sdmVyKGZsb3csIGxh
eW91dCk7CiAgICAgZm9yIChhdXRvIGl0ID0gcmVzb2x2ZXIuYmVnaW4oKSwgZW5kID0gcmVzb2x2
ZXIuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBhdXRvIGxpbmUgPSAqaXQ7CiAg
ICAgICAgIGF1dG8gbGluZVJlY3QgPSBsaW5lLnJlY3QoKTsKQEAgLTk4LDkgKzk4LDkgQEAgYm9v
bCBoaXRUZXN0Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBjb2xsZWN0Rmxvd092ZXJmbG93KFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29u
c3QgTGluZXMmIGxpbmVzKQordm9pZCBjb2xsZWN0Rmxvd092ZXJmbG93KFJlbmRlckJsb2NrRmxv
dyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQpCiB7Ci0gICAgUmVzb2x2ZXIgcmVzb2x2ZXIo
bGluZXMsIGZsb3cpOworICAgIGF1dG8gcmVzb2x2ZXIgPSBsaW5lUmVzb2x2ZXIoZmxvdywgbGF5
b3V0KTsKICAgICBmb3IgKGF1dG8gaXQgPSByZXNvbHZlci5iZWdpbigpLCBlbmQgPSByZXNvbHZl
ci5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGF1dG8gbGluZSA9ICppdDsKICAg
ICAgICAgYXV0byByZWN0ID0gbGluZS5yZWN0KCk7CkBAIC0xMDksOSArMTA5LDkgQEAgdm9pZCBj
b2xsZWN0Rmxvd092ZXJmbG93KFJlbmRlckJsb2NrRmxvdwogICAgIH0KIH0KIAotSW50UmVjdCBj
b21wdXRlVGV4dEJvdW5kaW5nQm94KGNvbnN0IFJlbmRlclRleHQmIHRleHRSZW5kZXJlciwgY29u
c3QgTGluZXMmIGxpbmVzKQorSW50UmVjdCBjb21wdXRlVGV4dEJvdW5kaW5nQm94KGNvbnN0IFJl
bmRlclRleHQmIHRleHRSZW5kZXJlciwgY29uc3QgTGF5b3V0JiBsYXlvdXQpCiB7Ci0gICAgUmVz
b2x2ZXIgcmVzb2x2ZXIobGluZXMsIHRvUmVuZGVyQmxvY2tGbG93KCp0ZXh0UmVuZGVyZXIucGFy
ZW50KCkpKTsKKyAgICBhdXRvIHJlc29sdmVyID0gbGluZVJlc29sdmVyKHRvUmVuZGVyQmxvY2tG
bG93KCp0ZXh0UmVuZGVyZXIucGFyZW50KCkpLCBsYXlvdXQpOwogICAgIGF1dG8gaXQgPSByZXNv
bHZlci5iZWdpbigpOwogICAgIGF1dG8gZW5kID0gcmVzb2x2ZXIuZW5kKCk7CiAgICAgaWYgKGl0
ID09IGVuZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRGdW5jdGlvbnMuaAkocmV2aXNpb24gMTU4MTA0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtNDIsMTkgKzQyLDE5IEBAIHN0cnVjdCBQYWludEluZm87CiAKIG5hbWVzcGFjZSBTaW1wbGVM
aW5lTGF5b3V0IHsKIAotTGF5b3V0VW5pdCBjb21wdXRlRmxvd0hlaWdodChjb25zdCBSZW5kZXJC
bG9ja0Zsb3cmLCBjb25zdCBMaW5lcyYpOwotTGF5b3V0VW5pdCBjb21wdXRlRmxvd0ZpcnN0TGlu
ZUJhc2VsaW5lKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IExpbmVzJik7Ci1MYXlvdXRV
bml0IGNvbXB1dGVGbG93TGFzdExpbmVCYXNlbGluZShjb25zdCBSZW5kZXJCbG9ja0Zsb3cmLCBj
b25zdCBMaW5lcyYpOwotCi12b2lkIHBhaW50Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmLCBj
b25zdCBMaW5lcyYsIFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCk7
Ci1ib29sIGhpdFRlc3RGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IExpbmVzJiwg
Y29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0
aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQsIEhpdFRlc3RBY3Rpb24pOwotdm9pZCBjb2xsZWN0Rmxvd092ZXJmbG93KFJlbmRlckJs
b2NrRmxvdyYsIGNvbnN0IExpbmVzJik7Ci0KLWJvb2wgaXNUZXh0UmVuZGVyZWQoY29uc3QgUmVu
ZGVyVGV4dCYsIGNvbnN0IExpbmVzJik7Ci1ib29sIGNvbnRhaW5zVGV4dENhcmV0T2Zmc2V0KGNv
bnN0IFJlbmRlclRleHQmLCBjb25zdCBMaW5lcyYsIHVuc2lnbmVkKTsKLXVuc2lnbmVkIGZpbmRU
ZXh0Q2FyZXRNaW5pbXVtT2Zmc2V0KGNvbnN0IFJlbmRlclRleHQmLCBjb25zdCBMaW5lcyYpOwot
dW5zaWduZWQgZmluZFRleHRDYXJldE1heGltdW1PZmZzZXQoY29uc3QgUmVuZGVyVGV4dCYsIGNv
bnN0IExpbmVzJik7Ci1JbnRSZWN0IGNvbXB1dGVUZXh0Qm91bmRpbmdCb3goY29uc3QgUmVuZGVy
VGV4dCYsIGNvbnN0IExpbmVzJik7CitMYXlvdXRVbml0IGNvbXB1dGVGbG93SGVpZ2h0KGNvbnN0
IFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IExheW91dCYpOworTGF5b3V0VW5pdCBjb21wdXRlRmxv
d0ZpcnN0TGluZUJhc2VsaW5lKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IExheW91dCYp
OworTGF5b3V0VW5pdCBjb21wdXRlRmxvd0xhc3RMaW5lQmFzZWxpbmUoY29uc3QgUmVuZGVyQmxv
Y2tGbG93JiwgY29uc3QgTGF5b3V0Jik7CisKK3ZvaWQgcGFpbnRGbG93KGNvbnN0IFJlbmRlckJs
b2NrRmxvdyYsIGNvbnN0IExheW91dCYsIFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCk7Citib29sIGhpdFRlc3RGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIGNv
bnN0IExheW91dCYsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0
IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQm
IGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKTsKK3ZvaWQgY29sbGVjdEZsb3dPdmVy
ZmxvdyhSZW5kZXJCbG9ja0Zsb3cmLCBjb25zdCBMYXlvdXQmKTsKKworYm9vbCBpc1RleHRSZW5k
ZXJlZChjb25zdCBSZW5kZXJUZXh0JiwgY29uc3QgTGF5b3V0Jik7Citib29sIGNvbnRhaW5zVGV4
dENhcmV0T2Zmc2V0KGNvbnN0IFJlbmRlclRleHQmLCBjb25zdCBMYXlvdXQmLCB1bnNpZ25lZCk7
Cit1bnNpZ25lZCBmaW5kVGV4dENhcmV0TWluaW11bU9mZnNldChjb25zdCBSZW5kZXJUZXh0Jiwg
Y29uc3QgTGF5b3V0Jik7Cit1bnNpZ25lZCBmaW5kVGV4dENhcmV0TWF4aW11bU9mZnNldChjb25z
dCBSZW5kZXJUZXh0JiwgY29uc3QgTGF5b3V0Jik7CitJbnRSZWN0IGNvbXB1dGVUZXh0Qm91bmRp
bmdCb3goY29uc3QgUmVuZGVyVGV4dCYsIGNvbnN0IExheW91dCYpOwogCiBMYXlvdXRVbml0IGxp
bmVIZWlnaHRGcm9tRmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmKTsKIExheW91dFVuaXQgYmFz
ZWxpbmVGcm9tRmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmKTsKQEAgLTYzLDQyICs2Myw0MiBA
QCBMYXlvdXRVbml0IGJhc2VsaW5lRnJvbUZsb3coY29uc3QgUmVuZGVyCiAKIG5hbWVzcGFjZSBT
aW1wbGVMaW5lTGF5b3V0IHsKIAotaW5saW5lIExheW91dFVuaXQgY29tcHV0ZUZsb3dIZWlnaHQo
Y29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBMaW5lcyYgbGluZXMpCitpbmxpbmUg
TGF5b3V0VW5pdCBjb21wdXRlRmxvd0hlaWdodChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3cs
IGNvbnN0IExheW91dCYgbGF5b3V0KQogewotICAgIHJldHVybiBsaW5lSGVpZ2h0RnJvbUZsb3co
ZmxvdykgKiBsaW5lcy5zaXplKCk7CisgICAgcmV0dXJuIGxpbmVIZWlnaHRGcm9tRmxvdyhmbG93
KSAqIGxheW91dC5saW5lQ291bnQ7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IGNvbXB1dGVGbG93
Rmlyc3RMaW5lQmFzZWxpbmUoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBMaW5l
cyYgbGluZXMpCitpbmxpbmUgTGF5b3V0VW5pdCBjb21wdXRlRmxvd0ZpcnN0TGluZUJhc2VsaW5l
KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQpCiB7Ci0g
ICAgQVNTRVJUX1VOVVNFRChsaW5lcywgIWxpbmVzLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUX1VO
VVNFRChsYXlvdXQsICFsYXlvdXQucnVucy5pc0VtcHR5KCkpOwogICAgIHJldHVybiBmbG93LmJv
cmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGJhc2VsaW5lRnJvbUZsb3coZmxvdyk7CiB9CiAKLWlu
bGluZSBMYXlvdXRVbml0IGNvbXB1dGVGbG93TGFzdExpbmVCYXNlbGluZShjb25zdCBSZW5kZXJC
bG9ja0Zsb3cmIGZsb3csIGNvbnN0IExpbmVzJiBsaW5lcykKK2lubGluZSBMYXlvdXRVbml0IGNv
bXB1dGVGbG93TGFzdExpbmVCYXNlbGluZShjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNv
bnN0IExheW91dCYgbGF5b3V0KQogewotICAgIEFTU0VSVCghbGluZXMuaXNFbXB0eSgpKTsKLSAg
ICByZXR1cm4gZmxvdy5ib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgKyBsaW5lSGVpZ2h0RnJvbUZs
b3coZmxvdykgKiAobGluZXMuc2l6ZSgpIC0gMSkgKyBiYXNlbGluZUZyb21GbG93KGZsb3cpOwor
ICAgIEFTU0VSVCghbGF5b3V0LnJ1bnMuaXNFbXB0eSgpKTsKKyAgICByZXR1cm4gZmxvdy5ib3Jk
ZXJBbmRQYWRkaW5nQmVmb3JlKCkgKyBsaW5lSGVpZ2h0RnJvbUZsb3coZmxvdykgKiAobGF5b3V0
LnJ1bnMuc2l6ZSgpIC0gMSkgKyBiYXNlbGluZUZyb21GbG93KGZsb3cpOwogfQogCi1pbmxpbmUg
dW5zaWduZWQgZmluZFRleHRDYXJldE1pbmltdW1PZmZzZXQoY29uc3QgUmVuZGVyVGV4dCYsIGNv
bnN0IExpbmVzJiBsaW5lcykKK2lubGluZSB1bnNpZ25lZCBmaW5kVGV4dENhcmV0TWluaW11bU9m
ZnNldChjb25zdCBSZW5kZXJUZXh0JiwgY29uc3QgTGF5b3V0JiBsYXlvdXQpCiB7Ci0gICAgaWYg
KGxpbmVzLmlzRW1wdHkoKSkKKyAgICBpZiAobGF5b3V0LnJ1bnMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICByZXR1cm4gbGluZXNbMF0udGV4dE9mZnNldDsKKyAgICByZXR1cm4g
bGF5b3V0LnJ1bnNbMF0udGV4dE9mZnNldDsKIH0KIAotaW5saW5lIHVuc2lnbmVkIGZpbmRUZXh0
Q2FyZXRNYXhpbXVtT2Zmc2V0KGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCBjb25zdCBMaW5l
cyYgbGluZXMpCitpbmxpbmUgdW5zaWduZWQgZmluZFRleHRDYXJldE1heGltdW1PZmZzZXQoY29u
c3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGNvbnN0IExheW91dCYgbGF5b3V0KQogewotICAgIGlm
IChsaW5lcy5pc0VtcHR5KCkpCisgICAgaWYgKGxheW91dC5ydW5zLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIHJlbmRlcmVyLnRleHRMZW5ndGgoKTsKLSAgICBhdXRvJiBsYXN0ID0gbGluZXNb
bGluZXMuc2l6ZSgpIC0gMV07CisgICAgYXV0byYgbGFzdCA9IGxheW91dC5ydW5zW2xheW91dC5y
dW5zLnNpemUoKSAtIDFdOwogICAgIHJldHVybiBsYXN0LnRleHRPZmZzZXQgKyBsYXN0LnRleHRM
ZW5ndGg7CiB9CiAKLWlubGluZSBib29sIGNvbnRhaW5zVGV4dENhcmV0T2Zmc2V0KGNvbnN0IFJl
bmRlclRleHQmLCBjb25zdCBMaW5lcyYgbGluZXMsIHVuc2lnbmVkIG9mZnNldCkKK2lubGluZSBi
b29sIGNvbnRhaW5zVGV4dENhcmV0T2Zmc2V0KGNvbnN0IFJlbmRlclRleHQmLCBjb25zdCBMYXlv
dXQmIGxheW91dCwgdW5zaWduZWQgb2Zmc2V0KQogewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsaW5lcy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBsaW5lID0gbGluZXNbaV07
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxheW91dC5ydW5zLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGF1dG8mIGxpbmUgPSBsYXlvdXQucnVuc1tpXTsKICAgICAgICAgaWYgKG9mZnNl
dCA8IGxpbmUudGV4dE9mZnNldCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
aWYgKG9mZnNldCA8PSBsaW5lLnRleHRPZmZzZXQgKyBsaW5lLnRleHRMZW5ndGgpCkBAIC0xMDcs
MTAgKzEwNywxMCBAQCBpbmxpbmUgYm9vbCBjb250YWluc1RleHRDYXJldE9mZnNldChjb25zCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbmxpbmUgYm9vbCBpc1RleHRSZW5kZXJlZChjb25zdCBS
ZW5kZXJUZXh0JiwgY29uc3QgTGluZXMmIGxpbmVzKQoraW5saW5lIGJvb2wgaXNUZXh0UmVuZGVy
ZWQoY29uc3QgUmVuZGVyVGV4dCYsIGNvbnN0IExheW91dCYgbGF5b3V0KQogewotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsaW5lcy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobGlu
ZXNbaV0udGV4dExlbmd0aCkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGF5b3V0LnJ1
bnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGxheW91dC5ydW5zW2ldLnRleHRMZW5ndGgp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVz
b2x2ZXIuaAkocmV2aXNpb24gMTU4MTA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCw5IEBA
IGNsYXNzIFJlc29sdmVyIHsKIHB1YmxpYzoKICAgICBjbGFzcyBJdGVyYXRvcjsKIAotICAgIGNs
YXNzIExpbmUgeworICAgIGNsYXNzIFJ1biB7CiAgICAgcHVibGljOgotICAgICAgICBMaW5lKGNv
bnN0IFJlc29sdmVyJiwgdW5zaWduZWQgbGluZUluZGV4KTsKKyAgICAgICAgUnVuKGNvbnN0IFJl
c29sdmVyJiwgdW5zaWduZWQgbGluZUluZGV4KTsKIAogICAgICAgICBMYXlvdXRSZWN0IHJlY3Qo
KSBjb25zdDsKICAgICAgICAgTGF5b3V0UG9pbnQgYmFzZWxpbmUoKSBjb25zdDsKQEAgLTYyLDE0
ICs2MiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRv
ciYpIGNvbnN0OwogICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3ImKSBjb25z
dDsKIAotICAgICAgICBMaW5lIG9wZXJhdG9yKigpIGNvbnN0OworICAgICAgICBSdW4gb3BlcmF0
b3IqKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBjb25zdCBSZXNvbHZlciYgbV9y
ZXNvbHZlcjsKICAgICAgICAgdW5zaWduZWQgbV9saW5lSW5kZXg7CiAgICAgfTsKIAotICAgIFJl
c29sdmVyKGNvbnN0IExpbmVzJiwgY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7CisgICAgUmVzb2x2
ZXIoY29uc3QgUmVuZGVyQmxvY2tGbG93JiwgY29uc3QgTGF5b3V0Jik7CiAKICAgICB1bnNpZ25l
ZCBzaXplKCkgY29uc3Q7CiAKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIEl0ZXJhdG9y
IG9wZXJhdG9yW10odW5zaWduZWQpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGNvbnN0IExpbmVz
JiBtX2xpbmVzOworICAgIGNvbnN0IExheW91dCYgbV9sYXlvdXQ7CiAgICAgY29uc3QgU3RyaW5n
IG1fc3RyaW5nOwogICAgIGNvbnN0IExheW91dFVuaXQgbV9saW5lSGVpZ2h0OwogICAgIGNvbnN0
IExheW91dFVuaXQgbV9iYXNlbGluZTsKQEAgLTg4LDMzICs4OCwzNiBAQCBwcml2YXRlOgogICAg
IGNvbnN0IExheW91dFBvaW50IG1fY29udGVudE9mZnNldDsKIH07CiAKLWlubGluZSBSZXNvbHZl
cjo6TGluZTo6TGluZShjb25zdCBSZXNvbHZlciYgcmVzb2x2ZXIsIHVuc2lnbmVkIGxpbmVJbmRl
eCkKK1Jlc29sdmVyIHJ1blJlc29sdmVyKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IExh
eW91dCYpOworUmVzb2x2ZXIgbGluZVJlc29sdmVyKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIGNv
bnN0IExheW91dCYpOworCitpbmxpbmUgUmVzb2x2ZXI6OlJ1bjo6UnVuKGNvbnN0IFJlc29sdmVy
JiByZXNvbHZlciwgdW5zaWduZWQgbGluZUluZGV4KQogICAgIDogbV9yZXNvbHZlcihyZXNvbHZl
cikKICAgICAsIG1fbGluZUluZGV4KGxpbmVJbmRleCkKIHsKIH0KIAotaW5saW5lIExheW91dFJl
Y3QgUmVzb2x2ZXI6OkxpbmU6OnJlY3QoKSBjb25zdAoraW5saW5lIExheW91dFJlY3QgUmVzb2x2
ZXI6OlJ1bjo6cmVjdCgpIGNvbnN0CiB7Ci0gICAgYXV0byYgbGluZSA9IG1fcmVzb2x2ZXIubV9s
aW5lc1ttX2xpbmVJbmRleF07CisgICAgYXV0byYgcnVuID0gbV9yZXNvbHZlci5tX2xheW91dC5y
dW5zW21fbGluZUluZGV4XTsKIAotICAgIExheW91dFBvaW50IGxpbmVQb3NpdGlvbihsaW5lLmxl
ZnQsIG1fcmVzb2x2ZXIubV9saW5lSGVpZ2h0ICogbV9saW5lSW5kZXggKyBtX3Jlc29sdmVyLm1f
YmFzZWxpbmUgLSBtX3Jlc29sdmVyLm1fYXNjZW50KTsKLSAgICBMYXlvdXRTaXplIGxpbmVTaXpl
KGxpbmUud2lkdGgsIG1fcmVzb2x2ZXIubV9hc2NlbnQgKyBtX3Jlc29sdmVyLm1fZGVzY2VudCk7
CisgICAgTGF5b3V0UG9pbnQgbGluZVBvc2l0aW9uKHJ1bi5sZWZ0LCBtX3Jlc29sdmVyLm1fbGlu
ZUhlaWdodCAqIG1fbGluZUluZGV4ICsgbV9yZXNvbHZlci5tX2Jhc2VsaW5lIC0gbV9yZXNvbHZl
ci5tX2FzY2VudCk7CisgICAgTGF5b3V0U2l6ZSBsaW5lU2l6ZShydW4ud2lkdGgsIG1fcmVzb2x2
ZXIubV9hc2NlbnQgKyBtX3Jlc29sdmVyLm1fZGVzY2VudCk7CiAgICAgcmV0dXJuIExheW91dFJl
Y3QobGluZVBvc2l0aW9uICsgbV9yZXNvbHZlci5tX2NvbnRlbnRPZmZzZXQsIGxpbmVTaXplKTsK
IH0KIAotaW5saW5lIExheW91dFBvaW50IFJlc29sdmVyOjpMaW5lOjpiYXNlbGluZSgpIGNvbnN0
CitpbmxpbmUgTGF5b3V0UG9pbnQgUmVzb2x2ZXI6OlJ1bjo6YmFzZWxpbmUoKSBjb25zdAogewot
ICAgIGF1dG8mIGxpbmUgPSBtX3Jlc29sdmVyLm1fbGluZXNbbV9saW5lSW5kZXhdOworICAgIGF1
dG8mIHJ1biA9IG1fcmVzb2x2ZXIubV9sYXlvdXQucnVuc1ttX2xpbmVJbmRleF07CiAKICAgICBm
bG9hdCBiYXNlbGluZVkgPSBtX3Jlc29sdmVyLm1fbGluZUhlaWdodCAqIG1fbGluZUluZGV4ICsg
bV9yZXNvbHZlci5tX2Jhc2VsaW5lOwotICAgIHJldHVybiBMYXlvdXRQb2ludChsaW5lLmxlZnQs
IGJhc2VsaW5lWSkgKyBtX3Jlc29sdmVyLm1fY29udGVudE9mZnNldDsKKyAgICByZXR1cm4gTGF5
b3V0UG9pbnQocnVuLmxlZnQsIGJhc2VsaW5lWSkgKyBtX3Jlc29sdmVyLm1fY29udGVudE9mZnNl
dDsKIH0KIAotaW5saW5lIFN0cmluZyBSZXNvbHZlcjo6TGluZTo6dGV4dCgpIGNvbnN0Citpbmxp
bmUgU3RyaW5nIFJlc29sdmVyOjpSdW46OnRleHQoKSBjb25zdAogewotICAgIGF1dG8mIGxpbmUg
PSBtX3Jlc29sdmVyLm1fbGluZXNbbV9saW5lSW5kZXhdOwotICAgIHJldHVybiBtX3Jlc29sdmVy
Lm1fc3RyaW5nLnN1YnN0cmluZ1NoYXJpbmdJbXBsKGxpbmUudGV4dE9mZnNldCwgbGluZS50ZXh0
TGVuZ3RoKTsKKyAgICBhdXRvJiBydW4gPSBtX3Jlc29sdmVyLm1fbGF5b3V0LnJ1bnNbbV9saW5l
SW5kZXhdOworICAgIHJldHVybiBtX3Jlc29sdmVyLm1fc3RyaW5nLnN1YnN0cmluZ1NoYXJpbmdJ
bXBsKHJ1bi50ZXh0T2Zmc2V0LCBydW4udGV4dExlbmd0aCk7CiB9CiAKIGlubGluZSBSZXNvbHZl
cjo6SXRlcmF0b3I6Okl0ZXJhdG9yKGNvbnN0IFJlc29sdmVyJiByZXNvbHZlciwgdW5zaWduZWQg
bGluZUluZGV4KQpAQCAtMTQ2LDEzICsxNDksMTMgQEAgaW5saW5lIGJvb2wgUmVzb2x2ZXI6Okl0
ZXJhdG9yOjpvcGVyYXRvcgogICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKIH0KIAotaW5s
aW5lIFJlc29sdmVyOjpMaW5lIFJlc29sdmVyOjpJdGVyYXRvcjo6b3BlcmF0b3IqKCkgY29uc3QK
K2lubGluZSBSZXNvbHZlcjo6UnVuIFJlc29sdmVyOjpJdGVyYXRvcjo6b3BlcmF0b3IqKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gTGluZShtX3Jlc29sdmVyLCBtX2xpbmVJbmRleCk7CisgICAgcmV0
dXJuIFJ1bihtX3Jlc29sdmVyLCBtX2xpbmVJbmRleCk7CiB9CiAKLWlubGluZSBSZXNvbHZlcjo6
UmVzb2x2ZXIoY29uc3QgTGluZXMmIGxpbmVzLCBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3cp
Ci0gICAgOiBtX2xpbmVzKGxpbmVzKQoraW5saW5lIFJlc29sdmVyOjpSZXNvbHZlcihjb25zdCBS
ZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0KQorICAgIDogbV9sYXlv
dXQobGF5b3V0KQogICAgICwgbV9zdHJpbmcodG9SZW5kZXJUZXh0KCpmbG93LmZpcnN0Q2hpbGQo
KSkudGV4dCgpKQogICAgICwgbV9saW5lSGVpZ2h0KGxpbmVIZWlnaHRGcm9tRmxvdyhmbG93KSkK
ICAgICAsIG1fYmFzZWxpbmUoYmFzZWxpbmVGcm9tRmxvdyhmbG93KSkKQEAgLTE2NCw3ICsxNjcs
NyBAQCBpbmxpbmUgUmVzb2x2ZXI6OlJlc29sdmVyKGNvbnN0IExpbmVzJiBsCiAKIGlubGluZSB1
bnNpZ25lZCBSZXNvbHZlcjo6c2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbGluZXMuc2l6
ZSgpOworICAgIHJldHVybiBtX2xheW91dC5ydW5zLnNpemUoKTsKIH0KIAogaW5saW5lIFJlc29s
dmVyOjpJdGVyYXRvciBSZXNvbHZlcjo6YmVnaW4oKSBjb25zdApAQCAtMTg5LDYgKzE5MiwxNiBA
QCBpbmxpbmUgUmVzb2x2ZXI6Okl0ZXJhdG9yIFJlc29sdmVyOjpvcGVyCiAgICAgcmV0dXJuIEl0
ZXJhdG9yKCp0aGlzLCBpbmRleCk7CiB9CiAKK2lubGluZSBSZXNvbHZlciBydW5SZXNvbHZlcihj
b25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0KQoreworICAg
IHJldHVybiBSZXNvbHZlcihmbG93LCBsYXlvdXQpOworfQorCitpbmxpbmUgUmVzb2x2ZXIgbGlu
ZVJlc29sdmVyKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlv
dXQpCit7CisgICAgcmV0dXJuIFJlc29sdmVyKGZsb3csIGxheW91dCk7Cit9CisKIH0KIH0KIAo=
</data>
<flag name="review"
          id="237994"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>