<?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>156072</bug_id>
          
          <creation_ts>2016-03-31 11:06:38 -0700</creation_ts>
          <short_desc>[JSC] Add truncate operation (rounding to zero)</short_desc>
          <delta_ts>2016-04-04 02:10:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>156160</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1179472</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-31 11:06:38 -0700</bug_when>
    <thetext>Add Math.trunc&apos;s TruncIntrinsic and DFG ArithTrunc.
And use @trunc in toInteger. (This is the same in JSValue::toInteger)
Currently, even if we know the given value is Int32, due to @abs and negation, we always emit some code.
But if we add it, we can convert them to Identity in DFG Fixup phase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179480</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-31 11:15:13 -0700</bug_when>
    <thetext>Let&apos;s use B3 Patchpoint instead of adding new B3 / Air IR!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179593</commentid>
    <comment_count>2</comment_count>
      <attachid>275331</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-31 14:46:30 -0700</bug_when>
    <thetext>Created attachment 275331
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179643</commentid>
    <comment_count>3</comment_count>
      <attachid>275347</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-31 15:59:08 -0700</bug_when>
    <thetext>Created attachment 275347
Patch

WIP2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179816</commentid>
    <comment_count>4</comment_count>
      <attachid>275394</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-01 04:59:42 -0700</bug_when>
    <thetext>Created attachment 275394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179817</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-01 05:01:24 -0700</bug_when>
    <thetext>Added micro benchmarks that use trunc.

92/92                                          
Generating benchmark report at /Users/yusukesuzuki/dev/WebKit/Baseline_Trunc_JSRegress_192-168-22-121_20160401_2101_report.txt
And raw data at /Users/yusukesuzuki/dev/WebKit/Baseline_Trunc_JSRegress_192-168-22-121_20160401_2101.json

Benchmark report for JSRegress on 192-168-22-121 (MacBookPro10,1).

VMs tested:
&quot;Baseline&quot; at /Users/yusukesuzuki/dev/WebKit/WebKitBuild/trunc-master/Release/jsc
&quot;Trunc&quot; at /Users/yusukesuzuki/dev/WebKit/WebKitBuild/trunc/Release/jsc

Collected 10 samples per benchmark/VM, with 10 VM invocations per benchmark. Emitted a call to gc()
between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the
jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution
times with 95% confidence intervals in milliseconds.

                             Baseline                   Trunc                                       

many-foreach-calls       22.2353+-1.0961     ^     18.1958+-0.3896        ^ definitely 1.2220x faster
math-trunc               42.7834+-0.9172     ^     23.8203+-1.0271        ^ definitely 1.7961x faster

&lt;geometric&gt;              30.8220+-0.7449     ^     20.8044+-0.3740        ^ definitely 1.4815x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179818</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-01 05:02:18 -0700</bug_when>
    <thetext>Attachment 275394 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:155:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 45 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180040</commentid>
    <comment_count>7</comment_count>
      <attachid>275462</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-02 00:34:11 -0700</bug_when>
    <thetext>Created attachment 275462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180041</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-02 00:35:30 -0700</bug_when>
    <thetext>Attachment 275462 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:155:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 45 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180043</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-02 00:38:39 -0700</bug_when>
    <thetext>Related benchmark results.

Benchmark report for JSRegress on dandelion (MacBookPro10,1).

VMs tested:
&quot;Baseline&quot; at /Users/yusukesuzuki/dev/WebKit/WebKitBuild/trunc-master/Release/jsc
&quot;Trunc&quot; at /Users/yusukesuzuki/dev/WebKit/WebKitBuild/trunc/Release/jsc

Collected 20 samples per benchmark/VM, with 20 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to
get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                Baseline                   Trunc                                       

array-prototype-every                       81.9896+-1.8672     ^     77.5264+-1.0458        ^ definitely 1.0576x faster
array-prototype-forEach                     78.7342+-0.7214           77.1840+-0.9078          might be 1.0201x faster
array-prototype-map                         80.3581+-0.6846     ^     77.7265+-0.6281        ^ definitely 1.0339x faster
array-prototype-reduce                      74.9866+-0.6510     ?     75.3615+-0.7255        ?
array-prototype-reduceRight                 92.0309+-0.7503     ^     89.1449+-0.6684        ^ definitely 1.0324x faster
array-prototype-some                        80.5732+-0.8079     ^     76.9317+-0.5362        ^ definitely 1.0473x faster
many-foreach-calls                          22.7338+-1.0990     ^     18.6803+-0.6081        ^ definitely 1.2170x faster
math-trunc                                   8.8024+-0.2148     ^      6.2823+-0.1497        ^ definitely 1.4011x faster
string-repeat-arith                         26.1573+-0.7163           25.6345+-0.4013          might be 1.0204x faster
string-repeat-not-resolving-fixed            3.6999+-0.1178            3.5125+-0.0818          might be 1.0534x faster
string-repeat-not-resolving-no-inline        5.4666+-0.1887            5.3437+-0.1892          might be 1.0230x faster
string-repeat-not-resolving                  5.5505+-0.2369     ^      4.8133+-0.1615        ^ definitely 1.1532x faster
string-repeat-resolving-fixed               26.5824+-0.4180           26.3695+-0.3880        
string-repeat-resolving-no-inline           34.5224+-0.6110     ?     34.9351+-0.5973        ? might be 1.0120x slower
string-repeat-resolving                     34.1329+-0.4977           34.0148+-0.3377        
string-repeat-single-not-resolving           9.6244+-0.4989     ?      9.7663+-0.6325        ? might be 1.0147x slower
string-repeat-single-resolving               9.6858+-0.4403     ?      9.7531+-0.6080        ?
string-repeat-small-not-resolving            4.2266+-0.1217            4.0773+-0.1245          might be 1.0366x faster
string-repeat-small-resolving               34.8371+-0.6112     ?     34.9999+-0.4296        ?

&lt;geometric&gt;                                 22.9358+-0.1689     ^     21.8019+-0.1372        ^ definitely 1.0520x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180044</commentid>
    <comment_count>10</comment_count>
      <attachid>275462</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-02 00:45:21 -0700</bug_when>
    <thetext>Comment on attachment 275462
Patch

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

Add comments.

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:369
&gt; +        case ArithTrunc: {

This handling can eliminate @trunc in @toInteger in almost all the cases.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4513
&gt; +            return;

Currently, we take relatively simple solution. An alternative implementation for Int32 results is using branchTruncateDoubleToInt32.
But in such implementation, we should take care about INT32_MIN case (for x86 case).
So, as a first step, now we just use the round instruction here.

&gt; Source/JavaScriptCore/ftl/FTLOutput.cpp:160
&gt; +    }

Implement Trunc IR as a Patchpoint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180150</commentid>
    <comment_count>11</comment_count>
      <attachid>275462</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-03 00:45:17 -0700</bug_when>
    <thetext>Comment on attachment 275462
Patch

thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180151</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-03 00:45:29 -0700</bug_when>
    <thetext>thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180154</commentid>
    <comment_count>13</comment_count>
      <attachid>275462</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-03 01:37:23 -0700</bug_when>
    <thetext>Comment on attachment 275462
Patch

Clearing flags on attachment: 275462

Committed r198981: &lt;http://trac.webkit.org/changeset/198981&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180155</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-03 01:37:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180304</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-04-04 01:53:35 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Committed r198981: &lt;http://trac.webkit.org/changeset/198981&gt;

... and the ARM buildfix landed in http://trac.webkit.org/changeset/198999</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180308</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-04 02:07:35 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; Committed r198981: &lt;http://trac.webkit.org/changeset/198981&gt;
&gt; 
&gt; ... and the ARM buildfix landed in http://trac.webkit.org/changeset/198999

Oops, thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275331</attachid>
            <date>2016-03-31 14:46:30 -0700</date>
            <delta_ts>2016-03-31 15:59:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156072-20160401064633.patch</filename>
            <type>text/plain</type>
            <size>49379</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4ODk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZThkN2NiZmNhYzg5YjczNjllODVlNmM3NzBmYWE0OGU0ODhmMTU0Li4yMzQzODYxNjc2YTE5YzJl
NTdhMmE2NTNlNjllNTAwOGY1NmI2MTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTAgQEAKKzIwMTYtMDMtMzEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIHRydW5jYXRlIG9wZXJhdGlvbiAocm91bmRpbmcg
dG8gemVybykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NjA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBUcnVuY0ludHJpbnNpYyBmb3IgTWF0aC50cnVuYy4gREZHIGhhbmRsZXMgaXQgYXMgQXJp
dGhUcnVuYy4KKyAgICAgICAgSW4gREZHLCBBcml0aFRydW5jIGJlaGF2ZXMgc2ltaWxhciB0byBB
cml0aFJvdW5kLCBBcml0aENlaWwsIGFuZCBBcml0aEZsb29yLgorICAgICAgICBBcml0aFRydW5j
IHJvdW5kcyB0aGUgdmFsdWUgdG93YXJkcyB6ZXJvLgorCisgICAgICAgIEFuZCB3ZSByZXdyaXRl
IEB0b0ludGVnZXIgdG8gdXNlIEB0cnVuYyBpbnN0ZWFkIG9mIEBhYnMsIEBmbG9vciwgbmVnYXRp
b24gYW5kIGJyYW5jaC4KKyAgICAgICAgVGhpcyBpcyBjb21wbGV0ZWx5IHRoZSBzYW1lIHRvIHdo
YXQgd2UgZG8gaW4gSlNWYWx1ZTo6dG9JbnRlZ2VyLgorCisgICAgICAgIFNpbmNlIERGRyByZWNv
Z25pemUgaXQsIERGRyBjYW4gY29udmVydCBBcml0aFRydW5jIHRvIElkZW50aXR5IGlmIHRoZSBn
aXZlbiBhcmd1bWVudCBpcyBJbnQzMi4KKyAgICAgICAgVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSBh
bG1vc3QgYWxsIHRoZSBhcmd1bWVudCBpcyBJbnQzMiBpbiBAdG9MZW5ndGggLT4gQHRvSW50ZWdl
ciAtPiBAdHJ1bmMgY2FzZS4KKyAgICAgICAgSW4gc3VjaCBjYXNlcywgd2UgY2FuIGVsaW1pbmF0
ZSB0cnVuYygpIGNhbGwuCisKKyAgICAgICAgQXMgYSBib251cywgdG8gc3BlZWQgdXAgTWF0aC50
cnVuYyBvcGVyYXRpb24sIHdlIHVzZSB4ODYgU1NFIHJvdW5kIGFuZCBmcmludHogaW4gQVJNNjQg
Zm9yIEFyaXRoUm91bmQuCisgICAgICAgIEluIERGRywgd2UgZW1pdCB0aGVzZSBpbnN0cnVjdGlv
bnMuIEluIEZUTCwgd2UgdXNlIFBhdGNocG9pbnQgdG8gZW1pdCB0aGVzZSBpbnN0cnVjdGlvbnMg
dG8gYXZvaWQgYWRkaW5nIGEgbmV3IEIzIElSLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6cm91
bmRUb3dhcmRaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
cm91bmRUb3dhcmRaZXJvRmxvYXQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnJvdW5kVG93YXJk
WmVyb0RvdWJsZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJvdW5kVG93YXJkWmVyb0RvdWJsZSk6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyU0g0Ojpyb3VuZFRvd2FyZFplcm9Eb3VibGUpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6cm91bmRUb3dhcmRaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnJvdW5kVG93YXJkWmVyb0Zsb2F0KToKKyAgICAgICAg
KiBidWlsdGlucy9HbG9iYWxPYmplY3QuanM6CisgICAgICAgICh0b0ludGVnZXIpOgorICAgICAg
ICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgICogZGZn
L0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAg
ICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAg
ICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlND
OjpERkc6OkdyYXBoOjpyb3VuZFNob3VsZFNwZWN1bGF0ZUludDMyKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmFyaXRoTm9kZUZsYWdzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNIZWFwUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6aGFzQXJpdGhSb3VuZGluZ01vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2Rl
VHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0
ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhSb3VuZGluZyk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9G
VExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAg
ICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVBcml0aFRydW5jKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ1bmNUaHVua0dlbmVyYXRvcik6CisgICAgICAgICog
aml0L1RodW5rR2VuZXJhdG9ycy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TWF0aE9i
amVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTWF0aE9iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjp0aHVua0dlbmVyYXRvckZv
ckludHJpbnNpYyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL21hdGgtcm91bmRpbmctaW5maW5p
dHkuanM6CisgICAgICAgICh0ZXN0VHJ1bmMpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9tYXRo
LXJvdW5kaW5nLW5hbi5qczoKKyAgICAgICAgKHRlc3RUcnVuYyk6CisgICAgICAgICogdGVzdHMv
c3RyZXNzL21hdGgtcm91bmRpbmctbmVnYXRpdmUtemVyby5qczoKKyAgICAgICAgKHRlc3RUcnVu
Yyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL21hdGgtdHJ1bmMtYXJpdGgtcm91bmRpbmctbW9k
ZS5qczogQWRkZWQuCisgICAgICAgIChmaXJzdENhcmVBYm91dFplcm9TZWNvbmREb2VzTm90KToK
KyAgICAgICAgKGZpcnN0RG9Ob3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lcyk6CisgICAgICAgICh3
YXJtdXApOgorICAgICAgICAodmVyaWZ5TmVnYXRpdmVaZXJvSXNQcmVzZXJ2ZWQpOgorICAgICAg
ICAqIHRlc3RzL3N0cmVzcy9tYXRoLXRydW5jLWJhc2ljcy5qczogQWRkZWQuCisgICAgICAgICht
YXRoVHJ1bmNPbkludGVnZXJzKToKKyAgICAgICAgKG1hdGhUcnVuY09uRG91Ymxlcyk6CisgICAg
ICAgIChtYXRoVHJ1bmNPbkJvb2xlYW5zKToKKyAgICAgICAgKHVzZWxlc3NNYXRoVHJ1bmMpOgor
ICAgICAgICAobWF0aFRydW5jV2l0aE92ZXJmbG93KToKKyAgICAgICAgKG1hdGhUcnVuY0NvbnN1
bWVkQXNEb3VibGUpOgorICAgICAgICAobWF0aFRydW5jRG9lc05vdENhcmVBYm91dE1pbnVzWmVy
byk6CisgICAgICAgIChtYXRoVHJ1bmNOb0FyZ3VtZW50cyk6CisgICAgICAgIChtYXRoVHJ1bmNU
b29NYW55QXJndW1lbnRzKToKKyAgICAgICAgKHRlc3RNYXRoVHJ1bmNPbkNvbnN0YW50cyk6Cisg
ICAgICAgIChtYXRoVHJ1bmNTdHJ1Y3RUcmFuc2l0aW9uKToKKyAgICAgICAgKE1hdGgudHJ1bmMp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9tYXRoLXRydW5jLXNob3VsZC1iZS10cnVuY2F0ZS5q
czogQWRkZWQuCisgICAgICAgIChtYXRoVHJ1bmMpOgorCiAyMDE2LTAzLTMxICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBHYXJkZW5pbmc6IEJ1aWxkIGFuZCBsb2dp
YyBmaXggYWZ0ZXIgcjE5ODg3My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggZjYxOTA5NmZjMjE5YWM0ZDc1NjY3
YjRhNmIxMTdjOWViZWMzZmY1YS4uZGU3ZTBlNGMyMjk0MTRjODFkZDhjMGNkYWJhZDBkMGIwYzE2
MzE1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmgKQEAgLTE1MDAsNiArMTUwMCwxNiBAQCBjbGFzcyBNYWNyb0Fzc2Vt
YmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QVJNNjRBc3NlbWJsZXIs
IE1hY3JvQQogICAgICAgICBtX2Fzc2VtYmxlci5mcmludG08MzI+KGRlc3QsIHNyYyk7CiAgICAg
fQogCisgICAgdm9pZCByb3VuZFRvd2FyZFplcm9Eb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5mcmludHo8NjQ+KGRl
c3QsIHNyYyk7CisgICAgfQorCisgICAgdm9pZCByb3VuZFRvd2FyZFplcm9GbG9hdChGUFJlZ2lz
dGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LmZyaW50ejwzMj4oZGVzdCwgc3JjKTsKKyAgICB9CisKICAgICAvLyBDb252ZXJ0ICdzcmMnIHRv
IGFuIGludGVnZXIsIGFuZCBwbGFjZXMgdGhlIHJlc3VsdGluZyAnZGVzdCcuCiAgICAgLy8gSWYg
dGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNo
LgogICAgIC8vIE1heSBhbHNvIGJyYW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVz
ZW50YWJsZSBpbiAzMiBiaXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IDNiYzg1YmNlOTAxNDk2ZmRmZDcxZmZj
NjEyNWUxMzI2NDI3OGJhZjMuLmQyMjU2ZTFmNjg5MzlhMjQwZTE4ZWRiOWI3ZmM1OTRlZTBhODhh
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oCkBAIC0xMDg0LDYgKzEwODQsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJs
ZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFSTXY3QXNzZW1ibGVyLCBN
YWNyb0EKICAgICAgICAgQ1JBU0goKTsKICAgICB9CiAKKyAgICBOT19SRVRVUk5fRFVFX1RPX0NS
QVNIIHZvaWQgcm91bmRUb3dhcmRaZXJvRG91YmxlKEZQUmVnaXN0ZXJJRCwgRlBSZWdpc3RlcklE
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygp
KTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICB9CisKICAgICB2b2lkIGNvbnZlcnRJbnQzMlRvRG91
YmxlKFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLnZtb3YoZnBUZW1wUmVnaXN0ZXIsIHNyYywgc3JjKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IDdj
NGJkMDgwZGYxMzQzYjhlYWVkMGY1MDIyNGQyYTJhOTliZGU5OTYuLjI3YTE4NDJmMjFmOWVlZjYx
YWVjMDc1NWZiNGRjNzNjNTlmNmIxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtNjU5LDYgKzY1OSwxMiBAQCBj
bGFzcyBNYWNyb0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxN
SVBTQXNzZW1ibGVyLCBNYWNyb0FzcwogICAgICAgICBDUkFTSCgpOwogICAgIH0KIAorICAgIE5P
X1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCByb3VuZFRvd2FyZFplcm9Eb3VibGUoRlBSZWdpc3Rl
cklELCBGUFJlZ2lzdGVySUQpCisgICAgeworICAgICAgICBBU1NFUlQoIXN1cHBvcnRzRmxvYXRp
bmdQb2ludFJvdW5kaW5nKCkpOworICAgICAgICBDUkFTSCgpOworICAgIH0KKwogICAgIENvbnZl
cnRpYmxlTG9hZExhYmVsIGNvbnZlcnRpYmxlTG9hZFB0cihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlc3VsdCh0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJTSDQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJTSDQuaAppbmRleCA3NTc1NjA5NWI4MDAzOTBkZGE5ZWM3ZGU4MzE5OTAyNTdkNjEzYmY2
Li41M2U3MWNmYTNjNzY3N2NiYWIxNTQ2ZjkzZTlkZTNlY2IyMWU1ZDdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCkBAIC0x
NTg3LDYgKzE1ODcsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJTSDQgOiBwdWJsaWMgQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlcjxTSDRBc3NlbWJsZXIsIE1hY3JvQXNzZW0KICAgICAgICAgQ1JBU0go
KTsKICAgICB9CiAKKyAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgcm91bmRUb3dhcmRa
ZXJvRG91YmxlKEZQUmVnaXN0ZXJJRCwgRlBSZWdpc3RlcklEKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpKTsKKyAgICAgICAgQ1JBU0goKTsK
KyAgICB9CisKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRy
ZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7
CiAgICAgICAgIFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBSZWdpc3RlciA9IGNsYWltU2NyYXRjaCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oCmluZGV4IDAxMGVjOTA5NDJkM2ZjZTk4ODIzMjllYzBjMWVlYWE0
ZjY2M2U3OWMuLjAxYmExY2RkNWE3NGRhYTQ5NzkzMTEyY2EzMGUxN2VkOTVlNGI2YWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmgKQEAgLTczNSw2ICs3MzUsMjYgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxYODZBc3NlbWJsZXIsIE1h
Y3IKICAgICAgICAgbV9hc3NlbWJsZXIucm91bmRzc19tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwg
ZHN0LCBYODZBc3NlbWJsZXI6OlJvdW5kaW5nVHlwZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0aSk7
CiAgICAgfQogCisgICAgdm9pZCByb3VuZFRvd2FyZFplcm9Eb3VibGUoRlBSZWdpc3RlcklEIHNy
YywgRlBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnJvdW5kc2Rf
cnIoc3JjLCBkc3QsIFg4NkFzc2VtYmxlcjo6Um91bmRpbmdUeXBlOjpUb3dhcmRaZXJvKTsKKyAg
ICB9CisKKyAgICB2b2lkIHJvdW5kVG93YXJkWmVyb0RvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdp
c3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnJvdW5kc2RfbXIoc3JjLm9m
ZnNldCwgc3JjLmJhc2UsIGRzdCwgWDg2QXNzZW1ibGVyOjpSb3VuZGluZ1R5cGU6OlRvd2FyZFpl
cm8pOworICAgIH0KKworICAgIHZvaWQgcm91bmRUb3dhcmRaZXJvRmxvYXQoRlBSZWdpc3RlcklE
IHNyYywgRlBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnJvdW5k
c3NfcnIoc3JjLCBkc3QsIFg4NkFzc2VtYmxlcjo6Um91bmRpbmdUeXBlOjpUb3dhcmRaZXJvKTsK
KyAgICB9CisKKyAgICB2b2lkIHJvdW5kVG93YXJkWmVyb0Zsb2F0KEFkZHJlc3Mgc3JjLCBGUFJl
Z2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIucm91bmRzc19tcihzcmMu
b2Zmc2V0LCBzcmMuYmFzZSwgZHN0LCBYODZBc3NlbWJsZXI6OlJvdW5kaW5nVHlwZTo6VG93YXJk
WmVybyk7CisgICAgfQorCiAgICAgLy8gTWVtb3J5IGFjY2VzcyBvcGVyYXRpb25zOgogICAgIC8v
CiAgICAgLy8gTG9hZHMgYXJlIG9mIHRoZSBmb3JtIGxvYWQoYWRkcmVzcywgZGVzdGluYXRpb24p
IGFuZCBzdG9yZXMgb2YgdGhlIGZvcm0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9HbG9iYWxPYmplY3QuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvR2xvYmFsT2JqZWN0LmpzCmluZGV4IGRiNTNjMzk3YmJmNTRjMGQ1MGQ2ZDA0MTRlZGM4MjNk
MzM4NDVkMzYuLjViY2JjMjI2ZDJmNTI2ZDkxYzNkZTg5OWYxYmJjYTk1NzM5ZTY3OWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9iYWxPYmplY3QuanMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwpAQCAtMzQs
MTEgKzM0LDcgQEAgZnVuY3Rpb24gdG9JbnRlZ2VyKHRhcmdldCkKICAgICAvLyBpc05hTihudW1i
ZXJWYWx1ZSkKICAgICBpZiAobnVtYmVyVmFsdWUgIT09IG51bWJlclZhbHVlKQogICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIGlmIChudW1iZXJWYWx1ZSA9PT0gMCB8fCAhQGlzRmluaXRlKG51bWJl
clZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG51bWJlclZhbHVlOwotCi0gICAgcmV0dXJuIChudW1i
ZXJWYWx1ZSA+IDAgPyAxIDogLTEpICogQGZsb29yKEBhYnMobnVtYmVyVmFsdWUpKTsKKyAgICBy
ZXR1cm4gQHRydW5jKG51bWJlclZhbHVlKTsKIH0KIAogZnVuY3Rpb24gdG9MZW5ndGgodGFyZ2V0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCmluZGV4IDY5ZTYxM2M3YjMwODA1Zjc5MDU4ZmEyZjlmZGJhMTM4
ZjMzYTA5OWEuLjkyODcxNDE5MzM0YzcxOWQxN2JhYzY5YTBmM2RiMjMwNGIwOTM2ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKQEAgLTg1MCw3ICs4NTAsOCBAQAogCiAgICAgY2FzZSBBcml0aFJvdW5k
OgogICAgIGNhc2UgQXJpdGhGbG9vcjoKLSAgICBjYXNlIEFyaXRoQ2VpbDogeworICAgIGNhc2Ug
QXJpdGhDZWlsOgorICAgIGNhc2UgQXJpdGhUcnVuYzogewogICAgICAgICBKU1ZhbHVlIG9wZXJh
bmQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBpZiAob3BlcmFu
ZCAmJiBvcGVyYW5kLmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgIGRvdWJsZSByb3VuZGVkVmFs
dWUgPSAwOwpAQCAtODU4LDkgKzg1OSwxMSBAQAogICAgICAgICAgICAgICAgIHJvdW5kZWRWYWx1
ZSA9IGpzUm91bmQob3BlcmFuZC5hc051bWJlcigpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5v
ZGUtPm9wKCkgPT0gQXJpdGhGbG9vcikKICAgICAgICAgICAgICAgICByb3VuZGVkVmFsdWUgPSBm
bG9vcihvcGVyYW5kLmFzTnVtYmVyKCkpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gQXJpdGhDZWlsKTsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKG5vZGUtPm9wKCkgPT0gQXJpdGhDZWlsKQogICAgICAgICAgICAgICAgIHJvdW5kZWRWYWx1
ZSA9IGNlaWwob3BlcmFuZC5hc051bWJlcigpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IEFyaXRoVHJ1bmMpOworICAgICAgICAgICAg
ICAgIHJvdW5kZWRWYWx1ZSA9IHRydW5jKG9wZXJhbmQuYXNOdW1iZXIoKSk7CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIGlmIChwcm9kdWNlc0ludGVnZXIobm9kZS0+YXJpdGhSb3VuZGlu
Z01vZGUoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggYTZhODdlNTJhMmE1ODU2Y2FkYjEzODlkODlkYWM5NDNjMTJmNWYxMi4u
NjcxNjY4Nzc4OGQwNjUwNGUyZWQyOGJkZjliMmJiMTk2MjQ0YjYwOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTIyMDMsNyArMjIw
Myw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2Fs
bGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluCiAgICAgICAgIAogICAgIGNhc2UgUm91bmRJ
bnRyaW5zaWM6CiAgICAgY2FzZSBGbG9vckludHJpbnNpYzoKLSAgICBjYXNlIENlaWxJbnRyaW5z
aWM6IHsKKyAgICBjYXNlIENlaWxJbnRyaW5zaWM6CisgICAgY2FzZSBUcnVuY0ludHJpbnNpYzog
ewogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPT0gMSkgewogICAgICAg
ICAgICAgaW5zZXJ0Q2hlY2tzKCk7CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJl
c3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2NvbnN0YW50TmFO
KSkpOwpAQCAtMjIxNyw5ICsyMjE4LDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
dHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluCiAgICAg
ICAgICAgICAgICAgb3AgPSBBcml0aFJvdW5kOwogICAgICAgICAgICAgZWxzZSBpZiAoaW50cmlu
c2ljID09IEZsb29ySW50cmluc2ljKQogICAgICAgICAgICAgICAgIG9wID0gQXJpdGhGbG9vcjsK
LSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChpbnRyaW5zaWMgPT0g
Q2VpbEludHJpbnNpYyk7CisgICAgICAgICAgICBlbHNlIGlmIChpbnRyaW5zaWMgPT0gQ2VpbElu
dHJpbnNpYykKICAgICAgICAgICAgICAgICBvcCA9IEFyaXRoQ2VpbDsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIEFTU0VSVChpbnRyaW5zaWMgPT0gVHJ1bmNJbnRyaW5zaWMp
OworICAgICAgICAgICAgICAgIG9wID0gQXJpdGhUcnVuYzsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIE5vZGUqIHJvdW5kTm9kZSA9IGFkZFRvR3JhcGgob3AsIE9wSW5mbygwKSwgT3BJbmZv
KHByZWRpY3Rpb24pLCBvcGVyYW5kKTsKICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIo
cmVzdWx0T3BlcmFuZCksIHJvdW5kTm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCmluZGV4IDAyOGIyOTg1YjRlYmRhOTA2NGUzMDM0N2Q2MWI1ZjM3ODc5ZGY2
OTMuLjZhNGVkYTJlZjg5MTY4MGU1ZGZiM2Y0NGQxZjQwNWVjZGFjOTQ0NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0zMDUsNiArMzA1LDcgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3Im
IHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIEFyaXRoUm91bmQ6CiAgICAgY2FzZSBBcml0
aEZsb29yOgogICAgIGNhc2UgQXJpdGhDZWlsOgorICAgIGNhc2UgQXJpdGhUcnVuYzoKICAgICAg
ICAgZGVmKFB1cmVWYWx1ZShub2RlLCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KG5vZGUtPmFyaXRo
Um91bmRpbmdNb2RlKCkpKSk7CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDA1NjRkMWZiNTU0NGQ5ZDk5NTY1MzIxMTdhOTE0OGU4
NjdiMTZiZTkuLmYzOGI5Zjk5ZjgwZmE0NjVkYWQzMTQ1ZGI5ZWVlZDM1YWNjNTk3ZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTkwLDYgKzkwLDcgQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQXJpdGhSb3VuZDoK
ICAgICBjYXNlIEFyaXRoRmxvb3I6CiAgICAgY2FzZSBBcml0aENlaWw6CisgICAgY2FzZSBBcml0
aFRydW5jOgogICAgIGNhc2UgQXJpdGhGUm91bmQ6CiAgICAgY2FzZSBBcml0aFNpbjoKICAgICBj
YXNlIEFyaXRoQ29zOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKaW5kZXggNjFkMTk0NjJhMWFkNWI5NzA2ZTgxNjc3Y2RlYjFlODZhYjhkY2EzNC4uOTYxMmUx
OGQwNjFjNWM1MDkxNzM1OTFiZGU0ZDdjZDdlZjJmMzE3MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0zNjUsNyArMzY1LDggQEAgY2xhc3MgRml4
dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAKICAgICAgICAgY2FzZSBBcml0aFJvdW5kOgogICAg
ICAgICBjYXNlIEFyaXRoRmxvb3I6Ci0gICAgICAgIGNhc2UgQXJpdGhDZWlsOiB7CisgICAgICAg
IGNhc2UgQXJpdGhDZWlsOgorICAgICAgICBjYXNlIEFyaXRoVHJ1bmM6IHsKICAgICAgICAgICAg
IGlmIChtX2dyYXBoLnVuYXJ5QXJpdGhTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlLCBGaXh1cFBh
c3MpKSB7CiAgICAgICAgICAgICAgICAgZml4SW50T3JCb29sZWFuRWRnZShub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgICAgICAgICAgaW5zZXJ0Q2hlY2s8SW50MzJVc2U+KG1faW5kZXhJbkJsb2Nr
LCBub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5o
CmluZGV4IGJiZDQ2ZWFkYTEwMWU3ZTM4M2I2ZGNjMjUwNTc4MjE3YjQyODVlMDEuLjQ2N2RiMGVk
OWY3NTdiZGVlZDZiMGU1ZWIyODZjMThmZTdmYzhlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmgKQEAgLTMxNiw3ICszMTYsNyBAQCBjbGFzcyBHcmFwaCA6IHB1YmxpYyB2aXJ0
dWFsIFNjYW5uYWJsZSB7CiAKICAgICBib29sIHJvdW5kU2hvdWxkU3BlY3VsYXRlSW50MzIoTm9k
ZSogYXJpdGhSb3VuZCwgUHJlZGljdGlvblBhc3MgcGFzcykKICAgICB7Ci0gICAgICAgIEFTU0VS
VChhcml0aFJvdW5kLT5vcCgpID09IEFyaXRoUm91bmQgfHwgYXJpdGhSb3VuZC0+b3AoKSA9PSBB
cml0aEZsb29yIHx8IGFyaXRoUm91bmQtPm9wKCkgPT0gQXJpdGhDZWlsKTsKKyAgICAgICAgQVNT
RVJUKGFyaXRoUm91bmQtPm9wKCkgPT0gQXJpdGhSb3VuZCB8fCBhcml0aFJvdW5kLT5vcCgpID09
IEFyaXRoRmxvb3IgfHwgYXJpdGhSb3VuZC0+b3AoKSA9PSBBcml0aENlaWwgfHwgYXJpdGhSb3Vu
ZC0+b3AoKSA9PSBBcml0aFRydW5jKTsKICAgICAgICAgcmV0dXJuIGFyaXRoUm91bmQtPmNhblNw
ZWN1bGF0ZUludDMyKHBhc3MpICYmICFoYXNFeGl0U2l0ZShhcml0aFJvdW5kLT5vcmlnaW4uc2Vt
YW50aWMsIE92ZXJmbG93KSAmJiAhaGFzRXhpdFNpdGUoYXJpdGhSb3VuZC0+b3JpZ2luLnNlbWFu
dGljLCBOZWdhdGl2ZVplcm8pOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKaW5kZXggOWU4Nzk3M2JiNzBmNmE1MjA2ODZmNzUzZDY0YjdmNGQ1Zjk5YzA2OC4uMjhl
NTk5NTY1NWQwOThhYTJiM2NkNzBkZWVlZGExNzYzZTQ2ZmJmMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKQEAgLTk0Myw3ICs5NDMsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgTm9k
ZUZsYWdzIGFyaXRoTm9kZUZsYWdzKCkKICAgICB7CiAgICAgICAgIE5vZGVGbGFncyByZXN1bHQg
PSBtX2ZsYWdzICYgTm9kZUFyaXRoRmxhZ3NNYXNrOwotICAgICAgICBpZiAob3AoKSA9PSBBcml0
aE11bCB8fCBvcCgpID09IEFyaXRoRGl2IHx8IG9wKCkgPT0gQXJpdGhNb2QgfHwgb3AoKSA9PSBB
cml0aE5lZ2F0ZSB8fCBvcCgpID09IEFyaXRoUG93IHx8IG9wKCkgPT0gQXJpdGhSb3VuZCB8fCBv
cCgpID09IEFyaXRoRmxvb3IgfHwgb3AoKSA9PSBBcml0aENlaWwgfHwgb3AoKSA9PSBEb3VibGVB
c0ludDMyKQorICAgICAgICBpZiAob3AoKSA9PSBBcml0aE11bCB8fCBvcCgpID09IEFyaXRoRGl2
IHx8IG9wKCkgPT0gQXJpdGhNb2QgfHwgb3AoKSA9PSBBcml0aE5lZ2F0ZSB8fCBvcCgpID09IEFy
aXRoUG93IHx8IG9wKCkgPT0gQXJpdGhSb3VuZCB8fCBvcCgpID09IEFyaXRoRmxvb3IgfHwgb3Ao
KSA9PSBBcml0aENlaWwgfHwgb3AoKSA9PSBBcml0aFRydW5jIHx8IG9wKCkgPT0gRG91YmxlQXNJ
bnQzMikKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQg
JiB+Tm9kZUJ5dGVjb2RlTmVlZHNOZWdaZXJvOwogICAgIH0KQEAgLTEzNTEsNiArMTM1MSw3IEBA
IHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBBcml0aFJvdW5kOgogICAgICAgICBjYXNlIEFy
aXRoRmxvb3I6CiAgICAgICAgIGNhc2UgQXJpdGhDZWlsOgorICAgICAgICBjYXNlIEFyaXRoVHJ1
bmM6CiAgICAgICAgIGNhc2UgR2V0RGlyZWN0UG5hbWU6CiAgICAgICAgIGNhc2UgR2V0QnlJZDoK
ICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CkBAIC0xNzMzLDcgKzE3MzQsNyBAQCBzdHJ1Y3Qg
Tm9kZSB7CiAKICAgICBib29sIGhhc0FyaXRoUm91bmRpbmdNb2RlKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBvcCgpID09IEFyaXRoUm91bmQgfHwgb3AoKSA9PSBBcml0aEZsb29yIHx8IG9wKCkg
PT0gQXJpdGhDZWlsOworICAgICAgICByZXR1cm4gb3AoKSA9PSBBcml0aFJvdW5kIHx8IG9wKCkg
PT0gQXJpdGhGbG9vciB8fCBvcCgpID09IEFyaXRoQ2VpbCB8fCBvcCgpID09IEFyaXRoVHJ1bmM7
CiAgICAgfQogCiAgICAgQXJpdGg6OlJvdW5kaW5nTW9kZSBhcml0aFJvdW5kaW5nTW9kZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggOGUyYTEzM2MyNmE0NWFj
YzIzN2Y4MjNkZGQyNzk0Y2ZlMGJiYWM5Ny4uZjFlMWE1NmYxOWRmYzFmZjIxMzQ1ZGUwZjkwOTE4
MDA1ZmQwZjYyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAt
MTU4LDYgKzE1OCw3IEBACiAgICAgbWFjcm8oQXJpdGhSb3VuZCwgTm9kZVJlc3VsdE51bWJlcikg
XAogICAgIG1hY3JvKEFyaXRoRmxvb3IsIE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICBtYWNybyhB
cml0aENlaWwsIE5vZGVSZXN1bHROdW1iZXIpIFwKKyAgICBtYWNybyhBcml0aFRydW5jLCBOb2Rl
UmVzdWx0TnVtYmVyKSBcCiAgICAgbWFjcm8oQXJpdGhTcXJ0LCBOb2RlUmVzdWx0TnVtYmVyKSBc
CiAgICAgbWFjcm8oQXJpdGhTaW4sIE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICBtYWNybyhBcml0
aENvcywgTm9kZVJlc3VsdE51bWJlcikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA4M2Zh
MDhkNGFlNGU2ZjZhMmY1ZjNmZGYxYmY0NmQ2MjM0NjgyNWJmLi5kZjRkNTA3Y2EyZDhlNGExMzk4
MGI1NWRjMTk3NjNhZDQ1OGViZDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMzg5LDcg
KzM4OSw4IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNl
IHsKIAogICAgICAgICBjYXNlIEFyaXRoUm91bmQ6CiAgICAgICAgIGNhc2UgQXJpdGhGbG9vcjoK
LSAgICAgICAgY2FzZSBBcml0aENlaWw6IHsKKyAgICAgICAgY2FzZSBBcml0aENlaWw6CisgICAg
ICAgIGNhc2UgQXJpdGhUcnVuYzogewogICAgICAgICAgICAgaWYgKGlzSW50MzJPckJvb2xlYW5T
cGVjdWxhdGlvbihub2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKSAmJiBtX2dyYXBoLnJvdW5kU2hv
dWxkU3BlY3VsYXRlSW50MzIobm9kZSwgbV9wYXNzKSkKICAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IHNldFByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYTI1MjFkYjFiNTM3
MDRjMWUwMDQ2NjJiMDZiZGU5ZWQ5NDFiYzgxZS4uODA3N2I4NTkwMThiNGZmMmFkYmQ3MmIxMWM0
MTE2NGZjYjU1MmU0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKQEAgLTE4Niw2ICsxODYsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RT
dGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBBcml0
aFJvdW5kOgogICAgIGNhc2UgQXJpdGhGbG9vcjoKICAgICBjYXNlIEFyaXRoQ2VpbDoKKyAgICBj
YXNlIEFyaXRoVHJ1bmM6CiAgICAgY2FzZSBBcml0aFNpbjoKICAgICBjYXNlIEFyaXRoQ29zOgog
ICAgIGNhc2UgQXJpdGhMb2c6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IGM1N2M1NmRhYTFmZTM3MGEzOWNlYmVkY2Y5MmIyZjQxZDMy
OWFlOTMuLjNhZDAzZGNiYTIzYzk2NjZkZTZkODM5YjI2NjFiZDMzZjZkOTIwMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC00NTA1
LDYgKzQ1MDUsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoUm91bmRpbmco
Tm9kZSogbm9kZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGNh
c2UgQXJpdGhUcnVuYzogeworICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHJvdW5kZWQodGhpcyk7
CisgICAgICAgICAgICBGUFJSZWcgcmVzdWx0RlBSID0gcm91bmRlZC5mcHIoKTsKKyAgICAgICAg
ICAgIG1faml0LnJvdW5kVG93YXJkWmVyb0RvdWJsZSh2YWx1ZUZQUiwgcmVzdWx0RlBSKTsKKyAg
ICAgICAgICAgIHNldFJlc3VsdChyZXN1bHRGUFIpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIH0KQEAgLTQ1MTYsOSArNDUyNCwxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQXJpdGhSb3VuZGluZyhOb2RlKiBub2RlKQogICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihqc1JvdW5kLCByZXN1bHRGUFIsIHZhbHVlRlBSKTsKICAgICAgICAgZWxz
ZSBpZiAobm9kZS0+b3AoKSA9PSBBcml0aEZsb29yKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlv
bihmbG9vciwgcmVzdWx0RlBSLCB2YWx1ZUZQUik7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gQXJpdGhDZWlsKTsKKyAgICAgICAgZWxzZSBpZiAobm9k
ZS0+b3AoKSA9PSBBcml0aENlaWwpCiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKGNlaWwsIHJl
c3VsdEZQUiwgdmFsdWVGUFIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChu
b2RlLT5vcCgpID09IEFyaXRoVHJ1bmMpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbih0cnVu
YywgcmVzdWx0RlBSLCB2YWx1ZUZQUik7CiAgICAgICAgIH0KICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKICAgICAgICAgc2V0UmVzdWx0KHJlc3VsdEZQUik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNDU4MTNhNDExODg5NTY2
YzQ3OGFkNjRkMDIyYzEzOGFlYTBiNzlmZS4uYTZmOTBjN2QwNzZmNzUyZjZkMzZmN2FmZTc2ZTRl
NmM2YjU4ZWE3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMjM3Myw4ICsyMzczLDYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAg
IHZvaWQgY29tcGlsZUFyaXRoTW9kKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVBcml0aFBvdyhO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhSb3VuZGluZyhOb2RlKik7Ci0gICAgdm9pZCBj
b21waWxlQXJpdGhGbG9vcihOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlQXJpdGhDZWlsKE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVBcml0aFJhbmRvbShOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
QXJpdGhTcXJ0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVBcml0aExvZyhOb2RlKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAppbmRleCBkN2NmMDM3YTk1MGViZDU4NjM1ZGFlZGZjNGU3N2ViNzkyNGJjYTg2Li41MWYzZTQ3
NDc5MGZiYmIxNDg1NTdiOGQ1OWM0NTYyMWZkNTkwZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTIzMDYsNiAr
MjMwNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBj
YXNlIEFyaXRoUm91bmQ6CiAgICAgY2FzZSBBcml0aEZsb29yOgogICAgIGNhc2UgQXJpdGhDZWls
OgorICAgIGNhc2UgQXJpdGhUcnVuYzoKICAgICAgICAgY29tcGlsZUFyaXRoUm91bmRpbmcobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCA4YTE4MTk0YzVkMDk4NDFiMmVmMTIyNGFhZGMx
MzhmM2ZkYjg3NWY5Li5jNGZkZTlmYjA0MTIxYjY5Y2UxNDQxZmE1MzJhNzgwMTBlZjNmZDZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKQEAgLTI0NDQsNiArMjQ0NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIEFyaXRoUm91bmQ6CiAgICAgY2FzZSBBcml0aEZsb29yOgogICAg
IGNhc2UgQXJpdGhDZWlsOgorICAgIGNhc2UgQXJpdGhUcnVuYzoKICAgICAgICAgY29tcGlsZUFy
aXRoUm91bmRpbmcobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNzFhMmZiMmQzNDEwYTUzNWEyYjdj
N2RiMGMxY2ZhNzdmYjM3ZGI2OS4uMmM4Mzg0ODkyY2VkODRmYTQzOTIzMWYwMjgzYTI3YTZiZWU5
NGQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cApAQCAtOTksNiArOTksNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIEFyaXRoUm91bmQ6CiAgICAgY2FzZSBBcml0aEZsb29yOgogICAg
IGNhc2UgQXJpdGhDZWlsOgorICAgIGNhc2UgQXJpdGhUcnVuYzoKICAgICBjYXNlIEFyaXRoU3Fy
dDoKICAgICBjYXNlIEFyaXRoTG9nOgogICAgIGNhc2UgQXJpdGhGUm91bmQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNjU0YmQ2ZjkxNmQ5
YjhjY2MwNzNiNzQ3MzQ4YmRkMTdjOWEwNzlhZi4uMjEyZTFkNGMyZjAxNWZjY2U1N2M2ODc0YWFm
ZWVmN2NhM2QzMzA0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcApAQCAtNTMyLDYgKzUzMiw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgIGNhc2UgQXJpdGhDZWlsOgogICAgICAgICAgICAgY29tcGlsZUFyaXRoQ2VpbCgpOwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXJpdGhUcnVuYzoKKyAgICAgICAgICAgIGNv
bXBpbGVBcml0aFRydW5jKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcml0
aFNxcnQ6CiAgICAgICAgICAgICBjb21waWxlQXJpdGhTcXJ0KCk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTE5NzYsNiArMTk3OSwyNiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAg
ICAgc2V0RG91YmxlKGludGVnZXJWYWx1ZSk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlQXJp
dGhUcnVuYygpCisgICAgeworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dEb3VibGUobV9ub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSByZXN1bHQ7CisgICAgICAgIGlmIChNYWNyb0Fz
c2VtYmxlcjo6c3VwcG9ydHNGbG9hdGluZ1BvaW50Um91bmRpbmcoKSkgeworICAgICAgICAgICAg
UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChEb3VibGUpOwor
ICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHZhbHVlKTsKKyAgICAg
ICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAg
IGppdC5yb3VuZFRvd2FyZFplcm9Eb3VibGUocGFyYW1zWzFdLmZwcigpLCBwYXJhbXNbMF0uZnBy
KCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXN1bHQgPSBwYXRjaHBvaW50Owor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChtX291dC5kb3VibGVU
eXBlLCBtX291dC5vcGVyYXRpb24odHJ1bmMpLCB2YWx1ZSk7CisKKyAgICAgICAgaWYgKHByb2R1
Y2VzSW50ZWdlcihtX25vZGUtPmFyaXRoUm91bmRpbmdNb2RlKCkpKQorICAgICAgICAgICAgc2V0
SW50MzIoY29udmVydERvdWJsZVRvSW50MzIocmVzdWx0LCBzaG91bGRDaGVja05lZ2F0aXZlWmVy
byhtX25vZGUtPmFyaXRoUm91bmRpbmdNb2RlKCkpKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHNldERvdWJsZShyZXN1bHQpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUFyaXRoU3Fy
dCgpIHsgc2V0RG91YmxlKG1fb3V0LmRvdWJsZVNxcnQobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQx
KCkpKSk7IH0KIAogICAgIHZvaWQgY29tcGlsZUFyaXRoTG9nKCkgeyBzZXREb3VibGUobV9vdXQu
ZG91YmxlTG9nKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggMjVkMDAxNDBjMGI1YTBl
N2JmZjhmNjhhMmRlYmU3YzQ0NjY2MmQ0OS4uYzk5YjkyZTZiMWIxYTkzOTA4ZjRlNGJhYWE0MWIx
YWU4MTA3YmE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcApAQCAtNzQwLDYgKzc0MCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzcXJ0VGh1
bmtHZW5lcmF0b3IoVk0qIHZtKQogLy8gTVNWQyBkb2VzIG5vdCBhY2NlcHQgZmxvb3IsIGV0Yywg
dG8gYmUgY2FsbGVkIGRpcmVjdGx5IGZyb20gaW5saW5lIGFzc2VtYmx5LCBzbyB3ZSBuZWVkIHRv
IHdyYXAgdGhlc2UgZnVuY3Rpb25zLgogc3RhdGljIGRvdWJsZSAoX2NkZWNsICpmbG9vckZ1bmN0
aW9uKShkb3VibGUpID0gZmxvb3I7CiBzdGF0aWMgZG91YmxlIChfY2RlY2wgKmNlaWxGdW5jdGlv
bikoZG91YmxlKSA9IGNlaWw7CitzdGF0aWMgZG91YmxlIChfY2RlY2wgKnRydW5jRnVuY3Rpb24p
KGRvdWJsZSkgPSB0cnVuYzsKIHN0YXRpYyBkb3VibGUgKF9jZGVjbCAqZXhwRnVuY3Rpb24pKGRv
dWJsZSkgPSBleHA7CiBzdGF0aWMgZG91YmxlIChfY2RlY2wgKmxvZ0Z1bmN0aW9uKShkb3VibGUp
ID0gbG9nOwogc3RhdGljIGRvdWJsZSAoX2NkZWNsICpqc1JvdW5kRnVuY3Rpb24pKGRvdWJsZSkg
PSBqc1JvdW5kOwpAQCAtNzcxLDYgKzc3Miw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzcXJ0
VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogZGVmaW5lVW5hcnlEb3VibGVPcFdyYXBwZXIobG9nKTsK
IGRlZmluZVVuYXJ5RG91YmxlT3BXcmFwcGVyKGZsb29yKTsKIGRlZmluZVVuYXJ5RG91YmxlT3BX
cmFwcGVyKGNlaWwpOworZGVmaW5lVW5hcnlEb3VibGVPcFdyYXBwZXIodHJ1bmMpOwogCiBzdGF0
aWMgY29uc3QgZG91YmxlIG9uZUNvbnN0YW50ID0gMS4wOwogc3RhdGljIGNvbnN0IGRvdWJsZSBu
ZWdhdGl2ZUhhbGZDb25zdGFudCA9IC0wLjU7CkBAIC04NDIsNiArODQ0LDI5IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBjZWlsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogICAgIHJldHVybiBqaXQu
ZmluYWxpemUodm0tPmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJjZWlsIik7CiB9
CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiB0cnVuY1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKK3sK
KyAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CisgICAgaWYgKCFVbmFyeURvdWJs
ZU9wV3JhcHBlcih0cnVuYykgfHwgIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKKyAgICAg
ICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIG5vbkludEp1bXA7CisgICAgaml0LmxvYWRJbnQzMkFyZ3VtZW50KDAsIFNwZWNpYWxpemVk
VGh1bmtKSVQ6OnJlZ1QwLCBub25JbnRKdW1wKTsKKyAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lh
bGl6ZWRUaHVua0pJVDo6cmVnVDApOworICAgIG5vbkludEp1bXAubGluaygmaml0KTsKKyAgICBq
aXQubG9hZERvdWJsZUFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKKyAgICBpZiAoaml0LnN1cHBvcnRzRmxvYXRpbmdQ
b2ludFJvdW5kaW5nKCkpCisgICAgICAgIGppdC5yb3VuZFRvd2FyZFplcm9Eb3VibGUoU3BlY2lh
bGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7Cisg
ICAgZWxzZQorICAgICAgICBqaXQuY2FsbERvdWJsZVRvRG91YmxlUHJlc2VydmluZ1JldHVybihV
bmFyeURvdWJsZU9wV3JhcHBlcih0cnVuYykpOworCisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVDo6
SnVtcExpc3QgZG91YmxlUmVzdWx0OworICAgIGppdC5icmFuY2hDb252ZXJ0RG91YmxlVG9JbnQz
MihTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
MCwgZG91YmxlUmVzdWx0LCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QxKTsKKyAgICBqaXQu
cmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOworICAgIGRvdWJsZVJlc3Vs
dC5saW5rKCZqaXQpOworICAgIGppdC5yZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6
ZnBSZWdUMCk7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2
ZVRhaWxDYWxsKHZtKSwgInRydW5jIik7Cit9CisKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiByb3Vu
ZFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2
bSwgMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAppbmRl
eCA5ZmI4YWJiNDRlYTIyZGJkODUyNzU2YTljYjhhOWRiY2VhY2QzNzg5Li44MmQ0N2ZhNDY4N2Zi
Y2RhOWIzYWE0MjhiMTRkOTAzZjMwZDRmODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmgKQEAgLTYzLDYgKzYzLDcgQEAKIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBwb3dUaHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGltdWxU
aHVua0dlbmVyYXRvcihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJhbmRvbVRodW5rR2Vu
ZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdHJ1bmNUaHVua0dlbmVyYXRvcihW
TSopOwogCiB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDZiYjUxODBiNmU3ZGRkN2M1
YjZjMWQ1MzMxZDdhZTgyNGQyZTAyMzIuLjlkZWE3OGMxOTVhNTdhNjQyODRlYmRiY2I5MTdhMDI2
ZGRmNzE3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaApAQCAtMzE1LDYgKzMxNSw3IEBACiAgICAgbWFjcm8oSW50ZXJuYWxQcm9t
aXNlKSBcCiAgICAgbWFjcm8oYWJzKSBcCiAgICAgbWFjcm8oZmxvb3IpIFwKKyAgICBtYWNybyh0
cnVuYykgXAogICAgIG1hY3JvKGlzRmluaXRlKSBcCiAgICAgbWFjcm8oaXNOYU4pIFwKICAgICBt
YWNybyhjcmVhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludHJpbnNpYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgK
aW5kZXggZDhkZTAwNmVhNTU0MWE1ZWNkN2ZmNDExYTFhMGE2MWY4NWM4NmMzZi4uMDhmZGViNDQ3
OTk3MjI1YTcyZTc2MWZjZjk3MzBiMjM0N2I5YTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50cmluc2ljLmgKQEAgLTU2LDYgKzU2LDcgQEAgZW51bSBKU19FWFBPUlRfUFJJ
VkFURSBJbnRyaW5zaWMgewogICAgIElNdWxJbnRyaW5zaWMsCiAgICAgUmFuZG9tSW50cmluc2lj
LAogICAgIEZSb3VuZEludHJpbnNpYywKKyAgICBUcnVuY0ludHJpbnNpYywKIAogICAgIC8vIEdl
dHRlciBpbnRyaW5zaWNzLgogICAgIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWMsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMTc1
NTEzZmYxNzhjODI1MmUwMzY0ZTdhYmJjZDUxN2U2MGFjZWU0Ny4uMDc3MmMxNzY4MTFlNGIxYzU0
ZmVmN2FkODE5Yjk4MTZkZDA5ZWJlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTI2LDYgKzUyNiw3IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jRmxvb3Ig
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBtYXRoUHJvdG9GdW5j
Rmxvb3IsIEZsb29ySW50cmluc2ljKTsKICAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lzRmlu
aXRlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVu
Y0lzRmluaXRlKTsKICAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lzTmFOID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0lzTmFOKTsKKyAgICBK
U0Z1bmN0aW9uKiBwcml2YXRlRnVuY1RydW5jID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlz
LCAwLCBTdHJpbmcoKSwgbWF0aFByb3RvRnVuY1RydW5jLCBUcnVuY0ludHJpbnNpYyk7CiAKICAg
ICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0dldFRlbXBsYXRlT2JqZWN0ID0gSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2V0VGVtcGxhdGVPYmplY3QpOwogICAgIEpT
RnVuY3Rpb24qIHByaXZhdGVGdW5jVG9MZW5ndGggPSBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGlu
RnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdFRvTGVuZ3RoQ29kZUdlbmVyYXRvcih2bSksIHRoaXMp
OwpAQCAtNTYzLDYgKzU2NCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQog
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+U3RyaW5nUHJpdmF0
ZU5hbWUsIHN0cmluZ0NvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5hYnNQcml2
YXRlTmFtZSwgcHJpdmF0ZUZ1bmNBYnMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmZsb29yUHJp
dmF0ZU5hbWUsIHByaXZhdGVGdW5jRmxvb3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnRydW5j
UHJpdmF0ZU5hbWUsIHByaXZhdGVGdW5jVHJ1bmMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmlz
RmluaXRlUHJpdmF0ZU5hbWUsIHByaXZhdGVGdW5jSXNGaW5pdGUsIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmlzTmFOUHJpdmF0ZU5hbWUsIHByaXZhdGVGdW5jSXNOYU4sIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPlByb21pc2VQcml2YXRlTmFtZSwgcHJvbWlzZUNvbnN0cnVjdG9yLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hdGhPYmplY3QuY3BwCmluZGV4IDk5N2IwNjQ3ZTU5MzVkNmVhZmM3NmVlYmY0OTgyOWY4
MWUyMTRmY2QuLjY2ZDMxYjc0ZDlhODc2NzI0YTk3Y2E1MGE5YTYzYTE4Y2M5NjM2ZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCkBAIC02Nyw3ICs2
Nyw2IEBACiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTcXJ0KEV4
ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVGFu
KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5j
VGFuaChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3Rv
RnVuY1RydW5jKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jSU11bChFeGVjU3RhdGUqKTsKIAogfQpAQCAtMTI5LDcgKzEyOCw3IEBAIHZvaWQg
TWF0aE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0s
IGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJzcXJ0IiksIDEsIG1h
dGhQcm90b0Z1bmNTcXJ0LCBTcXJ0SW50cmluc2ljLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgInRhbiIpLCAxLCBtYXRoUHJvdG9GdW5jVGFuLCBOb0ludHJp
bnNpYywgRG9udEVudW0pOwogICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJ0YW5o
IiksIDEsIG1hdGhQcm90b0Z1bmNUYW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0pOwotICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJ0cnVuYyIpLCAxLCBtYXRoUHJvdG9GdW5jVHJ1
bmMsIE5vSW50cmluc2ljLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgInRydW5jIiksIDEsIG1hdGhQcm90b0Z1bmNUcnVuYywgVHJ1bmNJbnRyaW5zaWMsIERv
bnRFbnVtKTsKICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaW11bCIpLCAyLCBt
YXRoUHJvdG9GdW5jSU11bCwgSU11bEludHJpbnNpYywgRG9udEVudW0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgKaW5kZXggOWQxYzE4MWMwZjFlZmFh
MjBiMzVmN2U4NWQ4ZGZhZGJmZjQ2Mzc5Yi4uMWExMzNkNTU0ZGE0NDBhNzVkZDQxNjY3NzZlZTc4
ZThkMmIyZGZkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0
aE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3Qu
aApAQCAtNTMsNiArNTMsNyBAQCBjbGFzcyBNYXRoT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBYnMo
RXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNG
bG9vcihFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3Rv
RnVuY1RydW5jKEV4ZWNTdGF0ZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDU1NmFhYzQ2MjQyOTdlNTI1MWM1N2VhZWJjZjE4
ZGY2ODkyZDE3YzIuLjgyNjRiMTEwYjMyOTM1ZjMzNDEzZjAzNGQ3NmM2NjNjN2Y3NWFiZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ3OSw2ICs0NzksOCBAQCBzdGF0
aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50cmluc2ljIGlu
dHJpbnNpYykKICAgICAgICAgcmV0dXJuIGZsb29yVGh1bmtHZW5lcmF0b3I7CiAgICAgY2FzZSBD
ZWlsSW50cmluc2ljOgogICAgICAgICByZXR1cm4gY2VpbFRodW5rR2VuZXJhdG9yOworICAgIGNh
c2UgVHJ1bmNJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiB0cnVuY1RodW5rR2VuZXJhdG9yOwog
ICAgIGNhc2UgUm91bmRJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiByb3VuZFRodW5rR2VuZXJh
dG9yOwogICAgIGNhc2UgRXhwSW50cmluc2ljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXJvdW5kaW5nLWluZmluaXR5LmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXJvdW5kaW5nLWluZmluaXR5LmpzCmluZGV4
IDIxZTAyMWUwMGJjNjEwODUwZmM0MjliMzZkNmM0ODFjZGVmN2ZhZDAuLmE5MzUzODAwNDEzMTRm
YmYyZDAxMWJlNjAxMzIyMjg0MDgzMTIwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvbWF0aC1yb3VuZGluZy1pbmZpbml0eS5qcworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGgtcm91bmRpbmctaW5maW5pdHkuanMKQEAg
LTIxLDYgKzIxLDEyIEBAIGZ1bmN0aW9uIHRlc3RDZWlsKHZhbHVlKQogfQogbm9JbmxpbmUodGVz
dENlaWwpOwogCitmdW5jdGlvbiB0ZXN0VHJ1bmModmFsdWUpCit7CisgICAgcmV0dXJuIE1hdGgu
dHJ1bmModmFsdWUpOworfQorbm9JbmxpbmUodGVzdFRydW5jKTsKKwogZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTQ7ICsraSkgewogICAgIHNob3VsZEJlKHRlc3RSb3VuZChJbmZpbml0eSksIEluZmlu
aXR5KTsKICAgICBzaG91bGRCZSh0ZXN0Um91bmQoLUluZmluaXR5KSwgLUluZmluaXR5KTsKQEAg
LTI4LDQgKzM0LDYgQEAgZnVuY3Rpb24gdGVzdENlaWwodmFsdWUpCiAgICAgc2hvdWxkQmUodGVz
dEZsb29yKC1JbmZpbml0eSksIC1JbmZpbml0eSk7CiAgICAgc2hvdWxkQmUodGVzdENlaWwoSW5m
aW5pdHkpLCBJbmZpbml0eSk7CiAgICAgc2hvdWxkQmUodGVzdENlaWwoLUluZmluaXR5KSwgLUlu
ZmluaXR5KTsKKyAgICBzaG91bGRCZSh0ZXN0VHJ1bmMoSW5maW5pdHkpLCBJbmZpbml0eSk7Cisg
ICAgc2hvdWxkQmUodGVzdFRydW5jKC1JbmZpbml0eSksIC1JbmZpbml0eSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGgtcm91bmRpbmctbmFu
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXJvdW5kaW5nLW5h
bi5qcwppbmRleCBlY2NjZGJjN2Y3ZDY2OWU1ZTNkODg5ZjE0NTJjOGEzZGNhMTdjYzU4Li5kZTFl
MTM0NGEwNmRhMDVlMmFkOGRmNzA1NTJiNzY4N2NjMjQxYzA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGgtcm91bmRpbmctbmFuLmpzCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbWF0aC1yb3VuZGluZy1uYW4uanMKQEAg
LTIxLDggKzIxLDE1IEBAIGZ1bmN0aW9uIHRlc3RDZWlsKHZhbHVlKQogfQogbm9JbmxpbmUodGVz
dENlaWwpOwogCitmdW5jdGlvbiB0ZXN0VHJ1bmModmFsdWUpCit7CisgICAgcmV0dXJuIE1hdGgu
dHJ1bmModmFsdWUpOworfQorbm9JbmxpbmUodGVzdFRydW5jKTsKKwogZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTQ7ICsraSkgewogICAgIHNob3VsZEJlKE51bWJlci5pc05hTih0ZXN0Um91bmQoTmFO
KSksIHRydWUpOwogICAgIHNob3VsZEJlKE51bWJlci5pc05hTih0ZXN0Rmxvb3IoTmFOKSksIHRy
dWUpOwogICAgIHNob3VsZEJlKE51bWJlci5pc05hTih0ZXN0Q2VpbChOYU4pKSwgdHJ1ZSk7Cisg
ICAgc2hvdWxkQmUoTnVtYmVyLmlzTmFOKHRlc3RUcnVuYyhOYU4pKSwgdHJ1ZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGgtcm91bmRpbmct
bmVnYXRpdmUtemVyby5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbWF0
aC1yb3VuZGluZy1uZWdhdGl2ZS16ZXJvLmpzCmluZGV4IGFiYWUyNzg1MGMwMjk5MDIxMzNjNjA5
NGQxZDVjMjc5OWJjNTdhYjcuLjFhNWJhYTI0YmVhNzMzMDNmZDNmZDE1MTNjZmQzNDY2MWUzMmNi
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbWF0aC1y
b3VuZGluZy1uZWdhdGl2ZS16ZXJvLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvbWF0aC1yb3VuZGluZy1uZWdhdGl2ZS16ZXJvLmpzCkBAIC02Nyw0ICs2NywxMyBA
QCBmdW5jdGlvbiB0ZXN0Um91bmROb25OZWdhdGl2ZVplcm8yKHZhbHVlKQogICAgIHNob3VsZEJl
KDEgLyB0ZXN0Um91bmROb25OZWdhdGl2ZVplcm8yKDAuMSksIEluZmluaXR5KTsKIH0KIAorZnVu
Y3Rpb24gdGVzdFRydW5jKHZhbHVlKQoreworICAgIHJldHVybiBNYXRoLnRydW5jKHZhbHVlKTsK
K30KK25vSW5saW5lKHRlc3RUcnVuYyk7CiAKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kp
IHsKKyAgICBzaG91bGRCZSgxIC8gdGVzdFRydW5jKDAuMCksIEluZmluaXR5KTsKKyAgICBzaG91
bGRCZSgxIC8gdGVzdFRydW5jKC0wLjApLCAtSW5maW5pdHkpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXRydW5jLWFyaXRoLXJvdW5kaW5n
LW1vZGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGgtdHJ1bmMt
YXJpdGgtcm91bmRpbmctbW9kZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGZiMWUzOTEzOTc4Y2E1NzA1NjQ2
NmU0ODY1ZTc0MDBjOGZhOTI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXRydW5jLWFyaXRoLXJvdW5kaW5nLW1vZGUuanMKQEAgLTAs
MCArMSw4NSBAQAorZnVuY3Rpb24gZmlyc3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lc05vdChhKSB7
CisgICAgdmFyIHJlc3VsdEEgPSBNYXRoLnRydW5jKGEpOworICAgIHZhciByZXN1bHRCID0gTWF0
aC50cnVuYyhhKXwwOworICAgIHJldHVybiB7IHJlc3VsdEE6cmVzdWx0QSwgcmVzdWx0QjpyZXN1
bHRCIH07Cit9Citub0lubGluZShmaXJzdENhcmVBYm91dFplcm9TZWNvbmREb2VzTm90KTsKKwor
ZnVuY3Rpb24gZmlyc3REb05vdENhcmVBYm91dFplcm9TZWNvbmREb2VzKGEpIHsKKyAgICB2YXIg
cmVzdWx0QSA9IE1hdGgudHJ1bmMoYSl8MDsKKyAgICB2YXIgcmVzdWx0QiA9IE1hdGgudHJ1bmMo
YSk7CisgICAgcmV0dXJuIHsgcmVzdWx0QTpyZXN1bHRBLCByZXN1bHRCOnJlc3VsdEIgfTsKK30K
K25vSW5saW5lKGZpcnN0RG9Ob3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lcyk7CisKKy8vIFdhcm11
cCB3aXRoIGRvdWJsZXMsIGJ1dCBub3RoaW5nIHRoYXQgd291bGQgdHJ1bmMgdG8gLTAgdG8gZW5z
dXJlIHdlIG5ldmVyCisvLyBzZWUgYSBkb3VibGUgYXMgcmVzdWx0LiBUaGUgcmVzdWx0IG11c3Qg
YmUgaW50ZWdlcnMsIHRoZSBpbnB1dCBpcyBrZXB0IHRvIHNtYWxsIHZhbHVlcy4KK2Z1bmN0aW9u
IHdhcm11cCgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAg
IGZpcnN0Q2FyZUFib3V0WmVyb1NlY29uZERvZXNOb3QoNDIuNiArIGkpOworICAgICAgICBmaXJz
dERvTm90Q2FyZUFib3V0WmVyb1NlY29uZERvZXMoNDIuNCArIGkpOworICAgIH0KK30KK3dhcm11
cCgpOworCitmdW5jdGlvbiB2ZXJpZnlOZWdhdGl2ZVplcm9Jc1ByZXNlcnZlZCgpIHsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIHZhciByZXN1bHQxID0gZmly
c3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lc05vdCgtMC4xKTsKKyAgICAgICAgaWYgKDEgLyByZXN1
bHQxLnJlc3VsdEEgIT09IC1JbmZpbml0eSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJGYWlsZWQgZmlyc3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lc05vdCgtMC4xKSwgcmVzdWx0QSA9
ICIgKyByZXN1bHQxLnJlc3VsdEEpOworICAgICAgICB9CisgICAgICAgIGlmICgxIC8gcmVzdWx0
MS5yZXN1bHRCICE9PSBJbmZpbml0eSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJG
YWlsZWQgZmlyc3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lc05vdCgtMC4xKSwgcmVzdWx0QiA9ICIg
KyByZXN1bHQxLnJlc3VsdEIpOworICAgICAgICB9CisgICAgICAgIHZhciByZXN1bHQyID0gZmly
c3REb05vdENhcmVBYm91dFplcm9TZWNvbmREb2VzKC0wLjEpOworICAgICAgICBpZiAoMSAvIHJl
c3VsdDIucmVzdWx0QSAhPT0gSW5maW5pdHkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRmFpbGVkIGZpcnN0RG9Ob3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lcygtMC4xKSwgcmVzdWx0
QSA9ICIgKyByZXN1bHQxLnJlc3VsdEEpOworICAgICAgICB9CisgICAgICAgIGlmICgxIC8gcmVz
dWx0Mi5yZXN1bHRCICE9PSAtSW5maW5pdHkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRmFpbGVkIGZpcnN0RG9Ob3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lcygtMC4xKSwgcmVzdWx0
QiA9ICIgKyByZXN1bHQxLnJlc3VsdEIpOworICAgICAgICB9CisgICAgICAgIHZhciByZXN1bHQz
ID0gZmlyc3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lc05vdCgtMC4wKTsKKyAgICAgICAgaWYgKDEg
LyByZXN1bHQzLnJlc3VsdEEgIT09IC1JbmZpbml0eSkgeworICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJGYWlsZWQgZmlyc3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lc05vdCgtMC4wKSwgcmVz
dWx0QSA9ICIgKyByZXN1bHQzLnJlc3VsdEEpOworICAgICAgICB9CisgICAgICAgIGlmICgxIC8g
cmVzdWx0My5yZXN1bHRCICE9PSBJbmZpbml0eSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJGYWlsZWQgZmlyc3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lc05vdCgtMC4wKSwgcmVzdWx0
QiA9ICIgKyByZXN1bHQzLnJlc3VsdEIpOworICAgICAgICB9CisgICAgICAgIHZhciByZXN1bHQ0
ID0gZmlyc3REb05vdENhcmVBYm91dFplcm9TZWNvbmREb2VzKC0wLjApOworICAgICAgICBpZiAo
MSAvIHJlc3VsdDQucmVzdWx0QSAhPT0gSW5maW5pdHkpIHsKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRmFpbGVkIGZpcnN0RG9Ob3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lcygtMC4wKSwg
cmVzdWx0QSA9ICIgKyByZXN1bHQ0LnJlc3VsdEEpOworICAgICAgICB9CisgICAgICAgIGlmICgx
IC8gcmVzdWx0NC5yZXN1bHRCICE9PSAtSW5maW5pdHkpIHsKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRmFpbGVkIGZpcnN0RG9Ob3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lcygtMC4wKSwg
cmVzdWx0QiA9ICIgKyByZXN1bHQ0LnJlc3VsdEIpOworICAgICAgICB9CisgICAgICAgIHZhciBy
ZXN1bHQ1ID0gZmlyc3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lc05vdCgwLjApOworICAgICAgICBp
ZiAoMSAvIHJlc3VsdDUucmVzdWx0QSAhPT0gSW5maW5pdHkpIHsKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRmFpbGVkIGZpcnN0Q2FyZUFib3V0WmVyb1NlY29uZERvZXNOb3QoMC4wKSwg
cmVzdWx0QSA9ICIgKyByZXN1bHQ1LnJlc3VsdEEpOworICAgICAgICB9CisgICAgICAgIGlmICgx
IC8gcmVzdWx0NS5yZXN1bHRCICE9PSBJbmZpbml0eSkgeworICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJGYWlsZWQgZmlyc3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lc05vdCgwLjApLCByZXN1
bHRCID0gIiArIHJlc3VsdDUucmVzdWx0Qik7CisgICAgICAgIH0KKyAgICAgICAgdmFyIHJlc3Vs
dDYgPSBmaXJzdERvTm90Q2FyZUFib3V0WmVyb1NlY29uZERvZXMoMC4wKTsKKyAgICAgICAgaWYg
KDEgLyByZXN1bHQ2LnJlc3VsdEEgIT09IEluZmluaXR5KSB7CisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkZhaWxlZCBmaXJzdERvTm90Q2FyZUFib3V0WmVyb1NlY29uZERvZXMoMC4wKSwg
cmVzdWx0QSA9ICIgKyByZXN1bHQ2LnJlc3VsdEEpOworICAgICAgICB9CisgICAgICAgIGlmICgx
IC8gcmVzdWx0Ni5yZXN1bHRCICE9PSBJbmZpbml0eSkgeworICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJGYWlsZWQgZmlyc3REb05vdENhcmVBYm91dFplcm9TZWNvbmREb2VzKDAuMCksIHJl
c3VsdEIgPSAiICsgcmVzdWx0Ni5yZXN1bHRCKTsKKyAgICAgICAgfQorICAgICAgICB2YXIgcmVz
dWx0NyA9IGZpcnN0Q2FyZUFib3V0WmVyb1NlY29uZERvZXNOb3QoMC4xKTsKKyAgICAgICAgaWYg
KDEgLyByZXN1bHQ3LnJlc3VsdEEgIT09IEluZmluaXR5KSB7CisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkZhaWxlZCBmaXJzdENhcmVBYm91dFplcm9TZWNvbmREb2VzTm90KDAuMSksIHJl
c3VsdEEgPSAiICsgcmVzdWx0Ny5yZXN1bHRBKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoMSAv
IHJlc3VsdDcucmVzdWx0QiAhPT0gSW5maW5pdHkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRmFpbGVkIGZpcnN0Q2FyZUFib3V0WmVyb1NlY29uZERvZXNOb3QoMC4xKSwgcmVzdWx0
QiA9ICIgKyByZXN1bHQ3LnJlc3VsdEIpOworICAgICAgICB9CisgICAgICAgIHZhciByZXN1bHQ4
ID0gZmlyc3REb05vdENhcmVBYm91dFplcm9TZWNvbmREb2VzKDAuMSk7CisgICAgICAgIGlmICgx
IC8gcmVzdWx0OC5yZXN1bHRBICE9PSBJbmZpbml0eSkgeworICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJGYWlsZWQgZmlyc3REb05vdENhcmVBYm91dFplcm9TZWNvbmREb2VzKDAuMSksIHJl
c3VsdEEgPSAiICsgcmVzdWx0OC5yZXN1bHRBKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoMSAv
IHJlc3VsdDgucmVzdWx0QiAhPT0gSW5maW5pdHkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRmFpbGVkIGZpcnN0RG9Ob3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lcygwLjEpLCByZXN1
bHRCID0gIiArIHJlc3VsdDgucmVzdWx0Qik7CisgICAgICAgIH0KKyAgICB9Cit9Cit2ZXJpZnlO
ZWdhdGl2ZVplcm9Jc1ByZXNlcnZlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXRydW5jLWJhc2ljcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvbWF0aC10cnVuYy1iYXNpY3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVjZWQy
ZjcxZjM2OTk3OTk2OGJkMTc1NzQ2YmFkMDA5MDljNzExNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbWF0aC10cnVuYy1iYXNpY3MuanMKQEAg
LTAsMCArMSwyNTYgQEAKK2Z1bmN0aW9uIG1hdGhUcnVuY09uSW50ZWdlcnModmFsdWUpCit7Cisg
ICAgcmV0dXJuIE1hdGgudHJ1bmModmFsdWUpOworfQorbm9JbmxpbmUobWF0aFRydW5jT25JbnRl
Z2Vycyk7CisKK2Z1bmN0aW9uIG1hdGhUcnVuY09uRG91Ymxlcyh2YWx1ZSkKK3sKKyAgICByZXR1
cm4gTWF0aC50cnVuYyh2YWx1ZSk7Cit9Citub0lubGluZShtYXRoVHJ1bmNPbkRvdWJsZXMpOwor
CitmdW5jdGlvbiBtYXRoVHJ1bmNPbkJvb2xlYW5zKHZhbHVlKQoreworICAgIHJldHVybiBNYXRo
LnRydW5jKHZhbHVlKTsKK30KK25vSW5saW5lKG1hdGhUcnVuY09uQm9vbGVhbnMpOworCisvLyBU
aGUgdHJpdmlhbCBjYXNlcyBmaXJzdC4KK2ZvciAodmFyIGkgPSAxOyBpIDwgMWU0OyArK2kpIHsK
KyAgICB2YXIgdHJ1bmNlZFZhbHVlID0gbWF0aFRydW5jT25JbnRlZ2VycyhpKTsKKyAgICBpZiAo
dHJ1bmNlZFZhbHVlICE9PSBpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY09u
SW50ZWdlcnMoIiArIGkgKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFyIHRydW5j
ZWRWYWx1ZSA9IG1hdGhUcnVuY09uSW50ZWdlcnMoLWkpOworICAgIGlmICh0cnVuY2VkVmFsdWUg
IT09IC1pKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY09uSW50ZWdlcnMoIiAr
IC1pICsgIikgPSAiICsgdHJ1bmNlZFZhbHVlKTsKKworICAgIHZhciBkb3VibGVMb3cgPSBpICsg
MC40OworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNPbkRvdWJsZXMoZG91YmxlTG93
KTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSBpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
Im1hdGhUcnVuY09uRG91YmxlcygiICsgZG91YmxlTG93ICsgIikgPSAiICsgdHJ1bmNlZFZhbHVl
KTsKKworICAgIHZhciBkb3VibGVIaWdoID0gaSArIDAuNjsKKyAgICB2YXIgdHJ1bmNlZFZhbHVl
ID0gbWF0aFRydW5jT25Eb3VibGVzKGRvdWJsZUhpZ2gpOworICAgIGlmICh0cnVuY2VkVmFsdWUg
IT09IGkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jT25Eb3VibGVzKCIgKyBk
b3VibGVIaWdoICsgIikgPSAiICsgdHJ1bmNlZFZhbHVlKTsKKworICAgIHZhciBkb3VibGVNaWQg
PSBpICsgMC41OworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNPbkRvdWJsZXMoZG91
YmxlTWlkKTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSBpKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIm1hdGhUcnVuY09uRG91YmxlcygiICsgZG91YmxlTWlkICsgIikgPSAiICsgdHJ1bmNl
ZFZhbHVlKTsKKworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNPbkRvdWJsZXMoLTAu
Nik7CisgICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0gLTAuMCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJtYXRoVHJ1bmNPbkRvdWJsZXMoLTAuNikgPSAiICsgdHJ1bmNlZFZhbHVlKTsKK30KKwor
Ly8gU29tZSBtb3JlIGludGVyZXN0aW5nIGNhc2VzLCBzb21lIG9mIHRoZW0gd2VsbCBPU1IgZXhp
dCB3aGVuIHRoZSByZXR1cm4gdmFsdWUgaXMgemVyby4KK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0
OyArK2kpIHsKKyAgICB2YXIgdHJ1bmNlZFZhbHVlID0gbWF0aFRydW5jT25JbnRlZ2VycyhpKTsK
KyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSBpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm1h
dGhUcnVuY09uSW50ZWdlcnMoIiArIGkgKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAg
dmFyIHRydW5jZWRWYWx1ZSA9IG1hdGhUcnVuY09uSW50ZWdlcnMoLWkpOworICAgIGlmICh0cnVu
Y2VkVmFsdWUgIT09IC1pKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY09uSW50
ZWdlcnMoLSIgKyBpICsgIikgPSAiICsgdHJ1bmNlZFZhbHVlKTsKKworICAgIHZhciB0cnVuY2Vk
VmFsdWUgPSBtYXRoVHJ1bmNPbkRvdWJsZXMoLTAuNCk7CisgICAgaWYgKHRydW5jZWRWYWx1ZSAh
PT0gLTAuMCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJtYXRoVHJ1bmNPbkRvdWJsZXMoLTAu
NCkgPSAiICsgdHJ1bmNlZFZhbHVlKTsKKworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1
bmNPbkRvdWJsZXMoLTAuNSk7CisgICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0gLTAuMCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJtYXRoVHJ1bmNPbkRvdWJsZXMoLTAuNSkgPSAiICsgdHJ1bmNl
ZFZhbHVlKTsKKworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNPbkRvdWJsZXMoLTAp
OworICAgIGlmICghKHRydW5jZWRWYWx1ZSA9PT0gMCAmJiAoMS90cnVuY2VkVmFsdWUpID09PSAt
SW5maW5pdHkpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY09uRG91Ymxlcygt
MCkgPSAiICsgdHJ1bmNlZFZhbHVlKTsKKworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1
bmNPbkRvdWJsZXMoTmFOKTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlID09PSB0cnVuY2VkVmFsdWUp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jT25Eb3VibGVzKE5hTikgPSAiICsg
dHJ1bmNlZFZhbHVlKTsKKworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNPbkRvdWJs
ZXMoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSBO
dW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRy
dW5jT25Eb3VibGVzKE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkgPSAiICsgdHJ1bmNlZFZhbHVl
KTsKKworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNPbkRvdWJsZXMoTnVtYmVyLk5F
R0FUSVZFX0lORklOSVRZKTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSBOdW1iZXIuTkVHQVRJ
VkVfSU5GSU5JVFkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jT25Eb3VibGVz
KE51bWJlci5ORUdBVElWRV9JTkZJTklUWSkgPSAiICsgdHJ1bmNlZFZhbHVlKTsKKworICAgIHZh
ciBib29sZWFuID0gISEoaSAlIDIpOworICAgIHZhciB0cnVuY2VkQm9vbGVhbiA9IG1hdGhUcnVu
Y09uQm9vbGVhbnMoYm9vbGVhbik7CisgICAgaWYgKHRydW5jZWRCb29sZWFuICE9IGJvb2xlYW4p
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jT25Eb3VibGVzKCIgKyBib29sZWFu
ICsgIikgPSAiICsgdHJ1bmNlZEJvb2xlYW4pOworfQorCitmdW5jdGlvbiB1c2VsZXNzTWF0aFRy
dW5jKHZhbHVlKQoreworICAgIHJldHVybiBNYXRoLnRydW5jKHZhbHVlfDApOworfQorbm9Jbmxp
bmUodXNlbGVzc01hdGhUcnVuYyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsK
KyAgICB2YXIgdHJ1bmNlZFZhbHVlID0gdXNlbGVzc01hdGhUcnVuYyhpKTsKKyAgICBpZiAodHJ1
bmNlZFZhbHVlICE9PSBpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInVzZWxlc3NNYXRoVHJ1
bmMoIiArIGkgKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFyIGRvdWJsZUxvdyA9
IGkgKyAwLjQ7CisgICAgdmFyIHRydW5jZWRWYWx1ZSA9IHVzZWxlc3NNYXRoVHJ1bmMoZG91Ymxl
TG93KTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSBpKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoInVzZWxlc3NNYXRoVHJ1bmMoIiArIGRvdWJsZUxvdyArICIpID0gIiArIHRydW5jZWRWYWx1
ZSk7CisKKyAgICB2YXIgZG91YmxlSGlnaCA9IGkgKyAwLjY7CisgICAgdmFyIHRydW5jZWRWYWx1
ZSA9IHVzZWxlc3NNYXRoVHJ1bmMoZG91YmxlSGlnaCk7CisgICAgaWYgKHRydW5jZWRWYWx1ZSAh
PT0gaSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ1c2VsZXNzTWF0aFRydW5jKCIgKyBkb3Vi
bGVIaWdoICsgIikgPSAiICsgdHJ1bmNlZFZhbHVlKTsKKworICAgIHZhciBkb3VibGVNaWQgPSBp
ICsgMC41OworICAgIHZhciB0cnVuY2VkVmFsdWUgPSB1c2VsZXNzTWF0aFRydW5jKGRvdWJsZU1p
ZCk7CisgICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0gaSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJ1c2VsZXNzTWF0aFRydW5jKCIgKyBkb3VibGVNaWQgKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUp
OworCisgICAgdmFyIHRydW5jZWRWYWx1ZSA9IHVzZWxlc3NNYXRoVHJ1bmMoLTAuNCk7CisgICAg
aWYgKHRydW5jZWRWYWx1ZSAhPT0gMCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ1c2VsZXNz
TWF0aFRydW5jKC0wLjQpID0gIiArIHRydW5jZWRWYWx1ZSk7CisKKyAgICB2YXIgdHJ1bmNlZFZh
bHVlID0gdXNlbGVzc01hdGhUcnVuYygtMC41KTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSAw
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInVzZWxlc3NNYXRoVHJ1bmMoLTAuNSkgPSAiICsg
dHJ1bmNlZFZhbHVlKTsKKworICAgIHZhciB0cnVuY2VkVmFsdWUgPSB1c2VsZXNzTWF0aFRydW5j
KC0wLjYpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09IDApCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigidXNlbGVzc01hdGhUcnVuYygtMC42KSA9ICIgKyB0cnVuY2VkVmFsdWUpOworfQorCitm
dW5jdGlvbiBtYXRoVHJ1bmNXaXRoT3ZlcmZsb3codmFsdWUpCit7CisgICAgcmV0dXJuIE1hdGgu
dHJ1bmModmFsdWUpOworfQorbm9JbmxpbmUobWF0aFRydW5jV2l0aE92ZXJmbG93KTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIHZhciBiaWdWYWx1ZSA9IDEwMDAwMDAw
MDAwMDA7CisgICAgdmFyIHRydW5jZWRWYWx1ZSA9IG1hdGhUcnVuY1dpdGhPdmVyZmxvdyhiaWdW
YWx1ZSk7CisgICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0gYmlnVmFsdWUpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigibWF0aFRydW5jV2l0aE92ZXJmbG93KCIgKyBiaWdWYWx1ZSArICIpID0gIiAr
IHRydW5jZWRWYWx1ZSk7Cit9CisKK2Z1bmN0aW9uIG1hdGhUcnVuY0NvbnN1bWVkQXNEb3VibGUo
dmFsdWUpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1bmModmFsdWUpICogMC41OworfQorbm9Jbmxp
bmUobWF0aFRydW5jQ29uc3VtZWRBc0RvdWJsZSk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0
OyArK2kpIHsKKyAgICB2YXIgZG91YmxlVmFsdWUgPSBpICsgMC4xOworICAgIHZhciB0cnVuY2Vk
VmFsdWUgPSBtYXRoVHJ1bmNDb25zdW1lZEFzRG91YmxlKGRvdWJsZVZhbHVlKTsKKyAgICBpZiAo
dHJ1bmNlZFZhbHVlICE9PSAoaSAqIDAuNSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigibWF0
aFRydW5jQ29uc3VtZWRBc0RvdWJsZSgiICsgZG91YmxlVmFsdWUgKyAiKSA9ICIgKyB0cnVuY2Vk
VmFsdWUpOworCisgICAgdmFyIGRvdWJsZVZhbHVlID0gaSArIDAuNjsKKyAgICB2YXIgdHJ1bmNl
ZFZhbHVlID0gbWF0aFRydW5jQ29uc3VtZWRBc0RvdWJsZShkb3VibGVWYWx1ZSk7CisgICAgaWYg
KHRydW5jZWRWYWx1ZSAhPT0gKGkgKiAwLjUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm1h
dGhUcnVuY0NvbnN1bWVkQXNEb3VibGUoIiArIGRvdWJsZVZhbHVlICsgIikgPSAiICsgdHJ1bmNl
ZFZhbHVlKTsKKworfQorCitmdW5jdGlvbiBtYXRoVHJ1bmNEb2VzTm90Q2FyZUFib3V0TWludXNa
ZXJvKHZhbHVlKQoreworICAgIHJldHVybiBNYXRoLnRydW5jKHZhbHVlKXwwOworfQorbm9Jbmxp
bmUobWF0aFRydW5jRG9lc05vdENhcmVBYm91dE1pbnVzWmVybyk7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMWU0OyArK2kpIHsKKyAgICB2YXIgZG91YmxlTWlkID0gaSArIDAuNTsKKyAgICB2YXIg
dHJ1bmNlZFZhbHVlID0gbWF0aFRydW5jRG9lc05vdENhcmVBYm91dE1pbnVzWmVybyhkb3VibGVN
aWQpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09IGkpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigibWF0aFRydW5jRG9lc05vdENhcmVBYm91dE1pbnVzWmVybygiICsgZG91YmxlTWlkICsgIikg
PSAiICsgdHJ1bmNlZFZhbHVlKTsKK30KKworCisvLyAqKiogRnVuY3Rpb24gYXJndW1lbnRzLiAq
KioKK2Z1bmN0aW9uIG1hdGhUcnVuY05vQXJndW1lbnRzKCkKK3sKKyAgICByZXR1cm4gTWF0aC50
cnVuYygpOworfQorbm9JbmxpbmUobWF0aFRydW5jTm9Bcmd1bWVudHMpOworCitmdW5jdGlvbiBt
YXRoVHJ1bmNUb29NYW55QXJndW1lbnRzKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1
bmMoYSwgYiwgYyk7Cit9Citub0lubGluZShtYXRoVHJ1bmNUb29NYW55QXJndW1lbnRzKTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIHZhciB2YWx1ZSA9IG1hdGhUcnVu
Y05vQXJndW1lbnRzKCk7CisgICAgaWYgKHZhbHVlID09PSB2YWx1ZSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJtYXRoVHJ1bmNOb0FyZ3VtZW50cygpID0gIiArIHZhbHVlKTsKKworICAgIHZh
ciB2YWx1ZSA9IG1hdGhUcnVuY1Rvb01hbnlBcmd1bWVudHMoMi4xLCAzLCA1KTsKKyAgICBpZiAo
dmFsdWUgIT09IDIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jVG9vTWFueUFy
Z3VtZW50cygpID0gIiArIHZhbHVlKTsKK30KKworCisvLyAqKiogQ29uc3RhbnQgYXMgYXJndW1l
bnRzLiAqKioKK2Z1bmN0aW9uIHRlc3RNYXRoVHJ1bmNPbkNvbnN0YW50cygpCit7CisgICAgdmFy
IHZhbHVlID0gTWF0aC50cnVuYygwKTsKKyAgICBpZiAodmFsdWUgIT09IDApCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiTWF0aC50cnVuYygwKSA9ICIgKyB2YWx1ZSk7CisgICAgdmFyIHZhbHVl
ID0gTWF0aC50cnVuYygtMCk7CisgICAgaWYgKCEodmFsdWUgPT09IDAgJiYgKDEvdmFsdWUpID09
PSAtSW5maW5pdHkpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1hdGgudHJ1bmMoLTApID0g
IiArIHZhbHVlKTsKKyAgICB2YXIgdmFsdWUgPSBNYXRoLnRydW5jKDEpOworICAgIGlmICh2YWx1
ZSAhPT0gMSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJNYXRoLnRydW5jKDEpID0gIiArIHZh
bHVlKTsKKyAgICB2YXIgdmFsdWUgPSBNYXRoLnRydW5jKC0xKTsKKyAgICBpZiAodmFsdWUgIT09
IC0xKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1hdGgudHJ1bmMoLTEpID0gIiArIHZhbHVl
KTsKKyAgICB2YXIgdmFsdWUgPSBNYXRoLnRydW5jKDQyKTsKKyAgICBpZiAodmFsdWUgIT09IDQy
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1hdGgudHJ1bmMoNDIpID0gIiArIHZhbHVlKTsK
KyAgICB2YXIgdmFsdWUgPSBNYXRoLnRydW5jKC00Mi4yKTsKKyAgICBpZiAodmFsdWUgIT09IC00
MikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJNYXRoLnRydW5jKC00Mi4yKSA9ICIgKyB2YWx1
ZSk7CisgICAgdmFyIHZhbHVlID0gTWF0aC50cnVuYyhOYU4pOworICAgIGlmICh2YWx1ZSA9PT0g
dmFsdWUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiTWF0aC50cnVuYyhOYU4pID0gIiArIHZh
bHVlKTsKKyAgICB2YXIgdmFsdWUgPSBNYXRoLnRydW5jKE51bWJlci5QT1NJVElWRV9JTkZJTklU
SSk7CisgICAgaWYgKHZhbHVlID09PSB2YWx1ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJN
YXRoLnRydW5jKE51bWJlci5QT1NJVElWRV9JTkZJTklUSSkgPSAiICsgdmFsdWUpOworICAgIHZh
ciB2YWx1ZSA9IE1hdGgudHJ1bmMoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRJKTsKKyAgICBpZiAo
dmFsdWUgPT09IHZhbHVlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1hdGgudHJ1bmMoTnVt
YmVyLk5FR0FUSVZFX0lORklOSVRJKSA9ICIgKyB2YWx1ZSk7CisgICAgdmFyIHZhbHVlID0gTWF0
aC50cnVuYyhNYXRoLkUpOworICAgIGlmICh2YWx1ZSAhPT0gMikKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJNYXRoLnRydW5jKE1hdGguRSkgPSAiICsgdmFsdWUpOworfQorbm9JbmxpbmUodGVz
dE1hdGhUcnVuY09uQ29uc3RhbnRzKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkg
eworICAgIHRlc3RNYXRoVHJ1bmNPbkNvbnN0YW50cygpOworfQorCisKKy8vICoqKiBTdHJ1Y3Qg
dHJhbnNpdGlvbi4gKioqCitmdW5jdGlvbiBtYXRoVHJ1bmNTdHJ1Y3RUcmFuc2l0aW9uKHZhbHVl
KQoreworICAgIHJldHVybiBNYXRoLnRydW5jKHZhbHVlKTsKK30KK25vSW5saW5lKG1hdGhUcnVu
Y1N0cnVjdFRyYW5zaXRpb24pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7Cisg
ICAgdmFyIHZhbHVlID0gbWF0aFRydW5jU3RydWN0VHJhbnNpdGlvbig0Mi41KTsKKyAgICBpZiAo
dmFsdWUgIT09IDQyKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY1N0cnVjdFRy
YW5zaXRpb24oNDIuNSkgPSAiICsgdmFsdWUpOworfQorCitNYXRoLnRydW5jID0gZnVuY3Rpb24o
KSB7IHJldHVybiBhcmd1bWVudHNbMF0gKyA1OyB9CisKK3ZhciB2YWx1ZSA9IG1hdGhUcnVuY1N0
cnVjdFRyYW5zaXRpb24oNDIpOworaWYgKHZhbHVlICE9PSA0NykKKyAgICB0aHJvdyBuZXcgRXJy
b3IoIm1hdGhUcnVuY1N0cnVjdFRyYW5zaXRpb24oNDIpIGFmdGVyIHRyYW5zaXRpb24gPSAiICsg
dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9t
YXRoLXRydW5jLXNob3VsZC1iZS10cnVuY2F0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvbWF0aC10cnVuYy1zaG91bGQtYmUtdHJ1bmNhdGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmI5ZWE5YmJhODNiMzI3YTNmMmYzYjAwMTUzMGE1OGMwODBmMWZlMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbWF0aC10cnVuYy1zaG91bGQt
YmUtdHJ1bmNhdGUuanMKQEAgLTAsMCArMSwxMiBAQAorZnVuY3Rpb24gbWF0aFRydW5jKHZhbHVl
KQoreworICAgIHJldHVybiBNYXRoLnRydW5jKHZhbHVlKTsKK30KK25vSW5saW5lKG1hdGhUcnVu
Yyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICB2YXIgZG91YmxlTWlk
ID0gLTk5MDEgLSAwLjY7CisgICAgdmFyIHJvdW5kZWRWYWx1ZSA9IG1hdGhUcnVuYyhkb3VibGVN
aWQpOworICAgIGlmIChyb3VuZGVkVmFsdWUgIT09IC05OTAxKQorICAgICAgICB0aHJvdyAibWF0
aFJvdW5kRG9lc05vdENhcmVBYm91dE1pbnVzWmVybygiICsgZG91YmxlTWlkICsgIikgPSAiICsg
cm91bmRlZFZhbHVlOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275347</attachid>
            <date>2016-03-31 15:59:08 -0700</date>
            <delta_ts>2016-04-01 04:59:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156072-20160401075911.patch</filename>
            <type>text/plain</type>
            <size>54178</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4OTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YTI1MTRjZjQ3NTgzYmNkOWIzMGRjYWFkNzc5ZDQwMzg2MDdiNWYzLi5jMjM1NGVmNDBlZWViNzY1
ZmVkZjMxNWJmYTVhYWUyZGRlNzUyOGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxMTIgQEAKIDIwMTYtMDMtMzEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgW0pTQ10gQWRkIHRydW5jYXRlIG9wZXJhdGlvbiAocm91bmRpbmcg
dG8gemVybykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NjA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBUcnVuY0ludHJpbnNpYyBmb3IgTWF0aC50cnVuYy4gREZHIGhhbmRsZXMgaXQgYXMgQXJp
dGhUcnVuYy4KKyAgICAgICAgSW4gREZHLCBBcml0aFRydW5jIGJlaGF2ZXMgc2ltaWxhciB0byBB
cml0aFJvdW5kLCBBcml0aENlaWwsIGFuZCBBcml0aEZsb29yLgorICAgICAgICBBcml0aFRydW5j
IHJvdW5kcyB0aGUgdmFsdWUgdG93YXJkcyB6ZXJvLgorCisgICAgICAgIEFuZCB3ZSByZXdyaXRl
IEB0b0ludGVnZXIgdG8gdXNlIEB0cnVuYyBpbnN0ZWFkIG9mIEBhYnMsIEBmbG9vciwgbmVnYXRp
b24gYW5kIGJyYW5jaC4KKyAgICAgICAgVGhpcyBpcyBjb21wbGV0ZWx5IHRoZSBzYW1lIHRvIHdo
YXQgd2UgZG8gaW4gSlNWYWx1ZTo6dG9JbnRlZ2VyLgorCisgICAgICAgIFNpbmNlIERGRyByZWNv
Z25pemUgaXQsIERGRyBjYW4gY29udmVydCBBcml0aFRydW5jIHRvIElkZW50aXR5IGlmIHRoZSBn
aXZlbiBhcmd1bWVudCBpcyBJbnQzMi4KKyAgICAgICAgVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSBh
bG1vc3QgYWxsIHRoZSBhcmd1bWVudCBpcyBJbnQzMiBpbiBAdG9MZW5ndGggLT4gQHRvSW50ZWdl
ciAtPiBAdHJ1bmMgY2FzZS4KKyAgICAgICAgSW4gc3VjaCBjYXNlcywgd2UgY2FuIGVsaW1pbmF0
ZSB0cnVuYygpIGNhbGwuCisKKyAgICAgICAgQXMgYSBib251cywgdG8gc3BlZWQgdXAgTWF0aC50
cnVuYyBvcGVyYXRpb24sIHdlIHVzZSB4ODYgU1NFIHJvdW5kIGFuZCBmcmludHogaW4gQVJNNjQg
Zm9yIEFyaXRoUm91bmQuCisgICAgICAgIEluIERGRywgd2UgZW1pdCB0aGVzZSBpbnN0cnVjdGlv
bnMuIEluIEZUTCwgd2UgdXNlIFBhdGNocG9pbnQgdG8gZW1pdCB0aGVzZSBpbnN0cnVjdGlvbnMg
dG8gYXZvaWQgYWRkaW5nIGEgbmV3IEIzIElSLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6cm91
bmRUb3dhcmRaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
cm91bmRUb3dhcmRaZXJvRmxvYXQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnJvdW5kVG93YXJk
WmVyb0RvdWJsZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJvdW5kVG93YXJkWmVyb0RvdWJsZSk6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyU0g0Ojpyb3VuZFRvd2FyZFplcm9Eb3VibGUpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6cm91bmRUb3dhcmRaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnJvdW5kVG93YXJkWmVyb0Zsb2F0KToKKyAgICAgICAg
KiBidWlsdGlucy9HbG9iYWxPYmplY3QuanM6CisgICAgICAgICh0b0ludGVnZXIpOgorICAgICAg
ICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgICogZGZn
L0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAg
ICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAg
ICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlND
OjpERkc6OkdyYXBoOjpyb3VuZFNob3VsZFNwZWN1bGF0ZUludDMyKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmFyaXRoTm9kZUZsYWdzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNIZWFwUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6aGFzQXJpdGhSb3VuZGluZ01vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2Rl
VHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0
ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhSb3VuZGluZyk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9G
VExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAg
ICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVBcml0aFRydW5jKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ1bmNUaHVua0dlbmVyYXRvcik6CisgICAgICAgICog
aml0L1RodW5rR2VuZXJhdG9ycy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TWF0aE9i
amVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTWF0aE9iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjp0aHVua0dlbmVyYXRvckZv
ckludHJpbnNpYyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL21hdGgtcm91bmRpbmctaW5maW5p
dHkuanM6CisgICAgICAgICh0ZXN0VHJ1bmMpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9tYXRo
LXJvdW5kaW5nLW5hbi5qczoKKyAgICAgICAgKHRlc3RUcnVuYyk6CisgICAgICAgICogdGVzdHMv
c3RyZXNzL21hdGgtcm91bmRpbmctbmVnYXRpdmUtemVyby5qczoKKyAgICAgICAgKHRlc3RUcnVu
Yyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL21hdGgtdHJ1bmMtYXJpdGgtcm91bmRpbmctbW9k
ZS5qczogQWRkZWQuCisgICAgICAgIChmaXJzdENhcmVBYm91dFplcm9TZWNvbmREb2VzTm90KToK
KyAgICAgICAgKGZpcnN0RG9Ob3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lcyk6CisgICAgICAgICh3
YXJtdXApOgorICAgICAgICAodmVyaWZ5TmVnYXRpdmVaZXJvSXNQcmVzZXJ2ZWQpOgorICAgICAg
ICAqIHRlc3RzL3N0cmVzcy9tYXRoLXRydW5jLWJhc2ljcy5qczogQWRkZWQuCisgICAgICAgICht
YXRoVHJ1bmNPbkludGVnZXJzKToKKyAgICAgICAgKG1hdGhUcnVuY09uRG91Ymxlcyk6CisgICAg
ICAgIChtYXRoVHJ1bmNPbkJvb2xlYW5zKToKKyAgICAgICAgKHVzZWxlc3NNYXRoVHJ1bmMpOgor
ICAgICAgICAobWF0aFRydW5jV2l0aE92ZXJmbG93KToKKyAgICAgICAgKG1hdGhUcnVuY0NvbnN1
bWVkQXNEb3VibGUpOgorICAgICAgICAobWF0aFRydW5jRG9lc05vdENhcmVBYm91dE1pbnVzWmVy
byk6CisgICAgICAgIChtYXRoVHJ1bmNOb0FyZ3VtZW50cyk6CisgICAgICAgIChtYXRoVHJ1bmNU
b29NYW55QXJndW1lbnRzKToKKyAgICAgICAgKHRlc3RNYXRoVHJ1bmNPbkNvbnN0YW50cyk6Cisg
ICAgICAgIChtYXRoVHJ1bmNTdHJ1Y3RUcmFuc2l0aW9uKToKKyAgICAgICAgKE1hdGgudHJ1bmMp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9tYXRoLXRydW5jLXNob3VsZC1iZS10cnVuY2F0ZS5q
czogQWRkZWQuCisgICAgICAgIChtYXRoVHJ1bmMpOgorCisyMDE2LTAzLTMxICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCiAgICAgICAgIEZhaWxzIHRvIGJ1aWxkIGlu
IExpbnV4IC8gUG93ZXJQQyBkdWUgdG8gZGlmZmVyZW50IHVjb250ZXh0X3QgZGVmaW5pdGlvbgog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDE1CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0LmgKaW5kZXggZjYxOTA5NmZjMjE5YWM0ZDc1NjY3YjRhNmIxMTdjOWViZWMzZmY1YS4u
ZGU3ZTBlNGMyMjk0MTRjODFkZDhjMGNkYWJhZDBkMGIwYzE2MzE1OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAg
LTE1MDAsNiArMTUwMCwxNiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI8QVJNNjRBc3NlbWJsZXIsIE1hY3JvQQogICAgICAgICBtX2Fz
c2VtYmxlci5mcmludG08MzI+KGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCByb3VuZFRv
d2FyZFplcm9Eb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5mcmludHo8NjQ+KGRlc3QsIHNyYyk7CisgICAgfQorCisg
ICAgdm9pZCByb3VuZFRvd2FyZFplcm9GbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmZyaW50ejwzMj4oZGVzdCwgc3Jj
KTsKKyAgICB9CisKICAgICAvLyBDb252ZXJ0ICdzcmMnIHRvIGFuIGludGVnZXIsIGFuZCBwbGFj
ZXMgdGhlIHJlc3VsdGluZyAnZGVzdCcuCiAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVw
cmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNoLgogICAgIC8vIE1heSBhbHNvIGJy
YW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oCmluZGV4IDNiYzg1YmNlOTAxNDk2ZmRmZDcxZmZjNjEyNWUxMzI2NDI3OGJhZjMuLmQy
MjU2ZTFmNjg5MzlhMjQwZTE4ZWRiOWI3ZmM1OTRlZTBhODhhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0x
MDg0LDYgKzEwODQsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyPEFSTXY3QXNzZW1ibGVyLCBNYWNyb0EKICAgICAgICAgQ1JBU0go
KTsKICAgICB9CiAKKyAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgcm91bmRUb3dhcmRa
ZXJvRG91YmxlKEZQUmVnaXN0ZXJJRCwgRlBSZWdpc3RlcklEKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpKTsKKyAgICAgICAgQ1JBU0goKTsK
KyAgICB9CisKICAgICB2b2lkIGNvbnZlcnRJbnQzMlRvRG91YmxlKFJlZ2lzdGVySUQgc3JjLCBG
UFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnZtb3YoZnBUZW1w
UmVnaXN0ZXIsIHNyYywgc3JjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IDdjNGJkMDgwZGYxMzQzYjhlYWVkMGY1
MDIyNGQyYTJhOTliZGU5OTYuLjI3YTE4NDJmMjFmOWVlZjYxYWVjMDc1NWZiNGRjNzNjNTlmNmIx
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlck1JUFMuaApAQCAtNjU5LDYgKzY1OSwxMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlck1J
UFMgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxNSVBTQXNzZW1ibGVyLCBNYWNyb0Fz
cwogICAgICAgICBDUkFTSCgpOwogICAgIH0KIAorICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0gg
dm9pZCByb3VuZFRvd2FyZFplcm9Eb3VibGUoRlBSZWdpc3RlcklELCBGUFJlZ2lzdGVySUQpCisg
ICAgeworICAgICAgICBBU1NFUlQoIXN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkpOwor
ICAgICAgICBDUkFTSCgpOworICAgIH0KKwogICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIGNvbnZl
cnRpYmxlTG9hZFB0cihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIENvbnZlcnRpYmxlTG9hZExhYmVsIHJlc3VsdCh0aGlzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAppbmRleCA3NTc1
NjA5NWI4MDAzOTBkZGE5ZWM3ZGU4MzE5OTAyNTdkNjEzYmY2Li41M2U3MWNmYTNjNzY3N2NiYWIx
NTQ2ZjkzZTlkZTNlY2IyMWU1ZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCkBAIC0xNTg3LDYgKzE1ODcsMTIgQEAgY2xh
c3MgTWFjcm9Bc3NlbWJsZXJTSDQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxTSDRB
c3NlbWJsZXIsIE1hY3JvQXNzZW0KICAgICAgICAgQ1JBU0goKTsKICAgICB9CiAKKyAgICBOT19S
RVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgcm91bmRUb3dhcmRaZXJvRG91YmxlKEZQUmVnaXN0ZXJJ
RCwgRlBSZWdpc3RlcklEKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFzdXBwb3J0c0Zsb2F0aW5n
UG9pbnRSb3VuZGluZygpKTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICB9CisKICAgICBKdW1wIGJy
YW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJ
bW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIFJlZ2lzdGVySUQg
YWRkcmVzc1RlbXBSZWdpc3RlciA9IGNsYWltU2NyYXRjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCmlu
ZGV4IDQwYTcwMGMyOTQwY2UwNjYwMDViZjE1Y2ZlM2UyMDYwMWFkNTUyODAuLmE2N2NmZDA1ZTg2
ODc0YmVlNTRiZDQ3MWRiNGQ0NmY0ZmVmMGQxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTcz
NSw2ICs3MzUsMjYgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxYODZBc3NlbWJsZXIsIE1hY3IKICAgICAgICAgbV9hc3NlbWJs
ZXIucm91bmRzc19tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZHN0LCBYODZBc3NlbWJsZXI6OlJv
dW5kaW5nVHlwZTo6VG93YXJkTmVnYXRpdmVJbmZpbml0aSk7CiAgICAgfQogCisgICAgdm9pZCBy
b3VuZFRvd2FyZFplcm9Eb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnJvdW5kc2RfcnIoc3JjLCBkc3QsIFg4NkFzc2Vt
Ymxlcjo6Um91bmRpbmdUeXBlOjpUb3dhcmRaZXJvKTsKKyAgICB9CisKKyAgICB2b2lkIHJvdW5k
VG93YXJkWmVyb0RvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnJvdW5kc2RfbXIoc3JjLm9mZnNldCwgc3JjLmJhc2UsIGRzdCwg
WDg2QXNzZW1ibGVyOjpSb3VuZGluZ1R5cGU6OlRvd2FyZFplcm8pOworICAgIH0KKworICAgIHZv
aWQgcm91bmRUb3dhcmRaZXJvRmxvYXQoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnJvdW5kc3NfcnIoc3JjLCBkc3QsIFg4NkFz
c2VtYmxlcjo6Um91bmRpbmdUeXBlOjpUb3dhcmRaZXJvKTsKKyAgICB9CisKKyAgICB2b2lkIHJv
dW5kVG93YXJkWmVyb0Zsb2F0KEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIucm91bmRzc19tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZHN0
LCBYODZBc3NlbWJsZXI6OlJvdW5kaW5nVHlwZTo6VG93YXJkWmVybyk7CisgICAgfQorCiAgICAg
Ly8gTWVtb3J5IGFjY2VzcyBvcGVyYXRpb25zOgogICAgIC8vCiAgICAgLy8gTG9hZHMgYXJlIG9m
IHRoZSBmb3JtIGxvYWQoYWRkcmVzcywgZGVzdGluYXRpb24pIGFuZCBzdG9yZXMgb2YgdGhlIGZv
cm0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9iYWxPYmpl
Y3QuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCmlu
ZGV4IGRiNTNjMzk3YmJmNTRjMGQ1MGQ2ZDA0MTRlZGM4MjNkMzM4NDVkMzYuLjViY2JjMjI2ZDJm
NTI2ZDkxYzNkZTg5OWYxYmJjYTk1NzM5ZTY3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9HbG9iYWxPYmplY3QuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwpAQCAtMzQsMTEgKzM0LDcgQEAgZnVuY3Rpb24g
dG9JbnRlZ2VyKHRhcmdldCkKICAgICAvLyBpc05hTihudW1iZXJWYWx1ZSkKICAgICBpZiAobnVt
YmVyVmFsdWUgIT09IG51bWJlclZhbHVlKQogICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChu
dW1iZXJWYWx1ZSA9PT0gMCB8fCAhQGlzRmluaXRlKG51bWJlclZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIG51bWJlclZhbHVlOwotCi0gICAgcmV0dXJuIChudW1iZXJWYWx1ZSA+IDAgPyAxIDogLTEp
ICogQGZsb29yKEBhYnMobnVtYmVyVmFsdWUpKTsKKyAgICByZXR1cm4gQHRydW5jKG51bWJlclZh
bHVlKTsKIH0KIAogZnVuY3Rpb24gdG9MZW5ndGgodGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmlu
ZGV4IDAyNzQ4MjBjODZlNDhhODAwYWUzM2I3NTdlZjY4NDI5ZTNlYTlhNDUuLjM1YjdkNTI1YjMx
YTIxODRjYzVkMWY2Y2E3YmQ0ZmJmYWY0MGVhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTg1
MCw3ICs4NTAsOCBAQAogCiAgICAgY2FzZSBBcml0aFJvdW5kOgogICAgIGNhc2UgQXJpdGhGbG9v
cjoKLSAgICBjYXNlIEFyaXRoQ2VpbDogeworICAgIGNhc2UgQXJpdGhDZWlsOgorICAgIGNhc2Ug
QXJpdGhUcnVuYzogewogICAgICAgICBKU1ZhbHVlIG9wZXJhbmQgPSBmb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBpZiAob3BlcmFuZCAmJiBvcGVyYW5kLmlzTnVtYmVy
KCkpIHsKICAgICAgICAgICAgIGRvdWJsZSByb3VuZGVkVmFsdWUgPSAwOwpAQCAtODU4LDkgKzg1
OSwxMSBAQAogICAgICAgICAgICAgICAgIHJvdW5kZWRWYWx1ZSA9IGpzUm91bmQob3BlcmFuZC5h
c051bWJlcigpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gQXJpdGhGbG9v
cikKICAgICAgICAgICAgICAgICByb3VuZGVkVmFsdWUgPSBmbG9vcihvcGVyYW5kLmFzTnVtYmVy
KCkpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9w
KCkgPT0gQXJpdGhDZWlsKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gQXJp
dGhDZWlsKQogICAgICAgICAgICAgICAgIHJvdW5kZWRWYWx1ZSA9IGNlaWwob3BlcmFuZC5hc051
bWJlcigpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVChub2Rl
LT5vcCgpID09IEFyaXRoVHJ1bmMpOworICAgICAgICAgICAgICAgIHJvdW5kZWRWYWx1ZSA9IHRy
dW5jKG9wZXJhbmQuYXNOdW1iZXIoKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChwcm9kdWNlc0ludGVnZXIobm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggYTZhODdl
NTJhMmE1ODU2Y2FkYjEzODlkODlkYWM5NDNjMTJmNWYxMi4uNjcxNjY4Nzc4OGQwNjUwNGUyZWQy
OGJkZjliMmJiMTk2MjQ0YjYwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTIyMDMsNyArMjIwMyw4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFu
ZCwgSW50cmluCiAgICAgICAgIAogICAgIGNhc2UgUm91bmRJbnRyaW5zaWM6CiAgICAgY2FzZSBG
bG9vckludHJpbnNpYzoKLSAgICBjYXNlIENlaWxJbnRyaW5zaWM6IHsKKyAgICBjYXNlIENlaWxJ
bnRyaW5zaWM6CisgICAgY2FzZSBUcnVuY0ludHJpbnNpYzogewogICAgICAgICBpZiAoYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgPT0gMSkgewogICAgICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7
CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dy
YXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2NvbnN0YW50TmFOKSkpOwpAQCAtMjIxNyw5ICsyMjE4
LDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2Fs
bGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluCiAgICAgICAgICAgICAgICAgb3AgPSBBcml0
aFJvdW5kOwogICAgICAgICAgICAgZWxzZSBpZiAoaW50cmluc2ljID09IEZsb29ySW50cmluc2lj
KQogICAgICAgICAgICAgICAgIG9wID0gQXJpdGhGbG9vcjsKLSAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgIEFTU0VSVChpbnRyaW5zaWMgPT0gQ2VpbEludHJpbnNpYyk7CisgICAg
ICAgICAgICBlbHNlIGlmIChpbnRyaW5zaWMgPT0gQ2VpbEludHJpbnNpYykKICAgICAgICAgICAg
ICAgICBvcCA9IEFyaXRoQ2VpbDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IEFTU0VSVChpbnRyaW5zaWMgPT0gVHJ1bmNJbnRyaW5zaWMpOworICAgICAgICAgICAgICAgIG9w
ID0gQXJpdGhUcnVuYzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5vZGUqIHJvdW5kTm9k
ZSA9IGFkZFRvR3JhcGgob3AsIE9wSW5mbygwKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBvcGVyYW5k
KTsKICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIHJvdW5k
Tm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDAy
OGIyOTg1YjRlYmRhOTA2NGUzMDM0N2Q2MWI1ZjM3ODc5ZGY2OTMuLjZhNGVkYTJlZjg5MTY4MGU1
ZGZiM2Y0NGQxZjQwNWVjZGFjOTQ0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCkBAIC0zMDUsNiArMzA1LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICBjYXNlIEFyaXRoUm91bmQ6CiAgICAgY2FzZSBBcml0aEZsb29yOgogICAgIGNhc2UgQXJp
dGhDZWlsOgorICAgIGNhc2UgQXJpdGhUcnVuYzoKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2Rl
LCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KG5vZGUtPmFyaXRoUm91bmRpbmdNb2RlKCkpKSk7CiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmlu
ZGV4IDA1NjRkMWZiNTU0NGQ5ZDk5NTY1MzIxMTdhOTE0OGU4NjdiMTZiZTkuLmYzOGI5Zjk5Zjgw
ZmE0NjVkYWQzMTQ1ZGI5ZWVlZDM1YWNjNTk3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKQEAgLTkwLDYgKzkwLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgIGNhc2UgQXJpdGhSb3VuZDoKICAgICBjYXNlIEFyaXRoRmxvb3I6
CiAgICAgY2FzZSBBcml0aENlaWw6CisgICAgY2FzZSBBcml0aFRydW5jOgogICAgIGNhc2UgQXJp
dGhGUm91bmQ6CiAgICAgY2FzZSBBcml0aFNpbjoKICAgICBjYXNlIEFyaXRoQ29zOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggNjFkMTk0NjJhMWFk
NWI5NzA2ZTgxNjc3Y2RlYjFlODZhYjhkY2EzNC4uOTYxMmUxOGQwNjFjNWM1MDkxNzM1OTFiZGU0
ZDdjZDdlZjJmMzE3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCkBAIC0zNjUsNyArMzY1LDggQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAKICAgICAgICAgY2FzZSBBcml0aFJvdW5kOgogICAgICAgICBjYXNlIEFyaXRoRmxvb3I6
Ci0gICAgICAgIGNhc2UgQXJpdGhDZWlsOiB7CisgICAgICAgIGNhc2UgQXJpdGhDZWlsOgorICAg
ICAgICBjYXNlIEFyaXRoVHJ1bmM6IHsKICAgICAgICAgICAgIGlmIChtX2dyYXBoLnVuYXJ5QXJp
dGhTaG91bGRTcGVjdWxhdGVJbnQzMihub2RlLCBGaXh1cFBhc3MpKSB7CiAgICAgICAgICAgICAg
ICAgZml4SW50T3JCb29sZWFuRWRnZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAg
aW5zZXJ0Q2hlY2s8SW50MzJVc2U+KG1faW5kZXhJbkJsb2NrLCBub2RlLT5jaGlsZDEoKS5ub2Rl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IGJiZDQ2ZWFkYTEwMWU3
ZTM4M2I2ZGNjMjUwNTc4MjE3YjQyODVlMDEuLjQ2N2RiMGVkOWY3NTdiZGVlZDZiMGU1ZWIyODZj
MThmZTdmYzhlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTMxNiw3
ICszMTYsNyBAQCBjbGFzcyBHcmFwaCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5uYWJsZSB7CiAKICAg
ICBib29sIHJvdW5kU2hvdWxkU3BlY3VsYXRlSW50MzIoTm9kZSogYXJpdGhSb3VuZCwgUHJlZGlj
dGlvblBhc3MgcGFzcykKICAgICB7Ci0gICAgICAgIEFTU0VSVChhcml0aFJvdW5kLT5vcCgpID09
IEFyaXRoUm91bmQgfHwgYXJpdGhSb3VuZC0+b3AoKSA9PSBBcml0aEZsb29yIHx8IGFyaXRoUm91
bmQtPm9wKCkgPT0gQXJpdGhDZWlsKTsKKyAgICAgICAgQVNTRVJUKGFyaXRoUm91bmQtPm9wKCkg
PT0gQXJpdGhSb3VuZCB8fCBhcml0aFJvdW5kLT5vcCgpID09IEFyaXRoRmxvb3IgfHwgYXJpdGhS
b3VuZC0+b3AoKSA9PSBBcml0aENlaWwgfHwgYXJpdGhSb3VuZC0+b3AoKSA9PSBBcml0aFRydW5j
KTsKICAgICAgICAgcmV0dXJuIGFyaXRoUm91bmQtPmNhblNwZWN1bGF0ZUludDMyKHBhc3MpICYm
ICFoYXNFeGl0U2l0ZShhcml0aFJvdW5kLT5vcmlnaW4uc2VtYW50aWMsIE92ZXJmbG93KSAmJiAh
aGFzRXhpdFNpdGUoYXJpdGhSb3VuZC0+b3JpZ2luLnNlbWFudGljLCBOZWdhdGl2ZVplcm8pOwog
ICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggOWU4Nzk3M2Ji
NzBmNmE1MjA2ODZmNzUzZDY0YjdmNGQ1Zjk5YzA2OC4uMjhlNTk5NTY1NWQwOThhYTJiM2NkNzBk
ZWVlZGExNzYzZTQ2ZmJmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTk0
Myw3ICs5NDMsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgTm9kZUZsYWdzIGFyaXRoTm9kZUZsYWdz
KCkKICAgICB7CiAgICAgICAgIE5vZGVGbGFncyByZXN1bHQgPSBtX2ZsYWdzICYgTm9kZUFyaXRo
RmxhZ3NNYXNrOwotICAgICAgICBpZiAob3AoKSA9PSBBcml0aE11bCB8fCBvcCgpID09IEFyaXRo
RGl2IHx8IG9wKCkgPT0gQXJpdGhNb2QgfHwgb3AoKSA9PSBBcml0aE5lZ2F0ZSB8fCBvcCgpID09
IEFyaXRoUG93IHx8IG9wKCkgPT0gQXJpdGhSb3VuZCB8fCBvcCgpID09IEFyaXRoRmxvb3IgfHwg
b3AoKSA9PSBBcml0aENlaWwgfHwgb3AoKSA9PSBEb3VibGVBc0ludDMyKQorICAgICAgICBpZiAo
b3AoKSA9PSBBcml0aE11bCB8fCBvcCgpID09IEFyaXRoRGl2IHx8IG9wKCkgPT0gQXJpdGhNb2Qg
fHwgb3AoKSA9PSBBcml0aE5lZ2F0ZSB8fCBvcCgpID09IEFyaXRoUG93IHx8IG9wKCkgPT0gQXJp
dGhSb3VuZCB8fCBvcCgpID09IEFyaXRoRmxvb3IgfHwgb3AoKSA9PSBBcml0aENlaWwgfHwgb3Ao
KSA9PSBBcml0aFRydW5jIHx8IG9wKCkgPT0gRG91YmxlQXNJbnQzMikKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQgJiB+Tm9kZUJ5dGVjb2RlTmVlZHNO
ZWdaZXJvOwogICAgIH0KQEAgLTEzNTEsNiArMTM1MSw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAg
ICAgY2FzZSBBcml0aFJvdW5kOgogICAgICAgICBjYXNlIEFyaXRoRmxvb3I6CiAgICAgICAgIGNh
c2UgQXJpdGhDZWlsOgorICAgICAgICBjYXNlIEFyaXRoVHJ1bmM6CiAgICAgICAgIGNhc2UgR2V0
RGlyZWN0UG5hbWU6CiAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlk
Rmx1c2g6CkBAIC0xNzMzLDcgKzE3MzQsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICBib29sIGhh
c0FyaXRoUm91bmRpbmdNb2RlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBvcCgpID09IEFyaXRo
Um91bmQgfHwgb3AoKSA9PSBBcml0aEZsb29yIHx8IG9wKCkgPT0gQXJpdGhDZWlsOworICAgICAg
ICByZXR1cm4gb3AoKSA9PSBBcml0aFJvdW5kIHx8IG9wKCkgPT0gQXJpdGhGbG9vciB8fCBvcCgp
ID09IEFyaXRoQ2VpbCB8fCBvcCgpID09IEFyaXRoVHJ1bmM7CiAgICAgfQogCiAgICAgQXJpdGg6
OlJvdW5kaW5nTW9kZSBhcml0aFJvdW5kaW5nTW9kZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKaW5kZXggOGUyYTEzM2MyNmE0NWFjYzIzN2Y4MjNkZGQyNzk0Y2ZlMGJi
YWM5Ny4uZjFlMWE1NmYxOWRmYzFmZjIxMzQ1ZGUwZjkwOTE4MDA1ZmQwZjYyOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMTU4LDYgKzE1OCw3IEBACiAgICAg
bWFjcm8oQXJpdGhSb3VuZCwgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIG1hY3JvKEFyaXRoRmxv
b3IsIE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICBtYWNybyhBcml0aENlaWwsIE5vZGVSZXN1bHRO
dW1iZXIpIFwKKyAgICBtYWNybyhBcml0aFRydW5jLCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAgICAg
bWFjcm8oQXJpdGhTcXJ0LCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAgICAgbWFjcm8oQXJpdGhTaW4s
IE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICBtYWNybyhBcml0aENvcywgTm9kZVJlc3VsdE51bWJl
cikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA4M2ZhMDhkNGFlNGU2ZjZhMmY1ZjNmZGYx
YmY0NmQ2MjM0NjgyNWJmLi5kZjRkNTA3Y2EyZDhlNGExMzk4MGI1NWRjMTk3NjNhZDQ1OGViZDBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMzg5LDcgKzM4OSw4IEBAIGNsYXNzIFByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKIAogICAgICAgICBjYXNlIEFy
aXRoUm91bmQ6CiAgICAgICAgIGNhc2UgQXJpdGhGbG9vcjoKLSAgICAgICAgY2FzZSBBcml0aENl
aWw6IHsKKyAgICAgICAgY2FzZSBBcml0aENlaWw6CisgICAgICAgIGNhc2UgQXJpdGhUcnVuYzog
ewogICAgICAgICAgICAgaWYgKGlzSW50MzJPckJvb2xlYW5TcGVjdWxhdGlvbihub2RlLT5nZXRI
ZWFwUHJlZGljdGlvbigpKSAmJiBtX2dyYXBoLnJvdW5kU2hvdWxkU3BlY3VsYXRlSW50MzIobm9k
ZSwgbV9wYXNzKSkKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3Bl
Y0ludDMyKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYTI1MjFkYjFiNTM3MDRjMWUwMDQ2NjJiMDZiZGU5ZWQ5
NDFiYzgxZS4uODA3N2I4NTkwMThiNGZmMmFkYmQ3MmIxMWM0MTE2NGZjYjU1MmU0OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTE4Niw2ICsx
ODYsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBBcml0aFJvdW5kOgogICAgIGNhc2UgQXJp
dGhGbG9vcjoKICAgICBjYXNlIEFyaXRoQ2VpbDoKKyAgICBjYXNlIEFyaXRoVHJ1bmM6CiAgICAg
Y2FzZSBBcml0aFNpbjoKICAgICBjYXNlIEFyaXRoQ29zOgogICAgIGNhc2UgQXJpdGhMb2c6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4
IGM1N2M1NmRhYTFmZTM3MGEzOWNlYmVkY2Y5MmIyZjQxZDMyOWFlOTMuLjNhZDAzZGNiYTIzYzk2
NjZkZTZkODM5YjI2NjFiZDMzZjZkOTIwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC00NTA1LDYgKzQ1MDUsMTQgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoUm91bmRpbmcoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgQXJpdGhUcnVuYzogeworICAg
ICAgICAgICAgRlBSVGVtcG9yYXJ5IHJvdW5kZWQodGhpcyk7CisgICAgICAgICAgICBGUFJSZWcg
cmVzdWx0RlBSID0gcm91bmRlZC5mcHIoKTsKKyAgICAgICAgICAgIG1faml0LnJvdW5kVG93YXJk
WmVyb0RvdWJsZSh2YWx1ZUZQUiwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAgIHNldFJlc3VsdChy
ZXN1bHRGUFIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IH0KQEAgLTQ1MTYsOSArNDUyNCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJp
dGhSb3VuZGluZyhOb2RlKiBub2RlKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihqc1JvdW5k
LCByZXN1bHRGUFIsIHZhbHVlRlBSKTsKICAgICAgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBB
cml0aEZsb29yKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihmbG9vciwgcmVzdWx0RlBSLCB2
YWx1ZUZQUik7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkg
PT0gQXJpdGhDZWlsKTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBBcml0aENlaWwp
CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKGNlaWwsIHJlc3VsdEZQUiwgdmFsdWVGUFIpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IEFyaXRoVHJ1
bmMpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbih0cnVuYywgcmVzdWx0RlBSLCB2YWx1ZUZQ
Uik7CiAgICAgICAgIH0KICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAg
c2V0UmVzdWx0KHJlc3VsdEZQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKaW5kZXggNDU4MTNhNDExODg5NTY2YzQ3OGFkNjRkMDIyYzEzOGFlYTBi
NzlmZS4uYTZmOTBjN2QwNzZmNzUyZjZkMzZmN2FmZTc2ZTRlNmM2YjU4ZWE3NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMjM3Myw4ICsy
MzczLDYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZUFyaXRoTW9k
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVBcml0aFBvdyhOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlQXJpdGhSb3VuZGluZyhOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlQXJpdGhGbG9vcihOb2Rl
Kik7Ci0gICAgdm9pZCBjb21waWxlQXJpdGhDZWlsKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVB
cml0aFJhbmRvbShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhTcXJ0KE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVBcml0aExvZyhOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBkN2NmMDM3YTk1MGVi
ZDU4NjM1ZGFlZGZjNGU3N2ViNzkyNGJjYTg2Li41MWYzZTQ3NDc5MGZiYmIxNDg1NTdiOGQ1OWM0
NTYyMWZkNTkwZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTIzMDYsNiArMjMwNiw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEFyaXRoUm91bmQ6CiAgICAg
Y2FzZSBBcml0aEZsb29yOgogICAgIGNhc2UgQXJpdGhDZWlsOgorICAgIGNhc2UgQXJpdGhUcnVu
YzoKICAgICAgICAgY29tcGlsZUFyaXRoUm91bmRpbmcobm9kZSk7CiAgICAgICAgIGJyZWFrOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAppbmRleCA4YTE4MTk0YzVkMDk4NDFiMmVmMTIyNGFhZGMxMzhmM2ZkYjg3NWY5Li5jNGZkZTlm
YjA0MTIxYjY5Y2UxNDQxZmE1MzJhNzgwMTBlZjNmZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTI0NDQsNiArMjQ0NCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEFy
aXRoUm91bmQ6CiAgICAgY2FzZSBBcml0aEZsb29yOgogICAgIGNhc2UgQXJpdGhDZWlsOgorICAg
IGNhc2UgQXJpdGhUcnVuYzoKICAgICAgICAgY29tcGlsZUFyaXRoUm91bmRpbmcobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKaW5kZXggNzFhMmZiMmQzNDEwYTUzNWEyYjdjN2RiMGMxY2ZhNzdmYjM3ZGI2OS4u
MmM4Mzg0ODkyY2VkODRmYTQzOTIzMWYwMjgzYTI3YTZiZWU5NGQ4NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtOTksNiArOTksNyBAQCBp
bmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEFy
aXRoUm91bmQ6CiAgICAgY2FzZSBBcml0aEZsb29yOgogICAgIGNhc2UgQXJpdGhDZWlsOgorICAg
IGNhc2UgQXJpdGhUcnVuYzoKICAgICBjYXNlIEFyaXRoU3FydDoKICAgICBjYXNlIEFyaXRoTG9n
OgogICAgIGNhc2UgQXJpdGhGUm91bmQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKaW5kZXggNjU0YmQ2ZjkxNmQ5YjhjY2MwNzNiNzQ3MzQ4YmRkMTdj
OWEwNzlhZi4uMjEyZTFkNGMyZjAxNWZjY2U1N2M2ODc0YWFmZWVmN2NhM2QzMzA0OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNTMyLDYg
KzUzMiw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgQXJpdGhDZWlsOgog
ICAgICAgICAgICAgY29tcGlsZUFyaXRoQ2VpbCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQXJpdGhUcnVuYzoKKyAgICAgICAgICAgIGNvbXBpbGVBcml0aFRydW5jKCk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcml0aFNxcnQ6CiAgICAgICAgICAgICBj
b21waWxlQXJpdGhTcXJ0KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE5NzYsNiArMTk3OSwy
NiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgc2V0RG91YmxlKGludGVnZXJW
YWx1ZSk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlQXJpdGhUcnVuYygpCisgICAgeworICAg
ICAgICBMVmFsdWUgdmFsdWUgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IExWYWx1ZSByZXN1bHQ7CisgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6c3VwcG9ydHNGbG9h
dGluZ1BvaW50Um91bmRpbmcoKSkgeworICAgICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRj
aHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChEb3VibGUpOworICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kU29tZVJlZ2lzdGVyKHZhbHVlKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPnNl
dEdlbmVyYXRvcihbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIGppdC5yb3VuZFRvd2FyZFplcm9E
b3VibGUocGFyYW1zWzFdLmZwcigpLCBwYXJhbXNbMF0uZnByKCkpOworICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICByZXN1bHQgPSBwYXRjaHBvaW50OworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHJlc3VsdCA9IHZtQ2FsbChtX291dC5kb3VibGVUeXBlLCBtX291dC5vcGVyYXRpb24o
dHJ1bmMpLCB2YWx1ZSk7CisKKyAgICAgICAgaWYgKHByb2R1Y2VzSW50ZWdlcihtX25vZGUtPmFy
aXRoUm91bmRpbmdNb2RlKCkpKQorICAgICAgICAgICAgc2V0SW50MzIoY29udmVydERvdWJsZVRv
SW50MzIocmVzdWx0LCBzaG91bGRDaGVja05lZ2F0aXZlWmVybyhtX25vZGUtPmFyaXRoUm91bmRp
bmdNb2RlKCkpKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNldERvdWJsZShyZXN1bHQp
OworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUFyaXRoU3FydCgpIHsgc2V0RG91YmxlKG1fb3V0
LmRvdWJsZVNxcnQobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7IH0KIAogICAgIHZvaWQg
Y29tcGlsZUFyaXRoTG9nKCkgeyBzZXREb3VibGUobV9vdXQuZG91YmxlTG9nKGxvd0RvdWJsZSht
X25vZGUtPmNoaWxkMSgpKSkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5r
R2VuZXJhdG9ycy5jcHAKaW5kZXggMjVkMDAxNDBjMGI1YTBlN2JmZjhmNjhhMmRlYmU3YzQ0NjY2
MmQ0OS4uYzk5YjkyZTZiMWIxYTkzOTA4ZjRlNGJhYWE0MWIxYWU4MTA3YmE2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtNzQwLDYgKzc0
MCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qIHZtKQog
Ly8gTVNWQyBkb2VzIG5vdCBhY2NlcHQgZmxvb3IsIGV0YywgdG8gYmUgY2FsbGVkIGRpcmVjdGx5
IGZyb20gaW5saW5lIGFzc2VtYmx5LCBzbyB3ZSBuZWVkIHRvIHdyYXAgdGhlc2UgZnVuY3Rpb25z
Lgogc3RhdGljIGRvdWJsZSAoX2NkZWNsICpmbG9vckZ1bmN0aW9uKShkb3VibGUpID0gZmxvb3I7
CiBzdGF0aWMgZG91YmxlIChfY2RlY2wgKmNlaWxGdW5jdGlvbikoZG91YmxlKSA9IGNlaWw7Citz
dGF0aWMgZG91YmxlIChfY2RlY2wgKnRydW5jRnVuY3Rpb24pKGRvdWJsZSkgPSB0cnVuYzsKIHN0
YXRpYyBkb3VibGUgKF9jZGVjbCAqZXhwRnVuY3Rpb24pKGRvdWJsZSkgPSBleHA7CiBzdGF0aWMg
ZG91YmxlIChfY2RlY2wgKmxvZ0Z1bmN0aW9uKShkb3VibGUpID0gbG9nOwogc3RhdGljIGRvdWJs
ZSAoX2NkZWNsICpqc1JvdW5kRnVuY3Rpb24pKGRvdWJsZSkgPSBqc1JvdW5kOwpAQCAtNzcxLDYg
Kzc3Miw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0qIHZt
KQogZGVmaW5lVW5hcnlEb3VibGVPcFdyYXBwZXIobG9nKTsKIGRlZmluZVVuYXJ5RG91YmxlT3BX
cmFwcGVyKGZsb29yKTsKIGRlZmluZVVuYXJ5RG91YmxlT3BXcmFwcGVyKGNlaWwpOworZGVmaW5l
VW5hcnlEb3VibGVPcFdyYXBwZXIodHJ1bmMpOwogCiBzdGF0aWMgY29uc3QgZG91YmxlIG9uZUNv
bnN0YW50ID0gMS4wOwogc3RhdGljIGNvbnN0IGRvdWJsZSBuZWdhdGl2ZUhhbGZDb25zdGFudCA9
IC0wLjU7CkBAIC04NDIsNiArODQ0LDI5IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjZWlsVGh1
bmtHZW5lcmF0b3IoVk0qIHZtKQogICAgIHJldHVybiBqaXQuZmluYWxpemUodm0tPmppdFN0dWJz
LT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJjZWlsIik7CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZiB0cnVuY1RodW5rR2VuZXJhdG9yKFZNKiB2bSkKK3sKKyAgICBTcGVjaWFsaXplZFRodW5r
SklUIGppdCh2bSwgMSk7CisgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcih0cnVuYykgfHwg
IWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLT5qaXRTdHVicy0+Y3RpTmF0
aXZlQ2FsbCh2bSkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vbkludEp1bXA7CisgICAg
aml0LmxvYWRJbnQzMkFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBub25J
bnRKdW1wKTsKKyAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAp
OworICAgIG5vbkludEp1bXAubGluaygmaml0KTsKKyAgICBqaXQubG9hZERvdWJsZUFyZ3VtZW50
KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJl
Z1QwKTsKKyAgICBpZiAoaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkpCisgICAg
ICAgIGppdC5yb3VuZFRvd2FyZFplcm9Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdU
MCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7CisgICAgZWxzZQorICAgICAgICBqaXQu
Y2FsbERvdWJsZVRvRG91YmxlUHJlc2VydmluZ1JldHVybihVbmFyeURvdWJsZU9wV3JhcHBlcih0
cnVuYykpOworCisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVDo6SnVtcExpc3QgZG91YmxlUmVzdWx0
OworICAgIGppdC5icmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMihTcGVjaWFsaXplZFRodW5rSklU
OjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgZG91YmxlUmVzdWx0LCBTcGVj
aWFsaXplZFRodW5rSklUOjpmcFJlZ1QxKTsKKyAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmVnVDApOworICAgIGRvdWJsZVJlc3VsdC5saW5rKCZqaXQpOworICAgIGpp
dC5yZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7CisgICAgcmV0dXJu
IGppdC5maW5hbGl6ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgInRydW5j
Iik7Cit9CisKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiByb3VuZFRodW5rR2VuZXJhdG9yKFZNKiB2
bSkKIHsKICAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAppbmRleCA5ZmI4YWJiNDRlYTIyZGJkODUy
NzU2YTljYjhhOWRiY2VhY2QzNzg5Li44MmQ0N2ZhNDY4N2ZiY2RhOWIzYWE0MjhiMTRkOTAzZjMw
ZDRmODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgK
QEAgLTYzLDYgKzYzLDcgQEAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBwb3dUaHVua0dlbmVyYXRv
cihWTSopOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGltdWxUaHVua0dlbmVyYXRvcihWTSopOwog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJhbmRvbVRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgdHJ1bmNUaHVua0dlbmVyYXRvcihWTSopOwogCiB9CiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCmluZGV4IDZiYjUxODBiNmU3ZGRkN2M1YjZjMWQ1MzMxZDdhZTgyNGQyZTAy
MzIuLjlkZWE3OGMxOTVhNTdhNjQyODRlYmRiY2I5MTdhMDI2ZGRmNzE3NTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMzE1
LDYgKzMxNSw3IEBACiAgICAgbWFjcm8oSW50ZXJuYWxQcm9taXNlKSBcCiAgICAgbWFjcm8oYWJz
KSBcCiAgICAgbWFjcm8oZmxvb3IpIFwKKyAgICBtYWNybyh0cnVuYykgXAogICAgIG1hY3JvKGlz
RmluaXRlKSBcCiAgICAgbWFjcm8oaXNOYU4pIFwKICAgICBtYWNybyhjcmVhdGUpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKaW5kZXggZDhkZTAwNmVhNTU0MWE1
ZWNkN2ZmNDExYTFhMGE2MWY4NWM4NmMzZi4uMDhmZGViNDQ3OTk3MjI1YTcyZTc2MWZjZjk3MzBi
MjM0N2I5YTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
cmluc2ljLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgK
QEAgLTU2LDYgKzU2LDcgQEAgZW51bSBKU19FWFBPUlRfUFJJVkFURSBJbnRyaW5zaWMgewogICAg
IElNdWxJbnRyaW5zaWMsCiAgICAgUmFuZG9tSW50cmluc2ljLAogICAgIEZSb3VuZEludHJpbnNp
YywKKyAgICBUcnVuY0ludHJpbnNpYywKIAogICAgIC8vIEdldHRlciBpbnRyaW5zaWNzLgogICAg
IFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMTc1NTEzZmYxNzhjODI1MmUwMzY0ZTdh
YmJjZDUxN2U2MGFjZWU0Ny4uMDc3MmMxNzY4MTFlNGIxYzU0ZmVmN2FkODE5Yjk4MTZkZDA5ZWJl
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcApAQCAtNTI2LDYgKzUyNiw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZt
KQogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jRmxvb3IgPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDAsIFN0cmluZygpLCBtYXRoUHJvdG9GdW5jRmxvb3IsIEZsb29ySW50cmluc2lj
KTsKICAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lzRmluaXRlID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0lzRmluaXRlKTsKICAgICBKU0Z1
bmN0aW9uKiBwcml2YXRlRnVuY0lzTmFOID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAw
LCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0lzTmFOKTsKKyAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVu
Y1RydW5jID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgbWF0aFBy
b3RvRnVuY1RydW5jLCBUcnVuY0ludHJpbnNpYyk7CiAKICAgICBKU0Z1bmN0aW9uKiBwcml2YXRl
RnVuY0dldFRlbXBsYXRlT2JqZWN0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBT
dHJpbmcoKSwgZ2V0VGVtcGxhdGVPYmplY3QpOwogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5j
VG9MZW5ndGggPSBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIGdsb2JhbE9i
amVjdFRvTGVuZ3RoQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpOwpAQCAtNTYzLDYgKzU2NCw3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+U3RyaW5nUHJpdmF0ZU5hbWUsIHN0cmluZ0NvbnN0cnVj
dG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5hYnNQcml2YXRlTmFtZSwgcHJpdmF0ZUZ1bmNB
YnMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmZsb29yUHJpdmF0ZU5hbWUsIHByaXZhdGVGdW5j
Rmxvb3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnRydW5jUHJpdmF0ZU5hbWUsIHByaXZhdGVG
dW5jVHJ1bmMsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmlzRmluaXRlUHJpdmF0ZU5hbWUsIHBy
aXZhdGVGdW5jSXNGaW5pdGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmlzTmFOUHJpdmF0ZU5h
bWUsIHByaXZhdGVGdW5jSXNOYU4sIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwK
ICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPlByb21pc2VQcml2
YXRlTmFtZSwgcHJvbWlzZUNvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCmlu
ZGV4IDk5N2IwNjQ3ZTU5MzVkNmVhZmM3NmVlYmY0OTgyOWY4MWUyMTRmY2QuLjY2ZDMxYjc0ZDlh
ODc2NzI0YTk3Y2E1MGE5YTYzYTE4Y2M5NjM2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCkBAIC02Nyw3ICs2Nyw2IEBACiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTcXJ0KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVGFuKEV4ZWNTdGF0ZSopOwogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVGFuaChFeGVjU3RhdGUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1RydW5jKEV4ZWNTdGF0ZSop
OwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jSU11bChFeGVjU3Rh
dGUqKTsKIAogfQpAQCAtMTI5LDcgKzEyOCw3IEBAIHZvaWQgTWF0aE9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sICJzcXJ0IiksIDEsIG1hdGhQcm90b0Z1bmNTcXJ0LCBTcXJ0
SW50cmluc2ljLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwg
InRhbiIpLCAxLCBtYXRoUHJvdG9GdW5jVGFuLCBOb0ludHJpbnNpYywgRG9udEVudW0pOwogICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJ0YW5oIiksIDEsIG1hdGhQcm90b0Z1bmNU
YW5oLCBOb0ludHJpbnNpYywgRG9udEVudW0pOwotICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zygmdm0sICJ0cnVuYyIpLCAxLCBtYXRoUHJvdG9GdW5jVHJ1bmMsIE5vSW50cmluc2ljLCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwg
Z2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInRydW5jIiksIDEsIG1h
dGhQcm90b0Z1bmNUcnVuYywgVHJ1bmNJbnRyaW5zaWMsIERvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiaW11bCIpLCAyLCBtYXRoUHJvdG9GdW5jSU11bCwgSU11
bEludHJpbnNpYywgRG9udEVudW0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXRoT2JqZWN0LmgKaW5kZXggOWQxYzE4MWMwZjFlZmFhMjBiMzVmN2U4NWQ4ZGZhZGJmZjQ2
Mzc5Yi4uMWExMzNkNTU0ZGE0NDBhNzVkZDQxNjY3NzZlZTc4ZThkMmIyZGZkZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaApAQCAtNTMsNiArNTMsNyBAQCBj
bGFzcyBNYXRoT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBYnMoRXhlY1N0YXRlKik7CiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNGbG9vcihFeGVjU3RhdGUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1RydW5jKEV4ZWNTdGF0ZSop
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CmluZGV4IDU1NmFhYzQ2MjQyOTdlNTI1MWM1N2VhZWJjZjE4ZGY2ODkyZDE3YzIuLjgyNjRiMTEw
YjMyOTM1ZjMzNDEzZjAzNGQ3NmM2NjNjN2Y3NWFiZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKQEAgLTQ3OSw2ICs0NzksOCBAQCBzdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1
bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgcmV0
dXJuIGZsb29yVGh1bmtHZW5lcmF0b3I7CiAgICAgY2FzZSBDZWlsSW50cmluc2ljOgogICAgICAg
ICByZXR1cm4gY2VpbFRodW5rR2VuZXJhdG9yOworICAgIGNhc2UgVHJ1bmNJbnRyaW5zaWM6Cisg
ICAgICAgIHJldHVybiB0cnVuY1RodW5rR2VuZXJhdG9yOwogICAgIGNhc2UgUm91bmRJbnRyaW5z
aWM6CiAgICAgICAgIHJldHVybiByb3VuZFRodW5rR2VuZXJhdG9yOwogICAgIGNhc2UgRXhwSW50
cmluc2ljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9t
YXRoLXJvdW5kaW5nLWluZmluaXR5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9tYXRoLXJvdW5kaW5nLWluZmluaXR5LmpzCmluZGV4IDIxZTAyMWUwMGJjNjEwODUwZmM0
MjliMzZkNmM0ODFjZGVmN2ZhZDAuLmE5MzUzODAwNDEzMTRmYmYyZDAxMWJlNjAxMzIyMjg0MDgz
MTIwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbWF0
aC1yb3VuZGluZy1pbmZpbml0eS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL21hdGgtcm91bmRpbmctaW5maW5pdHkuanMKQEAgLTIxLDYgKzIxLDEyIEBAIGZ1bmN0
aW9uIHRlc3RDZWlsKHZhbHVlKQogfQogbm9JbmxpbmUodGVzdENlaWwpOwogCitmdW5jdGlvbiB0
ZXN0VHJ1bmModmFsdWUpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1bmModmFsdWUpOworfQorbm9J
bmxpbmUodGVzdFRydW5jKTsKKwogZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgewogICAg
IHNob3VsZEJlKHRlc3RSb3VuZChJbmZpbml0eSksIEluZmluaXR5KTsKICAgICBzaG91bGRCZSh0
ZXN0Um91bmQoLUluZmluaXR5KSwgLUluZmluaXR5KTsKQEAgLTI4LDQgKzM0LDYgQEAgZnVuY3Rp
b24gdGVzdENlaWwodmFsdWUpCiAgICAgc2hvdWxkQmUodGVzdEZsb29yKC1JbmZpbml0eSksIC1J
bmZpbml0eSk7CiAgICAgc2hvdWxkQmUodGVzdENlaWwoSW5maW5pdHkpLCBJbmZpbml0eSk7CiAg
ICAgc2hvdWxkQmUodGVzdENlaWwoLUluZmluaXR5KSwgLUluZmluaXR5KTsKKyAgICBzaG91bGRC
ZSh0ZXN0VHJ1bmMoSW5maW5pdHkpLCBJbmZpbml0eSk7CisgICAgc2hvdWxkQmUodGVzdFRydW5j
KC1JbmZpbml0eSksIC1JbmZpbml0eSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL21hdGgtcm91bmRpbmctbmFuLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXJvdW5kaW5nLW5hbi5qcwppbmRleCBlY2NjZGJjN2Y3
ZDY2OWU1ZTNkODg5ZjE0NTJjOGEzZGNhMTdjYzU4Li5kZTFlMTM0NGEwNmRhMDVlMmFkOGRmNzA1
NTJiNzY4N2NjMjQxYzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL21hdGgtcm91bmRpbmctbmFuLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvbWF0aC1yb3VuZGluZy1uYW4uanMKQEAgLTIxLDggKzIxLDE1IEBAIGZ1bmN0
aW9uIHRlc3RDZWlsKHZhbHVlKQogfQogbm9JbmxpbmUodGVzdENlaWwpOwogCitmdW5jdGlvbiB0
ZXN0VHJ1bmModmFsdWUpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1bmModmFsdWUpOworfQorbm9J
bmxpbmUodGVzdFRydW5jKTsKKwogZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgewogICAg
IHNob3VsZEJlKE51bWJlci5pc05hTih0ZXN0Um91bmQoTmFOKSksIHRydWUpOwogICAgIHNob3Vs
ZEJlKE51bWJlci5pc05hTih0ZXN0Rmxvb3IoTmFOKSksIHRydWUpOwogICAgIHNob3VsZEJlKE51
bWJlci5pc05hTih0ZXN0Q2VpbChOYU4pKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoTnVtYmVyLmlz
TmFOKHRlc3RUcnVuYyhOYU4pKSwgdHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGgtcm91bmRpbmctbmVnYXRpdmUtemVyby5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbWF0aC1yb3VuZGluZy1uZWdhdGl2ZS16
ZXJvLmpzCmluZGV4IGFiYWUyNzg1MGMwMjk5MDIxMzNjNjA5NGQxZDVjMjc5OWJjNTdhYjcuLjFh
NWJhYTI0YmVhNzMzMDNmZDNmZDE1MTNjZmQzNDY2MWUzMmNiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbWF0aC1yb3VuZGluZy1uZWdhdGl2ZS16ZXJv
LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbWF0aC1yb3VuZGlu
Zy1uZWdhdGl2ZS16ZXJvLmpzCkBAIC02Nyw0ICs2NywxMyBAQCBmdW5jdGlvbiB0ZXN0Um91bmRO
b25OZWdhdGl2ZVplcm8yKHZhbHVlKQogICAgIHNob3VsZEJlKDEgLyB0ZXN0Um91bmROb25OZWdh
dGl2ZVplcm8yKDAuMSksIEluZmluaXR5KTsKIH0KIAorZnVuY3Rpb24gdGVzdFRydW5jKHZhbHVl
KQoreworICAgIHJldHVybiBNYXRoLnRydW5jKHZhbHVlKTsKK30KK25vSW5saW5lKHRlc3RUcnVu
Yyk7CiAKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICBzaG91bGRCZSgxIC8g
dGVzdFRydW5jKDAuMCksIEluZmluaXR5KTsKKyAgICBzaG91bGRCZSgxIC8gdGVzdFRydW5jKC0w
LjApLCAtSW5maW5pdHkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9tYXRoLXRydW5jLWFyaXRoLXJvdW5kaW5nLW1vZGUuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGgtdHJ1bmMtYXJpdGgtcm91bmRpbmctbW9kZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kZGZiMWUzOTEzOTc4Y2E1NzA1NjQ2NmU0ODY1ZTc0MDBjOGZhOTI2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRo
LXRydW5jLWFyaXRoLXJvdW5kaW5nLW1vZGUuanMKQEAgLTAsMCArMSw4NSBAQAorZnVuY3Rpb24g
Zmlyc3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lc05vdChhKSB7CisgICAgdmFyIHJlc3VsdEEgPSBN
YXRoLnRydW5jKGEpOworICAgIHZhciByZXN1bHRCID0gTWF0aC50cnVuYyhhKXwwOworICAgIHJl
dHVybiB7IHJlc3VsdEE6cmVzdWx0QSwgcmVzdWx0QjpyZXN1bHRCIH07Cit9Citub0lubGluZShm
aXJzdENhcmVBYm91dFplcm9TZWNvbmREb2VzTm90KTsKKworZnVuY3Rpb24gZmlyc3REb05vdENh
cmVBYm91dFplcm9TZWNvbmREb2VzKGEpIHsKKyAgICB2YXIgcmVzdWx0QSA9IE1hdGgudHJ1bmMo
YSl8MDsKKyAgICB2YXIgcmVzdWx0QiA9IE1hdGgudHJ1bmMoYSk7CisgICAgcmV0dXJuIHsgcmVz
dWx0QTpyZXN1bHRBLCByZXN1bHRCOnJlc3VsdEIgfTsKK30KK25vSW5saW5lKGZpcnN0RG9Ob3RD
YXJlQWJvdXRaZXJvU2Vjb25kRG9lcyk7CisKKy8vIFdhcm11cCB3aXRoIGRvdWJsZXMsIGJ1dCBu
b3RoaW5nIHRoYXQgd291bGQgdHJ1bmMgdG8gLTAgdG8gZW5zdXJlIHdlIG5ldmVyCisvLyBzZWUg
YSBkb3VibGUgYXMgcmVzdWx0LiBUaGUgcmVzdWx0IG11c3QgYmUgaW50ZWdlcnMsIHRoZSBpbnB1
dCBpcyBrZXB0IHRvIHNtYWxsIHZhbHVlcy4KK2Z1bmN0aW9uIHdhcm11cCgpIHsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGZpcnN0Q2FyZUFib3V0WmVyb1Nl
Y29uZERvZXNOb3QoNDIuNiArIGkpOworICAgICAgICBmaXJzdERvTm90Q2FyZUFib3V0WmVyb1Nl
Y29uZERvZXMoNDIuNCArIGkpOworICAgIH0KK30KK3dhcm11cCgpOworCitmdW5jdGlvbiB2ZXJp
ZnlOZWdhdGl2ZVplcm9Jc1ByZXNlcnZlZCgpIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFl
NDsgKytpKSB7CisgICAgICAgIHZhciByZXN1bHQxID0gZmlyc3RDYXJlQWJvdXRaZXJvU2Vjb25k
RG9lc05vdCgtMC4xKTsKKyAgICAgICAgaWYgKDEgLyByZXN1bHQxLnJlc3VsdEEgIT09IC1JbmZp
bml0eSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3RDYXJlQWJv
dXRaZXJvU2Vjb25kRG9lc05vdCgtMC4xKSwgcmVzdWx0QSA9ICIgKyByZXN1bHQxLnJlc3VsdEEp
OworICAgICAgICB9CisgICAgICAgIGlmICgxIC8gcmVzdWx0MS5yZXN1bHRCICE9PSBJbmZpbml0
eSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3RDYXJlQWJvdXRa
ZXJvU2Vjb25kRG9lc05vdCgtMC4xKSwgcmVzdWx0QiA9ICIgKyByZXN1bHQxLnJlc3VsdEIpOwor
ICAgICAgICB9CisgICAgICAgIHZhciByZXN1bHQyID0gZmlyc3REb05vdENhcmVBYm91dFplcm9T
ZWNvbmREb2VzKC0wLjEpOworICAgICAgICBpZiAoMSAvIHJlc3VsdDIucmVzdWx0QSAhPT0gSW5m
aW5pdHkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIGZpcnN0RG9Ob3RD
YXJlQWJvdXRaZXJvU2Vjb25kRG9lcygtMC4xKSwgcmVzdWx0QSA9ICIgKyByZXN1bHQxLnJlc3Vs
dEEpOworICAgICAgICB9CisgICAgICAgIGlmICgxIC8gcmVzdWx0Mi5yZXN1bHRCICE9PSAtSW5m
aW5pdHkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIGZpcnN0RG9Ob3RD
YXJlQWJvdXRaZXJvU2Vjb25kRG9lcygtMC4xKSwgcmVzdWx0QiA9ICIgKyByZXN1bHQxLnJlc3Vs
dEIpOworICAgICAgICB9CisgICAgICAgIHZhciByZXN1bHQzID0gZmlyc3RDYXJlQWJvdXRaZXJv
U2Vjb25kRG9lc05vdCgtMC4wKTsKKyAgICAgICAgaWYgKDEgLyByZXN1bHQzLnJlc3VsdEEgIT09
IC1JbmZpbml0eSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3RD
YXJlQWJvdXRaZXJvU2Vjb25kRG9lc05vdCgtMC4wKSwgcmVzdWx0QSA9ICIgKyByZXN1bHQzLnJl
c3VsdEEpOworICAgICAgICB9CisgICAgICAgIGlmICgxIC8gcmVzdWx0My5yZXN1bHRCICE9PSBJ
bmZpbml0eSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3RDYXJl
QWJvdXRaZXJvU2Vjb25kRG9lc05vdCgtMC4wKSwgcmVzdWx0QiA9ICIgKyByZXN1bHQzLnJlc3Vs
dEIpOworICAgICAgICB9CisgICAgICAgIHZhciByZXN1bHQ0ID0gZmlyc3REb05vdENhcmVBYm91
dFplcm9TZWNvbmREb2VzKC0wLjApOworICAgICAgICBpZiAoMSAvIHJlc3VsdDQucmVzdWx0QSAh
PT0gSW5maW5pdHkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIGZpcnN0
RG9Ob3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lcygtMC4wKSwgcmVzdWx0QSA9ICIgKyByZXN1bHQ0
LnJlc3VsdEEpOworICAgICAgICB9CisgICAgICAgIGlmICgxIC8gcmVzdWx0NC5yZXN1bHRCICE9
PSAtSW5maW5pdHkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIGZpcnN0
RG9Ob3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lcygtMC4wKSwgcmVzdWx0QiA9ICIgKyByZXN1bHQ0
LnJlc3VsdEIpOworICAgICAgICB9CisgICAgICAgIHZhciByZXN1bHQ1ID0gZmlyc3RDYXJlQWJv
dXRaZXJvU2Vjb25kRG9lc05vdCgwLjApOworICAgICAgICBpZiAoMSAvIHJlc3VsdDUucmVzdWx0
QSAhPT0gSW5maW5pdHkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIGZp
cnN0Q2FyZUFib3V0WmVyb1NlY29uZERvZXNOb3QoMC4wKSwgcmVzdWx0QSA9ICIgKyByZXN1bHQ1
LnJlc3VsdEEpOworICAgICAgICB9CisgICAgICAgIGlmICgxIC8gcmVzdWx0NS5yZXN1bHRCICE9
PSBJbmZpbml0eSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3RD
YXJlQWJvdXRaZXJvU2Vjb25kRG9lc05vdCgwLjApLCByZXN1bHRCID0gIiArIHJlc3VsdDUucmVz
dWx0Qik7CisgICAgICAgIH0KKyAgICAgICAgdmFyIHJlc3VsdDYgPSBmaXJzdERvTm90Q2FyZUFi
b3V0WmVyb1NlY29uZERvZXMoMC4wKTsKKyAgICAgICAgaWYgKDEgLyByZXN1bHQ2LnJlc3VsdEEg
IT09IEluZmluaXR5KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCBmaXJz
dERvTm90Q2FyZUFib3V0WmVyb1NlY29uZERvZXMoMC4wKSwgcmVzdWx0QSA9ICIgKyByZXN1bHQ2
LnJlc3VsdEEpOworICAgICAgICB9CisgICAgICAgIGlmICgxIC8gcmVzdWx0Ni5yZXN1bHRCICE9
PSBJbmZpbml0eSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3RE
b05vdENhcmVBYm91dFplcm9TZWNvbmREb2VzKDAuMCksIHJlc3VsdEIgPSAiICsgcmVzdWx0Ni5y
ZXN1bHRCKTsKKyAgICAgICAgfQorICAgICAgICB2YXIgcmVzdWx0NyA9IGZpcnN0Q2FyZUFib3V0
WmVyb1NlY29uZERvZXNOb3QoMC4xKTsKKyAgICAgICAgaWYgKDEgLyByZXN1bHQ3LnJlc3VsdEEg
IT09IEluZmluaXR5KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCBmaXJz
dENhcmVBYm91dFplcm9TZWNvbmREb2VzTm90KDAuMSksIHJlc3VsdEEgPSAiICsgcmVzdWx0Ny5y
ZXN1bHRBKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoMSAvIHJlc3VsdDcucmVzdWx0QiAhPT0g
SW5maW5pdHkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIGZpcnN0Q2Fy
ZUFib3V0WmVyb1NlY29uZERvZXNOb3QoMC4xKSwgcmVzdWx0QiA9ICIgKyByZXN1bHQ3LnJlc3Vs
dEIpOworICAgICAgICB9CisgICAgICAgIHZhciByZXN1bHQ4ID0gZmlyc3REb05vdENhcmVBYm91
dFplcm9TZWNvbmREb2VzKDAuMSk7CisgICAgICAgIGlmICgxIC8gcmVzdWx0OC5yZXN1bHRBICE9
PSBJbmZpbml0eSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3RE
b05vdENhcmVBYm91dFplcm9TZWNvbmREb2VzKDAuMSksIHJlc3VsdEEgPSAiICsgcmVzdWx0OC5y
ZXN1bHRBKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoMSAvIHJlc3VsdDgucmVzdWx0QiAhPT0g
SW5maW5pdHkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIGZpcnN0RG9O
b3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lcygwLjEpLCByZXN1bHRCID0gIiArIHJlc3VsdDgucmVz
dWx0Qik7CisgICAgICAgIH0KKyAgICB9Cit9Cit2ZXJpZnlOZWdhdGl2ZVplcm9Jc1ByZXNlcnZl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRo
LXRydW5jLWJhc2ljcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbWF0
aC10cnVuYy1iYXNpY3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVjZWQyZjcxZjM2OTk3OTk2OGJkMTc1NzQ2
YmFkMDA5MDljNzExNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvbWF0aC10cnVuYy1iYXNpY3MuanMKQEAgLTAsMCArMSwyNTYgQEAKK2Z1bmN0
aW9uIG1hdGhUcnVuY09uSW50ZWdlcnModmFsdWUpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1bmMo
dmFsdWUpOworfQorbm9JbmxpbmUobWF0aFRydW5jT25JbnRlZ2Vycyk7CisKK2Z1bmN0aW9uIG1h
dGhUcnVuY09uRG91Ymxlcyh2YWx1ZSkKK3sKKyAgICByZXR1cm4gTWF0aC50cnVuYyh2YWx1ZSk7
Cit9Citub0lubGluZShtYXRoVHJ1bmNPbkRvdWJsZXMpOworCitmdW5jdGlvbiBtYXRoVHJ1bmNP
bkJvb2xlYW5zKHZhbHVlKQoreworICAgIHJldHVybiBNYXRoLnRydW5jKHZhbHVlKTsKK30KK25v
SW5saW5lKG1hdGhUcnVuY09uQm9vbGVhbnMpOworCisvLyBUaGUgdHJpdmlhbCBjYXNlcyBmaXJz
dC4KK2ZvciAodmFyIGkgPSAxOyBpIDwgMWU0OyArK2kpIHsKKyAgICB2YXIgdHJ1bmNlZFZhbHVl
ID0gbWF0aFRydW5jT25JbnRlZ2VycyhpKTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSBpKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY09uSW50ZWdlcnMoIiArIGkgKyAiKSA9
ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFyIHRydW5jZWRWYWx1ZSA9IG1hdGhUcnVuY09u
SW50ZWdlcnMoLWkpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09IC1pKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIm1hdGhUcnVuY09uSW50ZWdlcnMoIiArIC1pICsgIikgPSAiICsgdHJ1bmNl
ZFZhbHVlKTsKKworICAgIHZhciBkb3VibGVMb3cgPSBpICsgMC40OworICAgIHZhciB0cnVuY2Vk
VmFsdWUgPSBtYXRoVHJ1bmNPbkRvdWJsZXMoZG91YmxlTG93KTsKKyAgICBpZiAodHJ1bmNlZFZh
bHVlICE9PSBpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY09uRG91Ymxlcygi
ICsgZG91YmxlTG93ICsgIikgPSAiICsgdHJ1bmNlZFZhbHVlKTsKKworICAgIHZhciBkb3VibGVI
aWdoID0gaSArIDAuNjsKKyAgICB2YXIgdHJ1bmNlZFZhbHVlID0gbWF0aFRydW5jT25Eb3VibGVz
KGRvdWJsZUhpZ2gpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09IGkpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigibWF0aFRydW5jT25Eb3VibGVzKCIgKyBkb3VibGVIaWdoICsgIikgPSAiICsg
dHJ1bmNlZFZhbHVlKTsKKworICAgIHZhciBkb3VibGVNaWQgPSBpICsgMC41OworICAgIHZhciB0
cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNPbkRvdWJsZXMoZG91YmxlTWlkKTsKKyAgICBpZiAodHJ1
bmNlZFZhbHVlICE9PSBpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY09uRG91
YmxlcygiICsgZG91YmxlTWlkICsgIikgPSAiICsgdHJ1bmNlZFZhbHVlKTsKKworICAgIHZhciB0
cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNPbkRvdWJsZXMoLTAuNik7CisgICAgaWYgKHRydW5jZWRW
YWx1ZSAhPT0gLTAuMCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJtYXRoVHJ1bmNPbkRvdWJs
ZXMoLTAuNikgPSAiICsgdHJ1bmNlZFZhbHVlKTsKK30KKworLy8gU29tZSBtb3JlIGludGVyZXN0
aW5nIGNhc2VzLCBzb21lIG9mIHRoZW0gd2VsbCBPU1IgZXhpdCB3aGVuIHRoZSByZXR1cm4gdmFs
dWUgaXMgemVyby4KK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICB2YXIgdHJ1
bmNlZFZhbHVlID0gbWF0aFRydW5jT25JbnRlZ2VycyhpKTsKKyAgICBpZiAodHJ1bmNlZFZhbHVl
ICE9PSBpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY09uSW50ZWdlcnMoIiAr
IGkgKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFyIHRydW5jZWRWYWx1ZSA9IG1h
dGhUcnVuY09uSW50ZWdlcnMoLWkpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09IC1pKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY09uSW50ZWdlcnMoLSIgKyBpICsgIikgPSAi
ICsgdHJ1bmNlZFZhbHVlKTsKKworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNPbkRv
dWJsZXMoLTAuNCk7CisgICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0gLTAuMCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJtYXRoVHJ1bmNPbkRvdWJsZXMoLTAuNCkgPSAiICsgdHJ1bmNlZFZhbHVl
KTsKKworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNPbkRvdWJsZXMoLTAuNSk7Cisg
ICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0gLTAuMCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJt
YXRoVHJ1bmNPbkRvdWJsZXMoLTAuNSkgPSAiICsgdHJ1bmNlZFZhbHVlKTsKKworICAgIHZhciB0
cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNPbkRvdWJsZXMoLTApOworICAgIGlmICghKHRydW5jZWRW
YWx1ZSA9PT0gMCAmJiAoMS90cnVuY2VkVmFsdWUpID09PSAtSW5maW5pdHkpKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY09uRG91YmxlcygtMCkgPSAiICsgdHJ1bmNlZFZhbHVl
KTsKKworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNPbkRvdWJsZXMoTmFOKTsKKyAg
ICBpZiAodHJ1bmNlZFZhbHVlID09PSB0cnVuY2VkVmFsdWUpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigibWF0aFRydW5jT25Eb3VibGVzKE5hTikgPSAiICsgdHJ1bmNlZFZhbHVlKTsKKworICAg
IHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNPbkRvdWJsZXMoTnVtYmVyLlBPU0lUSVZFX0lO
RklOSVRZKTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5J
VFkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jT25Eb3VibGVzKE51bWJlci5Q
T1NJVElWRV9JTkZJTklUWSkgPSAiICsgdHJ1bmNlZFZhbHVlKTsKKworICAgIHZhciB0cnVuY2Vk
VmFsdWUgPSBtYXRoVHJ1bmNPbkRvdWJsZXMoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKTsKKyAg
ICBpZiAodHJ1bmNlZFZhbHVlICE9PSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jT25Eb3VibGVzKE51bWJlci5ORUdBVElWRV9JTkZJ
TklUWSkgPSAiICsgdHJ1bmNlZFZhbHVlKTsKKworICAgIHZhciBib29sZWFuID0gISEoaSAlIDIp
OworICAgIHZhciB0cnVuY2VkQm9vbGVhbiA9IG1hdGhUcnVuY09uQm9vbGVhbnMoYm9vbGVhbik7
CisgICAgaWYgKHRydW5jZWRCb29sZWFuICE9IGJvb2xlYW4pCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigibWF0aFRydW5jT25Eb3VibGVzKCIgKyBib29sZWFuICsgIikgPSAiICsgdHJ1bmNlZEJv
b2xlYW4pOworfQorCitmdW5jdGlvbiB1c2VsZXNzTWF0aFRydW5jKHZhbHVlKQoreworICAgIHJl
dHVybiBNYXRoLnRydW5jKHZhbHVlfDApOworfQorbm9JbmxpbmUodXNlbGVzc01hdGhUcnVuYyk7
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICB2YXIgdHJ1bmNlZFZhbHVl
ID0gdXNlbGVzc01hdGhUcnVuYyhpKTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSBpKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoInVzZWxlc3NNYXRoVHJ1bmMoIiArIGkgKyAiKSA9ICIgKyB0
cnVuY2VkVmFsdWUpOworCisgICAgdmFyIGRvdWJsZUxvdyA9IGkgKyAwLjQ7CisgICAgdmFyIHRy
dW5jZWRWYWx1ZSA9IHVzZWxlc3NNYXRoVHJ1bmMoZG91YmxlTG93KTsKKyAgICBpZiAodHJ1bmNl
ZFZhbHVlICE9PSBpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInVzZWxlc3NNYXRoVHJ1bmMo
IiArIGRvdWJsZUxvdyArICIpID0gIiArIHRydW5jZWRWYWx1ZSk7CisKKyAgICB2YXIgZG91Ymxl
SGlnaCA9IGkgKyAwLjY7CisgICAgdmFyIHRydW5jZWRWYWx1ZSA9IHVzZWxlc3NNYXRoVHJ1bmMo
ZG91YmxlSGlnaCk7CisgICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0gaSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJ1c2VsZXNzTWF0aFRydW5jKCIgKyBkb3VibGVIaWdoICsgIikgPSAiICsgdHJ1
bmNlZFZhbHVlKTsKKworICAgIHZhciBkb3VibGVNaWQgPSBpICsgMC41OworICAgIHZhciB0cnVu
Y2VkVmFsdWUgPSB1c2VsZXNzTWF0aFRydW5jKGRvdWJsZU1pZCk7CisgICAgaWYgKHRydW5jZWRW
YWx1ZSAhPT0gaSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ1c2VsZXNzTWF0aFRydW5jKCIg
KyBkb3VibGVNaWQgKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFyIHRydW5jZWRW
YWx1ZSA9IHVzZWxlc3NNYXRoVHJ1bmMoLTAuNCk7CisgICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0g
MCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ1c2VsZXNzTWF0aFRydW5jKC0wLjQpID0gIiAr
IHRydW5jZWRWYWx1ZSk7CisKKyAgICB2YXIgdHJ1bmNlZFZhbHVlID0gdXNlbGVzc01hdGhUcnVu
YygtMC41KTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSAwKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoInVzZWxlc3NNYXRoVHJ1bmMoLTAuNSkgPSAiICsgdHJ1bmNlZFZhbHVlKTsKKworICAg
IHZhciB0cnVuY2VkVmFsdWUgPSB1c2VsZXNzTWF0aFRydW5jKC0wLjYpOworICAgIGlmICh0cnVu
Y2VkVmFsdWUgIT09IDApCisgICAgICAgIHRocm93IG5ldyBFcnJvcigidXNlbGVzc01hdGhUcnVu
YygtMC42KSA9ICIgKyB0cnVuY2VkVmFsdWUpOworfQorCitmdW5jdGlvbiBtYXRoVHJ1bmNXaXRo
T3ZlcmZsb3codmFsdWUpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1bmModmFsdWUpOworfQorbm9J
bmxpbmUobWF0aFRydW5jV2l0aE92ZXJmbG93KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7
ICsraSkgeworICAgIHZhciBiaWdWYWx1ZSA9IDEwMDAwMDAwMDAwMDA7CisgICAgdmFyIHRydW5j
ZWRWYWx1ZSA9IG1hdGhUcnVuY1dpdGhPdmVyZmxvdyhiaWdWYWx1ZSk7CisgICAgaWYgKHRydW5j
ZWRWYWx1ZSAhPT0gYmlnVmFsdWUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5j
V2l0aE92ZXJmbG93KCIgKyBiaWdWYWx1ZSArICIpID0gIiArIHRydW5jZWRWYWx1ZSk7Cit9CisK
K2Z1bmN0aW9uIG1hdGhUcnVuY0NvbnN1bWVkQXNEb3VibGUodmFsdWUpCit7CisgICAgcmV0dXJu
IE1hdGgudHJ1bmModmFsdWUpICogMC41OworfQorbm9JbmxpbmUobWF0aFRydW5jQ29uc3VtZWRB
c0RvdWJsZSk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICB2YXIgZG91
YmxlVmFsdWUgPSBpICsgMC4xOworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNDb25z
dW1lZEFzRG91YmxlKGRvdWJsZVZhbHVlKTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSAoaSAq
IDAuNSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jQ29uc3VtZWRBc0RvdWJs
ZSgiICsgZG91YmxlVmFsdWUgKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFyIGRv
dWJsZVZhbHVlID0gaSArIDAuNjsKKyAgICB2YXIgdHJ1bmNlZFZhbHVlID0gbWF0aFRydW5jQ29u
c3VtZWRBc0RvdWJsZShkb3VibGVWYWx1ZSk7CisgICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0gKGkg
KiAwLjUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY0NvbnN1bWVkQXNEb3Vi
bGUoIiArIGRvdWJsZVZhbHVlICsgIikgPSAiICsgdHJ1bmNlZFZhbHVlKTsKKworfQorCitmdW5j
dGlvbiBtYXRoVHJ1bmNEb2VzTm90Q2FyZUFib3V0TWludXNaZXJvKHZhbHVlKQoreworICAgIHJl
dHVybiBNYXRoLnRydW5jKHZhbHVlKXwwOworfQorbm9JbmxpbmUobWF0aFRydW5jRG9lc05vdENh
cmVBYm91dE1pbnVzWmVybyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAg
ICB2YXIgZG91YmxlTWlkID0gaSArIDAuNTsKKyAgICB2YXIgdHJ1bmNlZFZhbHVlID0gbWF0aFRy
dW5jRG9lc05vdENhcmVBYm91dE1pbnVzWmVybyhkb3VibGVNaWQpOworICAgIGlmICh0cnVuY2Vk
VmFsdWUgIT09IGkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jRG9lc05vdENh
cmVBYm91dE1pbnVzWmVybygiICsgZG91YmxlTWlkICsgIikgPSAiICsgdHJ1bmNlZFZhbHVlKTsK
K30KKworCisvLyAqKiogRnVuY3Rpb24gYXJndW1lbnRzLiAqKioKK2Z1bmN0aW9uIG1hdGhUcnVu
Y05vQXJndW1lbnRzKCkKK3sKKyAgICByZXR1cm4gTWF0aC50cnVuYygpOworfQorbm9JbmxpbmUo
bWF0aFRydW5jTm9Bcmd1bWVudHMpOworCitmdW5jdGlvbiBtYXRoVHJ1bmNUb29NYW55QXJndW1l
bnRzKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1bmMoYSwgYiwgYyk7Cit9Citub0lu
bGluZShtYXRoVHJ1bmNUb29NYW55QXJndW1lbnRzKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
ZTQ7ICsraSkgeworICAgIHZhciB2YWx1ZSA9IG1hdGhUcnVuY05vQXJndW1lbnRzKCk7CisgICAg
aWYgKHZhbHVlID09PSB2YWx1ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJtYXRoVHJ1bmNO
b0FyZ3VtZW50cygpID0gIiArIHZhbHVlKTsKKworICAgIHZhciB2YWx1ZSA9IG1hdGhUcnVuY1Rv
b01hbnlBcmd1bWVudHMoMi4xLCAzLCA1KTsKKyAgICBpZiAodmFsdWUgIT09IDIpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jVG9vTWFueUFyZ3VtZW50cygpID0gIiArIHZhbHVl
KTsKK30KKworCisvLyAqKiogQ29uc3RhbnQgYXMgYXJndW1lbnRzLiAqKioKK2Z1bmN0aW9uIHRl
c3RNYXRoVHJ1bmNPbkNvbnN0YW50cygpCit7CisgICAgdmFyIHZhbHVlID0gTWF0aC50cnVuYygw
KTsKKyAgICBpZiAodmFsdWUgIT09IDApCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiTWF0aC50
cnVuYygwKSA9ICIgKyB2YWx1ZSk7CisgICAgdmFyIHZhbHVlID0gTWF0aC50cnVuYygtMCk7Cisg
ICAgaWYgKCEodmFsdWUgPT09IDAgJiYgKDEvdmFsdWUpID09PSAtSW5maW5pdHkpKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIk1hdGgudHJ1bmMoLTApID0gIiArIHZhbHVlKTsKKyAgICB2YXIg
dmFsdWUgPSBNYXRoLnRydW5jKDEpOworICAgIGlmICh2YWx1ZSAhPT0gMSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJNYXRoLnRydW5jKDEpID0gIiArIHZhbHVlKTsKKyAgICB2YXIgdmFsdWUg
PSBNYXRoLnRydW5jKC0xKTsKKyAgICBpZiAodmFsdWUgIT09IC0xKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIk1hdGgudHJ1bmMoLTEpID0gIiArIHZhbHVlKTsKKyAgICB2YXIgdmFsdWUgPSBN
YXRoLnRydW5jKDQyKTsKKyAgICBpZiAodmFsdWUgIT09IDQyKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIk1hdGgudHJ1bmMoNDIpID0gIiArIHZhbHVlKTsKKyAgICB2YXIgdmFsdWUgPSBNYXRo
LnRydW5jKC00Mi4yKTsKKyAgICBpZiAodmFsdWUgIT09IC00MikKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJNYXRoLnRydW5jKC00Mi4yKSA9ICIgKyB2YWx1ZSk7CisgICAgdmFyIHZhbHVlID0g
TWF0aC50cnVuYyhOYU4pOworICAgIGlmICh2YWx1ZSA9PT0gdmFsdWUpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiTWF0aC50cnVuYyhOYU4pID0gIiArIHZhbHVlKTsKKyAgICB2YXIgdmFsdWUg
PSBNYXRoLnRydW5jKE51bWJlci5QT1NJVElWRV9JTkZJTklUSSk7CisgICAgaWYgKHZhbHVlID09
PSB2YWx1ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJNYXRoLnRydW5jKE51bWJlci5QT1NJ
VElWRV9JTkZJTklUSSkgPSAiICsgdmFsdWUpOworICAgIHZhciB2YWx1ZSA9IE1hdGgudHJ1bmMo
TnVtYmVyLk5FR0FUSVZFX0lORklOSVRJKTsKKyAgICBpZiAodmFsdWUgPT09IHZhbHVlKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIk1hdGgudHJ1bmMoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRJ
KSA9ICIgKyB2YWx1ZSk7CisgICAgdmFyIHZhbHVlID0gTWF0aC50cnVuYyhNYXRoLkUpOworICAg
IGlmICh2YWx1ZSAhPT0gMikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJNYXRoLnRydW5jKE1h
dGguRSkgPSAiICsgdmFsdWUpOworfQorbm9JbmxpbmUodGVzdE1hdGhUcnVuY09uQ29uc3RhbnRz
KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIHRlc3RNYXRoVHJ1bmNP
bkNvbnN0YW50cygpOworfQorCisKKy8vICoqKiBTdHJ1Y3QgdHJhbnNpdGlvbi4gKioqCitmdW5j
dGlvbiBtYXRoVHJ1bmNTdHJ1Y3RUcmFuc2l0aW9uKHZhbHVlKQoreworICAgIHJldHVybiBNYXRo
LnRydW5jKHZhbHVlKTsKK30KK25vSW5saW5lKG1hdGhUcnVuY1N0cnVjdFRyYW5zaXRpb24pOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgdmFyIHZhbHVlID0gbWF0aFRy
dW5jU3RydWN0VHJhbnNpdGlvbig0Mi41KTsKKyAgICBpZiAodmFsdWUgIT09IDQyKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY1N0cnVjdFRyYW5zaXRpb24oNDIuNSkgPSAiICsg
dmFsdWUpOworfQorCitNYXRoLnRydW5jID0gZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHNb
MF0gKyA1OyB9CisKK3ZhciB2YWx1ZSA9IG1hdGhUcnVuY1N0cnVjdFRyYW5zaXRpb24oNDIpOwor
aWYgKHZhbHVlICE9PSA0NykKKyAgICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY1N0cnVjdFRy
YW5zaXRpb24oNDIpIGFmdGVyIHRyYW5zaXRpb24gPSAiICsgdmFsdWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXRydW5jLXNob3VsZC1iZS10
cnVuY2F0ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbWF0aC10cnVu
Yy1zaG91bGQtYmUtdHJ1bmNhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI5ZWE5YmJhODNiMzI3YTNmMmYz
YjAwMTUzMGE1OGMwODBmMWZlMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvbWF0aC10cnVuYy1zaG91bGQtYmUtdHJ1bmNhdGUuanMKQEAgLTAs
MCArMSwxMiBAQAorZnVuY3Rpb24gbWF0aFRydW5jKHZhbHVlKQoreworICAgIHJldHVybiBNYXRo
LnRydW5jKHZhbHVlKTsKK30KK25vSW5saW5lKG1hdGhUcnVuYyk7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMWU0OyArK2kpIHsKKyAgICB2YXIgZG91YmxlTWlkID0gLTk5MDEgLSAwLjY7CisgICAg
dmFyIHJvdW5kZWRWYWx1ZSA9IG1hdGhUcnVuYyhkb3VibGVNaWQpOworICAgIGlmIChyb3VuZGVk
VmFsdWUgIT09IC05OTAxKQorICAgICAgICB0aHJvdyAibWF0aFJvdW5kRG9lc05vdENhcmVBYm91
dE1pbnVzWmVybygiICsgZG91YmxlTWlkICsgIikgPSAiICsgcm91bmRlZFZhbHVlOworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDU5MWI3NWRkZTIxYmZkZTdjNDM0NGE2ZDg0NDgxZDJmYTk0Yjg1NWIuLmZlOTk1ZWNmNzY4
NjRiOWNjZjRhNjRkOTBmZmYzOWMxZmM1OGUxMWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAx
Ni0wMy0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbSlNDXSBBZGQgdHJ1bmNhdGUgb3BlcmF0aW9uIChyb3VuZGluZyB0byB6ZXJvKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDcyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9yZWdyZXNzL21h
bnktZm9yZWFjaC1jYWxscy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3MvbWFueS1mb3JlYWNoLWNhbGxzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mv
bWF0aC10cnVuYy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvbWF0
aC10cnVuYy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9t
YW55LWZvcmVhY2gtY2FsbHMuanM6IEFkZGVkLgorICAgICAgICAoaS5hcnJheS5mb3JFYWNoKToK
KyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9tYXRoLXRydW5jLmpzOiBBZGRlZC4K
KyAgICAgICAgKG1hdGhUcnVuY0ludCk6CisgICAgICAgIChtYXRoVHJ1bmNEb3VibGUpOgorICAg
ICAgICAobWF0aFRydW5jTWl4ZWQpOgorCiAyMDE2LTAzLTMxICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE5MTE4MCk6IFNhZmFyaSBkb2Vz
IG5vdCBzZW5kIFJlZmVyZXIgSGVhZGVyIHRvIGlmcmFtZSBzcmMgaW4gY2VydGFpbiBzaXR1YXRp
b25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL21hbnktZm9yZWFjaC1jYWxs
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL21hbnktZm9yZWFjaC1jYWxs
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2QwYTRmN2Q0YjQwYmFhYzkzZjc5ODdjNmE0MDBi
MDc0ZWM3YjA2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvbWFu
eS1mb3JlYWNoLWNhbGxzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mv
bWFueS1mb3JlYWNoLWNhbGxzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL21hbnkt
Zm9yZWFjaC1jYWxscy5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9tYW55LWZvcmVhY2gt
Y2FsbHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYmU1ODUwNmZlN2M0MDUxY2E3NzY2ZWRiYzdkY2E2MmEx
OTBiZmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9tYW55LWZv
cmVhY2gtY2FsbHMuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9tYW55LWZvcmVhY2gtY2FsbHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9t
YXRoLXRydW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvbWF0aC10cnVu
Yy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2IwMjhlMjEzY2Y1NmYxNmFiMGMxZTM2OTJjYTU0
Zjc4NTlmYjA5YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvbWF0
aC10cnVuYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL21hdGgtdHJ1
bmMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRo
cm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvbWF0aC10cnVuYy5odG1sIGIvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9tYXRoLXRydW5jLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzg1OWZhN2Rk
M2NlNzQ3N2ExYzZjYmZiYjc5NmRjMjlhY2IzZjRhMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL3JlZ3Jlc3MvbWF0aC10cnVuYy5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL21hdGgtdHJ1bmMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvbWFueS1mb3JlYWNoLWNhbGxzLmpzIGIvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvbWFueS1mb3JlYWNoLWNhbGxzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQyYjM4MjU4NzkxZjQxMTJhMjI5OWE1YjUyZDAwMTliZmExZDI3NmMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9tYW55LWZvcmVhY2gtY2Fs
bHMuanMKQEAgLTAsMCArMSw3IEBACit2YXIgc3VtID0gMDsKK3ZhciBhcnJheSA9IFsxLCAyLCAz
XTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBhcnJheS5mb3JFYWNoKGZ1
bmN0aW9uICh2YWx1ZSkgeworICAgICAgICBzdW0gKz0gdmFsdWU7CisgICAgfSk7Cit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9tYXRoLXRydW5jLmpz
IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvbWF0aC10cnVuYy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40NzkxYzVjMWVhMGViMzk5OGY1YzMxNDI5MGVmZmZmNjc1ODU0ODk0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvbWF0aC10cnVu
Yy5qcwpAQCAtMCwwICsxLDMwIEBACitmdW5jdGlvbiBtYXRoVHJ1bmNJbnQoaSkKK3sKKyAgICBy
ZXR1cm4gTWF0aC50cnVuYyhpKTsKK30KK25vSW5saW5lKG1hdGhUcnVuY0ludCk7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpCisgICAgbWF0aFRydW5jSW50KGkpOworCitmdW5jdGlv
biBtYXRoVHJ1bmNEb3VibGUoaSkKK3sKKyAgICByZXR1cm4gTWF0aC50cnVuYyhpKTsKK30KK25v
SW5saW5lKG1hdGhUcnVuY0RvdWJsZSk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kp
CisgICAgbWF0aFRydW5jRG91YmxlKGkgKiAwLjYpOworCitmdW5jdGlvbiBtYXRoVHJ1bmNNaXhl
ZChpKQoreworICAgIHJldHVybiBNYXRoLnRydW5jKGkpOworfQorbm9JbmxpbmUobWF0aFRydW5j
TWl4ZWQpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgaWYgKGkgJSAy
ID09PSAwKQorICAgICAgICBtYXRoVHJ1bmNEb3VibGUoaSAqIDAuNik7CisgICAgZWxzZQorICAg
ICAgICBtYXRoVHJ1bmNEb3VibGUoaSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275394</attachid>
            <date>2016-04-01 04:59:42 -0700</date>
            <delta_ts>2016-04-02 00:34:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156072-20160401205945.patch</filename>
            <type>text/plain</type>
            <size>56000</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MDZiNDUxYWZjMTg0MTdjODllZDEwYTFhMWMxMzA2NzIxZGNlNjQ4Li4zYTg5YTJhOWMwYWRhMTMz
NmM3ZDhlYjk4NThkNzRiMzgxNzEyYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTMgQEAKKzIwMTYtMDQtMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIHRydW5jYXRlIG9wZXJhdGlvbiAocm91bmRpbmcg
dG8gemVybykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NjA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBUcnVuY0ludHJpbnNpYyBmb3IgTWF0aC50cnVuYy4gREZHIGhhbmRsZXMgaXQgYXMgQXJp
dGhUcnVuYy4KKyAgICAgICAgSW4gREZHLCBBcml0aFRydW5jIGJlaGF2ZXMgc2ltaWxhciB0byBB
cml0aFJvdW5kLCBBcml0aENlaWwsIGFuZCBBcml0aEZsb29yLgorICAgICAgICBBcml0aFRydW5j
IHJvdW5kcyB0aGUgdmFsdWUgdG93YXJkcyB6ZXJvLgorCisgICAgICAgIEFuZCB3ZSByZXdyaXRl
IEB0b0ludGVnZXIgdG8gdXNlIEB0cnVuYyBpbnN0ZWFkIG9mIEBhYnMsIEBmbG9vciwgbmVnYXRp
b24gYW5kIGJyYW5jaC4KKyAgICAgICAgVGhpcyBpcyBjb21wbGV0ZWx5IHRoZSBzYW1lIHRvIHdo
YXQgd2UgZG8gaW4gSlNWYWx1ZTo6dG9JbnRlZ2VyLgorCisgICAgICAgIFNpbmNlIERGRyByZWNv
Z25pemUgaXQsIERGRyBjYW4gY29udmVydCBBcml0aFRydW5jIHRvIElkZW50aXR5IGlmIHRoZSBn
aXZlbiBhcmd1bWVudCBpcyBJbnQzMi4KKyAgICAgICAgVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSBh
bG1vc3QgYWxsIHRoZSBhcmd1bWVudCBpcyBJbnQzMiBpbiBAdG9MZW5ndGggLT4gQHRvSW50ZWdl
ciAtPiBAdHJ1bmMgY2FzZS4KKyAgICAgICAgSW4gc3VjaCBjYXNlcywgd2UgY2FuIGVsaW1pbmF0
ZSB0cnVuYygpIGNhbGwuCisKKyAgICAgICAgQXMgYSBib251cywgdG8gc3BlZWQgdXAgTWF0aC50
cnVuYyBvcGVyYXRpb24sIHdlIHVzZSB4ODYgU1NFIHJvdW5kIGFuZCBmcmludHogaW4gQVJNNjQg
Zm9yIEFyaXRoUm91bmQuCisgICAgICAgIEluIERGRywgd2UgZW1pdCB0aGVzZSBpbnN0cnVjdGlv
bnMuIEluIEZUTCwgd2UgdXNlIFBhdGNocG9pbnQgdG8gZW1pdCB0aGVzZSBpbnN0cnVjdGlvbnMg
dG8gYXZvaWQgYWRkaW5nIGEgbmV3IEIzIElSLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6cm91
bmRUb3dhcmRaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
cm91bmRUb3dhcmRaZXJvRmxvYXQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnJvdW5kVG93YXJk
WmVyb0RvdWJsZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJvdW5kVG93YXJkWmVyb0RvdWJsZSk6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyU0g0Ojpyb3VuZFRvd2FyZFplcm9Eb3VibGUpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6cm91bmRUb3dhcmRaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnJvdW5kVG93YXJkWmVyb0Zsb2F0KToKKyAgICAgICAg
KiBidWlsdGlucy9HbG9iYWxPYmplY3QuanM6CisgICAgICAgICh0b0ludGVnZXIpOgorICAgICAg
ICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgICogZGZn
L0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAg
ICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAg
ICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlND
OjpERkc6OkdyYXBoOjpyb3VuZFNob3VsZFNwZWN1bGF0ZUludDMyKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmFyaXRoTm9kZUZsYWdzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNIZWFwUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6aGFzQXJpdGhSb3VuZGluZ01vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2Rl
VHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0
ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhSb3VuZGluZyk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9G
VExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAg
ICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVBcml0aFRydW5jKToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0LmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZVRydW5jKToKKyAgICAgICAgKiBm
dGwvRlRMT3V0cHV0Lmg6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAg
ICAgIChKU0M6OnRydW5jVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVy
YXRvcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAg
ICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1
bnRpbWUvTWF0aE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6Ok1hdGhPYmplY3Q6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuaDoKKyAgICAgICAgKiBydW50
aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6dGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMpOgor
ICAgICAgICAqIHRlc3RzL3N0cmVzcy9tYXRoLXJvdW5kaW5nLWluZmluaXR5LmpzOgorICAgICAg
ICAodGVzdFRydW5jKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvbWF0aC1yb3VuZGluZy1uYW4u
anM6CisgICAgICAgICh0ZXN0VHJ1bmMpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9tYXRoLXJv
dW5kaW5nLW5lZ2F0aXZlLXplcm8uanM6CisgICAgICAgICh0ZXN0VHJ1bmMpOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9tYXRoLXRydW5jLWFyaXRoLXJvdW5kaW5nLW1vZGUuanM6IEFkZGVkLgor
ICAgICAgICAoZmlyc3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lc05vdCk6CisgICAgICAgIChmaXJz
dERvTm90Q2FyZUFib3V0WmVyb1NlY29uZERvZXMpOgorICAgICAgICAod2FybXVwKToKKyAgICAg
ICAgKHZlcmlmeU5lZ2F0aXZlWmVyb0lzUHJlc2VydmVkKToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvbWF0aC10cnVuYy1iYXNpY3MuanM6IEFkZGVkLgorICAgICAgICAobWF0aFRydW5jT25JbnRl
Z2Vycyk6CisgICAgICAgIChtYXRoVHJ1bmNPbkRvdWJsZXMpOgorICAgICAgICAobWF0aFRydW5j
T25Cb29sZWFucyk6CisgICAgICAgICh1c2VsZXNzTWF0aFRydW5jKToKKyAgICAgICAgKG1hdGhU
cnVuY1dpdGhPdmVyZmxvdyk6CisgICAgICAgIChtYXRoVHJ1bmNDb25zdW1lZEFzRG91YmxlKToK
KyAgICAgICAgKG1hdGhUcnVuY0RvZXNOb3RDYXJlQWJvdXRNaW51c1plcm8pOgorICAgICAgICAo
bWF0aFRydW5jTm9Bcmd1bWVudHMpOgorICAgICAgICAobWF0aFRydW5jVG9vTWFueUFyZ3VtZW50
cyk6CisgICAgICAgICh0ZXN0TWF0aFRydW5jT25Db25zdGFudHMpOgorICAgICAgICAobWF0aFRy
dW5jU3RydWN0VHJhbnNpdGlvbik6CisgICAgICAgIChNYXRoLnRydW5jKToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvbWF0aC10cnVuYy1zaG91bGQtYmUtdHJ1bmNhdGUuanM6IEFkZGVkLgorICAg
ICAgICAobWF0aFRydW5jKToKKwogMjAxNi0wNC0wMSAgQWxiZXJ0byBHYXJjaWEgIDxiZXJ0b0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIE1pc3NpbmcgUEFUSF9NQVggZGVmaW5pdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAppbmRleCBmNjE5MDk2ZmMyMTlhYzRkNzU2NjdiNGE2YjExN2M5ZWJlYzNmZjVhLi5k
ZTdlMGU0YzIyOTQxNGM4MWRkOGMwY2RhYmFkMGQwYjBjMTYzMTU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAt
MTUwMCw2ICsxNTAwLDE2IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk02NEFzc2VtYmxlciwgTWFjcm9BCiAgICAgICAgIG1fYXNz
ZW1ibGVyLmZyaW50bTwzMj4oZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIHJvdW5kVG93
YXJkWmVyb0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmZyaW50ejw2ND4oZGVzdCwgc3JjKTsKKyAgICB9CisKKyAg
ICB2b2lkIHJvdW5kVG93YXJkWmVyb0Zsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZnJpbnR6PDMyPihkZXN0LCBzcmMp
OworICAgIH0KKwogICAgIC8vIENvbnZlcnQgJ3NyYycgdG8gYW4gaW50ZWdlciwgYW5kIHBsYWNl
cyB0aGUgcmVzdWx0aW5nICdkZXN0Jy4KICAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIG5vdCByZXBy
ZXNlbnRhYmxlIGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCiAgICAgLy8gTWF5IGFsc28gYnJh
bmNoIGZvciBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMyIGJpdHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TXY3LmgKaW5kZXggM2JjODViY2U5MDE0OTZmZGZkNzFmZmM2MTI1ZTEzMjY0Mjc4YmFmMy4uZDIy
NTZlMWY2ODkzOWEyNDBlMThlZGI5YjdmYzU5NGVlMGE4OGFkMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTEw
ODQsNiArMTA4NCwxMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI8QVJNdjdBc3NlbWJsZXIsIE1hY3JvQQogICAgICAgICBDUkFTSCgp
OwogICAgIH0KIAorICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCByb3VuZFRvd2FyZFpl
cm9Eb3VibGUoRlBSZWdpc3RlcklELCBGUFJlZ2lzdGVySUQpCisgICAgeworICAgICAgICBBU1NF
UlQoIXN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkpOworICAgICAgICBDUkFTSCgpOwor
ICAgIH0KKwogICAgIHZvaWQgY29udmVydEludDMyVG9Eb3VibGUoUmVnaXN0ZXJJRCBzcmMsIEZQ
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIudm1vdihmcFRlbXBS
ZWdpc3Rlciwgc3JjLCBzcmMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggN2M0YmQwODBkZjEzNDNiOGVhZWQwZjUw
MjI0ZDJhMmE5OWJkZTk5Ni4uMjdhMTg0MmYyMWY5ZWVmNjFhZWMwNzU1ZmI0ZGM3M2M1OWY2YjFl
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyTUlQUy5oCkBAIC02NTksNiArNjU5LDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyTUlQ
UyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPE1JUFNBc3NlbWJsZXIsIE1hY3JvQXNz
CiAgICAgICAgIENSQVNIKCk7CiAgICAgfQogCisgICAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2
b2lkIHJvdW5kVG93YXJkWmVyb0RvdWJsZShGUFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJRCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVCghc3VwcG9ydHNGbG9hdGluZ1BvaW50Um91bmRpbmcoKSk7Cisg
ICAgICAgIENSQVNIKCk7CisgICAgfQorCiAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgY29udmVy
dGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcmVzdWx0KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCmluZGV4IDc1NzU2
MDk1YjgwMDM5MGRkYTllYzdkZTgzMTk5MDI1N2Q2MTNiZjYuLjUzZTcxY2ZhM2M3Njc3Y2JhYjE1
NDZmOTNlOWRlM2VjYjIxZTVkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgKQEAgLTE1ODcsNiArMTU4NywxMiBAQCBjbGFz
cyBNYWNyb0Fzc2VtYmxlclNINCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPFNINEFz
c2VtYmxlciwgTWFjcm9Bc3NlbQogICAgICAgICBDUkFTSCgpOwogICAgIH0KIAorICAgIE5PX1JF
VFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCByb3VuZFRvd2FyZFplcm9Eb3VibGUoRlBSZWdpc3RlcklE
LCBGUFJlZ2lzdGVySUQpCisgICAgeworICAgICAgICBBU1NFUlQoIXN1cHBvcnRzRmxvYXRpbmdQ
b2ludFJvdW5kaW5nKCkpOworICAgICAgICBDUkFTSCgpOworICAgIH0KKwogICAgIEp1bXAgYnJh
bmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZElt
bTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyID0gY2xhaW1TY3JhdGNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5k
ZXggNDBhNzAwYzI5NDBjZTA2NjAwNWJmMTVjZmUzZTIwNjAxYWQ1NTI4MC4uYTY3Y2ZkMDVlODY4
NzRiZWU1NGJkNDcxZGI0ZDQ2ZjRmZWYwZDExMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtNzM1
LDYgKzczNSwyNiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiA6IHB1YmxpYyBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyPFg4NkFzc2VtYmxlciwgTWFjcgogICAgICAgICBtX2Fzc2VtYmxl
ci5yb3VuZHNzX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkc3QsIFg4NkFzc2VtYmxlcjo6Um91
bmRpbmdUeXBlOjpUb3dhcmROZWdhdGl2ZUluZmluaXRpKTsKICAgICB9CiAKKyAgICB2b2lkIHJv
dW5kVG93YXJkWmVyb0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIucm91bmRzZF9ycihzcmMsIGRzdCwgWDg2QXNzZW1i
bGVyOjpSb3VuZGluZ1R5cGU6OlRvd2FyZFplcm8pOworICAgIH0KKworICAgIHZvaWQgcm91bmRU
b3dhcmRaZXJvRG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIucm91bmRzZF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZHN0LCBY
ODZBc3NlbWJsZXI6OlJvdW5kaW5nVHlwZTo6VG93YXJkWmVybyk7CisgICAgfQorCisgICAgdm9p
ZCByb3VuZFRvd2FyZFplcm9GbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIucm91bmRzc19ycihzcmMsIGRzdCwgWDg2QXNz
ZW1ibGVyOjpSb3VuZGluZ1R5cGU6OlRvd2FyZFplcm8pOworICAgIH0KKworICAgIHZvaWQgcm91
bmRUb3dhcmRaZXJvRmxvYXQoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5yb3VuZHNzX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkc3Qs
IFg4NkFzc2VtYmxlcjo6Um91bmRpbmdUeXBlOjpUb3dhcmRaZXJvKTsKKyAgICB9CisKICAgICAv
LyBNZW1vcnkgYWNjZXNzIG9wZXJhdGlvbnM6CiAgICAgLy8KICAgICAvLyBMb2FkcyBhcmUgb2Yg
dGhlIGZvcm0gbG9hZChhZGRyZXNzLCBkZXN0aW5hdGlvbikgYW5kIHN0b3JlcyBvZiB0aGUgZm9y
bQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dsb2JhbE9iamVj
dC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9iYWxPYmplY3QuanMKaW5k
ZXggZGI1M2MzOTdiYmY1NGMwZDUwZDZkMDQxNGVkYzgyM2QzMzg0NWQzNi4uNWJjYmMyMjZkMmY1
MjZkOTFjM2RlODk5ZjFiYmNhOTU3MzllNjc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCkBAIC0zNCwxMSArMzQsNyBAQCBmdW5jdGlvbiB0
b0ludGVnZXIodGFyZ2V0KQogICAgIC8vIGlzTmFOKG51bWJlclZhbHVlKQogICAgIGlmIChudW1i
ZXJWYWx1ZSAhPT0gbnVtYmVyVmFsdWUpCiAgICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKG51
bWJlclZhbHVlID09PSAwIHx8ICFAaXNGaW5pdGUobnVtYmVyVmFsdWUpKQotICAgICAgICByZXR1
cm4gbnVtYmVyVmFsdWU7Ci0KLSAgICByZXR1cm4gKG51bWJlclZhbHVlID4gMCA/IDEgOiAtMSkg
KiBAZmxvb3IoQGFicyhudW1iZXJWYWx1ZSkpOworICAgIHJldHVybiBAdHJ1bmMobnVtYmVyVmFs
dWUpOwogfQogCiBmdW5jdGlvbiB0b0xlbmd0aCh0YXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5k
ZXggMDI3NDgyMGM4NmU0OGE4MDBhZTMzYjc1N2VmNjg0MjllM2VhOWE0NS4uMzViN2Q1MjViMzFh
MjE4NGNjNWQxZjZjYTdiZDRmYmZhZjQwZWFlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtODUw
LDcgKzg1MCw4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAKICAgICBjYXNlIEFyaXRoUm91
bmQ6CiAgICAgY2FzZSBBcml0aEZsb29yOgotICAgIGNhc2UgQXJpdGhDZWlsOiB7CisgICAgY2Fz
ZSBBcml0aENlaWw6CisgICAgY2FzZSBBcml0aFRydW5jOiB7CiAgICAgICAgIEpTVmFsdWUgb3Bl
cmFuZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CiAgICAgICAgIGlmIChvcGVy
YW5kICYmIG9wZXJhbmQuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgZG91YmxlIHJvdW5kZWRW
YWx1ZSA9IDA7CkBAIC04NTgsOSArODU5LDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAg
ICAgICAgICAgICAgICAgcm91bmRlZFZhbHVlID0ganNSb3VuZChvcGVyYW5kLmFzTnVtYmVyKCkp
OwogICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBBcml0aEZsb29yKQogICAgICAg
ICAgICAgICAgIHJvdW5kZWRWYWx1ZSA9IGZsb29yKG9wZXJhbmQuYXNOdW1iZXIoKSk7Ci0gICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBBcml0
aENlaWwpOworICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBBcml0aENlaWwpCiAg
ICAgICAgICAgICAgICAgcm91bmRlZFZhbHVlID0gY2VpbChvcGVyYW5kLmFzTnVtYmVyKCkpOwor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0g
QXJpdGhUcnVuYyk7CisgICAgICAgICAgICAgICAgcm91bmRlZFZhbHVlID0gdHJ1bmMob3BlcmFu
ZC5hc051bWJlcigpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHByb2R1Y2Vz
SW50ZWdlcihub2RlLT5hcml0aFJvdW5kaW5nTW9kZSgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBhNmE4N2U1MmEyYTU4NTZj
YWRiMTM4OWQ4OWRhYzk0M2MxMmY1ZjEyLi42NzE2Njg3Nzg4ZDA2NTA0ZTJlZDI4YmRmOWIyYmIx
OTYyNDRiNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcApAQCAtMjIwMyw3ICsyMjAzLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW4K
ICAgICAgICAgCiAgICAgY2FzZSBSb3VuZEludHJpbnNpYzoKICAgICBjYXNlIEZsb29ySW50cmlu
c2ljOgotICAgIGNhc2UgQ2VpbEludHJpbnNpYzogeworICAgIGNhc2UgQ2VpbEludHJpbnNpYzoK
KyAgICBjYXNlIFRydW5jSW50cmluc2ljOiB7CiAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyA9PSAxKSB7CiAgICAgICAgICAgICBpbnNlcnRDaGVja3MoKTsKICAgICAgICAg
ICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoSlNDb25z
dGFudCwgT3BJbmZvKG1fY29uc3RhbnROYU4pKSk7CkBAIC0yMjE3LDkgKzIyMTgsMTEgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIGludCBy
ZXN1bHRPcGVyYW5kLCBJbnRyaW4KICAgICAgICAgICAgICAgICBvcCA9IEFyaXRoUm91bmQ7CiAg
ICAgICAgICAgICBlbHNlIGlmIChpbnRyaW5zaWMgPT0gRmxvb3JJbnRyaW5zaWMpCiAgICAgICAg
ICAgICAgICAgb3AgPSBBcml0aEZsb29yOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKGludHJpbnNpYyA9PSBDZWlsSW50cmluc2ljKTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGludHJpbnNpYyA9PSBDZWlsSW50cmluc2ljKQogICAgICAgICAgICAgICAgIG9wID0g
QXJpdGhDZWlsOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlu
dHJpbnNpYyA9PSBUcnVuY0ludHJpbnNpYyk7CisgICAgICAgICAgICAgICAgb3AgPSBBcml0aFRy
dW5jOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgTm9kZSogcm91bmROb2RlID0gYWRkVG9H
cmFwaChvcCwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbiksIG9wZXJhbmQpOwogICAgICAg
ICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgcm91bmROb2RlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggMDI4YjI5ODViNGVi
ZGE5MDY0ZTMwMzQ3ZDYxYjVmMzc4NzlkZjY5My4uNmE0ZWRhMmVmODkxNjgwZTVkZmIzZjQ0ZDFm
NDA1ZWNkYWM5NDQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKQEAgLTMwNSw2ICszMDUsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2Ug
QXJpdGhSb3VuZDoKICAgICBjYXNlIEFyaXRoRmxvb3I6CiAgICAgY2FzZSBBcml0aENlaWw6Cisg
ICAgY2FzZSBBcml0aFRydW5jOgogICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUsIHN0YXRpY19j
YXN0PHVpbnRwdHJfdD4obm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpKTsKICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggMDU2NGQx
ZmI1NTQ0ZDlkOTk1NjUzMjExN2E5MTQ4ZTg2N2IxNmJlOS4uZjM4YjlmOTlmODBmYTQ2NWRhZDMx
NDVkYjllZWVkMzVhY2M1OTdkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcApAQCAtOTAsNiArOTAsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBBcml0aFJvdW5kOgogICAgIGNhc2UgQXJpdGhGbG9vcjoKICAgICBjYXNl
IEFyaXRoQ2VpbDoKKyAgICBjYXNlIEFyaXRoVHJ1bmM6CiAgICAgY2FzZSBBcml0aEZSb3VuZDoK
ICAgICBjYXNlIEFyaXRoU2luOgogICAgIGNhc2UgQXJpdGhDb3M6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA2MWQxOTQ2MmExYWQ1Yjk3MDZlODE2
NzdjZGViMWU4NmFiOGRjYTM0Li45NjEyZTE4ZDA2MWM1YzUwOTE3MzU5MWJkZTRkN2NkN2VmMmYz
MTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAg
LTM2NSw3ICszNjUsOCBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKIAogICAg
ICAgICBjYXNlIEFyaXRoUm91bmQ6CiAgICAgICAgIGNhc2UgQXJpdGhGbG9vcjoKLSAgICAgICAg
Y2FzZSBBcml0aENlaWw6IHsKKyAgICAgICAgY2FzZSBBcml0aENlaWw6CisgICAgICAgIGNhc2Ug
QXJpdGhUcnVuYzogewogICAgICAgICAgICAgaWYgKG1fZ3JhcGgudW5hcnlBcml0aFNob3VsZFNw
ZWN1bGF0ZUludDMyKG5vZGUsIEZpeHVwUGFzcykpIHsKICAgICAgICAgICAgICAgICBmaXhJbnRP
ckJvb2xlYW5FZGdlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBpbnNlcnRDaGVj
azxJbnQzMlVzZT4obV9pbmRleEluQmxvY2ssIG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggYmJkNDZlYWRhMTAxZTdlMzgzYjZkY2My
NTA1NzgyMTdiNDI4NWUwMS4uNDY3ZGIwZWQ5Zjc1N2JkZWVkNmIwZTVlYjI4NmMxOGZlN2ZjOGVj
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtMzE2LDcgKzMxNiw3IEBA
IGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKIAogICAgIGJvb2wgcm91
bmRTaG91bGRTcGVjdWxhdGVJbnQzMihOb2RlKiBhcml0aFJvdW5kLCBQcmVkaWN0aW9uUGFzcyBw
YXNzKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGFyaXRoUm91bmQtPm9wKCkgPT0gQXJpdGhSb3Vu
ZCB8fCBhcml0aFJvdW5kLT5vcCgpID09IEFyaXRoRmxvb3IgfHwgYXJpdGhSb3VuZC0+b3AoKSA9
PSBBcml0aENlaWwpOworICAgICAgICBBU1NFUlQoYXJpdGhSb3VuZC0+b3AoKSA9PSBBcml0aFJv
dW5kIHx8IGFyaXRoUm91bmQtPm9wKCkgPT0gQXJpdGhGbG9vciB8fCBhcml0aFJvdW5kLT5vcCgp
ID09IEFyaXRoQ2VpbCB8fCBhcml0aFJvdW5kLT5vcCgpID09IEFyaXRoVHJ1bmMpOwogICAgICAg
ICByZXR1cm4gYXJpdGhSb3VuZC0+Y2FuU3BlY3VsYXRlSW50MzIocGFzcykgJiYgIWhhc0V4aXRT
aXRlKGFyaXRoUm91bmQtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpICYmICFoYXNFeGl0U2l0
ZShhcml0aFJvdW5kLT5vcmlnaW4uc2VtYW50aWMsIE5lZ2F0aXZlWmVybyk7CiAgICAgfQogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCA1YjEyMGQxYWYzMTExN2E2MWVk
MmFmYzkzYzcxMGYxYWNjZTY5N2MyLi4yMjU3YmZjMGI0MDA3OTY5MGE5MjExMmIzZDYxYjQ2ZWEw
OGI1ODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtOTQzLDcgKzk0Myw3
IEBAIHN0cnVjdCBOb2RlIHsKICAgICBOb2RlRmxhZ3MgYXJpdGhOb2RlRmxhZ3MoKQogICAgIHsK
ICAgICAgICAgTm9kZUZsYWdzIHJlc3VsdCA9IG1fZmxhZ3MgJiBOb2RlQXJpdGhGbGFnc01hc2s7
Ci0gICAgICAgIGlmIChvcCgpID09IEFyaXRoTXVsIHx8IG9wKCkgPT0gQXJpdGhEaXYgfHwgb3Ao
KSA9PSBBcml0aE1vZCB8fCBvcCgpID09IEFyaXRoTmVnYXRlIHx8IG9wKCkgPT0gQXJpdGhQb3cg
fHwgb3AoKSA9PSBBcml0aFJvdW5kIHx8IG9wKCkgPT0gQXJpdGhGbG9vciB8fCBvcCgpID09IEFy
aXRoQ2VpbCB8fCBvcCgpID09IERvdWJsZUFzSW50MzIpCisgICAgICAgIGlmIChvcCgpID09IEFy
aXRoTXVsIHx8IG9wKCkgPT0gQXJpdGhEaXYgfHwgb3AoKSA9PSBBcml0aE1vZCB8fCBvcCgpID09
IEFyaXRoTmVnYXRlIHx8IG9wKCkgPT0gQXJpdGhQb3cgfHwgb3AoKSA9PSBBcml0aFJvdW5kIHx8
IG9wKCkgPT0gQXJpdGhGbG9vciB8fCBvcCgpID09IEFyaXRoQ2VpbCB8fCBvcCgpID09IEFyaXRo
VHJ1bmMgfHwgb3AoKSA9PSBEb3VibGVBc0ludDMyKQogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgcmV0dXJuIHJlc3VsdCAmIH5Ob2RlQnl0ZWNvZGVOZWVkc05lZ1plcm87CiAg
ICAgfQpAQCAtMTM1MSw2ICsxMzUxLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIEFy
aXRoUm91bmQ6CiAgICAgICAgIGNhc2UgQXJpdGhGbG9vcjoKICAgICAgICAgY2FzZSBBcml0aENl
aWw6CisgICAgICAgIGNhc2UgQXJpdGhUcnVuYzoKICAgICAgICAgY2FzZSBHZXREaXJlY3RQbmFt
ZToKICAgICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKQEAg
LTE3MzMsNyArMTczNCw3IEBAIHN0cnVjdCBOb2RlIHsKIAogICAgIGJvb2wgaGFzQXJpdGhSb3Vu
ZGluZ01vZGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gQXJpdGhSb3VuZCB8fCBv
cCgpID09IEFyaXRoRmxvb3IgfHwgb3AoKSA9PSBBcml0aENlaWw7CisgICAgICAgIHJldHVybiBv
cCgpID09IEFyaXRoUm91bmQgfHwgb3AoKSA9PSBBcml0aEZsb29yIHx8IG9wKCkgPT0gQXJpdGhD
ZWlsIHx8IG9wKCkgPT0gQXJpdGhUcnVuYzsKICAgICB9CiAKICAgICBBcml0aDo6Um91bmRpbmdN
b2RlIGFyaXRoUm91bmRpbmdNb2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAppbmRleCA4ZTJhMTMzYzI2YTQ1YWNjMjM3ZjgyM2RkZDI3OTRjZmUwYmJhYzk3Li5mMWUx
YTU2ZjE5ZGZjMWZmMjEzNDVkZTBmOTA5MTgwMDVmZDBmNjI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0xNTgsNiArMTU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEFyaXRoUm91bmQsIE5vZGVSZXN1bHROdW1iZXIp
IFwKICAgICBtYWNybyhBcml0aEZsb29yLCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAgICAgbWFjcm8o
QXJpdGhDZWlsLCBOb2RlUmVzdWx0TnVtYmVyKSBcCisgICAgbWFjcm8oQXJpdGhUcnVuYywgTm9k
ZVJlc3VsdE51bWJlcikgXAogICAgIG1hY3JvKEFyaXRoU3FydCwgTm9kZVJlc3VsdE51bWJlcikg
XAogICAgIG1hY3JvKEFyaXRoU2luLCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAgICAgbWFjcm8oQXJp
dGhDb3MsIE5vZGVSZXN1bHROdW1iZXIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggODNm
YTA4ZDRhZTRlNmY2YTJmNWYzZmRmMWJmNDZkNjIzNDY4MjViZi4uZGY0ZDUwN2NhMmQ4ZTRhMTM5
ODBiNTVkYzE5NzYzYWQ0NThlYmQwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTM4OSw3
ICszODksOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAKICAgICAgICAgY2FzZSBBcml0aFJvdW5kOgogICAgICAgICBjYXNlIEFyaXRoRmxvb3I6
Ci0gICAgICAgIGNhc2UgQXJpdGhDZWlsOiB7CisgICAgICAgIGNhc2UgQXJpdGhDZWlsOgorICAg
ICAgICBjYXNlIEFyaXRoVHJ1bmM6IHsKICAgICAgICAgICAgIGlmIChpc0ludDMyT3JCb29sZWFu
U3BlY3VsYXRpb24obm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSkgJiYgbV9ncmFwaC5yb3VuZFNo
b3VsZFNwZWN1bGF0ZUludDMyKG5vZGUsIG1fcGFzcykpCiAgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGEyNTIxZGIxYjUz
NzA0YzFlMDA0NjYyYjA2YmRlOWVkOTQxYmM4MWUuLjgwNzdiODU5MDE4YjRmZjJhZGJkNzJiMTFj
NDExNjRmY2I1NTJlNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCkBAIC0xODYsNiArMTg2LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0
U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQXJp
dGhSb3VuZDoKICAgICBjYXNlIEFyaXRoRmxvb3I6CiAgICAgY2FzZSBBcml0aENlaWw6CisgICAg
Y2FzZSBBcml0aFRydW5jOgogICAgIGNhc2UgQXJpdGhTaW46CiAgICAgY2FzZSBBcml0aENvczoK
ICAgICBjYXNlIEFyaXRoTG9nOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAppbmRleCBjNTdjNTZkYWExZmUzNzBhMzljZWJlZGNmOTJiMmY0MWQz
MjlhZTkzLi4zYWQwM2RjYmEyM2M5NjY2ZGU2ZDgzOWIyNjYxYmQzM2Y2ZDkyMDMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtNDUw
NSw2ICs0NTA1LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJvdW5kaW5n
KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBj
YXNlIEFyaXRoVHJ1bmM6IHsKKyAgICAgICAgICAgIEZQUlRlbXBvcmFyeSByb3VuZGVkKHRoaXMp
OworICAgICAgICAgICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJvdW5kZWQuZnByKCk7CisgICAgICAg
ICAgICBtX2ppdC5yb3VuZFRvd2FyZFplcm9Eb3VibGUodmFsdWVGUFIsIHJlc3VsdEZQUik7Cisg
ICAgICAgICAgICBzZXRSZXN1bHQocmVzdWx0RlBSKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICB9CkBAIC00NTE2LDkgKzQ1MjQsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoUm91bmRpbmcoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24oanNSb3VuZCwgcmVzdWx0RlBSLCB2YWx1ZUZQUik7CiAgICAgICAgIGVs
c2UgaWYgKG5vZGUtPm9wKCkgPT0gQXJpdGhGbG9vcikKICAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24oZmxvb3IsIHJlc3VsdEZQUiwgdmFsdWVGUFIpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIEFTU0VSVChub2RlLT5vcCgpID09IEFyaXRoQ2VpbCk7CisgICAgICAgIGVsc2UgaWYgKG5v
ZGUtPm9wKCkgPT0gQXJpdGhDZWlsKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihjZWlsLCBy
ZXN1bHRGUFIsIHZhbHVlRlBSKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQo
bm9kZS0+b3AoKSA9PSBBcml0aFRydW5jKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24odHJ1
bmMsIHJlc3VsdEZQUiwgdmFsdWVGUFIpOwogICAgICAgICB9CiAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgICAgIHNldFJlc3VsdChyZXN1bHRGUFIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDQ1ODEzYTQxMTg4OTU2
NmM0NzhhZDY0ZDAyMmMxMzhhZWEwYjc5ZmUuLmE2ZjkwYzdkMDc2Zjc1MmY2ZDM2ZjdhZmU3NmU0
ZTZjNmI1OGVhNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKQEAgLTIzNzMsOCArMjM3Myw2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAg
ICB2b2lkIGNvbXBpbGVBcml0aE1vZChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhQb3co
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZUFyaXRoUm91bmRpbmcoTm9kZSopOwotICAgIHZvaWQg
Y29tcGlsZUFyaXRoRmxvb3IoTm9kZSopOwotICAgIHZvaWQgY29tcGlsZUFyaXRoQ2VpbChOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhSYW5kb20oTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUFyaXRoU3FydChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhMb2coTm9kZSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKaW5kZXggZDdjZjAzN2E5NTBlYmQ1ODYzNWRhZWRmYzRlNzdlYjc5MjRiY2E4Ni4uNTFmM2U0
NzQ3OTBmYmJiMTQ4NTU3YjhkNTljNDU2MjFmZDU5MGVhNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yMzA2LDYg
KzIzMDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBBcml0aFJvdW5kOgogICAgIGNhc2UgQXJpdGhGbG9vcjoKICAgICBjYXNlIEFyaXRoQ2Vp
bDoKKyAgICBjYXNlIEFyaXRoVHJ1bmM6CiAgICAgICAgIGNvbXBpbGVBcml0aFJvdW5kaW5nKG5v
ZGUpOwogICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggOGExODE5NGM1ZDA5ODQxYjJlZjEyMjRhYWRj
MTM4ZjNmZGI4NzVmOS4uYzRmZGU5ZmIwNDEyMWI2OWNlMTQ0MWZhNTMyYTc4MDEwZWYzZmQ2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCkBAIC0yNDQ0LDYgKzI0NDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBBcml0aFJvdW5kOgogICAgIGNhc2UgQXJpdGhGbG9vcjoKICAg
ICBjYXNlIEFyaXRoQ2VpbDoKKyAgICBjYXNlIEFyaXRoVHJ1bmM6CiAgICAgICAgIGNvbXBpbGVB
cml0aFJvdW5kaW5nKG5vZGUpOwogICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDcxYTJmYjJkMzQxMGE1MzVhMmI3
YzdkYjBjMWNmYTc3ZmIzN2RiNjkuLjJjODM4NDg5MmNlZDg0ZmE0MzkyMzFmMDI4M2EyN2E2YmVl
OTRkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKQEAgLTk5LDYgKzk5LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBBcml0aFJvdW5kOgogICAgIGNhc2UgQXJpdGhGbG9vcjoKICAg
ICBjYXNlIEFyaXRoQ2VpbDoKKyAgICBjYXNlIEFyaXRoVHJ1bmM6CiAgICAgY2FzZSBBcml0aFNx
cnQ6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEFyaXRoRlJvdW5kOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDY1NGJkNmY5MTZk
OWI4Y2NjMDczYjc0NzM0OGJkZDE3YzlhMDc5YWYuLjRjMDhlYTY3MzA0NWVlZTdhZjY5MDM1OTE3
OWUxMmRjM2JhZWY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKQEAgLTUzMiw2ICs1MzIsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICBjYXNlIEFyaXRoQ2VpbDoKICAgICAgICAgICAgIGNvbXBpbGVBcml0aENlaWwoKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFyaXRoVHJ1bmM6CisgICAgICAgICAgICBj
b21waWxlQXJpdGhUcnVuYygpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJp
dGhTcXJ0OgogICAgICAgICAgICAgY29tcGlsZUFyaXRoU3FydCgpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0xOTc2LDYgKzE5NzksMTYgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
ICAgIHNldERvdWJsZShpbnRlZ2VyVmFsdWUpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUFy
aXRoVHJ1bmMoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93RG91YmxlKG1fbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuZG91YmxlVHJ1bmMo
dmFsdWUpOworICAgICAgICBpZiAocHJvZHVjZXNJbnRlZ2VyKG1fbm9kZS0+YXJpdGhSb3VuZGlu
Z01vZGUoKSkpCisgICAgICAgICAgICBzZXRJbnQzMihjb252ZXJ0RG91YmxlVG9JbnQzMihyZXN1
bHQsIHNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG1fbm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0RG91YmxlKHJlc3VsdCk7CisgICAgfQor
CiAgICAgdm9pZCBjb21waWxlQXJpdGhTcXJ0KCkgeyBzZXREb3VibGUobV9vdXQuZG91YmxlU3Fy
dChsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpKTsgfQogCiAgICAgdm9pZCBjb21waWxlQXJp
dGhMb2coKSB7IHNldERvdWJsZShtX291dC5kb3VibGVMb2cobG93RG91YmxlKG1fbm9kZS0+Y2hp
bGQxKCkpKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0
cHV0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmNwcAppbmRleCAx
YmZjYTY1N2MxYzlhNjEwODUxNWJjODEyNmNlNjcyZWY4YjMwZmM2Li5hNWFlMDA2ZDFiYWE2NzAw
N2UzMDA4YWQ2ZTZjNWMyZGUzMjk3MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE91dHB1dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
dXRwdXQuY3BwCkBAIC0xNDYsNiArMTQ2LDIyIEBAIExWYWx1ZSBPdXRwdXQ6OmRvdWJsZVRvVUlu
dChMVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorTFZhbHVlIE91dHB1dDo6
ZG91YmxlVHJ1bmMoTFZhbHVlIHZhbHVlKQoreworICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6c3Vw
cG9ydHNGbG9hdGluZ1BvaW50Um91bmRpbmcoKSkgeworICAgICAgICBQYXRjaHBvaW50VmFsdWUq
IHJlc3VsdCA9IHBhdGNocG9pbnQoRG91YmxlKTsKKyAgICAgICAgcmVzdWx0LT5hcHBlbmQodmFs
dWUsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICByZXN1bHQtPnNldEdlbmVyYXRv
cigKKyAgICAgICAgICAgIFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBqaXQucm91bmRUb3dhcmRa
ZXJvRG91YmxlKHBhcmFtc1sxXS5mcHIoKSwgcGFyYW1zWzBdLmZwcigpKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICByZXN1bHQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGRvdWJsZSAoKnRydW5jRG91YmxlKShkb3VibGUp
ID0gdHJ1bmM7CisgICAgcmV0dXJuIGNhbGxXaXRob3V0U2lkZUVmZmVjdHMoRG91YmxlLCB0cnVu
Y0RvdWJsZSwgdmFsdWUpOworfQorCiBMVmFsdWUgT3V0cHV0Ojp1bnNpZ25lZFRvRG91YmxlKExW
YWx1ZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gaW50VG9Eb3VibGUoemVyb0V4dCh2YWx1ZSwgSW50
NjQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCmluZGV4IGQ4YzkyMTlmZTNj
MmU5Mzk4MzdlMmZjNmM2NGQyMzU5ODk1ZmE1MDEuLmIzNWUxNTcwMDJkZjY4YjMxYmZjOTY0NGRi
MTI3NzNkOTk1OGNjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T3V0cHV0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaApAQCAt
MTU2LDYgKzE1Niw3IEBAIGNsYXNzIE91dHB1dCA6IHB1YmxpYyBDb21tb25WYWx1ZXMgewogICAg
IExWYWx1ZSBkb3VibGVBYnMoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmRO
ZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpBYnMsIG9yaWdpbigpLCB2YWx1ZSk7IH0KICAgICBM
VmFsdWUgZG91YmxlQ2VpbChMVmFsdWUgb3BlcmFuZCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5k
TmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Q2VpbCwgb3JpZ2luKCksIG9wZXJhbmQpOyB9CiAg
ICAgTFZhbHVlIGRvdWJsZUZsb29yKExWYWx1ZSBvcGVyYW5kKSB7IHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpGbG9vciwgb3JpZ2luKCksIG9wZXJhbmQp
OyB9CisgICAgTFZhbHVlIGRvdWJsZVRydW5jKExWYWx1ZSk7CiAKICAgICBMVmFsdWUgZG91Ymxl
U2luKExWYWx1ZSB2YWx1ZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggMjVkMDAxNDBjMGI1YTBlN2JmZjhmNjhhMmRlYmU3YzQ0
NjY2MmQ0OS4uYzk5YjkyZTZiMWIxYTkzOTA4ZjRlNGJhYWE0MWIxYWU4MTA3YmE2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtNzQwLDYg
Kzc0MCw3IEBAIHR5cGVkZWYgTWF0aFRodW5rQ2FsbGluZ0NvbnZlbnRpb24oKk1hdGhUaHVuayko
TWF0aFRodW5rQ2FsbGluZ0NvbnZlbnRpb24pOwogLy8gTVNWQyBkb2VzIG5vdCBhY2NlcHQgZmxv
b3IsIGV0YywgdG8gYmUgY2FsbGVkIGRpcmVjdGx5IGZyb20gaW5saW5lIGFzc2VtYmx5LCBzbyB3
ZSBuZWVkIHRvIHdyYXAgdGhlc2UgZnVuY3Rpb25zLgogc3RhdGljIGRvdWJsZSAoX2NkZWNsICpm
bG9vckZ1bmN0aW9uKShkb3VibGUpID0gZmxvb3I7CiBzdGF0aWMgZG91YmxlIChfY2RlY2wgKmNl
aWxGdW5jdGlvbikoZG91YmxlKSA9IGNlaWw7CitzdGF0aWMgZG91YmxlIChfY2RlY2wgKnRydW5j
RnVuY3Rpb24pKGRvdWJsZSkgPSB0cnVuYzsKIHN0YXRpYyBkb3VibGUgKF9jZGVjbCAqZXhwRnVu
Y3Rpb24pKGRvdWJsZSkgPSBleHA7CiBzdGF0aWMgZG91YmxlIChfY2RlY2wgKmxvZ0Z1bmN0aW9u
KShkb3VibGUpID0gbG9nOwogc3RhdGljIGRvdWJsZSAoX2NkZWNsICpqc1JvdW5kRnVuY3Rpb24p
KGRvdWJsZSkgPSBqc1JvdW5kOwpAQCAtNzcxLDYgKzc3Miw3IEBAIGRlZmluZVVuYXJ5RG91Ymxl
T3BXcmFwcGVyKGV4cCk7CiBkZWZpbmVVbmFyeURvdWJsZU9wV3JhcHBlcihsb2cpOwogZGVmaW5l
VW5hcnlEb3VibGVPcFdyYXBwZXIoZmxvb3IpOwogZGVmaW5lVW5hcnlEb3VibGVPcFdyYXBwZXIo
Y2VpbCk7CitkZWZpbmVVbmFyeURvdWJsZU9wV3JhcHBlcih0cnVuYyk7CiAKIHN0YXRpYyBjb25z
dCBkb3VibGUgb25lQ29uc3RhbnQgPSAxLjA7CiBzdGF0aWMgY29uc3QgZG91YmxlIG5lZ2F0aXZl
SGFsZkNvbnN0YW50ID0gLTAuNTsKQEAgLTg0Miw2ICs4NDQsMjkgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGNlaWxUaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgcmV0dXJuIGppdC5maW5hbGl6
ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImNlaWwiKTsKIH0KIAorTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHRydW5jVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQoreworICAgIFNw
ZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKKyAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFw
cGVyKHRydW5jKSB8fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQorICAgICAgICByZXR1
cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmpp
dFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9u
SW50SnVtcDsKKyAgICBqaXQubG9hZEludDMyQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDAsIG5vbkludEp1bXApOworICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMCk7CisgICAgbm9uSW50SnVtcC5saW5rKCZqaXQpOworICAgIGppdC5sb2Fk
RG91YmxlQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmVnVDApOworICAgIGlmIChqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50Um91
bmRpbmcoKSkKKyAgICAgICAgaml0LnJvdW5kVG93YXJkWmVyb0RvdWJsZShTcGVjaWFsaXplZFRo
dW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKKyAgICBlbHNl
CisgICAgICAgIGppdC5jYWxsRG91YmxlVG9Eb3VibGVQcmVzZXJ2aW5nUmV0dXJuKFVuYXJ5RG91
YmxlT3BXcmFwcGVyKHRydW5jKSk7CisKKyAgICBTcGVjaWFsaXplZFRodW5rSklUOjpKdW1wTGlz
dCBkb3VibGVSZXN1bHQ7CisgICAgaml0LmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKFNwZWNp
YWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBkb3Vi
bGVSZXN1bHQsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDEpOworICAgIGppdC5yZXR1cm5J
bnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CisgICAgZG91YmxlUmVzdWx0Lmxpbmso
JmppdCk7CisgICAgaml0LnJldHVybkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1Qw
KTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENh
bGwodm0pLCAidHJ1bmMiKTsKK30KKwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJvdW5kVGh1bmtH
ZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCmluZGV4IDlmYjhh
YmI0NGVhMjJkYmQ4NTI3NTZhOWNiOGE5ZGJjZWFjZDM3ODkuLjgyZDQ3ZmE0Njg3ZmJjZGE5YjNh
YTQyOGIxNGQ5MDNmMzBkNGY4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuaApAQCAtNjMsNiArNjMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgc3Fy
dFRodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcG93VGh1bmtHZW5l
cmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0q
KTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiByYW5kb21UaHVua0dlbmVyYXRvcihWTSopOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHRydW5jVGh1bmtHZW5lcmF0b3IoVk0qKTsKIAogfQogI2VuZGlm
IC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAppbmRleCA2YmI1MTgwYjZlN2RkZDdjNWI2YzFkNTMzMWQ3YWU4MjRk
MmUwMjMyLi45ZGVhNzhjMTk1YTU3YTY0Mjg0ZWJkYmNiOTE3YTAyNmRkZjcxNzU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAg
LTMxNSw2ICszMTUsNyBAQAogICAgIG1hY3JvKEludGVybmFsUHJvbWlzZSkgXAogICAgIG1hY3Jv
KGFicykgXAogICAgIG1hY3JvKGZsb29yKSBcCisgICAgbWFjcm8odHJ1bmMpIFwKICAgICBtYWNy
byhpc0Zpbml0ZSkgXAogICAgIG1hY3JvKGlzTmFOKSBcCiAgICAgbWFjcm8oY3JlYXRlKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IGQ4ZGUwMDZlYTU1
NDFhNWVjZDdmZjQxMWExYTBhNjFmODVjODZjM2YuLjA4ZmRlYjQ0Nzk5NzIyNWE3MmU3NjFmY2Y5
NzMwYjIzNDdiOWEwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5oCkBAIC01Niw2ICs1Niw3IEBAIGVudW0gSlNfRVhQT1JUX1BSSVZBVEUgSW50cmluc2ljIHsK
ICAgICBJTXVsSW50cmluc2ljLAogICAgIFJhbmRvbUludHJpbnNpYywKICAgICBGUm91bmRJbnRy
aW5zaWMsCisgICAgVHJ1bmNJbnRyaW5zaWMsCiAKICAgICAvLyBHZXR0ZXIgaW50cmluc2ljcy4K
ICAgICBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDE3NTUxM2ZmMTc4YzgyNTJlMDM2
NGU3YWJiY2Q1MTdlNjBhY2VlNDcuLjA3NzJjMTc2ODExZTRiMWM1NGZlZjdhZDgxOWI5ODE2ZGQw
OWViZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKQEAgLTUyNiw2ICs1MjYsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAg
IEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jRmxvb3IgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRo
aXMsIDAsIFN0cmluZygpLCBtYXRoUHJvdG9GdW5jRmxvb3IsIEZsb29ySW50cmluc2ljKTsKICAg
ICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lzRmluaXRlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0lzRmluaXRlKTsKICAgICBKU0Z1bmN0aW9u
KiBwcml2YXRlRnVuY0lzTmFOID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJp
bmcoKSwgZ2xvYmFsRnVuY0lzTmFOKTsKKyAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1RydW5j
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgbWF0aFByb3RvRnVu
Y1RydW5jLCBUcnVuY0ludHJpbnNpYyk7CiAKICAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0dl
dFRlbXBsYXRlT2JqZWN0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmco
KSwgZ2V0VGVtcGxhdGVPYmplY3QpOwogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVG9MZW5n
dGggPSBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdFRv
TGVuZ3RoQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpOwpAQCAtNTYzLDYgKzU2NCw3IEBAIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dl
ck5hbWUgIyMgQ29uc3RydWN0CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5TdHJpbmdQcml2YXRlTmFtZSwgc3RyaW5nQ29uc3RydWN0b3IsIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmFic1ByaXZhdGVOYW1lLCBwcml2YXRlRnVuY0FicywgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+Zmxvb3JQcml2YXRlTmFtZSwgcHJpdmF0ZUZ1bmNGbG9vciwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+dHJ1bmNQcml2YXRlTmFtZSwgcHJpdmF0ZUZ1bmNUcnVuYywgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+aXNGaW5pdGVQcml2YXRlTmFtZSwgcHJpdmF0ZUZ1bmNJc0Zpbml0
ZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+aXNOYU5Qcml2YXRlTmFtZSwgcHJpdmF0ZUZ1bmNJ
c05hTiwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+UHJvbWlzZVByaXZhdGVOYW1lLCBwcm9taXNl
Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKaW5kZXggOTk3YjA2NDdlNTkz
NWQ2ZWFmYzc2ZWViZjQ5ODI5ZjgxZTIxNGZjZC4uNjZkMzFiNzRkOWE4NzY3MjRhOTdjYTUwYTlh
NjNhMThjYzk2MzZlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWF0aE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9i
amVjdC5jcHAKQEAgLTY3LDcgKzY3LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jU2luaChFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY1NxcnQoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hdGhQcm90b0Z1bmNUYW4oRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUYW5oKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVHJ1bmMoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNJTXVsKEV4ZWNTdGF0ZSopOwogCiB9CkBA
IC0xMjksNyArMTI4LDcgQEAgdm9pZCBNYXRoT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgInNxcnQiKSwgMSwgbWF0aFByb3RvRnVuY1NxcnQsIFNxcnRJbnRyaW5zaWMsIERv
bnRFbnVtKTsKICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAidGFuIiksIDEsIG1h
dGhQcm90b0Z1bmNUYW4sIE5vSW50cmluc2ljLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgInRhbmgiKSwgMSwgbWF0aFByb3RvRnVuY1RhbmgsIE5vSW50cmlu
c2ljLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInRydW5j
IiksIDEsIG1hdGhQcm90b0Z1bmNUcnVuYywgTm9JbnRyaW5zaWMsIERvbnRFbnVtKTsKKyAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAidHJ1bmMiKSwgMSwgbWF0aFByb3RvRnVuY1Ry
dW5jLCBUcnVuY0ludHJpbnNpYywgRG9udEVudW0pOwogICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJpbXVsIiksIDIsIG1hdGhQcm90b0Z1bmNJTXVsLCBJTXVsSW50cmluc2ljLCBE
b250RW51bSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hdGhPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3Qu
aAppbmRleCA5ZDFjMTgxYzBmMWVmYWEyMGIzNWY3ZTg1ZDhkZmFkYmZmNDYzNzliLi4xYTEzM2Q1
NTRkYTQ0MGE3NWRkNDE2Njc3NmVlNzhlOGQyYjJkZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCkBAIC01Myw2ICs1Myw3IEBAIGNsYXNzIE1hdGhPYmpl
Y3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY0FicyhFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY0Zsb29yKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVHJ1bmMoRXhlY1N0YXRlKik7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNTU2YWFj
NDYyNDI5N2U1MjUxYzU3ZWFlYmNmMThkZjY4OTJkMTdjMi4uODI2NGIxMTBiMzI5MzVmMzM0MTNm
MDM0ZDc2YzY2M2M3Zjc1YWJlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApA
QCAtNDc5LDYgKzQ3OSw4IEBAIHN0YXRpYyBUaHVua0dlbmVyYXRvciB0aHVua0dlbmVyYXRvckZv
ckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gZmxvb3JUaHVu
a0dlbmVyYXRvcjsKICAgICBjYXNlIENlaWxJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiBjZWls
VGh1bmtHZW5lcmF0b3I7CisgICAgY2FzZSBUcnVuY0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJu
IHRydW5jVGh1bmtHZW5lcmF0b3I7CiAgICAgY2FzZSBSb3VuZEludHJpbnNpYzoKICAgICAgICAg
cmV0dXJuIHJvdW5kVGh1bmtHZW5lcmF0b3I7CiAgICAgY2FzZSBFeHBJbnRyaW5zaWM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGgtcm91bmRpbmct
aW5maW5pdHkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGgtcm91
bmRpbmctaW5maW5pdHkuanMKaW5kZXggMjFlMDIxZTAwYmM2MTA4NTBmYzQyOWIzNmQ2YzQ4MWNk
ZWY3ZmFkMC4uYTkzNTM4MDA0MTMxNGZiZjJkMDExYmU2MDEzMjIyODQwODMxMjA2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXJvdW5kaW5nLWlu
ZmluaXR5LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbWF0aC1y
b3VuZGluZy1pbmZpbml0eS5qcwpAQCAtMjEsNiArMjEsMTIgQEAgZnVuY3Rpb24gdGVzdENlaWwo
dmFsdWUpCiB9CiBub0lubGluZSh0ZXN0Q2VpbCk7CiAKK2Z1bmN0aW9uIHRlc3RUcnVuYyh2YWx1
ZSkKK3sKKyAgICByZXR1cm4gTWF0aC50cnVuYyh2YWx1ZSk7Cit9Citub0lubGluZSh0ZXN0VHJ1
bmMpOworCiBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CiAgICAgc2hvdWxkQmUodGVz
dFJvdW5kKEluZmluaXR5KSwgSW5maW5pdHkpOwogICAgIHNob3VsZEJlKHRlc3RSb3VuZCgtSW5m
aW5pdHkpLCAtSW5maW5pdHkpOwpAQCAtMjgsNCArMzQsNiBAQCBmdW5jdGlvbiB0ZXN0Q2VpbCh2
YWx1ZSkKICAgICBzaG91bGRCZSh0ZXN0Rmxvb3IoLUluZmluaXR5KSwgLUluZmluaXR5KTsKICAg
ICBzaG91bGRCZSh0ZXN0Q2VpbChJbmZpbml0eSksIEluZmluaXR5KTsKICAgICBzaG91bGRCZSh0
ZXN0Q2VpbCgtSW5maW5pdHkpLCAtSW5maW5pdHkpOworICAgIHNob3VsZEJlKHRlc3RUcnVuYyhJ
bmZpbml0eSksIEluZmluaXR5KTsKKyAgICBzaG91bGRCZSh0ZXN0VHJ1bmMoLUluZmluaXR5KSwg
LUluZmluaXR5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvbWF0aC1yb3VuZGluZy1uYW4uanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL21hdGgtcm91bmRpbmctbmFuLmpzCmluZGV4IGVjY2NkYmM3ZjdkNjY5ZTVlM2Q4ODlm
MTQ1MmM4YTNkY2ExN2NjNTguLmRlMWUxMzQ0YTA2ZGEwNWUyYWQ4ZGY3MDU1MmI3Njg3Y2MyNDFj
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbWF0aC1y
b3VuZGluZy1uYW4uanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9t
YXRoLXJvdW5kaW5nLW5hbi5qcwpAQCAtMjEsOCArMjEsMTUgQEAgZnVuY3Rpb24gdGVzdENlaWwo
dmFsdWUpCiB9CiBub0lubGluZSh0ZXN0Q2VpbCk7CiAKK2Z1bmN0aW9uIHRlc3RUcnVuYyh2YWx1
ZSkKK3sKKyAgICByZXR1cm4gTWF0aC50cnVuYyh2YWx1ZSk7Cit9Citub0lubGluZSh0ZXN0VHJ1
bmMpOworCiBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CiAgICAgc2hvdWxkQmUoTnVt
YmVyLmlzTmFOKHRlc3RSb3VuZChOYU4pKSwgdHJ1ZSk7CiAgICAgc2hvdWxkQmUoTnVtYmVyLmlz
TmFOKHRlc3RGbG9vcihOYU4pKSwgdHJ1ZSk7CiAgICAgc2hvdWxkQmUoTnVtYmVyLmlzTmFOKHRl
c3RDZWlsKE5hTikpLCB0cnVlKTsKKyAgICBzaG91bGRCZShOdW1iZXIuaXNOYU4odGVzdFRydW5j
KE5hTikpLCB0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvbWF0aC1yb3VuZGluZy1uZWdhdGl2ZS16ZXJvLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXJvdW5kaW5nLW5lZ2F0aXZlLXplcm8uanMKaW5kZXgg
YWJhZTI3ODUwYzAyOTkwMjEzM2M2MDk0ZDFkNWMyNzk5YmM1N2FiNy4uMWE1YmFhMjRiZWE3MzMw
M2ZkM2ZkMTUxM2NmZDM0NjYxZTMyY2IyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXJvdW5kaW5nLW5lZ2F0aXZlLXplcm8uanMKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXJvdW5kaW5nLW5lZ2F0aXZlLXpl
cm8uanMKQEAgLTY3LDQgKzY3LDEzIEBAIGZ1bmN0aW9uIHRlc3RSb3VuZE5vbk5lZ2F0aXZlWmVy
bzIodmFsdWUpCiAgICAgc2hvdWxkQmUoMSAvIHRlc3RSb3VuZE5vbk5lZ2F0aXZlWmVybzIoMC4x
KSwgSW5maW5pdHkpOwogfQogCitmdW5jdGlvbiB0ZXN0VHJ1bmModmFsdWUpCit7CisgICAgcmV0
dXJuIE1hdGgudHJ1bmModmFsdWUpOworfQorbm9JbmxpbmUodGVzdFRydW5jKTsKIAorZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIHNob3VsZEJlKDEgLyB0ZXN0VHJ1bmMoMC4w
KSwgSW5maW5pdHkpOworICAgIHNob3VsZEJlKDEgLyB0ZXN0VHJ1bmMoLTAuMCksIC1JbmZpbml0
eSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21h
dGgtdHJ1bmMtYXJpdGgtcm91bmRpbmctbW9kZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvbWF0aC10cnVuYy1hcml0aC1yb3VuZGluZy1tb2RlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRkZmIxZTM5MTM5NzhjYTU3MDU2NDY2ZTQ4NjVlNzQwMGM4ZmE5MjYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGgtdHJ1bmMtYXJpdGgt
cm91bmRpbmctbW9kZS5qcwpAQCAtMCwwICsxLDg1IEBACitmdW5jdGlvbiBmaXJzdENhcmVBYm91
dFplcm9TZWNvbmREb2VzTm90KGEpIHsKKyAgICB2YXIgcmVzdWx0QSA9IE1hdGgudHJ1bmMoYSk7
CisgICAgdmFyIHJlc3VsdEIgPSBNYXRoLnRydW5jKGEpfDA7CisgICAgcmV0dXJuIHsgcmVzdWx0
QTpyZXN1bHRBLCByZXN1bHRCOnJlc3VsdEIgfTsKK30KK25vSW5saW5lKGZpcnN0Q2FyZUFib3V0
WmVyb1NlY29uZERvZXNOb3QpOworCitmdW5jdGlvbiBmaXJzdERvTm90Q2FyZUFib3V0WmVyb1Nl
Y29uZERvZXMoYSkgeworICAgIHZhciByZXN1bHRBID0gTWF0aC50cnVuYyhhKXwwOworICAgIHZh
ciByZXN1bHRCID0gTWF0aC50cnVuYyhhKTsKKyAgICByZXR1cm4geyByZXN1bHRBOnJlc3VsdEEs
IHJlc3VsdEI6cmVzdWx0QiB9OworfQorbm9JbmxpbmUoZmlyc3REb05vdENhcmVBYm91dFplcm9T
ZWNvbmREb2VzKTsKKworLy8gV2FybXVwIHdpdGggZG91YmxlcywgYnV0IG5vdGhpbmcgdGhhdCB3
b3VsZCB0cnVuYyB0byAtMCB0byBlbnN1cmUgd2UgbmV2ZXIKKy8vIHNlZSBhIGRvdWJsZSBhcyBy
ZXN1bHQuIFRoZSByZXN1bHQgbXVzdCBiZSBpbnRlZ2VycywgdGhlIGlucHV0IGlzIGtlcHQgdG8g
c21hbGwgdmFsdWVzLgorZnVuY3Rpb24gd2FybXVwKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMWU0OyArK2kpIHsKKyAgICAgICAgZmlyc3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lc05vdCg0
Mi42ICsgaSk7CisgICAgICAgIGZpcnN0RG9Ob3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lcyg0Mi40
ICsgaSk7CisgICAgfQorfQord2FybXVwKCk7CisKK2Z1bmN0aW9uIHZlcmlmeU5lZ2F0aXZlWmVy
b0lzUHJlc2VydmVkKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAg
ICAgICAgdmFyIHJlc3VsdDEgPSBmaXJzdENhcmVBYm91dFplcm9TZWNvbmREb2VzTm90KC0wLjEp
OworICAgICAgICBpZiAoMSAvIHJlc3VsdDEucmVzdWx0QSAhPT0gLUluZmluaXR5KSB7CisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCBmaXJzdENhcmVBYm91dFplcm9TZWNvbmRE
b2VzTm90KC0wLjEpLCByZXN1bHRBID0gIiArIHJlc3VsdDEucmVzdWx0QSk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKDEgLyByZXN1bHQxLnJlc3VsdEIgIT09IEluZmluaXR5KSB7CisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCBmaXJzdENhcmVBYm91dFplcm9TZWNvbmREb2Vz
Tm90KC0wLjEpLCByZXN1bHRCID0gIiArIHJlc3VsdDEucmVzdWx0Qik7CisgICAgICAgIH0KKyAg
ICAgICAgdmFyIHJlc3VsdDIgPSBmaXJzdERvTm90Q2FyZUFib3V0WmVyb1NlY29uZERvZXMoLTAu
MSk7CisgICAgICAgIGlmICgxIC8gcmVzdWx0Mi5yZXN1bHRBICE9PSBJbmZpbml0eSkgeworICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3REb05vdENhcmVBYm91dFplcm9T
ZWNvbmREb2VzKC0wLjEpLCByZXN1bHRBID0gIiArIHJlc3VsdDEucmVzdWx0QSk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKDEgLyByZXN1bHQyLnJlc3VsdEIgIT09IC1JbmZpbml0eSkgeworICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3REb05vdENhcmVBYm91dFplcm9T
ZWNvbmREb2VzKC0wLjEpLCByZXN1bHRCID0gIiArIHJlc3VsdDEucmVzdWx0Qik7CisgICAgICAg
IH0KKyAgICAgICAgdmFyIHJlc3VsdDMgPSBmaXJzdENhcmVBYm91dFplcm9TZWNvbmREb2VzTm90
KC0wLjApOworICAgICAgICBpZiAoMSAvIHJlc3VsdDMucmVzdWx0QSAhPT0gLUluZmluaXR5KSB7
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCBmaXJzdENhcmVBYm91dFplcm9T
ZWNvbmREb2VzTm90KC0wLjApLCByZXN1bHRBID0gIiArIHJlc3VsdDMucmVzdWx0QSk7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKDEgLyByZXN1bHQzLnJlc3VsdEIgIT09IEluZmluaXR5KSB7Cisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCBmaXJzdENhcmVBYm91dFplcm9TZWNv
bmREb2VzTm90KC0wLjApLCByZXN1bHRCID0gIiArIHJlc3VsdDMucmVzdWx0Qik7CisgICAgICAg
IH0KKyAgICAgICAgdmFyIHJlc3VsdDQgPSBmaXJzdERvTm90Q2FyZUFib3V0WmVyb1NlY29uZERv
ZXMoLTAuMCk7CisgICAgICAgIGlmICgxIC8gcmVzdWx0NC5yZXN1bHRBICE9PSBJbmZpbml0eSkg
eworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3REb05vdENhcmVBYm91
dFplcm9TZWNvbmREb2VzKC0wLjApLCByZXN1bHRBID0gIiArIHJlc3VsdDQucmVzdWx0QSk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKDEgLyByZXN1bHQ0LnJlc3VsdEIgIT09IC1JbmZpbml0eSkg
eworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3REb05vdENhcmVBYm91
dFplcm9TZWNvbmREb2VzKC0wLjApLCByZXN1bHRCID0gIiArIHJlc3VsdDQucmVzdWx0Qik7Cisg
ICAgICAgIH0KKyAgICAgICAgdmFyIHJlc3VsdDUgPSBmaXJzdENhcmVBYm91dFplcm9TZWNvbmRE
b2VzTm90KDAuMCk7CisgICAgICAgIGlmICgxIC8gcmVzdWx0NS5yZXN1bHRBICE9PSBJbmZpbml0
eSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3RDYXJlQWJvdXRa
ZXJvU2Vjb25kRG9lc05vdCgwLjApLCByZXN1bHRBID0gIiArIHJlc3VsdDUucmVzdWx0QSk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKDEgLyByZXN1bHQ1LnJlc3VsdEIgIT09IEluZmluaXR5KSB7
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCBmaXJzdENhcmVBYm91dFplcm9T
ZWNvbmREb2VzTm90KDAuMCksIHJlc3VsdEIgPSAiICsgcmVzdWx0NS5yZXN1bHRCKTsKKyAgICAg
ICAgfQorICAgICAgICB2YXIgcmVzdWx0NiA9IGZpcnN0RG9Ob3RDYXJlQWJvdXRaZXJvU2Vjb25k
RG9lcygwLjApOworICAgICAgICBpZiAoMSAvIHJlc3VsdDYucmVzdWx0QSAhPT0gSW5maW5pdHkp
IHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIGZpcnN0RG9Ob3RDYXJlQWJv
dXRaZXJvU2Vjb25kRG9lcygwLjApLCByZXN1bHRBID0gIiArIHJlc3VsdDYucmVzdWx0QSk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKDEgLyByZXN1bHQ2LnJlc3VsdEIgIT09IEluZmluaXR5KSB7
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCBmaXJzdERvTm90Q2FyZUFib3V0
WmVyb1NlY29uZERvZXMoMC4wKSwgcmVzdWx0QiA9ICIgKyByZXN1bHQ2LnJlc3VsdEIpOworICAg
ICAgICB9CisgICAgICAgIHZhciByZXN1bHQ3ID0gZmlyc3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9l
c05vdCgwLjEpOworICAgICAgICBpZiAoMSAvIHJlc3VsdDcucmVzdWx0QSAhPT0gSW5maW5pdHkp
IHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIGZpcnN0Q2FyZUFib3V0WmVy
b1NlY29uZERvZXNOb3QoMC4xKSwgcmVzdWx0QSA9ICIgKyByZXN1bHQ3LnJlc3VsdEEpOworICAg
ICAgICB9CisgICAgICAgIGlmICgxIC8gcmVzdWx0Ny5yZXN1bHRCICE9PSBJbmZpbml0eSkgewor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3RDYXJlQWJvdXRaZXJvU2Vj
b25kRG9lc05vdCgwLjEpLCByZXN1bHRCID0gIiArIHJlc3VsdDcucmVzdWx0Qik7CisgICAgICAg
IH0KKyAgICAgICAgdmFyIHJlc3VsdDggPSBmaXJzdERvTm90Q2FyZUFib3V0WmVyb1NlY29uZERv
ZXMoMC4xKTsKKyAgICAgICAgaWYgKDEgLyByZXN1bHQ4LnJlc3VsdEEgIT09IEluZmluaXR5KSB7
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCBmaXJzdERvTm90Q2FyZUFib3V0
WmVyb1NlY29uZERvZXMoMC4xKSwgcmVzdWx0QSA9ICIgKyByZXN1bHQ4LnJlc3VsdEEpOworICAg
ICAgICB9CisgICAgICAgIGlmICgxIC8gcmVzdWx0OC5yZXN1bHRCICE9PSBJbmZpbml0eSkgewor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3REb05vdENhcmVBYm91dFpl
cm9TZWNvbmREb2VzKDAuMSksIHJlc3VsdEIgPSAiICsgcmVzdWx0OC5yZXN1bHRCKTsKKyAgICAg
ICAgfQorICAgIH0KK30KK3ZlcmlmeU5lZ2F0aXZlWmVyb0lzUHJlc2VydmVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGgtdHJ1bmMtYmFzaWNz
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXRydW5jLWJhc2lj
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iZWNlZDJmNzFmMzY5OTc5OTY4YmQxNzU3NDZiYWQwMDkwOWM3MTE2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9t
YXRoLXRydW5jLWJhc2ljcy5qcwpAQCAtMCwwICsxLDI1NiBAQAorZnVuY3Rpb24gbWF0aFRydW5j
T25JbnRlZ2Vycyh2YWx1ZSkKK3sKKyAgICByZXR1cm4gTWF0aC50cnVuYyh2YWx1ZSk7Cit9Citu
b0lubGluZShtYXRoVHJ1bmNPbkludGVnZXJzKTsKKworZnVuY3Rpb24gbWF0aFRydW5jT25Eb3Vi
bGVzKHZhbHVlKQoreworICAgIHJldHVybiBNYXRoLnRydW5jKHZhbHVlKTsKK30KK25vSW5saW5l
KG1hdGhUcnVuY09uRG91Ymxlcyk7CisKK2Z1bmN0aW9uIG1hdGhUcnVuY09uQm9vbGVhbnModmFs
dWUpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1bmModmFsdWUpOworfQorbm9JbmxpbmUobWF0aFRy
dW5jT25Cb29sZWFucyk7CisKKy8vIFRoZSB0cml2aWFsIGNhc2VzIGZpcnN0LgorZm9yICh2YXIg
aSA9IDE7IGkgPCAxZTQ7ICsraSkgeworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNP
bkludGVnZXJzKGkpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09IGkpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigibWF0aFRydW5jT25JbnRlZ2VycygiICsgaSArICIpID0gIiArIHRydW5jZWRW
YWx1ZSk7CisKKyAgICB2YXIgdHJ1bmNlZFZhbHVlID0gbWF0aFRydW5jT25JbnRlZ2VycygtaSk7
CisgICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0gLWkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
bWF0aFRydW5jT25JbnRlZ2VycygiICsgLWkgKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisg
ICAgdmFyIGRvdWJsZUxvdyA9IGkgKyAwLjQ7CisgICAgdmFyIHRydW5jZWRWYWx1ZSA9IG1hdGhU
cnVuY09uRG91Ymxlcyhkb3VibGVMb3cpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09IGkpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jT25Eb3VibGVzKCIgKyBkb3VibGVMb3cg
KyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFyIGRvdWJsZUhpZ2ggPSBpICsgMC42
OworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNPbkRvdWJsZXMoZG91YmxlSGlnaCk7
CisgICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0gaSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJt
YXRoVHJ1bmNPbkRvdWJsZXMoIiArIGRvdWJsZUhpZ2ggKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUp
OworCisgICAgdmFyIGRvdWJsZU1pZCA9IGkgKyAwLjU7CisgICAgdmFyIHRydW5jZWRWYWx1ZSA9
IG1hdGhUcnVuY09uRG91Ymxlcyhkb3VibGVNaWQpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09
IGkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jT25Eb3VibGVzKCIgKyBkb3Vi
bGVNaWQgKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFyIHRydW5jZWRWYWx1ZSA9
IG1hdGhUcnVuY09uRG91YmxlcygtMC42KTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSAtMC4w
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY09uRG91YmxlcygtMC42KSA9ICIg
KyB0cnVuY2VkVmFsdWUpOworfQorCisvLyBTb21lIG1vcmUgaW50ZXJlc3RpbmcgY2FzZXMsIHNv
bWUgb2YgdGhlbSB3ZWxsIE9TUiBleGl0IHdoZW4gdGhlIHJldHVybiB2YWx1ZSBpcyB6ZXJvLgor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBt
YXRoVHJ1bmNPbkludGVnZXJzKGkpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09IGkpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jT25JbnRlZ2VycygiICsgaSArICIpID0gIiAr
IHRydW5jZWRWYWx1ZSk7CisKKyAgICB2YXIgdHJ1bmNlZFZhbHVlID0gbWF0aFRydW5jT25JbnRl
Z2VycygtaSk7CisgICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0gLWkpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigibWF0aFRydW5jT25JbnRlZ2VycygtIiArIGkgKyAiKSA9ICIgKyB0cnVuY2VkVmFs
dWUpOworCisgICAgdmFyIHRydW5jZWRWYWx1ZSA9IG1hdGhUcnVuY09uRG91YmxlcygtMC40KTsK
KyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSAtMC4wKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
Im1hdGhUcnVuY09uRG91YmxlcygtMC40KSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFy
IHRydW5jZWRWYWx1ZSA9IG1hdGhUcnVuY09uRG91YmxlcygtMC41KTsKKyAgICBpZiAodHJ1bmNl
ZFZhbHVlICE9PSAtMC4wKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY09uRG91
YmxlcygtMC41KSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFyIHRydW5jZWRWYWx1ZSA9
IG1hdGhUcnVuY09uRG91YmxlcygtMCk7CisgICAgaWYgKCEodHJ1bmNlZFZhbHVlID09PSAwICYm
ICgxL3RydW5jZWRWYWx1ZSkgPT09IC1JbmZpbml0eSkpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigibWF0aFRydW5jT25Eb3VibGVzKC0wKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFy
IHRydW5jZWRWYWx1ZSA9IG1hdGhUcnVuY09uRG91YmxlcyhOYU4pOworICAgIGlmICh0cnVuY2Vk
VmFsdWUgPT09IHRydW5jZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJtYXRoVHJ1
bmNPbkRvdWJsZXMoTmFOKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFyIHRydW5jZWRW
YWx1ZSA9IG1hdGhUcnVuY09uRG91YmxlcyhOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpOworICAg
IGlmICh0cnVuY2VkVmFsdWUgIT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJtYXRoVHJ1bmNPbkRvdWJsZXMoTnVtYmVyLlBPU0lUSVZFX0lORklO
SVRZKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFyIHRydW5jZWRWYWx1ZSA9IG1hdGhU
cnVuY09uRG91YmxlcyhOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpOworICAgIGlmICh0cnVuY2Vk
VmFsdWUgIT09IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJtYXRoVHJ1bmNPbkRvdWJsZXMoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKSA9ICIgKyB0
cnVuY2VkVmFsdWUpOworCisgICAgdmFyIGJvb2xlYW4gPSAhIShpICUgMik7CisgICAgdmFyIHRy
dW5jZWRCb29sZWFuID0gbWF0aFRydW5jT25Cb29sZWFucyhib29sZWFuKTsKKyAgICBpZiAodHJ1
bmNlZEJvb2xlYW4gIT0gYm9vbGVhbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJtYXRoVHJ1
bmNPbkRvdWJsZXMoIiArIGJvb2xlYW4gKyAiKSA9ICIgKyB0cnVuY2VkQm9vbGVhbik7Cit9CisK
K2Z1bmN0aW9uIHVzZWxlc3NNYXRoVHJ1bmModmFsdWUpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1
bmModmFsdWV8MCk7Cit9Citub0lubGluZSh1c2VsZXNzTWF0aFRydW5jKTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIHZhciB0cnVuY2VkVmFsdWUgPSB1c2VsZXNzTWF0
aFRydW5jKGkpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09IGkpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigidXNlbGVzc01hdGhUcnVuYygiICsgaSArICIpID0gIiArIHRydW5jZWRWYWx1ZSk7
CisKKyAgICB2YXIgZG91YmxlTG93ID0gaSArIDAuNDsKKyAgICB2YXIgdHJ1bmNlZFZhbHVlID0g
dXNlbGVzc01hdGhUcnVuYyhkb3VibGVMb3cpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09IGkp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigidXNlbGVzc01hdGhUcnVuYygiICsgZG91YmxlTG93
ICsgIikgPSAiICsgdHJ1bmNlZFZhbHVlKTsKKworICAgIHZhciBkb3VibGVIaWdoID0gaSArIDAu
NjsKKyAgICB2YXIgdHJ1bmNlZFZhbHVlID0gdXNlbGVzc01hdGhUcnVuYyhkb3VibGVIaWdoKTsK
KyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSBpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInVz
ZWxlc3NNYXRoVHJ1bmMoIiArIGRvdWJsZUhpZ2ggKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUpOwor
CisgICAgdmFyIGRvdWJsZU1pZCA9IGkgKyAwLjU7CisgICAgdmFyIHRydW5jZWRWYWx1ZSA9IHVz
ZWxlc3NNYXRoVHJ1bmMoZG91YmxlTWlkKTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSBpKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInVzZWxlc3NNYXRoVHJ1bmMoIiArIGRvdWJsZU1pZCAr
ICIpID0gIiArIHRydW5jZWRWYWx1ZSk7CisKKyAgICB2YXIgdHJ1bmNlZFZhbHVlID0gdXNlbGVz
c01hdGhUcnVuYygtMC40KTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSAwKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoInVzZWxlc3NNYXRoVHJ1bmMoLTAuNCkgPSAiICsgdHJ1bmNlZFZhbHVl
KTsKKworICAgIHZhciB0cnVuY2VkVmFsdWUgPSB1c2VsZXNzTWF0aFRydW5jKC0wLjUpOworICAg
IGlmICh0cnVuY2VkVmFsdWUgIT09IDApCisgICAgICAgIHRocm93IG5ldyBFcnJvcigidXNlbGVz
c01hdGhUcnVuYygtMC41KSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFyIHRydW5jZWRW
YWx1ZSA9IHVzZWxlc3NNYXRoVHJ1bmMoLTAuNik7CisgICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0g
MCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ1c2VsZXNzTWF0aFRydW5jKC0wLjYpID0gIiAr
IHRydW5jZWRWYWx1ZSk7Cit9CisKK2Z1bmN0aW9uIG1hdGhUcnVuY1dpdGhPdmVyZmxvdyh2YWx1
ZSkKK3sKKyAgICByZXR1cm4gTWF0aC50cnVuYyh2YWx1ZSk7Cit9Citub0lubGluZShtYXRoVHJ1
bmNXaXRoT3ZlcmZsb3cpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAg
dmFyIGJpZ1ZhbHVlID0gMTAwMDAwMDAwMDAwMDsKKyAgICB2YXIgdHJ1bmNlZFZhbHVlID0gbWF0
aFRydW5jV2l0aE92ZXJmbG93KGJpZ1ZhbHVlKTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSBi
aWdWYWx1ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJtYXRoVHJ1bmNXaXRoT3ZlcmZsb3co
IiArIGJpZ1ZhbHVlICsgIikgPSAiICsgdHJ1bmNlZFZhbHVlKTsKK30KKworZnVuY3Rpb24gbWF0
aFRydW5jQ29uc3VtZWRBc0RvdWJsZSh2YWx1ZSkKK3sKKyAgICByZXR1cm4gTWF0aC50cnVuYyh2
YWx1ZSkgKiAwLjU7Cit9Citub0lubGluZShtYXRoVHJ1bmNDb25zdW1lZEFzRG91YmxlKTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIHZhciBkb3VibGVWYWx1ZSA9IGkg
KyAwLjE7CisgICAgdmFyIHRydW5jZWRWYWx1ZSA9IG1hdGhUcnVuY0NvbnN1bWVkQXNEb3VibGUo
ZG91YmxlVmFsdWUpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09IChpICogMC41KSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJtYXRoVHJ1bmNDb25zdW1lZEFzRG91YmxlKCIgKyBkb3VibGVW
YWx1ZSArICIpID0gIiArIHRydW5jZWRWYWx1ZSk7CisKKyAgICB2YXIgZG91YmxlVmFsdWUgPSBp
ICsgMC42OworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNDb25zdW1lZEFzRG91Ymxl
KGRvdWJsZVZhbHVlKTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSAoaSAqIDAuNSkpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jQ29uc3VtZWRBc0RvdWJsZSgiICsgZG91Ymxl
VmFsdWUgKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCit9CisKK2Z1bmN0aW9uIG1hdGhUcnVu
Y0RvZXNOb3RDYXJlQWJvdXRNaW51c1plcm8odmFsdWUpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1
bmModmFsdWUpfDA7Cit9Citub0lubGluZShtYXRoVHJ1bmNEb2VzTm90Q2FyZUFib3V0TWludXNa
ZXJvKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIHZhciBkb3VibGVN
aWQgPSBpICsgMC41OworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNEb2VzTm90Q2Fy
ZUFib3V0TWludXNaZXJvKGRvdWJsZU1pZCk7CisgICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0gaSkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJtYXRoVHJ1bmNEb2VzTm90Q2FyZUFib3V0TWludXNa
ZXJvKCIgKyBkb3VibGVNaWQgKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworfQorCisKKy8vICoq
KiBGdW5jdGlvbiBhcmd1bWVudHMuICoqKgorZnVuY3Rpb24gbWF0aFRydW5jTm9Bcmd1bWVudHMo
KQoreworICAgIHJldHVybiBNYXRoLnRydW5jKCk7Cit9Citub0lubGluZShtYXRoVHJ1bmNOb0Fy
Z3VtZW50cyk7CisKK2Z1bmN0aW9uIG1hdGhUcnVuY1Rvb01hbnlBcmd1bWVudHMoYSwgYiwgYykK
K3sKKyAgICByZXR1cm4gTWF0aC50cnVuYyhhLCBiLCBjKTsKK30KK25vSW5saW5lKG1hdGhUcnVu
Y1Rvb01hbnlBcmd1bWVudHMpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7Cisg
ICAgdmFyIHZhbHVlID0gbWF0aFRydW5jTm9Bcmd1bWVudHMoKTsKKyAgICBpZiAodmFsdWUgPT09
IHZhbHVlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY05vQXJndW1lbnRzKCkg
PSAiICsgdmFsdWUpOworCisgICAgdmFyIHZhbHVlID0gbWF0aFRydW5jVG9vTWFueUFyZ3VtZW50
cygyLjEsIDMsIDUpOworICAgIGlmICh2YWx1ZSAhPT0gMikKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJtYXRoVHJ1bmNUb29NYW55QXJndW1lbnRzKCkgPSAiICsgdmFsdWUpOworfQorCisKKy8v
ICoqKiBDb25zdGFudCBhcyBhcmd1bWVudHMuICoqKgorZnVuY3Rpb24gdGVzdE1hdGhUcnVuY09u
Q29uc3RhbnRzKCkKK3sKKyAgICB2YXIgdmFsdWUgPSBNYXRoLnRydW5jKDApOworICAgIGlmICh2
YWx1ZSAhPT0gMCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJNYXRoLnRydW5jKDApID0gIiAr
IHZhbHVlKTsKKyAgICB2YXIgdmFsdWUgPSBNYXRoLnRydW5jKC0wKTsKKyAgICBpZiAoISh2YWx1
ZSA9PT0gMCAmJiAoMS92YWx1ZSkgPT09IC1JbmZpbml0eSkpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiTWF0aC50cnVuYygtMCkgPSAiICsgdmFsdWUpOworICAgIHZhciB2YWx1ZSA9IE1hdGgu
dHJ1bmMoMSk7CisgICAgaWYgKHZhbHVlICE9PSAxKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
Ik1hdGgudHJ1bmMoMSkgPSAiICsgdmFsdWUpOworICAgIHZhciB2YWx1ZSA9IE1hdGgudHJ1bmMo
LTEpOworICAgIGlmICh2YWx1ZSAhPT0gLTEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiTWF0
aC50cnVuYygtMSkgPSAiICsgdmFsdWUpOworICAgIHZhciB2YWx1ZSA9IE1hdGgudHJ1bmMoNDIp
OworICAgIGlmICh2YWx1ZSAhPT0gNDIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiTWF0aC50
cnVuYyg0MikgPSAiICsgdmFsdWUpOworICAgIHZhciB2YWx1ZSA9IE1hdGgudHJ1bmMoLTQyLjIp
OworICAgIGlmICh2YWx1ZSAhPT0gLTQyKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1hdGgu
dHJ1bmMoLTQyLjIpID0gIiArIHZhbHVlKTsKKyAgICB2YXIgdmFsdWUgPSBNYXRoLnRydW5jKE5h
Tik7CisgICAgaWYgKHZhbHVlID09PSB2YWx1ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJN
YXRoLnRydW5jKE5hTikgPSAiICsgdmFsdWUpOworICAgIHZhciB2YWx1ZSA9IE1hdGgudHJ1bmMo
TnVtYmVyLlBPU0lUSVZFX0lORklOSVRJKTsKKyAgICBpZiAodmFsdWUgPT09IHZhbHVlKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIk1hdGgudHJ1bmMoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRJ
KSA9ICIgKyB2YWx1ZSk7CisgICAgdmFyIHZhbHVlID0gTWF0aC50cnVuYyhOdW1iZXIuTkVHQVRJ
VkVfSU5GSU5JVEkpOworICAgIGlmICh2YWx1ZSA9PT0gdmFsdWUpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiTWF0aC50cnVuYyhOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVEkpID0gIiArIHZhbHVl
KTsKKyAgICB2YXIgdmFsdWUgPSBNYXRoLnRydW5jKE1hdGguRSk7CisgICAgaWYgKHZhbHVlICE9
PSAyKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1hdGgudHJ1bmMoTWF0aC5FKSA9ICIgKyB2
YWx1ZSk7Cit9Citub0lubGluZSh0ZXN0TWF0aFRydW5jT25Db25zdGFudHMpOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgdGVzdE1hdGhUcnVuY09uQ29uc3RhbnRzKCk7
Cit9CisKKworLy8gKioqIFN0cnVjdCB0cmFuc2l0aW9uLiAqKioKK2Z1bmN0aW9uIG1hdGhUcnVu
Y1N0cnVjdFRyYW5zaXRpb24odmFsdWUpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1bmModmFsdWUp
OworfQorbm9JbmxpbmUobWF0aFRydW5jU3RydWN0VHJhbnNpdGlvbik7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICB2YXIgdmFsdWUgPSBtYXRoVHJ1bmNTdHJ1Y3RUcmFu
c2l0aW9uKDQyLjUpOworICAgIGlmICh2YWx1ZSAhPT0gNDIpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigibWF0aFRydW5jU3RydWN0VHJhbnNpdGlvbig0Mi41KSA9ICIgKyB2YWx1ZSk7Cit9CisK
K01hdGgudHJ1bmMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50c1swXSArIDU7IH0KKwor
dmFyIHZhbHVlID0gbWF0aFRydW5jU3RydWN0VHJhbnNpdGlvbig0Mik7CitpZiAodmFsdWUgIT09
IDQ3KQorICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jU3RydWN0VHJhbnNpdGlvbig0Mikg
YWZ0ZXIgdHJhbnNpdGlvbiA9ICIgKyB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGgtdHJ1bmMtc2hvdWxkLWJlLXRydW5jYXRlLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXRydW5jLXNob3VsZC1iZS10
cnVuY2F0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjllYTliYmE4M2IzMjdhM2YyZjNiMDAxNTMwYTU4YzA4
MGYxZmUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9tYXRoLXRydW5jLXNob3VsZC1iZS10cnVuY2F0ZS5qcwpAQCAtMCwwICsxLDEyIEBACitm
dW5jdGlvbiBtYXRoVHJ1bmModmFsdWUpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1bmModmFsdWUp
OworfQorbm9JbmxpbmUobWF0aFRydW5jKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgeworICAgIHZhciBkb3VibGVNaWQgPSAtOTkwMSAtIDAuNjsKKyAgICB2YXIgcm91bmRlZFZh
bHVlID0gbWF0aFRydW5jKGRvdWJsZU1pZCk7CisgICAgaWYgKHJvdW5kZWRWYWx1ZSAhPT0gLTk5
MDEpCisgICAgICAgIHRocm93ICJtYXRoUm91bmREb2VzTm90Q2FyZUFib3V0TWludXNaZXJvKCIg
KyBkb3VibGVNaWQgKyAiKSA9ICIgKyByb3VuZGVkVmFsdWU7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTU2NzAyNTQ2
YjZjOWI4YTk3ZDE3NzAzY2ViNDRkMmFhM2MwODdlOC4uOTEyODc2YzkzODM0MWEzZjk1MWJlMzg4
OTc1MjJlNjcwM2VhOThlNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE2LTA0LTAxICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIEFkZCB0
cnVuY2F0ZSBvcGVyYXRpb24gKHJvdW5kaW5nIHRvIHplcm8pCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYwNzIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL3JlZ3Jlc3MvbWFueS1mb3JlYWNoLWNh
bGxzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9tYW55LWZvcmVh
Y2gtY2FsbHMuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9tYXRoLXRydW5jLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9tYXRoLXRydW5jLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL21hbnktZm9yZWFjaC1j
YWxscy5qczogQWRkZWQuCisgICAgICAgIChpLmFycmF5LmZvckVhY2gpOgorICAgICAgICBmb3JF
YWNoIGNhbGxzIEB0b0ludGVnZXIuIEl0IGluY2x1ZGVzIEB0cnVuYyBub3cuCisgICAgICAgICog
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvbWF0aC10cnVuYy5qczogQWRkZWQuCisgICAgICAgIENh
bGwgTWF0aC50cnVuYyByZXBlYXRlZGx5LgorICAgICAgICAobWF0aFRydW5jSW50KToKKyAgICAg
ICAgKG1hdGhUcnVuY0RvdWJsZSk6CisgICAgICAgIChtYXRoVHJ1bmNNaXhlZCk6CisKIDIwMTYt
MDQtMDEgIEpvb25naHVuIFBhcmsgIDxqaDcxOC5wYXJrQHNhbXN1bmcuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgRUZMIGdhcmRlbmluZyBhYm91dCBuZXcgUlRMIHNjcm9sbGJhciB0ZXN0Y2Fz
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9tYW55LWZvcmVhY2gtY2FsbHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9tYW55LWZvcmVhY2gtY2FsbHMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkMGE0ZjdkNGI0MGJhYWM5M2Y3OTg3YzZhNDAwYjA3
NGVjN2IwNmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL21hbnkt
Zm9yZWFjaC1jYWxscy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL21h
bnktZm9yZWFjaC1jYWxscworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBu
byBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9tYW55LWZv
cmVhY2gtY2FsbHMuaHRtbCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvbWFueS1mb3JlYWNoLWNh
bGxzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJlNTg1MDZmZTdjNDA1MWNhNzc2NmVkYmM3ZGNhNjJhMTkw
YmZkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvbWFueS1mb3Jl
YWNoLWNhbGxzLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvbWFueS1mb3JlYWNoLWNhbGxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvbWF0
aC10cnVuYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL21hdGgtdHJ1bmMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiMDI4ZTIxM2NmNTZmMTZhYjBjMWUzNjkyY2E1NGY3
ODU5ZmIwOWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL21hdGgt
dHJ1bmMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9tYXRoLXRydW5j
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJv
d24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL21hdGgtdHJ1bmMuaHRtbCBiL0xheW91
dFRlc3RzL2pzL3JlZ3Jlc3MvbWF0aC10cnVuYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4NTlmYTdkZDNj
ZTc0NzdhMWM2Y2JmYmI3OTZkYzI5YWNiM2Y0YTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL21hdGgtdHJ1bmMuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9tYXRoLXRydW5jLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL21hbnktZm9yZWFjaC1jYWxscy5qcyBiL0xheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL21hbnktZm9yZWFjaC1jYWxscy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
MmIzODI1ODc5MWY0MTEyYTIyOTlhNWI1MmQwMDE5YmZhMWQyNzZjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvbWFueS1mb3JlYWNoLWNhbGxz
LmpzCkBAIC0wLDAgKzEsNyBAQAordmFyIHN1bSA9IDA7Cit2YXIgYXJyYXkgPSBbMSwgMiwgM107
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgYXJyYXkuZm9yRWFjaChmdW5j
dGlvbiAodmFsdWUpIHsKKyAgICAgICAgc3VtICs9IHZhbHVlOworICAgIH0pOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvbWF0aC10cnVuYy5qcyBi
L0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL21hdGgtdHJ1bmMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2I5Y2JjYzZlZTRhOTc4YWZiYjNkMjg5Yzc4ZmI2NmM0NGMyZGM5YwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL21hdGgtdHJ1bmMu
anMKQEAgLTAsMCArMSwzMCBAQAorZnVuY3Rpb24gbWF0aFRydW5jSW50KGkpCit7CisgICAgcmV0
dXJuIE1hdGgudHJ1bmMoaSk7Cit9Citub0lubGluZShtYXRoVHJ1bmNJbnQpOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIG1hdGhUcnVuY0ludChpKTsKKworZnVuY3Rpb24g
bWF0aFRydW5jRG91YmxlKGkpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1bmMoaSk7Cit9Citub0lu
bGluZShtYXRoVHJ1bmNEb3VibGUpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQor
ICAgIG1hdGhUcnVuY0RvdWJsZShpICogMC42KTsKKworZnVuY3Rpb24gbWF0aFRydW5jTWl4ZWQo
aSkKK3sKKyAgICByZXR1cm4gTWF0aC50cnVuYyhpKTsKK30KK25vSW5saW5lKG1hdGhUcnVuY01p
eGVkKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIGlmIChpICUgMiA9
PT0gMCkKKyAgICAgICAgbWF0aFRydW5jRG91YmxlKGkgKiAwLjYpOworICAgIGVsc2UKKyAgICAg
ICAgbWF0aFRydW5jRG91YmxlKGkpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275462</attachid>
            <date>2016-04-02 00:34:11 -0700</date>
            <delta_ts>2016-04-03 01:37:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156072-20160402163415.patch</filename>
            <type>text/plain</type>
            <size>56280</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MDZiNDUxYWZjMTg0MTdjODllZDEwYTFhMWMxMzA2NzIxZGNlNjQ4Li4zZThhNTE2MDZlZTA1NzJh
MGQ0NWU4ODYzZGNiMTUwNWU1ZDFkMjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTMgQEAKKzIwMTYtMDQtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIHRydW5jYXRlIG9wZXJhdGlvbiAocm91bmRpbmcg
dG8gemVybykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NjA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBUcnVuY0ludHJpbnNpYyBmb3IgTWF0aC50cnVuYy4gREZHIGhhbmRsZXMgaXQgYXMgQXJp
dGhUcnVuYy4KKyAgICAgICAgSW4gREZHLCBBcml0aFRydW5jIGJlaGF2ZXMgc2ltaWxhciB0byBB
cml0aFJvdW5kLCBBcml0aENlaWwsIGFuZCBBcml0aEZsb29yLgorICAgICAgICBBcml0aFRydW5j
IHJvdW5kcyB0aGUgdmFsdWUgdG93YXJkcyB6ZXJvLgorCisgICAgICAgIEFuZCB3ZSByZXdyaXRl
IEB0b0ludGVnZXIgdG8gdXNlIEB0cnVuYyBpbnN0ZWFkIG9mIEBhYnMsIEBmbG9vciwgbmVnYXRp
b24gYW5kIGJyYW5jaC4KKyAgICAgICAgVGhpcyBpcyBjb21wbGV0ZWx5IHRoZSBzYW1lIHRvIHdo
YXQgd2UgZG8gaW4gSlNWYWx1ZTo6dG9JbnRlZ2VyLgorCisgICAgICAgIFNpbmNlIERGRyByZWNv
Z25pemUgaXQsIERGRyBjYW4gY29udmVydCBBcml0aFRydW5jIHRvIElkZW50aXR5IGlmIHRoZSBn
aXZlbiBhcmd1bWVudCBpcyBJbnQzMi4KKyAgICAgICAgVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSBh
bG1vc3QgYWxsIHRoZSBhcmd1bWVudCBpcyBJbnQzMiBpbiBAdG9MZW5ndGggLT4gQHRvSW50ZWdl
ciAtPiBAdHJ1bmMgY2FzZS4KKyAgICAgICAgSW4gc3VjaCBjYXNlcywgd2UgY2FuIGVsaW1pbmF0
ZSB0cnVuYygpIGNhbGwuCisKKyAgICAgICAgQXMgYSBib251cywgdG8gc3BlZWQgdXAgTWF0aC50
cnVuYyBvcGVyYXRpb24sIHdlIHVzZSB4ODYgU1NFIHJvdW5kIGFuZCBmcmludHogaW4gQVJNNjQg
Zm9yIEFyaXRoUm91bmQuCisgICAgICAgIEluIERGRywgd2UgZW1pdCB0aGVzZSBpbnN0cnVjdGlv
bnMuIEluIEZUTCwgd2UgdXNlIFBhdGNocG9pbnQgdG8gZW1pdCB0aGVzZSBpbnN0cnVjdGlvbnMg
dG8gYXZvaWQgYWRkaW5nIGEgbmV3IEIzIElSLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6cm91
bmRUb3dhcmRaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6
cm91bmRUb3dhcmRaZXJvRmxvYXQpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnJvdW5kVG93YXJk
WmVyb0RvdWJsZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJvdW5kVG93YXJkWmVyb0RvdWJsZSk6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyU0g0Ojpyb3VuZFRvd2FyZFplcm9Eb3VibGUpOgorICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbjo6cm91bmRUb3dhcmRaZXJvRG91YmxlKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnJvdW5kVG93YXJkWmVyb0Zsb2F0KToKKyAgICAgICAg
KiBidWlsdGlucy9HbG9iYWxPYmplY3QuanM6CisgICAgICAgICh0b0ludGVnZXIpOgorICAgICAg
ICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgICogZGZn
L0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAg
ICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAg
ICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlND
OjpERkc6OkdyYXBoOjpyb3VuZFNob3VsZFNwZWN1bGF0ZUludDMyKToKKyAgICAgICAgKiBkZmcv
REZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmFyaXRoTm9kZUZsYWdzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNIZWFwUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6aGFzQXJpdGhSb3VuZGluZ01vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2Rl
VHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0
ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhSb3VuZGluZyk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9G
VExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAg
ICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVBcml0aFRydW5jKToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0LmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZVRydW5jKToKKyAgICAgICAgKiBm
dGwvRlRMT3V0cHV0Lmg6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAg
ICAgIChKU0M6OnRydW5jVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVy
YXRvcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAg
ICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1
bnRpbWUvTWF0aE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6Ok1hdGhPYmplY3Q6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuaDoKKyAgICAgICAgKiBydW50
aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6dGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMpOgor
ICAgICAgICAqIHRlc3RzL3N0cmVzcy9tYXRoLXJvdW5kaW5nLWluZmluaXR5LmpzOgorICAgICAg
ICAodGVzdFRydW5jKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvbWF0aC1yb3VuZGluZy1uYW4u
anM6CisgICAgICAgICh0ZXN0VHJ1bmMpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9tYXRoLXJv
dW5kaW5nLW5lZ2F0aXZlLXplcm8uanM6CisgICAgICAgICh0ZXN0VHJ1bmMpOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9tYXRoLXRydW5jLWFyaXRoLXJvdW5kaW5nLW1vZGUuanM6IEFkZGVkLgor
ICAgICAgICAoZmlyc3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lc05vdCk6CisgICAgICAgIChmaXJz
dERvTm90Q2FyZUFib3V0WmVyb1NlY29uZERvZXMpOgorICAgICAgICAod2FybXVwKToKKyAgICAg
ICAgKHZlcmlmeU5lZ2F0aXZlWmVyb0lzUHJlc2VydmVkKToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvbWF0aC10cnVuYy1iYXNpY3MuanM6IEFkZGVkLgorICAgICAgICAobWF0aFRydW5jT25JbnRl
Z2Vycyk6CisgICAgICAgIChtYXRoVHJ1bmNPbkRvdWJsZXMpOgorICAgICAgICAobWF0aFRydW5j
T25Cb29sZWFucyk6CisgICAgICAgICh1c2VsZXNzTWF0aFRydW5jKToKKyAgICAgICAgKG1hdGhU
cnVuY1dpdGhPdmVyZmxvdyk6CisgICAgICAgIChtYXRoVHJ1bmNDb25zdW1lZEFzRG91YmxlKToK
KyAgICAgICAgKG1hdGhUcnVuY0RvZXNOb3RDYXJlQWJvdXRNaW51c1plcm8pOgorICAgICAgICAo
bWF0aFRydW5jTm9Bcmd1bWVudHMpOgorICAgICAgICAobWF0aFRydW5jVG9vTWFueUFyZ3VtZW50
cyk6CisgICAgICAgICh0ZXN0TWF0aFRydW5jT25Db25zdGFudHMpOgorICAgICAgICAobWF0aFRy
dW5jU3RydWN0VHJhbnNpdGlvbik6CisgICAgICAgIChNYXRoLnRydW5jKToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvbWF0aC10cnVuYy1zaG91bGQtYmUtdHJ1bmNhdGUuanM6IEFkZGVkLgorICAg
ICAgICAobWF0aFRydW5jKToKKwogMjAxNi0wNC0wMSAgQWxiZXJ0byBHYXJjaWEgIDxiZXJ0b0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIE1pc3NpbmcgUEFUSF9NQVggZGVmaW5pdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAppbmRleCBmNjE5MDk2ZmMyMTlhYzRkNzU2NjdiNGE2YjExN2M5ZWJlYzNmZjVhLi5k
ZTdlMGU0YzIyOTQxNGM4MWRkOGMwY2RhYmFkMGQwYjBjMTYzMTU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAt
MTUwMCw2ICsxNTAwLDE2IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk02NEFzc2VtYmxlciwgTWFjcm9BCiAgICAgICAgIG1fYXNz
ZW1ibGVyLmZyaW50bTwzMj4oZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIHJvdW5kVG93
YXJkWmVyb0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLmZyaW50ejw2ND4oZGVzdCwgc3JjKTsKKyAgICB9CisKKyAg
ICB2b2lkIHJvdW5kVG93YXJkWmVyb0Zsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZnJpbnR6PDMyPihkZXN0LCBzcmMp
OworICAgIH0KKwogICAgIC8vIENvbnZlcnQgJ3NyYycgdG8gYW4gaW50ZWdlciwgYW5kIHBsYWNl
cyB0aGUgcmVzdWx0aW5nICdkZXN0Jy4KICAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIG5vdCByZXBy
ZXNlbnRhYmxlIGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCiAgICAgLy8gTWF5IGFsc28gYnJh
bmNoIGZvciBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMyIGJpdHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TXY3LmgKaW5kZXggM2JjODViY2U5MDE0OTZmZGZkNzFmZmM2MTI1ZTEzMjY0Mjc4YmFmMy4uZDIy
NTZlMWY2ODkzOWEyNDBlMThlZGI5YjdmYzU5NGVlMGE4OGFkMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTEw
ODQsNiArMTA4NCwxMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXI8QVJNdjdBc3NlbWJsZXIsIE1hY3JvQQogICAgICAgICBDUkFTSCgp
OwogICAgIH0KIAorICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCByb3VuZFRvd2FyZFpl
cm9Eb3VibGUoRlBSZWdpc3RlcklELCBGUFJlZ2lzdGVySUQpCisgICAgeworICAgICAgICBBU1NF
UlQoIXN1cHBvcnRzRmxvYXRpbmdQb2ludFJvdW5kaW5nKCkpOworICAgICAgICBDUkFTSCgpOwor
ICAgIH0KKwogICAgIHZvaWQgY29udmVydEludDMyVG9Eb3VibGUoUmVnaXN0ZXJJRCBzcmMsIEZQ
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIudm1vdihmcFRlbXBS
ZWdpc3Rlciwgc3JjLCBzcmMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggN2M0YmQwODBkZjEzNDNiOGVhZWQwZjUw
MjI0ZDJhMmE5OWJkZTk5Ni4uMjdhMTg0MmYyMWY5ZWVmNjFhZWMwNzU1ZmI0ZGM3M2M1OWY2YjFl
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyTUlQUy5oCkBAIC02NTksNiArNjU5LDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyTUlQ
UyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPE1JUFNBc3NlbWJsZXIsIE1hY3JvQXNz
CiAgICAgICAgIENSQVNIKCk7CiAgICAgfQogCisgICAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2
b2lkIHJvdW5kVG93YXJkWmVyb0RvdWJsZShGUFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJRCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVCghc3VwcG9ydHNGbG9hdGluZ1BvaW50Um91bmRpbmcoKSk7Cisg
ICAgICAgIENSQVNIKCk7CisgICAgfQorCiAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgY29udmVy
dGlibGVMb2FkUHRyKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgQ29udmVydGlibGVMb2FkTGFiZWwgcmVzdWx0KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oCmluZGV4IDc1NzU2
MDk1YjgwMDM5MGRkYTllYzdkZTgzMTk5MDI1N2Q2MTNiZjYuLjUzZTcxY2ZhM2M3Njc3Y2JhYjE1
NDZmOTNlOWRlM2VjYjIxZTVkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgKQEAgLTE1ODcsNiArMTU4NywxMiBAQCBjbGFz
cyBNYWNyb0Fzc2VtYmxlclNINCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPFNINEFz
c2VtYmxlciwgTWFjcm9Bc3NlbQogICAgICAgICBDUkFTSCgpOwogICAgIH0KIAorICAgIE5PX1JF
VFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCByb3VuZFRvd2FyZFplcm9Eb3VibGUoRlBSZWdpc3RlcklE
LCBGUFJlZ2lzdGVySUQpCisgICAgeworICAgICAgICBBU1NFUlQoIXN1cHBvcnRzRmxvYXRpbmdQ
b2ludFJvdW5kaW5nKCkpOworICAgICAgICBDUkFTSCgpOworICAgIH0KKwogICAgIEp1bXAgYnJh
bmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZElt
bTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyID0gY2xhaW1TY3JhdGNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5k
ZXggNDBhNzAwYzI5NDBjZTA2NjAwNWJmMTVjZmUzZTIwNjAxYWQ1NTI4MC4uYTY3Y2ZkMDVlODY4
NzRiZWU1NGJkNDcxZGI0ZDQ2ZjRmZWYwZDExMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtNzM1
LDYgKzczNSwyNiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiA6IHB1YmxpYyBBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyPFg4NkFzc2VtYmxlciwgTWFjcgogICAgICAgICBtX2Fzc2VtYmxl
ci5yb3VuZHNzX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkc3QsIFg4NkFzc2VtYmxlcjo6Um91
bmRpbmdUeXBlOjpUb3dhcmROZWdhdGl2ZUluZmluaXRpKTsKICAgICB9CiAKKyAgICB2b2lkIHJv
dW5kVG93YXJkWmVyb0RvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIucm91bmRzZF9ycihzcmMsIGRzdCwgWDg2QXNzZW1i
bGVyOjpSb3VuZGluZ1R5cGU6OlRvd2FyZFplcm8pOworICAgIH0KKworICAgIHZvaWQgcm91bmRU
b3dhcmRaZXJvRG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIucm91bmRzZF9tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZHN0LCBY
ODZBc3NlbWJsZXI6OlJvdW5kaW5nVHlwZTo6VG93YXJkWmVybyk7CisgICAgfQorCisgICAgdm9p
ZCByb3VuZFRvd2FyZFplcm9GbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIucm91bmRzc19ycihzcmMsIGRzdCwgWDg2QXNz
ZW1ibGVyOjpSb3VuZGluZ1R5cGU6OlRvd2FyZFplcm8pOworICAgIH0KKworICAgIHZvaWQgcm91
bmRUb3dhcmRaZXJvRmxvYXQoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5yb3VuZHNzX21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkc3Qs
IFg4NkFzc2VtYmxlcjo6Um91bmRpbmdUeXBlOjpUb3dhcmRaZXJvKTsKKyAgICB9CisKICAgICAv
LyBNZW1vcnkgYWNjZXNzIG9wZXJhdGlvbnM6CiAgICAgLy8KICAgICAvLyBMb2FkcyBhcmUgb2Yg
dGhlIGZvcm0gbG9hZChhZGRyZXNzLCBkZXN0aW5hdGlvbikgYW5kIHN0b3JlcyBvZiB0aGUgZm9y
bQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dsb2JhbE9iamVj
dC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9iYWxPYmplY3QuanMKaW5k
ZXggZGI1M2MzOTdiYmY1NGMwZDUwZDZkMDQxNGVkYzgyM2QzMzg0NWQzNi4uNWJjYmMyMjZkMmY1
MjZkOTFjM2RlODk5ZjFiYmNhOTU3MzllNjc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCkBAIC0zNCwxMSArMzQsNyBAQCBmdW5jdGlvbiB0
b0ludGVnZXIodGFyZ2V0KQogICAgIC8vIGlzTmFOKG51bWJlclZhbHVlKQogICAgIGlmIChudW1i
ZXJWYWx1ZSAhPT0gbnVtYmVyVmFsdWUpCiAgICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKG51
bWJlclZhbHVlID09PSAwIHx8ICFAaXNGaW5pdGUobnVtYmVyVmFsdWUpKQotICAgICAgICByZXR1
cm4gbnVtYmVyVmFsdWU7Ci0KLSAgICByZXR1cm4gKG51bWJlclZhbHVlID4gMCA/IDEgOiAtMSkg
KiBAZmxvb3IoQGFicyhudW1iZXJWYWx1ZSkpOworICAgIHJldHVybiBAdHJ1bmMobnVtYmVyVmFs
dWUpOwogfQogCiBmdW5jdGlvbiB0b0xlbmd0aCh0YXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5k
ZXggMDI3NDgyMGM4NmU0OGE4MDBhZTMzYjc1N2VmNjg0MjllM2VhOWE0NS4uMzViN2Q1MjViMzFh
MjE4NGNjNWQxZjZjYTdiZDRmYmZhZjQwZWFlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtODUw
LDcgKzg1MCw4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAKICAgICBjYXNlIEFyaXRoUm91
bmQ6CiAgICAgY2FzZSBBcml0aEZsb29yOgotICAgIGNhc2UgQXJpdGhDZWlsOiB7CisgICAgY2Fz
ZSBBcml0aENlaWw6CisgICAgY2FzZSBBcml0aFRydW5jOiB7CiAgICAgICAgIEpTVmFsdWUgb3Bl
cmFuZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CiAgICAgICAgIGlmIChvcGVy
YW5kICYmIG9wZXJhbmQuaXNOdW1iZXIoKSkgewogICAgICAgICAgICAgZG91YmxlIHJvdW5kZWRW
YWx1ZSA9IDA7CkBAIC04NTgsOSArODU5LDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAg
ICAgICAgICAgICAgICAgcm91bmRlZFZhbHVlID0ganNSb3VuZChvcGVyYW5kLmFzTnVtYmVyKCkp
OwogICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBBcml0aEZsb29yKQogICAgICAg
ICAgICAgICAgIHJvdW5kZWRWYWx1ZSA9IGZsb29yKG9wZXJhbmQuYXNOdW1iZXIoKSk7Ci0gICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBBcml0
aENlaWwpOworICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBBcml0aENlaWwpCiAg
ICAgICAgICAgICAgICAgcm91bmRlZFZhbHVlID0gY2VpbChvcGVyYW5kLmFzTnVtYmVyKCkpOwor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0g
QXJpdGhUcnVuYyk7CisgICAgICAgICAgICAgICAgcm91bmRlZFZhbHVlID0gdHJ1bmMob3BlcmFu
ZC5hc051bWJlcigpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHByb2R1Y2Vz
SW50ZWdlcihub2RlLT5hcml0aFJvdW5kaW5nTW9kZSgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBhNmE4N2U1MmEyYTU4NTZj
YWRiMTM4OWQ4OWRhYzk0M2MxMmY1ZjEyLi42NzE2Njg3Nzg4ZDA2NTA0ZTJlZDI4YmRmOWIyYmIx
OTYyNDRiNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcApAQCAtMjIwMyw3ICsyMjAzLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW4K
ICAgICAgICAgCiAgICAgY2FzZSBSb3VuZEludHJpbnNpYzoKICAgICBjYXNlIEZsb29ySW50cmlu
c2ljOgotICAgIGNhc2UgQ2VpbEludHJpbnNpYzogeworICAgIGNhc2UgQ2VpbEludHJpbnNpYzoK
KyAgICBjYXNlIFRydW5jSW50cmluc2ljOiB7CiAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyA9PSAxKSB7CiAgICAgICAgICAgICBpbnNlcnRDaGVja3MoKTsKICAgICAgICAg
ICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoSlNDb25z
dGFudCwgT3BJbmZvKG1fY29uc3RhbnROYU4pKSk7CkBAIC0yMjE3LDkgKzIyMTgsMTEgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIGludCBy
ZXN1bHRPcGVyYW5kLCBJbnRyaW4KICAgICAgICAgICAgICAgICBvcCA9IEFyaXRoUm91bmQ7CiAg
ICAgICAgICAgICBlbHNlIGlmIChpbnRyaW5zaWMgPT0gRmxvb3JJbnRyaW5zaWMpCiAgICAgICAg
ICAgICAgICAgb3AgPSBBcml0aEZsb29yOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKGludHJpbnNpYyA9PSBDZWlsSW50cmluc2ljKTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGludHJpbnNpYyA9PSBDZWlsSW50cmluc2ljKQogICAgICAgICAgICAgICAgIG9wID0g
QXJpdGhDZWlsOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlu
dHJpbnNpYyA9PSBUcnVuY0ludHJpbnNpYyk7CisgICAgICAgICAgICAgICAgb3AgPSBBcml0aFRy
dW5jOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgTm9kZSogcm91bmROb2RlID0gYWRkVG9H
cmFwaChvcCwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbiksIG9wZXJhbmQpOwogICAgICAg
ICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgcm91bmROb2RlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggMDI4YjI5ODViNGVi
ZGE5MDY0ZTMwMzQ3ZDYxYjVmMzc4NzlkZjY5My4uNmE0ZWRhMmVmODkxNjgwZTVkZmIzZjQ0ZDFm
NDA1ZWNkYWM5NDQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKQEAgLTMwNSw2ICszMDUsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2Ug
QXJpdGhSb3VuZDoKICAgICBjYXNlIEFyaXRoRmxvb3I6CiAgICAgY2FzZSBBcml0aENlaWw6Cisg
ICAgY2FzZSBBcml0aFRydW5jOgogICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUsIHN0YXRpY19j
YXN0PHVpbnRwdHJfdD4obm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpKTsKICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggMDU2NGQx
ZmI1NTQ0ZDlkOTk1NjUzMjExN2E5MTQ4ZTg2N2IxNmJlOS4uZjM4YjlmOTlmODBmYTQ2NWRhZDMx
NDVkYjllZWVkMzVhY2M1OTdkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcApAQCAtOTAsNiArOTAsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBBcml0aFJvdW5kOgogICAgIGNhc2UgQXJpdGhGbG9vcjoKICAgICBjYXNl
IEFyaXRoQ2VpbDoKKyAgICBjYXNlIEFyaXRoVHJ1bmM6CiAgICAgY2FzZSBBcml0aEZSb3VuZDoK
ICAgICBjYXNlIEFyaXRoU2luOgogICAgIGNhc2UgQXJpdGhDb3M6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA2MWQxOTQ2MmExYWQ1Yjk3MDZlODE2
NzdjZGViMWU4NmFiOGRjYTM0Li45NjEyZTE4ZDA2MWM1YzUwOTE3MzU5MWJkZTRkN2NkN2VmMmYz
MTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAg
LTM2NSw3ICszNjUsOCBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKIAogICAg
ICAgICBjYXNlIEFyaXRoUm91bmQ6CiAgICAgICAgIGNhc2UgQXJpdGhGbG9vcjoKLSAgICAgICAg
Y2FzZSBBcml0aENlaWw6IHsKKyAgICAgICAgY2FzZSBBcml0aENlaWw6CisgICAgICAgIGNhc2Ug
QXJpdGhUcnVuYzogewogICAgICAgICAgICAgaWYgKG1fZ3JhcGgudW5hcnlBcml0aFNob3VsZFNw
ZWN1bGF0ZUludDMyKG5vZGUsIEZpeHVwUGFzcykpIHsKICAgICAgICAgICAgICAgICBmaXhJbnRP
ckJvb2xlYW5FZGdlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBpbnNlcnRDaGVj
azxJbnQzMlVzZT4obV9pbmRleEluQmxvY2ssIG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggYmJkNDZlYWRhMTAxZTdlMzgzYjZkY2My
NTA1NzgyMTdiNDI4NWUwMS4uNDY3ZGIwZWQ5Zjc1N2JkZWVkNmIwZTVlYjI4NmMxOGZlN2ZjOGVj
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtMzE2LDcgKzMxNiw3IEBA
IGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKIAogICAgIGJvb2wgcm91
bmRTaG91bGRTcGVjdWxhdGVJbnQzMihOb2RlKiBhcml0aFJvdW5kLCBQcmVkaWN0aW9uUGFzcyBw
YXNzKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGFyaXRoUm91bmQtPm9wKCkgPT0gQXJpdGhSb3Vu
ZCB8fCBhcml0aFJvdW5kLT5vcCgpID09IEFyaXRoRmxvb3IgfHwgYXJpdGhSb3VuZC0+b3AoKSA9
PSBBcml0aENlaWwpOworICAgICAgICBBU1NFUlQoYXJpdGhSb3VuZC0+b3AoKSA9PSBBcml0aFJv
dW5kIHx8IGFyaXRoUm91bmQtPm9wKCkgPT0gQXJpdGhGbG9vciB8fCBhcml0aFJvdW5kLT5vcCgp
ID09IEFyaXRoQ2VpbCB8fCBhcml0aFJvdW5kLT5vcCgpID09IEFyaXRoVHJ1bmMpOwogICAgICAg
ICByZXR1cm4gYXJpdGhSb3VuZC0+Y2FuU3BlY3VsYXRlSW50MzIocGFzcykgJiYgIWhhc0V4aXRT
aXRlKGFyaXRoUm91bmQtPm9yaWdpbi5zZW1hbnRpYywgT3ZlcmZsb3cpICYmICFoYXNFeGl0U2l0
ZShhcml0aFJvdW5kLT5vcmlnaW4uc2VtYW50aWMsIE5lZ2F0aXZlWmVybyk7CiAgICAgfQogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCA1YjEyMGQxYWYzMTExN2E2MWVk
MmFmYzkzYzcxMGYxYWNjZTY5N2MyLi4yMjU3YmZjMGI0MDA3OTY5MGE5MjExMmIzZDYxYjQ2ZWEw
OGI1ODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtOTQzLDcgKzk0Myw3
IEBAIHN0cnVjdCBOb2RlIHsKICAgICBOb2RlRmxhZ3MgYXJpdGhOb2RlRmxhZ3MoKQogICAgIHsK
ICAgICAgICAgTm9kZUZsYWdzIHJlc3VsdCA9IG1fZmxhZ3MgJiBOb2RlQXJpdGhGbGFnc01hc2s7
Ci0gICAgICAgIGlmIChvcCgpID09IEFyaXRoTXVsIHx8IG9wKCkgPT0gQXJpdGhEaXYgfHwgb3Ao
KSA9PSBBcml0aE1vZCB8fCBvcCgpID09IEFyaXRoTmVnYXRlIHx8IG9wKCkgPT0gQXJpdGhQb3cg
fHwgb3AoKSA9PSBBcml0aFJvdW5kIHx8IG9wKCkgPT0gQXJpdGhGbG9vciB8fCBvcCgpID09IEFy
aXRoQ2VpbCB8fCBvcCgpID09IERvdWJsZUFzSW50MzIpCisgICAgICAgIGlmIChvcCgpID09IEFy
aXRoTXVsIHx8IG9wKCkgPT0gQXJpdGhEaXYgfHwgb3AoKSA9PSBBcml0aE1vZCB8fCBvcCgpID09
IEFyaXRoTmVnYXRlIHx8IG9wKCkgPT0gQXJpdGhQb3cgfHwgb3AoKSA9PSBBcml0aFJvdW5kIHx8
IG9wKCkgPT0gQXJpdGhGbG9vciB8fCBvcCgpID09IEFyaXRoQ2VpbCB8fCBvcCgpID09IEFyaXRo
VHJ1bmMgfHwgb3AoKSA9PSBEb3VibGVBc0ludDMyKQogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgcmV0dXJuIHJlc3VsdCAmIH5Ob2RlQnl0ZWNvZGVOZWVkc05lZ1plcm87CiAg
ICAgfQpAQCAtMTM1MSw2ICsxMzUxLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIEFy
aXRoUm91bmQ6CiAgICAgICAgIGNhc2UgQXJpdGhGbG9vcjoKICAgICAgICAgY2FzZSBBcml0aENl
aWw6CisgICAgICAgIGNhc2UgQXJpdGhUcnVuYzoKICAgICAgICAgY2FzZSBHZXREaXJlY3RQbmFt
ZToKICAgICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKQEAg
LTE3MzMsNyArMTczNCw3IEBAIHN0cnVjdCBOb2RlIHsKIAogICAgIGJvb2wgaGFzQXJpdGhSb3Vu
ZGluZ01vZGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gQXJpdGhSb3VuZCB8fCBv
cCgpID09IEFyaXRoRmxvb3IgfHwgb3AoKSA9PSBBcml0aENlaWw7CisgICAgICAgIHJldHVybiBv
cCgpID09IEFyaXRoUm91bmQgfHwgb3AoKSA9PSBBcml0aEZsb29yIHx8IG9wKCkgPT0gQXJpdGhD
ZWlsIHx8IG9wKCkgPT0gQXJpdGhUcnVuYzsKICAgICB9CiAKICAgICBBcml0aDo6Um91bmRpbmdN
b2RlIGFyaXRoUm91bmRpbmdNb2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAppbmRleCA4ZTJhMTMzYzI2YTQ1YWNjMjM3ZjgyM2RkZDI3OTRjZmUwYmJhYzk3Li5mMWUx
YTU2ZjE5ZGZjMWZmMjEzNDVkZTBmOTA5MTgwMDVmZDBmNjI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0xNTgsNiArMTU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEFyaXRoUm91bmQsIE5vZGVSZXN1bHROdW1iZXIp
IFwKICAgICBtYWNybyhBcml0aEZsb29yLCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAgICAgbWFjcm8o
QXJpdGhDZWlsLCBOb2RlUmVzdWx0TnVtYmVyKSBcCisgICAgbWFjcm8oQXJpdGhUcnVuYywgTm9k
ZVJlc3VsdE51bWJlcikgXAogICAgIG1hY3JvKEFyaXRoU3FydCwgTm9kZVJlc3VsdE51bWJlcikg
XAogICAgIG1hY3JvKEFyaXRoU2luLCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAgICAgbWFjcm8oQXJp
dGhDb3MsIE5vZGVSZXN1bHROdW1iZXIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggODNm
YTA4ZDRhZTRlNmY2YTJmNWYzZmRmMWJmNDZkNjIzNDY4MjViZi4uZGY0ZDUwN2NhMmQ4ZTRhMTM5
ODBiNTVkYzE5NzYzYWQ0NThlYmQwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTM4OSw3
ICszODksOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAKICAgICAgICAgY2FzZSBBcml0aFJvdW5kOgogICAgICAgICBjYXNlIEFyaXRoRmxvb3I6
Ci0gICAgICAgIGNhc2UgQXJpdGhDZWlsOiB7CisgICAgICAgIGNhc2UgQXJpdGhDZWlsOgorICAg
ICAgICBjYXNlIEFyaXRoVHJ1bmM6IHsKICAgICAgICAgICAgIGlmIChpc0ludDMyT3JCb29sZWFu
U3BlY3VsYXRpb24obm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSkgJiYgbV9ncmFwaC5yb3VuZFNo
b3VsZFNwZWN1bGF0ZUludDMyKG5vZGUsIG1fcGFzcykpCiAgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGEyNTIxZGIxYjUz
NzA0YzFlMDA0NjYyYjA2YmRlOWVkOTQxYmM4MWUuLjgwNzdiODU5MDE4YjRmZjJhZGJkNzJiMTFj
NDExNjRmY2I1NTJlNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCkBAIC0xODYsNiArMTg2LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0
U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQXJp
dGhSb3VuZDoKICAgICBjYXNlIEFyaXRoRmxvb3I6CiAgICAgY2FzZSBBcml0aENlaWw6CisgICAg
Y2FzZSBBcml0aFRydW5jOgogICAgIGNhc2UgQXJpdGhTaW46CiAgICAgY2FzZSBBcml0aENvczoK
ICAgICBjYXNlIEFyaXRoTG9nOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAppbmRleCBjNTdjNTZkYWExZmUzNzBhMzljZWJlZGNmOTJiMmY0MWQz
MjlhZTkzLi4zYWQwM2RjYmEyM2M5NjY2ZGU2ZDgzOWIyNjYxYmQzM2Y2ZDkyMDMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtNDUw
NSw2ICs0NTA1LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJvdW5kaW5n
KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBj
YXNlIEFyaXRoVHJ1bmM6IHsKKyAgICAgICAgICAgIEZQUlRlbXBvcmFyeSByb3VuZGVkKHRoaXMp
OworICAgICAgICAgICAgRlBSUmVnIHJlc3VsdEZQUiA9IHJvdW5kZWQuZnByKCk7CisgICAgICAg
ICAgICBtX2ppdC5yb3VuZFRvd2FyZFplcm9Eb3VibGUodmFsdWVGUFIsIHJlc3VsdEZQUik7Cisg
ICAgICAgICAgICBzZXRSZXN1bHQocmVzdWx0RlBSKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICB9CkBAIC00NTE2LDkgKzQ1MjQsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoUm91bmRpbmcoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24oanNSb3VuZCwgcmVzdWx0RlBSLCB2YWx1ZUZQUik7CiAgICAgICAgIGVs
c2UgaWYgKG5vZGUtPm9wKCkgPT0gQXJpdGhGbG9vcikKICAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24oZmxvb3IsIHJlc3VsdEZQUiwgdmFsdWVGUFIpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIEFTU0VSVChub2RlLT5vcCgpID09IEFyaXRoQ2VpbCk7CisgICAgICAgIGVsc2UgaWYgKG5v
ZGUtPm9wKCkgPT0gQXJpdGhDZWlsKQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihjZWlsLCBy
ZXN1bHRGUFIsIHZhbHVlRlBSKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQo
bm9kZS0+b3AoKSA9PSBBcml0aFRydW5jKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24odHJ1
bmMsIHJlc3VsdEZQUiwgdmFsdWVGUFIpOwogICAgICAgICB9CiAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgICAgIHNldFJlc3VsdChyZXN1bHRGUFIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDQ1ODEzYTQxMTg4OTU2
NmM0NzhhZDY0ZDAyMmMxMzhhZWEwYjc5ZmUuLmE2ZjkwYzdkMDc2Zjc1MmY2ZDM2ZjdhZmU3NmU0
ZTZjNmI1OGVhNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKQEAgLTIzNzMsOCArMjM3Myw2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAg
ICB2b2lkIGNvbXBpbGVBcml0aE1vZChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhQb3co
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZUFyaXRoUm91bmRpbmcoTm9kZSopOwotICAgIHZvaWQg
Y29tcGlsZUFyaXRoRmxvb3IoTm9kZSopOwotICAgIHZvaWQgY29tcGlsZUFyaXRoQ2VpbChOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhSYW5kb20oTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUFyaXRoU3FydChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhMb2coTm9kZSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKaW5kZXggZDdjZjAzN2E5NTBlYmQ1ODYzNWRhZWRmYzRlNzdlYjc5MjRiY2E4Ni4uNTFmM2U0
NzQ3OTBmYmJiMTQ4NTU3YjhkNTljNDU2MjFmZDU5MGVhNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yMzA2LDYg
KzIzMDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBBcml0aFJvdW5kOgogICAgIGNhc2UgQXJpdGhGbG9vcjoKICAgICBjYXNlIEFyaXRoQ2Vp
bDoKKyAgICBjYXNlIEFyaXRoVHJ1bmM6CiAgICAgICAgIGNvbXBpbGVBcml0aFJvdW5kaW5nKG5v
ZGUpOwogICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggOGExODE5NGM1ZDA5ODQxYjJlZjEyMjRhYWRj
MTM4ZjNmZGI4NzVmOS4uYzRmZGU5ZmIwNDEyMWI2OWNlMTQ0MWZhNTMyYTc4MDEwZWYzZmQ2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCkBAIC0yNDQ0LDYgKzI0NDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBBcml0aFJvdW5kOgogICAgIGNhc2UgQXJpdGhGbG9vcjoKICAg
ICBjYXNlIEFyaXRoQ2VpbDoKKyAgICBjYXNlIEFyaXRoVHJ1bmM6CiAgICAgICAgIGNvbXBpbGVB
cml0aFJvdW5kaW5nKG5vZGUpOwogICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDcxYTJmYjJkMzQxMGE1MzVhMmI3
YzdkYjBjMWNmYTc3ZmIzN2RiNjkuLjJjODM4NDg5MmNlZDg0ZmE0MzkyMzFmMDI4M2EyN2E2YmVl
OTRkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKQEAgLTk5LDYgKzk5LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBBcml0aFJvdW5kOgogICAgIGNhc2UgQXJpdGhGbG9vcjoKICAg
ICBjYXNlIEFyaXRoQ2VpbDoKKyAgICBjYXNlIEFyaXRoVHJ1bmM6CiAgICAgY2FzZSBBcml0aFNx
cnQ6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIEFyaXRoRlJvdW5kOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDY1NGJkNmY5MTZk
OWI4Y2NjMDczYjc0NzM0OGJkZDE3YzlhMDc5YWYuLjRjMDhlYTY3MzA0NWVlZTdhZjY5MDM1OTE3
OWUxMmRjM2JhZWY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKQEAgLTUzMiw2ICs1MzIsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICBjYXNlIEFyaXRoQ2VpbDoKICAgICAgICAgICAgIGNvbXBpbGVBcml0aENlaWwoKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFyaXRoVHJ1bmM6CisgICAgICAgICAgICBj
b21waWxlQXJpdGhUcnVuYygpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJp
dGhTcXJ0OgogICAgICAgICAgICAgY29tcGlsZUFyaXRoU3FydCgpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0xOTc2LDYgKzE5NzksMTYgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
ICAgIHNldERvdWJsZShpbnRlZ2VyVmFsdWUpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUFy
aXRoVHJ1bmMoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93RG91YmxlKG1fbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuZG91YmxlVHJ1bmMo
dmFsdWUpOworICAgICAgICBpZiAocHJvZHVjZXNJbnRlZ2VyKG1fbm9kZS0+YXJpdGhSb3VuZGlu
Z01vZGUoKSkpCisgICAgICAgICAgICBzZXRJbnQzMihjb252ZXJ0RG91YmxlVG9JbnQzMihyZXN1
bHQsIHNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG1fbm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0RG91YmxlKHJlc3VsdCk7CisgICAgfQor
CiAgICAgdm9pZCBjb21waWxlQXJpdGhTcXJ0KCkgeyBzZXREb3VibGUobV9vdXQuZG91YmxlU3Fy
dChsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSkpKTsgfQogCiAgICAgdm9pZCBjb21waWxlQXJp
dGhMb2coKSB7IHNldERvdWJsZShtX291dC5kb3VibGVMb2cobG93RG91YmxlKG1fbm9kZS0+Y2hp
bGQxKCkpKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0
cHV0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmNwcAppbmRleCAx
YmZjYTY1N2MxYzlhNjEwODUxNWJjODEyNmNlNjcyZWY4YjMwZmM2Li5hNWFlMDA2ZDFiYWE2NzAw
N2UzMDA4YWQ2ZTZjNWMyZGUzMjk3MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE91dHB1dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
dXRwdXQuY3BwCkBAIC0xNDYsNiArMTQ2LDIyIEBAIExWYWx1ZSBPdXRwdXQ6OmRvdWJsZVRvVUlu
dChMVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorTFZhbHVlIE91dHB1dDo6
ZG91YmxlVHJ1bmMoTFZhbHVlIHZhbHVlKQoreworICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6c3Vw
cG9ydHNGbG9hdGluZ1BvaW50Um91bmRpbmcoKSkgeworICAgICAgICBQYXRjaHBvaW50VmFsdWUq
IHJlc3VsdCA9IHBhdGNocG9pbnQoRG91YmxlKTsKKyAgICAgICAgcmVzdWx0LT5hcHBlbmQodmFs
dWUsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICByZXN1bHQtPnNldEdlbmVyYXRv
cigKKyAgICAgICAgICAgIFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBqaXQucm91bmRUb3dhcmRa
ZXJvRG91YmxlKHBhcmFtc1sxXS5mcHIoKSwgcGFyYW1zWzBdLmZwcigpKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICByZXN1bHQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGRvdWJsZSAoKnRydW5jRG91YmxlKShkb3VibGUp
ID0gdHJ1bmM7CisgICAgcmV0dXJuIGNhbGxXaXRob3V0U2lkZUVmZmVjdHMoRG91YmxlLCB0cnVu
Y0RvdWJsZSwgdmFsdWUpOworfQorCiBMVmFsdWUgT3V0cHV0Ojp1bnNpZ25lZFRvRG91YmxlKExW
YWx1ZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gaW50VG9Eb3VibGUoemVyb0V4dCh2YWx1ZSwgSW50
NjQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCmluZGV4IGQ4YzkyMTlmZTNj
MmU5Mzk4MzdlMmZjNmM2NGQyMzU5ODk1ZmE1MDEuLmIzNWUxNTcwMDJkZjY4YjMxYmZjOTY0NGRi
MTI3NzNkOTk1OGNjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T3V0cHV0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaApAQCAt
MTU2LDYgKzE1Niw3IEBAIGNsYXNzIE91dHB1dCA6IHB1YmxpYyBDb21tb25WYWx1ZXMgewogICAg
IExWYWx1ZSBkb3VibGVBYnMoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmRO
ZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpBYnMsIG9yaWdpbigpLCB2YWx1ZSk7IH0KICAgICBM
VmFsdWUgZG91YmxlQ2VpbChMVmFsdWUgb3BlcmFuZCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5k
TmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Q2VpbCwgb3JpZ2luKCksIG9wZXJhbmQpOyB9CiAg
ICAgTFZhbHVlIGRvdWJsZUZsb29yKExWYWx1ZSBvcGVyYW5kKSB7IHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpGbG9vciwgb3JpZ2luKCksIG9wZXJhbmQp
OyB9CisgICAgTFZhbHVlIGRvdWJsZVRydW5jKExWYWx1ZSk7CiAKICAgICBMVmFsdWUgZG91Ymxl
U2luKExWYWx1ZSB2YWx1ZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggMjVkMDAxNDBjMGI1YTBlN2JmZjhmNjhhMmRlYmU3YzQ0
NjY2MmQ0OS4uYzk5YjkyZTZiMWIxYTkzOTA4ZjRlNGJhYWE0MWIxYWU4MTA3YmE2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtNzQwLDYg
Kzc0MCw3IEBAIHR5cGVkZWYgTWF0aFRodW5rQ2FsbGluZ0NvbnZlbnRpb24oKk1hdGhUaHVuayko
TWF0aFRodW5rQ2FsbGluZ0NvbnZlbnRpb24pOwogLy8gTVNWQyBkb2VzIG5vdCBhY2NlcHQgZmxv
b3IsIGV0YywgdG8gYmUgY2FsbGVkIGRpcmVjdGx5IGZyb20gaW5saW5lIGFzc2VtYmx5LCBzbyB3
ZSBuZWVkIHRvIHdyYXAgdGhlc2UgZnVuY3Rpb25zLgogc3RhdGljIGRvdWJsZSAoX2NkZWNsICpm
bG9vckZ1bmN0aW9uKShkb3VibGUpID0gZmxvb3I7CiBzdGF0aWMgZG91YmxlIChfY2RlY2wgKmNl
aWxGdW5jdGlvbikoZG91YmxlKSA9IGNlaWw7CitzdGF0aWMgZG91YmxlIChfY2RlY2wgKnRydW5j
RnVuY3Rpb24pKGRvdWJsZSkgPSB0cnVuYzsKIHN0YXRpYyBkb3VibGUgKF9jZGVjbCAqZXhwRnVu
Y3Rpb24pKGRvdWJsZSkgPSBleHA7CiBzdGF0aWMgZG91YmxlIChfY2RlY2wgKmxvZ0Z1bmN0aW9u
KShkb3VibGUpID0gbG9nOwogc3RhdGljIGRvdWJsZSAoX2NkZWNsICpqc1JvdW5kRnVuY3Rpb24p
KGRvdWJsZSkgPSBqc1JvdW5kOwpAQCAtNzcxLDYgKzc3Miw3IEBAIGRlZmluZVVuYXJ5RG91Ymxl
T3BXcmFwcGVyKGV4cCk7CiBkZWZpbmVVbmFyeURvdWJsZU9wV3JhcHBlcihsb2cpOwogZGVmaW5l
VW5hcnlEb3VibGVPcFdyYXBwZXIoZmxvb3IpOwogZGVmaW5lVW5hcnlEb3VibGVPcFdyYXBwZXIo
Y2VpbCk7CitkZWZpbmVVbmFyeURvdWJsZU9wV3JhcHBlcih0cnVuYyk7CiAKIHN0YXRpYyBjb25z
dCBkb3VibGUgb25lQ29uc3RhbnQgPSAxLjA7CiBzdGF0aWMgY29uc3QgZG91YmxlIG5lZ2F0aXZl
SGFsZkNvbnN0YW50ID0gLTAuNTsKQEAgLTg0Miw2ICs4NDQsMjkgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGNlaWxUaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgcmV0dXJuIGppdC5maW5hbGl6
ZSh2bS0+aml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImNlaWwiKTsKIH0KIAorTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHRydW5jVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQoreworICAgIFNw
ZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKKyAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFw
cGVyKHRydW5jKSB8fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQorICAgICAgICByZXR1
cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0tPmpp
dFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm9u
SW50SnVtcDsKKyAgICBqaXQubG9hZEludDMyQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDAsIG5vbkludEp1bXApOworICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMCk7CisgICAgbm9uSW50SnVtcC5saW5rKCZqaXQpOworICAgIGppdC5sb2Fk
RG91YmxlQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCwgU3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmVnVDApOworICAgIGlmIChqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50Um91
bmRpbmcoKSkKKyAgICAgICAgaml0LnJvdW5kVG93YXJkWmVyb0RvdWJsZShTcGVjaWFsaXplZFRo
dW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKKyAgICBlbHNl
CisgICAgICAgIGppdC5jYWxsRG91YmxlVG9Eb3VibGVQcmVzZXJ2aW5nUmV0dXJuKFVuYXJ5RG91
YmxlT3BXcmFwcGVyKHRydW5jKSk7CisKKyAgICBTcGVjaWFsaXplZFRodW5rSklUOjpKdW1wTGlz
dCBkb3VibGVSZXN1bHQ7CisgICAgaml0LmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKFNwZWNp
YWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBkb3Vi
bGVSZXN1bHQsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDEpOworICAgIGppdC5yZXR1cm5J
bnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CisgICAgZG91YmxlUmVzdWx0Lmxpbmso
JmppdCk7CisgICAgaml0LnJldHVybkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1Qw
KTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENh
bGwodm0pLCAidHJ1bmMiKTsKK30KKwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJvdW5kVGh1bmtH
ZW5lcmF0b3IoVk0qIHZtKQogewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCmluZGV4IDlmYjhh
YmI0NGVhMjJkYmQ4NTI3NTZhOWNiOGE5ZGJjZWFjZDM3ODkuLjgyZDQ3ZmE0Njg3ZmJjZGE5YjNh
YTQyOGIxNGQ5MDNmMzBkNGY4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuaApAQCAtNjMsNiArNjMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgc3Fy
dFRodW5rR2VuZXJhdG9yKFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcG93VGh1bmtHZW5l
cmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0q
KTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiByYW5kb21UaHVua0dlbmVyYXRvcihWTSopOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHRydW5jVGh1bmtHZW5lcmF0b3IoVk0qKTsKIAogfQogI2VuZGlm
IC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAppbmRleCA2YmI1MTgwYjZlN2RkZDdjNWI2YzFkNTMzMWQ3YWU4MjRk
MmUwMjMyLi45ZGVhNzhjMTk1YTU3YTY0Mjg0ZWJkYmNiOTE3YTAyNmRkZjcxNzU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAg
LTMxNSw2ICszMTUsNyBAQAogICAgIG1hY3JvKEludGVybmFsUHJvbWlzZSkgXAogICAgIG1hY3Jv
KGFicykgXAogICAgIG1hY3JvKGZsb29yKSBcCisgICAgbWFjcm8odHJ1bmMpIFwKICAgICBtYWNy
byhpc0Zpbml0ZSkgXAogICAgIG1hY3JvKGlzTmFOKSBcCiAgICAgbWFjcm8oY3JlYXRlKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IGQ4ZGUwMDZlYTU1
NDFhNWVjZDdmZjQxMWExYTBhNjFmODVjODZjM2YuLjA4ZmRlYjQ0Nzk5NzIyNWE3MmU3NjFmY2Y5
NzMwYjIzNDdiOWEwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5oCkBAIC01Niw2ICs1Niw3IEBAIGVudW0gSlNfRVhQT1JUX1BSSVZBVEUgSW50cmluc2ljIHsK
ICAgICBJTXVsSW50cmluc2ljLAogICAgIFJhbmRvbUludHJpbnNpYywKICAgICBGUm91bmRJbnRy
aW5zaWMsCisgICAgVHJ1bmNJbnRyaW5zaWMsCiAKICAgICAvLyBHZXR0ZXIgaW50cmluc2ljcy4K
ICAgICBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDE3NTUxM2ZmMTc4YzgyNTJlMDM2
NGU3YWJiY2Q1MTdlNjBhY2VlNDcuLjA3NzJjMTc2ODExZTRiMWM1NGZlZjdhZDgxOWI5ODE2ZGQw
OWViZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKQEAgLTUyNiw2ICs1MjYsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAg
IEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jRmxvb3IgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRo
aXMsIDAsIFN0cmluZygpLCBtYXRoUHJvdG9GdW5jRmxvb3IsIEZsb29ySW50cmluc2ljKTsKICAg
ICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lzRmluaXRlID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB0aGlzLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0lzRmluaXRlKTsKICAgICBKU0Z1bmN0aW9u
KiBwcml2YXRlRnVuY0lzTmFOID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJp
bmcoKSwgZ2xvYmFsRnVuY0lzTmFOKTsKKyAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1RydW5j
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgbWF0aFByb3RvRnVu
Y1RydW5jLCBUcnVuY0ludHJpbnNpYyk7CiAKICAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0dl
dFRlbXBsYXRlT2JqZWN0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmco
KSwgZ2V0VGVtcGxhdGVPYmplY3QpOwogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jVG9MZW5n
dGggPSBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdFRv
TGVuZ3RoQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpOwpAQCAtNTYzLDYgKzU2NCw3IEBAIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dl
ck5hbWUgIyMgQ29uc3RydWN0CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5TdHJpbmdQcml2YXRlTmFtZSwgc3RyaW5nQ29uc3RydWN0b3IsIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmFic1ByaXZhdGVOYW1lLCBwcml2YXRlRnVuY0FicywgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+Zmxvb3JQcml2YXRlTmFtZSwgcHJpdmF0ZUZ1bmNGbG9vciwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+dHJ1bmNQcml2YXRlTmFtZSwgcHJpdmF0ZUZ1bmNUcnVuYywgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+aXNGaW5pdGVQcml2YXRlTmFtZSwgcHJpdmF0ZUZ1bmNJc0Zpbml0
ZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+aXNOYU5Qcml2YXRlTmFtZSwgcHJpdmF0ZUZ1bmNJ
c05hTiwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+UHJvbWlzZVByaXZhdGVOYW1lLCBwcm9taXNl
Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKaW5kZXggOTk3YjA2NDdlNTkz
NWQ2ZWFmYzc2ZWViZjQ5ODI5ZjgxZTIxNGZjZC4uNjZkMzFiNzRkOWE4NzY3MjRhOTdjYTUwYTlh
NjNhMThjYzk2MzZlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWF0aE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9i
amVjdC5jcHAKQEAgLTY3LDcgKzY3LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jU2luaChFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY1NxcnQoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hdGhQcm90b0Z1bmNUYW4oRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNUYW5oKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVHJ1bmMoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNJTXVsKEV4ZWNTdGF0ZSopOwogCiB9CkBA
IC0xMjksNyArMTI4LDcgQEAgdm9pZCBNYXRoT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgInNxcnQiKSwgMSwgbWF0aFByb3RvRnVuY1NxcnQsIFNxcnRJbnRyaW5zaWMsIERv
bnRFbnVtKTsKICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAidGFuIiksIDEsIG1h
dGhQcm90b0Z1bmNUYW4sIE5vSW50cmluc2ljLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgInRhbmgiKSwgMSwgbWF0aFByb3RvRnVuY1RhbmgsIE5vSW50cmlu
c2ljLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInRydW5j
IiksIDEsIG1hdGhQcm90b0Z1bmNUcnVuYywgTm9JbnRyaW5zaWMsIERvbnRFbnVtKTsKKyAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAidHJ1bmMiKSwgMSwgbWF0aFByb3RvRnVuY1Ry
dW5jLCBUcnVuY0ludHJpbnNpYywgRG9udEVudW0pOwogICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sICJpbXVsIiksIDIsIG1hdGhQcm90b0Z1bmNJTXVsLCBJTXVsSW50cmluc2ljLCBE
b250RW51bSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hdGhPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3Qu
aAppbmRleCA5ZDFjMTgxYzBmMWVmYWEyMGIzNWY3ZTg1ZDhkZmFkYmZmNDYzNzliLi4xYTEzM2Q1
NTRkYTQ0MGE3NWRkNDE2Njc3NmVlNzhlOGQyYjJkZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCkBAIC01Myw2ICs1Myw3IEBAIGNsYXNzIE1hdGhPYmpl
Y3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY0FicyhFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWF0aFByb3RvRnVuY0Zsb29yKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jVHJ1bmMoRXhlY1N0YXRlKik7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNTU2YWFj
NDYyNDI5N2U1MjUxYzU3ZWFlYmNmMThkZjY4OTJkMTdjMi4uODI2NGIxMTBiMzI5MzVmMzM0MTNm
MDM0ZDc2YzY2M2M3Zjc1YWJlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApA
QCAtNDc5LDYgKzQ3OSw4IEBAIHN0YXRpYyBUaHVua0dlbmVyYXRvciB0aHVua0dlbmVyYXRvckZv
ckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gZmxvb3JUaHVu
a0dlbmVyYXRvcjsKICAgICBjYXNlIENlaWxJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiBjZWls
VGh1bmtHZW5lcmF0b3I7CisgICAgY2FzZSBUcnVuY0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJu
IHRydW5jVGh1bmtHZW5lcmF0b3I7CiAgICAgY2FzZSBSb3VuZEludHJpbnNpYzoKICAgICAgICAg
cmV0dXJuIHJvdW5kVGh1bmtHZW5lcmF0b3I7CiAgICAgY2FzZSBFeHBJbnRyaW5zaWM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGgtcm91bmRpbmct
aW5maW5pdHkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGgtcm91
bmRpbmctaW5maW5pdHkuanMKaW5kZXggMjFlMDIxZTAwYmM2MTA4NTBmYzQyOWIzNmQ2YzQ4MWNk
ZWY3ZmFkMC4uYTkzNTM4MDA0MTMxNGZiZjJkMDExYmU2MDEzMjIyODQwODMxMjA2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXJvdW5kaW5nLWlu
ZmluaXR5LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbWF0aC1y
b3VuZGluZy1pbmZpbml0eS5qcwpAQCAtMjEsNiArMjEsMTIgQEAgZnVuY3Rpb24gdGVzdENlaWwo
dmFsdWUpCiB9CiBub0lubGluZSh0ZXN0Q2VpbCk7CiAKK2Z1bmN0aW9uIHRlc3RUcnVuYyh2YWx1
ZSkKK3sKKyAgICByZXR1cm4gTWF0aC50cnVuYyh2YWx1ZSk7Cit9Citub0lubGluZSh0ZXN0VHJ1
bmMpOworCiBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CiAgICAgc2hvdWxkQmUodGVz
dFJvdW5kKEluZmluaXR5KSwgSW5maW5pdHkpOwogICAgIHNob3VsZEJlKHRlc3RSb3VuZCgtSW5m
aW5pdHkpLCAtSW5maW5pdHkpOwpAQCAtMjgsNCArMzQsNiBAQCBmdW5jdGlvbiB0ZXN0Q2VpbCh2
YWx1ZSkKICAgICBzaG91bGRCZSh0ZXN0Rmxvb3IoLUluZmluaXR5KSwgLUluZmluaXR5KTsKICAg
ICBzaG91bGRCZSh0ZXN0Q2VpbChJbmZpbml0eSksIEluZmluaXR5KTsKICAgICBzaG91bGRCZSh0
ZXN0Q2VpbCgtSW5maW5pdHkpLCAtSW5maW5pdHkpOworICAgIHNob3VsZEJlKHRlc3RUcnVuYyhJ
bmZpbml0eSksIEluZmluaXR5KTsKKyAgICBzaG91bGRCZSh0ZXN0VHJ1bmMoLUluZmluaXR5KSwg
LUluZmluaXR5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvbWF0aC1yb3VuZGluZy1uYW4uanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL21hdGgtcm91bmRpbmctbmFuLmpzCmluZGV4IGVjY2NkYmM3ZjdkNjY5ZTVlM2Q4ODlm
MTQ1MmM4YTNkY2ExN2NjNTguLmRlMWUxMzQ0YTA2ZGEwNWUyYWQ4ZGY3MDU1MmI3Njg3Y2MyNDFj
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbWF0aC1y
b3VuZGluZy1uYW4uanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9t
YXRoLXJvdW5kaW5nLW5hbi5qcwpAQCAtMjEsOCArMjEsMTUgQEAgZnVuY3Rpb24gdGVzdENlaWwo
dmFsdWUpCiB9CiBub0lubGluZSh0ZXN0Q2VpbCk7CiAKK2Z1bmN0aW9uIHRlc3RUcnVuYyh2YWx1
ZSkKK3sKKyAgICByZXR1cm4gTWF0aC50cnVuYyh2YWx1ZSk7Cit9Citub0lubGluZSh0ZXN0VHJ1
bmMpOworCiBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CiAgICAgc2hvdWxkQmUoTnVt
YmVyLmlzTmFOKHRlc3RSb3VuZChOYU4pKSwgdHJ1ZSk7CiAgICAgc2hvdWxkQmUoTnVtYmVyLmlz
TmFOKHRlc3RGbG9vcihOYU4pKSwgdHJ1ZSk7CiAgICAgc2hvdWxkQmUoTnVtYmVyLmlzTmFOKHRl
c3RDZWlsKE5hTikpLCB0cnVlKTsKKyAgICBzaG91bGRCZShOdW1iZXIuaXNOYU4odGVzdFRydW5j
KE5hTikpLCB0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvbWF0aC1yb3VuZGluZy1uZWdhdGl2ZS16ZXJvLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXJvdW5kaW5nLW5lZ2F0aXZlLXplcm8uanMKaW5kZXgg
YWJhZTI3ODUwYzAyOTkwMjEzM2M2MDk0ZDFkNWMyNzk5YmM1N2FiNy4uMWE1YmFhMjRiZWE3MzMw
M2ZkM2ZkMTUxM2NmZDM0NjYxZTMyY2IyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXJvdW5kaW5nLW5lZ2F0aXZlLXplcm8uanMKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXJvdW5kaW5nLW5lZ2F0aXZlLXpl
cm8uanMKQEAgLTY3LDQgKzY3LDEzIEBAIGZ1bmN0aW9uIHRlc3RSb3VuZE5vbk5lZ2F0aXZlWmVy
bzIodmFsdWUpCiAgICAgc2hvdWxkQmUoMSAvIHRlc3RSb3VuZE5vbk5lZ2F0aXZlWmVybzIoMC4x
KSwgSW5maW5pdHkpOwogfQogCitmdW5jdGlvbiB0ZXN0VHJ1bmModmFsdWUpCit7CisgICAgcmV0
dXJuIE1hdGgudHJ1bmModmFsdWUpOworfQorbm9JbmxpbmUodGVzdFRydW5jKTsKIAorZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIHNob3VsZEJlKDEgLyB0ZXN0VHJ1bmMoMC4w
KSwgSW5maW5pdHkpOworICAgIHNob3VsZEJlKDEgLyB0ZXN0VHJ1bmMoLTAuMCksIC1JbmZpbml0
eSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21h
dGgtdHJ1bmMtYXJpdGgtcm91bmRpbmctbW9kZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvbWF0aC10cnVuYy1hcml0aC1yb3VuZGluZy1tb2RlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRkZmIxZTM5MTM5NzhjYTU3MDU2NDY2ZTQ4NjVlNzQwMGM4ZmE5MjYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGgtdHJ1bmMtYXJpdGgt
cm91bmRpbmctbW9kZS5qcwpAQCAtMCwwICsxLDg1IEBACitmdW5jdGlvbiBmaXJzdENhcmVBYm91
dFplcm9TZWNvbmREb2VzTm90KGEpIHsKKyAgICB2YXIgcmVzdWx0QSA9IE1hdGgudHJ1bmMoYSk7
CisgICAgdmFyIHJlc3VsdEIgPSBNYXRoLnRydW5jKGEpfDA7CisgICAgcmV0dXJuIHsgcmVzdWx0
QTpyZXN1bHRBLCByZXN1bHRCOnJlc3VsdEIgfTsKK30KK25vSW5saW5lKGZpcnN0Q2FyZUFib3V0
WmVyb1NlY29uZERvZXNOb3QpOworCitmdW5jdGlvbiBmaXJzdERvTm90Q2FyZUFib3V0WmVyb1Nl
Y29uZERvZXMoYSkgeworICAgIHZhciByZXN1bHRBID0gTWF0aC50cnVuYyhhKXwwOworICAgIHZh
ciByZXN1bHRCID0gTWF0aC50cnVuYyhhKTsKKyAgICByZXR1cm4geyByZXN1bHRBOnJlc3VsdEEs
IHJlc3VsdEI6cmVzdWx0QiB9OworfQorbm9JbmxpbmUoZmlyc3REb05vdENhcmVBYm91dFplcm9T
ZWNvbmREb2VzKTsKKworLy8gV2FybXVwIHdpdGggZG91YmxlcywgYnV0IG5vdGhpbmcgdGhhdCB3
b3VsZCB0cnVuYyB0byAtMCB0byBlbnN1cmUgd2UgbmV2ZXIKKy8vIHNlZSBhIGRvdWJsZSBhcyBy
ZXN1bHQuIFRoZSByZXN1bHQgbXVzdCBiZSBpbnRlZ2VycywgdGhlIGlucHV0IGlzIGtlcHQgdG8g
c21hbGwgdmFsdWVzLgorZnVuY3Rpb24gd2FybXVwKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMWU0OyArK2kpIHsKKyAgICAgICAgZmlyc3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lc05vdCg0
Mi42ICsgaSk7CisgICAgICAgIGZpcnN0RG9Ob3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9lcyg0Mi40
ICsgaSk7CisgICAgfQorfQord2FybXVwKCk7CisKK2Z1bmN0aW9uIHZlcmlmeU5lZ2F0aXZlWmVy
b0lzUHJlc2VydmVkKCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAg
ICAgICAgdmFyIHJlc3VsdDEgPSBmaXJzdENhcmVBYm91dFplcm9TZWNvbmREb2VzTm90KC0wLjEp
OworICAgICAgICBpZiAoMSAvIHJlc3VsdDEucmVzdWx0QSAhPT0gLUluZmluaXR5KSB7CisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCBmaXJzdENhcmVBYm91dFplcm9TZWNvbmRE
b2VzTm90KC0wLjEpLCByZXN1bHRBID0gIiArIHJlc3VsdDEucmVzdWx0QSk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKDEgLyByZXN1bHQxLnJlc3VsdEIgIT09IEluZmluaXR5KSB7CisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCBmaXJzdENhcmVBYm91dFplcm9TZWNvbmREb2Vz
Tm90KC0wLjEpLCByZXN1bHRCID0gIiArIHJlc3VsdDEucmVzdWx0Qik7CisgICAgICAgIH0KKyAg
ICAgICAgdmFyIHJlc3VsdDIgPSBmaXJzdERvTm90Q2FyZUFib3V0WmVyb1NlY29uZERvZXMoLTAu
MSk7CisgICAgICAgIGlmICgxIC8gcmVzdWx0Mi5yZXN1bHRBICE9PSBJbmZpbml0eSkgeworICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3REb05vdENhcmVBYm91dFplcm9T
ZWNvbmREb2VzKC0wLjEpLCByZXN1bHRBID0gIiArIHJlc3VsdDEucmVzdWx0QSk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKDEgLyByZXN1bHQyLnJlc3VsdEIgIT09IC1JbmZpbml0eSkgeworICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3REb05vdENhcmVBYm91dFplcm9T
ZWNvbmREb2VzKC0wLjEpLCByZXN1bHRCID0gIiArIHJlc3VsdDEucmVzdWx0Qik7CisgICAgICAg
IH0KKyAgICAgICAgdmFyIHJlc3VsdDMgPSBmaXJzdENhcmVBYm91dFplcm9TZWNvbmREb2VzTm90
KC0wLjApOworICAgICAgICBpZiAoMSAvIHJlc3VsdDMucmVzdWx0QSAhPT0gLUluZmluaXR5KSB7
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCBmaXJzdENhcmVBYm91dFplcm9T
ZWNvbmREb2VzTm90KC0wLjApLCByZXN1bHRBID0gIiArIHJlc3VsdDMucmVzdWx0QSk7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKDEgLyByZXN1bHQzLnJlc3VsdEIgIT09IEluZmluaXR5KSB7Cisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCBmaXJzdENhcmVBYm91dFplcm9TZWNv
bmREb2VzTm90KC0wLjApLCByZXN1bHRCID0gIiArIHJlc3VsdDMucmVzdWx0Qik7CisgICAgICAg
IH0KKyAgICAgICAgdmFyIHJlc3VsdDQgPSBmaXJzdERvTm90Q2FyZUFib3V0WmVyb1NlY29uZERv
ZXMoLTAuMCk7CisgICAgICAgIGlmICgxIC8gcmVzdWx0NC5yZXN1bHRBICE9PSBJbmZpbml0eSkg
eworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3REb05vdENhcmVBYm91
dFplcm9TZWNvbmREb2VzKC0wLjApLCByZXN1bHRBID0gIiArIHJlc3VsdDQucmVzdWx0QSk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKDEgLyByZXN1bHQ0LnJlc3VsdEIgIT09IC1JbmZpbml0eSkg
eworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3REb05vdENhcmVBYm91
dFplcm9TZWNvbmREb2VzKC0wLjApLCByZXN1bHRCID0gIiArIHJlc3VsdDQucmVzdWx0Qik7Cisg
ICAgICAgIH0KKyAgICAgICAgdmFyIHJlc3VsdDUgPSBmaXJzdENhcmVBYm91dFplcm9TZWNvbmRE
b2VzTm90KDAuMCk7CisgICAgICAgIGlmICgxIC8gcmVzdWx0NS5yZXN1bHRBICE9PSBJbmZpbml0
eSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3RDYXJlQWJvdXRa
ZXJvU2Vjb25kRG9lc05vdCgwLjApLCByZXN1bHRBID0gIiArIHJlc3VsdDUucmVzdWx0QSk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKDEgLyByZXN1bHQ1LnJlc3VsdEIgIT09IEluZmluaXR5KSB7
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCBmaXJzdENhcmVBYm91dFplcm9T
ZWNvbmREb2VzTm90KDAuMCksIHJlc3VsdEIgPSAiICsgcmVzdWx0NS5yZXN1bHRCKTsKKyAgICAg
ICAgfQorICAgICAgICB2YXIgcmVzdWx0NiA9IGZpcnN0RG9Ob3RDYXJlQWJvdXRaZXJvU2Vjb25k
RG9lcygwLjApOworICAgICAgICBpZiAoMSAvIHJlc3VsdDYucmVzdWx0QSAhPT0gSW5maW5pdHkp
IHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIGZpcnN0RG9Ob3RDYXJlQWJv
dXRaZXJvU2Vjb25kRG9lcygwLjApLCByZXN1bHRBID0gIiArIHJlc3VsdDYucmVzdWx0QSk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKDEgLyByZXN1bHQ2LnJlc3VsdEIgIT09IEluZmluaXR5KSB7
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCBmaXJzdERvTm90Q2FyZUFib3V0
WmVyb1NlY29uZERvZXMoMC4wKSwgcmVzdWx0QiA9ICIgKyByZXN1bHQ2LnJlc3VsdEIpOworICAg
ICAgICB9CisgICAgICAgIHZhciByZXN1bHQ3ID0gZmlyc3RDYXJlQWJvdXRaZXJvU2Vjb25kRG9l
c05vdCgwLjEpOworICAgICAgICBpZiAoMSAvIHJlc3VsdDcucmVzdWx0QSAhPT0gSW5maW5pdHkp
IHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIGZpcnN0Q2FyZUFib3V0WmVy
b1NlY29uZERvZXNOb3QoMC4xKSwgcmVzdWx0QSA9ICIgKyByZXN1bHQ3LnJlc3VsdEEpOworICAg
ICAgICB9CisgICAgICAgIGlmICgxIC8gcmVzdWx0Ny5yZXN1bHRCICE9PSBJbmZpbml0eSkgewor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3RDYXJlQWJvdXRaZXJvU2Vj
b25kRG9lc05vdCgwLjEpLCByZXN1bHRCID0gIiArIHJlc3VsdDcucmVzdWx0Qik7CisgICAgICAg
IH0KKyAgICAgICAgdmFyIHJlc3VsdDggPSBmaXJzdERvTm90Q2FyZUFib3V0WmVyb1NlY29uZERv
ZXMoMC4xKTsKKyAgICAgICAgaWYgKDEgLyByZXN1bHQ4LnJlc3VsdEEgIT09IEluZmluaXR5KSB7
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCBmaXJzdERvTm90Q2FyZUFib3V0
WmVyb1NlY29uZERvZXMoMC4xKSwgcmVzdWx0QSA9ICIgKyByZXN1bHQ4LnJlc3VsdEEpOworICAg
ICAgICB9CisgICAgICAgIGlmICgxIC8gcmVzdWx0OC5yZXN1bHRCICE9PSBJbmZpbml0eSkgewor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgZmlyc3REb05vdENhcmVBYm91dFpl
cm9TZWNvbmREb2VzKDAuMSksIHJlc3VsdEIgPSAiICsgcmVzdWx0OC5yZXN1bHRCKTsKKyAgICAg
ICAgfQorICAgIH0KK30KK3ZlcmlmeU5lZ2F0aXZlWmVyb0lzUHJlc2VydmVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGgtdHJ1bmMtYmFzaWNz
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXRydW5jLWJhc2lj
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iZWNlZDJmNzFmMzY5OTc5OTY4YmQxNzU3NDZiYWQwMDkwOWM3MTE2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9t
YXRoLXRydW5jLWJhc2ljcy5qcwpAQCAtMCwwICsxLDI1NiBAQAorZnVuY3Rpb24gbWF0aFRydW5j
T25JbnRlZ2Vycyh2YWx1ZSkKK3sKKyAgICByZXR1cm4gTWF0aC50cnVuYyh2YWx1ZSk7Cit9Citu
b0lubGluZShtYXRoVHJ1bmNPbkludGVnZXJzKTsKKworZnVuY3Rpb24gbWF0aFRydW5jT25Eb3Vi
bGVzKHZhbHVlKQoreworICAgIHJldHVybiBNYXRoLnRydW5jKHZhbHVlKTsKK30KK25vSW5saW5l
KG1hdGhUcnVuY09uRG91Ymxlcyk7CisKK2Z1bmN0aW9uIG1hdGhUcnVuY09uQm9vbGVhbnModmFs
dWUpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1bmModmFsdWUpOworfQorbm9JbmxpbmUobWF0aFRy
dW5jT25Cb29sZWFucyk7CisKKy8vIFRoZSB0cml2aWFsIGNhc2VzIGZpcnN0LgorZm9yICh2YXIg
aSA9IDE7IGkgPCAxZTQ7ICsraSkgeworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNP
bkludGVnZXJzKGkpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09IGkpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigibWF0aFRydW5jT25JbnRlZ2VycygiICsgaSArICIpID0gIiArIHRydW5jZWRW
YWx1ZSk7CisKKyAgICB2YXIgdHJ1bmNlZFZhbHVlID0gbWF0aFRydW5jT25JbnRlZ2VycygtaSk7
CisgICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0gLWkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
bWF0aFRydW5jT25JbnRlZ2VycygiICsgLWkgKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisg
ICAgdmFyIGRvdWJsZUxvdyA9IGkgKyAwLjQ7CisgICAgdmFyIHRydW5jZWRWYWx1ZSA9IG1hdGhU
cnVuY09uRG91Ymxlcyhkb3VibGVMb3cpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09IGkpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jT25Eb3VibGVzKCIgKyBkb3VibGVMb3cg
KyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFyIGRvdWJsZUhpZ2ggPSBpICsgMC42
OworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNPbkRvdWJsZXMoZG91YmxlSGlnaCk7
CisgICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0gaSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJt
YXRoVHJ1bmNPbkRvdWJsZXMoIiArIGRvdWJsZUhpZ2ggKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUp
OworCisgICAgdmFyIGRvdWJsZU1pZCA9IGkgKyAwLjU7CisgICAgdmFyIHRydW5jZWRWYWx1ZSA9
IG1hdGhUcnVuY09uRG91Ymxlcyhkb3VibGVNaWQpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09
IGkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jT25Eb3VibGVzKCIgKyBkb3Vi
bGVNaWQgKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFyIHRydW5jZWRWYWx1ZSA9
IG1hdGhUcnVuY09uRG91YmxlcygtMC42KTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSAtMC4w
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY09uRG91YmxlcygtMC42KSA9ICIg
KyB0cnVuY2VkVmFsdWUpOworfQorCisvLyBTb21lIG1vcmUgaW50ZXJlc3RpbmcgY2FzZXMsIHNv
bWUgb2YgdGhlbSB3ZWxsIE9TUiBleGl0IHdoZW4gdGhlIHJldHVybiB2YWx1ZSBpcyB6ZXJvLgor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBt
YXRoVHJ1bmNPbkludGVnZXJzKGkpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09IGkpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jT25JbnRlZ2VycygiICsgaSArICIpID0gIiAr
IHRydW5jZWRWYWx1ZSk7CisKKyAgICB2YXIgdHJ1bmNlZFZhbHVlID0gbWF0aFRydW5jT25JbnRl
Z2VycygtaSk7CisgICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0gLWkpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigibWF0aFRydW5jT25JbnRlZ2VycygtIiArIGkgKyAiKSA9ICIgKyB0cnVuY2VkVmFs
dWUpOworCisgICAgdmFyIHRydW5jZWRWYWx1ZSA9IG1hdGhUcnVuY09uRG91YmxlcygtMC40KTsK
KyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSAtMC4wKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
Im1hdGhUcnVuY09uRG91YmxlcygtMC40KSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFy
IHRydW5jZWRWYWx1ZSA9IG1hdGhUcnVuY09uRG91YmxlcygtMC41KTsKKyAgICBpZiAodHJ1bmNl
ZFZhbHVlICE9PSAtMC4wKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY09uRG91
YmxlcygtMC41KSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFyIHRydW5jZWRWYWx1ZSA9
IG1hdGhUcnVuY09uRG91YmxlcygtMCk7CisgICAgaWYgKCEodHJ1bmNlZFZhbHVlID09PSAwICYm
ICgxL3RydW5jZWRWYWx1ZSkgPT09IC1JbmZpbml0eSkpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigibWF0aFRydW5jT25Eb3VibGVzKC0wKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFy
IHRydW5jZWRWYWx1ZSA9IG1hdGhUcnVuY09uRG91YmxlcyhOYU4pOworICAgIGlmICh0cnVuY2Vk
VmFsdWUgPT09IHRydW5jZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJtYXRoVHJ1
bmNPbkRvdWJsZXMoTmFOKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFyIHRydW5jZWRW
YWx1ZSA9IG1hdGhUcnVuY09uRG91YmxlcyhOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpOworICAg
IGlmICh0cnVuY2VkVmFsdWUgIT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJtYXRoVHJ1bmNPbkRvdWJsZXMoTnVtYmVyLlBPU0lUSVZFX0lORklO
SVRZKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFyIHRydW5jZWRWYWx1ZSA9IG1hdGhU
cnVuY09uRG91YmxlcyhOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpOworICAgIGlmICh0cnVuY2Vk
VmFsdWUgIT09IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJtYXRoVHJ1bmNPbkRvdWJsZXMoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKSA9ICIgKyB0
cnVuY2VkVmFsdWUpOworCisgICAgdmFyIGJvb2xlYW4gPSAhIShpICUgMik7CisgICAgdmFyIHRy
dW5jZWRCb29sZWFuID0gbWF0aFRydW5jT25Cb29sZWFucyhib29sZWFuKTsKKyAgICBpZiAodHJ1
bmNlZEJvb2xlYW4gIT0gYm9vbGVhbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJtYXRoVHJ1
bmNPbkRvdWJsZXMoIiArIGJvb2xlYW4gKyAiKSA9ICIgKyB0cnVuY2VkQm9vbGVhbik7Cit9CisK
K2Z1bmN0aW9uIHVzZWxlc3NNYXRoVHJ1bmModmFsdWUpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1
bmModmFsdWV8MCk7Cit9Citub0lubGluZSh1c2VsZXNzTWF0aFRydW5jKTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIHZhciB0cnVuY2VkVmFsdWUgPSB1c2VsZXNzTWF0
aFRydW5jKGkpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09IGkpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigidXNlbGVzc01hdGhUcnVuYygiICsgaSArICIpID0gIiArIHRydW5jZWRWYWx1ZSk7
CisKKyAgICB2YXIgZG91YmxlTG93ID0gaSArIDAuNDsKKyAgICB2YXIgdHJ1bmNlZFZhbHVlID0g
dXNlbGVzc01hdGhUcnVuYyhkb3VibGVMb3cpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09IGkp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigidXNlbGVzc01hdGhUcnVuYygiICsgZG91YmxlTG93
ICsgIikgPSAiICsgdHJ1bmNlZFZhbHVlKTsKKworICAgIHZhciBkb3VibGVIaWdoID0gaSArIDAu
NjsKKyAgICB2YXIgdHJ1bmNlZFZhbHVlID0gdXNlbGVzc01hdGhUcnVuYyhkb3VibGVIaWdoKTsK
KyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSBpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInVz
ZWxlc3NNYXRoVHJ1bmMoIiArIGRvdWJsZUhpZ2ggKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUpOwor
CisgICAgdmFyIGRvdWJsZU1pZCA9IGkgKyAwLjU7CisgICAgdmFyIHRydW5jZWRWYWx1ZSA9IHVz
ZWxlc3NNYXRoVHJ1bmMoZG91YmxlTWlkKTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSBpKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInVzZWxlc3NNYXRoVHJ1bmMoIiArIGRvdWJsZU1pZCAr
ICIpID0gIiArIHRydW5jZWRWYWx1ZSk7CisKKyAgICB2YXIgdHJ1bmNlZFZhbHVlID0gdXNlbGVz
c01hdGhUcnVuYygtMC40KTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSAwKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoInVzZWxlc3NNYXRoVHJ1bmMoLTAuNCkgPSAiICsgdHJ1bmNlZFZhbHVl
KTsKKworICAgIHZhciB0cnVuY2VkVmFsdWUgPSB1c2VsZXNzTWF0aFRydW5jKC0wLjUpOworICAg
IGlmICh0cnVuY2VkVmFsdWUgIT09IDApCisgICAgICAgIHRocm93IG5ldyBFcnJvcigidXNlbGVz
c01hdGhUcnVuYygtMC41KSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCisgICAgdmFyIHRydW5jZWRW
YWx1ZSA9IHVzZWxlc3NNYXRoVHJ1bmMoLTAuNik7CisgICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0g
MCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ1c2VsZXNzTWF0aFRydW5jKC0wLjYpID0gIiAr
IHRydW5jZWRWYWx1ZSk7Cit9CisKK2Z1bmN0aW9uIG1hdGhUcnVuY1dpdGhPdmVyZmxvdyh2YWx1
ZSkKK3sKKyAgICByZXR1cm4gTWF0aC50cnVuYyh2YWx1ZSk7Cit9Citub0lubGluZShtYXRoVHJ1
bmNXaXRoT3ZlcmZsb3cpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAg
dmFyIGJpZ1ZhbHVlID0gMTAwMDAwMDAwMDAwMDsKKyAgICB2YXIgdHJ1bmNlZFZhbHVlID0gbWF0
aFRydW5jV2l0aE92ZXJmbG93KGJpZ1ZhbHVlKTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSBi
aWdWYWx1ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJtYXRoVHJ1bmNXaXRoT3ZlcmZsb3co
IiArIGJpZ1ZhbHVlICsgIikgPSAiICsgdHJ1bmNlZFZhbHVlKTsKK30KKworZnVuY3Rpb24gbWF0
aFRydW5jQ29uc3VtZWRBc0RvdWJsZSh2YWx1ZSkKK3sKKyAgICByZXR1cm4gTWF0aC50cnVuYyh2
YWx1ZSkgKiAwLjU7Cit9Citub0lubGluZShtYXRoVHJ1bmNDb25zdW1lZEFzRG91YmxlKTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIHZhciBkb3VibGVWYWx1ZSA9IGkg
KyAwLjE7CisgICAgdmFyIHRydW5jZWRWYWx1ZSA9IG1hdGhUcnVuY0NvbnN1bWVkQXNEb3VibGUo
ZG91YmxlVmFsdWUpOworICAgIGlmICh0cnVuY2VkVmFsdWUgIT09IChpICogMC41KSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJtYXRoVHJ1bmNDb25zdW1lZEFzRG91YmxlKCIgKyBkb3VibGVW
YWx1ZSArICIpID0gIiArIHRydW5jZWRWYWx1ZSk7CisKKyAgICB2YXIgZG91YmxlVmFsdWUgPSBp
ICsgMC42OworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNDb25zdW1lZEFzRG91Ymxl
KGRvdWJsZVZhbHVlKTsKKyAgICBpZiAodHJ1bmNlZFZhbHVlICE9PSAoaSAqIDAuNSkpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jQ29uc3VtZWRBc0RvdWJsZSgiICsgZG91Ymxl
VmFsdWUgKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworCit9CisKK2Z1bmN0aW9uIG1hdGhUcnVu
Y0RvZXNOb3RDYXJlQWJvdXRNaW51c1plcm8odmFsdWUpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1
bmModmFsdWUpfDA7Cit9Citub0lubGluZShtYXRoVHJ1bmNEb2VzTm90Q2FyZUFib3V0TWludXNa
ZXJvKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIHZhciBkb3VibGVN
aWQgPSBpICsgMC41OworICAgIHZhciB0cnVuY2VkVmFsdWUgPSBtYXRoVHJ1bmNEb2VzTm90Q2Fy
ZUFib3V0TWludXNaZXJvKGRvdWJsZU1pZCk7CisgICAgaWYgKHRydW5jZWRWYWx1ZSAhPT0gaSkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJtYXRoVHJ1bmNEb2VzTm90Q2FyZUFib3V0TWludXNa
ZXJvKCIgKyBkb3VibGVNaWQgKyAiKSA9ICIgKyB0cnVuY2VkVmFsdWUpOworfQorCisKKy8vICoq
KiBGdW5jdGlvbiBhcmd1bWVudHMuICoqKgorZnVuY3Rpb24gbWF0aFRydW5jTm9Bcmd1bWVudHMo
KQoreworICAgIHJldHVybiBNYXRoLnRydW5jKCk7Cit9Citub0lubGluZShtYXRoVHJ1bmNOb0Fy
Z3VtZW50cyk7CisKK2Z1bmN0aW9uIG1hdGhUcnVuY1Rvb01hbnlBcmd1bWVudHMoYSwgYiwgYykK
K3sKKyAgICByZXR1cm4gTWF0aC50cnVuYyhhLCBiLCBjKTsKK30KK25vSW5saW5lKG1hdGhUcnVu
Y1Rvb01hbnlBcmd1bWVudHMpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7Cisg
ICAgdmFyIHZhbHVlID0gbWF0aFRydW5jTm9Bcmd1bWVudHMoKTsKKyAgICBpZiAodmFsdWUgPT09
IHZhbHVlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm1hdGhUcnVuY05vQXJndW1lbnRzKCkg
PSAiICsgdmFsdWUpOworCisgICAgdmFyIHZhbHVlID0gbWF0aFRydW5jVG9vTWFueUFyZ3VtZW50
cygyLjEsIDMsIDUpOworICAgIGlmICh2YWx1ZSAhPT0gMikKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJtYXRoVHJ1bmNUb29NYW55QXJndW1lbnRzKCkgPSAiICsgdmFsdWUpOworfQorCisKKy8v
ICoqKiBDb25zdGFudCBhcyBhcmd1bWVudHMuICoqKgorZnVuY3Rpb24gdGVzdE1hdGhUcnVuY09u
Q29uc3RhbnRzKCkKK3sKKyAgICB2YXIgdmFsdWUgPSBNYXRoLnRydW5jKDApOworICAgIGlmICh2
YWx1ZSAhPT0gMCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJNYXRoLnRydW5jKDApID0gIiAr
IHZhbHVlKTsKKyAgICB2YXIgdmFsdWUgPSBNYXRoLnRydW5jKC0wKTsKKyAgICBpZiAoISh2YWx1
ZSA9PT0gMCAmJiAoMS92YWx1ZSkgPT09IC1JbmZpbml0eSkpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiTWF0aC50cnVuYygtMCkgPSAiICsgdmFsdWUpOworICAgIHZhciB2YWx1ZSA9IE1hdGgu
dHJ1bmMoMSk7CisgICAgaWYgKHZhbHVlICE9PSAxKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
Ik1hdGgudHJ1bmMoMSkgPSAiICsgdmFsdWUpOworICAgIHZhciB2YWx1ZSA9IE1hdGgudHJ1bmMo
LTEpOworICAgIGlmICh2YWx1ZSAhPT0gLTEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiTWF0
aC50cnVuYygtMSkgPSAiICsgdmFsdWUpOworICAgIHZhciB2YWx1ZSA9IE1hdGgudHJ1bmMoNDIp
OworICAgIGlmICh2YWx1ZSAhPT0gNDIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiTWF0aC50
cnVuYyg0MikgPSAiICsgdmFsdWUpOworICAgIHZhciB2YWx1ZSA9IE1hdGgudHJ1bmMoLTQyLjIp
OworICAgIGlmICh2YWx1ZSAhPT0gLTQyKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1hdGgu
dHJ1bmMoLTQyLjIpID0gIiArIHZhbHVlKTsKKyAgICB2YXIgdmFsdWUgPSBNYXRoLnRydW5jKE5h
Tik7CisgICAgaWYgKHZhbHVlID09PSB2YWx1ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJN
YXRoLnRydW5jKE5hTikgPSAiICsgdmFsdWUpOworICAgIHZhciB2YWx1ZSA9IE1hdGgudHJ1bmMo
TnVtYmVyLlBPU0lUSVZFX0lORklOSVRJKTsKKyAgICBpZiAodmFsdWUgPT09IHZhbHVlKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIk1hdGgudHJ1bmMoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRJ
KSA9ICIgKyB2YWx1ZSk7CisgICAgdmFyIHZhbHVlID0gTWF0aC50cnVuYyhOdW1iZXIuTkVHQVRJ
VkVfSU5GSU5JVEkpOworICAgIGlmICh2YWx1ZSA9PT0gdmFsdWUpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiTWF0aC50cnVuYyhOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVEkpID0gIiArIHZhbHVl
KTsKKyAgICB2YXIgdmFsdWUgPSBNYXRoLnRydW5jKE1hdGguRSk7CisgICAgaWYgKHZhbHVlICE9
PSAyKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1hdGgudHJ1bmMoTWF0aC5FKSA9ICIgKyB2
YWx1ZSk7Cit9Citub0lubGluZSh0ZXN0TWF0aFRydW5jT25Db25zdGFudHMpOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgdGVzdE1hdGhUcnVuY09uQ29uc3RhbnRzKCk7
Cit9CisKKworLy8gKioqIFN0cnVjdCB0cmFuc2l0aW9uLiAqKioKK2Z1bmN0aW9uIG1hdGhUcnVu
Y1N0cnVjdFRyYW5zaXRpb24odmFsdWUpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1bmModmFsdWUp
OworfQorbm9JbmxpbmUobWF0aFRydW5jU3RydWN0VHJhbnNpdGlvbik7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICB2YXIgdmFsdWUgPSBtYXRoVHJ1bmNTdHJ1Y3RUcmFu
c2l0aW9uKDQyLjUpOworICAgIGlmICh2YWx1ZSAhPT0gNDIpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigibWF0aFRydW5jU3RydWN0VHJhbnNpdGlvbig0Mi41KSA9ICIgKyB2YWx1ZSk7Cit9CisK
K01hdGgudHJ1bmMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50c1swXSArIDU7IH0KKwor
dmFyIHZhbHVlID0gbWF0aFRydW5jU3RydWN0VHJhbnNpdGlvbig0Mik7CitpZiAodmFsdWUgIT09
IDQ3KQorICAgIHRocm93IG5ldyBFcnJvcigibWF0aFRydW5jU3RydWN0VHJhbnNpdGlvbig0Mikg
YWZ0ZXIgdHJhbnNpdGlvbiA9ICIgKyB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL21hdGgtdHJ1bmMtc2hvdWxkLWJlLXRydW5jYXRlLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tYXRoLXRydW5jLXNob3VsZC1iZS10
cnVuY2F0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjllYTliYmE4M2IzMjdhM2YyZjNiMDAxNTMwYTU4YzA4
MGYxZmUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9tYXRoLXRydW5jLXNob3VsZC1iZS10cnVuY2F0ZS5qcwpAQCAtMCwwICsxLDEyIEBACitm
dW5jdGlvbiBtYXRoVHJ1bmModmFsdWUpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1bmModmFsdWUp
OworfQorbm9JbmxpbmUobWF0aFRydW5jKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgeworICAgIHZhciBkb3VibGVNaWQgPSAtOTkwMSAtIDAuNjsKKyAgICB2YXIgcm91bmRlZFZh
bHVlID0gbWF0aFRydW5jKGRvdWJsZU1pZCk7CisgICAgaWYgKHJvdW5kZWRWYWx1ZSAhPT0gLTk5
MDEpCisgICAgICAgIHRocm93ICJtYXRoUm91bmREb2VzTm90Q2FyZUFib3V0TWludXNaZXJvKCIg
KyBkb3VibGVNaWQgKyAiKSA9ICIgKyByb3VuZGVkVmFsdWU7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTU2NzAyNTQ2
YjZjOWI4YTk3ZDE3NzAzY2ViNDRkMmFhM2MwODdlOC4uOWVkZTUwYjIzYmI2ZTQ0Zjg2MjhmNjFj
OWMzMjdjZDI3MjhlNDczNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA0LTAyICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIEFkZCB0
cnVuY2F0ZSBvcGVyYXRpb24gKHJvdW5kaW5nIHRvIHplcm8pCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYwNzIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL3JlZ3Jlc3MvbWFueS1mb3JlYWNoLWNh
bGxzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9tYW55LWZvcmVh
Y2gtY2FsbHMuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9tYXRoLXRydW5jLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9tYXRoLXRydW5jLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL21hbnktZm9yZWFjaC1j
YWxscy5qczogQWRkZWQuCisgICAgICAgIGZvckVhY2ggY2FsbHMgQHRvSW50ZWdlci4gSXQgaW5j
bHVkZXMgQHRydW5jIG5vdy4KKyAgICAgICAgKGkuYXJyYXkuZm9yRWFjaCk6CisgICAgICAgICog
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvbWF0aC10cnVuYy5qczogQWRkZWQuCisgICAgICAgIENh
bGwgTWF0aC50cnVuYyByZXBlYXRlZGx5LgorICAgICAgICAobWF0aFRydW5jSW50KToKKyAgICAg
ICAgKG1hdGhUcnVuY0RvdWJsZSk6CisgICAgICAgIChtYXRoVHJ1bmNNaXhlZCk6CisgICAgICAg
IChtYXRoVHJ1bmNEb3VibGVEb2VzTm90Q2FyZU5lZ2F0aXZlWmVybyk6CisKIDIwMTYtMDQtMDEg
IEpvb25naHVuIFBhcmsgIDxqaDcxOC5wYXJrQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQgRUZMIGdhcmRlbmluZyBhYm91dCBuZXcgUlRMIHNjcm9sbGJhciB0ZXN0Y2FzZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9tYW55LWZvcmVhY2gtY2FsbHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9tYW55LWZvcmVhY2gtY2FsbHMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdkMGE0ZjdkNGI0MGJhYWM5M2Y3OTg3YzZhNDAwYjA3NGVjN2Iw
NmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL21hbnktZm9yZWFj
aC1jYWxscy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL21hbnktZm9y
ZWFjaC1jYWxscworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNl
cHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9tYW55LWZvcmVhY2gt
Y2FsbHMuaHRtbCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvbWFueS1mb3JlYWNoLWNhbGxzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmJlNTg1MDZmZTdjNDA1MWNhNzc2NmVkYmM3ZGNhNjJhMTkwYmZkNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvbWFueS1mb3JlYWNoLWNh
bGxzLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJzY3JpcHQtdGVzdHMvbWFueS1mb3JlYWNoLWNhbGxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvbWF0aC10cnVu
Yy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL21hdGgtdHJ1bmMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNiMDI4ZTIxM2NmNTZmMTZhYjBjMWUzNjkyY2E1NGY3ODU5ZmIw
OWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL21hdGgtdHJ1bmMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9tYXRoLXRydW5jCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL21hdGgtdHJ1bmMuaHRtbCBiL0xheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MvbWF0aC10cnVuYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4NTlmYTdkZDNjZTc0Nzdh
MWM2Y2JmYmI3OTZkYzI5YWNiM2Y0YTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL21hdGgtdHJ1bmMuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9tYXRoLXRydW5jLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL21hbnktZm9yZWFjaC1jYWxscy5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL21hbnktZm9yZWFjaC1jYWxscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmIzODI1
ODc5MWY0MTEyYTIyOTlhNWI1MmQwMDE5YmZhMWQyNzZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvbWFueS1mb3JlYWNoLWNhbGxzLmpzCkBA
IC0wLDAgKzEsNyBAQAordmFyIHN1bSA9IDA7Cit2YXIgYXJyYXkgPSBbMSwgMiwgM107Citmb3Ig
KHZhciBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbiAo
dmFsdWUpIHsKKyAgICAgICAgc3VtICs9IHZhbHVlOworICAgIH0pOworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvbWF0aC10cnVuYy5qcyBiL0xheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL21hdGgtdHJ1bmMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjQ3ZTQ5NmJhMmY5YjEyNDNiYzVhOTk4NWFmMjdmY2YxNGFjZGI4NAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL21hdGgtdHJ1bmMuanMKQEAg
LTAsMCArMSwzOSBAQAorZnVuY3Rpb24gbWF0aFRydW5jSW50KGkpCit7CisgICAgcmV0dXJuIE1h
dGgudHJ1bmMoaSk7Cit9Citub0lubGluZShtYXRoVHJ1bmNJbnQpOworCitmb3IgKHZhciBpID0g
MDsgaSA8IDFlNTsgKytpKQorICAgIG1hdGhUcnVuY0ludChpKTsKKworZnVuY3Rpb24gbWF0aFRy
dW5jRG91YmxlKGkpCit7CisgICAgcmV0dXJuIE1hdGgudHJ1bmMoaSk7Cit9Citub0lubGluZSht
YXRoVHJ1bmNEb3VibGUpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKQorICAgIG1h
dGhUcnVuY0RvdWJsZShpICogMC42KTsKKworZnVuY3Rpb24gbWF0aFRydW5jTWl4ZWQoaSkKK3sK
KyAgICByZXR1cm4gTWF0aC50cnVuYyhpKTsKK30KK25vSW5saW5lKG1hdGhUcnVuY01peGVkKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIGlmIChpICUgMiA9PT0gMCkK
KyAgICAgICAgbWF0aFRydW5jRG91YmxlKGkgKiAwLjYpOworICAgIGVsc2UKKyAgICAgICAgbWF0
aFRydW5jRG91YmxlKGkpOworfQorCitmdW5jdGlvbiBtYXRoVHJ1bmNEb3VibGVEb2VzTm90Q2Fy
ZU5lZ2F0aXZlWmVybyhpKQoreworICAgIHJldHVybiBNYXRoLnRydW5jKGkpIHwgMDsKK30KK25v
SW5saW5lKG1hdGhUcnVuY0RvdWJsZURvZXNOb3RDYXJlTmVnYXRpdmVaZXJvKTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkKKyAgICBtYXRoVHJ1bmNEb3VibGVEb2VzTm90Q2FyZU5l
Z2F0aXZlWmVybyhpICogMC42KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>