<?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>86970</bug_id>
          
          <creation_ts>2012-05-20 13:30:41 -0700</creation_ts>
          <short_desc>Move padding/margin/offset writing mode logic from RenderStyle to LengthBox</short_desc>
          <delta_ts>2012-05-21 16:42:14 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>628618</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-05-20 13:30:41 -0700</bug_when>
    <thetext>RenderStyle currently has a lot of logic for translating before/after/start/end to top/bottom/left/right for paddings, margins, borders and offsets. Move this logic to LengthBox and make paddings/margins/offsets use the same implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628619</commentid>
    <comment_count>1</comment_count>
      <attachid>142915</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-05-20 13:38:29 -0700</bug_when>
    <thetext>Created attachment 142915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629666</commentid>
    <comment_count>2</comment_count>
      <attachid>142915</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-21 16:06:25 -0700</bug_when>
    <thetext>Comment on attachment 142915
Patch

Again, same possible perf considerations, but another huge cleanliness win.  We&apos;ll see!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629710</commentid>
    <comment_count>3</comment_count>
      <attachid>142915</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-21 16:42:10 -0700</bug_when>
    <thetext>Comment on attachment 142915
Patch

Clearing flags on attachment: 142915

Committed r117832: &lt;http://trac.webkit.org/changeset/117832&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629711</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-21 16:42:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142915</attachid>
            <date>2012-05-20 13:38:29 -0700</date>
            <delta_ts>2012-05-21 16:42:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86970-20120520133828.patch</filename>
            <type>text/plain</type>
            <size>20176</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNzcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA1LTIwICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIHBhZGRpbmcvbWFyZ2lu
