<?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>110651</bug_id>
          
          <creation_ts>2013-02-22 15:25:20 -0800</creation_ts>
          <short_desc>[CSS Grid Layout] Refactor RenderStyle&apos;s grid position storage in preparation to supporting spanning</short_desc>
          <delta_ts>2013-02-26 12:58:09 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          <dependson>110901</dependson>
          <blocked>103314</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>840056</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-22 15:25:20 -0800</bug_when>
    <thetext>Currently RenderStyle stores a single GridPosition as we only expect grid-{row|column} to parse into a single position. However the specification allows 2 &quot;positions&quot; (named grid-line) so that spanning is possible.

As a step to relax our syntax, let&apos;s add an indirection in what we store into RenderStyle. This will make it easier to add a second GridPosition when the parsing lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840099</commentid>
    <comment_count>1</comment_count>
      <attachid>189857</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-22 16:22:05 -0800</bug_when>
    <thetext>Created attachment 189857
Proposed refactoring: Naming is really not great but start / end position won&apos;t really work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841068</commentid>
    <comment_count>2</comment_count>
      <attachid>189857</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-25 10:10:41 -0800</bug_when>
    <thetext>Comment on attachment 189857
Proposed refactoring: Naming is really not great but start / end position won&apos;t really work.

Clearing flags on attachment: 189857

Committed r143941: &lt;http://trac.webkit.org/changeset/143941&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841069</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-25 10:10:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842274</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-26 12:47:36 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 110901</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842284</commentid>
    <comment_count>5</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-26 12:58:09 -0800</bug_when>
    <thetext>Backstory in bug 110777, basically we will need to implement grid-{start|end|before|after} if we are to accept several values for grid-{row|column}. This change made us go towards storing everything in terms of grid-{row|column}, not in terms of the 4 logical values, which is wrong in the new direction.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189857</attachid>
            <date>2013-02-22 16:22:05 -0800</date>
            <delta_ts>2013-02-25 10:10:41 -0800</delta_ts>
            <desc>Proposed refactoring: Naming is really not great but start / end position won&apos;t really work.</desc>
            <filename>bug-110651-20130222161824.patch</filename>
            <type>text/plain</type>
            <size>17476</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzODA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYzNmY5NGNlZjY3ODc1
