<?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>164876</bug_id>
          
          <creation_ts>2016-11-17 10:53:25 -0800</creation_ts>
          <short_desc>WebAssembly JS API: check and test in-call / out-call values</short_desc>
          <delta_ts>2017-01-03 12:25:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>164757</dependson>
          <blocked>161709</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1252340</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-11-17 10:53:25 -0800</bug_when>
    <thetext>Bug #164757 adds support for WebAssemblyFunction to call into and out of WebAssembly from JavaScript.

The design [1] isn&apos;t super clear on what the conversion rules are calling with mismatched signatures (coercion, etc), number of arguments, and return type. I implemented what seems to make sense, but we should clarify, update the implementation, and test it thoroughly.

  [1]: https://github.com/WebAssembly/design/blob/master/JS.md</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263374</commentid>
    <comment_count>1</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-01-02 18:00:50 -0800</bug_when>
    <thetext>From this: https://github.com/WebAssembly/design/blob/master/JS.md#exported-function-exotic-objects

We should follow this behavior:

WebAssembly Exported Functions have a [[Call]](this, argValues) method defined as:

1. Let args be an empty list of coerced values.
2. Let inArity be the number of arguments and outArity be the number of results in the function type of the function&apos;s [[Closure]].
3. For all values v in argValues, in the order of their appearance:
  i. If the length ofargs is less than inArity, append ToWebAssemblyValue(v) to args.
4. While the length of args is less than inArity, append ToWebAssemblyValue(undefined) to args.
5. Let ret be the result of calling Eval.invoke passing [[Closure]], and args.
6. If outArity is 0, return undefined.
7. Otherwise, return ToJSValue(v), where v is the singular element of ret.

I&apos;ll fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263397</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-01-02 22:08:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/29844107&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263398</commentid>
    <comment_count>3</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-01-02 22:20:25 -0800</bug_when>
    <thetext>This is a correctness issue which seems to cause test failures from the following waterfall tests:

Similar unexpected failures, average 100.0% similarity with stddev 0.0: 20000412-2.c.s.wast.wasm 20000412-4.c.s.wast.wasm 20001124-1.c.s.wast.wasm 20010915-1.c.s.wast.wasm 20020206-2.c.s.wast.wasm 20020402-2.c.s.wast.wasm 20021204-1.c.s.wast.wasm 20031012-1.c.s.wast.wasm 20041113-1.c.s.wast.wasm 20041114-1.c.s.wast.wasm 20050125-1.c.s.wast.wasm 20080122-1.c.s.wast.wasm 920501-6.c.s.wast.wasm 980506-3.c.s.wast.wasm 990106-2.c.s.wast.wasm anon-1.c.s.wast.wasm bitfld-1.c.s.wast.wasm const-addr-expr-1.c.s.wast.wasm ipa-sra-1.c.s.wast.wasm loop-9.c.s.wast.wasm pending-4.c.s.wast.wasm pr23047.c.s.wast.wasm pr28651.c.s.wast.wasm pr32500.c.s.wast.wasm pr36321.c.s.wast.wasm pr40493.c.s.wast.wasm pr61375.c.s.wast.wasm switch-1.c.s.wast.wasm vrp-1.c.s.wast.wasm vrp-2.c.s.wast.wasm vrp-3.c.s.wast.wasm vrp-5.c.s.wast.wasm vrp-6.c.s.wast.wasm
Sample failure: FAILED 20000412-2.c.s.wast.wasm

Unknown exception of type `object`: TypeError: Not enough arguments (evaluating &apos;modules[0].exports.main()&apos;)
Exception: TypeError: Not enough arguments (evaluating &apos;modules[0].exports.main()&apos;)
main@[native code]
global code@/Volumes/dev/waterfall/src/work/wasm-install/lib/wasm.js:974:36


These failure could be hiding others though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263399</commentid>
    <comment_count>4</comment_count>
      <attachid>297923</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-01-02 22:29:40 -0800</bug_when>
    <thetext>Created attachment 297923
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263401</commentid>
    <comment_count>5</comment_count>
      <attachid>297924</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-01-02 23:50:32 -0800</bug_when>
    <thetext>Created attachment 297924
patch

Add a parameter / argument fuzzer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263402</commentid>
    <comment_count>6</comment_count>
      <attachid>297923</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-02 23:55:04 -0800</bug_when>
    <thetext>Comment on attachment 297923
patch

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

r=me

&gt; Source/JavaScriptCore/wasm/WasmBinding.cpp:83
&gt;          case Void:
&gt;          case Func:
&gt;          case Anyfunc:

It seems like these 3 should be validation errors, right? So maybe RELEASE_ASSERT_NOT_REACHED for them?

