<?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>179343</bug_id>
          
          <creation_ts>2017-11-06 13:41:41 -0800</creation_ts>
          <short_desc>WebAssembly: improve stack trace</short_desc>
          <delta_ts>2017-12-05 13:39:48 -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>WebAssembly</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>
          
          <blocked>179106</blocked>
    
    <blocked>180273</blocked>
    
    <blocked>180441</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1368781</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-11-06 13:41:41 -0800</bug_when>
    <thetext>Our stack traces aren&apos;t great because:

  - They don&apos;t include a way to figure ouch which module the function is in
  - They treat stubs the same as user functions
  - They don&apos;t honor module name from name section, if present (which right now is never the case because toolchains don&apos;t generate the name section)

This makes it annoying to debug code.

Further, the proposed design has slightly changed since we originally implemented this:
  https://github.com/WebAssembly/design/blob/master/Web.md#developer-facing-display-conventions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368785</commentid>
    <comment_count>1</comment_count>
      <attachid>326154</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-11-06 13:48:21 -0800</bug_when>
    <thetext>Created attachment 326154
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368789</commentid>
    <comment_count>2</comment_count>
      <attachid>326157</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-11-06 14:06:20 -0800</bug_when>
    <thetext>Created attachment 326157
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368791</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-11-06 14:08:08 -0800</bug_when>
    <thetext>Attachment 326157 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/WasmNameSection.h:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368815</commentid>
    <comment_count>4</comment_count>
      <attachid>326157</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-06 15:53:22 -0800</bug_when>
    <thetext>Comment on attachment 326157
patch

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

r=me

&gt; Source/JavaScriptCore/wasm/WasmModuleInformation.cpp:47
&gt; +    , hash(sha1(source))

should we do this lazily?

&gt; Source/JavaScriptCore/wasm/WasmNameSection.h:40
&gt; +        for (size_t i = 0; i != hash.length(); ++i)

nit: we usually use &lt; instead of != here

&gt; Source/JavaScriptCore/wasm/WasmNameSection.h:43
&gt; +    NameSection() = delete;

Isn&apos;t this implicit in you defining the above constructor?

&gt; Source/JavaScriptCore/wasm/WasmNameSection.h:44
&gt; +    NameSection(const NameSection&amp;) = delete;

WTF_MAKE_NONCOPYABLE?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376596</commentid>
    <comment_count>5</comment_count>
      <attachid>328047</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-11-30 16:06:50 -0800</bug_when>
    <thetext>Created attachment 328047
patch

(In reply to Saam Barati from comment #4)
&gt; Comment on attachment 326157 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=326157&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/wasm/WasmModuleInformation.cpp:47
&gt; &gt; +    , hash(sha1(source))
&gt; 
&gt; should we do this lazily?

Nah, I don&apos;t think it&apos;s worth it. I think we&apos;ll eventually want to drop sections which aren&apos;t referenced, so hashing won&apos;t be possible that late and we&apos;ll have to un-lazy.

&gt; &gt; Source/JavaScriptCore/wasm/WasmNameSection.h:40
&gt; &gt; +        for (size_t i = 0; i != hash.length(); ++i)
&gt; 
&gt; nit: we usually use &lt; instead of != here

Done.

&gt; &gt; Source/JavaScriptCore/wasm/WasmNameSection.h:43
&gt; &gt; +    NameSection() = delete;
&gt; 
&gt; Isn&apos;t this implicit in you defining the above constructor?

Yeah, I was just being explicit, but I can remove.

&gt; &gt; Source/JavaScriptCore/wasm/WasmNameSection.h:44
&gt; &gt; +    NameSection(const NameSection&amp;) = delete;
&gt; 
&gt; WTF_MAKE_NONCOPYABLE?

I&apos;m not a fan of macros that replace a clear one-line thing :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376673</commentid>
    <comment_count>6</comment_count>
      <attachid>326157</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-30 18:11:53 -0800</bug_when>
    <thetext>Comment on attachment 326157
patch

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

&gt;&gt;&gt; Source/JavaScriptCore/wasm/WasmNameSection.h:44
&gt;&gt;&gt; +    NameSection(const NameSection&amp;) = delete;
&gt;&gt; 
&gt;&gt; WTF_MAKE_NONCOPYABLE?
&gt; 
&gt; I&apos;m not a fan of macros that replace a clear one-line thing :-)

Except the macro is doing more than what you&apos;re doing by hand. You aren&apos;t deleting the copy assignment operator. So I think you might not actually getting the guarantee I believe you want.

Also, regarding your motivation for skipping the macro: I disagree. The macro gives a name to this action. It&apos;s much more understandable because the name is obvious. As a reader of this code, even if you didn&apos;t understand C++ that well, the name of the macro describes what&apos;s going on. This syntax won&apos;t make sense to somebody who doesn&apos;t have at least decent understanding of C++.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376674</commentid>
    <comment_count>7</comment_count>
      <attachid>326157</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-30 18:17:03 -0800</bug_when>
    <thetext>Comment on attachment 326157
patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/wasm/WasmNameSection.h:44
&gt;&gt;&gt;&gt; +    NameSection(const NameSection&amp;) = delete;
&gt;&gt;&gt; 
&gt;&gt;&gt; WTF_MAKE_NONCOPYABLE?
&gt;&gt; 
&gt;&gt; I&apos;m not a fan of macros that replace a clear one-line thing :-)
&gt; 
&gt; Except the macro is doing more than what you&apos;re doing by hand. You aren&apos;t deleting the copy assignment operator. So I think you might not actually getting the guarantee I believe you want.
&gt; 
&gt; Also, regarding your motivation for skipping the macro: I disagree. The macro gives a name to this action. It&apos;s much more understandable because the name is obvious. As a reader of this code, even if you didn&apos;t understand C++ that well, the name of the macro describes what&apos;s going on. This syntax won&apos;t make sense to somebody who doesn&apos;t have at least decent understanding of C++.

I guess you could just want to prevent copy construction but not copy assignment, but that seems weird.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376676</commentid>
    <comment_count>8</comment_count>
      <attachid>328047</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-30 18:41:13 -0800</bug_when>
    <thetext>Comment on attachment 328047
patch

Clearing flags on attachment: 328047

Committed r225378: &lt;https://trac.webkit.org/changeset/225378&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376677</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-30 18:41:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376679</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-30 18:43:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/35788939&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376689</commentid>
    <comment_count>11</comment_count>
      <attachid>328047</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-11-30 19:11:28 -0800</bug_when>
    <thetext>Comment on attachment 328047
patch

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

&gt; Source/JavaScriptCore/wasm/WasmIndexOrName.cpp:49
&gt; +        return String(&quot;wasm-stub&quot;);

You should use `ASCIILiteral(&quot;wasm-stub&quot;)` in this case to prevent a copy:
https://trac.webkit.org/wiki/EfficientStrings

&gt; Source/JavaScriptCore/wasm/WasmIndexOrName.cpp:53
&gt; +        return makeString(moduleName, &quot;.wasm-function[&quot;, String::number(ion.m_indexName.index &amp; ~IndexOrName::indexTag), &quot;]&quot;);
&gt; +    return makeString(moduleName, &quot;.wasm-function[&quot;, String(ion.m_indexName.name-&gt;data(), ion.m_indexName.name-&gt;size()), &quot;]&quot;);

Nit: You could used a char &apos;]&apos; at the end instead of a &quot;]&quot; (may avoid a strlen if the compiler doesn&apos;t optimize it out).

&gt; Source/JavaScriptCore/wasm/WasmIndexOrName.h:46
&gt; +    NameSection* nameSection() const { return m_nameSection ? m_nameSection.get() : nullptr; }

Style: This should just be `return m_nameSection.get()`, the ternary is unnecessary.

&gt; Source/JavaScriptCore/wasm/WasmNameSection.h:47
&gt; +        return std::make_pair(functionIndexSpace &lt; functionNames.size() ? &amp;functionNames[functionIndexSpace] : nullptr, RefPtr&lt;NameSection&gt;(this));

Style: `RefPtr&lt;NameSection&gt;(this)` is typically written as `makeRefPtr(this)`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377879</commentid>
    <comment_count>12</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-12-04 13:48:08 -0800</bug_when>
    <thetext>This looks to be a 1-2% WasmBench regression on some Macs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377881</commentid>
    <comment_count>13</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-12-04 13:48:26 -0800</bug_when>
    <thetext>My guess is SHA1 is hurting compile times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378334</commentid>
    <comment_count>14</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-12-05 13:39:48 -0800</bug_when>
    <thetext>I&apos;d measured this to be neutral, and am surprised it would regress. I can&apos;t repro, tried a few things, so here&apos;s a speculative disable:
  https://bugs.webkit.org/show_bug.cgi?id=180441</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326154</attachid>
            <date>2017-11-06 13:48:21 -0800</date>
            <delta_ts>2017-11-06 14:06:20 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-improve-stack-trace.patch</filename>
            <type>text/plain</type>
            <size>19273</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA0ZDg3NTc4YTU3OGU5ZmIxNzlkNzNhOWY4YjZjMTI3OGU0YmVhYzU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBNb24sIDYgTm92IDIwMTcgMTQ6NDc6NTMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBXZWJBc3Nl
