<?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>178726</bug_id>
          
          <creation_ts>2017-10-24 07:29:44 -0700</creation_ts>
          <short_desc>[JSC] Introduce @toObject</short_desc>
          <delta_ts>2017-11-15 12:57:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>178737</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1363672</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-24 07:29:44 -0700</bug_when>
    <thetext>[JSC] Introduce @toObject</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363677</commentid>
    <comment_count>1</comment_count>
      <attachid>324672</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-24 07:47:15 -0700</bug_when>
    <thetext>Created attachment 324672
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363778</commentid>
    <comment_count>2</comment_count>
      <attachid>324690</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-24 11:40:22 -0700</bug_when>
    <thetext>Created attachment 324690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365239</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-26 20:52:21 -0700</bug_when>
    <thetext>Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365446</commentid>
    <comment_count>4</comment_count>
      <attachid>324690</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-27 11:29:40 -0700</bug_when>
    <thetext>Comment on attachment 324690
Patch

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

r=me with comments

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        Previously we emulated @toObject behavior in builtin JS. But it consumes much bytecode size while @toObject

consumes much =&gt; consumes a lot

&gt; Source/JavaScriptCore/builtins/ArrayConstructor.js:55
&gt; +    var arrayLike = @toObject(items, &quot;Array.from requires an array-like object - not null or undefined&quot;);

why is this OK? `items` us used in the code below so this seems like it changed behavior

&gt; Source/JavaScriptCore/builtins/DatePrototype.js:43
&gt; +            options = @toObject(opts, &quot;&quot;);

Why switch this? We know opts is not null/undefined here

&gt; Source/JavaScriptCore/builtins/DatePrototype.js:100
&gt; +            options = @toObject(opts, &quot;&quot;);

Why switch this? We know opts is not null/undefined here

&gt; Source/JavaScriptCore/builtins/DatePrototype.js:150
&gt; +            options = @toObject(opts, &quot;&quot;);

Why switch this? We know opts is not null/undefined here

&gt; Source/JavaScriptCore/builtins/GlobalOperations.js:93
&gt; +    let from = @toObject(source, &quot;&quot;);

Why switch this given there is already null/undefined check above.

&gt; Source/JavaScriptCore/builtins/GlobalOperations.js:118
&gt; +    let from = @toObject(source, &quot;&quot;);

ditto

&gt; Source/JavaScriptCore/builtins/TypedArrayConstructor.js:62
&gt; +    let arrayLike = @toObject(items, &quot;TypedArray.from requires an array-like object - not null or undefined&quot;);

This seems like a semantic change given items is used below.

&gt; Source/JavaScriptCore/builtins/TypedArrayPrototype.js:342
&gt; +        var speciesConstructor = @toObject(constructor, &quot;&quot;).@speciesSymbol;

This seems like a semantic change given constructor might be null. Why change this?

&gt; Source/JavaScriptCore/builtins/TypedArrayPrototype.js:383
&gt; +        var speciesConstructor = @toObject(constructor, &quot;&quot;).@speciesSymbol;

ditto

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1044
&gt; +    return generator.moveToDestinationIfNeeded(dst, generator.emitToObject(generator.tempDestination(dst), src.get(), message));

Don&apos;t you want to capture tempDestination result in RefPtr?

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2197
&gt; +        if (node-&gt;op() == ToObject)
&gt; +            clobberWorld(node-&gt;origin.semantic, clobberLimit);

Why clobberWorld?

&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:527
&gt; +        write(Heap);

Is this really true?

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:292
&gt; +        if (errorMessage-&gt;length()) {
&gt; +            throwVMTypeError(exec, scope, errorMessage);
&gt; +            return nullptr;
&gt; +        }

I&apos;m really not a fan of this API. The responsibility of this node should be to always thrown an error message in the case of undefined/null. Builtins that don&apos;t want this shouldn&apos;t use this API.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:-4022
&gt; -    RELEASE_ASSERT(node-&gt;child1().useKind() == UntypedUse);

Why remove this? It seems like the code below is wrong if this isn&apos;t true since you don&apos;t perform type checks

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:445
&gt; +        if (!ident.isEmpty())
&gt; +            THROW(createTypeError(exec, ident.impl()));

Same comment. I&apos;m really not a fan of these semantics. We should use the old @Object if this is what we want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366843</commentid>
    <comment_count>5</comment_count>
      <attachid>324690</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-01 07:02:44 -0700</bug_when>
    <thetext>Comment on attachment 324690
Patch

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

&gt;&gt; Source/JavaScriptCore/builtins/ArrayConstructor.js:55
&gt;&gt; +    var arrayLike = @toObject(items, &quot;Array.from requires an array-like object - not null or undefined&quot;);
&gt; 
&gt; why is this OK? `items` us used in the code below so this seems like it changed behavior

If `items` is null or undefined, @toObject / the previous code throw an error.
And if it&apos;s not, we perform ToObject abstract operation on `items` when accessing @iteratorSymbol property.
So, the semantics is not changed.

&gt;&gt; Source/JavaScriptCore/builtins/DatePrototype.js:43
&gt;&gt; +            options = @toObject(opts, &quot;&quot;);
&gt; 
&gt; Why switch this? We know opts is not null/undefined here

Just because @toObject is more verbose, and it is strictly aligned to the spec.

&gt;&gt; Source/JavaScriptCore/builtins/DatePrototype.js:100
&gt;&gt; +            options = @toObject(opts, &quot;&quot;);
&gt; 
&gt; Why switch this? We know opts is not null/undefined here

Just because @toObject is more verbose, and it is strictly aligned to the spec.

&gt;&gt; Source/JavaScriptCore/builtins/DatePrototype.js:150
&gt;&gt; +            options = @toObject(opts, &quot;&quot;);
&gt; 
&gt; Why switch this? We know opts is not null/undefined here

Just because @toObject is more verbose, and it is strictly aligned to the spec.

&gt;&gt; Source/JavaScriptCore/builtins/GlobalOperations.js:93
&gt;&gt; +    let from = @toObject(source, &quot;&quot;);
&gt; 
&gt; Why switch this given there is already null/undefined check above.

Just because @toObject is more verbose, and it is strictly aligned to the spec.

&gt;&gt; Source/JavaScriptCore/builtins/GlobalOperations.js:118
&gt;&gt; +    let from = @toObject(source, &quot;&quot;);
&gt; 
&gt; ditto

Ditto. The spec uses @toObject here.

&gt;&gt; Source/JavaScriptCore/builtins/TypedArrayConstructor.js:62
&gt;&gt; +    let arrayLike = @toObject(items, &quot;TypedArray.from requires an array-like object - not null or undefined&quot;);
&gt; 
&gt; This seems like a semantic change given items is used below.

As is explained in Array.from, the semantics is not changed here.

&gt;&gt; Source/JavaScriptCore/builtins/TypedArrayPrototype.js:342
&gt;&gt; +        var speciesConstructor = @toObject(constructor, &quot;&quot;).@speciesSymbol;
&gt; 
&gt; This seems like a semantic change given constructor might be null. Why change this?

In the spec, we throw an error if @isObject() condition is not met. So rather this fixes the existing bug.
https://tc39.github.io/ecma262/#sec-speciesconstructor
For here, we can just do `constructor.@speciesSymbol`. Fixed.

&gt;&gt; Source/JavaScriptCore/builtins/TypedArrayPrototype.js:383
&gt;&gt; +        var speciesConstructor = @toObject(constructor, &quot;&quot;).@speciesSymbol;
&gt; 
&gt; ditto

Ditto

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2197
&gt;&gt; +            clobberWorld(node-&gt;origin.semantic, clobberLimit);
&gt; 
&gt; Why clobberWorld?

It may throw an error.

&gt;&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:527
&gt;&gt; +        write(Heap);
&gt; 
&gt; Is this really true?

Yes, it can throw an error. If we prove that the given ToObject does not throw any errors (with edge filters etc.), we lower it to CallObjectConstructor.

&gt;&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:292
&gt;&gt; +        }
&gt; 
&gt; I&apos;m really not a fan of this API. The responsibility of this node should be to always thrown an error message in the case of undefined/null. Builtins that don&apos;t want this shouldn&apos;t use this API.

It&apos;s just a workaround for verbose messages. If &quot;not an object&quot; error is ok, we can just call it.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:-4022
&gt;&gt; -    RELEASE_ASSERT(node-&gt;child1().useKind() == UntypedUse);
&gt; 
&gt; Why remove this? It seems like the code below is wrong if this isn&apos;t true since you don&apos;t perform type checks

Reverted this part. Originally, my WIP patch has some edges.

&gt;&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:445
&gt;&gt; +            THROW(createTypeError(exec, ident.impl()));
&gt; 
&gt; Same comment. I&apos;m really not a fan of these semantics. We should use the old @Object if this is what we want.

I don&apos;t think using @Object is better. It is not aligned to the spec. This is only for verbose error messages in the current butilins.
I&apos;m ok to change the current builtin messages to something &quot;failed to convert null/undefined to an object&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366844</commentid>
    <comment_count>6</comment_count>
      <attachid>324690</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-01 07:03:23 -0700</bug_when>
    <thetext>Comment on attachment 324690
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:445
&gt;&gt;&gt; +            THROW(createTypeError(exec, ident.impl()));
&gt;&gt; 
&gt;&gt; Same comment. I&apos;m really not a fan of these semantics. We should use the old @Object if this is what we want.
&gt; 
&gt; I don&apos;t think using @Object is better. It is not aligned to the spec. This is only for verbose error messages in the current butilins.
&gt; I&apos;m ok to change the current builtin messages to something &quot;failed to convert null/undefined to an object&quot;.

I&apos;ll drop this part, and make the current builtin error messages a bit less verbose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366892</commentid>
    <comment_count>7</comment_count>
      <attachid>324690</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-01 10:13:42 -0700</bug_when>
    <thetext>Comment on attachment 324690
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1044
&gt;&gt; +    return generator.moveToDestinationIfNeeded(dst, generator.emitToObject(generator.tempDestination(dst), src.get(), message));
&gt; 
&gt; Don&apos;t you want to capture tempDestination result in RefPtr?

It&apos;s ok as long as we do not allocate a newTemprary(), so this code is OK. But it&apos;s safe to do that. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366899</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-01 10:32:44 -0700</bug_when>
    <thetext>Committed r224280: &lt;https://trac.webkit.org/changeset/224280&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366928</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-11-01 11:13:50 -0700</bug_when>
    <thetext>Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366939</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-01 11:25:10 -0700</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #9)
&gt; Nice!

:D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366940</commentid>
    <comment_count>11</comment_count>
      <attachid>324690</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-01 11:25:55 -0700</bug_when>
    <thetext>Comment on attachment 324690
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:9
&gt;&gt; +        Previously we emulated @toObject behavior in builtin JS. But it consumes much bytecode size while @toObject
&gt; 
&gt; consumes much =&gt; consumes a lot

Oops! I missed this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367340</commentid>
    <comment_count>12</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-11-02 08:50:58 -0700</bug_when>
    <thetext>stress/to-object-intrinsic.js is failing on debug bots:

stress/to-object-intrinsic.js.default: ERROR: Unchecked JS exception:
stress/to-object-intrinsic.js.default:     This scope can throw a JS exception: toObjectSlowCase @ ./runtime/JSCJSValue.cpp:97
stress/to-object-intrinsic.js.default:         (ExceptionScope::m_recursionDepth was 5)
stress/to-object-intrinsic.js.default:     But the exception was unchecked as of this scope: operationToObject @ ./dfg/DFGOperations.cpp:283
stress/to-object-intrinsic.js.default:         (ExceptionScope::m_recursionDepth was 4)

https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20JSC%20(Tests)/builds/174/steps/jscore-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367368</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-02 09:39:03 -0700</bug_when>
    <thetext>Committed r224335: &lt;https://trac.webkit.org/changeset/224335&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372282</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 12:57:53 -0800</bug_when>
    <thetext>&lt;rdar://problem/35568496&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324672</attachid>
            <date>2017-10-24 07:47:15 -0700</date>
            <delta_ts>2017-10-24 11:40:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178726-20171024234714.patch</filename>
            <type>text/plain</type>
            <size>68812</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzODg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MGQ2YWU4OGM5NDk0OTY0NWI5NDdmNDBhYmNkMjQ2NWVlNmFiYmQ0Li40NDA4Mjg1ZGQwYTE0MGZi
