<?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>61378</bug_id>
          
          <creation_ts>2011-05-24 11:24:10 -0700</creation_ts>
          <short_desc>Avoid creating unnecessary identifiers and strings in the syntax checker</short_desc>
          <delta_ts>2011-05-24 11:49:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>409030</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-05-24 11:24:10 -0700</bug_when>
    <thetext>Avoid creating unnecessary identifiers and strings in the syntax checker</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409045</commentid>
    <comment_count>1</comment_count>
      <attachid>94650</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-05-24 11:38:02 -0700</bug_when>
    <thetext>Created attachment 94650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409055</commentid>
    <comment_count>2</comment_count>
      <attachid>94650</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-24 11:45:27 -0700</bug_when>
    <thetext>Comment on attachment 94650
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        Make parseString and parseIdentifier templatised on whether they should

In American English, we say: &quot;templatized.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409061</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-05-24 11:49:35 -0700</bug_when>
    <thetext>Committed r87177: &lt;http://trac.webkit.org/changeset/87177&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94650</attachid>
            <date>2011-05-24 11:38:02 -0700</date>
            <delta_ts>2011-05-24 11:45:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61378-20110524113801.patch</filename>
            <type>text/plain</type>
            <size>25173</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODcxNzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGYx
MjkwNjQ3NjUyZTY4YzgzZGFmOTY1ZWM3MmIwOGZiMjk5ZjBkMmUuLjdkYWYzNWYyYTAzOTg1OTcz
OWNmMTZhMjlhZDM0YzFiMWNmOTZlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQzIEBACisyMDExLTA1LTI0ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXZvaWQgY3Jl
YXRpbmcgdW5uZWNlc3NhcnkgaWRlbnRpZmllcnMgYW5kIHN0cmluZ3MgaW4gdGhlIHN5bnRheCBj
aGVja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MTM3OAorCisgICAgICAgIFNlbGVjdGl2ZWx5IHRlbGwgdGhlIGxleGVyIHRoYXQgdGhlcmUgYXJl
IHNvbWUgcGxhY2VzIGl0IGRvZXMgbm90IG5lZWQgdG8KKyAgICAgICAgZG8gdGhlIHJlYWwgd29y
ayBvZiBjcmVhdGluZyBJZGVudGlmaWVycyBmb3IgSURFTlQgYW5kIFNUUklORyB0b2tlbnMuCisK
KyAgICAgICAgTWFrZSBwYXJzZVN0cmluZyBhbmQgcGFyc2VJZGVudGlmaWVyIHRlbXBsYXRpc2Vk
IG9uIHdoZXRoZXIgdGhleSBzaG91bGQKKyAgICAgICAgZG8gcmVhbCB3b3JrLCBvciBtZXJlbHkg
dmFsaWRhdGUgdGhlIHRva2Vucy4KKworICAgICAgICBTdW5TcGlkZXIgLS1wYXJzZS1vbmx5IHJl
cG9ydHMgfjUtOCUgd2luIGRlcGVuZGluZyBvbiBoYXJkd2FyZS4KKworICAgICAgICAqIHBhcnNl
ci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURvdEFjY2Vz
cyk6CisgICAgICAgICogcGFyc2VyL0pTUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQYXJz
ZXI6Om5leHQpOgorICAgICAgICAoSlNDOjpKU1BhcnNlcjo6Y29uc3VtZSk6CisgICAgICAgIChK
U0M6OkpTUGFyc2VyOjpwYXJzZVZhckRlY2xhcmF0aW9uTGlzdCk6CisgICAgICAgIChKU0M6OkpT
UGFyc2VyOjpwYXJzZUNvbnN0RGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6SlNQYXJz
ZXI6OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUFzc2ln
bm1lbnRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlQ29uZGl0aW9u
YWxFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6SlNQYXJzZXI6OnBhcnNlQmluYXJ5RXhwcmVz
c2lvbik6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZVByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6SlNQYXJzZXI6OnBhcnNlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OkpTUGFy
c2VyOjpwYXJzZUFycmF5TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZUFy
Z3VtZW50cyk6CisgICAgICAgIChKU0M6OkpTUGFyc2VyOjpwYXJzZU1lbWJlckV4cHJlc3Npb24p
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyOjpwYXJz
ZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjo6cGFyc2VTdHJpbmcpOgorICAgICAg
ICAoSlNDOjpMZXhlcjo6bGV4KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoKKyAgICAgICAg
KiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVQcm9w
ZXJ0eSk6CisKIDIwMTEtMDUtMjMgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA5YWIwZjlkNTRlOTRkNjIwN2M0ZmU3Mjg1OTkyOTFm
OWIwNzg5NmJiLi44MDI1YzEzYjQ0NWM4MzkyMTE2ODhjMzBmZTNjYTE5MDg2MTc1ZTk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMTA5LDYgKzEwOSw4
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBDcmVhdGVzQVNUID0gdHJ1ZTsKICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBOZWVkc0ZyZWVWYXJpYWJsZUluZm8gPSB0cnVlOwogICAgIHN0
YXRpYyBjb25zdCBib29sIENhblVzZUZ1bmN0aW9uQ2FjaGUgPSB0cnVlOworICAgIHN0YXRpYyBj
b25zdCBpbnQgIERvbnRCdWlsZEtleXdvcmRzID0gMDsKKyAgICBzdGF0aWMgY29uc3QgaW50ICBE
b250QnVpbGRTdHJpbmdzID0gMDsKIAogICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQmluYXJ5Tm9k
ZShpbnQgdG9rZW4sIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4sIHN0
ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4pOwogICAgIEV4cHJlc3Npb25O
b2RlKiBtYWtlRnVuY3Rpb25DYWxsTm9kZShFeHByZXNzaW9uTm9kZSogZnVuYywgQXJndW1lbnRz
Tm9kZSogYXJncywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwpAQCAtMjA5LDkgKzIx
MSw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZURvdEFjY2VzcyhFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHksIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorICAgIEV4
cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXIqIHByb3BlcnR5LCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKICAg
ICB7Ci0gICAgICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBE
b3RBY2Nlc3Nvck5vZGUobV9nbG9iYWxEYXRhLCBiYXNlLCBwcm9wZXJ0eSk7CisgICAgICAgIERv
dEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBEb3RBY2Nlc3Nvck5vZGUo
bV9nbG9iYWxEYXRhLCBiYXNlLCAqcHJvcGVydHkpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2Nh
dGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9KU1BhcnNlci5jcHAKaW5kZXggZjM2YzY2
OGQ5ZWIyZmFmOGQzNjBkMjgzYzNmNmI0MTlkODIxMjkzYS4uZDVjY2U5NDlkODg5MzdmYzQ2N2Y0
YTZhNTVmOWYxNDljYjkxYmExYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9KU1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9KU1Bh
cnNlci5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIGZhaWxJ
ZlRydWVJZlN0cmljdChjb25kKSBkbyB7IGlmICgoY29uZCkgJiYgc3RyaWN0TW9kZSgpKSBmYWls
KCk7IH0gd2hpbGUgKDApCiAjZGVmaW5lIGZhaWxJZkZhbHNlSWZTdHJpY3QoY29uZCkgZG8geyBp
ZiAoKCEoY29uZCkpICYmIHN0cmljdE1vZGUoKSkgZmFpbCgpOyB9IHdoaWxlICgwKQogI2RlZmlu
ZSBjb25zdW1lT3JGYWlsKHRva2VuVHlwZSkgZG8geyBpZiAoIWNvbnN1bWUodG9rZW5UeXBlKSkg
ZmFpbCgpOyB9IHdoaWxlICgwKQorI2RlZmluZSBjb25zdW1lT3JGYWlsV2l0aEZsYWdzKHRva2Vu
VHlwZSwgZmxhZ3MpIGRvIHsgaWYgKCFjb25zdW1lKHRva2VuVHlwZSwgZmxhZ3MpKSBmYWlsKCk7
IH0gd2hpbGUgKDApCiAjZGVmaW5lIG1hdGNoT3JGYWlsKHRva2VuVHlwZSkgZG8geyBpZiAoIW1h
dGNoKHRva2VuVHlwZSkpIGZhaWwoKTsgfSB3aGlsZSAoMCkKICNkZWZpbmUgZmFpbElmU3RhY2tP
dmVyZmxvdygpIGRvIHsgZmFpbElmRmFsc2UoY2FuUmVjdXJzZSgpKTsgfSB3aGlsZSAoMCkKIApA
QCAtOTgsNyArOTksNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIG1faXNMb29wOwogICAgIH07
CiAgICAgCi0gICAgdm9pZCBuZXh0KExleGVyOjpMZXhUeXBlIGxleFR5cGUgPSBMZXhlcjo6SWRl
bnRpZnlSZXNlcnZlZFdvcmRzKQorICAgIHZvaWQgbmV4dCh1bnNpZ25lZCBsZXhUeXBlID0gMCkK
ICAgICB7CiAgICAgICAgIG1fbGFzdExpbmUgPSBtX3Rva2VuLm1faW5mby5saW5lOwogICAgICAg
ICBtX2xhc3RUb2tlbkVuZCA9IG1fdG9rZW4ubV9pbmZvLmVuZE9mZnNldDsKQEAgLTExMSwxMSAr
MTEyLDExIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX2xleGVyLT5uZXh0VG9rZW5Jc0Nv
bG9uKCk7CiAgICAgfQogCi0gICAgYm9vbCBjb25zdW1lKEpTVG9rZW5UeXBlIGV4cGVjdGVkKQor
ICAgIGJvb2wgY29uc3VtZShKU1Rva2VuVHlwZSBleHBlY3RlZCwgdW5zaWduZWQgZmxhZ3MgPSAw
KQogICAgIHsKICAgICAgICAgYm9vbCByZXN1bHQgPSBtX3Rva2VuLm1fdHlwZSA9PSBleHBlY3Rl
ZDsKICAgICAgICAgZmFpbElmRmFsc2UocmVzdWx0KTsKLSAgICAgICAgbmV4dCgpOworICAgICAg
ICBuZXh0KGZsYWdzKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTc5Niw3
ICs3OTcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpT
UGFyc2VyOjpwYXJzZVZhckRlY2xhcmF0aW9uTGlzdChUcgogICAgICAgICBpZiAoaGFzSW5pdGlh
bGl6ZXIpIHsKICAgICAgICAgICAgIGludCB2YXJEaXZvdCA9IHRva2VuU3RhcnQoKSArIDE7CiAg
ICAgICAgICAgICBpbml0U3RhcnQgPSB0b2tlblN0YXJ0KCk7Ci0gICAgICAgICAgICBuZXh0KCk7
IC8vIGNvbnN1bWUgJz0nCisgICAgICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRT
dHJpbmdzKTsgLy8gY29uc3VtZSAnPScKICAgICAgICAgICAgIGludCBpbml0aWFsQXNzaWdubWVu
dHMgPSBtX2Fzc2lnbm1lbnRDb3VudDsKICAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIGluaXRp
YWxpemVyID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgICAg
IGluaXRFbmQgPSBsYXN0VG9rZW5FbmQoKTsKQEAgLTgyOCw3ICs4MjksNyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDb25zdERlY2xMaXN0IEpTUGFyc2VyOjpwYXJzZUNvbnN0
RGVjbGFyYXRpb25MaQogICAgICAgICBjb250ZXh0LmFkZFZhcihuYW1lLCBEZWNsYXJhdGlvblN0
YWNrczo6SXNDb25zdGFudCB8IChoYXNJbml0aWFsaXplciA/IERlY2xhcmF0aW9uU3RhY2tzOjpI
YXNJbml0aWFsaXplciA6IDApKTsKICAgICAgICAgVHJlZUV4cHJlc3Npb24gaW5pdGlhbGl6ZXIg
PSAwOwogICAgICAgICBpZiAoaGFzSW5pdGlhbGl6ZXIpIHsKLSAgICAgICAgICAgIG5leHQoKTsg
Ly8gY29uc3VtZSAnPScKKyAgICAgICAgICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0
cmluZ3MpOyAvLyBjb25zdW1lICc9JwogICAgICAgICAgICAgaW5pdGlhbGl6ZXIgPSBwYXJzZUFz
c2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICB9CiAgICAgICAgIHRhaWwgPSBj
b250ZXh0LmFwcGVuZENvbnN0RGVjbCh0YWlsLCBuYW1lLCBpbml0aWFsaXplcik7CkBAIC0xNTUy
LDcgKzE1NTMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IEpTUGFyc2VyOjpwYXJzZUV4cHJlc3Npb24oVHJlZUJ1aWxkZQogICAgIGZhaWxJZkZhbHNlKHJp
Z2h0KTsKICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Q29tbWEgY29tbWFOb2RlID0gY29udGV4
dC5jcmVhdGVDb21tYUV4cHIobm9kZSwgcmlnaHQpOwogICAgIHdoaWxlIChtYXRjaChDT01NQSkp
IHsKLSAgICAgICAgbmV4dCgpOworICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRT
dHJpbmdzKTsKICAgICAgICAgcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRl
eHQpOwogICAgICAgICBmYWlsSWZGYWxzZShyaWdodCk7CiAgICAgICAgIGNvbnRleHQuYXBwZW5k
VG9Db21tYShjb21tYU5vZGUsIHJpZ2h0KTsKQEAgLTE1OTcsNyArMTU5OCw3IEBAIHRlbXBsYXRl
IDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlQXNz
aWdubWVudEV4cHJlc3NpCiAgICAgICAgIGNvbnRleHQuYXNzaWdubWVudFN0YWNrQXBwZW5kKGFz
c2lnbm1lbnRTdGFjaywgbGhzLCBzdGFydCwgdG9rZW5TdGFydCgpLCBtX2Fzc2lnbm1lbnRDb3Vu
dCwgb3ApOwogICAgICAgICBzdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICAgICAgbV9hc3NpZ25t
ZW50Q291bnQrKzsKLSAgICAgICAgbmV4dCgpOworICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpE
b250QnVpbGRTdHJpbmdzKTsKICAgICAgICAgaWYgKHN0cmljdE1vZGUoKSAmJiBtX2xhc3RJZGVu
dGlmaWVyICYmIGNvbnRleHQuaXNSZXNvbHZlKGxocykpIHsKICAgICAgICAgICAgIGZhaWxJZlRy
dWVJZlN0cmljdChtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKm1fbGFzdElk
ZW50aWZpZXIpOwogICAgICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KG1fZ2xvYmFsRGF0YS0+
cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICptX2xhc3RJZGVudGlmaWVyKTsKQEAgLTE2MzAs
OSArMTYzMSw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
SlNQYXJzZXI6OnBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uCiAgICAgICAgIHJldHVybiBjb25k
OwogICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgIG1fbm9uTEhTQ291bnQr
KzsKLSAgICBuZXh0KCk7CisgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7
CiAgICAgVHJlZUV4cHJlc3Npb24gbGhzID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250
ZXh0KTsKLSAgICBjb25zdW1lT3JGYWlsKENPTE9OKTsKKyAgICBjb25zdW1lT3JGYWlsV2l0aEZs
YWdzKENPTE9OLCBUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAKICAgICBUcmVlRXhw
cmVzc2lvbiByaHMgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZh
aWxJZkZhbHNlKHJocyk7CkBAIC0xNjcwLDcgKzE2NzEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZUJpbmFyeUV4cHJlc3Npb24o
VHJlZQogICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgbV9u
b25MSFNDb3VudCsrOwogICAgICAgICBpbnQgb3BlcmF0b3JUb2tlbiA9IG1fdG9rZW4ubV90eXBl
OwotICAgICAgICBuZXh0KCk7CisgICAgICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0
cmluZ3MpOwogCiAgICAgICAgIHdoaWxlIChvcGVyYXRvclN0YWNrRGVwdGggJiYgIGNvbnRleHQu
b3BlcmF0b3JTdGFja0hhc0hpZ2hlclByZWNlZGVuY2Uob3BlcmF0b3JTdGFja0RlcHRoLCBwcmVj
ZWRlbmNlKSkgewogICAgICAgICAgICAgQVNTRVJUKG9wZXJhbmRTdGFja0RlcHRoID4gMSk7CkBA
IC0xNzA1LDcgKzE3MDYsMTEgQEAgdGVtcGxhdGUgPGJvb2wgY29tcGxldGUsIGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlUHJvcGVydHkgSlNQYXJzZXI6OnBhcnNlUHJvcGVydHkKICAgICAgICAgd2Fz
SWRlbnQgPSB0cnVlOwogICAgIGNhc2UgU1RSSU5HOiB7CiAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7Ci0gICAgICAgIG5leHQoTGV4ZXI6Okln
bm9yZVJlc2VydmVkV29yZHMpOworICAgICAgICBpZiAoY29tcGxldGUgfHwgKHdhc0lkZW50ICYm
ICgqaWRlbnQgPT0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5nZXQgfHwgKmlkZW50ID09
IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+c2V0KSkpCisgICAgICAgICAgICBuZXh0KExl
eGVyOjpJZ25vcmVSZXNlcnZlZFdvcmRzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV4
dChMZXhlcjo6SWdub3JlUmVzZXJ2ZWRXb3JkcyB8IFRyZWVCdWlsZGVyOjpEb250QnVpbGRLZXl3
b3Jkcyk7CisKICAgICAgICAgaWYgKG1hdGNoKENPTE9OKSkgewogICAgICAgICAgICAgbmV4dCgp
OwogICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9IHBhcnNlQXNzaWdubWVudEV4cHJl
c3Npb24oY29udGV4dCk7CkBAIC0xNzQ3LDcgKzE3NTIsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBjb21w
bGV0ZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBKU1BhcnNlcjo6cGFyc2VQcm9w
ZXJ0eQogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNl
cjo6cGFyc2VPYmplY3RMaXRlcmFsKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIGludCBz
dGFydE9mZnNldCA9IG1fdG9rZW4ubV9kYXRhLmludFZhbHVlOwotICAgIGNvbnN1bWVPckZhaWwo
T1BFTkJSQUNFKTsKKyAgICBjb25zdW1lT3JGYWlsV2l0aEZsYWdzKE9QRU5CUkFDRSwgVHJlZUJ1
aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOwogCiAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7
CiAgICAgICAgIG5leHQoKTsKQEAgLTE3NjQsNyArMTc2OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gSlNQYXJzZXI6OnBhcnNlT2JqZWN0TGl0ZXJhbChU
cmVlQnVpCiAgICAgVHJlZVByb3BlcnR5TGlzdCBwcm9wZXJ0eUxpc3QgPSBjb250ZXh0LmNyZWF0
ZVByb3BlcnR5TGlzdChwcm9wZXJ0eSk7CiAgICAgVHJlZVByb3BlcnR5TGlzdCB0YWlsID0gcHJv
cGVydHlMaXN0OwogICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKLSAgICAgICAgbmV4dCgpOwor
ICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKICAgICAgICAgLy8g
YWxsb3cgZXh0cmEgY29tbWEsIHNlZSBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01OTM5CiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTgyOSwxNSArMTgzNCwxNSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZVN0cmljdE9iamVjdExpdGVyYWwoVAogCiB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJz
ZUFycmF5TGl0ZXJhbChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKLSAgICBjb25zdW1lT3JGYWls
KE9QRU5CUkFDS0VUKTsKKyAgICBjb25zdW1lT3JGYWlsV2l0aEZsYWdzKE9QRU5CUkFDS0VULCBU
cmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAKICAgICBpbnQgZWxpc2lvbnMgPSAwOwog
ICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKLSAgICAgICAgbmV4dCgpOworICAgICAgICBuZXh0
KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKICAgICAgICAgZWxpc2lvbnMrKzsKICAg
ICB9CiAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0tFVCkpIHsKLSAgICAgICAgbmV4dCgpOworICAg
ICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKICAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlQXJyYXkoZWxpc2lvbnMpOwogICAgIH0KIApAQCAtMTg0Nyw3ICsxODUy
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBKU1BhcnNl
cjo6cGFyc2VBcnJheUxpdGVyYWwoVHJlZUJ1aWwKICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6
RWxlbWVudExpc3QgdGFpbCA9IGVsZW1lbnRMaXN0OwogICAgIGVsaXNpb25zID0gMDsKICAgICB3
aGlsZSAobWF0Y2goQ09NTUEpKSB7Ci0gICAgICAgIG5leHQoKTsKKyAgICAgICAgbmV4dChUcmVl
QnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAgICAgICAgIGVsaXNpb25zID0gMDsKIAogICAg
ICAgICB3aGlsZSAobWF0Y2goQ09NTUEpKSB7CkBAIC0xODU2LDcgKzE4NjEsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIEpTUGFyc2VyOjpwYXJzZUFycmF5
TGl0ZXJhbChUcmVlQnVpbAogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJB
Q0tFVCkpIHsKLSAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIG5leHQoVHJlZUJ1aWxk
ZXI6OkRvbnRCdWlsZFN0cmluZ3MpOwogICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
QXJyYXkoZWxpc2lvbnMsIGVsZW1lbnRMaXN0KTsKICAgICAgICAgfQogICAgICAgICBUcmVlRXhw
cmVzc2lvbiBlbGVtID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTE5
NDgsOSArMTk1Myw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gSlNQYXJzZXI6OnBhcnNlUHJpbWFyeUV4cHJlc3Npb24oVHJlCiAKIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUFyZ3VtZW50cyBKU1BhcnNlcjo6cGFyc2VBcmd1bWVudHMoVHJl
ZUJ1aWxkZXImIGNvbnRleHQpCiB7Ci0gICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOworICAg
IGNvbnN1bWVPckZhaWxXaXRoRmxhZ3MoT1BFTlBBUkVOLCBUcmVlQnVpbGRlcjo6RG9udEJ1aWxk
U3RyaW5ncyk7CiAgICAgaWYgKG1hdGNoKENMT1NFUEFSRU4pKSB7Ci0gICAgICAgIG5leHQoKTsK
KyAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50cygpOwogICAgIH0KICAgICBUcmVlRXhwcmVzc2lv
biBmaXJzdEFyZyA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CkBAIC0xOTU5
LDcgKzE5NjQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVBcmd1bWVudHMg
SlNQYXJzZXI6OnBhcnNlQXJndW1lbnRzKFRyZWVCdWlsZGVyJgogICAgIFRyZWVBcmd1bWVudHNM
aXN0IGFyZ0xpc3QgPSBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50c0xpc3QoZmlyc3RBcmcpOwogICAg
IFRyZWVBcmd1bWVudHNMaXN0IHRhaWwgPSBhcmdMaXN0OwogICAgIHdoaWxlIChtYXRjaChDT01N
QSkpIHsKLSAgICAgICAgbmV4dCgpOworICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVp
bGRTdHJpbmdzKTsKICAgICAgICAgVHJlZUV4cHJlc3Npb24gYXJnID0gcGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UoYXJnKTsKICAgICAgICAg
dGFpbCA9IGNvbnRleHQuY3JlYXRlQXJndW1lbnRzTGlzdCh0YWlsLCBhcmcpOwpAQCAtMjAzMyw5
ICsyMDM4LDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBK
U1BhcnNlcjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKFRyZWUKICAgICAgICAgY2FzZSBET1Q6IHsK
ICAgICAgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgICAgICAgICAg
aW50IGV4cHJlc3Npb25FbmQgPSBsYXN0VG9rZW5FbmQoKTsKLSAgICAgICAgICAgIG5leHQoTGV4
ZXI6Oklnbm9yZVJlc2VydmVkV29yZHMpOworICAgICAgICAgICAgbmV4dChMZXhlcjo6SWdub3Jl
UmVzZXJ2ZWRXb3JkcyB8IFRyZWVCdWlsZGVyOjpEb250QnVpbGRLZXl3b3Jkcyk7CiAgICAgICAg
ICAgICBtYXRjaE9yRmFpbChJREVOVCk7Ci0gICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVh
dGVEb3RBY2Nlc3MoYmFzZSwgKm1fdG9rZW4ubV9kYXRhLmlkZW50LCBleHByZXNzaW9uU3RhcnQs
IGV4cHJlc3Npb25FbmQsIHRva2VuRW5kKCkpOworICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQu
Y3JlYXRlRG90QWNjZXNzKGJhc2UsIG1fdG9rZW4ubV9kYXRhLmlkZW50LCBleHByZXNzaW9uU3Rh
cnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kKCkpOwogICAgICAgICAgICAgbmV4dCgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhl
ci5jcHAKaW5kZXggMzVkMDkwNjI2MjEwZDY1MWE1YzcwZTkwZDQxODkyZjE4MDgwZjgzYS4uYTdk
OGNiOWYyMWEzZTgxNTNkMmIxMjJmMzM0MTZhYjViOWJkN2I3OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTM5OSw3ICszOTksNyBAQCBpbmxpbmUgdm9pZCBMZXhl
cjo6cmVjb3JkMTYoaW50IGMpCiAgICAgcmVjb3JkMTYoVUNoYXIoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgc2hvcnQ+KGMpKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI6OnBh
cnNlSWRlbnRpZmllcihKU1Rva2VuRGF0YSogbHZhbHAsIExleFR5cGUgbGV4VHlwZSkKK3RlbXBs
YXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5
cGUgTGV4ZXI6OnBhcnNlSWRlbnRpZmllcihKU1Rva2VuRGF0YSogbHZhbHAsIHVuc2lnbmVkIGxl
eFR5cGUpCiB7CiAgICAgYm9vbCBidWZmZXJSZXF1aXJlZCA9IGZhbHNlOwogICAgIGNvbnN0IFVD
aGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7CkBAIC00MjYsMjQgKzQy
NiwzMSBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyOjpwYXJzZUlkZW50aWZpZXIo
SlNUb2tlbkRhdGEqIGx2YWxwLCBMZXhUeXBlIGxleAogICAgICAgICAgICAgcmV0dXJuIEVSUk9S
VE9LOwogICAgICAgICBpZiAoVU5MSUtFTFkobV9idWZmZXIxNi5zaXplKCkgPyAhaXNJZGVudFBh
cnQoY2hhcmFjdGVyKSA6ICFpc0lkZW50U3RhcnQoY2hhcmFjdGVyKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gRVJST1JUT0s7Ci0gICAgICAgIHJlY29yZDE2KGNoYXJhY3Rlcik7CisgICAgICAgIGlm
ICAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHJlY29yZDE2KGNoYXJhY3Rl
cik7CiAgICAgICAgIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRDaGFyYWN0ZXIoKTsKICAgICB9
CiAKLSAgICBpZiAoIWJ1ZmZlclJlcXVpcmVkKQotICAgICAgICBpZGVudGlmaWVyTGVuZ3RoID0g
Y3VycmVudENoYXJhY3RlcigpIC0gaWRlbnRpZmllclN0YXJ0OwotICAgIGVsc2UgewotICAgICAg
ICBpZiAoaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRDaGFyYWN0ZXIoKSkKLSAgICAgICAgICAg
IG1fYnVmZmVyMTYuYXBwZW5kKGlkZW50aWZpZXJTdGFydCwgY3VycmVudENoYXJhY3RlcigpIC0g
aWRlbnRpZmllclN0YXJ0KTsKLSAgICAgICAgaWRlbnRpZmllclN0YXJ0ID0gbV9idWZmZXIxNi5k
YXRhKCk7Ci0gICAgICAgIGlkZW50aWZpZXJMZW5ndGggPSBtX2J1ZmZlcjE2LnNpemUoKTsKLSAg
ICB9CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAwOworICAgIGlmIChzaG91bGRDcmVh
dGVJZGVudGlmaWVyKSB7CisgICAgICAgIGlmICghYnVmZmVyUmVxdWlyZWQpCisgICAgICAgICAg
ICBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudENoYXJhY3RlcigpIC0gaWRlbnRpZmllclN0YXJ0
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpZGVudGlmaWVyU3RhcnQgIT0gY3Vy
cmVudENoYXJhY3RlcigpKQorICAgICAgICAgICAgICAgIG1fYnVmZmVyMTYuYXBwZW5kKGlkZW50
aWZpZXJTdGFydCwgY3VycmVudENoYXJhY3RlcigpIC0gaWRlbnRpZmllclN0YXJ0KTsKKyAgICAg
ICAgICAgIGlkZW50aWZpZXJTdGFydCA9IG1fYnVmZmVyMTYuZGF0YSgpOworICAgICAgICAgICAg
aWRlbnRpZmllckxlbmd0aCA9IG1fYnVmZmVyMTYuc2l6ZSgpOworICAgICAgICB9CisKKyAgICAg
ICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5n
dGgpOworICAgICAgICBsdmFscC0+aWRlbnQgPSBpZGVudDsKKyAgICB9IGVsc2UKKyAgICAgICAg
bHZhbHAtPmlkZW50ID0gMDsKIAotICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbWFrZUlk
ZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKLSAgICBsdmFscC0+
aWRlbnQgPSBpZGVudDsKICAgICBtX2RlbGltaXRlZCA9IGZhbHNlOwogCi0gICAgaWYgKExJS0VM
WSghYnVmZmVyUmVxdWlyZWQgJiYgbGV4VHlwZSA9PSBJZGVudGlmeVJlc2VydmVkV29yZHMpKSB7
CisgICAgaWYgKExJS0VMWSghYnVmZmVyUmVxdWlyZWQgJiYgIShsZXhUeXBlICYgSWdub3JlUmVz
ZXJ2ZWRXb3JkcykpKSB7CisgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsK
ICAgICAgICAgLy8gS2V5d29yZHMgbXVzdCBub3QgYmUgcmVjb2duaXplZCBpZiB0aGVyZSB3YXMg
YW4gXHVYWFhYIGluIHRoZSBpZGVudGlmaWVyLgogICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVu
dHJ5ID0gbV9rZXl3b3JkVGFibGUuZW50cnkobV9nbG9iYWxEYXRhLCAqaWRlbnQpOwogICAgICAg
ICByZXR1cm4gZW50cnkgPyBzdGF0aWNfY2FzdDxKU1Rva2VuVHlwZT4oZW50cnktPmxleGVyVmFs
dWUoKSkgOiBJREVOVDsKQEAgLTQ1Myw3ICs0NjAsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5U
eXBlIExleGVyOjpwYXJzZUlkZW50aWZpZXIoSlNUb2tlbkRhdGEqIGx2YWxwLCBMZXhUeXBlIGxl
eAogICAgIHJldHVybiBJREVOVDsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIExleGVyOjpwYXJz
ZVN0cmluZyhKU1Rva2VuRGF0YSogbHZhbHAsIGJvb2wgc3RyaWN0TW9kZSkKK3RlbXBsYXRlIDxi
b29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gQUxXQVlTX0lOTElORSBib29sIExleGVyOjpwYXJzZVN0
cmluZyhKU1Rva2VuRGF0YSogbHZhbHAsIGJvb2wgc3RyaWN0TW9kZSkKIHsKICAgICBpbnQgc3Ry
aW5nUXVvdGVDaGFyYWN0ZXIgPSBtX2N1cnJlbnQ7CiAgICAgc2hpZnQoKTsKQEAgLTQ2Miw3ICs0
NjksNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI6OnBhcnNlU3RyaW5nKEpTVG9rZW5EYXRh
KiBsdmFscCwgYm9vbCBzdHJpY3RNb2RlKQogCiAgICAgd2hpbGUgKG1fY3VycmVudCAhPSBzdHJp
bmdRdW90ZUNoYXJhY3RlcikgewogICAgICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09ICdc
XCcpKSB7Ci0gICAgICAgICAgICBpZiAoc3RyaW5nU3RhcnQgIT0gY3VycmVudENoYXJhY3Rlcigp
KQorICAgICAgICAgICAgaWYgKHN0cmluZ1N0YXJ0ICE9IGN1cnJlbnRDaGFyYWN0ZXIoKSAmJiBz
aG91bGRCdWlsZFN0cmluZ3MpCiAgICAgICAgICAgICAgICAgbV9idWZmZXIxNi5hcHBlbmQoc3Ry
aW5nU3RhcnQsIGN1cnJlbnRDaGFyYWN0ZXIoKSAtIHN0cmluZ1N0YXJ0KTsKICAgICAgICAgICAg
IHNoaWZ0KCk7CiAKQEAgLTQ3MCw3ICs0NzcsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI6
OnBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiBsdmFscCwgYm9vbCBzdHJpY3RNb2RlKQogCiAgICAg
ICAgICAgICAvLyBNb3N0IGNvbW1vbiBlc2NhcGUgc2VxdWVuY2VzIGZpcnN0CiAgICAgICAgICAg
ICBpZiAoZXNjYXBlKSB7Ci0gICAgICAgICAgICAgICAgcmVjb3JkMTYoZXNjYXBlKTsKKyAgICAg
ICAgICAgICAgICAgaWYgKHNob3VsZEJ1aWxkU3RyaW5ncykKKyAgICAgICAgICAgICAgICAgICAg
IHJlY29yZDE2KGVzY2FwZSk7CiAgICAgICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAoVU5MSUtFTFkoaXNMaW5lVGVybWluYXRvcihtX2N1cnJlbnQpKSkKICAgICAg
ICAgICAgICAgICBzaGlmdExpbmVUZXJtaW5hdG9yKCk7CkBAIC00NzksMTggKzQ4NywyMSBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI6OnBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiBsdmFscCwg
Ym9vbCBzdHJpY3RNb2RlKQogICAgICAgICAgICAgICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQobV9j
dXJyZW50KSAmJiBpc0FTQ0lJSGV4RGlnaXQocGVlaygxKSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgaW50IHByZXYgPSBtX2N1cnJlbnQ7CiAgICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJlY29yZDE2KGNvbnZlcnRIZXgocHJldiwgbV9jdXJyZW50KSk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRCdWlsZFN0cmluZ3MpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZWNvcmQxNihjb252ZXJ0SGV4KHByZXYsIG1fY3VycmVudCkpOwogICAg
ICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkQnVpbGRTdHJpbmdzKQogICAgICAgICAgICAgICAg
ICAgICByZWNvcmQxNigneCcpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChtX2N1cnJlbnQgPT0g
J3UnKSB7CiAgICAgICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgICAgICBpbnQgY2hh
cmFjdGVyID0gZ2V0VW5pY29kZUNoYXJhY3RlcigpOwotICAgICAgICAgICAgICAgIGlmIChjaGFy
YWN0ZXIgIT0gLTEpCi0gICAgICAgICAgICAgICAgICAgIHJlY29yZDE2KGNoYXJhY3Rlcik7Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAobV9jdXJyZW50ID09IHN0cmluZ1F1b3RlQ2hhcmFjdGVy
KQotICAgICAgICAgICAgICAgICAgICByZWNvcmQxNigndScpOwotICAgICAgICAgICAgICAgIGVs
c2UgLy8gT25seSBzdHJpbmdRdW90ZUNoYXJhY3RlciBhbGxvd2VkIGFmdGVyIFx1CisgICAgICAg
ICAgICAgICAgaWYgKGNoYXJhY3RlciAhPSAtMSkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
c2hvdWxkQnVpbGRTdHJpbmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkMTYoY2hh
cmFjdGVyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fY3VycmVudCA9PSBzdHJpbmdR
dW90ZUNoYXJhY3RlcikgeworICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQnVpbGRTdHJp
bmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkMTYoJ3UnKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgLy8gT25seSBzdHJpbmdRdW90ZUNoYXJhY3RlciBhbGxvd2VkIGFmdGVyIFx1
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoc3RyaWN0TW9kZSAmJiBpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSkgewogICAgICAgICAgICAg
ICAgIC8vIFRoZSBvbmx5IHZhbGlkIG51bWVyaWMgZXNjYXBlIGluIHN0cmljdCBtb2RlIGlzICdc
MCcsIGFuZCB0aGlzIG11c3Qgbm90IGJlIGZvbGxvd2VkIGJ5IGEgZGVjaW1hbCBkaWdpdC4KQEAg
LTQ5OCw3ICs1MDksOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI6OnBhcnNlU3RyaW5nKEpT
VG9rZW5EYXRhKiBsdmFscCwgYm9vbCBzdHJpY3RNb2RlKQogICAgICAgICAgICAgICAgIHNoaWZ0
KCk7CiAgICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlcjEgIT0gJzAnIHx8IGlzQVNDSUlEaWdp
dChtX2N1cnJlbnQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgcmVjb3JkMTYoMCk7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZEJ1aWxkU3Ry
aW5ncykKKyAgICAgICAgICAgICAgICAgICAgcmVjb3JkMTYoMCk7CiAgICAgICAgICAgICB9IGVs
c2UgaWYgKCFzdHJpY3RNb2RlICYmIGlzQVNDSUlPY3RhbERpZ2l0KG1fY3VycmVudCkpIHsKICAg
ICAgICAgICAgICAgICAvLyBPY3RhbCBjaGFyYWN0ZXIgc2VxdWVuY2VzCiAgICAgICAgICAgICAg
ICAgaW50IGNoYXJhY3RlcjEgPSBtX2N1cnJlbnQ7CkBAIC01MDgsMTQgKzUyMCwyMCBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgTGV4ZXI6OnBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiBsdmFscCwgYm9v
bCBzdHJpY3RNb2RlKQogICAgICAgICAgICAgICAgICAgICBpbnQgY2hhcmFjdGVyMiA9IG1fY3Vy
cmVudDsKICAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGNoYXJhY3RlcjEgPj0gJzAnICYmIGNoYXJhY3RlcjEgPD0gJzMnICYmIGlzQVNDSUlPY3Rh
bERpZ2l0KG1fY3VycmVudCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZDE2KChj
aGFyYWN0ZXIxIC0gJzAnKSAqIDY0ICsgKGNoYXJhY3RlcjIgLSAnMCcpICogOCArIG1fY3VycmVu
dCAtICcwJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQnVpbGRTdHJpbmdz
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZDE2KChjaGFyYWN0ZXIxIC0gJzAn
KSAqIDY0ICsgKGNoYXJhY3RlcjIgLSAnMCcpICogOCArIG1fY3VycmVudCAtICcwJyk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZDE2KChjaGFyYWN0ZXIxIC0gJzAnKSAqIDgg
KyBjaGFyYWN0ZXIyIC0gJzAnKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgcmVjb3JkMTYoY2hhcmFjdGVyMSAtICcwJyk7CisgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQnVpbGRTdHJpbmdz
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZDE2KChjaGFyYWN0ZXIxIC0gJzAn
KSAqIDggKyBjaGFyYWN0ZXIyIC0gJzAnKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRCdWlsZFN0
cmluZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQxNihjaGFyYWN0ZXIxIC0gJzAn
KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fY3VycmVudCAh
PSAtMSkgewotICAgICAgICAgICAgICAgIHJlY29yZDE2KG1fY3VycmVudCk7CisgICAgICAgICAg
ICAgICAgaWYgKHNob3VsZEJ1aWxkU3RyaW5ncykKKyAgICAgICAgICAgICAgICAgICAgcmVjb3Jk
MTYobV9jdXJyZW50KTsKICAgICAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTM1LDkgKzU1MywxMyBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI6OnBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiBsdmFscCwg
Ym9vbCBzdHJpY3RNb2RlKQogICAgICAgICBzaGlmdCgpOwogICAgIH0KIAotICAgIGlmIChjdXJy
ZW50Q2hhcmFjdGVyKCkgIT0gc3RyaW5nU3RhcnQpCisgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIo
KSAhPSBzdHJpbmdTdGFydCAmJiBzaG91bGRCdWlsZFN0cmluZ3MpCiAgICAgICAgIG1fYnVmZmVy
MTYuYXBwZW5kKHN0cmluZ1N0YXJ0LCBjdXJyZW50Q2hhcmFjdGVyKCkgLSBzdHJpbmdTdGFydCk7
Ci0gICAgbHZhbHAtPmlkZW50ID0gbWFrZUlkZW50aWZpZXIobV9idWZmZXIxNi5kYXRhKCksIG1f
YnVmZmVyMTYuc2l6ZSgpKTsKKyAgICBpZiAoc2hvdWxkQnVpbGRTdHJpbmdzKQorICAgICAgICBs
dmFscC0+aWRlbnQgPSBtYWtlSWRlbnRpZmllcihtX2J1ZmZlcjE2LmRhdGEoKSwgbV9idWZmZXIx
Ni5zaXplKCkpOworICAgIGVsc2UKKyAgICAgICAgbHZhbHAtPmlkZW50ID0gMDsKKwogICAgIG1f
YnVmZmVyMTYucmVzaXplKDApOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNzEyLDcgKzczNCw3
IEBAIGJvb2wgTGV4ZXI6Om5leHRUb2tlbklzQ29sb24oKQogICAgIHJldHVybiBjb2RlIDwgbV9j
b2RlRW5kICYmICpjb2RlID09ICc6JzsKIH0KIAotSlNUb2tlblR5cGUgTGV4ZXI6OmxleChKU1Rv
a2VuRGF0YSogbHZhbHAsIEpTVG9rZW5JbmZvKiBsbG9jcCwgTGV4VHlwZSBsZXhUeXBlLCBib29s
IHN0cmljdE1vZGUpCitKU1Rva2VuVHlwZSBMZXhlcjo6bGV4KEpTVG9rZW5EYXRhKiBsdmFscCwg
SlNUb2tlbkluZm8qIGxsb2NwLCB1bnNpZ25lZCBsZXhUeXBlLCBib29sIHN0cmljdE1vZGUpCiB7
CiAgICAgQVNTRVJUKCFtX2Vycm9yKTsKICAgICBBU1NFUlQobV9idWZmZXI4LmlzRW1wdHkoKSk7
CkBAIC0xMDI1LDggKzEwNDcsMTMgQEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAg
ICAgbV9kZWxpbWl0ZWQgPSBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDaGFyYWN0
ZXJRdW90ZToKLSAgICAgICAgaWYgKFVOTElLRUxZKCFwYXJzZVN0cmluZyhsdmFscCwgc3RyaWN0
TW9kZSkpKQotICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKKyAgICAgICAgaWYgKGxleFR5
cGUgJiBEb250QnVpbGRTdHJpbmdzKSB7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXBhcnNl
U3RyaW5nPGZhbHNlPihsdmFscCwgc3RyaWN0TW9kZSkpKQorICAgICAgICAgICAgICAgIGdvdG8g
cmV0dXJuRXJyb3I7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFko
IXBhcnNlU3RyaW5nPHRydWU+KGx2YWxwLCBzdHJpY3RNb2RlKSkpCisgICAgICAgICAgICAgICAg
Z290byByZXR1cm5FcnJvcjsKKyAgICAgICAgfQogICAgICAgICBzaGlmdCgpOwogICAgICAgICBt
X2RlbGltaXRlZCA9IGZhbHNlOwogICAgICAgICB0b2tlbiA9IFNUUklORzsKQEAgLTEwMzUsNyAr
MTA2MiwxMCBAQCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBBU1NFUlQoaXNJ
ZGVudFN0YXJ0KG1fY3VycmVudCkpOwogICAgICAgICAvLyBGYWxsIHRocm91Z2ggaW50byBDaGFy
YWN0ZXJCYWNrU2xhc2guCiAgICAgY2FzZSBDaGFyYWN0ZXJCYWNrU2xhc2g6Ci0gICAgICAgIHRv
a2VuID0gcGFyc2VJZGVudGlmaWVyKGx2YWxwLCBsZXhUeXBlKTsKKyAgICAgICAgaWYgKGxleFR5
cGUgJiBEb250QnVpbGRLZXl3b3JkcykKKyAgICAgICAgICAgIHRva2VuID0gcGFyc2VJZGVudGlm
aWVyPGZhbHNlPihsdmFscCwgbGV4VHlwZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRv
a2VuID0gcGFyc2VJZGVudGlmaWVyPHRydWU+KGx2YWxwLCBsZXhUeXBlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDaGFyYWN0ZXJMaW5lVGVybWluYXRvcjoKICAgICAgICAgQVNTRVJUKGlz
TGluZVRlcm1pbmF0b3IobV9jdXJyZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmgKaW5kZXggOWRjNTUzYTVjYjRiMzAyYTNlOWQ4ZDI5YWYwOWExNDM4YzUwOTZjMy4uODNjMjkw
NjIzZDE5YmE2NWFmMzYxODQ0ZDJiYTNlMWY4ZmNkNTc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuaApAQCAtNTIsOCArNTIsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGJvb2wgaXNSZXBhcnNpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUmVwYXJzaW5nOyB9CiAKICAg
ICAgICAgLy8gRnVuY3Rpb25zIGZvciB0aGUgcGFyc2VyIGl0c2VsZi4KLSAgICAgICAgZW51bSBM
ZXhUeXBlIHsgSWRlbnRpZnlSZXNlcnZlZFdvcmRzLCBJZ25vcmVSZXNlcnZlZFdvcmRzIH07Ci0g
ICAgICAgIEpTVG9rZW5UeXBlIGxleChKU1Rva2VuRGF0YSogbHZhbHAsIEpTVG9rZW5JbmZvKiBs
bG9jcCwgTGV4VHlwZSwgYm9vbCBzdHJpY3RNb2RlKTsKKyAgICAgICAgZW51bSBMZXhUeXBlIHsK
KyAgICAgICAgICAgIElnbm9yZVJlc2VydmVkV29yZHMgPSAxLCAKKyAgICAgICAgICAgIERvbnRC
dWlsZFN0cmluZ3MgPSAyLAorICAgICAgICAgICAgRG9udEJ1aWxkS2V5d29yZHMgPSA0CisgICAg
ICAgIH07CisgICAgICAgIEpTVG9rZW5UeXBlIGxleChKU1Rva2VuRGF0YSogbHZhbHAsIEpTVG9r
ZW5JbmZvKiBsbG9jcCwgdW5zaWduZWQsIGJvb2wgc3RyaWN0TW9kZSk7CiAgICAgICAgIGJvb2wg
bmV4dFRva2VuSXNDb2xvbigpOwogICAgICAgICBpbnQgbGluZU51bWJlcigpIGNvbnN0IHsgcmV0
dXJuIG1fbGluZU51bWJlcjsgfQogICAgICAgICB2b2lkIHNldExhc3RMaW5lTnVtYmVyKGludCBs
YXN0TGluZU51bWJlcikgeyBtX2xhc3RMaW5lTnVtYmVyID0gbGFzdExpbmVOdW1iZXI7IH0KQEAg
LTEwOSw4ICsxMTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgbGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkgY29uc3Q7CiAKLSAgICAgICAgQUxXQVlT
X0lOTElORSBKU1Rva2VuVHlwZSBwYXJzZUlkZW50aWZpZXIoSlNUb2tlbkRhdGEqLCBMZXhUeXBl
KTsKLSAgICAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiBs
dmFscCwgYm9vbCBzdHJpY3RNb2RlKTsKKyAgICAgICAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVp
bGRJZGVudGlmaWVycz4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBwYXJzZUlkZW50aWZpZXIo
SlNUb2tlbkRhdGEqLCB1bnNpZ25lZCk7CisgICAgICAgIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1
aWxkU3RyaW5ncz4gQUxXQVlTX0lOTElORSBib29sIHBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiBs
dmFscCwgYm9vbCBzdHJpY3RNb2RlKTsKICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIHBhcnNl
SGV4KGRvdWJsZSYgcmV0dXJuVmFsdWUpOwogICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFy
c2VPY3RhbChkb3VibGUmIHJldHVyblZhbHVlKTsKICAgICAgICAgQUxXQVlTX0lOTElORSBib29s
IHBhcnNlRGVjaW1hbChkb3VibGUmIHJldHVyblZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggODgyMzU2NjMzMGQ2YmZhMDQxM2I4ZmE0
NzQ1NWQ4NDI4OWM0YTk3NS4uMjM5MjI0NGI5NDM4Y2RjMjM0N2Y3MjI2YjA1ZTVkYTFlNmI4OGRh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgU3ludGF4Q2hlY2tlcl9oCiAjZGVmaW5lIFN5bnRheENo
ZWNrZXJfaAogCisjaW5jbHVkZSAiTGV4ZXIuaCIKICNpbmNsdWRlIDx5YXJyL1lhcnJTeW50YXhD
aGVja2VyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTEzLDYgKzExNCw4IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3QgYm9vbCBDcmVhdGVzQVNUID0gZmFsc2U7CiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgTmVlZHNGcmVlVmFyaWFibGVJbmZvID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0
IGJvb2wgQ2FuVXNlRnVuY3Rpb25DYWNoZSA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIERvbnRCdWlsZEtleXdvcmRzID0gTGV4ZXI6OkRvbnRCdWlsZEtleXdvcmRzOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBEb250QnVpbGRTdHJpbmdzID0gTGV4ZXI6OkRvbnRCdWlsZFN0
cmluZ3M7CiAKICAgICBpbnQgY3JlYXRlU291cmNlRWxlbWVudHMoKSB7IHJldHVybiAxOyB9CiAg
ICAgRXhwcmVzc2lvblR5cGUgbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIENhbGxFeHByOyB9CkBAIC0xMzksNyArMTQyLDcgQEAgcHVibGljOgog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4oYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7
IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKCkgeyByZXR1cm4gTnVsbEV4cHI7IH0K
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKEV4cHJlc3Npb25UeXBlLCBF
eHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQnJhY2tldEV4cHI7
IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3RBY2Nlc3MoRXhwcmVzc2lvblR5cGUsIGNv
bnN0IElkZW50aWZpZXImLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBEb3RFeHByOyB9CisgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVu
dGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRG90RXhwcjsgfQogICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZVJlZ0V4cChjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVu
dGlmaWVyJiwgaW50KSB7IHJldHVybiBZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnVzdHJpbmco
KSkgPyAwIDogUmVnRXhwRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIo
RXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoRXhwcmVzc2lvblR5cGUsIGludCwgaW50
KSB7IHJldHVybiBOZXdFeHByOyB9CkBAIC0xNTMsOSArMTU2LDkgQEAgcHVibGljOgogICAgIGlu
dCBjcmVhdGVBcmd1bWVudHNMaXN0KGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgdGVtcGxh
dGUgPGJvb2wgY29tcGxldGU+IFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZp
ZXIqIG5hbWUsIGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUpCiAgICAgewotICAgICAgICBB
U1NFUlQobmFtZSk7CiAgICAgICAgIGlmICghY29tcGxldGUpCiAgICAgICAgICAgICByZXR1cm4g
UHJvcGVydHkodHlwZSk7CisgICAgICAgIEFTU0VSVChuYW1lKTsKICAgICAgICAgcmV0dXJuIFBy
b3BlcnR5KG5hbWUsIHR5cGUpOwogICAgIH0KICAgICB0ZW1wbGF0ZSA8Ym9vbCBjb21wbGV0ZT4g
UHJvcGVydHkgY3JlYXRlUHJvcGVydHkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBkb3VibGUg
bmFtZSwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSkK
</data>
<flag name="review"
          id="87985"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>