bWJseTogaW1wcm92ZSBzdGFjayB0cmFjZQoKLS0tCiBKU1Rlc3RzL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI3ICsrKysrKysrKysrKysrKysrCiBKU1Rlc3Rz
L3dhc20vYXNzZXJ0LmpzICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKysrCiBK
U1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvbmFtZVNlY3Rpb24uanMgICAgICAgICB8IDEyICsr
KystLS0tCiBKU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvc3RhY2stb3ZlcmZsb3cuanMgICAg
ICB8IDEyICsrKystLS0tCiBKU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvc3RhY2stdHJhY2Uu
anMgICAgICAgICB8IDI0ICsrKysrKystLS0tLS0tLQogLi4uL3RyYXAtYWZ0ZXItY3Jvc3MtaW5z
dGFuY2UtY2FsbC5qcyAgICAgICAgICAgICAgfCAgMiArLQogSlNUZXN0cy93YXNtL2Z1bmN0aW9u
LXRlc3RzL3RyYXAtbG9hZC0yLmpzICAgICAgICAgfCAgMiArLQogSlNUZXN0cy93YXNtL2Z1bmN0
aW9uLXRlc3RzL3RyYXAtbG9hZC5qcyAgICAgICAgICAgfCAgMiArLQogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgfCAzNCArKysrKysrKysrKysrKysr
KysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNw
cCB8ICA1ICstLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3Bw
ICAgICAgIHwgMTAgKystLS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluZGV4
T3JOYW1lLmNwcCAgICAgfCAxMSArKystLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtSW5kZXhPck5hbWUuaCAgICAgICB8ICAxICsKIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Nb2R1bGVJbmZvcm1hdGlvbi5jcHAgIHwgMTMgKysrKysrKystCiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaCB8ICAxICsKIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21OYW1lU2VjdGlvbi5oICAgICAgIHwgMTIgKysrKysrKy0KIC4uLi9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21OYW1lU2VjdGlvblBhcnNlci5jcHAgIHwgIDIgKy0KIDE3
IGZpbGVzIGNoYW5nZWQsIDEyOCBpbnNlcnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM5MjE3
OTAuLjVhNWNkODkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTctMTEtMDYgIEpGIEJhc3RpZW4gIDxqZmJh
c3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5OiBpbXByb3ZlIHN0YWNrIHRy
YWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkz
NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgdGhlIHRlc3RzIHRvIGZvbGxvdyB0aGUgbmV3IGZvcm1hdC4gTm90YWJseSwgU0hBMSBtb2R1
bGUKKyAgICAgICAgaGFzaCBpcyBub3cgaW5jbHVkZWQgaW4gdHJhY2VzLCBhbmQgc3R1YnMgYXJl
IHByb3Blcmx5IGlkZW50aWZpZWQuCisKKyAgICAgICAgKiB3YXNtL2Fzc2VydC5qczogQWRkIGFu
IGFzc2VydGlvbiB3aGljaCBtYXRjaGVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCisgICAgICAgICog
d2FzbS9mdW5jdGlvbi10ZXN0cy9uYW1lU2VjdGlvbi5qczoKKyAgICAgICAgKiB3YXNtL2Z1bmN0
aW9uLXRlc3RzL3N0YWNrLW92ZXJmbG93LmpzOgorICAgICAgICAoaW1wb3J0LkJ1aWxkZXIuZnJv
bS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5pbXBvcnQuYXMuYXNzZXJ0LmZyb20uc3RyaW5nX2FwcGVh
cmVkX2hlcmUuYXNzZXJ0T3ZlcmZsb3dzKToKKyAgICAgICAgKGFzc2VydE92ZXJmbG93cy5hc3Nl
cnRUaHJvd3Mud2FzbS4xKToKKyAgICAgICAgKGFzc2VydE92ZXJmbG93cy5hc3NlcnRUaHJvd3Mu
d2FzbS4wKToKKyAgICAgICAgKGFzc2VydE92ZXJmbG93cy5hc3NlcnRUaHJvd3MpOgorICAgICAg
ICAoYXNzZXJ0T3ZlcmZsb3dzKToKKyAgICAgICAgKiB3YXNtL2Z1bmN0aW9uLXRlc3RzL3N0YWNr
LXRyYWNlLmpzOgorICAgICAgICAoaW1wb3J0LkJ1aWxkZXIuZnJvbS5zdHJpbmdfYXBwZWFyZWRf
aGVyZS5hc3NlcnQpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vZnVuY3Rpb24tdGVzdHMvdHJh
cC1hZnRlci1jcm9zcy1pbnN0YW5jZS1jYWxsLmpzOgorICAgICAgICAod2FzbUZyYW1lQ291bnRG
cm9tRXJyb3IpOgorICAgICAgICAqIHdhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLTIuanM6
CisgICAgICAgICh3YXNtRnJhbWVDb3VudEZyb21FcnJvcik6CisgICAgICAgICogd2FzbS9mdW5j
dGlvbi10ZXN0cy90cmFwLWxvYWQuanM6CisgICAgICAgICh3YXNtRnJhbWVDb3VudEZyb21FcnJv
cik6CisKIDIwMTctMTEtMDUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CiAKICAgICAgICAgSklUIGNhbGwgaW5saW5lIGNhY2hlcyBzaG91bGQgY2FjaGUgY2FsbHMgdG8g
b2JqZWN0cyB3aXRoIGdldENhbGxEYXRhL2dldENvbnN0cnVjdERhdGEgdHJhcHMKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvd2FzbS9hc3NlcnQuanMgYi9KU1Rlc3RzL3dhc20vYXNzZXJ0LmpzCmluZGV4
IDUyYjM5YmYuLjk3OWUyMmQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9hc3NlcnQuanMKKysr
IGIvSlNUZXN0cy93YXNtL2Fzc2VydC5qcwpAQCAtODksNiArODksMTMgQEAgZXhwb3J0IGNvbnN0
IGVxID0gKGxocywgcmhzLCBtc2cpID0+IHsKICAgICB9CiB9OwogCitleHBvcnQgY29uc3QgbWF0
Y2hlcyA9IChsaHMsIHJocywgbXNnKSA9PiB7CisgICAgaWYgKHR5cGVvZiBsaHMgIT09ICJzdHJp
bmciIHx8ICEocmhzIGluc3RhbmNlb2YgUmVnRXhwKSkKKyAgICAgICAgX2ZhaWwoYEV4cGVjdGVk
IHN0cmluZyBhbmQgcmVnZXggb2JqZWN0LCBnb3QgJHt0eXBlb2YgbGhzfSBhbmQgJHt0eXBlb2Yg
cmhzfWAsIG1zZyk7CisgICAgaWYgKCFyaHMudGVzdChsaHMpKQorICAgICAgICBfZmFpbChgIiR7
bXNnfSIgZG9lcyBub3QgbWF0Y2ggJHtyaHN9YCwgbXNnKTsKK307CisKIGNvbnN0IGNhbm9uaWNh
bGl6ZUkzMiA9IChudW1iZXIpID0+IHsKICAgICBpZiAoTWF0aC5yb3VuZChudW1iZXIpID09PSBu
dW1iZXIgJiYgbnVtYmVyID49IDIgKiogMzEpCiAgICAgICAgIG51bWJlciA9IG51bWJlciAtIDIg
KiogMzI7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvbmFtZVNlY3Rp
b24uanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvbmFtZVNlY3Rpb24uanMKaW5kZXgg
YmE1NDE5ZS4uZjRkMjhhOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3Rz
L25hbWVTZWN0aW9uLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9uYW1lU2Vj
dGlvbi5qcwpAQCAtNjQsOSArNjQsOSBAQCBhc3NlcnQuZXEocmVzdWx0LCAxICsgNDIpOwogYXNz
ZXJ0LnRydXRoeShzdGFja3RyYWNlKTsKIHN0YWNrdHJhY2UgPSBzdGFja3RyYWNlLnNwbGl0KCJc
biIpOwogYXNzZXJ0LmZhbHN5KHN0YWNrdHJhY2VbMF0uaW5kZXhPZigiX3NpbGx5IikgPT09IC0x
KTsKLWFzc2VydC5lcShzdGFja3RyYWNlWzFdLCAid2FzbSBmdW5jdGlvbkBbd2FzbSBjb2RlXSIp
OyAvLyB0aGUgd2FzbS0+anMgc3R1YgotYXNzZXJ0LmVxKHN0YWNrdHJhY2VbMl0sICJ3YXNtIGZ1
bmN0aW9uOiBfZWdnc0Bbd2FzbSBjb2RlXSIpOwotYXNzZXJ0LmVxKHN0YWNrdHJhY2VbM10sICJ3
YXNtIGZ1bmN0aW9uOiBfYmFjb25AW3dhc20gY29kZV0iKTsKLWFzc2VydC5lcShzdGFja3RyYWNl
WzRdLCAid2FzbSBmdW5jdGlvbjogX3NwYW1AW3dhc20gY29kZV0iKTsKLWFzc2VydC5lcShzdGFj
a3RyYWNlWzVdLCAid2FzbSBmdW5jdGlvbjogX3BhcnJvdEBbd2FzbSBjb2RlXSIpOwotYXNzZXJ0
LmVxKHN0YWNrdHJhY2VbNl0sICJ3YXNtIGZ1bmN0aW9uQFt3YXNtIGNvZGVdIik7IC8vIHdhc20g
ZW50cnkKK2Fzc2VydC5lcShzdGFja3RyYWNlWzFdLCAid2FzbS1zdHViQFt3YXNtIGNvZGVdIik7
IC8vIHRoZSB3YXNtLT5qcyBzdHViCithc3NlcnQuZXEoc3RhY2t0cmFjZVsyXSwgIkM3NEIzNDFD
ODYyRjgzMUY0Rjc1MDY4REY0RTQyQUIzNkZCMzQ0NkYud2FzbS1mdW5jdGlvbltfZWdnc11AW3dh
c20gY29kZV0iKTsKK2Fzc2VydC5lcShzdGFja3RyYWNlWzNdLCAiQzc0QjM0MUM4NjJGODMxRjRG
NzUwNjhERjRFNDJBQjM2RkIzNDQ2Ri53YXNtLWZ1bmN0aW9uW19iYWNvbl1AW3dhc20gY29kZV0i
KTsKK2Fzc2VydC5lcShzdGFja3RyYWNlWzRdLCAiQzc0QjM0MUM4NjJGODMxRjRGNzUwNjhERjRF
NDJBQjM2RkIzNDQ2Ri53YXNtLWZ1bmN0aW9uW19zcGFtXUBbd2FzbSBjb2RlXSIpOworYXNzZXJ0
LmVxKHN0YWNrdHJhY2VbNV0sICJDNzRCMzQxQzg2MkY4MzFGNEY3NTA2OERGNEU0MkFCMzZGQjM0
NDZGLndhc20tZnVuY3Rpb25bX3BhcnJvdF1AW3dhc20gY29kZV0iKTsKK2Fzc2VydC5lcShzdGFj
a3RyYWNlWzZdLCAid2FzbS1zdHViQFt3YXNtIGNvZGVdIik7IC8vIHdhc20gZW50cnkKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9zdGFjay1vdmVyZmxvdy5qcyBiL0pT
VGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9zdGFjay1vdmVyZmxvdy5qcwppbmRleCAzYjQzOWJk
Li4yOTI1Zjk3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvc3RhY2st
b3ZlcmZsb3cuanMKKysrIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3N0YWNrLW92ZXJm
bG93LmpzCkBAIC00Nyw3ICs0Nyw3IEBAIGltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3Nl
cnQuanMnCiAgICAgICAgIGFzc2VydC50cnV0aHkoc3RhY2subGVuZ3RoID4gNTApOwogICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDUwOyArK2kpIHsKICAgICAgICAgICAgIGxldCBpdGVtID0g
c3RhY2tbc3RhY2subGVuZ3RoIC0gaSAtIDFdOwotICAgICAgICAgICAgYXNzZXJ0LmVxKGl0ZW0s
ICJ3YXNtIGZ1bmN0aW9uOiAwQFt3YXNtIGNvZGVdIik7CisgICAgICAgICAgICBhc3NlcnQubWF0
Y2hlcyhpdGVtLCAvW0EtRjAtOV17NDB9XC53YXNtLWZ1bmN0aW9uXFswXF1AXFt3YXNtIGNvZGVc
XS8pOwogICAgICAgICB9IAogICAgIH0KICAgICBhc3NlcnRPdmVyZmxvd3MoaTEpOwpAQCAtMTI2
LDE3ICsxMjYsMTcgQEAgaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcycKIAog
ICAgICAgICBzdGFjayA9IHN0YWNrLnNwbGl0KCJcbiIpOwogICAgICAgICBhc3NlcnQudHJ1dGh5
KHN0YWNrLmxlbmd0aCA+IDUwKTsKLSAgICAgICAgY29uc3Qgb25lU3RyaW5nID0gIndhc20gZnVu
Y3Rpb246IDFAW3dhc20gY29kZV0iOwotICAgICAgICBjb25zdCB6ZXJvU3RyaW5nID0gIndhc20g
ZnVuY3Rpb246IDBAW3dhc20gY29kZV0iOwotICAgICAgICBsZXQgY3VycmVudEluZGV4ID0gc3Rh
Y2tbc3RhY2subGVuZ3RoIC0gMV0gPT09IG9uZVN0cmluZyA/IDEgOiAwOworICAgICAgICBjb25z
dCBvbmVSZSA9IC9bQS1GMC05XXs0MH1cLndhc20tZnVuY3Rpb25cWzFcXUBcW3dhc20gY29kZVxd
LzsKKyAgICAgICAgY29uc3QgemVyb1JlID0gL1tBLUYwLTldezQwfVwud2FzbS1mdW5jdGlvblxb
MFxdQFxbd2FzbSBjb2RlXF0vOworICAgICAgICBsZXQgY3VycmVudEluZGV4ID0gb25lUmUudGVz
dChzdGFja1tzdGFjay5sZW5ndGggLSAxXSkgPyAxIDogMDsKICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCA1MDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgaXRlbSA9IHN0YWNrW3N0YWNrLmxl
bmd0aCAtIDEgLSBpXTsKICAgICAgICAgICAgIGlmIChjdXJyZW50SW5kZXggPT09IDEpIHsKLSAg
ICAgICAgICAgICAgICBhc3NlcnQuZXEoaXRlbSwgb25lU3RyaW5nKTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnQubWF0Y2hlcyhpdGVtLCBvbmVSZSk7CiAgICAgICAgICAgICAgICAgY3VycmVudElu
ZGV4ID0gMDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmVx
KGN1cnJlbnRJbmRleCwgMCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxKGl0ZW0sIHplcm9T
dHJpbmcpOworICAgICAgICAgICAgICAgIGFzc2VydC5tYXRjaGVzKGl0ZW0sIHplcm9SZSk7CiAg
ICAgICAgICAgICAgICAgY3VycmVudEluZGV4ID0gMTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3N0YWNrLXRyYWNlLmpz
IGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3N0YWNrLXRyYWNlLmpzCmluZGV4IGQ3MGIz
ZWEuLjIxNDdhMzcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9zdGFj
ay10cmFjZS5qcworKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvc3RhY2stdHJhY2Uu
anMKQEAgLTEsOSArMSw1IEBACiBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJwot
Ci1mdW5jdGlvbiBhc3NlcnQoYikgewotICAgIGlmICghYikKLSAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJCYWQiKTsKLX0KK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnCiAK
IGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKICAgICAuVHlwZSgpLkVuZCgpCkBAIC00
MCwxOCArMzYsMTggQEAgbGV0IGltcCA9ICgpID0+IHsKIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2Vi
QXNzZW1ibHkoKS5nZXQoKTsKIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUo
YmluKTsKIGxldCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHtp
bXA6IHtmOiBpbXB9fSk7Ci1hc3NlcnQoIXN0YWNrdHJhY2UpOworYXNzZXJ0LmZhbHN5KHN0YWNr
dHJhY2UpOwogZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CiAgICAgaW5zdGFuY2Uu
ZXhwb3J0cy5lbnRyeSgpOwotICAgIGFzc2VydChzdGFja3RyYWNlKTsKKyAgICBhc3NlcnQudHJ1
dGh5KHN0YWNrdHJhY2UpOwogICAgIHN0YWNrdHJhY2UgPSBzdGFja3RyYWNlLnNwbGl0KCJcbiIp
OwotICAgIGFzc2VydChzdGFja3RyYWNlWzBdLmluZGV4T2YoImltcCIpICE9PSAtMSk7IC8vIHRo
ZSBhcnJvdyBmdW5jdGlvbiBpbXBvcnQgbmFtZWQgImltcCIuCi0gICAgYXNzZXJ0KHN0YWNrdHJh
Y2VbMV0gPT09ICJ3YXNtIGZ1bmN0aW9uQFt3YXNtIGNvZGVdIik7IC8vIHRoZSB3YXNtLT5qcyBz
dHViCi0gICAgYXNzZXJ0KHN0YWNrdHJhY2VbMl0gPT09ICJ3YXNtIGZ1bmN0aW9uOiA0QFt3YXNt
IGNvZGVdIik7Ci0gICAgYXNzZXJ0KHN0YWNrdHJhY2VbM10gPT09ICJ3YXNtIGZ1bmN0aW9uOiAy
QFt3YXNtIGNvZGVdIik7Ci0gICAgYXNzZXJ0KHN0YWNrdHJhY2VbNF0gPT09ICJ3YXNtIGZ1bmN0
aW9uOiAzQFt3YXNtIGNvZGVdIik7Ci0gICAgYXNzZXJ0KHN0YWNrdHJhY2VbNV0gPT09ICJ3YXNt
IGZ1bmN0aW9uOiAxQFt3YXNtIGNvZGVdIik7Ci0gICAgYXNzZXJ0KHN0YWNrdHJhY2VbNl0gPT09
ICJ3YXNtIGZ1bmN0aW9uQFt3YXNtIGNvZGVdIik7IC8vIHdhc20gZW50cnkKKyAgICBhc3NlcnQu
dHJ1dGh5KHN0YWNrdHJhY2VbMF0uaW5kZXhPZigiaW1wIikgIT09IC0xKTsgLy8gdGhlIGFycm93
IGZ1bmN0aW9uIGltcG9ydCBuYW1lZCAiaW1wIi4KKyAgICBhc3NlcnQuZXEoc3RhY2t0cmFjZVsx
XSwgIndhc20tc3R1YkBbd2FzbSBjb2RlXSIpOyAvLyB0aGUgd2FzbS0+anMgc3R1YgorICAgIGFz
c2VydC5lcShzdGFja3RyYWNlWzJdLCAiMkM3N0U5N0Q3NzUwNjNBODY4RUY0NDM3REEyNjAyNDVB
RkE5NDU4My53YXNtLWZ1bmN0aW9uWzRdQFt3YXNtIGNvZGVdIik7CisgICAgYXNzZXJ0LmVxKHN0
YWNrdHJhY2VbM10sICIyQzc3RTk3RDc3NTA2M0E4NjhFRjQ0MzdEQTI2MDI0NUFGQTk0NTgzLndh
c20tZnVuY3Rpb25bMl1AW3dhc20gY29kZV0iKTsKKyAgICBhc3NlcnQuZXEoc3RhY2t0cmFjZVs0
XSwgIjJDNzdFOTdENzc1MDYzQTg2OEVGNDQzN0RBMjYwMjQ1QUZBOTQ1ODMud2FzbS1mdW5jdGlv
blszXUBbd2FzbSBjb2RlXSIpOworICAgIGFzc2VydC5lcShzdGFja3RyYWNlWzVdLCAiMkM3N0U5
N0Q3NzUwNjNBODY4RUY0NDM3REEyNjAyNDVBRkE5NDU4My53YXNtLWZ1bmN0aW9uWzFdQFt3YXNt
IGNvZGVdIik7CisgICAgYXNzZXJ0LmVxKHN0YWNrdHJhY2VbNl0sICJ3YXNtLXN0dWJAW3dhc20g
Y29kZV0iKTsgLy8gd2FzbSBlbnRyeQogCiAgICAgc3RhY2t0cmFjZSA9IG51bGw7CiB9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1hZnRlci1jcm9zcy1pbnN0
YW5jZS1jYWxsLmpzIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtYWZ0ZXItY3Jv
c3MtaW5zdGFuY2UtY2FsbC5qcwppbmRleCAwZDg2OTQzLi4xOTYzMzQ1IDEwMDY0NAotLS0gYS9K
U1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1hZnRlci1jcm9zcy1pbnN0YW5jZS1jYWxs
LmpzCisrKyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWFmdGVyLWNyb3NzLWlu
c3RhbmNlLWNhbGwuanMKQEAgLTUyLDcgKzUyLDcgQEAgbGV0IGZvbzIgPSBuZXcgV2ViQXNzZW1i
bHkuSW5zdGFuY2UobW9kdWxlLCBpbXBvcnRPYmplY3QpLmV4cG9ydHMuZm9vOwogCiAKIGZ1bmN0
aW9uIHdhc21GcmFtZUNvdW50RnJvbUVycm9yKGUpIHsKLSAgICBsZXQgc3RhY2tGcmFtZXMgPSBl
LnN0YWNrLnNwbGl0KCJcbiIpLmZpbHRlcigocykgPT4gcy5pbmRleE9mKCJ3YXNtIGZ1bmN0aW9u
IikgIT09IC0xKTsKKyAgICBsZXQgc3RhY2tGcmFtZXMgPSBlLnN0YWNrLnNwbGl0KCJcbiIpLmZp
bHRlcigocykgPT4gcy5pbmRleE9mKCJ3YXNtLSIpICE9PSAtMSk7CiAgICAgcmV0dXJuIHN0YWNr
RnJhbWVzLmxlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRl
c3RzL3RyYXAtbG9hZC0yLmpzIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9h
ZC0yLmpzCmluZGV4IGY5OWIxY2EuLmE2YTg5NzMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9m
dW5jdGlvbi10ZXN0cy90cmFwLWxvYWQtMi5qcworKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24t
dGVzdHMvdHJhcC1sb2FkLTIuanMKQEAgLTIwLDcgKzIwLDcgQEAgY29uc3QgYnVpbGRlciA9IChu
ZXcgQnVpbGRlcigpKQogICAgIC5FbmQoKTsKIAogZnVuY3Rpb24gd2FzbUZyYW1lQ291bnRGcm9t
RXJyb3IoZSkgewotICAgIGxldCBzdGFja0ZyYW1lcyA9IGUuc3RhY2suc3BsaXQoIlxuIikuZmls
dGVyKChzKSA9PiBzLmluZGV4T2YoIndhc20gZnVuY3Rpb24iKSAhPT0gLTEpOworICAgIGxldCBz
dGFja0ZyYW1lcyA9IGUuc3RhY2suc3BsaXQoIlxuIikuZmlsdGVyKChzKSA9PiBzLmluZGV4T2Yo
Indhc20tIikgIT09IC0xKTsKICAgICByZXR1cm4gc3RhY2tGcmFtZXMubGVuZ3RoOwogfQogCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLmpzIGIvSlNU
ZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC5qcwppbmRleCBkOThhNTY3Li43Y2Yw
ZTk4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLmpz
CisrKyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWxvYWQuanMKQEAgLTI0LDcg
KzI0LDcgQEAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pOwogY29u
c3QgZm9vID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2E6IHtiOiBuZXcgV2Vi
QXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiBudW1QYWdlc30pfX0pLmV4cG9ydHMuZm9vOwogCiBm
dW5jdGlvbiB3YXNtRnJhbWVDb3VudEZyb21FcnJvcihlKSB7Ci0gICAgbGV0IHN0YWNrRnJhbWVz
ID0gZS5zdGFjay5zcGxpdCgiXG4iKS5maWx0ZXIoKHMpID0+IHMuaW5kZXhPZigid2FzbSBmdW5j
dGlvbiIpICE9PSAtMSk7CisgICAgbGV0IHN0YWNrRnJhbWVzID0gZS5zdGFjay5zcGxpdCgiXG4i
KS5maWx0ZXIoKHMpID0+IHMuaW5kZXhPZigid2FzbS0iKSAhPT0gLTEpOwogICAgIHJldHVybiBz
dGFja0ZyYW1lcy5sZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDNhMzVm
NmUuLjkyMDdjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisy
MDE3LTExLTA2ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWJBc3NlbWJseTogaW1wcm92ZSBzdGFjayB0cmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3RhY2sgdHJhY2VzIG5vdyBpbmNsdWRlOgorCisgICAg
ICAgICAgLSBNb2R1bGUgbmFtZSwgaWYgcHJvdmlkZWQgYnkgdGhlIG5hbWUgc2VjdGlvbi4KKyAg
ICAgICAgICAtIE1vZHVsZSBTSEExIGhhc2ggaWYgbm8gbmFtZSB3YXMgcHJvdmlkZWQKKyAgICAg
ICAgICAtIFN0dWIgaWRlbnRpZmljYXRpb24sIHRvIGRpZmZlcmVudGlhdGUgZnJvbSB1c2VyIGNv
ZGUKKyAgICAgICAgICAtIFNsaWdodGx5IGRpZmZlcmVudCBuYW1pbmcgdG8gbWF0Y2ggZGVzaWdu
IGZyb206CisgICAgICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9kZXNp
Z24vYmxvYi9tYXN0ZXIvV2ViLm1kI2RldmVsb3Blci1mYWNpbmctZGlzcGxheS1jb252ZW50aW9u
cworCisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6ZnVuY3Rpb25OYW1lIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL1N0YWNrRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpmdW5jdGlv
bk5hbWUgY29uc3QpOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiB3YXNtL1dhc21JbmRleE9yTmFtZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206
OkluZGV4T3JOYW1lOjpJbmRleE9yTmFtZSk6CisgICAgICAgIChKU0M6Oldhc206Om1ha2VTdHJp
bmcpOgorICAgICAgICAqIHdhc20vV2FzbUluZGV4T3JOYW1lLmg6CisgICAgICAgIChKU0M6Oldh
c206OkluZGV4T3JOYW1lOjpuYW1lU2VjdGlvbiBjb25zdCk6CisgICAgICAgICogd2FzbS9XYXNt
TW9kdWxlSW5mb3JtYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVJbmZvcm1h
dGlvbjo6TW9kdWxlSW5mb3JtYXRpb24pOgorICAgICAgICAqIHdhc20vV2FzbU1vZHVsZUluZm9y
bWF0aW9uLmg6CisgICAgICAgICogd2FzbS9XYXNtTmFtZVNlY3Rpb24uaDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6TmFtZVNlY3Rpb246Ok5hbWVTZWN0aW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
TmFtZVNlY3Rpb246OmdldCk6CisgICAgICAgICogd2FzbS9XYXNtTmFtZVNlY3Rpb25QYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpOYW1lU2VjdGlvblBhcnNlcjo6cGFyc2UpOgorCiAy
MDE3LTExLTA2ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ29kZUJsb2NrOjp1c2VzT3Bjb2RlKCkgaXMgZGVhZCBjb2RlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCmluZGV4IGQwODJiNjMu
LjMzYmY5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9T
dGFja1Zpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9T
dGFja1Zpc2l0b3IuY3BwCkBAIC0yNzksMTAgKzI3OSw3IEBAIFN0cmluZyBTdGFja1Zpc2l0b3I6
OkZyYW1lOjpmdW5jdGlvbk5hbWUoKSBjb25zdAogCiAgICAgc3dpdGNoIChjb2RlVHlwZSgpKSB7
CiAgICAgY2FzZSBDb2RlVHlwZTo6V2FzbToKLSAgICAgICAgaWYgKG1fd2FzbUZ1bmN0aW9uSW5k
ZXhPck5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgdHJhY2VMaW5lID0gbWFrZVN0cmluZygi
d2FzbSBmdW5jdGlvbiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0cmFjZUxpbmUgPSBt
YWtlU3RyaW5nKCJ3YXNtIGZ1bmN0aW9uOiAiLCBtYWtlU3RyaW5nKG1fd2FzbUZ1bmN0aW9uSW5k
ZXhPck5hbWUpKTsKKyAgICAgICAgdHJhY2VMaW5lID0gbWFrZVN0cmluZyhtX3dhc21GdW5jdGlv
bkluZGV4T3JOYW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb2RlVHlwZTo6RXZhbDoK
ICAgICAgICAgdHJhY2VMaW5lID0gQVNDSUlMaXRlcmFsKCJldmFsIGNvZGUiKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAKaW5kZXggZWRiMzI2YS4uOWYy
ZDYwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFt
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAK
QEAgLTc1LDExICs3NSw4IEBAIFN0cmluZyBTdGFja0ZyYW1lOjpzb3VyY2VVUkwoKSBjb25zdAog
CiBTdHJpbmcgU3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKFZNJiB2bSkgY29uc3QKIHsKLSAgICBp
ZiAobV9pc1dhc21GcmFtZSkgewotICAgICAgICBpZiAobV93YXNtRnVuY3Rpb25JbmRleE9yTmFt
ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ3YXNtIGZ1bmN0
aW9uIik7Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJ3YXNtIGZ1bmN0aW9uOiAiLCBtYWtl
U3RyaW5nKG1fd2FzbUZ1bmN0aW9uSW5kZXhPck5hbWUpKTsKLSAgICB9CisgICAgaWYgKG1faXNX
YXNtRnJhbWUpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG1fd2FzbUZ1bmN0aW9uSW5kZXhP
ck5hbWUpOwogCiAgICAgaWYgKG1fY29kZUJsb2NrKSB7CiAgICAgICAgIHN3aXRjaCAobV9jb2Rl
QmxvY2stPmNvZGVUeXBlKCkpIHsKQEAgLTE0Nyw5ICsxNDQsNiBAQCBTdHJpbmcgU3RhY2tGcmFt
ZTo6dG9TdHJpbmcoVk0mIHZtKSBjb25zdAogCiB2b2lkIFN0YWNrRnJhbWU6OnZpc2l0Q2hpbGRy
ZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyBz
b21ldGhpbmcgaGVyZSBhYm91dCBXYXNtOjpJbmRleE9yTmFtZS4KLSAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NjQ0Ci0gICAgCiAgICAgaWYgKG1fY2Fs
bGVlKQogICAgICAgICB2aXNpdG9yLmFwcGVuZChtX2NhbGxlZSk7CiAgICAgaWYgKG1fY29kZUJs
b2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluZGV4T3JO
YW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbmRleE9yTmFtZS5jcHAK
aW5kZXggZjNiZWY2NS4uNjc0YTM1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUluZGV4T3JOYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtSW5kZXhPck5hbWUuY3BwCkBAIC0zOSwxNyArMzksMTggQEAgSW5kZXhPck5hbWU6Oklu
ZGV4T3JOYW1lKEluZGV4IGluZGV4LCBzdGQ6OnBhaXI8Y29uc3QgTmFtZSosIFJlZlB0cjxOYW1l
U2VjdGlvbj4KICAgICAgICAgICAgIG1faW5kZXhOYW1lLm5hbWUgPSBuYW1lLmZpcnN0OwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBtX2luZGV4TmFtZS5pbmRleCA9IGluZGV4VGFnIHwgaW5k
ZXg7Ci0gICAgICAgIG1fbmFtZVNlY3Rpb24gPSBXVEZNb3ZlKG5hbWUuc2Vjb25kKTsKICAgICB9
CisgICAgbV9uYW1lU2VjdGlvbiA9IFdURk1vdmUobmFtZS5zZWNvbmQpOwogfQogCiBTdHJpbmcg
bWFrZVN0cmluZyhjb25zdCBJbmRleE9yTmFtZSYgaW9uKQogewogICAgIGlmIChpb24uaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBTdHJpbmcoIndh
c20tc3R1YiIpOworICAgIGNvbnN0IFN0cmluZyBtb2R1bGVOYW1lID0gaW9uLm5hbWVTZWN0aW9u
KCktPm1vZHVsZU5hbWUuc2l6ZSgpID8gU3RyaW5nKGlvbi5uYW1lU2VjdGlvbigpLT5tb2R1bGVO
YW1lLmRhdGEoKSwgaW9uLm5hbWVTZWN0aW9uKCktPm1vZHVsZU5hbWUuc2l6ZSgpKSA6IFN0cmlu
Zyhpb24ubmFtZVNlY3Rpb24oKS0+bW9kdWxlSGFzaC5kYXRhKCksIGlvbi5uYW1lU2VjdGlvbigp
LT5tb2R1bGVIYXNoLnNpemUoKSk7CiAgICAgaWYgKGlvbi5pc0luZGV4KCkpCi0gICAgICAgIHJl
dHVybiBTdHJpbmc6Om51bWJlcihpb24ubV9pbmRleE5hbWUuaW5kZXggJiB+SW5kZXhPck5hbWU6
OmluZGV4VGFnKTsKLSAgICByZXR1cm4gU3RyaW5nKGlvbi5tX2luZGV4TmFtZS5uYW1lLT5kYXRh
KCksIGlvbi5tX2luZGV4TmFtZS5uYW1lLT5zaXplKCkpOwotfTsKKyAgICAgICAgcmV0dXJuIG1h
a2VTdHJpbmcobW9kdWxlTmFtZSwgIi53YXNtLWZ1bmN0aW9uWyIsIFN0cmluZzo6bnVtYmVyKGlv
bi5tX2luZGV4TmFtZS5pbmRleCAmIH5JbmRleE9yTmFtZTo6aW5kZXhUYWcpLCAiXSIpOworICAg
IHJldHVybiBtYWtlU3RyaW5nKG1vZHVsZU5hbWUsICIud2FzbS1mdW5jdGlvblsiLCBTdHJpbmco
aW9uLm1faW5kZXhOYW1lLm5hbWUtPmRhdGEoKSwgaW9uLm1faW5kZXhOYW1lLm5hbWUtPnNpemUo
KSksICJdIik7Cit9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5kZXhPck5hbWUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21JbmRleE9yTmFtZS5oCmluZGV4IDcwYzdlYjguLmJlYTFmM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbmRleE9yTmFtZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbmRleE9yTmFtZS5oCkBAIC00
Myw2ICs0Myw3IEBAIHN0cnVjdCBJbmRleE9yTmFtZSB7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PEluZGV4PihtX2luZGV4TmFtZSkgJiBlbXB0eVRhZzsg
fQogICAgIGJvb2wgaXNJbmRleCgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxJbmRleD4o
bV9pbmRleE5hbWUpICYgaW5kZXhUYWc7IH0KICAgICBib29sIGlzTmFtZSgpIGNvbnN0IHsgcmV0
dXJuICEoaXNFbXB0eSgpIHx8IGlzTmFtZSgpKTsgfQorICAgIE5hbWVTZWN0aW9uKiBuYW1lU2Vj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZVNlY3Rpb24gPyBtX25hbWVTZWN0aW9uLmdldCgp
IDogbnVsbHB0cjsgfQogCiAgICAgZnJpZW5kIFN0cmluZyBtYWtlU3RyaW5nKGNvbnN0IEluZGV4
T3JOYW1lJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21N
b2R1bGVJbmZvcm1hdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9k
dWxlSW5mb3JtYXRpb24uY3BwCmluZGV4IDlkYTVjZDAuLjBjODAzMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmNwcApAQCAt
MjksMTIgKzI5LDIzIEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiV2Fz
bU5hbWVTZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1NIQTEuaD4KKworbmFtZXNwYWNlIHsKK0NT
dHJpbmcgc2hhMShjb25zdCBWZWN0b3I8dWludDhfdD4mIGlucHV0KQoreworICAgIFNIQTEgaGFz
aDsKKyAgICBoYXNoLmFkZEJ5dGVzKGlucHV0KTsKKyAgICByZXR1cm4gaGFzaC5jb21wdXRlSGV4
RGlnZXN0KCk7Cit9Cit9CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKIE1v
ZHVsZUluZm9ybWF0aW9uOjpNb2R1bGVJbmZvcm1hdGlvbihWZWN0b3I8dWludDhfdD4mJiBzb3Vy
Y2VCeXRlcykKICAgICA6IHNvdXJjZShXVEZNb3ZlKHNvdXJjZUJ5dGVzKSkKLSAgICAsIG5hbWVT
ZWN0aW9uKG5ldyBOYW1lU2VjdGlvbigpKQorICAgICwgaGFzaChzaGExKHNvdXJjZSkpCisgICAg
LCBuYW1lU2VjdGlvbihuZXcgTmFtZVNlY3Rpb24oaGFzaCkpCiB7CiB9CiBNb2R1bGVJbmZvcm1h
dGlvbjo6fk1vZHVsZUluZm9ybWF0aW9uKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oCmluZGV4IDE4MjM5ZTMuLmM0ZjVlYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1h
dGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1h
dGlvbi5oCkBAIC01Nyw2ICs1Nyw3IEBAIHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlvbiA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGVJbmZvcm1hdGlvbj4gewogICAgIHVpbnQzMl90
IGludGVybmFsRnVuY3Rpb25Db3VudCgpIGNvbnN0IHsgcmV0dXJuIGludGVybmFsRnVuY3Rpb25T
aWduYXR1cmVJbmRpY2VzLnNpemUoKTsgfQogCiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+IHNv
dXJjZTsKKyAgICBjb25zdCBDU3RyaW5nIGhhc2g7CiAKICAgICBWZWN0b3I8SW1wb3J0PiBpbXBv
cnRzOwogICAgIFZlY3RvcjxTaWduYXR1cmVJbmRleD4gaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJ
bmRpY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU5hbWVT
ZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTmFtZVNlY3Rpb24uaApp
bmRleCA4YjFmMDA5Li4xNDk3NGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTmFtZVNlY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTmFtZVNlY3Rpb24uaApAQCAtMzMsMTEgKzMzLDIxIEBACiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIFdhc20gewogCiBzdHJ1Y3QgTmFtZVNlY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8TmFtZVNlY3Rpb24+IHsKKyAgICBOYW1lU2VjdGlvbihjb25zdCBDU3RyaW5nICZo
YXNoKQorICAgICAgICA6IG1vZHVsZUhhc2goaGFzaC5sZW5ndGgoKSkKKyAgICB7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGhhc2gubGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAg
IG1vZHVsZUhhc2hbaV0gPSBzdGF0aWNfY2FzdDx1aW50OF90PigqKGhhc2guZGF0YSgpICsgaSkp
OworICAgIH0KKyAgICBOYW1lU2VjdGlvbigpID0gZGVsZXRlOworICAgIE5hbWVTZWN0aW9uKGNv
bnN0IE5hbWVTZWN0aW9uJikgPSBkZWxldGU7CisKICAgICBzdGQ6OnBhaXI8Y29uc3QgTmFtZSos
IFJlZlB0cjxOYW1lU2VjdGlvbj4+IGdldChzaXplX3QgZnVuY3Rpb25JbmRleFNwYWNlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uSW5kZXhTcGFjZSA8IGZ1bmN0aW9uTmFtZXMuc2l6
ZSgpID8gc3RkOjptYWtlX3BhaXIoJmZ1bmN0aW9uTmFtZXNbZnVuY3Rpb25JbmRleFNwYWNlXSwg
UmVmUHRyPE5hbWVTZWN0aW9uPih0aGlzKSkgOiBzdGQ6OnBhaXI8Y29uc3QgTmFtZSosIFJlZlB0
cjxOYW1lU2VjdGlvbj4+KG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3BhaXIoZnVuY3Rpb25JbmRleFNwYWNlIDwgZnVuY3Rpb25OYW1lcy5zaXplKCkgPyAmZnVu
Y3Rpb25OYW1lc1tmdW5jdGlvbkluZGV4U3BhY2VdIDogbnVsbHB0ciwgUmVmUHRyPE5hbWVTZWN0
aW9uPih0aGlzKSk7CiAgICAgfQogICAgIE5hbWUgbW9kdWxlTmFtZTsKKyAgICBOYW1lIG1vZHVs
ZUhhc2g7CiAgICAgVmVjdG9yPE5hbWU+IGZ1bmN0aW9uTmFtZXM7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTmFtZVNlY3Rpb25QYXJzZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU5hbWVTZWN0aW9uUGFyc2VyLmNwcAppbmRl
eCBiZjU5ZTA1Li43MzM5NjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTmFtZVNlY3Rpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21OYW1lU2VjdGlvblBhcnNlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogYXV0byBOYW1lU2VjdGlvblBhcnNlcjo6cGFyc2Uo
KSAtPiBSZXN1bHQKIHsKLSAgICBSZWZQdHI8TmFtZVNlY3Rpb24+IG5hbWVTZWN0aW9uKGFkb3B0
UmVmKCpuZXcgTmFtZVNlY3Rpb24oKSkpOworICAgIFJlZlB0cjxOYW1lU2VjdGlvbj4gbmFtZVNl
Y3Rpb24oYWRvcHRSZWYoKm5ldyBOYW1lU2VjdGlvbihtX2luZm8uaGFzaCkpKTsKICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKCFuYW1lU2VjdGlvbi0+ZnVuY3Rpb25OYW1lcy50cnlSZXNlcnZlQ2Fw
YWNpdHkobV9pbmZvLmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKSksICJjYW4ndCBhbGxvY2F0ZSBl
bm91Z2ggbWVtb3J5IGZvciBmdW5jdGlvbiBuYW1lcyIpOwogICAgIG5hbWVTZWN0aW9uLT5mdW5j
dGlvbk5hbWVzLnJlc2l6ZShtX2luZm8uZnVuY3Rpb25JbmRleFNwYWNlU2l6ZSgpKTsKIAotLSAK
Mi45LjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326157</attachid>
            <date>2017-11-06 14:06:20 -0800</date>
            <delta_ts>2017-11-30 16:06:50 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-improve-stack-trace.patch</filename>
            <type>text/plain</type>
            <size>19446</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAzMGVhNmE2ZGRkMDkwMzJhMzAxNzljYzM2NWVhZjI3NWFjNmQ2OWUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBNb24sIDYgTm92IDIwMTcgMTQ6NDc6NTMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBXZWJBc3Nl