&gt; Source/JavaScriptCore/wasm/WasmBinding.cpp:84
&gt; +        case I64: {

I forget what the spec decided here. I think we&apos;re supposed to throw an exception at the very beginning of the call, but maybe it should be a link error?

&gt; Source/JavaScriptCore/wasm/WasmBinding.cpp:147
&gt; +        auto materializeDoubleEncodeOffset = [&amp;hasMaterializedDoubleEncodeOffset] (JIT&amp; jit, GPRReg dest) {

Nit: This doesn&apos;t really need to take any arguments since it can just capture the arguments its always called with.

&gt; Source/JavaScriptCore/wasm/WasmBinding.cpp:149
&gt; +                ASSERT(DoubleEncodeOffset == 1ll &lt;&lt; 48);

If you decide to keep the move/lshift, then make this a static assert.

&gt; Source/JavaScriptCore/wasm/WasmBinding.cpp:151
&gt; +                jit.move(JIT::TrustedImm32(1), dest);
&gt; +                jit.lshift64(JIT::TrustedImm32(48), dest);

Is this actually faster than just materializing the constant?

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:79
&gt; +        // Arity could mismatch, this will take care of the defined behavior: https://github.com/WebAssembly/design/blob/master/JS.md#exported-function-exotic-objects

Nit: I don&apos;t think this comment is needed. The semantics of toNumber/toInt(argument(idx)) are well known.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263403</commentid>
    <comment_count>7</comment_count>
      <attachid>297924</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-02 23:56:19 -0800</bug_when>
    <thetext>Comment on attachment 297924
patch

r=me (with same comments as before)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263406</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-03 00:11:10 -0800</bug_when>
    <thetext>It looks like i64 behavior should be to throw an exception immediately:
https://github.com/WebAssembly/design/issues/913</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263481</commentid>
    <comment_count>9</comment_count>
      <attachid>297938</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-01-03 11:49:12 -0800</bug_when>
    <thetext>Created attachment 297938
patch

Address comments.

&gt; &gt; Source/JavaScriptCore/wasm/WasmBinding.cpp:83
&gt; &gt;          case Void:
&gt; &gt;          case Func:
&gt; &gt;          case Anyfunc:
&gt; 
&gt; It seems like these 3 should be validation errors, right? So maybe
&gt; RELEASE_ASSERT_NOT_REACHED for them?

It&apos;s still open according to the linked bug, so I left it as-is.


&gt; &gt; Source/JavaScriptCore/wasm/WasmBinding.cpp:84
&gt; &gt; +        case I64: {
&gt; 
&gt; I forget what the spec decided here. I think we&apos;re supposed to throw an
&gt; exception at the very beginning of the call, but maybe it should be a link
&gt; error?

Same: IIUC it&apos;s still open so I left it as-is. We have open bugs, so we&apos;ll definitely get back to it and add appropriate tests when we fix.


&gt; &gt; Source/JavaScriptCore/wasm/WasmBinding.cpp:147
&gt; &gt; +        auto materializeDoubleEncodeOffset = [&amp;hasMaterializedDoubleEncodeOffset] (JIT&amp; jit, GPRReg dest) {
&gt; 
&gt; Nit: This doesn&apos;t really need to take any arguments since it can just
&gt; capture the arguments its always called with.

OK I removed JIT. I like keeping the register though, because it makes the usage of the function below more explicit about where the value ends up.


&gt; &gt; Source/JavaScriptCore/wasm/WasmBinding.cpp:149
&gt; &gt; +                ASSERT(DoubleEncodeOffset == 1ll &lt;&lt; 48);
&gt; 
&gt; If you decide to keep the move/lshift, then make this a static assert.
&gt; 
&gt; &gt; Source/JavaScriptCore/wasm/WasmBinding.cpp:151
&gt; &gt; +                jit.move(JIT::TrustedImm32(1), dest);
&gt; &gt; +                jit.lshift64(JIT::TrustedImm32(48), dest);
&gt; 
&gt; Is this actually faster than just materializing the constant?

Materializing it uses registers which we don&apos;t control as part of the wasm CC, IIUC. Is that not the case? On ARM we could use &quot;CMP (immediate)&quot; instead, that would be better, but from the assembler&apos;s code I didn&apos;t see a way to do this while behaving on x86. This is pretty cheap and encodes pretty tightly. Perf-wise I&apos;m more worried about saturating the number of memops we can issue than doing this arithmetic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263492</commentid>
    <comment_count>10</comment_count>
      <attachid>297938</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-03 12:25:32 -0800</bug_when>
    <thetext>Comment on attachment 297938
patch

Clearing flags on attachment: 297938

Committed r210244: &lt;http://trac.webkit.org/changeset/210244&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263493</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-03 12:25:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297923</attachid>
            <date>2017-01-02 22:29:40 -0800</date>
            <delta_ts>2017-01-03 11:49:12 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-arity-check.patch</filename>
            <type>text/plain</type>
            <size>19742</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBjNmNkNjZmMDcwYjA2ZDJkNmM5MjU4M2ExZmQzMjUyYzVjOGRlNTkzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBNb24sIDIgSmFuIDIwMTcgMjI6MDU6MzMgLTA4MDAKU3ViamVjdDogW1BBVENIXSBhcml0eSBj
aGVjawoKLS0tCiBKU1Rlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAyMCArKysKIEpTVGVzdHMvd2FzbS9hc3NlcnQuanMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICA4ICsKIEpTVGVzdHMvd2FzbS9qcy1hcGkvZXhwb3J0LWFyaXR5LmpzICAg
ICAgICAgICAgICAgIHwgIDY1ICsrKysrKysrCiBKU1Rlc3RzL3dhc20vanMtYXBpL2V4cG9ydC12
b2lkLWlzLXVuZGVmLmpzICAgICAgICB8ICAxOSArKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwgIDI0ICsrKwogU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwICAgICAgICAgfCAxODAgKysrKysrKysrKysrKystLS0t
LS0tCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCB8
ICAgOSArLQogNyBmaWxlcyBjaGFuZ2VkLCAyNjQgaW5zZXJ0aW9ucygrKSwgNjEgZGVsZXRpb25z
KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgSlNUZXN0cy93YXNtL2pzLWFwaS9leHBvcnQtYXJpdHku
anMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vanMtYXBpL2V4cG9ydC12b2lkLWlz
LXVuZGVmLmpzCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwppbmRleCAzZDQ4ZTZkLi5iNmYxMzAyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxv
ZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI1IEBACiAyMDE3LTAxLTAyICBK
RiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAorICAgICAgICBXZWJBc3NlbWJseSBK
UyBBUEk6IGNoZWNrIGFuZCB0ZXN0IGluLWNhbGwgLyBvdXQtY2FsbCB2YWx1ZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDg3NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjk4NDQxMDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdCB0aGF0IG1pc21hdGNoZWQgYXJpdGllcyB3aGVuIEpTIGNh
bGxzIHdhc20gZm9sbG93IHRoZSBkZWZpbmVkCisgICAgICAgIHNlbWFudGljczoKKyAgICAgICAg
aHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2Rlc2lnbi9ibG9iL21hc3Rlci9KUy5tZCNl
eHBvcnRlZC1mdW5jdGlvbi1leG90aWMtb2JqZWN0cworCisgICAgICAgICAgLSBpMzIgaXMgMCwg
ZjMyIC8gZjY0IGFyZSBOYU4uCisgICAgICAgICAgLSB3YXNtIGZ1bmN0aW9ucyB3aGljaCByZXR1
cm4gInZvaWQiIGFyZSAidW5kZWZpbmVkIiBpbiBKUy4KKworICAgICAgICAqIHdhc20vYXNzZXJ0
LmpzOiBhZGQgYW4gYXNzZXJ0IGZvciBOYU4gY29tcGFyaXNvbgorICAgICAgICAqIHdhc20vanMt
YXBpL2V4cG9ydC1hcml0eS5qczogQWRkZWQuCisgICAgICAgIChjb25zdC5wYXJhbUV4cG9ydGVy
KToKKyAgICAgICAgKiB3YXNtL2pzLWFwaS9leHBvcnQtdm9pZC1pcy11bmRlZi5qczogQWRkZWQu
CisKKzIwMTctMDEtMDIgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCiAgICAg
ICAgIFdlYkFzc2VtYmx5OiBoYW5kbGUgYW5kIG9wdGltaXplIHdhc20gZXhwb3J0IOKGkiB3YXNt
IGltcG9ydCBjYWxscwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY1MjgyCiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9hc3NlcnQuanMgYi9KU1Rl
c3RzL3dhc20vYXNzZXJ0LmpzCmluZGV4IDRkMjg3MjAuLjNmZWRlMmUgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvd2FzbS9hc3NlcnQuanMKKysrIGIvSlNUZXN0cy93YXNtL2Fzc2VydC5qcwpAQCAtNzks
NiArNzksMTQgQEAgZXhwb3J0IGNvbnN0IGVxID0gKGxocywgcmhzLCBtc2cpID0+IHsKICAgICAg
ICAgX2ZhaWwoYE5vdCB0aGUgc2FtZTogIiR7bGhzfSIgYW5kICIke3Joc30iYCwgbXNnKTsKIH07
CiAKK2V4cG9ydCBjb25zdCBlcU9yQm90aE5hTiA9IChsaHMsIHJocywgbXNnKSA9PiB7CisgICAg
aWYgKGxocyA9PT0gcmhzKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGlzTmFOKGxocykgJiYg
aXNOYU4ocmhzKSkKKyAgICAgICAgcmV0dXJuOworICAgIF9mYWlsKGBOb3QgdGhlIHNhbWU6ICIk
e2xoc30iIGFuZCAiJHtyaHN9ImAsIG1zZyk7Cit9OworCiBjb25zdCBjYW5vbmljYWxpemVJMzIg
PSAobnVtYmVyKSA9PiB7CiAgICAgaWYgKE1hdGgucm91bmQobnVtYmVyKSA9PT0gbnVtYmVyICYm
IG51bWJlciA+PSAyICoqIDMxKQogICAgICAgICBudW1iZXIgPSBudW1iZXIgLSAyICoqIDMyOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9leHBvcnQtYXJpdHkuanMgYi9KU1Rlc3Rz
L3dhc20vanMtYXBpL2V4cG9ydC1hcml0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5jNzA5MmZkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9l
eHBvcnQtYXJpdHkuanMKQEAgLTAsMCArMSw2NSBAQAoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20g
Jy4uL2Fzc2VydC5qcyc7CitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKKwor
Ly8gR2VuZXJhdGUgd2FzbSBleHBvcnQgZnVuY3Rpb25zIG9mIGFyaXR5IFswLCBtYXgpLCBhbmQg
Y2FsbCBlYWNoIG9mIHRoZXNlCisvLyBleHBvcnQgZnVuY3Rpb25zIGZyb20gSlMgd2l0aCBbMCwg
bWF4KSBwYXJhbWV0ZXJzLCBmb3IgZWFjaCB2YWxpZCBXZWJBc3NlbWJseQorLy8gdHlwZS4gTWFr
ZSBzdXJlIHRoaXMgbnVtYmVyIGlzIGhpZ2ggZW5vdWdoIHRvIGZvcmNlIG5vbi1yZWdpc3RlciBj
YWxscy4KK2NvbnN0IG1heEFyaXRpZXMgPSA2NDsKKworY29uc3QgcGFyYW1FeHBvcnRlciA9IChu
dW1QYXJhbXMsIHBhcmFtVHlwZSwgaW1wb3J0cykgPT4geworICAgIGxldCBidWlsZGVyID0gKG5l
dyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkltcG9ydCgpCisg
ICAgICAgICAgICAuRnVuY3Rpb24oImltcCIsICJjaGVjayIsIHsgcGFyYW1zOiBbcGFyYW1UeXBl
XSB9KQorICAgICAgICAuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAg
LkV4cG9ydCgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZ1bmMiKQorICAgICAgICAuRW5kKCkK
KyAgICAgICAgLkNvZGUoKQorICAgICAgICAgIC5GdW5jdGlvbigiZnVuYyIsIHsgcGFyYW1zOiBB
cnJheShudW1QYXJhbXMpLmZpbGwocGFyYW1UeXBlKSB9KTsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IG51bVBhcmFtczsgKytpKQorICAgICAgICBidWlsZGVyID0gYnVpbGRlci5HZXRMb2NhbChp
KS5DYWxsKDApOyAvLyBDYWxsIHRoZSBpbXBvcnQgZm9yIGVhY2ggcmVjZWl2ZWQgcGFyYW1ldGVy
LgorICAgIGJ1aWxkZXIgPSBidWlsZGVyLlJldHVybigpLkVuZCgpLkVuZCgpOworICAgIGNvbnN0
IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKKyAgICBjb25zdCBtb2R1bGUgPSBu
ZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CisgICAgcmV0dXJuIG5ldyBXZWJBc3NlbWJseS5J
bnN0YW5jZShtb2R1bGUsIHsgaW1wOiBpbXBvcnRzIH0pOworfTsKKworY29uc3QgdHlwZXMgPSBb
CisgICAgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDQyLCBkZWZhdWx0V2hlbkFyaXR5TWlzbWF0Y2g6
IDAgfSwKKyAgICAvLyBpNjQgaXNuJ3Qgc3VwcG9ydGVkLgorICAgIHsgdHlwZTogImYzMiIsIHZh
bHVlOiAzMi4wLCBkZWZhdWx0V2hlbkFyaXR5TWlzbWF0Y2g6IE5hTiB9LAorICAgIHsgdHlwZTog
ImY2NCIsIHZhbHVlOiA2NC4wLCBkZWZhdWx0V2hlbkFyaXR5TWlzbWF0Y2g6IE5hTiB9LAorXTsK
KworZm9yIChsZXQgdHlwZSBvZiB0eXBlcykgeworICAgIGZvciAobGV0IHdhc21Bcml0eSA9IDA7
IHdhc21Bcml0eSA8IG1heEFyaXRpZXM7ICsrd2FzbUFyaXR5KSB7CisgICAgICAgIGxldCBudW1Q
YXJhbXNDYWxsaW5nV2l0aCA9IHVuZGVmaW5lZDsKKyAgICAgICAgbGV0IG51bUNoZWNrZWQgPSAw
OworICAgICAgICBjb25zdCBjaGVjayA9IHZhbHVlID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5p
c051bWJlcih2YWx1ZSk7CisgICAgICAgICAgICBpZiAobnVtUGFyYW1zQ2FsbGluZ1dpdGggPD0g
d2FzbUFyaXR5KSB7CisgICAgICAgICAgICAgICAgaWYgKG51bUNoZWNrZWQgPCBudW1QYXJhbXND
YWxsaW5nV2l0aCkKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxKHZhbHVlLCB0eXBlLnZh
bHVlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5l
cU9yQm90aE5hTih2YWx1ZSwgdHlwZS5kZWZhdWx0V2hlbkFyaXR5TWlzbWF0Y2gpOworICAgICAg
ICAgICAgfSAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKG51bUNoZWNrZWQgPCB3YXNtQXJp
dHkpCisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5lcSh2YWx1ZSwgdHlwZS52YWx1ZSk7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBhc3NlcnQuZXFPckJvdGhO
YU4odmFsdWUsIHR5cGUuZGVmYXVsdFdoZW5Bcml0eU1pc21hdGNoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICsrbnVtQ2hlY2tlZDsKKyAgICAgICAgfTsKKyAgICAgICAgY29uc3QgaW5z
dGFuY2UgPSBwYXJhbUV4cG9ydGVyKHdhc21Bcml0eSwgdHlwZS50eXBlLCB7IGNoZWNrOiBjaGVj
ayB9KTsKKyAgICAgICAgZm9yIChsZXQgY2FsbGVyQXJpdHkgPSAwOyBjYWxsZXJBcml0eSA8IG1h
eEFyaXRpZXM7ICsrY2FsbGVyQXJpdHkpIHsKKyAgICAgICAgICAgIG51bVBhcmFtc0NhbGxpbmdX
aXRoID0gY2FsbGVyQXJpdHk7CisgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBBcnJheShjYWxs
ZXJBcml0eSkuZmlsbCh0eXBlLnZhbHVlKTsKKyAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGlu
c3RhbmNlLmV4cG9ydHMuZnVuYyguLi5wYXJhbXMpOworICAgICAgICAgICAgYXNzZXJ0LmlzVW5k
ZWYocmVzdWx0KTsKKyAgICAgICAgICAgIGFzc2VydC5lcShudW1DaGVja2VkLCB3YXNtQXJpdHkp
OyAvLyBjaGVjaygpIHNob3VsZCBiZSBjYWxsZWQgYXMgbWFueSB0aW1lcyBhcyB0aGUgd2FzbSBm
dW5jdGlvbidzIGFyaXR5LgorICAgICAgICAgICAgbnVtQ2hlY2tlZCA9IDA7IC8vIFJlc2V0IHRo
ZSBjaGVjayBjb3VudGVyIGZvciBlYWNoIGFyaXR5IGl0ZXJhdGlvbi4KKyAgICAgICAgfQorICAg
IH0KK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvZXhwb3J0LXZvaWQtaXMtdW5k
ZWYuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL2V4cG9ydC12b2lkLWlzLXVuZGVmLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5YzkzYWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3dhc20vanMtYXBpL2V4cG9ydC12b2lkLWlzLXVuZGVmLmpzCkBAIC0wLDAgKzEs
MTkgQEAKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworaW1wb3J0IEJ1
aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CisKK2xldCBidWlsZGVyID0gKG5ldyBCdWlsZGVy
KCkpCisgICAgLlR5cGUoKS5FbmQoKQorICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgLkV4cG9y
dCgpCisgICAgICAgIC5GdW5jdGlvbigiZnVuYyIpCisgICAgLkVuZCgpCisgICAgLkNvZGUoKQor
ICAgIC5GdW5jdGlvbigiZnVuYyIsIHsgcGFyYW1zOiBbXSB9KQorICAgICAgICAuUmV0dXJuKCkK
KyAgICAuRW5kKCkKKy5FbmQoKTsKK2NvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5n
ZXQoKTsKK2NvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKK2NvbnN0
IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSk7CisKK2Fzc2VydC5p
c1VuZGVmKGluc3RhbmNlLmV4cG9ydHMuZnVuYygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGY4NWRlNzIuLmYxMGVjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDI5IEBACiAyMDE3LTAxLTAyICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAor
ICAgICAgICBXZWJBc3NlbWJseSBKUyBBUEk6IGNoZWNrIGFuZCB0ZXN0IGluLWNhbGwgLyBvdXQt
Y2FsbCB2YWx1ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDg3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk4NDQxMDc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNtL1dhc21CaW5kaW5n
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSnMpOiBmaXggdGhlIHdhc20gLT4gSlMg
Y2FsbCBjb2VyY2lvbnMgZm9yIGYzMiAvCisgICAgICAgIGY2NCB3aGljaCB0aGUgYXNzb3RpYXRl
ZCB0ZXN0cyBpbmFkdmVydGVudGx5IHRyaXBwZWQgb246IHRoZQorICAgICAgICBwcmV2aW91cyBj
b2RlIHdhc24ndCBjb3JyZWN0bHkgcGVyZm9ybWluZyBKU1ZhbHVlIGJveGluZyBmb3IKKyAgICAg
ICAgImRvdWJsZSIgdmFsdWVzLiBUaGlzIGNoYW5nZSBpcyBzbGlnaHRseSBpbnZvbHZlZCBiZWNh
dXNlIGl0CisgICAgICAgIHJlcXVpcmVzIHR3byBzY3JhdGNoIHJlZ2lzdGVycyB0byBtYXRlcmlh
bGl6ZSB0aGUKKyAgICAgICAgYERvdWJsZUVuY29kZU9mZnNldGAgdmFsdWUuIFRoaXMgY2hhbmdl
IHRoZXJlZm9yZSByZW9yZ2FuaXplcyB0aGUKKyAgICAgICAgY29kZSB0byBmaXJzdCBnZW5lcmF0
ZSB0cmFwcywgdGhlbiBoYW5kbGUgYWxsIGludGVnZXJzIChmcmVlaW5nCisgICAgICAgIGFsbCBH
UFJzKSwgYW5kIHRoZW4gYWxsIHRoZSBmbG9hdGluZy1wb2ludCB2YWx1ZXMuCisgICAgICAgICog
d2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFdlYkFz
c2VtYmx5RnVuY3Rpb24pOiBJbXBsZW1lbnQgdGhlIGRlZmluZWQgc2VtYW50aWNzCisgICAgICAg
IGZvciBtaXNtYXRjaGVkIGFyaXRpZXMgd2hlbiBKUyBjYWxscyB3YXNtOgorICAgICAgICBodHRw
czovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL0pTLm1kI2V4cG9y
dGVkLWZ1bmN0aW9uLWV4b3RpYy1vYmplY3RzCisgICAgICAgICAgLSBpMzIgaXMgMCwgZjMyIC8g
ZjY0IGFyZSBOYU4uCisgICAgICAgICAgLSB3YXNtIGZ1bmN0aW9ucyB3aGljaCByZXR1cm4gInZv
aWQiIGFyZSAidW5kZWZpbmVkIiBpbiBKUy4KKworMjAxNy0wMS0wMiAgSkYgQmFzdGllbiAgPGpm
YmFzdGllbkBhcHBsZS5jb20+CisKICAgICAgICAgV2ViQXNzZW1ibHk6IGhhbmRsZSBhbmQgb3B0
aW1pemUgd2FzbSBleHBvcnQg4oaSIHdhc20gaW1wb3J0IGNhbGxzCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUyODIKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCmluZGV4IDk5NzAyZWMuLmRkNTBjM2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKQEAgLTc0LDcyICs3NCwx
NDQgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9KcyhWTSogdm0sIEJhZzxD
YWxsTGlua0luZm8+JiBjYWxsTGlua0luZm9zLAogICAgIGNvbnN0IHVuc2lnbmVkIHN0YWNrT2Zm
c2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgbnVt
YmVyT2ZCeXRlc0ZvckNhbGwpOwogICAgIGppdC5zdWJQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMihzdGFja09mZnNldCksIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CiAgICAgSklUOjpBZGRyZXNzIGNhbGxlZUZyYW1lID0gQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgLXN0YXRpY19jYXN0PHB0cmRp
ZmZfdD4oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7Ci0KLSAgICAvLyBGSVhNRSBtYWtlIHRo
aXMgYSBsb29wIHdoaWNoIHN3aXRjaGVzIG9uIFNpZ25hdHVyZSBpZiB0aGVyZSBhcmUgbWFueSBh
cmd1bWVudHMgb24gdGhlIHN0YWNrLiBJdCdsbCBvdGhlcndpc2UgYmUgaHVnZSBmb3IgaHVnZSBz
aWduYXR1cmVzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NTQ3
Ci0gICAgdW5zaWduZWQgbWFyc2hhbGxlZEdQUnMgPSAwOwotICAgIHVuc2lnbmVkIG1hcnNoYWxs
ZWRGUFJzID0gMDsKLSAgICB1bnNpZ25lZCBjYWxsZWVGcmFtZU9mZnNldCA9IENhbGxGcmFtZVNs
b3Q6OmZpcnN0QXJndW1lbnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOwot
ICAgIHVuc2lnbmVkIGZyT2Zmc2V0ID0gQ2FsbEZyYW1lU2xvdDo6Zmlyc3RBcmd1bWVudCAqIHN0
YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAgCiAgICAgZm9yICh1bnNpZ25l
ZCBhcmdOdW0gPSAwOyBhcmdOdW0gPCBhcmdDb3VudDsgKythcmdOdW0pIHsKICAgICAgICAgVHlw
ZSBhcmdUeXBlID0gc2lnbmF0dXJlLT5hcmd1bWVudChhcmdOdW0pOwogICAgICAgICBzd2l0Y2gg
KGFyZ1R5cGUpIHsKICAgICAgICAgY2FzZSBWb2lkOgogICAgICAgICBjYXNlIEZ1bmM6CiAgICAg
ICAgIGNhc2UgQW55ZnVuYzoKLSAgICAgICAgY2FzZSBJNjQ6Ci0gICAgICAgICAgICAvLyBGSVhN
RTogRmlndXJlIG91dCB0aGUgY29ycmVjdCBiZWhhdmlvciBoZXJlLiBJIHN1c3BlY3Qgd2Ugd2Fu
dCBzdWNoIGEgc3R1YiB0byB0aHJvdyBhbiBleGNlcHRpb24gaW1tZWRpYXRlbHkKKyAgICAgICAg
Y2FzZSBJNjQ6IHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBGaWd1cmUgb3V0IHRoZSBjb3JyZWN0
IGJlaGF2aW9yIGhlcmUuIEkgc3VzcGVjdCB3ZSB3YW50IHN1Y2ggYSBzdHViIHRvIHRocm93IGFu
IGV4Y2VwdGlvbiBpbW1lZGlhdGVseS4KICAgICAgICAgICAgIC8vIGlmIGNhbGxlZC4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTk5MQogICAgICAgICAgICAgaml0
LmJyZWFrcG9pbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEkzMjogewot
ICAgICAgICAgICAgR1BSUmVnIGdwclJlZzsKLSAgICAgICAgICAgIGlmIChtYXJzaGFsbGVkR1BS
cyA8IHdhc21DQy5tX2dwckFyZ3Muc2l6ZSgpKQotICAgICAgICAgICAgICAgIGdwclJlZyA9IHdh
c21DQy5tX2dwckFyZ3NbbWFyc2hhbGxlZEdQUnNdLmdwcigpOwotICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBzcGlsbGVkIGFsbCBhcmd1bWVudHMs
IHRoZXNlIHJlZ2lzdGVycyBhcmUgYXZhaWxhYmxlIGFzIHNjcmF0Y2guCi0gICAgICAgICAgICAg
ICAgZ3ByUmVnID0gR1BSSW5mbzo6YXJndW1lbnRHUFIwOwotICAgICAgICAgICAgICAgIGppdC5s
b2FkNjQoSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBmck9mZnNldCks
IGdwclJlZyk7Ci0gICAgICAgICAgICAgICAgZnJPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICsrbWFyc2hhbGxlZEdQUnM7Ci0gICAgICAgICAg
ICBqaXQuYm94SW50MzIoZ3ByUmVnLCBKU1ZhbHVlUmVncyhncHJSZWcpLCBEb05vdEhhdmVUYWdS
ZWdpc3RlcnMpOwotICAgICAgICAgICAgaml0LnN0b3JlNjQoZ3ByUmVnLCBjYWxsZWVGcmFtZS53
aXRoT2Zmc2V0KGNhbGxlZUZyYW1lT2Zmc2V0KSk7Ci0gICAgICAgICAgICBjYWxsZWVGcmFtZU9m
ZnNldCArPSBzaXplb2YoUmVnaXN0ZXIpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAg
ICAgICAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiV2ViQXNzZW1ibHkg
aW1wb3J0WyVpXSBzdHViIGZvciBzaWduYXR1cmUgJWkiLCBpbXBvcnRJbmRleCwgc2lnbmF0dXJl
SW5kZXgpKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEYzMjogewotICAgICAgICAgICAgRlBS
UmVnIGZwclJlZzsKLSAgICAgICAgICAgIGlmIChtYXJzaGFsbGVkRlBScyA8IHdhc21DQy5tX2Zw
ckFyZ3Muc2l6ZSgpKQotICAgICAgICAgICAgICAgIGZwclJlZyA9IHdhc21DQy5tX2ZwckFyZ3Nb
bWFyc2hhbGxlZEZQUnNdLmZwcigpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgLy8gV2UndmUgYWxyZWFkeSBzcGlsbGVkIGFsbCBhcmd1bWVudHMsIHRoZXNlIHJlZ2lzdGVy
cyBhcmUgYXZhaWxhYmxlIGFzIHNjcmF0Y2guCi0gICAgICAgICAgICAgICAgZnByUmVnID0gRlBS
SW5mbzo6YXJndW1lbnRGUFIwOwotICAgICAgICAgICAgICAgIGppdC5sb2FkRmxvYXQoSklUOjpB
ZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBmck9mZnNldCksIGZwclJlZyk7Ci0g
ICAgICAgICAgICAgICAgZnJPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGppdC5jb252ZXJ0RmxvYXRUb0RvdWJsZShmcHJSZWcsIGZwclJlZyk7
Ci0gICAgICAgICAgICBqaXQucHVyaWZ5TmFOKGZwclJlZyk7Ci0gICAgICAgICAgICBqaXQuc3Rv
cmVEb3VibGUoZnByUmVnLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KGNhbGxlZUZyYW1lT2Zmc2V0
KSk7Ci0gICAgICAgICAgICBjYWxsZWVGcmFtZU9mZnNldCArPSBzaXplb2YoUmVnaXN0ZXIpOwot
ICAgICAgICAgICAgKyttYXJzaGFsbGVkRlBSczsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEkzMjoKKyAgICAgICAgY2FzZSBGMzI6CisgICAgICAgIGNhc2UgRjY0OgorICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBGNjQ6IHsKLSAgICAgICAg
ICAgIEZQUlJlZyBmcHJSZWc7Ci0gICAgICAgICAgICBpZiAobWFyc2hhbGxlZEZQUnMgPCB3YXNt
Q0MubV9mcHJBcmdzLnNpemUoKSkKLSAgICAgICAgICAgICAgICBmcHJSZWcgPSB3YXNtQ0MubV9m
cHJBcmdzW21hcnNoYWxsZWRGUFJzXS5mcHIoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgc3BpbGxlZCBhbGwgYXJndW1lbnRzLCB0aGVzZSBy
ZWdpc3RlcnMgYXJlIGF2YWlsYWJsZSBhcyBzY3JhdGNoLgotICAgICAgICAgICAgICAgIGZwclJl
ZyA9IEZQUkluZm86OmFyZ3VtZW50RlBSMDsKLSAgICAgICAgICAgICAgICBqaXQubG9hZERvdWJs
ZShKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGZyT2Zmc2V0KSwgZnBy
UmVnKTsKLSAgICAgICAgICAgICAgICBmck9mZnNldCArPSBzaXplb2YoUmVnaXN0ZXIpOworICAg
IH0KKworICAgIC8vIEZJWE1FIG1ha2UgdGhlc2UgbG9vcHMgd2hpY2ggc3dpdGNoIG9uIFNpZ25h
dHVyZSBpZiB0aGVyZSBhcmUgbWFueSBhcmd1bWVudHMgb24gdGhlIHN0YWNrLiBJdCdsbCBvdGhl
cndpc2UgYmUgaHVnZSBmb3IgaHVnZSBzaWduYXR1cmVzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NTQ3CisgICAgCisgICAgLy8gRmlyc3QgZ28gdGhyb3VnaCB0
aGUgaW50ZWdlciBwYXJhbWV0ZXJzLCBmcmVlaW5nIHVwIHRoZWlyIHJlZ2lzdGVyIGZvciB1c2Ug
YWZ0ZXJ3YXJkcy4KKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG1hcnNoYWxsZWRHUFJzID0gMDsK
KyAgICAgICAgdW5zaWduZWQgbWFyc2hhbGxlZEZQUnMgPSAwOworICAgICAgICB1bnNpZ25lZCBj
YWxsZWVGcmFtZU9mZnNldCA9IENhbGxGcmFtZVNsb3Q6OmZpcnN0QXJndW1lbnQgKiBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOworICAgICAgICB1bnNpZ25lZCBmck9mZnNldCA9
IENhbGxGcmFtZVNsb3Q6OmZpcnN0QXJndW1lbnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ051bSA9IDA7IGFyZ051bSA8IGFy
Z0NvdW50OyArK2FyZ051bSkgeworICAgICAgICAgICAgVHlwZSBhcmdUeXBlID0gc2lnbmF0dXJl
LT5hcmd1bWVudChhcmdOdW0pOworICAgICAgICAgICAgc3dpdGNoIChhcmdUeXBlKSB7CisgICAg
ICAgICAgICBjYXNlIFZvaWQ6CisgICAgICAgICAgICBjYXNlIEZ1bmM6CisgICAgICAgICAgICBj
YXNlIEFueWZ1bmM6CisgICAgICAgICAgICBjYXNlIEk2NDoKKyAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBIYW5kbGVkIGFib3ZlLgorICAgICAgICAgICAg
Y2FzZSBJMzI6IHsKKyAgICAgICAgICAgICAgICBHUFJSZWcgZ3ByUmVnOworICAgICAgICAgICAg
ICAgIGlmIChtYXJzaGFsbGVkR1BScyA8IHdhc21DQy5tX2dwckFyZ3Muc2l6ZSgpKQorICAgICAg
ICAgICAgICAgICAgICBncHJSZWcgPSB3YXNtQ0MubV9ncHJBcmdzW21hcnNoYWxsZWRHUFJzXS5n
cHIoKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2Un
dmUgYWxyZWFkeSBzcGlsbGVkIGFsbCBhcmd1bWVudHMsIHRoZXNlIHJlZ2lzdGVycyBhcmUgYXZh
aWxhYmxlIGFzIHNjcmF0Y2guCisgICAgICAgICAgICAgICAgICAgIGdwclJlZyA9IEdQUkluZm86
OmFyZ3VtZW50R1BSMDsKKyAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChKSVQ6OkFkZHJl
c3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGZyT2Zmc2V0KSwgZ3ByUmVnKTsKKyAgICAg
ICAgICAgICAgICAgICAgZnJPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgKyttYXJzaGFsbGVkR1BSczsKKyAgICAgICAgICAgICAg
ICBqaXQuYm94SW50MzIoZ3ByUmVnLCBKU1ZhbHVlUmVncyhncHJSZWcpLCBEb05vdEhhdmVUYWdS
ZWdpc3RlcnMpOworICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KGdwclJlZywgY2FsbGVlRnJh
bWUud2l0aE9mZnNldChjYWxsZWVGcmFtZU9mZnNldCkpOworICAgICAgICAgICAgICAgIGNhbGxl
ZUZyYW1lT2Zmc2V0ICs9IHNpemVvZihSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEYzMjoKKyAgICAgICAgICAgIGNhc2Ug
RjY0OgorICAgICAgICAgICAgICAgIC8vIFNraXBwZWQ6IGhhbmRsZWQgYmVsb3cuCisgICAgICAg
ICAgICAgICAgaWYgKG1hcnNoYWxsZWRGUFJzID49IHdhc21DQy5tX2ZwckFyZ3Muc2l6ZSgpKQor
ICAgICAgICAgICAgICAgICAgICBmck9mZnNldCArPSBzaXplb2YoUmVnaXN0ZXIpOworICAgICAg
ICAgICAgICAgICsrbWFyc2hhbGxlZEZQUnM7CisgICAgICAgICAgICAgICAgY2FsbGVlRnJhbWVP
ZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGppdC5wdXJpZnlOYU4oZnByUmVnKTsKLSAgICAgICAgICAg
IGppdC5zdG9yZURvdWJsZShmcHJSZWcsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoY2FsbGVlRnJh
bWVPZmZzZXQpKTsKLSAgICAgICAgICAgIGNhbGxlZUZyYW1lT2Zmc2V0ICs9IHNpemVvZihSZWdp
c3Rlcik7Ci0gICAgICAgICAgICArK21hcnNoYWxsZWRGUFJzOwotICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgeworICAgICAgICAvLyBJbnRlZ2VyIHJlZ2lz
dGVycyBoYXZlIGFscmVhZHkgYmVlbiBzcGlsbGVkLCB0aGVzZSBhcmUgbm93IGF2YWlsYWJsZS4K
KyAgICAgICAgR1BSUmVnIGRvdWJsZUVuY29kZU9mZnNldEdQUlJlZyA9IEdQUkluZm86OmFyZ3Vt
ZW50R1BSMDsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBHUFJJbmZvOjphcmd1bWVudEdQUjE7
CisgICAgICAgIGJvb2wgaGFzTWF0ZXJpYWxpemVkRG91YmxlRW5jb2RlT2Zmc2V0ID0gZmFsc2U7
CisgICAgICAgIGF1dG8gbWF0ZXJpYWxpemVEb3VibGVFbmNvZGVPZmZzZXQgPSBbJmhhc01hdGVy
aWFsaXplZERvdWJsZUVuY29kZU9mZnNldF0gKEpJVCYgaml0LCBHUFJSZWcgZGVzdCkgeworICAg
ICAgICAgICAgaWYgKCFoYXNNYXRlcmlhbGl6ZWREb3VibGVFbmNvZGVPZmZzZXQpIHsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoRG91YmxlRW5jb2RlT2Zmc2V0ID09IDFsbCA8PCA0OCk7CisgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoSklUOjpUcnVzdGVkSW1tMzIoMSksIGRlc3QpOworICAgICAg
ICAgICAgICAgIGppdC5sc2hpZnQ2NChKSVQ6OlRydXN0ZWRJbW0zMig0OCksIGRlc3QpOworICAg
ICAgICAgICAgICAgIGhhc01hdGVyaWFsaXplZERvdWJsZUVuY29kZU9mZnNldCA9IHRydWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgdW5zaWduZWQgbWFyc2hhbGxlZEdQ
UnMgPSAwOworICAgICAgICB1bnNpZ25lZCBtYXJzaGFsbGVkRlBScyA9IDA7CisgICAgICAgIHVu
c2lnbmVkIGNhbGxlZUZyYW1lT2Zmc2V0ID0gQ2FsbEZyYW1lU2xvdDo6Zmlyc3RBcmd1bWVudCAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAgICAgIHVuc2lnbmVkIGZy
T2Zmc2V0ID0gQ2FsbEZyYW1lU2xvdDo6Zmlyc3RBcmd1bWVudCAqIHN0YXRpY19jYXN0PGludD4o
c2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgYXJnTnVtID0gMDsgYXJn
TnVtIDwgYXJnQ291bnQ7ICsrYXJnTnVtKSB7CisgICAgICAgICAgICBUeXBlIGFyZ1R5cGUgPSBz
aWduYXR1cmUtPmFyZ3VtZW50KGFyZ051bSk7CisgICAgICAgICAgICBzd2l0Y2ggKGFyZ1R5cGUp
IHsKKyAgICAgICAgICAgIGNhc2UgVm9pZDoKKyAgICAgICAgICAgIGNhc2UgRnVuYzoKKyAgICAg
ICAgICAgIGNhc2UgQW55ZnVuYzoKKyAgICAgICAgICAgIGNhc2UgSTY0OgorICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIEhhbmRsZWQgYWJvdmUuCisgICAg
ICAgICAgICBjYXNlIEkzMjoKKyAgICAgICAgICAgICAgICAvLyBTa2lwcGVkOiBoYW5kbGVkIGFi
b3ZlLgorICAgICAgICAgICAgICAgIGlmIChtYXJzaGFsbGVkR1BScyA8IHdhc21DQy5tX2dwckFy
Z3Muc2l6ZSgpKQorICAgICAgICAgICAgICAgICAgICBmck9mZnNldCArPSBzaXplb2YoUmVnaXN0
ZXIpOworICAgICAgICAgICAgICAgICsrbWFyc2hhbGxlZEdQUnM7CisgICAgICAgICAgICAgICAg
Y2FsbGVlRnJhbWVPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgRjMyOiB7CisgICAgICAgICAgICAgICAgRlBSUmVnIGZw
clJlZzsKKyAgICAgICAgICAgICAgICBpZiAobWFyc2hhbGxlZEZQUnMgPCB3YXNtQ0MubV9mcHJB
cmdzLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgZnByUmVnID0gd2FzbUNDLm1fZnByQXJn
c1ttYXJzaGFsbGVkRlBSc10uZnByKCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgc3BpbGxlZCBhbGwgYXJndW1lbnRzLCB0aGVz
ZSByZWdpc3RlcnMgYXJlIGF2YWlsYWJsZSBhcyBzY3JhdGNoLgorICAgICAgICAgICAgICAgICAg
ICBmcHJSZWcgPSBGUFJJbmZvOjphcmd1bWVudEZQUjA7CisgICAgICAgICAgICAgICAgICAgIGpp
dC5sb2FkRmxvYXQoSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBmck9m
ZnNldCksIGZwclJlZyk7CisgICAgICAgICAgICAgICAgICAgIGZyT2Zmc2V0ICs9IHNpemVvZihS
ZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGppdC5jb252ZXJ0
RmxvYXRUb0RvdWJsZShmcHJSZWcsIGZwclJlZyk7CisgICAgICAgICAgICAgICAgaml0LnB1cmlm
eU5hTihmcHJSZWcpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlRG91YmxlVG82NChmcHJSZWcs
IHNjcmF0Y2gpOworICAgICAgICAgICAgICAgIG1hdGVyaWFsaXplRG91YmxlRW5jb2RlT2Zmc2V0
KGppdCwgZG91YmxlRW5jb2RlT2Zmc2V0R1BSUmVnKTsKKyAgICAgICAgICAgICAgICBqaXQuYWRk
NjQoZG91YmxlRW5jb2RlT2Zmc2V0R1BSUmVnLCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICBq
aXQuc3RvcmU2NChzY3JhdGNoLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KGNhbGxlZUZyYW1lT2Zm
c2V0KSk7CisgICAgICAgICAgICAgICAgY2FsbGVlRnJhbWVPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lz
dGVyKTsKKyAgICAgICAgICAgICAgICArK21hcnNoYWxsZWRGUFJzOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBGNjQ6IHsKKyAgICAgICAg
ICAgICAgICBGUFJSZWcgZnByUmVnOworICAgICAgICAgICAgICAgIGlmIChtYXJzaGFsbGVkRlBS
cyA8IHdhc21DQy5tX2ZwckFyZ3Muc2l6ZSgpKQorICAgICAgICAgICAgICAgICAgICBmcHJSZWcg
PSB3YXNtQ0MubV9mcHJBcmdzW21hcnNoYWxsZWRGUFJzXS5mcHIoKTsKKyAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBzcGlsbGVkIGFs
bCBhcmd1bWVudHMsIHRoZXNlIHJlZ2lzdGVycyBhcmUgYXZhaWxhYmxlIGFzIHNjcmF0Y2guCisg
ICAgICAgICAgICAgICAgICAgIGZwclJlZyA9IEZQUkluZm86OmFyZ3VtZW50RlBSMDsKKyAgICAg
ICAgICAgICAgICAgICAgaml0LmxvYWREb3VibGUoSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBmck9mZnNldCksIGZwclJlZyk7CisgICAgICAgICAgICAgICAgICAgIGZy
T2Zmc2V0ICs9IHNpemVvZihSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGppdC5wdXJpZnlOYU4oZnByUmVnKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZURv
dWJsZVRvNjQoZnByUmVnLCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICBtYXRlcmlhbGl6ZURv
dWJsZUVuY29kZU9mZnNldChqaXQsIGRvdWJsZUVuY29kZU9mZnNldEdQUlJlZyk7CisgICAgICAg
ICAgICAgICAgaml0LmFkZDY0KGRvdWJsZUVuY29kZU9mZnNldEdQUlJlZywgc2NyYXRjaCk7Cisg
ICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoc2NyYXRjaCwgY2FsbGVlRnJhbWUud2l0aE9mZnNl
dChjYWxsZWVGcmFtZU9mZnNldCkpOworICAgICAgICAgICAgICAgIGNhbGxlZUZyYW1lT2Zmc2V0
ICs9IHNpemVvZihSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgKyttYXJzaGFsbGVkRlBSczsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCBiODEwMTg5Li42NzQ0YzhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmNwcApAQCAtNTYsMTAgKzU2LDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogICAgIFdhc206OlNp
Z25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gd2FzbUZ1bmN0aW9uLT5zaWduYXR1cmVJbmRl
eCgpOwogICAgIGNvbnN0IFdhc206OlNpZ25hdHVyZSogc2lnbmF0dXJlID0gV2FzbTo6U2lnbmF0
dXJlSW5mb3JtYXRpb246OmdldCgmdm0sIHNpZ25hdHVyZUluZGV4KTsKIAotICAgIC8vIEZJWE1F
IGlzIHRoaXMgdGhlIHJpZ2h0IGJlaGF2aW9yPyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY0ODc2Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSAhPSBzaWdu
YXR1cmUtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
ZXhlYywgZGVmYXVsdFNvdXJjZUFwcGVuZGVyKSkpOwotCiAgICAgewogICAgICAgICAvLyBDaGVj
ayBpZiB3ZSBoYXZlIGEgZGlzYWxsb3dlZCBJNjQgdXNlLgogCkBAIC03OCwxMCArNzQsMTAgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gRklYTUUgaXMg
dGhpcyBib3hpbmcgY29ycmVjdD8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDg3NgogICAgIFZlY3RvcjxKU1ZhbHVlPiBib3hlZEFyZ3M7CiAgICAgZm9yICh1bnNp
Z25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgc2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCk7
ICsrYXJnSW5kZXgpIHsKLSAgICAgICAgSlNWYWx1ZSBhcmcgPSBleGVjLT51bmNoZWNrZWRBcmd1
bWVudChhcmdJbmRleCk7CisgICAgICAgIC8vIEFyaXR5IGNvdWxkIG1pc21hdGNoLCB0aGlzIHdp
bGwgdGFrZSBjYXJlIG9mIHRoZSBkZWZpbmVkIGJlaGF2aW9yOiBodHRwczovL2dpdGh1Yi5jb20v
V2ViQXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL0pTLm1kI2V4cG9ydGVkLWZ1bmN0aW9uLWV4
b3RpYy1vYmplY3RzCisgICAgICAgIEpTVmFsdWUgYXJnID0gZXhlYy0+YXJndW1lbnQoYXJnSW5k
ZXgpOwogICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS0+YXJndW1lbnQoYXJnSW5kZXgpKSB7CiAg
ICAgICAgIGNhc2UgV2FzbTo6STMyOgogICAgICAgICAgICAgYXJnID0gSlNWYWx1ZTo6ZGVjb2Rl
KGFyZy50b0ludDMyKGV4ZWMpKTsKQEAgLTEyNyw3ICsxMjMsNiBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlID0gcHJldkpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgLy8g
RklYTUUgaXMgdGhpcyBjb3JyZWN0PyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0ODc2CiAgICAgc3dpdGNoIChzaWduYXR1cmUtPnJldHVyblR5cGUoKSkgewogICAg
IGNhc2UgV2FzbTo6Vm9pZDoKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLS0gCjIuOS4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297924</attachid>
            <date>2017-01-02 23:50:32 -0800</date>
            <delta_ts>2017-01-03 11:49:12 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-arity-check.patch</filename>
            <type>text/plain</type>
            <size>23818</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBkMDc4YjgyYzk1ZTA1MzEyOWVlYmMwYzBkMWUzMGEyNzNkNmJmYzg0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBNb24sIDIgSmFuIDIwMTcgMjI6MDU6MzMgLTA4MDAKU3ViamVjdDogW1BBVENIXSBhcml0eSBj
aGVjawoKLS0tCiBKU1Rlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAyMyArKysKIEpTVGVzdHMvd2FzbS55YW1sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAyICsKIEpTVGVzdHMvd2FzbS9hc3NlcnQuanMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICA4ICsKIEpTVGVzdHMvd2FzbS9mdXp6L2V4cG9ydC1mdW5jdGlvbi5q
cyAgICAgICAgICAgICAgIHwgIDgwICsrKysrKysrKwogSlNUZXN0cy93YXNtL2pzLWFwaS9leHBv
cnQtYXJpdHkuanMgICAgICAgICAgICAgICAgfCAgNjUgKysrKysrKysKIEpTVGVzdHMvd2FzbS9q
cy1hcGkvZXhwb3J0LXZvaWQtaXMtdW5kZWYuanMgICAgICAgIHwgIDE5ICsrKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgfCAgMjQgKysrCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAgICAgICAgICB8IDE4MCArKysr
KysrKysrKysrKy0tLS0tLS0KIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
RnVuY3Rpb24uY3BwIHwgICA5ICstCiA5IGZpbGVzIGNoYW5nZWQsIDM0OSBpbnNlcnRpb25zKCsp
LCA2MSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vZnV6ei9l
eHBvcnQtZnVuY3Rpb24uanMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vanMtYXBp
L2V4cG9ydC1hcml0eS5qcwogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvd2FzbS9qcy1hcGkv
ZXhwb3J0LXZvaWQtaXMtdW5kZWYuanMKCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNkNDhlNmQuLjFlMGZkMmUgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjggQEAK
IDIwMTctMDEtMDIgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCisgICAgICAg
IFdlYkFzc2VtYmx5IEpTIEFQSTogY2hlY2sgYW5kIHRlc3QgaW4tY2FsbCAvIG91dC1jYWxsIHZh
bHVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
ODc2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTg0NDEwNz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdhc20ueWFtbDoKKyAgICAgICAgKiB3
YXNtL2Fzc2VydC5qczogYWRkIGFuIGFzc2VydCBmb3IgTmFOIGNvbXBhcmlzb24KKyAgICAgICAg
KiB3YXNtL2Z1enovZXhwb3J0LWZ1bmN0aW9uLmpzOiBBZGRlZC4gR2VuZXJhdGUgcmFuZG9tIHdh
c20gZXhwb3J0CisgICAgICAgIHNpZ25hdHVyZXMsIGFuZCBjYWxsIHRoZW0gd2l0aCByYW5kb20g
cGFyYW1ldGVycy4KKyAgICAgICAgKGNvbnN0LnBhcmFtRXhwb3J0ZXIpOgorICAgICAgICAoY29u
c3Quc2V0QnVmZmVyKToKKyAgICAgICAgKGNvbnN0LnR5cGVzLmdlbmVyYXRlKToKKyAgICAgICAg
KGdlbmVyYXRlKToKKyAgICAgICAgKiB3YXNtL2pzLWFwaS9leHBvcnQtYXJpdHkuanM6IEFkZGVk
LgorICAgICAgICAoY29uc3QucGFyYW1FeHBvcnRlcik6IFRlc3QgdGhhdCBtaXNtYXRjaGVkIGFy
aXRpZXMgd2hlbiBKUyBjYWxscworICAgICAgICB3YXNtIGZvbGxvdyB0aGUgZGVmaW5lZCBzZW1h
bnRpY3M6IGkzMiBpcyAwLCBmMzIgLyBmNjQgYXJlIE5hTi4KKyAgICAgICAgaHR0cHM6Ly9naXRo
dWIuY29tL1dlYkFzc2VtYmx5L2Rlc2lnbi9ibG9iL21hc3Rlci9KUy5tZCNleHBvcnRlZC1mdW5j
dGlvbi1leG90aWMtb2JqZWN0cworICAgICAgICAqIHdhc20vanMtYXBpL2V4cG9ydC12b2lkLWlz
LXVuZGVmLmpzOiBBZGRlZC4gVGVzdCB0aGF0ICJ2b2lkIgorICAgICAgICB3YXNtIGZ1bmN0aW9u
cyByZXR1cm4gInVuZGVmaW5lZCIgaW4gSlMuCisKKzIwMTctMDEtMDIgIEpGIEJhc3RpZW4gIDxq
ZmJhc3RpZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFdlYkFzc2VtYmx5OiBoYW5kbGUgYW5kIG9w
dGltaXplIHdhc20gZXhwb3J0IOKGkiB3YXNtIGltcG9ydCBjYWxscwogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MjgyCiAKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvd2FzbS55YW1sIGIvSlNUZXN0cy93YXNtLnlhbWwKaW5kZXggNzdmZDQ0My4uNTczN2Jh
MSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtLnlhbWwKKysrIGIvSlNUZXN0cy93YXNtLnlhbWwK
QEAgLTI3LDYgKzI3LDggQEAKICAgY21kOiBydW5XZWJBc3NlbWJseQogLSBwYXRoOiB3YXNtL2Z1
bmN0aW9uLXRlc3RzCiAgIGNtZDogcnVuV2ViQXNzZW1ibHkKKy0gcGF0aDogd2FzbS9mdXp6Cisg
IGNtZDogcnVuV2ViQXNzZW1ibHkKIAogLSBwYXRoOiB3YXNtL3NwZWMtdGVzdHMvYWRkcmVzcy53
YXN0LmpzCiAgIGNtZDogcnVuV2ViQXNzZW1ibHlTcGVjVGVzdCA6bm9ybWFsCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3dhc20vYXNzZXJ0LmpzIGIvSlNUZXN0cy93YXNtL2Fzc2VydC5qcwppbmRleCA0
ZDI4NzIwLi4zZmVkZTJlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vYXNzZXJ0LmpzCisrKyBi
L0pTVGVzdHMvd2FzbS9hc3NlcnQuanMKQEAgLTc5LDYgKzc5LDE0IEBAIGV4cG9ydCBjb25zdCBl
cSA9IChsaHMsIHJocywgbXNnKSA9PiB7CiAgICAgICAgIF9mYWlsKGBOb3QgdGhlIHNhbWU6ICIk
e2xoc30iIGFuZCAiJHtyaHN9ImAsIG1zZyk7CiB9OwogCitleHBvcnQgY29uc3QgZXFPckJvdGhO
YU4gPSAobGhzLCByaHMsIG1zZykgPT4geworICAgIGlmIChsaHMgPT09IHJocykKKyAgICAgICAg
cmV0dXJuOworICAgIGlmIChpc05hTihsaHMpICYmIGlzTmFOKHJocykpCisgICAgICAgIHJldHVy
bjsKKyAgICBfZmFpbChgTm90IHRoZSBzYW1lOiAiJHtsaHN9IiBhbmQgIiR7cmhzfSJgLCBtc2cp
OworfTsKKwogY29uc3QgY2Fub25pY2FsaXplSTMyID0gKG51bWJlcikgPT4gewogICAgIGlmIChN
YXRoLnJvdW5kKG51bWJlcikgPT09IG51bWJlciAmJiBudW1iZXIgPj0gMiAqKiAzMSkKICAgICAg
ICAgbnVtYmVyID0gbnVtYmVyIC0gMiAqKiAzMjsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9m
dXp6L2V4cG9ydC1mdW5jdGlvbi5qcyBiL0pTVGVzdHMvd2FzbS9mdXp6L2V4cG9ydC1mdW5jdGlv
bi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzlhYzU5Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2Z1enovZXhwb3J0LWZ1bmN0aW9uLmpzCkBAIC0wLDAg
KzEsODAgQEAKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworaW1wb3J0
IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CisKK2NvbnN0IG51bVJhbmRvbUl0ZXJhdGlv
bnMgPSAxMjg7CisKKy8vIEdlbmVyYXRlIHdhc20gZXhwb3J0IGZ1bmN0aW9ucyBvZiBhcml0eSBb
MCwgbWF4KSwgdXNpbmcgZWFjaCB2YWxpZAorLy8gV2ViQXNzZW1ibHkgdHlwZSBhcyBwYXJhbWV0
ZXJzLiBNYWtlIHN1cmUgdGhpcyBudW1iZXIgaXMgaGlnaCBlbm91Z2ggdG8gZm9yY2UKKy8vIG5v
bi1yZWdpc3RlciBjYWxscy4KK2NvbnN0IG1heEFyaXRpZXMgPSA2NDsKKworLy8gQ2FsbHMgYSAi
Y2hlY2siIGZ1bmN0aW9uIGZvciBlYWNoIHBhcmFtZXRlciByZWNlaXZlZC4KK2NvbnN0IHBhcmFt
RXhwb3J0ZXIgPSAocGFyYW1zLCByZXR1cm5lZFBhcmFtLCBpbXBvcnRzKSA9PiB7CisgICAgY29u
c3QgcmV0ID0gcGFyYW1zLmxlbmd0aCA/IHBhcmFtc1tyZXR1cm5lZFBhcmFtXSA6ICJ2b2lkIjsK
KyAgICBsZXQgYnVpbGRlciA9IChuZXcgQnVpbGRlcigpKQorICAgICAgICAuVHlwZSgpLkVuZCgp
CisgICAgICAgIC5JbXBvcnQoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJpbXAiLCAiY2hlY2tp
MzIiLCB7IHBhcmFtczogWyJpMzIiXSB9KQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJpbXAiLCAi
Y2hlY2tmMzIiLCB7IHBhcmFtczogWyJmMzIiXSB9KQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJp
bXAiLCAiY2hlY2tmNjQiLCB7IHBhcmFtczogWyJmNjQiXSB9KQorICAgICAgICAuRW5kKCkKKyAg
ICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLkV4cG9ydCgpCisgICAgICAgICAgICAu
RnVuY3Rpb24oImZ1bmMiKQorICAgICAgICAuRW5kKCkKKyAgICAgICAgLkNvZGUoKQorICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJmdW5jIiwgeyBwYXJhbXM6IHBhcmFtcywgcmV0OiByZXQgfSk7Cisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgYnVp
bGRlciA9IGJ1aWxkZXIuR2V0TG9jYWwoaSk7CisgICAgICAgIHN3aXRjaCAocGFyYW1zW2ldKSB7
CisgICAgICAgIGNhc2UgImkzMiI6IGJ1aWxkZXIgPSBidWlsZGVyLkNhbGwoMCk7IGJyZWFrOwor
ICAgICAgICBjYXNlICJmMzIiOiBidWlsZGVyID0gYnVpbGRlci5DYWxsKDEpOyBicmVhazsKKyAg
ICAgICAgY2FzZSAiZjY0IjogYnVpbGRlciA9IGJ1aWxkZXIuQ2FsbCgyKTsgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB0eXBlYCk7CisgICAgICAg
IH0KKyAgICB9CisgICAgaWYgKHJldCAhPT0gInZvaWQiKQorICAgICAgICBidWlsZGVyID0gYnVp
bGRlci5HZXRMb2NhbChyZXR1cm5lZFBhcmFtKTsKKyAgICBidWlsZGVyID0gYnVpbGRlci5SZXR1
cm4oKS5FbmQoKS5FbmQoKTsKKyAgICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCku
Z2V0KCk7CisgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pOwor
ICAgIHJldHVybiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogaW1wb3J0
cyB9KTsKK307CisKK3ZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoOCk7Cit2YXIgdmlld2kx
NiA9IG5ldyBJbnQxNkFycmF5KGJ1ZmZlcik7Cit2YXIgdmlld2kzMiA9IG5ldyBJbnQzMkFycmF5
KGJ1ZmZlcik7Cit2YXIgdmlld2YzMiA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyKTsKK3ZhciB2
aWV3ZjY0ID0gbmV3IEZsb2F0NjRBcnJheShidWZmZXIpOworY29uc3QgcmFuZG9tMTYgPSAoKSA9
PiAoTWF0aC5yYW5kb20oKSAqICgxICsgMHhmZmZmKSkgfCAwOworY29uc3Qgc2V0QnVmZmVyID0g
KCkgPT4geworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDsgKytpKQorICAgICAgICB2aWV3aTE2
W2ldID0gcmFuZG9tMTYoKTsKK307Citjb25zdCB0eXBlcyA9IFsKKyAgICB7IHR5cGU6ICJpMzIi
LCBnZW5lcmF0ZTogKCkgPT4geyBzZXRCdWZmZXIoKTsgcmV0dXJuIHZpZXdpMzJbMF07IH0gfSwK
KyAgICAvLyBpNjQgaXNuJ3Qgc3VwcG9ydGVkLgorICAgIHsgdHlwZTogImYzMiIsIGdlbmVyYXRl
OiAoKSA9PiB7IHNldEJ1ZmZlcigpOyByZXR1cm4gdmlld2YzMlswXTsgfSB9LAorICAgIHsgdHlw
ZTogImY2NCIsIGdlbmVyYXRlOiAoKSA9PiB7IHNldEJ1ZmZlcigpOyByZXR1cm4gdmlld2Y2NFsw
XTsgfSB9LAorXTsKKworZm9yIChsZXQgaXRlcmF0aW9uID0gMDsgaXRlcmF0aW9uIDwgbnVtUmFu
ZG9tSXRlcmF0aW9uczsgKytpdGVyYXRpb24pIHsKKyAgICBjb25zdCBhcml0eSA9IChNYXRoLnJh
bmRvbSgpICogKG1heEFyaXRpZXMgKyAxKSkgfCAwOworICAgIGxldCBwYXJhbXMgPSBbXTsKKyAg
ICBsZXQgYXJncyA9IFtdOworICAgIGZvciAobGV0IGEgPSAwOyBhIDwgYXJpdHk7ICsrYSkgewor
ICAgICAgICBjb25zdCB0eXBlID0oIE1hdGgucmFuZG9tKCkgKiB0eXBlcy5sZW5ndGgpIHwgMDsK
KyAgICAgICAgcGFyYW1zLnB1c2godHlwZXNbdHlwZV0udHlwZSk7CisgICAgICAgIGFyZ3MucHVz
aCh0eXBlc1t0eXBlXS5nZW5lcmF0ZSgpKTsKKyAgICB9CisgICAgbGV0IG51bUNoZWNrZWQgPSAw
OworICAgIGNvbnN0IGltcG9ydHMgPSB7CisgICAgICAgIGNoZWNraTMyOiB2ID0+IGFzc2VydC5l
cSh2LCBhcmdzW251bUNoZWNrZWQrK10pLAorICAgICAgICBjaGVja2YzMjogdiA9PiBhc3NlcnQu
ZXFPckJvdGhOYU4odiwgYXJnc1tudW1DaGVja2VkKytdKSwKKyAgICAgICAgY2hlY2tmNjQ6IHYg
PT4gYXNzZXJ0LmVxT3JCb3RoTmFOKHYsIGFyZ3NbbnVtQ2hlY2tlZCsrXSksCisgICAgfTsKKyAg
ICBjb25zdCByZXR1cm5lZFBhcmFtID0gKE1hdGgucmFuZG9tKCkgKiBwYXJhbXMubGVuZ3RoKSB8
IDA7CisgICAgY29uc3QgaW5zdGFuY2UgPSBwYXJhbUV4cG9ydGVyKHBhcmFtcywgcmV0dXJuZWRQ
YXJhbSwgaW1wb3J0cyk7CisgICAgY29uc3QgcmVzdWx0ID0gaW5zdGFuY2UuZXhwb3J0cy5mdW5j
KC4uLmFyZ3MpOworICAgIGFzc2VydC5lcShyZXN1bHQsIGFyZ3MubGVuZ3RoID8gYXJnc1tyZXR1
cm5lZFBhcmFtXSA6IHVuZGVmaW5lZCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMt
YXBpL2V4cG9ydC1hcml0eS5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZXhwb3J0LWFyaXR5Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MDkyZmQKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL2V4cG9ydC1hcml0eS5qcwpAQCAtMCwwICsxLDY1
IEBACitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKK2ltcG9ydCBCdWls
ZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworCisvLyBHZW5lcmF0ZSB3YXNtIGV4cG9ydCBmdW5j
dGlvbnMgb2YgYXJpdHkgWzAsIG1heCksIGFuZCBjYWxsIGVhY2ggb2YgdGhlc2UKKy8vIGV4cG9y
dCBmdW5jdGlvbnMgZnJvbSBKUyB3aXRoIFswLCBtYXgpIHBhcmFtZXRlcnMsIGZvciBlYWNoIHZh
bGlkIFdlYkFzc2VtYmx5CisvLyB0eXBlLiBNYWtlIHN1cmUgdGhpcyBudW1iZXIgaXMgaGlnaCBl
bm91Z2ggdG8gZm9yY2Ugbm9uLXJlZ2lzdGVyIGNhbGxzLgorY29uc3QgbWF4QXJpdGllcyA9IDY0
OworCitjb25zdCBwYXJhbUV4cG9ydGVyID0gKG51bVBhcmFtcywgcGFyYW1UeXBlLCBpbXBvcnRz
KSA9PiB7CisgICAgbGV0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgLlR5cGUo
KS5FbmQoKQorICAgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiaW1wIiwg
ImNoZWNrIiwgeyBwYXJhbXM6IFtwYXJhbVR5cGVdIH0pCisgICAgICAgIC5FbmQoKQorICAgICAg
ICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgIC5GdW5j
dGlvbigiZnVuYyIpCisgICAgICAgIC5FbmQoKQorICAgICAgICAuQ29kZSgpCisgICAgICAgICAg
LkZ1bmN0aW9uKCJmdW5jIiwgeyBwYXJhbXM6IEFycmF5KG51bVBhcmFtcykuZmlsbChwYXJhbVR5
cGUpIH0pOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtUGFyYW1zOyArK2kpCisgICAgICAg
IGJ1aWxkZXIgPSBidWlsZGVyLkdldExvY2FsKGkpLkNhbGwoMCk7IC8vIENhbGwgdGhlIGltcG9y
dCBmb3IgZWFjaCByZWNlaXZlZCBwYXJhbWV0ZXIuCisgICAgYnVpbGRlciA9IGJ1aWxkZXIuUmV0
dXJuKCkuRW5kKCkuRW5kKCk7CisgICAgY29uc3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgp
LmdldCgpOworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsK
KyAgICByZXR1cm4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IGltcG9y
dHMgfSk7Cit9OworCitjb25zdCB0eXBlcyA9IFsKKyAgICB7IHR5cGU6ICJpMzIiLCB2YWx1ZTog
NDIsIGRlZmF1bHRXaGVuQXJpdHlNaXNtYXRjaDogMCB9LAorICAgIC8vIGk2NCBpc24ndCBzdXBw
b3J0ZWQuCisgICAgeyB0eXBlOiAiZjMyIiwgdmFsdWU6IDMyLjAsIGRlZmF1bHRXaGVuQXJpdHlN
aXNtYXRjaDogTmFOIH0sCisgICAgeyB0eXBlOiAiZjY0IiwgdmFsdWU6IDY0LjAsIGRlZmF1bHRX
aGVuQXJpdHlNaXNtYXRjaDogTmFOIH0sCitdOworCitmb3IgKGxldCB0eXBlIG9mIHR5cGVzKSB7
CisgICAgZm9yIChsZXQgd2FzbUFyaXR5ID0gMDsgd2FzbUFyaXR5IDwgbWF4QXJpdGllczsgKyt3
YXNtQXJpdHkpIHsKKyAgICAgICAgbGV0IG51bVBhcmFtc0NhbGxpbmdXaXRoID0gdW5kZWZpbmVk
OworICAgICAgICBsZXQgbnVtQ2hlY2tlZCA9IDA7CisgICAgICAgIGNvbnN0IGNoZWNrID0gdmFs
dWUgPT4geworICAgICAgICAgICAgYXNzZXJ0LmlzTnVtYmVyKHZhbHVlKTsKKyAgICAgICAgICAg
IGlmIChudW1QYXJhbXNDYWxsaW5nV2l0aCA8PSB3YXNtQXJpdHkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAobnVtQ2hlY2tlZCA8IG51bVBhcmFtc0NhbGxpbmdXaXRoKQorICAgICAgICAgICAgICAg
ICAgICBhc3NlcnQuZXEodmFsdWUsIHR5cGUudmFsdWUpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxT3JCb3RoTmFOKHZhbHVlLCB0eXBlLmRlZmF1
bHRXaGVuQXJpdHlNaXNtYXRjaCk7CisgICAgICAgICAgICB9ICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBpZiAobnVtQ2hlY2tlZCA8IHdhc21Bcml0eSkKKyAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxKHZhbHVlLCB0eXBlLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIGFzc2VydC5lcU9yQm90aE5hTih2YWx1ZSwgdHlwZS5kZWZhdWx0V2hlbkFy
aXR5TWlzbWF0Y2gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKytudW1DaGVja2VkOwor
ICAgICAgICB9OworICAgICAgICBjb25zdCBpbnN0YW5jZSA9IHBhcmFtRXhwb3J0ZXIod2FzbUFy
aXR5LCB0eXBlLnR5cGUsIHsgY2hlY2s6IGNoZWNrIH0pOworICAgICAgICBmb3IgKGxldCBjYWxs
ZXJBcml0eSA9IDA7IGNhbGxlckFyaXR5IDwgbWF4QXJpdGllczsgKytjYWxsZXJBcml0eSkgewor
ICAgICAgICAgICAgbnVtUGFyYW1zQ2FsbGluZ1dpdGggPSBjYWxsZXJBcml0eTsKKyAgICAgICAg
ICAgIGNvbnN0IHBhcmFtcyA9IEFycmF5KGNhbGxlckFyaXR5KS5maWxsKHR5cGUudmFsdWUpOwor
ICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gaW5zdGFuY2UuZXhwb3J0cy5mdW5jKC4uLnBhcmFt
cyk7CisgICAgICAgICAgICBhc3NlcnQuaXNVbmRlZihyZXN1bHQpOworICAgICAgICAgICAgYXNz
ZXJ0LmVxKG51bUNoZWNrZWQsIHdhc21Bcml0eSk7IC8vIGNoZWNrKCkgc2hvdWxkIGJlIGNhbGxl
ZCBhcyBtYW55IHRpbWVzIGFzIHRoZSB3YXNtIGZ1bmN0aW9uJ3MgYXJpdHkuCisgICAgICAgICAg
ICBudW1DaGVja2VkID0gMDsgLy8gUmVzZXQgdGhlIGNoZWNrIGNvdW50ZXIgZm9yIGVhY2ggYXJp
dHkgaXRlcmF0aW9uLgorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93
YXNtL2pzLWFwaS9leHBvcnQtdm9pZC1pcy11bmRlZi5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkv
ZXhwb3J0LXZvaWQtaXMtdW5kZWYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZjljOTNhYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZXhwb3J0
LXZvaWQtaXMtdW5kZWYuanMKQEAgLTAsMCArMSwxOSBAQAoraW1wb3J0ICogYXMgYXNzZXJ0IGZy
b20gJy4uL2Fzc2VydC5qcyc7CitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsK
KworbGV0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAuVHlwZSgpLkVuZCgpCisgICAg
LkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAuRXhwb3J0KCkKKyAgICAgICAgLkZ1bmN0aW9uKCJmdW5j
IikKKyAgICAuRW5kKCkKKyAgICAuQ29kZSgpCisgICAgLkZ1bmN0aW9uKCJmdW5jIiwgeyBwYXJh
bXM6IFtdIH0pCisgICAgICAgIC5SZXR1cm4oKQorICAgIC5FbmQoKQorLkVuZCgpOworY29uc3Qg
YmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpOworY29uc3QgbW9kdWxlID0gbmV3IFdl
YkFzc2VtYmx5Lk1vZHVsZShiaW4pOworY29uc3QgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHku
SW5zdGFuY2UobW9kdWxlKTsKKworYXNzZXJ0LmlzVW5kZWYoaW5zdGFuY2UuZXhwb3J0cy5mdW5j
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZjg1ZGU3Mi4uZjEwZWMzOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjkgQEAKIDIwMTctMDEtMDIgIEpGIEJhc3Rp
ZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCisgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQSTog
Y2hlY2sgYW5kIHRlc3QgaW4tY2FsbCAvIG91dC1jYWxsIHZhbHVlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0ODc2CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yOTg0NDEwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHdhc20vV2FzbUJpbmRpbmcuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3
YXNtVG9Kcyk6IGZpeCB0aGUgd2FzbSAtPiBKUyBjYWxsIGNvZXJjaW9ucyBmb3IgZjMyIC8KKyAg
ICAgICAgZjY0IHdoaWNoIHRoZSBhc3NvdGlhdGVkIHRlc3RzIGluYWR2ZXJ0ZW50bHkgdHJpcHBl
ZCBvbjogdGhlCisgICAgICAgIHByZXZpb3VzIGNvZGUgd2Fzbid0IGNvcnJlY3RseSBwZXJmb3Jt
aW5nIEpTVmFsdWUgYm94aW5nIGZvcgorICAgICAgICAiZG91YmxlIiB2YWx1ZXMuIFRoaXMgY2hh
bmdlIGlzIHNsaWdodGx5IGludm9sdmVkIGJlY2F1c2UgaXQKKyAgICAgICAgcmVxdWlyZXMgdHdv
IHNjcmF0Y2ggcmVnaXN0ZXJzIHRvIG1hdGVyaWFsaXplIHRoZQorICAgICAgICBgRG91YmxlRW5j
b2RlT2Zmc2V0YCB2YWx1ZS4gVGhpcyBjaGFuZ2UgdGhlcmVmb3JlIHJlb3JnYW5pemVzIHRoZQor
ICAgICAgICBjb2RlIHRvIGZpcnN0IGdlbmVyYXRlIHRyYXBzLCB0aGVuIGhhbmRsZSBhbGwgaW50
ZWdlcnMgKGZyZWVpbmcKKyAgICAgICAgYWxsIEdQUnMpLCBhbmQgdGhlbiBhbGwgdGhlIGZsb2F0
aW5nLXBvaW50IHZhbHVlcy4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24u
Y3BwOgorICAgICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6IEltcGxlbWVudCB0
aGUgZGVmaW5lZCBzZW1hbnRpY3MKKyAgICAgICAgZm9yIG1pc21hdGNoZWQgYXJpdGllcyB3aGVu
IEpTIGNhbGxzIHdhc206CisgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9k
ZXNpZ24vYmxvYi9tYXN0ZXIvSlMubWQjZXhwb3J0ZWQtZnVuY3Rpb24tZXhvdGljLW9iamVjdHMK
KyAgICAgICAgICAtIGkzMiBpcyAwLCBmMzIgLyBmNjQgYXJlIE5hTi4KKyAgICAgICAgICAtIHdh
c20gZnVuY3Rpb25zIHdoaWNoIHJldHVybiAidm9pZCIgYXJlICJ1bmRlZmluZWQiIGluIEpTLgor
CisyMDE3LTAxLTAyICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKwogICAgICAg
ICBXZWJBc3NlbWJseTogaGFuZGxlIGFuZCBvcHRpbWl6ZSB3YXNtIGV4cG9ydCDihpIgd2FzbSBp
bXBvcnQgY2FsbHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NTI4MgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QmluZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAK
aW5kZXggOTk3MDJlYy4uZGQ1MGMzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CaW5kaW5nLmNwcApAQCAtNzQsNzIgKzc0LDE0NCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3Ms
CiAgICAgY29uc3QgdW5zaWduZWQgc3RhY2tPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxl
T2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCBudW1iZXJPZkJ5dGVzRm9yQ2FsbCk7CiAgICAgaml0
LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0YWNrT2Zmc2V0KSwgTWFjcm9B
c3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBKSVQ6OkFkZHJlc3MgY2FsbGVl
RnJhbWUgPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyLCAtc3RhdGljX2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykpKTsKLQotICAgIC8vIEZJWE1FIG1ha2UgdGhpcyBhIGxvb3Agd2hpY2ggc3dpdGNoZXMgb24g
U2lnbmF0dXJlIGlmIHRoZXJlIGFyZSBtYW55IGFyZ3VtZW50cyBvbiB0aGUgc3RhY2suIEl0J2xs
IG90aGVyd2lzZSBiZSBodWdlIGZvciBodWdlIHNpZ25hdHVyZXMuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU1NDcKLSAgICB1bnNpZ25lZCBtYXJzaGFsbGVkR1BS
cyA9IDA7Ci0gICAgdW5zaWduZWQgbWFyc2hhbGxlZEZQUnMgPSAwOwotICAgIHVuc2lnbmVkIGNh
bGxlZUZyYW1lT2Zmc2V0ID0gQ2FsbEZyYW1lU2xvdDo6Zmlyc3RBcmd1bWVudCAqIHN0YXRpY19j
YXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSk7Ci0gICAgdW5zaWduZWQgZnJPZmZzZXQgPSBDYWxs
RnJhbWVTbG90OjpmaXJzdEFyZ3VtZW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0
ZXIpKTsKKyAgICAKICAgICBmb3IgKHVuc2lnbmVkIGFyZ051bSA9IDA7IGFyZ051bSA8IGFyZ0Nv
dW50OyArK2FyZ051bSkgewogICAgICAgICBUeXBlIGFyZ1R5cGUgPSBzaWduYXR1cmUtPmFyZ3Vt
ZW50KGFyZ051bSk7CiAgICAgICAgIHN3aXRjaCAoYXJnVHlwZSkgewogICAgICAgICBjYXNlIFZv
aWQ6CiAgICAgICAgIGNhc2UgRnVuYzoKICAgICAgICAgY2FzZSBBbnlmdW5jOgotICAgICAgICBj
YXNlIEk2NDoKLSAgICAgICAgICAgIC8vIEZJWE1FOiBGaWd1cmUgb3V0IHRoZSBjb3JyZWN0IGJl
aGF2aW9yIGhlcmUuIEkgc3VzcGVjdCB3ZSB3YW50IHN1Y2ggYSBzdHViIHRvIHRocm93IGFuIGV4
Y2VwdGlvbiBpbW1lZGlhdGVseQorICAgICAgICBjYXNlIEk2NDogeworICAgICAgICAgICAgLy8g
RklYTUU6IEZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QgYmVoYXZpb3IgaGVyZS4gSSBzdXNwZWN0IHdl
IHdhbnQgc3VjaCBhIHN0dWIgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIGltbWVkaWF0ZWx5LgogICAg
ICAgICAgICAgLy8gaWYgY2FsbGVkLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY1OTkxCiAgICAgICAgICAgICBqaXQuYnJlYWtwb2ludCgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgSTMyOiB7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByUmVnOwot
ICAgICAgICAgICAgaWYgKG1hcnNoYWxsZWRHUFJzIDwgd2FzbUNDLm1fZ3ByQXJncy5zaXplKCkp
Ci0gICAgICAgICAgICAgICAgZ3ByUmVnID0gd2FzbUNDLm1fZ3ByQXJnc1ttYXJzaGFsbGVkR1BS
c10uZ3ByKCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBXZSd2ZSBh
bHJlYWR5IHNwaWxsZWQgYWxsIGFyZ3VtZW50cywgdGhlc2UgcmVnaXN0ZXJzIGFyZSBhdmFpbGFi
bGUgYXMgc2NyYXRjaC4KLSAgICAgICAgICAgICAgICBncHJSZWcgPSBHUFJJbmZvOjphcmd1bWVu
dEdQUjA7Ci0gICAgICAgICAgICAgICAgaml0LmxvYWQ2NChKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIGZyT2Zmc2V0KSwgZ3ByUmVnKTsKLSAgICAgICAgICAgICAgICBm
ck9mZnNldCArPSBzaXplb2YoUmVnaXN0ZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
KyttYXJzaGFsbGVkR1BSczsKLSAgICAgICAgICAgIGppdC5ib3hJbnQzMihncHJSZWcsIEpTVmFs
dWVSZWdzKGdwclJlZyksIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7Ci0gICAgICAgICAgICBqaXQu
c3RvcmU2NChncHJSZWcsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoY2FsbGVlRnJhbWVPZmZzZXQp
KTsKLSAgICAgICAgICAgIGNhbGxlZUZyYW1lT2Zmc2V0ICs9IHNpemVvZihSZWdpc3Rlcik7Ci0g
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZt
LCBqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgICAgICAgICByZXR1cm4gRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgKCJXZWJBc3NlbWJseSBpbXBvcnRbJWldIHN0dWIgZm9yIHNpZ25hdHVy
ZSAlaSIsIGltcG9ydEluZGV4LCBzaWduYXR1cmVJbmRleCkpOwogICAgICAgICB9Ci0gICAgICAg
IGNhc2UgRjMyOiB7Ci0gICAgICAgICAgICBGUFJSZWcgZnByUmVnOwotICAgICAgICAgICAgaWYg
KG1hcnNoYWxsZWRGUFJzIDwgd2FzbUNDLm1fZnByQXJncy5zaXplKCkpCi0gICAgICAgICAgICAg
ICAgZnByUmVnID0gd2FzbUNDLm1fZnByQXJnc1ttYXJzaGFsbGVkRlBSc10uZnByKCk7Ci0gICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IHNwaWxsZWQg
YWxsIGFyZ3VtZW50cywgdGhlc2UgcmVnaXN0ZXJzIGFyZSBhdmFpbGFibGUgYXMgc2NyYXRjaC4K
LSAgICAgICAgICAgICAgICBmcHJSZWcgPSBGUFJJbmZvOjphcmd1bWVudEZQUjA7Ci0gICAgICAg
ICAgICAgICAgaml0LmxvYWRGbG9hdChKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIGZyT2Zmc2V0KSwgZnByUmVnKTsKLSAgICAgICAgICAgICAgICBmck9mZnNldCArPSBz
aXplb2YoUmVnaXN0ZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaml0LmNvbnZlcnRG
bG9hdFRvRG91YmxlKGZwclJlZywgZnByUmVnKTsKLSAgICAgICAgICAgIGppdC5wdXJpZnlOYU4o
ZnByUmVnKTsKLSAgICAgICAgICAgIGppdC5zdG9yZURvdWJsZShmcHJSZWcsIGNhbGxlZUZyYW1l
LndpdGhPZmZzZXQoY2FsbGVlRnJhbWVPZmZzZXQpKTsKLSAgICAgICAgICAgIGNhbGxlZUZyYW1l
T2Zmc2V0ICs9IHNpemVvZihSZWdpc3Rlcik7Ci0gICAgICAgICAgICArK21hcnNoYWxsZWRGUFJz
OwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSTMyOgorICAgICAgICBjYXNlIEYz
MjoKKyAgICAgICAgY2FzZSBGNjQ6CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQot
ICAgICAgICBjYXNlIEY2NDogewotICAgICAgICAgICAgRlBSUmVnIGZwclJlZzsKLSAgICAgICAg
ICAgIGlmIChtYXJzaGFsbGVkRlBScyA8IHdhc21DQy5tX2ZwckFyZ3Muc2l6ZSgpKQotICAgICAg
ICAgICAgICAgIGZwclJlZyA9IHdhc21DQy5tX2ZwckFyZ3NbbWFyc2hhbGxlZEZQUnNdLmZwcigp
OwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBz
cGlsbGVkIGFsbCBhcmd1bWVudHMsIHRoZXNlIHJlZ2lzdGVycyBhcmUgYXZhaWxhYmxlIGFzIHNj
cmF0Y2guCi0gICAgICAgICAgICAgICAgZnByUmVnID0gRlBSSW5mbzo6YXJndW1lbnRGUFIwOwot
ICAgICAgICAgICAgICAgIGppdC5sb2FkRG91YmxlKEpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgZnJPZmZzZXQpLCBmcHJSZWcpOwotICAgICAgICAgICAgICAgIGZyT2Zm
c2V0ICs9IHNpemVvZihSZWdpc3Rlcik7CisgICAgfQorCisgICAgLy8gRklYTUUgbWFrZSB0aGVz
ZSBsb29wcyB3aGljaCBzd2l0Y2ggb24gU2lnbmF0dXJlIGlmIHRoZXJlIGFyZSBtYW55IGFyZ3Vt
ZW50cyBvbiB0aGUgc3RhY2suIEl0J2xsIG90aGVyd2lzZSBiZSBodWdlIGZvciBodWdlIHNpZ25h
dHVyZXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU1NDcKKyAg
ICAKKyAgICAvLyBGaXJzdCBnbyB0aHJvdWdoIHRoZSBpbnRlZ2VyIHBhcmFtZXRlcnMsIGZyZWVp
bmcgdXAgdGhlaXIgcmVnaXN0ZXIgZm9yIHVzZSBhZnRlcndhcmRzLgorICAgIHsKKyAgICAgICAg
dW5zaWduZWQgbWFyc2hhbGxlZEdQUnMgPSAwOworICAgICAgICB1bnNpZ25lZCBtYXJzaGFsbGVk
RlBScyA9IDA7CisgICAgICAgIHVuc2lnbmVkIGNhbGxlZUZyYW1lT2Zmc2V0ID0gQ2FsbEZyYW1l
U2xvdDo6Zmlyc3RBcmd1bWVudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSk7
CisgICAgICAgIHVuc2lnbmVkIGZyT2Zmc2V0ID0gQ2FsbEZyYW1lU2xvdDo6Zmlyc3RBcmd1bWVu
dCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAgICAgIGZvciAodW5z
aWduZWQgYXJnTnVtID0gMDsgYXJnTnVtIDwgYXJnQ291bnQ7ICsrYXJnTnVtKSB7CisgICAgICAg
ICAgICBUeXBlIGFyZ1R5cGUgPSBzaWduYXR1cmUtPmFyZ3VtZW50KGFyZ051bSk7CisgICAgICAg
ICAgICBzd2l0Y2ggKGFyZ1R5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgVm9pZDoKKyAgICAgICAg
ICAgIGNhc2UgRnVuYzoKKyAgICAgICAgICAgIGNhc2UgQW55ZnVuYzoKKyAgICAgICAgICAgIGNh
c2UgSTY0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8v
IEhhbmRsZWQgYWJvdmUuCisgICAgICAgICAgICBjYXNlIEkzMjogeworICAgICAgICAgICAgICAg
IEdQUlJlZyBncHJSZWc7CisgICAgICAgICAgICAgICAgaWYgKG1hcnNoYWxsZWRHUFJzIDwgd2Fz
bUNDLm1fZ3ByQXJncy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgIGdwclJlZyA9IHdhc21D
Qy5tX2dwckFyZ3NbbWFyc2hhbGxlZEdQUnNdLmdwcigpOworICAgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IHNwaWxsZWQgYWxsIGFyZ3Vt
ZW50cywgdGhlc2UgcmVnaXN0ZXJzIGFyZSBhdmFpbGFibGUgYXMgc2NyYXRjaC4KKyAgICAgICAg
ICAgICAgICAgICAgZ3ByUmVnID0gR1BSSW5mbzo6YXJndW1lbnRHUFIwOworICAgICAgICAgICAg
ICAgICAgICBqaXQubG9hZDY0KEpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgZnJPZmZzZXQpLCBncHJSZWcpOworICAgICAgICAgICAgICAgICAgICBmck9mZnNldCArPSBz
aXplb2YoUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICArK21h
cnNoYWxsZWRHUFJzOworICAgICAgICAgICAgICAgIGppdC5ib3hJbnQzMihncHJSZWcsIEpTVmFs
dWVSZWdzKGdwclJlZyksIERvTm90SGF2ZVRhZ1JlZ2lzdGVycyk7CisgICAgICAgICAgICAgICAg
aml0LnN0b3JlNjQoZ3ByUmVnLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KGNhbGxlZUZyYW1lT2Zm
c2V0KSk7CisgICAgICAgICAgICAgICAgY2FsbGVlRnJhbWVPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lz
dGVyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGNhc2UgRjMyOgorICAgICAgICAgICAgY2FzZSBGNjQ6CisgICAgICAgICAgICAgICAgLy8gU2tp
cHBlZDogaGFuZGxlZCBiZWxvdy4KKyAgICAgICAgICAgICAgICBpZiAobWFyc2hhbGxlZEZQUnMg
Pj0gd2FzbUNDLm1fZnByQXJncy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgIGZyT2Zmc2V0
ICs9IHNpemVvZihSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgKyttYXJzaGFsbGVkRlBSczsK
KyAgICAgICAgICAgICAgICBjYWxsZWVGcmFtZU9mZnNldCArPSBzaXplb2YoUmVnaXN0ZXIpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaml0LnB1
cmlmeU5hTihmcHJSZWcpOwotICAgICAgICAgICAgaml0LnN0b3JlRG91YmxlKGZwclJlZywgY2Fs
bGVlRnJhbWUud2l0aE9mZnNldChjYWxsZWVGcmFtZU9mZnNldCkpOwotICAgICAgICAgICAgY2Fs
bGVlRnJhbWVPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKLSAgICAgICAgICAgICsrbWFyc2hh
bGxlZEZQUnM7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgIH0KKyAgICAKKyAg
ICB7CisgICAgICAgIC8vIEludGVnZXIgcmVnaXN0ZXJzIGhhdmUgYWxyZWFkeSBiZWVuIHNwaWxs
ZWQsIHRoZXNlIGFyZSBub3cgYXZhaWxhYmxlLgorICAgICAgICBHUFJSZWcgZG91YmxlRW5jb2Rl
T2Zmc2V0R1BSUmVnID0gR1BSSW5mbzo6YXJndW1lbnRHUFIwOworICAgICAgICBHUFJSZWcgc2Ny
YXRjaCA9IEdQUkluZm86OmFyZ3VtZW50R1BSMTsKKyAgICAgICAgYm9vbCBoYXNNYXRlcmlhbGl6
ZWREb3VibGVFbmNvZGVPZmZzZXQgPSBmYWxzZTsKKyAgICAgICAgYXV0byBtYXRlcmlhbGl6ZURv
dWJsZUVuY29kZU9mZnNldCA9IFsmaGFzTWF0ZXJpYWxpemVkRG91YmxlRW5jb2RlT2Zmc2V0XSAo
SklUJiBqaXQsIEdQUlJlZyBkZXN0KSB7CisgICAgICAgICAgICBpZiAoIWhhc01hdGVyaWFsaXpl
ZERvdWJsZUVuY29kZU9mZnNldCkgeworICAgICAgICAgICAgICAgIEFTU0VSVChEb3VibGVFbmNv
ZGVPZmZzZXQgPT0gMWxsIDw8IDQ4KTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShKSVQ6OlRy
dXN0ZWRJbW0zMigxKSwgZGVzdCk7CisgICAgICAgICAgICAgICAgaml0LmxzaGlmdDY0KEpJVDo6
VHJ1c3RlZEltbTMyKDQ4KSwgZGVzdCk7CisgICAgICAgICAgICAgICAgaGFzTWF0ZXJpYWxpemVk
RG91YmxlRW5jb2RlT2Zmc2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKwor
ICAgICAgICB1bnNpZ25lZCBtYXJzaGFsbGVkR1BScyA9IDA7CisgICAgICAgIHVuc2lnbmVkIG1h
cnNoYWxsZWRGUFJzID0gMDsKKyAgICAgICAgdW5zaWduZWQgY2FsbGVlRnJhbWVPZmZzZXQgPSBD
YWxsRnJhbWVTbG90OjpmaXJzdEFyZ3VtZW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVn
aXN0ZXIpKTsKKyAgICAgICAgdW5zaWduZWQgZnJPZmZzZXQgPSBDYWxsRnJhbWVTbG90OjpmaXJz
dEFyZ3VtZW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBhcmdOdW0gPSAwOyBhcmdOdW0gPCBhcmdDb3VudDsgKythcmdOdW0pIHsK
KyAgICAgICAgICAgIFR5cGUgYXJnVHlwZSA9IHNpZ25hdHVyZS0+YXJndW1lbnQoYXJnTnVtKTsK
KyAgICAgICAgICAgIHN3aXRjaCAoYXJnVHlwZSkgeworICAgICAgICAgICAgY2FzZSBWb2lkOgor
ICAgICAgICAgICAgY2FzZSBGdW5jOgorICAgICAgICAgICAgY2FzZSBBbnlmdW5jOgorICAgICAg
ICAgICAgY2FzZSBJNjQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgLy8gSGFuZGxlZCBhYm92ZS4KKyAgICAgICAgICAgIGNhc2UgSTMyOgorICAgICAgICAg
ICAgICAgIC8vIFNraXBwZWQ6IGhhbmRsZWQgYWJvdmUuCisgICAgICAgICAgICAgICAgaWYgKG1h
cnNoYWxsZWRHUFJzIDwgd2FzbUNDLm1fZ3ByQXJncy5zaXplKCkpCisgICAgICAgICAgICAgICAg
ICAgIGZyT2Zmc2V0ICs9IHNpemVvZihSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgKyttYXJz
aGFsbGVkR1BSczsKKyAgICAgICAgICAgICAgICBjYWxsZWVGcmFtZU9mZnNldCArPSBzaXplb2Yo
UmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGMzI6
IHsKKyAgICAgICAgICAgICAgICBGUFJSZWcgZnByUmVnOworICAgICAgICAgICAgICAgIGlmICht
YXJzaGFsbGVkRlBScyA8IHdhc21DQy5tX2ZwckFyZ3Muc2l6ZSgpKQorICAgICAgICAgICAgICAg
ICAgICBmcHJSZWcgPSB3YXNtQ0MubV9mcHJBcmdzW21hcnNoYWxsZWRGUFJzXS5mcHIoKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UndmUgYWxyZWFk
eSBzcGlsbGVkIGFsbCBhcmd1bWVudHMsIHRoZXNlIHJlZ2lzdGVycyBhcmUgYXZhaWxhYmxlIGFz
IHNjcmF0Y2guCisgICAgICAgICAgICAgICAgICAgIGZwclJlZyA9IEZQUkluZm86OmFyZ3VtZW50
RlBSMDsKKyAgICAgICAgICAgICAgICAgICAgaml0LmxvYWRGbG9hdChKSVQ6OkFkZHJlc3MoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGZyT2Zmc2V0KSwgZnByUmVnKTsKKyAgICAgICAgICAg
ICAgICAgICAgZnJPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaml0LmNvbnZlcnRGbG9hdFRvRG91YmxlKGZwclJlZywgZnByUmVn
KTsKKyAgICAgICAgICAgICAgICBqaXQucHVyaWZ5TmFOKGZwclJlZyk7CisgICAgICAgICAgICAg
ICAgaml0Lm1vdmVEb3VibGVUbzY0KGZwclJlZywgc2NyYXRjaCk7CisgICAgICAgICAgICAgICAg
bWF0ZXJpYWxpemVEb3VibGVFbmNvZGVPZmZzZXQoaml0LCBkb3VibGVFbmNvZGVPZmZzZXRHUFJS
ZWcpOworICAgICAgICAgICAgICAgIGppdC5hZGQ2NChkb3VibGVFbmNvZGVPZmZzZXRHUFJSZWcs
IHNjcmF0Y2gpOworICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KHNjcmF0Y2gsIGNhbGxlZUZy
YW1lLndpdGhPZmZzZXQoY2FsbGVlRnJhbWVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBjYWxs
ZWVGcmFtZU9mZnNldCArPSBzaXplb2YoUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgICsrbWFy
c2hhbGxlZEZQUnM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjYXNlIEY2NDogeworICAgICAgICAgICAgICAgIEZQUlJlZyBmcHJSZWc7CisgICAg
ICAgICAgICAgICAgaWYgKG1hcnNoYWxsZWRGUFJzIDwgd2FzbUNDLm1fZnByQXJncy5zaXplKCkp
CisgICAgICAgICAgICAgICAgICAgIGZwclJlZyA9IHdhc21DQy5tX2ZwckFyZ3NbbWFyc2hhbGxl
ZEZQUnNdLmZwcigpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAvLyBXZSd2ZSBhbHJlYWR5IHNwaWxsZWQgYWxsIGFyZ3VtZW50cywgdGhlc2UgcmVnaXN0ZXJz
IGFyZSBhdmFpbGFibGUgYXMgc2NyYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgZnByUmVnID0g
RlBSSW5mbzo6YXJndW1lbnRGUFIwOworICAgICAgICAgICAgICAgICAgICBqaXQubG9hZERvdWJs
ZShKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGZyT2Zmc2V0KSwgZnBy
UmVnKTsKKyAgICAgICAgICAgICAgICAgICAgZnJPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaml0LnB1cmlmeU5hTihmcHJSZWcp
OworICAgICAgICAgICAgICAgIGppdC5tb3ZlRG91YmxlVG82NChmcHJSZWcsIHNjcmF0Y2gpOwor
ICAgICAgICAgICAgICAgIG1hdGVyaWFsaXplRG91YmxlRW5jb2RlT2Zmc2V0KGppdCwgZG91Ymxl
RW5jb2RlT2Zmc2V0R1BSUmVnKTsKKyAgICAgICAgICAgICAgICBqaXQuYWRkNjQoZG91YmxlRW5j
b2RlT2Zmc2V0R1BSUmVnLCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NChz
Y3JhdGNoLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KGNhbGxlZUZyYW1lT2Zmc2V0KSk7CisgICAg
ICAgICAgICAgICAgY2FsbGVlRnJhbWVPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgICAgICArK21hcnNoYWxsZWRGUFJzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmlu
ZGV4IGI4MTAxODkuLjY3NDRjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC01NiwxMCArNTYsNiBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXgg
PSB3YXNtRnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7CiAgICAgY29uc3QgV2FzbTo6U2lnbmF0
dXJlKiBzaWduYXR1cmUgPSBXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KCZ2bSwgc2ln
bmF0dXJlSW5kZXgpOwogCi0gICAgLy8gRklYTUUgaXMgdGhpcyB0aGUgcmlnaHQgYmVoYXZpb3I/
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ4NzYKLSAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpICE9IHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjLCBkZWZhdWx0U291cmNlQXBwZW5kZXIp
KSk7Ci0KICAgICB7CiAgICAgICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgYSBkaXNhbGxvd2VkIEk2
NCB1c2UuCiAKQEAgLTc4LDEwICs3NCwxMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICAvLyBGSVhNRSBpcyB0aGlzIGJveGluZyBjb3JyZWN0PyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0ODc2CiAgICAgVmVjdG9yPEpTVmFs
dWU+IGJveGVkQXJnczsKICAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsgYXJnSW5kZXgg
PCBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKTsgKythcmdJbmRleCkgewotICAgICAgICBKU1Zh
bHVlIGFyZyA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGFyZ0luZGV4KTsKKyAgICAgICAgLy8g
QXJpdHkgY291bGQgbWlzbWF0Y2gsIHRoaXMgd2lsbCB0YWtlIGNhcmUgb2YgdGhlIGRlZmluZWQg
YmVoYXZpb3I6IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9kZXNpZ24vYmxvYi9tYXN0
ZXIvSlMubWQjZXhwb3J0ZWQtZnVuY3Rpb24tZXhvdGljLW9iamVjdHMKKyAgICAgICAgSlNWYWx1
ZSBhcmcgPSBleGVjLT5hcmd1bWVudChhcmdJbmRleCk7CiAgICAgICAgIHN3aXRjaCAoc2lnbmF0
dXJlLT5hcmd1bWVudChhcmdJbmRleCkpIHsKICAgICAgICAgY2FzZSBXYXNtOjpJMzI6CiAgICAg
ICAgICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUoYXJnLnRvSW50MzIoZXhlYykpOwpAQCAtMTI3
LDcgKzEyMyw2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJB
c3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICB2bS50b3BKU1dlYkFzc2VtYmx5
SW5zdGFuY2UgPSBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNlOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICAvLyBGSVhNRSBpcyB0aGlzIGNvcnJlY3Q/IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ4NzYKICAgICBzd2l0Y2ggKHNp
Z25hdHVyZS0+cmV0dXJuVHlwZSgpKSB7CiAgICAgY2FzZSBXYXNtOjpWb2lkOgogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotLSAKMi45LjMKCg==
</data>
<flag name="review"
          id="320186"
          type_id="1"
          status="+"
          setter="saam"
    />
    <flag name="commit-queue"
          id="320187"
          type_id="3"
          status="-"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297938</attachid>
            <date>2017-01-03 11:49:12 -0800</date>
            <delta_ts>2017-01-03 12:25:32 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-arity-check.patch</filename>
            <type>text/plain</type>
            <size>25981</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBlMzhmNGE4MGNlYTA4YTBlNWY3OTNhNjZjMzMwM2ZiNTc4NzU0NDM2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBNb24sIDIgSmFuIDIwMTcgMjI6MDU6MzMgLTA4MDAKU3ViamVjdDogW1BBVENIXSBhcml0eSBj
aGVjawoKLS0tCiBKU1Rlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAyMyArKysKIEpTVGVzdHMvd2FzbS55YW1sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAyICsKIEpTVGVzdHMvd2FzbS9CdWlsZGVyLmpzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICA4ICstCiBKU1Rlc3RzL3dhc20vYXNzZXJ0LmpzICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAxMCArLQogSlNUZXN0cy93YXNtL2Z1enovZXhwb3J0LWZ1bmN0
aW9uLmpzICAgICAgICAgICAgICAgfCAgODAgKysrKysrKysrCiBKU1Rlc3RzL3dhc20vanMtYXBp
L2V4cG9ydC1hcml0eS5qcyAgICAgICAgICAgICAgICB8ICA2NSArKysrKysrKwogSlNUZXN0cy93
YXNtL2pzLWFwaS9leHBvcnQtdm9pZC1pcy11bmRlZi5qcyAgICAgICAgfCAgMTkgKysrCiBKU1Rl
c3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfQnVpbGRlckpTT04uanMgICAgICAgICB8ICAgNCArLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgfCAgMjQg
KysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAgICAgICAgICB8
IDE4MCArKysrKysrKysrKysrKy0tLS0tLS0KIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5RnVuY3Rpb24uY3BwIHwgICA4ICstCiAxMSBmaWxlcyBjaGFuZ2VkLCAzNTggaW5z
ZXJ0aW9ucygrKSwgNjUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgSlNUZXN0cy93
YXNtL2Z1enovZXhwb3J0LWZ1bmN0aW9uLmpzCiBjcmVhdGUgbW9kZSAxMDA2NDQgSlNUZXN0cy93
YXNtL2pzLWFwaS9leHBvcnQtYXJpdHkuanMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dh
c20vanMtYXBpL2V4cG9ydC12b2lkLWlzLXVuZGVmLmpzCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9D
aGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAzZDQ4ZTZkLi40NTYzM2QyIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDI4IEBACiAyMDE3LTAxLTAyICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4K
IAorICAgICAgICBXZWJBc3NlbWJseSBKUyBBUEk6IGNoZWNrIGFuZCB0ZXN0IGluLWNhbGwgLyBv
dXQtY2FsbCB2YWx1ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NDg3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk4NDQxMDc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgKiB3YXNtLnlhbWw6CisgICAg
ICAgICogd2FzbS9hc3NlcnQuanM6IGFkZCBhbiBhc3NlcnQgZm9yIE5hTiBjb21wYXJpc29uCisg
ICAgICAgICogd2FzbS9mdXp6L2V4cG9ydC1mdW5jdGlvbi5qczogQWRkZWQuIEdlbmVyYXRlIHJh
bmRvbSB3YXNtIGV4cG9ydAorICAgICAgICBzaWduYXR1cmVzLCBhbmQgY2FsbCB0aGVtIHdpdGgg
cmFuZG9tIHBhcmFtZXRlcnMuCisgICAgICAgIChjb25zdC5wYXJhbUV4cG9ydGVyKToKKyAgICAg
ICAgKGNvbnN0LnNldEJ1ZmZlcik6CisgICAgICAgIChjb25zdC50eXBlcy5nZW5lcmF0ZSk6Cisg
ICAgICAgIChnZW5lcmF0ZSk6CisgICAgICAgICogd2FzbS9qcy1hcGkvZXhwb3J0LWFyaXR5Lmpz
OiBBZGRlZC4KKyAgICAgICAgKGNvbnN0LnBhcmFtRXhwb3J0ZXIpOiBUZXN0IHRoYXQgbWlzbWF0
Y2hlZCBhcml0aWVzIHdoZW4gSlMgY2FsbHMKKyAgICAgICAgd2FzbSBmb2xsb3cgdGhlIGRlZmlu
ZWQgc2VtYW50aWNzOiBpMzIgaXMgMCwgZjMyIC8gZjY0IGFyZSBOYU4uCisgICAgICAgIGh0dHBz
Oi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9kZXNpZ24vYmxvYi9tYXN0ZXIvSlMubWQjZXhwb3J0
ZWQtZnVuY3Rpb24tZXhvdGljLW9iamVjdHMKKyAgICAgICAgKiB3YXNtL2pzLWFwaS9leHBvcnQt
dm9pZC1pcy11bmRlZi5qczogQWRkZWQuIFRlc3QgdGhhdCAidm9pZCIKKyAgICAgICAgd2FzbSBm
dW5jdGlvbnMgcmV0dXJuICJ1bmRlZmluZWQiIGluIEpTLgorCisyMDE3LTAxLTAyICBKRiBCYXN0
aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWJBc3NlbWJseTogaGFuZGxl
IGFuZCBvcHRpbWl6ZSB3YXNtIGV4cG9ydCDihpIgd2FzbSBpbXBvcnQgY2FsbHMKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTI4MgogCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3dhc20ueWFtbCBiL0pTVGVzdHMvd2FzbS55YW1sCmluZGV4IDc3ZmQ0NDMu
LjU3MzdiYTEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS55YW1sCisrKyBiL0pTVGVzdHMvd2Fz
bS55YW1sCkBAIC0yNyw2ICsyNyw4IEBACiAgIGNtZDogcnVuV2ViQXNzZW1ibHkKIC0gcGF0aDog
d2FzbS9mdW5jdGlvbi10ZXN0cwogICBjbWQ6IHJ1bldlYkFzc2VtYmx5CistIHBhdGg6IHdhc20v
ZnV6egorICBjbWQ6IHJ1bldlYkFzc2VtYmx5CiAKIC0gcGF0aDogd2FzbS9zcGVjLXRlc3RzL2Fk
ZHJlc3Mud2FzdC5qcwogICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5vcm1hbApkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMgYi9KU1Rlc3RzL3dhc20vQnVpbGRlci5q
cwppbmRleCAyNmJhNjZlLi4xY2M4YTQ3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vQnVpbGRl
ci5qcworKysgYi9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcwpAQCAtNzUyLDcgKzc1MiwxMyBAQCBl
eHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAgIHByZWFtYmxlOiB0aGlz
Ll9wcmVhbWJsZSwKICAgICAgICAgICAgIHNlY3Rpb246IHRoaXMuX3NlY3Rpb25zCiAgICAgICAg
IH07Ci0gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmopOworICAgICAgICAvLyBKU09O
LnN0cmluZ2lmeSBzZXJpYWxpemVzIC0wLjAgYXMgMC4wLgorICAgICAgICBjb25zdCByZXBsYWNl
ciA9IChrZXksIHZhbHVlKSA9PiB7CisgICAgICAgICAgICBpZiAodmFsdWUgPT09IDAuMCAmJiAx
LjAgLyB2YWx1ZSA9PT0gLUluZmluaXR5KQorICAgICAgICAgICAgICAgIHJldHVybiAiTkVHQVRJ
VkVfWkVSTyI7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH07CisgICAgICAg
IHJldHVybiBKU09OLnN0cmluZ2lmeShvYmosIHJlcGxhY2VyKTsKICAgICB9CiAgICAgQXNtSlMo
KSB7CiAgICAgICAgICJ1c2UgYXNtIjsgLy8gRm9yIHNwZWVkLgpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy93YXNtL2Fzc2VydC5qcyBiL0pTVGVzdHMvd2FzbS9hc3NlcnQuanMKaW5kZXggNGQyODcyMC4u
Y2Q5Mjk4NiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL2Fzc2VydC5qcworKysgYi9KU1Rlc3Rz
L3dhc20vYXNzZXJ0LmpzCkBAIC03MiwxMSArNzIsMTkgQEAgZXhwb3J0IGNvbnN0IGZhbHN5ID0g
KHYsIG1zZykgPT4gewogfTsKIAogZXhwb3J0IGNvbnN0IGVxID0gKGxocywgcmhzLCBtc2cpID0+
IHsKKyAgICBpZiAodHlwZW9mIGxocyAhPT0gdHlwZW9mIHJocykKKyAgICAgICAgX2ZhaWwoYE5v
dCB0aGUgc2FtZTogIiR7bGhzfSIgYW5kICIke3Joc30iYCwgbXNnKTsKICAgICBpZiAoQXJyYXku
aXNBcnJheShsaHMpICYmIEFycmF5LmlzQXJyYXkocmhzKSAmJiAobGhzLmxlbmd0aCA9PT0gcmhz
Lmxlbmd0aCkpIHsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgIT09IGxocy5sZW5ndGg7ICsr
aSkKICAgICAgICAgICAgIGVxKGxoc1tpXSwgcmhzW2ldLCBtc2cpOwotICAgIH0gZWxzZSBpZiAo
bGhzICE9PSByaHMpCisgICAgfSBlbHNlIGlmIChsaHMgIT09IHJocykgeworICAgICAgICBpZiAo
dHlwZW9mIGxocyA9PT0gIm51bWJlciIgJiYgaXNOYU4obGhzKSAmJiBpc05hTihyaHMpKQorICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBfZmFpbChgTm90IHRoZSBzYW1lOiAiJHtsaHN9IiBh
bmQgIiR7cmhzfSJgLCBtc2cpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICh0eXBlb2YgbGhz
ID09PSAibnVtYmVyIiAmJiAoMS4wIC8gbGhzICE9PSAxLjAgLyByaHMpKSAvLyBEaXN0aW5ndWlz
aCAtMC4wIGZyb20gMC4wLgorICAgICAgICAgICAgX2ZhaWwoYE5vdCB0aGUgc2FtZTogIiR7bGhz
fSIgYW5kICIke3Joc30iYCwgbXNnKTsKKyAgICB9CiB9OwogCiBjb25zdCBjYW5vbmljYWxpemVJ
MzIgPSAobnVtYmVyKSA9PiB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZnV6ei9leHBvcnQt
ZnVuY3Rpb24uanMgYi9KU1Rlc3RzL3dhc20vZnV6ei9leHBvcnQtZnVuY3Rpb24uanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRlMjg2ZAotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvd2FzbS9mdXp6L2V4cG9ydC1mdW5jdGlvbi5qcwpAQCAtMCwwICsxLDgwIEBACitp
bXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKK2ltcG9ydCBCdWlsZGVyIGZy
b20gJy4uL0J1aWxkZXIuanMnOworCitjb25zdCBudW1SYW5kb21JdGVyYXRpb25zID0gMTI4Owor
CisvLyBHZW5lcmF0ZSB3YXNtIGV4cG9ydCBmdW5jdGlvbnMgb2YgYXJpdHkgWzAsIG1heCksIHVz
aW5nIGVhY2ggdmFsaWQKKy8vIFdlYkFzc2VtYmx5IHR5cGUgYXMgcGFyYW1ldGVycy4gTWFrZSBz
dXJlIHRoaXMgbnVtYmVyIGlzIGhpZ2ggZW5vdWdoIHRvIGZvcmNlCisvLyBub24tcmVnaXN0ZXIg
Y2FsbHMuCitjb25zdCBtYXhBcml0aWVzID0gNjQ7CisKKy8vIENhbGxzIGEgImNoZWNrIiBmdW5j
dGlvbiBmb3IgZWFjaCBwYXJhbWV0ZXIgcmVjZWl2ZWQuCitjb25zdCBwYXJhbUV4cG9ydGVyID0g
KHBhcmFtcywgcmV0dXJuZWRQYXJhbSwgaW1wb3J0cykgPT4geworICAgIGNvbnN0IHJldCA9IHBh
cmFtcy5sZW5ndGggPyBwYXJhbXNbcmV0dXJuZWRQYXJhbV0gOiAidm9pZCI7CisgICAgbGV0IGJ1
aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAu
SW1wb3J0KCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiaW1wIiwgImNoZWNraTMyIiwgeyBwYXJh
bXM6IFsiaTMyIl0gfSkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiaW1wIiwgImNoZWNrZjMyIiwg
eyBwYXJhbXM6IFsiZjMyIl0gfSkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiaW1wIiwgImNoZWNr
ZjY0IiwgeyBwYXJhbXM6IFsiZjY0Il0gfSkKKyAgICAgICAgLkVuZCgpCisgICAgICAgIC5GdW5j
dGlvbigpLkVuZCgpCisgICAgICAgIC5FeHBvcnQoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJm
dW5jIikKKyAgICAgICAgLkVuZCgpCisgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5j
dGlvbigiZnVuYyIsIHsgcGFyYW1zOiBwYXJhbXMsIHJldDogcmV0IH0pOworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGJ1aWxkZXIgPSBidWls
ZGVyLkdldExvY2FsKGkpOworICAgICAgICBzd2l0Y2ggKHBhcmFtc1tpXSkgeworICAgICAgICBj
YXNlICJpMzIiOiBidWlsZGVyID0gYnVpbGRlci5DYWxsKDApOyBicmVhazsKKyAgICAgICAgY2Fz
ZSAiZjMyIjogYnVpbGRlciA9IGJ1aWxkZXIuQ2FsbCgxKTsgYnJlYWs7CisgICAgICAgIGNhc2Ug
ImY2NCI6IGJ1aWxkZXIgPSBidWlsZGVyLkNhbGwoMik7IGJyZWFrOworICAgICAgICBkZWZhdWx0
OiB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdHlwZWApOworICAgICAgICB9CisgICAgfQor
ICAgIGlmIChyZXQgIT09ICJ2b2lkIikKKyAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuR2V0TG9j
YWwocmV0dXJuZWRQYXJhbSk7CisgICAgYnVpbGRlciA9IGJ1aWxkZXIuUmV0dXJuKCkuRW5kKCku
RW5kKCk7CisgICAgY29uc3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpOworICAg
IGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKKyAgICByZXR1cm4g
bmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IGltcG9ydHMgfSk7Cit9Owor
Cit2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDgpOwordmFyIHZpZXdpMTYgPSBuZXcgSW50
MTZBcnJheShidWZmZXIpOwordmFyIHZpZXdpMzIgPSBuZXcgSW50MzJBcnJheShidWZmZXIpOwor
dmFyIHZpZXdmMzIgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlcik7Cit2YXIgdmlld2Y2NCA9IG5l
dyBGbG9hdDY0QXJyYXkoYnVmZmVyKTsKK2NvbnN0IHJhbmRvbTE2ID0gKCkgPT4gKE1hdGgucmFu
ZG9tKCkgKiAoMSArIDB4ZmZmZikpIHwgMDsKK2NvbnN0IHNldEJ1ZmZlciA9ICgpID0+IHsKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDQ7ICsraSkKKyAgICAgICAgdmlld2kxNltpXSA9IHJhbmRv
bTE2KCk7Cit9OworY29uc3QgdHlwZXMgPSBbCisgICAgeyB0eXBlOiAiaTMyIiwgZ2VuZXJhdGU6
ICgpID0+IHsgc2V0QnVmZmVyKCk7IHJldHVybiB2aWV3aTMyWzBdOyB9IH0sCisgICAgLy8gaTY0
IGlzbid0IHN1cHBvcnRlZC4KKyAgICB7IHR5cGU6ICJmMzIiLCBnZW5lcmF0ZTogKCkgPT4geyBz
ZXRCdWZmZXIoKTsgcmV0dXJuIHZpZXdmMzJbMF07IH0gfSwKKyAgICB7IHR5cGU6ICJmNjQiLCBn
ZW5lcmF0ZTogKCkgPT4geyBzZXRCdWZmZXIoKTsgcmV0dXJuIHZpZXdmNjRbMF07IH0gfSwKK107
CisKK2ZvciAobGV0IGl0ZXJhdGlvbiA9IDA7IGl0ZXJhdGlvbiA8IG51bVJhbmRvbUl0ZXJhdGlv
bnM7ICsraXRlcmF0aW9uKSB7CisgICAgY29uc3QgYXJpdHkgPSAoTWF0aC5yYW5kb20oKSAqICht
YXhBcml0aWVzICsgMSkpIHwgMDsKKyAgICBsZXQgcGFyYW1zID0gW107CisgICAgbGV0IGFyZ3Mg
PSBbXTsKKyAgICBmb3IgKGxldCBhID0gMDsgYSA8IGFyaXR5OyArK2EpIHsKKyAgICAgICAgY29u
c3QgdHlwZSA9KCBNYXRoLnJhbmRvbSgpICogdHlwZXMubGVuZ3RoKSB8IDA7CisgICAgICAgIHBh
cmFtcy5wdXNoKHR5cGVzW3R5cGVdLnR5cGUpOworICAgICAgICBhcmdzLnB1c2godHlwZXNbdHlw
ZV0uZ2VuZXJhdGUoKSk7CisgICAgfQorICAgIGxldCBudW1DaGVja2VkID0gMDsKKyAgICBjb25z
dCBpbXBvcnRzID0geworICAgICAgICBjaGVja2kzMjogdiA9PiBhc3NlcnQuZXEodiwgYXJnc1tu
dW1DaGVja2VkKytdKSwKKyAgICAgICAgY2hlY2tmMzI6IHYgPT4gYXNzZXJ0LmVxKHYsIGFyZ3Nb
bnVtQ2hlY2tlZCsrXSksCisgICAgICAgIGNoZWNrZjY0OiB2ID0+IGFzc2VydC5lcSh2LCBhcmdz
W251bUNoZWNrZWQrK10pLAorICAgIH07CisgICAgY29uc3QgcmV0dXJuZWRQYXJhbSA9IChNYXRo
LnJhbmRvbSgpICogcGFyYW1zLmxlbmd0aCkgfCAwOworICAgIGNvbnN0IGluc3RhbmNlID0gcGFy
YW1FeHBvcnRlcihwYXJhbXMsIHJldHVybmVkUGFyYW0sIGltcG9ydHMpOworICAgIGNvbnN0IHJl
c3VsdCA9IGluc3RhbmNlLmV4cG9ydHMuZnVuYyguLi5hcmdzKTsKKyAgICBhc3NlcnQuZXEocmVz
dWx0LCBhcmdzLmxlbmd0aCA/IGFyZ3NbcmV0dXJuZWRQYXJhbV0gOiB1bmRlZmluZWQpOworfQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9leHBvcnQtYXJpdHkuanMgYi9KU1Rlc3Rz
L3dhc20vanMtYXBpL2V4cG9ydC1hcml0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi40MTU3OTUzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9l
eHBvcnQtYXJpdHkuanMKQEAgLTAsMCArMSw2NSBAQAoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20g
Jy4uL2Fzc2VydC5qcyc7CitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKKwor
Ly8gR2VuZXJhdGUgd2FzbSBleHBvcnQgZnVuY3Rpb25zIG9mIGFyaXR5IFswLCBtYXgpLCBhbmQg
Y2FsbCBlYWNoIG9mIHRoZXNlCisvLyBleHBvcnQgZnVuY3Rpb25zIGZyb20gSlMgd2l0aCBbMCwg
bWF4KSBwYXJhbWV0ZXJzLCBmb3IgZWFjaCB2YWxpZCBXZWJBc3NlbWJseQorLy8gdHlwZS4gTWFr
ZSBzdXJlIHRoaXMgbnVtYmVyIGlzIGhpZ2ggZW5vdWdoIHRvIGZvcmNlIG5vbi1yZWdpc3RlciBj
YWxscy4KK2NvbnN0IG1heEFyaXRpZXMgPSA2NDsKKworY29uc3QgcGFyYW1FeHBvcnRlciA9IChu
dW1QYXJhbXMsIHBhcmFtVHlwZSwgaW1wb3J0cykgPT4geworICAgIGxldCBidWlsZGVyID0gKG5l
dyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkltcG9ydCgpCisg
ICAgICAgICAgICAuRnVuY3Rpb24oImltcCIsICJjaGVjayIsIHsgcGFyYW1zOiBbcGFyYW1UeXBl
XSB9KQorICAgICAgICAuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAg
LkV4cG9ydCgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZ1bmMiKQorICAgICAgICAuRW5kKCkK
KyAgICAgICAgLkNvZGUoKQorICAgICAgICAgIC5GdW5jdGlvbigiZnVuYyIsIHsgcGFyYW1zOiBB
cnJheShudW1QYXJhbXMpLmZpbGwocGFyYW1UeXBlKSB9KTsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IG51bVBhcmFtczsgKytpKQorICAgICAgICBidWlsZGVyID0gYnVpbGRlci5HZXRMb2NhbChp
KS5DYWxsKDApOyAvLyBDYWxsIHRoZSBpbXBvcnQgZm9yIGVhY2ggcmVjZWl2ZWQgcGFyYW1ldGVy
LgorICAgIGJ1aWxkZXIgPSBidWlsZGVyLlJldHVybigpLkVuZCgpLkVuZCgpOworICAgIGNvbnN0
IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKKyAgICBjb25zdCBtb2R1bGUgPSBu
ZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CisgICAgcmV0dXJuIG5ldyBXZWJBc3NlbWJseS5J
bnN0YW5jZShtb2R1bGUsIHsgaW1wOiBpbXBvcnRzIH0pOworfTsKKworY29uc3QgdHlwZXMgPSBb
CisgICAgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDQyLCBkZWZhdWx0V2hlbkFyaXR5TWlzbWF0Y2g6
IDAgfSwKKyAgICAvLyBpNjQgaXNuJ3Qgc3VwcG9ydGVkLgorICAgIHsgdHlwZTogImYzMiIsIHZh
bHVlOiAzMi4wLCBkZWZhdWx0V2hlbkFyaXR5TWlzbWF0Y2g6IE5hTiB9LAorICAgIHsgdHlwZTog
ImY2NCIsIHZhbHVlOiA2NC4wLCBkZWZhdWx0V2hlbkFyaXR5TWlzbWF0Y2g6IE5hTiB9LAorXTsK
KworZm9yIChsZXQgdHlwZSBvZiB0eXBlcykgeworICAgIGZvciAobGV0IHdhc21Bcml0eSA9IDA7
IHdhc21Bcml0eSA8IG1heEFyaXRpZXM7ICsrd2FzbUFyaXR5KSB7CisgICAgICAgIGxldCBudW1Q
YXJhbXNDYWxsaW5nV2l0aCA9IHVuZGVmaW5lZDsKKyAgICAgICAgbGV0IG51bUNoZWNrZWQgPSAw
OworICAgICAgICBjb25zdCBjaGVjayA9IHZhbHVlID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5p
c051bWJlcih2YWx1ZSk7CisgICAgICAgICAgICBpZiAobnVtUGFyYW1zQ2FsbGluZ1dpdGggPD0g
d2FzbUFyaXR5KSB7CisgICAgICAgICAgICAgICAgaWYgKG51bUNoZWNrZWQgPCBudW1QYXJhbXND
YWxsaW5nV2l0aCkKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmVxKHZhbHVlLCB0eXBlLnZh
bHVlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFzc2VydC5l
cSh2YWx1ZSwgdHlwZS5kZWZhdWx0V2hlbkFyaXR5TWlzbWF0Y2gpOworICAgICAgICAgICAgfSAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKG51bUNoZWNrZWQgPCB3YXNtQXJpdHkpCisgICAg
ICAgICAgICAgICAgICAgIGFzc2VydC5lcSh2YWx1ZSwgdHlwZS52YWx1ZSk7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBhc3NlcnQuZXEodmFsdWUsIHR5cGUuZGVm
YXVsdFdoZW5Bcml0eU1pc21hdGNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICsrbnVt
Q2hlY2tlZDsKKyAgICAgICAgfTsKKyAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBwYXJhbUV4cG9y
dGVyKHdhc21Bcml0eSwgdHlwZS50eXBlLCB7IGNoZWNrOiBjaGVjayB9KTsKKyAgICAgICAgZm9y
IChsZXQgY2FsbGVyQXJpdHkgPSAwOyBjYWxsZXJBcml0eSA8IG1heEFyaXRpZXM7ICsrY2FsbGVy
QXJpdHkpIHsKKyAgICAgICAgICAgIG51bVBhcmFtc0NhbGxpbmdXaXRoID0gY2FsbGVyQXJpdHk7
CisgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBBcnJheShjYWxsZXJBcml0eSkuZmlsbCh0eXBl
LnZhbHVlKTsKKyAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGluc3RhbmNlLmV4cG9ydHMuZnVu
YyguLi5wYXJhbXMpOworICAgICAgICAgICAgYXNzZXJ0LmlzVW5kZWYocmVzdWx0KTsKKyAgICAg
ICAgICAgIGFzc2VydC5lcShudW1DaGVja2VkLCB3YXNtQXJpdHkpOyAvLyBjaGVjaygpIHNob3Vs
ZCBiZSBjYWxsZWQgYXMgbWFueSB0aW1lcyBhcyB0aGUgd2FzbSBmdW5jdGlvbidzIGFyaXR5Lgor
ICAgICAgICAgICAgbnVtQ2hlY2tlZCA9IDA7IC8vIFJlc2V0IHRoZSBjaGVjayBjb3VudGVyIGZv
ciBlYWNoIGFyaXR5IGl0ZXJhdGlvbi4KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS9qcy1hcGkvZXhwb3J0LXZvaWQtaXMtdW5kZWYuanMgYi9KU1Rlc3RzL3dh
c20vanMtYXBpL2V4cG9ydC12b2lkLWlzLXVuZGVmLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmY5YzkzYWMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vanMt
YXBpL2V4cG9ydC12b2lkLWlzLXVuZGVmLmpzCkBAIC0wLDAgKzEsMTkgQEAKK2ltcG9ydCAqIGFz
IGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVp
bGRlci5qcyc7CisKK2xldCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCisgICAgLlR5cGUoKS5F
bmQoKQorICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgLkV4cG9ydCgpCisgICAgICAgIC5GdW5j
dGlvbigiZnVuYyIpCisgICAgLkVuZCgpCisgICAgLkNvZGUoKQorICAgIC5GdW5jdGlvbigiZnVu
YyIsIHsgcGFyYW1zOiBbXSB9KQorICAgICAgICAuUmV0dXJuKCkKKyAgICAuRW5kKCkKKy5FbmQo
KTsKK2NvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKK2NvbnN0IG1vZHVs
ZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKK2NvbnN0IGluc3RhbmNlID0gbmV3IFdl
YkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSk7CisKK2Fzc2VydC5pc1VuZGVmKGluc3RhbmNlLmV4
cG9ydHMuZnVuYygpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9C
dWlsZGVySlNPTi5qcyBiL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9CdWlsZGVySlNPTi5q
cwppbmRleCAxN2RiMjYzLi42MjNmMGYyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vc2VsZi10
ZXN0L3Rlc3RfQnVpbGRlckpTT04uanMKKysrIGIvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0
X0J1aWxkZXJKU09OLmpzCkBAIC01MTAsNyArNTEwLDcgQEAgY29uc3QgYXNzZXJ0T3BUaHJvd3Mg
PSAob3BGbiwgbWVzc2FnZSkgPT4gewogICAgICAgICBhc3NlcnQuZXEoai5zZWN0aW9uWzFdLmRh
dGFbMF0uY29kZVswXS5uYW1lLCAiZjMyLmNvbnN0Iik7CiAgICAgICAgIGFzc2VydC5lcShqLnNl
Y3Rpb25bMV0uZGF0YVswXS5jb2RlWzBdLmFyZ3VtZW50cy5sZW5ndGgsIDApOwogICAgICAgICBh
c3NlcnQuZXEoai5zZWN0aW9uWzFdLmRhdGFbMF0uY29kZVswXS5pbW1lZGlhdGVzLmxlbmd0aCwg
MSk7Ci0gICAgICAgIGFzc2VydC5lcShqLnNlY3Rpb25bMV0uZGF0YVswXS5jb2RlWzBdLmltbWVk
aWF0ZXNbMF0sIGMpOworICAgICAgICBhc3NlcnQuZXEoai5zZWN0aW9uWzFdLmRhdGFbMF0uY29k
ZVswXS5pbW1lZGlhdGVzWzBdID09PSAiTkVHQVRJVkVfWkVSTyIgPyAtMC4wIDogai5zZWN0aW9u
WzFdLmRhdGFbMF0uY29kZVswXS5pbW1lZGlhdGVzWzBdLCBjKTsKICAgICB9CiB9KSgpOwogCkBA
IC01MjYsNyArNTI2LDcgQEAgY29uc3QgYXNzZXJ0T3BUaHJvd3MgPSAob3BGbiwgbWVzc2FnZSkg
PT4gewogICAgICAgICBhc3NlcnQuZXEoai5zZWN0aW9uWzFdLmRhdGFbMF0uY29kZVswXS5uYW1l
LCAiZjY0LmNvbnN0Iik7CiAgICAgICAgIGFzc2VydC5lcShqLnNlY3Rpb25bMV0uZGF0YVswXS5j
b2RlWzBdLmFyZ3VtZW50cy5sZW5ndGgsIDApOwogICAgICAgICBhc3NlcnQuZXEoai5zZWN0aW9u
WzFdLmRhdGFbMF0uY29kZVswXS5pbW1lZGlhdGVzLmxlbmd0aCwgMSk7Ci0gICAgICAgIGFzc2Vy
dC5lcShqLnNlY3Rpb25bMV0uZGF0YVswXS5jb2RlWzBdLmltbWVkaWF0ZXNbMF0sIGMpOworICAg
ICAgICBhc3NlcnQuZXEoai5zZWN0aW9uWzFdLmRhdGFbMF0uY29kZVswXS5pbW1lZGlhdGVzWzBd
ID09PSAiTkVHQVRJVkVfWkVSTyIgPyAtMC4wIDogai5zZWN0aW9uWzFdLmRhdGFbMF0uY29kZVsw
XS5pbW1lZGlhdGVzWzBdLCBjKTsKICAgICB9CiB9KSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwppbmRleCBmODVkZTcyLi5jOTUzMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyOSBAQAogMjAxNy0wMS0wMiAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+
CiAKKyAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBjaGVjayBhbmQgdGVzdCBpbi1jYWxsIC8g
b3V0LWNhbGwgdmFsdWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjQ4NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5ODQ0MTA3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgICogd2FzbS9XYXNtQmluZGlu
Zy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pzKTogZml4IHRoZSB3YXNtIC0+IEpT
IGNhbGwgY29lcmNpb25zIGZvciBmMzIgLworICAgICAgICBmNjQgd2hpY2ggdGhlIGFzc290aWF0
ZWQgdGVzdHMgaW5hZHZlcnRlbnRseSB0cmlwcGVkIG9uOiB0aGUKKyAgICAgICAgcHJldmlvdXMg
Y29kZSB3YXNuJ3QgY29ycmVjdGx5IHBlcmZvcm1pbmcgSlNWYWx1ZSBib3hpbmcgZm9yCisgICAg
ICAgICJkb3VibGUiIHZhbHVlcy4gVGhpcyBjaGFuZ2UgaXMgc2xpZ2h0bHkgaW52b2x2ZWQgYmVj
YXVzZSBpdAorICAgICAgICByZXF1aXJlcyB0d28gc2NyYXRjaCByZWdpc3RlcnMgdG8gbWF0ZXJp
YWxpemUgdGhlCisgICAgICAgIGBEb3VibGVFbmNvZGVPZmZzZXRgIHZhbHVlLiBUaGlzIGNoYW5n
ZSB0aGVyZWZvcmUgcmVvcmdhbml6ZXMgdGhlCisgICAgICAgIGNvZGUgdG8gZmlyc3QgZ2VuZXJh
dGUgdHJhcHMsIHRoZW4gaGFuZGxlIGFsbCBpbnRlZ2VycyAoZnJlZWluZworICAgICAgICBhbGwg
R1BScyksIGFuZCB0aGVuIGFsbCB0aGUgZmxvYXRpbmctcG9pbnQgdmFsdWVzLgorICAgICAgICAq
IHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWJB
c3NlbWJseUZ1bmN0aW9uKTogSW1wbGVtZW50IHRoZSBkZWZpbmVkIHNlbWFudGljcworICAgICAg
ICBmb3IgbWlzbWF0Y2hlZCBhcml0aWVzIHdoZW4gSlMgY2FsbHMgd2FzbToKKyAgICAgICAgaHR0
cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2Rlc2lnbi9ibG9iL21hc3Rlci9KUy5tZCNleHBv
cnRlZC1mdW5jdGlvbi1leG90aWMtb2JqZWN0cworICAgICAgICAgIC0gaTMyIGlzIDAsIGYzMiAv
IGY2NCBhcmUgTmFOLgorICAgICAgICAgIC0gd2FzbSBmdW5jdGlvbnMgd2hpY2ggcmV0dXJuICJ2
b2lkIiBhcmUgInVuZGVmaW5lZCIgaW4gSlMuCisKKzIwMTctMDEtMDIgIEpGIEJhc3RpZW4gIDxq
ZmJhc3RpZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFdlYkFzc2VtYmx5OiBoYW5kbGUgYW5kIG9w
dGltaXplIHdhc20gZXhwb3J0IOKGkiB3YXNtIGltcG9ydCBjYWxscwogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MjgyCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAppbmRleCA5OTcwMmVjLi42NmFkYWU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCkBAIC03NCw3MiArNzQs
MTQ0IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBCYWc8
Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJbmZvcywKICAgICBjb25zdCB1bnNpZ25lZCBzdGFja09m
ZnNldCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIG51
bWJlck9mQnl0ZXNGb3JDYWxsKTsKICAgICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tMzIoc3RhY2tPZmZzZXQpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIpOwogICAgIEpJVDo6QWRkcmVzcyBjYWxsZWVGcmFtZSA9IENDYWxsSGVscGVyczo6QWRkcmVz
cyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIC1zdGF0aWNfY2FzdDxwdHJk
aWZmX3Q+KHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwotCi0gICAgLy8gRklYTUUgbWFrZSB0
aGlzIGEgbG9vcCB3aGljaCBzd2l0Y2hlcyBvbiBTaWduYXR1cmUgaWYgdGhlcmUgYXJlIG1hbnkg
YXJndW1lbnRzIG9uIHRoZSBzdGFjay4gSXQnbGwgb3RoZXJ3aXNlIGJlIGh1Z2UgZm9yIGh1Z2Ug
c2lnbmF0dXJlcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTU0
NwotICAgIHVuc2lnbmVkIG1hcnNoYWxsZWRHUFJzID0gMDsKLSAgICB1bnNpZ25lZCBtYXJzaGFs
bGVkRlBScyA9IDA7Ci0gICAgdW5zaWduZWQgY2FsbGVlRnJhbWVPZmZzZXQgPSBDYWxsRnJhbWVT
bG90OjpmaXJzdEFyZ3VtZW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKTsK
LSAgICB1bnNpZ25lZCBmck9mZnNldCA9IENhbGxGcmFtZVNsb3Q6OmZpcnN0QXJndW1lbnQgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOworICAgIAogICAgIGZvciAodW5zaWdu
ZWQgYXJnTnVtID0gMDsgYXJnTnVtIDwgYXJnQ291bnQ7ICsrYXJnTnVtKSB7CiAgICAgICAgIFR5
cGUgYXJnVHlwZSA9IHNpZ25hdHVyZS0+YXJndW1lbnQoYXJnTnVtKTsKICAgICAgICAgc3dpdGNo
IChhcmdUeXBlKSB7CiAgICAgICAgIGNhc2UgVm9pZDoKICAgICAgICAgY2FzZSBGdW5jOgogICAg
ICAgICBjYXNlIEFueWZ1bmM6Ci0gICAgICAgIGNhc2UgSTY0OgotICAgICAgICAgICAgLy8gRklY
TUU6IEZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QgYmVoYXZpb3IgaGVyZS4gSSBzdXNwZWN0IHdlIHdh
bnQgc3VjaCBhIHN0dWIgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIGltbWVkaWF0ZWx5CisgICAgICAg
IGNhc2UgSTY0OiB7CisgICAgICAgICAgICAvLyBGSVhNRTogRmlndXJlIG91dCB0aGUgY29ycmVj
dCBiZWhhdmlvciBoZXJlLiBJIHN1c3BlY3Qgd2Ugd2FudCBzdWNoIGEgc3R1YiB0byB0aHJvdyBh
biBleGNlcHRpb24gaW1tZWRpYXRlbHkuCiAgICAgICAgICAgICAvLyBpZiBjYWxsZWQuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU5OTEKICAgICAgICAgICAgIGpp
dC5icmVha3BvaW50KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJMzI6IHsK
LSAgICAgICAgICAgIEdQUlJlZyBncHJSZWc7Ci0gICAgICAgICAgICBpZiAobWFyc2hhbGxlZEdQ
UnMgPCB3YXNtQ0MubV9ncHJBcmdzLnNpemUoKSkKLSAgICAgICAgICAgICAgICBncHJSZWcgPSB3
YXNtQ0MubV9ncHJBcmdzW21hcnNoYWxsZWRHUFJzXS5ncHIoKTsKLSAgICAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgc3BpbGxlZCBhbGwgYXJndW1lbnRz
LCB0aGVzZSByZWdpc3RlcnMgYXJlIGF2YWlsYWJsZSBhcyBzY3JhdGNoLgotICAgICAgICAgICAg
ICAgIGdwclJlZyA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKLSAgICAgICAgICAgICAgICBqaXQu
bG9hZDY0KEpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZnJPZmZzZXQp
LCBncHJSZWcpOwotICAgICAgICAgICAgICAgIGZyT2Zmc2V0ICs9IHNpemVvZihSZWdpc3Rlcik7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICArK21hcnNoYWxsZWRHUFJzOwotICAgICAgICAg
ICAgaml0LmJveEludDMyKGdwclJlZywgSlNWYWx1ZVJlZ3MoZ3ByUmVnKSwgRG9Ob3RIYXZlVGFn
UmVnaXN0ZXJzKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTY0KGdwclJlZywgY2FsbGVlRnJhbWUu
d2l0aE9mZnNldChjYWxsZWVGcmFtZU9mZnNldCkpOwotICAgICAgICAgICAgY2FsbGVlRnJhbWVP
ZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAg
ICAgICAgICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIldlYkFzc2VtYmx5
IGltcG9ydFslaV0gc3R1YiBmb3Igc2lnbmF0dXJlICVpIiwgaW1wb3J0SW5kZXgsIHNpZ25hdHVy
ZUluZGV4KSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBGMzI6IHsKLSAgICAgICAgICAgIEZQ
UlJlZyBmcHJSZWc7Ci0gICAgICAgICAgICBpZiAobWFyc2hhbGxlZEZQUnMgPCB3YXNtQ0MubV9m
cHJBcmdzLnNpemUoKSkKLSAgICAgICAgICAgICAgICBmcHJSZWcgPSB3YXNtQ0MubV9mcHJBcmdz
W21hcnNoYWxsZWRGUFJzXS5mcHIoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIC8vIFdlJ3ZlIGFscmVhZHkgc3BpbGxlZCBhbGwgYXJndW1lbnRzLCB0aGVzZSByZWdpc3Rl
cnMgYXJlIGF2YWlsYWJsZSBhcyBzY3JhdGNoLgotICAgICAgICAgICAgICAgIGZwclJlZyA9IEZQ
UkluZm86OmFyZ3VtZW50RlBSMDsKLSAgICAgICAgICAgICAgICBqaXQubG9hZEZsb2F0KEpJVDo6
QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZnJPZmZzZXQpLCBmcHJSZWcpOwot
ICAgICAgICAgICAgICAgIGZyT2Zmc2V0ICs9IHNpemVvZihSZWdpc3Rlcik7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBqaXQuY29udmVydEZsb2F0VG9Eb3VibGUoZnByUmVnLCBmcHJSZWcp
OwotICAgICAgICAgICAgaml0LnB1cmlmeU5hTihmcHJSZWcpOwotICAgICAgICAgICAgaml0LnN0
b3JlRG91YmxlKGZwclJlZywgY2FsbGVlRnJhbWUud2l0aE9mZnNldChjYWxsZWVGcmFtZU9mZnNl
dCkpOwotICAgICAgICAgICAgY2FsbGVlRnJhbWVPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsK
LSAgICAgICAgICAgICsrbWFyc2hhbGxlZEZQUnM7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBJMzI6CisgICAgICAgIGNhc2UgRjMyOgorICAgICAgICBjYXNlIEY2NDoKKyAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgRjY0OiB7Ci0gICAgICAg
ICAgICBGUFJSZWcgZnByUmVnOwotICAgICAgICAgICAgaWYgKG1hcnNoYWxsZWRGUFJzIDwgd2Fz
bUNDLm1fZnByQXJncy5zaXplKCkpCi0gICAgICAgICAgICAgICAgZnByUmVnID0gd2FzbUNDLm1f
ZnByQXJnc1ttYXJzaGFsbGVkRlBSc10uZnByKCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IHNwaWxsZWQgYWxsIGFyZ3VtZW50cywgdGhlc2Ug
cmVnaXN0ZXJzIGFyZSBhdmFpbGFibGUgYXMgc2NyYXRjaC4KLSAgICAgICAgICAgICAgICBmcHJS
ZWcgPSBGUFJJbmZvOjphcmd1bWVudEZQUjA7Ci0gICAgICAgICAgICAgICAgaml0LmxvYWREb3Vi
bGUoSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBmck9mZnNldCksIGZw
clJlZyk7Ci0gICAgICAgICAgICAgICAgZnJPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKKyAg
ICB9CisKKyAgICAvLyBGSVhNRSBtYWtlIHRoZXNlIGxvb3BzIHdoaWNoIHN3aXRjaCBvbiBTaWdu
YXR1cmUgaWYgdGhlcmUgYXJlIG1hbnkgYXJndW1lbnRzIG9uIHRoZSBzdGFjay4gSXQnbGwgb3Ro
ZXJ3aXNlIGJlIGh1Z2UgZm9yIGh1Z2Ugc2lnbmF0dXJlcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NTU0NworICAgIAorICAgIC8vIEZpcnN0IGdvIHRocm91Z2gg
dGhlIGludGVnZXIgcGFyYW1ldGVycywgZnJlZWluZyB1cCB0aGVpciByZWdpc3RlciBmb3IgdXNl
IGFmdGVyd2FyZHMuCisgICAgeworICAgICAgICB1bnNpZ25lZCBtYXJzaGFsbGVkR1BScyA9IDA7
CisgICAgICAgIHVuc2lnbmVkIG1hcnNoYWxsZWRGUFJzID0gMDsKKyAgICAgICAgdW5zaWduZWQg
Y2FsbGVlRnJhbWVPZmZzZXQgPSBDYWxsRnJhbWVTbG90OjpmaXJzdEFyZ3VtZW50ICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICAgICAgdW5zaWduZWQgZnJPZmZzZXQg
PSBDYWxsRnJhbWVTbG90OjpmaXJzdEFyZ3VtZW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdOdW0gPSAwOyBhcmdOdW0gPCBh
cmdDb3VudDsgKythcmdOdW0pIHsKKyAgICAgICAgICAgIFR5cGUgYXJnVHlwZSA9IHNpZ25hdHVy
ZS0+YXJndW1lbnQoYXJnTnVtKTsKKyAgICAgICAgICAgIHN3aXRjaCAoYXJnVHlwZSkgeworICAg
ICAgICAgICAgY2FzZSBWb2lkOgorICAgICAgICAgICAgY2FzZSBGdW5jOgorICAgICAgICAgICAg
Y2FzZSBBbnlmdW5jOgorICAgICAgICAgICAgY2FzZSBJNjQ6CisgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gSGFuZGxlZCBhYm92ZS4KKyAgICAgICAgICAg
IGNhc2UgSTMyOiB7CisgICAgICAgICAgICAgICAgR1BSUmVnIGdwclJlZzsKKyAgICAgICAgICAg
ICAgICBpZiAobWFyc2hhbGxlZEdQUnMgPCB3YXNtQ0MubV9ncHJBcmdzLnNpemUoKSkKKyAgICAg
ICAgICAgICAgICAgICAgZ3ByUmVnID0gd2FzbUNDLm1fZ3ByQXJnc1ttYXJzaGFsbGVkR1BSc10u
Z3ByKCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdl
J3ZlIGFscmVhZHkgc3BpbGxlZCBhbGwgYXJndW1lbnRzLCB0aGVzZSByZWdpc3RlcnMgYXJlIGF2
YWlsYWJsZSBhcyBzY3JhdGNoLgorICAgICAgICAgICAgICAgICAgICBncHJSZWcgPSBHUFJJbmZv
Ojphcmd1bWVudEdQUjA7CisgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoSklUOjpBZGRy
ZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBmck9mZnNldCksIGdwclJlZyk7CisgICAg
ICAgICAgICAgICAgICAgIGZyT2Zmc2V0ICs9IHNpemVvZihSZWdpc3Rlcik7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICsrbWFyc2hhbGxlZEdQUnM7CisgICAgICAgICAgICAg
ICAgaml0LmJveEludDMyKGdwclJlZywgSlNWYWx1ZVJlZ3MoZ3ByUmVnKSwgRG9Ob3RIYXZlVGFn
UmVnaXN0ZXJzKTsKKyAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NChncHJSZWcsIGNhbGxlZUZy
YW1lLndpdGhPZmZzZXQoY2FsbGVlRnJhbWVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBjYWxs
ZWVGcmFtZU9mZnNldCArPSBzaXplb2YoUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBGMzI6CisgICAgICAgICAgICBjYXNl
IEY2NDoKKyAgICAgICAgICAgICAgICAvLyBTa2lwcGVkOiBoYW5kbGVkIGJlbG93LgorICAgICAg
ICAgICAgICAgIGlmIChtYXJzaGFsbGVkRlBScyA+PSB3YXNtQ0MubV9mcHJBcmdzLnNpemUoKSkK
KyAgICAgICAgICAgICAgICAgICAgZnJPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgICAgICArK21hcnNoYWxsZWRGUFJzOworICAgICAgICAgICAgICAgIGNhbGxlZUZyYW1l
T2Zmc2V0ICs9IHNpemVvZihSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBqaXQucHVyaWZ5TmFOKGZwclJlZyk7Ci0gICAgICAgICAg
ICBqaXQuc3RvcmVEb3VibGUoZnByUmVnLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KGNhbGxlZUZy
YW1lT2Zmc2V0KSk7Ci0gICAgICAgICAgICBjYWxsZWVGcmFtZU9mZnNldCArPSBzaXplb2YoUmVn
aXN0ZXIpOwotICAgICAgICAgICAgKyttYXJzaGFsbGVkRlBSczsKLSAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisgICAgfQorICAgIAorICAgIHsKKyAgICAgICAgLy8gSW50ZWdlciByZWdp
c3RlcnMgaGF2ZSBhbHJlYWR5IGJlZW4gc3BpbGxlZCwgdGhlc2UgYXJlIG5vdyBhdmFpbGFibGUu
CisgICAgICAgIEdQUlJlZyBkb3VibGVFbmNvZGVPZmZzZXRHUFJSZWcgPSBHUFJJbmZvOjphcmd1
bWVudEdQUjA7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gR1BSSW5mbzo6YXJndW1lbnRHUFIx
OworICAgICAgICBib29sIGhhc01hdGVyaWFsaXplZERvdWJsZUVuY29kZU9mZnNldCA9IGZhbHNl
OworICAgICAgICBhdXRvIG1hdGVyaWFsaXplRG91YmxlRW5jb2RlT2Zmc2V0ID0gWyZoYXNNYXRl
cmlhbGl6ZWREb3VibGVFbmNvZGVPZmZzZXQsICZqaXRdIChHUFJSZWcgZGVzdCkgeworICAgICAg
ICAgICAgaWYgKCFoYXNNYXRlcmlhbGl6ZWREb3VibGVFbmNvZGVPZmZzZXQpIHsKKyAgICAgICAg
ICAgICAgICBzdGF0aWNfYXNzZXJ0KERvdWJsZUVuY29kZU9mZnNldCA9PSAxbGwgPDwgNDgsICJj
b2RlZ2VuIGFzc3VtZXMgdGhpcyBiZWxvdyIpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKEpJ
VDo6VHJ1c3RlZEltbTMyKDEpLCBkZXN0KTsKKyAgICAgICAgICAgICAgICBqaXQubHNoaWZ0NjQo
SklUOjpUcnVzdGVkSW1tMzIoNDgpLCBkZXN0KTsKKyAgICAgICAgICAgICAgICBoYXNNYXRlcmlh
bGl6ZWREb3VibGVFbmNvZGVPZmZzZXQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9
OworCisgICAgICAgIHVuc2lnbmVkIG1hcnNoYWxsZWRHUFJzID0gMDsKKyAgICAgICAgdW5zaWdu
ZWQgbWFyc2hhbGxlZEZQUnMgPSAwOworICAgICAgICB1bnNpZ25lZCBjYWxsZWVGcmFtZU9mZnNl
dCA9IENhbGxGcmFtZVNsb3Q6OmZpcnN0QXJndW1lbnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpOworICAgICAgICB1bnNpZ25lZCBmck9mZnNldCA9IENhbGxGcmFtZVNsb3Q6
OmZpcnN0QXJndW1lbnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGFyZ051bSA9IDA7IGFyZ051bSA8IGFyZ0NvdW50OyArK2FyZ051
bSkgeworICAgICAgICAgICAgVHlwZSBhcmdUeXBlID0gc2lnbmF0dXJlLT5hcmd1bWVudChhcmdO
dW0pOworICAgICAgICAgICAgc3dpdGNoIChhcmdUeXBlKSB7CisgICAgICAgICAgICBjYXNlIFZv
aWQ6CisgICAgICAgICAgICBjYXNlIEZ1bmM6CisgICAgICAgICAgICBjYXNlIEFueWZ1bmM6Cisg
ICAgICAgICAgICBjYXNlIEk2NDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyAvLyBIYW5kbGVkIGFib3ZlLgorICAgICAgICAgICAgY2FzZSBJMzI6CisgICAg
ICAgICAgICAgICAgLy8gU2tpcHBlZDogaGFuZGxlZCBhYm92ZS4KKyAgICAgICAgICAgICAgICBp
ZiAobWFyc2hhbGxlZEdQUnMgPCB3YXNtQ0MubV9ncHJBcmdzLnNpemUoKSkKKyAgICAgICAgICAg
ICAgICAgICAgZnJPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICAr
K21hcnNoYWxsZWRHUFJzOworICAgICAgICAgICAgICAgIGNhbGxlZUZyYW1lT2Zmc2V0ICs9IHNp
emVvZihSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IEYzMjogeworICAgICAgICAgICAgICAgIEZQUlJlZyBmcHJSZWc7CisgICAgICAgICAgICAgICAg
aWYgKG1hcnNoYWxsZWRGUFJzIDwgd2FzbUNDLm1fZnByQXJncy5zaXplKCkpCisgICAgICAgICAg
ICAgICAgICAgIGZwclJlZyA9IHdhc21DQy5tX2ZwckFyZ3NbbWFyc2hhbGxlZEZQUnNdLmZwcigp
OworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBXZSd2ZSBh
bHJlYWR5IHNwaWxsZWQgYWxsIGFyZ3VtZW50cywgdGhlc2UgcmVnaXN0ZXJzIGFyZSBhdmFpbGFi
bGUgYXMgc2NyYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgZnByUmVnID0gRlBSSW5mbzo6YXJn
dW1lbnRGUFIwOworICAgICAgICAgICAgICAgICAgICBqaXQubG9hZEZsb2F0KEpJVDo6QWRkcmVz
cyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZnJPZmZzZXQpLCBmcHJSZWcpOworICAgICAg
ICAgICAgICAgICAgICBmck9mZnNldCArPSBzaXplb2YoUmVnaXN0ZXIpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBqaXQuY29udmVydEZsb2F0VG9Eb3VibGUoZnByUmVnLCBm
cHJSZWcpOworICAgICAgICAgICAgICAgIGppdC5wdXJpZnlOYU4oZnByUmVnKTsKKyAgICAgICAg
ICAgICAgICBqaXQubW92ZURvdWJsZVRvNjQoZnByUmVnLCBzY3JhdGNoKTsKKyAgICAgICAgICAg
ICAgICBtYXRlcmlhbGl6ZURvdWJsZUVuY29kZU9mZnNldChkb3VibGVFbmNvZGVPZmZzZXRHUFJS
ZWcpOworICAgICAgICAgICAgICAgIGppdC5hZGQ2NChkb3VibGVFbmNvZGVPZmZzZXRHUFJSZWcs
IHNjcmF0Y2gpOworICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KHNjcmF0Y2gsIGNhbGxlZUZy
YW1lLndpdGhPZmZzZXQoY2FsbGVlRnJhbWVPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBjYWxs
ZWVGcmFtZU9mZnNldCArPSBzaXplb2YoUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgICsrbWFy
c2hhbGxlZEZQUnM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjYXNlIEY2NDogeworICAgICAgICAgICAgICAgIEZQUlJlZyBmcHJSZWc7CisgICAg
ICAgICAgICAgICAgaWYgKG1hcnNoYWxsZWRGUFJzIDwgd2FzbUNDLm1fZnByQXJncy5zaXplKCkp
CisgICAgICAgICAgICAgICAgICAgIGZwclJlZyA9IHdhc21DQy5tX2ZwckFyZ3NbbWFyc2hhbGxl
ZEZQUnNdLmZwcigpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAvLyBXZSd2ZSBhbHJlYWR5IHNwaWxsZWQgYWxsIGFyZ3VtZW50cywgdGhlc2UgcmVnaXN0ZXJz
IGFyZSBhdmFpbGFibGUgYXMgc2NyYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgZnByUmVnID0g
RlBSSW5mbzo6YXJndW1lbnRGUFIwOworICAgICAgICAgICAgICAgICAgICBqaXQubG9hZERvdWJs
ZShKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGZyT2Zmc2V0KSwgZnBy
UmVnKTsKKyAgICAgICAgICAgICAgICAgICAgZnJPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaml0LnB1cmlmeU5hTihmcHJSZWcp
OworICAgICAgICAgICAgICAgIGppdC5tb3ZlRG91YmxlVG82NChmcHJSZWcsIHNjcmF0Y2gpOwor
ICAgICAgICAgICAgICAgIG1hdGVyaWFsaXplRG91YmxlRW5jb2RlT2Zmc2V0KGRvdWJsZUVuY29k
ZU9mZnNldEdQUlJlZyk7CisgICAgICAgICAgICAgICAgaml0LmFkZDY0KGRvdWJsZUVuY29kZU9m
ZnNldEdQUlJlZywgc2NyYXRjaCk7CisgICAgICAgICAgICAgICAgaml0LnN0b3JlNjQoc2NyYXRj
aCwgY2FsbGVlRnJhbWUud2l0aE9mZnNldChjYWxsZWVGcmFtZU9mZnNldCkpOworICAgICAgICAg
ICAgICAgIGNhbGxlZUZyYW1lT2Zmc2V0ICs9IHNpemVvZihSZWdpc3Rlcik7CisgICAgICAgICAg
ICAgICAgKyttYXJzaGFsbGVkRlBSczsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCBi
ODEwMTg5Li43NDhlNTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtNTYsMTAgKzU2LDYgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0
YXRlKiBleGVjKQogICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gd2Fz
bUZ1bmN0aW9uLT5zaWduYXR1cmVJbmRleCgpOwogICAgIGNvbnN0IFdhc206OlNpZ25hdHVyZSog
c2lnbmF0dXJlID0gV2FzbTo6U2lnbmF0dXJlSW5mb3JtYXRpb246OmdldCgmdm0sIHNpZ25hdHVy
ZUluZGV4KTsKIAotICAgIC8vIEZJWE1FIGlzIHRoaXMgdGhlIHJpZ2h0IGJlaGF2aW9yPyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0ODc2Ci0gICAgaWYgKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSAhPSBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYywgZGVmYXVsdFNvdXJjZUFwcGVuZGVyKSkpOwot
CiAgICAgewogICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgZGlzYWxsb3dlZCBJNjQgdXNl
LgogCkBAIC03OCwxMCArNzQsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICAvLyBGSVhNRSBpcyB0aGlzIGJveGluZyBjb3JyZWN0PyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0ODc2CiAgICAgVmVjdG9yPEpTVmFsdWU+IGJv
eGVkQXJnczsKICAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBzaWdu
YXR1cmUtPmFyZ3VtZW50Q291bnQoKTsgKythcmdJbmRleCkgewotICAgICAgICBKU1ZhbHVlIGFy
ZyA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGFyZ0luZGV4KTsKKyAgICAgICAgSlNWYWx1ZSBh
cmcgPSBleGVjLT5hcmd1bWVudChhcmdJbmRleCk7CiAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJl
LT5hcmd1bWVudChhcmdJbmRleCkpIHsKICAgICAgICAgY2FzZSBXYXNtOjpJMzI6CiAgICAgICAg
ICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUoYXJnLnRvSW50MzIoZXhlYykpOwpAQCAtMTI3LDcg
KzEyMiw2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3Nl
bWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICB2bS50b3BKU1dlYkFzc2VtYmx5SW5z
dGFuY2UgPSBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNlOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAKLSAgICAvLyBGSVhNRSBpcyB0aGlzIGNvcnJlY3Q/IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ4NzYKICAgICBzd2l0Y2ggKHNpZ25h
dHVyZS0+cmV0dXJuVHlwZSgpKSB7CiAgICAgY2FzZSBXYXNtOjpWb2lkOgogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotLSAKMi45LjMKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>