L29mZnNldCB3cml0aW5nIG1vZGUgbG9naWMgZnJvbSBSZW5kZXJTdHlsZSB0byBMZW5ndGhCb3gK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2OTcwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB3cml0
aW5nIG1vZGUgYW5kIGJpZGkgbG9naWMgZm9yIHBhZGRpbmdzLCBtYXJnaW5zIGFuZCBvZmZzZXRz
IGZyb20KKyAgICAgICAgUmVuZGVyU3R5bGUgdG8gTGVuZ3RoQm94LiBUaGlzIHdheSB0aGUgc2Ft
ZSBsb2dpYyBjYW4gYmUgdXNlZCBmb3IgYWxsCisgICAgICAgIHRocmVlIHJlbW92aW5nIHVubmVj
ZXNzYXJ5IGNvZGUgZHVwbGljYXRpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBjaGFu
Z2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBsYXRmb3JtL0xlbmd0aEJveC5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0
aEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisKIDIwMTItMDUtMjAgIFBoaWxp
cCBSb2dlcnMgIDxwZHJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBGaXggaGl0IHRlc3Rpbmcgb24g
bm9uLXNjYWxpbmcgc3Ryb2tlcwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEx
NzcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xMTEzLDYgKzExMTMsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vS2ls
bFJpbmdOb25lLmNwcAogICAgIHBsYXRmb3JtL0xhbmd1YWdlLmNwcAogICAgIHBsYXRmb3JtL0xl
bmd0aC5jcHAKKyAgICBwbGF0Zm9ybS9MZW5ndGhCb3guY3BwCiAgICAgcGxhdGZvcm0vTGlua0hh
c2guY3BwCiAgICAgcGxhdGZvcm0vTG9nZ2luZy5jcHAKICAgICBwbGF0Zm9ybS9NZW1vcnlVc2Fn
ZVN1cHBvcnQuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9u
IDExNzcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMzODMsNiArMzM4Myw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vS1VSTFdURlVSTEltcGwuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGFuZ3VhZ2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVu
Z3RoLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmggXApJbmRleDogU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCShyZXZpc2lvbiAxMTc3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTQzLDYgKzExNDMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0
Zm9ybS9LVVJMLmNwcCBcCiAgICAgcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwIFwKICAgICBwbGF0Zm9y
bS9MZW5ndGguY3BwIFwKKyAgICBwbGF0Zm9ybS9MZW5ndGhCb3guY3BwIFwKICAgICBwbGF0Zm9y
bS90ZXh0L0xpbmVFbmRpbmcuY3BwIFwKICAgICBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRh
YmFzZS5jcHAgXAogICAgIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcCBc
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMTc3MDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTMxNTksNiArMzE1OSw3IEBACiAgICAg
ICAgICAgICAncGxhdGZvcm0vS2lsbFJpbmdOb25lLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vTGFuZ3VhZ2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9MZW5ndGguY3BwJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9MZW5ndGhCb3guY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9MaW5rSGFzaC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0xvZ2dpbmcuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwJywKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAx
MTc3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjc4NDYsNiArMjc4NDYsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cTGVuZ3RoQm94LmNwcCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZv
cm1cTGVuZ3RoQm94LmgiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTE3NzA5
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yOTksNiArMjk5LDcgQEAKIAkJMTQ0RkNGRTAxNEVGMjUwOTAwMEQx
N0EzIC8qIEZyYWN0aW9uYWxMYXlvdXRSZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NEZDRkRFMTRFRjI1MDkwMDBEMTdBMyAvKiBGcmFjdGlv
bmFsTGF5b3V0UmVjdC5jcHAgKi87IH07CiAJCTE0NEZDRkUxMTRFRjI1MDkwMDBEMTdBMyAvKiBG
cmFjdGlvbmFsTGF5b3V0UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQ0RkNGREYxNEVGMjUwOTAwMEQxN0EzIC8qIEZyYWN0aW9uYWxMYXlvdXRS
ZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MTQ2NEUwNkMxMzVFQzEwNjAwRkRCMDBBIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NjRFMDZCMTM1RUMxMDYw
MEZEQjAwQSAvKiBKU01lZGlhTGlzdEN1c3RvbS5jcHAgKi87IH07CisJCTE0NkNDMTE1MTU2OTg4
RTQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTQ2Q0MxMTMxNTY5ODhCRDAwMTA5RTM3IC8qIExlbmd0aEJveC5j
cHAgKi87IH07CiAJCTE0NzdFNzc2MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3N0U3NzQwQkY0
MTM0QTAwMTUyODcyIC8qIFBhZ2VDYWNoZS5jcHAgKi87IH07CiAJCTE0NzdFNzc3MEJGNDEzNEEw
MDE1Mjg3MiAvKiBQYWdlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0NzdFNzc1MEJGNDEzNEEwMDE1Mjg3MiAvKiBQYWdlQ2FjaGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDc5RkFFRDEw
OUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDc5RkFFNTEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVy
UnVieS5jcHAgKi87IH07CkBAIC03MTg0LDYgKzcxODUsNyBAQAogCQkxNDRGQ0ZERTE0RUYyNTA5
MDAwRDE3QTMgLyogRnJhY3Rpb25hbExheW91dFJlY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRnJhY3Rpb25hbExheW91dFJlY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxNDRGQ0ZERjE0RUYyNTA5MDAwRDE3QTMgLyogRnJhY3Rpb25hbExh
eW91dFJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhY3Rpb25hbExh
eW91dFJlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ2NEUwNkIxMzVFQzEw
NjAwRkRCMDBBIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFMaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMTQ2Q0MxMTMxNTY5ODhCRDAwMTA5RTM3IC8qIExlbmd0aEJveC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZW5ndGhCb3guY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxNDc3RTc3NDBCRjQxMzRBMDAxNTI4NzIgLyogUGFnZUNh
Y2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlQ2FjaGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDc3RTc3NTBCRjQxMzRBMDAxNTI4
NzIgLyogUGFnZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdl
Q2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3OUZBRTUxMDlBRTM3NTAw
REVENjU1IC8qIFJlbmRlclJ1YnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVuZGVyUnVieS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDMy
OCw2ICsyMDMzMCw3IEBACiAJCQkJODVFQzlBRjkwQTcxQTJDNjAwRUVFQUVEIC8qIExhbmd1YWdl
LmggKi8sCiAJCQkJQkNFNjVCRTgwRUFDREYxNjAwN0U0NTMzIC8qIExlbmd0aC5jcHAgKi8sCiAJ
CQkJQkNFNjVCRTkwRUFDREYxNjAwN0U0NTMzIC8qIExlbmd0aC5oICovLAorCQkJCTE0NkNDMTEz
MTU2OTg4QkQwMDEwOUUzNyAvKiBMZW5ndGhCb3guY3BwICovLAogCQkJCUJDRkY2NDhGMEVBRDE1
QzIwMEMxRDZGNyAvKiBMZW5ndGhCb3guaCAqLywKIAkJCQlCQ0ZGNjQ5MDBFQUQxNUMyMDBDMUQ2
RjcgLyogTGVuZ3RoU2l6ZS5oICovLAogCQkJCUE3QUQyRjg1MEVDODlEMDcwMDhBQjAwMiAvKiBM
aW5rSGFzaC5jcHAgKi8sCkBAIC0yNzkzNyw2ICsyNzk0MCw3IEBACiAJCQkJMjlBMzA5QjAxNTYx
Q0FDNDAwQkJEOEU1IC8qIFZpc2l0ZWRMaW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREIw
NTJERjE1NjFBNDJDMDBCNTAwRDYgLyogQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMzcxOTQxOTYxNTY2QjM3MjAwQTI3NkQ4IC8qIFdlYkNvcmVOU0NlbGxFeHRy
YXMubSBpbiBTb3VyY2VzICovLAorCQkJCTE0NkNDMTE1MTU2OTg4RTQwMDEwOUUzNyAvKiBMZW5n
dGhCb3guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZW5ndGhCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aEJveC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhC
b3guY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChj
KSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJMZW5ndGhCb3guaCIKKworI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworTGVuZ3RoIExlbmd0aEJveDo6bG9naWNhbExlZnQoY29uc3Qg
UmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAoreworICAgIHJldHVybiBzdHlsZS0+aXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IG1fbGVmdCA6IG1fdG9wOworfQorCitMZW5ndGggTGVuZ3RoQm94
Ojpsb2dpY2FsUmlnaHQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAoreworICAgIHJl
dHVybiBzdHlsZS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1fcmlnaHQgOiBtX2JvdHRv
bTsKK30KKworTGVuZ3RoIExlbmd0aEJveDo6YmVmb3JlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHls
ZSkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKHN0eWxlLT53cml0aW5nTW9kZSgpKSB7CisgICAgY2Fz
ZSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlOgorICAgICAgICByZXR1cm4gbV90b3A7CisgICAgY2Fz
ZSBCb3R0b21Ub1RvcFdyaXRpbmdNb2RlOgorICAgICAgICByZXR1cm4gbV9ib3R0b207CisgICAg
Y2FzZSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlOgorICAgICAgICByZXR1cm4gbV9sZWZ0OworICAg
IGNhc2UgUmlnaHRUb0xlZnRXcml0aW5nTW9kZToKKyAgICAgICAgcmV0dXJuIG1fcmlnaHQ7Cisg
ICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBtX3RvcDsKK30KKwor
TGVuZ3RoIExlbmd0aEJveDo6YWZ0ZXIoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAor
eworICAgIHN3aXRjaCAoc3R5bGUtPndyaXRpbmdNb2RlKCkpIHsKKyAgICBjYXNlIFRvcFRvQm90
dG9tV3JpdGluZ01vZGU6CisgICAgICAgIHJldHVybiBtX2JvdHRvbTsKKyAgICBjYXNlIEJvdHRv
bVRvVG9wV3JpdGluZ01vZGU6CisgICAgICAgIHJldHVybiBtX3RvcDsKKyAgICBjYXNlIExlZnRU
b1JpZ2h0V3JpdGluZ01vZGU6CisgICAgICAgIHJldHVybiBtX3JpZ2h0OworICAgIGNhc2UgUmln
aHRUb0xlZnRXcml0aW5nTW9kZToKKyAgICAgICAgcmV0dXJuIG1fbGVmdDsKKyAgICB9CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG1fYm90dG9tOworfQorCitMZW5ndGgg
TGVuZ3RoQm94OjpzdGFydChjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0Cit7CisgICAg
aWYgKHN0eWxlLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICByZXR1cm4gc3R5
bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IG1fbGVmdCA6IG1fcmlnaHQ7CisgICAgcmV0
dXJuIHN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBtX3RvcCA6IG1fYm90dG9tOwor
fQorCitMZW5ndGggTGVuZ3RoQm94OjplbmQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25z
dAoreworICAgIGlmIChzdHlsZS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAg
cmV0dXJuIHN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBtX3JpZ2h0IDogbV9sZWZ0
OworICAgIHJldHVybiBzdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbV9ib3R0b20g
OiBtX3RvcDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGVuZ3RoQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGVuZ3RoQm94LmgJKHJldmlzaW9uIDExNzcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aEJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAg
ICBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAgICBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAg
IENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAog
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsNiArMjYsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIFJlbmRlclN0eWxlOworCiBzdHJ1Y3QgTGVuZ3RoQm94IHsKICAgICBMZW5ndGhC
b3goKQogICAgIHsKQEAgLTY3LDYgKzcwLDE0IEBAIHN0cnVjdCBMZW5ndGhCb3ggewogICAgIExl
bmd0aCB0b3AoKSBjb25zdCB7IHJldHVybiBtX3RvcDsgfQogICAgIExlbmd0aCBib3R0b20oKSBj
b25zdCB7IHJldHVybiBtX2JvdHRvbTsgfQogCisgICAgTGVuZ3RoIGxvZ2ljYWxMZWZ0KGNvbnN0
IFJlbmRlclN0eWxlKikgY29uc3Q7CisgICAgTGVuZ3RoIGxvZ2ljYWxSaWdodChjb25zdCBSZW5k
ZXJTdHlsZSopIGNvbnN0OworCisgICAgTGVuZ3RoIGJlZm9yZShjb25zdCBSZW5kZXJTdHlsZSop
IGNvbnN0OworICAgIExlbmd0aCBhZnRlcihjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OworICAg
IExlbmd0aCBzdGFydChjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OworICAgIExlbmd0aCBlbmQo
Y29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdDsKKwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBM
ZW5ndGhCb3gmIG8pIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9sZWZ0ID09IG8ubV9s
ZWZ0ICYmIG1fcmlnaHQgPT0gby5tX3JpZ2h0ICYmIG1fdG9wID09IG8ubV90b3AgJiYgbV9ib3R0
b20gPT0gby5tX2JvdHRvbTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gMTE3NzA5KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxMiw5
OCArMTQxMiw2IEBAIHVuc2lnbmVkIHNob3J0IFJlbmRlclN0eWxlOjpib3JkZXJFbmRXaWQKICAg
ICAgICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGJvcmRlclJpZ2h0V2lkdGgo
KSA6IGJvcmRlckxlZnRXaWR0aCgpOwogICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCkgPyBib3JkZXJCb3R0b21XaWR0aCgpIDogYm9yZGVyVG9wV2lkdGgoKTsKIH0KLSAgICAKLUxl
bmd0aCBSZW5kZXJTdHlsZTo6bWFyZ2luQmVmb3JlKCkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKHdy
aXRpbmdNb2RlKCkpIHsKLSAgICBjYXNlIFRvcFRvQm90dG9tV3JpdGluZ01vZGU6Ci0gICAgICAg
IHJldHVybiBtYXJnaW5Ub3AoKTsKLSAgICBjYXNlIEJvdHRvbVRvVG9wV3JpdGluZ01vZGU6Ci0g
ICAgICAgIHJldHVybiBtYXJnaW5Cb3R0b20oKTsKLSAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGlu
Z01vZGU6Ci0gICAgICAgIHJldHVybiBtYXJnaW5MZWZ0KCk7Ci0gICAgY2FzZSBSaWdodFRvTGVm
dFdyaXRpbmdNb2RlOgotICAgICAgICByZXR1cm4gbWFyZ2luUmlnaHQoKTsKLSAgICB9Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG1hcmdpblRvcCgpOwotfQotCi1MZW5n
dGggUmVuZGVyU3R5bGU6Om1hcmdpbkFmdGVyKCkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKHdyaXRp
bmdNb2RlKCkpIHsKLSAgICBjYXNlIFRvcFRvQm90dG9tV3JpdGluZ01vZGU6Ci0gICAgICAgIHJl
dHVybiBtYXJnaW5Cb3R0b20oKTsKLSAgICBjYXNlIEJvdHRvbVRvVG9wV3JpdGluZ01vZGU6Ci0g
ICAgICAgIHJldHVybiBtYXJnaW5Ub3AoKTsKLSAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGluZ01v
ZGU6Ci0gICAgICAgIHJldHVybiBtYXJnaW5SaWdodCgpOwotICAgIGNhc2UgUmlnaHRUb0xlZnRX
cml0aW5nTW9kZToKLSAgICAgICAgcmV0dXJuIG1hcmdpbkxlZnQoKTsKLSAgICB9Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG1hcmdpbkJvdHRvbSgpOwotfQotCi1MZW5n
dGggUmVuZGVyU3R5bGU6Om1hcmdpbkJlZm9yZVVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhl
clN0eWxlKSBjb25zdAotewotICAgIHN3aXRjaCAob3RoZXJTdHlsZS0+d3JpdGluZ01vZGUoKSkg
ewotICAgIGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZToKLSAgICAgICAgcmV0dXJuIG1hcmdp
blRvcCgpOwotICAgIGNhc2UgQm90dG9tVG9Ub3BXcml0aW5nTW9kZToKLSAgICAgICAgcmV0dXJu
IG1hcmdpbkJvdHRvbSgpOwotICAgIGNhc2UgTGVmdFRvUmlnaHRXcml0aW5nTW9kZToKLSAgICAg
ICAgcmV0dXJuIG1hcmdpbkxlZnQoKTsKLSAgICBjYXNlIFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGU6
Ci0gICAgICAgIHJldHVybiBtYXJnaW5SaWdodCgpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gbWFyZ2luVG9wKCk7Ci19Ci0KLUxlbmd0aCBSZW5kZXJTdHls
ZTo6bWFyZ2luQWZ0ZXJVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QK
LXsKLSAgICBzd2l0Y2ggKG90aGVyU3R5bGUtPndyaXRpbmdNb2RlKCkpIHsKLSAgICBjYXNlIFRv
cFRvQm90dG9tV3JpdGluZ01vZGU6Ci0gICAgICAgIHJldHVybiBtYXJnaW5Cb3R0b20oKTsKLSAg
ICBjYXNlIEJvdHRvbVRvVG9wV3JpdGluZ01vZGU6Ci0gICAgICAgIHJldHVybiBtYXJnaW5Ub3Ao
KTsKLSAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGluZ01vZGU6Ci0gICAgICAgIHJldHVybiBtYXJn
aW5SaWdodCgpOwotICAgIGNhc2UgUmlnaHRUb0xlZnRXcml0aW5nTW9kZToKLSAgICAgICAgcmV0
dXJuIG1hcmdpbkxlZnQoKTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIG1hcmdpbkJvdHRvbSgpOwotfQotCi1MZW5ndGggUmVuZGVyU3R5bGU6Om1hcmdpblN0
YXJ0KCkgY29uc3QKLXsKLSAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAg
ICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IG1hcmdpbkxlZnQoKSA6IG1hcmdp
blJpZ2h0KCk7Ci0gICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IG1hcmdpblRv
cCgpIDogbWFyZ2luQm90dG9tKCk7Ci19Ci0KLUxlbmd0aCBSZW5kZXJTdHlsZTo6bWFyZ2luRW5k
KCkgY29uc3QKLXsKLSAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAg
cmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IG1hcmdpblJpZ2h0KCkgOiBtYXJnaW5M
ZWZ0KCk7Ci0gICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IG1hcmdpbkJvdHRv
bSgpIDogbWFyZ2luVG9wKCk7Ci19Ci0gICAgCi1MZW5ndGggUmVuZGVyU3R5bGU6Om1hcmdpblN0
YXJ0VXNpbmcoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0Ci17Ci0gICAgaWYg
KG90aGVyU3R5bGUtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiBv
dGhlclN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBtYXJnaW5MZWZ0KCkgOiBtYXJn
aW5SaWdodCgpOwotICAgIHJldHVybiBvdGhlclN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCkgPyBtYXJnaW5Ub3AoKSA6IG1hcmdpbkJvdHRvbSgpOwotfQotCi1MZW5ndGggUmVuZGVyU3R5
bGU6Om1hcmdpbkVuZFVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdAot
ewotICAgIGlmIChvdGhlclN0eWxlLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAg
ICByZXR1cm4gb3RoZXJTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbWFyZ2luUmln
aHQoKSA6IG1hcmdpbkxlZnQoKTsKLSAgICByZXR1cm4gb3RoZXJTdHlsZS0+aXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpID8gbWFyZ2luQm90dG9tKCkgOiBtYXJnaW5Ub3AoKTsKLX0KIAogdm9pZCBS
ZW5kZXJTdHlsZTo6c2V0TWFyZ2luU3RhcnQoTGVuZ3RoIG1hcmdpbikKIHsKQEAgLTE1MzUsNTIg
KzE0NDMsNiBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRNYXJnaW5FbmQoTGVuZ3RoIG1hCiAgICAg
fQogfQogCi1MZW5ndGggUmVuZGVyU3R5bGU6OnBhZGRpbmdCZWZvcmUoKSBjb25zdAotewotICAg
IHN3aXRjaCAod3JpdGluZ01vZGUoKSkgewotICAgIGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5nTW9k
ZToKLSAgICAgICAgcmV0dXJuIHBhZGRpbmdUb3AoKTsKLSAgICBjYXNlIEJvdHRvbVRvVG9wV3Jp
dGluZ01vZGU6Ci0gICAgICAgIHJldHVybiBwYWRkaW5nQm90dG9tKCk7Ci0gICAgY2FzZSBMZWZ0
VG9SaWdodFdyaXRpbmdNb2RlOgotICAgICAgICByZXR1cm4gcGFkZGluZ0xlZnQoKTsKLSAgICBj
YXNlIFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGU6Ci0gICAgICAgIHJldHVybiBwYWRkaW5nUmlnaHQo
KTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHBhZGRpbmdU
b3AoKTsKLX0KLQotTGVuZ3RoIFJlbmRlclN0eWxlOjpwYWRkaW5nQWZ0ZXIoKSBjb25zdAotewot
ICAgIHN3aXRjaCAod3JpdGluZ01vZGUoKSkgewotICAgIGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5n
TW9kZToKLSAgICAgICAgcmV0dXJuIHBhZGRpbmdCb3R0b20oKTsKLSAgICBjYXNlIEJvdHRvbVRv
VG9wV3JpdGluZ01vZGU6Ci0gICAgICAgIHJldHVybiBwYWRkaW5nVG9wKCk7Ci0gICAgY2FzZSBM
ZWZ0VG9SaWdodFdyaXRpbmdNb2RlOgotICAgICAgICByZXR1cm4gcGFkZGluZ1JpZ2h0KCk7Ci0g
ICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlOgotICAgICAgICByZXR1cm4gcGFkZGluZ0xl
ZnQoKTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHBhZGRp
bmdCb3R0b20oKTsKLX0KLQotTGVuZ3RoIFJlbmRlclN0eWxlOjpwYWRkaW5nU3RhcnQoKSBjb25z
dAotewotICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICByZXR1cm4g
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gcGFkZGluZ0xlZnQoKSA6IHBhZGRpbmdSaWdodCgp
OwotICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBwYWRkaW5nVG9wKCkgOiBw
YWRkaW5nQm90dG9tKCk7Ci19Ci0KLUxlbmd0aCBSZW5kZXJTdHlsZTo6cGFkZGluZ0VuZCgpIGNv
bnN0Ci17Ci0gICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVy
biBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBwYWRkaW5nUmlnaHQoKSA6IHBhZGRpbmdMZWZ0
KCk7Ci0gICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IHBhZGRpbmdCb3R0b20o
KSA6IHBhZGRpbmdUb3AoKTsKLX0KLQogVGV4dEVtcGhhc2lzTWFyayBSZW5kZXJTdHlsZTo6dGV4
dEVtcGhhc2lzTWFyaygpIGNvbnN0CiB7CiAgICAgVGV4dEVtcGhhc2lzTWFyayBtYXJrID0gc3Rh
dGljX2Nhc3Q8VGV4dEVtcGhhc2lzTWFyaz4ocmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNp
c01hcmspOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgJKHJldmlzaW9uIDExNzcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTgsMTAgKzQ5OCwxMCBAQCBwdWJs
aWM6CiAgICAgTGVuZ3RoIGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQu
Ym90dG9tKCk7IH0KIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgcG9zaXRpb25lZCBvYmplY3QgZWRn
ZXMgdGhhdCB0YWtlIGludG8gYWNjb3VudCB3cml0aW5nIG1vZGUuCi0gICAgTGVuZ3RoIGxvZ2lj
YWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGxlZnQo
KSA6IHRvcCgpOyB9Ci0gICAgTGVuZ3RoIGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByaWdodCgpIDogYm90dG9tKCk7IH0KLSAgICBMZW5n
dGggbG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyAoaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IGJvdHRvbSgpIDogdG9wKCkpIDogKGlz
RmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyByaWdodCgpIDogbGVmdCgpKTsgfQotICAgIExl
bmd0aCBsb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSA/IChpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gdG9wKCkgOiBib3R0b20oKSkg
OiAoaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IGxlZnQoKSA6IHJpZ2h0KCkpOyB9Cisg
ICAgTGVuZ3RoIGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5s
b2dpY2FsTGVmdCh0aGlzKTsgfQorICAgIExlbmd0aCBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJl
dHVybiBzdXJyb3VuZC0+b2Zmc2V0LmxvZ2ljYWxSaWdodCh0aGlzKTsgfQorICAgIExlbmd0aCBs
b2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5iZWZvcmUodGhpcyk7
IH0KKyAgICBMZW5ndGggbG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5v
ZmZzZXQuYWZ0ZXIodGhpcyk7IH0KIAogICAgIC8vIFdoZXRoZXIgb3Igbm90IGEgcG9zaXRpb25l
ZCBlbGVtZW50IHJlcXVpcmVzIG5vcm1hbCBmbG93IHgveSB0byBiZSBjb21wdXRlZAogICAgIC8v
IHRvIGRldGVybWluZSBpdHMgcG9zaXRpb24uCkBAIC03MzgsMjQgKzczOCwyNCBAQCBwdWJsaWM6
CiAgICAgTGVuZ3RoIG1hcmdpbkJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJn
aW4uYm90dG9tKCk7IH0KICAgICBMZW5ndGggbWFyZ2luTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN1
cnJvdW5kLT5tYXJnaW4ubGVmdCgpOyB9CiAgICAgTGVuZ3RoIG1hcmdpblJpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5yaWdodCgpOyB9Ci0gICAgTGVuZ3RoIG1hcmdpbkJl
Zm9yZSgpIGNvbnN0OwotICAgIExlbmd0aCBtYXJnaW5BZnRlcigpIGNvbnN0OwotICAgIExlbmd0
aCBtYXJnaW5TdGFydCgpIGNvbnN0OwotICAgIExlbmd0aCBtYXJnaW5FbmQoKSBjb25zdDsKLSAg
ICBMZW5ndGggbWFyZ2luU3RhcnRVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkg
Y29uc3Q7Ci0gICAgTGVuZ3RoIG1hcmdpbkVuZFVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhl
clN0eWxlKSBjb25zdDsKLSAgICBMZW5ndGggbWFyZ2luQmVmb3JlVXNpbmcoY29uc3QgUmVuZGVy
U3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0OwotICAgIExlbmd0aCBtYXJnaW5BZnRlclVzaW5nKGNv
bnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdDsKKyAgICBMZW5ndGggbWFyZ2luQmVm
b3JlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5iZWZvcmUodGhpcyk7IH0KKyAg
ICBMZW5ndGggbWFyZ2luQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmFm
dGVyKHRoaXMpOyB9CisgICAgTGVuZ3RoIG1hcmdpblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPm1hcmdpbi5zdGFydCh0aGlzKTsgfQorICAgIExlbmd0aCBtYXJnaW5FbmQoKSBjb25z
dCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmVuZCh0aGlzKTsgfQorICAgIExlbmd0aCBtYXJn
aW5TdGFydFVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVy
biBzdXJyb3VuZC0+bWFyZ2luLnN0YXJ0KG90aGVyU3R5bGUpOyB9CisgICAgTGVuZ3RoIG1hcmdp
bkVuZFVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBz
dXJyb3VuZC0+bWFyZ2luLmVuZChvdGhlclN0eWxlKTsgfQorICAgIExlbmd0aCBtYXJnaW5CZWZv
cmVVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPm1hcmdpbi5iZWZvcmUob3RoZXJTdHlsZSk7IH0KKyAgICBMZW5ndGggbWFyZ2luQWZ0
ZXJVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPm1hcmdpbi5hZnRlcihvdGhlclN0eWxlKTsgfQogCiAgICAgTGVuZ3RoQm94IHBhZGRp
bmdCb3goKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZzsgfQogICAgIExlbmd0aCBw
YWRkaW5nVG9wKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcudG9wKCk7IH0KICAg
ICBMZW5ndGggcGFkZGluZ0JvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5n
LmJvdHRvbSgpOyB9CiAgICAgTGVuZ3RoIHBhZGRpbmdMZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPnBhZGRpbmcubGVmdCgpOyB9CiAgICAgTGVuZ3RoIHBhZGRpbmdSaWdodCgpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nLnJpZ2h0KCk7IH0KLSAgICBMZW5ndGggcGFkZGlu
Z0JlZm9yZSgpIGNvbnN0OwotICAgIExlbmd0aCBwYWRkaW5nQWZ0ZXIoKSBjb25zdDsKLSAgICBM
ZW5ndGggcGFkZGluZ1N0YXJ0KCkgY29uc3Q7Ci0gICAgTGVuZ3RoIHBhZGRpbmdFbmQoKSBjb25z
dDsKKyAgICBMZW5ndGggcGFkZGluZ0JlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5w
YWRkaW5nLmJlZm9yZSh0aGlzKTsgfQorICAgIExlbmd0aCBwYWRkaW5nQWZ0ZXIoKSBjb25zdCB7
IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5hZnRlcih0aGlzKTsgfQorICAgIExlbmd0aCBwYWRk
aW5nU3RhcnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5zdGFydCh0aGlzKTsg
fQorICAgIExlbmd0aCBwYWRkaW5nRW5kKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRp
bmcuZW5kKHRoaXMpOyB9CiAKICAgICBFQ3Vyc29yIGN1cnNvcigpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVDdXJzb3I+KGluaGVyaXRlZF9mbGFncy5fY3Vyc29yX3N0eWxlKTsgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>