<?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>63571</bug_id>
          
          <creation_ts>2011-06-28 15:21:17 -0700</creation_ts>
          <short_desc>Switch RenderBox position/size to to new layout types</short_desc>
          <delta_ts>2011-06-28 16:56:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>63567</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>eric</cc>
    
    <cc>leviw</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>429180</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-28 15:21:17 -0700</bug_when>
    <thetext>Starting the transition to the new abstraction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429218</commentid>
    <comment_count>1</comment_count>
      <attachid>98990</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-28 16:05:48 -0700</bug_when>
    <thetext>Created attachment 98990
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429225</commentid>
    <comment_count>2</comment_count>
      <attachid>98990</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-28 16:12:23 -0700</bug_when>
    <thetext>Comment on attachment 98990
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429273</commentid>
    <comment_count>3</comment_count>
      <attachid>98990</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-28 16:56:14 -0700</bug_when>
    <thetext>Comment on attachment 98990
Patch

Clearing flags on attachment: 98990

Committed r89977: &lt;http://trac.webkit.org/changeset/89977&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429274</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-28 16:56:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98990</attachid>
            <date>2011-06-28 16:05:48 -0700</date>
            <delta_ts>2011-06-28 16:56:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63571-20110628160547.patch</filename>
            <type>text/plain</type>
            <size>22500</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5OTcwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDYtMjggIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFN3aXRjaCBSZW5kZXJCb3ggcG9zaXRpb24vc2l6ZSB0byB0byBu
