<?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>30767</bug_id>
          
          <creation_ts>2009-10-26 03:35:42 -0700</creation_ts>
          <short_desc>[Qt] Reintroduce QWebElementCollection</short_desc>
          <delta_ts>2009-10-26 10:35:25 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>29799</blocked>
    
    <blocked>30772</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kenneth</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>vestbo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>157721</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2009-10-26 03:35:42 -0700</bug_when>
    <thetext>The function findAll() of QWebElement returns a QList of QWebElement. This return type does not give any flexibility to upgrade the API later, (like adding filtering on the list, or lazy population).

To add some flexibility, a d-pointer is needed in the return type. The type QWebElementCollection should be reintroduced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157726</commentid>
    <comment_count>1</comment_count>
      <attachid>41858</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2009-10-26 03:53:51 -0700</bug_when>
    <thetext>Created attachment 41858
Path to replace QList&lt;QWebElement&gt; by QWebElementCollection

This patch basically revert the commit 42994  (e4ed760783109673896551892c029dc043c70b71 on git).

The changes from the original patch are:
-QWebElement operator[] do not return a const QWebElement anymore to be coherent with the previous use of QList
-The new tests had to be adapted.

If the idea is accepted and we reintroduce QWebElementCollection, a new bug should be created in the tree 29843 to review the API of QWebElementCollection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157741</commentid>
    <comment_count>2</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2009-10-26 05:57:21 -0700</bug_when>
    <thetext>LGTM, feel free to create an API-spinoff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157743</commentid>
    <comment_count>3</comment_count>
      <attachid>41858</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-26 06:06:12 -0700</bug_when>
    <thetext>Comment on attachment 41858
Path to replace QList&lt;QWebElement&gt; by QWebElementCollection

Clearing flags on attachment: 41858

Committed r50058: &lt;http://trac.webkit.org/changeset/50058&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157744</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-26 06:06:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157819</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-10-26 10:35:25 -0700</bug_when>
    <thetext>I guess we need to add a follow up bug report reviewing all the API of this new class.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41858</attachid>
            <date>2009-10-26 03:53:51 -0700</date>
            <delta_ts>2009-10-26 06:06:12 -0700</delta_ts>
            <desc>Path to replace QList&lt;QWebElement&gt; by QWebElementCollection</desc>
            <filename>reintroduce_qwebelementcollection.patch</filename>
            <type>text/plain</type>
            <size>26784</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwIGIvV2ViS2l0L3F0L0Fw