YTBhOThmMDRlMWI3NmExZjc0YjMzYTk3Zi4uZjRlMzhjZjA2ODc0ZWQ1YWYxMDJiMTNkZmNmZmFm
ZjdkNGJiYjI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEzLTAyLTIyICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIFJlZmFjdG9yIFJlbmRlclN0eWxlJ3MgZ3JpZCBwb3NpdGlvbiBzdG9yYWdlIGlu
IHByZXBhcmF0aW9uIHRvIHN1cHBvcnRpbmcgc3Bhbm5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDY1MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjdXJyZW50IGNvZGUgc3RvcmVzIGdyaWQt
e3Jvd3xjb2x1bW59IGFzIGEgc2luZ2xlIEdyaWRQb3NpdGlvbiB2YWx1ZS4gV2hpbGUgdGhpcyB3
b3JrcyB3ZWxsIGN1cnJlbnRseSwKKyAgICAgICAgd2Ugd2FudCB0byBiZSBhYmxlIHRvIGhhbmRs
ZSAyIEdyaWRQb3NpdGlvbiBhcyB0aGlzIGVuYWJsZXMgcm93IC8gY29sdW1uIHNwYW5uaW5nLgor
CisgICAgICAgIFRoYXQncyB3aGF0IHRoaXMgcmVmYWN0b3JpbmcgYWNoaWV2ZXM6IGl0IHJlcGxh
Y2VzIHRoZSBpbnRlcm5hbCBzdG9yYWdlIGJ5IGEgR3JpZFBvc2l0aW9ucyB0aGF0IGNvbnRhaW5z
IGEgCisgICAgICAgIHNpbmdsZSBHcmlkUG9zaXRpb24gZm9yIG5vdy4gVGhlIHJlc3QgaXMgbWVj
aGFuaWNhbCB1cGRhdGVzLgorCisgICAgICAgIFJlZmFjdG9yaW5nIGNvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yR3JpZFBvc2l0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUp
OgorICAgICAgICBBZGRlZCB0aGUgc2ltcGxlIHdyYXBwZXIgdmFsdWVGb3JHcmlkUG9zaXRpb25z
IGFuZCB1cGRhdGVkIHRoZSByZXN0IG9mIHRoZSBjb2RlLgorCisgICAgICAgICogY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR3JpZFBvc2l0aW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KToKKyAgICAgICAg
RGl0dG8gd2l0aCBjcmVhdGVHcmlkUG9zaXRpb25zLgorCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6bWF4aW11bUluZGV4
SW5EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxhY2VJdGVtc09u
R3JpZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmllZE1ham9y
QXhpc0l0ZW1zT25HcmlkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBsYWNlQXV0
b01ham9yQXhpc0l0ZW1zT25HcmlkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBs
YWNlQXV0b01ham9yQXhpc0l0ZW1PbkdyaWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6YXV0b1BsYWNlbWVudE1ham9yQXhpc1Bvc2l0aW9uc0ZvckNoaWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckdyaWQ6OmF1dG9QbGFjZW1lbnRNaW5vckF4aXNQb3NpdGlvbnNGb3JDaGls
ZCk6CisgICAgICAgIFVwZGF0ZWQgdGhlIGNvZGUgYWZ0ZXIgYWRkaW5nIHRoZSBpbmRpcmVjdGlv
bjogcy9HcmlkUG9zaXRpb24vR3JpZFBvc2l0aW9ucy8gYW5kCisgICAgICAgIHVzZSB0aGUgZmly
c3RQb3NpdGlvbiBoZWxwZXIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyaWRQb3NpdGlvbnM6OkdyaWRQb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jp
ZFBvc2l0aW9uczo6Zmlyc3RQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmlkUG9zaXRp
b25zOjpvcGVyYXRvcj09KToKKyAgICAgICAgQWRkZWQgdGhpcyBjbGFzcyB0byBhZGQgdGhlIGlu
ZGlyZWN0aW9uLiBGb3Igbm93LCBpdCBvbmx5IHdyYXBzIHRoZSBzaW5nbGUgR3JpZFBvc2l0aW9u
LgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmg6CisgICAgICAgIFVwZGF0ZWQgdG8g
c3RvcmUgLyB0YWtlIC8gcmV0dXJuIGEgR3JpZFBvc2l0aW9ucy4KKwogMjAxMy0wMi0yMiAgTWlu
IFFpbiAgPHFpbm1pbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IHRoZSBvdmVybGF5IHBs
YXkgYnV0dG9uIHBvc2l0aW9uIG9uIGFuZHJvaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggMzFhZDczNjNhYmNmMmY4ODRl
MTFkMDQ4MjZjNTgwNjQwOGUwOGQ3ZC4uMDg0ZDE4YzUzM2VkYjQ3NWNjODQyMzdmMDA3NmZmYmVl
YTU0ZWUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKQEAgLTEwNjcsNiArMTA2NywxMiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gdmFsdWVGb3JHcmlkUG9zaXRpb24oY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlv
bikKIAogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShwb3NpdGlvbi5pbnRl
Z2VyUG9zaXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogfQorCitzdGF0
aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkUG9zaXRpb25zKGNvbnN0IEdyaWRQ
b3NpdGlvbnMmIHBvc2l0aW9ucykKK3sKKyAgICByZXR1cm4gdmFsdWVGb3JHcmlkUG9zaXRpb24o
cG9zaXRpb25zLmZpcnN0UG9zaXRpb24oKSk7Cit9CisKIHN0YXRpYyBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBjcmVhdGVUcmFuc2l0aW9uUHJvcGVydHlWYWx1ZShjb25zdCBBbmltYXRpb24qIGFuaW1h
dGlvbikKIHsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHByb3BlcnR5VmFsdWU7CkBAIC0xOTI1LDkg
KzE5MzEsOSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAgICAgICAgICAgcmV0dXJuIHZh
bHVlRm9yR3JpZFRyYWNrTGlzdChzdHlsZS0+Z3JpZFJvd3MoKSwgc3R5bGUuZ2V0KCksIG1fbm9k
ZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKTsKIAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0R3JpZENvbHVtbjoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckdyaWRQb3NpdGlv
bihzdHlsZS0+Z3JpZEl0ZW1Db2x1bW4oKSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JH
cmlkUG9zaXRpb25zKHN0eWxlLT5ncmlkSXRlbUNvbHVtbigpKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEdyaWRSb3c6Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JHcmlkUG9z
aXRpb24oc3R5bGUtPmdyaWRJdGVtUm93KCkpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9y
R3JpZFBvc2l0aW9ucyhzdHlsZS0+Z3JpZEl0ZW1Sb3coKSk7CiAKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUhlaWdodDoKICAgICAgICAgICAgIGlmIChyZW5kZXJlcikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGJkODViZjZiZWQ1MmNhZDI0Mjk0MzhjYzc4YzVlNDMx
ODY2YjhkYjMuLmRhODcyZjgyOTMyOGVmN2QxNmM4MTAxMjBmNTFiZTE4YWM4MWM2MzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTI2NzYsNyArMjY3Niw3IEBAIHN0YXRp
YyBib29sIGNyZWF0ZUdyaWRUcmFja0xpc3QoQ1NTVmFsdWUqIHZhbHVlLCBWZWN0b3I8R3JpZFRy
YWNrU2l6ZT4mIHRyYWNrU2l6CiB9CiAKIAotc3RhdGljIGJvb2wgY3JlYXRlR3JpZFBvc2l0aW9u
KENTU1ZhbHVlKiB2YWx1ZSwgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbikKK3N0YXRpYyBib29sIGNy
ZWF0ZUdyaWRQb3NpdGlvbnMoQ1NTVmFsdWUqIHZhbHVlLCBHcmlkUG9zaXRpb25zJiBwb3NpdGlv
bikKIHsKICAgICAvLyBGb3Igbm93LCB3ZSBvbmx5IGFjY2VwdDogPGludGVnZXI+IHwgJ2F1dG8n
CiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQpAQCAtMjY4Nyw3ICsyNjg3LDcg
QEAgc3RhdGljIGJvb2wgY3JlYXRlR3JpZFBvc2l0aW9uKENTU1ZhbHVlKiB2YWx1ZSwgR3JpZFBv
c2l0aW9uJiBwb3NpdGlvbikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihwcmltaXRpdmVWYWx1ZS0+aXNOdW1iZXIoKSk7Ci0gICAg
cG9zaXRpb24uc2V0SW50ZWdlclBvc2l0aW9uKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgp
KTsKKyAgICBwb3NpdGlvbi5maXJzdFBvc2l0aW9uKCkuc2V0SW50ZWdlclBvc2l0aW9uKHByaW1p
dGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzU0
NywxNSArMzU0NywxNSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoU3RhdGUm
IHN0YXRlLCBDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdQogICAgIH0KIAogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQ29sdW1uOiB7Ci0gICAgICAgIEdyaWRQb3NpdGlvbiBj
b2x1bW47Ci0gICAgICAgIGlmICghY3JlYXRlR3JpZFBvc2l0aW9uKHZhbHVlLCBjb2x1bW4pKQor
ICAgICAgICBHcmlkUG9zaXRpb25zIGNvbHVtbjsKKyAgICAgICAgaWYgKCFjcmVhdGVHcmlkUG9z
aXRpb25zKHZhbHVlLCBjb2x1bW4pKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBzdGF0
ZS5zdHlsZSgpLT5zZXRHcmlkSXRlbUNvbHVtbihjb2x1bW4pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkUm93OiB7Ci0gICAgICAgIEdyaWRQ
b3NpdGlvbiByb3c7Ci0gICAgICAgIGlmICghY3JlYXRlR3JpZFBvc2l0aW9uKHZhbHVlLCByb3cp
KQorICAgICAgICBHcmlkUG9zaXRpb25zIHJvdzsKKyAgICAgICAgaWYgKCFjcmVhdGVHcmlkUG9z
aXRpb25zKHZhbHVlLCByb3cpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBzdGF0ZS5z
dHlsZSgpLT5zZXRHcmlkSXRlbVJvdyhyb3cpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggZjZiNWNhYjA3NGUyMzY5NDA2YjAwNzJi
Y2YyOTA1NmMwNmEzOGVlNi4uOGI2MmQ2MDIyZjlkYmUyODI4N2EzNTJjYjM1ZDkxODc5OTBmNDNi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMzM0LDE0ICsz
MzQsMTQgQEAgc2l6ZV90IFJlbmRlckdyaWQ6Om1heGltdW1JbmRleEluRGlyZWN0aW9uKFRyYWNr
U2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKICAgICBzaXplX3QgbWF4aW11bUluZGV4
ID0gc3RkOjptYXg8c2l6ZV90PigxLCB0cmFja1N0eWxlcy5zaXplKCkpOwogCiAgICAgZm9yIChS
ZW5kZXJCb3gqIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
bmV4dFNpYmxpbmdCb3goKSkgewotICAgICAgICBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9u
ID0gKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IGNoaWxkLT5zdHlsZSgpLT5ncmlkSXRlbUNv
bHVtbigpIDogY2hpbGQtPnN0eWxlKCktPmdyaWRJdGVtUm93KCk7CisgICAgICAgIGNvbnN0IEdy
aWRQb3NpdGlvbnMmIHBvc2l0aW9ucyA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBjaGls
ZC0+c3R5bGUoKS0+Z3JpZEl0ZW1Db2x1bW4oKSA6IGNoaWxkLT5zdHlsZSgpLT5ncmlkSXRlbVJv
dygpOwogICAgICAgICAvLyAnYXV0bycgaXRlbXMgd2lsbCBuZWVkIHRvIGJlIHJlc29sdmVkIGlu
IHNlcGVyYXRlIHBoYXNlcyBhbnl3YXkuIE5vdGUgdGhhdCBiZWNhdXNlIG1heGltdW1JbmRleCBp
cyBhdCBsZWFzdCAxLAogICAgICAgICAvLyB0aGUgZ3JpZC1hdXRvLWZsb3cgPT0gbm9uZSBjYXNl
IGlzIGF1dG9tYXRpY2FsbHkgaGFuZGxlZC4KLSAgICAgICAgaWYgKHBvc2l0aW9uLmlzQXV0bygp
KQorICAgICAgICBpZiAocG9zaXRpb25zLmZpcnN0UG9zaXRpb24oKS5pc0F1dG8oKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gYnlwYXNzZXMgdGhl
IGNhY2hlIChjYWNoZWRHcmlkQ29vcmRpbmF0ZSgpKSBhcyBpdCBpcyB1c2VkIHRvIGJ1aWxkIGl0
LgotICAgICAgICBtYXhpbXVtSW5kZXggPSBzdGQ6Om1heChtYXhpbXVtSW5kZXgsIHJlc29sdmVH
cmlkUG9zaXRpb25Gcm9tU3R5bGUocG9zaXRpb24pICsgMSk7CisgICAgICAgIG1heGltdW1JbmRl
eCA9IHN0ZDo6bWF4KG1heGltdW1JbmRleCwgcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShw
b3NpdGlvbnMuZmlyc3RQb3NpdGlvbigpKSArIDEpOwogICAgIH0KIAogICAgIHJldHVybiBtYXhp
bXVtSW5kZXg7CkBAIC01MjYsMTggKzUyNiwxOCBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlSXRl
bXNPbkdyaWQoKQogICAgIFZlY3RvcjxSZW5kZXJCb3gqPiBzcGVjaWZpZWRNYWpvckF4aXNBdXRv
R3JpZEl0ZW1zOwogICAgIEdyaWRBdXRvRmxvdyBhdXRvRmxvdyA9IHN0eWxlKCktPmdyaWRBdXRv
RmxvdygpOwogICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpIHsKLSAgICAgICAgY29uc3QgR3Jp
ZFBvc2l0aW9uJiBjb2x1bW5Qb3NpdGlvbiA9IGNoaWxkLT5zdHlsZSgpLT5ncmlkSXRlbUNvbHVt
bigpOwotICAgICAgICBjb25zdCBHcmlkUG9zaXRpb24mIHJvd1Bvc2l0aW9uID0gY2hpbGQtPnN0
eWxlKCktPmdyaWRJdGVtUm93KCk7Ci0gICAgICAgIGlmIChhdXRvRmxvdyAhPSBBdXRvRmxvd05v
bmUgJiYgKGNvbHVtblBvc2l0aW9uLmlzQXV0bygpIHx8IHJvd1Bvc2l0aW9uLmlzQXV0bygpKSkg
ewotICAgICAgICAgICAgY29uc3QgR3JpZFBvc2l0aW9uJiBtYWpvckF4aXNQb3NpdGlvbiA9IGF1
dG9QbGFjZW1lbnRNYWpvckF4aXNQb3NpdGlvbkZvckNoaWxkKGNoaWxkKTsKLSAgICAgICAgICAg
IGlmIChtYWpvckF4aXNQb3NpdGlvbi5pc0F1dG8oKSkKKyAgICAgICAgY29uc3QgR3JpZFBvc2l0
aW9ucyYgY29sdW1uUG9zaXRpb25zID0gY2hpbGQtPnN0eWxlKCktPmdyaWRJdGVtQ29sdW1uKCk7
CisgICAgICAgIGNvbnN0IEdyaWRQb3NpdGlvbnMmIHJvd1Bvc2l0aW9ucyA9IGNoaWxkLT5zdHls
ZSgpLT5ncmlkSXRlbVJvdygpOworICAgICAgICBpZiAoYXV0b0Zsb3cgIT0gQXV0b0Zsb3dOb25l
ICYmIChjb2x1bW5Qb3NpdGlvbnMuZmlyc3RQb3NpdGlvbigpLmlzQXV0bygpIHx8IHJvd1Bvc2l0
aW9ucy5maXJzdFBvc2l0aW9uKCkuaXNBdXRvKCkpKSB7CisgICAgICAgICAgICBjb25zdCBHcmlk
UG9zaXRpb25zJiBtYWpvckF4aXNQb3NpdGlvbnMgPSBhdXRvUGxhY2VtZW50TWFqb3JBeGlzUG9z
aXRpb25zRm9yQ2hpbGQoY2hpbGQpOworICAgICAgICAgICAgaWYgKG1ham9yQXhpc1Bvc2l0aW9u
cy5maXJzdFBvc2l0aW9uKCkuaXNBdXRvKCkpCiAgICAgICAgICAgICAgICAgYXV0b01ham9yQXhp
c0F1dG9HcmlkSXRlbXMuYXBwZW5kKGNoaWxkKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBzcGVjaWZpZWRNYWpvckF4aXNBdXRvR3JpZEl0ZW1zLmFwcGVuZChjaGlsZCk7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBzaXplX3QgY29sdW1uVHJh
Y2sgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNvbHVtblBvc2l0aW9uKTsKLSAgICAg
ICAgc2l6ZV90IHJvd1RyYWNrID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShyb3dQb3Np
dGlvbik7CisgICAgICAgIHNpemVfdCBjb2x1bW5UcmFjayA9IHJlc29sdmVHcmlkUG9zaXRpb25G
cm9tU3R5bGUoY29sdW1uUG9zaXRpb25zLmZpcnN0UG9zaXRpb24oKSk7CisgICAgICAgIHNpemVf
dCByb3dUcmFjayA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUocm93UG9zaXRpb25zLmZp
cnN0UG9zaXRpb24oKSk7CiAgICAgICAgIGluc2VydEl0ZW1JbnRvR3JpZChjaGlsZCwgcm93VHJh
Y2ssIGNvbHVtblRyYWNrKTsKICAgICB9CiAKQEAgLTU1OCw5ICs1NTgsOSBAQCB2b2lkIFJlbmRl
ckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQoKQogdm9pZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmll
ZE1ham9yQXhpc0l0ZW1zT25HcmlkKFZlY3RvcjxSZW5kZXJCb3gqPiBhdXRvR3JpZEl0ZW1zKQog
ewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXV0b0dyaWRJdGVtcy5zaXplKCk7ICsraSkg
ewotICAgICAgICBjb25zdCBHcmlkUG9zaXRpb24mIG1ham9yQXhpc1Bvc2l0aW9uID0gYXV0b1Bs
YWNlbWVudE1ham9yQXhpc1Bvc2l0aW9uRm9yQ2hpbGQoYXV0b0dyaWRJdGVtc1tpXSk7Ci0gICAg
ICAgIEFTU0VSVCghbWFqb3JBeGlzUG9zaXRpb24uaXNBdXRvKCkpOwotICAgICAgICBHcmlkSXRl
cmF0b3IgaXRlcmF0b3IobV9ncmlkLCBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCks
IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUobWFqb3JBeGlzUG9zaXRpb24pKTsKKyAgICAg
ICAgY29uc3QgR3JpZFBvc2l0aW9ucyYgbWFqb3JBeGlzUG9zaXRpb25zID0gYXV0b1BsYWNlbWVu
dE1ham9yQXhpc1Bvc2l0aW9uc0ZvckNoaWxkKGF1dG9HcmlkSXRlbXNbaV0pOworICAgICAgICBB
U1NFUlQoIW1ham9yQXhpc1Bvc2l0aW9ucy5maXJzdFBvc2l0aW9uKCkuaXNBdXRvKCkpOworICAg
ICAgICBHcmlkSXRlcmF0b3IgaXRlcmF0b3IobV9ncmlkLCBhdXRvUGxhY2VtZW50TWFqb3JBeGlz
RGlyZWN0aW9uKCksIHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUobWFqb3JBeGlzUG9zaXRp
b25zLmZpcnN0UG9zaXRpb24oKSkpOwogICAgICAgICBpZiAoT3duUHRyPEdyaWRDb29yZGluYXRl
PiBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEoKSkgewogICAgICAg
ICAgICAgaW5zZXJ0SXRlbUludG9HcmlkKGF1dG9HcmlkSXRlbXNbaV0sIGVtcHR5R3JpZEFyZWEt
PnJvd0luZGV4LCBlbXB0eUdyaWRBcmVhLT5jb2x1bW5JbmRleCk7CiAgICAgICAgICAgICBjb250
aW51ZTsKQEAgLTU3NiwxOCArNTc2LDE4IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZp
ZWRNYWpvckF4aXNJdGVtc09uR3JpZChWZWN0b3I8UmVuZGVyQm94Kj4gYXV0b0dyaWRJCiB2b2lk
IFJlbmRlckdyaWQ6OnBsYWNlQXV0b01ham9yQXhpc0l0ZW1zT25HcmlkKFZlY3RvcjxSZW5kZXJC
b3gqPiBhdXRvR3JpZEl0ZW1zKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXV0b0dy
aWRJdGVtcy5zaXplKCk7ICsraSkgewotICAgICAgICBBU1NFUlQoYXV0b1BsYWNlbWVudE1ham9y
QXhpc1Bvc2l0aW9uRm9yQ2hpbGQoYXV0b0dyaWRJdGVtc1tpXSkuaXNBdXRvKCkpOworICAgICAg
ICBBU1NFUlQoYXV0b1BsYWNlbWVudE1ham9yQXhpc1Bvc2l0aW9uc0ZvckNoaWxkKGF1dG9Hcmlk
SXRlbXNbaV0pLmZpcnN0UG9zaXRpb24oKS5pc0F1dG8oKSk7CiAgICAgICAgIHBsYWNlQXV0b01h
am9yQXhpc0l0ZW1PbkdyaWQoYXV0b0dyaWRJdGVtc1tpXSk7CiAgICAgfQogfQogCiB2b2lkIFJl
bmRlckdyaWQ6OnBsYWNlQXV0b01ham9yQXhpc0l0ZW1PbkdyaWQoUmVuZGVyQm94KiBncmlkSXRl
bSkKIHsKLSAgICBBU1NFUlQoYXV0b1BsYWNlbWVudE1ham9yQXhpc1Bvc2l0aW9uRm9yQ2hpbGQo
Z3JpZEl0ZW0pLmlzQXV0bygpKTsKLSAgICBjb25zdCBHcmlkUG9zaXRpb24mIG1pbm9yQXhpc1Bv
c2l0aW9uID0gYXV0b1BsYWNlbWVudE1pbm9yQXhpc1Bvc2l0aW9uRm9yQ2hpbGQoZ3JpZEl0ZW0p
OworICAgIEFTU0VSVChhdXRvUGxhY2VtZW50TWFqb3JBeGlzUG9zaXRpb25zRm9yQ2hpbGQoZ3Jp
ZEl0ZW0pLmZpcnN0UG9zaXRpb24oKS5pc0F1dG8oKSk7CisgICAgY29uc3QgR3JpZFBvc2l0aW9u
cyYgbWlub3JBeGlzUG9zaXRpb25zID0gYXV0b1BsYWNlbWVudE1pbm9yQXhpc1Bvc2l0aW9uc0Zv
ckNoaWxkKGdyaWRJdGVtKTsKICAgICBzaXplX3QgbWlub3JBeGlzSW5kZXggPSAwOwotICAgIGlm
ICghbWlub3JBeGlzUG9zaXRpb24uaXNBdXRvKCkpIHsKLSAgICAgICAgbWlub3JBeGlzSW5kZXgg
PSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKG1pbm9yQXhpc1Bvc2l0aW9uKTsKKyAgICBp
ZiAoIW1pbm9yQXhpc1Bvc2l0aW9ucy5maXJzdFBvc2l0aW9uKCkuaXNBdXRvKCkpIHsKKyAgICAg
ICAgbWlub3JBeGlzSW5kZXggPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKG1pbm9yQXhp
c1Bvc2l0aW9ucy5maXJzdFBvc2l0aW9uKCkpOwogICAgICAgICBHcmlkSXRlcmF0b3IgaXRlcmF0
b3IobV9ncmlkLCBhdXRvUGxhY2VtZW50TWlub3JBeGlzRGlyZWN0aW9uKCksIG1pbm9yQXhpc0lu
ZGV4KTsKICAgICAgICAgaWYgKE93blB0cjxHcmlkQ29vcmRpbmF0ZT4gZW1wdHlHcmlkQXJlYSA9
IGl0ZXJhdG9yLm5leHRFbXB0eUdyaWRBcmVhKCkpIHsKICAgICAgICAgICAgIGluc2VydEl0ZW1J
bnRvR3JpZChncmlkSXRlbSwgZW1wdHlHcmlkQXJlYS0+cm93SW5kZXgsIGVtcHR5R3JpZEFyZWEt
PmNvbHVtbkluZGV4KTsKQEAgLTYxMSwxNCArNjExLDE0IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxh
Y2VBdXRvTWFqb3JBeGlzSXRlbU9uR3JpZChSZW5kZXJCb3gqIGdyaWRJdGVtKQogICAgIGluc2Vy
dEl0ZW1JbnRvR3JpZChncmlkSXRlbSwgcm93SW5kZXgsIGNvbHVtbkluZGV4KTsKIH0KIAotY29u
c3QgR3JpZFBvc2l0aW9uJiBSZW5kZXJHcmlkOjphdXRvUGxhY2VtZW50TWFqb3JBeGlzUG9zaXRp
b25Gb3JDaGlsZChjb25zdCBSZW5kZXJCb3gqIGdyaWRJdGVtKSBjb25zdAorY29uc3QgR3JpZFBv
c2l0aW9ucyYgUmVuZGVyR3JpZDo6YXV0b1BsYWNlbWVudE1ham9yQXhpc1Bvc2l0aW9uc0ZvckNo
aWxkKGNvbnN0IFJlbmRlckJveCogZ3JpZEl0ZW0pIGNvbnN0CiB7CiAgICAgR3JpZEF1dG9GbG93
IGZsb3cgPSBzdHlsZSgpLT5ncmlkQXV0b0Zsb3coKTsKICAgICBBU1NFUlQoZmxvdyAhPSBBdXRv
Rmxvd05vbmUpOwogICAgIHJldHVybiAoZmxvdyA9PSBBdXRvRmxvd0NvbHVtbikgPyBncmlkSXRl
bS0+c3R5bGUoKS0+Z3JpZEl0ZW1Db2x1bW4oKSA6IGdyaWRJdGVtLT5zdHlsZSgpLT5ncmlkSXRl
bVJvdygpOwogfQogCi1jb25zdCBHcmlkUG9zaXRpb24mIFJlbmRlckdyaWQ6OmF1dG9QbGFjZW1l
bnRNaW5vckF4aXNQb3NpdGlvbkZvckNoaWxkKGNvbnN0IFJlbmRlckJveCogZ3JpZEl0ZW0pIGNv
bnN0Citjb25zdCBHcmlkUG9zaXRpb25zJiBSZW5kZXJHcmlkOjphdXRvUGxhY2VtZW50TWlub3JB
eGlzUG9zaXRpb25zRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBncmlkSXRlbSkgY29uc3QKIHsK
ICAgICBHcmlkQXV0b0Zsb3cgZmxvdyA9IHN0eWxlKCktPmdyaWRBdXRvRmxvdygpOwogICAgIEFT
U0VSVChmbG93ICE9IEF1dG9GbG93Tm9uZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdy
aWQuaAppbmRleCA2MmYxNWMzYTU1MjQwZTZkZmQ2NGI2N2E4NGMyMTFiNzNlNDRjZjA5Li5iNTA3
MTQ5MTAwMjY0ZGMxNzAxODhhZmFmMTBmZGJmYzAwOWIxZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmgKQEAgLTgyLDggKzgyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBs
YWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoVmVjdG9yPFJlbmRlckJveCo+KTsKICAg
ICB2b2lkIHBsYWNlQXV0b01ham9yQXhpc0l0ZW1zT25HcmlkKFZlY3RvcjxSZW5kZXJCb3gqPik7
CiAgICAgdm9pZCBwbGFjZUF1dG9NYWpvckF4aXNJdGVtT25HcmlkKFJlbmRlckJveCopOwotICAg
IGNvbnN0IEdyaWRQb3NpdGlvbiYgYXV0b1BsYWNlbWVudE1ham9yQXhpc1Bvc2l0aW9uRm9yQ2hp
bGQoY29uc3QgUmVuZGVyQm94KikgY29uc3Q7Ci0gICAgY29uc3QgR3JpZFBvc2l0aW9uJiBhdXRv
UGxhY2VtZW50TWlub3JBeGlzUG9zaXRpb25Gb3JDaGlsZChjb25zdCBSZW5kZXJCb3gqKSBjb25z
dDsKKyAgICBjb25zdCBHcmlkUG9zaXRpb25zJiBhdXRvUGxhY2VtZW50TWFqb3JBeGlzUG9zaXRp
b25zRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94KikgY29uc3Q7CisgICAgY29uc3QgR3JpZFBvc2l0
aW9ucyYgYXV0b1BsYWNlbWVudE1pbm9yQXhpc1Bvc2l0aW9uc0ZvckNoaWxkKGNvbnN0IFJlbmRl
ckJveCopIGNvbnN0OwogICAgIFRyYWNrU2l6aW5nRGlyZWN0aW9uIGF1dG9QbGFjZW1lbnRNYWpv
ckF4aXNEaXJlY3Rpb24oKSBjb25zdDsKICAgICBUcmFja1NpemluZ0RpcmVjdGlvbiBhdXRvUGxh
Y2VtZW50TWlub3JBeGlzRGlyZWN0aW9uKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uaAppbmRleCAzZjhmZTk3NGQzMGMwZmUxZDRkNTU1
MWE2N2UzOWE5M2MwN2YzOTNiLi4zODJiNzJlZjU4ZmNlNGY1YTA3ZGIyNGU4YTk0OWUyMDVkYjBk
YjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5o
CkBAIC03NCw2ICs3NCwyNCBAQCBwcml2YXRlOgogICAgIGludCBtX2ludGVnZXJQb3NpdGlvbjsK
IH07CiAKK2NsYXNzIEdyaWRQb3NpdGlvbnMgeworcHVibGljOgorICAgIEdyaWRQb3NpdGlvbnMo
KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBHcmlkUG9zaXRpb24mIGZpcnN0UG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UG9zaXRpb247IH0KKyAgICBHcmlkUG9zaXRpb24mIGZp
cnN0UG9zaXRpb24oKSB7IHJldHVybiBtX2ZpcnN0UG9zaXRpb247IH0KKworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBHcmlkUG9zaXRpb25zJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2ZpcnN0UG9zaXRpb24gPT0gb3RoZXIubV9maXJzdFBvc2l0aW9uOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBHcmlkUG9zaXRpb24gbV9maXJzdFBvc2l0aW9uOworfTsKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gR3JpZFBvc2l0aW9uX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNzZkOGI4ZDhjMzJl
MmY0Y2RmMDI1ODA2ZTAxMGVjZDFjMDE3YWZhYy4uMzIyY2I5MTY0NmQ1MDc3ODcwYzY0OWNjZTA0
ZmJmOTExYjA0ODNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKQEAgLTc2NSw4ICs3NjUsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPEdy
aWRUcmFja1NpemU+JiBncmlkUm93cygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2dyaWQtPm1fZ3JpZFJvd3M7IH0KICAgICBHcmlkQXV0b0Zsb3cgZ3JpZEF1dG9GbG93
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQXV0
b0Zsb3c7IH0KIAotICAgIGNvbnN0IEdyaWRQb3NpdGlvbiYgZ3JpZEl0ZW1Db2x1bW4oKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9ncmlkSXRlbS0+bV9ncmlkQ29sdW1u
OyB9Ci0gICAgY29uc3QgR3JpZFBvc2l0aW9uJiBncmlkSXRlbVJvdygpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWRJdGVtLT5tX2dyaWRSb3c7IH0KKyAgICBjb25z
dCBHcmlkUG9zaXRpb25zJiBncmlkSXRlbUNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2dyaWRJdGVtLT5tX2dyaWRDb2x1bW47IH0KKyAgICBjb25zdCBHcmlk
UG9zaXRpb25zJiBncmlkSXRlbVJvdygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2dyaWRJdGVtLT5tX2dyaWRSb3c7IH0KIAogICAgIGNvbnN0IFNoYWRvd0RhdGEqIGJv
eFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JveFNoYWRv
dy5nZXQoKTsgfQogICAgIHZvaWQgZ2V0Qm94U2hhZG93RXh0ZW50KExheW91dFVuaXQmIHRvcCwg
TGF5b3V0VW5pdCYgcmlnaHQsIExheW91dFVuaXQmIGJvdHRvbSwgTGF5b3V0VW5pdCYgbGVmdCkg
Y29uc3QgeyBnZXRTaGFkb3dFeHRlbnQoYm94U2hhZG93KCksIHRvcCwgcmlnaHQsIGJvdHRvbSwg
bGVmdCk7IH0KQEAgLTEyNTMsOCArMTI1Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEdyaWRD
b2x1bW5zKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWQsIG1fZ3JpZENvbHVtbnMsIGxlbmd0
aHMpOyB9CiAgICAgdm9pZCBzZXRHcmlkUm93cyhjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4m
IGxlbmd0aHMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9ncmlk
LCBtX2dyaWRSb3dzLCBsZW5ndGhzKTsgfQogICAgIHZvaWQgc2V0R3JpZEF1dG9GbG93KEdyaWRB
dXRvRmxvdyBmbG93KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1f
Z3JpZCwgbV9ncmlkQXV0b0Zsb3csIGZsb3cpOyB9Ci0gICAgdm9pZCBzZXRHcmlkSXRlbUNvbHVt
bihjb25zdCBHcmlkUG9zaXRpb24mIGNvbHVtblBvc2l0aW9uKSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZ3JpZEl0ZW0sIG1fZ3JpZENvbHVtbiwgY29sdW1uUG9z
aXRpb24pOyB9Ci0gICAgdm9pZCBzZXRHcmlkSXRlbVJvdyhjb25zdCBHcmlkUG9zaXRpb24mIHJv
d1Bvc2l0aW9uKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZ3Jp
ZEl0ZW0sIG1fZ3JpZFJvdywgcm93UG9zaXRpb24pOyB9CisgICAgdm9pZCBzZXRHcmlkSXRlbUNv
bHVtbihjb25zdCBHcmlkUG9zaXRpb25zJiBjb2x1bW5Qb3NpdGlvbikgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWRJdGVtLCBtX2dyaWRDb2x1bW4sIGNvbHVt
blBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0R3JpZEl0ZW1Sb3coY29uc3QgR3JpZFBvc2l0aW9u
cyYgcm93UG9zaXRpb24pIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+
bV9ncmlkSXRlbSwgbV9ncmlkUm93LCByb3dQb3NpdGlvbik7IH0KIAogICAgIHZvaWQgc2V0TWFy
cXVlZUluY3JlbWVudChjb25zdCBMZW5ndGgmIGYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9tYXJxdWVlLCBpbmNyZW1lbnQsIGYpOyB9CiAgICAgdm9pZCBzZXRN
YXJxdWVlU3BlZWQoaW50IGYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS0+bV9tYXJxdWVlLCBzcGVlZCwgZik7IH0KQEAgLTE2NjMsOSArMTY2Myw5IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBHcmlkQXV0b0Zsb3cgaW5pdGlhbEdyaWRBdXRvRmxvdygpIHsgcmV0dXJu
IEF1dG9GbG93Tm9uZTsgfQogCi0gICAgLy8gJ2F1dG8nIGlzIHRoZSBkZWZhdWx0LgotICAgIHN0
YXRpYyBHcmlkUG9zaXRpb24gaW5pdGlhbEdyaWRJdGVtQ29sdW1uKCkgeyByZXR1cm4gR3JpZFBv
c2l0aW9uKCk7IH0KLSAgICBzdGF0aWMgR3JpZFBvc2l0aW9uIGluaXRpYWxHcmlkSXRlbVJvdygp
IHsgcmV0dXJuIEdyaWRQb3NpdGlvbigpOyB9CisgICAgLy8gJ2F1dG8nIC8gJ2F1dG8nIGlzIHRo
ZSBkZWZhdWx0LgorICAgIHN0YXRpYyBHcmlkUG9zaXRpb25zIGluaXRpYWxHcmlkSXRlbUNvbHVt
bigpIHsgcmV0dXJuIEdyaWRQb3NpdGlvbnMoKTsgfQorICAgIHN0YXRpYyBHcmlkUG9zaXRpb25z
IGluaXRpYWxHcmlkSXRlbVJvdygpIHsgcmV0dXJuIEdyaWRQb3NpdGlvbnMoKTsgfQogCiAgICAg
c3RhdGljIHVuc2lnbmVkIGluaXRpYWxUYWJTaXplKCkgeyByZXR1cm4gODsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkSXRlbURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5oCmluZGV4
IDJmNzQ4N2I4Njk4YWY3NDRiZWQ0NmFlYWE5NGU2ZGNhMjllNTE5MTQuLjMxMjZkYjE0Njc3ZjUz
OGRlMGIxYTYxOTgxMmE0ZTlmNzQ3ZDJhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5oCkBAIC01NCw4ICs1NCw4IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7CiAgICAgfQogCi0gICAgR3JpZFBvc2l0
aW9uIG1fZ3JpZENvbHVtbjsKLSAgICBHcmlkUG9zaXRpb24gbV9ncmlkUm93OworICAgIEdyaWRQ
b3NpdGlvbnMgbV9ncmlkQ29sdW1uOworICAgIEdyaWRQb3NpdGlvbnMgbV9ncmlkUm93OwogCiBw
cml2YXRlOgogICAgIFN0eWxlR3JpZEl0ZW1EYXRhKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>