<?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>34952</bug_id>
          
          <creation_ts>2010-02-15 11:15:47 -0800</creation_ts>
          <short_desc>String lengths in UString should be unsigned.</short_desc>
          <delta_ts>2010-11-16 18:07:49 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>49637</blocked>
    
    <blocked>36431</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>190504</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-02-15 11:15:47 -0800</bug_when>
    <thetext>This matches WebCore::StringImpl, and better unifies behaviour throughout JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190506</commentid>
    <comment_count>1</comment_count>
      <attachid>48763</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-02-15 11:16:59 -0800</bug_when>
    <thetext>Created attachment 48763
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190510</commentid>
    <comment_count>2</comment_count>
      <attachid>48763</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-02-15 11:27:22 -0800</bug_when>
    <thetext>Comment on attachment 48763
The patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190543</commentid>
    <comment_count>3</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-02-15 13:22:46 -0800</bug_when>
    <thetext>Transmitting file data ..................
Committed revision 54789.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48763</attachid>
            <date>2010-02-15 11:16:59 -0800</date>
            <delta_ts>2010-02-15 11:27:21 -0800</delta_ts>
            <desc>The patch</desc>
            <filename>patch.unsignedustring.2.txt</filename>
            <type>text/plain</type>
            <size>34637</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU0NzgwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTAtMDItMTUgIEdhdmluIEJh
cnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAzNDk1MiAtIFN0cmluZyBsZW5ndGhzIGlu
IFVTdHJpbmcgc2hvdWxkIGJlIHVuc2lnbmVkLgorICAgICAgICBUaGlzIG1hdGNoZXMgV2ViQ29y
ZTo6U3RyaW5nSW1wbCwgYW5kIGJldHRlciB1bmlmaWVzIGJlaGF2aW91ciB0aHJvdWdob3V0IEpT
Qy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBieXRlY29kZS9F
dmFsQ29kZUNhY2hlLmg6CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6SWRlbnRpZmllcjo6ZXF1YWwpOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmll
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjpnbG9iYWxGdW5jRXNjYXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpnYXApOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6
aW5kZW50KToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6Om51bWJlclByb3RvRnVuY1RvRml4ZWQpOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90
b0Z1bmNUb1ByZWNpc2lvbik6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAg
ICAoSlNDOjpSZWdFeHA6Om1hdGNoKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OnN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlc1Nsb3cpOgorICAg
ICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNSZXBsYWNlKToKKyAgICAgICAgKEpTQzo6c3RyaW5n
UHJvdG9GdW5jU3BsaXQpOgorICAgICAgICAoSlNDOjp0cmltU3RyaW5nKToKKyAgICAgICAgKiBy
dW50aW1lL1VTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpVU3RyaW5nOjpVU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6VVN0cmluZzo6ZnJvbSk6CisgICAgICAgIChKU0M6OlVTdHJpbmc6OmdldENT
dHJpbmcpOgorICAgICAgICAoSlNDOjpVU3RyaW5nOjphc2NpaSk6CisgICAgICAgIChKU0M6OlVT
dHJpbmc6Om9wZXJhdG9yW10pOgorICAgICAgICAoSlNDOjpVU3RyaW5nOjp0b1N0cmljdFVJbnQz
Mik6CisgICAgICAgIChKU0M6OlVTdHJpbmc6OmZpbmQpOgorICAgICAgICAoSlNDOjpVU3RyaW5n
OjpyZmluZCk6CisgICAgICAgIChKU0M6OlVTdHJpbmc6OnN1YnN0cik6CisgICAgICAgIChKU0M6
Om9wZXJhdG9yPCk6CisgICAgICAgIChKU0M6Om9wZXJhdG9yPik6CisgICAgICAgIChKU0M6OmNv
bXBhcmUpOgorICAgICAgICAoSlNDOjplcXVhbCk6CisgICAgICAgIChKU0M6OlVTdHJpbmc6OlVU
RjhTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvVVN0cmluZy5oOgorICAgICAgICAoSlNDOjpV
U3RyaW5nOjpzaXplKToKKyAgICAgICAgKEpTQzo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcnVu
dGltZS9VU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChKU0M6OlVTdHJpbmdJbXBsOjpjcmVhdGUp
OgorICAgICAgICAqIHJ1bnRpbWUvVVN0cmluZ0ltcGwuaDoKKyAgICAgICAgKEpTQzo6VVN0cmlu
Z0ltcGw6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlVTdHJpbmdJbXBsOjpzaXplKToKKyAgICAg
ICAgKEpTQzo6VVN0cmluZ0ltcGw6OmNvbXB1dGVIYXNoKToKKyAgICAgICAgKEpTQzo6VVN0cmlu
Z0ltcGw6OlVTdHJpbmdJbXBsKToKKwogMjAxMC0wMi0xNSAgSmVkcnplaiBOb3dhY2tpICA8amVk
cnplai5ub3dhY2tpQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVz
bWFubi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDU0NzU3KQor
KysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDAsNyArMjQwLDcgQEAgX19aTjNKU0M3VVN0cmluZzRmcm9tRWoKIF9fWk4zSlNDN1VTdHJpbmc0
ZnJvbUVsCiBfX1pOM0pTQzdVU3RyaW5nOXNfbnVsbFJlcEUKIF9fWk4zSlNDN1VTdHJpbmdDMUVQ
S2MKLV9fWk4zSlNDN1VTdHJpbmdDMUVQS3RpCitfX1pOM0pTQzdVU3RyaW5nQzFFUEt0agogX19a
TjNKU0M4RGVidWdnZXIyM3JlY29tcGlsZUFsbEpTRnVuY3Rpb25zRVBOU18xMkpTR2xvYmFsRGF0
YUUKIF9fWk4zSlNDOERlYnVnZ2VyNmF0dGFjaEVQTlNfMTRKU0dsb2JhbE9iamVjdEUKIF9fWk4z
SlNDOERlYnVnZ2VyNmRldGFjaEVQTlNfMTRKU0dsb2JhbE9iamVjdEUKQEAgLTM5Myw3ICszOTMs
NyBAQCBfX1pOSzNKU0M3VVN0cmluZzEwVVRGOFN0cmluZ0ViCiBfX1pOSzNKU0M3VVN0cmluZzE0
dG9TdHJpY3RVSW50MzJFUGIKIF9fWk5LM0pTQzdVU3RyaW5nNWFzY2lpRXYKIF9fWk5LM0pTQzdV
U3RyaW5nNmlzOEJpdEV2Ci1fX1pOSzNKU0M3VVN0cmluZzZzdWJzdHJFaWkKK19fWk5LM0pTQzdV
U3RyaW5nNnN1YnN0ckVqagogX19aTkszSlNDN1VTdHJpbmc4dG9VSW50MzJFUGIKIF9fWk5LM0pT
QzdVU3RyaW5nOHRvVUludDMyRVBiYgogX19aTkszSlNDOEpTT2JqZWN0MTFoYXNQcm9wZXJ0eUVQ
TlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckUKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gNTQ3NTcpCisrKyBKYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw4ICs0OSw4IEBAIG5hbWVz
cGFjZSBKU0Mgewogc3RhdGljIFVTdHJpbmcgZXNjYXBlUXVvdGVzKGNvbnN0IFVTdHJpbmcmIHN0
cikKIHsKICAgICBVU3RyaW5nIHJlc3VsdCA9IHN0cjsKLSAgICBpbnQgcG9zID0gMDsKLSAgICB3
aGlsZSAoKHBvcyA9IHJlc3VsdC5maW5kKCdcIicsIHBvcykpID49IDApIHsKKyAgICB1bnNpZ25l
ZCBwb3MgPSAwOworICAgIHdoaWxlICgocG9zID0gcmVzdWx0LmZpbmQoJ1wiJywgcG9zKSkgIT0g
VVN0cmluZzo6Tm90Rm91bmQpIHsKICAgICAgICAgcmVzdWx0ID0gbWFrZVN0cmluZyhyZXN1bHQu
c3Vic3RyKDAsIHBvcyksICJcIlxcXCJcIiIsIHJlc3VsdC5zdWJzdHIocG9zICsgMSkpOwogICAg
ICAgICBwb3MgKz0gNDsKICAgICB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFs
Q29kZUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENv
ZGVDYWNoZS5oCShyZXZpc2lvbiA1NDc1NykKKysrIEphdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2
YWxDb2RlQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZU1hcC5p
c0VtcHR5KCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4
Q2FjaGVhYmxlU291cmNlTGVuZ3RoID0gMjU2OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbWF4Q2FjaGVhYmxlU291cmNlTGVuZ3RoID0gMjU2OwogICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IG1heENhY2hlRW50cmllcyA9IDY0OwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8VVN0cmluZzo6UmVwPiwgUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiA+IEV2YWxDYWNoZU1hcDsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShy
ZXZpc2lvbiA1NDc1NykKKysrIEphdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw4ICs3Niw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBzdGF0aWMgdm9pZCBzdWJzdGl0dXRlKFVTdHJpbmcmIHN0cmluZywgY29uc3QgVVN0cmluZyYg
c3Vic3RyaW5nKQogewotICAgIGludCBwb3NpdGlvbiA9IHN0cmluZy5maW5kKCIlcyIpOwotICAg
IEFTU0VSVChwb3NpdGlvbiAhPSAtMSk7CisgICAgdW5zaWduZWQgcG9zaXRpb24gPSBzdHJpbmcu
ZmluZCgiJXMiKTsKKyAgICBBU1NFUlQocG9zaXRpb24gIT0gVVN0cmluZzo6Tm90Rm91bmQpOwog
ICAgIHN0cmluZyA9IG1ha2VTdHJpbmcoc3RyaW5nLnN1YnN0cigwLCBwb3NpdGlvbiksIHN1YnN0
cmluZywgc3RyaW5nLnN1YnN0cihwb3NpdGlvbiArIDIpKTsKIH0KIApJbmRleDogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiA1NDc1NykKKysrIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDEyICs4Nywx
MiBAQCBib29sIElkZW50aWZpZXI6OmVxdWFsKGNvbnN0IFVTdHJpbmc6OlJlCiAgICAgcmV0dXJu
IHNbbGVuZ3RoXSA9PSAwOwogfQogCi1ib29sIElkZW50aWZpZXI6OmVxdWFsKGNvbnN0IFVTdHJp
bmc6OlJlcCogciwgY29uc3QgVUNoYXIqIHMsIGludCBsZW5ndGgpCitib29sIElkZW50aWZpZXI6
OmVxdWFsKGNvbnN0IFVTdHJpbmc6OlJlcCogciwgY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxl
bmd0aCkKIHsKICAgICBpZiAoci0+c2l6ZSgpICE9IGxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGNvbnN0IFVDaGFyKiBkID0gci0+ZGF0YSgpOwotICAgIGZvciAoaW50IGkgPSAw
OyBpICE9IGxlbmd0aDsgKytpKQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gbGVuZ3Ro
OyArK2kpCiAgICAgICAgIGlmIChkW2ldICE9IHNbaV0pCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIu
aAkocmV2aXNpb24gNTQ3NTcpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIHZvaWQgcmVtb3ZlKFVTdHJpbmc6OlJlcCopOwogCiAgICAgICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFVTdHJpbmc6OlJlcCosIGNvbnN0IGNoYXIqKTsKLSAgICAgICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgVVN0cmluZzo6UmVwKiwgY29uc3QgVUNoYXIqLCBpbnQgbGVu
Z3RoKTsKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVVN0cmluZzo6UmVwKiwgY29u
c3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChj
b25zdCBVU3RyaW5nOjpSZXAqIGEsIGNvbnN0IFVTdHJpbmc6OlJlcCogYikgeyByZXR1cm4gSlND
OjplcXVhbChhLCBiKTsgfQogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmc6OlJl
cD4gYWRkKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqKTsgLy8gT25seSB0byBiZSB1c2VkIHdpdGgg
c3RyaW5nIGxpdGVyYWxzLgpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDU0NzU3KQorKysgSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4MSw3ICszODEsNyBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0VzY2Fw
ZShFCiAgICAgSlNTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgVVN0cmluZyBzdHIgPSBhcmdz
LmF0KDApLnRvU3RyaW5nKGV4ZWMpOwogICAgIGNvbnN0IFVDaGFyKiBjID0gc3RyLmRhdGEoKTsK
LSAgICBmb3IgKGludCBrID0gMDsgayA8IHN0ci5zaXplKCk7IGsrKywgYysrKSB7CisgICAgZm9y
ICh1bnNpZ25lZCBrID0gMDsgayA8IHN0ci5zaXplKCk7IGsrKywgYysrKSB7CiAgICAgICAgIGlu
dCB1ID0gY1swXTsKICAgICAgICAgaWYgKHUgPiAyNTUpIHsKICAgICAgICAgICAgIGNoYXIgdG1w
WzddOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCShyZXZpc2lvbiA1
NDc1NykKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUgdW53cmFwQm94
ZWRQcmltaXRpCiAKIHN0YXRpYyBpbmxpbmUgVVN0cmluZyBnYXAoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNwYWNlKQogewotICAgIGNvbnN0IGludCBtYXhHYXBMZW5ndGggPSAxMDsKKyAgICBj
b25zdCB1bnNpZ25lZCBtYXhHYXBMZW5ndGggPSAxMDsKICAgICBzcGFjZSA9IHVud3JhcEJveGVk
UHJpbWl0aXZlKGV4ZWMsIHNwYWNlKTsKIAogICAgIC8vIElmIHRoZSBzcGFjZSB2YWx1ZSBpcyBh
IG51bWJlciwgY3JlYXRlIGEgZ2FwIHN0cmluZyB3aXRoIHRoYXQgbnVtYmVyIG9mIHNwYWNlcy4K
QEAgLTQ1Niw3ICs0NTYsNyBAQCBpbmxpbmUgYm9vbCBTdHJpbmdpZmllcjo6d2lsbEluZGVudCgp
IGNvCiBpbmxpbmUgdm9pZCBTdHJpbmdpZmllcjo6aW5kZW50KCkKIHsKICAgICAvLyBVc2UgYSBz
aW5nbGUgc2hhcmVkIHN0cmluZywgbV9yZXBlYXRlZEdhcCwgc28gd2UgZG9uJ3Qga2VlcCBhbGxv
Y2F0aW5nIG5ldyBvbmVzIGFzIHdlIGluZGVudCBhbmQgdW5pbmRlbnQuCi0gICAgaW50IG5ld1Np
emUgPSBtX2luZGVudC5zaXplKCkgKyBtX2dhcC5zaXplKCk7CisgICAgdW5zaWduZWQgbmV3U2l6
ZSA9IG1faW5kZW50LnNpemUoKSArIG1fZ2FwLnNpemUoKTsKICAgICBpZiAobmV3U2l6ZSA+IG1f
cmVwZWF0ZWRHYXAuc2l6ZSgpKQogICAgICAgICBtX3JlcGVhdGVkR2FwID0gbWFrZVN0cmluZyht
X3JlcGVhdGVkR2FwLCBtX2dhcCk7CiAgICAgQVNTRVJUKG5ld1NpemUgPD0gbV9yZXBlYXRlZEdh
cC5zaXplKCkpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBl
LmNwcAkocmV2aXNpb24gNTQ3NTcpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclBy
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NSwxMSArMjY1LDExIEBAIEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0YKICAgICAgICAgei5hcHBlbmQobSk7CiAg
ICAgICAgIG0gPSB6LmJ1aWxkKCk7CiAgICAgICAgIGsgPSBmICsgMTsKLSAgICAgICAgQVNTRVJU
KGsgPT0gbS5zaXplKCkpOworICAgICAgICBBU1NFUlQoayA9PSBzdGF0aWNfY2FzdDxpbnQ+KG0u
c2l6ZSgpKSk7CiAgICAgfQogICAgIGludCBrTWludXNmID0gayAtIGY7CiAKLSAgICBpZiAoa01p
bnVzZiA8IG0uc2l6ZSgpKQorICAgIGlmIChrTWludXNmIDwgc3RhdGljX2Nhc3Q8aW50PihtLnNp
emUoKSkpCiAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBtYWtlU3RyaW5nKHMsIG0uc3Vi
c3RyKDAsIGtNaW51c2YpLCAiLiIsIG0uc3Vic3RyKGtNaW51c2YpKSk7CiAgICAgcmV0dXJuIGpz
U3RyaW5nKGV4ZWMsIG1ha2VTdHJpbmcocywgbS5zdWJzdHIoMCwga01pbnVzZikpKTsKIH0KQEAg
LTQ0NCw3ICs0NDQsNyBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9Q
CiAgICAgaWYgKGUgPT0gcHJlY2lzaW9uIC0gMSkKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIG1ha2VTdHJpbmcocywgbSkpOwogICAgIGlmIChlID49IDApIHsKLSAgICAgICAgaWYgKGUg
KyAxIDwgbS5zaXplKCkpCisgICAgICAgIGlmIChlICsgMSA8IHN0YXRpY19jYXN0PGludD4obS5z
aXplKCkpKQogICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIG1ha2VTdHJpbmcocywg
bS5zdWJzdHIoMCwgZSArIDEpLCAiLiIsIG0uc3Vic3RyKGUgKyAxKSkpOwogICAgICAgICByZXR1
cm4ganNTdHJpbmcoZXhlYywgbWFrZVN0cmluZyhzLCBtKSk7CiAgICAgfQpJbmRleDogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwLmNwcAkocmV2aXNpb24gNTQ3NTcpCisrKyBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDExICs3MSwxMSBAQCBpbmxp
bmUgUmVnRXhwOjpSZWdFeHAoSlNHbG9iYWxEYXRhKiBnbG9iCiB7CiAgICAgLy8gTk9URTogVGhl
IGdsb2JhbCBmbGFnIGlzIGhhbmRsZWQgb24gYSBjYXNlLWJ5LWNhc2UgYmFzaXMgYnkgZnVuY3Rp
b25zIGxpa2UKICAgICAvLyBTdHJpbmc6Om1hdGNoIGFuZCBSZWdFeHBPYmplY3Q6Om1hdGNoLgot
ICAgIGlmIChmbGFncy5maW5kKCdnJykgIT0gLTEpCisgICAgaWYgKGZsYWdzLmZpbmQoJ2cnKSAh
PSBVU3RyaW5nOjpOb3RGb3VuZCkKICAgICAgICAgbV9mbGFnQml0cyB8PSBHbG9iYWw7Ci0gICAg
aWYgKGZsYWdzLmZpbmQoJ2knKSAhPSAtMSkKKyAgICBpZiAoZmxhZ3MuZmluZCgnaScpICE9IFVT
dHJpbmc6Ok5vdEZvdW5kKQogICAgICAgICBtX2ZsYWdCaXRzIHw9IElnbm9yZUNhc2U7Ci0gICAg
aWYgKGZsYWdzLmZpbmQoJ20nKSAhPSAtMSkKKyAgICBpZiAoZmxhZ3MuZmluZCgnbScpICE9IFVT
dHJpbmc6Ok5vdEZvdW5kKQogICAgICAgICBtX2ZsYWdCaXRzIHw9IE11bHRpbGluZTsKIAogICAg
IGNvbXBpbGUoZ2xvYmFsRGF0YSk7CkBAIC0xMTcsNyArMTE3LDcgQEAgaW50IFJlZ0V4cDo6bWF0
Y2goY29uc3QgVVN0cmluZyYgcywgaW50IAogICAgIGlmIChvdmVjdG9yKQogICAgICAgICBvdmVj
dG9yLT5jbGVhcigpOwogCi0gICAgaWYgKHN0YXJ0T2Zmc2V0ID4gcy5zaXplKCkgfHwgcy5pc051
bGwoKSkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0KSA+IHMuc2l6
ZSgpIHx8IHMuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAtMTsKIAogI2lmIEVOQUJMRShZQVJS
X0pJVCkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDU0NzU3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgYm9vbCBTdHJpbmdQcm90
b3R5cGU6OmdldE93blByb3BlcnR5RGVzYwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXN0YXRpYyBORVZF
Ul9JTkxJTkUgVVN0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNTbG93KGNvbnN0IFVTdHJp
bmcmIHJlcGxhY2VtZW50LCBjb25zdCBVU3RyaW5nJiBzb3VyY2UsIGNvbnN0IGludCogb3ZlY3Rv
ciwgUmVnRXhwKiByZWcsIGludCBpKQorc3RhdGljIE5FVkVSX0lOTElORSBVU3RyaW5nIHN1YnN0
aXR1dGVCYWNrcmVmZXJlbmNlc1Nsb3coY29uc3QgVVN0cmluZyYgcmVwbGFjZW1lbnQsIGNvbnN0
IFVTdHJpbmcmIHNvdXJjZSwgY29uc3QgaW50KiBvdmVjdG9yLCBSZWdFeHAqIHJlZywgdW5zaWdu
ZWQgaSkKIHsKICAgICBWZWN0b3I8VUNoYXI+IHN1YnN0aXR1dGVkUmVwbGFjZW1lbnQ7CiAgICAg
aW50IG9mZnNldCA9IDA7CkBAIC0yMDYsNyArMjA2LDcgQEAgc3RhdGljIE5FVkVSX0lOTElORSBV
U3RyaW5nIHN1YnN0aXR1dGVCYQogICAgICAgICBpICs9IDEgKyBhZHZhbmNlOwogICAgICAgICBv
ZmZzZXQgPSBpICsgMTsKICAgICAgICAgc3Vic3RpdHV0ZWRSZXBsYWNlbWVudC5hcHBlbmQoc291
cmNlLmRhdGEoKSArIGJhY2tyZWZTdGFydCwgYmFja3JlZkxlbmd0aCk7Ci0gICAgfSB3aGlsZSAo
KGkgPSByZXBsYWNlbWVudC5maW5kKCckJywgaSArIDEpKSAhPSAtMSk7CisgICAgfSB3aGlsZSAo
KGkgPSByZXBsYWNlbWVudC5maW5kKCckJywgaSArIDEpKSAhPSBVU3RyaW5nOjpOb3RGb3VuZCk7
CiAKICAgICBpZiAocmVwbGFjZW1lbnQuc2l6ZSgpIC0gb2Zmc2V0KQogICAgICAgICBzdWJzdGl0
dXRlZFJlcGxhY2VtZW50LmFwcGVuZChyZXBsYWNlbWVudC5kYXRhKCkgKyBvZmZzZXQsIHJlcGxh
Y2VtZW50LnNpemUoKSAtIG9mZnNldCk7CkBAIC0yMTcsOCArMjE3LDggQEAgc3RhdGljIE5FVkVS
X0lOTElORSBVU3RyaW5nIHN1YnN0aXR1dGVCYQogCiBzdGF0aWMgaW5saW5lIFVTdHJpbmcgc3Vi
c3RpdHV0ZUJhY2tyZWZlcmVuY2VzKGNvbnN0IFVTdHJpbmcmIHJlcGxhY2VtZW50LCBjb25zdCBV
U3RyaW5nJiBzb3VyY2UsIGNvbnN0IGludCogb3ZlY3RvciwgUmVnRXhwKiByZWcpCiB7Ci0gICAg
aW50IGkgPSByZXBsYWNlbWVudC5maW5kKCckJywgMCk7Ci0gICAgaWYgKFVOTElLRUxZKGkgIT0g
LTEpKQorICAgIHVuc2lnbmVkIGkgPSByZXBsYWNlbWVudC5maW5kKCckJywgMCk7CisgICAgaWYg
KFVOTElLRUxZKGkgIT0gVVN0cmluZzo6Tm90Rm91bmQpKQogICAgICAgICByZXR1cm4gc3Vic3Rp
dHV0ZUJhY2tyZWZlcmVuY2VzU2xvdyhyZXBsYWNlbWVudCwgc291cmNlLCBvdmVjdG9yLCByZWcs
IGkpOwogICAgIHJldHVybiByZXBsYWNlbWVudDsKIH0KQEAgLTMyOSw3ICszMjksNyBAQCBKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwCiAgICAgICAgIFJlZ0V4cENvbnN0
cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvciA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
cmVnRXhwQ29uc3RydWN0b3IoKTsKIAogICAgICAgICBpbnQgbGFzdEluZGV4ID0gMDsKLSAgICAg
ICAgaW50IHN0YXJ0UG9zaXRpb24gPSAwOworICAgICAgICB1bnNpZ25lZCBzdGFydFBvc2l0aW9u
ID0gMDsKIAogICAgICAgICBWZWN0b3I8U3RyaW5nUmFuZ2UsIDE2PiBzb3VyY2VSYW5nZXM7CiAg
ICAgICAgIFZlY3RvcjxVU3RyaW5nLCAxNj4gcmVwbGFjZW1lbnRzOwpAQCAtNDMyLDcgKzQzMiw3
IEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXAKICAgICAgICAgaWYg
KCFsYXN0SW5kZXggJiYgcmVwbGFjZW1lbnRzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
biBzb3VyY2VWYWw7CiAKLSAgICAgICAgaWYgKGxhc3RJbmRleCA8IHNvdXJjZS5zaXplKCkpCisg
ICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGFzdEluZGV4KSA8IHNvdXJjZS5zaXpl
KCkpCiAgICAgICAgICAgICBzb3VyY2VSYW5nZXMuYXBwZW5kKFN0cmluZ1JhbmdlKGxhc3RJbmRl
eCwgc291cmNlLnNpemUoKSAtIGxhc3RJbmRleCkpOwogCiAgICAgICAgIHJldHVybiBqc1NwbGlj
ZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhleGVjLCBzb3VyY2VWYWwsIHNvdXJjZSwgc291cmNl
UmFuZ2VzLmRhdGEoKSwgc291cmNlUmFuZ2VzLnNpemUoKSwgcmVwbGFjZW1lbnRzLmRhdGEoKSwg
cmVwbGFjZW1lbnRzLnNpemUoKSk7CkBAIC00NDEsOSArNDQxLDkgQEAgSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcAogICAgIC8vIE5vdCBhIHJlZ3VsYXIgZXhwcmVzc2lv
biwgc28gdHJlYXQgdGhlIHBhdHRlcm4gYXMgYSBzdHJpbmcuCiAKICAgICBVU3RyaW5nIHBhdHRl
cm5TdHJpbmcgPSBwYXR0ZXJuLnRvU3RyaW5nKGV4ZWMpOwotICAgIGludCBtYXRjaFBvcyA9IHNv
dXJjZS5maW5kKHBhdHRlcm5TdHJpbmcpOworICAgIHVuc2lnbmVkIG1hdGNoUG9zID0gc291cmNl
LmZpbmQocGF0dGVyblN0cmluZyk7CiAKLSAgICBpZiAobWF0Y2hQb3MgPT0gLTEpCisgICAgaWYg
KG1hdGNoUG9zID09IFVTdHJpbmc6Ok5vdEZvdW5kKQogICAgICAgICByZXR1cm4gc291cmNlVmFs
OwogCiAgICAgaW50IG1hdGNoTGVuID0gcGF0dGVyblN0cmluZy5zaXplKCk7CkBAIC01NDEsNyAr
NTQxLDEwIEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmQKICAgICAg
ICAgcG9zID0gc3RhdGljX2Nhc3Q8aW50PihkcG9zKTsKICAgICB9CiAKLSAgICByZXR1cm4ganNO
dW1iZXIoZXhlYywgcy5maW5kKHUyLCBwb3MpKTsKKyAgICB1bnNpZ25lZCByZXN1bHQgPSBzLmZp
bmQodTIsIHBvcyk7CisgICAgaWYgKHJlc3VsdCA9PSBVU3RyaW5nOjpOb3RGb3VuZCkKKyAgICAg
ICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIC0xKTsKKyAgICByZXR1cm4ganNOdW1iZXIoZXhlYywg
cmVzdWx0KTsKIH0KIAogSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJ
bmRleE9mKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29u
c3QgQXJnTGlzdCYgYXJncykKQEAgLTU2Myw3ICs1NjYsMTEgQEAgSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY0xhcwogICAgIGVsc2UgaWYgKGlzbmFuKGRwb3MpKQogICAgICAg
ICBkcG9zID0gbGVuOwogI2VuZGlmCi0gICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHMucmZpbmQo
dTIsIHN0YXRpY19jYXN0PGludD4oZHBvcykpKTsKKworICAgIHVuc2lnbmVkIHJlc3VsdCA9IHMu
cmZpbmQodTIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihkcG9zKSk7CisgICAgaWYgKHJlc3VsdCA9
PSBVU3RyaW5nOjpOb3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIC0xKTsK
KyAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgcmVzdWx0KTsKIH0KIAogSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY01hdGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBK
U1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKQEAgLTY3NSw3ICs2ODIsNyBA
QCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsCiAKICAgICBKU0FycmF5
KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMpOwogICAgIHVuc2lnbmVkIGkgPSAw
OwotICAgIGludCBwMCA9IDA7CisgICAgdW5zaWduZWQgcDAgPSAwOwogICAgIHVuc2lnbmVkIGxp
bWl0ID0gYTEuaXNVbmRlZmluZWQoKSA/IDB4RkZGRkZGRkZVIDogYTEudG9VSW50MzIoZXhlYyk7
CiAgICAgaWYgKGEwLmluaGVyaXRzKCZSZWdFeHBPYmplY3Q6OmluZm8pKSB7CiAgICAgICAgIFJl
Z0V4cCogcmVnID0gYXNSZWdFeHBPYmplY3QoYTApLT5yZWdFeHAoKTsKQEAgLTY4Myw3ICs2OTAs
NyBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsCiAgICAgICAgICAg
ICAvLyBlbXB0eSBzdHJpbmcgbWF0Y2hlZCBieSByZWdleHAgLT4gZW1wdHkgYXJyYXkKICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KLSAgICAgICAgaW50IHBvcyA9IDA7Cisg
ICAgICAgIHVuc2lnbmVkIHBvcyA9IDA7CiAgICAgICAgIHdoaWxlIChpICE9IGxpbWl0ICYmIHBv
cyA8IHMuc2l6ZSgpKSB7CiAgICAgICAgICAgICBWZWN0b3I8aW50LCAzMj4gb3ZlY3RvcjsKICAg
ICAgICAgICAgIGludCBtcG9zID0gcmVnLT5tYXRjaChzLCBwb3MsICZvdmVjdG9yKTsKQEAgLTY5
MSw3ICs2OTgsNyBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpbnQgbWxlbiA9IG92ZWN0b3JbMV0g
LSBvdmVjdG9yWzBdOwogICAgICAgICAgICAgcG9zID0gbXBvcyArIChtbGVuID09IDAgPyAxIDog
bWxlbik7Ci0gICAgICAgICAgICBpZiAobXBvcyAhPSBwMCB8fCBtbGVuKSB7CisgICAgICAgICAg
ICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1wb3MpICE9IHAwIHx8IG1sZW4pIHsKICAgICAg
ICAgICAgICAgICByZXN1bHQtPnB1dChleGVjLCBpKyssIGpzU3Vic3RyaW5nKGV4ZWMsIHMsIHAw
LCBtcG9zIC0gcDApKTsKICAgICAgICAgICAgICAgICBwMCA9IG1wb3MgKyBtbGVuOwogICAgICAg
ICAgICAgfQpAQCAtNzEzLDggKzcyMCw5IEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNTcGwKICAgICAgICAgICAgIHdoaWxlIChpICE9IGxpbWl0ICYmIHAwIDwgcy5zaXpl
KCkgLSAxKQogICAgICAgICAgICAgICAgIHJlc3VsdC0+cHV0KGV4ZWMsIGkrKywganNTaW5nbGVD
aGFyYWN0ZXJTdWJzdHJpbmcoZXhlYywgcywgcDArKykpOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgaW50IHBvczsKLSAgICAgICAgICAgIHdoaWxlIChpICE9IGxpbWl0ICYmIChwb3Mg
PSBzLmZpbmQodTIsIHAwKSkgPj0gMCkgeworICAgICAgICAgICAgdW5zaWduZWQgcG9zOworICAg
ICAgICAgICAgCisgICAgICAgICAgICB3aGlsZSAoaSAhPSBsaW1pdCAmJiAocG9zID0gcy5maW5k
KHUyLCBwMCkpICE9IFVTdHJpbmc6Ok5vdEZvdW5kKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0
LT5wdXQoZXhlYywgaSsrLCBqc1N1YnN0cmluZyhleGVjLCBzLCBwMCwgcG9zIC0gcDApKTsKICAg
ICAgICAgICAgICAgICBwMCA9IHBvcyArIHUyLnNpemUoKTsKICAgICAgICAgICAgIH0KQEAgLTEw
MjIsMTIgKzEwMzAsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGlzVHJpbVdoaXRlc3BhY2UoVUNo
YQogc3RhdGljIGlubGluZSBKU1ZhbHVlIHRyaW1TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHRoaXNWYWx1ZSwgaW50IHRyaW1LaW5kKQogewogICAgIFVTdHJpbmcgc3RyID0gdGhpc1Zh
bHVlLnRvVGhpc1N0cmluZyhleGVjKTsKLSAgICBpbnQgbGVmdCA9IDA7CisgICAgdW5zaWduZWQg
bGVmdCA9IDA7CiAgICAgaWYgKHRyaW1LaW5kICYgVHJpbUxlZnQpIHsKICAgICAgICAgd2hpbGUg
KGxlZnQgPCBzdHIuc2l6ZSgpICYmIGlzVHJpbVdoaXRlc3BhY2Uoc3RyW2xlZnRdKSkKICAgICAg
ICAgICAgIGxlZnQrKzsKICAgICB9Ci0gICAgaW50IHJpZ2h0ID0gc3RyLnNpemUoKTsKKyAgICB1
bnNpZ25lZCByaWdodCA9IHN0ci5zaXplKCk7CiAgICAgaWYgKHRyaW1LaW5kICYgVHJpbVJpZ2h0
KSB7CiAgICAgICAgIHdoaWxlIChyaWdodCA+IGxlZnQgJiYgaXNUcmltV2hpdGVzcGFjZShzdHJb
cmlnaHQgLSAxXSkpCiAgICAgICAgICAgICByaWdodC0tOwpJbmRleDogSmF2YVNjcmlwdENvcmUv
cnVudGltZS9VU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1VTdHJpbmcuY3BwCShyZXZpc2lvbiA1NDc1NykKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VVN0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NywxMiArMTY3LDEyIEBAIFVTdHJpbmc6
OlVTdHJpbmcoY29uc3QgY2hhciogYykKIHsKIH0KIAotVVN0cmluZzo6VVN0cmluZyhjb25zdCBj
aGFyKiBjLCBpbnQgbGVuZ3RoKQorVVN0cmluZzo6VVN0cmluZyhjb25zdCBjaGFyKiBjLCB1bnNp
Z25lZCBsZW5ndGgpCiAgICAgOiBtX3JlcChSZXA6OmNyZWF0ZShjLCBsZW5ndGgpKQogewogfQog
Ci1VU3RyaW5nOjpVU3RyaW5nKGNvbnN0IFVDaGFyKiBjLCBpbnQgbGVuZ3RoKQorVVN0cmluZzo6
VVN0cmluZyhjb25zdCBVQ2hhciogYywgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmIChsZW5n
dGggPT0gMCkKICAgICAgICAgbV9yZXAgPSAmUmVwOjplbXB0eSgpOwpAQCAtMjA2LDcgKzIwNiw3
IEBAIFVTdHJpbmcgVVN0cmluZzo6ZnJvbShpbnQgaSkKICAgICAgICAgICAgICotLXAgPSAnLSc7
CiAgICAgfQogCi0gICAgcmV0dXJuIFVTdHJpbmcocCwgc3RhdGljX2Nhc3Q8aW50PihlbmQgLSBw
KSk7CisgICAgcmV0dXJuIFVTdHJpbmcocCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHAp
KTsKIH0KIAogVVN0cmluZyBVU3RyaW5nOjpmcm9tKGxvbmcgbG9uZyBpKQpAQCAtMjM5LDcgKzIz
OSw3IEBAIFVTdHJpbmcgVVN0cmluZzo6ZnJvbShsb25nIGxvbmcgaSkKICAgICAgICAgICAgICot
LXAgPSAnLSc7CiAgICAgfQogCi0gICAgcmV0dXJuIFVTdHJpbmcocCwgc3RhdGljX2Nhc3Q8aW50
PihlbmQgLSBwKSk7CisgICAgcmV0dXJuIFVTdHJpbmcocCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGVuZCAtIHApKTsKIH0KIAogVVN0cmluZyBVU3RyaW5nOjpmcm9tKHVuc2lnbmVkIGludCB1KQpA
QCAtMjU3LDcgKzI1Nyw3IEBAIFVTdHJpbmcgVVN0cmluZzo6ZnJvbSh1bnNpZ25lZCBpbnQgdSkK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBVU3RyaW5nKHAsIHN0YXRpY19jYXN0PGlu
dD4oZW5kIC0gcCkpOworICAgIHJldHVybiBVU3RyaW5nKHAsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihlbmQgLSBwKSk7CiB9CiAKIFVTdHJpbmcgVVN0cmluZzo6ZnJvbShsb25nIGwpCkBAIC0yODYs
NyArMjg2LDcgQEAgVVN0cmluZyBVU3RyaW5nOjpmcm9tKGxvbmcgbCkKICAgICAgICAgICAgICot
LXAgPSAnLSc7CiAgICAgfQogCi0gICAgcmV0dXJuIFVTdHJpbmcocCwgc3RhdGljX2Nhc3Q8aW50
PihlbmQgLSBwKSk7CisgICAgcmV0dXJuIFVTdHJpbmcocCwgZW5kIC0gcCk7CiB9CiAKIFVTdHJp
bmcgVVN0cmluZzo6ZnJvbShkb3VibGUgZCkKQEAgLTI5OSw4ICsyOTksOCBAQCBVU3RyaW5nIFVT
dHJpbmc6OmZyb20oZG91YmxlIGQpCiAKIGJvb2wgVVN0cmluZzo6Z2V0Q1N0cmluZyhDU3RyaW5n
QnVmZmVyJiBidWZmZXIpIGNvbnN0CiB7Ci0gICAgaW50IGxlbmd0aCA9IHNpemUoKTsKLSAgICBp
bnQgbmVlZGVkU2l6ZSA9IGxlbmd0aCArIDE7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc2l6ZSgp
OworICAgIHVuc2lnbmVkIG5lZWRlZFNpemUgPSBsZW5ndGggKyAxOwogICAgIGJ1ZmZlci5yZXNp
emUobmVlZGVkU2l6ZSk7CiAgICAgY2hhciogYnVmID0gYnVmZmVyLmRhdGEoKTsKIApAQCAtMzI0
LDggKzMyNCw4IEBAIGNoYXIqIFVTdHJpbmc6OmFzY2lpKCkgY29uc3QKIHsKICAgICBzdGF0aWMg
Y2hhciogYXNjaWlCdWZmZXIgPSAwOwogCi0gICAgaW50IGxlbmd0aCA9IHNpemUoKTsKLSAgICBp
bnQgbmVlZGVkU2l6ZSA9IGxlbmd0aCArIDE7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc2l6ZSgp
OworICAgIHVuc2lnbmVkIG5lZWRlZFNpemUgPSBsZW5ndGggKyAxOwogICAgIGRlbGV0ZVtdIGFz
Y2lpQnVmZmVyOwogICAgIGFzY2lpQnVmZmVyID0gbmV3IGNoYXJbbmVlZGVkU2l6ZV07CiAKQEAg
LTM1NSw3ICszNTUsNyBAQCBib29sIFVTdHJpbmc6OmlzOEJpdCgpIGNvbnN0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLVVDaGFyIFVTdHJpbmc6Om9wZXJhdG9yW10oaW50IHBvcykgY29uc3QKK1VD
aGFyIFVTdHJpbmc6Om9wZXJhdG9yW10odW5zaWduZWQgcG9zKSBjb25zdAogewogICAgIGlmIChw
b3MgPj0gc2l6ZSgpKQogICAgICAgICByZXR1cm4gJ1wwJzsKQEAgLTQ5NSw3ICs0OTUsNyBAQCB1
aW50MzJfdCBVU3RyaW5nOjp0b1N0cmljdFVJbnQzMihib29sKiBvCiAgICAgICAgICpvayA9IGZh
bHNlOwogCiAgICAgLy8gRW1wdHkgc3RyaW5nIGlzIG5vdCBPSy4KLSAgICBpbnQgbGVuID0gbV9y
ZXAtPnNpemUoKTsKKyAgICB1bnNpZ25lZCBsZW4gPSBtX3JlcC0+c2l6ZSgpOwogICAgIGlmIChs
ZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgY29uc3QgVUNoYXIqIHAgPSBtX3JlcC0+
ZGF0YSgpOwpAQCAtNTM5LDEyICs1MzksOSBAQCB1aW50MzJfdCBVU3RyaW5nOjp0b1N0cmljdFVJ
bnQzMihib29sKiBvCiAgICAgfQogfQogCi1pbnQgVVN0cmluZzo6ZmluZChjb25zdCBVU3RyaW5n
JiBmLCBpbnQgcG9zKSBjb25zdAordW5zaWduZWQgVVN0cmluZzo6ZmluZChjb25zdCBVU3RyaW5n
JiBmLCB1bnNpZ25lZCBwb3MpIGNvbnN0CiB7Ci0gICAgaW50IGZzeiA9IGYuc2l6ZSgpOwotCi0g
ICAgaWYgKHBvcyA8IDApCi0gICAgICAgIHBvcyA9IDA7CisgICAgdW5zaWduZWQgZnN6ID0gZi5z
aXplKCk7CiAKICAgICBpZiAoZnN6ID09IDEpIHsKICAgICAgICAgVUNoYXIgY2ggPSBmWzBdOwpA
QCAtNTUzLDE2ICs1NTAsMTYgQEAgaW50IFVTdHJpbmc6OmZpbmQoY29uc3QgVVN0cmluZyYgZiwg
aW50IAogICAgICAgICAgICAgaWYgKCpjID09IGNoKQogICAgICAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KGMgLSBkYXRhKCkpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiAt
MTsKKyAgICAgICAgcmV0dXJuIE5vdEZvdW5kOwogICAgIH0KIAotICAgIGludCBzeiA9IHNpemUo
KTsKKyAgICB1bnNpZ25lZCBzeiA9IHNpemUoKTsKICAgICBpZiAoc3ogPCBmc3opCi0gICAgICAg
IHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIE5vdEZvdW5kOwogICAgIGlmIChmc3ogPT0gMCkK
ICAgICAgICAgcmV0dXJuIHBvczsKICAgICBjb25zdCBVQ2hhciogZW5kID0gZGF0YSgpICsgc3og
LSBmc3o7Ci0gICAgaW50IGZzaXplbWludXNvbmUgPSAoZnN6IC0gMSkgKiBzaXplb2YoVUNoYXIp
OworICAgIHVuc2lnbmVkIGZzaXplbWludXNvbmUgPSAoZnN6IC0gMSkgKiBzaXplb2YoVUNoYXIp
OwogICAgIGNvbnN0IFVDaGFyKiBmZGF0YSA9IGYuZGF0YSgpOwogICAgIHVuc2lnbmVkIHNob3J0
IGZjaGFyID0gZmRhdGFbMF07CiAgICAgKytmZGF0YTsKQEAgLTU3MSw0OCArNTY4LDQ0IEBAIGlu
dCBVU3RyaW5nOjpmaW5kKGNvbnN0IFVTdHJpbmcmIGYsIGludCAKICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KGMgLSBkYXRhKCkpOwogICAgIH0KIAotICAgIHJldHVybiAtMTsK
KyAgICByZXR1cm4gTm90Rm91bmQ7CiB9CiAKLWludCBVU3RyaW5nOjpmaW5kKFVDaGFyIGNoLCBp
bnQgcG9zKSBjb25zdAordW5zaWduZWQgVVN0cmluZzo6ZmluZChVQ2hhciBjaCwgdW5zaWduZWQg
cG9zKSBjb25zdAogewotICAgIGlmIChwb3MgPCAwKQotICAgICAgICBwb3MgPSAwOwogICAgIGNv
bnN0IFVDaGFyKiBlbmQgPSBkYXRhKCkgKyBzaXplKCk7CiAgICAgZm9yIChjb25zdCBVQ2hhciog
YyA9IGRhdGEoKSArIHBvczsgYyA8IGVuZDsgYysrKSB7CiAgICAgICAgIGlmICgqYyA9PSBjaCkK
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGMgLSBkYXRhKCkpOwogICAgIH0K
IAotICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gTm90Rm91bmQ7CiB9CiAKLWludCBVU3RyaW5n
OjpyZmluZChjb25zdCBVU3RyaW5nJiBmLCBpbnQgcG9zKSBjb25zdAordW5zaWduZWQgVVN0cmlu
Zzo6cmZpbmQoY29uc3QgVVN0cmluZyYgZiwgdW5zaWduZWQgcG9zKSBjb25zdAogewotICAgIGlu
dCBzeiA9IHNpemUoKTsKLSAgICBpbnQgZnN6ID0gZi5zaXplKCk7CisgICAgdW5zaWduZWQgc3og
PSBzaXplKCk7CisgICAgdW5zaWduZWQgZnN6ID0gZi5zaXplKCk7CiAgICAgaWYgKHN6IDwgZnN6
KQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKHBvcyA8IDApCi0gICAgICAgIHBvcyA9IDA7
CisgICAgICAgIHJldHVybiBOb3RGb3VuZDsKICAgICBpZiAocG9zID4gc3ogLSBmc3opCiAgICAg
ICAgIHBvcyA9IHN6IC0gZnN6OwogICAgIGlmIChmc3ogPT0gMCkKICAgICAgICAgcmV0dXJuIHBv
czsKLSAgICBpbnQgZnNpemVtaW51c29uZSA9IChmc3ogLSAxKSAqIHNpemVvZihVQ2hhcik7Cisg
ICAgdW5zaWduZWQgZnNpemVtaW51c29uZSA9IChmc3ogLSAxKSAqIHNpemVvZihVQ2hhcik7CiAg
ICAgY29uc3QgVUNoYXIqIGZkYXRhID0gZi5kYXRhKCk7CiAgICAgZm9yIChjb25zdCBVQ2hhciog
YyA9IGRhdGEoKSArIHBvczsgYyA+PSBkYXRhKCk7IGMtLSkgewogICAgICAgICBpZiAoKmMgPT0g
KmZkYXRhICYmICFtZW1jbXAoYyArIDEsIGZkYXRhICsgMSwgZnNpemVtaW51c29uZSkpCiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihjIC0gZGF0YSgpKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gLTE7CisgICAgcmV0dXJuIE5vdEZvdW5kOwogfQogCi1pbnQgVVN0cmluZzo6cmZp
bmQoVUNoYXIgY2gsIGludCBwb3MpIGNvbnN0Cit1bnNpZ25lZCBVU3RyaW5nOjpyZmluZChVQ2hh
ciBjaCwgdW5zaWduZWQgcG9zKSBjb25zdAogewogICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIE5vdEZvdW5kOwogICAgIGlmIChwb3MgKyAxID49
IHNpemUoKSkKICAgICAgICAgcG9zID0gc2l6ZSgpIC0gMTsKICAgICBmb3IgKGNvbnN0IFVDaGFy
KiBjID0gZGF0YSgpICsgcG9zOyBjID49IGRhdGEoKTsgYy0tKSB7CkBAIC02MjAsMjEgKzYxMywx
OCBAQCBpbnQgVVN0cmluZzo6cmZpbmQoVUNoYXIgY2gsIGludCBwb3MpIGNvCiAgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihjIC0gZGF0YSgpKTsKICAgICB9CiAKLSAgICByZXR1
cm4gLTE7CisgICAgcmV0dXJuIE5vdEZvdW5kOwogfQogCi1VU3RyaW5nIFVTdHJpbmc6OnN1YnN0
cihpbnQgcG9zLCBpbnQgbGVuKSBjb25zdAorVVN0cmluZyBVU3RyaW5nOjpzdWJzdHIodW5zaWdu
ZWQgcG9zLCB1bnNpZ25lZCBsZW4pIGNvbnN0CiB7Ci0gICAgaW50IHMgPSBzaXplKCk7CisgICAg
dW5zaWduZWQgcyA9IHNpemUoKTsKIAotICAgIGlmIChwb3MgPCAwKQotICAgICAgICBwb3MgPSAw
OwotICAgIGVsc2UgaWYgKHBvcyA+PSBzKQorICAgIGlmIChwb3MgPj0gcykKICAgICAgICAgcG9z
ID0gczsKLSAgICBpZiAobGVuIDwgMCkKLSAgICAgICAgbGVuID0gczsKLSAgICBpZiAocG9zICsg
bGVuID49IHMpCi0gICAgICAgIGxlbiA9IHMgLSBwb3M7CisgICAgdW5zaWduZWQgbGltaXQgPSBz
IC0gcG9zOworICAgIGlmIChsZW4gPiBsaW1pdCkKKyAgICAgICAgbGVuID0gbGltaXQ7CiAKICAg
ICBpZiAocG9zID09IDAgJiYgbGVuID09IHMpCiAgICAgICAgIHJldHVybiAqdGhpczsKQEAgLTY2
MSwxMiArNjUxLDEyIEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QK
IAogYm9vbCBvcGVyYXRvcjwoY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKQog
ewotICAgIGNvbnN0IGludCBsMSA9IHMxLnNpemUoKTsKLSAgICBjb25zdCBpbnQgbDIgPSBzMi5z
aXplKCk7Ci0gICAgY29uc3QgaW50IGxtaW4gPSBsMSA8IGwyID8gbDEgOiBsMjsKKyAgICBjb25z
dCB1bnNpZ25lZCBsMSA9IHMxLnNpemUoKTsKKyAgICBjb25zdCB1bnNpZ25lZCBsMiA9IHMyLnNp
emUoKTsKKyAgICBjb25zdCB1bnNpZ25lZCBsbWluID0gbDEgPCBsMiA/IGwxIDogbDI7CiAgICAg
Y29uc3QgVUNoYXIqIGMxID0gczEuZGF0YSgpOwogICAgIGNvbnN0IFVDaGFyKiBjMiA9IHMyLmRh
dGEoKTsKLSAgICBpbnQgbCA9IDA7CisgICAgdW5zaWduZWQgbCA9IDA7CiAgICAgd2hpbGUgKGwg
PCBsbWluICYmICpjMSA9PSAqYzIpIHsKICAgICAgICAgYzErKzsKICAgICAgICAgYzIrKzsKQEAg
LTY4MCwxMiArNjcwLDEyIEBAIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25z
dCAKIAogYm9vbCBvcGVyYXRvcj4oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMy
KQogewotICAgIGNvbnN0IGludCBsMSA9IHMxLnNpemUoKTsKLSAgICBjb25zdCBpbnQgbDIgPSBz
Mi5zaXplKCk7Ci0gICAgY29uc3QgaW50IGxtaW4gPSBsMSA8IGwyID8gbDEgOiBsMjsKKyAgICBj
b25zdCB1bnNpZ25lZCBsMSA9IHMxLnNpemUoKTsKKyAgICBjb25zdCB1bnNpZ25lZCBsMiA9IHMy
LnNpemUoKTsKKyAgICBjb25zdCB1bnNpZ25lZCBsbWluID0gbDEgPCBsMiA/IGwxIDogbDI7CiAg
ICAgY29uc3QgVUNoYXIqIGMxID0gczEuZGF0YSgpOwogICAgIGNvbnN0IFVDaGFyKiBjMiA9IHMy
LmRhdGEoKTsKLSAgICBpbnQgbCA9IDA7CisgICAgdW5zaWduZWQgbCA9IDA7CiAgICAgd2hpbGUg
KGwgPCBsbWluICYmICpjMSA9PSAqYzIpIHsKICAgICAgICAgYzErKzsKICAgICAgICAgYzIrKzsK
QEAgLTY5OSwxMiArNjg5LDEyIEBAIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFVTdHJpbmcmIHMxLCBj
b25zdCAKIAogaW50IGNvbXBhcmUoY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMy
KQogewotICAgIGNvbnN0IGludCBsMSA9IHMxLnNpemUoKTsKLSAgICBjb25zdCBpbnQgbDIgPSBz
Mi5zaXplKCk7Ci0gICAgY29uc3QgaW50IGxtaW4gPSBsMSA8IGwyID8gbDEgOiBsMjsKKyAgICBj
b25zdCB1bnNpZ25lZCBsMSA9IHMxLnNpemUoKTsKKyAgICBjb25zdCB1bnNpZ25lZCBsMiA9IHMy
LnNpemUoKTsKKyAgICBjb25zdCB1bnNpZ25lZCBsbWluID0gbDEgPCBsMiA/IGwxIDogbDI7CiAg
ICAgY29uc3QgVUNoYXIqIGMxID0gczEuZGF0YSgpOwogICAgIGNvbnN0IFVDaGFyKiBjMiA9IHMy
LmRhdGEoKTsKLSAgICBpbnQgbCA9IDA7CisgICAgdW5zaWduZWQgbCA9IDA7CiAgICAgd2hpbGUg
KGwgPCBsbWluICYmICpjMSA9PSAqYzIpIHsKICAgICAgICAgYzErKzsKICAgICAgICAgYzIrKzsK
QEAgLTcyMiwxMiArNzEyLDEyIEBAIGludCBjb21wYXJlKGNvbnN0IFVTdHJpbmcmIHMxLCBjb25z
dCBVU3QKIAogYm9vbCBlcXVhbChjb25zdCBVU3RyaW5nOjpSZXAqIHIsIGNvbnN0IFVTdHJpbmc6
OlJlcCogYikKIHsKLSAgICBpbnQgbGVuZ3RoID0gci0+c2l6ZSgpOworICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHItPnNpemUoKTsKICAgICBpZiAobGVuZ3RoICE9IGItPnNpemUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGNvbnN0IFVDaGFyKiBkID0gci0+ZGF0YSgpOwogICAgIGNvbnN0
IFVDaGFyKiBzID0gYi0+ZGF0YSgpOwotICAgIGZvciAoaW50IGkgPSAwOyBpICE9IGxlbmd0aDsg
KytpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBsZW5ndGg7ICsraSkgewogICAg
ICAgICBpZiAoZFtpXSAhPSBzW2ldKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
QEAgLTczNyw3ICs3MjcsNyBAQCBib29sIGVxdWFsKGNvbnN0IFVTdHJpbmc6OlJlcCogciwgY29u
c3QgCiBDU3RyaW5nIFVTdHJpbmc6OlVURjhTdHJpbmcoYm9vbCBzdHJpY3QpIGNvbnN0CiB7CiAg
ICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFj
dGVycy4KLSAgICBjb25zdCBpbnQgbGVuZ3RoID0gc2l6ZSgpOworICAgIGNvbnN0IHVuc2lnbmVk
IGxlbmd0aCA9IHNpemUoKTsKICAgICBWZWN0b3I8Y2hhciwgMTAyND4gYnVmZmVyKGxlbmd0aCAq
IDMpOwogCiAgICAgLy8gQ29udmVydCB0byBydW5zIG9mIDgtYml0IGNoYXJhY3RlcnMuCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaAkocmV2aXNpb24gNTQ3NTcpCisrKyBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1VTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtODIsOCArODIsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFVTdHJpbmcoKTsKICAgICAgICAg
VVN0cmluZyhjb25zdCBjaGFyKik7IC8vIENvbnN0cnVjdG9yIGZvciBudWxsLXRlcm1pbmF0ZWQg
c3RyaW5nLgotICAgICAgICBVU3RyaW5nKGNvbnN0IGNoYXIqLCBpbnQgbGVuZ3RoKTsKLSAgICAg
ICAgVVN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgpOworICAgICAgICBVU3RyaW5nKGNv
bnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworICAgICAgICBVU3RyaW5nKGNvbnN0IFVDaGFy
KiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAgICAgVVN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXI+
JiBidWZmZXIpOwogCiAgICAgICAgIFVTdHJpbmcoY29uc3QgVVN0cmluZyYgcykKQEAgLTEzNiw5
ICsxMzYsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzOEJpdCgpIGNvbnN0
OwogCi0gICAgICAgIGludCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZXAtPnNpemUoKTsgfQor
ICAgICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZXAtPnNpemUoKTsgfQog
Ci0gICAgICAgIFVDaGFyIG9wZXJhdG9yW10oaW50IHBvcykgY29uc3Q7CisgICAgICAgIFVDaGFy
IG9wZXJhdG9yW10odW5zaWduZWQgcG9zKSBjb25zdDsKIAogICAgICAgICBkb3VibGUgdG9Eb3Vi
bGUoYm9vbCB0b2xlcmF0ZVRyYWlsaW5nSnVuaywgYm9vbCB0b2xlcmF0ZUVtcHR5U3RyaW5nKSBj
b25zdDsKICAgICAgICAgZG91YmxlIHRvRG91YmxlKGJvb2wgdG9sZXJhdGVUcmFpbGluZ0p1bmsp
IGNvbnN0OwpAQCAtMTUwLDEyICsxNTAsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
dW5zaWduZWQgdG9BcnJheUluZGV4KGJvb2wqIG9rID0gMCkgY29uc3Q7CiAKLSAgICAgICAgaW50
IGZpbmQoY29uc3QgVVN0cmluZyYgZiwgaW50IHBvcyA9IDApIGNvbnN0OwotICAgICAgICBpbnQg
ZmluZChVQ2hhciwgaW50IHBvcyA9IDApIGNvbnN0OwotICAgICAgICBpbnQgcmZpbmQoY29uc3Qg
VVN0cmluZyYgZiwgaW50IHBvcykgY29uc3Q7Ci0gICAgICAgIGludCByZmluZChVQ2hhciwgaW50
IHBvcykgY29uc3Q7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBOb3RGb3VuZCA9IDB4
RkZGRkZGRkZ1OworICAgICAgICB1bnNpZ25lZCBmaW5kKGNvbnN0IFVTdHJpbmcmIGYsIHVuc2ln
bmVkIHBvcyA9IDApIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBmaW5kKFVDaGFyLCB1bnNpZ25l
ZCBwb3MgPSAwKSBjb25zdDsKKyAgICAgICAgdW5zaWduZWQgcmZpbmQoY29uc3QgVVN0cmluZyYg
ZiwgdW5zaWduZWQgcG9zKSBjb25zdDsKKyAgICAgICAgdW5zaWduZWQgcmZpbmQoVUNoYXIsIHVu
c2lnbmVkIHBvcykgY29uc3Q7CiAKLSAgICAgICAgVVN0cmluZyBzdWJzdHIoaW50IHBvcyA9IDAs
IGludCBsZW4gPSAtMSkgY29uc3Q7CisgICAgICAgIFVTdHJpbmcgc3Vic3RyKHVuc2lnbmVkIHBv
cyA9IDAsIHVuc2lnbmVkIGxlbiA9IDB4RkZGRkZGRkYpIGNvbnN0OwogCiAgICAgICAgIHN0YXRp
YyBjb25zdCBVU3RyaW5nJiBudWxsKCkgeyByZXR1cm4gKnNfbnVsbFVTdHJpbmc7IH0KIApAQCAt
MTgxLDcgKzE4Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgQUxXQVlTX0lOTElORSBib29s
IG9wZXJhdG9yPT0oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKQogICAgIHsK
LSAgICAgICAgaW50IHNpemUgPSBzMS5zaXplKCk7CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSBz
MS5zaXplKCk7CiAgICAgICAgIHN3aXRjaCAoc2l6ZSkgewogICAgICAgICBjYXNlIDA6CiAgICAg
ICAgICAgICByZXR1cm4gIXMyLnNpemUoKTsKQEAgLTI0NSw5ICsyNDYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAvLyBXZSdkIHJhdGhlciBub3QgZG8gc2hhcmVkIHN1YnN0cmluZyBhcHBlbmQg
Zm9yIHNtYWxsIHN0cmluZ3MsIHNpbmNlCiAgICAgLy8gdGhpcyBydW5zIHRvbyBtdWNoIHJpc2sg
b2YgYSB0aW55IGluaXRpYWwgc3RyaW5nIGhvbGRpbmcgZG93biBhCiAgICAgLy8gaHVnZSBidWZm
ZXIuCi0gICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIHNpemVfdCBidXQgdGhhdCB3b3VsZCBj
YXVzZSB3YXJuaW5ncyB1bnRpbCB3ZQotICAgIC8vIGZpeCBVU3RyaW5nIHNpemVzIHRvIGJlIHNp
emVfdCBpbnN0ZWFkIG9mIGludAotICAgIHN0YXRpYyBjb25zdCBpbnQgbWluU2hhcmVTaXplID0g
SGVhcDo6bWluRXh0cmFDb3N0IC8gc2l6ZW9mKFVDaGFyKTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbWluU2hhcmVTaXplID0gSGVhcDo6bWluRXh0cmFDb3N0IC8gc2l6ZW9mKFVDaGFyKTsK
IAogICAgIHN0cnVjdCBJZGVudGlmaWVyUmVwSGFzaCA6IFB0ckhhc2g8UmVmUHRyPEpTQzo6VVN0
cmluZzo6UmVwPiA+IHsKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUmVmUHRy
PEpTQzo6VVN0cmluZzo6UmVwPiYga2V5KSB7IHJldHVybiBrZXktPmV4aXN0aW5nSGFzaCgpOyB9
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmdJbXBsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmdJbXBsLmNwcAkocmV2aXNpb24gNTQ3
NTcpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmdJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTAsNyArNTAsNyBAQCBQYXNzUmVmUHRyPFVTdHJpbmdJbXBsPiBVU3RyaW5nSW1w
bDo6Y3JlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxVU3RyaW5nSW1wbD4g
VVN0cmluZ0ltcGw6OmNyZWF0ZShjb25zdCBjaGFyKiBjLCBpbnQgbGVuZ3RoKQorUGFzc1JlZlB0
cjxVU3RyaW5nSW1wbD4gVVN0cmluZ0ltcGw6OmNyZWF0ZShjb25zdCBjaGFyKiBjLCB1bnNpZ25l
ZCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKGMpOwogCkBAIC01OSwxMiArNTksMTIgQEAgUGFzc1Jl
ZlB0cjxVU3RyaW5nSW1wbD4gVVN0cmluZ0ltcGw6OmNyZQogCiAgICAgVUNoYXIqIGQ7CiAgICAg
UGFzc1JlZlB0cjxVU3RyaW5nSW1wbD4gcmVzdWx0ID0gVVN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQobGVuZ3RoLCBkKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsr
KQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKICAgICAgICAgZFtp
XSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNbaV0pOyAvLyB1c2UgdW5zaWduZWQgY2hh
ciB0byB6ZXJvLWV4dGVuZCBpbnN0ZWFkIG9mIHNpZ24tZXh0ZW5kCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotUGFzc1JlZlB0cjxVU3RyaW5nSW1wbD4gVVN0cmluZ0ltcGw6OmNyZWF0ZShjb25z
dCBVQ2hhciogYnVmZmVyLCBpbnQgbGVuZ3RoKQorUGFzc1JlZlB0cjxVU3RyaW5nSW1wbD4gVVN0
cmluZ0ltcGw6OmNyZWF0ZShjb25zdCBVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpCiB7
CiAgICAgVUNoYXIqIG5ld0J1ZmZlcjsKICAgICBQYXNzUmVmUHRyPFVTdHJpbmdJbXBsPiBpbXBs
ID0gY3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIG5ld0J1ZmZlcik7CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1VTdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvcnVudGltZS9VU3RyaW5nSW1wbC5oCShyZXZpc2lvbiA1NDc1NykKKysrIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVVN0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTcgKzUzLDE3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVU3RyaW5nSW1wbD4g
Y3JlYXRlKGNvbnN0IGNoYXIqIGMpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmdJbXBs
PiBjcmVhdGUoY29uc3QgY2hhciogYywgaW50IGxlbmd0aCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8VVN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQgbGVuZ3RoKTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxVU3RyaW5nSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIGMs
IHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VVN0cmluZ0ltcGw+IGNy
ZWF0ZShjb25zdCBVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpOwogCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8VVN0cmluZ0ltcGw+IGNyZWF0ZShQYXNzUmVmUHRyPFVTdHJpbmdJbXBsPiBy
ZXAsIGludCBvZmZzZXQsIGludCBsZW5ndGgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VVN0cmlu
Z0ltcGw+IGNyZWF0ZShQYXNzUmVmUHRyPFVTdHJpbmdJbXBsPiByZXAsIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlcCk7CiAgICAgICAg
IHJlcC0+Y2hlY2tDb25zaXN0ZW5jeSgpOwogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVT
dHJpbmdJbXBsKHJlcC0+bV9kYXRhICsgb2Zmc2V0LCBsZW5ndGgsIHJlcC0+YnVmZmVyT3duZXJT
dHJpbmcoKSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmdJbXBsPiBj
cmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRVQ2hhcj4gc2hhcmVkQnVmZmVyLCBVQ2hhciogYnVmZmVy
LCBpbnQgbGVuZ3RoKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVTdHJpbmdJbXBsPiBjcmVhdGUo
UGFzc1JlZlB0cjxTaGFyZWRVQ2hhcj4gc2hhcmVkQnVmZmVyLCBVQ2hhciogYnVmZmVyLCB1bnNp
Z25lZCBsZW5ndGgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVTdHJpbmdJ
bXBsKGJ1ZmZlciwgbGVuZ3RoLCBzaGFyZWRCdWZmZXIpKTsKICAgICB9CkBAIC0xMDAsNyArMTAw
LDcgQEAgcHVibGljOgogCiAgICAgU2hhcmVkVUNoYXIqIHNoYXJlZEJ1ZmZlcigpOwogICAgIFVD
aGFyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9Ci0gICAgaW50IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX2xlbmd0aDsgfQorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVy
biBtX2xlbmd0aDsgfQogICAgIHNpemVfdCBjb3N0KCkKICAgICB7CiAgICAgICAgIC8vIEZvciBz
dWJzdHJpbmdzLCByZXR1cm4gdGhlIGNvc3Qgb2YgdGhlIGJhc2Ugc3RyaW5nLgpAQCAtMTM2LDgg
KzEzNiw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiwgc291cmNl
LCBudW1DaGFyYWN0ZXJzICogc2l6ZW9mKFVDaGFyKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHVu
c2lnbmVkIGNvbXB1dGVIYXNoKGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSB7IEFTU0VSVChs
ZW5ndGggPj0gMCk7IHJldHVybiBXVEY6OnN0cmluZ0hhc2gocywgbGVuZ3RoKTsgfQotICAgIHN0
YXRpYyB1bnNpZ25lZCBjb21wdXRlSGFzaChjb25zdCBjaGFyKiBzLCBpbnQgbGVuZ3RoKSB7IEFT
U0VSVChsZW5ndGggPj0gMCk7IHJldHVybiBXVEY6OnN0cmluZ0hhc2gocywgbGVuZ3RoKTsgfQor
ICAgIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlSGFzaChjb25zdCBVQ2hhciogcywgdW5zaWduZWQg
bGVuZ3RoKSB7IHJldHVybiBXVEY6OnN0cmluZ0hhc2gocywgbGVuZ3RoKTsgfQorICAgIHN0YXRp
YyB1bnNpZ25lZCBjb21wdXRlSGFzaChjb25zdCBjaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgpIHsg
cmV0dXJuIFdURjo6c3RyaW5nSGFzaChzLCBsZW5ndGgpOyB9CiAgICAgc3RhdGljIHVuc2lnbmVk
IGNvbXB1dGVIYXNoKGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIFdURjo6c3RyaW5nSGFzaChzKTsg
fQogCiAgICAgc3RhdGljIFVTdHJpbmdJbXBsJiBlbXB0eSgpIHsgcmV0dXJuICpzX2VtcHR5OyB9
CkBAIC0xNjIsNyArMTYyLDcgQEAgcHJpdmF0ZToKICAgICBVU3RyaW5nSW1wbCgpIHsgfQogCiAg
ICAgLy8gVXNlZCB0byBjb25zdHJ1Y3Qgbm9ybWFsIHN0cmluZ3Mgd2l0aCBhbiBpbnRlcm5hbCBv
ciBleHRlcm5hbCBidWZmZXIuCi0gICAgVVN0cmluZ0ltcGwoVUNoYXIqIGRhdGEsIGludCBsZW5n
dGgsIEJ1ZmZlck93bmVyc2hpcCBvd25lcnNoaXApCisgICAgVVN0cmluZ0ltcGwoVUNoYXIqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCwgQnVmZmVyT3duZXJzaGlwIG93bmVyc2hpcCkKICAgICAgICAg
OiBtX2RhdGEoZGF0YSkKICAgICAgICAgLCBtX2J1ZmZlcigwKQogICAgICAgICAsIG1fbGVuZ3Ro
KGxlbmd0aCkKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwcml2YXRlOgogICAgIC8vIFRoaXMgbWVhbnMg
dGhhdCB0aGUgc3RhdGljIHN0cmluZyB3aWxsIG5ldmVyIGJlIGRlc3Ryb3llZCwgd2hpY2ggaXMg
aW1wb3J0YW50IGJlY2F1c2UKICAgICAvLyBzdGF0aWMgc3RyaW5ncyB3aWxsIGJlIHNoYXJlZCBh
Y3Jvc3MgdGhyZWFkcyAmIHJlZi1jb3VudGVkIGluIGEgbm9uLXRocmVhZHNhZmUgbWFubmVyLgog
ICAgIGVudW0gU3RhdGljU3RyaW5nQ29uc3RydWN0VHlwZSB7IENvbnN0cnVjdFN0YXRpY1N0cmlu
ZyB9OwotICAgIFVTdHJpbmdJbXBsKFVDaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBTdGF0aWNTdHJp
bmdDb25zdHJ1Y3RUeXBlKQorICAgIFVTdHJpbmdJbXBsKFVDaGFyKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIFN0YXRpY1N0cmluZ0NvbnN0cnVjdFR5cGUpCiAgICAgICAgIDogbV9kYXRhKGRhdGEp
CiAgICAgICAgICwgbV9idWZmZXIoMCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCkBAIC0x
ODgsNyArMTg4LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICAvLyBVc2VkIHRvIGNyZWF0ZSBu
ZXcgc3RyaW5ncyB0aGF0IGFyZSBhIHN1YnN0cmluZyBvZiBhbiBleGlzdGluZyBzdHJpbmcuCi0g
ICAgVVN0cmluZ0ltcGwoVUNoYXIqIGRhdGEsIGludCBsZW5ndGgsIFBhc3NSZWZQdHI8VVN0cmlu
Z0ltcGw+IGJhc2UpCisgICAgVVN0cmluZ0ltcGwoVUNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCwgUGFzc1JlZlB0cjxVU3RyaW5nSW1wbD4gYmFzZSkKICAgICAgICAgOiBtX2RhdGEoZGF0YSkK
ICAgICAgICAgLCBtX2J1ZmZlclN1YnN0cmluZyhiYXNlLnJlbGVhc2VSZWYoKSkKICAgICAgICAg
LCBtX2xlbmd0aChsZW5ndGgpCkBAIC0yMDQsNyArMjA0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAK
ICAgICAvLyBVc2VkIHRvIGNvbnN0cnVjdCBuZXcgc3RyaW5ncyBzaGFyaW5nIGFuIGV4aXN0aW5n
IHNoYXJlZCBidWZmZXIuCi0gICAgVVN0cmluZ0ltcGwoVUNoYXIqIGRhdGEsIGludCBsZW5ndGgs
IFBhc3NSZWZQdHI8U2hhcmVkVUNoYXI+IHNoYXJlZEJ1ZmZlcikKKyAgICBVU3RyaW5nSW1wbChV
Q2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBQYXNzUmVmUHRyPFNoYXJlZFVDaGFyPiBzaGFy
ZWRCdWZmZXIpCiAgICAgICAgIDogbV9kYXRhKGRhdGEpCiAgICAgICAgICwgbV9idWZmZXJTaGFy
ZWQoc2hhcmVkQnVmZmVyLnJlbGVhc2VSZWYoKSkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgp
CkBAIC0yMjAsMTMgKzIyMCwxMyBAQCBwcml2YXRlOgogICAgIH5VU3RyaW5nSW1wbCgpOwogCiAg
ICAgLy8gVGhpcyBudW1iZXIgbXVzdCBiZSBhdCBsZWFzdCAyIHRvIGF2b2lkIHNoYXJpbmcgZW1w
dHksIG51bGwgYXMgd2VsbCBhcyAxIGNoYXJhY3RlciBzdHJpbmdzIGZyb20gU21hbGxTdHJpbmdz
LgotICAgIHN0YXRpYyBjb25zdCBpbnQgc19taW5MZW5ndGhUb1NoYXJlID0gMTA7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHNfbWluTGVuZ3RoVG9TaGFyZSA9IDEwOwogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBzX2NvcHlDaGFyc0lubGluZUN1dE9mZiA9IDIwOwogICAgIC8vIFdlIGlu
aXRpYWxpemUgYW5kIGluY3JlbWVudC9kZWNyZW1lbnQgdGhlIHJlZkNvdW50IGZvciBhbGwgbm9y
bWFsIChub24tc3RhdGljKSBzdHJpbmdzIGJ5IHRoZSB2YWx1ZSAyLgogICAgIC8vIFdlIGluaXRp
YWxpemUgc3RhdGljIHN0cmluZ3Mgd2l0aCBhbiBvZGQgbnVtYmVyIChzcGVjaWZpY2FsbHksIDEp
LCBzdWNoIHRoYXQgdGhlIHJlZkNvdW50IGNhbm5vdCByZWFjaCB6ZXJvLgogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBzX3JlZkNvdW50TWFzayA9IDB4RkZGRkZGRjA7Ci0gICAgc3RhdGljIGNv
bnN0IGludCBzX3JlZkNvdW50SW5jcmVtZW50ID0gMHgyMDsKLSAgICBzdGF0aWMgY29uc3QgaW50
IHNfcmVmQ291bnRGbGFnU3RhdGljID0gMHgxMDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
c19yZWZDb3VudEluY3JlbWVudCA9IDB4MjA7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNf
cmVmQ291bnRGbGFnU3RhdGljID0gMHgxMDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19y
ZWZDb3VudEZsYWdIYXNSZXBvcnRlZENvc3QgPSAweDg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHNfcmVmQ291bnRGbGFnSXNJZGVudGlmaWVyID0gMHg0OwogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBzX3JlZkNvdW50TWFza0J1ZmZlck93bmVyc2hpcCA9IDB4MzsKQEAgLTI0NCw3ICsy
NDQsNyBAQCBwcml2YXRlOgogICAgICAgICBVU3RyaW5nSW1wbCogbV9idWZmZXJTdWJzdHJpbmc7
CiAgICAgICAgIFNoYXJlZFVDaGFyKiBtX2J1ZmZlclNoYXJlZDsKICAgICB9OwotICAgIGludCBt
X2xlbmd0aDsKKyAgICB1bnNpZ25lZCBtX2xlbmd0aDsKICAgICB1bnNpZ25lZCBtX3JlZkNvdW50
QW5kRmxhZ3M7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2hhc2g7CiAKSW5kZXg6IFdlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NDc4
MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMDItMTUgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAzNDk1
MiAtIFN0cmluZyBsZW5ndGhzIGluIFVTdHJpbmcgc2hvdWxkIGJlIHVuc2lnbmVkLgorICAgICAg
ICBUaGlzIG1hdGNoZXMgV2ViQ29yZTo6U3RyaW5nSW1wbCwgYW5kIGJldHRlciB1bmlmaWVzIGJl
aGF2aW91ciB0aHJvdWdob3V0IEpTQy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjphdG9iKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpidG9hKToKKwogMjAxMC0wMi0xNSAgUGF2ZWwg
RmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBU
aW1vdGh5IEhhdGNoZXIuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAkocmV2aXNpb24gNTQ3NTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTU0LDcgKzk1NCw3IEBAIEpTVmFsdWUg
SlNET01XaW5kb3c6OmF0b2IoRXhlY1N0YXRlKiBleGUKICAgICB9CiAKICAgICBWZWN0b3I8Y2hh
cj4gaW4ocy5zaXplKCkpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5zaXplKCk7ICsraSkK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcy5zaXplKCk7ICsraSkKICAgICAgICAgaW5b
aV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzLmRhdGEoKVtpXSk7CiAgICAgVmVjdG9yPGNoYXI+IG91
dDsKIApAQCAtOTgwLDcgKzk4MCw3IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OmJ0b2EoRXhlY1N0
YXRlKiBleGUKICAgICB9CiAKICAgICBWZWN0b3I8Y2hhcj4gaW4ocy5zaXplKCkpOwotICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgcy5zaXplKCk7ICsraSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcy5zaXplKCk7ICsraSkKICAgICAgICAgaW5baV0gPSBzdGF0aWNfY2FzdDxjaGFyPihz
LmRhdGEoKVtpXSk7CiAgICAgVmVjdG9yPGNoYXI+IG91dDsKIAo=
</data>
<flag name="review"
          id="31491"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>