<?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>165401</bug_id>
          
          <creation_ts>2016-12-05 12:36:53 -0800</creation_ts>
          <short_desc>GetByID IC is wrongly unwrapping the global proxy this value for getter/setters.</short_desc>
          <delta_ts>2016-12-06 19:13:22 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <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>1256440</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-05 12:36:53 -0800</bug_when>
    <thetext>Here&apos;s the test case:

function test(x) {
    x.__proto__
}

for (var i = 0; i &lt; 10000; i++)
    test(this);


As soon as test is JIT compiled and the GetById IC gets optimized, we&apos;ll get an exception:
    TypeError: Object.prototype.__proto__ called on null or undefined

This should never be the case because x (in the test above) is never null or undefined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256686</commentid>
    <comment_count>1</comment_count>
      <attachid>296250</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-05 19:51:42 -0800</bug_when>
    <thetext>Created attachment 296250
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256687</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-05 19:52:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/29442665&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256688</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-05 19:58:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/29442665&gt; is the wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256992</commentid>
    <comment_count>4</comment_count>
      <attachid>296327</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-06 14:56:24 -0800</bug_when>
    <thetext>Created attachment 296327
patch for EWS testing.  Not ready for review.

I&apos;m temporarily using RELEASE_ASSERTs instead of ASSERTs because I&apos;m testing with a release build locally.  Will replace with ASSERTs when I&apos;m done.  I am expecting one of these asserts to fail though, thereby indicating another latent bug ... but will see if I&apos;m right.  Will fix if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257093</commentid>
    <comment_count>5</comment_count>
      <attachid>296353</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-06 17:01:04 -0800</bug_when>
    <thetext>Created attachment 296353
proposed patch.

Ready for a review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257109</commentid>
    <comment_count>6</comment_count>
      <attachid>296353</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-06 17:30:54 -0800</bug_when>
    <thetext>Comment on attachment 296353
proposed patch.

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Getters/setters are expecting the unwrapped global proxy object.  This is

Don&apos;t you mean wrapped, not unwrapped?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257110</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-06 17:32:23 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 296353 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=296353&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:8
&gt; &gt; +        Getters/setters are expecting the unwrapped global proxy object.  This is
&gt; 
&gt; Don&apos;t you mean wrapped, not unwrapped?

Maybe this terminology is weird. I&apos;d just say, they&apos;re expecting a JSProxy, not a JSGlobalObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257111</commentid>
    <comment_count>8</comment_count>
      <attachid>296353</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-06 17:32:35 -0800</bug_when>
    <thetext>Comment on attachment 296353
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt; +        Getters/setters are expecting the unwrapped global proxy object.  This is
&gt; 
&gt; Don&apos;t you mean wrapped, not unwrapped?

Oops, that should be &quot;wrapped&quot;.  Thanks for catching this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257127</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-06 19:01:40 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 296353 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=296353&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt; &gt;&gt; +        Getters/setters are expecting the unwrapped global proxy object.  This is
&gt; &gt; 
&gt; &gt; Don&apos;t you mean wrapped, not unwrapped?
&gt; 
&gt; Oops, that should be &quot;wrapped&quot;.  Thanks for catching this.

Agreed.  I&apos;ll change that blob of text to say:

&quot;When the this value for a property access is the JS global and that property access is via a GetterSetter, the underlying getter / setter functions would expect the this value they receive to be the JSProxy instance instead of the JSGlobalObject.  This is consistent with how the LLINT and runtime code behaves.  The IC code should behave the same way.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257136</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-06 19:13:22 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r209442: &lt;http://trac.webkit.org/r209442&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296250</attachid>
            <date>2016-12-05 19:51:42 -0800</date>
            <delta_ts>2016-12-05 19:58:42 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-165401.patch</filename>
            <type>text/plain</type>
            <size>50700</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDkzNjYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE5IEBACisyMDE2LTEyLTA1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBJbnRyb2R1Y2UgdGhlIGNvbmNlcHQgb2YgSW1tdXRhYmxlIFByb3RvdHlw
