<?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>232479</bug_id>
          
          <creation_ts>2021-10-29 00:53:29 -0700</creation_ts>
          <short_desc>[JSC] Public Class Field initialization is slow</short_desc>
          <delta_ts>2021-11-29 12:04:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=198330</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Rob Palmer">rob.palmer2</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ashvayka</cc>
    
    <cc>benjamin</cc>
    
    <cc>caitp</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1809996</commentid>
    <comment_count>0</comment_count>
      <attachid>442791</attachid>
    <who name="Rob Palmer">rob.palmer2</who>
    <bug_when>2021-10-29 00:53:29 -0700</bug_when>
    <thetext>Created attachment 442791
Field Initialization Benchmark

I benchmarked ES2022 class field initialization time.

  https://gist.github.com/robpalme/a9ff3e4764b764d7dc24743816d8a624#gistcomment-3944128

In Chrome and Firefox, public field initialization has been optimized to have similar performance to private fields.  Performance is also similar to assigning to `this` inside the constructor.

In latest Safari Tech Preview 134, performance of public field initialization is 12x worse than both private fields and constructor assignment.

- Classic Constructor Assignments:  38ms
- Public Fields:  462ms
- Private Fields:  33ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811113</commentid>
    <comment_count>1</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2021-11-02 07:58:24 -0700</bug_when>
    <thetext>Currently, public fields are implemented in LLint as op_define_data_property and op_define_accessor_property, both of which seem to be implemented only as slow paths with no caching, and as C++ calls with no caching in each JIT.

It may be worth adding some caching and inlining for these operations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812085</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-05 00:54:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/85050031&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817579</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-23 23:01:52 -0800</bug_when>
    <thetext>*** Bug 198330 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817585</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-23 23:35:07 -0800</bug_when>
    <thetext>Yeah, looks like public-class-field implementation lacks this optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817586</commentid>
    <comment_count>5</comment_count>
      <attachid>445071</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-23 23:39:26 -0800</bug_when>
    <thetext>Created attachment 445071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817638</commentid>
    <comment_count>6</comment_count>
      <attachid>445071</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2021-11-24 06:50:32 -0800</bug_when>
    <thetext>Comment on attachment 445071
Patch

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

&gt; Source/JavaScriptCore/runtime/JSObject.h:1590
&gt; +    return putDirectInternal&lt;PutModeDefineOwnPropertyIgnoringExtensibility&gt;(vm, propertyName, value, attributes, slot);

Under which conditions do we end up with the &quot;IgnoringExtensibility&quot; flag? Is this a type speculation to avoid unnecessary checks in DFG?

Under normal circumstances, defining public class fields should be concerned with extensibility, particularly for derived classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817736</commentid>
    <comment_count>7</comment_count>
      <attachid>445071</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-24 22:14:21 -0800</bug_when>
    <thetext>Comment on attachment 445071
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/JSObject.h:1590
&gt;&gt; +    return putDirectInternal&lt;PutModeDefineOwnPropertyIgnoringExtensibility&gt;(vm, propertyName, value, attributes, slot);
&gt; 
&gt; Under which conditions do we end up with the &quot;IgnoringExtensibility&quot; flag? Is this a type speculation to avoid unnecessary checks in DFG?
&gt; 
&gt; Under normal circumstances, defining public class fields should be concerned with extensibility, particularly for derived classes

For now, I would like to keep the current putDirect semantics since this patch&apos;s intention is not changing that.
Probably, I&apos;ll look into it to remove that hack for putDirect. But for now, I keep that semantics and adding the new cleaner one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817737</commentid>
    <comment_count>8</comment_count>
      <attachid>445119</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-24 22:15:20 -0800</bug_when>
    <thetext>Created attachment 445119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817738</commentid>
    <comment_count>9</comment_count>
      <attachid>445120</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-24 22:18:12 -0800</bug_when>
    <thetext>Created attachment 445120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817739</commentid>
    <comment_count>10</comment_count>
      <attachid>445121</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-24 22:27:22 -0800</bug_when>
    <thetext>Created attachment 445121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817868</commentid>
    <comment_count>11</comment_count>
      <attachid>445163</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-25 17:37:26 -0800</bug_when>
    <thetext>Created attachment 445163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818240</commentid>
    <comment_count>12</comment_count>
      <attachid>445163</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-11-29 09:23:38 -0800</bug_when>
    <thetext>Comment on attachment 445163
Patch

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

r=me with a tiny nit on FIXME.

So nice to see generator.emitCallDefineProperty() gone! I&apos;ve evaluated pretty much the same approach to replace them in ClassExprNode::emitBytecode() but that didn&apos;t result in microbenchmark progression.

