<?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>124035</bug_id>
          
          <creation_ts>2013-11-08 03:30:26 -0800</creation_ts>
          <short_desc>Templated LChar/UChar paths for simple line layout</short_desc>
          <delta_ts>2013-11-08 04:51:50 -0800</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>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>948596</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-11-08 03:30:26 -0800</bug_when>
    <thetext>less branches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948601</commentid>
    <comment_count>1</comment_count>
      <attachid>216372</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-11-08 03:51:35 -0800</bug_when>
    <thetext>Created attachment 216372
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948607</commentid>
    <comment_count>2</comment_count>
      <attachid>216372</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-11-08 04:39:11 -0800</bug_when>
    <thetext>Comment on attachment 216372
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948609</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-11-08 04:51:50 -0800</bug_when>
    <thetext>https://trac.webkit.org/r158918</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216372</attachid>
            <date>2013-11-08 03:51:35 -0800</date>
            <delta_ts>2013-11-08 04:39:10 -0800</delta_ts>
            <desc>patch</desc>
            <filename>simple-line-template.patch</filename>
            <type>text/plain</type>
            <size>22668</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODkxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDEzLTExLTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUZW1wbGF0ZWQgTENoYXIvVUNo
YXIgcGF0aHMgZm9yIHNpbXBsZSBsaW5lIGxheW91dAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MDM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpjYW5Vc2VGb3JUZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvcik6CisgICAgICAgIAor
ICAgICAgICAgICAgVXNlIGEgdGVtcGxhdGVkIGZ1bmN0aW9uIHRvIGNoZWNrIGZvciBpbGxlZ2Fs
IGNoYXJhY3RlcnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnNraXBX
aGl0ZXNwYWNlcyk6CisgICAgICAgIAorICAgICAgICAgICAgTWFrZSBhIHRlbXBsYXRlIGZ1bmN0
aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojp0ZXh0V2lkdGgpOgor
ICAgICAgICAKKyAgICAgICAgICAgIE1ha2UgYSB0ZW1wbGF0ZSBmdW5jdGlvbiBwbHVzIHNvbWUg
YXJndW1lbnQgY2hhbmdlcy4KKworICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6
Y3JlYXRlVGV4dFJ1bnMpOgorICAgICAgICAKKyAgICAgICAgICAgIFRlbXBsYXRlIGZ1bmN0aW9u
IGZvciBjcmVhdGluZyBydW5zIHdoaWxlIG9wZXJhdGluZyB3aXRoIGVpdGhlciBMQ2hhcnMgb3Ig
VUNoYXIuCisgICAgICAgICAgICBBbHNvIHNpbXBsaWZpZWQgbGluZSBicmVha2luZyBhbmQgdGV4
dCB3aWR0aCBtZWFzdXJpbmcgbG9naWMuCisKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVM
YXlvdXQ6OmNyZWF0ZSk6CisgICAgICAgIAorICAgICAgICAgICAgUGljayB0aGUgdGVtcGxhdGUu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwOgorICAgICAgICAqIHJlbmRl
cmluZy9icmVha19saW5lcy5oOgorICAgICAgICAKKyAgICAgICAgICAgIE1vdmUgdGhlIGltcGxl
bWVudGF0aW9uIHRvIHRoZSBoZWFkZXIgKGV4Y2VwdCBmb3IgdGhlIHRhYmxlKSBzbyB3ZSBjYW4g
dXNlIHRoZSB0ZW1wbGF0ZQorICAgICAgICAgICAgdmVyc2lvbnMgZGlyZWN0bHkuCisKKyAgICAg
ICAgKFdlYkNvcmU6OmlzQnJlYWthYmxlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxk
QnJlYWtBZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpuZWVkc0xpbmVCcmVha0l0ZXJhdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpuZXh0QnJlYWthYmxlUG9zaXRpb25JZ25vcmluZ05CU1ApOgorCiAyMDEzLTExLTA4ICBN
YXJpbyBTYW5jaGV6IFByYWRhICA8bWFyaW8ucHJhZGFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAg
QVg6IFtBVEtdIDxzcGFuPiBlbGVtZW50cyBleHBvc2VkIHRocm91Z2ggQVRLIHdoZW4gbm90IG5l
ZWRlZApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
LmNwcAkocmV2aXNpb24gMTU4ODg4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw5ICs0OSwzOCBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFNpbXBsZUxpbmVMYXlvdXQgewogCi1zdGF0aWMgaW5s
aW5lIGJvb2wgaXNXaGl0ZXNwYWNlKFVDaGFyIGNoYXJhY3RlcikKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGJvb2wgY2FuVXNlRm9yVGV4dChjb25zdCBDaGFyYWN0
ZXJUeXBlKiB0ZXh0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFNpbXBsZUZvbnREYXRhJiBmb250
RGF0YSkKIHsKLSAgICByZXR1cm4gY2hhcmFjdGVyID09ICcgJyB8fCBjaGFyYWN0ZXIgPT0gJ1x0
JyB8fCBjaGFyYWN0ZXIgPT0gJ1xuJzsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgVUNoYXIgY2hhcmFjdGVyID0gdGV4dFtpXTsKKyAgICAgICAg
aWYgKGNoYXJhY3RlciA9PSAnICcpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAv
LyBUaGVzZSB3b3VsZCBiZSBlYXN5IHRvIHN1cHBvcnQuCisgICAgICAgIGlmIChjaGFyYWN0ZXIg
PT0gbm9CcmVha1NwYWNlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAo
Y2hhcmFjdGVyID09IHNvZnRIeXBoZW4pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgVUNoYXJEaXJlY3Rpb24gZGlyZWN0aW9uID0gdV9jaGFyRGlyZWN0aW9uKGNoYXJhY3Rl
cik7CisgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gVV9SSUdIVF9UT19MRUZUIHx8IGRpcmVjdGlv
biA9PSBVX1JJR0hUX1RPX0xFRlRfQVJBQklDCisgICAgICAgICAgICB8fCBkaXJlY3Rpb24gPT0g
VV9SSUdIVF9UT19MRUZUX0VNQkVERElORyB8fCBkaXJlY3Rpb24gPT0gVV9SSUdIVF9UT19MRUZU
X09WRVJSSURFCisgICAgICAgICAgICB8fCBkaXJlY3Rpb24gPT0gVV9MRUZUX1RPX1JJR0hUX0VN
QkVERElORyB8fCBkaXJlY3Rpb24gPT0gVV9MRUZUX1RPX1JJR0hUX09WRVJSSURFCisgICAgICAg
ICAgICB8fCBkaXJlY3Rpb24gPT0gVV9QT1BfRElSRUNUSU9OQUxfRk9STUFUIHx8IGRpcmVjdGlv
biA9PSBVX0JPVU5EQVJZX05FVVRSQUwpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgaWYgKCFmb250RGF0YS5nbHlwaEZvckNoYXJhY3RlcihjaGFyYWN0ZXIpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj
IGJvb2wgY2FuVXNlRm9yVGV4dChjb25zdCBSZW5kZXJUZXh0JiB0ZXh0UmVuZGVyZXIsIGNvbnN0
IFNpbXBsZUZvbnREYXRhJiBmb250RGF0YSkKK3sKKyAgICBpZiAodGV4dFJlbmRlcmVyLmlzOEJp
dCgpKQorICAgICAgICByZXR1cm4gY2FuVXNlRm9yVGV4dCh0ZXh0UmVuZGVyZXIuY2hhcmFjdGVy
czgoKSwgdGV4dFJlbmRlcmVyLnRleHRMZW5ndGgoKSwgZm9udERhdGEpOworICAgIHJldHVybiBj
YW5Vc2VGb3JUZXh0KHRleHRSZW5kZXJlci5jaGFyYWN0ZXJzMTYoKSwgdGV4dFJlbmRlcmVyLnRl
eHRMZW5ndGgoKSwgZm9udERhdGEpOwogfQogCiBib29sIGNhblVzZUZvcihjb25zdCBSZW5kZXJC
bG9ja0Zsb3cmIGZsb3cpCkBAIC0xNjIsNTEgKzE5MSwzOCBAQCBib29sIGNhblVzZUZvcihjb25z
dCBSZW5kZXJCbG9ja0Zsb3cmIGZsCiAgICAgYXV0byYgcHJpbWFyeUZvbnREYXRhID0gKnN0eWxl
LmZvbnQoKS5wcmltYXJ5Rm9udCgpOwogICAgIGlmIChwcmltYXJ5Rm9udERhdGEuaXNMb2FkaW5n
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWNhblVzZUZvclRleHQodGV4dFJl
bmRlcmVyLCBwcmltYXJ5Rm9udERhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB1
bnNpZ25lZCBsZW5ndGggPSB0ZXh0UmVuZGVyZXIudGV4dExlbmd0aCgpOwotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBVQ2hhciBjaGFyYWN0ZXIg
PSB0ZXh0UmVuZGVyZXIuY2hhcmFjdGVyQXQoaSk7Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0g
JyAnKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLy8gVGhlc2Ugd291bGQgYmUg
ZWFzeSB0byBzdXBwb3J0LgotICAgICAgICBpZiAoY2hhcmFjdGVyID09IG5vQnJlYWtTcGFjZSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBzb2Z0
SHlwaGVuKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIFVDaGFyRGlyZWN0
aW9uIGRpcmVjdGlvbiA9IHVfY2hhckRpcmVjdGlvbihjaGFyYWN0ZXIpOwotICAgICAgICBpZiAo
ZGlyZWN0aW9uID09IFVfUklHSFRfVE9fTEVGVCB8fCBkaXJlY3Rpb24gPT0gVV9SSUdIVF9UT19M
RUZUX0FSQUJJQwotICAgICAgICAgICAgfHwgZGlyZWN0aW9uID09IFVfUklHSFRfVE9fTEVGVF9F
TUJFRERJTkcgfHwgZGlyZWN0aW9uID09IFVfUklHSFRfVE9fTEVGVF9PVkVSUklERQotICAgICAg
ICAgICAgfHwgZGlyZWN0aW9uID09IFVfTEVGVF9UT19SSUdIVF9FTUJFRERJTkcgfHwgZGlyZWN0
aW9uID09IFVfTEVGVF9UT19SSUdIVF9PVkVSUklERQotICAgICAgICAgICAgfHwgZGlyZWN0aW9u
ID09IFVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVCB8fCBkaXJlY3Rpb24gPT0gVV9CT1VOREFSWV9O
RVVUUkFMKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmICghcHJpbWFy
eUZvbnREYXRhLmdseXBoRm9yQ2hhcmFjdGVyKGNoYXJhY3RlcikpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIHVu
c2lnbmVkIHNraXBXaGl0ZXNwYWNlcyhjb25zdCBSZW5kZXJUZXh0JiB0ZXh0UmVuZGVyZXIsIHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorc3RhdGljIGlubGluZSBib29sIGlzV2hp
dGVzcGFjZShVQ2hhciBjaGFyYWN0ZXIpCit7CisgICAgcmV0dXJuIGNoYXJhY3RlciA9PSAnICcg
fHwgY2hhcmFjdGVyID09ICdcdCcgfHwgY2hhcmFjdGVyID09ICdcbic7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGlubGluZSB1bnNpZ25lZCBza2lwV2hp
dGVzcGFjZXMoY29uc3QgQ2hhcmFjdGVyVHlwZSogdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCiB7CiAgICAgZm9yICg7IG9mZnNldCA8IGxlbmd0aDsgKytvZmZzZXQpIHsK
LSAgICAgICAgaWYgKCFpc1doaXRlc3BhY2UodGV4dFJlbmRlcmVyLmNoYXJhY3RlckF0KG9mZnNl
dCkpKQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICghaXNXaGl0ZXNwYWNlKHRleHRb
b2Zmc2V0XSkpCisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0OwogICAgIH0KLSAgICByZXR1cm4g
b2Zmc2V0OworICAgIHJldHVybiBsZW5ndGg7CiB9CiAKLXN0YXRpYyBmbG9hdCB0ZXh0V2lkdGgo
Y29uc3QgUmVuZGVyVGV4dCYgdGV4dCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuZ3RoLCBm
bG9hdCB4UG9zaXRpb24sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3RlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGZsb2F0IHRleHRXaWR0aChjb25zdCBSZW5kZXJU
ZXh0JiByZW5kZXJUZXh0LCBjb25zdCBDaGFyYWN0ZXJUeXBlKiB0ZXh0LCB1bnNpZ25lZCB0ZXh0
TGVuZ3RoLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgZmxvYXQgeFBvc2l0aW9uLCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgaWYgKHN0eWxlLmZvbnQoKS5pc0ZpeGVkUGl0
Y2goKSB8fCAoIWZyb20gJiYgbGVuZ3RoID09IHRleHQudGV4dExlbmd0aCgpKSkKLSAgICAgICAg
cmV0dXJuIHRleHQud2lkdGgoZnJvbSwgbGVuZ3RoLCBzdHlsZS5mb250KCksIHhQb3NpdGlvbiwg
bnVsbHB0ciwgbnVsbHB0cik7CisgICAgaWYgKHN0eWxlLmZvbnQoKS5pc0ZpeGVkUGl0Y2goKSB8
fCAoIWZyb20gJiYgdG8gPT0gdGV4dExlbmd0aCkpCisgICAgICAgIHJldHVybiByZW5kZXJUZXh0
LndpZHRoKGZyb20sIHRvIC0gZnJvbSwgc3R5bGUuZm9udCgpLCB4UG9zaXRpb24sIG51bGxwdHIs
IG51bGxwdHIpOwogICAgIC8vIEZJWE1FOiBBZGQgdGVtcGxhdGVkIFVDaGFyL0xDaGFyIHBhdGhz
LgotICAgIFRleHRSdW4gcnVuID0gdGV4dC5pczhCaXQoKSA/IFRleHRSdW4odGV4dC5jaGFyYWN0
ZXJzOCgpICsgZnJvbSwgbGVuZ3RoKSA6IFRleHRSdW4odGV4dC5jaGFyYWN0ZXJzMTYoKSArIGZy
b20sIGxlbmd0aCk7Ci0gICAgcnVuLnNldENoYXJhY3RlcnNMZW5ndGgodGV4dC50ZXh0TGVuZ3Ro
KCkgLSBmcm9tKTsKKyAgICBUZXh0UnVuIHJ1bih0ZXh0ICsgZnJvbSwgdG8gLSBmcm9tKTsKKyAg
ICBydW4uc2V0WFBvcyh4UG9zaXRpb24pOworICAgIHJ1bi5zZXRDaGFyYWN0ZXJzTGVuZ3RoKHRl
eHRMZW5ndGggLSBmcm9tKTsKICAgICBBU1NFUlQocnVuLmNoYXJhY3RlcnNMZW5ndGgoKSA+PSBy
dW4ubGVuZ3RoKCkpOwogCi0gICAgcnVuLnNldFhQb3MoeFBvc2l0aW9uKTsKICAgICByZXR1cm4g
c3R5bGUuZm9udCgpLndpZHRoKHJ1bik7CiB9CiAKQEAgLTI0MCwyNiArMjU2LDIyIEBAIHN0YXRp
YyB2b2lkIGFkanVzdFJ1bk9mZnNldHMoVmVjdG9yPFJ1biwKICAgICB9CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxMYXlvdXQ+IGNyZWF0ZShSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgY3JlYXRlVGV4dFJ1bnMoUmVuZGVyQmxvY2tG
bG93JiBmbG93LCBSZW5kZXJUZXh0JiB0ZXh0UmVuZGVyZXIsIExheW91dDo6UnVuVmVjdG9yJiBy
dW5zLCB1bnNpZ25lZCYgbGluZUNvdW50KQogewotICAgIFJlbmRlclRleHQmIHRleHRSZW5kZXJl
ciA9IHRvUmVuZGVyVGV4dCgqZmxvdy5maXJzdENoaWxkKCkpOwotICAgIEFTU0VSVCghdGV4dFJl
bmRlcmVyLmZpcnN0VGV4dEJveCgpKTsKLQogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9
IGZsb3cuc3R5bGUoKTsKLSAgICBjb25zdCB1bnNpZ25lZCB0ZXh0TGVuZ3RoID0gdGV4dFJlbmRl
cmVyLnRleHRMZW5ndGgoKTsKIAogICAgIEVUZXh0QWxpZ24gdGV4dEFsaWduID0gc3R5bGUudGV4
dEFsaWduKCk7CiAgICAgZmxvYXQgd29yZFRyYWlsaW5nU3BhY2VXaWR0aCA9IHN0eWxlLmZvbnQo
KS53aWR0aChUZXh0UnVuKCZzcGFjZSwgMSkpOwogCi0gICAgTGF6eUxpbmVCcmVha0l0ZXJhdG9y
IGxpbmVCcmVha0l0ZXJhdG9yKHRleHRSZW5kZXJlci50ZXh0KCksIHN0eWxlLmxvY2FsZSgpKTsK
LSAgICBpbnQgbmV4dEJyZWFrYWJsZSA9IC0xOworICAgIGNvbnN0IENoYXJhY3RlclR5cGUqIHRl
eHQgPSB0ZXh0UmVuZGVyZXIudGV4dCgpLT5nZXRDaGFyYWN0ZXJzPENoYXJhY3RlclR5cGU+KCk7
CisgICAgY29uc3QgdW5zaWduZWQgdGV4dExlbmd0aCA9IHRleHRSZW5kZXJlci50ZXh0TGVuZ3Ro
KCk7CiAKLSAgICBMYXlvdXQ6OlJ1blZlY3RvciBydW5zOwotICAgIHVuc2lnbmVkIGxpbmVDb3Vu
dCA9IDA7CisgICAgTGF6eUxpbmVCcmVha0l0ZXJhdG9yIGxpbmVCcmVha0l0ZXJhdG9yKHRleHRS
ZW5kZXJlci50ZXh0KCksIHN0eWxlLmxvY2FsZSgpKTsKIAogICAgIHVuc2lnbmVkIGxpbmVFbmRP
ZmZzZXQgPSAwOwogICAgIHdoaWxlIChsaW5lRW5kT2Zmc2V0IDwgdGV4dExlbmd0aCkgewotICAg
ICAgICBsaW5lRW5kT2Zmc2V0ID0gc2tpcFdoaXRlc3BhY2VzKHRleHRSZW5kZXJlciwgbGluZUVu
ZE9mZnNldCwgdGV4dExlbmd0aCk7CisgICAgICAgIGxpbmVFbmRPZmZzZXQgPSBza2lwV2hpdGVz
cGFjZXModGV4dCwgbGluZUVuZE9mZnNldCwgdGV4dExlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVk
IGxpbmVTdGFydE9mZnNldCA9IGxpbmVFbmRPZmZzZXQ7CiAgICAgICAgIHVuc2lnbmVkIHdvcmRF
bmRPZmZzZXQgPSBsaW5lRW5kT2Zmc2V0OwogICAgICAgICBMaW5lV2lkdGggbGluZVdpZHRoKGZs
b3csIGZhbHNlLCBEb05vdEluZGVudFRleHQpOwpAQCAtMjY4LDI1ICsyODAsMjAgQEAgc3RkOjp1
bmlxdWVfcHRyPExheW91dD4gY3JlYXRlKFJlbmRlckJsbwogICAgICAgICBsaW5lUnVucy51bmNo
ZWNrZWRBcHBlbmQoUnVuKGxpbmVTdGFydE9mZnNldCwgMCkpOwogCiAgICAgICAgIHdoaWxlICh3
b3JkRW5kT2Zmc2V0IDwgdGV4dExlbmd0aCkgewotICAgICAgICAgICAgQVNTRVJUKCFpc1doaXRl
c3BhY2UodGV4dFJlbmRlcmVyLmNoYXJhY3RlckF0KHdvcmRFbmRPZmZzZXQpKSk7CisgICAgICAg
ICAgICBBU1NFUlQoIWlzV2hpdGVzcGFjZSh0ZXh0W3dvcmRFbmRPZmZzZXRdKSk7CiAKLSAgICAg
ICAgICAgIGJvb2wgcHJldmlvdXNXYXNTcGFjZUJldHdlZW5Xb3JkcyA9IHdvcmRFbmRPZmZzZXQg
PiBsaW5lU3RhcnRPZmZzZXQgJiYgaXNXaGl0ZXNwYWNlKHRleHRSZW5kZXJlci5jaGFyYWN0ZXJB
dCh3b3JkRW5kT2Zmc2V0IC0gMSkpOworICAgICAgICAgICAgYm9vbCBwcmV2aW91c1dhc1NwYWNl
QmV0d2VlbldvcmRzID0gd29yZEVuZE9mZnNldCA+IGxpbmVTdGFydE9mZnNldCAmJiBpc1doaXRl
c3BhY2UodGV4dFt3b3JkRW5kT2Zmc2V0IC0gMV0pOwogICAgICAgICAgICAgdW5zaWduZWQgd29y
ZFN0YXJ0T2Zmc2V0ID0gcHJldmlvdXNXYXNTcGFjZUJldHdlZW5Xb3JkcyA/IHdvcmRFbmRPZmZz
ZXQgLSAxIDogd29yZEVuZE9mZnNldDsKIAotICAgICAgICAgICAgKyt3b3JkRW5kT2Zmc2V0Owot
ICAgICAgICAgICAgd2hpbGUgKHdvcmRFbmRPZmZzZXQgPCB0ZXh0TGVuZ3RoKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHdvcmRFbmRPZmZzZXQgPiBsaW5lU3RhcnRPZmZzZXQgJiYgaXNCcmVha2Fi
bGUobGluZUJyZWFrSXRlcmF0b3IsIHdvcmRFbmRPZmZzZXQsIG5leHRCcmVha2FibGUsIGZhbHNl
KSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgKyt3b3JkRW5k
T2Zmc2V0OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgd29yZEVuZE9mZnNldCA9IG5leHRC
cmVha2FibGVQb3NpdGlvbjxDaGFyYWN0ZXJUeXBlLCBmYWxzZT4obGluZUJyZWFrSXRlcmF0b3Is
IHRleHQsIHRleHRMZW5ndGgsIHdvcmRFbmRPZmZzZXQgKyAxKTsKKworICAgICAgICAgICAgYm9v
bCBtZWFzdXJlV2l0aEVuZFNwYWNlID0gd29yZEVuZE9mZnNldCA8IHRleHRMZW5ndGggJiYgdGV4
dFt3b3JkRW5kT2Zmc2V0XSA9PSAnICc7CisgICAgICAgICAgICB1bnNpZ25lZCBtZWFzdXJlRW5k
ID0gbWVhc3VyZVdpdGhFbmRTcGFjZSA/IHdvcmRFbmRPZmZzZXQgKyAxIDogd29yZEVuZE9mZnNl
dDsKIAotICAgICAgICAgICAgdW5zaWduZWQgd29yZExlbmd0aCA9IHdvcmRFbmRPZmZzZXQgLSB3
b3JkU3RhcnRPZmZzZXQ7Ci0gICAgICAgICAgICBib29sIGluY2x1ZGVFbmRTcGFjZSA9IHdvcmRF
bmRPZmZzZXQgPCB0ZXh0TGVuZ3RoICYmIHRleHRSZW5kZXJlci5jaGFyYWN0ZXJBdCh3b3JkRW5k
T2Zmc2V0KSA9PSAnICc7Ci0gICAgICAgICAgICBmbG9hdCB3b3JkV2lkdGg7Ci0gICAgICAgICAg
ICBpZiAoaW5jbHVkZUVuZFNwYWNlKQotICAgICAgICAgICAgICAgIHdvcmRXaWR0aCA9IHRleHRX
aWR0aCh0ZXh0UmVuZGVyZXIsIHdvcmRTdGFydE9mZnNldCwgd29yZExlbmd0aCArIDEsIGxpbmVX
aWR0aC5jb21taXR0ZWRXaWR0aCgpLCBzdHlsZSkgLSB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHdvcmRXaWR0aCA9IHRleHRXaWR0aCh0
ZXh0UmVuZGVyZXIsIHdvcmRTdGFydE9mZnNldCwgd29yZExlbmd0aCwgbGluZVdpZHRoLmNvbW1p
dHRlZFdpZHRoKCksIHN0eWxlKTsKKyAgICAgICAgICAgIGZsb2F0IHdvcmRXaWR0aCA9IHRleHRX
aWR0aCh0ZXh0UmVuZGVyZXIsIHRleHQsIHRleHRMZW5ndGgsIHdvcmRTdGFydE9mZnNldCwgbWVh
c3VyZUVuZCwgbGluZVdpZHRoLmNvbW1pdHRlZFdpZHRoKCksIHN0eWxlKTsKKworICAgICAgICAg
ICAgaWYgKG1lYXN1cmVXaXRoRW5kU3BhY2UpCisgICAgICAgICAgICAgICAgd29yZFdpZHRoIC09
IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7CiAKICAgICAgICAgICAgIGxpbmVXaWR0aC5hZGRVbmNv
bW1pdHRlZFdpZHRoKHdvcmRXaWR0aCk7CiAKQEAgLTMxMCw3ICszMTcsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8TGF5b3V0PiBjcmVhdGUoUmVuZGVyQmxvCiAgICAgICAgICAgICBsaW5lUnVucy5sYXN0
KCkudGV4dExlbmd0aCA9IHdvcmRFbmRPZmZzZXQgLSBsaW5lUnVucy5sYXN0KCkudGV4dE9mZnNl
dDsKIAogICAgICAgICAgICAgbGluZUVuZE9mZnNldCA9IHdvcmRFbmRPZmZzZXQ7Ci0gICAgICAg
ICAgICB3b3JkRW5kT2Zmc2V0ID0gc2tpcFdoaXRlc3BhY2VzKHRleHRSZW5kZXJlciwgd29yZEVu
ZE9mZnNldCwgdGV4dExlbmd0aCk7CisgICAgICAgICAgICB3b3JkRW5kT2Zmc2V0ID0gc2tpcFdo
aXRlc3BhY2VzKHRleHQsIHdvcmRFbmRPZmZzZXQsIHRleHRMZW5ndGgpOwogCiAgICAgICAgICAg
ICBpZiAoIWxpbmVXaWR0aC5maXRzT25MaW5lKCkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUg
Zmlyc3QgcnVuIG9uIHRoZSBsaW5lIG92ZXJmbG93cy4KQEAgLTMyOSw2ICszMzYsMjAgQEAgc3Rk
Ojp1bmlxdWVfcHRyPExheW91dD4gY3JlYXRlKFJlbmRlckJsbwogICAgICAgICBydW5zLmxhc3Qo
KS5pc0VuZE9mTGluZSA9IHRydWU7CiAgICAgICAgICsrbGluZUNvdW50OwogICAgIH0KK30KKwor
c3RkOjp1bmlxdWVfcHRyPExheW91dD4gY3JlYXRlKFJlbmRlckJsb2NrRmxvdyYgZmxvdykKK3sK
KyAgICBMYXlvdXQ6OlJ1blZlY3RvciBydW5zOworICAgIHVuc2lnbmVkIGxpbmVDb3VudCA9IDA7
CisKKyAgICBSZW5kZXJUZXh0JiB0ZXh0UmVuZGVyZXIgPSB0b1JlbmRlclRleHQoKmZsb3cuZmly
c3RDaGlsZCgpKTsKKyAgICBBU1NFUlQoIXRleHRSZW5kZXJlci5maXJzdFRleHRCb3goKSk7CisK
KyAgICBpZiAodGV4dFJlbmRlcmVyLmlzOEJpdCgpKQorICAgICAgICBjcmVhdGVUZXh0UnVuczxM
Q2hhcj4oZmxvdywgdGV4dFJlbmRlcmVyLCBydW5zLCBsaW5lQ291bnQpOworICAgIGVsc2UKKyAg
ICAgICAgY3JlYXRlVGV4dFJ1bnM8VUNoYXI+KGZsb3csIHRleHRSZW5kZXJlciwgcnVucywgbGlu
ZUNvdW50KTsKIAogICAgIHRleHRSZW5kZXJlci5jbGVhck5lZWRzTGF5b3V0KCk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcAkocmV2aXNpb24gMTU4ODg4
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsMjQgKzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0
ZTxib29sIHRyZWF0Tm9CcmVha1NwYWNlQXNCcmVhaz4KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0Jy
ZWFrYWJsZVNwYWNlKFVDaGFyIGNoKQotewotICAgIHN3aXRjaCAoY2gpIHsKLSAgICBjYXNlICcg
JzoKLSAgICBjYXNlICdcbic6Ci0gICAgY2FzZSAnXHQnOgotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBjYXNlIG5vQnJlYWtTcGFjZToKLSAgICAgICAgcmV0dXJuIHRyZWF0Tm9CcmVha1NwYWNl
QXNCcmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQot
Ci1zdGF0aWMgY29uc3QgVUNoYXIgYXNjaWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhciA9ICchJzsK
LXN0YXRpYyBjb25zdCBVQ2hhciBhc2NpaUxpbmVCcmVha1RhYmxlTGFzdENoYXIgPSAxMjc7Ci0K
IC8vIFBhY2sgOCBiaXRzIGludG8gb25lIGJ5dGUKICNkZWZpbmUgQihhLCBiLCBjLCBkLCBlLCBm
LCBnLCBoKSBcCiAgICAgKChhKSB8ICgoYikgPDwgMSkgfCAoKGMpIDw8IDIpIHwgKChkKSA8PCAz
KSB8ICgoZSkgPDwgNCkgfCAoKGYpIDw8IDUpIHwgKChnKSA8PCA2KSB8ICgoaCkgPDwgNykpCkBA
IC03Myw3ICs1NSw3IEBAIHN0YXRpYyBjb25zdCBVQ2hhciBhc2NpaUxpbmVCcmVha1RhYmxlTGEK
IC8vIC0gYWZ0ZXIgJy0nIGFuZCAnPycgKGJhY2t3YXJkLWNvbXBhdGlibGUsIGFuZCBjb21wYXRp
YmxlIHdpdGggSW50ZXJuZXQgRXhwbG9yZXIpLgogLy8gUGxlYXNlIHJlZmVyIHRvIDxodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2OTg+IGZvciBsaW5lIGJyZWFraW5n
IG1hdHJpeGVzIG9mIGRpZmZlcmVudCBicm93c2VycwogLy8gYW5kIHRoZSBJQ1Ugc3RhbmRhcmQu
Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhc2NpaUxpbmVCcmVha1RhYmxlW11bKGFzY2lp
TGluZUJyZWFrVGFibGVMYXN0Q2hhciAtIGFzY2lpTGluZUJyZWFrVGFibGVGaXJzdENoYXIpIC8g
OCArIDFdID0geworY29uc3QgdW5zaWduZWQgY2hhciBhc2NpaUxpbmVCcmVha1RhYmxlW11bYXNj
aWlMaW5lQnJlYWtUYWJsZUNvbHVtbkNvdW50XSA9IHsKICAgICAvLyAgISAgIiAgIyAgJCAgJSAg
JiAgJyAgKCAgICAgKSAgKiAgKyAgLCAgLSAgLiAgLyAgMCAgMS04ICAgOSAgOiAgOyAgPCAgPSAg
PiAgPyAgQCAgICAgQS1YICAgICAgWSAgWiAgWyAgXCAgXSAgXiAgXyAgYCAgICAgYS14ICAgICAg
eSAgeiAgeyAgfCAgfSAgfiAgREVMCiAgICAgeyBCKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEpLCBC
KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApLCAwLCBCKDAsIDAsIDAsIDEsIDAsIDAsIDAsIDApLCAw
LCAwLCAwLCBCKDAsIDAsIDEsIDAsIDAsIDAsIDAsIDApLCAwLCAwLCAwLCBCKDAsIDAsIDEsIDAs
IDAsIDAsIDAsIDApIH0sIC8vICEKICAgICB7IEIoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSksIEIo
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCksIDAsIEIoMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCksIDAs
IDAsIDAsIEIoMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCksIDAsIDAsIDAsIEIoMCwgMCwgMSwgMCwg
MCwgMCwgMCwgMCkgfSwgLy8gIgpAQCAtMTIwLDg1ICsxMDIsNCBAQCBzdGF0aWMgY29uc3QgdW5z
aWduZWQgY2hhciBhc2NpaUxpbmVCcmVhCiAKIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5H
VEgoYXNjaWlMaW5lQnJlYWtUYWJsZSkgPT0gYXNjaWlMaW5lQnJlYWtUYWJsZUxhc3RDaGFyIC0g
YXNjaWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhciArIDEsIFRlc3RMaW5lQnJlYWtUYWJsZUNvbnNp
c3RlbmN5KTsKIAotc3RhdGljIGlubGluZSBib29sIHNob3VsZEJyZWFrQWZ0ZXIoVUNoYXIgbGFz
dENoLCBVQ2hhciBjaCwgVUNoYXIgbmV4dENoKQotewotICAgIC8vIERvbid0IGFsbG93IGxpbmUg
YnJlYWtpbmcgYmV0d2VlbiAnLScgYW5kIGEgZGlnaXQgaWYgdGhlICctJyBtYXkgbWVhbiBhIG1p
bnVzIHNpZ24gaW4gdGhlIGNvbnRleHQsCi0gICAgLy8gd2hpbGUgYWxsb3cgYnJlYWtpbmcgaW4g
J0FCQ0QtMTIzNCcgYW5kICcxMjM0LTU2NzgnIHdoaWNoIG1heSBiZSBpbiBsb25nIFVSTHMuCi0g
ICAgaWYgKGNoID09ICctJyAmJiBpc0FTQ0lJRGlnaXQobmV4dENoKSkKLSAgICAgICAgcmV0dXJu
IGlzQVNDSUlBbHBoYW51bWVyaWMobGFzdENoKTsKLQotICAgIC8vIElmIGJvdGggY2ggYW5kIG5l
eHRDaCBhcmUgQVNDSUkgY2hhcmFjdGVycywgdXNlIGEgbG9va3VwIHRhYmxlIGZvciBlbmhhbmNl
ZCBzcGVlZCBhbmQgZm9yIGNvbXBhdGliaWxpdHkKLSAgICAvLyB3aXRoIG90aGVyIGJyb3dzZXJz
IChzZWUgY29tbWVudHMgZm9yIGFzY2lpTGluZUJyZWFrVGFibGUgZm9yIGRldGFpbHMpLgotICAg
IGlmIChjaCA+PSBhc2NpaUxpbmVCcmVha1RhYmxlRmlyc3RDaGFyICYmIGNoIDw9IGFzY2lpTGlu
ZUJyZWFrVGFibGVMYXN0Q2hhcgotICAgICAgICAgICAgJiYgbmV4dENoID49IGFzY2lpTGluZUJy
ZWFrVGFibGVGaXJzdENoYXIgJiYgbmV4dENoIDw9IGFzY2lpTGluZUJyZWFrVGFibGVMYXN0Q2hh
cikgewotICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiB0YWJsZVJvdyA9IGFzY2lpTGluZUJy
ZWFrVGFibGVbY2ggLSBhc2NpaUxpbmVCcmVha1RhYmxlRmlyc3RDaGFyXTsKLSAgICAgICAgaW50
IG5leHRDaEluZGV4ID0gbmV4dENoIC0gYXNjaWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhcjsKLSAg
ICAgICAgcmV0dXJuIHRhYmxlUm93W25leHRDaEluZGV4IC8gOF0gJiAoMSA8PCAobmV4dENoSW5k
ZXggJSA4KSk7Ci0gICAgfQotICAgIC8vIE90aGVyd2lzZSBkZWZlciB0byB0aGUgVW5pY29kZSBh
bGdvcml0aG0gYnkgcmV0dXJuaW5nIGZhbHNlLgotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVt
cGxhdGU8Ym9vbCB0cmVhdE5vQnJlYWtTcGFjZUFzQnJlYWs+Ci1pbmxpbmUgYm9vbCBuZWVkc0xp
bmVCcmVha0l0ZXJhdG9yKFVDaGFyIGNoKQotewotICAgIGlmICh0cmVhdE5vQnJlYWtTcGFjZUFz
QnJlYWspCi0gICAgICAgIHJldHVybiBjaCA+IGFzY2lpTGluZUJyZWFrVGFibGVMYXN0Q2hhcjsK
LSAgICByZXR1cm4gY2ggPiBhc2NpaUxpbmVCcmVha1RhYmxlTGFzdENoYXIgJiYgY2ggIT0gbm9C
cmVha1NwYWNlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBib29sIHRy
ZWF0Tm9CcmVha1NwYWNlQXNCcmVhaz4KLXN0YXRpYyBpbmxpbmUgaW50IG5leHRCcmVha2FibGVQ
b3NpdGlvbihMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9yLCBjb25zdCBD
aGFyYWN0ZXJUeXBlKiBzdHIsIHVuc2lnbmVkIGxlbmd0aCwgaW50IHBvcykKLXsKLSAgICBpbnQg
bGVuID0gc3RhdGljX2Nhc3Q8aW50PihsZW5ndGgpOwotICAgIGludCBuZXh0QnJlYWsgPSAtMTsK
LQotICAgIENoYXJhY3RlclR5cGUgbGFzdExhc3RDaCA9IHBvcyA+IDEgPyBzdHJbcG9zIC0gMl0g
OiBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJUeXBlPihsYXp5QnJlYWtJdGVyYXRvci5zZWNvbmRUb0xh
c3RDaGFyYWN0ZXIoKSk7Ci0gICAgQ2hhcmFjdGVyVHlwZSBsYXN0Q2ggPSBwb3MgPiAwID8gc3Ry
W3BvcyAtIDFdIDogc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyVHlwZT4obGF6eUJyZWFrSXRlcmF0b3Iu
bGFzdENoYXJhY3RlcigpKTsKLSAgICB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGggPSBsYXp5
QnJlYWtJdGVyYXRvci5wcmlvckNvbnRleHRMZW5ndGgoKTsKLSAgICBmb3IgKGludCBpID0gcG9z
OyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgQ2hhcmFjdGVyVHlwZSBjaCA9IHN0cltpXTsKLQot
ICAgICAgICBpZiAoaXNCcmVha2FibGVTcGFjZTx0cmVhdE5vQnJlYWtTcGFjZUFzQnJlYWs+KGNo
KSB8fCBzaG91bGRCcmVha0FmdGVyKGxhc3RMYXN0Q2gsIGxhc3RDaCwgY2gpKQotICAgICAgICAg
ICAgcmV0dXJuIGk7Ci0KLSAgICAgICAgaWYgKG5lZWRzTGluZUJyZWFrSXRlcmF0b3I8dHJlYXRO
b0JyZWFrU3BhY2VBc0JyZWFrPihjaCkgfHwgbmVlZHNMaW5lQnJlYWtJdGVyYXRvcjx0cmVhdE5v
QnJlYWtTcGFjZUFzQnJlYWs+KGxhc3RDaCkpIHsKLSAgICAgICAgICAgIGlmIChuZXh0QnJlYWsg
PCBpKSB7Ci0gICAgICAgICAgICAgICAgLy8gRG9uJ3QgYnJlYWsgaWYgcG9zaXRpb25lZCBhdCBz
dGFydCBvZiBwcmltYXJ5IGNvbnRleHQgYW5kIHRoZXJlIGlzIG5vIHByaW9yIGNvbnRleHQuCi0g
ICAgICAgICAgICAgICAgaWYgKGkgfHwgcHJpb3JDb250ZXh0TGVuZ3RoKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBicmVha0l0ZXJhdG9yID0gbGF6eUJyZWFrSXRl
cmF0b3IuZ2V0KHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChi
cmVha0l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0QnJlYWsgPSB0ZXh0
QnJlYWtGb2xsb3dpbmcoYnJlYWtJdGVyYXRvciwgaSAtIDEgKyBwcmlvckNvbnRleHRMZW5ndGgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRCcmVhayA+PSAwKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5leHRCcmVhayAtPSBwcmlvckNvbnRleHRMZW5ndGg7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAoaSA9PSBuZXh0QnJlYWsgJiYgIWlzQnJlYWthYmxlU3BhY2U8dHJlYXROb0Jy
ZWFrU3BhY2VBc0JyZWFrPihsYXN0Q2gpKQotICAgICAgICAgICAgICAgIHJldHVybiBpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgbGFzdExhc3RDaCA9IGxhc3RDaDsKLSAgICAgICAgbGFzdENoID0g
Y2g7Ci0gICAgfQotCi0gICAgcmV0dXJuIGxlbjsKLX0KLQotaW50IG5leHRCcmVha2FibGVQb3Np
dGlvbklnbm9yaW5nTkJTUChMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9y
LCBpbnQgcG9zKQotewotICAgIFN0cmluZyBzdHJpbmcgPSBsYXp5QnJlYWtJdGVyYXRvci5zdHJp
bmcoKTsKLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gbmV4dEJyZWFr
YWJsZVBvc2l0aW9uPExDaGFyLCBmYWxzZT4obGF6eUJyZWFrSXRlcmF0b3IsIHN0cmluZy5jaGFy
YWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCksIHBvcyk7Ci0gICAgcmV0dXJuIG5leHRCcmVha2Fi
bGVQb3NpdGlvbjxVQ2hhciwgZmFsc2U+KGxhenlCcmVha0l0ZXJhdG9yLCBzdHJpbmcuY2hhcmFj
dGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwgcG9zKTsKLX0KLQotaW50IG5leHRCcmVha2FibGVQ
b3NpdGlvbihMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9yLCBpbnQgcG9z
KQotewotICAgIFN0cmluZyBzdHJpbmcgPSBsYXp5QnJlYWtJdGVyYXRvci5zdHJpbmcoKTsKLSAg
ICBpZiAoc3RyaW5nLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0
aW9uPExDaGFyLCB0cnVlPihsYXp5QnJlYWtJdGVyYXRvciwgc3RyaW5nLmNoYXJhY3RlcnM4KCks
IHN0cmluZy5sZW5ndGgoKSwgcG9zKTsKLSAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9u
PFVDaGFyLCB0cnVlPihsYXp5QnJlYWtJdGVyYXRvciwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBz
dHJpbmcubGVuZ3RoKCksIHBvcyk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5oCShyZXZpc2lvbiAxNTg4ODgpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIs
IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNywgMjAxMCwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsMTUgKzIyLDEx
OCBAQAogI2lmbmRlZiBicmVha19saW5lc19oCiAjZGVmaW5lIGJyZWFrX2xpbmVzX2gKIAorI2lu
Y2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4K
KyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hh
cmFjdGVyTmFtZXMuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTGF6eUxpbmVCcmVha0l0ZXJhdG9yOworc3RhdGljIGNv
bnN0IFVDaGFyIGFzY2lpTGluZUJyZWFrVGFibGVGaXJzdENoYXIgPSAnISc7CitzdGF0aWMgY29u
c3QgVUNoYXIgYXNjaWlMaW5lQnJlYWtUYWJsZUxhc3RDaGFyID0gMTI3Oworc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGFzY2lpTGluZUJyZWFrVGFibGVDb2x1bW5Db3VudCA9IChhc2NpaUxpbmVCcmVh
a1RhYmxlTGFzdENoYXIgLSBhc2NpaUxpbmVCcmVha1RhYmxlRmlyc3RDaGFyKSAvIDggKyAxOwor
CitleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBhc2NpaUxpbmVCcmVha1RhYmxlW11bYXNjaWlM
aW5lQnJlYWtUYWJsZUNvbHVtbkNvdW50XTsKIAogaW50IG5leHRCcmVha2FibGVQb3NpdGlvbkln
bm9yaW5nTkJTUChMYXp5TGluZUJyZWFrSXRlcmF0b3ImLCBpbnQgcG9zKTsKIGludCBuZXh0QnJl
YWthYmxlUG9zaXRpb24oTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiwgaW50IHBvcyk7CiAKK3RlbXBs
YXRlPGJvb2wgdHJlYXROb0JyZWFrU3BhY2VBc0JyZWFrPgorc3RhdGljIGlubGluZSBib29sIGlz
QnJlYWthYmxlU3BhY2UoVUNoYXIgY2gpCit7CisgICAgc3dpdGNoIChjaCkgeworICAgIGNhc2Ug
JyAnOgorICAgIGNhc2UgJ1xuJzoKKyAgICBjYXNlICdcdCc6CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGNhc2Ugbm9CcmVha1NwYWNlOgorICAgICAgICByZXR1cm4gdHJlYXROb0JyZWFrU3Bh
Y2VBc0JyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9
CisKK2lubGluZSBib29sIHNob3VsZEJyZWFrQWZ0ZXIoVUNoYXIgbGFzdENoLCBVQ2hhciBjaCwg
VUNoYXIgbmV4dENoKQoreworICAgIC8vIERvbid0IGFsbG93IGxpbmUgYnJlYWtpbmcgYmV0d2Vl
biAnLScgYW5kIGEgZGlnaXQgaWYgdGhlICctJyBtYXkgbWVhbiBhIG1pbnVzIHNpZ24gaW4gdGhl
IGNvbnRleHQsCisgICAgLy8gd2hpbGUgYWxsb3cgYnJlYWtpbmcgaW4gJ0FCQ0QtMTIzNCcgYW5k
ICcxMjM0LTU2NzgnIHdoaWNoIG1heSBiZSBpbiBsb25nIFVSTHMuCisgICAgaWYgKGNoID09ICct
JyAmJiBpc0FTQ0lJRGlnaXQobmV4dENoKSkKKyAgICAgICAgcmV0dXJuIGlzQVNDSUlBbHBoYW51
bWVyaWMobGFzdENoKTsKKworICAgIC8vIElmIGJvdGggY2ggYW5kIG5leHRDaCBhcmUgQVNDSUkg
Y2hhcmFjdGVycywgdXNlIGEgbG9va3VwIHRhYmxlIGZvciBlbmhhbmNlZCBzcGVlZCBhbmQgZm9y
IGNvbXBhdGliaWxpdHkKKyAgICAvLyB3aXRoIG90aGVyIGJyb3dzZXJzIChzZWUgY29tbWVudHMg
Zm9yIGFzY2lpTGluZUJyZWFrVGFibGUgZm9yIGRldGFpbHMpLgorICAgIGlmIChjaCA+PSBhc2Np
aUxpbmVCcmVha1RhYmxlRmlyc3RDaGFyICYmIGNoIDw9IGFzY2lpTGluZUJyZWFrVGFibGVMYXN0
Q2hhciAmJiBuZXh0Q2ggPj0gYXNjaWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhciAmJiBuZXh0Q2gg
PD0gYXNjaWlMaW5lQnJlYWtUYWJsZUxhc3RDaGFyKSB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIqIHRhYmxlUm93ID0gYXNjaWlMaW5lQnJlYWtUYWJsZVtjaCAtIGFzY2lpTGluZUJyZWFr
VGFibGVGaXJzdENoYXJdOworICAgICAgICBpbnQgbmV4dENoSW5kZXggPSBuZXh0Q2ggLSBhc2Np
aUxpbmVCcmVha1RhYmxlRmlyc3RDaGFyOworICAgICAgICByZXR1cm4gdGFibGVSb3dbbmV4dENo
SW5kZXggLyA4XSAmICgxIDw8IChuZXh0Q2hJbmRleCAlIDgpKTsKKyAgICB9CisgICAgLy8gT3Ro
ZXJ3aXNlIGRlZmVyIHRvIHRoZSBVbmljb2RlIGFsZ29yaXRobSBieSByZXR1cm5pbmcgZmFsc2Uu
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit0ZW1wbGF0ZTxib29sIHRyZWF0Tm9CcmVha1NwYWNl
QXNCcmVhaz4KK2lubGluZSBib29sIG5lZWRzTGluZUJyZWFrSXRlcmF0b3IoVUNoYXIgY2gpCit7
CisgICAgaWYgKHRyZWF0Tm9CcmVha1NwYWNlQXNCcmVhaykKKyAgICAgICAgcmV0dXJuIGNoID4g
YXNjaWlMaW5lQnJlYWtUYWJsZUxhc3RDaGFyOworICAgIHJldHVybiBjaCA+IGFzY2lpTGluZUJy
ZWFrVGFibGVMYXN0Q2hhciAmJiBjaCAhPSBub0JyZWFrU3BhY2U7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGUsIGJvb2wgdHJlYXROb0JyZWFrU3BhY2VBc0JyZWFrPgoraW5s
aW5lIGludCBuZXh0QnJlYWthYmxlUG9zaXRpb24oTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5
QnJlYWtJdGVyYXRvciwgY29uc3QgQ2hhcmFjdGVyVHlwZSogc3RyLCB1bnNpZ25lZCBsZW5ndGgs
IGludCBwb3MpCit7CisgICAgaW50IGxlbiA9IHN0YXRpY19jYXN0PGludD4obGVuZ3RoKTsKKyAg
ICBpbnQgbmV4dEJyZWFrID0gLTE7CisKKyAgICBDaGFyYWN0ZXJUeXBlIGxhc3RMYXN0Q2ggPSBw
b3MgPiAxID8gc3RyW3BvcyAtIDJdIDogc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyVHlwZT4obGF6eUJy
ZWFrSXRlcmF0b3Iuc2Vjb25kVG9MYXN0Q2hhcmFjdGVyKCkpOworICAgIENoYXJhY3RlclR5cGUg
bGFzdENoID0gcG9zID4gMCA/IHN0cltwb3MgLSAxXSA6IHN0YXRpY19jYXN0PENoYXJhY3RlclR5
cGU+KGxhenlCcmVha0l0ZXJhdG9yLmxhc3RDaGFyYWN0ZXIoKSk7CisgICAgdW5zaWduZWQgcHJp
b3JDb250ZXh0TGVuZ3RoID0gbGF6eUJyZWFrSXRlcmF0b3IucHJpb3JDb250ZXh0TGVuZ3RoKCk7
CisgICAgZm9yIChpbnQgaSA9IHBvczsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIENoYXJhY3Rl
clR5cGUgY2ggPSBzdHJbaV07CisKKyAgICAgICAgaWYgKGlzQnJlYWthYmxlU3BhY2U8dHJlYXRO
b0JyZWFrU3BhY2VBc0JyZWFrPihjaCkgfHwgc2hvdWxkQnJlYWtBZnRlcihsYXN0TGFzdENoLCBs
YXN0Q2gsIGNoKSkKKyAgICAgICAgICAgIHJldHVybiBpOworCisgICAgICAgIGlmIChuZWVkc0xp
bmVCcmVha0l0ZXJhdG9yPHRyZWF0Tm9CcmVha1NwYWNlQXNCcmVhaz4oY2gpIHx8IG5lZWRzTGlu
ZUJyZWFrSXRlcmF0b3I8dHJlYXROb0JyZWFrU3BhY2VBc0JyZWFrPihsYXN0Q2gpKSB7CisgICAg
ICAgICAgICBpZiAobmV4dEJyZWFrIDwgaSkgeworICAgICAgICAgICAgICAgIC8vIERvbid0IGJy
ZWFrIGlmIHBvc2l0aW9uZWQgYXQgc3RhcnQgb2YgcHJpbWFyeSBjb250ZXh0IGFuZCB0aGVyZSBp
cyBubyBwcmlvciBjb250ZXh0LgorICAgICAgICAgICAgICAgIGlmIChpIHx8IHByaW9yQ29udGV4
dExlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBUZXh0QnJlYWtJdGVyYXRvciogYnJlYWtJ
dGVyYXRvciA9IGxhenlCcmVha0l0ZXJhdG9yLmdldChwcmlvckNvbnRleHRMZW5ndGgpOworICAg
ICAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgbmV4dEJyZWFrID0gdGV4dEJyZWFrRm9sbG93aW5nKGJyZWFrSXRlcmF0b3IsIGkgLSAx
ICsgcHJpb3JDb250ZXh0TGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0
QnJlYWsgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0QnJlYWsgLT0gcHJp
b3JDb250ZXh0TGVuZ3RoOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGkgPT0gbmV4dEJyZWFrICYmICFpc0Jy
ZWFrYWJsZVNwYWNlPHRyZWF0Tm9CcmVha1NwYWNlQXNCcmVhaz4obGFzdENoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQorCisgICAgICAgIGxhc3RMYXN0Q2ggPSBsYXN0
Q2g7CisgICAgICAgIGxhc3RDaCA9IGNoOworICAgIH0KKworICAgIHJldHVybiBsZW47Cit9CisK
K2lubGluZSBpbnQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uSWdub3JpbmdOQlNQKExhenlMaW5lQnJl
YWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIGludCBwb3MpCit7CisgICAgU3RyaW5nIHN0
cmluZyA9IGxhenlCcmVha0l0ZXJhdG9yLnN0cmluZygpOworICAgIGlmIChzdHJpbmcuaXM4Qml0
KCkpCisgICAgICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb248TENoYXIsIGZhbHNlPihs
YXp5QnJlYWtJdGVyYXRvciwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwg
cG9zKTsKKyAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uPFVDaGFyLCBmYWxzZT4obGF6
eUJyZWFrSXRlcmF0b3IsIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBw
b3MpOworfQorCitpbmxpbmUgaW50IG5leHRCcmVha2FibGVQb3NpdGlvbihMYXp5TGluZUJyZWFr
SXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9yLCBpbnQgcG9zKQoreworICAgIFN0cmluZyBzdHJp
bmcgPSBsYXp5QnJlYWtJdGVyYXRvci5zdHJpbmcoKTsKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgp
KQorICAgICAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uPExDaGFyLCB0cnVlPihsYXp5
QnJlYWtJdGVyYXRvciwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgcG9z
KTsKKyAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uPFVDaGFyLCB0cnVlPihsYXp5QnJl
YWtJdGVyYXRvciwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIHBvcyk7
Cit9CisKIGlubGluZSBib29sIGlzQnJlYWthYmxlKExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6
eUJyZWFrSXRlcmF0b3IsIGludCBwb3MsIGludCYgbmV4dEJyZWFrYWJsZSwgYm9vbCBicmVha05C
U1ApCiB7CiAgICAgaWYgKHBvcyA+IG5leHRCcmVha2FibGUpIHsK
</data>
<flag name="review"
          id="239339"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>