bWJseTogaW1wcm92ZSBzdGFjayB0cmFjZQoKLS0tCiBKU1Rlc3RzL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI3ICsrKysrKysrKysrKysrKysrCiBKU1Rlc3Rz
L3dhc20vYXNzZXJ0LmpzICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKysrCiBK
U1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvbmFtZVNlY3Rpb24uanMgICAgICAgICB8IDEyICsr
KystLS0tCiBKU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvc3RhY2stb3ZlcmZsb3cuanMgICAg
ICB8IDEyICsrKystLS0tCiBKU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvc3RhY2stdHJhY2Uu
anMgICAgICAgICB8IDI0ICsrKysrKystLS0tLS0tLQogLi4uL3RyYXAtYWZ0ZXItY3Jvc3MtaW5z
dGFuY2UtY2FsbC5qcyAgICAgICAgICAgICAgfCAgMiArLQogSlNUZXN0cy93YXNtL2Z1bmN0aW9u
LXRlc3RzL3RyYXAtbG9hZC0yLmpzICAgICAgICAgfCAgMiArLQogSlNUZXN0cy93YXNtL2Z1bmN0
aW9uLXRlc3RzL3RyYXAtbG9hZC5qcyAgICAgICAgICAgfCAgMiArLQogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgfCAzNCArKysrKysrKysrKysrKysr
KysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNw
cCB8ICA1ICstLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3Bw
ICAgICAgIHwgMTAgKystLS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluZGV4
T3JOYW1lLmNwcCAgICAgfCAxMSArKystLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtSW5kZXhPck5hbWUuaCAgICAgICB8ICAxICsKIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Nb2R1bGVJbmZvcm1hdGlvbi5jcHAgIHwgMTMgKysrKysrKystCiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaCB8ICAxICsKIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21OYW1lU2VjdGlvbi5oICAgICAgIHwgMTMgKysrKysrKystCiAuLi4v
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTmFtZVNlY3Rpb25QYXJzZXIuY3BwICB8ICAyICstCiAx
NyBmaWxlcyBjaGFuZ2VkLCAxMjkgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBjOTIx
NzkwLi41YTVjZDg5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTExLTA2ICBKRiBCYXN0aWVuICA8amZi
YXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogaW1wcm92ZSBzdGFjayB0
cmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5
MzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIHRoZSB0ZXN0cyB0byBmb2xsb3cgdGhlIG5ldyBmb3JtYXQuIE5vdGFibHksIFNIQTEgbW9k
dWxlCisgICAgICAgIGhhc2ggaXMgbm93IGluY2x1ZGVkIGluIHRyYWNlcywgYW5kIHN0dWJzIGFy
ZSBwcm9wZXJseSBpZGVudGlmaWVkLgorCisgICAgICAgICogd2FzbS9hc3NlcnQuanM6IEFkZCBh
biBhc3NlcnRpb24gd2hpY2ggbWF0Y2hlcyByZWd1bGFyIGV4cHJlc3Npb25zLgorICAgICAgICAq
IHdhc20vZnVuY3Rpb24tdGVzdHMvbmFtZVNlY3Rpb24uanM6CisgICAgICAgICogd2FzbS9mdW5j
dGlvbi10ZXN0cy9zdGFjay1vdmVyZmxvdy5qczoKKyAgICAgICAgKGltcG9ydC5CdWlsZGVyLmZy
b20uc3RyaW5nX2FwcGVhcmVkX2hlcmUuaW1wb3J0LmFzLmFzc2VydC5mcm9tLnN0cmluZ19hcHBl
YXJlZF9oZXJlLmFzc2VydE92ZXJmbG93cyk6CisgICAgICAgIChhc3NlcnRPdmVyZmxvd3MuYXNz
ZXJ0VGhyb3dzLndhc20uMSk6CisgICAgICAgIChhc3NlcnRPdmVyZmxvd3MuYXNzZXJ0VGhyb3dz
Lndhc20uMCk6CisgICAgICAgIChhc3NlcnRPdmVyZmxvd3MuYXNzZXJ0VGhyb3dzKToKKyAgICAg
ICAgKGFzc2VydE92ZXJmbG93cyk6CisgICAgICAgICogd2FzbS9mdW5jdGlvbi10ZXN0cy9zdGFj
ay10cmFjZS5qczoKKyAgICAgICAgKGltcG9ydC5CdWlsZGVyLmZyb20uc3RyaW5nX2FwcGVhcmVk
X2hlcmUuYXNzZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2Z1bmN0aW9uLXRlc3RzL3Ry
YXAtYWZ0ZXItY3Jvc3MtaW5zdGFuY2UtY2FsbC5qczoKKyAgICAgICAgKHdhc21GcmFtZUNvdW50
RnJvbUVycm9yKToKKyAgICAgICAgKiB3YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC0yLmpz
OgorICAgICAgICAod2FzbUZyYW1lQ291bnRGcm9tRXJyb3IpOgorICAgICAgICAqIHdhc20vZnVu
Y3Rpb24tdGVzdHMvdHJhcC1sb2FkLmpzOgorICAgICAgICAod2FzbUZyYW1lQ291bnRGcm9tRXJy
b3IpOgorCiAyMDE3LTExLTA1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgogCiAgICAgICAgIEpJVCBjYWxsIGlubGluZSBjYWNoZXMgc2hvdWxkIGNhY2hlIGNhbGxzIHRv
IG9iamVjdHMgd2l0aCBnZXRDYWxsRGF0YS9nZXRDb25zdHJ1Y3REYXRhIHRyYXBzCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3dhc20vYXNzZXJ0LmpzIGIvSlNUZXN0cy93YXNtL2Fzc2VydC5qcwppbmRl
eCA1MmIzOWJmLi45NzllMjJkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vYXNzZXJ0LmpzCisr
KyBiL0pTVGVzdHMvd2FzbS9hc3NlcnQuanMKQEAgLTg5LDYgKzg5LDEzIEBAIGV4cG9ydCBjb25z
dCBlcSA9IChsaHMsIHJocywgbXNnKSA9PiB7CiAgICAgfQogfTsKIAorZXhwb3J0IGNvbnN0IG1h
dGNoZXMgPSAobGhzLCByaHMsIG1zZykgPT4geworICAgIGlmICh0eXBlb2YgbGhzICE9PSAic3Ry
aW5nIiB8fCAhKHJocyBpbnN0YW5jZW9mIFJlZ0V4cCkpCisgICAgICAgIF9mYWlsKGBFeHBlY3Rl
ZCBzdHJpbmcgYW5kIHJlZ2V4IG9iamVjdCwgZ290ICR7dHlwZW9mIGxoc30gYW5kICR7dHlwZW9m
IHJoc31gLCBtc2cpOworICAgIGlmICghcmhzLnRlc3QobGhzKSkKKyAgICAgICAgX2ZhaWwoYCIk
e21zZ30iIGRvZXMgbm90IG1hdGNoICR7cmhzfWAsIG1zZyk7Cit9OworCiBjb25zdCBjYW5vbmlj
YWxpemVJMzIgPSAobnVtYmVyKSA9PiB7CiAgICAgaWYgKE1hdGgucm91bmQobnVtYmVyKSA9PT0g
bnVtYmVyICYmIG51bWJlciA+PSAyICoqIDMxKQogICAgICAgICBudW1iZXIgPSBudW1iZXIgLSAy
ICoqIDMyOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL25hbWVTZWN0
aW9uLmpzIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL25hbWVTZWN0aW9uLmpzCmluZGV4
IGJhNTQxOWUuLmY0ZDI4YTggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0
cy9uYW1lU2VjdGlvbi5qcworKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvbmFtZVNl
Y3Rpb24uanMKQEAgLTY0LDkgKzY0LDkgQEAgYXNzZXJ0LmVxKHJlc3VsdCwgMSArIDQyKTsKIGFz
c2VydC50cnV0aHkoc3RhY2t0cmFjZSk7CiBzdGFja3RyYWNlID0gc3RhY2t0cmFjZS5zcGxpdCgi
XG4iKTsKIGFzc2VydC5mYWxzeShzdGFja3RyYWNlWzBdLmluZGV4T2YoIl9zaWxseSIpID09PSAt
MSk7Ci1hc3NlcnQuZXEoc3RhY2t0cmFjZVsxXSwgIndhc20gZnVuY3Rpb25AW3dhc20gY29kZV0i
KTsgLy8gdGhlIHdhc20tPmpzIHN0dWIKLWFzc2VydC5lcShzdGFja3RyYWNlWzJdLCAid2FzbSBm
dW5jdGlvbjogX2VnZ3NAW3dhc20gY29kZV0iKTsKLWFzc2VydC5lcShzdGFja3RyYWNlWzNdLCAi
d2FzbSBmdW5jdGlvbjogX2JhY29uQFt3YXNtIGNvZGVdIik7Ci1hc3NlcnQuZXEoc3RhY2t0cmFj
ZVs0XSwgIndhc20gZnVuY3Rpb246IF9zcGFtQFt3YXNtIGNvZGVdIik7Ci1hc3NlcnQuZXEoc3Rh
Y2t0cmFjZVs1XSwgIndhc20gZnVuY3Rpb246IF9wYXJyb3RAW3dhc20gY29kZV0iKTsKLWFzc2Vy
dC5lcShzdGFja3RyYWNlWzZdLCAid2FzbSBmdW5jdGlvbkBbd2FzbSBjb2RlXSIpOyAvLyB3YXNt
IGVudHJ5Cithc3NlcnQuZXEoc3RhY2t0cmFjZVsxXSwgIndhc20tc3R1YkBbd2FzbSBjb2RlXSIp
OyAvLyB0aGUgd2FzbS0+anMgc3R1YgorYXNzZXJ0LmVxKHN0YWNrdHJhY2VbMl0sICJDNzRCMzQx
Qzg2MkY4MzFGNEY3NTA2OERGNEU0MkFCMzZGQjM0NDZGLndhc20tZnVuY3Rpb25bX2VnZ3NdQFt3
YXNtIGNvZGVdIik7Cithc3NlcnQuZXEoc3RhY2t0cmFjZVszXSwgIkM3NEIzNDFDODYyRjgzMUY0
Rjc1MDY4REY0RTQyQUIzNkZCMzQ0NkYud2FzbS1mdW5jdGlvbltfYmFjb25dQFt3YXNtIGNvZGVd
Iik7Cithc3NlcnQuZXEoc3RhY2t0cmFjZVs0XSwgIkM3NEIzNDFDODYyRjgzMUY0Rjc1MDY4REY0
RTQyQUIzNkZCMzQ0NkYud2FzbS1mdW5jdGlvbltfc3BhbV1AW3dhc20gY29kZV0iKTsKK2Fzc2Vy
dC5lcShzdGFja3RyYWNlWzVdLCAiQzc0QjM0MUM4NjJGODMxRjRGNzUwNjhERjRFNDJBQjM2RkIz
NDQ2Ri53YXNtLWZ1bmN0aW9uW19wYXJyb3RdQFt3YXNtIGNvZGVdIik7Cithc3NlcnQuZXEoc3Rh
Y2t0cmFjZVs2XSwgIndhc20tc3R1YkBbd2FzbSBjb2RlXSIpOyAvLyB3YXNtIGVudHJ5CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvc3RhY2stb3ZlcmZsb3cuanMgYi9K
U1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvc3RhY2stb3ZlcmZsb3cuanMKaW5kZXggM2I0Mzli
ZC4uMjkyNWY5NyAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3N0YWNr
LW92ZXJmbG93LmpzCisrKyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9zdGFjay1vdmVy
Zmxvdy5qcwpAQCAtNDcsNyArNDcsNyBAQCBpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNz
ZXJ0LmpzJwogICAgICAgICBhc3NlcnQudHJ1dGh5KHN0YWNrLmxlbmd0aCA+IDUwKTsKICAgICAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDsgKytpKSB7CiAgICAgICAgICAgICBsZXQgaXRlbSA9
IHN0YWNrW3N0YWNrLmxlbmd0aCAtIGkgLSAxXTsKLSAgICAgICAgICAgIGFzc2VydC5lcShpdGVt
LCAid2FzbSBmdW5jdGlvbjogMEBbd2FzbSBjb2RlXSIpOworICAgICAgICAgICAgYXNzZXJ0Lm1h
dGNoZXMoaXRlbSwgL1tBLUYwLTldezQwfVwud2FzbS1mdW5jdGlvblxbMFxdQFxbd2FzbSBjb2Rl
XF0vKTsKICAgICAgICAgfSAKICAgICB9CiAgICAgYXNzZXJ0T3ZlcmZsb3dzKGkxKTsKQEAgLTEy
NiwxNyArMTI2LDE3IEBAIGltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnCiAK
ICAgICAgICAgc3RhY2sgPSBzdGFjay5zcGxpdCgiXG4iKTsKICAgICAgICAgYXNzZXJ0LnRydXRo
eShzdGFjay5sZW5ndGggPiA1MCk7Ci0gICAgICAgIGNvbnN0IG9uZVN0cmluZyA9ICJ3YXNtIGZ1
bmN0aW9uOiAxQFt3YXNtIGNvZGVdIjsKLSAgICAgICAgY29uc3QgemVyb1N0cmluZyA9ICJ3YXNt
IGZ1bmN0aW9uOiAwQFt3YXNtIGNvZGVdIjsKLSAgICAgICAgbGV0IGN1cnJlbnRJbmRleCA9IHN0
YWNrW3N0YWNrLmxlbmd0aCAtIDFdID09PSBvbmVTdHJpbmcgPyAxIDogMDsKKyAgICAgICAgY29u
c3Qgb25lUmUgPSAvW0EtRjAtOV17NDB9XC53YXNtLWZ1bmN0aW9uXFsxXF1AXFt3YXNtIGNvZGVc
XS87CisgICAgICAgIGNvbnN0IHplcm9SZSA9IC9bQS1GMC05XXs0MH1cLndhc20tZnVuY3Rpb25c
WzBcXUBcW3dhc20gY29kZVxdLzsKKyAgICAgICAgbGV0IGN1cnJlbnRJbmRleCA9IG9uZVJlLnRl
c3Qoc3RhY2tbc3RhY2subGVuZ3RoIC0gMV0pID8gMSA6IDA7CiAgICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgNTA7ICsraSkgewogICAgICAgICAgICAgbGV0IGl0ZW0gPSBzdGFja1tzdGFjay5s
ZW5ndGggLSAxIC0gaV07CiAgICAgICAgICAgICBpZiAoY3VycmVudEluZGV4ID09PSAxKSB7Ci0g
ICAgICAgICAgICAgICAgYXNzZXJ0LmVxKGl0ZW0sIG9uZVN0cmluZyk7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0Lm1hdGNoZXMoaXRlbSwgb25lUmUpOwogICAgICAgICAgICAgICAgIGN1cnJlbnRJ
bmRleCA9IDA7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGFzc2VydC5l
cShjdXJyZW50SW5kZXgsIDApOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcShpdGVtLCB6ZXJv
U3RyaW5nKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQubWF0Y2hlcyhpdGVtLCB6ZXJvUmUpOwog
ICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRleCA9IDE7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9zdGFjay10cmFjZS5q
cyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9zdGFjay10cmFjZS5qcwppbmRleCBkNzBi
M2VhLi4yMTQ3YTM3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvc3Rh
Y2stdHJhY2UuanMKKysrIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3N0YWNrLXRyYWNl
LmpzCkBAIC0xLDkgKzEsNSBAQAogaW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcycK
LQotZnVuY3Rpb24gYXNzZXJ0KGIpIHsKLSAgICBpZiAoIWIpCi0gICAgICAgIHRocm93IG5ldyBF
cnJvcigiQmFkIik7Ci19CitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJwog
CiBjb25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCiAgICAgLlR5cGUoKS5FbmQoKQpAQCAt
NDAsMTggKzM2LDE4IEBAIGxldCBpbXAgPSAoKSA9PiB7CiBjb25zdCBiaW4gPSBidWlsZGVyLldl
YkFzc2VtYmx5KCkuZ2V0KCk7CiBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxl
KGJpbik7CiBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7
aW1wOiB7ZjogaW1wfX0pOwotYXNzZXJ0KCFzdGFja3RyYWNlKTsKK2Fzc2VydC5mYWxzeShzdGFj
a3RyYWNlKTsKIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgewogICAgIGluc3RhbmNl
LmV4cG9ydHMuZW50cnkoKTsKLSAgICBhc3NlcnQoc3RhY2t0cmFjZSk7CisgICAgYXNzZXJ0LnRy
dXRoeShzdGFja3RyYWNlKTsKICAgICBzdGFja3RyYWNlID0gc3RhY2t0cmFjZS5zcGxpdCgiXG4i
KTsKLSAgICBhc3NlcnQoc3RhY2t0cmFjZVswXS5pbmRleE9mKCJpbXAiKSAhPT0gLTEpOyAvLyB0
aGUgYXJyb3cgZnVuY3Rpb24gaW1wb3J0IG5hbWVkICJpbXAiLgotICAgIGFzc2VydChzdGFja3Ry
YWNlWzFdID09PSAid2FzbSBmdW5jdGlvbkBbd2FzbSBjb2RlXSIpOyAvLyB0aGUgd2FzbS0+anMg
c3R1YgotICAgIGFzc2VydChzdGFja3RyYWNlWzJdID09PSAid2FzbSBmdW5jdGlvbjogNEBbd2Fz
bSBjb2RlXSIpOwotICAgIGFzc2VydChzdGFja3RyYWNlWzNdID09PSAid2FzbSBmdW5jdGlvbjog
MkBbd2FzbSBjb2RlXSIpOwotICAgIGFzc2VydChzdGFja3RyYWNlWzRdID09PSAid2FzbSBmdW5j
dGlvbjogM0Bbd2FzbSBjb2RlXSIpOwotICAgIGFzc2VydChzdGFja3RyYWNlWzVdID09PSAid2Fz
bSBmdW5jdGlvbjogMUBbd2FzbSBjb2RlXSIpOwotICAgIGFzc2VydChzdGFja3RyYWNlWzZdID09
PSAid2FzbSBmdW5jdGlvbkBbd2FzbSBjb2RlXSIpOyAvLyB3YXNtIGVudHJ5CisgICAgYXNzZXJ0
LnRydXRoeShzdGFja3RyYWNlWzBdLmluZGV4T2YoImltcCIpICE9PSAtMSk7IC8vIHRoZSBhcnJv
dyBmdW5jdGlvbiBpbXBvcnQgbmFtZWQgImltcCIuCisgICAgYXNzZXJ0LmVxKHN0YWNrdHJhY2Vb
MV0sICJ3YXNtLXN0dWJAW3dhc20gY29kZV0iKTsgLy8gdGhlIHdhc20tPmpzIHN0dWIKKyAgICBh
c3NlcnQuZXEoc3RhY2t0cmFjZVsyXSwgIjJDNzdFOTdENzc1MDYzQTg2OEVGNDQzN0RBMjYwMjQ1
QUZBOTQ1ODMud2FzbS1mdW5jdGlvbls0XUBbd2FzbSBjb2RlXSIpOworICAgIGFzc2VydC5lcShz
dGFja3RyYWNlWzNdLCAiMkM3N0U5N0Q3NzUwNjNBODY4RUY0NDM3REEyNjAyNDVBRkE5NDU4My53
YXNtLWZ1bmN0aW9uWzJdQFt3YXNtIGNvZGVdIik7CisgICAgYXNzZXJ0LmVxKHN0YWNrdHJhY2Vb
NF0sICIyQzc3RTk3RDc3NTA2M0E4NjhFRjQ0MzdEQTI2MDI0NUFGQTk0NTgzLndhc20tZnVuY3Rp
b25bM11AW3dhc20gY29kZV0iKTsKKyAgICBhc3NlcnQuZXEoc3RhY2t0cmFjZVs1XSwgIjJDNzdF
OTdENzc1MDYzQTg2OEVGNDQzN0RBMjYwMjQ1QUZBOTQ1ODMud2FzbS1mdW5jdGlvblsxXUBbd2Fz
bSBjb2RlXSIpOworICAgIGFzc2VydC5lcShzdGFja3RyYWNlWzZdLCAid2FzbS1zdHViQFt3YXNt
IGNvZGVdIik7IC8vIHdhc20gZW50cnkKIAogICAgIHN0YWNrdHJhY2UgPSBudWxsOwogfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtYWZ0ZXItY3Jvc3MtaW5z
dGFuY2UtY2FsbC5qcyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWFmdGVyLWNy
b3NzLWluc3RhbmNlLWNhbGwuanMKaW5kZXggMGQ4Njk0My4uMTk2MzM0NSAxMDA2NDQKLS0tIGEv
SlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtYWZ0ZXItY3Jvc3MtaW5zdGFuY2UtY2Fs
bC5qcworKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1hZnRlci1jcm9zcy1p
bnN0YW5jZS1jYWxsLmpzCkBAIC01Miw3ICs1Miw3IEBAIGxldCBmb28yID0gbmV3IFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlKG1vZHVsZSwgaW1wb3J0T2JqZWN0KS5leHBvcnRzLmZvbzsKIAogCiBmdW5j
dGlvbiB3YXNtRnJhbWVDb3VudEZyb21FcnJvcihlKSB7Ci0gICAgbGV0IHN0YWNrRnJhbWVzID0g
ZS5zdGFjay5zcGxpdCgiXG4iKS5maWx0ZXIoKHMpID0+IHMuaW5kZXhPZigid2FzbSBmdW5jdGlv
biIpICE9PSAtMSk7CisgICAgbGV0IHN0YWNrRnJhbWVzID0gZS5zdGFjay5zcGxpdCgiXG4iKS5m
aWx0ZXIoKHMpID0+IHMuaW5kZXhPZigid2FzbS0iKSAhPT0gLTEpOwogICAgIHJldHVybiBzdGFj
a0ZyYW1lcy5sZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10
ZXN0cy90cmFwLWxvYWQtMi5qcyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWxv
YWQtMi5qcwppbmRleCBmOTliMWNhLi5hNmE4OTczIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20v
ZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLTIuanMKKysrIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9u
LXRlc3RzL3RyYXAtbG9hZC0yLmpzCkBAIC0yMCw3ICsyMCw3IEBAIGNvbnN0IGJ1aWxkZXIgPSAo
bmV3IEJ1aWxkZXIoKSkKICAgICAuRW5kKCk7CiAKIGZ1bmN0aW9uIHdhc21GcmFtZUNvdW50RnJv
bUVycm9yKGUpIHsKLSAgICBsZXQgc3RhY2tGcmFtZXMgPSBlLnN0YWNrLnNwbGl0KCJcbiIpLmZp
bHRlcigocykgPT4gcy5pbmRleE9mKCJ3YXNtIGZ1bmN0aW9uIikgIT09IC0xKTsKKyAgICBsZXQg
c3RhY2tGcmFtZXMgPSBlLnN0YWNrLnNwbGl0KCJcbiIpLmZpbHRlcigocykgPT4gcy5pbmRleE9m
KCJ3YXNtLSIpICE9PSAtMSk7CiAgICAgcmV0dXJuIHN0YWNrRnJhbWVzLmxlbmd0aDsKIH0KIApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC5qcyBiL0pT
VGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWxvYWQuanMKaW5kZXggZDk4YTU2Ny4uN2Nm
MGU5OCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC5q
cworKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLmpzCkBAIC0yNCw3
ICsyNCw3IEBAIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKIGNv
bnN0IGZvbyA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHthOiB7YjogbmV3IFdl
YkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDogbnVtUGFnZXN9KX19KS5leHBvcnRzLmZvbzsKIAog
ZnVuY3Rpb24gd2FzbUZyYW1lQ291bnRGcm9tRXJyb3IoZSkgewotICAgIGxldCBzdGFja0ZyYW1l
cyA9IGUuc3RhY2suc3BsaXQoIlxuIikuZmlsdGVyKChzKSA9PiBzLmluZGV4T2YoIndhc20gZnVu
Y3Rpb24iKSAhPT0gLTEpOworICAgIGxldCBzdGFja0ZyYW1lcyA9IGUuc3RhY2suc3BsaXQoIlxu
IikuZmlsdGVyKChzKSA9PiBzLmluZGV4T2YoIndhc20tIikgIT09IC0xKTsKICAgICByZXR1cm4g
c3RhY2tGcmFtZXMubGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAzYTM1
ZjZlLi45MjA3YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAor
MjAxNy0xMS0wNiAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViQXNzZW1ibHk6IGltcHJvdmUgc3RhY2sgdHJhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTM0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YWNrIHRyYWNlcyBub3cgaW5jbHVkZToKKworICAg
ICAgICAgIC0gTW9kdWxlIG5hbWUsIGlmIHByb3ZpZGVkIGJ5IHRoZSBuYW1lIHNlY3Rpb24uCisg
ICAgICAgICAgLSBNb2R1bGUgU0hBMSBoYXNoIGlmIG5vIG5hbWUgd2FzIHByb3ZpZGVkCisgICAg
ICAgICAgLSBTdHViIGlkZW50aWZpY2F0aW9uLCB0byBkaWZmZXJlbnRpYXRlIGZyb20gdXNlciBj
b2RlCisgICAgICAgICAgLSBTbGlnaHRseSBkaWZmZXJlbnQgbmFtaW5nIHRvIG1hdGNoIGRlc2ln
biBmcm9tOgorICAgICAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVz
aWduL2Jsb2IvbWFzdGVyL1dlYi5tZCNkZXZlbG9wZXItZmFjaW5nLWRpc3BsYXktY29udmVudGlv
bnMKKworICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAgIChK
U0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSBjb25zdCk6CisgICAgICAgICog
cnVudGltZS9TdGFja0ZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnVuY3Rp
b25OYW1lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgICogd2FzbS9XYXNtSW5kZXhPck5hbWUuY3BwOgorICAgICAgICAoSlNDOjpXYXNt
OjpJbmRleE9yTmFtZTo6SW5kZXhPck5hbWUpOgorICAgICAgICAoSlNDOjpXYXNtOjptYWtlU3Ry
aW5nKToKKyAgICAgICAgKiB3YXNtL1dhc21JbmRleE9yTmFtZS5oOgorICAgICAgICAoSlNDOjpX
YXNtOjpJbmRleE9yTmFtZTo6bmFtZVNlY3Rpb24gY29uc3QpOgorICAgICAgICAqIHdhc20vV2Fz
bU1vZHVsZUluZm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlSW5mb3Jt
YXRpb246Ok1vZHVsZUluZm9ybWF0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGVJbmZv
cm1hdGlvbi5oOgorICAgICAgICAqIHdhc20vV2FzbU5hbWVTZWN0aW9uLmg6CisgICAgICAgIChK
U0M6Oldhc206Ok5hbWVTZWN0aW9uOjpOYW1lU2VjdGlvbik6CisgICAgICAgIChKU0M6Oldhc206
Ok5hbWVTZWN0aW9uOjpnZXQpOgorICAgICAgICAqIHdhc20vV2FzbU5hbWVTZWN0aW9uUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TmFtZVNlY3Rpb25QYXJzZXI6OnBhcnNlKToKKwog
MjAxNy0xMS0wNiAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAg
ICAgIENvZGVCbG9jazo6dXNlc09wY29kZSgpIGlzIGRlYWQgY29kZQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRleCBkMDgyYjYz
Li4zM2JmOTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
U3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
U3RhY2tWaXNpdG9yLmNwcApAQCAtMjc5LDEwICsyNzksNyBAQCBTdHJpbmcgU3RhY2tWaXNpdG9y
OjpGcmFtZTo6ZnVuY3Rpb25OYW1lKCkgY29uc3QKIAogICAgIHN3aXRjaCAoY29kZVR5cGUoKSkg
ewogICAgIGNhc2UgQ29kZVR5cGU6Oldhc206Ci0gICAgICAgIGlmIChtX3dhc21GdW5jdGlvbklu
ZGV4T3JOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRyYWNlTGluZSA9IG1ha2VTdHJpbmco
Indhc20gZnVuY3Rpb24iKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdHJhY2VMaW5lID0g
bWFrZVN0cmluZygid2FzbSBmdW5jdGlvbjogIiwgbWFrZVN0cmluZyhtX3dhc21GdW5jdGlvbklu
ZGV4T3JOYW1lKSk7CisgICAgICAgIHRyYWNlTGluZSA9IG1ha2VTdHJpbmcobV93YXNtRnVuY3Rp
b25JbmRleE9yTmFtZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29kZVR5cGU6OkV2YWw6
CiAgICAgICAgIHRyYWNlTGluZSA9IEFTQ0lJTGl0ZXJhbCgiZXZhbCBjb2RlIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCmluZGV4IGVkYjMyNmEuLjlm
MmQ2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3Bw
CkBAIC03NSwxMSArNzUsOCBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6c291cmNlVVJMKCkgY29uc3QK
IAogU3RyaW5nIFN0YWNrRnJhbWU6OmZ1bmN0aW9uTmFtZShWTSYgdm0pIGNvbnN0CiB7Ci0gICAg
aWYgKG1faXNXYXNtRnJhbWUpIHsKLSAgICAgICAgaWYgKG1fd2FzbUZ1bmN0aW9uSW5kZXhPck5h
bWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgid2FzbSBmdW5j
dGlvbiIpOwotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygid2FzbSBmdW5jdGlvbjogIiwgbWFr
ZVN0cmluZyhtX3dhc21GdW5jdGlvbkluZGV4T3JOYW1lKSk7Ci0gICAgfQorICAgIGlmIChtX2lz
V2FzbUZyYW1lKQorICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhtX3dhc21GdW5jdGlvbkluZGV4
T3JOYW1lKTsKIAogICAgIGlmIChtX2NvZGVCbG9jaykgewogICAgICAgICBzd2l0Y2ggKG1fY29k
ZUJsb2NrLT5jb2RlVHlwZSgpKSB7CkBAIC0xNDcsOSArMTQ0LDYgQEAgU3RyaW5nIFN0YWNrRnJh
bWU6OnRvU3RyaW5nKFZNJiB2bSkgY29uc3QKIAogdm9pZCBTdGFja0ZyYW1lOjp2aXNpdENoaWxk
cmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8g
c29tZXRoaW5nIGhlcmUgYWJvdXQgV2FzbTo6SW5kZXhPck5hbWUuCi0gICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjY0NAotICAgIAogICAgIGlmIChtX2Nh
bGxlZSkKICAgICAgICAgdmlzaXRvci5hcHBlbmQobV9jYWxsZWUpOwogICAgIGlmIChtX2NvZGVC
bG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbmRleE9y
TmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5kZXhPck5hbWUuY3Bw
CmluZGV4IGYzYmVmNjUuLjY3NGEzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21JbmRleE9yTmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUluZGV4T3JOYW1lLmNwcApAQCAtMzksMTcgKzM5LDE4IEBAIEluZGV4T3JOYW1lOjpJ
bmRleE9yTmFtZShJbmRleCBpbmRleCwgc3RkOjpwYWlyPGNvbnN0IE5hbWUqLCBSZWZQdHI8TmFt
ZVNlY3Rpb24+CiAgICAgICAgICAgICBtX2luZGV4TmFtZS5uYW1lID0gbmFtZS5maXJzdDsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgbV9pbmRleE5hbWUuaW5kZXggPSBpbmRleFRhZyB8IGlu
ZGV4OwotICAgICAgICBtX25hbWVTZWN0aW9uID0gV1RGTW92ZShuYW1lLnNlY29uZCk7CiAgICAg
fQorICAgIG1fbmFtZVNlY3Rpb24gPSBXVEZNb3ZlKG5hbWUuc2Vjb25kKTsKIH0KIAogU3RyaW5n
IG1ha2VTdHJpbmcoY29uc3QgSW5kZXhPck5hbWUmIGlvbikKIHsKICAgICBpZiAoaW9uLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAgICByZXR1cm4gU3RyaW5nKCJ3
YXNtLXN0dWIiKTsKKyAgICBjb25zdCBTdHJpbmcgbW9kdWxlTmFtZSA9IGlvbi5uYW1lU2VjdGlv
bigpLT5tb2R1bGVOYW1lLnNpemUoKSA/IFN0cmluZyhpb24ubmFtZVNlY3Rpb24oKS0+bW9kdWxl
TmFtZS5kYXRhKCksIGlvbi5uYW1lU2VjdGlvbigpLT5tb2R1bGVOYW1lLnNpemUoKSkgOiBTdHJp
bmcoaW9uLm5hbWVTZWN0aW9uKCktPm1vZHVsZUhhc2guZGF0YSgpLCBpb24ubmFtZVNlY3Rpb24o
KS0+bW9kdWxlSGFzaC5zaXplKCkpOwogICAgIGlmIChpb24uaXNJbmRleCgpKQotICAgICAgICBy
ZXR1cm4gU3RyaW5nOjpudW1iZXIoaW9uLm1faW5kZXhOYW1lLmluZGV4ICYgfkluZGV4T3JOYW1l
OjppbmRleFRhZyk7Ci0gICAgcmV0dXJuIFN0cmluZyhpb24ubV9pbmRleE5hbWUubmFtZS0+ZGF0
YSgpLCBpb24ubV9pbmRleE5hbWUubmFtZS0+c2l6ZSgpKTsKLX07CisgICAgICAgIHJldHVybiBt
YWtlU3RyaW5nKG1vZHVsZU5hbWUsICIud2FzbS1mdW5jdGlvblsiLCBTdHJpbmc6Om51bWJlcihp
b24ubV9pbmRleE5hbWUuaW5kZXggJiB+SW5kZXhPck5hbWU6OmluZGV4VGFnKSwgIl0iKTsKKyAg
ICByZXR1cm4gbWFrZVN0cmluZyhtb2R1bGVOYW1lLCAiLndhc20tZnVuY3Rpb25bIiwgU3RyaW5n
KGlvbi5tX2luZGV4TmFtZS5uYW1lLT5kYXRhKCksIGlvbi5tX2luZGV4TmFtZS5uYW1lLT5zaXpl
KCkpLCAiXSIpOworfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluZGV4T3JOYW1lLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5kZXhPck5hbWUuaAppbmRleCA3MGM3ZWI4Li5iZWExZjNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5kZXhPck5hbWUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5kZXhPck5hbWUuaApAQCAt
NDMsNiArNDMsNyBAQCBzdHJ1Y3QgSW5kZXhPck5hbWUgewogICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxJbmRleD4obV9pbmRleE5hbWUpICYgZW1wdHlUYWc7
IH0KICAgICBib29sIGlzSW5kZXgoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5kZXg+
KG1faW5kZXhOYW1lKSAmIGluZGV4VGFnOyB9CiAgICAgYm9vbCBpc05hbWUoKSBjb25zdCB7IHJl
dHVybiAhKGlzRW1wdHkoKSB8fCBpc05hbWUoKSk7IH0KKyAgICBOYW1lU2VjdGlvbiogbmFtZVNl
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25hbWVTZWN0aW9uID8gbV9uYW1lU2VjdGlvbi5nZXQo
KSA6IG51bGxwdHI7IH0KIAogICAgIGZyaWVuZCBTdHJpbmcgbWFrZVN0cmluZyhjb25zdCBJbmRl
eE9yTmFtZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TW9kdWxlSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1v
ZHVsZUluZm9ybWF0aW9uLmNwcAppbmRleCA5ZGE1Y2QwLi4wYzgwMzA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5jcHAKQEAg
LTI5LDEyICsyOSwyMyBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIldh
c21OYW1lU2VjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9TSEExLmg+CisKK25hbWVzcGFjZSB7CitD
U3RyaW5nIHNoYTEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dCkKK3sKKyAgICBTSEExIGhh
c2g7CisgICAgaGFzaC5hZGRCeXRlcyhpbnB1dCk7CisgICAgcmV0dXJuIGhhc2guY29tcHV0ZUhl
eERpZ2VzdCgpOworfQorfQogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCiBN
b2R1bGVJbmZvcm1hdGlvbjo6TW9kdWxlSW5mb3JtYXRpb24oVmVjdG9yPHVpbnQ4X3Q+JiYgc291
cmNlQnl0ZXMpCiAgICAgOiBzb3VyY2UoV1RGTW92ZShzb3VyY2VCeXRlcykpCi0gICAgLCBuYW1l
U2VjdGlvbihuZXcgTmFtZVNlY3Rpb24oKSkKKyAgICAsIGhhc2goc2hhMShzb3VyY2UpKQorICAg
ICwgbmFtZVNlY3Rpb24obmV3IE5hbWVTZWN0aW9uKGhhc2gpKQogewogfQogTW9kdWxlSW5mb3Jt
YXRpb246On5Nb2R1bGVJbmZvcm1hdGlvbigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaAppbmRleCAxODIzOWUzLi5jNGY1ZWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3Jt
YXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3Jt
YXRpb24uaApAQCAtNTcsNiArNTcsNyBAQCBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb24gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9kdWxlSW5mb3JtYXRpb24+IHsKICAgICB1aW50MzJf
dCBpbnRlcm5hbEZ1bmN0aW9uQ291bnQoKSBjb25zdCB7IHJldHVybiBpbnRlcm5hbEZ1bmN0aW9u
U2lnbmF0dXJlSW5kaWNlcy5zaXplKCk7IH0KIAogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiBz
b3VyY2U7CisgICAgY29uc3QgQ1N0cmluZyBoYXNoOwogCiAgICAgVmVjdG9yPEltcG9ydD4gaW1w
b3J0czsKICAgICBWZWN0b3I8U2lnbmF0dXJlSW5kZXg+IGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJl
SW5kaWNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21OYW1l
U2VjdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU5hbWVTZWN0aW9uLmgK
aW5kZXggOGIxZjAwOS4uNTQyMmE0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU5hbWVTZWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU5hbWVTZWN0aW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiV2FzbU5hbWUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHV0aWxpdHk+CkBAIC0zMywxMSArMzQsMjEgQEAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgV2FzbSB7CiAKIHN0cnVjdCBOYW1lU2VjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxOYW1lU2VjdGlvbj4geworICAgIE5hbWVTZWN0aW9uKGNvbnN0IENTdHJpbmcg
Jmhhc2gpCisgICAgICAgIDogbW9kdWxlSGFzaChoYXNoLmxlbmd0aCgpKQorICAgIHsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gaGFzaC5sZW5ndGgoKTsgKytpKQorICAgICAgICAg
ICAgbW9kdWxlSGFzaFtpXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCooaGFzaC5kYXRhKCkgKyBp
KSk7CisgICAgfQorICAgIE5hbWVTZWN0aW9uKCkgPSBkZWxldGU7CisgICAgTmFtZVNlY3Rpb24o
Y29uc3QgTmFtZVNlY3Rpb24mKSA9IGRlbGV0ZTsKKwogICAgIHN0ZDo6cGFpcjxjb25zdCBOYW1l
KiwgUmVmUHRyPE5hbWVTZWN0aW9uPj4gZ2V0KHNpemVfdCBmdW5jdGlvbkluZGV4U3BhY2UpCiAg
ICAgewotICAgICAgICByZXR1cm4gZnVuY3Rpb25JbmRleFNwYWNlIDwgZnVuY3Rpb25OYW1lcy5z
aXplKCkgPyBzdGQ6Om1ha2VfcGFpcigmZnVuY3Rpb25OYW1lc1tmdW5jdGlvbkluZGV4U3BhY2Vd
LCBSZWZQdHI8TmFtZVNlY3Rpb24+KHRoaXMpKSA6IHN0ZDo6cGFpcjxjb25zdCBOYW1lKiwgUmVm
UHRyPE5hbWVTZWN0aW9uPj4obnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfcGFpcihmdW5jdGlvbkluZGV4U3BhY2UgPCBmdW5jdGlvbk5hbWVzLnNpemUoKSA/ICZm
dW5jdGlvbk5hbWVzW2Z1bmN0aW9uSW5kZXhTcGFjZV0gOiBudWxscHRyLCBSZWZQdHI8TmFtZVNl
Y3Rpb24+KHRoaXMpKTsKICAgICB9CiAgICAgTmFtZSBtb2R1bGVOYW1lOworICAgIE5hbWUgbW9k
dWxlSGFzaDsKICAgICBWZWN0b3I8TmFtZT4gZnVuY3Rpb25OYW1lczsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21OYW1lU2VjdGlvblBhcnNlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTmFtZVNlY3Rpb25QYXJzZXIuY3BwCmlu
ZGV4IGJmNTllMDUuLjczMzk2MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21OYW1lU2VjdGlvblBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU5hbWVTZWN0aW9uUGFyc2VyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCiBhdXRvIE5hbWVTZWN0aW9uUGFyc2VyOjpwYXJz
ZSgpIC0+IFJlc3VsdAogewotICAgIFJlZlB0cjxOYW1lU2VjdGlvbj4gbmFtZVNlY3Rpb24oYWRv
cHRSZWYoKm5ldyBOYW1lU2VjdGlvbigpKSk7CisgICAgUmVmUHRyPE5hbWVTZWN0aW9uPiBuYW1l
U2VjdGlvbihhZG9wdFJlZigqbmV3IE5hbWVTZWN0aW9uKG1faW5mby5oYXNoKSkpOwogICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIW5hbWVTZWN0aW9uLT5mdW5jdGlvbk5hbWVzLnRyeVJlc2VydmVD
YXBhY2l0eShtX2luZm8uZnVuY3Rpb25JbmRleFNwYWNlU2l6ZSgpKSwgImNhbid0IGFsbG9jYXRl
IGVub3VnaCBtZW1vcnkgZm9yIGZ1bmN0aW9uIG5hbWVzIik7CiAgICAgbmFtZVNlY3Rpb24tPmZ1
bmN0aW9uTmFtZXMucmVzaXplKG1faW5mby5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCkpOwogCi0t
IAoyLjkuMwoK
</data>
<flag name="review"
          id="345507"
          type_id="1"
          status="+"
          setter="saam"
    />
    <flag name="commit-queue"
          id="345508"
          type_id="3"
          status="-"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328047</attachid>
            <date>2017-11-30 16:06:50 -0800</date>
            <delta_ts>2017-11-30 18:41:13 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-improve-stack-trace.patch</filename>
            <type>text/plain</type>
            <size>19379</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBiZGU5MzUzNDBmYjYxMTE5NmZlMjllZDg0Y2FmN2I0NTJmMDE2MGMwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDMwIE5vdiAyMDE3IDE2OjA0OjU5IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gV2ViQXNz