ZGRmNGU5MmZlYzVhOGJkYTQ3ODg1NjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDQgQEAKKzIwMTctMTAtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gSW50cm9kdWNlIEB0b09iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NzI2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2Vz
IEB0b09iamVjdCBpbnRyaW5zaWMuIEFuZCB3ZSBpbnRyb2R1Y2Ugb3BfdG9fb2JqZWN0IGJ5dGVj
b2RlIGFuZCBERkcgVG9PYmplY3Qgbm9kZS4KKyAgICAgICAgUHJldmlvdXNseSB3ZSBlbXVsYXRl
ZCBAdG9PYmplY3QgYmVoYXZpb3IgaW4gYnVpbHRpbiBKUy4gQnV0IGl0IGNvbnN1bWVzIG11Y2gg
Ynl0ZWNvZGUgc2l6ZSB3aGlsZSBAdG9PYmplY3QKKyAgICAgICAgaXMgZnJlcXVlbnRseSBzZWVu
IGFuZCBkZWZpbmVkIGNsZWFybHkgaW4gdGhlIHNwZWMuIEZ1cnRoZXJtb3JlLCB0aGUgZW11bGF0
ZWQgQHRvT2JqZWN0IGFsd2F5cyBjYWxscworICAgICAgICBPYmplY3RDb25zdHJ1Y3RvciBpbiBM
TEludCBhbmQgQmFzZWxpbmUuCisKKyAgICAgICAgV2UgYWRkIGEgbmV3IGludHJpbnNpYyBgQHRv
T2JqZWN0KHRhcmdldCwgImVycm9yIG1lc3NhZ2UiKWAuIEl0IHRha2VzIGFuIGVycm9yIG1lc3Nh
Z2Ugc3RyaW5nIGNvbnN0YW50IHRvCisgICAgICAgIG9mZmVyIHVuZGVyc3RhbmRhYmxlIG1lc3Nh
Z2VzIGluIGJ1aWx0aW4gSlMuIFdlIGNhbiBjaGFuZ2UgdGhlIGZyZXF1ZW50bHkgc2VlbiAiZW11
bGF0ZWQgVG9PYmplY3QiIG9wZXJhdGlvbgorCisgICAgICAgICAgICBpZiAodGhpcyA9PT0gQHVu
ZGVmaW5lZCB8fCB0aGlzID09PSBudWxsKQorICAgICAgICAgICAgICAgIEB0aHJvd1R5cGVFcnJv
cigiZXJyb3IgbWVzc2FnZSIpOworICAgICAgICAgICAgdmFyIG9iamVjdCA9IEBPYmplY3QodGhp
cyk7CisKKyAgICAgICAgd2l0aAorCisgICAgICAgICAgICB2YXIgb2JqZWN0ID0gQHRvT2JqZWN0
KHRoaXMsICJlcnJvciBtZXNzYWdlIik7CisKKyAgICAgICAgQW5kIHdlIGhhbmRsZSBvcF90b19v
YmplY3QgaW4gREZHIGFzIFRvT2JqZWN0IG5vZGUuIFdoaWxlIENhbGxPYmplY3RDb25zdHJ1Y3Rv
ciBkb2VzIG5vdCB0aHJvdyBhbiBlcnJvciBmb3IgbnVsbC91bmRlZmluZWQsCisgICAgICAgIFRv
T2JqZWN0IG5lZWRzIHRvIHRocm93IGFuIGVycm9yIGZvciBudWxsL3VuZGVmaW5lZC4gU28gaXQg
aXMgbWFya2VkIGFzIE11c3RHZW5lcmF0ZSBhbmQgaXQgY2xvYmJlcnMgdGhlIHdvcmxkLgorICAg
ICAgICBJbiBmaXh1cCBwaGFzZSwgd2UgYXR0ZW1wdCB0byBjb252ZXJ0IFRvT2JqZWN0IHRvIENh
bGxPYmplY3RDb25zdHJ1Y3RvciB3aXRoIGVkZ2UgZmlsdGVycyB0byByZWxheCBpdHMgc2lkZSBl
ZmZlY3QuCisKKyAgICAgICAgKiBidWlsdGlucy9BcnJheUNvbnN0cnVjdG9yLmpzOgorICAgICAg
ICAoZnJvbSk6CisgICAgICAgICogYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanM6CisgICAgICAg
ICh2YWx1ZXMpOgorICAgICAgICAoa2V5cyk6CisgICAgICAgIChlbnRyaWVzKToKKyAgICAgICAg
KHJlZHVjZSk6CisgICAgICAgIChyZWR1Y2VSaWdodCk6CisgICAgICAgIChldmVyeSk6CisgICAg
ICAgIChmb3JFYWNoKToKKyAgICAgICAgKGZpbHRlcik6CisgICAgICAgIChtYXApOgorICAgICAg
ICAoc29tZSk6CisgICAgICAgIChmaWxsKToKKyAgICAgICAgKGZpbmQpOgorICAgICAgICAoZmlu
ZEluZGV4KToKKyAgICAgICAgKGluY2x1ZGVzKToKKyAgICAgICAgKHNvcnQpOgorICAgICAgICAo
Z2xvYmFsUHJpdmF0ZS5jb25jYXRTbG93UGF0aCk6CisgICAgICAgIChjb3B5V2l0aGluKToKKyAg
ICAgICAgKiBidWlsdGlucy9EYXRlUHJvdG90eXBlLmpzOgorICAgICAgICAodG9Mb2NhbGVTdHJp
bmcudG9EYXRlVGltZU9wdGlvbnNBbnlBbGwpOgorICAgICAgICAodG9Mb2NhbGVTdHJpbmcpOgor
ICAgICAgICAodG9Mb2NhbGVEYXRlU3RyaW5nLnRvRGF0ZVRpbWVPcHRpb25zRGF0ZURhdGUpOgor
ICAgICAgICAodG9Mb2NhbGVEYXRlU3RyaW5nKToKKyAgICAgICAgKHRvTG9jYWxlVGltZVN0cmlu
Zy50b0RhdGVUaW1lT3B0aW9uc1RpbWVUaW1lKToKKyAgICAgICAgKHRvTG9jYWxlVGltZVN0cmlu
Zyk6CisgICAgICAgICogYnVpbHRpbnMvR2xvYmFsT3BlcmF0aW9ucy5qczoKKyAgICAgICAgKGds
b2JhbFByaXZhdGUuY29weURhdGFQcm9wZXJ0aWVzKToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUu
Y29weURhdGFQcm9wZXJ0aWVzTm9FeGNsdXNpb25zKToKKyAgICAgICAgKiBidWlsdGlucy9PYmpl
Y3RDb25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKGVudHJpZXMpOgorICAgICAgICAqIGJ1aWx0aW5z
L1N0cmluZ0NvbnN0cnVjdG9yLmpzOgorICAgICAgICAocmF3KToKKyAgICAgICAgKiBidWlsdGlu
cy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanM6CisgICAgICAgIChmcm9tKToKKyAgICAgICAgKiBi
dWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzOgorICAgICAgICAobWFwKToKKyAgICAgICAg
KGZpbHRlcik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6
CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAo
SlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRvT2JqZWN0KToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY190b09iamVjdCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25z
dGFudEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVy
aXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RG
R0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcv
REZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBO
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cFRvT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cENhbGxPYmplY3RDb25zdHJ1Y3Rvcik6
CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252
ZXJ0VG9DYWxsT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNv
bnZlcnRUb05ld1N0cmluZ09iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVy
dFRvTmV3T2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNJZGVudGlmaWVyKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNIZWFwUHJlZGljdGlvbik6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6aGFzQ2VsbE9wZXJhbmQpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlw
ZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9PYmplY3RPckNh
bGxPYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDYWxsT2JqZWN0Q29uc3RydWN0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
YWxsT3BlcmF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVO
b2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvT2Jq
ZWN0T3JDYWxsT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9iamVjdENvbnN0cnVjdG9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAg
ICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3RvX29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfdG9fb2JqZWN0KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfdG9fb2JqZWN0KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAg
ICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuaDoKKwogMjAxNy0xMC0yMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByZWxhbmQgcjIyMzg2NgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDlh
YjcxNTI2NDg0ZGI1YTM5ZDI5NGI1ZmZmYjBjOTcyOTJhNDk3ZjEuLjM2MTg0NDg1MTBlMzhjZDZj
ODMwMDZiY2FhNTc1NDA5OTVmNWRkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Ny0xMC0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbSlNDXSBJbnRyb2R1Y2UgQHRvT2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg3MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgQGlzT2JqZWN0IGluc3RlYWQuIEl0IGlzIG1vcmUgZWZm
aWNpZW50LgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVk
aWEuanM6CisgICAgICAgIChnZXRVc2VyTWVkaWEpOgorCiAyMDE3LTEwLTI0ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIERvY3VtZW50T3JkZXJlZE1hcDo6YWRk
IHNob3VsZCByZWxlYXNlIGFzc2VydCB0aGF0IHRyZWUgc2NvcGVzIG1hdGNoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheUNvbnN0cnVjdG9yLmpzCmluZGV4IDcz
YWRkMWE3MGUwMDljMDhiZjMwOGE5YjcyZGQzYmI2YmU1MzkyMmUuLjA3NjU2YjgwMWM2NzMzNjU1
MzllODVhNDRhMjEwNTVjYzNlNjIyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9BcnJheUNvbnN0cnVjdG9yLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9BcnJheUNvbnN0cnVjdG9yLmpzCkBAIC01MiwxMCArNTIsOSBAQCBmdW5jdGlv
biBmcm9tKGl0ZW1zIC8qLCBtYXBGbiwgdGhpc0FyZyAqLykKICAgICAgICAgdGhpc0FyZyA9IEBh
cmd1bWVudCgyKTsKICAgICB9CiAKLSAgICBpZiAoaXRlbXMgPT0gbnVsbCkKLSAgICAgICAgQHRo
cm93VHlwZUVycm9yKCJBcnJheS5mcm9tIHJlcXVpcmVzIGFuIGFycmF5LWxpa2Ugb2JqZWN0IC0g
bm90IG51bGwgb3IgdW5kZWZpbmVkIik7CisgICAgdmFyIGFycmF5TGlrZSA9IEB0b09iamVjdChp
dGVtcywgIkFycmF5LmZyb20gcmVxdWlyZXMgYW4gYXJyYXktbGlrZSBvYmplY3QgLSBub3QgbnVs
bCBvciB1bmRlZmluZWQiKTsKIAotICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZW1zLkBpdGVy
YXRvclN5bWJvbDsKKyAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBhcnJheUxpa2UuQGl0ZXJhdG9y
U3ltYm9sOwogICAgIGlmIChpdGVyYXRvck1ldGhvZCAhPSBudWxsKSB7CiAgICAgICAgIGlmICh0
eXBlb2YgaXRlcmF0b3JNZXRob2QgIT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICBAdGhyb3dU
eXBlRXJyb3IoIkFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgcHJvcGVydHkgb2YgdGhlIGZp
cnN0IGFyZ3VtZW50LCBpdGVtc1tTeW1ib2wuaXRlcmF0b3JdLCB3aGVuIGV4aXN0cywgYmUgYSBm
dW5jdGlvbiIpOwpAQCAtODMsNyArODIsNiBAQCBmdW5jdGlvbiBmcm9tKGl0ZW1zIC8qLCBtYXBG
biwgdGhpc0FyZyAqLykKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICB2YXIg
YXJyYXlMaWtlID0gQE9iamVjdChpdGVtcyk7CiAgICAgdmFyIGFycmF5TGlrZUxlbmd0aCA9IEB0
b0xlbmd0aChhcnJheUxpa2UubGVuZ3RoKTsKIAogICAgIHZhciByZXN1bHQgPSBAaXNDb25zdHJ1
Y3Rvcih0aGlzT2JqKSA/IG5ldyB0aGlzT2JqKGFycmF5TGlrZUxlbmd0aCkgOiBAbmV3QXJyYXlX
aXRoU2l6ZShhcnJheUxpa2VMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCmluZGV4IDMwYTc5N2QyNTUwOTRhYTc1MDgyNjNmN2I2
OWIwMmRmMTEwMmJmNTMuLjVlNTU3Yjg3MWQ2NWJkNTYwOGIxNzM4NGU3MGEzZjk5N2UzMThiMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVByb3RvdHlw
ZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUu
anMKQEAgLTQxLDQwICs0MSwyOCBAQCBmdW5jdGlvbiB2YWx1ZXMoKQogewogICAgICJ1c2Ugc3Ry
aWN0IjsKIAotICAgIGlmICh0aGlzID09PSBudWxsIHx8IHRoaXMgPT09IEB1bmRlZmluZWQpCi0g
ICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLnZhbHVlcyByZXF1aXJlcyB0
aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKLQotICAgIHJldHVybiBuZXcg
QGNyZWF0ZUFycmF5SXRlcmF0b3IoQE9iamVjdCh0aGlzKSwgInZhbHVlIiwgQGFycmF5SXRlcmF0
b3JWYWx1ZU5leHQpOworICAgIHJldHVybiBuZXcgQGNyZWF0ZUFycmF5SXRlcmF0b3IoQHRvT2Jq
ZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUudmFsdWVzIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5v
dCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpLCAidmFsdWUiLCBAYXJyYXlJdGVyYXRvclZhbHVlTmV4
dCk7CiB9CiAKIGZ1bmN0aW9uIGtleXMoKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGlm
ICh0aGlzID09PSBudWxsIHx8IHRoaXMgPT09IEB1bmRlZmluZWQpCi0gICAgICAgIEB0aHJvd1R5
cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmtleXMgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJl
IG51bGwgb3IgdW5kZWZpbmVkIik7Ci0KLSAgICByZXR1cm4gbmV3IEBjcmVhdGVBcnJheUl0ZXJh
dG9yKEBPYmplY3QodGhpcyksICJrZXkiLCBAYXJyYXlJdGVyYXRvcktleU5leHQpOworICAgIHJl
dHVybiBuZXcgQGNyZWF0ZUFycmF5SXRlcmF0b3IoQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90
b3R5cGUua2V5cyByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQi
KSwgImtleSIsIEBhcnJheUl0ZXJhdG9yS2V5TmV4dCk7CiB9CiAKIGZ1bmN0aW9uIGVudHJpZXMo
KQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGlmICh0aGlzID09PSBudWxsIHx8IHRoaXMg
PT09IEB1bmRlZmluZWQpCi0gICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJyYXkucHJvdG90eXBl
LmVudHJpZXMgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7
Ci0KLSAgICByZXR1cm4gbmV3IEBjcmVhdGVBcnJheUl0ZXJhdG9yKEBPYmplY3QodGhpcyksICJr
ZXkrdmFsdWUiLCBAYXJyYXlJdGVyYXRvcktleVZhbHVlTmV4dCk7CisgICAgcmV0dXJuIG5ldyBA
Y3JlYXRlQXJyYXlJdGVyYXRvcihAdG9PYmplY3QodGhpcywgIkFycmF5LnByb3RvdHlwZS5lbnRy
aWVzIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpLCAia2V5
K3ZhbHVlIiwgQGFycmF5SXRlcmF0b3JLZXlWYWx1ZU5leHQpOwogfQogCiBmdW5jdGlvbiByZWR1
Y2UoY2FsbGJhY2sgLyosIGluaXRpYWxWYWx1ZSAqLykKIHsKICAgICAidXNlIHN0cmljdCI7CiAK
LSAgICBpZiAodGhpcyA9PT0gbnVsbCB8fCB0aGlzID09PSBAdW5kZWZpbmVkKQotICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5yZWR1Y2UgcmVxdWlyZXMgdGhhdCB8dGhp
c3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7Ci0KLSAgICB2YXIgYXJyYXkgPSBAT2JqZWN0
KHRoaXMpOworICAgIHZhciBhcnJheSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90eXBl
LnJlZHVjZSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsK
ICAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CiAKICAgICBpZiAodHlw
ZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQpAQCAtMTA3LDEwICs5NSw3IEBAIGZ1bmN0aW9u
IHJlZHVjZVJpZ2h0KGNhbGxiYWNrIC8qLCBpbml0aWFsVmFsdWUgKi8pCiB7CiAgICAgInVzZSBz
dHJpY3QiOwogCi0gICAgaWYgKHRoaXMgPT09IG51bGwgfHwgdGhpcyA9PT0gQHVuZGVmaW5lZCkK
LSAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQgcmVx
dWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7Ci0KLSAgICB2YXIg
YXJyYXkgPSBAT2JqZWN0KHRoaXMpOworICAgIHZhciBhcnJheSA9IEB0b09iamVjdCh0aGlzLCAi
QXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBu
dWxsIG9yIHVuZGVmaW5lZCIpOwogICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVu
Z3RoKTsKIAogICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCkBAIC0xNDMs
MTAgKzEyOCw3IEBAIGZ1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQogewog
ICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGlmICh0aGlzID09PSBudWxsIHx8IHRoaXMgPT09IEB1
bmRlZmluZWQpCi0gICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmV2ZXJ5
IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwotICAgIAot
ICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGFycmF5ID0gQHRvT2JqZWN0
KHRoaXMsICJBcnJheS5wcm90b3R5cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJl
IG51bGwgb3IgdW5kZWZpbmVkIik7CiAgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5s
ZW5ndGgpOwogCiAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKQEAgLTE2
OCwxMCArMTUwLDcgQEAgZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykK
IHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBpZiAodGhpcyA9PT0gbnVsbCB8fCB0aGlzID09
PSBAdW5kZWZpbmVkKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5m
b3JFYWNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwot
ICAgIAotICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGFycmF5ID0gQHRv
T2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCByZXF1aXJlcyB0aGF0IHx0aGlz
fCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKICAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3Ro
KGFycmF5Lmxlbmd0aCk7CiAKICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24i
KQpAQCAtMTg5LDEwICsxNjgsNyBAQCBmdW5jdGlvbiBmaWx0ZXIoY2FsbGJhY2sgLyosIHRoaXNB
cmcgKi8pCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgaWYgKHRoaXMgPT09IG51bGwgfHwg
dGhpcyA9PT0gQHVuZGVmaW5lZCkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJheS5wcm90
b3R5cGUuZmlsdGVyIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5l
ZCIpOwotICAgIAotICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGFycmF5
ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUuZmlsdGVyIHJlcXVpcmVzIHRoYXQg
fHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwogICAgIHZhciBsZW5ndGggPSBAdG9M
ZW5ndGgoYXJyYXkubGVuZ3RoKTsKIAogICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5j
dGlvbiIpCkBAIC0yMzgsMTAgKzIxNCw3IEBAIGZ1bmN0aW9uIG1hcChjYWxsYmFjayAvKiwgdGhp
c0FyZyAqLykKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBpZiAodGhpcyA9PT0gbnVsbCB8
fCB0aGlzID09PSBAdW5kZWZpbmVkKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnBy
b3RvdHlwZS5tYXAgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVk
Iik7Ci0gICAgCi0gICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIgYXJyYXkg
PSBAdG9PYmplY3QodGhpcywgIkFycmF5LnByb3RvdHlwZS5tYXAgcmVxdWlyZXMgdGhhdCB8dGhp
c3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0
aChhcnJheS5sZW5ndGgpOwogCiAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9u
IikKQEAgLTI4MywxMCArMjU2LDcgQEAgZnVuY3Rpb24gc29tZShjYWxsYmFjayAvKiwgdGhpc0Fy
ZyAqLykKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBpZiAodGhpcyA9PT0gbnVsbCB8fCB0
aGlzID09PSBAdW5kZWZpbmVkKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3Rv
dHlwZS5zb21lIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIp
OwotICAgIAotICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGFycmF5ID0g
QHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUuc29tZSByZXF1aXJlcyB0aGF0IHx0aGlz
fCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKICAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3Ro
KGFycmF5Lmxlbmd0aCk7CiAKICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24i
KQpAQCAtMzA2LDEwICsyNzYsNyBAQCBmdW5jdGlvbiBmaWxsKHZhbHVlIC8qIFssIHN0YXJ0IFss
IGVuZF1dICovKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGlmICh0aGlzID09PSBudWxs
IHx8IHRoaXMgPT09IEB1bmRlZmluZWQpCi0gICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJyYXku
cHJvdG90eXBlLmZpbGwgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZp
bmVkIik7Ci0KLSAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpOworICAgIHZhciBhcnJheSA9
IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90eXBlLmZpbGwgcmVxdWlyZXMgdGhhdCB8dGhp
c3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0
aChhcnJheS5sZW5ndGgpOwogCiAgICAgdmFyIHJlbGF0aXZlU3RhcnQgPSBAdG9JbnRlZ2VyKEBh
cmd1bWVudCgxKSk7CkBAIC0zNDYsMTAgKzMxMyw3IEBAIGZ1bmN0aW9uIGZpbmQoY2FsbGJhY2sg
LyosIHRoaXNBcmcgKi8pCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgaWYgKHRoaXMgPT09
IG51bGwgfHwgdGhpcyA9PT0gQHVuZGVmaW5lZCkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCJB
cnJheS5wcm90b3R5cGUuZmluZCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1
bmRlZmluZWQiKTsKLSAgICAKLSAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpOworICAgIHZh
ciBhcnJheSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90eXBlLmZpbmQgcmVxdWlyZXMg
dGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAgICAgdmFyIGxlbmd0aCA9
IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOwogCiAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0g
ImZ1bmN0aW9uIikKQEAgLTM2OCwxMCArMzMyLDcgQEAgZnVuY3Rpb24gZmluZEluZGV4KGNhbGxi
YWNrIC8qLCB0aGlzQXJnICovKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGlmICh0aGlz
ID09PSBudWxsIHx8IHRoaXMgPT09IEB1bmRlZmluZWQpCi0gICAgICAgIEB0aHJvd1R5cGVFcnJv
cigiQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUg
bnVsbCBvciB1bmRlZmluZWQiKTsKLSAgICAKLSAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMp
OworICAgIHZhciBhcnJheSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90eXBlLmZpbmRJ
bmRleCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKICAg
ICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CiAKICAgICBpZiAodHlwZW9m
IGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQpAQCAtMzg5LDEwICszNTAsNyBAQCBmdW5jdGlvbiBp
bmNsdWRlcyhzZWFyY2hFbGVtZW50IC8qLCBmcm9tSW5kZXgqLykKIHsKICAgICAidXNlIHN0cmlj
dCI7CiAKLSAgICBpZiAodGhpcyA9PT0gbnVsbCB8fCB0aGlzID09PSBAdW5kZWZpbmVkKQotICAg
ICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5pbmNsdWRlcyByZXF1aXJlcyB0
aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKLQotICAgIHZhciBhcnJheSA9
IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGFycmF5ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5w
cm90b3R5cGUuaW5jbHVkZXMgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5k
ZWZpbmVkIik7CiAgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOwogCiAg
ICAgaWYgKGxlbmd0aCA9PT0gMCkKQEAgLTYzMywxMCArNTkxLDcgQEAgZnVuY3Rpb24gc3RyaW5n
U29ydChhcnJheSwgbGVuZ3RoKQogICAgICAgICBidWNrZXRTb3J0KGFycmF5LCAwLCBzdHJpbmdz
LCAwKTsKICAgICB9CiAKLSAgICBpZiAodGhpcyA9PT0gbnVsbCB8fCB0aGlzID09PSBAdW5kZWZp
bmVkKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5zb3J0IHJlcXVp
cmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwotCi0gICAgdmFyIGFy
cmF5ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIgYXJyYXkgPSBAdG9PYmplY3QodGhpcywgIkFy
cmF5LnByb3RvdHlwZS5zb3J0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVu
ZGVmaW5lZCIpOwogCiAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA+Pj4gMDsKIApAQCAt
NjYwLDEwICs2MTUsNyBAQCBmdW5jdGlvbiBjb25jYXRTbG93UGF0aCgpCiB7CiAgICAgInVzZSBz
dHJpY3QiOwogCi0gICAgaWYgKHRoaXMgPT09IG51bGwgfHwgdGhpcyA9PT0gQHVuZGVmaW5lZCkK
LSAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuY29uY2F0IHJlcXVpcmVz
IHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwotCi0gICAgdmFyIGN1cnJl
bnRFbGVtZW50ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIgY3VycmVudEVsZW1lbnQgPSBAdG9P
YmplY3QodGhpcywgIkFycmF5LnByb3RvdHlwZS5jb25jYXQgcmVxdWlyZXMgdGhhdCB8dGhpc3wg
bm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAKICAgICB2YXIgY29uc3RydWN0b3I7CiAgICAg
aWYgKEBpc0FycmF5KGN1cnJlbnRFbGVtZW50KSkgewpAQCAtNzUwLDEwICs3MDIsNyBAQCBmdW5j
dGlvbiBtaW5XaXRoTWF5YmVOZWdhdGl2ZVplcm9BbmRQb3NpdGl2ZShtYXliZU5lZ2F0aXZlWmVy
bywgcG9zaXRpdmUpCiAgICAgICAgIHJldHVybiAobWF5YmVOZWdhdGl2ZVplcm8gPCBwb3NpdGl2
ZSkgPyBtYXliZU5lZ2F0aXZlWmVybyA6IHBvc2l0aXZlOwogICAgIH0KIAotICAgIGlmICh0aGlz
ID09PSBudWxsIHx8IHRoaXMgPT09IEB1bmRlZmluZWQpCi0gICAgICAgIEB0aHJvd1R5cGVFcnJv
cigiQXJyYXkuY29weVdpdGhpbiByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1
bmRlZmluZWQiKTsKLQotICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGFy
cmF5ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiByZXF1aXJl
cyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKICAgICB2YXIgbGVuZ3Ro
ID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CiAKICAgICB2YXIgcmVsYXRpdmVUYXJnZXQgPSBA
dG9JbnRlZ2VyKHRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvRGF0ZVByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9E
YXRlUHJvdG90eXBlLmpzCmluZGV4IDIzNGYxODUyMmU4MDlkMDAyZTBmY2E1YTAwY2Q3MmFmMDRj
NWFkZDMuLjE4MzNlMzYyNWQwYjFhOTQxNjRkZTJiMDE3YjUwMTJhMzYxNGQyZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9EYXRlUHJvdG90eXBlLmpzCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9EYXRlUHJvdG90eXBlLmpzCkBAIC00MCw3
ICs0MCw3IEBAIGZ1bmN0aW9uIHRvRGF0ZVRpbWVPcHRpb25zQW55QWxsKG9wdHMpCiAgICAgICAg
IGVsc2UgaWYgKG9wdHMgPT09IG51bGwpCiAgICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIm51
bGwgaXMgbm90IGFuIG9iamVjdCIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBvcHRpb25z
ID0gQE9iamVjdChvcHRzKTsKKyAgICAgICAgICAgIG9wdGlvbnMgPSBAdG9PYmplY3Qob3B0cywg
IiIpOwogCiAgICAgICAgIC8vIENoZWNrIG9yaWdpbmFsIGluc3RlYWQgb2YgZGVzY2VuZGFudCB0
byByZWR1Y2UgbG9va3VwcyB1cCB0aGUgcHJvdG90eXBlIGNoYWluLgogICAgICAgICB2YXIgbmVl
ZHNEZWZhdWx0cyA9ICFvcHRpb25zIHx8ICgKQEAgLTk3LDcgKzk3LDcgQEAgZnVuY3Rpb24gdG9E
YXRlVGltZU9wdGlvbnNEYXRlRGF0ZShvcHRzKQogICAgICAgICBlbHNlIGlmIChvcHRzID09PSBu
dWxsKQogICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJudWxsIGlzIG5vdCBhbiBvYmplY3Qi
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgb3B0aW9ucyA9IEBPYmplY3Qob3B0cyk7Cisg
ICAgICAgICAgICBvcHRpb25zID0gQHRvT2JqZWN0KG9wdHMsICIiKTsKIAogICAgICAgICAvLyBD
aGVjayBvcmlnaW5hbCBpbnN0ZWFkIG9mIGRlc2NlbmRhbnQgdG8gcmVkdWNlIGxvb2t1cHMgdXAg
dGhlIHByb3RvdHlwZSBjaGFpbi4KICAgICAgICAgdmFyIG5lZWRzRGVmYXVsdHMgPSAhb3B0aW9u
cyB8fCAoCkBAIC0xNDcsNyArMTQ3LDcgQEAgZnVuY3Rpb24gdG9EYXRlVGltZU9wdGlvbnNUaW1l
VGltZShvcHRzKQogICAgICAgICBlbHNlIGlmIChvcHRzID09PSBudWxsKQogICAgICAgICAgICAg
QHRocm93VHlwZUVycm9yKCJudWxsIGlzIG5vdCBhbiBvYmplY3QiKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgb3B0aW9ucyA9IEBPYmplY3Qob3B0cyk7CisgICAgICAgICAgICBvcHRpb25z
ID0gQHRvT2JqZWN0KG9wdHMsICIiKTsKIAogICAgICAgICAvLyBDaGVjayBvcmlnaW5hbCBpbnN0
ZWFkIG9mIGRlc2NlbmRhbnQgdG8gcmVkdWNlIGxvb2t1cHMgdXAgdGhlIHByb3RvdHlwZSBjaGFp
bi4KICAgICAgICAgdmFyIG5lZWRzRGVmYXVsdHMgPSAhb3B0aW9ucyB8fCAoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT3BlcmF0aW9ucy5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9iYWxPcGVyYXRpb25zLmpzCmluZGV4IDQz
YzZmYTExODZlMDA4ZGQ2OTBjYjliZjQ4M2RiZTRmNzg3N2I0ZmEuLjk2NzBkYjVlMGU5ZTY5ODU1
ZGU4ODRlMDJiOWUwZTRhZjViODYzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9HbG9iYWxPcGVyYXRpb25zLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9HbG9iYWxPcGVyYXRpb25zLmpzCkBAIC05MCw3ICs5MCw3IEBAIGZ1bmN0aW9u
IGNvcHlEYXRhUHJvcGVydGllcyh0YXJnZXQsIHNvdXJjZSwgZXhjbHVkZWRTZXQpCiAgICAgaWYg
KHNvdXJjZSA9PSBudWxsKSAKICAgICAgICAgcmV0dXJuIHRhcmdldDsKIAotICAgIGxldCBmcm9t
ID0gQE9iamVjdChzb3VyY2UpOyAKKyAgICBsZXQgZnJvbSA9IEB0b09iamVjdChzb3VyY2UsICIi
KTsKICAgICBsZXQga2V5cyA9IEBSZWZsZWN0LkBvd25LZXlzKGZyb20pOyAKICAgICBsZXQga2V5
c0xlbmd0aCA9IGtleXMubGVuZ3RoOwogICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5c0xlbmd0
aDsgaSsrKSB7CkBAIC0xMTUsNyArMTE1LDcgQEAgZnVuY3Rpb24gY29weURhdGFQcm9wZXJ0aWVz
Tm9FeGNsdXNpb25zKHRhcmdldCwgc291cmNlKQogICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgCiAg
ICAgICAgIHJldHVybiB0YXJnZXQ7CiAKLSAgICBsZXQgZnJvbSA9IEBPYmplY3Qoc291cmNlKTsg
CisgICAgbGV0IGZyb20gPSBAdG9PYmplY3Qoc291cmNlLCAiIik7CiAgICAgbGV0IGtleXMgPSBA
UmVmbGVjdC5Ab3duS2V5cyhmcm9tKTsgCiAgICAgbGV0IGtleXNMZW5ndGggPSBrZXlzLmxlbmd0
aDsKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXNMZW5ndGg7IGkrKykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL09iamVjdENvbnN0cnVjdG9yLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL09iamVjdENvbnN0cnVjdG9yLmpzCmluZGV4
IDFiMGI5Y2QyMTllZWM2YzczYTRjMmMwZmFmMzA5OWJkYjFhNWU3ZGEuLmFkYTBlY2EyYjQxODBi
MWY1MjI5YzgyZDAxNjViNTA4NTFlYjdhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMKQEAgLTI4LDEwICsyOCw3IEBAIGZ1
bmN0aW9uIGVudHJpZXMob2JqZWN0KQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGlmIChv
YmplY3QgPT0gbnVsbCkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCJPYmplY3QuZW50cmllcyBy
ZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsK
LQotICAgIHZhciBvYmogPSBAT2JqZWN0KG9iamVjdCk7CisgICAgdmFyIG9iaiA9IEB0b09iamVj
dChvYmplY3QsICJPYmplY3QuZW50cmllcyByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBu
b3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKICAgICB2YXIgbmFtZXMgPSBAZ2V0T3duUHJvcGVy
dHlOYW1lcyhvYmopOwogICAgIHZhciBwcm9wZXJ0aWVzID0gW107CiAgICAgZm9yICh2YXIgaSA9
IDAsIGxlbmd0aCA9IG5hbWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5nQ29uc3RydWN0b3IuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5nQ29uc3RydWN0b3IuanMKaW5kZXgg
YTMyOTMzMjhiY2U3MTdkNmU2OGZiNWNkNGFhYTg0NGIyZWVmZGVjOS4uZDUxYzIwZGE3ODkyYTg0
OTI1ZjE4MDJkYjc4ZjMyZjMxYThlYzY4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL1N0cmluZ0NvbnN0cnVjdG9yLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9TdHJpbmdDb25zdHJ1Y3Rvci5qcwpAQCAtMjcsMTQgKzI3LDkgQEAgZnVu
Y3Rpb24gcmF3KHRlbXBsYXRlKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGlmICh0ZW1w
bGF0ZSA9PT0gbnVsbCB8fCB0ZW1wbGF0ZSA9PT0gQHVuZGVmaW5lZCkKLSAgICAgICAgQHRocm93
VHlwZUVycm9yKCJTdHJpbmcucmF3IHJlcXVpcmVzIHRlbXBsYXRlIG5vdCBiZSBudWxsIG9yIHVu
ZGVmaW5lZCIpOwotICAgIHZhciBjb29rZWRTZWdtZW50cyA9IEBPYmplY3QodGVtcGxhdGUpOwot
Ci0gICAgdmFyIHJhd1ZhbHVlID0gY29va2VkU2VnbWVudHMucmF3OwotICAgIGlmIChyYXdWYWx1
ZSA9PT0gbnVsbCB8fCByYXdWYWx1ZSA9PT0gQHVuZGVmaW5lZCkKLSAgICAgICAgQHRocm93VHlw
ZUVycm9yKCJTdHJpbmcucmF3IHJlcXVpcmVzIHRlbXBsYXRlLnJhdyBub3QgYmUgbnVsbCBvciB1
bmRlZmluZWQiKTsKLSAgICB2YXIgcmF3U2VnbWVudHMgPSBAT2JqZWN0KHJhd1ZhbHVlKTsKKyAg
ICB2YXIgY29va2VkU2VnbWVudHMgPSBAdG9PYmplY3QodGVtcGxhdGUsICJTdHJpbmcucmF3IHJl
cXVpcmVzIHRlbXBsYXRlIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworCisgICAgdmFyIHJh
d1NlZ21lbnRzID0gQHRvT2JqZWN0KGNvb2tlZFNlZ21lbnRzLnJhdywgIlN0cmluZy5yYXcgcmVx
dWlyZXMgdGVtcGxhdGUucmF3IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwogCiAgICAgdmFy
IG51bWJlck9mU3Vic3RpdHV0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9y
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXlDb25zdHJ1Y3Rv
ci5qcwppbmRleCA1NGE5NTdiMjM5YzcyODE0MjAyODlhYzJiZmUzNjkxODA3ODIyNmY2Li43MjNl
ZjhiYTUwNTcyNzg1ZWM1MzQ0ZDgwOThkNGFiMjZjMmE0MGZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpzCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanMKQEAg
LTU5LDEwICs1OSw5IEBAIGZ1bmN0aW9uIGZyb20oaXRlbXMgLyogWyAsIG1hcGZuIFsgLCB0aGlz
QXJnIF0gXSAqLykKICAgICAgICAgdGhpc0FyZyA9IEBhcmd1bWVudCgyKTsKICAgICB9CiAKLSAg
ICBpZiAoaXRlbXMgPT0gbnVsbCkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCJUeXBlZEFycmF5
LmZyb20gcmVxdWlyZXMgYW4gYXJyYXktbGlrZSBvYmplY3QgLSBub3QgbnVsbCBvciB1bmRlZmlu
ZWQiKTsKKyAgICBsZXQgYXJyYXlMaWtlID0gQHRvT2JqZWN0KGl0ZW1zLCAiVHlwZWRBcnJheS5m
cm9tIHJlcXVpcmVzIGFuIGFycmF5LWxpa2Ugb2JqZWN0IC0gbm90IG51bGwgb3IgdW5kZWZpbmVk
Iik7CiAKLSAgICBsZXQgaXRlcmF0b3JNZXRob2QgPSBpdGVtcy5AaXRlcmF0b3JTeW1ib2w7Cisg
ICAgbGV0IGl0ZXJhdG9yTWV0aG9kID0gYXJyYXlMaWtlLkBpdGVyYXRvclN5bWJvbDsKICAgICBp
ZiAoaXRlcmF0b3JNZXRob2QgIT0gbnVsbCkgewogICAgICAgICBpZiAodHlwZW9mIGl0ZXJhdG9y
TWV0aG9kICE9PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJUeXBl
ZEFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgcHJvcGVydHkgb2YgdGhlIGZpcnN0IGFyZ3Vt
ZW50LCBpdGVtc1tTeW1ib2wuaXRlcmF0b3JdLCB3aGVuIGV4aXN0cywgYmUgYSBmdW5jdGlvbiIp
OwpAQCAtOTksNyArOTgsNiBAQCBmdW5jdGlvbiBmcm9tKGl0ZW1zIC8qIFsgLCBtYXBmbiBbICwg
dGhpc0FyZyBdIF0gKi8pCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgbGV0
IGFycmF5TGlrZSA9IEBPYmplY3QoaXRlbXMpOwogICAgIGxldCBhcnJheUxpa2VMZW5ndGggPSBA
dG9MZW5ndGgoYXJyYXlMaWtlLmxlbmd0aCk7CiAKICAgICBsZXQgY29uc3RydWN0RnVuY3Rpb24g
PSB0aGlzLkBhbGxvY2F0ZVR5cGVkQXJyYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCmluZGV4IDUzNjc0YmY3YjZjMzEx
NGNiOGFhZjgxYThiZTdkZWJkNzU3MjA1MWUuLmUyYjVlMGJiN2MzOWNmNmJkMTQ5YmYyZmFhMWI2
NmQxZThiYzQ5ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9U
eXBlZEFycmF5UHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCkBAIC0zMzksNyArMzM5LDcgQEAgZnVuY3Rpb24gbWFw
KGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQogICAgIGlmIChjb25zdHJ1Y3RvciA9PT0gQHVuZGVm
aW5lZCkKICAgICAgICAgcmVzdWx0ID0gbmV3IChAdHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3Ry
dWN0b3IodGhpcykpKGxlbmd0aCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhciBzcGVjaWVzQ29u
c3RydWN0b3IgPSBAT2JqZWN0KGNvbnN0cnVjdG9yKS5Ac3BlY2llc1N5bWJvbDsKKyAgICAgICAg
dmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IEB0b09iamVjdChjb25zdHJ1Y3RvciwgIiIpLkBzcGVj
aWVzU3ltYm9sOwogICAgICAgICBpZiAoc3BlY2llc0NvbnN0cnVjdG9yID09PSBudWxsIHx8IHNw
ZWNpZXNDb25zdHJ1Y3RvciA9PT0gQHVuZGVmaW5lZCkKICAgICAgICAgICAgIHJlc3VsdCA9IG5l
dyAoQHR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yKHRoaXMpKShsZW5ndGgpOwogICAg
ICAgICBlbHNlIHsKQEAgLTM4MCw3ICszODAsNyBAQCBmdW5jdGlvbiBmaWx0ZXIoY2FsbGJhY2sg
LyosIHRoaXNBcmcgKi8pCiAgICAgaWYgKGNvbnN0cnVjdG9yID09PSBAdW5kZWZpbmVkKQogICAg
ICAgICByZXN1bHQgPSBuZXcgKEB0eXBlZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3Rvcih0aGlz
KSkocmVzdWx0TGVuZ3RoKTsKICAgICBlbHNlIHsKLSAgICAgICAgdmFyIHNwZWNpZXNDb25zdHJ1
Y3RvciA9IEBPYmplY3QoY29uc3RydWN0b3IpLkBzcGVjaWVzU3ltYm9sOworICAgICAgICB2YXIg
c3BlY2llc0NvbnN0cnVjdG9yID0gQHRvT2JqZWN0KGNvbnN0cnVjdG9yLCAiIikuQHNwZWNpZXNT
eW1ib2w7CiAgICAgICAgIGlmIChzcGVjaWVzQ29uc3RydWN0b3IgPT09IG51bGwgfHwgc3BlY2ll
c0NvbnN0cnVjdG9yID09PSBAdW5kZWZpbmVkKQogICAgICAgICAgICAgcmVzdWx0ID0gbmV3IChA
dHlwZWRBcnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IodGhpcykpKHJlc3VsdExlbmd0aCk7CiAg
ICAgICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUR1bXBlci5jcHAKaW5kZXggOWJjMTE3ZjE5OTE0YzUzOWUyZGNhZTMzNzJlMzFhNDlhZDZj
MmVhMS4uZThmMDZmM2Y2NGMzZTI5MDAxYjdhNzM4NWIxYjVhNjgxNGE3ZGNmYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCkBAIC04
NzEsNiArODcxLDEzIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUo
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6CiAgICAgICAgIHByaW50VW5h
cnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgInRvX3N0cmluZyIpOwogICAgICAgICBicmVhazsKICAg
ICB9CisgICAgY2FzZSBvcF90b19vYmplY3Q6IHsKKyAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwg
bG9jYXRpb24sIGl0LCAidG9fb2JqZWN0Iik7CisgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgb3V0LnByaW50ZigiJXMiLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVy
KGlkMCkpLmRhdGEoKSk7CisgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQ
cmludGVkUHJvZmlsaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2Ugb3BfbmVn
YXRlOiB7CiAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm5lZ2F0ZSIp
OwogICAgICAgICArK2l0OyAvLyBvcF9uZWdhdGUgaGFzIGFuIGV4dHJhIG9wZXJhbmQgZm9yIHRo
ZSBBcml0aFByb2ZpbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAppbmRleCA5YWUxYWM4NzJlZmQwOTI0
OTZjZDI5NDRmYTYzOTRkZDNkNjk5ODI2Li4xZjRlNWM3OWQ5MTc2YTIxODYzYmE3Y2U3ZDMwZTJj
YjM5NGFkYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKQEAgLTU3LDYgKzU3LDcgQEAgY2xhc3Mg
SWRlbnRpZmllcjsKICAgICBtYWNybyhwdXRCeVZhbERpcmVjdCkgXAogICAgIG1hY3JvKHRvTnVt
YmVyKSBcCiAgICAgbWFjcm8odG9TdHJpbmcpIFwKKyAgICBtYWNybyh0b09iamVjdCkgXAogICAg
IG1hY3JvKG5ld0FycmF5V2l0aFNpemUpIFwKICAgICBtYWNybyhkZWZpbmVFbnVtZXJhYmxlV3Jp
dGFibGVDb25maWd1cmFibGVEYXRhUHJvcGVydHkpIFwKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IGUxMTMxNGYyMjk2MmY4NWRm
N2YxY2ZlNjYzNWU0YmY5OTZhNWVkMDUuLjM2Y2Y1N2VlMzI1ZWZmMzI3Y2MxYWQ3MWUyNGVlYWM3
OWFlYmZlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24KQEAgLTQyLDYgKzQyLDcgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2RlYyIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9fbnVt
YmVyIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19zdHJp
bmciLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RvX29iamVj
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmVnYXRlIiwg
Imxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9hZGQiLCAibGVuZ3Ro
IiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX211bCIsICJsZW5ndGgiIDogNSB9
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApp
bmRleCA5NzQ5YWY3YTQzZGRiMDk1OWVlMmI4ZWQ5YTE5OWMyMjM4MWRjMGFhLi5mZjI1MjE4OTVh
MTliODdjMjVkNjNmMWQzM2M5Zjg5YmFiODc3ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMTkzLDYgKzE5Myw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBv
cGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF9pc19mdW5jdGlvbjoKICAgICBjYXNlIG9w
X3RvX251bWJlcjoKICAgICBjYXNlIG9wX3RvX3N0cmluZzoKKyAgICBjYXNlIG9wX3RvX29iamVj
dDoKICAgICBjYXNlIG9wX25lZ2F0ZToKICAgICBjYXNlIG9wX25lcV9udWxsOgogICAgIGNhc2Ug
b3BfZXFfbnVsbDoKQEAgLTQ0Niw2ICs0NDcsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQog
ICAgIGNhc2Ugb3BfaW46CiAgICAgY2FzZSBvcF90b19udW1iZXI6CiAgICAgY2FzZSBvcF90b19z
dHJpbmc6CisgICAgY2FzZSBvcF90b19vYmplY3Q6CiAgICAgY2FzZSBvcF9uZWdhdGU6CiAgICAg
Y2FzZSBvcF9hZGQ6CiAgICAgY2FzZSBvcF9tdWw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDljZjNiY2JiZGVmZjI2ODk5ZTljNTkwZTg1Yjdj
MmJmZDYxMDg4NTEuLjBkNTIwMTBiNjY5ZjRjNTU2OGJmN2MzYTcwYjcyYjkxZGNhNDJhZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC01Njcs
NiArNTY3LDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0
RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgY2FzZSBvcF9nZXRf
YnlfdmFsX3dpdGhfdGhpczoKICAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6CiAg
ICAgICAgIGNhc2Ugb3BfdG9fbnVtYmVyOgorICAgICAgICBjYXNlIG9wX3RvX29iamVjdDoKICAg
ICAgICAgY2FzZSBvcF9nZXRfYXJndW1lbnQ6IHsKICAgICAgICAgICAgIGxpbmtWYWx1ZVByb2Zp
bGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4
IDAyMTlkODkwOTRhZjAyY2UxYjI4NTZlYTRmNDNiN2U3YzdiMDE1NmIuLjMwMjFjYzEyZjM0MTdm
OTdiMWJjMGM5YmNjYmQ0ODlmMGUwMzkwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNjkyLDYg
KzE2OTIsMTYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRVbmFyeU9wUHJv
ZmlsZWQoT3Bjb2RlSUQgb3Bjb2RlSUQsIFJlZ2lzdGVySUQKICAgICByZXR1cm4gZHN0OwogfQog
CitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRvT2JqZWN0KFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBjb25zdCBJZGVudGlmaWVyJiBtZXNzYWdlKQoreworICAg
IFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfdG9f
b2JqZWN0KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoYWRkQ29uc3RhbnQobWVzc2FnZSkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChw
cm9maWxlKTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEluYyhSZWdpc3RlcklEKiBzcmNEc3QpCiB7CiAgICAgZW1pdE9wY29kZShvcF9p
bmMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCmluZGV4IGFmYTIzNTVmMGM4MWZmOTEzYzBlNzJjNWI4N2FhNTU3NDJj
NTc5YTMuLmZjNDliZTRiNGRlODcwNzYyMmUxZjY3ZTNiOTBiNjEyNzk3OTljNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKQEAgLTY2NCw2ICs2NjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0VG9OdW1iZXIoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsg
cmV0dXJuIGVtaXRVbmFyeU9wUHJvZmlsZWQob3BfdG9fbnVtYmVyLCBkc3QsIHNyYyk7IH0KICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdFRvU3RyaW5nKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogc3JjKSB7IHJldHVybiBlbWl0VW5hcnlPcChvcF90b19zdHJpbmcsIGRzdCwgc3JjKTsgfQor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0VG9PYmplY3QoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBzcmMsIGNvbnN0IElkZW50aWZpZXImIG1lc3NhZ2UpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0SW5jKFJlZ2lzdGVySUQqIHNyY0RzdCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRE
ZWMoUmVnaXN0ZXJJRCogc3JjRHN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDU0NGM2ZDIzNThjM2E0ZmEzZTNj
NGE5MmZlZmRlNmZmMGQ3Y2UxMTcuLjg0NzJlMzg4MWYzNDM3Zjk4MmJhYTMyMGUwMTZiMzBiZjll
OGY1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKQEAgLTEwMzEsNiArMTAzMSwxOSBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3RvU3RyaW5nKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZQogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3Qs
IGdlbmVyYXRvci5lbWl0VG9TdHJpbmcoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBz
cmMuZ2V0KCkpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0
X2ludHJpbnNpY190b09iamVjdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCit7CisgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0
Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5v
ZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisKKyAgICBBU1NFUlQobm9kZS0+bV9leHBy
LT5pc1N0cmluZygpKTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBtZXNzYWdlID0gc3RhdGljX2Nh
c3Q8U3RyaW5nTm9kZSo+KG5vZGUtPm1fZXhwciktPnZhbHVlKCk7CisgICAgQVNTRVJUKCFub2Rl
LT5tX25leHQpOworCisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVl
ZGVkKGRzdCwgZ2VuZXJhdG9yLmVtaXRUb09iamVjdChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIHNyYy5nZXQoKSwgbWVzc2FnZSkpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2lkV2l0aFByb2ZpbGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFyZ3VtZW50TGlzdE5vZGUq
IG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggY2I1OGJm
MDZkMWI4MDQ4NGQzNDAxMzJmNTY0ZWZhZDZkMGEyZGE5Ni4uYWQ1MmI0MDhkN2M2NWJiYzcyODg1
NjdkNzZmNjI3Yjk1MjlhNTc4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMjE4Miw2ICsyMTgy
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0
ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQo
bV9ncmFwaCwgbm9kZS0+c3RydWN0dXJlKCkpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2Ug
VG9PYmplY3Q6CiAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6IHsKICAgICAgICAgQWJz
dHJhY3RWYWx1ZSYgc291cmNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEFi
c3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uID0gZm9yTm9kZShub2RlKTsKQEAgLTIxOTIsNiArMjE5
Myw4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1
dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCisgICAgICAgIGlmIChub2RlLT5vcCgpID09IFRvT2JqZWN0KQorICAgICAgICAgICAg
Y2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3QpOwogICAgICAgICBi
cmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCmluZGV4IDM1Yjc2NDE5ZTE5Yjg1NzFhMjgyMGJkNjBlZTdhZTA4ZWRhZTY1YWYu
Ljk1Njc5ZWM2MDg0MzEwY2Y4ZGI5ZTNmNmY3NTc5N2UyZTc5NGJkYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zMzU1LDcgKzMz
NTUsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rp
b24oCiAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8PSAxKQogICAgICAg
ICAgICAgcmVzdWx0ID0gYWRkVG9HcmFwaChOZXdPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKS0+b2JqZWN0U3RydWN0dXJlRm9y
T2JqZWN0Q29uc3RydWN0b3IoKSkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0
ID0gYWRkVG9HcmFwaChDYWxsT2JqZWN0Q29uc3RydWN0b3IsIGdldCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGFk
ZFRvR3JhcGgoQ2FsbE9iamVjdENvbnN0cnVjdG9yLCBPcEluZm8obV9ncmFwaC5mcmVlemUoZnVu
Y3Rpb24tPmdsb2JhbE9iamVjdCgpKSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpOwogICAgICAgICBzZXQoVmly
dHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CkBAIC02MTI0LDYgKzYxMjQsMTQgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3RvX3N0
cmluZyk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX3RvX29iamVjdDogeworICAgICAg
ICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKyAgICAg
ICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVy
ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZF07CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKFRvT2JqZWN0LCBPcEluZm8oaWRl
bnRpZmllck51bWJlciksIE9wSW5mbyhwcmVkaWN0aW9uKSwgdmFsdWUpKTsKKyAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX3RvX29iamVjdCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9w
X2luOiB7CiAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKGN1
cnJlbnRJbnN0cnVjdGlvbltPUENPREVfTEVOR1RIKG9wX2luKSAtIDFdLnUuYXJyYXlQcm9maWxl
KTsKICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKaW5kZXggYTAwNDk0OTZhMTg1ZTc1NGEzZTQ3MGJlYWE3NGNiZTVlM2MyYzQxMC4uZDU2
NzA5YjcxOWJhZjNkY2U5ZDJmYzBlZTJlOWFiODg3MThkN2M0NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjI4LDYgKzIyOCw3IEBAIENh
cGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBvcF90eXBlb2Y6CiAgICAgY2FzZSBvcF90
b19udW1iZXI6CiAgICAgY2FzZSBvcF90b19zdHJpbmc6CisgICAgY2FzZSBvcF90b19vYmplY3Q6
CiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6CiAgICAg
Y2FzZSBvcF9pbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggMDA2NDFkZGY2MGM2MGJjZGNhOTU1NGM5OGM4ODBmMGJkNDgyNzVhYy4uMjc3ZDAxOGMxY2Yw
YWE3OGEzYWZhOGRhZDg1NjI2YzdiMGMwMzVlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTUyMiw3ICs1MjIsMTYgQEAgdm9pZCBjbG9iYmVyaXplKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdy
aXRlRnUKICAgICAgICAgd3JpdGUoSGVhcE9iamVjdENvdW50KTsKICAgICAgICAgcmV0dXJuOwog
CisgICAgY2FzZSBUb09iamVjdDoKKyAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAgIHdyaXRl
KEhlYXApOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIENhbGxPYmplY3RDb25zdHJ1Y3Rv
cjoKKyAgICAgICAgcmVhZChIZWFwT2JqZWN0Q291bnQpOworICAgICAgICB3cml0ZShIZWFwT2Jq
ZWN0Q291bnQpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIFRvVGhpczoKICAgICBjYXNl
IENyZWF0ZVRoaXM6CiAgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggYjNjNjIzZmQwMjMwNDUwZDY1ODdmNTdmN2E3MWU0
ODZjYWQ5NWNlZC4uMzY2NzA0MGIxMDAyZjMzOTBhNTczN2Q0YTQ3Y2RiNmMzNmM0NzY1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMzAxLDYgKzMwMSw3IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENyZWF0ZVNj
b3BlZEFyZ3VtZW50czoKICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKICAgICBjYXNl
IENhbGxPYmplY3RDb25zdHJ1Y3RvcjoKKyAgICBjYXNlIFRvT2JqZWN0OgogICAgIGNhc2UgVG9U
aGlzOgogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXgg
ZGExMGNmMDllN2NjMmZlZDA5MjMzMTQ2MGEzNjQ4MTE2Y2ZhNzA3Ny4uNjY5Y2NmNmFhODA3MjJm
MzBhNTc2Yzk1NmViNWNlYWYzYTQxYzk5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xMjkzLDE0ICsxMjkzLDEzIEBAIGNsYXNzIEZpeHVwUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAg
ICAgICBjYXNlIENhbGxPYmplY3RDb25zdHJ1Y3RvcjogewotICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSkgewotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8T2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvSWRlbnRpdHkoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgY2FzZSBUb09iamVjdDogeworICAgICAgICAgICAgZml4dXBUb09iamVjdChu
b2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKLSAgICAgICAgICAgIGZpeEVk
Z2U8VW50eXBlZFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBjYXNlIENhbGxPYmplY3RD
b25zdHJ1Y3RvcjogeworICAgICAgICAgICAgZml4dXBDYWxsT2JqZWN0Q29uc3RydWN0b3Iobm9k
ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yNTAxLDYgKzI1MDAsNzIg
QEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGZpeEVkZ2U8VW50
eXBlZFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJl
c3VsdEpTKTsKICAgICB9CisKKyAgICB2b2lkIGZpeHVwVG9PYmplY3QoTm9kZSogbm9kZSkKKyAg
ICB7CisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkp
IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8T2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gVG9PYmplY3QoTnVsbC9VbmRlZmluZWQpIGNhbiB0aHJv
dyBhbiBlcnJvci4gV2UgY2FuIGVtaXQgZmlsdGVycyB0byBjb252ZXJ0IFRvT2JqZWN0IHRvIENh
bGxPYmplY3RDb25zdHJ1Y3Rvci4KKworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKwor
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKSB7Cisg
ICAgICAgICAgICBpbnNlcnRDaGVjazxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7
CisgICAgICAgICAgICBmaXhFZGdlPEtub3duU3RyaW5nVXNlPihub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9OZXdTdHJpbmdPYmplY3QobV9ncmFwaC5yZWdpc3Rl
clN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpKSB7CisgICAgICAgICAgICBpbnNlcnRDaGVjazxTeW1i
b2xVc2U+KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICBub2RlLT5jb252ZXJ0
VG9DYWxsT2JqZWN0Q29uc3RydWN0b3IobV9ncmFwaC5mcmVlemUoZ2xvYmFsT2JqZWN0KSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7CisgICAgICAgICAgICBpbnNlcnRDaGVjazxO
dW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICBub2RlLT5jb252
ZXJ0VG9DYWxsT2JqZWN0Q29uc3RydWN0b3IobV9ncmFwaC5mcmVlemUoZ2xvYmFsT2JqZWN0KSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZUJvb2xlYW4oKSkgeworICAgICAgICAgICAgaW5zZXJ0Q2hl
Y2s8Qm9vbGVhblVzZT4obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIG5vZGUt
PmNvbnZlcnRUb0NhbGxPYmplY3RDb25zdHJ1Y3RvcihtX2dyYXBoLmZyZWV6ZShnbG9iYWxPYmpl
Y3QpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZpeEVkZ2U8
VW50eXBlZFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgIH0KKworICAgIHZvaWQgZml4dXBDYWxs
T2JqZWN0Q29uc3RydWN0b3IoTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkpIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8
T2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9J
ZGVudGl0eSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkgeworICAgICAgICAgICAg
YXV0byogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4obm9kZS0+Y2VsbE9w
ZXJhbmQoKS0+Y2VsbCgpKTsKKyAgICAgICAgICAgIGluc2VydENoZWNrPFN0cmluZ1VzZT4obm9k
ZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25TdHJpbmdVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb05ld1N0cmluZ09i
amVjdChtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+c3RyaW5nT2JqZWN0
U3RydWN0dXJlKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFdoaWxlIFRvT2JqZWN0KE51bGwvVW5kZWZpbmVkKSB0aHJvd3MgYW4gZXJyb3IsIENhbGxP
YmplY3RDb25zdHJ1Y3RvcihOdWxsL1VuZGVmaW5lZCkgZ2VuZXJhdGVzIGEgbmV3IGVtcHR5IG9i
amVjdC4KKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPdGhlcigp
KSB7CisgICAgICAgICAgICBpbnNlcnRDaGVjazxPdGhlclVzZT4obm9kZS0+Y2hpbGQxKCkubm9k
ZSgpKTsKKyAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb05ld09iamVjdChtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KG5vZGUtPmNlbGxPcGVyYW5kKCkt
PmNlbGwoKSktPm9iamVjdFN0cnVjdHVyZUZvck9iamVjdENvbnN0cnVjdG9yKCkpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgIH0KICAgICAKICAgICB2b2lkIGZpeHVwVG9TdHJpbmdPckNh
bGxTdHJpbmdDb25zdHJ1Y3RvcihOb2RlKiBub2RlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKaW5kZXggYTY5MjE0MjhkMTVhM2UwOWVjMjA0YThhNzJkYjk2MWY2NGYzYzVm
ZS4uZDZhNDk3NzM2OWRhMTA3NjcyNTM1ODg4MjI5MDQ4ZmFiNTFhY2RkOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTcxOCw2ICs3MTgsMzAgQEAgc3RydWN0IE5vZGUgewog
ICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhHZXRHbG9iYWxUaGlzKTsKICAgICAgICAgY2hp
bGRyZW4uc2V0Q2hpbGQxKEVkZ2UoKSk7CiAgICAgfQorCisgICAgdm9pZCBjb252ZXJ0VG9DYWxs
T2JqZWN0Q29uc3RydWN0b3IoRnJvemVuVmFsdWUqIGdsb2JhbE9iamVjdCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX29wID09IFRvT2JqZWN0KTsKKyAgICAgICAgc2V0T3BBbmREZWZhdWx0Rmxh
Z3MoQ2FsbE9iamVjdENvbnN0cnVjdG9yKTsKKyAgICAgICAgbV9vcEluZm8gPSBnbG9iYWxPYmpl
Y3Q7CisgICAgfQorCisgICAgdm9pZCBjb252ZXJ0VG9OZXdTdHJpbmdPYmplY3QoUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBBU1NFUlQobV9vcCA9PSBDYWxs
T2JqZWN0Q29uc3RydWN0b3IgfHwgbV9vcCA9PSBUb09iamVjdCk7CisgICAgICAgIHNldE9wQW5k
RGVmYXVsdEZsYWdzKE5ld1N0cmluZ09iamVjdCk7CisgICAgICAgIG1fb3BJbmZvID0gc3RydWN0
dXJlOworICAgICAgICBtX29wSW5mbzIgPSBPcEluZm9XcmFwcGVyKCk7CisgICAgfQorCisgICAg
dm9pZCBjb252ZXJ0VG9OZXdPYmplY3QoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCisg
ICAgeworICAgICAgICBBU1NFUlQobV9vcCA9PSBDYWxsT2JqZWN0Q29uc3RydWN0b3IpOworICAg
ICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhOZXdPYmplY3QpOworICAgICAgICBjaGlsZHJlbi5y
ZXNldCgpOworICAgICAgICBtX29wSW5mbyA9IHN0cnVjdHVyZTsKKyAgICAgICAgbV9vcEluZm8y
ID0gT3BJbmZvV3JhcHBlcigpOworICAgIH0KICAgICAKICAgICB2b2lkIGNvbnZlcnRUb0RpcmVj
dENhbGwoRnJvemVuVmFsdWUqKTsKIApAQCAtMTAwMyw2ICsxMDI3LDcgQEAgc3RydWN0IE5vZGUg
ewogICAgICAgICBjYXNlIFB1dER5bmFtaWNWYXI6CiAgICAgICAgIGNhc2UgUmVzb2x2ZVNjb3Bl
Rm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbDoKICAgICAgICAgY2FzZSBSZXNvbHZlU2NvcGU6Cisg
ICAgICAgIGNhc2UgVG9PYmplY3Q6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1NzgsNiArMTYwMyw4IEBA
IHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBTdHJpbmdSZXBsYWNlOgogICAgICAgICBjYXNl
IFN0cmluZ1JlcGxhY2VSZWdFeHA6CiAgICAgICAgIGNhc2UgVG9OdW1iZXI6CisgICAgICAgIGNh
c2UgVG9PYmplY3Q6CisgICAgICAgIGNhc2UgQ2FsbE9iamVjdENvbnN0cnVjdG9yOgogICAgICAg
ICBjYXNlIExvYWRLZXlGcm9tTWFwQnVja2V0OgogICAgICAgICBjYXNlIExvYWRWYWx1ZUZyb21N
YXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKQEAgLTE2NDMsNiArMTY3MCw3
IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRp
b246CiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgogICAgICAgICBjYXNlIENvbXBhcmVFcVB0cjoK
KyAgICAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6CiAgICAgICAgIGNhc2UgRGlyZWN0
Q2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RD
b25zdHJ1Y3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggMGQ2
M2U5Zjc5NDBhYmQ1MGI5YzgxNjhhMjc0ZjdhYTI1ODhjNzY5Mi4uOGFjNGY4YTI4N2UzZDZmNWMx
MDMxM2RmOTExYWEyYWNlMDk2NzU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaApAQCAtMzU2LDYgKzM1Niw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKICAgICBtYWNybyhUb1ByaW1pdGl2ZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIG1hY3JvKFRvU3RyaW5nLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oVG9OdW1iZXIsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKKyAgICBtYWNybyhUb09iamVjdCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKENhbGxPYmplY3RDb25zdHJ1Y3RvciwgTm9kZVJlc3VsdEpTKSBcCiAgICAg
bWFjcm8oQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXgsIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCmluZGV4IDNhMGQxOTVmMDZhNjUyNDc0OTFiMjJjZDVjMjE0ZTI4NjUwZWJlMTMu
LjAxZTRhODg4Yjg2YzIxNTA1OGJjNjBiODA3OGIyZjFhMDBkZTMwOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMjYzLDcgKzI2Myw3IEBAIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlzKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIGNvbnN0cnVjdG9yCiAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4
ZWMpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0Q29uc3RydWN0
b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVGFyZ2V0KQorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNh
bGxPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUYXJnZXQpCiB7CiAgICAgVk0qIHZtID0g
JmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7
CkBAIC0yNzYsNiArMjc2LDIzIEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmpl
Y3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0CiAgICAgcmV0dXJu
IHZhbHVlLnRvT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CiAKK0pTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Ub09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUYXJnZXQsIFVuaXF1ZWRTdHJp
bmdJbXBsKiBlcnJvck1lc3NhZ2UpCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFRhcmdldCk7CisgICAgQVNTRVJUKCF2YWx1ZS5pc09iamVjdCgpKTsK
KworICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKworICAgIHJldHVybiB2YWx1ZS50b09iamVjdChleGVjLCBnbG9iYWxPYmpl
Y3QpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0
QW5kKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMikKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNzAyNTk5YmUzZjRkYTQxMjQz
NjQxMmZiNDkyYTBjOTVhNzRiODAyNi4uNmU2MmFiMzc5YzRlNjFiNjFiYzlmMjc4OGUyNjZhMDk5
ODZlYmNmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAg
LTQxLDcgKzQxLDggQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ0Zyb21D
aGFyQ29kZShFeGVjU3RhdGUqLCBpbnQzMl90KSAgV1RGX0lOVEUKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlVW50eXBlZChFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSkgIFdURl9JTlRFUk5BTDsKIAogLy8gVGhlc2Ugcm91dGluZXMgcHJv
dmlkZSBjYWxsYmFja3Mgb3V0IHRvIEMrKyBpbXBsZW1lbnRhdGlvbnMgb2Ygb3BlcmF0aW9ucyB0
b28gY29tcGxleCB0byBKSVQuCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVGFyZ2V0KSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ2FsbE9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFRhcmdldCkgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblRvT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFRhcmdldCwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJO
QUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpcyhFeGVjU3RhdGUq
LCBKU09iamVjdCogY29uc3RydWN0b3IsIGludDMyX3QgaW5saW5lQ2FwYWNpdHkpIFdURl9JTlRF
Uk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzU3RyaWN0KEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKaW5kZXggNjIyMGRlMWQxODZjZmU5MzMyMjE4ZjJlY2MyNzcyMGNjZDU3YWY2MS4uNDRhY2Y4
Zjc5YmY2YjcxYjcyZmRiNGMyMTNiYTQ3ZDZjODQ4MGU5MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKQEAgLTcyMCw2ICs3MjAsOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6
IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTG9hZEtleUZyb21NYXBCdWNrZXQ6CiAgICAg
ICAgIGNhc2UgTG9hZFZhbHVlRnJvbU1hcEJ1Y2tldDoKICAgICAgICAgY2FzZSBUb051bWJlcjoK
KyAgICAgICAgY2FzZSBUb09iamVjdDoKKyAgICAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0
b3I6CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRl
cjoKICAgICAgICAgY2FzZSBHZXREeW5hbWljVmFyOgpAQCAtODU2LDEwICs4NTgsNiBAQCBjbGFz
cyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNh
c2UgQ2hlY2tTdWJDbGFzczoKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgQ2Fs
bE9iamVjdENvbnN0cnVjdG9yOiB7Ci0gICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNPYmpl
Y3QpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBTa2lwU2Nv
cGU6CiAgICAgICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OiB7CiAgICAgICAgICAgICBzZXRQcmVk
aWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCmluZGV4IGMwNGI3MDI0ZTIxOWM5ZDI4MmEwMWQ1YzM5OWMxN2QxZDVh
MDVmNjEuLjA5MzU0ZjI5MjQ4Y2U1NTM2MWQ0ZGYxZTQyOWNhYjYzZGM0Y2VkZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0zMTQsNiArMzE0
LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgVG9QcmltaXRpdmU6CiAgICAgY2FzZSBUb1N0
cmluZzoKICAgICBjYXNlIFRvTnVtYmVyOgorICAgIGNhc2UgVG9PYmplY3Q6CiAgICAgY2FzZSBO
dW1iZXJUb1N0cmluZ1dpdGhSYWRpeDoKICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFZhbGlk
UmFkaXhDb25zdGFudDoKICAgICBjYXNlIFNldEZ1bmN0aW9uTmFtZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMTQ2ZTczMjI4YjE0
YTk0MjA1M2VhNjEyMzAyZmI0ZmFiOWE1MjY1MS4uZjY3MTNmOTgwNmMwMDM1YWQwZDMwNzNiN2Vk
ZWNjNzlkZDIzNjQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKQEAgLTQwMTcsOSArNDAxNyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVJc1R5cGVkQXJyYXlWaWV3KE5vZGUqIG5vZGUpCiAgICAgYmxlc3NlZEJvb2xlYW5S
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNhbGxPYmplY3RDb25zdHJ1Y3RvcihOb2RlKiBub2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVRvT2JqZWN0T3JDYWxsT2JqZWN0Q29uc3RydWN0b3IoTm9kZSogbm9kZSkKIHsKLSAg
ICBSRUxFQVNFX0FTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7
CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgdmFsdWUp
OwpAQCAtNDAzNSw3ICs0MDM0LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxs
T2JqZWN0Q29uc3RydWN0b3IoTm9kZSogbm9kZSkKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaElmTm90T2JqZWN0KHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpKTsKICAgICBtX2ppdC5t
b3ZlKHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIHJlc3VsdEdQUik7CiAKLSAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25PYmplY3RD
b25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSwgdmFsdWVSZWdzKSk7CisgICAgaWYgKG5vZGUtPm9wKCkgPT0gVG9PYmplY3Qp
CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRo
aXMsIG9wZXJhdGlvblRvT2JqZWN0LCByZXN1bHRHUFIsIG1faml0LmdyYXBoKCkuZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksIHZhbHVlUmVncywgaWRlbnRpZmllclVJRChu
b2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25DYWxsT2Jq
ZWN0Q29uc3RydWN0b3IsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFu
ZCgpKSwgdmFsdWVSZWdzKSk7CisKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRl
eCBiMGUwM2IyN2E4MDAyZDE3MWZjYTNiZjA4MDcxYzE1Y2Y4YTk4YzQxLi40ZGRkYjE0YWExMzcx
Njg0ZDI5NDE3ZDM2YjIwNWQ5Zjc1ZDJlMDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xMTg0LDYgKzExODQsMTIgQEAgY2xhc3MgU3Bl
Y3VsYXRpdmVKSVQgewogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihDX0pJVE9wZXJhdGlvbl9FR0Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBUcnVzdGVkSW1t
UHRyIGdsb2JhbE9iamVjdCwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoZ2xvYmFsT2JqZWN0LCBhcmcyKTsKKyAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0KKwogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUdDIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgR1BSUmVn
IGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwg
YXJnMik7CkBAIC0xNjc3LDE3ICsxNjgzLDMzIEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KIAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25f
RUdKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgR1BSUmVnIGFyZzEpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJ
VE9wZXJhdGlvbl9FR0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBUcnVzdGVkSW1tUHRyIGds
b2JhbE9iamVjdCwgR1BSUmVnIGFyZzEpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgo
KSwgZ2xvYmFsT2JqZWN0KSwgYXJnMSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShnbG9iYWxPYmplY3QsIGFyZzEpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FR0ogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBUcnVzdGVkSW1tUHRyIGdsb2JhbE9iamVjdCwgSlNWYWx1ZVJlZ3MgYXJnMSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LCBnbG9i
YWxPYmplY3QsIGFyZzEuZ3ByKCkpOworICAgIH0KKworICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUdKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgR1BSUmVnIGFyZzEpCisgICAgeworICAgICAg
ICByZXR1cm4gY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdCwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgYXJnMSk7CisgICAgfQor
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FR0og
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlUmVncyBhcmcxKQogICAgIHsKICAgICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uLCByZXN1bHQsIGdsb2JhbE9iamVjdCwgYXJnMS5ncHIoKSk7CiAgICAgfQogCisgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FR0pJIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZVJlZ3MgYXJnMSwgVW5pcXVlZFN0cmluZ0ltcGwqIGFyZzIpCisgICAgeworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgYXJnMS5ncHIoKSwgVHJ1c3RlZEltbVB0cihh
cmcyKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKKyAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklU
T3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CkBAIC0y
MzMzLDEyICsyMzU1LDI0IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAorICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUdKIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgVHJ1c3RlZEltbVB0ciBnbG9iYWxPYmplY3QsIEpTVmFsdWVSZWdz
IGFyZzEpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
Z2xvYmFsT2JqZWN0LCBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CisK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VHSiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWVSZWdzIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFs
T2JqZWN0KSwgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCkpOwogICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCisgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FR0pJIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZVJlZ3MgYXJnMSwgVW5pcXVlZFN0cmluZ0ltcGwqIGFyZzIpCisgICAgeworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFn
R1BSKCksIFRydXN0ZWRJbW1QdHIoYXJnMikpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEpTVmFsdWVSZWdzIGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMS5wYXlsb2FkR1BSKCksIGFy
ZzEudGFnR1BSKCkpOwpAQCAtMjk3MCw3ICszMDA0LDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQg
ewogICAgIHZvaWQgY29tcGlsZUxhenlKU0NvbnN0YW50KE5vZGUqKTsKICAgICB2b2lkIGNvbXBp
bGVNYXRlcmlhbGl6ZU5ld09iamVjdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUmVjb3JkUmVn
RXhwQ2FjaGVkUmVzdWx0KE5vZGUqKTsKLSAgICB2b2lkIGNvbXBpbGVDYWxsT2JqZWN0Q29uc3Ry
dWN0b3IoTm9kZSopOworICAgIHZvaWQgY29tcGlsZVRvT2JqZWN0T3JDYWxsT2JqZWN0Q29uc3Ry
dWN0b3IoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVJlc29sdmVTY29wZShOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbChOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlR2V0RHluYW1pY1ZhcihOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAyNDBh
NTcyMTFiMmUzNzM4MDhiNDA5NjYwMTRjNmFhYjNhODhjMTM5Li4yOTBkYjZjMWMyZWViYjk4YWFi
MzBjYWJmNWRjNDc0MmI3OGY2NGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQwMjMsOCArNDAyMyw5IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCisgICAgY2FzZSBUb09iamVjdDoKICAgICBjYXNlIENhbGxPYmplY3RDb25zdHJ1Y3Rv
cjogewotICAgICAgICBjb21waWxlQ2FsbE9iamVjdENvbnN0cnVjdG9yKG5vZGUpOworICAgICAg
ICBjb21waWxlVG9PYmplY3RPckNhbGxPYmplY3RDb25zdHJ1Y3Rvcihub2RlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGU0ZmE4NmEyOTAwNzFkNjQ5MWM2NWFjYzI3
Y2E5OGE2MWU1OWRiN2UuLmFjZTcxMTkzOTEyZTE3YTRiYTIzNzRkZDEyMWRiN2Y2MjU5Yjc4M2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcApAQCAtNDIzNyw4ICs0MjM3LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFRvT2JqZWN0Ogog
ICAgIGNhc2UgQ2FsbE9iamVjdENvbnN0cnVjdG9yOiB7Ci0gICAgICAgIGNvbXBpbGVDYWxsT2Jq
ZWN0Q29uc3RydWN0b3Iobm9kZSk7CisgICAgICAgIGNvbXBpbGVUb09iamVjdE9yQ2FsbE9iamVj
dENvbnN0cnVjdG9yKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3ZTYwOWNjZDJkM2Vi
ZmIwM2EyNWFkMDFmZDliMGI2YjhiMTI2MDBjLi5jNGQ2NjQxOTAyYTIzMWY4ZTJiMmQ0OTAxNWNm
ZWFmNDE2NGRlYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCkBAIC0xNzksNiArMTc5LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
czoKICAgICBjYXNlIFRvTnVtYmVyOgogICAgIGNhc2UgVG9TdHJpbmc6CisgICAgY2FzZSBUb09i
amVjdDoKICAgICBjYXNlIENhbGxPYmplY3RDb25zdHJ1Y3RvcjoKICAgICBjYXNlIENhbGxTdHJp
bmdDb25zdHJ1Y3RvcjoKICAgICBjYXNlIE1ha2VSb3BlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGQ3ZWM4MjAxOTJjZmU4MTlmZmU1YmU4
YmVjZjA2NWY2Mjg4ZGMyYjQuLjdhZmFmMmJkOTJhMzJlMWRhOTEwZWVmZjZhZDUzNzQzNDczNjgz
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
QEAgLTU1NSw4ICs1NTUsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIERG
Rzo6Q2hlY2s6CiAgICAgICAgICAgICBjb21waWxlTm9PcCgpOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgVG9PYmplY3Q6CiAgICAgICAgIGNhc2UgQ2FsbE9iamVjdENvbnN0cnVj
dG9yOgotICAgICAgICAgICAgY29tcGlsZUNhbGxPYmplY3RDb25zdHJ1Y3RvcigpOworICAgICAg
ICAgICAgY29tcGlsZVRvT2JqZWN0T3JDYWxsT2JqZWN0Q29uc3RydWN0b3IoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRvVGhpczoKICAgICAgICAgICAgIGNvbXBpbGVUb1Ro
aXMoKTsKQEAgLTE2NTUsOSArMTY1Niw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
IERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG1fbm9kZSwgc3BlY3VsYXRlKTsKICAg
ICB9CiAKLSAgICB2b2lkIGNvbXBpbGVDYWxsT2JqZWN0Q29uc3RydWN0b3IoKQorICAgIHZvaWQg
Y29tcGlsZVRvT2JqZWN0T3JDYWxsT2JqZWN0Q29uc3RydWN0b3IoKQogICAgIHsKLSAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMSgpKTsKIAogICAgICAgICBMQmFzaWNCbG9jayBpc0NlbGxDYXNlID0g
bV9vdXQubmV3QmxvY2soKTsKQEAgLTE2NzEsNyArMTY3MSwxMyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICBtX291dC5icmFuY2goaXNPYmplY3QodmFsdWUpLCB1c3VhbGx5KGNvbnRp
bnVhdGlvbiksIHJhcmVseShzbG93Q2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNs
b3dDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk9i
amVjdENvbnN0cnVjdG9yKSwgbV9jYWxsRnJhbWUsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCks
IHZhbHVlKSk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdDsKKyAgICAgICAg
aWYgKG1fbm9kZS0+b3AoKSA9PSBUb09iamVjdCkgeworICAgICAgICAgICAgYXV0byogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
OworICAgICAgICAgICAgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub09iamVjdCksIG1fY2FsbEZyYW1lLCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCB2YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIobV9ncmFwaC5pZGVudGlm
aWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXSkpKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxPYmplY3RDb25zdHJ1Y3RvciksIG1fY2FsbEZyYW1lLCBm
cm96ZW5Qb2ludGVyKG1fbm9kZS0+Y2VsbE9wZXJhbmQoKSksIHZhbHVlKSk7CiAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51
YXRpb24sIGxhc3ROZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBiOGYxYWI2
YmViZmFjYTI4NzE4ZjFmODUyYzg2MGQzN2JlYjYwM2MzLi45N2E3YzliN2YxMDZlNWFiMDQ4YjI2
MWMzYzgwMDYzZTk0NmM2MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0zOTcs
NiArMzk3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBE
RUZJTkVfT1Aob3BfdGhyb3cpCiAgICAgICAgIERFRklORV9PUChvcF90b19udW1iZXIpCiAgICAg
ICAgIERFRklORV9PUChvcF90b19zdHJpbmcpCisgICAgICAgIERFRklORV9PUChvcF90b19vYmpl
Y3QpCiAgICAgICAgIERFRklORV9PUChvcF90b19wcmltaXRpdmUpCiAKICAgICAgICAgREVGSU5F
X09QKG9wX3Jlc29sdmVfc2NvcGUpCkBAIC01MzIsNiArNTMzLDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3N1YikK
ICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3RvX251bWJlcikKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX3RvX3N0cmluZykKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X3RvX29iamVjdCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3RvX3ByaW1pdGl2ZSkK
ICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2hhc19pbmRleGVkX3Byb3BlcnR5KQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCmluZGV4IGFlMzNiMGYxYjM2ZDY3OTdhMTk3YzAyYjc4YWZiYzg1Y2Q0
ZTEyMTYuLjZhYTQ4NzRiMjFkYmVkNGJmZTQ2MDc4ZmM0OGU2M2UwMTAwMjdiN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaApAQCAtNTc1LDYgKzU3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGVtaXRfb3BfdGhyb3coSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX3RvX251bWJlcihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9fc3Ry
aW5nKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90b19vYmplY3QoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfdW5leHBlY3RlZF9sb2FkKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF91bnNpZ25lZChJbnN0cnVjdGlvbiopOwpAQCAtNjQxLDYgKzY0
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3N1YihJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9p
ZCBlbWl0U2xvd19vcF90b19udW1iZXIoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdG9fc3RyaW5nKEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lk
IGVtaXRTbG93X29wX3RvX29iamVjdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90b19wcmltaXRpdmUoSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfdW5zaWduZWQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdXJzaGlmdChJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDgxNjlhNmNhZGUxMzRhOTYxMzJjZTA1Y2Ni
M2ZjNjBkNGNjZThlYzEuLmYzZGNiNTE4M2QxNWY5ZWIxYTBkZWFjMTI1NWRiMzJkYTlmMmMyODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtNTE5LDYgKzUx
OSwyMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19zdHJpbmcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF90b19vYmplY3QoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0VlJlZyA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IHNyY1ZSZWcgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjVlJlZywg
cmVnVDApOworCisgICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCkpOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoQmVsb3csIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlw
ZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlwZSkpKTsKKworICAgIGVt
aXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKKyAgICBpZiAoc3JjVlJlZyAhPSBkc3RWUmVnKQorICAg
ICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdFZSZWcpOworfQorCiB2b2lkIEpJVDo6ZW1p
dF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIHJlc3Rv
cmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS0+dG9wRW50
cnlGcmFtZSk7CkBAIC05MDAsNiArOTE0LDE0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF90b19z
dHJpbmcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAg
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX29i
amVjdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
c2xvd19wYXRoX3RvX29iamVjdCk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwogI2Vu
ZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKIHZvaWQgSklUOjplbWl0X29wX2xvb3BfaGludChJbnN0
cnVjdGlvbiopCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKaW5kZXggZWU4MGYwMzcxNGJkYTJhZDA0OGI3N2U3MjE5ZmRlZDkyYjA5NzIyNy4uMTgwYWE0
YTM1ZTAwZWZiOGRlNDFjMGQxMWUwYzExOWNjMThlZjYzMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtNzIzLDYgKzcyMywyOSBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfdG9fc3RyaW5nKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQg
SklUOjplbWl0X29wX3RvX29iamVjdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
eworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGlu
dCBzcmMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworCisgICAgZW1pdExvYWQo
c3JjLCByZWdUMSwgcmVnVDApOworCisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWws
IHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICBhZGRTbG93Q2Fz
ZShicmFuY2g4KEJlbG93LCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKSk7CisKKyAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKCk7CisgICAgaWYgKHNyYyAhPSBkc3QpCisgICAgICAgIGVtaXRTdG9yZShkc3QsIHJl
Z1QxLCByZWdUMCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF90b19vYmplY3QoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90
b19vYmplY3QpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIHZvaWQgSklUOjplbWl0
X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgcmVzdG9y
ZUNhbGxlZVNhdmVzRnJvbUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSgpLT50b3BFbnRy
eUZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmlu
ZGV4IDA2NTUwMDRkZDM2ZTdjMDY2ZTViZmEwNWRiYzMyMDIwMTVhMmM1ZGMuLjczNTk4NTY1OTA0
Yzk4OWE0MjNhYjdkZjJiNDY1YjZjNzBkOGI0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjEzNSwxNiArMjEzNSw2IEBAIENhbGxGcmFtZSog
SklUX09QRVJBVElPTiBvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZShFeGVjU3RhdGUqIGV4ZWMs
IENhbGxGcmFtZSoKICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwogfQogCi1FbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgSlNPYmplY3QqIG9iaiA9IEpT
VmFsdWU6OmRlY29kZSh2YWx1ZSkudG9PYmplY3QoZXhlYyk7Ci0gICAgaWYgKCFvYmopCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKG9iaik7Ci19Ci0KIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNo
Q2hhcldpdGhVbmtub3duS2V5VHlwZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRLZXksIHNpemVfdCB0YWJsZUluZGV4KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IGIwNGJlMTUy
ZWQ0M2M0MWY3YjIzMzQ4MDEyN2ZhN2U0N2YxZGM5YzUuLjI5NDQxNDc2MDdhNzE4ZjkwN2M2MjZj
OWMxNmZkOTBjYzgxMjMxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCkBAIC0xODgsNiArMTg4LDcgQEAgdHlwZWRlZiBKU0NlbGwqIChKSVRfT1BFUkFUSU9O
ICpDX0pJVE9wZXJhdGlvbl9FQ1pDKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQzMl8KIHR5cGVk
ZWYgSlNDZWxsKiAoSklUX09QRVJBVElPTiAqQ19KSVRPcGVyYXRpb25fRUNDKShFeGVjU3RhdGUq
LCBKU0NlbGwqLCBKU0NlbGwqKTsKIHR5cGVkZWYgSlNDZWxsKiAoSklUX09QRVJBVElPTiAqQ19K
SVRPcGVyYXRpb25fRUdDKShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCopOwog
dHlwZWRlZiBKU0NlbGwqIChKSVRfT1BFUkFUSU9OICpDX0pJVE9wZXJhdGlvbl9FR0opKEV4ZWNT
dGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpOwordHlwZWRlZiBKU0NlbGwq
IChKSVRfT1BFUkFUSU9OICpDX0pJVE9wZXJhdGlvbl9FR0pJKShFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiBK
U0NlbGwqIChKSVRfT1BFUkFUSU9OICpDX0pJVE9wZXJhdGlvbl9FSWNmKShFeGVjU3RhdGUqLCBJ
bmxpbmVDYWxsRnJhbWUqKTsKIHR5cGVkZWYgSlNDZWxsKiAoSklUX09QRVJBVElPTiAqQ19KSVRP
cGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgSlNDZWxs
KiAoSklUX09QRVJBVElPTiAqQ19KSVRPcGVyYXRpb25fRUpzYykoRXhlY1N0YXRlKiwgSlNTY29w
ZSopOwpAQCAtNDM4LDcgKzQzOSw2IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25T
aXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRzKEV4ZWNTdGF0ZSosIEVuY29kZWRKCiBpbnQzMl90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncyhFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBhcmd1bWVudHMsIGludDMyX3QgbnVtVXNlZFN0YWNrU2xvdHMsIGludDMy
X3QgZmlyc3RWYXJBcmdPZmZzZXQpIFdURl9JTlRFUk5BTDsKIENhbGxGcmFtZSogSklUX09QRVJB
VElPTiBvcGVyYXRpb25TZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZShFeGVjU3RhdGUqLCBDYWxs
RnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgaW50MzJfdCBsZW5ndGgpIFdURl9JTlRF
Uk5BTDsKIENhbGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFt
ZShFeGVjU3RhdGUqLCBDYWxsRnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSBhcmd1bWVudHMsIGludDMy
X3QgZmlyc3RWYXJBcmdPZmZzZXQsIGludDMyX3QgbGVuZ3RoKSBXVEZfSU5URVJOQUw7Ci1FbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvT2JqZWN0KEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiAKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uU3dpdGNoQ2hhcldpdGhVbmtub3duS2V5VHlwZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblN3aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZShFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0YWJsZUluZGV4KSBXVEZfSU5URVJOQUw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCmluZGV4IDBlNzEyYjY3OWQ2YWIxMjAzYmI2YzZjYzU2MmFiMDJhNjc5MTZlYzkuLjBj
YzIxZGFkOWRhN2E2ZGJkZmYzNTZlYjgwZWQ0NWM5ZTU5OWE3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CkBAIC05NTcsNiArOTU3LDIzIEBAIF9sbGludF9vcF90b19zdHJpbmc6CiAgICAgZGlzcGF0Y2go
Y29uc3RleHByIG9wX3RvX3N0cmluZ19sZW5ndGgpCiAKIAorX2xsaW50X29wX3RvX29iamVjdDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQ
Q10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDIsIHQzKQorICAgIGJpbmVx
IHQyLCBDZWxsVGFnLCAub3BUb09iamVjdFNsb3cKKyAgICBiYmIgSlNDZWxsOjptX3R5cGVbdDNd
LCBPYmplY3RUeXBlLCAub3BUb09iamVjdFNsb3cKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAg
IHZhbHVlUHJvZmlsZSh0MiwgdDMsIDE2LCB0MSkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3Bf
dG9fb2JqZWN0X2xlbmd0aCkKKworLm9wVG9PYmplY3RTbG93OgorICAgIGNhbGxPcGNvZGVTbG93
UGF0aChfc2xvd19wYXRoX3RvX29iamVjdCkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfdG9f
b2JqZWN0X2xlbmd0aCkKKworCiBfbGxpbnRfb3BfbmVnYXRlOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKICAgICBsb2FkaSA4W1BDXSwgdDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggOTc3MTQwOTNlODM2ZDc5YmM2
OGJlYzkyMmQ4MTdhMGVmOGFlN2ExNC4uNTMzNmFjYTdmNzQxOWY3ODVmODAyMjc5NzQzMzY2ZWIx
NDdlZmU2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTg0Nyw2ICs4NDcsMjIgQEAgX2xsaW50X29wX3RvX3N0
cmluZzoKICAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfdG9fc3RyaW5nX2xlbmd0aCkKIAogCitf
bGxpbnRfb3BfdG9fb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMiwgdDApCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyKQorICAgIGJ0cW56IHQyLCB0YWdNYXNrLCAu
b3BUb09iamVjdFNsb3cKKyAgICBiYmIgSlNDZWxsOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAu
b3BUb09iamVjdFNsb3cKKyAgICBzdG9yZXEgdDIsIFtjZnIsIHQxLCA4XQorICAgIHZhbHVlUHJv
ZmlsZSh0MiwgNCwgdDApCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3RvX29iamVjdF9sZW5n
dGgpCisKKy5vcFRvT2JqZWN0U2xvdzoKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0
aF90b19vYmplY3QpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3RvX29iamVjdF9sZW5ndGgp
CisKKwogX2xsaW50X29wX25lZ2F0ZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDIsIHQwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggNGQ1NDQxZGU5ZGQ2MjU3NzliNzM5MTFhM2Zh
M2FlY2IxZTE5ZmI0Ni4uZTYwZjZlYmU3OTg5YTUzMzU5MjYxOTVhZjdmMDI1ODJlOWQwYTQ5YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCkBAIC00NDgsNiArNDQ4LDE5IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b19udW1i
ZXIpCiAgICAgUkVUVVJOX1BST0ZJTEVEKG9wX3RvX251bWJlciwgcmVzdWx0KTsKIH0KIAorU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX29iamVjdCkKK3sKKyAgICBCRUdJTigpOworICAgIEpT
VmFsdWUgYXJndW1lbnQgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAoYXJndW1lbnQuaXNV
bmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGV4
ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgICAgIGlm
ICghaWRlbnQuaXNFbXB0eSgpKQorICAgICAgICAgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIGlkZW50LmltcGwoKSkpOworICAgIH0KKyAgICBKU09iamVjdCogcmVzdWx0ID0gYXJndW1l
bnQudG9PYmplY3QoZXhlYyk7CisgICAgUkVUVVJOX1BST0ZJTEVEKG9wX3RvX29iamVjdCwgcmVz
dWx0KTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FkZCkKIHsKICAgICBCRUdJTigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApp
bmRleCBmNGQ2ZWJlNzM3NWY3YWU3YWIzY2RlMGEyMGJlMzAyN2Q3ZWQ4MGIwLi5kOGFhYWEwYjlh
ZDc4Y2JlNjM1ODliZTljZjUyNTFiYzAzMWU1ZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjM5LDYgKzIzOSw3IEBAIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaW5jKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfZGVjKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9fbnVtYmVy
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9fc3RyaW5nKTsKK1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfdG9fb2JqZWN0KTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfbmVnYXRlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYWRk
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbXVsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhLmpzIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWEuanMK
aW5kZXggZDE0MTdkNzhiOTdjN2RhNTcxNjAwMDM0YjNiNTUzYjg5OTI5ODE5Ni4uNmVkNGYwMmVh
MDI1YmNkMmNkYzEwM2M0ZmZjOGJiZWFmNjc1ZDAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWEuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWEuanMKQEAgLTM3
LDcgKzM3LDcgQEAgZnVuY3Rpb24gZ2V0VXNlck1lZGlhKG9wdGlvbnMsIHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjaykKICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDMpCiAgICAgICAg
IEB0aHJvd1R5cGVFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiKTsKIAotICAgIGlmIChvcHRp
b25zICE9PSBAT2JqZWN0KG9wdGlvbnMpKQorICAgIGlmICghQGlzT2JqZWN0KG9wdGlvbnMpKQog
ICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFyZ3VtZW50IDEgKG9wdGlvbnMpIHRvIE5hdmlnYXRv
ci5nZXRVc2VyTWVkaWEgbXVzdCBiZSBhbiBvYmplY3QiKTsKIAogICAgIGlmICh0eXBlb2Ygc3Vj
Y2Vzc0NhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBmMTVhMmVjMjExZjI0NmVmMDkwMjVkOTY5N2Iy
NWVmM2QwZjFhOGNiLi4wNmZmMDhhNjA0MzNkNzkyMmQ5ZWI3ZTgzMzRkZjM2MWY1NDRhYjM4IDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDE3LTEwLTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIFtKU0NdIEludHJvZHVjZSBAdG9PYmplY3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODcyNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2FycmF5LWNvcHl3
aXRoaW4uanM6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisKIDIwMTctMTAtMjMgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gVXNlIGZhc3RK
b2luIGluIEFycmF5I3RvU3RyaW5nCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcnJheS1j
b3B5d2l0aGluLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJyYXktY29weXdpdGhpbi5qcwppbmRleCA0
MWNkZjdmMmU2ZDVjZjc1YjYxNTNlN2YwNGY1NzVhZTIwNWJkOTcwLi45ODNmZWQ3ZWNjN2VjOTBl
OTM4NTY0MDZhYmZjZTE0MTEwMWIxNDUxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9hcnJh
eS1jb3B5d2l0aGluLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5LWNvcHl3aXRoaW4uanMK
QEAgLTIzOCwxMSArMjM4LDExIEBAIGZ1bmN0aW9uIGFycmF5VG9PYmplY3QoYXJyYXkpIHsKIAog
c2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgewogICAgIEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGlu
LmNhbGwodW5kZWZpbmVkKTsKLX0sICdUeXBlRXJyb3I6IEFycmF5LmNvcHlXaXRoaW4gcmVxdWly
ZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkJyk7Cit9LCAnVHlwZUVycm9y
OiBBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUg
bnVsbCBvciB1bmRlZmluZWQnKTsKIAogc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgewogICAgIEFy
cmF5LnByb3RvdHlwZS5jb3B5V2l0aGluLmNhbGwobnVsbCk7Ci19LCAnVHlwZUVycm9yOiBBcnJh
eS5jb3B5V2l0aGluIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5l
ZCcpOworfSwgJ1R5cGVFcnJvcjogQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4gcmVxdWlyZXMg
dGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkJyk7CiAKIAogZnVuY3Rpb24gdmFs
dWVPZihjb2RlKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324690</attachid>
            <date>2017-10-24 11:40:22 -0700</date>
            <delta_ts>2017-10-27 11:29:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178726-20171025034021.patch</filename>
            <type>text/plain</type>
            <size>84078</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzODk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjI0YWQ5NDE2YTdlMmM2ZTQyMzUxMzg1NGVkMzY1NDhlZDRjZTAzLi41ZmNjOTAwZWZlYTY1ZDUx
