<?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>165053</bug_id>
          
          <creation_ts>2016-11-23 16:32:12 -0800</creation_ts>
          <short_desc>Fix exception scope verification failures in ProxyConstructor.cpp and ProxyObject.cpp.</short_desc>
          <delta_ts>2016-11-29 11:10:06 -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>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>162351</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1253524</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-23 16:32:12 -0800</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253525</commentid>
    <comment_count>1</comment_count>
      <attachid>295384</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-23 16:34:24 -0800</bug_when>
    <thetext>Created attachment 295384
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253617</commentid>
    <comment_count>2</comment_count>
      <attachid>295384</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-24 13:38:32 -0800</bug_when>
    <thetext>Comment on attachment 295384
proposed patch.

It is invalid to replace returning encodedJSValue() with returning { }.  On 32-bit builds, the former is non-zero, while the latter is 0.  Will fix this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253661</commentid>
    <comment_count>3</comment_count>
      <attachid>295427</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-25 14:00:06 -0800</bug_when>
    <thetext>Created attachment 295427
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253982</commentid>
    <comment_count>4</comment_count>
      <attachid>295427</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-11-28 14:01:48 -0800</bug_when>
    <thetext>Comment on attachment 295427
proposed patch.

View in context: https://bugs.webkit.org/attachment.cgi?id=295427&amp;action=review

&gt; Source/JavaScriptCore/runtime/ProxyObject.cpp:944
&gt;      bool targetIsExensible = target-&gt;isExtensible(exec);
&gt; +    RETURN_IF_EXCEPTION(scope, void());

This seems like it could be easily testable through JS code by ensuring that getOwnPropertyNames below is not called if this throws an exception.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254344</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-29 11:06:28 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 295427 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=295427&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/ProxyObject.cpp:944
&gt; &gt;      bool targetIsExensible = target-&gt;isExtensible(exec);
&gt; &gt; +    RETURN_IF_EXCEPTION(scope, void());
&gt; 
&gt; This seems like it could be easily testable through JS code by ensuring that
&gt; getOwnPropertyNames below is not called if this throws an exception.

I thought this was easy too, but upon trying, I found that it is easy to replicate the condition of the unchecked exception, however, it is not easy to create a condition where the unchecked exception is detectable.  This is because the exception will eventually get checked at many places before the VM gets back to any JS code that can observe the issue.  Hence, I won&apos;t be able to write this test.

I&apos;ll land this patch as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254345</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-29 11:10:06 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r209080: &lt;http://trac.webkit.org/r209080&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295384</attachid>
            <date>2016-11-23 16:34:24 -0800</date>
            <delta_ts>2016-11-25 14:00:06 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-165053.patch</filename>
            <type>text/plain</type>
            <size>20239</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4OTcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDE2LTExLTIzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXggZXhjZXB0aW9uIHNjb3BlIHZlcmlmaWNhdGlvbiBmYWlsdXJlcyBpbiBQcm94eUNvbnN0cnVj