ZSBFeG90aWMgT2JqZWN0cyB0byBjb21wbHkgd2l0aCB0aGUgc3BlYy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTIyNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2dldC1mcm9tLXNjb3Bl
LWR5bmFtaWMtb250by1wcm94eS5qczoKKyAgICAgICAgLSBVcGRhdGVkIGVycm9yIG1lc3NhZ2Uu
CisKKyAgICAgICAgKiBzdHJlc3MvcHJveHktZG9udC1pbmZpbml0ZS1sb29wLmpzOiBSZW1vdmVk
LgorICAgICAgICAqIHN0cmVzcy9wcm94eS1qc29uLXBhdGguanM6IFJlbW92ZWQuCisgICAgICAg
ICogc3RyZXNzL3Jlc3QtcGFyYW1ldGVyLWFsbG9jYXRpb24tZWxpbWluYXRpb24td2F0Y2hwb2lu
dHMtNi5qczogUmVtb3ZlZC4KKyAgICAgICAgLSBSZW1vdmVkIHRoZXNlIHRlc3RzIGJlY2F1c2Ug
dGhlIGlzc3VlIHRoZXkgYXJlIHRlc3RpbmcgcmVsaWVzIG9uIGJlaW5nIGFibGUgdG8KKyAgICAg
ICAgICBzZXQgT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gdG8gc29tZXRoaW5nIGVsc2UgKHdo
aWNoIGlzIG5vdyBub3QgcG9zc2libGUpLgorCiAyMDE2LTEyLTA1ICBDYWl0bGluIFBvdHRlciAg
PGNhaXRwQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gcmVwb3J0IHVuZXhwZWN0ZWQgdG9r
ZW4gd2hlbiAiYXN5bmMiIGlzIGZvbGxvd2VkIGJ5IGlkZW50aWZpZXIgCkluZGV4OiBKU1Rlc3Rz
L3N0cmVzcy9nZXQtZnJvbS1zY29wZS1keW5hbWljLW9udG8tcHJveHkuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9zdHJlc3MvZ2V0LWZyb20tc2NvcGUtZHluYW1pYy1vbnRvLXByb3h5LmpzCShy
ZXZpc2lvbiAyMDkzNTApCisrKyBKU1Rlc3RzL3N0cmVzcy9nZXQtZnJvbS1zY29wZS1keW5hbWlj
LW9udG8tcHJveHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw0ICsxMDMsNCBAQCB0cnkgewog
ICAgIHRocm93biA9IGU7CiB9CiBPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyA9IG51bGw7Ci1z
aG91bGRCZShTdHJpbmcodGhyb3duKSwgYEVycm9yOiBOR2ApOworc2hvdWxkQmUoU3RyaW5nKHRo
cm93biksIGBUeXBlRXJyb3I6IENhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90
b3R5cGUgb2JqZWN0YCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9wcm94eS1kb250LWluZmluaXRl
LWxvb3AuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvcHJveHktZG9udC1pbmZpbml0
ZS1sb29wLmpzCShyZXZpc2lvbiAyMDkzNTApCisrKyBKU1Rlc3RzL3N0cmVzcy9wcm94eS1kb250
LWluZmluaXRlLWxvb3AuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNyArMCwwIEBACi1mdW5jdGlv
biBmb28oKSB7Ci0gICAgbGV0IHRhcmdldCA9IHsKLSAgICAgIF9fcHJvdG9fXzogbnVsbAotICAg
IH07Ci0gICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgewotICAgICAgICBnZXQoLi4u
YXJncykgewotICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KC4uLmFyZ3MpOwotICAgICAg
ICB9Ci0gICAgfSk7Ci0gICAgT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gPSB7Ci0gICAgICAg
X19wcm90b19fOiBwcm94eSwKLSAgICB9OwotCi0gICAgbGV0IGEgPSB7fTsKLSAgICBhLnRlc3Q7
Ci19Ci1mb28oKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3Byb3h5LWpzb24tcGF0aC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9wcm94eS1qc29uLXBhdGguanMJKHJldmlzaW9uIDIw
OTM1MCkKKysrIEpTVGVzdHMvc3RyZXNzL3Byb3h5LWpzb24tcGF0aC5qcwkobm9uZXhpc3RlbnQp
CkBAIC0xLDI1ICswLDAgQEAKLXZhciB0YXJnZXQgPSB7IF9fcHJvdG9fXzogbnVsbCB9OwotdmFy
IGhhbmRsZXIgPSB7Ci0gICAgZ2V0OiBmdW5jdGlvbiAoKQotICAgIHsKLSAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBuZ2ApOwotICAgIH0KLX07Ci0KLXZhciB0aHJvd24gPSBudWxsOwotdmFyIGhl
bGxvID0gNDI7Ci0vLyBBcyBhIHJlc3VsdCwgZ2xvYmFsIG9iamVjdCBhdXRvbWF0aWNhbGx5IGlu
aGVyaXQgdGhpcyBwcm94eS4KLU9iamVjdC5wcm90b3R5cGUuX19wcm90b19fID0gewotICAgIF9f
cHJvdG9fXzogbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcikKLX07Ci0KLXRyeSB7Ci0gICAgbG9h
ZFN0cmluZyhgaGVsbG8gPSB7ImhlbGxvIjoid29ybGQifTtwcm94eS5vayA9IHt9YCk7Ci19IGNh
dGNoIChlcnJvcikgewotICAgIHRocm93biA9IGVycm9yOwotfQotT2JqZWN0LnByb3RvdHlwZS5f
X3Byb3RvX18gPSBudWxsOwotaWYgKHRocm93biA9PT0gbnVsbCkKLSAgICB0aHJvdyBuZXcgRXJy
b3IoYG5vdCB0aHJvd25gKTsKLWlmIChTdHJpbmcodGhyb3duKSAhPT0gYEVycm9yOiBuZ2ApCi0g
ICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKHRocm93bil9YCk7CkluZGV4
OiBKU1Rlc3RzL3N0cmVzcy9yZXN0LXBhcmFtZXRlci1hbGxvY2F0aW9uLWVsaW1pbmF0aW9uLXdh
dGNocG9pbnRzLTYuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvcmVzdC1wYXJhbWV0
ZXItYWxsb2NhdGlvbi1lbGltaW5hdGlvbi13YXRjaHBvaW50cy02LmpzCShyZXZpc2lvbiAyMDkz
NTApCisrKyBKU1Rlc3RzL3N0cmVzcy9yZXN0LXBhcmFtZXRlci1hbGxvY2F0aW9uLWVsaW1pbmF0
aW9uLXdhdGNocG9pbnRzLTYuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNCArMCwwIEBACi1mdW5j
dGlvbiBhc3NlcnQoYikgewotICAgIGlmICghYikKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yOwot
fQotbm9JbmxpbmUoYXNzZXJ0KTsKLQotZnVuY3Rpb24gZm9vKC4uLmFyZ3MpIHsKLSAgICByZXR1
cm4gYXJnc1swXTsKLX0KLW5vSW5saW5lKGZvbyk7Ci0KLWZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDA7IGkrKykgewotICAgIC8vIFdhcm0gaXQgdXAgb24gYm90aCBpbiBib3VuZCBhbmQgb3V0IG9m
IGJvdW5kIGFjY2Vzc2VzLgotICAgIGlmIChpICUgMikKLSAgICAgICAgYXNzZXJ0KGZvbyhpKSA9
PT0gaSk7Ci0gICAgZWxzZQotICAgICAgICBhc3NlcnQoZm9vKCkgPT09IHVuZGVmaW5lZCk7Ci19
Ci0KLWxldCBuZXdQcm90byA9IFs1MF07Ci1uZXdQcm90by5fX3Byb3RvX18gPSBudWxsOwotT2Jq
ZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gPSBuZXdQcm90bzsKLWZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDA7IGkrKykKLSAgICBhc3NlcnQoZm9vKCkgPT09IDUwKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMjA5MzUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE2LTEyLTA1ICBNYXJr
IExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgdGhlIGNvbmNl
cHQgb2YgSW1tdXRhYmxlIFByb3RvdHlwZSBFeG90aWMgT2JqZWN0cyB0byBjb21wbHkgd2l0aCB0
aGUgc3BlYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NTIyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90
b3R5cGVXaXRoQ3ljbGVDaGVjayk6CisgICAgICAgIC0gVGhpcyBpcyB3aGVyZSB3ZSBjaGVjayBm
b3IgaW1tdXRhYmxlIHByb3RvdHlwZSBleG90aWMgb2JqZWN0cyBhbmQgcmVmdXNlIHRvIHNldAor
ICAgICAgICAgIHRoZSBwcm90b3R5cGUgaWYgbmVlZGVkLgorICAgICAgICAgIFNlZSBodHRwczov
L3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pbW11dGFibGUtcHJvdG90eXBlLWV4b3RpYy1v
YmplY3RzLgorCisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgIChKU0M6
OlR5cGVJbmZvOjppc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdCk6CisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgLSBBZGQgZmxhZyBmb3IgZGVjbGFyaW5nIGlt
bXV0YWJsZSBwcm90b3R5cGUgZXhvdGljIG9iamVjdHMuCisKKyAgICAgICAgKiBydW50aW1lL09i
amVjdFByb3RvdHlwZS5oOgorICAgICAgICAtIERlY2xhcmUgdGhhdCBPYmplY3QucHJvdG90eXBl
IGlzIGFuIGltbXV0YWJsZSBwcm90b3R5cGUgZXhvdGljIG9iamVjdC4KKyAgICAgICAgICBTZWUg
aHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcHJvcGVydGllcy1vZi10aGUtb2Jq
ZWN0LXByb3RvdHlwZS1vYmplY3QuCisKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JTZXRQcm90b3R5cGVPZik6
CisgICAgICAgIC0gVXNlIGJldHRlciBlcnJvciBtZXNzYWdlcy4KKwogMjAxNi0xMi0wNSAgQ2Fp
dGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIHJlcG9ydCB1
bmV4cGVjdGVkIHRva2VuIHdoZW4gImFzeW5jIiBpcyBmb2xsb3dlZCBieSBpZGVudGlmaWVyIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNp
b24gMjA5MzUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzkzLDYgKzEzOTMsOSBAQCBib29sIEpTT2JqZWN0OjpzZXRQ
cm90b3R5cGVXaXRoQ3ljbGVDaGVjCiAgICAgaWYgKHRoaXMtPmdldFByb3RvdHlwZURpcmVjdCgp
ID09IHByb3RvdHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBpZiAodGhpcy0+c3Ry
dWN0dXJlKHZtKS0+aXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QoKSkKKyAgICAgICAg
cmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQsIEFTQ0lJ
TGl0ZXJhbCgiQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmpl
Y3QiKSk7CisKICAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRoaXMtPmlzRXh0ZW5zaWJsZShleGVj
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDIwOTM1MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNiArNDgsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJpZGVzR2V0
UHJvcGVyCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgUHJvaGliaXRzUHJvcGVydHlDYWNoaW5nID0g
MSA8PCAxMDsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVy
ZSA9IDEgPDwgMTE7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgTmV3SW1wdXJlUHJvcGVydHlGaXJl
c1dhdGNocG9pbnRzID0gMSA8PCAxMjsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBJc0ltbXV0YWJs
ZVByb3RvdHlwZUV4b3RpY09iamVjdCA9IDEgPDwgMTM7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQg
R2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgPSAxIDw8IDE0Owog
c3RhdGljIGNvbnN0IHVuc2lnbmVkIEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
RXZlbldoZW5MZW5ndGhJc05vdFplcm8gPSAxIDw8IDE1OwogCkBAIC05MCw2ICs5MSw3IEBAIHB1
YmxpYzoKICAgICBib29sIGdldE93blByb3BlcnR5U2xvdElzSW1wdXJlKCkgY29uc3QgeyByZXR1
cm4gaXNTZXRPbkZsYWdzMihHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSk7IH0KICAgICBib29s
IGdldE93blByb3BlcnR5U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlKCkgY29uc3QgeyBy
ZXR1cm4gaXNTZXRPbkZsYWdzMihHZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5
QWJzZW5jZSk7IH0KICAgICBib29sIG5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cygp
IGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczIoTmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNo
cG9pbnRzKTsgfQorICAgIGJvb2wgaXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QoKSBj
b25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKElzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2Jq
ZWN0KTsgfQogICAgIGJvb2wgaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVu
V2hlbkxlbmd0aElzTm90WmVybygpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczIoSW50ZXJj
ZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyk7IH0K
IAogICAgIHN0YXRpYyBwdHJkaWZmX3QgZmxhZ3NPZmZzZXQoKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNp
b24gMjA5MzUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsMTEgKzE3NiwxMSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAKICAgICBKU1ZhbHVlIG9iamVjdFZhbHVl
ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKG9iamVjdFZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
Q2Fubm90IHNldCBwcm90b3R5cGUgb2YgdW5kZWZpbmVkIG9yIG51bGwiKSk7CiAKICAgICBKU1Zh
bHVlIHByb3RvVmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsKICAgICBpZiAoIXByb3RvVmFsdWUu
aXNPYmplY3QoKSAmJiAhcHJvdG9WYWx1ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUg
YW4gb2JqZWN0IG9yIG51bGwiKSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gb2JqZWN0VmFs
dWUudG9PYmplY3QoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RQcm90b3R5cGUuaAkocmV2aXNpb24gMjA5MzUwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBPYmplY3RQcm90b3R5cGUgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJh
c2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdDsKIAogICAgIHN0
YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
CShyZXZpc2lvbiAyMDkzNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDYgKzIyMCwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAmJiB0eXBlSW5mbygpLm5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cygp
OwogICAgIH0KIAorICAgIGJvb2wgaXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHR5cGVJbmZvKCkuaXNJbW11dGFibGVQcm90b3R5cGVFeG90
aWNPYmplY3QoKTsKKyAgICB9CisKICAgICAvLyBXZSB1c2UgU2xvd1BhdGggaW4gR2V0QnlJZFN0
YXR1cyBmb3Igc3RydWN0dXJlcyB0aGF0IG1heSBnZXQgbmV3IGltcHVyZSBwcm9wZXJ0aWVzIGxh
dGVyIHRvIHByZXZlbnQKICAgICAvLyBERkcgZnJvbSBpbmxpbmluZyBwcm9wZXJ0eSBhY2Nlc3Nl
cyBzaW5jZSBzdHJ1Y3R1cmVzIGRvbid0IHRyYW5zaXRpb24gd2hlbiBhIG5ldyBpbXB1cmUgcHJv
cGVydHkgYXBwZWFycy4KICAgICBib29sIHRha2VzU2xvd1BhdGhJbkRGR0ZvckltcHVyZVByb3Bl
cnR5KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTM1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDE2LTEyLTA1ICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgdGhlIGNv
bmNlcHQgb2YgSW1tdXRhYmxlIFByb3RvdHlwZSBFeG90aWMgT2JqZWN0cyB0byBjb21wbHkgd2l0
aCB0aGUgc3BlYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NTIyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1ha2UgYWxsIG9iamVjdHMgaW4gd2luZG93Ll9fcHJvdG9fXydzIHByb3RvdHlwZSBjaGFp
biBpbW11dGFibGUgcHJvdG90eXBlIGV4b3RpYworICAgICAgICBvYmplY3RzLiAgVGhpcyBnaXZl
cyB1cyByb3VnaGx5IGVxdWl2YWxlbnQgYmVoYXZpb3IgdG8gb3RoZXIgYnJvd3NlcnMuICAKKwor
ICAgICAgICBGaXJlZm94J3MgYmVoYXZpb3IgZGlmZmVyIHNsaWdodGx5IGluIHRoYXQgRmlyZWZv
eCB3aWxsIGZhaWwgYW55IGF0dGVtcHRlZAorICAgICAgICBhc3NpZ25tZW50IHRoZWlyIF9fcHJv
dG9fXywgd2hpbGUgdGhlIGltbXV0YWJsZSBwcm90b3R5cGUgZXhvdGljIG9iamVjdHMgd2lsbAor
ICAgICAgICBvbmx5IGZhaWwgaWYgdGhlIGFzc2lnbm1lbnQgaXMgb2YgYSBkaWZmZXJlbnQgdmFs
dWUuICBTZWUKKyAgICAgICAgaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaW1t
dXRhYmxlLXByb3RvdHlwZS1leG90aWMtb2JqZWN0cy4KKworICAgICAgICBDaHJvbWUgZGlmZmVy
cyBpbiB0aGF0IGFzc2lnbm1lbnQgdG8gd2luZG93Ll9fcHJvdG9fXyBpcyBhbHNvIGhhbmRsZWQg
bGlrZSBhbgorICAgICAgICBpbW11dGFibGUgcHJvdG90eXBlIGV4b3RpYyBvYmplY3QuICBJbnN0
ZWFkIHdlIGFkaGVyZSB0byB0aGUgY3VycmVudCBIVE1MIHNwZWMKKyAgICAgICAgdGhhdCBzYXlz
IHRoYXQgdGhlIGFzc2lnbm1lbnQgc2hvdWxkIGZhaWwgdW5jb25kaXRpb25hbGx5LiAgU2VlCisg
ICAgICAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3RoZS13aW5kb3dwcm94eS1leG90
aWMtb2JqZWN0IGFuZAorICAgICAgICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN3aW5k
b3dwcm94eS1zZXRwcm90b3R5cGVvZi4KKworICAgICAgICBJZiB0aGUgSFRNTCBzcGVjIGlzIGNo
YW5nZWQgdG8gbWFrZSB0aGUgV2luZG93UHJveHkgYW5kIExvY2F0aW9uIG9iamVjdHMgaW50bwor
ICAgICAgICBpbW11dGFibGUgcHJvdG90eXBlIGV4b3RpYyBvYmplY3RzIGxhdGVyLCB3ZSBjYW4g
dXBkYXRlIHRvIG1hdGNoIHRoZSBzcGVjIHRoZW4uCisKKyAgICAgICAgVGVzdDoganMvcHJvdG90
eXBlLWFzc2lnbm1lbnQuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dQ
cm9wZXJ0aWVzLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZVByb3RvdHlw
ZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
dHh0OgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5pZGw6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuaWRsOgorCiAyMDE2LTEyLTA1ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDkyOTkuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3BlcnRpZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1Byb3BlcnRpZXMu
aAkocmV2aXNpb24gMjA5MzUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dQcm9wZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
KTsKIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6R2V0
T3duUHJvcGVydHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2Vw
dHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6
Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6R2V0T3duUHJvcGVy
dHlTbG90SXNJbXB1cmVGb3JQcm9wZXJ0eUFic2VuY2UgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6SXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmpl
Y3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJvdGVjdGVkOgogICAgIEpTRE9NV2luZG93
UHJvcGVydGllcyhKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0M6OkpTR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjA5MzUwKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkK
QEAgLTE1MjIsNiArMTUyMiw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICB9CiAgICAg
fQogICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hw
b2ludHMifSA9IDEgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmV3SW1wdXJl
UHJvcGVydHlGaXJlc1dhdGNocG9pbnRzfTsKKyAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6SXNJ
bW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QifSA9IDEgaWYgJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57SXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3R9OwogICAgICRz
dHJ1Y3R1cmVGbGFnc3siSlNDOjpUeXBlT2ZTaG91bGRDYWxsR2V0Q2FsbERhdGEifSA9IDEgaWYg
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tQ2FsbH07CiAKICAgICAjIEdl
dHRlcnMKQEAgLTU2OTYsNiArNTY5Nyw4IEBAIHN1YiBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0
aW9uCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgYm9vbCBkZWZpbmVP
d25Qcm9wZXJ0eShKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5
TmFtZSwgY29uc3QgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTtc
biIpOwogICAgIH0KIAorICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpJc0ltbXV0YWJsZVByb3Rv
dHlwZUV4b3RpY09iamVjdCJ9ID0gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09iamVjdE9uUHJvdG90eXBlfTsKKwogICAgICMg
c3RydWN0dXJlIGZsYWdzCiAgICAgaWYgKCVzdHJ1Y3R1cmVGbGFncykgewogICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJwdWJsaWM6XG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAkocmV2aXNpb24gMjA5MzUwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNiArNzQsOCBAQCBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCiBJ
bXBsZW1lbnRhdGlvblJldHVyblR5cGU9KgogSW1wbGljaXRUaGlzCiBJbnRlcmZhY2VOYW1lPSoK
K0lzSW1tdXRhYmxlUHJvdG90eXBlRXhvdGljT2JqZWN0CitJc0ltbXV0YWJsZVByb3RvdHlwZUV4
b3RpY09iamVjdE9uUHJvdG90eXBlCiBJc1dlYWtDYWxsYmFjawogSlNCdWlsdGluCiBKU0J1aWx0
aW5Db25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCShyZXZpc2lv
biAyMDkzNTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiBbCiAgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBF
eHBvc2VkPShXaW5kb3csV29ya2VyKSwKKyAgICBJc0ltbXV0YWJsZVByb3RvdHlwZUV4b3RpY09i
amVjdE9uUHJvdG90eXBlLAogICAgIEpTQ3VzdG9tSGVhZGVyLAogICAgIEpTQ3VzdG9tVG9OYXRp
dmVPYmplY3QsCiBdIGludGVyZmFjZSBFdmVudFRhcmdldCB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCShyZXZpc2lvbiAyMDkzNTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAKICAgICBFeHBvcnRN
YWNybz1XRUJDT1JFX0VYUE9SVCwKICAgICBJbXBsaWNpdFRoaXMsCiAgICAgSW50ZXJmYWNlTmFt
ZT1XaW5kb3csCisgICAgSXNJbW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3QsCisgICAgSXNJ
bW11dGFibGVQcm90b3R5cGVFeG90aWNPYmplY3RPblByb3RvdHlwZSwKICAgICBKU0N1c3RvbURl
ZmluZU93blByb3BlcnR5LAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAogICAgIEpTQ3VzdG9t
VG9OYXRpdmVPYmplY3QsCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDkzNTApCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NyBAQAorMjAxNi0xMi0wNSAg
TWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIHRoZSBj
b25jZXB0IG9mIEltbXV0YWJsZSBQcm90b3R5cGUgRXhvdGljIE9iamVjdHMgdG8gY29tcGx5IHdp
dGggdGhlIHNwZWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjUyMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgbmV3IHByb3RvdHlwZS1hc3NpZ25tZW50LmpzIHRlc3QgaXMgY3VycmVudGx5IG9u
bHkgZW5hYmxlZCBmb3IgTExJbnQgb25seQorICAgICAgICBydW4gaW4gdGhlIEpTQyB0ZXN0cyB1
bnRpbCB3ZWJraXQub3JnL2IvMTY1NDAxIGlzIGZpeGVkLgorCisgICAgICAgICogVGVzdEV4cGVj
dGF0aW9uczoKKyAgICAgICAgLSBTa2lwIGpzL3Byb3RvdHlwZS1hc3NpZ25tZW50Lmh0bWwgZm9y
IG5vdyB1bnRpbCB3ZWJraXQub3JnL2IvMTY1NDAxIGlzIGZpeGVkLgorCisgICAgICAgICogaHR0
cC90ZXN0cy9zZWN1cml0eS93aW5kb3ctbmFtZWQtdmFsdWVPZi1leHBlY3RlZC50eHQ6CisgICAg
ICAgICoganMvZG9tL3Byb3h5LWlzLW5vdC1hbGxvd2VkLWluLWdsb2JhbC1wcm90b3R5cGUtY2hh
aW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2RvbS9wcm94eS1pcy1ub3QtYWxsb3dlZC1p
bi1nbG9iYWwtcHJvdG90eXBlLWNoYWluLmh0bWw6CisgICAgICAgIC0gVXBkYXRlZCBlcnJvciBt
ZXNzYWdlcy4KKworICAgICAgICAqIGpzL3Byb3RvdHlwZS1hc3NpZ25tZW50LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICoganMvcHJvdG90eXBlLWFzc2lnbm1lbnQuaHRtbDogQWRkZWQu
CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL3Byb3RvdHlwZS1hc3NpZ25tZW50LmpzOiBBZGRl
ZC4KKyAgICAgICAgKGVsc2UpOgorICAgICAgICAocmVwb3J0RXJyb3IpOgorICAgICAgICAoc2hv
dWxkRXF1YWwpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc3RyaW5naWZ5KToK
KyAgICAgICAgKG1ha2VUZXN0SUQpOgorICAgICAgICAoZG9JbnRlcm5hbFNldFByb3RvdHlwZU9m
KToKKyAgICAgICAgKG9yZGluYXJ5U2V0UHJvdG90eXBlT2YpOgorICAgICAgICAoc2V0SW1tdXRh
YmxlUHJvdG90eXBlKToKKyAgICAgICAgKHdpbmRvd1Byb3h5U2V0UHJvdG90eXBlT2YpOgorICAg
ICAgICAoaW5pdFNldHRlckV4cGVjdGF0aW9uKToKKyAgICAgICAgKHRocm93SWZOb0V4Y2VwdGlv
blBlbmRpbmcpOgorICAgICAgICAob2JqZWN0U2V0UHJvdG90eXBlT2YpOgorICAgICAgICAoc2V0
VW5kZXJzY29yZVByb3RvKToKKyAgICAgICAgKHJlZmxlY3RTZXRQcm90b3R5cGVPZik6CisgICAg
ICAgIChuZXdPYmplY3RQcm90by50b1N0cmluZyk6CisgICAgICAgICh0aGlzLnRlc3RPYmplY3Qu
dGFyZ2V0cy5wdXNoLnZhbHVlKToKKyAgICAgICAgKHRoaXMudGVzdFByb3h5LnRhcmdldHMucHVz
aC5zZXRQcm90b3R5cGVPZik6CisgICAgICAgIChTeW1ib2wpOgorICAgICAgICAodGVzdCk6Cisg
ICAgICAgIChydW5UZXN0cyk6CisgICAgICAgICoganMvc2V0UHJvdG90eXBlT2YtZXhwZWN0ZWQu
dHh0OgorCiAyMDE2LTEyLTA1ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgog
CiAgICAgICAgIFNraXAgdGhyZWUgbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzIHRlc3RzLgpJ
bmRleDogTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMDkzNTApCisrKyBMYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC02NDAsNiArNjQwLDggQEAgd2Via2l0
Lm9yZy9iLzE0MjkzNyBpZXRlc3RjZW50ZXIvSmF2YXNjcgogCiBbIERlYnVnIF0ganMvcmVncmVz
cy0xNDEwOTguaHRtbCBbIFNsb3cgXQogCit3ZWJraXQub3JnL2IvMTY1NDAxIGpzL3Byb3RvdHlw
ZS1hc3NpZ25tZW50Lmh0bWwgWyBTa2lwIF0KKwogIyBJREJWZXJzaW9uQ2hhbmdlRXZlbnQgdGVz
dHMgbmVlZCB0byBiZSByZXdyaXR0ZW4gdG8gdXNlIGV2ZW50IGNvbnN0cnVjdG9ycyBpbnN0ZWFk
IG9mIGNyZWF0ZUV2ZW50LAogIyBhZnRlciB3ZSBpbXBsZW1lbnQgdGhlIElEQlZlcnNpb25DaGFu
Z2VFdmVudCBjb25zdHJ1Y3Rvci4KIHdlYmtpdC5vcmcvYi8xNDUzOTAgc3RvcmFnZS9pbmRleGVk
ZGIvZXZlbnRzLmh0bWwgWyBGYWlsdXJlIF0KQEAgLTEwNjMsNCArMTA2NSwzIEBAIHdlYmtpdC5v
cmcvYi8xNjUxOTUgZmFzdC90ZXh0L3RleHQtY29tYmkKICMgdGhlIG5ldyBDU1MgUGFyc2VyIHR1
cm5zIG9uLgogd2Via2l0Lm9yZy9iLzE2NTE5NSBzdmcvZG9tL1NWR0NvbG9yLmh0bWwgWyBQYXNz
IEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE2NTE5NSBzdmcvZG9tL1NWR1BhaW50Lmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQotCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3dp
bmRvdy1uYW1lZC12YWx1ZU9mLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3dpbmRvdy1uYW1lZC12YWx1ZU9mLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMjA5MzUwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS93aW5k
b3ctbmFtZWQtdmFsdWVPZi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMiArMSwy
IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVGhyZXcgZXhjZXB0aW9uOiBUeXBlRXJyb3I6
IElsbGVnYWwgY29uc3RydWN0b3IKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBUaHJldyBleGNl
cHRpb246IFR5cGVFcnJvcjogQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3Rv
dHlwZSBvYmplY3QKIFRoaXMgcGFzc2VzIGlmIGl0IGRvZXNuJ3QgYWxlcnQgdGhlIGNvbnRlbnRz
IG9mIGlubm9jZW50LXZpY3RpbS4gIApJbmRleDogTGF5b3V0VGVzdHMvanMvcHJvdG90eXBlLWFz
c2lnbm1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3Byb3Rv
dHlwZS1hc3NpZ25tZW50LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9qcy9wcm90b3R5cGUtYXNzaWdubWVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcHJvdG90eXBlLWFzc2lnbm1lbnQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9wcm90b3R5cGUtYXNzaWdubWVudC5odG1sCShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2pzL3Byb3RvdHlwZS1hc3NpZ25tZW50Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL3Byb3RvdHlwZS1hc3NpZ25tZW50LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3NldFByb3RvdHlwZU9mLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zZXRQcm90b3R5cGVPZi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDIwOTM1MCkKKysrIExheW91dFRlc3RzL2pzL3NldFByb3RvdHlw
ZU9mLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzAsODcgKzMwLDg3IEBAIFBBU1Mg
T2JqZWN0LnNldFByb3RvdHlwZU9mKHZhbHVlLCB7fSkgaXMKIFBBU1MgT2JqZWN0LmdldFByb3Rv
dHlwZU9mKHZhbHVlKSBpcyAodmFsdWUpLl9fcHJvdG9fXwogCiBOb24tQ29lcmNpYmxlIHZhbHVl
Ci1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZih1bmRlZmluZWQsIHt9KSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2YobnVs
bCwge30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIE9iamVj
dC5zZXRQcm90b3R5cGVPZih1bmRlZmluZWQsIHt9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiB1bmRlZmluZWQgb3IgbnVsbC4KK1BBU1MgT2JqZWN0
LnNldFByb3RvdHlwZU9mKG51bGwsIHt9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5u
b3Qgc2V0IHByb3RvdHlwZSBvZiB1bmRlZmluZWQgb3IgbnVsbC4KIAogTm9uLU9iamVjdC9OdWxs
IHByb3RvCiBvYmplY3QgKEZ1bmN0aW9uKQotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2Jq
ZWN0LCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmpl
Y3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB0cnVlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBmYWxzZSkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNldFBy
b3RvdHlwZU9mKG9iamVjdCwgJ3N0cmluZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIFN5bWJvbCgpKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJv
dG90eXBlT2Yob2JqZWN0LCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIDApIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qg
b3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgdHJ1ZSkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVj
dCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBmYWxzZSkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9i
amVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCAnc3RyaW5n
JykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJl
IGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBT
eW1ib2woKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBv
bmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2Jq
ZWN0LCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1
ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KIG9iamVjdCAoRnVuY3Rpb24yKQotUEFT
UyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB0cnVl
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0
UHJvdG90eXBlT2Yob2JqZWN0LCBmYWxzZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgJ3N0cmluZycpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90
b3R5cGVPZihvYmplY3QsIFN5bWJvbCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBl
IGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB1bmRlZmluZWQpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIE9iamVjdC5zZXRQcm90
b3R5cGVPZihvYmplY3QsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2
YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3Rv
dHlwZU9mKG9iamVjdCwgdHJ1ZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBl
IHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJv
dG90eXBlT2Yob2JqZWN0LCBmYWxzZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90
eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0
UHJvdG90eXBlT2Yob2JqZWN0LCAnc3RyaW5nJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
UHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmpl
Y3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBTeW1ib2woKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFT
UyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVs
bC4KIG9iamVjdCAoT2JqZWN0KQotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCAw
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0
UHJvdG90eXBlT2Yob2JqZWN0LCB0cnVlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBl
IGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBmYWxzZSkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNldFByb3RvdHlw
ZU9mKG9iamVjdCwgJ3N0cmluZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJy
b3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIFN5bWJvbCgpKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBl
T2Yob2JqZWN0LCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJy
b3IuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIDApIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVs
bC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgdHJ1ZSkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBu
dWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBmYWxzZSkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBv
ciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCAnc3RyaW5nJykgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9i
amVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBTeW1ib2wo
KSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJl
IGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB1
bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4g
b25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KIG9iamVjdCAoT2JqZWN0MikKLVBBU1MgT2JqZWN0
LnNldFByb3RvdHlwZU9mKG9iamVjdCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgdHJ1ZSkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNldFByb3RvdHlw
ZU9mKG9iamVjdCwgZmFsc2UpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3Iu
Ci1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsICdzdHJpbmcnKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yo
b2JqZWN0LCBTeW1ib2woKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4K
LVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgdW5kZWZpbmVkKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yo
b2JqZWN0LCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQcm90b3R5cGUgdmFsdWUgY2Fu
IG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihv
YmplY3QsIHRydWUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBj
YW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9m
KG9iamVjdCwgZmFsc2UpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1
ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlw
ZU9mKG9iamVjdCwgJ3N0cmluZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlw
ZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFBy
b3RvdHlwZU9mKG9iamVjdCwgU3ltYm9sKCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFBy
b3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0
LnNldFByb3RvdHlwZU9mKG9iamVjdCwgdW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCiBvYmpl
Y3QgKFJlZ0V4cCkKLVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgMCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNldFByb3RvdHlw
ZU9mKG9iamVjdCwgdHJ1ZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4K
LVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgZmFsc2UpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmpl
Y3QsICdzdHJpbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFT
UyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBTeW1ib2woKSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVj
dCwgdW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFT
UyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNT
IE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIHRydWUpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KK1BB
U1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgZmFsc2UpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4K
K1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgJ3N0cmluZycpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3Ig
bnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgU3ltYm9sKCkpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmpl
Y3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgdW5kZWZpbmVk
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUg
YW4gb2JqZWN0IG9yIG51bGwuCiBvYmplY3QgKEFycmF5KQotUEFTUyBPYmplY3Quc2V0UHJvdG90
eXBlT2Yob2JqZWN0LCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgot
UEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB0cnVlKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0
LCBmYWxzZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2Jq
ZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgJ3N0cmluZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIFN5
bWJvbCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmpl
Y3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIDAp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBh
biBvYmplY3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgdHJ1
ZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJl
IGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBm
YWxzZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5
IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0
LCAnc3RyaW5nJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNh
biBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yo
b2JqZWN0LCBTeW1ib2woKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZh
bHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90
eXBlT2Yob2JqZWN0LCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3Rv
dHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KIG9iamVjdCAoRXJyb3Ip
Ci1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIDApIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3Qs
IHRydWUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVj
dC5zZXRQcm90b3R5cGVPZihvYmplY3QsIGZhbHNlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCAnc3RyaW5n
JykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNl
dFByb3RvdHlwZU9mKG9iamVjdCwgU3ltYm9sKCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIHVuZGVmaW5l
ZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgT2JqZWN0LnNl
dFByb3RvdHlwZU9mKG9iamVjdCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90
eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0
UHJvdG90eXBlT2Yob2JqZWN0LCB0cnVlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQcm90
b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNTIE9iamVjdC5z
ZXRQcm90b3R5cGVPZihvYmplY3QsIGZhbHNlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQ
cm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNTIE9iamVj
dC5zZXRQcm90b3R5cGVPZihvYmplY3QsICdzdHJpbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNT
IE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIFN5bWJvbCgpKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwu
CitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIHVuZGVmaW5lZCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBv
ciBudWxsLgogb2JqZWN0IChEYXRlKQotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0
LCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Qu
c2V0UHJvdG90eXBlT2Yob2JqZWN0LCB0cnVlKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBmYWxzZSkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNldFByb3Rv
dHlwZU9mKG9iamVjdCwgJ3N0cmluZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIFN5bWJvbCgpKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90
eXBlT2Yob2JqZWN0LCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIDApIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3Ig
bnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgdHJ1ZSkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBv
ciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBmYWxzZSkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVj
dCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCAnc3RyaW5nJykg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFu
IG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBTeW1i
b2woKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5
IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0
LCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBj
YW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KIG9iamVjdCAoTnVtYmVyKQotUEFTUyBPYmpl
Y3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB0cnVlKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90
eXBlT2Yob2JqZWN0LCBmYWxzZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJv
ci4KLVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgJ3N0cmluZycpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVP
ZihvYmplY3QsIFN5bWJvbCgpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB1bmRlZmluZWQpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVP
ZihvYmplY3QsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBj
YW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9m
KG9iamVjdCwgdHJ1ZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZhbHVl
IGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBl
T2Yob2JqZWN0LCBmYWxzZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90eXBlIHZh
bHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0UHJvdG90
eXBlT2Yob2JqZWN0LCAnc3RyaW5nJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUHJvdG90
eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmplY3Quc2V0
UHJvdG90eXBlT2Yob2JqZWN0LCBTeW1ib2woKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
UHJvdG90eXBlIHZhbHVlIGNhbiBvbmx5IGJlIGFuIG9iamVjdCBvciBudWxsLgorUEFTUyBPYmpl
Y3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KIG9i
amVjdCAoQm9vbGVhbikKLVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgMCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNldFByb3Rv
dHlwZU9mKG9iamVjdCwgdHJ1ZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJv
ci4KLVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgZmFsc2UpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihv
YmplY3QsICdzdHJpbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgot
UEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCBTeW1ib2woKSkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9i
amVjdCwgdW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgor
UEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0LCAwKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCitQ
QVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsIHRydWUpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4K
K1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgZmFsc2UpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVs
bC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgJ3N0cmluZycpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qg
b3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgU3ltYm9sKCkpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBv
YmplY3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgdW5kZWZp
bmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkg
YmUgYW4gb2JqZWN0IG9yIG51bGwuCiBvYmplY3QgKFN0cmluZykKLVBBU1MgT2JqZWN0LnNldFBy
b3RvdHlwZU9mKG9iamVjdCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJv
ci4KLVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgdHJ1ZSkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9i
amVjdCwgZmFsc2UpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNT
IE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3QsICdzdHJpbmcnKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0
LCBTeW1ib2woKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1Mg
T2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVjdCwgdW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqZWN0
LCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkg
YmUgYW4gb2JqZWN0IG9yIG51bGwuCitQQVNTIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmplY3Qs
IHRydWUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25s
eSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iamVj
dCwgZmFsc2UpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4g
b25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9i
amVjdCwgJ3N0cmluZycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1
ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFByb3RvdHlw
ZU9mKG9iamVjdCwgU3ltYm9sKCkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFByb3RvdHlw
ZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVsbC4KK1BBU1MgT2JqZWN0LnNldFBy
b3RvdHlwZU9mKG9iamVjdCwgdW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBQ
cm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwuCiAKIE9iamVjdCBh
bmQgb2JqZWN0IHByb3RvCiBvYmplY3QgKEZ1bmN0aW9uKSBwcm90byAoRnVuY3Rpb24pCkluZGV4
OiBMYXlvdXRUZXN0cy9qcy9kb20vcHJveHktaXMtbm90LWFsbG93ZWQtaW4tZ2xvYmFsLXByb3Rv
dHlwZS1jaGFpbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZG9t
L3Byb3h5LWlzLW5vdC1hbGxvd2VkLWluLWdsb2JhbC1wcm90b3R5cGUtY2hhaW4tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAyMDkzNTApCisrKyBMYXlvdXRUZXN0cy9qcy9kb20vcHJveHktaXMtbm90
LWFsbG93ZWQtaW4tZ2xvYmFsLXByb3RvdHlwZS1jaGFpbi1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyIEBACi1DT05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogUHJveHkg
aXMgbm90IGFsbG93ZWQgaW4gdGhlIGdsb2JhbCBwcm90b3R5cGUgY2hhaW4uCi1vbmVycm9yIHNh
dyBUeXBlRXJyb3I6IFByb3h5IGlzIG5vdCBhbGxvd2VkIGluIHRoZSBnbG9iYWwgcHJvdG90eXBl
IGNoYWluLgorQ2F1Z2h0OiBUeXBlRXJyb3I6IENhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0
YWJsZSBwcm90b3R5cGUgb2JqZWN0CiAKSW5kZXg6IExheW91dFRlc3RzL2pzL2RvbS9wcm94eS1p
cy1ub3QtYWxsb3dlZC1pbi1nbG9iYWwtcHJvdG90eXBlLWNoYWluLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvanMvZG9tL3Byb3h5LWlzLW5vdC1hbGxvd2VkLWluLWdsb2JhbC1wcm90
b3R5cGUtY2hhaW4uaHRtbAkocmV2aXNpb24gMjA5MzUwKQorKysgTGF5b3V0VGVzdHMvanMvZG9t
L3Byb3h5LWlzLW5vdC1hbGxvd2VkLWluLWdsb2JhbC1wcm90b3R5cGUtY2hhaW4uaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTgsNyArMTgsNiBAQCB0cnkgewogCiB9IGNhdGNoIChlKSB7CiAgICAg
bG9nKCJDYXVnaHQ6ICIgKyBlKTsKLSAgICBsb2coZS5zdGFjayk7CiB9CiAKIGZ1bmN0aW9uIGxv
ZyhzKQpJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3Byb3RvdHlwZS1hc3NpZ25t
ZW50LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9wcm90b3R5
cGUtYXNzaWdubWVudC5qcwkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvcHJvdG90eXBlLWFzc2lnbm1lbnQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
MzggQEAKKy8vQCBydW5GVExOb0NKSVQoIi0tdXNlSklUPWZhbHNlIikKKy8vIEZJWE1FOiBSZW1v
dmUgdGhlICItLXVzZUpJVD1mYWxzZSIgb3B0aW9uIHdoZW4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NTQwMSBpcyBmaXhlZC4KKworLy8gVGhpcyB0ZXN0IHN1aXRl
IGNvbXBhcmVzIHRoZSBiZWhhdmlvciBvZiBzZXR0aW5nIHRoZSBwcm90b3R5cGUgb24gdmFyaW91
cyB2YWx1ZXMKKy8vICh1c2luZyBPYmplY3Quc2V0UHJvdG90eXBlT2YoKSwgb2JqLl9fcHJvdG9f
XyBhc3NpZ25tZW50LCBhbmQgUmVmbGVjdC5zZXRQcm90b3R5cGVPZigpKQorLy8gYWdhaW5zdCB3
aGF0IGlzIHNwZWNpZmllZCBpbiB0aGUgRVMgc3BlYy4gIFRoZSBleHBlY3RlZCBiZWhhdmlvciBz
cGVjaWZpZWQgYWNjb3JkaW5nCisvLyB0byB0aGUgc3BlYyBpcyBleHByZXNzZWQgaW4gZXhwZWN0
YXRpb25zRm9yT2JqZWN0U2V0UHJvdG90eXBlT2YsCisvLyBleHBlY3RhdGlvbnNGb3JTZXRVbmRl
cnNjb3JlUHJvdG8sIGFuZCBleHBlY3RhdGlvbnNGb3JSZWZsZWN0U2V0UHJvdG90eXBlT2YuCisK
KwordmFyIGluQnJvd3NlciA9ICh0eXBlb2Ygd2luZG93ICE9ICJ1bmRlZmluZWQiKTsKKworLy8g
VGVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnM6Cit2YXIgdmVyYm9zZSA9IGZhbHNlOwordmFyIG1h
eEl0ZXJhdGlvbnMgPSAxOwordmFyIHRocm93T25FYWNoRXJyb3IgPSB0cnVlOworCit2YXIgdGVz
dFVuZGVmaW5lZCA9IHRydWU7Cit2YXIgdGVzdE51bGwgPSB0cnVlOwordmFyIHRlc3RUcnVlID0g
dHJ1ZTsKK3ZhciB0ZXN0RmFsc2UgPSB0cnVlOwordmFyIHRlc3ROdW1iZXJzID0gdHJ1ZTsKK3Zh
ciB0ZXN0U3RyaW5nID0gdHJ1ZTsKK3ZhciB0ZXN0U3ltYm9sID0gdHJ1ZTsKK3ZhciB0ZXN0T2Jq
ZWN0ID0gdHJ1ZTsKK3ZhciB0ZXN0R2xvYmFsID0gdHJ1ZTsKK3ZhciB0ZXN0V2luZG93UHJvdG9z
ID0gaW5Ccm93c2VyOworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gRXJyb3Ig
bWVzc2FnZXM6CisKK2lmIChpbkJyb3dzZXIpIHsKKyAgICBsZXQgdXNlckFnZW50ID0gbmF2aWdh
dG9yLnVzZXJBZ2VudDsKKyAgICBpZiAodXNlckFnZW50Lm1hdGNoKC8gQ2hyb21lXC9bMC05XSsv
KSkgZW5naW5lID0gImNocm9tZSI7CisgICAgZWxzZSBpZiAodXNlckFnZW50Lm1hdGNoKC8gRmly
ZWZveFwvWzAtOV0rLykpIGVuZ2luZSA9ICJkZWZhdWx0IjsKKyAgICBlbHNlIGVuZ2luZSA9ICJz
YWZhcmkiOworfSBlbHNlCisgICAgZW5naW5lID0gImpzYyI7CisKKy8vIFNldCBkZWZhdWx0IGVy
cm9yIG1lc3NhZ2VzIGFuZCB0aGVuIG92ZXJyaWRlIHdpdGggZW5naW5lIHNwZWNpZmljIG9uZXMg
YmVsb3cuCitEZWZhdWx0VHlwZUVycm9yID0gIlR5cGVFcnJvcjogIjsKK0Nhbm5vdFNldFByb3Rv
dHlwZU9mSW1tdXRhYmxlUHJvdG90eXBlT2JqZWN0ID0gRGVmYXVsdFR5cGVFcnJvcjsKK0Nhbm5v
dFNldFByb3RvdHlwZU9mVGhpc09iamVjdCA9IERlZmF1bHRUeXBlRXJyb3I7CitDYW5ub3RTZXRQ
cm90b3R5cGVPZlVuZGVmaW5lZE9yTnVsbCA9IERlZmF1bHRUeXBlRXJyb3I7CitDYW5ub3RTZXRQ
cm90b3R5cGVPZk5vbk9iamVjdCA9IERlZmF1bHRUeXBlRXJyb3I7CitQcm90b3R5cGVWYWx1ZUNh
bk9ubHlCZUFuT2JqZWN0T3JOdWxsID0gRGVmYXVsdFR5cGVFcnJvcjsKK09iamVjdFByb3RvQ2Fs
bGVkT25OdWxsT3JVbmRlZmluZWRFcnJvciA9IERlZmF1bHRUeXBlRXJyb3I7CitSZWZsZWN0U2V0
UHJvdG90eXBlT2ZSZXF1aXJlc1RoZUZpcnN0QXJndW1lbnRCZUFuT2JqZWN0ID0gRGVmYXVsdFR5
cGVFcnJvcjsKK1JlZmxlY3RTZXRQcm90b3R5cGVPZlJlcXVpcmVzVGhlU2Vjb25kQXJndW1lbnRC
ZUFuT2JqZWN0T3JOdWxsID0gRGVmYXVsdFR5cGVFcnJvcjsKKworaWYgKGVuZ2luZSA9PSAianNj
IiB8fCBlbmdpbmUgPT09ICJzYWZhcmkiKSB7CisgICAgQ2Fubm90U2V0UHJvdG90eXBlT2ZJbW11
dGFibGVQcm90b3R5cGVPYmplY3QgPSAiVHlwZUVycm9yOiBDYW5ub3Qgc2V0IHByb3RvdHlwZSBv
ZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdCI7CisgICAgQ2Fubm90U2V0UHJvdG90eXBlT2ZU
aGlzT2JqZWN0ID0gIlR5cGVFcnJvcjogQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgdGhpcyBvYmpl
Y3QiOworICAgIENhbm5vdFNldFByb3RvdHlwZU9mVW5kZWZpbmVkT3JOdWxsID0gIlR5cGVFcnJv
cjogQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgdW5kZWZpbmVkIG9yIG51bGwiOworICAgIENhbm5v
dFNldFByb3RvdHlwZU9mTm9uT2JqZWN0ID0gIlR5cGVFcnJvcjogQ2Fubm90IHNldCBwcm90b3R5
cGUgb2Ygbm9uLW9iamVjdCI7CisgICAgUHJvdG90eXBlVmFsdWVDYW5Pbmx5QmVBbk9iamVjdE9y
TnVsbCA9ICJUeXBlRXJyb3I6IFByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qg
b3IgbnVsbCI7CisgICAgT2JqZWN0UHJvdG9DYWxsZWRPbk51bGxPclVuZGVmaW5lZEVycm9yID0g
IlR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51bGwgb3Ig
dW5kZWZpbmVkIjsKKyAgICBSZWZsZWN0U2V0UHJvdG90eXBlT2ZSZXF1aXJlc1RoZUZpcnN0QXJn
dW1lbnRCZUFuT2JqZWN0ID0gIlR5cGVFcnJvcjogUmVmbGVjdC5zZXRQcm90b3R5cGVPZiByZXF1
aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IjsKKyAgICBSZWZsZWN0U2V0UHJv
dG90eXBlT2ZSZXF1aXJlc1RoZVNlY29uZEFyZ3VtZW50QmVBbk9iamVjdE9yTnVsbCA9ICJUeXBl
RXJyb3I6IFJlZmxlY3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIHNlY29uZCBhcmd1bWVu
dCBiZSBlaXRoZXIgYW4gb2JqZWN0IG9yIG51bGwiOworfSBlbHNlIGlmIChlbmdpbmUgPT09ICJj
aHJvbWUiKSB7CisgICAgQ2Fubm90U2V0UHJvdG90eXBlT2ZJbW11dGFibGVQcm90b3R5cGVPYmpl
Y3QgPSAiVHlwZUVycm9yOiBJbW11dGFibGUgcHJvdG90eXBlIG9iamVjdCAiOworfQorCisvLz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gVXRpbGl0eSBmdW5jdGlvbnM6CisKK2lmIChp
bkJyb3dzZXIpCisgICAgcHJpbnQgPSBjb25zb2xlLmxvZzsKKworZnVuY3Rpb24gcmVwb3J0RXJy
b3IoZXJyb3JNZXNzYWdlKSB7CisgICAgaWYgKHRocm93T25FYWNoRXJyb3IpCisgICAgICAgIHRo
cm93IGVycm9yTWVzc2FnZTsKKyAgICBlbHNlCisgICAgICAgIHByaW50KGVycm9yTWVzc2FnZSk7
Cit9CisKK2Z1bmN0aW9uIHNob3VsZEVxdWFsKHRlc3RJRCwgcmVzdWx0VHlwZSwgYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpCisgICAgICAgIHJlcG9ydEVy
cm9yKCJFUlJPUiBpbiAiICsgcmVzdWx0VHlwZQorICAgICAgICAgICAgKyAiOiBleHBlY3QgIiAr
IHN0cmluZ2lmeShleHBlY3RlZCkgKyAiLCBhY3R1YWwgIiArIHN0cmluZ2lmeShhY3R1YWwpCisg
ICAgICAgICAgICArICIgaW4gdGVzdDogIiArIHRlc3RJRC5zaWduYXR1cmUgKyAiIG9uIGl0ZXJh
dGlvbiAiICsgdGVzdElELml0ZXJhdGlvbik7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KHRl
c3RJRCwgcmVzdWx0VHlwZSwgYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGxldCBhY3R1YWxTdHIg
PSAiIiArIGFjdHVhbDsKKyAgICBpZiAoIWFjdHVhbFN0ci5zdGFydHNXaXRoKGV4cGVjdGVkKSkK
KyAgICAgICAgcmVwb3J0RXJyb3IoIkVSUk9SIGluICIgKyByZXN1bHRUeXBlCisgICAgICAgICAg
ICArICI6IGV4cGVjdCAiICsgZXhwZWN0ZWQgKyAiLCBhY3R1YWwgIiArIGFjdHVhbAorICAgICAg
ICAgICAgKyAiIGluIHRlc3Q6ICIgKyB0ZXN0SUQuc2lnbmF0dXJlICsgIiBvbiBpdGVyYXRpb24g
IiArIHRlc3RJRC5pdGVyYXRpb24pOworfQorCitmdW5jdGlvbiBzdHJpbmdpZnkodmFsdWUpIHsK
KyAgICBpZiAodHlwZW9mIHZhbHVlID09ICJzdHJpbmciKSByZXR1cm4gJyInICsgdmFsdWUgKyAn
Iic7CisgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAic3ltYm9sIikgcmV0dXJuIHZhbHVlLnRvU3Ry
aW5nKCk7CisKKyAgICBpZiAodmFsdWUgPT09IG9yaWdHbG9iYWxQcm90bykgcmV0dXJuICJvcmln
R2xvYmFsUHJvdG8iOyAKKyAgICBpZiAodmFsdWUgPT09IG9yaWdPYmplY3RQcm90bykgcmV0dXJu
ICJvcmlnT2JqZWN0UHJvdG8iOyAKKyAgICBpZiAodmFsdWUgPT09IG5ld09iamVjdFByb3RvKSBy
ZXR1cm4gIm5ld09iamVjdFByb3RvIjsKKyAgICBpZiAodmFsdWUgPT09IHByb3h5T2JqZWN0KSBy
ZXR1cm4gInByb3h5T2JqZWN0IjsKKworICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuICJu
dWxsIjsKKyAgICBpZiAodHlwZW9mIHZhbHVlID09ICJvYmplY3QiKSByZXR1cm4gIm9iamVjdCI7
IAorICAgIHJldHVybiAiIiArIHZhbHVlOworfQorCitmdW5jdGlvbiBtYWtlVGVzdElEKGluZGV4
LCBpdGVyYXRpb24sIHRhcmdldE5hbWUsIHByb3RvVG9TZXQsIHByb3RvU2V0dGVyLCBleHBlY3Rl
ZCkgeworICAgIGxldCB0ZXN0SUQgPSB7fTsKKyAgICB0ZXN0SUQuc2lnbmF0dXJlID0gIlsiICsg
aW5kZXggKyAiXSAiCisgICAgICAgICsgcHJvdG9TZXR0ZXIuYWN0aW9uTmFtZSArICJ8IgorICAg
ICAgICArIHRhcmdldE5hbWUgKyAifCIKKyAgICAgICAgKyBzdHJpbmdpZnkocHJvdG9Ub1NldCkg
KyAifCIKKyAgICAgICAgKyBzdHJpbmdpZnkoZXhwZWN0ZWQucmVzdWx0KSArICJ8IgorICAgICAg
ICArIHN0cmluZ2lmeShleHBlY3RlZC5wcm90bykgKyAifCIKKyAgICAgICAgKyBzdHJpbmdpZnko
ZXhwZWN0ZWQuZXhjZXB0aW9uKTsKKyAgICB0ZXN0SUQuaXRlcmF0aW9uID0gaXRlcmF0aW9uOwor
ICAgIHJldHVybiB0ZXN0SUQ7Cit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cisv
LyBGdW5jdGlvbnMgdG8gZXhwcmVzcyB0aGUgZXhwZWN0YXRpb25zIG9mIHRoZSBFUyBzcGVjaWZp
Y2F0aW9uOgorCitmdW5jdGlvbiBkb0ludGVybmFsU2V0UHJvdG90eXBlT2YocmVzdWx0LCB0YXJn
ZXQsIG9yaWdQcm90bywgbmV3UHJvdG8pIHsKKyAgICBpZiAoIXRhcmdldC5zZXRQcm90b3R5cGVP
ZikgeworICAgICAgICByZXN1bHQuc3VjY2VzcyA9IHRydWU7CisgICAgICAgIHJlc3VsdC5leGNl
cHRpb24gPSB1bmRlZmluZWQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGFyZ2V0LnNl
dFByb3RvdHlwZU9mKHJlc3VsdCwgb3JpZ1Byb3RvLCBuZXdQcm90byk7Cit9CisKKy8vIDkuMS4y
LjEgT3JkaW5hcnlTZXRQcm90b3R5cGVPZiAoIE8sIFYgKQorLy8gaHR0cHM6Ly90YzM5LmdpdGh1
Yi5pby9lY21hMjYyLyNzZWMtb3JkaW5hcnlzZXRwcm90b3R5cGVvZgorZnVuY3Rpb24gb3JkaW5h
cnlTZXRQcm90b3R5cGVPZihyZXN1bHQsIGN1cnJlbnRQcm90bywgbmV3UHJvdG8pIHsKKyAgICAv
LyA5LjEuMi4xLTQgSWYgU2FtZVZhbHVlKFYsIGN1cnJlbnQpIGlzIHRydWUsIHJldHVybiB0cnVl
LgorICAgIGlmIChuZXdQcm90byA9PT0gY3VycmVudFByb3RvKSB7CisgICAgICAgIHJlc3VsdC5z
dWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyA5LjEuMi4xLTUg
W2V4dGVuc2liaWxpdHkgY2hlY2sgbm90IHRlc3RlZCBoZXJlXQorICAgIC8vIDkuMS4yLjEtOCBb
Y3ljbGUgY2hlY2sgbm90IHRlc3RlZCBoZXJlXQorICAgIHJlc3VsdC5zdWNjZXNzID0gdHJ1ZTsK
K30KKworLy8gOS40LjcuMiBTZXRJbW11dGFibGVQcm90b3R5cGUgKCBPLCBWICkKKy8vIGh0dHBz
Oi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXNldC1pbW11dGFibGUtcHJvdG90eXBlCitm
dW5jdGlvbiBzZXRJbW11dGFibGVQcm90b3R5cGUocmVzdWx0LCBjdXJyZW50UHJvdG8sIG5ld1By
b3RvKSB7CisgICAgaWYgKG5ld1Byb3RvID09PSBjdXJyZW50UHJvdG8pIHsKKyAgICAgICAgcmVz
dWx0LnN1Y2Nlc3MgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlc3VsdC5z
dWNjZXNzID0gZmFsc2U7CisgICAgcmVzdWx0LmV4Y2VwdGlvbiA9IENhbm5vdFNldFByb3RvdHlw
ZU9mSW1tdXRhYmxlUHJvdG90eXBlT2JqZWN0OworfQorCisvLyBIVE1MIHNwZWM6IDcuNC4yIFtb
U2V0UHJvdG90eXBlT2ZdXSAoIFYgKQorLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8j
d2luZG93cHJveHktc2V0cHJvdG90eXBlb2YKK2Z1bmN0aW9uIHdpbmRvd1Byb3h5U2V0UHJvdG90
eXBlT2YocmVzdWx0LCBjdXJyZW50UHJvdG8sIG5ld1Byb3RvKSB7CisgICAgcmVzdWx0LnN1Y2Nl
c3MgPSBmYWxzZTsKKyAgICByZXN1bHQuZXhjZXB0aW9uID0gQ2Fubm90U2V0UHJvdG90eXBlT2ZU
aGlzT2JqZWN0OworfQorCisKK3ZhciBjb3VudCA9IDA7CitmdW5jdGlvbiBpbml0U2V0dGVyRXhw
ZWN0YXRpb24odGFyZ2V0LCBuZXdQcm90bykgeworICAgIHZhciB0YXJnZXRWYWx1ZSA9IHRhcmdl
dC52YWx1ZSgpOworICAgIHZhciBvcmlnUHJvdG8gPSB1bmRlZmluZWQ7CisgICAgaWYgKHRhcmdl
dFZhbHVlICE9IG51bGwgJiYgdGFyZ2V0VmFsdWUgIT0gdW5kZWZpbmVkKQorICAgICAgICBvcmln
UHJvdG8gPSB0YXJnZXRWYWx1ZS5fX3Byb3RvX187IC8vIERlZmF1bHQgdG8gb2xkIHByb3RvLgor
CisgICAgdmFyIGV4cGVjdGVkID0ge307CisgICAgZXhwZWN0ZWQudGFyZ2V0VmFsdWUgPSB0YXJn
ZXRWYWx1ZTsKKyAgICBleHBlY3RlZC5vcmlnUHJvdG8gPSBvcmlnUHJvdG87CisgICAgZXhwZWN0
ZWQuZXhjZXB0aW9uID0gdW5kZWZpbmVkOworICAgIGV4cGVjdGVkLnByb3RvID0gb3JpZ1Byb3Rv
OworICAgIGV4cGVjdGVkLnJlc3VsdCA9IHVuZGVmaW5lZDsKKworICAgIHJldHVybiBleHBlY3Rl
ZDsKK30KKworLy8gMTkuMS4yLjIxIE9iamVjdC5zZXRQcm90b3R5cGVPZiAoIE8sIHByb3RvICkK
Ky8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5zZXRwcm90b3R5
cGVvZgorZnVuY3Rpb24gb2JqZWN0U2V0UHJvdG90eXBlT2YodGFyZ2V0LCBuZXdQcm90bykgewor
ICAgIGxldCBleHBlY3RlZCA9IGluaXRTZXR0ZXJFeHBlY3RhdGlvbih0YXJnZXQsIG5ld1Byb3Rv
KTsKKyAgICB2YXIgdGFyZ2V0VmFsdWUgPSBleHBlY3RlZC50YXJnZXRWYWx1ZTsKKyAgICB2YXIg
b3JpZ1Byb3RvID0gZXhwZWN0ZWQub3JpZ1Byb3RvOworCisgICAgZnVuY3Rpb24gdGhyb3dJZk5v
RXhjZXB0aW9uUGVuZGluZyhlKSB7CisgICAgICAgIGlmICghZXhwZWN0ZWQuZXhjZXB0aW9uKQor
ICAgICAgICAgICAgZXhwZWN0ZWQuZXhjZXB0aW9uID0gZTsKKyAgICB9CisKKyAgICAvLyAxOS4x
LjIuMjEtMSBMZXQgTyBiZSA/IFJlcXVpcmVPYmplY3RDb2VyY2libGUoTykuCisgICAgaWYgKHRh
cmdldFZhbHVlID09IHVuZGVmaW5lZCB8fCB0YXJnZXRWYWx1ZSA9PSBudWxsKQorICAgICAgICB0
aHJvd0lmTm9FeGNlcHRpb25QZW5kaW5nKENhbm5vdFNldFByb3RvdHlwZU9mVW5kZWZpbmVkT3JO
dWxsKTsKKworICAgIC8vIDE5LjEuMi4yMS0yIElmIFR5cGUocHJvdG8pIGlzIG5laXRoZXIgT2Jq
ZWN0IG5vciBOdWxsLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCisgICAgaWYgKHR5cGVv
ZiBuZXdQcm90byAhPSAib2JqZWN0IikKKyAgICAgICAgdGhyb3dJZk5vRXhjZXB0aW9uUGVuZGlu
ZyhQcm90b3R5cGVWYWx1ZUNhbk9ubHlCZUFuT2JqZWN0T3JOdWxsKTsKKworICAgIC8vIDE5LjEu
Mi4yMS0zIElmIFR5cGUoTykgaXMgbm90IE9iamVjdCwgcmV0dXJuIE8uCisgICAgZWxzZSBpZiAo
dHlwZW9mIHRhcmdldFZhbHVlICE9ICJvYmplY3QiKQorICAgICAgICBleHBlY3RlZC5yZXN1bHQg
PSB0YXJnZXRWYWx1ZTsKKworICAgIC8vIDE5LjEuMi4yMS00IExldCBzdGF0dXMgYmUgPyBPLltb
U2V0UHJvdG90eXBlT2ZdXShwcm90bykuCisgICAgZWxzZSB7CisgICAgICAgIC8vIDE5LjEuMi4y
MS01IElmIHN0YXR1cyBpcyBmYWxzZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgorICAg
ICAgICBsZXQgcmVzdWx0ID0ge307CisgICAgICAgIGRvSW50ZXJuYWxTZXRQcm90b3R5cGVPZihy
ZXN1bHQsIHRhcmdldCwgb3JpZ1Byb3RvLCBuZXdQcm90byk7CisgICAgICAgIGlmIChyZXN1bHQu
c3VjY2VzcykKKyAgICAgICAgICAgIGV4cGVjdGVkLnByb3RvID0gbmV3UHJvdG87CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHRocm93SWZOb0V4Y2VwdGlvblBlbmRpbmcocmVzdWx0LmV4Y2Vw
dGlvbik7CisKKyAgICAgICAgLy8gMTkuMS4yLjIxLTYgUmV0dXJuIE8uCisgICAgICAgIGV4cGVj
dGVkLnJlc3VsdCA9IHRhcmdldFZhbHVlOworICAgIH0KKworICAgIHJldHVybiBleHBlY3RlZDsK
K30KK29iamVjdFNldFByb3RvdHlwZU9mLmFjdGlvbiA9IChvYmosIG5ld1Byb3RvKSA9PiBPYmpl
Y3Quc2V0UHJvdG90eXBlT2Yob2JqLCBuZXdQcm90byk7CitvYmplY3RTZXRQcm90b3R5cGVPZi5h
Y3Rpb25OYW1lID0gIk9iamVjdC5zZXRQcm90b3R5cGVPZiI7CisKKworLy8gQi4yLjIuMS4yIHNl
dCBPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXworLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9l
Y21hMjYyLyNzZWMtc2V0LW9iamVjdC5wcm90b3R5cGUuX19wcm90b19fCitmdW5jdGlvbiBzZXRV
bmRlcnNjb3JlUHJvdG8odGFyZ2V0LCBuZXdQcm90bykgeworICAgIGxldCBleHBlY3RlZCA9IGlu
aXRTZXR0ZXJFeHBlY3RhdGlvbih0YXJnZXQsIG5ld1Byb3RvKTsKKyAgICB2YXIgdGFyZ2V0VmFs
dWUgPSBleHBlY3RlZC50YXJnZXRWYWx1ZTsKKyAgICB2YXIgb3JpZ1Byb3RvID0gZXhwZWN0ZWQu
b3JpZ1Byb3RvOworCisgICAgZnVuY3Rpb24gdGhyb3dJZk5vRXhjZXB0aW9uUGVuZGluZyhlKSB7
CisgICAgICAgIGlmICghZXhwZWN0ZWQuZXhjZXB0aW9uKQorICAgICAgICAgICAgZXhwZWN0ZWQu
ZXhjZXB0aW9uID0gZTsKKyAgICB9CisKKyAgICAvLyBCLjIuMi4xLjItMSBMZXQgTyBiZSA/IFJl
cXVpcmVPYmplY3RDb2VyY2libGUodGhpcyB2YWx1ZSkuCisgICAgaWYgKHRhcmdldFZhbHVlID09
IHVuZGVmaW5lZCB8fCB0YXJnZXRWYWx1ZSA9PSBudWxsKQorICAgICAgICB0aHJvd0lmTm9FeGNl
cHRpb25QZW5kaW5nKERlZmF1bHRUeXBlRXJyb3IpOworCisgICAgLy8gQi4yLjIuMS4yLTIgSWYg
VHlwZShwcm90bykgaXMgbmVpdGhlciBPYmplY3Qgbm9yIE51bGwsIHJldHVybiB1bmRlZmluZWQu
CisgICAgaWYgKHR5cGVvZiBuZXdQcm90byAhPSAib2JqZWN0IikKKyAgICAgICAgZXhwZWN0ZWQu
cmVzdWx0ID0gdW5kZWZpbmVkOworICAgIAorICAgIC8vIEIuMi4yLjEuMi0zIElmIFR5cGUoTykg
aXMgbm90IE9iamVjdCwgcmV0dXJuIHVuZGVmaW5lZC4KKyAgICBlbHNlIGlmICh0eXBlb2YgdGFy
Z2V0VmFsdWUgIT0gIm9iamVjdCIpCisgICAgICAgIGV4cGVjdGVkLnJlc3VsdCA9IHVuZGVmaW5l
ZDsKKworICAgIC8vIEIuMi4yLjEuMi00IExldCBzdGF0dXMgYmUgPyBPLltbU2V0UHJvdG90eXBl
T2ZdXShwcm90bykuCisgICAgZWxzZSB7CisgICAgICAgIC8vIEIuMi4yLjEuMi01IElmIHN0YXR1
cyBpcyBmYWxzZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgorICAgICAgICBsZXQgcmVz
dWx0ID0ge307CisgICAgICAgIGRvSW50ZXJuYWxTZXRQcm90b3R5cGVPZihyZXN1bHQsIHRhcmdl
dCwgb3JpZ1Byb3RvLCBuZXdQcm90byk7CisgICAgICAgIGlmIChyZXN1bHQuc3VjY2VzcykKKyAg
ICAgICAgICAgIGV4cGVjdGVkLnByb3RvID0gbmV3UHJvdG87CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHRocm93SWZOb0V4Y2VwdGlvblBlbmRpbmcocmVzdWx0LmV4Y2VwdGlvbik7CisKKyAg
ICAgICAgLy8gQi4yLjIuMS4yLTYgUmV0dXJuIHVuZGVmaW5lZC4KKyAgICAgICAgZXhwZWN0ZWQu
cmVzdWx0ID0gdW5kZWZpbmVkOworICAgIH0KKworICAgIC8vIE92ZXJyaWRlIHRoZSByZXN1bHQg
dG8gYmUgdGhlIG5ld1Byb3RvIHZhbHVlIGJlY2F1c2UgdGhlIHN0YXRlbWVudCBvYmouX19wcm90
b19fID0gdmFsdWUKKyAgICAvLyB3aWxsIHByb2R1Y2UgdGhlIHJocyB2YWx1ZSwgbm90IHRoZSBy
ZXN1bHQgb2YgdGhlIG9iai5fX3Byb3RvX18gc2V0dGVyLgorICAgIGV4cGVjdGVkLnJlc3VsdCA9
IG5ld1Byb3RvOworICAgIHJldHVybiBleHBlY3RlZDsgICAgCit9CitzZXRVbmRlcnNjb3JlUHJv
dG8uYWN0aW9uID0gKG9iaiwgbmV3UHJvdG8pID0+IChvYmouX19wcm90b19fID0gbmV3UHJvdG8p
Oworc2V0VW5kZXJzY29yZVByb3RvLmFjdGlvbk5hbWUgPSAib2JqLl9fcHJvdG9fXyI7CisKKwor
Ly8gMjYuMS4xMyBSZWZsZWN0LnNldFByb3RvdHlwZU9mICggdGFyZ2V0LCBwcm90byApCisvLyBo
dHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnNldHByb3RvdHlwZW9m
CisvLyBmdW5jdGlvbiBleHBlY3RhdGlvbnNGb3JSZWZsZWN0U2V0UHJvdG90eXBlT2YodGFyZ2V0
LCBuZXdQcm90bywgdGFyZ2V0RXhwZWN0YXRpb24pIHsKK2Z1bmN0aW9uIHJlZmxlY3RTZXRQcm90
b3R5cGVPZih0YXJnZXQsIG5ld1Byb3RvKSB7CisgICAgbGV0IGV4cGVjdGVkID0gaW5pdFNldHRl
ckV4cGVjdGF0aW9uKHRhcmdldCwgbmV3UHJvdG8pOworICAgIHZhciB0YXJnZXRWYWx1ZSA9IGV4
cGVjdGVkLnRhcmdldFZhbHVlOworICAgIHZhciBvcmlnUHJvdG8gPSBleHBlY3RlZC5vcmlnUHJv
dG87CisKKyAgICBmdW5jdGlvbiB0aHJvd0lmTm9FeGNlcHRpb25QZW5kaW5nKGUpIHsKKyAgICAg
ICAgaWYgKCFleHBlY3RlZC5leGNlcHRpb24pCisgICAgICAgICAgICBleHBlY3RlZC5leGNlcHRp
b24gPSBlOworICAgIH0KKworICAgIC8vIDI2LjEuMTMtMSBJZiBUeXBlKHRhcmdldCkgaXMgbm90
IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgorICAgIGlmICh0YXJnZXRWYWx1
ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdGFyZ2V0VmFsdWUgIT0gIm9iamVjdCIpCisgICAgICAgIHRo
cm93SWZOb0V4Y2VwdGlvblBlbmRpbmcoUmVmbGVjdFNldFByb3RvdHlwZU9mUmVxdWlyZXNUaGVG
aXJzdEFyZ3VtZW50QmVBbk9iamVjdCk7CisKKyAgICAvLyAyNi4xLjEzLTIgSWYgVHlwZShwcm90
bykgaXMgbm90IE9iamVjdCBhbmQgcHJvdG8gaXMgbm90IG51bGwsIHRocm93IGEgVHlwZUVycm9y
IGV4Y2VwdGlvbi4KKyAgICBpZiAodHlwZW9mIG5ld1Byb3RvICE9ICJvYmplY3QiKQorICAgICAg
ICB0aHJvd0lmTm9FeGNlcHRpb25QZW5kaW5nKFJlZmxlY3RTZXRQcm90b3R5cGVPZlJlcXVpcmVz
VGhlU2Vjb25kQXJndW1lbnRCZUFuT2JqZWN0T3JOdWxsKTsKKyAgICAKKyAgICAvLyAyNi4xLjEz
LTMgUmV0dXJuID8gdGFyZ2V0LltbU2V0UHJvdG90eXBlT2ZdXShwcm90bykuCisgICAgbGV0IHJl
c3VsdCA9IHt9OworICAgIGRvSW50ZXJuYWxTZXRQcm90b3R5cGVPZihyZXN1bHQsIHRhcmdldCwg
b3JpZ1Byb3RvLCBuZXdQcm90byk7CisgICAgZXhwZWN0ZWQucmVzdWx0ID0gcmVzdWx0LnN1Y2Nl
c3M7CisgICAgaWYgKHJlc3VsdC5zdWNjZXNzKQorICAgICAgICBleHBlY3RlZC5wcm90byA9IG5l
d1Byb3RvOworCisgICAgcmV0dXJuIGV4cGVjdGVkOyAgICAKK30KK3JlZmxlY3RTZXRQcm90b3R5
cGVPZi5hY3Rpb24gPSAob2JqLCBuZXdQcm90bykgPT4gUmVmbGVjdC5zZXRQcm90b3R5cGVPZihv
YmosIG5ld1Byb3RvKTsKK3JlZmxlY3RTZXRQcm90b3R5cGVPZi5hY3Rpb25OYW1lID0gIlJlZmxl
Y3Quc2V0UHJvdG90eXBlT2YiOworCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cisv
LyBUZXN0IERhdGE6CisKK3ZhciBnbG9iYWwgPSB0aGlzOwordmFyIG9yaWdHbG9iYWxQcm90byA9
IGdsb2JhbC5fX3Byb3RvX187Cit2YXIgb3JpZ09iamVjdFByb3RvID0ge30uX19wcm90b19fOwor
dmFyIHByb3h5T2JqZWN0ID0gbmV3IFByb3h5KHsgfSwgeworICAgIHNldFByb3RvdHlwZU9mKHRh
cmdldCwgdmFsdWUpIHsKKyAgICAgICAgdGhyb3cgIlRocm93biBmcm9tIHByb3h5IjsKKyAgICB9
Cit9KTsKK3ZhciBuZXdPYmplY3RQcm90byA9IHsgdG9TdHJpbmcoKSB7IHJldHVybiAibmV3T2Jq
ZWN0UHJvdG8iOyB9IH07CisKK3ZhciB0YXJnZXRzID0gW107CisKK2lmICh0aGlzLnRlc3RVbmRl
ZmluZWQpIHRhcmdldHMucHVzaCh7IG5hbWU6ICJ1bmRlZmluZWQiLCB2YWx1ZTogKCkgPT4gdW5k
ZWZpbmVkIH0pOworaWYgKHRoaXMudGVzdE51bGwpICAgICAgdGFyZ2V0cy5wdXNoKHsgbmFtZTog
Im51bGwiLCB2YWx1ZTogKCkgPT4gbnVsbCB9KTsKK2lmICh0aGlzLnRlc3RUcnVlKSAgICAgdGFy
Z2V0cy5wdXNoKHsgbmFtZTogInRydWUiLCB2YWx1ZTogKCkgPT4gdHJ1ZSB9KTsKK2lmICh0aGlz
LnRlc3RGYWxzZSkgICAgICAgIHRhcmdldHMucHVzaCh7IG5hbWU6ICJmYWxzZSIsIHZhbHVlOiAo
KSA9PiBmYWxzZSB9KTsKKworaWYgKHRoaXMudGVzdE51bWJlcnMpIHsKKyAgICB0YXJnZXRzLnB1
c2goeyBuYW1lOiAiMCIsIHZhbHVlOiAoKSA9PiAwIH0pOworICAgIHRhcmdldHMucHVzaCh7IG5h
bWU6ICIxMSIsIHZhbHVlOiAoKSA9PiAxMSB9KTsKKyAgICB0YXJnZXRzLnB1c2goeyBuYW1lOiAi
MTIzLjQ1NiIsIHZhbHVlOiAoKSA9PiAxMjMuNDU2IH0pOworfQorCitpZiAodGhpcy50ZXN0U3Ry
aW5nKSAgICB0YXJnZXRzLnB1c2goeyBuYW1lOiAnImRvaCInLCB2YWx1ZTogKCkgPT4gImRvaCIg
fSk7CitpZiAodGhpcy50ZXN0U3ltYm9sKSAgICB0YXJnZXRzLnB1c2goeyBuYW1lOiAiU3ltYm9s
KGRvaCkiLCB2YWx1ZTogKCkgPT4gU3ltYm9sKCJkb2giKSB9KTsKKworaWYgKHRoaXMudGVzdE9i
amVjdCkgeworICAgIHRhcmdldHMucHVzaCh7CisgICAgICAgIG5hbWU6ICJ7fSIsIAorICAgICAg
ICB2YWx1ZTogKCkgPT4ge30sCisgICAgICAgIHNldFByb3RvdHlwZU9mOiBvcmRpbmFyeVNldFBy
b3RvdHlwZU9mCisgICAgfSk7CisgICAgdGFyZ2V0cy5wdXNoKHsKKyAgICAgICAgbmFtZTogInt9
Ll9fcHJvdG9fXyIsIAorICAgICAgICB2YWx1ZTogKCkgPT4gb3JpZ09iamVjdFByb3RvLAorICAg
ICAgICBzZXRQcm90b3R5cGVPZjogc2V0SW1tdXRhYmxlUHJvdG90eXBlCisgICAgfSk7Cit9Citp
ZiAodGhpcy50ZXN0R2xvYmFsKSB7CisgICAgdGFyZ2V0cy5wdXNoKHsKKyAgICAgICAgbmFtZTog
aW5Ccm93c2VyID8gIndpbmRvdyIgOiAiZ2xvYmFsIiwKKyAgICAgICAgdmFsdWU6ICgpID0+IGds
b2JhbCwKKyAgICAgICAgc2V0UHJvdG90eXBlT2Y6IHdpbmRvd1Byb3h5U2V0UHJvdG90eXBlT2YK
KyAgICB9KTsKK30KK2lmICh0aGlzLnRlc3RXaW5kb3dQcm90b3MpIHsKKyAgICBpZiAoaW5Ccm93
c2VyKSB7CisgICAgICAgIGxldCBkZXB0aCA9IDE7CisgICAgICAgIGxldCBwcm90byA9IHdpbmRv
dy5fX3Byb3RvX187CisgICAgICAgIHdoaWxlIChwcm90bykgeyAKKyAgICAgICAgICAgIGxldCBu
YW1lID0gIndpbmRvdyI7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlcHRoOyBp
KyspCisgICAgICAgICAgICAgICAgbmFtZSArPSAiLl9fcHJvdG9fXyI7CisKKyAgICAgICAgICAg
IGxldCBjdXJyZW50UHJvdG8gPSBwcm90bzsKKyAgICAgICAgICAgIHRhcmdldHMucHVzaCh7Cisg
ICAgICAgICAgICAgICAgbmFtZTogbmFtZSwgCisgICAgICAgICAgICAgICAgdmFsdWU6ICgpID0+
IGN1cnJlbnRQcm90bywKKyAgICAgICAgICAgICAgICBzZXRQcm90b3R5cGVPZjogc2V0SW1tdXRh
YmxlUHJvdG90eXBlCisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgcHJvdG8gPSBwcm90
by5fX3Byb3RvX187CisgICAgICAgICAgICBkZXB0aCsrOworICAgICAgICB9CisgICAgfQorfQor
CisKK3ZhciBuZXdQcm90b3MgPSBbCisgICAgdW5kZWZpbmVkLAorICAgIG51bGwsCisgICAgdHJ1
ZSwKKyAgICBmYWxzZSwKKyAgICAwLAorICAgIDExLAorICAgIDEyMy40NTYsCisgICAgImRvaCIs
CisgICAgU3ltYm9sKCJkb2giKSwKKyAgICB7fSwKKyAgICBvcmlnT2JqZWN0UHJvdG8sCisgICAg
b3JpZ0dsb2JhbFByb3RvLAorICAgIG5ld09iamVjdFByb3RvCitdOworCit2YXIgcHJvdG9TZXR0
ZXJzID0gWworICAgIG9iamVjdFNldFByb3RvdHlwZU9mLAorICAgIHNldFVuZGVyc2NvcmVQcm90
bywKKyAgICByZWZsZWN0U2V0UHJvdG90eXBlT2YsCitdOworCisKKy8vPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CisvLyBUZXN0IGRyaXZlciBmdW5jdGlvbnM6CisKK2Z1bmN0aW9uIHRlc3Qo
dGVzdElELCB0YXJnZXRWYWx1ZSwgbmV3UHJvdG8sIHNldHRlckFjdGlvbiwgZXhwZWN0ZWQpIHsK
KyAgICBsZXQgZXhjZXB0aW9uID0gdW5kZWZpbmVkOworICAgIGxldCByZXN1bHQgPSB1bmRlZmlu
ZWQ7CisgICAgdHJ5IHsKKyAgICAgICAgcmVzdWx0ID0gc2V0dGVyQWN0aW9uKHRhcmdldFZhbHVl
LCBuZXdQcm90byk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBleGNlcHRpb24gPSBlOwor
ICAgIH0KKyAgICBzaG91bGRUaHJvdyh0ZXN0SUQsICJleGNlcHRpb24iLCBleGNlcHRpb24sIGV4
cGVjdGVkLmV4Y2VwdGlvbik7CisgICAgaWYgKCFleHBlY3RlZC5leGNlcHRpb24pIHsKKyAgICAg
ICAgc2hvdWxkRXF1YWwodGVzdElELCAiX19wcm90b19fIiwgdGFyZ2V0VmFsdWUuX19wcm90b19f
LCBleHBlY3RlZC5wcm90byk7CisgICAgICAgIHNob3VsZEVxdWFsKHRlc3RJRCwgInJlc3VsdCIs
IHJlc3VsdCwgZXhwZWN0ZWQucmVzdWx0KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3Rz
KCkgeworICAgIGxldCB0ZXN0SW5kZXggPSAwOworICAgIGZvciAocHJvdG9TZXR0ZXIgb2YgcHJv
dG9TZXR0ZXJzKSB7CisgICAgICAgIGZvciAodGFyZ2V0IG9mIHRhcmdldHMpIHsKKyAgICAgICAg
ICAgIGZvciAobmV3UHJvdG8gb2YgbmV3UHJvdG9zKSB7CisgICAgICAgICAgICAgICAgbGV0IGN1
cnJlbnRUZXN0SW5kZXggPSB0ZXN0SW5kZXgrKzsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG1heEl0ZXJhdGlvbnM7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBsZXQg
ZXhwZWN0ZWQgPSBwcm90b1NldHRlcih0YXJnZXQsIG5ld1Byb3RvKTsKKyAgICAgICAgICAgICAg
ICAgICAgbGV0IHRhcmdldFZhbHVlID0gZXhwZWN0ZWQudGFyZ2V0VmFsdWU7CisKKyAgICAgICAg
ICAgICAgICAgICAgbGV0IHRlc3RJRCA9IG1ha2VUZXN0SUQoY3VycmVudFRlc3RJbmRleCwgaSwg
dGFyZ2V0Lm5hbWUsIG5ld1Byb3RvLCBwcm90b1NldHRlciwgZXhwZWN0ZWQpOworICAgICAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZSAmJiBpID09IDApCisgICAgICAgICAgICAgICAgICAgICAg
ICBwcmludCgidGVzdDogIiArIHRlc3RJRC5zaWduYXR1cmUpOworCisgICAgICAgICAgICAgICAg
ICAgIHRlc3QodGVzdElELCB0YXJnZXRWYWx1ZSwgbmV3UHJvdG8sIHByb3RvU2V0dGVyLmFjdGlv
biwgZXhwZWN0ZWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKworcnVuVGVzdHMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296327</attachid>
            <date>2016-12-06 14:56:24 -0800</date>
            <delta_ts>2016-12-06 17:01:04 -0800</delta_ts>
            <desc>patch for EWS testing.  Not ready for review.</desc>
            <filename>bug-165401.patch</filename>
            <type>text/plain</type>
            <size>5182</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3Jw