ZjgyOGM2M2JiN2I1MzBhYjQ5ZDUzZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDYgQEAKKzIwMTctMTAtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gSW50cm9kdWNlIEB0b09iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NzI2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2Vz
IEB0b09iamVjdCBpbnRyaW5zaWMuIEFuZCB3ZSBpbnRyb2R1Y2Ugb3BfdG9fb2JqZWN0IGJ5dGVj
b2RlIGFuZCBERkcgVG9PYmplY3Qgbm9kZS4KKyAgICAgICAgUHJldmlvdXNseSB3ZSBlbXVsYXRl
ZCBAdG9PYmplY3QgYmVoYXZpb3IgaW4gYnVpbHRpbiBKUy4gQnV0IGl0IGNvbnN1bWVzIG11Y2gg
Ynl0ZWNvZGUgc2l6ZSB3aGlsZSBAdG9PYmplY3QKKyAgICAgICAgaXMgZnJlcXVlbnRseSBzZWVu
IGFuZCBkZWZpbmVkIGNsZWFybHkgaW4gdGhlIHNwZWMuIEZ1cnRoZXJtb3JlLCB0aGUgZW11bGF0
ZWQgQHRvT2JqZWN0IGFsd2F5cyBjYWxscworICAgICAgICBPYmplY3RDb25zdHJ1Y3RvciBpbiBM
TEludCBhbmQgQmFzZWxpbmUuCisKKyAgICAgICAgV2UgYWRkIGEgbmV3IGludHJpbnNpYyBgQHRv
T2JqZWN0KHRhcmdldCwgImVycm9yIG1lc3NhZ2UiKWAuIEl0IHRha2VzIGFuIGVycm9yIG1lc3Nh
Z2Ugc3RyaW5nIGNvbnN0YW50IHRvCisgICAgICAgIG9mZmVyIHVuZGVyc3RhbmRhYmxlIG1lc3Nh
Z2VzIGluIGJ1aWx0aW4gSlMuIFdlIGNhbiBjaGFuZ2UgdGhlIGZyZXF1ZW50bHkgc2VlbiAiZW11
bGF0ZWQgVG9PYmplY3QiIG9wZXJhdGlvbgorCisgICAgICAgICAgICBpZiAodGhpcyA9PT0gQHVu
ZGVmaW5lZCB8fCB0aGlzID09PSBudWxsKQorICAgICAgICAgICAgICAgIEB0aHJvd1R5cGVFcnJv
cigiZXJyb3IgbWVzc2FnZSIpOworICAgICAgICAgICAgdmFyIG9iamVjdCA9IEBPYmplY3QodGhp
cyk7CisKKyAgICAgICAgd2l0aAorCisgICAgICAgICAgICB2YXIgb2JqZWN0ID0gQHRvT2JqZWN0
KHRoaXMsICJlcnJvciBtZXNzYWdlIik7CisKKyAgICAgICAgQW5kIHdlIGhhbmRsZSBvcF90b19v
YmplY3QgaW4gREZHIGFzIFRvT2JqZWN0IG5vZGUuIFdoaWxlIENhbGxPYmplY3RDb25zdHJ1Y3Rv
ciBkb2VzIG5vdCB0aHJvdyBhbiBlcnJvciBmb3IgbnVsbC91bmRlZmluZWQsCisgICAgICAgIFRv
T2JqZWN0IG5lZWRzIHRvIHRocm93IGFuIGVycm9yIGZvciBudWxsL3VuZGVmaW5lZC4gU28gaXQg
aXMgbWFya2VkIGFzIE11c3RHZW5lcmF0ZSBhbmQgaXQgY2xvYmJlcnMgdGhlIHdvcmxkLgorICAg
ICAgICBJbiBmaXh1cCBwaGFzZSwgd2UgYXR0ZW1wdCB0byBjb252ZXJ0IFRvT2JqZWN0IHRvIENh
bGxPYmplY3RDb25zdHJ1Y3RvciB3aXRoIGVkZ2UgZmlsdGVycyB0byByZWxheCBpdHMgc2lkZSBl
ZmZlY3QuCisKKyAgICAgICAgSXQgYWxzbyBmaXhlcyBhIGJ1ZyB0aGF0IENhbGxPYmplY3RDb25z
dHJ1Y3RvciBERkcgbm9kZSB1c2VzIE5vZGUncyBzZW1hbnRpYyBHbG9iYWxPYmplY3QgaW5zdGVh
ZCBvZiBmdW5jdGlvbidzIG9uZS4KKworICAgICAgICAqIGJ1aWx0aW5zL0FycmF5Q29uc3RydWN0
b3IuanM6CisgICAgICAgIChmcm9tKToKKyAgICAgICAgKiBidWlsdGlucy9BcnJheVByb3RvdHlw
ZS5qczoKKyAgICAgICAgKHZhbHVlcyk6CisgICAgICAgIChrZXlzKToKKyAgICAgICAgKGVudHJp
ZXMpOgorICAgICAgICAocmVkdWNlKToKKyAgICAgICAgKHJlZHVjZVJpZ2h0KToKKyAgICAgICAg
KGV2ZXJ5KToKKyAgICAgICAgKGZvckVhY2gpOgorICAgICAgICAoZmlsdGVyKToKKyAgICAgICAg
KG1hcCk6CisgICAgICAgIChzb21lKToKKyAgICAgICAgKGZpbGwpOgorICAgICAgICAoZmluZCk6
CisgICAgICAgIChmaW5kSW5kZXgpOgorICAgICAgICAoaW5jbHVkZXMpOgorICAgICAgICAoc29y
dCk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmNvbmNhdFNsb3dQYXRoKToKKyAgICAgICAgKGNv
cHlXaXRoaW4pOgorICAgICAgICAqIGJ1aWx0aW5zL0RhdGVQcm90b3R5cGUuanM6CisgICAgICAg
ICh0b0xvY2FsZVN0cmluZy50b0RhdGVUaW1lT3B0aW9uc0FueUFsbCk6CisgICAgICAgICh0b0xv
Y2FsZVN0cmluZyk6CisgICAgICAgICh0b0xvY2FsZURhdGVTdHJpbmcudG9EYXRlVGltZU9wdGlv
bnNEYXRlRGF0ZSk6CisgICAgICAgICh0b0xvY2FsZURhdGVTdHJpbmcpOgorICAgICAgICAodG9M
b2NhbGVUaW1lU3RyaW5nLnRvRGF0ZVRpbWVPcHRpb25zVGltZVRpbWUpOgorICAgICAgICAodG9M
b2NhbGVUaW1lU3RyaW5nKToKKyAgICAgICAgKiBidWlsdGlucy9HbG9iYWxPcGVyYXRpb25zLmpz
OgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5jb3B5RGF0YVByb3BlcnRpZXMpOgorICAgICAgICAo
Z2xvYmFsUHJpdmF0ZS5jb3B5RGF0YVByb3BlcnRpZXNOb0V4Y2x1c2lvbnMpOgorICAgICAgICAq
IGJ1aWx0aW5zL09iamVjdENvbnN0cnVjdG9yLmpzOgorICAgICAgICAoZW50cmllcyk6CisgICAg
ICAgICogYnVpbHRpbnMvU3RyaW5nQ29uc3RydWN0b3IuanM6CisgICAgICAgIChyYXcpOgorICAg
ICAgICAqIGJ1aWx0aW5zL1R5cGVkQXJyYXlDb25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKGZyb20p
OgorICAgICAgICAqIGJ1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanM6CisgICAgICAgICht
YXApOgorICAgICAgICAoZmlsdGVyKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUR1bXBl
ci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2Rl
KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9PYmplY3QpOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX3RvT2JqZWN0KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRp
ZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICog
ZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAg
ICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgor
ICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVw
VG9PYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwQ2FsbE9iamVj
dENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6OmNvbnZlcnRUb0NhbGxPYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6Y29udmVydFRvTmV3U3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9OZXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhh
c0lkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0hlYXBQcmVkaWN0aW9u
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDZWxsT3BlcmFuZCk6CisgICAgICAgICog
ZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgor
ICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVUb09iamVjdE9yQ2FsbE9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxPYmplY3RDb25zdHJ1Y3Rvcik6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBm
dGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlVG9PYmplY3RPckNhbGxPYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT2JqZWN0Q29uc3RydWN0b3IpOiBE
ZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fb2JqZWN0KToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF90b19vYmplY3QpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fb2JqZWN0KToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90b19vYmplY3QpOgorICAgICAgICAqIGppdC9KSVRP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oOgorCiAyMDE3LTEwLTE1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtKU0NdIG1vZHVsZXMgY2FuIGJlIHZpc2l0ZWQg
bW9yZSB0aGFuIG9uY2Ugd2hlbiByZXNvbHZpbmcgYmluZGluZ3MgdGhyb3VnaCAic3RhciIgZXhw
b3J0cyBhcyBsb25nIGFzIHRoZSBleHBvcnROYW1lIGlzIGRpZmZlcmVudCBlYWNoIHRpbWUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAxNWZmNDFiNDQ3NDViYTcyYmM4MTk3YThlM2ZlNDcxY2EzZTg1MDZjLi5kZGFh
ODUxNzg1NmViZWEyNzcyM2I5MWQ2NmU4ZjcyN2Q1YjgwMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTctMTAtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgW0pTQ10gSW50cm9kdWNlIEB0b09iamVjdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NzI2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEBpc09iamVjdCBpbnN0ZWFkLiBJ
dCBpcyBtb3JlIGVmZmljaWVudC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2
aWdhdG9yVXNlck1lZGlhLmpzOgorICAgICAgICAoZ2V0VXNlck1lZGlhKToKKwogMjAxNy0xMC0y
NCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XSBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKSB0YWtlcyB+MTUwIG1zIGR1cmluZyB3ZWIgcHJv
Y2VzcyBpbml0aWFsaXphdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0FycmF5Q29uc3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQXJyYXlDb25zdHJ1Y3Rvci5qcwppbmRleCA3M2FkZDFhNzBlMDA5YzA4YmYzMDhhOWI3MmRk
M2JiNmJlNTM5MjJlLi4wNzY1NmI4MDFjNjczMzY1NTM5ZTg1YTQ0YTIxMDU1Y2MzZTYyMjkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rv
ci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rv
ci5qcwpAQCAtNTIsMTAgKzUyLDkgQEAgZnVuY3Rpb24gZnJvbShpdGVtcyAvKiwgbWFwRm4sIHRo
aXNBcmcgKi8pCiAgICAgICAgIHRoaXNBcmcgPSBAYXJndW1lbnQoMik7CiAgICAgfQogCi0gICAg
aWYgKGl0ZW1zID09IG51bGwpCi0gICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJyYXkuZnJvbSBy
ZXF1aXJlcyBhbiBhcnJheS1saWtlIG9iamVjdCAtIG5vdCBudWxsIG9yIHVuZGVmaW5lZCIpOwor
ICAgIHZhciBhcnJheUxpa2UgPSBAdG9PYmplY3QoaXRlbXMsICJBcnJheS5mcm9tIHJlcXVpcmVz
IGFuIGFycmF5LWxpa2Ugb2JqZWN0IC0gbm90IG51bGwgb3IgdW5kZWZpbmVkIik7CiAKLSAgICB2
YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVtcy5AaXRlcmF0b3JTeW1ib2w7CisgICAgdmFyIGl0ZXJh
dG9yTWV0aG9kID0gYXJyYXlMaWtlLkBpdGVyYXRvclN5bWJvbDsKICAgICBpZiAoaXRlcmF0b3JN
ZXRob2QgIT0gbnVsbCkgewogICAgICAgICBpZiAodHlwZW9mIGl0ZXJhdG9yTWV0aG9kICE9PSAi
ZnVuY3Rpb24iKQogICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJheS5mcm9tIHJlcXVp
cmVzIHRoYXQgdGhlIHByb3BlcnR5IG9mIHRoZSBmaXJzdCBhcmd1bWVudCwgaXRlbXNbU3ltYm9s
Lml0ZXJhdG9yXSwgd2hlbiBleGlzdHMsIGJlIGEgZnVuY3Rpb24iKTsKQEAgLTgzLDcgKzgyLDYg
QEAgZnVuY3Rpb24gZnJvbShpdGVtcyAvKiwgbWFwRm4sIHRoaXNBcmcgKi8pCiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdmFyIGFycmF5TGlrZSA9IEBPYmplY3QoaXRlbXMp
OwogICAgIHZhciBhcnJheUxpa2VMZW5ndGggPSBAdG9MZW5ndGgoYXJyYXlMaWtlLmxlbmd0aCk7
CiAKICAgICB2YXIgcmVzdWx0ID0gQGlzQ29uc3RydWN0b3IodGhpc09iaikgPyBuZXcgdGhpc09i
aihhcnJheUxpa2VMZW5ndGgpIDogQG5ld0FycmF5V2l0aFNpemUoYXJyYXlMaWtlTGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVByb3RvdHlw
ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcwpp
bmRleCAzMGE3OTdkMjU1MDk0YWE3NTA4MjYzZjdiNjliMDJkZjExMDJiZjUzLi41ZTU1N2I4NzFk
NjViZDU2MDhiMTczODRlNzBhM2Y5OTdlMzE4YjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCkBAIC00MSw0MCArNDEsMjggQEAgZnVu
Y3Rpb24gdmFsdWVzKCkKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBpZiAodGhpcyA9PT0g
bnVsbCB8fCB0aGlzID09PSBAdW5kZWZpbmVkKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFy
cmF5LnByb3RvdHlwZS52YWx1ZXMgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3Ig
dW5kZWZpbmVkIik7Ci0KLSAgICByZXR1cm4gbmV3IEBjcmVhdGVBcnJheUl0ZXJhdG9yKEBPYmpl
Y3QodGhpcyksICJ2YWx1ZSIsIEBhcnJheUl0ZXJhdG9yVmFsdWVOZXh0KTsKKyAgICByZXR1cm4g
bmV3IEBjcmVhdGVBcnJheUl0ZXJhdG9yKEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90eXBl
LnZhbHVlcyByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKSwg
InZhbHVlIiwgQGFycmF5SXRlcmF0b3JWYWx1ZU5leHQpOwogfQogCiBmdW5jdGlvbiBrZXlzKCkK
IHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBpZiAodGhpcyA9PT0gbnVsbCB8fCB0aGlzID09
PSBAdW5kZWZpbmVkKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5r
ZXlzIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwotCi0g
ICAgcmV0dXJuIG5ldyBAY3JlYXRlQXJyYXlJdGVyYXRvcihAT2JqZWN0KHRoaXMpLCAia2V5Iiwg
QGFycmF5SXRlcmF0b3JLZXlOZXh0KTsKKyAgICByZXR1cm4gbmV3IEBjcmVhdGVBcnJheUl0ZXJh
dG9yKEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90eXBlLmtleXMgcmVxdWlyZXMgdGhhdCB8
dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIiksICJrZXkiLCBAYXJyYXlJdGVyYXRvcktl
eU5leHQpOwogfQogCiBmdW5jdGlvbiBlbnRyaWVzKCkKIHsKICAgICAidXNlIHN0cmljdCI7CiAK
LSAgICBpZiAodGhpcyA9PT0gbnVsbCB8fCB0aGlzID09PSBAdW5kZWZpbmVkKQotICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5lbnRyaWVzIHJlcXVpcmVzIHRoYXQgfHRo
aXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwotCi0gICAgcmV0dXJuIG5ldyBAY3JlYXRl
QXJyYXlJdGVyYXRvcihAT2JqZWN0KHRoaXMpLCAia2V5K3ZhbHVlIiwgQGFycmF5SXRlcmF0b3JL
ZXlWYWx1ZU5leHQpOworICAgIHJldHVybiBuZXcgQGNyZWF0ZUFycmF5SXRlcmF0b3IoQHRvT2Jq
ZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUuZW50cmllcyByZXF1aXJlcyB0aGF0IHx0aGlzfCBu
b3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKSwgImtleSt2YWx1ZSIsIEBhcnJheUl0ZXJhdG9yS2V5
VmFsdWVOZXh0KTsKIH0KIAogZnVuY3Rpb24gcmVkdWNlKGNhbGxiYWNrIC8qLCBpbml0aWFsVmFs
dWUgKi8pCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgaWYgKHRoaXMgPT09IG51bGwgfHwg
dGhpcyA9PT0gQHVuZGVmaW5lZCkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJheS5wcm90
b3R5cGUucmVkdWNlIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5l
ZCIpOwotCi0gICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIgYXJyYXkgPSBA
dG9PYmplY3QodGhpcywgIkFycmF5LnByb3RvdHlwZS5yZWR1Y2UgcmVxdWlyZXMgdGhhdCB8dGhp
c3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0
aChhcnJheS5sZW5ndGgpOwogCiAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9u
IikKQEAgLTEwNywxMCArOTUsNyBAQCBmdW5jdGlvbiByZWR1Y2VSaWdodChjYWxsYmFjayAvKiwg
aW5pdGlhbFZhbHVlICovKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGlmICh0aGlzID09
PSBudWxsIHx8IHRoaXMgPT09IEB1bmRlZmluZWQpCi0gICAgICAgIEB0aHJvd1R5cGVFcnJvcigi
QXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBu
dWxsIG9yIHVuZGVmaW5lZCIpOwotCi0gICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAg
ICB2YXIgYXJyYXkgPSBAdG9PYmplY3QodGhpcywgIkFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdo
dCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKICAgICB2
YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CiAKICAgICBpZiAodHlwZW9mIGNh
bGxiYWNrICE9PSAiZnVuY3Rpb24iKQpAQCAtMTQzLDEwICsxMjgsNyBAQCBmdW5jdGlvbiBldmVy
eShjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBp
ZiAodGhpcyA9PT0gbnVsbCB8fCB0aGlzID09PSBAdW5kZWZpbmVkKQotICAgICAgICBAdGhyb3dU
eXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3Qg
YmUgbnVsbCBvciB1bmRlZmluZWQiKTsKLSAgICAKLSAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRo
aXMpOworICAgIHZhciBhcnJheSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90eXBlLmV2
ZXJ5IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwogICAg
IHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKIAogICAgIGlmICh0eXBlb2Yg
Y2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCkBAIC0xNjgsMTAgKzE1MCw3IEBAIGZ1bmN0aW9uIGZv
ckVhY2goY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0g
ICAgaWYgKHRoaXMgPT09IG51bGwgfHwgdGhpcyA9PT0gQHVuZGVmaW5lZCkKLSAgICAgICAgQHRo
cm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCByZXF1aXJlcyB0aGF0IHx0aGlz
fCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKLSAgICAKLSAgICB2YXIgYXJyYXkgPSBAT2Jq
ZWN0KHRoaXMpOworICAgIHZhciBhcnJheSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90
eXBlLmZvckVhY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVk
Iik7CiAgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOwogCiAgICAgaWYg
KHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKQEAgLTE4OSwxMCArMTY4LDcgQEAgZnVu
Y3Rpb24gZmlsdGVyKGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQogewogICAgICJ1c2Ugc3RyaWN0
IjsKIAotICAgIGlmICh0aGlzID09PSBudWxsIHx8IHRoaXMgPT09IEB1bmRlZmluZWQpCi0gICAg
ICAgIEB0aHJvd1R5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmZpbHRlciByZXF1aXJlcyB0aGF0
IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKLSAgICAKLSAgICB2YXIgYXJyYXkg
PSBAT2JqZWN0KHRoaXMpOworICAgIHZhciBhcnJheSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXku
cHJvdG90eXBlLmZpbHRlciByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRl
ZmluZWQiKTsKICAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CiAKICAg
ICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQpAQCAtMjM4LDEwICsyMTQsNyBA
QCBmdW5jdGlvbiBtYXAoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiB7CiAgICAgInVzZSBzdHJp
Y3QiOwogCi0gICAgaWYgKHRoaXMgPT09IG51bGwgfHwgdGhpcyA9PT0gQHVuZGVmaW5lZCkKLSAg
ICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUubWFwIHJlcXVpcmVzIHRoYXQg
fHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwotICAgIAotICAgIHZhciBhcnJheSA9
IEBPYmplY3QodGhpcyk7CisgICAgdmFyIGFycmF5ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5w
cm90b3R5cGUubWFwIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5l
ZCIpOwogICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKIAogICAgIGlm
ICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCkBAIC0yODMsMTAgKzI1Niw3IEBAIGZ1
bmN0aW9uIHNvbWUoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiB7CiAgICAgInVzZSBzdHJpY3Qi
OwogCi0gICAgaWYgKHRoaXMgPT09IG51bGwgfHwgdGhpcyA9PT0gQHVuZGVmaW5lZCkKLSAgICAg
ICAgQHRocm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuc29tZSByZXF1aXJlcyB0aGF0IHx0
aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKLSAgICAKLSAgICB2YXIgYXJyYXkgPSBA
T2JqZWN0KHRoaXMpOworICAgIHZhciBhcnJheSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJv
dG90eXBlLnNvbWUgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVk
Iik7CiAgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOwogCiAgICAgaWYg
KHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKQEAgLTMwNiwxMCArMjc2LDcgQEAgZnVu
Y3Rpb24gZmlsbCh2YWx1ZSAvKiBbLCBzdGFydCBbLCBlbmRdXSAqLykKIHsKICAgICAidXNlIHN0
cmljdCI7CiAKLSAgICBpZiAodGhpcyA9PT0gbnVsbCB8fCB0aGlzID09PSBAdW5kZWZpbmVkKQot
ICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5maWxsIHJlcXVpcmVzIHRo
YXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwotCi0gICAgdmFyIGFycmF5ID0g
QE9iamVjdCh0aGlzKTsKKyAgICB2YXIgYXJyYXkgPSBAdG9PYmplY3QodGhpcywgIkFycmF5LnBy
b3RvdHlwZS5maWxsIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5l
ZCIpOwogICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKIAogICAgIHZh
ciByZWxhdGl2ZVN0YXJ0ID0gQHRvSW50ZWdlcihAYXJndW1lbnQoMSkpOwpAQCAtMzQ2LDEwICsz
MTMsNyBAQCBmdW5jdGlvbiBmaW5kKGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQogewogICAgICJ1
c2Ugc3RyaWN0IjsKIAotICAgIGlmICh0aGlzID09PSBudWxsIHx8IHRoaXMgPT09IEB1bmRlZmlu
ZWQpCi0gICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmZpbmQgcmVxdWly
ZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7Ci0gICAgCi0gICAgdmFy
IGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIgYXJyYXkgPSBAdG9PYmplY3QodGhpcywg
IkFycmF5LnByb3RvdHlwZS5maW5kIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9y
IHVuZGVmaW5lZCIpOwogICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsK
IAogICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCkBAIC0zNjgsMTAgKzMz
Miw3IEBAIGZ1bmN0aW9uIGZpbmRJbmRleChjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKIHsKICAg
ICAidXNlIHN0cmljdCI7CiAKLSAgICBpZiAodGhpcyA9PT0gbnVsbCB8fCB0aGlzID09PSBAdW5k
ZWZpbmVkKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5maW5kSW5k
ZXggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7Ci0gICAg
Ci0gICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKKyAgICB2YXIgYXJyYXkgPSBAdG9PYmpl
Y3QodGhpcywgIkFycmF5LnByb3RvdHlwZS5maW5kSW5kZXggcmVxdWlyZXMgdGhhdCB8dGhpc3wg
bm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChh
cnJheS5sZW5ndGgpOwogCiAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikK
QEAgLTM4OSwxMCArMzUwLDcgQEAgZnVuY3Rpb24gaW5jbHVkZXMoc2VhcmNoRWxlbWVudCAvKiwg
ZnJvbUluZGV4Ki8pCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgaWYgKHRoaXMgPT09IG51
bGwgfHwgdGhpcyA9PT0gQHVuZGVmaW5lZCkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJh
eS5wcm90b3R5cGUuaW5jbHVkZXMgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3Ig
dW5kZWZpbmVkIik7Ci0KLSAgICB2YXIgYXJyYXkgPSBAT2JqZWN0KHRoaXMpOworICAgIHZhciBh
cnJheSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzIHJlcXVpcmVz
IHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwogICAgIHZhciBsZW5ndGgg
PSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKIAogICAgIGlmIChsZW5ndGggPT09IDApCkBAIC02
MzMsMTAgKzU5MSw3IEBAIGZ1bmN0aW9uIHN0cmluZ1NvcnQoYXJyYXksIGxlbmd0aCkKICAgICAg
ICAgYnVja2V0U29ydChhcnJheSwgMCwgc3RyaW5ncywgMCk7CiAgICAgfQogCi0gICAgaWYgKHRo
aXMgPT09IG51bGwgfHwgdGhpcyA9PT0gQHVuZGVmaW5lZCkKLSAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJBcnJheS5wcm90b3R5cGUuc29ydCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVs
bCBvciB1bmRlZmluZWQiKTsKLQotICAgIHZhciBhcnJheSA9IEBPYmplY3QodGhpcyk7CisgICAg
dmFyIGFycmF5ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUuc29ydCByZXF1aXJl
cyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKIAogICAgIHZhciBsZW5n
dGggPSBhcnJheS5sZW5ndGggPj4+IDA7CiAKQEAgLTY2MCwxMCArNjE1LDcgQEAgZnVuY3Rpb24g
Y29uY2F0U2xvd1BhdGgoKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGlmICh0aGlzID09
PSBudWxsIHx8IHRoaXMgPT09IEB1bmRlZmluZWQpCi0gICAgICAgIEB0aHJvd1R5cGVFcnJvcigi
QXJyYXkucHJvdG90eXBlLmNvbmNhdCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBv
ciB1bmRlZmluZWQiKTsKLQotICAgIHZhciBjdXJyZW50RWxlbWVudCA9IEBPYmplY3QodGhpcyk7
CisgICAgdmFyIGN1cnJlbnRFbGVtZW50ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5
cGUuY29uY2F0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIp
OwogCiAgICAgdmFyIGNvbnN0cnVjdG9yOwogICAgIGlmIChAaXNBcnJheShjdXJyZW50RWxlbWVu
dCkpIHsKQEAgLTc1MCwxMCArNzAyLDcgQEAgZnVuY3Rpb24gbWluV2l0aE1heWJlTmVnYXRpdmVa
ZXJvQW5kUG9zaXRpdmUobWF5YmVOZWdhdGl2ZVplcm8sIHBvc2l0aXZlKQogICAgICAgICByZXR1
cm4gKG1heWJlTmVnYXRpdmVaZXJvIDwgcG9zaXRpdmUpID8gbWF5YmVOZWdhdGl2ZVplcm8gOiBw
b3NpdGl2ZTsKICAgICB9CiAKLSAgICBpZiAodGhpcyA9PT0gbnVsbCB8fCB0aGlzID09PSBAdW5k
ZWZpbmVkKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LmNvcHlXaXRoaW4gcmVxdWly
ZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7Ci0KLSAgICB2YXIgYXJy
YXkgPSBAT2JqZWN0KHRoaXMpOworICAgIHZhciBhcnJheSA9IEB0b09iamVjdCh0aGlzLCAiQXJy
YXkucHJvdG90eXBlLmNvcHlXaXRoaW4gcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwg
b3IgdW5kZWZpbmVkIik7CiAgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgp
OwogCiAgICAgdmFyIHJlbGF0aXZlVGFyZ2V0ID0gQHRvSW50ZWdlcih0YXJnZXQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0RhdGVQcm90b3R5cGUuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvRGF0ZVByb3RvdHlwZS5qcwppbmRleCAyMzRm
MTg1MjJlODA5ZDAwMmUwZmNhNWEwMGNkNzJhZjA0YzVhZGQzLi4xODMzZTM2MjVkMGIxYTk0MTY0
ZGUyYjAxN2I1MDEyYTM2MTRkMmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvRGF0ZVByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvRGF0ZVByb3RvdHlwZS5qcwpAQCAtNDAsNyArNDAsNyBAQCBmdW5jdGlvbiB0b0RhdGVU
aW1lT3B0aW9uc0FueUFsbChvcHRzKQogICAgICAgICBlbHNlIGlmIChvcHRzID09PSBudWxsKQog
ICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJudWxsIGlzIG5vdCBhbiBvYmplY3QiKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgb3B0aW9ucyA9IEBPYmplY3Qob3B0cyk7CisgICAgICAg
ICAgICBvcHRpb25zID0gQHRvT2JqZWN0KG9wdHMsICIiKTsKIAogICAgICAgICAvLyBDaGVjayBv
cmlnaW5hbCBpbnN0ZWFkIG9mIGRlc2NlbmRhbnQgdG8gcmVkdWNlIGxvb2t1cHMgdXAgdGhlIHBy
b3RvdHlwZSBjaGFpbi4KICAgICAgICAgdmFyIG5lZWRzRGVmYXVsdHMgPSAhb3B0aW9ucyB8fCAo
CkBAIC05Nyw3ICs5Nyw3IEBAIGZ1bmN0aW9uIHRvRGF0ZVRpbWVPcHRpb25zRGF0ZURhdGUob3B0
cykKICAgICAgICAgZWxzZSBpZiAob3B0cyA9PT0gbnVsbCkKICAgICAgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigibnVsbCBpcyBub3QgYW4gb2JqZWN0Iik7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG9wdGlvbnMgPSBAT2JqZWN0KG9wdHMpOworICAgICAgICAgICAgb3B0aW9ucyA9IEB0b09i
amVjdChvcHRzLCAiIik7CiAKICAgICAgICAgLy8gQ2hlY2sgb3JpZ2luYWwgaW5zdGVhZCBvZiBk
ZXNjZW5kYW50IHRvIHJlZHVjZSBsb29rdXBzIHVwIHRoZSBwcm90b3R5cGUgY2hhaW4uCiAgICAg
ICAgIHZhciBuZWVkc0RlZmF1bHRzID0gIW9wdGlvbnMgfHwgKApAQCAtMTQ3LDcgKzE0Nyw3IEBA
IGZ1bmN0aW9uIHRvRGF0ZVRpbWVPcHRpb25zVGltZVRpbWUob3B0cykKICAgICAgICAgZWxzZSBp
ZiAob3B0cyA9PT0gbnVsbCkKICAgICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigibnVsbCBpcyBu
b3QgYW4gb2JqZWN0Iik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG9wdGlvbnMgPSBAT2Jq
ZWN0KG9wdHMpOworICAgICAgICAgICAgb3B0aW9ucyA9IEB0b09iamVjdChvcHRzLCAiIik7CiAK
ICAgICAgICAgLy8gQ2hlY2sgb3JpZ2luYWwgaW5zdGVhZCBvZiBkZXNjZW5kYW50IHRvIHJlZHVj
ZSBsb29rdXBzIHVwIHRoZSBwcm90b3R5cGUgY2hhaW4uCiAgICAgICAgIHZhciBuZWVkc0RlZmF1
bHRzID0gIW9wdGlvbnMgfHwgKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0dsb2JhbE9wZXJhdGlvbnMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvR2xvYmFsT3BlcmF0aW9ucy5qcwppbmRleCA0M2M2ZmExMTg2ZTAwOGRkNjkwY2I5YmY0ODNk
YmU0Zjc4NzdiNGZhLi45NjcwZGI1ZTBlOWU2OTg1NWRlODg0ZTAyYjllMGU0YWY1Yjg2M2RlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT3BlcmF0aW9u
cy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT3BlcmF0aW9u
cy5qcwpAQCAtOTAsNyArOTAsNyBAQCBmdW5jdGlvbiBjb3B5RGF0YVByb3BlcnRpZXModGFyZ2V0
LCBzb3VyY2UsIGV4Y2x1ZGVkU2V0KQogICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgCiAgICAgICAg
IHJldHVybiB0YXJnZXQ7CiAKLSAgICBsZXQgZnJvbSA9IEBPYmplY3Qoc291cmNlKTsgCisgICAg
bGV0IGZyb20gPSBAdG9PYmplY3Qoc291cmNlLCAiIik7CiAgICAgbGV0IGtleXMgPSBAUmVmbGVj
dC5Ab3duS2V5cyhmcm9tKTsgCiAgICAgbGV0IGtleXNMZW5ndGggPSBrZXlzLmxlbmd0aDsKICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXNMZW5ndGg7IGkrKykgewpAQCAtMTE1LDcgKzExNSw3
IEBAIGZ1bmN0aW9uIGNvcHlEYXRhUHJvcGVydGllc05vRXhjbHVzaW9ucyh0YXJnZXQsIHNvdXJj
ZSkKICAgICBpZiAoc291cmNlID09IG51bGwpIAogICAgICAgICByZXR1cm4gdGFyZ2V0OwogCi0g
ICAgbGV0IGZyb20gPSBAT2JqZWN0KHNvdXJjZSk7IAorICAgIGxldCBmcm9tID0gQHRvT2JqZWN0
KHNvdXJjZSwgIiIpOwogICAgIGxldCBrZXlzID0gQFJlZmxlY3QuQG93bktleXMoZnJvbSk7IAog
ICAgIGxldCBrZXlzTGVuZ3RoID0ga2V5cy5sZW5ndGg7CiAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBrZXlzTGVuZ3RoOyBpKyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcwppbmRleCAxYjBiOWNkMjE5ZWVjNmM3M2E0YzJjMGZh
ZjMwOTliZGIxYTVlN2RhLi5hZGEwZWNhMmI0MTgwYjFmNTIyOWM4MmQwMTY1YjUwODUxZWI3YThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvT2JqZWN0Q29uc3Ry
dWN0b3IuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL09iamVjdENvbnN0
cnVjdG9yLmpzCkBAIC0yOCwxMCArMjgsNyBAQCBmdW5jdGlvbiBlbnRyaWVzKG9iamVjdCkKIHsK
ICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBpZiAob2JqZWN0ID09IG51bGwpCi0gICAgICAgIEB0
aHJvd1R5cGVFcnJvcigiT2JqZWN0LmVudHJpZXMgcmVxdWlyZXMgdGhhdCBpbnB1dCBwYXJhbWV0
ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7Ci0KLSAgICB2YXIgb2JqID0gQE9iamVjdChv
YmplY3QpOworICAgIHZhciBvYmogPSBAdG9PYmplY3Qob2JqZWN0LCAiT2JqZWN0LmVudHJpZXMg
cmVxdWlyZXMgdGhhdCBpbnB1dCBwYXJhbWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7
CiAgICAgdmFyIG5hbWVzID0gQGdldE93blByb3BlcnR5TmFtZXMob2JqKTsKICAgICB2YXIgcHJv
cGVydGllcyA9IFtdOwogICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBuYW1lcy5sZW5ndGg7
IGkgPCBsZW5ndGg7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL1N0cmluZ0NvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL1N0cmluZ0NvbnN0cnVjdG9yLmpzCmluZGV4IGEzMjkzMzI4YmNlNzE3ZDZlNjhmYjVjZDRh
YWE4NDRiMmVlZmRlYzkuLmQ1MWMyMGRhNzg5MmE4NDkyNWYxODAyZGI3OGYzMmYzMWE4ZWM2ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdDb25zdHJ1
Y3Rvci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5nQ29uc3Ry
dWN0b3IuanMKQEAgLTI3LDE0ICsyNyw5IEBAIGZ1bmN0aW9uIHJhdyh0ZW1wbGF0ZSkKIHsKICAg
ICAidXNlIHN0cmljdCI7CiAKLSAgICBpZiAodGVtcGxhdGUgPT09IG51bGwgfHwgdGVtcGxhdGUg
PT09IEB1bmRlZmluZWQpCi0gICAgICAgIEB0aHJvd1R5cGVFcnJvcigiU3RyaW5nLnJhdyByZXF1
aXJlcyB0ZW1wbGF0ZSBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKLSAgICB2YXIgY29va2Vk
U2VnbWVudHMgPSBAT2JqZWN0KHRlbXBsYXRlKTsKLQotICAgIHZhciByYXdWYWx1ZSA9IGNvb2tl
ZFNlZ21lbnRzLnJhdzsKLSAgICBpZiAocmF3VmFsdWUgPT09IG51bGwgfHwgcmF3VmFsdWUgPT09
IEB1bmRlZmluZWQpCi0gICAgICAgIEB0aHJvd1R5cGVFcnJvcigiU3RyaW5nLnJhdyByZXF1aXJl
cyB0ZW1wbGF0ZS5yYXcgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7Ci0gICAgdmFyIHJhd1Nl
Z21lbnRzID0gQE9iamVjdChyYXdWYWx1ZSk7CisgICAgdmFyIGNvb2tlZFNlZ21lbnRzID0gQHRv
T2JqZWN0KHRlbXBsYXRlLCAiU3RyaW5nLnJhdyByZXF1aXJlcyB0ZW1wbGF0ZSBub3QgYmUgbnVs
bCBvciB1bmRlZmluZWQiKTsKKworICAgIHZhciByYXdTZWdtZW50cyA9IEB0b09iamVjdChjb29r
ZWRTZWdtZW50cy5yYXcsICJTdHJpbmcucmF3IHJlcXVpcmVzIHRlbXBsYXRlLnJhdyBub3QgYmUg
bnVsbCBvciB1bmRlZmluZWQiKTsKIAogICAgIHZhciBudW1iZXJPZlN1YnN0aXR1dGlvbnMgPSBh
cmd1bWVudHMubGVuZ3RoIC0gMTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL1R5cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanMKaW5kZXggNTRhOTU3YjIzOWM3Mjgx
NDIwMjg5YWMyYmZlMzY5MTgwNzgyMjZmNi4uNzIzZWY4YmE1MDU3Mjc4NWVjNTM0NGQ4MDk4ZDRh
YjI2YzJhNDBmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5
cGVkQXJyYXlDb25zdHJ1Y3Rvci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpzCkBAIC01OSwxMCArNTksOSBAQCBmdW5jdGlvbiBm
cm9tKGl0ZW1zIC8qIFsgLCBtYXBmbiBbICwgdGhpc0FyZyBdIF0gKi8pCiAgICAgICAgIHRoaXNB
cmcgPSBAYXJndW1lbnQoMik7CiAgICAgfQogCi0gICAgaWYgKGl0ZW1zID09IG51bGwpCi0gICAg
ICAgIEB0aHJvd1R5cGVFcnJvcigiVHlwZWRBcnJheS5mcm9tIHJlcXVpcmVzIGFuIGFycmF5LWxp
a2Ugb2JqZWN0IC0gbm90IG51bGwgb3IgdW5kZWZpbmVkIik7CisgICAgbGV0IGFycmF5TGlrZSA9
IEB0b09iamVjdChpdGVtcywgIlR5cGVkQXJyYXkuZnJvbSByZXF1aXJlcyBhbiBhcnJheS1saWtl
IG9iamVjdCAtIG5vdCBudWxsIG9yIHVuZGVmaW5lZCIpOwogCi0gICAgbGV0IGl0ZXJhdG9yTWV0
aG9kID0gaXRlbXMuQGl0ZXJhdG9yU3ltYm9sOworICAgIGxldCBpdGVyYXRvck1ldGhvZCA9IGFy
cmF5TGlrZS5AaXRlcmF0b3JTeW1ib2w7CiAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kICE9IG51bGwp
IHsKICAgICAgICAgaWYgKHR5cGVvZiBpdGVyYXRvck1ldGhvZCAhPT0gImZ1bmN0aW9uIikKICAg
ICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiVHlwZWRBcnJheS5mcm9tIHJlcXVpcmVzIHRoYXQg
dGhlIHByb3BlcnR5IG9mIHRoZSBmaXJzdCBhcmd1bWVudCwgaXRlbXNbU3ltYm9sLml0ZXJhdG9y
XSwgd2hlbiBleGlzdHMsIGJlIGEgZnVuY3Rpb24iKTsKQEAgLTk5LDcgKzk4LDYgQEAgZnVuY3Rp
b24gZnJvbShpdGVtcyAvKiBbICwgbWFwZm4gWyAsIHRoaXNBcmcgXSBdICovKQogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIGxldCBhcnJheUxpa2UgPSBAT2JqZWN0KGl0ZW1z
KTsKICAgICBsZXQgYXJyYXlMaWtlTGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5TGlrZS5sZW5ndGgp
OwogCiAgICAgbGV0IGNvbnN0cnVjdEZ1bmN0aW9uID0gdGhpcy5AYWxsb2NhdGVUeXBlZEFycmF5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXlQ
cm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheVBy
b3RvdHlwZS5qcwppbmRleCA1MzY3NGJmN2I2YzMxMTRjYjhhYWY4MWE4YmU3ZGViZDc1NzIwNTFl
Li5lMmI1ZTBiYjdjMzljZjZiZDE0OWJmMmZhYTFiNjZkMWU4YmM0OWU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcwpA
QCAtMzM5LDcgKzMzOSw3IEBAIGZ1bmN0aW9uIG1hcChjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykK
ICAgICBpZiAoY29uc3RydWN0b3IgPT09IEB1bmRlZmluZWQpCiAgICAgICAgIHJlc3VsdCA9IG5l
dyAoQHR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yKHRoaXMpKShsZW5ndGgpOwogICAg
IGVsc2UgewotICAgICAgICB2YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gQE9iamVjdChjb25zdHJ1
Y3RvcikuQHNwZWNpZXNTeW1ib2w7CisgICAgICAgIHZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSBA
dG9PYmplY3QoY29uc3RydWN0b3IsICIiKS5Ac3BlY2llc1N5bWJvbDsKICAgICAgICAgaWYgKHNw
ZWNpZXNDb25zdHJ1Y3RvciA9PT0gbnVsbCB8fCBzcGVjaWVzQ29uc3RydWN0b3IgPT09IEB1bmRl
ZmluZWQpCiAgICAgICAgICAgICByZXN1bHQgPSBuZXcgKEB0eXBlZEFycmF5R2V0T3JpZ2luYWxD
b25zdHJ1Y3Rvcih0aGlzKSkobGVuZ3RoKTsKICAgICAgICAgZWxzZSB7CkBAIC0zODAsNyArMzgw
LDcgQEAgZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQogICAgIGlmIChj
b25zdHJ1Y3RvciA9PT0gQHVuZGVmaW5lZCkKICAgICAgICAgcmVzdWx0ID0gbmV3IChAdHlwZWRB
cnJheUdldE9yaWdpbmFsQ29uc3RydWN0b3IodGhpcykpKHJlc3VsdExlbmd0aCk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIHZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSBAT2JqZWN0KGNvbnN0cnVjdG9y
KS5Ac3BlY2llc1N5bWJvbDsKKyAgICAgICAgdmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IEB0b09i
amVjdChjb25zdHJ1Y3RvciwgIiIpLkBzcGVjaWVzU3ltYm9sOwogICAgICAgICBpZiAoc3BlY2ll
c0NvbnN0cnVjdG9yID09PSBudWxsIHx8IHNwZWNpZXNDb25zdHJ1Y3RvciA9PT0gQHVuZGVmaW5l
ZCkKICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyAoQHR5cGVkQXJyYXlHZXRPcmlnaW5hbENvbnN0
cnVjdG9yKHRoaXMpKShyZXN1bHRMZW5ndGgpOwogICAgICAgICBlbHNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCmluZGV4IDliYzEx
N2YxOTkxNGM1MzllMmRjYWUzMzcyZTMxYTQ5YWQ2YzJlYTEuLmU4ZjA2ZjNmNjRjM2UyOTAwMWI3
YTczODViMWI1YTY4MTRhN2RjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcApAQCAtODcxLDYgKzg3MSwxMyBAQCB2b2lkIEJ5dGVj
b2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IHR5
cGVuYW1lIEJsb2NrOgogICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJ0
b19zdHJpbmciKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfdG9fb2JqZWN0
OiB7CisgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgInRvX29iamVjdCIp
OworICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIG91dC5wcmlu
dGYoIiVzIiwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihpZDApKS5kYXRhKCkpOworICAgICAgICBk
dW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgICAg
IGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX25lZ2F0ZTogewogICAgICAgICBwcmludFVuYXJ5
T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJuZWdhdGUiKTsKICAgICAgICAgKytpdDsgLy8gb3BfbmVn
YXRlIGhhcyBhbiBleHRyYSBvcGVyYW5kIGZvciB0aGUgQXJpdGhQcm9maWxlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmgKaW5kZXggOWFlMWFjODcyZWZkMDkyNDk2Y2QyOTQ0ZmE2Mzk0ZGQzZDY5OTgyNi4u
MWY0ZTVjNzlkOTE3NmEyMTg2M2JhN2NlN2QzMGUyY2IzOTRhZGI3MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5oCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIElkZW50aWZpZXI7CiAgICAgbWFjcm8ocHV0
QnlWYWxEaXJlY3QpIFwKICAgICBtYWNybyh0b051bWJlcikgXAogICAgIG1hY3JvKHRvU3RyaW5n
KSBcCisgICAgbWFjcm8odG9PYmplY3QpIFwKICAgICBtYWNybyhuZXdBcnJheVdpdGhTaXplKSBc
CiAgICAgbWFjcm8oZGVmaW5lRW51bWVyYWJsZVdyaXRhYmxlQ29uZmlndXJhYmxlRGF0YVByb3Bl
cnR5KSBcCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgppbmRleCBlMTEzMTRmMjI5NjJmODVkZjdmMWNmZTY2MzVlNGJmOTk2YTVlZDA1Li4z
NmNmNTdlZTMyNWVmZjMyN2NjMWFkNzFlMjRlZWFjNzlhZWJmZTVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC00Miw2ICs0Miw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWMiLCAibGVuZ3RoIiA6IDIgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RvX251bWJlciIsICJsZW5ndGgiIDogNCB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9fc3RyaW5nIiwgImxlbmd0aCIgOiAzIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19vYmplY3QiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX25lZ2F0ZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfYWRkIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9tdWwiLCAibGVuZ3RoIiA6IDUgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggOTc0OWFmN2E0M2RkYjA5NTllZTJi
OGVkOWExOTljMjIzODFkYzBhYS4uZmYyNTIxODk1YTE5Yjg3YzI1ZDYzZjFkMzNjOWY4OWJhYjg3
N2U0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgKQEAgLTE5Myw2ICsxOTMsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZz
ZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNh
c2Ugb3BfaXNfZnVuY3Rpb246CiAgICAgY2FzZSBvcF90b19udW1iZXI6CiAgICAgY2FzZSBvcF90
b19zdHJpbmc6CisgICAgY2FzZSBvcF90b19vYmplY3Q6CiAgICAgY2FzZSBvcF9uZWdhdGU6CiAg
ICAgY2FzZSBvcF9uZXFfbnVsbDoKICAgICBjYXNlIG9wX2VxX251bGw6CkBAIC00NDYsNiArNDQ3
LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ss
IE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGkKICAgICBjYXNlIG9wX2luOgogICAgIGNhc2Ug
b3BfdG9fbnVtYmVyOgogICAgIGNhc2Ugb3BfdG9fc3RyaW5nOgorICAgIGNhc2Ugb3BfdG9fb2Jq
ZWN0OgogICAgIGNhc2Ugb3BfbmVnYXRlOgogICAgIGNhc2Ugb3BfYWRkOgogICAgIGNhc2Ugb3Bf
bXVsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRl
eCA5Y2YzYmNiYmRlZmYyNjg5OWU5YzU5MGU4NWI3YzJiZmQ2MTA4ODUxLi4wZDUyMDEwYjY2OWY0
YzU1NjhiZjdjM2E3MGI3MmI5MWRjYTQyYWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNTY3LDYgKzU2Nyw3IEBAIGJvb2wgQ29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJs
ZSwgVW5saW5rCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXM6CiAgICAgICAg
IGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOgogICAgICAgICBjYXNlIG9wX3RvX251bWJlcjoK
KyAgICAgICAgY2FzZSBvcF90b19vYmplY3Q6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FyZ3VtZW50
OiB7CiAgICAgICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAwMjE5ZDg5MDk0YWYwMmNlMWIyODU2ZWE0
ZjQzYjdlN2M3YjAxNTZiLi4zMDIxY2MxMmYzNDE3Zjk3YjFiYzBjOWJjY2JkNDg5ZjBlMDM5MGVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTY5Miw2ICsxNjkyLDE2IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0VW5hcnlPcFByb2ZpbGVkKE9wY29kZUlEIG9wY29kZUlELCBS
ZWdpc3RlcklECiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRUb09iamVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYywgY29u
c3QgSWRlbnRpZmllciYgbWVzc2FnZSkKK3sKKyAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9m
aWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX3RvX29iamVjdCk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNyYy0+
aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KG1lc3NhZ2Up
KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvZmlsZSk7CisgICAgcmV0dXJuIGRzdDsK
K30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbmMoUmVnaXN0ZXJJRCog
c3JjRHN0KQogewogICAgIGVtaXRPcGNvZGUob3BfaW5jKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBhZmEy
MzU1ZjBjODFmZjkxM2MwZTcyYzViODdhYTU1NzQyYzU3OWEzLi5mYzQ5YmU0YjRkZTg3MDc2MjJl
MWY2N2UzYjkwYjYxMjc5Nzk5YzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC02NjQsNiArNjY0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFRvTnVtYmVyKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0VW5hcnlPcFByb2ZpbGVk
KG9wX3RvX251bWJlciwgZHN0LCBzcmMpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUb1N0
cmluZyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdFVuYXJ5
T3Aob3BfdG9fc3RyaW5nLCBkc3QsIHNyYyk7IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFRv
T2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjLCBjb25zdCBJZGVudGlmaWVy
JiBtZXNzYWdlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluYyhSZWdpc3RlcklEKiBzcmNE
c3QpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVjKFJlZ2lzdGVySUQqIHNyY0RzdCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAppbmRleCA1NDRjNmQyMzU4YzNhNGZhM2UzYzRhOTJmZWZkZTZmZjBkN2NlMTE3Li44NDcy
ZTM4ODFmMzQzN2Y5ODJiYWEzMjBlMDE2YjMwYmY5ZThmNWVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xMDMxLDYg
KzEwMzEsMTkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJp
bnNpY190b1N0cmluZyhCeXRlY29kZUdlbmVyYXRvciYgZ2UKICAgICByZXR1cm4gZ2VuZXJhdG9y
Lm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBnZW5lcmF0b3IuZW1pdFRvU3RyaW5nKGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgc3JjLmdldCgpKSk7CiB9CiAKK1JlZ2lzdGVy
SUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfdG9PYmplY3QoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQoreworICAgIEFyZ3VtZW50
TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CisgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHNyYyA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBub2RlID0gbm9kZS0+bV9u
ZXh0OworCisgICAgQVNTRVJUKG5vZGUtPm1fZXhwci0+aXNTdHJpbmcoKSk7CisgICAgY29uc3Qg
SWRlbnRpZmllciYgbWVzc2FnZSA9IHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihub2RlLT5tX2V4
cHIpLT52YWx1ZSgpOworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKworICAgIHJldHVybiBn
ZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGdlbmVyYXRvci5lbWl0VG9P
YmplY3QoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBzcmMuZ2V0KCksIG1lc3NhZ2Up
KTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNp
Y19pZFdpdGhQcm9maWxlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKIHsKICAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2Rl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCmluZGV4IGNiNThiZjA2ZDFiODA0ODRkMzQwMTMyZjU2NGVmYWQ2
ZDBhMmRhOTYuLmFkNTJiNDA4ZDdjNjViYmM3Mjg4NTY3ZDc2ZjYyN2I5NTI5YTU3ODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKQEAgLTIxODIsNiArMjE4Miw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG5vZGUtPnN0cnVjdHVyZSgp
KTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFRvT2JqZWN0OgogICAgIGNhc2UgQ2FsbE9i
amVjdENvbnN0cnVjdG9yOiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHNvdXJjZSA9IGZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9
IGZvck5vZGUobm9kZSk7CkBAIC0yMTkyLDYgKzIxOTMsOCBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVy
TGltaQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAobm9kZS0+
b3AoKSA9PSBUb09iamVjdCkKKyAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZSht
X2dyYXBoLCBTcGVjT2JqZWN0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAzNWI3NjQxOWUx
OWI4NTcxYTI4MjBiZDYwZWU3YWUwOGVkYWU2NWFmLi45NTY3OWVjNjA4NDMxMGNmOGRiOWUzZjZm
NzU3OTdlMmU3OTRiZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcApAQCAtMzM1NSw3ICszMzU1LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKAogICAgICAgICBpZiAoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPD0gMSkKICAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgo
TmV3T2JqZWN0LCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShmdW5jdGlvbi0+Z2xv
YmFsT2JqZWN0KCktPm9iamVjdFN0cnVjdHVyZUZvck9iamVjdENvbnN0cnVjdG9yKCkpKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoQ2FsbE9iamVjdENv
bnN0cnVjdG9yLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZz
ZXQpKSk7CisgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKENhbGxPYmplY3RDb25zdHJ1
Y3RvciwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKSkpLCBP
cEluZm8ocHJlZGljdGlvbiksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdp
c3Rlck9mZnNldCkpKTsKICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5k
KSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNjEyNCw2ICs2MTI0
LDE0IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF90b19zdHJpbmcpOwogICAgICAgICB9CiAKKyAgICAg
ICAgY2FzZSBvcF90b19vYmplY3Q6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAg
ICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRl
bnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmRdOworICAgICAgICAg
ICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwg
YWRkVG9HcmFwaChUb09iamVjdCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBPcEluZm8ocHJl
ZGljdGlvbiksIHZhbHVlKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF90b19vYmplY3Qp
OworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9pbjogewogICAgICAgICAgICAgQXJyYXlN
b2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rpb25bT1BDT0RFX0xF
TkdUSChvcF9pbikgLSAxXS51LmFycmF5UHJvZmlsZSk7CiAgICAgICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGEwMDQ5NDk2YTE4NWU3
NTRhM2U0NzBiZWFhNzRjYmU1ZTNjMmM0MTAuLmQ1NjcwOWI3MTliYWYzZGNlOWQyZmMwZWUyZTlh
Yjg4NzE4ZDdjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHAKQEAgLTIyOCw2ICsyMjgsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxl
dmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAg
IGNhc2Ugb3BfdHlwZW9mOgogICAgIGNhc2Ugb3BfdG9fbnVtYmVyOgogICAgIGNhc2Ugb3BfdG9f
c3RyaW5nOgorICAgIGNhc2Ugb3BfdG9fb2JqZWN0OgogICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToK
ICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3BfaW46CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDAwNjQxZGRmNjBjNjBiY2RjYTk1NTRj
OThjODgwZjBiZDQ4Mjc1YWMuLjI3N2QwMThjMWNmMGFhNzhhM2FmYThkYWQ4NTYyNmM3YjBjMDM1
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC01MjIs
NyArNTIyLDE2IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNv
bnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHdyaXRlKEhlYXBP
YmplY3RDb3VudCk7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgVG9PYmplY3Q6CisgICAg
ICAgIHJlYWQoV29ybGQpOworICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6CisgICAgICAgIHJlYWQoSGVhcE9iamVj
dENvdW50KTsKKyAgICAgICAgd3JpdGUoSGVhcE9iamVjdENvdW50KTsKKyAgICAgICAgcmV0dXJu
OworCiAgICAgY2FzZSBUb1RoaXM6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgICAgICByZWFk
KE1pc2NGaWVsZHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4
IGIzYzYyM2ZkMDIzMDQ1MGQ2NTg3ZjU3ZjdhNzFlNDg2Y2FkOTVjZWQuLjM2NjcwNDBiMTAwMmYz
MzkwYTU3MzdkNGE0N2NkYjZjMzZjNDc2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAKQEAgLTMwMSw2ICszMDEsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgY2FzZSBD
cmVhdGVDbG9uZWRBcmd1bWVudHM6CiAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6Cisg
ICAgY2FzZSBUb09iamVjdDoKICAgICBjYXNlIFRvVGhpczoKICAgICBjYXNlIENyZWF0ZVRoaXM6
CiAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGRhMTBjZjA5ZTdjYzJmZWQwOTIzMzE0NjBh
MzY0ODExNmNmYTcwNzcuLjY2OWNjZjZhYTgwNzIyZjMwYTU3NmM5NTZlYjVjZWFmM2E0MWM5OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTI5
MywxNCArMTI5MywxMyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3Ry
dWN0b3I6IHsKLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRl
T2JqZWN0KCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE9iamVjdFVzZT4obm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgIGNhc2UgVG9PYmplY3Q6
IHsKKyAgICAgICAgICAgIGZpeHVwVG9PYmplY3Qobm9kZSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQogCi0gICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6IHsKKyAgICAgICAgICAg
IGZpeHVwQ2FsbE9iamVjdENvbnN0cnVjdG9yKG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIApAQCAtMjUwMSw2ICsyNTAwLDcyIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRKUyk7CiAgICAgfQorCisgICAgdm9p
ZCBmaXh1cFRvT2JqZWN0KE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7CisgICAgICAgICAgICBmaXhFZGdlPE9i
amVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRl
bnRpdHkoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRv
T2JqZWN0KE51bGwvVW5kZWZpbmVkKSBjYW4gdGhyb3cgYW4gZXJyb3IuIFdlIGNhbiBlbWl0IGZp
bHRlcnMgdG8gY29udmVydCBUb09iamVjdCB0byBDYWxsT2JqZWN0Q29uc3RydWN0b3IuCisKKyAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkgeworICAgICAgICAgICAgaW5zZXJ0Q2hlY2s8U3Ry
aW5nVXNlPihub2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAgICAgICAgZml4RWRnZTxLbm93
blN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbm9kZS0+Y29udmVydFRv
TmV3U3RyaW5nT2JqZWN0KG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5z
dHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkg
eworICAgICAgICAgICAgaW5zZXJ0Q2hlY2s8U3ltYm9sVXNlPihub2RlLT5jaGlsZDEoKS5ub2Rl
KCkpOworICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ2FsbE9iamVjdENvbnN0cnVjdG9yKG1f
Z3JhcGguZnJlZXplKGdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIo
KSkgeworICAgICAgICAgICAgaW5zZXJ0Q2hlY2s8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKS5u
b2RlKCkpOworICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvQ2FsbE9iamVjdENvbnN0cnVjdG9y
KG1fZ3JhcGguZnJlZXplKGdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCb29s
ZWFuKCkpIHsKKyAgICAgICAgICAgIGluc2VydENoZWNrPEJvb2xlYW5Vc2U+KG5vZGUtPmNoaWxk
MSgpLm5vZGUoKSk7CisgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9DYWxsT2JqZWN0Q29uc3Ry
dWN0b3IobV9ncmFwaC5mcmVlemUoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICB9CisKKyAgICB2b2lkIGZpeHVwQ2FsbE9iamVjdENvbnN0cnVjdG9yKE5vZGUqIG5v
ZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU9i
amVjdCgpKSB7CisgICAgICAgICAgICBmaXhFZGdlPE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3Bl
Y3VsYXRlU3RyaW5nKCkpIHsKKyAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KG5vZGUtPmNlbGxPcGVyYW5kKCktPmNlbGwoKSk7CisgICAgICAg
ICAgICBpbnNlcnRDaGVjazxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAg
ICAgICAgICBmaXhFZGdlPEtub3duU3RyaW5nVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICBub2RlLT5jb252ZXJ0VG9OZXdTdHJpbmdPYmplY3QobV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZShnbG9iYWxPYmplY3QtPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBXaGlsZSBUb09iamVjdChOdWxsL1Vu
ZGVmaW5lZCkgdGhyb3dzIGFuIGVycm9yLCBDYWxsT2JqZWN0Q29uc3RydWN0b3IoTnVsbC9VbmRl
ZmluZWQpIGdlbmVyYXRlcyBhIG5ldyBlbXB0eSBvYmplY3QuCisgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT3RoZXIoKSkgeworICAgICAgICAgICAgaW5zZXJ0Q2hl
Y2s8T3RoZXJVc2U+KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICBub2RlLT5j
b252ZXJ0VG9OZXdPYmplY3QobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihub2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpLT5vYmplY3RTdHJ1Y3R1cmVG
b3JPYmplY3RDb25zdHJ1Y3RvcigpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICB9CiAg
ICAgCiAgICAgdm9pZCBmaXh1cFRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3IoTm9kZSog
bm9kZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGE2OTIxNDI4
ZDE1YTNlMDllYzIwNGE4YTcyZGI5NjFmNjRmM2M1ZmUuLmQ2YTQ5NzczNjlkYTEwNzY3MjUzNTg4
ODIyOTA0OGZhYjUxYWNkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC03
MTgsNiArNzE4LDMwIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgc2V0T3BBbmREZWZhdWx0Rmxh
Z3MoR2V0R2xvYmFsVGhpcyk7CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMShFZGdlKCkpOwog
ICAgIH0KKworICAgIHZvaWQgY29udmVydFRvQ2FsbE9iamVjdENvbnN0cnVjdG9yKEZyb3plblZh
bHVlKiBnbG9iYWxPYmplY3QpCisgICAgeworICAgICAgICBBU1NFUlQobV9vcCA9PSBUb09iamVj
dCk7CisgICAgICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKENhbGxPYmplY3RDb25zdHJ1Y3Rvcik7
CisgICAgICAgIG1fb3BJbmZvID0gZ2xvYmFsT2JqZWN0OworICAgIH0KKworICAgIHZvaWQgY29u
dmVydFRvTmV3U3RyaW5nT2JqZWN0KFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gQ2FsbE9iamVjdENvbnN0cnVjdG9yIHx8IG1fb3Ag
PT0gVG9PYmplY3QpOworICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhOZXdTdHJpbmdPYmpl
Y3QpOworICAgICAgICBtX29wSW5mbyA9IHN0cnVjdHVyZTsKKyAgICAgICAgbV9vcEluZm8yID0g
T3BJbmZvV3JhcHBlcigpOworICAgIH0KKworICAgIHZvaWQgY29udmVydFRvTmV3T2JqZWN0KFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fb3Ag
PT0gQ2FsbE9iamVjdENvbnN0cnVjdG9yKTsKKyAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3Mo
TmV3T2JqZWN0KTsKKyAgICAgICAgY2hpbGRyZW4ucmVzZXQoKTsKKyAgICAgICAgbV9vcEluZm8g
PSBzdHJ1Y3R1cmU7CisgICAgICAgIG1fb3BJbmZvMiA9IE9wSW5mb1dyYXBwZXIoKTsKKyAgICB9
CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9EaXJlY3RDYWxsKEZyb3plblZhbHVlKik7CiAKQEAg
LTEwMDMsNiArMTAyNyw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBQdXREeW5hbWlj
VmFyOgogICAgICAgICBjYXNlIFJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWw6
CiAgICAgICAgIGNhc2UgUmVzb2x2ZVNjb3BlOgorICAgICAgICBjYXNlIFRvT2JqZWN0OgogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xNTc4LDYgKzE2MDMsOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNh
c2UgU3RyaW5nUmVwbGFjZToKICAgICAgICAgY2FzZSBTdHJpbmdSZXBsYWNlUmVnRXhwOgogICAg
ICAgICBjYXNlIFRvTnVtYmVyOgorICAgICAgICBjYXNlIFRvT2JqZWN0OgorICAgICAgICBjYXNl
IENhbGxPYmplY3RDb25zdHJ1Y3RvcjoKICAgICAgICAgY2FzZSBMb2FkS2V5RnJvbU1hcEJ1Y2tl
dDoKICAgICAgICAgY2FzZSBMb2FkVmFsdWVGcm9tTWFwQnVja2V0OgogICAgICAgICBjYXNlIENh
bGxET01HZXR0ZXI6CkBAIC0xNjQzLDYgKzE2NzAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAg
IGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIE5ld1JlZ2V4
cDoKICAgICAgICAgY2FzZSBDb21wYXJlRXFQdHI6CisgICAgICAgIGNhc2UgQ2FsbE9iamVjdENv
bnN0cnVjdG9yOgogICAgICAgICBjYXNlIERpcmVjdENhbGw6CiAgICAgICAgIGNhc2UgRGlyZWN0
VGFpbENhbGw6CiAgICAgICAgIGNhc2UgRGlyZWN0Q29uc3RydWN0OgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDBkNjNlOWY3OTQwYWJkNTBiOWM4MTY4YTI3NGY3
YWEyNTg4Yzc2OTIuLjhhYzRmOGEyODdlM2Q2ZjVjMTAzMTNkZjkxMWFhMmFjZTA5Njc1OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTM1Niw2ICszNTYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oVG9QcmltaXRpdmUs
IE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUb1N0cmluZywg
Tm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRvTnVtYmVyLCBO
b2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oVG9PYmplY3QsIE5v
ZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDYWxsT2JqZWN0Q29u
c3RydWN0b3IsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKENhbGxTdHJpbmdDb25zdHJ1Y3Rv
ciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE51bWJlclRv
U3RyaW5nV2l0aFJhZGl4LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAzYTBkMTk1ZjA2
YTY1MjQ3NDkxYjIyY2Q1YzIxNGUyODY1MGViZTEzLi41Y2IyNDAyZTJkODE1ZjQwYzBkZWMwZWI0
MTEwYWVjMzgwMWQ5MTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKQEAgLTI2Myw3ICsyNjMsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ3JlYXRlVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvcgogICAg
IHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKIH0KIAotSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRhcmdldCkKK0pT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVGFyZ2V0KQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwpAQCAtMjc2LDYgKzI3NiwyNSBAQCBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdAogICAgIHJldHVybiB2YWx1ZS50b09iamVjdChleGVjLCBnbG9i
YWxPYmplY3QpOwogfQogCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9PYmplY3Qo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVGFyZ2V0LCBVbmlxdWVkU3RyaW5nSW1wbCogZXJyb3JNZXNzYWdlKQorewor
ICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7
CisKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRUYXJnZXQpOwor
ICAgIEFTU0VSVCghdmFsdWUuaXNPYmplY3QoKSk7CisKKyAgICBpZiAoVU5MSUtFTFkodmFsdWUu
aXNVbmRlZmluZWRPck51bGwoKSkpIHsKKyAgICAgICAgaWYgKGVycm9yTWVzc2FnZS0+bGVuZ3Ro
KCkpIHsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIGVycm9yTWVz
c2FnZSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHJldHVybiB2YWx1ZS50b09iamVjdChleGVjLCBnbG9iYWxPYmplY3QpOworfQorCiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0QW5kKEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MikKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNzAyNTk5YmUzZjRkYTQxMjQzNjQxMmZiNDkyYTBjOTVh
NzRiODAyNi4uNmU2MmFiMzc5YzRlNjFiNjFiYzlmMjc4OGUyNjZhMDk5ODZlYmNmYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTQxLDcgKzQxLDggQEAg
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZShFeGVjU3Rh
dGUqLCBpbnQzMl90KSAgV1RGX0lOVEUKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlVW50eXBlZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSkgIFdURl9JTlRFUk5BTDsKIAogLy8gVGhlc2Ugcm91dGluZXMgcHJvdmlkZSBjYWxsYmFja3Mg
b3V0IHRvIEMrKyBpbXBsZW1lbnRhdGlvbnMgb2Ygb3BlcmF0aW9ucyB0b28gY29tcGxleCB0byBK
SVQuCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0Q29uc3RydWN0b3IoRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGFyZ2V0KSBX
VEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbE9iamVjdENv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFRhcmdldCkgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blRvT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFRhcmdldCwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpcyhFeGVjU3RhdGUqLCBKU09iamVjdCogY29u
c3RydWN0b3IsIGludDMyX3QgaW5saW5lQ2FwYWNpdHkpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVG9UaGlzU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcDEpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNjIyMGRl
MWQxODZjZmU5MzMyMjE4ZjJlY2MyNzcyMGNjZDU3YWY2MS4uNDRhY2Y4Zjc5YmY2YjcxYjcyZmRi
NGMyMTNiYTQ3ZDZjODQ4MGU5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTcyMCw2ICs3
MjAsOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgIGNhc2UgTG9hZEtleUZyb21NYXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgTG9hZFZh
bHVlRnJvbU1hcEJ1Y2tldDoKICAgICAgICAgY2FzZSBUb051bWJlcjoKKyAgICAgICAgY2FzZSBU
b09iamVjdDoKKyAgICAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6CiAgICAgICAgIGNh
c2UgR2V0QXJndW1lbnQ6CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKICAgICAgICAgY2Fz
ZSBHZXREeW5hbWljVmFyOgpAQCAtODU2LDEwICs4NTgsNiBAQCBjbGFzcyBQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgQ2hlY2tTdWJDbGFz
czoKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgQ2FsbE9iamVjdENvbnN0cnVj
dG9yOiB7Ci0gICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3QpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAgIGNh
c2UgR2V0R2xvYmFsT2JqZWN0OiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNPYmpl
Y3RPdGhlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CmluZGV4IGMwNGI3MDI0ZTIxOWM5ZDI4MmEwMWQ1YzM5OWMxN2QxZDVhMDVmNjEuLjA5MzU0ZjI5
MjQ4Y2U1NTM2MWQ0ZGYxZTQyOWNhYjYzZGM0Y2VkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0zMTQsNiArMzE0LDcgQEAgYm9vbCBzYWZl
VG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlKQogICAgIGNhc2UgVG9QcmltaXRpdmU6CiAgICAgY2FzZSBUb1N0cmluZzoKICAgICBjYXNl
IFRvTnVtYmVyOgorICAgIGNhc2UgVG9PYmplY3Q6CiAgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dp
dGhSYWRpeDoKICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudDoK
ICAgICBjYXNlIFNldEZ1bmN0aW9uTmFtZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMTQ2ZTczMjI4YjE0YTk0MjA1M2VhNjEyMzAy
ZmI0ZmFiOWE1MjY1MS4uZjY3MTNmOTgwNmMwMDM1YWQwZDMwNzNiN2VkZWNjNzlkZDIzNjQ3NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
QEAgLTQwMTcsOSArNDAxNyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJc1R5cGVk
QXJyYXlWaWV3KE5vZGUqIG5vZGUpCiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxPYmplY3RDb25z
dHJ1Y3RvcihOb2RlKiBub2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvT2JqZWN0
T3JDYWxsT2JqZWN0Q29uc3RydWN0b3IoTm9kZSogbm9kZSkKIHsKLSAgICBSRUxFQVNFX0FTU0VS
VChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgSlNWYWx1ZU9w
ZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgdmFsdWUpOwpAQCAtNDAzNSw3ICs0
MDM0LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsT2JqZWN0Q29uc3RydWN0
b3IoTm9kZSogbm9kZSkKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90T2Jq
ZWN0KHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpKTsKICAgICBtX2ppdC5tb3ZlKHZhbHVlUmVncy5w
YXlsb2FkR1BSKCksIHJlc3VsdEdQUik7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25PYmplY3RDb25zdHJ1Y3RvciwgcmVz
dWx0R1BSLCBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgdmFs
dWVSZWdzKSk7CisgICAgaWYgKG5vZGUtPm9wKCkgPT0gVG9PYmplY3QpCisgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblRv
T2JqZWN0LCByZXN1bHRHUFIsIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyksIHZhbHVlUmVncywgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVy
TnVtYmVyKCkpKSk7CisgICAgZWxzZQorICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25DYWxsT2JqZWN0Q29uc3RydWN0b3Is
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSwgdmFsdWVSZWdz
KSk7CisKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBiMGUwM2IyN2E4MDAy
ZDE3MWZjYTNiZjA4MDcxYzE1Y2Y4YTk4YzQxLi40ZGRkYjE0YWExMzcxNjg0ZDI5NDE3ZDM2YjIw
NWQ5Zjc1ZDJlMDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCkBAIC0xMTg0LDYgKzExODQsMTIgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewog
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQogCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlv
bl9FR0Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBUcnVzdGVkSW1tUHRyIGdsb2JhbE9iamVj
dCwgR1BSUmVnIGFyZzIpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoZ2xvYmFsT2JqZWN0LCBhcmcyKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0KKwogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUdDIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgR1BSUmVnIGFyZzIpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgYXJnMik7CkBAIC0xNjc3
LDE3ICsxNjgzLDMzIEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAotICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUdKIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgR1BSUmVnIGFyZzEp
CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FR0og
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBUcnVzdGVkSW1tUHRyIGdsb2JhbE9iamVjdCwgR1BS
UmVnIGFyZzEpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0
KSwgYXJnMSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShnbG9i
YWxPYmplY3QsIGFyZzEpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CiAgICAgfQogCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihDX0pJVE9wZXJhdGlvbl9FR0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBUcnVzdGVk
SW1tUHRyIGdsb2JhbE9iamVjdCwgSlNWYWx1ZVJlZ3MgYXJnMSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LCBnbG9iYWxPYmplY3QsIGFyZzEu
Z3ByKCkpOworICAgIH0KKworICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRUdKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgR1BSUmVnIGFyZzEpCisgICAgeworICAgICAgICByZXR1cm4gY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9q
aXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgYXJnMSk7CisgICAgfQorCiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FR0ogb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlUmVncyBhcmcx
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHQs
IGdsb2JhbE9iamVjdCwgYXJnMS5ncHIoKSk7CiAgICAgfQogCisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FR0pJIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZVJlZ3MgYXJnMSwgVW5p
cXVlZFN0cmluZ0ltcGwqIGFyZzIpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwg
Z2xvYmFsT2JqZWN0KSwgYXJnMS5ncHIoKSwgVHJ1c3RlZEltbVB0cihhcmcyKSk7CisgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CisK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CkBAIC0yMzMzLDEyICsyMzU1LDI0
IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUdKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgVHJ1c3RlZEltbVB0ciBnbG9iYWxPYmplY3QsIEpTVmFsdWVSZWdzIGFyZzEpCisgICAgewor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoZ2xvYmFsT2JqZWN0LCBh
cmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CisKICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VHSiBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWVSZWdzIGFyZzEp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgYXJnMS5w
YXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FR0pJIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZVJlZ3MgYXJnMSwgVW5p
cXVlZFN0cmluZ0ltcGwqIGFyZzIpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwg
Z2xvYmFsT2JqZWN0KSwgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCksIFRydXN0ZWRJ
bW1QdHIoYXJnMikpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgfQorCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihDX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTVmFsdWVSZWdz
IGFyZzEpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
RUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCkpOwpA
QCAtMjk3MCw3ICszMDA0LDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29t
cGlsZUxhenlKU0NvbnN0YW50KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVNYXRlcmlhbGl6ZU5l
d09iamVjdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0
KE5vZGUqKTsKLSAgICB2b2lkIGNvbXBpbGVDYWxsT2JqZWN0Q29uc3RydWN0b3IoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZVRvT2JqZWN0T3JDYWxsT2JqZWN0Q29uc3RydWN0b3IoTm9kZSopOwog
ICAgIHZvaWQgY29tcGlsZVJlc29sdmVTY29wZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUmVz
b2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbChOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlR2V0RHluYW1pY1ZhcihOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAyNDBhNTcyMTFiMmUzNzM4MDhi
NDA5NjYwMTRjNmFhYjNhODhjMTM5Li4yOTBkYjZjMWMyZWViYjk4YWFiMzBjYWJmNWRjNDc0MmI3
OGY2NGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKQEAgLTQwMjMsOCArNDAyMyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBUb09iamVjdDoKICAgICBjYXNlIENhbGxPYmplY3RDb25zdHJ1Y3RvcjogewotICAgICAgICBj
b21waWxlQ2FsbE9iamVjdENvbnN0cnVjdG9yKG5vZGUpOworICAgICAgICBjb21waWxlVG9PYmpl
Y3RPckNhbGxPYmplY3RDb25zdHJ1Y3Rvcihub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCmluZGV4IGU0ZmE4NmEyOTAwNzFkNjQ5MWM2NWFjYzI3Y2E5OGE2MWU1OWRiN2Uu
LmFjZTcxMTkzOTEyZTE3YTRiYTIzNzRkZDEyMWRiN2Y2MjU5Yjc4M2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNDIzNyw4
ICs0MjM3LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFRvT2JqZWN0OgogICAgIGNhc2UgQ2FsbE9i
amVjdENvbnN0cnVjdG9yOiB7Ci0gICAgICAgIGNvbXBpbGVDYWxsT2JqZWN0Q29uc3RydWN0b3Io
bm9kZSk7CisgICAgICAgIGNvbXBpbGVUb09iamVjdE9yQ2FsbE9iamVjdENvbnN0cnVjdG9yKG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3ZTYwOWNjZDJkM2ViZmIwM2EyNWFkMDFmZDli
MGI2YjhiMTI2MDBjLi5jNGQ2NjQxOTAyYTIzMWY4ZTJiMmQ0OTAxNWNmZWFmNDE2NGRlYTU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0x
NzksNiArMTc5LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczoKICAgICBjYXNlIFRv
TnVtYmVyOgogICAgIGNhc2UgVG9TdHJpbmc6CisgICAgY2FzZSBUb09iamVjdDoKICAgICBjYXNl
IENhbGxPYmplY3RDb25zdHJ1Y3RvcjoKICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoK
ICAgICBjYXNlIE1ha2VSb3BlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCmluZGV4IGQ3ZWM4MjAxOTJjZmU4MTlmZmU1YmU4YmVjZjA2NWY2Mjg4ZGMy
YjQuLjdhZmFmMmJkOTJhMzJlMWRhOTEwZWVmZjZhZDUzNzQzNDczNjgzMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTU1NSw4ICs1NTUs
OSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIERGRzo6Q2hlY2s6CiAgICAg
ICAgICAgICBjb21waWxlTm9PcCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
VG9PYmplY3Q6CiAgICAgICAgIGNhc2UgQ2FsbE9iamVjdENvbnN0cnVjdG9yOgotICAgICAgICAg
ICAgY29tcGlsZUNhbGxPYmplY3RDb25zdHJ1Y3RvcigpOworICAgICAgICAgICAgY29tcGlsZVRv
T2JqZWN0T3JDYWxsT2JqZWN0Q29uc3RydWN0b3IoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFRvVGhpczoKICAgICAgICAgICAgIGNvbXBpbGVUb1RoaXMoKTsKQEAgLTE2NTUs
OSArMTY1Niw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIERGR19OT0RFX0RPX1RP
X0NISUxEUkVOKG1fZ3JhcGgsIG1fbm9kZSwgc3BlY3VsYXRlKTsKICAgICB9CiAKLSAgICB2b2lk
IGNvbXBpbGVDYWxsT2JqZWN0Q29uc3RydWN0b3IoKQorICAgIHZvaWQgY29tcGlsZVRvT2JqZWN0
T3JDYWxsT2JqZWN0Q29uc3RydWN0b3IoKQogICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MSgpKTsKIAogICAgICAgICBMQmFzaWNCbG9jayBpc0NlbGxDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKQEAgLTE2NzEsNyArMTY3MSwxMyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBt
X291dC5icmFuY2goaXNPYmplY3QodmFsdWUpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJhcmVs
eShzbG93Q2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51
YXRpb24pOwotICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9y
KHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdENvbnN0cnVjdG9y
KSwgbV9jYWxsRnJhbWUsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIHZhbHVlKSk7CisKKyAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdDsKKyAgICAgICAgaWYgKG1fbm9kZS0+b3Ao
KSA9PSBUb09iamVjdCkgeworICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAg
c2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25Ub09iamVjdCksIG1fY2FsbEZyYW1lLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qp
LCB2YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIobV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+
aWRlbnRpZmllck51bWJlcigpXSkpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBzbG93
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkNhbGxPYmplY3RDb25zdHJ1Y3RvciksIG1fY2FsbEZyYW1lLCBmcm96ZW5Qb2ludGVyKG1f
bm9kZS0+Y2VsbE9wZXJhbmQoKSksIHZhbHVlKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBiOGYxYWI2YmViZmFjYTI4NzE4ZjFm
ODUyYzg2MGQzN2JlYjYwM2MzLi45N2E3YzliN2YxMDZlNWFiMDQ4YjI2MWMzYzgwMDYzZTk0NmM2
MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0zOTcsNiArMzk3LDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdGhy
b3cpCiAgICAgICAgIERFRklORV9PUChvcF90b19udW1iZXIpCiAgICAgICAgIERFRklORV9PUChv
cF90b19zdHJpbmcpCisgICAgICAgIERFRklORV9PUChvcF90b19vYmplY3QpCiAgICAgICAgIERF
RklORV9PUChvcF90b19wcmltaXRpdmUpCiAKICAgICAgICAgREVGSU5FX09QKG9wX3Jlc29sdmVf
c2NvcGUpCkBAIC01MzIsNiArNTMzLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nh
c2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3N1YikKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX3RvX251bWJlcikKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X3RvX3N0cmluZykKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3RvX29iamVjdCkKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3RvX3ByaW1pdGl2ZSkKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX2hhc19pbmRleGVkX3Byb3BlcnR5KQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CmluZGV4IGFlMzNiMGYxYjM2ZDY3OTdhMTk3YzAyYjc4YWZiYzg1Y2Q0ZTEyMTYuLjZhYTQ4NzRi
MjFkYmVkNGJmZTQ2MDc4ZmM0OGU2M2UwMTAwMjdiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aApAQCAtNTc1LDYgKzU3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRf
b3BfdGhyb3coSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RvX251bWJlcihJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9fc3RyaW5nKEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF90b19vYmplY3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfdW5leHBlY3RlZF9sb2FkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF91bnNpZ25lZChJbnN0cnVjdGlvbiopOwpAQCAtNjQxLDYgKzY0Miw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX3N1YihJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90
b19udW1iZXIoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdG9fc3RyaW5nKEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX3Rv
X29iamVjdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
ICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF90b19wcmltaXRpdmUoSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
dW5zaWduZWQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7
CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfdXJzaGlmdChJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCmluZGV4IDgxNjlhNmNhZGUxMzRhOTYxMzJjZTA1Y2NiM2ZjNjBkNGNjZThlYzEu
LmYzZGNiNTE4M2QxNWY5ZWIxYTBkZWFjMTI1NWRiMzJkYTlmMmMyODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtNTE5LDYgKzUxOSwyMCBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF90b19zdHJpbmcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
OwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF90b19vYmplY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0VlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgaW50IHNyY1ZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjVlJlZywgcmVnVDApOworCisgICAg
YWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCkpOworICAgIGFkZFNsb3dDYXNl
KGJyYW5jaDgoQmVsb3csIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlwZSkpKTsKKworICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUoKTsKKyAgICBpZiAoc3JjVlJlZyAhPSBkc3RWUmVnKQorICAgICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdFZSZWcpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIHJlc3RvcmVDYWxsZWVTYXZlc0Zy
b21FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0oKS0+dG9wRW50cnlGcmFtZSk7CkBAIC05
MDAsNiArOTE0LDE0IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF90b19zdHJpbmcoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX29iamVjdChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBKSVRTbG93UGF0aENh
bGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3RvX29i
amVjdCk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwogI2VuZGlmIC8vIFVTRShKU1ZB
TFVFNjQpCiAKIHZvaWQgSklUOjplbWl0X29wX2xvb3BfaGludChJbnN0cnVjdGlvbiopCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggZWU4MGYw
MzcxNGJkYTJhZDA0OGI3N2U3MjE5ZmRlZDkyYjA5NzIyNy4uMTgwYWE0YTM1ZTAwZWZiOGRlNDFj
MGQxMWUwYzExOWNjMThlZjYzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcApAQCAtNzIzLDYgKzcyMywyOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfdG9fc3RyaW5nKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3Rv
X29iamVjdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCBkc3Qg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBzcmMgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworCisgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVn
VDApOworCisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2g4KEJlbG93
LCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKE9iamVjdFR5cGUpKSk7CisKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCk7CisgICAg
aWYgKHNyYyAhPSBkc3QpCisgICAgICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7Cit9
CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF90b19vYmplY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAg
ICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90b19vYmplY3QpOworICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgcmVzdG9yZUNhbGxlZVNhdmVzRnJv
bUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bSgpLT50b3BFbnRyeUZyYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDA2NTUwMDRkZDM2
ZTdjMDY2ZTViZmEwNWRiYzMyMDIwMTVhMmM1ZGMuLjczNTk4NTY1OTA0Yzk4OWE0MjNhYjdkZjJi
NDY1YjZjNzBkOGI0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcApAQCAtMjEzNSwxNiArMjEzNSw2IEBAIENhbGxGcmFtZSogSklUX09QRVJBVElPTiBv
cGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZShFeGVjU3RhdGUqIGV4ZWMsIENhbGxGcmFtZSoKICAg
ICByZXR1cm4gbmV3Q2FsbEZyYW1lOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRvT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdmFsdWUp
Ci17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgSlNPYmplY3QqIG9iaiA9IEpTVmFsdWU6OmRlY29kZSh2
YWx1ZSkudG9PYmplY3QoZXhlYyk7Ci0gICAgaWYgKCFvYmopCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iaik7
Ci19Ci0KIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoQ2hhcldpdGhVbmtub3du
S2V5VHlwZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRLZXksIHNpemVf
dCB0YWJsZUluZGV4KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IGIwNGJlMTUyZWQ0M2M0MWY3YjIzMzQ4
MDEyN2ZhN2U0N2YxZGM5YzUuLjI5NDQxNDc2MDdhNzE4ZjkwN2M2MjZjOWMxNmZkOTBjYzgxMjMx
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xODgs
NiArMTg4LDcgQEAgdHlwZWRlZiBKU0NlbGwqIChKSVRfT1BFUkFUSU9OICpDX0pJVE9wZXJhdGlv
bl9FQ1pDKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQzMl8KIHR5cGVkZWYgSlNDZWxsKiAoSklU
X09QRVJBVElPTiAqQ19KSVRPcGVyYXRpb25fRUNDKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBKU0Nl
bGwqKTsKIHR5cGVkZWYgSlNDZWxsKiAoSklUX09QRVJBVElPTiAqQ19KSVRPcGVyYXRpb25fRUdD
KShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCopOwogdHlwZWRlZiBKU0NlbGwq
IChKSVRfT1BFUkFUSU9OICpDX0pJVE9wZXJhdGlvbl9FR0opKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpOwordHlwZWRlZiBKU0NlbGwqIChKSVRfT1BFUkFUSU9O
ICpDX0pJVE9wZXJhdGlvbl9FR0pJKShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiBKU0NlbGwqIChKSVRfT1BF
UkFUSU9OICpDX0pJVE9wZXJhdGlvbl9FSWNmKShFeGVjU3RhdGUqLCBJbmxpbmVDYWxsRnJhbWUq
KTsKIHR5cGVkZWYgSlNDZWxsKiAoSklUX09QRVJBVElPTiAqQ19KSVRPcGVyYXRpb25fRUopKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgSlNDZWxsKiAoSklUX09QRVJBVElP
TiAqQ19KSVRPcGVyYXRpb25fRUpzYykoRXhlY1N0YXRlKiwgSlNTY29wZSopOwpAQCAtNDM4LDcg
KzQzOSw2IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25TaXplRnJhbWVGb3JGb3J3
YXJkQXJndW1lbnRzKEV4ZWNTdGF0ZSosIEVuY29kZWRKCiBpbnQzMl90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBh
cmd1bWVudHMsIGludDMyX3QgbnVtVXNlZFN0YWNrU2xvdHMsIGludDMyX3QgZmlyc3RWYXJBcmdP
ZmZzZXQpIFdURl9JTlRFUk5BTDsKIENhbGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRpb25T
ZXR1cEZvcndhcmRBcmd1bWVudHNGcmFtZShFeGVjU3RhdGUqLCBDYWxsRnJhbWUqLCBFbmNvZGVk
SlNWYWx1ZSwgaW50MzJfdCwgaW50MzJfdCBsZW5ndGgpIFdURl9JTlRFUk5BTDsKIENhbGxGcmFt
ZSogSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZShFeGVjU3RhdGUqLCBD
YWxsRnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSBhcmd1bWVudHMsIGludDMyX3QgZmlyc3RWYXJBcmdP
ZmZzZXQsIGludDMyX3QgbGVuZ3RoKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRvT2JqZWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBX
VEZfSU5URVJOQUw7CiAKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3dpdGNoQ2hhcldp
dGhVbmtub3duS2V5VHlwZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBrZXksIHNpemVfdCB0
YWJsZUluZGV4KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3
aXRjaEltbVdpdGhVbmtub3duS2V5VHlwZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBrZXks
IHNpemVfdCB0YWJsZUluZGV4KSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGIx
ZWMxZGUwOTk3YmQyOTE3YjcwZjMwOGE5ODA1YzU2ZmIzMGUzYjguLmRmZDE3YjU2NTJlNGNiMDEy
MTU2NWQyZmE0YTFjY2YzOTQ0ZjM4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC05NDQsNiArOTQ0
LDIzIEBAIF9sbGludF9vcF90b19zdHJpbmc6CiAgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3Rv
X3N0cmluZ19sZW5ndGgpCiAKIAorX2xsaW50X29wX3RvX29iamVjdDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDIsIHQzKQorICAgIGJpbmVxIHQyLCBDZWxsVGFnLCAu
b3BUb09iamVjdFNsb3cKKyAgICBiYmIgSlNDZWxsOjptX3R5cGVbdDNdLCBPYmplY3RUeXBlLCAu
b3BUb09iamVjdFNsb3cKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAg
IHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHZhbHVlUHJvZmlsZSh0
MiwgdDMsIDE2LCB0MSkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfdG9fb2JqZWN0X2xlbmd0
aCkKKworLm9wVG9PYmplY3RTbG93OgorICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRo
X3RvX29iamVjdCkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfdG9fb2JqZWN0X2xlbmd0aCkK
KworCiBfbGxpbnRfb3BfbmVnYXRlOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaSA4
W1BDXSwgdDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggYTVhYTdmNzk5YzI5Y2NjNmU3NDhmMjhmNGY3ZmIxYzU5
MzBmYzM2Mi4uYzU3ZWJjM2NmMWM0ZTM2Yjk2MDM4ODg3NTcwMDJmYzAyMGUyNDk2NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KQEAgLTg0Nyw2ICs4NDcsMjIgQEAgX2xsaW50X29wX3RvX3N0cmluZzoKICAgICBkaXNw
YXRjaChjb25zdGV4cHIgb3BfdG9fc3RyaW5nX2xlbmd0aCkKIAogCitfbGxpbnRfb3BfdG9fb2Jq
ZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwg
dDApCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDAsIHQyKQorICAgIGJ0cW56IHQyLCB0YWdNYXNrLCAub3BUb09iamVjdFNsb3cK
KyAgICBiYmIgSlNDZWxsOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BUb09iamVjdFNsb3cK
KyAgICBzdG9yZXEgdDIsIFtjZnIsIHQxLCA4XQorICAgIHZhbHVlUHJvZmlsZSh0MiwgNCwgdDAp
CisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3RvX29iamVjdF9sZW5ndGgpCisKKy5vcFRvT2Jq
ZWN0U2xvdzoKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF90b19vYmplY3QpCisg
ICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3RvX29iamVjdF9sZW5ndGgpCisKKwogX2xsaW50X29w
X25lZ2F0ZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDIsIHQwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKaW5kZXggYjEwMTgyYmFiOGI5M2I2ZWZkOTU4NDY2YmEwNWUyNDM4ZDZjZjc2Yy4u
M2M4ZDJkZDM4YmYzOGVlOTY1MzdmYmU5NjRhMGZhZThlYzBiZTdlMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC00MzUsNiAr
NDM1LDE5IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b19udW1iZXIpCiAgICAgUkVUVVJO
X1BST0ZJTEVEKG9wX3RvX251bWJlciwgcmVzdWx0KTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3RvX29iamVjdCkKK3sKKyAgICBCRUdJTigpOworICAgIEpTVmFsdWUgYXJndW1lbnQg
PSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAoVU5MSUtFTFkoYXJndW1lbnQuaXNVbmRlZmlu
ZWRPck51bGwoKSkpIHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5j
b2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgICAgICBpZiAoIWlk
ZW50LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCBp
ZGVudC5pbXBsKCkpKTsKKyAgICB9CisgICAgSlNPYmplY3QqIHJlc3VsdCA9IGFyZ3VtZW50LnRv
T2JqZWN0KGV4ZWMpOworICAgIFJFVFVSTl9QUk9GSUxFRChvcF90b19vYmplY3QsIHJlc3VsdCk7
Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hZGQpCiB7CiAgICAgQkVHSU4oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXgg
OThiNjEyMmUwZWE4ODhiODJkYTI3ZTAxNjQxMjBlMTZmMTkyYmZjNy4uM2Q3MTBhZjBlNTU5NWJh
MTk4NWIxMDNhNzM3M2M2MzUwZDc0N2Y3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTIzNCw2ICsyMzQsNyBAQCBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2luYyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2RlYyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX251bWJlcik7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX3N0cmluZyk7CitTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3RvX29iamVjdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX25lZ2F0ZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2FkZCk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX211bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhLmpzCmluZGV4
IGQxNDE3ZDc4Yjk3YzdkYTU3MTYwMDAzNGIzYjU1M2I4OTkyOTgxOTYuLjZlZDRmMDJlYTAyNWJj
ZDJjZGMxMDNjNGZmYzhiYmVhZjY3NWQwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhLmpzCkBAIC0zNyw3ICsz
Nyw3IEBAIGZ1bmN0aW9uIGdldFVzZXJNZWRpYShvcHRpb25zLCBzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spCiAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAzKQogICAgICAgICBAdGhy
b3dUeXBlRXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7CiAKLSAgICBpZiAob3B0aW9ucyAh
PT0gQE9iamVjdChvcHRpb25zKSkKKyAgICBpZiAoIUBpc09iamVjdChvcHRpb25zKSkKICAgICAg
ICAgQHRocm93VHlwZUVycm9yKCJBcmd1bWVudCAxIChvcHRpb25zKSB0byBOYXZpZ2F0b3IuZ2V0
VXNlck1lZGlhIG11c3QgYmUgYW4gb2JqZWN0Iik7CiAKICAgICBpZiAodHlwZW9mIHN1Y2Nlc3ND
YWxsYmFjayAhPT0gImZ1bmN0aW9uIikKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzRmMDhlMWRjMjFjM2ExMDc3MjcyYTlhY2UyMDcyYWQy
YTA0MTNlYy4uNzAxYTFkZmRlZmI3MjQ2Njg1N2JjZDJiMmQ1NTEwNGUzYjg5MTYzOSAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1OSBAQAorMjAxNy0xMC0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKworICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgQHRvT2JqZWN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg3MjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9hcnJheS1jb3B5d2l0aGlu
LmpzOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAqIHN0cmVzcy9vYmplY3QtY29u
c3RydWN0b3ItYm9vbGVhbi1lZGdlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9vYmplY3QtY29uc3RydWN0b3ItZ2xvYmFs
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0
LWNvbnN0cnVjdG9yLW51bGwtZWRnZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWNvbnN0cnVjdG9yLW51bWJl
ci1lZGdlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgor
ICAgICAgICAqIHN0cmVzcy9vYmplY3QtY29uc3RydWN0b3Itb2JqZWN0LWVkZ2UuanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChpLmFyZyk6
CisgICAgICAgICogc3RyZXNzL29iamVjdC1jb25zdHJ1Y3Rvci1zdHJpbmctZWRnZS5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJl
c3Mvb2JqZWN0LWNvbnN0cnVjdG9yLXN5bWJvbC1lZGdlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9vYmplY3QtY29uc3Ry
dWN0b3ItdW5kZWZpbmVkLWVkZ2UuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAg
ICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3RvLW9iamVjdC1pbnRyaW5zaWMtYm9vbGVh
bi1lZGdlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGJ1aWx0aW4u
Y3JlYXRlQnVpbHRpbik6CisgICAgICAgICogc3RyZXNzL3RvLW9iamVjdC1pbnRyaW5zaWMtbnVs
bC1vci11bmRlZmluZWQtZWRnZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6Cisg
ICAgICAgICogc3RyZXNzL3RvLW9iamVjdC1pbnRyaW5zaWMtbnVtYmVyLWVkZ2UuanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoYnVpbHRpbi5jcmVhdGVCdWlsdGluKToK
KyAgICAgICAgKiBzdHJlc3MvdG8tb2JqZWN0LWludHJpbnNpYy1vYmplY3QtZWRnZS5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChidWlsdGluLmNyZWF0ZUJ1aWx0aW4p
OgorICAgICAgICAoaS5hcmcpOgorICAgICAgICAqIHN0cmVzcy90by1vYmplY3QtaW50cmluc2lj
LXN0cmluZy1lZGdlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGJ1
aWx0aW4uY3JlYXRlQnVpbHRpbik6CisgICAgICAgICogc3RyZXNzL3RvLW9iamVjdC1pbnRyaW5z
aWMtc3ltYm9sLWVkZ2UuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAo
YnVpbHRpbi5jcmVhdGVCdWlsdGluKToKKyAgICAgICAgKiBzdHJlc3MvdG8tb2JqZWN0LWludHJp
bnNpYy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJv
dyk6CisgICAgICAgIChidWlsdGluLmNyZWF0ZUJ1aWx0aW4pOgorCiAyMDE3LTEwLTE1ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtKU0NdIG1vZHVs
ZXMgY2FuIGJlIHZpc2l0ZWQgbW9yZSB0aGFuIG9uY2Ugd2hlbiByZXNvbHZpbmcgYmluZGluZ3Mg
dGhyb3VnaCAic3RhciIgZXhwb3J0cyBhcyBsb25nIGFzIHRoZSBleHBvcnROYW1lIGlzIGRpZmZl
cmVudCBlYWNoIHRpbWUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FycmF5LWNvcHl3aXRo
aW4uanMgYi9KU1Rlc3RzL3N0cmVzcy9hcnJheS1jb3B5d2l0aGluLmpzCmluZGV4IDQxY2RmN2Yy
ZTZkNWNmNzViNjE1M2U3ZjA0ZjU3NWFlMjA1YmQ5NzAuLjk4M2ZlZDdlY2M3ZWM5MGU5Mzg1NjQw
NmFiZmNlMTQxMTAxYjE0NTEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2FycmF5LWNvcHl3
aXRoaW4uanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXJyYXktY29weXdpdGhpbi5qcwpAQCAtMjM4
LDExICsyMzgsMTEgQEAgZnVuY3Rpb24gYXJyYXlUb09iamVjdChhcnJheSkgewogCiBzaG91bGRU
aHJvdyhmdW5jdGlvbiAoKSB7CiAgICAgQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4uY2FsbCh1
bmRlZmluZWQpOwotfSwgJ1R5cGVFcnJvcjogQXJyYXkuY29weVdpdGhpbiByZXF1aXJlcyB0aGF0
IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQnKTsKK30sICdUeXBlRXJyb3I6IEFycmF5
LnByb3RvdHlwZS5jb3B5V2l0aGluIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9y
IHVuZGVmaW5lZCcpOwogCiBzaG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CiAgICAgQXJyYXkucHJv
dG90eXBlLmNvcHlXaXRoaW4uY2FsbChudWxsKTsKLX0sICdUeXBlRXJyb3I6IEFycmF5LmNvcHlX
aXRoaW4gcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkJyk7Cit9
LCAnVHlwZUVycm9yOiBBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiByZXF1aXJlcyB0aGF0IHx0
aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQnKTsKIAogCiBmdW5jdGlvbiB2YWx1ZU9mKGNv
ZGUpIHsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29iamVjdC1jb25zdHJ1Y3Rvci1ib29s
ZWFuLWVkZ2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtY29uc3RydWN0b3ItYm9vbGVhbi1l
ZGdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI5MWU5ZWVhMDEwNzA5MmZjNjE4NjY2ZGM3MDA1ZTJjMDg1MWI4
MWMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtY29uc3RydWN0b3It
Ym9vbGVhbi1lZGdlLmpzCkBAIC0wLDAgKzEsMTggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0
KHRhcmdldCkKK3sKKyAgICByZXR1cm4gT2JqZWN0KHRhcmdldCk7Cit9Citub0lubGluZSh0ZXN0
KTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7
CisgICAgICAgIHZhciBvYmplY3QgPSB0ZXN0KHRydWUpOworICAgICAgICBzaG91bGRCZShvYmpl
Y3QgaW5zdGFuY2VvZiBCb29sZWFuLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUob2JqZWN0LnZh
bHVlT2YoKSwgdHJ1ZSk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L29iamVjdC1jb25zdHJ1Y3Rvci1nbG9iYWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtY29u
c3RydWN0b3ItZ2xvYmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmODIzNTJjODUxMWVhYjI4Nzk2NjNmZTYw
NGEyYzk2NDI1NTg2NmQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qt
Y29uc3RydWN0b3ItZ2xvYmFsLmpzCkBAIC0wLDAgKzEsMjIgQEAKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgZ2xv
YmFsT2JqZWN0ID0gY3JlYXRlR2xvYmFsT2JqZWN0KCk7Cit2YXIgY29uc3RydWN0b3IgPSBnbG9i
YWxPYmplY3QuT2JqZWN0OwordmFyIHRlc3RzID0gWworICAgIFsgbnVsbCwgZ2xvYmFsT2JqZWN0
Lk9iamVjdCBdLAorICAgIFsgdW5kZWZpbmVkLCBnbG9iYWxPYmplY3QuT2JqZWN0IF0sCisgICAg
WyAiSGVsbG8iLCBnbG9iYWxPYmplY3QuU3RyaW5nIF0sCisgICAgWyA0MiwgZ2xvYmFsT2JqZWN0
Lk51bWJlciBdLAorICAgIFsgZmFsc2UsIGdsb2JhbE9iamVjdC5Cb29sZWFuIF0sCisgICAgWyBT
eW1ib2woIkNvY29hIiksIGdsb2JhbE9iamVjdC5TeW1ib2wgXSwKK107CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICBmb3IgKHZhciBbdGFyZ2V0LCBjbHNdIG9mIHRlc3Rz
KSB7CisgICAgICAgIHZhciByZXN1bHQgPSBjb25zdHJ1Y3Rvcih0YXJnZXQpOworICAgICAgICBz
aG91bGRCZShyZXN1bHQgaW5zdGFuY2VvZiBjbHMsIHRydWUpOworICAgIH0KK30KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL29iamVjdC1jb25zdHJ1Y3Rvci1udWxsLWVkZ2UuanMgYi9KU1Rl
c3RzL3N0cmVzcy9vYmplY3QtY29uc3RydWN0b3ItbnVsbC1lZGdlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjli
OGVhZjMyNzY5YmY1NjFmODRlZjMwMTAxNmE0MzZlYzZmODRlNTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtY29uc3RydWN0b3ItbnVsbC1lZGdlLmpzCkBAIC0wLDAg
KzEsMTcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KHRhcmdldCkKK3sKKyAgICByZXR1cm4g
T2JqZWN0KHRhcmdldCk7Cit9Citub0lubGluZSh0ZXN0KTsKKworKGZ1bmN0aW9uICgpIHsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIHZhciBvYmplY3QgPSB0
ZXN0KG51bGwpOworICAgICAgICBzaG91bGRCZShvYmplY3QuX19wcm90b19fLCBPYmplY3QucHJv
dG90eXBlKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0
LWNvbnN0cnVjdG9yLW51bWJlci1lZGdlLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWNvbnN0
cnVjdG9yLW51bWJlci1lZGdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlMzUxNzdmZTBhODE1OTRhOWM2NWVh
ZjFiYzE1NjAzZTMwOWIwZjUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtY29uc3RydWN0b3ItbnVtYmVyLWVkZ2UuanMKQEAgLTAsMCArMSwyMiBAQAorZnVuY3Rpb24g
c2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisK
K2Z1bmN0aW9uIHRlc3QodGFyZ2V0KQoreworICAgIHJldHVybiBPYmplY3QodGFyZ2V0KTsKK30K
K25vSW5saW5lKHRlc3QpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMWU0OyArK2kpIHsKKyAgICAgICAgdmFyIG9iamVjdCA9IHRlc3QoNDIpOworICAgICAgICBz
aG91bGRCZShvYmplY3QgaW5zdGFuY2VvZiBOdW1iZXIsIHRydWUpOworICAgICAgICBzaG91bGRC
ZShvYmplY3QudmFsdWVPZigpLCA0Mik7CisKKyAgICAgICAgdmFyIG9iamVjdCA9IHRlc3QoNDIu
MTk1KTsKKyAgICAgICAgc2hvdWxkQmUob2JqZWN0IGluc3RhbmNlb2YgTnVtYmVyLCB0cnVlKTsK
KyAgICAgICAgc2hvdWxkQmUob2JqZWN0LnZhbHVlT2YoKSwgNDIuMTk1KTsKKyAgICB9Cit9KCkp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWNvbnN0cnVjdG9yLW9iamVjdC1l
ZGdlLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWNvbnN0cnVjdG9yLW9iamVjdC1lZGdlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4Njk2NGFkMjAxMTZmOGMzNmVjZTE3MmQwMDc3NTc4ODBhN2YwOTMKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtY29uc3RydWN0b3Itb2JqZWN0
LWVkZ2UuanMKQEAgLTAsMCArMSwyNiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QodGFyZ2V0
KQoreworICAgIHJldHVybiBPYmplY3QodGFyZ2V0KTsKK30KK25vSW5saW5lKHRlc3QpOworCiso
ZnVuY3Rpb24gKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAg
ICAgdmFyIGFyZyA9IHt9OworICAgICAgICB2YXIgb2JqZWN0ID0gdGVzdChhcmcpOworICAgICAg
ICBzaG91bGRCZShvYmplY3QsIGFyZyk7CisKKyAgICAgICAgdmFyIGFyZyA9IFtdOworICAgICAg
ICB2YXIgb2JqZWN0ID0gdGVzdChhcmcpOworICAgICAgICBzaG91bGRCZShvYmplY3QsIGFyZyk7
CisKKyAgICAgICAgdmFyIGFyZyA9IGZ1bmN0aW9uICgpIHsgfTsKKyAgICAgICAgdmFyIG9iamVj
dCA9IHRlc3QoYXJnKTsKKyAgICAgICAgc2hvdWxkQmUob2JqZWN0LCBhcmcpOworICAgIH0KK30o
KSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtY29uc3RydWN0b3Itc3RyaW5n
LWVkZ2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtY29uc3RydWN0b3Itc3RyaW5nLWVkZ2Uu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTNmNTY0MTgxYjZkNzU2MjAzNzNiOTk4MDc3ZjdhMmEzODI0YjIyYQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1jb25zdHJ1Y3Rvci1zdHJp
bmctZWRnZS5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdCh0YXJn
ZXQpCit7CisgICAgcmV0dXJuIE9iamVjdCh0YXJnZXQpOworfQorbm9JbmxpbmUodGVzdCk7CisK
KyhmdW5jdGlvbiAoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAg
ICAgICB2YXIgb2JqZWN0ID0gdGVzdCgiQ29jb2EiKTsKKyAgICAgICAgc2hvdWxkQmUob2JqZWN0
IGluc3RhbmNlb2YgU3RyaW5nLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUob2JqZWN0LnZhbHVl
T2YoKSwgIkNvY29hIik7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L29iamVjdC1jb25zdHJ1Y3Rvci1zeW1ib2wtZWRnZS5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVj
dC1jb25zdHJ1Y3Rvci1zeW1ib2wtZWRnZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMWQxMjczMWY0NWE0ZmFj
OTJlZTQyMmViZTQ5NDU3OGVlNjBkODc2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3Mvb2JqZWN0LWNvbnN0cnVjdG9yLXN5bWJvbC1lZGdlLmpzCkBAIC0wLDAgKzEsMTggQEAKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwp
OworfQorCitmdW5jdGlvbiB0ZXN0KHRhcmdldCkKK3sKKyAgICByZXR1cm4gT2JqZWN0KHRhcmdl
dCk7Cit9Citub0lubGluZSh0ZXN0KTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIHZhciBvYmplY3QgPSB0ZXN0KFN5bWJvbCgi
Q29jb2EiKSk7CisgICAgICAgIHNob3VsZEJlKG9iamVjdCBpbnN0YW5jZW9mIFN5bWJvbCwgdHJ1
ZSk7CisgICAgICAgIHNob3VsZEJlKFN0cmluZyhvYmplY3QudmFsdWVPZigpKSwgYFN5bWJvbChD
b2NvYSlgKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0
LWNvbnN0cnVjdG9yLXVuZGVmaW5lZC1lZGdlLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWNv
bnN0cnVjdG9yLXVuZGVmaW5lZC1lZGdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4N2QwMDQ5ZmI2MTY4MDEx
NmM2NzI2NTZhN2RjY2QyNzI1NDRiOGEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9vYmplY3QtY29uc3RydWN0b3ItdW5kZWZpbmVkLWVkZ2UuanMKQEAgLTAsMCArMSwxNyBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVh
bCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QodGFyZ2V0KQoreworICAgIHJldHVybiBPYmplY3QodGFy
Z2V0KTsKK30KK25vSW5saW5lKHRlc3QpOworCisoZnVuY3Rpb24gKCkgeworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgdmFyIG9iamVjdCA9IHRlc3QodW5kZWZp
bmVkKTsKKyAgICAgICAgc2hvdWxkQmUob2JqZWN0Ll9fcHJvdG9fXywgT2JqZWN0LnByb3RvdHlw
ZSk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3RvLW9iamVjdC1p
bnRyaW5zaWMtYm9vbGVhbi1lZGdlLmpzIGIvSlNUZXN0cy9zdHJlc3MvdG8tb2JqZWN0LWludHJp
bnNpYy1ib29sZWFuLWVkZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJlYjgzMmEwZDk2YTUyNmRiOGI3YmM2
ODBjZjY3ZjAyZDRiMWQ0MwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3RvLW9i
amVjdC1pbnRyaW5zaWMtYm9vbGVhbi1lZGdlLmpzCkBAIC0wLDAgKzEsMTcgQEAKK2Z1bmN0aW9u
IHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQor
Cit2YXIgYnVpbHRpbiA9IGNyZWF0ZUJ1aWx0aW4oYChmdW5jdGlvbiAodGFyZ2V0KSB7CisgICAg
cmV0dXJuIEB0b09iamVjdCh0YXJnZXQsICIiKTsKK30pYCk7Citub0lubGluZShidWlsdGluKTsK
KworKGZ1bmN0aW9uICgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7Cisg
ICAgICAgIHZhciBvYmplY3QgPSBidWlsdGluKHRydWUpOworICAgICAgICBzaG91bGRCZShvYmpl
Y3QgaW5zdGFuY2VvZiBCb29sZWFuLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUob2JqZWN0LnZh
bHVlT2YoKSwgdHJ1ZSk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3RvLW9iamVjdC1pbnRyaW5zaWMtbnVsbC1vci11bmRlZmluZWQtZWRnZS5qcyBiL0pTVGVzdHMv
c3RyZXNzL3RvLW9iamVjdC1pbnRyaW5zaWMtbnVsbC1vci11bmRlZmluZWQtZWRnZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iZjA5NjBiYjdjY2NhZDM5ZWJiOTRmNjJiZjdjYWRhNjgyMjgxMmZmCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdG8tb2JqZWN0LWludHJpbnNpYy1udWxsLW9yLXVu
ZGVmaW5lZC1lZGdlLmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1
bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZh
ciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7Cisg
ICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90
IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisK
KyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIGJ1aWx0aW4gPSBjcmVhdGVCdWlsdGluKGAoZnVuY3Rp
b24gKHRhcmdldCkgeworICAgICAgICByZXR1cm4gQHRvT2JqZWN0KHRhcmdldCwgIiIpOworICAg
IH0pYCk7CisgICAgbm9JbmxpbmUoYnVpbHRpbik7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDFlNDsgKytpKQorICAgICAgICBzaG91bGRUaHJvdygoKSA9PiBidWlsdGluKG51bGwpLCBgVHlw
ZUVycm9yOiBudWxsIGlzIG5vdCBhbiBvYmplY3RgKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgdmFyIGJ1aWx0aW4gPSBjcmVhdGVCdWlsdGluKGAoZnVuY3Rpb24gKHRhcmdldCkgewor
ICAgICAgICByZXR1cm4gQHRvT2JqZWN0KHRhcmdldCwgIiIpOworICAgIH0pYCk7CisgICAgbm9J
bmxpbmUoYnVpbHRpbik7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAg
ICAgICBzaG91bGRUaHJvdygoKSA9PiBidWlsdGluKHVuZGVmaW5lZCksIGBUeXBlRXJyb3I6IHVu
ZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0YCk7Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvdG8tb2JqZWN0LWludHJpbnNpYy1udW1iZXItZWRnZS5qcyBiL0pTVGVzdHMvc3RyZXNz
L3RvLW9iamVjdC1pbnRyaW5zaWMtbnVtYmVyLWVkZ2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDU3ZjNlMjVl
MDNjODg4MGY4YWVlMmFjNGMzYzhlNjA0OTIyNDc3NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3RvLW9iamVjdC1pbnRyaW5zaWMtbnVtYmVyLWVkZ2UuanMKQEAgLTAsMCArMSwy
MSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyAr
IGFjdHVhbCk7Cit9CisKK3ZhciBidWlsdGluID0gY3JlYXRlQnVpbHRpbihgKGZ1bmN0aW9uICh0
YXJnZXQpIHsKKyAgICByZXR1cm4gQHRvT2JqZWN0KHRhcmdldCwgIiIpOworfSlgKTsKK25vSW5s
aW5lKGJ1aWx0aW4pOworCisoZnVuY3Rpb24gKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MWU0OyArK2kpIHsKKyAgICAgICAgdmFyIG9iamVjdCA9IGJ1aWx0aW4oNDIpOworICAgICAgICBz
aG91bGRCZShvYmplY3QgaW5zdGFuY2VvZiBOdW1iZXIsIHRydWUpOworICAgICAgICBzaG91bGRC
ZShvYmplY3QudmFsdWVPZigpLCA0Mik7CisKKyAgICAgICAgdmFyIG9iamVjdCA9IGJ1aWx0aW4o
NDIuMTk1KTsKKyAgICAgICAgc2hvdWxkQmUob2JqZWN0IGluc3RhbmNlb2YgTnVtYmVyLCB0cnVl
KTsKKyAgICAgICAgc2hvdWxkQmUob2JqZWN0LnZhbHVlT2YoKSwgNDIuMTk1KTsKKyAgICB9Cit9
KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdG8tb2JqZWN0LWludHJpbnNpYy1vYmpl
Y3QtZWRnZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3RvLW9iamVjdC1pbnRyaW5zaWMtb2JqZWN0LWVk
Z2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzZlMTE3NzExNDQyZGIwZTJhZWU0MWMxN2MzMWY3Nzg1MjU2Y2E5
ZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3RvLW9iamVjdC1pbnRyaW5zaWMt
b2JqZWN0LWVkZ2UuanMKQEAgLTAsMCArMSwyNSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBidWlsdGluID0g
Y3JlYXRlQnVpbHRpbihgKGZ1bmN0aW9uICh0YXJnZXQpIHsKKyAgICByZXR1cm4gQHRvT2JqZWN0
KHRhcmdldCwgIiIpOworfSlgKTsKK25vSW5saW5lKGJ1aWx0aW4pOworCisoZnVuY3Rpb24gKCkg
eworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgdmFyIGFyZyA9
IHt9OworICAgICAgICB2YXIgb2JqZWN0ID0gYnVpbHRpbihhcmcpOworICAgICAgICBzaG91bGRC
ZShvYmplY3QsIGFyZyk7CisKKyAgICAgICAgdmFyIGFyZyA9IFtdOworICAgICAgICB2YXIgb2Jq
ZWN0ID0gYnVpbHRpbihhcmcpOworICAgICAgICBzaG91bGRCZShvYmplY3QsIGFyZyk7CisKKyAg
ICAgICAgdmFyIGFyZyA9IGZ1bmN0aW9uICgpIHsgfTsKKyAgICAgICAgdmFyIG9iamVjdCA9IGJ1
aWx0aW4oYXJnKTsKKyAgICAgICAgc2hvdWxkQmUob2JqZWN0LCBhcmcpOworICAgIH0KK30oKSk7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90by1vYmplY3QtaW50cmluc2ljLXN0cmluZy1l
ZGdlLmpzIGIvSlNUZXN0cy9zdHJlc3MvdG8tb2JqZWN0LWludHJpbnNpYy1zdHJpbmctZWRnZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNTRkMjYyZWUyYWVlZmMyN2U1MmE2MzUzNWVhMTA3NmU2MDdmYzViCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdG8tb2JqZWN0LWludHJpbnNpYy1zdHJp
bmctZWRnZS5qcwpAQCAtMCwwICsxLDE3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIGJ1aWx0aW4gPSBjcmVh
dGVCdWlsdGluKGAoZnVuY3Rpb24gKHRhcmdldCkgeworICAgIHJldHVybiBAdG9PYmplY3QodGFy
Z2V0LCAiIik7Cit9KWApOworbm9JbmxpbmUoYnVpbHRpbik7CisKKyhmdW5jdGlvbiAoKSB7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICB2YXIgb2JqZWN0ID0g
YnVpbHRpbigiQ29jb2EiKTsKKyAgICAgICAgc2hvdWxkQmUob2JqZWN0IGluc3RhbmNlb2YgU3Ry
aW5nLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUob2JqZWN0LnZhbHVlT2YoKSwgIkNvY29hIik7
CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3RvLW9iamVjdC1pbnRy
aW5zaWMtc3ltYm9sLWVkZ2UuanMgYi9KU1Rlc3RzL3N0cmVzcy90by1vYmplY3QtaW50cmluc2lj
LXN5bWJvbC1lZGdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjMjljNjI4ZDMyM2ZhZTNmMGZjY2VmMWE4NDE2
NDZlM2M4ZTk1ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90by1vYmplY3Qt
aW50cmluc2ljLXN5bWJvbC1lZGdlLmpzCkBAIC0wLDAgKzEsMTcgQEAKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIg
YnVpbHRpbiA9IGNyZWF0ZUJ1aWx0aW4oYChmdW5jdGlvbiAodGFyZ2V0KSB7CisgICAgcmV0dXJu
IEB0b09iamVjdCh0YXJnZXQsICIiKTsKK30pYCk7Citub0lubGluZShidWlsdGluKTsKKworKGZ1
bmN0aW9uICgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAg
IHZhciBvYmplY3QgPSBidWlsdGluKFN5bWJvbCgiQ29jb2EiKSk7CisgICAgICAgIHNob3VsZEJl
KG9iamVjdCBpbnN0YW5jZW9mIFN5bWJvbCwgdHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKFN0cmlu
ZyhvYmplY3QudmFsdWVPZigpKSwgYFN5bWJvbChDb2NvYSlgKTsKKyAgICB9Cit9KCkpOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdG8tb2JqZWN0LWludHJpbnNpYy5qcyBiL0pTVGVzdHMv
c3RyZXNzL3RvLW9iamVjdC1pbnRyaW5zaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIyOGQxYzdmNzc1YzMx
ODM4YjVhYjAwM2EyNmEzODI4OWY5MDlkOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3RvLW9iamVjdC1pbnRyaW5zaWMuanMKQEAgLTAsMCArMSw1MSBAQAorZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1
bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRo
cm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAg
ZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOwor
ICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9
PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0
cmluZyhlcnJvcil9YCk7Cit9CisKK3ZhciBidWlsdGluID0gY3JlYXRlQnVpbHRpbihgKGZ1bmN0
aW9uICh0YXJnZXQpIHsKKyAgICByZXR1cm4gQHRvT2JqZWN0KHRhcmdldCwgIiIpOworfSlgKTsK
K25vSW5saW5lKGJ1aWx0aW4pOworCisoZnVuY3Rpb24gKCkgeworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4gYnVpbHRpbihudWxs
KSwgYFR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0YCk7CisgICAgICAgIHNob3VsZFRo
cm93KCgpID0+IGJ1aWx0aW4odW5kZWZpbmVkKSwgYFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5v
dCBhbiBvYmplY3RgKTsKKyAgICAgICAgdmFyIG9iamVjdCA9IGJ1aWx0aW4oNDIpOworICAgICAg
ICBzaG91bGRCZShvYmplY3QgaW5zdGFuY2VvZiBOdW1iZXIsIHRydWUpOworICAgICAgICBzaG91
bGRCZShvYmplY3QudmFsdWVPZigpLCA0Mik7CisKKyAgICAgICAgdmFyIG9iamVjdCA9IGJ1aWx0
aW4oIkNvY29hIik7CisgICAgICAgIHNob3VsZEJlKG9iamVjdCBpbnN0YW5jZW9mIFN0cmluZywg
dHJ1ZSk7CisgICAgICAgIHNob3VsZEJlKG9iamVjdC52YWx1ZU9mKCksICJDb2NvYSIpOworCisg
ICAgICAgIHZhciBvYmplY3QgPSBidWlsdGluKHRydWUpOworICAgICAgICBzaG91bGRCZShvYmpl
Y3QgaW5zdGFuY2VvZiBCb29sZWFuLCB0cnVlKTsKKyAgICAgICAgc2hvdWxkQmUob2JqZWN0LnZh
bHVlT2YoKSwgdHJ1ZSk7CisKKyAgICAgICAgdmFyIG9iamVjdCA9IGJ1aWx0aW4oU3ltYm9sKCJD
b2NvYSIpKTsKKyAgICAgICAgc2hvdWxkQmUob2JqZWN0IGluc3RhbmNlb2YgU3ltYm9sLCB0cnVl
KTsKKyAgICAgICAgc2hvdWxkQmUoU3RyaW5nKG9iamVjdC52YWx1ZU9mKCkpLCBgU3ltYm9sKENv
Y29hKWApOworCisgICAgICAgIHZhciBhcmcgPSB7fTsKKyAgICAgICAgdmFyIG9iamVjdCA9IGJ1
aWx0aW4oYXJnKTsKKyAgICAgICAgc2hvdWxkQmUob2JqZWN0LCBhcmcpOworICAgIH0KK30oKSk7
CisK
</data>
<flag name="review"
          id="344301"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>