dG9yLmNwcCBhbmQgUHJveHlPYmplY3QuY3BwLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWxzbyByZXBsYWNlZCByZXR1cm5pbmcgSlNWYWx1ZSgpIGFu
ZCBlbmNvZGVkSlNWYWx1ZSgpIHdpdGggcmV0dXJuaW5nIHsgfS4KKworICAgICAgICAqIHJ1bnRp
bWUvUHJveHlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om1ha2VSZXZvY2FibGVQcm94
eSk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFByb3h5T2JqZWN0KToKKyAgICAgICAgKiBydW50
aW1lL1Byb3h5T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnN0cnVjdHVy
ZUZvclRhcmdldCk6CisgICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUdldCk6CisgICAgICAgIChK
U0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90Q29tbW9uKToKKyAgICAgICAgKEpT
Qzo6UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6
cHV0QnlJbmRleENvbW1vbik6CisgICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUNhbGwpOgorICAg
ICAgICAoSlNDOjpwZXJmb3JtUHJveHlDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpQcm94eU9i
amVjdDo6cGVyZm9ybURlbGV0ZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3Jt
UHJldmVudEV4dGVuc2lvbnMpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUlz
RXh0ZW5zaWJsZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtRGVmaW5lT3du
UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVNldFByb3RvdHlw
ZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlKToKKwog
MjAxNi0xMS0yMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIEVOQUJMRV9BU1NFTUJMRVJfV1hfRVhDTFVTSVZFIGNvZGUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiAyMDg5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsMTIgKzY0LDEyIEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2UKICAgICBKU1ZhbHVlIHRhcmdldCA9IGFy
Z3MuYXQoMCk7CiAgICAgSlNWYWx1ZSBoYW5kbGVyID0gYXJncy5hdCgxKTsKICAgICBQcm94eU9i
amVjdCogcHJveHkgPSBQcm94eU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgdGFyZ2V0LCBoYW5kbGVyKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogICAgIFByb3h5UmV2b2tlKiByZXZva2UgPSBQcm94eVJldm9rZTo6Y3JlYXRlKHZtLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb3h5UmV2b2tlU3RydWN0dXJlKCksIHByb3h5
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgSlNPYmplY3QqIHJlc3Vs
dCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIG1ha2VJZGVudGlmaWVyKHZtLCAicHJv
eHkiKSwgcHJveHksIE5vbmUpOwogICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBtYWtlSWRlbnRp
Zmllcih2bSwgInJldm9rZSIpLCByZXZva2UsIE5vbmUpOwogCkBAIC05OSw2ICs5OSw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICBBcmdMaXN0IGFyZ3Mo
ZXhlYyk7CiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBhcmdzLmF0KDApOwogICAgIEpTVmFsdWUgaGFu
ZGxlciA9IGFyZ3MuYXQoMSk7CisgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoUHJveHlPYmplY3Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIHRhcmdldCwgaGFuZGxlcikpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCShyZXZpc2lvbiAyMDg5NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc0LDcgKzc0LDggQEAgU3RydWN0dXJlKiBQcm94eU9iamVjdDo6c3RydWN0dXJlRm9y
VGFyZwogCiAgICAgSlNPYmplY3QqIHRhcmdldEFzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4o
dGFyZ2V0KTsKICAgICBDYWxsRGF0YSBpZ25vcmVkQ2FsbERhdGE7Ci0gICAgYm9vbCBpc0NhbGxh
YmxlID0gdGFyZ2V0QXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKHRhcmdldEFz
T2JqZWN0LCBpZ25vcmVkQ2FsbERhdGEpICE9IENhbGxUeXBlOjpOb25lOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBib29sIGlzQ2FsbGFibGUgPSB0YXJnZXRBc09iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YSh0YXJnZXRBc09iamVjdCwgaWdub3JlZENh
bGxEYXRhKSAhPSBDYWxsVHlwZTo6Tm9uZTsKICAgICByZXR1cm4gaXNDYWxsYWJsZSA/IGdsb2Jh
bE9iamVjdC0+Y2FsbGFibGVQcm94eU9iamVjdFN0cnVjdHVyZSgpIDogZ2xvYmFsT2JqZWN0LT5w
cm94eU9iamVjdFN0cnVjdHVyZSgpOwogfQogCkBAIC0xMjEsNyArMTIyLDcgQEAgc3RhdGljIEpT
VmFsdWUgcGVyZm9ybVByb3h5R2V0KEV4ZWNTdGF0ZQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNv
ZnQoKSkpIHsKICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwot
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAog
ICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBwcm94eU9iamVjdC0+dGFyZ2V0KCk7CkBAIC0xMzAsOCAr
MTMxLDEwIEBAIHN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1Qcm94eUdldChFeGVjU3RhdGUKICAgICAg
ICAgcmV0dXJuIHRhcmdldC0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgfTsKIAotICAg
IGlmICh2bS5wcm9wZXJ0eU5hbWVzLT5pc1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21VaWQo
JnZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSkKKyAgICBpZiAodm0ucHJvcGVydHlOYW1lcy0+aXNQ
cml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkp
IHsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gcGVyZm9ybURlZmF1
bHRHZXQoKTsKKyAgICB9CiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHByb3h5T2JqZWN0
LT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkKQEAgLTE0MSwxNyAr
MTQ0LDE5IEBAIHN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1Qcm94eUdldChFeGVjU3RhdGUKICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZTsKICAgICBKU1ZhbHVlIGdl
dEhhbmRsZXIgPSBoYW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2FsbERhdGEsIGNhbGxUeXBlLCB2
bS5wcm9wZXJ0eU5hbWVzLT5nZXQsIEFTQ0lJTGl0ZXJhbCgiJ2dldCcgcHJvcGVydHkgb2YgYSBQ
cm94eSdzIGhhbmRsZXIgb2JqZWN0IHNob3VsZCBiZSBjYWxsYWJsZSIpKTsKLSAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAKLSAgICBpZiAoZ2V0SGFuZGxlci5pc1VuZGVmaW5lZCgpKQorICAgIGlm
IChnZXRIYW5kbGVyLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwog
ICAgICAgICByZXR1cm4gcGVyZm9ybURlZmF1bHRHZXQoKTsKKyAgICB9CiAKICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwog
ICAgIGFyZ3VtZW50cy5hcHBlbmQoaWRlbnRpZmllclRvU2FmZVB1YmxpY0pTVmFsdWUodm0sIElk
ZW50aWZpZXI6OmZyb21VaWQoJnZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSk7CiAgICAgYXJndW1l
bnRzLmFwcGVuZChyZWNlaXZlcik7CiAgICAgSlNWYWx1ZSB0cmFwUmVzdWx0ID0gY2FsbChleGVj
LCBnZXRIYW5kbGVyLCBjYWxsVHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7Ci0g
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0
b3I7CiAgICAgaWYgKHRhcmdldC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvcikpIHsKQEAgLTE2NCw3ICsxNjksNyBAQCBzdGF0aWMgSlNWYWx1
ZSBwZXJmb3JtUHJveHlHZXQoRXhlY1N0YXRlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAKICAgICByZXR1cm4gdHJhcFJlc3VsdDsKIH0KQEAgLTE5NCw4ICsx
OTksMTAgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kRwogICAgICAg
ICByZXR1cm4gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0YXJn
ZXQsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfTsKIAotICAgIGlmICh2bS5wcm9w
ZXJ0eU5hbWVzLT5pc1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCBwcm9wZXJ0
eU5hbWUudWlkKCkpKSkKKyAgICBpZiAodm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFtZShJ
ZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpIHsKKyAgICAgICAg
c2NvcGUucmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gcGVyZm9ybURlZmF1bHRHZXRPd25Qcm9w
ZXJ0eSgpOworICAgIH0KIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxl
cigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKQEAgLTIwOCw4ICsyMTUsMTAg
QEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kRwogICAgIENhbGxUeXBl
IGNhbGxUeXBlOwogICAgIEpTVmFsdWUgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTWV0aG9kID0g
aGFuZGxlci0+Z2V0TWV0aG9kKGV4ZWMsIGNhbGxEYXRhLCBjYWxsVHlwZSwgbWFrZUlkZW50aWZp
ZXIodm0sICJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiKSwgQVNDSUlMaXRlcmFsKCInZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQg
YmUgY2FsbGFibGUiKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwot
ICAgIGlmIChnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNZXRob2QuaXNVbmRlZmluZWQoKSkKKyAg
ICBpZiAoZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTWV0aG9kLmlzVW5kZWZpbmVkKCkpIHsKKyAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gcGVyZm9ybURlZmF1bHRHZXRP
d25Qcm9wZXJ0eSgpOworICAgIH0KIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50
czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7CkBAIC0yNTYsNiArMjY1LDcgQEAgYm9v
bCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kRwogICAgIGJvb2wgdGhyb3dFeGNl
cHRpb24gPSBmYWxzZTsKICAgICBib29sIHZhbGlkID0gdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5
RGVzY3JpcHRvcihleGVjLCBudWxscHRyLCBwcm9wZXJ0eU5hbWUsIGlzRXh0ZW5zaWJsZSwKICAg
ICAgICAgdHJhcFJlc3VsdEFzRGVzY3JpcHRvciwgaXNUYXJnZXRQcm9wZXJ0eURlc2NyaXB0b3JE
ZWZpbmVkLCB0YXJnZXRQcm9wZXJ0eURlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKCF2YWxpZCkgewogICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlc3VsdCBm
cm9tICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGZhaWxzIHRoZSBJc0NvbXBhdGlibGVQcm9w
ZXJ0eURlc2NyaXB0b3IgdGVzdCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjk1LDgg
KzMwNSwxMCBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkoRXhlCiAgICAg
ICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRh
cmdldCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICB9OwogCi0gICAgaWYgKHZtLnBy
b3BlcnR5TmFtZXMtPmlzUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0sIHByb3Bl
cnR5TmFtZS51aWQoKSkpKQorICAgIGlmICh2bS5wcm9wZXJ0eU5hbWVzLT5pc1ByaXZhdGVOYW1l
KElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSkgeworICAgICAg
ICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBwZXJmb3JtRGVmYXVsdEhhc1Byb3Bl
cnR5KCk7CisgICAgfQogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVy
KCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewpAQCAtMzA5LDggKzMyMSwxMCBA
QCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkoRXhlCiAgICAgQ2FsbFR5cGUg
Y2FsbFR5cGU7CiAgICAgSlNWYWx1ZSBoYXNNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZXhl
YywgY2FsbERhdGEsIGNhbGxUeXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5oYXMsIEFTQ0lJTGl0ZXJh
bCgiJ2hhcycgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxl
IikpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICBpZiAoaGFz
TWV0aG9kLmlzVW5kZWZpbmVkKCkpCisgICAgaWYgKGhhc01ldGhvZC5pc1VuZGVmaW5lZCgpKSB7
CisgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgcmV0dXJuIHBlcmZvcm1EZWZhdWx0
SGFzUHJvcGVydHkoKTsKKyAgICB9CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVu
dHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwpAQCAtMzU0LDEwICszNjgsMTMgQEAg
Ym9vbCBQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90Q29tbQogICAgIHNsb3Quc2V0SXNU
YWludGVkQnlPcGFxdWVPYmplY3QoKTsKICAgICBzd2l0Y2ggKHNsb3QuaW50ZXJuYWxNZXRob2RU
eXBlKCkpIHsKICAgICBjYXNlIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQ6
CisgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgcmV0dXJuIHBlcmZvcm1HZXQoZXhl
YywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBjYXNlIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eToKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAg
ICAgICByZXR1cm4gcGVyZm9ybUludGVybmFsTWV0aG9kR2V0T3duUHJvcGVydHkoZXhlYywgcHJv
cGVydHlOYW1lLCBzbG90KTsKICAgICBjYXNlIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpIYXNQcm9wZXJ0eToKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICByZXR1
cm4gcGVyZm9ybUhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzkwLDggKzQwNywxMCBAQCBib29sIFBy
b3h5T2JqZWN0OjpwZXJmb3JtUHV0KEV4ZWNTdGF0ZSogCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAodm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFtZShJZGVudGlm
aWVyOjpmcm9tVWlkKCZ2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpCisgICAgaWYgKHZtLnByb3Bl
cnR5TmFtZXMtPmlzUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0sIHByb3BlcnR5
TmFtZS51aWQoKSkpKSB7CisgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgcmV0dXJu
IHBlcmZvcm1EZWZhdWx0UHV0KCk7CisgICAgfQogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUg
PSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewpAQCAt
NDA1LDggKzQyNCwxMCBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0KEV4ZWNTdGF0ZSog
CiAgICAgSlNWYWx1ZSBzZXRNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2FsbERh
dGEsIGNhbGxUeXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQsIEFTQ0lJTGl0ZXJhbCgiJ3NldCcg
cHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIikpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBKU09iamVjdCogdGFyZ2V0
ID0gdGhpcy0+dGFyZ2V0KCk7Ci0gICAgaWYgKHNldE1ldGhvZC5pc1VuZGVmaW5lZCgpKQorICAg
IGlmIChzZXRNZXRob2QuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBzY29wZS5yZWxlYXNlKCk7
CiAgICAgICAgIHJldHVybiBwZXJmb3JtRGVmYXVsdFB1dCgpOworICAgIH0KIAogICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7
CkBAIC00NjAsNiArNDgxLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cHV0QnlJbmRleENvbW1vbihF
eGVjUwogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIGlzU3RyaWN0TW9k
ZSk7IC8vIFdlIG11c3QgcHJlc2VydmUgdGhlICJ0aGlzIiB0YXJnZXQgb2YgdGhlIHB1dEJ5SW5k
ZXguCiAgICAgICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHRhcmdldCwg
ZXhlYywgaWRlbnQuaW1wbCgpLCBwdXRWYWx1ZSwgc2xvdCk7CiAgICAgfTsKKyAgICBzY29wZS5y
ZWxlYXNlKCk7CiAgICAgcmV0dXJuIHBlcmZvcm1QdXQoZXhlYywgcHV0VmFsdWUsIHRoaXNWYWx1
ZSwgaWRlbnQuaW1wbCgpLCBwZXJmb3JtRGVmYXVsdFB1dCk7CiB9CiAKQEAgLTQ3NSw3ICs0OTcs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmCiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNT
YWZlVG9SZWN1cnNlU29mdCgpKSkgewogICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihl
eGVjLCBzY29wZSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganND
YXN0PFByb3h5T2JqZWN0Kj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIEpTVmFsdWUgaGFuZGxlclZh
bHVlID0gcHJveHktPmhhbmRsZXIoKTsKQEAgLTQ4NiwyMSArNTA4LDIzIEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmYKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAg
ICBDYWxsVHlwZSBjYWxsVHlwZTsKICAgICBKU1ZhbHVlIGFwcGx5TWV0aG9kID0gaGFuZGxlci0+
Z2V0TWV0aG9kKGV4ZWMsIGNhbGxEYXRhLCBjYWxsVHlwZSwgbWFrZUlkZW50aWZpZXIodm0sICJh
cHBseSIpLCBBU0NJSUxpdGVyYWwoIidhcHBseScgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRs
ZXIgc2hvdWxkIGJlIGNhbGxhYmxlIikpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHByb3h5LT50YXJnZXQoKTsKICAgICBpZiAoYXBwbHlN
ZXRob2QuaXNVbmRlZmluZWQoKSkgewogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAg
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERh
dGEodGFyZ2V0LCBjYWxsRGF0YSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxUeXBlICE9
IENhbGxUeXBlOjpOb25lKTsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgdGFyZ2V0LCBjYWxsVHlwZSwgY2FsbERhdGEs
IGV4ZWMtPnRoaXNWYWx1ZSgpLCBBcmdMaXN0KGV4ZWMpKSk7CiAgICAgfQogCiAgICAgSlNBcnJh
eSogYXJnQXJyYXkgPSBjb25zdHJ1Y3RBcnJheShleGVjLCBzdGF0aWNfY2FzdDxBcnJheUFsbG9j
YXRpb25Qcm9maWxlKj4obnVsbHB0ciksIEFyZ0xpc3QoZXhlYykpOwotICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAg
IGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKICAgICBhcmd1bWVudHMuYXBwZW5kKGV4ZWMtPnRo
aXNWYWx1ZSgpKTsKICAgICBhcmd1bWVudHMuYXBwZW5kKGFyZ0FycmF5KTsKKyAgICBzY29wZS5y
ZWxlYXNlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIGFwcGx5TWV0
aG9kLCBjYWxsVHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cykpOwogfQogCkBAIC01
MjMsNyArNTQ3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZgog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtF
TFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKICAgICAgICAgdGhyb3dTdGFja092ZXJm
bG93RXJyb3IoZXhlYywgc2NvcGUpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIFByb3h5T2JqZWN0KiBw
cm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBKU1ZhbHVl
IGhhbmRsZXJWYWx1ZSA9IHByb3h5LT5oYW5kbGVyKCk7CkBAIC01MzQsMjMgKzU1OCwyNCBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmCiAgICAgQ2FsbERhdGEgY2Fs
bERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGU7CiAgICAgSlNWYWx1ZSBjb25zdHJ1Y3RNZXRo
b2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2FsbERhdGEsIGNhbGxUeXBlLCBtYWtlSWRl
bnRpZmllcih2bSwgImNvbnN0cnVjdCIpLCBBU0NJSUxpdGVyYWwoIidjb25zdHJ1Y3QnIHByb3Bl
cnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjb25zdHJ1Y3RpYmxlIikpOwotICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHByb3h5
LT50YXJnZXQoKTsKICAgICBpZiAoY29uc3RydWN0TWV0aG9kLmlzVW5kZWZpbmVkKCkpIHsKICAg
ICAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwogICAgICAgICBDb25zdHJ1Y3RUeXBl
IGNvbnN0cnVjdFR5cGUgPSB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0
YSh0YXJnZXQsIGNvbnN0cnVjdERhdGEpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChjb25zdHJ1
Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5vbmUpOworICAgICAgICBzY29wZS5yZWxlYXNlKCk7
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGV4ZWMsIHRhcmdldCwg
Y29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgQXJnTGlzdChleGVjKSwgZXhlYy0+bmV3VGFy
Z2V0KCkpKTsKICAgICB9CiAKICAgICBKU0FycmF5KiBhcmdBcnJheSA9IGNvbnN0cnVjdEFycmF5
KGV4ZWMsIHN0YXRpY19jYXN0PEFycmF5QWxsb2NhdGlvblByb2ZpbGUqPihudWxscHRyKSwgQXJn
TGlzdChleGVjKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwog
ICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJnQXJyYXkpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQoZXhl
Yy0+bmV3VGFyZ2V0KCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChleGVjLCBjb25zdHJ1
Y3RNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlmICghcmVzdWx0LmlzT2JqZWN0KCkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlJlc3VsdCBmcm9tIFByb3h5IGhhbmRsZXIncyAnY29uc3RydWN0JyBtZXRob2Qgc2hvdWxkIGJl
IGFuIG9iamVjdCIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC01
NzksOCArNjA0LDEwIEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoRXhlY1N0YXQK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICh2bS5wcm9wZXJ0eU5hbWVz
LT5pc1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCBwcm9wZXJ0eU5hbWUudWlk
KCkpKSkKKyAgICBpZiAodm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFtZShJZGVudGlmaWVy
Ojpmcm9tVWlkKCZ2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpIHsKKyAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwogICAgICAgICByZXR1cm4gcGVyZm9ybURlZmF1bHREZWxldGUoKTsKKyAgICB9CiAK
ICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFu
ZGxlclZhbHVlLmlzTnVsbCgpKSB7CkBAIC01OTQsOCArNjIxLDEwIEBAIGJvb2wgUHJveHlPYmpl
Y3Q6OnBlcmZvcm1EZWxldGUoRXhlY1N0YXQKICAgICBKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5TWV0
aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGV4ZWMsIGNhbGxEYXRhLCBjYWxsVHlwZSwgbWFrZUlk
ZW50aWZpZXIodm0sICJkZWxldGVQcm9wZXJ0eSIpLCBBU0NJSUxpdGVyYWwoIidkZWxldGVQcm9w
ZXJ0eScgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIikp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBKU09iamVjdCog
dGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7Ci0gICAgaWYgKGRlbGV0ZVByb3BlcnR5TWV0aG9kLmlz
VW5kZWZpbmVkKCkpCisgICAgaWYgKGRlbGV0ZVByb3BlcnR5TWV0aG9kLmlzVW5kZWZpbmVkKCkp
IHsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gcGVyZm9ybURlZmF1
bHREZWxldGUoKTsKKyAgICB9CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7
CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwpAQCAtNjY0LDggKzY5MywxMCBAQCBib29s
IFByb3h5T2JqZWN0OjpwZXJmb3JtUHJldmVudEV4dGVuc2lvCiAgICAgSlNWYWx1ZSBwcmV2ZW50
RXh0ZW5zaW9uc01ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChleGVjLCBjYWxsRGF0YSwgY2Fs
bFR5cGUsIG1ha2VJZGVudGlmaWVyKHZtLCAicHJldmVudEV4dGVuc2lvbnMiKSwgQVNDSUlMaXRl
cmFsKCIncHJldmVudEV4dGVuc2lvbnMnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNo
b3VsZCBiZSBjYWxsYWJsZSIpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxz
ZSk7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwotICAgIGlmIChwcmV2
ZW50RXh0ZW5zaW9uc01ldGhvZC5pc1VuZGVmaW5lZCgpKQorICAgIGlmIChwcmV2ZW50RXh0ZW5z
aW9uc01ldGhvZC5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAg
ICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5wcmV2ZW50RXh0ZW5zaW9ucyh0
YXJnZXQsIGV4ZWMpOworICAgIH0KIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50
czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7CkBAIC03MTQsOCArNzQ1LDEwIEBAIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVuc2libGUoRXgKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpcy0+dGFy
Z2V0KCk7Ci0gICAgaWYgKGlzRXh0ZW5zaWJsZU1ldGhvZC5pc1VuZGVmaW5lZCgpKQorICAgIGlm
IChpc0V4dGVuc2libGVNZXRob2QuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBzY29wZS5yZWxl
YXNlKCk7CiAgICAgICAgIHJldHVybiB0YXJnZXQtPmlzRXh0ZW5zaWJsZShleGVjKTsKKyAgICB9
CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFw
cGVuZCh0YXJnZXQpOwpAQCAtNzU4LDYgKzc5MSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZv
cm1EZWZpbmVPd25Qcm9wZXIKIAogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQo
KTsKICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0RGVmaW5lT3duUHJvcGVydHkgPSBbJl0geworICAg
ICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxl
KHZtKS0+ZGVmaW5lT3duUHJvcGVydHkodGFyZ2V0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IsIHNob3VsZFRocm93KTsKICAgICB9OwogCkBAIC04MjEsNiArODU1LDcgQEAgYm9vbCBQ
cm94eU9iamVjdDo6cGVyZm9ybURlZmluZU93blByb3BlcgogICAgIGNvbnN0IFByb3BlcnR5RGVz
Y3JpcHRvciYgY3VycmVudCA9IHRhcmdldERlc2NyaXB0b3I7CiAgICAgYm9vbCB0aHJvd0V4Y2Vw
dGlvbiA9IGZhbHNlOwogICAgIGJvb2wgaXNDb21wYXRpYmxlRGVzY3JpcHRvciA9IHZhbGlkYXRl
QW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgbnVsbHB0ciwgcHJvcGVydHlOYW1lLCB0
YXJnZXRJc0V4dGVuc2libGUsIGRlc2NyaXB0b3IsIGlzQ3VycmVudERlZmluZWQsIGN1cnJlbnQs
IHRocm93RXhjZXB0aW9uKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
ICAgIAogICAgIGlmICghaXNDb21wYXRpYmxlRGVzY3JpcHRvcikgewogICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3Bl
cnR5JyB0cmFwIGRpZCBub3QgZGVmaW5lIGEgcHJvcGVydHkgb24gaXRzIHRhcmdldCB0aGF0IGlz
IGNvbXBhdGlibGUgd2l0aCB0aGUgdHJhcCdzIGlucHV0IGRlc2NyaXB0b3IiKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTg2MCw3ICs4OTUsOCBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJm
b3JtR2V0T3duUHJvcGVydHlOCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7CiAgICAgaWYgKG93bktl
eXNNZXRob2QuaXNVbmRlZmluZWQoKSkgewotICAgICAgICB0YXJnZXQtPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldCwgZXhlYywgdHJhcFJlc3VsdCwg
ZW51bWVyYXRpb25Nb2RlKTsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOworICAgICAgICB0YXJn
ZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyh0YXJnZXQsIGV4ZWMsIHRy
YXBSZXN1bHQsIGVudW1lcmF0aW9uTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTkwNSw2ICs5NDEsNyBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0T3duUHJvcGVydHlO
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAogICAgIGJvb2wgdGFy
Z2V0SXNFeGVuc2libGUgPSB0YXJnZXQtPmlzRXh0ZW5zaWJsZShleGVjKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgdGFy
Z2V0S2V5cygmdm0sIHByb3BlcnR5TmFtZU1vZGUpOwogICAgIHRhcmdldC0+bWV0aG9kVGFibGUo
dm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldCwgZXhlYywgdGFyZ2V0S2V5cywgZW51bWVy
YXRpb25Nb2RlKTsKQEAgLTEwMDUsOCArMTA0MiwxMCBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJm
b3JtU2V0UHJvdG90eXBlKEV4CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwogCiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwotICAgIGlmIChzZXRQ
cm90b3R5cGVPZk1ldGhvZC5pc1VuZGVmaW5lZCgpKQorICAgIGlmIChzZXRQcm90b3R5cGVPZk1l
dGhvZC5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAg
cmV0dXJuIHRhcmdldC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCBwcm90b3R5cGUsIHNob3VsZFRo
cm93SWZDYW50U2V0KTsKKyAgICB9CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVu
dHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwpAQCAtMTA0OSw0NSArMTA4OCw0NyBA
QCBKU1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlCiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZl
VG9SZWN1cnNlU29mdCgpKSkgewogICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVj
LCBzY29wZSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJldHVybiB7IH07
CiAgICAgfQogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAg
ICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNz
YWdlKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJldHVybiB7IH07CiAg
ICAgfQogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVy
VmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlOwog
ICAgIEpTVmFsdWUgZ2V0UHJvdG90eXBlT2ZNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZXhl
YywgY2FsbERhdGEsIGNhbGxUeXBlLCBtYWtlSWRlbnRpZmllcih2bSwgImdldFByb3RvdHlwZU9m
IiksIEFTQ0lJTGl0ZXJhbCgiJ2dldFByb3RvdHlwZU9mJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3Mg
aGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgSlNWYWx1ZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwog
CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwotICAgIGlmIChnZXRQcm90
b3R5cGVPZk1ldGhvZC5pc1VuZGVmaW5lZCgpKQorICAgIGlmIChnZXRQcm90b3R5cGVPZk1ldGhv
ZC5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgcmV0
dXJuIHRhcmdldC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKKyAgICB9CiAKICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwog
ICAgIEpTVmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwoZXhlYywgZ2V0UHJvdG90eXBlT2ZNZXRob2Qs
IGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAKICAgICBpZiAoIXRyYXBSZXN1bHQuaXNPYmplY3QoKSAmJiAhdHJhcFJlc3Vs
dC5pc051bGwoKSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZ2V0UHJvdG90eXBlT2YnIHRyYXAgc2hvdWxkIGVp
dGhlciByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwiKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgYm9vbCB0YXJnZXRJc0V4dGVu
c2libGUgPSB0YXJnZXQtPmlzRXh0ZW5zaWJsZShleGVjKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAgICAgaWYgKHRhcmdldElzRXh0ZW5zaWJsZSkKICAgICAgICAgcmV0dXJuIHRyYXBSZXN1
bHQ7CiAKICAgICBKU1ZhbHVlIHRhcmdldFByb3RvdHlwZSA9IHRhcmdldC0+Z2V0UHJvdG90eXBl
KHZtLCBleGVjKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKCFzYW1lVmFsdWUo
ZXhlYywgdGFyZ2V0UHJvdG90eXBlLCB0cmFwUmVzdWx0KSkgewogICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2dldFByb3RvdHlwZU9m
JyB0cmFwIGZvciBhIG5vbi1leHRlbnNpYmxlIHRhcmdldCBzaG91bGQgcmV0dXJuIHRoZSBzYW1l
IHZhbHVlIGFzIHRoZSB0YXJnZXQncyBwcm90b3R5cGUiKSk7Ci0gICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgcmV0dXJuIHRyYXBSZXN1
bHQ7Cg==
</data>
<flag name="review"
          id="317982"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295427</attachid>
            <date>2016-11-25 14:00:06 -0800</date>
            <delta_ts>2016-11-28 14:01:48 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-165053.patch</filename>
            <type>text/plain</type>
            <size>17701</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4OTc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDE2LTExLTI1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXggZXhjZXB0aW9uIHNjb3BlIHZlcmlmaWNhdGlvbiBmYWlsdXJlcyBpbiBQcm94eUNvbnN0cnVj