Also, really cool to have JSObject::putDirectInternal() return an error message, improving developer experience with JSC.

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.h:202
&gt; +    if (LIKELY(propertyName != vm.propertyNames-&gt;underscoreProto &amp;&amp; !structure-&gt;hasReadOnlyOrGetterSetterPropertiesExcludingProto() &amp;&amp; (isJSFunction || structure-&gt;classInfo()-&gt;methodTable.defineOwnProperty == &amp;JSObject::defineOwnProperty))) {

This handle non-reified accessors, great!

&gt; Source/JavaScriptCore/runtime/JSObjectInlines.h:285
&gt;      // FIXME: For a failure due to non-extensible structure, the error message is misleading

We can remove this FIXME now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818381</commentid>
    <comment_count>13</comment_count>
      <attachid>445163</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-29 12:02:51 -0800</bug_when>
    <thetext>Comment on attachment 445163
Patch

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

Thank you!

&gt;&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.h:202
&gt;&gt; +    if (LIKELY(propertyName != vm.propertyNames-&gt;underscoreProto &amp;&amp; !structure-&gt;hasReadOnlyOrGetterSetterPropertiesExcludingProto() &amp;&amp; (isJSFunction || structure-&gt;classInfo()-&gt;methodTable.defineOwnProperty == &amp;JSObject::defineOwnProperty))) {
&gt; 
&gt; This handle non-reified accessors, great!

:D

&gt;&gt; Source/JavaScriptCore/runtime/JSObjectInlines.h:285
&gt;&gt;      // FIXME: For a failure due to non-extensible structure, the error message is misleading
&gt; 
&gt; We can remove this FIXME now.

NICE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818384</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-29 12:04:21 -0800</bug_when>
    <thetext>Committed r286251 (244614@main): &lt;https://commits.webkit.org/244614@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>442791</attachid>
            <date>2021-10-29 00:53:29 -0700</date>
            <delta_ts>2021-10-29 00:53:29 -0700</delta_ts>
            <desc>Field Initialization Benchmark</desc>
            <filename>field-init-perf.js</filename>
            <type>text/javascript</type>
            <size>3703</size>
            <attacher name="Rob Palmer">rob.palmer2</attacher>
            
              <data encoding="base64">Y2xhc3MgQ2xhc3NpY19Db25zdHJ1Y3Rvcl9Bc3NpZ25tZW50cyB7CiAgICBjb25zdHJ1Y3Rvcigp
IHsKICAgICAgICB0aGlzLnZlcmlmaWNhdGlvbj0xOwogICAgICAgIAogICAgICAgIHRoaXMuXzAw
PTE7IHRoaXMuXzAxPTE7IHRoaXMuXzAyPTE7IHRoaXMuXzAzPTE7IHRoaXMuXzA0PTE7IHRoaXMu
XzA1PTE7IHRoaXMuXzA2PTE7IHRoaXMuXzA3PTE7IHRoaXMuXzA4PTE7IHRoaXMuXzA5PTE7CiAg
ICAgICAgdGhpcy5fMTA9MTsgdGhpcy5fMTE9MTsgdGhpcy5fMTI9MTsgdGhpcy5fMTM9MTsgdGhp
cy5fMTQ9MTsgdGhpcy5fMTU9MTsgdGhpcy5fMTY9MTsgdGhpcy5fMTc9MTsgdGhpcy5fMTg9MTsg
dGhpcy5fMTk9MTsKICAgICAgICB0aGlzLl8yMD0xOyB0aGlzLl8yMT0xOyB0aGlzLl8yMj0xOyB0
aGlzLl8yMz0xOyB0aGlzLl8yND0xOyB0aGlzLl8yNT0xOyB0aGlzLl8yNj0xOyB0aGlzLl8yNz0x
OyB0aGlzLl8yOD0xOyB0aGlzLl8yOT0xOwogICAgICAgIHRoaXMuXzMwPTE7IHRoaXMuXzMxPTE7
IHRoaXMuXzMyPTE7IHRoaXMuXzMzPTE7IHRoaXMuXzM0PTE7IHRoaXMuXzM1PTE7IHRoaXMuXzM2
PTE7IHRoaXMuXzM3PTE7IHRoaXMuXzM4PTE7IHRoaXMuXzM5PTE7CiAgICAgICAgdGhpcy5fNDA9
MTsgdGhpcy5fNDE9MTsgdGhpcy5fNDI9MTsgdGhpcy5fNDM9MTsgdGhpcy5fNDQ9MTsgdGhpcy5f
NDU9MTsgdGhpcy5fNDY9MTsgdGhpcy5fNDc9MTsgdGhpcy5fNDg9MTsgdGhpcy5fNDk9MTsKICAg
ICAgICB0aGlzLl81MD0xOyB0aGlzLl81MT0xOyB0aGlzLl81Mj0xOyB0aGlzLl81Mz0xOyB0aGlz
Ll81ND0xOyB0aGlzLl81NT0xOyB0aGlzLl81Nj0xOyB0aGlzLl81Nz0xOyB0aGlzLl81OD0xOyB0
aGlzLl81OT0xOwogICAgICAgIHRoaXMuXzYwPTE7IHRoaXMuXzYxPTE7IHRoaXMuXzYyPTE7IHRo
aXMuXzYzPTE7IHRoaXMuXzY0PTE7IHRoaXMuXzY1PTE7IHRoaXMuXzY2PTE7IHRoaXMuXzY3PTE7
IHRoaXMuXzY4PTE7IHRoaXMuXzY5PTE7CiAgICAgICAgdGhpcy5fNzA9MTsgdGhpcy5fNzE9MTsg
dGhpcy5fNzI9MTsgdGhpcy5fNzM9MTsgdGhpcy5fNzQ9MTsgdGhpcy5fNzU9MTsgdGhpcy5fNzY9
MTsgdGhpcy5fNzc9MTsgdGhpcy5fNzg9MTsgdGhpcy5fNzk9MTsKICAgICAgICB0aGlzLl84MD0x
OyB0aGlzLl84MT0xOyB0aGlzLl84Mj0xOyB0aGlzLl84Mz0xOyB0aGlzLl84ND0xOyB0aGlzLl84
NT0xOyB0aGlzLl84Nj0xOyB0aGlzLl84Nz0xOyB0aGlzLl84OD0xOyB0aGlzLl84OT0xOwogICAg
ICAgIHRoaXMuXzkwPTE7IHRoaXMuXzkxPTE7IHRoaXMuXzkyPTE7IHRoaXMuXzkzPTE7IHRoaXMu
Xzk0PTE7IHRoaXMuXzk1PTE7IHRoaXMuXzk2PTE7IHRoaXMuXzk3PTE7IHRoaXMuXzk4PTE7IHRo
aXMuXzk5PTE7CiAgICB9Cn0KCmNsYXNzIEVTMjAyMl9QdWJsaWNfRmllbGRzIHsKICAgIHZlcmlm
aWNhdGlvbj0xOwogICAgCiAgICBfMDA9MTsgXzAxPTE7IF8wMj0xOyBfMDM9MTsgXzA0PTE7IF8w
NT0xOyBfMDY9MTsgXzA3PTE7IF8wOD0xOyBfMDk9MTsKICAgIF8xMD0xOyBfMTE9MTsgXzEyPTE7
IF8xMz0xOyBfMTQ9MTsgXzE1PTE7IF8xNj0xOyBfMTc9MTsgXzE4PTE7IF8xOT0xOwogICAgXzIw
PTE7IF8yMT0xOyBfMjI9MTsgXzIzPTE7IF8yND0xOyBfMjU9MTsgXzI2PTE7IF8yNz0xOyBfMjg9
MTsgXzI5PTE7CiAgICBfMzA9MTsgXzMxPTE7IF8zMj0xOyBfMzM9MTsgXzM0PTE7IF8zNT0xOyBf
MzY9MTsgXzM3PTE7IF8zOD0xOyBfMzk9MTsKICAgIF80MD0xOyBfNDE9MTsgXzQyPTE7IF80Mz0x
OyBfNDQ9MTsgXzQ1PTE7IF80Nj0xOyBfNDc9MTsgXzQ4PTE7IF80OT0xOwogICAgXzUwPTE7IF81
MT0xOyBfNTI9MTsgXzUzPTE7IF81ND0xOyBfNTU9MTsgXzU2PTE7IF81Nz0xOyBfNTg9MTsgXzU5
PTE7CiAgICBfNjA9MTsgXzYxPTE7IF82Mj0xOyBfNjM9MTsgXzY0PTE7IF82NT0xOyBfNjY9MTsg
XzY3PTE7IF82OD0xOyBfNjk9MTsKICAgIF83MD0xOyBfNzE9MTsgXzcyPTE7IF83Mz0xOyBfNzQ9
MTsgXzc1PTE7IF83Nj0xOyBfNzc9MTsgXzc4PTE7IF83OT0xOwogICAgXzgwPTE7IF84MT0xOyBf
ODI9MTsgXzgzPTE7IF84ND0xOyBfODU9MTsgXzg2PTE7IF84Nz0xOyBfODg9MTsgXzg5PTE7CiAg
ICBfOTA9MTsgXzkxPTE7IF85Mj0xOyBfOTM9MTsgXzk0PTE7IF85NT0xOyBfOTY9MTsgXzk3PTE7
IF85OD0xOyBfOTk9MTsKfQoKY2xhc3MgRVMyMDIyX1ByaXZhdGVfRmllbGRzIHsKICAgIHZlcmlm
aWNhdGlvbj0xOwogICAgCiAgICAjXzAwPTE7ICNfMDE9MTsgI18wMj0xOyAjXzAzPTE7ICNfMDQ9
MTsgI18wNT0xOyAjXzA2PTE7ICNfMDc9MTsgI18wOD0xOyAjXzA5PTE7CiAgICAjXzEwPTE7ICNf
MTE9MTsgI18xMj0xOyAjXzEzPTE7ICNfMTQ9MTsgI18xNT0xOyAjXzE2PTE7ICNfMTc9MTsgI18x
OD0xOyAjXzE5PTE7CiAgICAjXzIwPTE7ICNfMjE9MTsgI18yMj0xOyAjXzIzPTE7ICNfMjQ9MTsg
I18yNT0xOyAjXzI2PTE7ICNfMjc9MTsgI18yOD0xOyAjXzI5PTE7CiAgICAjXzMwPTE7ICNfMzE9
MTsgI18zMj0xOyAjXzMzPTE7ICNfMzQ9MTsgI18zNT0xOyAjXzM2PTE7ICNfMzc9MTsgI18zOD0x
OyAjXzM5PTE7CiAgICAjXzQwPTE7ICNfNDE9MTsgI180Mj0xOyAjXzQzPTE7ICNfNDQ9MTsgI180
NT0xOyAjXzQ2PTE7ICNfNDc9MTsgI180OD0xOyAjXzQ5PTE7CiAgICAjXzUwPTE7ICNfNTE9MTsg
I181Mj0xOyAjXzUzPTE7ICNfNTQ9MTsgI181NT0xOyAjXzU2PTE7ICNfNTc9MTsgI181OD0xOyAj
XzU5PTE7CiAgICAjXzYwPTE7ICNfNjE9MTsgI182Mj0xOyAjXzYzPTE7ICNfNjQ9MTsgI182NT0x
OyAjXzY2PTE7ICNfNjc9MTsgI182OD0xOyAjXzY5PTE7CiAgICAjXzcwPTE7ICNfNzE9MTsgI183
Mj0xOyAjXzczPTE7ICNfNzQ9MTsgI183NT0xOyAjXzc2PTE7ICNfNzc9MTsgI183OD0xOyAjXzc5
PTE7CiAgICAjXzgwPTE7ICNfODE9MTsgI184Mj0xOyAjXzgzPTE7ICNfODQ9MTsgI184NT0xOyAj
Xzg2PTE7ICNfODc9MTsgI184OD0xOyAjXzg5PTE7CiAgICAjXzkwPTE7ICNfOTE9MTsgI185Mj0x
OyAjXzkzPTE7ICNfOTQ9MTsgI185NT0xOyAjXzk2PTE7ICNfOTc9MTsgI185OD0xOyAjXzk5PTE7
Cn0KCgovLyBCZW5jaG1hcmtpbmcKCmNvbnN0IElURVJBVElPTlMgPSAxMDBfMDAwOwpjb25zb2xl
LmxvZyhgVGltZSB0byBjb25zdHJ1Y3QgJHtJVEVSQVRJT05TfSBpbnN0YW5jZXMgdGhhdCBlYWNo
IGluaXRpYWxpemUgMTAwIGZpZWxkcyB1c2luZyBkaWZmZXJlbnQgdGVjaG5pcXVlcy5gKTsKCmZ1
bmN0aW9uIGJlbmNoICh0ZXN0Q2xhc3MpIHsKICAgIHZhciBzdGFydCA9IHBlcmZvcm1hbmNlLm5v
dygpOwogICAgdmFyIGFjYyA9IDA7CiAgICBmb3IgKHZhciBpPTA7IGk8SVRFUkFUSU9OUzsgaSsr
KSB7CiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgdGVzdENsYXNzKCkKICAgICAgICBhY2Mg
Kz0gaW5zdGFuY2UudmVyaWZpY2F0aW9uOwogICAgfQogICAgdmFyIGR1cmF0aW9uID0gcGVyZm9y
bWFuY2Uubm93KCkgLSBzdGFydDsKICAgIAogICAgY29uc29sZS5sb2coYCR7dGVzdENsYXNzLm5h
bWV9IHRvb2sgJHtNYXRoLmNlaWwoZHVyYXRpb24pfW1zICAoaG9uZXN0OiR7YWNjPT09SVRFUkFU
SU9OU30pYCk7Cn0KCmJlbmNoKENsYXNzaWNfQ29uc3RydWN0b3JfQXNzaWdubWVudHMpOwpiZW5j
aChFUzIwMjJfUHVibGljX0ZpZWxkcyk7CmJlbmNoKEVTMjAyMl9Qcml2YXRlX0ZpZWxkcyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445071</attachid>
            <date>2021-11-23 23:39:26 -0800</date>
            <delta_ts>2021-11-24 22:15:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232479-20211124023925.patch</filename>
            <type>text/plain</type>
            <size>25231</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZjJhM2Q1MWYxMGQ1YzZlYmM0MWNkN2RmNzUwOTQzZDNlNzMzNjAzLi42NGMzOGZjYjllMmI1ZDdj
N2YwZDYyYjhlMjkwNzMyOWM3YjVhNmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAyMS0xMS0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFB1YmxpYyBDbGFzcyBGaWVsZCBpbml0aWFsaXphdGlvbiBpcyBz
bG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0
NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGFz
cyBwdWJsaWMgZmllbGQgaW1wbGVtZW50YXRpb24gZGlkIG5vdCBoYXZlIG9wdGltaXphdGlvbiBm
b3IgaW5pdGlhbGl6aW5nIGNsYXNzIGZpZWxkczogdXNpbmcKKyAgICAgICAgcnVudGltZSBjYWxs
IHRvIGluaXRpYWxpemUgZmllbGRzIGluc3RlYWQgb2YgSUMuIFRoaXMgcGF0Y2ggbGV2ZXJhZ2Vz
IHB1dF9ieV9pZCAvIHB1dF9ieV92YWwgd2l0aAorICAgICAgICBkaXJlY3QgZmxhZyBzbyB0aGF0
IHdlIGNhbiBlbmFibGUgSUMuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUb1QgICAgICAgICAgICAgICAgICAgICBQYXRjaGVk
CisKKyAgICAgICAgY2xhc3MtZmllbGRzLWNsYXNzaWMtY29uc3RydWN0b3ItYXNzaWdubWVudHMK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
Ny4xNDkxKy0yLjYzMjcgICAgICAgICAgIDE1LjA5MDYrLTAuNjc5NSAgICAgICAgICBtaWdodCBi
ZSAxLjEzNjR4IGZhc3RlcgorICAgICAgICBjbGFzcy1maWVsZHMtcHVibGljLWZpZWxkcyAgICAg
ICAgICAgICAgICAgICAgNDA5LjQzMjgrLTguMzE0MCAgICAgXiAgICAgMjAuMjc1MistMi4wODM1
ICAgICAgICBeIGRlZmluaXRlbHkgMjAuMTkzOHggZmFzdGVyCisgICAgICAgIGNsYXNzLWZpZWxk
cy1wcml2YXRlLWZpZWxkcyAgICAgICAgICAgICAgICAgICAgMjcuMjYyMSstMS4zODU4ICAgICAg
ICAgICAyNS4xODEwKy0zLjk4NzMgICAgICAgICAgbWlnaHQgYmUgMS4wODI2eCBmYXN0ZXIKKwor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpE
ZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25T
bG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRo
UmVpZnkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcik6CisgICAgICAgICogcnVudGltZS9KU09iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OnB1dERpcmVjdFJlc3BlY3RpbmdFeHRlbnNpYmlsaXR5KToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FuUGVy
Zm9ybUZhc3RQdXREaXJlY3RJbmxpbmVFeGNsdWRpbmdQcm90byk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpjYW5QZXJmb3JtRmFzdFB1dERpcmVjdElubGluZSk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCk6CisKIDIwMjEtMTEtMjIgIEdlemEgTG9yZSAgPGds
b3JlQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gTWFrZSBzaGFyaW5nIG9mIHVubGlua2Vk
IGJhc2VsaW5lIGNvZGUgcG9zc2libGUgb24gSlNWQUxVRTMyXzY0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZmVkZjI5
YWUxMGM5OTZiZGJkZjdmZGNkNDY2MTkzNmU2ODBkMTY4OC4uNWQ4NDU2NDViYTMzOTMyMzk4ZGEz
MzM0OTIyNWRhMGZjNjhhZjNiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNTAzOSwxMCArNTAzOSwxMiBAQCB2b2lk
IERlZmluZUZpZWxkTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqKQogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIERlZmlu
ZUZpZWxkTm9kZTo6VHlwZTo6TmFtZTogewotICAgICAgICAvLyBGSVhNRTogSW1wcm92ZSBwZXJm
b3JtYW5jZSBvZiBwdWJsaWMgY2xhc3MgZmllbGRzCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzMzAKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHByb3BlcnR5TmFtZSA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCAqbV9pZGVudCk7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGdlbmVyYXRvci50aGlz
UmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVs
bHB0ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVH
ZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlF
bnVtZXJhYmxlLCBtX3Bvc2l0aW9uKTsKKyAgICAgICAgU3RyaWN0TW9kZVNjb3BlIHN0cmljdE1v
ZGVTY29wZShnZW5lcmF0b3IpOworICAgICAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5kZXgo
Km1faWRlbnQpKSB7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1l
ID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKGluZGV4LnZhbHVlKCkpKTsK
KyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlWYWwoZ2VuZXJhdG9yLnRoaXNS
ZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLnRo
aXNSZWdpc3RlcigpLCAqbV9pZGVudCwgdmFsdWUuZ2V0KCkpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OlByaXZhdGVOYW1lOiB7CkBAIC01
MDU3LDkgKzUwNTksNiBAQCB2b2lkIERlZmluZUZpZWxkTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OkNvbXB1dGVkTmFtZTogewotICAg
ICAgICAvLyBGSVhNRTogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBwdWJsaWMgY2xhc3MgZmllbGRz
Ci0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgz
MzAKLQogICAgICAgICAvLyBGb3IgQ29tcHV0ZWROYW1lcywgdGhlIGV4cHJlc3Npb24gaGFzIGFs
cmVhZHkgYmVlbiBldmFsdWF0ZWQgZWFybGllciBkdXJpbmcgZXZhbHVhdGlvbiBvZiBhIENsYXNz
RXhwck5vZGUuCiAgICAgICAgIC8vIEhlcmUsIGBtX2lkZW50YCByZWZlcnMgdG8gcHJpdmF0ZSBz
eW1ib2wgSUQgaW4gYSBjbGFzcyBsZXhpY2FsIHNjb3BlLCBjb250YWluaW5nIHRoZSB2YWx1ZSBh
bHJlYWR5IGNvbnZlcnRlZCB0byBhbiBFeHByZXNzaW9uLgogICAgICAgICBWYXJpYWJsZSB2YXIg
PSBnZW5lcmF0b3IudmFyaWFibGUoKm1faWRlbnQpOwpAQCAtNTA3Miw3ICs1MDcxLDEwIEBAIHZv
aWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIGlmIChzaG91bGRTZXRGdW5jdGlvbk5hbWUpCiAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFNldEZ1bmN0aW9uTmFtZSh2YWx1ZS5nZXQoKSwgcHJp
dmF0ZU5hbWUuZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHByaXZh
dGVOYW1lLmdldCgpLCB2YXIsIG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyBtX2lkZW50LT5sZW5n
dGgoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGdlbmVyYXRv
ci50aGlzUmVnaXN0ZXIoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRy
LCBudWxscHRyLCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRl
Y29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9w
ZXJ0eUVudW1lcmFibGUsIG1fcG9zaXRpb24pOworICAgICAgICB7CisgICAgICAgICAgICBTdHJp
Y3RNb2RlU2NvcGUgc3RyaWN0TW9kZVNjb3BlKGdlbmVyYXRvcik7CisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdERpcmVjdFB1dEJ5VmFsKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgcHJpdmF0
ZU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpKTsKKyAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaAppbmRleCBkYjUyYzA1NmMwMTAxN2Y1YzYyY2JjMWI1ZmUxMzczYTA3YTdiNGU1Li4w
ZjgzODNlZTc1MjI5YWQ2YzM0YjdkN2Q2NzEyNzAwYzYzNmZhZGQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNsb3dQYXRoRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgorI2luY2x1ZGUgIlR5cGVFcnJvci5o
IgogI2luY2x1ZGUgIlZNSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
IApAQCAtMTg2LDE4ICsxODcsMjYgQEAgQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmUqIG9yaWdpbmFs
U3RydWN0dXJlQmVmb3JlUHV0KFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gdmFs
dWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CiB9CiAKLQogc3RhdGljIEFMV0FZU19JTkxJTkUg
dm9pZCBwdXREaXJlY3RXaXRoUmVpZnkoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU09iamVjdCogYmFzZU9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmUqKiByZXN1bHQgPSBu
dWxscHRyKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBpZiAoYmFzZU9iamVjdC0+aW5oZXJpdHM8SlNGdW5jdGlvbj4odm0pKSB7CisgICAgYm9vbCBp
c0pTRnVuY3Rpb24gPSBiYXNlT2JqZWN0LT5pbmhlcml0czxKU0Z1bmN0aW9uPih2bSk7CisgICAg
aWYgKGlzSlNGdW5jdGlvbikgewogICAgICAgICBqc0Nhc3Q8SlNGdW5jdGlvbio+KGJhc2VPYmpl
Y3QpLT5yZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKHZtLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAg
fQogICAgIGlmIChyZXN1bHQpCiAgICAgICAgICpyZXN1bHQgPSBvcmlnaW5hbFN0cnVjdHVyZUJl
Zm9yZVB1dCh2bSwgYmFzZU9iamVjdCk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIGJhc2VP
YmplY3QtPnB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisKKyAgICBp
ZiAoTElLRUxZKGlzSlNGdW5jdGlvbiB8fCBiYXNlT2JqZWN0LT5jYW5QZXJmb3JtRmFzdFB1dERp
cmVjdElubGluZSh2bSwgcHJvcGVydHlOYW1lKSkpIHsKKyAgICAgICAgaWYgKCFiYXNlT2JqZWN0
LT5wdXREaXJlY3RSZXNwZWN0aW5nRXh0ZW5zaWJpbGl0eSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgMCwgc2xvdCkpCisgICAgICAgICAgICB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
c2xvdC5pc1N0cmljdE1vZGUoKSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHNsb3QuZGlzYWJsZUNhY2hpbmcoKTsKKyAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOworICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcih2YWx1ZSwgMCk7
CisgICAgICAgIGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHko
YmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNsb3Qu
aXNTdHJpY3RNb2RlKCkpOworICAgIH0KIH0KIAogc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBw
dXREaXJlY3RBY2Nlc3NvcldpdGhSZWlmeShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBH
ZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yLCB1bnNpZ25lZCBhdHRyaWJ1dGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggMGIyZWViNjhiMWMyNTY5MmVkOTIx
ZTBlOTAxOTA0OWVjMDVjYzRiMC4uMzk3MTE2YWNkNmIyYjIxOTQ5NzNiZDExMGY0YjdmM2E0ZTUx
YTU2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAt
MjAwNiw3ICsyMDA2LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Io
Vk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHUKICAgICAgICAgYXR0cmli
dXRlcyB8PSBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tVmFsdWU7CiAKICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdCh0aGlzKTsKLSAgICBib29sIHJlc3VsdCA9IHB1dERpcmVjdEludGVybmFsPFB1
dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0
ZXMsIHNsb3QpOworICAgIGJvb2wgcmVzdWx0ID0gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURl
ZmluZU93blByb3BlcnR5SWdub3JpbmdFeHRlbnNpYmlsaXR5Pih2bSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CiAKICAgICBBU1NFUlQoc2xvdC50eXBlKCkgPT0gUHV0
UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSk7CiAKQEAgLTIwMzcsNyArMjAzNyw3IEBAIGJvb2wg
SlNPYmplY3Q6OnB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBHZXR0CiB7CiAgICAgQVNTRVJUKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0
dHJpYnV0ZTo6QWNjZXNzb3IpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAg
IGJvb2wgcmVzdWx0ID0gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5
Pih2bSwgcHJvcGVydHlOYW1lLCBhY2Nlc3NvciwgYXR0cmlidXRlcywgc2xvdCk7CisgICAgYm9v
bCByZXN1bHQgPSBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHlJZ25v
cmluZ0V4dGVuc2liaWxpdHk+KHZtLCBwcm9wZXJ0eU5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1dGVz
LCBzbG90KTsKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZt
KTsKICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDBjNGRmYTMxZDg3M2I3
YTkzMjk5YWQ3ZWRkMTE4NDBhZWE4YzJlOWIuLjc1YzVhNTFiYjI2ZmE1MDY1YTAyMmE4NTExODZk
MjBhOGVhZGVkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApA
QCAtMTAwLDkgKzEwMCwxMCBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAg
IGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICBKU19FWFBPUlRfUFJJVkFURSBmcmllbmQg
Ym9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChWTSYsIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiwg
SlNPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCi0gICAgZW51bSBQdXRN
b2RlIHsKKyAgICBlbnVtIFB1dE1vZGUgOiB1aW50OF90IHsKICAgICAgICAgUHV0TW9kZVB1dCwK
ICAgICAgICAgUHV0TW9kZURlZmluZU93blByb3BlcnR5LAorICAgICAgICBQdXRNb2RlRGVmaW5l
T3duUHJvcGVydHlJZ25vcmluZ0V4dGVuc2liaWxpdHksCiAgICAgfTsKIAogcHVibGljOgpAQCAt
Njg1LDYgKzY4Niw3IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9v
bCBwdXREaXJlY3QoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMgPSAwKTsKICAgICBib29sIHB1dERpcmVjdChWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgYm9vbCBwdXREaXJl
Y3QoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIGJv
b2wgcHV0RGlyZWN0UmVzcGVjdGluZ0V4dGVuc2liaWxpdHkoVk0mLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHZvaWQg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKICAgICBib29sIHB1dERpcmVjdE5vbkluZGV4QWNjZXNz
b3IoVk0mLCBQcm9wZXJ0eU5hbWUsIEdldHRlclNldHRlciosIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OwogICAgIHZvaWQgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRUcmFuc2l0aW9uKFZN
JiwgUHJvcGVydHlOYW1lLCBHZXR0ZXJTZXR0ZXIqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKQEAg
LTEwMDIsNyArMTAwNCwxMCBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZ2V0TWV0aG9kKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwog
CiAgICAgYm9vbCBjYW5QZXJmb3JtRmFzdFB1dElubGluZShWTSYsIFByb3BlcnR5TmFtZSk7Cisg
ICAgYm9vbCBjYW5QZXJmb3JtRmFzdFB1dERpcmVjdElubGluZShWTSYsIFByb3BlcnR5TmFtZSk7
CisKICAgICBib29sIGNhblBlcmZvcm1GYXN0UHV0SW5saW5lRXhjbHVkaW5nUHJvdG8oVk0mKTsK
KyAgICBib29sIGNhblBlcmZvcm1GYXN0UHV0RGlyZWN0SW5saW5lRXhjbHVkaW5nUHJvdG8oVk0m
KTsKIAogICAgIGJvb2wgbWF5QmVQcm90b3R5cGUoKSBjb25zdDsKICAgICB2b2lkIGRpZEJlY29t
ZVByb3RvdHlwZSgpOwpAQCAtMTU4MiwyMSArMTU4NywyOCBAQCBpbmxpbmUgYm9vbCBKU09iamVj
dDo6cHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZQogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMg
JiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpKTsKICAgICBBU1NFUlQoIXZhbHVlLmlzQ3Vz
dG9tR2V0dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yT3JWYWx1ZSkpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwot
ICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZt
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzbG90KTsKKyAgICByZXR1cm4gcHV0
RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5SWdub3JpbmdFeHRlbnNpYmls
aXR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CiB9CiAKIGlu
bGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpKTsKICAgICBB
U1NFUlQoIXZhbHVlLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpOwotICAgIHJldHVybiBwdXREaXJl
Y3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBhdHRyaWJ1dGVzLCBzbG90KTsKKyAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0
TW9kZURlZmluZU93blByb3BlcnR5SWdub3JpbmdFeHRlbnNpYmlsaXR5Pih2bSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0
OjpwdXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRl
clNldHRlcigpKTsKICAgICBBU1NFUlQoIXZhbHVlLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpOwot
ICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZt
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKKyAgICByZXR1cm4gcHV0RGlyZWN0SW50
ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5SWdub3JpbmdFeHRlbnNpYmlsaXR5Pih2bSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7Cit9CisKK2lubGluZSBib29sIEpTT2JqZWN0
OjpwdXREaXJlY3RSZXNwZWN0aW5nRXh0ZW5zaWJpbGl0eShWTSYgdm0sIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dFByb3Bl
cnR5U2xvdCYgc2xvdCkKK3sKKyAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkpOwor
ICAgIEFTU0VSVCghdmFsdWUuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSk7CisgICAgcmV0dXJuIHB1
dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOwogfQogCiBjb25zdGV4cHIgaW5saW5lIGludHB0
cl90IG9mZnNldEluQnV0dGVyZmx5KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggNzYwYTlhOWUy
ZWM0N2RiMzhmYTIzYmFkODk0ZTBlODBkYTY3NDBkMS4uOTI5NWM1YTJhNzkyZDlhZGIzZjlmM2Yy
YmFhMzczZDk5NTUwN2UyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmgKQEAgLTgyLDYgKzgyLDE2IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBK
U09iamVjdDo6Y2FuUGVyZm9ybUZhc3RQdXRJbmxpbmVFeGNsdWRpbmdQcm90byhWTSYgdm0pCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK0FMV0FZU19JTkxJTkUgYm9vbCBKU09iamVj
dDo6Y2FuUGVyZm9ybUZhc3RQdXREaXJlY3RJbmxpbmVFeGNsdWRpbmdQcm90byhWTSYgdm0pCit7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgIGlm
IChzdHJ1Y3R1cmUtPmhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5n
UHJvdG8oKSB8fCBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvdG90eXBlKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+
bWV0aG9kVGFibGUuZGVmaW5lT3duUHJvcGVydHkgIT0gJkpTT2JqZWN0OjpkZWZpbmVPd25Qcm9w
ZXJ0eSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiBBTFdB
WVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmNhblBlcmZvcm1GYXN0UHV0SW5saW5lKFZNJiB2bSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoVU5MSUtFTFkocHJvcGVydHlO
YW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bykpCkBAIC04OSw2ICs5OSwx
MyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmNhblBlcmZvcm1GYXN0UHV0SW5saW5l
KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcgogICAgIHJldHVybiBjYW5QZXJmb3JtRmFzdFB1
dElubGluZUV4Y2x1ZGluZ1Byb3RvKHZtKTsKIH0KIAorQUxXQVlTX0lOTElORSBib29sIEpTT2Jq
ZWN0OjpjYW5QZXJmb3JtRmFzdFB1dERpcmVjdElubGluZShWTSYgdm0sIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCit7CisgICAgaWYgKFVOTElLRUxZKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9w
ZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIGNhblBlcmZvcm1GYXN0UHV0RGlyZWN0SW5saW5lRXhjbHVkaW5nUHJvdG8odm0pOwor
fQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbj4KIEFMV0FZU19J
TkxJTkUgdHlwZW5hbWUgc3RkOjppbnZva2VfcmVzdWx0PENhbGxiYWNrV2hlbk5vRXhjZXB0aW9u
LCBib29sLCBQcm9wZXJ0eVNsb3QmPjo6dHlwZSBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIENh
bGxiYWNrV2hlbk5vRXhjZXB0aW9uIGNhbGxiYWNrKSBjb25zdAogewpAQCAtMzM1LDcgKzM1Miw3
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoVk0mIHZt
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lCiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRy
aWJ1dGVzOwogICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2
bSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcyk7CiAgICAgICAgIGlmIChvZmZzZXQg
IT0gaW52YWxpZE9mZnNldCkgewotICAgICAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQp
ICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5T3JBY2Nl
c3Nvck9yQ3VzdG9tQWNjZXNzb3IpCisgICAgICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1
dCB8fCBtb2RlID09IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eSkgJiYgY3VycmVudEF0dHJpYnV0
ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHlPckFjY2Vzc29yT3JDdXN0b21BY2Nlc3Nv
cikKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgIHB1dERpcmVj
dCh2bSwgb2Zmc2V0LCB2YWx1ZSk7CkBAIC0zNDMsNyArMzYwLDcgQEAgQUxXQVlTX0lOTElORSBi
b29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUKIAogICAgICAgICAgICAgLy8gRklYTUU6IENoZWNrIGF0dHJpYnV0ZXMgYWdhaW5z
dCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3JPclZhbHVlLiBDaGFuZ2luZyBHZXR0
ZXJTZXR0ZXIgc2hvdWxkIHdvcmsgdy9vIHRyYW5zaXRpb24uCiAgICAgICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MzQyCi0gICAgICAgICAgICBp
ZiAobW9kZSA9PSBQdXRNb2RlRGVmaW5lT3duUHJvcGVydHkgJiYgKGF0dHJpYnV0ZXMgIT0gY3Vy
cmVudEF0dHJpYnV0ZXMgfHwgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNz
b3JPckN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkpKQorICAgICAgICAgICAgaWYgKChtb2RlID09IFB1
dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eSB8fCBtb2RlID09IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0
eUlnbm9yaW5nRXh0ZW5zaWJpbGl0eSkgJiYgKGF0dHJpYnV0ZXMgIT0gY3VycmVudEF0dHJpYnV0
ZXMgfHwgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3JPckN1c3RvbUFj
Y2Vzc29yT3JWYWx1ZSkpKQogICAgICAgICAgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0
dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcykpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKCEoY3VycmVudEF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3JPckN1
c3RvbUFjY2Vzc29yT3JWYWx1ZSkpOwpAQCAtMzUzLDcgKzM3MCw3IEBAIEFMV0FZU19JTkxJTkUg
Ym9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAg
IGlmICgobW9kZSA9PSBQdXRNb2RlUHV0KSAmJiAhaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKHZtKSkK
KyAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQgfHwgbW9kZSA9PSBQdXRNb2RlRGVmaW5l
T3duUHJvcGVydHkpICYmICFpc1N0cnVjdHVyZUV4dGVuc2libGUodm0pKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIG9mZnNldCA9IHByZXBhcmVUb1B1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHN0cnVjdHVyZUlELCBz
dHJ1Y3R1cmUpOwpAQCAtMzkyLDcgKzQwOSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVj
dDo6cHV0RGlyZWN0SW50ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lCiAg
ICAgdW5zaWduZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAgICAgb2Zmc2V0ID0gc3RydWN0dXJlLT5n
ZXQodm0sIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMpOwogICAgIGlmIChvZmZzZXQg
IT0gaW52YWxpZE9mZnNldCkgewotICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYg
Y3VycmVudEF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHlPckFjY2Vzc29y
T3JDdXN0b21BY2Nlc3NvcikKKyAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQgfHwgbW9k
ZSA9PSBQdXRNb2RlRGVmaW5lT3duUHJvcGVydHkpICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5T3JBY2Nlc3Nvck9yQ3VzdG9tQWNjZXNzb3IpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgc3RydWN0dXJlLT5kaWRSZXBsYWNlUHJv
cGVydHkob2Zmc2V0KTsKQEAgLTQwMCw3ICs0MTcsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNP
YmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZQogCiAgICAgICAgIC8vIEZJWE1FOiBDaGVjayBhdHRyaWJ1dGVzIGFnYWluc3QgUHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yT3JWYWx1ZS4gQ2hhbmdpbmcgR2V0dGVyU2V0dGVyIHNo
b3VsZCB3b3JrIHcvbyB0cmFuc2l0aW9uLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MzQyCi0gICAgICAgIGlmIChtb2RlID09IFB1dE1vZGVE
ZWZpbmVPd25Qcm9wZXJ0eSAmJiAoYXR0cmlidXRlcyAhPSBjdXJyZW50QXR0cmlidXRlcyB8fCAo
YXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvck9yQ3VzdG9tQWNjZXNzb3JP
clZhbHVlKSkpIHsKKyAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0
eSB8fCBtb2RlID09IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eUlnbm9yaW5nRXh0ZW5zaWJpbGl0
eSkgJiYgKGF0dHJpYnV0ZXMgIT0gY3VycmVudEF0dHJpYnV0ZXMgfHwgKGF0dHJpYnV0ZXMgJiBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkpKSB7CiAg
ICAgICAgICAgICAvLyBXZSB3YW50IHRoZSBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50
IHRvIGZpcmUgYWZ0ZXIgdGhpcyBvYmplY3QgaGFzIHN3aXRjaGVkIHN0cnVjdHVyZS4KICAgICAg
ICAgICAgIC8vIFRoaXMgYWxsb3dzIGFkYXB0aXZlIHdhdGNocG9pbnRzIHRvIG9ic2VydmUgaWYg
dGhlIG5ldyBzdHJ1Y3R1cmUgaXMgdGhlIG9uZSB3ZSB3YW50LgogICAgICAgICAgICAgRGVmZXJy
ZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUgZGVmZXJyZWRXYXRjaHBvaW50Rmly
ZSh2bSwgc3RydWN0dXJlKTsKQEAgLTQxMyw3ICs0MzAsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoKG1vZGUgPT0gUHV0
TW9kZVB1dCkgJiYgIWlzU3RydWN0dXJlRXh0ZW5zaWJsZSh2bSkpCisgICAgaWYgKChtb2RlID09
IFB1dE1vZGVQdXQgfHwgbW9kZSA9PSBQdXRNb2RlRGVmaW5lT3duUHJvcGVydHkpICYmICFpc1N0
cnVjdHVyZUV4dGVuc2libGUodm0pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAg
Ly8gV2Ugd2FudCB0aGUgc3RydWN0dXJlIHRyYW5zaXRpb24gd2F0Y2hwb2ludCB0byBmaXJlIGFm
dGVyIHRoaXMgb2JqZWN0IGhhcyBzd2l0Y2hlZCBzdHJ1Y3R1cmUuCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU5MjZlNDRmYTgxNGMxMzFm
NjNmOWUwOTgwNzA1MmExNjA2NTRhYzAuLmQ2ZWVkZjc2ZjE0OTI1YjZjNjZmM2QzZWU0ZmRiODBk
ODg0Y2RhOGEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMTEtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBQdWJsaWMgQ2xhc3MgRmllbGQgaW5pdGlh
bGl6YXRpb24gaXMgc2xvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMyNDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLWNsYXNzaWMtY29uc3RydWN0
b3ItYXNzaWdubWVudHMuanM6IEFkZGVkLgorICAgICAgICAoQ2xhc3NpY19Db25zdHJ1Y3Rvcl9B
c3NpZ25tZW50cyk6CisgICAgICAgIChiZW5jaCk6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtz
L2NsYXNzLWZpZWxkcy1wcml2YXRlLWZpZWxkcy5qczogQWRkZWQuCisgICAgICAgIChFUzIwMjJf
UHJpdmF0ZV9GaWVsZHMpOgorICAgICAgICAoYmVuY2gpOgorICAgICAgICAqIG1pY3JvYmVuY2ht
YXJrcy9jbGFzcy1maWVsZHMtcHVibGljLWZpZWxkcy5qczogQWRkZWQuCisgICAgICAgIChFUzIw
MjJfUHVibGljX0ZpZWxkcyk6CisgICAgICAgIChiZW5jaCk6CisgICAgICAgICogc3RyZXNzL2Ns
YXNzLWZpZWxkcy1nZXR0ZXItb3ZlcnJpZGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhy
b3cpOgorICAgICAgICAoZGVmaW5lQ0dldHRlci4pOgorICAgICAgICAoQik6CisgICAgICAgIChk
ZWZpbmUwR2V0dGVyLik6CisgICAgICAgIChkZWZpbmUwR2V0dGVyKToKKyAgICAgICAgKEQpOgor
CiAyMDIxLTExLTE5ICBBc3VtdSBUYWtpa2F3YSAgPGFzdW11QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgRml4IFdlYkFzc2VtYmx5IG1lbW9yeS5maWxsIG91dCBvZiBib3VuZHMgZXJyb3IgbWVzc2Fn
ZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLWNsYXNz
aWMtY29uc3RydWN0b3ItYXNzaWdubWVudHMuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9j
bGFzcy1maWVsZHMtY2xhc3NpYy1jb25zdHJ1Y3Rvci1hc3NpZ25tZW50cy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jOTA1ZWQ4MTAxMTlkODYyODU3MjY0NGZkNzljNzZlMTJiMWZlZGMzCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLWNsYXNzaWMtY29uc3Ry
dWN0b3ItYXNzaWdubWVudHMuanMKQEAgLTAsMCArMSwyOCBAQAorY2xhc3MgQ2xhc3NpY19Db25z
dHJ1Y3Rvcl9Bc3NpZ25tZW50cyB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHRoaXMu
dmVyaWZpY2F0aW9uPTE7CisKKyAgICAgICAgdGhpcy5fMDA9MTsgdGhpcy5fMDE9MTsgdGhpcy5f
MDI9MTsgdGhpcy5fMDM9MTsgdGhpcy5fMDQ9MTsgdGhpcy5fMDU9MTsgdGhpcy5fMDY9MTsgdGhp
cy5fMDc9MTsgdGhpcy5fMDg9MTsgdGhpcy5fMDk9MTsKKyAgICAgICAgdGhpcy5fMTA9MTsgdGhp
cy5fMTE9MTsgdGhpcy5fMTI9MTsgdGhpcy5fMTM9MTsgdGhpcy5fMTQ9MTsgdGhpcy5fMTU9MTsg
dGhpcy5fMTY9MTsgdGhpcy5fMTc9MTsgdGhpcy5fMTg9MTsgdGhpcy5fMTk9MTsKKyAgICAgICAg
dGhpcy5fMjA9MTsgdGhpcy5fMjE9MTsgdGhpcy5fMjI9MTsgdGhpcy5fMjM9MTsgdGhpcy5fMjQ9
MTsgdGhpcy5fMjU9MTsgdGhpcy5fMjY9MTsgdGhpcy5fMjc9MTsgdGhpcy5fMjg9MTsgdGhpcy5f
Mjk9MTsKKyAgICAgICAgdGhpcy5fMzA9MTsgdGhpcy5fMzE9MTsgdGhpcy5fMzI9MTsgdGhpcy5f
MzM9MTsgdGhpcy5fMzQ9MTsgdGhpcy5fMzU9MTsgdGhpcy5fMzY9MTsgdGhpcy5fMzc9MTsgdGhp
cy5fMzg9MTsgdGhpcy5fMzk9MTsKKyAgICAgICAgdGhpcy5fNDA9MTsgdGhpcy5fNDE9MTsgdGhp
cy5fNDI9MTsgdGhpcy5fNDM9MTsgdGhpcy5fNDQ9MTsgdGhpcy5fNDU9MTsgdGhpcy5fNDY9MTsg
dGhpcy5fNDc9MTsgdGhpcy5fNDg9MTsgdGhpcy5fNDk9MTsKKyAgICAgICAgdGhpcy5fNTA9MTsg
dGhpcy5fNTE9MTsgdGhpcy5fNTI9MTsgdGhpcy5fNTM9MTsgdGhpcy5fNTQ9MTsgdGhpcy5fNTU9
MTsgdGhpcy5fNTY9MTsgdGhpcy5fNTc9MTsgdGhpcy5fNTg9MTsgdGhpcy5fNTk9MTsKKyAgICAg
ICAgdGhpcy5fNjA9MTsgdGhpcy5fNjE9MTsgdGhpcy5fNjI9MTsgdGhpcy5fNjM9MTsgdGhpcy5f
NjQ9MTsgdGhpcy5fNjU9MTsgdGhpcy5fNjY9MTsgdGhpcy5fNjc9MTsgdGhpcy5fNjg9MTsgdGhp
cy5fNjk9MTsKKyAgICAgICAgdGhpcy5fNzA9MTsgdGhpcy5fNzE9MTsgdGhpcy5fNzI9MTsgdGhp
cy5fNzM9MTsgdGhpcy5fNzQ9MTsgdGhpcy5fNzU9MTsgdGhpcy5fNzY9MTsgdGhpcy5fNzc9MTsg
dGhpcy5fNzg9MTsgdGhpcy5fNzk9MTsKKyAgICAgICAgdGhpcy5fODA9MTsgdGhpcy5fODE9MTsg
dGhpcy5fODI9MTsgdGhpcy5fODM9MTsgdGhpcy5fODQ9MTsgdGhpcy5fODU9MTsgdGhpcy5fODY9
MTsgdGhpcy5fODc9MTsgdGhpcy5fODg9MTsgdGhpcy5fODk9MTsKKyAgICAgICAgdGhpcy5fOTA9
MTsgdGhpcy5fOTE9MTsgdGhpcy5fOTI9MTsgdGhpcy5fOTM9MTsgdGhpcy5fOTQ9MTsgdGhpcy5f
OTU9MTsgdGhpcy5fOTY9MTsgdGhpcy5fOTc9MTsgdGhpcy5fOTg9MTsgdGhpcy5fOTk9MTsKKyAg
ICB9Cit9CisKK2NvbnN0IElURVJBVElPTlMgPSAxMDBfMDAwOworCitmdW5jdGlvbiBiZW5jaCh0
ZXN0Q2xhc3MpIHsKKyAgICB2YXIgYWNjID0gMDsKKyAgICBmb3IgKHZhciBpPTA7IGk8SVRFUkFU
SU9OUzsgaSsrKSB7CisgICAgICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IHRlc3RDbGFzcygpCisg
ICAgICAgIGFjYyArPSBpbnN0YW5jZS52ZXJpZmljYXRpb247CisgICAgfQorfQorCitiZW5jaChD
bGFzc2ljX0NvbnN0cnVjdG9yX0Fzc2lnbm1lbnRzKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZpZWxkcy5qcyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZpZWxkcy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
ZTMyNmY2ZDgzNWQxZWY3ZGVhNDI5OThmY2M3Njc1MTY2MDE5YWQ4Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZmllbGRzLmpz
CkBAIC0wLDAgKzEsMjkgQEAKK2NsYXNzIEVTMjAyMl9Qcml2YXRlX0ZpZWxkcyB7CisgICAgdmVy
aWZpY2F0aW9uPTE7CisKKyAgICAjXzAwPTE7ICNfMDE9MTsgI18wMj0xOyAjXzAzPTE7ICNfMDQ9
MTsgI18wNT0xOyAjXzA2PTE7ICNfMDc9MTsgI18wOD0xOyAjXzA5PTE7CisgICAgI18xMD0xOyAj
XzExPTE7ICNfMTI9MTsgI18xMz0xOyAjXzE0PTE7ICNfMTU9MTsgI18xNj0xOyAjXzE3PTE7ICNf
MTg9MTsgI18xOT0xOworICAgICNfMjA9MTsgI18yMT0xOyAjXzIyPTE7ICNfMjM9MTsgI18yND0x
OyAjXzI1PTE7ICNfMjY9MTsgI18yNz0xOyAjXzI4PTE7ICNfMjk9MTsKKyAgICAjXzMwPTE7ICNf
MzE9MTsgI18zMj0xOyAjXzMzPTE7ICNfMzQ9MTsgI18zNT0xOyAjXzM2PTE7ICNfMzc9MTsgI18z
OD0xOyAjXzM5PTE7CisgICAgI180MD0xOyAjXzQxPTE7ICNfNDI9MTsgI180Mz0xOyAjXzQ0PTE7
ICNfNDU9MTsgI180Nj0xOyAjXzQ3PTE7ICNfNDg9MTsgI180OT0xOworICAgICNfNTA9MTsgI181
MT0xOyAjXzUyPTE7ICNfNTM9MTsgI181ND0xOyAjXzU1PTE7ICNfNTY9MTsgI181Nz0xOyAjXzU4
PTE7ICNfNTk9MTsKKyAgICAjXzYwPTE7ICNfNjE9MTsgI182Mj0xOyAjXzYzPTE7ICNfNjQ9MTsg
I182NT0xOyAjXzY2PTE7ICNfNjc9MTsgI182OD0xOyAjXzY5PTE7CisgICAgI183MD0xOyAjXzcx
PTE7ICNfNzI9MTsgI183Mz0xOyAjXzc0PTE7ICNfNzU9MTsgI183Nj0xOyAjXzc3PTE7ICNfNzg9
MTsgI183OT0xOworICAgICNfODA9MTsgI184MT0xOyAjXzgyPTE7ICNfODM9MTsgI184ND0xOyAj
Xzg1PTE7ICNfODY9MTsgI184Nz0xOyAjXzg4PTE7ICNfODk9MTsKKyAgICAjXzkwPTE7ICNfOTE9
MTsgI185Mj0xOyAjXzkzPTE7ICNfOTQ9MTsgI185NT0xOyAjXzk2PTE7ICNfOTc9MTsgI185OD0x
OyAjXzk5PTE7Cit9CisKKworLy8gQmVuY2htYXJraW5nCisKK2NvbnN0IElURVJBVElPTlMgPSAx
MDBfMDAwOworCitmdW5jdGlvbiBiZW5jaCh0ZXN0Q2xhc3MpIHsKKyAgICB2YXIgYWNjID0gMDsK
KyAgICBmb3IgKHZhciBpPTA7IGk8SVRFUkFUSU9OUzsgaSsrKSB7CisgICAgICAgIGNvbnN0IGlu
c3RhbmNlID0gbmV3IHRlc3RDbGFzcygpCisgICAgICAgIGFjYyArPSBpbnN0YW5jZS52ZXJpZmlj
YXRpb247CisgICAgfQorfQorCitiZW5jaChFUzIwMjJfUHJpdmF0ZV9GaWVsZHMpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXB1YmxpYy1maWVsZHMu
anMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHVibGljLWZpZWxkcy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iNTk0ZDU1OGI3ZDM5ZTkwNTE3MWM4MTBhMjdmMDllYjFiY2FjMTUyCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXB1
YmxpYy1maWVsZHMuanMKQEAgLTAsMCArMSwyNiBAQAorY2xhc3MgRVMyMDIyX1B1YmxpY19GaWVs
ZHMgeworICAgIHZlcmlmaWNhdGlvbj0xOworCisgICAgXzAwPTE7IF8wMT0xOyBfMDI9MTsgXzAz
PTE7IF8wND0xOyBfMDU9MTsgXzA2PTE7IF8wNz0xOyBfMDg9MTsgXzA5PTE7CisgICAgXzEwPTE7
IF8xMT0xOyBfMTI9MTsgXzEzPTE7IF8xND0xOyBfMTU9MTsgXzE2PTE7IF8xNz0xOyBfMTg9MTsg
XzE5PTE7CisgICAgXzIwPTE7IF8yMT0xOyBfMjI9MTsgXzIzPTE7IF8yND0xOyBfMjU9MTsgXzI2
PTE7IF8yNz0xOyBfMjg9MTsgXzI5PTE7CisgICAgXzMwPTE7IF8zMT0xOyBfMzI9MTsgXzMzPTE7
IF8zND0xOyBfMzU9MTsgXzM2PTE7IF8zNz0xOyBfMzg9MTsgXzM5PTE7CisgICAgXzQwPTE7IF80
MT0xOyBfNDI9MTsgXzQzPTE7IF80ND0xOyBfNDU9MTsgXzQ2PTE7IF80Nz0xOyBfNDg9MTsgXzQ5
PTE7CisgICAgXzUwPTE7IF81MT0xOyBfNTI9MTsgXzUzPTE7IF81ND0xOyBfNTU9MTsgXzU2PTE7
IF81Nz0xOyBfNTg9MTsgXzU5PTE7CisgICAgXzYwPTE7IF82MT0xOyBfNjI9MTsgXzYzPTE7IF82
ND0xOyBfNjU9MTsgXzY2PTE7IF82Nz0xOyBfNjg9MTsgXzY5PTE7CisgICAgXzcwPTE7IF83MT0x
OyBfNzI9MTsgXzczPTE7IF83ND0xOyBfNzU9MTsgXzc2PTE7IF83Nz0xOyBfNzg9MTsgXzc5PTE7
CisgICAgXzgwPTE7IF84MT0xOyBfODI9MTsgXzgzPTE7IF84ND0xOyBfODU9MTsgXzg2PTE7IF84
Nz0xOyBfODg9MTsgXzg5PTE7CisgICAgXzkwPTE7IF85MT0xOyBfOTI9MTsgXzkzPTE7IF85ND0x
OyBfOTU9MTsgXzk2PTE7IF85Nz0xOyBfOTg9MTsgXzk5PTE7Cit9CisKK2NvbnN0IElURVJBVElP
TlMgPSAxMDBfMDAwOworCitmdW5jdGlvbiBiZW5jaCh0ZXN0Q2xhc3MpIHsKKyAgICB2YXIgYWNj
ID0gMDsKKyAgICBmb3IgKHZhciBpPTA7IGk8SVRFUkFUSU9OUzsgaSsrKSB7CisgICAgICAgIGNv
bnN0IGluc3RhbmNlID0gbmV3IHRlc3RDbGFzcygpCisgICAgICAgIGFjYyArPSBpbnN0YW5jZS52
ZXJpZmljYXRpb247CisgICAgfQorfQorCitiZW5jaChFUzIwMjJfUHVibGljX0ZpZWxkcyk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtZ2V0dGVyLW92ZXJyaWRlLmpz
IGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLWdldHRlci1vdmVycmlkZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZmVkZDY5MWI0MmU0ODYwZWNiMjAwNDZhNjYwZWY4ZWFlODYwNWVlCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLWdldHRlci1vdmVycmlkZS5qcwpA
QCAtMCwwICsxLDUwIEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2Up
IHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOwor
ICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVy
cm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVy
cm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBp
ZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiBkZWZpbmVD
R2V0dGVyKG9iaikgeworICAgIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqLCAiYyIsIHsKKyAg
ICAgICAgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuICdkZWZpbmVDR2V0dGVyJzsgfQorICAgIH0p
OworfQorCitjbGFzcyBBIHsKKyAgICBiID0gZGVmaW5lQ0dldHRlcih0aGlzKTsKKyAgICBjID0g
NDI7Cit9Oworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEEoKSwgYFR5cGVFcnJvcjogQXR0ZW1wdGlu
ZyB0byBjaGFuZ2UgY29uZmlndXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9w
ZXJ0eS5gKTsKKworbGV0IGtleSA9ICdjJzsKK2NsYXNzIEIgeworICAgIGIgPSBkZWZpbmVDR2V0
dGVyKHRoaXMpOworICAgIFtrZXldID0gNDI7Cit9Oworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEIo
KSwgYFR5cGVFcnJvcjogQXR0ZW1wdGluZyB0byBjaGFuZ2UgY29uZmlndXJhYmxlIGF0dHJpYnV0
ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS5gKTsKKworZnVuY3Rpb24gZGVmaW5lMEdldHRl
cihvYmopIHsKKyAgICBSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgIjAiLCB7CisgICAgICAg
IGdldDogZnVuY3Rpb24oKSB7IHJldHVybiAnZGVmaW5lQ0dldHRlcic7IH0KKyAgICB9KTsKK30K
K2NsYXNzIEMgeworICAgIGIgPSBkZWZpbmUwR2V0dGVyKHRoaXMpOworICAgIFswXSA9IDQyOwor
fTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBDKCksIGBUeXBlRXJyb3I6IEF0dGVtcHRpbmcgdG8g
Y2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHku
YCk7CisKK2NsYXNzIEQgeworICAgIGIgPSBPYmplY3QuZnJlZXplKHRoaXMpOworICAgIFswXSA9
IDQyOworfTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBEKCksIGBUeXBlRXJyb3I6IEF0dGVtcHRl
ZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuYCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445119</attachid>
            <date>2021-11-24 22:15:20 -0800</date>
            <delta_ts>2021-11-24 22:17:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232479-20211125011517.patch</filename>
            <type>text/plain</type>
            <size>30818</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZjJhM2Q1MWYxMGQ1YzZlYmM0MWNkN2RmNzUwOTQzZDNlNzMzNjAzLi4zM2EyZmVjMjZiZGM4ZWU3
YWVjMzk1YTkxZjYyMjhiYTkwNzg0YjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAyMS0xMS0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFB1YmxpYyBDbGFzcyBGaWVsZCBpbml0aWFsaXphdGlvbiBpcyBz
bG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0
NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGFz
cyBwdWJsaWMgZmllbGQgaW1wbGVtZW50YXRpb24gZGlkIG5vdCBoYXZlIG9wdGltaXphdGlvbiBm
b3IgaW5pdGlhbGl6aW5nIGNsYXNzIGZpZWxkczogdXNpbmcKKyAgICAgICAgcnVudGltZSBjYWxs
IHRvIGluaXRpYWxpemUgZmllbGRzIGluc3RlYWQgb2YgSUMuIFRoaXMgcGF0Y2ggbGV2ZXJhZ2Vz
IHB1dF9ieV9pZCAvIHB1dF9ieV92YWwgd2l0aAorICAgICAgICBkaXJlY3QgZmxhZyBzbyB0aGF0
IHdlIGNhbiBlbmFibGUgSUMuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUb1QgICAgICAgICAgICAgICAgICAgICBQYXRjaGVk
CisKKyAgICAgICAgY2xhc3MtZmllbGRzLWNsYXNzaWMtY29uc3RydWN0b3ItYXNzaWdubWVudHMK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
Ny4xNDkxKy0yLjYzMjcgICAgICAgICAgIDE1LjA5MDYrLTAuNjc5NSAgICAgICAgICBtaWdodCBi
ZSAxLjEzNjR4IGZhc3RlcgorICAgICAgICBjbGFzcy1maWVsZHMtcHVibGljLWZpZWxkcyAgICAg
ICAgICAgICAgICAgICAgNDA5LjQzMjgrLTguMzE0MCAgICAgXiAgICAgMjAuMjc1MistMi4wODM1
ICAgICAgICBeIGRlZmluaXRlbHkgMjAuMTkzOHggZmFzdGVyCisgICAgICAgIGNsYXNzLWZpZWxk
cy1wcml2YXRlLWZpZWxkcyAgICAgICAgICAgICAgICAgICAgMjcuMjYyMSstMS4zODU4ICAgICAg
ICAgICAyNS4xODEwKy0zLjk4NzMgICAgICAgICAgbWlnaHQgYmUgMS4wODI2eCBmYXN0ZXIKKwor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpE
ZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogcnVudGltZS9Db21tb25T
bG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRo
UmVpZnkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nvcik6CisgICAgICAgICogcnVudGltZS9KU09iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OnB1dERpcmVjdFJlc3BlY3RpbmdFeHRlbnNpYmlsaXR5KToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FuUGVy
Zm9ybUZhc3RQdXREaXJlY3RJbmxpbmVFeGNsdWRpbmdQcm90byk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpjYW5QZXJmb3JtRmFzdFB1dERpcmVjdElubGluZSk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpwdXRJbmxpbmVGYXN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVj
dEludGVybmFsKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eSk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHlNYXlCZUluZGV4KToK
KwogMjAyMS0xMS0yMiAgR2V6YSBMb3JlICA8Z2xvcmVAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
SlNDXSBNYWtlIHNoYXJpbmcgb2YgdW5saW5rZWQgYmFzZWxpbmUgY29kZSBwb3NzaWJsZSBvbiBK
U1ZBTFVFMzJfNjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggZWFiM2IyMGRhNWY0MWEyNjAxMzg0OGM5NWIyZWI1NmYzMWNkMTc4
MS4uMmY5NTEwMmNiMDM3YmFhOGMxZWNjM2RmM2FlMDEzMDgzNWYwNGQ4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAyMS0xMS0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIFtKU0NdIFB1YmxpYyBDbGFzcyBGaWVsZCBpbml0aWFsaXphdGlvbiBpcyBzbG93
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0NzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90
ZXh0L0FTQ0lJTGl0ZXJhbC5oOgorCiAyMDIxLTExLTE5ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0
c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0gYWRkIGF1ZGlvIHN1cHBvcnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApp
bmRleCBmZWRmMjlhZTEwYzk5NmJkYmRmN2ZkY2Q0NjYxOTM2ZTY4MGQxNjg4Li41ZDg0NTY0NWJh
MzM5MzIzOThkYTMzMzQ5MjI1ZGEwZmM2OGFmM2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01MDM5LDEwICs1MDM5
LDEyIEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAg
IGNhc2UgRGVmaW5lRmllbGROb2RlOjpUeXBlOjpOYW1lOiB7Ci0gICAgICAgIC8vIEZJWE1FOiBJ
bXByb3ZlIHBlcmZvcm1hbmNlIG9mIHB1YmxpYyBjbGFzcyBmaWVsZHMKLSAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODMzMAotICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lID0gZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIs
ICptX2lkZW50KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoZ2Vu
ZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpLCBu
dWxscHRyLCBudWxscHRyLCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUg
fCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9y
OjpQcm9wZXJ0eUVudW1lcmFibGUsIG1fcG9zaXRpb24pOworICAgICAgICBTdHJpY3RNb2RlU2Nv
cGUgc3RyaWN0TW9kZVNjb3BlKGdlbmVyYXRvcik7CisgICAgICAgIGlmIChhdXRvIGluZGV4ID0g
cGFyc2VJbmRleCgqbV9pZGVudCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBw
cm9wZXJ0eU5hbWUgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoaW5kZXgu
dmFsdWUoKSkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeVZhbChnZW5l
cmF0b3IudGhpc1JlZ2lzdGVyKCksIHByb3BlcnR5TmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChn
ZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksICptX2lkZW50LCB2YWx1ZS5nZXQoKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIERlZmluZUZpZWxkTm9kZTo6VHlwZTo6UHJpdmF0ZU5h
bWU6IHsKQEAgLTUwNTcsOSArNTA1OSw2IEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIERlZmluZUZpZWxkTm9kZTo6VHlwZTo6Q29tcHV0ZWRO
YW1lOiB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHB1YmxpYyBj
bGFzcyBmaWVsZHMKLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5ODMzMAotCiAgICAgICAgIC8vIEZvciBDb21wdXRlZE5hbWVzLCB0aGUgZXhwcmVz
c2lvbiBoYXMgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZCBlYXJsaWVyIGR1cmluZyBldmFsdWF0aW9u
IG9mIGEgQ2xhc3NFeHByTm9kZS4KICAgICAgICAgLy8gSGVyZSwgYG1faWRlbnRgIHJlZmVycyB0
byBwcml2YXRlIHN5bWJvbCBJRCBpbiBhIGNsYXNzIGxleGljYWwgc2NvcGUsIGNvbnRhaW5pbmcg
dGhlIHZhbHVlIGFscmVhZHkgY29udmVydGVkIHRvIGFuIEV4cHJlc3Npb24uCiAgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZSgqbV9pZGVudCk7CkBAIC01MDcyLDcgKzUw
NzEsMTAgQEAgdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgaWYgKHNob3VsZFNldEZ1bmN0
aW9uTmFtZSkKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0U2V0RnVuY3Rpb25OYW1lKHZhbHVl
LmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmls
ZVR5cGUocHJpdmF0ZU5hbWUuZ2V0KCksIHZhciwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIG1f
aWRlbnQtPmxlbmd0aCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVy
dHkoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0
KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNvbmZpZ3Vy
YWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxlIHwgQnl0ZWNvZGVHZW5l
cmF0b3I6OlByb3BlcnR5RW51bWVyYWJsZSwgbV9wb3NpdGlvbik7CisgICAgICAgIHsKKyAgICAg
ICAgICAgIFN0cmljdE1vZGVTY29wZSBzdHJpY3RNb2RlU2NvcGUoZ2VuZXJhdG9yKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlWYWwoZ2VuZXJhdG9yLnRoaXNSZWdpc3Rl
cigpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOworICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGRiNTJjMDU2YzAxMDE3ZjVjNjJjYmMxYjVmZTEzNzNh
MDdhN2I0ZTUuLjZmYzU2MWUzZjg1NTVjMWM1ODcxNzc4NjcwODkwNjY0YjhjNDZlOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2xv
d1BhdGhGdW5jdGlvbi5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCisjaW5jbHVkZSAi
VHlwZUVycm9yLmgiCiAjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCkBAIC0xODYsMTggKzE4NywyNyBAQCBBTFdBWVNfSU5MSU5FIFN0cnVjdHVy
ZSogb3JpZ2luYWxTdHJ1Y3R1cmVCZWZvcmVQdXQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQogICAg
IHJldHVybiB2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKIH0KIAotCiBzdGF0aWMgQUxX
QVlTX0lOTElORSB2b2lkIHB1dERpcmVjdFdpdGhSZWlmeShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZSoq
IHJlc3VsdCA9IG51bGxwdHIpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIGlmIChiYXNlT2JqZWN0LT5pbmhlcml0czxKU0Z1bmN0aW9uPih2bSkpIHsK
KyAgICBib29sIGlzSlNGdW5jdGlvbiA9IGJhc2VPYmplY3QtPmluaGVyaXRzPEpTRnVuY3Rpb24+
KHZtKTsKKyAgICBpZiAoaXNKU0Z1bmN0aW9uKSB7CiAgICAgICAgIGpzQ2FzdDxKU0Z1bmN0aW9u
Kj4oYmFzZU9iamVjdCktPnJlaWZ5TGF6eVByb3BlcnR5SWZOZWVkZWQodm0sIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKICAgICB9CiAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgKnJlc3VsdCA9IG9yaWdpbmFs
U3RydWN0dXJlQmVmb3JlUHV0KHZtLCBiYXNlT2JqZWN0KTsKLSAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKKworICAgIGlmIChMSUtFTFkoaXNKU0Z1bmN0aW9uIHx8IGJhc2VPYmplY3QtPmNhblBlcmZv
cm1GYXN0UHV0RGlyZWN0SW5saW5lKHZtLCBwcm9wZXJ0eU5hbWUpKSkgeworICAgICAgICBhdXRv
IGVycm9yID0gYmFzZU9iamVjdC0+cHV0RGlyZWN0UmVzcGVjdGluZ0V4dGVuc2liaWxpdHkodm0s
IHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpOworICAgICAgICBpZiAoIWVycm9yLmlzTnVs
bCgpKQorICAgICAgICAgICAgdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHNsb3QuaXNT
dHJpY3RNb2RlKCksIGVycm9yKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzbG90LmRpc2FibGVD
YWNoaW5nKCk7CisgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICAgICAgUHJvcGVydHlEZXNj
cmlwdG9yIGRlc2NyaXB0b3IodmFsdWUsIDApOworICAgICAgICBiYXNlT2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKKyAgICB9CiB9CiAK
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0RGlyZWN0QWNjZXNzb3JXaXRoUmVpZnkoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogYmFzZU9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciwgdW5zaWdu
ZWQgYXR0cmlidXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
CmluZGV4IDBiMmVlYjY4YjFjMjU2OTJlZDkyMWUwZTkwMTkwNDllYzA1Y2M0YjAuLjI4ZTcyZWUz
N2QzMjhkODkzZTRkZWQ4NTQ2M2VkNWJkMmYzYWI5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTIwMDYsNyArMjAwNiw3IEBAIGJvb2wgSlNPYmpl
Y3Q6OnB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1CiAgICAgICAgIGF0dHJpYnV0ZXMgfD0gUHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbVZhbHVlOwogCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpcyk7Ci0gICAgYm9vbCBy
ZXN1bHQgPSBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzbG90KTsKKyAgICBib29sIHJlc3VsdCA9
IHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eUlnbm9yaW5nRXh0ZW5z
aWJpbGl0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpLmlzTnVs
bCgpOwogCiAgICAgQVNTRVJUKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJv
cGVydHkpOwogCkBAIC0yMDM3LDcgKzIwMzcsNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RO
b25JbmRleEFjY2Vzc29yKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgR2V0dAog
ewogICAgIEFTU0VSVChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsK
ICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKLSAgICBib29sIHJlc3VsdCA9IHB1dERp
cmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwg
YWNjZXNzb3IsIGF0dHJpYnV0ZXMsIHNsb3QpOworICAgIGJvb2wgcmVzdWx0ID0gcHV0RGlyZWN0
SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5SWdub3JpbmdFeHRlbnNpYmlsaXR5Pih2
bSwgcHJvcGVydHlOYW1lLCBhY2Nlc3NvciwgYXR0cmlidXRlcywgc2xvdCkuaXNOdWxsKCk7CiAK
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAgICAgaWYg
KGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAwYzRkZmEzMWQ4NzNiN2E5MzI5OWFkN2Vk
ZDExODQwYWVhOGMyZTliLi44OTkxNTJkYWMxNWQ3MWQyZWI0MDEwNTc0Y2FmOWExYmZhZTNjN2Q0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTEwMCw5ICsx
MDAsMTAgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBmcmllbmQgY2xh
c3MgTWFya2VkQmxvY2s7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZnJpZW5kIGJvb2wgc2V0VXBT
dGF0aWNGdW5jdGlvblNsb3QoVk0mLCBjb25zdCBIYXNoVGFibGVWYWx1ZSosIEpTT2JqZWN0Kiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgIGVudW0gUHV0TW9kZSB7CisgICAg
ZW51bSBQdXRNb2RlIDogdWludDhfdCB7CiAgICAgICAgIFB1dE1vZGVQdXQsCiAgICAgICAgIFB1
dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eSwKKyAgICAgICAgUHV0TW9kZURlZmluZU93blByb3BlcnR5
SWdub3JpbmdFeHRlbnNpYmlsaXR5LAogICAgIH07CiAKIHB1YmxpYzoKQEAgLTY4NSw2ICs2ODYs
NyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgcHV0RGlyZWN0
KFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMCk7CiAg
ICAgYm9vbCBwdXREaXJlY3QoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIGJvb2wgcHV0RGlyZWN0KFZNJiwgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBBU0NJSUxpdGVyYWwg
cHV0RGlyZWN0UmVzcGVjdGluZ0V4dGVuc2liaWxpdHkoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHZvaWQgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMgPSAwKTsKICAgICBib29sIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3Io
Vk0mLCBQcm9wZXJ0eU5hbWUsIEdldHRlclNldHRlciosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwog
ICAgIHZvaWQgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRUcmFuc2l0aW9uKFZNJiwg
UHJvcGVydHlOYW1lLCBHZXR0ZXJTZXR0ZXIqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKQEAgLTEw
MDIsNyArMTAwNCwxMCBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZ2V0TWV0aG9kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbERh
dGEmLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogCiAg
ICAgYm9vbCBjYW5QZXJmb3JtRmFzdFB1dElubGluZShWTSYsIFByb3BlcnR5TmFtZSk7CisgICAg
Ym9vbCBjYW5QZXJmb3JtRmFzdFB1dERpcmVjdElubGluZShWTSYsIFByb3BlcnR5TmFtZSk7CisK
ICAgICBib29sIGNhblBlcmZvcm1GYXN0UHV0SW5saW5lRXhjbHVkaW5nUHJvdG8oVk0mKTsKKyAg
ICBib29sIGNhblBlcmZvcm1GYXN0UHV0RGlyZWN0SW5saW5lRXhjbHVkaW5nUHJvdG8oVk0mKTsK
IAogICAgIGJvb2wgbWF5QmVQcm90b3R5cGUoKSBjb25zdDsKICAgICB2b2lkIGRpZEJlY29tZVBy
b3RvdHlwZSgpOwpAQCAtMTE1Niw3ICsxMTYxLDcgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICBBcnJheVN0b3JhZ2UqIGVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZVdo
ZW5BcnJheVN0b3JhZ2VBbHJlYWR5RXhpc3RzKFZNJiwgQXJyYXlTdG9yYWdlKik7CiAgICAgICAg
IAogICAgIHRlbXBsYXRlPFB1dE1vZGU+Ci0gICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChWTSYs
IFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0ciwgUHV0UHJvcGVydHlTbG90Jik7
CisgICAgQVNDSUlMaXRlcmFsIHB1dERpcmVjdEludGVybmFsKFZNJiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCB1bnNpZ25lZCBhdHRyLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIE5FVkVSX0lOTElORSBib29sIHB1dElubGluZVNsb3coSlNHbG9iYWxPYmplY3Qq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIE5FVkVSX0lOTElORSBib29sIHB1dElubGluZUZhc3RSZXBsYWNpbmdTdGF0aWNQ
cm9wZXJ0eUlmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmKTsKQEAgLTE1ODIsMjEgKzE1ODcsMjggQEAgaW5saW5lIGJvb2wgSlNP
YmplY3Q6OnB1dERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUKICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1
dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKSk7CiAgICAgQVNTRVJUKCF2YWx1ZS5p
c0N1c3RvbUdldHRlclNldHRlcigpICYmICEoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3Nvck9yVmFsdWUpKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlz
KTsKLSAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5
Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CisgICAgcmV0dXJu
IHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eUlnbm9yaW5nRXh0ZW5z
aWJpbGl0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpLmlzTnVs
bCgpOwogfQogCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
UHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0
ZXIoKSk7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0N1c3RvbUdldHRlclNldHRlcigpKTsKLSAgICBy
ZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CisgICAgcmV0dXJuIHB1dERpcmVj
dEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eUlnbm9yaW5nRXh0ZW5zaWJpbGl0eT4o
dm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpLmlzTnVsbCgpOwogfQog
CiBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSk7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0N1
c3RvbUdldHRlclNldHRlcigpKTsKLSAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9k
ZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7Cisg
ICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eUlnbm9y
aW5nRXh0ZW5zaWJpbGl0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpLmlzTnVs
bCgpOworfQorCitpbmxpbmUgQVNDSUlMaXRlcmFsIEpTT2JqZWN0OjpwdXREaXJlY3RSZXNwZWN0
aW5nRXh0ZW5zaWJpbGl0eShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3sK
KyAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkpOworICAgIEFTU0VSVCghdmFsdWUu
aXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSk7CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1
dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0
ZXMsIHNsb3QpOwogfQogCiBjb25zdGV4cHIgaW5saW5lIGludHB0cl90IG9mZnNldEluQnV0dGVy
Zmx5KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggNzYwYTlhOWUyZWM0N2RiMzhmYTIzYmFkODk0
ZTBlODBkYTY3NDBkMS4uM2JhM2JjYzlhY2M1MmVlODZjZDRjMmIxMDliOTVkYTQyZjZjZDgzYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgK
QEAgLTgyLDYgKzgyLDE2IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Y2FuUGVyZm9y
bUZhc3RQdXRJbmxpbmVFeGNsdWRpbmdQcm90byhWTSYgdm0pCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKK0FMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Y2FuUGVyZm9ybUZhc3RQ
dXREaXJlY3RJbmxpbmVFeGNsdWRpbmdQcm90byhWTSYgdm0pCit7CisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1Jl
YWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKSB8fCBzdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvdG90eXBlKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZGVmaW5l
T3duUHJvcGVydHkgIT0gJkpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNP
YmplY3Q6OmNhblBlcmZvcm1GYXN0UHV0SW5saW5lKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKIHsKICAgICBpZiAoVU5MSUtFTFkocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5
TmFtZXMtPnVuZGVyc2NvcmVQcm90bykpCkBAIC04OSw2ICs5OSwxMyBAQCBBTFdBWVNfSU5MSU5F
IGJvb2wgSlNPYmplY3Q6OmNhblBlcmZvcm1GYXN0UHV0SW5saW5lKFZNJiB2bSwgUHJvcGVydHlO
YW1lIHByb3BlcgogICAgIHJldHVybiBjYW5QZXJmb3JtRmFzdFB1dElubGluZUV4Y2x1ZGluZ1By
b3RvKHZtKTsKIH0KIAorQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpjYW5QZXJmb3JtRmFz
dFB1dERpcmVjdElubGluZShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7Cisg
ICAgaWYgKFVOTElLRUxZKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNj
b3JlUHJvdG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNhblBlcmZvcm1G
YXN0UHV0RGlyZWN0SW5saW5lRXhjbHVkaW5nUHJvdG8odm0pOworfQorCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDYWxsYmFja1doZW5Ob0V4Y2VwdGlvbj4KIEFMV0FZU19JTkxJTkUgdHlwZW5hbWUgc3Rk
OjppbnZva2VfcmVzdWx0PENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uLCBib29sLCBQcm9wZXJ0eVNs
b3QmPjo6dHlwZSBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIENhbGxiYWNrV2hlbk5vRXhjZXB0
aW9uIGNhbGxiYWNrKSBjb25zdAogewpAQCAtMjgzLDggKzMwMCw5IEBAIEFMV0FZU19JTkxJTkUg
Ym9vbCBKU09iamVjdDo6cHV0SW5saW5lRmFzdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgLy8gRklYTUU6IEZvciBhIGZhaWx1cmUgZHVlIHRvIG5vbi1leHRlbnNpYmxlIHN0cnVjdHVy
ZSwgdGhlIGVycm9yIG1lc3NhZ2UgaXMgbWlzbGVhZGluZwotICAgIGlmICghcHV0RGlyZWN0SW50
ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpKQotICAg
ICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHNsb3QuaXNTdHJpY3RN
b2RlKCksIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICBhdXRvIGVycm9yID0gcHV0
RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNs
b3QpOworICAgIGlmICghZXJyb3IuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB0eXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgZXJyb3IpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0zMTksNyArMzM3LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpT
T2JqZWN0OjpoYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNp
Z24KIH0KIAogdGVtcGxhdGU8SlNPYmplY3Q6OlB1dE1vZGUgbW9kZT4KLUFMV0FZU19JTkxJTkUg
Ym9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCitBTFdBWVNfSU5MSU5FIEFTQ0lJTGl0ZXJhbCBKU09iamVjdDo6cHV0RGly
ZWN0SW50ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
QVNTRVJUKHZhbHVlKTsKICAgICBBU1NFUlQodmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSA9PSAhIShh
dHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKSk7CkBAIC0zMzUsMjYgKzM1
MywyNiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZN
JiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZQogICAgICAgICB1bnNpZ25lZCBjdXJyZW50
QXR0cmlidXRlczsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5n
ZXQodm0sIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAob2Zm
c2V0ICE9IGludmFsaWRPZmZzZXQpIHsKLSAgICAgICAgICAgIGlmICgobW9kZSA9PSBQdXRNb2Rl
UHV0KSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seU9y
QWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIGlmICgobW9kZSA9PSBQdXRNb2RlUHV0IHx8IG1vZGUgPT0gUHV0TW9kZURl
ZmluZU93blByb3BlcnR5KSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seU9yQWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yKQorICAgICAgICAgICAgICAgIHJl
dHVybiBSZWFkb25seVByb3BlcnR5Q2hhbmdlRXJyb3I7CiAKICAgICAgICAgICAgIHB1dERpcmVj
dCh2bSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmRpZFJlcGxhY2VQ
cm9wZXJ0eShvZmZzZXQpOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogQ2hlY2sgYXR0cmlidXRl
cyBhZ2FpbnN0IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvck9yVmFsdWUuIENoYW5n
aW5nIEdldHRlclNldHRlciBzaG91bGQgd29yayB3L28gdHJhbnNpdGlvbi4KICAgICAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQzNDIKLSAgICAg
ICAgICAgIGlmIChtb2RlID09IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eSAmJiAoYXR0cmlidXRl
cyAhPSBjdXJyZW50QXR0cmlidXRlcyB8fCAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRl
OjpBY2Nlc3Nvck9yQ3VzdG9tQWNjZXNzb3JPclZhbHVlKSkpCisgICAgICAgICAgICBpZiAoKG1v
ZGUgPT0gUHV0TW9kZURlZmluZU93blByb3BlcnR5IHx8IG1vZGUgPT0gUHV0TW9kZURlZmluZU93
blByb3BlcnR5SWdub3JpbmdFeHRlbnNpYmlsaXR5KSAmJiAoYXR0cmlidXRlcyAhPSBjdXJyZW50
QXR0cmlidXRlcyB8fCAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvck9y
Q3VzdG9tQWNjZXNzb3JPclZhbHVlKSkpCiAgICAgICAgICAgICAgICAgc2V0U3RydWN0dXJlKHZt
LCBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzKSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgICBBU1NFUlQoIShjdXJyZW50QXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nl
c3Nvck9yQ3VzdG9tQWNjZXNzb3JPclZhbHVlKSk7CiAgICAgICAgICAgICAgICAgc2xvdC5zZXRF
eGlzdGluZ1Byb3BlcnR5KHRoaXMsIG9mZnNldCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgp
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmICFpc1N0
cnVjdHVyZUV4dGVuc2libGUodm0pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCB8fCBtb2RlID09IFB1dE1vZGVEZWZpbmVPd25Qcm9w
ZXJ0eSkgJiYgIWlzU3RydWN0dXJlRXh0ZW5zaWJsZSh2bSkpCisgICAgICAgICAgICByZXR1cm4g
Tm9uRXh0ZW5zaWJsZU9iamVjdFByb3BlcnR5RGVmaW5lRXJyb3I7CiAKICAgICAgICAgb2Zmc2V0
ID0gcHJlcGFyZVRvUHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcywgc3RydWN0dXJlSUQsIHN0cnVjdHVyZSk7CiAgICAgICAgIHZhbGlkYXRlT2Zm
c2V0KG9mZnNldCk7CkBAIC0zNjIsNyArMzgwLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3RJbnRlcm5hbChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUK
ICAgICAgICAgc2xvdC5zZXROZXdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwogICAgICAgICBpZiAo
YXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkKICAgICAgICAgICAgIHRo
aXMtPnN0cnVjdHVyZSh2bSktPnNldENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7Ci0gICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAg
ICAgfQogCiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwpAQCAtMzg2LDIxICs0MDQsMjEgQEAg
QUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChWTSYgdm0sIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUKICAgICAgICAgcHV0RGlyZWN0KHZtLCBvZmZzZXQsIHZh
bHVlKTsKICAgICAgICAgc2V0U3RydWN0dXJlKHZtLCBuZXdTdHJ1Y3R1cmUpOwogICAgICAgICBz
bG90LnNldE5ld1Byb3BlcnR5KHRoaXMsIG9mZnNldCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgfQogCiAgICAgdW5zaWdu
ZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAgICAgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHBy
b3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMpOwogICAgIGlmIChvZmZzZXQgIT0gaW52YWxp
ZE9mZnNldCkgewotICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0
dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHlPckFjY2Vzc29yT3JDdXN0b21B
Y2Nlc3NvcikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKChtb2RlID09
IFB1dE1vZGVQdXQgfHwgbW9kZSA9PSBQdXRNb2RlRGVmaW5lT3duUHJvcGVydHkpICYmIGN1cnJl
bnRBdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5T3JBY2Nlc3Nvck9yQ3Vz
dG9tQWNjZXNzb3IpCisgICAgICAgICAgICByZXR1cm4gUmVhZG9ubHlQcm9wZXJ0eUNoYW5nZUVy
cm9yOwogCiAgICAgICAgIHN0cnVjdHVyZS0+ZGlkUmVwbGFjZVByb3BlcnR5KG9mZnNldCk7CiAg
ICAgICAgIHB1dERpcmVjdCh2bSwgb2Zmc2V0LCB2YWx1ZSk7CiAKICAgICAgICAgLy8gRklYTUU6
IENoZWNrIGF0dHJpYnV0ZXMgYWdhaW5zdCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3JPclZhbHVlLiBDaGFuZ2luZyBHZXR0ZXJTZXR0ZXIgc2hvdWxkIHdvcmsgdy9vIHRyYW5zaXRp
b24uCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTQzNDIKLSAgICAgICAgaWYgKG1vZGUgPT0gUHV0TW9kZURlZmluZU93blByb3BlcnR5ICYmIChh
dHRyaWJ1dGVzICE9IGN1cnJlbnRBdHRyaWJ1dGVzIHx8IChhdHRyaWJ1dGVzICYgUHJvcGVydHlB
dHRyaWJ1dGU6OkFjY2Vzc29yT3JDdXN0b21BY2Nlc3Nvck9yVmFsdWUpKSkgeworICAgICAgICBp
ZiAoKG1vZGUgPT0gUHV0TW9kZURlZmluZU93blByb3BlcnR5IHx8IG1vZGUgPT0gUHV0TW9kZURl
ZmluZU93blByb3BlcnR5SWdub3JpbmdFeHRlbnNpYmlsaXR5KSAmJiAoYXR0cmlidXRlcyAhPSBj
dXJyZW50QXR0cmlidXRlcyB8fCAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nl
c3Nvck9yQ3VzdG9tQWNjZXNzb3JPclZhbHVlKSkpIHsKICAgICAgICAgICAgIC8vIFdlIHdhbnQg
dGhlIHN0cnVjdHVyZSB0cmFuc2l0aW9uIHdhdGNocG9pbnQgdG8gZmlyZSBhZnRlciB0aGlzIG9i
amVjdCBoYXMgc3dpdGNoZWQgc3RydWN0dXJlLgogICAgICAgICAgICAgLy8gVGhpcyBhbGxvd3Mg
YWRhcHRpdmUgd2F0Y2hwb2ludHMgdG8gb2JzZXJ2ZSBpZiB0aGUgbmV3IHN0cnVjdHVyZSBpcyB0
aGUgb25lIHdlIHdhbnQuCiAgICAgICAgICAgICBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25X
YXRjaHBvaW50RmlyZSBkZWZlcnJlZFdhdGNocG9pbnRGaXJlKHZtLCBzdHJ1Y3R1cmUpOwpAQCAt
NDEwLDExICs0MjgsMTEgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJ
bnRlcm5hbChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUKICAgICAgICAgICAgIHNs
b3Quc2V0RXhpc3RpbmdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwogICAgICAgICB9CiAKLSAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKICAg
ICB9CiAKLSAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgIWlzU3RydWN0dXJlRXh0ZW5z
aWJsZSh2bSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKG1vZGUgPT0gUHV0TW9k
ZVB1dCB8fCBtb2RlID09IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eSkgJiYgIWlzU3RydWN0dXJl
RXh0ZW5zaWJsZSh2bSkpCisgICAgICAgIHJldHVybiBOb25FeHRlbnNpYmxlT2JqZWN0UHJvcGVy
dHlEZWZpbmVFcnJvcjsKICAgICAKICAgICAvLyBXZSB3YW50IHRoZSBzdHJ1Y3R1cmUgdHJhbnNp
dGlvbiB3YXRjaHBvaW50IHRvIGZpcmUgYWZ0ZXIgdGhpcyBvYmplY3QgaGFzIHN3aXRjaGVkIHN0
cnVjdHVyZS4KICAgICAvLyBUaGlzIGFsbG93cyBhZGFwdGl2ZSB3YXRjaHBvaW50cyB0byBvYnNl
cnZlIGlmIHRoZSBuZXcgc3RydWN0dXJlIGlzIHRoZSBvbmUgd2Ugd2FudC4KQEAgLTQzOSw3ICs0
NTcsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZN
JiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZQogICAgIHNsb3Quc2V0TmV3UHJvcGVydHko
dGhpcywgb2Zmc2V0KTsKICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSkKICAgICAgICAgbmV3U3RydWN0dXJlLT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVy
dGllcygpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwo
KTsKIH0KIAogaW5saW5lIGJvb2wgSlNPYmplY3Q6Om1heUJlUHJvdG90eXBlKCkgY29uc3QKQEAg
LTU3Myw3ICs1OTEsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6dmFsaWRhdGVQdXRPd25EYXRh
UHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogaW5saW5lIGJvb2wgSlNP
YmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICB2YWxpZGF0
ZVB1dE93bkRhdGFQcm9wZXJ0eSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7Ci0gICAgcmV0dXJu
IHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAw
LCBzbG90KTsKKyAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpLmlzTnVsbCgpOwogfQogCiBpbmxpbmUgYm9vbCBK
U09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5TWF5QmVJbmRleChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC01ODMsNyArNjAxLDcgQEAgaW5saW5lIGJvb2wgSlNPYmpl
Y3Q6OnB1dE93bkRhdGFQcm9wZXJ0eU1heUJlSW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4
KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBwdXREaXJlY3RJbmRleChnbG9iYWxPYmpl
Y3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBQdXREaXJlY3RJbmRleExpa2VQdXREaXJlY3Qp
OwogCi0gICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKKyAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0
TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpLmlzTnVsbCgpOwogfQog
CiBBTFdBWVNfSU5MSU5FIENhbGxEYXRhIGdldENhbGxEYXRhKFZNJiB2bSwgSlNDZWxsKiBjZWxs
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmgKaW5kZXggYjc4MzNiZGYxMWEzYjY1MzI1M2I1
ZjZiMmJkNjJiNjg3ZmJhYzZjNS4uNWMyMzdmMzA5ZTFiODBjZWFhMmEzYzJhYzJhOGM0ZGFhNzJl
NjMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCkBAIC00OSw2ICs0OSw4IEBAIGNs
YXNzIEFTQ0lJTGl0ZXJhbCBmaW5hbCB7CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwgeyBu
dWxscHRyIH07CiAgICAgfQogCisgICAgY29uc3RleHByIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gIW1fY2hhcmFjdGVyczsgfQorCiAgICAgY29uc3RleHByIGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0KICAgICBjb25zdCBMQ2hhciog
Y2hhcmFjdGVyczgoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgTENoYXIqPiht
X2NoYXJhY3RlcnMpOyB9CiAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHN0cmxl
bihtX2NoYXJhY3RlcnMpOyB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGU5MjZlNDRmYTgxNGMxMzFmNjNmOWUwOTgwNzA1MmExNjA2NTRh
YzAuLjQ3OWU4NWRmYjQzZmJkNzQ4NTgyMTY4MjY5NGQ1MDdjY2I1NTI2MzkgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMjEtMTEtMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAg
ICAgICBbSlNDXSBQdWJsaWMgQ2xhc3MgRmllbGQgaW5pdGlhbGl6YXRpb24gaXMgc2xvdworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDc5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNo
bWFya3MvY2xhc3MtZmllbGRzLWNsYXNzaWMtY29uc3RydWN0b3ItYXNzaWdubWVudHMuanM6IEFk
ZGVkLgorICAgICAgICAoQ2xhc3NpY19Db25zdHJ1Y3Rvcl9Bc3NpZ25tZW50cyk6CisgICAgICAg
IChiZW5jaCk6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRl
LWZpZWxkcy5qczogQWRkZWQuCisgICAgICAgIChFUzIwMjJfUHJpdmF0ZV9GaWVsZHMpOgorICAg
ICAgICAoYmVuY2gpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtcHVi
bGljLWZpZWxkcy5qczogQWRkZWQuCisgICAgICAgIChFUzIwMjJfUHVibGljX0ZpZWxkcyk6Cisg
ICAgICAgIChiZW5jaCk6CisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1nZXR0ZXItb3Zl
cnJpZGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoZGVmaW5l
Q0dldHRlci4pOgorICAgICAgICAoQik6CisgICAgICAgIChkZWZpbmUwR2V0dGVyLik6CisgICAg
ICAgIChkZWZpbmUwR2V0dGVyKToKKyAgICAgICAgKEQpOgorCiAyMDIxLTExLTE5ICBBc3VtdSBU
YWtpa2F3YSAgPGFzdW11QGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4IFdlYkFzc2VtYmx5IG1l
bW9yeS5maWxsIG91dCBvZiBib3VuZHMgZXJyb3IgbWVzc2FnZQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLWNsYXNzaWMtY29uc3RydWN0b3ItYXNzaWdu
bWVudHMuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtY2xhc3NpYy1j
b25zdHJ1Y3Rvci1hc3NpZ25tZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTA1ZWQ4MTAxMTlkODYyODU3
MjY0NGZkNzljNzZlMTJiMWZlZGMzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvY2xhc3MtZmllbGRzLWNsYXNzaWMtY29uc3RydWN0b3ItYXNzaWdubWVudHMuanMK
QEAgLTAsMCArMSwyOCBAQAorY2xhc3MgQ2xhc3NpY19Db25zdHJ1Y3Rvcl9Bc3NpZ25tZW50cyB7
CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHRoaXMudmVyaWZpY2F0aW9uPTE7CisKKyAg
ICAgICAgdGhpcy5fMDA9MTsgdGhpcy5fMDE9MTsgdGhpcy5fMDI9MTsgdGhpcy5fMDM9MTsgdGhp
cy5fMDQ9MTsgdGhpcy5fMDU9MTsgdGhpcy5fMDY9MTsgdGhpcy5fMDc9MTsgdGhpcy5fMDg9MTsg
dGhpcy5fMDk9MTsKKyAgICAgICAgdGhpcy5fMTA9MTsgdGhpcy5fMTE9MTsgdGhpcy5fMTI9MTsg
dGhpcy5fMTM9MTsgdGhpcy5fMTQ9MTsgdGhpcy5fMTU9MTsgdGhpcy5fMTY9MTsgdGhpcy5fMTc9
MTsgdGhpcy5fMTg9MTsgdGhpcy5fMTk9MTsKKyAgICAgICAgdGhpcy5fMjA9MTsgdGhpcy5fMjE9
MTsgdGhpcy5fMjI9MTsgdGhpcy5fMjM9MTsgdGhpcy5fMjQ9MTsgdGhpcy5fMjU9MTsgdGhpcy5f
MjY9MTsgdGhpcy5fMjc9MTsgdGhpcy5fMjg9MTsgdGhpcy5fMjk9MTsKKyAgICAgICAgdGhpcy5f
MzA9MTsgdGhpcy5fMzE9MTsgdGhpcy5fMzI9MTsgdGhpcy5fMzM9MTsgdGhpcy5fMzQ9MTsgdGhp
cy5fMzU9MTsgdGhpcy5fMzY9MTsgdGhpcy5fMzc9MTsgdGhpcy5fMzg9MTsgdGhpcy5fMzk9MTsK
KyAgICAgICAgdGhpcy5fNDA9MTsgdGhpcy5fNDE9MTsgdGhpcy5fNDI9MTsgdGhpcy5fNDM9MTsg
dGhpcy5fNDQ9MTsgdGhpcy5fNDU9MTsgdGhpcy5fNDY9MTsgdGhpcy5fNDc9MTsgdGhpcy5fNDg9
MTsgdGhpcy5fNDk9MTsKKyAgICAgICAgdGhpcy5fNTA9MTsgdGhpcy5fNTE9MTsgdGhpcy5fNTI9
MTsgdGhpcy5fNTM9MTsgdGhpcy5fNTQ9MTsgdGhpcy5fNTU9MTsgdGhpcy5fNTY9MTsgdGhpcy5f
NTc9MTsgdGhpcy5fNTg9MTsgdGhpcy5fNTk9MTsKKyAgICAgICAgdGhpcy5fNjA9MTsgdGhpcy5f
NjE9MTsgdGhpcy5fNjI9MTsgdGhpcy5fNjM9MTsgdGhpcy5fNjQ9MTsgdGhpcy5fNjU9MTsgdGhp
cy5fNjY9MTsgdGhpcy5fNjc9MTsgdGhpcy5fNjg9MTsgdGhpcy5fNjk9MTsKKyAgICAgICAgdGhp
cy5fNzA9MTsgdGhpcy5fNzE9MTsgdGhpcy5fNzI9MTsgdGhpcy5fNzM9MTsgdGhpcy5fNzQ9MTsg
dGhpcy5fNzU9MTsgdGhpcy5fNzY9MTsgdGhpcy5fNzc9MTsgdGhpcy5fNzg9MTsgdGhpcy5fNzk9
MTsKKyAgICAgICAgdGhpcy5fODA9MTsgdGhpcy5fODE9MTsgdGhpcy5fODI9MTsgdGhpcy5fODM9
MTsgdGhpcy5fODQ9MTsgdGhpcy5fODU9MTsgdGhpcy5fODY9MTsgdGhpcy5fODc9MTsgdGhpcy5f
ODg9MTsgdGhpcy5fODk9MTsKKyAgICAgICAgdGhpcy5fOTA9MTsgdGhpcy5fOTE9MTsgdGhpcy5f
OTI9MTsgdGhpcy5fOTM9MTsgdGhpcy5fOTQ9MTsgdGhpcy5fOTU9MTsgdGhpcy5fOTY9MTsgdGhp
cy5fOTc9MTsgdGhpcy5fOTg9MTsgdGhpcy5fOTk9MTsKKyAgICB9Cit9CisKK2NvbnN0IElURVJB
VElPTlMgPSAxMDBfMDAwOworCitmdW5jdGlvbiBiZW5jaCh0ZXN0Q2xhc3MpIHsKKyAgICB2YXIg
YWNjID0gMDsKKyAgICBmb3IgKHZhciBpPTA7IGk8SVRFUkFUSU9OUzsgaSsrKSB7CisgICAgICAg
IGNvbnN0IGluc3RhbmNlID0gbmV3IHRlc3RDbGFzcygpCisgICAgICAgIGFjYyArPSBpbnN0YW5j
ZS52ZXJpZmljYXRpb247CisgICAgfQorfQorCitiZW5jaChDbGFzc2ljX0NvbnN0cnVjdG9yX0Fz
c2lnbm1lbnRzKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlLWZpZWxkcy5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlLWZpZWxkcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTMyNmY2ZDgzNWQxZWY3ZGVhNDI5
OThmY2M3Njc1MTY2MDE5YWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZmllbGRzLmpzCkBAIC0wLDAgKzEsMjkgQEAKK2Ns
YXNzIEVTMjAyMl9Qcml2YXRlX0ZpZWxkcyB7CisgICAgdmVyaWZpY2F0aW9uPTE7CisKKyAgICAj
XzAwPTE7ICNfMDE9MTsgI18wMj0xOyAjXzAzPTE7ICNfMDQ9MTsgI18wNT0xOyAjXzA2PTE7ICNf
MDc9MTsgI18wOD0xOyAjXzA5PTE7CisgICAgI18xMD0xOyAjXzExPTE7ICNfMTI9MTsgI18xMz0x
OyAjXzE0PTE7ICNfMTU9MTsgI18xNj0xOyAjXzE3PTE7ICNfMTg9MTsgI18xOT0xOworICAgICNf
MjA9MTsgI18yMT0xOyAjXzIyPTE7ICNfMjM9MTsgI18yND0xOyAjXzI1PTE7ICNfMjY9MTsgI18y
Nz0xOyAjXzI4PTE7ICNfMjk9MTsKKyAgICAjXzMwPTE7ICNfMzE9MTsgI18zMj0xOyAjXzMzPTE7
ICNfMzQ9MTsgI18zNT0xOyAjXzM2PTE7ICNfMzc9MTsgI18zOD0xOyAjXzM5PTE7CisgICAgI180
MD0xOyAjXzQxPTE7ICNfNDI9MTsgI180Mz0xOyAjXzQ0PTE7ICNfNDU9MTsgI180Nj0xOyAjXzQ3
PTE7ICNfNDg9MTsgI180OT0xOworICAgICNfNTA9MTsgI181MT0xOyAjXzUyPTE7ICNfNTM9MTsg
I181ND0xOyAjXzU1PTE7ICNfNTY9MTsgI181Nz0xOyAjXzU4PTE7ICNfNTk9MTsKKyAgICAjXzYw
PTE7ICNfNjE9MTsgI182Mj0xOyAjXzYzPTE7ICNfNjQ9MTsgI182NT0xOyAjXzY2PTE7ICNfNjc9
MTsgI182OD0xOyAjXzY5PTE7CisgICAgI183MD0xOyAjXzcxPTE7ICNfNzI9MTsgI183Mz0xOyAj
Xzc0PTE7ICNfNzU9MTsgI183Nj0xOyAjXzc3PTE7ICNfNzg9MTsgI183OT0xOworICAgICNfODA9
MTsgI184MT0xOyAjXzgyPTE7ICNfODM9MTsgI184ND0xOyAjXzg1PTE7ICNfODY9MTsgI184Nz0x
OyAjXzg4PTE7ICNfODk9MTsKKyAgICAjXzkwPTE7ICNfOTE9MTsgI185Mj0xOyAjXzkzPTE7ICNf
OTQ9MTsgI185NT0xOyAjXzk2PTE7ICNfOTc9MTsgI185OD0xOyAjXzk5PTE7Cit9CisKKworLy8g
QmVuY2htYXJraW5nCisKK2NvbnN0IElURVJBVElPTlMgPSAxMDBfMDAwOworCitmdW5jdGlvbiBi
ZW5jaCh0ZXN0Q2xhc3MpIHsKKyAgICB2YXIgYWNjID0gMDsKKyAgICBmb3IgKHZhciBpPTA7IGk8
SVRFUkFUSU9OUzsgaSsrKSB7CisgICAgICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IHRlc3RDbGFz
cygpCisgICAgICAgIGFjYyArPSBpbnN0YW5jZS52ZXJpZmljYXRpb247CisgICAgfQorfQorCiti
ZW5jaChFUzIwMjJfUHJpdmF0ZV9GaWVsZHMpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvY2xhc3MtZmllbGRzLXB1YmxpYy1maWVsZHMuanMgYi9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jbGFzcy1maWVsZHMtcHVibGljLWZpZWxkcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTk0ZDU1
OGI3ZDM5ZTkwNTE3MWM4MTBhMjdmMDllYjFiY2FjMTUyCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXB1YmxpYy1maWVsZHMuanMKQEAgLTAs
MCArMSwyNiBAQAorY2xhc3MgRVMyMDIyX1B1YmxpY19GaWVsZHMgeworICAgIHZlcmlmaWNhdGlv
bj0xOworCisgICAgXzAwPTE7IF8wMT0xOyBfMDI9MTsgXzAzPTE7IF8wND0xOyBfMDU9MTsgXzA2
PTE7IF8wNz0xOyBfMDg9MTsgXzA5PTE7CisgICAgXzEwPTE7IF8xMT0xOyBfMTI9MTsgXzEzPTE7
IF8xND0xOyBfMTU9MTsgXzE2PTE7IF8xNz0xOyBfMTg9MTsgXzE5PTE7CisgICAgXzIwPTE7IF8y
MT0xOyBfMjI9MTsgXzIzPTE7IF8yND0xOyBfMjU9MTsgXzI2PTE7IF8yNz0xOyBfMjg9MTsgXzI5
PTE7CisgICAgXzMwPTE7IF8zMT0xOyBfMzI9MTsgXzMzPTE7IF8zND0xOyBfMzU9MTsgXzM2PTE7
IF8zNz0xOyBfMzg9MTsgXzM5PTE7CisgICAgXzQwPTE7IF80MT0xOyBfNDI9MTsgXzQzPTE7IF80
ND0xOyBfNDU9MTsgXzQ2PTE7IF80Nz0xOyBfNDg9MTsgXzQ5PTE7CisgICAgXzUwPTE7IF81MT0x
OyBfNTI9MTsgXzUzPTE7IF81ND0xOyBfNTU9MTsgXzU2PTE7IF81Nz0xOyBfNTg9MTsgXzU5PTE7
CisgICAgXzYwPTE7IF82MT0xOyBfNjI9MTsgXzYzPTE7IF82ND0xOyBfNjU9MTsgXzY2PTE7IF82
Nz0xOyBfNjg9MTsgXzY5PTE7CisgICAgXzcwPTE7IF83MT0xOyBfNzI9MTsgXzczPTE7IF83ND0x
OyBfNzU9MTsgXzc2PTE7IF83Nz0xOyBfNzg9MTsgXzc5PTE7CisgICAgXzgwPTE7IF84MT0xOyBf
ODI9MTsgXzgzPTE7IF84ND0xOyBfODU9MTsgXzg2PTE7IF84Nz0xOyBfODg9MTsgXzg5PTE7Cisg
ICAgXzkwPTE7IF85MT0xOyBfOTI9MTsgXzkzPTE7IF85ND0xOyBfOTU9MTsgXzk2PTE7IF85Nz0x
OyBfOTg9MTsgXzk5PTE7Cit9CisKK2NvbnN0IElURVJBVElPTlMgPSAxMDBfMDAwOworCitmdW5j
dGlvbiBiZW5jaCh0ZXN0Q2xhc3MpIHsKKyAgICB2YXIgYWNjID0gMDsKKyAgICBmb3IgKHZhciBp
PTA7IGk8SVRFUkFUSU9OUzsgaSsrKSB7CisgICAgICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IHRl
c3RDbGFzcygpCisgICAgICAgIGFjYyArPSBpbnN0YW5jZS52ZXJpZmljYXRpb247CisgICAgfQor
fQorCitiZW5jaChFUzIwMjJfUHVibGljX0ZpZWxkcyk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9jbGFzcy1maWVsZHMtZ2V0dGVyLW92ZXJyaWRlLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xh
c3MtZmllbGRzLWdldHRlci1vdmVycmlkZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTIxNDMyMDRhNjkyYTU4
M2QwNDEyZWFhNGMwMWIxNTM3ZWU0OWYwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvY2xhc3MtZmllbGRzLWdldHRlci1vdmVycmlkZS5qcwpAQCAtMCwwICsxLDUwIEBACitmdW5j
dGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJv
d24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1
bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAg
ICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0g
ZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJp
bmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiBkZWZpbmVDR2V0dGVyKG9iaikgeworICAgIFJl
ZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqLCAiYyIsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigp
IHsgcmV0dXJuICdkZWZpbmVDR2V0dGVyJzsgfQorICAgIH0pOworfQorCitjbGFzcyBBIHsKKyAg
ICBiID0gZGVmaW5lQ0dldHRlcih0aGlzKTsKKyAgICBjID0gNDI7Cit9Oworc2hvdWxkVGhyb3co
KCkgPT4gbmV3IEEoKSwgYFR5cGVFcnJvcjogQXR0ZW1wdGluZyB0byBjaGFuZ2UgY29uZmlndXJh
YmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS5gKTsKKworbGV0IGtleSA9
ICdjJzsKK2NsYXNzIEIgeworICAgIGIgPSBkZWZpbmVDR2V0dGVyKHRoaXMpOworICAgIFtrZXld
ID0gNDI7Cit9Oworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEIoKSwgYFR5cGVFcnJvcjogQXR0ZW1w
dGluZyB0byBjaGFuZ2UgY29uZmlndXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBw
cm9wZXJ0eS5gKTsKKworZnVuY3Rpb24gZGVmaW5lMEdldHRlcihvYmopIHsKKyAgICBSZWZsZWN0
LmRlZmluZVByb3BlcnR5KG9iaiwgIjAiLCB7CisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7IHJl
dHVybiAnZGVmaW5lQ0dldHRlcic7IH0KKyAgICB9KTsKK30KK2NsYXNzIEMgeworICAgIGIgPSBk
ZWZpbmUwR2V0dGVyKHRoaXMpOworICAgIFswXSA9IDQyOworfTsKK3Nob3VsZFRocm93KCgpID0+
IG5ldyBDKCksIGBUeXBlRXJyb3I6IEF0dGVtcHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBh
dHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuYCk7CisKK2NsYXNzIEQgeworICAg
IGIgPSBPYmplY3QuZnJlZXplKHRoaXMpOworICAgIFswXSA9IDQyOworfTsKK3Nob3VsZFRocm93
KCgpID0+IG5ldyBEKCksIGBUeXBlRXJyb3I6IEF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5
IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLmApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445120</attachid>
            <date>2021-11-24 22:18:12 -0800</date>
            <delta_ts>2021-11-24 22:27:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232479-20211125011804.patch</filename>
            <type>text/plain</type>
            <size>31027</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZjJhM2Q1MWYxMGQ1YzZlYmM0MWNkN2RmNzUwOTQzZDNlNzMzNjAzLi45OTE5MjQzZjBhZGE4ZDk5
MmMxMWU5MGQ4ZjRhM2QzYmQzYmU4OGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAyMS0xMS0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFB1YmxpYyBDbGFzcyBGaWVsZCBpbml0aWFsaXphdGlvbiBpcyBz
bG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0
NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGFz
cyBwdWJsaWMgZmllbGQgaW1wbGVtZW50YXRpb24gZGlkIG5vdCBoYXZlIG9wdGltaXphdGlvbiBm
b3IgaW5pdGlhbGl6aW5nIGNsYXNzIGZpZWxkczogdXNpbmcKKyAgICAgICAgcnVudGltZSBjYWxs
IHRvIGluaXRpYWxpemUgZmllbGRzIGluc3RlYWQgb2YgSUMuIFRoaXMgcGF0Y2ggbGV2ZXJhZ2Vz
IHB1dF9ieV9pZCAvIHB1dF9ieV92YWwgd2l0aAorICAgICAgICBkaXJlY3QgZmxhZyBzbyB0aGF0
IHdlIGNhbiBlbmFibGUgSUMuCisKKyAgICAgICAgQ3VycmVudGx5LCB3ZSBhcmUgbm90IGNoYW5n
aW5nIG9yaWdpbmFsIHB1dERpcmVjdCBzZW1hbnRpY3Mgc2luY2UgaXQgaXMgb3V0IG9mIHRoaXMg
cGF0Y2gncyBzY29wZS4KKyAgICAgICAgV2Ugd2lsbCBsb29rIGludG8gaXQgYW5kIHByb2JhYmx5
IGNoYW5naW5nIGl0IGluIGEgc2VwYXJhdGUgcGF0Y2gsIGJ1dCBub3QgaW4gdGhpcyBwYXRjaC4K
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRvVCAgICAgICAgICAgICAgICAgICAgIFBhdGNoZWQKKworICAgICAgICBjbGFzcy1m
aWVsZHMtY2xhc3NpYy1jb25zdHJ1Y3Rvci1hc3NpZ25tZW50cworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3LjE0OTErLTIuNjMyNyAgICAg
ICAgICAgMTUuMDkwNistMC42Nzk1ICAgICAgICAgIG1pZ2h0IGJlIDEuMTM2NHggZmFzdGVyCisg
ICAgICAgIGNsYXNzLWZpZWxkcy1wdWJsaWMtZmllbGRzICAgICAgICAgICAgICAgICAgICA0MDku
NDMyOCstOC4zMTQwICAgICBeICAgICAyMC4yNzUyKy0yLjA4MzUgICAgICAgIF4gZGVmaW5pdGVs
eSAyMC4xOTM4eCBmYXN0ZXIKKyAgICAgICAgY2xhc3MtZmllbGRzLXByaXZhdGUtZmllbGRzICAg
ICAgICAgICAgICAgICAgICAyNy4yNjIxKy0xLjM4NTggICAgICAgICAgIDI1LjE4MTArLTMuOTg3
MyAgICAgICAgICBtaWdodCBiZSAxLjA4MjZ4IGZhc3RlcgorCisgICAgICAgICogYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkRlZmluZUZpZWxkTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAg
ICAoSlNDOjpDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSk6CisgICAgICAgICog
cnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RD
dXN0b21BY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROb25JbmRl
eEFjY2Vzc29yKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0
UmVzcGVjdGluZ0V4dGVuc2liaWxpdHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5QZXJmb3JtRmFzdFB1dERpcmVjdElu
bGluZUV4Y2x1ZGluZ1Byb3RvKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhblBlcmZvcm1G
YXN0UHV0RGlyZWN0SW5saW5lKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dElubGluZUZh
c3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eU1heUJlSW5kZXgpOgorCiAyMDIxLTExLTIyICBHZXph
IExvcmUgIDxnbG9yZUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIE1ha2Ugc2hhcmluZyBv
ZiB1bmxpbmtlZCBiYXNlbGluZSBjb2RlIHBvc3NpYmxlIG9uIEpTVkFMVUUzMl82NApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBl
YWIzYjIwZGE1ZjQxYTI2MDEzODQ4Yzk1YjJlYjU2ZjMxY2QxNzgxLi4yZjk1MTAyY2IwMzdiYWE4
YzFlY2MzZGYzYWUwMTMwODM1ZjA0ZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTExLTI0
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gUHVi
bGljIENsYXNzIEZpZWxkIGluaXRpYWxpemF0aW9uIGlzIHNsb3cKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQ3OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvQVNDSUlMaXRlcmFsLmg6
CisKIDIwMjEtMTEtMTkgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgW01vZGVsXSBhZGQgYXVkaW8gc3VwcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGZlZGYyOWFlMTBjOTk2
YmRiZGY3ZmRjZDQ2NjE5MzZlNjgwZDE2ODguLjVkODQ1NjQ1YmEzMzkzMjM5OGRhMzMzNDkyMjVk
YTBmYzY4YWYzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTUwMzksMTAgKzUwMzksMTIgQEAgdm9pZCBEZWZpbmVG
aWVsZE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKikKIAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBEZWZpbmVGaWVsZE5v
ZGU6OlR5cGU6Ok5hbWU6IHsKLSAgICAgICAgLy8gRklYTUU6IEltcHJvdmUgcGVyZm9ybWFuY2Ug
b2YgcHVibGljIGNsYXNzIGZpZWxkcwotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MzMwCi0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9w
ZXJ0eU5hbWUgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwgKm1faWRlbnQpOwotICAgICAg
ICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShnZW5lcmF0b3IudGhpc1JlZ2lzdGVy
KCksIHByb3BlcnR5TmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5
dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9y
OjpQcm9wZXJ0eVdyaXRhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5RW51bWVyYWJs
ZSwgbV9wb3NpdGlvbik7CisgICAgICAgIFN0cmljdE1vZGVTY29wZSBzdHJpY3RNb2RlU2NvcGUo
Z2VuZXJhdG9yKTsKKyAgICAgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KCptX2lkZW50
KSkgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5TmFtZSA9IGdlbmVy
YXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihpbmRleC52YWx1ZSgpKSk7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5VmFsKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIo
KSwgcHJvcGVydHlOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci50aGlzUmVnaXN0
ZXIoKSwgKm1faWRlbnQsIHZhbHVlLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2UgRGVmaW5lRmllbGROb2RlOjpUeXBlOjpQcml2YXRlTmFtZTogewpAQCAtNTA1Nyw5ICs1
MDU5LDYgQEAgdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2UgRGVmaW5lRmllbGROb2RlOjpUeXBlOjpDb21wdXRlZE5hbWU6IHsKLSAgICAgICAgLy8g
RklYTUU6IEltcHJvdmUgcGVyZm9ybWFuY2Ugb2YgcHVibGljIGNsYXNzIGZpZWxkcwotICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MzMwCi0KICAg
ICAgICAgLy8gRm9yIENvbXB1dGVkTmFtZXMsIHRoZSBleHByZXNzaW9uIGhhcyBhbHJlYWR5IGJl
ZW4gZXZhbHVhdGVkIGVhcmxpZXIgZHVyaW5nIGV2YWx1YXRpb24gb2YgYSBDbGFzc0V4cHJOb2Rl
LgogICAgICAgICAvLyBIZXJlLCBgbV9pZGVudGAgcmVmZXJzIHRvIHByaXZhdGUgc3ltYm9sIElE
IGluIGEgY2xhc3MgbGV4aWNhbCBzY29wZSwgY29udGFpbmluZyB0aGUgdmFsdWUgYWxyZWFkeSBj
b252ZXJ0ZWQgdG8gYW4gRXhwcmVzc2lvbi4KICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJh
dG9yLnZhcmlhYmxlKCptX2lkZW50KTsKQEAgLTUwNzIsNyArNTA3MSwxMCBAQCB2b2lkIERlZmlu
ZUZpZWxkTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqKQogICAgICAgICBpZiAoc2hvdWxkU2V0RnVuY3Rpb25OYW1lKQogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRTZXRGdW5jdGlvbk5hbWUodmFsdWUuZ2V0KCksIHByaXZhdGVOYW1l
LmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcml2YXRlTmFtZS5n
ZXQoKSwgdmFyLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbV9pZGVudC0+bGVuZ3RoKCkpOwot
ICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShnZW5lcmF0b3IudGhpc1Jl
Z2lzdGVyKCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0
ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5l
cmF0b3I6OlByb3BlcnR5V3JpdGFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlFbnVt
ZXJhYmxlLCBtX3Bvc2l0aW9uKTsKKyAgICAgICAgeworICAgICAgICAgICAgU3RyaWN0TW9kZVNj
b3BlIHN0cmljdE1vZGVTY29wZShnZW5lcmF0b3IpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXREaXJlY3RQdXRCeVZhbChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIHByaXZhdGVOYW1lLmdl
dCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
aW5kZXggZGI1MmMwNTZjMDEwMTdmNWM2MmNiYzFiNWZlMTM3M2EwN2E3YjRlNS4uNmZjNTYxZTNm
ODU1NWMxYzU4NzE3Nzg2NzA4OTA2NjRiOGM0NmU5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTbG93UGF0aEZ1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKKyNpbmNsdWRlICJUeXBlRXJyb3IuaCIKICNpbmNs
dWRlICJWTUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTE4
NiwxOCArMTg3LDI3IEBAIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBvcmlnaW5hbFN0cnVjdHVy
ZUJlZm9yZVB1dChWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlLmFzQ2Vs
bCgpLT5zdHJ1Y3R1cmUodm0pOwogfQogCi0KIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0
RGlyZWN0V2l0aFJlaWZ5KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqIGJhc2VPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlKiogcmVzdWx0ID0gbnVsbHB0cikK
IHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgaWYgKGJh
c2VPYmplY3QtPmluaGVyaXRzPEpTRnVuY3Rpb24+KHZtKSkgeworICAgIGJvb2wgaXNKU0Z1bmN0
aW9uID0gYmFzZU9iamVjdC0+aW5oZXJpdHM8SlNGdW5jdGlvbj4odm0pOworICAgIGlmIChpc0pT
RnVuY3Rpb24pIHsKICAgICAgICAganNDYXN0PEpTRnVuY3Rpb24qPihiYXNlT2JqZWN0KS0+cmVp
ZnlMYXp5UHJvcGVydHlJZk5lZWRlZCh2bSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIH0KICAgICBp
ZiAocmVzdWx0KQogICAgICAgICAqcmVzdWx0ID0gb3JpZ2luYWxTdHJ1Y3R1cmVCZWZvcmVQdXQo
dm0sIGJhc2VPYmplY3QpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBiYXNlT2JqZWN0LT5w
dXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworCisgICAgaWYgKExJS0VM
WShpc0pTRnVuY3Rpb24gfHwgYmFzZU9iamVjdC0+Y2FuUGVyZm9ybUZhc3RQdXREaXJlY3RJbmxp
bmUodm0sIHByb3BlcnR5TmFtZSkpKSB7CisgICAgICAgIGF1dG8gZXJyb3IgPSBiYXNlT2JqZWN0
LT5wdXREaXJlY3RSZXNwZWN0aW5nRXh0ZW5zaWJpbGl0eSh2bSwgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgMCwgc2xvdCk7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpCisgICAgICAgICAgICB0
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgZXJyb3Ip
OworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3QuZGlzYWJsZUNhY2hpbmcoKTsKKyAgICAgICAg
c2NvcGUucmVsZWFzZSgpOworICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcih2
YWx1ZSwgMCk7CisgICAgICAgIGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3du
UHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgIH0KIH0KIAogc3RhdGljIEFMV0FZU19JTkxJ
TkUgdm9pZCBwdXREaXJlY3RBY2Nlc3NvcldpdGhSZWlmeShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yLCB1bnNpZ25lZCBhdHRyaWJ1dGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggMGIyZWViNjhiMWMy
NTY5MmVkOTIxZTBlOTAxOTA0OWVjMDVjYzRiMC4uMjhlNzJlZTM3ZDMyOGQ4OTNlNGRlZDg1NDYz
ZWQ1YmQyZjNhYjk5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcApAQCAtMjAwNiw3ICsyMDA2LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0Q3VzdG9t
QWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHUKICAgICAg
ICAgYXR0cmlidXRlcyB8PSBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tVmFsdWU7CiAKICAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKLSAgICBib29sIHJlc3VsdCA9IHB1dERpcmVjdElu
dGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUs
IGF0dHJpYnV0ZXMsIHNsb3QpOworICAgIGJvb2wgcmVzdWx0ID0gcHV0RGlyZWN0SW50ZXJuYWw8
UHV0TW9kZURlZmluZU93blByb3BlcnR5SWdub3JpbmdFeHRlbnNpYmlsaXR5Pih2bSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCkuaXNOdWxsKCk7CiAKICAgICBBU1NFUlQo
c2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSk7CiAKQEAgLTIwMzcs
NyArMjAzNyw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IoVk0m
IHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBHZXR0CiB7CiAgICAgQVNTRVJUKGF0dHJp
YnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KHRoaXMpOwotICAgIGJvb2wgcmVzdWx0ID0gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9k
ZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCBhY2Nlc3NvciwgYXR0cmlidXRl
cywgc2xvdCk7CisgICAgYm9vbCByZXN1bHQgPSBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVm
aW5lT3duUHJvcGVydHlJZ25vcmluZ0V4dGVuc2liaWxpdHk+KHZtLCBwcm9wZXJ0eU5hbWUsIGFj
Y2Vzc29yLCBhdHRyaWJ1dGVzLCBzbG90KS5pc051bGwoKTsKIAogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCmluZGV4IDBjNGRmYTMxZDg3M2I3YTkzMjk5YWQ3ZWRkMTE4NDBhZWE4YzJlOWIuLjg5
OTE1MmRhYzE1ZDcxZDJlYjQwMTA1NzRjYWY5YTFiZmFlM2M3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMTAwLDkgKzEwMCwxMCBAQCBjbGFzcyBKU09i
amVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBmcmllbmQgYm9vbCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChW
TSYsIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiwgSlNPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwogCi0gICAgZW51bSBQdXRNb2RlIHsKKyAgICBlbnVtIFB1dE1vZGUgOiB1aW50
OF90IHsKICAgICAgICAgUHV0TW9kZVB1dCwKICAgICAgICAgUHV0TW9kZURlZmluZU93blByb3Bl
cnR5LAorICAgICAgICBQdXRNb2RlRGVmaW5lT3duUHJvcGVydHlJZ25vcmluZ0V4dGVuc2liaWxp
dHksCiAgICAgfTsKIAogcHVibGljOgpAQCAtNjg1LDYgKzY4Niw3IEBAIGNsYXNzIEpTT2JqZWN0
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBwdXREaXJlY3QoVk0mLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKICAgICBib29sIHB1dERpcmVjdChW
TSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0UHJvcGVy
dHlTbG90Jik7CiAgICAgYm9vbCBwdXREaXJlY3QoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOworICAgIEFTQ0lJTGl0ZXJhbCBwdXREaXJlY3RSZXNwZWN0aW5n
RXh0ZW5zaWJpbGl0eShWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDAp
OwogICAgIGJvb2wgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwg
R2V0dGVyU2V0dGVyKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgdm9pZCBwdXREaXJlY3RO
b25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24oVk0mLCBQcm9wZXJ0eU5hbWUsIEdldHRl
clNldHRlciosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpAQCAtMTAwMiw3ICsxMDA0LDEwIEBAIGNs
YXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNW
YWx1ZSBnZXRNZXRob2QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRGF0YSYsIGNvbnN0IElkZW50aWZp
ZXImLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAKICAgICBib29sIGNhblBlcmZvcm1G
YXN0UHV0SW5saW5lKFZNJiwgUHJvcGVydHlOYW1lKTsKKyAgICBib29sIGNhblBlcmZvcm1GYXN0
UHV0RGlyZWN0SW5saW5lKFZNJiwgUHJvcGVydHlOYW1lKTsKKwogICAgIGJvb2wgY2FuUGVyZm9y
bUZhc3RQdXRJbmxpbmVFeGNsdWRpbmdQcm90byhWTSYpOworICAgIGJvb2wgY2FuUGVyZm9ybUZh
c3RQdXREaXJlY3RJbmxpbmVFeGNsdWRpbmdQcm90byhWTSYpOwogCiAgICAgYm9vbCBtYXlCZVBy
b3RvdHlwZSgpIGNvbnN0OwogICAgIHZvaWQgZGlkQmVjb21lUHJvdG90eXBlKCk7CkBAIC0xMTU2
LDcgKzExNjEsNyBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIEFycmF5
U3RvcmFnZSogZW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlV2hlbkFycmF5U3RvcmFnZUFscmVh
ZHlFeGlzdHMoVk0mLCBBcnJheVN0b3JhZ2UqKTsKICAgICAgICAgCiAgICAgdGVtcGxhdGU8UHV0
TW9kZT4KLSAgICBib29sIHB1dERpcmVjdEludGVybmFsKFZNJiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCB1bnNpZ25lZCBhdHRyLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBBU0NJSUxpdGVyYWwg
cHV0RGlyZWN0SW50ZXJuYWwoVk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0
dHIsIFB1dFByb3BlcnR5U2xvdCYpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5M
SU5FIGJvb2wgcHV0SW5saW5lU2xvdyhKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgTkVWRVJfSU5M
SU5FIGJvb2wgcHV0SW5saW5lRmFzdFJlcGxhY2luZ1N0YXRpY1Byb3BlcnR5SWZOZWVkZWQoSlNH
bG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpA
QCAtMTU4MiwyMSArMTU4NywyOCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0KFZN
JiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZQogICAgIEFTU0VS
VCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6QWNjZXNzb3IpKTsKICAgICBBU1NFUlQoIXZhbHVlLmlzQ3VzdG9tR2V0dGVyU2V0dGVy
KCkgJiYgIShhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yT3JW
YWx1ZSkpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgIHJldHVybiBwdXRE
aXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBhdHRyaWJ1dGVzLCBzbG90KTsKKyAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8
UHV0TW9kZURlZmluZU93blByb3BlcnR5SWdub3JpbmdFeHRlbnNpYmlsaXR5Pih2bSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCkuaXNOdWxsKCk7CiB9CiAKIGlubGluZSBi
b29sIEpTT2JqZWN0OjpwdXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXRQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpKTsKICAgICBBU1NFUlQo
IXZhbHVlLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpOwotICAgIHJldHVybiBwdXREaXJlY3RJbnRl
cm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBh
dHRyaWJ1dGVzLCBzbG90KTsKKyAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURl
ZmluZU93blByb3BlcnR5SWdub3JpbmdFeHRlbnNpYmlsaXR5Pih2bSwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgYXR0cmlidXRlcywgc2xvdCkuaXNOdWxsKCk7CiB9CiAKIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dl
dHRlclNldHRlcigpKTsKICAgICBBU1NFUlQoIXZhbHVlLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkp
OwotICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+
KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KTsKKyAgICByZXR1cm4gcHV0RGlyZWN0
SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5SWdub3JpbmdFeHRlbnNpYmlsaXR5Pih2
bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCkuaXNOdWxsKCk7Cit9CisKK2lubGluZSBB
U0NJSUxpdGVyYWwgSlNPYmplY3Q6OnB1dERpcmVjdFJlc3BlY3RpbmdFeHRlbnNpYmlsaXR5KFZN
JiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQg
YXR0cmlidXRlcywgUHV0UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIEFTU0VSVCghdmFsdWUu
aXNHZXR0ZXJTZXR0ZXIoKSk7CisgICAgQVNTRVJUKCF2YWx1ZS5pc0N1c3RvbUdldHRlclNldHRl
cigpKTsKKyAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3Bl
cnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CiB9CiAKIGNv
bnN0ZXhwciBpbmxpbmUgaW50cHRyX3Qgb2Zmc2V0SW5CdXR0ZXJmbHkoUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGlu
ZXMuaAppbmRleCA3NjBhOWE5ZTJlYzQ3ZGIzOGZhMjNiYWQ4OTRlMGU4MGRhNjc0MGQxLi4zYmEz
YmNjOWFjYzUyZWU4NmNkNGMyYjEwOWI5NWRhNDJmNmNkODNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtODIsNiArODIsMTYgQEAg
QUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpjYW5QZXJmb3JtRmFzdFB1dElubGluZUV4Y2x1
ZGluZ1Byb3RvKFZNJiB2bSkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorQUxXQVlT
X0lOTElORSBib29sIEpTT2JqZWN0OjpjYW5QZXJmb3JtRmFzdFB1dERpcmVjdElubGluZUV4Y2x1
ZGluZ1Byb3RvKFZNJiB2bSkKK3sKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0
cnVjdHVyZSh2bSk7CisgICAgaWYgKHN0cnVjdHVyZS0+aGFzUmVhZE9ubHlPckdldHRlclNldHRl
clByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpIHx8IHN0cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNHZXRQcm90b3R5cGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChzdHJ1
Y3R1cmUtPmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS5kZWZpbmVPd25Qcm9wZXJ0eSAhPSAmSlNP
YmplY3Q6OmRlZmluZU93blByb3BlcnR5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Y2FuUGVyZm9ybUZh
c3RQdXRJbmxpbmUoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGlm
IChVTkxJS0VMWShwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVBy
b3RvKSkKQEAgLTg5LDYgKzk5LDEzIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Y2Fu
UGVyZm9ybUZhc3RQdXRJbmxpbmUoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVyCiAgICAgcmV0
dXJuIGNhblBlcmZvcm1GYXN0UHV0SW5saW5lRXhjbHVkaW5nUHJvdG8odm0pOwogfQogCitBTFdB
WVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmNhblBlcmZvcm1GYXN0UHV0RGlyZWN0SW5saW5lKFZN
JiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICBpZiAoVU5MSUtFTFkocHJv
cGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bykpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY2FuUGVyZm9ybUZhc3RQdXREaXJlY3RJbmxpbmVF
eGNsdWRpbmdQcm90byh2bSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrV2hlbk5v
RXhjZXB0aW9uPgogQUxXQVlTX0lOTElORSB0eXBlbmFtZSBzdGQ6Omludm9rZV9yZXN1bHQ8Q2Fs
bGJhY2tXaGVuTm9FeGNlcHRpb24sIGJvb2wsIFByb3BlcnR5U2xvdCY+Ojp0eXBlIEpTT2JqZWN0
OjpnZXRQcm9wZXJ0eVNsb3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgQ2FsbGJhY2tXaGVuTm9FeGNlcHRpb24gY2FsbGJhY2spIGNvbnN0
CiB7CkBAIC0yODMsOCArMzAwLDkgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJ
bmxpbmVGYXN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnQKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyBGSVhNRTogRm9yIGEg
ZmFpbHVyZSBkdWUgdG8gbm9uLWV4dGVuc2libGUgc3RydWN0dXJlLCB0aGUgZXJyb3IgbWVzc2Fn
ZSBpcyBtaXNsZWFkaW5nCi0gICAgaWYgKCFwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2
bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCkpCi0gICAgICAgIHJldHVybiB0eXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpOworICAgIGF1dG8gZXJyb3IgPSBwdXREaXJlY3RJbnRlcm5hbDxQdXRN
b2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CisgICAgaWYgKCFlcnJv
ci5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBzbG90LmlzU3RyaWN0TW9kZSgpLCBlcnJvcik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTMxOSw3ICszMzcsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6Omhhc093blByb3Bl
cnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbgogfQogCiB0ZW1wbGF0ZTxK
U09iamVjdDo6UHV0TW9kZSBtb2RlPgotQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3RJbnRlcm5hbChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK0FMV0FZ
U19JTkxJTkUgQVNDSUlMaXRlcmFsIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChWTSYgdm0s
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAg
IEFTU0VSVCh2YWx1ZS5pc0dldHRlclNldHRlcigpID09ICEhKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0
eUF0dHJpYnV0ZTo6QWNjZXNzb3IpKTsKQEAgLTMzNSwyNiArMzUzLDI2IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lCiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1l
LCBjdXJyZW50QXR0cmlidXRlcyk7CiAgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNl
dCkgewotICAgICAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmIGN1cnJlbnRBdHRy
aWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5T3JBY2Nlc3Nvck9yQ3VzdG9tQWNj
ZXNzb3IpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCht
b2RlID09IFB1dE1vZGVQdXQgfHwgbW9kZSA9PSBQdXRNb2RlRGVmaW5lT3duUHJvcGVydHkpICYm
IGN1cnJlbnRBdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5T3JBY2Nlc3Nv
ck9yQ3VzdG9tQWNjZXNzb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIFJlYWRvbmx5UHJvcGVy
dHlDaGFuZ2VFcnJvcjsKIAogICAgICAgICAgICAgcHV0RGlyZWN0KHZtLCBvZmZzZXQsIHZhbHVl
KTsKICAgICAgICAgICAgIHN0cnVjdHVyZS0+ZGlkUmVwbGFjZVByb3BlcnR5KG9mZnNldCk7CiAK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBDaGVjayBhdHRyaWJ1dGVzIGFnYWluc3QgUHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yT3JWYWx1ZS4gQ2hhbmdpbmcgR2V0dGVyU2V0dGVyIHNo
b3VsZCB3b3JrIHcvbyB0cmFuc2l0aW9uLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDM0MgotICAgICAgICAgICAgaWYgKG1vZGUgPT0g
UHV0TW9kZURlZmluZU93blByb3BlcnR5ICYmIChhdHRyaWJ1dGVzICE9IGN1cnJlbnRBdHRyaWJ1
dGVzIHx8IChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yT3JDdXN0b21B
Y2Nlc3Nvck9yVmFsdWUpKSkKKyAgICAgICAgICAgIGlmICgobW9kZSA9PSBQdXRNb2RlRGVmaW5l
T3duUHJvcGVydHkgfHwgbW9kZSA9PSBQdXRNb2RlRGVmaW5lT3duUHJvcGVydHlJZ25vcmluZ0V4
dGVuc2liaWxpdHkpICYmIChhdHRyaWJ1dGVzICE9IGN1cnJlbnRBdHRyaWJ1dGVzIHx8IChhdHRy
aWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yT3JDdXN0b21BY2Nlc3Nvck9yVmFs
dWUpKSkKICAgICAgICAgICAgICAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6YXR0cmli
dXRlQ2hhbmdlVHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VSVCghKGN1cnJl
bnRBdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yT3JDdXN0b21BY2Nlc3Nv
ck9yVmFsdWUpKTsKICAgICAgICAgICAgICAgICBzbG90LnNldEV4aXN0aW5nUHJvcGVydHkodGhp
cywgb2Zmc2V0KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgIWlzU3RydWN0dXJlRXh0ZW5zaWJsZSh2
bSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICgobW9kZSA9PSBQdXRN
b2RlUHV0IHx8IG1vZGUgPT0gUHV0TW9kZURlZmluZU93blByb3BlcnR5KSAmJiAhaXNTdHJ1Y3R1
cmVFeHRlbnNpYmxlKHZtKSkKKyAgICAgICAgICAgIHJldHVybiBOb25FeHRlbnNpYmxlT2JqZWN0
UHJvcGVydHlEZWZpbmVFcnJvcjsKIAogICAgICAgICBvZmZzZXQgPSBwcmVwYXJlVG9QdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzdHJ1Y3R1
cmVJRCwgc3RydWN0dXJlKTsKICAgICAgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKQEAgLTM2
Miw3ICszODAsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVy
bmFsKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZQogICAgICAgICBzbG90LnNldE5l
d1Byb3BlcnR5KHRoaXMsIG9mZnNldCk7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KQogICAgICAgICAgICAgdGhpcy0+c3RydWN0dXJlKHZtKS0+
c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKICAgICB9CiAKICAgICBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQ7CkBAIC0zODYsMjEgKzQwNCwyMSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZQogICAgICAgICBwdXREaXJlY3Qodm0sIG9mZnNldCwgdmFsdWUpOwogICAgICAgICBzZXRT
dHJ1Y3R1cmUodm0sIG5ld1N0cnVjdHVyZSk7CiAgICAgICAgIHNsb3Quc2V0TmV3UHJvcGVydHko
dGhpcywgb2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRl
czsKICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBjdXJyZW50
QXR0cmlidXRlcyk7CiAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7Ci0gICAgICAg
IGlmICgobW9kZSA9PSBQdXRNb2RlUHV0KSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seU9yQWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCB8fCBtb2Rl
ID09IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eSkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHlPckFjY2Vzc29yT3JDdXN0b21BY2Nlc3NvcikKKyAgICAg
ICAgICAgIHJldHVybiBSZWFkb25seVByb3BlcnR5Q2hhbmdlRXJyb3I7CiAKICAgICAgICAgc3Ry
dWN0dXJlLT5kaWRSZXBsYWNlUHJvcGVydHkob2Zmc2V0KTsKICAgICAgICAgcHV0RGlyZWN0KHZt
LCBvZmZzZXQsIHZhbHVlKTsKIAogICAgICAgICAvLyBGSVhNRTogQ2hlY2sgYXR0cmlidXRlcyBh
Z2FpbnN0IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvck9yVmFsdWUuIENoYW5naW5n
IEdldHRlclNldHRlciBzaG91bGQgd29yayB3L28gdHJhbnNpdGlvbi4KICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDM0MgotICAgICAgICBpZiAo
bW9kZSA9PSBQdXRNb2RlRGVmaW5lT3duUHJvcGVydHkgJiYgKGF0dHJpYnV0ZXMgIT0gY3VycmVu
dEF0dHJpYnV0ZXMgfHwgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3JP
ckN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkpKSB7CisgICAgICAgIGlmICgobW9kZSA9PSBQdXRNb2Rl
RGVmaW5lT3duUHJvcGVydHkgfHwgbW9kZSA9PSBQdXRNb2RlRGVmaW5lT3duUHJvcGVydHlJZ25v
cmluZ0V4dGVuc2liaWxpdHkpICYmIChhdHRyaWJ1dGVzICE9IGN1cnJlbnRBdHRyaWJ1dGVzIHx8
IChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yT3JDdXN0b21BY2Nlc3Nv
ck9yVmFsdWUpKSkgewogICAgICAgICAgICAgLy8gV2Ugd2FudCB0aGUgc3RydWN0dXJlIHRyYW5z
aXRpb24gd2F0Y2hwb2ludCB0byBmaXJlIGFmdGVyIHRoaXMgb2JqZWN0IGhhcyBzd2l0Y2hlZCBz
dHJ1Y3R1cmUuCiAgICAgICAgICAgICAvLyBUaGlzIGFsbG93cyBhZGFwdGl2ZSB3YXRjaHBvaW50
cyB0byBvYnNlcnZlIGlmIHRoZSBuZXcgc3RydWN0dXJlIGlzIHRoZSBvbmUgd2Ugd2FudC4KICAg
ICAgICAgICAgIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlIGRlZmVy
cmVkV2F0Y2hwb2ludEZpcmUodm0sIHN0cnVjdHVyZSk7CkBAIC00MTAsMTEgKzQyOCwxMSBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZNJiB2bSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZQogICAgICAgICAgICAgc2xvdC5zZXRFeGlzdGluZ1Byb3Bl
cnR5KHRoaXMsIG9mZnNldCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogICAgIH0KIAotICAgIGlmICgobW9k
ZSA9PSBQdXRNb2RlUHV0KSAmJiAhaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKHZtKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICgobW9kZSA9PSBQdXRNb2RlUHV0IHx8IG1vZGUgPT0gUHV0
TW9kZURlZmluZU93blByb3BlcnR5KSAmJiAhaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKHZtKSkKKyAg
ICAgICAgcmV0dXJuIE5vbkV4dGVuc2libGVPYmplY3RQcm9wZXJ0eURlZmluZUVycm9yOwogICAg
IAogICAgIC8vIFdlIHdhbnQgdGhlIHN0cnVjdHVyZSB0cmFuc2l0aW9uIHdhdGNocG9pbnQgdG8g
ZmlyZSBhZnRlciB0aGlzIG9iamVjdCBoYXMgc3dpdGNoZWQgc3RydWN0dXJlLgogICAgIC8vIFRo
aXMgYWxsb3dzIGFkYXB0aXZlIHdhdGNocG9pbnRzIHRvIG9ic2VydmUgaWYgdGhlIG5ldyBzdHJ1
Y3R1cmUgaXMgdGhlIG9uZSB3ZSB3YW50LgpAQCAtNDM5LDcgKzQ1Nyw3IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lCiAgICAgc2xvdC5zZXROZXdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwogICAg
IGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KQogICAgICAgICBu
ZXdTdHJ1Y3R1cmUtPnNldENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7Ci0gICAgcmV0dXJu
IHRydWU7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogfQogCiBpbmxpbmUgYm9v
bCBKU09iamVjdDo6bWF5QmVQcm90b3R5cGUoKSBjb25zdApAQCAtNTczLDcgKzU5MSw3IEBAIGlu
bGluZSB2b2lkIEpTT2JqZWN0Ojp2YWxpZGF0ZVB1dE93bkRhdGFQcm9wZXJ0eShWTSYgdm0sIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVBy
b3BlcnR5KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIHZhbGlkYXRlUHV0T3duRGF0YVByb3BlcnR5
KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKLSAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8
UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpOworICAgIHJldHVy
biBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
MCwgc2xvdCkuaXNOdWxsKCk7CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRh
UHJvcGVydHlNYXlCZUluZGV4KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
QEAgLTU4Myw3ICs2MDEsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3Bl
cnR5TWF5QmVJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGlmIChzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAg
ICAgICAgcmV0dXJuIHB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSwg
dmFsdWUsIDAsIFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCk7CiAKLSAgICByZXR1cm4gcHV0
RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNs
b3QpOworICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCkuaXNOdWxsKCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgQ2Fs
bERhdGEgZ2V0Q2FsbERhdGEoVk0mIHZtLCBKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJ
SUxpdGVyYWwuaAppbmRleCBiNzgzM2JkZjExYTNiNjUzMjUzYjVmNmIyYmQ2MmI2ODdmYmFjNmM1
Li41YzIzN2YzMDllMWI4MGNlYWEyYTNjMmFjMmE4YzRkYWE3MmU2MzFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQVNDSUlMaXRlcmFsLmgKQEAgLTQ5LDYgKzQ5LDggQEAgY2xhc3MgQVNDSUlMaXRlcmFsIGZp
bmFsIHsKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCB7IG51bGxwdHIgfTsKICAgICB9CiAK
KyAgICBjb25zdGV4cHIgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9jaGFyYWN0ZXJz
OyB9CisKICAgICBjb25zdGV4cHIgY29uc3QgY2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0
dXJuIG1fY2hhcmFjdGVyczsgfQogICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCBMQ2hhcio+KG1fY2hhcmFjdGVycyk7IH0KICAg
ICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gc3RybGVuKG1fY2hhcmFjdGVycyk7IH0K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZTkyNmU0NGZhODE0YzEzMWY2M2Y5ZTA5ODA3MDUyYTE2MDY1NGFjMC4uNDc5ZTg1ZGZiNDNmYmQ3
NDg1ODIxNjgyNjk0ZDUwN2NjYjU1MjYzOSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0xMS0yNCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFB1YmxpYyBD
bGFzcyBGaWVsZCBpbml0aWFsaXphdGlvbiBpcyBzbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0NzkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMt
Y2xhc3NpYy1jb25zdHJ1Y3Rvci1hc3NpZ25tZW50cy5qczogQWRkZWQuCisgICAgICAgIChDbGFz
c2ljX0NvbnN0cnVjdG9yX0Fzc2lnbm1lbnRzKToKKyAgICAgICAgKGJlbmNoKToKKyAgICAgICAg
KiBtaWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZmllbGRzLmpzOiBBZGRlZC4K
KyAgICAgICAgKEVTMjAyMl9Qcml2YXRlX0ZpZWxkcyk6CisgICAgICAgIChiZW5jaCk6CisgICAg
ICAgICogbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wdWJsaWMtZmllbGRzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKEVTMjAyMl9QdWJsaWNfRmllbGRzKToKKyAgICAgICAgKGJlbmNoKToKKyAg
ICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLWdldHRlci1vdmVycmlkZS5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChkZWZpbmVDR2V0dGVyLik6CisgICAgICAg
IChCKToKKyAgICAgICAgKGRlZmluZTBHZXR0ZXIuKToKKyAgICAgICAgKGRlZmluZTBHZXR0ZXIp
OgorICAgICAgICAoRCk6CisKIDIwMjEtMTEtMTkgIEFzdW11IFRha2lrYXdhICA8YXN1bXVAaWdh
bGlhLmNvbT4KIAogICAgICAgICBGaXggV2ViQXNzZW1ibHkgbWVtb3J5LmZpbGwgb3V0IG9mIGJv
dW5kcyBlcnJvciBtZXNzYWdlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9j
bGFzcy1maWVsZHMtY2xhc3NpYy1jb25zdHJ1Y3Rvci1hc3NpZ25tZW50cy5qcyBiL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1jbGFzc2ljLWNvbnN0cnVjdG9yLWFzc2lnbm1l
bnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM5MDVlZDgxMDExOWQ4NjI4NTcyNjQ0ZmQ3OWM3NmUxMmIxZmVk
YzMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVs
ZHMtY2xhc3NpYy1jb25zdHJ1Y3Rvci1hc3NpZ25tZW50cy5qcwpAQCAtMCwwICsxLDI4IEBACitj
bGFzcyBDbGFzc2ljX0NvbnN0cnVjdG9yX0Fzc2lnbm1lbnRzIHsKKyAgICBjb25zdHJ1Y3Rvcigp
IHsKKyAgICAgICAgdGhpcy52ZXJpZmljYXRpb249MTsKKworICAgICAgICB0aGlzLl8wMD0xOyB0
aGlzLl8wMT0xOyB0aGlzLl8wMj0xOyB0aGlzLl8wMz0xOyB0aGlzLl8wND0xOyB0aGlzLl8wNT0x
OyB0aGlzLl8wNj0xOyB0aGlzLl8wNz0xOyB0aGlzLl8wOD0xOyB0aGlzLl8wOT0xOworICAgICAg
ICB0aGlzLl8xMD0xOyB0aGlzLl8xMT0xOyB0aGlzLl8xMj0xOyB0aGlzLl8xMz0xOyB0aGlzLl8x
ND0xOyB0aGlzLl8xNT0xOyB0aGlzLl8xNj0xOyB0aGlzLl8xNz0xOyB0aGlzLl8xOD0xOyB0aGlz
Ll8xOT0xOworICAgICAgICB0aGlzLl8yMD0xOyB0aGlzLl8yMT0xOyB0aGlzLl8yMj0xOyB0aGlz
Ll8yMz0xOyB0aGlzLl8yND0xOyB0aGlzLl8yNT0xOyB0aGlzLl8yNj0xOyB0aGlzLl8yNz0xOyB0
aGlzLl8yOD0xOyB0aGlzLl8yOT0xOworICAgICAgICB0aGlzLl8zMD0xOyB0aGlzLl8zMT0xOyB0
aGlzLl8zMj0xOyB0aGlzLl8zMz0xOyB0aGlzLl8zND0xOyB0aGlzLl8zNT0xOyB0aGlzLl8zNj0x
OyB0aGlzLl8zNz0xOyB0aGlzLl8zOD0xOyB0aGlzLl8zOT0xOworICAgICAgICB0aGlzLl80MD0x
OyB0aGlzLl80MT0xOyB0aGlzLl80Mj0xOyB0aGlzLl80Mz0xOyB0aGlzLl80ND0xOyB0aGlzLl80
NT0xOyB0aGlzLl80Nj0xOyB0aGlzLl80Nz0xOyB0aGlzLl80OD0xOyB0aGlzLl80OT0xOworICAg
ICAgICB0aGlzLl81MD0xOyB0aGlzLl81MT0xOyB0aGlzLl81Mj0xOyB0aGlzLl81Mz0xOyB0aGlz
Ll81ND0xOyB0aGlzLl81NT0xOyB0aGlzLl81Nj0xOyB0aGlzLl81Nz0xOyB0aGlzLl81OD0xOyB0
aGlzLl81OT0xOworICAgICAgICB0aGlzLl82MD0xOyB0aGlzLl82MT0xOyB0aGlzLl82Mj0xOyB0
aGlzLl82Mz0xOyB0aGlzLl82ND0xOyB0aGlzLl82NT0xOyB0aGlzLl82Nj0xOyB0aGlzLl82Nz0x
OyB0aGlzLl82OD0xOyB0aGlzLl82OT0xOworICAgICAgICB0aGlzLl83MD0xOyB0aGlzLl83MT0x
OyB0aGlzLl83Mj0xOyB0aGlzLl83Mz0xOyB0aGlzLl83ND0xOyB0aGlzLl83NT0xOyB0aGlzLl83
Nj0xOyB0aGlzLl83Nz0xOyB0aGlzLl83OD0xOyB0aGlzLl83OT0xOworICAgICAgICB0aGlzLl84
MD0xOyB0aGlzLl84MT0xOyB0aGlzLl84Mj0xOyB0aGlzLl84Mz0xOyB0aGlzLl84ND0xOyB0aGlz
Ll84NT0xOyB0aGlzLl84Nj0xOyB0aGlzLl84Nz0xOyB0aGlzLl84OD0xOyB0aGlzLl84OT0xOwor
ICAgICAgICB0aGlzLl85MD0xOyB0aGlzLl85MT0xOyB0aGlzLl85Mj0xOyB0aGlzLl85Mz0xOyB0
aGlzLl85ND0xOyB0aGlzLl85NT0xOyB0aGlzLl85Nj0xOyB0aGlzLl85Nz0xOyB0aGlzLl85OD0x
OyB0aGlzLl85OT0xOworICAgIH0KK30KKworY29uc3QgSVRFUkFUSU9OUyA9IDEwMF8wMDA7CisK
K2Z1bmN0aW9uIGJlbmNoKHRlc3RDbGFzcykgeworICAgIHZhciBhY2MgPSAwOworICAgIGZvciAo
dmFyIGk9MDsgaTxJVEVSQVRJT05TOyBpKyspIHsKKyAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBu
ZXcgdGVzdENsYXNzKCkKKyAgICAgICAgYWNjICs9IGluc3RhbmNlLnZlcmlmaWNhdGlvbjsKKyAg
ICB9Cit9CisKK2JlbmNoKENsYXNzaWNfQ29uc3RydWN0b3JfQXNzaWdubWVudHMpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZmllbGRz
LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZmllbGRz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZlMzI2ZjZkODM1ZDFlZjdkZWE0Mjk5OGZjYzc2NzUxNjYwMTlhZDgK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMt
cHJpdmF0ZS1maWVsZHMuanMKQEAgLTAsMCArMSwyOSBAQAorY2xhc3MgRVMyMDIyX1ByaXZhdGVf
RmllbGRzIHsKKyAgICB2ZXJpZmljYXRpb249MTsKKworICAgICNfMDA9MTsgI18wMT0xOyAjXzAy
PTE7ICNfMDM9MTsgI18wND0xOyAjXzA1PTE7ICNfMDY9MTsgI18wNz0xOyAjXzA4PTE7ICNfMDk9
MTsKKyAgICAjXzEwPTE7ICNfMTE9MTsgI18xMj0xOyAjXzEzPTE7ICNfMTQ9MTsgI18xNT0xOyAj
XzE2PTE7ICNfMTc9MTsgI18xOD0xOyAjXzE5PTE7CisgICAgI18yMD0xOyAjXzIxPTE7ICNfMjI9
MTsgI18yMz0xOyAjXzI0PTE7ICNfMjU9MTsgI18yNj0xOyAjXzI3PTE7ICNfMjg9MTsgI18yOT0x
OworICAgICNfMzA9MTsgI18zMT0xOyAjXzMyPTE7ICNfMzM9MTsgI18zND0xOyAjXzM1PTE7ICNf
MzY9MTsgI18zNz0xOyAjXzM4PTE7ICNfMzk9MTsKKyAgICAjXzQwPTE7ICNfNDE9MTsgI180Mj0x
OyAjXzQzPTE7ICNfNDQ9MTsgI180NT0xOyAjXzQ2PTE7ICNfNDc9MTsgI180OD0xOyAjXzQ5PTE7
CisgICAgI181MD0xOyAjXzUxPTE7ICNfNTI9MTsgI181Mz0xOyAjXzU0PTE7ICNfNTU9MTsgI181
Nj0xOyAjXzU3PTE7ICNfNTg9MTsgI181OT0xOworICAgICNfNjA9MTsgI182MT0xOyAjXzYyPTE7
ICNfNjM9MTsgI182ND0xOyAjXzY1PTE7ICNfNjY9MTsgI182Nz0xOyAjXzY4PTE7ICNfNjk9MTsK
KyAgICAjXzcwPTE7ICNfNzE9MTsgI183Mj0xOyAjXzczPTE7ICNfNzQ9MTsgI183NT0xOyAjXzc2
PTE7ICNfNzc9MTsgI183OD0xOyAjXzc5PTE7CisgICAgI184MD0xOyAjXzgxPTE7ICNfODI9MTsg
I184Mz0xOyAjXzg0PTE7ICNfODU9MTsgI184Nj0xOyAjXzg3PTE7ICNfODg9MTsgI184OT0xOwor
ICAgICNfOTA9MTsgI185MT0xOyAjXzkyPTE7ICNfOTM9MTsgI185ND0xOyAjXzk1PTE7ICNfOTY9
MTsgI185Nz0xOyAjXzk4PTE7ICNfOTk9MTsKK30KKworCisvLyBCZW5jaG1hcmtpbmcKKworY29u
c3QgSVRFUkFUSU9OUyA9IDEwMF8wMDA7CisKK2Z1bmN0aW9uIGJlbmNoKHRlc3RDbGFzcykgewor
ICAgIHZhciBhY2MgPSAwOworICAgIGZvciAodmFyIGk9MDsgaTxJVEVSQVRJT05TOyBpKyspIHsK
KyAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgdGVzdENsYXNzKCkKKyAgICAgICAgYWNjICs9
IGluc3RhbmNlLnZlcmlmaWNhdGlvbjsKKyAgICB9Cit9CisKK2JlbmNoKEVTMjAyMl9Qcml2YXRl
X0ZpZWxkcyk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVs
ZHMtcHVibGljLWZpZWxkcy5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxk
cy1wdWJsaWMtZmllbGRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1OTRkNTU4YjdkMzllOTA1MTcxYzgxMGEy
N2YwOWViMWJjYWMxNTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9jbGFzcy1maWVsZHMtcHVibGljLWZpZWxkcy5qcwpAQCAtMCwwICsxLDI2IEBACitjbGFzcyBF
UzIwMjJfUHVibGljX0ZpZWxkcyB7CisgICAgdmVyaWZpY2F0aW9uPTE7CisKKyAgICBfMDA9MTsg
XzAxPTE7IF8wMj0xOyBfMDM9MTsgXzA0PTE7IF8wNT0xOyBfMDY9MTsgXzA3PTE7IF8wOD0xOyBf
MDk9MTsKKyAgICBfMTA9MTsgXzExPTE7IF8xMj0xOyBfMTM9MTsgXzE0PTE7IF8xNT0xOyBfMTY9
MTsgXzE3PTE7IF8xOD0xOyBfMTk9MTsKKyAgICBfMjA9MTsgXzIxPTE7IF8yMj0xOyBfMjM9MTsg
XzI0PTE7IF8yNT0xOyBfMjY9MTsgXzI3PTE7IF8yOD0xOyBfMjk9MTsKKyAgICBfMzA9MTsgXzMx
PTE7IF8zMj0xOyBfMzM9MTsgXzM0PTE7IF8zNT0xOyBfMzY9MTsgXzM3PTE7IF8zOD0xOyBfMzk9
MTsKKyAgICBfNDA9MTsgXzQxPTE7IF80Mj0xOyBfNDM9MTsgXzQ0PTE7IF80NT0xOyBfNDY9MTsg
XzQ3PTE7IF80OD0xOyBfNDk9MTsKKyAgICBfNTA9MTsgXzUxPTE7IF81Mj0xOyBfNTM9MTsgXzU0
PTE7IF81NT0xOyBfNTY9MTsgXzU3PTE7IF81OD0xOyBfNTk9MTsKKyAgICBfNjA9MTsgXzYxPTE7
IF82Mj0xOyBfNjM9MTsgXzY0PTE7IF82NT0xOyBfNjY9MTsgXzY3PTE7IF82OD0xOyBfNjk9MTsK
KyAgICBfNzA9MTsgXzcxPTE7IF83Mj0xOyBfNzM9MTsgXzc0PTE7IF83NT0xOyBfNzY9MTsgXzc3
PTE7IF83OD0xOyBfNzk9MTsKKyAgICBfODA9MTsgXzgxPTE7IF84Mj0xOyBfODM9MTsgXzg0PTE7
IF84NT0xOyBfODY9MTsgXzg3PTE7IF84OD0xOyBfODk9MTsKKyAgICBfOTA9MTsgXzkxPTE7IF85
Mj0xOyBfOTM9MTsgXzk0PTE7IF85NT0xOyBfOTY9MTsgXzk3PTE7IF85OD0xOyBfOTk9MTsKK30K
KworY29uc3QgSVRFUkFUSU9OUyA9IDEwMF8wMDA7CisKK2Z1bmN0aW9uIGJlbmNoKHRlc3RDbGFz
cykgeworICAgIHZhciBhY2MgPSAwOworICAgIGZvciAodmFyIGk9MDsgaTxJVEVSQVRJT05TOyBp
KyspIHsKKyAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgdGVzdENsYXNzKCkKKyAgICAgICAg
YWNjICs9IGluc3RhbmNlLnZlcmlmaWNhdGlvbjsKKyAgICB9Cit9CisKK2JlbmNoKEVTMjAyMl9Q
dWJsaWNfRmllbGRzKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1n
ZXR0ZXItb3ZlcnJpZGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtZ2V0dGVyLW92
ZXJyaWRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhMjE0MzIwNGE2OTJhNTgzZDA0MTJlYWE0YzAxYjE1Mzdl
ZTQ5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtZ2V0
dGVyLW92ZXJyaWRlLmpzCkBAIC0wLDAgKzEsNTAgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1
bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZh
ciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7Cisg
ICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90
IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisK
K2Z1bmN0aW9uIGRlZmluZUNHZXR0ZXIob2JqKSB7CisgICAgUmVmbGVjdC5kZWZpbmVQcm9wZXJ0
eShvYmosICJjIiwgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gJ2RlZmluZUNH
ZXR0ZXInOyB9CisgICAgfSk7Cit9CisKK2NsYXNzIEEgeworICAgIGIgPSBkZWZpbmVDR2V0dGVy
KHRoaXMpOworICAgIGMgPSA0MjsKK307CitzaG91bGRUaHJvdygoKSA9PiBuZXcgQSgpLCBgVHlw
ZUVycm9yOiBBdHRlbXB0aW5nIHRvIGNoYW5nZSBjb25maWd1cmFibGUgYXR0cmlidXRlIG9mIHVu
Y29uZmlndXJhYmxlIHByb3BlcnR5LmApOworCitsZXQga2V5ID0gJ2MnOworY2xhc3MgQiB7Cisg
ICAgYiA9IGRlZmluZUNHZXR0ZXIodGhpcyk7CisgICAgW2tleV0gPSA0MjsKK307CitzaG91bGRU
aHJvdygoKSA9PiBuZXcgQigpLCBgVHlwZUVycm9yOiBBdHRlbXB0aW5nIHRvIGNoYW5nZSBjb25m
aWd1cmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LmApOworCitmdW5j
dGlvbiBkZWZpbmUwR2V0dGVyKG9iaikgeworICAgIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkob2Jq
LCAiMCIsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuICdkZWZpbmVDR2V0dGVy
JzsgfQorICAgIH0pOworfQorY2xhc3MgQyB7CisgICAgYiA9IGRlZmluZTBHZXR0ZXIodGhpcyk7
CisgICAgWzBdID0gNDI7Cit9Oworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEMoKSwgYFR5cGVFcnJv
cjogQXR0ZW1wdGluZyB0byBjaGFuZ2UgY29uZmlndXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZp
Z3VyYWJsZSBwcm9wZXJ0eS5gKTsKKworY2xhc3MgRCB7CisgICAgYiA9IE9iamVjdC5mcmVlemUo
dGhpcyk7CisgICAgWzBdID0gNDI7Cit9Oworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEQoKSwgYFR5
cGVFcnJvcjogQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMg
bm90IGV4dGVuc2libGUuYCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445121</attachid>
            <date>2021-11-24 22:27:22 -0800</date>
            <delta_ts>2021-11-25 17:37:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232479-20211125012719.patch</filename>
            <type>text/plain</type>
            <size>29238</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZjJhM2Q1MWYxMGQ1YzZlYmM0MWNkN2RmNzUwOTQzZDNlNzMzNjAzLi5lZDE4MjFiNDIwNTFkYThk
ZDdhY2ZjMzQ2OGRhMTNhN2QzOTA4NzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAyMS0xMS0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFB1YmxpYyBDbGFzcyBGaWVsZCBpbml0aWFsaXphdGlvbiBpcyBz
bG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0
NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGFz
cyBwdWJsaWMgZmllbGQgaW1wbGVtZW50YXRpb24gZGlkIG5vdCBoYXZlIG9wdGltaXphdGlvbiBm
b3IgaW5pdGlhbGl6aW5nIGNsYXNzIGZpZWxkczogdXNpbmcKKyAgICAgICAgcnVudGltZSBjYWxs
IHRvIGluaXRpYWxpemUgZmllbGRzIGluc3RlYWQgb2YgSUMuIFRoaXMgcGF0Y2ggbGV2ZXJhZ2Vz
IHB1dF9ieV9pZCAvIHB1dF9ieV92YWwgd2l0aAorICAgICAgICBkaXJlY3QgZmxhZyBzbyB0aGF0
IHdlIGNhbiBlbmFibGUgSUMuCisKKyAgICAgICAgQ3VycmVudGx5LCB3ZSBhcmUgbm90IGNoYW5n
aW5nIG9yaWdpbmFsIHB1dERpcmVjdCBzZW1hbnRpY3Mgc2luY2UgaXQgaXMgb3V0IG9mIHRoaXMg
cGF0Y2gncyBzY29wZS4KKyAgICAgICAgV2Ugd2lsbCBsb29rIGludG8gaXQgYW5kIHByb2JhYmx5
IGNoYW5naW5nIGl0IGluIGEgc2VwYXJhdGUgcGF0Y2gsIGJ1dCBub3QgaW4gdGhpcyBwYXRjaC4K
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRvVCAgICAgICAgICAgICAgICAgICAgIFBhdGNoZWQKKworICAgICAgICBjbGFzcy1m
aWVsZHMtY2xhc3NpYy1jb25zdHJ1Y3Rvci1hc3NpZ25tZW50cworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3LjE0OTErLTIuNjMyNyAgICAg
ICAgICAgMTUuMDkwNistMC42Nzk1ICAgICAgICAgIG1pZ2h0IGJlIDEuMTM2NHggZmFzdGVyCisg
ICAgICAgIGNsYXNzLWZpZWxkcy1wdWJsaWMtZmllbGRzICAgICAgICAgICAgICAgICAgICA0MDku
NDMyOCstOC4zMTQwICAgICBeICAgICAyMC4yNzUyKy0yLjA4MzUgICAgICAgIF4gZGVmaW5pdGVs
eSAyMC4xOTM4eCBmYXN0ZXIKKyAgICAgICAgY2xhc3MtZmllbGRzLXByaXZhdGUtZmllbGRzICAg
ICAgICAgICAgICAgICAgICAyNy4yNjIxKy0xLjM4NTggICAgICAgICAgIDI1LjE4MTArLTMuOTg3
MyAgICAgICAgICBtaWdodCBiZSAxLjA4MjZ4IGZhc3RlcgorCisgICAgICAgICogYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkRlZmluZUZpZWxkTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAg
ICAoSlNDOjpDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSk6CisgICAgICAgICog
cnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RD
dXN0b21BY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROb25JbmRl
eEFjY2Vzc29yKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0
UmVzcGVjdGluZ0V4dGVuc2liaWxpdHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRJbmxpbmVGYXN0KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OnB1dE93bkRhdGFQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRPd25E
YXRhUHJvcGVydHlNYXlCZUluZGV4KToKKwogMjAyMS0xMS0yMiAgR2V6YSBMb3JlICA8Z2xvcmVA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBNYWtlIHNoYXJpbmcgb2YgdW5saW5rZWQgYmFz
ZWxpbmUgY29kZSBwb3NzaWJsZSBvbiBKU1ZBTFVFMzJfNjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZWFiM2IyMGRhNWY0MWEy
NjAxMzg0OGM5NWIyZWI1NmYzMWNkMTc4MS4uMmY5NTEwMmNiMDM3YmFhOGMxZWNjM2RmM2FlMDEz
MDgzNWYwNGQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0xMS0yNCAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFB1YmxpYyBDbGFzcyBGaWVs
ZCBpbml0aWFsaXphdGlvbiBpcyBzbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzI0NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oOgorCiAyMDIxLTExLTE5
ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0g
YWRkIGF1ZGlvIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBmZWRmMjlhZTEwYzk5NmJkYmRmN2ZkY2Q0NjYx
OTM2ZTY4MGQxNjg4Li41ZDg0NTY0NWJhMzM5MzIzOThkYTMzMzQ5MjI1ZGEwZmM2OGFmM2I2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCkBAIC01MDM5LDEwICs1MDM5LDEyIEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKICAg
ICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgRGVmaW5lRmllbGROb2RlOjpUeXBlOjpOYW1l
OiB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHB1YmxpYyBjbGFz
cyBmaWVsZHMKLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5ODMzMAotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lID0gZ2Vu
ZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsICptX2lkZW50KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsRGVmaW5lUHJvcGVydHkoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBwcm9wZXJ0eU5h
bWUuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBCeXRlY29kZUdlbmVyYXRv
cjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0
YWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUVudW1lcmFibGUsIG1fcG9zaXRpb24p
OworICAgICAgICBTdHJpY3RNb2RlU2NvcGUgc3RyaWN0TW9kZVNjb3BlKGdlbmVyYXRvcik7Cisg
ICAgICAgIGlmIChhdXRvIGluZGV4ID0gcGFyc2VJbmRleCgqbV9pZGVudCkpIHsKKyAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eU5hbWUgPSBnZW5lcmF0b3IuZW1pdExvYWQo
bnVsbHB0ciwganNOdW1iZXIoaW5kZXgudmFsdWUoKSkpOworICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXREaXJlY3RQdXRCeVZhbChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIHByb3BlcnR5TmFt
ZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksICptX2lkZW50
LCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIERlZmluZUZp
ZWxkTm9kZTo6VHlwZTo6UHJpdmF0ZU5hbWU6IHsKQEAgLTUwNTcsOSArNTA1OSw2IEBAIHZvaWQg
RGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIERlZmluZUZp
ZWxkTm9kZTo6VHlwZTo6Q29tcHV0ZWROYW1lOiB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXByb3Zl
IHBlcmZvcm1hbmNlIG9mIHB1YmxpYyBjbGFzcyBmaWVsZHMKLSAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODMzMAotCiAgICAgICAgIC8vIEZvciBD
b21wdXRlZE5hbWVzLCB0aGUgZXhwcmVzc2lvbiBoYXMgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZCBl
YXJsaWVyIGR1cmluZyBldmFsdWF0aW9uIG9mIGEgQ2xhc3NFeHByTm9kZS4KICAgICAgICAgLy8g
SGVyZSwgYG1faWRlbnRgIHJlZmVycyB0byBwcml2YXRlIHN5bWJvbCBJRCBpbiBhIGNsYXNzIGxl
eGljYWwgc2NvcGUsIGNvbnRhaW5pbmcgdGhlIHZhbHVlIGFscmVhZHkgY29udmVydGVkIHRvIGFu
IEV4cHJlc3Npb24uCiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZSgq
bV9pZGVudCk7CkBAIC01MDcyLDcgKzUwNzEsMTAgQEAgdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAg
ICAgICAgaWYgKHNob3VsZFNldEZ1bmN0aW9uTmFtZSkKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0U2V0RnVuY3Rpb25OYW1lKHZhbHVlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocHJpdmF0ZU5hbWUuZ2V0KCksIHZhciwgbV9w
b3NpdGlvbiwgbV9wb3NpdGlvbiArIG1faWRlbnQtPmxlbmd0aCgpKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBwcml2
YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpQcm9wZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0
eVdyaXRhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5RW51bWVyYWJsZSwgbV9wb3Np
dGlvbik7CisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cmljdE1vZGVTY29wZSBzdHJpY3RNb2Rl
U2NvcGUoZ2VuZXJhdG9yKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlW
YWwoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0
KCkpOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGRiNTJjMDU2
YzAxMDE3ZjVjNjJjYmMxYjVmZTEzNzNhMDdhN2I0ZTUuLmE0MDExNDAxYTdkMzQwYzYxNDViODFm
YjM3NGNmOWFiMGY1ZWI0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiU2NvcGVkQXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhGdW5jdGlvbi5oIgogI2luY2x1ZGUgIlN0YWNr
QWxpZ25tZW50LmgiCisjaW5jbHVkZSAiVHlwZUVycm9yLmgiCiAjaW5jbHVkZSAiVk1JbmxpbmVz
LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0xODYsMTggKzE4NywyOCBA
QCBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogb3JpZ2luYWxTdHJ1Y3R1cmVCZWZvcmVQdXQoVk0m
IHZtLCBKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJl
KHZtKTsKIH0KIAotCiBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dERpcmVjdFdpdGhSZWlm
eShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QsIFN0cnVjdHVyZSoqIHJlc3VsdCA9IG51bGxwdHIpCiB7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGlmIChiYXNlT2JqZWN0LT5pbmhl
cml0czxKU0Z1bmN0aW9uPih2bSkpIHsKKyAgICBib29sIGlzSlNGdW5jdGlvbiA9IGJhc2VPYmpl
Y3QtPmluaGVyaXRzPEpTRnVuY3Rpb24+KHZtKTsKKyAgICBpZiAoaXNKU0Z1bmN0aW9uKSB7CiAg
ICAgICAgIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oYmFzZU9iamVjdCktPnJlaWZ5TGF6eVByb3BlcnR5
SWZOZWVkZWQodm0sIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICB9CiAgICAgaWYgKHJlc3VsdCkKICAg
ICAgICAgKnJlc3VsdCA9IG9yaWdpbmFsU3RydWN0dXJlQmVmb3JlUHV0KHZtLCBiYXNlT2JqZWN0
KTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0KHZtLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
YmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKKyAgICBpZiAoTElLRUxZKHByb3BlcnR5TmFtZSAh
PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8gJiYgIXN0cnVjdHVyZS0+aGFzUmVh
ZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpICYmIChpc0pTRnVu
Y3Rpb24gfHwgc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZGVmaW5lT3duUHJv
cGVydHkgPT0gJkpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSkpKSB7CisgICAgICAgIGF1dG8g
ZXJyb3IgPSBiYXNlT2JqZWN0LT5wdXREaXJlY3RSZXNwZWN0aW5nRXh0ZW5zaWJpbGl0eSh2bSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxs
KCkpCisgICAgICAgICAgICB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2xvdC5pc1N0
cmljdE1vZGUoKSwgZXJyb3IpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3QuZGlzYWJsZUNh
Y2hpbmcoKTsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOworICAgICAgICBQcm9wZXJ0eURlc2Ny
aXB0b3IgZGVzY3JpcHRvcih2YWx1ZSwgMCk7CisgICAgICAgIGJhc2VPYmplY3QtPm1ldGhvZFRh
YmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgIH0KIH0KIAog
c3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBwdXREaXJlY3RBY2Nlc3NvcldpdGhSZWlmeShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yLCB1bnNpZ25l
ZCBhdHRyaWJ1dGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
aW5kZXggMGIyZWViNjhiMWMyNTY5MmVkOTIxZTBlOTAxOTA0OWVjMDVjYzRiMC4uMjhlNzJlZTM3
ZDMyOGQ4OTNlNGRlZDg1NDYzZWQ1YmQyZjNhYjk5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMjAwNiw3ICsyMDA2LDcgQEAgYm9vbCBKU09iamVj
dDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHUKICAgICAgICAgYXR0cmlidXRlcyB8PSBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tVmFsdWU7CiAKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKLSAgICBib29sIHJl
c3VsdCA9IHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOworICAgIGJvb2wgcmVzdWx0ID0g
cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5SWdub3JpbmdFeHRlbnNp
YmlsaXR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCkuaXNOdWxs
KCk7CiAKICAgICBBU1NFUlQoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9w
ZXJ0eSk7CiAKQEAgLTIwMzcsNyArMjAzNyw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5v
bkluZGV4QWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBHZXR0CiB7
CiAgICAgQVNTRVJUKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwog
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgIGJvb2wgcmVzdWx0ID0gcHV0RGly
ZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCBh
Y2Nlc3NvciwgYXR0cmlidXRlcywgc2xvdCk7CisgICAgYm9vbCByZXN1bHQgPSBwdXREaXJlY3RJ
bnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHlJZ25vcmluZ0V4dGVuc2liaWxpdHk+KHZt
LCBwcm9wZXJ0eU5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1dGVzLCBzbG90KS5pc051bGwoKTsKIAog
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKICAgICBpZiAo
YXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDBjNGRmYTMxZDg3M2I3YTkzMjk5YWQ3ZWRk
MTE4NDBhZWE4YzJlOWIuLjUxYjEzMDMxZTYyMTQ2ZjUyNGJlMWU3N2E5OTFkZWExODIyMWNhZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMTAwLDkgKzEw
MCwxMCBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGZyaWVuZCBjbGFz
cyBNYXJrZWRCbG9jazsKICAgICBKU19FWFBPUlRfUFJJVkFURSBmcmllbmQgYm9vbCBzZXRVcFN0
YXRpY0Z1bmN0aW9uU2xvdChWTSYsIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiwgSlNPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCi0gICAgZW51bSBQdXRNb2RlIHsKKyAgICBl
bnVtIFB1dE1vZGUgOiB1aW50OF90IHsKICAgICAgICAgUHV0TW9kZVB1dCwKICAgICAgICAgUHV0
TW9kZURlZmluZU93blByb3BlcnR5LAorICAgICAgICBQdXRNb2RlRGVmaW5lT3duUHJvcGVydHlJ
Z25vcmluZ0V4dGVuc2liaWxpdHksCiAgICAgfTsKIAogcHVibGljOgpAQCAtNjg1LDYgKzY4Niw3
IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBwdXREaXJlY3Qo
Vk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKICAg
ICBib29sIHB1dERpcmVjdChWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgYm9vbCBwdXREaXJlY3QoVk0mLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEFTQ0lJTGl0ZXJhbCBw
dXREaXJlY3RSZXNwZWN0aW5nRXh0ZW5zaWJpbGl0eShWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgdm9pZCBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcyA9IDApOwogICAgIGJvb2wgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihW
TSYsIFByb3BlcnR5TmFtZSwgR2V0dGVyU2V0dGVyKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAg
ICAgdm9pZCBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24oVk0mLCBQ
cm9wZXJ0eU5hbWUsIEdldHRlclNldHRlciosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpAQCAtMTE1
Niw3ICsxMTU4LDcgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBBcnJh
eVN0b3JhZ2UqIGVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZVdoZW5BcnJheVN0b3JhZ2VBbHJl
YWR5RXhpc3RzKFZNJiwgQXJyYXlTdG9yYWdlKik7CiAgICAgICAgIAogICAgIHRlbXBsYXRlPFB1
dE1vZGU+Ci0gICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChWTSYsIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgdW5zaWduZWQgYXR0ciwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgQVNDSUlMaXRlcmFs
IHB1dERpcmVjdEludGVybmFsKFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBh
dHRyLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lO
TElORSBib29sIHB1dElubGluZVNsb3coSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lO
TElORSBib29sIHB1dElubGluZUZhc3RSZXBsYWNpbmdTdGF0aWNQcm9wZXJ0eUlmTmVlZGVkKEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
QEAgLTE1ODIsMjEgKzE1ODQsMjggQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChW
TSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUKICAgICBBU1NF
UlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRy
aWJ1dGU6OkFjY2Vzc29yKSk7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0N1c3RvbUdldHRlclNldHRl
cigpICYmICEoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvck9y
VmFsdWUpKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKLSAgICByZXR1cm4gcHV0
RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFs
PFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eUlnbm9yaW5nRXh0ZW5zaWJpbGl0eT4odm0sIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpLmlzTnVsbCgpOwogfQogCiBpbmxpbmUg
Ym9vbCBKU09iamVjdDo6cHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSk7CiAgICAgQVNTRVJU
KCF2YWx1ZS5pc0N1c3RvbUdldHRlclNldHRlcigpKTsKLSAgICByZXR1cm4gcHV0RGlyZWN0SW50
ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
YXR0cmlidXRlcywgc2xvdCk7CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVE
ZWZpbmVPd25Qcm9wZXJ0eUlnbm9yaW5nRXh0ZW5zaWJpbGl0eT4odm0sIHByb3BlcnR5TmFtZSwg
dmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpLmlzTnVsbCgpOwogfQogCiBpbmxpbmUgYm9vbCBKU09i
amVjdDo6cHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCghdmFsdWUuaXNH
ZXR0ZXJTZXR0ZXIoKSk7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0N1c3RvbUdldHRlclNldHRlcigp
KTsKLSAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5
Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CisgICAgcmV0dXJuIHB1dERpcmVj
dEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eUlnbm9yaW5nRXh0ZW5zaWJpbGl0eT4o
dm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpLmlzTnVsbCgpOworfQorCitpbmxpbmUg
QVNDSUlMaXRlcmFsIEpTT2JqZWN0OjpwdXREaXJlY3RSZXNwZWN0aW5nRXh0ZW5zaWJpbGl0eShW
TSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBBU1NFUlQoIXZhbHVl
LmlzR2V0dGVyU2V0dGVyKCkpOworICAgIEFTU0VSVCghdmFsdWUuaXNDdXN0b21HZXR0ZXJTZXR0
ZXIoKSk7CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9w
ZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOwogfQogCiBj
b25zdGV4cHIgaW5saW5lIGludHB0cl90IG9mZnNldEluQnV0dGVyZmx5KFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmgKaW5kZXggNzYwYTlhOWUyZWM0N2RiMzhmYTIzYmFkODk0ZTBlODBkYTY3NDBkMS4uOTUz
N2VmMGI3ZTEwOTIzZTUzZjc4ZjU0YTRhY2I1MzJkNjcyYmY1MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKQEAgLTI4Myw4ICsyODMsOSBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZUZhc3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAogICAgIC8vIEZJWE1FOiBGb3IgYSBmYWlsdXJlIGR1ZSB0byBub24tZXh0
ZW5zaWJsZSBzdHJ1Y3R1cmUsIHRoZSBlcnJvciBtZXNzYWdlIGlzIG1pc2xlYWRpbmcKLSAgICBp
ZiAoIXB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCAwLCBzbG90KSkKLSAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBzbG90LmlzU3RyaWN0TW9kZSgpLCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAg
YXV0byBlcnJvciA9IHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCAwLCBzbG90KTsKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHNsb3QuaXNTdHJpY3RNb2RlKCks
IGVycm9yKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzE5LDcgKzMyMCw3IEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBKU09iamVjdDo6aGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgdW5zaWduCiB9CiAKIHRlbXBsYXRlPEpTT2JqZWN0OjpQdXRNb2RlIG1vZGU+
Ci1BTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZNJiB2bSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgUHV0UHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElORSBBU0NJSUxpdGVyYWwg
SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNTRVJUKHZhbHVlLmlzR2V0dGVy
U2V0dGVyKCkgPT0gISEoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcikp
OwpAQCAtMzM1LDI2ICszMzYsMjYgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3RJbnRlcm5hbChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUKICAgICAgICAg
dW5zaWduZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzKTsK
ICAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7Ci0gICAgICAgICAgICBpZiAo
KG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHlPckFjY2Vzc29yT3JDdXN0b21BY2Nlc3NvcikKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCB8fCBt
b2RlID09IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eSkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHlPckFjY2Vzc29yT3JDdXN0b21BY2Nlc3NvcikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gUmVhZG9ubHlQcm9wZXJ0eUNoYW5nZUVycm9yOwogCiAgICAg
ICAgICAgICBwdXREaXJlY3Qodm0sIG9mZnNldCwgdmFsdWUpOwogICAgICAgICAgICAgc3RydWN0
dXJlLT5kaWRSZXBsYWNlUHJvcGVydHkob2Zmc2V0KTsKIAogICAgICAgICAgICAgLy8gRklYTUU6
IENoZWNrIGF0dHJpYnV0ZXMgYWdhaW5zdCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3JPclZhbHVlLiBDaGFuZ2luZyBHZXR0ZXJTZXR0ZXIgc2hvdWxkIHdvcmsgdy9vIHRyYW5zaXRp
b24uCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE0MzQyCi0gICAgICAgICAgICBpZiAobW9kZSA9PSBQdXRNb2RlRGVmaW5lT3duUHJvcGVy
dHkgJiYgKGF0dHJpYnV0ZXMgIT0gY3VycmVudEF0dHJpYnV0ZXMgfHwgKGF0dHJpYnV0ZXMgJiBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkpKQorICAg
ICAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eSB8fCBtb2RlID09
IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eUlnbm9yaW5nRXh0ZW5zaWJpbGl0eSkgJiYgKGF0dHJp
YnV0ZXMgIT0gY3VycmVudEF0dHJpYnV0ZXMgfHwgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6QWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkpKQogICAgICAgICAgICAgICAg
IHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKHZt
LCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykpOwogICAgICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCEoY3VycmVudEF0dHJpYnV0ZXMgJiBQcm9wZXJ0
eUF0dHJpYnV0ZTo6QWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkpOwogICAgICAgICAg
ICAgICAgIHNsb3Quc2V0RXhpc3RpbmdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgobW9kZSA9PSBQdXRN
b2RlUHV0KSAmJiAhaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKHZtKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQgfHwgbW9kZSA9PSBQdXRN
b2RlRGVmaW5lT3duUHJvcGVydHkpICYmICFpc1N0cnVjdHVyZUV4dGVuc2libGUodm0pKQorICAg
ICAgICAgICAgcmV0dXJuIE5vbkV4dGVuc2libGVPYmplY3RQcm9wZXJ0eURlZmluZUVycm9yOwog
CiAgICAgICAgIG9mZnNldCA9IHByZXBhcmVUb1B1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHN0cnVjdHVyZUlELCBzdHJ1Y3R1cmUpOwogICAg
ICAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOwpAQCAtMzYyLDcgKzM2Myw3IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lCiAgICAgICAgIHNsb3Quc2V0TmV3UHJvcGVydHkodGhpcywgb2Zmc2V0
KTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
CiAgICAgICAgICAgICB0aGlzLT5zdHJ1Y3R1cmUodm0pLT5zZXRDb250YWluc1JlYWRPbmx5UHJv
cGVydGllcygpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbDo6bnVsbCgpOwogICAgIH0KIAogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKQEAgLTM4
NiwyMSArMzg3LDIxIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50
ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lCiAgICAgICAgIHB1dERpcmVj
dCh2bSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgbmV3U3RydWN0
dXJlKTsKICAgICAgICAgc2xvdC5zZXROZXdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogICAg
IH0KIAogICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgIG9mZnNldCA9IHN0cnVj
dHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzKTsKICAgICBpZiAo
b2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKLSAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQ
dXQpICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5T3JB
Y2Nlc3Nvck9yQ3VzdG9tQWNjZXNzb3IpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmICgobW9kZSA9PSBQdXRNb2RlUHV0IHx8IG1vZGUgPT0gUHV0TW9kZURlZmluZU93blBy
b3BlcnR5KSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eU9yQWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yKQorICAgICAgICAgICAgcmV0dXJuIFJlYWRvbmx5
UHJvcGVydHlDaGFuZ2VFcnJvcjsKIAogICAgICAgICBzdHJ1Y3R1cmUtPmRpZFJlcGxhY2VQcm9w
ZXJ0eShvZmZzZXQpOwogICAgICAgICBwdXREaXJlY3Qodm0sIG9mZnNldCwgdmFsdWUpOwogCiAg
ICAgICAgIC8vIEZJWE1FOiBDaGVjayBhdHRyaWJ1dGVzIGFnYWluc3QgUHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yT3JWYWx1ZS4gQ2hhbmdpbmcgR2V0dGVyU2V0dGVyIHNob3VsZCB3
b3JrIHcvbyB0cmFuc2l0aW9uLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE0MzQyCi0gICAgICAgIGlmIChtb2RlID09IFB1dE1vZGVEZWZpbmVP
d25Qcm9wZXJ0eSAmJiAoYXR0cmlidXRlcyAhPSBjdXJyZW50QXR0cmlidXRlcyB8fCAoYXR0cmli
dXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvck9yQ3VzdG9tQWNjZXNzb3JPclZhbHVl
KSkpIHsKKyAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eSB8fCBt
b2RlID09IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eUlnbm9yaW5nRXh0ZW5zaWJpbGl0eSkgJiYg
KGF0dHJpYnV0ZXMgIT0gY3VycmVudEF0dHJpYnV0ZXMgfHwgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0
eUF0dHJpYnV0ZTo6QWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkpKSB7CiAgICAgICAg
ICAgICAvLyBXZSB3YW50IHRoZSBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50IHRvIGZp
cmUgYWZ0ZXIgdGhpcyBvYmplY3QgaGFzIHN3aXRjaGVkIHN0cnVjdHVyZS4KICAgICAgICAgICAg
IC8vIFRoaXMgYWxsb3dzIGFkYXB0aXZlIHdhdGNocG9pbnRzIHRvIG9ic2VydmUgaWYgdGhlIG5l
dyBzdHJ1Y3R1cmUgaXMgdGhlIG9uZSB3ZSB3YW50LgogICAgICAgICAgICAgRGVmZXJyZWRTdHJ1
Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUgZGVmZXJyZWRXYXRjaHBvaW50RmlyZSh2bSwg
c3RydWN0dXJlKTsKQEAgLTQxMCwxMSArNDExLDExIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09i
amVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
CiAgICAgICAgICAgICBzbG90LnNldEV4aXN0aW5nUHJvcGVydHkodGhpcywgb2Zmc2V0KTsKICAg
ICAgICAgfQogCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsOjpudWxsKCk7CiAgICAgfQogCi0gICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmICFp
c1N0cnVjdHVyZUV4dGVuc2libGUodm0pKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KChtb2RlID09IFB1dE1vZGVQdXQgfHwgbW9kZSA9PSBQdXRNb2RlRGVmaW5lT3duUHJvcGVydHkp
ICYmICFpc1N0cnVjdHVyZUV4dGVuc2libGUodm0pKQorICAgICAgICByZXR1cm4gTm9uRXh0ZW5z
aWJsZU9iamVjdFByb3BlcnR5RGVmaW5lRXJyb3I7CiAgICAgCiAgICAgLy8gV2Ugd2FudCB0aGUg
c3RydWN0dXJlIHRyYW5zaXRpb24gd2F0Y2hwb2ludCB0byBmaXJlIGFmdGVyIHRoaXMgb2JqZWN0
IGhhcyBzd2l0Y2hlZCBzdHJ1Y3R1cmUuCiAgICAgLy8gVGhpcyBhbGxvd3MgYWRhcHRpdmUgd2F0
Y2hwb2ludHMgdG8gb2JzZXJ2ZSBpZiB0aGUgbmV3IHN0cnVjdHVyZSBpcyB0aGUgb25lIHdlIHdh
bnQuCkBAIC00MzksNyArNDQwLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3RJbnRlcm5hbChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUKICAgICBzbG90
LnNldE5ld1Byb3BlcnR5KHRoaXMsIG9mZnNldCk7CiAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpCiAgICAgICAgIG5ld1N0cnVjdHVyZS0+c2V0Q29udGFp
bnNSZWFkT25seVByb3BlcnRpZXMoKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gQVND
SUlMaXRlcmFsOjpudWxsKCk7CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0OjptYXlCZVByb3Rv
dHlwZSgpIGNvbnN0CkBAIC01NzMsNyArNTc0LDcgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnZh
bGlkYXRlUHV0T3duRGF0YVByb3BlcnR5KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmEK
IGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgdmFsaWRhdGVQdXRPd25EYXRhUHJvcGVydHkodm0sIHByb3BlcnR5TmFtZSwgdmFs
dWUpOwotICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1
dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KS5pc051bGwoKTsKIH0K
IAogaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eU1heUJlSW5kZXgoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpAQCAtNTgzLDcgKzU4NCw3IEBAIGlu
bGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHlNYXlCZUluZGV4KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGlu
ZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gcHV0RGlyZWN0
SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgUHV0RGlyZWN0SW5k
ZXhMaWtlUHV0RGlyZWN0KTsKIAotICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2Rl
UHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CisgICAgcmV0dXJuIHB1dERp
cmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90
KS5pc051bGwoKTsKIH0KIAogQUxXQVlTX0lOTElORSBDYWxsRGF0YSBnZXRDYWxsRGF0YShWTSYg
dm0sIEpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlM
aXRlcmFsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCmluZGV4IGI3ODMz
YmRmMTFhM2I2NTMyNTNiNWY2YjJiZDYyYjY4N2ZiYWM2YzUuLjVjMjM3ZjMwOWUxYjgwY2VhYTJh
M2MyYWMyYThjNGRhYTcyZTYzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQVND
SUlMaXRlcmFsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaApAQCAt
NDksNiArNDksOCBAQCBjbGFzcyBBU0NJSUxpdGVyYWwgZmluYWwgewogICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsIHsgbnVsbHB0ciB9OwogICAgIH0KIAorICAgIGNvbnN0ZXhwciBib29sIGlz
TnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2NoYXJhY3RlcnM7IH0KKwogICAgIGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9CiAg
ICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0
PGNvbnN0IExDaGFyKj4obV9jaGFyYWN0ZXJzKTsgfQogICAgIHNpemVfdCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBzdHJsZW4obV9jaGFyYWN0ZXJzKTsgfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9D
aGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBlOTI2ZTQ0ZmE4MTRjMTMxZjYzZjll
MDk4MDcwNTJhMTYwNjU0YWMwLi40NzllODVkZmI0M2ZiZDc0ODU4MjE2ODI2OTRkNTA3Y2NiNTUy
NjM5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTExLTI0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gUHVibGljIENsYXNzIEZpZWxkIGluaXRpYWxpemF0
aW9uIGlzIHNsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMjQ3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1jbGFzc2ljLWNvbnN0cnVjdG9yLWFz
c2lnbm1lbnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKENsYXNzaWNfQ29uc3RydWN0b3JfQXNzaWdu
bWVudHMpOgorICAgICAgICAoYmVuY2gpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9jbGFz
cy1maWVsZHMtcHJpdmF0ZS1maWVsZHMuanM6IEFkZGVkLgorICAgICAgICAoRVMyMDIyX1ByaXZh
dGVfRmllbGRzKToKKyAgICAgICAgKGJlbmNoKToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mv
Y2xhc3MtZmllbGRzLXB1YmxpYy1maWVsZHMuanM6IEFkZGVkLgorICAgICAgICAoRVMyMDIyX1B1
YmxpY19GaWVsZHMpOgorICAgICAgICAoYmVuY2gpOgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1m
aWVsZHMtZ2V0dGVyLW92ZXJyaWRlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToK
KyAgICAgICAgKGRlZmluZUNHZXR0ZXIuKToKKyAgICAgICAgKEIpOgorICAgICAgICAoZGVmaW5l
MEdldHRlci4pOgorICAgICAgICAoZGVmaW5lMEdldHRlcik6CisgICAgICAgIChEKToKKwogMjAy
MS0xMS0xOSAgQXN1bXUgVGFraWthd2EgIDxhc3VtdUBpZ2FsaWEuY29tPgogCiAgICAgICAgIEZp
eCBXZWJBc3NlbWJseSBtZW1vcnkuZmlsbCBvdXQgb2YgYm91bmRzIGVycm9yIG1lc3NhZ2UKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1jbGFzc2ljLWNv
bnN0cnVjdG9yLWFzc2lnbm1lbnRzLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3Mt
ZmllbGRzLWNsYXNzaWMtY29uc3RydWN0b3ItYXNzaWdubWVudHMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzkw
NWVkODEwMTE5ZDg2Mjg1NzI2NDRmZDc5Yzc2ZTEyYjFmZWRjMwotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1jbGFzc2ljLWNvbnN0cnVjdG9y
LWFzc2lnbm1lbnRzLmpzCkBAIC0wLDAgKzEsMjggQEAKK2NsYXNzIENsYXNzaWNfQ29uc3RydWN0
b3JfQXNzaWdubWVudHMgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICB0aGlzLnZlcmlm
aWNhdGlvbj0xOworCisgICAgICAgIHRoaXMuXzAwPTE7IHRoaXMuXzAxPTE7IHRoaXMuXzAyPTE7
IHRoaXMuXzAzPTE7IHRoaXMuXzA0PTE7IHRoaXMuXzA1PTE7IHRoaXMuXzA2PTE7IHRoaXMuXzA3
PTE7IHRoaXMuXzA4PTE7IHRoaXMuXzA5PTE7CisgICAgICAgIHRoaXMuXzEwPTE7IHRoaXMuXzEx
PTE7IHRoaXMuXzEyPTE7IHRoaXMuXzEzPTE7IHRoaXMuXzE0PTE7IHRoaXMuXzE1PTE7IHRoaXMu
XzE2PTE7IHRoaXMuXzE3PTE7IHRoaXMuXzE4PTE7IHRoaXMuXzE5PTE7CisgICAgICAgIHRoaXMu
XzIwPTE7IHRoaXMuXzIxPTE7IHRoaXMuXzIyPTE7IHRoaXMuXzIzPTE7IHRoaXMuXzI0PTE7IHRo
aXMuXzI1PTE7IHRoaXMuXzI2PTE7IHRoaXMuXzI3PTE7IHRoaXMuXzI4PTE7IHRoaXMuXzI5PTE7
CisgICAgICAgIHRoaXMuXzMwPTE7IHRoaXMuXzMxPTE7IHRoaXMuXzMyPTE7IHRoaXMuXzMzPTE7
IHRoaXMuXzM0PTE7IHRoaXMuXzM1PTE7IHRoaXMuXzM2PTE7IHRoaXMuXzM3PTE7IHRoaXMuXzM4
PTE7IHRoaXMuXzM5PTE7CisgICAgICAgIHRoaXMuXzQwPTE7IHRoaXMuXzQxPTE7IHRoaXMuXzQy
PTE7IHRoaXMuXzQzPTE7IHRoaXMuXzQ0PTE7IHRoaXMuXzQ1PTE7IHRoaXMuXzQ2PTE7IHRoaXMu
XzQ3PTE7IHRoaXMuXzQ4PTE7IHRoaXMuXzQ5PTE7CisgICAgICAgIHRoaXMuXzUwPTE7IHRoaXMu
XzUxPTE7IHRoaXMuXzUyPTE7IHRoaXMuXzUzPTE7IHRoaXMuXzU0PTE7IHRoaXMuXzU1PTE7IHRo
aXMuXzU2PTE7IHRoaXMuXzU3PTE7IHRoaXMuXzU4PTE7IHRoaXMuXzU5PTE7CisgICAgICAgIHRo
aXMuXzYwPTE7IHRoaXMuXzYxPTE7IHRoaXMuXzYyPTE7IHRoaXMuXzYzPTE7IHRoaXMuXzY0PTE7
IHRoaXMuXzY1PTE7IHRoaXMuXzY2PTE7IHRoaXMuXzY3PTE7IHRoaXMuXzY4PTE7IHRoaXMuXzY5
PTE7CisgICAgICAgIHRoaXMuXzcwPTE7IHRoaXMuXzcxPTE7IHRoaXMuXzcyPTE7IHRoaXMuXzcz
PTE7IHRoaXMuXzc0PTE7IHRoaXMuXzc1PTE7IHRoaXMuXzc2PTE7IHRoaXMuXzc3PTE7IHRoaXMu
Xzc4PTE7IHRoaXMuXzc5PTE7CisgICAgICAgIHRoaXMuXzgwPTE7IHRoaXMuXzgxPTE7IHRoaXMu
XzgyPTE7IHRoaXMuXzgzPTE7IHRoaXMuXzg0PTE7IHRoaXMuXzg1PTE7IHRoaXMuXzg2PTE7IHRo
aXMuXzg3PTE7IHRoaXMuXzg4PTE7IHRoaXMuXzg5PTE7CisgICAgICAgIHRoaXMuXzkwPTE7IHRo
aXMuXzkxPTE7IHRoaXMuXzkyPTE7IHRoaXMuXzkzPTE7IHRoaXMuXzk0PTE7IHRoaXMuXzk1PTE7
IHRoaXMuXzk2PTE7IHRoaXMuXzk3PTE7IHRoaXMuXzk4PTE7IHRoaXMuXzk5PTE7CisgICAgfQor
fQorCitjb25zdCBJVEVSQVRJT05TID0gMTAwXzAwMDsKKworZnVuY3Rpb24gYmVuY2godGVzdENs
YXNzKSB7CisgICAgdmFyIGFjYyA9IDA7CisgICAgZm9yICh2YXIgaT0wOyBpPElURVJBVElPTlM7
IGkrKykgeworICAgICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyB0ZXN0Q2xhc3MoKQorICAgICAg
ICBhY2MgKz0gaW5zdGFuY2UudmVyaWZpY2F0aW9uOworICAgIH0KK30KKworYmVuY2goQ2xhc3Np
Y19Db25zdHJ1Y3Rvcl9Bc3NpZ25tZW50cyk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1maWVsZHMuanMgYi9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1maWVsZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmUzMjZm
NmQ4MzVkMWVmN2RlYTQyOTk4ZmNjNzY3NTE2NjAxOWFkOAotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZpZWxkcy5qcwpAQCAt
MCwwICsxLDI5IEBACitjbGFzcyBFUzIwMjJfUHJpdmF0ZV9GaWVsZHMgeworICAgIHZlcmlmaWNh
dGlvbj0xOworCisgICAgI18wMD0xOyAjXzAxPTE7ICNfMDI9MTsgI18wMz0xOyAjXzA0PTE7ICNf
MDU9MTsgI18wNj0xOyAjXzA3PTE7ICNfMDg9MTsgI18wOT0xOworICAgICNfMTA9MTsgI18xMT0x
OyAjXzEyPTE7ICNfMTM9MTsgI18xND0xOyAjXzE1PTE7ICNfMTY9MTsgI18xNz0xOyAjXzE4PTE7
ICNfMTk9MTsKKyAgICAjXzIwPTE7ICNfMjE9MTsgI18yMj0xOyAjXzIzPTE7ICNfMjQ9MTsgI18y
NT0xOyAjXzI2PTE7ICNfMjc9MTsgI18yOD0xOyAjXzI5PTE7CisgICAgI18zMD0xOyAjXzMxPTE7
ICNfMzI9MTsgI18zMz0xOyAjXzM0PTE7ICNfMzU9MTsgI18zNj0xOyAjXzM3PTE7ICNfMzg9MTsg
I18zOT0xOworICAgICNfNDA9MTsgI180MT0xOyAjXzQyPTE7ICNfNDM9MTsgI180ND0xOyAjXzQ1
PTE7ICNfNDY9MTsgI180Nz0xOyAjXzQ4PTE7ICNfNDk9MTsKKyAgICAjXzUwPTE7ICNfNTE9MTsg
I181Mj0xOyAjXzUzPTE7ICNfNTQ9MTsgI181NT0xOyAjXzU2PTE7ICNfNTc9MTsgI181OD0xOyAj
XzU5PTE7CisgICAgI182MD0xOyAjXzYxPTE7ICNfNjI9MTsgI182Mz0xOyAjXzY0PTE7ICNfNjU9
MTsgI182Nj0xOyAjXzY3PTE7ICNfNjg9MTsgI182OT0xOworICAgICNfNzA9MTsgI183MT0xOyAj
XzcyPTE7ICNfNzM9MTsgI183ND0xOyAjXzc1PTE7ICNfNzY9MTsgI183Nz0xOyAjXzc4PTE7ICNf
Nzk9MTsKKyAgICAjXzgwPTE7ICNfODE9MTsgI184Mj0xOyAjXzgzPTE7ICNfODQ9MTsgI184NT0x
OyAjXzg2PTE7ICNfODc9MTsgI184OD0xOyAjXzg5PTE7CisgICAgI185MD0xOyAjXzkxPTE7ICNf
OTI9MTsgI185Mz0xOyAjXzk0PTE7ICNfOTU9MTsgI185Nj0xOyAjXzk3PTE7ICNfOTg9MTsgI185
OT0xOworfQorCisKKy8vIEJlbmNobWFya2luZworCitjb25zdCBJVEVSQVRJT05TID0gMTAwXzAw
MDsKKworZnVuY3Rpb24gYmVuY2godGVzdENsYXNzKSB7CisgICAgdmFyIGFjYyA9IDA7CisgICAg
Zm9yICh2YXIgaT0wOyBpPElURVJBVElPTlM7IGkrKykgeworICAgICAgICBjb25zdCBpbnN0YW5j
ZSA9IG5ldyB0ZXN0Q2xhc3MoKQorICAgICAgICBhY2MgKz0gaW5zdGFuY2UudmVyaWZpY2F0aW9u
OworICAgIH0KK30KKworYmVuY2goRVMyMDIyX1ByaXZhdGVfRmllbGRzKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wdWJsaWMtZmllbGRzLmpzIGIv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3MtZmllbGRzLXB1YmxpYy1maWVsZHMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjU5NGQ1NThiN2QzOWU5MDUxNzFjODEwYTI3ZjA5ZWIxYmNhYzE1MgotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wdWJsaWMt
ZmllbGRzLmpzCkBAIC0wLDAgKzEsMjYgQEAKK2NsYXNzIEVTMjAyMl9QdWJsaWNfRmllbGRzIHsK
KyAgICB2ZXJpZmljYXRpb249MTsKKworICAgIF8wMD0xOyBfMDE9MTsgXzAyPTE7IF8wMz0xOyBf
MDQ9MTsgXzA1PTE7IF8wNj0xOyBfMDc9MTsgXzA4PTE7IF8wOT0xOworICAgIF8xMD0xOyBfMTE9
MTsgXzEyPTE7IF8xMz0xOyBfMTQ9MTsgXzE1PTE7IF8xNj0xOyBfMTc9MTsgXzE4PTE7IF8xOT0x
OworICAgIF8yMD0xOyBfMjE9MTsgXzIyPTE7IF8yMz0xOyBfMjQ9MTsgXzI1PTE7IF8yNj0xOyBf
Mjc9MTsgXzI4PTE7IF8yOT0xOworICAgIF8zMD0xOyBfMzE9MTsgXzMyPTE7IF8zMz0xOyBfMzQ9
MTsgXzM1PTE7IF8zNj0xOyBfMzc9MTsgXzM4PTE7IF8zOT0xOworICAgIF80MD0xOyBfNDE9MTsg
XzQyPTE7IF80Mz0xOyBfNDQ9MTsgXzQ1PTE7IF80Nj0xOyBfNDc9MTsgXzQ4PTE7IF80OT0xOwor
ICAgIF81MD0xOyBfNTE9MTsgXzUyPTE7IF81Mz0xOyBfNTQ9MTsgXzU1PTE7IF81Nj0xOyBfNTc9
MTsgXzU4PTE7IF81OT0xOworICAgIF82MD0xOyBfNjE9MTsgXzYyPTE7IF82Mz0xOyBfNjQ9MTsg
XzY1PTE7IF82Nj0xOyBfNjc9MTsgXzY4PTE7IF82OT0xOworICAgIF83MD0xOyBfNzE9MTsgXzcy
PTE7IF83Mz0xOyBfNzQ9MTsgXzc1PTE7IF83Nj0xOyBfNzc9MTsgXzc4PTE7IF83OT0xOworICAg
IF84MD0xOyBfODE9MTsgXzgyPTE7IF84Mz0xOyBfODQ9MTsgXzg1PTE7IF84Nj0xOyBfODc9MTsg
Xzg4PTE7IF84OT0xOworICAgIF85MD0xOyBfOTE9MTsgXzkyPTE7IF85Mz0xOyBfOTQ9MTsgXzk1
PTE7IF85Nj0xOyBfOTc9MTsgXzk4PTE7IF85OT0xOworfQorCitjb25zdCBJVEVSQVRJT05TID0g
MTAwXzAwMDsKKworZnVuY3Rpb24gYmVuY2godGVzdENsYXNzKSB7CisgICAgdmFyIGFjYyA9IDA7
CisgICAgZm9yICh2YXIgaT0wOyBpPElURVJBVElPTlM7IGkrKykgeworICAgICAgICBjb25zdCBp
bnN0YW5jZSA9IG5ldyB0ZXN0Q2xhc3MoKQorICAgICAgICBhY2MgKz0gaW5zdGFuY2UudmVyaWZp
Y2F0aW9uOworICAgIH0KK30KKworYmVuY2goRVMyMDIyX1B1YmxpY19GaWVsZHMpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLWdldHRlci1vdmVycmlkZS5qcyBiL0pT
VGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1nZXR0ZXItb3ZlcnJpZGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2EyMTQzMjA0YTY5MmE1ODNkMDQxMmVhYTRjMDFiMTUzN2VlNDlmMAotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1nZXR0ZXItb3ZlcnJpZGUuanMKQEAgLTAs
MCArMSw1MCBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7Cisg
ICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0
cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRo
cm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRo
cm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0
cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBi
YWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24gZGVmaW5lQ0dldHRl
cihvYmopIHsKKyAgICBSZWZsZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgImMiLCB7CisgICAgICAg
IGdldDogZnVuY3Rpb24oKSB7IHJldHVybiAnZGVmaW5lQ0dldHRlcic7IH0KKyAgICB9KTsKK30K
KworY2xhc3MgQSB7CisgICAgYiA9IGRlZmluZUNHZXR0ZXIodGhpcyk7CisgICAgYyA9IDQyOwor
fTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBBKCksIGBUeXBlRXJyb3I6IEF0dGVtcHRpbmcgdG8g
Y2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHku
YCk7CisKK2xldCBrZXkgPSAnYyc7CitjbGFzcyBCIHsKKyAgICBiID0gZGVmaW5lQ0dldHRlcih0
aGlzKTsKKyAgICBba2V5XSA9IDQyOworfTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBCKCksIGBU
eXBlRXJyb3I6IEF0dGVtcHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2Yg
dW5jb25maWd1cmFibGUgcHJvcGVydHkuYCk7CisKK2Z1bmN0aW9uIGRlZmluZTBHZXR0ZXIob2Jq
KSB7CisgICAgUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmosICIwIiwgeworICAgICAgICBnZXQ6
IGZ1bmN0aW9uKCkgeyByZXR1cm4gJ2RlZmluZUNHZXR0ZXInOyB9CisgICAgfSk7Cit9CitjbGFz
cyBDIHsKKyAgICBiID0gZGVmaW5lMEdldHRlcih0aGlzKTsKKyAgICBbMF0gPSA0MjsKK307Citz
aG91bGRUaHJvdygoKSA9PiBuZXcgQygpLCBgVHlwZUVycm9yOiBBdHRlbXB0aW5nIHRvIGNoYW5n
ZSBjb25maWd1cmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LmApOwor
CitjbGFzcyBEIHsKKyAgICBiID0gT2JqZWN0LmZyZWV6ZSh0aGlzKTsKKyAgICBbMF0gPSA0MjsK
K307CitzaG91bGRUaHJvdygoKSA9PiBuZXcgRCgpLCBgVHlwZUVycm9yOiBBdHRlbXB0aW5nIHRv
IGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS5gKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445163</attachid>
            <date>2021-11-25 17:37:26 -0800</date>
            <delta_ts>2021-11-29 09:23:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232479-20211125203724.patch</filename>
            <type>text/plain</type>
            <size>34915</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZjJhM2Q1MWYxMGQ1YzZlYmM0MWNkN2RmNzUwOTQzZDNlNzMzNjAzLi43Y2VmZmRkYzBkMGNiYzc4
OWE2NzE5MDVjNTE1OTMzZjAyNTYyOTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAyMS0xMS0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFB1YmxpYyBDbGFzcyBGaWVsZCBpbml0aWFsaXphdGlvbiBpcyBz
bG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0
NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGFz
cyBwdWJsaWMgZmllbGQgaW1wbGVtZW50YXRpb24gZGlkIG5vdCBoYXZlIG9wdGltaXphdGlvbiBm
b3IgaW5pdGlhbGl6aW5nIGNsYXNzIGZpZWxkczogdXNpbmcKKyAgICAgICAgcnVudGltZSBjYWxs
IHRvIGluaXRpYWxpemUgZmllbGRzIGluc3RlYWQgb2YgSUMuIFRoaXMgcGF0Y2ggbGV2ZXJhZ2Vz
IHB1dF9ieV9pZCAvIHB1dF9ieV92YWwgd2l0aAorICAgICAgICBkaXJlY3QgZmxhZyBzbyB0aGF0
IHdlIGNhbiBlbmFibGUgSUMuCisKKyAgICAgICAgQ3VycmVudGx5LCB3ZSBhcmUgbm90IGNoYW5n
aW5nIG9yaWdpbmFsIHB1dERpcmVjdCBzZW1hbnRpY3Mgc2luY2UgaXQgaXMgb3V0IG9mIHRoaXMg
cGF0Y2gncyBzY29wZS4KKyAgICAgICAgV2Ugd2lsbCBsb29rIGludG8gaXQgYW5kIHByb2JhYmx5
IGNoYW5naW5nIGl0IGluIGEgc2VwYXJhdGUgcGF0Y2gsIGJ1dCBub3QgaW4gdGhpcyBwYXRjaC4K
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRvVCAgICAgICAgICAgICAgICAgICAgIFBhdGNoZWQKKworICAgICAgICBjbGFzcy1m
aWVsZHMtY2xhc3NpYy1jb25zdHJ1Y3Rvci1hc3NpZ25tZW50cworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3LjE0OTErLTIuNjMyNyAgICAg
ICAgICAgMTUuMDkwNistMC42Nzk1ICAgICAgICAgIG1pZ2h0IGJlIDEuMTM2NHggZmFzdGVyCisg
ICAgICAgIGNsYXNzLWZpZWxkcy1wdWJsaWMtZmllbGRzICAgICAgICAgICAgICAgICAgICA0MDku
NDMyOCstOC4zMTQwICAgICBeICAgICAyMC4yNzUyKy0yLjA4MzUgICAgICAgIF4gZGVmaW5pdGVs
eSAyMC4xOTM4eCBmYXN0ZXIKKyAgICAgICAgY2xhc3MtZmllbGRzLXByaXZhdGUtZmllbGRzICAg
ICAgICAgICAgICAgICAgICAyNy4yNjIxKy0xLjM4NTggICAgICAgICAgIDI1LjE4MTArLTMuOTg3
MyAgICAgICAgICBtaWdodCBiZSAxLjA4MjZ4IGZhc3RlcgorCisgICAgICAgICogYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkRlZmluZUZpZWxkTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAg
ICAoSlNDOjpDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSk6CisgICAgICAgICog
cnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RD
dXN0b21BY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROb25JbmRl
eEFjY2Vzc29yKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0
UmVzcGVjdGluZ0V4dGVuc2liaWxpdHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRJbmxpbmVGYXN0KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OnB1dE93bkRhdGFQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRPd25E
YXRhUHJvcGVydHlNYXlCZUluZGV4KToKKwogMjAyMS0xMS0yMiAgR2V6YSBMb3JlICA8Z2xvcmVA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBNYWtlIHNoYXJpbmcgb2YgdW5saW5rZWQgYmFz
ZWxpbmUgY29kZSBwb3NzaWJsZSBvbiBKU1ZBTFVFMzJfNjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZWFiM2IyMGRhNWY0MWEy
NjAxMzg0OGM5NWIyZWI1NmYzMWNkMTc4MS4uODk2OTAxNzQ4ZDZhNTQ3ZGNmYTE2NDE0NTVjNzIz
OWM4YjU5ZmFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0xMS0yNSAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFB1YmxpYyBDbGFzcyBGaWVs
ZCBpbml0aWFsaXphdGlvbiBpcyBzbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzI0NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oOgorCiAyMDIxLTExLTE5
ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0g
YWRkIGF1ZGlvIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBmZWRmMjlhZTEwYzk5NmJkYmRmN2ZkY2Q0NjYx
OTM2ZTY4MGQxNjg4Li41ZDg0NTY0NWJhMzM5MzIzOThkYTMzMzQ5MjI1ZGEwZmM2OGFmM2I2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCkBAIC01MDM5LDEwICs1MDM5LDEyIEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKICAg
ICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgRGVmaW5lRmllbGROb2RlOjpUeXBlOjpOYW1l
OiB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHB1YmxpYyBjbGFz
cyBmaWVsZHMKLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5ODMzMAotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lID0gZ2Vu
ZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsICptX2lkZW50KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsRGVmaW5lUHJvcGVydHkoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBwcm9wZXJ0eU5h
bWUuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBCeXRlY29kZUdlbmVyYXRv
cjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0
YWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUVudW1lcmFibGUsIG1fcG9zaXRpb24p
OworICAgICAgICBTdHJpY3RNb2RlU2NvcGUgc3RyaWN0TW9kZVNjb3BlKGdlbmVyYXRvcik7Cisg
ICAgICAgIGlmIChhdXRvIGluZGV4ID0gcGFyc2VJbmRleCgqbV9pZGVudCkpIHsKKyAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eU5hbWUgPSBnZW5lcmF0b3IuZW1pdExvYWQo
bnVsbHB0ciwganNOdW1iZXIoaW5kZXgudmFsdWUoKSkpOworICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXREaXJlY3RQdXRCeVZhbChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIHByb3BlcnR5TmFt
ZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksICptX2lkZW50
LCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIERlZmluZUZp
ZWxkTm9kZTo6VHlwZTo6UHJpdmF0ZU5hbWU6IHsKQEAgLTUwNTcsOSArNTA1OSw2IEBAIHZvaWQg
RGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIERlZmluZUZp
ZWxkTm9kZTo6VHlwZTo6Q29tcHV0ZWROYW1lOiB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXByb3Zl
IHBlcmZvcm1hbmNlIG9mIHB1YmxpYyBjbGFzcyBmaWVsZHMKLSAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODMzMAotCiAgICAgICAgIC8vIEZvciBD
b21wdXRlZE5hbWVzLCB0aGUgZXhwcmVzc2lvbiBoYXMgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZCBl
YXJsaWVyIGR1cmluZyBldmFsdWF0aW9uIG9mIGEgQ2xhc3NFeHByTm9kZS4KICAgICAgICAgLy8g
SGVyZSwgYG1faWRlbnRgIHJlZmVycyB0byBwcml2YXRlIHN5bWJvbCBJRCBpbiBhIGNsYXNzIGxl
eGljYWwgc2NvcGUsIGNvbnRhaW5pbmcgdGhlIHZhbHVlIGFscmVhZHkgY29udmVydGVkIHRvIGFu
IEV4cHJlc3Npb24uCiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZSgq
bV9pZGVudCk7CkBAIC01MDcyLDcgKzUwNzEsMTAgQEAgdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAg
ICAgICAgaWYgKHNob3VsZFNldEZ1bmN0aW9uTmFtZSkKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0U2V0RnVuY3Rpb25OYW1lKHZhbHVlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocHJpdmF0ZU5hbWUuZ2V0KCksIHZhciwgbV9w
b3NpdGlvbiwgbV9wb3NpdGlvbiArIG1faWRlbnQtPmxlbmd0aCgpKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBwcml2
YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpQcm9wZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0
eVdyaXRhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5RW51bWVyYWJsZSwgbV9wb3Np
dGlvbik7CisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cmljdE1vZGVTY29wZSBzdHJpY3RNb2Rl
U2NvcGUoZ2VuZXJhdG9yKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlW
YWwoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0
KCkpOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGRiNTJjMDU2
YzAxMDE3ZjVjNjJjYmMxYjVmZTEzNzNhMDdhN2I0ZTUuLmE0MDExNDAxYTdkMzQwYzYxNDViODFm
YjM3NGNmOWFiMGY1ZWI0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiU2NvcGVkQXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhGdW5jdGlvbi5oIgogI2luY2x1ZGUgIlN0YWNr
QWxpZ25tZW50LmgiCisjaW5jbHVkZSAiVHlwZUVycm9yLmgiCiAjaW5jbHVkZSAiVk1JbmxpbmVz
LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0xODYsMTggKzE4NywyOCBA
QCBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogb3JpZ2luYWxTdHJ1Y3R1cmVCZWZvcmVQdXQoVk0m
IHZtLCBKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJl
KHZtKTsKIH0KIAotCiBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dERpcmVjdFdpdGhSZWlm
eShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QsIFN0cnVjdHVyZSoqIHJlc3VsdCA9IG51bGxwdHIpCiB7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGlmIChiYXNlT2JqZWN0LT5pbmhl
cml0czxKU0Z1bmN0aW9uPih2bSkpIHsKKyAgICBib29sIGlzSlNGdW5jdGlvbiA9IGJhc2VPYmpl
Y3QtPmluaGVyaXRzPEpTRnVuY3Rpb24+KHZtKTsKKyAgICBpZiAoaXNKU0Z1bmN0aW9uKSB7CiAg
ICAgICAgIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oYmFzZU9iamVjdCktPnJlaWZ5TGF6eVByb3BlcnR5
SWZOZWVkZWQodm0sIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICB9CiAgICAgaWYgKHJlc3VsdCkKICAg
ICAgICAgKnJlc3VsdCA9IG9yaWdpbmFsU3RydWN0dXJlQmVmb3JlUHV0KHZtLCBiYXNlT2JqZWN0
KTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0KHZtLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
YmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKKyAgICBpZiAoTElLRUxZKHByb3BlcnR5TmFtZSAh
PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8gJiYgIXN0cnVjdHVyZS0+aGFzUmVh
ZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpICYmIChpc0pTRnVu
Y3Rpb24gfHwgc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuZGVmaW5lT3duUHJv
cGVydHkgPT0gJkpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSkpKSB7CisgICAgICAgIGF1dG8g
ZXJyb3IgPSBiYXNlT2JqZWN0LT5wdXREaXJlY3RSZXNwZWN0aW5nRXh0ZW5zaWJpbGl0eSh2bSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CisgICAgICAgIGlmICghZXJyb3IuaXNOdWxs
KCkpCisgICAgICAgICAgICB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2xvdC5pc1N0
cmljdE1vZGUoKSwgZXJyb3IpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNsb3QuZGlzYWJsZUNh
Y2hpbmcoKTsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOworICAgICAgICBQcm9wZXJ0eURlc2Ny
aXB0b3IgZGVzY3JpcHRvcih2YWx1ZSwgMCk7CisgICAgICAgIGJhc2VPYmplY3QtPm1ldGhvZFRh
YmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOworICAgIH0KIH0KIAog
c3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBwdXREaXJlY3RBY2Nlc3NvcldpdGhSZWlmeShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yLCB1bnNpZ25l
ZCBhdHRyaWJ1dGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
aW5kZXggMGIyZWViNjhiMWMyNTY5MmVkOTIxZTBlOTAxOTA0OWVjMDVjYzRiMC4uMjhlNzJlZTM3
ZDMyOGQ4OTNlNGRlZDg1NDYzZWQ1YmQyZjNhYjk5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMjAwNiw3ICsyMDA2LDcgQEAgYm9vbCBKU09iamVj
dDo6cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHUKICAgICAgICAgYXR0cmlidXRlcyB8PSBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3Vz
dG9tVmFsdWU7CiAKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKLSAgICBib29sIHJl
c3VsdCA9IHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOworICAgIGJvb2wgcmVzdWx0ID0g
cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5SWdub3JpbmdFeHRlbnNp
YmlsaXR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCkuaXNOdWxs
KCk7CiAKICAgICBBU1NFUlQoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9w
ZXJ0eSk7CiAKQEAgLTIwMzcsNyArMjAzNyw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE5v
bkluZGV4QWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBHZXR0CiB7
CiAgICAgQVNTRVJUKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwog
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgIGJvb2wgcmVzdWx0ID0gcHV0RGly
ZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCBh
Y2Nlc3NvciwgYXR0cmlidXRlcywgc2xvdCk7CisgICAgYm9vbCByZXN1bHQgPSBwdXREaXJlY3RJ
bnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHlJZ25vcmluZ0V4dGVuc2liaWxpdHk+KHZt
LCBwcm9wZXJ0eU5hbWUsIGFjY2Vzc29yLCBhdHRyaWJ1dGVzLCBzbG90KS5pc051bGwoKTsKIAog
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKICAgICBpZiAo
YXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDBjNGRmYTMxZDg3M2I3YTkzMjk5YWQ3ZWRk
MTE4NDBhZWE4YzJlOWIuLjUxYjEzMDMxZTYyMTQ2ZjUyNGJlMWU3N2E5OTFkZWExODIyMWNhZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMTAwLDkgKzEw
MCwxMCBAQCBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGZyaWVuZCBjbGFz
cyBNYXJrZWRCbG9jazsKICAgICBKU19FWFBPUlRfUFJJVkFURSBmcmllbmQgYm9vbCBzZXRVcFN0
YXRpY0Z1bmN0aW9uU2xvdChWTSYsIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiwgSlNPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogCi0gICAgZW51bSBQdXRNb2RlIHsKKyAgICBl
bnVtIFB1dE1vZGUgOiB1aW50OF90IHsKICAgICAgICAgUHV0TW9kZVB1dCwKICAgICAgICAgUHV0
TW9kZURlZmluZU93blByb3BlcnR5LAorICAgICAgICBQdXRNb2RlRGVmaW5lT3duUHJvcGVydHlJ
Z25vcmluZ0V4dGVuc2liaWxpdHksCiAgICAgfTsKIAogcHVibGljOgpAQCAtNjg1LDYgKzY4Niw3
IEBAIGNsYXNzIEpTT2JqZWN0IDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBwdXREaXJlY3Qo
Vk0mLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwKTsKICAg
ICBib29sIHB1dERpcmVjdChWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgYm9vbCBwdXREaXJlY3QoVk0mLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEFTQ0lJTGl0ZXJhbCBw
dXREaXJlY3RSZXNwZWN0aW5nRXh0ZW5zaWJpbGl0eShWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgdm9pZCBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcyA9IDApOwogICAgIGJvb2wgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihW
TSYsIFByb3BlcnR5TmFtZSwgR2V0dGVyU2V0dGVyKiwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAg
ICAgdm9pZCBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24oVk0mLCBQ
cm9wZXJ0eU5hbWUsIEdldHRlclNldHRlciosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwpAQCAtMTE1
Niw3ICsxMTU4LDcgQEAgY2xhc3MgSlNPYmplY3QgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBBcnJh
eVN0b3JhZ2UqIGVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZVdoZW5BcnJheVN0b3JhZ2VBbHJl
YWR5RXhpc3RzKFZNJiwgQXJyYXlTdG9yYWdlKik7CiAgICAgICAgIAogICAgIHRlbXBsYXRlPFB1
dE1vZGU+Ci0gICAgYm9vbCBwdXREaXJlY3RJbnRlcm5hbChWTSYsIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgdW5zaWduZWQgYXR0ciwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgQVNDSUlMaXRlcmFs
IHB1dERpcmVjdEludGVybmFsKFZNJiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBh
dHRyLCBQdXRQcm9wZXJ0eVNsb3QmKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lO
TElORSBib29sIHB1dElubGluZVNsb3coSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lO
TElORSBib29sIHB1dElubGluZUZhc3RSZXBsYWNpbmdTdGF0aWNQcm9wZXJ0eUlmTmVlZGVkKEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsK
QEAgLTE1ODIsMjEgKzE1ODQsMjggQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdChW
TSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUKICAgICBBU1NF
UlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRy
aWJ1dGU6OkFjY2Vzc29yKSk7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0N1c3RvbUdldHRlclNldHRl
cigpICYmICEoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvck9y
VmFsdWUpKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKLSAgICByZXR1cm4gcHV0
RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCk7CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFs
PFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eUlnbm9yaW5nRXh0ZW5zaWJpbGl0eT4odm0sIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpLmlzTnVsbCgpOwogfQogCiBpbmxpbmUg
Ym9vbCBKU09iamVjdDo6cHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSk7CiAgICAgQVNTRVJU
KCF2YWx1ZS5pc0N1c3RvbUdldHRlclNldHRlcigpKTsKLSAgICByZXR1cm4gcHV0RGlyZWN0SW50
ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
YXR0cmlidXRlcywgc2xvdCk7CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVE
ZWZpbmVPd25Qcm9wZXJ0eUlnbm9yaW5nRXh0ZW5zaWJpbGl0eT4odm0sIHByb3BlcnR5TmFtZSwg
dmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpLmlzTnVsbCgpOwogfQogCiBpbmxpbmUgYm9vbCBKU09i
amVjdDo6cHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCghdmFsdWUuaXNH
ZXR0ZXJTZXR0ZXIoKSk7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0N1c3RvbUdldHRlclNldHRlcigp
KTsKLSAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5
Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CisgICAgcmV0dXJuIHB1dERpcmVj
dEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eUlnbm9yaW5nRXh0ZW5zaWJpbGl0eT4o
dm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpLmlzTnVsbCgpOworfQorCitpbmxpbmUg
QVNDSUlMaXRlcmFsIEpTT2JqZWN0OjpwdXREaXJlY3RSZXNwZWN0aW5nRXh0ZW5zaWJpbGl0eShW
TSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBBU1NFUlQoIXZhbHVl
LmlzR2V0dGVyU2V0dGVyKCkpOworICAgIEFTU0VSVCghdmFsdWUuaXNDdXN0b21HZXR0ZXJTZXR0
ZXIoKSk7CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9w
ZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QpOwogfQogCiBj
b25zdGV4cHIgaW5saW5lIGludHB0cl90IG9mZnNldEluQnV0dGVyZmx5KFByb3BlcnR5T2Zmc2V0
IG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxp
bmVzLmgKaW5kZXggNzYwYTlhOWUyZWM0N2RiMzhmYTIzYmFkODk0ZTBlODBkYTY3NDBkMS4uOTUz
N2VmMGI3ZTEwOTIzZTUzZjc4ZjU0YTRhY2I1MzJkNjcyYmY1MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKQEAgLTI4Myw4ICsyODMsOSBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZUZhc3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAogICAgIC8vIEZJWE1FOiBGb3IgYSBmYWlsdXJlIGR1ZSB0byBub24tZXh0
ZW5zaWJsZSBzdHJ1Y3R1cmUsIHRoZSBlcnJvciBtZXNzYWdlIGlzIG1pc2xlYWRpbmcKLSAgICBp
ZiAoIXB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCAwLCBzbG90KSkKLSAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBzbG90LmlzU3RyaWN0TW9kZSgpLCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAg
YXV0byBlcnJvciA9IHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCAwLCBzbG90KTsKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHNsb3QuaXNTdHJpY3RNb2RlKCks
IGVycm9yKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzE5LDcgKzMyMCw3IEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBKU09iamVjdDo6aGFzT3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgdW5zaWduCiB9CiAKIHRlbXBsYXRlPEpTT2JqZWN0OjpQdXRNb2RlIG1vZGU+
Ci1BTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZNJiB2bSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgUHV0UHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElORSBBU0NJSUxpdGVyYWwg
SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNTRVJUKHZhbHVlLmlzR2V0dGVy
U2V0dGVyKCkgPT0gISEoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcikp
OwpAQCAtMzM1LDI2ICszMzYsMjYgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3RJbnRlcm5hbChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUKICAgICAgICAg
dW5zaWduZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzKTsK
ICAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7Ci0gICAgICAgICAgICBpZiAo
KG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHlPckFjY2Vzc29yT3JDdXN0b21BY2Nlc3NvcikKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCB8fCBt
b2RlID09IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eSkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHlPckFjY2Vzc29yT3JDdXN0b21BY2Nlc3NvcikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gUmVhZG9ubHlQcm9wZXJ0eUNoYW5nZUVycm9yOwogCiAgICAg
ICAgICAgICBwdXREaXJlY3Qodm0sIG9mZnNldCwgdmFsdWUpOwogICAgICAgICAgICAgc3RydWN0
dXJlLT5kaWRSZXBsYWNlUHJvcGVydHkob2Zmc2V0KTsKIAogICAgICAgICAgICAgLy8gRklYTUU6
IENoZWNrIGF0dHJpYnV0ZXMgYWdhaW5zdCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3JPclZhbHVlLiBDaGFuZ2luZyBHZXR0ZXJTZXR0ZXIgc2hvdWxkIHdvcmsgdy9vIHRyYW5zaXRp
b24uCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE0MzQyCi0gICAgICAgICAgICBpZiAobW9kZSA9PSBQdXRNb2RlRGVmaW5lT3duUHJvcGVy
dHkgJiYgKGF0dHJpYnV0ZXMgIT0gY3VycmVudEF0dHJpYnV0ZXMgfHwgKGF0dHJpYnV0ZXMgJiBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkpKQorICAg
ICAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eSB8fCBtb2RlID09
IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eUlnbm9yaW5nRXh0ZW5zaWJpbGl0eSkgJiYgKGF0dHJp
YnV0ZXMgIT0gY3VycmVudEF0dHJpYnV0ZXMgfHwgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6QWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkpKQogICAgICAgICAgICAgICAg
IHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKHZt
LCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykpOwogICAgICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCEoY3VycmVudEF0dHJpYnV0ZXMgJiBQcm9wZXJ0
eUF0dHJpYnV0ZTo6QWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkpOwogICAgICAgICAg
ICAgICAgIHNsb3Quc2V0RXhpc3RpbmdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgobW9kZSA9PSBQdXRN
b2RlUHV0KSAmJiAhaXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKHZtKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQgfHwgbW9kZSA9PSBQdXRN
b2RlRGVmaW5lT3duUHJvcGVydHkpICYmICFpc1N0cnVjdHVyZUV4dGVuc2libGUodm0pKQorICAg
ICAgICAgICAgcmV0dXJuIE5vbkV4dGVuc2libGVPYmplY3RQcm9wZXJ0eURlZmluZUVycm9yOwog
CiAgICAgICAgIG9mZnNldCA9IHByZXBhcmVUb1B1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHN0cnVjdHVyZUlELCBzdHJ1Y3R1cmUpOwogICAg
ICAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOwpAQCAtMzYyLDcgKzM2Myw3IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lCiAgICAgICAgIHNsb3Quc2V0TmV3UHJvcGVydHkodGhpcywgb2Zmc2V0
KTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
CiAgICAgICAgICAgICB0aGlzLT5zdHJ1Y3R1cmUodm0pLT5zZXRDb250YWluc1JlYWRPbmx5UHJv
cGVydGllcygpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbDo6bnVsbCgpOwogICAgIH0KIAogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKQEAgLTM4
NiwyMSArMzg3LDIxIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50
ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lCiAgICAgICAgIHB1dERpcmVj
dCh2bSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgbmV3U3RydWN0
dXJlKTsKICAgICAgICAgc2xvdC5zZXROZXdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogICAg
IH0KIAogICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgIG9mZnNldCA9IHN0cnVj
dHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzKTsKICAgICBpZiAo
b2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKLSAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQ
dXQpICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5T3JB
Y2Nlc3Nvck9yQ3VzdG9tQWNjZXNzb3IpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmICgobW9kZSA9PSBQdXRNb2RlUHV0IHx8IG1vZGUgPT0gUHV0TW9kZURlZmluZU93blBy
b3BlcnR5KSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eU9yQWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yKQorICAgICAgICAgICAgcmV0dXJuIFJlYWRvbmx5
UHJvcGVydHlDaGFuZ2VFcnJvcjsKIAogICAgICAgICBzdHJ1Y3R1cmUtPmRpZFJlcGxhY2VQcm9w
ZXJ0eShvZmZzZXQpOwogICAgICAgICBwdXREaXJlY3Qodm0sIG9mZnNldCwgdmFsdWUpOwogCiAg
ICAgICAgIC8vIEZJWE1FOiBDaGVjayBhdHRyaWJ1dGVzIGFnYWluc3QgUHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yT3JWYWx1ZS4gQ2hhbmdpbmcgR2V0dGVyU2V0dGVyIHNob3VsZCB3
b3JrIHcvbyB0cmFuc2l0aW9uLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE0MzQyCi0gICAgICAgIGlmIChtb2RlID09IFB1dE1vZGVEZWZpbmVP
d25Qcm9wZXJ0eSAmJiAoYXR0cmlidXRlcyAhPSBjdXJyZW50QXR0cmlidXRlcyB8fCAoYXR0cmli
dXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvck9yQ3VzdG9tQWNjZXNzb3JPclZhbHVl
KSkpIHsKKyAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eSB8fCBt
b2RlID09IFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eUlnbm9yaW5nRXh0ZW5zaWJpbGl0eSkgJiYg
KGF0dHJpYnV0ZXMgIT0gY3VycmVudEF0dHJpYnV0ZXMgfHwgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0
eUF0dHJpYnV0ZTo6QWNjZXNzb3JPckN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkpKSB7CiAgICAgICAg
ICAgICAvLyBXZSB3YW50IHRoZSBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50IHRvIGZp
cmUgYWZ0ZXIgdGhpcyBvYmplY3QgaGFzIHN3aXRjaGVkIHN0cnVjdHVyZS4KICAgICAgICAgICAg
IC8vIFRoaXMgYWxsb3dzIGFkYXB0aXZlIHdhdGNocG9pbnRzIHRvIG9ic2VydmUgaWYgdGhlIG5l
dyBzdHJ1Y3R1cmUgaXMgdGhlIG9uZSB3ZSB3YW50LgogICAgICAgICAgICAgRGVmZXJyZWRTdHJ1
Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUgZGVmZXJyZWRXYXRjaHBvaW50RmlyZSh2bSwg
c3RydWN0dXJlKTsKQEAgLTQxMCwxMSArNDExLDExIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09i
amVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
CiAgICAgICAgICAgICBzbG90LnNldEV4aXN0aW5nUHJvcGVydHkodGhpcywgb2Zmc2V0KTsKICAg
ICAgICAgfQogCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsOjpudWxsKCk7CiAgICAgfQogCi0gICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmICFp
c1N0cnVjdHVyZUV4dGVuc2libGUodm0pKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KChtb2RlID09IFB1dE1vZGVQdXQgfHwgbW9kZSA9PSBQdXRNb2RlRGVmaW5lT3duUHJvcGVydHkp
ICYmICFpc1N0cnVjdHVyZUV4dGVuc2libGUodm0pKQorICAgICAgICByZXR1cm4gTm9uRXh0ZW5z
aWJsZU9iamVjdFByb3BlcnR5RGVmaW5lRXJyb3I7CiAgICAgCiAgICAgLy8gV2Ugd2FudCB0aGUg
c3RydWN0dXJlIHRyYW5zaXRpb24gd2F0Y2hwb2ludCB0byBmaXJlIGFmdGVyIHRoaXMgb2JqZWN0
IGhhcyBzd2l0Y2hlZCBzdHJ1Y3R1cmUuCiAgICAgLy8gVGhpcyBhbGxvd3MgYWRhcHRpdmUgd2F0
Y2hwb2ludHMgdG8gb2JzZXJ2ZSBpZiB0aGUgbmV3IHN0cnVjdHVyZSBpcyB0aGUgb25lIHdlIHdh
bnQuCkBAIC00MzksNyArNDQwLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3RJbnRlcm5hbChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUKICAgICBzbG90
LnNldE5ld1Byb3BlcnR5KHRoaXMsIG9mZnNldCk7CiAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpCiAgICAgICAgIG5ld1N0cnVjdHVyZS0+c2V0Q29udGFp
bnNSZWFkT25seVByb3BlcnRpZXMoKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gQVND
SUlMaXRlcmFsOjpudWxsKCk7CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0OjptYXlCZVByb3Rv
dHlwZSgpIGNvbnN0CkBAIC01NzMsNyArNTc0LDcgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnZh
bGlkYXRlUHV0T3duRGF0YVByb3BlcnR5KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmEK
IGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgdmFsaWRhdGVQdXRPd25EYXRhUHJvcGVydHkodm0sIHByb3BlcnR5TmFtZSwgdmFs
dWUpOwotICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CisgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1
dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KS5pc051bGwoKTsKIH0K
IAogaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eU1heUJlSW5kZXgoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpAQCAtNTgzLDcgKzU4NCw3IEBAIGlu
bGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHlNYXlCZUluZGV4KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGlu
ZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gcHV0RGlyZWN0
SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgUHV0RGlyZWN0SW5k
ZXhMaWtlUHV0RGlyZWN0KTsKIAotICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2Rl
UHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CisgICAgcmV0dXJuIHB1dERp
cmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90
KS5pc051bGwoKTsKIH0KIAogQUxXQVlTX0lOTElORSBDYWxsRGF0YSBnZXRDYWxsRGF0YShWTSYg
dm0sIEpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlM
aXRlcmFsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCmluZGV4IGI3ODMz
YmRmMTFhM2I2NTMyNTNiNWY2YjJiZDYyYjY4N2ZiYWM2YzUuLjVjMjM3ZjMwOWUxYjgwY2VhYTJh
M2MyYWMyYThjNGRhYTcyZTYzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQVND
SUlMaXRlcmFsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaApAQCAt
NDksNiArNDksOCBAQCBjbGFzcyBBU0NJSUxpdGVyYWwgZmluYWwgewogICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsIHsgbnVsbHB0ciB9OwogICAgIH0KIAorICAgIGNvbnN0ZXhwciBib29sIGlz
TnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2NoYXJhY3RlcnM7IH0KKwogICAgIGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9CiAg
ICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0
PGNvbnN0IExDaGFyKj4obV9jaGFyYWN0ZXJzKTsgfQogICAgIHNpemVfdCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBzdHJsZW4obV9jaGFyYWN0ZXJzKTsgfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9D
aGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBlOTI2ZTQ0ZmE4MTRjMTMxZjYzZjll
MDk4MDcwNTJhMTYwNjU0YWMwLi5mMGMwZDJkYTdiYjRmNmZkYjU5NmRiN2YyM2M0YTliYmMyY2Nj
YWQ2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM2IEBACisyMDIxLTExLTI1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gUHVibGljIENsYXNzIEZpZWxkIGluaXRpYWxpemF0
aW9uIGlzIHNsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMjQ3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1jbGFzc2ljLWNvbnN0cnVjdG9yLWFz
c2lnbm1lbnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKENsYXNzaWNfQ29uc3RydWN0b3JfQXNzaWdu
bWVudHMpOgorICAgICAgICAoYmVuY2gpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9jbGFz
cy1maWVsZHMtcHJpdmF0ZS1maWVsZHMuanM6IEFkZGVkLgorICAgICAgICAoRVMyMDIyX1ByaXZh
dGVfRmllbGRzKToKKyAgICAgICAgKGJlbmNoKToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mv
Y2xhc3MtZmllbGRzLXB1YmxpYy1maWVsZHMuanM6IEFkZGVkLgorICAgICAgICAoRVMyMDIyX1B1
YmxpY19GaWVsZHMpOgorICAgICAgICAoYmVuY2gpOgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1m
aWVsZHMtZ2V0dGVyLW92ZXJyaWRlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToK
KyAgICAgICAgKGRlZmluZUNHZXR0ZXIuKToKKyAgICAgICAgKEIpOgorICAgICAgICAoZGVmaW5l
MEdldHRlci4pOgorICAgICAgICAoZGVmaW5lMEdldHRlcik6CisgICAgICAgIChEKToKKyAgICAg
ICAgKiBzdHJlc3MvY3VzdG9tLWdldC1zZXQtcHJvdG8tY2hhaW4tcHV0LmpzOgorICAgICAgICAo
bGV0Lm9iamVjdC5vZi5nZXRPYmplY3RzKToKKyAgICAgICAgKiBzdHJlc3MvZnJlZXplLWFuZC1z
ZWFsLXNob3VsZC1wcmV2ZW50LWV4dGVuc2lvbnMuanM6CisgICAgICAgICogc3RyZXNzL29iamVj
dC1hc3NpZ24tZmFzdC1wYXRoLmpzOgorICAgICAgICAqIHN0cmVzcy9vcmRpbmFyeS1zZXQtZXhj
ZXB0aW9ucy5qczoKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKiBzdHJlc3MvcHV0
LW5vbi1yZWlmaWVkLXN0YXRpYy1mdW5jdGlvbi1vci1jdXN0b20uanM6CisgICAgICAgICogd2Fz
bS9qcy1hcGkvdGVzdF9iYXNpY19hcGkuanM6CisgICAgICAgIChjb25zdC5jLmluLmNvbnN0cnVj
dG9yUHJvcGVydGllcy5zd2l0Y2gpOgorCiAyMDIxLTExLTE5ICBBc3VtdSBUYWtpa2F3YSAgPGFz
dW11QGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4IFdlYkFzc2VtYmx5IG1lbW9yeS5maWxsIG91
dCBvZiBib3VuZHMgZXJyb3IgbWVzc2FnZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvY2xhc3MtZmllbGRzLWNsYXNzaWMtY29uc3RydWN0b3ItYXNzaWdubWVudHMuanMgYi9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFzcy1maWVsZHMtY2xhc3NpYy1jb25zdHJ1Y3Rvci1h
c3NpZ25tZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTA1ZWQ4MTAxMTlkODYyODU3MjY0NGZkNzljNzZl
MTJiMWZlZGMzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xh
c3MtZmllbGRzLWNsYXNzaWMtY29uc3RydWN0b3ItYXNzaWdubWVudHMuanMKQEAgLTAsMCArMSwy
OCBAQAorY2xhc3MgQ2xhc3NpY19Db25zdHJ1Y3Rvcl9Bc3NpZ25tZW50cyB7CisgICAgY29uc3Ry
dWN0b3IoKSB7CisgICAgICAgIHRoaXMudmVyaWZpY2F0aW9uPTE7CisKKyAgICAgICAgdGhpcy5f
MDA9MTsgdGhpcy5fMDE9MTsgdGhpcy5fMDI9MTsgdGhpcy5fMDM9MTsgdGhpcy5fMDQ9MTsgdGhp
cy5fMDU9MTsgdGhpcy5fMDY9MTsgdGhpcy5fMDc9MTsgdGhpcy5fMDg9MTsgdGhpcy5fMDk9MTsK
KyAgICAgICAgdGhpcy5fMTA9MTsgdGhpcy5fMTE9MTsgdGhpcy5fMTI9MTsgdGhpcy5fMTM9MTsg
dGhpcy5fMTQ9MTsgdGhpcy5fMTU9MTsgdGhpcy5fMTY9MTsgdGhpcy5fMTc9MTsgdGhpcy5fMTg9
MTsgdGhpcy5fMTk9MTsKKyAgICAgICAgdGhpcy5fMjA9MTsgdGhpcy5fMjE9MTsgdGhpcy5fMjI9
MTsgdGhpcy5fMjM9MTsgdGhpcy5fMjQ9MTsgdGhpcy5fMjU9MTsgdGhpcy5fMjY9MTsgdGhpcy5f
Mjc9MTsgdGhpcy5fMjg9MTsgdGhpcy5fMjk9MTsKKyAgICAgICAgdGhpcy5fMzA9MTsgdGhpcy5f
MzE9MTsgdGhpcy5fMzI9MTsgdGhpcy5fMzM9MTsgdGhpcy5fMzQ9MTsgdGhpcy5fMzU9MTsgdGhp
cy5fMzY9MTsgdGhpcy5fMzc9MTsgdGhpcy5fMzg9MTsgdGhpcy5fMzk9MTsKKyAgICAgICAgdGhp
cy5fNDA9MTsgdGhpcy5fNDE9MTsgdGhpcy5fNDI9MTsgdGhpcy5fNDM9MTsgdGhpcy5fNDQ9MTsg
dGhpcy5fNDU9MTsgdGhpcy5fNDY9MTsgdGhpcy5fNDc9MTsgdGhpcy5fNDg9MTsgdGhpcy5fNDk9
MTsKKyAgICAgICAgdGhpcy5fNTA9MTsgdGhpcy5fNTE9MTsgdGhpcy5fNTI9MTsgdGhpcy5fNTM9
MTsgdGhpcy5fNTQ9MTsgdGhpcy5fNTU9MTsgdGhpcy5fNTY9MTsgdGhpcy5fNTc9MTsgdGhpcy5f
NTg9MTsgdGhpcy5fNTk9MTsKKyAgICAgICAgdGhpcy5fNjA9MTsgdGhpcy5fNjE9MTsgdGhpcy5f
NjI9MTsgdGhpcy5fNjM9MTsgdGhpcy5fNjQ9MTsgdGhpcy5fNjU9MTsgdGhpcy5fNjY9MTsgdGhp
cy5fNjc9MTsgdGhpcy5fNjg9MTsgdGhpcy5fNjk9MTsKKyAgICAgICAgdGhpcy5fNzA9MTsgdGhp
cy5fNzE9MTsgdGhpcy5fNzI9MTsgdGhpcy5fNzM9MTsgdGhpcy5fNzQ9MTsgdGhpcy5fNzU9MTsg
dGhpcy5fNzY9MTsgdGhpcy5fNzc9MTsgdGhpcy5fNzg9MTsgdGhpcy5fNzk9MTsKKyAgICAgICAg
dGhpcy5fODA9MTsgdGhpcy5fODE9MTsgdGhpcy5fODI9MTsgdGhpcy5fODM9MTsgdGhpcy5fODQ9
MTsgdGhpcy5fODU9MTsgdGhpcy5fODY9MTsgdGhpcy5fODc9MTsgdGhpcy5fODg9MTsgdGhpcy5f
ODk9MTsKKyAgICAgICAgdGhpcy5fOTA9MTsgdGhpcy5fOTE9MTsgdGhpcy5fOTI9MTsgdGhpcy5f
OTM9MTsgdGhpcy5fOTQ9MTsgdGhpcy5fOTU9MTsgdGhpcy5fOTY9MTsgdGhpcy5fOTc9MTsgdGhp
cy5fOTg9MTsgdGhpcy5fOTk9MTsKKyAgICB9Cit9CisKK2NvbnN0IElURVJBVElPTlMgPSAxMDBf
MDAwOworCitmdW5jdGlvbiBiZW5jaCh0ZXN0Q2xhc3MpIHsKKyAgICB2YXIgYWNjID0gMDsKKyAg
ICBmb3IgKHZhciBpPTA7IGk8SVRFUkFUSU9OUzsgaSsrKSB7CisgICAgICAgIGNvbnN0IGluc3Rh
bmNlID0gbmV3IHRlc3RDbGFzcygpCisgICAgICAgIGFjYyArPSBpbnN0YW5jZS52ZXJpZmljYXRp
b247CisgICAgfQorfQorCitiZW5jaChDbGFzc2ljX0NvbnN0cnVjdG9yX0Fzc2lnbm1lbnRzKTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRl
LWZpZWxkcy5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2NsYXNzLWZpZWxkcy1wcml2YXRl
LWZpZWxkcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTMyNmY2ZDgzNWQxZWY3ZGVhNDI5OThmY2M3Njc1MTY2
MDE5YWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xhc3Mt
ZmllbGRzLXByaXZhdGUtZmllbGRzLmpzCkBAIC0wLDAgKzEsMjkgQEAKK2NsYXNzIEVTMjAyMl9Q
cml2YXRlX0ZpZWxkcyB7CisgICAgdmVyaWZpY2F0aW9uPTE7CisKKyAgICAjXzAwPTE7ICNfMDE9
MTsgI18wMj0xOyAjXzAzPTE7ICNfMDQ9MTsgI18wNT0xOyAjXzA2PTE7ICNfMDc9MTsgI18wOD0x
OyAjXzA5PTE7CisgICAgI18xMD0xOyAjXzExPTE7ICNfMTI9MTsgI18xMz0xOyAjXzE0PTE7ICNf
MTU9MTsgI18xNj0xOyAjXzE3PTE7ICNfMTg9MTsgI18xOT0xOworICAgICNfMjA9MTsgI18yMT0x
OyAjXzIyPTE7ICNfMjM9MTsgI18yND0xOyAjXzI1PTE7ICNfMjY9MTsgI18yNz0xOyAjXzI4PTE7
ICNfMjk9MTsKKyAgICAjXzMwPTE7ICNfMzE9MTsgI18zMj0xOyAjXzMzPTE7ICNfMzQ9MTsgI18z
NT0xOyAjXzM2PTE7ICNfMzc9MTsgI18zOD0xOyAjXzM5PTE7CisgICAgI180MD0xOyAjXzQxPTE7
ICNfNDI9MTsgI180Mz0xOyAjXzQ0PTE7ICNfNDU9MTsgI180Nj0xOyAjXzQ3PTE7ICNfNDg9MTsg
I180OT0xOworICAgICNfNTA9MTsgI181MT0xOyAjXzUyPTE7ICNfNTM9MTsgI181ND0xOyAjXzU1
PTE7ICNfNTY9MTsgI181Nz0xOyAjXzU4PTE7ICNfNTk9MTsKKyAgICAjXzYwPTE7ICNfNjE9MTsg
I182Mj0xOyAjXzYzPTE7ICNfNjQ9MTsgI182NT0xOyAjXzY2PTE7ICNfNjc9MTsgI182OD0xOyAj
XzY5PTE7CisgICAgI183MD0xOyAjXzcxPTE7ICNfNzI9MTsgI183Mz0xOyAjXzc0PTE7ICNfNzU9
MTsgI183Nj0xOyAjXzc3PTE7ICNfNzg9MTsgI183OT0xOworICAgICNfODA9MTsgI184MT0xOyAj
XzgyPTE7ICNfODM9MTsgI184ND0xOyAjXzg1PTE7ICNfODY9MTsgI184Nz0xOyAjXzg4PTE7ICNf
ODk9MTsKKyAgICAjXzkwPTE7ICNfOTE9MTsgI185Mj0xOyAjXzkzPTE7ICNfOTQ9MTsgI185NT0x
OyAjXzk2PTE7ICNfOTc9MTsgI185OD0xOyAjXzk5PTE7Cit9CisKKworLy8gQmVuY2htYXJraW5n
CisKK2NvbnN0IElURVJBVElPTlMgPSAxMDBfMDAwOworCitmdW5jdGlvbiBiZW5jaCh0ZXN0Q2xh
c3MpIHsKKyAgICB2YXIgYWNjID0gMDsKKyAgICBmb3IgKHZhciBpPTA7IGk8SVRFUkFUSU9OUzsg
aSsrKSB7CisgICAgICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IHRlc3RDbGFzcygpCisgICAgICAg
IGFjYyArPSBpbnN0YW5jZS52ZXJpZmljYXRpb247CisgICAgfQorfQorCitiZW5jaChFUzIwMjJf
UHJpdmF0ZV9GaWVsZHMpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2xh
c3MtZmllbGRzLXB1YmxpYy1maWVsZHMuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jbGFz
cy1maWVsZHMtcHVibGljLWZpZWxkcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTk0ZDU1OGI3ZDM5ZTkwNTE3
MWM4MTBhMjdmMDllYjFiY2FjMTUyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvY2xhc3MtZmllbGRzLXB1YmxpYy1maWVsZHMuanMKQEAgLTAsMCArMSwyNiBAQAor
Y2xhc3MgRVMyMDIyX1B1YmxpY19GaWVsZHMgeworICAgIHZlcmlmaWNhdGlvbj0xOworCisgICAg
XzAwPTE7IF8wMT0xOyBfMDI9MTsgXzAzPTE7IF8wND0xOyBfMDU9MTsgXzA2PTE7IF8wNz0xOyBf
MDg9MTsgXzA5PTE7CisgICAgXzEwPTE7IF8xMT0xOyBfMTI9MTsgXzEzPTE7IF8xND0xOyBfMTU9
MTsgXzE2PTE7IF8xNz0xOyBfMTg9MTsgXzE5PTE7CisgICAgXzIwPTE7IF8yMT0xOyBfMjI9MTsg
XzIzPTE7IF8yND0xOyBfMjU9MTsgXzI2PTE7IF8yNz0xOyBfMjg9MTsgXzI5PTE7CisgICAgXzMw
PTE7IF8zMT0xOyBfMzI9MTsgXzMzPTE7IF8zND0xOyBfMzU9MTsgXzM2PTE7IF8zNz0xOyBfMzg9
MTsgXzM5PTE7CisgICAgXzQwPTE7IF80MT0xOyBfNDI9MTsgXzQzPTE7IF80ND0xOyBfNDU9MTsg
XzQ2PTE7IF80Nz0xOyBfNDg9MTsgXzQ5PTE7CisgICAgXzUwPTE7IF81MT0xOyBfNTI9MTsgXzUz
PTE7IF81ND0xOyBfNTU9MTsgXzU2PTE7IF81Nz0xOyBfNTg9MTsgXzU5PTE7CisgICAgXzYwPTE7
IF82MT0xOyBfNjI9MTsgXzYzPTE7IF82ND0xOyBfNjU9MTsgXzY2PTE7IF82Nz0xOyBfNjg9MTsg
XzY5PTE7CisgICAgXzcwPTE7IF83MT0xOyBfNzI9MTsgXzczPTE7IF83ND0xOyBfNzU9MTsgXzc2
PTE7IF83Nz0xOyBfNzg9MTsgXzc5PTE7CisgICAgXzgwPTE7IF84MT0xOyBfODI9MTsgXzgzPTE7
IF84ND0xOyBfODU9MTsgXzg2PTE7IF84Nz0xOyBfODg9MTsgXzg5PTE7CisgICAgXzkwPTE7IF85
MT0xOyBfOTI9MTsgXzkzPTE7IF85ND0xOyBfOTU9MTsgXzk2PTE7IF85Nz0xOyBfOTg9MTsgXzk5
PTE7Cit9CisKK2NvbnN0IElURVJBVElPTlMgPSAxMDBfMDAwOworCitmdW5jdGlvbiBiZW5jaCh0
ZXN0Q2xhc3MpIHsKKyAgICB2YXIgYWNjID0gMDsKKyAgICBmb3IgKHZhciBpPTA7IGk8SVRFUkFU
SU9OUzsgaSsrKSB7CisgICAgICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IHRlc3RDbGFzcygpCisg
ICAgICAgIGFjYyArPSBpbnN0YW5jZS52ZXJpZmljYXRpb247CisgICAgfQorfQorCitiZW5jaChF
UzIwMjJfUHVibGljX0ZpZWxkcyk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1m
aWVsZHMtZ2V0dGVyLW92ZXJyaWRlLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLWdl
dHRlci1vdmVycmlkZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTIxNDMyMDRhNjkyYTU4M2QwNDEyZWFhNGMw
MWIxNTM3ZWU0OWYwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmll
bGRzLWdldHRlci1vdmVycmlkZS5qcwpAQCAtMCwwICsxLDUwIEBACitmdW5jdGlvbiBzaG91bGRU
aHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsK
KyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3Ig
PSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdl
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWAp
OworfQorCitmdW5jdGlvbiBkZWZpbmVDR2V0dGVyKG9iaikgeworICAgIFJlZmxlY3QuZGVmaW5l
UHJvcGVydHkob2JqLCAiYyIsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuICdk
ZWZpbmVDR2V0dGVyJzsgfQorICAgIH0pOworfQorCitjbGFzcyBBIHsKKyAgICBiID0gZGVmaW5l
Q0dldHRlcih0aGlzKTsKKyAgICBjID0gNDI7Cit9Oworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEEo
KSwgYFR5cGVFcnJvcjogQXR0ZW1wdGluZyB0byBjaGFuZ2UgY29uZmlndXJhYmxlIGF0dHJpYnV0
ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS5gKTsKKworbGV0IGtleSA9ICdjJzsKK2NsYXNz
IEIgeworICAgIGIgPSBkZWZpbmVDR2V0dGVyKHRoaXMpOworICAgIFtrZXldID0gNDI7Cit9Owor
c2hvdWxkVGhyb3coKCkgPT4gbmV3IEIoKSwgYFR5cGVFcnJvcjogQXR0ZW1wdGluZyB0byBjaGFu
Z2UgY29uZmlndXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS5gKTsK
KworZnVuY3Rpb24gZGVmaW5lMEdldHRlcihvYmopIHsKKyAgICBSZWZsZWN0LmRlZmluZVByb3Bl
cnR5KG9iaiwgIjAiLCB7CisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiAnZGVmaW5l
Q0dldHRlcic7IH0KKyAgICB9KTsKK30KK2NsYXNzIEMgeworICAgIGIgPSBkZWZpbmUwR2V0dGVy
KHRoaXMpOworICAgIFswXSA9IDQyOworfTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBDKCksIGBU
eXBlRXJyb3I6IEF0dGVtcHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2Yg
dW5jb25maWd1cmFibGUgcHJvcGVydHkuYCk7CisKK2NsYXNzIEQgeworICAgIGIgPSBPYmplY3Qu
ZnJlZXplKHRoaXMpOworICAgIFswXSA9IDQyOworfTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBE
KCksIGBUeXBlRXJyb3I6IEF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0
aGF0IGlzIG5vdCBleHRlbnNpYmxlLmApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY3Vz
dG9tLWdldC1zZXQtcHJvdG8tY2hhaW4tcHV0LmpzIGIvSlNUZXN0cy9zdHJlc3MvY3VzdG9tLWdl
dC1zZXQtcHJvdG8tY2hhaW4tcHV0LmpzCmluZGV4IDM4ZWZhYTI3OWE5MDI3ODExMzFiN2RmMjcw
OGZhODM0ZDhiNDdmOTUuLmIwZDk3MDQ5YzZkYjA2YzhkMzkwNDI4NWNhYTViMzBlYzUwMGM3N2Ug
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2N1c3RvbS1nZXQtc2V0LXByb3RvLWNoYWluLXB1
dC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9jdXN0b20tZ2V0LXNldC1wcm90by1jaGFpbi1wdXQu
anMKQEAgLTEyMSw3ICsxMjEsNyBAQCBmdW5jdGlvbiBnZXRCYXNlcygpIHsKICAgICBmb3IgKGxl
dCBvYmplY3Qgb2YgZ2V0T2JqZWN0cygpKSB7CiAgICAgICAgIE9iamVjdC5wcmV2ZW50RXh0ZW5z
aW9ucyhvYmplY3QpOwogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7Ci0g
ICAgICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG9iamVjdC5jdXN0b21WYWx1ZU5vU2V0dGVy
ID0ge307IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJv
cGVydHkuIik7CisgICAgICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7IG9iamVjdC5jdXN0b21W
YWx1ZU5vU2V0dGVyID0ge307IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRpbmcgdG8gZGVmaW5lIHBy
b3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpOwogICAgICAgICAgICAg
YXNzZXJ0KCFSZWZsZWN0LnNldChvYmplY3QsICJjdXN0b21WYWx1ZU5vU2V0dGVyIiwge30pKTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ZyZWV6ZS1hbmQt
c2VhbC1zaG91bGQtcHJldmVudC1leHRlbnNpb25zLmpzIGIvSlNUZXN0cy9zdHJlc3MvZnJlZXpl
LWFuZC1zZWFsLXNob3VsZC1wcmV2ZW50LWV4dGVuc2lvbnMuanMKaW5kZXggNmZjNmM2ZGQ0MTcz
ZDI4Mjc3ZTNiOTM2OTg1YzhmYjU2ZWFmNDg5Yi4uYjNiNzA1MjFhMTEzNTE3NjY0MzU5M2FmMTQ4
MTVhODRkOThlMTg5YiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZnJlZXplLWFuZC1zZWFs
LXNob3VsZC1wcmV2ZW50LWV4dGVuc2lvbnMuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZnJlZXpl
LWFuZC1zZWFsLXNob3VsZC1wcmV2ZW50LWV4dGVuc2lvbnMuanMKQEAgLTMxLDcgKzMxLDcgQEAg
ZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CiAgICAgT2JqZWN0LmZy
ZWV6ZShvYmplY3QpOwogICAgIHNob3VsZEJlKG9iamVjdC5NYXRjaGEsICdNYXRjaGEnKTsKICAg
ICBzaG91bGRCZShSZWZsZWN0LmlzRXh0ZW5zaWJsZShvYmplY3QpLCBmYWxzZSk7Ci0gICAgc2hv
dWxkVGhyb3coKCkgPT4gb2JqZWN0Lk1vY2hhID0gJ01vY2hhJywgYFR5cGVFcnJvcjogQXR0ZW1w
dGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS5gKTsKKyAgICBzaG91bGRUaHJvdygo
KSA9PiBvYmplY3QuTW9jaGEgPSAnTW9jaGEnLCBgVHlwZUVycm9yOiBBdHRlbXB0aW5nIHRvIGRl
ZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS5gKTsKIH0oKSk7
CiAKIChmdW5jdGlvbiAoKSB7CkBAIC00Nyw1ICs0Nyw1IEBAIGZ1bmN0aW9uIHNob3VsZFRocm93
KGZ1bmMsIGVycm9yTWVzc2FnZSkgewogICAgIE9iamVjdC5zZWFsKG9iamVjdCk7CiAgICAgc2hv
dWxkQmUob2JqZWN0Lk1hdGNoYSwgJ01hdGNoYScpOwogICAgIHNob3VsZEJlKFJlZmxlY3QuaXNF
eHRlbnNpYmxlKG9iamVjdCksIGZhbHNlKTsKLSAgICBzaG91bGRUaHJvdygoKSA9PiBvYmplY3Qu
TW9jaGEgPSAnTW9jaGEnLCBgVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRv
bmx5IHByb3BlcnR5LmApOworICAgIHNob3VsZFRocm93KCgpID0+IG9iamVjdC5Nb2NoYSA9ICdN
b2NoYScsIGBUeXBlRXJyb3I6IEF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVj
dCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLmApOwogfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL29iamVjdC1hc3NpZ24tZmFzdC1wYXRoLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0
LWFzc2lnbi1mYXN0LXBhdGguanMKaW5kZXggOWIzMzUxNmNiZGFmMTUwYWY0NmVmNzE2Y2UyMjBi
MDBkYmViYzI3MS4uMWMwMTdhNzdkNWY2M2JiZTdjYjc2MmM5NDk1NTFjNWU3ZWMyODY4YyAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWFzc2lnbi1mYXN0LXBhdGguanMKKysrIGIv
SlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWFzc2lnbi1mYXN0LXBhdGguanMKQEAgLTE4MCw2ICsxODAs
NiBAQCBnZXQgaGVsbG8oKSB7CiAgICAgbGV0IG9iamVjdCA9IE9iamVjdC5wcmV2ZW50RXh0ZW5z
aW9ucyh7IGZvbzogMSB9KTsKICAgICBzaG91bGRUaHJvdygoKSA9PiB7CiAgICAgICAgIE9iamVj
dC5hc3NpZ24ob2JqZWN0LCB7IGJhcjogMiB9KTsKLSAgICB9LCBgVHlwZUVycm9yOiBBdHRlbXB0
ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LmApOworICAgIH0sIGBUeXBlRXJyb3I6
IEF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRl
bnNpYmxlLmApOwogICAgIHNob3VsZEJlKG9iamVjdC5iYXIsIHVuZGVmaW5lZCk7CiB9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vcmRpbmFyeS1zZXQtZXhjZXB0aW9ucy5qcyBiL0pTVGVz
dHMvc3RyZXNzL29yZGluYXJ5LXNldC1leGNlcHRpb25zLmpzCmluZGV4IDEyMjFiODY0ZDBhYjdj
YWRhYjEzMmE0MWU2MmRhNWQ5MDcxMGRiM2YuLmY1MGFmZTVkZmI1YjMzN2M2YjM2YmQ5N2ZlYjBl
YmFkY2Y4NDcxMTQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL29yZGluYXJ5LXNldC1leGNl
cHRpb25zLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL29yZGluYXJ5LXNldC1leGNlcHRpb25zLmpz
CkBAIC02Myw3ICs2Myw3IEBAIGdldCBzZXQoKQogICAgICAgICB2YWx1ZTogNDIsCiAgICAgfSks
IHRydWUpOwogICAgIHJlY2VpdmVyLmNvY29hID0gJ05HJzsKLX0sIGBUeXBlRXJyb3I6IEF0dGVt
cHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuYCk7Cit9LCBgVHlwZUVycm9yOiBB
dHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LmApOwogCiAv
LyA5LjEuOS4xIDQtZC1paQogc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgewpAQCAtODUsNyArODUs
NyBAQCBnZXQgc2V0KCkKICAgICAgICAgdmFsdWU6IDQyLAogICAgIH0pLCB0cnVlKTsKICAgICBy
ZWNlaXZlci5jb2NvYSA9ICdORyc7Ci19LCBgVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWdu
IHRvIHJlYWRvbmx5IHByb3BlcnR5LmApOworfSwgYFR5cGVFcnJvcjogQXR0ZW1wdGluZyB0byBj
aGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS5gKTsKIAogLy8gOS4xLjkuMSA3CiBz
aG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQt
bm9uLXJlaWZpZWQtc3RhdGljLWZ1bmN0aW9uLW9yLWN1c3RvbS5qcyBiL0pTVGVzdHMvc3RyZXNz
L3B1dC1ub24tcmVpZmllZC1zdGF0aWMtZnVuY3Rpb24tb3ItY3VzdG9tLmpzCmluZGV4IDVjMWYz
YWM3NTcyNjQ5NzVkYWMzOTUxZjQ4OTVmOWIyMjRmOTFmZDkuLjAxNzAwYmFjODhjY2ZkYWRlYzBh
ZDliOWFmNzY3ZjQ4YzJmNGQ1Y2YgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3B1dC1ub24t
cmVpZmllZC1zdGF0aWMtZnVuY3Rpb24tb3ItY3VzdG9tLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3B1dC1ub24tcmVpZmllZC1zdGF0aWMtZnVuY3Rpb24tb3ItY3VzdG9tLmpzCkBAIC0xMjUsNyAr
MTI1LDcgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlLCBrZXkpIHsK
ICAgICBjb25zdCBoZWlyID0gT2JqZWN0LmNyZWF0ZShvYmplY3QpOwogICAgIE9iamVjdC5wcmV2
ZW50RXh0ZW5zaW9ucyhoZWlyKTsKIAotICAgIHNob3VsZFRocm93KCgpID0+IHsgaGVpcltrZXld
ID0gdGVzdFZhbHVlOyB9LCAiVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRv
bmx5IHByb3BlcnR5LiIsIGtleSk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geyBoZWlyW2tleV0g
PSB0ZXN0VmFsdWU7IH0sICJUeXBlRXJyb3I6IEF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5
IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIsIGtleSk7CiAgICAgYXNzZXJ0KGhl
aXJba2V5XSAhPT0gdGVzdFZhbHVlLCBrZXkpOwogICAgIGFzc2VydChvYmplY3Rba2V5XSAhPT0g
dGVzdFZhbHVlLCBrZXkpOwogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0
X2Jhc2ljX2FwaS5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9iYXNpY19hcGkuanMKaW5k
ZXggMTBmOGE0N2JhZjE4OTVkNDhjNGZhYTUyNjg3ZDZkOTgzYzM1Zjk2ZC4uMTIzMTkxNWI5NTU0
Y2EyMDQ5YjZkY2I1NWM0MmM1MWJiMDA1YjNjMiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL2pz
LWFwaS90ZXN0X2Jhc2ljX2FwaS5qcworKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfYmFz
aWNfYXBpLmpzCkBAIC04Niw3ICs4Niw3IEBACiAgICAgICAgIGFzc2VydC5lcShTeW1ib2wuaXRl
cmF0b3IgaW4gaW5zdGFuY2UuZXhwb3J0cywgZmFsc2UpOwogICAgICAgICBhc3NlcnQuZXEoU3lt
Ym9sLnRvU3RyaW5nVGFnIGluIGluc3RhbmNlLmV4cG9ydHMsIGZhbHNlKTsKICAgICAgICAgYXNz
ZXJ0LmVxKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaW5zdGFuY2UuZXhwb3J0cykubGVu
Z3RoLCAwKTsKLSAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBpbnN0YW5jZS5leHBvcnRzW1N5
bWJvbC50b1N0cmluZ1RhZ10gPSA0MiwgVHlwZUVycm9yLCBgQXR0ZW1wdGVkIHRvIGFzc2lnbiB0
byByZWFkb25seSBwcm9wZXJ0eS5gKTsKKyAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBpbnN0
YW5jZS5leHBvcnRzW1N5bWJvbC50b1N0cmluZ1RhZ10gPSA0MiwgVHlwZUVycm9yLCBgQXR0ZW1w
dGluZyB0byBkZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUu
YCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgIk1lbW9yeSI6CiAgICAgICAgIG5ldyBXZWJB
c3NlbWJseS5NZW1vcnkoe2luaXRpYWw6IDIwfSk7Cg==
</data>
<flag name="review"
          id="470300"
          type_id="1"
          status="+"
          setter="ashvayka"
    />
          </attachment>
      

    </bug>

</bugzilla>