<?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>143038</bug_id>
          
          <creation_ts>2015-03-24 22:04:54 -0700</creation_ts>
          <short_desc>ES6: Classes: Program level class statement throws exception in strict mode</short_desc>
          <delta_ts>2015-03-25 14:36:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>140491</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1079862</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-24 22:04:54 -0700</bug_when>
    <thetext>* SUMMARY
Program level class expression throws exception in strict mode.

* TEST
&lt;script&gt;
&quot;use strict&quot;;
class MyClass { constructor() { } };
&lt;/script&gt;

* EXPECTED
All is fine.

* ACTUAL
[Error] ReferenceError: Can&apos;t find variable: BaseNoReturn (foo.html, line 3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079863</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-24 22:05:31 -0700</bug_when>
    <thetext>Err, the exception should have had the name &quot;MyClass&quot; instead of &quot;BaseNoReturn&quot;. Meant to update after pasting ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079868</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-24 22:22:42 -0700</bug_when>
    <thetext>In parseStatement, parseFunctionDeclaration declares a declareVariable at this top level before pushing a new scope. I wonder if parseClassDeclaration should be doing the same, putting the class name at the top level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079870</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-24 22:27:35 -0700</bug_when>
    <thetext>My guess is that it should. When I compare to Firefox, a class statement requires a name, and the name is put into the global scope. I&apos;ll be back later to investigate this and look up the relevant parts of the spec. I&apos;ll take this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079890</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-25 00:52:18 -0700</bug_when>
    <thetext>Actually this seems to be accomplished a different way.

My next guess is that AST ScopeNodes have a VarStack and FunctionStack. BytecodeGenerator walks these and adds Function Declaration to the UnlinkedProgramCodeBlock. Seems promising.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079907</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-25 02:00:11 -0700</bug_when>
    <thetext>Reading the spec more, this has to deal with Lexical Environments / Environment Records. I don&apos;t fully understand the terminology of this yet.

It looks like this is meant to be the same as `let` in scoping, but we could probably get away with this as an uninitialized `var` for now. (That seems to be what Firefox does with a basic test, which returned undefined, not a ReferenceError for use of a class name above the class definition).

The special handling for functions seems to be defined in B.3.3 &quot;Block-Level Function Declarations Web Legacy Compatibility Semantics&quot;, which doesn&apos;t seem to apply to Classes.

My current understanding is that the class statement of &quot;class Foo { ... }&quot; can be considered syntactic sugar for &quot;let Foo = class Foo { ... }&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079964</commentid>
    <comment_count>6</comment_count>
      <attachid>249410</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-25 09:35:07 -0700</bug_when>
    <thetext>Created attachment 249410
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080011</commentid>
    <comment_count>7</comment_count>
      <attachid>249410</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-25 12:26:16 -0700</bug_when>
    <thetext>Comment on attachment 249410
[PATCH] Proposed Fix

Thanks for the fix!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080024</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-25 13:41:57 -0700</bug_when>
    <thetext>I keep re-reading the runtime semantics of class declarations:
https://people.mozilla.org/~jorendorff/es6-draft.html#sec-runtime-semantics-bindingclassdeclarationevaluation

&gt; 14.5.15 Runtime Semantics: BindingClassDeclarationEvaluation
&gt; 
&gt; ClassDeclaration : class BindingIdentifier ClassTail
&gt;     1. Let className be StringValue of BindingIdentifier.
&gt;     2. Let value be the result of ClassDefinitionEvaluation of ClassTail with argument className.
&gt;     3. ReturnIfAbrupt(value).
&gt;     4. Let hasNameProperty be HasOwnProperty(value, &quot;name&quot;).
&gt;     5. ReturnIfAbrupt(hasNameProperty).
&gt;     6. If hasNameProperty is false, then perform SetFunctionName(value, className).
&gt;     7. Let env be the running execution context’s LexicalEnvironment.
&gt;     8. Let status be InitializeBoundName(className, value, env).
&gt;     9. ReturnIfAbrupt(status).
&gt;     10. Return value.

So in here the InitializeBoundName -&gt; InitializeBinding is what we are fixing.

However, I can&apos;t find anywhere that actually creates the mutable/immutable binding.

I&apos;m trying to figure out for certain if class statements should be treated like `var` or `let`. Knowing where the binding was created would know the behavior of using the binding identifier before the evaluation of the class statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080028</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-25 13:58:54 -0700</bug_when>
    <thetext>Geoff sorted this out for me!

The key is ClassDeclaration is a LexicalDeclaration and Global Declaration Initiation creates the Mutable/Immutable bindings for all LexicalDeclarations:  
https://people.mozilla.org/~jorendorff/es6-draft.html#sec-globaldeclarationinstantiation

So, the uninitialized binding will exist, and access to it before it is initialized should throw an error. So it is correct to leave that one test failing and I&apos;ll file a bug on that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080041</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-25 14:36:13 -0700</bug_when>
    <thetext>&gt; The key is ClassDeclaration is a LexicalDeclaration and Global Declaration
&gt; Initiation creates the Mutable/Immutable bindings for all
&gt; LexicalDeclarations:

Well, not &quot;all&quot;, but all the ones in its scope ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080043</commentid>
    <comment_count>11</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-25 14:36:54 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/181973</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249410</attachid>
            <date>2015-03-25 09:35:07 -0700</date>
            <delta_ts>2015-03-25 12:26:16 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>name-1.patch</filename>
            <type>text/plain</type>
            <size>33455</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0N2ZmODliLi4zOGUxMWZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUtMDMt
MjUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBFUzY6
IENsYXNzZXM6IFByb2dyYW0gbGV2ZWwgY2xhc3Mgc3RhdGVtZW50IHRocm93cyBleGNlcHRpb24g
aW4gc3RyaWN0IG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MzAzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgdXBkYXRlcyBhIG51bWJlciBvZiBleGlzdGluZyB0ZXN0cyB0aGF0IHdlcmUg
cmVseWluZyBvbgorICAgICAgICBwb29yIGJlaGF2aW9yLiBgc2hvdWxkQmVgIGFuZCBmcmllbmRz
IHVzZSBldmFsIHdpdGhpbiBhIGZ1bmN0aW9uCisgICAgICAgIG5vdCBhdCB0aGUgZ2xvYmFsIHNj
b3BlLiBUaGlzIG1lYW5zIGBzaG91bGRCZSgnY2xhc3MgWCB7IC4uLiB9JylgCisgICAgICAgIGJl
aGF2ZXMgbGlrZSBgc2hvdWxkQmUoJ3ZhciB4ID0gLi4uJylgIG5vdCBgc2hvdWxkQmUoJ3ggPSAu
Li4nKWAuCisgICAgICAgIFRoaXMgbWVhbnMgYHhgIHdpbGwgbm90IGJlIGF2YWlsYWJsZSBpbiB0
aGUgbmV4dCBgc2hvdWxkQmVgIGNhbGwuCisKKyAgICAgICAgQWRkIGEgdGVzdCBzcGVjaWZpY2Fs
bHkgdG8gY292ZXIgdGhlIHNjb3Bpbmcgb2YgdGhlIGNsYXNzIG5hbWUKKyAgICAgICAgaW4gcmVn
dWxhciBhbmQgc3RyaWN0IG1vZGUgY29kZS4gQ3VycmVudGx5IHdlIHRyZWF0IGl0IGxpa2UgdmFy
CisgICAgICAgIHdpdGggb25lIGZhaWxpbmcgdGVzdCB0aGF0IHdvdWxkIHBhc3Mgd2hlbiB3ZSB0
cmVhdCBpdCBsaWtlIGxldC4KKworICAgICAgICAqIGpzL2NsYXNzLXN5bnRheC1uYW1lLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtbmFtZS5qczog
QWRkZWQuCisgICAgICAgIChydW5UZXN0U2hvdWxkQmUpOgorICAgICAgICAocnVuVGVzdFNob3Vs
ZEJlVHJ1ZSk6CisgICAgICAgIChydW5UZXN0U2hvdWxkVGhyb3cpOgorICAgICAgICAocnVuVGVz
dFNob3VsZE5vdFRocm93KToKKyAgICAgICAgVGVzdCBjbGFzcyBuYW1lIHNjb3BpbmcuCisKKyAg
ICAgICAgKiBqcy9jbGFzcy1zeW50YXgtY2FsbC1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMv
Y2xhc3Mtc3ludGF4LWRlY2xhcmF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9jbGFz
cy1zeW50YXgtZGVmYXVsdC1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMv
Y2xhc3Mtc3ludGF4LW5hbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3Jp
cHQtdGVzdHMvY2xhc3Mtc3ludGF4LWNhbGwuanM6CisgICAgICAgICoganMvc2NyaXB0LXRlc3Rz
L2NsYXNzLXN5bnRheC1kZWNsYXJhdGlvbi5qczoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMv
Y2xhc3Mtc3ludGF4LWRlZmF1bHQtY29uc3RydWN0b3IuanM6CisKIDIwMTUtMDMtMjQgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBTZXR0ZXIgc2hvdWxk
IGhhdmUgYSBzaW5nbGUgZm9ybWFsIHBhcmFtZXRlciwgR2V0dGVyIG5vIHBhcmFtZXRlcnMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1jYWxsLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1jYWxsLWV4cGVjdGVkLnR4dAppbmRleCBiZmMw
MzE4Li4zMzQ5YWU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtY2Fs
bC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LWNhbGwtZXhw
ZWN0ZWQudHh0CkBAIC0zLDkgKzMsOSBAQCBUZXN0cyBmb3IgY2FsbGluZyB0aGUgY29uc3RydWN0
b3JzIG9mIEVTNiBjbGFzc2VzCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBj
bGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBuZXcgQSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KK1BBU1MgbmV3IEEgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIEEoKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9yLgotUEFT
UyBjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpIH0gfTsgbmV3IEIg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyBCIGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgogUEFTUyBCKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3Rvci4KIFBBU1MgbmV3IChjbGFzcyB7IGNvbnN0cnVjdG9yKCkge30gfSko
KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgKGNsYXNzIHsgY29uc3RydWN0b3IoKSB7
fSB9KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBjYWxsIGEgY2xhc3MgY29u
c3RydWN0b3IuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtZGVjbGFy
YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LWRlY2xhcmF0
aW9uLWV4cGVjdGVkLnR4dAppbmRleCBmOWM4N2I1Li41OWVkNjdmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtZGVjbGFyYXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1kZWNsYXJhdGlvbi1leHBlY3RlZC50eHQKQEAgLTE2
LDE1ICsxNiwxNyBAQCBQQVNTIHNldHRlclZhbHVlIGlzIDc4OQogUEFTUyAobmV3IEEpLl9fcHJv
dG9fXyBpcyBBLnByb3RvdHlwZQogUEFTUyBBLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyBBCiBQ
QVNTIGNsYXNzIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBlbmQgb2Yg
c2NyaXB0LgorUEFTUyBjbGFzcyBbIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBl
Y3RlZCB0b2tlbiAnWycuCitQQVNTIGNsYXNzIHsgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBDbGFzcyBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUuLgogUEFTUyBjbGFzcyBYIHsgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGVuZCBvZiBzY3JpcHQuCiBQQVNT
IGNsYXNzIFggeyAoIH0gdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRv
a2VuICcoJy4gRXhwZWN0ZWQgYW4gaWRlbnRpZmllci4uCiBQQVNTIGNsYXNzIFgge30gZGlkIG5v
dCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIGNsYXNzIFggeyBjb25zdHJ1Y3RvcigpIHt9IGNvbnN0
cnVjdG9yKCkge30gfSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJl
IG11bHRpcGxlIGNvbnN0cnVjdG9ycyBpbiBhIHNpbmdsZSBjbGFzcy4uCiBQQVNTIGNsYXNzIFgg
eyBjb25zdHJ1Y3RvcigpIHt9IHN0YXRpYyBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIHN0YXRpY01l
dGhvZFZhbHVlOyB9IH0gZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIFguY29uc3RydWN0
b3IoKSBpcyBzdGF0aWNNZXRob2RWYWx1ZQorUEFTUyBjbGFzcyBYIHsgY29uc3RydWN0b3IoKSB7
fSBzdGF0aWMgY29uc3RydWN0b3IoKSB7IHJldHVybiBzdGF0aWNNZXRob2RWYWx1ZTsgfSB9OyBY
LmNvbnN0cnVjdG9yKCkgaXMgc3RhdGljTWV0aG9kVmFsdWUKIFBBU1MgY2xhc3MgWCB7IGNvbnN0
cnVjdG9yKCkge30gc3RhdGljIHByb3RvdHlwZSgpIHt9IH0gdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBDYW5ub3QgZGVjbGFyZSBhIHN0YXRpYyBtZXRob2QgbmFtZWQgJ3Byb3RvdHlwZScu
LgogUEFTUyBjbGFzcyBYIHsgY29uc3RydWN0b3IoKSB7fSBwcm90b3R5cGUoKSB7IHJldHVybiBp
bnN0YW5jZU1ldGhvZFZhbHVlOyB9IH0gZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIChu
ZXcgWCkucHJvdG90eXBlKCkgaXMgaW5zdGFuY2VNZXRob2RWYWx1ZQorUEFTUyBjbGFzcyBYIHsg
Y29uc3RydWN0b3IoKSB7fSBwcm90b3R5cGUoKSB7IHJldHVybiBpbnN0YW5jZU1ldGhvZFZhbHVl
OyB9IH07IChuZXcgWCkucHJvdG90eXBlKCkgaXMgaW5zdGFuY2VNZXRob2RWYWx1ZQogUEFTUyBj
bGFzcyBYIHsgY29uc3RydWN0b3IoKSB7fSBzZXQgZm9vKGEpIHt9IH0gZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCiBQQVNTIGNsYXNzIFggeyBjb25zdHJ1Y3RvcigpIHt9IHNldCBmb28oe3gsIHl9
KSB7fSB9IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBjbGFzcyBYIHsgY29uc3RydWN0
b3IoKSB7fSBzZXQgZm9vKCkge30gfSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuZXhw
ZWN0ZWQgdG9rZW4gJyknLiBzZXR0ZXIgZnVuY3Rpb25zIG11c3QgaGF2ZSBvbmUgcGFyYW1ldGVy
Li4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1kZWZhdWx0LWNvbnN0
cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1kZWZhdWx0
LWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAppbmRleCA4NTUzZDg2Li5kYmE5ODhlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtZGVmYXVsdC1jb25zdHJ1Y3Rvci1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LWRlZmF1bHQtY29uc3Ry
dWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0zLDExICszLDExIEBAIFRlc3RzIGZvciBFUzYgY2xhc3Mg
c3ludGF4IGRlZmF1bHQgY29uc3RydWN0b3IKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAog
Ci1QQVNTIGNsYXNzIEEgeyB9OyBuZXcgQSBpbnN0YW5jZW9mIEEgaXMgdHJ1ZQorUEFTUyBuZXcg
QSBpbnN0YW5jZW9mIEEgaXMgdHJ1ZQogUEFTUyBBKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogQ2Fubm90IGNhbGwgYSBjbGFzcyBjb25zdHJ1Y3Rvci4KIFBBU1MgQS5wcm90b3R5cGUuY29u
c3RydWN0b3IgaW5zdGFuY2VvZiBGdW5jdGlvbiBpcyB0cnVlCiBQQVNTIEEucHJvdG90eXBlLmNv
bnN0cnVjdG9yLm5hbWUgaXMgIkEiCi1QQVNTIGNsYXNzIEIgZXh0ZW5kcyBBIHsgfTsgbmV3IEIg
aW5zdGFuY2VvZiBBOyBuZXcgQiBpbnN0YW5jZW9mIEEgaXMgdHJ1ZQorUEFTUyBuZXcgQiBpbnN0
YW5jZW9mIEE7IG5ldyBCIGluc3RhbmNlb2YgQSBpcyB0cnVlCiBQQVNTIEIoKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9yLgogUEFTUyBC
LnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5uYW1lIGlzICJCIgogUEFTUyBBICE9PSBCIGlzIHRydWUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1uYW1lLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1uYW1lLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjE5MDNhZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1uYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEyMiBAQAorVGVzdHMgZm9yIEVTNiBjbGFzcyBuYW1lIHNlbWFudGljcyBpbiBjbGFzcyBzdGF0
ZW1lbnRzIGFuZCBleHByZXNzaW9ucworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
Q2xhc3Mgc3RhdGVtZW50CitQQVNTIEEgdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBBLgorUEFTUyAndXNlIHN0cmljdCc7IEEgdGhyZXcgZXhjZXB0
aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBBLgorUEFTUyBjbGFzcyB7
fSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IENsYXNzIHN0YXRlbWVudHMgbXVzdCBoYXZl
IGEgbmFtZS4uCitQQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3Mge30gdGhyZXcgZXhjZXB0aW9uIFN5
bnRheEVycm9yOiBDbGFzcyBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUuLgorUEFTUyBjbGFz
cyB7IGNvbnN0cnVjdG9yKCkge30gfSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IENsYXNz
IHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZS4uCitQQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3Mg
eyBjb25zdHJ1Y3RvcigpIHt9IH0gdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBDbGFzcyBz
dGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUuLgorUEFTUyBjbGFzcyBBIHsgY29uc3RydWN0b3Io
KSB7fSB9IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyAndXNlIHN0cmljdCc7IGNsYXNz
IEEgeyBjb25zdHJ1Y3RvcigpIHt9IH0gZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGNs
YXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IEEudG9TdHJpbmcoKSBpcyAnZnVuY3Rpb24gQSgp
IHt9JworUEFTUyAndXNlIHN0cmljdCc7IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IEEu
dG9TdHJpbmcoKSBpcyAnZnVuY3Rpb24gQSgpIHt9JworUEFTUyBjbGFzcyBBIHsgY29uc3RydWN0
b3IoKSB7fSB9OyAobmV3IEEpIGluc3RhbmNlb2YgQSBpcyB0cnVlCitQQVNTICd1c2Ugc3RyaWN0
JzsgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgKG5ldyBBKSBpbnN0YW5jZW9mIEEgaXMg
dHJ1ZQorUEFTUyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuYmFzZSA9IEE7IH0gfTsg
KG5ldyBBKS5iYXNlLnRvU3RyaW5nKCkgaXMgJ2Z1bmN0aW9uIEEoKSB7IHRoaXMuYmFzZSA9IEE7
IH0nCitQQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmJh
c2UgPSBBOyB9IH07IChuZXcgQSkuYmFzZS50b1N0cmluZygpIGlzICdmdW5jdGlvbiBBKCkgeyB0
aGlzLmJhc2UgPSBBOyB9JworUEFTUyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBjbGFz
cyBCIGV4dGVuZHMgQSB7fTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTICd1c2Ugc3Ry
aWN0JzsgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRzIEEge307
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7
fSB9OyBjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgQi50b1N0cmluZygp
IGlzICdmdW5jdGlvbiBCKCkge30nCitQQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7IGNvbnN0
cnVjdG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IEIu
dG9TdHJpbmcoKSBpcyAnZnVuY3Rpb24gQigpIHt9JworUEFTUyBjbGFzcyBBIHsgY29uc3RydWN0
b3IoKSB7fSB9OyBjbGFzcyBCIGV4dGVuZHMgQSB7fTsgKG5ldyBCKSBpbnN0YW5jZW9mIEEgaXMg
dHJ1ZQorUEFTUyAndXNlIHN0cmljdCc7IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IGNs
YXNzIEIgZXh0ZW5kcyBBIHt9OyAobmV3IEIpIGluc3RhbmNlb2YgQSBpcyB0cnVlCitQQVNTIGNs
YXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IGNsYXNzIEIgZXh0ZW5kcyBBIHt9OyAobmV3IEIp
IGluc3RhbmNlb2YgQiBpcyB0cnVlCitQQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7IGNvbnN0
cnVjdG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRzIEEge307IChuZXcgQikgaW5zdGFuY2VvZiBC
IGlzIHRydWUKK1BBU1MgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgY2xhc3MgQiBleHRl
bmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5kZXJp
dmVkID0gQjsgfSB9OyAobmV3IEIpLmJhc2UudG9TdHJpbmcoKSBpcyAnZnVuY3Rpb24gQSgpIHt9
JworUEFTUyAndXNlIHN0cmljdCc7IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IGNsYXNz
IEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRo
aXMuZGVyaXZlZCA9IEI7IH0gfTsgKG5ldyBCKS5iYXNlLnRvU3RyaW5nKCkgaXMgJ2Z1bmN0aW9u
IEEoKSB7fScKK1BBU1MgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgY2xhc3MgQiBleHRl
bmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5kZXJp
dmVkID0gQjsgfSB9OyAobmV3IEIpLmRlcml2ZWQudG9TdHJpbmcoKSBpcyAnZnVuY3Rpb24gQigp
IHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfScKK1BBU1MgJ3Vz
ZSBzdHJpY3QnOyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBjbGFzcyBCIGV4dGVuZHMg
QSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQg
PSBCOyB9IH07IChuZXcgQikuZGVyaXZlZC50b1N0cmluZygpIGlzICdmdW5jdGlvbiBCKCkgeyBz
dXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9JworCitDbGFzcyBleHBy
ZXNzaW9uCitQQVNTIEEgdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBBLgorUEFTUyAndXNlIHN0cmljdCc7IEEgdGhyZXcgZXhjZXB0aW9uIFJlZmVy
ZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBBLgorUEFTUyAoY2xhc3Mge30pIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyAndXNlIHN0cmljdCc7IChjbGFzcyB7fSkgZGlkIG5v
dCB0aHJvdyBleGNlcHRpb24uCitQQVNTIChjbGFzcyB7IGNvbnN0cnVjdG9yKCl7fSB9KSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgJ3VzZSBzdHJpY3QnOyAoY2xhc3MgeyBjb25zdHJ1
Y3Rvcigpe30gfSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHR5cGVvZiAoY2xhc3Mg
e30pIGlzICJmdW5jdGlvbiIKK1BBU1MgJ3VzZSBzdHJpY3QnOyB0eXBlb2YgKGNsYXNzIHt9KSBp
cyAiZnVuY3Rpb24iCitQQVNTIChjbGFzcyBBIHt9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
K1BBU1MgJ3VzZSBzdHJpY3QnOyAoY2xhc3MgQSB7fSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CitQQVNTIHR5cGVvZiAoY2xhc3MgQSB7fSkgaXMgImZ1bmN0aW9uIgorUEFTUyAndXNlIHN0cmlj
dCc7IHR5cGVvZiAoY2xhc3MgQSB7fSkgaXMgImZ1bmN0aW9uIgorUEFTUyAoY2xhc3MgQSB7fSk7
IEEgdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBB
LgorUEFTUyAndXNlIHN0cmljdCc7IChjbGFzcyBBIHt9KTsgQSB0aHJldyBleGNlcHRpb24gUmVm
ZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEEuCitQQVNTIG5ldyAoY2xhc3MgQSB7
fSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTICd1c2Ugc3RyaWN0JzsgbmV3IChjbGFz
cyBBIHt9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgdHlwZW9mIChuZXcgKGNsYXNz
IEEge30pKSBpcyAib2JqZWN0IgorUEFTUyAndXNlIHN0cmljdCc7IHR5cGVvZiAobmV3IChjbGFz
cyBBIHt9KSkgaXMgIm9iamVjdCIKK1BBU1MgKG5ldyAoY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkg
eyB0aGlzLmJhc2UgPSBBOyB9IH0pKS5iYXNlIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFT
UyAndXNlIHN0cmljdCc7IChuZXcgKGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHsgdGhpcy5iYXNl
ID0gQTsgfSB9KSkuYmFzZSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgKG5ldyAoY2xh
c3MgQSB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmJhc2UgPSBBOyB9IH0pKS5iYXNlLnRvU3RyaW5n
KCkgaXMgImZ1bmN0aW9uIEEoKSB7IHRoaXMuYmFzZSA9IEE7IH0iCitQQVNTICd1c2Ugc3RyaWN0
JzsgKG5ldyAoY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmJhc2UgPSBBOyB9IH0pKS5i
YXNlLnRvU3RyaW5nKCkgaXMgImZ1bmN0aW9uIEEoKSB7IHRoaXMuYmFzZSA9IEE7IH0iCitQQVNT
IGNsYXNzIEEge307IChjbGFzcyBCIGV4dGVuZHMgQSB7fSkgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitQQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7fTsgKGNsYXNzIEIgZXh0ZW5kcyBBIHt9
KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgY2xhc3MgQSB7fTsgKGNsYXNzIEIgZXh0
ZW5kcyBBIHt9KTsgQiB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQg
dmFyaWFibGU6IEIuCitQQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7fTsgKGNsYXNzIEIgZXh0
ZW5kcyBBIHt9KTsgQiB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQg
dmFyaWFibGU6IEIuCitQQVNTIGNsYXNzIEEge307IG5ldyAoY2xhc3MgQiBleHRlbmRzIEEge30p
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyAndXNlIHN0cmljdCc7IGNsYXNzIEEge307
IG5ldyAoY2xhc3MgQiBleHRlbmRzIEEge30pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFT
UyBjbGFzcyBBIHt9OyBuZXcgKGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7IHN1
cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfSkgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCitQQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7fTsgbmV3IChjbGFzcyBC
IGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlz
LmRlcml2ZWQgPSBCOyB9IH0pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBjbGFzcyBB
IHt9OyAobmV3IChjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0
aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9IH0pKSBpbnN0YW5jZW9mIEEgaXMgdHJ1
ZQorUEFTUyAndXNlIHN0cmljdCc7IGNsYXNzIEEge307IChuZXcgKGNsYXNzIEIgZXh0ZW5kcyBB
IHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9
IEI7IH0gfSkpIGluc3RhbmNlb2YgQSBpcyB0cnVlCitQQVNTIGNsYXNzIEEgeyBjb25zdHJ1Y3Rv
cigpIHt9IH07IChuZXcgKGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7IHN1cGVy
KCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfSkpLmJhc2UudG9TdHJpbmco
KSBpcyAnZnVuY3Rpb24gQSgpIHt9JworUEFTUyAndXNlIHN0cmljdCc7IGNsYXNzIEEgeyBjb25z
dHJ1Y3RvcigpIHt9IH07IChuZXcgKGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7
IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfSkpLmJhc2UudG9T
dHJpbmcoKSBpcyAnZnVuY3Rpb24gQSgpIHt9JworUEFTUyBjbGFzcyBBIHsgY29uc3RydWN0b3Io
KSB7fSB9OyAobmV3IChjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigp
OyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9IH0pKS5kZXJpdmVkLnRvU3RyaW5n
KCkgaXMgJ2Z1bmN0aW9uIEIoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZl
ZCA9IEI7IH0nCitQQVNTICd1c2Ugc3RyaWN0JzsgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30g
fTsgKG5ldyAoY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhp
cy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9KSkuZGVyaXZlZC50b1N0cmluZygpIGlz
ICdmdW5jdGlvbiBCKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBC
OyB9JworCitDbGFzcyBleHByZXNzaW9uIGFzc2lnbm1lbnQgdG8gdmFyaWFibGUKK1BBU1MgQSB0
aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEEuCitQ
QVNTICd1c2Ugc3RyaWN0JzsgQSB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IEEuCitQQVNTIHZhciBWYXJBID0gY2xhc3Mge30gZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCitQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIFZhckEgPSBjbGFzcyB7fSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgdmFyIFZhckEgPSBjbGFzcyB7IGNvbnN0cnVjdG9y
KCkge30gfTsgVmFyQS50b1N0cmluZygpIGlzICdmdW5jdGlvbiAoKSB7fScKK1BBU1MgJ3VzZSBz
dHJpY3QnOyB2YXIgVmFyQSA9IGNsYXNzIHsgY29uc3RydWN0b3IoKSB7fSB9OyBWYXJBLnRvU3Ry
aW5nKCkgaXMgJ2Z1bmN0aW9uICgpIHt9JworUEFTUyBWYXJBIHRocmV3IGV4Y2VwdGlvbiBSZWZl
cmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogVmFyQS4KK1BBU1MgJ3VzZSBzdHJpY3Qn
OyBWYXJBIHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogVmFyQS4KK1BBU1MgdmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9IGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyAndXNlIHN0cmljdCc7IHZhciBWYXJBID0gY2xh
c3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mg
dmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBWYXJBLnRvU3RyaW5nKCkg
aXMgJ2Z1bmN0aW9uIEEoKSB7fScKK1BBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgVmFyQSA9IGNsYXNz
IEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IFZhckEudG9TdHJpbmcoKSBpcyAnZnVuY3Rpb24gQSgp
IHt9JworUEFTUyB2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IEEudG9T
dHJpbmcoKSB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFi
bGU6IEEuCitQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0
b3IoKSB7fSB9OyBBLnRvU3RyaW5nKCkgdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBBLgorUEFTUyB2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1
Y3RvcigpIHt9IH07IChuZXcgVmFyQSkgaW5zdGFuY2VvZiBWYXJBIGlzIHRydWUKK1BBU1MgJ3Vz
ZSBzdHJpY3QnOyB2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IChuZXcg
VmFyQSkgaW5zdGFuY2VvZiBWYXJBIGlzIHRydWUKK1BBU1MgdmFyIFZhckEgPSBjbGFzcyBBIHsg
Y29uc3RydWN0b3IoKSB7IHRoaXMuYmFzZSA9IEE7IH0gfTsgKG5ldyBWYXJBKS5iYXNlLnRvU3Ry
aW5nKCkgaXMgJ2Z1bmN0aW9uIEEoKSB7IHRoaXMuYmFzZSA9IEE7IH0nCitQQVNTICd1c2Ugc3Ry
aWN0JzsgdmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuYmFzZSA9IEE7
IH0gfTsgKG5ldyBWYXJBKS5iYXNlLnRvU3RyaW5nKCkgaXMgJ2Z1bmN0aW9uIEEoKSB7IHRoaXMu
YmFzZSA9IEE7IH0nCitQQVNTIHZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30g
fTsgdmFyIFZhckIgPSBjbGFzcyBCIGV4dGVuZHMgVmFyQSB7IGNvbnN0cnVjdG9yKCkge30gfTsg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIFZhckEgPSBj
bGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9IGNsYXNzIEIgZXh0ZW5kcyBW
YXJBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mg
dmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9IGNsYXNz
IEIgZXh0ZW5kcyBWYXJBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBCIHRocmV3IGV4Y2VwdGlvbiBS
ZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogQi4KK1BBU1MgJ3VzZSBzdHJpY3Qn
OyB2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IHZhciBWYXJCID0gY2xh
c3MgQiBleHRlbmRzIFZhckEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IEIgdGhyZXcgZXhjZXB0aW9u
IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBCLgorUEFTUyB2YXIgVmFyQSA9
IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IHZhciBWYXJCID0gY2xhc3MgQiBleHRlbmRz
IFZhckEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IFZhckIudG9TdHJpbmcoKSBpcyAnZnVuY3Rpb24g
QigpIHt9JworUEFTUyAndXNlIHN0cmljdCc7IHZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVj
dG9yKCkge30gfTsgdmFyIFZhckIgPSBjbGFzcyBCIGV4dGVuZHMgVmFyQSB7IGNvbnN0cnVjdG9y
KCkge30gfTsgVmFyQi50b1N0cmluZygpIGlzICdmdW5jdGlvbiBCKCkge30nCitQQVNTIHZhciBW
YXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgdmFyIFZhckIgPSBjbGFzcyBCIGV4
dGVuZHMgVmFyQSB7IH07IChuZXcgVmFyQikgaW5zdGFuY2VvZiBWYXJBIGlzIHRydWUKK1BBU1Mg
J3VzZSBzdHJpY3QnOyB2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IHZh
ciBWYXJCID0gY2xhc3MgQiBleHRlbmRzIFZhckEgeyB9OyAobmV3IFZhckIpIGluc3RhbmNlb2Yg
VmFyQSBpcyB0cnVlCitQQVNTIHZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30g
fTsgdmFyIFZhckIgPSBjbGFzcyBCIGV4dGVuZHMgVmFyQSB7IH07IChuZXcgVmFyQikgaW5zdGFu
Y2VvZiBWYXJCIGlzIHRydWUKK1BBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgVmFyQSA9IGNsYXNzIEEg
eyBjb25zdHJ1Y3RvcigpIHt9IH07IHZhciBWYXJCID0gY2xhc3MgQiBleHRlbmRzIFZhckEgeyB9
OyAobmV3IFZhckIpIGluc3RhbmNlb2YgVmFyQiBpcyB0cnVlCitQQVNTIHZhciBWYXJBID0gY2xh
c3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgdmFyIFZhckIgPSBjbGFzcyBCIGV4dGVuZHMgVmFy
QSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBWYXJBOyB0aGlzLmRlcml2
ZWQgPSBCOyB0aGlzLmRlcml2ZWRWYXIgPSBWYXJCOyB9IH07IChuZXcgVmFyQikuYmFzZSA9PT0g
VmFyQSBpcyB0cnVlCitQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIFZhckEgPSBjbGFzcyBBIHsgY29u
c3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9IGNsYXNzIEIgZXh0ZW5kcyBWYXJBIHsgY29uc3Ry
dWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IFZhckE7IHRoaXMuZGVyaXZlZCA9IEI7IHRo
aXMuZGVyaXZlZFZhciA9IFZhckI7IH0gfTsgKG5ldyBWYXJCKS5iYXNlID09PSBWYXJBIGlzIHRy
dWUKK1BBU1MgdmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFy
QiA9IGNsYXNzIEIgZXh0ZW5kcyBWYXJBIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMu
YmFzZSA9IFZhckE7IHRoaXMuZGVyaXZlZCA9IEI7IHRoaXMuZGVyaXZlZFZhciA9IFZhckI7IH0g
fTsgKG5ldyBWYXJCKS5kZXJpdmVkID09PSBWYXJCIGlzIHRydWUKK1BBU1MgJ3VzZSBzdHJpY3Qn
OyB2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IHZhciBWYXJCID0gY2xh
c3MgQiBleHRlbmRzIFZhckEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0g
VmFyQTsgdGhpcy5kZXJpdmVkID0gQjsgdGhpcy5kZXJpdmVkVmFyID0gVmFyQjsgfSB9OyAobmV3
IFZhckIpLmRlcml2ZWQgPT09IFZhckIgaXMgdHJ1ZQorUEFTUyB2YXIgVmFyQSA9IGNsYXNzIEEg
eyBjb25zdHJ1Y3RvcigpIHt9IH07IHZhciBWYXJCID0gY2xhc3MgQiBleHRlbmRzIFZhckEgeyBj
b25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gVmFyQTsgdGhpcy5kZXJpdmVkID0g
QjsgdGhpcy5kZXJpdmVkVmFyID0gVmFyQjsgfSB9OyAobmV3IFZhckIpLmRlcml2ZWRWYXIgPT09
IFZhckIgaXMgdHJ1ZQorUEFTUyAndXNlIHN0cmljdCc7IHZhciBWYXJBID0gY2xhc3MgQSB7IGNv
bnN0cnVjdG9yKCkge30gfTsgdmFyIFZhckIgPSBjbGFzcyBCIGV4dGVuZHMgVmFyQSB7IGNvbnN0
cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBWYXJBOyB0aGlzLmRlcml2ZWQgPSBCOyB0
aGlzLmRlcml2ZWRWYXIgPSBWYXJCOyB9IH07IChuZXcgVmFyQikuZGVyaXZlZFZhciA9PT0gVmFy
QiBpcyB0cnVlCisKK0NsYXNzIHN0YXRlbWVudCBiaW5kaW5nIGluIG90aGVyIGNpcmN1bXN0YW5j
ZXMKK1BBU1MgdmFyIHJlc3VsdCA9IEE7IHJlc3VsdCB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNl
RXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEEuCitQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIHJl
c3VsdCA9IEE7IHJlc3VsdCB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZp
bmQgdmFyaWFibGU6IEEuCitGQUlMIHZhciByZXN1bHQgPSBBOyBjbGFzcyBBIHt9OyByZXN1bHQg
c2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbi4gV2FzIHVuZGVmaW5lZC4KK0ZBSUwgJ3VzZSBzdHJp
Y3QnOyB2YXIgcmVzdWx0ID0gQTsgY2xhc3MgQSB7fTsgcmVzdWx0IHNob3VsZCB0aHJvdyBhbiBl
eGNlcHRpb24uIFdhcyB1bmRlZmluZWQuCitQQVNTIGNsYXNzIEEge307IHZhciByZXN1bHQgPSBB
OyByZXN1bHQgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTICd1c2Ugc3RyaWN0JzsgY2xh
c3MgQSB7fTsgdmFyIHJlc3VsdCA9IEE7IHJlc3VsdCBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
K1BBU1MgZXZhbCgndmFyIEZvbyA9IDEwJyk7IEZvbyBpcyAxMAorUEFTUyAndXNlIHN0cmljdCc7
IGV2YWwoJ3ZhciBGb28gPSAxMCcpOyBGb28gdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9y
OiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBGb28uCitQQVNTIGV2YWwoJ2NsYXNzIEJhciB7IGNvbnN0
cnVjdG9yKCkge30gfScpOyBCYXIudG9TdHJpbmcoKSBpcyAnZnVuY3Rpb24gQmFyKCkge30nCitQ
QVNTICd1c2Ugc3RyaWN0JzsgZXZhbCgnY2xhc3MgQmFyIHsgY29uc3RydWN0b3IoKSB7fSB9Jyk7
IEJhci50b1N0cmluZygpIHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogQmFyLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1uYW1l
Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtbmFtZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkZjNjNGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtbmFtZS5odG1sCkBAIC0wLDAgKzEsOCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2NsYXNzLXN5
bnRheC1uYW1lLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtY2FsbC5qcyBiL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtY2FsbC5qcwppbmRleCBkMzI0YTg4Li42MmZk
MzdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4
LWNhbGwuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1j
YWxsLmpzCkBAIC0xLDggKzEsMTEgQEAKIGRlc2NyaXB0aW9uKCdUZXN0cyBmb3IgY2FsbGluZyB0
aGUgY29uc3RydWN0b3JzIG9mIEVTNiBjbGFzc2VzJyk7CiAKLXNob3VsZE5vdFRocm93KCdjbGFz
cyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBuZXcgQScpOworY2xhc3MgQSB7IGNvbnN0cnVjdG9y
KCkge30gfTsKK2NsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCkgfSB9
OworCitzaG91bGROb3RUaHJvdygnbmV3IEEnKTsKIHNob3VsZFRocm93KCdBKCknLCAnIlR5cGVF
cnJvcjogQ2Fubm90IGNhbGwgYSBjbGFzcyBjb25zdHJ1Y3RvciInKTsKLXNob3VsZE5vdFRocm93
KCdjbGFzcyBCIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpIH0gfTsgbmV3IEIn
KTsKK3Nob3VsZE5vdFRocm93KCduZXcgQicpOwogc2hvdWxkVGhyb3coJ0IoKScsICciVHlwZUVy
cm9yOiBDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9yIicpOwogc2hvdWxkTm90VGhyb3co
J25ldyAoY2xhc3MgeyBjb25zdHJ1Y3RvcigpIHt9IH0pKCknKTsKIHNob3VsZFRocm93KCcoY2xh
c3MgeyBjb25zdHJ1Y3RvcigpIHt9IH0pKCknLCAnIlR5cGVFcnJvcjogQ2Fubm90IGNhbGwgYSBj
bGFzcyBjb25zdHJ1Y3RvciInKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9jbGFzcy1zeW50YXgtZGVjbGFyYXRpb24uanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvY2xhc3Mtc3ludGF4LWRlY2xhcmF0aW9uLmpzCmluZGV4IGY1NWQ0OGEuLjc4YTY2OTkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtZGVj
bGFyYXRpb24uanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRh
eC1kZWNsYXJhdGlvbi5qcwpAQCAtMjgsMTUgKzI4LDE3IEBAIHNob3VsZEJlKCIobmV3IEEpLl9f
cHJvdG9fXyIsICJBLnByb3RvdHlwZSIpOwogc2hvdWxkQmUoIkEucHJvdG90eXBlLmNvbnN0cnVj
dG9yIiwgIkEiKTsKIAogc2hvdWxkVGhyb3coImNsYXNzIiwgIidTeW50YXhFcnJvcjogVW5leHBl
Y3RlZCBlbmQgb2Ygc2NyaXB0JyIpOworc2hvdWxkVGhyb3coImNsYXNzIFsiLCAiJ1N5bnRheEVy
cm9yOiBVbmV4cGVjdGVkIHRva2VuIFxcJ1tcXCcnIik7CitzaG91bGRUaHJvdygiY2xhc3MgeyIs
ICInU3ludGF4RXJyb3I6IENsYXNzIHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZS4nIik7CiBz
aG91bGRUaHJvdygiY2xhc3MgWCB7IiwgIidTeW50YXhFcnJvcjogVW5leHBlY3RlZCBlbmQgb2Yg
c2NyaXB0JyIpOwogc2hvdWxkVGhyb3coImNsYXNzIFggeyAoIH0iLCAiJ1N5bnRheEVycm9yOiBV
bmV4cGVjdGVkIHRva2VuIFxcJyhcXCcuIEV4cGVjdGVkIGFuIGlkZW50aWZpZXIuJyIpOwogc2hv
dWxkTm90VGhyb3coImNsYXNzIFgge30iKTsKIHNob3VsZFRocm93KCJjbGFzcyBYIHsgY29uc3Ry
dWN0b3IoKSB7fSBjb25zdHJ1Y3RvcigpIHt9IH0iLCAiJ1N5bnRheEVycm9yOiBDYW5ub3QgZGVj
bGFyZSBtdWx0aXBsZSBjb25zdHJ1Y3RvcnMgaW4gYSBzaW5nbGUgY2xhc3MuJyIpOwogc2hvdWxk
Tm90VGhyb3coImNsYXNzIFggeyBjb25zdHJ1Y3RvcigpIHt9IHN0YXRpYyBjb25zdHJ1Y3Rvcigp
IHsgcmV0dXJuIHN0YXRpY01ldGhvZFZhbHVlOyB9IH0iKTsKLXNob3VsZEJlKCJYLmNvbnN0cnVj
dG9yKCkiLCAic3RhdGljTWV0aG9kVmFsdWUiKTsKK3Nob3VsZEJlKCJjbGFzcyBYIHsgY29uc3Ry
dWN0b3IoKSB7fSBzdGF0aWMgY29uc3RydWN0b3IoKSB7IHJldHVybiBzdGF0aWNNZXRob2RWYWx1
ZTsgfSB9OyBYLmNvbnN0cnVjdG9yKCkiLCAic3RhdGljTWV0aG9kVmFsdWUiKTsKIHNob3VsZFRo
cm93KCJjbGFzcyBYIHsgY29uc3RydWN0b3IoKSB7fSBzdGF0aWMgcHJvdG90eXBlKCkge30gfSIs
ICInU3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJlIGEgc3RhdGljIG1ldGhvZCBuYW1lZCBcXCdw
cm90b3R5cGVcXCcuJyIpOwogc2hvdWxkTm90VGhyb3coImNsYXNzIFggeyBjb25zdHJ1Y3Rvcigp
IHt9IHByb3RvdHlwZSgpIHsgcmV0dXJuIGluc3RhbmNlTWV0aG9kVmFsdWU7IH0gfSIpOwotc2hv
dWxkQmUoIihuZXcgWCkucHJvdG90eXBlKCkiLCAiaW5zdGFuY2VNZXRob2RWYWx1ZSIpOworc2hv
dWxkQmUoImNsYXNzIFggeyBjb25zdHJ1Y3RvcigpIHt9IHByb3RvdHlwZSgpIHsgcmV0dXJuIGlu
c3RhbmNlTWV0aG9kVmFsdWU7IH0gfTsgKG5ldyBYKS5wcm90b3R5cGUoKSIsICJpbnN0YW5jZU1l
dGhvZFZhbHVlIik7CiAKIHNob3VsZE5vdFRocm93KCJjbGFzcyBYIHsgY29uc3RydWN0b3IoKSB7
fSBzZXQgZm9vKGEpIHt9IH0iKTsKIHNob3VsZE5vdFRocm93KCJjbGFzcyBYIHsgY29uc3RydWN0
b3IoKSB7fSBzZXQgZm9vKHt4LCB5fSkge30gfSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1kZWZhdWx0LWNvbnN0cnVjdG9yLmpzIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1kZWZhdWx0LWNvbnN0cnVjdG9y
LmpzCmluZGV4IDVjYjdjYTQuLmMyY2JjZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtZGVmYXVsdC1jb25zdHJ1Y3Rvci5qcworKysgYi9MYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LWRlZmF1bHQtY29uc3RydWN0b3Iu
anMKQEAgLTEsMTEgKzEsMTQgQEAKIAogZGVzY3JpcHRpb24oJ1Rlc3RzIGZvciBFUzYgY2xhc3Mg
c3ludGF4IGRlZmF1bHQgY29uc3RydWN0b3InKTsKIAotc2hvdWxkQmVUcnVlKCdjbGFzcyBBIHsg
fTsgbmV3IEEgaW5zdGFuY2VvZiBBJyk7CitjbGFzcyBBIHsgfTsKK2NsYXNzIEIgZXh0ZW5kcyBB
IHsgfTsKKworc2hvdWxkQmVUcnVlKCduZXcgQSBpbnN0YW5jZW9mIEEnKTsKIHNob3VsZFRocm93
KCdBKCknLCAnIlR5cGVFcnJvcjogQ2Fubm90IGNhbGwgYSBjbGFzcyBjb25zdHJ1Y3RvciInKTsK
IHNob3VsZEJlVHJ1ZSgnQS5wcm90b3R5cGUuY29uc3RydWN0b3IgaW5zdGFuY2VvZiBGdW5jdGlv
bicpOwogc2hvdWxkQmUoJ0EucHJvdG90eXBlLmNvbnN0cnVjdG9yLm5hbWUnLCAnIkEiJyk7Ci1z
aG91bGRCZVRydWUoJ2NsYXNzIEIgZXh0ZW5kcyBBIHsgfTsgbmV3IEIgaW5zdGFuY2VvZiBBOyBu
ZXcgQiBpbnN0YW5jZW9mIEEnKTsKK3Nob3VsZEJlVHJ1ZSgnbmV3IEIgaW5zdGFuY2VvZiBBOyBu
ZXcgQiBpbnN0YW5jZW9mIEEnKTsKIHNob3VsZFRocm93KCdCKCknLCAnIlR5cGVFcnJvcjogQ2Fu
bm90IGNhbGwgYSBjbGFzcyBjb25zdHJ1Y3RvciInKTsKIHNob3VsZEJlKCdCLnByb3RvdHlwZS5j
b25zdHJ1Y3Rvci5uYW1lJywgJyJCIicpOwogc2hvdWxkQmVUcnVlKCdBICE9PSBCJyk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LW5hbWUuanMg
Yi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LW5hbWUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE2ZTUwMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtbmFtZS5qcwpAQCAtMCww
ICsxLDg4IEBACitkZXNjcmlwdGlvbignVGVzdHMgZm9yIEVTNiBjbGFzcyBuYW1lIHNlbWFudGlj
cyBpbiBjbGFzcyBzdGF0ZW1lbnRzIGFuZCBleHByZXNzaW9ucycpOworCitmdW5jdGlvbiBydW5U
ZXN0U2hvdWxkQmUoc3RhdGVtZW50LCByZXN1bHQpIHsKKyAgICBzaG91bGRCZShzdGF0ZW1lbnQs
IHJlc3VsdCk7CisgICAgc2hvdWxkQmUoIid1c2Ugc3RyaWN0JzsgIiArIHN0YXRlbWVudCwgcmVz
dWx0KTsKK30KKworZnVuY3Rpb24gcnVuVGVzdFNob3VsZEJlVHJ1ZShzdGF0ZW1lbnQpIHsKKyAg
ICBzaG91bGRCZVRydWUoc3RhdGVtZW50KTsKKyAgICBzaG91bGRCZVRydWUoIid1c2Ugc3RyaWN0
JzsgIiArIHN0YXRlbWVudCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RTaG91bGRUaHJvdyhzdGF0
ZW1lbnQpIHsKKyAgICBzaG91bGRUaHJvdyhzdGF0ZW1lbnQpOworICAgIHNob3VsZFRocm93KCIn
dXNlIHN0cmljdCc7ICIgKyBzdGF0ZW1lbnQpOworfQorCitmdW5jdGlvbiBydW5UZXN0U2hvdWxk
Tm90VGhyb3coc3RhdGVtZW50KSB7CisgICAgc2hvdWxkTm90VGhyb3coc3RhdGVtZW50KTsKKyAg
ICBzaG91bGROb3RUaHJvdygiJ3VzZSBzdHJpY3QnOyAiICsgc3RhdGVtZW50KTsKK30KKworLy8g
Q2xhc3Mgc3RhdGVtZW50LiBDbGFzcyBuYW1lIGFkZGVkIHRvIGdsb2JhbCBzY29wZS4gQ2xhc3Mg
bmFtZSBpcyBhdmFpbGFibGUgaW5zaWRlIGNsYXNzIHNjb3BlIGFuZCBpbiBnbG9iYWwgc2NvcGUu
CitkZWJ1ZygnQ2xhc3Mgc3RhdGVtZW50Jyk7CitydW5UZXN0U2hvdWxkVGhyb3coIkEiKTsKK3J1
blRlc3RTaG91bGRUaHJvdygiY2xhc3Mge30iKTsKK3J1blRlc3RTaG91bGRUaHJvdygiY2xhc3Mg
eyBjb25zdHJ1Y3RvcigpIHt9IH0iKTsKK3J1blRlc3RTaG91bGROb3RUaHJvdygiY2xhc3MgQSB7
IGNvbnN0cnVjdG9yKCkge30gfSIpOworcnVuVGVzdFNob3VsZEJlKCJjbGFzcyBBIHsgY29uc3Ry
dWN0b3IoKSB7fSB9OyBBLnRvU3RyaW5nKCkiLCAiJ2Z1bmN0aW9uIEEoKSB7fSciKTsKK3J1blRl
c3RTaG91bGRCZVRydWUoImNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IChuZXcgQSkgaW5z
dGFuY2VvZiBBIik7CitydW5UZXN0U2hvdWxkQmUoImNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHsg
dGhpcy5iYXNlID0gQTsgfSB9OyAobmV3IEEpLmJhc2UudG9TdHJpbmcoKSIsICInZnVuY3Rpb24g
QSgpIHsgdGhpcy5iYXNlID0gQTsgfSciKTsKK3J1blRlc3RTaG91bGROb3RUaHJvdygiY2xhc3Mg
QSB7IGNvbnN0cnVjdG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRzIEEge307Iik7CitydW5UZXN0
U2hvdWxkQmUoImNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IGNsYXNzIEIgZXh0ZW5kcyBB
IHsgY29uc3RydWN0b3IoKSB7fSB9OyBCLnRvU3RyaW5nKCkiLCAiJ2Z1bmN0aW9uIEIoKSB7fSci
KTsKK3J1blRlc3RTaG91bGRCZVRydWUoImNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IGNs
YXNzIEIgZXh0ZW5kcyBBIHt9OyAobmV3IEIpIGluc3RhbmNlb2YgQSIpOworcnVuVGVzdFNob3Vs
ZEJlVHJ1ZSgiY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRzIEEg
e307IChuZXcgQikgaW5zdGFuY2VvZiBCIik7CitydW5UZXN0U2hvdWxkQmUoImNsYXNzIEEgeyBj
b25zdHJ1Y3RvcigpIHt9IH07IGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7IHN1
cGVyKCk7IHRoaXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfTsgKG5ldyBCKS5iYXNl
LnRvU3RyaW5nKCkiLCAiJ2Z1bmN0aW9uIEEoKSB7fSciKTsKK3J1blRlc3RTaG91bGRCZSgiY2xh
c3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgY2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3Rv
cigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9OyAobmV3
IEIpLmRlcml2ZWQudG9TdHJpbmcoKSIsICInZnVuY3Rpb24gQigpIHsgc3VwZXIoKTsgdGhpcy5i
YXNlID0gQTsgdGhpcy5kZXJpdmVkID0gQjsgfSciKTsKKworLy8gQ2xhc3MgZXhwcmVzc2lvbi4g
Q2xhc3MgbmFtZSBub3QgYWRkZWQgdG8gc2NvcGUuIENsYXNzIG5hbWUgaXMgYXZhaWxhYmxlIGlu
c2lkZSBjbGFzcyBzY29wZS4KK2RlYnVnKCcnKTsgZGVidWcoJ0NsYXNzIGV4cHJlc3Npb24nKTsK
K3J1blRlc3RTaG91bGRUaHJvdygiQSIpOworcnVuVGVzdFNob3VsZE5vdFRocm93KCIoY2xhc3Mg
e30pIik7CitydW5UZXN0U2hvdWxkTm90VGhyb3coIihjbGFzcyB7IGNvbnN0cnVjdG9yKCl7fSB9
KSIpOworcnVuVGVzdFNob3VsZEJlKCJ0eXBlb2YgKGNsYXNzIHt9KSIsICciZnVuY3Rpb24iJyk7
CitydW5UZXN0U2hvdWxkTm90VGhyb3coIihjbGFzcyBBIHt9KSIpOworcnVuVGVzdFNob3VsZEJl
KCJ0eXBlb2YgKGNsYXNzIEEge30pIiwgJyJmdW5jdGlvbiInKTsKK3J1blRlc3RTaG91bGRUaHJv
dygiKGNsYXNzIEEge30pOyBBIik7CitydW5UZXN0U2hvdWxkTm90VGhyb3coIm5ldyAoY2xhc3Mg
QSB7fSkiKTsKK3J1blRlc3RTaG91bGRCZSgidHlwZW9mIChuZXcgKGNsYXNzIEEge30pKSIsICci
b2JqZWN0IicpOworcnVuVGVzdFNob3VsZE5vdFRocm93KCIobmV3IChjbGFzcyBBIHsgY29uc3Ry
dWN0b3IoKSB7IHRoaXMuYmFzZSA9IEE7IH0gfSkpLmJhc2UiKTsKK3J1blRlc3RTaG91bGRCZSgi
KG5ldyAoY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmJhc2UgPSBBOyB9IH0pKS5iYXNl
LnRvU3RyaW5nKCkiLCAnImZ1bmN0aW9uIEEoKSB7IHRoaXMuYmFzZSA9IEE7IH0iJyk7CitydW5U
ZXN0U2hvdWxkTm90VGhyb3coImNsYXNzIEEge307IChjbGFzcyBCIGV4dGVuZHMgQSB7fSkiKTsK
K3J1blRlc3RTaG91bGRUaHJvdygiY2xhc3MgQSB7fTsgKGNsYXNzIEIgZXh0ZW5kcyBBIHt9KTsg
QiIpOworcnVuVGVzdFNob3VsZE5vdFRocm93KCJjbGFzcyBBIHt9OyBuZXcgKGNsYXNzIEIgZXh0
ZW5kcyBBIHt9KSIpOworcnVuVGVzdFNob3VsZE5vdFRocm93KCJjbGFzcyBBIHt9OyBuZXcgKGNs
YXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRoaXMuYmFzZSA9IEE7
IHRoaXMuZGVyaXZlZCA9IEI7IH0gfSkiKTsKK3J1blRlc3RTaG91bGRCZVRydWUoImNsYXNzIEEg
e307IChuZXcgKGNsYXNzIEIgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IHRo
aXMuYmFzZSA9IEE7IHRoaXMuZGVyaXZlZCA9IEI7IH0gfSkpIGluc3RhbmNlb2YgQSIpOworcnVu
VGVzdFNob3VsZEJlKCJjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyAobmV3IChjbGFzcyBC
IGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlz
LmRlcml2ZWQgPSBCOyB9IH0pKS5iYXNlLnRvU3RyaW5nKCkiLCAiJ2Z1bmN0aW9uIEEoKSB7fSci
KTsKK3J1blRlc3RTaG91bGRCZSgiY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgKG5ldyAo
Y2xhc3MgQiBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNlID0g
QTsgdGhpcy5kZXJpdmVkID0gQjsgfSB9KSkuZGVyaXZlZC50b1N0cmluZygpIiwgIidmdW5jdGlv
biBCKCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBBOyB0aGlzLmRlcml2ZWQgPSBCOyB9JyIpOwor
CisvLyBBc3NpZ25tZW50IG9mIGEgY2xhc3MgZXhwcmVzc2lvbiB0byBhIHZhcmlhYmxlLiBWYXJp
YWJsZSBuYW1lIGF2YWlsYWJsZSBpbiBzY29wZSwgY2xhc3MgbmFtZSBpcyBub3QuIENsYXNzIG5h
bWUgaXMgYXZhaWxhYmxlIGluc2lkZSBjbGFzcyBzY29wZS4KK2RlYnVnKCcnKTsgZGVidWcoJ0Ns
YXNzIGV4cHJlc3Npb24gYXNzaWdubWVudCB0byB2YXJpYWJsZScpOworcnVuVGVzdFNob3VsZFRo
cm93KCJBIik7CitydW5UZXN0U2hvdWxkTm90VGhyb3coInZhciBWYXJBID0gY2xhc3Mge30iKTsK
K3J1blRlc3RTaG91bGRCZSgidmFyIFZhckEgPSBjbGFzcyB7IGNvbnN0cnVjdG9yKCkge30gfTsg
VmFyQS50b1N0cmluZygpIiwgIidmdW5jdGlvbiAoKSB7fSciKTsKK3J1blRlc3RTaG91bGRUaHJv
dygiVmFyQSIpOworcnVuVGVzdFNob3VsZE5vdFRocm93KCJ2YXIgVmFyQSA9IGNsYXNzIEEgeyBj
b25zdHJ1Y3RvcigpIHt9IH0iKTsKK3J1blRlc3RTaG91bGRCZSgidmFyIFZhckEgPSBjbGFzcyBB
IHsgY29uc3RydWN0b3IoKSB7fSB9OyBWYXJBLnRvU3RyaW5nKCkiLCAiJ2Z1bmN0aW9uIEEoKSB7
fSciKTsKK3J1blRlc3RTaG91bGRUaHJvdygidmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0
b3IoKSB7fSB9OyBBLnRvU3RyaW5nKCkiKTsKK3J1blRlc3RTaG91bGRCZVRydWUoInZhciBWYXJB
ID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgKG5ldyBWYXJBKSBpbnN0YW5jZW9mIFZh
ckEiKTsKK3J1blRlc3RTaG91bGRCZSgidmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3Io
KSB7IHRoaXMuYmFzZSA9IEE7IH0gfTsgKG5ldyBWYXJBKS5iYXNlLnRvU3RyaW5nKCkiLCAiJ2Z1
bmN0aW9uIEEoKSB7IHRoaXMuYmFzZSA9IEE7IH0nIik7CitydW5UZXN0U2hvdWxkTm90VGhyb3co
InZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgdmFyIFZhckIgPSBjbGFz
cyBCIGV4dGVuZHMgVmFyQSB7IGNvbnN0cnVjdG9yKCkge30gfTsiKTsKK3J1blRlc3RTaG91bGRU
aHJvdygidmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIgVmFyQiA9
IGNsYXNzIEIgZXh0ZW5kcyBWYXJBIHsgY29uc3RydWN0b3IoKSB7fSB9OyBCIik7CitydW5UZXN0
U2hvdWxkQmUoInZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgdmFyIFZh
ckIgPSBjbGFzcyBCIGV4dGVuZHMgVmFyQSB7IGNvbnN0cnVjdG9yKCkge30gfTsgVmFyQi50b1N0
cmluZygpIiwgIidmdW5jdGlvbiBCKCkge30nIik7CitydW5UZXN0U2hvdWxkQmVUcnVlKCJ2YXIg
VmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IHZhciBWYXJCID0gY2xhc3MgQiBl
eHRlbmRzIFZhckEgeyB9OyAobmV3IFZhckIpIGluc3RhbmNlb2YgVmFyQSIpOworcnVuVGVzdFNo
b3VsZEJlVHJ1ZSgidmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyB2YXIg
VmFyQiA9IGNsYXNzIEIgZXh0ZW5kcyBWYXJBIHsgfTsgKG5ldyBWYXJCKSBpbnN0YW5jZW9mIFZh
ckIiKTsKK3J1blRlc3RTaG91bGRCZVRydWUoInZhciBWYXJBID0gY2xhc3MgQSB7IGNvbnN0cnVj
dG9yKCkge30gfTsgdmFyIFZhckIgPSBjbGFzcyBCIGV4dGVuZHMgVmFyQSB7IGNvbnN0cnVjdG9y
KCkgeyBzdXBlcigpOyB0aGlzLmJhc2UgPSBWYXJBOyB0aGlzLmRlcml2ZWQgPSBCOyB0aGlzLmRl
cml2ZWRWYXIgPSBWYXJCOyB9IH07IChuZXcgVmFyQikuYmFzZSA9PT0gVmFyQSIpOworcnVuVGVz
dFNob3VsZEJlVHJ1ZSgidmFyIFZhckEgPSBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7fSB9OyB2
YXIgVmFyQiA9IGNsYXNzIEIgZXh0ZW5kcyBWYXJBIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7
IHRoaXMuYmFzZSA9IFZhckE7IHRoaXMuZGVyaXZlZCA9IEI7IHRoaXMuZGVyaXZlZFZhciA9IFZh
ckI7IH0gfTsgKG5ldyBWYXJCKS5kZXJpdmVkID09PSBWYXJCIik7CitydW5UZXN0U2hvdWxkQmVU
cnVlKCJ2YXIgVmFyQSA9IGNsYXNzIEEgeyBjb25zdHJ1Y3RvcigpIHt9IH07IHZhciBWYXJCID0g
Y2xhc3MgQiBleHRlbmRzIFZhckEgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgdGhpcy5iYXNl
ID0gVmFyQTsgdGhpcy5kZXJpdmVkID0gQjsgdGhpcy5kZXJpdmVkVmFyID0gVmFyQjsgfSB9OyAo
bmV3IFZhckIpLmRlcml2ZWRWYXIgPT09IFZhckIiKTsKKworLy8gRklYTUU6IENsYXNzIHN0YXRl
bWVudCBiaW5kaW5nIHNob3VsZCBiZSBsaWtlIGBsZXRgLCBub3QgYHZhcmAuCitkZWJ1ZygnJyk7
IGRlYnVnKCdDbGFzcyBzdGF0ZW1lbnQgYmluZGluZyBpbiBvdGhlciBjaXJjdW1zdGFuY2VzJyk7
CitydW5UZXN0U2hvdWxkVGhyb3coInZhciByZXN1bHQgPSBBOyByZXN1bHQiKTsKK3J1blRlc3RT
aG91bGRUaHJvdygidmFyIHJlc3VsdCA9IEE7IGNsYXNzIEEge307IHJlc3VsdCIpOworcnVuVGVz
dFNob3VsZE5vdFRocm93KCJjbGFzcyBBIHt9OyB2YXIgcmVzdWx0ID0gQTsgcmVzdWx0Iik7Citz
aG91bGRCZSgiZXZhbCgndmFyIEZvbyA9IDEwJyk7IEZvbyIsICIxMCIpOworc2hvdWxkVGhyb3co
Iid1c2Ugc3RyaWN0JzsgZXZhbCgndmFyIEZvbyA9IDEwJyk7IEZvbyIpOworc2hvdWxkQmUoImV2
YWwoJ2NsYXNzIEJhciB7IGNvbnN0cnVjdG9yKCkge30gfScpOyBCYXIudG9TdHJpbmcoKSIsICIn
ZnVuY3Rpb24gQmFyKCkge30nIik7CitzaG91bGRUaHJvdygiJ3VzZSBzdHJpY3QnOyBldmFsKCdj
bGFzcyBCYXIgeyBjb25zdHJ1Y3RvcigpIHt9IH0nKTsgQmFyLnRvU3RyaW5nKCkiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCmluZGV4IDMyY2I2NDIuLmMzOTMxNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE1LTAzLTI1ICBKb3NlcGggUGVjb3Jhcm8gIDxw
ZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgRVM2OiBDbGFzc2VzOiBQcm9ncmFtIGxldmVs
IGNsYXNzIHN0YXRlbWVudCB0aHJvd3MgZXhjZXB0aW9uIGluIHN0cmljdCBtb2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMwMzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGFzc2VzIGV4cG9zZSBh
IG5hbWUgdG8gdGhlIGN1cnJlbnQgbGV4aWNhbCBlbnZpcm9ubWVudC4gVGhpcyB0cmVhdHMKKyAg
ICAgICAgImNsYXNzIFgge30iIGxpa2UgInZhciBYID0gY2xhc3MgWCB7fSIuIElkZWFsbHkgaXQg
d291bGQgYmUgImxldCBYID0gY2xhc3MgWCB7fSIuCisgICAgICAgIEFsc28sIGltcHJvdmUgZXJy
b3IgbWVzc2FnZXMgZm9yIGNsYXNzIHN0YXRlbWVudHMgd2hlcmUgdGhlIGNsYXNzIGlzIG1pc3Np
bmcgYSBuYW1lLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAqIHBhcnNl
ci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFz
cyk6CisgICAgICAgIEZpbGwgbmFtZSBpbiBpbmZvIHBhcmFtZXRlciBpZiBuZWVkZWQuIEJldHRl
ciBlcnJvciBtZXNzYWdlIGlmIG5hbWUgaXMgbmVlZGVkIGFuZCBtaXNzaW5nLgorCisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRGVjbGFyYXRpb24pOgorICAgICAg
ICBQYXNzIGluZm8gcGFyYW1ldGVyIHRvIGdldCBuYW1lLCBhbmQgZXhwb3NlIHRoZSBuYW1lIGFz
IGEgdmFyaWFibGUgbmFtZS4KKworICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VQcmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIFBhc3MgaW5mbyBwYXJhbWV0ZXIgdGhhdCBp
cyBpZ25vcmVkLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlckZ1bmN0aW9uSW5mby5oOgorICAg
ICAgICBBZGQgYSBwYXJzZXIgaW5mbyBmb3IgY2xhc3MsIHRvIGV4dHJhY3QgdGhlIG5hbWUuCisK
IDIwMTUtMDMtMjQgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTZXR0ZXIgc2hvdWxkIGhhdmUgYSBzaW5nbGUgZm9ybWFsIHBhcmFtZXRlciwgR2V0dGVy
IG5vIHBhcmFtZXRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRl
eCBlYTYxNTA1Li41ZjUxZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCkBAIC0xNDY5LDggKzE0NjksMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRGVjbGFyYXQKICAgICBK
U1RleHRQb3NpdGlvbiBjbGFzc1N0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgdW5z
aWduZWQgY2xhc3NTdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKIAotICAgIFRyZWVDbGFzc0V4cHJl
c3Npb24gY2xhc3NFeHByID0gcGFyc2VDbGFzcyhjb250ZXh0LCBGdW5jdGlvbk5lZWRzTmFtZSk7
CisgICAgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiBpbmZvOworICAgIFRyZWVDbGFzc0V4
cHJlc3Npb24gY2xhc3NFeHByID0gcGFyc2VDbGFzcyhjb250ZXh0LCBGdW5jdGlvbk5lZWRzTmFt
ZSwgaW5mbyk7CiAgICAgZmFpbElmRmFsc2UoY2xhc3NFeHByLCAiRmFpbGVkIHRvIHBhcnNlIGNs
YXNzIik7CisgICAgZGVjbGFyZVZhcmlhYmxlKGluZm8uY2xhc3NOYW1lKTsKKworICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBsaWtlIGBsZXRgLCBub3QgYHZhcmAuCisgICAgY29udGV4dC5h
ZGRWYXIoaW5mby5jbGFzc05hbWUsIERlY2xhcmF0aW9uU3RhY2tzOjpIYXNJbml0aWFsaXplcik7
CiAKICAgICBKU1RleHRQb3NpdGlvbiBjbGFzc0VuZCA9IGxhc3RUb2tlbkVuZFBvc2l0aW9uKCk7
CiAgICAgdW5zaWduZWQgY2xhc3NFbmRMaW5lID0gdG9rZW5MaW5lKCk7CkBAIC0xNDc5LDcgKzE0
ODQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlQ2xhc3NEZWNsYXJhdAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhc3NFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBG
dW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVDbGFzc0V4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3Mo
VHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywg
UGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYgaW5mbykKIHsKICAgICBBU1NFUlQobWF0Y2go
Q0xBU1NUT0tFTikpOwogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9u
KCkpOwpAQCAtMTQ5MSw5ICsxNDk2LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhUCiAgICAg
Y29uc3QgSWRlbnRpZmllciogY2xhc3NOYW1lID0gbnVsbHB0cjsKICAgICBpZiAobWF0Y2goSURF
TlQpKSB7CiAgICAgICAgIGNsYXNzTmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgICAg
ICBpbmZvLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBm
YWlsSWZGYWxzZShjbGFzc1Njb3BlLT5kZWNsYXJlVmFyaWFibGUoY2xhc3NOYW1lKSwgIiciLCBj
bGFzc05hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgY2xhc3MgbmFtZSIpOwogICAgIH0g
ZWxzZSBpZiAocmVxdWlyZW1lbnRzID09IEZ1bmN0aW9uTmVlZHNOYW1lKSB7CisgICAgICAgIGlm
IChtYXRjaChPUEVOQlJBQ0UpKQorICAgICAgICAgICAgc2VtYW50aWNGYWlsKCJDbGFzcyBzdGF0
ZW1lbnRzIG11c3QgaGF2ZSBhIG5hbWUiKTsKICAgICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9L
ZXl3b3JkKCJjbGFzcyBuYW1lIik7CiAgICAgICAgIGZhaWxEdWVUb1VuZXhwZWN0ZWRUb2tlbigp
OwogICAgIH0gZWxzZQpAQCAtMjI2Myw4ICsyMjcxLDEwIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4
cHJlCiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwg
aW5mbyk7CiAgICAgfQogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQotICAgIGNhc2UgQ0xB
U1NUT0tFTjoKLSAgICAgICAgcmV0dXJuIHBhcnNlQ2xhc3MoY29udGV4dCwgRnVuY3Rpb25Ob1Jl
cXVpcmVtZW50cyk7CisgICAgY2FzZSBDTEFTU1RPS0VOOiB7CisgICAgICAgIFBhcnNlckNsYXNz
SW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKKyAgICAgICAgcmV0dXJuIHBhcnNlQ2xhc3MoY29udGV4
dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgaW5mbyk7CisgICAgfQogI2VuZGlmCiAgICAgY2Fz
ZSBPUEVOQlJBQ0U6CiAgICAgICAgIGlmIChzdHJpY3RNb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAppbmRleCA4YmM0Nzc4Li44NjNmOWMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTc3NCw3ICs3NzQsNyBAQCBwcml2YXRlOgogCiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0
aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBGdW5jdGlvblBhcnNl
TW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kLCBpbnQg
ZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsK
ICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1
aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cyk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRyZWVC
dWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRl
cj4mKTsKICNlbmRpZgogCiAgICAgQUxXQVlTX0lOTElORSBpbnQgaXNCaW5hcnlPcGVyYXRvcihK
U1Rva2VuVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlckZ1bmN0aW9uSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJG
dW5jdGlvbkluZm8uaAppbmRleCBlMjA4MjQ1Li42YjczNjI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckZ1bmN0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRnVuY3Rpb25JbmZvLmgKQEAgLTQwLDYgKzQwLDEz
IEBAIHN0cnVjdCBQYXJzZXJGdW5jdGlvbkluZm8gewogICAgIHVuc2lnbmVkIGJvZHlTdGFydENv
bHVtbiA9IDA7CiB9OwogCisjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5UQVgpCit0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+CitzdHJ1Y3QgUGFyc2VyQ2xhc3NJbmZvIHsKKyAgICBjb25zdCBJ
ZGVudGlmaWVyKiBjbGFzc05hbWUgPSAwOworfTsKKyNlbmRpZgorCiB9CiAKICNlbmRpZgo=
</data>
<flag name="review"
          id="274218"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>