ZW1ibHk6IGltcHJvdmUgc3RhY2sgdHJhY2UKCi0tLQogSlNUZXN0cy9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNyArKysrKysrKysrKysrKysrKwogSlNUZXN0
cy93YXNtL2Fzc2VydC5qcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNyArKysrKwog
SlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL25hbWVTZWN0aW9uLmpzICAgICAgICAgfCAxMiAr
KysrLS0tLQogSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3N0YWNrLW92ZXJmbG93LmpzICAg
ICAgfCAxMiArKysrLS0tLQogSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3N0YWNrLXRyYWNl
LmpzICAgICAgICAgfCAyNCArKysrKysrLS0tLS0tLS0KIC4uLi90cmFwLWFmdGVyLWNyb3NzLWlu
c3RhbmNlLWNhbGwuanMgICAgICAgICAgICAgIHwgIDIgKy0KIEpTVGVzdHMvd2FzbS9mdW5jdGlv
bi10ZXN0cy90cmFwLWxvYWQtMi5qcyAgICAgICAgIHwgIDIgKy0KIEpTVGVzdHMvd2FzbS9mdW5j
dGlvbi10ZXN0cy90cmFwLWxvYWQuanMgICAgICAgICAgIHwgIDIgKy0KIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwgMzQgKysrKysrKysrKysrKysr
KysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5j
cHAgfCAgNSArLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNw
cCAgICAgICB8IDEwICsrLS0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbmRl
eE9yTmFtZS5jcHAgICAgIHwgMTEgKysrLS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUluZGV4T3JOYW1lLmggICAgICAgfCAgMSArCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTW9kdWxlSW5mb3JtYXRpb24uY3BwICB8IDEzICsrKysrKysrLQogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggfCAgMSArCiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTmFtZVNlY3Rpb24uaCAgICAgICB8IDEyICsrKysrKystCiAuLi4v
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTmFtZVNlY3Rpb25QYXJzZXIuY3BwICB8ICAyICstCiAx
NyBmaWxlcyBjaGFuZ2VkLCAxMjggaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA0NmZl
MTMwLi5hZTY3ZWZjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTExLTMwICBKRiBCYXN0aWVuICA8amZi
YXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogaW1wcm92ZSBzdGFjayB0
cmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5
MzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgVXBkYXRl
IHRoZSB0ZXN0cyB0byBmb2xsb3cgdGhlIG5ldyBmb3JtYXQuIE5vdGFibHksIFNIQTEgbW9kdWxl
CisgICAgICAgIGhhc2ggaXMgbm93IGluY2x1ZGVkIGluIHRyYWNlcywgYW5kIHN0dWJzIGFyZSBw
cm9wZXJseSBpZGVudGlmaWVkLgorCisgICAgICAgICogd2FzbS9hc3NlcnQuanM6IEFkZCBhbiBh
c3NlcnRpb24gd2hpY2ggbWF0Y2hlcyByZWd1bGFyIGV4cHJlc3Npb25zLgorICAgICAgICAqIHdh
c20vZnVuY3Rpb24tdGVzdHMvbmFtZVNlY3Rpb24uanM6CisgICAgICAgICogd2FzbS9mdW5jdGlv
bi10ZXN0cy9zdGFjay1vdmVyZmxvdy5qczoKKyAgICAgICAgKGltcG9ydC5CdWlsZGVyLmZyb20u
c3RyaW5nX2FwcGVhcmVkX2hlcmUuaW1wb3J0LmFzLmFzc2VydC5mcm9tLnN0cmluZ19hcHBlYXJl
ZF9oZXJlLmFzc2VydE92ZXJmbG93cyk6CisgICAgICAgIChhc3NlcnRPdmVyZmxvd3MuYXNzZXJ0
VGhyb3dzLndhc20uMSk6CisgICAgICAgIChhc3NlcnRPdmVyZmxvd3MuYXNzZXJ0VGhyb3dzLndh
c20uMCk6CisgICAgICAgIChhc3NlcnRPdmVyZmxvd3MuYXNzZXJ0VGhyb3dzKToKKyAgICAgICAg
KGFzc2VydE92ZXJmbG93cyk6CisgICAgICAgICogd2FzbS9mdW5jdGlvbi10ZXN0cy9zdGFjay10
cmFjZS5qczoKKyAgICAgICAgKGltcG9ydC5CdWlsZGVyLmZyb20uc3RyaW5nX2FwcGVhcmVkX2hl
cmUuYXNzZXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAt
YWZ0ZXItY3Jvc3MtaW5zdGFuY2UtY2FsbC5qczoKKyAgICAgICAgKHdhc21GcmFtZUNvdW50RnJv
bUVycm9yKToKKyAgICAgICAgKiB3YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC0yLmpzOgor
ICAgICAgICAod2FzbUZyYW1lQ291bnRGcm9tRXJyb3IpOgorICAgICAgICAqIHdhc20vZnVuY3Rp
b24tdGVzdHMvdHJhcC1sb2FkLmpzOgorICAgICAgICAod2FzbUZyYW1lQ291bnRGcm9tRXJyb3Ip
OgorCiAyMDE3LTExLTI4ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTdHJpY3QgYW5kIHNsb3BweSBmdW5jdGlvbnMgc2hvdWxkbid0IHNoYXJlIHN0cnVjdHVy
ZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Fzc2VydC5qcyBiL0pTVGVzdHMvd2FzbS9hc3Nl
cnQuanMKaW5kZXggNTJiMzliZi4uOTc5ZTIyZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL2Fz
c2VydC5qcworKysgYi9KU1Rlc3RzL3dhc20vYXNzZXJ0LmpzCkBAIC04OSw2ICs4OSwxMyBAQCBl
eHBvcnQgY29uc3QgZXEgPSAobGhzLCByaHMsIG1zZykgPT4gewogICAgIH0KIH07CiAKK2V4cG9y
dCBjb25zdCBtYXRjaGVzID0gKGxocywgcmhzLCBtc2cpID0+IHsKKyAgICBpZiAodHlwZW9mIGxo
cyAhPT0gInN0cmluZyIgfHwgIShyaHMgaW5zdGFuY2VvZiBSZWdFeHApKQorICAgICAgICBfZmFp
bChgRXhwZWN0ZWQgc3RyaW5nIGFuZCByZWdleCBvYmplY3QsIGdvdCAke3R5cGVvZiBsaHN9IGFu
ZCAke3R5cGVvZiByaHN9YCwgbXNnKTsKKyAgICBpZiAoIXJocy50ZXN0KGxocykpCisgICAgICAg
IF9mYWlsKGAiJHttc2d9IiBkb2VzIG5vdCBtYXRjaCAke3Joc31gLCBtc2cpOworfTsKKwogY29u
c3QgY2Fub25pY2FsaXplSTMyID0gKG51bWJlcikgPT4gewogICAgIGlmIChNYXRoLnJvdW5kKG51
bWJlcikgPT09IG51bWJlciAmJiBudW1iZXIgPj0gMiAqKiAzMSkKICAgICAgICAgbnVtYmVyID0g
bnVtYmVyIC0gMiAqKiAzMjsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0
cy9uYW1lU2VjdGlvbi5qcyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9uYW1lU2VjdGlv
bi5qcwppbmRleCBiYTU0MTllLi5mNGQyOGE4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vZnVu
Y3Rpb24tdGVzdHMvbmFtZVNlY3Rpb24uanMKKysrIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRl
c3RzL25hbWVTZWN0aW9uLmpzCkBAIC02NCw5ICs2NCw5IEBAIGFzc2VydC5lcShyZXN1bHQsIDEg
KyA0Mik7CiBhc3NlcnQudHJ1dGh5KHN0YWNrdHJhY2UpOwogc3RhY2t0cmFjZSA9IHN0YWNrdHJh
Y2Uuc3BsaXQoIlxuIik7CiBhc3NlcnQuZmFsc3koc3RhY2t0cmFjZVswXS5pbmRleE9mKCJfc2ls
bHkiKSA9PT0gLTEpOwotYXNzZXJ0LmVxKHN0YWNrdHJhY2VbMV0sICJ3YXNtIGZ1bmN0aW9uQFt3
YXNtIGNvZGVdIik7IC8vIHRoZSB3YXNtLT5qcyBzdHViCi1hc3NlcnQuZXEoc3RhY2t0cmFjZVsy
XSwgIndhc20gZnVuY3Rpb246IF9lZ2dzQFt3YXNtIGNvZGVdIik7Ci1hc3NlcnQuZXEoc3RhY2t0
cmFjZVszXSwgIndhc20gZnVuY3Rpb246IF9iYWNvbkBbd2FzbSBjb2RlXSIpOwotYXNzZXJ0LmVx
KHN0YWNrdHJhY2VbNF0sICJ3YXNtIGZ1bmN0aW9uOiBfc3BhbUBbd2FzbSBjb2RlXSIpOwotYXNz
ZXJ0LmVxKHN0YWNrdHJhY2VbNV0sICJ3YXNtIGZ1bmN0aW9uOiBfcGFycm90QFt3YXNtIGNvZGVd
Iik7Ci1hc3NlcnQuZXEoc3RhY2t0cmFjZVs2XSwgIndhc20gZnVuY3Rpb25AW3dhc20gY29kZV0i
KTsgLy8gd2FzbSBlbnRyeQorYXNzZXJ0LmVxKHN0YWNrdHJhY2VbMV0sICJ3YXNtLXN0dWJAW3dh
c20gY29kZV0iKTsgLy8gdGhlIHdhc20tPmpzIHN0dWIKK2Fzc2VydC5lcShzdGFja3RyYWNlWzJd
LCAiQzc0QjM0MUM4NjJGODMxRjRGNzUwNjhERjRFNDJBQjM2RkIzNDQ2Ri53YXNtLWZ1bmN0aW9u
W19lZ2dzXUBbd2FzbSBjb2RlXSIpOworYXNzZXJ0LmVxKHN0YWNrdHJhY2VbM10sICJDNzRCMzQx
Qzg2MkY4MzFGNEY3NTA2OERGNEU0MkFCMzZGQjM0NDZGLndhc20tZnVuY3Rpb25bX2JhY29uXUBb
d2FzbSBjb2RlXSIpOworYXNzZXJ0LmVxKHN0YWNrdHJhY2VbNF0sICJDNzRCMzQxQzg2MkY4MzFG
NEY3NTA2OERGNEU0MkFCMzZGQjM0NDZGLndhc20tZnVuY3Rpb25bX3NwYW1dQFt3YXNtIGNvZGVd
Iik7Cithc3NlcnQuZXEoc3RhY2t0cmFjZVs1XSwgIkM3NEIzNDFDODYyRjgzMUY0Rjc1MDY4REY0
RTQyQUIzNkZCMzQ0NkYud2FzbS1mdW5jdGlvbltfcGFycm90XUBbd2FzbSBjb2RlXSIpOworYXNz
ZXJ0LmVxKHN0YWNrdHJhY2VbNl0sICJ3YXNtLXN0dWJAW3dhc20gY29kZV0iKTsgLy8gd2FzbSBl
bnRyeQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3N0YWNrLW92ZXJm
bG93LmpzIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3N0YWNrLW92ZXJmbG93LmpzCmlu
ZGV4IDNiNDM5YmQuLjI5MjVmOTcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10
ZXN0cy9zdGFjay1vdmVyZmxvdy5qcworKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMv
c3RhY2stb3ZlcmZsb3cuanMKQEAgLTQ3LDcgKzQ3LDcgQEAgaW1wb3J0ICogYXMgYXNzZXJ0IGZy
b20gJy4uL2Fzc2VydC5qcycKICAgICAgICAgYXNzZXJ0LnRydXRoeShzdGFjay5sZW5ndGggPiA1
MCk7CiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTA7ICsraSkgewogICAgICAgICAgICAg
bGV0IGl0ZW0gPSBzdGFja1tzdGFjay5sZW5ndGggLSBpIC0gMV07Ci0gICAgICAgICAgICBhc3Nl
cnQuZXEoaXRlbSwgIndhc20gZnVuY3Rpb246IDBAW3dhc20gY29kZV0iKTsKKyAgICAgICAgICAg
IGFzc2VydC5tYXRjaGVzKGl0ZW0sIC9bQS1GMC05XXs0MH1cLndhc20tZnVuY3Rpb25cWzBcXUBc
W3dhc20gY29kZVxdLyk7CiAgICAgICAgIH0gCiAgICAgfQogICAgIGFzc2VydE92ZXJmbG93cyhp
MSk7CkBAIC0xMjYsMTcgKzEyNiwxNyBAQCBpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNz
ZXJ0LmpzJwogCiAgICAgICAgIHN0YWNrID0gc3RhY2suc3BsaXQoIlxuIik7CiAgICAgICAgIGFz
c2VydC50cnV0aHkoc3RhY2subGVuZ3RoID4gNTApOwotICAgICAgICBjb25zdCBvbmVTdHJpbmcg
PSAid2FzbSBmdW5jdGlvbjogMUBbd2FzbSBjb2RlXSI7Ci0gICAgICAgIGNvbnN0IHplcm9TdHJp
bmcgPSAid2FzbSBmdW5jdGlvbjogMEBbd2FzbSBjb2RlXSI7Ci0gICAgICAgIGxldCBjdXJyZW50
SW5kZXggPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXSA9PT0gb25lU3RyaW5nID8gMSA6IDA7Cisg
ICAgICAgIGNvbnN0IG9uZVJlID0gL1tBLUYwLTldezQwfVwud2FzbS1mdW5jdGlvblxbMVxdQFxb
d2FzbSBjb2RlXF0vOworICAgICAgICBjb25zdCB6ZXJvUmUgPSAvW0EtRjAtOV17NDB9XC53YXNt
LWZ1bmN0aW9uXFswXF1AXFt3YXNtIGNvZGVcXS87CisgICAgICAgIGxldCBjdXJyZW50SW5kZXgg
PSBvbmVSZS50ZXN0KHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdKSA/IDEgOiAwOwogICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDUwOyArK2kpIHsKICAgICAgICAgICAgIGxldCBpdGVtID0gc3Rh
Y2tbc3RhY2subGVuZ3RoIC0gMSAtIGldOwogICAgICAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA9
PT0gMSkgewotICAgICAgICAgICAgICAgIGFzc2VydC5lcShpdGVtLCBvbmVTdHJpbmcpOworICAg
ICAgICAgICAgICAgIGFzc2VydC5tYXRjaGVzKGl0ZW0sIG9uZVJlKTsKICAgICAgICAgICAgICAg
ICBjdXJyZW50SW5kZXggPSAwOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXEoY3VycmVudEluZGV4LCAwKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXEo
aXRlbSwgemVyb1N0cmluZyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0Lm1hdGNoZXMoaXRlbSwg
emVyb1JlKTsKICAgICAgICAgICAgICAgICBjdXJyZW50SW5kZXggPSAxOwogICAgICAgICAgICAg
fQogICAgICAgICB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvc3Rh
Y2stdHJhY2UuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvc3RhY2stdHJhY2UuanMK
aW5kZXggZDcwYjNlYS4uMjE0N2EzNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9u
LXRlc3RzL3N0YWNrLXRyYWNlLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9z
dGFjay10cmFjZS5qcwpAQCAtMSw5ICsxLDUgQEAKIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1
aWxkZXIuanMnCi0KLWZ1bmN0aW9uIGFzc2VydChiKSB7Ci0gICAgaWYgKCFiKQotICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkJhZCIpOwotfQoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fz
c2VydC5qcycKIAogY29uc3QgYnVpbGRlciA9IChuZXcgQnVpbGRlcigpKQogICAgIC5UeXBlKCku
RW5kKCkKQEAgLTQwLDE4ICszNiwxOCBAQCBsZXQgaW1wID0gKCkgPT4gewogY29uc3QgYmluID0g
YnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpOwogY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2Vt
Ymx5Lk1vZHVsZShiaW4pOwogbGV0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNl
KG1vZHVsZSwge2ltcDoge2Y6IGltcH19KTsKLWFzc2VydCghc3RhY2t0cmFjZSk7Cithc3NlcnQu
ZmFsc3koc3RhY2t0cmFjZSk7CiBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKICAg
ICBpbnN0YW5jZS5leHBvcnRzLmVudHJ5KCk7Ci0gICAgYXNzZXJ0KHN0YWNrdHJhY2UpOworICAg
IGFzc2VydC50cnV0aHkoc3RhY2t0cmFjZSk7CiAgICAgc3RhY2t0cmFjZSA9IHN0YWNrdHJhY2Uu
c3BsaXQoIlxuIik7Ci0gICAgYXNzZXJ0KHN0YWNrdHJhY2VbMF0uaW5kZXhPZigiaW1wIikgIT09
IC0xKTsgLy8gdGhlIGFycm93IGZ1bmN0aW9uIGltcG9ydCBuYW1lZCAiaW1wIi4KLSAgICBhc3Nl
cnQoc3RhY2t0cmFjZVsxXSA9PT0gIndhc20gZnVuY3Rpb25AW3dhc20gY29kZV0iKTsgLy8gdGhl
IHdhc20tPmpzIHN0dWIKLSAgICBhc3NlcnQoc3RhY2t0cmFjZVsyXSA9PT0gIndhc20gZnVuY3Rp
b246IDRAW3dhc20gY29kZV0iKTsKLSAgICBhc3NlcnQoc3RhY2t0cmFjZVszXSA9PT0gIndhc20g
ZnVuY3Rpb246IDJAW3dhc20gY29kZV0iKTsKLSAgICBhc3NlcnQoc3RhY2t0cmFjZVs0XSA9PT0g
Indhc20gZnVuY3Rpb246IDNAW3dhc20gY29kZV0iKTsKLSAgICBhc3NlcnQoc3RhY2t0cmFjZVs1
XSA9PT0gIndhc20gZnVuY3Rpb246IDFAW3dhc20gY29kZV0iKTsKLSAgICBhc3NlcnQoc3RhY2t0
cmFjZVs2XSA9PT0gIndhc20gZnVuY3Rpb25AW3dhc20gY29kZV0iKTsgLy8gd2FzbSBlbnRyeQor
ICAgIGFzc2VydC50cnV0aHkoc3RhY2t0cmFjZVswXS5pbmRleE9mKCJpbXAiKSAhPT0gLTEpOyAv
LyB0aGUgYXJyb3cgZnVuY3Rpb24gaW1wb3J0IG5hbWVkICJpbXAiLgorICAgIGFzc2VydC5lcShz
dGFja3RyYWNlWzFdLCAid2FzbS1zdHViQFt3YXNtIGNvZGVdIik7IC8vIHRoZSB3YXNtLT5qcyBz
dHViCisgICAgYXNzZXJ0LmVxKHN0YWNrdHJhY2VbMl0sICIyQzc3RTk3RDc3NTA2M0E4NjhFRjQ0
MzdEQTI2MDI0NUFGQTk0NTgzLndhc20tZnVuY3Rpb25bNF1AW3dhc20gY29kZV0iKTsKKyAgICBh
c3NlcnQuZXEoc3RhY2t0cmFjZVszXSwgIjJDNzdFOTdENzc1MDYzQTg2OEVGNDQzN0RBMjYwMjQ1
QUZBOTQ1ODMud2FzbS1mdW5jdGlvblsyXUBbd2FzbSBjb2RlXSIpOworICAgIGFzc2VydC5lcShz
dGFja3RyYWNlWzRdLCAiMkM3N0U5N0Q3NzUwNjNBODY4RUY0NDM3REEyNjAyNDVBRkE5NDU4My53
YXNtLWZ1bmN0aW9uWzNdQFt3YXNtIGNvZGVdIik7CisgICAgYXNzZXJ0LmVxKHN0YWNrdHJhY2Vb
NV0sICIyQzc3RTk3RDc3NTA2M0E4NjhFRjQ0MzdEQTI2MDI0NUFGQTk0NTgzLndhc20tZnVuY3Rp
b25bMV1AW3dhc20gY29kZV0iKTsKKyAgICBhc3NlcnQuZXEoc3RhY2t0cmFjZVs2XSwgIndhc20t
c3R1YkBbd2FzbSBjb2RlXSIpOyAvLyB3YXNtIGVudHJ5CiAKICAgICBzdGFja3RyYWNlID0gbnVs
bDsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWFmdGVy
LWNyb3NzLWluc3RhbmNlLWNhbGwuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJh
cC1hZnRlci1jcm9zcy1pbnN0YW5jZS1jYWxsLmpzCmluZGV4IDBkODY5NDMuLjE5NjMzNDUgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWFmdGVyLWNyb3NzLWlu
c3RhbmNlLWNhbGwuanMKKysrIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtYWZ0
ZXItY3Jvc3MtaW5zdGFuY2UtY2FsbC5qcwpAQCAtNTIsNyArNTIsNyBAQCBsZXQgZm9vMiA9IG5l
dyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIGltcG9ydE9iamVjdCkuZXhwb3J0cy5mb287
CiAKIAogZnVuY3Rpb24gd2FzbUZyYW1lQ291bnRGcm9tRXJyb3IoZSkgewotICAgIGxldCBzdGFj
a0ZyYW1lcyA9IGUuc3RhY2suc3BsaXQoIlxuIikuZmlsdGVyKChzKSA9PiBzLmluZGV4T2YoIndh
c20gZnVuY3Rpb24iKSAhPT0gLTEpOworICAgIGxldCBzdGFja0ZyYW1lcyA9IGUuc3RhY2suc3Bs
aXQoIlxuIikuZmlsdGVyKChzKSA9PiBzLmluZGV4T2YoIndhc20tIikgIT09IC0xKTsKICAgICBy
ZXR1cm4gc3RhY2tGcmFtZXMubGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20v
ZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLTIuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVz
dHMvdHJhcC1sb2FkLTIuanMKaW5kZXggZjk5YjFjYS4uYTZhODk3MyAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC0yLmpzCisrKyBiL0pTVGVzdHMvd2Fz
bS9mdW5jdGlvbi10ZXN0cy90cmFwLWxvYWQtMi5qcwpAQCAtMjAsNyArMjAsNyBAQCBjb25zdCBi
dWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCiAgICAgLkVuZCgpOwogCiBmdW5jdGlvbiB3YXNtRnJh
bWVDb3VudEZyb21FcnJvcihlKSB7Ci0gICAgbGV0IHN0YWNrRnJhbWVzID0gZS5zdGFjay5zcGxp
dCgiXG4iKS5maWx0ZXIoKHMpID0+IHMuaW5kZXhPZigid2FzbSBmdW5jdGlvbiIpICE9PSAtMSk7
CisgICAgbGV0IHN0YWNrRnJhbWVzID0gZS5zdGFjay5zcGxpdCgiXG4iKS5maWx0ZXIoKHMpID0+
IHMuaW5kZXhPZigid2FzbS0iKSAhPT0gLTEpOwogICAgIHJldHVybiBzdGFja0ZyYW1lcy5sZW5n
dGg7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90cmFwLWxv
YWQuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvdHJhcC1sb2FkLmpzCmluZGV4IGQ5
OGE1NjcuLjdjZjBlOTggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy90
cmFwLWxvYWQuanMKKysrIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL3RyYXAtbG9hZC5q
cwpAQCAtMjQsNyArMjQsNyBAQCBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxl
KGJpbik7CiBjb25zdCBmb28gPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7YTog
e2I6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6IG51bVBhZ2VzfSl9fSkuZXhwb3J0
cy5mb287CiAKIGZ1bmN0aW9uIHdhc21GcmFtZUNvdW50RnJvbUVycm9yKGUpIHsKLSAgICBsZXQg
c3RhY2tGcmFtZXMgPSBlLnN0YWNrLnNwbGl0KCJcbiIpLmZpbHRlcigocykgPT4gcy5pbmRleE9m
KCJ3YXNtIGZ1bmN0aW9uIikgIT09IC0xKTsKKyAgICBsZXQgc3RhY2tGcmFtZXMgPSBlLnN0YWNr
LnNwbGl0KCJcbiIpLmZpbHRlcigocykgPT4gcy5pbmRleE9mKCJ3YXNtLSIpICE9PSAtMSk7CiAg
ICAgcmV0dXJuIHN0YWNrRnJhbWVzLmxlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
aW5kZXggOTU3NzcyMy4uMmRkZTFjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzcgQEAKKzIwMTctMTEtMzAgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgor
CisgICAgICAgIFdlYkFzc2VtYmx5OiBpbXByb3ZlIHN0YWNrIHRyYWNlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkzNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBTdGFjayB0cmFjZXMgbm93IGluY2x1ZGU6
CisKKyAgICAgICAgICAtIE1vZHVsZSBuYW1lLCBpZiBwcm92aWRlZCBieSB0aGUgbmFtZSBzZWN0
aW9uLgorICAgICAgICAgIC0gTW9kdWxlIFNIQTEgaGFzaCBpZiBubyBuYW1lIHdhcyBwcm92aWRl
ZAorICAgICAgICAgIC0gU3R1YiBpZGVudGlmaWNhdGlvbiwgdG8gZGlmZmVyZW50aWF0ZSBmcm9t
IHVzZXIgY29kZQorICAgICAgICAgIC0gU2xpZ2h0bHkgZGlmZmVyZW50IG5hbWluZyB0byBtYXRj
aCBkZXNpZ24gZnJvbToKKyAgICAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2Vt
Ymx5L2Rlc2lnbi9ibG9iL21hc3Rlci9XZWIubWQjZGV2ZWxvcGVyLWZhY2luZy1kaXNwbGF5LWNv
bnZlbnRpb25zCisKKyAgICAgICAgKiBpbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6OkZyYW1lOjpmdW5jdGlvbk5hbWUgY29uc3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RhY2tGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6
OmZ1bmN0aW9uTmFtZSBjb25zdCk6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAqIHdhc20vV2FzbUluZGV4T3JOYW1lLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6SW5kZXhPck5hbWU6OkluZGV4T3JOYW1lKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
bWFrZVN0cmluZyk6CisgICAgICAgICogd2FzbS9XYXNtSW5kZXhPck5hbWUuaDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6SW5kZXhPck5hbWU6Om5hbWVTZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiB3
YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVs
ZUluZm9ybWF0aW9uOjpNb2R1bGVJbmZvcm1hdGlvbik6CisgICAgICAgICogd2FzbS9XYXNtTW9k
dWxlSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKiB3YXNtL1dhc21OYW1lU2VjdGlvbi5oOgorICAg
ICAgICAoSlNDOjpXYXNtOjpOYW1lU2VjdGlvbjo6TmFtZVNlY3Rpb24pOgorICAgICAgICAoSlND
OjpXYXNtOjpOYW1lU2VjdGlvbjo6Z2V0KToKKyAgICAgICAgKiB3YXNtL1dhc21OYW1lU2VjdGlv
blBhcnNlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok5hbWVTZWN0aW9uUGFyc2VyOjpwYXJz
ZSk6CisKIDIwMTctMTEtMjggIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFN0cmljdCBhbmQgc2xvcHB5IGZ1bmN0aW9ucyBzaG91bGRuJ3Qgc2hhcmUgc3RydWN0
dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tW
aXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0
b3IuY3BwCmluZGV4IGQwODJiNjMuLjMzYmY5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCkBAIC0yNzksMTAgKzI3OSw3IEBA
IFN0cmluZyBTdGFja1Zpc2l0b3I6OkZyYW1lOjpmdW5jdGlvbk5hbWUoKSBjb25zdAogCiAgICAg
c3dpdGNoIChjb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBDb2RlVHlwZTo6V2FzbToKLSAgICAgICAg
aWYgKG1fd2FzbUZ1bmN0aW9uSW5kZXhPck5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgdHJh
Y2VMaW5lID0gbWFrZVN0cmluZygid2FzbSBmdW5jdGlvbiIpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICB0cmFjZUxpbmUgPSBtYWtlU3RyaW5nKCJ3YXNtIGZ1bmN0aW9uOiAiLCBtYWtlU3Ry
aW5nKG1fd2FzbUZ1bmN0aW9uSW5kZXhPck5hbWUpKTsKKyAgICAgICAgdHJhY2VMaW5lID0gbWFr
ZVN0cmluZyhtX3dhc21GdW5jdGlvbkluZGV4T3JOYW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBDb2RlVHlwZTo6RXZhbDoKICAgICAgICAgdHJhY2VMaW5lID0gQVNDSUlMaXRlcmFsKCJl
dmFsIGNvZGUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
YWNrRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5j
cHAKaW5kZXggZWRiMzI2YS4uOWYyZDYwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RhY2tGcmFtZS5jcHAKQEAgLTc1LDExICs3NSw4IEBAIFN0cmluZyBTdGFja0ZyYW1l
Ojpzb3VyY2VVUkwoKSBjb25zdAogCiBTdHJpbmcgU3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKFZN
JiB2bSkgY29uc3QKIHsKLSAgICBpZiAobV9pc1dhc21GcmFtZSkgewotICAgICAgICBpZiAobV93
YXNtRnVuY3Rpb25JbmRleE9yTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJ3YXNtIGZ1bmN0aW9uIik7Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJ3
YXNtIGZ1bmN0aW9uOiAiLCBtYWtlU3RyaW5nKG1fd2FzbUZ1bmN0aW9uSW5kZXhPck5hbWUpKTsK
LSAgICB9CisgICAgaWYgKG1faXNXYXNtRnJhbWUpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5n
KG1fd2FzbUZ1bmN0aW9uSW5kZXhPck5hbWUpOwogCiAgICAgaWYgKG1fY29kZUJsb2NrKSB7CiAg
ICAgICAgIHN3aXRjaCAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkpIHsKQEAgLTE0Nyw5ICsxNDQs
NiBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6dG9TdHJpbmcoVk0mIHZtKSBjb25zdAogCiB2b2lkIFN0
YWNrRnJhbWU6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgLy8g
RklYTUU6IFdlIHNob3VsZCBkbyBzb21ldGhpbmcgaGVyZSBhYm91dCBXYXNtOjpJbmRleE9yTmFt
ZS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NjQ0
Ci0gICAgCiAgICAgaWYgKG1fY2FsbGVlKQogICAgICAgICB2aXNpdG9yLmFwcGVuZChtX2NhbGxl
ZSk7CiAgICAgaWYgKG1fY29kZUJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUluZGV4T3JOYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21JbmRleE9yTmFtZS5jcHAKaW5kZXggZjNiZWY2NS4uNjc0YTM1MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluZGV4T3JOYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5kZXhPck5hbWUuY3BwCkBAIC0zOSwxNyArMzks
MTggQEAgSW5kZXhPck5hbWU6OkluZGV4T3JOYW1lKEluZGV4IGluZGV4LCBzdGQ6OnBhaXI8Y29u
c3QgTmFtZSosIFJlZlB0cjxOYW1lU2VjdGlvbj4KICAgICAgICAgICAgIG1faW5kZXhOYW1lLm5h
bWUgPSBuYW1lLmZpcnN0OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2luZGV4TmFtZS5p
bmRleCA9IGluZGV4VGFnIHwgaW5kZXg7Ci0gICAgICAgIG1fbmFtZVNlY3Rpb24gPSBXVEZNb3Zl
KG5hbWUuc2Vjb25kKTsKICAgICB9CisgICAgbV9uYW1lU2VjdGlvbiA9IFdURk1vdmUobmFtZS5z
ZWNvbmQpOwogfQogCiBTdHJpbmcgbWFrZVN0cmluZyhjb25zdCBJbmRleE9yTmFtZSYgaW9uKQog
ewogICAgIGlmIChpb24uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
ICAgIHJldHVybiBTdHJpbmcoIndhc20tc3R1YiIpOworICAgIGNvbnN0IFN0cmluZyBtb2R1bGVO
YW1lID0gaW9uLm5hbWVTZWN0aW9uKCktPm1vZHVsZU5hbWUuc2l6ZSgpID8gU3RyaW5nKGlvbi5u
YW1lU2VjdGlvbigpLT5tb2R1bGVOYW1lLmRhdGEoKSwgaW9uLm5hbWVTZWN0aW9uKCktPm1vZHVs
ZU5hbWUuc2l6ZSgpKSA6IFN0cmluZyhpb24ubmFtZVNlY3Rpb24oKS0+bW9kdWxlSGFzaC5kYXRh
KCksIGlvbi5uYW1lU2VjdGlvbigpLT5tb2R1bGVIYXNoLnNpemUoKSk7CiAgICAgaWYgKGlvbi5p
c0luZGV4KCkpCi0gICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihpb24ubV9pbmRleE5hbWUu
aW5kZXggJiB+SW5kZXhPck5hbWU6OmluZGV4VGFnKTsKLSAgICByZXR1cm4gU3RyaW5nKGlvbi5t
X2luZGV4TmFtZS5uYW1lLT5kYXRhKCksIGlvbi5tX2luZGV4TmFtZS5uYW1lLT5zaXplKCkpOwot
fTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcobW9kdWxlTmFtZSwgIi53YXNtLWZ1bmN0aW9u
WyIsIFN0cmluZzo6bnVtYmVyKGlvbi5tX2luZGV4TmFtZS5pbmRleCAmIH5JbmRleE9yTmFtZTo6
aW5kZXhUYWcpLCAiXSIpOworICAgIHJldHVybiBtYWtlU3RyaW5nKG1vZHVsZU5hbWUsICIud2Fz
bS1mdW5jdGlvblsiLCBTdHJpbmcoaW9uLm1faW5kZXhOYW1lLm5hbWUtPmRhdGEoKSwgaW9uLm1f
aW5kZXhOYW1lLm5hbWUtPnNpemUoKSksICJdIik7Cit9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpXYXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5kZXhP
ck5hbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbmRleE9yTmFtZS5oCmlu
ZGV4IDcwYzdlYjguLmJlYTFmM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21JbmRleE9yTmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21JbmRleE9yTmFtZS5oCkBAIC00Myw2ICs0Myw3IEBAIHN0cnVjdCBJbmRleE9yTmFtZSB7CiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PEluZGV4PihtX2lu
ZGV4TmFtZSkgJiBlbXB0eVRhZzsgfQogICAgIGJvb2wgaXNJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IGJpdHdpc2VfY2FzdDxJbmRleD4obV9pbmRleE5hbWUpICYgaW5kZXhUYWc7IH0KICAgICBib29s
IGlzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICEoaXNFbXB0eSgpIHx8IGlzTmFtZSgpKTsgfQorICAg
IE5hbWVTZWN0aW9uKiBuYW1lU2VjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZVNlY3Rpb24g
PyBtX25hbWVTZWN0aW9uLmdldCgpIDogbnVsbHB0cjsgfQogCiAgICAgZnJpZW5kIFN0cmluZyBt
YWtlU3RyaW5nKGNvbnN0IEluZGV4T3JOYW1lJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uY3BwCmluZGV4IDlkYTVjZDAuLjBj
ODAzMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJ
bmZvcm1hdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVs
ZUluZm9ybWF0aW9uLmNwcApAQCAtMjksMTIgKzI5LDIzIEBACiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogCiAjaW5jbHVkZSAiV2FzbU5hbWVTZWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1NIQTEu
aD4KKworbmFtZXNwYWNlIHsKK0NTdHJpbmcgc2hhMShjb25zdCBWZWN0b3I8dWludDhfdD4mIGlu
cHV0KQoreworICAgIFNIQTEgaGFzaDsKKyAgICBoYXNoLmFkZEJ5dGVzKGlucHV0KTsKKyAgICBy
ZXR1cm4gaGFzaC5jb21wdXRlSGV4RGlnZXN0KCk7Cit9Cit9CiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgV2FzbSB7CiAKIE1vZHVsZUluZm9ybWF0aW9uOjpNb2R1bGVJbmZvcm1hdGlvbihW
ZWN0b3I8dWludDhfdD4mJiBzb3VyY2VCeXRlcykKICAgICA6IHNvdXJjZShXVEZNb3ZlKHNvdXJj
ZUJ5dGVzKSkKLSAgICAsIG5hbWVTZWN0aW9uKG5ldyBOYW1lU2VjdGlvbigpKQorICAgICwgaGFz
aChzaGExKHNvdXJjZSkpCisgICAgLCBuYW1lU2VjdGlvbihuZXcgTmFtZVNlY3Rpb24oaGFzaCkp
CiB7CiB9CiBNb2R1bGVJbmZvcm1hdGlvbjo6fk1vZHVsZUluZm9ybWF0aW9uKCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oCmlu
ZGV4IDE4MjM5ZTMuLmM0ZjVlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oCkBAIC01Nyw2ICs1Nyw3IEBAIHN0cnVjdCBNb2R1
bGVJbmZvcm1hdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGVJbmZvcm1h
dGlvbj4gewogICAgIHVpbnQzMl90IGludGVybmFsRnVuY3Rpb25Db3VudCgpIGNvbnN0IHsgcmV0
dXJuIGludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLnNpemUoKTsgfQogCiAgICAgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZTsKKyAgICBjb25zdCBDU3RyaW5nIGhhc2g7CiAKICAg
ICBWZWN0b3I8SW1wb3J0PiBpbXBvcnRzOwogICAgIFZlY3RvcjxTaWduYXR1cmVJbmRleD4gaW1w
b3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU5hbWVTZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTmFtZVNlY3Rpb24uaAppbmRleCA4YjFmMDA5Li4yYTliMGI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTmFtZVNlY3Rpb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTmFtZVNlY3Rpb24uaApAQCAtMjYsNiArMjYsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXYXNtTmFtZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8dXRpbGl0eT4KQEAgLTMzLDExICszNCwyMCBA
QAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogc3RydWN0IE5hbWVTZWN0aW9u
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE5hbWVTZWN0aW9uPiB7CisgICAgTmFtZVNl
Y3Rpb24oY29uc3QgQ1N0cmluZyAmaGFzaCkKKyAgICAgICAgOiBtb2R1bGVIYXNoKGhhc2gubGVu
Z3RoKCkpCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhhc2gubGVuZ3Ro
KCk7ICsraSkKKyAgICAgICAgICAgIG1vZHVsZUhhc2hbaV0gPSBzdGF0aWNfY2FzdDx1aW50OF90
PigqKGhhc2guZGF0YSgpICsgaSkpOworICAgIH0KKyAgICBOYW1lU2VjdGlvbihjb25zdCBOYW1l
U2VjdGlvbiYpID0gZGVsZXRlOworCiAgICAgc3RkOjpwYWlyPGNvbnN0IE5hbWUqLCBSZWZQdHI8
TmFtZVNlY3Rpb24+PiBnZXQoc2l6ZV90IGZ1bmN0aW9uSW5kZXhTcGFjZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBmdW5jdGlvbkluZGV4U3BhY2UgPCBmdW5jdGlvbk5hbWVzLnNpemUoKSA/IHN0
ZDo6bWFrZV9wYWlyKCZmdW5jdGlvbk5hbWVzW2Z1bmN0aW9uSW5kZXhTcGFjZV0sIFJlZlB0cjxO
YW1lU2VjdGlvbj4odGhpcykpIDogc3RkOjpwYWlyPGNvbnN0IE5hbWUqLCBSZWZQdHI8TmFtZVNl
Y3Rpb24+PihudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWly
KGZ1bmN0aW9uSW5kZXhTcGFjZSA8IGZ1bmN0aW9uTmFtZXMuc2l6ZSgpID8gJmZ1bmN0aW9uTmFt
ZXNbZnVuY3Rpb25JbmRleFNwYWNlXSA6IG51bGxwdHIsIFJlZlB0cjxOYW1lU2VjdGlvbj4odGhp
cykpOwogICAgIH0KICAgICBOYW1lIG1vZHVsZU5hbWU7CisgICAgTmFtZSBtb2R1bGVIYXNoOwog
ICAgIFZlY3RvcjxOYW1lPiBmdW5jdGlvbk5hbWVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU5hbWVTZWN0aW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21OYW1lU2VjdGlvblBhcnNlci5jcHAKaW5kZXggYmY1OWUw
NS4uNzMzOTYyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU5h
bWVTZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TmFtZVNlY3Rpb25QYXJzZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgV2FzbSB7CiAKIGF1dG8gTmFtZVNlY3Rpb25QYXJzZXI6OnBhcnNlKCkgLT4gUmVz
dWx0CiB7Ci0gICAgUmVmUHRyPE5hbWVTZWN0aW9uPiBuYW1lU2VjdGlvbihhZG9wdFJlZigqbmV3
IE5hbWVTZWN0aW9uKCkpKTsKKyAgICBSZWZQdHI8TmFtZVNlY3Rpb24+IG5hbWVTZWN0aW9uKGFk
b3B0UmVmKCpuZXcgTmFtZVNlY3Rpb24obV9pbmZvLmhhc2gpKSk7CiAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighbmFtZVNlY3Rpb24tPmZ1bmN0aW9uTmFtZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KG1f
aW5mby5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCkpLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1l
bW9yeSBmb3IgZnVuY3Rpb24gbmFtZXMiKTsKICAgICBuYW1lU2VjdGlvbi0+ZnVuY3Rpb25OYW1l
cy5yZXNpemUobV9pbmZvLmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKSk7CiAKLS0gCjIuOS4zCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>