aGljQWNjZXNzLmNwcAkocmV2aXNpb24gMjA5NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODg1LDYg
Kzg4NSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICBj
YXNlIEN1c3RvbUFjY2Vzc29yR2V0dGVyOgogICAgIGNhc2UgQ3VzdG9tVmFsdWVTZXR0ZXI6CiAg
ICAgY2FzZSBDdXN0b21BY2Nlc3NvclNldHRlcjogeworICAgICAgICBHUFJSZWcgdmFsdWVSZWdz
UGF5bG9hZEdQUiA9IHZhbHVlUmVncy5wYXlsb2FkR1BSKCk7CisgICAgICAgIAogICAgICAgICBp
ZiAoaXNWYWxpZE9mZnNldChtX29mZnNldCkpIHsKICAgICAgICAgICAgIFN0cnVjdHVyZSogY3Vy
clN0cnVjdHVyZTsKICAgICAgICAgICAgIGlmIChtX2NvbmRpdGlvblNldC5pc0VtcHR5KCkpCkBA
IC04OTYsNyArODk4LDE2IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dl
bmUKIAogICAgICAgICBHUFJSZWcgYmFzZUZvckdldEdQUjsKICAgICAgICAgaWYgKHZpYVByb3h5
KCkpIHsKLSAgICAgICAgICAgIGJhc2VGb3JHZXRHUFIgPSB2YWx1ZVJlZ3MucGF5bG9hZEdQUigp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV90eXBlICE9IEN1c3RvbVZhbHVlU2V0dGVy
IHx8IG1fdHlwZSAhPSBDdXN0b21BY2Nlc3NvclNldHRlcik7IC8vIG1sYW0gQmVjYXVzZSBvdGhl
cndpc2UsIHdlJ2xsIGJlIHRyYXNoaW5nIHZhbHVlUmVnc1BheWxvYWRHUFIuCisgICAgICAgICAg
ICBpZiAobV90eXBlID09IEdldHRlciB8fCBtX3R5cGUgPT0gU2V0dGVyKQorICAgICAgICAgICAg
ICAgIGJhc2VGb3JHZXRHUFIgPSBzY3JhdGNoR1BSOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGJhc2VGb3JHZXRHUFIgPSB2YWx1ZVJlZ3NQYXlsb2FkR1BSOworCisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVCgobV90eXBlICE9IEdldHRlciAmJiBtX3R5cGUgIT0gU2V0dGVy
KSB8fCBiYXNlRm9yR2V0R1BSICE9IGJhc2VHUFIpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQobV90eXBlICE9IFNldHRlciB8fCBiYXNlRm9yR2V0R1BSICE9IHZhbHVlUmVnc1BheWxvYWRH
UFIpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoKG1fdHlwZSAhPSBDdXN0b21WYWx1ZVNl
dHRlciB8fCBtX3R5cGUgIT0gQ3VzdG9tQWNjZXNzb3JTZXR0ZXIpIHx8IGJhc2VGb3JHZXRHUFIg
IT0gdmFsdWVSZWdzUGF5bG9hZEdQUik7CisKICAgICAgICAgICAgIGppdC5sb2FkUHRyKAogICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlR1BSLCBKU1Byb3h5Ojp0YXJn
ZXRPZmZzZXQoKSksCiAgICAgICAgICAgICAgICAgYmFzZUZvckdldEdQUik7CkBAIC05MTUsMTAg
KzkyNiwxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lCiAgICAg
ICAgIEdQUlJlZyBsb2FkZWRWYWx1ZUdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIGlmICht
X3R5cGUgIT0gQ3VzdG9tVmFsdWVHZXR0ZXIgJiYgbV90eXBlICE9IEN1c3RvbUFjY2Vzc29yR2V0
dGVyICYmIG1fdHlwZSAhPSBDdXN0b21WYWx1ZVNldHRlciAmJiBtX3R5cGUgIT0gQ3VzdG9tQWNj
ZXNzb3JTZXR0ZXIpIHsKICAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gTG9hZCB8fCBtX3R5cGUg
PT0gR2V0R2V0dGVyKQotICAgICAgICAgICAgICAgIGxvYWRlZFZhbHVlR1BSID0gdmFsdWVSZWdz
LnBheWxvYWRHUFIoKTsKKyAgICAgICAgICAgICAgICBsb2FkZWRWYWx1ZUdQUiA9IHZhbHVlUmVn
c1BheWxvYWRHUFI7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbG9hZGVkVmFs
dWVHUFIgPSBzY3JhdGNoR1BSOwogCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgobV90eXBl
ICE9IEdldHRlciAmJiBtX3R5cGUgIT0gU2V0dGVyKSB8fCBsb2FkZWRWYWx1ZUdQUiAhPSBiYXNl
R1BSKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fdHlwZSAhPSBTZXR0ZXIgfHwgbG9h
ZGVkVmFsdWVHUFIgIT0gdmFsdWVSZWdzUGF5bG9hZEdQUik7CisKICAgICAgICAgICAgIEdQUlJl
ZyBzdG9yYWdlR1BSOwogICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KG1fb2Zmc2V0KSkK
ICAgICAgICAgICAgICAgICBzdG9yYWdlR1BSID0gYmFzZUZvckFjY2Vzc0dQUjsKQEAgLTk4Niw2
ICsxMDAwLDkgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQogICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVy
PihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSkpOwogCiAgICAgICAgIGlmIChtX3R5cGUg
PT0gR2V0dGVyIHx8IG1fdHlwZSA9PSBTZXR0ZXIpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGJhc2VHUFIgIT0gbG9hZGVkVmFsdWVHUFIpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQobV90eXBlICE9IFNldHRlciB8fCAoYmFzZUdQUiAhPSB2YWx1ZVJlZ3NQYXlsb2FkR1BSICYm
IGxvYWRlZFZhbHVlR1BSICE9IHZhbHVlUmVnc1BheWxvYWRHUFIpKTsKKwogICAgICAgICAgICAg
Ly8gQ3JlYXRlIGEgSlMgY2FsbCB1c2luZyBhIEpTIGNhbGwgaW5saW5lIGNhY2hlLiBBc3N1bWUg
dGhhdDoKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyAtIFNQIGlzIGFsaWduZWQgYW5k
IHJlcHJlc2VudHMgdGhlIGV4dGVudCBvZiB0aGUgY2FsbGluZyBjb21waWxlcidzIHN0YWNrIHVz
YWdlLgpAQCAtMTA2NCw3ICsxMDgxLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwo
QWNjZXNzR2VuZQogICAgICAgICAgICAgICAgIGxvYWRlZFZhbHVlR1BSLCBjYWxsZWVGcmFtZS53
aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHNpemVvZihSZWdpc3RlcikpKTsKIAog
ICAgICAgICAgICAgaml0LnN0b3JlQ2VsbCgKLSAgICAgICAgICAgICAgICBiYXNlRm9yR2V0R1BS
LAorICAgICAgICAgICAgICAgIGJhc2VHUFIsCiAgICAgICAgICAgICAgICAgY2FsbGVlRnJhbWUu
d2l0aE9mZnNldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwKS5vZmZzZXQoKSAqIHNpemVv
ZihSZWdpc3RlcikpKTsKIAogICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBTZXR0ZXIpIHsKQEAg
LTExMTgsNiArMTEzNSw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dl
bmUKICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0
dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKSk7CiAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3R5cGUgPT0g
Q3VzdG9tVmFsdWVHZXR0ZXIgfHwgbV90eXBlID09IEN1c3RvbUFjY2Vzc29yR2V0dGVyIHx8IG1f
dHlwZSA9PSBDdXN0b21WYWx1ZVNldHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tQWNjZXNzb3JTZXR0
ZXIpOworCiAgICAgICAgICAgICAvLyBOZWVkIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIEMgY2FsbCBz
byBhbnkgb2Ygb3VyIHN0YWNrIHNwaWxsYWdlIGlzbid0IG92ZXJ3cml0dGVuLiBJdCdzCiAgICAg
ICAgICAgICAvLyBoYXJkIHRvIHRyYWNrIGlmIHNvbWVvbmUgZGlkIHNwaWxsYWdlIG9yIG5vdCwg
c28gd2UganVzdCBhc3N1bWUgdGhhdCB3ZSBhbHdheXMgbmVlZAogICAgICAgICAgICAgLy8gdG8g
bWFrZSBzb21lIHNwYWNlIGhlcmUuCkluZGV4OiBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDIw
OTQyNCkKKysrIExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAg
LTY0MCw4ICs2NDAsNiBAQCB3ZWJraXQub3JnL2IvMTQyOTM3IGlldGVzdGNlbnRlci9KYXZhc2Ny
CiAKIFsgRGVidWcgXSBqcy9yZWdyZXNzLTE0MTA5OC5odG1sIFsgU2xvdyBdCiAKLXdlYmtpdC5v
cmcvYi8xNjU0MDEganMvcHJvdG90eXBlLWFzc2lnbm1lbnQuaHRtbCBbIFNraXAgXQotCiAjIElE
QlZlcnNpb25DaGFuZ2VFdmVudCB0ZXN0cyBuZWVkIHRvIGJlIHJld3JpdHRlbiB0byB1c2UgZXZl
bnQgY29uc3RydWN0b3JzIGluc3RlYWQgb2YgY3JlYXRlRXZlbnQsCiAjIGFmdGVyIHdlIGltcGxl
bWVudCB0aGUgSURCVmVyc2lvbkNoYW5nZUV2ZW50IGNvbnN0cnVjdG9yLgogd2Via2l0Lm9yZy9i
LzE0NTM5MCBzdG9yYWdlL2luZGV4ZWRkYi9ldmVudHMuaHRtbCBbIEZhaWx1cmUgXQpJbmRleDog
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3Byb3RvdHlwZS1hc3NpZ25tZW50LmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9wcm90b3R5cGUtYXNzaWdubWVu
dC5qcwkocmV2aXNpb24gMjA5NDI0KQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3By
b3RvdHlwZS1hc3NpZ25tZW50LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNCBAQAotLy9A
IHJ1bkZUTE5vQ0pJVCgiLS11c2VKSVQ9ZmFsc2UiKQotLy8gRklYTUU6IFJlbW92ZSB0aGUgIi0t
dXNlSklUPWZhbHNlIiBvcHRpb24gd2hlbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY1NDAxIGlzIGZpeGVkLgorLy9AIHJ1bkZUTE5vQ0pJVAogCiAvLyBUaGlzIHRl
c3Qgc3VpdGUgY29tcGFyZXMgdGhlIGJlaGF2aW9yIG9mIHNldHRpbmcgdGhlIHByb3RvdHlwZSBv
biB2YXJpb3VzIHZhbHVlcwogLy8gKHVzaW5nIE9iamVjdC5zZXRQcm90b3R5cGVPZigpLCBvYmou
X19wcm90b19fIGFzc2lnbm1lbnQsIGFuZCBSZWZsZWN0LnNldFByb3RvdHlwZU9mKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296353</attachid>
            <date>2016-12-06 17:01:04 -0800</date>
            <delta_ts>2016-12-06 17:30:54 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-165401.patch</filename>
            <type>text/plain</type>
            <size>6772</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5NDM2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDE2LTEyLTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBH
