<?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>149441</bug_id>
          
          <creation_ts>2015-09-21 18:17:11 -0700</creation_ts>
          <short_desc>Implement ::slotted pseudo element</short_desc>
          <delta_ts>2021-03-27 03:27:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1127875</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-21 18:17:11 -0700</bug_when>
    <thetext>We should probide a mechanism to style nodes assigned to a slot inside a shadow tree.

For example, if we&apos;re creating a list view, we may want to add a line between items by having rules like
&quot;::slotted &gt; * { border-bottom: solid 1px #ccc; }&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127876</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-21 18:17:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/22731987&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168085</commentid>
    <comment_count>2</comment_count>
      <attachid>272203</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-25 07:50:37 -0800</bug_when>
    <thetext>Created attachment 272203
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168186</commentid>
    <comment_count>3</comment_count>
      <attachid>272226</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-25 13:00:51 -0800</bug_when>
    <thetext>Created attachment 272226
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168187</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-25 13:03:32 -0800</bug_when>
    <thetext>Attachment 272226 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:9:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 15 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>1168196</commentid>
    <comment_count>5</comment_count>
      <attachid>272230</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-25 13:21:58 -0800</bug_when>
    <thetext>Created attachment 272230
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168197</commentid>
    <comment_count>6</comment_count>
      <attachid>272231</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-25 13:24:49 -0800</bug_when>
    <thetext>Created attachment 272231
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168439</commentid>
    <comment_count>7</comment_count>
      <attachid>272310</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-26 00:09:30 -0800</bug_when>
    <thetext>Created attachment 272310
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168450</commentid>
    <comment_count>8</comment_count>
      <attachid>272310</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-02-26 00:36:31 -0800</bug_when>
    <thetext>Comment on attachment 272310
patch

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

The test change looks correct.  Someone who&apos;s more familiar with selector code should review it.

&gt; Source/WebCore/css/ElementRuleCollector.cpp:256
&gt; +    auto* hostShadowRoot = m_element.parentNode()-&gt;shadowRoot();
&gt; +    ASSERT(hostShadowRoot);
&gt; +    auto* slot = hostShadowRoot-&gt;findAssignedSlot(m_element);
&gt; +    if (!slot)
&gt; +        return;

I think this isn&apos;t quite right for the distributed node case.
e.g. when an element X is assigned to a slot A, and the slot A is assigned to another slot B,
then the rule in B&apos;s shadow DOM that says ::slotted(X) is supposed to match X.

What&apos;s not clear from the Github issue is
whether we also need to match the rule in A&apos;s shadow DOM or not.

&gt; Source/WebCore/css/ElementRuleCollector.h:104
&gt; +    bool m_isMatchindSlottedPseudoElement { false };

Typo: Matchind -&gt; Matching.

&gt; LayoutTests/fast/shadow-dom/slotted-pseudo-element-css-text.html:65
&gt; +  for (var i = 0; i &lt; expectedCSSTexts.length; ++i)
&gt; +    assert_equals(cssRules.item(i).cssText, expectedCSSTexts[i]);
&gt; +  assert_equals(cssRules.length, expectedCSSTexts.length);

Can we call test for each selector so that we can see result per selector?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168463</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-26 01:52:38 -0800</bug_when>
    <thetext>&gt; I think this isn&apos;t quite right for the distributed node case.
&gt; e.g. when an element X is assigned to a slot A, and the slot A is assigned
&gt; to another slot B,
&gt; then the rule in B&apos;s shadow DOM that says ::slotted(X) is supposed to match
&gt; X.

Not sure what you mean here. You can&apos;t assign a slot to a slot since (functional) slots are only allowed in shadow trees. Nested hosts should work fine (and are tested by &apos;nested-host&apos; part of the test).

Can you sketch a test case of what you mean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168469</commentid>
    <comment_count>10</comment_count>
      <attachid>272318</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-26 02:57:44 -0800</bug_when>
    <thetext>Created attachment 272318
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168471</commentid>
    <comment_count>11</comment_count>
      <attachid>272319</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-26 03:11:34 -0800</bug_when>
    <thetext>Created attachment 272319
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168490</commentid>
    <comment_count>12</comment_count>
      <attachid>272319</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-02-26 06:29:06 -0800</bug_when>
    <thetext>Comment on attachment 272319
patch

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

r=me

&gt; Source/WebCore/css/ElementRuleCollector.cpp:303
&gt; +    RuleSet::RuleDataVector ruleDataVector;
&gt; +    for (auto&amp; matchedRule : m_matchedRules)
&gt; +        ruleDataVector.append(*matchedRule.ruleData);
&gt; +    return ruleDataVector;

Could use some reserveInitialCapacity+uncheckedAppend here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168494</commentid>
    <comment_count>13</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-26 06:57:46 -0800</bug_when>
    <thetext>https://trac.webkit.org/r197165</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272203</attachid>
            <date>2016-02-25 07:50:37 -0800</date>
            <delta_ts>2016-02-25 13:00:51 -0800</delta_ts>
            <desc>wip</desc>
            <filename>slotted-4.patch</filename>
            <type>text/plain</type>
            <size>14329</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgkocmV2aXNpb24gMTk3MDI3KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgkod29ya2luZyBjb3B5KQpAQCAtMzY1
LDYgKzM2NSwxMiBAQCBzdGF0aWMgYm9vbCBzZWxlY3Rvckxpc3REb2VzTm90TWF0Y2hBbnlQCiAK
ICNlbmRpZgogCisjaWYgRU5BQkxFX1NIQURPV19ET00KKworJXRva2VuIDxzdHJpbmc+IFNMT1RU
RURGVU5DVElPTgorCisjZW5kaWYKKwogJSUKIAogc3R5bGVzaGVldDoKQEAgLTEzNTcsNiArMTM2
MywxMSBAQCBwc2V1ZG86CiAgICAgICAgICQkID0gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNl
dWRvRWxlbWVudEN1ZUZ1bmN0aW9uU2VsZWN0b3IoJDMsICQ1KTsKICAgICB9CiAjZW5kaWYKKyNp
ZiBFTkFCTEVfU0hBRE9XX0RPTQorICAgIHwgJzonICc6JyBTTE9UVEVERlVOQ1RJT04gbWF5YmVf
c3BhY2Ugc2ltcGxlX3NlbGVjdG9yX2xpc3QgbWF5YmVfc3BhY2UgJyknIHsKKyAgICAgICAgJCQg
PSBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50U2xvdHRlZEZ1bmN0aW9uU2Vs
ZWN0b3IoJDMsICQ1KTsKKyAgICB9CisjZW5kaWYKICAgICAvLyB1c2UgYnkgOi13ZWJraXQtYW55
LgogICAgIC8vIEZJWE1FOiBzaG91bGQgd2Ugc3VwcG9ydCBnZW5lcmljIHNlbGVjdG9ycyBoZXJl
IG9yIGp1c3Qgc2ltcGxlX3NlbGVjdG9ycz8KICAgICAvLyBVc2Ugc2ltcGxlX3NlbGVjdG9yX2xp
c3QgZm9yIG5vdyB0byBtYXRjaCAtbW96LWFueS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE4OTQsOCArMTE4OTQsMTMgQEAgaW5saW5lIGJvb2wgQ1NT
UGFyc2VyOjpkZXRlY3RGdW5jdGlvblR5cAogICAgICAgICAgICAgbV90b2tlbiA9IE1BVENIRVNG
VU5DVElPTjsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CisjaWYgRU5BQkxF
KFNIQURPV19ET00pCisgICAgICAgIGlmIChpc0VxdWFsVG9DU1NJZGVudGlmaWVyKG5hbWUsICJz
bG90dGVkIikpIHsKKyAgICAgICAgICAgIG1fdG9rZW4gPSBTTE9UVEVERlVOQ1RJT047CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLQogICAgIGNhc2UgOToKICAgICAgICAgaWYgKGlzRXF1YWxUb0NTU0lkZW50aWZpZXIo
bmFtZSwgIm50aC1jaGlsZCIpKSB7CiAgICAgICAgICAgICBtX3Rva2VuID0gTlRIQ0hJTERGVU5D
VElPTlM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAkocmV2aXNp
b24gMTk3MDI3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzMSw2ICsyMzEsMjQgQEAgQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1Bh
cnNlclNlbGVjdG9yOjpwYQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKK0NT
U1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50U2xv
dHRlZEZ1bmN0aW9uU2VsZWN0b3IoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiBmdW5jdGlvbklkZW50
aWZpZXIsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+PiogcGFyc2Vk
U2VsZWN0b3JWZWN0b3IpCit7CisgICAgQVNTRVJUX1VOVVNFRChmdW5jdGlvbklkZW50aWZpZXIs
IFN0cmluZyhmdW5jdGlvbklkZW50aWZpZXIpID09ICJzbG90dGVkKCIpOworCisgICAgc3RkOjp1
bmlxdWVfcHRyPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Pj4gc2Vs
ZWN0b3JWZWN0b3IocGFyc2VkU2VsZWN0b3JWZWN0b3IpOworCisgICAgaWYgKCFzZWxlY3RvclZl
Y3RvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHNlbGVjdG9yID0gc3Rk
OjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICBzZWxlY3Rvci0+bV9zZWxl
Y3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpOworICAgIHNlbGVjdG9y
LT5tX3NlbGVjdG9yLT5zZXRQc2V1ZG9FbGVtZW50VHlwZShDU1NTZWxlY3Rvcjo6UHNldWRvRWxl
bWVudFNsb3R0ZWQpOworICAgIHNlbGVjdG9yLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpzZWxlY3Rv
clZlY3Rvcik7CisgICAgcmV0dXJuIHNlbGVjdG9yLnJlbGVhc2UoKTsKK30KKyNlbmRpZgorCiBD
U1NQYXJzZXJTZWxlY3RvciogQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NBbmRD
b21wYXRpYmlsaXR5RWxlbWVudFNlbGVjdG9yKENTU1BhcnNlclN0cmluZyYgcHNldWRvVHlwZVN0
cmluZykKIHsKICAgICBpZiAocHNldWRvVHlwZVN0cmluZy5sZW5ndGgoKSAmJiBwc2V1ZG9UeXBl
U3RyaW5nW3BzZXVkb1R5cGVTdHJpbmcubGVuZ3RoKCkgLSAxXSA9PSAnKCcpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw3ICsy
MDMsMTAgQEAgY2xhc3MgQ1NTUGFyc2VyU2VsZWN0b3IgewogcHVibGljOgogICAgIHN0YXRpYyBD
U1NQYXJzZXJTZWxlY3RvciogcGFyc2VQYWdlUHNldWRvU2VsZWN0b3IoY29uc3QgQ1NTUGFyc2Vy
U3RyaW5nJiBwc2V1ZG9UeXBlU3RyaW5nKTsKICAgICBzdGF0aWMgQ1NTUGFyc2VyU2VsZWN0b3Iq
IHBhcnNlUHNldWRvRWxlbWVudFNlbGVjdG9yKENTU1BhcnNlclN0cmluZyYgcHNldWRvVHlwZVN0
cmluZyk7Ci0gICAgc3RhdGljIENTU1BhcnNlclNlbGVjdG9yKiBwYXJzZVBzZXVkb0VsZW1lbnRD
dWVGdW5jdGlvblNlbGVjdG9yKGNvbnN0IENTU1BhcnNlclN0cmluZyYgZnVuY3Rpb25JZGVudGlm
aWVyLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4qIHNlbGVjdG9y
VmVjdG9yKTsKKyAgICBzdGF0aWMgQ1NTUGFyc2VyU2VsZWN0b3IqIHBhcnNlUHNldWRvRWxlbWVu
dEN1ZUZ1bmN0aW9uU2VsZWN0b3IoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiBmdW5jdGlvbklkZW50
aWZpZXIsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+PiopOworI2lm
IEVOQUJMRShTSEFET1dfRE9NKQorICAgIHN0YXRpYyBDU1NQYXJzZXJTZWxlY3RvciogcGFyc2VQ
c2V1ZG9FbGVtZW50U2xvdHRlZEZ1bmN0aW9uU2VsZWN0b3IoY29uc3QgQ1NTUGFyc2VyU3RyaW5n
JiBmdW5jdGlvbklkZW50aWZpZXIsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+PiopOworI2VuZGlmCiAgICAgc3RhdGljIENTU1BhcnNlclNlbGVjdG9yKiBwYXJzZVBz
ZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRTZWxlY3RvcihDU1NQYXJzZXJTdHJpbmcm
IHBzZXVkb1R5cGVTdHJpbmcpOwogCiAgICAgQ1NTUGFyc2VyU2VsZWN0b3IoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkocmV2aXNpb24gMTk3MDI3KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk5LDYgKzI5OSw5
IEBAIFBzZXVkb0lkIENTU1NlbGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9FbGUKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50Q3VlOgogI2VuZGlmCisjaWYgRU5B
QkxFKFNIQURPV19ET00pCisgICAgY2FzZSBQc2V1ZG9FbGVtZW50U2xvdHRlZDoKKyNlbmRpZgog
ICAgIGNhc2UgUHNldWRvRWxlbWVudFVua25vd246CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50VXNl
ckFnZW50Q3VzdG9tOgogICAgIGNhc2UgUHNldWRvRWxlbWVudFdlYktpdEN1c3RvbToKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBzZXVkb0VsZW1lbnRTY3JvbGxiYXJU
cmFjaywKICAgICAgICAgICAgIFBzZXVkb0VsZW1lbnRTY3JvbGxiYXJUcmFja1BpZWNlLAogICAg
ICAgICAgICAgUHNldWRvRWxlbWVudFNlbGVjdGlvbiwKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
KyAgICAgICAgICAgIFBzZXVkb0VsZW1lbnRTbG90dGVkLAorI2VuZGlmCiAgICAgICAgICAgICBQ
c2V1ZG9FbGVtZW50VXNlckFnZW50Q3VzdG9tLAogICAgICAgICAgICAgUHNldWRvRWxlbWVudFdl
YktpdEN1c3RvbSwKICAgICAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50
UnVsZUNvbGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0VsZW1l
bnRSdWxlQ29sbGVjdG9yLmNwcAkocmV2aXNpb24gMTk3MDI3KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYs
NyBAQAogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5
d29yZHMuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxTbG90RWxl
bWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUg
Ik5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgpAQCAtMjA2LDYg
KzIwNyw5IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQXV0aG9yUnUKICNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAobV9lbGVtZW50LnNoYWRvd1Jvb3QoKSkKICAgICAg
ICAgbWF0Y2hIb3N0UHNldWRvQ2xhc3NSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcyk7CisKKyAgICBp
ZiAobV9lbGVtZW50LnBhcmVudE5vZGUoKS0+c2hhZG93Um9vdCgpKQorICAgICAgICBtYXRjaFNs
b3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMoaW5jbHVkZUVtcHR5UnVsZXMpOwogI2VuZGlmCiAKICAg
ICBjbGVhck1hdGNoZWRSdWxlcygpOwpAQCAtMjQxLDYgKzI0NSw1OSBAQCB2b2lkIEVsZW1lbnRS
dWxlQ29sbGVjdG9yOjptYXRjaEhvc3RQc2V1CiAgICAgLy8gRklYTUU6IE1hdGNoIHRoZSBzcGVj
IHdoZW4gaXQgaXMgZmluYWxpemVkLgogICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcygp
OwogfQorCit2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFNsb3R0ZWRQc2V1ZG9FbGVt
ZW50UnVsZXMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKK3sKKyAgICBhdXRvKiBob3N0U2hhZG93
Um9vdCA9IG1fZWxlbWVudC5wYXJlbnROb2RlKCktPnNoYWRvd1Jvb3QoKTsKKyAgICBBU1NFUlQo
aG9zdFNoYWRvd1Jvb3QpOworICAgIGF1dG8qIHNsb3QgPSBob3N0U2hhZG93Um9vdC0+ZmluZEFz
c2lnbmVkU2xvdChtX2VsZW1lbnQpOworICAgIGlmICghc2xvdCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8qIHNoYWRvd0F1dGhvclN0eWxlID0gaG9zdFNoYWRvd1Jvb3QtPnN0eWxlUmVzb2x2
ZXIoKS5ydWxlU2V0cygpLmF1dGhvclN0eWxlKCk7CisgICAgaWYgKCFzaGFkb3dBdXRob3JTdHls
ZSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIEZpbmQgb3V0IGlmIHRoZXJlIGFyZSBhbnkgOjpz
bG90dGVkIHJ1bGVzIGluIHRoZSBzaGFkb3cgdHJlZSBtYXRjaGluZyB0aGUgY3VycmVudCBzbG90
LgorICAgIC8vIEZJWE1FOiBUaGlzIGlzIHJlYWxseSBwYXJ0IG9mIHRoZSBzbG90IHN0eWxlIGFu
ZCBjb3VsZCBiZSBjYWNoZWQgd2hlbiByZXNvbHZpbmcgaXQuCisgICAgRWxlbWVudFJ1bGVDb2xs
ZWN0b3IgY29sbGVjdG9yKCpzbG90LCAqc2hhZG93QXV0aG9yU3R5bGUsIG51bGxwdHIpOworICAg
IGF1dG8gc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyA9IGNvbGxlY3Rvci5jb2xsZWN0U2xvdHRl
ZFBzZXVkb0VsZW1lbnRSdWxlc0ZvclNsb3QoaW5jbHVkZUVtcHR5UnVsZXMpOworICAgIGlmIChz
bG90dGVkUHNldWRvRWxlbWVudFJ1bGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGNoYW5nZShtX2lzTWF0Y2hpbmRTbG90dGVkUHNldWRv
RWxlbWVudCwgdHJ1ZSk7CisKKyAgICBjbGVhck1hdGNoZWRSdWxlcygpOworICAgIG1fcmVzdWx0
LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSA9IG1fcmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVzKCkuc2l6
ZSgpIC0gMTsKKyAgICBhdXRvIHJ1bGVSYW5nZSA9IG1fcmVzdWx0LnJhbmdlcy5hdXRob3JSdWxl
UmFuZ2UoKTsKKworICAgIC8vIE1hdGNoIGluIHRoZSBjdXJyZW50IHNjb3BlLgorICAgIE1hdGNo
UmVxdWVzdCBtYXRjaFJlcXVlc3QobnVsbHB0ciwgaW5jbHVkZUVtcHR5UnVsZXMpOworICAgIGNv
bGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCgmc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcywgbWF0
Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOworCisgICAgLy8gRklYTUU6IFdoYXQgaXMgdGhlIGNvcnJl
Y3Qgb3JkZXI/CisgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKCk7Cit9CisKK1J1bGVT
ZXQ6OlJ1bGVEYXRhVmVjdG9yIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0U2xvdHRlZFBz
ZXVkb0VsZW1lbnRSdWxlc0ZvclNsb3QoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKK3sKKyAgICBB
U1NFUlQoaXM8SFRNTFNsb3RFbGVtZW50PihtX2VsZW1lbnQpKTsKKworICAgIGNsZWFyTWF0Y2hl
ZFJ1bGVzKCk7CisKKyAgICBtX21vZGUgPSBTZWxlY3RvckNoZWNrZXI6Ok1vZGU6OkNvbGxlY3Rp
bmdSdWxlczsKKworICAgIC8vIE1hdGNoIGdsb2JhbCBhdXRob3IgcnVsZXMuCisgICAgTWF0Y2hS
ZXF1ZXN0IG1hdGNoUmVxdWVzdCgmbV9hdXRob3JTdHlsZSwgaW5jbHVkZUVtcHR5UnVsZXMpOwor
ICAgIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSBydWxlUmFuZ2UgPSBtX3Jlc3VsdC5yYW5nZXMu
YXV0aG9yUnVsZVJhbmdlKCk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KCZtX2F1
dGhvclN0eWxlLnNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBydWxl
UmFuZ2UpOworCisgICAgaWYgKG1fbWF0Y2hlZFJ1bGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yIHJ1bGVEYXRhVmVjdG9yOwor
ICAgIGZvciAoYXV0byYgbWF0Y2hlZFJ1bGUgOiBtX21hdGNoZWRSdWxlcykKKyAgICAgICAgcnVs
ZURhdGFWZWN0b3IuYXBwZW5kKCptYXRjaGVkUnVsZS5ydWxlRGF0YSk7CisgICAgcmV0dXJuIHJ1
bGVEYXRhVmVjdG9yOworfQogI2VuZGlmCiAKIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1h
dGNoVXNlclJ1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCkBAIC0yODQsNiArMzQxLDIwIEBA
IHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoVUFSdWxlcygKICAgICBzb3J0QW5kVHJh
bnNmZXJNYXRjaGVkUnVsZXMoKTsKIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorc3RhdGlj
IGNvbnN0IENTU1NlbGVjdG9yKiBmaW5kU2xvdHRlZFBzZXVkb0VsZW1lbnRTZWxlY3Rvcihjb25z
dCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCit7CisgICAgZm9yICg7IHNlbGVjdG9yOyBzZWxlY3Rv
ciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5KCkpIHsKKyAgICAgICAgaWYgKHNlbGVjdG9yLT5tYXRj
aCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50ICYmIHNlbGVjdG9yLT5wc2V1ZG9FbGVt
ZW50VHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50U2xvdHRlZCkgeworICAgICAg
ICAgICAgaWYgKGF1dG8qIGxpc3QgPSBzZWxlY3Rvci0+c2VsZWN0b3JMaXN0KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGxpc3QtPmZpcnN0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH07CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKwogaW5saW5lIGJv
b2wgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnJ1bGVNYXRjaGVzKGNvbnN0IFJ1bGVEYXRhJiBydWxl
RGF0YSwgdW5zaWduZWQmIHNwZWNpZmljaXR5KQogewogICAgIC8vIFdlIGtub3cgYSBzdWZmaWNp
ZW50bHkgc2ltcGxlIHNpbmdsZSBwYXJ0IHNlbGVjdG9yIG1hdGNoZXMgc2ltcGx5IGJlY2F1c2Ug
d2UgZm91bmQgaXQgZnJvbSB0aGUgcnVsZSBoYXNoIHdoZW4gZmlsdGVyaW5nIHRoZSBSdWxlU2V0
LgpAQCAtMzU2LDkgKzQyNywxOCBAQCBpbmxpbmUgYm9vbCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6
cnVsZU1hCiAgICAgfSBlbHNlCiAjZW5kaWYgLy8gRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCiAg
ICAgeworICAgICAgICBhdXRvKiBzZWxlY3RvciA9IHJ1bGVEYXRhLnNlbGVjdG9yKCk7CisjaWYg
RU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIGlmIChtX2lzTWF0Y2hpbmRTbG90dGVkUHNldWRv
RWxlbWVudCkgeworICAgICAgICAgICAgc2VsZWN0b3IgPSBmaW5kU2xvdHRlZFBzZXVkb0VsZW1l
bnRTZWxlY3RvcihydWxlRGF0YS5zZWxlY3RvcigpKTsKKyAgICAgICAgICAgIGlmICghc2VsZWN0
b3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyNlbmRpZgog
ICAgICAgICAvLyBTbG93IHBhdGguCiAgICAgICAgIFNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNo
ZWNrZXIobV9lbGVtZW50LmRvY3VtZW50KCkpOwotICAgICAgICBzZWxlY3Rvck1hdGNoZXMgPSBz
ZWxlY3RvckNoZWNrZXIubWF0Y2goKnJ1bGVEYXRhLnNlbGVjdG9yKCksIG1fZWxlbWVudCwgY29u
dGV4dCwgc3BlY2lmaWNpdHkpOworICAgICAgICBzZWxlY3Rvck1hdGNoZXMgPSBzZWxlY3RvckNo
ZWNrZXIubWF0Y2goKnNlbGVjdG9yLCBtX2VsZW1lbnQsIGNvbnRleHQsIHNwZWNpZmljaXR5KTsK
ICAgICB9CiAKICAgICBjb21taXRTdHlsZVJlbGF0aW9ucyhjb250ZXh0LnN0eWxlUmVsYXRpb25z
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCShyZXZp
c2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgbWF0
Y2hVQVJ1bGVzKFJ1bGVTZXQqKTsKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICB2b2lkIG1h
dGNoSG9zdFBzZXVkb0NsYXNzUnVsZXMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CisgICAgdm9p
ZCBtYXRjaFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7
CisgICAgUnVsZVNldDo6UnVsZURhdGFWZWN0b3IgY29sbGVjdFNsb3R0ZWRQc2V1ZG9FbGVtZW50
UnVsZXNGb3JTbG90KGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOwogI2VuZGlmCiAKICAgICB2b2lk
IGNvbGxlY3RNYXRjaGluZ1J1bGVzKGNvbnN0IE1hdGNoUmVxdWVzdCYsIFN0eWxlUmVzb2x2ZXI6
OlJ1bGVSYW5nZSYpOwpAQCAtOTgsNiArMTAwLDkgQEAgcHJpdmF0ZToKICAgICBQc2V1ZG9TdHls
ZVJlcXVlc3QgbV9wc2V1ZG9TdHlsZVJlcXVlc3QgeyBOT1BTRVVETyB9OwogICAgIGJvb2wgbV9z
YW1lT3JpZ2luT25seSB7IGZhbHNlIH07CiAgICAgU2VsZWN0b3JDaGVja2VyOjpNb2RlIG1fbW9k
ZSB7IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6UmVzb2x2aW5nU3R5bGUgfTsKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKKyAgICBib29sIG1faXNNYXRjaGluZFNsb3R0ZWRQc2V1ZG9FbGVtZW50IHsg
ZmFsc2UgfTsKKyNlbmRpZgogCiAgICAgVmVjdG9yPE1hdGNoZWRSdWxlLCA2ND4gbV9tYXRjaGVk
UnVsZXM7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAJKHJldmlzaW9uIDE5NzAyNykKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDYg
KzI2NiwxMSBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUoU3R5bGVSdWxlKiBydWxlLCB1CiAgICAg
ICAgICAgICBtX2hvc3RQc2V1ZG9DbGFzc1J1bGVzLmFwcGVuZChydWxlRGF0YSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHNlbGVjdG9yLT5tYXRjaCgpID09
IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50ICYmIHNlbGVjdG9yLT5wc2V1ZG9FbGVtZW50VHlw
ZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50U2xvdHRlZCkgeworICAgICAgICAgICAg
cnVsZURhdGEuZGlzYWJsZVNlbGVjdG9yRmlsdGVyaW5nKCk7CisgICAgICAgICAgICBtX3Nsb3R0
ZWRQc2V1ZG9FbGVtZW50UnVsZXMuYXBwZW5kKHJ1bGVEYXRhKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGlmIChzZWxlY3Rvci0+cmVsYXRpb24oKSAh
PSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IpCiAgICAgICAgICAgICBicmVhazsKQEAgLTQyMiw2
ICs0MjcsMTAgQEAgdm9pZCBSdWxlU2V0OjpzaHJpbmtUb0ZpdCgpCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogICAgIG1fY3VlUHNldWRvUnVsZXMuc2hyaW5rVG9GaXQoKTsKICNlbmRpZgorI2lm
IEVOQUJMRShTSEFET1dfRE9NKQorICAgIG1faG9zdFBzZXVkb0NsYXNzUnVsZXMuc2hyaW5rVG9G
aXQoKTsKKyAgICBtX3Nsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMuc2hyaW5rVG9GaXQoKTsKKyNl
bmRpZgogICAgIG1fZm9jdXNQc2V1ZG9DbGFzc1J1bGVzLnNocmlua1RvRml0KCk7CiAgICAgbV91
bml2ZXJzYWxSdWxlcy5zaHJpbmtUb0ZpdCgpOwogICAgIG1fcGFnZVJ1bGVzLnNocmlua1RvRml0
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgJKHJldmlzaW9uIDE5NzAyNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9SdWxlU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw2ICsxODQsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBjb25zdCBSdWxlRGF0
YVZlY3RvciYgaG9zdFBzZXVkb0NsYXNzUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2hvc3RQc2V1
ZG9DbGFzc1J1bGVzOyB9CisgICAgY29uc3QgUnVsZURhdGFWZWN0b3ImIHNsb3R0ZWRQc2V1ZG9F
bGVtZW50UnVsZXMoKSBjb25zdCB7IHJldHVybiBtX3Nsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXM7
IH0KICNlbmRpZgogICAgIGNvbnN0IFJ1bGVEYXRhVmVjdG9yKiBmb2N1c1BzZXVkb0NsYXNzUnVs
ZXMoKSBjb25zdCB7IHJldHVybiAmbV9mb2N1c1BzZXVkb0NsYXNzUnVsZXM7IH0KICAgICBjb25z
dCBSdWxlRGF0YVZlY3RvciogdW5pdmVyc2FsUnVsZXMoKSBjb25zdCB7IHJldHVybiAmbV91bml2
ZXJzYWxSdWxlczsgfQpAQCAtMjEwLDYgKzIxMSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKICAgICBSdWxlRGF0YVZlY3RvciBtX2hvc3RQc2V1ZG9DbGFzc1J1
bGVzOworICAgIFJ1bGVEYXRhVmVjdG9yIG1fc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlczsKICNl
bmRpZgogICAgIFJ1bGVEYXRhVmVjdG9yIG1fZm9jdXNQc2V1ZG9DbGFzc1J1bGVzOwogICAgIFJ1
bGVEYXRhVmVjdG9yIG1fdW5pdmVyc2FsUnVsZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcAkocmV2aXNpb24gMTk3MDI3KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNp
bmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMu
aCIKICNpbmNsdWRlICJIVE1MUHJvZ3Jlc3NFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFNsb3RF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTEwMzgsNyArMTAz
OSwxMyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUoQ2hlY2tpbmdDCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAjZW5kaWYKLSAgICAvLyAjIyMgYWRkIHRoZSByZXN0IG9m
IHRoZSBjaGVja3MuLi4KKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBpZiAoc2VsZWN0b3Iu
bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCAmJiBzZWxlY3Rvci5wc2V1ZG9F
bGVtZW50VHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50U2xvdHRlZCkgeworICAg
ICAgICAvLyBXZSBzZWUgOjpzbG90dGVkKCkgcHNldWRvIGVsZW1lbnRzIHdoZW4gY29sbGVjdGlu
ZyBzbG90dGVkIHJ1bGVzIGZyb20gdGhlIHNsb3Qgc2hhZG93IHRyZWUgb25seS4KKyAgICAgICAg
QVNTRVJUKGNoZWNraW5nQ29udGV4dC5yZXNvbHZpbmdNb2RlID09IE1vZGU6OkNvbGxlY3RpbmdS
dWxlcyk7CisgICAgICAgIHJldHVybiBpczxIVE1MU2xvdEVsZW1lbnQ+KGVsZW1lbnQpOworICAg
IH0KKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAxOTcwMjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc2LDYgKzc2LDggQEAgY29uc3QgRWxlbWVudCogU2hhcmluZ1Jlc29sdmVyOjpyZXNv
bHZlKAogICAgIGlmICghZWxlbWVudC5wYXJlbnRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIGF1dG8mIHBhcmVudEVsZW1lbnQgPSAqZWxlbWVudC5wYXJlbnRFbGVtZW50
KCk7CisgICAgaWYgKHBhcmVudEVsZW1lbnQuc2hhZG93Um9vdCgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBpZiAoIXBhcmVudEVsZW1lbnQucmVuZGVyU3R5bGUoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaGFzIGlubGluZSBzdHlsZSBp
dCBpcyBwcm9iYWJseSB1bmlxdWUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272226</attachid>
            <date>2016-02-25 13:00:51 -0800</date>
            <delta_ts>2016-02-25 13:21:58 -0800</delta_ts>
            <desc>patch</desc>
            <filename>slotted-5.patch</filename>
            <type>text/plain</type>
            <size>21214</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzEyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDE2LTAyLTI1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgOjpzbG90dGVk
IHBzZXVkbyBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDk0NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNzMxOTg3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAo
T09QUyEpLgorCisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueS5pbjoKKworICAgICAgICAgICAg
UGFyc2UgOjpzbG90dGVkLgorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OmRldGVjdEZ1bmN0aW9uVHlwZVRva2VuKToKKyAgICAgICAg
KiBjc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNl
bGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRDdWVGdW5jdGlvblNlbGVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRTbG90dGVkRnVu
Y3Rpb25TZWxlY3Rvcik6CisKKyAgICAgICAgICAgIFRva2VuaXplIDo6c2xvdHRlZC4KKworICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NBbmRDb21w
YXRpYmlsaXR5RWxlbWVudFNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyVmFsdWVz
Lmg6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1NlbGVjdG9yOjpwc2V1ZG9JZCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6CisgICAg
ICAgICogY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaEF1dGhvclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaEhvc3RQc2V1ZG9DbGFzc1J1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFNsb3R0ZWRQc2V1ZG9FbGVt
ZW50UnVsZXMpOgorCisgICAgICAgICAgICBNYXRjaCA6OnNsb3R0ZWQgc2VsZWN0b3IuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0U2xvdHRlZFBzZXVk
b0VsZW1lbnRSdWxlc0ZvclNsb3QpOgorCisgICAgICAgICAgICBDb2xsZWN0IDo6c2xvdHRlZCBy
dWxlcyB0aGF0IG1heSBhcHBseSB0byBhbiBlbGVtZW50IGluIGEgc2xvdC4KKworICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoVXNlclJ1bGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFVBUnVsZXMpOgorICAgICAgICAo
V2ViQ29yZTo6ZmluZFNsb3R0ZWRQc2V1ZG9FbGVtZW50U2VsZWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OnJ1bGVNYXRjaGVzKToKKyAgICAgICAgKiBjc3Mv
RWxlbWVudFJ1bGVDb2xsZWN0b3IuaDoKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSdWxlU2V0OjphZGRSdWxlKToKKworICAgICAgICAgICAgQ29sbGVjdCA6
OnNsb3R0ZWQgcnVsZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OnNocmlua1RvRml0
KToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6
aG9zdFBzZXVkb0NsYXNzUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6c2xvdHRl
ZFBzZXVkb0VsZW1lbnRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0Ojpmb2N1c1Bz
ZXVkb0NsYXNzUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6dW5pdmVyc2FsUnVs
ZXMpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVTaGFy
aW5nUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNoYXJpbmdSZXNvbHZl
cjo6cmVzb2x2ZSk6CisKKyAgICAgICAgICAgIERpc2FibGUgc3R5bGUgc2hhcmluZyBmb3IgY2hp
bGRyZW4gb2Ygc2hhZG93IGhvc3QuIFRoZXkgbWF5IGJlIGFmZmVjdGVkIGJ5IHRoZSBzaGFkb3cg
dHJlZSBzdHlsZQorICAgICAgICAgICAgd2hpY2ggaXMgbm90IGNvbnNpZGVyZWQgaW4gc3R5bGUg
c2hhcmluZyBjaGVja3MuCisKIDIwMTYtMDItMjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3Vo
YWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTk2MjY4KTogTWFueSBh
c3NlcnRpb24gZmFpbHVyZXMgYW5kIGNyYXNoZXMgb24gU1ZHIHBhdGggYW5pbWF0aW9uIHRlc3Rz
IHdoZW4gSlMgZ2FyYmFnZSBjb2xsZWN0aW9uIGhhcHBlbnMgcXVpY2tseQpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhbW1hci55LmluCShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhbW1hci55LmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsNiArMzY1LDEyIEBA
IHN0YXRpYyBib29sIHNlbGVjdG9yTGlzdERvZXNOb3RNYXRjaEFueVAKIAogI2VuZGlmCiAKKyNp
ZiBFTkFCTEVfU0hBRE9XX0RPTQorCisldG9rZW4gPHN0cmluZz4gU0xPVFRFREZVTkNUSU9OCisK
KyNlbmRpZgorCiAlJQogCiBzdHlsZXNoZWV0OgpAQCAtMTM1Nyw2ICsxMzYzLDExIEBAIHBzZXVk
bzoKICAgICAgICAgJCQgPSBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50Q3Vl
RnVuY3Rpb25TZWxlY3RvcigkMywgJDUpOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRV9TSEFE
T1dfRE9NCisgICAgfCAnOicgJzonIFNMT1RURURGVU5DVElPTiBtYXliZV9zcGFjZSBzaW1wbGVf
c2VsZWN0b3JfbGlzdCBtYXliZV9zcGFjZSAnKScgeworICAgICAgICAkJCA9IENTU1BhcnNlclNl
bGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRTbG90dGVkRnVuY3Rpb25TZWxlY3RvcigkMywgJDUp
OworICAgIH0KKyNlbmRpZgogICAgIC8vIHVzZSBieSA6LXdlYmtpdC1hbnkuCiAgICAgLy8gRklY
TUU6IHNob3VsZCB3ZSBzdXBwb3J0IGdlbmVyaWMgc2VsZWN0b3JzIGhlcmUgb3IganVzdCBzaW1w
bGVfc2VsZWN0b3JzPwogICAgIC8vIFVzZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBmb3Igbm93IHRv
IG1hdGNoIC1tb3otYW55LgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9u
IDE5NzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTg5NCw4ICsxMTg5NCwxMyBAQCBpbmxpbmUgYm9vbCBDU1NQYXJzZXI6OmRldGVj
dEZ1bmN0aW9uVHlwCiAgICAgICAgICAgICBtX3Rva2VuID0gTUFUQ0hFU0ZVTkNUSU9OOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
KyAgICAgICAgaWYgKGlzRXF1YWxUb0NTU0lkZW50aWZpZXIobmFtZSwgInNsb3R0ZWQiKSkgewor
ICAgICAgICAgICAgbV90b2tlbiA9IFNMT1RURURGVU5DVElPTjsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAg
Y2FzZSA5OgogICAgICAgICBpZiAoaXNFcXVhbFRvQ1NTSWRlbnRpZmllcihuYW1lLCAibnRoLWNo
aWxkIikpIHsKICAgICAgICAgICAgIG1fdG9rZW4gPSBOVEhDSElMREZVTkNUSU9OUzsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCShyZXZpc2lvbiAxOTcwMjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjMxLDYgKzIzMSwyNCBAQCBDU1NQYXJzZXJTZWxlY3RvciogQ1NTUGFyc2VyU2VsZWN0b3I6
OnBhCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorQ1NTUGFyc2VyU2VsZWN0
b3IqIENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRTbG90dGVkRnVuY3Rpb25T
ZWxlY3Rvcihjb25zdCBDU1NQYXJzZXJTdHJpbmcmIGZ1bmN0aW9uSWRlbnRpZmllciwgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+KiBwYXJzZWRTZWxlY3RvclZlY3Rv
cikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGZ1bmN0aW9uSWRlbnRpZmllciwgU3RyaW5nKGZ1bmN0
aW9uSWRlbnRpZmllcikgPT0gInNsb3R0ZWQoIik7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+PiBzZWxlY3RvclZlY3Rvcihw
YXJzZWRTZWxlY3RvclZlY3Rvcik7CisKKyAgICBpZiAoIXNlbGVjdG9yVmVjdG9yKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PENTU1BhcnNlclNlbGVjdG9yPigpOworICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRj
aChDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCk7CisgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3It
PnNldFBzZXVkb0VsZW1lbnRUeXBlKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50U2xvdHRlZCk7
CisgICAgc2VsZWN0b3ItPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9yVmVjdG9yKTsKKyAg
ICByZXR1cm4gc2VsZWN0b3IucmVsZWFzZSgpOworfQorI2VuZGlmCisKIENTU1BhcnNlclNlbGVj
dG9yKiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlF
bGVtZW50U2VsZWN0b3IoQ1NTUGFyc2VyU3RyaW5nJiBwc2V1ZG9UeXBlU3RyaW5nKQogewogICAg
IGlmIChwc2V1ZG9UeXBlU3RyaW5nLmxlbmd0aCgpICYmIHBzZXVkb1R5cGVTdHJpbmdbcHNldWRv
VHlwZVN0cmluZy5sZW5ndGgoKSAtIDFdID09ICcoJykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXJWYWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyVmFsdWVzLmgJKHJldmlzaW9uIDE5NzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXJWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDcgKzIwMywxMCBAQCBjbGFz
cyBDU1NQYXJzZXJTZWxlY3RvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIENTU1BhcnNlclNlbGVj
dG9yKiBwYXJzZVBhZ2VQc2V1ZG9TZWxlY3Rvcihjb25zdCBDU1NQYXJzZXJTdHJpbmcmIHBzZXVk
b1R5cGVTdHJpbmcpOwogICAgIHN0YXRpYyBDU1NQYXJzZXJTZWxlY3RvciogcGFyc2VQc2V1ZG9F
bGVtZW50U2VsZWN0b3IoQ1NTUGFyc2VyU3RyaW5nJiBwc2V1ZG9UeXBlU3RyaW5nKTsKLSAgICBz
dGF0aWMgQ1NTUGFyc2VyU2VsZWN0b3IqIHBhcnNlUHNldWRvRWxlbWVudEN1ZUZ1bmN0aW9uU2Vs
ZWN0b3IoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiBmdW5jdGlvbklkZW50aWZpZXIsIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Piogc2VsZWN0b3JWZWN0b3IpOworICAg
IHN0YXRpYyBDU1NQYXJzZXJTZWxlY3RvciogcGFyc2VQc2V1ZG9FbGVtZW50Q3VlRnVuY3Rpb25T
ZWxlY3Rvcihjb25zdCBDU1NQYXJzZXJTdHJpbmcmIGZ1bmN0aW9uSWRlbnRpZmllciwgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+Kik7CisjaWYgRU5BQkxFKFNIQURP
V19ET00pCisgICAgc3RhdGljIENTU1BhcnNlclNlbGVjdG9yKiBwYXJzZVBzZXVkb0VsZW1lbnRT
bG90dGVkRnVuY3Rpb25TZWxlY3Rvcihjb25zdCBDU1NQYXJzZXJTdHJpbmcmIGZ1bmN0aW9uSWRl
bnRpZmllciwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+Kik7Cisj
ZW5kaWYKICAgICBzdGF0aWMgQ1NTUGFyc2VyU2VsZWN0b3IqIHBhcnNlUHNldWRvQ2xhc3NBbmRD
b21wYXRpYmlsaXR5RWxlbWVudFNlbGVjdG9yKENTU1BhcnNlclN0cmluZyYgcHNldWRvVHlwZVN0
cmluZyk7CiAKICAgICBDU1NQYXJzZXJTZWxlY3RvcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuY3BwCShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTksNiArMjk5LDkgQEAgUHNldWRvSWQg
Q1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVkb0VsZQogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
ICAgICBjYXNlIFBzZXVkb0VsZW1lbnRDdWU6CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKKyAgICBjYXNlIFBzZXVkb0VsZW1lbnRTbG90dGVkOgorI2VuZGlmCiAgICAgY2FzZSBQc2V1
ZG9FbGVtZW50VW5rbm93bjoKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRVc2VyQWdlbnRDdXN0b206
CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50V2ViS2l0Q3VzdG9tOgpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmgJKHJldmlzaW9uIDE5NzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNiArMTgxLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgUHNldWRvRWxlbWVudFNjcm9sbGJhclRyYWNrLAogICAgICAg
ICAgICAgUHNldWRvRWxlbWVudFNjcm9sbGJhclRyYWNrUGllY2UsCiAgICAgICAgICAgICBQc2V1
ZG9FbGVtZW50U2VsZWN0aW9uLAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICAgICAg
UHNldWRvRWxlbWVudFNsb3R0ZWQsCisjZW5kaWYKICAgICAgICAgICAgIFBzZXVkb0VsZW1lbnRV
c2VyQWdlbnRDdXN0b20sCiAgICAgICAgICAgICBQc2V1ZG9FbGVtZW50V2ViS2l0Q3VzdG9tLAog
ICAgICAgICB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0
b3IuY3BwCShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1
bGVDb2xsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2lu
Y2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0
eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCkBAIC0yMDYsNiArMjA3LDEwIEBAIHZv
aWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQXV0aG9yUnUKICNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKICAgICBpZiAobV9lbGVtZW50LnNoYWRvd1Jvb3QoKSkKICAgICAgICAgbWF0Y2hIb3N0
UHNldWRvQ2xhc3NSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcyk7CisKKyAgICBhdXRvKiBwYXJlbnQg
PSBtX2VsZW1lbnQucGFyZW50Tm9kZSgpOworICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5zaGFk
b3dSb290KCkpCisgICAgICAgIG1hdGNoU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyhpbmNsdWRl
RW1wdHlSdWxlcyk7CiAjZW5kaWYKIAogICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7CkBAIC0yNDEs
NiArMjQ2LDU5IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoSG9zdFBzZXUKICAg
ICAvLyBGSVhNRTogTWF0Y2ggdGhlIHNwZWMgd2hlbiBpdCBpcyBmaW5hbGl6ZWQuCiAgICAgc29y
dEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKCk7CiB9CisKK3ZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0
b3I6Om1hdGNoU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVz
KQoreworICAgIGF1dG8qIGhvc3RTaGFkb3dSb290ID0gbV9lbGVtZW50LnBhcmVudE5vZGUoKS0+
c2hhZG93Um9vdCgpOworICAgIEFTU0VSVChob3N0U2hhZG93Um9vdCk7CisgICAgYXV0byogc2xv
dCA9IGhvc3RTaGFkb3dSb290LT5maW5kQXNzaWduZWRTbG90KG1fZWxlbWVudCk7CisgICAgaWYg
KCFzbG90KQorICAgICAgICByZXR1cm47CisgICAgYXV0byogc2hhZG93QXV0aG9yU3R5bGUgPSBo
b3N0U2hhZG93Um9vdC0+c3R5bGVSZXNvbHZlcigpLnJ1bGVTZXRzKCkuYXV0aG9yU3R5bGUoKTsK
KyAgICBpZiAoIXNoYWRvd0F1dGhvclN0eWxlKQorICAgICAgICByZXR1cm47CisgICAgLy8gRmlu
ZCBvdXQgaWYgdGhlcmUgYXJlIGFueSA6OnNsb3R0ZWQgcnVsZXMgaW4gdGhlIHNoYWRvdyB0cmVl
IG1hdGNoaW5nIHRoZSBjdXJyZW50IHNsb3QuCisgICAgLy8gRklYTUU6IFRoaXMgaXMgcmVhbGx5
IHBhcnQgb2YgdGhlIHNsb3Qgc3R5bGUgYW5kIGNvdWxkIGJlIGNhY2hlZCB3aGVuIHJlc29sdmlu
ZyBpdC4KKyAgICBFbGVtZW50UnVsZUNvbGxlY3RvciBjb2xsZWN0b3IoKnNsb3QsICpzaGFkb3dB
dXRob3JTdHlsZSwgbnVsbHB0cik7CisgICAgYXV0byBzbG90dGVkUHNldWRvRWxlbWVudFJ1bGVz
ID0gY29sbGVjdG9yLmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzRm9yU2xvdChpbmNs
dWRlRW1wdHlSdWxlcyk7CisgICAgaWYgKHNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gY2hhbmdl
KG1faXNNYXRjaGluZFNsb3R0ZWRQc2V1ZG9FbGVtZW50LCB0cnVlKTsKKworICAgIGNsZWFyTWF0
Y2hlZFJ1bGVzKCk7CisgICAgbV9yZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlID0gbV9yZXN1
bHQubWF0Y2hlZFByb3BlcnRpZXMoKS5zaXplKCkgLSAxOworICAgIGF1dG8gcnVsZVJhbmdlID0g
bV9yZXN1bHQucmFuZ2VzLmF1dGhvclJ1bGVSYW5nZSgpOworCisgICAgLy8gTWF0Y2ggaW4gdGhl
IGN1cnJlbnQgc2NvcGUuCisgICAgTWF0Y2hSZXF1ZXN0IG1hdGNoUmVxdWVzdChudWxscHRyLCBp
bmNsdWRlRW1wdHlSdWxlcyk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KCZzbG90
dGVkUHNldWRvRWxlbWVudFJ1bGVzLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CisKKyAgICAv
LyBGSVhNRTogV2hhdCBpcyB0aGUgY29ycmVjdCBvcmRlcj8KKyAgICBzb3J0QW5kVHJhbnNmZXJN
YXRjaGVkUnVsZXMoKTsKK30KKworUnVsZVNldDo6UnVsZURhdGFWZWN0b3IgRWxlbWVudFJ1bGVD
b2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzRm9yU2xvdChib29sIGlu
Y2x1ZGVFbXB0eVJ1bGVzKQoreworICAgIEFTU0VSVChpczxIVE1MU2xvdEVsZW1lbnQ+KG1fZWxl
bWVudCkpOworCisgICAgY2xlYXJNYXRjaGVkUnVsZXMoKTsKKworICAgIG1fbW9kZSA9IFNlbGVj
dG9yQ2hlY2tlcjo6TW9kZTo6Q29sbGVjdGluZ1J1bGVzOworCisgICAgLy8gTWF0Y2ggZ2xvYmFs
IGF1dGhvciBydWxlcy4KKyAgICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KCZtX2F1dGhvclN0
eWxlLCBpbmNsdWRlRW1wdHlSdWxlcyk7CisgICAgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlIHJ1
bGVSYW5nZSA9IG1fcmVzdWx0LnJhbmdlcy5hdXRob3JSdWxlUmFuZ2UoKTsKKyAgICBjb2xsZWN0
TWF0Y2hpbmdSdWxlc0Zvckxpc3QoJm1fYXV0aG9yU3R5bGUuc2xvdHRlZFBzZXVkb0VsZW1lbnRS
dWxlcygpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CisKKyAgICBpZiAobV9tYXRjaGVkUnVs
ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgUnVsZVNldDo6UnVsZURh
dGFWZWN0b3IgcnVsZURhdGFWZWN0b3I7CisgICAgZm9yIChhdXRvJiBtYXRjaGVkUnVsZSA6IG1f
bWF0Y2hlZFJ1bGVzKQorICAgICAgICBydWxlRGF0YVZlY3Rvci5hcHBlbmQoKm1hdGNoZWRSdWxl
LnJ1bGVEYXRhKTsKKyAgICByZXR1cm4gcnVsZURhdGFWZWN0b3I7Cit9CiAjZW5kaWYKIAogdm9p
ZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVc2VyUnVsZXMoYm9vbCBpbmNsdWRlRW1wdHlS
dWxlcykKQEAgLTI4NCw2ICszNDIsMjAgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0
Y2hVQVJ1bGVzKAogICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcygpOwogfQogCisjaWYg
RU5BQkxFKFNIQURPV19ET00pCitzdGF0aWMgY29uc3QgQ1NTU2VsZWN0b3IqIGZpbmRTbG90dGVk
UHNldWRvRWxlbWVudFNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKK3sKKyAg
ICBmb3IgKDsgc2VsZWN0b3I7IHNlbGVjdG9yID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkgewor
ICAgICAgICBpZiAoc2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1l
bnQgJiYgc2VsZWN0b3ItPnBzZXVkb0VsZW1lbnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVk
b0VsZW1lbnRTbG90dGVkKSB7CisgICAgICAgICAgICBpZiAoYXV0byogbGlzdCA9IHNlbGVjdG9y
LT5zZWxlY3Rvckxpc3QoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbGlzdC0+Zmlyc3QoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKyNlbmRpZgorCiBpbmxpbmUgYm9vbCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1h
dGNoZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCB1bnNpZ25lZCYgc3BlY2lmaWNpdHkpCiB7
CiAgICAgLy8gV2Uga25vdyBhIHN1ZmZpY2llbnRseSBzaW1wbGUgc2luZ2xlIHBhcnQgc2VsZWN0
b3IgbWF0Y2hlcyBzaW1wbHkgYmVjYXVzZSB3ZSBmb3VuZCBpdCBmcm9tIHRoZSBydWxlIGhhc2gg
d2hlbiBmaWx0ZXJpbmcgdGhlIFJ1bGVTZXQuCkBAIC0zNTYsOSArNDI4LDE4IEBAIGlubGluZSBi
b29sIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpydWxlTWEKICAgICB9IGVsc2UKICNlbmRpZiAvLyBF
TkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKICAgICB7CisgICAgICAgIGF1dG8qIHNlbGVjdG9yID0g
cnVsZURhdGEuc2VsZWN0b3IoKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgaWYg
KG1faXNNYXRjaGluZFNsb3R0ZWRQc2V1ZG9FbGVtZW50KSB7CisgICAgICAgICAgICBzZWxlY3Rv
ciA9IGZpbmRTbG90dGVkUHNldWRvRWxlbWVudFNlbGVjdG9yKHJ1bGVEYXRhLnNlbGVjdG9yKCkp
OworICAgICAgICAgICAgaWYgKCFzZWxlY3RvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKworI2VuZGlmCiAgICAgICAgIC8vIFNsb3cgcGF0aC4KICAgICAgICAg
U2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcihtX2VsZW1lbnQuZG9jdW1lbnQoKSk7Ci0g
ICAgICAgIHNlbGVjdG9yTWF0Y2hlcyA9IHNlbGVjdG9yQ2hlY2tlci5tYXRjaCgqcnVsZURhdGEu
c2VsZWN0b3IoKSwgbV9lbGVtZW50LCBjb250ZXh0LCBzcGVjaWZpY2l0eSk7CisgICAgICAgIHNl
bGVjdG9yTWF0Y2hlcyA9IHNlbGVjdG9yQ2hlY2tlci5tYXRjaCgqc2VsZWN0b3IsIG1fZWxlbWVu
dCwgY29udGV4dCwgc3BlY2lmaWNpdHkpOwogICAgIH0KIAogICAgIGNvbW1pdFN0eWxlUmVsYXRp
b25zKGNvbnRleHQuc3R5bGVSZWxhdGlvbnMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmgJKHJldmlzaW9uIDE5NzAyNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXRjaFVBUnVsZXMoUnVsZVNldCopOwogI2lmIEVOQUJM
RShTSEFET1dfRE9NKQogICAgIHZvaWQgbWF0Y2hIb3N0UHNldWRvQ2xhc3NSdWxlcyhib29sIGlu
Y2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICB2b2lkIG1hdGNoU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxl
cyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICBSdWxlU2V0OjpSdWxlRGF0YVZlY3RvciBj
b2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlc0ZvclNsb3QoYm9vbCBpbmNsdWRlRW1wdHlS
dWxlcyk7CiAjZW5kaWYKIAogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0
Y2hSZXF1ZXN0JiwgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJik7CkBAIC05OCw2ICsxMDAsOSBA
QCBwcml2YXRlOgogICAgIFBzZXVkb1N0eWxlUmVxdWVzdCBtX3BzZXVkb1N0eWxlUmVxdWVzdCB7
IE5PUFNFVURPIH07CiAgICAgYm9vbCBtX3NhbWVPcmlnaW5Pbmx5IHsgZmFsc2UgfTsKICAgICBT
ZWxlY3RvckNoZWNrZXI6Ok1vZGUgbV9tb2RlIHsgU2VsZWN0b3JDaGVja2VyOjpNb2RlOjpSZXNv
bHZpbmdTdHlsZSB9OworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGJvb2wgbV9pc01hdGNo
aW5kU2xvdHRlZFBzZXVkb0VsZW1lbnQgeyBmYWxzZSB9OworI2VuZGlmCiAKICAgICBWZWN0b3I8
TWF0Y2hlZFJ1bGUsIDY0PiBtX21hdGNoZWRSdWxlczsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL1J1bGVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0
LmNwcAkocmV2aXNpb24gMTk3MDI3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsNiArMjY2LDEyIEBAIHZvaWQgUnVsZVNldDo6YWRkUnVs
ZShTdHlsZVJ1bGUqIHJ1bGUsIHUKICAgICAgICAgICAgIG1faG9zdFBzZXVkb0NsYXNzUnVsZXMu
YXBwZW5kKHJ1bGVEYXRhKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAg
ICBpZiAoc2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQgJiYg
c2VsZWN0b3ItPnBzZXVkb0VsZW1lbnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1l
bnRTbG90dGVkKSB7CisgICAgICAgICAgICAvLyA6OnNsb3R0ZWQgcHNldWRvIGVsZW1lbnRzIHdv
cmsgYWNjcm9zcyBzaGFkb3cgYm91bmRhcnkgbWFraW5nIGZpbHRlcmluZyBkaWZmaWN1bHQuCisg
ICAgICAgICAgICBydWxlRGF0YS5kaXNhYmxlU2VsZWN0b3JGaWx0ZXJpbmcoKTsKKyAgICAgICAg
ICAgIG1fc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcy5hcHBlbmQocnVsZURhdGEpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgaWYgKHNlbGVjdG9yLT5y
ZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcikKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtNDIyLDYgKzQyOCwxMCBAQCB2b2lkIFJ1bGVTZXQ6OnNocmlua1RvRml0KCkKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCiAgICAgbV9jdWVQc2V1ZG9SdWxlcy5zaHJpbmtUb0ZpdCgpOwog
I2VuZGlmCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgbV9ob3N0UHNldWRvQ2xhc3NSdWxl
cy5zaHJpbmtUb0ZpdCgpOworICAgIG1fc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcy5zaHJpbmtU
b0ZpdCgpOworI2VuZGlmCiAgICAgbV9mb2N1c1BzZXVkb0NsYXNzUnVsZXMuc2hyaW5rVG9GaXQo
KTsKICAgICBtX3VuaXZlcnNhbFJ1bGVzLnNocmlua1RvRml0KCk7CiAgICAgbV9wYWdlUnVsZXMu
c2hyaW5rVG9GaXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaAkocmV2aXNpb24gMTk3MDI3KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDYg
KzE4NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGNv
bnN0IFJ1bGVEYXRhVmVjdG9yJiBob3N0UHNldWRvQ2xhc3NSdWxlcygpIGNvbnN0IHsgcmV0dXJu
IG1faG9zdFBzZXVkb0NsYXNzUnVsZXM7IH0KKyAgICBjb25zdCBSdWxlRGF0YVZlY3RvciYgc2xv
dHRlZFBzZXVkb0VsZW1lbnRSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2xvdHRlZFBzZXVkb0Vs
ZW1lbnRSdWxlczsgfQogI2VuZGlmCiAgICAgY29uc3QgUnVsZURhdGFWZWN0b3IqIGZvY3VzUHNl
dWRvQ2xhc3NSdWxlcygpIGNvbnN0IHsgcmV0dXJuICZtX2ZvY3VzUHNldWRvQ2xhc3NSdWxlczsg
fQogICAgIGNvbnN0IFJ1bGVEYXRhVmVjdG9yKiB1bml2ZXJzYWxSdWxlcygpIGNvbnN0IHsgcmV0
dXJuICZtX3VuaXZlcnNhbFJ1bGVzOyB9CkBAIC0yMTAsNiArMjExLDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIFJ1bGVEYXRhVmVjdG9yIG1faG9zdFBz
ZXVkb0NsYXNzUnVsZXM7CisgICAgUnVsZURhdGFWZWN0b3IgbV9zbG90dGVkUHNldWRvRWxlbWVu
dFJ1bGVzOwogI2VuZGlmCiAgICAgUnVsZURhdGFWZWN0b3IgbV9mb2N1c1BzZXVkb0NsYXNzUnVs
ZXM7CiAgICAgUnVsZURhdGFWZWN0b3IgbV91bml2ZXJzYWxSdWxlczsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiAr
NDQsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBh
cnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxQcm9ncmVzc0VsZW1lbnQuaCIKKyNpbmNsdWRl
ICJIVE1MU2xvdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAt
MTAzOCw3ICsxMDM5LDEzIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShDaGVja2lu
Z0MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICNlbmRpZgotICAgIC8vICMjIyBhZGQg
dGhlIHJlc3Qgb2YgdGhlIGNoZWNrcy4uLgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGlm
IChzZWxlY3Rvci5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50ICYmIHNlbGVj
dG9yLnBzZXVkb0VsZW1lbnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRTbG90
dGVkKSB7CisgICAgICAgIC8vIFdlIHNlZSA6OnNsb3R0ZWQoKSBwc2V1ZG8gZWxlbWVudHMgd2hl
biBjb2xsZWN0aW5nIHNsb3R0ZWQgcnVsZXMgZnJvbSB0aGUgc2xvdCBzaGFkb3cgdHJlZSBvbmx5
LgorICAgICAgICBBU1NFUlQoY2hlY2tpbmdDb250ZXh0LnJlc29sdmluZ01vZGUgPT0gTW9kZTo6
Q29sbGVjdGluZ1J1bGVzKTsKKyAgICAgICAgcmV0dXJuIGlzPEhUTUxTbG90RWxlbWVudD4oZWxl
bWVudCk7CisgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5jcHAJKHJldmlzaW9uIDE5
NzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsOCBAQCBjb25zdCBFbGVtZW50KiBTaGFyaW5nUmVz
b2x2ZXI6OnJlc29sdmUoCiAgICAgaWYgKCFlbGVtZW50LnBhcmVudEVsZW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byYgcGFyZW50RWxlbWVudCA9ICplbGVtZW50LnBh
cmVudEVsZW1lbnQoKTsKKyAgICBpZiAocGFyZW50RWxlbWVudC5zaGFkb3dSb290KCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghcGFyZW50RWxlbWVudC5yZW5kZXJTdHlsZSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAvLyBJZiB0aGUgZWxlbWVudCBoYXMgaW5s
aW5lIHN0eWxlIGl0IGlzIHByb2JhYmx5IHVuaXF1ZS4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzAy
NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDE2LTAyLTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgOjpzbG90dGVkIHBzZXVkbyBlbGVtZW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk0NDEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzIyNzMxOTg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEVuYWJsZSB0aGUgdGVzdCwgZml4IGl0IGFuZCB1cGRhdGUgaXQgdG8gdGhlIGN1
cnJlbnQgc3BlYy4KKworICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFk
b3ctc2xvdHRlZC1ydWxlLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnM6CisKIDIwMTYtMDItMjQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE5NTk0OSk6IFtHVEtdIFRlc3QgL3dlYmtp
dDIvV2ViS2l0V2ViVmlldy9pbnNlcnQvbGluayBpcyBmYWlsaW5nIHNpbmNlIHIxOTU5NDkKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctc2xvdHRl
ZC1ydWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nz
cy1zY29waW5nLXNoYWRvdy1zbG90dGVkLXJ1bGUuaHRtbAkocmV2aXNpb24gMTk3MDI3KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1zbG90dGVkLXJ1
bGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgog
PGh0bWw+CiA8aGVhZD4KLSAgICA8dGl0bGU+Q1NTIFNjb3BpbmcgLSA6c2xvdHRlZCBwZXN1ZG8g
ZWxlbWVudCBtdXN0IGFsbG93IHNlbGVjdGluZyBlbGVtZW50cyBhc3NpZ25lZCB0byBhIHNsb3Qg
ZWxlbWVudDwvdGl0bGU+CisgICAgPHRpdGxlPkNTUyBTY29waW5nIC0gOnNsb3R0ZWQgcHNldWRv
IGVsZW1lbnQgbXVzdCBhbGxvdyBzZWxlY3RpbmcgZWxlbWVudHMgYXNzaWduZWQgdG8gYSBzbG90
IGVsZW1lbnQ8L3RpdGxlPgogICAgIDxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBO
aXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyIvPgogICAgIDxsaW5rIHJlbD0iaGVs
cCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jc2VsZWN0b3JzLWRh
dGEtbW9kZWwiPgogICAgIDxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9InJlZmVyZW5jZS9ncmVlbi1i
b3guaHRtbCIvPgpAQCAtMTIsNyArMTIsOCBAQAogICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7
CiAgICAgICAgICAgICB3aWR0aDogMTAwcHg7CiAgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4Owot
ICAgICAgICAgICAgYmFja2dyb3VuZDogcmVkOworICAgICAgICAgICAgY29sb3I6IHJlZDsKKyAg
ICAgICAgICAgIGJhY2tncm91bmQ6IGdyZWVuOwogICAgICAgICB9CiAgICAgICAgIG15LWhvc3Qg
PiBkaXYsIG5lc3RlZC1ob3N0IHsKICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwpAQCAtMjMs
NyArMjQsNyBAQAogICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgMTAwcHgg
YnkgMTAwcHggZ3JlZW4gYm94IGJlbG93LjwvcD4gCiAgICAgPG15LWhvc3Q+CiAgICAgICAgIDxk
aXYgY2xhc3M9ImdyZWVuIj5GQUlMMTwvZGl2PgotICAgICAgICA8ZGl2PjxzcGFuPkZBSUwyPC9z
cGFuPjwvZGl2PgorICAgICAgICA8bXllbGVtPjxzcGFuPkZBSUwyPC9zcGFuPjwvbXllbGVtPgog
ICAgICAgICA8bmVzdGVkLWhvc3Q+CiAgICAgICAgICAgICA8c3Bhbj5GQUlMMzwvc3Bhbj4KICAg
ICAgICAgPC9uZXN0ZWQtaG9zdD4KQEAgLTM2LDE1ICszNywxNSBAQAogICAgICAgICB0cnkgewog
ICAgICAgICAgICAgdmFyIHNoYWRvd0hvc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdteS1o
b3N0Jyk7CiAgICAgICAgICAgICBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRhY2hTaGFkb3co
e21vZGU6ICdvcGVuJ30pOwotICAgICAgICAgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPHNs
b3Q+PC9zbG90PjxzdHlsZT4gOjpzbG90dGVkID4gLmdyZWVuLCA6OnNsb3R0ZWQgc3BhbiB7IGNv
bG9yOmdyZWVuOyB9IDwvc3R5bGU+JzsKKyAgICAgICAgICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1M
ID0gJzxzbG90Pjwvc2xvdD48c3R5bGU+IDo6c2xvdHRlZCguZ3JlZW4pLCA6OnNsb3R0ZWQobXll
bGVtKSB7IGNvbG9yOmdyZWVuOyB9IDwvc3R5bGU+JzsKIAogICAgICAgICAgICAgc2hhZG93SG9z
dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ25lc3RlZC1ob3N0Jyk7CiAgICAgICAgICAgICBz
aGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVuJ30pOwotICAg
ICAgICAgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPHNsb3Q+PC9zbG90Pic7CisgICAgICAg
ICAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c3R5bGU+IC5teWRpdiA6OnNsb3R0ZWQoKikg
eyBjb2xvcjpncmVlbjsgfSA8L3N0eWxlPjxkaXYgY2xhc3M9bXlkaXY+PHNsb3Q+PC9zbG90Pjwv
ZGl2Pic7CiAKICAgICAgICAgICAgIHNoYWRvd0hvc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCdhbm90aGVyLWhvc3QnKTsKICAgICAgICAgICAgIHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0
dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7Ci0gICAgICAgICAgICBzaGFkb3dSb290LmlubmVy
SFRNTCA9ICc8c3R5bGU+IDo6c2xvdHRlZCB7IGNvbG9yOmdyZWVuOyB9IDwvc3R5bGU+PHNsb3Q+
PC9zbG90Pic7CisgICAgICAgICAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c3R5bGU+IDo6
c2xvdHRlZCgqKSB7IGNvbG9yOmdyZWVuOyB9IDwvc3R5bGU+PHNsb3Q+PC9zbG90Pic7CiAgICAg
ICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbikgewogICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShleGNlcHRpb24pKTsKICAgICAgICAgfQpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9u
IDE5NzAyNykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjUwLDcgKzEyNTAsNiBAQCB3ZWJraXQub3JnL2IvMTQ5MTI4IGZh
c3QvdGV4dC9jb250cm9sLWNoCiAKIHdlYmtpdC5vcmcvYi8xNDg2OTUgZmFzdC9zaGFkb3ctZG9t
IFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTQ5NDQwIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGlu
Zy1zaGFkb3ctaG9zdC1mdW5jdGlvbmFsLXJ1bGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzE0OTQ0MSBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXNs
b3R0ZWQtcnVsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTQ5NDQx
IGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctc2xvdC1kaXNwbGF5LW92ZXJyaWRl
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBUb3VjaCBldmVudHMgaXMgbm90IGVuYWJs
ZWQgb24gTWFjCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272230</attachid>
            <date>2016-02-25 13:21:58 -0800</date>
            <delta_ts>2016-02-25 13:24:49 -0800</delta_ts>
            <desc>patch</desc>
            <filename>slotted-6.patch</filename>
            <type>text/plain</type>
            <size>21181</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzEyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE2LTAyLTI1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgOjpzbG90dGVk
IHBzZXVkbyBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDk0NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNzMxOTg3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzL0NTU0dyYW1t
YXIueS5pbjoKKworICAgICAgICAgICAgUGFyc2UgOjpzbG90dGVkLgorCisgICAgICAgICogY3Nz
L0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmRldGVjdEZ1bmN0
aW9uVHlwZVRva2VuKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRDdWVGdW5j
dGlvblNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpwYXJz
ZVBzZXVkb0VsZW1lbnRTbG90dGVkRnVuY3Rpb25TZWxlY3Rvcik6CisKKyAgICAgICAgICAgIFRv
a2VuaXplIDo6c2xvdHRlZC4KKworICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6
OnBhcnNlUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudFNlbGVjdG9yKToKKyAgICAg
ICAgKiBjc3MvQ1NTUGFyc2VyVmFsdWVzLmg6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpwc2V1ZG9JZCk6CisgICAgICAgICog
Y3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAgICogY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaEF1dGhvclJ1
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaEhvc3RQ
c2V1ZG9DbGFzc1J1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9y
OjptYXRjaFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMpOgorCisgICAgICAgICAgICBNYXRjaCA6
OnNsb3R0ZWQgc2VsZWN0b3IuCisKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVj
dG9yOjpjb2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlc0ZvclNsb3QpOgorCisgICAgICAg
ICAgICBDb2xsZWN0IDo6c2xvdHRlZCBydWxlcyB0aGF0IG1heSBhcHBseSB0byBhbiBlbGVtZW50
IGluIGEgc2xvdC4KKworICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1h
dGNoVXNlclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpt
YXRjaFVBUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZFNsb3R0ZWRQc2V1ZG9FbGVtZW50
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OnJ1bGVN
YXRjaGVzKToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaDoKKyAgICAgICAg
KiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0OjphZGRSdWxlKToK
KworICAgICAgICAgICAgQ29sbGVjdCA6OnNsb3R0ZWQgcnVsZXMuCisKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bGVTZXQ6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UnVsZVNldDo6aG9zdFBzZXVkb0NsYXNzUnVsZXMpOgorICAgICAgICAo
V2ViQ29yZTo6UnVsZVNldDo6c2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSdWxlU2V0Ojpmb2N1c1BzZXVkb0NsYXNzUnVsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVsZVNldDo6dW5pdmVyc2FsUnVsZXMpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZSk6Cisg
ICAgICAgICogc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlNoYXJpbmdSZXNvbHZlcjo6cmVzb2x2ZSk6CisKKyAgICAgICAgICAgIERpc2Fi
bGUgc3R5bGUgc2hhcmluZyBmb3IgY2hpbGRyZW4gb2Ygc2hhZG93IGhvc3QuIFRoZXkgbWF5IGJl
IGFmZmVjdGVkIGJ5IHRoZSBzaGFkb3cgdHJlZSBzdHlsZQorICAgICAgICAgICAgd2hpY2ggaXMg
bm90IGNvbnNpZGVyZWQgaW4gc3R5bGUgc2hhcmluZyBjaGVja3MuCisKIDIwMTYtMDItMjUgIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OIChyMTk2MjY4KTogTWFueSBhc3NlcnRpb24gZmFpbHVyZXMgYW5kIGNyYXNoZXMgb24g
U1ZHIHBhdGggYW5pbWF0aW9uIHRlc3RzIHdoZW4gSlMgZ2FyYmFnZSBjb2xsZWN0aW9uIGhhcHBl
bnMgcXVpY2tseQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCShyZXZpc2lvbiAx
OTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCSh3b3JraW5nIGNv
cHkpCkBAIC0zNjUsNiArMzY1LDEyIEBAIHN0YXRpYyBib29sIHNlbGVjdG9yTGlzdERvZXNOb3RN
YXRjaEFueVAKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEVfU0hBRE9XX0RPTQorCisldG9rZW4gPHN0
cmluZz4gU0xPVFRFREZVTkNUSU9OCisKKyNlbmRpZgorCiAlJQogCiBzdHlsZXNoZWV0OgpAQCAt
MTM1Nyw2ICsxMzYzLDExIEBAIHBzZXVkbzoKICAgICAgICAgJCQgPSBDU1NQYXJzZXJTZWxlY3Rv
cjo6cGFyc2VQc2V1ZG9FbGVtZW50Q3VlRnVuY3Rpb25TZWxlY3RvcigkMywgJDUpOwogICAgIH0K
ICNlbmRpZgorI2lmIEVOQUJMRV9TSEFET1dfRE9NCisgICAgfCAnOicgJzonIFNMT1RURURGVU5D
VElPTiBtYXliZV9zcGFjZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBtYXliZV9zcGFjZSAnKScgewor
ICAgICAgICAkJCA9IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRTbG90dGVk
RnVuY3Rpb25TZWxlY3RvcigkMywgJDUpOworICAgIH0KKyNlbmRpZgogICAgIC8vIHVzZSBieSA6
LXdlYmtpdC1hbnkuCiAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBzdXBwb3J0IGdlbmVyaWMgc2Vs
ZWN0b3JzIGhlcmUgb3IganVzdCBzaW1wbGVfc2VsZWN0b3JzPwogICAgIC8vIFVzZSBzaW1wbGVf
c2VsZWN0b3JfbGlzdCBmb3Igbm93IHRvIG1hdGNoIC1tb3otYW55LgpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDE5NzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTg5NCw4ICsxMTg5NCwxMyBAQCBpbmxp
bmUgYm9vbCBDU1NQYXJzZXI6OmRldGVjdEZ1bmN0aW9uVHlwCiAgICAgICAgICAgICBtX3Rva2Vu
ID0gTUFUQ0hFU0ZVTkNUSU9OOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgaWYgKGlzRXF1YWxUb0NTU0lkZW50aWZp
ZXIobmFtZSwgInNsb3R0ZWQiKSkgeworICAgICAgICAgICAgbV90b2tlbiA9IFNMT1RURURGVU5D
VElPTjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisjZW5kaWYKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCiAgICAgY2FzZSA5OgogICAgICAgICBpZiAoaXNFcXVhbFRvQ1NT
SWRlbnRpZmllcihuYW1lLCAibnRoLWNoaWxkIikpIHsKICAgICAgICAgICAgIG1fdG9rZW4gPSBO
VEhDSElMREZVTkNUSU9OUzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMu
Y3BwCShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFs
dWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMxLDYgKzIzMSwyNCBAQCBDU1NQYXJzZXJTZWxl
Y3RvciogQ1NTUGFyc2VyU2VsZWN0b3I6OnBhCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQorQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVk
b0VsZW1lbnRTbG90dGVkRnVuY3Rpb25TZWxlY3Rvcihjb25zdCBDU1NQYXJzZXJTdHJpbmcmIGZ1
bmN0aW9uSWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4+KiBwYXJzZWRTZWxlY3RvclZlY3RvcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGZ1bmN0aW9u
SWRlbnRpZmllciwgU3RyaW5nKGZ1bmN0aW9uSWRlbnRpZmllcikgPT0gInNsb3R0ZWQoIik7CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4+PiBzZWxlY3RvclZlY3RvcihwYXJzZWRTZWxlY3RvclZlY3Rvcik7CisKKyAgICBpZiAo
IXNlbGVjdG9yVmVjdG9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gc2Vs
ZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgIHNlbGVj
dG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCk7Cisg
ICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFBzZXVkb0VsZW1lbnRUeXBlKENTU1NlbGVjdG9y
OjpQc2V1ZG9FbGVtZW50U2xvdHRlZCk7CisgICAgc2VsZWN0b3ItPmFkb3B0U2VsZWN0b3JWZWN0
b3IoKnNlbGVjdG9yVmVjdG9yKTsKKyAgICByZXR1cm4gc2VsZWN0b3IucmVsZWFzZSgpOworfQor
I2VuZGlmCisKIENTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1
ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50U2VsZWN0b3IoQ1NTUGFyc2VyU3RyaW5nJiBw
c2V1ZG9UeXBlU3RyaW5nKQogewogICAgIGlmIChwc2V1ZG9UeXBlU3RyaW5nLmxlbmd0aCgpICYm
IHBzZXVkb1R5cGVTdHJpbmdbcHNldWRvVHlwZVN0cmluZy5sZW5ndGgoKSAtIDFdID09ICcoJykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgJKHJldmlzaW9uIDE5NzAyNykK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjAzLDcgKzIwMywxMCBAQCBjbGFzcyBDU1NQYXJzZXJTZWxlY3RvciB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIENTU1BhcnNlclNlbGVjdG9yKiBwYXJzZVBhZ2VQc2V1ZG9TZWxlY3Rvcihjb25z
dCBDU1NQYXJzZXJTdHJpbmcmIHBzZXVkb1R5cGVTdHJpbmcpOwogICAgIHN0YXRpYyBDU1NQYXJz
ZXJTZWxlY3RvciogcGFyc2VQc2V1ZG9FbGVtZW50U2VsZWN0b3IoQ1NTUGFyc2VyU3RyaW5nJiBw
c2V1ZG9UeXBlU3RyaW5nKTsKLSAgICBzdGF0aWMgQ1NTUGFyc2VyU2VsZWN0b3IqIHBhcnNlUHNl
dWRvRWxlbWVudEN1ZUZ1bmN0aW9uU2VsZWN0b3IoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiBmdW5j
dGlvbklkZW50aWZpZXIsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
Piogc2VsZWN0b3JWZWN0b3IpOworICAgIHN0YXRpYyBDU1NQYXJzZXJTZWxlY3RvciogcGFyc2VQ
c2V1ZG9FbGVtZW50Q3VlRnVuY3Rpb25TZWxlY3Rvcihjb25zdCBDU1NQYXJzZXJTdHJpbmcmIGZ1
bmN0aW9uSWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4+Kik7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgc3RhdGljIENTU1BhcnNlclNlbGVj
dG9yKiBwYXJzZVBzZXVkb0VsZW1lbnRTbG90dGVkRnVuY3Rpb25TZWxlY3Rvcihjb25zdCBDU1NQ
YXJzZXJTdHJpbmcmIGZ1bmN0aW9uSWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxD
U1NQYXJzZXJTZWxlY3Rvcj4+Kik7CisjZW5kaWYKICAgICBzdGF0aWMgQ1NTUGFyc2VyU2VsZWN0
b3IqIHBhcnNlUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudFNlbGVjdG9yKENTU1Bh
cnNlclN0cmluZyYgcHNldWRvVHlwZVN0cmluZyk7CiAKICAgICBDU1NQYXJzZXJTZWxlY3Rvcigp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAxOTcwMjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OTksNiArMjk5LDkgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVkb0VsZQog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRDdWU6CiAjZW5k
aWYKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBjYXNlIFBzZXVkb0VsZW1lbnRTbG90dGVk
OgorI2VuZGlmCiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50VW5rbm93bjoKICAgICBjYXNlIFBzZXVk
b0VsZW1lbnRVc2VyQWdlbnRDdXN0b206CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50V2ViS2l0Q3Vz
dG9tOgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgJKHJldmlzaW9uIDE5NzAyNykKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODEs
NiArMTgxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgUHNldWRvRWxlbWVu
dFNjcm9sbGJhclRyYWNrLAogICAgICAgICAgICAgUHNldWRvRWxlbWVudFNjcm9sbGJhclRyYWNr
UGllY2UsCiAgICAgICAgICAgICBQc2V1ZG9FbGVtZW50U2VsZWN0aW9uLAorI2lmIEVOQUJMRShT
SEFET1dfRE9NKQorICAgICAgICAgICAgUHNldWRvRWxlbWVudFNsb3R0ZWQsCisjZW5kaWYKICAg
ICAgICAgICAgIFBzZXVkb0VsZW1lbnRVc2VyQWdlbnRDdXN0b20sCiAgICAgICAgICAgICBQc2V1
ZG9FbGVtZW50V2ViS2l0Q3VzdG9tLAogICAgICAgICB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAi
Q1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTFNsb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgi
CkBAIC0yMDYsNiArMjA3LDEwIEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQXV0
aG9yUnUKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAobV9lbGVtZW50LnNoYWRvd1Jv
b3QoKSkKICAgICAgICAgbWF0Y2hIb3N0UHNldWRvQ2xhc3NSdWxlcyhpbmNsdWRlRW1wdHlSdWxl
cyk7CisKKyAgICBhdXRvKiBwYXJlbnQgPSBtX2VsZW1lbnQucGFyZW50Tm9kZSgpOworICAgIGlm
IChwYXJlbnQgJiYgcGFyZW50LT5zaGFkb3dSb290KCkpCisgICAgICAgIG1hdGNoU2xvdHRlZFBz
ZXVkb0VsZW1lbnRSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcyk7CiAjZW5kaWYKIAogICAgIGNsZWFy
TWF0Y2hlZFJ1bGVzKCk7CkBAIC0yNDEsNiArMjQ2LDU5IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xs
ZWN0b3I6Om1hdGNoSG9zdFBzZXUKICAgICAvLyBGSVhNRTogTWF0Y2ggdGhlIHNwZWMgd2hlbiBp
dCBpcyBmaW5hbGl6ZWQuCiAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKCk7CiB9CisK
K3ZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxl
cyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQoreworICAgIGF1dG8qIGhvc3RTaGFkb3dSb290ID0g
bV9lbGVtZW50LnBhcmVudE5vZGUoKS0+c2hhZG93Um9vdCgpOworICAgIEFTU0VSVChob3N0U2hh
ZG93Um9vdCk7CisgICAgYXV0byogc2xvdCA9IGhvc3RTaGFkb3dSb290LT5maW5kQXNzaWduZWRT
bG90KG1fZWxlbWVudCk7CisgICAgaWYgKCFzbG90KQorICAgICAgICByZXR1cm47CisgICAgYXV0
byogc2hhZG93QXV0aG9yU3R5bGUgPSBob3N0U2hhZG93Um9vdC0+c3R5bGVSZXNvbHZlcigpLnJ1
bGVTZXRzKCkuYXV0aG9yU3R5bGUoKTsKKyAgICBpZiAoIXNoYWRvd0F1dGhvclN0eWxlKQorICAg
ICAgICByZXR1cm47CisgICAgLy8gRmluZCBvdXQgaWYgdGhlcmUgYXJlIGFueSA6OnNsb3R0ZWQg
cnVsZXMgaW4gdGhlIHNoYWRvdyB0cmVlIG1hdGNoaW5nIHRoZSBjdXJyZW50IHNsb3QuCisgICAg
Ly8gRklYTUU6IFRoaXMgaXMgcmVhbGx5IHBhcnQgb2YgdGhlIHNsb3Qgc3R5bGUgYW5kIGNvdWxk
IGJlIGNhY2hlZCB3aGVuIHJlc29sdmluZyBpdC4KKyAgICBFbGVtZW50UnVsZUNvbGxlY3RvciBj
b2xsZWN0b3IoKnNsb3QsICpzaGFkb3dBdXRob3JTdHlsZSwgbnVsbHB0cik7CisgICAgYXV0byBz
bG90dGVkUHNldWRvRWxlbWVudFJ1bGVzID0gY29sbGVjdG9yLmNvbGxlY3RTbG90dGVkUHNldWRv
RWxlbWVudFJ1bGVzRm9yU2xvdChpbmNsdWRlRW1wdHlSdWxlcyk7CisgICAgaWYgKHNsb3R0ZWRQ
c2V1ZG9FbGVtZW50UnVsZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBUZW1w
b3JhcnlDaGFuZ2U8Ym9vbD4gY2hhbmdlKG1faXNNYXRjaGluZFNsb3R0ZWRQc2V1ZG9FbGVtZW50
LCB0cnVlKTsKKworICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7CisgICAgbV9yZXN1bHQucmFuZ2Vz
Lmxhc3RBdXRob3JSdWxlID0gbV9yZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMoKS5zaXplKCkgLSAx
OworICAgIGF1dG8gcnVsZVJhbmdlID0gbV9yZXN1bHQucmFuZ2VzLmF1dGhvclJ1bGVSYW5nZSgp
OworCisgICAgLy8gTWF0Y2ggaW4gdGhlIGN1cnJlbnQgc2NvcGUuCisgICAgTWF0Y2hSZXF1ZXN0
IG1hdGNoUmVxdWVzdChudWxscHRyLCBpbmNsdWRlRW1wdHlSdWxlcyk7CisgICAgY29sbGVjdE1h
dGNoaW5nUnVsZXNGb3JMaXN0KCZzbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzLCBtYXRjaFJlcXVl
c3QsIHJ1bGVSYW5nZSk7CisKKyAgICAvLyBGSVhNRTogV2hhdCBpcyB0aGUgY29ycmVjdCBvcmRl
cj8KKyAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoKTsKK30KKworUnVsZVNldDo6UnVs
ZURhdGFWZWN0b3IgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNldWRvRWxl
bWVudFJ1bGVzRm9yU2xvdChib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQoreworICAgIEFTU0VSVChp
czxIVE1MU2xvdEVsZW1lbnQ+KG1fZWxlbWVudCkpOworCisgICAgY2xlYXJNYXRjaGVkUnVsZXMo
KTsKKworICAgIG1fbW9kZSA9IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6Q29sbGVjdGluZ1J1bGVz
OworCisgICAgLy8gTWF0Y2ggZ2xvYmFsIGF1dGhvciBydWxlcy4KKyAgICBNYXRjaFJlcXVlc3Qg
bWF0Y2hSZXF1ZXN0KCZtX2F1dGhvclN0eWxlLCBpbmNsdWRlRW1wdHlSdWxlcyk7CisgICAgU3R5
bGVSZXNvbHZlcjo6UnVsZVJhbmdlIHJ1bGVSYW5nZSA9IG1fcmVzdWx0LnJhbmdlcy5hdXRob3JS
dWxlUmFuZ2UoKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoJm1fYXV0aG9yU3R5
bGUuc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcygpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7
CisKKyAgICBpZiAobV9tYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgUnVsZVNldDo6UnVsZURhdGFWZWN0b3IgcnVsZURhdGFWZWN0b3I7CisgICAgZm9y
IChhdXRvJiBtYXRjaGVkUnVsZSA6IG1fbWF0Y2hlZFJ1bGVzKQorICAgICAgICBydWxlRGF0YVZl
Y3Rvci5hcHBlbmQoKm1hdGNoZWRSdWxlLnJ1bGVEYXRhKTsKKyAgICByZXR1cm4gcnVsZURhdGFW
ZWN0b3I7Cit9CiAjZW5kaWYKIAogdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVc2Vy
UnVsZXMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKQEAgLTI4NCw2ICszNDIsMjAgQEAgdm9pZCBF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1bGVzKAogICAgIHNvcnRBbmRUcmFuc2Zlck1h
dGNoZWRSdWxlcygpOwogfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCitzdGF0aWMgY29uc3Qg
Q1NTU2VsZWN0b3IqIGZpbmRTbG90dGVkUHNldWRvRWxlbWVudFNlbGVjdG9yKGNvbnN0IENTU1Nl
bGVjdG9yKiBzZWxlY3RvcikKK3sKKyAgICBmb3IgKDsgc2VsZWN0b3I7IHNlbGVjdG9yID0gc2Vs
ZWN0b3ItPnRhZ0hpc3RvcnkoKSkgeworICAgICAgICBpZiAoc2VsZWN0b3ItPm1hdGNoKCkgPT0g
Q1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQgJiYgc2VsZWN0b3ItPnBzZXVkb0VsZW1lbnRUeXBl
KCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRTbG90dGVkKSB7CisgICAgICAgICAgICBp
ZiAoYXV0byogbGlzdCA9IHNlbGVjdG9yLT5zZWxlY3Rvckxpc3QoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbGlzdC0+Zmlyc3QoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgfTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCiBpbmxpbmUgYm9vbCBFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCB1
bnNpZ25lZCYgc3BlY2lmaWNpdHkpCiB7CiAgICAgLy8gV2Uga25vdyBhIHN1ZmZpY2llbnRseSBz
aW1wbGUgc2luZ2xlIHBhcnQgc2VsZWN0b3IgbWF0Y2hlcyBzaW1wbHkgYmVjYXVzZSB3ZSBmb3Vu
ZCBpdCBmcm9tIHRoZSBydWxlIGhhc2ggd2hlbiBmaWx0ZXJpbmcgdGhlIFJ1bGVTZXQuCkBAIC0z
NTYsOSArNDI4LDE4IEBAIGlubGluZSBib29sIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpydWxlTWEK
ICAgICB9IGVsc2UKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKICAgICB7Cisg
ICAgICAgIGF1dG8qIHNlbGVjdG9yID0gcnVsZURhdGEuc2VsZWN0b3IoKTsKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKKyAgICAgICAgaWYgKG1faXNNYXRjaGluZFNsb3R0ZWRQc2V1ZG9FbGVtZW50
KSB7CisgICAgICAgICAgICBzZWxlY3RvciA9IGZpbmRTbG90dGVkUHNldWRvRWxlbWVudFNlbGVj
dG9yKHJ1bGVEYXRhLnNlbGVjdG9yKCkpOworICAgICAgICAgICAgaWYgKCFzZWxlY3RvcikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworI2VuZGlmCiAgICAgICAg
IC8vIFNsb3cgcGF0aC4KICAgICAgICAgU2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlciht
X2VsZW1lbnQuZG9jdW1lbnQoKSk7Ci0gICAgICAgIHNlbGVjdG9yTWF0Y2hlcyA9IHNlbGVjdG9y
Q2hlY2tlci5tYXRjaCgqcnVsZURhdGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50LCBjb250ZXh0LCBz
cGVjaWZpY2l0eSk7CisgICAgICAgIHNlbGVjdG9yTWF0Y2hlcyA9IHNlbGVjdG9yQ2hlY2tlci5t
YXRjaCgqc2VsZWN0b3IsIG1fZWxlbWVudCwgY29udGV4dCwgc3BlY2lmaWNpdHkpOwogICAgIH0K
IAogICAgIGNvbW1pdFN0eWxlUmVsYXRpb25zKGNvbnRleHQuc3R5bGVSZWxhdGlvbnMpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgJKHJldmlzaW9uIDE5
NzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw2ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXRjaFVBUnVs
ZXMoUnVsZVNldCopOwogI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHZvaWQgbWF0Y2hIb3N0
UHNldWRvQ2xhc3NSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICB2b2lkIG1hdGNo
U2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICBS
dWxlU2V0OjpSdWxlRGF0YVZlY3RvciBjb2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlc0Zv
clNsb3QoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAjZW5kaWYKIAogICAgIHZvaWQgY29sbGVj
dE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0JiwgU3R5bGVSZXNvbHZlcjo6UnVsZVJh
bmdlJik7CkBAIC05OCw2ICsxMDAsOSBAQCBwcml2YXRlOgogICAgIFBzZXVkb1N0eWxlUmVxdWVz
dCBtX3BzZXVkb1N0eWxlUmVxdWVzdCB7IE5PUFNFVURPIH07CiAgICAgYm9vbCBtX3NhbWVPcmln
aW5Pbmx5IHsgZmFsc2UgfTsKICAgICBTZWxlY3RvckNoZWNrZXI6Ok1vZGUgbV9tb2RlIHsgU2Vs
ZWN0b3JDaGVja2VyOjpNb2RlOjpSZXNvbHZpbmdTdHlsZSB9OworI2lmIEVOQUJMRShTSEFET1df
RE9NKQorICAgIGJvb2wgbV9pc01hdGNoaW5kU2xvdHRlZFBzZXVkb0VsZW1lbnQgeyBmYWxzZSB9
OworI2VuZGlmCiAKICAgICBWZWN0b3I8TWF0Y2hlZFJ1bGUsIDY0PiBtX21hdGNoZWRSdWxlczsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAkocmV2aXNpb24gMTk3MDI3KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsNiArMjY2LDEy
IEBAIHZvaWQgUnVsZVNldDo6YWRkUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIHUKICAgICAgICAgICAg
IG1faG9zdFBzZXVkb0NsYXNzUnVsZXMuYXBwZW5kKHJ1bGVEYXRhKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQorICAgICAgICBpZiAoc2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0VsZW1lbnQgJiYgc2VsZWN0b3ItPnBzZXVkb0VsZW1lbnRUeXBlKCkgPT0g
Q1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRTbG90dGVkKSB7CisgICAgICAgICAgICAvLyA6OnNs
b3R0ZWQgcHNldWRvIGVsZW1lbnRzIHdvcmsgYWNjcm9zcyBzaGFkb3cgYm91bmRhcnkgbWFraW5n
IGZpbHRlcmluZyBkaWZmaWN1bHQuCisgICAgICAgICAgICBydWxlRGF0YS5kaXNhYmxlU2VsZWN0
b3JGaWx0ZXJpbmcoKTsKKyAgICAgICAgICAgIG1fc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcy5h
cHBlbmQocnVsZURhdGEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAjZW5kaWYK
ICAgICAgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpTdWJTZWxl
Y3RvcikKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDIyLDYgKzQyOCwxMCBAQCB2b2lkIFJ1bGVT
ZXQ6OnNocmlua1RvRml0KCkKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgbV9jdWVQc2V1
ZG9SdWxlcy5zaHJpbmtUb0ZpdCgpOwogI2VuZGlmCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisg
ICAgbV9ob3N0UHNldWRvQ2xhc3NSdWxlcy5zaHJpbmtUb0ZpdCgpOworICAgIG1fc2xvdHRlZFBz
ZXVkb0VsZW1lbnRSdWxlcy5zaHJpbmtUb0ZpdCgpOworI2VuZGlmCiAgICAgbV9mb2N1c1BzZXVk
b0NsYXNzUnVsZXMuc2hyaW5rVG9GaXQoKTsKICAgICBtX3VuaXZlcnNhbFJ1bGVzLnNocmlua1Rv
Rml0KCk7CiAgICAgbV9wYWdlUnVsZXMuc2hyaW5rVG9GaXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9SdWxlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVT
ZXQuaAkocmV2aXNpb24gMTk3MDI3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTg0LDYgKzE4NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogI2lmIEVO
QUJMRShTSEFET1dfRE9NKQogICAgIGNvbnN0IFJ1bGVEYXRhVmVjdG9yJiBob3N0UHNldWRvQ2xh
c3NSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1faG9zdFBzZXVkb0NsYXNzUnVsZXM7IH0KKyAgICBj
b25zdCBSdWxlRGF0YVZlY3RvciYgc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcygpIGNvbnN0IHsg
cmV0dXJuIG1fc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlczsgfQogI2VuZGlmCiAgICAgY29uc3Qg
UnVsZURhdGFWZWN0b3IqIGZvY3VzUHNldWRvQ2xhc3NSdWxlcygpIGNvbnN0IHsgcmV0dXJuICZt
X2ZvY3VzUHNldWRvQ2xhc3NSdWxlczsgfQogICAgIGNvbnN0IFJ1bGVEYXRhVmVjdG9yKiB1bml2
ZXJzYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3VuaXZlcnNhbFJ1bGVzOyB9CkBAIC0yMTAs
NiArMjExLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAg
IFJ1bGVEYXRhVmVjdG9yIG1faG9zdFBzZXVkb0NsYXNzUnVsZXM7CisgICAgUnVsZURhdGFWZWN0
b3IgbV9zbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzOwogI2VuZGlmCiAgICAgUnVsZURhdGFWZWN0
b3IgbV9mb2N1c1BzZXVkb0NsYXNzUnVsZXM7CiAgICAgUnVsZURhdGFWZWN0b3IgbV91bml2ZXJz
YWxSdWxlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCShyZXZp
c2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxQcm9n
cmVzc0VsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTAzOCw3ICsxMDM5LDEzIEBAIGJvb2wgU2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZShDaGVja2luZ0MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICNlbmRpZgotICAgIC8vICMjIyBhZGQgdGhlIHJlc3Qgb2YgdGhlIGNoZWNrcy4uLgorI2lmIEVO
QUJMRShTSEFET1dfRE9NKQorICAgIGlmIChzZWxlY3Rvci5tYXRjaCgpID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9FbGVtZW50ICYmIHNlbGVjdG9yLnBzZXVkb0VsZW1lbnRUeXBlKCkgPT0gQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0VsZW1lbnRTbG90dGVkKSB7CisgICAgICAgIC8vIFdlIHNlZSA6OnNsb3R0
ZWQoKSBwc2V1ZG8gZWxlbWVudHMgd2hlbiBjb2xsZWN0aW5nIHNsb3R0ZWQgcnVsZXMgZnJvbSB0
aGUgc2xvdCBzaGFkb3cgdHJlZSBvbmx5LgorICAgICAgICBBU1NFUlQoY2hlY2tpbmdDb250ZXh0
LnJlc29sdmluZ01vZGUgPT0gTW9kZTo6Q29sbGVjdGluZ1J1bGVzKTsKKyAgICAgICAgcmV0dXJu
IGlzPEhUTUxTbG90RWxlbWVudD4oZWxlbWVudCk7CisgICAgfQorI2VuZGlmCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29s
dmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNoYXJpbmdS
ZXNvbHZlci5jcHAJKHJldmlzaW9uIDE5NzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsOCBAQCBj
b25zdCBFbGVtZW50KiBTaGFyaW5nUmVzb2x2ZXI6OnJlc29sdmUoCiAgICAgaWYgKCFlbGVtZW50
LnBhcmVudEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byYgcGFy
ZW50RWxlbWVudCA9ICplbGVtZW50LnBhcmVudEVsZW1lbnQoKTsKKyAgICBpZiAocGFyZW50RWxl
bWVudC5zaGFkb3dSb290KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghcGFy
ZW50RWxlbWVudC5yZW5kZXJTdHlsZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAv
LyBJZiB0aGUgZWxlbWVudCBoYXMgaW5saW5lIHN0eWxlIGl0IGlzIHByb2JhYmx5IHVuaXF1ZS4K
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE5NzAyNykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE2LTAyLTI1ICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgOjpzbG90dGVkIHBzZXVkbyBl
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDk0NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNzMxOTg3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSB0aGUgdGVzdCwgZml4IGl0
IGFuZCB1cGRhdGUgaXQgdG8gdGhlIGN1cnJlbnQgc3BlYy4KKworICAgICAgICAqIGZhc3Qvc2hh
ZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctc2xvdHRlZC1ydWxlLmh0bWw6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTYtMDItMjQgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE5
NTk0OSk6IFtHVEtdIFRlc3QgL3dlYmtpdDIvV2ViS2l0V2ViVmlldy9pbnNlcnQvbGluayBpcyBm
YWlsaW5nIHNpbmNlIHIxOTU5NDkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9j
c3Mtc2NvcGluZy1zaGFkb3ctc2xvdHRlZC1ydWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1zbG90dGVkLXJ1bGUuaHRt
bAkocmV2aXNpb24gMTk3MDI3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1z
Y29waW5nLXNoYWRvdy1zbG90dGVkLXJ1bGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsx
LDcgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KLSAgICA8dGl0bGU+Q1NTIFNj
b3BpbmcgLSA6c2xvdHRlZCBwZXN1ZG8gZWxlbWVudCBtdXN0IGFsbG93IHNlbGVjdGluZyBlbGVt
ZW50cyBhc3NpZ25lZCB0byBhIHNsb3QgZWxlbWVudDwvdGl0bGU+CisgICAgPHRpdGxlPkNTUyBT
Y29waW5nIC0gOnNsb3R0ZWQgcHNldWRvIGVsZW1lbnQgbXVzdCBhbGxvdyBzZWxlY3RpbmcgZWxl
bWVudHMgYXNzaWduZWQgdG8gYSBzbG90IGVsZW1lbnQ8L3RpdGxlPgogICAgIDxsaW5rIHJlbD0i
YXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9y
ZyIvPgogICAgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3Nz
LXNjb3BpbmctMS8jc2VsZWN0b3JzLWRhdGEtbW9kZWwiPgogICAgIDxsaW5rIHJlbD0ibWF0Y2gi
IGhyZWY9InJlZmVyZW5jZS9ncmVlbi1ib3guaHRtbCIvPgpAQCAtMTIsNyArMTIsOCBAQAogICAg
ICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgICB3aWR0aDogMTAwcHg7CiAgICAg
ICAgICAgICBoZWlnaHQ6IDEwMHB4OwotICAgICAgICAgICAgYmFja2dyb3VuZDogcmVkOworICAg
ICAgICAgICAgY29sb3I6IHJlZDsKKyAgICAgICAgICAgIGJhY2tncm91bmQ6IGdyZWVuOwogICAg
ICAgICB9CiAgICAgICAgIG15LWhvc3QgPiBkaXYsIG5lc3RlZC1ob3N0IHsKICAgICAgICAgICAg
IGRpc3BsYXk6IGJsb2NrOwpAQCAtMjMsNyArMjQsNyBAQAogICAgIDxwPlRlc3QgcGFzc2VzIGlm
IHlvdSBzZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3JlZW4gYm94IGJlbG93LjwvcD4gCiAg
ICAgPG15LWhvc3Q+CiAgICAgICAgIDxkaXYgY2xhc3M9ImdyZWVuIj5GQUlMMTwvZGl2PgotICAg
ICAgICA8ZGl2PjxzcGFuPkZBSUwyPC9zcGFuPjwvZGl2PgorICAgICAgICA8bXllbGVtPjxzcGFu
PkZBSUwyPC9zcGFuPjwvbXllbGVtPgogICAgICAgICA8bmVzdGVkLWhvc3Q+CiAgICAgICAgICAg
ICA8c3Bhbj5GQUlMMzwvc3Bhbj4KICAgICAgICAgPC9uZXN0ZWQtaG9zdD4KQEAgLTM2LDE1ICsz
NywxNSBAQAogICAgICAgICB0cnkgewogICAgICAgICAgICAgdmFyIHNoYWRvd0hvc3QgPSBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCdteS1ob3N0Jyk7CiAgICAgICAgICAgICBzaGFkb3dSb290ID0g
c2hhZG93SG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVuJ30pOwotICAgICAgICAgICAgc2hh
ZG93Um9vdC5pbm5lckhUTUwgPSAnPHNsb3Q+PC9zbG90PjxzdHlsZT4gOjpzbG90dGVkID4gLmdy
ZWVuLCA6OnNsb3R0ZWQgc3BhbiB7IGNvbG9yOmdyZWVuOyB9IDwvc3R5bGU+JzsKKyAgICAgICAg
ICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzbG90Pjwvc2xvdD48c3R5bGU+IDo6c2xvdHRl
ZCguZ3JlZW4pLCA6OnNsb3R0ZWQobXllbGVtKSB7IGNvbG9yOmdyZWVuOyB9IDwvc3R5bGU+JzsK
IAogICAgICAgICAgICAgc2hhZG93SG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ25lc3Rl
ZC1ob3N0Jyk7CiAgICAgICAgICAgICBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRhY2hTaGFk
b3coe21vZGU6ICdvcGVuJ30pOwotICAgICAgICAgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAn
PHNsb3Q+PC9zbG90Pic7CisgICAgICAgICAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c3R5
bGU+IC5teWRpdiA6OnNsb3R0ZWQoKikgeyBjb2xvcjpncmVlbjsgfSA8L3N0eWxlPjxkaXYgY2xh
c3M9bXlkaXY+PHNsb3Q+PC9zbG90PjwvZGl2Pic7CiAKICAgICAgICAgICAgIHNoYWRvd0hvc3Qg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhbm90aGVyLWhvc3QnKTsKICAgICAgICAgICAgIHNo
YWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7Ci0gICAg
ICAgICAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c3R5bGU+IDo6c2xvdHRlZCB7IGNvbG9y
OmdyZWVuOyB9IDwvc3R5bGU+PHNsb3Q+PC9zbG90Pic7CisgICAgICAgICAgICBzaGFkb3dSb290
LmlubmVySFRNTCA9ICc8c3R5bGU+IDo6c2xvdHRlZCgqKSB7IGNvbG9yOmdyZWVuOyB9IDwvc3R5
bGU+PHNsb3Q+PC9zbG90Pic7CiAgICAgICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbikgewogICAgICAg
ICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShl
eGNlcHRpb24pKTsKICAgICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDE5NzAyNykKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUwLDcgKzEyNTAsNiBA
QCB3ZWJraXQub3JnL2IvMTQ5MTI4IGZhc3QvdGV4dC9jb250cm9sLWNoCiAKIHdlYmtpdC5vcmcv
Yi8xNDg2OTUgZmFzdC9zaGFkb3ctZG9tIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTQ5NDQwIGZh
c3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctaG9zdC1mdW5jdGlvbmFsLXJ1bGUuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE0OTQ0MSBmYXN0L3NoYWRvdy1k
b20vY3NzLXNjb3Bpbmctc2hhZG93LXNsb3R0ZWQtcnVsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMTQ5NDQxIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFk
b3ctc2xvdC1kaXNwbGF5LW92ZXJyaWRlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBU
b3VjaCBldmVudHMgaXMgbm90IGVuYWJsZWQgb24gTWFjCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272231</attachid>
            <date>2016-02-25 13:24:49 -0800</date>
            <delta_ts>2016-02-26 00:09:30 -0800</delta_ts>
            <desc>patch</desc>
            <filename>slotted-6.patch</filename>
            <type>text/plain</type>
            <size>21259</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzEyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDE2LTAyLTI1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgOjpzbG90dGVk
IHBzZXVkbyBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDk0NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNzMxOTg3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIGxhdGVz
dCBpbiBodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYmNvbXBvbmVudHMvaXNzdWVzLzMzMQorCisg
ICAgICAgICogY3NzL0NTU0dyYW1tYXIueS5pbjoKKworICAgICAgICAgICAgUGFyc2UgOjpzbG90
dGVkLgorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OmRldGVjdEZ1bmN0aW9uVHlwZVRva2VuKToKKyAgICAgICAgKiBjc3MvQ1NTUGFy
c2VyVmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpwYXJz
ZVBzZXVkb0VsZW1lbnRDdWVGdW5jdGlvblNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRTbG90dGVkRnVuY3Rpb25TZWxlY3Rv
cik6CisKKyAgICAgICAgICAgIFRva2VuaXplIDo6c2xvdHRlZC4KKworICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxl
bWVudFNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyVmFsdWVzLmg6CisgICAgICAg
ICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpw
c2V1ZG9JZCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAgICogY3NzL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29s
bGVjdG9yOjptYXRjaEF1dGhvclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxl
Q29sbGVjdG9yOjptYXRjaEhvc3RQc2V1ZG9DbGFzc1J1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMpOgor
CisgICAgICAgICAgICBNYXRjaCA6OnNsb3R0ZWQgc2VsZWN0b3IuCisKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxl
c0ZvclNsb3QpOgorCisgICAgICAgICAgICBDb2xsZWN0IDo6c2xvdHRlZCBydWxlcyB0aGF0IG1h
eSBhcHBseSB0byBhbiBlbGVtZW50IGluIGEgc2xvdC4KKworICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoVXNlclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFVBUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Zmlu
ZFNsb3R0ZWRQc2V1ZG9FbGVtZW50U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFJ1bGVDb2xsZWN0b3I6OnJ1bGVNYXRjaGVzKToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVD
b2xsZWN0b3IuaDoKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSdWxlU2V0OjphZGRSdWxlKToKKworICAgICAgICAgICAgQ29sbGVjdCA6OnNsb3R0ZWQgcnVs
ZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OnNocmlua1RvRml0KToKKyAgICAgICAg
KiBjc3MvUnVsZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6aG9zdFBzZXVkb0Ns
YXNzUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6c2xvdHRlZFBzZXVkb0VsZW1l
bnRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0Ojpmb2N1c1BzZXVkb0NsYXNzUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6dW5pdmVyc2FsUnVsZXMpOgorICAgICAg
ICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNoYXJpbmdSZXNvbHZlcjo6cmVzb2x2ZSk6
CisKKyAgICAgICAgICAgIERpc2FibGUgc3R5bGUgc2hhcmluZyBmb3IgY2hpbGRyZW4gb2Ygc2hh
ZG93IGhvc3QuIFRoZXkgbWF5IGJlIGFmZmVjdGVkIGJ5IHRoZSBzaGFkb3cgdHJlZSBzdHlsZQor
ICAgICAgICAgICAgd2hpY2ggaXMgbm90IGNvbnNpZGVyZWQgaW4gc3R5bGUgc2hhcmluZyBjaGVj
a3MuCisKIDIwMTYtMDItMjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTk2MjY4KTogTWFueSBhc3NlcnRpb24gZmFp
bHVyZXMgYW5kIGNyYXNoZXMgb24gU1ZHIHBhdGggYW5pbWF0aW9uIHRlc3RzIHdoZW4gSlMgZ2Fy
YmFnZSBjb2xsZWN0aW9uIGhhcHBlbnMgcXVpY2tseQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55LmluCShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55LmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsNiArMzY1LDEyIEBAIHN0YXRpYyBib29s
IHNlbGVjdG9yTGlzdERvZXNOb3RNYXRjaEFueVAKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEVfU0hB
RE9XX0RPTQorCisldG9rZW4gPHN0cmluZz4gU0xPVFRFREZVTkNUSU9OCisKKyNlbmRpZgorCiAl
JQogCiBzdHlsZXNoZWV0OgpAQCAtMTM1Nyw2ICsxMzYzLDExIEBAIHBzZXVkbzoKICAgICAgICAg
JCQgPSBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50Q3VlRnVuY3Rpb25TZWxl
Y3RvcigkMywgJDUpOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRV9TSEFET1dfRE9NCisgICAg
fCAnOicgJzonIFNMT1RURURGVU5DVElPTiBtYXliZV9zcGFjZSBzaW1wbGVfc2VsZWN0b3JfbGlz
dCBtYXliZV9zcGFjZSAnKScgeworICAgICAgICAkJCA9IENTU1BhcnNlclNlbGVjdG9yOjpwYXJz
ZVBzZXVkb0VsZW1lbnRTbG90dGVkRnVuY3Rpb25TZWxlY3RvcigkMywgJDUpOworICAgIH0KKyNl
bmRpZgogICAgIC8vIHVzZSBieSA6LXdlYmtpdC1hbnkuCiAgICAgLy8gRklYTUU6IHNob3VsZCB3
ZSBzdXBwb3J0IGdlbmVyaWMgc2VsZWN0b3JzIGhlcmUgb3IganVzdCBzaW1wbGVfc2VsZWN0b3Jz
PwogICAgIC8vIFVzZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBmb3Igbm93IHRvIG1hdGNoIC1tb3ot
YW55LgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDE5NzAyNykKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTg5
NCw4ICsxMTg5NCwxMyBAQCBpbmxpbmUgYm9vbCBDU1NQYXJzZXI6OmRldGVjdEZ1bmN0aW9uVHlw
CiAgICAgICAgICAgICBtX3Rva2VuID0gTUFUQ0hFU0ZVTkNUSU9OOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgaWYg
KGlzRXF1YWxUb0NTU0lkZW50aWZpZXIobmFtZSwgInNsb3R0ZWQiKSkgeworICAgICAgICAgICAg
bV90b2tlbiA9IFNMT1RURURGVU5DVElPTjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisjZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgY2FzZSA5OgogICAg
ICAgICBpZiAoaXNFcXVhbFRvQ1NTSWRlbnRpZmllcihuYW1lLCAibnRoLWNoaWxkIikpIHsKICAg
ICAgICAgICAgIG1fdG9rZW4gPSBOVEhDSElMREZVTkNUSU9OUzsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMxLDYgKzIz
MSwyNCBAQCBDU1NQYXJzZXJTZWxlY3RvciogQ1NTUGFyc2VyU2VsZWN0b3I6OnBhCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1BhcnNl
clNlbGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRTbG90dGVkRnVuY3Rpb25TZWxlY3Rvcihjb25z
dCBDU1NQYXJzZXJTdHJpbmcmIGZ1bmN0aW9uSWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+KiBwYXJzZWRTZWxlY3RvclZlY3RvcikKK3sKKyAgICBB
U1NFUlRfVU5VU0VEKGZ1bmN0aW9uSWRlbnRpZmllciwgU3RyaW5nKGZ1bmN0aW9uSWRlbnRpZmll
cikgPT0gInNsb3R0ZWQoIik7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+PiBzZWxlY3RvclZlY3RvcihwYXJzZWRTZWxlY3Rv
clZlY3Rvcik7CisKKyAgICBpZiAoIXNlbGVjdG9yVmVjdG9yKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNl
bGVjdG9yPigpOworICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rv
cjo6UHNldWRvRWxlbWVudCk7CisgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFBzZXVkb0Vs
ZW1lbnRUeXBlKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50U2xvdHRlZCk7CisgICAgc2VsZWN0
b3ItPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9yVmVjdG9yKTsKKyAgICByZXR1cm4gc2Vs
ZWN0b3IucmVsZWFzZSgpOworfQorI2VuZGlmCisKIENTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJz
ZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50U2VsZWN0
b3IoQ1NTUGFyc2VyU3RyaW5nJiBwc2V1ZG9UeXBlU3RyaW5nKQogewogICAgIGlmIChwc2V1ZG9U
eXBlU3RyaW5nLmxlbmd0aCgpICYmIHBzZXVkb1R5cGVTdHJpbmdbcHNldWRvVHlwZVN0cmluZy5s
ZW5ndGgoKSAtIDFdID09ICcoJykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJW
YWx1ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVz
LmgJKHJldmlzaW9uIDE5NzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDcgKzIwMywxMCBAQCBjbGFzcyBDU1NQYXJzZXJT
ZWxlY3RvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIENTU1BhcnNlclNlbGVjdG9yKiBwYXJzZVBh
Z2VQc2V1ZG9TZWxlY3Rvcihjb25zdCBDU1NQYXJzZXJTdHJpbmcmIHBzZXVkb1R5cGVTdHJpbmcp
OwogICAgIHN0YXRpYyBDU1NQYXJzZXJTZWxlY3RvciogcGFyc2VQc2V1ZG9FbGVtZW50U2VsZWN0
b3IoQ1NTUGFyc2VyU3RyaW5nJiBwc2V1ZG9UeXBlU3RyaW5nKTsKLSAgICBzdGF0aWMgQ1NTUGFy
c2VyU2VsZWN0b3IqIHBhcnNlUHNldWRvRWxlbWVudEN1ZUZ1bmN0aW9uU2VsZWN0b3IoY29uc3Qg
Q1NTUGFyc2VyU3RyaW5nJiBmdW5jdGlvbklkZW50aWZpZXIsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Q1NTUGFyc2VyU2VsZWN0b3I+Piogc2VsZWN0b3JWZWN0b3IpOworICAgIHN0YXRpYyBDU1NQ
YXJzZXJTZWxlY3RvciogcGFyc2VQc2V1ZG9FbGVtZW50Q3VlRnVuY3Rpb25TZWxlY3Rvcihjb25z
dCBDU1NQYXJzZXJTdHJpbmcmIGZ1bmN0aW9uSWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+Kik7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAg
c3RhdGljIENTU1BhcnNlclNlbGVjdG9yKiBwYXJzZVBzZXVkb0VsZW1lbnRTbG90dGVkRnVuY3Rp
b25TZWxlY3Rvcihjb25zdCBDU1NQYXJzZXJTdHJpbmcmIGZ1bmN0aW9uSWRlbnRpZmllciwgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+Kik7CisjZW5kaWYKICAgICBz
dGF0aWMgQ1NTUGFyc2VyU2VsZWN0b3IqIHBhcnNlUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5
RWxlbWVudFNlbGVjdG9yKENTU1BhcnNlclN0cmluZyYgcHNldWRvVHlwZVN0cmluZyk7CiAKICAg
ICBDU1NQYXJzZXJTZWxlY3RvcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3Bw
CShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTksNiArMjk5LDkgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6
OnBzZXVkb0lkKFBzZXVkb0VsZQogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBjYXNlIFBz
ZXVkb0VsZW1lbnRDdWU6CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBjYXNl
IFBzZXVkb0VsZW1lbnRTbG90dGVkOgorI2VuZGlmCiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50VW5r
bm93bjoKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRVc2VyQWdlbnRDdXN0b206CiAgICAgY2FzZSBQ
c2V1ZG9FbGVtZW50V2ViS2l0Q3VzdG9tOgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgJ
KHJldmlzaW9uIDE5NzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xODEsNiArMTgxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgUHNldWRvRWxlbWVudFNjcm9sbGJhclRyYWNrLAogICAgICAgICAgICAgUHNldWRv
RWxlbWVudFNjcm9sbGJhclRyYWNrUGllY2UsCiAgICAgICAgICAgICBQc2V1ZG9FbGVtZW50U2Vs
ZWN0aW9uLAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICAgICAgUHNldWRvRWxlbWVu
dFNsb3R0ZWQsCisjZW5kaWYKICAgICAgICAgICAgIFBzZXVkb0VsZW1lbnRVc2VyQWdlbnRDdXN0
b20sCiAgICAgICAgICAgICBQc2V1ZG9FbGVtZW50V2ViS2l0Q3VzdG9tLAogICAgICAgICB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCShyZXZp
c2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ1NTU2VsZWN0
b3JMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkhUTUxF
bGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyUmVnaW9uLmgiCkBAIC0yMDYsNiArMjA3LDEwIEBAIHZvaWQgRWxlbWVudFJ1
bGVDb2xsZWN0b3I6Om1hdGNoQXV0aG9yUnUKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBp
ZiAobV9lbGVtZW50LnNoYWRvd1Jvb3QoKSkKICAgICAgICAgbWF0Y2hIb3N0UHNldWRvQ2xhc3NS
dWxlcyhpbmNsdWRlRW1wdHlSdWxlcyk7CisKKyAgICBhdXRvKiBwYXJlbnQgPSBtX2VsZW1lbnQu
cGFyZW50Tm9kZSgpOworICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5zaGFkb3dSb290KCkpCisg
ICAgICAgIG1hdGNoU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcyk7
CiAjZW5kaWYKIAogICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7CkBAIC0yNDEsNiArMjQ2LDU5IEBA
IHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoSG9zdFBzZXUKICAgICAvLyBGSVhNRTog
TWF0Y2ggdGhlIHNwZWMgd2hlbiBpdCBpcyBmaW5hbGl6ZWQuCiAgICAgc29ydEFuZFRyYW5zZmVy
TWF0Y2hlZFJ1bGVzKCk7CiB9CisKK3ZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoU2xv
dHRlZFBzZXVkb0VsZW1lbnRSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQoreworICAgIGF1
dG8qIGhvc3RTaGFkb3dSb290ID0gbV9lbGVtZW50LnBhcmVudE5vZGUoKS0+c2hhZG93Um9vdCgp
OworICAgIEFTU0VSVChob3N0U2hhZG93Um9vdCk7CisgICAgYXV0byogc2xvdCA9IGhvc3RTaGFk
b3dSb290LT5maW5kQXNzaWduZWRTbG90KG1fZWxlbWVudCk7CisgICAgaWYgKCFzbG90KQorICAg
ICAgICByZXR1cm47CisgICAgYXV0byogc2hhZG93QXV0aG9yU3R5bGUgPSBob3N0U2hhZG93Um9v
dC0+c3R5bGVSZXNvbHZlcigpLnJ1bGVTZXRzKCkuYXV0aG9yU3R5bGUoKTsKKyAgICBpZiAoIXNo
YWRvd0F1dGhvclN0eWxlKQorICAgICAgICByZXR1cm47CisgICAgLy8gRmluZCBvdXQgaWYgdGhl
cmUgYXJlIGFueSA6OnNsb3R0ZWQgcnVsZXMgaW4gdGhlIHNoYWRvdyB0cmVlIG1hdGNoaW5nIHRo
ZSBjdXJyZW50IHNsb3QuCisgICAgLy8gRklYTUU6IFRoaXMgaXMgcmVhbGx5IHBhcnQgb2YgdGhl
IHNsb3Qgc3R5bGUgYW5kIGNvdWxkIGJlIGNhY2hlZCB3aGVuIHJlc29sdmluZyBpdC4KKyAgICBF
bGVtZW50UnVsZUNvbGxlY3RvciBjb2xsZWN0b3IoKnNsb3QsICpzaGFkb3dBdXRob3JTdHlsZSwg
bnVsbHB0cik7CisgICAgYXV0byBzbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzID0gY29sbGVjdG9y
LmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzRm9yU2xvdChpbmNsdWRlRW1wdHlSdWxl
cyk7CisgICAgaWYgKHNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gY2hhbmdlKG1faXNNYXRjaGlu
ZFNsb3R0ZWRQc2V1ZG9FbGVtZW50LCB0cnVlKTsKKworICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7
CisgICAgbV9yZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlID0gbV9yZXN1bHQubWF0Y2hlZFBy
b3BlcnRpZXMoKS5zaXplKCkgLSAxOworICAgIGF1dG8gcnVsZVJhbmdlID0gbV9yZXN1bHQucmFu
Z2VzLmF1dGhvclJ1bGVSYW5nZSgpOworCisgICAgLy8gTWF0Y2ggaW4gdGhlIGN1cnJlbnQgc2Nv
cGUuCisgICAgTWF0Y2hSZXF1ZXN0IG1hdGNoUmVxdWVzdChudWxscHRyLCBpbmNsdWRlRW1wdHlS
dWxlcyk7CisgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KCZzbG90dGVkUHNldWRvRWxl
bWVudFJ1bGVzLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CisKKyAgICAvLyBGSVhNRTogV2hh
dCBpcyB0aGUgY29ycmVjdCBvcmRlcj8KKyAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMo
KTsKK30KKworUnVsZVNldDo6UnVsZURhdGFWZWN0b3IgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNv
bGxlY3RTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzRm9yU2xvdChib29sIGluY2x1ZGVFbXB0eVJ1
bGVzKQoreworICAgIEFTU0VSVChpczxIVE1MU2xvdEVsZW1lbnQ+KG1fZWxlbWVudCkpOworCisg
ICAgY2xlYXJNYXRjaGVkUnVsZXMoKTsKKworICAgIG1fbW9kZSA9IFNlbGVjdG9yQ2hlY2tlcjo6
TW9kZTo6Q29sbGVjdGluZ1J1bGVzOworCisgICAgLy8gTWF0Y2ggZ2xvYmFsIGF1dGhvciBydWxl
cy4KKyAgICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0KCZtX2F1dGhvclN0eWxlLCBpbmNsdWRl
RW1wdHlSdWxlcyk7CisgICAgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlIHJ1bGVSYW5nZSA9IG1f
cmVzdWx0LnJhbmdlcy5hdXRob3JSdWxlUmFuZ2UoKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxl
c0Zvckxpc3QoJm1fYXV0aG9yU3R5bGUuc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcygpLCBtYXRj
aFJlcXVlc3QsIHJ1bGVSYW5nZSk7CisKKyAgICBpZiAobV9tYXRjaGVkUnVsZXMuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgUnVsZVNldDo6UnVsZURhdGFWZWN0b3IgcnVs
ZURhdGFWZWN0b3I7CisgICAgZm9yIChhdXRvJiBtYXRjaGVkUnVsZSA6IG1fbWF0Y2hlZFJ1bGVz
KQorICAgICAgICBydWxlRGF0YVZlY3Rvci5hcHBlbmQoKm1hdGNoZWRSdWxlLnJ1bGVEYXRhKTsK
KyAgICByZXR1cm4gcnVsZURhdGFWZWN0b3I7Cit9CiAjZW5kaWYKIAogdm9pZCBFbGVtZW50UnVs
ZUNvbGxlY3Rvcjo6bWF0Y2hVc2VyUnVsZXMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKQEAgLTI4
NCw2ICszNDIsMjAgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1bGVzKAog
ICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcygpOwogfQogCisjaWYgRU5BQkxFKFNIQURP
V19ET00pCitzdGF0aWMgY29uc3QgQ1NTU2VsZWN0b3IqIGZpbmRTbG90dGVkUHNldWRvRWxlbWVu
dFNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKK3sKKyAgICBmb3IgKDsgc2Vs
ZWN0b3I7IHNlbGVjdG9yID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkgeworICAgICAgICBpZiAo
c2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQgJiYgc2VsZWN0
b3ItPnBzZXVkb0VsZW1lbnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRTbG90
dGVkKSB7CisgICAgICAgICAgICBpZiAoYXV0byogbGlzdCA9IHNlbGVjdG9yLT5zZWxlY3Rvckxp
c3QoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbGlzdC0+Zmlyc3QoKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRp
ZgorCiBpbmxpbmUgYm9vbCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMoY29uc3Qg
UnVsZURhdGEmIHJ1bGVEYXRhLCB1bnNpZ25lZCYgc3BlY2lmaWNpdHkpCiB7CiAgICAgLy8gV2Ug
a25vdyBhIHN1ZmZpY2llbnRseSBzaW1wbGUgc2luZ2xlIHBhcnQgc2VsZWN0b3IgbWF0Y2hlcyBz
aW1wbHkgYmVjYXVzZSB3ZSBmb3VuZCBpdCBmcm9tIHRoZSBydWxlIGhhc2ggd2hlbiBmaWx0ZXJp
bmcgdGhlIFJ1bGVTZXQuCkBAIC0zNTYsOSArNDI4LDE4IEBAIGlubGluZSBib29sIEVsZW1lbnRS
dWxlQ29sbGVjdG9yOjpydWxlTWEKICAgICB9IGVsc2UKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NF
TEVDVE9SX0pJVCkKICAgICB7CisgICAgICAgIGF1dG8qIHNlbGVjdG9yID0gcnVsZURhdGEuc2Vs
ZWN0b3IoKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgaWYgKG1faXNNYXRjaGlu
ZFNsb3R0ZWRQc2V1ZG9FbGVtZW50KSB7CisgICAgICAgICAgICBzZWxlY3RvciA9IGZpbmRTbG90
dGVkUHNldWRvRWxlbWVudFNlbGVjdG9yKHJ1bGVEYXRhLnNlbGVjdG9yKCkpOworICAgICAgICAg
ICAgaWYgKCFzZWxlY3RvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKworI2VuZGlmCiAgICAgICAgIC8vIFNsb3cgcGF0aC4KICAgICAgICAgU2VsZWN0b3JDaGVj
a2VyIHNlbGVjdG9yQ2hlY2tlcihtX2VsZW1lbnQuZG9jdW1lbnQoKSk7Ci0gICAgICAgIHNlbGVj
dG9yTWF0Y2hlcyA9IHNlbGVjdG9yQ2hlY2tlci5tYXRjaCgqcnVsZURhdGEuc2VsZWN0b3IoKSwg
bV9lbGVtZW50LCBjb250ZXh0LCBzcGVjaWZpY2l0eSk7CisgICAgICAgIHNlbGVjdG9yTWF0Y2hl
cyA9IHNlbGVjdG9yQ2hlY2tlci5tYXRjaCgqc2VsZWN0b3IsIG1fZWxlbWVudCwgY29udGV4dCwg
c3BlY2lmaWNpdHkpOwogICAgIH0KIAogICAgIGNvbW1pdFN0eWxlUmVsYXRpb25zKGNvbnRleHQu
c3R5bGVSZWxhdGlvbnMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29s
bGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29s
bGVjdG9yLmgJKHJldmlzaW9uIDE5NzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50
UnVsZUNvbGxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBtYXRjaFVBUnVsZXMoUnVsZVNldCopOwogI2lmIEVOQUJMRShTSEFET1dfRE9N
KQogICAgIHZvaWQgbWF0Y2hIb3N0UHNldWRvQ2xhc3NSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1
bGVzKTsKKyAgICB2b2lkIG1hdGNoU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyhib29sIGluY2x1
ZGVFbXB0eVJ1bGVzKTsKKyAgICBSdWxlU2V0OjpSdWxlRGF0YVZlY3RvciBjb2xsZWN0U2xvdHRl
ZFBzZXVkb0VsZW1lbnRSdWxlc0ZvclNsb3QoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAjZW5k
aWYKIAogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0Jiwg
U3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlJik7CkBAIC05OCw2ICsxMDAsOSBAQCBwcml2YXRlOgog
ICAgIFBzZXVkb1N0eWxlUmVxdWVzdCBtX3BzZXVkb1N0eWxlUmVxdWVzdCB7IE5PUFNFVURPIH07
CiAgICAgYm9vbCBtX3NhbWVPcmlnaW5Pbmx5IHsgZmFsc2UgfTsKICAgICBTZWxlY3RvckNoZWNr
ZXI6Ok1vZGUgbV9tb2RlIHsgU2VsZWN0b3JDaGVja2VyOjpNb2RlOjpSZXNvbHZpbmdTdHlsZSB9
OworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGJvb2wgbV9pc01hdGNoaW5kU2xvdHRlZFBz
ZXVkb0VsZW1lbnQgeyBmYWxzZSB9OworI2VuZGlmCiAKICAgICBWZWN0b3I8TWF0Y2hlZFJ1bGUs
IDY0PiBtX21hdGNoZWRSdWxlczsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAkocmV2aXNp
b24gMTk3MDI3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjYsNiArMjY2LDEyIEBAIHZvaWQgUnVsZVNldDo6YWRkUnVsZShTdHlsZVJ1bGUq
IHJ1bGUsIHUKICAgICAgICAgICAgIG1faG9zdFBzZXVkb0NsYXNzUnVsZXMuYXBwZW5kKHJ1bGVE
YXRhKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBpZiAoc2VsZWN0
b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQgJiYgc2VsZWN0b3ItPnBz
ZXVkb0VsZW1lbnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRTbG90dGVkKSB7
CisgICAgICAgICAgICAvLyA6OnNsb3R0ZWQgcHNldWRvIGVsZW1lbnRzIHdvcmsgYWNjcm9zcyBz
aGFkb3cgYm91bmRhcnkgbWFraW5nIGZpbHRlcmluZyBkaWZmaWN1bHQuCisgICAgICAgICAgICBy
dWxlRGF0YS5kaXNhYmxlU2VsZWN0b3JGaWx0ZXJpbmcoKTsKKyAgICAgICAgICAgIG1fc2xvdHRl
ZFBzZXVkb0VsZW1lbnRSdWxlcy5hcHBlbmQocnVsZURhdGEpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpICE9
IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcikKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDIyLDYg
KzQyOCwxMCBAQCB2b2lkIFJ1bGVTZXQ6OnNocmlua1RvRml0KCkKICNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCiAgICAgbV9jdWVQc2V1ZG9SdWxlcy5zaHJpbmtUb0ZpdCgpOwogI2VuZGlmCisjaWYg
RU5BQkxFKFNIQURPV19ET00pCisgICAgbV9ob3N0UHNldWRvQ2xhc3NSdWxlcy5zaHJpbmtUb0Zp
dCgpOworICAgIG1fc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcy5zaHJpbmtUb0ZpdCgpOworI2Vu
ZGlmCiAgICAgbV9mb2N1c1BzZXVkb0NsYXNzUnVsZXMuc2hyaW5rVG9GaXQoKTsKICAgICBtX3Vu
aXZlcnNhbFJ1bGVzLnNocmlua1RvRml0KCk7CiAgICAgbV9wYWdlUnVsZXMuc2hyaW5rVG9GaXQo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaAkocmV2aXNpb24gMTk3MDI3KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL1J1bGVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDYgKzE4NCw3IEBAIHB1
YmxpYzoKICNlbmRpZgogI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGNvbnN0IFJ1bGVEYXRh
VmVjdG9yJiBob3N0UHNldWRvQ2xhc3NSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1faG9zdFBzZXVk
b0NsYXNzUnVsZXM7IH0KKyAgICBjb25zdCBSdWxlRGF0YVZlY3RvciYgc2xvdHRlZFBzZXVkb0Vs
ZW1lbnRSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlczsg
fQogI2VuZGlmCiAgICAgY29uc3QgUnVsZURhdGFWZWN0b3IqIGZvY3VzUHNldWRvQ2xhc3NSdWxl
cygpIGNvbnN0IHsgcmV0dXJuICZtX2ZvY3VzUHNldWRvQ2xhc3NSdWxlczsgfQogICAgIGNvbnN0
IFJ1bGVEYXRhVmVjdG9yKiB1bml2ZXJzYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3VuaXZl
cnNhbFJ1bGVzOyB9CkBAIC0yMTAsNiArMjExLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVO
QUJMRShTSEFET1dfRE9NKQogICAgIFJ1bGVEYXRhVmVjdG9yIG1faG9zdFBzZXVkb0NsYXNzUnVs
ZXM7CisgICAgUnVsZURhdGFWZWN0b3IgbV9zbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzOwogI2Vu
ZGlmCiAgICAgUnVsZURhdGFWZWN0b3IgbV9mb2N1c1BzZXVkb0NsYXNzUnVsZXM7CiAgICAgUnVs
ZURhdGFWZWN0b3IgbV91bml2ZXJzYWxSdWxlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9T
ZWxlY3RvckNoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckNoZWNrZXIuY3BwCShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5o
IgogI2luY2x1ZGUgIkhUTUxQcm9ncmVzc0VsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MU2xvdEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTAzOCw3ICsxMDM5
LDEzIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShDaGVja2luZ0MKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICNlbmRpZgotICAgIC8vICMjIyBhZGQgdGhlIHJlc3Qgb2Yg
dGhlIGNoZWNrcy4uLgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGlmIChzZWxlY3Rvci5t
YXRjaCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50ICYmIHNlbGVjdG9yLnBzZXVkb0Vs
ZW1lbnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRTbG90dGVkKSB7CisgICAg
ICAgIC8vIFdlIHNlZSA6OnNsb3R0ZWQoKSBwc2V1ZG8gZWxlbWVudHMgd2hlbiBjb2xsZWN0aW5n
IHNsb3R0ZWQgcnVsZXMgZnJvbSB0aGUgc2xvdCBzaGFkb3cgdHJlZSBvbmx5LgorICAgICAgICBB
U1NFUlQoY2hlY2tpbmdDb250ZXh0LnJlc29sdmluZ01vZGUgPT0gTW9kZTo6Q29sbGVjdGluZ1J1
bGVzKTsKKyAgICAgICAgcmV0dXJuIGlzPEhUTUxTbG90RWxlbWVudD4oZWxlbWVudCk7CisgICAg
fQorI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVNoYXJpbmdSZXNvbHZlci5jcHAJKHJldmlzaW9uIDE5NzAyNykKKysrIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzYsNiArNzYsOCBAQCBjb25zdCBFbGVtZW50KiBTaGFyaW5nUmVzb2x2ZXI6OnJlc29s
dmUoCiAgICAgaWYgKCFlbGVtZW50LnBhcmVudEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgYXV0byYgcGFyZW50RWxlbWVudCA9ICplbGVtZW50LnBhcmVudEVsZW1lbnQo
KTsKKyAgICBpZiAocGFyZW50RWxlbWVudC5zaGFkb3dSb290KCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIGlmICghcGFyZW50RWxlbWVudC5yZW5kZXJTdHlsZSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAvLyBJZiB0aGUgZWxlbWVudCBoYXMgaW5saW5lIHN0eWxlIGl0
IGlzIHByb2JhYmx5IHVuaXF1ZS4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzAyNykKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE2LTAy
LTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgOjpzbG90dGVkIHBzZXVkbyBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk0NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNzMx
OTg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVu
YWJsZSB0aGUgdGVzdCwgZml4IGl0IGFuZCB1cGRhdGUgaXQgdG8gdGhlIGN1cnJlbnQgc3BlYy4K
KworICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctc2xvdHRlZC1y
dWxlLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIw
MTYtMDItMjQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04ocjE5NTk0OSk6IFtHVEtdIFRlc3QgL3dlYmtpdDIvV2ViS2l0V2Vi
Vmlldy9pbnNlcnQvbGluayBpcyBmYWlsaW5nIHNpbmNlIHIxOTU5NDkKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctc2xvdHRlZC1ydWxlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNo
YWRvdy1zbG90dGVkLXJ1bGUuaHRtbAkocmV2aXNpb24gMTk3MDI3KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1zbG90dGVkLXJ1bGUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVh
ZD4KLSAgICA8dGl0bGU+Q1NTIFNjb3BpbmcgLSA6c2xvdHRlZCBwZXN1ZG8gZWxlbWVudCBtdXN0
IGFsbG93IHNlbGVjdGluZyBlbGVtZW50cyBhc3NpZ25lZCB0byBhIHNsb3QgZWxlbWVudDwvdGl0
bGU+CisgICAgPHRpdGxlPkNTUyBTY29waW5nIC0gOnNsb3R0ZWQgcHNldWRvIGVsZW1lbnQgbXVz
dCBhbGxvdyBzZWxlY3RpbmcgZWxlbWVudHMgYXNzaWduZWQgdG8gYSBzbG90IGVsZW1lbnQ8L3Rp
dGxlPgogICAgIDxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBocmVmPSJt
YWlsdG86cm5pd2FAd2Via2l0Lm9yZyIvPgogICAgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0
cDovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jc2VsZWN0b3JzLWRhdGEtbW9kZWwiPgog
ICAgIDxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9InJlZmVyZW5jZS9ncmVlbi1ib3guaHRtbCIvPgpA
QCAtMTIsNyArMTIsOCBAQAogICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAg
ICB3aWR0aDogMTAwcHg7CiAgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OwotICAgICAgICAgICAg
YmFja2dyb3VuZDogcmVkOworICAgICAgICAgICAgY29sb3I6IHJlZDsKKyAgICAgICAgICAgIGJh
Y2tncm91bmQ6IGdyZWVuOwogICAgICAgICB9CiAgICAgICAgIG15LWhvc3QgPiBkaXYsIG5lc3Rl
ZC1ob3N0IHsKICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwpAQCAtMjMsNyArMjQsNyBAQAog
ICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3Jl
ZW4gYm94IGJlbG93LjwvcD4gCiAgICAgPG15LWhvc3Q+CiAgICAgICAgIDxkaXYgY2xhc3M9Imdy
ZWVuIj5GQUlMMTwvZGl2PgotICAgICAgICA8ZGl2PjxzcGFuPkZBSUwyPC9zcGFuPjwvZGl2Pgor
ICAgICAgICA8bXllbGVtPjxzcGFuPkZBSUwyPC9zcGFuPjwvbXllbGVtPgogICAgICAgICA8bmVz
dGVkLWhvc3Q+CiAgICAgICAgICAgICA8c3Bhbj5GQUlMMzwvc3Bhbj4KICAgICAgICAgPC9uZXN0
ZWQtaG9zdD4KQEAgLTM2LDE1ICszNywxNSBAQAogICAgICAgICB0cnkgewogICAgICAgICAgICAg
dmFyIHNoYWRvd0hvc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdteS1ob3N0Jyk7CiAgICAg
ICAgICAgICBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVu
J30pOwotICAgICAgICAgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPHNsb3Q+PC9zbG90Pjxz
dHlsZT4gOjpzbG90dGVkID4gLmdyZWVuLCA6OnNsb3R0ZWQgc3BhbiB7IGNvbG9yOmdyZWVuOyB9
IDwvc3R5bGU+JzsKKyAgICAgICAgICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzbG90Pjwv
c2xvdD48c3R5bGU+IDo6c2xvdHRlZCguZ3JlZW4pLCA6OnNsb3R0ZWQobXllbGVtKSB7IGNvbG9y
OmdyZWVuOyB9IDwvc3R5bGU+JzsKIAogICAgICAgICAgICAgc2hhZG93SG9zdCA9IGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJ25lc3RlZC1ob3N0Jyk7CiAgICAgICAgICAgICBzaGFkb3dSb290ID0g
c2hhZG93SG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVuJ30pOwotICAgICAgICAgICAgc2hh
ZG93Um9vdC5pbm5lckhUTUwgPSAnPHNsb3Q+PC9zbG90Pic7CisgICAgICAgICAgICBzaGFkb3dS
b290LmlubmVySFRNTCA9ICc8c3R5bGU+IC5teWRpdiA6OnNsb3R0ZWQoKikgeyBjb2xvcjpncmVl
bjsgfSA8L3N0eWxlPjxkaXYgY2xhc3M9bXlkaXY+PHNsb3Q+PC9zbG90PjwvZGl2Pic7CiAKICAg
ICAgICAgICAgIHNoYWRvd0hvc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhbm90aGVyLWhv
c3QnKTsKICAgICAgICAgICAgIHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdyh7
bW9kZTogJ29wZW4nfSk7Ci0gICAgICAgICAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c3R5
bGU+IDo6c2xvdHRlZCB7IGNvbG9yOmdyZWVuOyB9IDwvc3R5bGU+PHNsb3Q+PC9zbG90Pic7Cisg
ICAgICAgICAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c3R5bGU+IDo6c2xvdHRlZCgqKSB7
IGNvbG9yOmdyZWVuOyB9IDwvc3R5bGU+PHNsb3Q+PC9zbG90Pic7CiAgICAgICAgIH0gY2F0Y2gg
KGV4Y2VwdGlvbikgewogICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShleGNlcHRpb24pKTsKICAgICAgICAgfQpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDE5NzAyNykKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjUwLDcgKzEyNTAsNiBAQCB3ZWJraXQub3JnL2IvMTQ5MTI4IGZhc3QvdGV4dC9jb250
cm9sLWNoCiAKIHdlYmtpdC5vcmcvYi8xNDg2OTUgZmFzdC9zaGFkb3ctZG9tIFsgUGFzcyBdCiB3
ZWJraXQub3JnL2IvMTQ5NDQwIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctaG9z
dC1mdW5jdGlvbmFsLXJ1bGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzE0OTQ0MSBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXNsb3R0ZWQtcnVsZS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTQ5NDQxIGZhc3Qvc2hhZG93
LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctc2xvdC1kaXNwbGF5LW92ZXJyaWRlLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIAogIyBUb3VjaCBldmVudHMgaXMgbm90IGVuYWJsZWQgb24gTWFjCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272310</attachid>
            <date>2016-02-26 00:09:30 -0800</date>
            <delta_ts>2016-02-26 02:57:44 -0800</delta_ts>
            <desc>patch</desc>
            <filename>slotted-7.patch</filename>
            <type>text/plain</type>
            <size>26013</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzEyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDE2LTAyLTI1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgOjpzbG90dGVk
IHBzZXVkbyBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDk0NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNzMxOTg3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIGxhdGVz
dCBpbiBodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYmNvbXBvbmVudHMvaXNzdWVzLzMzMQorCisg
ICAgICAgICogY3NzL0NTU0dyYW1tYXIueS5pbjoKKworICAgICAgICAgICAgUGFyc2UgOjpzbG90
dGVkLgorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OmRldGVjdEZ1bmN0aW9uVHlwZVRva2VuKToKKyAgICAgICAgKiBjc3MvQ1NTUGFy
c2VyVmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpwYXJz
ZVBzZXVkb0VsZW1lbnRDdWVGdW5jdGlvblNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRTbG90dGVkRnVuY3Rpb25TZWxlY3Rv
cik6CisKKyAgICAgICAgICAgIFRva2VuaXplIDo6c2xvdHRlZC4KKworICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxl
bWVudFNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyVmFsdWVzLmg6CisgICAgICAg
ICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpw
c2V1ZG9JZCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAgICogY3NzL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29s
bGVjdG9yOjptYXRjaEF1dGhvclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxl
Q29sbGVjdG9yOjptYXRjaEhvc3RQc2V1ZG9DbGFzc1J1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMpOgor
CisgICAgICAgICAgICBNYXRjaCA6OnNsb3R0ZWQgc2VsZWN0b3IuCisKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxl
c0ZvclNsb3QpOgorCisgICAgICAgICAgICBDb2xsZWN0IDo6c2xvdHRlZCBydWxlcyB0aGF0IG1h
eSBhcHBseSB0byBhbiBlbGVtZW50IGluIGEgc2xvdC4KKworICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoVXNlclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFVBUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Zmlu
ZFNsb3R0ZWRQc2V1ZG9FbGVtZW50U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFJ1bGVDb2xsZWN0b3I6OnJ1bGVNYXRjaGVzKToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVD
b2xsZWN0b3IuaDoKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSdWxlU2V0OjphZGRSdWxlKToKKworICAgICAgICAgICAgQ29sbGVjdCA6OnNsb3R0ZWQgcnVs
ZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OnNocmlua1RvRml0KToKKyAgICAgICAg
KiBjc3MvUnVsZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6aG9zdFBzZXVkb0Ns
YXNzUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6c2xvdHRlZFBzZXVkb0VsZW1l
bnRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0Ojpmb2N1c1BzZXVkb0NsYXNzUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6dW5pdmVyc2FsUnVsZXMpOgorICAgICAg
ICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNoYXJpbmdSZXNvbHZlcjo6cmVzb2x2ZSk6
CisKKyAgICAgICAgICAgIERpc2FibGUgc3R5bGUgc2hhcmluZyBmb3IgY2hpbGRyZW4gb2Ygc2hh
ZG93IGhvc3QuIFRoZXkgbWF5IGJlIGFmZmVjdGVkIGJ5IHRoZSBzaGFkb3cgdHJlZSBzdHlsZQor
ICAgICAgICAgICAgd2hpY2ggaXMgbm90IGNvbnNpZGVyZWQgaW4gc3R5bGUgc2hhcmluZyBjaGVj
a3MuCisKIDIwMTYtMDItMjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTk2MjY4KTogTWFueSBhc3NlcnRpb24gZmFp
bHVyZXMgYW5kIGNyYXNoZXMgb24gU1ZHIHBhdGggYW5pbWF0aW9uIHRlc3RzIHdoZW4gSlMgZ2Fy
YmFnZSBjb2xsZWN0aW9uIGhhcHBlbnMgcXVpY2tseQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55LmluCShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55LmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsNiArMzY1LDEyIEBAIHN0YXRpYyBib29s
IHNlbGVjdG9yTGlzdERvZXNOb3RNYXRjaEFueVAKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEVfU0hB
RE9XX0RPTQorCisldG9rZW4gPHN0cmluZz4gU0xPVFRFREZVTkNUSU9OCisKKyNlbmRpZgorCiAl
JQogCiBzdHlsZXNoZWV0OgpAQCAtMTM1Nyw2ICsxMzYzLDExIEBAIHBzZXVkbzoKICAgICAgICAg
JCQgPSBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50Q3VlRnVuY3Rpb25TZWxl
Y3RvcigkMywgJDUpOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRV9TSEFET1dfRE9NCisgICAg
fCAnOicgJzonIFNMT1RURURGVU5DVElPTiBtYXliZV9zcGFjZSBjb21wb3VuZF9zZWxlY3RvciBt
YXliZV9zcGFjZSAnKScgeworICAgICAgICAkJCA9IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBz
ZXVkb0VsZW1lbnRTbG90dGVkRnVuY3Rpb25TZWxlY3RvcigkMywgJDUpOworICAgIH0KKyNlbmRp
ZgogICAgIC8vIHVzZSBieSA6LXdlYmtpdC1hbnkuCiAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBz
dXBwb3J0IGdlbmVyaWMgc2VsZWN0b3JzIGhlcmUgb3IganVzdCBzaW1wbGVfc2VsZWN0b3JzPwog
ICAgIC8vIFVzZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBmb3Igbm93IHRvIG1hdGNoIC1tb3otYW55
LgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDE5NzAyNykKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTg5NCw2
ICsxMTg5NCwxMiBAQCBpbmxpbmUgYm9vbCBDU1NQYXJzZXI6OmRldGVjdEZ1bmN0aW9uVHlwCiAg
ICAgICAgICAgICBtX3Rva2VuID0gTUFUQ0hFU0ZVTkNUSU9OOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgaWYgKGlz
RXF1YWxUb0NTU0lkZW50aWZpZXIobmFtZSwgInNsb3R0ZWQiKSkgeworICAgICAgICAgICAgbV90
b2tlbiA9IFNMT1RURURGVU5DVElPTjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisjZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2FzZSA5OgpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAJKHJldmlzaW9uIDE5NzAyNykKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzEsNiArMjMxLDMyIEBAIENTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXJTZWxlY3Rvcjo6
cGEKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCitDU1NQYXJzZXJTZWxlY3Rv
ciogQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvRWxlbWVudFNsb3R0ZWRGdW5jdGlvblNl
bGVjdG9yKGNvbnN0IENTU1BhcnNlclN0cmluZyYgZnVuY3Rpb25JZGVudGlmaWVyLCBDU1NQYXJz
ZXJTZWxlY3RvciogcGFyc2VkU2VsZWN0b3IpCit7CisgICAgQVNTRVJUX1VOVVNFRChmdW5jdGlv
bklkZW50aWZpZXIsIFN0cmluZyhmdW5jdGlvbklkZW50aWZpZXIpID09ICJzbG90dGVkKCIpOwor
CisgICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBzbG90dGVkU2VsZWN0b3Io
cGFyc2VkU2VsZWN0b3IpOworCisgICAgaWYgKCFwYXJzZWRTZWxlY3RvcikKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBmb3IgKGF1dG8qIGNvbXBvbmVudCA9IHBhcnNlZFNlbGVjdG9y
OyBjb21wb25lbnQ7IGNvbXBvbmVudCA9IGNvbXBvbmVudC0+dGFnSGlzdG9yeSgpKSB7CisgICAg
ICAgIGlmIChjb21wb25lbnQtPm1hdGNoZXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvIHNlbGVjdG9yVmVjdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4+KCk7
CisgICAgc2VsZWN0b3JWZWN0b3ItPmFwcGVuZChXVEZNb3ZlKHNsb3R0ZWRTZWxlY3RvcikpOwor
CisgICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+
KCk7CisgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1
ZG9FbGVtZW50KTsKKyAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRvRWxlbWVudFR5
cGUoQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRTbG90dGVkKTsKKyAgICBzZWxlY3Rvci0+YWRv
cHRTZWxlY3RvclZlY3Rvcigqc2VsZWN0b3JWZWN0b3IpOworICAgIHJldHVybiBzZWxlY3Rvci5y
ZWxlYXNlKCk7Cit9CisjZW5kaWYKKwogQ1NTUGFyc2VyU2VsZWN0b3IqIENTU1BhcnNlclNlbGVj
dG9yOjpwYXJzZVBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRTZWxlY3RvcihDU1NQ
YXJzZXJTdHJpbmcmIHBzZXVkb1R5cGVTdHJpbmcpCiB7CiAgICAgaWYgKHBzZXVkb1R5cGVTdHJp
bmcubGVuZ3RoKCkgJiYgcHNldWRvVHlwZVN0cmluZ1twc2V1ZG9UeXBlU3RyaW5nLmxlbmd0aCgp
IC0gMV0gPT0gJygnKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAkocmV2
aXNpb24gMTk3MDI3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDMsNyArMjAzLDEwIEBAIGNsYXNzIENTU1BhcnNlclNlbGVjdG9y
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgQ1NTUGFyc2VyU2VsZWN0b3IqIHBhcnNlUGFnZVBzZXVk
b1NlbGVjdG9yKGNvbnN0IENTU1BhcnNlclN0cmluZyYgcHNldWRvVHlwZVN0cmluZyk7CiAgICAg
c3RhdGljIENTU1BhcnNlclNlbGVjdG9yKiBwYXJzZVBzZXVkb0VsZW1lbnRTZWxlY3RvcihDU1NQ
YXJzZXJTdHJpbmcmIHBzZXVkb1R5cGVTdHJpbmcpOwotICAgIHN0YXRpYyBDU1NQYXJzZXJTZWxl
Y3RvciogcGFyc2VQc2V1ZG9FbGVtZW50Q3VlRnVuY3Rpb25TZWxlY3Rvcihjb25zdCBDU1NQYXJz
ZXJTdHJpbmcmIGZ1bmN0aW9uSWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQ
YXJzZXJTZWxlY3Rvcj4+KiBzZWxlY3RvclZlY3Rvcik7CisgICAgc3RhdGljIENTU1BhcnNlclNl
bGVjdG9yKiBwYXJzZVBzZXVkb0VsZW1lbnRDdWVGdW5jdGlvblNlbGVjdG9yKGNvbnN0IENTU1Bh
cnNlclN0cmluZyYgZnVuY3Rpb25JZGVudGlmaWVyLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENT
U1BhcnNlclNlbGVjdG9yPj4qKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBzdGF0aWMg
Q1NTUGFyc2VyU2VsZWN0b3IqIHBhcnNlUHNldWRvRWxlbWVudFNsb3R0ZWRGdW5jdGlvblNlbGVj
dG9yKGNvbnN0IENTU1BhcnNlclN0cmluZyYgZnVuY3Rpb25JZGVudGlmaWVyLCBDU1NQYXJzZXJT
ZWxlY3RvciopOworI2VuZGlmCiAgICAgc3RhdGljIENTU1BhcnNlclNlbGVjdG9yKiBwYXJzZVBz
ZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRTZWxlY3RvcihDU1NQYXJzZXJTdHJpbmcm
IHBzZXVkb1R5cGVTdHJpbmcpOwogCiAgICAgQ1NTUGFyc2VyU2VsZWN0b3IoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkocmV2aXNpb24gMTk3MDI3KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk5LDYgKzI5OSw5
IEBAIFBzZXVkb0lkIENTU1NlbGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9FbGUKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50Q3VlOgogI2VuZGlmCisjaWYgRU5B
QkxFKFNIQURPV19ET00pCisgICAgY2FzZSBQc2V1ZG9FbGVtZW50U2xvdHRlZDoKKyNlbmRpZgog
ICAgIGNhc2UgUHNldWRvRWxlbWVudFVua25vd246CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50VXNl
ckFnZW50Q3VzdG9tOgogICAgIGNhc2UgUHNldWRvRWxlbWVudFdlYktpdEN1c3RvbToKQEAgLTY0
NCw4ICs2NDcsMTYgQEAgU3RyaW5nIENTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQoY29uc3QgUwog
ICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UgaWYgKGNzLT5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50
KSB7Ci0gICAgICAgICAgICBzdHIuYXBwZW5kTGl0ZXJhbCgiOjoiKTsKLSAgICAgICAgICAgIHN0
ci5hcHBlbmQoY3MtPnZhbHVlKCkpOworICAgICAgICAgICAgc3dpdGNoIChjcy0+cHNldWRvRWxl
bWVudFR5cGUoKSkgeworICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVu
dFNsb3R0ZWQ6CisgICAgICAgICAgICAgICAgc3RyLmFwcGVuZExpdGVyYWwoIjo6c2xvdHRlZCgi
KTsKKyAgICAgICAgICAgICAgICBjcy0+c2VsZWN0b3JMaXN0KCktPmJ1aWxkU2VsZWN0b3JzVGV4
dChzdHIpOworICAgICAgICAgICAgICAgIHN0ci5hcHBlbmQoJyknKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgc3RyLmFwcGVu
ZExpdGVyYWwoIjo6Iik7CisgICAgICAgICAgICAgICAgc3RyLmFwcGVuZChjcy0+dmFsdWUoKSk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoY3MtPmlzQXR0cmlidXRlU2VsZWN0
b3IoKSkgewogICAgICAgICAgICAgc3RyLmFwcGVuZCgnWycpOwogICAgICAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBwcmVmaXggPSBjcy0+YXR0cmlidXRlKCkucHJlZml4KCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuaAkocmV2aXNpb24gMTk3MDI3KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsxODEsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBQc2V1ZG9FbGVtZW50U2Nyb2xsYmFyVHJh
Y2ssCiAgICAgICAgICAgICBQc2V1ZG9FbGVtZW50U2Nyb2xsYmFyVHJhY2tQaWVjZSwKICAgICAg
ICAgICAgIFBzZXVkb0VsZW1lbnRTZWxlY3Rpb24sCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisg
ICAgICAgICAgICBQc2V1ZG9FbGVtZW50U2xvdHRlZCwKKyNlbmRpZgogICAgICAgICAgICAgUHNl
dWRvRWxlbWVudFVzZXJBZ2VudEN1c3RvbSwKICAgICAgICAgICAgIFBzZXVkb0VsZW1lbnRXZWJL
aXRDdXN0b20sCiAgICAgICAgIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1
bGVDb2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50
UnVsZUNvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDE5NzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdv
cmRzLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MU2xvdEVsZW1l
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJO
b2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5kZXJSZWdpb24uaCIKQEAgLTIwNiw2ICsy
MDcsMTAgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hBdXRob3JSdQogI2lmIEVO
QUJMRShTSEFET1dfRE9NKQogICAgIGlmIChtX2VsZW1lbnQuc2hhZG93Um9vdCgpKQogICAgICAg
ICBtYXRjaEhvc3RQc2V1ZG9DbGFzc1J1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKTsKKworICAgIGF1
dG8qIHBhcmVudCA9IG1fZWxlbWVudC5wYXJlbnROb2RlKCk7CisgICAgaWYgKHBhcmVudCAmJiBw
YXJlbnQtPnNoYWRvd1Jvb3QoKSkKKyAgICAgICAgbWF0Y2hTbG90dGVkUHNldWRvRWxlbWVudFJ1
bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKTsKICNlbmRpZgogCiAgICAgY2xlYXJNYXRjaGVkUnVsZXMo
KTsKQEAgLTI0MSw2ICsyNDYsNTkgQEAgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hI
b3N0UHNldQogICAgIC8vIEZJWE1FOiBNYXRjaCB0aGUgc3BlYyB3aGVuIGl0IGlzIGZpbmFsaXpl
ZC4KICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoKTsKIH0KKwordm9pZCBFbGVtZW50
UnVsZUNvbGxlY3Rvcjo6bWF0Y2hTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzKGJvb2wgaW5jbHVk
ZUVtcHR5UnVsZXMpCit7CisgICAgYXV0byogaG9zdFNoYWRvd1Jvb3QgPSBtX2VsZW1lbnQucGFy
ZW50Tm9kZSgpLT5zaGFkb3dSb290KCk7CisgICAgQVNTRVJUKGhvc3RTaGFkb3dSb290KTsKKyAg
ICBhdXRvKiBzbG90ID0gaG9zdFNoYWRvd1Jvb3QtPmZpbmRBc3NpZ25lZFNsb3QobV9lbGVtZW50
KTsKKyAgICBpZiAoIXNsb3QpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvKiBzaGFkb3dBdXRo
b3JTdHlsZSA9IGhvc3RTaGFkb3dSb290LT5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMoKS5hdXRo
b3JTdHlsZSgpOworICAgIGlmICghc2hhZG93QXV0aG9yU3R5bGUpCisgICAgICAgIHJldHVybjsK
KyAgICAvLyBGaW5kIG91dCBpZiB0aGVyZSBhcmUgYW55IDo6c2xvdHRlZCBydWxlcyBpbiB0aGUg
c2hhZG93IHRyZWUgbWF0Y2hpbmcgdGhlIGN1cnJlbnQgc2xvdC4KKyAgICAvLyBGSVhNRTogVGhp
cyBpcyByZWFsbHkgcGFydCBvZiB0aGUgc2xvdCBzdHlsZSBhbmQgY291bGQgYmUgY2FjaGVkIHdo
ZW4gcmVzb2x2aW5nIGl0LgorICAgIEVsZW1lbnRSdWxlQ29sbGVjdG9yIGNvbGxlY3Rvcigqc2xv
dCwgKnNoYWRvd0F1dGhvclN0eWxlLCBudWxscHRyKTsKKyAgICBhdXRvIHNsb3R0ZWRQc2V1ZG9F
bGVtZW50UnVsZXMgPSBjb2xsZWN0b3IuY29sbGVjdFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXNG
b3JTbG90KGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICBpZiAoc2xvdHRlZFBzZXVkb0VsZW1lbnRS
dWxlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFRlbXBvcmFyeUNoYW5nZTxi
b29sPiBjaGFuZ2UobV9pc01hdGNoaW5kU2xvdHRlZFBzZXVkb0VsZW1lbnQsIHRydWUpOworCisg
ICAgY2xlYXJNYXRjaGVkUnVsZXMoKTsKKyAgICBtX3Jlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1
bGUgPSBtX3Jlc3VsdC5tYXRjaGVkUHJvcGVydGllcygpLnNpemUoKSAtIDE7CisgICAgYXV0byBy
dWxlUmFuZ2UgPSBtX3Jlc3VsdC5yYW5nZXMuYXV0aG9yUnVsZVJhbmdlKCk7CisKKyAgICAvLyBN
YXRjaCBpbiB0aGUgY3VycmVudCBzY29wZS4KKyAgICBNYXRjaFJlcXVlc3QgbWF0Y2hSZXF1ZXN0
KG51bGxwdHIsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zv
ckxpc3QoJnNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMsIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdl
KTsKKworICAgIC8vIEZJWE1FOiBXaGF0IGlzIHRoZSBjb3JyZWN0IG9yZGVyPworICAgIHNvcnRB
bmRUcmFuc2Zlck1hdGNoZWRSdWxlcygpOworfQorCitSdWxlU2V0OjpSdWxlRGF0YVZlY3RvciBF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXNGb3JT
bG90KGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCit7CisgICAgQVNTRVJUKGlzPEhUTUxTbG90RWxl
bWVudD4obV9lbGVtZW50KSk7CisKKyAgICBjbGVhck1hdGNoZWRSdWxlcygpOworCisgICAgbV9t
b2RlID0gU2VsZWN0b3JDaGVja2VyOjpNb2RlOjpDb2xsZWN0aW5nUnVsZXM7CisKKyAgICAvLyBN
YXRjaCBnbG9iYWwgYXV0aG9yIHJ1bGVzLgorICAgIE1hdGNoUmVxdWVzdCBtYXRjaFJlcXVlc3Qo
Jm1fYXV0aG9yU3R5bGUsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICBTdHlsZVJlc29sdmVyOjpS
dWxlUmFuZ2UgcnVsZVJhbmdlID0gbV9yZXN1bHQucmFuZ2VzLmF1dGhvclJ1bGVSYW5nZSgpOwor
ICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCgmbV9hdXRob3JTdHlsZS5zbG90dGVkUHNl
dWRvRWxlbWVudFJ1bGVzKCksIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKKworICAgIGlmICht
X21hdGNoZWRSdWxlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBSdWxl
U2V0OjpSdWxlRGF0YVZlY3RvciBydWxlRGF0YVZlY3RvcjsKKyAgICBmb3IgKGF1dG8mIG1hdGNo
ZWRSdWxlIDogbV9tYXRjaGVkUnVsZXMpCisgICAgICAgIHJ1bGVEYXRhVmVjdG9yLmFwcGVuZCgq
bWF0Y2hlZFJ1bGUucnVsZURhdGEpOworICAgIHJldHVybiBydWxlRGF0YVZlY3RvcjsKK30KICNl
bmRpZgogCiB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFVzZXJSdWxlcyhib29sIGlu
Y2x1ZGVFbXB0eVJ1bGVzKQpAQCAtMjg0LDYgKzM0MiwyMCBAQCB2b2lkIEVsZW1lbnRSdWxlQ29s
bGVjdG9yOjptYXRjaFVBUnVsZXMoCiAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKCk7
CiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKK3N0YXRpYyBjb25zdCBDU1NTZWxlY3Rvciog
ZmluZFNsb3R0ZWRQc2V1ZG9FbGVtZW50U2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVj
dG9yKQoreworICAgIGZvciAoOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlz
dG9yeSgpKSB7CisgICAgICAgIGlmIChzZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6
UHNldWRvRWxlbWVudCAmJiBzZWxlY3Rvci0+cHNldWRvRWxlbWVudFR5cGUoKSA9PSBDU1NTZWxl
Y3Rvcjo6UHNldWRvRWxlbWVudFNsb3R0ZWQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBsaXN0
ID0gc2VsZWN0b3ItPnNlbGVjdG9yTGlzdCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBsaXN0
LT5maXJzdCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9OworICAgIHJl
dHVybiBudWxscHRyOworfQorI2VuZGlmCisKIGlubGluZSBib29sIEVsZW1lbnRSdWxlQ29sbGVj
dG9yOjpydWxlTWF0Y2hlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIHVuc2lnbmVkJiBzcGVj
aWZpY2l0eSkKIHsKICAgICAvLyBXZSBrbm93IGEgc3VmZmljaWVudGx5IHNpbXBsZSBzaW5nbGUg
cGFydCBzZWxlY3RvciBtYXRjaGVzIHNpbXBseSBiZWNhdXNlIHdlIGZvdW5kIGl0IGZyb20gdGhl
IHJ1bGUgaGFzaCB3aGVuIGZpbHRlcmluZyB0aGUgUnVsZVNldC4KQEAgLTM1Niw5ICs0MjgsMTgg
QEAgaW5saW5lIGJvb2wgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnJ1bGVNYQogICAgIH0gZWxzZQog
I2VuZGlmIC8vIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQogICAgIHsKKyAgICAgICAgYXV0byog
c2VsZWN0b3IgPSBydWxlRGF0YS5zZWxlY3RvcigpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQor
ICAgICAgICBpZiAobV9pc01hdGNoaW5kU2xvdHRlZFBzZXVkb0VsZW1lbnQpIHsKKyAgICAgICAg
ICAgIHNlbGVjdG9yID0gZmluZFNsb3R0ZWRQc2V1ZG9FbGVtZW50U2VsZWN0b3IocnVsZURhdGEu
c2VsZWN0b3IoKSk7CisgICAgICAgICAgICBpZiAoIXNlbGVjdG9yKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisjZW5kaWYKICAgICAgICAgLy8gU2xvdyBwYXRo
LgogICAgICAgICBTZWxlY3RvckNoZWNrZXIgc2VsZWN0b3JDaGVja2VyKG1fZWxlbWVudC5kb2N1
bWVudCgpKTsKLSAgICAgICAgc2VsZWN0b3JNYXRjaGVzID0gc2VsZWN0b3JDaGVja2VyLm1hdGNo
KCpydWxlRGF0YS5zZWxlY3RvcigpLCBtX2VsZW1lbnQsIGNvbnRleHQsIHNwZWNpZmljaXR5KTsK
KyAgICAgICAgc2VsZWN0b3JNYXRjaGVzID0gc2VsZWN0b3JDaGVja2VyLm1hdGNoKCpzZWxlY3Rv
ciwgbV9lbGVtZW50LCBjb250ZXh0LCBzcGVjaWZpY2l0eSk7CiAgICAgfQogCiAgICAgY29tbWl0
U3R5bGVSZWxhdGlvbnMoY29udGV4dC5zdHlsZVJlbGF0aW9ucyk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAkocmV2aXNpb24gMTk3MDI3KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTczLDYgKzczLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIG1hdGNoVUFSdWxlcyhSdWxlU2V0Kik7
CiAjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgdm9pZCBtYXRjaEhvc3RQc2V1ZG9DbGFzc1J1
bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOworICAgIHZvaWQgbWF0Y2hTbG90dGVkUHNldWRv
RWxlbWVudFJ1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOworICAgIFJ1bGVTZXQ6OlJ1bGVE
YXRhVmVjdG9yIGNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzRm9yU2xvdChib29sIGlu
Y2x1ZGVFbXB0eVJ1bGVzKTsKICNlbmRpZgogCiAgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxl
cyhjb25zdCBNYXRjaFJlcXVlc3QmLCBTdHlsZVJlc29sdmVyOjpSdWxlUmFuZ2UmKTsKQEAgLTk4
LDYgKzEwMCw5IEBAIHByaXZhdGU6CiAgICAgUHNldWRvU3R5bGVSZXF1ZXN0IG1fcHNldWRvU3R5
bGVSZXF1ZXN0IHsgTk9QU0VVRE8gfTsKICAgICBib29sIG1fc2FtZU9yaWdpbk9ubHkgeyBmYWxz
ZSB9OwogICAgIFNlbGVjdG9yQ2hlY2tlcjo6TW9kZSBtX21vZGUgeyBTZWxlY3RvckNoZWNrZXI6
Ok1vZGU6OlJlc29sdmluZ1N0eWxlIH07CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgYm9v
bCBtX2lzTWF0Y2hpbmRTbG90dGVkUHNldWRvRWxlbWVudCB7IGZhbHNlIH07CisjZW5kaWYKIAog
ICAgIFZlY3RvcjxNYXRjaGVkUnVsZSwgNjQ+IG1fbWF0Y2hlZFJ1bGVzOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL1J1bGVTZXQuY3BwCShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
UnVsZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Niw2ICsyNjYsMTIgQEAgdm9pZCBSdWxl
U2V0OjphZGRSdWxlKFN0eWxlUnVsZSogcnVsZSwgdQogICAgICAgICAgICAgbV9ob3N0UHNldWRv
Q2xhc3NSdWxlcy5hcHBlbmQocnVsZURhdGEpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CisgICAgICAgIGlmIChzZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRv
RWxlbWVudCAmJiBzZWxlY3Rvci0+cHNldWRvRWxlbWVudFR5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6
UHNldWRvRWxlbWVudFNsb3R0ZWQpIHsKKyAgICAgICAgICAgIC8vIDo6c2xvdHRlZCBwc2V1ZG8g
ZWxlbWVudHMgd29yayBhY2Nyb3NzIHNoYWRvdyBib3VuZGFyeSBtYWtpbmcgZmlsdGVyaW5nIGRp
ZmZpY3VsdC4KKyAgICAgICAgICAgIHJ1bGVEYXRhLmRpc2FibGVTZWxlY3RvckZpbHRlcmluZygp
OworICAgICAgICAgICAgbV9zbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzLmFwcGVuZChydWxlRGF0
YSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICBpZiAo
c2VsZWN0b3ItPnJlbGF0aW9uKCkgIT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yKQogICAgICAg
ICAgICAgYnJlYWs7CkBAIC00MjIsNiArNDI4LDEwIEBAIHZvaWQgUnVsZVNldDo6c2hyaW5rVG9G
aXQoKQogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBtX2N1ZVBzZXVkb1J1bGVzLnNocmlu
a1RvRml0KCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBtX2hvc3RQc2V1
ZG9DbGFzc1J1bGVzLnNocmlua1RvRml0KCk7CisgICAgbV9zbG90dGVkUHNldWRvRWxlbWVudFJ1
bGVzLnNocmlua1RvRml0KCk7CisjZW5kaWYKICAgICBtX2ZvY3VzUHNldWRvQ2xhc3NSdWxlcy5z
aHJpbmtUb0ZpdCgpOwogICAgIG1fdW5pdmVyc2FsUnVsZXMuc2hyaW5rVG9GaXQoKTsKICAgICBt
X3BhZ2VSdWxlcy5zaHJpbmtUb0ZpdCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1J1bGVT
ZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oCShyZXZpc2lv
biAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODQsNiArMTg0LDcgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgRU5BQkxFKFNIQURPV19E
T00pCiAgICAgY29uc3QgUnVsZURhdGFWZWN0b3ImIGhvc3RQc2V1ZG9DbGFzc1J1bGVzKCkgY29u
c3QgeyByZXR1cm4gbV9ob3N0UHNldWRvQ2xhc3NSdWxlczsgfQorICAgIGNvbnN0IFJ1bGVEYXRh
VmVjdG9yJiBzbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9zbG90
dGVkUHNldWRvRWxlbWVudFJ1bGVzOyB9CiAjZW5kaWYKICAgICBjb25zdCBSdWxlRGF0YVZlY3Rv
ciogZm9jdXNQc2V1ZG9DbGFzc1J1bGVzKCkgY29uc3QgeyByZXR1cm4gJm1fZm9jdXNQc2V1ZG9D
bGFzc1J1bGVzOyB9CiAgICAgY29uc3QgUnVsZURhdGFWZWN0b3IqIHVuaXZlcnNhbFJ1bGVzKCkg
Y29uc3QgeyByZXR1cm4gJm1fdW5pdmVyc2FsUnVsZXM7IH0KQEAgLTIxMCw2ICsyMTEsNyBAQCBw
cml2YXRlOgogI2VuZGlmCiAjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgUnVsZURhdGFWZWN0
b3IgbV9ob3N0UHNldWRvQ2xhc3NSdWxlczsKKyAgICBSdWxlRGF0YVZlY3RvciBtX3Nsb3R0ZWRQ
c2V1ZG9FbGVtZW50UnVsZXM7CiAjZW5kaWYKICAgICBSdWxlRGF0YVZlY3RvciBtX2ZvY3VzUHNl
dWRvQ2xhc3NSdWxlczsKICAgICBSdWxlRGF0YVZlY3RvciBtX3VuaXZlcnNhbFJ1bGVzOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAJKHJldmlzaW9uIDE5NzAyNykK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFByb2dyZXNzRWxlbWVudC5o
IgorI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQ
YWdlLmgiCkBAIC0xMDM4LDcgKzEwMzksMTMgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNr
T25lKENoZWNraW5nQwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogI2VuZGlmCi0gICAg
Ly8gIyMjIGFkZCB0aGUgcmVzdCBvZiB0aGUgY2hlY2tzLi4uCisjaWYgRU5BQkxFKFNIQURPV19E
T00pCisgICAgaWYgKHNlbGVjdG9yLm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1l
bnQgJiYgc2VsZWN0b3IucHNldWRvRWxlbWVudFR5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRv
RWxlbWVudFNsb3R0ZWQpIHsKKyAgICAgICAgLy8gV2Ugc2VlIDo6c2xvdHRlZCgpIHBzZXVkbyBl
bGVtZW50cyB3aGVuIGNvbGxlY3Rpbmcgc2xvdHRlZCBydWxlcyBmcm9tIHRoZSBzbG90IHNoYWRv
dyB0cmVlIG9ubHkuCisgICAgICAgIEFTU0VSVChjaGVja2luZ0NvbnRleHQucmVzb2x2aW5nTW9k
ZSA9PSBNb2RlOjpDb2xsZWN0aW5nUnVsZXMpOworICAgICAgICByZXR1cm4gaXM8SFRNTFNsb3RF
bGVtZW50PihlbGVtZW50KTsKKyAgICB9CisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAko
cmV2aXNpb24gMTk3MDI3KQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTaGFyaW5nUmVz
b2x2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw4IEBAIGNvbnN0IEVsZW1lbnQq
IFNoYXJpbmdSZXNvbHZlcjo6cmVzb2x2ZSgKICAgICBpZiAoIWVsZW1lbnQucGFyZW50RWxlbWVu
dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvJiBwYXJlbnRFbGVtZW50ID0g
KmVsZW1lbnQucGFyZW50RWxlbWVudCgpOworICAgIGlmIChwYXJlbnRFbGVtZW50LnNoYWRvd1Jv
b3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFwYXJlbnRFbGVtZW50LnJl
bmRlclN0eWxlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIElmIHRoZSBlbGVt
ZW50IGhhcyBpbmxpbmUgc3R5bGUgaXQgaXMgcHJvYmFibHkgdW5pcXVlLgpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMTk3MTYxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTYtMDItMjYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCA6OnNsb3R0ZWQgcHNldWRvIGVsZW1lbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTQ0MQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjI3MzE5ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93
LXNsb3R0ZWQtcnVsZS5odG1sOgorCisgICAgICAgICAgICBFbmFibGUgdGhlIHRlc3QsIGZpeCBp
dCBhbmQgdXBkYXRlIGl0IHRvIHRoZSBjdXJyZW50IHNwZWMuCisKKyAgICAgICAgKiBmYXN0L3No
YWRvdy1kb20vc2xvdHRlZC1wc2V1ZG8tZWxlbWVudC1jc3MtdGV4dC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9zbG90dGVkLXBzZXVkby1lbGVtZW50LWNz
cy10ZXh0Lmh0bWw6IEFkZGVkLgorCisgICAgICAgICAgICBBZGQgcGFyc2luZy9jc3NUZXh0IHRl
c3QgZnJvbSBibGluay4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
OgorCiAyMDE2LTAyLTI1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CiAKICAgICAgICAgRm9udCBzaXplIGNvbXB1dGVkIHN0eWxlIGlzIGlubmFjY3VyYXRlCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXNsb3R0ZWQt
cnVsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mt
c2NvcGluZy1zaGFkb3ctc2xvdHRlZC1ydWxlLmh0bWwJKHJldmlzaW9uIDE5NzAyNykKKysrIExh
eW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctc2xvdHRlZC1ydWxl
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxo
dG1sPgogPGhlYWQ+Ci0gICAgPHRpdGxlPkNTUyBTY29waW5nIC0gOnNsb3R0ZWQgcGVzdWRvIGVs
ZW1lbnQgbXVzdCBhbGxvdyBzZWxlY3RpbmcgZWxlbWVudHMgYXNzaWduZWQgdG8gYSBzbG90IGVs
ZW1lbnQ8L3RpdGxlPgorICAgIDx0aXRsZT5DU1MgU2NvcGluZyAtIDpzbG90dGVkIHBzZXVkbyBl
bGVtZW50IG11c3QgYWxsb3cgc2VsZWN0aW5nIGVsZW1lbnRzIGFzc2lnbmVkIHRvIGEgc2xvdCBl
bGVtZW50PC90aXRsZT4KICAgICA8bGluayByZWw9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3
YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciLz4KICAgICA8bGluayByZWw9ImhlbHAi
IGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI3NlbGVjdG9ycy1kYXRh
LW1vZGVsIj4KICAgICA8bGluayByZWw9Im1hdGNoIiBocmVmPSJyZWZlcmVuY2UvZ3JlZW4tYm94
Lmh0bWwiLz4KQEAgLTEyLDcgKzEyLDggQEAKICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwog
ICAgICAgICAgICAgd2lkdGg6IDEwMHB4OwogICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKLSAg
ICAgICAgICAgIGJhY2tncm91bmQ6IHJlZDsKKyAgICAgICAgICAgIGNvbG9yOiByZWQ7CisgICAg
ICAgICAgICBiYWNrZ3JvdW5kOiBncmVlbjsKICAgICAgICAgfQogICAgICAgICBteS1ob3N0ID4g
ZGl2LCBuZXN0ZWQtaG9zdCB7CiAgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKQEAgLTIzLDcg
KzI0LDcgQEAKICAgICA8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIDEwMHB4IGJ5
IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48L3A+IAogICAgIDxteS1ob3N0PgogICAgICAgICA8ZGl2
IGNsYXNzPSJncmVlbiI+RkFJTDE8L2Rpdj4KLSAgICAgICAgPGRpdj48c3Bhbj5GQUlMMjwvc3Bh
bj48L2Rpdj4KKyAgICAgICAgPG15ZWxlbT48c3Bhbj5GQUlMMjwvc3Bhbj48L215ZWxlbT4KICAg
ICAgICAgPG5lc3RlZC1ob3N0PgogICAgICAgICAgICAgPHNwYW4+RkFJTDM8L3NwYW4+CiAgICAg
ICAgIDwvbmVzdGVkLWhvc3Q+CkBAIC0zNiwxNSArMzcsMTUgQEAKICAgICAgICAgdHJ5IHsKICAg
ICAgICAgICAgIHZhciBzaGFkb3dIb3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbXktaG9z
dCcpOwogICAgICAgICAgICAgc2hhZG93Um9vdCA9IHNoYWRvd0hvc3QuYXR0YWNoU2hhZG93KHtt
b2RlOiAnb3Blbid9KTsKLSAgICAgICAgICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzbG90
Pjwvc2xvdD48c3R5bGU+IDo6c2xvdHRlZCA+IC5ncmVlbiwgOjpzbG90dGVkIHNwYW4geyBjb2xv
cjpncmVlbjsgfSA8L3N0eWxlPic7CisgICAgICAgICAgICBzaGFkb3dSb290LmlubmVySFRNTCA9
ICc8c2xvdD48L3Nsb3Q+PHN0eWxlPiA6OnNsb3R0ZWQoLmdyZWVuKSwgOjpzbG90dGVkKG15ZWxl
bSkgeyBjb2xvcjpncmVlbjsgfSA8L3N0eWxlPic7CiAKICAgICAgICAgICAgIHNoYWRvd0hvc3Qg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCduZXN0ZWQtaG9zdCcpOwogICAgICAgICAgICAgc2hh
ZG93Um9vdCA9IHNoYWRvd0hvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsKLSAgICAg
ICAgICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzbG90Pjwvc2xvdD4nOworICAgICAgICAg
ICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPHN0eWxlPiAubXlkaXYgOjpzbG90dGVkKCopIHsg
Y29sb3I6Z3JlZW47IH0gPC9zdHlsZT48ZGl2IGNsYXNzPW15ZGl2PjxzbG90Pjwvc2xvdD48L2Rp
dj4nOwogCiAgICAgICAgICAgICBzaGFkb3dIb3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcign
YW5vdGhlci1ob3N0Jyk7CiAgICAgICAgICAgICBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRh
Y2hTaGFkb3coe21vZGU6ICdvcGVuJ30pOwotICAgICAgICAgICAgc2hhZG93Um9vdC5pbm5lckhU
TUwgPSAnPHN0eWxlPiA6OnNsb3R0ZWQgeyBjb2xvcjpncmVlbjsgfSA8L3N0eWxlPjxzbG90Pjwv
c2xvdD4nOworICAgICAgICAgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPHN0eWxlPiA6OnNs
b3R0ZWQoKikgeyBjb2xvcjpncmVlbjsgfSA8L3N0eWxlPjxzbG90Pjwvc2xvdD4nOwogICAgICAg
ICB9IGNhdGNoIChleGNlcHRpb24pIHsKICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZXhjZXB0aW9uKSk7CiAgICAgICAgIH0KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zbG90dGVkLXBzZXVkby1lbGVtZW50LWNz
cy10ZXh0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRv
dy1kb20vc2xvdHRlZC1wc2V1ZG8tZWxlbWVudC1jc3MtdGV4dC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc2xvdHRlZC1wc2V1ZG8tZWxl
bWVudC1jc3MtdGV4dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzIEBA
CisKK1BBU1MgVGVzdCBmb3IgY3NzVGV4dCBvZiAnOjpzbG90dGVkJyBydWxlLiAKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3Nsb3R0ZWQtcHNldWRvLWVsZW1lbnQtY3NzLXRl
eHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc2xvdHRl
ZC1wc2V1ZG8tZWxlbWVudC1jc3MtdGV4dC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9zaGFkb3ctZG9tL3Nsb3R0ZWQtcHNldWRvLWVsZW1lbnQtY3NzLXRleHQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQg
c3JjPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyc+PC9zY3JpcHQ+Cis8c3R5
bGUgaWQ9InN0eWxlMSI+Cis6OnNsb3R0ZWQgeyBkaXNwbGF5OiBibG9jazsgfSAvKiBpbnZhbGlk
IC0gbm8gcGFyYW1ldGVyICovCis6OnNsb3R0ZWQoKSB7IGRpc3BsYXk6IGJsb2NrOyB9IC8qIGlu
dmFsaWQgLSBlbXB0eSBwYXJhbWV0ZXIgKi8KKzo6c2xvdHRlZCgqKSB7IGRpc3BsYXk6IGJsb2Nr
OyB9CisqOjpzbG90dGVkKCopIHsgZGlzcGxheTogYmxvY2s7IH0KKzo6c2xvdHRlZChkaXYpIHsg
ZGlzcGxheTogYmxvY2s7IH0gLyogZXhwZWN0cyB1bml2ZXJzYWwgc2VsZWN0b3IgKCopIG9uIHRo
ZSBsZWZ0IGluIGNzc1RleHQgKi8KKzo6c2xvdHRlZCggZGl2KSB7IGRpc3BsYXk6IGJsb2NrOyB9
IC8qIGFsbG93IGEgc3BhY2Ugb24gbGVmdCAqLworOjpzbG90dGVkKGRpdiApIHsgZGlzcGxheTog
YmxvY2s7IH0gLyogYWxsb3cgYSBzcGFjZSBvbiByaWdodCAqLworOjpzbG90dGVkKGRpdjo6YmVm
b3JlKSB7IGRpc3BsYXk6IGJsb2NrOyB9IC8qIGhhdmluZyBhIHBzZXVkbyBlbGVtZW50IGluICgp
IGlzIGludmFsaWQgKi8KKworLmZvbzo6c2xvdHRlZChkaXYpIHsgY29sb3I6IGJsdWU7IH0KKyNp
ZDo6c2xvdHRlZCgqKSB7IGNvbG9yOiBibHVlOyB9CitbYXR0cj1mb29dOjpzbG90dGVkKCopIHsg
Y29sb3I6IGJsdWU7IH0KKy5mb28gLmJhcjo6c2xvdHRlZChkaXYpIHsgY29sb3I6IGJsdWU7IH0K
Ky8qIEZJWE1FOiBXZSBkb24ndCBtYWtlIHRoZXNlIGludmFsaWQgaW4gdGhlIHBhcnNlciAqLwor
LyogLmZvbzo6YmVmb3JlIC5iYXI6OnNsb3R0ZWQoZGl2KSB7IGNvbG9yOiBibHVlOyB9ICovIC8q
IGludmFsaWQsIG9ubHkgb25lIHBzZXVkbyBlbGVtZW50IGlzIGFsbG93ZWQgYXQgdGhlIHJpZ2h0
bW9zdCBjb21wb3VuZCAqLworLyogLmZvbzo6c2xvdHRlZChkaXYpIC5iYXIgeyBjb2xvcjogYmx1
ZTsgfSAqLyAvKiBpbnZhbGlkLCBzYW1lIGFzIGFib3ZlICovCis6OnNsb3R0ZWQoZGl2LCBkaXYp
IHsgY29sb3I6IGJsdWU7IH0gLyogaW52YWxpZCAtIHNlbGVjdG9yIGxpc3QgKi8KKzo6c2xvdHRl
ZChkaXYgZGl2KSB7IGNvbG9yOiBibHVlOyB9IC8qIGludmFsaWQgLSBjb21wbGV4IHNlbGVjdG9y
IChjb21iaW5hdG9yIGlzIHVzZWQpICovCisKK3Nsb3Q6OnNsb3R0ZWQoLmdyZWVuKSB7IGNvbG9y
OiBncmVlbjsgfQorc2xvdDo6c2xvdHRlZCgjZ3JlZW4pIHsgY29sb3I6IGdyZWVuOyB9CitzbG90
OjpzbG90dGVkKFtncmVlbj1ncmVlbl0pIHsgY29sb3I6IGdyZWVuOyB9CitzbG90OjpzbG90dGVk
KGRpdi5ncmVlbikgeyBjb2xvcjogZ3JlZW47IH0KKworZGl2IDo6c2xvdHRlZChkaXYpIHsgY29s
b3I6IHJlZDsgfQorZGl2ICsgc2xvdDo6c2xvdHRlZChkaXYpIHsgY29sb3I6IHJlZDsgfQorCitz
cGFuOjpzbG90dGVkKCopIHsgY29sb3I6IHJlZDsgfSAvKiBuZXZlciBtYXRjaGVzLCBidXQgdmFs
aWQgYXMgYSBzZWxlY3RvciAqLworLyogOjpzbG90dGVkKHNwYW4pOjpzbG90dGVkKHNwYW4pIHsg
Y29sb3I6IHJlZDsgfSAqLyAvKiBpbnZhbGlkICovCis6OnNsb3R0ZWQoOjpzbG90dGVkKGRpdikp
IHsgY29sb3I6IHJlZDsgfSAvKiBpbnZhbGlkICovCis8L3N0eWxlPgorPHNjcmlwdD4KKyd1c2Ug
c3RyaWN0JzsKK3Rlc3QoKCkgPT4geworICB2YXIgc3R5bGUxID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3N0eWxlMScpOworICB2YXIgY3NzUnVsZXMgPSBzdHlsZTEuc2hlZXQuY3NzUnVsZXM7
CisKKyAgdmFyIGV4cGVjdGVkQ1NTVGV4dHMgPSBbCisgICAgIjo6c2xvdHRlZCgqKSB7IGRpc3Bs
YXk6IGJsb2NrOyB9IiwKKy8qIEZJWE1FOiAnKicgZG9lc24ndCByb3VuZHRyaXAgKi8KKy8qICIq
OjpzbG90dGVkKCopIHsgZGlzcGxheTogYmxvY2s7IH0iLCAqLworICAgICI6OnNsb3R0ZWQoKikg
eyBkaXNwbGF5OiBibG9jazsgfSIsCisgICAgIjo6c2xvdHRlZChkaXYpIHsgZGlzcGxheTogYmxv
Y2s7IH0iLAorICAgICI6OnNsb3R0ZWQoZGl2KSB7IGRpc3BsYXk6IGJsb2NrOyB9IiwKKyAgICAi
OjpzbG90dGVkKGRpdikgeyBkaXNwbGF5OiBibG9jazsgfSIsCisgICAgIi5mb286OnNsb3R0ZWQo
ZGl2KSB7IGNvbG9yOiBibHVlOyB9IiwKKyAgICAiI2lkOjpzbG90dGVkKCopIHsgY29sb3I6IGJs
dWU7IH0iLAorICAgICJbYXR0cj1cImZvb1wiXTo6c2xvdHRlZCgqKSB7IGNvbG9yOiBibHVlOyB9
IiwKKyAgICAiLmZvbyAuYmFyOjpzbG90dGVkKGRpdikgeyBjb2xvcjogYmx1ZTsgfSIsCisgICAg
InNsb3Q6OnNsb3R0ZWQoLmdyZWVuKSB7IGNvbG9yOiBncmVlbjsgfSIsCisgICAgInNsb3Q6OnNs
b3R0ZWQoI2dyZWVuKSB7IGNvbG9yOiBncmVlbjsgfSIsCisgICAgInNsb3Q6OnNsb3R0ZWQoW2dy
ZWVuPVwiZ3JlZW5cIl0pIHsgY29sb3I6IGdyZWVuOyB9IiwKKyAgICAic2xvdDo6c2xvdHRlZChk
aXYuZ3JlZW4pIHsgY29sb3I6IGdyZWVuOyB9IiwKKyAgICAiZGl2IDo6c2xvdHRlZChkaXYpIHsg
Y29sb3I6IHJlZDsgfSIsCisgICAgImRpdiArIHNsb3Q6OnNsb3R0ZWQoZGl2KSB7IGNvbG9yOiBy
ZWQ7IH0iLAorICAgICJzcGFuOjpzbG90dGVkKCopIHsgY29sb3I6IHJlZDsgfSIKKyAgXTsKKwor
ICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkQ1NTVGV4dHMubGVuZ3RoOyArK2kpCisgICAg
YXNzZXJ0X2VxdWFscyhjc3NSdWxlcy5pdGVtKGkpLmNzc1RleHQsIGV4cGVjdGVkQ1NTVGV4dHNb
aV0pOworICBhc3NlcnRfZXF1YWxzKGNzc1J1bGVzLmxlbmd0aCwgZXhwZWN0ZWRDU1NUZXh0cy5s
ZW5ndGgpOworCit9LCAiVGVzdCBmb3IgY3NzVGV4dCBvZiAnOjpzbG90dGVkJyBydWxlLiIpOwor
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cwkocmV2aXNpb24gMTk3MDI3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBl
Y3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTEyNTAsNyArMTI1MCw2IEBAIHdlYmtpdC5vcmcv
Yi8xNDkxMjggZmFzdC90ZXh0L2NvbnRyb2wtY2gKIAogd2Via2l0Lm9yZy9iLzE0ODY5NSBmYXN0
L3NoYWRvdy1kb20gWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8xNDk0NDAgZmFzdC9zaGFkb3ctZG9t
L2Nzcy1zY29waW5nLXNoYWRvdy1ob3N0LWZ1bmN0aW9uYWwtcnVsZS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTQ5NDQxIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGlu
Zy1zaGFkb3ctc2xvdHRlZC1ydWxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8xNDk0NDEgZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1zbG90LWRpc3Bs
YXktb3ZlcnJpZGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAjIFRvdWNoIGV2ZW50cyBp
cyBub3QgZW5hYmxlZCBvbiBNYWMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272318</attachid>
            <date>2016-02-26 02:57:44 -0800</date>
            <delta_ts>2016-02-26 03:11:34 -0800</delta_ts>
            <desc>patch</desc>
            <filename>slotted-8.patch</filename>
            <type>text/plain</type>
            <size>28822</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzEyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDE2LTAyLTI1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgOjpzbG90dGVk
IHBzZXVkbyBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDk0NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNzMxOTg3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIGxhdGVz
dCBpbiBodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYmNvbXBvbmVudHMvaXNzdWVzLzMzMQorCisg
ICAgICAgICogY3NzL0NTU0dyYW1tYXIueS5pbjoKKworICAgICAgICAgICAgUGFyc2UgOjpzbG90
dGVkLgorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OmRldGVjdEZ1bmN0aW9uVHlwZVRva2VuKToKKyAgICAgICAgKiBjc3MvQ1NTUGFy
c2VyVmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpwYXJz
ZVBzZXVkb0VsZW1lbnRDdWVGdW5jdGlvblNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRTbG90dGVkRnVuY3Rpb25TZWxlY3Rv
cik6CisKKyAgICAgICAgICAgIFRva2VuaXplIDo6c2xvdHRlZC4KKworICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxl
bWVudFNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyVmFsdWVzLmg6CisgICAgICAg
ICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpw
c2V1ZG9JZCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAgICogY3NzL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29s
bGVjdG9yOjptYXRjaEF1dGhvclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxl
Q29sbGVjdG9yOjptYXRjaEhvc3RQc2V1ZG9DbGFzc1J1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMpOgor
CisgICAgICAgICAgICBNYXRjaCA6OnNsb3R0ZWQgc2VsZWN0b3IuCisKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxl
c0ZvclNsb3QpOgorCisgICAgICAgICAgICBDb2xsZWN0IDo6c2xvdHRlZCBydWxlcyB0aGF0IG1h
eSBhcHBseSB0byBhbiBlbGVtZW50IGluIGEgc2xvdC4KKworICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoVXNlclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFVBUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Zmlu
ZFNsb3R0ZWRQc2V1ZG9FbGVtZW50U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFJ1bGVDb2xsZWN0b3I6OnJ1bGVNYXRjaGVzKToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVD
b2xsZWN0b3IuaDoKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSdWxlU2V0OjphZGRSdWxlKToKKworICAgICAgICAgICAgQ29sbGVjdCA6OnNsb3R0ZWQgcnVs
ZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OnNocmlua1RvRml0KToKKyAgICAgICAg
KiBjc3MvUnVsZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6aG9zdFBzZXVkb0Ns
YXNzUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6c2xvdHRlZFBzZXVkb0VsZW1l
bnRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0Ojpmb2N1c1BzZXVkb0NsYXNzUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6dW5pdmVyc2FsUnVsZXMpOgorICAgICAg
ICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNoYXJpbmdSZXNvbHZlcjo6cmVzb2x2ZSk6
CisKKyAgICAgICAgICAgIERpc2FibGUgc3R5bGUgc2hhcmluZyBmb3IgY2hpbGRyZW4gb2Ygc2hh
ZG93IGhvc3QuIFRoZXkgbWF5IGJlIGFmZmVjdGVkIGJ5IHRoZSBzaGFkb3cgdHJlZSBzdHlsZQor
ICAgICAgICAgICAgd2hpY2ggaXMgbm90IGNvbnNpZGVyZWQgaW4gc3R5bGUgc2hhcmluZyBjaGVj
a3MuCisKIDIwMTYtMDItMjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTk2MjY4KTogTWFueSBhc3NlcnRpb24gZmFp
bHVyZXMgYW5kIGNyYXNoZXMgb24gU1ZHIHBhdGggYW5pbWF0aW9uIHRlc3RzIHdoZW4gSlMgZ2Fy
YmFnZSBjb2xsZWN0aW9uIGhhcHBlbnMgcXVpY2tseQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55LmluCShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55LmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsNiArMzY1LDEyIEBAIHN0YXRpYyBib29s
IHNlbGVjdG9yTGlzdERvZXNOb3RNYXRjaEFueVAKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEVfU0hB
RE9XX0RPTQorCisldG9rZW4gPHN0cmluZz4gU0xPVFRFREZVTkNUSU9OCisKKyNlbmRpZgorCiAl
JQogCiBzdHlsZXNoZWV0OgpAQCAtMTM1Nyw2ICsxMzYzLDExIEBAIHBzZXVkbzoKICAgICAgICAg
JCQgPSBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50Q3VlRnVuY3Rpb25TZWxl
Y3RvcigkMywgJDUpOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRV9TSEFET1dfRE9NCisgICAg
fCAnOicgJzonIFNMT1RURURGVU5DVElPTiBtYXliZV9zcGFjZSBjb21wb3VuZF9zZWxlY3RvciBt
YXliZV9zcGFjZSAnKScgeworICAgICAgICAkJCA9IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBz
ZXVkb0VsZW1lbnRTbG90dGVkRnVuY3Rpb25TZWxlY3RvcigkMywgJDUpOworICAgIH0KKyNlbmRp
ZgogICAgIC8vIHVzZSBieSA6LXdlYmtpdC1hbnkuCiAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBz
dXBwb3J0IGdlbmVyaWMgc2VsZWN0b3JzIGhlcmUgb3IganVzdCBzaW1wbGVfc2VsZWN0b3JzPwog
ICAgIC8vIFVzZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBmb3Igbm93IHRvIG1hdGNoIC1tb3otYW55
LgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDE5NzAyNykKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTg5NCw2
ICsxMTg5NCwxMiBAQCBpbmxpbmUgYm9vbCBDU1NQYXJzZXI6OmRldGVjdEZ1bmN0aW9uVHlwCiAg
ICAgICAgICAgICBtX3Rva2VuID0gTUFUQ0hFU0ZVTkNUSU9OOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgaWYgKGlz
RXF1YWxUb0NTU0lkZW50aWZpZXIobmFtZSwgInNsb3R0ZWQiKSkgeworICAgICAgICAgICAgbV90
b2tlbiA9IFNMT1RURURGVU5DVElPTjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisjZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2FzZSA5OgpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAJKHJldmlzaW9uIDE5NzAyNykKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzEsNiArMjMxLDMyIEBAIENTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXJTZWxlY3Rvcjo6
cGEKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCitDU1NQYXJzZXJTZWxlY3Rv
ciogQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvRWxlbWVudFNsb3R0ZWRGdW5jdGlvblNl
bGVjdG9yKGNvbnN0IENTU1BhcnNlclN0cmluZyYgZnVuY3Rpb25JZGVudGlmaWVyLCBDU1NQYXJz
ZXJTZWxlY3RvciogcGFyc2VkU2VsZWN0b3IpCit7CisgICAgQVNTRVJUX1VOVVNFRChmdW5jdGlv
bklkZW50aWZpZXIsIFN0cmluZyhmdW5jdGlvbklkZW50aWZpZXIpID09ICJzbG90dGVkKCIpOwor
CisgICAgaWYgKCFwYXJzZWRTZWxlY3RvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IG93bmVkUGFyc2VkU2VsZWN0b3Io
cGFyc2VkU2VsZWN0b3IpOworCisgICAgZm9yIChhdXRvKiBjb21wb25lbnQgPSBwYXJzZWRTZWxl
Y3RvcjsgY29tcG9uZW50OyBjb21wb25lbnQgPSBjb21wb25lbnQtPnRhZ0hpc3RvcnkoKSkgewor
ICAgICAgICBpZiAoY29tcG9uZW50LT5tYXRjaGVzUHNldWRvRWxlbWVudCgpKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byBzZWxlY3RvclZlY3RvciA9IHN0
ZDo6bWFrZV91bmlxdWU8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+
PigpOworICAgIHNlbGVjdG9yVmVjdG9yLT5hcHBlbmQoV1RGTW92ZShvd25lZFBhcnNlZFNlbGVj
dG9yKSk7CisKKyAgICBhdXRvIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJT
ZWxlY3Rvcj4oKTsKKyAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0
b3I6OlBzZXVkb0VsZW1lbnQpOworICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRQc2V1ZG9F
bGVtZW50VHlwZShDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFNsb3R0ZWQpOworICAgIHNlbGVj
dG9yLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpzZWxlY3RvclZlY3Rvcik7CisgICAgcmV0dXJuIHNl
bGVjdG9yLnJlbGVhc2UoKTsKK30KKyNlbmRpZgorCiBDU1NQYXJzZXJTZWxlY3RvciogQ1NTUGFy
c2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudFNlbGVj
dG9yKENTU1BhcnNlclN0cmluZyYgcHNldWRvVHlwZVN0cmluZykKIHsKICAgICBpZiAocHNldWRv
VHlwZVN0cmluZy5sZW5ndGgoKSAmJiBwc2V1ZG9UeXBlU3RyaW5nW3BzZXVkb1R5cGVTdHJpbmcu
bGVuZ3RoKCkgLSAxXSA9PSAnKCcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVl
cy5oCShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFs
dWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw3ICsyMDMsMTAgQEAgY2xhc3MgQ1NTUGFyc2Vy
U2VsZWN0b3IgewogcHVibGljOgogICAgIHN0YXRpYyBDU1NQYXJzZXJTZWxlY3RvciogcGFyc2VQ
YWdlUHNldWRvU2VsZWN0b3IoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiBwc2V1ZG9UeXBlU3RyaW5n
KTsKICAgICBzdGF0aWMgQ1NTUGFyc2VyU2VsZWN0b3IqIHBhcnNlUHNldWRvRWxlbWVudFNlbGVj
dG9yKENTU1BhcnNlclN0cmluZyYgcHNldWRvVHlwZVN0cmluZyk7Ci0gICAgc3RhdGljIENTU1Bh
cnNlclNlbGVjdG9yKiBwYXJzZVBzZXVkb0VsZW1lbnRDdWVGdW5jdGlvblNlbGVjdG9yKGNvbnN0
IENTU1BhcnNlclN0cmluZyYgZnVuY3Rpb25JZGVudGlmaWVyLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPENTU1BhcnNlclNlbGVjdG9yPj4qIHNlbGVjdG9yVmVjdG9yKTsKKyAgICBzdGF0aWMgQ1NT
UGFyc2VyU2VsZWN0b3IqIHBhcnNlUHNldWRvRWxlbWVudEN1ZUZ1bmN0aW9uU2VsZWN0b3IoY29u
c3QgQ1NTUGFyc2VyU3RyaW5nJiBmdW5jdGlvbklkZW50aWZpZXIsIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+PiopOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAg
IHN0YXRpYyBDU1NQYXJzZXJTZWxlY3RvciogcGFyc2VQc2V1ZG9FbGVtZW50U2xvdHRlZEZ1bmN0
aW9uU2VsZWN0b3IoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiBmdW5jdGlvbklkZW50aWZpZXIsIENT
U1BhcnNlclNlbGVjdG9yKik7CisjZW5kaWYKICAgICBzdGF0aWMgQ1NTUGFyc2VyU2VsZWN0b3Iq
IHBhcnNlUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudFNlbGVjdG9yKENTU1BhcnNl
clN0cmluZyYgcHNldWRvVHlwZVN0cmluZyk7CiAKICAgICBDU1NQYXJzZXJTZWxlY3RvcigpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAxOTcwMjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTks
NiArMjk5LDkgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVkb0VsZQogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRDdWU6CiAjZW5kaWYK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBjYXNlIFBzZXVkb0VsZW1lbnRTbG90dGVkOgor
I2VuZGlmCiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50VW5rbm93bjoKICAgICBjYXNlIFBzZXVkb0Vs
ZW1lbnRVc2VyQWdlbnRDdXN0b206CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50V2ViS2l0Q3VzdG9t
OgpAQCAtNjQ0LDggKzY0NywxOCBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dChj
b25zdCBTCiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSBpZiAoY3MtPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVk
b0VsZW1lbnQpIHsKLSAgICAgICAgICAgIHN0ci5hcHBlbmRMaXRlcmFsKCI6OiIpOwotICAgICAg
ICAgICAgc3RyLmFwcGVuZChjcy0+dmFsdWUoKSk7CisgICAgICAgICAgICBzd2l0Y2ggKGNzLT5w
c2V1ZG9FbGVtZW50VHlwZSgpKSB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50U2xvdHRlZDoKKyAgICAgICAgICAgICAg
ICBzdHIuYXBwZW5kTGl0ZXJhbCgiOjpzbG90dGVkKCIpOworICAgICAgICAgICAgICAgIGNzLT5z
ZWxlY3Rvckxpc3QoKS0+YnVpbGRTZWxlY3RvcnNUZXh0KHN0cik7CisgICAgICAgICAgICAgICAg
c3RyLmFwcGVuZCgnKScpOworICAgICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHN0ci5hcHBlbmRMaXRlcmFsKCI6OiIpOwor
ICAgICAgICAgICAgICAgIHN0ci5hcHBlbmQoY3MtPnZhbHVlKCkpOworICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKGNzLT5pc0F0dHJpYnV0ZVNlbGVjdG9yKCkpIHsKICAgICAgICAg
ICAgIHN0ci5hcHBlbmQoJ1snKTsKICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHJl
Zml4ID0gY3MtPmF0dHJpYnV0ZSgpLnByZWZpeCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmgJKHJldmlzaW9uIDE5NzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNiArMTgxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgUHNldWRvRWxlbWVudFNjcm9sbGJhclRyYWNrLAogICAgICAgICAgICAg
UHNldWRvRWxlbWVudFNjcm9sbGJhclRyYWNrUGllY2UsCiAgICAgICAgICAgICBQc2V1ZG9FbGVt
ZW50U2VsZWN0aW9uLAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICAgICAgUHNldWRv
RWxlbWVudFNsb3R0ZWQsCisjZW5kaWYKICAgICAgICAgICAgIFBzZXVkb0VsZW1lbnRVc2VyQWdl
bnRDdXN0b20sCiAgICAgICAgICAgICBQc2V1ZG9FbGVtZW50V2ViS2l0Q3VzdG9tLAogICAgICAg
ICB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3Bw
CShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xs
ZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ1NT
U2VsZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUg
IkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCkBAIC0yMDYsNiArMjA3LDEwIEBAIHZvaWQgRWxl
bWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQXV0aG9yUnUKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
ICAgICBpZiAobV9lbGVtZW50LnNoYWRvd1Jvb3QoKSkKICAgICAgICAgbWF0Y2hIb3N0UHNldWRv
Q2xhc3NSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcyk7CisKKyAgICBhdXRvKiBwYXJlbnQgPSBtX2Vs
ZW1lbnQucGFyZW50Tm9kZSgpOworICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5zaGFkb3dSb290
KCkpCisgICAgICAgIG1hdGNoU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyhpbmNsdWRlRW1wdHlS
dWxlcyk7CiAjZW5kaWYKIAogICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7CkBAIC0yNDEsNiArMjQ2
LDYyIEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoSG9zdFBzZXUKICAgICAvLyBG
SVhNRTogTWF0Y2ggdGhlIHNwZWMgd2hlbiBpdCBpcyBmaW5hbGl6ZWQuCiAgICAgc29ydEFuZFRy
YW5zZmVyTWF0Y2hlZFJ1bGVzKCk7CiB9CisKK3ZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1h
dGNoU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQorewor
ICAgIGF1dG8qIGhvc3RTaGFkb3dSb290ID0gbV9lbGVtZW50LnBhcmVudE5vZGUoKS0+c2hhZG93
Um9vdCgpOworICAgIEFTU0VSVChob3N0U2hhZG93Um9vdCk7CisgICAgYXV0byogc2xvdCA9IGhv
c3RTaGFkb3dSb290LT5maW5kQXNzaWduZWRTbG90KG1fZWxlbWVudCk7CisgICAgaWYgKCFzbG90
KQorICAgICAgICByZXR1cm47CisgICAgYXV0byogc2hhZG93QXV0aG9yU3R5bGUgPSBob3N0U2hh
ZG93Um9vdC0+c3R5bGVSZXNvbHZlcigpLnJ1bGVTZXRzKCkuYXV0aG9yU3R5bGUoKTsKKyAgICBp
ZiAoIXNoYWRvd0F1dGhvclN0eWxlKQorICAgICAgICByZXR1cm47CisgICAgLy8gRmluZCBvdXQg
aWYgdGhlcmUgYXJlIGFueSA6OnNsb3R0ZWQgcnVsZXMgaW4gdGhlIHNoYWRvdyB0cmVlIG1hdGNo
aW5nIHRoZSBjdXJyZW50IHNsb3QuCisgICAgLy8gRklYTUU6IFRoaXMgaXMgcmVhbGx5IHBhcnQg
b2YgdGhlIHNsb3Qgc3R5bGUgYW5kIGNvdWxkIGJlIGNhY2hlZCB3aGVuIHJlc29sdmluZyBpdC4K
KyAgICBFbGVtZW50UnVsZUNvbGxlY3RvciBjb2xsZWN0b3IoKnNsb3QsICpzaGFkb3dBdXRob3JT
dHlsZSwgbnVsbHB0cik7CisgICAgYXV0byBzbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzID0gY29s
bGVjdG9yLmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzRm9yU2xvdChpbmNsdWRlRW1w
dHlSdWxlcyk7CisgICAgaWYgKHNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm47CisKKworICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7CisgICAgbV9yZXN1
bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlID0gbV9yZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMoKS5z
aXplKCkgLSAxOworCisgICAgeworICAgICAgICAvLyBNYXRjaCBpbiB0aGUgY3VycmVudCBzY29w
ZS4KKyAgICAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGNoYW5nZShtX2lzTWF0Y2hpbmdTbG90
dGVkUHNldWRvRWxlbWVudCwgdHJ1ZSk7CisKKyAgICAgICAgTWF0Y2hSZXF1ZXN0IG1hdGNoUmVx
dWVzdChudWxscHRyLCBpbmNsdWRlRW1wdHlSdWxlcyk7CisgICAgICAgIGF1dG8gcnVsZVJhbmdl
ID0gbV9yZXN1bHQucmFuZ2VzLmF1dGhvclJ1bGVSYW5nZSgpOworICAgICAgICBjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QoJnNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMsIG1hdGNoUmVxdWVz
dCwgcnVsZVJhbmdlKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogV2hhdCBpcyB0aGUgY29ycmVj
dCBvcmRlcj8KKyAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoKTsKK30KKworUnVsZVNl
dDo6UnVsZURhdGFWZWN0b3IgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNl
dWRvRWxlbWVudFJ1bGVzRm9yU2xvdChib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQoreworICAgIEFT
U0VSVChpczxIVE1MU2xvdEVsZW1lbnQ+KG1fZWxlbWVudCkpOworCisgICAgY2xlYXJNYXRjaGVk
UnVsZXMoKTsKKworICAgIG1fbW9kZSA9IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6Q29sbGVjdGlu
Z1J1bGVzOworCisgICAgLy8gTWF0Y2ggZ2xvYmFsIGF1dGhvciBydWxlcy4KKyAgICBNYXRjaFJl
cXVlc3QgbWF0Y2hSZXF1ZXN0KCZtX2F1dGhvclN0eWxlLCBpbmNsdWRlRW1wdHlSdWxlcyk7Cisg
ICAgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlIHJ1bGVSYW5nZSA9IG1fcmVzdWx0LnJhbmdlcy5h
dXRob3JSdWxlUmFuZ2UoKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoJm1fYXV0
aG9yU3R5bGUuc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcygpLCBtYXRjaFJlcXVlc3QsIHJ1bGVS
YW5nZSk7CisKKyAgICBpZiAobV9tYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgUnVsZVNldDo6UnVsZURhdGFWZWN0b3IgcnVsZURhdGFWZWN0b3I7Cisg
ICAgZm9yIChhdXRvJiBtYXRjaGVkUnVsZSA6IG1fbWF0Y2hlZFJ1bGVzKQorICAgICAgICBydWxl
RGF0YVZlY3Rvci5hcHBlbmQoKm1hdGNoZWRSdWxlLnJ1bGVEYXRhKTsKKyAgICByZXR1cm4gcnVs
ZURhdGFWZWN0b3I7Cit9CiAjZW5kaWYKIAogdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0
Y2hVc2VyUnVsZXMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKQEAgLTI4NCw2ICszNDUsMjAgQEAg
dm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1bGVzKAogICAgIHNvcnRBbmRUcmFu
c2Zlck1hdGNoZWRSdWxlcygpOwogfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCitzdGF0aWMg
Y29uc3QgQ1NTU2VsZWN0b3IqIGZpbmRTbG90dGVkUHNldWRvRWxlbWVudFNlbGVjdG9yKGNvbnN0
IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKK3sKKyAgICBmb3IgKDsgc2VsZWN0b3I7IHNlbGVjdG9y
ID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkgeworICAgICAgICBpZiAoc2VsZWN0b3ItPm1hdGNo
KCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQgJiYgc2VsZWN0b3ItPnBzZXVkb0VsZW1l
bnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRTbG90dGVkKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byogbGlzdCA9IHNlbGVjdG9yLT5zZWxlY3Rvckxpc3QoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbGlzdC0+Zmlyc3QoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCiBpbmxpbmUgYm9v
bCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVE
YXRhLCB1bnNpZ25lZCYgc3BlY2lmaWNpdHkpCiB7CiAgICAgLy8gV2Uga25vdyBhIHN1ZmZpY2ll
bnRseSBzaW1wbGUgc2luZ2xlIHBhcnQgc2VsZWN0b3IgbWF0Y2hlcyBzaW1wbHkgYmVjYXVzZSB3
ZSBmb3VuZCBpdCBmcm9tIHRoZSBydWxlIGhhc2ggd2hlbiBmaWx0ZXJpbmcgdGhlIFJ1bGVTZXQu
CkBAIC0zNTYsOSArNDMxLDE4IEBAIGlubGluZSBib29sIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpy
dWxlTWEKICAgICB9IGVsc2UKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKICAg
ICB7CisgICAgICAgIGF1dG8qIHNlbGVjdG9yID0gcnVsZURhdGEuc2VsZWN0b3IoKTsKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgaWYgKG1faXNNYXRjaGluZ1Nsb3R0ZWRQc2V1ZG9F
bGVtZW50KSB7CisgICAgICAgICAgICBzZWxlY3RvciA9IGZpbmRTbG90dGVkUHNldWRvRWxlbWVu
dFNlbGVjdG9yKHJ1bGVEYXRhLnNlbGVjdG9yKCkpOworICAgICAgICAgICAgaWYgKCFzZWxlY3Rv
cikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworI2VuZGlmCiAg
ICAgICAgIC8vIFNsb3cgcGF0aC4KICAgICAgICAgU2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hl
Y2tlcihtX2VsZW1lbnQuZG9jdW1lbnQoKSk7Ci0gICAgICAgIHNlbGVjdG9yTWF0Y2hlcyA9IHNl
bGVjdG9yQ2hlY2tlci5tYXRjaCgqcnVsZURhdGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50LCBjb250
ZXh0LCBzcGVjaWZpY2l0eSk7CisgICAgICAgIHNlbGVjdG9yTWF0Y2hlcyA9IHNlbGVjdG9yQ2hl
Y2tlci5tYXRjaCgqc2VsZWN0b3IsIG1fZWxlbWVudCwgY29udGV4dCwgc3BlY2lmaWNpdHkpOwog
ICAgIH0KIAogICAgIGNvbW1pdFN0eWxlUmVsYXRpb25zKGNvbnRleHQuc3R5bGVSZWxhdGlvbnMp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgJKHJldmlz
aW9uIDE5NzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXRj
aFVBUnVsZXMoUnVsZVNldCopOwogI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHZvaWQgbWF0
Y2hIb3N0UHNldWRvQ2xhc3NSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICB2b2lk
IG1hdGNoU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsK
KyAgICBSdWxlU2V0OjpSdWxlRGF0YVZlY3RvciBjb2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1lbnRS
dWxlc0ZvclNsb3QoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAjZW5kaWYKIAogICAgIHZvaWQg
Y29sbGVjdE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0JiwgU3R5bGVSZXNvbHZlcjo6
UnVsZVJhbmdlJik7CkBAIC05OCw2ICsxMDAsOSBAQCBwcml2YXRlOgogICAgIFBzZXVkb1N0eWxl
UmVxdWVzdCBtX3BzZXVkb1N0eWxlUmVxdWVzdCB7IE5PUFNFVURPIH07CiAgICAgYm9vbCBtX3Nh
bWVPcmlnaW5Pbmx5IHsgZmFsc2UgfTsKICAgICBTZWxlY3RvckNoZWNrZXI6Ok1vZGUgbV9tb2Rl
IHsgU2VsZWN0b3JDaGVja2VyOjpNb2RlOjpSZXNvbHZpbmdTdHlsZSB9OworI2lmIEVOQUJMRShT
SEFET1dfRE9NKQorICAgIGJvb2wgbV9pc01hdGNoaW5nU2xvdHRlZFBzZXVkb0VsZW1lbnQgeyBm
YWxzZSB9OworI2VuZGlmCiAKICAgICBWZWN0b3I8TWF0Y2hlZFJ1bGUsIDY0PiBtX21hdGNoZWRS
dWxlczsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAkocmV2aXNpb24gMTk3MDI3KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsNiAr
MjY2LDEyIEBAIHZvaWQgUnVsZVNldDo6YWRkUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIHUKICAgICAg
ICAgICAgIG1faG9zdFBzZXVkb0NsYXNzUnVsZXMuYXBwZW5kKHJ1bGVEYXRhKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBpZiAoc2VsZWN0b3ItPm1hdGNoKCkgPT0g
Q1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQgJiYgc2VsZWN0b3ItPnBzZXVkb0VsZW1lbnRUeXBl
KCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRTbG90dGVkKSB7CisgICAgICAgICAgICAv
LyA6OnNsb3R0ZWQgcHNldWRvIGVsZW1lbnRzIHdvcmsgYWNjcm9zcyBzaGFkb3cgYm91bmRhcnkg
bWFraW5nIGZpbHRlcmluZyBkaWZmaWN1bHQuCisgICAgICAgICAgICBydWxlRGF0YS5kaXNhYmxl
U2VsZWN0b3JGaWx0ZXJpbmcoKTsKKyAgICAgICAgICAgIG1fc2xvdHRlZFBzZXVkb0VsZW1lbnRS
dWxlcy5hcHBlbmQocnVsZURhdGEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAj
ZW5kaWYKICAgICAgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpT
dWJTZWxlY3RvcikKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDIyLDYgKzQyOCwxMCBAQCB2b2lk
IFJ1bGVTZXQ6OnNocmlua1RvRml0KCkKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgbV9j
dWVQc2V1ZG9SdWxlcy5zaHJpbmtUb0ZpdCgpOwogI2VuZGlmCisjaWYgRU5BQkxFKFNIQURPV19E
T00pCisgICAgbV9ob3N0UHNldWRvQ2xhc3NSdWxlcy5zaHJpbmtUb0ZpdCgpOworICAgIG1fc2xv
dHRlZFBzZXVkb0VsZW1lbnRSdWxlcy5zaHJpbmtUb0ZpdCgpOworI2VuZGlmCiAgICAgbV9mb2N1
c1BzZXVkb0NsYXNzUnVsZXMuc2hyaW5rVG9GaXQoKTsKICAgICBtX3VuaXZlcnNhbFJ1bGVzLnNo
cmlua1RvRml0KCk7CiAgICAgbV9wYWdlUnVsZXMuc2hyaW5rVG9GaXQoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L1J1bGVTZXQuaAkocmV2aXNpb24gMTk3MDI3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1J1bGVT
ZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDYgKzE4NCw3IEBAIHB1YmxpYzoKICNlbmRpZgog
I2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGNvbnN0IFJ1bGVEYXRhVmVjdG9yJiBob3N0UHNl
dWRvQ2xhc3NSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1faG9zdFBzZXVkb0NsYXNzUnVsZXM7IH0K
KyAgICBjb25zdCBSdWxlRGF0YVZlY3RvciYgc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlczsgfQogI2VuZGlmCiAgICAg
Y29uc3QgUnVsZURhdGFWZWN0b3IqIGZvY3VzUHNldWRvQ2xhc3NSdWxlcygpIGNvbnN0IHsgcmV0
dXJuICZtX2ZvY3VzUHNldWRvQ2xhc3NSdWxlczsgfQogICAgIGNvbnN0IFJ1bGVEYXRhVmVjdG9y
KiB1bml2ZXJzYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3VuaXZlcnNhbFJ1bGVzOyB9CkBA
IC0yMTAsNiArMjExLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShTSEFET1dfRE9N
KQogICAgIFJ1bGVEYXRhVmVjdG9yIG1faG9zdFBzZXVkb0NsYXNzUnVsZXM7CisgICAgUnVsZURh
dGFWZWN0b3IgbV9zbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzOwogI2VuZGlmCiAgICAgUnVsZURh
dGFWZWN0b3IgbV9mb2N1c1BzZXVkb0NsYXNzUnVsZXM7CiAgICAgUnVsZURhdGFWZWN0b3IgbV91
bml2ZXJzYWxSdWxlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3Bw
CShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRp
b25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhU
TUxQcm9ncmVzc0VsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTAzOCw3ICsxMDM5LDEzIEBAIGJvb2wgU2Vs
ZWN0b3JDaGVja2VyOjpjaGVja09uZShDaGVja2luZ0MKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICNlbmRpZgotICAgIC8vICMjIyBhZGQgdGhlIHJlc3Qgb2YgdGhlIGNoZWNrcy4uLgor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGlmIChzZWxlY3Rvci5tYXRjaCgpID09IENTU1Nl
bGVjdG9yOjpQc2V1ZG9FbGVtZW50ICYmIHNlbGVjdG9yLnBzZXVkb0VsZW1lbnRUeXBlKCkgPT0g
Q1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRTbG90dGVkKSB7CisgICAgICAgIC8vIFdlIHNlZSA6
OnNsb3R0ZWQoKSBwc2V1ZG8gZWxlbWVudHMgd2hlbiBjb2xsZWN0aW5nIHNsb3R0ZWQgcnVsZXMg
ZnJvbSB0aGUgc2xvdCBzaGFkb3cgdHJlZSBvbmx5LgorICAgICAgICBBU1NFUlQoY2hlY2tpbmdD
b250ZXh0LnJlc29sdmluZ01vZGUgPT0gTW9kZTo6Q29sbGVjdGluZ1J1bGVzKTsKKyAgICAgICAg
cmV0dXJuIGlzPEhUTUxTbG90RWxlbWVudD4oZWxlbWVudCk7CisgICAgfQorI2VuZGlmCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmlu
Z1Jlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNo
YXJpbmdSZXNvbHZlci5jcHAJKHJldmlzaW9uIDE5NzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYs
OCBAQCBjb25zdCBFbGVtZW50KiBTaGFyaW5nUmVzb2x2ZXI6OnJlc29sdmUoCiAgICAgaWYgKCFl
bGVtZW50LnBhcmVudEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0
byYgcGFyZW50RWxlbWVudCA9ICplbGVtZW50LnBhcmVudEVsZW1lbnQoKTsKKyAgICBpZiAocGFy
ZW50RWxlbWVudC5zaGFkb3dSb290KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlm
ICghcGFyZW50RWxlbWVudC5yZW5kZXJTdHlsZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAvLyBJZiB0aGUgZWxlbWVudCBoYXMgaW5saW5lIHN0eWxlIGl0IGlzIHByb2JhYmx5IHVu
aXF1ZS4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzE2MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE2LTAyLTI2ICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgOjpzbG90dGVkIHBz
ZXVkbyBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDk0NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNzMxOTg3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9t
L2Nzcy1zY29waW5nLXNoYWRvdy1zbG90dGVkLXJ1bGUuaHRtbDoKKworICAgICAgICAgICAgRW5h
YmxlIHRoZSB0ZXN0LCBmaXggaXQgYW5kIHVwZGF0ZSBpdCB0byB0aGUgY3VycmVudCBzcGVjLgor
CisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL3Nsb3R0ZWQtcHNldWRvLWVsZW1lbnQtY3NzLXRl
eHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vc2xvdHRl
ZC1wc2V1ZG8tZWxlbWVudC1jc3MtdGV4dC5odG1sOiBBZGRlZC4KKworICAgICAgICAgICAgQWRk
IHBhcnNpbmcvY3NzVGV4dCB0ZXN0IGJhc2VkIG9uIGEgQmxpbmsgdGVzdC4KKyAgICAgICAgICAg
IFRoZXJlIGFyZSBhIGZldyBmYWlsdXJlcyBkdWUgdG8gKiBub3Qgcm91bnRyaXBwaW5nIGFuZCB0
aGUgcGFyc2VyIGJlaW5nIHNsaWdodGx5IHRvbyBsZW5pZW50LgorCisgICAgICAgICogcGxhdGZv
cm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTYtMDItMjUgIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBGb250IHNpemUgY29tcHV0ZWQgc3R5
bGUgaXMgaW5uYWNjdXJhdGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mt
c2NvcGluZy1zaGFkb3ctc2xvdHRlZC1ydWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1zbG90dGVkLXJ1bGUuaHRtbAko
cmV2aXNpb24gMTk3MDI3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29w
aW5nLXNoYWRvdy1zbG90dGVkLXJ1bGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcg
QEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KLSAgICA8dGl0bGU+Q1NTIFNjb3Bp
bmcgLSA6c2xvdHRlZCBwZXN1ZG8gZWxlbWVudCBtdXN0IGFsbG93IHNlbGVjdGluZyBlbGVtZW50
cyBhc3NpZ25lZCB0byBhIHNsb3QgZWxlbWVudDwvdGl0bGU+CisgICAgPHRpdGxlPkNTUyBTY29w
aW5nIC0gOnNsb3R0ZWQgcHNldWRvIGVsZW1lbnQgbXVzdCBhbGxvdyBzZWxlY3RpbmcgZWxlbWVu
dHMgYXNzaWduZWQgdG8gYSBzbG90IGVsZW1lbnQ8L3RpdGxlPgogICAgIDxsaW5rIHJlbD0iYXV0
aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyIv
PgogICAgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzLXNj
b3BpbmctMS8jc2VsZWN0b3JzLWRhdGEtbW9kZWwiPgogICAgIDxsaW5rIHJlbD0ibWF0Y2giIGhy
ZWY9InJlZmVyZW5jZS9ncmVlbi1ib3guaHRtbCIvPgpAQCAtMTIsNyArMTIsOCBAQAogICAgICAg
ICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgICB3aWR0aDogMTAwcHg7CiAgICAgICAg
ICAgICBoZWlnaHQ6IDEwMHB4OwotICAgICAgICAgICAgYmFja2dyb3VuZDogcmVkOworICAgICAg
ICAgICAgY29sb3I6IHJlZDsKKyAgICAgICAgICAgIGJhY2tncm91bmQ6IGdyZWVuOwogICAgICAg
ICB9CiAgICAgICAgIG15LWhvc3QgPiBkaXYsIG5lc3RlZC1ob3N0IHsKICAgICAgICAgICAgIGRp
c3BsYXk6IGJsb2NrOwpAQCAtMjMsNyArMjQsNyBAQAogICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlv
dSBzZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3JlZW4gYm94IGJlbG93LjwvcD4gCiAgICAg
PG15LWhvc3Q+CiAgICAgICAgIDxkaXYgY2xhc3M9ImdyZWVuIj5GQUlMMTwvZGl2PgotICAgICAg
ICA8ZGl2PjxzcGFuPkZBSUwyPC9zcGFuPjwvZGl2PgorICAgICAgICA8bXllbGVtPjxzcGFuPkZB
SUwyPC9zcGFuPjwvbXllbGVtPgogICAgICAgICA8bmVzdGVkLWhvc3Q+CiAgICAgICAgICAgICA8
c3Bhbj5GQUlMMzwvc3Bhbj4KICAgICAgICAgPC9uZXN0ZWQtaG9zdD4KQEAgLTM2LDE1ICszNywx
NSBAQAogICAgICAgICB0cnkgewogICAgICAgICAgICAgdmFyIHNoYWRvd0hvc3QgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCdteS1ob3N0Jyk7CiAgICAgICAgICAgICBzaGFkb3dSb290ID0gc2hh
ZG93SG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVuJ30pOwotICAgICAgICAgICAgc2hhZG93
Um9vdC5pbm5lckhUTUwgPSAnPHNsb3Q+PC9zbG90PjxzdHlsZT4gOjpzbG90dGVkID4gLmdyZWVu
LCA6OnNsb3R0ZWQgc3BhbiB7IGNvbG9yOmdyZWVuOyB9IDwvc3R5bGU+JzsKKyAgICAgICAgICAg
IHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzbG90Pjwvc2xvdD48c3R5bGU+IDo6c2xvdHRlZCgu
Z3JlZW4pLCA6OnNsb3R0ZWQobXllbGVtKSB7IGNvbG9yOmdyZWVuOyB9IDwvc3R5bGU+JzsKIAog
ICAgICAgICAgICAgc2hhZG93SG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ25lc3RlZC1o
b3N0Jyk7CiAgICAgICAgICAgICBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRhY2hTaGFkb3co
e21vZGU6ICdvcGVuJ30pOwotICAgICAgICAgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPHNs
b3Q+PC9zbG90Pic7CisgICAgICAgICAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c3R5bGU+
IC5teWRpdiA6OnNsb3R0ZWQoKikgeyBjb2xvcjpncmVlbjsgfSA8L3N0eWxlPjxkaXYgY2xhc3M9
bXlkaXY+PHNsb3Q+PC9zbG90PjwvZGl2Pic7CiAKICAgICAgICAgICAgIHNoYWRvd0hvc3QgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhbm90aGVyLWhvc3QnKTsKICAgICAgICAgICAgIHNoYWRv
d1Jvb3QgPSBzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7Ci0gICAgICAg
ICAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c3R5bGU+IDo6c2xvdHRlZCB7IGNvbG9yOmdy
ZWVuOyB9IDwvc3R5bGU+PHNsb3Q+PC9zbG90Pic7CisgICAgICAgICAgICBzaGFkb3dSb290Lmlu
bmVySFRNTCA9ICc8c3R5bGU+IDo6c2xvdHRlZCgqKSB7IGNvbG9yOmdyZWVuOyB9IDwvc3R5bGU+
PHNsb3Q+PC9zbG90Pic7CiAgICAgICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbikgewogICAgICAgICAg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShleGNl
cHRpb24pKTsKICAgICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3Ns
b3R0ZWQtcHNldWRvLWVsZW1lbnQtY3NzLXRleHQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zbG90dGVkLXBzZXVkby1lbGVtZW50LWNzcy10
ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93
LWRvbS9zbG90dGVkLXBzZXVkby1lbGVtZW50LWNzcy10ZXh0LWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACitUZXN0IGZvciBjc3NUZXh0IG9mICc6OnNsb3R0ZWQn
IHJ1bGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitSdWxlIDo6c2xvdHRlZCB7
IGRpc3BsYXk6IGJsb2NrOyB9CitQQVNTIGNzc1RleHQgaXMgIiIKK1J1bGUgOjpzbG90dGVkKCkg
eyBkaXNwbGF5OiBibG9jazsgfQorUEFTUyBjc3NUZXh0IGlzICIiCitSdWxlIDo6c2xvdHRlZCgq
KSB7IGRpc3BsYXk6IGJsb2NrOyB9CitQQVNTIGNzc1RleHQgaXMgIjo6c2xvdHRlZCgqKSB7IGRp
c3BsYXk6IGJsb2NrOyB9IgorUnVsZSAqOjpzbG90dGVkKCopIHsgZGlzcGxheTogYmxvY2s7IH0K
K0ZBSUwgY3NzVGV4dCBzaG91bGQgYmUgKjo6c2xvdHRlZCgqKSB7IGRpc3BsYXk6IGJsb2NrOyB9
LiBXYXMgOjpzbG90dGVkKCopIHsgZGlzcGxheTogYmxvY2s7IH0uCitSdWxlIDo6c2xvdHRlZChk
aXYpIHsgZGlzcGxheTogYmxvY2s7IH0KK1BBU1MgY3NzVGV4dCBpcyAiOjpzbG90dGVkKGRpdikg
eyBkaXNwbGF5OiBibG9jazsgfSIKK1J1bGUgOjpzbG90dGVkKCBkaXYpIHsgZGlzcGxheTogYmxv
Y2s7IH0KK1BBU1MgY3NzVGV4dCBpcyAiOjpzbG90dGVkKGRpdikgeyBkaXNwbGF5OiBibG9jazsg
fSIKK1J1bGUgOjpzbG90dGVkKGRpdiApIHsgZGlzcGxheTogYmxvY2s7IH0KK1BBU1MgY3NzVGV4
dCBpcyAiOjpzbG90dGVkKGRpdikgeyBkaXNwbGF5OiBibG9jazsgfSIKK1J1bGUgOjpzbG90dGVk
KGRpdjo6YmVmb3JlKSB7IGRpc3BsYXk6IGJsb2NrOyB9CitQQVNTIGNzc1RleHQgaXMgIiIKK1J1
bGUgLmZvbzo6c2xvdHRlZChkaXYpIHsgY29sb3I6IGJsdWU7IH0KK1BBU1MgY3NzVGV4dCBpcyAi
LmZvbzo6c2xvdHRlZChkaXYpIHsgY29sb3I6IGJsdWU7IH0iCitSdWxlICNpZDo6c2xvdHRlZCgq
KSB7IGNvbG9yOiBibHVlOyB9CitQQVNTIGNzc1RleHQgaXMgIiNpZDo6c2xvdHRlZCgqKSB7IGNv
bG9yOiBibHVlOyB9IgorUnVsZSBbYXR0cj1mb29dOjpzbG90dGVkKCopIHsgY29sb3I6IGJsdWU7
IH0KK1BBU1MgY3NzVGV4dCBpcyAiW2F0dHI9XCJmb29cIl06OnNsb3R0ZWQoKikgeyBjb2xvcjog
Ymx1ZTsgfSIKK1J1bGUgLmZvbyAuYmFyOjpzbG90dGVkKGRpdikgeyBjb2xvcjogYmx1ZTsgfQor
UEFTUyBjc3NUZXh0IGlzICIuZm9vIC5iYXI6OnNsb3R0ZWQoZGl2KSB7IGNvbG9yOiBibHVlOyB9
IgorUnVsZSAuZm9vOjpiZWZvcmUgLmJhcjo6c2xvdHRlZChkaXYpIHsgY29sb3I6IGJsdWU7IH0K
K0ZBSUwgY3NzVGV4dCBzaG91bGQgYmUgLiBXYXMgLmZvbzo6YmVmb3JlIC5iYXI6OnNsb3R0ZWQo
ZGl2KSB7IGNvbG9yOiBibHVlOyB9LgorUnVsZSAuZm9vOjpzbG90dGVkKGRpdikgLmJhciB7IGNv
bG9yOiBibHVlOyB9CitGQUlMIGNzc1RleHQgc2hvdWxkIGJlIC4gV2FzIC5mb286OnNsb3R0ZWQo
ZGl2KSAuYmFyIHsgY29sb3I6IGJsdWU7IH0uCitSdWxlIDo6c2xvdHRlZChkaXYsIGRpdikgeyBj
b2xvcjogYmx1ZTsgfQorUEFTUyBjc3NUZXh0IGlzICIiCitSdWxlIDo6c2xvdHRlZChkaXYgZGl2
KSB7IGNvbG9yOiBibHVlOyB9CitQQVNTIGNzc1RleHQgaXMgIiIKK1J1bGUgc2xvdDo6c2xvdHRl
ZCguZ3JlZW4pIHsgY29sb3I6IGdyZWVuOyB9CitQQVNTIGNzc1RleHQgaXMgInNsb3Q6OnNsb3R0
ZWQoLmdyZWVuKSB7IGNvbG9yOiBncmVlbjsgfSIKK1J1bGUgc2xvdDo6c2xvdHRlZCgjZ3JlZW4p
IHsgY29sb3I6IGdyZWVuOyB9CitQQVNTIGNzc1RleHQgaXMgInNsb3Q6OnNsb3R0ZWQoI2dyZWVu
KSB7IGNvbG9yOiBncmVlbjsgfSIKK1J1bGUgc2xvdDo6c2xvdHRlZChbZ3JlZW49Z3JlZW5dKSB7
IGNvbG9yOiBncmVlbjsgfQorUEFTUyBjc3NUZXh0IGlzICJzbG90OjpzbG90dGVkKFtncmVlbj1c
ImdyZWVuXCJdKSB7IGNvbG9yOiBncmVlbjsgfSIKK1J1bGUgc2xvdDo6c2xvdHRlZChkaXYuZ3Jl
ZW4pIHsgY29sb3I6IGdyZWVuOyB9CitQQVNTIGNzc1RleHQgaXMgInNsb3Q6OnNsb3R0ZWQoZGl2
LmdyZWVuKSB7IGNvbG9yOiBncmVlbjsgfSIKK1J1bGUgZGl2IDo6c2xvdHRlZChkaXYpIHsgY29s
b3I6IHJlZDsgfQorUEFTUyBjc3NUZXh0IGlzICJkaXYgOjpzbG90dGVkKGRpdikgeyBjb2xvcjog
cmVkOyB9IgorUnVsZSBkaXYgKyBzbG90OjpzbG90dGVkKGRpdikgeyBjb2xvcjogcmVkOyB9CitQ
QVNTIGNzc1RleHQgaXMgImRpdiArIHNsb3Q6OnNsb3R0ZWQoZGl2KSB7IGNvbG9yOiByZWQ7IH0i
CitSdWxlIHNwYW46OnNsb3R0ZWQoKikgeyBjb2xvcjogcmVkOyB9CitQQVNTIGNzc1RleHQgaXMg
InNwYW46OnNsb3R0ZWQoKikgeyBjb2xvcjogcmVkOyB9IgorUnVsZSA6OnNsb3R0ZWQoc3Bhbik6
OnNsb3R0ZWQoc3BhbikgeyBjb2xvcjogcmVkOyB9CitGQUlMIGNzc1RleHQgc2hvdWxkIGJlIC4g
V2FzIDo6c2xvdHRlZChzcGFuKTo6c2xvdHRlZChzcGFuKSB7IGNvbG9yOiByZWQ7IH0uCitSdWxl
IDo6c2xvdHRlZCg6OnNsb3R0ZWQoZGl2KSkgeyBjb2xvcjogcmVkOyB9CitQQVNTIGNzc1RleHQg
aXMgIiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc2xvdHRlZC1wc2V1ZG8tZWxlbWVu
dC1jc3MtdGV4dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRv
bS9zbG90dGVkLXBzZXVkby1lbGVtZW50LWNzcy10ZXh0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc2xvdHRlZC1wc2V1ZG8tZWxlbWVudC1jc3MtdGV4
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkgQEAKKzwhRE9DVFlQRSBodG1sPgor
PHNjcmlwdCBzcmM9Jy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyc+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgZm9yIGNzc1RleHQgb2YgJzo6c2xvdHRlZCcgcnVs
ZS4iKTsKKwordmFyIHJ1bGVzID0gWworIjo6c2xvdHRlZCB7IGRpc3BsYXk6IGJsb2NrOyB9Iiwg
LyogaW52YWxpZCAtIG5vIHBhcmFtZXRlciAqLworIjo6c2xvdHRlZCgpIHsgZGlzcGxheTogYmxv
Y2s7IH0iLCAvKiBpbnZhbGlkIC0gZW1wdHkgcGFyYW1ldGVyICovCisiOjpzbG90dGVkKCopIHsg
ZGlzcGxheTogYmxvY2s7IH0iLAorIio6OnNsb3R0ZWQoKikgeyBkaXNwbGF5OiBibG9jazsgfSIs
CisiOjpzbG90dGVkKGRpdikgeyBkaXNwbGF5OiBibG9jazsgfSIsIC8qIGV4cGVjdHMgdW5pdmVy
c2FsIHNlbGVjdG9yICgqKSBvbiB0aGUgbGVmdCBpbiBjc3NUZXh0ICovCisiOjpzbG90dGVkKCBk
aXYpIHsgZGlzcGxheTogYmxvY2s7IH0iLCAvKiBhbGxvdyBhIHNwYWNlIG9uIGxlZnQgKi8KKyI6
OnNsb3R0ZWQoZGl2ICkgeyBkaXNwbGF5OiBibG9jazsgfSIsIC8qIGFsbG93IGEgc3BhY2Ugb24g
cmlnaHQgKi8KKyI6OnNsb3R0ZWQoZGl2OjpiZWZvcmUpIHsgZGlzcGxheTogYmxvY2s7IH0iLCAv
KiBoYXZpbmcgYSBwc2V1ZG8gZWxlbWVudCBpbiAoKSBpcyBpbnZhbGlkICovCisiLmZvbzo6c2xv
dHRlZChkaXYpIHsgY29sb3I6IGJsdWU7IH0iLAorIiNpZDo6c2xvdHRlZCgqKSB7IGNvbG9yOiBi
bHVlOyB9IiwKKyJbYXR0cj1mb29dOjpzbG90dGVkKCopIHsgY29sb3I6IGJsdWU7IH0iLAorIi5m
b28gLmJhcjo6c2xvdHRlZChkaXYpIHsgY29sb3I6IGJsdWU7IH0iLAorIi5mb286OmJlZm9yZSAu
YmFyOjpzbG90dGVkKGRpdikgeyBjb2xvcjogYmx1ZTsgfSIsIC8qIGludmFsaWQsIG9ubHkgb25l
IHBzZXVkbyBlbGVtZW50IGlzIGFsbG93ZWQgYXQgdGhlIHJpZ2h0bW9zdCBjb21wb3VuZCAqLwor
Ii5mb286OnNsb3R0ZWQoZGl2KSAuYmFyIHsgY29sb3I6IGJsdWU7IH0iLCAvKiBpbnZhbGlkLCBz
YW1lIGFzIGFib3ZlICovCisiOjpzbG90dGVkKGRpdiwgZGl2KSB7IGNvbG9yOiBibHVlOyB9Iiwg
LyogaW52YWxpZCAtIHNlbGVjdG9yIGxpc3QgKi8KKyI6OnNsb3R0ZWQoZGl2IGRpdikgeyBjb2xv
cjogYmx1ZTsgfSIsIC8qIGludmFsaWQgLSBjb21wbGV4IHNlbGVjdG9yIChjb21iaW5hdG9yIGlz
IHVzZWQpICovCisic2xvdDo6c2xvdHRlZCguZ3JlZW4pIHsgY29sb3I6IGdyZWVuOyB9IiwKKyJz
bG90OjpzbG90dGVkKCNncmVlbikgeyBjb2xvcjogZ3JlZW47IH0iLAorInNsb3Q6OnNsb3R0ZWQo
W2dyZWVuPWdyZWVuXSkgeyBjb2xvcjogZ3JlZW47IH0iLAorInNsb3Q6OnNsb3R0ZWQoZGl2Lmdy
ZWVuKSB7IGNvbG9yOiBncmVlbjsgfSIsCisiZGl2IDo6c2xvdHRlZChkaXYpIHsgY29sb3I6IHJl
ZDsgfSIsCisiZGl2ICsgc2xvdDo6c2xvdHRlZChkaXYpIHsgY29sb3I6IHJlZDsgfSIsCisic3Bh
bjo6c2xvdHRlZCgqKSB7IGNvbG9yOiByZWQ7IH0iLCAvKiBuZXZlciBtYXRjaGVzLCBidXQgdmFs
aWQgYXMgYSBzZWxlY3RvciAqLworIjo6c2xvdHRlZChzcGFuKTo6c2xvdHRlZChzcGFuKSB7IGNv
bG9yOiByZWQ7IH0iLCAvKiBpbnZhbGlkICovCisiOjpzbG90dGVkKDo6c2xvdHRlZChkaXYpKSB7
IGNvbG9yOiByZWQ7IH0iIC8qIGludmFsaWQgKi8KK107CisKK3ZhciBleHBlY3RlZENTU1RleHRz
ID0gWworIiIsIAorIiIsCisiOjpzbG90dGVkKCopIHsgZGlzcGxheTogYmxvY2s7IH0iLAorIio6
OnNsb3R0ZWQoKikgeyBkaXNwbGF5OiBibG9jazsgfSIsCisiOjpzbG90dGVkKGRpdikgeyBkaXNw
bGF5OiBibG9jazsgfSIsCisiOjpzbG90dGVkKGRpdikgeyBkaXNwbGF5OiBibG9jazsgfSIsIAor
Ijo6c2xvdHRlZChkaXYpIHsgZGlzcGxheTogYmxvY2s7IH0iLAorIiIsCisiLmZvbzo6c2xvdHRl
ZChkaXYpIHsgY29sb3I6IGJsdWU7IH0iLAorIiNpZDo6c2xvdHRlZCgqKSB7IGNvbG9yOiBibHVl
OyB9IiwKKyJbYXR0cj1cImZvb1wiXTo6c2xvdHRlZCgqKSB7IGNvbG9yOiBibHVlOyB9IiwKKyIu
Zm9vIC5iYXI6OnNsb3R0ZWQoZGl2KSB7IGNvbG9yOiBibHVlOyB9IiwKKyIiLAorIiIsCisiIiwK
KyIiLAorInNsb3Q6OnNsb3R0ZWQoLmdyZWVuKSB7IGNvbG9yOiBncmVlbjsgfSIsCisic2xvdDo6
c2xvdHRlZCgjZ3JlZW4pIHsgY29sb3I6IGdyZWVuOyB9IiwKKyJzbG90OjpzbG90dGVkKFtncmVl
bj1cImdyZWVuXCJdKSB7IGNvbG9yOiBncmVlbjsgfSIsCisic2xvdDo6c2xvdHRlZChkaXYuZ3Jl
ZW4pIHsgY29sb3I6IGdyZWVuOyB9IiwKKyJkaXYgOjpzbG90dGVkKGRpdikgeyBjb2xvcjogcmVk
OyB9IiwKKyJkaXYgKyBzbG90OjpzbG90dGVkKGRpdikgeyBjb2xvcjogcmVkOyB9IiwKKyJzcGFu
OjpzbG90dGVkKCopIHsgY29sb3I6IHJlZDsgfSIsCisiIiwKKyIiLAorXTsKKworZnVuY3Rpb24g
cnVsZUNTU1RleHQocnVsZSkKK3sKKyAgICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzdHlsZSIpOworICAgIHN0eWxlLmlubmVyVGV4dCA9IHJ1bGU7CisgICAgZG9jdW1lbnQu
aGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7CisgICAgaWYgKHN0eWxlLnNoZWV0LmNzc1J1bGVzLmxl
bmd0aCA9PSAwKQorICAgICAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIHN0eWxlLnNoZWV0LmNz
c1J1bGVzLml0ZW0oMCkuY3NzVGV4dDsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5s
ZW5ndGg7ICsraSkgeworICAgIGRlYnVnKCJSdWxlICIgKyBydWxlc1tpXSk7CisgICAgY3NzVGV4
dCA9IHJ1bGVDU1NUZXh0KHJ1bGVzW2ldKTsKKyAgICBleHBlY3RlZENTU1RleHQgPSBleHBlY3Rl
ZENTU1RleHRzW2ldCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjc3NUZXh0IiwgZXhwZWN0
ZWRDU1NUZXh0KTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Jy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMnPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDE5NzAyNykKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUwLDcgKzEyNTAs
NiBAQCB3ZWJraXQub3JnL2IvMTQ5MTI4IGZhc3QvdGV4dC9jb250cm9sLWNoCiAKIHdlYmtpdC5v
cmcvYi8xNDg2OTUgZmFzdC9zaGFkb3ctZG9tIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTQ5NDQw
IGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctaG9zdC1mdW5jdGlvbmFsLXJ1bGUu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzE0OTQ0MSBmYXN0L3NoYWRv
dy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXNsb3R0ZWQtcnVsZS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvMTQ5NDQxIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1z
aGFkb3ctc2xvdC1kaXNwbGF5LW92ZXJyaWRlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAog
IyBUb3VjaCBldmVudHMgaXMgbm90IGVuYWJsZWQgb24gTWFjCg==
</data>
<flag name="review"
          id="297083"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272319</attachid>
            <date>2016-02-26 03:11:34 -0800</date>
            <delta_ts>2016-02-26 06:29:06 -0800</delta_ts>
            <desc>patch</desc>
            <filename>slotted-9.patch</filename>
            <type>text/plain</type>
            <size>27594</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzEyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDE2LTAyLTI1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgOjpzbG90dGVk
IHBzZXVkbyBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDk0NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNzMxOTg3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIGxhdGVz
dCBpbiBodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYmNvbXBvbmVudHMvaXNzdWVzLzMzMQorCisg
ICAgICAgICogY3NzL0NTU0dyYW1tYXIueS5pbjoKKworICAgICAgICAgICAgUGFyc2UgOjpzbG90
dGVkLgorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OmRldGVjdEZ1bmN0aW9uVHlwZVRva2VuKToKKyAgICAgICAgKiBjc3MvQ1NTUGFy
c2VyVmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpwYXJz
ZVBzZXVkb0VsZW1lbnRDdWVGdW5jdGlvblNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRTbG90dGVkRnVuY3Rpb25TZWxlY3Rv
cik6CisKKyAgICAgICAgICAgIFRva2VuaXplIDo6c2xvdHRlZC4KKworICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxl
bWVudFNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyVmFsdWVzLmg6CisgICAgICAg
ICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpw
c2V1ZG9JZCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAgICogY3NzL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29s
bGVjdG9yOjptYXRjaEF1dGhvclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxl
Q29sbGVjdG9yOjptYXRjaEhvc3RQc2V1ZG9DbGFzc1J1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMpOgor
CisgICAgICAgICAgICBNYXRjaCA6OnNsb3R0ZWQgc2VsZWN0b3IuCisKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxl
c0ZvclNsb3QpOgorCisgICAgICAgICAgICBDb2xsZWN0IDo6c2xvdHRlZCBydWxlcyB0aGF0IG1h
eSBhcHBseSB0byBhbiBlbGVtZW50IGluIGEgc2xvdC4KKworICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoVXNlclJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaFVBUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Zmlu
ZFNsb3R0ZWRQc2V1ZG9FbGVtZW50U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFJ1bGVDb2xsZWN0b3I6OnJ1bGVNYXRjaGVzKToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVD
b2xsZWN0b3IuaDoKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSdWxlU2V0OjphZGRSdWxlKToKKworICAgICAgICAgICAgQ29sbGVjdCA6OnNsb3R0ZWQgcnVs
ZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OnNocmlua1RvRml0KToKKyAgICAgICAg
KiBjc3MvUnVsZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6aG9zdFBzZXVkb0Ns
YXNzUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6c2xvdHRlZFBzZXVkb0VsZW1l
bnRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0Ojpmb2N1c1BzZXVkb0NsYXNzUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6dW5pdmVyc2FsUnVsZXMpOgorICAgICAg
ICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVTaGFyaW5nUmVzb2x2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNoYXJpbmdSZXNvbHZlcjo6cmVzb2x2ZSk6
CisKKyAgICAgICAgICAgIERpc2FibGUgc3R5bGUgc2hhcmluZyBmb3IgY2hpbGRyZW4gb2Ygc2hh
ZG93IGhvc3QuIFRoZXkgbWF5IGJlIGFmZmVjdGVkIGJ5IHRoZSBzaGFkb3cgdHJlZSBzdHlsZQor
ICAgICAgICAgICAgd2hpY2ggaXMgbm90IGNvbnNpZGVyZWQgaW4gc3R5bGUgc2hhcmluZyBjaGVj
a3MuCisKIDIwMTYtMDItMjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTk2MjY4KTogTWFueSBhc3NlcnRpb24gZmFp
bHVyZXMgYW5kIGNyYXNoZXMgb24gU1ZHIHBhdGggYW5pbWF0aW9uIHRlc3RzIHdoZW4gSlMgZ2Fy
YmFnZSBjb2xsZWN0aW9uIGhhcHBlbnMgcXVpY2tseQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55LmluCShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55LmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsNiArMzY1LDEyIEBAIHN0YXRpYyBib29s
IHNlbGVjdG9yTGlzdERvZXNOb3RNYXRjaEFueVAKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEVfU0hB
RE9XX0RPTQorCisldG9rZW4gPHN0cmluZz4gU0xPVFRFREZVTkNUSU9OCisKKyNlbmRpZgorCiAl
JQogCiBzdHlsZXNoZWV0OgpAQCAtMTM1Nyw2ICsxMzYzLDExIEBAIHBzZXVkbzoKICAgICAgICAg
JCQgPSBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50Q3VlRnVuY3Rpb25TZWxl
Y3RvcigkMywgJDUpOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRV9TSEFET1dfRE9NCisgICAg
fCAnOicgJzonIFNMT1RURURGVU5DVElPTiBtYXliZV9zcGFjZSBjb21wb3VuZF9zZWxlY3RvciBt
YXliZV9zcGFjZSAnKScgeworICAgICAgICAkJCA9IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBz
ZXVkb0VsZW1lbnRTbG90dGVkRnVuY3Rpb25TZWxlY3RvcigkMywgJDUpOworICAgIH0KKyNlbmRp
ZgogICAgIC8vIHVzZSBieSA6LXdlYmtpdC1hbnkuCiAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBz
dXBwb3J0IGdlbmVyaWMgc2VsZWN0b3JzIGhlcmUgb3IganVzdCBzaW1wbGVfc2VsZWN0b3JzPwog
ICAgIC8vIFVzZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBmb3Igbm93IHRvIG1hdGNoIC1tb3otYW55
LgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDE5NzAyNykKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTg5NCw2
ICsxMTg5NCwxMiBAQCBpbmxpbmUgYm9vbCBDU1NQYXJzZXI6OmRldGVjdEZ1bmN0aW9uVHlwCiAg
ICAgICAgICAgICBtX3Rva2VuID0gTUFUQ0hFU0ZVTkNUSU9OOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgaWYgKGlz
RXF1YWxUb0NTU0lkZW50aWZpZXIobmFtZSwgInNsb3R0ZWQiKSkgeworICAgICAgICAgICAgbV90
b2tlbiA9IFNMT1RURURGVU5DVElPTjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisjZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2FzZSA5OgpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5jcHAJKHJldmlzaW9uIDE5NzAyNykKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzEsNiArMjMxLDMyIEBAIENTU1BhcnNlclNlbGVjdG9yKiBDU1NQYXJzZXJTZWxlY3Rvcjo6
cGEKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCitDU1NQYXJzZXJTZWxlY3Rv
ciogQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvRWxlbWVudFNsb3R0ZWRGdW5jdGlvblNl
bGVjdG9yKGNvbnN0IENTU1BhcnNlclN0cmluZyYgZnVuY3Rpb25JZGVudGlmaWVyLCBDU1NQYXJz
ZXJTZWxlY3RvciogcGFyc2VkU2VsZWN0b3IpCit7CisgICAgQVNTRVJUX1VOVVNFRChmdW5jdGlv
bklkZW50aWZpZXIsIFN0cmluZyhmdW5jdGlvbklkZW50aWZpZXIpID09ICJzbG90dGVkKCIpOwor
CisgICAgaWYgKCFwYXJzZWRTZWxlY3RvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IG93bmVkUGFyc2VkU2VsZWN0b3Io
cGFyc2VkU2VsZWN0b3IpOworCisgICAgZm9yIChhdXRvKiBjb21wb25lbnQgPSBwYXJzZWRTZWxl
Y3RvcjsgY29tcG9uZW50OyBjb21wb25lbnQgPSBjb21wb25lbnQtPnRhZ0hpc3RvcnkoKSkgewor
ICAgICAgICBpZiAoY29tcG9uZW50LT5tYXRjaGVzUHNldWRvRWxlbWVudCgpKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byBzZWxlY3RvclZlY3RvciA9IHN0
ZDo6bWFrZV91bmlxdWU8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+
PigpOworICAgIHNlbGVjdG9yVmVjdG9yLT5hcHBlbmQoV1RGTW92ZShvd25lZFBhcnNlZFNlbGVj
dG9yKSk7CisKKyAgICBhdXRvIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJT
ZWxlY3Rvcj4oKTsKKyAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0
b3I6OlBzZXVkb0VsZW1lbnQpOworICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRQc2V1ZG9F
bGVtZW50VHlwZShDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFNsb3R0ZWQpOworICAgIHNlbGVj
dG9yLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpzZWxlY3RvclZlY3Rvcik7CisgICAgcmV0dXJuIHNl
bGVjdG9yLnJlbGVhc2UoKTsKK30KKyNlbmRpZgorCiBDU1NQYXJzZXJTZWxlY3RvciogQ1NTUGFy
c2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudFNlbGVj
dG9yKENTU1BhcnNlclN0cmluZyYgcHNldWRvVHlwZVN0cmluZykKIHsKICAgICBpZiAocHNldWRv
VHlwZVN0cmluZy5sZW5ndGgoKSAmJiBwc2V1ZG9UeXBlU3RyaW5nW3BzZXVkb1R5cGVTdHJpbmcu
bGVuZ3RoKCkgLSAxXSA9PSAnKCcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVl
cy5oCShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFs
dWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw3ICsyMDMsMTAgQEAgY2xhc3MgQ1NTUGFyc2Vy
U2VsZWN0b3IgewogcHVibGljOgogICAgIHN0YXRpYyBDU1NQYXJzZXJTZWxlY3RvciogcGFyc2VQ
YWdlUHNldWRvU2VsZWN0b3IoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiBwc2V1ZG9UeXBlU3RyaW5n
KTsKICAgICBzdGF0aWMgQ1NTUGFyc2VyU2VsZWN0b3IqIHBhcnNlUHNldWRvRWxlbWVudFNlbGVj
dG9yKENTU1BhcnNlclN0cmluZyYgcHNldWRvVHlwZVN0cmluZyk7Ci0gICAgc3RhdGljIENTU1Bh
cnNlclNlbGVjdG9yKiBwYXJzZVBzZXVkb0VsZW1lbnRDdWVGdW5jdGlvblNlbGVjdG9yKGNvbnN0
IENTU1BhcnNlclN0cmluZyYgZnVuY3Rpb25JZGVudGlmaWVyLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPENTU1BhcnNlclNlbGVjdG9yPj4qIHNlbGVjdG9yVmVjdG9yKTsKKyAgICBzdGF0aWMgQ1NT
UGFyc2VyU2VsZWN0b3IqIHBhcnNlUHNldWRvRWxlbWVudEN1ZUZ1bmN0aW9uU2VsZWN0b3IoY29u
c3QgQ1NTUGFyc2VyU3RyaW5nJiBmdW5jdGlvbklkZW50aWZpZXIsIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+PiopOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAg
IHN0YXRpYyBDU1NQYXJzZXJTZWxlY3RvciogcGFyc2VQc2V1ZG9FbGVtZW50U2xvdHRlZEZ1bmN0
aW9uU2VsZWN0b3IoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiBmdW5jdGlvbklkZW50aWZpZXIsIENT
U1BhcnNlclNlbGVjdG9yKik7CisjZW5kaWYKICAgICBzdGF0aWMgQ1NTUGFyc2VyU2VsZWN0b3Iq
IHBhcnNlUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudFNlbGVjdG9yKENTU1BhcnNl
clN0cmluZyYgcHNldWRvVHlwZVN0cmluZyk7CiAKICAgICBDU1NQYXJzZXJTZWxlY3RvcigpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAxOTcwMjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTks
NiArMjk5LDkgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVkb0VsZQogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKICAgICBjYXNlIFBzZXVkb0VsZW1lbnRDdWU6CiAjZW5kaWYK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBjYXNlIFBzZXVkb0VsZW1lbnRTbG90dGVkOgor
I2VuZGlmCiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50VW5rbm93bjoKICAgICBjYXNlIFBzZXVkb0Vs
ZW1lbnRVc2VyQWdlbnRDdXN0b206CiAgICAgY2FzZSBQc2V1ZG9FbGVtZW50V2ViS2l0Q3VzdG9t
OgpAQCAtNjQ0LDggKzY0NywxOCBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dChj
b25zdCBTCiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSBpZiAoY3MtPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVk
b0VsZW1lbnQpIHsKLSAgICAgICAgICAgIHN0ci5hcHBlbmRMaXRlcmFsKCI6OiIpOwotICAgICAg
ICAgICAgc3RyLmFwcGVuZChjcy0+dmFsdWUoKSk7CisgICAgICAgICAgICBzd2l0Y2ggKGNzLT5w
c2V1ZG9FbGVtZW50VHlwZSgpKSB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50U2xvdHRlZDoKKyAgICAgICAgICAgICAg
ICBzdHIuYXBwZW5kTGl0ZXJhbCgiOjpzbG90dGVkKCIpOworICAgICAgICAgICAgICAgIGNzLT5z
ZWxlY3Rvckxpc3QoKS0+YnVpbGRTZWxlY3RvcnNUZXh0KHN0cik7CisgICAgICAgICAgICAgICAg
c3RyLmFwcGVuZCgnKScpOworICAgICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHN0ci5hcHBlbmRMaXRlcmFsKCI6OiIpOwor
ICAgICAgICAgICAgICAgIHN0ci5hcHBlbmQoY3MtPnZhbHVlKCkpOworICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKGNzLT5pc0F0dHJpYnV0ZVNlbGVjdG9yKCkpIHsKICAgICAgICAg
ICAgIHN0ci5hcHBlbmQoJ1snKTsKICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHJl
Zml4ID0gY3MtPmF0dHJpYnV0ZSgpLnByZWZpeCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmgJKHJldmlzaW9uIDE5NzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNiArMTgxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgUHNldWRvRWxlbWVudFNjcm9sbGJhclRyYWNrLAogICAgICAgICAgICAg
UHNldWRvRWxlbWVudFNjcm9sbGJhclRyYWNrUGllY2UsCiAgICAgICAgICAgICBQc2V1ZG9FbGVt
ZW50U2VsZWN0aW9uLAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICAgICAgUHNldWRv
RWxlbWVudFNsb3R0ZWQsCisjZW5kaWYKICAgICAgICAgICAgIFBzZXVkb0VsZW1lbnRVc2VyQWdl
bnRDdXN0b20sCiAgICAgICAgICAgICBQc2V1ZG9FbGVtZW50V2ViS2l0Q3VzdG9tLAogICAgICAg
ICB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3Bw
CShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xs
ZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ1NT
U2VsZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUg
IkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFNsb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCkBAIC0yMDYsNiArMjA3LDEwIEBAIHZvaWQgRWxl
bWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQXV0aG9yUnUKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
ICAgICBpZiAobV9lbGVtZW50LnNoYWRvd1Jvb3QoKSkKICAgICAgICAgbWF0Y2hIb3N0UHNldWRv
Q2xhc3NSdWxlcyhpbmNsdWRlRW1wdHlSdWxlcyk7CisKKyAgICBhdXRvKiBwYXJlbnQgPSBtX2Vs
ZW1lbnQucGFyZW50Tm9kZSgpOworICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5zaGFkb3dSb290
KCkpCisgICAgICAgIG1hdGNoU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyhpbmNsdWRlRW1wdHlS
dWxlcyk7CiAjZW5kaWYKIAogICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7CkBAIC0yNDEsNiArMjQ2
LDYyIEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoSG9zdFBzZXUKICAgICAvLyBG
SVhNRTogTWF0Y2ggdGhlIHNwZWMgd2hlbiBpdCBpcyBmaW5hbGl6ZWQuCiAgICAgc29ydEFuZFRy
YW5zZmVyTWF0Y2hlZFJ1bGVzKCk7CiB9CisKK3ZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1h
dGNoU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQorewor
ICAgIGF1dG8qIGhvc3RTaGFkb3dSb290ID0gbV9lbGVtZW50LnBhcmVudE5vZGUoKS0+c2hhZG93
Um9vdCgpOworICAgIEFTU0VSVChob3N0U2hhZG93Um9vdCk7CisgICAgYXV0byogc2xvdCA9IGhv
c3RTaGFkb3dSb290LT5maW5kQXNzaWduZWRTbG90KG1fZWxlbWVudCk7CisgICAgaWYgKCFzbG90
KQorICAgICAgICByZXR1cm47CisgICAgYXV0byogc2hhZG93QXV0aG9yU3R5bGUgPSBob3N0U2hh
ZG93Um9vdC0+c3R5bGVSZXNvbHZlcigpLnJ1bGVTZXRzKCkuYXV0aG9yU3R5bGUoKTsKKyAgICBp
ZiAoIXNoYWRvd0F1dGhvclN0eWxlKQorICAgICAgICByZXR1cm47CisgICAgLy8gRmluZCBvdXQg
aWYgdGhlcmUgYXJlIGFueSA6OnNsb3R0ZWQgcnVsZXMgaW4gdGhlIHNoYWRvdyB0cmVlIG1hdGNo
aW5nIHRoZSBjdXJyZW50IHNsb3QuCisgICAgLy8gRklYTUU6IFRoaXMgaXMgcmVhbGx5IHBhcnQg
b2YgdGhlIHNsb3Qgc3R5bGUgYW5kIGNvdWxkIGJlIGNhY2hlZCB3aGVuIHJlc29sdmluZyBpdC4K
KyAgICBFbGVtZW50UnVsZUNvbGxlY3RvciBjb2xsZWN0b3IoKnNsb3QsICpzaGFkb3dBdXRob3JT
dHlsZSwgbnVsbHB0cik7CisgICAgYXV0byBzbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzID0gY29s
bGVjdG9yLmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzRm9yU2xvdChpbmNsdWRlRW1w
dHlSdWxlcyk7CisgICAgaWYgKHNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm47CisKKworICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7CisgICAgbV9yZXN1
bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlID0gbV9yZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMoKS5z
aXplKCkgLSAxOworCisgICAgeworICAgICAgICAvLyBNYXRjaCBpbiB0aGUgY3VycmVudCBzY29w
ZS4KKyAgICAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGNoYW5nZShtX2lzTWF0Y2hpbmdTbG90
dGVkUHNldWRvRWxlbWVudCwgdHJ1ZSk7CisKKyAgICAgICAgTWF0Y2hSZXF1ZXN0IG1hdGNoUmVx
dWVzdChudWxscHRyLCBpbmNsdWRlRW1wdHlSdWxlcyk7CisgICAgICAgIGF1dG8gcnVsZVJhbmdl
ID0gbV9yZXN1bHQucmFuZ2VzLmF1dGhvclJ1bGVSYW5nZSgpOworICAgICAgICBjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QoJnNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXMsIG1hdGNoUmVxdWVz
dCwgcnVsZVJhbmdlKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogV2hhdCBpcyB0aGUgY29ycmVj
dCBvcmRlcj8KKyAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoKTsKK30KKworUnVsZVNl
dDo6UnVsZURhdGFWZWN0b3IgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNl
dWRvRWxlbWVudFJ1bGVzRm9yU2xvdChib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQoreworICAgIEFT
U0VSVChpczxIVE1MU2xvdEVsZW1lbnQ+KG1fZWxlbWVudCkpOworCisgICAgY2xlYXJNYXRjaGVk
UnVsZXMoKTsKKworICAgIG1fbW9kZSA9IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6Q29sbGVjdGlu
Z1J1bGVzOworCisgICAgLy8gTWF0Y2ggZ2xvYmFsIGF1dGhvciBydWxlcy4KKyAgICBNYXRjaFJl
cXVlc3QgbWF0Y2hSZXF1ZXN0KCZtX2F1dGhvclN0eWxlLCBpbmNsdWRlRW1wdHlSdWxlcyk7Cisg
ICAgU3R5bGVSZXNvbHZlcjo6UnVsZVJhbmdlIHJ1bGVSYW5nZSA9IG1fcmVzdWx0LnJhbmdlcy5h
dXRob3JSdWxlUmFuZ2UoKTsKKyAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QoJm1fYXV0
aG9yU3R5bGUuc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcygpLCBtYXRjaFJlcXVlc3QsIHJ1bGVS
YW5nZSk7CisKKyAgICBpZiAobV9tYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgUnVsZVNldDo6UnVsZURhdGFWZWN0b3IgcnVsZURhdGFWZWN0b3I7Cisg
ICAgZm9yIChhdXRvJiBtYXRjaGVkUnVsZSA6IG1fbWF0Y2hlZFJ1bGVzKQorICAgICAgICBydWxl
RGF0YVZlY3Rvci5hcHBlbmQoKm1hdGNoZWRSdWxlLnJ1bGVEYXRhKTsKKyAgICByZXR1cm4gcnVs
ZURhdGFWZWN0b3I7Cit9CiAjZW5kaWYKIAogdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0
Y2hVc2VyUnVsZXMoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKQEAgLTI4NCw2ICszNDUsMjAgQEAg
dm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hVQVJ1bGVzKAogICAgIHNvcnRBbmRUcmFu
c2Zlck1hdGNoZWRSdWxlcygpOwogfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCitzdGF0aWMg
Y29uc3QgQ1NTU2VsZWN0b3IqIGZpbmRTbG90dGVkUHNldWRvRWxlbWVudFNlbGVjdG9yKGNvbnN0
IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKK3sKKyAgICBmb3IgKDsgc2VsZWN0b3I7IHNlbGVjdG9y
ID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkgeworICAgICAgICBpZiAoc2VsZWN0b3ItPm1hdGNo
KCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQgJiYgc2VsZWN0b3ItPnBzZXVkb0VsZW1l
bnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRTbG90dGVkKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byogbGlzdCA9IHNlbGVjdG9yLT5zZWxlY3Rvckxpc3QoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbGlzdC0+Zmlyc3QoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCiBpbmxpbmUgYm9v
bCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVE
YXRhLCB1bnNpZ25lZCYgc3BlY2lmaWNpdHkpCiB7CiAgICAgLy8gV2Uga25vdyBhIHN1ZmZpY2ll
bnRseSBzaW1wbGUgc2luZ2xlIHBhcnQgc2VsZWN0b3IgbWF0Y2hlcyBzaW1wbHkgYmVjYXVzZSB3
ZSBmb3VuZCBpdCBmcm9tIHRoZSBydWxlIGhhc2ggd2hlbiBmaWx0ZXJpbmcgdGhlIFJ1bGVTZXQu
CkBAIC0zNTYsOSArNDMxLDE4IEBAIGlubGluZSBib29sIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpy
dWxlTWEKICAgICB9IGVsc2UKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKICAg
ICB7CisgICAgICAgIGF1dG8qIHNlbGVjdG9yID0gcnVsZURhdGEuc2VsZWN0b3IoKTsKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgaWYgKG1faXNNYXRjaGluZ1Nsb3R0ZWRQc2V1ZG9F
bGVtZW50KSB7CisgICAgICAgICAgICBzZWxlY3RvciA9IGZpbmRTbG90dGVkUHNldWRvRWxlbWVu
dFNlbGVjdG9yKHJ1bGVEYXRhLnNlbGVjdG9yKCkpOworICAgICAgICAgICAgaWYgKCFzZWxlY3Rv
cikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworI2VuZGlmCiAg
ICAgICAgIC8vIFNsb3cgcGF0aC4KICAgICAgICAgU2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hl
Y2tlcihtX2VsZW1lbnQuZG9jdW1lbnQoKSk7Ci0gICAgICAgIHNlbGVjdG9yTWF0Y2hlcyA9IHNl
bGVjdG9yQ2hlY2tlci5tYXRjaCgqcnVsZURhdGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50LCBjb250
ZXh0LCBzcGVjaWZpY2l0eSk7CisgICAgICAgIHNlbGVjdG9yTWF0Y2hlcyA9IHNlbGVjdG9yQ2hl
Y2tlci5tYXRjaCgqc2VsZWN0b3IsIG1fZWxlbWVudCwgY29udGV4dCwgc3BlY2lmaWNpdHkpOwog
ICAgIH0KIAogICAgIGNvbW1pdFN0eWxlUmVsYXRpb25zKGNvbnRleHQuc3R5bGVSZWxhdGlvbnMp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgJKHJldmlz
aW9uIDE5NzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXRj
aFVBUnVsZXMoUnVsZVNldCopOwogI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHZvaWQgbWF0
Y2hIb3N0UHNldWRvQ2xhc3NSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICB2b2lk
IG1hdGNoU2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsK
KyAgICBSdWxlU2V0OjpSdWxlRGF0YVZlY3RvciBjb2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1lbnRS
dWxlc0ZvclNsb3QoYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAjZW5kaWYKIAogICAgIHZvaWQg
Y29sbGVjdE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0JiwgU3R5bGVSZXNvbHZlcjo6
UnVsZVJhbmdlJik7CkBAIC05OCw2ICsxMDAsOSBAQCBwcml2YXRlOgogICAgIFBzZXVkb1N0eWxl
UmVxdWVzdCBtX3BzZXVkb1N0eWxlUmVxdWVzdCB7IE5PUFNFVURPIH07CiAgICAgYm9vbCBtX3Nh
bWVPcmlnaW5Pbmx5IHsgZmFsc2UgfTsKICAgICBTZWxlY3RvckNoZWNrZXI6Ok1vZGUgbV9tb2Rl
IHsgU2VsZWN0b3JDaGVja2VyOjpNb2RlOjpSZXNvbHZpbmdTdHlsZSB9OworI2lmIEVOQUJMRShT
SEFET1dfRE9NKQorICAgIGJvb2wgbV9pc01hdGNoaW5nU2xvdHRlZFBzZXVkb0VsZW1lbnQgeyBm
YWxzZSB9OworI2VuZGlmCiAKICAgICBWZWN0b3I8TWF0Y2hlZFJ1bGUsIDY0PiBtX21hdGNoZWRS
dWxlczsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAkocmV2aXNpb24gMTk3MDI3KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsNiAr
MjY2LDEyIEBAIHZvaWQgUnVsZVNldDo6YWRkUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIHUKICAgICAg
ICAgICAgIG1faG9zdFBzZXVkb0NsYXNzUnVsZXMuYXBwZW5kKHJ1bGVEYXRhKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBpZiAoc2VsZWN0b3ItPm1hdGNoKCkgPT0g
Q1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQgJiYgc2VsZWN0b3ItPnBzZXVkb0VsZW1lbnRUeXBl
KCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRTbG90dGVkKSB7CisgICAgICAgICAgICAv
LyA6OnNsb3R0ZWQgcHNldWRvIGVsZW1lbnRzIHdvcmsgYWNjcm9zcyBzaGFkb3cgYm91bmRhcnkg
bWFraW5nIGZpbHRlcmluZyBkaWZmaWN1bHQuCisgICAgICAgICAgICBydWxlRGF0YS5kaXNhYmxl
U2VsZWN0b3JGaWx0ZXJpbmcoKTsKKyAgICAgICAgICAgIG1fc2xvdHRlZFBzZXVkb0VsZW1lbnRS
dWxlcy5hcHBlbmQocnVsZURhdGEpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAj
ZW5kaWYKICAgICAgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpT
dWJTZWxlY3RvcikKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDIyLDYgKzQyOCwxMCBAQCB2b2lk
IFJ1bGVTZXQ6OnNocmlua1RvRml0KCkKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgbV9j
dWVQc2V1ZG9SdWxlcy5zaHJpbmtUb0ZpdCgpOwogI2VuZGlmCisjaWYgRU5BQkxFKFNIQURPV19E
T00pCisgICAgbV9ob3N0UHNldWRvQ2xhc3NSdWxlcy5zaHJpbmtUb0ZpdCgpOworICAgIG1fc2xv
dHRlZFBzZXVkb0VsZW1lbnRSdWxlcy5zaHJpbmtUb0ZpdCgpOworI2VuZGlmCiAgICAgbV9mb2N1
c1BzZXVkb0NsYXNzUnVsZXMuc2hyaW5rVG9GaXQoKTsKICAgICBtX3VuaXZlcnNhbFJ1bGVzLnNo
cmlua1RvRml0KCk7CiAgICAgbV9wYWdlUnVsZXMuc2hyaW5rVG9GaXQoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L1J1bGVTZXQuaAkocmV2aXNpb24gMTk3MDI3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1J1bGVT
ZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDYgKzE4NCw3IEBAIHB1YmxpYzoKICNlbmRpZgog
I2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGNvbnN0IFJ1bGVEYXRhVmVjdG9yJiBob3N0UHNl
dWRvQ2xhc3NSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1faG9zdFBzZXVkb0NsYXNzUnVsZXM7IH0K
KyAgICBjb25zdCBSdWxlRGF0YVZlY3RvciYgc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fc2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlczsgfQogI2VuZGlmCiAgICAg
Y29uc3QgUnVsZURhdGFWZWN0b3IqIGZvY3VzUHNldWRvQ2xhc3NSdWxlcygpIGNvbnN0IHsgcmV0
dXJuICZtX2ZvY3VzUHNldWRvQ2xhc3NSdWxlczsgfQogICAgIGNvbnN0IFJ1bGVEYXRhVmVjdG9y
KiB1bml2ZXJzYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3VuaXZlcnNhbFJ1bGVzOyB9CkBA
IC0yMTAsNiArMjExLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShTSEFET1dfRE9N
KQogICAgIFJ1bGVEYXRhVmVjdG9yIG1faG9zdFBzZXVkb0NsYXNzUnVsZXM7CisgICAgUnVsZURh
dGFWZWN0b3IgbV9zbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzOwogI2VuZGlmCiAgICAgUnVsZURh
dGFWZWN0b3IgbV9mb2N1c1BzZXVkb0NsYXNzUnVsZXM7CiAgICAgUnVsZURhdGFWZWN0b3IgbV91
bml2ZXJzYWxSdWxlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3Bw
CShyZXZpc2lvbiAxOTcwMjcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRp
b25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhU
TUxQcm9ncmVzc0VsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTAzOCw3ICsxMDM5LDEzIEBAIGJvb2wgU2Vs
ZWN0b3JDaGVja2VyOjpjaGVja09uZShDaGVja2luZ0MKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICNlbmRpZgotICAgIC8vICMjIyBhZGQgdGhlIHJlc3Qgb2YgdGhlIGNoZWNrcy4uLgor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGlmIChzZWxlY3Rvci5tYXRjaCgpID09IENTU1Nl
bGVjdG9yOjpQc2V1ZG9FbGVtZW50ICYmIHNlbGVjdG9yLnBzZXVkb0VsZW1lbnRUeXBlKCkgPT0g
Q1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRTbG90dGVkKSB7CisgICAgICAgIC8vIFdlIHNlZSA6
OnNsb3R0ZWQoKSBwc2V1ZG8gZWxlbWVudHMgd2hlbiBjb2xsZWN0aW5nIHNsb3R0ZWQgcnVsZXMg
ZnJvbSB0aGUgc2xvdCBzaGFkb3cgdHJlZSBvbmx5LgorICAgICAgICBBU1NFUlQoY2hlY2tpbmdD
b250ZXh0LnJlc29sdmluZ01vZGUgPT0gTW9kZTo6Q29sbGVjdGluZ1J1bGVzKTsKKyAgICAgICAg
cmV0dXJuIGlzPEhUTUxTbG90RWxlbWVudD4oZWxlbWVudCk7CisgICAgfQorI2VuZGlmCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2hhcmlu
Z1Jlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNo
YXJpbmdSZXNvbHZlci5jcHAJKHJldmlzaW9uIDE5NzAyNykKKysrIFNvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2hhcmluZ1Jlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYs
OCBAQCBjb25zdCBFbGVtZW50KiBTaGFyaW5nUmVzb2x2ZXI6OnJlc29sdmUoCiAgICAgaWYgKCFl
bGVtZW50LnBhcmVudEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0
byYgcGFyZW50RWxlbWVudCA9ICplbGVtZW50LnBhcmVudEVsZW1lbnQoKTsKKyAgICBpZiAocGFy
ZW50RWxlbWVudC5zaGFkb3dSb290KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlm
ICghcGFyZW50RWxlbWVudC5yZW5kZXJTdHlsZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAvLyBJZiB0aGUgZWxlbWVudCBoYXMgaW5saW5lIHN0eWxlIGl0IGlzIHByb2JhYmx5IHVu
aXF1ZS4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzE2MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE2LTAyLTI2ICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgOjpzbG90dGVkIHBz
ZXVkbyBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDk0NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyNzMxOTg3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9t
L2Nzcy1zY29waW5nLXNoYWRvdy1zbG90dGVkLXJ1bGUuaHRtbDoKKworICAgICAgICAgICAgRW5h
YmxlIHRoZSB0ZXN0LCBmaXggaXQgYW5kIHVwZGF0ZSBpdCB0byB0aGUgY3VycmVudCBzcGVjLgor
CisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL3Nsb3R0ZWQtcHNldWRvLWVsZW1lbnQtY3NzLXRl
eHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vc2xvdHRl
ZC1wc2V1ZG8tZWxlbWVudC1jc3MtdGV4dC5odG1sOiBBZGRlZC4KKworICAgICAgICAgICAgQWRk
IHBhcnNpbmcvY3NzVGV4dCB0ZXN0IGJhc2VkIG9uIGEgQmxpbmsgdGVzdC4KKyAgICAgICAgICAg
IFRoZXJlIGFyZSBhIGZldyBmYWlsdXJlcyBkdWUgdG8gKiBub3Qgcm91bnRyaXBwaW5nIGFuZCB0
aGUgcGFyc2VyIGJlaW5nIHNsaWdodGx5IHRvbyBsZW5pZW50LgorCisgICAgICAgICogcGxhdGZv
cm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTYtMDItMjUgIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBGb250IHNpemUgY29tcHV0ZWQgc3R5
bGUgaXMgaW5uYWNjdXJhdGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mt
c2NvcGluZy1zaGFkb3ctc2xvdHRlZC1ydWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1zbG90dGVkLXJ1bGUuaHRtbAko
cmV2aXNpb24gMTk3MDI3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29w
aW5nLXNoYWRvdy1zbG90dGVkLXJ1bGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcg
QEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4KLSAgICA8dGl0bGU+Q1NTIFNjb3Bp
bmcgLSA6c2xvdHRlZCBwZXN1ZG8gZWxlbWVudCBtdXN0IGFsbG93IHNlbGVjdGluZyBlbGVtZW50
cyBhc3NpZ25lZCB0byBhIHNsb3QgZWxlbWVudDwvdGl0bGU+CisgICAgPHRpdGxlPkNTUyBTY29w
aW5nIC0gOnNsb3R0ZWQgcHNldWRvIGVsZW1lbnQgbXVzdCBhbGxvdyBzZWxlY3RpbmcgZWxlbWVu
dHMgYXNzaWduZWQgdG8gYSBzbG90IGVsZW1lbnQ8L3RpdGxlPgogICAgIDxsaW5rIHJlbD0iYXV0
aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyIv
PgogICAgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzLXNj
b3BpbmctMS8jc2VsZWN0b3JzLWRhdGEtbW9kZWwiPgogICAgIDxsaW5rIHJlbD0ibWF0Y2giIGhy
ZWY9InJlZmVyZW5jZS9ncmVlbi1ib3guaHRtbCIvPgpAQCAtMTIsNyArMTIsOCBAQAogICAgICAg
ICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgICB3aWR0aDogMTAwcHg7CiAgICAgICAg
ICAgICBoZWlnaHQ6IDEwMHB4OwotICAgICAgICAgICAgYmFja2dyb3VuZDogcmVkOworICAgICAg
ICAgICAgY29sb3I6IHJlZDsKKyAgICAgICAgICAgIGJhY2tncm91bmQ6IGdyZWVuOwogICAgICAg
ICB9CiAgICAgICAgIG15LWhvc3QgPiBkaXYsIG5lc3RlZC1ob3N0IHsKICAgICAgICAgICAgIGRp
c3BsYXk6IGJsb2NrOwpAQCAtMjMsNyArMjQsNyBAQAogICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlv
dSBzZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3JlZW4gYm94IGJlbG93LjwvcD4gCiAgICAg
PG15LWhvc3Q+CiAgICAgICAgIDxkaXYgY2xhc3M9ImdyZWVuIj5GQUlMMTwvZGl2PgotICAgICAg
ICA8ZGl2PjxzcGFuPkZBSUwyPC9zcGFuPjwvZGl2PgorICAgICAgICA8bXllbGVtPjxzcGFuPkZB
SUwyPC9zcGFuPjwvbXllbGVtPgogICAgICAgICA8bmVzdGVkLWhvc3Q+CiAgICAgICAgICAgICA8
c3Bhbj5GQUlMMzwvc3Bhbj4KICAgICAgICAgPC9uZXN0ZWQtaG9zdD4KQEAgLTM2LDE1ICszNywx
NSBAQAogICAgICAgICB0cnkgewogICAgICAgICAgICAgdmFyIHNoYWRvd0hvc3QgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCdteS1ob3N0Jyk7CiAgICAgICAgICAgICBzaGFkb3dSb290ID0gc2hh
ZG93SG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVuJ30pOwotICAgICAgICAgICAgc2hhZG93
Um9vdC5pbm5lckhUTUwgPSAnPHNsb3Q+PC9zbG90PjxzdHlsZT4gOjpzbG90dGVkID4gLmdyZWVu
LCA6OnNsb3R0ZWQgc3BhbiB7IGNvbG9yOmdyZWVuOyB9IDwvc3R5bGU+JzsKKyAgICAgICAgICAg
IHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzbG90Pjwvc2xvdD48c3R5bGU+IDo6c2xvdHRlZCgu
Z3JlZW4pLCA6OnNsb3R0ZWQobXllbGVtKSB7IGNvbG9yOmdyZWVuOyB9IDwvc3R5bGU+JzsKIAog
ICAgICAgICAgICAgc2hhZG93SG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ25lc3RlZC1o
b3N0Jyk7CiAgICAgICAgICAgICBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRhY2hTaGFkb3co
e21vZGU6ICdvcGVuJ30pOwotICAgICAgICAgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPHNs
b3Q+PC9zbG90Pic7CisgICAgICAgICAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c3R5bGU+
IC5teWRpdiA6OnNsb3R0ZWQoKikgeyBjb2xvcjpncmVlbjsgfSA8L3N0eWxlPjxkaXYgY2xhc3M9
bXlkaXY+PHNsb3Q+PC9zbG90PjwvZGl2Pic7CiAKICAgICAgICAgICAgIHNoYWRvd0hvc3QgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhbm90aGVyLWhvc3QnKTsKICAgICAgICAgICAgIHNoYWRv
d1Jvb3QgPSBzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7Ci0gICAgICAg
ICAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c3R5bGU+IDo6c2xvdHRlZCB7IGNvbG9yOmdy
ZWVuOyB9IDwvc3R5bGU+PHNsb3Q+PC9zbG90Pic7CisgICAgICAgICAgICBzaGFkb3dSb290Lmlu
bmVySFRNTCA9ICc8c3R5bGU+IDo6c2xvdHRlZCgqKSB7IGNvbG9yOmdyZWVuOyB9IDwvc3R5bGU+
PHNsb3Q+PC9zbG90Pic7CiAgICAgICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbikgewogICAgICAgICAg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShleGNl
cHRpb24pKTsKICAgICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3Ns
b3R0ZWQtcHNldWRvLWVsZW1lbnQtY3NzLXRleHQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zbG90dGVkLXBzZXVkby1lbGVtZW50LWNzcy10
ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93
LWRvbS9zbG90dGVkLXBzZXVkby1lbGVtZW50LWNzcy10ZXh0LWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDI3IEBACisKK1BBU1MgOjpzbG90dGVkIHsgZGlzcGxheTogYmxv
Y2s7IH0gCitQQVNTIDo6c2xvdHRlZCgpIHsgZGlzcGxheTogYmxvY2s7IH0gCitQQVNTIDo6c2xv
dHRlZCgqKSB7IGRpc3BsYXk6IGJsb2NrOyB9IAorRkFJTCAqOjpzbG90dGVkKCopIHsgZGlzcGxh
eTogYmxvY2s7IH0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIio6OnNsb3R0ZWQoKikgeyBkaXNw
bGF5OiBibG9jazsgfSIgYnV0IGdvdCAiOjpzbG90dGVkKCopIHsgZGlzcGxheTogYmxvY2s7IH0i
CitQQVNTIDo6c2xvdHRlZChkaXYpIHsgZGlzcGxheTogYmxvY2s7IH0gCitQQVNTIDo6c2xvdHRl
ZCggZGl2KSB7IGRpc3BsYXk6IGJsb2NrOyB9IAorUEFTUyA6OnNsb3R0ZWQoZGl2ICkgeyBkaXNw
bGF5OiBibG9jazsgfSAKK1BBU1MgOjpzbG90dGVkKGRpdjo6YmVmb3JlKSB7IGRpc3BsYXk6IGJs
b2NrOyB9IAorUEFTUyAuZm9vOjpzbG90dGVkKGRpdikgeyBjb2xvcjogYmx1ZTsgfSAKK1BBU1Mg
I2lkOjpzbG90dGVkKCopIHsgY29sb3I6IGJsdWU7IH0gCitQQVNTIFthdHRyPWZvb106OnNsb3R0
ZWQoKikgeyBjb2xvcjogYmx1ZTsgfSAKK1BBU1MgLmZvbyAuYmFyOjpzbG90dGVkKGRpdikgeyBj
b2xvcjogYmx1ZTsgfSAKK0ZBSUwgLmZvbzo6YmVmb3JlIC5iYXI6OnNsb3R0ZWQoZGl2KSB7IGNv
bG9yOiBibHVlOyB9IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIiIGJ1dCBnb3QgIi5mb286OmJl
Zm9yZSAuYmFyOjpzbG90dGVkKGRpdikgeyBjb2xvcjogYmx1ZTsgfSIKK0ZBSUwgLmZvbzo6c2xv
dHRlZChkaXYpIC5iYXIgeyBjb2xvcjogYmx1ZTsgfSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAi
IiBidXQgZ290ICIuZm9vOjpzbG90dGVkKGRpdikgLmJhciB7IGNvbG9yOiBibHVlOyB9IgorUEFT
UyA6OnNsb3R0ZWQoZGl2LCBkaXYpIHsgY29sb3I6IGJsdWU7IH0gCitQQVNTIDo6c2xvdHRlZChk
aXYgZGl2KSB7IGNvbG9yOiBibHVlOyB9IAorUEFTUyBzbG90OjpzbG90dGVkKC5ncmVlbikgeyBj
b2xvcjogZ3JlZW47IH0gCitQQVNTIHNsb3Q6OnNsb3R0ZWQoI2dyZWVuKSB7IGNvbG9yOiBncmVl
bjsgfSAKK1BBU1Mgc2xvdDo6c2xvdHRlZChbZ3JlZW49Z3JlZW5dKSB7IGNvbG9yOiBncmVlbjsg
fSAKK1BBU1Mgc2xvdDo6c2xvdHRlZChkaXYuZ3JlZW4pIHsgY29sb3I6IGdyZWVuOyB9IAorUEFT
UyBkaXYgOjpzbG90dGVkKGRpdikgeyBjb2xvcjogcmVkOyB9IAorUEFTUyBkaXYgKyBzbG90Ojpz
bG90dGVkKGRpdikgeyBjb2xvcjogcmVkOyB9IAorUEFTUyBzcGFuOjpzbG90dGVkKCopIHsgY29s
b3I6IHJlZDsgfSAKK0ZBSUwgOjpzbG90dGVkKHNwYW4pOjpzbG90dGVkKHNwYW4pIHsgY29sb3I6
IHJlZDsgfSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiIiBidXQgZ290ICI6OnNsb3R0ZWQoc3Bh
bik6OnNsb3R0ZWQoc3BhbikgeyBjb2xvcjogcmVkOyB9IgorUEFTUyA6OnNsb3R0ZWQoOjpzbG90
dGVkKGRpdikpIHsgY29sb3I6IHJlZDsgfSAKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFk
b3ctZG9tL3Nsb3R0ZWQtcHNldWRvLWVsZW1lbnQtY3NzLXRleHQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc2xvdHRlZC1wc2V1ZG8tZWxlbWVudC1jc3Mt
dGV4dC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3Ns
b3R0ZWQtcHNldWRvLWVsZW1lbnQtY3NzLXRleHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDc2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPScuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Jy4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIHJ1bGVzID0gWwor
Ijo6c2xvdHRlZCB7IGRpc3BsYXk6IGJsb2NrOyB9IiwgLyogaW52YWxpZCAtIG5vIHBhcmFtZXRl
ciAqLworIjo6c2xvdHRlZCgpIHsgZGlzcGxheTogYmxvY2s7IH0iLCAvKiBpbnZhbGlkIC0gZW1w
dHkgcGFyYW1ldGVyICovCisiOjpzbG90dGVkKCopIHsgZGlzcGxheTogYmxvY2s7IH0iLAorIio6
OnNsb3R0ZWQoKikgeyBkaXNwbGF5OiBibG9jazsgfSIsCisiOjpzbG90dGVkKGRpdikgeyBkaXNw
bGF5OiBibG9jazsgfSIsIC8qIGV4cGVjdHMgdW5pdmVyc2FsIHNlbGVjdG9yICgqKSBvbiB0aGUg
bGVmdCBpbiBjc3NUZXh0ICovCisiOjpzbG90dGVkKCBkaXYpIHsgZGlzcGxheTogYmxvY2s7IH0i
LCAvKiBhbGxvdyBhIHNwYWNlIG9uIGxlZnQgKi8KKyI6OnNsb3R0ZWQoZGl2ICkgeyBkaXNwbGF5
OiBibG9jazsgfSIsIC8qIGFsbG93IGEgc3BhY2Ugb24gcmlnaHQgKi8KKyI6OnNsb3R0ZWQoZGl2
OjpiZWZvcmUpIHsgZGlzcGxheTogYmxvY2s7IH0iLCAvKiBoYXZpbmcgYSBwc2V1ZG8gZWxlbWVu
dCBpbiAoKSBpcyBpbnZhbGlkICovCisiLmZvbzo6c2xvdHRlZChkaXYpIHsgY29sb3I6IGJsdWU7
IH0iLAorIiNpZDo6c2xvdHRlZCgqKSB7IGNvbG9yOiBibHVlOyB9IiwKKyJbYXR0cj1mb29dOjpz
bG90dGVkKCopIHsgY29sb3I6IGJsdWU7IH0iLAorIi5mb28gLmJhcjo6c2xvdHRlZChkaXYpIHsg
Y29sb3I6IGJsdWU7IH0iLAorIi5mb286OmJlZm9yZSAuYmFyOjpzbG90dGVkKGRpdikgeyBjb2xv
cjogYmx1ZTsgfSIsIC8qIGludmFsaWQsIG9ubHkgb25lIHBzZXVkbyBlbGVtZW50IGlzIGFsbG93
ZWQgYXQgdGhlIHJpZ2h0bW9zdCBjb21wb3VuZCAqLworIi5mb286OnNsb3R0ZWQoZGl2KSAuYmFy
IHsgY29sb3I6IGJsdWU7IH0iLCAvKiBpbnZhbGlkLCBzYW1lIGFzIGFib3ZlICovCisiOjpzbG90
dGVkKGRpdiwgZGl2KSB7IGNvbG9yOiBibHVlOyB9IiwgLyogaW52YWxpZCAtIHNlbGVjdG9yIGxp
c3QgKi8KKyI6OnNsb3R0ZWQoZGl2IGRpdikgeyBjb2xvcjogYmx1ZTsgfSIsIC8qIGludmFsaWQg
LSBjb21wbGV4IHNlbGVjdG9yIChjb21iaW5hdG9yIGlzIHVzZWQpICovCisic2xvdDo6c2xvdHRl
ZCguZ3JlZW4pIHsgY29sb3I6IGdyZWVuOyB9IiwKKyJzbG90OjpzbG90dGVkKCNncmVlbikgeyBj
b2xvcjogZ3JlZW47IH0iLAorInNsb3Q6OnNsb3R0ZWQoW2dyZWVuPWdyZWVuXSkgeyBjb2xvcjog
Z3JlZW47IH0iLAorInNsb3Q6OnNsb3R0ZWQoZGl2LmdyZWVuKSB7IGNvbG9yOiBncmVlbjsgfSIs
CisiZGl2IDo6c2xvdHRlZChkaXYpIHsgY29sb3I6IHJlZDsgfSIsCisiZGl2ICsgc2xvdDo6c2xv
dHRlZChkaXYpIHsgY29sb3I6IHJlZDsgfSIsCisic3Bhbjo6c2xvdHRlZCgqKSB7IGNvbG9yOiBy
ZWQ7IH0iLCAvKiBuZXZlciBtYXRjaGVzLCBidXQgdmFsaWQgYXMgYSBzZWxlY3RvciAqLworIjo6
c2xvdHRlZChzcGFuKTo6c2xvdHRlZChzcGFuKSB7IGNvbG9yOiByZWQ7IH0iLCAvKiBpbnZhbGlk
ICovCisiOjpzbG90dGVkKDo6c2xvdHRlZChkaXYpKSB7IGNvbG9yOiByZWQ7IH0iIC8qIGludmFs
aWQgKi8KK107CisKK3ZhciBleHBlY3RlZENTU1RleHRzID0gWworIiIsIAorIiIsCisiOjpzbG90
dGVkKCopIHsgZGlzcGxheTogYmxvY2s7IH0iLAorIio6OnNsb3R0ZWQoKikgeyBkaXNwbGF5OiBi
bG9jazsgfSIsCisiOjpzbG90dGVkKGRpdikgeyBkaXNwbGF5OiBibG9jazsgfSIsCisiOjpzbG90
dGVkKGRpdikgeyBkaXNwbGF5OiBibG9jazsgfSIsIAorIjo6c2xvdHRlZChkaXYpIHsgZGlzcGxh
eTogYmxvY2s7IH0iLAorIiIsCisiLmZvbzo6c2xvdHRlZChkaXYpIHsgY29sb3I6IGJsdWU7IH0i
LAorIiNpZDo6c2xvdHRlZCgqKSB7IGNvbG9yOiBibHVlOyB9IiwKKyJbYXR0cj1cImZvb1wiXTo6
c2xvdHRlZCgqKSB7IGNvbG9yOiBibHVlOyB9IiwKKyIuZm9vIC5iYXI6OnNsb3R0ZWQoZGl2KSB7
IGNvbG9yOiBibHVlOyB9IiwKKyIiLAorIiIsCisiIiwKKyIiLAorInNsb3Q6OnNsb3R0ZWQoLmdy
ZWVuKSB7IGNvbG9yOiBncmVlbjsgfSIsCisic2xvdDo6c2xvdHRlZCgjZ3JlZW4pIHsgY29sb3I6
IGdyZWVuOyB9IiwKKyJzbG90OjpzbG90dGVkKFtncmVlbj1cImdyZWVuXCJdKSB7IGNvbG9yOiBn
cmVlbjsgfSIsCisic2xvdDo6c2xvdHRlZChkaXYuZ3JlZW4pIHsgY29sb3I6IGdyZWVuOyB9IiwK
KyJkaXYgOjpzbG90dGVkKGRpdikgeyBjb2xvcjogcmVkOyB9IiwKKyJkaXYgKyBzbG90OjpzbG90
dGVkKGRpdikgeyBjb2xvcjogcmVkOyB9IiwKKyJzcGFuOjpzbG90dGVkKCopIHsgY29sb3I6IHJl
ZDsgfSIsCisiIiwKKyIiLAorXTsKKworZnVuY3Rpb24gcnVsZUNTU1RleHQocnVsZSkKK3sKKyAg
ICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOworICAgIHN0eWxl
LmlubmVyVGV4dCA9IHJ1bGU7CisgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7
CisgICAgaWYgKHN0eWxlLnNoZWV0LmNzc1J1bGVzLmxlbmd0aCA9PSAwKQorICAgICAgICByZXR1
cm4gIiI7CisgICAgcmV0dXJuIHN0eWxlLnNoZWV0LmNzc1J1bGVzLml0ZW0oMCkuY3NzVGV4dDsK
K30KKworZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7ICsraSkgeworICAgIHRlc3Qo
KCkgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKHJ1bGVDU1NUZXh0KHJ1bGVzW2ldKSwgZXhw
ZWN0ZWRDU1NUZXh0c1tpXSk7CisgICAgfSwgcnVsZXNbaV0pOworfQorPC9zY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTk3
MDI3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtp
bmcgY29weSkKQEAgLTEyNTAsNyArMTI1MCw2IEBAIHdlYmtpdC5vcmcvYi8xNDkxMjggZmFzdC90
ZXh0L2NvbnRyb2wtY2gKIAogd2Via2l0Lm9yZy9iLzE0ODY5NSBmYXN0L3NoYWRvdy1kb20gWyBQ
YXNzIF0KIHdlYmtpdC5vcmcvYi8xNDk0NDAgZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNo
YWRvdy1ob3N0LWZ1bmN0aW9uYWwtcnVsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMTQ5NDQxIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctc2xvdHRl
ZC1ydWxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNDk0NDEgZmFz
dC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1zbG90LWRpc3BsYXktb3ZlcnJpZGUuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogCiAjIFRvdWNoIGV2ZW50cyBpcyBub3QgZW5hYmxlZCBv
biBNYWMK
</data>
<flag name="review"
          id="297085"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>