<?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>72075</bug_id>
          
          <creation_ts>2011-11-10 16:49:25 -0800</creation_ts>
          <short_desc>Switch remaining RenderBlock/Box methods to to new layout types</short_desc>
          <delta_ts>2011-11-11 17:13:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>60318</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>500413</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-11-10 16:49:25 -0800</bug_when>
    <thetext>Move margins, floats and line layout block logic to layout abstraction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500415</commentid>
    <comment_count>1</comment_count>
      <attachid>114604</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-11-10 16:52:02 -0800</bug_when>
    <thetext>Created attachment 114604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501244</commentid>
    <comment_count>2</comment_count>
      <attachid>114604</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 17:13:15 -0800</bug_when>
    <thetext>Comment on attachment 114604
Patch

Clearing flags on attachment: 114604

Committed r100048: &lt;http://trac.webkit.org/changeset/100048&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501245</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 17:13:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114604</attachid>
            <date>2011-11-10 16:52:02 -0800</date>
            <delta_ts>2011-11-11 17:13:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72075-20111110165200.patch</filename>
            <type>text/plain</type>
            <size>23085</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5OTE1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMTEtMTAgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN3aXRjaCByZW1haW5pbmcgUmVu
ZGVyQmxvY2svQm94IG1ldGhvZHMgdG8gdG8gbmV3IGxheW91dCB0eXBlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwNzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIG1hcmdpbnMsIGZsb2F0cyBh
bmQgbGluZSBsYXlvdXQgYmxvY2sgbG9naWMgdG8gbGF5b3V0IGFic3RyYWN0aW9uLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVM
YXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyUGFkZGluZ01hcmdpblN0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclBhZGRpbmdNYXJnaW5FbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6aW5saW5lTG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFN0YXRpY1Bv
c2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6OkxpbmVMYXlvdXRT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6OnNldFJlcGFpbnRSYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6OnVwZGF0ZVJlcGFpbnRSYW5n
ZUZyb21Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dFJ1bnNBbmRG
bG9hdHNJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsaW5rVG9FbmRM
aW5lSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dElubGlu
ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjaGVja0Zsb2F0c0lu
Q2xlYW5MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpkZXRlcm1pbmVTdGFy
dFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjaGVja1BhZ2luYXRp
b25BbmRGbG9hdHNBdEVuZExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Okxp
bmVCcmVha2VyOjpuZXh0TGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjphZGRPdmVyZmxvd0Zyb21JbmxpbmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6Y2hlY2tMaW5lc0ZvclRleHRPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdE9uTGluZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbnRhaW5pbmdC
bG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnRJblJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6Om9mZnNldEZyb21Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94Ojpwb3NpdGlvbkxpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21w
dXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OmNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvclBvc2l0aW9uZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojpjb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0Rm9yUG9zaXRpb25l
ZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94Ojp0cnlMYXlvdXREb2luZ1Bvc2l0aW9uZWRNb3ZlbWVudE9ubHkpOgorCiAyMDEx
LTExLTEwICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
ZWZmZWN0Qm91bmRpbmdCb3hNb2RlIGZyb20gQ1NTIEZpbHRlcnMKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCShyZXZpc2lv
biA5OTkxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlv
dXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYsMjAgKzIyNiwyMCBAQCBwcml2YXRlOgogICAg
IExheW91dFVuaXQgbV9mbG9hdFBhZ2luYXRpb25TdHJ1dDsKIH07CiAKLXN0YXRpYyBpbmxpbmUg
aW50IGJvcmRlclBhZGRpbmdNYXJnaW5TdGFydChSZW5kZXJJbmxpbmUqIGNoaWxkKQorc3RhdGlj
IGlubGluZSBMYXlvdXRVbml0IGJvcmRlclBhZGRpbmdNYXJnaW5TdGFydChSZW5kZXJJbmxpbmUq
IGNoaWxkKQogewogICAgIHJldHVybiBjaGlsZC0+bWFyZ2luU3RhcnQoKSArIGNoaWxkLT5wYWRk
aW5nU3RhcnQoKSArIGNoaWxkLT5ib3JkZXJTdGFydCgpOwogfQogCi1zdGF0aWMgaW5saW5lIGlu
dCBib3JkZXJQYWRkaW5nTWFyZ2luRW5kKFJlbmRlcklubGluZSogY2hpbGQpCitzdGF0aWMgaW5s
aW5lIExheW91dFVuaXQgYm9yZGVyUGFkZGluZ01hcmdpbkVuZChSZW5kZXJJbmxpbmUqIGNoaWxk
KQogewogICAgIHJldHVybiBjaGlsZC0+bWFyZ2luRW5kKCkgKyBjaGlsZC0+cGFkZGluZ0VuZCgp
ICsgY2hpbGQtPmJvcmRlckVuZCgpOwogfQogCi1zdGF0aWMgaW50IGlubGluZUxvZ2ljYWxXaWR0
aChSZW5kZXJPYmplY3QqIGNoaWxkLCBib29sIHN0YXJ0ID0gdHJ1ZSwgYm9vbCBlbmQgPSB0cnVl
KQorc3RhdGljIExheW91dFVuaXQgaW5saW5lTG9naWNhbFdpZHRoKFJlbmRlck9iamVjdCogY2hp
bGQsIGJvb2wgc3RhcnQgPSB0cnVlLCBib29sIGVuZCA9IHRydWUpCiB7CiAgICAgdW5zaWduZWQg
bGluZURlcHRoID0gMTsKLSAgICBpbnQgZXh0cmFXaWR0aCA9IDA7CisgICAgTGF5b3V0VW5pdCBl
eHRyYVdpZHRoID0gMDsKICAgICBSZW5kZXJPYmplY3QqIHBhcmVudCA9IGNoaWxkLT5wYXJlbnQo
KTsKICAgICB3aGlsZSAocGFyZW50LT5pc1JlbmRlcklubGluZSgpICYmIGxpbmVEZXB0aCsrIDwg
Y01heExpbmVEZXB0aCkgewogICAgICAgICBSZW5kZXJJbmxpbmUqIHBhcmVudEFzUmVuZGVySW5s
aW5lID0gdG9SZW5kZXJJbmxpbmUocGFyZW50KTsKQEAgLTg1Nyw3ICs4NTcsNyBAQCBzdGF0aWMg
dm9pZCBzZXRTdGF0aWNQb3NpdGlvbnMoUmVuZGVyQmxvCiAgICAgLy8gRklYTUU6IFRoZSBtYXRo
IGhlcmUgaXMgYWN0dWFsbHkgbm90IHJlYWxseSByaWdodC4gSXQncyBhIGJlc3QtZ3Vlc3MgYXBw
cm94aW1hdGlvbiB0aGF0CiAgICAgLy8gd2lsbCB3b3JrIGZvciB0aGUgY29tbW9uIGNhc2VzCiAg
ICAgUmVuZGVyT2JqZWN0KiBjb250YWluZXJCbG9jayA9IGNoaWxkLT5jb250YWluZXIoKTsKLSAg
ICBpbnQgYmxvY2tIZWlnaHQgPSBibG9jay0+bG9naWNhbEhlaWdodCgpOworICAgIExheW91dFVu
aXQgYmxvY2tIZWlnaHQgPSBibG9jay0+bG9naWNhbEhlaWdodCgpOwogICAgIGlmIChjb250YWlu
ZXJCbG9jay0+aXNSZW5kZXJJbmxpbmUoKSkgewogICAgICAgICAvLyBBIHJlbGF0aXZlIHBvc2l0
aW9uZWQgaW5saW5lIGVuY2xvc2VzIHVzLiBJbiB0aGlzIGNhc2UsIHdlIGFsc28gaGF2ZSB0byBk
ZXRlcm1pbmUgb3VyCiAgICAgICAgIC8vIHBvc2l0aW9uIGFzIHRob3VnaCB3ZSB3ZXJlIGFuIGlu
bGluZS4gU2V0IHxzdGF0aWNJbmxpbmVQb3NpdGlvbnwgYW5kIHxzdGF0aWNCbG9ja1Bvc2l0aW9u
fCBvbiB0aGUgcmVsYXRpdmUgcG9zaXRpb25lZApAQCAtMTA0MCw3ICsxMDQwLDcgQEAgUm9vdElu
bGluZUJveCogUmVuZGVyQmxvY2s6OmNyZWF0ZUxpbmVCbwogLy8gZHVyaW5nIGFuIGVudGlyZSBs
aW5lYm94IHRyZWUgbGF5b3V0IHBhc3MgKGFrYSBsYXlvdXRJbmxpbmVDaGlsZHJlbikuCiBjbGFz
cyBMaW5lTGF5b3V0U3RhdGUgewogcHVibGljOgotICAgIExpbmVMYXlvdXRTdGF0ZShib29sIGZ1
bGxMYXlvdXQsIGludCYgcmVwYWludExvZ2ljYWxUb3AsIGludCYgcmVwYWludExvZ2ljYWxCb3R0
b20pCisgICAgTGluZUxheW91dFN0YXRlKGJvb2wgZnVsbExheW91dCwgTGF5b3V0VW5pdCYgcmVw
YWludExvZ2ljYWxUb3AsIExheW91dFVuaXQmIHJlcGFpbnRMb2dpY2FsQm90dG9tKQogICAgICAg
ICA6IG1fbGFzdEZsb2F0KDApCiAgICAgICAgICwgbV9lbmRMaW5lKDApCiAgICAgICAgICwgbV9m
bG9hdEluZGV4KDApCkBAIC0xMDU4LDEzICsxMDU4LDEzIEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
dXNlc1JlcGFpbnRCb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX3VzZXNSZXBhaW50Qm91bmRzOyB9
CiAKLSAgICB2b2lkIHNldFJlcGFpbnRSYW5nZShpbnQgbG9naWNhbEhlaWdodCkKKyAgICB2b2lk
IHNldFJlcGFpbnRSYW5nZShMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpCiAgICAgeyAKICAgICAg
ICAgbV91c2VzUmVwYWludEJvdW5kcyA9IHRydWU7CiAgICAgICAgIG1fcmVwYWludExvZ2ljYWxU
b3AgPSBtX3JlcGFpbnRMb2dpY2FsQm90dG9tID0gbG9naWNhbEhlaWdodDsgCiAgICAgfQogICAg
IAotICAgIHZvaWQgdXBkYXRlUmVwYWludFJhbmdlRnJvbUJveChSb290SW5saW5lQm94KiBib3gs
IGludCBwYWdpbmF0aW9uRGVsdGEgPSAwKQorICAgIHZvaWQgdXBkYXRlUmVwYWludFJhbmdlRnJv
bUJveChSb290SW5saW5lQm94KiBib3gsIExheW91dFVuaXQgcGFnaW5hdGlvbkRlbHRhID0gMCkK
ICAgICB7CiAgICAgICAgIG1fdXNlc1JlcGFpbnRCb3VuZHMgPSB0cnVlOwogICAgICAgICBtX3Jl
cGFpbnRMb2dpY2FsVG9wID0gbWluKG1fcmVwYWludExvZ2ljYWxUb3AsIGJveC0+bG9naWNhbFRv
cFZpc3VhbE92ZXJmbG93KCkgKyBtaW4ocGFnaW5hdGlvbkRlbHRhLCAwKSk7CkBAIC0xMTA3LDkg
KzExMDcsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0Z1bGxMYXlvdXQ7CiAKICAgICAvLyBG
SVhNRTogU2hvdWxkIHRoaXMgYmUgYSByYW5nZSBvYmplY3QgaW5zdGVhZCBvZiB0d28gaW50cz8K
LSAgICBpbnQmIG1fcmVwYWludExvZ2ljYWxUb3A7Ci0gICAgaW50JiBtX3JlcGFpbnRMb2dpY2Fs
Qm90dG9tOwotICAgIAorICAgIExheW91dFVuaXQmIG1fcmVwYWludExvZ2ljYWxUb3A7CisgICAg
TGF5b3V0VW5pdCYgbV9yZXBhaW50TG9naWNhbEJvdHRvbTsKKwogICAgIGJvb2wgbV91c2VzUmVw
YWludEJvdW5kczsKIH07CiAKQEAgLTEyNTcsNyArMTI1Nyw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6
OmxheW91dFJ1bnNBbmRGbG9hdHNJblIKICAgICAgICAgICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUg
d2UgZmlndXJlIG91dCB3aGVyZSBib3JkZXIvcGFkZGluZy9tYXJnaW4gc2hvdWxkIGJlIGFwcGxp
ZWQgZm9yCiAgICAgICAgICAgICAvLyBpbmxpbmUgZmxvdyBib3hlcy4KIAotICAgICAgICAgICAg
aW50IG9sZExvZ2ljYWxIZWlnaHQgPSBsb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgICAgICBMYXlv
dXRVbml0IG9sZExvZ2ljYWxIZWlnaHQgPSBsb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgICAgICBS
b290SW5saW5lQm94KiBsaW5lQm94ID0gY3JlYXRlTGluZUJveGVzRnJvbUJpZGlSdW5zKGJpZGlS
dW5zLCBlbmQsIGxheW91dFN0YXRlLmxpbmVJbmZvKCksIHZlcnRpY2FsUG9zaXRpb25DYWNoZSwg
dHJhaWxpbmdTcGFjZVJ1bik7CiAKICAgICAgICAgICAgIGJpZGlSdW5zLmRlbGV0ZVJ1bnMoKTsK
QEAgLTEyNjksMTAgKzEyNjksMTAgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZs
b2F0c0luUgogICAgICAgICAgICAgICAgICAgICBsYXlvdXRTdGF0ZS51cGRhdGVSZXBhaW50UmFu
Z2VGcm9tQm94KGxpbmVCb3gpOwogCiAgICAgICAgICAgICAgICAgaWYgKHBhZ2luYXRlZCkgewot
ICAgICAgICAgICAgICAgICAgICBpbnQgYWRqdXN0bWVudCA9IDA7CisgICAgICAgICAgICAgICAg
ICAgIExheW91dFVuaXQgYWRqdXN0bWVudCA9IDA7CiAgICAgICAgICAgICAgICAgICAgIGFkanVz
dExpbmVQb3NpdGlvbkZvclBhZ2luYXRpb24obGluZUJveCwgYWRqdXN0bWVudCk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChhZGp1c3RtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
bnQgb2xkTGluZVdpZHRoID0gYXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yTGluZShvbGRMb2dpY2Fs
SGVpZ2h0LCBsYXlvdXRTdGF0ZS5saW5lSW5mbygpLmlzRmlyc3RMaW5lKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBvbGRMaW5lV2lkdGggPSBhdmFpbGFibGVMb2dpY2Fs
V2lkdGhGb3JMaW5lKG9sZExvZ2ljYWxIZWlnaHQsIGxheW91dFN0YXRlLmxpbmVJbmZvKCkuaXNG
aXJzdExpbmUoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lQm94LT5hZGp1c3RCbG9j
a0RpcmVjdGlvblBvc2l0aW9uKGFkanVzdG1lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGxheW91dFN0YXRlLnVzZXNSZXBhaW50Qm91bmRzKCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGF5b3V0U3RhdGUudXBkYXRlUmVwYWludFJhbmdlRnJvbUJveChsaW5lQm94KTsK
QEAgLTEzMzIsNyArMTMzMiw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxpbmtUb0VuZExpbmVJZk5l
ZWRlZCgKICAgICAgICAgaWYgKGxheW91dFN0YXRlLmVuZExpbmVNYXRjaGVkKCkpIHsKICAgICAg
ICAgICAgIGJvb2wgcGFnaW5hdGVkID0gdmlldygpLT5sYXlvdXRTdGF0ZSgpICYmIHZpZXcoKS0+
bGF5b3V0U3RhdGUoKS0+aXNQYWdpbmF0ZWQoKTsKICAgICAgICAgICAgIC8vIEF0dGFjaCBhbGwg
dGhlIHJlbWFpbmluZyBsaW5lcywgYW5kIHRoZW4gYWRqdXN0IHRoZWlyIHktcG9zaXRpb25zIGFz
IG5lZWRlZC4KLSAgICAgICAgICAgIGludCBkZWx0YSA9IGxvZ2ljYWxIZWlnaHQoKSAtIGxheW91
dFN0YXRlLmVuZExpbmVMb2dpY2FsVG9wKCk7CisgICAgICAgICAgICBMYXlvdXRVbml0IGRlbHRh
ID0gbG9naWNhbEhlaWdodCgpIC0gbGF5b3V0U3RhdGUuZW5kTGluZUxvZ2ljYWxUb3AoKTsKICAg
ICAgICAgICAgIGZvciAoUm9vdElubGluZUJveCogbGluZSA9IGxheW91dFN0YXRlLmVuZExpbmUo
KTsgbGluZTsgbGluZSA9IGxpbmUtPm5leHRSb290Qm94KCkpIHsKICAgICAgICAgICAgICAgICBs
aW5lLT5hdHRhY2hMaW5lKCk7CiAgICAgICAgICAgICAgICAgaWYgKHBhZ2luYXRlZCkgewpAQCAt
MTQxMiw3ICsxNDEyLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cmVwYWludERpcnR5RmxvYXRzKFZl
YwogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9v
bCByZWxheW91dENoaWxkcmVuLCBpbnQmIHJlcGFpbnRMb2dpY2FsVG9wLCBpbnQmIHJlcGFpbnRM
b2dpY2FsQm90dG9tKQordm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9v
bCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0JiByZXBhaW50TG9naWNhbFRvcCwgTGF5b3V0
VW5pdCYgcmVwYWludExvZ2ljYWxCb3R0b20pCiB7CiAgICAgbV9vdmVyZmxvdy5jbGVhcigpOwog
CkBAIC0xNTA4LDcgKzE1MDgsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpjaGVja0Zsb2F0c0luQ2xl
YW5MaW5lCiAgICAgZm9yIChWZWN0b3I8UmVuZGVyQm94Kj46Oml0ZXJhdG9yIGl0ID0gY2xlYW5M
aW5lRmxvYXRzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgUmVuZGVyQm94
KiBmbG9hdGluZ0JveCA9ICppdDsKICAgICAgICAgZmxvYXRpbmdCb3gtPmxheW91dElmTmVlZGVk
KCk7Ci0gICAgICAgIEludFNpemUgbmV3U2l6ZShmbG9hdGluZ0JveC0+d2lkdGgoKSArIGZsb2F0
aW5nQm94LT5tYXJnaW5MZWZ0KCkgKyBmbG9hdGluZ0JveC0+bWFyZ2luUmlnaHQoKSwgZmxvYXRp
bmdCb3gtPmhlaWdodCgpICsgZmxvYXRpbmdCb3gtPm1hcmdpblRvcCgpICsgZmxvYXRpbmdCb3gt
Pm1hcmdpbkJvdHRvbSgpKTsKKyAgICAgICAgTGF5b3V0U2l6ZSBuZXdTaXplKGZsb2F0aW5nQm94
LT53aWR0aCgpICsgZmxvYXRpbmdCb3gtPm1hcmdpbkxlZnQoKSArIGZsb2F0aW5nQm94LT5tYXJn
aW5SaWdodCgpLCBmbG9hdGluZ0JveC0+aGVpZ2h0KCkgKyBmbG9hdGluZ0JveC0+bWFyZ2luVG9w
KCkgKyBmbG9hdGluZ0JveC0+bWFyZ2luQm90dG9tKCkpOwogICAgICAgICBBU1NFUlQoZmxvYXRJ
bmRleCA8IGZsb2F0cy5zaXplKCkpOwogICAgICAgICBpZiAoZmxvYXRzW2Zsb2F0SW5kZXhdLm9i
amVjdCAhPSBmbG9hdGluZ0JveCkgewogICAgICAgICAgICAgZW5jb3VudGVyZWROZXdGbG9hdCA9
IHRydWU7CkBAIC0xNTE2LDEwICsxNTE2LDEwIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNoZWNrRmxv
YXRzSW5DbGVhbkxpbmUKICAgICAgICAgfQogCiAgICAgICAgIGlmIChmbG9hdHNbZmxvYXRJbmRl
eF0ucmVjdC5zaXplKCkgIT0gbmV3U2l6ZSkgewotICAgICAgICAgICAgaW50IGZsb2F0VG9wID0g
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGZsb2F0c1tmbG9hdEluZGV4XS5yZWN0LnkoKSA6
IGZsb2F0c1tmbG9hdEluZGV4XS5yZWN0LngoKTsKLSAgICAgICAgICAgIGludCBmbG9hdEhlaWdo
dCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBtYXgoZmxvYXRzW2Zsb2F0SW5kZXhdLnJl
Y3QuaGVpZ2h0KCksIG5ld1NpemUuaGVpZ2h0KCkpCisgICAgICAgICAgICBMYXlvdXRVbml0IGZs
b2F0VG9wID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGZsb2F0c1tmbG9hdEluZGV4XS5y
ZWN0LnkoKSA6IGZsb2F0c1tmbG9hdEluZGV4XS5yZWN0LngoKTsKKyAgICAgICAgICAgIExheW91
dFVuaXQgZmxvYXRIZWlnaHQgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gbWF4KGZsb2F0
c1tmbG9hdEluZGV4XS5yZWN0LmhlaWdodCgpLCBuZXdTaXplLmhlaWdodCgpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
IG1heChmbG9hdHNbZmxvYXRJbmRleF0ucmVjdC53aWR0aCgpLCBuZXdTaXplLndpZHRoKCkpOwot
ICAgICAgICAgICAgZmxvYXRIZWlnaHQgPSBtaW4oZmxvYXRIZWlnaHQsIG51bWVyaWNfbGltaXRz
PGludD46Om1heCgpIC0gZmxvYXRUb3ApOworICAgICAgICAgICAgZmxvYXRIZWlnaHQgPSBtaW4o
ZmxvYXRIZWlnaHQsIG51bWVyaWNfbGltaXRzPExheW91dFVuaXQ+OjptYXgoKSAtIGZsb2F0VG9w
KTsKICAgICAgICAgICAgIGxpbmUtPm1hcmtEaXJ0eSgpOwogICAgICAgICAgICAgbWFya0xpbmVz
RGlydHlJbkJsb2NrUmFuZ2UobGluZS0+bGluZUJvdHRvbVdpdGhMZWFkaW5nKCksIGZsb2F0VG9w
ICsgZmxvYXRIZWlnaHQsIGxpbmUpOwogICAgICAgICAgICAgZmxvYXRzW2Zsb2F0SW5kZXhdLnJl
Y3Quc2V0U2l6ZShuZXdTaXplKTsKQEAgLTE1MzksNyArMTUzOSw3IEBAIFJvb3RJbmxpbmVCb3gq
IFJlbmRlckJsb2NrOjpkZXRlcm1pbmVTdGEKICAgICBpZiAoIWxheW91dFN0YXRlLmlzRnVsbExh
eW91dCgpKSB7CiAgICAgICAgIC8vIFBhZ2luYXRlIGFsbCBvZiB0aGUgY2xlYW4gbGluZXMuCiAg
ICAgICAgIGJvb2wgcGFnaW5hdGVkID0gdmlldygpLT5sYXlvdXRTdGF0ZSgpICYmIHZpZXcoKS0+
bGF5b3V0U3RhdGUoKS0+aXNQYWdpbmF0ZWQoKTsKLSAgICAgICAgaW50IHBhZ2luYXRpb25EZWx0
YSA9IDA7CisgICAgICAgIExheW91dFVuaXQgcGFnaW5hdGlvbkRlbHRhID0gMDsKICAgICAgICAg
c2l6ZV90IGZsb2F0SW5kZXggPSAwOwogICAgICAgICBmb3IgKGN1cnIgPSBmaXJzdFJvb3RCb3go
KTsgY3VyciAmJiAhY3Vyci0+aXNEaXJ0eSgpOyBjdXJyID0gY3Vyci0+bmV4dFJvb3RCb3goKSkg
ewogICAgICAgICAgICAgaWYgKHBhZ2luYXRlZCkgewpAQCAtMTYxMCw3ICsxNjEwLDcgQEAgUm9v
dElubGluZUJveCogUmVuZGVyQmxvY2s6OmRldGVybWluZVN0YQogCiAgICAgdW5zaWduZWQgbnVt
Q2xlYW5GbG9hdHMgPSAwOwogICAgIGlmICghbGF5b3V0U3RhdGUuZmxvYXRzKCkuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGludCBzYXZlZExvZ2ljYWxIZWlnaHQgPSBsb2dpY2FsSGVpZ2h0KCk7Cisg
ICAgICAgIExheW91dFVuaXQgc2F2ZWRMb2dpY2FsSGVpZ2h0ID0gbG9naWNhbEhlaWdodCgpOwog
ICAgICAgICAvLyBSZXN0b3JlIGZsb2F0cyBmcm9tIGNsZWFuIGxpbmVzLgogICAgICAgICBSb290
SW5saW5lQm94KiBsaW5lID0gZmlyc3RSb290Qm94KCk7CiAgICAgICAgIHdoaWxlIChsaW5lICE9
IGN1cnIpIHsKQEAgLTE3MTQsMTMgKzE3MTQsMTMgQEAgYm9vbCBSZW5kZXJCbG9jazo6Y2hlY2tQ
YWdpbmF0aW9uQW5kRmxvYQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICAvLyBTZWUg
aWYgYW55IGZsb2F0cyBlbmQgaW4gdGhlIHJhbmdlIGFsb25nIHdoaWNoIHdlIHdhbnQgdG8gc2hp
ZnQgdGhlIGxpbmVzIHZlcnRpY2FsbHkuCi0gICAgaW50IGxvZ2ljYWxUb3AgPSBtaW4obG9naWNh
bEhlaWdodCgpLCBsYXlvdXRTdGF0ZS5lbmRMaW5lTG9naWNhbFRvcCgpKTsKKyAgICBMYXlvdXRV
bml0IGxvZ2ljYWxUb3AgPSBtaW4obG9naWNhbEhlaWdodCgpLCBsYXlvdXRTdGF0ZS5lbmRMaW5l
TG9naWNhbFRvcCgpKTsKIAogICAgIFJvb3RJbmxpbmVCb3gqIGxhc3RMaW5lID0gbGF5b3V0U3Rh
dGUuZW5kTGluZSgpOwogICAgIHdoaWxlIChSb290SW5saW5lQm94KiBuZXh0TGluZSA9IGxhc3RM
aW5lLT5uZXh0Um9vdEJveCgpKQogICAgICAgICBsYXN0TGluZSA9IG5leHRMaW5lOwogCi0gICAg
aW50IGxvZ2ljYWxCb3R0b20gPSBsYXN0TGluZS0+bGluZUJvdHRvbVdpdGhMZWFkaW5nKCkgKyBh
YnMobGluZURlbHRhKTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b20gPSBsYXN0TGluZS0+
bGluZUJvdHRvbVdpdGhMZWFkaW5nKCkgKyBhYnMobGluZURlbHRhKTsKIAogICAgIGNvbnN0IEZs
b2F0aW5nT2JqZWN0U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5z
ZXQoKTsKICAgICBGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9yIGVuZCA9IGZsb2F0aW5nT2JqZWN0
U2V0LmVuZCgpOwpAQCAtMjIxOCw3ICsyMjE4LDcgQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxv
Y2s6OkxpbmVCcmVha2VyOgogCiAgICAgICAgICAgICAvLyBPcHRpbWl6ZSBmb3IgYSBjb21tb24g
Y2FzZS4gSWYgd2UgY2FuJ3QgZmluZCB3aGl0ZXNwYWNlIGFmdGVyIHRoZSBsaXN0CiAgICAgICAg
ICAgICAvLyBpdGVtLCB0aGVuIHRoaXMgaXMgYWxsIG1vb3QuCi0gICAgICAgICAgICBpbnQgcmVw
bGFjZWRMb2dpY2FsV2lkdGggPSBtX2Jsb2NrLT5sb2dpY2FsV2lkdGhGb3JDaGlsZChyZXBsYWNl
ZEJveCkgKyBtX2Jsb2NrLT5tYXJnaW5TdGFydEZvckNoaWxkKHJlcGxhY2VkQm94KSArIG1fYmxv
Y2stPm1hcmdpbkVuZEZvckNoaWxkKHJlcGxhY2VkQm94KSArIGlubGluZUxvZ2ljYWxXaWR0aChj
dXJyZW50Lm1fb2JqKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgcmVwbGFjZWRMb2dpY2FsV2lk
dGggPSBtX2Jsb2NrLT5sb2dpY2FsV2lkdGhGb3JDaGlsZChyZXBsYWNlZEJveCkgKyBtX2Jsb2Nr
LT5tYXJnaW5TdGFydEZvckNoaWxkKHJlcGxhY2VkQm94KSArIG1fYmxvY2stPm1hcmdpbkVuZEZv
ckNoaWxkKHJlcGxhY2VkQm94KSArIGlubGluZUxvZ2ljYWxXaWR0aChjdXJyZW50Lm1fb2JqKTsK
ICAgICAgICAgICAgIGlmIChjdXJyZW50Lm1fb2JqLT5pc0xpc3RNYXJrZXIoKSkgewogICAgICAg
ICAgICAgICAgIGlmIChtX2Jsb2NrLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSAmJiBz
aG91bGRTa2lwV2hpdGVzcGFjZUFmdGVyU3RhcnRPYmplY3QobV9ibG9jaywgY3VycmVudC5tX29i
aiwgbGluZU1pZHBvaW50U3RhdGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIExpa2Ugd2l0
aCBpbmxpbmUgZmxvd3MsIHdlIHN0YXJ0IGlnbm9yaW5nIHNwYWNlcyB0byBtYWtlIHN1cmUgdGhh
dCBhbnkKQEAgLTI1OTcsNyArMjU5Nyw3IEBAIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpM
aW5lQnJlYWtlcjoKIAogdm9pZCBSZW5kZXJCbG9jazo6YWRkT3ZlcmZsb3dGcm9tSW5saW5lQ2hp
bGRyZW4oKQogewotICAgIGludCBlbmRQYWRkaW5nID0gaGFzT3ZlcmZsb3dDbGlwKCkgPyBwYWRk
aW5nRW5kKCkgOiAwOworICAgIExheW91dFVuaXQgZW5kUGFkZGluZyA9IGhhc092ZXJmbG93Q2xp
cCgpID8gcGFkZGluZ0VuZCgpIDogMDsKICAgICAvLyBGSVhNRTogTmVlZCB0byBmaW5kIGFub3Ro
ZXIgd2F5IHRvIGRvIHRoaXMsIHNpbmNlIHNjcm9sbGJhcnMgY291bGQgc2hvdyB3aGVuIHdlIGRv
bid0IHdhbnQgdGhlbSB0by4KICAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkgJiYgIWVuZFBhZGRp
bmcgJiYgbm9kZSgpICYmIG5vZGUoKS0+cmVuZGVyZXJJc0VkaXRhYmxlKCkgJiYgbm9kZSgpID09
IG5vZGUoKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpICYmIHN0eWxlKCktPmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSkKICAgICAgICAgZW5kUGFkZGluZyA9IDE7CkBAIC0yNjIxLDggKzI2MjEsOCBA
QCB2b2lkIFJlbmRlckJsb2NrOjpjaGVja0xpbmVzRm9yVGV4dE92ZXJmCiAgICAgY29uc3QgRm9u
dCYgZm9udCA9IHN0eWxlKCktPmZvbnQoKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgZWxsaXBzaXNTdHIsICgmaG9yaXpvbnRhbEVsbGlwc2lzLCAxKSk7CiAgICAgY29u
c3QgRm9udCYgZmlyc3RMaW5lRm9udCA9IGZpcnN0TGluZVN0eWxlKCktPmZvbnQoKTsKLSAgICBp
bnQgZmlyc3RMaW5lRWxsaXBzaXNXaWR0aCA9IGZpcnN0TGluZUZvbnQud2lkdGgoY29uc3RydWN0
VGV4dFJ1bih0aGlzLCBmaXJzdExpbmVGb250LCAmaG9yaXpvbnRhbEVsbGlwc2lzLCAxLCBmaXJz
dExpbmVTdHlsZSgpKSk7Ci0gICAgaW50IGVsbGlwc2lzV2lkdGggPSAoZm9udCA9PSBmaXJzdExp
bmVGb250KSA/IGZpcnN0TGluZUVsbGlwc2lzV2lkdGggOiBmb250LndpZHRoKGNvbnN0cnVjdFRl
eHRSdW4odGhpcywgZm9udCwgJmhvcml6b250YWxFbGxpcHNpcywgMSwgc3R5bGUoKSkpOworICAg
IExheW91dFVuaXQgZmlyc3RMaW5lRWxsaXBzaXNXaWR0aCA9IGZpcnN0TGluZUZvbnQud2lkdGgo
Y29uc3RydWN0VGV4dFJ1bih0aGlzLCBmaXJzdExpbmVGb250LCAmaG9yaXpvbnRhbEVsbGlwc2lz
LCAxLCBmaXJzdExpbmVTdHlsZSgpKSk7CisgICAgTGF5b3V0VW5pdCBlbGxpcHNpc1dpZHRoID0g
KGZvbnQgPT0gZmlyc3RMaW5lRm9udCkgPyBmaXJzdExpbmVFbGxpcHNpc1dpZHRoIDogZm9udC53
aWR0aChjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQsICZob3Jpem9udGFsRWxsaXBzaXMsIDEs
IHN0eWxlKCkpKTsKIAogICAgIC8vIEZvciBMVFIgdGV4dCB0cnVuY2F0aW9uLCB3ZSB3YW50IHRv
IGdldCB0aGUgcmlnaHQgZWRnZSBvZiBvdXIgcGFkZGluZyBib3gsIGFuZCB0aGVuIHdlIHdhbnQg
dG8gc2VlCiAgICAgLy8gaWYgdGhlIHJpZ2h0IGVkZ2Ugb2YgYSBsaW5lIGJveCBleGNlZWRzIHRo
YXQuICBGb3IgUlRMLCB3ZSB1c2UgdGhlIGxlZnQgZWRnZSBvZiB0aGUgcGFkZGluZyBib3ggYW5k
CkBAIC0yNjMwLDE2ICsyNjMwLDE2IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNoZWNrTGluZXNGb3JU
ZXh0T3ZlcmYKICAgICAvLyBJbmNsdWRlIHRoZSBzY3JvbGxiYXIgZm9yIG92ZXJmbG93IGJsb2Nr
cywgd2hpY2ggbWVhbnMgd2Ugd2FudCB0byB1c2UgImNvbnRlbnRXaWR0aCgpIgogICAgIGJvb2wg
bHRyID0gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwogICAgIGZvciAoUm9vdElu
bGluZUJveCogY3VyciA9IGZpcnN0Um9vdEJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFJv
b3RCb3goKSkgewotICAgICAgICBpbnQgYmxvY2tSaWdodEVkZ2UgPSBsb2dpY2FsUmlnaHRPZmZz
ZXRGb3JMaW5lKGN1cnItPnkoKSwgY3VyciA9PSBmaXJzdFJvb3RCb3goKSk7Ci0gICAgICAgIGlu
dCBibG9ja0xlZnRFZGdlID0gbG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGN1cnItPnkoKSwgY3Vy
ciA9PSBmaXJzdFJvb3RCb3goKSk7Ci0gICAgICAgIGludCBsaW5lQm94RWRnZSA9IGx0ciA/IGN1
cnItPngoKSArIGN1cnItPmxvZ2ljYWxXaWR0aCgpIDogY3Vyci0+eCgpOworICAgICAgICBMYXlv
dXRVbml0IGJsb2NrUmlnaHRFZGdlID0gbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShjdXJyLT55
KCksIGN1cnIgPT0gZmlyc3RSb290Qm94KCkpOworICAgICAgICBMYXlvdXRVbml0IGJsb2NrTGVm
dEVkZ2UgPSBsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUoY3Vyci0+eSgpLCBjdXJyID09IGZpcnN0
Um9vdEJveCgpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBsaW5lQm94RWRnZSA9IGx0ciA/IGN1cnIt
PngoKSArIGN1cnItPmxvZ2ljYWxXaWR0aCgpIDogY3Vyci0+eCgpOwogICAgICAgICBpZiAoKGx0
ciAmJiBsaW5lQm94RWRnZSA+IGJsb2NrUmlnaHRFZGdlKSB8fCAoIWx0ciAmJiBsaW5lQm94RWRn
ZSA8IGJsb2NrTGVmdEVkZ2UpKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGxpbmUgc3BpbGxzIG91
dCBvZiBvdXIgYm94IGluIHRoZSBhcHByb3ByaWF0ZSBkaXJlY3Rpb24uICBOb3cgd2UgbmVlZCB0
byBzZWUgaWYgdGhlIGxpbmUKICAgICAgICAgICAgIC8vIGNhbiBiZSB0cnVuY2F0ZWQuICBJbiBv
cmRlciBmb3IgdHJ1bmNhdGlvbiB0byBiZSBwb3NzaWJsZSwgdGhlIGxpbmUgbXVzdCBoYXZlIHN1
ZmZpY2llbnQgc3BhY2UgdG8KICAgICAgICAgICAgIC8vIGFjY29tbW9kYXRlIG91ciB0cnVuY2F0
aW9uIHN0cmluZywgYW5kIG5vIHJlcGxhY2VkIGVsZW1lbnRzIChpbWFnZXMsIHRhYmxlcykgY2Fu
IG92ZXJsYXAgdGhlIGVsbGlwc2lzCiAgICAgICAgICAgICAvLyBzcGFjZS4KLSAgICAgICAgICAg
IGludCB3aWR0aCA9IGN1cnIgPT0gZmlyc3RSb290Qm94KCkgPyBmaXJzdExpbmVFbGxpcHNpc1dp
ZHRoIDogZWxsaXBzaXNXaWR0aDsKLSAgICAgICAgICAgIGludCBibG9ja0VkZ2UgPSBsdHIgPyBi
bG9ja1JpZ2h0RWRnZSA6IGJsb2NrTGVmdEVkZ2U7CisgICAgICAgICAgICBMYXlvdXRVbml0IHdp
ZHRoID0gY3VyciA9PSBmaXJzdFJvb3RCb3goKSA/IGZpcnN0TGluZUVsbGlwc2lzV2lkdGggOiBl
bGxpcHNpc1dpZHRoOworICAgICAgICAgICAgTGF5b3V0VW5pdCBibG9ja0VkZ2UgPSBsdHIgPyBi
bG9ja1JpZ2h0RWRnZSA6IGJsb2NrTGVmdEVkZ2U7CiAgICAgICAgICAgICBpZiAoY3Vyci0+bGlu
ZUNhbkFjY29tbW9kYXRlRWxsaXBzaXMobHRyLCBibG9ja0VkZ2UsIGxpbmVCb3hFZGdlLCB3aWR0
aCkpCiAgICAgICAgICAgICAgICAgY3Vyci0+cGxhY2VFbGxpcHNpcyhlbGxpcHNpc1N0ciwgbHRy
LCBibG9ja0xlZnRFZGdlLCBibG9ja1JpZ2h0RWRnZSwgd2lkdGgpOwogICAgICAgICB9CkBAIC0y
NjYyLDcgKzI2NjIsNyBAQCBib29sIFJlbmRlckJsb2NrOjpwb3NpdGlvbk5ld0Zsb2F0T25MaW5l
CiAgICAgY29uc3QgRmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0aW5nT2JqZWN0U2V0ID0gbV9mbG9h
dGluZ09iamVjdHMtPnNldCgpOwogICAgIEFTU0VSVChmbG9hdGluZ09iamVjdFNldC5sYXN0KCkg
PT0gbmV3RmxvYXQpOwogCi0gICAgaW50IGZsb2F0TG9naWNhbFRvcCA9IGxvZ2ljYWxUb3BGb3JG
bG9hdChuZXdGbG9hdCk7CisgICAgTGF5b3V0VW5pdCBmbG9hdExvZ2ljYWxUb3AgPSBsb2dpY2Fs
VG9wRm9yRmxvYXQobmV3RmxvYXQpOwogICAgIGludCBwYWdpbmF0aW9uU3RydXQgPSBuZXdGbG9h
dC0+bV9wYWdpbmF0aW9uU3RydXQ7CiAKICAgICBpZiAoZmxvYXRMb2dpY2FsVG9wIC0gcGFnaW5h
dGlvblN0cnV0ICE9IGxvZ2ljYWxIZWlnaHQoKSArIGxpbmVJbmZvLmZsb2F0UGFnaW5hdGlvblN0
cnV0KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNp
b24gOTk5MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNv
bnRhaW5pbmdCbG9ja0xvZwogICAgIFJlbmRlckJveFJlZ2lvbkluZm8qIGJveEluZm8gPSBjYi0+
cmVuZGVyQm94UmVnaW9uSW5mbyhjb250YWluaW5nQmxvY2tSZWdpb24sIG9mZnNldEZyb21Mb2dp
Y2FsVG9wT2ZGaXJzdFBhZ2UgLSBsb2dpY2FsVG9wKCkpOwogICAgIGlmICghYm94SW5mbykKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gbWF4KDAsIHJlc3VsdCAtIChjYi0+bG9n
aWNhbFdpZHRoKCkgLSBib3hJbmZvLT5sb2dpY2FsV2lkdGgoKSkpOworICAgIHJldHVybiBtYXg8
TGF5b3V0VW5pdD4oMCwgcmVzdWx0IC0gKGNiLT5sb2dpY2FsV2lkdGgoKSAtIGJveEluZm8tPmxv
Z2ljYWxXaWR0aCgpKSk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94OjpwZXJwZW5kaWN1bGFy
Q29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodCgpIGNvbnN0CkBAIC0xNDI1LDggKzE0MjUsOCBA
QCBMYXlvdXRTaXplIFJlbmRlckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5lCiAgICAgICAgICAgICBM
YXlvdXRSZWN0IGNvbHVtblJlY3QoZnJhbWVSZWN0KCkpOwogICAgICAgICAgICAgYmxvY2stPmFk
anVzdFN0YXJ0RWRnZUZvcldyaXRpbmdNb2RlSW5jbHVkaW5nQ29sdW1ucyhjb2x1bW5SZWN0KTsK
ICAgICAgICAgICAgIG9mZnNldCArPSB0b1NpemUoY29sdW1uUmVjdC5sb2NhdGlvbigpKTsKLSAg
ICAgICAgICAgIEludFBvaW50IGNvbHVtblBvaW50ID0gYmxvY2stPmZsaXBGb3JXcml0aW5nTW9k
ZUluY2x1ZGluZ0NvbHVtbnMocG9pbnQgKyBvZmZzZXQpOwotICAgICAgICAgICAgb2Zmc2V0ID0g
dG9TaXplKGJsb2NrLT5mbGlwRm9yV3JpdGluZ01vZGVJbmNsdWRpbmdDb2x1bW5zKExheW91dFBv
aW50KG9mZnNldCkpKTsKKyAgICAgICAgICAgIExheW91dFBvaW50IGNvbHVtblBvaW50ID0gYmxv
Y2stPmZsaXBGb3JXcml0aW5nTW9kZUluY2x1ZGluZ0NvbHVtbnMocG9pbnQgKyBvZmZzZXQpOwor
ICAgICAgICAgICAgb2Zmc2V0ID0gdG9MYXlvdXRTaXplKGJsb2NrLT5mbGlwRm9yV3JpdGluZ01v
ZGVJbmNsdWRpbmdDb2x1bW5zKHRvTGF5b3V0UG9pbnQob2Zmc2V0KSkpOwogICAgICAgICAgICAg
by0+YWRqdXN0Rm9yQ29sdW1ucyhvZmZzZXQsIGNvbHVtblBvaW50KTsKICAgICAgICAgICAgIG9m
ZnNldCA9IGJsb2NrLT5mbGlwRm9yV3JpdGluZ01vZGUob2Zmc2V0KTsKICAgICAgICAgfSBlbHNl
CkBAIC0xNDg1LDcgKzE0ODUsNyBAQCB2b2lkIFJlbmRlckJveDo6cG9zaXRpb25MaW5lQm94KElu
bGluZUJvCiAgICAgICAgIGJveC0+cmVtb3ZlKCk7CiAgICAgICAgIGJveC0+ZGVzdHJveShyZW5k
ZXJBcmVuYSgpKTsKICAgICB9IGVsc2UgaWYgKGlzUmVwbGFjZWQoKSkgewotICAgICAgICBzZXRM
b2NhdGlvbihyb3VuZGVkTGF5b3V0UG9pbnQoRmxvYXRQb2ludChib3gtPngoKSwgYm94LT55KCkp
KSk7CisgICAgICAgIHNldExvY2F0aW9uKHJvdW5kZWRMYXlvdXRQb2ludChib3gtPnRvcExlZnQo
KSkpOwogICAgICAgICBBU1NFUlQoIW1faW5saW5lQm94V3JhcHBlcik7CiAgICAgICAgIG1faW5s
aW5lQm94V3JhcHBlciA9IGJveDsKICAgICB9CkBAIC0xODIzLDcgKzE4MjMsNyBAQCBib29sIFJl
bmRlckJveDo6c2l6ZXNUb0ludHJpbnNpY0xvZ2ljYWxXCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIFJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoUmVuZGVyQmxv
Y2sqIGNvbnRhaW5pbmdCbG9jaywgaW50IGNvbnRhaW5lcldpZHRoLCBpbnQgY2hpbGRXaWR0aCkK
K3ZvaWQgUmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyhSZW5kZXJCbG9j
ayogY29udGFpbmluZ0Jsb2NrLCBMYXlvdXRVbml0IGNvbnRhaW5lcldpZHRoLCBMYXlvdXRVbml0
IGNoaWxkV2lkdGgpCiB7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIGNvbnRhaW5pbmdCbG9ja1N0
eWxlID0gY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpOwogICAgIExlbmd0aCBtYXJnaW5TdGFydExl
bmd0aCA9IHN0eWxlKCktPm1hcmdpblN0YXJ0VXNpbmcoY29udGFpbmluZ0Jsb2NrU3R5bGUpOwpA
QCAtMjMyMiw3ICsyMzIyLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVCbG9ja0RpcmVjdGlv
bk1hcgogICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luQWZ0ZXJGb3JDaGlsZCh0aGlzLCBz
dHlsZSgpLT5tYXJnaW5BZnRlclVzaW5nKGNvbnRhaW5pbmdCbG9ja1N0eWxlKS5jYWxjTWluVmFs
dWUoY3cpKTsKIH0KIAotaW50IFJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRo
Rm9yUG9zaXRpb25lZChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmluZ0Jsb2Nr
LCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwKK0xheW91dFVuaXQgUmVuZGVyQm94Ojpjb250YWluaW5n
QmxvY2tMb2dpY2FsV2lkdGhGb3JQb3NpdGlvbmVkKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0
KiBjb250YWluaW5nQmxvY2ssIFJlbmRlclJlZ2lvbiogcmVnaW9uLAogICAgIExheW91dFVuaXQg
b2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSwgYm9vbCBjaGVja0ZvclBlcnBlbmRpY3Vs
YXJXcml0aW5nTW9kZSkgY29uc3QKIHsKICAgICBpZiAoY2hlY2tGb3JQZXJwZW5kaWN1bGFyV3Jp
dGluZ01vZGUgJiYgY29udGFpbmluZ0Jsb2NrLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpICE9
IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCkBAIC0yMzQ3LDcgKzIzNDcsNyBAQCBpbnQgUmVu
ZGVyQm94Ojpjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkCiAgICAgICAgICAgICAgICAgYm94SW5m
byA9IGNiLT5yZW5kZXJCb3hSZWdpb25JbmZvKGNvbnRhaW5pbmdCbG9ja1JlZ2lvbiwgb2Zmc2V0
RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSAtIGxvZ2ljYWxUb3AoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoYm94SW5mbykKLSAgICAgICAgICAgICAgICByZXR1cm4gbWF4KDAs
IHJlc3VsdCAtIChjYi0+bG9naWNhbFdpZHRoKCkgLSBib3hJbmZvLT5sb2dpY2FsV2lkdGgoKSkp
OworICAgICAgICAgICAgICAgIHJldHVybiBtYXg8TGF5b3V0VW5pdD4oMCwgcmVzdWx0IC0gKGNi
LT5sb2dpY2FsV2lkdGgoKSAtIGJveEluZm8tPmxvZ2ljYWxXaWR0aCgpKSk7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0yMzc1LDcgKzIzNzUsNyBAQCBpbnQg
UmVuZGVyQm94Ojpjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkCiAgICAgcmV0dXJuIG1heDxMYXlv
dXRVbml0PigwLCBmcm9tUmlnaHQgLSBmcm9tTGVmdCk7CiB9CiAKLWludCBSZW5kZXJCb3g6OmNv
bnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRGb3JQb3NpdGlvbmVkKGNvbnN0IFJlbmRlckJveE1v
ZGVsT2JqZWN0KiBjb250YWluaW5nQmxvY2ssIGJvb2wgY2hlY2tGb3JQZXJwZW5kaWN1bGFyV3Jp
dGluZ01vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrTG9n
aWNhbEhlaWdodEZvclBvc2l0aW9uZWQoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRh
aW5pbmdCbG9jaywgYm9vbCBjaGVja0ZvclBlcnBlbmRpY3VsYXJXcml0aW5nTW9kZSkgY29uc3QK
IHsKICAgICBpZiAoY2hlY2tGb3JQZXJwZW5kaWN1bGFyV3JpdGluZ01vZGUgJiYgY29udGFpbmlu
Z0Jsb2NrLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpICE9IGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkpCiAgICAgICAgIHJldHVybiBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JQb3Np
dGlvbmVkKGNvbnRhaW5pbmdCbG9jaywgMCwgMCwgZmFsc2UpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaAkocmV2aXNpb24gOTk5MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNCwxMCArMjM0LDEwIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgY29sbGFwc2VkTWFyZ2luQmVmb3JlKCkg
Y29uc3QgeyByZXR1cm4gbWFyZ2luQmVmb3JlKCk7IH0KICAgICB2aXJ0dWFsIExheW91dFVuaXQg
Y29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBtYXJnaW5BZnRlcigpOyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBh
YnNvbHV0ZVJlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAgICAgCi0gICAgSW50UmVj
dCByZWZsZWN0aW9uQm94KCkgY29uc3Q7CisgICAgTGF5b3V0UmVjdCByZWZsZWN0aW9uQm94KCkg
Y29uc3Q7CiAgICAgaW50IHJlZmxlY3Rpb25PZmZzZXQoKSBjb25zdDsKICAgICAvLyBHaXZlbiBh
IHJlY3QgaW4gdGhlIG9iamVjdCdzIGNvb3JkaW5hdGUgc3BhY2UsIHJldHVybnMgdGhlIGNvcnJl
c3BvbmRpbmcgcmVjdCBpbiB0aGUgcmVmbGVjdGlvbi4KICAgICBMYXlvdXRSZWN0IHJlZmxlY3Rl
ZFJlY3QoY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OwpAQCAtMjY4LDcgKzI2OCw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFJlc29sdmUgYXV0byBtYXJnaW5zIGluIHRoZSBpbmxpbmUgZGlyZWN0aW9u
IG9mIHRoZSBjb250YWluaW5nIGJsb2NrIHNvIHRoYXQgb2JqZWN0cyBjYW4gYmUgcHVzaGVkIHRv
IHRoZSBzdGFydCwgbWlkZGxlIG9yIGVuZAogICAgIC8vIG9mIHRoZSBjb250YWluaW5nIGJsb2Nr
LgotICAgIHZvaWQgY29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoUmVuZGVyQmxvY2sqIGNv
bnRhaW5pbmdCbG9jaywgaW50IGNvbnRhaW5lcldpZHRoLCBpbnQgY2hpbGRXaWR0aCk7CisgICAg
dm9pZCBjb21wdXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyhSZW5kZXJCbG9jayogY29udGFpbmlu
Z0Jsb2NrLCBMYXlvdXRVbml0IGNvbnRhaW5lcldpZHRoLCBMYXlvdXRVbml0IGNoaWxkV2lkdGgp
OwogCiAgICAgLy8gVXNlZCB0byByZXNvbHZlIG1hcmdpbnMgaW4gdGhlIGNvbnRhaW5pbmcgYmxv
Y2sncyBibG9jay1mbG93IGRpcmVjdGlvbi4KICAgICB2b2lkIGNvbXB1dGVCbG9ja0RpcmVjdGlv
bk1hcmdpbnMoUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jayk7CkBAIC0zNzcsNyArMzc3LDcg
QEAgcHVibGljOgogICAgIC8vIHRoYXQganVzdCB1cGRhdGVzIHRoZSBvYmplY3QncyBwb3NpdGlv
bi4gSWYgdGhlIHNpemUgZG9lcyBjaGFuZ2UsIHRoZSBvYmplY3QgcmVtYWlucyBkaXJ0eS4KICAg
ICBib29sIHRyeUxheW91dERvaW5nUG9zaXRpb25lZE1vdmVtZW50T25seSgpCiAgICAgewotICAg
ICAgICBpbnQgb2xkV2lkdGggPSB3aWR0aCgpOworICAgICAgICBMYXlvdXRVbml0IG9sZFdpZHRo
ID0gd2lkdGgoKTsKICAgICAgICAgY29tcHV0ZUxvZ2ljYWxXaWR0aCgpOwogICAgICAgICAvLyBJ
ZiB3ZSBzaHJpbmsgdG8gZml0IG91ciB3aWR0aCBtYXkgaGF2ZSBjaGFuZ2VkLCBzbyB3ZSBzdGls
bCBuZWVkIGZ1bGwgbGF5b3V0LgogICAgICAgICBpZiAob2xkV2lkdGggIT0gd2lkdGgoKSkKQEAg
LTQ2OCw5ICs0NjgsOSBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBkaWQg
YSBmdWxsIHJlcGFpbnQKICAgICBib29sIHJlcGFpbnRMYXllclJlY3RzRm9ySW1hZ2UoV3JhcHBl
ZEltYWdlUHRyIGltYWdlLCBjb25zdCBGaWxsTGF5ZXIqIGxheWVycywgYm9vbCBkcmF3aW5nQmFj
a2dyb3VuZCk7CiAgICAKLSAgICBpbnQgY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yUG9z
aXRpb25lZChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGFpbmluZ0Jsb2NrLCBSZW5k
ZXJSZWdpb24qID0gMCwKKyAgICBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0
aEZvclBvc2l0aW9uZWQoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5pbmdCbG9j
aywgUmVuZGVyUmVnaW9uKiA9IDAsCiAgICAgICAgIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2lj
YWxUb3BPZkZpcnN0UGFnZSA9IDAsIGJvb2wgY2hlY2tGb3JQZXJwZW5kaWN1bGFyV3JpdGluZ01v
ZGUgPSB0cnVlKSBjb25zdDsKLSAgICBpbnQgY29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodEZv
clBvc2l0aW9uZWQoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5pbmdCbG9jaywg
Ym9vbCBjaGVja0ZvclBlcnBlbmRpY3VsYXJXcml0aW5nTW9kZSA9IHRydWUpIGNvbnN0OworICAg
IExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodEZvclBvc2l0aW9uZWQoY29u
c3QgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRhaW5pbmdCbG9jaywgYm9vbCBjaGVja0ZvclBl
cnBlbmRpY3VsYXJXcml0aW5nTW9kZSA9IHRydWUpIGNvbnN0OwogCiAgICAgdm9pZCBjb21wdXRl
UG9zaXRpb25lZExvZ2ljYWxIZWlnaHQoKTsKICAgICB2b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9n
aWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxvZ2ljYWxXaWR0aCwgY29uc3QgUmVuZGVyQm94TW9kZWxP
YmplY3QqIGNvbnRhaW5lckJsb2NrLCBUZXh0RGlyZWN0aW9uIGNvbnRhaW5lckRpcmVjdGlvbiwK
</data>

          </attachment>
      

    </bug>

</bugzilla>