<?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>215572</bug_id>
          
          <creation_ts>2020-08-17 09:18:23 -0700</creation_ts>
          <short_desc>Introduce OpIsCallable bytecode and intrinsic</short_desc>
          <delta_ts>2020-12-03 09:46:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=214525</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=214443</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Trivial</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1680825</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-08-17 09:18:23 -0700</bug_when>
    <thetext>Introduce OpIsCallable bytecode and intrinsic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680826</commentid>
    <comment_count>1</comment_count>
      <attachid>406719</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-08-17 09:25:43 -0700</bug_when>
    <thetext>Created attachment 406719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680886</commentid>
    <comment_count>2</comment_count>
      <attachid>406719</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-08-17 12:33:57 -0700</bug_when>
    <thetext>Comment on attachment 406719
Patch

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

Looks good from my perspective.

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        1. Aligns slow_path_is_function with DFG/FTL implementations by introducing
&gt; +           jsTypeofIsFunction() helper. This fixes `typeof document.all === &quot;function&quot;`
&gt; +           to return `true` instead of `false`.

I think you have the operator swapped here -- should be !==, right?

&gt; Source/JavaScriptCore/runtime/Operations.h:49
&gt; +        if (object-&gt;type() == JSFunctionType)
&gt; +            return true;
&gt; +        if (object-&gt;structure(vm)-&gt;masqueradesAsUndefined(globalObject))
&gt; +            return false;
&gt; +        if (object-&gt;isCallable(vm))
&gt; +            return true;

isCallable starts by checking JSFunctionType, right? So I think we could drop the first conditional unless there&apos;s a perf implication.