ZXRCeUlEIElDIGlzIHdyb25nbHkgdW53cmFwcGluZyB0aGUgZ2xvYmFsIHByb3h5IHRoaXMgdmFs
dWUgZm9yIGdldHRlci9zZXR0ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY1NDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgR2V0dGVycy9zZXR0ZXJzIGFyZSBleHBlY3RpbmcgdGhlIHVud3JhcHBl
ZCBnbG9iYWwgcHJveHkgb2JqZWN0LiAgVGhpcyBpcworICAgICAgICBjb25zaXN0ZW50IHdpdGgg
aG93IHRoZSBMTElOVCBhbmQgcnVudGltZSBjb2RlIGJlaGF2ZXMuICBUaGUgSUMgY29kZSBzaG91
bGQKKyAgICAgICAgYmVoYXZlIHRoZSBzYW1lIHdheS4KKworICAgICAgICBBbHNvIGFkZGVkIHNv
bWUgQVNTRVJUcyB0byBkb2N1bWVudCBpbnZhcmlhbnRzIGluIHRoZSBjb2RlLCBhbmQgaGVscCBk
ZXRlY3QKKyAgICAgICAgYnVncyBzb29uZXIgaWYgdGhlIGNvZGUgZ2V0cyBjaGFuZ2VkIGluIGEg
d2F5IHRoYXQgYnJlYWtzIHRob3NlIGludmFyaWFudHMgaW4KKyAgICAgICAgdGhlIGZ1dHVyZS4K
KworICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcDoKKyAgICAgICAgKEpT
Qzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToKKwogMjAxNi0xMi0wNiAgQWxleGV5IFByb3Nr
dXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBDb3JyZWN0IFNES1JPT1QgdmFsdWVz
IGluIHhjY29uZmlnIGZpbGVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAJKHJldmlzaW9uIDIwOTQzNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg4NSw2ICs4ODUsOCBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1w
bChBY2Nlc3NHZW5lCiAgICAgY2FzZSBDdXN0b21BY2Nlc3NvckdldHRlcjoKICAgICBjYXNlIEN1
c3RvbVZhbHVlU2V0dGVyOgogICAgIGNhc2UgQ3VzdG9tQWNjZXNzb3JTZXR0ZXI6IHsKKyAgICAg
ICAgR1BSUmVnIHZhbHVlUmVnc1BheWxvYWRHUFIgPSB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpOwor
ICAgICAgICAKICAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQobV9vZmZzZXQpKSB7CiAgICAgICAg
ICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmU7CiAgICAgICAgICAgICBpZiAobV9jb25kaXRp
b25TZXQuaXNFbXB0eSgpKQpAQCAtODk2LDcgKzg5OCwxNSBAQCB2b2lkIEFjY2Vzc0Nhc2U6Omdl
bmVyYXRlSW1wbChBY2Nlc3NHZW5lCiAKICAgICAgICAgR1BSUmVnIGJhc2VGb3JHZXRHUFI7CiAg
ICAgICAgIGlmICh2aWFQcm94eSgpKSB7Ci0gICAgICAgICAgICBiYXNlRm9yR2V0R1BSID0gdmFs
dWVSZWdzLnBheWxvYWRHUFIoKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgIT0gQ3VzdG9t
VmFsdWVTZXR0ZXIgfHwgbV90eXBlICE9IEN1c3RvbUFjY2Vzc29yU2V0dGVyKTsgLy8gQmVjYXVz
ZSBzZXR0ZXJzIG5lZWQgdG8gbm90IHRyYXNoIHZhbHVlUmVnc1BheWxvYWRHUFIuCisgICAgICAg
ICAgICBpZiAobV90eXBlID09IEdldHRlciB8fCBtX3R5cGUgPT0gU2V0dGVyKQorICAgICAgICAg
ICAgICAgIGJhc2VGb3JHZXRHUFIgPSBzY3JhdGNoR1BSOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGJhc2VGb3JHZXRHUFIgPSB2YWx1ZVJlZ3NQYXlsb2FkR1BSOworCisgICAg
ICAgICAgICBBU1NFUlQoKG1fdHlwZSAhPSBHZXR0ZXIgJiYgbV90eXBlICE9IFNldHRlcikgfHwg
YmFzZUZvckdldEdQUiAhPSBiYXNlR1BSKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgIT0g
U2V0dGVyIHx8IGJhc2VGb3JHZXRHUFIgIT0gdmFsdWVSZWdzUGF5bG9hZEdQUik7CisKICAgICAg
ICAgICAgIGppdC5sb2FkUHRyKAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVz
cyhiYXNlR1BSLCBKU1Byb3h5Ojp0YXJnZXRPZmZzZXQoKSksCiAgICAgICAgICAgICAgICAgYmFz
ZUZvckdldEdQUik7CkBAIC05MTUsMTAgKzkyNSwxMyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVy
YXRlSW1wbChBY2Nlc3NHZW5lCiAgICAgICAgIEdQUlJlZyBsb2FkZWRWYWx1ZUdQUiA9IEludmFs
aWRHUFJSZWc7CiAgICAgICAgIGlmIChtX3R5cGUgIT0gQ3VzdG9tVmFsdWVHZXR0ZXIgJiYgbV90
eXBlICE9IEN1c3RvbUFjY2Vzc29yR2V0dGVyICYmIG1fdHlwZSAhPSBDdXN0b21WYWx1ZVNldHRl
ciAmJiBtX3R5cGUgIT0gQ3VzdG9tQWNjZXNzb3JTZXR0ZXIpIHsKICAgICAgICAgICAgIGlmICht
X3R5cGUgPT0gTG9hZCB8fCBtX3R5cGUgPT0gR2V0R2V0dGVyKQotICAgICAgICAgICAgICAgIGxv
YWRlZFZhbHVlR1BSID0gdmFsdWVSZWdzLnBheWxvYWRHUFIoKTsKKyAgICAgICAgICAgICAgICBs
b2FkZWRWYWx1ZUdQUiA9IHZhbHVlUmVnc1BheWxvYWRHUFI7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgbG9hZGVkVmFsdWVHUFIgPSBzY3JhdGNoR1BSOwogCisgICAgICAgICAg
ICBBU1NFUlQoKG1fdHlwZSAhPSBHZXR0ZXIgJiYgbV90eXBlICE9IFNldHRlcikgfHwgbG9hZGVk
VmFsdWVHUFIgIT0gYmFzZUdQUik7CisgICAgICAgICAgICBBU1NFUlQobV90eXBlICE9IFNldHRl
ciB8fCBsb2FkZWRWYWx1ZUdQUiAhPSB2YWx1ZVJlZ3NQYXlsb2FkR1BSKTsKKwogICAgICAgICAg
ICAgR1BSUmVnIHN0b3JhZ2VHUFI7CiAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQobV9v
ZmZzZXQpKQogICAgICAgICAgICAgICAgIHN0b3JhZ2VHUFIgPSBiYXNlRm9yQWNjZXNzR1BSOwpA
QCAtOTg2LDYgKzk5OSw5IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dl
bmUKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxS
ZWdpc3Rlcj4oQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKIAogICAgICAgICBpZiAo
bV90eXBlID09IEdldHRlciB8fCBtX3R5cGUgPT0gU2V0dGVyKSB7CisgICAgICAgICAgICBBU1NF
UlQoYmFzZUdQUiAhPSBsb2FkZWRWYWx1ZUdQUik7CisgICAgICAgICAgICBBU1NFUlQobV90eXBl
ICE9IFNldHRlciB8fCAoYmFzZUdQUiAhPSB2YWx1ZVJlZ3NQYXlsb2FkR1BSICYmIGxvYWRlZFZh
bHVlR1BSICE9IHZhbHVlUmVnc1BheWxvYWRHUFIpKTsKKwogICAgICAgICAgICAgLy8gQ3JlYXRl
IGEgSlMgY2FsbCB1c2luZyBhIEpTIGNhbGwgaW5saW5lIGNhY2hlLiBBc3N1bWUgdGhhdDoKICAg
ICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyAtIFNQIGlzIGFsaWduZWQgYW5kIHJlcHJlc2Vu
dHMgdGhlIGV4dGVudCBvZiB0aGUgY2FsbGluZyBjb21waWxlcidzIHN0YWNrIHVzYWdlLgpAQCAt
MTA2NCw3ICsxMDgwLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2Vu
ZQogICAgICAgICAgICAgICAgIGxvYWRlZFZhbHVlR1BSLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0
KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHNpemVvZihSZWdpc3RlcikpKTsKIAogICAgICAgICAg
ICAgaml0LnN0b3JlQ2VsbCgKLSAgICAgICAgICAgICAgICBiYXNlRm9yR2V0R1BSLAorICAgICAg
ICAgICAgICAgIGJhc2VHUFIsCiAgICAgICAgICAgICAgICAgY2FsbGVlRnJhbWUud2l0aE9mZnNl
dCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwKS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rl
cikpKTsKIAogICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBTZXR0ZXIpIHsKQEAgLTExMTgsNiAr
MTEzNCw4IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmUKICAgICAg
ICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKHZtLmdldENUSVN0dWIobGlua0Nh
bGxUaHVua0dlbmVyYXRvcikuY29kZSgpKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQobV90eXBlID09IEN1c3RvbVZhbHVlR2V0dGVy
IHx8IG1fdHlwZSA9PSBDdXN0b21BY2Nlc3NvckdldHRlciB8fCBtX3R5cGUgPT0gQ3VzdG9tVmFs
dWVTZXR0ZXIgfHwgbV90eXBlID09IEN1c3RvbUFjY2Vzc29yU2V0dGVyKTsKKwogICAgICAgICAg
ICAgLy8gTmVlZCB0byBtYWtlIHJvb20gZm9yIHRoZSBDIGNhbGwgc28gYW55IG9mIG91ciBzdGFj
ayBzcGlsbGFnZSBpc24ndCBvdmVyd3JpdHRlbi4gSXQncwogICAgICAgICAgICAgLy8gaGFyZCB0
byB0cmFjayBpZiBzb21lb25lIGRpZCBzcGlsbGFnZSBvciBub3QsIHNvIHdlIGp1c3QgYXNzdW1l
IHRoYXQgd2UgYWx3YXlzIG5lZWQKICAgICAgICAgICAgIC8vIHRvIG1ha2Ugc29tZSBzcGFjZSBo
ZXJlLgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5NDM0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMTItMDYgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEdldEJ5SUQgSUMgaXMgd3JvbmdseSB1bndy
YXBwaW5nIHRoZSBnbG9iYWwgcHJveHkgdGhpcyB2YWx1ZSBmb3IgZ2V0dGVyL3NldHRlcnMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU0MDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXQgdGhlIHRl
c3QgbG9vc2Ugbm93IHRoYXQgdGhpcyBidWcgaXMgZml4ZWQuCisKKyAgICAgICAgKiBUZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9wcm90b3R5cGUtYXNzaWdubWVu
dC5qczoKKwogMjAxNi0xMi0wNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgog
CiAgICAgICAgIFtNb2Rlcm4gTWVkaWEgQ29udHJvbHNdIE1lZGlhIGNvbnRyb2xzIHVzZSB0aGUg
ZnVsbHNjcmVlbiBsYXlvdXQgYWZ0ZXIgZ29pbmcgZnJvbSBpbmxpbmUgdG8gZnVsbHNjcmVlbiB0
byBQaVAgdG8gaW5saW5lCkluZGV4OiBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDIwOTQzNCkK
KysrIExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTY0MCw4
ICs2NDAsNiBAQCB3ZWJraXQub3JnL2IvMTQyOTM3IGlldGVzdGNlbnRlci9KYXZhc2NyCiAKIFsg
RGVidWcgXSBqcy9yZWdyZXNzLTE0MTA5OC5odG1sIFsgU2xvdyBdCiAKLXdlYmtpdC5vcmcvYi8x
NjU0MDEganMvcHJvdG90eXBlLWFzc2lnbm1lbnQuaHRtbCBbIFNraXAgXQotCiAjIElEQlZlcnNp
b25DaGFuZ2VFdmVudCB0ZXN0cyBuZWVkIHRvIGJlIHJld3JpdHRlbiB0byB1c2UgZXZlbnQgY29u
c3RydWN0b3JzIGluc3RlYWQgb2YgY3JlYXRlRXZlbnQsCiAjIGFmdGVyIHdlIGltcGxlbWVudCB0
aGUgSURCVmVyc2lvbkNoYW5nZUV2ZW50IGNvbnN0cnVjdG9yLgogd2Via2l0Lm9yZy9iLzE0NTM5
MCBzdG9yYWdlL2luZGV4ZWRkYi9ldmVudHMuaHRtbCBbIEZhaWx1cmUgXQpJbmRleDogTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL3Byb3RvdHlwZS1hc3NpZ25tZW50LmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9wcm90b3R5cGUtYXNzaWdubWVudC5qcwko
cmV2aXNpb24gMjA5NDM0KQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3Byb3RvdHlw
ZS1hc3NpZ25tZW50LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNCBAQAotLy9AIHJ1bkZU
TE5vQ0pJVCgiLS11c2VKSVQ9ZmFsc2UiKQotLy8gRklYTUU6IFJlbW92ZSB0aGUgIi0tdXNlSklU
PWZhbHNlIiBvcHRpb24gd2hlbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY1NDAxIGlzIGZpeGVkLgorLy9AIHJ1bkZUTE5vQ0pJVAogCiAvLyBUaGlzIHRlc3Qgc3Vp
dGUgY29tcGFyZXMgdGhlIGJlaGF2aW9yIG9mIHNldHRpbmcgdGhlIHByb3RvdHlwZSBvbiB2YXJp
b3VzIHZhbHVlcwogLy8gKHVzaW5nIE9iamVjdC5zZXRQcm90b3R5cGVPZigpLCBvYmouX19wcm90
b19fIGFzc2lnbm1lbnQsIGFuZCBSZWZsZWN0LnNldFByb3RvdHlwZU9mKCkpCg==
</data>
<flag name="review"
          id="318806"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>