<?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>214297</bug_id>
          
          <creation_ts>2020-07-14 01:46:13 -0700</creation_ts>
          <short_desc>[JSC] Add support for static private class fields</short_desc>
          <delta_ts>2020-11-19 12:46:14 -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 Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>194095</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Xan Lopez">xan.lopez</reporter>
          <assigned_to name="Xan Lopez">xan.lopez</assigned_to>
          <cc>chi187</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1671298</commentid>
    <comment_count>0</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-07-14 01:46:13 -0700</bug_when>
    <thetext>Once bug #194095 lands this is very easy to support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671300</commentid>
    <comment_count>1</comment_count>
      <attachid>404216</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-07-14 01:51:02 -0700</bug_when>
    <thetext>Created attachment 404216
Add support for static private fields

v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673398</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-21 01:47:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/65872465&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691213</commentid>
    <comment_count>3</comment_count>
      <attachid>404216</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-23 12:05:44 -0700</bug_when>
    <thetext>Comment on attachment 404216
Add support for static private fields

Can you rebase and fix EWS failures?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691398</commentid>
    <comment_count>4</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-09-23 23:21:57 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #3)
&gt; Comment on attachment 404216 [details]
&gt; Add support for static private fields
&gt; 
&gt; Can you rebase and fix EWS failures?

Hey! Maybe it was not totally clear from the first comment, but this patch needs the static public fields patch in bug #194095 to apply, so can&apos;t really fix EWS until that one lands. Just uploaded it for reference, that&apos;s why it was not flagged as r?. Will get on it when possible for sure!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708532</commentid>
    <comment_count>5</comment_count>
      <attachid>414430</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-11-18 01:47:09 -0800</bug_when>
    <thetext>Created attachment 414430
Add support for static private fields, v2

v2,
rebase, add specific option for static private fields</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708552</commentid>
    <comment_count>6</comment_count>
      <attachid>414430</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-11-18 03:03:45 -0800</bug_when>
    <thetext>Comment on attachment 414430
Add support for static private fields, v2

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

&gt; JSTests/stress/class-fields-static-private-harmony.js:344
&gt; +*/

I think it&apos;s fine to remove it or maybe include a helper function to check `SymbolIsPrivate`.

&gt; JSTests/stress/class-fields-static-private-harmony.js:390
&gt; +}

Could we include a test that checks if we throw if we try to redefine a private field as static and vice versa?

I also miss a test that verifies if instance of a class can&apos;t access static fields. Do you mind adding them if they are missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708973</commentid>
    <comment_count>7</comment_count>
      <attachid>414430</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-18 20:58:03 -0800</bug_when>
    <thetext>Comment on attachment 414430
Add support for static private fields, v2

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

&gt;&gt; JSTests/stress/class-fields-static-private-harmony.js:344
&gt;&gt; +*/
&gt; 
&gt; I think it&apos;s fine to remove it or maybe include a helper function to check `SymbolIsPrivate`.

Let&apos;s add $vm.isPrivateSymbol and use it here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709029</commentid>
    <comment_count>8</comment_count>
      <attachid>414562</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-11-19 03:42:20 -0800</bug_when>
    <thetext>Created attachment 414562
Add support for static private fields, v3

v3,
support the vm.isPrivateSymbol tests
add a couple tests suggested by Caio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709039</commentid>
    <comment_count>9</comment_count>
      <attachid>414562</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-11-19 04:47:06 -0800</bug_when>
    <thetext>Comment on attachment 414562
Add support for static private fields, v3

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

&gt; Source/JavaScriptCore/tools/JSDollarVM.cpp:3385
&gt; +    Symbol* symbol = asSymbol(callFrame-&gt;argument(0));

&quot;asSymbol&quot; don&apos;t work if `value.asCell()-&gt;isSymbol()` is false. This is going to break whenever we call `isPrivateSymbol(x)` and x is not a Symbol. We should just call  `asSymbol` when we are sure that JSValue is a Symbol. I think what you meant to use here is:

```
...
if (!callFrame-&gt;argument(0).isSymbol())
...
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709049</commentid>
    <comment_count>10</comment_count>
      <attachid>414565</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-11-19 05:06:20 -0800</bug_when>
    <thetext>Created attachment 414565
Add support for static private fields, v4

v4,
be more careful with asSymbol() in $vm.isPrivateSymbol()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709054</commentid>
    <comment_count>11</comment_count>
      <attachid>414568</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2020-11-19 05:20:56 -0800</bug_when>
    <thetext>Created attachment 414568
Add support for static private fields, v4

v4bis,
upload the right patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709055</commentid>
    <comment_count>12</comment_count>
      <attachid>414568</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-11-19 05:30:42 -0800</bug_when>
    <thetext>Comment on attachment 414568
Add support for static private fields, v4

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709221</commentid>
    <comment_count>13</comment_count>
      <attachid>414568</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-19 12:23:37 -0800</bug_when>
    <thetext>Comment on attachment 414568
Add support for static private fields, v4

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709230</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-19 12:46:12 -0800</bug_when>
    <thetext>Committed r270043: &lt;https://trac.webkit.org/changeset/270043&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 414568.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404216</attachid>
            <date>2020-07-14 01:51:02 -0700</date>
            <delta_ts>2020-11-18 01:47:09 -0800</delta_ts>
            <desc>Add support for static private fields</desc>
            <filename>0001-JSC-Add-support-for-static-private-class-fields.patch</filename>
            <type>text/plain</type>
            <size>11895</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBiZDIyNzFmNjgxOTRmMGM3MzY1ZTI4ODU5NjY0ZjQwMGJkNTczZWU0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogVHVlLCAxNCBKdWwgMjAyMCAxMDo0OTowOCArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIFtKU0NdIEFkZCBzdXBwb3J0IGZvciBzdGF0aWMgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQyOTcKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKSlNUZXN0czoKCkNvcHkgdGVzdHMgZnJvbSBWOCBhcyB1c3Vh
bCBhbmQgZW5hYmxlIHRlc3QyNjIgdGVzdHMuCgoqIHN0cmVzcy9jbGFzcy1maWVsZHMtc3RhdGlj
LXByaXZhdGUtaGFybW9ueS5qczogQWRkZWQuCiogdGVzdDI2Mi9jb25maWcueWFtbDoKClNvdXJj
ZS9KYXZhU2NyaXB0Q29yZToKClByaXZhdGUgc3RhdGljIGZpZWxkcyBhcmUgbm90IGFuIGVycm9y
IGFueW1vcmUuCgoqIHBhcnNlci9QYXJzZXIuY3BwOgooSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VDbGFzcyk6Ci0tLQogSlNUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgIDEyICsKIC4uLi9jbGFzcy1maWVsZHMtc3RhdGljLXByaXZhdGUtaGFybW9ueS5q
cyAgICB8IDM5MCArKysrKysrKysrKysrKysrKysKIEpTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFt
bCAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgIHwgIDEyICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcCAgICAgICB8ICAgMSAtCiA1IGZpbGVzIGNoYW5nZWQsIDQxNSBpbnNlcnRpb25z
KCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvc3RyZXNzL2Ns
YXNzLWZpZWxkcy1zdGF0aWMtcHJpdmF0ZS1oYXJtb255LmpzCgpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBjMDFjNjlmNDA0ZDkuLjFlODk0
OGMwMzVhZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNy0xNCAgWGFuIExvcGV6ICA8eGFuQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIHN1cHBvcnQgZm9yIHN0YXRpYyBwcml2YXRlIGNs
YXNzIGZpZWxkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE0Mjk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ29weSB0ZXN0cyBmcm9tIFY4IGFzIHVzdWFsIGFuZCBlbmFibGUgdGVzdDI2MiB0ZXN0cy4K
KworICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtc3RhdGljLXByaXZhdGUtaGFybW9ueS5q
czogQWRkZWQuCisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoKKwogMjAyMC0wNi0wNSAg
WGFuIEzDs3BleiAgPHhhbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCBzdXBwb3J0
IGZvciBzdGF0aWMgcHVibGljIGNsYXNzIGZpZWxkcwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvY2xhc3MtZmllbGRzLXN0YXRpYy1wcml2YXRlLWhhcm1vbnkuanMgYi9KU1Rlc3RzL3N0cmVz
cy9jbGFzcy1maWVsZHMtc3RhdGljLXByaXZhdGUtaGFybW9ueS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA3ZjJjNjA1ZDcxZQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdGF0aWMtcHJpdmF0ZS1oYXJtb255LmpzCkBA
IC0wLDAgKzEsMzkwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmll
bGRzPTEiKQorLy9AIGRlZmF1bHROb0VhZ2VyUnVuCisKKy8vIENvcHlyaWdodCAyMDE4IHRoZSBW
OCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8v
ICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworInVzZSBz
dHJpY3QiOworCitsb2FkKCIuL2hhcm1vbnktc3VwcG9ydC5qcyIpOworCit7CisgIGNsYXNzIEMg
eworICAgIHN0YXRpYyAjYTsKKyAgICBzdGF0aWMgZ2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0K
KyAgfQorCisgIGFzc2VydEVxdWFscyh1bmRlZmluZWQsIEMuYSk7CisgIGFzc2VydEVxdWFscyh1
bmRlZmluZWQsIEMuZ2V0QSgpKTsKKworICBsZXQgYyA9IG5ldyBDOworICBhc3NlcnRFcXVhbHMo
dW5kZWZpbmVkLCBjLmEpOworfQorCit7CisgIGNsYXNzIEMgeworICAgIHN0YXRpYyAjYSA9IDE7
CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiB0aGlzLiNhOyB9CisgIH0KKworICBhc3NlcnRF
cXVhbHModW5kZWZpbmVkLCBDLmEpOworICBhc3NlcnRFcXVhbHMoMSwgQy5nZXRBKCkpOworCisg
IGxldCBjID0gbmV3IEM7CisgIGFzc2VydEVxdWFscyh1bmRlZmluZWQsIGMuYSk7Cit9CisKK3sK
KyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNhID0gMTsKKyAgICBzdGF0aWMgI2IgPSB0aGlzLiNh
OworICAgIHN0YXRpYyBnZXRCKCkgeyByZXR1cm4gdGhpcy4jYjsgfQorICB9CisKKyAgYXNzZXJ0
RXF1YWxzKDEsIEMuZ2V0QigpKTsKKworICBsZXQgYyA9IG5ldyBDOworICBhc3NlcnRFcXVhbHMo
dW5kZWZpbmVkLCBjLmdldEIpOworfQorCit7CisgIGNsYXNzIEMgeworICAgIHN0YXRpYyAjYSA9
IDE7CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiB0aGlzLiNhOyB9CisgICAgY29uc3RydWN0
b3IoKSB7CisgICAgICBhc3NlcnRUaHJvd3MoKCkgPT4gdGhpcy4jYSwgVHlwZUVycm9yKTsKKyAg
ICAgIEMuI2EgPSAyOworICAgIH0KKyAgfQorCisgIGFzc2VydEVxdWFscygxLCBDLmdldEEoKSk7
CisKKyAgbGV0IGMgPSBuZXcgQzsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IEMucHJvdG90eXBlLmdl
dEEuY2FsbChjKSk7CisgIGFzc2VydEVxdWFscygyLCBDLmdldEEoKSk7Cit9CisKK3sKKyAgY2xh
c3MgQyB7CisgICAgc3RhdGljICNhID0gdGhpczsKKyAgICBzdGF0aWMgI2IgPSAoKSA9PiB0aGlz
OworICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4gdGhpcy4jYTsgfQorICAgIHN0YXRpYyBnZXRC
KCkgeyByZXR1cm4gdGhpcy4jYjsgfQorICB9CisKKyAgYXNzZXJ0U2FtZShDLCBDLmdldEEoKSk7
CisgIGFzc2VydFNhbWUoQywgQy5nZXRCKCkoKSk7Cit9CisKK3sKKyAgY2xhc3MgQyB7CisgICAg
c3RhdGljICNhID0gdGhpczsKKyAgICBzdGF0aWMgI2IgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRo
aXM7IH07CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiB0aGlzLiNhOyB9CisgICAgc3RhdGlj
IGdldEIoKSB7IHJldHVybiB0aGlzLiNiOyB9CisgIH0KKworICBhc3NlcnRTYW1lKEMsIEMuZ2V0
QSgpKTsKKyAgYXNzZXJ0U2FtZShDLCBDLmdldEIoKS5jYWxsKEMpKTsKKyAgYXNzZXJ0U2FtZSh1
bmRlZmluZWQsIEMuZ2V0QigpKCkpOworfQorCisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGlj
ICNhID0gZnVuY3Rpb24oKSB7IHJldHVybiAxIH07CisgICAgc3RhdGljIGdldEEoKSB7cmV0dXJu
IHRoaXMuI2E7fQorICB9CisKKyAgYXNzZXJ0RXF1YWxzKCcjYScsIEMuZ2V0QSgpLm5hbWUpOwor
fQorCit7CisgIGxldCBkID0gZnVuY3Rpb24oKSB7IHJldHVybiBuZXcudGFyZ2V0OyB9CisgIGNs
YXNzIEMgeworICAgIHN0YXRpYyAjYyA9IGQ7CisgICAgc3RhdGljIGdldEMoKSB7IHJldHVybiB0
aGlzLiNjOyB9CisgIH0KKworICBhc3NlcnRFcXVhbHModW5kZWZpbmVkLCBDLmdldEMoKSgpKTsK
KyAgYXNzZXJ0U2FtZShuZXcgZCwgbmV3IChDLmdldEMoKSkpOworfQorCit7CisgIGNsYXNzIEMg
eworICAgIHN0YXRpYyAjYSA9IDE7CisgICAgc3RhdGljIGdldEEoaW5zdGFuY2UpIHsgcmV0dXJu
IGluc3RhbmNlLiNhOyB9CisgIH0KKworICBjbGFzcyBCIHsgfQorCisgIGFzc2VydEVxdWFscyh1
bmRlZmluZWQsIEMuYSk7CisgIGFzc2VydEVxdWFscygxLCBDLmdldEEoQykpOworICBhc3NlcnRU
aHJvd3MoKCkgPT4gQy5nZXRBKEIpLCBUeXBlRXJyb3IpOworfQorCit7CisgIGNsYXNzIEEgewor
ICAgIHN0YXRpYyAjYSA9IDE7CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiB0aGlzLiNhOyB9
CisgIH0KKworICBjbGFzcyBCIGV4dGVuZHMgQSB7fQorICBhc3NlcnRUaHJvd3MoKCkgPT4gQi5n
ZXRBKCksIFR5cGVFcnJvcik7Cit9CisKK3sKKyAgY2xhc3MgQSB7CisgICAgc3RhdGljICNhID0g
MTsKKyAgICBzdGF0aWMgZ2V0QSgpIHsgcmV0dXJuIEEuI2E7IH0KKyAgfQorCisgIGNsYXNzIEIg
ZXh0ZW5kcyBBIHt9CisgIGFzc2VydFNhbWUoMSwgQi5nZXRBKCkpOworfQorCit7CisgIGxldCBw
cm90b3R5cGVMb29rdXAgPSBmYWxzZTsKKyAgY2xhc3MgQSB7CisgICAgc3RhdGljIHNldCBhKHZh
bCkgeworICAgICAgcHJvdG90eXBlTG9va3VwID0gdHJ1ZTsKKyAgICB9CisKKyAgICBzdGF0aWMg
Z2V0IGEoKSB7IHJldHVybiB1bmRlZmluZWQ7IH0KKyAgfQorCisgIGNsYXNzIEMgZXh0ZW5kcyBB
IHsKKyAgICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4gdGhpcy4j
YTsgfQorICB9CisKKyAgYXNzZXJ0RXF1YWxzKDEsIEMuZ2V0QSgpKTsKKyAgYXNzZXJ0RXF1YWxz
KGZhbHNlLCBwcm90b3R5cGVMb29rdXApOworfQorCit7CisgIGNsYXNzIEEgeworICAgIHN0YXRp
YyBhID0gMTsKKyAgfQorCisgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICBzdGF0aWMgI2IgPSB0
aGlzLmE7CisgICAgc3RhdGljIGdldEIoKSB7IHJldHVybiB0aGlzLiNiOyB9CisgIH0KKworICBh
c3NlcnRFcXVhbHMoMSwgQi5nZXRCKCkpOworfQorCit7CisgIGNsYXNzIEEgeworICAgIHN0YXRp
YyAjYSA9IDE7CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiB0aGlzLiNhOyB9CisgIH0KKwor
ICBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiBzdXBlci5n
ZXRBKCk7IH0KKyAgfQorCisgIGFzc2VydFRocm93cygoKSA9PiBCLmdldEEoKSwgVHlwZUVycm9y
KTsKK30KKworeworICBjbGFzcyBBIHsKKyAgICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBn
ZXRBKCkgeyByZXR1cm4gdGhpcy4jYTt9CisgIH0KKworICBjbGFzcyBCIGV4dGVuZHMgQSB7Cisg
ICAgc3RhdGljICNhID0gMjsKKyAgICBzdGF0aWMgZ2V0X0EoKSB7IHJldHVybiB0aGlzLiNhO30K
KyAgfQorCisgIGFzc2VydEVxdWFscygxLCBBLmdldEEoKSk7CisgIGFzc2VydFRocm93cygoKSA9
PiBCLmdldEEoKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0RXF1YWxzKDIsIEIuZ2V0X0EoKSk7Cit9
CisKK3sKKyAgbGV0IGZvbyA9IHVuZGVmaW5lZDsKKyAgY2xhc3MgQSB7CisgICAgc3RhdGljICNh
ID0gKGZ1bmN0aW9uKCkgeyBmb28gPSAxOyB9KSgpOworICB9CisKKyAgYXNzZXJ0RXF1YWxzKDEs
IGZvbyk7Cit9CisKK3sKKyAgbGV0IGZvbyA9IHVuZGVmaW5lZDsKKyAgY2xhc3MgQSBleHRlbmRz
IGNsYXNzIHt9IHsKKyAgICBzdGF0aWMgI2EgPSAoZnVuY3Rpb24oKSB7IGZvbyA9IDE7IH0pKCk7
CisgIH0KKworICBhc3NlcnRFcXVhbHMoMSwgZm9vKTsKK30KKworeworICBmdW5jdGlvbiBtYWtl
Q2xhc3MoKSB7CisgICAgcmV0dXJuIGNsYXNzIHsKKyAgICAgIHN0YXRpYyAjYTsKKyAgICAgIHN0
YXRpYyBzZXRBKHZhbCkgeyB0aGlzLiNhID0gdmFsOyB9CisgICAgICBzdGF0aWMgZ2V0QSgpIHsg
cmV0dXJuIHRoaXMuI2E7IH0KKyAgICB9CisgIH0KKworICBsZXQgY2xhc3NBID0gbWFrZUNsYXNz
KCk7CisgIGxldCBjbGFzc0IgPSBtYWtlQ2xhc3MoKTsKKworICBhc3NlcnRFcXVhbHModW5kZWZp
bmVkLCBjbGFzc0EuZ2V0QSgpKTsKKyAgYXNzZXJ0RXF1YWxzKHVuZGVmaW5lZCwgY2xhc3NCLmdl
dEEoKSk7CisKKyAgY2xhc3NBLnNldEEoMyk7CisgIGFzc2VydEVxdWFscygzLCBjbGFzc0EuZ2V0
QSgpKTsKKyAgYXNzZXJ0RXF1YWxzKHVuZGVmaW5lZCwgY2xhc3NCLmdldEEoKSk7CisKKyAgY2xh
c3NCLnNldEEoNSk7CisgIGFzc2VydEVxdWFscygzLCBjbGFzc0EuZ2V0QSgpKTsKKyAgYXNzZXJ0
RXF1YWxzKDUsIGNsYXNzQi5nZXRBKCkpOworCisgIGFzc2VydFRocm93cygoKSA9PiBjbGFzc0Eu
Z2V0QS5jYWxsKGNsYXNzQiksIFR5cGVFcnJvcik7CisgIGFzc2VydFRocm93cygoKSA9PiBjbGFz
c0IuZ2V0QS5jYWxsKGNsYXNzQSksIFR5cGVFcnJvcik7Cit9CisKK3sKKyAgbGV0IHZhbHVlID0g
dW5kZWZpbmVkOworCisgIG5ldyBjbGFzcyB7CisgICAgc3RhdGljICNhID0gMTsKKyAgICBzdGF0
aWMgZ2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKworICAgIGNvbnN0cnVjdG9yKCkgeworICAg
ICAgbmV3IGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgI2EgPSAyOworICAgICAgICBjb25zdHJ1
Y3RvcigpIHsKKyAgICAgICAgICB2YWx1ZSA9IEMuI2E7CisgICAgICAgIH0KKyAgICAgIH0KKyAg
ICB9CisgIH0KKworICBhc3NlcnRFcXVhbHMoMiwgdmFsdWUpOworfQorCit7CisgIGNsYXNzIEEg
eworICAgIHN0YXRpYyAjYSA9IDE7CisgICAgc3RhdGljIGIgPSBjbGFzcyB7CisgICAgICBzdGF0
aWMgZ2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgICAgIHN0YXRpYyBnZXRfQSh2YWwpIHsg
cmV0dXJuIHZhbC4jYTsgfQorICAgIH0KKyAgfQorCisgIGFzc2VydEVxdWFscygxLCBBLmIuZ2V0
QS5jYWxsKEEpKTsKKyAgYXNzZXJ0RXF1YWxzKDEsIEEuYi5nZXRfQShBKSk7Cit9CisKK3sKKyAg
YXNzZXJ0VGhyb3dzKCgpID0+IGNsYXNzIHsgc3RhdGljIGIgPSB0aGlzLiNhOyBzdGF0aWMgI2Eg
PSAxIH0sIFR5cGVFcnJvcik7Cit9CisKKy8qCitGSVhNRTogd2UgZG9uJ3QgaGF2ZSAlU3ltYm9s
SXNQcml2YXRlKCkKK3sKKyAgbGV0IHN5bWJvbCA9IFN5bWJvbCgpOworCisgIGNsYXNzIEMgewor
ICAgIHN0YXRpYyAjYSA9IDE7CisgICAgc3RhdGljIFtzeW1ib2xdID0gMTsKKyAgICBzdGF0aWMg
Z2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgICBzdGF0aWMgc2V0QSh2YWwpIHsgdGhpcy4j
YSA9IHZhbDsgfQorICB9CisKKyAgdmFyIHAgPSBuZXcgUHJveHkoQywgeworICAgIGdldDogZnVu
Y3Rpb24odGFyZ2V0LCBuYW1lKSB7CisgICAgICBpZiAodHlwZW9mKGFyZykgPT09ICdzeW1ib2wn
KSB7CisgICAgICAgIGFzc2VydEZhbHNlKCVTeW1ib2xJc1ByaXZhdGUobmFtZSkpOworICAgICAg
fQorICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKKyAgICB9CisgIH0pOworCisgIGFzc2VydFRo
cm93cygoKSA9PiBwLmdldEEoKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IHAu
c2V0QSgxKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0RXF1YWxzKDEsIHBbc3ltYm9sXSk7Cit9Cisq
LworCit7CisgIGNsYXNzIEMgeworICAgIHN0YXRpYyAjYiA9IE9iamVjdC5mcmVlemUodGhpcyk7
CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiB0aGlzLiNhOyB9CisgICAgc3RhdGljICNhID0g
MTsKKyAgfQorCisgIGFzc2VydEVxdWFscygxLCBDLmdldEEoKSk7Cit9CisKK3sKKyAgY2xhc3Mg
QyB7CisgICAgc3RhdGljICNhID0gMTsKKyAgICBzdGF0aWMgZ2V0QSgpIHsgcmV0dXJuIGV2YWwo
J3RoaXMuI2EnKTsgfQorICB9CisKKyAgYXNzZXJ0RXF1YWxzKDEsIEMuZ2V0QSgpKTsKK30KKwor
eworICB2YXIgQzsKKyAgZXZhbCgnQyA9IGNsYXNzIHsgc3RhdGljICNhID0gMTsgc3RhdGljIGdl
dEEoKSB7IHJldHVybiBldmFsKFwndGhpcy4jYVwnKTsgfX0nKTsKKworICBhc3NlcnRFcXVhbHMo
MSwgQy5nZXRBKCkpOworfQorCit7CisgIGNsYXNzIEMgeworICAgIHN0YXRpYyAjYSA9IDE7Cisg
ICAgc3RhdGljIGdldEEoKSB7IHJldHVybiB0aGlzLiNhOyB9CisgICAgc3RhdGljIHNldEEoKSB7
IGV2YWwoJ3RoaXMuI2EgPSA0Jyk7IH0KKyAgfQorCisgIGFzc2VydEVxdWFscygxLCBDLmdldEEo
KSk7CisgIEMuc2V0QSgpOworICBhc3NlcnRFcXVhbHMoNCwgQy5nZXRBKCkpOworfQorCit7Cisg
IGNsYXNzIEMgeworICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4gZXZhbCgndGhpcy4jYScpOyB9
CisgIH0KKworICBhc3NlcnRUaHJvd3MoKCkgPT4gQy5nZXRBKCksIFN5bnRheEVycm9yKTsKK30K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2
Mi9jb25maWcueWFtbAppbmRleCBlNDVlYmFkZDQ3ODcuLjJlYmFlYjRiNTE4NCAxMDA2NDQKLS0t
IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25m
aWcueWFtbApAQCAtNiw2ICs2LDcgQEAgZmxhZ3M6CiAgIGNsYXNzLWZpZWxkcy1wdWJsaWM6IHVz
ZVB1YmxpY0NsYXNzRmllbGRzCiAgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2YXRlQ2xh
c3NGaWVsZHMKICAgY2xhc3Mtc3RhdGljLWZpZWxkcy1wdWJsaWM6IHVzZVB1YmxpY0NsYXNzRmll
bGRzCisgIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZTogdXNlUHJpdmF0ZUNsYXNzRmllbGRz
CiBza2lwOgogICBmZWF0dXJlczoKICAgICAtIFNoYXJlZEFycmF5QnVmZmVyCkBAIC0xNSw3ICsx
Niw2IEBAIHNraXA6CiAgICAgLSByZWdleHAtbG9va2JlaGluZAogCiAgICAgLSBjbGFzcy1tZXRo
b2RzLXByaXZhdGUKLSAgICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xh
c3Mtc3RhdGljLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gaG9zdC1nYy1yZXF1aXJlZAogICAgICMg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjQ3NQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKaW5kZXggZDk1NmU2NzBlNTRkLi5mMDMzODVmMjYyMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA3LTE0ICBYYW4gTG9wZXogIDx4
YW5AaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3Igc3RhdGljIHBy
aXZhdGUgY2xhc3MgZmllbGRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQyOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQcml2YXRlIHN0YXRpYyBmaWVsZHMgYXJlIG5vdCBhbiBlcnJvciBhbnltb3Jl
LgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKwogMjAyMC0wNi0wNSAgWGFuIEzDs3BleiAgPHhhbkBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCBzdXBwb3J0IGZvciBzdGF0aWMgcHVibGlj
IGNsYXNzIGZpZWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4
IDhlNWVkYWExYWQ1NS4uNTJhMGIwNDUzNDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCkBAIC0yOTcwLDcgKzI5NzAsNiBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAg
ICAgIEFTU0VSVChPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSk7CiAgICAgICAgICAg
ICBKU1Rva2VuIHRva2VuID0gbV90b2tlbjsKICAgICAgICAgICAgIGlkZW50ID0gbV90b2tlbi5t
X2RhdGEuaWRlbnQ7Ci0gICAgICAgICAgICBmYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRU
YWc6OlN0YXRpYywgIlN0YXRpYyBjbGFzcyBlbGVtZW50IGNhbm5vdCBiZSBwcml2YXRlIik7CiAg
ICAgICAgICAgICBmYWlsSWZUcnVlKGlzR2V0dGVyIHx8IGlzU2V0dGVyLCAiQ2Fubm90IHBhcnNl
IGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOwogICAgICAgICAgICAgQVNTRVJUKGlk
ZW50KTsKICAgICAgICAgICAgIG5leHQoKTsKLS0gCjIuMjYuMgoK
</data>
<flag name="review"
          id="419596"
          type_id="1"
          status="-"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414430</attachid>
            <date>2020-11-18 01:47:09 -0800</date>
            <delta_ts>2020-11-19 03:42:20 -0800</delta_ts>
            <desc>Add support for static private fields, v2</desc>
            <filename>0001-JSC-Add-support-for-static-private-class-fields.patch</filename>
            <type>text/plain</type>
            <size>14274</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBkZWZhZTE3MWRiNGRlMjEzOWQyNjc1MmYwYjMxYzljNjFkODVlZTZhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogVHVlLCAxNCBKdWwgMjAyMCAxMDo0OTowOCArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIFtKU0NdIEFkZCBzdXBwb3J0IGZvciBzdGF0aWMgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQyOTcKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKSlNUZXN0czoKCkNvcHkgVjggdGVzdHMgZm9yIHN0YXRpYyBw
cml2YXRlIGZpZWxkcyBhbmQgYWRkIHRoZSB0ZXN0MjYyIGZsYWcuCgoqIHN0cmVzcy9jbGFzcy1m
aWVsZHMtc3RhdGljLXByaXZhdGUtaGFybW9ueS5qczogQWRkZWQuCiogdGVzdDI2Mi9jb25maWcu
eWFtbDoKClNvdXJjZS9KYXZhU2NyaXB0Q29yZToKClN0YXRpYyBwcml2YXRlIGZpZWxkcyBjb21l
IHRyaXZpYWxseSBub3cgdGhhdCBib3RoIHByaXZhdGUgYW5kCnN0YXRpYyAocHVibGljKSBmaWVs
ZHMgYXJlIGltcGxlbWVudGVkLgoKKiBwYXJzZXIvUGFyc2VyLmNwcDoKKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlQ2xhc3MpOiBhY2NlcHQgc3RhdGljIHByaXZhdGUgZmllbGRzIGlmIHRo
ZSBydW50aW1lIG9wdGlvbiBhbGxvd3MgaXQuCiogcnVudGltZS9PcHRpb25zLmNwcDoKKEpTQzo6
T3B0aW9uczo6cmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucyk6IHVzZVByaXZhdGVTdGF0aWNDbGFz
c0ZpZWxkcyBkZXBlbmRzIG9uIHVzZVByaXZhdGVDbGFzc0ZpZWxkcy4KKiBydW50aW1lL09wdGlv
bnNMaXN0Lmg6IGFkZCBydW50aW1lIG9wdGlvbiB0byBlbmFibGUgc3RhdGljIHByaXZhdGUgZmll
bGRzLgotLS0KIEpTVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAxMiArCiAuLi4vY2xhc3MtZmllbGRzLXN0YXRpYy1wcml2YXRlLWhhcm1vbnkuanMgICAgfCAz
OTAgKysrKysrKysrKysrKysrKysrCiBKU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgICAgICAg
ICAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICB8ICAxNiArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAgICAgICAgfCAgIDMgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
Y3BwICAgICB8ICAgMyArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oICAgfCAgIDEgKwogNyBmaWxlcyBjaGFuZ2VkLCA0MjUgaW5zZXJ0aW9ucygrKSwgMiBkZWxl
dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMt
c3RhdGljLXByaXZhdGUtaGFybW9ueS5qcwoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTVlNGYzMjIxMzEyLi5mMjg3NzllZTljZDQgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMjAtMTEtMTggIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3Igc3RhdGljIHByaXZhdGUgY2xhc3MgZmllbGRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQyOTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3B5IFY4
IHRlc3RzIGZvciBzdGF0aWMgcHJpdmF0ZSBmaWVsZHMgYW5kIGFkZCB0aGUgdGVzdDI2MiBmbGFn
LgorCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1zdGF0aWMtcHJpdmF0ZS1oYXJtb255
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIwLTExLTE2
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSW1w
bGVtZW50IFdlYkFzc2VtYmx5Lk1lbW9yeSB3aXRoIHNoYXJlZApkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvY2xhc3MtZmllbGRzLXN0YXRpYy1wcml2YXRlLWhhcm1vbnkuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9jbGFzcy1maWVsZHMtc3RhdGljLXByaXZhdGUtaGFybW9ueS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI2Zjc0OTk2NTgxZQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdGF0aWMtcHJpdmF0ZS1oYXJtb255
LmpzCkBAIC0wLDAgKzEsMzkwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZVN0
YXRpY0NsYXNzRmllbGRzPTEiKQorLy9AIGRlZmF1bHROb0VhZ2VyUnVuCisKKy8vIENvcHlyaWdo
dCAyMDE4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKy8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKworInVzZSBzdHJpY3QiOworCitsb2FkKCIuL3Jlc291cmNlcy9oYXJtb255LXN1cHBvcnQu
anMiKTsKKworeworICBjbGFzcyBDIHsKKyAgICBzdGF0aWMgI2E7CisgICAgc3RhdGljIGdldEEo
KSB7IHJldHVybiB0aGlzLiNhOyB9CisgIH0KKworICBhc3NlcnRFcXVhbHModW5kZWZpbmVkLCBD
LmEpOworICBhc3NlcnRFcXVhbHModW5kZWZpbmVkLCBDLmdldEEoKSk7CisKKyAgbGV0IGMgPSBu
ZXcgQzsKKyAgYXNzZXJ0RXF1YWxzKHVuZGVmaW5lZCwgYy5hKTsKK30KKworeworICBjbGFzcyBD
IHsKKyAgICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4gdGhpcy4j
YTsgfQorICB9CisKKyAgYXNzZXJ0RXF1YWxzKHVuZGVmaW5lZCwgQy5hKTsKKyAgYXNzZXJ0RXF1
YWxzKDEsIEMuZ2V0QSgpKTsKKworICBsZXQgYyA9IG5ldyBDOworICBhc3NlcnRFcXVhbHModW5k
ZWZpbmVkLCBjLmEpOworfQorCit7CisgIGNsYXNzIEMgeworICAgIHN0YXRpYyAjYSA9IDE7Cisg
ICAgc3RhdGljICNiID0gdGhpcy4jYTsKKyAgICBzdGF0aWMgZ2V0QigpIHsgcmV0dXJuIHRoaXMu
I2I7IH0KKyAgfQorCisgIGFzc2VydEVxdWFscygxLCBDLmdldEIoKSk7CisKKyAgbGV0IGMgPSBu
ZXcgQzsKKyAgYXNzZXJ0RXF1YWxzKHVuZGVmaW5lZCwgYy5nZXRCKTsKK30KKworeworICBjbGFz
cyBDIHsKKyAgICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4gdGhp
cy4jYTsgfQorICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgYXNzZXJ0VGhyb3dzKCgpID0+IHRo
aXMuI2EsIFR5cGVFcnJvcik7CisgICAgICBDLiNhID0gMjsKKyAgICB9CisgIH0KKworICBhc3Nl
cnRFcXVhbHMoMSwgQy5nZXRBKCkpOworCisgIGxldCBjID0gbmV3IEM7CisgIGFzc2VydFRocm93
cygoKSA9PiBDLnByb3RvdHlwZS5nZXRBLmNhbGwoYykpOworICBhc3NlcnRFcXVhbHMoMiwgQy5n
ZXRBKCkpOworfQorCit7CisgIGNsYXNzIEMgeworICAgIHN0YXRpYyAjYSA9IHRoaXM7CisgICAg
c3RhdGljICNiID0gKCkgPT4gdGhpczsKKyAgICBzdGF0aWMgZ2V0QSgpIHsgcmV0dXJuIHRoaXMu
I2E7IH0KKyAgICBzdGF0aWMgZ2V0QigpIHsgcmV0dXJuIHRoaXMuI2I7IH0KKyAgfQorCisgIGFz
c2VydFNhbWUoQywgQy5nZXRBKCkpOworICBhc3NlcnRTYW1lKEMsIEMuZ2V0QigpKCkpOworfQor
Cit7CisgIGNsYXNzIEMgeworICAgIHN0YXRpYyAjYSA9IHRoaXM7CisgICAgc3RhdGljICNiID0g
ZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9OworICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4g
dGhpcy4jYTsgfQorICAgIHN0YXRpYyBnZXRCKCkgeyByZXR1cm4gdGhpcy4jYjsgfQorICB9CisK
KyAgYXNzZXJ0U2FtZShDLCBDLmdldEEoKSk7CisgIGFzc2VydFNhbWUoQywgQy5nZXRCKCkuY2Fs
bChDKSk7CisgIGFzc2VydFNhbWUodW5kZWZpbmVkLCBDLmdldEIoKSgpKTsKK30KKworCit7Cisg
IGNsYXNzIEMgeworICAgIHN0YXRpYyAjYSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMSB9OworICAg
IHN0YXRpYyBnZXRBKCkge3JldHVybiB0aGlzLiNhO30KKyAgfQorCisgIGFzc2VydEVxdWFscygn
I2EnLCBDLmdldEEoKS5uYW1lKTsKK30KKworeworICBsZXQgZCA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gbmV3LnRhcmdldDsgfQorICBjbGFzcyBDIHsKKyAgICBzdGF0aWMgI2MgPSBkOworICAgIHN0
YXRpYyBnZXRDKCkgeyByZXR1cm4gdGhpcy4jYzsgfQorICB9CisKKyAgYXNzZXJ0RXF1YWxzKHVu
ZGVmaW5lZCwgQy5nZXRDKCkoKSk7CisgIGFzc2VydFNhbWUobmV3IGQsIG5ldyAoQy5nZXRDKCkp
KTsKK30KKworeworICBjbGFzcyBDIHsKKyAgICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBn
ZXRBKGluc3RhbmNlKSB7IHJldHVybiBpbnN0YW5jZS4jYTsgfQorICB9CisKKyAgY2xhc3MgQiB7
IH0KKworICBhc3NlcnRFcXVhbHModW5kZWZpbmVkLCBDLmEpOworICBhc3NlcnRFcXVhbHMoMSwg
Qy5nZXRBKEMpKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IEMuZ2V0QShCKSwgVHlwZUVycm9yKTsK
K30KKworeworICBjbGFzcyBBIHsKKyAgICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBnZXRB
KCkgeyByZXR1cm4gdGhpcy4jYTsgfQorICB9CisKKyAgY2xhc3MgQiBleHRlbmRzIEEge30KKyAg
YXNzZXJ0VGhyb3dzKCgpID0+IEIuZ2V0QSgpLCBUeXBlRXJyb3IpOworfQorCit7CisgIGNsYXNz
IEEgeworICAgIHN0YXRpYyAjYSA9IDE7CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiBBLiNh
OyB9CisgIH0KKworICBjbGFzcyBCIGV4dGVuZHMgQSB7fQorICBhc3NlcnRTYW1lKDEsIEIuZ2V0
QSgpKTsKK30KKworeworICBsZXQgcHJvdG90eXBlTG9va3VwID0gZmFsc2U7CisgIGNsYXNzIEEg
eworICAgIHN0YXRpYyBzZXQgYSh2YWwpIHsKKyAgICAgIHByb3RvdHlwZUxvb2t1cCA9IHRydWU7
CisgICAgfQorCisgICAgc3RhdGljIGdldCBhKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9CisgIH0K
KworICBjbGFzcyBDIGV4dGVuZHMgQSB7CisgICAgc3RhdGljICNhID0gMTsKKyAgICBzdGF0aWMg
Z2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgfQorCisgIGFzc2VydEVxdWFscygxLCBDLmdl
dEEoKSk7CisgIGFzc2VydEVxdWFscyhmYWxzZSwgcHJvdG90eXBlTG9va3VwKTsKK30KKworewor
ICBjbGFzcyBBIHsKKyAgICBzdGF0aWMgYSA9IDE7CisgIH0KKworICBjbGFzcyBCIGV4dGVuZHMg
QSB7CisgICAgc3RhdGljICNiID0gdGhpcy5hOworICAgIHN0YXRpYyBnZXRCKCkgeyByZXR1cm4g
dGhpcy4jYjsgfQorICB9CisKKyAgYXNzZXJ0RXF1YWxzKDEsIEIuZ2V0QigpKTsKK30KKworewor
ICBjbGFzcyBBIHsKKyAgICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1
cm4gdGhpcy4jYTsgfQorICB9CisKKyAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgIHN0YXRpYyBn
ZXRBKCkgeyByZXR1cm4gc3VwZXIuZ2V0QSgpOyB9CisgIH0KKworICBhc3NlcnRUaHJvd3MoKCkg
PT4gQi5nZXRBKCksIFR5cGVFcnJvcik7Cit9CisKK3sKKyAgY2xhc3MgQSB7CisgICAgc3RhdGlj
ICNhID0gMTsKKyAgICBzdGF0aWMgZ2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7fQorICB9CisKKyAg
Y2xhc3MgQiBleHRlbmRzIEEgeworICAgIHN0YXRpYyAjYSA9IDI7CisgICAgc3RhdGljIGdldF9B
KCkgeyByZXR1cm4gdGhpcy4jYTt9CisgIH0KKworICBhc3NlcnRFcXVhbHMoMSwgQS5nZXRBKCkp
OworICBhc3NlcnRUaHJvd3MoKCkgPT4gQi5nZXRBKCksIFR5cGVFcnJvcik7CisgIGFzc2VydEVx
dWFscygyLCBCLmdldF9BKCkpOworfQorCit7CisgIGxldCBmb28gPSB1bmRlZmluZWQ7CisgIGNs
YXNzIEEgeworICAgIHN0YXRpYyAjYSA9IChmdW5jdGlvbigpIHsgZm9vID0gMTsgfSkoKTsKKyAg
fQorCisgIGFzc2VydEVxdWFscygxLCBmb28pOworfQorCit7CisgIGxldCBmb28gPSB1bmRlZmlu
ZWQ7CisgIGNsYXNzIEEgZXh0ZW5kcyBjbGFzcyB7fSB7CisgICAgc3RhdGljICNhID0gKGZ1bmN0
aW9uKCkgeyBmb28gPSAxOyB9KSgpOworICB9CisKKyAgYXNzZXJ0RXF1YWxzKDEsIGZvbyk7Cit9
CisKK3sKKyAgZnVuY3Rpb24gbWFrZUNsYXNzKCkgeworICAgIHJldHVybiBjbGFzcyB7CisgICAg
ICBzdGF0aWMgI2E7CisgICAgICBzdGF0aWMgc2V0QSh2YWwpIHsgdGhpcy4jYSA9IHZhbDsgfQor
ICAgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiB0aGlzLiNhOyB9CisgICAgfQorICB9CisKKyAg
bGV0IGNsYXNzQSA9IG1ha2VDbGFzcygpOworICBsZXQgY2xhc3NCID0gbWFrZUNsYXNzKCk7CisK
KyAgYXNzZXJ0RXF1YWxzKHVuZGVmaW5lZCwgY2xhc3NBLmdldEEoKSk7CisgIGFzc2VydEVxdWFs
cyh1bmRlZmluZWQsIGNsYXNzQi5nZXRBKCkpOworCisgIGNsYXNzQS5zZXRBKDMpOworICBhc3Nl
cnRFcXVhbHMoMywgY2xhc3NBLmdldEEoKSk7CisgIGFzc2VydEVxdWFscyh1bmRlZmluZWQsIGNs
YXNzQi5nZXRBKCkpOworCisgIGNsYXNzQi5zZXRBKDUpOworICBhc3NlcnRFcXVhbHMoMywgY2xh
c3NBLmdldEEoKSk7CisgIGFzc2VydEVxdWFscyg1LCBjbGFzc0IuZ2V0QSgpKTsKKworICBhc3Nl
cnRUaHJvd3MoKCkgPT4gY2xhc3NBLmdldEEuY2FsbChjbGFzc0IpLCBUeXBlRXJyb3IpOworICBh
c3NlcnRUaHJvd3MoKCkgPT4gY2xhc3NCLmdldEEuY2FsbChjbGFzc0EpLCBUeXBlRXJyb3IpOwor
fQorCit7CisgIGxldCB2YWx1ZSA9IHVuZGVmaW5lZDsKKworICBuZXcgY2xhc3MgeworICAgIHN0
YXRpYyAjYSA9IDE7CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiB0aGlzLiNhOyB9CisKKyAg
ICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgIG5ldyBjbGFzcyBDIHsKKyAgICAgICAgc3RhdGljICNh
ID0gMjsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgdmFsdWUgPSBDLiNhOwor
ICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKyAgYXNzZXJ0RXF1YWxzKDIsIHZhbHVl
KTsKK30KKworeworICBjbGFzcyBBIHsKKyAgICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBi
ID0gY2xhc3MgeworICAgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiB0aGlzLiNhOyB9CisgICAg
ICBzdGF0aWMgZ2V0X0EodmFsKSB7IHJldHVybiB2YWwuI2E7IH0KKyAgICB9CisgIH0KKworICBh
c3NlcnRFcXVhbHMoMSwgQS5iLmdldEEuY2FsbChBKSk7CisgIGFzc2VydEVxdWFscygxLCBBLmIu
Z2V0X0EoQSkpOworfQorCit7CisgIGFzc2VydFRocm93cygoKSA9PiBjbGFzcyB7IHN0YXRpYyBi
ID0gdGhpcy4jYTsgc3RhdGljICNhID0gMSB9LCBUeXBlRXJyb3IpOworfQorCisvKgorRklYTUU6
IHdlIGRvbid0IGhhdmUgJVN5bWJvbElzUHJpdmF0ZSgpCit7CisgIGxldCBzeW1ib2wgPSBTeW1i
b2woKTsKKworICBjbGFzcyBDIHsKKyAgICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBbc3lt
Ym9sXSA9IDE7CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiB0aGlzLiNhOyB9CisgICAgc3Rh
dGljIHNldEEodmFsKSB7IHRoaXMuI2EgPSB2YWw7IH0KKyAgfQorCisgIHZhciBwID0gbmV3IFBy
b3h5KEMsIHsKKyAgICBnZXQ6IGZ1bmN0aW9uKHRhcmdldCwgbmFtZSkgeworICAgICAgaWYgKHR5
cGVvZihhcmcpID09PSAnc3ltYm9sJykgeworICAgICAgICBhc3NlcnRGYWxzZSglU3ltYm9sSXNQ
cml2YXRlKG5hbWUpKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB0YXJnZXRbbmFtZV07CisgICAg
fQorICB9KTsKKworICBhc3NlcnRUaHJvd3MoKCkgPT4gcC5nZXRBKCksIFR5cGVFcnJvcik7Cisg
IGFzc2VydFRocm93cygoKSA9PiBwLnNldEEoMSksIFR5cGVFcnJvcik7CisgIGFzc2VydEVxdWFs
cygxLCBwW3N5bWJvbF0pOworfQorKi8KKworeworICBjbGFzcyBDIHsKKyAgICBzdGF0aWMgI2Ig
PSBPYmplY3QuZnJlZXplKHRoaXMpOworICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4gdGhpcy4j
YTsgfQorICAgIHN0YXRpYyAjYSA9IDE7CisgIH0KKworICBhc3NlcnRFcXVhbHMoMSwgQy5nZXRB
KCkpOworfQorCit7CisgIGNsYXNzIEMgeworICAgIHN0YXRpYyAjYSA9IDE7CisgICAgc3RhdGlj
IGdldEEoKSB7IHJldHVybiBldmFsKCd0aGlzLiNhJyk7IH0KKyAgfQorCisgIGFzc2VydEVxdWFs
cygxLCBDLmdldEEoKSk7Cit9CisKK3sKKyAgdmFyIEM7CisgIGV2YWwoJ0MgPSBjbGFzcyB7IHN0
YXRpYyAjYSA9IDE7IHN0YXRpYyBnZXRBKCkgeyByZXR1cm4gZXZhbChcJ3RoaXMuI2FcJyk7IH19
Jyk7CisKKyAgYXNzZXJ0RXF1YWxzKDEsIEMuZ2V0QSgpKTsKK30KKworeworICBjbGFzcyBDIHsK
KyAgICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4gdGhpcy4jYTsg
fQorICAgIHN0YXRpYyBzZXRBKCkgeyBldmFsKCd0aGlzLiNhID0gNCcpOyB9CisgIH0KKworICBh
c3NlcnRFcXVhbHMoMSwgQy5nZXRBKCkpOworICBDLnNldEEoKTsKKyAgYXNzZXJ0RXF1YWxzKDQs
IEMuZ2V0QSgpKTsKK30KKworeworICBjbGFzcyBDIHsKKyAgICBzdGF0aWMgZ2V0QSgpIHsgcmV0
dXJuIGV2YWwoJ3RoaXMuI2EnKTsgfQorICB9CisKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IEMuZ2V0
QSgpLCBTeW50YXhFcnJvcik7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmln
LnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXggZDMwOGNiNmQ3YzI3Li5l
MmY4MDgyYWY2MmQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysg
Yi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTUsNiArNSw3IEBAIGZsYWdzOgogICBG
aW5hbGl6YXRpb25SZWdpc3RyeTogdXNlV2Vha1JlZnMKICAgY2xhc3MtZmllbGRzLXByaXZhdGU6
IHVzZVByaXZhdGVDbGFzc0ZpZWxkcwogICBjbGFzcy1zdGF0aWMtZmllbGRzLXB1YmxpYzogdXNl
UHVibGljU3RhdGljQ2xhc3NGaWVsZHMKKyAgY2xhc3Mtc3RhdGljLWZpZWxkcy1wcml2YXRlOiB1
c2VQcml2YXRlU3RhdGljQ2xhc3NGaWVsZHMKICAgSW50bC5EYXRlVGltZUZvcm1hdC1kYXlQZXJp
b2Q6IHVzZUludGxEYXRlVGltZUZvcm1hdERheVBlcmlvZAogICBTaGFyZWRBcnJheUJ1ZmZlcjog
dXNlU2hhcmVkQXJyYXlCdWZmZXIKICAgQXRvbWljczogdXNlU2hhcmVkQXJyYXlCdWZmZXIKQEAg
LTE3LDcgKzE4LDYgQEAgc2tpcDoKIAogICAgIC0gYXJiaXRyYXJ5LW1vZHVsZS1uYW1lc3BhY2Ut
bmFtZXMKICAgICAtIGNsYXNzLW1ldGhvZHMtcHJpdmF0ZQotICAgIC0gY2xhc3Mtc3RhdGljLWZp
ZWxkcy1wcml2YXRlCiAgICAgLSBjbGFzcy1zdGF0aWMtbWV0aG9kcy1wcml2YXRlCiAgICAgLSBj
bGVhbnVwU29tZQogICAgIC0gaG9zdC1nYy1yZXF1aXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
aW5kZXggZTY5MDJlMGZlNzY3Li5iMDk2ZGY1NDlkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTExLTE4ICBYYW4gTMOzcGV6ICA8eGFuQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0pTQ10gQWRkIHN1cHBvcnQgZm9yIHN0YXRpYyBwcml2YXRlIGNsYXNz
IGZpZWxkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0Mjk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3RhdGljIHByaXZhdGUgZmllbGRzIGNvbWUgdHJpdmlhbGx5IG5vdyB0aGF0IGJvdGggcHJpdmF0
ZSBhbmQKKyAgICAgICAgc3RhdGljIChwdWJsaWMpIGZpZWxkcyBhcmUgaW1wbGVtZW50ZWQuCisK
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlQ2xhc3MpOiBhY2NlcHQgc3RhdGljIHByaXZhdGUgZmllbGRzIGlmIHRoZSBy
dW50aW1lIG9wdGlvbiBhbGxvd3MgaXQuCisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6T3B0aW9uczo6cmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucyk6IHVzZVBy
aXZhdGVTdGF0aWNDbGFzc0ZpZWxkcyBkZXBlbmRzIG9uIHVzZVByaXZhdGVDbGFzc0ZpZWxkcy4K
KyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6IGFkZCBydW50aW1lIG9wdGlvbiB0byBl
bmFibGUgc3RhdGljIHByaXZhdGUgZmllbGRzLgorCiAyMDIwLTExLTE2ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSW1wbGVtZW50IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSB3aXRoIHNoYXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCmluZGV4IDY3ZWIzZWUyYmY0NS4uZjQxMzBmYjc0YTRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yOTcxLDcgKzI5NzEsOCBAQCBwYXJzZU1ldGhvZDoK
ICAgICAgICAgICAgIEFTU0VSVChPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSk7CiAg
ICAgICAgICAgICBKU1Rva2VuIHRva2VuID0gbV90b2tlbjsKICAgICAgICAgICAgIGlkZW50ID0g
bV90b2tlbi5tX2RhdGEuaWRlbnQ7Ci0gICAgICAgICAgICBmYWlsSWZUcnVlKHRhZyA9PSBDbGFz
c0VsZW1lbnRUYWc6OlN0YXRpYywgIlN0YXRpYyBjbGFzcyBlbGVtZW50IGNhbm5vdCBiZSBwcml2
YXRlIik7CisgICAgICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVByaXZhdGVTdGF0aWNDbGFzc0Zp
ZWxkcygpKQorICAgICAgICAgICAgICAgIGZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRh
Zzo6U3RhdGljLCAiU3RhdGljIGNsYXNzIGVsZW1lbnQgY2Fubm90IGJlIHByaXZhdGUiKTsKICAg
ICAgICAgICAgIGZhaWxJZlRydWUoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIsICJDYW5ub3QgcGFyc2Ug
Y2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7CiAgICAgICAgICAgICBBU1NFUlQoaWRl
bnQpOwogICAgICAgICAgICAgbmV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmNwcAppbmRleCAyNjE2N2MwMDFjYjQuLjQ1ZDVkMjcwMTYyZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTU1MSw2ICs1NTEsOSBAQCB2b2lk
IE9wdGlvbnM6OnJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKQogCiAgICAgICAgIEZPUl9FQUNI
X0pTQ19FWFBFUklNRU5UQUxfT1BUSU9OKERJU0FCTEVfVElFUlMpOwogICAgIH0KKworICAgIGlm
IChPcHRpb25zOjp1c2VQcml2YXRlU3RhdGljQ2xhc3NGaWVsZHMoKSkKKyAgICAgICAgT3B0aW9u
czo6dXNlUHJpdmF0ZUNsYXNzRmllbGRzKCkgPSB0cnVlOwogfQogCiBpbmxpbmUgdm9pZCogT3B0
aW9uczo6YWRkcmVzc09mT3B0aW9uKE9wdGlvbnM6OklEIGlkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggMzIyOGI2YzA3MWNkLi4yYzBhY2QzZTJj
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAt
NTI1LDYgKzUyNSw3IEBAIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2FuVXNlSklUQ2FnZSgpOwog
ICAgIHYoQm9vbCwgZXhwb3NlQ3VzdG9tU2V0dGVyc09uR2xvYmFsT2JqZWN0Rm9yVGVzdGluZywg
ZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgdXNlSklUQ2FnZSwgY2FuVXNl
SklUQ2FnZSgpLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KEJvb2wsIHVzZVB1YmxpY1N0YXRp
Y0NsYXNzRmllbGRzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5k
ZXJzdGFuZCBwdWJsaWMgc3RhdGljIGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2VzLiIpIFwKKyAg
ICB2KEJvb2wsIHVzZVByaXZhdGVTdGF0aWNDbGFzc0ZpZWxkcywgZmFsc2UsIE5vcm1hbCwgIklm
IHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgc3RhdGljIGRhdGEgZmll
bGRzIGluc2lkZSBjbGFzc2VzLiIpIFwKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CiAgICAg
U2FtZU9wdGlvbiwKLS0gCjIuMjguMAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414562</attachid>
            <date>2020-11-19 03:42:20 -0800</date>
            <delta_ts>2020-11-19 05:06:20 -0800</delta_ts>
            <desc>Add support for static private fields, v3</desc>
            <filename>0001-JSC-Add-support-for-static-private-class-fields.patch</filename>
            <type>text/plain</type>
            <size>19291</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBmZTY0MGVhOTM5YWFiNWUzZDUzMWZmNTZiMzVkZjM4ZjMzZjA3OGMxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogVHVlLCAxNCBKdWwgMjAyMCAxMDo0OTowOCArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIFtKU0NdIEFkZCBzdXBwb3J0IGZvciBzdGF0aWMgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQyOTcKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKSlNUZXN0czoKCkNvcHkgVjggdGVzdHMgZm9yIHN0YXRpYyBw
cml2YXRlIGZpZWxkcyBhbmQgYWRkIHRoZSB0ZXN0MjYyCmZsYWcuIEFsc28gYWRkIGEgY291cGxl
IG1vcmUgb2Ygb3VyIG93biB0ZXN0cyBmb3IgdGhlIHNha2Ugb2YKY29tcGxldGVuZXNzLgoKKiBz
dHJlc3MvY2xhc3MtZmllbGRzLXN0YXRpYy1wcml2YXRlLWhhcm1vbnkuanM6IEFkZGVkLCB3aXRo
IGEgY291cGxlIGFkZGl0aW9uYWwgdGVzdHMuCiogc3RyZXNzL3Jlc291cmNlcy9oYXJtb255LXN1
cHBvcnQuanM6Cihhc3NlcnREb2VzTm90VGhyb3cpOiBhZGRlZC4KKiB0ZXN0MjYyL2NvbmZpZy55
YW1sOgoKU291cmNlL0phdmFTY3JpcHRDb3JlOgoKU3RhdGljIHByaXZhdGUgZmllbGRzIGNvbWUg
dHJpdmlhbGx5IG5vdyB0aGF0IGJvdGggcHJpdmF0ZSBhbmQKc3RhdGljIChwdWJsaWMpIGZpZWxk
cyBhcmUgaW1wbGVtZW50ZWQuCgoqIHBhcnNlci9QYXJzZXIuY3BwOgooSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VDbGFzcyk6IGFjY2VwdCBzdGF0aWMgcHJpdmF0ZSBmaWVsZHMgaWYgdGhl
IHJ1bnRpbWUgb3B0aW9uIGFsbG93cyBpdC4KKiBydW50aW1lL09wdGlvbnMuY3BwOgooSlNDOjpP
cHRpb25zOjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKTogdXNlUHJpdmF0ZVN0YXRpY0NsYXNz
RmllbGRzIGRlcGVuZHMgb24gdXNlUHJpdmF0ZUNsYXNzRmllbGRzLgoqIHJ1bnRpbWUvT3B0aW9u
c0xpc3QuaDogYWRkIHJ1bnRpbWUgb3B0aW9uIHRvIGVuYWJsZSBzdGF0aWMgcHJpdmF0ZSBmaWVs
ZHMuCiogdG9vbHMvSlNEb2xsYXJWTS5jcHA6IGFkZCBhIG1ldGhvZCB0byBjaGVjayBmb3IgcHJp
dmF0ZSBzeW1ib2xzIGluIHRoZSBzdHJlc3MgdGVzdHMuCihKU0M6OkpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTik6CihKU0M6OkpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKToKLS0tCiBKU1Rlc3Rz
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTYgKwogLi4uL3N0cmVz
cy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1oYXJtb255LmpzICAgIHwgICA3ICstCiAuLi4vY2xhc3Mt
ZmllbGRzLXN0YXRpYy1wcml2YXRlLWhhcm1vbnkuanMgICAgfCA0MTggKysrKysrKysrKysrKysr
KysrCiBKU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMvaGFybW9ueS1zdXBwb3J0LmpzICAgfCAgMTUg
KwogSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sICAgICAgICAgICAgICAgICAgIHwgICAyICst
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgfCAgMTkgKwog
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwICAgICAgIHwgICAzICstCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCAgICAgfCAgIDMgKwogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCAgIHwgICAxICsKIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCAgICB8ICAxNCArCiAxMCBmaWxl
cyBjaGFuZ2VkLCA0OTEgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBKU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RhdGljLXByaXZhdGUtaGFybW9u
eS5qcwoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMjVjNjZiNDg5NjI4Li5hOGVkY2UyZjNkNzQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMTEt
MTkgIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgc3Vw
cG9ydCBmb3Igc3RhdGljIHByaXZhdGUgY2xhc3MgZmllbGRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQyOTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3B5IFY4IHRlc3RzIGZvciBzdGF0aWMgcHJp
dmF0ZSBmaWVsZHMgYW5kIGFkZCB0aGUgdGVzdDI2MgorICAgICAgICBmbGFnLiBBbHNvIGFkZCBh
IGNvdXBsZSBtb3JlIG9mIG91ciBvd24gdGVzdHMgZm9yIHRoZSBzYWtlIG9mCisgICAgICAgIGNv
bXBsZXRlbmVzcy4KKworICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtc3RhdGljLXByaXZh
dGUtaGFybW9ueS5qczogQWRkZWQsIHdpdGggYSBjb3VwbGUgYWRkaXRpb25hbCB0ZXN0cy4KKyAg
ICAgICAgKiBzdHJlc3MvcmVzb3VyY2VzL2hhcm1vbnktc3VwcG9ydC5qczoKKyAgICAgICAgKGFz
c2VydERvZXNOb3RUaHJvdyk6IGFkZGVkLgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6
CisKIDIwMjAtMTEtMTggIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV0FTTS1SZWZlcmVuY2VzXSBSZW1vdmUgc3VidHlwaW5nIHJ1bGUgZm9y
IGV4dGVybnJlZiBhbmQgZnVuY3JlZgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3Mt
ZmllbGRzLXByaXZhdGUtaGFybW9ueS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLWhhcm1vbnkuanMKaW5kZXggOGM3MzFjODE0OTJjLi41ZmQzZmM1NTk2N2IgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWhhcm1vbnkuanMKKysr
IGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtaGFybW9ueS5qcwpAQCAtMzYx
LDggKzM2MSw2IEBAIGxvYWQoIi4vcmVzb3VyY2VzL2hhcm1vbnktc3VwcG9ydC5qcyIpOwogICBh
c3NlcnRUaHJvd3MoKCkgPT4gbmV3IEMsIFR5cGVFcnJvcik7CiB9CiAKLS8qCi1GSVhNRTogd2Ug
ZG9uJ3QgaGF2ZSAlU3ltYm9sSXNQcml2YXRlKCkKIHsKICAgbGV0IHN5bWJvbCA9IFN5bWJvbCgp
OwogCkBAIC0zNzUsOCArMzczLDggQEAgRklYTUU6IHdlIGRvbid0IGhhdmUgJVN5bWJvbElzUHJp
dmF0ZSgpCiAKICAgdmFyIHAgPSBuZXcgUHJveHkobmV3IEMsIHsKICAgICBnZXQ6IGZ1bmN0aW9u
KHRhcmdldCwgbmFtZSkgewotICAgICAgaWYgKHR5cGVvZihhcmcpID09PSAnc3ltYm9sJykgewot
ICAgICAgICBhc3NlcnRGYWxzZSglU3ltYm9sSXNQcml2YXRlKG5hbWUpKTsKKyAgICAgIGlmICh0
eXBlb2YobmFtZSkgPT09ICdzeW1ib2wnKSB7CisgICAgICAgIGFzc2VydEZhbHNlKCR2bS5pc1By
aXZhdGVTeW1ib2wobmFtZSkpOwogICAgICAgfQogICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsK
ICAgICB9CkBAIC0zODYsNyArMzg0LDYgQEAgRklYTUU6IHdlIGRvbid0IGhhdmUgJVN5bWJvbElz
UHJpdmF0ZSgpCiAgIGFzc2VydFRocm93cygoKSA9PiBwLnNldEEoMSksIFR5cGVFcnJvcik7CiAg
IGFzc2VydEVxdWFscygxLCBwW3N5bWJvbF0pOwogfQotKi8KIAogewogICBjbGFzcyBDIHsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdGF0aWMtcHJpdmF0ZS1oYXJt
b255LmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXN0YXRpYy1wcml2YXRlLWhhcm1v
bnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NWU0MmNhM2Ey
MTUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RhdGlj
LXByaXZhdGUtaGFybW9ueS5qcwpAQCAtMCwwICsxLDQxOCBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZVByaXZhdGVTdGF0aWNDbGFzc0ZpZWxkcz0xIikKKy8vQCBkZWZhdWx0Tm9FYWdlclJ1
bgorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKworLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisv
LyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8v
ICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisKKyJ1c2Ugc3RyaWN0IjsKKworbG9hZCgiLi9yZXNvdXJjZXMv
aGFybW9ueS1zdXBwb3J0LmpzIik7CisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNhOwor
ICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4gdGhpcy4jYTsgfQorICB9CisKKyAgYXNzZXJ0RXF1
YWxzKHVuZGVmaW5lZCwgQy5hKTsKKyAgYXNzZXJ0RXF1YWxzKHVuZGVmaW5lZCwgQy5nZXRBKCkp
OworCisgIGxldCBjID0gbmV3IEM7CisgIGFzc2VydEVxdWFscyh1bmRlZmluZWQsIGMuYSk7Cit9
CisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNhID0gMTsKKyAgICBzdGF0aWMgZ2V0QSgp
IHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgfQorCisgIGFzc2VydEVxdWFscyh1bmRlZmluZWQsIEMu
YSk7CisgIGFzc2VydEVxdWFscygxLCBDLmdldEEoKSk7CisKKyAgbGV0IGMgPSBuZXcgQzsKKyAg
YXNzZXJ0RXF1YWxzKHVuZGVmaW5lZCwgYy5hKTsKK30KKworeworICBjbGFzcyBDIHsKKyAgICBz
dGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyAjYiA9IHRoaXMuI2E7CisgICAgc3RhdGljIGdldEIo
KSB7IHJldHVybiB0aGlzLiNiOyB9CisgIH0KKworICBhc3NlcnRFcXVhbHMoMSwgQy5nZXRCKCkp
OworCisgIGxldCBjID0gbmV3IEM7CisgIGFzc2VydEVxdWFscyh1bmRlZmluZWQsIGMuZ2V0Qik7
Cit9CisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNhID0gMTsKKyAgICBzdGF0aWMgZ2V0
QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgIGFzc2Vy
dFRocm93cygoKSA9PiB0aGlzLiNhLCBUeXBlRXJyb3IpOworICAgICAgQy4jYSA9IDI7CisgICAg
fQorICB9CisKKyAgYXNzZXJ0RXF1YWxzKDEsIEMuZ2V0QSgpKTsKKworICBsZXQgYyA9IG5ldyBD
OworICBhc3NlcnRUaHJvd3MoKCkgPT4gQy5wcm90b3R5cGUuZ2V0QS5jYWxsKGMpKTsKKyAgYXNz
ZXJ0RXF1YWxzKDIsIEMuZ2V0QSgpKTsKK30KKworeworICBjbGFzcyBDIHsKKyAgICBzdGF0aWMg
I2EgPSB0aGlzOworICAgIHN0YXRpYyAjYiA9ICgpID0+IHRoaXM7CisgICAgc3RhdGljIGdldEEo
KSB7IHJldHVybiB0aGlzLiNhOyB9CisgICAgc3RhdGljIGdldEIoKSB7IHJldHVybiB0aGlzLiNi
OyB9CisgIH0KKworICBhc3NlcnRTYW1lKEMsIEMuZ2V0QSgpKTsKKyAgYXNzZXJ0U2FtZShDLCBD
LmdldEIoKSgpKTsKK30KKworeworICBjbGFzcyBDIHsKKyAgICBzdGF0aWMgI2EgPSB0aGlzOwor
ICAgIHN0YXRpYyAjYiA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfTsKKyAgICBzdGF0aWMg
Z2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgICBzdGF0aWMgZ2V0QigpIHsgcmV0dXJuIHRo
aXMuI2I7IH0KKyAgfQorCisgIGFzc2VydFNhbWUoQywgQy5nZXRBKCkpOworICBhc3NlcnRTYW1l
KEMsIEMuZ2V0QigpLmNhbGwoQykpOworICBhc3NlcnRTYW1lKHVuZGVmaW5lZCwgQy5nZXRCKCko
KSk7Cit9CisKKworeworICBjbGFzcyBDIHsKKyAgICBzdGF0aWMgI2EgPSBmdW5jdGlvbigpIHsg
cmV0dXJuIDEgfTsKKyAgICBzdGF0aWMgZ2V0QSgpIHtyZXR1cm4gdGhpcy4jYTt9CisgIH0KKwor
ICBhc3NlcnRFcXVhbHMoJyNhJywgQy5nZXRBKCkubmFtZSk7Cit9CisKK3sKKyAgbGV0IGQgPSBm
dW5jdGlvbigpIHsgcmV0dXJuIG5ldy50YXJnZXQ7IH0KKyAgY2xhc3MgQyB7CisgICAgc3RhdGlj
ICNjID0gZDsKKyAgICBzdGF0aWMgZ2V0QygpIHsgcmV0dXJuIHRoaXMuI2M7IH0KKyAgfQorCisg
IGFzc2VydEVxdWFscyh1bmRlZmluZWQsIEMuZ2V0QygpKCkpOworICBhc3NlcnRTYW1lKG5ldyBk
LCBuZXcgKEMuZ2V0QygpKSk7Cit9CisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNhID0g
MTsKKyAgICBzdGF0aWMgZ2V0QShpbnN0YW5jZSkgeyByZXR1cm4gaW5zdGFuY2UuI2E7IH0KKyAg
fQorCisgIGNsYXNzIEIgeyB9CisKKyAgYXNzZXJ0RXF1YWxzKHVuZGVmaW5lZCwgQy5hKTsKKyAg
YXNzZXJ0RXF1YWxzKDEsIEMuZ2V0QShDKSk7CisgIGFzc2VydFRocm93cygoKSA9PiBDLmdldEEo
QiksIFR5cGVFcnJvcik7Cit9CisKK3sKKyAgY2xhc3MgQSB7CisgICAgc3RhdGljICNhID0gMTsK
KyAgICBzdGF0aWMgZ2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgfQorCisgIGNsYXNzIEIg
ZXh0ZW5kcyBBIHt9CisgIGFzc2VydFRocm93cygoKSA9PiBCLmdldEEoKSwgVHlwZUVycm9yKTsK
K30KKworeworICBjbGFzcyBBIHsKKyAgICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBnZXRB
KCkgeyByZXR1cm4gQS4jYTsgfQorICB9CisKKyAgY2xhc3MgQiBleHRlbmRzIEEge30KKyAgYXNz
ZXJ0U2FtZSgxLCBCLmdldEEoKSk7Cit9CisKK3sKKyAgbGV0IHByb3RvdHlwZUxvb2t1cCA9IGZh
bHNlOworICBjbGFzcyBBIHsKKyAgICBzdGF0aWMgc2V0IGEodmFsKSB7CisgICAgICBwcm90b3R5
cGVMb29rdXAgPSB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBnZXQgYSgpIHsgcmV0dXJuIHVu
ZGVmaW5lZDsgfQorICB9CisKKyAgY2xhc3MgQyBleHRlbmRzIEEgeworICAgIHN0YXRpYyAjYSA9
IDE7CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiB0aGlzLiNhOyB9CisgIH0KKworICBhc3Nl
cnRFcXVhbHMoMSwgQy5nZXRBKCkpOworICBhc3NlcnRFcXVhbHMoZmFsc2UsIHByb3RvdHlwZUxv
b2t1cCk7Cit9CisKK3sKKyAgY2xhc3MgQSB7CisgICAgc3RhdGljIGEgPSAxOworICB9CisKKyAg
Y2xhc3MgQiBleHRlbmRzIEEgeworICAgIHN0YXRpYyAjYiA9IHRoaXMuYTsKKyAgICBzdGF0aWMg
Z2V0QigpIHsgcmV0dXJuIHRoaXMuI2I7IH0KKyAgfQorCisgIGFzc2VydEVxdWFscygxLCBCLmdl
dEIoKSk7Cit9CisKK3sKKyAgY2xhc3MgQSB7CisgICAgc3RhdGljICNhID0gMTsKKyAgICBzdGF0
aWMgZ2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgfQorCisgIGNsYXNzIEIgZXh0ZW5kcyBB
IHsKKyAgICBzdGF0aWMgZ2V0QSgpIHsgcmV0dXJuIHN1cGVyLmdldEEoKTsgfQorICB9CisKKyAg
YXNzZXJ0VGhyb3dzKCgpID0+IEIuZ2V0QSgpLCBUeXBlRXJyb3IpOworfQorCit7CisgIGNsYXNz
IEEgeworICAgIHN0YXRpYyAjYSA9IDE7CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiB0aGlz
LiNhO30KKyAgfQorCisgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICBzdGF0aWMgI2EgPSAyOwor
ICAgIHN0YXRpYyBnZXRfQSgpIHsgcmV0dXJuIHRoaXMuI2E7fQorICB9CisKKyAgYXNzZXJ0RXF1
YWxzKDEsIEEuZ2V0QSgpKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IEIuZ2V0QSgpLCBUeXBlRXJy
b3IpOworICBhc3NlcnRFcXVhbHMoMiwgQi5nZXRfQSgpKTsKK30KKworeworICBsZXQgZm9vID0g
dW5kZWZpbmVkOworICBjbGFzcyBBIHsKKyAgICBzdGF0aWMgI2EgPSAoZnVuY3Rpb24oKSB7IGZv
byA9IDE7IH0pKCk7CisgIH0KKworICBhc3NlcnRFcXVhbHMoMSwgZm9vKTsKK30KKworeworICBs
ZXQgZm9vID0gdW5kZWZpbmVkOworICBjbGFzcyBBIGV4dGVuZHMgY2xhc3Mge30geworICAgIHN0
YXRpYyAjYSA9IChmdW5jdGlvbigpIHsgZm9vID0gMTsgfSkoKTsKKyAgfQorCisgIGFzc2VydEVx
dWFscygxLCBmb28pOworfQorCit7CisgIGZ1bmN0aW9uIG1ha2VDbGFzcygpIHsKKyAgICByZXR1
cm4gY2xhc3MgeworICAgICAgc3RhdGljICNhOworICAgICAgc3RhdGljIHNldEEodmFsKSB7IHRo
aXMuI2EgPSB2YWw7IH0KKyAgICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4gdGhpcy4jYTsgfQor
ICAgIH0KKyAgfQorCisgIGxldCBjbGFzc0EgPSBtYWtlQ2xhc3MoKTsKKyAgbGV0IGNsYXNzQiA9
IG1ha2VDbGFzcygpOworCisgIGFzc2VydEVxdWFscyh1bmRlZmluZWQsIGNsYXNzQS5nZXRBKCkp
OworICBhc3NlcnRFcXVhbHModW5kZWZpbmVkLCBjbGFzc0IuZ2V0QSgpKTsKKworICBjbGFzc0Eu
c2V0QSgzKTsKKyAgYXNzZXJ0RXF1YWxzKDMsIGNsYXNzQS5nZXRBKCkpOworICBhc3NlcnRFcXVh
bHModW5kZWZpbmVkLCBjbGFzc0IuZ2V0QSgpKTsKKworICBjbGFzc0Iuc2V0QSg1KTsKKyAgYXNz
ZXJ0RXF1YWxzKDMsIGNsYXNzQS5nZXRBKCkpOworICBhc3NlcnRFcXVhbHMoNSwgY2xhc3NCLmdl
dEEoKSk7CisKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGNsYXNzQS5nZXRBLmNhbGwoY2xhc3NCKSwg
VHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGNsYXNzQi5nZXRBLmNhbGwoY2xhc3NB
KSwgVHlwZUVycm9yKTsKK30KKworeworICBsZXQgdmFsdWUgPSB1bmRlZmluZWQ7CisKKyAgbmV3
IGNsYXNzIHsKKyAgICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4g
dGhpcy4jYTsgfQorCisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICBuZXcgY2xhc3MgQyB7Cisg
ICAgICAgIHN0YXRpYyAjYSA9IDI7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAg
IHZhbHVlID0gQy4jYTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCisgIGFzc2Vy
dEVxdWFscygyLCB2YWx1ZSk7Cit9CisKK3sKKyAgY2xhc3MgQSB7CisgICAgc3RhdGljICNhID0g
MTsKKyAgICBzdGF0aWMgYiA9IGNsYXNzIHsKKyAgICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4g
dGhpcy4jYTsgfQorICAgICAgc3RhdGljIGdldF9BKHZhbCkgeyByZXR1cm4gdmFsLiNhOyB9Cisg
ICAgfQorICB9CisKKyAgYXNzZXJ0RXF1YWxzKDEsIEEuYi5nZXRBLmNhbGwoQSkpOworICBhc3Nl
cnRFcXVhbHMoMSwgQS5iLmdldF9BKEEpKTsKK30KKworeworICBhc3NlcnRUaHJvd3MoKCkgPT4g
Y2xhc3MgeyBzdGF0aWMgYiA9IHRoaXMuI2E7IHN0YXRpYyAjYSA9IDEgfSwgVHlwZUVycm9yKTsK
K30KKworeworICBsZXQgc3ltYm9sID0gU3ltYm9sKCk7CisKKyAgY2xhc3MgQyB7CisgICAgc3Rh
dGljICNhID0gMTsKKyAgICBzdGF0aWMgW3N5bWJvbF0gPSAxOworICAgIHN0YXRpYyBnZXRBKCkg
eyByZXR1cm4gdGhpcy4jYTsgfQorICAgIHN0YXRpYyBzZXRBKHZhbCkgeyB0aGlzLiNhID0gdmFs
OyB9CisgIH0KKworICB2YXIgcCA9IG5ldyBQcm94eShDLCB7CisgICAgZ2V0OiBmdW5jdGlvbih0
YXJnZXQsIG5hbWUpIHsKKyAgICAgIGlmICh0eXBlb2YobmFtZSkgPT09ICdzeW1ib2wnKSB7Cisg
ICAgICAgIGFzc2VydEZhbHNlKCR2bS5pc1ByaXZhdGVTeW1ib2wobmFtZSkpOworICAgICAgfQor
ICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKKyAgICB9CisgIH0pOworCisgIGFzc2VydFRocm93
cygoKSA9PiBwLmdldEEoKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IHAuc2V0
QSgxKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0RXF1YWxzKDEsIHBbc3ltYm9sXSk7Cit9CisKK3sK
KyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNiID0gT2JqZWN0LmZyZWV6ZSh0aGlzKTsKKyAgICBz
dGF0aWMgZ2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgICBzdGF0aWMgI2EgPSAxOworICB9
CisKKyAgYXNzZXJ0RXF1YWxzKDEsIEMuZ2V0QSgpKTsKK30KKworeworICBjbGFzcyBDIHsKKyAg
ICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4gZXZhbCgndGhpcy4j
YScpOyB9CisgIH0KKworICBhc3NlcnRFcXVhbHMoMSwgQy5nZXRBKCkpOworfQorCit7CisgIHZh
ciBDOworICBldmFsKCdDID0gY2xhc3MgeyBzdGF0aWMgI2EgPSAxOyBzdGF0aWMgZ2V0QSgpIHsg
cmV0dXJuIGV2YWwoXCd0aGlzLiNhXCcpOyB9fScpOworCisgIGFzc2VydEVxdWFscygxLCBDLmdl
dEEoKSk7Cit9CisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNhID0gMTsKKyAgICBzdGF0
aWMgZ2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgICBzdGF0aWMgc2V0QSgpIHsgZXZhbCgn
dGhpcy4jYSA9IDQnKTsgfQorICB9CisKKyAgYXNzZXJ0RXF1YWxzKDEsIEMuZ2V0QSgpKTsKKyAg
Qy5zZXRBKCk7CisgIGFzc2VydEVxdWFscyg0LCBDLmdldEEoKSk7Cit9CisKK3sKKyAgY2xhc3Mg
QyB7CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiBldmFsKCd0aGlzLiNhJyk7IH0KKyAgfQor
CisgIGFzc2VydFRocm93cygoKSA9PiBDLmdldEEoKSwgU3ludGF4RXJyb3IpOworfQorCisvLyBB
ZGRpdGlvbmFsIHRlc3RzIGJ5IHRoZSBXZWJLaXQgcHJvamVjdC4KK2Z1bmN0aW9uIHNob3VsZFRo
cm93U3ludGF4RXJyb3Ioc2NyaXB0KSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAg
ICAgIGV2YWwoc2NyaXB0KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBTeW50YXhFcnJvciEnKTsKK30KKworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7ICNmb28gPSAwOyBzdGF0aWMgI2ZvbyA9IDE7IH0i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBzdGF0aWMgI2ZvbyA9IDA7ICNm
b28gPSAxOyB9Iik7CisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNmb28gPSAwOworICAg
IHRlc3RBY2Nlc3MoWCkgeyByZXR1cm4gWC4jZm9vOyB9CisgIH0KKworICBjbGFzcyBEIHsKKyAg
ICBzdGF0aWMgI2ZvbyA9IDA7CisgIH0KKworICBsZXQgYyA9IG5ldyBDKCk7CisgIGFzc2VydERv
ZXNOb3RUaHJvdyhjLnRlc3RBY2Nlc3MoQykpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gYy50ZXN0
QWNjZXNzKEQpLCBUeXBlRXJyb3IpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVz
b3VyY2VzL2hhcm1vbnktc3VwcG9ydC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy9oYXJt
b255LXN1cHBvcnQuanMKaW5kZXggMDI0YjNiMDg4OWUxLi4xNjdjYzYxMjA5MTIgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy9oYXJtb255LXN1cHBvcnQuanMKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvcmVzb3VyY2VzL2hhcm1vbnktc3VwcG9ydC5qcwpAQCAtMTk0LDMgKzE5NCwx
OCBAQCBmdW5jdGlvbiBhc3NlcnRUaHJvd3MoY29kZSwgdHlwZV9vcHQsIGNhdXNlX29wdCkgewog
ICAgICAgdHlwZW9mIHR5cGVfb3B0ID09ICdmdW5jdGlvbicgPyB0eXBlX29wdCA6ICdhbnkgZXhj
ZXB0aW9uJzsKICAgZmFpbChleHBlY3RlZCwgJ25vIGV4Y2VwdGlvbicsICdleHBlY3RlZCB0aHJv
d24gZXhjZXB0aW9uJyk7CiB9CisKKy8qKgorICogUnVucyBjb2RlKCkgYW5kIGFzc2VydHMgdGhh
dCBpdCBkb2VzIG5vdCB0aHJvd3MgYW4gZXhjZXB0aW9uLgorICovCitmdW5jdGlvbiBhc3NlcnRE
b2VzTm90VGhyb3coY29kZSwgbmFtZV9vcHQpIHsKKyAgdHJ5IHsKKyAgICBpZiAodHlwZW9mIGNv
ZGUgPT0gJ2Z1bmN0aW9uJykgeworICAgICAgY29kZSgpOworICAgIH0gZWxzZSB7CisgICAgICBl
dmFsKGNvZGUpOworICAgIH0KKyAgfSBjYXRjaCAoZSkgeworICAgIGZhaWwoIm5vIGV4Y2VwdGlv
biIsICJ0aHJldyBhbiBleGNlcHRpb246ICIgKyAoZS5tZXNzYWdlIHx8IGUpKTsKKyAgfQorfQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYy
L2NvbmZpZy55YW1sCmluZGV4IDJiYzlkMjZiNGJmZC4uYmRkOGJiZmQ1MmRhIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZp
Zy55YW1sCkBAIC01LDYgKzUsNyBAQCBmbGFnczoKICAgRmluYWxpemF0aW9uUmVnaXN0cnk6IHVz
ZVdlYWtSZWZzCiAgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2YXRlQ2xhc3NGaWVsZHMK
ICAgY2xhc3Mtc3RhdGljLWZpZWxkcy1wdWJsaWM6IHVzZVB1YmxpY1N0YXRpY0NsYXNzRmllbGRz
CisgIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZTogdXNlUHJpdmF0ZVN0YXRpY0NsYXNzRmll
bGRzCiAgIEludGwuRGF0ZVRpbWVGb3JtYXQtZGF5UGVyaW9kOiB1c2VJbnRsRGF0ZVRpbWVGb3Jt
YXREYXlQZXJpb2QKICAgU2hhcmVkQXJyYXlCdWZmZXI6IHVzZVNoYXJlZEFycmF5QnVmZmVyCiAg
IEF0b21pY3M6IHVzZVNoYXJlZEFycmF5QnVmZmVyCkBAIC0yMCw3ICsyMSw2IEBAIHNraXA6CiAK
ICAgICAtIGFyYml0cmFyeS1tb2R1bGUtbmFtZXNwYWNlLW5hbWVzCiAgICAgLSBjbGFzcy1tZXRo
b2RzLXByaXZhdGUKLSAgICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xh
c3Mtc3RhdGljLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xlYW51cFNvbWUKICAgICAtIGhvc3Qt
Z2MtcmVxdWlyZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDM2ODU1MWVhYWQ1ZS4uZWEx
YmI4NTFkNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAy
MC0xMS0xOSAgWGFuIEzDs3BleiAgPHhhbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIEFk
ZCBzdXBwb3J0IGZvciBzdGF0aWMgcHJpdmF0ZSBjbGFzcyBmaWVsZHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDI5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXRpYyBwcml2YXRlIGZpZWxkcyBj
b21lIHRyaXZpYWxseSBub3cgdGhhdCBib3RoIHByaXZhdGUgYW5kCisgICAgICAgIHN0YXRpYyAo
cHVibGljKSBmaWVsZHMgYXJlIGltcGxlbWVudGVkLgorCisgICAgICAgICogcGFyc2VyL1BhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKTogYWNj
ZXB0IHN0YXRpYyBwcml2YXRlIGZpZWxkcyBpZiB0aGUgcnVudGltZSBvcHRpb24gYWxsb3dzIGl0
LgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6
OnJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMpOiB1c2VQcml2YXRlU3RhdGljQ2xhc3NGaWVsZHMg
ZGVwZW5kcyBvbiB1c2VQcml2YXRlQ2xhc3NGaWVsZHMuCisgICAgICAgICogcnVudGltZS9PcHRp
b25zTGlzdC5oOiBhZGQgcnVudGltZSBvcHRpb24gdG8gZW5hYmxlIHN0YXRpYyBwcml2YXRlIGZp
ZWxkcy4KKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDogYWRkIGEgbWV0aG9kIHRvIGNo
ZWNrIGZvciBwcml2YXRlIHN5bWJvbHMgaW4gdGhlIHN0cmVzcyB0ZXN0cy4KKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTTo6
ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIwLTExLTE4ICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRiZXpo
ZXRza292QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gUmVtb3ZlIHN1
YnR5cGluZyBydWxlIGZvciBleHRlcm5yZWYgYW5kIGZ1bmNyZWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA2N2ViM2VlMmJmNDUuLmY0MTMwZmI3NGE0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjk3MSw3ICsyOTcxLDgg
QEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBBU1NFUlQoT3B0aW9uczo6dXNlUHJpdmF0ZUNs
YXNzRmllbGRzKCkpOwogICAgICAgICAgICAgSlNUb2tlbiB0b2tlbiA9IG1fdG9rZW47CiAgICAg
ICAgICAgICBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwotICAgICAgICAgICAgZmFpbElm
VHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMsICJTdGF0aWMgY2xhc3MgZWxlbWVu
dCBjYW5ub3QgYmUgcHJpdmF0ZSIpOworICAgICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VQcml2
YXRlU3RhdGljQ2xhc3NGaWVsZHMoKSkKKyAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKHRhZyA9
PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIlN0YXRpYyBjbGFzcyBlbGVtZW50IGNhbm5vdCBi
ZSBwcml2YXRlIik7CiAgICAgICAgICAgICBmYWlsSWZUcnVlKGlzR2V0dGVyIHx8IGlzU2V0dGVy
LCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOwogICAgICAg
ICAgICAgQVNTRVJUKGlkZW50KTsKICAgICAgICAgICAgIG5leHQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXggMjYxNjdjMDAxY2I0Li40NWQ1ZDI3MDE2
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCkBAIC01NTEs
NiArNTUxLDkgQEAgdm9pZCBPcHRpb25zOjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkKIAog
ICAgICAgICBGT1JfRUFDSF9KU0NfRVhQRVJJTUVOVEFMX09QVElPTihESVNBQkxFX1RJRVJTKTsK
ICAgICB9CisKKyAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZVN0YXRpY0NsYXNzRmllbGRzKCkp
CisgICAgICAgIE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpID0gdHJ1ZTsKIH0KIAog
aW5saW5lIHZvaWQqIE9wdGlvbnM6OmFkZHJlc3NPZk9wdGlvbihPcHRpb25zOjpJRCBpZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IDMyMjhiNmMw
NzFjZC4uMmMwYWNkM2UyYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnNMaXN0LmgKQEAgLTUyNSw2ICs1MjUsNyBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNh
blVzZUpJVENhZ2UoKTsKICAgICB2KEJvb2wsIGV4cG9zZUN1c3RvbVNldHRlcnNPbkdsb2JhbE9i
amVjdEZvclRlc3RpbmcsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KEJvb2wsIHVz
ZUpJVENhZ2UsIGNhblVzZUpJVENhZ2UoKSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihCb29s
LCB1c2VQdWJsaWNTdGF0aWNDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhl
IHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHVibGljIHN0YXRpYyBkYXRhIGZpZWxkcyBpbnNpZGUg
Y2xhc3Nlcy4iKSBcCisgICAgdihCb29sLCB1c2VQcml2YXRlU3RhdGljQ2xhc3NGaWVsZHMsIGZh
bHNlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRl
IHN0YXRpYyBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCiAKIGVudW0gT3B0aW9uRXF1
aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTS5jcHAKaW5kZXggYWVkMGI0YjcwY2Y5Li41Zjk1MDkzMTJjMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTE4NjksNiArMTg2OSw3
IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uSXNNZW1vcnlMaW1p
dGVkKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uVXNlSklUKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uSXNHaWdhY2FnZUVuYWJs
ZWQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Ub1VuY2FjaGVh
YmxlRGljdGlvbmFyeSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlv
bklzUHJpdmF0ZVN5bWJvbCk7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0RvbGxhclZNOjpzX2luZm8g
PSB7ICJEb2xsYXJWTSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNEb2xsYXJWTSkgfTsKIApAQCAtMzM3Nyw2ICszMzc4LDE3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5LCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3QpOwog
fQogCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Jc1ByaXZhdGVTeW1ib2wsIChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBEb2xsYXJWTUFz
c2VydFNjb3BlIGFzc2VydFNjb3BlOworCisgICAgU3ltYm9sKiBzeW1ib2wgPSBhc1N5bWJvbChj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBpZiAoIXN5bWJvbCkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKHN5bWJvbC0+dWlkKCkuaXNQcml2YXRlKCkpKTsKK30KKwogY29u
c3RleHByIHVuc2lnbmVkIGpzRG9sbGFyVk1Qcm9wZXJ0eUF0dHJpYnV0ZXMgPSBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZTsKIAogdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCkBAIC0zNTI3LDYgKzM1MzksOCBAQCB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKIAogICAgIGFkZEZ1bmN0aW9uKHZtLCAidG9VbmNhY2hlYWJsZURpY3Rp
b25hcnkiLCBmdW5jdGlvblRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5LCAxKTsKIAorICAgIGFkZEZ1
bmN0aW9uKHZtLCAiaXNQcml2YXRlU3ltYm9sIiwgZnVuY3Rpb25Jc1ByaXZhdGVTeW1ib2wsIDEp
OworCiAgICAgbV9vYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0
dXNTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0
Q29ycmVjdFNsb3RTdGF0dXM6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051
bGwoKSkpOwogfQogCi0tIAoyLjI4LjAKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414565</attachid>
            <date>2020-11-19 05:06:20 -0800</date>
            <delta_ts>2020-11-19 05:21:11 -0800</delta_ts>
            <desc>Add support for static private fields, v4</desc>
            <filename>0001-JSC-Add-support-for-static-private-class-fields.patch</filename>
            <type>text/plain</type>
            <size>19291</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBmZTY0MGVhOTM5YWFiNWUzZDUzMWZmNTZiMzVkZjM4ZjMzZjA3OGMxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogVHVlLCAxNCBKdWwgMjAyMCAxMDo0OTowOCArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIFtKU0NdIEFkZCBzdXBwb3J0IGZvciBzdGF0aWMgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQyOTcKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKSlNUZXN0czoKCkNvcHkgVjggdGVzdHMgZm9yIHN0YXRpYyBw
cml2YXRlIGZpZWxkcyBhbmQgYWRkIHRoZSB0ZXN0MjYyCmZsYWcuIEFsc28gYWRkIGEgY291cGxl
IG1vcmUgb2Ygb3VyIG93biB0ZXN0cyBmb3IgdGhlIHNha2Ugb2YKY29tcGxldGVuZXNzLgoKKiBz
dHJlc3MvY2xhc3MtZmllbGRzLXN0YXRpYy1wcml2YXRlLWhhcm1vbnkuanM6IEFkZGVkLCB3aXRo
IGEgY291cGxlIGFkZGl0aW9uYWwgdGVzdHMuCiogc3RyZXNzL3Jlc291cmNlcy9oYXJtb255LXN1
cHBvcnQuanM6Cihhc3NlcnREb2VzTm90VGhyb3cpOiBhZGRlZC4KKiB0ZXN0MjYyL2NvbmZpZy55
YW1sOgoKU291cmNlL0phdmFTY3JpcHRDb3JlOgoKU3RhdGljIHByaXZhdGUgZmllbGRzIGNvbWUg
dHJpdmlhbGx5IG5vdyB0aGF0IGJvdGggcHJpdmF0ZSBhbmQKc3RhdGljIChwdWJsaWMpIGZpZWxk
cyBhcmUgaW1wbGVtZW50ZWQuCgoqIHBhcnNlci9QYXJzZXIuY3BwOgooSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VDbGFzcyk6IGFjY2VwdCBzdGF0aWMgcHJpdmF0ZSBmaWVsZHMgaWYgdGhl
IHJ1bnRpbWUgb3B0aW9uIGFsbG93cyBpdC4KKiBydW50aW1lL09wdGlvbnMuY3BwOgooSlNDOjpP
cHRpb25zOjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKTogdXNlUHJpdmF0ZVN0YXRpY0NsYXNz
RmllbGRzIGRlcGVuZHMgb24gdXNlUHJpdmF0ZUNsYXNzRmllbGRzLgoqIHJ1bnRpbWUvT3B0aW9u
c0xpc3QuaDogYWRkIHJ1bnRpbWUgb3B0aW9uIHRvIGVuYWJsZSBzdGF0aWMgcHJpdmF0ZSBmaWVs
ZHMuCiogdG9vbHMvSlNEb2xsYXJWTS5jcHA6IGFkZCBhIG1ldGhvZCB0byBjaGVjayBmb3IgcHJp
dmF0ZSBzeW1ib2xzIGluIHRoZSBzdHJlc3MgdGVzdHMuCihKU0M6OkpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTik6CihKU0M6OkpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKToKLS0tCiBKU1Rlc3Rz
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTYgKwogLi4uL3N0cmVz
cy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1oYXJtb255LmpzICAgIHwgICA3ICstCiAuLi4vY2xhc3Mt
ZmllbGRzLXN0YXRpYy1wcml2YXRlLWhhcm1vbnkuanMgICAgfCA0MTggKysrKysrKysrKysrKysr
KysrCiBKU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMvaGFybW9ueS1zdXBwb3J0LmpzICAgfCAgMTUg
KwogSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sICAgICAgICAgICAgICAgICAgIHwgICAyICst
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgfCAgMTkgKwog
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwICAgICAgIHwgICAzICstCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCAgICAgfCAgIDMgKwogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCAgIHwgICAxICsKIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCAgICB8ICAxNCArCiAxMCBmaWxl
cyBjaGFuZ2VkLCA0OTEgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBKU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RhdGljLXByaXZhdGUtaGFybW9u
eS5qcwoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMjVjNjZiNDg5NjI4Li5hOGVkY2UyZjNkNzQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMTEt
MTkgIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgc3Vw
cG9ydCBmb3Igc3RhdGljIHByaXZhdGUgY2xhc3MgZmllbGRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQyOTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3B5IFY4IHRlc3RzIGZvciBzdGF0aWMgcHJp
dmF0ZSBmaWVsZHMgYW5kIGFkZCB0aGUgdGVzdDI2MgorICAgICAgICBmbGFnLiBBbHNvIGFkZCBh
IGNvdXBsZSBtb3JlIG9mIG91ciBvd24gdGVzdHMgZm9yIHRoZSBzYWtlIG9mCisgICAgICAgIGNv
bXBsZXRlbmVzcy4KKworICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtc3RhdGljLXByaXZh
dGUtaGFybW9ueS5qczogQWRkZWQsIHdpdGggYSBjb3VwbGUgYWRkaXRpb25hbCB0ZXN0cy4KKyAg
ICAgICAgKiBzdHJlc3MvcmVzb3VyY2VzL2hhcm1vbnktc3VwcG9ydC5qczoKKyAgICAgICAgKGFz
c2VydERvZXNOb3RUaHJvdyk6IGFkZGVkLgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6
CisKIDIwMjAtMTEtMTggIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV0FTTS1SZWZlcmVuY2VzXSBSZW1vdmUgc3VidHlwaW5nIHJ1bGUgZm9y
IGV4dGVybnJlZiBhbmQgZnVuY3JlZgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3Mt
ZmllbGRzLXByaXZhdGUtaGFybW9ueS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLWhhcm1vbnkuanMKaW5kZXggOGM3MzFjODE0OTJjLi41ZmQzZmM1NTk2N2IgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWhhcm1vbnkuanMKKysr
IGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtaGFybW9ueS5qcwpAQCAtMzYx
LDggKzM2MSw2IEBAIGxvYWQoIi4vcmVzb3VyY2VzL2hhcm1vbnktc3VwcG9ydC5qcyIpOwogICBh
c3NlcnRUaHJvd3MoKCkgPT4gbmV3IEMsIFR5cGVFcnJvcik7CiB9CiAKLS8qCi1GSVhNRTogd2Ug
ZG9uJ3QgaGF2ZSAlU3ltYm9sSXNQcml2YXRlKCkKIHsKICAgbGV0IHN5bWJvbCA9IFN5bWJvbCgp
OwogCkBAIC0zNzUsOCArMzczLDggQEAgRklYTUU6IHdlIGRvbid0IGhhdmUgJVN5bWJvbElzUHJp
dmF0ZSgpCiAKICAgdmFyIHAgPSBuZXcgUHJveHkobmV3IEMsIHsKICAgICBnZXQ6IGZ1bmN0aW9u
KHRhcmdldCwgbmFtZSkgewotICAgICAgaWYgKHR5cGVvZihhcmcpID09PSAnc3ltYm9sJykgewot
ICAgICAgICBhc3NlcnRGYWxzZSglU3ltYm9sSXNQcml2YXRlKG5hbWUpKTsKKyAgICAgIGlmICh0
eXBlb2YobmFtZSkgPT09ICdzeW1ib2wnKSB7CisgICAgICAgIGFzc2VydEZhbHNlKCR2bS5pc1By
aXZhdGVTeW1ib2wobmFtZSkpOwogICAgICAgfQogICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsK
ICAgICB9CkBAIC0zODYsNyArMzg0LDYgQEAgRklYTUU6IHdlIGRvbid0IGhhdmUgJVN5bWJvbElz
UHJpdmF0ZSgpCiAgIGFzc2VydFRocm93cygoKSA9PiBwLnNldEEoMSksIFR5cGVFcnJvcik7CiAg
IGFzc2VydEVxdWFscygxLCBwW3N5bWJvbF0pOwogfQotKi8KIAogewogICBjbGFzcyBDIHsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdGF0aWMtcHJpdmF0ZS1oYXJt
b255LmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXN0YXRpYy1wcml2YXRlLWhhcm1v
bnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NWU0MmNhM2Ey
MTUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RhdGlj
LXByaXZhdGUtaGFybW9ueS5qcwpAQCAtMCwwICsxLDQxOCBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZVByaXZhdGVTdGF0aWNDbGFzc0ZpZWxkcz0xIikKKy8vQCBkZWZhdWx0Tm9FYWdlclJ1
bgorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKworLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisv
LyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8v
ICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisKKyJ1c2Ugc3RyaWN0IjsKKworbG9hZCgiLi9yZXNvdXJjZXMv
aGFybW9ueS1zdXBwb3J0LmpzIik7CisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNhOwor
ICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4gdGhpcy4jYTsgfQorICB9CisKKyAgYXNzZXJ0RXF1
YWxzKHVuZGVmaW5lZCwgQy5hKTsKKyAgYXNzZXJ0RXF1YWxzKHVuZGVmaW5lZCwgQy5nZXRBKCkp
OworCisgIGxldCBjID0gbmV3IEM7CisgIGFzc2VydEVxdWFscyh1bmRlZmluZWQsIGMuYSk7Cit9
CisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNhID0gMTsKKyAgICBzdGF0aWMgZ2V0QSgp
IHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgfQorCisgIGFzc2VydEVxdWFscyh1bmRlZmluZWQsIEMu
YSk7CisgIGFzc2VydEVxdWFscygxLCBDLmdldEEoKSk7CisKKyAgbGV0IGMgPSBuZXcgQzsKKyAg
YXNzZXJ0RXF1YWxzKHVuZGVmaW5lZCwgYy5hKTsKK30KKworeworICBjbGFzcyBDIHsKKyAgICBz
dGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyAjYiA9IHRoaXMuI2E7CisgICAgc3RhdGljIGdldEIo
KSB7IHJldHVybiB0aGlzLiNiOyB9CisgIH0KKworICBhc3NlcnRFcXVhbHMoMSwgQy5nZXRCKCkp
OworCisgIGxldCBjID0gbmV3IEM7CisgIGFzc2VydEVxdWFscyh1bmRlZmluZWQsIGMuZ2V0Qik7
Cit9CisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNhID0gMTsKKyAgICBzdGF0aWMgZ2V0
QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgIGFzc2Vy
dFRocm93cygoKSA9PiB0aGlzLiNhLCBUeXBlRXJyb3IpOworICAgICAgQy4jYSA9IDI7CisgICAg
fQorICB9CisKKyAgYXNzZXJ0RXF1YWxzKDEsIEMuZ2V0QSgpKTsKKworICBsZXQgYyA9IG5ldyBD
OworICBhc3NlcnRUaHJvd3MoKCkgPT4gQy5wcm90b3R5cGUuZ2V0QS5jYWxsKGMpKTsKKyAgYXNz
ZXJ0RXF1YWxzKDIsIEMuZ2V0QSgpKTsKK30KKworeworICBjbGFzcyBDIHsKKyAgICBzdGF0aWMg
I2EgPSB0aGlzOworICAgIHN0YXRpYyAjYiA9ICgpID0+IHRoaXM7CisgICAgc3RhdGljIGdldEEo
KSB7IHJldHVybiB0aGlzLiNhOyB9CisgICAgc3RhdGljIGdldEIoKSB7IHJldHVybiB0aGlzLiNi
OyB9CisgIH0KKworICBhc3NlcnRTYW1lKEMsIEMuZ2V0QSgpKTsKKyAgYXNzZXJ0U2FtZShDLCBD
LmdldEIoKSgpKTsKK30KKworeworICBjbGFzcyBDIHsKKyAgICBzdGF0aWMgI2EgPSB0aGlzOwor
ICAgIHN0YXRpYyAjYiA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfTsKKyAgICBzdGF0aWMg
Z2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgICBzdGF0aWMgZ2V0QigpIHsgcmV0dXJuIHRo
aXMuI2I7IH0KKyAgfQorCisgIGFzc2VydFNhbWUoQywgQy5nZXRBKCkpOworICBhc3NlcnRTYW1l
KEMsIEMuZ2V0QigpLmNhbGwoQykpOworICBhc3NlcnRTYW1lKHVuZGVmaW5lZCwgQy5nZXRCKCko
KSk7Cit9CisKKworeworICBjbGFzcyBDIHsKKyAgICBzdGF0aWMgI2EgPSBmdW5jdGlvbigpIHsg
cmV0dXJuIDEgfTsKKyAgICBzdGF0aWMgZ2V0QSgpIHtyZXR1cm4gdGhpcy4jYTt9CisgIH0KKwor
ICBhc3NlcnRFcXVhbHMoJyNhJywgQy5nZXRBKCkubmFtZSk7Cit9CisKK3sKKyAgbGV0IGQgPSBm
dW5jdGlvbigpIHsgcmV0dXJuIG5ldy50YXJnZXQ7IH0KKyAgY2xhc3MgQyB7CisgICAgc3RhdGlj
ICNjID0gZDsKKyAgICBzdGF0aWMgZ2V0QygpIHsgcmV0dXJuIHRoaXMuI2M7IH0KKyAgfQorCisg
IGFzc2VydEVxdWFscyh1bmRlZmluZWQsIEMuZ2V0QygpKCkpOworICBhc3NlcnRTYW1lKG5ldyBk
LCBuZXcgKEMuZ2V0QygpKSk7Cit9CisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNhID0g
MTsKKyAgICBzdGF0aWMgZ2V0QShpbnN0YW5jZSkgeyByZXR1cm4gaW5zdGFuY2UuI2E7IH0KKyAg
fQorCisgIGNsYXNzIEIgeyB9CisKKyAgYXNzZXJ0RXF1YWxzKHVuZGVmaW5lZCwgQy5hKTsKKyAg
YXNzZXJ0RXF1YWxzKDEsIEMuZ2V0QShDKSk7CisgIGFzc2VydFRocm93cygoKSA9PiBDLmdldEEo
QiksIFR5cGVFcnJvcik7Cit9CisKK3sKKyAgY2xhc3MgQSB7CisgICAgc3RhdGljICNhID0gMTsK
KyAgICBzdGF0aWMgZ2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgfQorCisgIGNsYXNzIEIg
ZXh0ZW5kcyBBIHt9CisgIGFzc2VydFRocm93cygoKSA9PiBCLmdldEEoKSwgVHlwZUVycm9yKTsK
K30KKworeworICBjbGFzcyBBIHsKKyAgICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBnZXRB
KCkgeyByZXR1cm4gQS4jYTsgfQorICB9CisKKyAgY2xhc3MgQiBleHRlbmRzIEEge30KKyAgYXNz
ZXJ0U2FtZSgxLCBCLmdldEEoKSk7Cit9CisKK3sKKyAgbGV0IHByb3RvdHlwZUxvb2t1cCA9IGZh
bHNlOworICBjbGFzcyBBIHsKKyAgICBzdGF0aWMgc2V0IGEodmFsKSB7CisgICAgICBwcm90b3R5
cGVMb29rdXAgPSB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBnZXQgYSgpIHsgcmV0dXJuIHVu
ZGVmaW5lZDsgfQorICB9CisKKyAgY2xhc3MgQyBleHRlbmRzIEEgeworICAgIHN0YXRpYyAjYSA9
IDE7CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiB0aGlzLiNhOyB9CisgIH0KKworICBhc3Nl
cnRFcXVhbHMoMSwgQy5nZXRBKCkpOworICBhc3NlcnRFcXVhbHMoZmFsc2UsIHByb3RvdHlwZUxv
b2t1cCk7Cit9CisKK3sKKyAgY2xhc3MgQSB7CisgICAgc3RhdGljIGEgPSAxOworICB9CisKKyAg
Y2xhc3MgQiBleHRlbmRzIEEgeworICAgIHN0YXRpYyAjYiA9IHRoaXMuYTsKKyAgICBzdGF0aWMg
Z2V0QigpIHsgcmV0dXJuIHRoaXMuI2I7IH0KKyAgfQorCisgIGFzc2VydEVxdWFscygxLCBCLmdl
dEIoKSk7Cit9CisKK3sKKyAgY2xhc3MgQSB7CisgICAgc3RhdGljICNhID0gMTsKKyAgICBzdGF0
aWMgZ2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgfQorCisgIGNsYXNzIEIgZXh0ZW5kcyBB
IHsKKyAgICBzdGF0aWMgZ2V0QSgpIHsgcmV0dXJuIHN1cGVyLmdldEEoKTsgfQorICB9CisKKyAg
YXNzZXJ0VGhyb3dzKCgpID0+IEIuZ2V0QSgpLCBUeXBlRXJyb3IpOworfQorCit7CisgIGNsYXNz
IEEgeworICAgIHN0YXRpYyAjYSA9IDE7CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiB0aGlz
LiNhO30KKyAgfQorCisgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICBzdGF0aWMgI2EgPSAyOwor
ICAgIHN0YXRpYyBnZXRfQSgpIHsgcmV0dXJuIHRoaXMuI2E7fQorICB9CisKKyAgYXNzZXJ0RXF1
YWxzKDEsIEEuZ2V0QSgpKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IEIuZ2V0QSgpLCBUeXBlRXJy
b3IpOworICBhc3NlcnRFcXVhbHMoMiwgQi5nZXRfQSgpKTsKK30KKworeworICBsZXQgZm9vID0g
dW5kZWZpbmVkOworICBjbGFzcyBBIHsKKyAgICBzdGF0aWMgI2EgPSAoZnVuY3Rpb24oKSB7IGZv
byA9IDE7IH0pKCk7CisgIH0KKworICBhc3NlcnRFcXVhbHMoMSwgZm9vKTsKK30KKworeworICBs
ZXQgZm9vID0gdW5kZWZpbmVkOworICBjbGFzcyBBIGV4dGVuZHMgY2xhc3Mge30geworICAgIHN0
YXRpYyAjYSA9IChmdW5jdGlvbigpIHsgZm9vID0gMTsgfSkoKTsKKyAgfQorCisgIGFzc2VydEVx
dWFscygxLCBmb28pOworfQorCit7CisgIGZ1bmN0aW9uIG1ha2VDbGFzcygpIHsKKyAgICByZXR1
cm4gY2xhc3MgeworICAgICAgc3RhdGljICNhOworICAgICAgc3RhdGljIHNldEEodmFsKSB7IHRo
aXMuI2EgPSB2YWw7IH0KKyAgICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4gdGhpcy4jYTsgfQor
ICAgIH0KKyAgfQorCisgIGxldCBjbGFzc0EgPSBtYWtlQ2xhc3MoKTsKKyAgbGV0IGNsYXNzQiA9
IG1ha2VDbGFzcygpOworCisgIGFzc2VydEVxdWFscyh1bmRlZmluZWQsIGNsYXNzQS5nZXRBKCkp
OworICBhc3NlcnRFcXVhbHModW5kZWZpbmVkLCBjbGFzc0IuZ2V0QSgpKTsKKworICBjbGFzc0Eu
c2V0QSgzKTsKKyAgYXNzZXJ0RXF1YWxzKDMsIGNsYXNzQS5nZXRBKCkpOworICBhc3NlcnRFcXVh
bHModW5kZWZpbmVkLCBjbGFzc0IuZ2V0QSgpKTsKKworICBjbGFzc0Iuc2V0QSg1KTsKKyAgYXNz
ZXJ0RXF1YWxzKDMsIGNsYXNzQS5nZXRBKCkpOworICBhc3NlcnRFcXVhbHMoNSwgY2xhc3NCLmdl
dEEoKSk7CisKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGNsYXNzQS5nZXRBLmNhbGwoY2xhc3NCKSwg
VHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGNsYXNzQi5nZXRBLmNhbGwoY2xhc3NB
KSwgVHlwZUVycm9yKTsKK30KKworeworICBsZXQgdmFsdWUgPSB1bmRlZmluZWQ7CisKKyAgbmV3
IGNsYXNzIHsKKyAgICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4g
dGhpcy4jYTsgfQorCisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICBuZXcgY2xhc3MgQyB7Cisg
ICAgICAgIHN0YXRpYyAjYSA9IDI7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAg
IHZhbHVlID0gQy4jYTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCisgIGFzc2Vy
dEVxdWFscygyLCB2YWx1ZSk7Cit9CisKK3sKKyAgY2xhc3MgQSB7CisgICAgc3RhdGljICNhID0g
MTsKKyAgICBzdGF0aWMgYiA9IGNsYXNzIHsKKyAgICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4g
dGhpcy4jYTsgfQorICAgICAgc3RhdGljIGdldF9BKHZhbCkgeyByZXR1cm4gdmFsLiNhOyB9Cisg
ICAgfQorICB9CisKKyAgYXNzZXJ0RXF1YWxzKDEsIEEuYi5nZXRBLmNhbGwoQSkpOworICBhc3Nl
cnRFcXVhbHMoMSwgQS5iLmdldF9BKEEpKTsKK30KKworeworICBhc3NlcnRUaHJvd3MoKCkgPT4g
Y2xhc3MgeyBzdGF0aWMgYiA9IHRoaXMuI2E7IHN0YXRpYyAjYSA9IDEgfSwgVHlwZUVycm9yKTsK
K30KKworeworICBsZXQgc3ltYm9sID0gU3ltYm9sKCk7CisKKyAgY2xhc3MgQyB7CisgICAgc3Rh
dGljICNhID0gMTsKKyAgICBzdGF0aWMgW3N5bWJvbF0gPSAxOworICAgIHN0YXRpYyBnZXRBKCkg
eyByZXR1cm4gdGhpcy4jYTsgfQorICAgIHN0YXRpYyBzZXRBKHZhbCkgeyB0aGlzLiNhID0gdmFs
OyB9CisgIH0KKworICB2YXIgcCA9IG5ldyBQcm94eShDLCB7CisgICAgZ2V0OiBmdW5jdGlvbih0
YXJnZXQsIG5hbWUpIHsKKyAgICAgIGlmICh0eXBlb2YobmFtZSkgPT09ICdzeW1ib2wnKSB7Cisg
ICAgICAgIGFzc2VydEZhbHNlKCR2bS5pc1ByaXZhdGVTeW1ib2wobmFtZSkpOworICAgICAgfQor
ICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKKyAgICB9CisgIH0pOworCisgIGFzc2VydFRocm93
cygoKSA9PiBwLmdldEEoKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IHAuc2V0
QSgxKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0RXF1YWxzKDEsIHBbc3ltYm9sXSk7Cit9CisKK3sK
KyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNiID0gT2JqZWN0LmZyZWV6ZSh0aGlzKTsKKyAgICBz
dGF0aWMgZ2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgICBzdGF0aWMgI2EgPSAxOworICB9
CisKKyAgYXNzZXJ0RXF1YWxzKDEsIEMuZ2V0QSgpKTsKK30KKworeworICBjbGFzcyBDIHsKKyAg
ICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4gZXZhbCgndGhpcy4j
YScpOyB9CisgIH0KKworICBhc3NlcnRFcXVhbHMoMSwgQy5nZXRBKCkpOworfQorCit7CisgIHZh
ciBDOworICBldmFsKCdDID0gY2xhc3MgeyBzdGF0aWMgI2EgPSAxOyBzdGF0aWMgZ2V0QSgpIHsg
cmV0dXJuIGV2YWwoXCd0aGlzLiNhXCcpOyB9fScpOworCisgIGFzc2VydEVxdWFscygxLCBDLmdl
dEEoKSk7Cit9CisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNhID0gMTsKKyAgICBzdGF0
aWMgZ2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgICBzdGF0aWMgc2V0QSgpIHsgZXZhbCgn
dGhpcy4jYSA9IDQnKTsgfQorICB9CisKKyAgYXNzZXJ0RXF1YWxzKDEsIEMuZ2V0QSgpKTsKKyAg
Qy5zZXRBKCk7CisgIGFzc2VydEVxdWFscyg0LCBDLmdldEEoKSk7Cit9CisKK3sKKyAgY2xhc3Mg
QyB7CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiBldmFsKCd0aGlzLiNhJyk7IH0KKyAgfQor
CisgIGFzc2VydFRocm93cygoKSA9PiBDLmdldEEoKSwgU3ludGF4RXJyb3IpOworfQorCisvLyBB
ZGRpdGlvbmFsIHRlc3RzIGJ5IHRoZSBXZWJLaXQgcHJvamVjdC4KK2Z1bmN0aW9uIHNob3VsZFRo
cm93U3ludGF4RXJyb3Ioc2NyaXB0KSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAg
ICAgIGV2YWwoc2NyaXB0KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBTeW50YXhFcnJvciEnKTsKK30KKworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7ICNmb28gPSAwOyBzdGF0aWMgI2ZvbyA9IDE7IH0i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBzdGF0aWMgI2ZvbyA9IDA7ICNm
b28gPSAxOyB9Iik7CisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNmb28gPSAwOworICAg
IHRlc3RBY2Nlc3MoWCkgeyByZXR1cm4gWC4jZm9vOyB9CisgIH0KKworICBjbGFzcyBEIHsKKyAg
ICBzdGF0aWMgI2ZvbyA9IDA7CisgIH0KKworICBsZXQgYyA9IG5ldyBDKCk7CisgIGFzc2VydERv
ZXNOb3RUaHJvdyhjLnRlc3RBY2Nlc3MoQykpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gYy50ZXN0
QWNjZXNzKEQpLCBUeXBlRXJyb3IpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVz
b3VyY2VzL2hhcm1vbnktc3VwcG9ydC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy9oYXJt
b255LXN1cHBvcnQuanMKaW5kZXggMDI0YjNiMDg4OWUxLi4xNjdjYzYxMjA5MTIgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy9oYXJtb255LXN1cHBvcnQuanMKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvcmVzb3VyY2VzL2hhcm1vbnktc3VwcG9ydC5qcwpAQCAtMTk0LDMgKzE5NCwx
OCBAQCBmdW5jdGlvbiBhc3NlcnRUaHJvd3MoY29kZSwgdHlwZV9vcHQsIGNhdXNlX29wdCkgewog
ICAgICAgdHlwZW9mIHR5cGVfb3B0ID09ICdmdW5jdGlvbicgPyB0eXBlX29wdCA6ICdhbnkgZXhj
ZXB0aW9uJzsKICAgZmFpbChleHBlY3RlZCwgJ25vIGV4Y2VwdGlvbicsICdleHBlY3RlZCB0aHJv
d24gZXhjZXB0aW9uJyk7CiB9CisKKy8qKgorICogUnVucyBjb2RlKCkgYW5kIGFzc2VydHMgdGhh
dCBpdCBkb2VzIG5vdCB0aHJvd3MgYW4gZXhjZXB0aW9uLgorICovCitmdW5jdGlvbiBhc3NlcnRE
b2VzTm90VGhyb3coY29kZSwgbmFtZV9vcHQpIHsKKyAgdHJ5IHsKKyAgICBpZiAodHlwZW9mIGNv
ZGUgPT0gJ2Z1bmN0aW9uJykgeworICAgICAgY29kZSgpOworICAgIH0gZWxzZSB7CisgICAgICBl
dmFsKGNvZGUpOworICAgIH0KKyAgfSBjYXRjaCAoZSkgeworICAgIGZhaWwoIm5vIGV4Y2VwdGlv
biIsICJ0aHJldyBhbiBleGNlcHRpb246ICIgKyAoZS5tZXNzYWdlIHx8IGUpKTsKKyAgfQorfQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYy
L2NvbmZpZy55YW1sCmluZGV4IDJiYzlkMjZiNGJmZC4uYmRkOGJiZmQ1MmRhIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZp
Zy55YW1sCkBAIC01LDYgKzUsNyBAQCBmbGFnczoKICAgRmluYWxpemF0aW9uUmVnaXN0cnk6IHVz
ZVdlYWtSZWZzCiAgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2YXRlQ2xhc3NGaWVsZHMK
ICAgY2xhc3Mtc3RhdGljLWZpZWxkcy1wdWJsaWM6IHVzZVB1YmxpY1N0YXRpY0NsYXNzRmllbGRz
CisgIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZTogdXNlUHJpdmF0ZVN0YXRpY0NsYXNzRmll
bGRzCiAgIEludGwuRGF0ZVRpbWVGb3JtYXQtZGF5UGVyaW9kOiB1c2VJbnRsRGF0ZVRpbWVGb3Jt
YXREYXlQZXJpb2QKICAgU2hhcmVkQXJyYXlCdWZmZXI6IHVzZVNoYXJlZEFycmF5QnVmZmVyCiAg
IEF0b21pY3M6IHVzZVNoYXJlZEFycmF5QnVmZmVyCkBAIC0yMCw3ICsyMSw2IEBAIHNraXA6CiAK
ICAgICAtIGFyYml0cmFyeS1tb2R1bGUtbmFtZXNwYWNlLW5hbWVzCiAgICAgLSBjbGFzcy1tZXRo
b2RzLXByaXZhdGUKLSAgICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xh
c3Mtc3RhdGljLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xlYW51cFNvbWUKICAgICAtIGhvc3Qt
Z2MtcmVxdWlyZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDM2ODU1MWVhYWQ1ZS4uZWEx
YmI4NTFkNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAy
MC0xMS0xOSAgWGFuIEzDs3BleiAgPHhhbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIEFk
ZCBzdXBwb3J0IGZvciBzdGF0aWMgcHJpdmF0ZSBjbGFzcyBmaWVsZHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDI5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXRpYyBwcml2YXRlIGZpZWxkcyBj
b21lIHRyaXZpYWxseSBub3cgdGhhdCBib3RoIHByaXZhdGUgYW5kCisgICAgICAgIHN0YXRpYyAo
cHVibGljKSBmaWVsZHMgYXJlIGltcGxlbWVudGVkLgorCisgICAgICAgICogcGFyc2VyL1BhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKTogYWNj
ZXB0IHN0YXRpYyBwcml2YXRlIGZpZWxkcyBpZiB0aGUgcnVudGltZSBvcHRpb24gYWxsb3dzIGl0
LgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6
OnJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMpOiB1c2VQcml2YXRlU3RhdGljQ2xhc3NGaWVsZHMg
ZGVwZW5kcyBvbiB1c2VQcml2YXRlQ2xhc3NGaWVsZHMuCisgICAgICAgICogcnVudGltZS9PcHRp
b25zTGlzdC5oOiBhZGQgcnVudGltZSBvcHRpb24gdG8gZW5hYmxlIHN0YXRpYyBwcml2YXRlIGZp
ZWxkcy4KKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDogYWRkIGEgbWV0aG9kIHRvIGNo
ZWNrIGZvciBwcml2YXRlIHN5bWJvbHMgaW4gdGhlIHN0cmVzcyB0ZXN0cy4KKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTTo6
ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIwLTExLTE4ICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRiZXpo
ZXRza292QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gUmVtb3ZlIHN1
YnR5cGluZyBydWxlIGZvciBleHRlcm5yZWYgYW5kIGZ1bmNyZWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA2N2ViM2VlMmJmNDUuLmY0MTMwZmI3NGE0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjk3MSw3ICsyOTcxLDgg
QEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBBU1NFUlQoT3B0aW9uczo6dXNlUHJpdmF0ZUNs
YXNzRmllbGRzKCkpOwogICAgICAgICAgICAgSlNUb2tlbiB0b2tlbiA9IG1fdG9rZW47CiAgICAg
ICAgICAgICBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwotICAgICAgICAgICAgZmFpbElm
VHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMsICJTdGF0aWMgY2xhc3MgZWxlbWVu
dCBjYW5ub3QgYmUgcHJpdmF0ZSIpOworICAgICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VQcml2
YXRlU3RhdGljQ2xhc3NGaWVsZHMoKSkKKyAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKHRhZyA9
PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIlN0YXRpYyBjbGFzcyBlbGVtZW50IGNhbm5vdCBi
ZSBwcml2YXRlIik7CiAgICAgICAgICAgICBmYWlsSWZUcnVlKGlzR2V0dGVyIHx8IGlzU2V0dGVy
LCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOwogICAgICAg
ICAgICAgQVNTRVJUKGlkZW50KTsKICAgICAgICAgICAgIG5leHQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXggMjYxNjdjMDAxY2I0Li40NWQ1ZDI3MDE2
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCkBAIC01NTEs
NiArNTUxLDkgQEAgdm9pZCBPcHRpb25zOjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkKIAog
ICAgICAgICBGT1JfRUFDSF9KU0NfRVhQRVJJTUVOVEFMX09QVElPTihESVNBQkxFX1RJRVJTKTsK
ICAgICB9CisKKyAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZVN0YXRpY0NsYXNzRmllbGRzKCkp
CisgICAgICAgIE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpID0gdHJ1ZTsKIH0KIAog
aW5saW5lIHZvaWQqIE9wdGlvbnM6OmFkZHJlc3NPZk9wdGlvbihPcHRpb25zOjpJRCBpZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IDMyMjhiNmMw
NzFjZC4uMmMwYWNkM2UyYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnNMaXN0LmgKQEAgLTUyNSw2ICs1MjUsNyBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNh
blVzZUpJVENhZ2UoKTsKICAgICB2KEJvb2wsIGV4cG9zZUN1c3RvbVNldHRlcnNPbkdsb2JhbE9i
amVjdEZvclRlc3RpbmcsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KEJvb2wsIHVz
ZUpJVENhZ2UsIGNhblVzZUpJVENhZ2UoKSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihCb29s
LCB1c2VQdWJsaWNTdGF0aWNDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhl
IHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHVibGljIHN0YXRpYyBkYXRhIGZpZWxkcyBpbnNpZGUg
Y2xhc3Nlcy4iKSBcCisgICAgdihCb29sLCB1c2VQcml2YXRlU3RhdGljQ2xhc3NGaWVsZHMsIGZh
bHNlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRl
IHN0YXRpYyBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCiAKIGVudW0gT3B0aW9uRXF1
aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTS5jcHAKaW5kZXggYWVkMGI0YjcwY2Y5Li41Zjk1MDkzMTJjMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTE4NjksNiArMTg2OSw3
IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uSXNNZW1vcnlMaW1p
dGVkKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uVXNlSklUKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uSXNHaWdhY2FnZUVuYWJs
ZWQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Ub1VuY2FjaGVh
YmxlRGljdGlvbmFyeSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlv
bklzUHJpdmF0ZVN5bWJvbCk7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0RvbGxhclZNOjpzX2luZm8g
PSB7ICJEb2xsYXJWTSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNEb2xsYXJWTSkgfTsKIApAQCAtMzM3Nyw2ICszMzc4LDE3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5LCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3QpOwog
fQogCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Jc1ByaXZhdGVTeW1ib2wsIChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBEb2xsYXJWTUFz
c2VydFNjb3BlIGFzc2VydFNjb3BlOworCisgICAgU3ltYm9sKiBzeW1ib2wgPSBhc1N5bWJvbChj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBpZiAoIXN5bWJvbCkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKHN5bWJvbC0+dWlkKCkuaXNQcml2YXRlKCkpKTsKK30KKwogY29u
c3RleHByIHVuc2lnbmVkIGpzRG9sbGFyVk1Qcm9wZXJ0eUF0dHJpYnV0ZXMgPSBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZTsKIAogdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCkBAIC0zNTI3LDYgKzM1MzksOCBAQCB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKIAogICAgIGFkZEZ1bmN0aW9uKHZtLCAidG9VbmNhY2hlYWJsZURpY3Rp
b25hcnkiLCBmdW5jdGlvblRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5LCAxKTsKIAorICAgIGFkZEZ1
bmN0aW9uKHZtLCAiaXNQcml2YXRlU3ltYm9sIiwgZnVuY3Rpb25Jc1ByaXZhdGVTeW1ib2wsIDEp
OworCiAgICAgbV9vYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0
dXNTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0
Q29ycmVjdFNsb3RTdGF0dXM6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051
bGwoKSkpOwogfQogCi0tIAoyLjI4LjAKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414568</attachid>
            <date>2020-11-19 05:20:56 -0800</date>
            <delta_ts>2020-11-19 12:46:13 -0800</delta_ts>
            <desc>Add support for static private fields, v4</desc>
            <filename>0001-JSC-Add-support-for-static-private-class-fields.patch</filename>
            <type>text/plain</type>
            <size>19290</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAxZjg1YWJiMmZiNmYyNWYzNmMxMDdiZGQ1MjYzY2VjNDFkYzI1ODU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogVHVlLCAxNCBKdWwgMjAyMCAxMDo0OTowOCArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIFtKU0NdIEFkZCBzdXBwb3J0IGZvciBzdGF0aWMgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQyOTcKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKSlNUZXN0czoKCkNvcHkgVjggdGVzdHMgZm9yIHN0YXRpYyBw
cml2YXRlIGZpZWxkcyBhbmQgYWRkIHRoZSB0ZXN0MjYyCmZsYWcuIEFsc28gYWRkIGEgY291cGxl
IG1vcmUgb2Ygb3VyIG93biB0ZXN0cyBmb3IgdGhlIHNha2Ugb2YKY29tcGxldGVuZXNzLgoKKiBz
dHJlc3MvY2xhc3MtZmllbGRzLXN0YXRpYy1wcml2YXRlLWhhcm1vbnkuanM6IEFkZGVkLCB3aXRo
IGEgY291cGxlIGFkZGl0aW9uYWwgdGVzdHMuCiogc3RyZXNzL3Jlc291cmNlcy9oYXJtb255LXN1
cHBvcnQuanM6Cihhc3NlcnREb2VzTm90VGhyb3cpOiBhZGRlZC4KKiB0ZXN0MjYyL2NvbmZpZy55
YW1sOgoKU291cmNlL0phdmFTY3JpcHRDb3JlOgoKU3RhdGljIHByaXZhdGUgZmllbGRzIGNvbWUg
dHJpdmlhbGx5IG5vdyB0aGF0IGJvdGggcHJpdmF0ZSBhbmQKc3RhdGljIChwdWJsaWMpIGZpZWxk
cyBhcmUgaW1wbGVtZW50ZWQuCgoqIHBhcnNlci9QYXJzZXIuY3BwOgooSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VDbGFzcyk6IGFjY2VwdCBzdGF0aWMgcHJpdmF0ZSBmaWVsZHMgaWYgdGhl
IHJ1bnRpbWUgb3B0aW9uIGFsbG93cyBpdC4KKiBydW50aW1lL09wdGlvbnMuY3BwOgooSlNDOjpP
cHRpb25zOjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKTogdXNlUHJpdmF0ZVN0YXRpY0NsYXNz
RmllbGRzIGRlcGVuZHMgb24gdXNlUHJpdmF0ZUNsYXNzRmllbGRzLgoqIHJ1bnRpbWUvT3B0aW9u
c0xpc3QuaDogYWRkIHJ1bnRpbWUgb3B0aW9uIHRvIGVuYWJsZSBzdGF0aWMgcHJpdmF0ZSBmaWVs
ZHMuCiogdG9vbHMvSlNEb2xsYXJWTS5jcHA6IGFkZCBhIG1ldGhvZCB0byBjaGVjayBmb3IgcHJp
dmF0ZSBzeW1ib2xzIGluIHRoZSBzdHJlc3MgdGVzdHMuCihKU0M6OkpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTik6CihKU0M6OkpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKToKLS0tCiBKU1Rlc3Rz
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTYgKwogLi4uL3N0cmVz
cy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1oYXJtb255LmpzICAgIHwgICA3ICstCiAuLi4vY2xhc3Mt
ZmllbGRzLXN0YXRpYy1wcml2YXRlLWhhcm1vbnkuanMgICAgfCA0MTggKysrKysrKysrKysrKysr
KysrCiBKU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMvaGFybW9ueS1zdXBwb3J0LmpzICAgfCAgMTUg
KwogSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sICAgICAgICAgICAgICAgICAgIHwgICAyICst
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgfCAgMTkgKwog
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwICAgICAgIHwgICAzICstCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCAgICAgfCAgIDMgKwogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCAgIHwgICAxICsKIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCAgICB8ICAxMyArCiAxMCBmaWxl
cyBjaGFuZ2VkLCA0OTAgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBKU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RhdGljLXByaXZhdGUtaGFybW9u
eS5qcwoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMjVjNjZiNDg5NjI4Li5hOGVkY2UyZjNkNzQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMTEt
MTkgIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgc3Vw
cG9ydCBmb3Igc3RhdGljIHByaXZhdGUgY2xhc3MgZmllbGRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQyOTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3B5IFY4IHRlc3RzIGZvciBzdGF0aWMgcHJp
dmF0ZSBmaWVsZHMgYW5kIGFkZCB0aGUgdGVzdDI2MgorICAgICAgICBmbGFnLiBBbHNvIGFkZCBh
IGNvdXBsZSBtb3JlIG9mIG91ciBvd24gdGVzdHMgZm9yIHRoZSBzYWtlIG9mCisgICAgICAgIGNv
bXBsZXRlbmVzcy4KKworICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtc3RhdGljLXByaXZh
dGUtaGFybW9ueS5qczogQWRkZWQsIHdpdGggYSBjb3VwbGUgYWRkaXRpb25hbCB0ZXN0cy4KKyAg
ICAgICAgKiBzdHJlc3MvcmVzb3VyY2VzL2hhcm1vbnktc3VwcG9ydC5qczoKKyAgICAgICAgKGFz
c2VydERvZXNOb3RUaHJvdyk6IGFkZGVkLgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6
CisKIDIwMjAtMTEtMTggIERtaXRyeSBCZXpoZXRza292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV0FTTS1SZWZlcmVuY2VzXSBSZW1vdmUgc3VidHlwaW5nIHJ1bGUgZm9y
IGV4dGVybnJlZiBhbmQgZnVuY3JlZgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3Mt
ZmllbGRzLXByaXZhdGUtaGFybW9ueS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLWhhcm1vbnkuanMKaW5kZXggOGM3MzFjODE0OTJjLi41ZmQzZmM1NTk2N2IgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWhhcm1vbnkuanMKKysr
IGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtaGFybW9ueS5qcwpAQCAtMzYx
LDggKzM2MSw2IEBAIGxvYWQoIi4vcmVzb3VyY2VzL2hhcm1vbnktc3VwcG9ydC5qcyIpOwogICBh
c3NlcnRUaHJvd3MoKCkgPT4gbmV3IEMsIFR5cGVFcnJvcik7CiB9CiAKLS8qCi1GSVhNRTogd2Ug
ZG9uJ3QgaGF2ZSAlU3ltYm9sSXNQcml2YXRlKCkKIHsKICAgbGV0IHN5bWJvbCA9IFN5bWJvbCgp
OwogCkBAIC0zNzUsOCArMzczLDggQEAgRklYTUU6IHdlIGRvbid0IGhhdmUgJVN5bWJvbElzUHJp
dmF0ZSgpCiAKICAgdmFyIHAgPSBuZXcgUHJveHkobmV3IEMsIHsKICAgICBnZXQ6IGZ1bmN0aW9u
KHRhcmdldCwgbmFtZSkgewotICAgICAgaWYgKHR5cGVvZihhcmcpID09PSAnc3ltYm9sJykgewot
ICAgICAgICBhc3NlcnRGYWxzZSglU3ltYm9sSXNQcml2YXRlKG5hbWUpKTsKKyAgICAgIGlmICh0
eXBlb2YobmFtZSkgPT09ICdzeW1ib2wnKSB7CisgICAgICAgIGFzc2VydEZhbHNlKCR2bS5pc1By
aXZhdGVTeW1ib2wobmFtZSkpOwogICAgICAgfQogICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsK
ICAgICB9CkBAIC0zODYsNyArMzg0LDYgQEAgRklYTUU6IHdlIGRvbid0IGhhdmUgJVN5bWJvbElz
UHJpdmF0ZSgpCiAgIGFzc2VydFRocm93cygoKSA9PiBwLnNldEEoMSksIFR5cGVFcnJvcik7CiAg
IGFzc2VydEVxdWFscygxLCBwW3N5bWJvbF0pOwogfQotKi8KIAogewogICBjbGFzcyBDIHsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdGF0aWMtcHJpdmF0ZS1oYXJt
b255LmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXN0YXRpYy1wcml2YXRlLWhhcm1v
bnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NWU0MmNhM2Ey
MTUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RhdGlj
LXByaXZhdGUtaGFybW9ueS5qcwpAQCAtMCwwICsxLDQxOCBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZVByaXZhdGVTdGF0aWNDbGFzc0ZpZWxkcz0xIikKKy8vQCBkZWZhdWx0Tm9FYWdlclJ1
bgorCisvLyBDb3B5cmlnaHQgMjAxOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKworLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworLy8gICAgICAgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisv
LyAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyAgICAgICBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKy8v
ICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisKKyJ1c2Ugc3RyaWN0IjsKKworbG9hZCgiLi9yZXNvdXJjZXMv
aGFybW9ueS1zdXBwb3J0LmpzIik7CisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNhOwor
ICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4gdGhpcy4jYTsgfQorICB9CisKKyAgYXNzZXJ0RXF1
YWxzKHVuZGVmaW5lZCwgQy5hKTsKKyAgYXNzZXJ0RXF1YWxzKHVuZGVmaW5lZCwgQy5nZXRBKCkp
OworCisgIGxldCBjID0gbmV3IEM7CisgIGFzc2VydEVxdWFscyh1bmRlZmluZWQsIGMuYSk7Cit9
CisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNhID0gMTsKKyAgICBzdGF0aWMgZ2V0QSgp
IHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgfQorCisgIGFzc2VydEVxdWFscyh1bmRlZmluZWQsIEMu
YSk7CisgIGFzc2VydEVxdWFscygxLCBDLmdldEEoKSk7CisKKyAgbGV0IGMgPSBuZXcgQzsKKyAg
YXNzZXJ0RXF1YWxzKHVuZGVmaW5lZCwgYy5hKTsKK30KKworeworICBjbGFzcyBDIHsKKyAgICBz
dGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyAjYiA9IHRoaXMuI2E7CisgICAgc3RhdGljIGdldEIo
KSB7IHJldHVybiB0aGlzLiNiOyB9CisgIH0KKworICBhc3NlcnRFcXVhbHMoMSwgQy5nZXRCKCkp
OworCisgIGxldCBjID0gbmV3IEM7CisgIGFzc2VydEVxdWFscyh1bmRlZmluZWQsIGMuZ2V0Qik7
Cit9CisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNhID0gMTsKKyAgICBzdGF0aWMgZ2V0
QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgIGFzc2Vy
dFRocm93cygoKSA9PiB0aGlzLiNhLCBUeXBlRXJyb3IpOworICAgICAgQy4jYSA9IDI7CisgICAg
fQorICB9CisKKyAgYXNzZXJ0RXF1YWxzKDEsIEMuZ2V0QSgpKTsKKworICBsZXQgYyA9IG5ldyBD
OworICBhc3NlcnRUaHJvd3MoKCkgPT4gQy5wcm90b3R5cGUuZ2V0QS5jYWxsKGMpKTsKKyAgYXNz
ZXJ0RXF1YWxzKDIsIEMuZ2V0QSgpKTsKK30KKworeworICBjbGFzcyBDIHsKKyAgICBzdGF0aWMg
I2EgPSB0aGlzOworICAgIHN0YXRpYyAjYiA9ICgpID0+IHRoaXM7CisgICAgc3RhdGljIGdldEEo
KSB7IHJldHVybiB0aGlzLiNhOyB9CisgICAgc3RhdGljIGdldEIoKSB7IHJldHVybiB0aGlzLiNi
OyB9CisgIH0KKworICBhc3NlcnRTYW1lKEMsIEMuZ2V0QSgpKTsKKyAgYXNzZXJ0U2FtZShDLCBD
LmdldEIoKSgpKTsKK30KKworeworICBjbGFzcyBDIHsKKyAgICBzdGF0aWMgI2EgPSB0aGlzOwor
ICAgIHN0YXRpYyAjYiA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfTsKKyAgICBzdGF0aWMg
Z2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgICBzdGF0aWMgZ2V0QigpIHsgcmV0dXJuIHRo
aXMuI2I7IH0KKyAgfQorCisgIGFzc2VydFNhbWUoQywgQy5nZXRBKCkpOworICBhc3NlcnRTYW1l
KEMsIEMuZ2V0QigpLmNhbGwoQykpOworICBhc3NlcnRTYW1lKHVuZGVmaW5lZCwgQy5nZXRCKCko
KSk7Cit9CisKKworeworICBjbGFzcyBDIHsKKyAgICBzdGF0aWMgI2EgPSBmdW5jdGlvbigpIHsg
cmV0dXJuIDEgfTsKKyAgICBzdGF0aWMgZ2V0QSgpIHtyZXR1cm4gdGhpcy4jYTt9CisgIH0KKwor
ICBhc3NlcnRFcXVhbHMoJyNhJywgQy5nZXRBKCkubmFtZSk7Cit9CisKK3sKKyAgbGV0IGQgPSBm
dW5jdGlvbigpIHsgcmV0dXJuIG5ldy50YXJnZXQ7IH0KKyAgY2xhc3MgQyB7CisgICAgc3RhdGlj
ICNjID0gZDsKKyAgICBzdGF0aWMgZ2V0QygpIHsgcmV0dXJuIHRoaXMuI2M7IH0KKyAgfQorCisg
IGFzc2VydEVxdWFscyh1bmRlZmluZWQsIEMuZ2V0QygpKCkpOworICBhc3NlcnRTYW1lKG5ldyBk
LCBuZXcgKEMuZ2V0QygpKSk7Cit9CisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNhID0g
MTsKKyAgICBzdGF0aWMgZ2V0QShpbnN0YW5jZSkgeyByZXR1cm4gaW5zdGFuY2UuI2E7IH0KKyAg
fQorCisgIGNsYXNzIEIgeyB9CisKKyAgYXNzZXJ0RXF1YWxzKHVuZGVmaW5lZCwgQy5hKTsKKyAg
YXNzZXJ0RXF1YWxzKDEsIEMuZ2V0QShDKSk7CisgIGFzc2VydFRocm93cygoKSA9PiBDLmdldEEo
QiksIFR5cGVFcnJvcik7Cit9CisKK3sKKyAgY2xhc3MgQSB7CisgICAgc3RhdGljICNhID0gMTsK
KyAgICBzdGF0aWMgZ2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgfQorCisgIGNsYXNzIEIg
ZXh0ZW5kcyBBIHt9CisgIGFzc2VydFRocm93cygoKSA9PiBCLmdldEEoKSwgVHlwZUVycm9yKTsK
K30KKworeworICBjbGFzcyBBIHsKKyAgICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBnZXRB
KCkgeyByZXR1cm4gQS4jYTsgfQorICB9CisKKyAgY2xhc3MgQiBleHRlbmRzIEEge30KKyAgYXNz
ZXJ0U2FtZSgxLCBCLmdldEEoKSk7Cit9CisKK3sKKyAgbGV0IHByb3RvdHlwZUxvb2t1cCA9IGZh
bHNlOworICBjbGFzcyBBIHsKKyAgICBzdGF0aWMgc2V0IGEodmFsKSB7CisgICAgICBwcm90b3R5
cGVMb29rdXAgPSB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBnZXQgYSgpIHsgcmV0dXJuIHVu
ZGVmaW5lZDsgfQorICB9CisKKyAgY2xhc3MgQyBleHRlbmRzIEEgeworICAgIHN0YXRpYyAjYSA9
IDE7CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiB0aGlzLiNhOyB9CisgIH0KKworICBhc3Nl
cnRFcXVhbHMoMSwgQy5nZXRBKCkpOworICBhc3NlcnRFcXVhbHMoZmFsc2UsIHByb3RvdHlwZUxv
b2t1cCk7Cit9CisKK3sKKyAgY2xhc3MgQSB7CisgICAgc3RhdGljIGEgPSAxOworICB9CisKKyAg
Y2xhc3MgQiBleHRlbmRzIEEgeworICAgIHN0YXRpYyAjYiA9IHRoaXMuYTsKKyAgICBzdGF0aWMg
Z2V0QigpIHsgcmV0dXJuIHRoaXMuI2I7IH0KKyAgfQorCisgIGFzc2VydEVxdWFscygxLCBCLmdl
dEIoKSk7Cit9CisKK3sKKyAgY2xhc3MgQSB7CisgICAgc3RhdGljICNhID0gMTsKKyAgICBzdGF0
aWMgZ2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgfQorCisgIGNsYXNzIEIgZXh0ZW5kcyBB
IHsKKyAgICBzdGF0aWMgZ2V0QSgpIHsgcmV0dXJuIHN1cGVyLmdldEEoKTsgfQorICB9CisKKyAg
YXNzZXJ0VGhyb3dzKCgpID0+IEIuZ2V0QSgpLCBUeXBlRXJyb3IpOworfQorCit7CisgIGNsYXNz
IEEgeworICAgIHN0YXRpYyAjYSA9IDE7CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiB0aGlz
LiNhO30KKyAgfQorCisgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICBzdGF0aWMgI2EgPSAyOwor
ICAgIHN0YXRpYyBnZXRfQSgpIHsgcmV0dXJuIHRoaXMuI2E7fQorICB9CisKKyAgYXNzZXJ0RXF1
YWxzKDEsIEEuZ2V0QSgpKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IEIuZ2V0QSgpLCBUeXBlRXJy
b3IpOworICBhc3NlcnRFcXVhbHMoMiwgQi5nZXRfQSgpKTsKK30KKworeworICBsZXQgZm9vID0g
dW5kZWZpbmVkOworICBjbGFzcyBBIHsKKyAgICBzdGF0aWMgI2EgPSAoZnVuY3Rpb24oKSB7IGZv
byA9IDE7IH0pKCk7CisgIH0KKworICBhc3NlcnRFcXVhbHMoMSwgZm9vKTsKK30KKworeworICBs
ZXQgZm9vID0gdW5kZWZpbmVkOworICBjbGFzcyBBIGV4dGVuZHMgY2xhc3Mge30geworICAgIHN0
YXRpYyAjYSA9IChmdW5jdGlvbigpIHsgZm9vID0gMTsgfSkoKTsKKyAgfQorCisgIGFzc2VydEVx
dWFscygxLCBmb28pOworfQorCit7CisgIGZ1bmN0aW9uIG1ha2VDbGFzcygpIHsKKyAgICByZXR1
cm4gY2xhc3MgeworICAgICAgc3RhdGljICNhOworICAgICAgc3RhdGljIHNldEEodmFsKSB7IHRo
aXMuI2EgPSB2YWw7IH0KKyAgICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4gdGhpcy4jYTsgfQor
ICAgIH0KKyAgfQorCisgIGxldCBjbGFzc0EgPSBtYWtlQ2xhc3MoKTsKKyAgbGV0IGNsYXNzQiA9
IG1ha2VDbGFzcygpOworCisgIGFzc2VydEVxdWFscyh1bmRlZmluZWQsIGNsYXNzQS5nZXRBKCkp
OworICBhc3NlcnRFcXVhbHModW5kZWZpbmVkLCBjbGFzc0IuZ2V0QSgpKTsKKworICBjbGFzc0Eu
c2V0QSgzKTsKKyAgYXNzZXJ0RXF1YWxzKDMsIGNsYXNzQS5nZXRBKCkpOworICBhc3NlcnRFcXVh
bHModW5kZWZpbmVkLCBjbGFzc0IuZ2V0QSgpKTsKKworICBjbGFzc0Iuc2V0QSg1KTsKKyAgYXNz
ZXJ0RXF1YWxzKDMsIGNsYXNzQS5nZXRBKCkpOworICBhc3NlcnRFcXVhbHMoNSwgY2xhc3NCLmdl
dEEoKSk7CisKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGNsYXNzQS5nZXRBLmNhbGwoY2xhc3NCKSwg
VHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IGNsYXNzQi5nZXRBLmNhbGwoY2xhc3NB
KSwgVHlwZUVycm9yKTsKK30KKworeworICBsZXQgdmFsdWUgPSB1bmRlZmluZWQ7CisKKyAgbmV3
IGNsYXNzIHsKKyAgICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4g
dGhpcy4jYTsgfQorCisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICBuZXcgY2xhc3MgQyB7Cisg
ICAgICAgIHN0YXRpYyAjYSA9IDI7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAg
IHZhbHVlID0gQy4jYTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCisgIGFzc2Vy
dEVxdWFscygyLCB2YWx1ZSk7Cit9CisKK3sKKyAgY2xhc3MgQSB7CisgICAgc3RhdGljICNhID0g
MTsKKyAgICBzdGF0aWMgYiA9IGNsYXNzIHsKKyAgICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4g
dGhpcy4jYTsgfQorICAgICAgc3RhdGljIGdldF9BKHZhbCkgeyByZXR1cm4gdmFsLiNhOyB9Cisg
ICAgfQorICB9CisKKyAgYXNzZXJ0RXF1YWxzKDEsIEEuYi5nZXRBLmNhbGwoQSkpOworICBhc3Nl
cnRFcXVhbHMoMSwgQS5iLmdldF9BKEEpKTsKK30KKworeworICBhc3NlcnRUaHJvd3MoKCkgPT4g
Y2xhc3MgeyBzdGF0aWMgYiA9IHRoaXMuI2E7IHN0YXRpYyAjYSA9IDEgfSwgVHlwZUVycm9yKTsK
K30KKworeworICBsZXQgc3ltYm9sID0gU3ltYm9sKCk7CisKKyAgY2xhc3MgQyB7CisgICAgc3Rh
dGljICNhID0gMTsKKyAgICBzdGF0aWMgW3N5bWJvbF0gPSAxOworICAgIHN0YXRpYyBnZXRBKCkg
eyByZXR1cm4gdGhpcy4jYTsgfQorICAgIHN0YXRpYyBzZXRBKHZhbCkgeyB0aGlzLiNhID0gdmFs
OyB9CisgIH0KKworICB2YXIgcCA9IG5ldyBQcm94eShDLCB7CisgICAgZ2V0OiBmdW5jdGlvbih0
YXJnZXQsIG5hbWUpIHsKKyAgICAgIGlmICh0eXBlb2YobmFtZSkgPT09ICdzeW1ib2wnKSB7Cisg
ICAgICAgIGFzc2VydEZhbHNlKCR2bS5pc1ByaXZhdGVTeW1ib2wobmFtZSkpOworICAgICAgfQor
ICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXTsKKyAgICB9CisgIH0pOworCisgIGFzc2VydFRocm93
cygoKSA9PiBwLmdldEEoKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0VGhyb3dzKCgpID0+IHAuc2V0
QSgxKSwgVHlwZUVycm9yKTsKKyAgYXNzZXJ0RXF1YWxzKDEsIHBbc3ltYm9sXSk7Cit9CisKK3sK
KyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNiID0gT2JqZWN0LmZyZWV6ZSh0aGlzKTsKKyAgICBz
dGF0aWMgZ2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgICBzdGF0aWMgI2EgPSAxOworICB9
CisKKyAgYXNzZXJ0RXF1YWxzKDEsIEMuZ2V0QSgpKTsKK30KKworeworICBjbGFzcyBDIHsKKyAg
ICBzdGF0aWMgI2EgPSAxOworICAgIHN0YXRpYyBnZXRBKCkgeyByZXR1cm4gZXZhbCgndGhpcy4j
YScpOyB9CisgIH0KKworICBhc3NlcnRFcXVhbHMoMSwgQy5nZXRBKCkpOworfQorCit7CisgIHZh
ciBDOworICBldmFsKCdDID0gY2xhc3MgeyBzdGF0aWMgI2EgPSAxOyBzdGF0aWMgZ2V0QSgpIHsg
cmV0dXJuIGV2YWwoXCd0aGlzLiNhXCcpOyB9fScpOworCisgIGFzc2VydEVxdWFscygxLCBDLmdl
dEEoKSk7Cit9CisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNhID0gMTsKKyAgICBzdGF0
aWMgZ2V0QSgpIHsgcmV0dXJuIHRoaXMuI2E7IH0KKyAgICBzdGF0aWMgc2V0QSgpIHsgZXZhbCgn
dGhpcy4jYSA9IDQnKTsgfQorICB9CisKKyAgYXNzZXJ0RXF1YWxzKDEsIEMuZ2V0QSgpKTsKKyAg
Qy5zZXRBKCk7CisgIGFzc2VydEVxdWFscyg0LCBDLmdldEEoKSk7Cit9CisKK3sKKyAgY2xhc3Mg
QyB7CisgICAgc3RhdGljIGdldEEoKSB7IHJldHVybiBldmFsKCd0aGlzLiNhJyk7IH0KKyAgfQor
CisgIGFzc2VydFRocm93cygoKSA9PiBDLmdldEEoKSwgU3ludGF4RXJyb3IpOworfQorCisvLyBB
ZGRpdGlvbmFsIHRlc3RzIGJ5IHRoZSBXZWJLaXQgcHJvamVjdC4KK2Z1bmN0aW9uIHNob3VsZFRo
cm93U3ludGF4RXJyb3Ioc2NyaXB0KSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAg
ICAgIGV2YWwoc2NyaXB0KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBTeW50YXhFcnJvciEnKTsKK30KKworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7ICNmb28gPSAwOyBzdGF0aWMgI2ZvbyA9IDE7IH0i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBzdGF0aWMgI2ZvbyA9IDA7ICNm
b28gPSAxOyB9Iik7CisKK3sKKyAgY2xhc3MgQyB7CisgICAgc3RhdGljICNmb28gPSAwOworICAg
IHRlc3RBY2Nlc3MoWCkgeyByZXR1cm4gWC4jZm9vOyB9CisgIH0KKworICBjbGFzcyBEIHsKKyAg
ICBzdGF0aWMgI2ZvbyA9IDA7CisgIH0KKworICBsZXQgYyA9IG5ldyBDKCk7CisgIGFzc2VydERv
ZXNOb3RUaHJvdyhjLnRlc3RBY2Nlc3MoQykpOworICBhc3NlcnRUaHJvd3MoKCkgPT4gYy50ZXN0
QWNjZXNzKEQpLCBUeXBlRXJyb3IpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVz
b3VyY2VzL2hhcm1vbnktc3VwcG9ydC5qcyBiL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy9oYXJt
b255LXN1cHBvcnQuanMKaW5kZXggMDI0YjNiMDg4OWUxLi4xNjdjYzYxMjA5MTIgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy9oYXJtb255LXN1cHBvcnQuanMKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvcmVzb3VyY2VzL2hhcm1vbnktc3VwcG9ydC5qcwpAQCAtMTk0LDMgKzE5NCwx
OCBAQCBmdW5jdGlvbiBhc3NlcnRUaHJvd3MoY29kZSwgdHlwZV9vcHQsIGNhdXNlX29wdCkgewog
ICAgICAgdHlwZW9mIHR5cGVfb3B0ID09ICdmdW5jdGlvbicgPyB0eXBlX29wdCA6ICdhbnkgZXhj
ZXB0aW9uJzsKICAgZmFpbChleHBlY3RlZCwgJ25vIGV4Y2VwdGlvbicsICdleHBlY3RlZCB0aHJv
d24gZXhjZXB0aW9uJyk7CiB9CisKKy8qKgorICogUnVucyBjb2RlKCkgYW5kIGFzc2VydHMgdGhh
dCBpdCBkb2VzIG5vdCB0aHJvd3MgYW4gZXhjZXB0aW9uLgorICovCitmdW5jdGlvbiBhc3NlcnRE
b2VzTm90VGhyb3coY29kZSwgbmFtZV9vcHQpIHsKKyAgdHJ5IHsKKyAgICBpZiAodHlwZW9mIGNv
ZGUgPT0gJ2Z1bmN0aW9uJykgeworICAgICAgY29kZSgpOworICAgIH0gZWxzZSB7CisgICAgICBl
dmFsKGNvZGUpOworICAgIH0KKyAgfSBjYXRjaCAoZSkgeworICAgIGZhaWwoIm5vIGV4Y2VwdGlv
biIsICJ0aHJldyBhbiBleGNlcHRpb246ICIgKyAoZS5tZXNzYWdlIHx8IGUpKTsKKyAgfQorfQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYy
L2NvbmZpZy55YW1sCmluZGV4IDJiYzlkMjZiNGJmZC4uYmRkOGJiZmQ1MmRhIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZp
Zy55YW1sCkBAIC01LDYgKzUsNyBAQCBmbGFnczoKICAgRmluYWxpemF0aW9uUmVnaXN0cnk6IHVz
ZVdlYWtSZWZzCiAgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2YXRlQ2xhc3NGaWVsZHMK
ICAgY2xhc3Mtc3RhdGljLWZpZWxkcy1wdWJsaWM6IHVzZVB1YmxpY1N0YXRpY0NsYXNzRmllbGRz
CisgIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZTogdXNlUHJpdmF0ZVN0YXRpY0NsYXNzRmll
bGRzCiAgIEludGwuRGF0ZVRpbWVGb3JtYXQtZGF5UGVyaW9kOiB1c2VJbnRsRGF0ZVRpbWVGb3Jt
YXREYXlQZXJpb2QKICAgU2hhcmVkQXJyYXlCdWZmZXI6IHVzZVNoYXJlZEFycmF5QnVmZmVyCiAg
IEF0b21pY3M6IHVzZVNoYXJlZEFycmF5QnVmZmVyCkBAIC0yMCw3ICsyMSw2IEBAIHNraXA6CiAK
ICAgICAtIGFyYml0cmFyeS1tb2R1bGUtbmFtZXNwYWNlLW5hbWVzCiAgICAgLSBjbGFzcy1tZXRo
b2RzLXByaXZhdGUKLSAgICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xh
c3Mtc3RhdGljLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xlYW51cFNvbWUKICAgICAtIGhvc3Qt
Z2MtcmVxdWlyZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDM2ODU1MWVhYWQ1ZS4uZWEx
YmI4NTFkNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAy
MC0xMS0xOSAgWGFuIEzDs3BleiAgPHhhbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIEFk
ZCBzdXBwb3J0IGZvciBzdGF0aWMgcHJpdmF0ZSBjbGFzcyBmaWVsZHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDI5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXRpYyBwcml2YXRlIGZpZWxkcyBj
b21lIHRyaXZpYWxseSBub3cgdGhhdCBib3RoIHByaXZhdGUgYW5kCisgICAgICAgIHN0YXRpYyAo
cHVibGljKSBmaWVsZHMgYXJlIGltcGxlbWVudGVkLgorCisgICAgICAgICogcGFyc2VyL1BhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKTogYWNj
ZXB0IHN0YXRpYyBwcml2YXRlIGZpZWxkcyBpZiB0aGUgcnVudGltZSBvcHRpb24gYWxsb3dzIGl0
LgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6
OnJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMpOiB1c2VQcml2YXRlU3RhdGljQ2xhc3NGaWVsZHMg
ZGVwZW5kcyBvbiB1c2VQcml2YXRlQ2xhc3NGaWVsZHMuCisgICAgICAgICogcnVudGltZS9PcHRp
b25zTGlzdC5oOiBhZGQgcnVudGltZSBvcHRpb24gdG8gZW5hYmxlIHN0YXRpYyBwcml2YXRlIGZp
ZWxkcy4KKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDogYWRkIGEgbWV0aG9kIHRvIGNo
ZWNrIGZvciBwcml2YXRlIHN5bWJvbHMgaW4gdGhlIHN0cmVzcyB0ZXN0cy4KKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTTo6
ZmluaXNoQ3JlYXRpb24pOgorCiAyMDIwLTExLTE4ICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRiZXpo
ZXRza292QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gUmVtb3ZlIHN1
YnR5cGluZyBydWxlIGZvciBleHRlcm5yZWYgYW5kIGZ1bmNyZWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA2N2ViM2VlMmJmNDUuLmY0MTMwZmI3NGE0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjk3MSw3ICsyOTcxLDgg
QEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBBU1NFUlQoT3B0aW9uczo6dXNlUHJpdmF0ZUNs
YXNzRmllbGRzKCkpOwogICAgICAgICAgICAgSlNUb2tlbiB0b2tlbiA9IG1fdG9rZW47CiAgICAg
ICAgICAgICBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwotICAgICAgICAgICAgZmFpbElm
VHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMsICJTdGF0aWMgY2xhc3MgZWxlbWVu
dCBjYW5ub3QgYmUgcHJpdmF0ZSIpOworICAgICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VQcml2
YXRlU3RhdGljQ2xhc3NGaWVsZHMoKSkKKyAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKHRhZyA9
PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIlN0YXRpYyBjbGFzcyBlbGVtZW50IGNhbm5vdCBi
ZSBwcml2YXRlIik7CiAgICAgICAgICAgICBmYWlsSWZUcnVlKGlzR2V0dGVyIHx8IGlzU2V0dGVy
LCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOwogICAgICAg
ICAgICAgQVNTRVJUKGlkZW50KTsKICAgICAgICAgICAgIG5leHQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXggMjYxNjdjMDAxY2I0Li40NWQ1ZDI3MDE2
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCkBAIC01NTEs
NiArNTUxLDkgQEAgdm9pZCBPcHRpb25zOjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkKIAog
ICAgICAgICBGT1JfRUFDSF9KU0NfRVhQRVJJTUVOVEFMX09QVElPTihESVNBQkxFX1RJRVJTKTsK
ICAgICB9CisKKyAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZVN0YXRpY0NsYXNzRmllbGRzKCkp
CisgICAgICAgIE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpID0gdHJ1ZTsKIH0KIAog
aW5saW5lIHZvaWQqIE9wdGlvbnM6OmFkZHJlc3NPZk9wdGlvbihPcHRpb25zOjpJRCBpZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IDMyMjhiNmMw
NzFjZC4uMmMwYWNkM2UyYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnNMaXN0LmgKQEAgLTUyNSw2ICs1MjUsNyBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNh
blVzZUpJVENhZ2UoKTsKICAgICB2KEJvb2wsIGV4cG9zZUN1c3RvbVNldHRlcnNPbkdsb2JhbE9i
amVjdEZvclRlc3RpbmcsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KEJvb2wsIHVz
ZUpJVENhZ2UsIGNhblVzZUpJVENhZ2UoKSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihCb29s
LCB1c2VQdWJsaWNTdGF0aWNDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhl
IHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHVibGljIHN0YXRpYyBkYXRhIGZpZWxkcyBpbnNpZGUg
Y2xhc3Nlcy4iKSBcCisgICAgdihCb29sLCB1c2VQcml2YXRlU3RhdGljQ2xhc3NGaWVsZHMsIGZh
bHNlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRl
IHN0YXRpYyBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCiAKIGVudW0gT3B0aW9uRXF1
aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTS5jcHAKaW5kZXggYWVkMGI0YjcwY2Y5Li5jZGQzOGJmZjcwMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTE4NjksNiArMTg2OSw3
IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uSXNNZW1vcnlMaW1p
dGVkKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uVXNlSklUKTsK
IHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uSXNHaWdhY2FnZUVuYWJs
ZWQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Ub1VuY2FjaGVh
YmxlRGljdGlvbmFyeSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlv
bklzUHJpdmF0ZVN5bWJvbCk7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0RvbGxhclZNOjpzX2luZm8g
PSB7ICJEb2xsYXJWTSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNEb2xsYXJWTSkgfTsKIApAQCAtMzM3Nyw2ICszMzc4LDE2IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5LCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3QpOwog
fQogCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Jc1ByaXZhdGVTeW1ib2wsIChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBEb2xsYXJWTUFz
c2VydFNjb3BlIGFzc2VydFNjb3BlOworCisgICAgaWYgKCEoY2FsbEZyYW1lLT5hcmd1bWVudCgw
KS5pc1N5bWJvbCgpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
ZmFsc2UpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzU3ltYm9s
KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpLT51aWQoKS5pc1ByaXZhdGUoKSkpOworfQorCiBjb25z
dGV4cHIgdW5zaWduZWQganNEb2xsYXJWTVByb3BlcnR5QXR0cmlidXRlcyA9IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlOwogCiB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKQEAgLTM1MjcsNiArMzUzOCw4IEBAIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogCiAgICAgYWRkRnVuY3Rpb24odm0sICJ0b1VuY2FjaGVhYmxlRGljdGlv
bmFyeSIsIGZ1bmN0aW9uVG9VbmNhY2hlYWJsZURpY3Rpb25hcnksIDEpOwogCisgICAgYWRkRnVu
Y3Rpb24odm0sICJpc1ByaXZhdGVTeW1ib2wiLCBmdW5jdGlvbklzUHJpdmF0ZVN5bWJvbCwgMSk7
CisKICAgICBtX29iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1
c1N0cnVjdHVyZS5zZXQodm0sIHRoaXMsIE9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRD
b3JyZWN0U2xvdFN0YXR1czo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVs
bCgpKSk7CiB9CiAKLS0gCjIuMjguMAoK
</data>

          </attachment>
      

    </bug>

</bugzilla>