<?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>126510</bug_id>
          
          <creation_ts>2014-01-05 22:15:27 -0800</creation_ts>
          <short_desc>[JS] Implement Promise.all()</short_desc>
          <delta_ts>2014-01-06 12:56:05 -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>New Bugs</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>964556</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-05 22:15:27 -0800</bug_when>
    <thetext>[JS] Implement Promise.all()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964557</commentid>
    <comment_count>1</comment_count>
      <attachid>220414</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-05 22:20:29 -0800</bug_when>
    <thetext>Created attachment 220414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964726</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-06 12:56:05 -0800</bug_when>
    <thetext>Committed r161365: &lt;http://trac.webkit.org/changeset/161365&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220414</attachid>
            <date>2014-01-05 22:20:29 -0800</date>
            <delta_ts>2014-01-06 12:39:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126510-20140105222028.patch</filename>
            <type>text/plain</type>
            <size>29875</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxMzMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDE0LTAxLTA1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0pT
XSBJbXBsZW1lbnQgUHJvbWlzZS5hbGwoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI2NTEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIFByb21pc2UuYWxsKCkgaW1wbGVtZW50YXRpb24gYW5kIGZh
Y3RvciBvdXQgcGVyZm9ybWluZyByZXNvbHZlcyBhbmQgcmVqZWN0cworICAgICAgICBvbiBkZWZl
cnJlZHMgdG8gc2hhcmUgYSBiaXQgb2YgY29kZS4gQWxzbyBtb3ZlcyB0aGUgYWJydXB0UmVqZWN0
aW9uIGhlbHBlciB0bworICAgICAgICBKU1Byb21pc2VEZWZlcnJlZCBzbyBpdCBjYW4gYmUgdXNl
ZCBpbiBKU1Byb21pc2VGdW5jdGlvbnMuCisKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY0Nhc3QpOgorICAgICAgICAoSlND
OjpKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6SlNQcm9t
aXNlQ29uc3RydWN0b3JGdW5jUmVqZWN0KToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlQ29uc3Ry
dWN0b3JGdW5jQWxsKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcDoK
KyAgICAgICAgKEpTQzo6dXBkYXRlRGVmZXJyZWRGcm9tUG90ZW50aWFsVGhlbmFibGUpOgorICAg
ICAgICAoSlNDOjpwZXJmb3JtRGVmZXJyZWRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6cGVyZm9y
bURlZmVycmVkUmVqZWN0KToKKyAgICAgICAgKEpTQzo6YWJydXB0UmVqZWN0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmg6CisgICAgICAgICogcnVudGltZS9KU1By
b21pc2VGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwcm9taXNlQWxsQ291bnRkb3duRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpjcmVhdGVQcm9taXNlQWxsQ291bnRkb3duRnVuY3Rpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlRnVuY3Rpb25zLmg6CisgICAgICAgICogcnVu
dGltZS9KU1Byb21pc2VSZWFjdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkV4ZWN1dGVQcm9taXNl
UmVhY3Rpb25NaWNyb3Rhc2s6OnJ1bik6CisKIDIwMTQtMDEtMDUgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBbSlNdIEltcGxlbWVudCBQcm9taXNlLnJhY2UoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCShyZXZpc2lvbiAxNjEzMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNyArMjEyLDExIEBACiAg
ICAgbWFjcm8ocmVqZWN0KSBcCiAgICAgbWFjcm8ocHJvbWlzZSkgXAogICAgIG1hY3JvKGZ1bGZp
bGxtZW50SGFuZGxlcikgXAotICAgIG1hY3JvKHJlamVjdGlvbkhhbmRsZXIpCisgICAgbWFjcm8o
cmVqZWN0aW9uSGFuZGxlcikgXAorICAgIG1hY3JvKGluZGV4KSBcCisgICAgbWFjcm8odmFsdWVz
KSBcCisgICAgbWFjcm8oZGVmZXJyZWQpIFwKKyAgICBtYWNybyhjb3VudGRvd25Ib2xkZXIpCiAK
IG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxNjEzMzApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJKU1Byb21pc2VGdW5j
dGlvbnMuaCIKICNpbmNsdWRlICJKU1Byb21pc2VQcm90b3R5cGUuaCIKICNpbmNsdWRlICJMb29r
dXAuaCIKKyNpbmNsdWRlICJOdW1iZXJPYmplY3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxp
bmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDYsNiArNDcsNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1ByCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNSZXNvbHZlKEV4ZWNTdGF0ZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5j
UmVqZWN0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmFjZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY0FsbChFeGVjU3Rh
dGUqKTsKIH0KIAogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIgpAQCAtNjAs
NiArNjIsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNQcm9taXNlQ29uc3RydWN0b3I6OnNfCiAgIHJl
c29sdmUgICAgICAgICBKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNSZXNvbHZlICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgcmVqZWN0ICAgICAgICAgIEpTUHJvbWlzZUNvbnN0cnVj
dG9yRnVuY1JlamVjdCAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICByYWNlICAg
ICAgICAgICAgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmFjZSAgICAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCisgIGFsbCAgICAgICAgICAgICBKU1Byb21pc2VDb25zdHJ1Y3RvckZ1
bmNBbGwgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKIEBlbmQKICovCiAKQEAg
LTE5MSwxNyArMTk0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VD
bwogICAgIC8vIDUuIExldCAncmVzb2x2ZVJlc3VsdCcgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5n
IHRoZSBbW0NhbGxdXSBpbnRlcm5hbCBtZXRob2QKICAgICAvLyAgICBvZiBkZWZlcnJlZC5bW1Jl
c29sdmVdXSB3aXRoIHVuZGVmaW5lZCBhcyB0aGlzQXJndW1lbnQgYW5kIGEgTGlzdCBjb250YWlu
aW5nIHgKICAgICAvLyAgICBhcyBhcmd1bWVudHNMaXN0LgotICAgIAotICAgIEpTVmFsdWUgZGVm
ZXJyZWRSZXNvbHZlID0gZGVmZXJyZWQtPnJlc29sdmUoKTsKLQotICAgIENhbGxEYXRhIHJlc29s
dmVDYWxsRGF0YTsKLSAgICBDYWxsVHlwZSByZXNvbHZlQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YShk
ZWZlcnJlZFJlc29sdmUsIHJlc29sdmVDYWxsRGF0YSk7Ci0gICAgQVNTRVJUKHJlc29sdmVDYWxs
VHlwZSAhPSBDYWxsVHlwZU5vbmUpOwotCi0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1l
bnRzOwotICAgIGFyZ3VtZW50cy5hcHBlbmQoeCk7Ci0KLSAgICBjYWxsKGV4ZWMsIGRlZmVycmVk
UmVzb2x2ZSwgcmVzb2x2ZUNhbGxUeXBlLCByZXNvbHZlQ2FsbERhdGEsIGpzVW5kZWZpbmVkKCks
IGFyZ3VtZW50cyk7CisgICAgcGVyZm9ybURlZmVycmVkUmVzb2x2ZShleGVjLCBkZWZlcnJlZCwg
eCk7CiAKICAgICAvLyA2LiBSZXR1cm5JZkFicnVwdChyZXNvbHZlUmVzdWx0KS4KICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0yMzEsMTcgKzIyNCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ28KICAgICAvLyA0LiBMZXQgJ3Jlc29sdmVSZXN1bHQn
IGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kCiAg
ICAgLy8gICAgb2YgZGVmZXJyZWQuW1tSZXNvbHZlXV0gd2l0aCB1bmRlZmluZWQgYXMgdGhpc0Fy
Z3VtZW50IGFuZCBhIExpc3QgY29udGFpbmluZyB4CiAgICAgLy8gICAgYXMgYXJndW1lbnRzTGlz
dC4KLQotICAgIEpTVmFsdWUgZGVmZXJyZWRSZXNvbHZlID0gZGVmZXJyZWQtPnJlc29sdmUoKTsK
LQotICAgIENhbGxEYXRhIHJlc29sdmVDYWxsRGF0YTsKLSAgICBDYWxsVHlwZSByZXNvbHZlQ2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YShkZWZlcnJlZFJlc29sdmUsIHJlc29sdmVDYWxsRGF0YSk7Ci0g
ICAgQVNTRVJUKHJlc29sdmVDYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOwotCi0gICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwotICAgIGFyZ3VtZW50cy5hcHBlbmQoeCk7Ci0KLSAg
ICBjYWxsKGV4ZWMsIGRlZmVycmVkUmVzb2x2ZSwgcmVzb2x2ZUNhbGxUeXBlLCByZXNvbHZlQ2Fs
bERhdGEsIGpzVW5kZWZpbmVkKCksIGFyZ3VtZW50cyk7CisgICAgcGVyZm9ybURlZmVycmVkUmVz
b2x2ZShleGVjLCBkZWZlcnJlZCwgeCk7CiAgICAgCiAgICAgLy8gNS4gUmV0dXJuSWZBYnJ1cHQo
cmVzb2x2ZVJlc3VsdCkuCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMjcxLDE3
ICsyNTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUHJvbWlzZUNvCiAgICAg
Ly8gNC4gTGV0ICdyZWplY3RSZXN1bHQnIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tD
YWxsXV0gaW50ZXJuYWwgbWV0aG9kCiAgICAgLy8gICAgb2YgZGVmZXJyZWQuW1tSZWplY3RdXSB3
aXRoIHVuZGVmaW5lZCBhcyB0aGlzQXJndW1lbnQgYW5kIGEgTGlzdCBjb250YWluaW5nIHIKICAg
ICAvLyAgICBhcyBhcmd1bWVudHNMaXN0LgotCi0gICAgSlNWYWx1ZSBkZWZlcnJlZFJlamVjdCA9
IGRlZmVycmVkLT5yZWplY3QoKTsKLQotICAgIENhbGxEYXRhIHJlamVjdENhbGxEYXRhOwotICAg
IENhbGxUeXBlIHJlamVjdENhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZGVmZXJyZWRSZWplY3QsIHJl
amVjdENhbGxEYXRhKTsKLSAgICBBU1NFUlQocmVqZWN0Q2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25l
KTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKLSAgICBhcmd1bWVudHMu
YXBwZW5kKHIpOwotCi0gICAgY2FsbChleGVjLCBkZWZlcnJlZFJlamVjdCwgcmVqZWN0Q2FsbFR5
cGUsIHJlamVjdENhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBhcmd1bWVudHMpOworICAgIHBlcmZv
cm1EZWZlcnJlZFJlamVjdChleGVjLCBkZWZlcnJlZCwgcik7CiAKICAgICAvLyA1LiBSZXR1cm5J
ZkFicnVwdChyZXNvbHZlUmVzdWx0KS4KICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBA
IC0yOTEsMzQgKzI2NCw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNl
Q28KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRlZmVycmVkLT5wcm9taXNlKCkpOwogfQog
Ci1zdGF0aWMgSlNWYWx1ZSBhYnJ1cHRSZWplY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Byb21p
c2VEZWZlcnJlZCogZGVmZXJyZWQpCi17Ci0gICAgQVNTRVJUKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KTsKLSAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gZXhlYy0+ZXhjZXB0aW9uKCk7Ci0gICAgZXhlYy0+
Y2xlYXJFeGNlcHRpb24oKTsKLQotICAgIC8vIGkuIExldCAncmVqZWN0UmVzdWx0JyBiZSB0aGUg
cmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbQ2FsbF1dIGludGVybmFsIG1ldGhvZAotICAgIC8vIG9m
IGRlZmVycmVkLltbUmVqZWN0XV0gd2l0aCB1bmRlZmluZWQgYXMgdGhpc0FyZ3VtZW50IGFuZCBh
IExpc3QgY29udGFpbmluZwotICAgIC8vIGFyZ3VtZW50LltbdmFsdWVdXSBhcyBhcmd1bWVudHNM
aXN0LgotICAgIEpTVmFsdWUgZGVmZXJyZWRSZWplY3QgPSBkZWZlcnJlZC0+cmVqZWN0KCk7Ci0K
LSAgICBDYWxsRGF0YSByZWplY3RDYWxsRGF0YTsKLSAgICBDYWxsVHlwZSByZWplY3RDYWxsVHlw
ZSA9IGdldENhbGxEYXRhKGRlZmVycmVkUmVqZWN0LCByZWplY3RDYWxsRGF0YSk7Ci0gICAgQVNT
RVJUKHJlamVjdENhbGxUeXBlICE9IENhbGxUeXBlTm9uZSk7Ci0KLSAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChhcmd1bWVudCk7Ci0KLSAg
ICBjYWxsKGV4ZWMsIGRlZmVycmVkUmVqZWN0LCByZWplY3RDYWxsVHlwZSwgcmVqZWN0Q2FsbERh
dGEsIGpzVW5kZWZpbmVkKCksIGFyZ3VtZW50cyk7Ci0KLSAgICAvLyBpaS4gUmV0dXJuSWZBYnJ1
cHQocmVqZWN0UmVzdWx0KS4KLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgLy8gaWlpLiBSZXR1cm4gZGVmZXJyZWQuW1tQ
cm9taXNlXV0uCi0gICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7Ci19Ci0KIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmFjZShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CiAgICAgLy8gLS0gUHJvbWlzZS5yYWNlKGl0ZXJhYmxlKSAtLQpAQCAtNDMx
LDYgKzM3NiwxNjcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Byb21pc2VDbwog
ICAgIH0gd2hpbGUgKHRydWUpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
UHJvbWlzZUNvbnN0cnVjdG9yRnVuY0FsbChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gLS0g
UHJvbWlzZS5hbGwoaXRlcmFibGUpIC0tCisKKyAgICBKU1ZhbHVlIGl0ZXJhYmxlID0gZXhlYy0+
YXJndW1lbnQoMCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKworICAgIC8vIDEuIExldCAn
QycgYmUgdGhlIHRoaXMgdmFsdWUuCisgICAgSlNWYWx1ZSBDID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CisKKyAgICAvLyAyLiBMZXQgJ2RlZmVycmVkJyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgR2V0
RGVmZXJyZWQoQykuCisgICAgSlNWYWx1ZSBkZWZlcnJlZFZhbHVlID0gY3JlYXRlSlNQcm9taXNl
RGVmZXJyZWRGcm9tQ29uc3RydWN0b3IoZXhlYywgQyk7CisKKyAgICAvLyAzLiBSZXR1cm5JZkFi
cnVwdChkZWZlcnJlZCkuCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gTk9URTogQSBu
b24tYWJydXB0IGNvbXBsZXRpb24gb2YgY3JlYXRlSlNQcm9taXNlRGVmZXJyZWRGcm9tQ29uc3Ry
dWN0b3IgaW1wbGllcyB0aGF0CisgICAgLy8gQyBhbmQgZGVmZXJyZWRWYWx1ZSBhcmUgb2JqZWN0
cy4KKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGFzT2JqZWN0KEMpOworICAgIEpTUHJvbWlz
ZURlZmVycmVkKiBkZWZlcnJlZCA9IGpzQ2FzdDxKU1Byb21pc2VEZWZlcnJlZCo+KGRlZmVycmVk
VmFsdWUpOworCisgICAgLy8gNC4gTGV0ICdpdGVyYXRvcicgYmUgdGhlIHJlc3VsdCBvZiBjYWxs
aW5nIEdldEl0ZXJhdG9yKGl0ZXJhYmxlKS4KKyAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24g
PSBpdGVyYWJsZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFt
ZSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGFicnVwdFJlamVjdGlvbihleGVjLCBkZWZlcnJlZCkpOworCisgICAgQ2FsbERh
dGEgaXRlcmF0b3JGdW5jdGlvbkNhbGxEYXRhOworICAgIENhbGxUeXBlIGl0ZXJhdG9yRnVuY3Rp
b25DYWxsVHlwZSA9IGdldENhbGxEYXRhKGl0ZXJhdG9yRnVuY3Rpb24sIGl0ZXJhdG9yRnVuY3Rp
b25DYWxsRGF0YSk7CisgICAgaWYgKGl0ZXJhdG9yRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlw
ZU5vbmUpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoYWJydXB0UmVqZWN0aW9uKGV4ZWMsIGRlZmVycmVkKSk7CisgICAgfQor
CisgICAgQXJnTGlzdCBpdGVyYXRvckZ1bmN0aW9uQXJndW1lbnRzOworICAgIEpTVmFsdWUgaXRl
cmF0b3IgPSBjYWxsKGV4ZWMsIGl0ZXJhdG9yRnVuY3Rpb24sIGl0ZXJhdG9yRnVuY3Rpb25DYWxs
VHlwZSwgaXRlcmF0b3JGdW5jdGlvbkNhbGxEYXRhLCBpdGVyYWJsZSwgaXRlcmF0b3JGdW5jdGlv
bkFyZ3VtZW50cyk7CisKKyAgICAvLyA1LiBSZWplY3RJZkFicnVwdChpdGVyYXRvciwgZGVmZXJy
ZWQpLgorICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShhYnJ1cHRSZWplY3Rpb24oZXhlYywgZGVmZXJyZWQpKTsKKworICAgIC8vIDYu
IExldCAndmFsdWVzJyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgQXJyYXlDcmVhdGUoMCkuCisg
ICAgSlNBcnJheSogdmFsdWVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCB0
aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSk7CisgICAgCisgICAgLy8gNy4gTGV0ICdjb3VudGRv
d25Ib2xkZXInIGJlIFJlY29yZCB7IFtbQ291bnRkb3duXV06IDAgfS4KKyAgICBOdW1iZXJPYmpl
Y3QqIGNvdW50ZG93bkhvbGRlciA9IGNvbnN0cnVjdE51bWJlcihleGVjLCB0aGlzT2JqZWN0LT5n
bG9iYWxPYmplY3QoKSwgSlNWYWx1ZSgwKSk7CisgICAgCisgICAgLy8gOC4gTGV0ICdpbmRleCcg
YmUgMC4KKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgCisgICAgLy8gOS4gUmVwZWF0Lgor
ICAgIGRvIHsKKyAgICAgICAgLy8gaS4gTGV0ICduZXh0JyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxp
bmcgSXRlcmF0b3JTdGVwKGl0ZXJhdG9yKS4KKyAgICAgICAgSlNWYWx1ZSBuZXh0RnVuY3Rpb24g
PSBpdGVyYXRvci5nZXQoZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvck5l
eHRQcml2YXRlTmFtZSk7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYWJydXB0UmVqZWN0aW9uKGV4ZWMsIGRlZmVy
cmVkKSk7CisKKyAgICAgICAgQ2FsbERhdGEgbmV4dEZ1bmN0aW9uQ2FsbERhdGE7CisgICAgICAg
IENhbGxUeXBlIG5leHRGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEobmV4dEZ1bmN0aW9u
LCBuZXh0RnVuY3Rpb25DYWxsRGF0YSk7CisgICAgICAgIGlmIChuZXh0RnVuY3Rpb25DYWxsVHlw
ZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhYnJ1cHRSZWplY3Rpb24oZXhlYywg
ZGVmZXJyZWQpKTsKKyAgICAgICAgfQorCisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG5l
eHRGdW5jdGlvbkFyZ3VtZW50czsKKyAgICAgICAgbmV4dEZ1bmN0aW9uQXJndW1lbnRzLmFwcGVu
ZChqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgSlNWYWx1ZSBuZXh0ID0gY2FsbChleGVjLCBuZXh0
RnVuY3Rpb24sIG5leHRGdW5jdGlvbkNhbGxUeXBlLCBuZXh0RnVuY3Rpb25DYWxsRGF0YSwgaXRl
cmF0b3IsIG5leHRGdW5jdGlvbkFyZ3VtZW50cyk7CisgICAgICAgIAorICAgICAgICAvLyBpaS4g
UmVqZWN0SWZBYnJ1cHQobmV4dCwgZGVmZXJyZWQpLgorICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFicnVwdFJlamVj
dGlvbihleGVjLCBkZWZlcnJlZCkpOworCisgICAgICAgIC8vIGlpaS4gSWYgJ25leHQnIGlzIGZh
bHNlLAorICAgICAgICAvLyBOb3RlOiBXZSBpbXBsZW1lbnQgdGhpcyBhcyBhbiBpdGVyYXRpb25U
ZXJtaW5hdG9yCisgICAgICAgIGlmIChuZXh0ID09IHZtLml0ZXJhdGlvblRlcm1pbmF0b3IuZ2V0
KCkpIHsKKyAgICAgICAgICAgIC8vIGEuIElmICdpbmRleCcgaXMgMCwKKyAgICAgICAgICAgIGlm
ICghaW5kZXgpIHsKKyAgICAgICAgICAgICAgICAvLyBhLiBMZXQgJ3Jlc29sdmVSZXN1bHQnIGJl
IHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kCisgICAg
ICAgICAgICAgICAgLy8gICAgb2YgZGVmZXJyZWQuW1tSZXNvbHZlXV0gd2l0aCB1bmRlZmluZWQg
YXMgdGhpc0FyZ3VtZW50IGFuZCBhIExpc3QgY29udGFpbmluZworICAgICAgICAgICAgICAgIC8v
ICAgIHZhbHVlcyBhcyBhcmd1bWVudHNMaXN0LgorICAgICAgICAgICAgICAgIHBlcmZvcm1EZWZl
cnJlZFJlc29sdmUoZXhlYywgZGVmZXJyZWQsIHZhbHVlcyk7CisKKyAgICAgICAgICAgICAgICAv
LyBiLiBSZXR1cm5JZkFicnVwdChyZXNvbHZlUmVzdWx0KS4KKyAgICAgICAgICAgICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIC8vIGIuIFJldHVybiBkZWZlcnJlZC5bW1Byb21pc2VdXS4KKyAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVmZXJyZWQtPnByb21pc2UoKSk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIC8vIGl2LiBMZXQgJ25leHRWYWx1ZScgYmUgdGhlIHJlc3VsdCBv
ZiBjYWxsaW5nIEl0ZXJhdG9yVmFsdWUobmV4dCkuCisgICAgICAgIC8vIHYuIFJlamVjdElmQWJy
dXB0KG5leHRWYWx1ZSwgZGVmZXJyZWQpLgorICAgICAgICAvLyBOb3RlOiAnbmV4dCcgaXMgYWxy
ZWFkeSB0aGUgdmFsdWUsIHNvIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8gaGVyZS4KKworICAgICAg
ICAvLyB2aS4gTGV0ICduZXh0UHJvbWlzZScgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIEludm9r
ZShDLCAiY2FzdCIsIChuZXh0VmFsdWUpKS4KKyAgICAgICAgSlNWYWx1ZSBjYXN0RnVuY3Rpb24g
PSBDLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYXN0KTsKKyAgICAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhYnJ1
cHRSZWplY3Rpb24oZXhlYywgZGVmZXJyZWQpKTsKKworICAgICAgICBDYWxsRGF0YSBjYXN0RnVu
Y3Rpb25DYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FzdEZ1bmN0aW9uQ2FsbFR5cGUgPSBn
ZXRDYWxsRGF0YShjYXN0RnVuY3Rpb24sIGNhc3RGdW5jdGlvbkNhbGxEYXRhKTsKKyAgICAgICAg
aWYgKGNhc3RGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgeworICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGFicnVwdFJlamVjdGlvbihleGVjLCBkZWZlcnJlZCkpOworICAgICAgICB9CisKKyAgICAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgY2FzdEZ1bmN0aW9uQXJndW1lbnRzOworICAgICAgICBjYXN0
RnVuY3Rpb25Bcmd1bWVudHMuYXBwZW5kKG5leHQpOworICAgICAgICBKU1ZhbHVlIG5leHRQcm9t
aXNlID0gY2FsbChleGVjLCBjYXN0RnVuY3Rpb24sIGNhc3RGdW5jdGlvbkNhbGxUeXBlLCBjYXN0
RnVuY3Rpb25DYWxsRGF0YSwgQywgY2FzdEZ1bmN0aW9uQXJndW1lbnRzKTsKKworICAgICAgICAv
LyB2aWkuIFJlamVjdElmQWJydXB0KG5leHRQcm9taXNlLCBkZWZlcnJlZCkuCisgICAgICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYWJydXB0UmVqZWN0aW9uKGV4ZWMsIGRlZmVycmVkKSk7CisKKyAgICAgICAgLy8gdmlpaS4g
TGV0ICdjb3VudGRvd25GdW5jdGlvbicgYmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0
IGFzIGRlZmluZWQgaW4gUHJvbWlzZS5hbGwgQ291bnRkb3duIEZ1bmN0aW9ucy4KKyAgICAgICAg
SlNGdW5jdGlvbiogY291bnRkb3duRnVuY3Rpb24gPSBjcmVhdGVQcm9taXNlQWxsQ291bnRkb3du
RnVuY3Rpb24odm0sIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgCisgICAg
ICAgIC8vIGl4LiBTZXQgdGhlIFtbSW5kZXhdXSBpbnRlcm5hbCBzbG90IG9mICdjb3VudGRvd25G
dW5jdGlvbicgdG8gJ2luZGV4Jy4KKyAgICAgICAgY291bnRkb3duRnVuY3Rpb24tPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aW5kZXhQcml2YXRlTmFtZSwgSlNWYWx1ZShpbmRleCkp
OworCisgICAgICAgIC8vIHguIFNldCB0aGUgW1tWYWx1ZXNdXSBpbnRlcm5hbCBzbG90IG9mICdj
b3VudGRvd25GdW5jdGlvbicgdG8gJ3ZhbHVlcycuCisgICAgICAgIGNvdW50ZG93bkZ1bmN0aW9u
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlc1ByaXZhdGVOYW1lLCB2YWx1
ZXMpOworCisgICAgICAgIC8vIHhpLiBTZXQgdGhlIFtbRGVmZXJyZWRdXSBpbnRlcm5hbCBzbG90
IG9mICdjb3VudGRvd25GdW5jdGlvbicgdG8gJ2RlZmVycmVkJy4KKyAgICAgICAgY291bnRkb3du
RnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZGVmZXJyZWRQcml2YXRl
TmFtZSwgZGVmZXJyZWQpOworCisgICAgICAgIC8vIHhpaS4gU2V0IHRoZSBbW0NvdW50ZG93bkhv
bGRlcl1dIGludGVybmFsIHNsb3Qgb2YgJ2NvdW50ZG93bkZ1bmN0aW9uJyB0byAnY291bnRkb3du
SG9sZGVyJy4KKyAgICAgICAgY291bnRkb3duRnVuY3Rpb24tPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y291bnRkb3duSG9sZGVyUHJpdmF0ZU5hbWUsIGNvdW50ZG93bkhvbGRlcik7
CisKKyAgICAgICAgLy8geGlpaS4gTGV0ICdyZXN1bHQnIGJlIHRoZSByZXN1bHQgb2YgY2FsbGlu
ZyBJbnZva2UobmV4dFByb21pc2UsICJ0aGVuIiwgKGNvdW50ZG93bkZ1bmN0aW9uLCBkZWZlcnJl
ZC5bW1JlamVjdF1dKSkuCisgICAgICAgIEpTVmFsdWUgdGhlbkZ1bmN0aW9uID0gbmV4dFByb21p
c2UuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnRoZW4pOworICAgICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFicnVw
dFJlamVjdGlvbihleGVjLCBkZWZlcnJlZCkpOworCisgICAgICAgIENhbGxEYXRhIHRoZW5GdW5j
dGlvbkNhbGxEYXRhOworICAgICAgICBDYWxsVHlwZSB0aGVuRnVuY3Rpb25DYWxsVHlwZSA9IGdl
dENhbGxEYXRhKHRoZW5GdW5jdGlvbiwgdGhlbkZ1bmN0aW9uQ2FsbERhdGEpOworICAgICAgICBp
ZiAodGhlbkZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YWJydXB0UmVqZWN0aW9uKGV4ZWMsIGRlZmVycmVkKSk7CisgICAgICAgIH0KKworICAgICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciB0aGVuRnVuY3Rpb25Bcmd1bWVudHM7CisgICAgICAgIHRoZW5G
dW5jdGlvbkFyZ3VtZW50cy5hcHBlbmQoY291bnRkb3duRnVuY3Rpb24pOworICAgICAgICB0aGVu
RnVuY3Rpb25Bcmd1bWVudHMuYXBwZW5kKGRlZmVycmVkLT5yZWplY3QoKSk7CisKKyAgICAgICAg
Y2FsbChleGVjLCB0aGVuRnVuY3Rpb24sIHRoZW5GdW5jdGlvbkNhbGxUeXBlLCB0aGVuRnVuY3Rp
b25DYWxsRGF0YSwgbmV4dFByb21pc2UsIHRoZW5GdW5jdGlvbkFyZ3VtZW50cyk7CisKKyAgICAg
ICAgLy8geGl2LiBSZWplY3RJZkFicnVwdChyZXN1bHQsIGRlZmVycmVkKS4KKyAgICAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShhYnJ1cHRSZWplY3Rpb24oZXhlYywgZGVmZXJyZWQpKTsKKworICAgICAgICAvLyB4di4gU2V0
IGluZGV4IHRvIGluZGV4ICsgMS4KKyAgICAgICAgaW5kZXgrKzsKKworICAgICAgICAvLyB4dmku
IFNldCBjb3VudGRvd25Ib2xkZXIuW1tDb3VudGRvd25dXSB0byBjb3VudGRvd25Ib2xkZXIuW1tD
b3VudGRvd25dXSArIDEuCisgICAgICAgIHVpbnQzMl90IG5ld0NvdW50ZG93blZhbHVlID0gY291
bnRkb3duSG9sZGVyLT5pbnRlcm5hbFZhbHVlKCkuYXNVSW50MzIoKSArIDE7CisgICAgICAgIGNv
dW50ZG93bkhvbGRlci0+c2V0SW50ZXJuYWxWYWx1ZSh2bSwgSlNWYWx1ZShuZXdDb3VudGRvd25W
YWx1ZSkpOworICAgIH0gd2hpbGUgKHRydWUpOworfQorCiBKU1Byb21pc2UqIGNvbnN0cnVjdFBy
b21pc2UoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Z1
bmN0aW9uKiByZXNvbHZlcikKIHsKICAgICBKU1Byb21pc2VDb25zdHJ1Y3RvciogcHJvbWlzZUNv
bnN0cnVjdG9yID0gZ2xvYmFsT2JqZWN0LT5wcm9taXNlQ29uc3RydWN0b3IoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5j
cHAJKHJldmlzaW9uIDE2MTMzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZURlZmVycmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDE2ICsxNTIsNyBAQCBU
aGVuYWJsZVN0YXR1cyB1cGRhdGVEZWZlcnJlZEZyb21Qb3RlbnRpCiAgICAgICAgIEpTVmFsdWUg
ZXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CiAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0
aW9uKCk7CiAKLSAgICAgICAgSlNWYWx1ZSBkZWZlcnJlZFJlamVjdCA9IGRlZmVycmVkLT5yZWpl
Y3QoKTsKLQotICAgICAgICBDYWxsRGF0YSByZWplY3RDYWxsRGF0YTsKLSAgICAgICAgQ2FsbFR5
cGUgcmVqZWN0Q2FsbFR5cGUgPSBnZXRDYWxsRGF0YShkZWZlcnJlZFJlamVjdCwgcmVqZWN0Q2Fs
bERhdGEpOwotICAgICAgICBBU1NFUlQocmVqZWN0Q2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsK
LQotICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciByZWplY3RBcmd1bWVudHM7Ci0gICAgICAg
IHJlamVjdEFyZ3VtZW50cy5hcHBlbmQoZXhjZXB0aW9uKTsKLQotICAgICAgICBjYWxsKGV4ZWMs
IGRlZmVycmVkUmVqZWN0LCByZWplY3RDYWxsVHlwZSwgcmVqZWN0Q2FsbERhdGEsIGpzVW5kZWZp
bmVkKCksIHJlamVjdEFyZ3VtZW50cyk7CisgICAgICAgIHBlcmZvcm1EZWZlcnJlZFJlamVjdChl
eGVjLCBkZWZlcnJlZCwgZXhjZXB0aW9uKTsKIAogICAgICAgICAvLyBpaS4gUmV0dXJuSWZBYnJ1
cHQocmVqZWN0UmVzdWx0KS4KICAgICAgICAgLy8gTk9URTogTm90aGluZyB0byBkby4KQEAgLTE5
NiwxNiArMTg3LDcgQEAgVGhlbmFibGVTdGF0dXMgdXBkYXRlRGVmZXJyZWRGcm9tUG90ZW50aQog
ICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbiA9IGV4ZWMtPmV4Y2VwdGlvbigpOwogICAgICAgICBl
eGVjLT5jbGVhckV4Y2VwdGlvbigpOwogCi0gICAgICAgIEpTVmFsdWUgZGVmZXJyZWRSZWplY3Qg
PSBkZWZlcnJlZC0+cmVqZWN0KCk7Ci0KLSAgICAgICAgQ2FsbERhdGEgcmVqZWN0Q2FsbERhdGE7
Ci0gICAgICAgIENhbGxUeXBlIHJlamVjdENhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZGVmZXJyZWRS
ZWplY3QsIHJlamVjdENhbGxEYXRhKTsKLSAgICAgICAgQVNTRVJUKHJlamVjdENhbGxUeXBlICE9
IENhbGxUeXBlTm9uZSk7Ci0KLSAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgcmVqZWN0QXJn
dW1lbnRzOwotICAgICAgICByZWplY3RBcmd1bWVudHMuYXBwZW5kKGV4Y2VwdGlvbik7Ci0KLSAg
ICAgICAgY2FsbChleGVjLCBkZWZlcnJlZFJlamVjdCwgcmVqZWN0Q2FsbFR5cGUsIHJlamVjdENh
bGxEYXRhLCBqc1VuZGVmaW5lZCgpLCByZWplY3RBcmd1bWVudHMpOworICAgICAgICBwZXJmb3Jt
RGVmZXJyZWRSZWplY3QoZXhlYywgZGVmZXJyZWQsIGV4Y2VwdGlvbik7CiAKICAgICAgICAgLy8g
aWkuIFJldHVybklmQWJydXB0KHJlamVjdFJlc3VsdCkuCiAgICAgICAgIC8vIE5PVEU6IE5vdGhp
bmcgdG8gZG8uCkBAIC0yMTQsNCArMTk2LDUxIEBAIFRoZW5hYmxlU3RhdHVzIHVwZGF0ZURlZmVy
cmVkRnJvbVBvdGVudGkKICAgICByZXR1cm4gV2FzQVRoZW5hYmxlOwogfQogCit2b2lkIHBlcmZv
cm1EZWZlcnJlZFJlc29sdmUoRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogZGVm
ZXJyZWQsIEpTVmFsdWUgYXJndW1lbnQpCit7CisgICAgSlNWYWx1ZSBkZWZlcnJlZFJlc29sdmUg
PSBkZWZlcnJlZC0+cmVzb2x2ZSgpOworCisgICAgQ2FsbERhdGEgcmVzb2x2ZUNhbGxEYXRhOwor
ICAgIENhbGxUeXBlIHJlc29sdmVDYWxsVHlwZSA9IGdldENhbGxEYXRhKGRlZmVycmVkUmVzb2x2
ZSwgcmVzb2x2ZUNhbGxEYXRhKTsKKyAgICBBU1NFUlQocmVzb2x2ZUNhbGxUeXBlICE9IENhbGxU
eXBlTm9uZSk7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJn
dW1lbnRzLmFwcGVuZChhcmd1bWVudCk7CisKKyAgICBjYWxsKGV4ZWMsIGRlZmVycmVkUmVzb2x2
ZSwgcmVzb2x2ZUNhbGxUeXBlLCByZXNvbHZlQ2FsbERhdGEsIGpzVW5kZWZpbmVkKCksIGFyZ3Vt
ZW50cyk7Cit9CisKK3ZvaWQgcGVyZm9ybURlZmVycmVkUmVqZWN0KEV4ZWNTdGF0ZSogZXhlYywg
SlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkLCBKU1ZhbHVlIGFyZ3VtZW50KQoreworICAgIEpT
VmFsdWUgZGVmZXJyZWRSZWplY3QgPSBkZWZlcnJlZC0+cmVqZWN0KCk7CisKKyAgICBDYWxsRGF0
YSByZWplY3RDYWxsRGF0YTsKKyAgICBDYWxsVHlwZSByZWplY3RDYWxsVHlwZSA9IGdldENhbGxE
YXRhKGRlZmVycmVkUmVqZWN0LCByZWplY3RDYWxsRGF0YSk7CisgICAgQVNTRVJUKHJlamVjdENh
bGxUeXBlICE9IENhbGxUeXBlTm9uZSk7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1
bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChhcmd1bWVudCk7CisKKyAgICBjYWxsKGV4ZWMs
IGRlZmVycmVkUmVqZWN0LCByZWplY3RDYWxsVHlwZSwgcmVqZWN0Q2FsbERhdGEsIGpzVW5kZWZp
bmVkKCksIGFyZ3VtZW50cyk7Cit9CisKK0pTVmFsdWUgYWJydXB0UmVqZWN0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkKQoreworICAgIEFTU0VSVChleGVj
LT5oYWRFeGNlcHRpb24oKSk7CisgICAgSlNWYWx1ZSBhcmd1bWVudCA9IGV4ZWMtPmV4Y2VwdGlv
bigpOworICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisKKyAgICAvLyBpLiBMZXQgJ3JlamVj
dFJlc3VsdCcgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0NhbGxdXSBpbnRlcm5hbCBt
ZXRob2QKKyAgICAvLyBvZiBkZWZlcnJlZC5bW1JlamVjdF1dIHdpdGggdW5kZWZpbmVkIGFzIHRo
aXNBcmd1bWVudCBhbmQgYSBMaXN0IGNvbnRhaW5pbmcKKyAgICAvLyBhcmd1bWVudC5bW3ZhbHVl
XV0gYXMgYXJndW1lbnRzTGlzdC4KKyAgICBwZXJmb3JtRGVmZXJyZWRSZWplY3QoZXhlYywgZGVm
ZXJyZWQsIGFyZ3VtZW50KTsKKworICAgIC8vIGlpLiBSZXR1cm5JZkFicnVwdChyZWplY3RSZXN1
bHQpLgorICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CisKKyAgICAvLyBpaWkuIFJldHVybiBkZWZlcnJlZC5bW1Byb21pc2VdXS4KKyAg
ICByZXR1cm4gZGVmZXJyZWQtPnByb21pc2UoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVy
cmVkLmgJKHJldmlzaW9uIDE2MTMzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZURlZmVycmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDExIEBAIGVu
dW0gVGhlbmFibGVTdGF0dXMgewogSlNWYWx1ZSBjcmVhdGVKU1Byb21pc2VEZWZlcnJlZEZyb21D
b25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbnN0cnVjdG9yKTsKIFRoZW5hYmxlU3Rh
dHVzIHVwZGF0ZURlZmVycmVkRnJvbVBvdGVudGlhbFRoZW5hYmxlKEV4ZWNTdGF0ZSosIEpTVmFs
dWUsIEpTUHJvbWlzZURlZmVycmVkKik7CiAKK3ZvaWQgcGVyZm9ybURlZmVycmVkUmVzb2x2ZShF
eGVjU3RhdGUqLCBKU1Byb21pc2VEZWZlcnJlZCosIEpTVmFsdWUgYXJndW1lbnQpOwordm9pZCBw
ZXJmb3JtRGVmZXJyZWRSZWplY3QoRXhlY1N0YXRlKiwgSlNQcm9taXNlRGVmZXJyZWQqLCBKU1Zh
bHVlIGFyZ3VtZW50KTsKKworSlNWYWx1ZSBhYnJ1cHRSZWplY3Rpb24oRXhlY1N0YXRlKiwgSlNQ
cm9taXNlRGVmZXJyZWQqKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU1By
b21pc2VEZWZlcnJlZF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2VGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZUZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDE2MTMzMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKICNpbmNsdWRl
ICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZURlZmVycmVkLmgi
CisjaW5jbHVkZSAiTnVtYmVyT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03MSw2
ICs3Miw1NSBAQCBKU0Z1bmN0aW9uKiBjcmVhdGVJZGVudGlmeUZ1bmN0aW9uKFZNJiB2CiAgICAg
cmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBBU0NJSUxpdGVy
YWwoIklkZW50aXR5RnVuY3Rpb24iKSwgaWRlbnRpZnlGdW5jdGlvbik7CiB9CiAKKy8vIFByb21p
c2UuQWxsIENvdW50ZG93biBGdW5jdGlvbnMKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcHJvbWlzZUFsbENvdW50ZG93bkZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBKU1ZhbHVlIHggPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIEpTT2JqZWN0KiBGID0gZXhlYy0+Y2FsbGVlKCk7CisKKyAgICAvLyAxLiBMZXQg
J2luZGV4JyBiZSB0aGUgdmFsdWUgb2YgRidzIFtbSW5kZXhdXSBpbnRlcm5hbCBzbG90LgorICAg
IHVpbnQzMl90IGluZGV4ID0gRi0+Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmluZGV4UHJp
dmF0ZU5hbWUpLmFzVUludDMyKCk7CisKKyAgICAvLyAyLiBMZXQgJ3ZhbHVlcycgYmUgdGhlIHZh
bHVlIG9mIEYncyBbW1ZhbHVlc11dIGludGVybmFsIHNsb3QuLgorICAgIEpTQXJyYXkqIHZhbHVl
cyA9IGpzQ2FzdDxKU0FycmF5Kj4oRi0+Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVl
c1ByaXZhdGVOYW1lKSk7CisKKyAgICAvLyAzLiBMZXQgJ2RlZmVycmVkJyBiZSB0aGUgdmFsdWUg
b2YgRidzIFtbRGVmZXJyZWRdXSBpbnRlcm5hbCBzbG90LgorICAgIEpTUHJvbWlzZURlZmVycmVk
KiBkZWZlcnJlZCA9IGpzQ2FzdDxKU1Byb21pc2VEZWZlcnJlZCo+KEYtPmdldChleGVjLCB2bS5w
cm9wZXJ0eU5hbWVzLT5kZWZlcnJlZFByaXZhdGVOYW1lKSk7CisKKyAgICAvLyA0LiBMZXQgJ2Nv
dW50ZG93bkhvbGRlcicgYmUgdGhlIHZhbHVlIG9mIEYncyBbW0NvdW50ZG93bkhvbGRlcl1dIGlu
dGVybmFsIHNsb3QuCisgICAgTnVtYmVyT2JqZWN0KiBjb3VudGRvd25Ib2xkZXIgPSBqc0Nhc3Q8
TnVtYmVyT2JqZWN0Kj4oRi0+Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmNvdW50ZG93bkhv
bGRlclByaXZhdGVOYW1lKSk7CisKKyAgICAvLyA1LiBMZXQgJ3Jlc3VsdCcgYmUgdGhlIHJlc3Vs
dCBvZiBjYWxsaW5nIHRoZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kCisg
ICAgLy8gICAgb2YgJ3ZhbHVlcycgd2l0aCBhcmd1bWVudHMgJ2luZGV4JyBhbmQgUHJvcGVydHkg
RGVzY3JpcHRvciB7IFtbVmFsdWVdXTogeCwKKyAgICAvLyAgICBbW1dyaXRhYmxlXV06IHRydWUs
IFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlIH0uCisgICAgdmFs
dWVzLT5wdXREaXJlY3RJbmRleChleGVjLCBpbmRleCwgeCk7CisKKyAgICAvLyA2LiBSZWplY3RJ
ZkFicnVwdChyZXN1bHQsIGRlZmVycmVkKS4KKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgIGFicnVwdFJlamVjdGlvbihleGVjLCBkZWZlcnJlZCk7CisKKyAgICAvLyA3LiBT
ZXQgY291bnRkb3duSG9sZGVyLltbQ291bnRkb3duXV0gdG8gY291bnRkb3duSG9sZGVyLltbQ291
bnRkb3duXV0gLSAxLgorICAgIHVpbnQzMl90IG5ld0NvdW50ZG93blZhbHVlID0gY291bnRkb3du
SG9sZGVyLT5pbnRlcm5hbFZhbHVlKCkuYXNVSW50MzIoKSAtIDE7CisgICAgY291bnRkb3duSG9s
ZGVyLT5zZXRJbnRlcm5hbFZhbHVlKHZtLCBKU1ZhbHVlKG5ld0NvdW50ZG93blZhbHVlKSk7CisK
KyAgICAvLyA4LiBJZiBjb3VudGRvd25Ib2xkZXIuW1tDb3VudGRvd25dXSBpcyAwLAorICAgIGlm
ICghbmV3Q291bnRkb3duVmFsdWUpIHsKKyAgICAgICAgLy8gaS4gUmV0dXJuIHRoZSByZXN1bHQg
b2YgY2FsbGluZyB0aGUgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kIG9mIGRlZmVycmVkLltbUmVz
b2x2ZV1dCisgICAgICAgIC8vICAgIHdpdGggdW5kZWZpbmVkIGFzIHRoaXNBcmd1bWVudCBhbmQg
YSBMaXN0IGNvbnRhaW5pbmcgJ3ZhbHVlcycgYXMgYXJndW1lbnRzTGlzdC4KKyAgICAgICAgcGVy
Zm9ybURlZmVycmVkUmVzb2x2ZShleGVjLCBkZWZlcnJlZCwgdmFsdWVzKTsKKyAgICB9CisKKyAg
ICAvLyA5LiBSZXR1cm4uCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKK30KKworSlNGdW5jdGlvbiogY3JlYXRlUHJvbWlzZUFsbENvdW50ZG93bkZ1bmN0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsIEFTQ0lJTGl0ZXJhbCgiUHJvbWlzZUFs
bENvdW50ZG93bkZ1bmN0aW9uIiksIHByb21pc2VBbGxDb3VudGRvd25GdW5jdGlvbik7Cit9CisK
IC8vIFByb21pc2UgUmVzb2x1dGlvbiBIYW5kbGVyIEZ1bmN0aW9ucwogCiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm9taXNlUmVzb2x1dGlvbkhhbmRsZXJGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2VGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb21pc2VGdW5jdGlvbnMuaAkocmV2aXNpb24gMTYxMzMwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlRnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEpTRnVuY3Rpb24qIGNyZWF0ZURl
ZmVycmVkQ29uc3RydWN0aW9uRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogSlNGdW5j
dGlvbiogY3JlYXRlSWRlbnRpZnlGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CitKU0Z1
bmN0aW9uKiBjcmVhdGVQcm9taXNlQWxsQ291bnRkb3duRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9i
amVjdCopOwogSlNGdW5jdGlvbiogY3JlYXRlUHJvbWlzZVJlc29sdXRpb25IYW5kbGVyRnVuY3Rp
b24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogSlNGdW5jdGlvbiogY3JlYXRlUmVqZWN0UHJvbWlz
ZUZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIEpTRnVuY3Rpb24qIGNyZWF0ZVJlc29s
dmVQcm9taXNlRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlUmVhY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZVJlYWN0aW9uLmNwcAkocmV2
aXNpb24gMTYxMzMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNl
UmVhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxNyArODksNyBAQCB2b2lkIEV4ZWN1
dGVQcm9taXNlUmVhY3Rpb25NaWNyb3Rhc2s6OnJ1CiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9u
ID0gZXhlYy0+ZXhjZXB0aW9uKCk7CiAgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CiAK
LSAgICAgICAgSlNWYWx1ZSBkZWZlcnJlZFJlamVjdCA9IGRlZmVycmVkLT5yZWplY3QoKTsKLQot
ICAgICAgICBDYWxsRGF0YSByZWplY3RDYWxsRGF0YTsKLSAgICAgICAgQ2FsbFR5cGUgcmVqZWN0
Q2FsbFR5cGUgPSBnZXRDYWxsRGF0YShkZWZlcnJlZFJlamVjdCwgcmVqZWN0Q2FsbERhdGEpOwot
ICAgICAgICBBU1NFUlQocmVqZWN0Q2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKLQotICAgICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciByZWplY3RBcmd1bWVudHM7Ci0gICAgICAgIHJlamVjdEFy
Z3VtZW50cy5hcHBlbmQoZXhjZXB0aW9uKTsKLQotICAgICAgICBjYWxsKGV4ZWMsIGRlZmVycmVk
UmVqZWN0LCByZWplY3RDYWxsVHlwZSwgcmVqZWN0Q2FsbERhdGEsIGpzVW5kZWZpbmVkKCksIHJl
amVjdEFyZ3VtZW50cyk7Ci0gICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgcmV0dXJuIHRoZSBy
ZXN1bHQgc29tZXdoZXJlPworICAgICAgICBwZXJmb3JtRGVmZXJyZWRSZWplY3QoZXhlYywgZGVm
ZXJyZWQsIGV4Y2VwdGlvbik7CiAgICAgfQogICAgIAogICAgIC8vIDUuIExldCAnaGFuZGxlclJl
c3VsdCcgYmUgaGFuZGxlclJlc3VsdC5bW3ZhbHVlXV0uCkBAIC0xMDksMTkgKzk5LDEwIEBAIHZv
aWQgRXhlY3V0ZVByb21pc2VSZWFjdGlvbk1pY3JvdGFzazo6cnUKICAgICBpZiAoc2FtZVZhbHVl
KGV4ZWMsIGhhbmRsZXJSZXN1bHQsIGRlZmVycmVkLT5wcm9taXNlKCkpKSB7CiAgICAgICAgIC8v
IGkuIExldCAnc2VsZlJlc29sdXRpb25FcnJvcicgYmUgYSBuZXdseS1jcmVhdGVkIFR5cGVFcnJv
ciBvYmplY3QuCiAgICAgICAgIEpTT2JqZWN0KiBzZWxmUmVzb2x1dGlvbkVycm9yID0gY3JlYXRl
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVzb2x2ZSBhIHByb21pc2Ugd2l0aCBpdHNl
bGYiKSk7CisKICAgICAgICAgLy8gaWkuIFJldHVybiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhl
IFtbQ2FsbF1dIGludGVybmFsIG1ldGhvZCBvZiBkZWZlcnJlZC5bW1JlamVjdF1dIHBhc3NpbmcK
ICAgICAgICAgLy8gICAgIHVuZGVmaW5lZCBhcyB0aGlzQXJndW1lbnQgYW5kIGEgTGlzdCBjb250
YWluaW5nIHNlbGZSZXNvbHV0aW9uRXJyb3IgYXMgYXJndW1lbnRzTGlzdC4KLSAgICAgICAgSlNW
YWx1ZSBkZWZlcnJlZFJlamVjdCA9IGRlZmVycmVkLT5yZWplY3QoKTsKLQotICAgICAgICBDYWxs
RGF0YSByZWplY3RDYWxsRGF0YTsKLSAgICAgICAgQ2FsbFR5cGUgcmVqZWN0Q2FsbFR5cGUgPSBn
ZXRDYWxsRGF0YShkZWZlcnJlZFJlamVjdCwgcmVqZWN0Q2FsbERhdGEpOwotICAgICAgICBBU1NF
UlQocmVqZWN0Q2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKLQotICAgICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciByZWplY3RBcmd1bWVudHM7Ci0gICAgICAgIHJlamVjdEFyZ3VtZW50cy5hcHBl
bmQoc2VsZlJlc29sdXRpb25FcnJvcik7Ci0KLSAgICAgICAgY2FsbChleGVjLCBkZWZlcnJlZFJl
amVjdCwgcmVqZWN0Q2FsbFR5cGUsIHJlamVjdENhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCByZWpl
Y3RBcmd1bWVudHMpOwotICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHJldHVybiB0aGUgcmVz
dWx0IHNvbWV3aGVyZT8KKyAgICAgICAgcGVyZm9ybURlZmVycmVkUmVqZWN0KGV4ZWMsIGRlZmVy
cmVkLCBzZWxmUmVzb2x1dGlvbkVycm9yKTsKICAgICB9CiAKICAgICAvLyA3LiBMZXQgJ3VwZGF0
ZVJlc3VsdCcgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFVwZGF0ZURlZmVycmVkRnJvbVBvdGVu
dGlhbFRoZW5hYmxlKGhhbmRsZXJSZXN1bHQsIGRlZmVycmVkKS4KQEAgLTEzNSwxOCArMTE2LDcg
QEAgdm9pZCBFeGVjdXRlUHJvbWlzZVJlYWN0aW9uTWljcm90YXNrOjpydQogICAgIGlmICh1cGRh
dGVSZXN1bHQgPT0gTm90QVRoZW5hYmxlKSB7CiAgICAgICAgIC8vIGkuIFJldHVybiB0aGUgcmVz
dWx0IG9mIGNhbGxpbmcgdGhlIFtbQ2FsbF1dIGludGVybmFsIG1ldGhvZCBvZiBkZWZlcnJlZC5b
W1Jlc29sdmVdXQogICAgICAgICAvLyAgICBwYXNzaW5nIHVuZGVmaW5lZCBhcyB0aGlzQXJndW1l
bnQgYW5kIGEgTGlzdCBjb250YWluaW5nIGhhbmRsZXJSZXN1bHQgYXMgYXJndW1lbnRzTGlzdC4K
LQotICAgICAgICBKU1ZhbHVlIGRlZmVycmVkUmVzb2x2ZSA9IGRlZmVycmVkLT5yZXNvbHZlKCk7
Ci0KLSAgICAgICAgQ2FsbERhdGEgcmVzb2x2ZUNhbGxEYXRhOwotICAgICAgICBDYWxsVHlwZSBy
ZXNvbHZlQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YShkZWZlcnJlZFJlc29sdmUsIHJlc29sdmVDYWxs
RGF0YSk7Ci0gICAgICAgIEFTU0VSVChyZXNvbHZlQ2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsK
LQotICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAgICAgIGFyZ3Vt
ZW50cy5hcHBlbmQoaGFuZGxlclJlc3VsdCk7Ci0KLSAgICAgICAgY2FsbChleGVjLCBkZWZlcnJl
ZFJlc29sdmUsIHJlc29sdmVDYWxsVHlwZSwgcmVzb2x2ZUNhbGxEYXRhLCBqc1VuZGVmaW5lZCgp
LCBhcmd1bWVudHMpOwotICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHJldHVybiB0aGUgcmVz
dWx0IHNvbWV3aGVyZT8KKyAgICAgICAgcGVyZm9ybURlZmVycmVkUmVzb2x2ZShleGVjLCBkZWZl
cnJlZCwgaGFuZGxlclJlc3VsdCk7CiAgICAgfQogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjEz
MzApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OCBAQAorMjAxNC0wMS0wNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAg
IFtKU10gSW1wbGVtZW50IFByb21pc2UuYWxsKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjUxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZWQgYW5kIGZpeCB0aGUgZXhpc3RpbmcgUHJvbWlz
ZS5hbGwoKSB0ZXN0IGNhc2UuCisgICAgICAgIC0gUHJvbWlzZS5hbGwoKSBhbmQgUHJvbWlzZS5h
bGwoe30pIHNob3VsZCByZWplY3QgYnkgbXkgcmVhZGluZyBvZiB0aGUgc3BlYy4KKyAgICAgICAg
QWxzbyByZW1vdmVzIHRoZSBQcm9taXNlLmFsbCgpIHNoaW0gdXNlZCBieSB0aGUgY3J5cHRvIHRl
c3RzLgorCisgICAgICAgICogY3J5cHRvL3N1YnRsZS9yZXNvdXJjZXMvY29tbW9uLmpzOgorICAg
ICAgICAqIGpzL2RvbS9Qcm9taXNlLXN0YXRpYy1hbGwtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGpzL2RvbS9Qcm9taXNlLXN0YXRpYy1hbGwuaHRtbDoKKwogMjAxNC0wMS0wNSAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtKU10gSW1wbGVtZW50IFByb21pc2UucmFj
ZSgpCkluZGV4OiBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3Jlc291cmNlcy9jb21tb24uanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9yZXNvdXJjZXMvY29tbW9u
LmpzCShyZXZpc2lvbiAxNjEzMjkpCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3Jlc291
cmNlcy9jb21tb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwyNCArMTAxLDUgQEAgdmFyIEJh
c2U2NFVSTCA9IHsKICAgICB9CiB9OwogCi1pZiAoIVByb21pc2UuYWxsKSB7Ci0gICAgLy8gQSB2
ZXJ5IHNpbXBsZSB0ZW1wb3JhcnkgaW1wbGVtZW50YXRpb24gb25seSBmb3IgV2ViQ3J5cHRvIHRl
c3RzLgotICAgIFByb21pc2UuYWxsID0gZnVuY3Rpb24ocHJvbWlzZXMpIHsKLSAgICAgICAgdmFy
IHJlc3VsdHMgPSBbXTsKLSAgICAgICAgdmFyIHJlc3VsdENvdW50ID0gMDsKLSAgICAgICAgdmFy
IHJlc29sdmVyOwotICAgICAgICB2YXIgcmVqZWN0b3I7Ci0gICAgICAgIGZ1bmN0aW9uIG5leHQo
cmVzdWx0KSB7Ci0gICAgICAgICAgICByZXN1bHRzW3Jlc3VsdENvdW50KytdID0gcmVzdWx0Owot
ICAgICAgICAgICAgaWYgKHJlc3VsdENvdW50IDwgcHJvbWlzZXMubGVuZ3RoKQotICAgICAgICAg
ICAgICAgIHByb21pc2VzW3Jlc3VsdENvdW50XS50aGVuKG5leHQpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHJlc29sdmVyKHJlc3VsdHMpOwotICAgICAgICB9Ci0gICAgICAg
IHByb21pc2VzWzBdLnRoZW4obmV4dCwgZnVuY3Rpb24oKSB7IHJlamVjdG9yKG51bGwpIH0pOwot
ICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7IHJl
c29sdmVyID0gcmVzb2x2ZTsgcmVqZWN0b3IgPSByZWplY3Q7IH0pOwotICAgIH0KLX0KLQogaWYg
KCFjcnlwdG8uc3VidGxlKQogICAgIGNyeXB0by5zdWJ0bGUgPSBjcnlwdG8ud2Via2l0U3VidGxl
OwpJbmRleDogTGF5b3V0VGVzdHMvanMvZG9tL1Byb21pc2Utc3RhdGljLWFsbC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZG9tL1Byb21pc2Utc3RhdGljLWFsbC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDE2MTMyOSkKKysrIExheW91dFRlc3RzL2pzL2RvbS9Qcm9t
aXNlLXN0YXRpYy1hbGwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsMjgg
QEAgVGVzdCBQcm9taXNlLmFsbAogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKK1BBU1Mg
cmVzdWx0IGlzIHVuZGVmaW5lZAorUEFTUyBQcm9taXNlLmFsbCgpIGlzIHJlamVjdGVkLgorUEFT
UyBQcm9taXNlLmFsbChbcDEsIHAyLCBwM10pIGlzIGZ1bGZpbGxlZC4KK1BBU1MgcmVzdWx0Lmxl
bmd0aCBpcyAzCitQQVNTIHJlc3VsdFswXSBpcyAicDEiCitQQVNTIHJlc3VsdFsxXSBpcyAicDIi
CitQQVNTIHJlc3VsdFsyXSBpcyAicDMiCitQQVNTIFByb21pc2UuYWxsKFtwMSwgcDYsIHA1XSkg
aXMgcmVqZWN0ZWQuCitQQVNTIHJlc3VsdCBpcyAicDYiCitQQVNTIFByb21pc2UuYWxsKFtwOV0p
IGlzIGZ1bGZpbGxlZC4KK1BBU1MgcmVzdWx0Lmxlbmd0aCBpcyAxCitQQVNTIHJlc3VsdFswXSBp
cyAicDIiCitQQVNTIFByb21pc2UuYWxsKFtwOSwsLF0pIGlzIGZ1bGZpbGxlZC4KK1BBU1MgcmVz
dWx0Lmxlbmd0aCBpcyAzCitQQVNTIHJlc3VsdFswXSBpcyAicDIiCitQQVNTIHJlc3VsdFsxXSBp
cyB1bmRlZmluZWQKK1BBU1MgcmVzdWx0WzJdIGlzIHVuZGVmaW5lZAorUEFTUyBQcm9taXNlLmFs
bChbcDksNDJdKSBpcyBmdWxmaWxsZWQuCitQQVNTIHJlc3VsdC5sZW5ndGggaXMgMgorUEFTUyBy
ZXN1bHRbMF0gaXMgInAyIgorUEFTUyByZXN1bHRbMV0gaXMgNDIKK1BBU1MgUHJvbWlzZS5hbGwo
e30pIGlzIHJlamVjdGVkLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNU
IENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9kb20vUHJvbWlzZS1zdGF0aWMtYWxsLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZG9tL1Byb21pc2Utc3RhdGljLWFsbC5o
dG1sCShyZXZpc2lvbiAxNjEzMjkpCisrKyBMYXlvdXRUZXN0cy9qcy9kb20vUHJvbWlzZS1zdGF0
aWMtYWxsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksNyArOSw2IEBACiA8c2NyaXB0PgogZGVz
Y3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS5hbGwnKTsKIAotLyoKIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKIHJlc3VsdCA9IHVuZGVmaW5lZDsKIApAQCAtMzAsMTEgKzI5LDkgQEAgUHJvbWlz
ZS5hbGwoW3AxLCBwMiwgcDVdKS50aGVuKGZ1bmN0aW9uKAogfSk7CiAKIFByb21pc2UuYWxsKCku
dGhlbihmdW5jdGlvbihyZXN1bHQpIHsKLSAgdGVzdFBhc3NlZCgnUHJvbWlzZS5hbGwoKSBpcyBm
dWxmaWxsZWQuJyk7Ci0gIHdpbmRvdy5yZXN1bHQgPSByZXN1bHQ7Ci0gIHNob3VsZEJlKCdyZXN1
bHQubGVuZ3RoJywgJzAnKTsKKyAgdGVzdEZhaWxlZCgnUHJvbWlzZS5hbGwoKSBpcyBmdWxmaWxs
ZWQuJyk7CiB9LCBmdW5jdGlvbigpIHsKLSAgdGVzdEZhaWxlZCgnUHJvbWlzZS5hbGwoKSBpcyBy
ZWplY3RlZC4nKTsKKyAgdGVzdFBhc3NlZCgnUHJvbWlzZS5hbGwoKSBpcyByZWplY3RlZC4nKTsK
IH0pLnRoZW4oZnVuY3Rpb24oKSB7CiAgIHJldHVybiBQcm9taXNlLmFsbChbcDEsIHAyLCBwM10p
LnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CiAgICAgdGVzdFBhc3NlZCgnUHJvbWlzZS5hbGwoW3Ax
LCBwMiwgcDNdKSBpcyBmdWxmaWxsZWQuJyk7CkBAIC05MCwxNiArODcsMTMgQEAgUHJvbWlzZS5h
bGwoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewogfSkudGhlbihmdW5jdGlvbigpIHsKICAgLy8g
Tm90IGl0ZXJhYmxlIG9iamVjdCBjYXNlLgogICByZXR1cm4gUHJvbWlzZS5hbGwoe30pLnRoZW4o
ZnVuY3Rpb24ocmVzdWx0KSB7Ci0gICAgdGVzdFBhc3NlZCgnUHJvbWlzZS5hbGwoe30pIGlzIGZ1
bGZpbGxlZC4nKTsKLSAgICB3aW5kb3cucmVzdWx0ID0gcmVzdWx0OwotICAgIHNob3VsZEJlKCdy
ZXN1bHQubGVuZ3RoJywgJzAnKTsKKyAgICB0ZXN0RmFpbGVkKCdQcm9taXNlLmFsbCh7fSkgaXMg
ZnVsZmlsbGVkLicpOwogICB9LCBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICB0ZXN0RmFpbGVkKCdQ
cm9taXNlLmFsbCh7fSkgaXMgcmVqZWN0ZWQuJyk7CisgICAgdGVzdFBhc3NlZCgnUHJvbWlzZS5h
bGwoe30pIGlzIHJlamVjdGVkLicpOwogICB9KTsKIH0pLnRoZW4oZmluaXNoSlNUZXN0LCBmaW5p
c2hKU1Rlc3QpOwogCiBzaG91bGRCZSgncmVzdWx0JywgJ3VuZGVmaW5lZCcpOwotKi8KIAogPC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cg==
</data>
<flag name="review"
          id="244118"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>