dG9yLmNwcCBhbmQgUHJveHlPYmplY3QuY3BwLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWxzbyByZXBsYWNlZCByZXR1cm5pbmcgSlNWYWx1ZSgpIHdp
dGggcmV0dXJuaW5nIHsgfS4KKworICAgICAgICAqIHJ1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFByb3h5T2JqZWN0KToKKyAgICAgICAgKiBydW50
aW1lL1Byb3h5T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnN0cnVjdHVy
ZUZvclRhcmdldCk6CisgICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUdldCk6CisgICAgICAgIChK
U0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90Q29tbW9uKToKKyAgICAgICAgKEpT
Qzo6UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6
cHV0QnlJbmRleENvbW1vbik6CisgICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUNhbGwpOgorICAg
ICAgICAoSlNDOjpwZXJmb3JtUHJveHlDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpQcm94eU9i
amVjdDo6cGVyZm9ybURlbGV0ZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3Jt
UHJldmVudEV4dGVuc2lvbnMpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUlz
RXh0ZW5zaWJsZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtRGVmaW5lT3du
UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVNldFByb3RvdHlw
ZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlKToKKwog
MjAxNi0xMS0yMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIEVOQUJMRV9BU1NFTUJMRVJfV1hfRVhDTFVTSVZFIGNvZGUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiAyMDg5NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTksNyBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zCiAgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwog
ICAgIEpTVmFsdWUgdGFyZ2V0ID0gYXJncy5hdCgwKTsKICAgICBKU1ZhbHVlIGhhbmRsZXIgPSBh
cmdzLmF0KDEpOworICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKFByb3h5T2JqZWN0OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LCB0YXJnZXQsIGhhbmRsZXIpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJveHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkocmV2aXNpb24gMjA4OTc0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NCw3ICs3NCw4IEBAIFN0cnVjdHVyZSogUHJveHlPYmplY3Q6OnN0cnVjdHVyZUZvclRhcmcKIAog
ICAgIEpTT2JqZWN0KiB0YXJnZXRBc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRhcmdldCk7
CiAgICAgQ2FsbERhdGEgaWdub3JlZENhbGxEYXRhOwotICAgIGJvb2wgaXNDYWxsYWJsZSA9IHRh
cmdldEFzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YSh0YXJnZXRBc09iamVjdCwg
aWdub3JlZENhbGxEYXRhKSAhPSBDYWxsVHlwZTo6Tm9uZTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYm9vbCBpc0NhbGxhYmxlID0gdGFyZ2V0QXNPYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEodGFyZ2V0QXNPYmplY3QsIGlnbm9yZWRDYWxsRGF0YSkg
IT0gQ2FsbFR5cGU6Ok5vbmU7CiAgICAgcmV0dXJuIGlzQ2FsbGFibGUgPyBnbG9iYWxPYmplY3Qt
PmNhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUoKSA6IGdsb2JhbE9iamVjdC0+cHJveHlPYmpl
Y3RTdHJ1Y3R1cmUoKTsKIH0KIApAQCAtMTIxLDcgKzEyMiw3IEBAIHN0YXRpYyBKU1ZhbHVlIHBl
cmZvcm1Qcm94eUdldChFeGVjU3RhdGUKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7
CiAgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBKU09i
amVjdCogdGFyZ2V0ID0gcHJveHlPYmplY3QtPnRhcmdldCgpOwpAQCAtMTMwLDggKzEzMSwxMCBA
QCBzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtUHJveHlHZXQoRXhlY1N0YXRlCiAgICAgICAgIHJldHVy
biB0YXJnZXQtPmdldChleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIH07CiAKLSAgICBpZiAodm0u
cHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgcHJv
cGVydHlOYW1lLnVpZCgpKSkpCisgICAgaWYgKHZtLnByb3BlcnR5TmFtZXMtPmlzUHJpdmF0ZU5h
bWUoSWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKSB7CisgICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgcmV0dXJuIHBlcmZvcm1EZWZhdWx0R2V0KCk7
CisgICAgfQogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSBwcm94eU9iamVjdC0+aGFuZGxl
cigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpCkBAIC0xNDEsMTcgKzE0NCwxOSBA
QCBzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtUHJveHlHZXQoRXhlY1N0YXRlCiAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGU7CiAgICAgSlNWYWx1ZSBnZXRIYW5kbGVy
ID0gaGFuZGxlci0+Z2V0TWV0aG9kKGV4ZWMsIGNhbGxEYXRhLCBjYWxsVHlwZSwgdm0ucHJvcGVy
dHlOYW1lcy0+Z2V0LCBBU0NJSUxpdGVyYWwoIidnZXQnIHByb3BlcnR5IG9mIGEgUHJveHkncyBo
YW5kbGVyIG9iamVjdCBzaG91bGQgYmUgY2FsbGFibGUiKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogCi0gICAgaWYgKGdldEhhbmRsZXIuaXNVbmRlZmluZWQoKSkKKyAgICBpZiAoZ2V0SGFu
ZGxlci5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAg
cmV0dXJuIHBlcmZvcm1EZWZhdWx0R2V0KCk7CisgICAgfQogCiAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKICAgICBhcmd1
bWVudHMuYXBwZW5kKGlkZW50aWZpZXJUb1NhZmVQdWJsaWNKU1ZhbHVlKHZtLCBJZGVudGlmaWVy
Ojpmcm9tVWlkKCZ2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOwogICAgIGFyZ3VtZW50cy5hcHBl
bmQocmVjZWl2ZXIpOwogICAgIEpTVmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwoZXhlYywgZ2V0SGFu
ZGxlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKIAogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwogICAg
IGlmICh0YXJnZXQtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3IpKSB7CkBAIC0xNjQsNyArMTY5LDcgQEAgc3RhdGljIEpTVmFsdWUgcGVyZm9y
bVByb3h5R2V0KEV4ZWNTdGF0ZQogICAgICAgICB9CiAgICAgfQogCi0gICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogCiAgICAgcmV0dXJuIHRyYXBSZXN1bHQ7CiB9CkBAIC0xOTQsOCArMTk5LDEwIEBA
IGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICAgICAgcmV0dXJu
IHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGFyZ2V0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH07CiAKLSAgICBpZiAodm0ucHJvcGVydHlOYW1l
cy0+aXNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgcHJvcGVydHlOYW1lLnVp
ZCgpKSkpCisgICAgaWYgKHZtLnByb3BlcnR5TmFtZXMtPmlzUHJpdmF0ZU5hbWUoSWRlbnRpZmll
cjo6ZnJvbVVpZCgmdm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKSB7CisgICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKICAgICAgICAgcmV0dXJuIHBlcmZvcm1EZWZhdWx0R2V0T3duUHJvcGVydHkoKTsK
KyAgICB9CiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAg
ICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7CkBAIC0yMDgsOCArMjE1LDEwIEBAIGJvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICBDYWxsVHlwZSBjYWxsVHlw
ZTsKICAgICBKU1ZhbHVlIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1ldGhvZCA9IGhhbmRsZXIt
PmdldE1ldGhvZChleGVjLCBjYWxsRGF0YSwgY2FsbFR5cGUsIG1ha2VJZGVudGlmaWVyKHZtLCAi
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiksIEFTQ0lJTGl0ZXJhbCgiJ2dldE93blByb3BlcnR5
RGVzY3JpcHRvcicgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxh
YmxlIikpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAgICBpZiAo
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTWV0aG9kLmlzVW5kZWZpbmVkKCkpCisgICAgaWYgKGdl
dE93blByb3BlcnR5RGVzY3JpcHRvck1ldGhvZC5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHNj
b3BlLnJlbGVhc2UoKTsKICAgICAgICAgcmV0dXJuIHBlcmZvcm1EZWZhdWx0R2V0T3duUHJvcGVy
dHkoKTsKKyAgICB9CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAg
YXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwpAQCAtMjU2LDYgKzI2NSw3IEBAIGJvb2wgUHJveHlP
YmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICBib29sIHRocm93RXhjZXB0aW9uID0g
ZmFsc2U7CiAgICAgYm9vbCB2YWxpZCA9IHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0
b3IoZXhlYywgbnVsbHB0ciwgcHJvcGVydHlOYW1lLCBpc0V4dGVuc2libGUsCiAgICAgICAgIHRy
YXBSZXN1bHRBc0Rlc2NyaXB0b3IsIGlzVGFyZ2V0UHJvcGVydHlEZXNjcmlwdG9yRGVmaW5lZCwg
dGFyZ2V0UHJvcGVydHlEZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIGlmICghdmFsaWQpIHsKICAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZXN1bHQgZnJvbSAnZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yJyBmYWlscyB0aGUgSXNDb21wYXRpYmxlUHJvcGVydHlEZXNj
cmlwdG9yIHRlc3QiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI5NSw4ICszMDUsMTAg
QEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KEV4ZQogICAgICAgICByZXR1
cm4gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0YXJnZXQsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfTsKIAotICAgIGlmICh2bS5wcm9wZXJ0eU5h
bWVzLT5pc1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCBwcm9wZXJ0eU5hbWUu
dWlkKCkpKSkKKyAgICBpZiAodm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFtZShJZGVudGlm
aWVyOjpmcm9tVWlkKCZ2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpIHsKKyAgICAgICAgc2NvcGUu
cmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gcGVyZm9ybURlZmF1bHRIYXNQcm9wZXJ0eSgpOwor
ICAgIH0KIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAg
IGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKQEAgLTMwOSw4ICszMjEsMTAgQEAgYm9vbCBQ
cm94eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KEV4ZQogICAgIENhbGxUeXBlIGNhbGxUeXBl
OwogICAgIEpTVmFsdWUgaGFzTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGV4ZWMsIGNhbGxE
YXRhLCBjYWxsVHlwZSwgdm0ucHJvcGVydHlOYW1lcy0+aGFzLCBBU0NJSUxpdGVyYWwoIidoYXMn
IHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSIpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgaWYgKGhhc01ldGhvZC5p
c1VuZGVmaW5lZCgpKQorICAgIGlmIChoYXNNZXRob2QuaXNVbmRlZmluZWQoKSkgeworICAgICAg
ICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBwZXJmb3JtRGVmYXVsdEhhc1Byb3Bl
cnR5KCk7CisgICAgfQogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAg
IGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKQEAgLTM1NCwxMCArMzY4LDEzIEBAIGJvb2wgUHJv
eHlPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdENvbW0KICAgICBzbG90LnNldElzVGFpbnRlZEJ5
T3BhcXVlT2JqZWN0KCk7CiAgICAgc3dpdGNoIChzbG90LmludGVybmFsTWV0aG9kVHlwZSgpKSB7
CiAgICAgY2FzZSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0OgorICAgICAg
ICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBwZXJmb3JtR2V0KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgY2FzZSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6R2V0T3duUHJvcGVydHk6CisgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgcmV0
dXJuIHBlcmZvcm1JbnRlcm5hbE1ldGhvZEdldE93blByb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiAgICAgY2FzZSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6SGFz
UHJvcGVydHk6CisgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgcmV0dXJuIHBlcmZv
cm1IYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM5MCw4ICs0MDcsMTAgQEAgYm9vbCBQcm94eU9iamVj
dDo6cGVyZm9ybVB1dChFeGVjU3RhdGUqIAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgaWYgKHZtLnByb3BlcnR5TmFtZXMtPmlzUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJv
bVVpZCgmdm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKQorICAgIGlmICh2bS5wcm9wZXJ0eU5hbWVz
LT5pc1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCBwcm9wZXJ0eU5hbWUudWlk
KCkpKSkgeworICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBwZXJmb3Jt
RGVmYXVsdFB1dCgpOworICAgIH0KIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+
aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKQEAgLTQwNSw4ICs0
MjQsMTAgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChFeGVjU3RhdGUqIAogICAgIEpT
VmFsdWUgc2V0TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGV4ZWMsIGNhbGxEYXRhLCBjYWxs
VHlwZSwgdm0ucHJvcGVydHlOYW1lcy0+c2V0LCBBU0NJSUxpdGVyYWwoIidzZXQnIHByb3BlcnR5
IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSIpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMt
PnRhcmdldCgpOwotICAgIGlmIChzZXRNZXRob2QuaXNVbmRlZmluZWQoKSkKKyAgICBpZiAoc2V0
TWV0aG9kLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAg
ICByZXR1cm4gcGVyZm9ybURlZmF1bHRQdXQoKTsKKyAgICB9CiAKICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwpAQCAtNDYw
LDYgKzQ4MSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXhDb21tb24oRXhlY1MKICAg
ICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbHVlLCBpc1N0cmljdE1vZGUpOyAvLyBX
ZSBtdXN0IHByZXNlcnZlIHRoZSAidGhpcyIgdGFyZ2V0IG9mIHRoZSBwdXRCeUluZGV4LgogICAg
ICAgICByZXR1cm4gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJnZXQsIGV4ZWMsIGlk
ZW50LmltcGwoKSwgcHV0VmFsdWUsIHNsb3QpOwogICAgIH07CisgICAgc2NvcGUucmVsZWFzZSgp
OwogICAgIHJldHVybiBwZXJmb3JtUHV0KGV4ZWMsIHB1dFZhbHVlLCB0aGlzVmFsdWUsIGlkZW50
LmltcGwoKSwgcGVyZm9ybURlZmF1bHRQdXQpOwogfQogCkBAIC00NzUsNyArNDk3LDcgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZgogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVj
dXJzZVNvZnQoKSkpIHsKICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2Nv
cGUpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgICAg
IHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIH0KICAgICBQcm94eU9iamVjdCogcHJveHkg
PSBqc0Nhc3Q8UHJveHlPYmplY3QqPihleGVjLT5jYWxsZWUoKSk7CiAgICAgSlNWYWx1ZSBoYW5k
bGVyVmFsdWUgPSBwcm94eS0+aGFuZGxlcigpOwpAQCAtNDkyLDYgKzUxNCw3IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmYKICAgICAgICAgQ2FsbERhdGEgY2FsbERh
dGE7CiAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSkt
PmdldENhbGxEYXRhKHRhcmdldCwgY2FsbERhdGEpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChj
YWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSk7CisgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIHRhcmdldCwgY2FsbFR5cGUs
IGNhbGxEYXRhLCBleGVjLT50aGlzVmFsdWUoKSwgQXJnTGlzdChleGVjKSkpOwogICAgIH0KIApA
QCAtNTAxLDYgKzUyNCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBl
cmYKICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChl
eGVjLT50aGlzVmFsdWUoKSk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChhcmdBcnJheSk7CisgICAg
c2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbChleGVjLCBh
cHBseU1ldGhvZCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpKTsKIH0K
IApAQCAtNTIzLDcgKzU0Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHBlcmYKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYg
KFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7CiAgICAgICAgIHRocm93U3Rh
Y2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1ZhbHVlKCkpOworICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9
CiAgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oZXhlYy0+Y2Fs
bGVlKCkpOwogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gcHJveHktPmhhbmRsZXIoKTsKQEAg
LTU0MCw2ICs1NjQsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJm
CiAgICAgICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICAgICAgQ29uc3RydWN0
VHlwZSBjb25zdHJ1Y3RUeXBlID0gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVj
dERhdGEodGFyZ2V0LCBjb25zdHJ1Y3REYXRhKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29u
c3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlOjpOb25lKTsKKyAgICAgICAgc2NvcGUucmVsZWFz
ZSgpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChleGVjLCB0YXJn
ZXQsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIEFyZ0xpc3QoZXhlYyksIGV4ZWMtPm5l
d1RhcmdldCgpKSk7CiAgICAgfQogCkBAIC01NzksOCArNjA0LDEwIEBAIGJvb2wgUHJveHlPYmpl
Y3Q6OnBlcmZvcm1EZWxldGUoRXhlY1N0YXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGlmICh2bS5wcm9wZXJ0eU5hbWVzLT5pc1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZy
b21VaWQoJnZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSkKKyAgICBpZiAodm0ucHJvcGVydHlOYW1l
cy0+aXNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgcHJvcGVydHlOYW1lLnVp
ZCgpKSkpIHsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gcGVyZm9y
bURlZmF1bHREZWxldGUoKTsKKyAgICB9CiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRo
aXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7CkBAIC01OTQs
OCArNjIxLDEwIEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoRXhlY1N0YXQKICAg
ICBKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGV4ZWMs
IGNhbGxEYXRhLCBjYWxsVHlwZSwgbWFrZUlkZW50aWZpZXIodm0sICJkZWxldGVQcm9wZXJ0eSIp
LCBBU0NJSUxpdGVyYWwoIidkZWxldGVQcm9wZXJ0eScgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhh
bmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIikpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7Ci0gICAg
aWYgKGRlbGV0ZVByb3BlcnR5TWV0aG9kLmlzVW5kZWZpbmVkKCkpCisgICAgaWYgKGRlbGV0ZVBy
b3BlcnR5TWV0aG9kLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwog
ICAgICAgICByZXR1cm4gcGVyZm9ybURlZmF1bHREZWxldGUoKTsKKyAgICB9CiAKICAgICBNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQp
OwpAQCAtNjY0LDggKzY5MywxMCBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHJldmVudEV4
dGVuc2lvCiAgICAgSlNWYWx1ZSBwcmV2ZW50RXh0ZW5zaW9uc01ldGhvZCA9IGhhbmRsZXItPmdl
dE1ldGhvZChleGVjLCBjYWxsRGF0YSwgY2FsbFR5cGUsIG1ha2VJZGVudGlmaWVyKHZtLCAicHJl
dmVudEV4dGVuc2lvbnMiKSwgQVNDSUlMaXRlcmFsKCIncHJldmVudEV4dGVuc2lvbnMnIHByb3Bl
cnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSIpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRo
aXMtPnRhcmdldCgpOwotICAgIGlmIChwcmV2ZW50RXh0ZW5zaW9uc01ldGhvZC5pc1VuZGVmaW5l
ZCgpKQorICAgIGlmIChwcmV2ZW50RXh0ZW5zaW9uc01ldGhvZC5pc1VuZGVmaW5lZCgpKSB7Cisg
ICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFi
bGUodm0pLT5wcmV2ZW50RXh0ZW5zaW9ucyh0YXJnZXQsIGV4ZWMpOworICAgIH0KIAogICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdl
dCk7CkBAIC03MTQsOCArNzQ1LDEwIEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVu
c2libGUoRXgKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICBK
U09iamVjdCogdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7Ci0gICAgaWYgKGlzRXh0ZW5zaWJsZU1l
dGhvZC5pc1VuZGVmaW5lZCgpKQorICAgIGlmIChpc0V4dGVuc2libGVNZXRob2QuaXNVbmRlZmlu
ZWQoKSkgeworICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiB0YXJnZXQt
PmlzRXh0ZW5zaWJsZShleGVjKTsKKyAgICB9CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwpAQCAtNzU4LDYgKzc5MSw3
IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXIKIAogICAgIEpTT2Jq
ZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKICAgICBhdXRvIHBlcmZvcm1EZWZhdWx0RGVm
aW5lT3duUHJvcGVydHkgPSBbJl0geworICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAg
IHJldHVybiB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkodGFyZ2V0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKICAgICB9Owog
CkBAIC04MjEsNiArODU1LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlZmluZU93blBy
b3BlcgogICAgIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgY3VycmVudCA9IHRhcmdldERlc2Ny
aXB0b3I7CiAgICAgYm9vbCB0aHJvd0V4Y2VwdGlvbiA9IGZhbHNlOwogICAgIGJvb2wgaXNDb21w
YXRpYmxlRGVzY3JpcHRvciA9IHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoZXhl
YywgbnVsbHB0ciwgcHJvcGVydHlOYW1lLCB0YXJnZXRJc0V4dGVuc2libGUsIGRlc2NyaXB0b3Is
IGlzQ3VycmVudERlZmluZWQsIGN1cnJlbnQsIHRocm93RXhjZXB0aW9uKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7ICAgIAogICAgIGlmICghaXNDb21wYXRpYmxlRGVz
Y3JpcHRvcikgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIGRpZCBub3QgZGVmaW5lIGEgcHJv
cGVydHkgb24gaXRzIHRhcmdldCB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdHJhcCdzIGlu
cHV0IGRlc2NyaXB0b3IiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg2MCw3ICs4OTUs
OCBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0T3duUHJvcGVydHlOCiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhp
cy0+dGFyZ2V0KCk7CiAgICAgaWYgKG93bktleXNNZXRob2QuaXNVbmRlZmluZWQoKSkgewotICAg
ICAgICB0YXJnZXQtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KHRhcmdldCwgZXhlYywgdHJhcFJlc3VsdCwgZW51bWVyYXRpb25Nb2RlKTsKKyAgICAgICAgc2Nv
cGUucmVsZWFzZSgpOworICAgICAgICB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyh0YXJnZXQsIGV4ZWMsIHRyYXBSZXN1bHQsIGVudW1lcmF0aW9uTW9kZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkwNSw2ICs5NDEsNyBAQCB2b2lkIFByb3h5T2Jq
ZWN0OjpwZXJmb3JtR2V0T3duUHJvcGVydHlOCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKIAogICAgIGJvb2wgdGFyZ2V0SXNFeGVuc2libGUgPSB0YXJnZXQtPmlzRXh0
ZW5zaWJsZShleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwog
CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgdGFyZ2V0S2V5cygmdm0sIHByb3BlcnR5TmFtZU1vZGUp
OwogICAgIHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdl
dCwgZXhlYywgdGFyZ2V0S2V5cywgZW51bWVyYXRpb25Nb2RlKTsKQEAgLTEwMDUsOCArMTA0Miwx
MCBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtU2V0UHJvdG90eXBlKEV4CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRo
aXMtPnRhcmdldCgpOwotICAgIGlmIChzZXRQcm90b3R5cGVPZk1ldGhvZC5pc1VuZGVmaW5lZCgp
KQorICAgIGlmIChzZXRQcm90b3R5cGVPZk1ldGhvZC5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAg
IHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgcmV0dXJuIHRhcmdldC0+c2V0UHJvdG90eXBlKHZt
LCBleGVjLCBwcm90b3R5cGUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKKyAgICB9CiAKICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJn
ZXQpOwpAQCAtMTA0OSw0NSArMTA4OCw0NyBAQCBKU1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJmb3Jt
R2V0UHJvdG90eXBlCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewogICAgICAgICB0
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7Ci0gICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgSlNWYWx1ZSBoYW5kbGVy
VmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkg
ewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoc19w
cm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIg
PSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRh
OwogICAgIENhbGxUeXBlIGNhbGxUeXBlOwogICAgIEpTVmFsdWUgZ2V0UHJvdG90eXBlT2ZNZXRo
b2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZXhlYywgY2FsbERhdGEsIGNhbGxUeXBlLCBtYWtlSWRl
bnRpZmllcih2bSwgImdldFByb3RvdHlwZU9mIiksIEFTQ0lJTGl0ZXJhbCgiJ2dldFByb3RvdHlw
ZU9mJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiKSk7
Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMt
PnRhcmdldCgpOwotICAgIGlmIChnZXRQcm90b3R5cGVPZk1ldGhvZC5pc1VuZGVmaW5lZCgpKQor
ICAgIGlmIChnZXRQcm90b3R5cGVPZk1ldGhvZC5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHNj
b3BlLnJlbGVhc2UoKTsKICAgICAgICAgcmV0dXJuIHRhcmdldC0+Z2V0UHJvdG90eXBlKHZtLCBl
eGVjKTsKKyAgICB9CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAg
YXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwogICAgIEpTVmFsdWUgdHJhcFJlc3VsdCA9IGNhbGwo
ZXhlYywgZ2V0UHJvdG90eXBlT2ZNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwg
YXJndW1lbnRzKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoIXRyYXBSZXN1
bHQuaXNPYmplY3QoKSAmJiAhdHJhcFJlc3VsdC5pc051bGwoKSkgewogICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZ2V0
UHJvdG90eXBlT2YnIHRyYXAgc2hvdWxkIGVpdGhlciByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwi
KSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogCiAgICAgYm9vbCB0YXJnZXRJc0V4dGVuc2libGUgPSB0YXJnZXQtPmlzRXh0ZW5zaWJsZShl
eGVjKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKHRhcmdldElzRXh0ZW5zaWJs
ZSkKICAgICAgICAgcmV0dXJuIHRyYXBSZXN1bHQ7CiAKICAgICBKU1ZhbHVlIHRhcmdldFByb3Rv
dHlwZSA9IHRhcmdldC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAgICAgaWYgKCFzYW1lVmFsdWUoZXhlYywgdGFyZ2V0UHJvdG90eXBlLCB0cmFwUmVz
dWx0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIlByb3h5J3MgJ2dldFByb3RvdHlwZU9mJyB0cmFwIGZvciBhIG5vbi1leHRlbnNpYmxlIHRh
cmdldCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSB0YXJnZXQncyBwcm90b3R5
cGUiKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgIHJldHVybiB7IH07CiAg
ICAgfQogCiAgICAgcmV0dXJuIHRyYXBSZXN1bHQ7Cg==
</data>
<flag name="review"
          id="318019"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>