&gt; LayoutTests/js/dom/script-tests/document-all-typeof-is-function-fold.js:4
&gt; +function testTypeofIsFuction() {

nit: Fuction -&gt; Function (x2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681059</commentid>
    <comment_count>3</comment_count>
      <attachid>406719</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-18 08:07:26 -0700</bug_when>
    <thetext>Comment on attachment 406719
Patch

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

LGTM too

&gt; Source/JavaScriptCore/runtime/Operations.h:47
&gt; +            return false;

Your change log says the opposite</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681079</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-08-18 08:42:37 -0700</bug_when>
    <thetext>I appreciate all the reviews! A question/suggestion:

Instead of adding a new bytecode op, which I suppose should be avoided whenever possible, we could define @isCallable as a function:

```
@globalPrivate
function isCallable(value)
{
    &quot;use strict&quot;;

    return typeof value === &quot;function&quot; || @isCallableMasquerader(value);
}
```

with @isCallableMasquerader being a link-time-constant implemented in C++.
OpIsCallable is a nice primitive, yet it isn&apos;t required except by built-ins.
Should I benchmark this approach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681110</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-18 09:57:40 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #4)
&gt; I appreciate all the reviews! A question/suggestion:
&gt; 
&gt; Instead of adding a new bytecode op, which I suppose should be avoided
&gt; whenever possible, we could define @isCallable as a function:
&gt; 
&gt; ```
&gt; @globalPrivate
&gt; function isCallable(value)
&gt; {
&gt;     &quot;use strict&quot;;
&gt; 
&gt;     return typeof value === &quot;function&quot; || @isCallableMasquerader(value);
&gt; }
&gt; ```
&gt; 
&gt; with @isCallableMasquerader being a link-time-constant implemented in C++.
&gt; OpIsCallable is a nice primitive, yet it isn&apos;t required except by built-ins.
&gt; Should I benchmark this approach?

I like your current approach more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681448</commentid>
    <comment_count>6</comment_count>
      <attachid>406868</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-08-19 12:51:31 -0700</bug_when>
    <thetext>Created attachment 406868
Patch

Fix typos in ChangeLog and LayoutTests, remove extra JSFunctionType check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681521</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-19 16:25:50 -0700</bug_when>
    <thetext>Committed r265907: &lt;https://trac.webkit.org/changeset/265907&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 406868.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681522</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-19 16:26:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/67434636&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711702</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-12-03 09:46:19 -0800</bug_when>
    <thetext>*** Bug 202485 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406719</attachid>
            <date>2020-08-17 09:25:43 -0700</date>
            <delta_ts>2020-08-19 12:51:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215572-20200817192541.patch</filename>
            <type>text/plain</type>
            <size>70747</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjU3NTUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIwLTA4LTE3ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgT3BJc0NhbGxhYmxlIGJ5dGVjb2RlIGFu
ZCBpbnRyaW5zaWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNTU3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3RyZXNzL3R5cGUtb2YtZnVuY3Rpb25zLWFuZC1vYmplY3RzLmpzOgorICAgICAgICAq
IHRlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWw6IE1hcmsgMiB0ZXN0IGNhc2VzIGFzIHBhc3Npbmcu
CisKIDIwMjAtMDgtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByZWR1Y2UgaXRlcmF0aW9uIGNvdW50IG1vcmUgZm9yIG5vbi1KSVQg
ZW52aXJvbm1lbnRzCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy90eXBlLW9mLWZ1bmN0aW9ucy1hbmQt
b2JqZWN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy90eXBlLW9mLWZ1bmN0aW9u
cy1hbmQtb2JqZWN0cy5qcwkocmV2aXNpb24gMjY1NjY5KQorKysgSlNUZXN0cy9zdHJlc3MvdHlw
ZS1vZi1mdW5jdGlvbnMtYW5kLW9iamVjdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcy
LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICB0ZXN0VmFsdWUoTWFwLCAiZnVuY3Rpb24iKTsK
ICAgICB0ZXN0VmFsdWUoRGF0ZSwgImZ1bmN0aW9uIik7CiAgICAgdGVzdFZhbHVlKE1hcC5wcm90
b3R5cGUsICJvYmplY3QiKTsKKyAgICB0ZXN0VmFsdWUobWFrZU1hc3F1ZXJhZGVyKCksICJvdGhl
ciIpOwogICAgIAogICAgIGlmICghZXJyb3JzLmxlbmd0aCkKICAgICAgICAgcmV0dXJuOwpJbmRl
eDogSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVz
dHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAkocmV2aXNpb24gMjY1NjY5KQorKysgSlNUZXN0
cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsOSArMjk1
LDYgQEAgdGVzdC9hbm5leEIvbGFuZ3VhZ2UvZXZhbC1jb2RlL2luZGlyZWN0LwogICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiBBbiBpbml0aWFsaXplZCBiaW5kaW5nIGlzIG5vdCBjcmVhdGVkIGZv
bGxvd2luZyBldmFsdWF0aW9uIEV4cGVjdGVkIGEgUmVmZXJlbmNlRXJyb3IgdG8gYmUgdGhyb3du
IGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCiB0ZXN0L2FubmV4Qi9sYW5ndWFn
ZS9ldmFsLWNvZGUvaW5kaXJlY3QvZ2xvYmFsLXN3aXRjaC1kZmx0LWV2YWwtZ2xvYmFsLXNraXAt
ZWFybHktZXJyLXRyeS5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogQW4gaW5pdGlhbGl6
ZWQgYmluZGluZyBpcyBub3QgY3JlYXRlZCBwcmlvciB0byBldmFsdWF0aW9uIEV4cGVjdGVkIGEg
UmVmZXJlbmNlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBh
dCBhbGwnCi10ZXN0L2FubmV4Qi9sYW5ndWFnZS9leHByZXNzaW9ucy90eXBlb2YvZW11bGF0ZXMt
dW5kZWZpbmVkLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAhPT0gImZ1bmN0aW9uIicK
LSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6ICE9PSAiZnVuY3Rpb24iJwogdGVzdC9hbm5l
eEIvbGFuZ3VhZ2UvZnVuY3Rpb24tY29kZS9ibG9jay1kZWNsLWZ1bmMtc2tpcC1hcmd1bWVudHMu
anM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2Z1bmN0
aW9uIGFyZ3VtZW50cygpIHt9wrssIMKrW29iamVjdCBBcmd1bWVudHNdwrspIHRvIGJlIHRydWUn
CiB0ZXN0L2FubmV4Qi9sYW5ndWFnZS9mdW5jdGlvbi1jb2RlL2Jsb2NrLWRlY2wtZnVuYy1za2lw
LWVhcmx5LWVyci1ibG9jay5qczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMjY1NzUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0OCBAQAorMjAyMC0wOC0xNyAgQWxleGV5IFNodmF5a2EgIDxzaHZh
aWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIE9wSXNDYWxsYWJsZSBieXRl
Y29kZSBhbmQgaW50cmluc2ljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTU1NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoOgorCisgICAgICAgIDEuIEFsaWducyBzbG93X3BhdGhfaXNf
ZnVuY3Rpb24gd2l0aCBERkcvRlRMIGltcGxlbWVudGF0aW9ucyBieSBpbnRyb2R1Y2luZworICAg
ICAgICAgICBqc1R5cGVvZklzRnVuY3Rpb24oKSBoZWxwZXIuIFRoaXMgZml4ZXMgYHR5cGVvZiBk
b2N1bWVudC5hbGwgPT09ICJmdW5jdGlvbiJgCisgICAgICAgICAgIHRvIHJldHVybiBgdHJ1ZWAg
aW5zdGVhZCBvZiBgZmFsc2VgLgorCisgICAgICAgIDIuIFJlbmFtZXMgaXNfZnVuY3Rpb24gYnl0
ZWNvZGUgb3AgdG8gdHlwZW9mX2lzX2Z1bmN0aW9uLCBhbGlnbmluZyBpdCB3aXRoCisgICAgICAg
ICAgIHR5cGVvZl9pc191bmRlZmluZWQgYW5kIHR5cGVvZl9pc19vYmplY3QuIE5ldyBuYW1lIG9m
ZmVycyBiZXR0ZXIgc2VtYW50aWNzCisgICAgICAgICAgIGFuZCBjbGVhcmx5IGNvbW11bmljYXRl
cyB0aGUgb3Agc2hvdWxkIGJlIGF2b2lkZWQgd2hlbiBpbXBsZW1lbnRpbmcgbmV3CisgICAgICAg
ICAgIGZlYXR1cmVzIGJlY2F1c2Ugb2YgYHR5cGVvZmAgYmVoYXZpb3Igd2l0aCBbW0lzSFRNTERE
QV1dIG9iamVjdHMgWzFdLgorCisgICAgICAgIDMuIEFkZHMgaXNfY2FsbGFibGUgYnl0ZWNvZGUg
b3AgYW5kIHV0aWxpemVzIGl0IGluIGJ1aWx0LWlucyB2aWEgaW50cmluc2ljLAorICAgICAgICAg
ICByZW1vdmluZyBgdHlwZW9mIGNhbGxiYWNrID09PSAiZnVuY3Rpb24iYCBjaGVja3MuIFRoaXMg
cHJldmVudHMgW1tJc0hUTUxEREFdXQorICAgICAgICAgICBvYmplY3RzIGZyb20gYmVpbmcgY29u
c2lkZXJlZCBub24tY2FsbGFibGUgWzJdLgorCisgICAgICAgICAgIFRvIHByZXNlcnZlIHRoZSBm
YXN0IHBhdGggZm9yIEpTRnVuY3Rpb25UeXBlLAorICAgICAgICAgICBjcmVhdGVGdW5jdGlvblRo
YXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkgaXMgcmVsb2NhdGVkIHRvIEludGVybmFsRnVuY3Rp
b24uCisKKyAgICAgICAgYHR5cGVvZmAgbWljcm9iZW5jaG1hcmtzIGFyZSBuZXV0cmFsLgorCisg
ICAgICAgIFsxXTogaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1Jc0hUTUxEREEtaW50ZXJu
YWwtc2xvdC10eXBlb2YKKyAgICAgICAgWzJdOiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2Vj
LWFycmF5LnByb3RvdHlwZS5tYXAgKHN0ZXAgMykKKworICAgICAgICAqIGJ1aWx0aW5zL0FycmF5
Q29uc3RydWN0b3IuanM6CisgICAgICAgICogYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanM6Cisg
ICAgICAgIChyZWR1Y2UpOgorICAgICAgICAocmVkdWNlUmlnaHQpOgorICAgICAgICAoZXZlcnkp
OgorICAgICAgICAoZm9yRWFjaCk6CisgICAgICAgIChmaWx0ZXIpOgorICAgICAgICAobWFwKToK
KyAgICAgICAgKHNvbWUpOgorICAgICAgICAoZmluZCk6CisgICAgICAgIChmaW5kSW5kZXgpOgor
ICAgICAgICAoc29ydCk6CisgICAgICAgIChmbGF0TWFwKToKKyAgICAgICAgKiBidWlsdGlucy9G
dW5jdGlvblByb3RvdHlwZS5qczoKKyAgICAgICAgKG92ZXJyaWRkZW5OYW1lLnN0cmluZ19hcHBl
YXJlZF9oZXJlLnN5bWJvbEhhc0luc3RhbmNlKToKKyAgICAgICAgKGJpbmQpOgorICAgICAgICAq
IGJ1aWx0aW5zL01hcFByb3RvdHlwZS5qczoKKyAgICAgICAgKGZvckVhY2gpOgorICAgICAgICAq
IGJ1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKGFsbCk6CisgICAgICAg
IChhbGxTZXR0bGVkKToKKyAgICAgICAgKGFueSk6CisgICAgICAgIChyYWNlKToKKyAgICAgICAg
KG5ha2VkQ29uc3RydWN0b3IuUHJvbWlzZSk6CisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLklu
dGVybmFsUHJvbWlzZSk6CisgICAgICAgICogYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanM6
CisgICAgICAgIChnbG9iYWxQcml2YXRlLm5ld1Byb21pc2VDYXBhYmlsaXR5U2xvdyk6CisgICAg
ICAgIChnbG9iYWxQcml2YXRlLnJlc29sdmVQcm9taXNlKToKKyAgICAgICAgKGdsb2JhbFByaXZh
dGUucmVzb2x2ZVdpdGhvdXRQcm9taXNlKToKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlUHJv
dG90eXBlLmpzOgorICAgICAgICAoZmluYWxseSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmdl
dFRoZW5GaW5hbGx5KToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuZ2V0Q2F0Y2hGaW5hbGx5KToK
KyAgICAgICAgKiBidWlsdGlucy9SZWZsZWN0T2JqZWN0LmpzOgorICAgICAgICAoYXBwbHkpOgor
ICAgICAgICAqIGJ1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFBy
aXZhdGUucmVnRXhwRXhlYyk6CisgICAgICAgIChvdmVycmlkZGVuTmFtZS5zdHJpbmdfYXBwZWFy
ZWRfaGVyZS5yZXBsYWNlKToKKyAgICAgICAgKiBidWlsdGlucy9TZXRQcm90b3R5cGUuanM6Cisg
ICAgICAgIChmb3JFYWNoKToKKyAgICAgICAgKiBidWlsdGlucy9UeXBlZEFycmF5Q29uc3RydWN0
b3IuanM6CisgICAgICAgICogYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qczoKKyAgICAg
ICAgKGV2ZXJ5KToKKyAgICAgICAgKGZpbmQpOgorICAgICAgICAoZmluZEluZGV4KToKKyAgICAg
ICAgKGZvckVhY2gpOgorICAgICAgICAoc29tZSk6CisgICAgICAgIChzb3J0KToKKyAgICAgICAg
KHJlZHVjZSk6CisgICAgICAgIChyZWR1Y2VSaWdodCk6CisgICAgICAgIChtYXApOgorICAgICAg
ICAoZmlsdGVyKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRl
Y29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRl
eEltcGwpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RXF1YWxpdHlPcEltcGwpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzQ2FsbGFibGUpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJu
YWwpOgorICAgICAgICAqIGRmZy9ERkdIZWFwTG9jYXRpb24uaDoKKyAgICAgICAgKiBkZmcvREZH
Tm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICog
ZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzQ2Fs
bGFibGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSXNGdW5j
dGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNh
bkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJc0NhbGxhYmxlKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUlzRnVuY3Rpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uTWFrZU1hc3F1ZXJhZGVyKToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OmNyZWF0ZUZ1bmN0aW9uVGhh
dE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmNyZWF0ZUZ1bmN0aW9uVGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRp
bWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpqc1R5cGVvZklzRnVuY3Rpb24pOgorCiAy
MDIwLTA4LTE2ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgT3BJc09iamVjdE9yTnVsbCBmcm9tIENsYXNzRXhwck5vZGU6OmVtaXRCeXRl
Y29kZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjY1NzUzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMjIsNyArMjIy
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25FZmYKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25NYWtlTWFzcXVlcmFkZXIoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGVG
dW5jdGlvblRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKHZtLCBnbG9iYWxPYmplY3QsIDAsICJJ
c0hUTUxEREEiX3MsIGZ1bmN0aW9uQ2FsbE1hc3F1ZXJhZGVyKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVGdW5jdGlvblRoYXRNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKHZtLCBnbG9iYWxPYmplY3QsIDAsICJJc0hUTUxEREEiX3MsIGZ1bmN0aW9u
Q2FsbE1hc3F1ZXJhZGVyKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25DYWxsTWFzcXVlcmFkZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5Q29uc3RydWN0b3IuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5Q29uc3RydWN0b3Iu
anMJKHJldmlzaW9uIDI2NTc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9B
cnJheUNvbnN0cnVjdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGZ1bmN0
aW9uIGZyb20oaXRlbXMgLyosIG1hcEZuLCB0aGlzQXJnICoKICAgICB2YXIgdGhpc0FyZzsKIAog
ICAgIGlmIChtYXBGbiAhPT0gQHVuZGVmaW5lZCkgewotICAgICAgICBpZiAodHlwZW9mIG1hcEZu
ICE9PSAiZnVuY3Rpb24iKQorICAgICAgICBpZiAoIUBpc0NhbGxhYmxlKG1hcEZuKSkKICAgICAg
ICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJyYXkuZnJvbSByZXF1aXJlcyB0aGF0IHRoZSBzZWNv
bmQgYXJndW1lbnQsIHdoZW4gcHJvdmlkZWQsIGJlIGEgZnVuY3Rpb24iKTsKIAogICAgICAgICB0
aGlzQXJnID0gQGFyZ3VtZW50KDIpOwpAQCAtNTQsNyArNTQsNyBAQCBmdW5jdGlvbiBmcm9tKGl0
ZW1zIC8qLCBtYXBGbiwgdGhpc0FyZyAqCiAKICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVt
cy5AQGl0ZXJhdG9yOwogICAgIGlmICghQGlzVW5kZWZpbmVkT3JOdWxsKGl0ZXJhdG9yTWV0aG9k
KSkgewotICAgICAgICBpZiAodHlwZW9mIGl0ZXJhdG9yTWV0aG9kICE9PSAiZnVuY3Rpb24iKQor
ICAgICAgICBpZiAoIUBpc0NhbGxhYmxlKGl0ZXJhdG9yTWV0aG9kKSkKICAgICAgICAgICAgIEB0
aHJvd1R5cGVFcnJvcigiQXJyYXkuZnJvbSByZXF1aXJlcyB0aGF0IHRoZSBwcm9wZXJ0eSBvZiB0
aGUgZmlyc3QgYXJndW1lbnQsIGl0ZW1zW1N5bWJvbC5pdGVyYXRvcl0sIHdoZW4gZXhpc3RzLCBi
ZSBhIGZ1bmN0aW9uIik7CiAKICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMgIT09IEBBcnJheSAm
JiBAaXNDb25zdHJ1Y3Rvcih0aGlzKSA/IG5ldyB0aGlzKCkgOiBbXTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMJKHJldmlzaW9u
IDI2NTc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVByb3RvdHlw
ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBmdW5jdGlvbiByZWR1Y2UoY2Fs
bGJhY2sgLyosIGluaXRpYWxWYWx1CiAgICAgdmFyIGFycmF5ID0gQHRvT2JqZWN0KHRoaXMsICJB
cnJheS5wcm90b3R5cGUucmVkdWNlIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9y
IHVuZGVmaW5lZCIpOwogICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsK
IAotICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCisgICAgaWYgKCFAaXND
YWxsYWJsZShjYWxsYmFjaykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJyYXkucHJvdG90
eXBlLnJlZHVjZSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKIAogICAgIHZhciBhcmd1
bWVudENvdW50ID0gQGFyZ3VtZW50Q291bnQoKTsKQEAgLTY0LDcgKzY0LDcgQEAgZnVuY3Rpb24g
cmVkdWNlUmlnaHQoY2FsbGJhY2sgLyosIGluaXRpYQogICAgIHZhciBhcnJheSA9IEB0b09iamVj
dCh0aGlzLCAiQXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0IHJlcXVpcmVzIHRoYXQgfHRoaXN8
IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwogICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgo
YXJyYXkubGVuZ3RoKTsKIAotICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIp
CisgICAgaWYgKCFAaXNDYWxsYWJsZShjYWxsYmFjaykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJv
cigiQXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlv
biIpOwogCiAgICAgdmFyIGFyZ3VtZW50Q291bnQgPSBAYXJndW1lbnRDb3VudCgpOwpAQCAtOTcs
NyArOTcsNyBAQCBmdW5jdGlvbiBldmVyeShjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKICAgICB2
YXIgYXJyYXkgPSBAdG9PYmplY3QodGhpcywgIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJl
cyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKICAgICB2YXIgbGVuZ3Ro
ID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CiAKLSAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9
PSAiZnVuY3Rpb24iKQorICAgIGlmICghQGlzQ2FsbGFibGUoY2FsbGJhY2spKQogICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEg
ZnVuY3Rpb24iKTsKICAgICAKICAgICB2YXIgdGhpc0FyZyA9IEBhcmd1bWVudCgxKTsKQEAgLTEx
OSw3ICsxMTksNyBAQCBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrIC8qLCB0aGlzQXJnICovCiAg
ICAgdmFyIGFycmF5ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCBy
ZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKICAgICB2YXIg
bGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CiAKLSAgICBpZiAodHlwZW9mIGNhbGxi
YWNrICE9PSAiZnVuY3Rpb24iKQorICAgIGlmICghQGlzQ2FsbGFibGUoY2FsbGJhY2spKQogICAg
ICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5mb3JFYWNoIGNhbGxiYWNrIG11
c3QgYmUgYSBmdW5jdGlvbiIpOwogICAgIAogICAgIHZhciB0aGlzQXJnID0gQGFyZ3VtZW50KDEp
OwpAQCAtMTM3LDcgKzEzNyw3IEBAIGZ1bmN0aW9uIGZpbHRlcihjYWxsYmFjayAvKiwgdGhpc0Fy
ZyAqLykKICAgICB2YXIgYXJyYXkgPSBAdG9PYmplY3QodGhpcywgIkFycmF5LnByb3RvdHlwZS5m
aWx0ZXIgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAg
ICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOwogCi0gICAgaWYgKHR5cGVv
ZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNr
KSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZmlsdGVyIGNhbGxi
YWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOwogICAgIAogICAgIHZhciB0aGlzQXJnID0gQGFyZ3Vt
ZW50KDEpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIGZ1bmN0aW9uIG1hcChjYWxsYmFjayAvKiwgdGhp
c0FyZyAqLykKICAgICB2YXIgYXJyYXkgPSBAdG9PYmplY3QodGhpcywgIkFycmF5LnByb3RvdHlw
ZS5tYXAgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAg
ICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOwogCi0gICAgaWYgKHR5cGVv
ZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNr
KSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUubWFwIGNhbGxiYWNr
IG11c3QgYmUgYSBmdW5jdGlvbiIpOwogICAgIAogICAgIHZhciB0aGlzQXJnID0gQGFyZ3VtZW50
KDEpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIGZ1bmN0aW9uIHNvbWUoY2FsbGJhY2sgLyosIHRoaXNB
cmcgKi8pCiAgICAgdmFyIGFycmF5ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUu
c29tZSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKICAg
ICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CiAKLSAgICBpZiAodHlwZW9m
IGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQorICAgIGlmICghQGlzQ2FsbGFibGUoY2FsbGJhY2sp
KQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5zb21lIGNhbGxiYWNr
IG11c3QgYmUgYSBmdW5jdGlvbiIpOwogICAgIAogICAgIHZhciB0aGlzQXJnID0gQGFyZ3VtZW50
KDEpOwpAQCAtMjQyLDcgKzI0Miw3IEBAIGZ1bmN0aW9uIGZpbmQoY2FsbGJhY2sgLyosIHRoaXNB
cmcgKi8pCiAgICAgdmFyIGFycmF5ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUu
ZmluZCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKICAg
ICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CiAKLSAgICBpZiAodHlwZW9m
IGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQorICAgIGlmICghQGlzQ2FsbGFibGUoY2FsbGJhY2sp
KQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5maW5kIGNhbGxiYWNr
IG11c3QgYmUgYSBmdW5jdGlvbiIpOwogICAgIAogICAgIHZhciB0aGlzQXJnID0gQGFyZ3VtZW50
KDEpOwpAQCAtMjYxLDcgKzI2MSw3IEBAIGZ1bmN0aW9uIGZpbmRJbmRleChjYWxsYmFjayAvKiwg
dGhpc0FyZyAKICAgICB2YXIgYXJyYXkgPSBAdG9PYmplY3QodGhpcywgIkFycmF5LnByb3RvdHlw
ZS5maW5kSW5kZXggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVk
Iik7CiAgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOwogCi0gICAgaWYg
KHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGNh
bGxiYWNrKSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZmluZElu
ZGV4IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOwogICAgIAogICAgIHZhciB0aGlzQXJn
ID0gQGFyZ3VtZW50KDEpOwpAQCAtNTIwLDcgKzUyMCw3IEBAIGZ1bmN0aW9uIHNvcnQoY29tcGFy
YXRvcikKICAgICB9CiAKICAgICB2YXIgc29ydEZ1bmN0aW9uOwotICAgIGlmICh0eXBlb2YgY29t
cGFyYXRvciA9PSAiZnVuY3Rpb24iKQorICAgIGlmIChAaXNDYWxsYWJsZShjb21wYXJhdG9yKSkK
ICAgICAgICAgc29ydEZ1bmN0aW9uID0gY29tcGFyYXRvclNvcnQ7CiAgICAgZWxzZSBpZiAoY29t
cGFyYXRvciA9PT0gQHVuZGVmaW5lZCkKICAgICAgICAgc29ydEZ1bmN0aW9uID0gc3RyaW5nU29y
dDsKQEAgLTcxNyw3ICs3MTcsNyBAQCBmdW5jdGlvbiBmbGF0TWFwKGNhbGxiYWNrKQogICAgIHZh
ciBhcnJheSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90eXBlLmZsYXRNYXAgcmVxdWly
ZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAgICAgdmFyIGxlbmd0
aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOwogCi0gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAh
PT0gImZ1bmN0aW9uIikKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNrKSkKICAgICAgICAg
QHRocm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZmxhdE1hcCBjYWxsYmFjayBtdXN0IGJl
IGEgZnVuY3Rpb24iKTsKIAogICAgIHZhciB0aGlzQXJnID0gQGFyZ3VtZW50KDEpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlw
ZS5qcwkocmV2aXNpb24gMjY1NzUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0Z1bmN0aW9uUHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIGZ1
bmN0aW9uIHN5bWJvbEhhc0luc3RhbmNlKHZhbHVlKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAot
ICAgIGlmICh0eXBlb2YgdGhpcyAhPT0gImZ1bmN0aW9uIikKKyAgICBpZiAoIUBpc0NhbGxhYmxl
KHRoaXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoQGlzQm91bmRGdW5jdGlv
bih0aGlzKSkKQEAgLTYyLDcgKzYyLDcgQEAgZnVuY3Rpb24gYmluZCh0aGlzVmFsdWUpCiAgICAg
InVzZSBzdHJpY3QiOwogCiAgICAgdmFyIHRhcmdldCA9IHRoaXM7Ci0gICAgaWYgKHR5cGVvZiB0
YXJnZXQgIT09ICJmdW5jdGlvbiIpCisgICAgaWYgKCFAaXNDYWxsYWJsZSh0YXJnZXQpKQogICAg
ICAgICBAdGhyb3dUeXBlRXJyb3IoInx0aGlzfCBpcyBub3QgYSBmdW5jdGlvbiBpbnNpZGUgRnVu
Y3Rpb24ucHJvdG90eXBlLmJpbmQiKTsKIAogICAgIHZhciBhcmd1bWVudENvdW50ID0gQGFyZ3Vt
ZW50Q291bnQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9NYXBQcm90
b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01h
cFByb3RvdHlwZS5qcwkocmV2aXNpb24gMjY1NzUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL01hcFByb3RvdHlwZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBA
QCBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrIC8qLCB0aGlzQXJnICovCiAgICAgaWYgKCFAaXNN
YXAodGhpcykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiTWFwIG9wZXJhdGlvbiBjYWxsZWQg
b24gbm9uLU1hcCBvYmplY3QiKTsKIAotICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5j
dGlvbicpCisgICAgaWYgKCFAaXNDYWxsYWJsZShjYWxsYmFjaykpCiAgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigiTWFwLnByb3RvdHlwZS5mb3JFYWNoIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlv
biIpOwogCiAgICAgdmFyIHRoaXNBcmcgPSBAYXJndW1lbnQoMSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMJKHJl
dmlzaW9uIDI2NTc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNl
Q29uc3RydWN0b3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgZnVuY3Rpb24g
YWxsKGl0ZXJhYmxlKQogCiAgICAgdHJ5IHsKICAgICAgICAgdmFyIHByb21pc2VSZXNvbHZlID0g
dGhpcy5yZXNvbHZlOwotICAgICAgICBpZiAodHlwZW9mIHByb21pc2VSZXNvbHZlICE9PSAiZnVu
Y3Rpb24iKQorICAgICAgICBpZiAoIUBpc0NhbGxhYmxlKHByb21pc2VSZXNvbHZlKSkKICAgICAg
ICAgICAgIEB0aHJvd1R5cGVFcnJvcigiUHJvbWlzZSByZXNvbHZlIGlzIG5vdCBhIGZ1bmN0aW9u
Iik7CiAKICAgICAgICAgZm9yICh2YXIgdmFsdWUgb2YgaXRlcmFibGUpIHsKQEAgLTEzOCw3ICsx
MzgsNyBAQCBmdW5jdGlvbiBhbGxTZXR0bGVkKGl0ZXJhYmxlKQogCiAgICAgdHJ5IHsKICAgICAg
ICAgdmFyIHByb21pc2VSZXNvbHZlID0gdGhpcy5yZXNvbHZlOwotICAgICAgICBpZiAodHlwZW9m
IHByb21pc2VSZXNvbHZlICE9PSAiZnVuY3Rpb24iKQorICAgICAgICBpZiAoIUBpc0NhbGxhYmxl
KHByb21pc2VSZXNvbHZlKSkKICAgICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiUHJvbWlzZSBy
ZXNvbHZlIGlzIG5vdCBhIGZ1bmN0aW9uIik7CiAKICAgICAgICAgZm9yICh2YXIgdmFsdWUgb2Yg
aXRlcmFibGUpIHsKQEAgLTE5Myw3ICsxOTMsNyBAQCBmdW5jdGlvbiBhbnkoaXRlcmFibGUpCiAK
ICAgICB0cnkgewogICAgICAgICB2YXIgcHJvbWlzZVJlc29sdmUgPSB0aGlzLnJlc29sdmU7Ci0g
ICAgICAgIGlmICh0eXBlb2YgcHJvbWlzZVJlc29sdmUgIT09ICJmdW5jdGlvbiIpCisgICAgICAg
IGlmICghQGlzQ2FsbGFibGUocHJvbWlzZVJlc29sdmUpKQogICAgICAgICAgICAgQHRocm93VHlw
ZUVycm9yKCJQcm9taXNlIHJlc29sdmUgaXMgbm90IGEgZnVuY3Rpb24iKTsKIAogICAgICAgICBm
b3IgKHZhciB2YWx1ZSBvZiBpdGVyYWJsZSkgewpAQCAtMjI2LDcgKzIyNiw3IEBAIGZ1bmN0aW9u
IHJhY2UoaXRlcmFibGUpCiAKICAgICB0cnkgewogICAgICAgICB2YXIgcHJvbWlzZVJlc29sdmUg
PSB0aGlzLnJlc29sdmU7Ci0gICAgICAgIGlmICh0eXBlb2YgcHJvbWlzZVJlc29sdmUgIT09ICJm
dW5jdGlvbiIpCisgICAgICAgIGlmICghQGlzQ2FsbGFibGUocHJvbWlzZVJlc29sdmUpKQogICAg
ICAgICAgICAgQHRocm93VHlwZUVycm9yKCJQcm9taXNlIHJlc29sdmUgaXMgbm90IGEgZnVuY3Rp
b24iKTsKIAogICAgICAgICBmb3IgKHZhciB2YWx1ZSBvZiBpdGVyYWJsZSkgewpAQCAtMjgzLDcg
KzI4Myw3IEBAIGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpCiB7CiAgICAgInVzZSBzdHJpY3Qi
OwogCi0gICAgaWYgKHR5cGVvZiBleGVjdXRvciAhPT0gImZ1bmN0aW9uIikKKyAgICBpZiAoIUBp
c0NhbGxhYmxlKGV4ZWN1dG9yKSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJQcm9taXNlIGNv
bnN0cnVjdG9yIHRha2VzIGEgZnVuY3Rpb24gYXJndW1lbnQiKTsKIAogICAgIHZhciBwcm9taXNl
ID0gQGNyZWF0ZVByb21pc2UodGhpcywgLyogaXNJbnRlcm5hbFByb21pc2UgKi8gZmFsc2UpOwpA
QCAtMzA5LDcgKzMwOSw3IEBAIGZ1bmN0aW9uIEludGVybmFsUHJvbWlzZShleGVjdXRvcikKIHsK
ICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBpZiAodHlwZW9mIGV4ZWN1dG9yICE9PSAiZnVuY3Rp
b24iKQorICAgIGlmICghQGlzQ2FsbGFibGUoZXhlY3V0b3IpKQogICAgICAgICBAdGhyb3dUeXBl
RXJyb3IoIkludGVybmFsUHJvbWlzZSBjb25zdHJ1Y3RvciB0YWtlcyBhIGZ1bmN0aW9uIGFyZ3Vt
ZW50Iik7CiAKICAgICB2YXIgcHJvbWlzZSA9IEBjcmVhdGVQcm9taXNlKHRoaXMsIC8qIGlzSW50
ZXJuYWxQcm9taXNlICovIHRydWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL1Byb21pc2VPcGVyYXRpb25zLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcwkocmV2aXNpb24gMjY1NzUzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VPcGVyYXRpb25zLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OCwxMCArNTgsMTAgQEAgZnVuY3Rpb24gbmV3UHJvbWlzZUNhcGFiaWxp
dHlTbG93KGNvbnN0cgogICAgICAgICBwcm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0ID0gcmVqZWN0
OwogICAgIH0pOwogCi0gICAgaWYgKHR5cGVvZiBwcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZSAh
PT0gImZ1bmN0aW9uIikKKyAgICBpZiAoIUBpc0NhbGxhYmxlKHByb21pc2VDYXBhYmlsaXR5LkBy
ZXNvbHZlKSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJleGVjdXRvciBkaWQgbm90IHRha2Ug
YSByZXNvbHZlIGZ1bmN0aW9uIik7CiAKLSAgICBpZiAodHlwZW9mIHByb21pc2VDYXBhYmlsaXR5
LkByZWplY3QgIT09ICJmdW5jdGlvbiIpCisgICAgaWYgKCFAaXNDYWxsYWJsZShwcm9taXNlQ2Fw
YWJpbGl0eS5AcmVqZWN0KSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJleGVjdXRvciBkaWQg
bm90IHRha2UgYSByZWplY3QgZnVuY3Rpb24iKTsKIAogICAgIHByb21pc2VDYXBhYmlsaXR5LkBw
cm9taXNlID0gcHJvbWlzZTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBmdW5jdGlvbiByZXNvbHZlUHJv
bWlzZShwcm9taXNlLCByZXNvbHV0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
dHlwZW9mIHRoZW4gIT09ICdmdW5jdGlvbicpCisgICAgaWYgKCFAaXNDYWxsYWJsZSh0aGVuKSkK
ICAgICAgICAgcmV0dXJuIEBmdWxmaWxsUHJvbWlzZShwcm9taXNlLCByZXNvbHV0aW9uKTsKIAog
ICAgIEBlbnF1ZXVlSm9iKEBwcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iLCByZXNvbHV0aW9uLCB0
aGVuLCBAY3JlYXRlUmVzb2x2aW5nRnVuY3Rpb25zKHByb21pc2UpKTsKQEAgLTI5NSw3ICsyOTUs
NyBAQCBmdW5jdGlvbiByZXNvbHZlV2l0aG91dFByb21pc2UocmVzb2x1dGlvCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAodHlwZW9mIHRoZW4gIT09ICdmdW5jdGlvbicpIHsKKyAg
ICBpZiAoIUBpc0NhbGxhYmxlKHRoZW4pKSB7CiAgICAgICAgIEBmdWxmaWxsV2l0aG91dFByb21p
c2UocmVzb2x1dGlvbiwgb25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VQcm90
b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1By
b21pc2VQcm90b3R5cGUuanMJKHJldmlzaW9uIDI2NTc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9Qcm9taXNlUHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00OSwx
MCArNDksMTAgQEAgZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkKICAgICAg
ICAgcHJvbWlzZSA9IHByb21pc2VPckNhcGFiaWxpdHkuQHByb21pc2U7CiAgICAgfQogCi0gICAg
aWYgKHR5cGVvZiBvbkZ1bGZpbGxlZCAhPT0gImZ1bmN0aW9uIikKKyAgICBpZiAoIUBpc0NhbGxh
YmxlKG9uRnVsZmlsbGVkKSkKICAgICAgICAgb25GdWxmaWxsZWQgPSBmdW5jdGlvbiAoYXJndW1l
bnQpIHsgcmV0dXJuIGFyZ3VtZW50OyB9OwogCi0gICAgaWYgKHR5cGVvZiBvblJlamVjdGVkICE9
PSAiZnVuY3Rpb24iKQorICAgIGlmICghQGlzQ2FsbGFibGUob25SZWplY3RlZCkpCiAgICAgICAg
IG9uUmVqZWN0ZWQgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHsgdGhyb3cgYXJndW1lbnQ7IH07CiAK
ICAgICB2YXIgcmVhY3Rpb24gPSBAbmV3UHJvbWlzZVJlYWN0aW9uKHByb21pc2VPckNhcGFiaWxp
dHksIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTsKQEAgLTg2LDcgKzg2LDcgQEAgZnVuY3Rpb24g
ZmluYWxseShvbkZpbmFsbHkpCiAgICAgdmFyIHRoZW5GaW5hbGx5OwogICAgIHZhciBjYXRjaEZp
bmFsbHk7CiAKLSAgICBpZiAodHlwZW9mIG9uRmluYWxseSAhPT0gImZ1bmN0aW9uIikgeworICAg
IGlmICghQGlzQ2FsbGFibGUob25GaW5hbGx5KSkgewogICAgICAgICB0aGVuRmluYWxseSA9IG9u
RmluYWxseTsKICAgICAgICAgY2F0Y2hGaW5hbGx5ID0gb25GaW5hbGx5OwogICAgIH0gZWxzZSB7
CkBAIC0xMDQsNyArMTA0LDcgQEAgZnVuY3Rpb24gZ2V0VGhlbkZpbmFsbHkob25GaW5hbGx5LCBj
b25zdAogCiAgICAgcmV0dXJuICh2YWx1ZSkgPT4KICAgICB7Ci0gICAgICAgIEBhc3NlcnQodHlw
ZW9mIG9uRmluYWxseSA9PT0gImZ1bmN0aW9uIik7CisgICAgICAgIEBhc3NlcnQoQGlzQ2FsbGFi
bGUob25GaW5hbGx5KSk7CiAgICAgICAgIHZhciByZXN1bHQgPSBvbkZpbmFsbHkoKTsKIAogICAg
ICAgICBAYXNzZXJ0KEBpc0NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKSk7CkBAIC0xMjQsNyArMTI0
LDcgQEAgZnVuY3Rpb24gZ2V0Q2F0Y2hGaW5hbGx5KG9uRmluYWxseSwgY29ucwogCiAgICAgcmV0
dXJuIChyZWFzb24pID0+CiAgICAgewotICAgICAgICBAYXNzZXJ0KHR5cGVvZiBvbkZpbmFsbHkg
PT09ICJmdW5jdGlvbiIpOworICAgICAgICBAYXNzZXJ0KEBpc0NhbGxhYmxlKG9uRmluYWxseSkp
OwogICAgICAgICB2YXIgcmVzdWx0ID0gb25GaW5hbGx5KCk7CiAKICAgICAgICAgQGFzc2VydChA
aXNDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL1JlZmxlY3RPYmplY3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL1JlZmxlY3RPYmplY3QuanMJKHJldmlzaW9uIDI2NTc1MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWZsZWN0T2JqZWN0LmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw3ICsyOCw3IEBAIGZ1bmN0aW9uIGFwcGx5KHRhcmdldCwgdGhpc0FyZ3VtZW50
LCBhcmcKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBpZiAodHlwZW9mIHRhcmdldCAhPT0g
ImZ1bmN0aW9uIikKKyAgICBpZiAoIUBpc0NhbGxhYmxlKHRhcmdldCkpCiAgICAgICAgIEB0aHJv
d1R5cGVFcnJvcigiUmVmbGVjdC5hcHBseSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUg
YSBmdW5jdGlvbiIpOwogCiAgICAgaWYgKCFAaXNPYmplY3QoYXJndW1lbnRzTGlzdCkpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVnRXhwUHJvdG90eXBlLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWdFeHBQcm90b3R5cGUu
anMJKHJldmlzaW9uIDI2NTc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9S
ZWdFeHBQcm90b3R5cGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgZnVuY3Rp
b24gcmVnRXhwRXhlYyhyZWdleHAsIHN0cikKIAogICAgIHZhciBleGVjID0gcmVnZXhwLmV4ZWM7
CiAgICAgdmFyIGJ1aWx0aW5FeGVjID0gQHJlZ0V4cEJ1aWx0aW5FeGVjOwotICAgIGlmIChleGVj
ICE9PSBidWlsdGluRXhlYyAmJiB0eXBlb2YgZXhlYyA9PT0gImZ1bmN0aW9uIikgeworICAgIGlm
IChleGVjICE9PSBidWlsdGluRXhlYyAmJiBAaXNDYWxsYWJsZShleGVjKSkgewogICAgICAgICB2
YXIgcmVzdWx0ID0gZXhlYy5AY2FsbChyZWdleHAsIHN0cik7CiAgICAgICAgIGlmIChyZXN1bHQg
IT09IG51bGwgJiYgIUBpc09iamVjdChyZXN1bHQpKQogICAgICAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJUaGUgcmVzdWx0IG9mIGEgUmVnRXhwIGV4ZWMgbXVzdCBiZSBudWxsIG9yIGFuIG9iamVj
dCIpOwpAQCAtMjg1LDcgKzI4NSw3IEBAIGZ1bmN0aW9uIHJlcGxhY2Uoc3RyQXJnLCByZXBsYWNl
KQogCiAgICAgdmFyIHN0ciA9IEB0b1N0cmluZyhzdHJBcmcpOwogICAgIHZhciBzdHJpbmdMZW5n
dGggPSBzdHIubGVuZ3RoOwotICAgIHZhciBmdW5jdGlvbmFsUmVwbGFjZSA9IHR5cGVvZiByZXBs
YWNlID09PSAnZnVuY3Rpb24nOworICAgIHZhciBmdW5jdGlvbmFsUmVwbGFjZSA9IEBpc0NhbGxh
YmxlKHJlcGxhY2UpOwogCiAgICAgaWYgKCFmdW5jdGlvbmFsUmVwbGFjZSkKICAgICAgICAgcmVw
bGFjZSA9IEB0b1N0cmluZyhyZXBsYWNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9TZXRQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL1NldFByb3RvdHlwZS5qcwkocmV2aXNpb24gMjY1NzUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1NldFByb3RvdHlwZS5qcwkod29ya2luZyBjb3B5KQpA
QCAtMzAsNyArMzAsNyBAQCBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrIC8qLCB0aGlzQXJnICov
CiAgICAgaWYgKCFAaXNTZXQodGhpcykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiU2V0IG9w
ZXJhdGlvbiBjYWxsZWQgb24gbm9uLVNldCBvYmplY3QiKTsKIAotICAgIGlmICh0eXBlb2YgY2Fs
bGJhY2sgIT09ICdmdW5jdGlvbicpCisgICAgaWYgKCFAaXNDYWxsYWJsZShjYWxsYmFjaykpCiAg
ICAgICAgIEB0aHJvd1R5cGVFcnJvcigiU2V0LnByb3RvdHlwZS5mb3JFYWNoIGNhbGxiYWNrIG11
c3QgYmUgYSBmdW5jdGlvbiIpOwogCiAgICAgdmFyIHRoaXNBcmcgPSBAYXJndW1lbnQoMSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9y
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFy
cmF5Q29uc3RydWN0b3IuanMJKHJldmlzaW9uIDI2NTc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanMJKHdvcmtpbmcgY29weSkKQEAg
LTUzLDcgKzUzLDcgQEAgZnVuY3Rpb24gZnJvbShpdGVtcyAvKiBbICwgbWFwZm4gWyAsIHRoaQog
ICAgIHZhciB0aGlzQXJnOwogCiAgICAgaWYgKG1hcEZuICE9PSBAdW5kZWZpbmVkKSB7Ci0gICAg
ICAgIGlmICh0eXBlb2YgbWFwRm4gIT09ICJmdW5jdGlvbiIpCisgICAgICAgIGlmICghQGlzQ2Fs
bGFibGUobWFwRm4pKQogICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJUeXBlZEFycmF5LmZy
b20gcmVxdWlyZXMgdGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50LCB3aGVuIHByb3ZpZGVkLCBiZSBh
IGZ1bmN0aW9uIik7CiAKICAgICAgICAgdGhpc0FyZyA9IEBhcmd1bWVudCgyKTsKQEAgLTYzLDcg
KzYzLDcgQEAgZnVuY3Rpb24gZnJvbShpdGVtcyAvKiBbICwgbWFwZm4gWyAsIHRoaQogCiAgICAg
dmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlbXMuQEBpdGVyYXRvcjsKICAgICBpZiAoIUBpc1VuZGVm
aW5lZE9yTnVsbChpdGVyYXRvck1ldGhvZCkpIHsKLSAgICAgICAgaWYgKHR5cGVvZiBpdGVyYXRv
ck1ldGhvZCAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgaWYgKCFAaXNDYWxsYWJsZShpdGVyYXRv
ck1ldGhvZCkpCiAgICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlR5cGVkQXJyYXkuZnJvbSBy
ZXF1aXJlcyB0aGF0IHRoZSBwcm9wZXJ0eSBvZiB0aGUgZmlyc3QgYXJndW1lbnQsIGl0ZW1zW1N5
bWJvbC5pdGVyYXRvcl0sIHdoZW4gZXhpc3RzLCBiZSBhIGZ1bmN0aW9uIik7CiAKICAgICAgICAg
dmFyIGFjY3VtdWxhdG9yID0gW107CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcwkocmV2aXNpb24gMjY1NzUzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2sg
LyosIHRoaXNBcmcgKi8pCiAgICAgdmFyIGxlbmd0aCA9IEB0eXBlZEFycmF5TGVuZ3RoKHRoaXMp
OwogICAgIHZhciB0aGlzQXJnID0gQGFyZ3VtZW50KDEpOwogCi0gICAgaWYgKHR5cGVvZiBjYWxs
YmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNrKSkKICAg
ICAgICAgQHRocm93VHlwZUVycm9yKCJUeXBlZEFycmF5LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFj
ayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKIAogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3Ro
OyBpKyspIHsKQEAgLTEwOCw3ICsxMDgsNyBAQCBmdW5jdGlvbiBmaW5kKGNhbGxiYWNrIC8qIFss
IHRoaXNBcmddICovCiAgICAgdmFyIGxlbmd0aCA9IEB0eXBlZEFycmF5TGVuZ3RoKHRoaXMpOwog
ICAgIHZhciB0aGlzQXJnID0gQGFyZ3VtZW50KDEpOwogCi0gICAgaWYgKHR5cGVvZiBjYWxsYmFj
ayAhPT0gImZ1bmN0aW9uIikKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNrKSkKICAgICAg
ICAgQHRocm93VHlwZUVycm9yKCJUeXBlZEFycmF5LnByb3RvdHlwZS5maW5kIGNhbGxiYWNrIG11
c3QgYmUgYSBmdW5jdGlvbiIpOwogCiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkr
KykgewpAQCAtMTI1LDcgKzEyNSw3IEBAIGZ1bmN0aW9uIGZpbmRJbmRleChjYWxsYmFjayAvKiBb
LCB0aGlzQXIKICAgICB2YXIgbGVuZ3RoID0gQHR5cGVkQXJyYXlMZW5ndGgodGhpcyk7CiAgICAg
dmFyIHRoaXNBcmcgPSBAYXJndW1lbnQoMSk7CiAKLSAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9
PSAiZnVuY3Rpb24iKQorICAgIGlmICghQGlzQ2FsbGFibGUoY2FsbGJhY2spKQogICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoIlR5cGVkQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleCBjYWxsYmFjayBt
dXN0IGJlIGEgZnVuY3Rpb24iKTsKIAogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBp
KyspIHsKQEAgLTE0MSw3ICsxNDEsNyBAQCBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrIC8qIFss
IHRoaXNBcmddCiAgICAgdmFyIGxlbmd0aCA9IEB0eXBlZEFycmF5TGVuZ3RoKHRoaXMpOwogICAg
IHZhciB0aGlzQXJnID0gQGFyZ3VtZW50KDEpOwogCi0gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAh
PT0gImZ1bmN0aW9uIikKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNrKSkKICAgICAgICAg
QHRocm93VHlwZUVycm9yKCJUeXBlZEFycmF5LnByb3RvdHlwZS5mb3JFYWNoIGNhbGxiYWNrIG11
c3QgYmUgYSBmdW5jdGlvbiIpOwogCiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkr
KykKQEAgLTE1NSw3ICsxNTUsNyBAQCBmdW5jdGlvbiBzb21lKGNhbGxiYWNrIC8qIFssIHRoaXNB
cmddICovCiAgICAgdmFyIGxlbmd0aCA9IEB0eXBlZEFycmF5TGVuZ3RoKHRoaXMpOwogICAgIHZh
ciB0aGlzQXJnID0gQGFyZ3VtZW50KDEpOwogCi0gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0g
ImZ1bmN0aW9uIikKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNrKSkKICAgICAgICAgQHRo
cm93VHlwZUVycm9yKCJUeXBlZEFycmF5LnByb3RvdHlwZS5zb21lIGNhbGxiYWNrIG11c3QgYmUg
YSBmdW5jdGlvbiIpOwogCiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewpA
QCAtMjIzLDcgKzIyMyw3IEBAIGZ1bmN0aW9uIHNvcnQoY29tcGFyYXRvcikKICAgICBpZiAobGVu
Z3RoIDwgMikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHR5cGVvZiBjb21wYXJhdG9yID09
ICJmdW5jdGlvbiIpCisgICAgaWYgKEBpc0NhbGxhYmxlKGNvbXBhcmF0b3IpKQogICAgICAgICBt
ZXJnZVNvcnQodGhpcywgbGVuZ3RoLCBjb21wYXJhdG9yKTsKICAgICBlbHNlCiAgICAgICAgIEB0
eXBlZEFycmF5U29ydCh0aGlzKTsKQEAgLTI1NSw3ICsyNTUsNyBAQCBmdW5jdGlvbiByZWR1Y2Uo
Y2FsbGJhY2sgLyogWywgaW5pdGlhbFZhCiAKICAgICB2YXIgbGVuZ3RoID0gQHR5cGVkQXJyYXlM
ZW5ndGgodGhpcyk7CiAKLSAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQor
ICAgIGlmICghQGlzQ2FsbGFibGUoY2FsbGJhY2spKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
IlR5cGVkQXJyYXkucHJvdG90eXBlLnJlZHVjZSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24i
KTsKIAogICAgIHZhciBhcmd1bWVudENvdW50ID0gQGFyZ3VtZW50Q291bnQoKTsKQEAgLTI4MSw3
ICsyODEsNyBAQCBmdW5jdGlvbiByZWR1Y2VSaWdodChjYWxsYmFjayAvKiBbLCBpbml0CiAKICAg
ICB2YXIgbGVuZ3RoID0gQHR5cGVkQXJyYXlMZW5ndGgodGhpcyk7CiAKLSAgICBpZiAodHlwZW9m
IGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQorICAgIGlmICghQGlzQ2FsbGFibGUoY2FsbGJhY2sp
KQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlR5cGVkQXJyYXkucHJvdG90eXBlLnJlZHVjZVJp
Z2h0IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOwogCiAgICAgdmFyIGFyZ3VtZW50Q291
bnQgPSBAYXJndW1lbnRDb3VudCgpOwpAQCAtMzA3LDcgKzMwNyw3IEBAIGZ1bmN0aW9uIG1hcChj
YWxsYmFjayAvKiwgdGhpc0FyZyAqLykKIAogICAgIHZhciBsZW5ndGggPSBAdHlwZWRBcnJheUxl
bmd0aCh0aGlzKTsKIAotICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCisg
ICAgaWYgKCFAaXNDYWxsYWJsZShjYWxsYmFjaykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigi
VHlwZWRBcnJheS5wcm90b3R5cGUubWFwIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOwog
CiAgICAgdmFyIHRoaXNBcmcgPSBAYXJndW1lbnQoMSk7CkBAIC0zNDEsNyArMzQxLDcgQEAgZnVu
Y3Rpb24gZmlsdGVyKGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQogCiAgICAgdmFyIGxlbmd0aCA9
IEB0eXBlZEFycmF5TGVuZ3RoKHRoaXMpOwogCi0gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0g
ImZ1bmN0aW9uIikKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNrKSkKICAgICAgICAgQHRo
cm93VHlwZUVycm9yKCJUeXBlZEFycmF5LnByb3RvdHlwZS5maWx0ZXIgY2FsbGJhY2sgbXVzdCBi
ZSBhIGZ1bmN0aW9uIik7CiAKICAgICB2YXIgdGhpc0FyZyA9IEBhcmd1bWVudCgxKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkuaAkocmV2aXNpb24gMjY1NzUzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNiArNTIsNyBAQCBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgOiBpbnQzMl90
OwogICAgIG1hY3JvKGdldFNldEl0ZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKGlk
V2l0aFByb2ZpbGUpIFwKICAgICBtYWNybyhpc09iamVjdCkgXAorICAgIG1hY3JvKGlzQ2FsbGFi
bGUpIFwKICAgICBtYWNybyhpc0NvbnN0cnVjdG9yKSBcCiAgICAgbWFjcm8oaXNKU0FycmF5KSBc
CiAgICAgbWFjcm8oaXNQcm94eU9iamVjdCkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCShyZXZpc2lvbiAyNjU3NTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjksMTIgKzMyOSwxMyBAQCBvcF9ncm91cCA6VW5hcnlPcCwKICAgICAgICAgOmlzX2Vt
cHR5LAogICAgICAgICA6dHlwZW9mX2lzX3VuZGVmaW5lZCwKICAgICAgICAgOnR5cGVvZl9pc19v
YmplY3QsCisgICAgICAgIDp0eXBlb2ZfaXNfZnVuY3Rpb24sCiAgICAgICAgIDppc191bmRlZmlu
ZWRfb3JfbnVsbCwKICAgICAgICAgOmlzX2Jvb2xlYW4sCiAgICAgICAgIDppc19udW1iZXIsCiAg
ICAgICAgIDppc19iaWdfaW50LAogICAgICAgICA6aXNfb2JqZWN0LAotICAgICAgICA6aXNfZnVu
Y3Rpb24sCisgICAgICAgIDppc19jYWxsYWJsZSwKICAgICAgICAgOmlzX2NvbnN0cnVjdG9yLAog
ICAgIF0sCiAgICAgYXJnczogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCShyZXZpc2lvbiAyNjU3NTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODQsMTMgKzE4NCwxNCBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleElt
cGwoVmlyCiAgICAgVVNFUyhPcElzRW1wdHksIG9wZXJhbmQpCiAgICAgVVNFUyhPcFR5cGVvZklz
VW5kZWZpbmVkLCBvcGVyYW5kKQogICAgIFVTRVMoT3BUeXBlb2ZJc09iamVjdCwgb3BlcmFuZCkK
KyAgICBVU0VTKE9wVHlwZW9mSXNGdW5jdGlvbiwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNVbmRl
ZmluZWRPck51bGwsIG9wZXJhbmQpCiAgICAgVVNFUyhPcElzQm9vbGVhbiwgb3BlcmFuZCkKICAg
ICBVU0VTKE9wSXNOdW1iZXIsIG9wZXJhbmQpCiAgICAgVVNFUyhPcElzQmlnSW50LCBvcGVyYW5k
KQogICAgIFVTRVMoT3BJc09iamVjdCwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNDZWxsV2l0aFR5
cGUsIG9wZXJhbmQpCi0gICAgVVNFUyhPcElzRnVuY3Rpb24sIG9wZXJhbmQpCisgICAgVVNFUyhP
cElzQ2FsbGFibGUsIG9wZXJhbmQpCiAgICAgVVNFUyhPcElzQ29uc3RydWN0b3IsIG9wZXJhbmQp
CiAgICAgVVNFUyhPcFRvTnVtYmVyLCBvcGVyYW5kKQogICAgIFVTRVMoT3BUb051bWVyaWMsIG9w
ZXJhbmQpCkBAIC00OTEsMTMgKzQ5MiwxNCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleEltcGwodW5zCiAgICAgREVGUyhPcElzRW1wdHksIGRzdCkKICAgICBERUZTKE9wVHlwZW9m
SXNVbmRlZmluZWQsIGRzdCkKICAgICBERUZTKE9wVHlwZW9mSXNPYmplY3QsIGRzdCkKKyAgICBE
RUZTKE9wVHlwZW9mSXNGdW5jdGlvbiwgZHN0KQogICAgIERFRlMoT3BJc1VuZGVmaW5lZE9yTnVs
bCwgZHN0KQogICAgIERFRlMoT3BJc0Jvb2xlYW4sIGRzdCkKICAgICBERUZTKE9wSXNOdW1iZXIs
IGRzdCkKICAgICBERUZTKE9wSXNCaWdJbnQsIGRzdCkKICAgICBERUZTKE9wSXNPYmplY3QsIGRz
dCkKICAgICBERUZTKE9wSXNDZWxsV2l0aFR5cGUsIGRzdCkKLSAgICBERUZTKE9wSXNGdW5jdGlv
biwgZHN0KQorICAgIERFRlMoT3BJc0NhbGxhYmxlLCBkc3QpCiAgICAgREVGUyhPcElzQ29uc3Ry
dWN0b3IsIGRzdCkKICAgICBERUZTKE9wSW5CeUlkLCBkc3QpCiAgICAgREVGUyhPcEluQnlWYWws
IGRzdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNjU3NTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTcyMCw3ICsxNzIwLDcgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEVxdWFsaXR5T3BJbQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHZhbHVlID09ICJm
dW5jdGlvbiIpIHsKICAgICAgICAgICAgICAgICByZXdpbmQoKTsKLSAgICAgICAgICAgICAgICBP
cElzRnVuY3Rpb246OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlKTsKKyAgICAgICAgICAgICAg
ICBPcFR5cGVvZklzRnVuY3Rpb246OmVtaXQodGhpcywgZHN0LCBvcC5tX3ZhbHVlKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDQx
Miw2ICs0NDEyLDEyIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNPYmoK
ICAgICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dElzQ2FsbGFibGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCit7CisgICAgT3BJ
c0NhbGxhYmxlOjplbWl0KHRoaXMsIGRzdCwgc3JjKTsKKyAgICByZXR1cm4gZHN0OworfQorCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzQ29uc3RydWN0b3IoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCiB7CiAgICAgT3BJc0NvbnN0cnVjdG9yOjplbWl0KHRo
aXMsIGRzdCwgc3JjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDI2NTc1MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtOTI3LDYgKzkyNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0SXNNYXBJdGVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU01hcEl0ZXJhdG9y
VHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzU2V0SXRlcmF0b3IoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3Qs
IHNyYywgSlNTZXRJdGVyYXRvclR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc09i
amVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CisgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRJc0NhbGxhYmxlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdElzQ29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBzcmMpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNOdW1iZXIoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNOdWxs
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0RXF1YWxpdHlP
cDxPcFN0cmljdGVxPihkc3QsIHNyYywgZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpKTsgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAkocmV2aXNpb24gMjY1NzUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjc3LDYgKzE2
NzcsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfCiAgICAgfQog
CiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc09iamVjdCwgSXNPYmplY3QpCitD
UkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc0NhbGxhYmxlLCBJc0NhbGxhYmxlKQog
Q1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNDb25zdHJ1Y3RvciwgSXNDb25zdHJ1
Y3RvcikKIENSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzSlNBcnJheSwgSXNKU0Fy
cmF5KQogQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNQcm94eU9iamVjdCwgSXNQ
cm94eU9iamVjdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDI2NTc1MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQ1MiwxMyArMTQ1MiwxNCBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBJc0VtcHR5OgogICAgIGNhc2UgVHlw
ZU9mSXNVbmRlZmluZWQ6CiAgICAgY2FzZSBUeXBlT2ZJc09iamVjdDoKKyAgICBjYXNlIFR5cGVP
ZklzRnVuY3Rpb246CiAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICBjYXNlIElzQm9v
bGVhbjoKICAgICBjYXNlIElzTnVtYmVyOgogICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgY2FzZSBO
dW1iZXJJc0ludGVnZXI6CiAgICAgY2FzZSBJc09iamVjdDoKLSAgICBjYXNlIElzRnVuY3Rpb246
CisgICAgY2FzZSBJc0NhbGxhYmxlOgogICAgIGNhc2UgSXNDb25zdHJ1Y3RvcjoKICAgICBjYXNl
IElzQ2VsbFdpdGhUeXBlOgogICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzogewpAQCAtMTQ5MCw2
ICsxNDkxLDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
ICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2Rl
LCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUoKS5pc051bGwoKSkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBUeXBlT2ZJc0Z1bmN0aW9uOgorICAgICAgICAgICAgICAg
IHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihqc1R5cGVvZklzRnVuY3Rpb24obV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBjaGlsZC52YWx1ZSgp
KSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBJc1VuZGVmaW5l
ZE9yTnVsbDoKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oY2hp
bGQudmFsdWUoKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC0xNTA4LDIwICsxNTEyLDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeQogICAgICAgICAgICAgY2FzZSBJc09iamVjdDoKICAgICAgICAgICAgICAgICBzZXRD
b25zdGFudChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUoKS5pc09iamVjdCgpKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIElzRnVuY3Rpb246Ci0gICAgICAg
ICAgICAgICAgaWYgKGNoaWxkLnZhbHVlKCkuaXNPYmplY3QoKSkgewotICAgICAgICAgICAgICAg
ICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoY2hpbGQudmFsdWUoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChvYmplY3QtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCEob2JqZWN0LT5pbmxpbmVUeXBlRmxhZ3MoKSAm
IE92ZXJyaWRlc0dldENhbGxEYXRhKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnN0
YW50KG5vZGUsIGpzQm9vbGVhbihmYWxzZSkpOwotICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGp1c3QgY2FsbCBn
ZXRDYWxsRGF0YS4KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ0NTcKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0YW50V2FzU2V0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29s
ZWFuKGZhbHNlKSk7CisgICAgICAgICAgICBjYXNlIElzQ2FsbGFibGU6CisgICAgICAgICAgICAg
ICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNDYWxsYWJsZSht
X3ZtKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBJc0NvbnN0
cnVjdG9yOgogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGls
ZC52YWx1ZSgpLmlzQ29uc3RydWN0b3IobV92bSkpKTsKQEAgLTE3MjEsNyArMTcxMyw4IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSXNGdW5jdGlvbjoK
KyAgICAgICAgY2FzZSBUeXBlT2ZJc0Z1bmN0aW9uOgorICAgICAgICBjYXNlIElzQ2FsbGFibGU6
CiAgICAgICAgICAgICBpZiAoIShjaGlsZC5tX3R5cGUgJiB+U3BlY0Z1bmN0aW9uKSkgewogICAg
ICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih0cnVlKSk7CiAgICAgICAg
ICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDI2NTc1MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NzQ4LDYgKzU3NDgsMTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBo
KFR5cGVPZklzT2JqZWN0LCB2YWx1ZSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfdHlw
ZW9mX2lzX29iamVjdCk7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF90eXBlb2ZfaXNfZnVu
Y3Rpb246IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wVHlwZW9mSXNGdW5jdGlvbj4oKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0
KGJ5dGVjb2RlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFk
ZFRvR3JhcGgoVHlwZU9mSXNGdW5jdGlvbiwgdmFsdWUpKTsKKyAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX3R5cGVvZl9pc19mdW5jdGlvbik7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9p
c191bmRlZmluZWRfb3JfbnVsbDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BJc1VuZGVmaW5lZE9yTnVsbD4oKTsKICAgICAgICAgICAgIE5v
ZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1fb3BlcmFuZCk7CkBAIC01Nzk0LDExICs1ODAwLDEx
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2lzX29iamVjdCk7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9w
X2lzX2Z1bmN0aW9uOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcElzRnVuY3Rpb24+KCk7CisgICAgICAgIGNhc2Ugb3BfaXNfY2FsbGFibGU6
IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
SXNDYWxsYWJsZT4oKTsKICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KGJ5dGVjb2RlLm1f
b3BlcmFuZCk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoSXNG
dW5jdGlvbiwgdmFsdWUpKTsKLSAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2lzX2Z1bmN0aW9u
KTsKKyAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChJc0NhbGxhYmxl
LCB2YWx1ZSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXNfY2FsbGFibGUpOwogICAg
ICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9pc19jb25zdHJ1Y3RvcjogewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjY1
NzUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDUsMTMgKzE0NSwxNCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJp
bGl0eUxldmVsKE9wY29kZUlECiAgICAgY2FzZSBvcF9pc19lbXB0eToKICAgICBjYXNlIG9wX3R5
cGVvZl9pc191bmRlZmluZWQ6CiAgICAgY2FzZSBvcF90eXBlb2ZfaXNfb2JqZWN0OgorICAgIGNh
c2Ugb3BfdHlwZW9mX2lzX2Z1bmN0aW9uOgogICAgIGNhc2Ugb3BfaXNfdW5kZWZpbmVkX29yX251
bGw6CiAgICAgY2FzZSBvcF9pc19ib29sZWFuOgogICAgIGNhc2Ugb3BfaXNfbnVtYmVyOgogICAg
IGNhc2Ugb3BfaXNfYmlnX2ludDoKICAgICBjYXNlIG9wX2lzX29iamVjdDoKICAgICBjYXNlIG9w
X2lzX2NlbGxfd2l0aF90eXBlOgotICAgIGNhc2Ugb3BfaXNfZnVuY3Rpb246CisgICAgY2FzZSBv
cF9pc19jYWxsYWJsZToKICAgICBjYXNlIG9wX2lzX2NvbnN0cnVjdG9yOgogICAgIGNhc2Ugb3Bf
bm90OgogICAgIGNhc2Ugb3BfbGVzczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAyNjU3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNTk2LDEwICs1OTYsMTUg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICByZWFk
KE1pc2NGaWVsZHMpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVPZklzT2JqZWN0TG9j
LCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAg
cmV0dXJuOworCisgICAgY2FzZSBUeXBlT2ZJc0Z1bmN0aW9uOgorICAgICAgICByZWFkKE1pc2NG
aWVsZHMpOworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVPZklzRnVuY3Rpb25Mb2MsIE1p
c2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1
cm47CiAgICAgICAgIAotICAgIGNhc2UgSXNGdW5jdGlvbjoKKyAgICBjYXNlIElzQ2FsbGFibGU6
CiAgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7Ci0gICAgICAgIGRlZihIZWFwTG9jYXRpb24oSXNG
dW5jdGlvbkxvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7
CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oSXNDYWxsYWJsZUxvYywgTWlzY0ZpZWxkcywgbm9k
ZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGNh
c2UgSXNDb25zdHJ1Y3RvcjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAJKHJldmlzaW9uIDI2NTc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDEzICsxNDUsMTQgQEAgYm9vbCBkb2Vz
R0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgSXNFbXB0eToKICAgICBjYXNl
IFR5cGVPZklzVW5kZWZpbmVkOgogICAgIGNhc2UgVHlwZU9mSXNPYmplY3Q6CisgICAgY2FzZSBU
eXBlT2ZJc0Z1bmN0aW9uOgogICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgY2FzZSBJ
c0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJlcjoKICAgICBjYXNlIElzQmlnSW50OgogICAgIGNh
c2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNhc2UgSXNPYmplY3Q6Ci0gICAgY2FzZSBJc0Z1bmN0
aW9uOgorICAgIGNhc2UgSXNDYWxsYWJsZToKICAgICBjYXNlIElzQ29uc3RydWN0b3I6CiAgICAg
Y2FzZSBJc0NlbGxXaXRoVHlwZToKICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDI2
NTc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3MTUsMTEgKzI3MTUsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBJc0VtcHR5OgogICAgICAgICBjYXNlIFR5cGVPZklzVW5kZWZpbmVkOgogICAgICAgICBjYXNl
IFR5cGVPZklzT2JqZWN0OgorICAgICAgICBjYXNlIFR5cGVPZklzRnVuY3Rpb246CiAgICAgICAg
IGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgICAgIGNhc2UgSXNCb29sZWFuOgogICAgICAg
ICBjYXNlIElzTnVtYmVyOgogICAgICAgICBjYXNlIElzQmlnSW50OgotICAgICAgICBjYXNlIElz
RnVuY3Rpb246CisgICAgICAgIGNhc2UgSXNDYWxsYWJsZToKICAgICAgICAgY2FzZSBJc0NvbnN0
cnVjdG9yOgogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2Fz
ZSBKdW1wOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSGVhcExvY2F0
aW9uLmNwcAkocmV2aXNpb24gMjY1NzUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdIZWFwTG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw4ICs2NiwxMiBAQCB2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgTG9jCiAgICAgICAgIG91dC5wcmludCgi
VHlwZU9mSXNPYmplY3RMb2MiKTsKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FzZSBJc0Z1bmN0
aW9uTG9jOgotICAgICAgICBvdXQucHJpbnQoIklzRnVuY3Rpb25Mb2MiKTsKKyAgICBjYXNlIFR5
cGVPZklzRnVuY3Rpb25Mb2M6CisgICAgICAgIG91dC5wcmludCgiVHlwZU9mSXNGdW5jdGlvbkxv
YyIpOworICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIElzQ2FsbGFibGVMb2M6CisgICAgICAg
IG91dC5wcmludCgiSXNDYWxsYWJsZUxvYyIpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAog
ICAgIGNhc2UgSXNDb25zdHJ1Y3RvckxvYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSGVhcExvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdIZWFwTG9jYXRpb24uaAkocmV2aXNpb24gMjY1NzUzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSAr
NTQsMTAgQEAgZW51bSBMb2NhdGlvbktpbmQgewogICAgIEluZGV4ZWRQcm9wZXJ0eUpTTG9jLAog
ICAgIEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2VMb2MsCiAgICAgSW52YWxpZGF0aW9uUG9pbnRMb2Ms
Ci0gICAgSXNGdW5jdGlvbkxvYywKKyAgICBJc0NhbGxhYmxlTG9jLAogICAgIElzQ29uc3RydWN0
b3JMb2MsCiAgICAgVHlwZU9mSXNPYmplY3RMb2MsCisgICAgVHlwZU9mSXNGdW5jdGlvbkxvYywK
ICAgICBOYW1lZFByb3BlcnR5TG9jLAogICAgIFJlZ0V4cE9iamVjdExhc3RJbmRleExvYywKICAg
ICBTZXR0ZXJMb2MsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CShyZXZpc2lvbiAyNjU3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5NCw2ICszOTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSXNFbXB0eSwgTm9kZVJlc3VsdEJvb2xlYW4pIFwK
ICAgICBtYWNybyhUeXBlT2ZJc1VuZGVmaW5lZCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBt
YWNybyhUeXBlT2ZJc09iamVjdCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKKyAgICBtYWNybyhUeXBl
T2ZJc0Z1bmN0aW9uLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzVW5kZWZpbmVk
T3JOdWxsLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzQm9vbGVhbiwgTm9kZVJl
c3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc051bWJlciwgTm9kZVJlc3VsdEJvb2xlYW4pIFwK
QEAgLTQwMSw3ICs0MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
bWFjcm8oSXNCaWdJbnQsIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oTnVtYmVySXNJ
bnRlZ2VyLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzT2JqZWN0LCBOb2RlUmVz
dWx0Qm9vbGVhbikgXAotICAgIG1hY3JvKElzRnVuY3Rpb24sIE5vZGVSZXN1bHRCb29sZWFuKSBc
CisgICAgbWFjcm8oSXNDYWxsYWJsZSwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJ
c0NvbnN0cnVjdG9yLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzVHlwZWRBcnJh
eVZpZXcsIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oVHlwZU9mLCBOb2RlUmVzdWx0
SlMpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAkocmV2aXNpb24gMjY1NzUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExOCw3ICsyMTE4LDE4IEBAIHNpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblR5cGVPZklzT2IKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0SXNGdW5jdGlvbihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9iamVjdCkKK3NpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblR5cGVPZklzRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBvYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisK
KyAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBvYmplY3QpKTsKKworICAg
IHJldHVybiBqc1R5cGVvZklzRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBvYmplY3QpOworfQorCitz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RJc0NhbGxhYmxlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb2JqZWN0KQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CkBAIC0yMTI2LDExICsyMTM3LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uT2JqZWN0SXNGdQogCiAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2
bSwgb2JqZWN0KSk7CiAgICAgCi0gICAgaWYgKG9iamVjdC0+c3RydWN0dXJlKHZtKS0+bWFzcXVl
cmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKG9iamVjdC0+aXNDYWxsYWJsZSh2bSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gb2JqZWN0LT5pc0NhbGxhYmxlKHZtKTsKIH0KIAog
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSXNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyNjU3NTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjE0LDcgKzIxNCw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25XZWFrU2V0QWRkKFYK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25XZWFrTWFwU2V0KFZNKiwgSlNDZWxsKiwgSlND
ZWxsKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIGRvdWJsZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkZNb2RPbkludHMoaW50MzJfdCwgaW50MzJfdCkgV1RGX0lOVEVS
TkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHlwZU9mSXNPYmplY3QoSlNHbG9i
YWxPYmplY3QqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7Ci1zaXplX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25PYmplY3RJc0Z1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKikgV1RGX0lO
VEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHlwZU9mSXNGdW5jdGlvbihK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk9iamVjdElzQ2FsbGFibGUoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqKSBX
VEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Jc0NvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25UeXBlT2ZPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFsbG9jYXRl
U2ltcGxlUHJvcGVydHlTdG9yYWdlV2l0aEluaXRpYWxDYXBhY2l0eShWTSopIFdURl9JTlRFUk5B
TDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyNjU3NTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAzNiwxMyArMTAzNiwxNCBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIElzRW1wdHk6CiAgICAgICAgIGNhc2UgVHlwZU9mSXNVbmRlZmluZWQ6CiAgICAgICAgIGNh
c2UgVHlwZU9mSXNPYmplY3Q6CisgICAgICAgIGNhc2UgVHlwZU9mSXNGdW5jdGlvbjoKICAgICAg
ICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAg
ICAgIGNhc2UgSXNOdW1iZXI6CiAgICAgICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgICAgIGNhc2Ug
TnVtYmVySXNJbnRlZ2VyOgogICAgICAgICBjYXNlIElzT2JqZWN0OgotICAgICAgICBjYXNlIElz
RnVuY3Rpb246CisgICAgICAgIGNhc2UgSXNDYWxsYWJsZToKICAgICAgICAgY2FzZSBJc0NvbnN0
cnVjdG9yOgogICAgICAgICBjYXNlIElzQ2VsbFdpdGhUeXBlOgogICAgICAgICBjYXNlIElzVHlw
ZWRBcnJheVZpZXc6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaAkocmV2aXNpb24gMjY1NzUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1OCwxMyArMjU4LDE0IEBA
IGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIElzRW1w
dHk6CiAgICAgY2FzZSBUeXBlT2ZJc1VuZGVmaW5lZDoKICAgICBjYXNlIFR5cGVPZklzT2JqZWN0
OgorICAgIGNhc2UgVHlwZU9mSXNGdW5jdGlvbjoKICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxs
OgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNOdW1iZXI6CiAgICAgY2FzZSBJc0Jp
Z0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAgICBjYXNlIElzT2JqZWN0OgotICAg
IGNhc2UgSXNGdW5jdGlvbjoKKyAgICBjYXNlIElzQ2FsbGFibGU6CiAgICAgY2FzZSBJc0NvbnN0
cnVjdG9yOgogICAgIGNhc2UgSXNDZWxsV2l0aFR5cGU6CiAgICAgY2FzZSBJc1R5cGVkQXJyYXlW
aWV3OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAyNjU3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NjY5LDYgKzM2NjksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFR5cGVPZklzRnVuY3Rpb246IHsK
KyAgICAgICAgY29tcGlsZUlzQ2FsbGFibGUobm9kZSwgb3BlcmF0aW9uVHlwZU9mSXNGdW5jdGlv
bik7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6
IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1ZSwgVGFnV29yZCk7
CkBAIC0zNzIxLDggKzM3MjYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgSXNGdW5jdGlvbjogewot
ICAgICAgICBjb21waWxlSXNGdW5jdGlvbihub2RlKTsKKyAgICBjYXNlIElzQ2FsbGFibGU6IHsK
KyAgICAgICAgY29tcGlsZUlzQ2FsbGFibGUobm9kZSwgb3BlcmF0aW9uT2JqZWN0SXNDYWxsYWJs
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyNjU3NTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Mjg4LDYgKzQyODgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFR5cGVP
ZklzRnVuY3Rpb246IHsKKyAgICAgICAgY29tcGlsZUlzQ2FsbGFibGUobm9kZSwgb3BlcmF0aW9u
VHlwZU9mSXNGdW5jdGlvbik7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgSXNV
bmRlZmluZWRPck51bGw6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2
YWx1ZSk7CkBAIC00Njk2LDggKzQ3MDEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgSXNGdW5jdGlv
bjogewotICAgICAgICBjb21waWxlSXNGdW5jdGlvbihub2RlKTsKKyAgICBjYXNlIElzQ2FsbGFi
bGU6IHsKKyAgICAgICAgY29tcGlsZUlzQ2FsbGFibGUobm9kZSwgb3BlcmF0aW9uT2JqZWN0SXND
YWxsYWJsZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI2NTc1MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NTQ5LDcgKzk1NDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVHlwZU9mSXNPYmplCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSXNGdW5jdGlvbihOb2RlKiBu
b2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzQ2FsbGFibGUoTm9kZSogbm9kZSwg
U19KSVRPcGVyYXRpb25fR0Mgc2xvd1BhdGhPcGVyYXRpb24pCiB7CiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CiAgICAgCkBAIC05NTc4LDcgKzk1NzgsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlSXNGdW5jdGlvbihOCiAgICAgCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoCiAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBv
cGVyYXRpb25PYmplY3RJc0Z1bmN0aW9uLCByZXN1bHRHUFIsIGdsb2JhbE9iamVjdCwKKyAgICAg
ICAgICAgIHNsb3dQYXRoLCB0aGlzLCBzbG93UGF0aE9wZXJhdGlvbiwgcmVzdWx0R1BSLCBnbG9i
YWxPYmplY3QsCiAgICAgICAgICAgICB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKSk7CiAgICAgCiAg
ICAgZG9uZS5saW5rKCZtX2ppdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyNjU3NTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MDYs
NyArMTQwNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVTdHJpbmdSZXBsYWNlKE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVJc09iamVjdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVHlw
ZU9mSXNPYmplY3QoTm9kZSopOwotICAgIHZvaWQgY29tcGlsZUlzRnVuY3Rpb24oTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZUlzQ2FsbGFibGUoTm9kZSosIFNfSklUT3BlcmF0aW9uX0dDKTsKICAg
ICB2b2lkIGNvbXBpbGVJc0NvbnN0cnVjdG9yKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVUeXBl
T2YoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNoZWNrSXNDb25zdGFudChOb2RlKik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZp
c2lvbiAyNjU3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OSwxMyArMjU5LDE0IEBAIGlubGluZSBDYXBhYmls
aXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIElzRW1wdHk6CiAgICAgY2FzZSBU
eXBlT2ZJc1VuZGVmaW5lZDoKICAgICBjYXNlIFR5cGVPZklzT2JqZWN0OgorICAgIGNhc2UgVHlw
ZU9mSXNGdW5jdGlvbjoKICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNC
b29sZWFuOgogICAgIGNhc2UgSXNOdW1iZXI6CiAgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNl
IE51bWJlcklzSW50ZWdlcjoKICAgICBjYXNlIElzT2JqZWN0OgotICAgIGNhc2UgSXNGdW5jdGlv
bjoKKyAgICBjYXNlIElzQ2FsbGFibGU6CiAgICAgY2FzZSBJc0NvbnN0cnVjdG9yOgogICAgIGNh
c2UgSXNUeXBlZEFycmF5VmlldzoKICAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlz
aW9uIDI2NTc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3MCw2ICsxMzcwLDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBUeXBlT2ZJc09iamVjdDoKICAgICAgICAgICAgIGNvbXBpbGVUeXBlT2ZJc09iamVj
dCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHlwZU9mSXNGdW5jdGlvbjoK
KyAgICAgICAgICAgIGNvbXBpbGVJc0NhbGxhYmxlKG9wZXJhdGlvblR5cGVPZklzRnVuY3Rpb24p
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAg
ICAgICAgICAgICBjb21waWxlSXNVbmRlZmluZWRPck51bGwoKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTQzMCw4ICsxNDMzLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc09iamVjdDoK
ICAgICAgICAgICAgIGNvbXBpbGVJc09iamVjdCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgSXNGdW5jdGlvbjoKLSAgICAgICAgICAgIGNvbXBpbGVJc0Z1bmN0aW9uKCk7Cisg
ICAgICAgIGNhc2UgSXNDYWxsYWJsZToKKyAgICAgICAgICAgIGNvbXBpbGVJc0NhbGxhYmxlKG9w
ZXJhdGlvbk9iamVjdElzQ2FsbGFibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgSXNDb25zdHJ1Y3RvcjoKICAgICAgICAgICAgIGNvbXBpbGVJc0NvbnN0cnVjdG9yKCk7CkBA
IC0xMTcyOCw3ICsxMTczMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHNldEJvb2xlYW4ocmVzdWx0
KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlSXNGdW5jdGlvbigpCisgICAgdm9pZCBj
b21waWxlSXNDYWxsYWJsZShTX0pJVE9wZXJhdGlvbl9HQyBzbG93UGF0aE9wZXJhdGlvbikKICAg
ICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIApAQCAtMTE3NjEs
NyArMTE3NjQsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgc2xvd1Jlc3VsdFZhbHVlID0g
bGF6eVNsb3dQYXRoKAogICAgICAgICAgICAgWz0sICZ2bV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlv
bj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKHZtLAotICAgICAgICAg
ICAgICAgICAgICBvcGVyYXRpb25PYmplY3RJc0Z1bmN0aW9uLCBsb2NhdGlvbnNbMF0uZGlyZWN0
R1BSKCksCisgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoT3BlcmF0aW9uLCBsb2NhdGlvbnNb
MF0uZGlyZWN0R1BSKCksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihnbG9iYWxPYmplY3QpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCkpOwogICAgICAg
ICAgICAgfSwgdmFsdWUpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9v
dXQuYW5jaG9yKG1fb3V0Lm5vdE51bGwoc2xvd1Jlc3VsdFZhbHVlKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyNjU3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NCwxMCArMjg0LDExIEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX1NMT1dfT1Ao
bGVzc2VxKQogICAgICAgICBERUZJTkVfU0xPV19PUChncmVhdGVyKQogICAgICAgICBERUZJTkVf
U0xPV19PUChncmVhdGVyZXEpCi0gICAgICAgIERFRklORV9TTE9XX09QKGlzX2Z1bmN0aW9uKQor
ICAgICAgICBERUZJTkVfU0xPV19PUChpc19jYWxsYWJsZSkKICAgICAgICAgREVGSU5FX1NMT1df
T1AoaXNfY29uc3RydWN0b3IpCiAgICAgICAgIERFRklORV9TTE9XX09QKHR5cGVvZikKICAgICAg
ICAgREVGSU5FX1NMT1dfT1AodHlwZW9mX2lzX29iamVjdCkKKyAgICAgICAgREVGSU5FX1NMT1df
T1AodHlwZW9mX2lzX2Z1bmN0aW9uKQogICAgICAgICBERUZJTkVfU0xPV19PUChzdHJjYXQpCiAg
ICAgICAgIERFRklORV9TTE9XX09QKHB1c2hfd2l0aF9zY29wZSkKICAgICAgICAgREVGSU5FX1NM
T1dfT1AoY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjY1NzUzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw2
ICsxMzcsNyBAQCB1c2luZyBKX0pJVE9wZXJhdGlvbl9HSkkgPSBFbmNvZGVkSlNWYWx1CiB1c2lu
ZyBWX0pJVE9wZXJhdGlvbl9HU3NpSkpDID0gdm9pZChKSVRfT1BFUkFUSU9OICopKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIHVpbnRwdHJfdCk7CiB1c2luZyBDX0pJVE9wZXJhdGlvbl9UVCA9IHVpbnRwdHJfdChKSVRf
T1BFUkFUSU9OICopKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CiB1c2luZyBDX0pJVE9wZXJh
dGlvbl9CX0dKc3NKc3MgPSB1aW50cHRyX3QoSklUX09QRVJBVElPTiAqKShKU0dsb2JhbE9iamVj
dCosIEpTU3RyaW5nKiwgSlNTdHJpbmcqKTsKK3VzaW5nIFNfSklUT3BlcmF0aW9uX0dDID0gc2l6
ZV90KEpJVF9PUEVSQVRJT04gKikoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqKTsKIHVzaW5nIFNf
SklUT3BlcmF0aW9uX0dKSiA9IHNpemVfdChKSVRfT1BFUkFUSU9OICopKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKIHVzaW5nIFZfSklUT3BlcmF0aW9u
X0dKSkogPSB2b2lkKEpJVF9PUEVSQVRJT04gKikoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKIHVzaW5nIEpfSklUT3BlcmF0
aW9uX0dTc2lKSiA9IEVuY29kZWRKU1ZhbHVlKEpJVF9PUEVSQVRJT04gKikoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAyNjU3NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE3ODEsNyAr
MTc4MSw3IEBAIGVuZAogCiBzbG93UGF0aE9wKGluX2J5X2lkKQogc2xvd1BhdGhPcChpbl9ieV92
YWwpCi1zbG93UGF0aE9wKGlzX2Z1bmN0aW9uKQorc2xvd1BhdGhPcChpc19jYWxsYWJsZSkKIHNs
b3dQYXRoT3AoaXNfY29uc3RydWN0b3IpCiBzbG93UGF0aE9wKGxlc3MpCiBzbG93UGF0aE9wKGxl
c3NlcSkKQEAgLTE3OTksNiArMTc5OSw3IEBAIHNsb3dQYXRoT3AodGhyb3dfc3RhdGljX2Vycm9y
KQogc2xvd1BhdGhPcCh0b19pbmRleF9zdHJpbmcpCiBzbG93UGF0aE9wKHR5cGVvZikKIHNsb3dQ
YXRoT3AodHlwZW9mX2lzX29iamVjdCkKK3Nsb3dQYXRoT3AodHlwZW9mX2lzX2Z1bmN0aW9uKQog
c2xvd1BhdGhPcCh1bnJlYWNoYWJsZSkKIHNsb3dQYXRoT3AobmV3X3Byb21pc2UpCiBzbG93UGF0
aE9wKG5ld19nZW5lcmF0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI2NTc1MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgxMSwxMCArODExLDE3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90eXBlb2ZfaXNf
b2JqZWMKICAgICBSRVRVUk4oanNCb29sZWFuKGpzVHlwZW9mSXNPYmplY3QoZ2xvYmFsT2JqZWN0
LCBHRVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKSkpKTsKIH0KIAotU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2lzX2Z1bmN0aW9uKQorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3R5
cGVvZl9pc19mdW5jdGlvbikKIHsKICAgICBCRUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BJc0Z1bmN0aW9uPigpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BUeXBl
b2ZJc0Z1bmN0aW9uPigpOworICAgIFJFVFVSTihqc0Jvb2xlYW4oanNUeXBlb2ZJc0Z1bmN0aW9u
KGdsb2JhbE9iamVjdCwgR0VUX0MoYnl0ZWNvZGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc19jYWxsYWJsZSkKK3sKKyAgICBCRUdJTigp
OworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJc0NhbGxhYmxlPigpOwogICAgIFJFVFVS
Tihqc0Jvb2xlYW4oR0VUX0MoYnl0ZWNvZGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkuaXNDYWxsYWJs
ZSh2bSkpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDI2NTc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsOCAr
MjUyLDkgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9iaXRvcik7CiBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2JpdHhvcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3R5cGVvZik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3R5cGVv
Zl9pc19vYmplY3QpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90eXBlb2ZfaXNf
ZnVuY3Rpb24pOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pc19vYmplY3QpOwot
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pc19mdW5jdGlvbik7CitTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2lzX2NhbGxhYmxlKTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfaXNfY29uc3RydWN0b3IpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9pbl9ieV9pZCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luX2J5X3Zh
bCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjY1NzUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsx
NTEsMTYgQEAgU3RydWN0dXJlKiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbAogICAgIHJl
dHVybiBiYXNlQ2xhc3M7CiB9CiAKK0ludGVybmFsRnVuY3Rpb24qIEludGVybmFsRnVuY3Rpb246
OmNyZWF0ZUZ1bmN0aW9uVGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5h
dGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uKQoreworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmpl
Y3RQcm90b3R5cGUoKSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIEludGVybmFsRnVu
Y3Rpb246OlN0cnVjdHVyZUZsYWdzIHwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCksIEludGVybmFs
RnVuY3Rpb246OmluZm8oKSk7CisgICAgZ2xvYmFsT2JqZWN0LT5tYXNxdWVyYWRlc0FzVW5kZWZp
bmVkV2F0Y2hwb2ludCgpLT5maXJlQWxsKGdsb2JhbE9iamVjdC0+dm0oKSwgIkFsbG9jYXRlZCBt
YXNxdWVyYWRpbmcgb2JqZWN0Iik7CisgICAgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24gPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRlcm5hbEZ1bmN0aW9uPih2bS5oZWFwKSkgSW50
ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBuYXRpdmVGdW5jdGlvbik7CisgICAgZnVuY3Rp
b24tPmZpbmlzaENyZWF0aW9uKHZtLCBuYW1lLCBOYW1lQWRkaXRpb25Nb2RlOjpXaXRob3V0U3Ry
dWN0dXJlVHJhbnNpdGlvbik7CisgICAgZnVuY3Rpb24tPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCksIFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2Vj
LWdldGZ1bmN0aW9ucmVhbG0KIEpTR2xvYmFsT2JqZWN0KiBnZXRGdW5jdGlvblJlYWxtKFZNJiB2
bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGVybmFsRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHJldmlzaW9uIDI2NTc1MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoSlNHbG9iYWxPYmpl
Y3QqLCBKU09iamVjdCogbmV3VGFyZ2V0LCBTdHJ1Y3R1cmUqKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgSW50ZXJuYWxGdW5jdGlvbiogY3JlYXRlRnVuY3Rpb25UaGF0TWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZChWTSYsIEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbik7CiAKICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBu
YXRpdmVGdW5jdGlvbkZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiAgICAgewpAQCAt
ODMsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9CiAKIHByb3RlY3RlZDoKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBJbnRlcm5hbEZ1bmN0aW9uKFZNJiwgU3RydWN0dXJlKiwgTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb25Gb3JDYWxsLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbkZvckNv
bnN0cnVjdCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSW50ZXJuYWxGdW5jdGlvbihWTSYsIFN0
cnVjdHVyZSosIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uRm9yQ2FsbCwgTmF0aXZlRnVuY3Rpb24g
ZnVuY3Rpb25Gb3JDb25zdHJ1Y3QgPSBudWxscHRyKTsKIAogICAgIGVudW0gY2xhc3MgTmFtZUFk
ZGl0aW9uTW9kZSB7IFdpdGhTdHJ1Y3R1cmVUcmFuc2l0aW9uLCBXaXRob3V0U3RydWN0dXJlVHJh
bnNpdGlvbiB9OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hbWVBZGRpdGlvbk1vZGUgPSBOYW1lQWRkaXRpb25Nb2Rl
OjpXaXRoU3RydWN0dXJlVHJhbnNpdGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMjY1NzUzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1
LDE2ICs5NSw2IEBAIEpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEoKICAg
ICByZXR1cm4gZnVuY3Rpb247CiB9CiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZUZ1
bmN0aW9uVGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0
aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBu
YXRpdmVDb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZSkKLXsK
LSAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKG5h
dGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yLCBzaWduYXR1cmUsIG5h
bWUpOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSwgVHlwZUluZm8oSlNG
dW5jdGlvblR5cGUsIEpTRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzIHwgTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCksIEpTRnVuY3Rpb246OmluZm8oKSk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5tYXNxdWVy
YWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5maXJlQWxsKGdsb2JhbE9iamVjdC0+dm0oKSwg
IkFsbG9jYXRlZCBtYXNxdWVyYWRpbmcgb2JqZWN0Iik7Ci0gICAgSlNGdW5jdGlvbiogZnVuY3Rp
b24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPih2bS5oZWFwKSkgSlNG
dW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwotICAgIGZ1
bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKLSAg
ICByZXR1cm4gZnVuY3Rpb247Ci19Ci0KIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oVk0mIHZtLCBO
YXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlKQogICAgICwgbV9leGVjdXRhYmxlT3JSYXJlRGF0YShiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihleGVjdXRhYmxlKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgJKHJldmlzaW9uIDI2NTc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNiBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFN0cnVjdHVyZSogc2VsZWN0U3RydWN0dXJlRm9yTmV3RnVuY0V4cChK
U0dsb2JhbE9iamVjdCosIEZ1bmN0aW9uRXhlY3V0YWJsZSopOwogCiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgaW50
IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljID0g
Tm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RG
dW5jdGlvbkFzQ29uc3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiA9IG51bGxwdHIp
OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGVGdW5jdGlv
blRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVu
Z3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0lu
dHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0
aW9uQXNDb25zdHJ1Y3RvciwgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqID0gbnVsbHB0cik7CiAg
ICAgCiAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2Nh
dGlvbldhdGNocG9pbnQoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJKHJldmlzaW9u
IDI2NTc1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsMjEgQEAgSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JW
YWx1ZShWTSYsIEpTR2xvYgogYm9vbCBqc1R5cGVvZklzT2JqZWN0KEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CiBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oSlNHbG9iYWxPYmplY3Qq
LCBKU0NlbGwqLCBib29sJiBzYXdQb2x5UHJvdG8pOwogCitBTFdBWVNfSU5MSU5FIGJvb2wganNU
eXBlb2ZJc0Z1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGlmICh2YWx1ZS5p
c09iamVjdCgpKSB7CisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7
CisgICAgICAgIGlmIChvYmplY3QtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAob2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5tYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGlmIChvYmplY3QtPmlzQ2FsbGFibGUodm0pKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogQUxXQVlTX0lOTElORSBK
U1N0cmluZyoganNTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3Ry
aW5nJiB1MSwgSlNTdHJpbmcqIHMyKQogewogICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVj
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjU2NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wOC0xNyAgQWxl
eGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgSW50cm9kdWNl
IE9wSXNDYWxsYWJsZSBieXRlY29kZSBhbmQgaW50cmluc2ljCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU1NzIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNo
YW5nZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpvcGVuRGF0YWJhc2UgY29uc3QpOgorCiAyMDIw
LTA4LTEzICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtXZWJYUl0gSW1wbGVtZW50IFdlYlhSU2Vzc2lvbjo6dXBkYXRlUmVuZGVyU3RhdGUoKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAkocmV2aXNpb24gMjY1NjY5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5j
bHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0J1
aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ludGVybmFsRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNG
dW5jdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTWljcm90YXNrLmg+CkBAIC02
NDQsNyArNjQ1LDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6b3BlbkRhdGFiYXNlKEpTQzo6Sgog
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlNRTEVu
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgJmxleGljYWxH
bG9iYWxPYmplY3QsIDQsIG5hbWUsIGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbk9wZW5EYXRh
YmFzZSwgTm9JbnRyaW5zaWMpOwogCi0gICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZUZ1bmN0
aW9uVGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCA0
LCBuYW1lLCBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25PcGVuRGF0YWJhc2UsIE5vSW50cmlu
c2ljKTsKKyAgICByZXR1cm4gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlRnVuY3Rpb25UaGF0TWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCh2bSwgJmxleGljYWxHbG9iYWxPYmplY3QsIDQsIG5hbWUsIGpz
RE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbk9wZW5EYXRhYmFzZSk7CiB9CiAKIHZvaWQgSlNET01X
aW5kb3c6OnNldE9wZW5EYXRhYmFzZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjU2NjkpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAor
MjAyMC0wOC0xNyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAg
ICAgICAgSW50cm9kdWNlIE9wSXNDYWxsYWJsZSBieXRlY29kZSBhbmQgaW50cmluc2ljCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU1NzIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2RvbS9kb2N1
bWVudC1hbGwtaXMtY2FsbGFibGUtYnVpbHRpbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9kb20vZG9jdW1lbnQtYWxsLWlzLWNhbGxhYmxlLWJ1aWx0aW5zLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGpzL2RvbS9kb2N1bWVudC1hbGwtdHlwZW9mLWlzLWZ1bmN0aW9uLWZvbGQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9jdW1lbnQtYWxsLXR5cGVv
Zi1pcy1mdW5jdGlvbi1mb2xkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9zY3JpcHQt
dGVzdHMvZG9jdW1lbnQtYWxsLWlzLWNhbGxhYmxlLWJ1aWx0aW5zLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9kb20vc2NyaXB0LXRlc3RzL2RvY3VtZW50LWFsbC10eXBlb2YtaXMtZnVuY3Rpb24t
Zm9sZC5qczogQWRkZWQuCisKIDIwMjAtMDgtMTMgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmls
bGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dlYlhSXSBJbXBsZW1lbnQgV2ViWFJTZXNzaW9u
Ojp1cGRhdGVSZW5kZXJTdGF0ZSgpCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9kb20vZG9jdW1lbnQt
YWxsLWlzLWNhbGxhYmxlLWJ1aWx0aW5zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9kb20vZG9jdW1lbnQtYWxsLWlzLWNhbGxhYmxlLWJ1aWx0aW5zLWV4cGVjdGVk
LnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9qcy9kb20vZG9jdW1lbnQtYWxsLWlz
LWNhbGxhYmxlLWJ1aWx0aW5zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEzIEBACitkb2N1bWVudC5hbGwgaXMgY2FsbGFibGUgKGJ1aWx0aW5zKQorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0ZXN0QXJyYXkoKSBpcyB0cnVlCitQQVNTIHRlc3RU
eXBlZEFycmF5KCkgaXMgdHJ1ZQorUEFTUyB0ZXN0UmVnRXhwKCkgaXMgdHJ1ZQorUEFTUyB0ZXN0
T3RoZXJCdWlsdGlucygpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9kb20vZG9jdW1lbnQtYWxs
LWlzLWNhbGxhYmxlLWJ1aWx0aW5zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMv
ZG9tL2RvY3VtZW50LWFsbC1pcy1jYWxsYWJsZS1idWlsdGlucy5odG1sCShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2pzL2RvbS9kb2N1bWVudC1hbGwtaXMtY2FsbGFibGUtYnVpbHRpbnMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9k
b2N1bWVudC1hbGwtaXMtY2FsbGFibGUtYnVpbHRpbnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvZG9tL2RvY3VtZW50LWFsbC10eXBlb2YtaXMt
ZnVuY3Rpb24tZm9sZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMv
ZG9tL2RvY3VtZW50LWFsbC10eXBlb2YtaXMtZnVuY3Rpb24tZm9sZC1leHBlY3RlZC50eHQJKG5v
bmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvanMvZG9tL2RvY3VtZW50LWFsbC10eXBlb2YtaXMt
ZnVuY3Rpb24tZm9sZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMSBA
QAordHlwZW9mIGRvY3VtZW50LmFsbCBpcyBuZXZlciAnZnVuY3Rpb24nCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIHRlc3RUeXBlb2ZJc0Z1Y3Rpb24oKSBpcyBmYWxzZQor
UEFTUyB0ZXN0VHlwZW9mSXNOb3RGdWN0aW9uKCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL2Rv
bS9kb2N1bWVudC1hbGwtdHlwZW9mLWlzLWZ1bmN0aW9uLWZvbGQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9qcy9kb20vZG9jdW1lbnQtYWxsLXR5cGVvZi1pcy1mdW5jdGlvbi1mb2xk
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvanMvZG9tL2RvY3VtZW50LWFsbC10
eXBlb2YtaXMtZnVuY3Rpb24tZm9sZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAg
QEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL2RvY3VtZW50LWFsbC10eXBlb2YtaXMtZnVuY3Rpb24tZm9s
ZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9k
b20vc2NyaXB0LXRlc3RzL2RvY3VtZW50LWFsbC1pcy1jYWxsYWJsZS1idWlsdGlucy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL2RvY3VtZW50LWFsbC1p
cy1jYWxsYWJsZS1idWlsdGlucy5qcwkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9qcy9k
b20vc2NyaXB0LXRlc3RzL2RvY3VtZW50LWFsbC1pcy1jYWxsYWJsZS1idWlsdGlucy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBACitkZXNjcmlwdGlvbigiZG9jdW1lbnQuYWxsIGlz
IGNhbGxhYmxlIChidWlsdGlucykiKTsKK2NvbnN0IGRvY3VtZW50QWxsID0gZG9jdW1lbnQuYWxs
OworCitmdW5jdGlvbiB0ZXN0QXJyYXkoKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7
ICsraSkgeworICAgICAgICBBcnJheS5mcm9tKFtdLCBkb2N1bWVudEFsbCk7CisgICAgICAgIFtd
LnJlZHVjZShkb2N1bWVudEFsbCwgbnVsbCk7CisgICAgICAgIFtdLnJlZHVjZVJpZ2h0KGRvY3Vt
ZW50QWxsLCBudWxsKTsKKyAgICAgICAgW10uZXZlcnkoZG9jdW1lbnRBbGwpOworICAgICAgICBb
XS5mb3JFYWNoKGRvY3VtZW50QWxsKTsKKyAgICAgICAgW10uZmlsdGVyKGRvY3VtZW50QWxsKTsK
KyAgICAgICAgW10ubWFwKGRvY3VtZW50QWxsKTsKKyAgICAgICAgW10uc29tZShkb2N1bWVudEFs
bCk7CisgICAgICAgIFtdLmZpbmQoZG9jdW1lbnRBbGwpOworICAgICAgICBbXS5maW5kSW5kZXgo
ZG9jdW1lbnRBbGwpOworICAgICAgICBbXS5zb3J0KGRvY3VtZW50QWxsKTsKKyAgICAgICAgW10u
ZmxhdE1hcChkb2N1bWVudEFsbCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitmdW5j
dGlvbiB0ZXN0VHlwZWRBcnJheSgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytp
KSB7CisgICAgICAgIEZsb2F0NjRBcnJheS5mcm9tKFtdLCBkb2N1bWVudEFsbCk7CisgICAgICAg
IChuZXcgRmxvYXQzMkFycmF5KS5ldmVyeShkb2N1bWVudEFsbCk7CisgICAgICAgIChuZXcgSW50
MzJBcnJheSkuZmluZChkb2N1bWVudEFsbCk7CisgICAgICAgIChuZXcgSW50MTZBcnJheSkuZmlu
ZEluZGV4KGRvY3VtZW50QWxsKTsKKyAgICAgICAgKG5ldyBJbnQ4QXJyYXkpLmZvckVhY2goZG9j
dW1lbnRBbGwpOworICAgICAgICAobmV3IFVpbnQzMkFycmF5KS5zb21lKGRvY3VtZW50QWxsKTsK
KyAgICAgICAgKG5ldyBVaW50MTZBcnJheSkuc29ydChkb2N1bWVudEFsbCk7CisgICAgICAgIChu
ZXcgVWludDhBcnJheSkucmVkdWNlKGRvY3VtZW50QWxsLCBudWxsKTsKKyAgICAgICAgKG5ldyBV
aW50OENsYW1wZWRBcnJheSkucmVkdWNlUmlnaHQoZG9jdW1lbnRBbGwsIG51bGwpOworICAgICAg
ICAobmV3IEZsb2F0NjRBcnJheSkubWFwKGRvY3VtZW50QWxsKTsKKyAgICAgICAgKG5ldyBGbG9h
dDMyQXJyYXkpLmZpbHRlcihkb2N1bWVudEFsbCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQorCitmdW5jdGlvbiB0ZXN0UmVnRXhwKCkgeworICAgIHZhciB0ZXN0ID0gUmVnRXhwLnByb3Rv
dHlwZS50ZXN0OworICAgIHZhciByZXBsYWNlID0gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wucmVw
bGFjZV07CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGlm
ICh0ZXN0LmNhbGwoe2V4ZWM6IGRvY3VtZW50QWxsfSwgIngiKSAhPT0gZmFsc2UpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKHJlcGxhY2UuY2FsbCgvLi8sICJ4Iiwg
ZG9jdW1lbnRBbGwpICE9PSAibnVsbCIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiB0ZXN0T3RoZXJCdWlsdGlucygpIHsK
KyAgICBQcm9taXNlLnJlc29sdmUgPSBkb2N1bWVudEFsbDsKKworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgUHJvbWlzZS5hbGwoW10pOworICAgICAgICBQcm9t
aXNlLmFsbFNldHRsZWQoW10pOworICAgICAgICBQcm9taXNlLmFueShbXSk7CisgICAgICAgIFBy
b21pc2UucmFjZShbXSk7CisgICAgICAgIG5ldyBQcm9taXNlKGRvY3VtZW50QWxsKTsKKworICAg
ICAgICBSZWZsZWN0LmFwcGx5KGRvY3VtZW50QWxsLCBudWxsLCBbXSk7CisgICAgICAgIEZ1bmN0
aW9uLnByb3RvdHlwZS5iaW5kLmNhbGwoZG9jdW1lbnRBbGwpOworICAgICAgICAobmV3IE1hcCku
Zm9yRWFjaChkb2N1bWVudEFsbCk7CisgICAgICAgIChuZXcgU2V0KS5mb3JFYWNoKGRvY3VtZW50
QWxsKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Nob3VsZEJlVHJ1ZSgidGVzdEFy
cmF5KCkiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdFR5cGVkQXJyYXkoKSIpOworc2hvdWxkQmVUcnVl
KCJ0ZXN0UmVnRXhwKCkiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdE90aGVyQnVpbHRpbnMoKSIpOwpJ
bmRleDogTGF5b3V0VGVzdHMvanMvZG9tL3NjcmlwdC10ZXN0cy9kb2N1bWVudC1hbGwtdHlwZW9m
LWlzLWZ1bmN0aW9uLWZvbGQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZG9tL3Nj
cmlwdC10ZXN0cy9kb2N1bWVudC1hbGwtdHlwZW9mLWlzLWZ1bmN0aW9uLWZvbGQuanMJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvanMvZG9tL3NjcmlwdC10ZXN0cy9kb2N1bWVudC1hbGwt
dHlwZW9mLWlzLWZ1bmN0aW9uLWZvbGQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBA
QAorZGVzY3JpcHRpb24oInR5cGVvZiBkb2N1bWVudC5hbGwgaXMgbmV2ZXIgJ2Z1bmN0aW9uJyIp
OworY29uc3QgZG9jdW1lbnRBbGwgPSBkb2N1bWVudC5hbGw7CisKK2Z1bmN0aW9uIHRlc3RUeXBl
b2ZJc0Z1Y3Rpb24oKSB7CisgICAgbGV0IGFjYyA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxZTY7ICsraSkKKyAgICAgICAgYWNjICs9ICh0eXBlb2YgZG9jdW1lbnRBbGwgPT09ICJmdW5j
dGlvbiIpOworICAgIHJldHVybiBhY2MgPT09IDFlNjsKK30KKworZnVuY3Rpb24gdGVzdFR5cGVv
ZklzTm90RnVjdGlvbigpIHsKKyAgICBsZXQgYWNjID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDFlNjsgKytpKQorICAgICAgICBhY2MgKz0gKHR5cGVvZiBkb2N1bWVudEFsbCAhPT0gImZ1
bmN0aW9uIik7CisgICAgcmV0dXJuIGFjYyA9PT0gMWU2OworfQorCitzaG91bGRCZUZhbHNlKCJ0
ZXN0VHlwZW9mSXNGdWN0aW9uKCkiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdFR5cGVvZklzTm90RnVj
dGlvbigpIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406868</attachid>
            <date>2020-08-19 12:51:31 -0700</date>
            <delta_ts>2020-08-19 16:25:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215572-20200819225129.patch</filename>
            <type>text/plain</type>
            <size>74912</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1ODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Yzg1Y2M3NjdiOTk4NTU0N2JhNzVlZDhiMTQ3ODdmMWNmNTkxZjA4Li5iZjMzZWZjYTMxNDE3YjMz
YmYxNTFmZGU0Njg2ZDU5NmQzY2IyNTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDggQEAKKzIwMjAtMDgtMTkgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21h
aWwuY29tPgorCisgICAgICAgIEludHJvZHVjZSBPcElzQ2FsbGFibGUgYnl0ZWNvZGUgYW5kIGlu
dHJpbnNpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE1NTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUm9zcyBLaXJzbGluZyBhbmQgU2FhbSBCYXJh
dGkuCisKKyAgICAgICAgVGhpcyBwYXRjaDoKKworICAgICAgICAxLiBBbGlnbnMgc2xvd19wYXRo
X2lzX2Z1bmN0aW9uIHdpdGggREZHL0ZUTCBpbXBsZW1lbnRhdGlvbnMgYnkgaW50cm9kdWNpbmcK
KyAgICAgICAgICAganNUeXBlb2ZJc0Z1bmN0aW9uKCkgaGVscGVyLiBUaGlzIGZpeGVzIGB0eXBl
b2YgZG9jdW1lbnQuYWxsID09PSAiZnVuY3Rpb24iYAorICAgICAgICAgICB0byByZXR1cm4gYGZh
bHNlYCBpbnN0ZWFkIG9mIGB0cnVlYC4KKworICAgICAgICAyLiBSZW5hbWVzIGlzX2Z1bmN0aW9u
IGJ5dGVjb2RlIG9wIHRvIHR5cGVvZl9pc19mdW5jdGlvbiwgYWxpZ25pbmcgaXQgd2l0aAorICAg
ICAgICAgICB0eXBlb2ZfaXNfdW5kZWZpbmVkIGFuZCB0eXBlb2ZfaXNfb2JqZWN0LiBOZXcgbmFt
ZSBvZmZlcnMgYmV0dGVyIHNlbWFudGljcworICAgICAgICAgICBhbmQgY2xlYXJseSBjb21tdW5p
Y2F0ZXMgdGhlIG9wIHNob3VsZCBiZSBhdm9pZGVkIHdoZW4gaW1wbGVtZW50aW5nIG5ldworICAg
ICAgICAgICBmZWF0dXJlcyBiZWNhdXNlIG9mIGB0eXBlb2ZgIGJlaGF2aW9yIHdpdGggW1tJc0hU
TUxEREFdXSBvYmplY3RzIFsxXS4KKworICAgICAgICAzLiBBZGRzIGlzX2NhbGxhYmxlIGJ5dGVj
b2RlIG9wIGFuZCB1dGlsaXplcyBpdCBpbiBidWlsdC1pbnMgdmlhIGludHJpbnNpYywKKyAgICAg
ICAgICAgcmVtb3ZpbmcgYHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9uImAgY2hlY2tzLiBU
aGlzIHByZXZlbnRzIFtbSXNIVE1MRERBXV0KKyAgICAgICAgICAgb2JqZWN0cyBmcm9tIGJlaW5n
IGNvbnNpZGVyZWQgbm9uLWNhbGxhYmxlIFsyXS4KKworICAgICAgICAgICBUbyBwcmVzZXJ2ZSB0
aGUgZmFzdCBwYXRoIGZvciBKU0Z1bmN0aW9uVHlwZSwKKyAgICAgICAgICAgY3JlYXRlRnVuY3Rp
b25UaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpIGlzIHJlbG9jYXRlZCB0byBJbnRlcm5hbEZ1
bmN0aW9uLgorCisgICAgICAgIGB0eXBlb2ZgIG1pY3JvYmVuY2htYXJrcyBhcmUgbmV1dHJhbC4K
KworICAgICAgICBbMV06IGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWlu
dGVybmFsLXNsb3QtdHlwZW9mCisgICAgICAgIFsyXTogaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIv
I3NlYy1hcnJheS5wcm90b3R5cGUubWFwIChzdGVwIDMpCisKKyAgICAgICAgKiBidWlsdGlucy9B
cnJheUNvbnN0cnVjdG9yLmpzOgorICAgICAgICAqIGJ1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpz
OgorICAgICAgICAocmVkdWNlKToKKyAgICAgICAgKHJlZHVjZVJpZ2h0KToKKyAgICAgICAgKGV2
ZXJ5KToKKyAgICAgICAgKGZvckVhY2gpOgorICAgICAgICAoZmlsdGVyKToKKyAgICAgICAgKG1h
cCk6CisgICAgICAgIChzb21lKToKKyAgICAgICAgKGZpbmQpOgorICAgICAgICAoZmluZEluZGV4
KToKKyAgICAgICAgKHNvcnQpOgorICAgICAgICAoZmxhdE1hcCk6CisgICAgICAgICogYnVpbHRp
bnMvRnVuY3Rpb25Qcm90b3R5cGUuanM6CisgICAgICAgIChvdmVycmlkZGVuTmFtZS5zdHJpbmdf
YXBwZWFyZWRfaGVyZS5zeW1ib2xIYXNJbnN0YW5jZSk6CisgICAgICAgIChiaW5kKToKKyAgICAg
ICAgKiBidWlsdGlucy9NYXBQcm90b3R5cGUuanM6CisgICAgICAgIChmb3JFYWNoKToKKyAgICAg
ICAgKiBidWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanM6CisgICAgICAgIChhbGwpOgorICAg
ICAgICAoYWxsU2V0dGxlZCk6CisgICAgICAgIChhbnkpOgorICAgICAgICAocmFjZSk6CisgICAg
ICAgIChuYWtlZENvbnN0cnVjdG9yLlByb21pc2UpOgorICAgICAgICAobmFrZWRDb25zdHJ1Y3Rv
ci5JbnRlcm5hbFByb21pc2UpOgorICAgICAgICAqIGJ1aWx0aW5zL1Byb21pc2VPcGVyYXRpb25z
LmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5uZXdQcm9taXNlQ2FwYWJpbGl0eVNsb3cpOgor
ICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5yZXNvbHZlUHJvbWlzZSk6CisgICAgICAgIChnbG9iYWxQ
cml2YXRlLnJlc29sdmVXaXRob3V0UHJvbWlzZSk6CisgICAgICAgICogYnVpbHRpbnMvUHJvbWlz
ZVByb3RvdHlwZS5qczoKKyAgICAgICAgKGZpbmFsbHkpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0
ZS5nZXRUaGVuRmluYWxseSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmdldENhdGNoRmluYWxs
eSk6CisgICAgICAgICogYnVpbHRpbnMvUmVmbGVjdE9iamVjdC5qczoKKyAgICAgICAgKGFwcGx5
KToKKyAgICAgICAgKiBidWlsdGlucy9SZWdFeHBQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9i
YWxQcml2YXRlLnJlZ0V4cEV4ZWMpOgorICAgICAgICAob3ZlcnJpZGRlbk5hbWUuc3RyaW5nX2Fw
cGVhcmVkX2hlcmUucmVwbGFjZSk6CisgICAgICAgICogYnVpbHRpbnMvU2V0UHJvdG90eXBlLmpz
OgorICAgICAgICAoZm9yRWFjaCk6CisgICAgICAgICogYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0
cnVjdG9yLmpzOgorICAgICAgICAqIGJ1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanM6Cisg
ICAgICAgIChldmVyeSk6CisgICAgICAgIChmaW5kKToKKyAgICAgICAgKGZpbmRJbmRleCk6Cisg
ICAgICAgIChmb3JFYWNoKToKKyAgICAgICAgKHNvbWUpOgorICAgICAgICAoc29ydCk6CisgICAg
ICAgIChyZWR1Y2UpOgorICAgICAgICAocmVkdWNlUmlnaHQpOgorICAgICAgICAobWFwKToKKyAg
ICAgICAgKGZpbHRlcik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVxdWFsaXR5T3BJbXBsKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJc0NhbGxhYmxlKToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlND
OjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dD
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1
cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgor
ICAgICAgICAqIGRmZy9ERkdIZWFwTG9jYXRpb24uY3BwOgorICAgICAgICAoV1RGOjpwcmludElu
dGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHSGVhcExvY2F0aW9uLmg6CisgICAgICAgICogZGZn
L0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
c0NhbGxhYmxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlz
RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSXNDYWxsYWJsZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJc0Z1bmN0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgIChmdW5jdGlvbk1ha2VNYXNxdWVyYWRlcik6CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVGdW5jdGlv
blRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFs
RnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAo
SlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVGdW5jdGlvblRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBy
dW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6anNUeXBlb2ZJc0Z1bmN0aW9uKToK
KwogMjAyMC0wOC0xOCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVcGRhdGUgYnl0ZSBvZmZzZXRzIGluIEpTU3RyaW5nLmggY29tbWVudApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGZiZmVmNzhlNGNhZTdlNmU2MzNmNjM2ZmY3YTI1ZTcyNDAxY2ZmMGMuLjg2YzQzZmUzNWJhYjAw
OGVmZjU5MTU1YjRhYWY5NmIyYTFmNzZhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMC0wOC0xOSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAg
ICAgICAgSW50cm9kdWNlIE9wSXNDYWxsYWJsZSBieXRlY29kZSBhbmQgaW50cmluc2ljCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU1NzIKKworICAg
ICAgICBSZXZpZXdlZCBieSBSb3NzIEtpcnNsaW5nIGFuZCBTYWFtIEJhcmF0aS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93
OjpvcGVuRGF0YWJhc2UgY29uc3QpOgorCiAyMDIwLTA4LTE5ICBBZGl0eWEgS2VlcnRoaSAgPGFr
ZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdXNlIG9mIENvbnRyb2xTaXplIGlu
IFRoZW1lTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJy
YXlDb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheUNv
bnN0cnVjdG9yLmpzCmluZGV4IGM4MjFiZmRhMWVhODQzNWJhM2JmZDQxNzdlZDAxYTg4M2JkYzFl
ZjguLmIxNjJkNmJjOGY2MzVmZjI5ZGRhMGQ5Y2U0Yzg2YmU5MjBmMjZlMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheUNvbnN0cnVjdG9yLmpzCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheUNvbnN0cnVjdG9yLmpzCkBAIC00
NCw3ICs0NCw3IEBAIGZ1bmN0aW9uIGZyb20oaXRlbXMgLyosIG1hcEZuLCB0aGlzQXJnICovKQog
ICAgIHZhciB0aGlzQXJnOwogCiAgICAgaWYgKG1hcEZuICE9PSBAdW5kZWZpbmVkKSB7Ci0gICAg
ICAgIGlmICh0eXBlb2YgbWFwRm4gIT09ICJmdW5jdGlvbiIpCisgICAgICAgIGlmICghQGlzQ2Fs
bGFibGUobWFwRm4pKQogICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJheS5mcm9tIHJl
cXVpcmVzIHRoYXQgdGhlIHNlY29uZCBhcmd1bWVudCwgd2hlbiBwcm92aWRlZCwgYmUgYSBmdW5j
dGlvbiIpOwogCiAgICAgICAgIHRoaXNBcmcgPSBAYXJndW1lbnQoMik7CkBAIC01NCw3ICs1NCw3
IEBAIGZ1bmN0aW9uIGZyb20oaXRlbXMgLyosIG1hcEZuLCB0aGlzQXJnICovKQogCiAgICAgdmFy
IGl0ZXJhdG9yTWV0aG9kID0gaXRlbXMuQEBpdGVyYXRvcjsKICAgICBpZiAoIUBpc1VuZGVmaW5l
ZE9yTnVsbChpdGVyYXRvck1ldGhvZCkpIHsKLSAgICAgICAgaWYgKHR5cGVvZiBpdGVyYXRvck1l
dGhvZCAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgaWYgKCFAaXNDYWxsYWJsZShpdGVyYXRvck1l
dGhvZCkpCiAgICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LmZyb20gcmVxdWlyZXMg
dGhhdCB0aGUgcHJvcGVydHkgb2YgdGhlIGZpcnN0IGFyZ3VtZW50LCBpdGVtc1tTeW1ib2wuaXRl
cmF0b3JdLCB3aGVuIGV4aXN0cywgYmUgYSBmdW5jdGlvbiIpOwogCiAgICAgICAgIHZhciByZXN1
bHQgPSB0aGlzICE9PSBAQXJyYXkgJiYgQGlzQ29uc3RydWN0b3IodGhpcykgPyBuZXcgdGhpcygp
IDogW107CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQ
cm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5
cGUuanMKaW5kZXggYmI3ZTFjNGQ0MDcwZGQ1NmE1NTUzYmNmOTQyMzFmYWVkYWQ3NDg1Yy4uMjBl
ODJiOTYyZGQxMWZmZDQ3MjMwYjM3NDFjZmY5NWU4NjBiNWViZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcwpAQCAtMzEsNyArMzEsNyBA
QCBmdW5jdGlvbiByZWR1Y2UoY2FsbGJhY2sgLyosIGluaXRpYWxWYWx1ZSAqLykKICAgICB2YXIg
YXJyYXkgPSBAdG9PYmplY3QodGhpcywgIkFycmF5LnByb3RvdHlwZS5yZWR1Y2UgcmVxdWlyZXMg
dGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAgICAgdmFyIGxlbmd0aCA9
IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOwogCi0gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0g
ImZ1bmN0aW9uIikKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNrKSkKICAgICAgICAgQHRo
cm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUucmVkdWNlIGNhbGxiYWNrIG11c3QgYmUgYSBm
dW5jdGlvbiIpOwogCiAgICAgdmFyIGFyZ3VtZW50Q291bnQgPSBAYXJndW1lbnRDb3VudCgpOwpA
QCAtNjQsNyArNjQsNyBAQCBmdW5jdGlvbiByZWR1Y2VSaWdodChjYWxsYmFjayAvKiwgaW5pdGlh
bFZhbHVlICovKQogICAgIHZhciBhcnJheSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90
eXBlLnJlZHVjZVJpZ2h0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVm
aW5lZCIpOwogICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKIAotICAg
IGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCisgICAgaWYgKCFAaXNDYWxsYWJs
ZShjYWxsYmFjaykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLnJl
ZHVjZVJpZ2h0IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOwogCiAgICAgdmFyIGFyZ3Vt
ZW50Q291bnQgPSBAYXJndW1lbnRDb3VudCgpOwpAQCAtOTcsNyArOTcsNyBAQCBmdW5jdGlvbiBl
dmVyeShjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKICAgICB2YXIgYXJyYXkgPSBAdG9PYmplY3Qo
dGhpcywgIkFycmF5LnByb3RvdHlwZS5ldmVyeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUg
bnVsbCBvciB1bmRlZmluZWQiKTsKICAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxl
bmd0aCk7CiAKLSAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQorICAgIGlm
ICghQGlzQ2FsbGFibGUoY2FsbGJhY2spKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5
LnByb3RvdHlwZS5ldmVyeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKICAgICAKICAg
ICB2YXIgdGhpc0FyZyA9IEBhcmd1bWVudCgxKTsKQEAgLTExOSw3ICsxMTksNyBAQCBmdW5jdGlv
biBmb3JFYWNoKGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQogICAgIHZhciBhcnJheSA9IEB0b09i
amVjdCh0aGlzLCAiQXJyYXkucHJvdG90eXBlLmZvckVhY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wg
bm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChh
cnJheS5sZW5ndGgpOwogCi0gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikK
KyAgICBpZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNrKSkKICAgICAgICAgQHRocm93VHlwZUVycm9y
KCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsK
ICAgICAKICAgICB2YXIgdGhpc0FyZyA9IEBhcmd1bWVudCgxKTsKQEAgLTEzNyw3ICsxMzcsNyBA
QCBmdW5jdGlvbiBmaWx0ZXIoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiAgICAgdmFyIGFycmF5
ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUuZmlsdGVyIHJlcXVpcmVzIHRoYXQg
fHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwogICAgIHZhciBsZW5ndGggPSBAdG9M
ZW5ndGgoYXJyYXkubGVuZ3RoKTsKIAotICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5j
dGlvbiIpCisgICAgaWYgKCFAaXNDYWxsYWJsZShjYWxsYmFjaykpCiAgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmZpbHRlciBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rp
b24iKTsKICAgICAKICAgICB2YXIgdGhpc0FyZyA9IEBhcmd1bWVudCgxKTsKQEAgLTE2Myw3ICsx
NjMsNyBAQCBmdW5jdGlvbiBtYXAoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiAgICAgdmFyIGFy
cmF5ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUubWFwIHJlcXVpcmVzIHRoYXQg
fHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwogICAgIHZhciBsZW5ndGggPSBAdG9M
ZW5ndGgoYXJyYXkubGVuZ3RoKTsKIAotICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5j
dGlvbiIpCisgICAgaWYgKCFAaXNDYWxsYWJsZShjYWxsYmFjaykpCiAgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLm1hcCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24i
KTsKICAgICAKICAgICB2YXIgdGhpc0FyZyA9IEBhcmd1bWVudCgxKTsKQEAgLTE4NSw3ICsxODUs
NyBAQCBmdW5jdGlvbiBzb21lKGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQogICAgIHZhciBhcnJh
eSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90eXBlLnNvbWUgcmVxdWlyZXMgdGhhdCB8
dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAgICAgdmFyIGxlbmd0aCA9IEB0b0xl
bmd0aChhcnJheS5sZW5ndGgpOwogCi0gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0
aW9uIikKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNrKSkKICAgICAgICAgQHRocm93VHlw
ZUVycm9yKCJBcnJheS5wcm90b3R5cGUuc29tZSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24i
KTsKICAgICAKICAgICB2YXIgdGhpc0FyZyA9IEBhcmd1bWVudCgxKTsKQEAgLTI0Miw3ICsyNDIs
NyBAQCBmdW5jdGlvbiBmaW5kKGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQogICAgIHZhciBhcnJh
eSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90eXBlLmZpbmQgcmVxdWlyZXMgdGhhdCB8
dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CiAgICAgdmFyIGxlbmd0aCA9IEB0b0xl
bmd0aChhcnJheS5sZW5ndGgpOwogCi0gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0
aW9uIikKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNrKSkKICAgICAgICAgQHRocm93VHlw
ZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZmluZCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24i
KTsKICAgICAKICAgICB2YXIgdGhpc0FyZyA9IEBhcmd1bWVudCgxKTsKQEAgLTI2MSw3ICsyNjEs
NyBAQCBmdW5jdGlvbiBmaW5kSW5kZXgoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiAgICAgdmFy
IGFycmF5ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUuZmluZEluZGV4IHJlcXVp
cmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwogICAgIHZhciBsZW5n
dGggPSBAdG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKIAotICAgIGlmICh0eXBlb2YgY2FsbGJhY2sg
IT09ICJmdW5jdGlvbiIpCisgICAgaWYgKCFAaXNDYWxsYWJsZShjYWxsYmFjaykpCiAgICAgICAg
IEB0aHJvd1R5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleCBjYWxsYmFjayBtdXN0
IGJlIGEgZnVuY3Rpb24iKTsKICAgICAKICAgICB2YXIgdGhpc0FyZyA9IEBhcmd1bWVudCgxKTsK
QEAgLTUyMCw3ICs1MjAsNyBAQCBmdW5jdGlvbiBzb3J0KGNvbXBhcmF0b3IpCiAgICAgfQogCiAg
ICAgdmFyIHNvcnRGdW5jdGlvbjsKLSAgICBpZiAodHlwZW9mIGNvbXBhcmF0b3IgPT0gImZ1bmN0
aW9uIikKKyAgICBpZiAoQGlzQ2FsbGFibGUoY29tcGFyYXRvcikpCiAgICAgICAgIHNvcnRGdW5j
dGlvbiA9IGNvbXBhcmF0b3JTb3J0OwogICAgIGVsc2UgaWYgKGNvbXBhcmF0b3IgPT09IEB1bmRl
ZmluZWQpCiAgICAgICAgIHNvcnRGdW5jdGlvbiA9IHN0cmluZ1NvcnQ7CkBAIC03MTcsNyArNzE3
LDcgQEAgZnVuY3Rpb24gZmxhdE1hcChjYWxsYmFjaykKICAgICB2YXIgYXJyYXkgPSBAdG9PYmpl
Y3QodGhpcywgIkFycmF5LnByb3RvdHlwZS5mbGF0TWFwIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5v
dCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwogICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgoYXJy
YXkubGVuZ3RoKTsKIAotICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCisg
ICAgaWYgKCFAaXNDYWxsYWJsZShjYWxsYmFjaykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigi
QXJyYXkucHJvdG90eXBlLmZsYXRNYXAgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CiAK
ICAgICB2YXIgdGhpc0FyZyA9IEBhcmd1bWVudCgxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcwppbmRleCBlMjJlNjU1YzdlOTdi
MDM2N2U4NDkyYmVjMjE1N2I1YjYzN2RhMTM5Li5lMzIzOGNhMGE2ZTM1OThlMmVkZTZjNThiYTU0
MWZhY2Q3NTcxZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
RnVuY3Rpb25Qcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0Z1bmN0aW9uUHJvdG90eXBlLmpzCkBAIC00Nyw3ICs0Nyw3IEBAIGZ1bmN0aW9uIHN5bWJvbEhh
c0luc3RhbmNlKHZhbHVlKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGlmICh0eXBlb2Yg
dGhpcyAhPT0gImZ1bmN0aW9uIikKKyAgICBpZiAoIUBpc0NhbGxhYmxlKHRoaXMpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoQGlzQm91bmRGdW5jdGlvbih0aGlzKSkKQEAgLTYy
LDcgKzYyLDcgQEAgZnVuY3Rpb24gYmluZCh0aGlzVmFsdWUpCiAgICAgInVzZSBzdHJpY3QiOwog
CiAgICAgdmFyIHRhcmdldCA9IHRoaXM7Ci0gICAgaWYgKHR5cGVvZiB0YXJnZXQgIT09ICJmdW5j
dGlvbiIpCisgICAgaWYgKCFAaXNDYWxsYWJsZSh0YXJnZXQpKQogICAgICAgICBAdGhyb3dUeXBl
RXJyb3IoInx0aGlzfCBpcyBub3QgYSBmdW5jdGlvbiBpbnNpZGUgRnVuY3Rpb24ucHJvdG90eXBl
LmJpbmQiKTsKIAogICAgIHZhciBhcmd1bWVudENvdW50ID0gQGFyZ3VtZW50Q291bnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9NYXBQcm90b3R5cGUuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFwUHJvdG90eXBlLmpzCmluZGV4IGNj
NmIzYWFkZmY2NTcxMmQ4OTYyMzZhYjllZWQ1YTg2ZGFmM2U4MWMuLjZlNTg1OGNiOWQ3M2EyNTI5
Y2MwNTU4ODdhYjQyOTY0N2VmYzMyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9NYXBQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL01hcFByb3RvdHlwZS5qcwpAQCAtMzAsNyArMzAsNyBAQCBmdW5jdGlvbiBmb3JFYWNo
KGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQogICAgIGlmICghQGlzTWFwKHRoaXMpKQogICAgICAg
ICBAdGhyb3dUeXBlRXJyb3IoIk1hcCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1NYXAgb2JqZWN0
Iik7CiAKLSAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKQorICAgIGlmICgh
QGlzQ2FsbGFibGUoY2FsbGJhY2spKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIk1hcC5wcm90
b3R5cGUuZm9yRWFjaCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKIAogICAgIHZhciB0
aGlzQXJnID0gQGFyZ3VtZW50KDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMKaW5kZXggMWM3ZTUwMjBiZmY2MzM1NjNmNDc0
ZGIzNTk4NGNjYTU2NGNlMGE0ZS4uOTZlMzdmN2ZkYTc4NmI5ODQ2MDNjNDQ4Mjg4N2E1NTdjYmU2
NDU4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VD
b25zdHJ1Y3Rvci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlz
ZUNvbnN0cnVjdG9yLmpzCkBAIC01Niw3ICs1Niw3IEBAIGZ1bmN0aW9uIGFsbChpdGVyYWJsZSkK
IAogICAgIHRyeSB7CiAgICAgICAgIHZhciBwcm9taXNlUmVzb2x2ZSA9IHRoaXMucmVzb2x2ZTsK
LSAgICAgICAgaWYgKHR5cGVvZiBwcm9taXNlUmVzb2x2ZSAhPT0gImZ1bmN0aW9uIikKKyAgICAg
ICAgaWYgKCFAaXNDYWxsYWJsZShwcm9taXNlUmVzb2x2ZSkpCiAgICAgICAgICAgICBAdGhyb3dU
eXBlRXJyb3IoIlByb21pc2UgcmVzb2x2ZSBpcyBub3QgYSBmdW5jdGlvbiIpOwogCiAgICAgICAg
IGZvciAodmFyIHZhbHVlIG9mIGl0ZXJhYmxlKSB7CkBAIC0xMzgsNyArMTM4LDcgQEAgZnVuY3Rp
b24gYWxsU2V0dGxlZChpdGVyYWJsZSkKIAogICAgIHRyeSB7CiAgICAgICAgIHZhciBwcm9taXNl
UmVzb2x2ZSA9IHRoaXMucmVzb2x2ZTsKLSAgICAgICAgaWYgKHR5cGVvZiBwcm9taXNlUmVzb2x2
ZSAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgaWYgKCFAaXNDYWxsYWJsZShwcm9taXNlUmVzb2x2
ZSkpCiAgICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlByb21pc2UgcmVzb2x2ZSBpcyBub3Qg
YSBmdW5jdGlvbiIpOwogCiAgICAgICAgIGZvciAodmFyIHZhbHVlIG9mIGl0ZXJhYmxlKSB7CkBA
IC0xOTMsNyArMTkzLDcgQEAgZnVuY3Rpb24gYW55KGl0ZXJhYmxlKQogCiAgICAgdHJ5IHsKICAg
ICAgICAgdmFyIHByb21pc2VSZXNvbHZlID0gdGhpcy5yZXNvbHZlOwotICAgICAgICBpZiAodHlw
ZW9mIHByb21pc2VSZXNvbHZlICE9PSAiZnVuY3Rpb24iKQorICAgICAgICBpZiAoIUBpc0NhbGxh
YmxlKHByb21pc2VSZXNvbHZlKSkKICAgICAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiUHJvbWlz
ZSByZXNvbHZlIGlzIG5vdCBhIGZ1bmN0aW9uIik7CiAKICAgICAgICAgZm9yICh2YXIgdmFsdWUg
b2YgaXRlcmFibGUpIHsKQEAgLTIyNiw3ICsyMjYsNyBAQCBmdW5jdGlvbiByYWNlKGl0ZXJhYmxl
KQogCiAgICAgdHJ5IHsKICAgICAgICAgdmFyIHByb21pc2VSZXNvbHZlID0gdGhpcy5yZXNvbHZl
OwotICAgICAgICBpZiAodHlwZW9mIHByb21pc2VSZXNvbHZlICE9PSAiZnVuY3Rpb24iKQorICAg
ICAgICBpZiAoIUBpc0NhbGxhYmxlKHByb21pc2VSZXNvbHZlKSkKICAgICAgICAgICAgIEB0aHJv
d1R5cGVFcnJvcigiUHJvbWlzZSByZXNvbHZlIGlzIG5vdCBhIGZ1bmN0aW9uIik7CiAKICAgICAg
ICAgZm9yICh2YXIgdmFsdWUgb2YgaXRlcmFibGUpIHsKQEAgLTI4Myw3ICsyODMsNyBAQCBmdW5j
dGlvbiBQcm9taXNlKGV4ZWN1dG9yKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGlmICh0
eXBlb2YgZXhlY3V0b3IgIT09ICJmdW5jdGlvbiIpCisgICAgaWYgKCFAaXNDYWxsYWJsZShleGVj
dXRvcikpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiUHJvbWlzZSBjb25zdHJ1Y3RvciB0YWtl
cyBhIGZ1bmN0aW9uIGFyZ3VtZW50Iik7CiAKICAgICB2YXIgcHJvbWlzZSA9IEBjcmVhdGVQcm9t
aXNlKHRoaXMsIC8qIGlzSW50ZXJuYWxQcm9taXNlICovIGZhbHNlKTsKQEAgLTMwOSw3ICszMDks
NyBAQCBmdW5jdGlvbiBJbnRlcm5hbFByb21pc2UoZXhlY3V0b3IpCiB7CiAgICAgInVzZSBzdHJp
Y3QiOwogCi0gICAgaWYgKHR5cGVvZiBleGVjdXRvciAhPT0gImZ1bmN0aW9uIikKKyAgICBpZiAo
IUBpc0NhbGxhYmxlKGV4ZWN1dG9yKSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJJbnRlcm5h
bFByb21pc2UgY29uc3RydWN0b3IgdGFrZXMgYSBmdW5jdGlvbiBhcmd1bWVudCIpOwogCiAgICAg
dmFyIHByb21pc2UgPSBAY3JlYXRlUHJvbWlzZSh0aGlzLCAvKiBpc0ludGVybmFsUHJvbWlzZSAq
LyB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9t
aXNlT3BlcmF0aW9ucy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNl
T3BlcmF0aW9ucy5qcwppbmRleCAyMGVkZTM1MGVlMzYxMDBkODk2MjM4NjAxMjlhY2QwMThjMGMw
YjAzLi42OGFkNDUzMjk0MzlhYTZiMTBlZmQzNTFlNzU5YzQ0MzE0N2VlNzM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VPcGVyYXRpb25zLmpzCkBA
IC01OCwxMCArNTgsMTAgQEAgZnVuY3Rpb24gbmV3UHJvbWlzZUNhcGFiaWxpdHlTbG93KGNvbnN0
cnVjdG9yKQogICAgICAgICBwcm9taXNlQ2FwYWJpbGl0eS5AcmVqZWN0ID0gcmVqZWN0OwogICAg
IH0pOwogCi0gICAgaWYgKHR5cGVvZiBwcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZSAhPT0gImZ1
bmN0aW9uIikKKyAgICBpZiAoIUBpc0NhbGxhYmxlKHByb21pc2VDYXBhYmlsaXR5LkByZXNvbHZl
KSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJleGVjdXRvciBkaWQgbm90IHRha2UgYSByZXNv
bHZlIGZ1bmN0aW9uIik7CiAKLSAgICBpZiAodHlwZW9mIHByb21pc2VDYXBhYmlsaXR5LkByZWpl
Y3QgIT09ICJmdW5jdGlvbiIpCisgICAgaWYgKCFAaXNDYWxsYWJsZShwcm9taXNlQ2FwYWJpbGl0
eS5AcmVqZWN0KSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJleGVjdXRvciBkaWQgbm90IHRh
a2UgYSByZWplY3QgZnVuY3Rpb24iKTsKIAogICAgIHByb21pc2VDYXBhYmlsaXR5LkBwcm9taXNl
ID0gcHJvbWlzZTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBmdW5jdGlvbiByZXNvbHZlUHJvbWlzZShw
cm9taXNlLCByZXNvbHV0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHR5
cGVvZiB0aGVuICE9PSAnZnVuY3Rpb24nKQorICAgIGlmICghQGlzQ2FsbGFibGUodGhlbikpCiAg
ICAgICAgIHJldHVybiBAZnVsZmlsbFByb21pc2UocHJvbWlzZSwgcmVzb2x1dGlvbik7CiAKICAg
ICBAZW5xdWV1ZUpvYihAcHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYiwgcmVzb2x1dGlvbiwgdGhl
biwgQGNyZWF0ZVJlc29sdmluZ0Z1bmN0aW9ucyhwcm9taXNlKSk7CkBAIC0yOTUsNyArMjk1LDcg
QEAgZnVuY3Rpb24gcmVzb2x2ZVdpdGhvdXRQcm9taXNlKHJlc29sdXRpb24sIG9uRnVsZmlsbGVk
LCBvblJlamVjdGVkKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHR5cGVvZiB0
aGVuICE9PSAnZnVuY3Rpb24nKSB7CisgICAgaWYgKCFAaXNDYWxsYWJsZSh0aGVuKSkgewogICAg
ICAgICBAZnVsZmlsbFdpdGhvdXRQcm9taXNlKHJlc29sdXRpb24sIG9uRnVsZmlsbGVkLCBvblJl
amVjdGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL1Byb21pc2VQcm90b3R5cGUuanMKaW5kZXggMDk5NzI1NGY3YWQ0N2E0
YzllNGE3YTRkNTQyMGZiMTc5YTA2OTA3OC4uN2E4NDQ2MGFkNWRjOWIwZGM3NTE4MzIxZDE2N2Ji
YjI4MzRiZTJjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1By
b21pc2VQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1By
b21pc2VQcm90b3R5cGUuanMKQEAgLTQ5LDEwICs0OSwxMCBAQCBmdW5jdGlvbiB0aGVuKG9uRnVs
ZmlsbGVkLCBvblJlamVjdGVkKQogICAgICAgICBwcm9taXNlID0gcHJvbWlzZU9yQ2FwYWJpbGl0
eS5AcHJvbWlzZTsKICAgICB9CiAKLSAgICBpZiAodHlwZW9mIG9uRnVsZmlsbGVkICE9PSAiZnVu
Y3Rpb24iKQorICAgIGlmICghQGlzQ2FsbGFibGUob25GdWxmaWxsZWQpKQogICAgICAgICBvbkZ1
bGZpbGxlZCA9IGZ1bmN0aW9uIChhcmd1bWVudCkgeyByZXR1cm4gYXJndW1lbnQ7IH07CiAKLSAg
ICBpZiAodHlwZW9mIG9uUmVqZWN0ZWQgIT09ICJmdW5jdGlvbiIpCisgICAgaWYgKCFAaXNDYWxs
YWJsZShvblJlamVjdGVkKSkKICAgICAgICAgb25SZWplY3RlZCA9IGZ1bmN0aW9uIChhcmd1bWVu
dCkgeyB0aHJvdyBhcmd1bWVudDsgfTsKIAogICAgIHZhciByZWFjdGlvbiA9IEBuZXdQcm9taXNl
UmVhY3Rpb24ocHJvbWlzZU9yQ2FwYWJpbGl0eSwgb25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpOwpA
QCAtODYsNyArODYsNyBAQCBmdW5jdGlvbiBmaW5hbGx5KG9uRmluYWxseSkKICAgICB2YXIgdGhl
bkZpbmFsbHk7CiAgICAgdmFyIGNhdGNoRmluYWxseTsKIAotICAgIGlmICh0eXBlb2Ygb25GaW5h
bGx5ICE9PSAiZnVuY3Rpb24iKSB7CisgICAgaWYgKCFAaXNDYWxsYWJsZShvbkZpbmFsbHkpKSB7
CiAgICAgICAgIHRoZW5GaW5hbGx5ID0gb25GaW5hbGx5OwogICAgICAgICBjYXRjaEZpbmFsbHkg
PSBvbkZpbmFsbHk7CiAgICAgfSBlbHNlIHsKQEAgLTEwNCw3ICsxMDQsNyBAQCBmdW5jdGlvbiBn
ZXRUaGVuRmluYWxseShvbkZpbmFsbHksIGNvbnN0cnVjdG9yKQogCiAgICAgcmV0dXJuICh2YWx1
ZSkgPT4KICAgICB7Ci0gICAgICAgIEBhc3NlcnQodHlwZW9mIG9uRmluYWxseSA9PT0gImZ1bmN0
aW9uIik7CisgICAgICAgIEBhc3NlcnQoQGlzQ2FsbGFibGUob25GaW5hbGx5KSk7CiAgICAgICAg
IHZhciByZXN1bHQgPSBvbkZpbmFsbHkoKTsKIAogICAgICAgICBAYXNzZXJ0KEBpc0NvbnN0cnVj
dG9yKGNvbnN0cnVjdG9yKSk7CkBAIC0xMjQsNyArMTI0LDcgQEAgZnVuY3Rpb24gZ2V0Q2F0Y2hG
aW5hbGx5KG9uRmluYWxseSwgY29uc3RydWN0b3IpCiAKICAgICByZXR1cm4gKHJlYXNvbikgPT4K
ICAgICB7Ci0gICAgICAgIEBhc3NlcnQodHlwZW9mIG9uRmluYWxseSA9PT0gImZ1bmN0aW9uIik7
CisgICAgICAgIEBhc3NlcnQoQGlzQ2FsbGFibGUob25GaW5hbGx5KSk7CiAgICAgICAgIHZhciBy
ZXN1bHQgPSBvbkZpbmFsbHkoKTsKIAogICAgICAgICBAYXNzZXJ0KEBpc0NvbnN0cnVjdG9yKGNv
bnN0cnVjdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
UmVmbGVjdE9iamVjdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWZsZWN0
T2JqZWN0LmpzCmluZGV4IDFhYWExZjQwN2NhYjJlNTkyY2JkYjhkNjZhYjQwMDhiMDI0NDA3NTYu
LjRiY2YwYzJmY2E4ZDJlNWJmNmRkNTY2OTczNGQyODhmMmQxNjkwZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWZsZWN0T2JqZWN0LmpzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWZsZWN0T2JqZWN0LmpzCkBAIC0yOCw3ICsyOCw3
IEBAIGZ1bmN0aW9uIGFwcGx5KHRhcmdldCwgdGhpc0FyZ3VtZW50LCBhcmd1bWVudHNMaXN0KQog
ewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSAiZnVuY3Rp
b24iKQorICAgIGlmICghQGlzQ2FsbGFibGUodGFyZ2V0KSkKICAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJSZWZsZWN0LmFwcGx5IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhIGZ1bmN0
aW9uIik7CiAKICAgICBpZiAoIUBpc09iamVjdChhcmd1bWVudHNMaXN0KSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWdFeHBQcm90b3R5cGUuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVnRXhwUHJvdG90eXBlLmpzCmluZGV4IGU1MzZm
ZDIzNThmYzg1Mjg4ZjY5OWMxZGVmYTI4ZGE0OWYwMTYyNDUuLjE4YzM2ZGY3ZmI2MDgwMWJkYmIz
NzIyMjYxNDc0NTEzZjU3MGQyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9SZWdFeHBQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qcwpAQCAtNjYsNyArNjYsNyBAQCBmdW5jdGlvbiByZWdF
eHBFeGVjKHJlZ2V4cCwgc3RyKQogCiAgICAgdmFyIGV4ZWMgPSByZWdleHAuZXhlYzsKICAgICB2
YXIgYnVpbHRpbkV4ZWMgPSBAcmVnRXhwQnVpbHRpbkV4ZWM7Ci0gICAgaWYgKGV4ZWMgIT09IGJ1
aWx0aW5FeGVjICYmIHR5cGVvZiBleGVjID09PSAiZnVuY3Rpb24iKSB7CisgICAgaWYgKGV4ZWMg
IT09IGJ1aWx0aW5FeGVjICYmIEBpc0NhbGxhYmxlKGV4ZWMpKSB7CiAgICAgICAgIHZhciByZXN1
bHQgPSBleGVjLkBjYWxsKHJlZ2V4cCwgc3RyKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVs
bCAmJiAhQGlzT2JqZWN0KHJlc3VsdCkpCiAgICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlRo
ZSByZXN1bHQgb2YgYSBSZWdFeHAgZXhlYyBtdXN0IGJlIG51bGwgb3IgYW4gb2JqZWN0Iik7CkBA
IC0yODUsNyArMjg1LDcgQEAgZnVuY3Rpb24gcmVwbGFjZShzdHJBcmcsIHJlcGxhY2UpCiAKICAg
ICB2YXIgc3RyID0gQHRvU3RyaW5nKHN0ckFyZyk7CiAgICAgdmFyIHN0cmluZ0xlbmd0aCA9IHN0
ci5sZW5ndGg7Ci0gICAgdmFyIGZ1bmN0aW9uYWxSZXBsYWNlID0gdHlwZW9mIHJlcGxhY2UgPT09
ICdmdW5jdGlvbic7CisgICAgdmFyIGZ1bmN0aW9uYWxSZXBsYWNlID0gQGlzQ2FsbGFibGUocmVw
bGFjZSk7CiAKICAgICBpZiAoIWZ1bmN0aW9uYWxSZXBsYWNlKQogICAgICAgICByZXBsYWNlID0g
QHRvU3RyaW5nKHJlcGxhY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL1NldFByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9T
ZXRQcm90b3R5cGUuanMKaW5kZXggZmNiNDY4OGFiMjkxYWJhOTRjZDZiMGYyYjczOTcwMjAxMTlj
ZThhOC4uNjA3ZTIyMzhlOTE0M2Q5YzIxNWFiMjBiMmE4YzFhYjQ1MTVlYjJjYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1NldFByb3RvdHlwZS5qcworKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU2V0UHJvdG90eXBlLmpzCkBAIC0zMCw3ICsz
MCw3IEBAIGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiAgICAgaWYg
KCFAaXNTZXQodGhpcykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiU2V0IG9wZXJhdGlvbiBj
YWxsZWQgb24gbm9uLVNldCBvYmplY3QiKTsKIAotICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09
ICdmdW5jdGlvbicpCisgICAgaWYgKCFAaXNDYWxsYWJsZShjYWxsYmFjaykpCiAgICAgICAgIEB0
aHJvd1R5cGVFcnJvcigiU2V0LnByb3RvdHlwZS5mb3JFYWNoIGNhbGxiYWNrIG11c3QgYmUgYSBm
dW5jdGlvbiIpOwogCiAgICAgdmFyIHRoaXNBcmcgPSBAYXJndW1lbnQoMSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXlDb25zdHJ1Y3Rvci5q
cwppbmRleCA2ZjNlNDIwZjU2Mjg1Nzc1NGRlMmYxNmM2M2ZjYmNkZDk2NTUyMDY1Li40MmViMmQ0
ZGE4ZTUzNTE0MmU2OTdjYWI1YTcyM2I2MGY0MTkwNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9yLmpzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5Q29uc3RydWN0b3IuanMKQEAgLTUz
LDcgKzUzLDcgQEAgZnVuY3Rpb24gZnJvbShpdGVtcyAvKiBbICwgbWFwZm4gWyAsIHRoaXNBcmcg
XSBdICovKQogICAgIHZhciB0aGlzQXJnOwogCiAgICAgaWYgKG1hcEZuICE9PSBAdW5kZWZpbmVk
KSB7Ci0gICAgICAgIGlmICh0eXBlb2YgbWFwRm4gIT09ICJmdW5jdGlvbiIpCisgICAgICAgIGlm
ICghQGlzQ2FsbGFibGUobWFwRm4pKQogICAgICAgICAgICAgQHRocm93VHlwZUVycm9yKCJUeXBl
ZEFycmF5LmZyb20gcmVxdWlyZXMgdGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50LCB3aGVuIHByb3Zp
ZGVkLCBiZSBhIGZ1bmN0aW9uIik7CiAKICAgICAgICAgdGhpc0FyZyA9IEBhcmd1bWVudCgyKTsK
QEAgLTYzLDcgKzYzLDcgQEAgZnVuY3Rpb24gZnJvbShpdGVtcyAvKiBbICwgbWFwZm4gWyAsIHRo
aXNBcmcgXSBdICovKQogCiAgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlbXMuQEBpdGVyYXRv
cjsKICAgICBpZiAoIUBpc1VuZGVmaW5lZE9yTnVsbChpdGVyYXRvck1ldGhvZCkpIHsKLSAgICAg
ICAgaWYgKHR5cGVvZiBpdGVyYXRvck1ldGhvZCAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgaWYg
KCFAaXNDYWxsYWJsZShpdGVyYXRvck1ldGhvZCkpCiAgICAgICAgICAgICBAdGhyb3dUeXBlRXJy
b3IoIlR5cGVkQXJyYXkuZnJvbSByZXF1aXJlcyB0aGF0IHRoZSBwcm9wZXJ0eSBvZiB0aGUgZmly
c3QgYXJndW1lbnQsIGl0ZW1zW1N5bWJvbC5pdGVyYXRvcl0sIHdoZW4gZXhpc3RzLCBiZSBhIGZ1
bmN0aW9uIik7CiAKICAgICAgICAgdmFyIGFjY3VtdWxhdG9yID0gW107CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCmluZGV4
IGViMGQxNjJiOGE1M2Q3YTA5N2I1ODVmN2NmMmZlYzU2Y2IwZWMwMDAuLjdlYzIxOGIwNzVkOGQ3
MWFhY2E1ZTRjODI2NWQ3MWE1NzgyMmMxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCkBAIC03NCw3ICs3NCw3IEBA
IGZ1bmN0aW9uIGV2ZXJ5KGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQogICAgIHZhciBsZW5ndGgg
PSBAdHlwZWRBcnJheUxlbmd0aCh0aGlzKTsKICAgICB2YXIgdGhpc0FyZyA9IEBhcmd1bWVudCgx
KTsKIAotICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCisgICAgaWYgKCFA
aXNDYWxsYWJsZShjYWxsYmFjaykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiVHlwZWRBcnJh
eS5wcm90b3R5cGUuZXZlcnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CiAKICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CkBAIC0xMDgsNyArMTA4LDcgQEAgZnVu
Y3Rpb24gZmluZChjYWxsYmFjayAvKiBbLCB0aGlzQXJnXSAqLykKICAgICB2YXIgbGVuZ3RoID0g
QHR5cGVkQXJyYXlMZW5ndGgodGhpcyk7CiAgICAgdmFyIHRoaXNBcmcgPSBAYXJndW1lbnQoMSk7
CiAKLSAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQorICAgIGlmICghQGlz
Q2FsbGFibGUoY2FsbGJhY2spKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlR5cGVkQXJyYXku
cHJvdG90eXBlLmZpbmQgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CiAKICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CkBAIC0xMjUsNyArMTI1LDcgQEAgZnVuY3Rp
b24gZmluZEluZGV4KGNhbGxiYWNrIC8qIFssIHRoaXNBcmddICovKQogICAgIHZhciBsZW5ndGgg
PSBAdHlwZWRBcnJheUxlbmd0aCh0aGlzKTsKICAgICB2YXIgdGhpc0FyZyA9IEBhcmd1bWVudCgx
KTsKIAotICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCisgICAgaWYgKCFA
aXNDYWxsYWJsZShjYWxsYmFjaykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiVHlwZWRBcnJh
eS5wcm90b3R5cGUuZmluZEluZGV4IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOwogCiAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewpAQCAtMTQxLDcgKzE0MSw3IEBA
IGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2sgLyogWywgdGhpc0FyZ10gKi8pCiAgICAgdmFyIGxl
bmd0aCA9IEB0eXBlZEFycmF5TGVuZ3RoKHRoaXMpOwogICAgIHZhciB0aGlzQXJnID0gQGFyZ3Vt
ZW50KDEpOwogCi0gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICBp
ZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNrKSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJUeXBl
ZEFycmF5LnByb3RvdHlwZS5mb3JFYWNoIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOwog
CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKQEAgLTE1NSw3ICsxNTUsNyBA
QCBmdW5jdGlvbiBzb21lKGNhbGxiYWNrIC8qIFssIHRoaXNBcmddICovKQogICAgIHZhciBsZW5n
dGggPSBAdHlwZWRBcnJheUxlbmd0aCh0aGlzKTsKICAgICB2YXIgdGhpc0FyZyA9IEBhcmd1bWVu
dCgxKTsKIAotICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICJmdW5jdGlvbiIpCisgICAgaWYg
KCFAaXNDYWxsYWJsZShjYWxsYmFjaykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiVHlwZWRB
cnJheS5wcm90b3R5cGUuc29tZSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKIAogICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKQEAgLTIyMyw3ICsyMjMsNyBAQCBm
dW5jdGlvbiBzb3J0KGNvbXBhcmF0b3IpCiAgICAgaWYgKGxlbmd0aCA8IDIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmICh0eXBlb2YgY29tcGFyYXRvciA9PSAiZnVuY3Rpb24iKQorICAgIGlm
IChAaXNDYWxsYWJsZShjb21wYXJhdG9yKSkKICAgICAgICAgbWVyZ2VTb3J0KHRoaXMsIGxlbmd0
aCwgY29tcGFyYXRvcik7CiAgICAgZWxzZQogICAgICAgICBAdHlwZWRBcnJheVNvcnQodGhpcyk7
CkBAIC0yNTUsNyArMjU1LDcgQEAgZnVuY3Rpb24gcmVkdWNlKGNhbGxiYWNrIC8qIFssIGluaXRp
YWxWYWx1ZV0gKi8pCiAKICAgICB2YXIgbGVuZ3RoID0gQHR5cGVkQXJyYXlMZW5ndGgodGhpcyk7
CiAKLSAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQorICAgIGlmICghQGlz
Q2FsbGFibGUoY2FsbGJhY2spKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlR5cGVkQXJyYXku
cHJvdG90eXBlLnJlZHVjZSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKIAogICAgIHZh
ciBhcmd1bWVudENvdW50ID0gQGFyZ3VtZW50Q291bnQoKTsKQEAgLTI4MSw3ICsyODEsNyBAQCBm
dW5jdGlvbiByZWR1Y2VSaWdodChjYWxsYmFjayAvKiBbLCBpbml0aWFsVmFsdWVdICovKQogCiAg
ICAgdmFyIGxlbmd0aCA9IEB0eXBlZEFycmF5TGVuZ3RoKHRoaXMpOwogCi0gICAgaWYgKHR5cGVv
ZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNr
KSkKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJUeXBlZEFycmF5LnByb3RvdHlwZS5yZWR1Y2VS
aWdodCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKIAogICAgIHZhciBhcmd1bWVudENv
dW50ID0gQGFyZ3VtZW50Q291bnQoKTsKQEAgLTMwNyw3ICszMDcsNyBAQCBmdW5jdGlvbiBtYXAo
Y2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiAKICAgICB2YXIgbGVuZ3RoID0gQHR5cGVkQXJyYXlM
ZW5ndGgodGhpcyk7CiAKLSAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQor
ICAgIGlmICghQGlzQ2FsbGFibGUoY2FsbGJhY2spKQogICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
IlR5cGVkQXJyYXkucHJvdG90eXBlLm1hcCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsK
IAogICAgIHZhciB0aGlzQXJnID0gQGFyZ3VtZW50KDEpOwpAQCAtMzQxLDcgKzM0MSw3IEBAIGZ1
bmN0aW9uIGZpbHRlcihjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKIAogICAgIHZhciBsZW5ndGgg
PSBAdHlwZWRBcnJheUxlbmd0aCh0aGlzKTsKIAotICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09
ICJmdW5jdGlvbiIpCisgICAgaWYgKCFAaXNDYWxsYWJsZShjYWxsYmFjaykpCiAgICAgICAgIEB0
aHJvd1R5cGVFcnJvcigiVHlwZWRBcnJheS5wcm90b3R5cGUuZmlsdGVyIGNhbGxiYWNrIG11c3Qg
YmUgYSBmdW5jdGlvbiIpOwogCiAgICAgdmFyIHRoaXNBcmcgPSBAYXJndW1lbnQoMSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnkuaAppbmRleCA5ZTcxMGI4NjFjODkwZTBhOGZlYWJhMGFmYjUyNmQwNGUyYzVk
MTFjLi43MTkxMThkMzQ2NTgyMTRkZDE0MzE2MzA1YWM5MDQ3MGNlOWMwMmRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5LmgKQEAgLTUyLDYgKzUyLDcgQEAgZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50
IDogaW50MzJfdDsKICAgICBtYWNybyhnZXRTZXRJdGVyYXRvckludGVybmFsRmllbGQpIFwKICAg
ICBtYWNybyhpZFdpdGhQcm9maWxlKSBcCiAgICAgbWFjcm8oaXNPYmplY3QpIFwKKyAgICBtYWNy
byhpc0NhbGxhYmxlKSBcCiAgICAgbWFjcm8oaXNDb25zdHJ1Y3RvcikgXAogICAgIG1hY3JvKGlz
SlNBcnJheSkgXAogICAgIG1hY3JvKGlzUHJveHlPYmplY3QpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IGYwY2QxYTI0MjFjNDQ5MTk3
YTlhMWQ3OTE4NzRlMGMwYzQ2NjNhYjYuLjJhZjk3NTc3MzIzOWRkMDhkNDkzNDM3NmIyMGI2MzIz
ZGQ0YmU1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgpAQCAtMzI5LDEyICszMjksMTMgQEAgb3BfZ3JvdXAgOlVuYXJ5T3AsCiAgICAgICAg
IDppc19lbXB0eSwKICAgICAgICAgOnR5cGVvZl9pc191bmRlZmluZWQsCiAgICAgICAgIDp0eXBl
b2ZfaXNfb2JqZWN0LAorICAgICAgICA6dHlwZW9mX2lzX2Z1bmN0aW9uLAogICAgICAgICA6aXNf
dW5kZWZpbmVkX29yX251bGwsCiAgICAgICAgIDppc19ib29sZWFuLAogICAgICAgICA6aXNfbnVt
YmVyLAogICAgICAgICA6aXNfYmlnX2ludCwKICAgICAgICAgOmlzX29iamVjdCwKLSAgICAgICAg
OmlzX2Z1bmN0aW9uLAorICAgICAgICA6aXNfY2FsbGFibGUsCiAgICAgICAgIDppc19jb25zdHJ1
Y3RvciwKICAgICBdLAogICAgIGFyZ3M6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IDUwZmMwMDk3YjBiNDUzYzI1NDVlYWFk
ZDI5MWEzMWIwOTczOGZmNTYuLjdhNmM0YTQzN2NiZmRiODZmZjZkZmU3M2FhNGQ2MzBkODk0MTYy
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmNwcApAQCAtMTg0LDEzICsxODQsMTQgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAg
ICBVU0VTKE9wSXNFbXB0eSwgb3BlcmFuZCkKICAgICBVU0VTKE9wVHlwZW9mSXNVbmRlZmluZWQs
IG9wZXJhbmQpCiAgICAgVVNFUyhPcFR5cGVvZklzT2JqZWN0LCBvcGVyYW5kKQorICAgIFVTRVMo
T3BUeXBlb2ZJc0Z1bmN0aW9uLCBvcGVyYW5kKQogICAgIFVTRVMoT3BJc1VuZGVmaW5lZE9yTnVs
bCwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNCb29sZWFuLCBvcGVyYW5kKQogICAgIFVTRVMoT3BJ
c051bWJlciwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNCaWdJbnQsIG9wZXJhbmQpCiAgICAgVVNF
UyhPcElzT2JqZWN0LCBvcGVyYW5kKQogICAgIFVTRVMoT3BJc0NlbGxXaXRoVHlwZSwgb3BlcmFu
ZCkKLSAgICBVU0VTKE9wSXNGdW5jdGlvbiwgb3BlcmFuZCkKKyAgICBVU0VTKE9wSXNDYWxsYWJs
ZSwgb3BlcmFuZCkKICAgICBVU0VTKE9wSXNDb25zdHJ1Y3Rvciwgb3BlcmFuZCkKICAgICBVU0VT
KE9wVG9OdW1iZXIsIG9wZXJhbmQpCiAgICAgVVNFUyhPcFRvTnVtZXJpYywgb3BlcmFuZCkKQEAg
LTQ5MSwxMyArNDkyLDE0IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1
bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgREVGUyhPcElz
RW1wdHksIGRzdCkKICAgICBERUZTKE9wVHlwZW9mSXNVbmRlZmluZWQsIGRzdCkKICAgICBERUZT
KE9wVHlwZW9mSXNPYmplY3QsIGRzdCkKKyAgICBERUZTKE9wVHlwZW9mSXNGdW5jdGlvbiwgZHN0
KQogICAgIERFRlMoT3BJc1VuZGVmaW5lZE9yTnVsbCwgZHN0KQogICAgIERFRlMoT3BJc0Jvb2xl
YW4sIGRzdCkKICAgICBERUZTKE9wSXNOdW1iZXIsIGRzdCkKICAgICBERUZTKE9wSXNCaWdJbnQs
IGRzdCkKICAgICBERUZTKE9wSXNPYmplY3QsIGRzdCkKICAgICBERUZTKE9wSXNDZWxsV2l0aFR5
cGUsIGRzdCkKLSAgICBERUZTKE9wSXNGdW5jdGlvbiwgZHN0KQorICAgIERFRlMoT3BJc0NhbGxh
YmxlLCBkc3QpCiAgICAgREVGUyhPcElzQ29uc3RydWN0b3IsIGRzdCkKICAgICBERUZTKE9wSW5C
eUlkLCBkc3QpCiAgICAgREVGUyhPcEluQnlWYWwsIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXgg
YmUzYWJmOGQzMzM2N2UyNTJkOTZmZjdkODE4YTA3ZWUxY2ZhNDBlMS4uOTZiNTM1ZWViNDY3Mzhm
NWZiY2JmNzhiZjgwMWU0OWNjODlhMjQyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE3MjAsNyAr
MTcyMCw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFcXVhbGl0eU9wSW1wbChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYzEsIFJlCiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBpZiAodmFsdWUgPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgICAgICAgIHJld2luZCgp
OwotICAgICAgICAgICAgICAgIE9wSXNGdW5jdGlvbjo6ZW1pdCh0aGlzLCBkc3QsIG9wLm1fdmFs
dWUpOworICAgICAgICAgICAgICAgIE9wVHlwZW9mSXNGdW5jdGlvbjo6ZW1pdCh0aGlzLCBkc3Qs
IG9wLm1fdmFsdWUpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC00NDEyLDYgKzQ0MTIsMTIgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRJc09iamVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykK
ICAgICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dElzQ2FsbGFibGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCit7CisgICAgT3BJ
c0NhbGxhYmxlOjplbWl0KHRoaXMsIGRzdCwgc3JjKTsKKyAgICByZXR1cm4gZHN0OworfQorCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzQ29uc3RydWN0b3IoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCiB7CiAgICAgT3BJc0NvbnN0cnVjdG9yOjplbWl0KHRo
aXMsIGRzdCwgc3JjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA0YTEwODRiZmE1NTZlOWU1Yjc4NWVlZTE4
OGZkZjNmZWRlZGMxNjY1Li45ZTFiZWI1YTRkYmM5MTYyZDk0NTlkMGJjODZjNzQ4YjgwYzk0MjNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCkBAIC05MjcsNiArOTI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRJc01hcEl0ZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTTWFwSXRl
cmF0b3JUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNTZXRJdGVyYXRvcihSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBl
KGRzdCwgc3JjLCBKU1NldEl0ZXJhdG9yVHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dElzT2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKTsKKyAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdElzQ2FsbGFibGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIHNyYyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc051bWJlcihSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJ
c051bGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRFcXVh
bGl0eU9wPE9wU3RyaWN0ZXE+KGRzdCwgc3JjLCBlbWl0TG9hZChudWxscHRyLCBqc051bGwoKSkp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKaW5kZXggZmU2ZGM1Y2FiMzkyZjBiNDY5NTViMzAxZmI1NDRlMmZhMTAwMjBjMS4u
YTI5ZThhM2YyNmVkZmVlZDBlN2EzZDhmNzllZGM3ZmFlZjgwMjMzOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMTY3
Nyw2ICsxNjc3LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19pZFdpdGhQcm9maWxlKEJ5dGVjb2RlR2VuZXJhdG8KICAgICB9CiAKIENSRUFURV9J
TlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzT2JqZWN0LCBJc09iamVjdCkKK0NSRUFURV9JTlRS
SU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzQ2FsbGFibGUsIElzQ2FsbGFibGUpCiBDUkVBVEVfSU5U
UklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc0NvbnN0cnVjdG9yLCBJc0NvbnN0cnVjdG9yKQogQ1JF
QVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNKU0FycmF5LCBJc0pTQXJyYXkpCiBDUkVB
VEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc1Byb3h5T2JqZWN0LCBJc1Byb3h5T2JqZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCmluZGV4IDU1MzExMGZjYzczNWYxMzlhNGJjNTUxNTRjZDNhZGVl
MGUyOGM1ZTkuLjg0MTkyZTMwNDJjYWYxYTU2ZDNkMDQ5YjY2NmIzMDAxMzdmMGM2YWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKQEAgLTE0NTIsMTMgKzE0NTIsMTQgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJl
ckxpbWkKICAgICBjYXNlIElzRW1wdHk6CiAgICAgY2FzZSBUeXBlT2ZJc1VuZGVmaW5lZDoKICAg
ICBjYXNlIFR5cGVPZklzT2JqZWN0OgorICAgIGNhc2UgVHlwZU9mSXNGdW5jdGlvbjoKICAgICBj
YXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFuOgogICAgIGNhc2UgSXNO
dW1iZXI6CiAgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJlcklzSW50ZWdlcjoKICAg
ICBjYXNlIElzT2JqZWN0OgotICAgIGNhc2UgSXNGdW5jdGlvbjoKKyAgICBjYXNlIElzQ2FsbGFi
bGU6CiAgICAgY2FzZSBJc0NvbnN0cnVjdG9yOgogICAgIGNhc2UgSXNDZWxsV2l0aFR5cGU6CiAg
ICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3OiB7CkBAIC0xNDkwLDYgKzE0OTEsOSBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNp
Z25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAg
ICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUoKS5pc051bGwoKSkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBUeXBlT2ZJc0Z1bmN0
aW9uOgorICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihqc1R5cGVv
ZklzRnVuY3Rpb24obV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLCBjaGlsZC52YWx1ZSgpKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICAgICAgICAgICAgICBzZXRDb25zdGFu
dChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUoKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTA4LDIwICsxNTEyLDggQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQg
Y2xvYmJlckxpbWkKICAgICAgICAgICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgICAgICAgICAgICAg
c2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZhbHVlKCkuaXNPYmplY3QoKSkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBJc0Z1bmN0aW9uOgotICAg
ICAgICAgICAgICAgIGlmIChjaGlsZC52YWx1ZSgpLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGNoaWxkLnZhbHVlKCkpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAob2JqZWN0LT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4odHJ1ZSkp
OwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghKG9iamVjdC0+aW5saW5lVHlwZUZsYWdz
KCkgJiBPdmVycmlkZXNHZXRDYWxsRGF0YSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXRD
b25zdGFudChub2RlLCBqc0Jvb2xlYW4oZmFsc2UpKTsKLSAgICAgICAgICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBqdXN0IGNh
bGwgZ2V0Q2FsbERhdGEuCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NDU3Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdGFudFdhc1NldCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
Qm9vbGVhbihmYWxzZSkpOworICAgICAgICAgICAgY2FzZSBJc0NhbGxhYmxlOgorICAgICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlzQ2FsbGFi
bGUobV92bSkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgSXND
b25zdHJ1Y3RvcjoKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4o
Y2hpbGQudmFsdWUoKS5pc0NvbnN0cnVjdG9yKG1fdm0pKSk7CkBAIC0xNzIxLDcgKzE3MTMsOCBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJc0Z1bmN0aW9uOgorICAgICAgICBjYXNl
IFR5cGVPZklzRnVuY3Rpb246CisgICAgICAgIGNhc2UgSXNDYWxsYWJsZToKICAgICAgICAgICAg
IGlmICghKGNoaWxkLm1fdHlwZSAmIH5TcGVjRnVuY3Rpb24pKSB7CiAgICAgICAgICAgICAgICAg
c2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKHRydWUpKTsKICAgICAgICAgICAgICAgICBjb25z
dGFudFdhc1NldCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDY3YmExMmRmMzFkOTZiY2JkZDhjOWYyN2Q3NzFlZDlmZDlj
ZTkyMjUuLmRkMDg0NTJlZjFhZWVkY2NmMDA2ZWY5NTViMTYxNjdlOTFkZjFkMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC01NzQ4
LDYgKzU3NDgsMTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBs
aW1pdCkKICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChUeXBlT2ZJ
c09iamVjdCwgdmFsdWUpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3R5cGVvZl9pc19v
YmplY3QpOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfdHlwZW9mX2lzX2Z1bmN0aW9uOiB7
CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFR5
cGVvZklzRnVuY3Rpb24+KCk7CisgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChieXRlY29k
ZS5tX29wZXJhbmQpOworICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBo
KFR5cGVPZklzRnVuY3Rpb24sIHZhbHVlKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF90
eXBlb2ZfaXNfZnVuY3Rpb24pOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfaXNfdW5kZWZp
bmVkX29yX251bGw6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSXNVbmRlZmluZWRPck51bGw+KCk7CiAgICAgICAgICAgICBOb2RlKiB2YWx1
ZSA9IGdldChieXRlY29kZS5tX29wZXJhbmQpOwpAQCAtNTc5NCwxMSArNTgwMCwxMSBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfaXNfb2JqZWN0KTsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3Bf
aXNfZnVuY3Rpb246IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wSXNGdW5jdGlvbj4oKTsKKyAgICAgICAgY2FzZSBvcF9pc19jYWxsYWJsZTog
eworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJ
c0NhbGxhYmxlPigpOwogICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoYnl0ZWNvZGUubV9v
cGVyYW5kKTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChJc0Z1
bmN0aW9uLCB2YWx1ZSkpOwotICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaXNfZnVuY3Rpb24p
OworICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKElzQ2FsbGFibGUs
IHZhbHVlKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pc19jYWxsYWJsZSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBjYXNlIG9wX2lzX2NvbnN0cnVjdG9yOiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggNjFiZWZlNjJkN2NmYzI0
ZjYxMjFlNTIxYTExNmVlY2FlMzQ5MTQxYS4uMmRlNTVhZWQyN2MxZWEzNDZmOGQwYzVhY2Q2NDY4
ZGVhY2JmZTM1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcApAQCAtMTQ1LDEzICsxNDUsMTQgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAg
ICBjYXNlIG9wX2lzX2VtcHR5OgogICAgIGNhc2Ugb3BfdHlwZW9mX2lzX3VuZGVmaW5lZDoKICAg
ICBjYXNlIG9wX3R5cGVvZl9pc19vYmplY3Q6CisgICAgY2FzZSBvcF90eXBlb2ZfaXNfZnVuY3Rp
b246CiAgICAgY2FzZSBvcF9pc191bmRlZmluZWRfb3JfbnVsbDoKICAgICBjYXNlIG9wX2lzX2Jv
b2xlYW46CiAgICAgY2FzZSBvcF9pc19udW1iZXI6CiAgICAgY2FzZSBvcF9pc19iaWdfaW50Ogog
ICAgIGNhc2Ugb3BfaXNfb2JqZWN0OgogICAgIGNhc2Ugb3BfaXNfY2VsbF93aXRoX3R5cGU6Ci0g
ICAgY2FzZSBvcF9pc19mdW5jdGlvbjoKKyAgICBjYXNlIG9wX2lzX2NhbGxhYmxlOgogICAgIGNh
c2Ugb3BfaXNfY29uc3RydWN0b3I6CiAgICAgY2FzZSBvcF9ub3Q6CiAgICAgY2FzZSBvcF9sZXNz
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCAyNzVkZDY4
YThmMjUwYmI5YTAyZjUyODg0NDQ5YjM3M2Q2MGEyN2MxLi5hYWU2ODgwZWQzYTI4OGIzMmY4OTNh
MzU2Y2Q2NmMyNGZjMzNmY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaApAQCAtNTk2LDEwICs1OTYsMTUgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAg
ICAgICAgcmVhZChNaXNjRmllbGRzKTsKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlT2ZJ
c09iamVjdExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7
CiAgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgVHlwZU9mSXNGdW5jdGlvbjoKKyAgICAgICAg
cmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlT2ZJc0Z1bmN0
aW9uTG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBjYXNlIElzRnVuY3Rpb246CisgICAgY2FzZSBJ
c0NhbGxhYmxlOgogICAgICAgICByZWFkKE1pc2NGaWVsZHMpOwotICAgICAgICBkZWYoSGVhcExv
Y2F0aW9uKElzRnVuY3Rpb25Mb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5v
ZGUobm9kZSkpOworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKElzQ2FsbGFibGVMb2MsIE1pc2NG
aWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICByZXR1cm47
CiAKICAgICBjYXNlIElzQ29uc3RydWN0b3I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKaW5kZXggMDQ4YTdiYTQyNTI4NTcyZTU4Y2IxNDg3NGFmNzU4ZGYwM2NlZTk4NS4u
ODIzN2MzNjg4Mjk4YzY0ODUyYzZmOTIzM2E1NjIwZjA4ODY2ZWYyMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTQ1LDEzICsxNDUsMTQgQEAgYm9vbCBkb2Vz
R0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgSXNFbXB0eToKICAgICBjYXNl
IFR5cGVPZklzVW5kZWZpbmVkOgogICAgIGNhc2UgVHlwZU9mSXNPYmplY3Q6CisgICAgY2FzZSBU
eXBlT2ZJc0Z1bmN0aW9uOgogICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgY2FzZSBJ
c0Jvb2xlYW46CiAgICAgY2FzZSBJc051bWJlcjoKICAgICBjYXNlIElzQmlnSW50OgogICAgIGNh
c2UgTnVtYmVySXNJbnRlZ2VyOgogICAgIGNhc2UgSXNPYmplY3Q6Ci0gICAgY2FzZSBJc0Z1bmN0
aW9uOgorICAgIGNhc2UgSXNDYWxsYWJsZToKICAgICBjYXNlIElzQ29uc3RydWN0b3I6CiAgICAg
Y2FzZSBJc0NlbGxXaXRoVHlwZToKICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA1NjE5OWI1NjMzNTMy
YzFiMDUxMmE2NjhhODEyODBiZGM4YmY0NmI2Li40NDFiZGM4NzY0ODA0ZGFmZDNkZGU4YmQ1NmE2
YjI4OWZlZjUzODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKQEAgLTI3MjksMTEgKzI3MjksMTIgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc0Vt
cHR5OgogICAgICAgICBjYXNlIFR5cGVPZklzVW5kZWZpbmVkOgogICAgICAgICBjYXNlIFR5cGVP
ZklzT2JqZWN0OgorICAgICAgICBjYXNlIFR5cGVPZklzRnVuY3Rpb246CiAgICAgICAgIGNhc2Ug
SXNVbmRlZmluZWRPck51bGw6CiAgICAgICAgIGNhc2UgSXNCb29sZWFuOgogICAgICAgICBjYXNl
IElzTnVtYmVyOgogICAgICAgICBjYXNlIElzQmlnSW50OgotICAgICAgICBjYXNlIElzRnVuY3Rp
b246CisgICAgICAgIGNhc2UgSXNDYWxsYWJsZToKICAgICAgICAgY2FzZSBJc0NvbnN0cnVjdG9y
OgogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBKdW1w
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uY3BwCmluZGV4
IDg5Y2JjMGMyNzgxMjRjNDA0OWY5YzQ2YTgwMGQ4NTFkZWZiNjBkNWMuLmRmYjc5MWFkOTcyMzg0
OWFkODVkYTgwNDBlYmU1NzQ1Y2E4YTRiOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSGVhcExvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0hlYXBMb2NhdGlvbi5jcHAKQEAgLTY2LDggKzY2LDEyIEBAIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBMb2NhdGlvbktpbmQga2luZCkKICAgICAgICAgb3V0LnBy
aW50KCJUeXBlT2ZJc09iamVjdExvYyIpOwogICAgICAgICByZXR1cm47CiAKLSAgICBjYXNlIElz
RnVuY3Rpb25Mb2M6Ci0gICAgICAgIG91dC5wcmludCgiSXNGdW5jdGlvbkxvYyIpOworICAgIGNh
c2UgVHlwZU9mSXNGdW5jdGlvbkxvYzoKKyAgICAgICAgb3V0LnByaW50KCJUeXBlT2ZJc0Z1bmN0
aW9uTG9jIik7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgSXNDYWxsYWJsZUxvYzoKKyAg
ICAgICAgb3V0LnByaW50KCJJc0NhbGxhYmxlTG9jIik7CiAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCiAgICAgY2FzZSBJc0NvbnN0cnVjdG9yTG9jOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSGVhcExvY2F0aW9uLmgKaW5kZXggZjg2YTZlYTczZWY1NTM0ZDgzOGJmNjJjMGIwOTBh
YmU5ZDYzNDZkMC4uN2RjMTZiNThmOGViNzk3YTcxYWMxMDhjMjI1YjdmMThiZjg1Y2VkYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdIZWFwTG9jYXRpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0hlYXBMb2NhdGlvbi5oCkBAIC01Niw5ICs1
NiwxMCBAQCBlbnVtIExvY2F0aW9uS2luZCB7CiAgICAgSW5kZXhlZFByb3BlcnR5SlNMb2MsCiAg
ICAgSW5kZXhlZFByb3BlcnR5U3RvcmFnZUxvYywKICAgICBJbnZhbGlkYXRpb25Qb2ludExvYywK
LSAgICBJc0Z1bmN0aW9uTG9jLAorICAgIElzQ2FsbGFibGVMb2MsCiAgICAgSXNDb25zdHJ1Y3Rv
ckxvYywKICAgICBUeXBlT2ZJc09iamVjdExvYywKKyAgICBUeXBlT2ZJc0Z1bmN0aW9uTG9jLAog
ICAgIE5hbWVkUHJvcGVydHlMb2MsCiAgICAgUmVnRXhwT2JqZWN0TGFzdEluZGV4TG9jLAogICAg
IFNldHRlckxvYywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCAx
OWQ0NjYzY2FhYzIwZDM3OWEyNGM3OTRjNDkyODFjNTE3ZDJkYWRlLi40MjUyNjk1OWMxYTI5ZGMy
YTdlZGI2OGRlNzZhZDQxZWM3YTY3ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCkBAIC0zOTQsNiArMzk0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogICAgIG1hY3JvKElzRW1wdHksIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8o
VHlwZU9mSXNVbmRlZmluZWQsIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oVHlwZU9m
SXNPYmplY3QsIE5vZGVSZXN1bHRCb29sZWFuKSBcCisgICAgbWFjcm8oVHlwZU9mSXNGdW5jdGlv
biwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc1VuZGVmaW5lZE9yTnVsbCwgTm9k
ZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc0Jvb2xlYW4sIE5vZGVSZXN1bHRCb29sZWFu
KSBcCiAgICAgbWFjcm8oSXNOdW1iZXIsIE5vZGVSZXN1bHRCb29sZWFuKSBcCkBAIC00MDEsNyAr
NDAyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKElzQmln
SW50LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKE51bWJlcklzSW50ZWdlciwgTm9k
ZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc09iamVjdCwgTm9kZVJlc3VsdEJvb2xlYW4p
IFwKLSAgICBtYWNybyhJc0Z1bmN0aW9uLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAorICAgIG1hY3Jv
KElzQ2FsbGFibGUsIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAgICAgbWFjcm8oSXNDb25zdHJ1Y3Rv
ciwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc1R5cGVkQXJyYXlWaWV3LCBOb2Rl
UmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKFR5cGVPZiwgTm9kZVJlc3VsdEpTKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA5MWQ0ODYzN2Nk
MzBiZDg5ODQ2YTVjMjExYWMwNWJiNmIxZWU2ZTk3Li4wOGUxZTA3NGUyZmJlOWE5MTk3OWNjNGEz
YWE0MjU0NzIxN2Y4NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKQEAgLTIxMTgsNyArMjExOCwxOCBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25UeXBlT2ZJc09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmpl
Y3RJc0Z1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb2JqZWN0
KQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHlwZU9mSXNGdW5jdGlvbihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTT2JqZWN0
Kj4odm0sIG9iamVjdCkpOworCisgICAgcmV0dXJuIGpzVHlwZW9mSXNGdW5jdGlvbihnbG9iYWxP
YmplY3QsIG9iamVjdCk7Cit9CisKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVj
dElzQ2FsbGFibGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvYmplY3Qp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIxMjYsMTEgKzIxMzcsNyBAQCBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RJc0Z1bmN0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQwogCiAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNPYmpl
Y3QqPih2bSwgb2JqZWN0KSk7CiAgICAgCi0gICAgaWYgKG9iamVjdC0+c3RydWN0dXJlKHZtKS0+
bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKG9iamVjdC0+aXNDYWxsYWJsZSh2bSkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gb2JqZWN0LT5pc0NhbGxhYmxlKHZtKTsK
IH0KIAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSXNDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggOTY2NzNiYjlkZDk1MGI0ZTM3Yzdl
Y2FjNzYwN2IwNjA2Zjg0YjdkNS4uNWQ5YzZhNzk1MDA3NGU4YjkwYmQ5ZjFmNjgxNDU4ZWVlZmVm
YmFhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTIx
NCw3ICsyMTQsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uV2Vha1NldEFkZChWTSos
IEpTQ2VsbCosIEpTQ2VsbCosIGludDMyX3QpIFdURl9JTlRFUgogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbldlYWtNYXBTZXQoVk0qLCBKU0NlbGwqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1
ZSwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Rk1vZE9uSW50cyhpbnQzMl90LCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25UeXBlT2ZJc09iamVjdChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCop
IFdURl9JTlRFUk5BTDsKLXNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdElzRnVu
Y3Rpb24oSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25UeXBlT2ZJc0Z1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlND
ZWxsKikgV1RGX0lOVEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0
SXNDYWxsYWJsZShKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKIHNpemVf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbklzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblR5cGVPZk9iamVjdChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsK
IGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWxsb2NhdGVTaW1wbGVQcm9wZXJ0eVN0b3Jh
Z2VXaXRoSW5pdGlhbENhcGFjaXR5KFZNKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAppbmRleCA4NmY4N2YyNTc2ZGU3ODE0ZWZlYWNjOTA1YjY5MzI4N2ZiZWRjNmUyLi5jYjU3
OTZiYTIzOTFkMTgxNjkwM2MxMTU1ZmM3MDc4YTc3MDc1ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcApAQCAtMTAzNiwxMyArMTAzNiwxNCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzRW1w
dHk6CiAgICAgICAgIGNhc2UgVHlwZU9mSXNVbmRlZmluZWQ6CiAgICAgICAgIGNhc2UgVHlwZU9m
SXNPYmplY3Q6CisgICAgICAgIGNhc2UgVHlwZU9mSXNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBJ
c1VuZGVmaW5lZE9yTnVsbDoKICAgICAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgICAgIGNhc2Ug
SXNOdW1iZXI6CiAgICAgICAgIGNhc2UgSXNCaWdJbnQ6CiAgICAgICAgIGNhc2UgTnVtYmVySXNJ
bnRlZ2VyOgogICAgICAgICBjYXNlIElzT2JqZWN0OgotICAgICAgICBjYXNlIElzRnVuY3Rpb246
CisgICAgICAgIGNhc2UgSXNDYWxsYWJsZToKICAgICAgICAgY2FzZSBJc0NvbnN0cnVjdG9yOgog
ICAgICAgICBjYXNlIElzQ2VsbFdpdGhUeXBlOgogICAgICAgICBjYXNlIElzVHlwZWRBcnJheVZp
ZXc6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4
IGVlMmFjYjczYWMxY2Q1ZjkxNmU0MGRjOTlmZjU0ZWE4OWM1YjI4MmIuLmM1NjlkY2U3MjQ4NDYw
NTBkMzNlMGM1NWJiNTJlZWIxZGNjZjFlY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yNTgsMTMgKzI1OCwxNCBAQCBib29sIHNhZmVUb0V4
ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUs
IGJvb2wgaWdubwogICAgIGNhc2UgSXNFbXB0eToKICAgICBjYXNlIFR5cGVPZklzVW5kZWZpbmVk
OgogICAgIGNhc2UgVHlwZU9mSXNPYmplY3Q6CisgICAgY2FzZSBUeXBlT2ZJc0Z1bmN0aW9uOgog
ICAgIGNhc2UgSXNVbmRlZmluZWRPck51bGw6CiAgICAgY2FzZSBJc0Jvb2xlYW46CiAgICAgY2Fz
ZSBJc051bWJlcjoKICAgICBjYXNlIElzQmlnSW50OgogICAgIGNhc2UgTnVtYmVySXNJbnRlZ2Vy
OgogICAgIGNhc2UgSXNPYmplY3Q6Ci0gICAgY2FzZSBJc0Z1bmN0aW9uOgorICAgIGNhc2UgSXND
YWxsYWJsZToKICAgICBjYXNlIElzQ29uc3RydWN0b3I6CiAgICAgY2FzZSBJc0NlbGxXaXRoVHlw
ZToKICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDRkNjk1ODA0ODk0MTc2NTQ4OGRmYzkw
MGZlMWI4ZDhkZGEzN2Y3ZDYuLmQ4NWM1ZDE1YjRiOGE2YTkxNzJmODQ4NmE3MzExOGRkODFlMzJj
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCkBAIC05NTQ5LDcgKzk1NDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVHlw
ZU9mSXNPYmplY3QoTm9kZSogbm9kZSkKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJc0Z1bmN0aW9u
KE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSXNDYWxsYWJsZShOb2Rl
KiBub2RlLCBTX0pJVE9wZXJhdGlvbl9HQyBzbG93UGF0aE9wZXJhdGlvbikKIHsKICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKQEAgLTk1NzgsNyArOTU3OCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJc0Z1bmN0aW9uKE5vZGUqIG5vZGUpCiAgICAgCiAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAg
IHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25PYmplY3RJc0Z1bmN0aW9uLCByZXN1bHRHUFIsIGds
b2JhbE9iamVjdCwKKyAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBzbG93UGF0aE9wZXJhdGlv
biwgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3QsCiAgICAgICAgICAgICB2YWx1ZVJlZ3MucGF5bG9h
ZEdQUigpKSk7CiAgICAgCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggYmQ1NjFjZWViOGM0ODg1MmE4
NjE4YzI1ZTA3NGZkYTNmNWFlODIxOC4uZGY1ZjM3MGQ4ZjNhZDgwZjBmOTJkNDg3ZDJjODBlMmNj
OWUzNTk4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaApAQCAtMTQwNiw3ICsxNDA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVN0cmlu
Z1JlcGxhY2UoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUlzT2JqZWN0KE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVUeXBlT2ZJc09iamVjdChOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlSXNGdW5j
dGlvbihOb2RlKik7CisgICAgdm9pZCBjb21waWxlSXNDYWxsYWJsZShOb2RlKiwgU19KSVRPcGVy
YXRpb25fR0MpOwogICAgIHZvaWQgY29tcGlsZUlzQ29uc3RydWN0b3IoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZVR5cGVPZihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ2hlY2tJc0NvbnN0YW50
KE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IDE3OTMxMmQ2OTRjYjhkOTBhMTJhYzYzNDI5YTNiNWE1MDNm
NDRlMTguLmFjZjY2MTRjMGJkMmQ0MmQxOGI2ODI2ZjQ5MzM0MTA2MDNjMzVlM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cApAQCAtMzY2OSw2ICszNjY5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBUeXBlT2ZJc0Z1bmN0
aW9uOiB7CisgICAgICAgIGNvbXBpbGVJc0NhbGxhYmxlKG5vZGUsIG9wZXJhdGlvblR5cGVPZklz
RnVuY3Rpb24pOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIElzVW5kZWZpbmVk
T3JOdWxsOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgdmFsdWUsIFRh
Z1dvcmQpOwpAQCAtMzcyMSw4ICszNzI2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIElzRnVuY3Rp
b246IHsKLSAgICAgICAgY29tcGlsZUlzRnVuY3Rpb24obm9kZSk7CisgICAgY2FzZSBJc0NhbGxh
YmxlOiB7CisgICAgICAgIGNvbXBpbGVJc0NhbGxhYmxlKG5vZGUsIG9wZXJhdGlvbk9iamVjdElz
Q2FsbGFibGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGM3YTBiZWZmN2U2NWJl
Mjg1ODk1MzRhMzE2OTZjYjYyMmU2OWE1YmIuLjFiNTk2NjMyNzJhZTU3YTc0NmIzNDU3M2I4YmMx
NTY1MDczYzNkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcApAQCAtNDMyMyw2ICs0MzIzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBUeXBlT2ZJc0Z1bmN0aW9uOiB7CisgICAgICAgIGNvbXBpbGVJc0NhbGxhYmxlKG5vZGUsIG9w
ZXJhdGlvblR5cGVPZklzRnVuY3Rpb24pOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBj
YXNlIElzVW5kZWZpbmVkT3JOdWxsOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBS
ZXVzZSwgdmFsdWUpOwpAQCAtNDczMSw4ICs0NzM2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIElz
RnVuY3Rpb246IHsKLSAgICAgICAgY29tcGlsZUlzRnVuY3Rpb24obm9kZSk7CisgICAgY2FzZSBJ
c0NhbGxhYmxlOiB7CisgICAgICAgIGNvbXBpbGVJc0NhbGxhYmxlKG5vZGUsIG9wZXJhdGlvbk9i
amVjdElzQ2FsbGFibGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA5OWE0NzZmMmI4ODdiNWRh
YWE3ZmQ2NGMxNzQ5ZjNmOTdjODA1YWIxLi5hNzE4NjEzODM2MzRmMTIwMWRmMmMzOGU2NDVkMDEw
NGMxZWZhZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCkBAIC0yNTksMTMgKzI1OSwxNCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIElzRW1wdHk6CiAgICAgY2FzZSBUeXBlT2ZJc1Vu
ZGVmaW5lZDoKICAgICBjYXNlIFR5cGVPZklzT2JqZWN0OgorICAgIGNhc2UgVHlwZU9mSXNGdW5j
dGlvbjoKICAgICBjYXNlIElzVW5kZWZpbmVkT3JOdWxsOgogICAgIGNhc2UgSXNCb29sZWFuOgog
ICAgIGNhc2UgSXNOdW1iZXI6CiAgICAgY2FzZSBJc0JpZ0ludDoKICAgICBjYXNlIE51bWJlcklz
SW50ZWdlcjoKICAgICBjYXNlIElzT2JqZWN0OgotICAgIGNhc2UgSXNGdW5jdGlvbjoKKyAgICBj
YXNlIElzQ2FsbGFibGU6CiAgICAgY2FzZSBJc0NvbnN0cnVjdG9yOgogICAgIGNhc2UgSXNUeXBl
ZEFycmF5VmlldzoKICAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAyOWE3MzQ2ZjgyNDE5OWYw
MTViOGE0MmUwMmI1YTU1ZTIzOGVhMGRkLi5iMjY4NDJhYTVkOTM4MGMzYzdkZWEyNDM5YzViZTE1
MDE3NTU2NDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCkBAIC0xMzcwLDYgKzEzNzAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFR5cGVP
ZklzT2JqZWN0OgogICAgICAgICAgICAgY29tcGlsZVR5cGVPZklzT2JqZWN0KCk7CiAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUeXBlT2ZJc0Z1bmN0aW9uOgorICAgICAgICAgICAg
Y29tcGlsZUlzQ2FsbGFibGUob3BlcmF0aW9uVHlwZU9mSXNGdW5jdGlvbik7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICAgICAgICAgIGNv
bXBpbGVJc1VuZGVmaW5lZE9yTnVsbCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDMwLDgg
KzE0MzMsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzT2JqZWN0OgogICAgICAgICAgICAg
Y29tcGlsZUlzT2JqZWN0KCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJc0Z1
bmN0aW9uOgotICAgICAgICAgICAgY29tcGlsZUlzRnVuY3Rpb24oKTsKKyAgICAgICAgY2FzZSBJ
c0NhbGxhYmxlOgorICAgICAgICAgICAgY29tcGlsZUlzQ2FsbGFibGUob3BlcmF0aW9uT2JqZWN0
SXNDYWxsYWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJc0NvbnN0cnVj
dG9yOgogICAgICAgICAgICAgY29tcGlsZUlzQ29uc3RydWN0b3IoKTsKQEAgLTExNzQ2LDcgKzEx
NzQ5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0Qm9vbGVhbihyZXN1bHQpOwogICAgIH0KICAg
ICAKLSAgICB2b2lkIGNvbXBpbGVJc0Z1bmN0aW9uKCkKKyAgICB2b2lkIGNvbXBpbGVJc0NhbGxh
YmxlKFNfSklUT3BlcmF0aW9uX0dDIHNsb3dQYXRoT3BlcmF0aW9uKQogICAgIHsKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgCkBAIC0xMTc3OSw3ICsxMTc4Miw3IEBA
IHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgo
CiAgICAgICAgICAgICBbPSwgJnZtXSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25z
KSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Iodm0sCi0gICAgICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbk9iamVjdElzRnVuY3Rpb24sIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKKyAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhPcGVyYXRpb24sIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIo
KSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdsb2Jh
bE9iamVjdCksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSk7CiAgICAgICAgICAgICB9LCB2YWx1
ZSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IobV9v
dXQubm90TnVsbChzbG93UmVzdWx0VmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApp
bmRleCBmMDc1MWMzYmYxMjFlN2U3N2MxOTdhMzNhYmQ0OTVkOGQwNTIxMDMwLi5lOGZmNTBkYzAx
NmI3ZTFkOTQxOTUwYjU2NDIxMDVmOTU5NzZlMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCkBAIC0yODQsMTAgKzI4NCwxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9TTE9XX09QKGxlc3NlcSkKICAgICAgICAgREVGSU5FX1NMT1df
T1AoZ3JlYXRlcikKICAgICAgICAgREVGSU5FX1NMT1dfT1AoZ3JlYXRlcmVxKQotICAgICAgICBE
RUZJTkVfU0xPV19PUChpc19mdW5jdGlvbikKKyAgICAgICAgREVGSU5FX1NMT1dfT1AoaXNfY2Fs
bGFibGUpCiAgICAgICAgIERFRklORV9TTE9XX09QKGlzX2NvbnN0cnVjdG9yKQogICAgICAgICBE
RUZJTkVfU0xPV19PUCh0eXBlb2YpCiAgICAgICAgIERFRklORV9TTE9XX09QKHR5cGVvZl9pc19v
YmplY3QpCisgICAgICAgIERFRklORV9TTE9XX09QKHR5cGVvZl9pc19mdW5jdGlvbikKICAgICAg
ICAgREVGSU5FX1NMT1dfT1Aoc3RyY2F0KQogICAgICAgICBERUZJTkVfU0xPV19PUChwdXNoX3dp
dGhfc2NvcGUpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9sZXhpY2FsX2Vudmlyb25t
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCAzOGNk
OWZkOWMxNGNmZDczOGRkNTUwNWVjNDZhMjczNjM2OTBjOWNjLi42NWU3MTI1OTU2ODMwYTg4M2U4
MzMzMDc5NTM5ZTIwNDQyYzA1ZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaApAQCAtMTM3LDYgKzEzNyw3IEBAIHVzaW5nIEpfSklUT3BlcmF0aW9uX0dKSSA9
IEVuY29kZWRKU1ZhbHVlKEpJVF9PUEVSQVRJT04gKikoSlNHbG9iYWxPYmplY3QqLCBFbmNvCiB1
c2luZyBWX0pJVE9wZXJhdGlvbl9HU3NpSkpDID0gdm9pZChKSVRfT1BFUkFUSU9OICopKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIHVpbnRwdHJfdCk7CiB1c2luZyBDX0pJVE9wZXJhdGlvbl9UVCA9IHVpbnRwdHJfdChK
SVRfT1BFUkFUSU9OICopKFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBsKik7CiB1c2luZyBDX0pJVE9w
ZXJhdGlvbl9CX0dKc3NKc3MgPSB1aW50cHRyX3QoSklUX09QRVJBVElPTiAqKShKU0dsb2JhbE9i
amVjdCosIEpTU3RyaW5nKiwgSlNTdHJpbmcqKTsKK3VzaW5nIFNfSklUT3BlcmF0aW9uX0dDID0g
c2l6ZV90KEpJVF9PUEVSQVRJT04gKikoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqKTsKIHVzaW5n
IFNfSklUT3BlcmF0aW9uX0dKSiA9IHNpemVfdChKSVRfT1BFUkFUSU9OICopKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKIHVzaW5nIFZfSklUT3BlcmF0
aW9uX0dKSkogPSB2b2lkKEpJVF9PUEVSQVRJT04gKikoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKIHVzaW5nIEpfSklUT3Bl
cmF0aW9uX0dTc2lKSiA9IEVuY29kZWRKU1ZhbHVlKEpJVF9PUEVSQVRJT04gKikoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGI3NGUwMjU2MTI1ZmExYzIzZDY1ZTY3NWNiYTNm
MzA1ZmM2MDllNjMuLjNiODZjMzNmOTljNWIzNzgwZjg1MWI5ZjZlZTcwYjNmODkyMzc4MzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0yMjIyLDcgKzIyMjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uRWZmZWN0ZnVsNDIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk1ha2VNYXNxdWVyYWRl
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRnVu
Y3Rpb246OmNyZWF0ZUZ1bmN0aW9uVGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQodm0sIGdsb2Jh
bE9iamVjdCwgMCwgIklzSFRNTEREQSJfcywgZnVuY3Rpb25DYWxsTWFzcXVlcmFkZXIpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEludGVybmFsRnVuY3Rpb246OmNyZWF0ZUZ1bmN0aW9u
VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQodm0sIGdsb2JhbE9iamVjdCwgMCwgIklzSFRNTERE
QSJfcywgZnVuY3Rpb25DYWxsTWFzcXVlcmFkZXIpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxNYXNxdWVyYWRlcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KaW5kZXggYWZjODRjZWZjNjUyZmMzMTY1YzUzZDY5MzNjMGFhN2YyOTBjMjdl
MC4uZTUxZDdiYmRkOGMxY2Y1NGExYjljMGEzZjQ2MjAyZmFjZjBkMmQ0MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAt
MTc4MSw3ICsxNzgxLDcgQEAgZW5kCiAKIHNsb3dQYXRoT3AoaW5fYnlfaWQpCiBzbG93UGF0aE9w
KGluX2J5X3ZhbCkKLXNsb3dQYXRoT3AoaXNfZnVuY3Rpb24pCitzbG93UGF0aE9wKGlzX2NhbGxh
YmxlKQogc2xvd1BhdGhPcChpc19jb25zdHJ1Y3RvcikKIHNsb3dQYXRoT3AobGVzcykKIHNsb3dQ
YXRoT3AobGVzc2VxKQpAQCAtMTc5OSw2ICsxNzk5LDcgQEAgc2xvd1BhdGhPcCh0aHJvd19zdGF0
aWNfZXJyb3IpCiBzbG93UGF0aE9wKHRvX2luZGV4X3N0cmluZykKIHNsb3dQYXRoT3AodHlwZW9m
KQogc2xvd1BhdGhPcCh0eXBlb2ZfaXNfb2JqZWN0KQorc2xvd1BhdGhPcCh0eXBlb2ZfaXNfZnVu
Y3Rpb24pCiBzbG93UGF0aE9wKHVucmVhY2hhYmxlKQogc2xvd1BhdGhPcChuZXdfcHJvbWlzZSkK
IHNsb3dQYXRoT3AobmV3X2dlbmVyYXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGIwMjg5ZjQ0MmMxMWIwMTZmMjk1ZWNm
MmIyNWIyM2U1MmZiNmVkZDIuLjkxMzViNWNlZjAzODdiMDAxMDM1Yzg5YmY2MDk4MTc1MjkzMmVj
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcApAQCAtODExLDEwICs4MTEsMTcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3R5
cGVvZl9pc19vYmplY3QpCiAgICAgUkVUVVJOKGpzQm9vbGVhbihqc1R5cGVvZklzT2JqZWN0KGds
b2JhbE9iamVjdCwgR0VUX0MoYnl0ZWNvZGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpKSk7CiB9CiAK
LVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc19mdW5jdGlvbikKK1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF90eXBlb2ZfaXNfZnVuY3Rpb24pCiB7CiAgICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5
dGVjb2RlID0gcGMtPmFzPE9wSXNGdW5jdGlvbj4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMt
PmFzPE9wVHlwZW9mSXNGdW5jdGlvbj4oKTsKKyAgICBSRVRVUk4oanNCb29sZWFuKGpzVHlwZW9m
SXNGdW5jdGlvbihnbG9iYWxPYmplY3QsIEdFVF9DKGJ5dGVjb2RlLm1fb3BlcmFuZCkuanNWYWx1
ZSgpKSkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNfY2FsbGFibGUpCit7Cisg
ICAgQkVHSU4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSXNDYWxsYWJsZT4oKTsK
ICAgICBSRVRVUk4oanNCb29sZWFuKEdFVF9DKGJ5dGVjb2RlLm1fb3BlcmFuZCkuanNWYWx1ZSgp
LmlzQ2FsbGFibGUodm0pKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggYjg5OTFkNmFiMTg2MDdhN2Q0NWJkMDFmYWQ5YTc1
YWQxMWRmZmY2Ni4uN2EzOWFmODk5ZjJhZjViNzNjOTIwNGJhYzM2YTVkY2QwNGJhMDZhMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAg
LTI1Miw4ICsyNTIsOSBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2JpdG9yKTsK
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYml0eG9yKTsKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfdHlwZW9mKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfdHlwZW9mX2lzX29iamVjdCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3R5
cGVvZl9pc19mdW5jdGlvbik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lzX29i
amVjdCk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lzX2Z1bmN0aW9uKTsKK1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXNfY2FsbGFibGUpOwogU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9pc19jb25zdHJ1Y3Rvcik7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2luX2J5X2lkKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
aW5fYnlfdmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJu
YWxGdW5jdGlvbi5jcHAKaW5kZXggNTE0YWUwMGI3NjJkMjZkZDU3NWFiMmY5NjdlYTdjMzRmZjAy
Yzk5Zi4uNzRkZGQ2NWY0M2U5OTk4NGJiOGRmNDIwMDFiNDNjZDMwNDUwNTA5MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKQEAg
LTE1MSw2ICsxNTEsMTYgQEAgU3RydWN0dXJlKiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJj
bGFzc1N0cnVjdHVyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICByZXR1cm4gYmFz
ZUNsYXNzOwogfQogCitJbnRlcm5hbEZ1bmN0aW9uKiBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVG
dW5jdGlvblRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5j
dGlvbiBuYXRpdmVGdW5jdGlvbikKK3sKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90
eXBlKCksIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBJbnRlcm5hbEZ1bmN0aW9uOjpT
dHJ1Y3R1cmVGbGFncyB8IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCBJbnRlcm5hbEZ1bmN0aW9u
OjppbmZvKCkpOworICAgIGdsb2JhbE9iamVjdC0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNo
cG9pbnQoKS0+ZmlyZUFsbChnbG9iYWxPYmplY3QtPnZtKCksICJBbGxvY2F0ZWQgbWFzcXVlcmFk
aW5nIG9iamVjdCIpOworICAgIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW50ZXJuYWxGdW5jdGlvbj4odm0uaGVhcCkpIEludGVybmFsRnVu
Y3Rpb24odm0sIHN0cnVjdHVyZSwgbmF0aXZlRnVuY3Rpb24pOworICAgIGZ1bmN0aW9uLT5maW5p
c2hDcmVhdGlvbih2bSwgbmFtZSwgTmFtZUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRy
YW5zaXRpb24pOworICAgIGZ1bmN0aW9uLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcihsZW5ndGgpLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHJldHVy
biBmdW5jdGlvbjsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXRmdW5j
dGlvbnJlYWxtCiBKU0dsb2JhbE9iamVjdCogZ2V0RnVuY3Rpb25SZWFsbShWTSYgdm0sIEpTT2Jq
ZWN0KiBvYmplY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRlcm5hbEZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRl
cm5hbEZ1bmN0aW9uLmgKaW5kZXggYTkwYjdhYTdmMDY5MTQxMTVkNWNlYTNhMzg4MjU2ZjYzOTAz
ODc2NC4uM2FiZDEyYjk4MjUzYjliMDAzZDkxNzQ0MzdiNDI1NDA5ZGNhY2QyMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaApAQCAtNTgs
NiArNTgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoSlNHbG9iYWxPYmplY3QqLCBKU09i
amVjdCogbmV3VGFyZ2V0LCBTdHJ1Y3R1cmUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgSW50ZXJuYWxGdW5jdGlvbiogY3JlYXRlRnVuY3Rpb25UaGF0TWFzcXVlcmFkZXNBc1VuZGVm
aW5lZChWTSYsIEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBOYXRpdmVGdW5jdGlvbik7CiAKICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5j
dGlvbkZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiAgICAgewpAQCAtODMsNyArODQs
NyBAQCBwdWJsaWM6CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBJbnRlcm5hbEZ1bmN0aW9uKFZNJiwgU3RydWN0dXJlKiwgTmF0aXZlRnVuY3Rp
b24gZnVuY3Rpb25Gb3JDYWxsLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbkZvckNvbnN0cnVjdCk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSW50ZXJuYWxGdW5jdGlvbihWTSYsIFN0cnVjdHVyZSos
IE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uRm9yQ2FsbCwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb25G
b3JDb25zdHJ1Y3QgPSBudWxscHRyKTsKIAogICAgIGVudW0gY2xhc3MgTmFtZUFkZGl0aW9uTW9k
ZSB7IFdpdGhTdHJ1Y3R1cmVUcmFuc2l0aW9uLCBXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbiB9
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBjb25zdCBT
dHJpbmcmIG5hbWUsIE5hbWVBZGRpdGlvbk1vZGUgPSBOYW1lQWRkaXRpb25Nb2RlOjpXaXRoU3Ry
dWN0dXJlVHJhbnNpdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCmluZGV4IDg4ZDUzNjlhNDkxMTc4YmY0NjcxZDA3NDVlMTZiNGIyZWRhN2E3NGEu
LjBkNmVlYmJmNjcyMDE3OTE2ZmQ2OTM3MDNjODA0Y2M3M2MxMjFkODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC05NSwxNiArOTUsNiBAQCBK
U0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBpbnQgbGVuZ3RoLAogICAgIHJldHVybiBmdW5jdGlvbjsKIH0KIAotSlNGdW5j
dGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlRnVuY3Rpb25UaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0
IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBp
bnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yLCBjb25zdCBET01KSVQ6
OlNpZ25hdHVyZSogc2lnbmF0dXJlKQotewotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24obmF0aXZlRnVuY3Rpb24sIGludHJpbnNpYywgbmF0aXZl
Q29uc3RydWN0b3IsIHNpZ25hdHVyZSwgbmFtZSk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVj
dFByb3RvdHlwZSgpLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgSlNGdW5jdGlvbjo6U3RydWN0
dXJlRmxhZ3MgfCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSwgSlNGdW5jdGlvbjo6aW5mbygpKTsK
LSAgICBnbG9iYWxPYmplY3QtPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCktPmZp
cmVBbGwoZ2xvYmFsT2JqZWN0LT52bSgpLCAiQWxsb2NhdGVkIG1hc3F1ZXJhZGluZyBvYmplY3Qi
KTsKLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTRnVuY3Rpb24+KHZtLmhlYXApKSBKU0Z1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSk7Ci0gICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtLCBleGVj
dXRhYmxlLCBsZW5ndGgsIG5hbWUpOwotICAgIHJldHVybiBmdW5jdGlvbjsKLX0KLQogSlNGdW5j
dGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDog
QmFzZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2V4ZWN1dGFibGVPclJh
cmVEYXRhKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGV4ZWN1dGFibGUpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDZkZjBjNWExNzg3YTNmZGY1NDVi
NTYyMmQ2MjkwYjNkZTdjMjljNWMuLjJmMTNjNDhhZDM4Njg3MWFmOTc3NDk3NGZkMzI0NGYwM2I4
ZGQwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAg
LTgxLDcgKzgxLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHNlbGVjdFN0cnVj
dHVyZUZvck5ld0Z1bmNFeHAoSlNHbG9iYWxPYmplY3QqLCBGdW5jdGlvbkV4ZWN1dGFibGUqKTsK
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVu
Y3Rpb24sIEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25z
dHJ1Y3RvciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBjb25zdCBET01KSVQ6OlNp
Z25hdHVyZSogPSBudWxscHRyKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNGdW5j
dGlvbiogY3JlYXRlRnVuY3Rpb25UaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZChWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlv
biwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVj
dG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIGNvbnN0IERPTUpJVDo6U2lnbmF0
dXJlKiA9IG51bGxwdHIpOwogICAgIAogICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGVXaXRo
SW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxl
KiwgSlNTY29wZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmgKaW5kZXggYzBkMzkyOGY4YTY4YWFjNzY0ZTMzNDcwYmMzYjBmNDc2MDEyZmNlOS4uZjMxNDFl
NjA1OGJmMzFiNjNhYjRkODZiYzk0YzU4YTdjNWQ2ZTQwZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAtMzYsNiArMzYsMTkgQEAgSlNWYWx1ZSBqc1R5
cGVTdHJpbmdGb3JWYWx1ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiBib29sIGpz
VHlwZW9mSXNPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIHNpemVfdCBub3JtYWxp
emVQcm90b3R5cGVDaGFpbihKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIGJvb2wmIHNhd1BvbHlQ
cm90byk7CiAKK0FMV0FZU19JTkxJTkUgYm9vbCBqc1R5cGVvZklzRnVuY3Rpb24oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICAgICAgaWYgKG9iamVjdC0+c3Ry
dWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAob2JqZWN0LT5pc0NhbGxhYmxlKHZtKSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpzU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFN0cmluZyYgdTEsIEpTU3RyaW5nKiBzMikKIHsKICAgICBWTSYgdm0gPSBn
ZXRWTShnbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGUwOWUzYjdhODAwNTA1NzRhOGM5MTI4OTY3ZDYyNGVh
MWZhMzExN2YuLjc1YWIyNTlmZmZmY2Q5YWE0NjljZThmYWEwMzYwMmIwMTZhMjlmYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAg
LTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW50ZXJuYWxGdW5j
dGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNNaWNyb3Rhc2suaD4KQEAgLTY0NCw3ICs2NDUsNyBAQCBKU1ZhbHVlIEpTRE9NV2luZG93Ojpv
cGVuRGF0YWJhc2UoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCkgY29u
cwogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlNR
TEVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgJmxleGlj
YWxHbG9iYWxPYmplY3QsIDQsIG5hbWUsIGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbk9wZW5E
YXRhYmFzZSwgTm9JbnRyaW5zaWMpOwogCi0gICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZUZ1
bmN0aW9uVGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0
LCA0LCBuYW1lLCBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25PcGVuRGF0YWJhc2UsIE5vSW50
cmluc2ljKTsKKyAgICByZXR1cm4gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlRnVuY3Rpb25UaGF0
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCh2bSwgJmxleGljYWxHbG9iYWxPYmplY3QsIDQsIG5hbWUs
IGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbk9wZW5EYXRhYmFzZSk7CiB9CiAKIHZvaWQgSlNE
T01XaW5kb3c6OnNldE9wZW5EYXRhYmFzZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzNiZGMwNzZiMGU2YWVkNzBh
NDFmY2EyYzUxZTFiZjczNWEwNDc5My4uMmU4ZmRmZDkyMzFkYThmNzdhZDgyMzY4YjI2MzlkZTYx
ZDJlYjViNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA4LTE5ICBBbGV4ZXkgU2h2YXlr
YSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgT3BJc0NhbGxh
YmxlIGJ5dGVjb2RlIGFuZCBpbnRyaW5zaWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxNTU3MgorCisgICAgICAgIFJldmlld2VkIGJ5IFJvc3MgS2ly
c2xpbmcgYW5kIFNhYW0gQmFyYXRpLgorCisgICAgICAgICoganMvZG9tL2RvY3VtZW50LWFsbC1p
cy1jYWxsYWJsZS1idWlsdGlucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2Rv
bS9kb2N1bWVudC1hbGwtaXMtY2FsbGFibGUtYnVpbHRpbnMuaHRtbDogQWRkZWQuCisgICAgICAg
ICoganMvZG9tL2RvY3VtZW50LWFsbC10eXBlb2YtaXMtZnVuY3Rpb24tZm9sZC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9kb2N1bWVudC1hbGwtdHlwZW9mLWlzLWZ1bmN0
aW9uLWZvbGQuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvZG9tL3NjcmlwdC10ZXN0cy9kb2N1
bWVudC1hbGwtaXMtY2FsbGFibGUtYnVpbHRpbnMuanM6IEFkZGVkLgorICAgICAgICAqIGpzL2Rv
bS9zY3JpcHQtdGVzdHMvZG9jdW1lbnQtYWxsLXR5cGVvZi1pcy1mdW5jdGlvbi1mb2xkLmpzOiBB
ZGRlZC4KKwogMjAyMC0wOC0xOSAgSGVjdG9yIExvcGV6ICA8aGVjdG9yX2lfbG9wZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgWyBtYWNPUyBdIGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC1lbGVtZW50
LXNlbGVjdGlvbi13aXRoLW9wdGdyb3Vwcy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvY3VtZW50LWFsbC1pcy1jYWxsYWJsZS1idWlsdGlu
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9jdW1lbnQtYWxsLWlzLWNhbGxh
YmxlLWJ1aWx0aW5zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjliZDFjYTA5OGJkNjA2NTVm
Njc4Y2ZjNzA0MGU5MWE5ODVkYWNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMv
ZG9tL2RvY3VtZW50LWFsbC1pcy1jYWxsYWJsZS1idWlsdGlucy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMyBAQAorZG9jdW1lbnQuYWxsIGlzIGNhbGxhYmxlIChidWlsdGlucykKKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGVzdEFycmF5KCkgaXMgdHJ1ZQorUEFTUyB0
ZXN0VHlwZWRBcnJheSgpIGlzIHRydWUKK1BBU1MgdGVzdFJlZ0V4cCgpIGlzIHRydWUKK1BBU1Mg
dGVzdE90aGVyQnVpbHRpbnMoKSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2Rv
Y3VtZW50LWFsbC1pcy1jYWxsYWJsZS1idWlsdGlucy5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9t
L2RvY3VtZW50LWFsbC1pcy1jYWxsYWJsZS1idWlsdGlucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlYTQ1
ZjI3MmYzYTQ5Y2Q3ZDBlZThkMDNhNThmYjg0NWY1NWU2ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9kb20vZG9jdW1lbnQtYWxsLWlzLWNhbGxhYmxlLWJ1aWx0aW5zLmh0bWwK
QEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZG9jdW1lbnQtYWxsLWlzLWNhbGxh
YmxlLWJ1aWx0aW5zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL2RvbS9kb2N1bWVudC1hbGwtdHlwZW9mLWlzLWZ1bmN0aW9uLWZvbGQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvY3VtZW50LWFsbC10eXBlb2YtaXMt
ZnVuY3Rpb24tZm9sZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY0MDNjOGQxMTY0Y2RkZTdh
MTAyMDYwYTM4N2M1MTE3M2I2YzJhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L2RvbS9kb2N1bWVudC1hbGwtdHlwZW9mLWlzLWZ1bmN0aW9uLWZvbGQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTEgQEAKK3R5cGVvZiBkb2N1bWVudC5hbGwgaXMgbmV2ZXIgJ2Z1bmN0aW9uJwor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0ZXN0VHlwZW9mSXNGdW5jdGlv
bigpIGlzIGZhbHNlCitQQVNTIHRlc3RUeXBlb2ZJc05vdEZ1bmN0aW9uKCkgaXMgdHJ1ZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb2N1bWVudC1hbGwtdHlwZW9mLWlzLWZ1bmN0aW9uLWZv
bGQuaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb2N1bWVudC1hbGwtdHlwZW9mLWlzLWZ1bmN0
aW9uLWZvbGQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWJlNTJkMTcwM2YyNDk4YTYxZTA2NDc1MDJlZjQ2
NDAzMjMxNmE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvY3VtZW50
LWFsbC10eXBlb2YtaXMtZnVuY3Rpb24tZm9sZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9D
VFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL2RvY3VtZW50LWFsbC10eXBlb2YtaXMtZnVuY3Rpb24tZm9sZC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20v
c2NyaXB0LXRlc3RzL2RvY3VtZW50LWFsbC1pcy1jYWxsYWJsZS1idWlsdGlucy5qcyBiL0xheW91
dFRlc3RzL2pzL2RvbS9zY3JpcHQtdGVzdHMvZG9jdW1lbnQtYWxsLWlzLWNhbGxhYmxlLWJ1aWx0
aW5zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM5NmJiNWZhYmYwOWQ0NDczYTYyNmMwZGU3NDllNWJiNWQ5MGU5
NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL2Rv
Y3VtZW50LWFsbC1pcy1jYWxsYWJsZS1idWlsdGlucy5qcwpAQCAtMCwwICsxLDc0IEBACitkZXNj
cmlwdGlvbigiZG9jdW1lbnQuYWxsIGlzIGNhbGxhYmxlIChidWlsdGlucykiKTsKK2NvbnN0IGRv
Y3VtZW50QWxsID0gZG9jdW1lbnQuYWxsOworCitmdW5jdGlvbiB0ZXN0QXJyYXkoKSB7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBBcnJheS5mcm9tKFtdLCBk
b2N1bWVudEFsbCk7CisgICAgICAgIFtdLnJlZHVjZShkb2N1bWVudEFsbCwgbnVsbCk7CisgICAg
ICAgIFtdLnJlZHVjZVJpZ2h0KGRvY3VtZW50QWxsLCBudWxsKTsKKyAgICAgICAgW10uZXZlcnko
ZG9jdW1lbnRBbGwpOworICAgICAgICBbXS5mb3JFYWNoKGRvY3VtZW50QWxsKTsKKyAgICAgICAg
W10uZmlsdGVyKGRvY3VtZW50QWxsKTsKKyAgICAgICAgW10ubWFwKGRvY3VtZW50QWxsKTsKKyAg
ICAgICAgW10uc29tZShkb2N1bWVudEFsbCk7CisgICAgICAgIFtdLmZpbmQoZG9jdW1lbnRBbGwp
OworICAgICAgICBbXS5maW5kSW5kZXgoZG9jdW1lbnRBbGwpOworICAgICAgICBbXS5zb3J0KGRv
Y3VtZW50QWxsKTsKKyAgICAgICAgW10uZmxhdE1hcChkb2N1bWVudEFsbCk7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiB0ZXN0VHlwZWRBcnJheSgpIHsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIEZsb2F0NjRBcnJheS5mcm9tKFtd
LCBkb2N1bWVudEFsbCk7CisgICAgICAgIChuZXcgRmxvYXQzMkFycmF5KS5ldmVyeShkb2N1bWVu
dEFsbCk7CisgICAgICAgIChuZXcgSW50MzJBcnJheSkuZmluZChkb2N1bWVudEFsbCk7CisgICAg
ICAgIChuZXcgSW50MTZBcnJheSkuZmluZEluZGV4KGRvY3VtZW50QWxsKTsKKyAgICAgICAgKG5l
dyBJbnQ4QXJyYXkpLmZvckVhY2goZG9jdW1lbnRBbGwpOworICAgICAgICAobmV3IFVpbnQzMkFy
cmF5KS5zb21lKGRvY3VtZW50QWxsKTsKKyAgICAgICAgKG5ldyBVaW50MTZBcnJheSkuc29ydChk
b2N1bWVudEFsbCk7CisgICAgICAgIChuZXcgVWludDhBcnJheSkucmVkdWNlKGRvY3VtZW50QWxs
LCBudWxsKTsKKyAgICAgICAgKG5ldyBVaW50OENsYW1wZWRBcnJheSkucmVkdWNlUmlnaHQoZG9j
dW1lbnRBbGwsIG51bGwpOworICAgICAgICAobmV3IEZsb2F0NjRBcnJheSkubWFwKGRvY3VtZW50
QWxsKTsKKyAgICAgICAgKG5ldyBGbG9hdDMyQXJyYXkpLmZpbHRlcihkb2N1bWVudEFsbCk7Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiB0ZXN0UmVnRXhwKCkgeworICAg
IHZhciB0ZXN0ID0gUmVnRXhwLnByb3RvdHlwZS50ZXN0OworICAgIHZhciByZXBsYWNlID0gUmVn
RXhwLnByb3RvdHlwZVtTeW1ib2wucmVwbGFjZV07CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDFlNDsgKytpKSB7CisgICAgICAgIGlmICh0ZXN0LmNhbGwoe2V4ZWM6IGRvY3VtZW50QWxsfSwg
IngiKSAhPT0gZmFsc2UpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYg
KHJlcGxhY2UuY2FsbCgvLi8sICJ4IiwgZG9jdW1lbnRBbGwpICE9PSAibnVsbCIpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlv
biB0ZXN0T3RoZXJCdWlsdGlucygpIHsKKyAgICBQcm9taXNlLnJlc29sdmUgPSBkb2N1bWVudEFs
bDsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgUHJvbWlz
ZS5hbGwoW10pOworICAgICAgICBQcm9taXNlLmFsbFNldHRsZWQoW10pOworICAgICAgICBQcm9t
aXNlLmFueShbXSk7CisgICAgICAgIFByb21pc2UucmFjZShbXSk7CisgICAgICAgIG5ldyBQcm9t
aXNlKGRvY3VtZW50QWxsKTsKKworICAgICAgICBSZWZsZWN0LmFwcGx5KGRvY3VtZW50QWxsLCBu
dWxsLCBbXSk7CisgICAgICAgIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmNhbGwoZG9jdW1lbnRB
bGwpOworICAgICAgICAobmV3IE1hcCkuZm9yRWFjaChkb2N1bWVudEFsbCk7CisgICAgICAgIChu
ZXcgU2V0KS5mb3JFYWNoKGRvY3VtZW50QWxsKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3Nob3VsZEJlVHJ1ZSgidGVzdEFycmF5KCkiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdFR5cGVk
QXJyYXkoKSIpOworc2hvdWxkQmVUcnVlKCJ0ZXN0UmVnRXhwKCkiKTsKK3Nob3VsZEJlVHJ1ZSgi
dGVzdE90aGVyQnVpbHRpbnMoKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL3Nj
cmlwdC10ZXN0cy9kb2N1bWVudC1hbGwtdHlwZW9mLWlzLWZ1bmN0aW9uLWZvbGQuanMgYi9MYXlv
dXRUZXN0cy9qcy9kb20vc2NyaXB0LXRlc3RzL2RvY3VtZW50LWFsbC10eXBlb2YtaXMtZnVuY3Rp
b24tZm9sZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTk3OTZjMzAzMjM5YTc3MDZlMzgyMGI5ZWIwNTVjOTU2
ZTk5ZGRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL3NjcmlwdC10ZXN0
cy9kb2N1bWVudC1hbGwtdHlwZW9mLWlzLWZ1bmN0aW9uLWZvbGQuanMKQEAgLTAsMCArMSwxOSBA
QAorZGVzY3JpcHRpb24oInR5cGVvZiBkb2N1bWVudC5hbGwgaXMgbmV2ZXIgJ2Z1bmN0aW9uJyIp
OworY29uc3QgZG9jdW1lbnRBbGwgPSBkb2N1bWVudC5hbGw7CisKK2Z1bmN0aW9uIHRlc3RUeXBl
b2ZJc0Z1bmN0aW9uKCkgeworICAgIGxldCBhY2MgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMWU2OyArK2kpCisgICAgICAgIGFjYyArPSAodHlwZW9mIGRvY3VtZW50QWxsID09PSAiZnVu
Y3Rpb24iKTsKKyAgICByZXR1cm4gYWNjID09PSAxZTY7Cit9CisKK2Z1bmN0aW9uIHRlc3RUeXBl
b2ZJc05vdEZ1bmN0aW9uKCkgeworICAgIGxldCBhY2MgPSAwOworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMWU2OyArK2kpCisgICAgICAgIGFjYyArPSAodHlwZW9mIGRvY3VtZW50QWxsICE9PSAi
ZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gYWNjID09PSAxZTY7Cit9CisKK3Nob3VsZEJlRmFsc2Uo
InRlc3RUeXBlb2ZJc0Z1bmN0aW9uKCkiKTsKK3Nob3VsZEJlVHJ1ZSgidGVzdFR5cGVvZklzTm90
RnVuY3Rpb24oKSIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0No
YW5nZUxvZwppbmRleCA4NGIxZDM2NTUyNTM4ZjhhMjVmYjdlMDY1OTY2ZDk4MDMzNTU0M2JmLi41
OWE4MTA4NzgwMDllYjdhNGNmOThkMWQ4OTU1ZTUwOWVmMWIyNWZjIDEwMDY0NAotLS0gYS9KU1Rl
c3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDIwLTA4LTE5ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAg
ICAgICBJbnRyb2R1Y2UgT3BJc0NhbGxhYmxlIGJ5dGVjb2RlIGFuZCBpbnRyaW5zaWMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTU3MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFJvc3MgS2lyc2xpbmcgYW5kIFNhYW0gQmFyYXRpLgorCisgICAgICAg
ICogc3RyZXNzL3R5cGUtb2YtZnVuY3Rpb25zLWFuZC1vYmplY3RzLmpzOgorICAgICAgICAqIHRl
c3QyNjIvZXhwZWN0YXRpb25zLnlhbWw6IE1hcmsgMiB0ZXN0IGNhc2VzIGFzIHBhc3NpbmcuCisK
IDIwMjAtMDgtMTcgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
SGF2ZSBhbiBPT0IrU2FuZUNoYWluIEFycmF5OjpTcGVjdWxhdGlvbgpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvdHlwZS1vZi1mdW5jdGlvbnMtYW5kLW9iamVjdHMuanMgYi9KU1Rlc3RzL3N0
cmVzcy90eXBlLW9mLWZ1bmN0aW9ucy1hbmQtb2JqZWN0cy5qcwppbmRleCA5MzYzMTU4ZTQ0OWEx
YWQ1MWIzNmZlYTVhYmZmYTAxZjg4ZmRlNGRiLi42YWQyNTRiZmI0MDFlZmNiZjBiYjc2MGM0ZDU1
N2M5NmMyOGI1NTUzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy90eXBlLW9mLWZ1bmN0aW9u
cy1hbmQtb2JqZWN0cy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy90eXBlLW9mLWZ1bmN0aW9ucy1h
bmQtb2JqZWN0cy5qcwpAQCAtNzIsNiArNzIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgIHRl
c3RWYWx1ZShNYXAsICJmdW5jdGlvbiIpOwogICAgIHRlc3RWYWx1ZShEYXRlLCAiZnVuY3Rpb24i
KTsKICAgICB0ZXN0VmFsdWUoTWFwLnByb3RvdHlwZSwgIm9iamVjdCIpOworICAgIHRlc3RWYWx1
ZShtYWtlTWFzcXVlcmFkZXIoKSwgIm90aGVyIik7CiAgICAgCiAgICAgaWYgKCFlcnJvcnMubGVu
Z3RoKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0
YXRpb25zLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKaW5kZXggNzlh
OTNkZDg5NGQ4NzdjY2U3YTcyODFlMWM1MmQwOTc0MDU5NTZhZi4uNzA1MTJiNGZlMTVkNTUyNjM3
ZTU1NDBkMTk5NTAyYzdlZWYzMWQxMCAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVj
dGF0aW9ucy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbApAQCAt
Mjk1LDkgKzI5NSw2IEBAIHRlc3QvYW5uZXhCL2xhbmd1YWdlL2V2YWwtY29kZS9pbmRpcmVjdC9n
bG9iYWwtc3dpdGNoLWRmbHQtZXZhbC1nbG9iYWwtc2tpcC1lYXJsCiAgIGRlZmF1bHQ6ICdUZXN0
MjYyRXJyb3I6IEFuIGluaXRpYWxpemVkIGJpbmRpbmcgaXMgbm90IGNyZWF0ZWQgZm9sbG93aW5n
IGV2YWx1YXRpb24gRXhwZWN0ZWQgYSBSZWZlcmVuY2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5v
IGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKIHRlc3QvYW5uZXhCL2xhbmd1YWdlL2V2YWwt
Y29kZS9pbmRpcmVjdC9nbG9iYWwtc3dpdGNoLWRmbHQtZXZhbC1nbG9iYWwtc2tpcC1lYXJseS1l
cnItdHJ5LmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBBbiBpbml0aWFsaXplZCBiaW5k
aW5nIGlzIG5vdCBjcmVhdGVkIHByaW9yIHRvIGV2YWx1YXRpb24gRXhwZWN0ZWQgYSBSZWZlcmVu
Y2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcK
LXRlc3QvYW5uZXhCL2xhbmd1YWdlL2V4cHJlc3Npb25zL3R5cGVvZi9lbXVsYXRlcy11bmRlZmlu
ZWQuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6ICE9PSAiZnVuY3Rpb24iJwotICBzdHJp
Y3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogIT09ICJmdW5jdGlvbiInCiB0ZXN0L2FubmV4Qi9sYW5n
dWFnZS9mdW5jdGlvbi1jb2RlL2Jsb2NrLWRlY2wtZnVuYy1za2lwLWFyZ3VtZW50cy5qczoKICAg
ZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZnVuY3Rpb24gYXJn
dW1lbnRzKCkge33Cuywgwqtbb2JqZWN0IEFyZ3VtZW50c13CuykgdG8gYmUgdHJ1ZScKIHRlc3Qv
YW5uZXhCL2xhbmd1YWdlL2Z1bmN0aW9uLWNvZGUvYmxvY2stZGVjbC1mdW5jLXNraXAtZWFybHkt
ZXJyLWJsb2NrLmpzOgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>