ZXcgbGF5b3V0IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02MzU3MQorCisgICAgICAgIFN3aXRjaCBsb2NhdGlvbiBhbmQgc2l6ZSBtZXRob2Rz
IGZvciBSZW5kZXJCb3ggb3ZlciB0byB0aGUgbmV3IGxheW91dCB1bml0IGFic3RyYWN0aW9uLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2VzLgorCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHA6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclZpZGVvLmg6CisKIDIwMTEtMDYtMjggIExldmkgV2VpbnRyYXViICA8bGV2
aXdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDg5OTcwKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwMywxMiArNDAzLDEyIEBAIHZvaWQgUmVuZGVyQm94OjpsYXlvdXQoKQogCiAvLyBNb3Jl
IElFIGV4dGVuc2lvbnMuICBjbGllbnRXaWR0aCBhbmQgY2xpZW50SGVpZ2h0IHJlcHJlc2VudCB0
aGUgaW50ZXJpb3Igb2YgYW4gb2JqZWN0CiAvLyBleGNsdWRpbmcgYm9yZGVyIGFuZCBzY3JvbGxi
YXIuCi1pbnQgUmVuZGVyQm94OjpjbGllbnRXaWR0aCgpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRl
ckJveDo6Y2xpZW50V2lkdGgoKSBjb25zdAogewogICAgIHJldHVybiB3aWR0aCgpIC0gYm9yZGVy
TGVmdCgpIC0gYm9yZGVyUmlnaHQoKSAtIHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKTsKIH0KIAot
aW50IFJlbmRlckJveDo6Y2xpZW50SGVpZ2h0KCkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQm94
OjpjbGllbnRIZWlnaHQoKSBjb25zdAogewogICAgIHJldHVybiBoZWlnaHQoKSAtIGJvcmRlclRv
cCgpIC0gYm9yZGVyQm90dG9tKCkgLSBob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0KCk7CiB9CkBA
IC03MTQsMzAgKzcxNCwzMCBAQCBpbnQgUmVuZGVyQm94OjpvdmVycmlkZUhlaWdodCgpIGNvbnN0
CiAgICAgcmV0dXJuIGhhc092ZXJyaWRlU2l6ZSgpID8gb3ZlcnJpZGVTaXplKCkgOiBoZWlnaHQo
KTsKIH0KIAotaW50IFJlbmRlckJveDo6Y29tcHV0ZUJvcmRlckJveExvZ2ljYWxXaWR0aChpbnQg
d2lkdGgpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZUJvcmRlckJveExvZ2lj
YWxXaWR0aChMYXlvdXRVbml0IHdpZHRoKSBjb25zdAogewotICAgIGludCBib3JkZXJzUGx1c1Bh
ZGRpbmcgPSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7CisgICAgTGF5b3V0VW5pdCBi
b3JkZXJzUGx1c1BhZGRpbmcgPSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7CiAgICAg
aWYgKHN0eWxlKCktPmJveFNpemluZygpID09IENPTlRFTlRfQk9YKQogICAgICAgICByZXR1cm4g
d2lkdGggKyBib3JkZXJzUGx1c1BhZGRpbmc7CiAgICAgcmV0dXJuIG1heCh3aWR0aCwgYm9yZGVy
c1BsdXNQYWRkaW5nKTsKIH0KIAotaW50IFJlbmRlckJveDo6Y29tcHV0ZUJvcmRlckJveExvZ2lj
YWxIZWlnaHQoaW50IGhlaWdodCkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRl
Qm9yZGVyQm94TG9naWNhbEhlaWdodChMYXlvdXRVbml0IGhlaWdodCkgY29uc3QKIHsKLSAgICBp
bnQgYm9yZGVyc1BsdXNQYWRkaW5nID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKTsK
KyAgICBMYXlvdXRVbml0IGJvcmRlcnNQbHVzUGFkZGluZyA9IGJvcmRlckFuZFBhZGRpbmdMb2dp
Y2FsSGVpZ2h0KCk7CiAgICAgaWYgKHN0eWxlKCktPmJveFNpemluZygpID09IENPTlRFTlRfQk9Y
KQogICAgICAgICByZXR1cm4gaGVpZ2h0ICsgYm9yZGVyc1BsdXNQYWRkaW5nOwogICAgIHJldHVy
biBtYXgoaGVpZ2h0LCBib3JkZXJzUGx1c1BhZGRpbmcpOwogfQogCi1pbnQgUmVuZGVyQm94Ojpj
b21wdXRlQ29udGVudEJveExvZ2ljYWxXaWR0aChpbnQgd2lkdGgpIGNvbnN0CitMYXlvdXRVbml0
IFJlbmRlckJveDo6Y29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoTGF5b3V0VW5pdCB3aWR0
aCkgY29uc3QKIHsKICAgICBpZiAoc3R5bGUoKS0+Ym94U2l6aW5nKCkgPT0gQk9SREVSX0JPWCkK
ICAgICAgICAgd2lkdGggLT0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpOwogICAgIHJl
dHVybiBtYXgoMCwgd2lkdGgpOwogfQogCi1pbnQgUmVuZGVyQm94Ojpjb21wdXRlQ29udGVudEJv
eExvZ2ljYWxIZWlnaHQoaW50IGhlaWdodCkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQm94Ojpj
b21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBoZWlnaHQpIGNvbnN0CiB7
CiAgICAgaWYgKHN0eWxlKCktPmJveFNpemluZygpID09IEJPUkRFUl9CT1gpCiAgICAgICAgIGhl
aWdodCAtPSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guaAkocmV2aXNpb24gODk5NzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDU5ICs0NCw1OSBA
QCBwdWJsaWM6CiAgICAgUmVuZGVyQm94KiBmaXJzdENoaWxkQm94KCkgY29uc3Q7CiAgICAgUmVu
ZGVyQm94KiBsYXN0Q2hpbGRCb3goKSBjb25zdDsKIAotICAgIGludCB4KCkgY29uc3QgeyByZXR1
cm4gbV9mcmFtZVJlY3QueCgpOyB9Ci0gICAgaW50IHkoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1l
UmVjdC55KCk7IH0KLSAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmVjdC53
aWR0aCgpOyB9Ci0gICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZWN0Lmhl
aWdodCgpOyB9Ci0KLSAgICB2b2lkIHNldFgoaW50IHgpIHsgbV9mcmFtZVJlY3Quc2V0WCh4KTsg
fQotICAgIHZvaWQgc2V0WShpbnQgeSkgeyBtX2ZyYW1lUmVjdC5zZXRZKHkpOyB9Ci0gICAgdm9p
ZCBzZXRXaWR0aChpbnQgd2lkdGgpIHsgbV9mcmFtZVJlY3Quc2V0V2lkdGgod2lkdGgpOyB9Ci0g
ICAgdm9pZCBzZXRIZWlnaHQoaW50IGhlaWdodCkgeyBtX2ZyYW1lUmVjdC5zZXRIZWlnaHQoaGVp
Z2h0KTsgfQotCi0gICAgaW50IGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHgoKSA6IHkoKTsgfQotICAgIGludCBsb2dpY2Fs
UmlnaHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsTGVmdCgpICsgbG9naWNhbFdpZHRoKCk7IH0K
LSAgICBpbnQgbG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPyB5KCkgOiB4KCk7IH0KLSAgICBpbnQgbG9naWNhbEJvdHRvbSgpIGNv
bnN0IHsgcmV0dXJuIGxvZ2ljYWxUb3AoKSArIGxvZ2ljYWxIZWlnaHQoKTsgfQotICAgIGludCBs
b2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5n
TW9kZSgpID8gd2lkdGgoKSA6IGhlaWdodCgpOyB9Ci0gICAgaW50IGxvZ2ljYWxIZWlnaHQoKSBj
b25zdCB7IHJldHVybiBzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gaGVpZ2h0
KCkgOiB3aWR0aCgpOyB9CisgICAgTGF5b3V0VW5pdCB4KCkgY29uc3QgeyByZXR1cm4gbV9mcmFt
ZVJlY3QueCgpOyB9CisgICAgTGF5b3V0VW5pdCB5KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJl
Y3QueSgpOyB9CisgICAgTGF5b3V0VW5pdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVS
ZWN0LndpZHRoKCk7IH0KKyAgICBMYXlvdXRVbml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZnJhbWVSZWN0LmhlaWdodCgpOyB9CisKKyAgICB2b2lkIHNldFgoTGF5b3V0VW5pdCB4KSB7IG1f
ZnJhbWVSZWN0LnNldFgoeCk7IH0KKyAgICB2b2lkIHNldFkoTGF5b3V0VW5pdCB5KSB7IG1fZnJh
bWVSZWN0LnNldFkoeSk7IH0KKyAgICB2b2lkIHNldFdpZHRoKExheW91dFVuaXQgd2lkdGgpIHsg
bV9mcmFtZVJlY3Quc2V0V2lkdGgod2lkdGgpOyB9CisgICAgdm9pZCBzZXRIZWlnaHQoTGF5b3V0
VW5pdCBoZWlnaHQpIHsgbV9mcmFtZVJlY3Quc2V0SGVpZ2h0KGhlaWdodCk7IH0KKworICAgIExh
eW91dFVuaXQgbG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpID8geCgpIDogeSgpOyB9CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmln
aHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsTGVmdCgpICsgbG9naWNhbFdpZHRoKCk7IH0KKyAg
ICBMYXlvdXRVbml0IGxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5pc0hvcml6
b250YWxXcml0aW5nTW9kZSgpID8geSgpIDogeCgpOyB9CisgICAgTGF5b3V0VW5pdCBsb2dpY2Fs
Qm90dG9tKCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFRvcCgpICsgbG9naWNhbEhlaWdodCgpOyB9
CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5p
c0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gd2lkdGgoKSA6IGhlaWdodCgpOyB9CisgICAgTGF5
b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+aXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IGhlaWdodCgpIDogd2lkdGgoKTsgfQogCi0gICAgdm9pZCBzZXRM
b2dpY2FsTGVmdChpbnQgbGVmdCkKKyAgICB2b2lkIHNldExvZ2ljYWxMZWZ0KExheW91dFVuaXQg
bGVmdCkKICAgICB7CiAgICAgICAgIGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpKQogICAgICAgICAgICAgc2V0WChsZWZ0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
c2V0WShsZWZ0KTsKICAgICB9Ci0gICAgdm9pZCBzZXRMb2dpY2FsVG9wKGludCB0b3ApCisgICAg
dm9pZCBzZXRMb2dpY2FsVG9wKExheW91dFVuaXQgdG9wKQogICAgIHsKICAgICAgICAgaWYgKHN0
eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgICAgICBzZXRZKHRvcCk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNldFgodG9wKTsKICAgICB9Ci0gICAgdm9pZCBz
ZXRMb2dpY2FsTG9jYXRpb24oY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQorICAgIHZvaWQgc2V0
TG9naWNhbExvY2F0aW9uKGNvbnN0IExheW91dFBvaW50JiBsb2NhdGlvbikKICAgICB7CiAgICAg
ICAgIGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAgICAgICAgICAg
c2V0TG9jYXRpb24obG9jYXRpb24pOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzZXRMb2Nh
dGlvbihsb2NhdGlvbi50cmFuc3Bvc2VkUG9pbnQoKSk7CiAgICAgfQotICAgIHZvaWQgc2V0TG9n
aWNhbFdpZHRoKGludCBzaXplKQorICAgIHZvaWQgc2V0TG9naWNhbFdpZHRoKExheW91dFVuaXQg
c2l6ZSkKICAgICB7CiAgICAgICAgIGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpKQogICAgICAgICAgICAgc2V0V2lkdGgoc2l6ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHNldEhlaWdodChzaXplKTsKICAgICB9Ci0gICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0KGlu
dCBzaXplKQorICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodChMYXlvdXRVbml0IHNpemUpCiAgICAg
ewogICAgICAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAg
ICAgICAgIHNldEhlaWdodChzaXplKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc2V0V2lk
dGgoc2l6ZSk7CiAgICAgfQotICAgIHZvaWQgc2V0TG9naWNhbFNpemUoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKKyAgICB2b2lkIHNldExvZ2ljYWxTaXplKGNvbnN0IExheW91dFNpemUmIHNpemUpCiAg
ICAgewogICAgICAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAg
ICAgICAgICAgIHNldFNpemUoc2l6ZSk7CkBAIC0xMDQsMjUgKzEwNCwyNSBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBzZXRTaXplKHNpemUudHJhbnNwb3NlZFNpemUoKSk7CiAgICAgfQogCi0gICAg
SW50UG9pbnQgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmVjdC5sb2NhdGlvbigp
OyB9Ci0gICAgSW50U2l6ZSBsb2NhdGlvbk9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUo
eCgpLCB5KCkpOyB9Ci0gICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJl
Y3Quc2l6ZSgpOyB9CisgICAgTGF5b3V0UG9pbnQgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2ZyYW1lUmVjdC5sb2NhdGlvbigpOyB9CisgICAgTGF5b3V0U2l6ZSBsb2NhdGlvbk9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIExheW91dFNpemUoeCgpLCB5KCkpOyB9CisgICAgTGF5b3V0U2l6ZSBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJlY3Quc2l6ZSgpOyB9CiAKLSAgICB2b2lkIHNl
dExvY2F0aW9uKGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikgeyBtX2ZyYW1lUmVjdC5zZXRMb2Nh
dGlvbihsb2NhdGlvbik7IH0KKyAgICB2b2lkIHNldExvY2F0aW9uKGNvbnN0IExheW91dFBvaW50
JiBsb2NhdGlvbikgeyBtX2ZyYW1lUmVjdC5zZXRMb2NhdGlvbihsb2NhdGlvbik7IH0KICAgICAK
LSAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX2ZyYW1lUmVjdC5zZXRT
aXplKHNpemUpOyB9Ci0gICAgdm9pZCBtb3ZlKGludCBkeCwgaW50IGR5KSB7IG1fZnJhbWVSZWN0
Lm1vdmUoZHgsIGR5KTsgfQorICAgIHZvaWQgc2V0U2l6ZShjb25zdCBMYXlvdXRTaXplJiBzaXpl
KSB7IG1fZnJhbWVSZWN0LnNldFNpemUoc2l6ZSk7IH0KKyAgICB2b2lkIG1vdmUoTGF5b3V0VW5p
dCBkeCwgTGF5b3V0VW5pdCBkeSkgeyBtX2ZyYW1lUmVjdC5tb3ZlKGR4LCBkeSk7IH0KIAotICAg
IEludFJlY3QgZnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJlY3Q7IH0KLSAgICB2
b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSB7IG1fZnJhbWVSZWN0ID0gcmVj
dDsgfQorICAgIExheW91dFJlY3QgZnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJl
Y3Q7IH0KKyAgICB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0KSB7IG1f
ZnJhbWVSZWN0ID0gcmVjdDsgfQogCi0gICAgSW50UmVjdCBib3JkZXJCb3hSZWN0KCkgY29uc3Qg
eyByZXR1cm4gSW50UmVjdCgwLCAwLCB3aWR0aCgpLCBoZWlnaHQoKSk7IH0KLSAgICB2aXJ0dWFs
IEludFJlY3QgYm9yZGVyQm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBib3JkZXJCb3hSZWN0
KCk7IH0gCisgICAgTGF5b3V0UmVjdCBib3JkZXJCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gTGF5
b3V0UmVjdCgwLCAwLCB3aWR0aCgpLCBoZWlnaHQoKSk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJl
Y3QgYm9yZGVyQm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBib3JkZXJCb3hSZWN0KCk7IH0g
CiAKICAgICAvLyBUaGUgY29udGVudCBhcmVhIG9mIHRoZSBib3ggKGV4Y2x1ZGVzIHBhZGRpbmcg
YW5kIGJvcmRlcikuCi0gICAgSW50UmVjdCBjb250ZW50Qm94UmVjdCgpIGNvbnN0IHsgcmV0dXJu
IEludFJlY3QoYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRk
aW5nVG9wKCksIGNvbnRlbnRXaWR0aCgpLCBjb250ZW50SGVpZ2h0KCkpOyB9CisgICAgTGF5b3V0
UmVjdCBjb250ZW50Qm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoYm9yZGVyTGVm
dCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCksIGNvbnRlbnRX
aWR0aCgpLCBjb250ZW50SGVpZ2h0KCkpOyB9CiAgICAgLy8gVGhlIGNvbnRlbnQgYm94IGluIGFi
c29sdXRlIGNvb3Jkcy4gSWdub3JlcyB0cmFuc2Zvcm1zLgotICAgIEludFJlY3QgYWJzb2x1dGVD
b250ZW50Qm94KCkgY29uc3Q7CisgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUNvbnRlbnRCb3goKSBj
b25zdDsKICAgICAvLyBUaGUgY29udGVudCBib3ggY29udmVydGVkIHRvIGFic29sdXRlIGNvb3Jk
cyAodGFraW5nIHRyYW5zZm9ybXMgaW50byBhY2NvdW50KS4KICAgICBGbG9hdFF1YWQgYWJzb2x1
dGVDb250ZW50UXVhZCgpIGNvbnN0OwogCkBAIC0xNjksMjYgKzE2OSwyNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBibG9ja0RpcmVjdGlvbk92ZXJmbG93KGJvb2wgaXNMaW5lSG9yaXpvbnRhbCwgaW50
JiBsb2dpY2FsVG9wTGF5b3V0T3ZlcmZsb3csIGludCYgbG9naWNhbEJvdHRvbUxheW91dE92ZXJm
bG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIGxvZ2ljYWxUb3BWaXN1
YWxPdmVyZmxvdywgaW50JiBsb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3cpOwogCi0gICAgaW50
IGNvbnRlbnRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGNsaWVudFdpZHRoKCkgLSBwYWRkaW5nTGVm
dCgpIC0gcGFkZGluZ1JpZ2h0KCk7IH0KLSAgICBpbnQgY29udGVudEhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIGNsaWVudEhlaWdodCgpIC0gcGFkZGluZ1RvcCgpIC0gcGFkZGluZ0JvdHRvbSgpOyB9
Ci0gICAgaW50IGNvbnRlbnRMb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5p
c0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY29udGVudFdpZHRoKCkgOiBjb250ZW50SGVpZ2h0
KCk7IH0KLSAgICBpbnQgY29udGVudExvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBzdHls
ZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY29udGVudEhlaWdodCgpIDogY29udGVu
dFdpZHRoKCk7IH0KKyAgICBMYXlvdXRVbml0IGNvbnRlbnRXaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IGNsaWVudFdpZHRoKCkgLSBwYWRkaW5nTGVmdCgpIC0gcGFkZGluZ1JpZ2h0KCk7IH0KKyAgICBM
YXlvdXRVbml0IGNvbnRlbnRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBjbGllbnRIZWlnaHQoKSAt
IHBhZGRpbmdUb3AoKSAtIHBhZGRpbmdCb3R0b20oKTsgfQorICAgIExheW91dFVuaXQgY29udGVu
dExvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyBjb250ZW50V2lkdGgoKSA6IGNvbnRlbnRIZWlnaHQoKTsgfQorICAgIExheW91
dFVuaXQgY29udGVudExvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5pc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gY29udGVudEhlaWdodCgpIDogY29udGVudFdpZHRoKCk7
IH0KIAogICAgIC8vIElFIGV4dGVuc2lvbnMuIFVzZWQgdG8gY2FsY3VsYXRlIG9mZnNldFdpZHRo
L0hlaWdodC4gIE92ZXJyaWRkZW4gYnkgaW5saW5lcyAoUmVuZGVyRmxvdykKICAgICAvLyB0byBy
ZXR1cm4gdGhlIHJlbWFpbmluZyB3aWR0aCBvbiBhIGdpdmVuIGxpbmUgKGFuZCB0aGUgaGVpZ2h0
IG9mIGEgc2luZ2xlIGxpbmUpLgotICAgIHZpcnR1YWwgaW50IG9mZnNldFdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gd2lkdGgoKTsgfQotICAgIHZpcnR1YWwgaW50IG9mZnNldEhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIGhlaWdodCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldFdpZHRo
KCkgY29uc3QgeyByZXR1cm4gd2lkdGgoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZz
ZXRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBoZWlnaHQoKTsgfQogCiAgICAgLy8gTW9yZSBJRSBl
eHRlbnNpb25zLiAgY2xpZW50V2lkdGggYW5kIGNsaWVudEhlaWdodCByZXByZXNlbnQgdGhlIGlu
dGVyaW9yIG9mIGFuIG9iamVjdAogICAgIC8vIGV4Y2x1ZGluZyBib3JkZXIgYW5kIHNjcm9sbGJh
ci4gIGNsaWVudExlZnQvVG9wIGFyZSBqdXN0IHRoZSBib3JkZXJMZWZ0V2lkdGggYW5kIGJvcmRl
clRvcFdpZHRoLgotICAgIGludCBjbGllbnRMZWZ0KCkgY29uc3QgeyByZXR1cm4gYm9yZGVyTGVm
dCgpOyB9Ci0gICAgaW50IGNsaWVudFRvcCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlclRvcCgpOyB9
Ci0gICAgaW50IGNsaWVudFdpZHRoKCkgY29uc3Q7Ci0gICAgaW50IGNsaWVudEhlaWdodCgpIGNv
bnN0OwotICAgIGludCBjbGllbnRMb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBzdHlsZSgp
LT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2xpZW50V2lkdGgoKSA6IGNsaWVudEhlaWdo
dCgpOyB9Ci0gICAgaW50IGNsaWVudExvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBzdHls
ZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2xpZW50SGVpZ2h0KCkgOiBjbGllbnRX
aWR0aCgpOyB9Ci0gICAgaW50IGNsaWVudExvZ2ljYWxCb3R0b20oKSBjb25zdCB7IHJldHVybiBi
b3JkZXJCZWZvcmUoKSArIGNsaWVudExvZ2ljYWxIZWlnaHQoKTsgfQotICAgIEludFJlY3QgY2xp
ZW50Qm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoY2xpZW50TGVmdCgpLCBjbGllbnRU
b3AoKSwgY2xpZW50V2lkdGgoKSwgY2xpZW50SGVpZ2h0KCkpOyB9CisgICAgTGF5b3V0VW5pdCBj
bGllbnRMZWZ0KCkgY29uc3QgeyByZXR1cm4gYm9yZGVyTGVmdCgpOyB9CisgICAgTGF5b3V0VW5p
dCBjbGllbnRUb3AoKSBjb25zdCB7IHJldHVybiBib3JkZXJUb3AoKTsgfQorICAgIExheW91dFVu
aXQgY2xpZW50V2lkdGgoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGNsaWVudEhlaWdodCgpIGNv
bnN0OworICAgIExheW91dFVuaXQgY2xpZW50TG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4g
c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNsaWVudFdpZHRoKCkgOiBjbGll
bnRIZWlnaHQoKTsgfQorICAgIExheW91dFVuaXQgY2xpZW50TG9naWNhbEhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjbGllbnRIZWln
aHQoKSA6IGNsaWVudFdpZHRoKCk7IH0KKyAgICBMYXlvdXRVbml0IGNsaWVudExvZ2ljYWxCb3R0
b20oKSBjb25zdCB7IHJldHVybiBib3JkZXJCZWZvcmUoKSArIGNsaWVudExvZ2ljYWxIZWlnaHQo
KTsgfQorICAgIExheW91dFJlY3QgY2xpZW50Qm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIExheW91
dFJlY3QoY2xpZW50TGVmdCgpLCBjbGllbnRUb3AoKSwgY2xpZW50V2lkdGgoKSwgY2xpZW50SGVp
Z2h0KCkpOyB9CiAKICAgICAvLyBzY3JvbGxXaWR0aC9zY3JvbGxIZWlnaHQgd2lsbCBiZSB0aGUg
c2FtZSBhcyBjbGllbnRXaWR0aC9jbGllbnRIZWlnaHQgdW5sZXNzIHRoZQogICAgIC8vIG9iamVj
dCBoYXMgb3ZlcmZsb3c6aGlkZGVuL3Njcm9sbC9hdXRvIHNwZWNpZmllZCBhbmQgYWxzbyBoYXMg
b3ZlcmZsb3cuCkBAIC0yNTQsMTAgKzI1NCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIElu
dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRQb2ludCYp
IGNvbnN0OwogICAgIAotICAgIGludCBjb21wdXRlQm9yZGVyQm94TG9naWNhbFdpZHRoKGludCB3
aWR0aCkgY29uc3Q7Ci0gICAgaW50IGNvbXB1dGVCb3JkZXJCb3hMb2dpY2FsSGVpZ2h0KGludCBo
ZWlnaHQpIGNvbnN0OwotICAgIGludCBjb21wdXRlQ29udGVudEJveExvZ2ljYWxXaWR0aChpbnQg
d2lkdGgpIGNvbnN0OwotICAgIGludCBjb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQoaW50
IGhlaWdodCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBjb21wdXRlQm9yZGVyQm94TG9naWNhbFdp
ZHRoKExheW91dFVuaXQgd2lkdGgpIGNvbnN0OworICAgIExheW91dFVuaXQgY29tcHV0ZUJvcmRl
ckJveExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBoZWlnaHQpIGNvbnN0OworICAgIExheW91dFVu
aXQgY29tcHV0ZUNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoTGF5b3V0VW5pdCB3aWR0aCkgY29uc3Q7
CisgICAgTGF5b3V0VW5pdCBjb21wdXRlQ29udGVudEJveExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5p
dCBoZWlnaHQpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGJvcmRlckZpdEFkanVzdChJbnRS
ZWN0JikgY29uc3QgeyB9IC8vIFNocmluayB0aGUgYm94IGluIHdoaWNoIHRoZSBib3JkZXIgcGFp
bnRzIGlmIGJvcmRlci1maXQgaXMgc2V0LgogCkBAIC00NjcsNyArNDY3LDcgQEAgcHJpdmF0ZToK
IAogcHJpdmF0ZToKICAgICAvLyBUaGUgd2lkdGgvaGVpZ2h0IG9mIHRoZSBjb250ZW50cyArIGJv
cmRlcnMgKyBwYWRkaW5nLiAgVGhlIHgveSBsb2NhdGlvbiBpcyByZWxhdGl2ZSB0byBvdXIgY29u
dGFpbmVyICh3aGljaCBpcyBub3QgYWx3YXlzIG91ciBwYXJlbnQpLgotICAgIEludFJlY3QgbV9m
cmFtZVJlY3Q7CisgICAgTGF5b3V0UmVjdCBtX2ZyYW1lUmVjdDsKIAogcHJvdGVjdGVkOgogICAg
IGludCBtX21hcmdpbkxlZnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDg5OTcwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnVwZGF0ZUJveE1v
ZGUKICAgICBzZXRIb3Jpem9udGFsV3JpdGluZ01vZGUoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSk7CiB9CiAKLWludCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVsYXRpdmVQb3Np
dGlvbk9mZnNldFgoKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVs
YXRpdmVQb3NpdGlvbk9mZnNldFgoKSBjb25zdAogewogICAgIC8vIE9iamVjdHMgdGhhdCBzaHJp
bmsgdG8gYXZvaWQgZmxvYXRzIG5vcm1hbGx5IHVzZSBhdmFpbGFibGUgbGluZSB3aWR0aCB3aGVu
IGNvbXB1dGluZyBjb250YWluaW5nIGJsb2NrIHdpZHRoLiAgSG93ZXZlcgogICAgIC8vIGluIHRo
ZSBjYXNlIG9mIHJlbGF0aXZlIHBvc2l0aW9uaW5nIHVzaW5nIHBlcmNlbnRhZ2VzLCB3ZSBjYW4n
dCBkbyB0aGlzLiAgVGhlIG9mZnNldCBzaG91bGQgYWx3YXlzIGJlIHJlc29sdmVkIHVzaW5nIHRo
ZQpAQCAtMzk5LDcgKzM5OSw3IEBAIGludCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVsYXRpdmVQ
b3NpdGkKICAgICByZXR1cm4gMDsKIH0KIAotaW50IFJlbmRlckJveE1vZGVsT2JqZWN0OjpyZWxh
dGl2ZVBvc2l0aW9uT2Zmc2V0WSgpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpyZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0WSgpIGNvbnN0CiB7CiAgICAgUmVuZGVyQmxvY2sq
IGNvbnRhaW5pbmdCbG9jayA9IHRoaXMtPmNvbnRhaW5pbmdCbG9jaygpOwogCkBAIC00MjQsNyAr
NDI0LDcgQEAgaW50IFJlbmRlckJveE1vZGVsT2JqZWN0OjpyZWxhdGl2ZVBvc2l0aQogICAgIHJl
dHVybiAwOwogfQogCi1pbnQgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om9mZnNldExlZnQoKSBjb25z
dAorTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6b2Zmc2V0TGVmdCgpIGNvbnN0CiB7
CiAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgdGhlIEhUTUwgYm9keSBlbGVtZW50IG9yIGRvZXMg
bm90IGhhdmUgYW4gYXNzb2NpYXRlZCBib3gKICAgICAvLyByZXR1cm4gMCBhbmQgc3RvcCB0aGlz
IGFsZ29yaXRobS4KQEAgLTQzMiw3ICs0MzIsNyBAQCBpbnQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
Om9mZnNldExlZnQoKSBjCiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIFJlbmRlckJveE1v
ZGVsT2JqZWN0KiBvZmZzZXRQYXIgPSBvZmZzZXRQYXJlbnQoKTsKLSAgICBpbnQgeFBvcyA9IChp
c0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPngoKSA6IDApOworICAgIExheW91dFVuaXQgeFBv
cyA9IChpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPngoKSA6IDApOwogICAgIAogICAgIC8v
IElmIHRoZSBvZmZzZXRQYXJlbnQgb2YgdGhlIGVsZW1lbnQgaXMgbnVsbCwgb3IgaXMgdGhlIEhU
TUwgYm9keSBlbGVtZW50LAogICAgIC8vIHJldHVybiB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUg
Y2FudmFzIG9yaWdpbiBhbmQgdGhlIGxlZnQgYm9yZGVyIGVkZ2UgCkBAIC00NTgsNyArNDU4LDcg
QEAgaW50IFJlbmRlckJveE1vZGVsT2JqZWN0OjpvZmZzZXRMZWZ0KCkgYwogICAgIHJldHVybiB4
UG9zOwogfQogCi1pbnQgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om9mZnNldFRvcCgpIGNvbnN0CitM
YXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpvZmZzZXRUb3AoKSBjb25zdAogewogICAg
IC8vIElmIHRoZSBlbGVtZW50IGlzIHRoZSBIVE1MIGJvZHkgZWxlbWVudCBvciBkb2VzIG5vdCBo
YXZlIGFuIGFzc29jaWF0ZWQgYm94CiAgICAgLy8gcmV0dXJuIDAgYW5kIHN0b3AgdGhpcyBhbGdv
cml0aG0uCkBAIC00NjYsNyArNDY2LDcgQEAgaW50IFJlbmRlckJveE1vZGVsT2JqZWN0OjpvZmZz
ZXRUb3AoKSBjbwogICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICBSZW5kZXJCb3hNb2RlbE9i
amVjdCogb2Zmc2V0UGFyID0gb2Zmc2V0UGFyZW50KCk7Ci0gICAgaW50IHlQb3MgPSAoaXNCb3go
KSA/IHRvUmVuZGVyQm94KHRoaXMpLT55KCkgOiAwKTsKKyAgICBMYXlvdXRVbml0IHlQb3MgPSAo
aXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT55KCkgOiAwKTsKICAgICAKICAgICAvLyBJZiB0
aGUgb2Zmc2V0UGFyZW50IG9mIHRoZSBlbGVtZW50IGlzIG51bGwsIG9yIGlzIHRoZSBIVE1MIGJv
ZHkgZWxlbWVudCwKICAgICAvLyByZXR1cm4gdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGNhbnZh
cyBvcmlnaW4gYW5kIHRoZSB0b3AgYm9yZGVyIGVkZ2UgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAkocmV2aXNpb24gODk5NzApCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAsMTcgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIHZv
aWQgZGVzdHJveSgpOwogCi0gICAgaW50IHJlbGF0aXZlUG9zaXRpb25PZmZzZXRYKCkgY29uc3Q7
Ci0gICAgaW50IHJlbGF0aXZlUG9zaXRpb25PZmZzZXRZKCkgY29uc3Q7Ci0gICAgSW50U2l6ZSBy
ZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZShyZWxhdGl2ZVBv
c2l0aW9uT2Zmc2V0WCgpLCByZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0WSgpKTsgfQotICAgIEludFNp
emUgcmVsYXRpdmVQb3NpdGlvbkxvZ2ljYWxPZmZzZXQoKSBjb25zdCB7IHJldHVybiBzdHlsZSgp
LT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpIDog
cmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpLnRyYW5zcG9zZWRTaXplKCk7IH0KKyAgICBMYXlvdXRV
bml0IHJlbGF0aXZlUG9zaXRpb25PZmZzZXRYKCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCByZWxh
dGl2ZVBvc2l0aW9uT2Zmc2V0WSgpIGNvbnN0OworICAgIExheW91dFNpemUgcmVsYXRpdmVQb3Np
dGlvbk9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFNpemUocmVsYXRpdmVQb3NpdGlvbk9m
ZnNldFgoKSwgcmVsYXRpdmVQb3NpdGlvbk9mZnNldFkoKSk7IH0KKyAgICBMYXlvdXRTaXplIHJl
bGF0aXZlUG9zaXRpb25Mb2dpY2FsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+aXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlbGF0aXZlUG9zaXRpb25PZmZzZXQoKSA6IHJlbGF0
aXZlUG9zaXRpb25PZmZzZXQoKS50cmFuc3Bvc2VkU2l6ZSgpOyB9CiAKICAgICAvLyBJRSBleHRl
bnNpb25zLiBVc2VkIHRvIGNhbGN1bGF0ZSBvZmZzZXRXaWR0aC9IZWlnaHQuICBPdmVycmlkZGVu
IGJ5IGlubGluZXMgKFJlbmRlckZsb3cpCiAgICAgLy8gdG8gcmV0dXJuIHRoZSByZW1haW5pbmcg
d2lkdGggb24gYSBnaXZlbiBsaW5lIChhbmQgdGhlIGhlaWdodCBvZiBhIHNpbmdsZSBsaW5lKS4K
LSAgICB2aXJ0dWFsIGludCBvZmZzZXRMZWZ0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgb2Zm
c2V0VG9wKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQgb2Zmc2V0V2lkdGgoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBpbnQgb2Zmc2V0SGVpZ2h0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
TGF5b3V0VW5pdCBvZmZzZXRMZWZ0KCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG9m
ZnNldFRvcCgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRXaWR0aCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0SGVpZ2h0KCkgY29uc3QgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNv
bnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKQEAgLTcx
LDcgKzcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29u
c3QgeyByZXR1cm4gaXNSb290KCkgfHwgaXNQb3NpdGlvbmVkKCkgfHwgaXNSZWxQb3NpdGlvbmVk
KCkgfHwgaXNUcmFuc3BhcmVudCgpIHx8IGhhc092ZXJmbG93Q2xpcCgpIHx8IGhhc1RyYW5zZm9y
bSgpIHx8IGhhc01hc2soKSB8fCBoYXNSZWZsZWN0aW9uKCkgfHwgc3R5bGUoKS0+c3BlY2lmaWVz
Q29sdW1ucygpOyB9CiAKICAgICAvLyBUaGlzIHdpbGwgd29yayBvbiBpbmxpbmVzIHRvIHJldHVy
biB0aGUgYm91bmRpbmcgYm94IG9mIGFsbCBvZiB0aGUgbGluZXMnIGJvcmRlciBib3hlcy4KLSAg
ICB2aXJ0dWFsIEludFJlY3QgYm9yZGVyQm91bmRpbmdCb3goKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBMYXlvdXRSZWN0IGJvcmRlckJvdW5kaW5nQm94KCkgY29uc3QgPSAwOwogCiAgICAgLy8g
VmlydHVhbCBzaW5jZSB0YWJsZSBjZWxscyBvdmVycmlkZQogICAgIHZpcnR1YWwgaW50IHBhZGRp
bmdUb3AoYm9vbCBpbmNsdWRlSW50cmluc2ljUGFkZGluZyA9IHRydWUpIGNvbnN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHJldmlzaW9uIDg5OTcw
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYzMSwxNyArNjMxLDE3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpjdWxsZWRJbmxp
bmVBYnNvbHV0ZVEKICAgICB9CiB9CiAKLWludCBSZW5kZXJJbmxpbmU6Om9mZnNldExlZnQoKSBj
b25zdAorTGF5b3V0VW5pdCBSZW5kZXJJbmxpbmU6Om9mZnNldExlZnQoKSBjb25zdAogewotICAg
IGludCB4ID0gUmVuZGVyQm94TW9kZWxPYmplY3Q6Om9mZnNldExlZnQoKTsKKyAgICBMYXlvdXRV
bml0IHggPSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6b2Zmc2V0TGVmdCgpOwogICAgIGlmIChJbmxp
bmVCb3gqIGZpcnN0Qm94ID0gZmlyc3RMaW5lQm94SW5jbHVkaW5nQ3VsbGluZygpKQogICAgICAg
ICB4ICs9IGZpcnN0Qm94LT54KCk7CiAgICAgcmV0dXJuIHg7CiB9CiAKLWludCBSZW5kZXJJbmxp
bmU6Om9mZnNldFRvcCgpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlcklubGluZTo6b2Zmc2V0VG9w
KCkgY29uc3QKIHsKLSAgICBpbnQgeSA9IFJlbmRlckJveE1vZGVsT2JqZWN0OjpvZmZzZXRUb3Ao
KTsKKyAgICBMYXlvdXRVbml0IHkgPSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6b2Zmc2V0VG9wKCk7
CiAgICAgaWYgKElubGluZUJveCogZmlyc3RCb3ggPSBmaXJzdExpbmVCb3hJbmNsdWRpbmdDdWxs
aW5nKCkpCiAgICAgICAgIHkgKz0gZmlyc3RCb3gtPnkoKTsKICAgICByZXR1cm4geTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgJKHJldmlzaW9uIDg5OTcwKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjEsMTAgKzEyMSwxMCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHJlcXVp
cmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBpc1JlbFBvc2l0aW9uZWQoKSB8fCBpc1RyYW5zcGFy
ZW50KCkgfHwgaGFzTWFzaygpOyB9CiAKLSAgICB2aXJ0dWFsIGludCBvZmZzZXRMZWZ0KCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBpbnQgb2Zmc2V0VG9wKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBpbnQg
b2Zmc2V0V2lkdGgoKSBjb25zdCB7IHJldHVybiBsaW5lc0JvdW5kaW5nQm94KCkud2lkdGgoKTsg
fQotICAgIHZpcnR1YWwgaW50IG9mZnNldEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGxpbmVzQm91
bmRpbmdCb3goKS5oZWlnaHQoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRMZWZ0
KCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldFRvcCgpIGNvbnN0OworICAg
IHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGxpbmVzQm91
bmRpbmdCb3goKS53aWR0aCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldEhlaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIGxpbmVzQm91bmRpbmdCb3goKS5oZWlnaHQoKTsgfQogCiAgICAg
dmlydHVhbCBJbnRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKTsKICAgICB2aXJ0dWFsIEludFJlY3QgcmVjdFdp
dGhPdXRsaW5lRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgaW50IG91dGxpbmVXaWR0aCk7CkBAIC0xMzUsMTAgKzEzNSwxMCBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2lu
dCYpOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJvcmRlckJvdW5kaW5nQm94KCkgY29uc3QKKyAg
ICB2aXJ0dWFsIExheW91dFJlY3QgYm9yZGVyQm91bmRpbmdCb3goKSBjb25zdAogICAgIHsKLSAg
ICAgICAgSW50UmVjdCBib3VuZGluZ0JveCA9IGxpbmVzQm91bmRpbmdCb3goKTsKLSAgICAgICAg
cmV0dXJuIEludFJlY3QoMCwgMCwgYm91bmRpbmdCb3gud2lkdGgoKSwgYm91bmRpbmdCb3guaGVp
Z2h0KCkpOworICAgICAgICBMYXlvdXRSZWN0IGJvdW5kaW5nQm94ID0gbGluZXNCb3VuZGluZ0Jv
eCgpOworICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgwLCAwLCBib3VuZGluZ0JveC53aWR0aCgp
LCBib3VuZGluZ0JveC5oZWlnaHQoKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBJbmxpbmVGbG93
Qm94KiBjcmVhdGVJbmxpbmVGbG93Qm94KCk7IC8vIFN1YmNsYXNzZWQgYnkgU1ZHIGFuZCBSdWJ5
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAJKHJldmlzaW9u
IDg5OTcwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAwLDI4ICszMDAsMjggQEAgc3RhdGljIGNvbnN0IFJlbmRlckJsb2Nr
KiByZW5kZXJlclBsYWNlaAogICAgIHJldHVybiBmdWxsU2NyZWVuLT5wbGFjZWhvbGRlcigpOwog
fQogCi1pbnQgUmVuZGVyVmlkZW86Om9mZnNldExlZnQoKSBjb25zdAorTGF5b3V0VW5pdCBSZW5k
ZXJWaWRlbzo6b2Zmc2V0TGVmdCgpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0IFJlbmRlckJsb2Nr
KiBibG9jayA9IHJlbmRlcmVyUGxhY2Vob2xkZXIodGhpcykpCiAgICAgICAgIHJldHVybiBibG9j
ay0+b2Zmc2V0TGVmdCgpOwogICAgIHJldHVybiBSZW5kZXJNZWRpYTo6b2Zmc2V0TGVmdCgpOwog
fQogCi1pbnQgUmVuZGVyVmlkZW86Om9mZnNldFRvcCgpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRl
clZpZGVvOjpvZmZzZXRUb3AoKSBjb25zdAogewogICAgIGlmIChjb25zdCBSZW5kZXJCbG9jayog
YmxvY2sgPSByZW5kZXJlclBsYWNlaG9sZGVyKHRoaXMpKQogICAgICAgICByZXR1cm4gYmxvY2st
Pm9mZnNldFRvcCgpOwogICAgIHJldHVybiBSZW5kZXJNZWRpYTo6b2Zmc2V0VG9wKCk7CiB9CiAK
LWludCBSZW5kZXJWaWRlbzo6b2Zmc2V0V2lkdGgoKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJW
aWRlbzo6b2Zmc2V0V2lkdGgoKSBjb25zdAogewogICAgIGlmIChjb25zdCBSZW5kZXJCbG9jayog
YmxvY2sgPSByZW5kZXJlclBsYWNlaG9sZGVyKHRoaXMpKQogICAgICAgICByZXR1cm4gYmxvY2st
Pm9mZnNldFdpZHRoKCk7CiAgICAgcmV0dXJuIFJlbmRlck1lZGlhOjpvZmZzZXRXaWR0aCgpOwog
fQogCi1pbnQgUmVuZGVyVmlkZW86Om9mZnNldEhlaWdodCgpIGNvbnN0CitMYXlvdXRVbml0IFJl
bmRlclZpZGVvOjpvZmZzZXRIZWlnaHQoKSBjb25zdAogewogICAgIGlmIChjb25zdCBSZW5kZXJC
bG9jayogYmxvY2sgPSByZW5kZXJlclBsYWNlaG9sZGVyKHRoaXMpKQogICAgICAgICByZXR1cm4g
YmxvY2stPm9mZnNldEhlaWdodCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZGVvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZGVvLmgJKHJldmlzaW9uIDg5OTcwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZGVvLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDEwICs3NSwxMCBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgaW50IG1pbmltdW1SZXBsYWNlZEhlaWdodCgpIGNvbnN0OwogCiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIHZpcnR1YWwgaW50IG9mZnNldExlZnQoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGludCBvZmZzZXRUb3AoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBvZmZz
ZXRXaWR0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IG9mZnNldEhlaWdodCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRMZWZ0KCkgY29uc3Q7CisgICAgdmlydHVhbCBM
YXlvdXRVbml0IG9mZnNldFRvcCgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZz
ZXRXaWR0aCgpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRIZWlnaHQoKSBj
b25zdDsKICNlbmRpZgogCiAgICAgdm9pZCB1cGRhdGVQbGF5ZXIoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>