aS9xd2ViZWxlbWVudC5jcHAKaW5kZXggNWI4Mzg3MC4uMDQzMDdjMiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVu
dC5jcHAKQEAgLTIwMiwyMyArMjAyLDkgQEAgYm9vbCBRV2ViRWxlbWVudDo6aXNOdWxsKCkgY29u
c3QKIAogICAgIFxzYSBmaW5kRmlyc3QoKQogKi8KLVFMaXN0PFFXZWJFbGVtZW50PiBRV2ViRWxl
bWVudDo6ZmluZEFsbChjb25zdCBRU3RyaW5nICZzZWxlY3RvclF1ZXJ5KSBjb25zdAorUVdlYkVs
ZW1lbnRDb2xsZWN0aW9uIFFXZWJFbGVtZW50OjpmaW5kQWxsKGNvbnN0IFFTdHJpbmcgJnNlbGVj
dG9yUXVlcnkpIGNvbnN0CiB7Ci0gICAgUUxpc3Q8UVdlYkVsZW1lbnQ+IGVsZW1lbnRzOwotICAg
IGlmICghbV9lbGVtZW50KQotICAgICAgICByZXR1cm4gZWxlbWVudHM7Ci0KLSAgICBFeGNlcHRp
b25Db2RlIGV4Y2VwdGlvbiA9IDA7IC8vICMjIwotICAgIFJlZlB0cjxOb2RlTGlzdD4gbm9kZXMg
PSBtX2VsZW1lbnQtPnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3JRdWVyeSwgZXhjZXB0aW9uKTsK
LSAgICBpZiAoIW5vZGVzKQotICAgICAgICByZXR1cm4gZWxlbWVudHM7Ci0KLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbm9kZXMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgV2ViQ29y
ZTo6Tm9kZSogbiA9IG5vZGVzLT5pdGVtKGkpOwotICAgICAgICBlbGVtZW50cy5hcHBlbmQoUVdl
YkVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pKSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGVsZW1lbnRzOworICAgIHJldHVybiBRV2ViRWxlbWVudENvbGxlY3Rpb24oKnRoaXMsIHNlbGVj
dG9yUXVlcnkpOwogfQogCiAvKiEKQEAgLTE0NTAsMyArMTQzNiwzOTEgQEAgdm9pZCBRV2ViRWxl
bWVudDo6cmVuZGVyKFFQYWludGVyKiBwYWludGVyKQogICAgIGNvbnRleHQucmVzdG9yZSgpOwog
fQogCitjbGFzcyBRV2ViRWxlbWVudENvbGxlY3Rpb25Qcml2YXRlIDogcHVibGljIFFTaGFyZWRE
YXRhCit7CitwdWJsaWM6CisgICAgc3RhdGljIFFXZWJFbGVtZW50Q29sbGVjdGlvblByaXZhdGUq
IGNyZWF0ZShjb25zdCBQYXNzUmVmUHRyPE5vZGU+ICZjb250ZXh0LCBjb25zdCBRU3RyaW5nICZx
dWVyeSk7CisKKyAgICBSZWZQdHI8Tm9kZUxpc3Q+IG1fcmVzdWx0OworCitwcml2YXRlOgorICAg
IGlubGluZSBRV2ViRWxlbWVudENvbGxlY3Rpb25Qcml2YXRlKCkge30KK307CisKK1FXZWJFbGVt
ZW50Q29sbGVjdGlvblByaXZhdGUqIFFXZWJFbGVtZW50Q29sbGVjdGlvblByaXZhdGU6OmNyZWF0
ZShjb25zdCBQYXNzUmVmUHRyPE5vZGU+ICZjb250ZXh0LCBjb25zdCBRU3RyaW5nICZxdWVyeSkK
K3sKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gTGV0IFdl
YktpdCBkbyB0aGUgaGFyZCB3b3JrIGhlaGVoZQorICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9u
ID0gMDsgLy8gIyMjCisgICAgUmVmUHRyPE5vZGVMaXN0PiBub2RlcyA9IGNvbnRleHQtPnF1ZXJ5
U2VsZWN0b3JBbGwocXVlcnksIGV4Y2VwdGlvbik7CisgICAgaWYgKCFub2RlcykKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBRV2ViRWxlbWVudENvbGxlY3Rpb25Qcml2YXRlKiBwcml2ID0gbmV3
IFFXZWJFbGVtZW50Q29sbGVjdGlvblByaXZhdGU7CisgICAgcHJpdi0+bV9yZXN1bHQgPSBub2Rl
czsKKyAgICByZXR1cm4gcHJpdjsKK30KKworLyohCisgICAgXGNsYXNzIFFXZWJFbGVtZW50Q29s
bGVjdGlvbgorICAgIFxzaW5jZSA0LjYKKyAgICBcYnJpZWYgVGhlIFFXZWJFbGVtZW50Q29sbGVj
dGlvbiBjbGFzcyByZXByZXNlbnRzIGEgY29sbGVjdGlvbiBvZiB3ZWIgZWxlbWVudHMuCisgICAg
XHByZWxpbWluYXJ5CisKKyAgICBFbGVtZW50cyBpbiBhIGRvY3VtZW50IGNhbiBiZSBzZWxlY3Rl
ZCB1c2luZyBRV2ViRWxlbWVudDo6ZmluZEFsbCgpIG9yIHVzaW5nIHRoZQorICAgIFFXZWJFbGVt
ZW50IGNvbnN0cnVjdG9yLiBUaGUgY29sbGVjdGlvbiBpcyBjb21wb3NlZCBieSBjaG9vc2luZyBh
bGwgZWxlbWVudHMgaW4gdGhlCisgICAgZG9jdW1lbnQgdGhhdCBtYXRjaCBhIHNwZWNpZmllZCBD
U1Mgc2VsZWN0b3IgZXhwcmVzc2lvbi4KKworICAgIFRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgZWxl
bWVudHMgaXMgcHJvdmlkZWQgdGhyb3VnaCB0aGUgY291bnQoKSBwcm9wZXJ0eS4gSW5kaXZpZHVh
bAorICAgIGVsZW1lbnRzIGNhbiBiZSByZXRyaWV2ZWQgYnkgaW5kZXggdXNpbmcgYXQoKS4KKwor
ICAgIEl0IGlzIGFsc28gcG9zc2libGUgdG8gaXRlcmF0ZSB0aHJvdWdoIGFsbCBlbGVtZW50cyBp
biB0aGUgY29sbGVjdGlvbiB1c2luZyBRdCdzIGZvcmVhY2gKKyAgICBtYWNybzoKKworICAgIFxj
b2RlCisgICAgICAgIFFXZWJFbGVtZW50Q29sbGVjdGlvbiBjb2xsZWN0aW9uID0gZG9jdW1lbnQu
ZmluZEFsbCgicCIpOworICAgICAgICBmb3JlYWNoIChRV2ViRWxlbWVudCBwYXJhRWxlbWVudCwg
Y29sbGVjdGlvbikgeworICAgICAgICAgICAgLi4uCisgICAgICAgIH0KKyAgICBcZW5kY29kZQor
Ki8KKworLyohCisgICAgQ29uc3RydWN0cyBhbiBlbXB0eSBjb2xsZWN0aW9uLgorKi8KK1FXZWJF
bGVtZW50Q29sbGVjdGlvbjo6UVdlYkVsZW1lbnRDb2xsZWN0aW9uKCkKK3sKK30KKworLyohCisg
ICAgQ29uc3RydWN0cyBhIGNvcHkgb2YgXGEgb3RoZXIuCisqLworUVdlYkVsZW1lbnRDb2xsZWN0
aW9uOjpRV2ViRWxlbWVudENvbGxlY3Rpb24oY29uc3QgUVdlYkVsZW1lbnRDb2xsZWN0aW9uICZv
dGhlcikKKyAgICA6IGQob3RoZXIuZCkKK3sKK30KKworLyohCisgICAgQ29uc3RydWN0cyBhIGNv
bGxlY3Rpb24gb2YgZWxlbWVudHMgZnJvbSB0aGUgbGlzdCBvZiBjaGlsZCBlbGVtZW50cyBvZiBc
YSBjb250ZXh0RWxlbWVudCB0aGF0CisgICAgbWF0Y2ggdGhlIHNwZWNpZmllZCBDU1Mgc2VsZWN0
b3IgXGEgcXVlcnkuCisqLworUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpRV2ViRWxlbWVudENvbGxl
Y3Rpb24oY29uc3QgUVdlYkVsZW1lbnQgJmNvbnRleHRFbGVtZW50LCBjb25zdCBRU3RyaW5nICZx
dWVyeSkKK3sKKyAgICBkID0gUUV4cGxpY2l0bHlTaGFyZWREYXRhUG9pbnRlcjxRV2ViRWxlbWVu
dENvbGxlY3Rpb25Qcml2YXRlPihRV2ViRWxlbWVudENvbGxlY3Rpb25Qcml2YXRlOjpjcmVhdGUo
Y29udGV4dEVsZW1lbnQubV9lbGVtZW50LCBxdWVyeSkpOworfQorCisvKiEKKyAgICBBc3NpZ25z
IFxhIG90aGVyIHRvIHRoaXMgY29sbGVjdGlvbiBhbmQgcmV0dXJucyBhIHJlZmVyZW5jZSB0byB0
aGlzIGNvbGxlY3Rpb24uCisqLworUVdlYkVsZW1lbnRDb2xsZWN0aW9uICZRV2ViRWxlbWVudENv
bGxlY3Rpb246Om9wZXJhdG9yPShjb25zdCBRV2ViRWxlbWVudENvbGxlY3Rpb24gJm90aGVyKQor
eworICAgIGQgPSBvdGhlci5kOworICAgIHJldHVybiAqdGhpczsKK30KKworLyohCisgICAgRGVz
dHJveXMgdGhlIGNvbGxlY3Rpb24uCisqLworUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjp+UVdlYkVs
ZW1lbnRDb2xsZWN0aW9uKCkKK3sKK30KKworLyohIFxmbiBRV2ViRWxlbWVudENvbGxlY3Rpb24g
JlFXZWJFbGVtZW50Q29sbGVjdGlvbjo6b3BlcmF0b3IrPShjb25zdCBRV2ViRWxlbWVudENvbGxl
Y3Rpb24gJm90aGVyKQorCisgICAgQXBwZW5kcyB0aGUgaXRlbXMgb2YgdGhlIFxhIG90aGVyIGxp
c3QgdG8gdGhpcyBsaXN0IGFuZCByZXR1cm5zIGEKKyAgICByZWZlcmVuY2UgdG8gdGhpcyBsaXN0
LgorCisgICAgXHNhIG9wZXJhdG9yKygpLCBhcHBlbmQoKQorKi8KKworLyohCisgICAgUmV0dXJu
cyBhIGNvbGxlY3Rpb24gdGhhdCBjb250YWlucyBhbGwgdGhlIGVsZW1lbnRzIG9mIHRoaXMgY29s
bGVjdGlvbiBmb2xsb3dlZAorICAgIGJ5IGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlIFxhIG90aGVy
IGNvbGxlY3Rpb24uIER1cGxpY2F0ZXMgbWF5IG9jY3VyIGluIHRoZSByZXN1bHQuCisKKyAgICBc
c2Egb3BlcmF0b3IrPSgpCisqLworUVdlYkVsZW1lbnRDb2xsZWN0aW9uIFFXZWJFbGVtZW50Q29s
bGVjdGlvbjo6b3BlcmF0b3IrKGNvbnN0IFFXZWJFbGVtZW50Q29sbGVjdGlvbiAmb3RoZXIpIGNv
bnN0Cit7CisgICAgUVdlYkVsZW1lbnRDb2xsZWN0aW9uIG4gPSAqdGhpczsgbi5kLmRldGFjaCgp
OyBuICs9IG90aGVyOyByZXR1cm4gbjsKK30KKworLyohCisgICAgRXh0ZW5kcyB0aGUgY29sbGVj
dGlvbiBieSBhcHBlbmRpbmcgYWxsIGl0ZW1zIG9mIFxhIG90aGVyLgorCisgICAgVGhlIHJlc3Vs
dGluZyBjb2xsZWN0aW9uIG1heSBpbmNsdWRlIGR1cGxpY2F0ZSBlbGVtZW50cy4KKworICAgIFxz
YSBvcGVyYXRvcis9KCkKKyovCit2b2lkIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6YXBwZW5kKGNv
bnN0IFFXZWJFbGVtZW50Q29sbGVjdGlvbiAmb3RoZXIpCit7CisgICAgaWYgKCFkKSB7CisgICAg
ICAgICp0aGlzID0gb3RoZXI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFvdGhl
ci5kKQorICAgICAgICByZXR1cm47CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5vZGVzOwor
ICAgIFJlZlB0cjxOb2RlTGlzdD4gcmVzdWx0c1tdID0geyBkLT5tX3Jlc3VsdCwgb3RoZXIuZC0+
bV9yZXN1bHQgfTsKKyAgICBub2Rlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlc3VsdHNbMF0t
Pmxlbmd0aCgpICsgcmVzdWx0c1sxXS0+bGVuZ3RoKCkpOworCisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCAyOyArK2kpIHsKKyAgICAgICAgaW50IGogPSAwOworICAgICAgICBOb2RlKiBuID0gcmVz
dWx0c1tpXS0+aXRlbShqKTsKKyAgICAgICAgd2hpbGUgKG4pIHsKKyAgICAgICAgICAgIG5vZGVz
LmFwcGVuZChuKTsKKyAgICAgICAgICAgIG4gPSByZXN1bHRzW2ldLT5pdGVtKCsraik7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBkLT5tX3Jlc3VsdCA9IFN0YXRpY05vZGVMaXN0OjphZG9wdChu
b2Rlcyk7Cit9CisKKy8qIQorICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0
aGUgY29sbGVjdGlvbi4KKyovCitpbnQgUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpjb3VudCgpIGNv
bnN0Cit7CisgICAgaWYgKCFkKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZC0+bV9y
ZXN1bHQtPmxlbmd0aCgpOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRoZSBlbGVtZW50IGF0IGlu
ZGV4IHBvc2l0aW9uIFxhIGkgaW4gdGhlIGNvbGxlY3Rpb24uCisqLworUVdlYkVsZW1lbnQgUVdl
YkVsZW1lbnRDb2xsZWN0aW9uOjphdChpbnQgaSkgY29uc3QKK3sKKyAgICBpZiAoIWQpCisgICAg
ICAgIHJldHVybiBRV2ViRWxlbWVudCgpOworICAgIE5vZGUqIG4gPSBkLT5tX3Jlc3VsdC0+aXRl
bShpKTsKKyAgICByZXR1cm4gUVdlYkVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pKTsK
K30KKworLyohCisgICAgXGZuIGNvbnN0IFFXZWJFbGVtZW50IFFXZWJFbGVtZW50Q29sbGVjdGlv
bjo6b3BlcmF0b3JbXShpbnQgcG9zaXRpb24pIGNvbnN0CisKKyAgICBSZXR1cm5zIHRoZSBlbGVt
ZW50IGF0IHRoZSBzcGVjaWZpZWQgXGEgcG9zaXRpb24gaW4gdGhlIGNvbGxlY3Rpb24uCisqLwor
CisvKiEgXGZuIFFXZWJFbGVtZW50IFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6Zmlyc3QoKSBjb25z
dAorCisgICAgUmV0dXJucyB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgY29sbGVjdGlvbi4KKwor
ICAgIFxzYSBsYXN0KCksIG9wZXJhdG9yW10oKSwgYXQoKSwgY291bnQoKQorKi8KKworLyohIFxm
biBRV2ViRWxlbWVudCBRV2ViRWxlbWVudENvbGxlY3Rpb246Omxhc3QoKSBjb25zdAorCisgICAg
UmV0dXJucyB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSBjb2xsZWN0aW9uLgorCisgICAgXHNhIGZp
cnN0KCksIG9wZXJhdG9yW10oKSwgYXQoKSwgY291bnQoKQorKi8KKworLyohCisgICAgUmV0dXJu
cyBhIFFMaXN0IG9iamVjdCB3aXRoIHRoZSBlbGVtZW50cyBjb250YWluZWQgaW4gdGhpcyBjb2xs
ZWN0aW9uLgorKi8KK1FMaXN0PFFXZWJFbGVtZW50PiBRV2ViRWxlbWVudENvbGxlY3Rpb246OnRv
TGlzdCgpIGNvbnN0Cit7CisgICAgaWYgKCFkKQorICAgICAgICByZXR1cm4gUUxpc3Q8UVdlYkVs
ZW1lbnQ+KCk7CisgICAgUUxpc3Q8UVdlYkVsZW1lbnQ+IGVsZW1lbnRzOworICAgIGludCBpID0g
MDsKKyAgICBOb2RlKiBuID0gZC0+bV9yZXN1bHQtPml0ZW0oaSk7CisgICAgd2hpbGUgKG4pIHsK
KyAgICAgICAgaWYgKG4tPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIGVsZW1lbnRzLmFw
cGVuZChRV2ViRWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obikpKTsKKyAgICAgICAgbiA9
IGQtPm1fcmVzdWx0LT5pdGVtKCsraSk7CisgICAgfQorICAgIHJldHVybiBlbGVtZW50czsKK30K
KworLyohCisgICAgXGZuIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6Y29uc3RfaXRlcmF0b3IgUVdl
YkVsZW1lbnRDb2xsZWN0aW9uOjpiZWdpbigpIGNvbnN0CisKKyAgICBSZXR1cm5zIGFuIFNUTC1z
dHlsZSBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgY29sbGVj
dGlvbi4KKworICAgIFxzYSBlbmQoKQorKi8KKworLyohCisgICAgXGZuIFFXZWJFbGVtZW50Q29s
bGVjdGlvbjo6Y29uc3RfaXRlcmF0b3IgUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjplbmQoKSBjb25z
dAorCisgICAgUmV0dXJucyBhbiBTVEwtc3R5bGUgaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIGlt
YWdpbmFyeSBlbGVtZW50IGFmdGVyIHRoZQorICAgIGxhc3QgZWxlbWVudCBpbiB0aGUgbGlzdC4K
KworICAgIFxzYSBiZWdpbigpCisqLworCisvKiEKKyAgICBcY2xhc3MgUVdlYkVsZW1lbnRDb2xs
ZWN0aW9uOjpjb25zdF9pdGVyYXRvcgorICAgIFxzaW5jZSA0LjYKKyAgICBcYnJpZWYgVGhlIFFX
ZWJFbGVtZW50Q29sbGVjdGlvbjo6Y29uc3RfaXRlcmF0b3IgY2xhc3MgcHJvdmlkZXMgYW4gU1RM
LXN0eWxlIGNvbnN0IGl0ZXJhdG9yIGZvciBRV2ViRWxlbWVudENvbGxlY3Rpb24uCisKKyAgICBR
V2ViRWxlbWVudENvbGxlY3Rpb24gcHJvdmlkZXMgU1RMIHN0eWxlIGNvbnN0IGl0ZXJhdG9ycyBm
b3IgZmFzdCBsb3ctbGV2ZWwgYWNjZXNzIHRvIHRoZSBlbGVtZW50cy4KKworICAgIFFXZWJFbGVt
ZW50Q29sbGVjdGlvbjo6Y29uc3RfaXRlcmF0b3IgYWxsb3dzIHlvdSB0byBpdGVyYXRlIG92ZXIg
YSBRV2ViRWxlbWVudENvbGxlY3Rpb24uCisKKyAgICBUaGUgZGVmYXVsdCBRV2ViRWxlbWVudENv
bGxlY3Rpb246OmNvbnN0X2l0ZXJhdG9yIGNvbnN0cnVjdG9ycyBjcmVhdGVzIGFuIHVuaW5pdGlh
bGl6ZWQgaXRlcmF0b3IuIFlvdSBtdXN0IGluaXRpYWxpemUKKyAgICBpdCB1c2luZyBhIFFXZWJF
bGVtZW50Q29sbGVjdGlvbiBmdW5jdGlvbiBsaWtlIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6YmVn
aW4oKSBvciBRV2ViRWxlbWVudENvbGxlY3Rpb246OmVuZCgpIGJlZm9yZSB5b3UKKyAgICBjYW4g
c3RhcnQgaXRlcmF0aW5nLgorKi8KKworLyohCisgICAgXGZuIFFXZWJFbGVtZW50Q29sbGVjdGlv
bjo6Y29uc3RfaXRlcmF0b3I6OmNvbnN0X2l0ZXJhdG9yKCkKKworICAgIENvbnN0cnVjdHMgYW4g
dW5pbml0aWFsaXplZCBpdGVyYXRvci4KKworICAgIEZ1bmN0aW9ucyBsaWtlIG9wZXJhdG9yKigp
IGFuZCBvcGVyYXRvcisrKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgb24KKyAgICBhbiB1bmluaXRp
YWxpemVkIGl0ZXJhdG9yLiBVc2Ugb3BlcmF0b3I9KCkgdG8gYXNzaWduIGEgdmFsdWUKKyAgICB0
byBpdCBiZWZvcmUgdXNpbmcgaXQuCisKKyAgICBcc2EgUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpi
ZWdpbigpCisqLworCisvKiEKKyAgICBcZm4gUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpjb25zdF9p
dGVyYXRvcjo6Y29uc3RfaXRlcmF0b3IoY29uc3QgY29uc3RfaXRlcmF0b3IgJm90aGVyKQorCisg
ICAgQ29uc3RydWN0cyBhIGNvcHkgb2YgXGEgb3RoZXIuCisqLworCisvKiEKKyAgICBcZm4gUVdl
YkVsZW1lbnRDb2xsZWN0aW9uOjpjb25zdF9pdGVyYXRvcjo6Y29uc3RfaXRlcmF0b3IoY29uc3Qg
UVdlYkVsZW1lbnRDb2xsZWN0aW9uICpjb2xsZWN0aW9uLCBpbnQgaW5kZXgpCisgICAgXGludGVy
bmFsCisqLworCisvKiEKKyAgICBcZm4gY29uc3QgUVdlYkVsZW1lbnQgUVdlYkVsZW1lbnRDb2xs
ZWN0aW9uOjpjb25zdF9pdGVyYXRvcjo6b3BlcmF0b3IqKCkgY29uc3QKKworICAgIFJldHVybnMg
dGhlIGN1cnJlbnQgZWxlbWVudC4KKyovCisKKy8qIQorICAgIFxmbiBib29sIFFXZWJFbGVtZW50
Q29sbGVjdGlvbjo6Y29uc3RfaXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgY29uc3RfaXRlcmF0
b3IgJm90aGVyKSBjb25zdAorCisgICAgUmV0dXJucyB0cnVlIGlmIFxhIG90aGVyIHBvaW50cyB0
byB0aGUgc2FtZSBpdGVtIGFzIHRoaXMgaXRlcmF0b3I7CisgICAgb3RoZXJ3aXNlIHJldHVybnMg
ZmFsc2UuCisKKyAgICBcc2Egb3BlcmF0b3IhPSgpCisqLworCisvKiEKKyAgICBcZm4gYm9vbCBR
V2ViRWxlbWVudENvbGxlY3Rpb246OmNvbnN0X2l0ZXJhdG9yOjpvcGVyYXRvciE9KGNvbnN0IGNv
bnN0X2l0ZXJhdG9yICZvdGhlcikgY29uc3QKKworICAgIFJldHVybnMgdHJ1ZSBpZiBcYSBvdGhl
ciBwb2ludHMgdG8gYSBkaWZmZXJlbnQgZWxlbWVudCB0aGFuIHRoaXM7CisgICAgaXRlcmF0b3I7
IG90aGVyd2lzZSByZXR1cm5zIGZhbHNlLgorCisgICAgXHNhIG9wZXJhdG9yPT0oKQorKi8KKwor
LyohCisgICAgXGZuIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6Y29uc3RfaXRlcmF0b3IgJlFXZWJF
bGVtZW50Q29sbGVjdGlvbjo6Y29uc3RfaXRlcmF0b3I6Om9wZXJhdG9yKysoKQorCisgICAgVGhl
IHByZWZpeCArKyBvcGVyYXRvciAoXGN7KytpdH0pIGFkdmFuY2VzIHRoZSBpdGVyYXRvciB0byB0
aGUgbmV4dCBlbGVtZW50IGluIHRoZSBjb2xsZWN0aW9uCisgICAgYW5kIHJldHVybnMgYW4gaXRl
cmF0b3IgdG8gdGhlIG5ldyBjdXJyZW50IGVsZW1lbnQuCisKKyAgICBDYWxsaW5nIHRoaXMgZnVu
Y3Rpb24gb24gUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjplbmQoKSBsZWFkcyB0byB1bmRlZmluZWQg
cmVzdWx0cy4KKworICAgIFxzYSBvcGVyYXRvci0tKCkKKyovCisKKy8qIQorICAgIFxmbiBRV2Vi
RWxlbWVudENvbGxlY3Rpb246OmNvbnN0X2l0ZXJhdG9yIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6
Y29uc3RfaXRlcmF0b3I6Om9wZXJhdG9yKysoaW50KQorCisgICAgXG92ZXJsb2FkCisKKyAgICBU
aGUgcG9zdGZpeCArKyBvcGVyYXRvciAoXGN7aXQrK30pIGFkdmFuY2VzIHRoZSBpdGVyYXRvciB0
byB0aGUgbmV4dCBlbGVtZW50IGluIHRoZSBjb2xsZWN0aW9uCisgICAgYW5kIHJldHVybnMgYW4g
aXRlcmF0b3IgdG8gdGhlIHByZXZpb3VzbHkgY3VycmVudCBlbGVtZW50LgorCisgICAgQ2FsbGlu
ZyB0aGlzIGZ1bmN0aW9uIG9uIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6ZW5kKCkgbGVhZHMgdG8g
dW5kZWZpbmVkIHJlc3VsdHMuCisqLworCisvKiEKKyAgICBcZm4gUVdlYkVsZW1lbnRDb2xsZWN0
aW9uOjpjb25zdF9pdGVyYXRvciAmUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpjb25zdF9pdGVyYXRv
cjo6b3BlcmF0b3ItLSgpCisKKyAgICBUaGUgcHJlZml4IC0tIG9wZXJhdG9yIChcY3stLWl0fSkg
bWFrZXMgdGhlIHByZWNlZGluZyBlbGVtZW50IGN1cnJlbnQgYW5kIHJldHVybnMgYW4KKyAgICBp
dGVyYXRvciB0byB0aGUgbmV3IGN1cnJlbnQgZWxlbWVudC4KKworICAgIENhbGxpbmcgdGhpcyBm
dW5jdGlvbiBvbiBRV2ViRWxlbWVudENvbGxlY3Rpb246OmJlZ2luKCkgbGVhZHMgdG8gdW5kZWZp
bmVkIHJlc3VsdHMuCisKKyAgICBcc2Egb3BlcmF0b3IrKygpCisqLworCisvKiEKKyAgICBcZm4g
UVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpjb25zdF9pdGVyYXRvciBRV2ViRWxlbWVudENvbGxlY3Rp
b246OmNvbnN0X2l0ZXJhdG9yOjpvcGVyYXRvci0tKGludCkKKworICAgIFxvdmVybG9hZAorCisg
ICAgVGhlIHBvc3RmaXggLS0gb3BlcmF0b3IgKFxje2l0LS19KSBtYWtlcyB0aGUgcHJlY2VkaW5n
IGVsZW1lbnQgY3VycmVudCBhbmQgcmV0dXJucworICAgIGFuIGl0ZXJhdG9yIHRvIHRoZSBwcmV2
aW91c2x5IGN1cnJlbnQgZWxlbWVudC4KKyovCisKKy8qIQorICAgIFxmbiBRV2ViRWxlbWVudENv
bGxlY3Rpb246OmNvbnN0X2l0ZXJhdG9yICZRV2ViRWxlbWVudENvbGxlY3Rpb246OmNvbnN0X2l0
ZXJhdG9yOjpvcGVyYXRvcis9KGludCBqKQorCisgICAgQWR2YW5jZXMgdGhlIGl0ZXJhdG9yIGJ5
IFxhIGogZWxlbWVudHMuIElmIFxhIGogaXMgbmVnYXRpdmUsIHRoZSBpdGVyYXRvciBnb2VzIGJh
Y2t3YXJkLgorCisgICAgXHNhIG9wZXJhdG9yLT0oKSwgb3BlcmF0b3IrKCkKKyovCisKKy8qIQor
ICAgIFxmbiBRV2ViRWxlbWVudENvbGxlY3Rpb246OmNvbnN0X2l0ZXJhdG9yICZRV2ViRWxlbWVu
dENvbGxlY3Rpb246OmNvbnN0X2l0ZXJhdG9yOjpvcGVyYXRvci09KGludCBqKQorCisgICAgTWFr
ZXMgdGhlIGl0ZXJhdG9yIGdvIGJhY2sgYnkgXGEgaiBlbGVtZW50cy4gSWYgXGEgaiBpcyBuZWdh
dGl2ZSwgdGhlIGl0ZXJhdG9yIGdvZXMgZm9yd2FyZC4KKworICAgIFxzYSBvcGVyYXRvcis9KCks
IG9wZXJhdG9yLSgpCisqLworCisvKiEKKyAgICBcZm4gUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpj
b25zdF9pdGVyYXRvciBRV2ViRWxlbWVudENvbGxlY3Rpb246OmNvbnN0X2l0ZXJhdG9yOjpvcGVy
YXRvcisoaW50IGopIGNvbnN0CisKKyAgICBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBlbGVt
ZW50IGF0IFxhIGogcG9zaXRpb25zIGZvcndhcmQgZnJvbSB0aGlzIGl0ZXJhdG9yLiBJZiBcYSBq
CisgICAgaXMgbmVnYXRpdmUsIHRoZSBpdGVyYXRvciBnb2VzIGJhY2t3YXJkLgorCisgICAgXHNh
IG9wZXJhdG9yLSgpLCBvcGVyYXRvcis9KCkKKyovCisKKy8qIQorICAgIFxmbiBRV2ViRWxlbWVu
dENvbGxlY3Rpb246OmNvbnN0X2l0ZXJhdG9yIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6Y29uc3Rf
aXRlcmF0b3I6Om9wZXJhdG9yLShpbnQgaikgY29uc3QKKworICAgIFJldHVybnMgYW4gaXRlcmF0
b3IgdG8gdGhlIGVsZW1lbnQgYXQgXGEgaiBwb3NpdGlvc24gYmFja3dhcmQgZnJvbSB0aGlzIGl0
ZXJhdG9yLgorICAgIElmIFxhIGogaXMgbmVnYXRpdmUsIHRoZSBpdGVyYXRvciBnb2VzIGZvcndh
cmQuCisKKyAgICBcc2Egb3BlcmF0b3IrKCksIG9wZXJhdG9yLT0oKQorKi8KKworLyohCisgICAg
XGZuIGludCBRV2ViRWxlbWVudENvbGxlY3Rpb246OmNvbnN0X2l0ZXJhdG9yOjpvcGVyYXRvci0o
Y29uc3RfaXRlcmF0b3Igb3RoZXIpIGNvbnN0CisKKyAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2Yg
ZWxlbWVudHMgYmV0d2VlbiB0aGUgaXRlbSBwb2ludCB0byBieSBcYSBvdGhlcgorICAgIGFuZCB0
aGUgZWxlbWVudCBwb2ludGVkIHRvIGJ5IHRoaXMgaXRlcmF0b3IuCisqLworCisvKiEKKyAgICBc
Zm4gYm9vbCBRV2ViRWxlbWVudENvbGxlY3Rpb246OmNvbnN0X2l0ZXJhdG9yOjpvcGVyYXRvcjwo
Y29uc3QgY29uc3RfaXRlcmF0b3IgJm90aGVyKSBjb25zdAorCisgICAgUmV0dXJucyB0cnVlIGlm
IHRoZSBlbGVtZW50IHBvaW50ZWQgdG8gYnkgdGhpcyBpdGVyYXRvciBpcyBsZXNzIHRoYW4gdGhl
IGVsZW1lbnQgcG9pbnRlZCB0bworICAgIGJ5IHRoZSBcYSBvdGhlciBpdGVyYXRvci4KKyovCisK
Ky8qIQorICAgIFxmbiBib29sIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6Y29uc3RfaXRlcmF0b3I6
Om9wZXJhdG9yPD0oY29uc3QgY29uc3RfaXRlcmF0b3IgJm90aGVyKSBjb25zdAorCisgICAgUmV0
dXJucyB0cnVlIGlmIHRoZSBlbGVtZW50IHBvaW50ZWQgdG8gYnkgdGhpcyBpdGVyYXRvciBpcyBs
ZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlCisgICAgZWxlbWVudCBwb2ludGVkIHRvIGJ5IHRoZSBc
YSBvdGhlciBpdGVyYXRvci4KKyovCisKKy8qIQorICAgIFxmbiBib29sIFFXZWJFbGVtZW50Q29s
bGVjdGlvbjo6Y29uc3RfaXRlcmF0b3I6Om9wZXJhdG9yPihjb25zdCBjb25zdF9pdGVyYXRvciAm
b3RoZXIpIGNvbnN0CisKKyAgICBSZXR1cm5zIHRydWUgaWYgdGhlIGVsZW1lbnQgcG9pbnRlZCB0
byBieSB0aGlzIGl0ZXJhdG9yIGlzIGdyZWF0ZXIgdGhhbiB0aGUgZWxlbWVudCBwb2ludGVkIHRv
CisgICAgYnkgdGhlIFxhIG90aGVyIGl0ZXJhdG9yLgorKi8KKworLyohCisgICAgXGZuIGJvb2wg
UVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpjb25zdF9pdGVyYXRvcjo6b3BlcmF0b3I+PShjb25zdCBj
b25zdF9pdGVyYXRvciAmb3RoZXIpIGNvbnN0CisKKyAgICBSZXR1cm5zIHRydWUgaWYgdGhlIGVs
ZW1lbnQgcG9pbnRlZCB0byBieSB0aGlzIGl0ZXJhdG9yIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVh
bCB0byB0aGUKKyAgICBlbGVtZW50IHBvaW50ZWQgdG8gYnkgdGhlIFxhIG90aGVyIGl0ZXJhdG9y
LgorKi8KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuaCBiL1dlYktpdC9x
dC9BcGkvcXdlYmVsZW1lbnQuaAppbmRleCAzNTFjY2I0Li41OGU3Y2E1IDEwMDY0NAotLS0gYS9X
ZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVu
dC5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIFFQYWludGVyOwogUVRfRU5EX05BTUVTUEFDRQog
CiBjbGFzcyBRV2ViRnJhbWU7CitjbGFzcyBRV2ViRWxlbWVudENvbGxlY3Rpb247CiBjbGFzcyBR
V2ViRWxlbWVudFByaXZhdGU7CiAKIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJFbGVtZW50IHsK
QEAgLTUwLDggKzUxLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKIAot
ICAgIFFMaXN0PFFXZWJFbGVtZW50PiBmaW5kQWxsKGNvbnN0IFFTdHJpbmcmIHNlbGVjdG9yUXVl
cnkpIGNvbnN0OwotICAgIFFXZWJFbGVtZW50IGZpbmRGaXJzdChjb25zdCBRU3RyaW5nJiBzZWxl
Y3RvclF1ZXJ5KSBjb25zdDsKKyAgICBRV2ViRWxlbWVudENvbGxlY3Rpb24gZmluZEFsbChjb25z
dCBRU3RyaW5nICZzZWxlY3RvclF1ZXJ5KSBjb25zdDsKKyAgICBRV2ViRWxlbWVudCBmaW5kRmly
c3QoY29uc3QgUVN0cmluZyAmc2VsZWN0b3JRdWVyeSkgY29uc3Q7CiAKICAgICB2b2lkIHNldFBs
YWluVGV4dChjb25zdCBRU3RyaW5nJiB0ZXh0KTsKICAgICBRU3RyaW5nIHRvUGxhaW5UZXh0KCkg
Y29uc3Q7CkBAIC05Niw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICBRV2ViRWxlbWVudCBkb2N1bWVu
dCgpIGNvbnN0OwogICAgIFFXZWJGcmFtZSAqd2ViRnJhbWUoKSBjb25zdDsKIAotICAgIC8vIFRP
RE86IEFkZCBRTGlzdDxRV2ViRWxlbWVudD4gb3ZlcmxvYWRzCisgICAgLy8gVE9ETzogQWRkIFFX
ZWJFbGVtZW50Q29sbGVjdGlvbiBvdmVybG9hZHMKICAgICAvLyBkb2NzIG5lZWQgZXhhbXBsZSBz
bmlwcGV0CiAgICAgdm9pZCBhcHBlbmRJbnNpZGUoY29uc3QgUVN0cmluZyYgbWFya3VwKTsKICAg
ICB2b2lkIGFwcGVuZEluc2lkZShjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCk7CkBAIC0xNDYs
NiArMTQ3LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgUVdlYkVsZW1lbnQgZW5jbG9zaW5nRWxl
bWVudChXZWJDb3JlOjpOb2RlKik7CiAKICAgICBmcmllbmQgY2xhc3MgUVdlYkZyYW1lOworICAg
IGZyaWVuZCBjbGFzcyBRV2ViRWxlbWVudENvbGxlY3Rpb247CiAgICAgZnJpZW5kIGNsYXNzIFFX
ZWJIaXRUZXN0UmVzdWx0OwogICAgIGZyaWVuZCBjbGFzcyBRV2ViSGl0VGVzdFJlc3VsdFByaXZh
dGU7CiAgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlOwpAQCAtMTU0LDQgKzE1Niw3MCBAQCBwcml2
YXRlOgogICAgIFdlYkNvcmU6OkVsZW1lbnQqIG1fZWxlbWVudDsKIH07CiAKK2NsYXNzIFFXZWJF
bGVtZW50Q29sbGVjdGlvblByaXZhdGU7CisKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJFbGVt
ZW50Q29sbGVjdGlvbgoreworcHVibGljOgorICAgIFFXZWJFbGVtZW50Q29sbGVjdGlvbigpOwor
ICAgIFFXZWJFbGVtZW50Q29sbGVjdGlvbihjb25zdCBRV2ViRWxlbWVudCAmY29udGV4dEVsZW1l
bnQsIGNvbnN0IFFTdHJpbmcgJnF1ZXJ5KTsKKyAgICBRV2ViRWxlbWVudENvbGxlY3Rpb24oY29u
c3QgUVdlYkVsZW1lbnRDb2xsZWN0aW9uICYpOworICAgIFFXZWJFbGVtZW50Q29sbGVjdGlvbiAm
b3BlcmF0b3I9KGNvbnN0IFFXZWJFbGVtZW50Q29sbGVjdGlvbiAmKTsKKyAgICB+UVdlYkVsZW1l
bnRDb2xsZWN0aW9uKCk7CisKKyAgICBRV2ViRWxlbWVudENvbGxlY3Rpb24gb3BlcmF0b3IrKGNv
bnN0IFFXZWJFbGVtZW50Q29sbGVjdGlvbiAmb3RoZXIpIGNvbnN0OworICAgIGlubGluZSBRV2Vi
RWxlbWVudENvbGxlY3Rpb24gJm9wZXJhdG9yKz0oY29uc3QgUVdlYkVsZW1lbnRDb2xsZWN0aW9u
ICZvdGhlcikKKyAgICB7CisgICAgICAgIGFwcGVuZChvdGhlcik7IHJldHVybiAqdGhpczsKKyAg
ICB9CisKKyAgICB2b2lkIGFwcGVuZChjb25zdCBRV2ViRWxlbWVudENvbGxlY3Rpb24gJmNvbGxl
Y3Rpb24pOworCisgICAgaW50IGNvdW50KCkgY29uc3Q7CisgICAgUVdlYkVsZW1lbnQgYXQoaW50
IGkpIGNvbnN0OworCisgICAgaW5saW5lIFFXZWJFbGVtZW50IGZpcnN0KCkgY29uc3QgeyByZXR1
cm4gYXQoMCk7IH0KKyAgICBpbmxpbmUgUVdlYkVsZW1lbnQgbGFzdCgpIGNvbnN0IHsgcmV0dXJu
IGF0KGNvdW50KCkgLSAxKTsgfQorCisgICAgUUxpc3Q8UVdlYkVsZW1lbnQ+IHRvTGlzdCgpIGNv
bnN0OworCisgICAgY2xhc3MgY29uc3RfaXRlcmF0b3IgeworICAgICAgIHB1YmxpYzoKKyAgICAg
ICAgICAgaW50IGk7CisgICAgICAgICAgIGNvbnN0IFFXZWJFbGVtZW50Q29sbGVjdGlvbiAqczsK
KworICAgICAgICAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IoY29uc3QgUVdlYkVsZW1lbnRDb2xs
ZWN0aW9uICpjb2xsZWN0aW9uLCBpbnQgaW5kZXgpIDogaShpbmRleCksIHMoY29sbGVjdGlvbikg
e30KKyAgICAgICAgICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yKGNvbnN0IGNvbnN0X2l0ZXJhdG9y
ICZvKSA6IGkoby5pKSwgcyhvLnMpIHt9CisKKyAgICAgICAgICAgaW5saW5lIGNvbnN0IFFXZWJF
bGVtZW50IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIHMtPmF0KGkpOyB9CisKKyAgICAgICAg
ICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjb25zdF9pdGVyYXRvciYgbykgY29uc3Qg
eyByZXR1cm4gaSA9PSBvLmkgJiYgcyA9PSBvLnM7IH0KKyAgICAgICAgICAgaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBjb25zdF9pdGVyYXRvciYgbykgY29uc3QgeyByZXR1cm4gaSAhPSBv
LmkgfHwgcyAhPSBvLnM7IH0KKyAgICAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0
IGNvbnN0X2l0ZXJhdG9yJiBvKSBjb25zdCB7IHJldHVybiBpIDwgby5pOyB9CisgICAgICAgICAg
IGlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgY29uc3RfaXRlcmF0b3ImIG8pIGNvbnN0IHsg
cmV0dXJuIGkgPD0gby5pOyB9CisgICAgICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPihjb25z
dCBjb25zdF9pdGVyYXRvciYgbykgY29uc3QgeyByZXR1cm4gaSA+IG8uaTsgfQorICAgICAgICAg
ICBpbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBvKSBjb25zdCB7
IHJldHVybiBpID49IG8uaTsgfQorCisgICAgICAgICAgIGlubGluZSBjb25zdF9pdGVyYXRvciAm
b3BlcmF0b3IrKygpIHsgKytpOyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAgICAgaW5saW5lIGNv
bnN0X2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KSB7IGNvbnN0X2l0ZXJhdG9yIG4ocywgaSk7ICsr
aTsgcmV0dXJuIG47IH0KKyAgICAgICAgICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yICZvcGVyYXRv
ci0tKCkgeyBpLS07IHJldHVybiAqdGhpczsgfQorICAgICAgICAgICBpbmxpbmUgY29uc3RfaXRl
cmF0b3Igb3BlcmF0b3ItLShpbnQpIHsgY29uc3RfaXRlcmF0b3IgbihzLCBpKTsgaS0tOyByZXR1
cm4gbjsgfQorICAgICAgICAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IgJm9wZXJhdG9yKz0oaW50
IGopIHsgaSArPSBqOyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAgICAgaW5saW5lIGNvbnN0X2l0
ZXJhdG9yICZvcGVyYXRvci09KGludCBqKSB7IGkgLT0gajsgcmV0dXJuICp0aGlzOyB9CisgICAg
ICAgICAgIGlubGluZSBjb25zdF9pdGVyYXRvciBvcGVyYXRvcisoaW50IGopIGNvbnN0IHsgcmV0
dXJuIGNvbnN0X2l0ZXJhdG9yKHMsIGkgKyBqKTsgfQorICAgICAgICAgICBpbmxpbmUgY29uc3Rf
aXRlcmF0b3Igb3BlcmF0b3ItKGludCBqKSBjb25zdCB7IHJldHVybiBjb25zdF9pdGVyYXRvcihz
LCBpIC0gaik7IH0KKyAgICAgICAgICAgaW5saW5lIGludCBvcGVyYXRvci0oY29uc3RfaXRlcmF0
b3IgaikgY29uc3QgeyByZXR1cm4gaSAtIGouaTsgfQorICAgICAgIHByaXZhdGU6CisgICAgICAg
ICAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IoKSA6IGkoMCksIHMoMCkge30KKyAgICB9OworICAg
IGZyaWVuZCBjbGFzcyBjb25zdF9pdGVyYXRvcjsKKworICAgIGlubGluZSBjb25zdF9pdGVyYXRv
ciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRoaXMsIDApOyB9CisgICAg
aW5saW5lIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9y
KHRoaXMsIGNvdW50KCkpOyB9CisgICAgaW5saW5lIFFXZWJFbGVtZW50IG9wZXJhdG9yW10oaW50
IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CisKK3ByaXZhdGU6CisgICAgUUV4cGxpY2l0bHlT
aGFyZWREYXRhUG9pbnRlcjxRV2ViRWxlbWVudENvbGxlY3Rpb25Qcml2YXRlPiBkOworfTsKKwog
I2VuZGlmIC8vIFFXRUJFTEVNRU5UX0gKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZy
YW1lLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAppbmRleCA0NWRiZmJhLi4yMmU0
N2NmIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0
L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC0xMTQxLDcgKzExNDEsNyBAQCBRV2ViRWxlbWVudCBR
V2ViRnJhbWU6OmRvY3VtZW50RWxlbWVudCgpIGNvbnN0CiAKICAgICBcc2EgUVdlYkVsZW1lbnQ6
OmZpbmRBbGwoKQogKi8KLVFMaXN0PFFXZWJFbGVtZW50PiBRV2ViRnJhbWU6OmZpbmRBbGxFbGVt
ZW50cyhjb25zdCBRU3RyaW5nICZzZWxlY3RvclF1ZXJ5KSBjb25zdAorUVdlYkVsZW1lbnRDb2xs
ZWN0aW9uIFFXZWJGcmFtZTo6ZmluZEFsbEVsZW1lbnRzKGNvbnN0IFFTdHJpbmcgJnNlbGVjdG9y
UXVlcnkpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudCgpLmZpbmRBbGwoc2Vs
ZWN0b3JRdWVyeSk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oIGIv
V2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaAppbmRleCBlNGNlZjA2Li4wODI4NWY4IDEwMDY0NAot
LS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYmZy
YW1lLmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgUVdlYkhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBR
V2ViSGlzdG9yeUl0ZW07CiBjbGFzcyBRV2ViU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBRV2ViRWxl
bWVudDsKK2NsYXNzIFFXZWJFbGVtZW50Q29sbGVjdGlvbjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIFdpZGdldFByaXZhdGU7CkBAIC0xOTAsNyArMTkxLDcgQEAgcHVibGljOgog
ICAgIFFTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0OwogCiAgICAgUVdlYkVsZW1lbnQgZG9jdW1l
bnRFbGVtZW50KCkgY29uc3Q7Ci0gICAgUUxpc3Q8UVdlYkVsZW1lbnQ+IGZpbmRBbGxFbGVtZW50
cyhjb25zdCBRU3RyaW5nICZzZWxlY3RvclF1ZXJ5KSBjb25zdDsKKyAgICBRV2ViRWxlbWVudENv
bGxlY3Rpb24gZmluZEFsbEVsZW1lbnRzKGNvbnN0IFFTdHJpbmcgJnNlbGVjdG9yUXVlcnkpIGNv
bnN0OwogICAgIFFXZWJFbGVtZW50IGZpbmRGaXJzdEVsZW1lbnQoY29uc3QgUVN0cmluZyAmc2Vs
ZWN0b3JRdWVyeSkgY29uc3Q7CiAKICAgICBRV2ViSGl0VGVzdFJlc3VsdCBoaXRUZXN0Q29udGVu
dChjb25zdCBRUG9pbnQgJnBvcykgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdl
TG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBlYTAzY2JkLi5mNWQ3Y2I0IDEwMDY0NAot
LS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAwOS0xMC0yNiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluLnBvdWxh
aW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtRdF0gUmVpbnRyb2R1Y2UgUVdlYkVsZW1lbnRDb2xsZWN0aW9uCisKKyAgICAgICAg
UmV2ZXJ0IHRoZSBwYXRjaCB0aGF0IGhhcyByZXBsYWNlZCBRV2ViRWxlbWVudENvbGxlY3Rpb24g
CisgICAgICAgIHdpdGggUUxpc3Q8UVdlYkVsZW1lbnQ+LiBVcGRhdGUgdGhlIHRlc3RzIGFjY29y
ZGluZ2x5LgorCisgICAgICAgIFJlbW92ZSB0aGUgY29uc3RuZXNzIG9mIHRoZSByZXR1cm4gdHlw
ZSBvZiBRV2ViRWxlbWVudCBvcGVyYXRvcltdLiAKKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA3NjcKKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVu
dC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6ZmluZEFsbCk6CisgICAgICAgIChRV2ViRWxl
bWVudENvbGxlY3Rpb25Qcml2YXRlOjpRV2ViRWxlbWVudENvbGxlY3Rpb25Qcml2YXRlKToKKyAg
ICAgICAgKFFXZWJFbGVtZW50Q29sbGVjdGlvblByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgIChR
V2ViRWxlbWVudENvbGxlY3Rpb246OlFXZWJFbGVtZW50Q29sbGVjdGlvbik6CisgICAgICAgIChR
V2ViRWxlbWVudENvbGxlY3Rpb246Om9wZXJhdG9yPSk6CisgICAgICAgIChRV2ViRWxlbWVudENv
bGxlY3Rpb246On5RV2ViRWxlbWVudENvbGxlY3Rpb24pOgorICAgICAgICAoUVdlYkVsZW1lbnRD
b2xsZWN0aW9uOjpvcGVyYXRvcispOgorICAgICAgICAoUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjph
cHBlbmQpOgorICAgICAgICAoUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpjb3VudCk6CisgICAgICAg
IChRV2ViRWxlbWVudENvbGxlY3Rpb246OmF0KToKKyAgICAgICAgKFFXZWJFbGVtZW50Q29sbGVj
dGlvbjo6dG9MaXN0KToKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuaDoKKyAgICAgICAgKGNv
bnN0X2l0ZXJhdG9yOjpiZWdpbik6CisgICAgICAgIChjb25zdF9pdGVyYXRvcjo6ZW5kKToKKyAg
ICAgICAgKGNvbnN0X2l0ZXJhdG9yOjpvcGVyYXRvcltdKToKKyAgICAgICAgKiBBcGkvcXdlYmZy
YW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6ZmluZEFsbEVsZW1lbnRzKToKKyAgICAgICAg
KiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAg
ICAgKE1haW5XaW5kb3c6OnNlbGVjdEVsZW1lbnRzKToKKyAgICAgICAgKiB0ZXN0cy9xd2ViZWxl
bWVudC90c3RfcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjpzaW1w
bGVDb2xsZWN0aW9uKToKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6aXRlcmF0aW9uKToKKyAg
ICAgICAgKHRzdF9RV2ViRWxlbWVudDo6ZW1wdHlDb2xsZWN0aW9uKToKKyAgICAgICAgKHRzdF9R
V2ViRWxlbWVudDo6YXBwZW5kQ29sbGVjdGlvbik6CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6
Om51bGxTZWxlY3QpOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjpoYXNTZXRGb2N1cyk6Cisg
ICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OnJlbmRlcik6CisgICAgICAgICogdGVzdHMvcXdlYnBh
Z2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6aW5wdXRNZXRob2Rz
KToKKwogMjAwOS0xMC0yMCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgQnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBh
L1dlYktpdC9xdC9RdExhdW5jaGVyL21haW4uY3BwIGIvV2ViS2l0L3F0L1F0TGF1bmNoZXIvbWFp
bi5jcHAKaW5kZXggOGNlMDlkMi4uNzkxNWJhMyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1F0TGF1
bmNoZXIvbWFpbi5jcHAKKysrIGIvV2ViS2l0L3F0L1F0TGF1bmNoZXIvbWFpbi5jcHAKQEAgLTI1
Myw3ICsyNTMsNyBAQCBwcm90ZWN0ZWQgc2xvdHM6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFFMaW5lRWRpdDo6Tm9ybWFsLCAiYSIsICZvayk7CiAKICAgICAg
ICAgaWYgKG9rICYmICFzdHIuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBRTGlzdDxRV2ViRWxl
bWVudD4gcmVzdWx0ID0gIHZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmZpbmRBbGxFbGVtZW50
cyhzdHIpOworICAgICAgICAgICAgUVdlYkVsZW1lbnRDb2xsZWN0aW9uIHJlc3VsdCA9ICB2aWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5maW5kQWxsRWxlbWVudHMoc3RyKTsKICAgICAgICAgICAg
IGZvcmVhY2ggKFFXZWJFbGVtZW50IGUsIHJlc3VsdCkKICAgICAgICAgICAgICAgICBlLnNldFN0
eWxlUHJvcGVydHkoImJhY2tncm91bmQtY29sb3IiLCAieWVsbG93Iik7CiAgICAgICAgICAgICBz
dGF0dXNCYXIoKS0+c2hvd01lc3NhZ2UoUVN0cmluZygiJTEgZWxlbWVudChzKSBzZWxlY3RlZCIp
LmFyZyhyZXN1bHQuY291bnQoKSksIDUwMDApOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L3Rlc3Rz
L3F3ZWJlbGVtZW50L3RzdF9xd2ViZWxlbWVudC5jcHAgYi9XZWJLaXQvcXQvdGVzdHMvcXdlYmVs
ZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcAppbmRleCA3MzUzMjY4Li40Y2ZiNjY0IDEwMDY0NAot
LS0gYS9XZWJLaXQvcXQvdGVzdHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcAorKysg
Yi9XZWJLaXQvcXQvdGVzdHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcApAQCAtNzAs
NyArNzAsMTAgQEAgcHJpdmF0ZSBzbG90czoKICAgICB2b2lkIGF0dHJpYnV0ZXNOUygpOwogICAg
IHZvaWQgY2xhc3NlcygpOwogICAgIHZvaWQgbmFtZXNwYWNlVVJJKCk7CisgICAgdm9pZCBpdGVy
YXRpb24oKTsKICAgICB2b2lkIGZvcmVhY2hNYW5pcHVsYXRpb24oKTsKKyAgICB2b2lkIGVtcHR5
Q29sbGVjdGlvbigpOworICAgIHZvaWQgYXBwZW5kQ29sbGVjdGlvbigpOwogICAgIHZvaWQgZXZh
bHVhdGVKYXZhU2NyaXB0KCk7CiAgICAgdm9pZCBkb2N1bWVudEVsZW1lbnQoKTsKICAgICB2b2lk
IGZyYW1lKCk7CkBAIC0xMzQsNyArMTM3LDcgQEAgdm9pZCB0c3RfUVdlYkVsZW1lbnQ6OnNpbXBs
ZUNvbGxlY3Rpb24oKQogICAgIG1fbWFpbkZyYW1lLT5zZXRIdG1sKGh0bWwpOwogICAgIFFXZWJF
bGVtZW50IGJvZHkgPSBtX21haW5GcmFtZS0+ZG9jdW1lbnRFbGVtZW50KCk7CiAKLSAgICBRTGlz
dDxRV2ViRWxlbWVudD4gbGlzdCA9IGJvZHkuZmluZEFsbCgicCIpOworICAgIFFXZWJFbGVtZW50
Q29sbGVjdGlvbiBsaXN0ID0gYm9keS5maW5kQWxsKCJwIik7CiAgICAgUUNPTVBBUkUobGlzdC5j
b3VudCgpLCAyKTsKICAgICBRQ09NUEFSRShsaXN0LmF0KDApLnRvUGxhaW5UZXh0KCksIFFTdHJp
bmcoImZpcnN0IHBhcmEiKSk7CiAgICAgUUNPTVBBUkUobGlzdC5hdCgxKS50b1BsYWluVGV4dCgp
LCBRU3RyaW5nKCJzZWNvbmQgcGFyYSIpKTsKQEAgLTI2Nyw2ICsyNzAsNDEgQEAgdm9pZCB0c3Rf
UVdlYkVsZW1lbnQ6Om5hbWVzcGFjZVVSSSgpCiAKIH0KIAordm9pZCB0c3RfUVdlYkVsZW1lbnQ6
Oml0ZXJhdGlvbigpCit7CisgICAgUVN0cmluZyBodG1sID0gIjxib2R5PjxwPmZpcnN0IHBhcmE8
L3A+PHA+c2Vjb25kIHBhcmE8L3A+PC9ib2R5PiI7CisgICAgbV9tYWluRnJhbWUtPnNldEh0bWwo
aHRtbCk7CisgICAgUVdlYkVsZW1lbnQgYm9keSA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudEVsZW1l
bnQoKTsKKworICAgUVdlYkVsZW1lbnRDb2xsZWN0aW9uIHBhcmFzID0gYm9keS5maW5kQWxsKCJw
Iik7CisgICAgUUxpc3Q8UVdlYkVsZW1lbnQ+IHJlZmVyZW5jZUxpc3QgPSBwYXJhcy50b0xpc3Qo
KTsKKworICAgIFFMaXN0PFFXZWJFbGVtZW50PiBmb3JlYWNoTGlzdDsKKyAgICBmb3JlYWNoKFFX
ZWJFbGVtZW50IHAsIHBhcmFzKSB7CisgICAgICAgZm9yZWFjaExpc3QuYXBwZW5kKHApOworICAg
IH0KKyAgICBRVkVSSUZZKGZvcmVhY2hMaXN0LmNvdW50KCkgPT0gMik7CisgICAgUUNPTVBBUkUo
Zm9yZWFjaExpc3QuY291bnQoKSwgcmVmZXJlbmNlTGlzdC5jb3VudCgpKTsKKyAgICBRQ09NUEFS
RShmb3JlYWNoTGlzdC5hdCgwKSwgcmVmZXJlbmNlTGlzdC5hdCgwKSk7CisgICAgUUNPTVBBUkUo
Zm9yZWFjaExpc3QuYXQoMSksIHJlZmVyZW5jZUxpc3QuYXQoMSkpOworCisgICAgUUxpc3Q8UVdl
YkVsZW1lbnQ+IGZvckxvb3BMaXN0OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYXMuY291
bnQoKTsgKytpKSB7CisgICAgICAgIGZvckxvb3BMaXN0LmFwcGVuZChwYXJhcy5hdChpKSk7Cisg
ICAgfQorICAgIFFWRVJJRlkoZm9yZWFjaExpc3QuY291bnQoKSA9PSAyKTsKKyAgICBRQ09NUEFS
RShmb3JlYWNoTGlzdC5jb3VudCgpLCByZWZlcmVuY2VMaXN0LmNvdW50KCkpOworICAgIFFDT01Q
QVJFKGZvcmVhY2hMaXN0LmF0KDApLCByZWZlcmVuY2VMaXN0LmF0KDApKTsKKyAgICBRQ09NUEFS
RShmb3JlYWNoTGlzdC5hdCgxKSwgcmVmZXJlbmNlTGlzdC5hdCgxKSk7CisKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHBhcmFzLmNvdW50KCk7ICsraSkgeworICAgICAgICBRQ09NUEFSRShwYXJh
cy5hdChpKSwgcGFyYXNbaV0pOworICAgIH0KKworICAgIFFDT01QQVJFKHBhcmFzLmF0KDApLCBw
YXJhcy5maXJzdCgpKTsKKyAgICBRQ09NUEFSRShwYXJhcy5hdCgxKSwgcGFyYXMubGFzdCgpKTsK
K30KKwogdm9pZCB0c3RfUVdlYkVsZW1lbnQ6OmZvcmVhY2hNYW5pcHVsYXRpb24oKQogewogICAg
IFFTdHJpbmcgaHRtbCA9ICI8Ym9keT48cD5maXJzdCBwYXJhPC9wPjxwPnNlY29uZCBwYXJhPC9w
PjwvYm9keT4iOwpAQCAtMjgwLDYgKzMxOCw0MyBAQCB2b2lkIHRzdF9RV2ViRWxlbWVudDo6Zm9y
ZWFjaE1hbmlwdWxhdGlvbigpCiAgICAgUUNPTVBBUkUoYm9keS5maW5kQWxsKCJkaXYiKS5jb3Vu
dCgpLCA0KTsKIH0KIAordm9pZCB0c3RfUVdlYkVsZW1lbnQ6OmVtcHR5Q29sbGVjdGlvbigpCit7
CisgICAgUVdlYkVsZW1lbnRDb2xsZWN0aW9uIGVtcHR5Q29sbGVjdGlvbjsKKyAgICBRQ09NUEFS
RShlbXB0eUNvbGxlY3Rpb24uY291bnQoKSwgMCk7Cit9CisKK3ZvaWQgdHN0X1FXZWJFbGVtZW50
OjphcHBlbmRDb2xsZWN0aW9uKCkKK3sKKyAgICBRU3RyaW5nIGh0bWwgPSAiPGJvZHk+PHNwYW4g
Y2xhc3M9J2EnPmFhYTwvc3Bhbj48cD5maXJzdCBwYXJhPC9wPjxkaXY+Zm9vPC9kaXY+IgorICAg
ICAgICAiPHNwYW4gY2xhc3M9J2InPmJiYjwvc3Bhbj48cD5zZWNvbmQgcGFyYTwvcD48ZGl2PmJh
cjwvZGl2PjwvYm9keT4iOworICAgIG1fbWFpbkZyYW1lLT5zZXRIdG1sKGh0bWwpOworICAgIFFX
ZWJFbGVtZW50IGJvZHkgPSBtX21haW5GcmFtZS0+ZG9jdW1lbnRFbGVtZW50KCk7CisKKyAgICBR
V2ViRWxlbWVudENvbGxlY3Rpb24gY29sbGVjdGlvbiA9IGJvZHkuZmluZEFsbCgicCIpOworICAg
IFFDT01QQVJFKGNvbGxlY3Rpb24uY291bnQoKSwgMik7CisKKyAgICBjb2xsZWN0aW9uLmFwcGVu
ZChib2R5LmZpbmRBbGwoImRpdiIpKTsKKyAgICBRQ09NUEFSRShjb2xsZWN0aW9uLmNvdW50KCks
IDQpOworCisgICAgY29sbGVjdGlvbiArPSBib2R5LmZpbmRBbGwoInNwYW4uYSIpOworICAgIFFD
T01QQVJFKGNvbGxlY3Rpb24uY291bnQoKSwgNSk7CisKKyAgICBRV2ViRWxlbWVudENvbGxlY3Rp
b24gYWxsID0gY29sbGVjdGlvbiArIGJvZHkuZmluZEFsbCgic3Bhbi5iIik7CisgICAgUUNPTVBB
UkUoYWxsLmNvdW50KCksIDYpOworICAgIFFDT01QQVJFKGNvbGxlY3Rpb24uY291bnQoKSwgNSk7
CisKKyAgICAgYWxsICs9IGNvbGxlY3Rpb247CisgICAgUUNPTVBBUkUoYWxsLmNvdW50KCksIDEx
KTsKKworICAgIFFDT01QQVJFKGNvbGxlY3Rpb24uY291bnQoKSwgNSk7CisgICAgUVdlYkVsZW1l
bnRDb2xsZWN0aW9uIHRlc3Q7CisgICAgdGVzdC5hcHBlbmQoY29sbGVjdGlvbik7CisgICAgUUNP
TVBBUkUodGVzdC5jb3VudCgpLCA1KTsKKyAgICB0ZXN0LmFwcGVuZChRV2ViRWxlbWVudENvbGxl
Y3Rpb24oKSk7CisgICAgUUNPTVBBUkUodGVzdC5jb3VudCgpLCA1KTsKK30KKwogdm9pZCB0c3Rf
UVdlYkVsZW1lbnQ6OmV2YWx1YXRlSmF2YVNjcmlwdCgpCiB7CiAgICAgUVZhcmlhbnQgcmVzdWx0
OwpAQCAtNzczLDcgKzg0OCw3IEBAIHZvaWQgdHN0X1FXZWJFbGVtZW50OjpudWxsU2VsZWN0KCkK
IHsKICAgICBtX21haW5GcmFtZS0+c2V0SHRtbCgiPGJvZHk+PHA+VGVzdCIpOwogCi0gICAgUUxp
c3Q8UVdlYkVsZW1lbnQ+IGNvbGxlY3Rpb24gPSBtX21haW5GcmFtZS0+ZmluZEFsbEVsZW1lbnRz
KCJpbnZhbGlke3N5bih0YXg7OyUjJGYyMjNlPj4iKTsKKyAgICBRV2ViRWxlbWVudENvbGxlY3Rp
b24gY29sbGVjdGlvbiA9IG1fbWFpbkZyYW1lLT5maW5kQWxsRWxlbWVudHMoImludmFsaWR7c3lu
KHRheDs7JSMkZjIyM2U+PiIpOwogICAgIFFWRVJJRlkoY29sbGVjdGlvbi5jb3VudCgpID09IDAp
OwogfQogCkBAIC04MTUsNyArODkwLDcgQEAgdm9pZCB0c3RfUVdlYkVsZW1lbnQ6Omhhc1NldEZv
Y3VzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGlucHV0IHR5cGU9J3RleHQnIGlk
PSdpbnB1dDInLz4iIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPC9ib2R5PjwvaHRt
bD4iKTsKIAotICAgIFFMaXN0PFFXZWJFbGVtZW50PiBpbnB1dHMgPSBtX21haW5GcmFtZS0+ZG9j
dW1lbnRFbGVtZW50KCkuZmluZEFsbCgiaW5wdXQiKTsKKyAgICBRV2ViRWxlbWVudENvbGxlY3Rp
b24gaW5wdXRzID0gbV9tYWluRnJhbWUtPmRvY3VtZW50RWxlbWVudCgpLmZpbmRBbGwoImlucHV0
Iik7CiAgICAgUVdlYkVsZW1lbnQgaW5wdXQxID0gaW5wdXRzLmF0KDApOwogICAgIGlucHV0MS5z
ZXRGb2N1cygpOwogICAgIFFWRVJJRlkoaW5wdXQxLmhhc0ZvY3VzKCkpOwpAQCAtODU0LDcgKzky
OSw3IEBAIHZvaWQgdHN0X1FXZWJFbGVtZW50OjpyZW5kZXIoKQogICAgIFFTaXplIHNpemUgPSBw
YWdlLm1haW5GcmFtZSgpLT5jb250ZW50c1NpemUoKTsKICAgICBwYWdlLnNldFZpZXdwb3J0U2l6
ZShzaXplKTsKIAotICAgIFFMaXN0PFFXZWJFbGVtZW50PiBpbWdzID0gcGFnZS5tYWluRnJhbWUo
KS0+ZmluZEFsbEVsZW1lbnRzKCJpbWciKTsKKyAgICBRV2ViRWxlbWVudENvbGxlY3Rpb24gaW1n
cyA9IHBhZ2UubWFpbkZyYW1lKCktPmZpbmRBbGxFbGVtZW50cygiaW1nIik7CiAgICAgUUNPTVBB
UkUoaW1ncy5jb3VudCgpLCAxKTsKIAogICAgIFFJbWFnZSByZXNvdXJjZSgiOi9pbWFnZS5wbmci
KTsKQEAgLTg4NSw3ICs5NjAsNyBAQCB2b2lkIHRzdF9RV2ViRWxlbWVudDo6cmVuZGVyKCkKIAog
ICAgIC8vIGNvbXBhcmUgdGFibGUgcmVuZGVyZWQgdGhyb3VnaCBRV2ViRWxlbWVudDo6cmVuZGVy
IHRvIHdob2xlIHBhZ2UgdGFibGUgcmVuZGVyaW5nCiAgICAgUVJlY3QgdGFibGVSZWN0KDAsIDAs
IDMwMCwgMzAwKTsKLSAgICBRTGlzdDxRV2ViRWxlbWVudD4gdGFibGVzID0gcGFnZS5tYWluRnJh
bWUoKS0+ZmluZEFsbEVsZW1lbnRzKCJ0YWJsZSIpOworICAgIFFXZWJFbGVtZW50Q29sbGVjdGlv
biB0YWJsZXMgPSBwYWdlLm1haW5GcmFtZSgpLT5maW5kQWxsRWxlbWVudHMoInRhYmxlIik7CiAg
ICAgUUNPTVBBUkUodGFibGVzLmNvdW50KCksIDEpOwogCiAgICAgUUltYWdlIGltYWdlMygzMDAs
IDMwMCwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC90ZXN0
cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3Rz
dF9xd2VicGFnZS5jcHAKaW5kZXggMjFiM2JjNy4uMGNmODVlZSAxMDA2NDQKLS0tIGEvV2ViS2l0
L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0L3Rlc3Rz
L3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKQEAgLTEyNzAsNyArMTI3MCw3IEBAIHZvaWQgdHN0
X1FXZWJQYWdlOjppbnB1dE1ldGhvZHMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiPC9ib2R5PjwvaHRtbD4iKTsKICAgICBtX3ZpZXctPnBhZ2UoKS0+bWFp
bkZyYW1lKCktPnNldEZvY3VzKCk7CiAKLSAgICBRTGlzdDxRV2ViRWxlbWVudD4gaW5wdXRzID0g
bV92aWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5kb2N1bWVudEVsZW1lbnQoKS5maW5kQWxsKCJp
bnB1dCIpOworICAgIFFXZWJFbGVtZW50Q29sbGVjdGlvbiBpbnB1dHMgPSBtX3ZpZXctPnBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmRvY3VtZW50RWxlbWVudCgpLmZpbmRBbGwoImlucHV0Iik7CiAKICAg
ICBRTW91c2VFdmVudCBldnByZXMoUUV2ZW50OjpNb3VzZUJ1dHRvblByZXNzLCBpbnB1dHMuYXQo
MCkuZ2VvbWV0cnkoKS5jZW50ZXIoKSwgUXQ6OkxlZnRCdXR0b24sIFF0OjpOb0J1dHRvbiwgUXQ6
Ok5vTW9kaWZpZXIpOwogICAgIG1fdmlldy0+cGFnZSgpLT5ldmVudCgmZXZwcmVzKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>