<?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>94980</bug_id>
          
          <creation_ts>2012-08-24 16:36:59 -0700</creation_ts>
          <short_desc>[CSS Shaders] Implement transform parameter animations for CSS Custom Filters</short_desc>
          <delta_ts>2012-09-12 16:45:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>96437</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandru Chiculita">achicu</reporter>
          <assigned_to name="Alexandru Chiculita">achicu</assigned_to>
          <cc>anilsson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>jnetterfield</cc>
    
    <cc>peter+ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>704510</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-08-24 16:36:59 -0700</bug_when>
    <thetext>Custom filters allow parameters with transform types. This bug will implement the animations support for that type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707807</commentid>
    <comment_count>1</comment_count>
      <attachid>161300</attachid>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-29 13:37:10 -0700</bug_when>
    <thetext>Created attachment 161300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707808</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-29 13:38:36 -0700</bug_when>
    <thetext>N.B. the above patch depends on https://bugs.webkit.org/show_bug.cgi?id=71401. I&apos;m posting this here for review so I can make changes before my last day Friday, if necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707841</commentid>
    <comment_count>3</comment_count>
      <attachid>161310</attachid>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-29 14:08:55 -0700</bug_when>
    <thetext>Created attachment 161310
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707843</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-29 14:09:06 -0700</bug_when>
    <thetext>Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707855</commentid>
    <comment_count>5</comment_count>
      <attachid>161315</attachid>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-29 14:16:12 -0700</bug_when>
    <thetext>Created attachment 161315
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707883</commentid>
    <comment_count>6</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-08-29 14:32:59 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=161300&amp;action=review

Thanks for looking into this. I have a few comments on how we do the blending. I&apos;m not a reviewer, so feel free to ignore my comments.

&gt; Source/WebCore/page/animation/CSSPropertyAnimation.cpp:-54
&gt; -static inline int blendFunc(const AnimationBase*, int from, int to, double progress)

Why do you need all these changes?

&gt; Source/WebCore/platform/graphics/filters/CustomFilterOperation.h:34
&gt; +#include &quot;CSSPropertyAnimation.h&quot;

Don&apos;t add this to the header file. You just need to forward define the AnimationBase.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterTransformParameter.h:34
&gt; +#include &quot;CSSPropertyAnimation.h&quot;

Ditto.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterTransformParameter.h:50
&gt; +    virtual PassRefPtr&lt;CustomFilterParameter&gt; blend(const AnimationBase* anim, const CustomFilterParameter* fromParameter, double progress)

This function will pull in the AnimationBase class, so I think we would better move it to CustomFilterTransformParameter.cpp.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterTransformParameter.h:58
&gt; +        TransformOperations result = CSSPropertyAnimation::blendFunc(anim, from, to, progress);

This function uses isTransformFunctionListValid internally, which is only set for the -webkit-transform property. For CSS Custom Filters, I think we would need to check for matching transforms everytime, as there&apos;s no place where we could store that info right now.

I think it would be better if we moved the blending of the transforms to the TransformOperations class: 
transformOperations.blendByMatchingOperations(const TransformOperations&amp; from, double progress) - this one can assert if the operations are not matching and it&apos;s the caller responsibility to make sure that the operations are matching.
transformOperations.blendByMatrix(const TransformOperations&amp; from, double progress, const LayoutSize&amp;)
and finally
transformOperations.blend(const TransformOperations&amp; from, double progress, const LayoutSize&amp;) - will do the decision inside

&gt; LayoutTests/css3/filters/custom/custom-filter-animation.html:105
&gt; +        @-webkit-keyframes custom-mix-transforms-anim {

You should have tests checking for number of rotations. Ie. rotateZ(0deg) to rotateZ(360deg) should make a full spin. In the current patch it wouldn&apos;t animate at all I suppose.

&gt; LayoutTests/css3/filters/custom/custom-filter-animation.html:107
&gt; +            to   { -webkit-filter: custom(url(../resources/vertex-transform-parameter.vs), transform rotateZ(10deg)); }

Add a test with multiple transforms in the same custom function.

&gt; LayoutTests/css3/filters/resources/custom-filter-parser.js:67
&gt; +function transform(token)

You should be looking for matrix and matrix3d instead, you need to add tests for multiple transform attributes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707898</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-29 14:48:16 -0700</bug_when>
    <thetext>The makes a lot more sense. Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707990</commentid>
    <comment_count>8</comment_count>
      <attachid>161315</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-08-29 16:05:17 -0700</bug_when>
    <thetext>Comment on attachment 161315
Patch

Attachment 161315 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13693444</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708036</commentid>
    <comment_count>9</comment_count>
      <attachid>161315</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-29 16:34:27 -0700</bug_when>
    <thetext>Comment on attachment 161315
Patch

Attachment 161315 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13693475</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708227</commentid>
    <comment_count>10</comment_count>
      <attachid>161315</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-29 19:39:17 -0700</bug_when>
    <thetext>Comment on attachment 161315
Patch

Attachment 161315 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13682478</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709126</commentid>
    <comment_count>11</comment_count>
      <attachid>161577</attachid>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-30 16:16:32 -0700</bug_when>
    <thetext>Created attachment 161577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709157</commentid>
    <comment_count>12</comment_count>
      <attachid>161577</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-08-30 16:46:02 -0700</bug_when>
    <thetext>Comment on attachment 161577
Patch

Attachment 161577 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13687882</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709169</commentid>
    <comment_count>13</comment_count>
      <attachid>161577</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-30 16:52:30 -0700</bug_when>
    <thetext>Comment on attachment 161577
Patch

Attachment 161577 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13688953</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709170</commentid>
    <comment_count>14</comment_count>
      <attachid>161590</attachid>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-30 16:52:39 -0700</bug_when>
    <thetext>Created attachment 161590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709187</commentid>
    <comment_count>15</comment_count>
      <attachid>161594</attachid>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-30 17:23:32 -0700</bug_when>
    <thetext>Created attachment 161594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709203</commentid>
    <comment_count>16</comment_count>
      <attachid>161594</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-30 17:54:29 -0700</bug_when>
    <thetext>Comment on attachment 161594
Patch

Attachment 161594 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13693950</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709210</commentid>
    <comment_count>17</comment_count>
      <attachid>161594</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-30 18:12:17 -0700</bug_when>
    <thetext>Comment on attachment 161594
Patch

Attachment 161594 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13688981</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709213</commentid>
    <comment_count>18</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-08-30 18:14:29 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=161594&amp;action=review

Thanks! Looks better. Still some comments on the tests.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterTransformParameter.h:64
&gt; +        if (!from.size() || !to.size()) {

I think there&apos;s no way we could have empty transform operations here. The parser takes care of that, so maybe an assert would be good enough.

&gt; LayoutTests/css3/filters/custom/custom-filter-animation.html:151
&gt; +            from { -webkit-filter: custom(url(../resources/vertex-transform-parameter.vs), transform rotateX(0deg) scale3d(1, 1, 1)); }

I wish we had a test with two different transform attributes like:
-webkit-filter: custom(url(../resources/vertex-transform-parameter.vs), transform1 rotateX(0deg), transform2 rotateY(90deg));

&gt; LayoutTests/css3/filters/resources/custom-filter-parser.js:157
&gt; +            if (m.ahead().isA(&quot;(&quot;) &amp;&amp; token.value != &quot;matrix&quot; &amp;&amp; token.value != &quot;matrix3d&quot;)

Why isn&apos;t parseFunction good enough to parse the matrix?

&gt; LayoutTests/css3/filters/resources/custom-filter-parser.js:178
&gt; +        } else if (token.isA(transform)) {

Why do you need this? You should not be needed to parse the parameter names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709225</commentid>
    <comment_count>19</comment_count>
      <attachid>161594</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-30 18:38:07 -0700</bug_when>
    <thetext>Comment on attachment 161594
Patch

Attachment 161594 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13682963</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709243</commentid>
    <comment_count>20</comment_count>
      <attachid>161594</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-30 19:02:09 -0700</bug_when>
    <thetext>Comment on attachment 161594
Patch

Attachment 161594 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13693969</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709263</commentid>
    <comment_count>21</comment_count>
      <attachid>161594</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-08-30 19:34:19 -0700</bug_when>
    <thetext>Comment on attachment 161594
Patch

Attachment 161594 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13681933</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709984</commentid>
    <comment_count>22</comment_count>
      <attachid>161594</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-31 14:25:04 -0700</bug_when>
    <thetext>Comment on attachment 161594
Patch

Attachment 161594 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13720323</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717704</commentid>
    <comment_count>23</comment_count>
      <attachid>163474</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-09-11 16:30:50 -0700</bug_when>
    <thetext>Created attachment 163474
Patch V1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717710</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-11 16:33:52 -0700</bug_when>
    <thetext>Attachment 163474 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/anim...&quot; exit_code: 1
Source/WebCore/platform/graphics/transforms/TransformOperations.cpp:29:  Use &apos;using namespace std;&apos; instead of &apos;using std::max;&apos;.  [build/using_std] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717715</commentid>
    <comment_count>25</comment_count>
      <attachid>163478</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-09-11 16:36:23 -0700</bug_when>
    <thetext>Created attachment 163478
Patch V2

Fixed style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717752</commentid>
    <comment_count>26</comment_count>
      <attachid>163478</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-09-11 17:18:42 -0700</bug_when>
    <thetext>Comment on attachment 163478
Patch V2

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

&gt; LayoutTests/css3/filters/custom/custom-filter-transforms-animation.html:45
&gt; +        @-webkit-keyframes custom-mix-multi-transform-anim {
&gt; +            from { -webkit-filter: custom(url(no-shader-needed.vs), transform1 scale(0), transform2 scale(100) rotate(0deg)); }
&gt; +            to   { -webkit-filter: custom(url(no-shader-needed.vs), transform1 scale(30), transform2 rotate(0deg) scale(100)); }
&gt; +        }

Could you add two by two more tests (a) where from and to have different numbers of operations (and reverse) and (b) where one of from and to are empty/not-present?

&gt; Source/WebCore/page/animation/CSSPropertyAnimation.cpp:151
&gt; -            RefPtr&lt;FilterOperation&gt; blendedOp = toOp ? toOp-&gt;blend(fromOp.get(), progress) : (fromOp ? fromOp-&gt;blend(0, progress, true) : PassRefPtr&lt;FilterOperation&gt;(0));
&gt; +            RefPtr&lt;FilterOperation&gt; blendedOp = toOp ? blendFunc(anim, fromOp.get(), toOp.get(), progress) : (fromOp ? blendFunc(anim, 0, fromOp.get(), progress, true) : PassRefPtr&lt;FilterOperation&gt;(0));

It seems we can replace the PassRefPtr&lt;FilterOperation&gt;(0) with just 0 here now (i&apos;m not sure what the history here is, although it was also in the code removed above - PassRefPtr&lt;TransformOperation&gt;(0)).

&gt; Source/WebCore/platform/graphics/filters/CustomFilterTransformParameter.h:61
&gt; +        RefPtr&lt;CustomFilterTransformParameter&gt; ret = CustomFilterTransformParameter::create(name());

Nit: need a better name than &quot;ret&quot;

&gt; Source/WebCore/platform/graphics/transforms/TransformOperations.cpp:78
&gt; +        RefPtr&lt;TransformOperation&gt; fromOp = (i &lt; fromSize) ? from.operations()[i].get() : 0;
&gt; +        RefPtr&lt;TransformOperation&gt; toOp = (i &lt; toSize) ? operations()[i].get() : 0;
&gt; +        RefPtr&lt;TransformOperation&gt; blendedOp = toOp ? toOp-&gt;blend(fromOp.get(), progress) : (fromOp ? fromOp-&gt;blend(0, progress, true) : PassRefPtr&lt;TransformOperation&gt;(0));

Nit: I prefer long variable names fromOp -&gt; fromOperation (there are a few places in other files in the patch that have this too)

&gt; Source/WebCore/platform/graphics/transforms/TransformOperations.cpp:83
&gt; +            if (progress &gt; 0.5)

At some point I&apos;d like to work out if this is the right thing to do (it&apos;s copied from the CSS animation blends of filters and transforms), and maybe add a comment explaining it :) I can&apos;t remember where it comes from.

&gt; Source/WebCore/platform/graphics/transforms/TransformOperations.cpp:93
&gt; +TransformOperations TransformOperations::blendUsingMatricesInterpolation(const TransformOperations&amp; from, double progress, const LayoutSize&amp; size) const

This should be blendByUsingMatrixInterpolation

&gt; Source/WebCore/platform/graphics/transforms/TransformOperations.cpp:99
&gt; +    TransformationMatrix fromT;
&gt; +    TransformationMatrix toT;

Nit: I prefer long variable names like fromT -&gt; fromTransform

&gt; Source/WebCore/platform/graphics/transforms/TransformOperations.h:77
&gt; +    TransformOperations blendByMatchingOperations(const TransformOperations&amp;, const double&amp; progress) const;
&gt; +    TransformOperations blendUsingMatricesInterpolation(const TransformOperations&amp; from, double progress, const LayoutSize&amp;) const;
&gt; +    TransformOperations blend(const TransformOperations&amp; from, double progress, const LayoutSize&amp;) const;

Nit: you&apos;re defining &quot;from&quot; on 2 out of 3 of these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717759</commentid>
    <comment_count>27</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-09-11 17:33:20 -0700</bug_when>
    <thetext>Thanks Dean! I will take a look tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718878</commentid>
    <comment_count>28</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-09-12 16:45:50 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/128380 .</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161300</attachid>
            <date>2012-08-29 13:37:10 -0700</date>
            <delta_ts>2012-08-29 14:08:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94980-20120829163510.patch</filename>
            <type>text/plain</type>
            <size>43409</size>
            <attacher name="Joshua Netterfield">jnetterfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDMwOWE5ODk2Y2E4OGZm
ZmY0ZmMyZmRhZDBjYTU4MTM1NGQ0NjAyOS4uYTk4YjNjNjk2MmJlNGExNWRhMmYxYmFlNDlmNmYw
NTBlMDkwYTQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTA4LTI5ICBKb3No
dWEgTmV0dGVyZmllbGQgIDxqbmV0dGVyZmllbGRAcmltLmNvbT4KKworICAgICAgICBbQ1NTIFNo
YWRlcnNdIEltcGxlbWVudCB0cmFuc2Zvcm0gcGFyYW1ldGVyIGFuaW1hdGlvbnMgZm9yIENTUyBD
dXN0b20gRmlsdGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTQ5ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBY2NvcmRpbmcgdG8gU2VjdGlvbiAzOS4yIG9mIEZpbHRlciBFZmZlY3RzIDEuMCBFZGl0
b3IncyBkcmFmdAorICAgICAgICAoaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9GWFRGL3Jhdy1maWxl
L3RpcC9maWx0ZXJzL2luZGV4Lmh0bWwpLCBhbmltYXRpb25zCisgICAgICAgIG9mIHRyYW5zZm9y
bXMgc2hvdWxkIGJlIGhhbmRsZWQgZm9sbG93aW5nIHRoZSBDU1MzIHRyYW5zZm9ybSBpbnRlcnBv
bGF0aW9uCisgICAgICAgIHJ1bGVzLiBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhpcyBmdW5jdGlv
bmFsaXR5LgorCisgICAgICAgIE1pbm9yIGNoYW5nZXMgdG8gQ1NTUHJvcGVydHlBbmltYXRpb24s
IEN1c3RvbUZpbHRlclBhcmFtZXRlciBhbmQKKyAgICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
IGFyZSBuZWNlc3NhcnkgdG8gYWNjb21wbGlzaCB0aGlzIGNsZWFubHkuCisKKyAgICAgICAgVGVz
dHM6IEFkZGVkIGEgdHJhbnNmb3JtIHRlc3QgdG8gZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRl
ci1hbmltYXRpb24uaHRtbAorCisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlB
bmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlBbmltYXRpb246OmJs
ZW5kRnVuYyk6IE1hZGUgY2xhc3Mtc3RhdGljIGluc3RlYWQgb2YgZmlsZS1zdGF0aWMKKyAgICAg
ICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlcjo6YmxlbmQpOiBDYWxsIENTU1Byb3BlcnR5QW5p
bWF0aW9uOjpibGVuZEZ1bmMgaW5zdGVhZCBvZiBibGVuZEZ1bmMKKyAgICAgICAgKFdlYkNvcmU6
OlJlZkNvdW50ZWRQcm9wZXJ0eVdyYXBwZXI6OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBy
b3BlcnR5V3JhcHBlckNvbG9yOjpibGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdy
YXBwZXJBY2NlbGVyYXRlZE9wYWNpdHk6OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3Bl
cnR5V3JhcHBlckFjY2VsZXJhdGVkVHJhbnNmb3JtOjpibGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpQcm9wZXJ0eVdyYXBwZXJBY2NlbGVyYXRlZEZpbHRlcjo6YmxlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UHJvcGVydHlXcmFwcGVyU2hhZG93OjpibGVuZFNpbXBsZU9yTWF0Y2hlZFNoYWRvd0xp
c3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNoYWRvdzo6YmxlbmRNaXNt
YXRjaGVkU2hhZG93TGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyTWF5
YmVJbnZhbGlkQ29sb3I6OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllclByb3Bl
cnR5V3JhcHBlcjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyUmVmQ291bnRl
ZFByb3BlcnR5V3JhcHBlcjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFw
cGVyRmxleDo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyU1ZHUGFp
bnQ6OmJsZW5kKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5oOiBNYWRlIGJsZW5kRnVuYyBjbGFzcy1zdGF0aWMgaW5zdGVhZCBvZiBmaWxlLXN0YXRpYwor
ICAgICAgICAoQ1NTUHJvcGVydHlBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI6OmJsZW5kKTogTm93IGV4cGVjdHMgYW4g
QW5pbWF0aW9uQmFzZSBwYXJhbWV0ZXIKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEN1
c3RvbUZpbHRlclBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlclBhcmFtZXRlci5oOgorICAgICAgICAoQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclRyYW5zZm9y
bVBhcmFtZXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFy
YW1ldGVyOjpibGVuZCk6IEltcGxlbWVudCBibGVuZGluZyBmb3IgdHJhbnNmb3JtcworICAgICAg
ICAoQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOiBOb3cgZXhwZWN0
cyBhbiBBbmltYXRpb25CYXNlIHBhcmFtZXRlcgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb21w
b25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
R2FtbWFGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkJsdXJGaWx0
ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRyb3BTaGFkb3dGaWx0ZXJP
cGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJPcGVyYXRpb246OkZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAoQmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKEdhbW1hRmlsdGVyT3BlcmF0aW9uKToKKyAg
ICAgICAgKEJsdXJGaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAoRHJvcFNoYWRvd0ZpbHRlck9w
ZXJhdGlvbik6CisKIDIwMTItMDgtMjkgIEFubmEgQ2F2ZW5kZXIgIDxhbm5hY2NAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIENyZWF0ZSBhIHRvZ2dsZSBidXR0b24gZm9yIGNsb3NlZCBjYXB0aW9u
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5
QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5
QW5pbWF0aW9uLmNwcAppbmRleCBmMmE4MWNiMGM1YzFmNzRjODJjMjM2ZDQxOTQ3ODRmZWM0ZmU3
NGEzLi5jZGY3OTk1M2FjNWE1YTQwYmMwNDI1YzllZDA4M2ZjYWMyZWIyZDYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24u
Y3BwCkBAIC01MSw0OSArNTEsNDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
aW5saW5lIGludCBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGludCBmcm9tLCBpbnQg
dG8sIGRvdWJsZSBwcm9ncmVzcykKK2ludCBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRGdW5j
KGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBpbnQgZnJvbSwgaW50IHRvLCBkb3VibGUgcHJvZ3Jlc3Mp
CiB7CiAgICAgcmV0dXJuIGJsZW5kKGZyb20sIHRvLCBwcm9ncmVzcyk7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgdW5zaWduZWQgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCB0bywgZG91YmxlIHByb2dyZXNzKQordW5zaWduZWQgQ1NTUHJvcGVydHlB
bmltYXRpb246OmJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICByZXR1cm4gYmxlbmQoZnJvbSwg
dG8sIHByb2dyZXNzKTsKIH0KIAotc3RhdGljIGlubGluZSBkb3VibGUgYmxlbmRGdW5jKGNvbnN0
IEFuaW1hdGlvbkJhc2UqLCBkb3VibGUgZnJvbSwgZG91YmxlIHRvLCBkb3VibGUgcHJvZ3Jlc3Mp
Citkb3VibGUgQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25C
YXNlKiwgZG91YmxlIGZyb20sIGRvdWJsZSB0bywgZG91YmxlIHByb2dyZXNzKQogewogICAgIHJl
dHVybiBibGVuZChmcm9tLCB0bywgcHJvZ3Jlc3MpOwogfQogCi1zdGF0aWMgaW5saW5lIGZsb2F0
IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgZmxvYXQgZnJvbSwgZmxvYXQgdG8sIGRv
dWJsZSBwcm9ncmVzcykKK2Zsb2F0IENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoY29u
c3QgQW5pbWF0aW9uQmFzZSosIGZsb2F0IGZyb20sIGZsb2F0IHRvLCBkb3VibGUgcHJvZ3Jlc3Mp
CiB7CiAgICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoZnJvbSArICh0byAtIGZyb20p
ICogcHJvZ3Jlc3MpOwogfQogCi1zdGF0aWMgaW5saW5lIENvbG9yIGJsZW5kRnVuYyhjb25zdCBB
bmltYXRpb25CYXNlKiwgY29uc3QgQ29sb3ImIGZyb20sIGNvbnN0IENvbG9yJiB0bywgZG91Ymxl
IHByb2dyZXNzKQorQ29sb3IgQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kRnVuYyhjb25zdCBB
bmltYXRpb25CYXNlKiwgY29uc3QgQ29sb3ImIGZyb20sIGNvbnN0IENvbG9yJiB0bywgZG91Ymxl
IHByb2dyZXNzKQogewogICAgIHJldHVybiBibGVuZChmcm9tLCB0bywgcHJvZ3Jlc3MpOwogfQog
Ci1zdGF0aWMgaW5saW5lIExlbmd0aCBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNv
bnN0IExlbmd0aCYgZnJvbSwgY29uc3QgTGVuZ3RoJiB0bywgZG91YmxlIHByb2dyZXNzKQorTGVu
Z3RoIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSos
IGNvbnN0IExlbmd0aCYgZnJvbSwgY29uc3QgTGVuZ3RoJiB0bywgZG91YmxlIHByb2dyZXNzKQog
ewogICAgIHJldHVybiB0by5ibGVuZChmcm9tLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHByb2dy
ZXNzKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgTGVuZ3RoU2l6ZSBibGVuZEZ1bmMoY29uc3QgQW5p
bWF0aW9uQmFzZSogYW5pbSwgY29uc3QgTGVuZ3RoU2l6ZSYgZnJvbSwgY29uc3QgTGVuZ3RoU2l6
ZSYgdG8sIGRvdWJsZSBwcm9ncmVzcykKK0xlbmd0aFNpemUgQ1NTUHJvcGVydHlBbmltYXRpb246
OmJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBMZW5ndGhTaXplJiBm
cm9tLCBjb25zdCBMZW5ndGhTaXplJiB0bywgZG91YmxlIHByb2dyZXNzKQogewogICAgIHJldHVy
biBMZW5ndGhTaXplKGJsZW5kRnVuYyhhbmltLCBmcm9tLndpZHRoKCksIHRvLndpZHRoKCksIHBy
b2dyZXNzKSwKICAgICAgICAgICAgICAgICAgICAgICBibGVuZEZ1bmMoYW5pbSwgZnJvbS5oZWln
aHQoKSwgdG8uaGVpZ2h0KCksIHByb2dyZXNzKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSW50U2l6
ZSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgY29uc3QgSW50U2l6ZSYgZnJv
bSwgY29uc3QgSW50U2l6ZSYgdG8sIGRvdWJsZSBwcm9ncmVzcykKK0ludFNpemUgQ1NTUHJvcGVy
dHlBbmltYXRpb246OmJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBJ
bnRTaXplJiBmcm9tLCBjb25zdCBJbnRTaXplJiB0bywgZG91YmxlIHByb2dyZXNzKQogewogICAg
IHJldHVybiBJbnRTaXplKGJsZW5kRnVuYyhhbmltLCBmcm9tLndpZHRoKCksIHRvLndpZHRoKCks
IHByb2dyZXNzKSwKICAgICAgICAgICAgICAgICAgICBibGVuZEZ1bmMoYW5pbSwgZnJvbS5oZWln
aHQoKSwgdG8uaGVpZ2h0KCksIHByb2dyZXNzKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgU2hhZG93
U3R5bGUgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIFNoYWRvd1N0eWxlIGZy
b20sIFNoYWRvd1N0eWxlIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCitTaGFkb3dTdHlsZSBDU1NQcm9w
ZXJ0eUFuaW1hdGlvbjo6YmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIFNoYWRv
d1N0eWxlIGZyb20sIFNoYWRvd1N0eWxlIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAgICAgaWYg
KGZyb20gPT0gdG8pCiAgICAgICAgIHJldHVybiB0bzsKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0
aWMgaW5saW5lIFNoYWRvd1N0eWxlIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmlt
LCBTaGFkb3dTdHlsZSBmcm9tLAogICAgIHJldHVybiByZXN1bHQgPiAwID8gTm9ybWFsIDogSW5z
ZXQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUGFzc093blB0cjxTaGFkb3dEYXRhPiBibGVuZEZ1bmMo
Y29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgY29uc3QgU2hhZG93RGF0YSogZnJvbSwgY29uc3Qg
U2hhZG93RGF0YSogdG8sIGRvdWJsZSBwcm9ncmVzcykKK1Bhc3NPd25QdHI8U2hhZG93RGF0YT4g
Q1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmlt
LCBjb25zdCBTaGFkb3dEYXRhKiBmcm9tLCBjb25zdCBTaGFkb3dEYXRhKiB0bywgZG91YmxlIHBy
b2dyZXNzKQogewogICAgIEFTU0VSVChmcm9tICYmIHRvKTsKICAgICBpZiAoZnJvbS0+c3R5bGUo
KSAhPSB0by0+c3R5bGUoKSkKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgaW5saW5lIFBhc3NP
d25QdHI8U2hhZG93RGF0YT4gYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNv
bnN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kKGZyb20tPmNvbG9y
KCksIHRvLT5jb2xvcigpLCBwcm9ncmVzcykpKTsKIH0KIAotc3RhdGljIGlubGluZSBUcmFuc2Zv
cm1PcGVyYXRpb25zIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBU
cmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB0bywg
ZG91YmxlIHByb2dyZXNzKQorVHJhbnNmb3JtT3BlcmF0aW9ucyBDU1NQcm9wZXJ0eUFuaW1hdGlv
bjo6YmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IFRyYW5zZm9ybU9w
ZXJhdGlvbnMmIGZyb20sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHRvLCBkb3VibGUgcHJv
Z3Jlc3MpCiB7CiAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyByZXN1bHQ7CiAKQEAgLTE1OCw3ICsx
NTgsNyBAQCBzdGF0aWMgaW5saW5lIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRGdW5jKGNvbnN0
IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IFRyYQogfQogCiAjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQotc3RhdGljIGlubGluZSBGaWx0ZXJPcGVyYXRpb25zIGJsZW5kRnVuYyhjb25zdCBBbmlt
YXRpb25CYXNlKiBhbmltLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmcm9tLCBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiB0bywgZG91YmxlIHByb2dyZXNzKQorRmlsdGVyT3BlcmF0aW9ucyBDU1NQ
cm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIGZyb20sIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIHRvLCBk
b3VibGUgcHJvZ3Jlc3MpCiB7CiAgICAgRmlsdGVyT3BlcmF0aW9ucyByZXN1bHQ7CiAKQEAgLTE3
MCw3ICsxNzAsNyBAQCBzdGF0aWMgaW5saW5lIEZpbHRlck9wZXJhdGlvbnMgYmxlbmRGdW5jKGNv
bnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IEZpbHRlcgogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJh
dGlvbj4gZnJvbU9wID0gKGkgPCBmcm9tU2l6ZSkgPyBmcm9tLm9wZXJhdGlvbnMoKVtpXS5nZXQo
KSA6IDA7CiAgICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0
b1NpemUpID8gdG8ub3BlcmF0aW9ucygpW2ldLmdldCgpIDogMDsKLSAgICAgICAgICAgIFJlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kZWRPcCA9IHRvT3AgPyB0b09wLT5ibGVuZChmcm9tT3Au
Z2V0KCksIHByb2dyZXNzKSA6IChmcm9tT3AgPyBmcm9tT3AtPmJsZW5kKDAsIHByb2dyZXNzLCB0
cnVlKSA6IFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPigwKSk7CisgICAgICAgICAgICBSZWZQ
dHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZGVkT3AgPSB0b09wID8gdG9PcC0+YmxlbmQoYW5pbSwg
ZnJvbU9wLmdldCgpLCBwcm9ncmVzcykgOiAoZnJvbU9wID8gZnJvbU9wLT5ibGVuZChhbmltLCAw
LCBwcm9ncmVzcywgdHJ1ZSkgOiBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4oMCkpOwogICAg
ICAgICAgICAgaWYgKGJsZW5kZWRPcCkKICAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9u
cygpLmFwcGVuZChibGVuZGVkT3ApOwogICAgICAgICAgICAgZWxzZSB7CkBAIC0xOTEsNyArMTkx
LDcgQEAgc3RhdGljIGlubGluZSBGaWx0ZXJPcGVyYXRpb25zIGJsZW5kRnVuYyhjb25zdCBBbmlt
YXRpb25CYXNlKiBhbmltLCBjb25zdCBGaWx0ZXIKIH0KICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJ
TFRFUlMpCiAKLXN0YXRpYyBpbmxpbmUgRVZpc2liaWxpdHkgYmxlbmRGdW5jKGNvbnN0IEFuaW1h
dGlvbkJhc2UqIGFuaW0sIEVWaXNpYmlsaXR5IGZyb20sIEVWaXNpYmlsaXR5IHRvLCBkb3VibGUg
cHJvZ3Jlc3MpCitFVmlzaWJpbGl0eSBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRGdW5jKGNv
bnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIEVWaXNpYmlsaXR5IGZyb20sIEVWaXNpYmlsaXR5IHRv
LCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAgICAgLy8gQW55IG5vbi16ZXJvIHJlc3VsdCBtZWFucyB3
ZSBjb25zaWRlciB0aGUgb2JqZWN0IHRvIGJlIHZpc2libGUuIE9ubHkgYXQgMCBkbyB3ZSBjb25z
aWRlciB0aGUgb2JqZWN0IHRvIGJlCiAgICAgLy8gaW52aXNpYmxlLiBUaGUgaW52aXNpYmxlIHZh
bHVlIHdlIHVzZSAoSElEREVOIHZzLiBDT0xMQVBTRSkgZGVwZW5kcyBvbiB0aGUgc3BlY2lmaWVk
IGZyb20vdG8gdmFsdWVzLgpAQCAtMjAzLDcgKzIwMyw3IEBAIHN0YXRpYyBpbmxpbmUgRVZpc2li
aWxpdHkgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIEVWaXNpYmlsaXR5IGZy
b20sCiAgICAgcmV0dXJuIHJlc3VsdCA+IDAuID8gVklTSUJMRSA6ICh0byAhPSBWSVNJQkxFID8g
dG8gOiBmcm9tKTsKIH0KIAotc3RhdGljIGlubGluZSBMZW5ndGhCb3ggYmxlbmRGdW5jKGNvbnN0
IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IExlbmd0aEJveCYgZnJvbSwgY29uc3QgTGVuZ3Ro
Qm94JiB0bywgZG91YmxlIHByb2dyZXNzKQorTGVuZ3RoQm94IENTU1Byb3BlcnR5QW5pbWF0aW9u
OjpibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgY29uc3QgTGVuZ3RoQm94JiBm
cm9tLCBjb25zdCBMZW5ndGhCb3gmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAgICAgLy8gTGVu
Z3RoIHR5cGVzIGhhdmUgdG8gbWF0Y2ggdG8gYW5pbWF0ZQogICAgIGlmIChmcm9tLnRvcCgpLnR5
cGUoKSAhPSB0by50b3AoKS50eXBlKCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgaW5saW5l
IExlbmd0aEJveCBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgY29uc3QgTGVu
Z3RoQm94JiBmcgogfQogCiAjaWYgRU5BQkxFKFNWRykKLXN0YXRpYyBpbmxpbmUgU1ZHTGVuZ3Ro
IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgU1ZHTGVuZ3RoJiBmcm9tLCBj
b25zdCBTVkdMZW5ndGgmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCitTVkdMZW5ndGggQ1NTUHJvcGVy
dHlBbmltYXRpb246OmJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgU1ZHTGVu
Z3RoJiBmcm9tLCBjb25zdCBTVkdMZW5ndGgmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAgICAg
cmV0dXJuIHRvLmJsZW5kKGZyb20sIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocHJvZ3Jlc3MpKTsK
IH0KQEAgLTI0Nyw3ICsyNDcsNyBAQCBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8U3R5bGVJbWFn
ZT4gY3Jvc3NmYWRlQmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSosIFN0eWxlQwogICAgIHJldHVy
biBTdHlsZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoY3Jvc3NmYWRlVmFsdWUuZ2V0KCkpOwogfQog
Ci1zdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gYmxlbmRGdW5jKGNvbnN0IEFu
aW1hdGlvbkJhc2UqIGFuaW0sIFN0eWxlSW1hZ2UqIGZyb20sIFN0eWxlSW1hZ2UqIHRvLCBkb3Vi
bGUgcHJvZ3Jlc3MpCitQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IENTU1Byb3BlcnR5QW5pbWF0aW9u
OjpibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgU3R5bGVJbWFnZSogZnJvbSwg
U3R5bGVJbWFnZSogdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICBpZiAoIWZyb20gfHwgIXRv
KQogICAgICAgICByZXR1cm4gdG87CkBAIC0yNjAsNyArMjYwLDcgQEAgc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmlt
LCBTdHlsZUkKICAgICByZXR1cm4gdG87CiB9CiAKLXN0YXRpYyBpbmxpbmUgTmluZVBpZWNlSW1h
Z2UgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IE5pbmVQaWVjZUlt
YWdlJiBmcm9tLCBjb25zdCBOaW5lUGllY2VJbWFnZSYgdG8sIGRvdWJsZSBwcm9ncmVzcykKK05p
bmVQaWVjZUltYWdlIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoY29uc3QgQW5pbWF0
aW9uQmFzZSogYW5pbSwgY29uc3QgTmluZVBpZWNlSW1hZ2UmIGZyb20sIGNvbnN0IE5pbmVQaWVj
ZUltYWdlJiB0bywgZG91YmxlIHByb2dyZXNzKQogewogICAgIGlmICghZnJvbS5oYXNJbWFnZSgp
IHx8ICF0by5oYXNJbWFnZSgpKQogICAgICAgICByZXR1cm4gdG87CkBAIC0zNjQsNyArMzY0LDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2Uq
IGFuaW0sIFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5k
ZXJTdHlsZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdAogICAgIHsKLSAgICAgICAgKGRzdC0+
Km1fc2V0dGVyKShibGVuZEZ1bmMoYW5pbSwgKGEtPipQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VD46
Om1fZ2V0dGVyKSgpLCAoYi0+KlByb3BlcnR5V3JhcHBlckdldHRlcjxUPjo6bV9nZXR0ZXIpKCks
IHByb2dyZXNzKSk7CisgICAgICAgIChkc3QtPiptX3NldHRlcikoQ1NTUHJvcGVydHlBbmltYXRp
b246OmJsZW5kRnVuYyhhbmltLCAoYS0+KlByb3BlcnR5V3JhcHBlckdldHRlcjxUPjo6bV9nZXR0
ZXIpKCksIChiLT4qUHJvcGVydHlXcmFwcGVyR2V0dGVyPFQ+OjptX2dldHRlcikoKSwgcHJvZ3Jl
c3MpKTsKICAgICB9CiAKIHByb3RlY3RlZDoKQEAgLTM4Miw3ICszODIsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgUmVuZGVy
U3R5bGUqIGRzdCwgY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiLCBk
b3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiAgICAgewotICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKGJs
ZW5kRnVuYyhhbmltLCAoYS0+KlByb3BlcnR5V3JhcHBlckdldHRlcjxUKj46Om1fZ2V0dGVyKSgp
LCAoYi0+KlByb3BlcnR5V3JhcHBlckdldHRlcjxUKj46Om1fZ2V0dGVyKSgpLCBwcm9ncmVzcykp
OworICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1
bmMoYW5pbSwgKGEtPipQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VCo+OjptX2dldHRlcikoKSwgKGIt
PipQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VCo+OjptX2dldHRlcikoKSwgcHJvZ3Jlc3MpKTsKICAg
ICB9CiAKIHByb3RlY3RlZDoKQEAgLTQyMiw3ICs0MjIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgUmVuZGVyU3R5bGUqIGRz
dCwgY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiLCBkb3VibGUgcHJv
Z3Jlc3MpIGNvbnN0CiAgICAgewotICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKGJsZW5kRnVuYyhh
bmltLCAoYS0+KlByb3BlcnR5V3JhcHBlckdldHRlcjxDb2xvcj46Om1fZ2V0dGVyKSgpLCAoYi0+
KlByb3BlcnR5V3JhcHBlckdldHRlcjxDb2xvcj46Om1fZ2V0dGVyKSgpLCBwcm9ncmVzcykpOwor
ICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMo
YW5pbSwgKGEtPipQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8Q29sb3I+OjptX2dldHRlcikoKSwgKGIt
PipQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8Q29sb3I+OjptX2dldHRlcikoKSwgcHJvZ3Jlc3MpKTsK
ICAgICB9CiAKIHByb3RlY3RlZDoKQEAgLTQ0NCw3ICs0NDQsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGZsb2F0IGZyb21PcGFjaXR5ID0gYS0+b3BhY2l0eSgpOwogCiAgICAgICAgIC8vIFRoaXMgbWFr
ZXMgc3VyZSB3ZSBwdXQgdGhlIG9iamVjdCBiZWluZyBhbmltYXRlZCBpbnRvIGEgUmVuZGVyTGF5
ZXIgZHVyaW5nIHRoZSBhbmltYXRpb24KLSAgICAgICAgZHN0LT5zZXRPcGFjaXR5KGJsZW5kRnVu
YyhhbmltLCAoZnJvbU9wYWNpdHkgPT0gMSkgPyAwLjk5OTk5OWYgOiBmcm9tT3BhY2l0eSwgYi0+
b3BhY2l0eSgpLCBwcm9ncmVzcykpOworICAgICAgICBkc3QtPnNldE9wYWNpdHkoQ1NTUHJvcGVy
dHlBbmltYXRpb246OmJsZW5kRnVuYyhhbmltLCAoZnJvbU9wYWNpdHkgPT0gMSkgPyAwLjk5OTk5
OWYgOiBmcm9tT3BhY2l0eSwgYi0+b3BhY2l0eSgpLCBwcm9ncmVzcykpOwogICAgIH0KIH07CiAK
QEAgLTQ1OSw3ICs0NTksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYmxlbmQoY29u
c3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgUmVuZGVyU3R5bGUqIGRzdCwgY29uc3QgUmVuZGVyU3R5
bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiAgICAg
ewotICAgICAgICBkc3QtPnNldFRyYW5zZm9ybShibGVuZEZ1bmMoYW5pbSwgYS0+dHJhbnNmb3Jt
KCksIGItPnRyYW5zZm9ybSgpLCBwcm9ncmVzcykpOworICAgICAgICBkc3QtPnNldFRyYW5zZm9y
bShDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRGdW5jKGFuaW0sIGEtPnRyYW5zZm9ybSgpLCBi
LT50cmFuc2Zvcm0oKSwgcHJvZ3Jlc3MpKTsKICAgICB9CiB9OwogCkBAIC00NzUsNyArNDc1LDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2Uq
IGFuaW0sIFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5k
ZXJTdHlsZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdAogICAgIHsKLSAgICAgICAgZHN0LT5z
ZXRGaWx0ZXIoYmxlbmRGdW5jKGFuaW0sIGEtPmZpbHRlcigpLCBiLT5maWx0ZXIoKSwgcHJvZ3Jl
c3MpKTsKKyAgICAgICAgZHN0LT5zZXRGaWx0ZXIoQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5k
RnVuYyhhbmltLCBhLT5maWx0ZXIoKSwgYi0+ZmlsdGVyKCksIHByb2dyZXNzKSk7CiAgICAgfQog
fTsKICNlbmRpZgpAQCAtNTY1LDcgKzU2NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjb25z
dCBTaGFkb3dEYXRhKiBzcmNTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhzaGFkb3dBLCBzaGFk
b3dCKTsKICAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIGRzdFNoYWRvdyA9IHNoYWRvd0Zv
ckJsZW5kaW5nKHNoYWRvd0IsIHNoYWRvd0EpOwogCi0gICAgICAgICAgICBPd25QdHI8U2hhZG93
RGF0YT4gYmxlbmRlZFNoYWRvdyA9IGJsZW5kRnVuYyhhbmltLCBzcmNTaGFkb3csIGRzdFNoYWRv
dywgcHJvZ3Jlc3MpOworICAgICAgICAgICAgT3duUHRyPFNoYWRvd0RhdGE+IGJsZW5kZWRTaGFk
b3cgPSBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRGdW5jKGFuaW0sIHNyY1NoYWRvdywgZHN0
U2hhZG93LCBwcm9ncmVzcyk7CiAgICAgICAgICAgICBTaGFkb3dEYXRhKiBibGVuZGVkU2hhZG93
UHRyID0gYmxlbmRlZFNoYWRvdy5nZXQoKTsKIAogICAgICAgICAgICAgaWYgKCFsYXN0U2hhZG93
KQpAQCAtNjA4LDcgKzYwOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjb25zdCBTaGFkb3dE
YXRhKiBzcmNTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhmcm9tU2hhZG93LCB0b1NoYWRvdyk7
CiAgICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JCbGVu
ZGluZyh0b1NoYWRvdywgZnJvbVNoYWRvdyk7CiAKLSAgICAgICAgICAgIE93blB0cjxTaGFkb3dE
YXRhPiBibGVuZGVkU2hhZG93ID0gYmxlbmRGdW5jKGFuaW0sIHNyY1NoYWRvdywgZHN0U2hhZG93
LCBwcm9ncmVzcyk7CisgICAgICAgICAgICBPd25QdHI8U2hhZG93RGF0YT4gYmxlbmRlZFNoYWRv
dyA9IENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoYW5pbSwgc3JjU2hhZG93LCBkc3RT
aGFkb3csIHByb2dyZXNzKTsKICAgICAgICAgICAgIC8vIEluc2VydCBhdCB0aGUgc3RhcnQgb2Yg
dGhlIGxpc3QgdG8gcHJlc2VydmUgdGhlIG9yZGVyLgogICAgICAgICAgICAgYmxlbmRlZFNoYWRv
dy0+c2V0TmV4dChuZXdTaGFkb3dEYXRhLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICBuZXdTaGFk
b3dEYXRhID0gYmxlbmRlZFNoYWRvdy5yZWxlYXNlKCk7CkBAIC02NTgsNyArNjU4LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgZnJvbUNvbG9yID0gYS0+Y29sb3IoKTsKICAgICAgICAgaWYgKCF0
b0NvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHRvQ29sb3IgPSBiLT5jb2xvcigpOwotICAg
ICAgICAoZHN0LT4qbV9zZXR0ZXIpKGJsZW5kRnVuYyhhbmltLCBmcm9tQ29sb3IsIHRvQ29sb3Is
IHByb2dyZXNzKSk7CisgICAgICAgIChkc3QtPiptX3NldHRlcikoQ1NTUHJvcGVydHlBbmltYXRp
b246OmJsZW5kRnVuYyhhbmltLCBmcm9tQ29sb3IsIHRvQ29sb3IsIHByb2dyZXNzKSk7CiAgICAg
fQogCiBwcml2YXRlOgpAQCAtNzQ3LDcgKzc0Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBGaWxsTGF5ZXIqIGRzdCwgY29u
c3QgRmlsbExheWVyKiBhLCBjb25zdCBGaWxsTGF5ZXIqIGIsIGRvdWJsZSBwcm9ncmVzcykgY29u
c3QKICAgICB7Ci0gICAgICAgIChkc3QtPiptX3NldHRlcikoYmxlbmRGdW5jKGFuaW0sIChhLT4q
RmlsbExheWVyUHJvcGVydHlXcmFwcGVyR2V0dGVyPFQ+OjptX2dldHRlcikoKSwgKGItPipGaWxs
TGF5ZXJQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VD46Om1fZ2V0dGVyKSgpLCBwcm9ncmVzcykpOwor
ICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMo
YW5pbSwgKGEtPipGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VD46Om1fZ2V0dGVyKSgp
LCAoYi0+KkZpbGxMYXllclByb3BlcnR5V3JhcHBlckdldHRlcjxUPjo6bV9nZXR0ZXIpKCksIHBy
b2dyZXNzKSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CkBAIC03NjUsNyArNzY1LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIEZp
bGxMYXllciogZHN0LCBjb25zdCBGaWxsTGF5ZXIqIGEsIGNvbnN0IEZpbGxMYXllciogYiwgZG91
YmxlIHByb2dyZXNzKSBjb25zdAogICAgIHsKLSAgICAgICAgKGRzdC0+Km1fc2V0dGVyKShibGVu
ZEZ1bmMoYW5pbSwgKGEtPipGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VCo+OjptX2dl
dHRlcikoKSwgKGItPipGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VCo+OjptX2dldHRl
cikoKSwgcHJvZ3Jlc3MpKTsKKyAgICAgICAgKGRzdC0+Km1fc2V0dGVyKShDU1NQcm9wZXJ0eUFu
aW1hdGlvbjo6YmxlbmRGdW5jKGFuaW0sIChhLT4qRmlsbExheWVyUHJvcGVydHlXcmFwcGVyR2V0
dGVyPFQqPjo6bV9nZXR0ZXIpKCksIChiLT4qRmlsbExheWVyUHJvcGVydHlXcmFwcGVyR2V0dGVy
PFQqPjo6bV9nZXR0ZXIpKCksIHByb2dyZXNzKSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CkBAIC05
MjIsOSArOTIyLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGJsZW5kKGNvbnN0IEFu
aW1hdGlvbkJhc2UqIGFuaW0sIFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBh
LCBjb25zdCBSZW5kZXJTdHlsZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdAogICAgIHsKLSAg
ICAgICAgZHN0LT5zZXRGbGV4QmFzaXMoYmxlbmRGdW5jKGFuaW0sIGEtPmZsZXhCYXNpcygpLCBi
LT5mbGV4QmFzaXMoKSwgcHJvZ3Jlc3MpKTsKLSAgICAgICAgZHN0LT5zZXRGbGV4R3JvdyhibGVu
ZEZ1bmMoYW5pbSwgYS0+ZmxleEdyb3coKSwgYi0+ZmxleEdyb3coKSwgcHJvZ3Jlc3MpKTsKLSAg
ICAgICAgZHN0LT5zZXRGbGV4U2hyaW5rKGJsZW5kRnVuYyhhbmltLCBhLT5mbGV4U2hyaW5rKCks
IGItPmZsZXhTaHJpbmsoKSwgcHJvZ3Jlc3MpKTsKKyAgICAgICAgZHN0LT5zZXRGbGV4QmFzaXMo
Q1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kRnVuYyhhbmltLCBhLT5mbGV4QmFzaXMoKSwgYi0+
ZmxleEJhc2lzKCksIHByb2dyZXNzKSk7CisgICAgICAgIGRzdC0+c2V0RmxleEdyb3coQ1NTUHJv
cGVydHlBbmltYXRpb246OmJsZW5kRnVuYyhhbmltLCBhLT5mbGV4R3JvdygpLCBiLT5mbGV4R3Jv
dygpLCBwcm9ncmVzcykpOworICAgICAgICBkc3QtPnNldEZsZXhTaHJpbmsoQ1NTUHJvcGVydHlB
bmltYXRpb246OmJsZW5kRnVuYyhhbmltLCBhLT5mbGV4U2hyaW5rKCksIGItPmZsZXhTaHJpbmso
KSwgcHJvZ3Jlc3MpKTsKICAgICB9CiB9OwogI2VuZGlmCkBAIC05ODEsNyArOTgxLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgZnJvbUNvbG9yID0gQ29sb3IoKTsKICAgICAgICAgaWYgKCF0b0Nv
bG9yLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHRvQ29sb3IgPSBDb2xvcigpOwotICAgICAgICAo
ZHN0LT4qbV9zZXR0ZXIpKGJsZW5kRnVuYyhhbmltLCBmcm9tQ29sb3IsIHRvQ29sb3IsIHByb2dy
ZXNzKSk7CisgICAgICAgIChkc3QtPiptX3NldHRlcikoQ1NTUHJvcGVydHlBbmltYXRpb246OmJs
ZW5kRnVuYyhhbmltLCBmcm9tQ29sb3IsIHRvQ29sb3IsIHByb2dyZXNzKSk7CiAgICAgfQogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJv
cGVydHlBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3Bl
cnR5QW5pbWF0aW9uLmgKaW5kZXggNTI5MDU1N2JiYzJmNDNhM2E4MzA2NTBmYTZhODZjOTcyN2Uw
Y2VjMC4uMWMxYTI1ZTRhYWU4NjI1MDQ3YzY4Zjk5Y2I3MjZhNjkxYjYzYzhiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5o
CkBAIC0zMCw3ICszMCwxOCBAQAogI2RlZmluZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbl9oCiAKICNp
bmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRl
ICJGaWx0ZXJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiTGVuZ3RoLmgiCisjaW5jbHVkZSAiTGVu
Z3RoQm94LmgiCisjaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgorI2luY2x1ZGUgIk5pbmVQaWVjZUlt
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKKyNpbmNsdWRlICJTVkdM
ZW5ndGguaCIKKyNpbmNsdWRlICJTaGFkb3dEYXRhLmgiCisjaW5jbHVkZSAiU3R5bGVJbWFnZS5o
IgorI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbnMuaCIKKwogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ5LDYgKzYwLDI4IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+IGFuaW1hdGFibGVTaG9ydGhhbmRz
QWZmZWN0aW5nUHJvcGVydHkoQ1NTUHJvcGVydHlJRCk7CiAKKyAgICBzdGF0aWMgaW50IGJsZW5k
RnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgaW50IGZyb20sIGludCB0bywgZG91YmxlIHByb2dy
ZXNzKTsKKyAgICBzdGF0aWMgdW5zaWduZWQgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2Uq
LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgZG91YmxlIHByb2dyZXNzKTsKKyAgICBzdGF0
aWMgZG91YmxlIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgZG91YmxlIGZyb20sIGRv
dWJsZSB0bywgZG91YmxlIHByb2dyZXNzKTsKKyAgICBzdGF0aWMgZmxvYXQgYmxlbmRGdW5jKGNv
bnN0IEFuaW1hdGlvbkJhc2UqLCBmbG9hdCBmcm9tLCBmbG9hdCB0bywgZG91YmxlIHByb2dyZXNz
KTsKKyAgICBzdGF0aWMgQ29sb3IgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25z
dCBDb2xvciYgZnJvbSwgY29uc3QgQ29sb3ImIHRvLCBkb3VibGUgcHJvZ3Jlc3MpOworICAgIHN0
YXRpYyBMZW5ndGggYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBMZW5ndGgm
IGZyb20sIGNvbnN0IExlbmd0aCYgdG8sIGRvdWJsZSBwcm9ncmVzcyk7CisgICAgc3RhdGljIExl
bmd0aFNpemUgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBMZW5ndGhTaXpl
JiBmcm9tLCBjb25zdCBMZW5ndGhTaXplJiB0bywgZG91YmxlIHByb2dyZXNzKTsKKyAgICBzdGF0
aWMgSW50U2l6ZSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IEludFNpemUm
IGZyb20sIGNvbnN0IEludFNpemUmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpOworICAgIHN0YXRpYyBT
aGFkb3dTdHlsZSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIFNoYWRvd1N0eWxlIGZy
b20sIFNoYWRvd1N0eWxlIHRvLCBkb3VibGUgcHJvZ3Jlc3MpOworICAgIHN0YXRpYyBQYXNzT3du
UHRyPFNoYWRvd0RhdGE+IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgU2hh
ZG93RGF0YSogZnJvbSwgY29uc3QgU2hhZG93RGF0YSogdG8sIGRvdWJsZSBwcm9ncmVzcyk7Cisg
ICAgc3RhdGljIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJh
c2UqLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBjb25zdCBUcmFuc2Zvcm1PcGVy
YXRpb25zJiwgZG91YmxlIHByb2dyZXNzKTsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAg
c3RhdGljIEZpbHRlck9wZXJhdGlvbnMgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmcm9tLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB0bywg
ZG91YmxlIHByb2dyZXNzKTsKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgc3Rh
dGljIEVWaXNpYmlsaXR5IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgRVZpc2liaWxp
dHkgZnJvbSwgRVZpc2liaWxpdHkgdG8sIGRvdWJsZSBwcm9ncmVzcyk7CisgICAgc3RhdGljIExl
bmd0aEJveCBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IExlbmd0aEJveCYg
ZnJvbSwgY29uc3QgTGVuZ3RoQm94JiB0bywgZG91YmxlIHByb2dyZXNzKTsKKyNpZiBFTkFCTEUo
U1ZHKQorICAgIHN0YXRpYyBTVkdMZW5ndGggYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2Uq
LCBjb25zdCBTVkdMZW5ndGgmIGZyb20sIGNvbnN0IFNWR0xlbmd0aCYgdG8sIGRvdWJsZSBwcm9n
cmVzcyk7CisjZW5kaWYgLy8gRU5BQkxFKFNWRykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHls
ZUltYWdlPiBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIFN0eWxlSW1hZ2UqIGZyb20s
IFN0eWxlSW1hZ2UqIHRvLCBkb3VibGUgcHJvZ3Jlc3MpOworICAgIHN0YXRpYyBOaW5lUGllY2VJ
bWFnZSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IE5pbmVQaWVjZUltYWdl
JiBmcm9tLCBjb25zdCBOaW5lUGllY2VJbWFnZSYgdG8sIGRvdWJsZSBwcm9ncmVzcyk7CisKICAg
ICAvLyBSZXR1cm4gdHJ1ZSBpZiB3ZSBuZWVkIHRvIHN0YXJ0IHNvZnR3YXJlIGFuaW1hdGlvbiB0
aW1lcnMKICAgICBzdGF0aWMgYm9vbCBibGVuZFByb3BlcnRpZXMoY29uc3QgQW5pbWF0aW9uQmFz
ZSosIENTU1Byb3BlcnR5SUQsIFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBh
LCBjb25zdCBSZW5kZXJTdHlsZSogYiwgZG91YmxlIHByb2dyZXNzKTsKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlck51bWJlclBhcmFtZXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaAppbmRleCAyNzcwYjRjZWQ2Y2Y1
ODMwMzRlMDcxMjc5ZjgwYTQ1ODZjN2Y3NjJlLi40NzM3MTUyMjM3MmJlZDFjOTJjN2U2MmFhMDU2
M2I5ODVhMjQyYjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVy
LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRWYWx1ZShkb3VibGUg
dmFsdWUpIHsgbV9kYXRhLmFwcGVuZCh2YWx1ZSk7IH0KICAgICAKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBibGVuZChjb25zdCBDdXN0b21GaWx0ZXJQYXJh
bWV0ZXIqIGZyb20sIGRvdWJsZSBwcm9ncmVzcykKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vz
dG9tRmlsdGVyUGFyYW1ldGVyPiBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgQ3Vz
dG9tRmlsdGVyUGFyYW1ldGVyKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpCiAgICAgewogICAgICAg
ICBpZiAoIWZyb20gfHwgIWlzU2FtZVR5cGUoKmZyb20pKQogICAgICAgICAgICAgcmV0dXJuIHRo
aXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHAKaW5kZXggZjVjODE3MjRmNzg3
ZDU3YmMwMGY4YTk0MjZlZmI4ODBmYzkyYjVlMi4uMWFjNjZjZWE1MTI2ZjQyMGY1MmZhMjBhYTQ4
YjE2NjFiM2RlZGRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNwcApAQCAt
NjQsNyArNjQsNyBAQCBzdGF0aWMgYm9vbCBjaGVja0N1c3RvbUZpbHRlclBhcmFtZXRlcnNPcmRl
cihjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBwYQogfQogI2VuZGlmCiAKLXZvaWQg
YmxlbmRDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxp
c3QmIGZyb21MaXN0LCBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiB0b0xpc3QsIGRv
dWJsZSBwcm9ncmVzcywgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgcmVzdWx0TGlzdCkKK3Zv
aWQgYmxlbmRDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0s
IGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIGZyb21MaXN0LCBjb25zdCBDdXN0b21G
aWx0ZXJQYXJhbWV0ZXJMaXN0JiB0b0xpc3QsIGRvdWJsZSBwcm9ncmVzcywgQ3VzdG9tRmlsdGVy
UGFyYW1ldGVyTGlzdCYgcmVzdWx0TGlzdCkKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBleHBlY3Rz
IGJvdGggbGlzdHMgdG8gYmUgc29ydGVkIGJ5IHBhcmFtZXRlciBuYW1lIGFuZCB0aGUgcmVzdWx0
IGxpc3QgaXMgYWxzbyBzb3J0ZWQuCiAgICAgQVNTRVJUKGNoZWNrQ3VzdG9tRmlsdGVyUGFyYW1l
dGVyc09yZGVyKGZyb21MaXN0KSk7CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgYmxlbmRDdXN0b21G
aWx0ZXJQYXJhbWV0ZXJzKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIGZyb21MaXN0
LCBjb25zCiAgICAgICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlciogcGFyYW1Gcm9tID0gZnJvbUxp
c3QuYXQoZnJvbUxpc3RJbmRleCkuZ2V0KCk7CiAgICAgICAgIEN1c3RvbUZpbHRlclBhcmFtZXRl
ciogcGFyYW1UbyA9IHRvTGlzdC5hdCh0b0xpc3RJbmRleCkuZ2V0KCk7CiAgICAgICAgIGlmIChw
YXJhbUZyb20tPm5hbWUoKSA9PSBwYXJhbVRvLT5uYW1lKCkpIHsKLSAgICAgICAgICAgIHJlc3Vs
dExpc3QuYXBwZW5kKHBhcmFtVG8tPmJsZW5kKHBhcmFtRnJvbSwgcHJvZ3Jlc3MpKTsKKyAgICAg
ICAgICAgIHJlc3VsdExpc3QuYXBwZW5kKHBhcmFtVG8tPmJsZW5kKGFuaW0sIHBhcmFtRnJvbSwg
cHJvZ3Jlc3MpKTsKICAgICAgICAgICAgICsrZnJvbUxpc3RJbmRleDsKICAgICAgICAgICAgICsr
dG9MaXN0SW5kZXg7CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTExMSw3ICsxMTEsNyBAQCBD
dXN0b21GaWx0ZXJPcGVyYXRpb246On5DdXN0b21GaWx0ZXJPcGVyYXRpb24oKQogewogfQogCi1Q
YXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpibGVuZChj
b25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRv
UGFzc3Rocm91Z2gpCitQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBGaWx0ZXJPcGVy
YXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCiB7
CiAgICAgLy8gRklYTUU6IFRoZXJlJ3Mgbm8gd2F5IHRvIGRlY2lkZSB3aGF0IGlzIHRoZSAicGFz
c3Rocm91Z2ggZmlsdGVyIiBmb3Igc2hhZGVycyB1c2luZyB0aGUgY3VycmVudCBDU1MgU3ludGF4
LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDkwMwpA
QCAtMTI4LDcgKzEyOCw3IEBAIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBDdXN0b21GaWx0
ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbioKICAgICAgICAgcmV0dXJu
IHRoaXM7CiAgICAgCiAgICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCBhbmltYXRlZFBhcmFt
ZXRlcnM7Ci0gICAgYmxlbmRDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzKGZyb21PcC0+bV9wYXJhbWV0
ZXJzLCBtX3BhcmFtZXRlcnMsIHByb2dyZXNzLCBhbmltYXRlZFBhcmFtZXRlcnMpOworICAgIGJs
ZW5kQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhhbmltLCBmcm9tT3AtPm1fcGFyYW1ldGVycywgbV9w
YXJhbWV0ZXJzLCBwcm9ncmVzcywgYW5pbWF0ZWRQYXJhbWV0ZXJzKTsKICAgICByZXR1cm4gQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobV9wcm9ncmFtLCBhbmltYXRlZFBhcmFtZXRlcnMs
IG1fbWVzaFJvd3MsIG1fbWVzaENvbHVtbnMsIG1fbWVzaEJveFR5cGUsIG1fbWVzaFR5cGUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAppbmRleCBiNGU4YjI5MzYwYjg1Nzg5
ODA5MWNjZWQxYmM1NzgwYmNmNzliMzc0Li5hMTEwYTEzOGI2OTRlODhkMjRhODdhMDEwZjBhYTBh
NjRiMWEyZGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNkZWZpbmUgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uX2gKIAogI2lmIEVOQUJMRShDU1Nf
U0hBREVSUykKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkN1
c3RvbUZpbHRlclByb2dyYW0uaCIKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb24uaCIKIApAQCAt
NDQsNyArNDUsNyBAQCBjbGFzcyBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI7CiB0eXBlZGVmIFZlY3Rv
cjxSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiA+IEN1c3RvbUZpbHRlclBhcmFtZXRlckxp
c3Q7CiAKIGJvb2wgY3VzdG9tRmlsdGVyUGFyYW1ldGVyc0VxdWFsKGNvbnN0IEN1c3RvbUZpbHRl
clBhcmFtZXRlckxpc3QmLCBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0Jik7Ci12b2lk
IGJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJM
aXN0JiBsaXN0RnJvbSwgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgbGlzdFRvLCBk
b3VibGUgcHJvZ3Jlc3MsIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHJlc3VsdExpc3QpOwor
dm9pZCBibGVuZEN1c3RvbUZpbHRlclBhcmFtZXRlcnMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNv
bnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIGxpc3RGcm9tLCBjb25zdCBDdXN0b21GaWx0
ZXJQYXJhbWV0ZXJMaXN0JiBsaXN0VG8sIGRvdWJsZSBwcm9ncmVzcywgQ3VzdG9tRmlsdGVyUGFy
YW1ldGVyTGlzdCYgcmVzdWx0cyk7CiAKIGNsYXNzIEN1c3RvbUZpbHRlck9wZXJhdGlvbiA6IHB1
YmxpYyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgpAQCAtODAsNyArODEsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBtb3Zlc1BpeGVscygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
ICAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25z
dCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFz
c3Rocm91Z2ggPSBmYWxzZSk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJv
bSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9u
JiBvKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRlci5oCmluZGV4IDgy
OTgwZDZjNzgwZjA4MGNjN2Q3MDNmYWE5OGM2MmI2ZjVkM2VhODQuLjk3YmUyOWNiMjViZDVmMzg2
ZDc1OTRlMjk3NTdjMzNmZmFlZDU4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0ZXIu
aApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBpc1NhbWVUeXBlKGNv
bnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHBhcmFtZXRl
clR5cGUoKSA9PSBvdGhlci5wYXJhbWV0ZXJUeXBlKCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBibGVuZChjb25zdCBDdXN0b21GaWx0ZXJQ
YXJhbWV0ZXIqLCBkb3VibGUgcHJvZ3Jlc3MpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3Qg
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyKiwgZG91YmxlIHByb2dyZXNzKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyJikgY29uc3QgPSAw
OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXImIG8pIGNv
bnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVHJhbnNm
b3JtUGFyYW1ldGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlci5oCmluZGV4IDFiNzM0ZTM3ODgxYjZhODI5
MWNlZDRhYjIxYThhZjA2ZjRiYWQyNjAuLjIyMzNjMzIzZmMwM2NjNGVlOTlhODRmNWVhNTBlYjEw
NzgzNDY4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0
ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2RlZmluZSBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJh
bWV0ZXJfaAogCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQorI2luY2x1ZGUgIkNTU1Byb3BlcnR5
QW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUGFyYW1ldGVyLmgiCiAjaW5jbHVk
ZSAiVHJhbnNmb3JtT3BlcmF0aW9ucy5oIgogCkBAIC00NSwxNCArNDYsMjEgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1Q
YXJhbWV0ZXIobmFtZSkpOwogICAgIH0KLSAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vz
dG9tRmlsdGVyUGFyYW1ldGVyPiBibGVuZChjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqLCBk
b3VibGUpCisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBi
bGVuZChjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0
ZXIqIGZyb21QYXJhbWV0ZXIsIGRvdWJsZSBwcm9ncmVzcykKICAgICB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgYW5pbWF0aW9ucyBzdXBwb3J0LgotICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ5ODAKLSAgICAgICAgcmV0dXJuIHRoaXM7
CisgICAgICAgIGlmICghZnJvbVBhcmFtZXRlciB8fCAhaXNTYW1lVHlwZSgqZnJvbVBhcmFtZXRl
cikpCisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgY29uc3QgQ3VzdG9tRmlsdGVy
VHJhbnNmb3JtUGFyYW1ldGVyKiBmcm9tVHJhbnNmb3JtUGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8
Y29uc3QgQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyKj4oZnJvbVBhcmFtZXRlcik7Cisg
ICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGZyb20gPSBmcm9tVHJhbnNmb3JtUGFy
YW1ldGVyLT5vcGVyYXRpb25zKCk7CisgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMm
IHRvID0gb3BlcmF0aW9ucygpOworCisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgcmVzdWx0
ID0gQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kRnVuYyhhbmltLCBmcm9tLCB0bywgcHJvZ3Jl
c3MpOworICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyPiByZXQg
PSBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXI6OmNyZWF0ZShuYW1lKCkpOworICAgICAg
ICByZXQtPnNldE9wZXJhdGlvbnMocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJldC5yZWxlYXNl
KCk7CiAgICAgfQotICAgIAorCiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3Vz
dG9tRmlsdGVyUGFyYW1ldGVyJiBvKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFpc1NhbWVU
eXBlKG8pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCmluZGV4IDY1NjkyNmUyOGUzNTdkNjExZTEx
ZDYzOTA5MDg5MmNhNmJkNmM1MTMuLjFiMzBmZmI0Yjk1YTk1NDNmYmYyMTgyNGRhY2Y4MmZlNmQ5
OGM0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmFzaWNDb2xv
ck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9t
LCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQorUGFzc1JlZlB0cjxG
aWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNv
bnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBw
cm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCiB7CiAgICAgaWYgKGZyb20gJiYgIWZy
b20tPmlzU2FtZVR5cGUoKnRoaXMpKQogICAgICAgICByZXR1cm4gdGhpczsKQEAgLTYwLDcgKzYw
LDcgQEAgZG91YmxlIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OnBhc3N0aHJvdWdo
QW1vdW50KCkgY29uc3QKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBC
YXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJP
cGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gp
CitQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IEZpbHRlck9wZXJh
dGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsK
ICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVy
biB0aGlzOwpAQCAtOTAsNyArOTAsNyBAQCBkb3VibGUgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZp
bHRlck9wZXJhdGlvbjo6cGFzc3Rocm91Z2hBbW91bnQoKSBjb25zdAogICAgIH0KIH0KIAotUGFz
c1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEdhbW1hRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25z
dCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFz
c3Rocm91Z2gpCitQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gR2FtbWFGaWx0ZXJPcGVyYXRp
b246OmJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZy
b20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCiB7CiAgICAgaWYg
KGZyb20gJiYgIWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQogICAgICAgICByZXR1cm4gdGhpczsK
QEAgLTExMSw3ICsxMTEsNyBAQCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gR2FtbWFGaWx0
ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZgogICAgICAgICBXZWJD
b3JlOjpibGVuZChmcm9tT2Zmc2V0LCBtX29mZnNldCwgcHJvZ3Jlc3MpLCBtX3R5cGUpOwogfQog
Ci1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmx1ckZpbHRlck9wZXJhdGlvbjo6YmxlbmQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoKQorUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJPcGVy
YXRpb246OmJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBGaWx0ZXJPcGVyYXRpb24q
IGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCiB7CiAgICAg
aWYgKGZyb20gJiYgIWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQogICAgICAgICByZXR1cm4gdGhp
czsKQEAgLTEyNiw3ICsxMjYsNyBAQCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmx1ckZp
bHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcgogICAgIHJldHVy
biBCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobV9zdGREZXZpYXRpb24uYmxlbmQoZnJvbUxl
bmd0aCwgcHJvZ3Jlc3MpLCBtX3R5cGUpOwogfQogCi1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9u
KiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQorUGFzc1Jl
ZlB0cjxGaWx0ZXJPcGVyYXRpb24+IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNv
bnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBw
cm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCiB7CiAgICAgaWYgKGZyb20gJiYgIWZy
b20tPmlzU2FtZVR5cGUoKnRoaXMpKQogICAgICAgICByZXR1cm4gdGhpczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJh
dGlvbi5oCmluZGV4IGU3MjYwMGM0N2UzNjRkYjYyNTZiMzc5ZjNiYTQ2M2NkMzk4ZDI0NDMuLjhk
MDdiZGE5MTExNmYwYjc1NjNkZTYyZTU4MjhjZTE2ZTVjZGQ2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uaApAQCAtNDYsNiArNDYsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFu
aW1hdGlvbkJhc2U7CisKIC8vIENTUyBGaWx0ZXJzCiAKICNpZiBQTEFURk9STShCTEFDS0JFUlJZ
KQpAQCAtNzgsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRmlsdGVyT3BlcmF0aW9uJikgY29uc3QgPSAwOwogICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0K
IAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZp
bHRlck9wZXJhdGlvbiogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGJvb2wgLypibGVu
ZFRvUGFzc3Rocm91Z2gqLyA9IGZhbHNlKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0
IEZpbHRlck9wZXJhdGlvbiogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGJvb2wgLypi
bGVuZFRvUGFzc3Rocm91Z2gqLyA9IGZhbHNlKSB7IHJldHVybiAwOyB9CiAKICAgICB2aXJ0dWFs
IE9wZXJhdGlvblR5cGUgZ2V0T3BlcmF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc1NhbWVUeXBlKGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykg
Y29uc3QgeyByZXR1cm4gby5nZXRPcGVyYXRpb25UeXBlKCkgPT0gbV90eXBlOyB9CkBAIC0xOTEs
NyArMTkzLDcgQEAgcHVibGljOgogCiAgICAgZG91YmxlIGFtb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fYW1vdW50OyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBi
bGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBi
bGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IEZpbHRlck9wZXJh
dGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZh
bHNlKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0
ZXJPcGVyYXRpb24mIG8pIGNvbnN0CkBAIC0yMjUsNyArMjI3LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IE9Q
QUNJVFk7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5k
KGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3Bl
cmF0aW9uPiBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgRmlsdGVyT3BlcmF0aW9u
KiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2Up
OwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYgbykgY29uc3QKQEAgLTI1OCw3ICsyNjAsNyBAQCBwdWJsaWM6CiAgICAgZG91Ymxl
IGV4cG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV9leHBvbmVudDsgfQogICAgIGRvdWJsZSBvZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2Uq
LCBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVu
ZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdApAQCAtMjk0LDcgKzI5Niw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIG1vdmVzUGl4ZWxzKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxl
bmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxl
bmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxz
ZSk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVy
T3BlcmF0aW9uJiBvKSBjb25zdApAQCAtMzMwLDcgKzMzMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmly
dHVhbCBib29sIG1vdmVzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0
aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFs
c2UpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0
IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9n
cmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7CiAKIHByaXZhdGU6CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCAxMDBjZWVmNTA2OTFjZjYwMDllMDQ4Nzc1OTI5ZjZkMzU0NmI5ZmI4Li5hZjZmNzdmMDAy
YjdhMzg2NWZkMWU0ZmZjN2Q1YzVjZWJjNWNlYjY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTItMDgtMjkgIEpvc2h1YSBOZXR0ZXJmaWVsZCAgPGpuZXR0ZXJmaWVsZEByaW0uY29tPgorCisg
ICAgICAgIFtDU1MgU2hhZGVyc10gSW1wbGVtZW50IHRyYW5zZm9ybSBwYXJhbWV0ZXIgYW5pbWF0
aW9ucyBmb3IgQ1NTIEN1c3RvbSBGaWx0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NDk4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3QgdHJhbnNmb3JtIGFuaW1hdGlvbnMgaW4gY3NzMy9maWx0
ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1sLgorCisgICAgICAgICogY3Nz
My9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1s
OiBBZGQgdHJhbnNmb3JtIHRlc3RzLgorICAgICAgICAqIGNzczMvZmlsdGVycy9yZXNvdXJjZXMv
Y3VzdG9tLWZpbHRlci1wYXJzZXIuanM6IEFkZCBzdXBwb3J0IGZvciBtYXRyaWNpZXMgJiB0cmFu
c2Zvcm1zLgorCiAyMDEyLTA4LTI5ICBBbm5hIENhdmVuZGVyICA8YW5uYWNjQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBDcmVhdGUgYSB0b2dnbGUgYnV0dG9uIGZvciBjbG9zZWQgY2FwdGlvbnMu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0
ZXItYW5pbWF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0
b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDZmZGUwNzExZGRj
NjZlOTI0YjNiNDIyMTVkOTZiNzgxMjI4YmQ2NGYuLmY0YTlhY2FhZDFmM2NhZTIzZDFjNGY4N2Fh
OGQwMmE3MWZhMzI1MDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0
b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0
CkBAIC04LDQgKzgsNSBAQCBQQVNTIC0gIndlYmtpdEZpbHRlciIgcHJvcGVydHkgZm9yICJjdXN0
b20tZnJvbS1kaWZmLXBhcmFtcy1ib3giIGVsZW1lbnQgYXQgMXMgcwogUEFTUyAtICJ3ZWJraXRG
aWx0ZXIiIHByb3BlcnR5IGZvciAiY3VzdG9tLXRvLWRpZmYtcGFyYW1zLWJveCIgZWxlbWVudCBh
dCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiBjdXN0b20odXJsKHZlcnRleC1yb3RhdGUudnMp
IG5vbmUsIDEgMSBmaWx0ZXItYm94LCBwYXJhbSAxMCwgcm90YXRlQnkgNjAsIG9mZnNldCAxMCwg
YW5vdGhlcl9wYXJhbSA1KQogUEFTUyAtICJ3ZWJraXRGaWx0ZXIiIHByb3BlcnR5IGZvciAiY3Vz
dG9tLW1peC1wYXJhbXMtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86
IGN1c3RvbSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHBhcmFt
IDEwLCBhbm90aGVyX3BhcmFtIDUsIGZpcnN0X3BhcmFtIDYsIHJvdGF0ZUJ5IDYwLCBvZmZzZXQg
MTAsIGxhc3RfcGFyYW0gNCkKIFBBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9wZXJ0eSBmb3IgImN1
c3RvbS1taXgtbnVtYmVycy1ib3giIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0
bzogY3VzdG9tKHVybCh2ZXJ0ZXgtcm90YXRlLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgcm90
YXRlQnkgNDUsIGEgNS41LCBiIDExIDE2LjUsIGMgMjIgMjcuNSAzMywgZCAzOC41IDQ0IDQ5LjUp
CitQQVNTIC0gIndlYmtpdEZpbHRlciIgcHJvcGVydHkgZm9yICJjdXN0b20tbWl4LXRyYW5zZm9y
bXMtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IGN1c3RvbSh1cmwo
dmVydGV4LXRyYW5zZm9ybS1wYXJhbWV0ZXIudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCB0cmFu
c2Zvcm0gbWF0cml4KDEgMCAwIDEgMCAwKSkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3Nz
My9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1sIGIvTGF5b3V0VGVz
dHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1sCmluZGV4
IGExZWM4MjlhNDAyZDQ3YWRjMmEwMTI5NjRlN2NkYjAyNjNjOTRkNjEuLjAxODZmYTA1Yzc0MGY5
ZTFlODgyMzc0YmQ3NTVjZGQ1MjRkNDk3MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24uaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItYW5pbWF0aW9uLmh0bWwKQEAg
LTUyLDYgKzUyLDEwIEBACiAgICAgICAgICNjdXN0b20tbWl4LW51bWJlcnMtYm94IHsKICAgICAg
ICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBjdXN0b20tbWl4LW51bWJlcnMtYW5pbSAycyBsaW5l
YXI7CiAgICAgICAgIH0KKworICAgICAgICAjY3VzdG9tLW1peC10cmFuc2Zvcm1zLWJveCB7Cisg
ICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogY3VzdG9tLW1peC10cmFuc2Zvcm1zLWFuaW0g
MnMgbGluZWFyOworICAgICAgICB9CiAgICAgCiAgICAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBj
dXN0b20tZnJvbS1ub25lLWFuaW0gewogICAgICAgICAgICAgZnJvbSB7IC13ZWJraXQtZmlsdGVy
OiBub25lOyB9CkBAIC05Nyw2ICsxMDEsMTEgQEAKICAgICAgICAgICAgIGZyb20geyAtd2Via2l0
LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXJvdGF0ZS52cyksIHJvdGF0
ZUJ5IDAsIGEgMSwgYiAyIDMsIGMgNCA1IDYsIGQgNyA4IDkpOyB9CiAgICAgICAgICAgICB0byAg
IHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC1yb3RhdGUu
dnMpLCByb3RhdGVCeSA5MCwgYSAxMCwgYiAyMCAzMCwgYyA0MCA1MCA2MCwgZCA3MCA4MCA5MCk7
IH0KICAgICAgICAgfQorCisgICAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBjdXN0b20tbWl4LXRy
YW5zZm9ybXMtYW5pbSB7CisgICAgICAgICAgICBmcm9tIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3Rv
bSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSwgdHJhbnNm
b3JtIHJvdGF0ZVooLTEwZGVnKSk7IH0KKyAgICAgICAgICAgIHRvICAgeyAtd2Via2l0LWZpbHRl
cjogY3VzdG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXRyYW5zZm9ybS1wYXJhbWV0ZXIudnMp
LCB0cmFuc2Zvcm0gcm90YXRlWigxMGRlZykpOyB9CisgICAgICAgIH0KICAgICA8L3N0eWxlPgog
ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvY3VzdG9tLWZpbHRlci1wYXJzZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9hbmltYXRpb25zL3Jlc291cmNlcy9h
bmltYXRpb24tdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KQEAgLTExNyw3ICsxMjYsOCBAQAog
ICAgICAgICAgICAgWyJjdXN0b20tdG8tZGlmZi1wYXJhbXMtYW5pbSIsICAxLCAiY3VzdG9tLXRv
LWRpZmYtcGFyYW1zLWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHVybCh2ZXJ0ZXgtcm90
YXRlLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgcGFyYW0gMTAsIHJvdGF0ZUJ5IDYwLCBvZmZz
ZXQgMTAsIGFub3RoZXJfcGFyYW0gNSknLCA1XSwKIAogICAgICAgICAgICAgWyJjdXN0b20tbWl4
LXBhcmFtcy1hbmltIiwgIDEsICJjdXN0b20tbWl4LXBhcmFtcy1ib3giLCAid2Via2l0RmlsdGVy
IiwgJ2N1c3RvbSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHBh
cmFtIDEwLCBhbm90aGVyX3BhcmFtIDUsIGZpcnN0X3BhcmFtIDYsIHJvdGF0ZUJ5IDYwLCBvZmZz
ZXQgMTAsIGxhc3RfcGFyYW0gNCknLCA1XSwKLSAgICAgICAgICAgIFsiY3VzdG9tLW1peC1udW1i
ZXJzLWFuaW0iLCAgMSwgImN1c3RvbS1taXgtbnVtYmVycy1ib3giLCAid2Via2l0RmlsdGVyIiwg
J2N1c3RvbSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHJvdGF0
ZUJ5IDQ1LCBhIDUuNSwgYiAxMSAxNi41LCBjIDIyIDI3LjUgMzMsIGQgMzguNSA0NCA0OS41KScs
IDEwXQorICAgICAgICAgICAgWyJjdXN0b20tbWl4LW51bWJlcnMtYW5pbSIsICAxLCAiY3VzdG9t
LW1peC1udW1iZXJzLWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHVybCh2ZXJ0ZXgtcm90
YXRlLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgcm90YXRlQnkgNDUsIGEgNS41LCBiIDExIDE2
LjUsIGMgMjIgMjcuNSAzMywgZCAzOC41IDQ0IDQ5LjUpJywgMTBdLAorICAgICAgICAgICAgWyJj
dXN0b20tbWl4LXRyYW5zZm9ybXMtYW5pbSIsICAxLCAiY3VzdG9tLW1peC10cmFuc2Zvcm1zLWJv
eCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHVybCh2ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFtZXRl
ci52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHRyYW5zZm9ybSBtYXRyaXgoMSAwIDAgMSAwIDAp
KScsIDAuNV0KICAgICAgICAgXTsKICAgICAgICAgcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZh
bHVlcyk7CiAgICAgPC9zY3JpcHQ+CkBAIC0xMzIsNiArMTQyLDcgQEAKICAgICA8ZGl2IGNsYXNz
PSJib3giIGlkPSJjdXN0b20tdG8tZGlmZi1wYXJhbXMtYm94Ij48L2Rpdj4KICAgICA8ZGl2IGNs
YXNzPSJib3giIGlkPSJjdXN0b20tbWl4LXBhcmFtcy1ib3giPjwvZGl2PgogICAgIDxkaXYgY2xh
c3M9ImJveCIgaWQ9ImN1c3RvbS1taXgtbnVtYmVycy1ib3giPjwvZGl2PgorICAgIDxkaXYgY2xh
c3M9ImJveCIgaWQ9ImN1c3RvbS1taXgtdHJhbnNmb3Jtcy1ib3giPjwvZGl2PgogCiAgICAgPGRp
diBpZD0icmVzdWx0Ij4KICAgICA8L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9yZXNvdXJjZXMvY3VzdG9tLWZpbHRlci1wYXJzZXIuanMgYi9MYXlvdXRUZXN0cy9j
c3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2N1c3RvbS1maWx0ZXItcGFyc2VyLmpzCmluZGV4IDhhMzBi
NjI1OTFmNDA4OWIyYzg5MzBiYzllZjljYTliMGEzZTdhZDguLmM3NTM3YWM5MDdkNjNiOWZiMTYz
MzhjZjc5M2FmZTA3MzViNjU0YjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVy
cy9yZXNvdXJjZXMvY3VzdG9tLWZpbHRlci1wYXJzZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvY3Nz
My9maWx0ZXJzL3Jlc291cmNlcy9jdXN0b20tZmlsdGVyLXBhcnNlci5qcwpAQCAtNjQsNiArNjQs
MTEgQEAgZnVuY3Rpb24gbnVtYmVyKHRva2VuKQogICAgIHJldHVybiB0b2tlbi50eXBlID09ICJm
bG9hdCIgfHwgdG9rZW4udHlwZSA9PSAiaW50ZWdlciI7CiB9CiAKK2Z1bmN0aW9uIHRyYW5zZm9y
bSh0b2tlbikKK3sKKyAgICByZXR1cm4gdG9rZW4udHlwZSA9PSAia2V5d29yZCIgJiYgdG9rZW4u
dmFsdWUgPT0gInRyYW5zZm9ybSI7Cit9CisKIC8vIEhlbHBlciBjbGFzcyB0byBpdGVyYXRlIG9u
IHRoZSB0b2tlbiBzdHJlYW0uIEl0IHdpbGwgYWRkIGFuICJlbmQiCiAvLyB0b2tlbiBhdCB0aGUg
ZW5kIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHVzZSB0aGUgImFoZWFkIiBmdW5jdGlvbgogLy8gd2l0
aG91dCBjaGVja2luZyBpZiBpdCdzIHRoZSBsYXN0IHRva2VuIGluIHRoZSBzdHJlYW0uCkBAIC0x
MTQsNiArMTE5LDE4IEBAIGZ1bmN0aW9uIHBhcnNlRnVuY3Rpb24obSkKICAgICByZXR1cm4gZnVu
Y3Rpb25PYmplY3Q7CiB9CiAKK2Z1bmN0aW9uIHBhcnNlTWF0cml4KG0pCit7CisgICAgdmFyIG1h
dHJpeE9iamVjdCA9IHsKKyAgICAgICAgdHlwZTogIm1hdHJpeCIsCisgICAgfTsKKyAgICBtLnNr
aXAoKTsKKyAgICBtLnNraXAoKTsKKyAgICBtYXRyaXhPYmplY3QuYXJndW1lbnRzID0gcGFyc2VM
aXN0KG0sIFsiKSIsICJlbmQiXSk7CisgICAgbS5za2lwKCk7CisgICAgcmV0dXJuIG1hdHJpeE9i
amVjdDsKK30KKwogLy8gQ3JlYXRlcyBhIG5ldyAicGFyYW1ldGVyIiBub2RlLiBJdCBleHBlY3Rz
IHRoYXQgdGhlIGN1cnJlbnQgdG9rZW4gaXMgdGhlIHBhcmFtZXRlciBuYW1lLgogLy8gSXQgY29u
c3VtZXMgZXZlcnl0aGluZyBiZWZvcmUgdGhlIGZvbGxvd2luZyBjb21tYS4KIGZ1bmN0aW9uIHBh
cnNlUGFyYW1ldGVyKG0pCkBAIC0xMjksNyArMTQ2LDcgQEAgZnVuY3Rpb24gcGFyc2VQYXJhbWV0
ZXIobSkKIAogLy8gQ29uc3VtZXMgYSBsaXN0IG9mIHRva2VucyBiZWZvcmUgcmVhY2hpbmcgdGhl
ICJlbmRUb2tlbiIgYW5kIHJldHVybnMgYW4gYXJyYXkgd2l0aCBhbGwgdGhlIHBhcnNlZCBpdGVt
cy4KIC8vIE1ha2VzIHRoZSBmb2xsb3dpbmcgYXNzdW1wdGlvbnM6Ci0vLyAtIGlmIGEga2V5d29y
ZCBpcyBmb2xsb3dlZCBieSAiKCIgdGhlbiBpdCBpcyBhIHN0YXJ0IG9mIGZ1bmN0aW9uCisvLyAt
IGlmIGEga2V5d29yZCBpcyBmb2xsb3dlZCBieSAiKCIgdGhlbiBpdCBpcyBhIHN0YXJ0IG9mIGZ1
bmN0aW9uLCB1bmxlc3MgaXQgaXMgYSBtYXRyaXguCiAvLyAtIGlmIGEga2V5d29yZCBpcyBub3Qg
Zm9sbG93ZWQgYnkgIiwiIGl0IGlzIGEgcGFyYW1ldGVyCiAvLyBLZXl3b3JkcyB0aGF0IGRvIG5v
dCBtYXRjaCBlaXRoZXIgb2YgdGhlIHByZXZpb3VzIHJ1bGVzIGFuZCB0b2tlbnMgbGlrZSBudW1i
ZXIgYW5kIHVybCBhcmUganVzdCBjbG9uZWQuCiBmdW5jdGlvbiBwYXJzZUxpc3QobSwgZW5kVG9r
ZW4pCkBAIC0xMzcsOSArMTU0LDE2IEBAIGZ1bmN0aW9uIHBhcnNlTGlzdChtLCBlbmRUb2tlbikK
ICAgICB2YXIgcmVzdWx0ID0gW10sIHRva2VuOwogICAgIHdoaWxlICgodG9rZW4gPSBtLmN1cnJl
bnQoKSkgJiYgIXRva2VuLmlzQShlbmRUb2tlbikpIHsKICAgICAgICAgaWYgKHRva2VuLmlzQSgi
a2V5d29yZCIpKSB7Ci0gICAgICAgICAgICBpZiAobS5haGVhZCgpLmlzQSgiKCIpKQorICAgICAg
ICAgICAgaWYgKG0uYWhlYWQoKS5pc0EoIigiKSAmJiB0b2tlbi52YWx1ZSAhPSAibWF0cml4IikK
ICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChwYXJzZUZ1bmN0aW9uKG0pKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKG0uYWhlYWQoKS5pc0EoIiwiLCBlbmRUb2tlbikpIHsKKyAgICAgICAgICAg
IGVsc2UgaWYgKG0uYWhlYWQoKS5pc0EoIigiKSAmJiB0b2tlbi52YWx1ZSA9PSAibWF0cml4Iikg
eworICAgICAgICAgICAgICAgIHZhciBsID0gcGFyc2VNYXRyaXgobSk7CisgICAgICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsLmFyZ3VtZW50cy5sZW5ndGg7ICsraSkKKyAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LnB1c2goeworICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTog
Im51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbC5hcmd1bWVudHNbaV0u
dmFsdWUKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG0u
YWhlYWQoKS5pc0EoIiwiLCBlbmRUb2tlbikpIHsKICAgICAgICAgICAgICAgICByZXN1bHQucHVz
aCh7CiAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJrZXl3b3JkIiwgCiAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlOiBtLnNraXAoKS52YWx1ZQpAQCAtMTUxLDYgKzE3NSwxMSBAQCBmdW5jdGlv
biBwYXJzZUxpc3QobSwgZW5kVG9rZW4pCiAgICAgICAgICAgICAgICAgdHlwZTogIm51bWJlciIs
CiAgICAgICAgICAgICAgICAgdmFsdWU6IG0uc2tpcCgpLnZhbHVlCiAgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSBlbHNlIGlmICh0b2tlbi5pc0EodHJhbnNmb3JtKSkgeworICAgICAgICAgICAg
cmVzdWx0LnB1c2goeworICAgICAgICAgICAgICAgIHR5cGU6ICJ0cmFuc2Zvcm0iLAorICAgICAg
ICAgICAgICAgIHZhbHVlOiBtLnNraXAoKS52YWx1ZQorICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0gZWxzZSBpZiAodG9rZW4uaXNBKCJ1cmwiKSkgewogICAgICAgICAgICAgcmVzdWx0LnB1c2go
ewogICAgICAgICAgICAgICAgIHR5cGU6ICJ1cmwiLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161310</attachid>
            <date>2012-08-29 14:08:55 -0700</date>
            <delta_ts>2012-08-29 14:16:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94980-20120829170655.patch</filename>
            <type>text/plain</type>
            <size>45735</size>
            <attacher name="Joshua Netterfield">jnetterfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgwZDkwYzEzZWZiMWEz
ODg2MzNkNWRiNTVjY2RkYjAxNWE2OTIxNS4uYmUxZDZmYmRhMjc2NTc3NmM0NjU5YjNiZjkyM2Yw
NTMzMGVkZWM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTA4LTI5ICBKb3No
dWEgTmV0dGVyZmllbGQgIDxqbmV0dGVyZmllbGRAcmltLmNvbT4KKworICAgICAgICBbQ1NTIFNo
YWRlcnNdIEltcGxlbWVudCB0cmFuc2Zvcm0gcGFyYW1ldGVyIGFuaW1hdGlvbnMgZm9yIENTUyBD
dXN0b20gRmlsdGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTQ5ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBY2NvcmRpbmcgdG8gU2VjdGlvbiAzOS4yIG9mIEZpbHRlciBFZmZlY3RzIDEuMCBFZGl0
b3IncyBkcmFmdAorICAgICAgICAoaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9GWFRGL3Jhdy1maWxl
L3RpcC9maWx0ZXJzL2luZGV4Lmh0bWwpLCBhbmltYXRpb25zCisgICAgICAgIG9mIHRyYW5zZm9y
bXMgc2hvdWxkIGJlIGhhbmRsZWQgZm9sbG93aW5nIHRoZSBDU1MzIHRyYW5zZm9ybSBpbnRlcnBv
bGF0aW9uCisgICAgICAgIHJ1bGVzLiBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhpcyBmdW5jdGlv
bmFsaXR5LgorCisgICAgICAgIE1pbm9yIGNoYW5nZXMgdG8gQ1NTUHJvcGVydHlBbmltYXRpb24s
IEN1c3RvbUZpbHRlclBhcmFtZXRlciBhbmQKKyAgICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
IGFyZSBuZWNlc3NhcnkgdG8gYWNjb21wbGlzaCB0aGlzIGNsZWFubHkuCisKKyAgICAgICAgVGVz
dHM6IEFkZGVkIGEgdHJhbnNmb3JtIHRlc3QgdG8gZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRl
ci1hbmltYXRpb24uaHRtbAorCisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlB
bmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlBbmltYXRpb246OmJs
ZW5kRnVuYyk6IE1hZGUgY2xhc3Mtc3RhdGljIGluc3RlYWQgb2YgZmlsZS1zdGF0aWMKKyAgICAg
ICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlcjo6YmxlbmQpOiBDYWxsIENTU1Byb3BlcnR5QW5p
bWF0aW9uOjpibGVuZEZ1bmMgaW5zdGVhZCBvZiBibGVuZEZ1bmMKKyAgICAgICAgKFdlYkNvcmU6
OlJlZkNvdW50ZWRQcm9wZXJ0eVdyYXBwZXI6OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBy
b3BlcnR5V3JhcHBlckNvbG9yOjpibGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdy
YXBwZXJBY2NlbGVyYXRlZE9wYWNpdHk6OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3Bl
cnR5V3JhcHBlckFjY2VsZXJhdGVkVHJhbnNmb3JtOjpibGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpQcm9wZXJ0eVdyYXBwZXJBY2NlbGVyYXRlZEZpbHRlcjo6YmxlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UHJvcGVydHlXcmFwcGVyU2hhZG93OjpibGVuZFNpbXBsZU9yTWF0Y2hlZFNoYWRvd0xp
c3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNoYWRvdzo6YmxlbmRNaXNt
YXRjaGVkU2hhZG93TGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyTWF5
YmVJbnZhbGlkQ29sb3I6OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllclByb3Bl
cnR5V3JhcHBlcjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyUmVmQ291bnRl
ZFByb3BlcnR5V3JhcHBlcjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFw
cGVyRmxleDo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyU1ZHUGFp
bnQ6OmJsZW5kKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5oOiBNYWRlIGJsZW5kRnVuYyBjbGFzcy1zdGF0aWMgaW5zdGVhZCBvZiBmaWxlLXN0YXRpYwor
ICAgICAgICAoQ1NTUHJvcGVydHlBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI6OmJsZW5kKTogTm93IGV4cGVjdHMgYW4g
QW5pbWF0aW9uQmFzZSBwYXJhbWV0ZXIKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEN1
c3RvbUZpbHRlclBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlclBhcmFtZXRlci5oOgorICAgICAgICAoQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclRyYW5zZm9y
bVBhcmFtZXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFy
YW1ldGVyOjpibGVuZCk6IEltcGxlbWVudCBibGVuZGluZyBmb3IgdHJhbnNmb3JtcworICAgICAg
ICAoQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOiBOb3cgZXhwZWN0
cyBhbiBBbmltYXRpb25CYXNlIHBhcmFtZXRlcgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb21w
b25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
R2FtbWFGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkJsdXJGaWx0
ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRyb3BTaGFkb3dGaWx0ZXJP
cGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJPcGVyYXRpb246OkZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAoQmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKEdhbW1hRmlsdGVyT3BlcmF0aW9uKToKKyAg
ICAgICAgKEJsdXJGaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAoRHJvcFNoYWRvd0ZpbHRlck9w
ZXJhdGlvbik6CisKIDIwMTItMDgtMjkgIFJhZmFlbCBCcmFuZGFvICA8cmFmYWVsLmxvYm9Ab3Bl
bmJvc3NhLm9yZz4KIAogICAgICAgICBVc2UgQW5pbWF0aW9uOjpJdGVyYXRpb25Db3VudEluZmlu
aXRlIGluc3RlYWQgb2YgLTEgd2hlbiBzZXR0aW5nIGl0ZXJhdGlvbiBjb3VudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3Bw
CmluZGV4IGYyYTgxY2IwYzVjMWY3NGM4MmMyMzZkNDE5NDc4NGZlYzRmZTc0YTMuLmNkZjc5OTUz
YWM1YTVhNDBiYzA0MjVjOWVkMDgzZmNhYzJlYjJkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTUxLDQ5
ICs1MSw0OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxpbmUgaW50IGJs
ZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgaW50IGZyb20sIGludCB0bywgZG91YmxlIHBy
b2dyZXNzKQoraW50IENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoY29uc3QgQW5pbWF0
aW9uQmFzZSosIGludCBmcm9tLCBpbnQgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICByZXR1
cm4gYmxlbmQoZnJvbSwgdG8sIHByb2dyZXNzKTsKIH0KIAotc3RhdGljIGlubGluZSB1bnNpZ25l
ZCBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVk
IHRvLCBkb3VibGUgcHJvZ3Jlc3MpCit1bnNpZ25lZCBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6Ymxl
bmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywg
ZG91YmxlIHByb2dyZXNzKQogewogICAgIHJldHVybiBibGVuZChmcm9tLCB0bywgcHJvZ3Jlc3Mp
OwogfQogCi1zdGF0aWMgaW5saW5lIGRvdWJsZSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFz
ZSosIGRvdWJsZSBmcm9tLCBkb3VibGUgdG8sIGRvdWJsZSBwcm9ncmVzcykKK2RvdWJsZSBDU1NQ
cm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBkb3VibGUg
ZnJvbSwgZG91YmxlIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAgICAgcmV0dXJuIGJsZW5kKGZy
b20sIHRvLCBwcm9ncmVzcyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgZmxvYXQgYmxlbmRGdW5jKGNv
bnN0IEFuaW1hdGlvbkJhc2UqLCBmbG9hdCBmcm9tLCBmbG9hdCB0bywgZG91YmxlIHByb2dyZXNz
KQorZmxvYXQgQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25C
YXNlKiwgZmxvYXQgZnJvbSwgZmxvYXQgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICByZXR1
cm4gbmFycm93UHJlY2lzaW9uVG9GbG9hdChmcm9tICsgKHRvIC0gZnJvbSkgKiBwcm9ncmVzcyk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgQ29sb3IgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2Uq
LCBjb25zdCBDb2xvciYgZnJvbSwgY29uc3QgQ29sb3ImIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCitD
b2xvciBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2Uq
LCBjb25zdCBDb2xvciYgZnJvbSwgY29uc3QgQ29sb3ImIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7
CiAgICAgcmV0dXJuIGJsZW5kKGZyb20sIHRvLCBwcm9ncmVzcyk7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgTGVuZ3RoIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgTGVuZ3RoJiBm
cm9tLCBjb25zdCBMZW5ndGgmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCitMZW5ndGggQ1NTUHJvcGVy
dHlBbmltYXRpb246OmJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgTGVuZ3Ro
JiBmcm9tLCBjb25zdCBMZW5ndGgmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAgICAgcmV0dXJu
IHRvLmJsZW5kKGZyb20sIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocHJvZ3Jlc3MpKTsKIH0KIAot
c3RhdGljIGlubGluZSBMZW5ndGhTaXplIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBh
bmltLCBjb25zdCBMZW5ndGhTaXplJiBmcm9tLCBjb25zdCBMZW5ndGhTaXplJiB0bywgZG91Ymxl
IHByb2dyZXNzKQorTGVuZ3RoU2l6ZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRGdW5jKGNv
bnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IExlbmd0aFNpemUmIGZyb20sIGNvbnN0IExl
bmd0aFNpemUmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAgICAgcmV0dXJuIExlbmd0aFNpemUo
YmxlbmRGdW5jKGFuaW0sIGZyb20ud2lkdGgoKSwgdG8ud2lkdGgoKSwgcHJvZ3Jlc3MpLAogICAg
ICAgICAgICAgICAgICAgICAgIGJsZW5kRnVuYyhhbmltLCBmcm9tLmhlaWdodCgpLCB0by5oZWln
aHQoKSwgcHJvZ3Jlc3MpKTsKIH0KIAotc3RhdGljIGlubGluZSBJbnRTaXplIGJsZW5kRnVuYyhj
b25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBJbnRTaXplJiBmcm9tLCBjb25zdCBJbnRT
aXplJiB0bywgZG91YmxlIHByb2dyZXNzKQorSW50U2l6ZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6
YmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IEludFNpemUmIGZyb20s
IGNvbnN0IEludFNpemUmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAgICAgcmV0dXJuIEludFNp
emUoYmxlbmRGdW5jKGFuaW0sIGZyb20ud2lkdGgoKSwgdG8ud2lkdGgoKSwgcHJvZ3Jlc3MpLAog
ICAgICAgICAgICAgICAgICAgIGJsZW5kRnVuYyhhbmltLCBmcm9tLmhlaWdodCgpLCB0by5oZWln
aHQoKSwgcHJvZ3Jlc3MpKTsKIH0KIAotc3RhdGljIGlubGluZSBTaGFkb3dTdHlsZSBibGVuZEZ1
bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgU2hhZG93U3R5bGUgZnJvbSwgU2hhZG93U3R5
bGUgdG8sIGRvdWJsZSBwcm9ncmVzcykKK1NoYWRvd1N0eWxlIENTU1Byb3BlcnR5QW5pbWF0aW9u
OjpibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgU2hhZG93U3R5bGUgZnJvbSwg
U2hhZG93U3R5bGUgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICBpZiAoZnJvbSA9PSB0bykK
ICAgICAgICAgcmV0dXJuIHRvOwpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBpbmxpbmUgU2hh
ZG93U3R5bGUgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIFNoYWRvd1N0eWxl
IGZyb20sCiAgICAgcmV0dXJuIHJlc3VsdCA+IDAgPyBOb3JtYWwgOiBJbnNldDsKIH0KIAotc3Rh
dGljIGlubGluZSBQYXNzT3duUHRyPFNoYWRvd0RhdGE+IGJsZW5kRnVuYyhjb25zdCBBbmltYXRp
b25CYXNlKiBhbmltLCBjb25zdCBTaGFkb3dEYXRhKiBmcm9tLCBjb25zdCBTaGFkb3dEYXRhKiB0
bywgZG91YmxlIHByb2dyZXNzKQorUGFzc093blB0cjxTaGFkb3dEYXRhPiBDU1NQcm9wZXJ0eUFu
aW1hdGlvbjo6YmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IFNoYWRv
d0RhdGEqIGZyb20sIGNvbnN0IFNoYWRvd0RhdGEqIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAg
ICAgQVNTRVJUKGZyb20gJiYgdG8pOwogICAgIGlmIChmcm9tLT5zdHlsZSgpICE9IHRvLT5zdHls
ZSgpKQpAQCAtMTE4LDcgKzExOCw3IEBAIHN0YXRpYyBpbmxpbmUgUGFzc093blB0cjxTaGFkb3dE
YXRhPiBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgY29uc3QKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmQoZnJvbS0+Y29sb3IoKSwgdG8tPmNvbG9y
KCksIHByb2dyZXNzKSkpOwogfQogCi1zdGF0aWMgaW5saW5lIFRyYW5zZm9ybU9wZXJhdGlvbnMg
YmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbnMmIGZyb20sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHRvLCBkb3VibGUgcHJvZ3Jl
c3MpCitUcmFuc2Zvcm1PcGVyYXRpb25zIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMo
Y29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJv
bSwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAg
ICBUcmFuc2Zvcm1PcGVyYXRpb25zIHJlc3VsdDsKIApAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRp
YyBpbmxpbmUgVHJhbnNmb3JtT3BlcmF0aW9ucyBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFz
ZSogYW5pbSwgY29uc3QgVHJhCiB9CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi1zdGF0aWMg
aW5saW5lIEZpbHRlck9wZXJhdGlvbnMgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFu
aW0sIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZyb20sIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IHRvLCBkb3VibGUgcHJvZ3Jlc3MpCitGaWx0ZXJPcGVyYXRpb25zIENTU1Byb3BlcnR5QW5pbWF0
aW9uOjpibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYgZnJvbSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdG8sIGRvdWJsZSBwcm9ncmVz
cykKIHsKICAgICBGaWx0ZXJPcGVyYXRpb25zIHJlc3VsdDsKIApAQCAtMTcwLDcgKzE3MCw3IEBA
IHN0YXRpYyBpbmxpbmUgRmlsdGVyT3BlcmF0aW9ucyBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9u
QmFzZSogYW5pbSwgY29uc3QgRmlsdGVyCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBmcm9tT3Ag
PSAoaSA8IGZyb21TaXplKSA/IGZyb20ub3BlcmF0aW9ucygpW2ldLmdldCgpIDogMDsKICAgICAg
ICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IHRvT3AgPSAoaSA8IHRvU2l6ZSkgPyB0by5v
cGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwotICAgICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJh
dGlvbj4gYmxlbmRlZE9wID0gdG9PcCA/IHRvT3AtPmJsZW5kKGZyb21PcC5nZXQoKSwgcHJvZ3Jl
c3MpIDogKGZyb21PcCA/IGZyb21PcC0+YmxlbmQoMCwgcHJvZ3Jlc3MsIHRydWUpIDogUGFzc1Jl
ZlB0cjxGaWx0ZXJPcGVyYXRpb24+KDApKTsKKyAgICAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVy
YXRpb24+IGJsZW5kZWRPcCA9IHRvT3AgPyB0b09wLT5ibGVuZChhbmltLCBmcm9tT3AuZ2V0KCks
IHByb2dyZXNzKSA6IChmcm9tT3AgPyBmcm9tT3AtPmJsZW5kKGFuaW0sIDAsIHByb2dyZXNzLCB0
cnVlKSA6IFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPigwKSk7CiAgICAgICAgICAgICBpZiAo
YmxlbmRlZE9wKQogICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJs
ZW5kZWRPcCk7CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMg
aW5saW5lIEZpbHRlck9wZXJhdGlvbnMgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFu
aW0sIGNvbnN0IEZpbHRlcgogfQogI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykKIAotc3Rh
dGljIGlubGluZSBFVmlzaWJpbGl0eSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5p
bSwgRVZpc2liaWxpdHkgZnJvbSwgRVZpc2liaWxpdHkgdG8sIGRvdWJsZSBwcm9ncmVzcykKK0VW
aXNpYmlsaXR5IENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9u
QmFzZSogYW5pbSwgRVZpc2liaWxpdHkgZnJvbSwgRVZpc2liaWxpdHkgdG8sIGRvdWJsZSBwcm9n
cmVzcykKIHsKICAgICAvLyBBbnkgbm9uLXplcm8gcmVzdWx0IG1lYW5zIHdlIGNvbnNpZGVyIHRo
ZSBvYmplY3QgdG8gYmUgdmlzaWJsZS4gT25seSBhdCAwIGRvIHdlIGNvbnNpZGVyIHRoZSBvYmpl
Y3QgdG8gYmUKICAgICAvLyBpbnZpc2libGUuIFRoZSBpbnZpc2libGUgdmFsdWUgd2UgdXNlIChI
SURERU4gdnMuIENPTExBUFNFKSBkZXBlbmRzIG9uIHRoZSBzcGVjaWZpZWQgZnJvbS90byB2YWx1
ZXMuCkBAIC0yMDMsNyArMjAzLDcgQEAgc3RhdGljIGlubGluZSBFVmlzaWJpbGl0eSBibGVuZEZ1
bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgRVZpc2liaWxpdHkgZnJvbSwKICAgICByZXR1
cm4gcmVzdWx0ID4gMC4gPyBWSVNJQkxFIDogKHRvICE9IFZJU0lCTEUgPyB0byA6IGZyb20pOwog
fQogCi1zdGF0aWMgaW5saW5lIExlbmd0aEJveCBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFz
ZSogYW5pbSwgY29uc3QgTGVuZ3RoQm94JiBmcm9tLCBjb25zdCBMZW5ndGhCb3gmIHRvLCBkb3Vi
bGUgcHJvZ3Jlc3MpCitMZW5ndGhCb3ggQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kRnVuYyhj
b25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBMZW5ndGhCb3gmIGZyb20sIGNvbnN0IExl
bmd0aEJveCYgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICAvLyBMZW5ndGggdHlwZXMgaGF2
ZSB0byBtYXRjaCB0byBhbmltYXRlCiAgICAgaWYgKGZyb20udG9wKCkudHlwZSgpICE9IHRvLnRv
cCgpLnR5cGUoKQpAQCAtMjIwLDcgKzIyMCw3IEBAIHN0YXRpYyBpbmxpbmUgTGVuZ3RoQm94IGJs
ZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBMZW5ndGhCb3gmIGZyCiB9
CiAKICNpZiBFTkFCTEUoU1ZHKQotc3RhdGljIGlubGluZSBTVkdMZW5ndGggYmxlbmRGdW5jKGNv
bnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBTVkdMZW5ndGgmIGZyb20sIGNvbnN0IFNWR0xlbmd0
aCYgdG8sIGRvdWJsZSBwcm9ncmVzcykKK1NWR0xlbmd0aCBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6
YmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBTVkdMZW5ndGgmIGZyb20sIGNv
bnN0IFNWR0xlbmd0aCYgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICByZXR1cm4gdG8uYmxl
bmQoZnJvbSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChwcm9ncmVzcykpOwogfQpAQCAtMjQ3LDcg
KzI0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBjcm9zc2ZhZGVC
bGVuZChjb25zdCBBbmltYXRpb25CYXNlKiwgU3R5bGVDCiAgICAgcmV0dXJuIFN0eWxlR2VuZXJh
dGVkSW1hZ2U6OmNyZWF0ZShjcm9zc2ZhZGVWYWx1ZS5nZXQoKSk7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSog
YW5pbSwgU3R5bGVJbWFnZSogZnJvbSwgU3R5bGVJbWFnZSogdG8sIGRvdWJsZSBwcm9ncmVzcykK
K1Bhc3NSZWZQdHI8U3R5bGVJbWFnZT4gQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kRnVuYyhj
b25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBTdHlsZUltYWdlKiBmcm9tLCBTdHlsZUltYWdlKiB0
bywgZG91YmxlIHByb2dyZXNzKQogewogICAgIGlmICghZnJvbSB8fCAhdG8pCiAgICAgICAgIHJl
dHVybiB0bzsKQEAgLTI2MCw3ICsyNjAsNyBAQCBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8U3R5
bGVJbWFnZT4gYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIFN0eWxlSQogICAg
IHJldHVybiB0bzsKIH0KIAotc3RhdGljIGlubGluZSBOaW5lUGllY2VJbWFnZSBibGVuZEZ1bmMo
Y29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgY29uc3QgTmluZVBpZWNlSW1hZ2UmIGZyb20sIGNv
bnN0IE5pbmVQaWVjZUltYWdlJiB0bywgZG91YmxlIHByb2dyZXNzKQorTmluZVBpZWNlSW1hZ2Ug
Q1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmlt
LCBjb25zdCBOaW5lUGllY2VJbWFnZSYgZnJvbSwgY29uc3QgTmluZVBpZWNlSW1hZ2UmIHRvLCBk
b3VibGUgcHJvZ3Jlc3MpCiB7CiAgICAgaWYgKCFmcm9tLmhhc0ltYWdlKCkgfHwgIXRvLmhhc0lt
YWdlKCkpCiAgICAgICAgIHJldHVybiB0bzsKQEAgLTM2NCw3ICszNjQsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgUmVuZGVy
U3R5bGUqIGRzdCwgY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiLCBk
b3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiAgICAgewotICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKGJs
ZW5kRnVuYyhhbmltLCAoYS0+KlByb3BlcnR5V3JhcHBlckdldHRlcjxUPjo6bV9nZXR0ZXIpKCks
IChiLT4qUHJvcGVydHlXcmFwcGVyR2V0dGVyPFQ+OjptX2dldHRlcikoKSwgcHJvZ3Jlc3MpKTsK
KyAgICAgICAgKGRzdC0+Km1fc2V0dGVyKShDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRGdW5j
KGFuaW0sIChhLT4qUHJvcGVydHlXcmFwcGVyR2V0dGVyPFQ+OjptX2dldHRlcikoKSwgKGItPipQ
cm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VD46Om1fZ2V0dGVyKSgpLCBwcm9ncmVzcykpOwogICAgIH0K
IAogcHJvdGVjdGVkOgpAQCAtMzgyLDcgKzM4Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBSZW5kZXJTdHlsZSogZHN0LCBj
b25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9ncmVz
cykgY29uc3QKICAgICB7Ci0gICAgICAgIChkc3QtPiptX3NldHRlcikoYmxlbmRGdW5jKGFuaW0s
IChhLT4qUHJvcGVydHlXcmFwcGVyR2V0dGVyPFQqPjo6bV9nZXR0ZXIpKCksIChiLT4qUHJvcGVy
dHlXcmFwcGVyR2V0dGVyPFQqPjo6bV9nZXR0ZXIpKCksIHByb2dyZXNzKSk7CisgICAgICAgIChk
c3QtPiptX3NldHRlcikoQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kRnVuYyhhbmltLCAoYS0+
KlByb3BlcnR5V3JhcHBlckdldHRlcjxUKj46Om1fZ2V0dGVyKSgpLCAoYi0+KlByb3BlcnR5V3Jh
cHBlckdldHRlcjxUKj46Om1fZ2V0dGVyKSgpLCBwcm9ncmVzcykpOwogICAgIH0KIAogcHJvdGVj
dGVkOgpAQCAtNDIyLDcgKzQyMiw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBibGVu
ZChjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBSZW5kZXJTdHlsZSogZHN0LCBjb25zdCBSZW5k
ZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3QK
ICAgICB7Ci0gICAgICAgIChkc3QtPiptX3NldHRlcikoYmxlbmRGdW5jKGFuaW0sIChhLT4qUHJv
cGVydHlXcmFwcGVyR2V0dGVyPENvbG9yPjo6bV9nZXR0ZXIpKCksIChiLT4qUHJvcGVydHlXcmFw
cGVyR2V0dGVyPENvbG9yPjo6bV9nZXR0ZXIpKCksIHByb2dyZXNzKSk7CisgICAgICAgIChkc3Qt
PiptX3NldHRlcikoQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kRnVuYyhhbmltLCAoYS0+KlBy
b3BlcnR5V3JhcHBlckdldHRlcjxDb2xvcj46Om1fZ2V0dGVyKSgpLCAoYi0+KlByb3BlcnR5V3Jh
cHBlckdldHRlcjxDb2xvcj46Om1fZ2V0dGVyKSgpLCBwcm9ncmVzcykpOwogICAgIH0KIAogcHJv
dGVjdGVkOgpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHB1YmxpYzoKICAgICAgICAgZmxvYXQgZnJvbU9w
YWNpdHkgPSBhLT5vcGFjaXR5KCk7CiAKICAgICAgICAgLy8gVGhpcyBtYWtlcyBzdXJlIHdlIHB1
dCB0aGUgb2JqZWN0IGJlaW5nIGFuaW1hdGVkIGludG8gYSBSZW5kZXJMYXllciBkdXJpbmcgdGhl
IGFuaW1hdGlvbgotICAgICAgICBkc3QtPnNldE9wYWNpdHkoYmxlbmRGdW5jKGFuaW0sIChmcm9t
T3BhY2l0eSA9PSAxKSA/IDAuOTk5OTk5ZiA6IGZyb21PcGFjaXR5LCBiLT5vcGFjaXR5KCksIHBy
b2dyZXNzKSk7CisgICAgICAgIGRzdC0+c2V0T3BhY2l0eShDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6
YmxlbmRGdW5jKGFuaW0sIChmcm9tT3BhY2l0eSA9PSAxKSA/IDAuOTk5OTk5ZiA6IGZyb21PcGFj
aXR5LCBiLT5vcGFjaXR5KCksIHByb2dyZXNzKSk7CiAgICAgfQogfTsKIApAQCAtNDU5LDcgKzQ1
OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBibGVuZChjb25zdCBBbmltYXRpb25C
YXNlKiBhbmltLCBSZW5kZXJTdHlsZSogZHN0LCBjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3Qg
UmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3QKICAgICB7Ci0gICAgICAgIGRz
dC0+c2V0VHJhbnNmb3JtKGJsZW5kRnVuYyhhbmltLCBhLT50cmFuc2Zvcm0oKSwgYi0+dHJhbnNm
b3JtKCksIHByb2dyZXNzKSk7CisgICAgICAgIGRzdC0+c2V0VHJhbnNmb3JtKENTU1Byb3BlcnR5
QW5pbWF0aW9uOjpibGVuZEZ1bmMoYW5pbSwgYS0+dHJhbnNmb3JtKCksIGItPnRyYW5zZm9ybSgp
LCBwcm9ncmVzcykpOwogICAgIH0KIH07CiAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgUmVuZGVy
U3R5bGUqIGRzdCwgY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiLCBk
b3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiAgICAgewotICAgICAgICBkc3QtPnNldEZpbHRlcihibGVu
ZEZ1bmMoYW5pbSwgYS0+ZmlsdGVyKCksIGItPmZpbHRlcigpLCBwcm9ncmVzcykpOworICAgICAg
ICBkc3QtPnNldEZpbHRlcihDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRGdW5jKGFuaW0sIGEt
PmZpbHRlcigpLCBiLT5maWx0ZXIoKSwgcHJvZ3Jlc3MpKTsKICAgICB9CiB9OwogI2VuZGlmCkBA
IC01NjUsNyArNTY1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEq
IHNyY1NoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHNoYWRvd0EsIHNoYWRvd0IpOwogICAgICAg
ICAgICAgY29uc3QgU2hhZG93RGF0YSogZHN0U2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoc2hh
ZG93Qiwgc2hhZG93QSk7CiAKLSAgICAgICAgICAgIE93blB0cjxTaGFkb3dEYXRhPiBibGVuZGVk
U2hhZG93ID0gYmxlbmRGdW5jKGFuaW0sIHNyY1NoYWRvdywgZHN0U2hhZG93LCBwcm9ncmVzcyk7
CisgICAgICAgICAgICBPd25QdHI8U2hhZG93RGF0YT4gYmxlbmRlZFNoYWRvdyA9IENTU1Byb3Bl
cnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoYW5pbSwgc3JjU2hhZG93LCBkc3RTaGFkb3csIHByb2dy
ZXNzKTsKICAgICAgICAgICAgIFNoYWRvd0RhdGEqIGJsZW5kZWRTaGFkb3dQdHIgPSBibGVuZGVk
U2hhZG93LmdldCgpOwogCiAgICAgICAgICAgICBpZiAoIWxhc3RTaGFkb3cpCkBAIC02MDgsNyAr
NjA4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNyY1NoYWRv
dyA9IHNoYWRvd0ZvckJsZW5kaW5nKGZyb21TaGFkb3csIHRvU2hhZG93KTsKICAgICAgICAgICAg
IGNvbnN0IFNoYWRvd0RhdGEqIGRzdFNoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHRvU2hhZG93
LCBmcm9tU2hhZG93KTsKIAotICAgICAgICAgICAgT3duUHRyPFNoYWRvd0RhdGE+IGJsZW5kZWRT
aGFkb3cgPSBibGVuZEZ1bmMoYW5pbSwgc3JjU2hhZG93LCBkc3RTaGFkb3csIHByb2dyZXNzKTsK
KyAgICAgICAgICAgIE93blB0cjxTaGFkb3dEYXRhPiBibGVuZGVkU2hhZG93ID0gQ1NTUHJvcGVy
dHlBbmltYXRpb246OmJsZW5kRnVuYyhhbmltLCBzcmNTaGFkb3csIGRzdFNoYWRvdywgcHJvZ3Jl
c3MpOwogICAgICAgICAgICAgLy8gSW5zZXJ0IGF0IHRoZSBzdGFydCBvZiB0aGUgbGlzdCB0byBw
cmVzZXJ2ZSB0aGUgb3JkZXIuCiAgICAgICAgICAgICBibGVuZGVkU2hhZG93LT5zZXROZXh0KG5l
d1NoYWRvd0RhdGEucmVsZWFzZSgpKTsKICAgICAgICAgICAgIG5ld1NoYWRvd0RhdGEgPSBibGVu
ZGVkU2hhZG93LnJlbGVhc2UoKTsKQEAgLTY1OCw3ICs2NTgsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBmcm9tQ29sb3IgPSBhLT5jb2xvcigpOwogICAgICAgICBpZiAoIXRvQ29sb3IuaXNWYWxp
ZCgpKQogICAgICAgICAgICAgdG9Db2xvciA9IGItPmNvbG9yKCk7Ci0gICAgICAgIChkc3QtPipt
X3NldHRlcikoYmxlbmRGdW5jKGFuaW0sIGZyb21Db2xvciwgdG9Db2xvciwgcHJvZ3Jlc3MpKTsK
KyAgICAgICAgKGRzdC0+Km1fc2V0dGVyKShDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRGdW5j
KGFuaW0sIGZyb21Db2xvciwgdG9Db2xvciwgcHJvZ3Jlc3MpKTsKICAgICB9CiAKIHByaXZhdGU6
CkBAIC03NDcsNyArNzQ3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGJsZW5kKGNv
bnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIEZpbGxMYXllciogZHN0LCBjb25zdCBGaWxsTGF5ZXIq
IGEsIGNvbnN0IEZpbGxMYXllciogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdAogICAgIHsKLSAg
ICAgICAgKGRzdC0+Km1fc2V0dGVyKShibGVuZEZ1bmMoYW5pbSwgKGEtPipGaWxsTGF5ZXJQcm9w
ZXJ0eVdyYXBwZXJHZXR0ZXI8VD46Om1fZ2V0dGVyKSgpLCAoYi0+KkZpbGxMYXllclByb3BlcnR5
V3JhcHBlckdldHRlcjxUPjo6bV9nZXR0ZXIpKCksIHByb2dyZXNzKSk7CisgICAgICAgIChkc3Qt
PiptX3NldHRlcikoQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kRnVuYyhhbmltLCAoYS0+KkZp
bGxMYXllclByb3BlcnR5V3JhcHBlckdldHRlcjxUPjo6bV9nZXR0ZXIpKCksIChiLT4qRmlsbExh
eWVyUHJvcGVydHlXcmFwcGVyR2V0dGVyPFQ+OjptX2dldHRlcikoKSwgcHJvZ3Jlc3MpKTsKICAg
ICB9CiAKIHByb3RlY3RlZDoKQEAgLTc2NSw3ICs3NjUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgRmlsbExheWVyKiBkc3Qs
IGNvbnN0IEZpbGxMYXllciogYSwgY29uc3QgRmlsbExheWVyKiBiLCBkb3VibGUgcHJvZ3Jlc3Mp
IGNvbnN0CiAgICAgewotICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKGJsZW5kRnVuYyhhbmltLCAo
YS0+KkZpbGxMYXllclByb3BlcnR5V3JhcHBlckdldHRlcjxUKj46Om1fZ2V0dGVyKSgpLCAoYi0+
KkZpbGxMYXllclByb3BlcnR5V3JhcHBlckdldHRlcjxUKj46Om1fZ2V0dGVyKSgpLCBwcm9ncmVz
cykpOworICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVu
ZEZ1bmMoYW5pbSwgKGEtPipGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VCo+OjptX2dl
dHRlcikoKSwgKGItPipGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VCo+OjptX2dldHRl
cikoKSwgcHJvZ3Jlc3MpKTsKICAgICB9CiAKIHByb3RlY3RlZDoKQEAgLTkyMiw5ICs5MjIsOSBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSog
YW5pbSwgUmVuZGVyU3R5bGUqIGRzdCwgY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRl
clN0eWxlKiBiLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiAgICAgewotICAgICAgICBkc3QtPnNl
dEZsZXhCYXNpcyhibGVuZEZ1bmMoYW5pbSwgYS0+ZmxleEJhc2lzKCksIGItPmZsZXhCYXNpcygp
LCBwcm9ncmVzcykpOwotICAgICAgICBkc3QtPnNldEZsZXhHcm93KGJsZW5kRnVuYyhhbmltLCBh
LT5mbGV4R3JvdygpLCBiLT5mbGV4R3JvdygpLCBwcm9ncmVzcykpOwotICAgICAgICBkc3QtPnNl
dEZsZXhTaHJpbmsoYmxlbmRGdW5jKGFuaW0sIGEtPmZsZXhTaHJpbmsoKSwgYi0+ZmxleFNocmlu
aygpLCBwcm9ncmVzcykpOworICAgICAgICBkc3QtPnNldEZsZXhCYXNpcyhDU1NQcm9wZXJ0eUFu
aW1hdGlvbjo6YmxlbmRGdW5jKGFuaW0sIGEtPmZsZXhCYXNpcygpLCBiLT5mbGV4QmFzaXMoKSwg
cHJvZ3Jlc3MpKTsKKyAgICAgICAgZHN0LT5zZXRGbGV4R3JvdyhDU1NQcm9wZXJ0eUFuaW1hdGlv
bjo6YmxlbmRGdW5jKGFuaW0sIGEtPmZsZXhHcm93KCksIGItPmZsZXhHcm93KCksIHByb2dyZXNz
KSk7CisgICAgICAgIGRzdC0+c2V0RmxleFNocmluayhDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6Ymxl
bmRGdW5jKGFuaW0sIGEtPmZsZXhTaHJpbmsoKSwgYi0+ZmxleFNocmluaygpLCBwcm9ncmVzcykp
OwogICAgIH0KIH07CiAjZW5kaWYKQEAgLTk4MSw3ICs5ODEsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBmcm9tQ29sb3IgPSBDb2xvcigpOwogICAgICAgICBpZiAoIXRvQ29sb3IuaXNWYWxpZCgp
KQogICAgICAgICAgICAgdG9Db2xvciA9IENvbG9yKCk7Ci0gICAgICAgIChkc3QtPiptX3NldHRl
cikoYmxlbmRGdW5jKGFuaW0sIGZyb21Db2xvciwgdG9Db2xvciwgcHJvZ3Jlc3MpKTsKKyAgICAg
ICAgKGRzdC0+Km1fc2V0dGVyKShDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRGdW5jKGFuaW0s
IGZyb21Db2xvciwgdG9Db2xvciwgcHJvZ3Jlc3MpKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24u
aAppbmRleCA1MjkwNTU3YmJjMmY0M2EzYTgzMDY1MGZhNmE4NmM5NzI3ZTBjZWMwLi4xYzFhMjVl
NGFhZTg2MjUwNDdjNjhmOTljYjcyNmE2OTFiNjNjOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmgKQEAgLTMwLDcgKzMw
LDE4IEBACiAjZGVmaW5lIENTU1Byb3BlcnR5QW5pbWF0aW9uX2gKIAogI2luY2x1ZGUgIkNTU1By
b3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZpbHRlck9wZXJh
dGlvbnMuaCIKKyNpbmNsdWRlICJMZW5ndGguaCIKKyNpbmNsdWRlICJMZW5ndGhCb3guaCIKKyNp
bmNsdWRlICJMZW5ndGhTaXplLmgiCisjaW5jbHVkZSAiTmluZVBpZWNlSW1hZ2UuaCIKICNpbmNs
dWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgorI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgorI2lu
Y2x1ZGUgIlNoYWRvd0RhdGEuaCIKKyNpbmNsdWRlICJTdHlsZUltYWdlLmgiCisjaW5jbHVkZSAi
VHJhbnNmb3JtT3BlcmF0aW9ucy5oIgorCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksNiArNjAsMjggQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4gYW5pbWF0YWJsZVNob3J0aGFuZHNBZmZlY3RpbmdQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEKTsKIAorICAgIHN0YXRpYyBpbnQgYmxlbmRGdW5jKGNvbnN0IEFu
aW1hdGlvbkJhc2UqLCBpbnQgZnJvbSwgaW50IHRvLCBkb3VibGUgcHJvZ3Jlc3MpOworICAgIHN0
YXRpYyB1bnNpZ25lZCBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIHVuc2lnbmVkIGZy
b20sIHVuc2lnbmVkIHRvLCBkb3VibGUgcHJvZ3Jlc3MpOworICAgIHN0YXRpYyBkb3VibGUgYmxl
bmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBkb3VibGUgZnJvbSwgZG91YmxlIHRvLCBkb3Vi
bGUgcHJvZ3Jlc3MpOworICAgIHN0YXRpYyBmbG9hdCBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9u
QmFzZSosIGZsb2F0IGZyb20sIGZsb2F0IHRvLCBkb3VibGUgcHJvZ3Jlc3MpOworICAgIHN0YXRp
YyBDb2xvciBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IENvbG9yJiBmcm9t
LCBjb25zdCBDb2xvciYgdG8sIGRvdWJsZSBwcm9ncmVzcyk7CisgICAgc3RhdGljIExlbmd0aCBi
bGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IExlbmd0aCYgZnJvbSwgY29uc3Qg
TGVuZ3RoJiB0bywgZG91YmxlIHByb2dyZXNzKTsKKyAgICBzdGF0aWMgTGVuZ3RoU2l6ZSBibGVu
ZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IExlbmd0aFNpemUmIGZyb20sIGNvbnN0
IExlbmd0aFNpemUmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpOworICAgIHN0YXRpYyBJbnRTaXplIGJs
ZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgSW50U2l6ZSYgZnJvbSwgY29uc3Qg
SW50U2l6ZSYgdG8sIGRvdWJsZSBwcm9ncmVzcyk7CisgICAgc3RhdGljIFNoYWRvd1N0eWxlIGJs
ZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgU2hhZG93U3R5bGUgZnJvbSwgU2hhZG93U3R5
bGUgdG8sIGRvdWJsZSBwcm9ncmVzcyk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8U2hhZG93RGF0
YT4gYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBTaGFkb3dEYXRhKiBmcm9t
LCBjb25zdCBTaGFkb3dEYXRhKiB0bywgZG91YmxlIHByb2dyZXNzKTsKKyAgICBzdGF0aWMgVHJh
bnNmb3JtT3BlcmF0aW9ucyBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IFRy
YW5zZm9ybU9wZXJhdGlvbnMmIGZyb20sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmLCBkb3Vi
bGUgcHJvZ3Jlc3MpOworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICBzdGF0aWMgRmlsdGVy
T3BlcmF0aW9ucyBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmIGZyb20sIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIHRvLCBkb3VibGUgcHJvZ3Jl
c3MpOworI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICBzdGF0aWMgRVZpc2liaWxp
dHkgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBFVmlzaWJpbGl0eSBmcm9tLCBFVmlz
aWJpbGl0eSB0bywgZG91YmxlIHByb2dyZXNzKTsKKyAgICBzdGF0aWMgTGVuZ3RoQm94IGJsZW5k
RnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgTGVuZ3RoQm94JiBmcm9tLCBjb25zdCBM
ZW5ndGhCb3gmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpOworI2lmIEVOQUJMRShTVkcpCisgICAgc3Rh
dGljIFNWR0xlbmd0aCBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IFNWR0xl
bmd0aCYgZnJvbSwgY29uc3QgU1ZHTGVuZ3RoJiB0bywgZG91YmxlIHByb2dyZXNzKTsKKyNlbmRp
ZiAvLyBFTkFCTEUoU1ZHKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGJsZW5k
RnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgU3R5bGVJbWFnZSogZnJvbSwgU3R5bGVJbWFnZSog
dG8sIGRvdWJsZSBwcm9ncmVzcyk7CisgICAgc3RhdGljIE5pbmVQaWVjZUltYWdlIGJsZW5kRnVu
Yyhjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgTmluZVBpZWNlSW1hZ2UmIGZyb20sIGNvbnN0
IE5pbmVQaWVjZUltYWdlJiB0bywgZG91YmxlIHByb2dyZXNzKTsKKwogICAgIC8vIFJldHVybiB0
cnVlIGlmIHdlIG5lZWQgdG8gc3RhcnQgc29mdHdhcmUgYW5pbWF0aW9uIHRpbWVycwogICAgIHN0
YXRpYyBib29sIGJsZW5kUHJvcGVydGllcyhjb25zdCBBbmltYXRpb25CYXNlKiwgQ1NTUHJvcGVy
dHlJRCwgUmVuZGVyU3R5bGUqIGRzdCwgY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRl
clN0eWxlKiBiLCBkb3VibGUgcHJvZ3Jlc3MpOwogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFy
YW1ldGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlck51bWJlclBhcmFtZXRlci5oCmluZGV4IDI3NzBiNGNlZDZjZjU4MzAzNGUwNzEyNzlm
ODBhNDU4NmM3Zjc2MmUuLjQ3MzcxNTIyMzcyYmVkMWM5MmM3ZTYyYWEwNTYzYjk4NWEyNDJiMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaApAQCAtNDgsNyAr
NDgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFZhbHVlKGRvdWJsZSB2YWx1ZSkgeyBtX2Rh
dGEuYXBwZW5kKHZhbHVlKTsgfQogICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXN0b21G
aWx0ZXJQYXJhbWV0ZXI+IGJsZW5kKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciogZnJvbSwg
ZG91YmxlIHByb2dyZXNzKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJh
bWV0ZXI+IGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBDdXN0b21GaWx0ZXJQYXJh
bWV0ZXIqIGZyb20sIGRvdWJsZSBwcm9ncmVzcykKICAgICB7CiAgICAgICAgIGlmICghZnJvbSB8
fCAhaXNTYW1lVHlwZSgqZnJvbSkpCiAgICAgICAgICAgICByZXR1cm4gdGhpczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNwcAppbmRleCBmNWM4MTcyNGY3ODdkNTdiYzAwZjhhOTQy
NmVmYjg4MGZjOTJiNWUyLi4xYWM2NmNlYTUxMjZmNDIwZjUyZmEyMGFhNDhiMTY2MWIzZGVkZGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlck9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwCkBAIC02NCw3ICs2NCw3IEBA
IHN0YXRpYyBib29sIGNoZWNrQ3VzdG9tRmlsdGVyUGFyYW1ldGVyc09yZGVyKGNvbnN0IEN1c3Rv
bUZpbHRlclBhcmFtZXRlckxpc3QmIHBhCiB9CiAjZW5kaWYKIAotdm9pZCBibGVuZEN1c3RvbUZp
bHRlclBhcmFtZXRlcnMoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgZnJvbUxpc3Qs
IGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHRvTGlzdCwgZG91YmxlIHByb2dyZXNz
LCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiByZXN1bHRMaXN0KQordm9pZCBibGVuZEN1c3Rv
bUZpbHRlclBhcmFtZXRlcnMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgY29uc3QgQ3VzdG9t
RmlsdGVyUGFyYW1ldGVyTGlzdCYgZnJvbUxpc3QsIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRl
ckxpc3QmIHRvTGlzdCwgZG91YmxlIHByb2dyZXNzLCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0
JiByZXN1bHRMaXN0KQogewogICAgIC8vIFRoaXMgbWV0aG9kIGV4cGVjdHMgYm90aCBsaXN0cyB0
byBiZSBzb3J0ZWQgYnkgcGFyYW1ldGVyIG5hbWUgYW5kIHRoZSByZXN1bHQgbGlzdCBpcyBhbHNv
IHNvcnRlZC4KICAgICBBU1NFUlQoY2hlY2tDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzT3JkZXIoZnJv
bUxpc3QpKTsKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBibGVuZEN1c3RvbUZpbHRlclBhcmFtZXRl
cnMoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgZnJvbUxpc3QsIGNvbnMKICAgICAg
ICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiBwYXJhbUZyb20gPSBmcm9tTGlzdC5hdChmcm9tTGlz
dEluZGV4KS5nZXQoKTsKICAgICAgICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiBwYXJhbVRvID0g
dG9MaXN0LmF0KHRvTGlzdEluZGV4KS5nZXQoKTsKICAgICAgICAgaWYgKHBhcmFtRnJvbS0+bmFt
ZSgpID09IHBhcmFtVG8tPm5hbWUoKSkgewotICAgICAgICAgICAgcmVzdWx0TGlzdC5hcHBlbmQo
cGFyYW1Uby0+YmxlbmQocGFyYW1Gcm9tLCBwcm9ncmVzcykpOworICAgICAgICAgICAgcmVzdWx0
TGlzdC5hcHBlbmQocGFyYW1Uby0+YmxlbmQoYW5pbSwgcGFyYW1Gcm9tLCBwcm9ncmVzcykpOwog
ICAgICAgICAgICAgKytmcm9tTGlzdEluZGV4OwogICAgICAgICAgICAgKyt0b0xpc3RJbmRleDsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTExLDcgKzExMSw3IEBAIEN1c3RvbUZpbHRlck9w
ZXJhdGlvbjo6fkN1c3RvbUZpbHRlck9wZXJhdGlvbigpCiB7CiB9CiAKLVBhc3NSZWZQdHI8Rmls
dGVyT3BlcmF0aW9uPiBDdXN0b21GaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkK
K1Bhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBDdXN0b21GaWx0ZXJPcGVyYXRpb246OmJsZW5k
KGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwg
ZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICAvLyBGSVhN
RTogVGhlcmUncyBubyB3YXkgdG8gZGVjaWRlIHdoYXQgaXMgdGhlICJwYXNzdGhyb3VnaCBmaWx0
ZXIiIGZvciBzaGFkZXJzIHVzaW5nIHRoZSBjdXJyZW50IENTUyBTeW50YXguCiAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0OTAzCkBAIC0xMjgsNyArMTI4
LDcgQEAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6
YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKgogICAgICAgICByZXR1cm4gdGhpczsKICAgICAK
ICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0IGFuaW1hdGVkUGFyYW1ldGVyczsKLSAgICBi
bGVuZEN1c3RvbUZpbHRlclBhcmFtZXRlcnMoZnJvbU9wLT5tX3BhcmFtZXRlcnMsIG1fcGFyYW1l
dGVycywgcHJvZ3Jlc3MsIGFuaW1hdGVkUGFyYW1ldGVycyk7CisgICAgYmxlbmRDdXN0b21GaWx0
ZXJQYXJhbWV0ZXJzKGFuaW0sIGZyb21PcC0+bV9wYXJhbWV0ZXJzLCBtX3BhcmFtZXRlcnMsIHBy
b2dyZXNzLCBhbmltYXRlZFBhcmFtZXRlcnMpOwogICAgIHJldHVybiBDdXN0b21GaWx0ZXJPcGVy
YXRpb246OmNyZWF0ZShtX3Byb2dyYW0sIGFuaW1hdGVkUGFyYW1ldGVycywgbV9tZXNoUm93cywg
bV9tZXNoQ29sdW1ucywgbV9tZXNoQm94VHlwZSwgbV9tZXNoVHlwZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlck9wZXJhdGlvbi5oCmluZGV4IGI0ZThiMjkzNjBiODU3ODk4MDkxY2NlZDFiYzU3
ODBiY2Y3OWIzNzQuLmExMTBhMTM4YjY5NGU4OGQyNGE4N2EwMTBmMGFhMGE2NGIxYTJkYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaApAQCAtMzEsNiArMzEsNyBAQAogI2RlZmlu
ZSBDdXN0b21GaWx0ZXJPcGVyYXRpb25faAogCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQorI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5QW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJv
Z3JhbS5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbi5oIgogCkBAIC00NCw3ICs0NSw3IEBA
IGNsYXNzIEN1c3RvbUZpbHRlclBhcmFtZXRlcjsKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxDdXN0
b21GaWx0ZXJQYXJhbWV0ZXI+ID4gQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdDsKIAogYm9vbCBj
dXN0b21GaWx0ZXJQYXJhbWV0ZXJzRXF1YWwoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlz
dCYsIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmKTsKLXZvaWQgYmxlbmRDdXN0b21G
aWx0ZXJQYXJhbWV0ZXJzKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIGxpc3RGcm9t
LCBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBsaXN0VG8sIGRvdWJsZSBwcm9ncmVz
cywgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgcmVzdWx0TGlzdCk7Cit2b2lkIGJsZW5kQ3Vz
dG9tRmlsdGVyUGFyYW1ldGVycyhjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgQ3VzdG9tRmls
dGVyUGFyYW1ldGVyTGlzdCYgbGlzdEZyb20sIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxp
c3QmIGxpc3RUbywgZG91YmxlIHByb2dyZXNzLCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBy
ZXN1bHRzKTsKIAogY2xhc3MgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9w
ZXJhdGlvbiB7CiBwdWJsaWM6CkBAIC04MCw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVh
bCBib29sIG1vdmVzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJh
dGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZh
bHNlKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25z
dCBBbmltYXRpb25CYXNlKiwgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOwogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJQYXJhbWV0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVyLmgKaW5kZXggZTY2ZTIyOThhZTgyMjMz
NGVhMjJjYWUyYmE3ZjhiMjUwMTlhNzE2ZS4uMjA3NGEzNTAzMWI0YjQ0NDEwZGY1ZTBhZjM4MGMz
ZTFjYjNkNTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRlci5oCkBAIC01NSw3ICs1
NSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGlzU2FtZVR5cGUoY29uc3QgQ3VzdG9tRmls
dGVyUGFyYW1ldGVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gcGFyYW1ldGVyVHlwZSgpID09IG90
aGVyLnBhcmFtZXRlclR5cGUoKTsgfQogICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXN0
b21GaWx0ZXJQYXJhbWV0ZXI+IGJsZW5kKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciosIGRv
dWJsZSBwcm9ncmVzcykgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQ
YXJhbWV0ZXI+IGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBDdXN0b21GaWx0ZXJQ
YXJhbWV0ZXIqLCBkb3VibGUgcHJvZ3Jlc3MpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXImKSBjb25zdCA9IDA7CiAgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciYgbykgY29uc3QgeyByZXR1cm4g
ISgqdGhpcyA9PSBvKTsgfQogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
VHJhbnNmb3JtUGFyYW1ldGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjIzM2MzMjNmYzAzY2M0ZWU5OWE4NGY1
ZWE1MGViMTA3ODM0NjgzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmgKQEAg
LTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIElu
Y29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisg
KiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBD
dXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXJfaAorI2RlZmluZSBDdXN0b21GaWx0ZXJUcmFu
c2Zvcm1QYXJhbWV0ZXJfaAorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorI2luY2x1ZGUgIkNT
U1Byb3BlcnR5QW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUGFyYW1ldGVyLmgi
CisjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9ucy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OworCitjbGFz
cyBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIgOiBwdWJsaWMgQ3VzdG9tRmlsdGVyUGFy
YW1ldGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJUcmFu
c2Zvcm1QYXJhbWV0ZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcihuYW1l
KSk7CisgICAgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRl
cj4gYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgY29uc3QgQ3VzdG9tRmlsdGVyUGFy
YW1ldGVyKiBmcm9tUGFyYW1ldGVyLCBkb3VibGUgcHJvZ3Jlc3MpCisgICAgeworICAgICAgICBp
ZiAoIWZyb21QYXJhbWV0ZXIgfHwgIWlzU2FtZVR5cGUoKmZyb21QYXJhbWV0ZXIpKQorICAgICAg
ICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIGNvbnN0IEN1c3RvbUZpbHRlclRyYW5zZm9ybVBh
cmFtZXRlciogZnJvbVRyYW5zZm9ybVBhcmFtZXRlciA9IHN0YXRpY19jYXN0PGNvbnN0IEN1c3Rv
bUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcio+KGZyb21QYXJhbWV0ZXIpOworICAgICAgICBjb25z
dCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tID0gZnJvbVRyYW5zZm9ybVBhcmFtZXRlci0+b3Bl
cmF0aW9ucygpOworICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB0byA9IG9wZXJh
dGlvbnMoKTsKKworICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIHJlc3VsdCA9IENTU1Byb3Bl
cnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoYW5pbSwgZnJvbSwgdG8sIHByb2dyZXNzKTsKKyAgICAg
ICAgUmVmUHRyPEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcj4gcmV0ID0gQ3VzdG9tRmls
dGVyVHJhbnNmb3JtUGFyYW1ldGVyOjpjcmVhdGUobmFtZSgpKTsKKyAgICAgICAgcmV0LT5zZXRP
cGVyYXRpb25zKHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXQucmVsZWFzZSgpOworICAgIH0K
KworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRl
ciYgbykgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghaXNTYW1lVHlwZShvKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY29uc3QgQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFy
YW1ldGVyKiBvdGhlciA9IHN0YXRpY19jYXN0PGNvbnN0IEN1c3RvbUZpbHRlclRyYW5zZm9ybVBh
cmFtZXRlcio+KCZvKTsKKyAgICAgICAgcmV0dXJuIG1fb3BlcmF0aW9ucyA9PSBvdGhlci0+bV9v
cGVyYXRpb25zOworICAgIH0KKworICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgTGF5b3V0U2l6ZSYgYm94U2l6ZSkgY29uc3QKKyAg
ICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBtX29wZXJhdGlvbnMuc2l6
ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgbV9vcGVyYXRpb25zLmF0KGkpLT5hcHBs
eSh0cmFuc2Zvcm0sIGJveFNpemUpOworICAgIH0KKworICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbnMmIG9wZXJhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGlvbnM7IH0KKyAgICB2
b2lkIHNldE9wZXJhdGlvbnMoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdmFsdWUpIHsgbV9v
cGVyYXRpb25zID0gdmFsdWU7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgQ3VzdG9tRmlsdGVyVHJh
bnNmb3JtUGFyYW1ldGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICAgICAgOiBDdXN0b21GaWx0
ZXJQYXJhbWV0ZXIoVFJBTlNGT1JNLCBuYW1lKQorICAgIHsKKyAgICB9CisgICAgCisgICAgVHJh
bnNmb3JtT3BlcmF0aW9ucyBtX29wZXJhdGlvbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpCisKKyNlbmRpZiAvLyBDdXN0b21G
aWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCmluZGV4IDY1
NjkyNmUyOGUzNTdkNjExZTExZDYzOTA5MDg5MmNhNmJkNmM1MTMuLjFiMzBmZmI0Yjk1YTk1NDNm
YmYyMTgyNGRhY2Y4MmZlNmQ5OGM0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKQEAgLTMy
LDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmls
dGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJv
dWdoKQorUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJP
cGVyYXRpb246OmJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCiB7CiAg
ICAgaWYgKGZyb20gJiYgIWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQogICAgICAgICByZXR1cm4g
dGhpczsKQEAgLTYwLDcgKzYwLDcgQEAgZG91YmxlIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVy
YXRpb246OnBhc3N0aHJvdWdoQW1vdW50KCkgY29uc3QKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8
RmlsdGVyT3BlcmF0aW9uPiBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpi
bGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBi
bGVuZFRvUGFzc3Rocm91Z2gpCitQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmFzaWNDb21w
b25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSos
IGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+aXNTYW1lVHlwZSgqdGhp
cykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtOTAsNyArOTAsNyBAQCBkb3VibGUgQmFzaWND
b21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6cGFzc3Rocm91Z2hBbW91bnQoKSBjb25z
dAogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEdhbW1hRmlsdGVyT3Bl
cmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVz
cywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCitQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4g
R2FtbWFGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBG
aWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Ro
cm91Z2gpCiB7CiAgICAgaWYgKGZyb20gJiYgIWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhpczsKQEAgLTExMSw3ICsxMTEsNyBAQCBQYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gR2FtbWFGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogZgogICAgICAgICBXZWJDb3JlOjpibGVuZChmcm9tT2Zmc2V0LCBtX29mZnNldCwgcHJvZ3Jl
c3MpLCBtX3R5cGUpOwogfQogCi1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmx1ckZpbHRl
ck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQorUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRp
b24+IEJsdXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25z
dCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFz
c3Rocm91Z2gpCiB7CiAgICAgaWYgKGZyb20gJiYgIWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQog
ICAgICAgICByZXR1cm4gdGhpczsKQEAgLTEyNiw3ICsxMjYsNyBAQCBQYXNzUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gQmx1ckZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0
aW9uKiBmcgogICAgIHJldHVybiBCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobV9zdGREZXZp
YXRpb24uYmxlbmQoZnJvbUxlbmd0aCwgcHJvZ3Jlc3MpLCBtX3R5cGUpOwogfQogCi1QYXNzUmVm
UHRyPEZpbHRlck9wZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29u
c3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bh
c3N0aHJvdWdoKQorUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IERyb3BTaGFkb3dGaWx0ZXJP
cGVyYXRpb246OmJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCiB7CiAg
ICAgaWYgKGZyb20gJiYgIWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQogICAgICAgICByZXR1cm4g
dGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCmluZGV4IGU3MjYwMGM0N2UzNjRkYjYyNTZiMzc5ZjNi
YTQ2M2NkMzk4ZDI0NDMuLjhkMDdiZGE5MTExNmYwYjc1NjNkZTYyZTU4MjhjZTE2ZTVjZGQ2Y2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb24uaApAQCAtNDYsNiArNDYsOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIEFuaW1hdGlvbkJhc2U7CisKIC8vIENTUyBGaWx0ZXJzCiAKICNpZiBQ
TEFURk9STShCTEFDS0JFUlJZKQpAQCAtNzgsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJikgY29uc3QgPSAwOwogICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJu
ICEoKnRoaXMgPT0gbyk7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRp
b24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dy
ZXNzKi8sIGJvb2wgLypibGVuZFRvUGFzc3Rocm91Z2gqLyA9IGZhbHNlKSB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgQW5p
bWF0aW9uQmFzZSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogLypmcm9tKi8sIGRvdWJsZSAvKnBy
b2dyZXNzKi8sIGJvb2wgLypibGVuZFRvUGFzc3Rocm91Z2gqLyA9IGZhbHNlKSB7IHJldHVybiAw
OyB9CiAKICAgICB2aXJ0dWFsIE9wZXJhdGlvblR5cGUgZ2V0T3BlcmF0aW9uVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NhbWVUeXBlKGNvbnN0IEZp
bHRlck9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gby5nZXRPcGVyYXRpb25UeXBlKCkgPT0g
bV90eXBlOyB9CkBAIC0xOTEsNyArMTkzLDcgQEAgcHVibGljOgogCiAgICAgZG91YmxlIGFtb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJs
ZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSos
IGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CkBAIC0yMjUsNyArMjI3LDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IE9QQUNJVFk7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0
ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHBy
b2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiwgY29u
c3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bh
c3N0aHJvdWdoID0gZmFsc2UpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKQEAgLTI1OCw3ICsyNjAsNyBAQCBw
dWJsaWM6CiAgICAgZG91YmxlIGV4cG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV9leHBvbmVudDsg
fQogICAgIGRvdWJsZSBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogCi0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3Bl
cmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0g
ZmFsc2UpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNv
bnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBw
cm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7CiAKIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25z
dApAQCAtMjk0LDcgKzI5Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYWZmZWN0c09w
YWNpdHkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIG1vdmVzUGl4
ZWxzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZp
bHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUg
cHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBj
b25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRv
UGFzc3Rocm91Z2ggPSBmYWxzZSk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG9wZXJh
dG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdApAQCAtMzMwLDcgKzMzMiw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIG1vdmVzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoID0gZmFsc2UpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVy
YXRpb24+IGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBGaWx0ZXJPcGVyYXRpb24q
IGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7
CiAKIHByaXZhdGU6CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZWRjZGMwODgyMzkxMGM0YzA5YjExNTI4NzIyYWFkZjQ4
NWMwNzY2Li5mOWYxYWI4OWM0ZDliMTZiZDY3YzE5ZWRkODkwM2UxMTI5OTkxOGRjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTItMDgtMjkgIEpvc2h1YSBOZXR0ZXJmaWVsZCAgPGpuZXR0ZXJm
aWVsZEByaW0uY29tPgorCisgICAgICAgIFtDU1MgU2hhZGVyc10gSW1wbGVtZW50IHRyYW5zZm9y
bSBwYXJhbWV0ZXIgYW5pbWF0aW9ucyBmb3IgQ1NTIEN1c3RvbSBGaWx0ZXJzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDk4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgdHJhbnNmb3JtIGFuaW1h
dGlvbnMgaW4gY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1s
LgorCisgICAgICAgICogY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlv
bi1leHBlY3RlZC50eHQ6CisgICAgICAgICogY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmls
dGVyLWFuaW1hdGlvbi5odG1sOiBBZGQgdHJhbnNmb3JtIHRlc3RzLgorICAgICAgICAqIGNzczMv
ZmlsdGVycy9yZXNvdXJjZXMvY3VzdG9tLWZpbHRlci1wYXJzZXIuanM6IEFkZCBzdXBwb3J0IGZv
ciBtYXRyaWNpZXMgJiB0cmFuc2Zvcm1zLgorCiAyMDEyLTA4LTI5ICBFdWdlbmUgS2x5dWNobmlr
b3YgIDxldXN0YXMuYnVnQGdtYWlsLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBUaW1l
bGluZTogYXZvaWQgIklQQyBtZXNzYWdlIHRvbyBiaWciIG9uIHNhdmUvbG9hZApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1m
aWx0ZXItYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAppbmRleCA2ZmRlMDcxMWRkYzY2ZTkyNGIzYjQy
MjE1ZDk2Yjc4MTIyOGJkNjRmLi5mNGE5YWNhYWQxZjNjYWUyM2QxYzRmODdhYThkMDJhNzFmYTMy
NTAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1m
aWx0ZXItYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRl
cnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItYW5pbWF0aW9uLWV4cGVjdGVkLnR4dApAQCAtOCw0ICs4
LDUgQEAgUEFTUyAtICJ3ZWJraXRGaWx0ZXIiIHByb3BlcnR5IGZvciAiY3VzdG9tLWZyb20tZGlm
Zi1wYXJhbXMtYm94IiBlbGVtZW50IGF0IDFzIHMKIFBBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9w
ZXJ0eSBmb3IgImN1c3RvbS10by1kaWZmLXBhcmFtcy1ib3giIGVsZW1lbnQgYXQgMXMgc2F3IHNv
bWV0aGluZyBjbG9zZSB0bzogY3VzdG9tKHVybCh2ZXJ0ZXgtcm90YXRlLnZzKSBub25lLCAxIDEg
ZmlsdGVyLWJveCwgcGFyYW0gMTAsIHJvdGF0ZUJ5IDYwLCBvZmZzZXQgMTAsIGFub3RoZXJfcGFy
YW0gNSkKIFBBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9wZXJ0eSBmb3IgImN1c3RvbS1taXgtcGFy
YW1zLWJveCIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiBjdXN0b20odXJs
KHZlcnRleC1yb3RhdGUudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCBwYXJhbSAxMCwgYW5vdGhl
cl9wYXJhbSA1LCBmaXJzdF9wYXJhbSA2LCByb3RhdGVCeSA2MCwgb2Zmc2V0IDEwLCBsYXN0X3Bh
cmFtIDQpCiBQQVNTIC0gIndlYmtpdEZpbHRlciIgcHJvcGVydHkgZm9yICJjdXN0b20tbWl4LW51
bWJlcnMtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IGN1c3RvbSh1
cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHJvdGF0ZUJ5IDQ1LCBh
IDUuNSwgYiAxMSAxNi41LCBjIDIyIDI3LjUgMzMsIGQgMzguNSA0NCA0OS41KQorUEFTUyAtICJ3
ZWJraXRGaWx0ZXIiIHByb3BlcnR5IGZvciAiY3VzdG9tLW1peC10cmFuc2Zvcm1zLWJveCIgZWxl
bWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiBjdXN0b20odXJsKHZlcnRleC10cmFu
c2Zvcm0tcGFyYW1ldGVyLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgdHJhbnNmb3JtIG1hdHJp
eCgxIDAgMCAxIDAgMCkpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9j
dXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2NzczMvZmls
dGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24uaHRtbAppbmRleCBhMWVjODI5YTQw
MmQ0N2FkYzJhMDEyOTY0ZTdjZGIwMjYzYzk0ZDYxLi4wMTg2ZmEwNWM3NDBmOWUxZTg4MjM3NGJk
NzU1Y2RkNTI0ZDQ5NzI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3Vz
dG9tL2N1c3RvbS1maWx0ZXItYW5pbWF0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9m
aWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1sCkBAIC01Miw2ICs1Miwx
MCBAQAogICAgICAgICAjY3VzdG9tLW1peC1udW1iZXJzLWJveCB7CiAgICAgICAgICAgICAtd2Vi
a2l0LWFuaW1hdGlvbjogY3VzdG9tLW1peC1udW1iZXJzLWFuaW0gMnMgbGluZWFyOwogICAgICAg
ICB9CisKKyAgICAgICAgI2N1c3RvbS1taXgtdHJhbnNmb3Jtcy1ib3ggeworICAgICAgICAgICAg
LXdlYmtpdC1hbmltYXRpb246IGN1c3RvbS1taXgtdHJhbnNmb3Jtcy1hbmltIDJzIGxpbmVhcjsK
KyAgICAgICAgfQogICAgIAogICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgY3VzdG9tLWZyb20t
bm9uZS1hbmltIHsKICAgICAgICAgICAgIGZyb20geyAtd2Via2l0LWZpbHRlcjogbm9uZTsgfQpA
QCAtOTcsNiArMTAxLDExIEBACiAgICAgICAgICAgICBmcm9tIHsgLXdlYmtpdC1maWx0ZXI6IGN1
c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC1yb3RhdGUudnMpLCByb3RhdGVCeSAwLCBhIDEs
IGIgMiAzLCBjIDQgNSA2LCBkIDcgOCA5KTsgfQogICAgICAgICAgICAgdG8gICB7IC13ZWJraXQt
ZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgtcm90YXRlLnZzKSwgcm90YXRl
QnkgOTAsIGEgMTAsIGIgMjAgMzAsIGMgNDAgNTAgNjAsIGQgNzAgODAgOTApOyB9CiAgICAgICAg
IH0KKworICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgY3VzdG9tLW1peC10cmFuc2Zvcm1zLWFu
aW0geworICAgICAgICAgICAgZnJvbSB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jl
c291cmNlcy92ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFtZXRlci52cyksIHRyYW5zZm9ybSByb3RhdGVa
KC0xMGRlZykpOyB9CisgICAgICAgICAgICB0byAgIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1
cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSwgdHJhbnNmb3Jt
IHJvdGF0ZVooMTBkZWcpKTsgfQorICAgICAgICB9CiAgICAgPC9zdHlsZT4KICAgICA8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2N1c3RvbS1maWx0ZXItcGFyc2VyLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vYW5pbWF0aW9ucy9yZXNvdXJjZXMvYW5pbWF0aW9uLXRl
c3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+CkBAIC0xMTcsNyArMTI2LDggQEAKICAgICAgICAgICAg
IFsiY3VzdG9tLXRvLWRpZmYtcGFyYW1zLWFuaW0iLCAgMSwgImN1c3RvbS10by1kaWZmLXBhcmFt
cy1ib3giLCAid2Via2l0RmlsdGVyIiwgJ2N1c3RvbSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9u
ZSwgMSAxIGZpbHRlci1ib3gsIHBhcmFtIDEwLCByb3RhdGVCeSA2MCwgb2Zmc2V0IDEwLCBhbm90
aGVyX3BhcmFtIDUpJywgNV0sCiAKICAgICAgICAgICAgIFsiY3VzdG9tLW1peC1wYXJhbXMtYW5p
bSIsICAxLCAiY3VzdG9tLW1peC1wYXJhbXMtYm94IiwgIndlYmtpdEZpbHRlciIsICdjdXN0b20o
dXJsKHZlcnRleC1yb3RhdGUudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCBwYXJhbSAxMCwgYW5v
dGhlcl9wYXJhbSA1LCBmaXJzdF9wYXJhbSA2LCByb3RhdGVCeSA2MCwgb2Zmc2V0IDEwLCBsYXN0
X3BhcmFtIDQpJywgNV0sCi0gICAgICAgICAgICBbImN1c3RvbS1taXgtbnVtYmVycy1hbmltIiwg
IDEsICJjdXN0b20tbWl4LW51bWJlcnMtYm94IiwgIndlYmtpdEZpbHRlciIsICdjdXN0b20odXJs
KHZlcnRleC1yb3RhdGUudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCByb3RhdGVCeSA0NSwgYSA1
LjUsIGIgMTEgMTYuNSwgYyAyMiAyNy41IDMzLCBkIDM4LjUgNDQgNDkuNSknLCAxMF0KKyAgICAg
ICAgICAgIFsiY3VzdG9tLW1peC1udW1iZXJzLWFuaW0iLCAgMSwgImN1c3RvbS1taXgtbnVtYmVy
cy1ib3giLCAid2Via2l0RmlsdGVyIiwgJ2N1c3RvbSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9u
ZSwgMSAxIGZpbHRlci1ib3gsIHJvdGF0ZUJ5IDQ1LCBhIDUuNSwgYiAxMSAxNi41LCBjIDIyIDI3
LjUgMzMsIGQgMzguNSA0NCA0OS41KScsIDEwXSwKKyAgICAgICAgICAgIFsiY3VzdG9tLW1peC10
cmFuc2Zvcm1zLWFuaW0iLCAgMSwgImN1c3RvbS1taXgtdHJhbnNmb3Jtcy1ib3giLCAid2Via2l0
RmlsdGVyIiwgJ2N1c3RvbSh1cmwodmVydGV4LXRyYW5zZm9ybS1wYXJhbWV0ZXIudnMpIG5vbmUs
IDEgMSBmaWx0ZXItYm94LCB0cmFuc2Zvcm0gbWF0cml4KDEgMCAwIDEgMCAwKSknLCAwLjVdCiAg
ICAgICAgIF07CiAgICAgICAgIHJ1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMpOwogICAg
IDwvc2NyaXB0PgpAQCAtMTMyLDYgKzE0Miw3IEBACiAgICAgPGRpdiBjbGFzcz0iYm94IiBpZD0i
Y3VzdG9tLXRvLWRpZmYtcGFyYW1zLWJveCI+PC9kaXY+CiAgICAgPGRpdiBjbGFzcz0iYm94IiBp
ZD0iY3VzdG9tLW1peC1wYXJhbXMtYm94Ij48L2Rpdj4KICAgICA8ZGl2IGNsYXNzPSJib3giIGlk
PSJjdXN0b20tbWl4LW51bWJlcnMtYm94Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIGlk
PSJjdXN0b20tbWl4LXRyYW5zZm9ybXMtYm94Ij48L2Rpdj4KIAogICAgIDxkaXYgaWQ9InJlc3Vs
dCI+CiAgICAgPC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVz
b3VyY2VzL2N1c3RvbS1maWx0ZXItcGFyc2VyLmpzIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJz
L3Jlc291cmNlcy9jdXN0b20tZmlsdGVyLXBhcnNlci5qcwppbmRleCA4YTMwYjYyNTkxZjQwODli
MmM4OTMwYmM5ZWY5Y2E5YjBhM2U3YWQ4Li5jNzUzN2FjOTA3ZDYzYjlmYjE2MzM4Y2Y3OTNhZmUw
NzM1YjY1NGI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2Vz
L2N1c3RvbS1maWx0ZXItcGFyc2VyLmpzCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9y
ZXNvdXJjZXMvY3VzdG9tLWZpbHRlci1wYXJzZXIuanMKQEAgLTY0LDYgKzY0LDExIEBAIGZ1bmN0
aW9uIG51bWJlcih0b2tlbikKICAgICByZXR1cm4gdG9rZW4udHlwZSA9PSAiZmxvYXQiIHx8IHRv
a2VuLnR5cGUgPT0gImludGVnZXIiOwogfQogCitmdW5jdGlvbiB0cmFuc2Zvcm0odG9rZW4pCit7
CisgICAgcmV0dXJuIHRva2VuLnR5cGUgPT0gImtleXdvcmQiICYmIHRva2VuLnZhbHVlID09ICJ0
cmFuc2Zvcm0iOworfQorCiAvLyBIZWxwZXIgY2xhc3MgdG8gaXRlcmF0ZSBvbiB0aGUgdG9rZW4g
c3RyZWFtLiBJdCB3aWxsIGFkZCBhbiAiZW5kIgogLy8gdG9rZW4gYXQgdGhlIGVuZCB0byBtYWtl
IGl0IGVhc2llciB0byB1c2UgdGhlICJhaGVhZCIgZnVuY3Rpb24KIC8vIHdpdGhvdXQgY2hlY2tp
bmcgaWYgaXQncyB0aGUgbGFzdCB0b2tlbiBpbiB0aGUgc3RyZWFtLgpAQCAtMTE0LDYgKzExOSwx
OCBAQCBmdW5jdGlvbiBwYXJzZUZ1bmN0aW9uKG0pCiAgICAgcmV0dXJuIGZ1bmN0aW9uT2JqZWN0
OwogfQogCitmdW5jdGlvbiBwYXJzZU1hdHJpeChtKQoreworICAgIHZhciBtYXRyaXhPYmplY3Qg
PSB7CisgICAgICAgIHR5cGU6ICJtYXRyaXgiLAorICAgIH07CisgICAgbS5za2lwKCk7CisgICAg
bS5za2lwKCk7CisgICAgbWF0cml4T2JqZWN0LmFyZ3VtZW50cyA9IHBhcnNlTGlzdChtLCBbIiki
LCAiZW5kIl0pOworICAgIG0uc2tpcCgpOworICAgIHJldHVybiBtYXRyaXhPYmplY3Q7Cit9CisK
IC8vIENyZWF0ZXMgYSBuZXcgInBhcmFtZXRlciIgbm9kZS4gSXQgZXhwZWN0cyB0aGF0IHRoZSBj
dXJyZW50IHRva2VuIGlzIHRoZSBwYXJhbWV0ZXIgbmFtZS4KIC8vIEl0IGNvbnN1bWVzIGV2ZXJ5
dGhpbmcgYmVmb3JlIHRoZSBmb2xsb3dpbmcgY29tbWEuCiBmdW5jdGlvbiBwYXJzZVBhcmFtZXRl
cihtKQpAQCAtMTI5LDcgKzE0Niw3IEBAIGZ1bmN0aW9uIHBhcnNlUGFyYW1ldGVyKG0pCiAKIC8v
IENvbnN1bWVzIGEgbGlzdCBvZiB0b2tlbnMgYmVmb3JlIHJlYWNoaW5nIHRoZSAiZW5kVG9rZW4i
IGFuZCByZXR1cm5zIGFuIGFycmF5IHdpdGggYWxsIHRoZSBwYXJzZWQgaXRlbXMuCiAvLyBNYWtl
cyB0aGUgZm9sbG93aW5nIGFzc3VtcHRpb25zOgotLy8gLSBpZiBhIGtleXdvcmQgaXMgZm9sbG93
ZWQgYnkgIigiIHRoZW4gaXQgaXMgYSBzdGFydCBvZiBmdW5jdGlvbgorLy8gLSBpZiBhIGtleXdv
cmQgaXMgZm9sbG93ZWQgYnkgIigiIHRoZW4gaXQgaXMgYSBzdGFydCBvZiBmdW5jdGlvbiwgdW5s
ZXNzIGl0IGlzIGEgbWF0cml4LgogLy8gLSBpZiBhIGtleXdvcmQgaXMgbm90IGZvbGxvd2VkIGJ5
ICIsIiBpdCBpcyBhIHBhcmFtZXRlcgogLy8gS2V5d29yZHMgdGhhdCBkbyBub3QgbWF0Y2ggZWl0
aGVyIG9mIHRoZSBwcmV2aW91cyBydWxlcyBhbmQgdG9rZW5zIGxpa2UgbnVtYmVyIGFuZCB1cmwg
YXJlIGp1c3QgY2xvbmVkLgogZnVuY3Rpb24gcGFyc2VMaXN0KG0sIGVuZFRva2VuKQpAQCAtMTM3
LDkgKzE1NCwxNiBAQCBmdW5jdGlvbiBwYXJzZUxpc3QobSwgZW5kVG9rZW4pCiAgICAgdmFyIHJl
c3VsdCA9IFtdLCB0b2tlbjsKICAgICB3aGlsZSAoKHRva2VuID0gbS5jdXJyZW50KCkpICYmICF0
b2tlbi5pc0EoZW5kVG9rZW4pKSB7CiAgICAgICAgIGlmICh0b2tlbi5pc0EoImtleXdvcmQiKSkg
ewotICAgICAgICAgICAgaWYgKG0uYWhlYWQoKS5pc0EoIigiKSkKKyAgICAgICAgICAgIGlmICht
LmFoZWFkKCkuaXNBKCIoIikgJiYgdG9rZW4udmFsdWUgIT0gIm1hdHJpeCIpCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LnB1c2gocGFyc2VGdW5jdGlvbihtKSk7Ci0gICAgICAgICAgICBlbHNlIGlm
IChtLmFoZWFkKCkuaXNBKCIsIiwgZW5kVG9rZW4pKSB7CisgICAgICAgICAgICBlbHNlIGlmICht
LmFoZWFkKCkuaXNBKCIoIikgJiYgdG9rZW4udmFsdWUgPT0gIm1hdHJpeCIpIHsKKyAgICAgICAg
ICAgICAgICB2YXIgbCA9IHBhcnNlTWF0cml4KG0pOworICAgICAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbC5hcmd1bWVudHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5wdXNoKHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJudW1iZXIiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGwuYXJndW1lbnRzW2ldLnZhbHVlCisgICAg
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSBlbHNlIGlmIChtLmFoZWFkKCkuaXNB
KCIsIiwgZW5kVG9rZW4pKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goewogICAgICAg
ICAgICAgICAgICAgICB0eXBlOiAia2V5d29yZCIsIAogICAgICAgICAgICAgICAgICAgICB2YWx1
ZTogbS5za2lwKCkudmFsdWUKQEAgLTE1MSw2ICsxNzUsMTEgQEAgZnVuY3Rpb24gcGFyc2VMaXN0
KG0sIGVuZFRva2VuKQogICAgICAgICAgICAgICAgIHR5cGU6ICJudW1iZXIiLAogICAgICAgICAg
ICAgICAgIHZhbHVlOiBtLnNraXAoKS52YWx1ZQogICAgICAgICAgICAgfSk7CisgICAgICAgIH0g
ZWxzZSBpZiAodG9rZW4uaXNBKHRyYW5zZm9ybSkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNo
KHsKKyAgICAgICAgICAgICAgICB0eXBlOiAidHJhbnNmb3JtIiwKKyAgICAgICAgICAgICAgICB2
YWx1ZTogbS5za2lwKCkudmFsdWUKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UgaWYg
KHRva2VuLmlzQSgidXJsIikpIHsKICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsKICAgICAgICAg
ICAgICAgICB0eXBlOiAidXJsIiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161315</attachid>
            <date>2012-08-29 14:16:12 -0700</date>
            <delta_ts>2012-08-30 16:16:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94980-20120829171411.patch</filename>
            <type>text/plain</type>
            <size>41744</size>
            <attacher name="Joshua Netterfield">jnetterfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzEyODdkM2E4MDFhZmVm
YmVhMjAwYjMwYjM1YTE0ZGQzNzU4OGMxZi4uOGQxMThiYzZjMWIwZjY0NDc3YjY1NTliMzk1Yjg4
OWYxZDhiYThhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTA4LTI5ICBKb3No
dWEgTmV0dGVyZmllbGQgIDxqbmV0dGVyZmllbGRAcmltLmNvbT4KKworICAgICAgICBbQ1NTIFNo
YWRlcnNdIEltcGxlbWVudCB0cmFuc2Zvcm0gcGFyYW1ldGVyIGFuaW1hdGlvbnMgZm9yIENTUyBD
dXN0b20gRmlsdGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTQ5ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBY2NvcmRpbmcgdG8gU2VjdGlvbiAzOS4yIG9mIEZpbHRlciBFZmZlY3RzIDEuMCBFZGl0
b3IncyBkcmFmdAorICAgICAgICAoaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9GWFRGL3Jhdy1maWxl
L3RpcC9maWx0ZXJzL2luZGV4Lmh0bWwpLCBhbmltYXRpb25zCisgICAgICAgIG9mIHRyYW5zZm9y
bXMgc2hvdWxkIGJlIGhhbmRsZWQgZm9sbG93aW5nIHRoZSBDU1MzIHRyYW5zZm9ybSBpbnRlcnBv
bGF0aW9uCisgICAgICAgIHJ1bGVzLiBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhpcyBmdW5jdGlv
bmFsaXR5LgorCisgICAgICAgIE1pbm9yIGNoYW5nZXMgdG8gQ1NTUHJvcGVydHlBbmltYXRpb24s
IEN1c3RvbUZpbHRlclBhcmFtZXRlciBhbmQKKyAgICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
IGFyZSBuZWNlc3NhcnkgdG8gYWNjb21wbGlzaCB0aGlzIGNsZWFubHkuCisKKyAgICAgICAgVGVz
dHM6IEFkZGVkIGEgdHJhbnNmb3JtIHRlc3QgdG8gZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRl
ci1hbmltYXRpb24uaHRtbAorCisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlB
bmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlBbmltYXRpb246OmJs
ZW5kRnVuYyk6IE1hZGUgY2xhc3Mtc3RhdGljIGluc3RlYWQgb2YgZmlsZS1zdGF0aWMKKyAgICAg
ICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlcjo6YmxlbmQpOiBDYWxsIENTU1Byb3BlcnR5QW5p
bWF0aW9uOjpibGVuZEZ1bmMgaW5zdGVhZCBvZiBibGVuZEZ1bmMKKyAgICAgICAgKFdlYkNvcmU6
OlJlZkNvdW50ZWRQcm9wZXJ0eVdyYXBwZXI6OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBy
b3BlcnR5V3JhcHBlckNvbG9yOjpibGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdy
YXBwZXJBY2NlbGVyYXRlZE9wYWNpdHk6OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3Bl
cnR5V3JhcHBlckFjY2VsZXJhdGVkVHJhbnNmb3JtOjpibGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpQcm9wZXJ0eVdyYXBwZXJBY2NlbGVyYXRlZEZpbHRlcjo6YmxlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UHJvcGVydHlXcmFwcGVyU2hhZG93OjpibGVuZFNpbXBsZU9yTWF0Y2hlZFNoYWRvd0xp
c3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNoYWRvdzo6YmxlbmRNaXNt
YXRjaGVkU2hhZG93TGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyTWF5
YmVJbnZhbGlkQ29sb3I6OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllclByb3Bl
cnR5V3JhcHBlcjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyUmVmQ291bnRl
ZFByb3BlcnR5V3JhcHBlcjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFw
cGVyRmxleDo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyU1ZHUGFp
bnQ6OmJsZW5kKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5oOiBNYWRlIGJsZW5kRnVuYyBjbGFzcy1zdGF0aWMgaW5zdGVhZCBvZiBmaWxlLXN0YXRpYwor
ICAgICAgICAoQ1NTUHJvcGVydHlBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI6OmJsZW5kKTogTm93IGV4cGVjdHMgYW4g
QW5pbWF0aW9uQmFzZSBwYXJhbWV0ZXIKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEN1
c3RvbUZpbHRlclBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlclBhcmFtZXRlci5oOgorICAgICAgICAoQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclRyYW5zZm9y
bVBhcmFtZXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFy
YW1ldGVyOjpibGVuZCk6IEltcGxlbWVudCBibGVuZGluZyBmb3IgdHJhbnNmb3JtcworICAgICAg
ICAoQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOiBOb3cgZXhwZWN0
cyBhbiBBbmltYXRpb25CYXNlIHBhcmFtZXRlcgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNDb21w
b25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
R2FtbWFGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkJsdXJGaWx0
ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRyb3BTaGFkb3dGaWx0ZXJP
cGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJPcGVyYXRpb246OkZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAoQmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKEdhbW1hRmlsdGVyT3BlcmF0aW9uKToKKyAg
ICAgICAgKEJsdXJGaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAoRHJvcFNoYWRvd0ZpbHRlck9w
ZXJhdGlvbik6CisKIDIwMTItMDgtMjkgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRv
YmUuY29tPgogCiAgICAgICAgIFtDU1MgU2hhZGVyc10gVXNlIENTUyB0cmFuc2Zvcm0gcGFyc2lu
ZyBjb2RlIHdpdGhpbiBDU1MgU2hhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggZjJhODFjYjBjNWMxZjc0
YzgyYzIzNmQ0MTk0Nzg0ZmVjNGZlNzRhMy4uY2RmNzk5NTNhYzVhNWE0MGJjMDQyNWM5ZWQwODNm
Y2FjMmViMmQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtNTEsNDkgKzUxLDQ5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotc3RhdGljIGlubGluZSBpbnQgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlv
bkJhc2UqLCBpbnQgZnJvbSwgaW50IHRvLCBkb3VibGUgcHJvZ3Jlc3MpCitpbnQgQ1NTUHJvcGVy
dHlBbmltYXRpb246OmJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgaW50IGZyb20sIGlu
dCB0bywgZG91YmxlIHByb2dyZXNzKQogewogICAgIHJldHVybiBibGVuZChmcm9tLCB0bywgcHJv
Z3Jlc3MpOwogfQogCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGJsZW5kRnVuYyhjb25zdCBBbmlt
YXRpb25CYXNlKiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIGRvdWJsZSBwcm9ncmVzcykK
K3Vuc2lnbmVkIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9u
QmFzZSosIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAg
ICAgcmV0dXJuIGJsZW5kKGZyb20sIHRvLCBwcm9ncmVzcyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
ZG91YmxlIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgZG91YmxlIGZyb20sIGRvdWJs
ZSB0bywgZG91YmxlIHByb2dyZXNzKQorZG91YmxlIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVu
ZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGRvdWJsZSBmcm9tLCBkb3VibGUgdG8sIGRvdWJs
ZSBwcm9ncmVzcykKIHsKICAgICByZXR1cm4gYmxlbmQoZnJvbSwgdG8sIHByb2dyZXNzKTsKIH0K
IAotc3RhdGljIGlubGluZSBmbG9hdCBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGZs
b2F0IGZyb20sIGZsb2F0IHRvLCBkb3VibGUgcHJvZ3Jlc3MpCitmbG9hdCBDU1NQcm9wZXJ0eUFu
aW1hdGlvbjo6YmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBmbG9hdCBmcm9tLCBmbG9h
dCB0bywgZG91YmxlIHByb2dyZXNzKQogewogICAgIHJldHVybiBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KGZyb20gKyAodG8gLSBmcm9tKSAqIHByb2dyZXNzKTsKIH0KIAotc3RhdGljIGlubGluZSBD
b2xvciBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IENvbG9yJiBmcm9tLCBj
b25zdCBDb2xvciYgdG8sIGRvdWJsZSBwcm9ncmVzcykKK0NvbG9yIENTU1Byb3BlcnR5QW5pbWF0
aW9uOjpibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IENvbG9yJiBmcm9tLCBj
b25zdCBDb2xvciYgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICByZXR1cm4gYmxlbmQoZnJv
bSwgdG8sIHByb2dyZXNzKTsKIH0KIAotc3RhdGljIGlubGluZSBMZW5ndGggYmxlbmRGdW5jKGNv
bnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBMZW5ndGgmIGZyb20sIGNvbnN0IExlbmd0aCYgdG8s
IGRvdWJsZSBwcm9ncmVzcykKK0xlbmd0aCBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRGdW5j
KGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBMZW5ndGgmIGZyb20sIGNvbnN0IExlbmd0aCYg
dG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICByZXR1cm4gdG8uYmxlbmQoZnJvbSwgbmFycm93
UHJlY2lzaW9uVG9GbG9hdChwcm9ncmVzcykpOwogfQogCi1zdGF0aWMgaW5saW5lIExlbmd0aFNp
emUgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IExlbmd0aFNpemUm
IGZyb20sIGNvbnN0IExlbmd0aFNpemUmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCitMZW5ndGhTaXpl
IENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5p
bSwgY29uc3QgTGVuZ3RoU2l6ZSYgZnJvbSwgY29uc3QgTGVuZ3RoU2l6ZSYgdG8sIGRvdWJsZSBw
cm9ncmVzcykKIHsKICAgICByZXR1cm4gTGVuZ3RoU2l6ZShibGVuZEZ1bmMoYW5pbSwgZnJvbS53
aWR0aCgpLCB0by53aWR0aCgpLCBwcm9ncmVzcyksCiAgICAgICAgICAgICAgICAgICAgICAgYmxl
bmRGdW5jKGFuaW0sIGZyb20uaGVpZ2h0KCksIHRvLmhlaWdodCgpLCBwcm9ncmVzcykpOwogfQog
Ci1zdGF0aWMgaW5saW5lIEludFNpemUgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFu
aW0sIGNvbnN0IEludFNpemUmIGZyb20sIGNvbnN0IEludFNpemUmIHRvLCBkb3VibGUgcHJvZ3Jl
c3MpCitJbnRTaXplIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoY29uc3QgQW5pbWF0
aW9uQmFzZSogYW5pbSwgY29uc3QgSW50U2l6ZSYgZnJvbSwgY29uc3QgSW50U2l6ZSYgdG8sIGRv
dWJsZSBwcm9ncmVzcykKIHsKICAgICByZXR1cm4gSW50U2l6ZShibGVuZEZ1bmMoYW5pbSwgZnJv
bS53aWR0aCgpLCB0by53aWR0aCgpLCBwcm9ncmVzcyksCiAgICAgICAgICAgICAgICAgICAgYmxl
bmRGdW5jKGFuaW0sIGZyb20uaGVpZ2h0KCksIHRvLmhlaWdodCgpLCBwcm9ncmVzcykpOwogfQog
Ci1zdGF0aWMgaW5saW5lIFNoYWRvd1N0eWxlIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNl
KiBhbmltLCBTaGFkb3dTdHlsZSBmcm9tLCBTaGFkb3dTdHlsZSB0bywgZG91YmxlIHByb2dyZXNz
KQorU2hhZG93U3R5bGUgQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kRnVuYyhjb25zdCBBbmlt
YXRpb25CYXNlKiBhbmltLCBTaGFkb3dTdHlsZSBmcm9tLCBTaGFkb3dTdHlsZSB0bywgZG91Ymxl
IHByb2dyZXNzKQogewogICAgIGlmIChmcm9tID09IHRvKQogICAgICAgICByZXR1cm4gdG87CkBA
IC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIGlubGluZSBTaGFkb3dTdHlsZSBibGVuZEZ1bmMoY29u
c3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgU2hhZG93U3R5bGUgZnJvbSwKICAgICByZXR1cm4gcmVz
dWx0ID4gMCA/IE5vcm1hbCA6IEluc2V0OwogfQogCi1zdGF0aWMgaW5saW5lIFBhc3NPd25QdHI8
U2hhZG93RGF0YT4gYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IFNo
YWRvd0RhdGEqIGZyb20sIGNvbnN0IFNoYWRvd0RhdGEqIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCitQ
YXNzT3duUHRyPFNoYWRvd0RhdGE+IENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoY29u
c3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgY29uc3QgU2hhZG93RGF0YSogZnJvbSwgY29uc3QgU2hh
ZG93RGF0YSogdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICBBU1NFUlQoZnJvbSAmJiB0byk7
CiAgICAgaWYgKGZyb20tPnN0eWxlKCkgIT0gdG8tPnN0eWxlKCkpCkBAIC0xMTgsNyArMTE4LDcg
QEAgc3RhdGljIGlubGluZSBQYXNzT3duUHRyPFNoYWRvd0RhdGE+IGJsZW5kRnVuYyhjb25zdCBB
bmltYXRpb25CYXNlKiBhbmltLCBjb25zdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBibGVuZChmcm9tLT5jb2xvcigpLCB0by0+Y29sb3IoKSwgcHJvZ3Jlc3MpKSk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgVHJhbnNmb3JtT3BlcmF0aW9ucyBibGVuZEZ1bmMoY29uc3QgQW5pbWF0
aW9uQmFzZSogYW5pbSwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSwgY29uc3QgVHJh
bnNmb3JtT3BlcmF0aW9ucyYgdG8sIGRvdWJsZSBwcm9ncmVzcykKK1RyYW5zZm9ybU9wZXJhdGlv
bnMgQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBh
bmltLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBjb25zdCBUcmFuc2Zvcm1PcGVy
YXRpb25zJiB0bywgZG91YmxlIHByb2dyZXNzKQogewogICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMg
cmVzdWx0OwogCkBAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIGlubGluZSBUcmFuc2Zvcm1PcGVy
YXRpb25zIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBUcmEKIH0K
IAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLXN0YXRpYyBpbmxpbmUgRmlsdGVyT3BlcmF0aW9u
cyBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYgZnJvbSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgdG8sIGRvdWJsZSBwcm9ncmVzcykK
K0ZpbHRlck9wZXJhdGlvbnMgQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kRnVuYyhjb25zdCBB
bmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmcm9tLCBjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiB0bywgZG91YmxlIHByb2dyZXNzKQogewogICAgIEZpbHRlck9wZXJh
dGlvbnMgcmVzdWx0OwogCkBAIC0xNzAsNyArMTcwLDcgQEAgc3RhdGljIGlubGluZSBGaWx0ZXJP
cGVyYXRpb25zIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBGaWx0
ZXIKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAg
ICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZyb21PcCA9IChpIDwgZnJvbVNpemUpID8gZnJv
bS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwogICAgICAgICAgICAgUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gdG9PcCA9IChpIDwgdG9TaXplKSA/IHRvLm9wZXJhdGlvbnMoKVtpXS5nZXQoKSA6
IDA7Ci0gICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZGVkT3AgPSB0b09w
ID8gdG9PcC0+YmxlbmQoZnJvbU9wLmdldCgpLCBwcm9ncmVzcykgOiAoZnJvbU9wID8gZnJvbU9w
LT5ibGVuZCgwLCBwcm9ncmVzcywgdHJ1ZSkgOiBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4o
MCkpOworICAgICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmRlZE9wID0gdG9P
cCA/IHRvT3AtPmJsZW5kKGFuaW0sIGZyb21PcC5nZXQoKSwgcHJvZ3Jlc3MpIDogKGZyb21PcCA/
IGZyb21PcC0+YmxlbmQoYW5pbSwgMCwgcHJvZ3Jlc3MsIHRydWUpIDogUGFzc1JlZlB0cjxGaWx0
ZXJPcGVyYXRpb24+KDApKTsKICAgICAgICAgICAgIGlmIChibGVuZGVkT3ApCiAgICAgICAgICAg
ICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wKTsKICAgICAgICAgICAg
IGVsc2UgewpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyBpbmxpbmUgRmlsdGVyT3BlcmF0aW9u
cyBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgY29uc3QgRmlsdGVyCiB9CiAj
ZW5kaWYgLy8gRU5BQkxFKENTU19GSUxURVJTKQogCi1zdGF0aWMgaW5saW5lIEVWaXNpYmlsaXR5
IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBFVmlzaWJpbGl0eSBmcm9tLCBF
VmlzaWJpbGl0eSB0bywgZG91YmxlIHByb2dyZXNzKQorRVZpc2liaWxpdHkgQ1NTUHJvcGVydHlB
bmltYXRpb246OmJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBFVmlzaWJpbGl0
eSBmcm9tLCBFVmlzaWJpbGl0eSB0bywgZG91YmxlIHByb2dyZXNzKQogewogICAgIC8vIEFueSBu
b24temVybyByZXN1bHQgbWVhbnMgd2UgY29uc2lkZXIgdGhlIG9iamVjdCB0byBiZSB2aXNpYmxl
LiBPbmx5IGF0IDAgZG8gd2UgY29uc2lkZXIgdGhlIG9iamVjdCB0byBiZQogICAgIC8vIGludmlz
aWJsZS4gVGhlIGludmlzaWJsZSB2YWx1ZSB3ZSB1c2UgKEhJRERFTiB2cy4gQ09MTEFQU0UpIGRl
cGVuZHMgb24gdGhlIHNwZWNpZmllZCBmcm9tL3RvIHZhbHVlcy4KQEAgLTIwMyw3ICsyMDMsNyBA
QCBzdGF0aWMgaW5saW5lIEVWaXNpYmlsaXR5IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNl
KiBhbmltLCBFVmlzaWJpbGl0eSBmcm9tLAogICAgIHJldHVybiByZXN1bHQgPiAwLiA/IFZJU0lC
TEUgOiAodG8gIT0gVklTSUJMRSA/IHRvIDogZnJvbSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgTGVu
Z3RoQm94IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBMZW5ndGhC
b3gmIGZyb20sIGNvbnN0IExlbmd0aEJveCYgdG8sIGRvdWJsZSBwcm9ncmVzcykKK0xlbmd0aEJv
eCBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFu
aW0sIGNvbnN0IExlbmd0aEJveCYgZnJvbSwgY29uc3QgTGVuZ3RoQm94JiB0bywgZG91YmxlIHBy
b2dyZXNzKQogewogICAgIC8vIExlbmd0aCB0eXBlcyBoYXZlIHRvIG1hdGNoIHRvIGFuaW1hdGUK
ICAgICBpZiAoZnJvbS50b3AoKS50eXBlKCkgIT0gdG8udG9wKCkudHlwZSgpCkBAIC0yMjAsNyAr
MjIwLDcgQEAgc3RhdGljIGlubGluZSBMZW5ndGhCb3ggYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlv
bkJhc2UqIGFuaW0sIGNvbnN0IExlbmd0aEJveCYgZnIKIH0KIAogI2lmIEVOQUJMRShTVkcpCi1z
dGF0aWMgaW5saW5lIFNWR0xlbmd0aCBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNv
bnN0IFNWR0xlbmd0aCYgZnJvbSwgY29uc3QgU1ZHTGVuZ3RoJiB0bywgZG91YmxlIHByb2dyZXNz
KQorU1ZHTGVuZ3RoIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoY29uc3QgQW5pbWF0
aW9uQmFzZSosIGNvbnN0IFNWR0xlbmd0aCYgZnJvbSwgY29uc3QgU1ZHTGVuZ3RoJiB0bywgZG91
YmxlIHByb2dyZXNzKQogewogICAgIHJldHVybiB0by5ibGVuZChmcm9tLCBuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KHByb2dyZXNzKSk7CiB9CkBAIC0yNDcsNyArMjQ3LDcgQEAgc3RhdGljIGlubGlu
ZSBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGNyb3NzZmFkZUJsZW5kKGNvbnN0IEFuaW1hdGlvbkJh
c2UqLCBTdHlsZUMKICAgICByZXR1cm4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKGNyb3Nz
ZmFkZVZhbHVlLmdldCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFN0eWxlSW1h
Z2U+IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBTdHlsZUltYWdlKiBmcm9t
LCBTdHlsZUltYWdlKiB0bywgZG91YmxlIHByb2dyZXNzKQorUGFzc1JlZlB0cjxTdHlsZUltYWdl
PiBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFu
aW0sIFN0eWxlSW1hZ2UqIGZyb20sIFN0eWxlSW1hZ2UqIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7
CiAgICAgaWYgKCFmcm9tIHx8ICF0bykKICAgICAgICAgcmV0dXJuIHRvOwpAQCAtMjYwLDcgKzI2
MCw3IEBAIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBibGVuZEZ1bmMoY29u
c3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgU3R5bGVJCiAgICAgcmV0dXJuIHRvOwogfQogCi1zdGF0
aWMgaW5saW5lIE5pbmVQaWVjZUltYWdlIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBh
bmltLCBjb25zdCBOaW5lUGllY2VJbWFnZSYgZnJvbSwgY29uc3QgTmluZVBpZWNlSW1hZ2UmIHRv
LCBkb3VibGUgcHJvZ3Jlc3MpCitOaW5lUGllY2VJbWFnZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6
YmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IE5pbmVQaWVjZUltYWdl
JiBmcm9tLCBjb25zdCBOaW5lUGllY2VJbWFnZSYgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAg
ICBpZiAoIWZyb20uaGFzSW1hZ2UoKSB8fCAhdG8uaGFzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJu
IHRvOwpAQCAtMzY0LDcgKzM2NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBibGVu
ZChjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBSZW5kZXJTdHlsZSogZHN0LCBjb25zdCBSZW5k
ZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3QK
ICAgICB7Ci0gICAgICAgIChkc3QtPiptX3NldHRlcikoYmxlbmRGdW5jKGFuaW0sIChhLT4qUHJv
cGVydHlXcmFwcGVyR2V0dGVyPFQ+OjptX2dldHRlcikoKSwgKGItPipQcm9wZXJ0eVdyYXBwZXJH
ZXR0ZXI8VD46Om1fZ2V0dGVyKSgpLCBwcm9ncmVzcykpOworICAgICAgICAoZHN0LT4qbV9zZXR0
ZXIpKENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoYW5pbSwgKGEtPipQcm9wZXJ0eVdy
YXBwZXJHZXR0ZXI8VD46Om1fZ2V0dGVyKSgpLCAoYi0+KlByb3BlcnR5V3JhcHBlckdldHRlcjxU
Pjo6bV9nZXR0ZXIpKCksIHByb2dyZXNzKSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CkBAIC0zODIs
NyArMzgyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGJsZW5kKGNvbnN0IEFuaW1h
dGlvbkJhc2UqIGFuaW0sIFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBhLCBj
b25zdCBSZW5kZXJTdHlsZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdAogICAgIHsKLSAgICAg
ICAgKGRzdC0+Km1fc2V0dGVyKShibGVuZEZ1bmMoYW5pbSwgKGEtPipQcm9wZXJ0eVdyYXBwZXJH
ZXR0ZXI8VCo+OjptX2dldHRlcikoKSwgKGItPipQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VCo+Ojpt
X2dldHRlcikoKSwgcHJvZ3Jlc3MpKTsKKyAgICAgICAgKGRzdC0+Km1fc2V0dGVyKShDU1NQcm9w
ZXJ0eUFuaW1hdGlvbjo6YmxlbmRGdW5jKGFuaW0sIChhLT4qUHJvcGVydHlXcmFwcGVyR2V0dGVy
PFQqPjo6bV9nZXR0ZXIpKCksIChiLT4qUHJvcGVydHlXcmFwcGVyR2V0dGVyPFQqPjo6bV9nZXR0
ZXIpKCksIHByb2dyZXNzKSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CkBAIC00MjIsNyArNDIyLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2Uq
IGFuaW0sIFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5k
ZXJTdHlsZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdAogICAgIHsKLSAgICAgICAgKGRzdC0+
Km1fc2V0dGVyKShibGVuZEZ1bmMoYW5pbSwgKGEtPipQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8Q29s
b3I+OjptX2dldHRlcikoKSwgKGItPipQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8Q29sb3I+OjptX2dl
dHRlcikoKSwgcHJvZ3Jlc3MpKTsKKyAgICAgICAgKGRzdC0+Km1fc2V0dGVyKShDU1NQcm9wZXJ0
eUFuaW1hdGlvbjo6YmxlbmRGdW5jKGFuaW0sIChhLT4qUHJvcGVydHlXcmFwcGVyR2V0dGVyPENv
bG9yPjo6bV9nZXR0ZXIpKCksIChiLT4qUHJvcGVydHlXcmFwcGVyR2V0dGVyPENvbG9yPjo6bV9n
ZXR0ZXIpKCksIHByb2dyZXNzKSk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CkBAIC00NDQsNyArNDQ0
LDcgQEAgcHVibGljOgogICAgICAgICBmbG9hdCBmcm9tT3BhY2l0eSA9IGEtPm9wYWNpdHkoKTsK
IAogICAgICAgICAvLyBUaGlzIG1ha2VzIHN1cmUgd2UgcHV0IHRoZSBvYmplY3QgYmVpbmcgYW5p
bWF0ZWQgaW50byBhIFJlbmRlckxheWVyIGR1cmluZyB0aGUgYW5pbWF0aW9uCi0gICAgICAgIGRz
dC0+c2V0T3BhY2l0eShibGVuZEZ1bmMoYW5pbSwgKGZyb21PcGFjaXR5ID09IDEpID8gMC45OTk5
OTlmIDogZnJvbU9wYWNpdHksIGItPm9wYWNpdHkoKSwgcHJvZ3Jlc3MpKTsKKyAgICAgICAgZHN0
LT5zZXRPcGFjaXR5KENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoYW5pbSwgKGZyb21P
cGFjaXR5ID09IDEpID8gMC45OTk5OTlmIDogZnJvbU9wYWNpdHksIGItPm9wYWNpdHkoKSwgcHJv
Z3Jlc3MpKTsKICAgICB9CiB9OwogCkBAIC00NTksNyArNDU5LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIFJlbmRlclN0eWxl
KiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYiwgZG91Ymxl
IHByb2dyZXNzKSBjb25zdAogICAgIHsKLSAgICAgICAgZHN0LT5zZXRUcmFuc2Zvcm0oYmxlbmRG
dW5jKGFuaW0sIGEtPnRyYW5zZm9ybSgpLCBiLT50cmFuc2Zvcm0oKSwgcHJvZ3Jlc3MpKTsKKyAg
ICAgICAgZHN0LT5zZXRUcmFuc2Zvcm0oQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kRnVuYyhh
bmltLCBhLT50cmFuc2Zvcm0oKSwgYi0+dHJhbnNmb3JtKCksIHByb2dyZXNzKSk7CiAgICAgfQog
fTsKIApAQCAtNDc1LDcgKzQ3NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBibGVu
ZChjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBSZW5kZXJTdHlsZSogZHN0LCBjb25zdCBSZW5k
ZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3QK
ICAgICB7Ci0gICAgICAgIGRzdC0+c2V0RmlsdGVyKGJsZW5kRnVuYyhhbmltLCBhLT5maWx0ZXIo
KSwgYi0+ZmlsdGVyKCksIHByb2dyZXNzKSk7CisgICAgICAgIGRzdC0+c2V0RmlsdGVyKENTU1By
b3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoYW5pbSwgYS0+ZmlsdGVyKCksIGItPmZpbHRlcigp
LCBwcm9ncmVzcykpOwogICAgIH0KIH07CiAjZW5kaWYKQEAgLTU2NSw3ICs1NjUsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogc3JjU2hhZG93ID0gc2hhZG93Rm9y
QmxlbmRpbmcoc2hhZG93QSwgc2hhZG93Qik7CiAgICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRh
KiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhzaGFkb3dCLCBzaGFkb3dBKTsKIAotICAg
ICAgICAgICAgT3duUHRyPFNoYWRvd0RhdGE+IGJsZW5kZWRTaGFkb3cgPSBibGVuZEZ1bmMoYW5p
bSwgc3JjU2hhZG93LCBkc3RTaGFkb3csIHByb2dyZXNzKTsKKyAgICAgICAgICAgIE93blB0cjxT
aGFkb3dEYXRhPiBibGVuZGVkU2hhZG93ID0gQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kRnVu
YyhhbmltLCBzcmNTaGFkb3csIGRzdFNoYWRvdywgcHJvZ3Jlc3MpOwogICAgICAgICAgICAgU2hh
ZG93RGF0YSogYmxlbmRlZFNoYWRvd1B0ciA9IGJsZW5kZWRTaGFkb3cuZ2V0KCk7CiAKICAgICAg
ICAgICAgIGlmICghbGFzdFNoYWRvdykKQEAgLTYwOCw3ICs2MDgsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogc3JjU2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmco
ZnJvbVNoYWRvdywgdG9TaGFkb3cpOwogICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogZHN0
U2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcodG9TaGFkb3csIGZyb21TaGFkb3cpOwogCi0gICAg
ICAgICAgICBPd25QdHI8U2hhZG93RGF0YT4gYmxlbmRlZFNoYWRvdyA9IGJsZW5kRnVuYyhhbmlt
LCBzcmNTaGFkb3csIGRzdFNoYWRvdywgcHJvZ3Jlc3MpOworICAgICAgICAgICAgT3duUHRyPFNo
YWRvd0RhdGE+IGJsZW5kZWRTaGFkb3cgPSBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRGdW5j
KGFuaW0sIHNyY1NoYWRvdywgZHN0U2hhZG93LCBwcm9ncmVzcyk7CiAgICAgICAgICAgICAvLyBJ
bnNlcnQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaXN0IHRvIHByZXNlcnZlIHRoZSBvcmRlci4KICAg
ICAgICAgICAgIGJsZW5kZWRTaGFkb3ctPnNldE5leHQobmV3U2hhZG93RGF0YS5yZWxlYXNlKCkp
OwogICAgICAgICAgICAgbmV3U2hhZG93RGF0YSA9IGJsZW5kZWRTaGFkb3cucmVsZWFzZSgpOwpA
QCAtNjU4LDcgKzY1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZyb21Db2xvciA9IGEtPmNv
bG9yKCk7CiAgICAgICAgIGlmICghdG9Db2xvci5pc1ZhbGlkKCkpCiAgICAgICAgICAgICB0b0Nv
bG9yID0gYi0+Y29sb3IoKTsKLSAgICAgICAgKGRzdC0+Km1fc2V0dGVyKShibGVuZEZ1bmMoYW5p
bSwgZnJvbUNvbG9yLCB0b0NvbG9yLCBwcm9ncmVzcykpOworICAgICAgICAoZHN0LT4qbV9zZXR0
ZXIpKENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoYW5pbSwgZnJvbUNvbG9yLCB0b0Nv
bG9yLCBwcm9ncmVzcykpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTc0Nyw3ICs3NDcsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5p
bSwgRmlsbExheWVyKiBkc3QsIGNvbnN0IEZpbGxMYXllciogYSwgY29uc3QgRmlsbExheWVyKiBi
LCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiAgICAgewotICAgICAgICAoZHN0LT4qbV9zZXR0ZXIp
KGJsZW5kRnVuYyhhbmltLCAoYS0+KkZpbGxMYXllclByb3BlcnR5V3JhcHBlckdldHRlcjxUPjo6
bV9nZXR0ZXIpKCksIChiLT4qRmlsbExheWVyUHJvcGVydHlXcmFwcGVyR2V0dGVyPFQ+OjptX2dl
dHRlcikoKSwgcHJvZ3Jlc3MpKTsKKyAgICAgICAgKGRzdC0+Km1fc2V0dGVyKShDU1NQcm9wZXJ0
eUFuaW1hdGlvbjo6YmxlbmRGdW5jKGFuaW0sIChhLT4qRmlsbExheWVyUHJvcGVydHlXcmFwcGVy
R2V0dGVyPFQ+OjptX2dldHRlcikoKSwgKGItPipGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXJHZXR0
ZXI8VD46Om1fZ2V0dGVyKSgpLCBwcm9ncmVzcykpOwogICAgIH0KIAogcHJvdGVjdGVkOgpAQCAt
NzY1LDcgKzc2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBibGVuZChjb25zdCBB
bmltYXRpb25CYXNlKiBhbmltLCBGaWxsTGF5ZXIqIGRzdCwgY29uc3QgRmlsbExheWVyKiBhLCBj
b25zdCBGaWxsTGF5ZXIqIGIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3QKICAgICB7Ci0gICAgICAg
IChkc3QtPiptX3NldHRlcikoYmxlbmRGdW5jKGFuaW0sIChhLT4qRmlsbExheWVyUHJvcGVydHlX
cmFwcGVyR2V0dGVyPFQqPjo6bV9nZXR0ZXIpKCksIChiLT4qRmlsbExheWVyUHJvcGVydHlXcmFw
cGVyR2V0dGVyPFQqPjo6bV9nZXR0ZXIpKCksIHByb2dyZXNzKSk7CisgICAgICAgIChkc3QtPipt
X3NldHRlcikoQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kRnVuYyhhbmltLCAoYS0+KkZpbGxM
YXllclByb3BlcnR5V3JhcHBlckdldHRlcjxUKj46Om1fZ2V0dGVyKSgpLCAoYi0+KkZpbGxMYXll
clByb3BlcnR5V3JhcHBlckdldHRlcjxUKj46Om1fZ2V0dGVyKSgpLCBwcm9ncmVzcykpOwogICAg
IH0KIAogcHJvdGVjdGVkOgpAQCAtOTIyLDkgKzkyMiw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgdm9pZCBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBSZW5kZXJTdHlsZSogZHN0
LCBjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9n
cmVzcykgY29uc3QKICAgICB7Ci0gICAgICAgIGRzdC0+c2V0RmxleEJhc2lzKGJsZW5kRnVuYyhh
bmltLCBhLT5mbGV4QmFzaXMoKSwgYi0+ZmxleEJhc2lzKCksIHByb2dyZXNzKSk7Ci0gICAgICAg
IGRzdC0+c2V0RmxleEdyb3coYmxlbmRGdW5jKGFuaW0sIGEtPmZsZXhHcm93KCksIGItPmZsZXhH
cm93KCksIHByb2dyZXNzKSk7Ci0gICAgICAgIGRzdC0+c2V0RmxleFNocmluayhibGVuZEZ1bmMo
YW5pbSwgYS0+ZmxleFNocmluaygpLCBiLT5mbGV4U2hyaW5rKCksIHByb2dyZXNzKSk7CisgICAg
ICAgIGRzdC0+c2V0RmxleEJhc2lzKENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoYW5p
bSwgYS0+ZmxleEJhc2lzKCksIGItPmZsZXhCYXNpcygpLCBwcm9ncmVzcykpOworICAgICAgICBk
c3QtPnNldEZsZXhHcm93KENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoYW5pbSwgYS0+
ZmxleEdyb3coKSwgYi0+ZmxleEdyb3coKSwgcHJvZ3Jlc3MpKTsKKyAgICAgICAgZHN0LT5zZXRG
bGV4U2hyaW5rKENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoYW5pbSwgYS0+ZmxleFNo
cmluaygpLCBiLT5mbGV4U2hyaW5rKCksIHByb2dyZXNzKSk7CiAgICAgfQogfTsKICNlbmRpZgpA
QCAtOTgxLDcgKzk4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZyb21Db2xvciA9IENvbG9y
KCk7CiAgICAgICAgIGlmICghdG9Db2xvci5pc1ZhbGlkKCkpCiAgICAgICAgICAgICB0b0NvbG9y
ID0gQ29sb3IoKTsKLSAgICAgICAgKGRzdC0+Km1fc2V0dGVyKShibGVuZEZ1bmMoYW5pbSwgZnJv
bUNvbG9yLCB0b0NvbG9yLCBwcm9ncmVzcykpOworICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKENT
U1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZEZ1bmMoYW5pbSwgZnJvbUNvbG9yLCB0b0NvbG9yLCBw
cm9ncmVzcykpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5oCmluZGV4IDUyOTA1NTdiYmMyZjQz
YTNhODMwNjUwZmE2YTg2Yzk3MjdlMGNlYzAuLjFjMWEyNWU0YWFlODYyNTA0N2M2OGY5OWNiNzI2
YTY5MWI2M2M4YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NT
U1Byb3BlcnR5QW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
Q1NTUHJvcGVydHlBbmltYXRpb24uaApAQCAtMzAsNyArMzAsMTggQEAKICNkZWZpbmUgQ1NTUHJv
cGVydHlBbmltYXRpb25faAogCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1
ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIkxl
bmd0aC5oIgorI2luY2x1ZGUgIkxlbmd0aEJveC5oIgorI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIK
KyNpbmNsdWRlICJOaW5lUGllY2VJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3Rh
bnRzLmgiCisjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCisjaW5jbHVkZSAiU2hhZG93RGF0YS5oIgor
I2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1PcGVyYXRpb25zLmgi
CisKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00
OSw2ICs2MCwyOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSGFzaFNldDxDU1NQcm9wZXJ0eUlE
PiBhbmltYXRhYmxlU2hvcnRoYW5kc0FmZmVjdGluZ1Byb3BlcnR5KENTU1Byb3BlcnR5SUQpOwog
CisgICAgc3RhdGljIGludCBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGludCBmcm9t
LCBpbnQgdG8sIGRvdWJsZSBwcm9ncmVzcyk7CisgICAgc3RhdGljIHVuc2lnbmVkIGJsZW5kRnVu
Yyhjb25zdCBBbmltYXRpb25CYXNlKiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIGRvdWJs
ZSBwcm9ncmVzcyk7CisgICAgc3RhdGljIGRvdWJsZSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9u
QmFzZSosIGRvdWJsZSBmcm9tLCBkb3VibGUgdG8sIGRvdWJsZSBwcm9ncmVzcyk7CisgICAgc3Rh
dGljIGZsb2F0IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgZmxvYXQgZnJvbSwgZmxv
YXQgdG8sIGRvdWJsZSBwcm9ncmVzcyk7CisgICAgc3RhdGljIENvbG9yIGJsZW5kRnVuYyhjb25z
dCBBbmltYXRpb25CYXNlKiwgY29uc3QgQ29sb3ImIGZyb20sIGNvbnN0IENvbG9yJiB0bywgZG91
YmxlIHByb2dyZXNzKTsKKyAgICBzdGF0aWMgTGVuZ3RoIGJsZW5kRnVuYyhjb25zdCBBbmltYXRp
b25CYXNlKiwgY29uc3QgTGVuZ3RoJiBmcm9tLCBjb25zdCBMZW5ndGgmIHRvLCBkb3VibGUgcHJv
Z3Jlc3MpOworICAgIHN0YXRpYyBMZW5ndGhTaXplIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25C
YXNlKiwgY29uc3QgTGVuZ3RoU2l6ZSYgZnJvbSwgY29uc3QgTGVuZ3RoU2l6ZSYgdG8sIGRvdWJs
ZSBwcm9ncmVzcyk7CisgICAgc3RhdGljIEludFNpemUgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlv
bkJhc2UqLCBjb25zdCBJbnRTaXplJiBmcm9tLCBjb25zdCBJbnRTaXplJiB0bywgZG91YmxlIHBy
b2dyZXNzKTsKKyAgICBzdGF0aWMgU2hhZG93U3R5bGUgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlv
bkJhc2UqLCBTaGFkb3dTdHlsZSBmcm9tLCBTaGFkb3dTdHlsZSB0bywgZG91YmxlIHByb2dyZXNz
KTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxTaGFkb3dEYXRhPiBibGVuZEZ1bmMoY29uc3QgQW5p
bWF0aW9uQmFzZSosIGNvbnN0IFNoYWRvd0RhdGEqIGZyb20sIGNvbnN0IFNoYWRvd0RhdGEqIHRv
LCBkb3VibGUgcHJvZ3Jlc3MpOworICAgIHN0YXRpYyBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5k
RnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJv
bSwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYsIGRvdWJsZSBwcm9ncmVzcyk7CisjaWYgRU5B
QkxFKENTU19GSUxURVJTKQorICAgIHN0YXRpYyBGaWx0ZXJPcGVyYXRpb25zIGJsZW5kRnVuYyhj
b25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZnJvbSwgY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgdG8sIGRvdWJsZSBwcm9ncmVzcyk7CisjZW5kaWYgLy8gRU5BQkxF
KENTU19GSUxURVJTKQorICAgIHN0YXRpYyBFVmlzaWJpbGl0eSBibGVuZEZ1bmMoY29uc3QgQW5p
bWF0aW9uQmFzZSosIEVWaXNpYmlsaXR5IGZyb20sIEVWaXNpYmlsaXR5IHRvLCBkb3VibGUgcHJv
Z3Jlc3MpOworICAgIHN0YXRpYyBMZW5ndGhCb3ggYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJh
c2UqLCBjb25zdCBMZW5ndGhCb3gmIGZyb20sIGNvbnN0IExlbmd0aEJveCYgdG8sIGRvdWJsZSBw
cm9ncmVzcyk7CisjaWYgRU5BQkxFKFNWRykKKyAgICBzdGF0aWMgU1ZHTGVuZ3RoIGJsZW5kRnVu
Yyhjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgU1ZHTGVuZ3RoJiBmcm9tLCBjb25zdCBTVkdM
ZW5ndGgmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpOworI2VuZGlmIC8vIEVOQUJMRShTVkcpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJh
c2UqLCBTdHlsZUltYWdlKiBmcm9tLCBTdHlsZUltYWdlKiB0bywgZG91YmxlIHByb2dyZXNzKTsK
KyAgICBzdGF0aWMgTmluZVBpZWNlSW1hZ2UgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2Uq
LCBjb25zdCBOaW5lUGllY2VJbWFnZSYgZnJvbSwgY29uc3QgTmluZVBpZWNlSW1hZ2UmIHRvLCBk
b3VibGUgcHJvZ3Jlc3MpOworCiAgICAgLy8gUmV0dXJuIHRydWUgaWYgd2UgbmVlZCB0byBzdGFy
dCBzb2Z0d2FyZSBhbmltYXRpb24gdGltZXJzCiAgICAgc3RhdGljIGJvb2wgYmxlbmRQcm9wZXJ0
aWVzKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBDU1NQcm9wZXJ0eUlELCBSZW5kZXJTdHlsZSogZHN0
LCBjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9n
cmVzcyk7CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVy
LmgKaW5kZXggMjc3MGI0Y2VkNmNmNTgzMDM0ZTA3MTI3OWY4MGE0NTg2YzdmNzYyZS4uNDczNzE1
MjIzNzJiZWQxYzkyYzdlNjJhYTA1NjNiOTg1YTI0MmIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlck51bWJlclBhcmFtZXRlci5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgYWRkVmFsdWUoZG91YmxlIHZhbHVlKSB7IG1fZGF0YS5hcHBlbmQodmFsdWUpOyB9CiAg
ICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gYmxlbmQo
Y29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpCisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gYmxlbmQoY29uc3QgQW5p
bWF0aW9uQmFzZSosIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciogZnJvbSwgZG91YmxlIHBy
b2dyZXNzKQogICAgIHsKICAgICAgICAgaWYgKCFmcm9tIHx8ICFpc1NhbWVUeXBlKCpmcm9tKSkK
ICAgICAgICAgICAgIHJldHVybiB0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24u
Y3BwCmluZGV4IGY1YzgxNzI0Zjc4N2Q1N2JjMDBmOGE5NDI2ZWZiODgwZmM5MmI1ZTIuLjFhYzY2
Y2VhNTEyNmY0MjBmNTJmYTIwYWE0OGIxNjYxYjNkZWRkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlck9wZXJhdGlvbi5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIGJvb2wgY2hlY2tDdXN0
b21GaWx0ZXJQYXJhbWV0ZXJzT3JkZXIoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYg
cGEKIH0KICNlbmRpZgogCi12b2lkIGJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhjb25zdCBD
dXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBmcm9tTGlzdCwgY29uc3QgQ3VzdG9tRmlsdGVyUGFy
YW1ldGVyTGlzdCYgdG9MaXN0LCBkb3VibGUgcHJvZ3Jlc3MsIEN1c3RvbUZpbHRlclBhcmFtZXRl
ckxpc3QmIHJlc3VsdExpc3QpCit2b2lkIGJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhjb25z
dCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBm
cm9tTGlzdCwgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgdG9MaXN0LCBkb3VibGUg
cHJvZ3Jlc3MsIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHJlc3VsdExpc3QpCiB7CiAgICAg
Ly8gVGhpcyBtZXRob2QgZXhwZWN0cyBib3RoIGxpc3RzIHRvIGJlIHNvcnRlZCBieSBwYXJhbWV0
ZXIgbmFtZSBhbmQgdGhlIHJlc3VsdCBsaXN0IGlzIGFsc28gc29ydGVkLgogICAgIEFTU0VSVChj
aGVja0N1c3RvbUZpbHRlclBhcmFtZXRlcnNPcmRlcihmcm9tTGlzdCkpOwpAQCAtNzQsNyArNzQs
NyBAQCB2b2lkIGJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhjb25zdCBDdXN0b21GaWx0ZXJQ
YXJhbWV0ZXJMaXN0JiBmcm9tTGlzdCwgY29ucwogICAgICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0
ZXIqIHBhcmFtRnJvbSA9IGZyb21MaXN0LmF0KGZyb21MaXN0SW5kZXgpLmdldCgpOwogICAgICAg
ICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIHBhcmFtVG8gPSB0b0xpc3QuYXQodG9MaXN0SW5kZXgp
LmdldCgpOwogICAgICAgICBpZiAocGFyYW1Gcm9tLT5uYW1lKCkgPT0gcGFyYW1Uby0+bmFtZSgp
KSB7Ci0gICAgICAgICAgICByZXN1bHRMaXN0LmFwcGVuZChwYXJhbVRvLT5ibGVuZChwYXJhbUZy
b20sIHByb2dyZXNzKSk7CisgICAgICAgICAgICByZXN1bHRMaXN0LmFwcGVuZChwYXJhbVRvLT5i
bGVuZChhbmltLCBwYXJhbUZyb20sIHByb2dyZXNzKSk7CiAgICAgICAgICAgICArK2Zyb21MaXN0
SW5kZXg7CiAgICAgICAgICAgICArK3RvTGlzdEluZGV4OwogICAgICAgICAgICAgY29udGludWU7
CkBAIC0xMTEsNyArMTExLDcgQEAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjp+Q3VzdG9tRmlsdGVy
T3BlcmF0aW9uKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEN1c3RvbUZp
bHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUg
cHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQorUGFzc1JlZlB0cjxGaWx0ZXJPcGVy
YXRpb24+IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSog
YW5pbSwgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wg
YmxlbmRUb1Bhc3N0aHJvdWdoKQogewogICAgIC8vIEZJWE1FOiBUaGVyZSdzIG5vIHdheSB0byBk
ZWNpZGUgd2hhdCBpcyB0aGUgInBhc3N0aHJvdWdoIGZpbHRlciIgZm9yIHNoYWRlcnMgdXNpbmcg
dGhlIGN1cnJlbnQgQ1NTIFN5bnRheC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODQ5MDMKQEAgLTEyOCw3ICsxMjgsNyBAQCBQYXNzUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVy
YXRpb24qCiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIAogICAgIEN1c3RvbUZpbHRlclBhcmFt
ZXRlckxpc3QgYW5pbWF0ZWRQYXJhbWV0ZXJzOwotICAgIGJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1l
dGVycyhmcm9tT3AtPm1fcGFyYW1ldGVycywgbV9wYXJhbWV0ZXJzLCBwcm9ncmVzcywgYW5pbWF0
ZWRQYXJhbWV0ZXJzKTsKKyAgICBibGVuZEN1c3RvbUZpbHRlclBhcmFtZXRlcnMoYW5pbSwgZnJv
bU9wLT5tX3BhcmFtZXRlcnMsIG1fcGFyYW1ldGVycywgcHJvZ3Jlc3MsIGFuaW1hdGVkUGFyYW1l
dGVycyk7CiAgICAgcmV0dXJuIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKG1fcHJvZ3Jh
bSwgYW5pbWF0ZWRQYXJhbWV0ZXJzLCBtX21lc2hSb3dzLCBtX21lc2hDb2x1bW5zLCBtX21lc2hC
b3hUeXBlLCBtX21lc2hUeXBlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgK
aW5kZXggYjRlOGIyOTM2MGI4NTc4OTgwOTFjY2VkMWJjNTc4MGJjZjc5YjM3NC4uYTExMGExMzhi
Njk0ZTg4ZDI0YTg3YTAxMGYwYWEwYTY0YjFhMmRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9w
ZXJhdGlvbi5oCkBAIC0zMSw2ICszMSw3IEBACiAjZGVmaW5lIEN1c3RvbUZpbHRlck9wZXJhdGlv
bl9oCiAKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlBbmlt
YXRpb24uaCIKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFtLmgiCiAjaW5jbHVkZSAiRmls
dGVyT3BlcmF0aW9uLmgiCiAKQEAgLTQ0LDcgKzQ1LDcgQEAgY2xhc3MgQ3VzdG9tRmlsdGVyUGFy
YW1ldGVyOwogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gPiBD
dXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0OwogCiBib29sIGN1c3RvbUZpbHRlclBhcmFtZXRlcnNF
cXVhbChjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiwgY29uc3QgQ3VzdG9tRmlsdGVy
UGFyYW1ldGVyTGlzdCYpOwotdm9pZCBibGVuZEN1c3RvbUZpbHRlclBhcmFtZXRlcnMoY29uc3Qg
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgbGlzdEZyb20sIGNvbnN0IEN1c3RvbUZpbHRlclBh
cmFtZXRlckxpc3QmIGxpc3RUbywgZG91YmxlIHByb2dyZXNzLCBDdXN0b21GaWx0ZXJQYXJhbWV0
ZXJMaXN0JiByZXN1bHRMaXN0KTsKK3ZvaWQgYmxlbmRDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzKGNv
bnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBsaXN0
RnJvbSwgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgbGlzdFRvLCBkb3VibGUgcHJv
Z3Jlc3MsIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHJlc3VsdHMpOwogCiBjbGFzcyBDdXN0
b21GaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKIHB1YmxpYzoKQEAg
LTgwLDcgKzgxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBhZmZlY3RzT3BhY2l0eSgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgbW92ZXNQaXhlbHMoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25z
dCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFz
c3Rocm91Z2ggPSBmYWxzZSk7CiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJQYXJhbWV0ZXIuaAppbmRleCA4Mjk4MGQ2Yzc4MGYwODBjYzdkNzAzZmFhOThjNjJiNmY1ZDNl
YTg0Li45N2JlMjljYjI1YmQ1ZjM4NmQ3NTk0ZTI5NzU3YzMzZmZhZWQ1ODM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBh
cmFtZXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIAog
ICAgIGJvb2wgaXNTYW1lVHlwZShjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXImIG90aGVyKSBj
b25zdCB7IHJldHVybiBwYXJhbWV0ZXJUeXBlKCkgPT0gb3RoZXIucGFyYW1ldGVyVHlwZSgpOyB9
CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gYmxl
bmQoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiwgZG91YmxlIHByb2dyZXNzKSA9IDA7Cisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gYmxlbmQoY29uc3Qg
QW5pbWF0aW9uQmFzZSosIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciosIGRvdWJsZSBwcm9n
cmVzcykgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRl
clBhcmFtZXRlciYpIGNvbnN0ID0gMDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ3VzdG9t
RmlsdGVyUGFyYW1ldGVyJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CiBwcm90
ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKaW5kZXggNjU2OTI2ZTI4ZTM1N2Q2MTFlMTFk
NjM5MDkwODkyY2E2YmQ2YzUxMy4uMWIzMGZmYjRiOTVhOTU0M2ZiZjIxODI0ZGFjZjgyZmU2ZDk4
YzQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBCYXNpY0NvbG9y
TWF0cml4RmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20s
IGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCitQYXNzUmVmUHRyPEZp
bHRlck9wZXJhdGlvbj4gQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29u
c3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHBy
b2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJv
bS0+aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtNjAsNyArNjAs
NyBAQCBkb3VibGUgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6cGFzc3Rocm91Z2hB
bW91bnQoKSBjb25zdAogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJh
c2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkK
K1Bhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVy
T3BlcmF0aW9uOjpibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgRmlsdGVyT3BlcmF0
aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewog
ICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlzKSkKICAgICAgICAgcmV0dXJu
IHRoaXM7CkBAIC05MCw3ICs5MCw3IEBAIGRvdWJsZSBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmls
dGVyT3BlcmF0aW9uOjpwYXNzdGhyb3VnaEFtb3VudCgpIGNvbnN0CiAgICAgfQogfQogCi1QYXNz
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gR2FtbWFGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0
IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNz
dGhyb3VnaCkKK1Bhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBHYW1tYUZpbHRlck9wZXJhdGlv
bjo6YmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJv
bSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAo
ZnJvbSAmJiAhZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpA
QCAtMTExLDcgKzExMSw3IEBAIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBHYW1tYUZpbHRl
ck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmCiAgICAgICAgIFdlYkNv
cmU6OmJsZW5kKGZyb21PZmZzZXQsIG1fb2Zmc2V0LCBwcm9ncmVzcyksIG1fdHlwZSk7CiB9CiAK
LVBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBCbHVyRmlsdGVyT3BlcmF0aW9uOjpibGVuZChj
b25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRv
UGFzc3Rocm91Z2gpCitQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmx1ckZpbHRlck9wZXJh
dGlvbjo6YmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbiog
ZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBp
ZiAoZnJvbSAmJiAhZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlz
OwpAQCAtMTI2LDcgKzEyNiw3IEBAIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBCbHVyRmls
dGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyCiAgICAgcmV0dXJu
IEJsdXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShtX3N0ZERldmlhdGlvbi5ibGVuZChmcm9tTGVu
Z3RoLCBwcm9ncmVzcyksIG1fdHlwZSk7CiB9CiAKLVBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9u
PiBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24q
IGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCitQYXNzUmVm
UHRyPEZpbHRlck9wZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29u
c3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHBy
b2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJv
bS0+aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0
aW9uLmgKaW5kZXggZTcyNjAwYzQ3ZTM2NGRiNjI1NmIzNzlmM2JhNDYzY2QzOThkMjQ0My4uOGQw
N2JkYTkxMTE2ZjBiNzU2M2RlNjJlNTgyOGNlMTZlNWNkZDZjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlv
bi5oCkBAIC00Niw2ICs0Niw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQW5p
bWF0aW9uQmFzZTsKKwogLy8gQ1NTIEZpbHRlcnMKIAogI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkp
CkBAIC03OCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBGaWx0ZXJPcGVyYXRpb24mKSBjb25zdCA9IDA7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQog
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmls
dGVyT3BlcmF0aW9uKiAvKmZyb20qLywgZG91YmxlIC8qcHJvZ3Jlc3MqLywgYm9vbCAvKmJsZW5k
VG9QYXNzdGhyb3VnaCovID0gZmFsc2UpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3Qg
RmlsdGVyT3BlcmF0aW9uKiAvKmZyb20qLywgZG91YmxlIC8qcHJvZ3Jlc3MqLywgYm9vbCAvKmJs
ZW5kVG9QYXNzdGhyb3VnaCovID0gZmFsc2UpIHsgcmV0dXJuIDA7IH0KIAogICAgIHZpcnR1YWwg
T3BlcmF0aW9uVHlwZSBnZXRPcGVyYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzU2FtZVR5cGUoY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBj
b25zdCB7IHJldHVybiBvLmdldE9wZXJhdGlvblR5cGUoKSA9PSBtX3R5cGU7IH0KQEAgLTE5MSw3
ICsxOTMsNyBAQCBwdWJsaWM6CiAKICAgICBkb3VibGUgYW1vdW50KCkgY29uc3QgeyByZXR1cm4g
bV9hbW91bnQ7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJs
ZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJs
ZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPiBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiwgY29uc3QgRmlsdGVyT3BlcmF0
aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFs
c2UpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRl
ck9wZXJhdGlvbiYgbykgY29uc3QKQEAgLTIyNSw3ICsyMjcsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gT1BB
Q0lUWTsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoID0gZmFsc2UpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVy
YXRpb24+IGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBGaWx0ZXJPcGVyYXRpb24q
IGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7
CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3Bl
cmF0aW9uJiBvKSBjb25zdApAQCAtMjU4LDcgKzI2MCw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUg
ZXhwb25lbnQoKSBjb25zdCB7IHJldHVybiBtX2V4cG9uZW50OyB9CiAgICAgZG91YmxlIG9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJs
ZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSos
IGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CkBAIC0yOTQsNyArMjk2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBhZmZlY3RzT3BhY2l0eSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgbW92ZXNQaXhlbHMoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVu
ZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVu
ZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IEZpbHRlck9wZXJhdGlv
biogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNl
KTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJP
cGVyYXRpb24mIG8pIGNvbnN0CkBAIC0zMzAsNyArMzMyLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBhZmZlY3RzT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIGJvb2wgbW92ZXNQaXhlbHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxz
ZSk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3Qg
QW5pbWF0aW9uQmFzZSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKIAogcHJpdmF0ZToKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDliMzQ3YzIxMjM1N2FiNDRlMTI1NjVlYjA4ODE0ZGQ1NmM4NjBlNGIuLmU5ODE3MmY3ZTg5
NGE1MWNiYjVjMTYyZjMwMDEyNjJlMDAzMzQ4ZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAx
Mi0wOC0yOSAgSm9zaHVhIE5ldHRlcmZpZWxkICA8am5ldHRlcmZpZWxkQHJpbS5jb20+CisKKyAg
ICAgICAgW0NTUyBTaGFkZXJzXSBJbXBsZW1lbnQgdHJhbnNmb3JtIHBhcmFtZXRlciBhbmltYXRp
b25zIGZvciBDU1MgQ3VzdG9tIEZpbHRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk0OTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdCB0cmFuc2Zvcm0gYW5pbWF0aW9ucyBpbiBjc3MzL2ZpbHRl
cnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItYW5pbWF0aW9uLmh0bWwuCisKKyAgICAgICAgKiBjc3Mz
L2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItYW5pbWF0aW9uLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItYW5pbWF0aW9uLmh0bWw6
IEFkZCB0cmFuc2Zvcm0gdGVzdHMuCisgICAgICAgICogY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9j
dXN0b20tZmlsdGVyLXBhcnNlci5qczogQWRkIHN1cHBvcnQgZm9yIG1hdHJpY2llcyAmIHRyYW5z
Zm9ybXMuCisKIDIwMTItMDgtMjkgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4K
IAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBlbmNsb3NpbmdJbnRSZWN0KHJlbmRlcmVyTWFw
cGVkUmVzdWx0KSA9PSBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UXVhZChyZXN1bHQpLmJvdW5kaW5n
Qm94KCkpIDogV2ViQ29yZTo6RmxvYXRSZWN0IFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjph
YnNvbHV0ZVJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0ICYpIGNvbnN0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItYW5pbWF0aW9u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZp
bHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDZmZGUwNzExZGRjNjZlOTI0YjNiNDIy
MTVkOTZiNzgxMjI4YmQ2NGYuLmY0YTlhY2FhZDFmM2NhZTIzZDFjNGY4N2FhOGQwMmE3MWZhMzI1
MDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZp
bHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVy
cy9jdXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0CkBAIC04LDQgKzgs
NSBAQCBQQVNTIC0gIndlYmtpdEZpbHRlciIgcHJvcGVydHkgZm9yICJjdXN0b20tZnJvbS1kaWZm
LXBhcmFtcy1ib3giIGVsZW1lbnQgYXQgMXMgcwogUEFTUyAtICJ3ZWJraXRGaWx0ZXIiIHByb3Bl
cnR5IGZvciAiY3VzdG9tLXRvLWRpZmYtcGFyYW1zLWJveCIgZWxlbWVudCBhdCAxcyBzYXcgc29t
ZXRoaW5nIGNsb3NlIHRvOiBjdXN0b20odXJsKHZlcnRleC1yb3RhdGUudnMpIG5vbmUsIDEgMSBm
aWx0ZXItYm94LCBwYXJhbSAxMCwgcm90YXRlQnkgNjAsIG9mZnNldCAxMCwgYW5vdGhlcl9wYXJh
bSA1KQogUEFTUyAtICJ3ZWJraXRGaWx0ZXIiIHByb3BlcnR5IGZvciAiY3VzdG9tLW1peC1wYXJh
bXMtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IGN1c3RvbSh1cmwo
dmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHBhcmFtIDEwLCBhbm90aGVy
X3BhcmFtIDUsIGZpcnN0X3BhcmFtIDYsIHJvdGF0ZUJ5IDYwLCBvZmZzZXQgMTAsIGxhc3RfcGFy
YW0gNCkKIFBBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9wZXJ0eSBmb3IgImN1c3RvbS1taXgtbnVt
YmVycy1ib3giIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogY3VzdG9tKHVy
bCh2ZXJ0ZXgtcm90YXRlLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgcm90YXRlQnkgNDUsIGEg
NS41LCBiIDExIDE2LjUsIGMgMjIgMjcuNSAzMywgZCAzOC41IDQ0IDQ5LjUpCitQQVNTIC0gIndl
YmtpdEZpbHRlciIgcHJvcGVydHkgZm9yICJjdXN0b20tbWl4LXRyYW5zZm9ybXMtYm94IiBlbGVt
ZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IGN1c3RvbSh1cmwodmVydGV4LXRyYW5z
Zm9ybS1wYXJhbWV0ZXIudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCB0cmFuc2Zvcm0gbWF0cml4
KDEgMCAwIDEgMCAwKSkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1
c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0
ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1sCmluZGV4IGExZWM4MjlhNDAy
ZDQ3YWRjMmEwMTI5NjRlN2NkYjAyNjNjOTRkNjEuLjAxODZmYTA1Yzc0MGY5ZTFlODgyMzc0YmQ3
NTVjZGQ1MjRkNDk3MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0
b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItYW5pbWF0aW9uLmh0bWwKQEAgLTUyLDYgKzUyLDEw
IEBACiAgICAgICAgICNjdXN0b20tbWl4LW51bWJlcnMtYm94IHsKICAgICAgICAgICAgIC13ZWJr
aXQtYW5pbWF0aW9uOiBjdXN0b20tbWl4LW51bWJlcnMtYW5pbSAycyBsaW5lYXI7CiAgICAgICAg
IH0KKworICAgICAgICAjY3VzdG9tLW1peC10cmFuc2Zvcm1zLWJveCB7CisgICAgICAgICAgICAt
d2Via2l0LWFuaW1hdGlvbjogY3VzdG9tLW1peC10cmFuc2Zvcm1zLWFuaW0gMnMgbGluZWFyOwor
ICAgICAgICB9CiAgICAgCiAgICAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBjdXN0b20tZnJvbS1u
b25lLWFuaW0gewogICAgICAgICAgICAgZnJvbSB7IC13ZWJraXQtZmlsdGVyOiBub25lOyB9CkBA
IC05Nyw2ICsxMDEsMTEgQEAKICAgICAgICAgICAgIGZyb20geyAtd2Via2l0LWZpbHRlcjogY3Vz
dG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXJvdGF0ZS52cyksIHJvdGF0ZUJ5IDAsIGEgMSwg
YiAyIDMsIGMgNCA1IDYsIGQgNyA4IDkpOyB9CiAgICAgICAgICAgICB0byAgIHsgLXdlYmtpdC1m
aWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC1yb3RhdGUudnMpLCByb3RhdGVC
eSA5MCwgYSAxMCwgYiAyMCAzMCwgYyA0MCA1MCA2MCwgZCA3MCA4MCA5MCk7IH0KICAgICAgICAg
fQorCisgICAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBjdXN0b20tbWl4LXRyYW5zZm9ybXMtYW5p
bSB7CisgICAgICAgICAgICBmcm9tIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVz
b3VyY2VzL3ZlcnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSwgdHJhbnNmb3JtIHJvdGF0ZVoo
LTEwZGVnKSk7IH0KKyAgICAgICAgICAgIHRvICAgeyAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVy
bCguLi9yZXNvdXJjZXMvdmVydGV4LXRyYW5zZm9ybS1wYXJhbWV0ZXIudnMpLCB0cmFuc2Zvcm0g
cm90YXRlWigxMGRlZykpOyB9CisgICAgICAgIH0KICAgICA8L3N0eWxlPgogICAgIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvY3VzdG9tLWZpbHRlci1wYXJzZXIuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9hbmltYXRpb25zL3Jlc291cmNlcy9hbmltYXRpb24tdGVz
dC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KQEAgLTExNyw3ICsxMjYsOCBAQAogICAgICAgICAgICAg
WyJjdXN0b20tdG8tZGlmZi1wYXJhbXMtYW5pbSIsICAxLCAiY3VzdG9tLXRvLWRpZmYtcGFyYW1z
LWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHVybCh2ZXJ0ZXgtcm90YXRlLnZzKSBub25l
LCAxIDEgZmlsdGVyLWJveCwgcGFyYW0gMTAsIHJvdGF0ZUJ5IDYwLCBvZmZzZXQgMTAsIGFub3Ro
ZXJfcGFyYW0gNSknLCA1XSwKIAogICAgICAgICAgICAgWyJjdXN0b20tbWl4LXBhcmFtcy1hbmlt
IiwgIDEsICJjdXN0b20tbWl4LXBhcmFtcy1ib3giLCAid2Via2l0RmlsdGVyIiwgJ2N1c3RvbSh1
cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHBhcmFtIDEwLCBhbm90
aGVyX3BhcmFtIDUsIGZpcnN0X3BhcmFtIDYsIHJvdGF0ZUJ5IDYwLCBvZmZzZXQgMTAsIGxhc3Rf
cGFyYW0gNCknLCA1XSwKLSAgICAgICAgICAgIFsiY3VzdG9tLW1peC1udW1iZXJzLWFuaW0iLCAg
MSwgImN1c3RvbS1taXgtbnVtYmVycy1ib3giLCAid2Via2l0RmlsdGVyIiwgJ2N1c3RvbSh1cmwo
dmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHJvdGF0ZUJ5IDQ1LCBhIDUu
NSwgYiAxMSAxNi41LCBjIDIyIDI3LjUgMzMsIGQgMzguNSA0NCA0OS41KScsIDEwXQorICAgICAg
ICAgICAgWyJjdXN0b20tbWl4LW51bWJlcnMtYW5pbSIsICAxLCAiY3VzdG9tLW1peC1udW1iZXJz
LWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHVybCh2ZXJ0ZXgtcm90YXRlLnZzKSBub25l
LCAxIDEgZmlsdGVyLWJveCwgcm90YXRlQnkgNDUsIGEgNS41LCBiIDExIDE2LjUsIGMgMjIgMjcu
NSAzMywgZCAzOC41IDQ0IDQ5LjUpJywgMTBdLAorICAgICAgICAgICAgWyJjdXN0b20tbWl4LXRy
YW5zZm9ybXMtYW5pbSIsICAxLCAiY3VzdG9tLW1peC10cmFuc2Zvcm1zLWJveCIsICJ3ZWJraXRG
aWx0ZXIiLCAnY3VzdG9tKHVybCh2ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFtZXRlci52cykgbm9uZSwg
MSAxIGZpbHRlci1ib3gsIHRyYW5zZm9ybSBtYXRyaXgoMSAwIDAgMSAwIDApKScsIDAuNV0KICAg
ICAgICAgXTsKICAgICAgICAgcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcyk7CiAgICAg
PC9zY3JpcHQ+CkBAIC0xMzIsNiArMTQyLDcgQEAKICAgICA8ZGl2IGNsYXNzPSJib3giIGlkPSJj
dXN0b20tdG8tZGlmZi1wYXJhbXMtYm94Ij48L2Rpdj4KICAgICA8ZGl2IGNsYXNzPSJib3giIGlk
PSJjdXN0b20tbWl4LXBhcmFtcy1ib3giPjwvZGl2PgogICAgIDxkaXYgY2xhc3M9ImJveCIgaWQ9
ImN1c3RvbS1taXgtbnVtYmVycy1ib3giPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCIgaWQ9
ImN1c3RvbS1taXgtdHJhbnNmb3Jtcy1ib3giPjwvZGl2PgogCiAgICAgPGRpdiBpZD0icmVzdWx0
Ij4KICAgICA8L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNv
dXJjZXMvY3VzdG9tLWZpbHRlci1wYXJzZXIuanMgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMv
cmVzb3VyY2VzL2N1c3RvbS1maWx0ZXItcGFyc2VyLmpzCmluZGV4IDhhMzBiNjI1OTFmNDA4OWIy
Yzg5MzBiYzllZjljYTliMGEzZTdhZDguLmM3NTM3YWM5MDdkNjNiOWZiMTYzMzhjZjc5M2FmZTA3
MzViNjU0YjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMv
Y3VzdG9tLWZpbHRlci1wYXJzZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jl
c291cmNlcy9jdXN0b20tZmlsdGVyLXBhcnNlci5qcwpAQCAtNjQsNiArNjQsMTEgQEAgZnVuY3Rp
b24gbnVtYmVyKHRva2VuKQogICAgIHJldHVybiB0b2tlbi50eXBlID09ICJmbG9hdCIgfHwgdG9r
ZW4udHlwZSA9PSAiaW50ZWdlciI7CiB9CiAKK2Z1bmN0aW9uIHRyYW5zZm9ybSh0b2tlbikKK3sK
KyAgICByZXR1cm4gdG9rZW4udHlwZSA9PSAia2V5d29yZCIgJiYgdG9rZW4udmFsdWUgPT0gInRy
YW5zZm9ybSI7Cit9CisKIC8vIEhlbHBlciBjbGFzcyB0byBpdGVyYXRlIG9uIHRoZSB0b2tlbiBz
dHJlYW0uIEl0IHdpbGwgYWRkIGFuICJlbmQiCiAvLyB0b2tlbiBhdCB0aGUgZW5kIHRvIG1ha2Ug
aXQgZWFzaWVyIHRvIHVzZSB0aGUgImFoZWFkIiBmdW5jdGlvbgogLy8gd2l0aG91dCBjaGVja2lu
ZyBpZiBpdCdzIHRoZSBsYXN0IHRva2VuIGluIHRoZSBzdHJlYW0uCkBAIC0xMTQsNiArMTE5LDE4
IEBAIGZ1bmN0aW9uIHBhcnNlRnVuY3Rpb24obSkKICAgICByZXR1cm4gZnVuY3Rpb25PYmplY3Q7
CiB9CiAKK2Z1bmN0aW9uIHBhcnNlTWF0cml4KG0pCit7CisgICAgdmFyIG1hdHJpeE9iamVjdCA9
IHsKKyAgICAgICAgdHlwZTogIm1hdHJpeCIsCisgICAgfTsKKyAgICBtLnNraXAoKTsKKyAgICBt
LnNraXAoKTsKKyAgICBtYXRyaXhPYmplY3QuYXJndW1lbnRzID0gcGFyc2VMaXN0KG0sIFsiKSIs
ICJlbmQiXSk7CisgICAgbS5za2lwKCk7CisgICAgcmV0dXJuIG1hdHJpeE9iamVjdDsKK30KKwog
Ly8gQ3JlYXRlcyBhIG5ldyAicGFyYW1ldGVyIiBub2RlLiBJdCBleHBlY3RzIHRoYXQgdGhlIGN1
cnJlbnQgdG9rZW4gaXMgdGhlIHBhcmFtZXRlciBuYW1lLgogLy8gSXQgY29uc3VtZXMgZXZlcnl0
aGluZyBiZWZvcmUgdGhlIGZvbGxvd2luZyBjb21tYS4KIGZ1bmN0aW9uIHBhcnNlUGFyYW1ldGVy
KG0pCkBAIC0xMjksNyArMTQ2LDcgQEAgZnVuY3Rpb24gcGFyc2VQYXJhbWV0ZXIobSkKIAogLy8g
Q29uc3VtZXMgYSBsaXN0IG9mIHRva2VucyBiZWZvcmUgcmVhY2hpbmcgdGhlICJlbmRUb2tlbiIg
YW5kIHJldHVybnMgYW4gYXJyYXkgd2l0aCBhbGwgdGhlIHBhcnNlZCBpdGVtcy4KIC8vIE1ha2Vz
IHRoZSBmb2xsb3dpbmcgYXNzdW1wdGlvbnM6Ci0vLyAtIGlmIGEga2V5d29yZCBpcyBmb2xsb3dl
ZCBieSAiKCIgdGhlbiBpdCBpcyBhIHN0YXJ0IG9mIGZ1bmN0aW9uCisvLyAtIGlmIGEga2V5d29y
ZCBpcyBmb2xsb3dlZCBieSAiKCIgdGhlbiBpdCBpcyBhIHN0YXJ0IG9mIGZ1bmN0aW9uLCB1bmxl
c3MgaXQgaXMgYSBtYXRyaXguCiAvLyAtIGlmIGEga2V5d29yZCBpcyBub3QgZm9sbG93ZWQgYnkg
IiwiIGl0IGlzIGEgcGFyYW1ldGVyCiAvLyBLZXl3b3JkcyB0aGF0IGRvIG5vdCBtYXRjaCBlaXRo
ZXIgb2YgdGhlIHByZXZpb3VzIHJ1bGVzIGFuZCB0b2tlbnMgbGlrZSBudW1iZXIgYW5kIHVybCBh
cmUganVzdCBjbG9uZWQuCiBmdW5jdGlvbiBwYXJzZUxpc3QobSwgZW5kVG9rZW4pCkBAIC0xMzcs
OSArMTU0LDE2IEBAIGZ1bmN0aW9uIHBhcnNlTGlzdChtLCBlbmRUb2tlbikKICAgICB2YXIgcmVz
dWx0ID0gW10sIHRva2VuOwogICAgIHdoaWxlICgodG9rZW4gPSBtLmN1cnJlbnQoKSkgJiYgIXRv
a2VuLmlzQShlbmRUb2tlbikpIHsKICAgICAgICAgaWYgKHRva2VuLmlzQSgia2V5d29yZCIpKSB7
Ci0gICAgICAgICAgICBpZiAobS5haGVhZCgpLmlzQSgiKCIpKQorICAgICAgICAgICAgaWYgKG0u
YWhlYWQoKS5pc0EoIigiKSAmJiB0b2tlbi52YWx1ZSAhPSAibWF0cml4IikKICAgICAgICAgICAg
ICAgICByZXN1bHQucHVzaChwYXJzZUZ1bmN0aW9uKG0pKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KG0uYWhlYWQoKS5pc0EoIiwiLCBlbmRUb2tlbikpIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKG0u
YWhlYWQoKS5pc0EoIigiKSAmJiB0b2tlbi52YWx1ZSA9PSAibWF0cml4IikgeworICAgICAgICAg
ICAgICAgIHZhciBsID0gcGFyc2VNYXRyaXgobSk7CisgICAgICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBsLmFyZ3VtZW50cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LnB1c2goeworICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogIm51bWJlciIsCisg
ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbC5hcmd1bWVudHNbaV0udmFsdWUKKyAgICAg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG0uYWhlYWQoKS5pc0Eo
IiwiLCBlbmRUb2tlbikpIHsKICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7CiAgICAgICAg
ICAgICAgICAgICAgIHR5cGU6ICJrZXl3b3JkIiwgCiAgICAgICAgICAgICAgICAgICAgIHZhbHVl
OiBtLnNraXAoKS52YWx1ZQpAQCAtMTUxLDYgKzE3NSwxMSBAQCBmdW5jdGlvbiBwYXJzZUxpc3Qo
bSwgZW5kVG9rZW4pCiAgICAgICAgICAgICAgICAgdHlwZTogIm51bWJlciIsCiAgICAgICAgICAg
ICAgICAgdmFsdWU6IG0uc2tpcCgpLnZhbHVlCiAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBl
bHNlIGlmICh0b2tlbi5pc0EodHJhbnNmb3JtKSkgeworICAgICAgICAgICAgcmVzdWx0LnB1c2go
eworICAgICAgICAgICAgICAgIHR5cGU6ICJ0cmFuc2Zvcm0iLAorICAgICAgICAgICAgICAgIHZh
bHVlOiBtLnNraXAoKS52YWx1ZQorICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
dG9rZW4uaXNBKCJ1cmwiKSkgewogICAgICAgICAgICAgcmVzdWx0LnB1c2goewogICAgICAgICAg
ICAgICAgIHR5cGU6ICJ1cmwiLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161577</attachid>
            <date>2012-08-30 16:16:32 -0700</date>
            <delta_ts>2012-08-30 16:52:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94980-20120830191428.patch</filename>
            <type>text/plain</type>
            <size>36751</size>
            <attacher name="Joshua Netterfield">jnetterfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM3YTQzNmQ1Y2NjZGE0
ZDExYWMyMjUwNDFlYmYzYTA1NjdlN2RjMS4uZjBiNTAwZGM4OTY5MTU3NTYwMjc2MDQ1OTEwN2Q2
OTUyNWNjZWY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA4LTMwICBKb3No
dWEgTmV0dGVyZmllbGQgIDxqbmV0dGVyZmllbGRAcmltLmNvbT4KKworICAgICAgICBbQ1NTIFNo
YWRlcnNdIEltcGxlbWVudCB0cmFuc2Zvcm0gcGFyYW1ldGVyIGFuaW1hdGlvbnMgZm9yIENTUyBD
dXN0b20gRmlsdGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTQ5ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBY2NvcmRpbmcgdG8gU2VjdGlvbiAzOS4yIG9mIEZpbHRlciBFZmZlY3RzIDEuMCBFZGl0
b3IncyBkcmFmdAorICAgICAgICAoaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9GWFRGL3Jhdy1maWxl
L3RpcC9maWx0ZXJzL2luZGV4Lmh0bWwpLCBhbmltYXRpb25zCisgICAgICAgIG9mIHRyYW5zZm9y
bXMgc2hvdWxkIGJlIGhhbmRsZWQgZm9sbG93aW5nIHRoZSBDU1MzIHRyYW5zZm9ybSBpbnRlcnBv
bGF0aW9uCisgICAgICAgIHJ1bGVzLiBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhpcyBmdW5jdGlv
bmFsaXR5LgorCisgICAgICAgIFRlc3RzOiBFeHRlbmRlZCBmaWx0ZXJzL2N1c3RvbS9jdXN0b20t
ZmlsdGVyLWFuaW1hdGlvbi5odG1sCisKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI6OmJsZW5k
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEN1c3RvbUZpbHRlclBhcmFtZXRlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRlci5o
OgorICAgICAgICAoQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlci5oOgorICAgICAg
ICAoQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcjo6YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdhbW1hRmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpCbHVyRmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpEcm9w
U2hhZG93RmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9w
ZXJhdGlvbjo6RmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgIChCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0
ZXJPcGVyYXRpb24pOgorICAgICAgICAoR2FtbWFGaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAo
Qmx1ckZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmRC
eU1hdGNoaW5nT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5kQnlNYXRyaXgpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oOgorICAgICAgICAoVHJhbnNmb3Jt
T3BlcmF0aW9ucyk6CisKIDIwMTItMDgtMzAgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBw
bGUuY29tPgogCiAgICAgICAgIG9iamNfbXNnU2VuZCBhbmQgSU1QIHNob3VsZCBiZSBjYXN0IGFw
cHJvcHJpYXRlbHkgYmVmb3JlIHVzaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggZjJhODFjYjBjNWMxZjc0
YzgyYzIzNmQ0MTk0Nzg0ZmVjNGZlNzRhMy4uN2M4ZjI1ODk5NGQ4YWYxMjcyYjM2ZDBmZTA1YmRm
ZDFhZWEyNGQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtMTIwLDQxICsxMjAsMTEgQEAgc3RhdGljIGlu
bGluZSBQYXNzT3duUHRyPFNoYWRvd0RhdGE+IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNl
KiBhbmltLCBjb25zdAogCiBzdGF0aWMgaW5saW5lIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRG
dW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMm
IGZyb20sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7
Ci0gICAgVHJhbnNmb3JtT3BlcmF0aW9ucyByZXN1bHQ7Ci0KLSAgICAvLyBJZiB3ZSBoYXZlIGEg
dHJhbnNmb3JtIGZ1bmN0aW9uIGxpc3QsIHVzZSB0aGF0IHRvIGRvIGEgcGVyLWZ1bmN0aW9uIGFu
aW1hdGlvbi4gT3RoZXJ3aXNlIGRvIGEgTWF0cml4IGFuaW1hdGlvbgotICAgIGlmIChhbmltLT5p
c1RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlkKCkpIHsKLSAgICAgICAgdW5zaWduZWQgZnJvbVNp
emUgPSBmcm9tLm9wZXJhdGlvbnMoKS5zaXplKCk7Ci0gICAgICAgIHVuc2lnbmVkIHRvU2l6ZSA9
IHRvLm9wZXJhdGlvbnMoKS5zaXplKCk7Ci0gICAgICAgIHVuc2lnbmVkIHNpemUgPSBtYXgoZnJv
bVNpemUsIHRvU2l6ZSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBp
KyspIHsKLSAgICAgICAgICAgIFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGZyb21PcCA9IChp
IDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwotICAgICAgICAg
ICAgUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gdG9PcCA9IChpIDwgdG9TaXplKSA/IHRvLm9w
ZXJhdGlvbnMoKVtpXS5nZXQoKSA6IDA7Ci0gICAgICAgICAgICBSZWZQdHI8VHJhbnNmb3JtT3Bl
cmF0aW9uPiBibGVuZGVkT3AgPSB0b09wID8gdG9PcC0+YmxlbmQoZnJvbU9wLmdldCgpLCBwcm9n
cmVzcykgOiAoZnJvbU9wID8gZnJvbU9wLT5ibGVuZCgwLCBwcm9ncmVzcywgdHJ1ZSkgOiBQYXNz
UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4oMCkpOwotICAgICAgICAgICAgaWYgKGJsZW5kZWRP
cCkKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChibGVuZGVkT3Ap
OwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFRyYW5zZm9ybU9w
ZXJhdGlvbj4gaWRlbnRpdHlPcCA9IElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUo
KTsKLSAgICAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPiAwLjUpCi0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7
Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0
aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIENvbnZlcnQgdGhlIFRyYW5z
Zm9ybU9wZXJhdGlvbnMgaW50byBtYXRyaWNlcwotICAgICAgICBMYXlvdXRTaXplIHNpemUgPSBh
bmltLT5yZW5kZXJlcigpLT5pc0JveCgpID8gdG9SZW5kZXJCb3goYW5pbS0+cmVuZGVyZXIoKSkt
PmJvcmRlckJveFJlY3QoKS5zaXplKCkgOiBMYXlvdXRTaXplKCk7Ci0gICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGZyb21UOwotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0b1Q7Ci0g
ICAgICAgIGZyb20uYXBwbHkoc2l6ZSwgZnJvbVQpOwotICAgICAgICB0by5hcHBseShzaXplLCB0
b1QpOworICAgIGlmIChhbmltLT5pc1RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlkKCkpCisgICAg
ICAgIHJldHVybiB0by5ibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zKGZyb20sIHByb2dyZXNzKTsK
IAotICAgICAgICB0b1QuYmxlbmQoZnJvbVQsIHByb2dyZXNzKTsKLQotICAgICAgICAvLyBBcHBl
bmQgdGhlIHJlc3VsdAotICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXgz
RFRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHRvVCkpOwotICAgIH0KLSAgICByZXR1cm4gcmVz
dWx0OworICAgIHJldHVybiB0by5ibGVuZEJ5TWF0cml4KGZyb20sIHByb2dyZXNzCisgICAgICAs
IGFuaW0tPnJlbmRlcmVyKCktPmlzQm94KCkgPyB0b1JlbmRlckJveChhbmltLT5yZW5kZXJlcigp
KS0+Ym9yZGVyQm94UmVjdCgpLnNpemUoKSA6IExheW91dFNpemUoKSk7CiB9CiAKICNpZiBFTkFC
TEUoQ1NTX0ZJTFRFUlMpCkBAIC0xNzAsNyArMTQwLDggQEAgc3RhdGljIGlubGluZSBGaWx0ZXJP
cGVyYXRpb25zIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBGaWx0
ZXIKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAg
ICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZyb21PcCA9IChpIDwgZnJvbVNpemUpID8gZnJv
bS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwogICAgICAgICAgICAgUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gdG9PcCA9IChpIDwgdG9TaXplKSA/IHRvLm9wZXJhdGlvbnMoKVtpXS5nZXQoKSA6
IDA7Ci0gICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZGVkT3AgPSB0b09w
ID8gdG9PcC0+YmxlbmQoZnJvbU9wLmdldCgpLCBwcm9ncmVzcykgOiAoZnJvbU9wID8gZnJvbU9w
LT5ibGVuZCgwLCBwcm9ncmVzcywgdHJ1ZSkgOiBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4o
MCkpOworICAgICAgICAgICAgTGF5b3V0U2l6ZSBzaXplID0gYW5pbS0+cmVuZGVyZXIoKS0+aXNC
b3goKSA/IHRvUmVuZGVyQm94KGFuaW0tPnJlbmRlcmVyKCkpLT5ib3JkZXJCb3hSZWN0KCkuc2l6
ZSgpIDogTGF5b3V0U2l6ZSgpOworICAgICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4g
YmxlbmRlZE9wID0gdG9PcCA/IHRvT3AtPmJsZW5kKGZyb21PcC5nZXQoKSwgcHJvZ3Jlc3MsIHNp
emUpIDogKGZyb21PcCA/IGZyb21PcC0+YmxlbmQoMCwgcHJvZ3Jlc3MsIHNpemUsIHRydWUpIDog
UGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+KDApKTsKICAgICAgICAgICAgIGlmIChibGVuZGVk
T3ApCiAgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9w
KTsKICAgICAgICAgICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFy
YW1ldGVyLmgKaW5kZXggMjc3MGI0Y2VkNmNmNTgzMDM0ZTA3MTI3OWY4MGE0NTg2YzdmNzYyZS4u
NDIzZWY1NDdlYzQ4YTJlM2I0YTkzMGVhOGMyMGY5MDMyYmRkYzkzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJOdW1iZXJQ
YXJhbWV0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYWRkVmFsdWUoZG91YmxlIHZhbHVlKSB7IG1fZGF0YS5hcHBlbmQodmFsdWUp
OyB9CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4g
YmxlbmQoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3Mp
CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gYmxlbmQoY29u
c3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExh
eW91dFNpemUmKQogICAgIHsKICAgICAgICAgaWYgKCFmcm9tIHx8ICFpc1NhbWVUeXBlKCpmcm9t
KSkKICAgICAgICAgICAgIHJldHVybiB0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRp
b24uY3BwCmluZGV4IGY1YzgxNzI0Zjc4N2Q1N2JjMDBmOGE5NDI2ZWZiODgwZmM5MmI1ZTIuLjM1
OGFmZDRiYjRjM2FkY2Q1NmJmOTY1ZGI2OGZjNjgxMTdiYzc0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlck9wZXJhdGlvbi5jcHAKQEAgLTY0LDcgKzY0LDggQEAgc3RhdGljIGJvb2wgY2hlY2tD
dXN0b21GaWx0ZXJQYXJhbWV0ZXJzT3JkZXIoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlz
dCYgcGEKIH0KICNlbmRpZgogCi12b2lkIGJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhjb25z
dCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBmcm9tTGlzdCwgY29uc3QgQ3VzdG9tRmlsdGVy
UGFyYW1ldGVyTGlzdCYgdG9MaXN0LCBkb3VibGUgcHJvZ3Jlc3MsIEN1c3RvbUZpbHRlclBhcmFt
ZXRlckxpc3QmIHJlc3VsdExpc3QpCit2b2lkIGJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhj
b25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBmcm9tTGlzdCwgY29uc3QgQ3VzdG9tRmls
dGVyUGFyYW1ldGVyTGlzdCYgdG9MaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LCBkb3VibGUgcHJvZ3Jlc3MsIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHJlc3VsdExpc3Qs
IGNvbnN0IExheW91dFNpemUmIHNpemUpCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgZXhwZWN0cyBi
b3RoIGxpc3RzIHRvIGJlIHNvcnRlZCBieSBwYXJhbWV0ZXIgbmFtZSBhbmQgdGhlIHJlc3VsdCBs
aXN0IGlzIGFsc28gc29ydGVkLgogICAgIEFTU0VSVChjaGVja0N1c3RvbUZpbHRlclBhcmFtZXRl
cnNPcmRlcihmcm9tTGlzdCkpOwpAQCAtNzQsNyArNzUsNyBAQCB2b2lkIGJsZW5kQ3VzdG9tRmls
dGVyUGFyYW1ldGVycyhjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBmcm9tTGlzdCwg
Y29ucwogICAgICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIHBhcmFtRnJvbSA9IGZyb21MaXN0
LmF0KGZyb21MaXN0SW5kZXgpLmdldCgpOwogICAgICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIq
IHBhcmFtVG8gPSB0b0xpc3QuYXQodG9MaXN0SW5kZXgpLmdldCgpOwogICAgICAgICBpZiAocGFy
YW1Gcm9tLT5uYW1lKCkgPT0gcGFyYW1Uby0+bmFtZSgpKSB7Ci0gICAgICAgICAgICByZXN1bHRM
aXN0LmFwcGVuZChwYXJhbVRvLT5ibGVuZChwYXJhbUZyb20sIHByb2dyZXNzKSk7CisgICAgICAg
ICAgICByZXN1bHRMaXN0LmFwcGVuZChwYXJhbVRvLT5ibGVuZChwYXJhbUZyb20sIHByb2dyZXNz
LCBzaXplKSk7CiAgICAgICAgICAgICArK2Zyb21MaXN0SW5kZXg7CiAgICAgICAgICAgICArK3Rv
TGlzdEluZGV4OwogICAgICAgICAgICAgY29udGludWU7CkBAIC0xMTEsNyArMTEyLDcgQEAgQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjp+Q3VzdG9tRmlsdGVyT3BlcmF0aW9uKCkKIHsKIH0KIAotUGFz
c1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29u
c3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bh
c3N0aHJvdWdoKQorUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEN1c3RvbUZpbHRlck9wZXJh
dGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3Ms
IGNvbnN0IExheW91dFNpemUmIHNpemUsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewogICAg
IC8vIEZJWE1FOiBUaGVyZSdzIG5vIHdheSB0byBkZWNpZGUgd2hhdCBpcyB0aGUgInBhc3N0aHJv
dWdoIGZpbHRlciIgZm9yIHNoYWRlcnMgdXNpbmcgdGhlIGN1cnJlbnQgQ1NTIFN5bnRheC4KICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ5MDMKQEAgLTEy
OCw3ICsxMjksNyBAQCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qCiAgICAgICAgIHJldHVybiB0aGlz
OwogICAgIAogICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QgYW5pbWF0ZWRQYXJhbWV0ZXJz
OwotICAgIGJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhmcm9tT3AtPm1fcGFyYW1ldGVycywg
bV9wYXJhbWV0ZXJzLCBwcm9ncmVzcywgYW5pbWF0ZWRQYXJhbWV0ZXJzKTsKKyAgICBibGVuZEN1
c3RvbUZpbHRlclBhcmFtZXRlcnMoZnJvbU9wLT5tX3BhcmFtZXRlcnMsIG1fcGFyYW1ldGVycywg
cHJvZ3Jlc3MsIGFuaW1hdGVkUGFyYW1ldGVycywgc2l6ZSk7CiAgICAgcmV0dXJuIEN1c3RvbUZp
bHRlck9wZXJhdGlvbjo6Y3JlYXRlKG1fcHJvZ3JhbSwgYW5pbWF0ZWRQYXJhbWV0ZXJzLCBtX21l
c2hSb3dzLCBtX21lc2hDb2x1bW5zLCBtX21lc2hCb3hUeXBlLCBtX21lc2hUeXBlKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggYjRlOGIyOTM2MGI4NTc4OTgwOTFj
Y2VkMWJjNTc4MGJjZjc5YjM3NC4uY2Q1OWI4NGQwNGQwMDJhNzI2OGJiMTE3ODAyMTI3ZDVlMGY5
N2MxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCkBAIC00NCw3ICs0NCw4IEBA
IGNsYXNzIEN1c3RvbUZpbHRlclBhcmFtZXRlcjsKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxDdXN0
b21GaWx0ZXJQYXJhbWV0ZXI+ID4gQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdDsKIAogYm9vbCBj
dXN0b21GaWx0ZXJQYXJhbWV0ZXJzRXF1YWwoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlz
dCYsIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmKTsKLXZvaWQgYmxlbmRDdXN0b21G
aWx0ZXJQYXJhbWV0ZXJzKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIGxpc3RGcm9t
LCBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBsaXN0VG8sIGRvdWJsZSBwcm9ncmVz
cywgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgcmVzdWx0TGlzdCk7Cit2b2lkIGJsZW5kQ3Vz
dG9tRmlsdGVyUGFyYW1ldGVycyhjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBsaXN0
RnJvbSwgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgbGlzdFRvCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLCBkb3VibGUgcHJvZ3Jlc3MsIEN1c3RvbUZpbHRlclBhcmFt
ZXRlckxpc3QmIHJlc3VsdExpc3QsIGNvbnN0IExheW91dFNpemUgJik7CiAKIGNsYXNzIEN1c3Rv
bUZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgpAQCAt
ODAsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBtb3Zlc1BpeGVscygpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9n
cmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9t
LCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmLCBib29sIGJsZW5kVG9QYXNzdGhy
b3VnaCA9IGZhbHNlKTsKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29u
c3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBh
cmFtZXRlci5oCmluZGV4IDgyOTgwZDZjNzgwZjA4MGNjN2Q3MDNmYWE5OGM2MmI2ZjVkM2VhODQu
LjgxZTVmODNjMmY5MWQ5N2FmODlkNzlkYWM1Njk4OTg4Zjk4ZTVjYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1l
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJQYXJhbWV0ZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAg
Ym9vbCBpc1NhbWVUeXBlKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIHBhcmFtZXRlclR5cGUoKSA9PSBvdGhlci5wYXJhbWV0ZXJUeXBlKCk7IH0KICAg
ICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBibGVuZChj
b25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqLCBkb3VibGUgcHJvZ3Jlc3MpID0gMDsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBibGVuZChjb25zdCBDdXN0
b21GaWx0ZXJQYXJhbWV0ZXIqLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmKSA9
IDA7CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1l
dGVyJikgY29uc3QgPSAwOwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDdXN0b21GaWx0ZXJQ
YXJhbWV0ZXImIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIHByb3RlY3RlZDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlci5oCmluZGV4IGJk
NjZjZWM2YzFjNGE0YTgyZmI5YWU3YzMzMDU3M2Q3ZDdlN2ViOTcuLjgyNzVkYjEzMmNhNzBmNWIw
NjI5Y2QyYmFkYmU3YWFiNmUyMzA1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJU
cmFuc2Zvcm1QYXJhbWV0ZXIuaApAQCAtNDYsMTQgKzQ2LDMzIEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVy
KG5hbWUpKTsKICAgICB9Ci0gICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRl
clBhcmFtZXRlcj4gYmxlbmQoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiwgZG91YmxlKQor
CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gYmxlbmQoY29u
c3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiBmcm9tUGFyYW1ldGVyLCBkb3VibGUgcHJvZ3Jlc3Ms
IGNvbnN0IExheW91dFNpemUmIHNpemUpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGFuaW1hdGlvbnMgc3VwcG9ydC4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk0OTgwCi0gICAgICAgIHJldHVybiB0aGlzOworICAgICAgICBp
ZiAoIWZyb21QYXJhbWV0ZXIgfHwgIWlzU2FtZVR5cGUoKmZyb21QYXJhbWV0ZXIpKQorICAgICAg
ICAgICAgcmV0dXJuIHRoaXM7CisKKyAgICAgICAgY29uc3QgQ3VzdG9tRmlsdGVyVHJhbnNmb3Jt
UGFyYW1ldGVyKiBmcm9tVHJhbnNmb3JtUGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3Vz
dG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyKj4oZnJvbVBhcmFtZXRlcik7CisgICAgICAgIGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGZyb20gPSBmcm9tVHJhbnNmb3JtUGFyYW1ldGVyLT5v
cGVyYXRpb25zKCk7CisgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHRvID0gb3Bl
cmF0aW9ucygpOworCisgICAgICAgIGlmIChmcm9tID09IHRvKQorICAgICAgICAgICAgcmV0dXJu
IHRoaXM7CisKKyAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcj4g
cmV0ID0gQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyOjpjcmVhdGUobmFtZSgpKTsKKwor
ICAgICAgICBpZiAoIWZyb20uc2l6ZSgpIHx8ICF0by5zaXplKCkpIHsKKyAgICAgICAgICAgIGlm
IChwcm9ncmVzcyA+IDAuNSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKworICAgICAg
ICAgICAgcmV0LT5zZXRPcGVyYXRpb25zKGZyb20pOworICAgICAgICAgICAgcmV0dXJuIHJldDsK
KyAgICAgICAgfQorCisgICAgICAgIHJldC0+c2V0T3BlcmF0aW9ucyh0by5ibGVuZChmcm9tLCBw
cm9ncmVzcywgc2l6ZSkpOworICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KLSAgICAKKwogICAg
IHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciYgbykg
Y29uc3QKICAgICB7CiAgICAgICAgIGlmICghaXNTYW1lVHlwZShvKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0
aW9uLmNwcAppbmRleCA2NTY5MjZlMjhlMzU3ZDYxMWUxMWQ2MzkwOTA4OTJjYTZiZDZjNTEzLi4w
ZTU5NjkwOWY2NTU0NzRhNmIyMzFkMThmOTZhYTU5MmVhYTdiMjViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVy
YXRpb24uY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFz
c1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246
OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29s
IGJsZW5kVG9QYXNzdGhyb3VnaCkKK1Bhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBCYXNpY0Nv
bG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZy
b20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgYmxlbmRUb1Bhc3N0
aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlzKSkKICAg
ICAgICAgcmV0dXJuIHRoaXM7CkBAIC02MCw3ICs2MCw3IEBAIGRvdWJsZSBCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uOjpwYXNzdGhyb3VnaEFtb3VudCgpIGNvbnN0CiAgICAgfQogfQog
Ci1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQorUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRp
b24+IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZp
bHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlvdXRTaXplJiwg
Ym9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCiB7CiAgICAgaWYgKGZyb20gJiYgIWZyb20tPmlzU2Ft
ZVR5cGUoKnRoaXMpKQogICAgICAgICByZXR1cm4gdGhpczsKQEAgLTkwLDcgKzkwLDcgQEAgZG91
YmxlIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OnBhc3N0aHJvdWdoQW1v
dW50KCkgY29uc3QKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBHYW1t
YUZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQorUGFzc1JlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IEdhbW1hRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlz
KSkKICAgICAgICAgcmV0dXJuIHRoaXM7CkBAIC0xMTEsNyArMTExLDcgQEAgUGFzc1JlZlB0cjxG
aWx0ZXJPcGVyYXRpb24+IEdhbW1hRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJP
cGVyYXRpb24qIGYKICAgICAgICAgV2ViQ29yZTo6YmxlbmQoZnJvbU9mZnNldCwgbV9vZmZzZXQs
IHByb2dyZXNzKSwgbV90eXBlKTsKIH0KIAotUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJs
dXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKK1Bhc3NSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPiBCbHVyRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlz
KSkKICAgICAgICAgcmV0dXJuIHRoaXM7CkBAIC0xMjYsNyArMTI2LDcgQEAgUGFzc1JlZlB0cjxG
aWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiogZnIKICAgICByZXR1cm4gQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKG1fc3Rk
RGV2aWF0aW9uLmJsZW5kKGZyb21MZW5ndGgsIHByb2dyZXNzKSwgbV90eXBlKTsKIH0KIAotUGFz
c1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmJsZW5k
KGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9QYXNzdGhyb3VnaCkKK1Bhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBEcm9wU2hhZG93Rmls
dGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBw
cm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewog
ICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlzKSkKICAgICAgICAgcmV0dXJu
IHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCBlNzI2MDBjNDdlMzY0ZGI2MjU2YjM3OWYz
YmE0NjNjZDM5OGQyNDQzLi42MjNjMDkxYWE1MGI0OGY1MzZhY2MyMDJmNjAxY2Q5ZjhkODI5MGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpIGNvbnN0ID0gMDsK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJl
dHVybiAhKCp0aGlzID09IG8pOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3Bl
cmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIC8qZnJvbSovLCBkb3VibGUgLypw
cm9ncmVzcyovLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkgeyByZXR1cm4g
MDsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0
IEZpbHRlck9wZXJhdGlvbiogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGNvbnN0IExh
eW91dFNpemUmLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkgeyByZXR1cm4g
MDsgfQogCiAgICAgdmlydHVhbCBPcGVyYXRpb25UeXBlIGdldE9wZXJhdGlvblR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTYW1lVHlwZShjb25zdCBG
aWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuIG8uZ2V0T3BlcmF0aW9uVHlwZSgpID09
IG1fdHlwZTsgfQpAQCAtMTkxLDcgKzE5MSw3IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBhbW91
bnQoKSBjb25zdCB7IHJldHVybiBtX2Ftb3VudDsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlvdXRTaXplJiwgYm9vbCBibGVuZFRv
UGFzc3Rocm91Z2ggPSBmYWxzZSk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG9wZXJh
dG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdApAQCAtMjI1LDcgKzIyNSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBhZmZlY3RzT3BhY2l0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZSA9PSBPUEFDSVRZOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9n
cmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9t
LCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmLCBib29sIGJsZW5kVG9QYXNzdGhy
b3VnaCA9IGZhbHNlKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CkBAIC0yNTgsNyArMjU4LDcgQEAgcHVibGlj
OgogICAgIGRvdWJsZSBleHBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb25lbnQ7IH0KICAg
ICBkb3VibGUgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KIAotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNl
KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBG
aWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYs
IGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOwogCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKQEAgLTI5
NCw3ICsyOTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBtb3Zlc1BpeGVscygpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVy
YXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNz
LCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdo
ID0gZmFsc2UpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKQEAgLTMzMCw3ICszMzAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBtb3Zlc1BpeGVscygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3Vn
aCA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVu
ZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5
b3V0U2l6ZSYsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOwogCiBwcml2YXRlOgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcAppbmRleCBjOTQyYTYxNjkyY2Yx
ZmYyYTJlZGQwODk1NDFjYmFkNWEwYTNjNjdkLi4wNzM0MjQyMWYzMTA0N2Q0ZTJiOWM3NDk1Yzc5
MWYzNWY2NzNkOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKQEAg
LTIzLDYgKzIzLDkgQEAKICNpbmNsdWRlICJUcmFuc2Zvcm1PcGVyYXRpb25zLmgiCiAKICNpbmNs
dWRlICJJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIk1hdHJpeDNEVHJh
bnNmb3JtT3BlcmF0aW9uLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNjEsNCArNjQsNTggQEAgYm9vbCBUcmFuc2Zvcm1PcGVyYXRpb25zOjpv
cGVyYXRpb25zTWF0Y2goY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgb3RoZXIpIGNvbnMKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorVHJhbnNmb3JtT3BlcmF0aW9ucyBUcmFuc2Zvcm1PcGVyYXRp
b25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMm
IGZyb20sIGNvbnN0IGRvdWJsZSYgcHJvZ3Jlc3MpIGNvbnN0Cit7CisgICAgVHJhbnNmb3JtT3Bl
cmF0aW9ucyByZXN1bHQ7CisKKyAgICB1bnNpZ25lZCBmcm9tU2l6ZSA9IGZyb20ub3BlcmF0aW9u
cygpLnNpemUoKTsKKyAgICB1bnNpZ25lZCB0b1NpemUgPSBvcGVyYXRpb25zKCkuc2l6ZSgpOwor
ICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6Om1heChmcm9tU2l6ZSwgdG9TaXplKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIFJlZlB0cjxUcmFuc2Zv
cm1PcGVyYXRpb24+IGZyb21PcCA9IChpIDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClb
aV0uZ2V0KCkgOiAwOworICAgICAgICBSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiB0b09wID0g
KGkgPCB0b1NpemUpID8gb3BlcmF0aW9ucygpW2ldLmdldCgpIDogMDsKKyAgICAgICAgUmVmUHRy
PFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmRlZE9wID0gdG9PcCA/IHRvT3AtPmJsZW5kKGZyb21P
cC5nZXQoKSwgcHJvZ3Jlc3MpIDogKGZyb21PcCA/IGZyb21PcC0+YmxlbmQoMCwgcHJvZ3Jlc3Ms
IHRydWUpIDogUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+KDApKTsKKyAgICAgICAgaWYg
KGJsZW5kZWRPcCkKKyAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5k
ZWRPcCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUmVmUHRyPFRyYW5zZm9ybU9wZXJh
dGlvbj4gaWRlbnRpdHlPcCA9IElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoKTsK
KyAgICAgICAgICAgIGlmIChwcm9ncmVzcyA+IDAuNSkKKyAgICAgICAgICAgICAgICByZXN1bHQu
b3BlcmF0aW9ucygpLmFwcGVuZCh0b09wID8gdG9PcCA6IGlkZW50aXR5T3ApOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21P
cCA/IGZyb21PcCA6IGlkZW50aXR5T3ApOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworVHJhbnNmb3JtT3BlcmF0aW9ucyBUcmFuc2Zvcm1PcGVyYXRpb25zOjpi
bGVuZEJ5TWF0cml4KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGZyb20sIGRvdWJsZSBwcm9n
cmVzcywgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgY29uc3QKK3sKKyAgICBUcmFuc2Zvcm1PcGVy
YXRpb25zIHJlc3VsdDsKKworICAgIC8vIENvbnZlcnQgdGhlIFRyYW5zZm9ybU9wZXJhdGlvbnMg
aW50byBtYXRyaWNlcworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21UOworICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHRvVDsKKyAgICBmcm9tLmFwcGx5KHNpemUsIGZyb21UKTsKKyAgICBh
cHBseShzaXplLCB0b1QpOworCisgICAgdG9ULmJsZW5kKGZyb21ULCBwcm9ncmVzcyk7CisKKyAg
ICAvLyBBcHBlbmQgdGhlIHJlc3VsdAorICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKE1h
dHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUodG9UKSk7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitUcmFuc2Zvcm1PcGVyYXRpb25zIFRyYW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5k
KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3Qg
TGF5b3V0U2l6ZSYgc2l6ZSkgY29uc3QKK3sKKyAgICBpZiAoZnJvbSA9PSAqdGhpcykKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworCisgICAgaWYgKGZyb20uc2l6ZSgpICYmIGZyb20ub3BlcmF0aW9u
c01hdGNoKCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGJsZW5kQnlNYXRjaGluZ09wZXJhdGlvbnMo
ZnJvbSwgcHJvZ3Jlc3MpOworCisgICAgcmV0dXJuIGJsZW5kQnlNYXRyaXgoZnJvbSwgcHJvZ3Jl
c3MsIHNpemUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtT3BlcmF0aW9ucy5oCmluZGV4IGUyMzZlMTJkOTIwYmVjNTU2MjE0MzdlZTgzOTk1NGI5YWI2
ZDNmOWYuLjQ1ZTFmM2M2YmMzYWY4OWYxZWMzMzYwMDc4ZThkYTA5ZTQ3NDU1NGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
T3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oCkBAIC03MSw2ICs3MSwxMCBAQCBwdWJsaWM6CiAg
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGlvbnMuc2l6ZSgpOyB9CiAg
ICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBhdChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0
dXJuIGluZGV4IDwgbV9vcGVyYXRpb25zLnNpemUoKSA/IG1fb3BlcmF0aW9ucy5hdChpbmRleCku
Z2V0KCkgOiAwOyB9CiAKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kQnlNYXRjaGluZ09w
ZXJhdGlvbnMoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYsIGNvbnN0IGRvdWJsZSYgcHJvZ3Jl
c3MpIGNvbnN0OworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRCeU1hdHJpeChjb25zdCBU
cmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNp
emUmKSBjb25zdDsKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kKGNvbnN0IFRyYW5zZm9y
bU9wZXJhdGlvbnMmIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYpIGNv
bnN0OworCiBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiA+
IG1fb3BlcmF0aW9uczsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjMyOTYzYzAzMDI3YzQ1OGU3ZmI3Y2ZiNWE2ZGQ2
NGE0ZGU5MzlkMC4uMzA2MTliOThlYTFmZTlkNjE1NDRiZDczOTdmYmU2ZDE2ZjA5YmFiNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA4LTI5ICBKb3NodWEgTmV0dGVyZmllbGQgIDxqbmV0
dGVyZmllbGRAcmltLmNvbT4KKworICAgICAgICBbQ1NTIFNoYWRlcnNdIEltcGxlbWVudCB0cmFu
c2Zvcm0gcGFyYW1ldGVyIGFuaW1hdGlvbnMgZm9yIENTUyBDdXN0b20gRmlsdGVycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ5ODAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IHRyYW5zZm9ybSBh
bmltYXRpb25zIGluIGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24u
aHRtbC4KKworICAgICAgICAqIGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1hbmlt
YXRpb24uaHRtbDogQWRkIHRyYW5zZm9ybSB0ZXN0cy4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMv
cmVzb3VyY2VzL2N1c3RvbS1maWx0ZXItcGFyc2VyLmpzOiBBZGQgc3VwcG9ydCBmb3IgKGFmZmlu
ZSAmIDNkKSBtYXRyaWNpZXMgJiB0cmFuc2Zvcm1zLgorCisKIDIwMTItMDgtMzAgIFBoaWxpcCBS
b2dlcnMgIDxwZHJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIHVwZGF0ZSB0byB0
ZXN0IGV4cGVjdGF0aW9ucy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9j
dXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
Y3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi1leHBlY3RlZC50eHQK
aW5kZXggNmZkZTA3MTFkZGM2NmU5MjRiM2I0MjIxNWQ5NmI3ODEyMjhiZDY0Zi4uMGQyMzIxODlh
MTAxNjdjZGY2N2VlOWZiZDZiZjdlY2M5MTJmNTAxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Y3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1h
dGlvbi1leHBlY3RlZC50eHQKQEAgLTgsNCArOCwxMCBAQCBQQVNTIC0gIndlYmtpdEZpbHRlciIg
cHJvcGVydHkgZm9yICJjdXN0b20tZnJvbS1kaWZmLXBhcmFtcy1ib3giIGVsZW1lbnQgYXQgMXMg
cwogUEFTUyAtICJ3ZWJraXRGaWx0ZXIiIHByb3BlcnR5IGZvciAiY3VzdG9tLXRvLWRpZmYtcGFy
YW1zLWJveCIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiBjdXN0b20odXJs
KHZlcnRleC1yb3RhdGUudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCBwYXJhbSAxMCwgcm90YXRl
QnkgNjAsIG9mZnNldCAxMCwgYW5vdGhlcl9wYXJhbSA1KQogUEFTUyAtICJ3ZWJraXRGaWx0ZXIi
IHByb3BlcnR5IGZvciAiY3VzdG9tLW1peC1wYXJhbXMtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBz
b21ldGhpbmcgY2xvc2UgdG86IGN1c3RvbSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAx
IGZpbHRlci1ib3gsIHBhcmFtIDEwLCBhbm90aGVyX3BhcmFtIDUsIGZpcnN0X3BhcmFtIDYsIHJv
dGF0ZUJ5IDYwLCBvZmZzZXQgMTAsIGxhc3RfcGFyYW0gNCkKIFBBU1MgLSAid2Via2l0RmlsdGVy
IiBwcm9wZXJ0eSBmb3IgImN1c3RvbS1taXgtbnVtYmVycy1ib3giIGVsZW1lbnQgYXQgMXMgc2F3
IHNvbWV0aGluZyBjbG9zZSB0bzogY3VzdG9tKHVybCh2ZXJ0ZXgtcm90YXRlLnZzKSBub25lLCAx
IDEgZmlsdGVyLWJveCwgcm90YXRlQnkgNDUsIGEgNS41LCBiIDExIDE2LjUsIGMgMjIgMjcuNSAz
MywgZCAzOC41IDQ0IDQ5LjUpCitQQVNTIC0gIndlYmtpdEZpbHRlciIgcHJvcGVydHkgZm9yICJj
dXN0b20tbWl4LXJvdGF0ZVotYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2Ug
dG86IGN1c3RvbSh1cmwodmVydGV4LXRyYW5zZm9ybS1wYXJhbWV0ZXIudnMpIG5vbmUsIDEgMSBm
aWx0ZXItYm94LCB0cmFuc2Zvcm0gbWF0cml4KDEgMCAwIDEgMCAwKSkKK1BBU1MgLSAid2Via2l0
RmlsdGVyIiBwcm9wZXJ0eSBmb3IgImN1c3RvbS1taXgtcm90YXRlWC1ib3giIGVsZW1lbnQgYXQg
MXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogY3VzdG9tKHVybCh2ZXJ0ZXgtdHJhbnNmb3JtLXBh
cmFtZXRlci52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHRyYW5zZm9ybSBtYXRyaXgzZCgxIDAg
MCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxKSkKK1BBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9w
ZXJ0eSBmb3IgImN1c3RvbS1taXgtcm90YXRlWS1ib3giIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0
aGluZyBjbG9zZSB0bzogY3VzdG9tKHVybCh2ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFtZXRlci52cykg
bm9uZSwgMSAxIGZpbHRlci1ib3gsIHRyYW5zZm9ybSBtYXRyaXgzZCgxIDAgMCAwIDAgMSAwIDAg
MCAwIDEgMCAwIDAgMCAxKSkKK1BBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9wZXJ0eSBmb3IgImN1
c3RvbS1taXgtdHJhbnNsYXRlM0QtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xv
c2UgdG86IGN1c3RvbSh1cmwodmVydGV4LXRyYW5zZm9ybS1wYXJhbWV0ZXIudnMpIG5vbmUsIDEg
MSBmaWx0ZXItYm94LCB0cmFuc2Zvcm0gbWF0cml4M2QoMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAg
MTAgMTAgMTAgMSkpCitQQVNTIC0gIndlYmtpdEZpbHRlciIgcHJvcGVydHkgZm9yICJjdXN0b20t
bWl4LXNjYWxlM0QtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IGN1
c3RvbSh1cmwodmVydGV4LXRyYW5zZm9ybS1wYXJhbWV0ZXIudnMpIG5vbmUsIDEgMSBmaWx0ZXIt
Ym94LCB0cmFuc2Zvcm0gbWF0cml4M2QoMS4xNyAwIDAgMCAwIDEuNzUgMCAwIDAgMCAxLjc1IDAg
MCAwIDAgMSkpCitQQVNTIC0gIndlYmtpdEZpbHRlciIgcHJvcGVydHkgZm9yICJjdXN0b20tbWl4
LW11bHRpLWJveCIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiBjdXN0b20o
dXJsKHZlcnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwg
dHJhbnNmb3JtIG1hdHJpeDNkKDEuMTcgMCAwIDAgMCAxLjc1IDAgMCAwIDAgMS43NSAwIDAgMCAw
IDEpKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3Rv
bS1maWx0ZXItYW5pbWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9t
L2N1c3RvbS1maWx0ZXItYW5pbWF0aW9uLmh0bWwKaW5kZXggYTFlYzgyOWE0MDJkNDdhZGMyYTAx
Mjk2NGU3Y2RiMDI2M2M5NGQ2MS4uN2MyMzIxYjJmYmNiMTQ4Nzk0MDYzMjI1OGFkYzJlZGJkYzk1
NWJjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20t
ZmlsdGVyLWFuaW1hdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0
b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24uaHRtbApAQCAtNTIsNiArNTIsMzAgQEAKICAgICAg
ICAgI2N1c3RvbS1taXgtbnVtYmVycy1ib3ggewogICAgICAgICAgICAgLXdlYmtpdC1hbmltYXRp
b246IGN1c3RvbS1taXgtbnVtYmVycy1hbmltIDJzIGxpbmVhcjsKICAgICAgICAgfQorCisgICAg
ICAgICNjdXN0b20tbWl4LXJvdGF0ZVotYm94IHsKKyAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0
aW9uOiBjdXN0b20tbWl4LXJvdGF0ZVotYW5pbSAycyBsaW5lYXI7CisgICAgICAgIH0KKworICAg
ICAgICAjY3VzdG9tLW1peC1yb3RhdGVYLWJveCB7CisgICAgICAgICAgICAtd2Via2l0LWFuaW1h
dGlvbjogY3VzdG9tLW1peC1yb3RhdGVYLWFuaW0gMnMgbGluZWFyOworICAgICAgICB9CisKKyAg
ICAgICAgI2N1c3RvbS1taXgtcm90YXRlWS1ib3ggeworICAgICAgICAgICAgLXdlYmtpdC1hbmlt
YXRpb246IGN1c3RvbS1taXgtcm90YXRlWS1hbmltIDJzIGxpbmVhcjsKKyAgICAgICAgfQorCisg
ICAgICAgICNjdXN0b20tbWl4LXRyYW5zbGF0ZTNELWJveCB7CisgICAgICAgICAgICAtd2Via2l0
LWFuaW1hdGlvbjogY3VzdG9tLW1peC10cmFuc2xhdGUzRC1hbmltIDJzIGxpbmVhcjsKKyAgICAg
ICAgfQorCisgICAgICAgICNjdXN0b20tbWl4LXNjYWxlM0QtYm94IHsKKyAgICAgICAgICAgIC13
ZWJraXQtYW5pbWF0aW9uOiBjdXN0b20tbWl4LXNjYWxlM0QtYW5pbSAycyBsaW5lYXI7CisgICAg
ICAgIH0KKworICAgICAgICAjY3VzdG9tLW1peC1tdWx0aS1ib3ggeworICAgICAgICAgICAgLXdl
YmtpdC1hbmltYXRpb246IGN1c3RvbS1taXgtbXVsdGktYW5pbSAycyBsaW5lYXI7CisgICAgICAg
IH0KICAgICAKICAgICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGN1c3RvbS1mcm9tLW5vbmUtYW5p
bSB7CiAgICAgICAgICAgICBmcm9tIHsgLXdlYmtpdC1maWx0ZXI6IG5vbmU7IH0KQEAgLTk3LDYg
KzEyMSwzNiBAQAogICAgICAgICAgICAgZnJvbSB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJs
KC4uL3Jlc291cmNlcy92ZXJ0ZXgtcm90YXRlLnZzKSwgcm90YXRlQnkgMCwgYSAxLCBiIDIgMywg
YyA0IDUgNiwgZCA3IDggOSk7IH0KICAgICAgICAgICAgIHRvICAgeyAtd2Via2l0LWZpbHRlcjog
Y3VzdG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXJvdGF0ZS52cyksIHJvdGF0ZUJ5IDkwLCBh
IDEwLCBiIDIwIDMwLCBjIDQwIDUwIDYwLCBkIDcwIDgwIDkwKTsgfQogICAgICAgICB9CisKKyAg
ICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGN1c3RvbS1taXgtcm90YXRlWi1hbmltIHsKKyAgICAg
ICAgICAgIGZyb20geyAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNvdXJjZXMvdmVy
dGV4LXRyYW5zZm9ybS1wYXJhbWV0ZXIudnMpLCB0cmFuc2Zvcm0gcm90YXRlWigwZGVnKSk7IH0K
KyAgICAgICAgICAgIHRvICAgeyAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNvdXJj
ZXMvdmVydGV4LXRyYW5zZm9ybS1wYXJhbWV0ZXIudnMpLCB0cmFuc2Zvcm0gcm90YXRlWigzNjBk
ZWcpKTsgfQorICAgICAgICB9CisKKyAgICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGN1c3RvbS1t
aXgtcm90YXRlWC1hbmltIHsKKyAgICAgICAgICAgIGZyb20geyAtd2Via2l0LWZpbHRlcjogY3Vz
dG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXRyYW5zZm9ybS1wYXJhbWV0ZXIudnMpLCB0cmFu
c2Zvcm0gcm90YXRlWCgwZGVnKSk7IH0KKyAgICAgICAgICAgIHRvICAgeyAtd2Via2l0LWZpbHRl
cjogY3VzdG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXRyYW5zZm9ybS1wYXJhbWV0ZXIudnMp
LCB0cmFuc2Zvcm0gcm90YXRlWCgzNjBkZWcpKTsgfQorICAgICAgICB9CisKKyAgICAgICAgQC13
ZWJraXQta2V5ZnJhbWVzIGN1c3RvbS1taXgtcm90YXRlWS1hbmltIHsKKyAgICAgICAgICAgIGZy
b20geyAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXRyYW5z
Zm9ybS1wYXJhbWV0ZXIudnMpLCB0cmFuc2Zvcm0gcm90YXRlWSgwZGVnKSk7IH0KKyAgICAgICAg
ICAgIHRvICAgeyAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4
LXRyYW5zZm9ybS1wYXJhbWV0ZXIudnMpLCB0cmFuc2Zvcm0gcm90YXRlWSgzNjBkZWcpKTsgfQor
ICAgICAgICB9CisKKyAgICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGN1c3RvbS1taXgtdHJhbnNs
YXRlM0QtYW5pbSB7CisgICAgICAgICAgICBmcm9tIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1
cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSwgdHJhbnNmb3Jt
IHRyYW5zbGF0ZTNkKDAsIDAsIDApKTsgfQorICAgICAgICAgICAgdG8gICB7IC13ZWJraXQtZmls
dGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFtZXRlci52
cyksIHRyYW5zZm9ybSB0cmFuc2xhdGUzZCgyMHB4LCAyMHB4LCAyMHB4KSk7IH0KKyAgICAgICAg
fQorCisgICAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBjdXN0b20tbWl4LXNjYWxlM0QtYW5pbSB7
CisgICAgICAgICAgICBmcm9tIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3Vy
Y2VzL3ZlcnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSwgdHJhbnNmb3JtIHNjYWxlM2QoMSwg
MSwgMSkpOyB9CisgICAgICAgICAgICB0byAgIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwo
Li4vcmVzb3VyY2VzL3ZlcnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSwgdHJhbnNmb3JtIHNj
YWxlM2QoMi41LCAyLjUsIDIuNSkpOyB9CisgICAgICAgIH0KKworICAgICAgICBALXdlYmtpdC1r
ZXlmcmFtZXMgY3VzdG9tLW1peC1tdWx0aS1hbmltIHsKKyAgICAgICAgICAgIGZyb20geyAtd2Vi
a2l0LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXRyYW5zZm9ybS1wYXJh
bWV0ZXIudnMpLCB0cmFuc2Zvcm0gcm90YXRlWCgwZGVnKSBzY2FsZTNkKDEsIDEsIDEpKTsgfQor
ICAgICAgICAgICAgdG8gICB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNl
cy92ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFtZXRlci52cyksIHRyYW5zZm9ybSByb3RhdGVYKDM2MGRl
Zykgc2NhbGUzZCgyLjUsIDIuNSwgMi41KSk7IH0KKyAgICAgICAgfQogICAgIDwvc3R5bGU+CiAg
ICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9jdXN0b20tZmlsdGVyLXBhcnNlci5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2FuaW1hdGlvbnMvcmVzb3VyY2VzL2Fu
aW1hdGlvbi10ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgpAQCAtMTE3LDcgKzE3MSwxMyBAQAog
ICAgICAgICAgICAgWyJjdXN0b20tdG8tZGlmZi1wYXJhbXMtYW5pbSIsICAxLCAiY3VzdG9tLXRv
LWRpZmYtcGFyYW1zLWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHVybCh2ZXJ0ZXgtcm90
YXRlLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgcGFyYW0gMTAsIHJvdGF0ZUJ5IDYwLCBvZmZz
ZXQgMTAsIGFub3RoZXJfcGFyYW0gNSknLCA1XSwKIAogICAgICAgICAgICAgWyJjdXN0b20tbWl4
LXBhcmFtcy1hbmltIiwgIDEsICJjdXN0b20tbWl4LXBhcmFtcy1ib3giLCAid2Via2l0RmlsdGVy
IiwgJ2N1c3RvbSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHBh
cmFtIDEwLCBhbm90aGVyX3BhcmFtIDUsIGZpcnN0X3BhcmFtIDYsIHJvdGF0ZUJ5IDYwLCBvZmZz
ZXQgMTAsIGxhc3RfcGFyYW0gNCknLCA1XSwKLSAgICAgICAgICAgIFsiY3VzdG9tLW1peC1udW1i
ZXJzLWFuaW0iLCAgMSwgImN1c3RvbS1taXgtbnVtYmVycy1ib3giLCAid2Via2l0RmlsdGVyIiwg
J2N1c3RvbSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHJvdGF0
ZUJ5IDQ1LCBhIDUuNSwgYiAxMSAxNi41LCBjIDIyIDI3LjUgMzMsIGQgMzguNSA0NCA0OS41KScs
IDEwXQorICAgICAgICAgICAgWyJjdXN0b20tbWl4LW51bWJlcnMtYW5pbSIsICAxLCAiY3VzdG9t
LW1peC1udW1iZXJzLWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHVybCh2ZXJ0ZXgtcm90
YXRlLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgcm90YXRlQnkgNDUsIGEgNS41LCBiIDExIDE2
LjUsIGMgMjIgMjcuNSAzMywgZCAzOC41IDQ0IDQ5LjUpJywgMTBdLAorICAgICAgICAgICAgWyJj
dXN0b20tbWl4LXJvdGF0ZVotYW5pbSIsICAxLCAiY3VzdG9tLW1peC1yb3RhdGVaLWJveCIsICJ3
ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHVybCh2ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFtZXRlci52cykg
bm9uZSwgMSAxIGZpbHRlci1ib3gsIHRyYW5zZm9ybSBtYXRyaXgoMSAwIDAgMSAwIDApKScsIDAu
MDAxXSwKKyAgICAgICAgICAgIFsiY3VzdG9tLW1peC1yb3RhdGVYLWFuaW0iLCAgMSwgImN1c3Rv
bS1taXgtcm90YXRlWC1ib3giLCAid2Via2l0RmlsdGVyIiwgJ2N1c3RvbSh1cmwodmVydGV4LXRy
YW5zZm9ybS1wYXJhbWV0ZXIudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCB0cmFuc2Zvcm0gbWF0
cml4M2QoMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSkpJywgMC4wMDFdLAorICAgICAg
ICAgICAgWyJjdXN0b20tbWl4LXJvdGF0ZVktYW5pbSIsICAxLCAiY3VzdG9tLW1peC1yb3RhdGVZ
LWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHVybCh2ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFt
ZXRlci52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHRyYW5zZm9ybSBtYXRyaXgzZCgxIDAgMCAw
IDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxKSknLCAwLjAwMV0sCisgICAgICAgICAgICBbImN1c3Rv
bS1taXgtdHJhbnNsYXRlM0QtYW5pbSIsICAxLCAiY3VzdG9tLW1peC10cmFuc2xhdGUzRC1ib3gi
LCAid2Via2l0RmlsdGVyIiwgJ2N1c3RvbSh1cmwodmVydGV4LXRyYW5zZm9ybS1wYXJhbWV0ZXIu
dnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCB0cmFuc2Zvcm0gbWF0cml4M2QoMSAwIDAgMCAwIDEg
MCAwIDAgMCAxIDAgMTAgMTAgMTAgMSkpJywgM10sCisgICAgICAgICAgICBbImN1c3RvbS1taXgt
c2NhbGUzRC1hbmltIiwgIDEsICJjdXN0b20tbWl4LXNjYWxlM0QtYm94IiwgIndlYmtpdEZpbHRl
ciIsICdjdXN0b20odXJsKHZlcnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSBub25lLCAxIDEg
ZmlsdGVyLWJveCwgdHJhbnNmb3JtIG1hdHJpeDNkKDEuMTcgMCAwIDAgMCAxLjc1IDAgMCAwIDAg
MS43NSAwIDAgMCAwIDEpKScsIDFdLAorICAgICAgICAgICAgWyJjdXN0b20tbWl4LW11bHRpLWFu
aW0iLCAgMSwgImN1c3RvbS1taXgtbXVsdGktYm94IiwgIndlYmtpdEZpbHRlciIsICdjdXN0b20o
dXJsKHZlcnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwg
dHJhbnNmb3JtIG1hdHJpeDNkKDEuMTcgMCAwIDAgMCAxLjc1IDAgMCAwIDAgMS43NSAwIDAgMCAw
IDEpKScsIDFdCiAgICAgICAgIF07CiAgICAgICAgIHJ1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRW
YWx1ZXMpOwogICAgIDwvc2NyaXB0PgpAQCAtMTMyLDcgKzE5MiwxMiBAQAogICAgIDxkaXYgY2xh
c3M9ImJveCIgaWQ9ImN1c3RvbS10by1kaWZmLXBhcmFtcy1ib3giPjwvZGl2PgogICAgIDxkaXYg
Y2xhc3M9ImJveCIgaWQ9ImN1c3RvbS1taXgtcGFyYW1zLWJveCI+PC9kaXY+CiAgICAgPGRpdiBj
bGFzcz0iYm94IiBpZD0iY3VzdG9tLW1peC1udW1iZXJzLWJveCI+PC9kaXY+Ci0KKyAgICA8ZGl2
IGNsYXNzPSJib3giIGlkPSJjdXN0b20tbWl4LXJvdGF0ZVotYm94Ij48L2Rpdj4KKyAgICA8ZGl2
IGNsYXNzPSJib3giIGlkPSJjdXN0b20tbWl4LXJvdGF0ZVgtYm94Ij48L2Rpdj4KKyAgICA8ZGl2
IGNsYXNzPSJib3giIGlkPSJjdXN0b20tbWl4LXJvdGF0ZVktYm94Ij48L2Rpdj4KKyAgICA8ZGl2
IGNsYXNzPSJib3giIGlkPSJjdXN0b20tbWl4LXRyYW5zbGF0ZTNELWJveCI+PC9kaXY+CisgICAg
PGRpdiBjbGFzcz0iYm94IiBpZD0iY3VzdG9tLW1peC1zY2FsZTNELWJveCI+PC9kaXY+CisgICAg
PGRpdiBjbGFzcz0iYm94IiBpZD0iY3VzdG9tLW1peC1tdWx0aS1ib3giPjwvZGl2PgogICAgIDxk
aXYgaWQ9InJlc3VsdCI+CiAgICAgPC9kaXY+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2N1c3RvbS1maWx0ZXItcGFyc2VyLmpzIGIvTGF5
b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9jdXN0b20tZmlsdGVyLXBhcnNlci5qcwpp
bmRleCA4YTMwYjYyNTkxZjQwODliMmM4OTMwYmM5ZWY5Y2E5YjBhM2U3YWQ4Li43ZTc5MmQ3N2M2
MmIwZjMwZDExMTk5ODFmMDk0M2I5YjA3M2Y5NzBmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9j
c3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2N1c3RvbS1maWx0ZXItcGFyc2VyLmpzCisrKyBiL0xheW91
dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvY3VzdG9tLWZpbHRlci1wYXJzZXIuanMKQEAg
LTY0LDYgKzY0LDExIEBAIGZ1bmN0aW9uIG51bWJlcih0b2tlbikKICAgICByZXR1cm4gdG9rZW4u
dHlwZSA9PSAiZmxvYXQiIHx8IHRva2VuLnR5cGUgPT0gImludGVnZXIiOwogfQogCitmdW5jdGlv
biB0cmFuc2Zvcm0odG9rZW4pCit7CisgICAgcmV0dXJuIHRva2VuLnR5cGUgPT0gImtleXdvcmQi
ICYmIHRva2VuLnZhbHVlID09ICJ0cmFuc2Zvcm0iOworfQorCiAvLyBIZWxwZXIgY2xhc3MgdG8g
aXRlcmF0ZSBvbiB0aGUgdG9rZW4gc3RyZWFtLiBJdCB3aWxsIGFkZCBhbiAiZW5kIgogLy8gdG9r
ZW4gYXQgdGhlIGVuZCB0byBtYWtlIGl0IGVhc2llciB0byB1c2UgdGhlICJhaGVhZCIgZnVuY3Rp
b24KIC8vIHdpdGhvdXQgY2hlY2tpbmcgaWYgaXQncyB0aGUgbGFzdCB0b2tlbiBpbiB0aGUgc3Ry
ZWFtLgpAQCAtMTE0LDYgKzExOSwxOCBAQCBmdW5jdGlvbiBwYXJzZUZ1bmN0aW9uKG0pCiAgICAg
cmV0dXJuIGZ1bmN0aW9uT2JqZWN0OwogfQogCitmdW5jdGlvbiBwYXJzZU1hdHJpeChtKQorewor
ICAgIHZhciBtYXRyaXhPYmplY3QgPSB7CisgICAgICAgIHR5cGU6IG0udmFsdWUKKyAgICB9Owor
ICAgIG0uc2tpcCgpOworICAgIG0uc2tpcCgpOworICAgIG1hdHJpeE9iamVjdC5hcmd1bWVudHMg
PSBwYXJzZUxpc3QobSwgWyIpIiwgImVuZCJdKTsKKyAgICBtLnNraXAoKTsKKyAgICByZXR1cm4g
bWF0cml4T2JqZWN0OworfQorCiAvLyBDcmVhdGVzIGEgbmV3ICJwYXJhbWV0ZXIiIG5vZGUuIEl0
IGV4cGVjdHMgdGhhdCB0aGUgY3VycmVudCB0b2tlbiBpcyB0aGUgcGFyYW1ldGVyIG5hbWUuCiAv
LyBJdCBjb25zdW1lcyBldmVyeXRoaW5nIGJlZm9yZSB0aGUgZm9sbG93aW5nIGNvbW1hLgogZnVu
Y3Rpb24gcGFyc2VQYXJhbWV0ZXIobSkKQEAgLTEyOSw3ICsxNDYsNyBAQCBmdW5jdGlvbiBwYXJz
ZVBhcmFtZXRlcihtKQogCiAvLyBDb25zdW1lcyBhIGxpc3Qgb2YgdG9rZW5zIGJlZm9yZSByZWFj
aGluZyB0aGUgImVuZFRva2VuIiBhbmQgcmV0dXJucyBhbiBhcnJheSB3aXRoIGFsbCB0aGUgcGFy
c2VkIGl0ZW1zLgogLy8gTWFrZXMgdGhlIGZvbGxvd2luZyBhc3N1bXB0aW9uczoKLS8vIC0gaWYg
YSBrZXl3b3JkIGlzIGZvbGxvd2VkIGJ5ICIoIiB0aGVuIGl0IGlzIGEgc3RhcnQgb2YgZnVuY3Rp
b24KKy8vIC0gaWYgYSBrZXl3b3JkIGlzIGZvbGxvd2VkIGJ5ICIoIiB0aGVuIGl0IGlzIGEgc3Rh
cnQgb2YgZnVuY3Rpb24sIHVubGVzcyBpdCBpcyBhIG1hdHJpeC4KIC8vIC0gaWYgYSBrZXl3b3Jk
IGlzIG5vdCBmb2xsb3dlZCBieSAiLCIgaXQgaXMgYSBwYXJhbWV0ZXIKIC8vIEtleXdvcmRzIHRo
YXQgZG8gbm90IG1hdGNoIGVpdGhlciBvZiB0aGUgcHJldmlvdXMgcnVsZXMgYW5kIHRva2VucyBs
aWtlIG51bWJlciBhbmQgdXJsIGFyZSBqdXN0IGNsb25lZC4KIGZ1bmN0aW9uIHBhcnNlTGlzdCht
LCBlbmRUb2tlbikKQEAgLTEzNyw5ICsxNTQsMTYgQEAgZnVuY3Rpb24gcGFyc2VMaXN0KG0sIGVu
ZFRva2VuKQogICAgIHZhciByZXN1bHQgPSBbXSwgdG9rZW47CiAgICAgd2hpbGUgKCh0b2tlbiA9
IG0uY3VycmVudCgpKSAmJiAhdG9rZW4uaXNBKGVuZFRva2VuKSkgewogICAgICAgICBpZiAodG9r
ZW4uaXNBKCJrZXl3b3JkIikpIHsKLSAgICAgICAgICAgIGlmIChtLmFoZWFkKCkuaXNBKCIoIikp
CisgICAgICAgICAgICBpZiAobS5haGVhZCgpLmlzQSgiKCIpICYmIHRva2VuLnZhbHVlICE9ICJt
YXRyaXgiICYmIHRva2VuLnZhbHVlICE9ICJtYXRyaXgzZCIpCiAgICAgICAgICAgICAgICAgcmVz
dWx0LnB1c2gocGFyc2VGdW5jdGlvbihtKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChtLmFoZWFk
KCkuaXNBKCIsIiwgZW5kVG9rZW4pKSB7CisgICAgICAgICAgICBlbHNlIGlmIChtLmFoZWFkKCku
aXNBKCIoIikgJiYgKHRva2VuLnZhbHVlID09ICJtYXRyaXgiIHx8IHRva2VuLnZhbHVlID09ICJt
YXRyaXgzZCIpKSB7CisgICAgICAgICAgICAgICAgdmFyIGwgPSBwYXJzZU1hdHJpeChtKTsKKyAg
ICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGwuYXJndW1lbnRzLmxlbmd0aDsgKytp
KQorICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7CisgICAgICAgICAgICAgICAgICAg
ICAgICB0eXBlOiAibnVtYmVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBsLmFy
Z3VtZW50c1tpXS52YWx1ZQorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAobS5haGVhZCgpLmlzQSgiLCIsIGVuZFRva2VuKSkgewogICAgICAgICAgICAgICAg
IHJlc3VsdC5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgdHlwZTogImtleXdvcmQiLCAKICAg
ICAgICAgICAgICAgICAgICAgdmFsdWU6IG0uc2tpcCgpLnZhbHVlCkBAIC0xNTEsNiArMTc1LDEx
IEBAIGZ1bmN0aW9uIHBhcnNlTGlzdChtLCBlbmRUb2tlbikKICAgICAgICAgICAgICAgICB0eXBl
OiAibnVtYmVyIiwKICAgICAgICAgICAgICAgICB2YWx1ZTogbS5za2lwKCkudmFsdWUKICAgICAg
ICAgICAgIH0pOworICAgICAgICB9IGVsc2UgaWYgKHRva2VuLmlzQSh0cmFuc2Zvcm0pKSB7Cisg
ICAgICAgICAgICByZXN1bHQucHVzaCh7CisgICAgICAgICAgICAgICAgdHlwZTogInRyYW5zZm9y
bSIsCisgICAgICAgICAgICAgICAgdmFsdWU6IG0uc2tpcCgpLnZhbHVlCisgICAgICAgICAgICB9
KTsKICAgICAgICAgfSBlbHNlIGlmICh0b2tlbi5pc0EoInVybCIpKSB7CiAgICAgICAgICAgICBy
ZXN1bHQucHVzaCh7CiAgICAgICAgICAgICAgICAgdHlwZTogInVybCIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161590</attachid>
            <date>2012-08-30 16:52:39 -0700</date>
            <delta_ts>2012-08-30 17:23:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94980-20120830195036.patch</filename>
            <type>text/plain</type>
            <size>36942</size>
            <attacher name="Joshua Netterfield">jnetterfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM3YTQzNmQ1Y2NjZGE0
ZDExYWMyMjUwNDFlYmYzYTA1NjdlN2RjMS4uZjBiNTAwZGM4OTY5MTU3NTYwMjc2MDQ1OTEwN2Q2
OTUyNWNjZWY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA4LTMwICBKb3No
dWEgTmV0dGVyZmllbGQgIDxqbmV0dGVyZmllbGRAcmltLmNvbT4KKworICAgICAgICBbQ1NTIFNo
YWRlcnNdIEltcGxlbWVudCB0cmFuc2Zvcm0gcGFyYW1ldGVyIGFuaW1hdGlvbnMgZm9yIENTUyBD
dXN0b20gRmlsdGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTQ5ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBY2NvcmRpbmcgdG8gU2VjdGlvbiAzOS4yIG9mIEZpbHRlciBFZmZlY3RzIDEuMCBFZGl0
b3IncyBkcmFmdAorICAgICAgICAoaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9GWFRGL3Jhdy1maWxl
L3RpcC9maWx0ZXJzL2luZGV4Lmh0bWwpLCBhbmltYXRpb25zCisgICAgICAgIG9mIHRyYW5zZm9y
bXMgc2hvdWxkIGJlIGhhbmRsZWQgZm9sbG93aW5nIHRoZSBDU1MzIHRyYW5zZm9ybSBpbnRlcnBv
bGF0aW9uCisgICAgICAgIHJ1bGVzLiBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhpcyBmdW5jdGlv
bmFsaXR5LgorCisgICAgICAgIFRlc3RzOiBFeHRlbmRlZCBmaWx0ZXJzL2N1c3RvbS9jdXN0b20t
ZmlsdGVyLWFuaW1hdGlvbi5odG1sCisKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI6OmJsZW5k
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEN1c3RvbUZpbHRlclBhcmFtZXRlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRlci5o
OgorICAgICAgICAoQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlci5oOgorICAgICAg
ICAoQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcjo6YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdhbW1hRmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpCbHVyRmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpEcm9w
U2hhZG93RmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9w
ZXJhdGlvbjo6RmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgIChCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0
ZXJPcGVyYXRpb24pOgorICAgICAgICAoR2FtbWFGaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAo
Qmx1ckZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmRC
eU1hdGNoaW5nT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5kQnlNYXRyaXgpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oOgorICAgICAgICAoVHJhbnNmb3Jt
T3BlcmF0aW9ucyk6CisKIDIwMTItMDgtMzAgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBw
bGUuY29tPgogCiAgICAgICAgIG9iamNfbXNnU2VuZCBhbmQgSU1QIHNob3VsZCBiZSBjYXN0IGFw
cHJvcHJpYXRlbHkgYmVmb3JlIHVzaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggZjJhODFjYjBjNWMxZjc0
YzgyYzIzNmQ0MTk0Nzg0ZmVjNGZlNzRhMy4uN2M4ZjI1ODk5NGQ4YWYxMjcyYjM2ZDBmZTA1YmRm
ZDFhZWEyNGQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtMTIwLDQxICsxMjAsMTEgQEAgc3RhdGljIGlu
bGluZSBQYXNzT3duUHRyPFNoYWRvd0RhdGE+IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNl
KiBhbmltLCBjb25zdAogCiBzdGF0aWMgaW5saW5lIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRG
dW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMm
IGZyb20sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7
Ci0gICAgVHJhbnNmb3JtT3BlcmF0aW9ucyByZXN1bHQ7Ci0KLSAgICAvLyBJZiB3ZSBoYXZlIGEg
dHJhbnNmb3JtIGZ1bmN0aW9uIGxpc3QsIHVzZSB0aGF0IHRvIGRvIGEgcGVyLWZ1bmN0aW9uIGFu
aW1hdGlvbi4gT3RoZXJ3aXNlIGRvIGEgTWF0cml4IGFuaW1hdGlvbgotICAgIGlmIChhbmltLT5p
c1RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlkKCkpIHsKLSAgICAgICAgdW5zaWduZWQgZnJvbVNp
emUgPSBmcm9tLm9wZXJhdGlvbnMoKS5zaXplKCk7Ci0gICAgICAgIHVuc2lnbmVkIHRvU2l6ZSA9
IHRvLm9wZXJhdGlvbnMoKS5zaXplKCk7Ci0gICAgICAgIHVuc2lnbmVkIHNpemUgPSBtYXgoZnJv
bVNpemUsIHRvU2l6ZSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBp
KyspIHsKLSAgICAgICAgICAgIFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGZyb21PcCA9IChp
IDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwotICAgICAgICAg
ICAgUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gdG9PcCA9IChpIDwgdG9TaXplKSA/IHRvLm9w
ZXJhdGlvbnMoKVtpXS5nZXQoKSA6IDA7Ci0gICAgICAgICAgICBSZWZQdHI8VHJhbnNmb3JtT3Bl
cmF0aW9uPiBibGVuZGVkT3AgPSB0b09wID8gdG9PcC0+YmxlbmQoZnJvbU9wLmdldCgpLCBwcm9n
cmVzcykgOiAoZnJvbU9wID8gZnJvbU9wLT5ibGVuZCgwLCBwcm9ncmVzcywgdHJ1ZSkgOiBQYXNz
UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4oMCkpOwotICAgICAgICAgICAgaWYgKGJsZW5kZWRP
cCkKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChibGVuZGVkT3Ap
OwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFRyYW5zZm9ybU9w
ZXJhdGlvbj4gaWRlbnRpdHlPcCA9IElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUo
KTsKLSAgICAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPiAwLjUpCi0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7
Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0
aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIENvbnZlcnQgdGhlIFRyYW5z
Zm9ybU9wZXJhdGlvbnMgaW50byBtYXRyaWNlcwotICAgICAgICBMYXlvdXRTaXplIHNpemUgPSBh
bmltLT5yZW5kZXJlcigpLT5pc0JveCgpID8gdG9SZW5kZXJCb3goYW5pbS0+cmVuZGVyZXIoKSkt
PmJvcmRlckJveFJlY3QoKS5zaXplKCkgOiBMYXlvdXRTaXplKCk7Ci0gICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGZyb21UOwotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0b1Q7Ci0g
ICAgICAgIGZyb20uYXBwbHkoc2l6ZSwgZnJvbVQpOwotICAgICAgICB0by5hcHBseShzaXplLCB0
b1QpOworICAgIGlmIChhbmltLT5pc1RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlkKCkpCisgICAg
ICAgIHJldHVybiB0by5ibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zKGZyb20sIHByb2dyZXNzKTsK
IAotICAgICAgICB0b1QuYmxlbmQoZnJvbVQsIHByb2dyZXNzKTsKLQotICAgICAgICAvLyBBcHBl
bmQgdGhlIHJlc3VsdAotICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXgz
RFRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHRvVCkpOwotICAgIH0KLSAgICByZXR1cm4gcmVz
dWx0OworICAgIHJldHVybiB0by5ibGVuZEJ5TWF0cml4KGZyb20sIHByb2dyZXNzCisgICAgICAs
IGFuaW0tPnJlbmRlcmVyKCktPmlzQm94KCkgPyB0b1JlbmRlckJveChhbmltLT5yZW5kZXJlcigp
KS0+Ym9yZGVyQm94UmVjdCgpLnNpemUoKSA6IExheW91dFNpemUoKSk7CiB9CiAKICNpZiBFTkFC
TEUoQ1NTX0ZJTFRFUlMpCkBAIC0xNzAsNyArMTQwLDggQEAgc3RhdGljIGlubGluZSBGaWx0ZXJP
cGVyYXRpb25zIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBGaWx0
ZXIKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAg
ICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZyb21PcCA9IChpIDwgZnJvbVNpemUpID8gZnJv
bS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwogICAgICAgICAgICAgUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gdG9PcCA9IChpIDwgdG9TaXplKSA/IHRvLm9wZXJhdGlvbnMoKVtpXS5nZXQoKSA6
IDA7Ci0gICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZGVkT3AgPSB0b09w
ID8gdG9PcC0+YmxlbmQoZnJvbU9wLmdldCgpLCBwcm9ncmVzcykgOiAoZnJvbU9wID8gZnJvbU9w
LT5ibGVuZCgwLCBwcm9ncmVzcywgdHJ1ZSkgOiBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4o
MCkpOworICAgICAgICAgICAgTGF5b3V0U2l6ZSBzaXplID0gYW5pbS0+cmVuZGVyZXIoKS0+aXNC
b3goKSA/IHRvUmVuZGVyQm94KGFuaW0tPnJlbmRlcmVyKCkpLT5ib3JkZXJCb3hSZWN0KCkuc2l6
ZSgpIDogTGF5b3V0U2l6ZSgpOworICAgICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4g
YmxlbmRlZE9wID0gdG9PcCA/IHRvT3AtPmJsZW5kKGZyb21PcC5nZXQoKSwgcHJvZ3Jlc3MsIHNp
emUpIDogKGZyb21PcCA/IGZyb21PcC0+YmxlbmQoMCwgcHJvZ3Jlc3MsIHNpemUsIHRydWUpIDog
UGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+KDApKTsKICAgICAgICAgICAgIGlmIChibGVuZGVk
T3ApCiAgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9w
KTsKICAgICAgICAgICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFy
YW1ldGVyLmgKaW5kZXggMjc3MGI0Y2VkNmNmNTgzMDM0ZTA3MTI3OWY4MGE0NTg2YzdmNzYyZS4u
NDIzZWY1NDdlYzQ4YTJlM2I0YTkzMGVhOGMyMGY5MDMyYmRkYzkzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJOdW1iZXJQ
YXJhbWV0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYWRkVmFsdWUoZG91YmxlIHZhbHVlKSB7IG1fZGF0YS5hcHBlbmQodmFsdWUp
OyB9CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4g
YmxlbmQoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3Mp
CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gYmxlbmQoY29u
c3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExh
eW91dFNpemUmKQogICAgIHsKICAgICAgICAgaWYgKCFmcm9tIHx8ICFpc1NhbWVUeXBlKCpmcm9t
KSkKICAgICAgICAgICAgIHJldHVybiB0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRp
b24uY3BwCmluZGV4IGY1YzgxNzI0Zjc4N2Q1N2JjMDBmOGE5NDI2ZWZiODgwZmM5MmI1ZTIuLjM1
OGFmZDRiYjRjM2FkY2Q1NmJmOTY1ZGI2OGZjNjgxMTdiYzc0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlck9wZXJhdGlvbi5jcHAKQEAgLTY0LDcgKzY0LDggQEAgc3RhdGljIGJvb2wgY2hlY2tD
dXN0b21GaWx0ZXJQYXJhbWV0ZXJzT3JkZXIoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlz
dCYgcGEKIH0KICNlbmRpZgogCi12b2lkIGJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhjb25z
dCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBmcm9tTGlzdCwgY29uc3QgQ3VzdG9tRmlsdGVy
UGFyYW1ldGVyTGlzdCYgdG9MaXN0LCBkb3VibGUgcHJvZ3Jlc3MsIEN1c3RvbUZpbHRlclBhcmFt
ZXRlckxpc3QmIHJlc3VsdExpc3QpCit2b2lkIGJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhj
b25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBmcm9tTGlzdCwgY29uc3QgQ3VzdG9tRmls
dGVyUGFyYW1ldGVyTGlzdCYgdG9MaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LCBkb3VibGUgcHJvZ3Jlc3MsIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHJlc3VsdExpc3Qs
IGNvbnN0IExheW91dFNpemUmIHNpemUpCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgZXhwZWN0cyBi
b3RoIGxpc3RzIHRvIGJlIHNvcnRlZCBieSBwYXJhbWV0ZXIgbmFtZSBhbmQgdGhlIHJlc3VsdCBs
aXN0IGlzIGFsc28gc29ydGVkLgogICAgIEFTU0VSVChjaGVja0N1c3RvbUZpbHRlclBhcmFtZXRl
cnNPcmRlcihmcm9tTGlzdCkpOwpAQCAtNzQsNyArNzUsNyBAQCB2b2lkIGJsZW5kQ3VzdG9tRmls
dGVyUGFyYW1ldGVycyhjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBmcm9tTGlzdCwg
Y29ucwogICAgICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIHBhcmFtRnJvbSA9IGZyb21MaXN0
LmF0KGZyb21MaXN0SW5kZXgpLmdldCgpOwogICAgICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIq
IHBhcmFtVG8gPSB0b0xpc3QuYXQodG9MaXN0SW5kZXgpLmdldCgpOwogICAgICAgICBpZiAocGFy
YW1Gcm9tLT5uYW1lKCkgPT0gcGFyYW1Uby0+bmFtZSgpKSB7Ci0gICAgICAgICAgICByZXN1bHRM
aXN0LmFwcGVuZChwYXJhbVRvLT5ibGVuZChwYXJhbUZyb20sIHByb2dyZXNzKSk7CisgICAgICAg
ICAgICByZXN1bHRMaXN0LmFwcGVuZChwYXJhbVRvLT5ibGVuZChwYXJhbUZyb20sIHByb2dyZXNz
LCBzaXplKSk7CiAgICAgICAgICAgICArK2Zyb21MaXN0SW5kZXg7CiAgICAgICAgICAgICArK3Rv
TGlzdEluZGV4OwogICAgICAgICAgICAgY29udGludWU7CkBAIC0xMTEsNyArMTEyLDcgQEAgQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjp+Q3VzdG9tRmlsdGVyT3BlcmF0aW9uKCkKIHsKIH0KIAotUGFz
c1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29u
c3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bh
c3N0aHJvdWdoKQorUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEN1c3RvbUZpbHRlck9wZXJh
dGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3Ms
IGNvbnN0IExheW91dFNpemUmIHNpemUsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewogICAg
IC8vIEZJWE1FOiBUaGVyZSdzIG5vIHdheSB0byBkZWNpZGUgd2hhdCBpcyB0aGUgInBhc3N0aHJv
dWdoIGZpbHRlciIgZm9yIHNoYWRlcnMgdXNpbmcgdGhlIGN1cnJlbnQgQ1NTIFN5bnRheC4KICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ5MDMKQEAgLTEy
OCw3ICsxMjksNyBAQCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qCiAgICAgICAgIHJldHVybiB0aGlz
OwogICAgIAogICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QgYW5pbWF0ZWRQYXJhbWV0ZXJz
OwotICAgIGJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhmcm9tT3AtPm1fcGFyYW1ldGVycywg
bV9wYXJhbWV0ZXJzLCBwcm9ncmVzcywgYW5pbWF0ZWRQYXJhbWV0ZXJzKTsKKyAgICBibGVuZEN1
c3RvbUZpbHRlclBhcmFtZXRlcnMoZnJvbU9wLT5tX3BhcmFtZXRlcnMsIG1fcGFyYW1ldGVycywg
cHJvZ3Jlc3MsIGFuaW1hdGVkUGFyYW1ldGVycywgc2l6ZSk7CiAgICAgcmV0dXJuIEN1c3RvbUZp
bHRlck9wZXJhdGlvbjo6Y3JlYXRlKG1fcHJvZ3JhbSwgYW5pbWF0ZWRQYXJhbWV0ZXJzLCBtX21l
c2hSb3dzLCBtX21lc2hDb2x1bW5zLCBtX21lc2hCb3hUeXBlLCBtX21lc2hUeXBlKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggYjRlOGIyOTM2MGI4NTc4OTgwOTFj
Y2VkMWJjNTc4MGJjZjc5YjM3NC4uY2Q1OWI4NGQwNGQwMDJhNzI2OGJiMTE3ODAyMTI3ZDVlMGY5
N2MxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCkBAIC00NCw3ICs0NCw4IEBA
IGNsYXNzIEN1c3RvbUZpbHRlclBhcmFtZXRlcjsKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxDdXN0
b21GaWx0ZXJQYXJhbWV0ZXI+ID4gQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdDsKIAogYm9vbCBj
dXN0b21GaWx0ZXJQYXJhbWV0ZXJzRXF1YWwoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlz
dCYsIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmKTsKLXZvaWQgYmxlbmRDdXN0b21G
aWx0ZXJQYXJhbWV0ZXJzKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIGxpc3RGcm9t
LCBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBsaXN0VG8sIGRvdWJsZSBwcm9ncmVz
cywgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgcmVzdWx0TGlzdCk7Cit2b2lkIGJsZW5kQ3Vz
dG9tRmlsdGVyUGFyYW1ldGVycyhjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBsaXN0
RnJvbSwgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgbGlzdFRvCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLCBkb3VibGUgcHJvZ3Jlc3MsIEN1c3RvbUZpbHRlclBhcmFt
ZXRlckxpc3QmIHJlc3VsdExpc3QsIGNvbnN0IExheW91dFNpemUgJik7CiAKIGNsYXNzIEN1c3Rv
bUZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgpAQCAt
ODAsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBtb3Zlc1BpeGVscygpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9n
cmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9t
LCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmLCBib29sIGJsZW5kVG9QYXNzdGhy
b3VnaCA9IGZhbHNlKTsKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29u
c3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBh
cmFtZXRlci5oCmluZGV4IDgyOTgwZDZjNzgwZjA4MGNjN2Q3MDNmYWE5OGM2MmI2ZjVkM2VhODQu
LjgxZTVmODNjMmY5MWQ5N2FmODlkNzlkYWM1Njk4OTg4Zjk4ZTVjYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1l
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJQYXJhbWV0ZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAg
Ym9vbCBpc1NhbWVUeXBlKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIHBhcmFtZXRlclR5cGUoKSA9PSBvdGhlci5wYXJhbWV0ZXJUeXBlKCk7IH0KICAg
ICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBibGVuZChj
b25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqLCBkb3VibGUgcHJvZ3Jlc3MpID0gMDsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBibGVuZChjb25zdCBDdXN0
b21GaWx0ZXJQYXJhbWV0ZXIqLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmKSA9
IDA7CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1l
dGVyJikgY29uc3QgPSAwOwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDdXN0b21GaWx0ZXJQ
YXJhbWV0ZXImIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIHByb3RlY3RlZDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlci5oCmluZGV4IGJk
NjZjZWM2YzFjNGE0YTgyZmI5YWU3YzMzMDU3M2Q3ZDdlN2ViOTcuLjgyNzVkYjEzMmNhNzBmNWIw
NjI5Y2QyYmFkYmU3YWFiNmUyMzA1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJU
cmFuc2Zvcm1QYXJhbWV0ZXIuaApAQCAtNDYsMTQgKzQ2LDMzIEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVy
KG5hbWUpKTsKICAgICB9Ci0gICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRl
clBhcmFtZXRlcj4gYmxlbmQoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiwgZG91YmxlKQor
CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gYmxlbmQoY29u
c3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiBmcm9tUGFyYW1ldGVyLCBkb3VibGUgcHJvZ3Jlc3Ms
IGNvbnN0IExheW91dFNpemUmIHNpemUpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGFuaW1hdGlvbnMgc3VwcG9ydC4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk0OTgwCi0gICAgICAgIHJldHVybiB0aGlzOworICAgICAgICBp
ZiAoIWZyb21QYXJhbWV0ZXIgfHwgIWlzU2FtZVR5cGUoKmZyb21QYXJhbWV0ZXIpKQorICAgICAg
ICAgICAgcmV0dXJuIHRoaXM7CisKKyAgICAgICAgY29uc3QgQ3VzdG9tRmlsdGVyVHJhbnNmb3Jt
UGFyYW1ldGVyKiBmcm9tVHJhbnNmb3JtUGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3Vz
dG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyKj4oZnJvbVBhcmFtZXRlcik7CisgICAgICAgIGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGZyb20gPSBmcm9tVHJhbnNmb3JtUGFyYW1ldGVyLT5v
cGVyYXRpb25zKCk7CisgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHRvID0gb3Bl
cmF0aW9ucygpOworCisgICAgICAgIGlmIChmcm9tID09IHRvKQorICAgICAgICAgICAgcmV0dXJu
IHRoaXM7CisKKyAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcj4g
cmV0ID0gQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyOjpjcmVhdGUobmFtZSgpKTsKKwor
ICAgICAgICBpZiAoIWZyb20uc2l6ZSgpIHx8ICF0by5zaXplKCkpIHsKKyAgICAgICAgICAgIGlm
IChwcm9ncmVzcyA+IDAuNSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKworICAgICAg
ICAgICAgcmV0LT5zZXRPcGVyYXRpb25zKGZyb20pOworICAgICAgICAgICAgcmV0dXJuIHJldDsK
KyAgICAgICAgfQorCisgICAgICAgIHJldC0+c2V0T3BlcmF0aW9ucyh0by5ibGVuZChmcm9tLCBw
cm9ncmVzcywgc2l6ZSkpOworICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KLSAgICAKKwogICAg
IHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciYgbykg
Y29uc3QKICAgICB7CiAgICAgICAgIGlmICghaXNTYW1lVHlwZShvKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0
aW9uLmNwcAppbmRleCA2NTY5MjZlMjhlMzU3ZDYxMWUxMWQ2MzkwOTA4OTJjYTZiZDZjNTEzLi4w
ZTU5NjkwOWY2NTU0NzRhNmIyMzFkMThmOTZhYTU5MmVhYTdiMjViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVy
YXRpb24uY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFz
c1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246
OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29s
IGJsZW5kVG9QYXNzdGhyb3VnaCkKK1Bhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBCYXNpY0Nv
bG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZy
b20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgYmxlbmRUb1Bhc3N0
aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlzKSkKICAg
ICAgICAgcmV0dXJuIHRoaXM7CkBAIC02MCw3ICs2MCw3IEBAIGRvdWJsZSBCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uOjpwYXNzdGhyb3VnaEFtb3VudCgpIGNvbnN0CiAgICAgfQogfQog
Ci1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQorUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRp
b24+IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZp
bHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlvdXRTaXplJiwg
Ym9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCiB7CiAgICAgaWYgKGZyb20gJiYgIWZyb20tPmlzU2Ft
ZVR5cGUoKnRoaXMpKQogICAgICAgICByZXR1cm4gdGhpczsKQEAgLTkwLDcgKzkwLDcgQEAgZG91
YmxlIEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OnBhc3N0aHJvdWdoQW1v
dW50KCkgY29uc3QKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBHYW1t
YUZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQorUGFzc1JlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IEdhbW1hRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlz
KSkKICAgICAgICAgcmV0dXJuIHRoaXM7CkBAIC0xMTEsNyArMTExLDcgQEAgUGFzc1JlZlB0cjxG
aWx0ZXJPcGVyYXRpb24+IEdhbW1hRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJP
cGVyYXRpb24qIGYKICAgICAgICAgV2ViQ29yZTo6YmxlbmQoZnJvbU9mZnNldCwgbV9vZmZzZXQs
IHByb2dyZXNzKSwgbV90eXBlKTsKIH0KIAotUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJs
dXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKK1Bhc3NSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPiBCbHVyRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRp
b24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlz
KSkKICAgICAgICAgcmV0dXJuIHRoaXM7CkBAIC0xMjYsNyArMTI2LDcgQEAgUGFzc1JlZlB0cjxG
aWx0ZXJPcGVyYXRpb24+IEJsdXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiogZnIKICAgICByZXR1cm4gQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKG1fc3Rk
RGV2aWF0aW9uLmJsZW5kKGZyb21MZW5ndGgsIHByb2dyZXNzKSwgbV90eXBlKTsKIH0KIAotUGFz
c1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmJsZW5k
KGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9QYXNzdGhyb3VnaCkKK1Bhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBEcm9wU2hhZG93Rmls
dGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBw
cm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewog
ICAgIGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlzKSkKICAgICAgICAgcmV0dXJu
IHRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCBlNzI2MDBjNDdlMzY0ZGI2MjU2YjM3OWYz
YmE0NjNjZDM5OGQyNDQzLi42MjNjMDkxYWE1MGI0OGY1MzZhY2MyMDJmNjAxY2Q5ZjhkODI5MGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpIGNvbnN0ID0gMDsK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJl
dHVybiAhKCp0aGlzID09IG8pOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3Bl
cmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIC8qZnJvbSovLCBkb3VibGUgLypw
cm9ncmVzcyovLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkgeyByZXR1cm4g
MDsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0
IEZpbHRlck9wZXJhdGlvbiogLypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGNvbnN0IExh
eW91dFNpemUmLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJvdWdoKi8gPSBmYWxzZSkgeyByZXR1cm4g
MDsgfQogCiAgICAgdmlydHVhbCBPcGVyYXRpb25UeXBlIGdldE9wZXJhdGlvblR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTYW1lVHlwZShjb25zdCBG
aWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuIG8uZ2V0T3BlcmF0aW9uVHlwZSgpID09
IG1fdHlwZTsgfQpAQCAtMTkxLDcgKzE5MSw3IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBhbW91
bnQoKSBjb25zdCB7IHJldHVybiBtX2Ftb3VudDsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlvdXRTaXplJiwgYm9vbCBibGVuZFRv
UGFzc3Rocm91Z2ggPSBmYWxzZSk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG9wZXJh
dG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdApAQCAtMjI1LDcgKzIyNSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBhZmZlY3RzT3BhY2l0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZSA9PSBPUEFDSVRZOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9n
cmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9t
LCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmLCBib29sIGJsZW5kVG9QYXNzdGhy
b3VnaCA9IGZhbHNlKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CkBAIC0yNTgsNyArMjU4LDcgQEAgcHVibGlj
OgogICAgIGRvdWJsZSBleHBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb25lbnQ7IH0KICAg
ICBkb3VibGUgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KIAotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNl
KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBG
aWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYs
IGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOwogCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKQEAgLTI5
NCw3ICsyOTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBtb3Zlc1BpeGVscygpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVy
YXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNz
LCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdo
ID0gZmFsc2UpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKQEAgLTMzMCw3ICszMzAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBtb3Zlc1BpeGVscygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3Vn
aCA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVu
ZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5
b3V0U2l6ZSYsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOwogCiBwcml2YXRlOgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcAppbmRleCBjOTQyYTYxNjkyY2Yx
ZmYyYTJlZGQwODk1NDFjYmFkNWEwYTNjNjdkLi4wNzM0MjQyMWYzMTA0N2Q0ZTJiOWM3NDk1Yzc5
MWYzNWY2NzNkOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKQEAg
LTIzLDYgKzIzLDkgQEAKICNpbmNsdWRlICJUcmFuc2Zvcm1PcGVyYXRpb25zLmgiCiAKICNpbmNs
dWRlICJJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIk1hdHJpeDNEVHJh
bnNmb3JtT3BlcmF0aW9uLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNjEsNCArNjQsNTggQEAgYm9vbCBUcmFuc2Zvcm1PcGVyYXRpb25zOjpv
cGVyYXRpb25zTWF0Y2goY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgb3RoZXIpIGNvbnMKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorVHJhbnNmb3JtT3BlcmF0aW9ucyBUcmFuc2Zvcm1PcGVyYXRp
b25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMm
IGZyb20sIGNvbnN0IGRvdWJsZSYgcHJvZ3Jlc3MpIGNvbnN0Cit7CisgICAgVHJhbnNmb3JtT3Bl
cmF0aW9ucyByZXN1bHQ7CisKKyAgICB1bnNpZ25lZCBmcm9tU2l6ZSA9IGZyb20ub3BlcmF0aW9u
cygpLnNpemUoKTsKKyAgICB1bnNpZ25lZCB0b1NpemUgPSBvcGVyYXRpb25zKCkuc2l6ZSgpOwor
ICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6Om1heChmcm9tU2l6ZSwgdG9TaXplKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIFJlZlB0cjxUcmFuc2Zv
cm1PcGVyYXRpb24+IGZyb21PcCA9IChpIDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClb
aV0uZ2V0KCkgOiAwOworICAgICAgICBSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiB0b09wID0g
KGkgPCB0b1NpemUpID8gb3BlcmF0aW9ucygpW2ldLmdldCgpIDogMDsKKyAgICAgICAgUmVmUHRy
PFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmRlZE9wID0gdG9PcCA/IHRvT3AtPmJsZW5kKGZyb21P
cC5nZXQoKSwgcHJvZ3Jlc3MpIDogKGZyb21PcCA/IGZyb21PcC0+YmxlbmQoMCwgcHJvZ3Jlc3Ms
IHRydWUpIDogUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+KDApKTsKKyAgICAgICAgaWYg
KGJsZW5kZWRPcCkKKyAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5k
ZWRPcCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUmVmUHRyPFRyYW5zZm9ybU9wZXJh
dGlvbj4gaWRlbnRpdHlPcCA9IElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoKTsK
KyAgICAgICAgICAgIGlmIChwcm9ncmVzcyA+IDAuNSkKKyAgICAgICAgICAgICAgICByZXN1bHQu
b3BlcmF0aW9ucygpLmFwcGVuZCh0b09wID8gdG9PcCA6IGlkZW50aXR5T3ApOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21P
cCA/IGZyb21PcCA6IGlkZW50aXR5T3ApOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworVHJhbnNmb3JtT3BlcmF0aW9ucyBUcmFuc2Zvcm1PcGVyYXRpb25zOjpi
bGVuZEJ5TWF0cml4KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGZyb20sIGRvdWJsZSBwcm9n
cmVzcywgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgY29uc3QKK3sKKyAgICBUcmFuc2Zvcm1PcGVy
YXRpb25zIHJlc3VsdDsKKworICAgIC8vIENvbnZlcnQgdGhlIFRyYW5zZm9ybU9wZXJhdGlvbnMg
aW50byBtYXRyaWNlcworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21UOworICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHRvVDsKKyAgICBmcm9tLmFwcGx5KHNpemUsIGZyb21UKTsKKyAgICBh
cHBseShzaXplLCB0b1QpOworCisgICAgdG9ULmJsZW5kKGZyb21ULCBwcm9ncmVzcyk7CisKKyAg
ICAvLyBBcHBlbmQgdGhlIHJlc3VsdAorICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKE1h
dHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUodG9UKSk7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitUcmFuc2Zvcm1PcGVyYXRpb25zIFRyYW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5k
KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3Qg
TGF5b3V0U2l6ZSYgc2l6ZSkgY29uc3QKK3sKKyAgICBpZiAoZnJvbSA9PSAqdGhpcykKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworCisgICAgaWYgKGZyb20uc2l6ZSgpICYmIGZyb20ub3BlcmF0aW9u
c01hdGNoKCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGJsZW5kQnlNYXRjaGluZ09wZXJhdGlvbnMo
ZnJvbSwgcHJvZ3Jlc3MpOworCisgICAgcmV0dXJuIGJsZW5kQnlNYXRyaXgoZnJvbSwgcHJvZ3Jl
c3MsIHNpemUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtT3BlcmF0aW9ucy5oCmluZGV4IGUyMzZlMTJkOTIwYmVjNTU2MjE0MzdlZTgzOTk1NGI5YWI2
ZDNmOWYuLjFkNGM5MGU2NGQ3MTQ4MGM4NjYwNjc3MGU0MDE1Yjk0MjNjZWZjOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
T3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaWZuZGVmIFRy
YW5zZm9ybU9wZXJhdGlvbnNfaAogI2RlZmluZSBUcmFuc2Zvcm1PcGVyYXRpb25zX2gKIAorI2lu
Y2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTcxLDYg
KzcyLDEwIEBAIHB1YmxpYzoKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3Bl
cmF0aW9ucy5zaXplKCk7IH0KICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGF0KHNpemVf
dCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXggPCBtX29wZXJhdGlvbnMuc2l6ZSgpID8gbV9v
cGVyYXRpb25zLmF0KGluZGV4KS5nZXQoKSA6IDA7IH0KIAorICAgIFRyYW5zZm9ybU9wZXJhdGlv
bnMgYmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyhjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiwg
Y29uc3QgZG91YmxlJiBwcm9ncmVzcykgY29uc3Q7CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBi
bGVuZEJ5TWF0cml4KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGZyb20sIGRvdWJsZSBwcm9n
cmVzcywgY29uc3QgTGF5b3V0U2l6ZSYpIGNvbnN0OworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMg
YmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSwgZG91YmxlIHByb2dyZXNzLCBj
b25zdCBMYXlvdXRTaXplJikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxU
cmFuc2Zvcm1PcGVyYXRpb24+ID4gbV9vcGVyYXRpb25zOwogfTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyMzI5NjNjMDMw
MjdjNDU4ZTdmYjdjZmI1YTZkZDY0YTRkZTkzOWQwLi4zMDYxOWI5OGVhMWZlOWQ2MTU0NGJkNzM5
N2ZiZTZkMTZmMDliYWI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDgtMjkgIEpvc2h1
YSBOZXR0ZXJmaWVsZCAgPGpuZXR0ZXJmaWVsZEByaW0uY29tPgorCisgICAgICAgIFtDU1MgU2hh
ZGVyc10gSW1wbGVtZW50IHRyYW5zZm9ybSBwYXJhbWV0ZXIgYW5pbWF0aW9ucyBmb3IgQ1NTIEN1
c3RvbSBGaWx0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NDk4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3QgdHJhbnNmb3JtIGFuaW1hdGlvbnMgaW4gY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0
b20tZmlsdGVyLWFuaW1hdGlvbi5odG1sLgorCisgICAgICAgICogY3NzMy9maWx0ZXJzL2N1c3Rv
bS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1sOiBBZGQgdHJhbnNmb3JtIHRlc3RzLgorICAg
ICAgICAqIGNzczMvZmlsdGVycy9yZXNvdXJjZXMvY3VzdG9tLWZpbHRlci1wYXJzZXIuanM6IEFk
ZCBzdXBwb3J0IGZvciAoYWZmaW5lICYgM2QpIG1hdHJpY2llcyAmIHRyYW5zZm9ybXMuCisKKwog
MjAxMi0wOC0zMCAgUGhpbGlwIFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgdXBkYXRlIHRvIHRlc3QgZXhwZWN0YXRpb25zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItYW5p
bWF0aW9uLWV4cGVjdGVkLnR4dAppbmRleCA2ZmRlMDcxMWRkYzY2ZTkyNGIzYjQyMjE1ZDk2Yjc4
MTIyOGJkNjRmLi4wZDIzMjE4OWExMDE2N2NkZjY3ZWU5ZmJkNmJmN2VjYzkxMmY1MDE4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItYW5p
bWF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9t
L2N1c3RvbS1maWx0ZXItYW5pbWF0aW9uLWV4cGVjdGVkLnR4dApAQCAtOCw0ICs4LDEwIEBAIFBB
U1MgLSAid2Via2l0RmlsdGVyIiBwcm9wZXJ0eSBmb3IgImN1c3RvbS1mcm9tLWRpZmYtcGFyYW1z
LWJveCIgZWxlbWVudCBhdCAxcyBzCiBQQVNTIC0gIndlYmtpdEZpbHRlciIgcHJvcGVydHkgZm9y
ICJjdXN0b20tdG8tZGlmZi1wYXJhbXMtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcg
Y2xvc2UgdG86IGN1c3RvbSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1i
b3gsIHBhcmFtIDEwLCByb3RhdGVCeSA2MCwgb2Zmc2V0IDEwLCBhbm90aGVyX3BhcmFtIDUpCiBQ
QVNTIC0gIndlYmtpdEZpbHRlciIgcHJvcGVydHkgZm9yICJjdXN0b20tbWl4LXBhcmFtcy1ib3gi
IGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogY3VzdG9tKHVybCh2ZXJ0ZXgt
cm90YXRlLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgcGFyYW0gMTAsIGFub3RoZXJfcGFyYW0g
NSwgZmlyc3RfcGFyYW0gNiwgcm90YXRlQnkgNjAsIG9mZnNldCAxMCwgbGFzdF9wYXJhbSA0KQog
UEFTUyAtICJ3ZWJraXRGaWx0ZXIiIHByb3BlcnR5IGZvciAiY3VzdG9tLW1peC1udW1iZXJzLWJv
eCIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiBjdXN0b20odXJsKHZlcnRl
eC1yb3RhdGUudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCByb3RhdGVCeSA0NSwgYSA1LjUsIGIg
MTEgMTYuNSwgYyAyMiAyNy41IDMzLCBkIDM4LjUgNDQgNDkuNSkKK1BBU1MgLSAid2Via2l0Rmls
dGVyIiBwcm9wZXJ0eSBmb3IgImN1c3RvbS1taXgtcm90YXRlWi1ib3giIGVsZW1lbnQgYXQgMXMg
c2F3IHNvbWV0aGluZyBjbG9zZSB0bzogY3VzdG9tKHVybCh2ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFt
ZXRlci52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHRyYW5zZm9ybSBtYXRyaXgoMSAwIDAgMSAw
IDApKQorUEFTUyAtICJ3ZWJraXRGaWx0ZXIiIHByb3BlcnR5IGZvciAiY3VzdG9tLW1peC1yb3Rh
dGVYLWJveCIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiBjdXN0b20odXJs
KHZlcnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgdHJh
bnNmb3JtIG1hdHJpeDNkKDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEpKQorUEFTUyAt
ICJ3ZWJraXRGaWx0ZXIiIHByb3BlcnR5IGZvciAiY3VzdG9tLW1peC1yb3RhdGVZLWJveCIgZWxl
bWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiBjdXN0b20odXJsKHZlcnRleC10cmFu
c2Zvcm0tcGFyYW1ldGVyLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgdHJhbnNmb3JtIG1hdHJp
eDNkKDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEpKQorUEFTUyAtICJ3ZWJraXRGaWx0
ZXIiIHByb3BlcnR5IGZvciAiY3VzdG9tLW1peC10cmFuc2xhdGUzRC1ib3giIGVsZW1lbnQgYXQg
MXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogY3VzdG9tKHVybCh2ZXJ0ZXgtdHJhbnNmb3JtLXBh
cmFtZXRlci52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHRyYW5zZm9ybSBtYXRyaXgzZCgxIDAg
MCAwIDAgMSAwIDAgMCAwIDEgMCAxMCAxMCAxMCAxKSkKK1BBU1MgLSAid2Via2l0RmlsdGVyIiBw
cm9wZXJ0eSBmb3IgImN1c3RvbS1taXgtc2NhbGUzRC1ib3giIGVsZW1lbnQgYXQgMXMgc2F3IHNv
bWV0aGluZyBjbG9zZSB0bzogY3VzdG9tKHVybCh2ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFtZXRlci52
cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHRyYW5zZm9ybSBtYXRyaXgzZCgxLjE3IDAgMCAwIDAg
MS43NSAwIDAgMCAwIDEuNzUgMCAwIDAgMCAxKSkKK1BBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9w
ZXJ0eSBmb3IgImN1c3RvbS1taXgtbXVsdGktYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhp
bmcgY2xvc2UgdG86IGN1c3RvbSh1cmwodmVydGV4LXRyYW5zZm9ybS1wYXJhbWV0ZXIudnMpIG5v
bmUsIDEgMSBmaWx0ZXItYm94LCB0cmFuc2Zvcm0gbWF0cml4M2QoMS4xNyAwIDAgMCAwIDEuNzUg
MCAwIDAgMCAxLjc1IDAgMCAwIDAgMSkpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24uaHRtbCBiL0xheW91dFRlc3Rz
L2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24uaHRtbAppbmRleCBh
MWVjODI5YTQwMmQ0N2FkYzJhMDEyOTY0ZTdjZGIwMjYzYzk0ZDYxLi43YzIzMjFiMmZiY2IxNDg3
OTQwNjMyMjU4YWRjMmVkYmRjOTU1YmMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItYW5pbWF0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1sCkBAIC01
Miw2ICs1MiwzMCBAQAogICAgICAgICAjY3VzdG9tLW1peC1udW1iZXJzLWJveCB7CiAgICAgICAg
ICAgICAtd2Via2l0LWFuaW1hdGlvbjogY3VzdG9tLW1peC1udW1iZXJzLWFuaW0gMnMgbGluZWFy
OwogICAgICAgICB9CisKKyAgICAgICAgI2N1c3RvbS1taXgtcm90YXRlWi1ib3ggeworICAgICAg
ICAgICAgLXdlYmtpdC1hbmltYXRpb246IGN1c3RvbS1taXgtcm90YXRlWi1hbmltIDJzIGxpbmVh
cjsKKyAgICAgICAgfQorCisgICAgICAgICNjdXN0b20tbWl4LXJvdGF0ZVgtYm94IHsKKyAgICAg
ICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBjdXN0b20tbWl4LXJvdGF0ZVgtYW5pbSAycyBsaW5l
YXI7CisgICAgICAgIH0KKworICAgICAgICAjY3VzdG9tLW1peC1yb3RhdGVZLWJveCB7CisgICAg
ICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogY3VzdG9tLW1peC1yb3RhdGVZLWFuaW0gMnMgbGlu
ZWFyOworICAgICAgICB9CisKKyAgICAgICAgI2N1c3RvbS1taXgtdHJhbnNsYXRlM0QtYm94IHsK
KyAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBjdXN0b20tbWl4LXRyYW5zbGF0ZTNELWFu
aW0gMnMgbGluZWFyOworICAgICAgICB9CisKKyAgICAgICAgI2N1c3RvbS1taXgtc2NhbGUzRC1i
b3ggeworICAgICAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IGN1c3RvbS1taXgtc2NhbGUzRC1h
bmltIDJzIGxpbmVhcjsKKyAgICAgICAgfQorCisgICAgICAgICNjdXN0b20tbWl4LW11bHRpLWJv
eCB7CisgICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogY3VzdG9tLW1peC1tdWx0aS1hbmlt
IDJzIGxpbmVhcjsKKyAgICAgICAgfQogICAgIAogICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMg
Y3VzdG9tLWZyb20tbm9uZS1hbmltIHsKICAgICAgICAgICAgIGZyb20geyAtd2Via2l0LWZpbHRl
cjogbm9uZTsgfQpAQCAtOTcsNiArMTIxLDM2IEBACiAgICAgICAgICAgICBmcm9tIHsgLXdlYmtp
dC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC1yb3RhdGUudnMpLCByb3Rh
dGVCeSAwLCBhIDEsIGIgMiAzLCBjIDQgNSA2LCBkIDcgOCA5KTsgfQogICAgICAgICAgICAgdG8g
ICB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgtcm90YXRl
LnZzKSwgcm90YXRlQnkgOTAsIGEgMTAsIGIgMjAgMzAsIGMgNDAgNTAgNjAsIGQgNzAgODAgOTAp
OyB9CiAgICAgICAgIH0KKworICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgY3VzdG9tLW1peC1y
b3RhdGVaLWFuaW0geworICAgICAgICAgICAgZnJvbSB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20o
dXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFtZXRlci52cyksIHRyYW5zZm9y
bSByb3RhdGVaKDBkZWcpKTsgfQorICAgICAgICAgICAgdG8gICB7IC13ZWJraXQtZmlsdGVyOiBj
dXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFtZXRlci52cyksIHRy
YW5zZm9ybSByb3RhdGVaKDM2MGRlZykpOyB9CisgICAgICAgIH0KKworICAgICAgICBALXdlYmtp
dC1rZXlmcmFtZXMgY3VzdG9tLW1peC1yb3RhdGVYLWFuaW0geworICAgICAgICAgICAgZnJvbSB7
IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgtdHJhbnNmb3Jt
LXBhcmFtZXRlci52cyksIHRyYW5zZm9ybSByb3RhdGVYKDBkZWcpKTsgfQorICAgICAgICAgICAg
dG8gICB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgtdHJh
bnNmb3JtLXBhcmFtZXRlci52cyksIHRyYW5zZm9ybSByb3RhdGVYKDM2MGRlZykpOyB9CisgICAg
ICAgIH0KKworICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgY3VzdG9tLW1peC1yb3RhdGVZLWFu
aW0geworICAgICAgICAgICAgZnJvbSB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jl
c291cmNlcy92ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFtZXRlci52cyksIHRyYW5zZm9ybSByb3RhdGVZ
KDBkZWcpKTsgfQorICAgICAgICAgICAgdG8gICB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJs
KC4uL3Jlc291cmNlcy92ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFtZXRlci52cyksIHRyYW5zZm9ybSBy
b3RhdGVZKDM2MGRlZykpOyB9CisgICAgICAgIH0KKworICAgICAgICBALXdlYmtpdC1rZXlmcmFt
ZXMgY3VzdG9tLW1peC10cmFuc2xhdGUzRC1hbmltIHsKKyAgICAgICAgICAgIGZyb20geyAtd2Vi
a2l0LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXRyYW5zZm9ybS1wYXJh
bWV0ZXIudnMpLCB0cmFuc2Zvcm0gdHJhbnNsYXRlM2QoMCwgMCwgMCkpOyB9CisgICAgICAgICAg
ICB0byAgIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC10
cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSwgdHJhbnNmb3JtIHRyYW5zbGF0ZTNkKDIwcHgsIDIwcHgs
IDIwcHgpKTsgfQorICAgICAgICB9CisKKyAgICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGN1c3Rv
bS1taXgtc2NhbGUzRC1hbmltIHsKKyAgICAgICAgICAgIGZyb20geyAtd2Via2l0LWZpbHRlcjog
Y3VzdG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXRyYW5zZm9ybS1wYXJhbWV0ZXIudnMpLCB0
cmFuc2Zvcm0gc2NhbGUzZCgxLCAxLCAxKSk7IH0KKyAgICAgICAgICAgIHRvICAgeyAtd2Via2l0
LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXRyYW5zZm9ybS1wYXJhbWV0
ZXIudnMpLCB0cmFuc2Zvcm0gc2NhbGUzZCgyLjUsIDIuNSwgMi41KSk7IH0KKyAgICAgICAgfQor
CisgICAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBjdXN0b20tbWl4LW11bHRpLWFuaW0geworICAg
ICAgICAgICAgZnJvbSB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92
ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFtZXRlci52cyksIHRyYW5zZm9ybSByb3RhdGVYKDBkZWcpIHNj
YWxlM2QoMSwgMSwgMSkpOyB9CisgICAgICAgICAgICB0byAgIHsgLXdlYmtpdC1maWx0ZXI6IGN1
c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSwgdHJh
bnNmb3JtIHJvdGF0ZVgoMzYwZGVnKSBzY2FsZTNkKDIuNSwgMi41LCAyLjUpKTsgfQorICAgICAg
ICB9CiAgICAgPC9zdHlsZT4KICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2N1c3RvbS1m
aWx0ZXItcGFyc2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vYW5p
bWF0aW9ucy9yZXNvdXJjZXMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+CkBA
IC0xMTcsNyArMTcxLDEzIEBACiAgICAgICAgICAgICBbImN1c3RvbS10by1kaWZmLXBhcmFtcy1h
bmltIiwgIDEsICJjdXN0b20tdG8tZGlmZi1wYXJhbXMtYm94IiwgIndlYmtpdEZpbHRlciIsICdj
dXN0b20odXJsKHZlcnRleC1yb3RhdGUudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCBwYXJhbSAx
MCwgcm90YXRlQnkgNjAsIG9mZnNldCAxMCwgYW5vdGhlcl9wYXJhbSA1KScsIDVdLAogCiAgICAg
ICAgICAgICBbImN1c3RvbS1taXgtcGFyYW1zLWFuaW0iLCAgMSwgImN1c3RvbS1taXgtcGFyYW1z
LWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHVybCh2ZXJ0ZXgtcm90YXRlLnZzKSBub25l
LCAxIDEgZmlsdGVyLWJveCwgcGFyYW0gMTAsIGFub3RoZXJfcGFyYW0gNSwgZmlyc3RfcGFyYW0g
Niwgcm90YXRlQnkgNjAsIG9mZnNldCAxMCwgbGFzdF9wYXJhbSA0KScsIDVdLAotICAgICAgICAg
ICAgWyJjdXN0b20tbWl4LW51bWJlcnMtYW5pbSIsICAxLCAiY3VzdG9tLW1peC1udW1iZXJzLWJv
eCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHVybCh2ZXJ0ZXgtcm90YXRlLnZzKSBub25lLCAx
IDEgZmlsdGVyLWJveCwgcm90YXRlQnkgNDUsIGEgNS41LCBiIDExIDE2LjUsIGMgMjIgMjcuNSAz
MywgZCAzOC41IDQ0IDQ5LjUpJywgMTBdCisgICAgICAgICAgICBbImN1c3RvbS1taXgtbnVtYmVy
cy1hbmltIiwgIDEsICJjdXN0b20tbWl4LW51bWJlcnMtYm94IiwgIndlYmtpdEZpbHRlciIsICdj
dXN0b20odXJsKHZlcnRleC1yb3RhdGUudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCByb3RhdGVC
eSA0NSwgYSA1LjUsIGIgMTEgMTYuNSwgYyAyMiAyNy41IDMzLCBkIDM4LjUgNDQgNDkuNSknLCAx
MF0sCisgICAgICAgICAgICBbImN1c3RvbS1taXgtcm90YXRlWi1hbmltIiwgIDEsICJjdXN0b20t
bWl4LXJvdGF0ZVotYm94IiwgIndlYmtpdEZpbHRlciIsICdjdXN0b20odXJsKHZlcnRleC10cmFu
c2Zvcm0tcGFyYW1ldGVyLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgdHJhbnNmb3JtIG1hdHJp
eCgxIDAgMCAxIDAgMCkpJywgMC4wMDFdLAorICAgICAgICAgICAgWyJjdXN0b20tbWl4LXJvdGF0
ZVgtYW5pbSIsICAxLCAiY3VzdG9tLW1peC1yb3RhdGVYLWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAn
Y3VzdG9tKHVybCh2ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFtZXRlci52cykgbm9uZSwgMSAxIGZpbHRl
ci1ib3gsIHRyYW5zZm9ybSBtYXRyaXgzZCgxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAx
KSknLCAwLjAwMV0sCisgICAgICAgICAgICBbImN1c3RvbS1taXgtcm90YXRlWS1hbmltIiwgIDEs
ICJjdXN0b20tbWl4LXJvdGF0ZVktYm94IiwgIndlYmtpdEZpbHRlciIsICdjdXN0b20odXJsKHZl
cnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgdHJhbnNm
b3JtIG1hdHJpeDNkKDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEpKScsIDAuMDAxXSwK
KyAgICAgICAgICAgIFsiY3VzdG9tLW1peC10cmFuc2xhdGUzRC1hbmltIiwgIDEsICJjdXN0b20t
bWl4LXRyYW5zbGF0ZTNELWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHVybCh2ZXJ0ZXgt
dHJhbnNmb3JtLXBhcmFtZXRlci52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHRyYW5zZm9ybSBt
YXRyaXgzZCgxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAxMCAxMCAxMCAxKSknLCAzXSwKKyAgICAg
ICAgICAgIFsiY3VzdG9tLW1peC1zY2FsZTNELWFuaW0iLCAgMSwgImN1c3RvbS1taXgtc2NhbGUz
RC1ib3giLCAid2Via2l0RmlsdGVyIiwgJ2N1c3RvbSh1cmwodmVydGV4LXRyYW5zZm9ybS1wYXJh
bWV0ZXIudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCB0cmFuc2Zvcm0gbWF0cml4M2QoMS4xNyAw
IDAgMCAwIDEuNzUgMCAwIDAgMCAxLjc1IDAgMCAwIDAgMSkpJywgMV0sCisgICAgICAgICAgICBb
ImN1c3RvbS1taXgtbXVsdGktYW5pbSIsICAxLCAiY3VzdG9tLW1peC1tdWx0aS1ib3giLCAid2Vi
a2l0RmlsdGVyIiwgJ2N1c3RvbSh1cmwodmVydGV4LXRyYW5zZm9ybS1wYXJhbWV0ZXIudnMpIG5v
bmUsIDEgMSBmaWx0ZXItYm94LCB0cmFuc2Zvcm0gbWF0cml4M2QoMS4xNyAwIDAgMCAwIDEuNzUg
MCAwIDAgMCAxLjc1IDAgMCAwIDAgMSkpJywgMV0KICAgICAgICAgXTsKICAgICAgICAgcnVuQW5p
bWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcyk7CiAgICAgPC9zY3JpcHQ+CkBAIC0xMzIsNyArMTky
LDEyIEBACiAgICAgPGRpdiBjbGFzcz0iYm94IiBpZD0iY3VzdG9tLXRvLWRpZmYtcGFyYW1zLWJv
eCI+PC9kaXY+CiAgICAgPGRpdiBjbGFzcz0iYm94IiBpZD0iY3VzdG9tLW1peC1wYXJhbXMtYm94
Ij48L2Rpdj4KICAgICA8ZGl2IGNsYXNzPSJib3giIGlkPSJjdXN0b20tbWl4LW51bWJlcnMtYm94
Ij48L2Rpdj4KLQorICAgIDxkaXYgY2xhc3M9ImJveCIgaWQ9ImN1c3RvbS1taXgtcm90YXRlWi1i
b3giPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCIgaWQ9ImN1c3RvbS1taXgtcm90YXRlWC1i
b3giPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCIgaWQ9ImN1c3RvbS1taXgtcm90YXRlWS1i
b3giPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCIgaWQ9ImN1c3RvbS1taXgtdHJhbnNsYXRl
M0QtYm94Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIGlkPSJjdXN0b20tbWl4LXNjYWxl
M0QtYm94Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIGlkPSJjdXN0b20tbWl4LW11bHRp
LWJveCI+PC9kaXY+CiAgICAgPGRpdiBpZD0icmVzdWx0Ij4KICAgICA8L2Rpdj4KIDwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvY3VzdG9tLWZp
bHRlci1wYXJzZXIuanMgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2N1c3Rv
bS1maWx0ZXItcGFyc2VyLmpzCmluZGV4IDhhMzBiNjI1OTFmNDA4OWIyYzg5MzBiYzllZjljYTli
MGEzZTdhZDguLjdlNzkyZDc3YzYyYjBmMzBkMTExOTk4MWYwOTQzYjliMDczZjk3MGYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvY3VzdG9tLWZpbHRlci1w
YXJzZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9jdXN0b20t
ZmlsdGVyLXBhcnNlci5qcwpAQCAtNjQsNiArNjQsMTEgQEAgZnVuY3Rpb24gbnVtYmVyKHRva2Vu
KQogICAgIHJldHVybiB0b2tlbi50eXBlID09ICJmbG9hdCIgfHwgdG9rZW4udHlwZSA9PSAiaW50
ZWdlciI7CiB9CiAKK2Z1bmN0aW9uIHRyYW5zZm9ybSh0b2tlbikKK3sKKyAgICByZXR1cm4gdG9r
ZW4udHlwZSA9PSAia2V5d29yZCIgJiYgdG9rZW4udmFsdWUgPT0gInRyYW5zZm9ybSI7Cit9CisK
IC8vIEhlbHBlciBjbGFzcyB0byBpdGVyYXRlIG9uIHRoZSB0b2tlbiBzdHJlYW0uIEl0IHdpbGwg
YWRkIGFuICJlbmQiCiAvLyB0b2tlbiBhdCB0aGUgZW5kIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHVz
ZSB0aGUgImFoZWFkIiBmdW5jdGlvbgogLy8gd2l0aG91dCBjaGVja2luZyBpZiBpdCdzIHRoZSBs
YXN0IHRva2VuIGluIHRoZSBzdHJlYW0uCkBAIC0xMTQsNiArMTE5LDE4IEBAIGZ1bmN0aW9uIHBh
cnNlRnVuY3Rpb24obSkKICAgICByZXR1cm4gZnVuY3Rpb25PYmplY3Q7CiB9CiAKK2Z1bmN0aW9u
IHBhcnNlTWF0cml4KG0pCit7CisgICAgdmFyIG1hdHJpeE9iamVjdCA9IHsKKyAgICAgICAgdHlw
ZTogbS52YWx1ZQorICAgIH07CisgICAgbS5za2lwKCk7CisgICAgbS5za2lwKCk7CisgICAgbWF0
cml4T2JqZWN0LmFyZ3VtZW50cyA9IHBhcnNlTGlzdChtLCBbIikiLCAiZW5kIl0pOworICAgIG0u
c2tpcCgpOworICAgIHJldHVybiBtYXRyaXhPYmplY3Q7Cit9CisKIC8vIENyZWF0ZXMgYSBuZXcg
InBhcmFtZXRlciIgbm9kZS4gSXQgZXhwZWN0cyB0aGF0IHRoZSBjdXJyZW50IHRva2VuIGlzIHRo
ZSBwYXJhbWV0ZXIgbmFtZS4KIC8vIEl0IGNvbnN1bWVzIGV2ZXJ5dGhpbmcgYmVmb3JlIHRoZSBm
b2xsb3dpbmcgY29tbWEuCiBmdW5jdGlvbiBwYXJzZVBhcmFtZXRlcihtKQpAQCAtMTI5LDcgKzE0
Niw3IEBAIGZ1bmN0aW9uIHBhcnNlUGFyYW1ldGVyKG0pCiAKIC8vIENvbnN1bWVzIGEgbGlzdCBv
ZiB0b2tlbnMgYmVmb3JlIHJlYWNoaW5nIHRoZSAiZW5kVG9rZW4iIGFuZCByZXR1cm5zIGFuIGFy
cmF5IHdpdGggYWxsIHRoZSBwYXJzZWQgaXRlbXMuCiAvLyBNYWtlcyB0aGUgZm9sbG93aW5nIGFz
c3VtcHRpb25zOgotLy8gLSBpZiBhIGtleXdvcmQgaXMgZm9sbG93ZWQgYnkgIigiIHRoZW4gaXQg
aXMgYSBzdGFydCBvZiBmdW5jdGlvbgorLy8gLSBpZiBhIGtleXdvcmQgaXMgZm9sbG93ZWQgYnkg
IigiIHRoZW4gaXQgaXMgYSBzdGFydCBvZiBmdW5jdGlvbiwgdW5sZXNzIGl0IGlzIGEgbWF0cml4
LgogLy8gLSBpZiBhIGtleXdvcmQgaXMgbm90IGZvbGxvd2VkIGJ5ICIsIiBpdCBpcyBhIHBhcmFt
ZXRlcgogLy8gS2V5d29yZHMgdGhhdCBkbyBub3QgbWF0Y2ggZWl0aGVyIG9mIHRoZSBwcmV2aW91
cyBydWxlcyBhbmQgdG9rZW5zIGxpa2UgbnVtYmVyIGFuZCB1cmwgYXJlIGp1c3QgY2xvbmVkLgog
ZnVuY3Rpb24gcGFyc2VMaXN0KG0sIGVuZFRva2VuKQpAQCAtMTM3LDkgKzE1NCwxNiBAQCBmdW5j
dGlvbiBwYXJzZUxpc3QobSwgZW5kVG9rZW4pCiAgICAgdmFyIHJlc3VsdCA9IFtdLCB0b2tlbjsK
ICAgICB3aGlsZSAoKHRva2VuID0gbS5jdXJyZW50KCkpICYmICF0b2tlbi5pc0EoZW5kVG9rZW4p
KSB7CiAgICAgICAgIGlmICh0b2tlbi5pc0EoImtleXdvcmQiKSkgewotICAgICAgICAgICAgaWYg
KG0uYWhlYWQoKS5pc0EoIigiKSkKKyAgICAgICAgICAgIGlmIChtLmFoZWFkKCkuaXNBKCIoIikg
JiYgdG9rZW4udmFsdWUgIT0gIm1hdHJpeCIgJiYgdG9rZW4udmFsdWUgIT0gIm1hdHJpeDNkIikK
ICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChwYXJzZUZ1bmN0aW9uKG0pKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKG0uYWhlYWQoKS5pc0EoIiwiLCBlbmRUb2tlbikpIHsKKyAgICAgICAgICAg
IGVsc2UgaWYgKG0uYWhlYWQoKS5pc0EoIigiKSAmJiAodG9rZW4udmFsdWUgPT0gIm1hdHJpeCIg
fHwgdG9rZW4udmFsdWUgPT0gIm1hdHJpeDNkIikpIHsKKyAgICAgICAgICAgICAgICB2YXIgbCA9
IHBhcnNlTWF0cml4KG0pOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbC5h
cmd1bWVudHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJudW1iZXIiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsdWU6IGwuYXJndW1lbnRzW2ldLnZhbHVlCisgICAgICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSBlbHNlIGlmIChtLmFoZWFkKCkuaXNBKCIsIiwgZW5kVG9rZW4p
KSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goewogICAgICAgICAgICAgICAgICAgICB0
eXBlOiAia2V5d29yZCIsIAogICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbS5za2lwKCkudmFs
dWUKQEAgLTE1MSw2ICsxNzUsMTEgQEAgZnVuY3Rpb24gcGFyc2VMaXN0KG0sIGVuZFRva2VuKQog
ICAgICAgICAgICAgICAgIHR5cGU6ICJudW1iZXIiLAogICAgICAgICAgICAgICAgIHZhbHVlOiBt
LnNraXAoKS52YWx1ZQogICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSBpZiAodG9rZW4u
aXNBKHRyYW5zZm9ybSkpIHsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsKKyAgICAgICAgICAg
ICAgICB0eXBlOiAidHJhbnNmb3JtIiwKKyAgICAgICAgICAgICAgICB2YWx1ZTogbS5za2lwKCku
dmFsdWUKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UgaWYgKHRva2VuLmlzQSgidXJs
IikpIHsKICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsKICAgICAgICAgICAgICAgICB0eXBlOiAi
dXJsIiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161594</attachid>
            <date>2012-08-30 17:23:32 -0700</date>
            <delta_ts>2012-09-11 16:30:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94980-20120830202128.patch</filename>
            <type>text/plain</type>
            <size>37112</size>
            <attacher name="Joshua Netterfield">jnetterfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM3YTQzNmQ1Y2NjZGE0
ZDExYWMyMjUwNDFlYmYzYTA1NjdlN2RjMS4uZjBiNTAwZGM4OTY5MTU3NTYwMjc2MDQ1OTEwN2Q2
OTUyNWNjZWY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA4LTMwICBKb3No
dWEgTmV0dGVyZmllbGQgIDxqbmV0dGVyZmllbGRAcmltLmNvbT4KKworICAgICAgICBbQ1NTIFNo
YWRlcnNdIEltcGxlbWVudCB0cmFuc2Zvcm0gcGFyYW1ldGVyIGFuaW1hdGlvbnMgZm9yIENTUyBD
dXN0b20gRmlsdGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTQ5ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBY2NvcmRpbmcgdG8gU2VjdGlvbiAzOS4yIG9mIEZpbHRlciBFZmZlY3RzIDEuMCBFZGl0
b3IncyBkcmFmdAorICAgICAgICAoaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9GWFRGL3Jhdy1maWxl
L3RpcC9maWx0ZXJzL2luZGV4Lmh0bWwpLCBhbmltYXRpb25zCisgICAgICAgIG9mIHRyYW5zZm9y
bXMgc2hvdWxkIGJlIGhhbmRsZWQgZm9sbG93aW5nIHRoZSBDU1MzIHRyYW5zZm9ybSBpbnRlcnBv
bGF0aW9uCisgICAgICAgIHJ1bGVzLiBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhpcyBmdW5jdGlv
bmFsaXR5LgorCisgICAgICAgIFRlc3RzOiBFeHRlbmRlZCBmaWx0ZXJzL2N1c3RvbS9jdXN0b20t
ZmlsdGVyLWFuaW1hdGlvbi5odG1sCisKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9w
ZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI6OmJsZW5k
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEN1c3RvbUZpbHRlclBhcmFtZXRlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRlci5o
OgorICAgICAgICAoQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlci5oOgorICAgICAg
ICAoQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcjo6YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdhbW1hRmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpCbHVyRmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpEcm9w
U2hhZG93RmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9w
ZXJhdGlvbjo6RmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgIChCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0
ZXJPcGVyYXRpb24pOgorICAgICAgICAoR2FtbWFGaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAo
Qmx1ckZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmRC
eU1hdGNoaW5nT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zZm9ybU9wZXJhdGlvbnM6OmJsZW5kQnlNYXRyaXgpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oOgorICAgICAgICAoVHJhbnNmb3Jt
T3BlcmF0aW9ucyk6CisKIDIwMTItMDgtMzAgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBw
bGUuY29tPgogCiAgICAgICAgIG9iamNfbXNnU2VuZCBhbmQgSU1QIHNob3VsZCBiZSBjYXN0IGFw
cHJvcHJpYXRlbHkgYmVmb3JlIHVzaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggZjJhODFjYjBjNWMxZjc0
YzgyYzIzNmQ0MTk0Nzg0ZmVjNGZlNzRhMy4uN2M4ZjI1ODk5NGQ4YWYxMjcyYjM2ZDBmZTA1YmRm
ZDFhZWEyNGQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtMTIwLDQxICsxMjAsMTEgQEAgc3RhdGljIGlu
bGluZSBQYXNzT3duUHRyPFNoYWRvd0RhdGE+IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNl
KiBhbmltLCBjb25zdAogCiBzdGF0aWMgaW5saW5lIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRG
dW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMm
IGZyb20sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7
Ci0gICAgVHJhbnNmb3JtT3BlcmF0aW9ucyByZXN1bHQ7Ci0KLSAgICAvLyBJZiB3ZSBoYXZlIGEg
dHJhbnNmb3JtIGZ1bmN0aW9uIGxpc3QsIHVzZSB0aGF0IHRvIGRvIGEgcGVyLWZ1bmN0aW9uIGFu
aW1hdGlvbi4gT3RoZXJ3aXNlIGRvIGEgTWF0cml4IGFuaW1hdGlvbgotICAgIGlmIChhbmltLT5p
c1RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlkKCkpIHsKLSAgICAgICAgdW5zaWduZWQgZnJvbVNp
emUgPSBmcm9tLm9wZXJhdGlvbnMoKS5zaXplKCk7Ci0gICAgICAgIHVuc2lnbmVkIHRvU2l6ZSA9
IHRvLm9wZXJhdGlvbnMoKS5zaXplKCk7Ci0gICAgICAgIHVuc2lnbmVkIHNpemUgPSBtYXgoZnJv
bVNpemUsIHRvU2l6ZSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBp
KyspIHsKLSAgICAgICAgICAgIFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGZyb21PcCA9IChp
IDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwotICAgICAgICAg
ICAgUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gdG9PcCA9IChpIDwgdG9TaXplKSA/IHRvLm9w
ZXJhdGlvbnMoKVtpXS5nZXQoKSA6IDA7Ci0gICAgICAgICAgICBSZWZQdHI8VHJhbnNmb3JtT3Bl
cmF0aW9uPiBibGVuZGVkT3AgPSB0b09wID8gdG9PcC0+YmxlbmQoZnJvbU9wLmdldCgpLCBwcm9n
cmVzcykgOiAoZnJvbU9wID8gZnJvbU9wLT5ibGVuZCgwLCBwcm9ncmVzcywgdHJ1ZSkgOiBQYXNz
UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4oMCkpOwotICAgICAgICAgICAgaWYgKGJsZW5kZWRP
cCkKLSAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChibGVuZGVkT3Ap
OwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFRyYW5zZm9ybU9w
ZXJhdGlvbj4gaWRlbnRpdHlPcCA9IElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUo
KTsKLSAgICAgICAgICAgICAgICBpZiAocHJvZ3Jlc3MgPiAwLjUpCi0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7
Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0
aW9ucygpLmFwcGVuZChmcm9tT3AgPyBmcm9tT3AgOiBpZGVudGl0eU9wKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIENvbnZlcnQgdGhlIFRyYW5z
Zm9ybU9wZXJhdGlvbnMgaW50byBtYXRyaWNlcwotICAgICAgICBMYXlvdXRTaXplIHNpemUgPSBh
bmltLT5yZW5kZXJlcigpLT5pc0JveCgpID8gdG9SZW5kZXJCb3goYW5pbS0+cmVuZGVyZXIoKSkt
PmJvcmRlckJveFJlY3QoKS5zaXplKCkgOiBMYXlvdXRTaXplKCk7Ci0gICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGZyb21UOwotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0b1Q7Ci0g
ICAgICAgIGZyb20uYXBwbHkoc2l6ZSwgZnJvbVQpOwotICAgICAgICB0by5hcHBseShzaXplLCB0
b1QpOworICAgIGlmIChhbmltLT5pc1RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlkKCkpCisgICAg
ICAgIHJldHVybiB0by5ibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zKGZyb20sIHByb2dyZXNzKTsK
IAotICAgICAgICB0b1QuYmxlbmQoZnJvbVQsIHByb2dyZXNzKTsKLQotICAgICAgICAvLyBBcHBl
bmQgdGhlIHJlc3VsdAotICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXgz
RFRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHRvVCkpOwotICAgIH0KLSAgICByZXR1cm4gcmVz
dWx0OworICAgIHJldHVybiB0by5ibGVuZEJ5TWF0cml4KGZyb20sIHByb2dyZXNzCisgICAgICAs
IGFuaW0tPnJlbmRlcmVyKCktPmlzQm94KCkgPyB0b1JlbmRlckJveChhbmltLT5yZW5kZXJlcigp
KS0+Ym9yZGVyQm94UmVjdCgpLnNpemUoKSA6IExheW91dFNpemUoKSk7CiB9CiAKICNpZiBFTkFC
TEUoQ1NTX0ZJTFRFUlMpCkBAIC0xNzAsNyArMTQwLDggQEAgc3RhdGljIGlubGluZSBGaWx0ZXJP
cGVyYXRpb25zIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBGaWx0
ZXIKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAg
ICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZyb21PcCA9IChpIDwgZnJvbVNpemUpID8gZnJv
bS5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwogICAgICAgICAgICAgUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gdG9PcCA9IChpIDwgdG9TaXplKSA/IHRvLm9wZXJhdGlvbnMoKVtpXS5nZXQoKSA6
IDA7Ci0gICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZGVkT3AgPSB0b09w
ID8gdG9PcC0+YmxlbmQoZnJvbU9wLmdldCgpLCBwcm9ncmVzcykgOiAoZnJvbU9wID8gZnJvbU9w
LT5ibGVuZCgwLCBwcm9ncmVzcywgdHJ1ZSkgOiBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4o
MCkpOworICAgICAgICAgICAgTGF5b3V0U2l6ZSBzaXplID0gYW5pbS0+cmVuZGVyZXIoKS0+aXNC
b3goKSA/IHRvUmVuZGVyQm94KGFuaW0tPnJlbmRlcmVyKCkpLT5ib3JkZXJCb3hSZWN0KCkuc2l6
ZSgpIDogTGF5b3V0U2l6ZSgpOworICAgICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4g
YmxlbmRlZE9wID0gdG9PcCA/IHRvT3AtPmJsZW5kKGZyb21PcC5nZXQoKSwgcHJvZ3Jlc3MsIHNp
emUpIDogKGZyb21PcCA/IGZyb21PcC0+YmxlbmQoMCwgcHJvZ3Jlc3MsIHNpemUsIHRydWUpIDog
UGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+KDApKTsKICAgICAgICAgICAgIGlmIChibGVuZGVk
T3ApCiAgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9w
KTsKICAgICAgICAgICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFy
YW1ldGVyLmgKaW5kZXggMjc3MGI0Y2VkNmNmNTgzMDM0ZTA3MTI3OWY4MGE0NTg2YzdmNzYyZS4u
NDIzZWY1NDdlYzQ4YTJlM2I0YTkzMGVhOGMyMGY5MDMyYmRkYzkzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJOdW1iZXJQ
YXJhbWV0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYWRkVmFsdWUoZG91YmxlIHZhbHVlKSB7IG1fZGF0YS5hcHBlbmQodmFsdWUp
OyB9CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4g
YmxlbmQoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3Mp
CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gYmxlbmQoY29u
c3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExh
eW91dFNpemUmKQogICAgIHsKICAgICAgICAgaWYgKCFmcm9tIHx8ICFpc1NhbWVUeXBlKCpmcm9t
KSkKICAgICAgICAgICAgIHJldHVybiB0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRp
b24uY3BwCmluZGV4IGY1YzgxNzI0Zjc4N2Q1N2JjMDBmOGE5NDI2ZWZiODgwZmM5MmI1ZTIuLjM1
OGFmZDRiYjRjM2FkY2Q1NmJmOTY1ZGI2OGZjNjgxMTdiYzc0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlck9wZXJhdGlvbi5jcHAKQEAgLTY0LDcgKzY0LDggQEAgc3RhdGljIGJvb2wgY2hlY2tD
dXN0b21GaWx0ZXJQYXJhbWV0ZXJzT3JkZXIoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlz
dCYgcGEKIH0KICNlbmRpZgogCi12b2lkIGJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhjb25z
dCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBmcm9tTGlzdCwgY29uc3QgQ3VzdG9tRmlsdGVy
UGFyYW1ldGVyTGlzdCYgdG9MaXN0LCBkb3VibGUgcHJvZ3Jlc3MsIEN1c3RvbUZpbHRlclBhcmFt
ZXRlckxpc3QmIHJlc3VsdExpc3QpCit2b2lkIGJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhj
b25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBmcm9tTGlzdCwgY29uc3QgQ3VzdG9tRmls
dGVyUGFyYW1ldGVyTGlzdCYgdG9MaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LCBkb3VibGUgcHJvZ3Jlc3MsIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHJlc3VsdExpc3Qs
IGNvbnN0IExheW91dFNpemUmIHNpemUpCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgZXhwZWN0cyBi
b3RoIGxpc3RzIHRvIGJlIHNvcnRlZCBieSBwYXJhbWV0ZXIgbmFtZSBhbmQgdGhlIHJlc3VsdCBs
aXN0IGlzIGFsc28gc29ydGVkLgogICAgIEFTU0VSVChjaGVja0N1c3RvbUZpbHRlclBhcmFtZXRl
cnNPcmRlcihmcm9tTGlzdCkpOwpAQCAtNzQsNyArNzUsNyBAQCB2b2lkIGJsZW5kQ3VzdG9tRmls
dGVyUGFyYW1ldGVycyhjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBmcm9tTGlzdCwg
Y29ucwogICAgICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIHBhcmFtRnJvbSA9IGZyb21MaXN0
LmF0KGZyb21MaXN0SW5kZXgpLmdldCgpOwogICAgICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIq
IHBhcmFtVG8gPSB0b0xpc3QuYXQodG9MaXN0SW5kZXgpLmdldCgpOwogICAgICAgICBpZiAocGFy
YW1Gcm9tLT5uYW1lKCkgPT0gcGFyYW1Uby0+bmFtZSgpKSB7Ci0gICAgICAgICAgICByZXN1bHRM
aXN0LmFwcGVuZChwYXJhbVRvLT5ibGVuZChwYXJhbUZyb20sIHByb2dyZXNzKSk7CisgICAgICAg
ICAgICByZXN1bHRMaXN0LmFwcGVuZChwYXJhbVRvLT5ibGVuZChwYXJhbUZyb20sIHByb2dyZXNz
LCBzaXplKSk7CiAgICAgICAgICAgICArK2Zyb21MaXN0SW5kZXg7CiAgICAgICAgICAgICArK3Rv
TGlzdEluZGV4OwogICAgICAgICAgICAgY29udGludWU7CkBAIC0xMTEsNyArMTEyLDcgQEAgQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjp+Q3VzdG9tRmlsdGVyT3BlcmF0aW9uKCkKIHsKIH0KIAotUGFz
c1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29u
c3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bh
c3N0aHJvdWdoKQorUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEN1c3RvbUZpbHRlck9wZXJh
dGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3Ms
IGNvbnN0IExheW91dFNpemUmIHNpemUsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewogICAg
IC8vIEZJWE1FOiBUaGVyZSdzIG5vIHdheSB0byBkZWNpZGUgd2hhdCBpcyB0aGUgInBhc3N0aHJv
dWdoIGZpbHRlciIgZm9yIHNoYWRlcnMgdXNpbmcgdGhlIGN1cnJlbnQgQ1NTIFN5bnRheC4KICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ5MDMKQEAgLTEy
OCw3ICsxMjksNyBAQCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qCiAgICAgICAgIHJldHVybiB0aGlz
OwogICAgIAogICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QgYW5pbWF0ZWRQYXJhbWV0ZXJz
OwotICAgIGJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhmcm9tT3AtPm1fcGFyYW1ldGVycywg
bV9wYXJhbWV0ZXJzLCBwcm9ncmVzcywgYW5pbWF0ZWRQYXJhbWV0ZXJzKTsKKyAgICBibGVuZEN1
c3RvbUZpbHRlclBhcmFtZXRlcnMoZnJvbU9wLT5tX3BhcmFtZXRlcnMsIG1fcGFyYW1ldGVycywg
cHJvZ3Jlc3MsIGFuaW1hdGVkUGFyYW1ldGVycywgc2l6ZSk7CiAgICAgcmV0dXJuIEN1c3RvbUZp
bHRlck9wZXJhdGlvbjo6Y3JlYXRlKG1fcHJvZ3JhbSwgYW5pbWF0ZWRQYXJhbWV0ZXJzLCBtX21l
c2hSb3dzLCBtX21lc2hDb2x1bW5zLCBtX21lc2hCb3hUeXBlLCBtX21lc2hUeXBlKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggYjRlOGIyOTM2MGI4NTc4OTgwOTFj
Y2VkMWJjNTc4MGJjZjc5YjM3NC4uMTk1OGU2MWVhZGMzYzJjMThiMmE0NjExZjkyNDVmMmUzNGM2
ZDAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCkBAIC0zMyw2ICszMyw3IEBA
CiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQogI2luY2x1ZGUgIkN1c3RvbUZpbHRlclByb2dyYW0u
aCIKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb24uaCIKKyNpbmNsdWRlICJMYXlvdXRUeXBlcy5o
IgogCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQ0LDcgKzQ1LDggQEAg
Y2xhc3MgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyOwogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEN1c3Rv
bUZpbHRlclBhcmFtZXRlcj4gPiBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0OwogCiBib29sIGN1
c3RvbUZpbHRlclBhcmFtZXRlcnNFcXVhbChjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0
JiwgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYpOwotdm9pZCBibGVuZEN1c3RvbUZp
bHRlclBhcmFtZXRlcnMoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgbGlzdEZyb20s
IGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIGxpc3RUbywgZG91YmxlIHByb2dyZXNz
LCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiByZXN1bHRMaXN0KTsKK3ZvaWQgYmxlbmRDdXN0
b21GaWx0ZXJQYXJhbWV0ZXJzKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIGxpc3RG
cm9tLCBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBsaXN0VG8KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAsIGRvdWJsZSBwcm9ncmVzcywgQ3VzdG9tRmlsdGVyUGFyYW1l
dGVyTGlzdCYgcmVzdWx0TGlzdCwgY29uc3QgTGF5b3V0U2l6ZSAmKTsKIAogY2xhc3MgQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6CkBAIC04
MCw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIG1vdmVzUGl4ZWxzKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20s
IGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgYmxlbmRUb1Bhc3N0aHJv
dWdoID0gZmFsc2UpOwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFy
YW1ldGVyLmgKaW5kZXggODI5ODBkNmM3ODBmMDgwY2M3ZDcwM2ZhYTk4YzYyYjZmNWQzZWE4NC4u
ODFlNWY4M2MyZjkxZDk3YWY4OWQ3OWRhYzU2OTg5ODhmOThlNWNiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlclBhcmFtZXRlci5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICBi
b29sIGlzU2FtZVR5cGUoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gcGFyYW1ldGVyVHlwZSgpID09IG90aGVyLnBhcmFtZXRlclR5cGUoKTsgfQogICAg
IAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJhbWV0ZXI+IGJsZW5kKGNv
bnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciosIGRvdWJsZSBwcm9ncmVzcykgPSAwOworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJhbWV0ZXI+IGJsZW5kKGNvbnN0IEN1c3Rv
bUZpbHRlclBhcmFtZXRlciosIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0
ZXImKSBjb25zdCA9IDA7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEN1c3RvbUZpbHRlclBh
cmFtZXRlciYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQogcHJvdGVjdGVkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmgKaW5kZXggYmQ2
NmNlYzZjMWM0YTRhODJmYjlhZTdjMzMwNTczZDdkN2U3ZWI5Ny4uODI3NWRiMTMyY2E3MGY1YjA2
MjljZDJiYWRiZTdhYWI2ZTIzMDVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclRy
YW5zZm9ybVBhcmFtZXRlci5oCkBAIC00NiwxNCArNDYsMzMgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIo
bmFtZSkpOwogICAgIH0KLSAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVy
UGFyYW1ldGVyPiBibGVuZChjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqLCBkb3VibGUpCisK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBibGVuZChjb25z
dCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIGZyb21QYXJhbWV0ZXIsIGRvdWJsZSBwcm9ncmVzcywg
Y29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgYW5pbWF0aW9ucyBzdXBwb3J0LgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTQ5ODAKLSAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIGlm
ICghZnJvbVBhcmFtZXRlciB8fCAhaXNTYW1lVHlwZSgqZnJvbVBhcmFtZXRlcikpCisgICAgICAg
ICAgICByZXR1cm4gdGhpczsKKworICAgICAgICBjb25zdCBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1Q
YXJhbWV0ZXIqIGZyb21UcmFuc2Zvcm1QYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBDdXN0
b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIqPihmcm9tUGFyYW1ldGVyKTsKKyAgICAgICAgY29u
c3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSA9IGZyb21UcmFuc2Zvcm1QYXJhbWV0ZXItPm9w
ZXJhdGlvbnMoKTsKKyAgICAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdG8gPSBvcGVy
YXRpb25zKCk7CisKKyAgICAgICAgaWYgKGZyb20gPT0gdG8pCisgICAgICAgICAgICByZXR1cm4g
dGhpczsKKworICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyPiBy
ZXQgPSBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXI6OmNyZWF0ZShuYW1lKCkpOworCisg
ICAgICAgIGlmICghZnJvbS5zaXplKCkgfHwgIXRvLnNpemUoKSkgeworICAgICAgICAgICAgaWYg
KHByb2dyZXNzID4gMC41KQorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworCisgICAgICAg
ICAgICByZXQtPnNldE9wZXJhdGlvbnMoZnJvbSk7CisgICAgICAgICAgICByZXR1cm4gcmV0Owor
ICAgICAgICB9CisKKyAgICAgICAgcmV0LT5zZXRPcGVyYXRpb25zKHRvLmJsZW5kKGZyb20sIHBy
b2dyZXNzLCBzaXplKSk7CisgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQotICAgIAorCiAgICAg
dmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyJiBvKSBj
b25zdAogICAgIHsKICAgICAgICAgaWYgKCFpc1NhbWVUeXBlKG8pKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uY3BwCmluZGV4IDY1NjkyNmUyOGUzNTdkNjExZTExZDYzOTA5MDg5MmNhNmJkNmM1MTMuLjBl
NTk2OTA5ZjY1NTQ3NGE2YjIzMWQxOGY5NmFhNTkyZWFhN2IyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJh
dGlvbi5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNz
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6
YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wg
YmxlbmRUb1Bhc3N0aHJvdWdoKQorUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEJhc2ljQ29s
b3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJv
bSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlvdXRTaXplJiwgYm9vbCBibGVuZFRvUGFzc3Ro
cm91Z2gpCiB7CiAgICAgaWYgKGZyb20gJiYgIWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhpczsKQEAgLTYwLDcgKzYwLDcgQEAgZG91YmxlIEJhc2ljQ29sb3JNYXRy
aXhGaWx0ZXJPcGVyYXRpb246OnBhc3N0aHJvdWdoQW1vdW50KCkgY29uc3QKICAgICB9CiB9CiAK
LVBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVy
T3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9n
cmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCitQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmls
dGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmLCBi
b29sIGJsZW5kVG9QYXNzdGhyb3VnaCkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+aXNTYW1l
VHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtOTAsNyArOTAsNyBAQCBkb3Vi
bGUgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6cGFzc3Rocm91Z2hBbW91
bnQoKSBjb25zdAogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IEdhbW1h
RmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJs
ZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCitQYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gR2FtbWFGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlvdXRTaXplJiwgYm9vbCBibGVuZFRv
UGFzc3Rocm91Z2gpCiB7CiAgICAgaWYgKGZyb20gJiYgIWZyb20tPmlzU2FtZVR5cGUoKnRoaXMp
KQogICAgICAgICByZXR1cm4gdGhpczsKQEAgLTExMSw3ICsxMTEsNyBAQCBQYXNzUmVmUHRyPEZp
bHRlck9wZXJhdGlvbj4gR2FtbWFGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiogZgogICAgICAgICBXZWJDb3JlOjpibGVuZChmcm9tT2Zmc2V0LCBtX29mZnNldCwg
cHJvZ3Jlc3MpLCBtX3R5cGUpOwogfQogCi1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmx1
ckZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQorUGFzc1JlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IEJsdXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlvdXRTaXplJiwgYm9vbCBibGVuZFRv
UGFzc3Rocm91Z2gpCiB7CiAgICAgaWYgKGZyb20gJiYgIWZyb20tPmlzU2FtZVR5cGUoKnRoaXMp
KQogICAgICAgICByZXR1cm4gdGhpczsKQEAgLTEyNiw3ICsxMjYsNyBAQCBQYXNzUmVmUHRyPEZp
bHRlck9wZXJhdGlvbj4gQmx1ckZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3Bl
cmF0aW9uKiBmcgogICAgIHJldHVybiBCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobV9zdGRE
ZXZpYXRpb24uYmxlbmQoZnJvbUxlbmd0aCwgcHJvZ3Jlc3MpLCBtX3R5cGUpOwogfQogCi1QYXNz
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b1Bhc3N0aHJvdWdoKQorUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IERyb3BTaGFkb3dGaWx0
ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHBy
b2dyZXNzLCBjb25zdCBMYXlvdXRTaXplJiwgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCiB7CiAg
ICAgaWYgKGZyb20gJiYgIWZyb20tPmlzU2FtZVR5cGUoKnRoaXMpKQogICAgICAgICByZXR1cm4g
dGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCmluZGV4IGU3MjYwMGM0N2UzNjRkYjYyNTZiMzc5ZjNi
YTQ2M2NkMzk4ZDI0NDMuLjYyM2MwOTFhYTUwYjQ4ZjUzNmFjYzIwMmY2MDFjZDlmOGQ4MjkwZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb24uaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJikgY29uc3QgPSAwOwog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0
dXJuICEoKnRoaXMgPT0gbyk7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVy
YXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogLypmcm9tKi8sIGRvdWJsZSAvKnBy
b2dyZXNzKi8sIGJvb2wgLypibGVuZFRvUGFzc3Rocm91Z2gqLyA9IGZhbHNlKSB7IHJldHVybiAw
OyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3Qg
RmlsdGVyT3BlcmF0aW9uKiAvKmZyb20qLywgZG91YmxlIC8qcHJvZ3Jlc3MqLywgY29uc3QgTGF5
b3V0U2l6ZSYsIGJvb2wgLypibGVuZFRvUGFzc3Rocm91Z2gqLyA9IGZhbHNlKSB7IHJldHVybiAw
OyB9CiAKICAgICB2aXJ0dWFsIE9wZXJhdGlvblR5cGUgZ2V0T3BlcmF0aW9uVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NhbWVUeXBlKGNvbnN0IEZp
bHRlck9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gby5nZXRPcGVyYXRpb25UeXBlKCkgPT0g
bV90eXBlOyB9CkBAIC0xOTEsNyArMTkxLDcgQEAgcHVibGljOgogCiAgICAgZG91YmxlIGFtb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJs
ZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7CisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9u
KiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmLCBib29sIGJsZW5kVG9Q
YXNzdGhyb3VnaCA9IGZhbHNlKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CkBAIC0yMjUsNyArMjI1LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3QgeyByZXR1
cm4gbV90eXBlID09IE9QQUNJVFk7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20s
IGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgYmxlbmRUb1Bhc3N0aHJv
dWdoID0gZmFsc2UpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKQEAgLTI1OCw3ICsyNTgsNyBAQCBwdWJsaWM6
CiAgICAgZG91YmxlIGV4cG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV9leHBvbmVudDsgfQogICAg
IGRvdWJsZSBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogCi0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9u
KiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2Up
OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZp
bHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlvdXRTaXplJiwg
Ym9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdApAQCAtMjk0
LDcgKzI5NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIG1vdmVzUGl4ZWxzKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJh
dGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3Ms
IGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBjb25zdCBMYXlvdXRTaXplJiwgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2gg
PSBmYWxzZSk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdApAQCAtMzMwLDcgKzMzMCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgdmlydHVhbCBib29sIG1vdmVzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVy
T3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdo
ID0gZmFsc2UpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5k
KGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlv
dXRTaXplJiwgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSk7CiAKIHByaXZhdGU6CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwCmluZGV4IGM5NDJhNjE2OTJjZjFm
ZjJhMmVkZDA4OTU0MWNiYWQ1YTBhM2M2N2QuLjA3MzQyNDIxZjMxMDQ3ZDRlMmI5Yzc0OTVjNzkx
ZjM1ZjY3M2Q5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcApAQCAt
MjMsNiArMjMsOSBAQAogI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbnMuaCIKIAogI2luY2x1
ZGUgIklkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiTWF0cml4M0RUcmFu
c2Zvcm1PcGVyYXRpb24uaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC02MSw0ICs2NCw1OCBAQCBib29sIFRyYW5zZm9ybU9wZXJhdGlvbnM6Om9w
ZXJhdGlvbnNNYXRjaChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBvdGhlcikgY29ucwogICAg
IHJldHVybiB0cnVlOwogfQogCitUcmFuc2Zvcm1PcGVyYXRpb25zIFRyYW5zZm9ybU9wZXJhdGlv
bnM6OmJsZW5kQnlNYXRjaGluZ09wZXJhdGlvbnMoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYg
ZnJvbSwgY29uc3QgZG91YmxlJiBwcm9ncmVzcykgY29uc3QKK3sKKyAgICBUcmFuc2Zvcm1PcGVy
YXRpb25zIHJlc3VsdDsKKworICAgIHVuc2lnbmVkIGZyb21TaXplID0gZnJvbS5vcGVyYXRpb25z
KCkuc2l6ZSgpOworICAgIHVuc2lnbmVkIHRvU2l6ZSA9IG9wZXJhdGlvbnMoKS5zaXplKCk7Cisg
ICAgdW5zaWduZWQgc2l6ZSA9IHN0ZDo6bWF4KGZyb21TaXplLCB0b1NpemUpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgUmVmUHRyPFRyYW5zZm9y
bU9wZXJhdGlvbj4gZnJvbU9wID0gKGkgPCBmcm9tU2l6ZSkgPyBmcm9tLm9wZXJhdGlvbnMoKVtp
XS5nZXQoKSA6IDA7CisgICAgICAgIFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IHRvT3AgPSAo
aSA8IHRvU2l6ZSkgPyBvcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOworICAgICAgICBSZWZQdHI8
VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZGVkT3AgPSB0b09wID8gdG9PcC0+YmxlbmQoZnJvbU9w
LmdldCgpLCBwcm9ncmVzcykgOiAoZnJvbU9wID8gZnJvbU9wLT5ibGVuZCgwLCBwcm9ncmVzcywg
dHJ1ZSkgOiBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4oMCkpOworICAgICAgICBpZiAo
YmxlbmRlZE9wKQorICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRl
ZE9wKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBSZWZQdHI8VHJhbnNmb3JtT3BlcmF0
aW9uPiBpZGVudGl0eU9wID0gSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgaWYgKHByb2dyZXNzID4gMC41KQorICAgICAgICAgICAgICAgIHJlc3VsdC5v
cGVyYXRpb25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoZnJvbU9w
ID8gZnJvbU9wIDogaWRlbnRpdHlPcCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitUcmFuc2Zvcm1PcGVyYXRpb25zIFRyYW5zZm9ybU9wZXJhdGlvbnM6OmJs
ZW5kQnlNYXRyaXgoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKSBjb25zdAoreworICAgIFRyYW5zZm9ybU9wZXJh
dGlvbnMgcmVzdWx0OworCisgICAgLy8gQ29udmVydCB0aGUgVHJhbnNmb3JtT3BlcmF0aW9ucyBp
bnRvIG1hdHJpY2VzCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbVQ7CisgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggdG9UOworICAgIGZyb20uYXBwbHkoc2l6ZSwgZnJvbVQpOworICAgIGFw
cGx5KHNpemUsIHRvVCk7CisKKyAgICB0b1QuYmxlbmQoZnJvbVQsIHByb2dyZXNzKTsKKworICAg
IC8vIEFwcGVuZCB0aGUgcmVzdWx0CisgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoTWF0
cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSh0b1QpKTsKKworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK1RyYW5zZm9ybU9wZXJhdGlvbnMgVHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmQo
Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBM
YXlvdXRTaXplJiBzaXplKSBjb25zdAoreworICAgIGlmIChmcm9tID09ICp0aGlzKQorICAgICAg
ICByZXR1cm4gKnRoaXM7CisKKyAgICBpZiAoZnJvbS5zaXplKCkgJiYgZnJvbS5vcGVyYXRpb25z
TWF0Y2goKnRoaXMpKQorICAgICAgICByZXR1cm4gYmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyhm
cm9tLCBwcm9ncmVzcyk7CisKKyAgICByZXR1cm4gYmxlbmRCeU1hdHJpeChmcm9tLCBwcm9ncmVz
cywgc2l6ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1PcGVyYXRpb25zLmgKaW5kZXggZTIzNmUxMmQ5MjBiZWM1NTYyMTQzN2VlODM5OTU0YjlhYjZk
M2Y5Zi4uMWQ0YzkwZTY0ZDcxNDgwYzg2NjA2NzcwZTQwMTViOTQyM2NlZmM5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1P
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpZm5kZWYgVHJh
bnNmb3JtT3BlcmF0aW9uc19oCiAjZGVmaW5lIFRyYW5zZm9ybU9wZXJhdGlvbnNfaAogCisjaW5j
bHVkZSAiTGF5b3V0VHlwZXMuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNzEsNiAr
NzIsMTAgQEAgcHVibGljOgogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9vcGVy
YXRpb25zLnNpemUoKTsgfQogICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogYXQoc2l6ZV90
IGluZGV4KSBjb25zdCB7IHJldHVybiBpbmRleCA8IG1fb3BlcmF0aW9ucy5zaXplKCkgPyBtX29w
ZXJhdGlvbnMuYXQoaW5kZXgpLmdldCgpIDogMDsgfQogCisgICAgVHJhbnNmb3JtT3BlcmF0aW9u
cyBibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmLCBj
b25zdCBkb3VibGUmIHByb2dyZXNzKSBjb25zdDsKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIGJs
ZW5kQnlNYXRyaXgoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBjb25zdCBMYXlvdXRTaXplJikgY29uc3Q7CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBi
bGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGNv
bnN0IExheW91dFNpemUmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmUHRyPFRy
YW5zZm9ybU9wZXJhdGlvbj4gPiBtX29wZXJhdGlvbnM7CiB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIzMjk2M2MwMzAy
N2M0NThlN2ZiN2NmYjVhNmRkNjRhNGRlOTM5ZDAuLjMwNjE5Yjk4ZWExZmU5ZDYxNTQ0YmQ3Mzk3
ZmJlNmQxNmYwOWJhYjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOC0yOSAgSm9zaHVh
IE5ldHRlcmZpZWxkICA8am5ldHRlcmZpZWxkQHJpbS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFk
ZXJzXSBJbXBsZW1lbnQgdHJhbnNmb3JtIHBhcmFtZXRlciBhbmltYXRpb25zIGZvciBDU1MgQ3Vz
dG9tIEZpbHRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk0OTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdCB0cmFuc2Zvcm0gYW5pbWF0aW9ucyBpbiBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3Rv
bS1maWx0ZXItYW5pbWF0aW9uLmh0bWwuCisKKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvY3VzdG9t
L2N1c3RvbS1maWx0ZXItYW5pbWF0aW9uLmh0bWw6IEFkZCB0cmFuc2Zvcm0gdGVzdHMuCisgICAg
ICAgICogY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9jdXN0b20tZmlsdGVyLXBhcnNlci5qczogQWRk
IHN1cHBvcnQgZm9yIChhZmZpbmUgJiAzZCkgbWF0cmljaWVzICYgdHJhbnNmb3Jtcy4KKworCiAy
MDEyLTA4LTMwICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCB1cGRhdGUgdG8gdGVzdCBleHBlY3RhdGlvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItYW5pbWF0aW9uLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1hbmlt
YXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDZmZGUwNzExZGRjNjZlOTI0YjNiNDIyMTVkOTZiNzgx
MjI4YmQ2NGYuLjBkMjMyMTg5YTEwMTY3Y2RmNjdlZTlmYmQ2YmY3ZWNjOTEyZjUwMTggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1hbmlt
YXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20v
Y3VzdG9tLWZpbHRlci1hbmltYXRpb24tZXhwZWN0ZWQudHh0CkBAIC04LDQgKzgsMTAgQEAgUEFT
UyAtICJ3ZWJraXRGaWx0ZXIiIHByb3BlcnR5IGZvciAiY3VzdG9tLWZyb20tZGlmZi1wYXJhbXMt
Ym94IiBlbGVtZW50IGF0IDFzIHMKIFBBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9wZXJ0eSBmb3Ig
ImN1c3RvbS10by1kaWZmLXBhcmFtcy1ib3giIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBj
bG9zZSB0bzogY3VzdG9tKHVybCh2ZXJ0ZXgtcm90YXRlLnZzKSBub25lLCAxIDEgZmlsdGVyLWJv
eCwgcGFyYW0gMTAsIHJvdGF0ZUJ5IDYwLCBvZmZzZXQgMTAsIGFub3RoZXJfcGFyYW0gNSkKIFBB
U1MgLSAid2Via2l0RmlsdGVyIiBwcm9wZXJ0eSBmb3IgImN1c3RvbS1taXgtcGFyYW1zLWJveCIg
ZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiBjdXN0b20odXJsKHZlcnRleC1y
b3RhdGUudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCBwYXJhbSAxMCwgYW5vdGhlcl9wYXJhbSA1
LCBmaXJzdF9wYXJhbSA2LCByb3RhdGVCeSA2MCwgb2Zmc2V0IDEwLCBsYXN0X3BhcmFtIDQpCiBQ
QVNTIC0gIndlYmtpdEZpbHRlciIgcHJvcGVydHkgZm9yICJjdXN0b20tbWl4LW51bWJlcnMtYm94
IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IGN1c3RvbSh1cmwodmVydGV4
LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHJvdGF0ZUJ5IDQ1LCBhIDUuNSwgYiAx
MSAxNi41LCBjIDIyIDI3LjUgMzMsIGQgMzguNSA0NCA0OS41KQorUEFTUyAtICJ3ZWJraXRGaWx0
ZXIiIHByb3BlcnR5IGZvciAiY3VzdG9tLW1peC1yb3RhdGVaLWJveCIgZWxlbWVudCBhdCAxcyBz
YXcgc29tZXRoaW5nIGNsb3NlIHRvOiBjdXN0b20odXJsKHZlcnRleC10cmFuc2Zvcm0tcGFyYW1l
dGVyLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgdHJhbnNmb3JtIG1hdHJpeCgxIDAgMCAxIDAg
MCkpCitQQVNTIC0gIndlYmtpdEZpbHRlciIgcHJvcGVydHkgZm9yICJjdXN0b20tbWl4LXJvdGF0
ZVgtYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IGN1c3RvbSh1cmwo
dmVydGV4LXRyYW5zZm9ybS1wYXJhbWV0ZXIudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCB0cmFu
c2Zvcm0gbWF0cml4M2QoMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSkpCitQQVNTIC0g
IndlYmtpdEZpbHRlciIgcHJvcGVydHkgZm9yICJjdXN0b20tbWl4LXJvdGF0ZVktYm94IiBlbGVt
ZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IGN1c3RvbSh1cmwodmVydGV4LXRyYW5z
Zm9ybS1wYXJhbWV0ZXIudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCB0cmFuc2Zvcm0gbWF0cml4
M2QoMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSkpCitQQVNTIC0gIndlYmtpdEZpbHRl
ciIgcHJvcGVydHkgZm9yICJjdXN0b20tbWl4LXRyYW5zbGF0ZTNELWJveCIgZWxlbWVudCBhdCAx
cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiBjdXN0b20odXJsKHZlcnRleC10cmFuc2Zvcm0tcGFy
YW1ldGVyLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgdHJhbnNmb3JtIG1hdHJpeDNkKDEgMCAw
IDAgMCAxIDAgMCAwIDAgMSAwIDEwIDEwIDEwIDEpKQorUEFTUyAtICJ3ZWJraXRGaWx0ZXIiIHBy
b3BlcnR5IGZvciAiY3VzdG9tLW1peC1zY2FsZTNELWJveCIgZWxlbWVudCBhdCAxcyBzYXcgc29t
ZXRoaW5nIGNsb3NlIHRvOiBjdXN0b20odXJsKHZlcnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZz
KSBub25lLCAxIDEgZmlsdGVyLWJveCwgdHJhbnNmb3JtIG1hdHJpeDNkKDEuMTcgMCAwIDAgMCAx
Ljc1IDAgMCAwIDAgMS43NSAwIDAgMCAwIDEpKQorUEFTUyAtICJ3ZWJraXRGaWx0ZXIiIHByb3Bl
cnR5IGZvciAiY3VzdG9tLW1peC1tdWx0aS1ib3giIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGlu
ZyBjbG9zZSB0bzogY3VzdG9tKHVybCh2ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFtZXRlci52cykgbm9u
ZSwgMSAxIGZpbHRlci1ib3gsIHRyYW5zZm9ybSBtYXRyaXgzZCgxLjE3IDAgMCAwIDAgMS43NSAw
IDAgMCAwIDEuNzUgMCAwIDAgMCAxKSkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9m
aWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMv
Y3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFuaW1hdGlvbi5odG1sCmluZGV4IGEx
ZWM4MjlhNDAyZDQ3YWRjMmEwMTI5NjRlN2NkYjAyNjNjOTRkNjEuLjdjMjMyMWIyZmJjYjE0ODc5
NDA2MzIyNThhZGMyZWRiZGM5NTViYzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvZmls
dGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1hbmltYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItYW5pbWF0aW9uLmh0bWwKQEAgLTUy
LDYgKzUyLDMwIEBACiAgICAgICAgICNjdXN0b20tbWl4LW51bWJlcnMtYm94IHsKICAgICAgICAg
ICAgIC13ZWJraXQtYW5pbWF0aW9uOiBjdXN0b20tbWl4LW51bWJlcnMtYW5pbSAycyBsaW5lYXI7
CiAgICAgICAgIH0KKworICAgICAgICAjY3VzdG9tLW1peC1yb3RhdGVaLWJveCB7CisgICAgICAg
ICAgICAtd2Via2l0LWFuaW1hdGlvbjogY3VzdG9tLW1peC1yb3RhdGVaLWFuaW0gMnMgbGluZWFy
OworICAgICAgICB9CisKKyAgICAgICAgI2N1c3RvbS1taXgtcm90YXRlWC1ib3ggeworICAgICAg
ICAgICAgLXdlYmtpdC1hbmltYXRpb246IGN1c3RvbS1taXgtcm90YXRlWC1hbmltIDJzIGxpbmVh
cjsKKyAgICAgICAgfQorCisgICAgICAgICNjdXN0b20tbWl4LXJvdGF0ZVktYm94IHsKKyAgICAg
ICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBjdXN0b20tbWl4LXJvdGF0ZVktYW5pbSAycyBsaW5l
YXI7CisgICAgICAgIH0KKworICAgICAgICAjY3VzdG9tLW1peC10cmFuc2xhdGUzRC1ib3ggewor
ICAgICAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IGN1c3RvbS1taXgtdHJhbnNsYXRlM0QtYW5p
bSAycyBsaW5lYXI7CisgICAgICAgIH0KKworICAgICAgICAjY3VzdG9tLW1peC1zY2FsZTNELWJv
eCB7CisgICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogY3VzdG9tLW1peC1zY2FsZTNELWFu
aW0gMnMgbGluZWFyOworICAgICAgICB9CisKKyAgICAgICAgI2N1c3RvbS1taXgtbXVsdGktYm94
IHsKKyAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBjdXN0b20tbWl4LW11bHRpLWFuaW0g
MnMgbGluZWFyOworICAgICAgICB9CiAgICAgCiAgICAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBj
dXN0b20tZnJvbS1ub25lLWFuaW0gewogICAgICAgICAgICAgZnJvbSB7IC13ZWJraXQtZmlsdGVy
OiBub25lOyB9CkBAIC05Nyw2ICsxMjEsMzYgQEAKICAgICAgICAgICAgIGZyb20geyAtd2Via2l0
LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXJvdGF0ZS52cyksIHJvdGF0
ZUJ5IDAsIGEgMSwgYiAyIDMsIGMgNCA1IDYsIGQgNyA4IDkpOyB9CiAgICAgICAgICAgICB0byAg
IHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC1yb3RhdGUu
dnMpLCByb3RhdGVCeSA5MCwgYSAxMCwgYiAyMCAzMCwgYyA0MCA1MCA2MCwgZCA3MCA4MCA5MCk7
IH0KICAgICAgICAgfQorCisgICAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBjdXN0b20tbWl4LXJv
dGF0ZVotYW5pbSB7CisgICAgICAgICAgICBmcm9tIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1
cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSwgdHJhbnNmb3Jt
IHJvdGF0ZVooMGRlZykpOyB9CisgICAgICAgICAgICB0byAgIHsgLXdlYmtpdC1maWx0ZXI6IGN1
c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSwgdHJh
bnNmb3JtIHJvdGF0ZVooMzYwZGVnKSk7IH0KKyAgICAgICAgfQorCisgICAgICAgIEAtd2Via2l0
LWtleWZyYW1lcyBjdXN0b20tbWl4LXJvdGF0ZVgtYW5pbSB7CisgICAgICAgICAgICBmcm9tIHsg
LXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC10cmFuc2Zvcm0t
cGFyYW1ldGVyLnZzKSwgdHJhbnNmb3JtIHJvdGF0ZVgoMGRlZykpOyB9CisgICAgICAgICAgICB0
byAgIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3ZlcnRleC10cmFu
c2Zvcm0tcGFyYW1ldGVyLnZzKSwgdHJhbnNmb3JtIHJvdGF0ZVgoMzYwZGVnKSk7IH0KKyAgICAg
ICAgfQorCisgICAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBjdXN0b20tbWl4LXJvdGF0ZVktYW5p
bSB7CisgICAgICAgICAgICBmcm9tIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVz
b3VyY2VzL3ZlcnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSwgdHJhbnNmb3JtIHJvdGF0ZVko
MGRlZykpOyB9CisgICAgICAgICAgICB0byAgIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwo
Li4vcmVzb3VyY2VzL3ZlcnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSwgdHJhbnNmb3JtIHJv
dGF0ZVkoMzYwZGVnKSk7IH0KKyAgICAgICAgfQorCisgICAgICAgIEAtd2Via2l0LWtleWZyYW1l
cyBjdXN0b20tbWl4LXRyYW5zbGF0ZTNELWFuaW0geworICAgICAgICAgICAgZnJvbSB7IC13ZWJr
aXQtZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFt
ZXRlci52cyksIHRyYW5zZm9ybSB0cmFuc2xhdGUzZCgwLCAwLCAwKSk7IH0KKyAgICAgICAgICAg
IHRvICAgeyAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXRy
YW5zZm9ybS1wYXJhbWV0ZXIudnMpLCB0cmFuc2Zvcm0gdHJhbnNsYXRlM2QoMjBweCwgMjBweCwg
MjBweCkpOyB9CisgICAgICAgIH0KKworICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgY3VzdG9t
LW1peC1zY2FsZTNELWFuaW0geworICAgICAgICAgICAgZnJvbSB7IC13ZWJraXQtZmlsdGVyOiBj
dXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFtZXRlci52cyksIHRy
YW5zZm9ybSBzY2FsZTNkKDEsIDEsIDEpKTsgfQorICAgICAgICAgICAgdG8gICB7IC13ZWJraXQt
ZmlsdGVyOiBjdXN0b20odXJsKC4uL3Jlc291cmNlcy92ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFtZXRl
ci52cyksIHRyYW5zZm9ybSBzY2FsZTNkKDIuNSwgMi41LCAyLjUpKTsgfQorICAgICAgICB9CisK
KyAgICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGN1c3RvbS1taXgtbXVsdGktYW5pbSB7CisgICAg
ICAgICAgICBmcm9tIHsgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbSh1cmwoLi4vcmVzb3VyY2VzL3Zl
cnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSwgdHJhbnNmb3JtIHJvdGF0ZVgoMGRlZykgc2Nh
bGUzZCgxLCAxLCAxKSk7IH0KKyAgICAgICAgICAgIHRvICAgeyAtd2Via2l0LWZpbHRlcjogY3Vz
dG9tKHVybCguLi9yZXNvdXJjZXMvdmVydGV4LXRyYW5zZm9ybS1wYXJhbWV0ZXIudnMpLCB0cmFu
c2Zvcm0gcm90YXRlWCgzNjBkZWcpIHNjYWxlM2QoMi41LCAyLjUsIDIuNSkpOyB9CisgICAgICAg
IH0KICAgICA8L3N0eWxlPgogICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvY3VzdG9tLWZp
bHRlci1wYXJzZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9hbmlt
YXRpb25zL3Jlc291cmNlcy9hbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KQEAg
LTExNyw3ICsxNzEsMTMgQEAKICAgICAgICAgICAgIFsiY3VzdG9tLXRvLWRpZmYtcGFyYW1zLWFu
aW0iLCAgMSwgImN1c3RvbS10by1kaWZmLXBhcmFtcy1ib3giLCAid2Via2l0RmlsdGVyIiwgJ2N1
c3RvbSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHBhcmFtIDEw
LCByb3RhdGVCeSA2MCwgb2Zmc2V0IDEwLCBhbm90aGVyX3BhcmFtIDUpJywgNV0sCiAKICAgICAg
ICAgICAgIFsiY3VzdG9tLW1peC1wYXJhbXMtYW5pbSIsICAxLCAiY3VzdG9tLW1peC1wYXJhbXMt
Ym94IiwgIndlYmtpdEZpbHRlciIsICdjdXN0b20odXJsKHZlcnRleC1yb3RhdGUudnMpIG5vbmUs
IDEgMSBmaWx0ZXItYm94LCBwYXJhbSAxMCwgYW5vdGhlcl9wYXJhbSA1LCBmaXJzdF9wYXJhbSA2
LCByb3RhdGVCeSA2MCwgb2Zmc2V0IDEwLCBsYXN0X3BhcmFtIDQpJywgNV0sCi0gICAgICAgICAg
ICBbImN1c3RvbS1taXgtbnVtYmVycy1hbmltIiwgIDEsICJjdXN0b20tbWl4LW51bWJlcnMtYm94
IiwgIndlYmtpdEZpbHRlciIsICdjdXN0b20odXJsKHZlcnRleC1yb3RhdGUudnMpIG5vbmUsIDEg
MSBmaWx0ZXItYm94LCByb3RhdGVCeSA0NSwgYSA1LjUsIGIgMTEgMTYuNSwgYyAyMiAyNy41IDMz
LCBkIDM4LjUgNDQgNDkuNSknLCAxMF0KKyAgICAgICAgICAgIFsiY3VzdG9tLW1peC1udW1iZXJz
LWFuaW0iLCAgMSwgImN1c3RvbS1taXgtbnVtYmVycy1ib3giLCAid2Via2l0RmlsdGVyIiwgJ2N1
c3RvbSh1cmwodmVydGV4LXJvdGF0ZS52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHJvdGF0ZUJ5
IDQ1LCBhIDUuNSwgYiAxMSAxNi41LCBjIDIyIDI3LjUgMzMsIGQgMzguNSA0NCA0OS41KScsIDEw
XSwKKyAgICAgICAgICAgIFsiY3VzdG9tLW1peC1yb3RhdGVaLWFuaW0iLCAgMSwgImN1c3RvbS1t
aXgtcm90YXRlWi1ib3giLCAid2Via2l0RmlsdGVyIiwgJ2N1c3RvbSh1cmwodmVydGV4LXRyYW5z
Zm9ybS1wYXJhbWV0ZXIudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCB0cmFuc2Zvcm0gbWF0cml4
KDEgMCAwIDEgMCAwKSknLCAwLjAwMV0sCisgICAgICAgICAgICBbImN1c3RvbS1taXgtcm90YXRl
WC1hbmltIiwgIDEsICJjdXN0b20tbWl4LXJvdGF0ZVgtYm94IiwgIndlYmtpdEZpbHRlciIsICdj
dXN0b20odXJsKHZlcnRleC10cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSBub25lLCAxIDEgZmlsdGVy
LWJveCwgdHJhbnNmb3JtIG1hdHJpeDNkKDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEp
KScsIDAuMDAxXSwKKyAgICAgICAgICAgIFsiY3VzdG9tLW1peC1yb3RhdGVZLWFuaW0iLCAgMSwg
ImN1c3RvbS1taXgtcm90YXRlWS1ib3giLCAid2Via2l0RmlsdGVyIiwgJ2N1c3RvbSh1cmwodmVy
dGV4LXRyYW5zZm9ybS1wYXJhbWV0ZXIudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCB0cmFuc2Zv
cm0gbWF0cml4M2QoMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSkpJywgMC4wMDFdLAor
ICAgICAgICAgICAgWyJjdXN0b20tbWl4LXRyYW5zbGF0ZTNELWFuaW0iLCAgMSwgImN1c3RvbS1t
aXgtdHJhbnNsYXRlM0QtYm94IiwgIndlYmtpdEZpbHRlciIsICdjdXN0b20odXJsKHZlcnRleC10
cmFuc2Zvcm0tcGFyYW1ldGVyLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgdHJhbnNmb3JtIG1h
dHJpeDNkKDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDEwIDEwIDEwIDEpKScsIDNdLAorICAgICAg
ICAgICAgWyJjdXN0b20tbWl4LXNjYWxlM0QtYW5pbSIsICAxLCAiY3VzdG9tLW1peC1zY2FsZTNE
LWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHVybCh2ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFt
ZXRlci52cykgbm9uZSwgMSAxIGZpbHRlci1ib3gsIHRyYW5zZm9ybSBtYXRyaXgzZCgxLjE3IDAg
MCAwIDAgMS43NSAwIDAgMCAwIDEuNzUgMCAwIDAgMCAxKSknLCAxXSwKKyAgICAgICAgICAgIFsi
Y3VzdG9tLW1peC1tdWx0aS1hbmltIiwgIDEsICJjdXN0b20tbWl4LW11bHRpLWJveCIsICJ3ZWJr
aXRGaWx0ZXIiLCAnY3VzdG9tKHVybCh2ZXJ0ZXgtdHJhbnNmb3JtLXBhcmFtZXRlci52cykgbm9u
ZSwgMSAxIGZpbHRlci1ib3gsIHRyYW5zZm9ybSBtYXRyaXgzZCgxLjE3IDAgMCAwIDAgMS43NSAw
IDAgMCAwIDEuNzUgMCAwIDAgMCAxKSknLCAxXQogICAgICAgICBdOwogICAgICAgICBydW5Bbmlt
YXRpb25UZXN0KGV4cGVjdGVkVmFsdWVzKTsKICAgICA8L3NjcmlwdD4KQEAgLTEzMiw3ICsxOTIs
MTIgQEAKICAgICA8ZGl2IGNsYXNzPSJib3giIGlkPSJjdXN0b20tdG8tZGlmZi1wYXJhbXMtYm94
Ij48L2Rpdj4KICAgICA8ZGl2IGNsYXNzPSJib3giIGlkPSJjdXN0b20tbWl4LXBhcmFtcy1ib3gi
PjwvZGl2PgogICAgIDxkaXYgY2xhc3M9ImJveCIgaWQ9ImN1c3RvbS1taXgtbnVtYmVycy1ib3gi
PjwvZGl2PgotCisgICAgPGRpdiBjbGFzcz0iYm94IiBpZD0iY3VzdG9tLW1peC1yb3RhdGVaLWJv
eCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iYm94IiBpZD0iY3VzdG9tLW1peC1yb3RhdGVYLWJv
eCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iYm94IiBpZD0iY3VzdG9tLW1peC1yb3RhdGVZLWJv
eCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iYm94IiBpZD0iY3VzdG9tLW1peC10cmFuc2xhdGUz
RC1ib3giPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCIgaWQ9ImN1c3RvbS1taXgtc2NhbGUz
RC1ib3giPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImJveCIgaWQ9ImN1c3RvbS1taXgtbXVsdGkt
Ym94Ij48L2Rpdj4KICAgICA8ZGl2IGlkPSJyZXN1bHQiPgogICAgIDwvZGl2PgogPC9ib2R5Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9jdXN0b20tZmls
dGVyLXBhcnNlci5qcyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvY3VzdG9t
LWZpbHRlci1wYXJzZXIuanMKaW5kZXggOGEzMGI2MjU5MWY0MDg5YjJjODkzMGJjOWVmOWNhOWIw
YTNlN2FkOC4uN2U3OTJkNzdjNjJiMGYzMGQxMTE5OTgxZjA5NDNiOWIwNzNmOTcwZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9jdXN0b20tZmlsdGVyLXBh
cnNlci5qcworKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2N1c3RvbS1m
aWx0ZXItcGFyc2VyLmpzCkBAIC02NCw2ICs2NCwxMSBAQCBmdW5jdGlvbiBudW1iZXIodG9rZW4p
CiAgICAgcmV0dXJuIHRva2VuLnR5cGUgPT0gImZsb2F0IiB8fCB0b2tlbi50eXBlID09ICJpbnRl
Z2VyIjsKIH0KIAorZnVuY3Rpb24gdHJhbnNmb3JtKHRva2VuKQoreworICAgIHJldHVybiB0b2tl
bi50eXBlID09ICJrZXl3b3JkIiAmJiB0b2tlbi52YWx1ZSA9PSAidHJhbnNmb3JtIjsKK30KKwog
Ly8gSGVscGVyIGNsYXNzIHRvIGl0ZXJhdGUgb24gdGhlIHRva2VuIHN0cmVhbS4gSXQgd2lsbCBh
ZGQgYW4gImVuZCIKIC8vIHRva2VuIGF0IHRoZSBlbmQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdXNl
IHRoZSAiYWhlYWQiIGZ1bmN0aW9uCiAvLyB3aXRob3V0IGNoZWNraW5nIGlmIGl0J3MgdGhlIGxh
c3QgdG9rZW4gaW4gdGhlIHN0cmVhbS4KQEAgLTExNCw2ICsxMTksMTggQEAgZnVuY3Rpb24gcGFy
c2VGdW5jdGlvbihtKQogICAgIHJldHVybiBmdW5jdGlvbk9iamVjdDsKIH0KIAorZnVuY3Rpb24g
cGFyc2VNYXRyaXgobSkKK3sKKyAgICB2YXIgbWF0cml4T2JqZWN0ID0geworICAgICAgICB0eXBl
OiBtLnZhbHVlCisgICAgfTsKKyAgICBtLnNraXAoKTsKKyAgICBtLnNraXAoKTsKKyAgICBtYXRy
aXhPYmplY3QuYXJndW1lbnRzID0gcGFyc2VMaXN0KG0sIFsiKSIsICJlbmQiXSk7CisgICAgbS5z
a2lwKCk7CisgICAgcmV0dXJuIG1hdHJpeE9iamVjdDsKK30KKwogLy8gQ3JlYXRlcyBhIG5ldyAi
cGFyYW1ldGVyIiBub2RlLiBJdCBleHBlY3RzIHRoYXQgdGhlIGN1cnJlbnQgdG9rZW4gaXMgdGhl
IHBhcmFtZXRlciBuYW1lLgogLy8gSXQgY29uc3VtZXMgZXZlcnl0aGluZyBiZWZvcmUgdGhlIGZv
bGxvd2luZyBjb21tYS4KIGZ1bmN0aW9uIHBhcnNlUGFyYW1ldGVyKG0pCkBAIC0xMjksNyArMTQ2
LDcgQEAgZnVuY3Rpb24gcGFyc2VQYXJhbWV0ZXIobSkKIAogLy8gQ29uc3VtZXMgYSBsaXN0IG9m
IHRva2VucyBiZWZvcmUgcmVhY2hpbmcgdGhlICJlbmRUb2tlbiIgYW5kIHJldHVybnMgYW4gYXJy
YXkgd2l0aCBhbGwgdGhlIHBhcnNlZCBpdGVtcy4KIC8vIE1ha2VzIHRoZSBmb2xsb3dpbmcgYXNz
dW1wdGlvbnM6Ci0vLyAtIGlmIGEga2V5d29yZCBpcyBmb2xsb3dlZCBieSAiKCIgdGhlbiBpdCBp
cyBhIHN0YXJ0IG9mIGZ1bmN0aW9uCisvLyAtIGlmIGEga2V5d29yZCBpcyBmb2xsb3dlZCBieSAi
KCIgdGhlbiBpdCBpcyBhIHN0YXJ0IG9mIGZ1bmN0aW9uLCB1bmxlc3MgaXQgaXMgYSBtYXRyaXgu
CiAvLyAtIGlmIGEga2V5d29yZCBpcyBub3QgZm9sbG93ZWQgYnkgIiwiIGl0IGlzIGEgcGFyYW1l
dGVyCiAvLyBLZXl3b3JkcyB0aGF0IGRvIG5vdCBtYXRjaCBlaXRoZXIgb2YgdGhlIHByZXZpb3Vz
IHJ1bGVzIGFuZCB0b2tlbnMgbGlrZSBudW1iZXIgYW5kIHVybCBhcmUganVzdCBjbG9uZWQuCiBm
dW5jdGlvbiBwYXJzZUxpc3QobSwgZW5kVG9rZW4pCkBAIC0xMzcsOSArMTU0LDE2IEBAIGZ1bmN0
aW9uIHBhcnNlTGlzdChtLCBlbmRUb2tlbikKICAgICB2YXIgcmVzdWx0ID0gW10sIHRva2VuOwog
ICAgIHdoaWxlICgodG9rZW4gPSBtLmN1cnJlbnQoKSkgJiYgIXRva2VuLmlzQShlbmRUb2tlbikp
IHsKICAgICAgICAgaWYgKHRva2VuLmlzQSgia2V5d29yZCIpKSB7Ci0gICAgICAgICAgICBpZiAo
bS5haGVhZCgpLmlzQSgiKCIpKQorICAgICAgICAgICAgaWYgKG0uYWhlYWQoKS5pc0EoIigiKSAm
JiB0b2tlbi52YWx1ZSAhPSAibWF0cml4IiAmJiB0b2tlbi52YWx1ZSAhPSAibWF0cml4M2QiKQog
ICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBhcnNlRnVuY3Rpb24obSkpOwotICAgICAgICAg
ICAgZWxzZSBpZiAobS5haGVhZCgpLmlzQSgiLCIsIGVuZFRva2VuKSkgeworICAgICAgICAgICAg
ZWxzZSBpZiAobS5haGVhZCgpLmlzQSgiKCIpICYmICh0b2tlbi52YWx1ZSA9PSAibWF0cml4IiB8
fCB0b2tlbi52YWx1ZSA9PSAibWF0cml4M2QiKSkgeworICAgICAgICAgICAgICAgIHZhciBsID0g
cGFyc2VNYXRyaXgobSk7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsLmFy
Z3VtZW50cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goewor
ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogIm51bWJlciIsCisgICAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZTogbC5hcmd1bWVudHNbaV0udmFsdWUKKyAgICAgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG0uYWhlYWQoKS5pc0EoIiwiLCBlbmRUb2tlbikp
IHsKICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgIHR5
cGU6ICJrZXl3b3JkIiwgCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBtLnNraXAoKS52YWx1
ZQpAQCAtMTUxLDYgKzE3NSwxMSBAQCBmdW5jdGlvbiBwYXJzZUxpc3QobSwgZW5kVG9rZW4pCiAg
ICAgICAgICAgICAgICAgdHlwZTogIm51bWJlciIsCiAgICAgICAgICAgICAgICAgdmFsdWU6IG0u
c2tpcCgpLnZhbHVlCiAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIGlmICh0b2tlbi5p
c0EodHJhbnNmb3JtKSkgeworICAgICAgICAgICAgcmVzdWx0LnB1c2goeworICAgICAgICAgICAg
ICAgIHR5cGU6ICJ0cmFuc2Zvcm0iLAorICAgICAgICAgICAgICAgIHZhbHVlOiBtLnNraXAoKS52
YWx1ZQorICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSBpZiAodG9rZW4uaXNBKCJ1cmwi
KSkgewogICAgICAgICAgICAgcmVzdWx0LnB1c2goewogICAgICAgICAgICAgICAgIHR5cGU6ICJ1
cmwiLAo=
</data>
<flag name="commit-queue"
          id="172455"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163474</attachid>
            <date>2012-09-11 16:30:50 -0700</date>
            <delta_ts>2012-09-11 16:36:23 -0700</delta_ts>
            <desc>Patch V1</desc>
            <filename>bug94980.patch</filename>
            <type>text/plain</type>
            <size>29706</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhZjE2OGQ4Li45M2UxNjI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDkt
MTEgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhZGVyc10gSW1wbGVtZW50IHRyYW5zZm9ybSBwYXJhbWV0ZXIgYW5pbWF0aW9ucyBmb3Ig
Q1NTIEN1c3RvbSBGaWx0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NDk4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEJhc2VkIG9uIHBhdGNoIGZyb20gSm9zaHVhIE5ldHRlcmZpZWxkIDxqbmV0dGVy
ZmllbGRAcmltLmNvbT4uCisKKyAgICAgICAgQWRkZWQgdGVzdCB0cmFuc2Zvcm0gYW5pbWF0aW9u
cyBpbiBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItdHJhbnNmb3JtLWFuaW1hdGlv
bi5odG1sLgorCisgICAgICAgICogYW5pbWF0aW9ucy9yZXNvdXJjZXMvYW5pbWF0aW9uLXRlc3Qt
aGVscGVycy5qczoKKyAgICAgICAgKGN1c3RvbUZpbHRlclBhcmFtZXRlck1hdGNoKTogRXh0cmFj
dGVkIHRoZSBwYXJhbWV0ZXIgbWF0Y2hpbmcgZnJvbSBmaWx0ZXJQYXJhbWV0ZXJzTWF0Y2ggYW5k
IGFkZGVkIGZ1bmN0aW9uIHBhcmFtZXRlcnMgbWF0Y2hpbmcuCisgICAgICAgIFRoaXMgc2hvdWxk
IHdvcmsgZm9yIGFsbCBmdW5jdGlvbnMgdGhhdCBoYXZlIG51bWJlciBwYXJhbWV0ZXJzLCBpZS4g
YXJyYXlzLCBtYXQ0IGZ1bmN0aW9ucy4KKyAgICAgICAgCisgICAgICAgIChmaWx0ZXJQYXJhbWV0
ZXJzTWF0Y2gpOgorICAgICAgICAqIGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci10
cmFuc2Zvcm1zLWFuaW1hdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzczMv
ZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci10cmFuc2Zvcm1zLWFuaW1hdGlvbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2N1c3RvbS1maWx0ZXItcGFy
c2VyLmpzOiBGaXhlZCBmdW5jdGlvbiBwYXJzaW5nLgorICAgICAgICAoVG9rZW5TdHJlYW0ucHJv
dG90eXBlLnNraXApOgorCiAyMDEyLTA5LTEwICBBbGV4IFNha2hhcnRjaG91ayAgPGFsZXhzdEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBncmFkaWVudC13aXRoLXNjYWxlZC1h
bmNlc3Rvci5odG1sIHJlYmFzZWxpbmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlv
bnMvcmVzb3VyY2VzL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMgYi9MYXlvdXRUZXN0cy9hbmlt
YXRpb25zL3Jlc291cmNlcy9hbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzCmluZGV4IDQyNTk4Y2Mu
LjQ2OTE4NjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvcmVzb3VyY2VzL2Fu
aW1hdGlvbi10ZXN0LWhlbHBlcnMuanMKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9yZXNv
dXJjZXMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcwpAQCAtODQsNiArODQsNDUgQEAgZnVuY3Rp
b24gZ2V0RmlsdGVyUGFyYW1ldGVycyhzKQogICAgIHJldHVybiBwYXJhbUxpc3Q7CiB9CiAKK2Z1
bmN0aW9uIGN1c3RvbUZpbHRlclBhcmFtZXRlck1hdGNoKHBhcmFtMSwgcGFyYW0yLCB0b2xlcmFu
Y2UpCit7CisgICAgaWYgKHBhcmFtMS50eXBlICE9ICJwYXJhbWV0ZXIiKSB7CisgICAgICAgIC8v
IENoZWNraW5nIGZvciBzaGFkZXIgdXJpcyBhbmQgb3RoZXIga2V5d29yZHMuIFRoZXkgbmVlZCB0
byBiZSBleGFjdGx5IHRoZSBzYW1lLgorICAgICAgICByZXR1cm4gKHBhcmFtMS50eXBlID09IHBh
cmFtMi50eXBlICYmIHBhcmFtMS52YWx1ZSA9PSBwYXJhbTIudmFsdWUpOworICAgIH0KKworICAg
IGlmIChwYXJhbTEubmFtZSAhPSBwYXJhbTIubmFtZSB8fCBwYXJhbTEudmFsdWUubGVuZ3RoICE9
IHBhcmFtMi52YWx1ZS5sZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAo
dmFyIGogPSAwOyBqIDwgcGFyYW0xLnZhbHVlLmxlbmd0aDsgKytqKSB7CisgICAgICAgIHZhciB2
YWwxID0gcGFyYW0xLnZhbHVlW2pdLAorICAgICAgICAgICAgdmFsMiA9IHBhcmFtMi52YWx1ZVtq
XTsKKyAgICAgICAgaWYgKHZhbDEudHlwZSAhPSB2YWwyLnR5cGUpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHN3aXRjaCAodmFsMS50eXBlKSB7CisgICAgICAgIGNhc2UgImZ1
bmN0aW9uIjoKKyAgICAgICAgICAgIGlmICh2YWwxLm5hbWUgIT0gdmFsMi5uYW1lKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZvciAodmFyIHQgPSAwOyB0IDwg
dmFsMS5hcmd1bWVudHMubGVuZ3RoOyArK3QpIHsKKyAgICAgICAgICAgICAgICBpZiAodmFsMS5h
cmd1bWVudHNbdF0udHlwZSAhPSAibnVtYmVyIiB8fCB2YWwyLmFyZ3VtZW50c1t0XS50eXBlICE9
ICJudW1iZXIiKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgaWYgKCFpc0Nsb3NlRW5vdWdoKHZhbDEuYXJndW1lbnRzW3RdLnZhbHVlLCB2YWwyLmFy
Z3VtZW50c1t0XS52YWx1ZSwgdG9sZXJhbmNlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Im51bWJlciI6CisgICAgICAgICAgICBpZiAoIWlzQ2xvc2VFbm91Z2godmFsMS52YWx1ZSwgdmFs
Mi52YWx1ZSwgdG9sZXJhbmNlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnNvbGUuZXJy
b3IoIlVuc3VwcG9ydGVkIHBhcmFtZXRlciB0eXBlICIsIHZhbDEudHlwZSk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogZnVuY3Rpb24gZmlsdGVyUGFyYW1ldGVyc01hdGNoKHBhcmFtTGlzdDEsIHBhcmFtTGlzdDIs
IHRvbGVyYW5jZSkKIHsKICAgICBpZiAocGFyYW1MaXN0MS5sZW5ndGggIT0gcGFyYW1MaXN0Mi5s
ZW5ndGgpCkBAIC05MywyMSArMTMyLDggQEAgZnVuY3Rpb24gZmlsdGVyUGFyYW1ldGVyc01hdGNo
KHBhcmFtTGlzdDEsIHBhcmFtTGlzdDIsIHRvbGVyYW5jZSkKICAgICAgICAgICAgIHBhcmFtMiA9
IHBhcmFtTGlzdDJbaV07CiAgICAgICAgIGlmICh0eXBlb2YgcGFyYW0xID09ICJvYmplY3QiKSB7
CiAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgY3VzdG9tIGZpbHRlciBwYXJhbWV0ZXIuCi0gICAg
ICAgICAgICBpZiAocGFyYW0xLnR5cGUgIT0gInBhcmFtZXRlciIpIHsKLSAgICAgICAgICAgICAg
ICAvLyBDaGVja2luZyBmb3Igc2hhZGVyIHVyaXMgYW5kIG90aGVyIGtleXdvcmRzLiBUaGV5IG5l
ZWQgdG8gYmUgZXhhY3RseSB0aGUgc2FtZS4KLSAgICAgICAgICAgICAgICBpZiAocGFyYW0xLnR5
cGUgIT0gcGFyYW0yLnR5cGUKLSAgICAgICAgICAgICAgICAgICAgfHwgcGFyYW0xLnZhbHVlICE9
IHBhcmFtMi52YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHBhcmFt
MS5uYW1lICE9IHBhcmFtMi5uYW1lCi0gICAgICAgICAgICAgICAgfHwgcGFyYW0xLnZhbHVlLmxl
bmd0aCAhPSBwYXJhbTIudmFsdWUubGVuZ3RoKQorICAgICAgICAgICAgaWYgKCFjdXN0b21GaWx0
ZXJQYXJhbWV0ZXJNYXRjaChwYXJhbTEsIHBhcmFtMiwgdG9sZXJhbmNlKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAvLyBGb3Igbm93IHdlIG9ubHkgc3VwcG9y
dCBmbG9hdHMuCi0gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHBhcmFtMS52YWx1ZS5s
ZW5ndGg7ICsraikgewotICAgICAgICAgICAgICAgIGlmICghaXNDbG9zZUVub3VnaChwYXJhbTEu
dmFsdWVbal0udmFsdWUsIHBhcmFtMi52YWx1ZVtqXS52YWx1ZSwgdG9sZXJhbmNlKSkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgdmFyIG1hdGNoID0gaXNDbG9zZUVub3VnaChw
YXJhbTEsIHBhcmFtMiwgdG9sZXJhbmNlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci10cmFuc2Zvcm1zLWFuaW1hdGlvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItdHJh
bnNmb3Jtcy1hbmltYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjlmYWNkNTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItdHJhbnNmb3Jtcy1hbmltYXRpb24tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNSBAQAorICAKK1BBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9wZXJ0eSBm
b3IgImN1c3RvbS1taXgtc2luZ2xlLXRyYW5zZm9ybS1ib3giIGVsZW1lbnQgYXQgMXMgc2F3IHNv
bWV0aGluZyBjbG9zZSB0bzogY3VzdG9tKHVybChuby1zaGFkZXItbmVlZGVkLnZzKSBub25lLCAx
IDEgZmlsdGVyLWJveCwgdHJhbnNmb3JtIG1hdHJpeCgxNSwgMCwgMCwgMTUsIDAsIDApKQorUEFT
UyAtICJ3ZWJraXRGaWx0ZXIiIHByb3BlcnR5IGZvciAiY3VzdG9tLW1peC1kaWZmZXJlbnQtdHJh
bnNmb3Jtcy1ib3giIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogY3VzdG9t
KHVybChuby1zaGFkZXItbmVlZGVkLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgdHJhbnNmb3Jt
IG1hdHJpeCgxMDAsIDAsIDAsIDEwMCwgMCwgMCkpCitQQVNTIC0gIndlYmtpdEZpbHRlciIgcHJv
cGVydHkgZm9yICJjdXN0b20tbWl4LW11bHRpLXRyYW5zZm9ybS1ib3giIGVsZW1lbnQgYXQgMXMg
c2F3IHNvbWV0aGluZyBjbG9zZSB0bzogY3VzdG9tKHVybChuby1zaGFkZXItbmVlZGVkLnZzKSBu
b25lLCAxIDEgZmlsdGVyLWJveCwgdHJhbnNmb3JtMSBtYXRyaXgoMTUsIDAsIDAsIDE1LCAwLCAw
KSwgdHJhbnNmb3JtMiBtYXRyaXgoMTAwLCAwLCAwLCAxMDAsIDAsIDApKQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItdHJhbnNmb3Jt
cy1hbmltYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9t
LWZpbHRlci10cmFuc2Zvcm1zLWFuaW1hdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjUwMTFhOTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3Mz
L2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItdHJhbnNmb3Jtcy1hbmltYXRpb24uaHRtbApA
QCAtMCwwICsxLDY2IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKyAgICA8
c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHdp
bmRvdy50ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0Q1NTQ3VzdG9tRmlsdGVy
RW5hYmxlZCIsICIxIik7CisgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5vdmVycmlkZVBy
ZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxlZCIsICIxIik7CisgICAgICAgIH0KKyAgICA8L3Nj
cmlwdD4KKyAgICA8c3R5bGU+CisgICAgICAgIC5ib3ggeworICAgICAgICAgICAgaGVpZ2h0OiAx
MDBweDsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIG1hcmdpbjogMTBw
eDsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAgICAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgIH0KKworICAgICAgICAjY3VzdG9tLW1peC1zaW5n
bGUtdHJhbnNmb3JtLWJveCB7CisgICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogY3VzdG9t
LW1peC1zaW5nbGUtdHJhbnNmb3JtLWFuaW0gMnMgbGluZWFyOworICAgICAgICB9CisKKyAgICAg
ICAgI2N1c3RvbS1taXgtZGlmZmVyZW50LXRyYW5zZm9ybXMtYm94IHsKKyAgICAgICAgICAgIC13
ZWJraXQtYW5pbWF0aW9uOiBjdXN0b20tbWl4LWRpZmZlcmVudC10cmFuc2Zvcm1zLWFuaW0gMnMg
bGluZWFyOworICAgICAgICB9CisKKyAgICAgICAgI2N1c3RvbS1taXgtbXVsdGktdHJhbnNmb3Jt
LWJveCB7CisgICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogY3VzdG9tLW1peC1tdWx0aS10
cmFuc2Zvcm0tYW5pbSAycyBsaW5lYXI7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgQC13ZWJr
aXQta2V5ZnJhbWVzIGN1c3RvbS1taXgtc2luZ2xlLXRyYW5zZm9ybS1hbmltIHsKKyAgICAgICAg
ICAgIGZyb20geyAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybChuby1zaGFkZXItbmVlZGVkLnZz
KSwgdHJhbnNmb3JtIHNjYWxlKDApKTsgfQorICAgICAgICAgICAgdG8gICB7IC13ZWJraXQtZmls
dGVyOiBjdXN0b20odXJsKG5vLXNoYWRlci1uZWVkZWQudnMpLCB0cmFuc2Zvcm0gc2NhbGUoMzAp
KTsgfQorICAgICAgICB9CisKKyAgICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGN1c3RvbS1taXgt
ZGlmZmVyZW50LXRyYW5zZm9ybXMtYW5pbSB7CisgICAgICAgICAgICBmcm9tIHsgLXdlYmtpdC1m
aWx0ZXI6IGN1c3RvbSh1cmwobm8tc2hhZGVyLW5lZWRlZC52cyksIHRyYW5zZm9ybSBzY2FsZSgx
MDApIHJvdGF0ZSgwZGVnKSk7IH0KKyAgICAgICAgICAgIHRvICAgeyAtd2Via2l0LWZpbHRlcjog
Y3VzdG9tKHVybChuby1zaGFkZXItbmVlZGVkLnZzKSwgdHJhbnNmb3JtIHJvdGF0ZSgwZGVnKSBz
Y2FsZSgxMDApKTsgfQorICAgICAgICB9CisKKyAgICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGN1
c3RvbS1taXgtbXVsdGktdHJhbnNmb3JtLWFuaW0geworICAgICAgICAgICAgZnJvbSB7IC13ZWJr
aXQtZmlsdGVyOiBjdXN0b20odXJsKG5vLXNoYWRlci1uZWVkZWQudnMpLCB0cmFuc2Zvcm0xIHNj
YWxlKDApLCB0cmFuc2Zvcm0yIHNjYWxlKDEwMCkgcm90YXRlKDBkZWcpKTsgfQorICAgICAgICAg
ICAgdG8gICB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKG5vLXNoYWRlci1uZWVkZWQudnMp
LCB0cmFuc2Zvcm0xIHNjYWxlKDMwKSwgdHJhbnNmb3JtMiByb3RhdGUoMGRlZykgc2NhbGUoMTAw
KSk7IH0KKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9jdXN0b20tZmlsdGVyLXBhcnNlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2FuaW1hdGlvbnMvcmVzb3VyY2VzL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAg
Y29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAgICAgICAgICAvLyBbYW5pbWF0aW9uLW5hbWUs
IHRpbWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBleHBlY3RlZC12YWx1ZSwgdG9sZXJhbmNlXQor
ICAgICAgICAgICAgWyJjdXN0b20tbWl4LXNpbmdsZS10cmFuc2Zvcm0tYW5pbSIsICAxLCAiY3Vz
dG9tLW1peC1zaW5nbGUtdHJhbnNmb3JtLWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHVy
bChuby1zaGFkZXItbmVlZGVkLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgdHJhbnNmb3JtIG1h
dHJpeCgxNSwgMCwgMCwgMTUsIDAsIDApKScsIDJdLAorICAgICAgICAgICAgWyJjdXN0b20tbWl4
LWRpZmZlcmVudC10cmFuc2Zvcm1zLWFuaW0iLCAgMSwgImN1c3RvbS1taXgtZGlmZmVyZW50LXRy
YW5zZm9ybXMtYm94IiwgIndlYmtpdEZpbHRlciIsICdjdXN0b20odXJsKG5vLXNoYWRlci1uZWVk
ZWQudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCB0cmFuc2Zvcm0gbWF0cml4KDEwMCwgMCwgMCwg
MTAwLCAwLCAwKSknLCAwXSwKKyAgICAgICAgICAgIFsiY3VzdG9tLW1peC1tdWx0aS10cmFuc2Zv
cm0tYW5pbSIsICAxLCAiY3VzdG9tLW1peC1tdWx0aS10cmFuc2Zvcm0tYm94IiwgIndlYmtpdEZp
bHRlciIsICdjdXN0b20odXJsKG5vLXNoYWRlci1uZWVkZWQudnMpIG5vbmUsIDEgMSBmaWx0ZXIt
Ym94LCB0cmFuc2Zvcm0xIG1hdHJpeCgxNSwgMCwgMCwgMTUsIDAsIDApLCB0cmFuc2Zvcm0yIG1h
dHJpeCgxMDAsIDAsIDAsIDEwMCwgMCwgMCkpJywgMi41XSwKKyAgICAgICAgXTsKKyAgICAgICAg
cnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcyk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJib3giIGlkPSJjdXN0b20tbWl4LXNpbmdsZS10cmFu
c2Zvcm0tYm94Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIGlkPSJjdXN0b20tbWl4LWRp
ZmZlcmVudC10cmFuc2Zvcm1zLWJveCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iYm94IiBpZD0i
Y3VzdG9tLW1peC1tdWx0aS10cmFuc2Zvcm0tYm94Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJyZXN1
bHQiPgorICAgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9jdXN0b20tZmlsdGVyLXBhcnNlci5qcyBiL0xheW91
dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvY3VzdG9tLWZpbHRlci1wYXJzZXIuanMKaW5k
ZXggOGEzMGI2Mi4uYjhlMjQ4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJz
L3Jlc291cmNlcy9jdXN0b20tZmlsdGVyLXBhcnNlci5qcworKysgYi9MYXlvdXRUZXN0cy9jc3Mz
L2ZpbHRlcnMvcmVzb3VyY2VzL2N1c3RvbS1maWx0ZXItcGFyc2VyLmpzCkBAIC04Niw3ICs4Niw3
IEBAIFRva2VuU3RyZWFtLnByb3RvdHlwZS5haGVhZCA9IGZ1bmN0aW9uKCkKIC8vIFNraXBzIHRo
ZSBjdXJyZW50IHRva2VuIG9ubHkgaWYgaXQgbWF0Y2hlcyB0aGUgInR5cGVNYXRjaGVyIi4gT3Ro
ZXJ3aXNlIGl0IHRocm93cyBhbiBlcnJvci4KIFRva2VuU3RyZWFtLnByb3RvdHlwZS5za2lwID0g
ZnVuY3Rpb24odHlwZU1hdGNoZXIpCiB7Ci0gICAgaWYgKCF0eXBlTWF0Y2hlciB8fCB0aGlzLmFo
ZWFkKCkuaXNBKHR5cGVNYXRjaGVyKSkgeworICAgIGlmICghdHlwZU1hdGNoZXIgfHwgdGhpcy5j
dXJyZW50KCkuaXNBKHR5cGVNYXRjaGVyKSkgewogICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLmN1
cnJlbnQoKTsKICAgICAgICAgKyt0aGlzLnRva2VuSW5kZXg7CiAgICAgICAgIHJldHVybiB0b2tl
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA3MzQ5N2U1Li5jZTRmNGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTAgQEAKKzIwMTItMDktMTEgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29t
PgorCisgICAgICAgIFtDU1MgU2hhZGVyc10gSW1wbGVtZW50IHRyYW5zZm9ybSBwYXJhbWV0ZXIg
YW5pbWF0aW9ucyBmb3IgQ1NTIEN1c3RvbSBGaWx0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDk4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIHBhdGNoIGZyb20gSm9zaHVhIE5ldHRl
cmZpZWxkIDxqbmV0dGVyZmllbGRAcmltLmNvbT4uCisKKyAgICAgICAgQWNjb3JkaW5nIHRvIFNl
Y3Rpb24gMzkuMiBvZiBGaWx0ZXIgRWZmZWN0cyAxLjAgRWRpdG9yJ3MgZHJhZnQKKyAgICAgICAg
KGh0dHBzOi8vZHZjcy53My5vcmcvaGcvRlhURi9yYXctZmlsZS90aXAvZmlsdGVycy9pbmRleC5o
dG1sKSwgYW5pbWF0aW9ucworICAgICAgICBvZiB0cmFuc2Zvcm1zIHNob3VsZCBiZSBoYW5kbGVk
IGZvbGxvd2luZyB0aGUgQ1NTMyB0cmFuc2Zvcm0gaW50ZXJwb2xhdGlvbgorICAgICAgICBydWxl
cy4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoaXMgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBU
ZXN0OiBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItdHJhbnNmb3Jtcy1hbmltYXRp
b24uaHRtbAorCisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFy
YW1ldGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI6
OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
ck9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEN1c3RvbUZpbHRlclBhcmFt
ZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
T3BlcmF0aW9uOjpibGVuZGluZ05lZWRzUmVuZGVyZXJTaXplKTogU29tZSBmaWx0ZXJzIG5lZWQg
dGhlIGJveCBzaXplLCBzbyB0aGF0IHRoZXkgY291bGQgY29tcHV0ZQorICAgICAgICBUcmFuc2Zv
cm1zLiBSaWdodCBub3cgb25seSB0aGUgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uIG5lZWRzIHRoYXQs
IGJ1dCBJJ3ZlIGltcGxlbWVudGVkIHVzaW5nIHRoaXMgZ2VuZXJpYyBmdW5jdGlvbi4KKyAgICAg
ICAgKEN1c3RvbUZpbHRlck9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0ZXIuaDoKKyAgICAgICAgKEN1c3RvbUZpbHRlclBh
cmFtZXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIuaDoKKyAgICAgICAgKEN1c3RvbUZpbHRlclRyYW5zZm9ybVBh
cmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0
ZXI6OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uOjpGaWx0ZXJPcGVy
YXRpb246OmJsZW5kKToKKyAgICAgICAgKEZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJPcGVyYXRpb246OkZpbHRlck9wZXJhdGlvbjo6YmxlbmRpbmdOZWVkc1JlbmRl
cmVyU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1PcGVyYXRpb25zLmNwcDogRXh0cmFjdGVkIHRoZSBibGVuZGluZyBmdW5jdGlvbnMgZnJvbSBD
U1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKyAgICAgICAgc28gdGhhdCB0aGV5IGNvdWxkIGJlIHJl
dXNlZCBmcm9tIG90aGVyIGNsYXNzZXMuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1PcGVy
YXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmRVc2luZ01hdHJpY2Vz
SW50ZXJwb2xhdGlvbik6IFVzZWQgd2hlbiB0aGUgVHJhbnNmb3JtT3BlcmF0aW9ucyBkbyBub3Qg
bWF0Y2guCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZCk6IFVz
ZXMgd2hlbiB0aGUgY2FsbGVyIGRvZXNuJ3Qga25vdyB3aGV0aGVyIHRoZSBUcmFuc2Zvcm1PcGVy
YXRpb25zIG1hdGNoIG9yIG5vdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaDoKKyAgICAgICAgKFRyYW5zZm9ybU9wZXJhdGlvbnMp
OgorCiAyMDEyLTA5LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbVjhdIFY4SFRNTERvY3VtZW50Ojp3cml0ZSBhbmQgZnJpZW5kcyBzaG91bGQgbm90IGlu
ZGlyZWN0IHRocm91Z2ggRnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCBmNDQyNzU1Li40NDdkZmFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1h
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlB
bmltYXRpb24uY3BwCkBAIC0xMjAsNDQgKzEyMCwyMiBAQCBzdGF0aWMgaW5saW5lIFBhc3NPd25Q
dHI8U2hhZG93RGF0YT4gYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0
CiAKIHN0YXRpYyBpbmxpbmUgVHJhbnNmb3JtT3BlcmF0aW9ucyBibGVuZEZ1bmMoY29uc3QgQW5p
bWF0aW9uQmFzZSogYW5pbSwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSwgY29uc3Qg
VHJhbnNmb3JtT3BlcmF0aW9ucyYgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKLSAgICBUcmFuc2Zv
cm1PcGVyYXRpb25zIHJlc3VsdDsKLQotICAgIC8vIElmIHdlIGhhdmUgYSB0cmFuc2Zvcm0gZnVu
Y3Rpb24gbGlzdCwgdXNlIHRoYXQgdG8gZG8gYSBwZXItZnVuY3Rpb24gYW5pbWF0aW9uLiBPdGhl
cndpc2UgZG8gYSBNYXRyaXggYW5pbWF0aW9uCi0gICAgaWYgKGFuaW0tPmlzVHJhbnNmb3JtRnVu
Y3Rpb25MaXN0VmFsaWQoKSkgewotICAgICAgICB1bnNpZ25lZCBmcm9tU2l6ZSA9IGZyb20ub3Bl
cmF0aW9ucygpLnNpemUoKTsKLSAgICAgICAgdW5zaWduZWQgdG9TaXplID0gdG8ub3BlcmF0aW9u
cygpLnNpemUoKTsKLSAgICAgICAgdW5zaWduZWQgc2l6ZSA9IG1heChmcm9tU2l6ZSwgdG9TaXpl
KTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAg
ICAgICAgUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gZnJvbU9wID0gKGkgPCBmcm9tU2l6ZSkg
PyBmcm9tLm9wZXJhdGlvbnMoKVtpXS5nZXQoKSA6IDA7Ci0gICAgICAgICAgICBSZWZQdHI8VHJh
bnNmb3JtT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8ub3BlcmF0aW9ucygpW2ld
LmdldCgpIDogMDsKLSAgICAgICAgICAgIFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5k
ZWRPcCA9IHRvT3AgPyB0b09wLT5ibGVuZChmcm9tT3AuZ2V0KCksIHByb2dyZXNzKSA6IChmcm9t
T3AgPyBmcm9tT3AtPmJsZW5kKDAsIHByb2dyZXNzLCB0cnVlKSA6IFBhc3NSZWZQdHI8VHJhbnNm
b3JtT3BlcmF0aW9uPigwKSk7Ci0gICAgICAgICAgICBpZiAoYmxlbmRlZE9wKQotICAgICAgICAg
ICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcCk7Ci0gICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBpZGVu
dGl0eU9wID0gSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgpOwotICAgICAgICAg
ICAgICAgIGlmIChwcm9ncmVzcyA+IDAuNSkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm9w
ZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBpZGVudGl0eU9wKTsKLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5k
KGZyb21PcCA/IGZyb21PcCA6IGlkZW50aXR5T3ApOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gQ29udmVydCB0aGUgVHJhbnNmb3JtT3BlcmF0aW9u
cyBpbnRvIG1hdHJpY2VzCi0gICAgICAgIExheW91dFNpemUgc2l6ZSA9IGFuaW0tPnJlbmRlcmVy
KCktPmlzQm94KCkgPyB0b1JlbmRlckJveChhbmltLT5yZW5kZXJlcigpKS0+Ym9yZGVyQm94UmVj
dCgpLnNpemUoKSA6IExheW91dFNpemUoKTsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
ZnJvbVQ7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRvVDsKLSAgICAgICAgZnJvbS5h
cHBseShzaXplLCBmcm9tVCk7Ci0gICAgICAgIHRvLmFwcGx5KHNpemUsIHRvVCk7Ci0KLSAgICAg
ICAgdG9ULmJsZW5kKGZyb21ULCBwcm9ncmVzcyk7CisgICAgaWYgKGFuaW0tPmlzVHJhbnNmb3Jt
RnVuY3Rpb25MaXN0VmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHRvLmJsZW5kQnlNYXRjaGluZ09w
ZXJhdGlvbnMoZnJvbSwgcHJvZ3Jlc3MpOworICAgIHJldHVybiB0by5ibGVuZFVzaW5nTWF0cmlj
ZXNJbnRlcnBvbGF0aW9uKGZyb20sIHByb2dyZXNzLCBhbmltLT5yZW5kZXJlcigpLT5pc0JveCgp
ID8gdG9SZW5kZXJCb3goYW5pbS0+cmVuZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKS5zaXplKCkg
OiBMYXlvdXRTaXplKCkpOworfQogCi0gICAgICAgIC8vIEFwcGVuZCB0aGUgcmVzdWx0Ci0gICAg
ICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9u
OjpjcmVhdGUodG9UKSk7CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2Uq
IGFuaW0sIEZpbHRlck9wZXJhdGlvbiogZnJvbU9wLCBGaWx0ZXJPcGVyYXRpb24qIHRvT3AsIGRv
dWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkKK3sKKyAgICBB
U1NFUlQodG9PcCk7CisgICAgaWYgKHRvT3AtPmJsZW5kaW5nTmVlZHNSZW5kZXJlclNpemUoKSkg
eworICAgICAgICBMYXlvdXRTaXplIHNpemUgPSBhbmltLT5yZW5kZXJlcigpLT5pc0JveCgpID8g
dG9SZW5kZXJCb3goYW5pbS0+cmVuZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKS5zaXplKCkgOiBM
YXlvdXRTaXplKCk7CisgICAgICAgIHJldHVybiB0b09wLT5ibGVuZChmcm9tT3AsIHByb2dyZXNz
LCBzaXplLCBibGVuZFRvUGFzc3Rocm91Z2gpOwogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgIHJldHVybiB0b09wLT5ibGVuZChmcm9tT3AsIHByb2dyZXNzLCBibGVuZFRvUGFzc3Rocm91
Z2gpOwogfQogCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQogc3RhdGljIGlubGluZSBGaWx0ZXJP
cGVyYXRpb25zIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBmcm9tLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB0bywgZG91YmxlIHBy
b2dyZXNzKQogewogICAgIEZpbHRlck9wZXJhdGlvbnMgcmVzdWx0OwpAQCAtMTcwLDcgKzE0OCw3
IEBAIHN0YXRpYyBpbmxpbmUgRmlsdGVyT3BlcmF0aW9ucyBibGVuZEZ1bmMoY29uc3QgQW5pbWF0
aW9uQmFzZSogYW5pbSwgY29uc3QgRmlsdGVyCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBmcm9t
T3AgPSAoaSA8IGZyb21TaXplKSA/IGZyb20ub3BlcmF0aW9ucygpW2ldLmdldCgpIDogMDsKICAg
ICAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IHRvT3AgPSAoaSA8IHRvU2l6ZSkgPyB0
by5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwotICAgICAgICAgICAgUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gYmxlbmRlZE9wID0gdG9PcCA/IHRvT3AtPmJsZW5kKGZyb21PcC5nZXQoKSwgcHJv
Z3Jlc3MpIDogKGZyb21PcCA/IGZyb21PcC0+YmxlbmQoMCwgcHJvZ3Jlc3MsIHRydWUpIDogUGFz
c1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+KDApKTsKKyAgICAgICAgICAgIFJlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IGJsZW5kZWRPcCA9IHRvT3AgPyBibGVuZEZ1bmMoYW5pbSwgZnJvbU9wLmdldCgp
LCB0b09wLmdldCgpLCBwcm9ncmVzcykgOiAoZnJvbU9wID8gYmxlbmRGdW5jKGFuaW0sIDAsIGZy
b21PcC5nZXQoKSwgcHJvZ3Jlc3MsIHRydWUpIDogUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+
KDApKTsKICAgICAgICAgICAgIGlmIChibGVuZGVkT3ApCiAgICAgICAgICAgICAgICAgcmVzdWx0
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wKTsKICAgICAgICAgICAgIGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyLmgKaW5kZXggMjc3MGI0Yy4uNDIz
ZWY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oCkBAIC00
OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkVmFsdWUoZG91YmxlIHZhbHVlKSB7
IG1fZGF0YS5hcHBlbmQodmFsdWUpOyB9CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1
c3RvbUZpbHRlclBhcmFtZXRlcj4gYmxlbmQoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiBm
cm9tLCBkb3VibGUgcHJvZ3Jlc3MpCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRl
clBhcmFtZXRlcj4gYmxlbmQoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmKQogICAgIHsKICAgICAgICAgaWYgKCFmcm9t
IHx8ICFpc1NhbWVUeXBlKCpmcm9tKSkKICAgICAgICAgICAgIHJldHVybiB0aGlzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwCmluZGV4IGY1YzgxNzIuLmVkNTdiNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHAKQEAgLTY0LDcgKzY0LDggQEAgc3RhdGlj
IGJvb2wgY2hlY2tDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzT3JkZXIoY29uc3QgQ3VzdG9tRmlsdGVy
UGFyYW1ldGVyTGlzdCYgcGEKIH0KICNlbmRpZgogCi12b2lkIGJsZW5kQ3VzdG9tRmlsdGVyUGFy
YW1ldGVycyhjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBmcm9tTGlzdCwgY29uc3Qg
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgdG9MaXN0LCBkb3VibGUgcHJvZ3Jlc3MsIEN1c3Rv
bUZpbHRlclBhcmFtZXRlckxpc3QmIHJlc3VsdExpc3QpCit2b2lkIGJsZW5kQ3VzdG9tRmlsdGVy
UGFyYW1ldGVycyhjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBmcm9tTGlzdCwgY29u
c3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgdG9MaXN0LCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwg
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgcmVzdWx0TGlzdCkKIHsKICAgICAvLyBUaGlzIG1l
dGhvZCBleHBlY3RzIGJvdGggbGlzdHMgdG8gYmUgc29ydGVkIGJ5IHBhcmFtZXRlciBuYW1lIGFu
ZCB0aGUgcmVzdWx0IGxpc3QgaXMgYWxzbyBzb3J0ZWQuCiAgICAgQVNTRVJUKGNoZWNrQ3VzdG9t
RmlsdGVyUGFyYW1ldGVyc09yZGVyKGZyb21MaXN0KSk7CkBAIC03NCw3ICs3NSw3IEBAIHZvaWQg
YmxlbmRDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxp
c3QmIGZyb21MaXN0LCBjb25zCiAgICAgICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlciogcGFyYW1G
cm9tID0gZnJvbUxpc3QuYXQoZnJvbUxpc3RJbmRleCkuZ2V0KCk7CiAgICAgICAgIEN1c3RvbUZp
bHRlclBhcmFtZXRlciogcGFyYW1UbyA9IHRvTGlzdC5hdCh0b0xpc3RJbmRleCkuZ2V0KCk7CiAg
ICAgICAgIGlmIChwYXJhbUZyb20tPm5hbWUoKSA9PSBwYXJhbVRvLT5uYW1lKCkpIHsKLSAgICAg
ICAgICAgIHJlc3VsdExpc3QuYXBwZW5kKHBhcmFtVG8tPmJsZW5kKHBhcmFtRnJvbSwgcHJvZ3Jl
c3MpKTsKKyAgICAgICAgICAgIHJlc3VsdExpc3QuYXBwZW5kKHBhcmFtVG8tPmJsZW5kKHBhcmFt
RnJvbSwgcHJvZ3Jlc3MsIHNpemUpKTsKICAgICAgICAgICAgICsrZnJvbUxpc3RJbmRleDsKICAg
ICAgICAgICAgICsrdG9MaXN0SW5kZXg7CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTExMSw3
ICsxMTIsNyBAQCBDdXN0b21GaWx0ZXJPcGVyYXRpb246On5DdXN0b21GaWx0ZXJPcGVyYXRpb24o
KQogewogfQogCi1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywg
Ym9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCitQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwgYm9vbCBibGVuZFRvUGFzc3Ro
cm91Z2gpCiB7CiAgICAgLy8gRklYTUU6IFRoZXJlJ3Mgbm8gd2F5IHRvIGRlY2lkZSB3aGF0IGlz
IHRoZSAicGFzc3Rocm91Z2ggZmlsdGVyIiBmb3Igc2hhZGVycyB1c2luZyB0aGUgY3VycmVudCBD
U1MgU3ludGF4LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04NDkwMwpAQCAtMTI4LDcgKzEyOSw3IEBAIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBD
dXN0b21GaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbioKICAgICAg
ICAgcmV0dXJuIHRoaXM7CiAgICAgCiAgICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCBhbmlt
YXRlZFBhcmFtZXRlcnM7Ci0gICAgYmxlbmRDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzKGZyb21PcC0+
bV9wYXJhbWV0ZXJzLCBtX3BhcmFtZXRlcnMsIHByb2dyZXNzLCBhbmltYXRlZFBhcmFtZXRlcnMp
OworICAgIGJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhmcm9tT3AtPm1fcGFyYW1ldGVycywg
bV9wYXJhbWV0ZXJzLCBwcm9ncmVzcywgc2l6ZSwgYW5pbWF0ZWRQYXJhbWV0ZXJzKTsKICAgICBy
ZXR1cm4gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobV9wcm9ncmFtLCBhbmltYXRlZFBh
cmFtZXRlcnMsIG1fbWVzaFJvd3MsIG1fbWVzaENvbHVtbnMsIG1fbWVzaEJveFR5cGUsIG1fbWVz
aFR5cGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAppbmRleCBiNGU4YjI5
Li43ODhiM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTMzLDYgKzMz
LDcgQEAKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJv
Z3JhbS5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkxheW91dFR5
cGVzLmgiCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDQsNyArNDUs
OCBAQCBjbGFzcyBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI7CiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiA+IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3Q7CiAKIGJv
b2wgY3VzdG9tRmlsdGVyUGFyYW1ldGVyc0VxdWFsKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRl
ckxpc3QmLCBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0Jik7Ci12b2lkIGJsZW5kQ3Vz
dG9tRmlsdGVyUGFyYW1ldGVycyhjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBsaXN0
RnJvbSwgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgbGlzdFRvLCBkb3VibGUgcHJv
Z3Jlc3MsIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHJlc3VsdExpc3QpOwordm9pZCBibGVu
ZEN1c3RvbUZpbHRlclBhcmFtZXRlcnMoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYg
bGlzdEZyb20sIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIGxpc3RUbywgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91
dFNpemUmLCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiByZXN1bHRMaXN0KTsKIAogY2xhc3Mg
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6
CkBAIC03OSw4ICs4MSw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgYWZmZWN0
c09wYWNpdHkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIG1vdmVz
UGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBibGVuZGlu
Z05lZWRzUmVuZGVyZXJTaXplKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJh
dGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZh
bHNlKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25z
dCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6
ZSYsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOwogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJQYXJhbWV0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVyLmgKaW5kZXggODI5ODBkNi4uODFlNWY4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJQYXJhbWV0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRlci5oCkBAIC01Niw3ICs1Niw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICBib29sIGlzU2FtZVR5cGUoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVy
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gcGFyYW1ldGVyVHlwZSgpID09IG90aGVyLnBhcmFtZXRl
clR5cGUoKTsgfQogICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJh
bWV0ZXI+IGJsZW5kKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciosIGRvdWJsZSBwcm9ncmVz
cykgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJhbWV0ZXI+IGJs
ZW5kKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciosIGRvdWJsZSBwcm9ncmVzcywgY29uc3Qg
TGF5b3V0U2l6ZSYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0
b21GaWx0ZXJQYXJhbWV0ZXImKSBjb25zdCA9IDA7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IEN1c3RvbUZpbHRlclBhcmFtZXRlciYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsg
fQogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1l
dGVyLmgKaW5kZXggYmQ2NmNlYy4uYTQ4NGMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlclRyYW5zZm9ybVBhcmFtZXRlci5oCkBAIC00NiwxNCArNDYsMjYgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJh
bWV0ZXIobmFtZSkpOwogICAgIH0KLSAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3VzdG9t
RmlsdGVyUGFyYW1ldGVyPiBibGVuZChjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqLCBkb3Vi
bGUpCisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBibGVu
ZChjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIGZyb21QYXJhbWV0ZXIsIGRvdWJsZSBwcm9n
cmVzcywgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgYW5pbWF0aW9ucyBzdXBwb3J0LgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ5ODAKLSAgICAgICAgcmV0dXJuIHRoaXM7CisgICAg
ICAgIGlmICghZnJvbVBhcmFtZXRlciB8fCAhaXNTYW1lVHlwZSgqZnJvbVBhcmFtZXRlcikpCisg
ICAgICAgICAgICByZXR1cm4gdGhpczsKKworICAgICAgICBjb25zdCBDdXN0b21GaWx0ZXJUcmFu
c2Zvcm1QYXJhbWV0ZXIqIGZyb21UcmFuc2Zvcm1QYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxjb25z
dCBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIqPihmcm9tUGFyYW1ldGVyKTsKKyAgICAg
ICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSA9IGZyb21UcmFuc2Zvcm1QYXJhbWV0
ZXItPm9wZXJhdGlvbnMoKTsKKyAgICAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdG8g
PSBvcGVyYXRpb25zKCk7CisgICAgICAgIGlmIChmcm9tID09IHRvKQorICAgICAgICAgICAgcmV0
dXJuIHRoaXM7CisgICAgICAgCisgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJUcmFuc2Zvcm1Q
YXJhbWV0ZXI+IHJldCA9IEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcjo6Y3JlYXRlKG5h
bWUoKSk7CisgICAgICAgIGlmIChmcm9tLnNpemUoKSAmJiB0by5zaXplKCkpCisgICAgICAgICAg
ICByZXQtPnNldE9wZXJhdGlvbnModG8uYmxlbmQoZnJvbSwgcHJvZ3Jlc3MsIHNpemUpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcmV0LT5zZXRPcGVyYXRpb25zKHByb2dyZXNzID4gMC41
ID8gdG8gOiBmcm9tKTsKKyAgICAgICAgcmV0dXJuIHJldDsKICAgICB9Ci0gICAgCisKICAgICB2
aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXImIG8pIGNv
bnN0CiAgICAgewogICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24u
aAppbmRleCBlNzI2MDBjLi42ZDI1MDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTI5LDYg
KzI5LDcgQEAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAKICNpbmNsdWRlICJDb2xvci5oIgor
I2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC03OCw3ICs3OSwx
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3Bl
cmF0aW9uJikgY29uc3QgPSAwOwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWx0ZXJPcGVy
YXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIAotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiog
Lypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGJvb2wgLypibGVuZFRvUGFzc3Rocm91Z2gq
LyA9IGZhbHNlKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiAvKmZyb20qLywgZG91YmxlIC8q
cHJvZ3Jlc3MqLywgYm9vbCAvKmJsZW5kVG9QYXNzdGhyb3VnaCovID0gZmFsc2UpCisgICAgeyAK
KyAgICAgICAgQVNTRVJUKCFibGVuZGluZ05lZWRzUmVuZGVyZXJTaXplKCkpOworICAgICAgICBy
ZXR1cm4gMDsgCisgICAgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiAvKmZyb20qLywgZG91YmxlIC8qcHJvZ3Jl
c3MqLywgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgLypibGVuZFRvUGFzc3Rocm91Z2gqLyA9IGZh
bHNlKQorICAgIHsgCisgICAgICAgIEFTU0VSVChibGVuZGluZ05lZWRzUmVuZGVyZXJTaXplKCkp
OworICAgICAgICByZXR1cm4gMDsgCisgICAgfQogCiAgICAgdmlydHVhbCBPcGVyYXRpb25UeXBl
IGdldE9wZXJhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNTYW1lVHlwZShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJu
IG8uZ2V0T3BlcmF0aW9uVHlwZSgpID09IG1fdHlwZTsgfQpAQCAtODksNiArMTAwLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBhZmZlY3RzT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgLy8gVHJ1ZSBpZiB0aGUgdGhlIHZhbHVlIG9mIG9uZSBwaXhlbCBjYW4gYWZm
ZWN0IHRoZSB2YWx1ZSBvZiBhbm90aGVyIHBpeGVsIHVuZGVyIHRoaXMgb3BlcmF0aW9uLCBzdWNo
IGFzIGJsdXIuCiAgICAgdmlydHVhbCBib29sIG1vdmVzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICAvLyBUcnVlIGlmIHRoZSBmaWx0ZXIgbmVlZHMgdGhlIHNpemUgb2YgdGhl
IGJveCBpbiBvcmRlciB0byBjYWxjdWxhdGUgdGhlIGFuaW1hdGlvbnMuCisgICAgdmlydHVhbCBi
b29sIGJsZW5kaW5nTmVlZHNSZW5kZXJlclNpemUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CiBwcm90ZWN0ZWQ6CiAgICAgRmlsdGVyT3BlcmF0aW9uKE9wZXJhdGlvblR5cGUgdHlwZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwCmluZGV4IGM5NDJhNjEuLmVkNzJiYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcApAQCAtMjMsNiArMjMsMTAg
QEAKICNpbmNsdWRlICJUcmFuc2Zvcm1PcGVyYXRpb25zLmgiCiAKICNpbmNsdWRlICJJZGVudGl0
eVRyYW5zZm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIk1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0
aW9uLmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCit1c2luZyBzdGQ6Om1heDsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC02MSw0ICs2NSw1OCBAQCBib29sIFRyYW5zZm9ybU9wZXJhdGlv
bnM6Om9wZXJhdGlvbnNNYXRjaChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBvdGhlcikgY29u
cwogICAgIHJldHVybiB0cnVlOwogfQogCitUcmFuc2Zvcm1PcGVyYXRpb25zIFRyYW5zZm9ybU9w
ZXJhdGlvbnM6OmJsZW5kQnlNYXRjaGluZ09wZXJhdGlvbnMoY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9ucyYgZnJvbSwgY29uc3QgZG91YmxlJiBwcm9ncmVzcykgY29uc3QKK3sKKyAgICBUcmFuc2Zv
cm1PcGVyYXRpb25zIHJlc3VsdDsKKworICAgIHVuc2lnbmVkIGZyb21TaXplID0gZnJvbS5vcGVy
YXRpb25zKCkuc2l6ZSgpOworICAgIHVuc2lnbmVkIHRvU2l6ZSA9IG9wZXJhdGlvbnMoKS5zaXpl
KCk7CisgICAgdW5zaWduZWQgc2l6ZSA9IG1heChmcm9tU2l6ZSwgdG9TaXplKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIFJlZlB0cjxUcmFuc2Zv
cm1PcGVyYXRpb24+IGZyb21PcCA9IChpIDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClb
aV0uZ2V0KCkgOiAwOworICAgICAgICBSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiB0b09wID0g
KGkgPCB0b1NpemUpID8gb3BlcmF0aW9ucygpW2ldLmdldCgpIDogMDsKKyAgICAgICAgUmVmUHRy
PFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmRlZE9wID0gdG9PcCA/IHRvT3AtPmJsZW5kKGZyb21P
cC5nZXQoKSwgcHJvZ3Jlc3MpIDogKGZyb21PcCA/IGZyb21PcC0+YmxlbmQoMCwgcHJvZ3Jlc3Ms
IHRydWUpIDogUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+KDApKTsKKyAgICAgICAgaWYg
KGJsZW5kZWRPcCkKKyAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5k
ZWRPcCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUmVmUHRyPFRyYW5zZm9ybU9wZXJh
dGlvbj4gaWRlbnRpdHlPcCA9IElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoKTsK
KyAgICAgICAgICAgIGlmIChwcm9ncmVzcyA+IDAuNSkKKyAgICAgICAgICAgICAgICByZXN1bHQu
b3BlcmF0aW9ucygpLmFwcGVuZCh0b09wID8gdG9PcCA6IGlkZW50aXR5T3ApOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21P
cCA/IGZyb21PcCA6IGlkZW50aXR5T3ApOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworVHJhbnNmb3JtT3BlcmF0aW9ucyBUcmFuc2Zvcm1PcGVyYXRpb25zOjpi
bGVuZFVzaW5nTWF0cmljZXNJbnRlcnBvbGF0aW9uKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMm
IGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgY29uc3QKK3sK
KyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIHJlc3VsdDsKKworICAgIC8vIENvbnZlcnQgdGhlIFRy
YW5zZm9ybU9wZXJhdGlvbnMgaW50byBtYXRyaWNlcworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGZyb21UOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRvVDsKKyAgICBmcm9tLmFwcGx5KHNp
emUsIGZyb21UKTsKKyAgICBhcHBseShzaXplLCB0b1QpOworCisgICAgdG9ULmJsZW5kKGZyb21U
LCBwcm9ncmVzcyk7CisKKyAgICAvLyBBcHBlbmQgdGhlIHJlc3VsdAorICAgIHJlc3VsdC5vcGVy
YXRpb25zKCkuYXBwZW5kKE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUodG9UKSk7
CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitUcmFuc2Zvcm1PcGVyYXRpb25zIFRyYW5zZm9y
bU9wZXJhdGlvbnM6OmJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGZyb20sIGRvdWJs
ZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgY29uc3QKK3sKKyAgICBpZiAoZnJv
bSA9PSAqdGhpcykKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgaWYgKGZyb20uc2l6ZSgp
ICYmIGZyb20ub3BlcmF0aW9uc01hdGNoKCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGJsZW5kQnlN
YXRjaGluZ09wZXJhdGlvbnMoZnJvbSwgcHJvZ3Jlc3MpOworCisgICAgcmV0dXJuIGJsZW5kVXNp
bmdNYXRyaWNlc0ludGVycG9sYXRpb24oZnJvbSwgcHJvZ3Jlc3MsIHNpemUpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oCmluZGV4
IGUyMzZlMTIuLjFkNGM5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oCkBA
IC0yNSw2ICsyNSw3IEBACiAjaWZuZGVmIFRyYW5zZm9ybU9wZXJhdGlvbnNfaAogI2RlZmluZSBU
cmFuc2Zvcm1PcGVyYXRpb25zX2gKIAorI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5jbHVk
ZSAiVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTcxLDYgKzcyLDEwIEBAIHB1YmxpYzoKICAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW9ucy5zaXplKCk7IH0KICAgICBjb25zdCBU
cmFuc2Zvcm1PcGVyYXRpb24qIGF0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXgg
PCBtX29wZXJhdGlvbnMuc2l6ZSgpID8gbV9vcGVyYXRpb25zLmF0KGluZGV4KS5nZXQoKSA6IDA7
IH0KIAorICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyhj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiwgY29uc3QgZG91YmxlJiBwcm9ncmVzcykgY29uc3Q7
CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBibGVuZEJ5TWF0cml4KGNvbnN0IFRyYW5zZm9ybU9w
ZXJhdGlvbnMmIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYpIGNvbnN0
OworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9u
cyYgZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlvdXRTaXplJikgY29uc3Q7CisKIHBy
aXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+ID4gbV9vcGVyYXRp
b25zOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163478</attachid>
            <date>2012-09-11 16:36:23 -0700</date>
            <delta_ts>2012-09-12 16:45:36 -0700</delta_ts>
            <desc>Patch V2</desc>
            <filename>bug94980.patch</filename>
            <type>text/plain</type>
            <size>29730</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhZjE2OGQ4Li45M2UxNjI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDkt
MTEgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhZGVyc10gSW1wbGVtZW50IHRyYW5zZm9ybSBwYXJhbWV0ZXIgYW5pbWF0aW9ucyBmb3Ig
Q1NTIEN1c3RvbSBGaWx0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NDk4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEJhc2VkIG9uIHBhdGNoIGZyb20gSm9zaHVhIE5ldHRlcmZpZWxkIDxqbmV0dGVy
ZmllbGRAcmltLmNvbT4uCisKKyAgICAgICAgQWRkZWQgdGVzdCB0cmFuc2Zvcm0gYW5pbWF0aW9u
cyBpbiBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItdHJhbnNmb3JtLWFuaW1hdGlv
bi5odG1sLgorCisgICAgICAgICogYW5pbWF0aW9ucy9yZXNvdXJjZXMvYW5pbWF0aW9uLXRlc3Qt
aGVscGVycy5qczoKKyAgICAgICAgKGN1c3RvbUZpbHRlclBhcmFtZXRlck1hdGNoKTogRXh0cmFj
dGVkIHRoZSBwYXJhbWV0ZXIgbWF0Y2hpbmcgZnJvbSBmaWx0ZXJQYXJhbWV0ZXJzTWF0Y2ggYW5k
IGFkZGVkIGZ1bmN0aW9uIHBhcmFtZXRlcnMgbWF0Y2hpbmcuCisgICAgICAgIFRoaXMgc2hvdWxk
IHdvcmsgZm9yIGFsbCBmdW5jdGlvbnMgdGhhdCBoYXZlIG51bWJlciBwYXJhbWV0ZXJzLCBpZS4g
YXJyYXlzLCBtYXQ0IGZ1bmN0aW9ucy4KKyAgICAgICAgCisgICAgICAgIChmaWx0ZXJQYXJhbWV0
ZXJzTWF0Y2gpOgorICAgICAgICAqIGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci10
cmFuc2Zvcm1zLWFuaW1hdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzczMv
ZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci10cmFuc2Zvcm1zLWFuaW1hdGlvbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvcmVzb3VyY2VzL2N1c3RvbS1maWx0ZXItcGFy
c2VyLmpzOiBGaXhlZCBmdW5jdGlvbiBwYXJzaW5nLgorICAgICAgICAoVG9rZW5TdHJlYW0ucHJv
dG90eXBlLnNraXApOgorCiAyMDEyLTA5LTEwICBBbGV4IFNha2hhcnRjaG91ayAgPGFsZXhzdEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBncmFkaWVudC13aXRoLXNjYWxlZC1h
bmNlc3Rvci5odG1sIHJlYmFzZWxpbmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlv
bnMvcmVzb3VyY2VzL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMgYi9MYXlvdXRUZXN0cy9hbmlt
YXRpb25zL3Jlc291cmNlcy9hbmltYXRpb24tdGVzdC1oZWxwZXJzLmpzCmluZGV4IDQyNTk4Y2Mu
LjQ2OTE4NjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvcmVzb3VyY2VzL2Fu
aW1hdGlvbi10ZXN0LWhlbHBlcnMuanMKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9yZXNv
dXJjZXMvYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcwpAQCAtODQsNiArODQsNDUgQEAgZnVuY3Rp
b24gZ2V0RmlsdGVyUGFyYW1ldGVycyhzKQogICAgIHJldHVybiBwYXJhbUxpc3Q7CiB9CiAKK2Z1
bmN0aW9uIGN1c3RvbUZpbHRlclBhcmFtZXRlck1hdGNoKHBhcmFtMSwgcGFyYW0yLCB0b2xlcmFu
Y2UpCit7CisgICAgaWYgKHBhcmFtMS50eXBlICE9ICJwYXJhbWV0ZXIiKSB7CisgICAgICAgIC8v
IENoZWNraW5nIGZvciBzaGFkZXIgdXJpcyBhbmQgb3RoZXIga2V5d29yZHMuIFRoZXkgbmVlZCB0
byBiZSBleGFjdGx5IHRoZSBzYW1lLgorICAgICAgICByZXR1cm4gKHBhcmFtMS50eXBlID09IHBh
cmFtMi50eXBlICYmIHBhcmFtMS52YWx1ZSA9PSBwYXJhbTIudmFsdWUpOworICAgIH0KKworICAg
IGlmIChwYXJhbTEubmFtZSAhPSBwYXJhbTIubmFtZSB8fCBwYXJhbTEudmFsdWUubGVuZ3RoICE9
IHBhcmFtMi52YWx1ZS5sZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAo
dmFyIGogPSAwOyBqIDwgcGFyYW0xLnZhbHVlLmxlbmd0aDsgKytqKSB7CisgICAgICAgIHZhciB2
YWwxID0gcGFyYW0xLnZhbHVlW2pdLAorICAgICAgICAgICAgdmFsMiA9IHBhcmFtMi52YWx1ZVtq
XTsKKyAgICAgICAgaWYgKHZhbDEudHlwZSAhPSB2YWwyLnR5cGUpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHN3aXRjaCAodmFsMS50eXBlKSB7CisgICAgICAgIGNhc2UgImZ1
bmN0aW9uIjoKKyAgICAgICAgICAgIGlmICh2YWwxLm5hbWUgIT0gdmFsMi5uYW1lKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZvciAodmFyIHQgPSAwOyB0IDwg
dmFsMS5hcmd1bWVudHMubGVuZ3RoOyArK3QpIHsKKyAgICAgICAgICAgICAgICBpZiAodmFsMS5h
cmd1bWVudHNbdF0udHlwZSAhPSAibnVtYmVyIiB8fCB2YWwyLmFyZ3VtZW50c1t0XS50eXBlICE9
ICJudW1iZXIiKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgaWYgKCFpc0Nsb3NlRW5vdWdoKHZhbDEuYXJndW1lbnRzW3RdLnZhbHVlLCB2YWwyLmFy
Z3VtZW50c1t0XS52YWx1ZSwgdG9sZXJhbmNlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Im51bWJlciI6CisgICAgICAgICAgICBpZiAoIWlzQ2xvc2VFbm91Z2godmFsMS52YWx1ZSwgdmFs
Mi52YWx1ZSwgdG9sZXJhbmNlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnNvbGUuZXJy
b3IoIlVuc3VwcG9ydGVkIHBhcmFtZXRlciB0eXBlICIsIHZhbDEudHlwZSk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogZnVuY3Rpb24gZmlsdGVyUGFyYW1ldGVyc01hdGNoKHBhcmFtTGlzdDEsIHBhcmFtTGlzdDIs
IHRvbGVyYW5jZSkKIHsKICAgICBpZiAocGFyYW1MaXN0MS5sZW5ndGggIT0gcGFyYW1MaXN0Mi5s
ZW5ndGgpCkBAIC05MywyMSArMTMyLDggQEAgZnVuY3Rpb24gZmlsdGVyUGFyYW1ldGVyc01hdGNo
KHBhcmFtTGlzdDEsIHBhcmFtTGlzdDIsIHRvbGVyYW5jZSkKICAgICAgICAgICAgIHBhcmFtMiA9
IHBhcmFtTGlzdDJbaV07CiAgICAgICAgIGlmICh0eXBlb2YgcGFyYW0xID09ICJvYmplY3QiKSB7
CiAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgY3VzdG9tIGZpbHRlciBwYXJhbWV0ZXIuCi0gICAg
ICAgICAgICBpZiAocGFyYW0xLnR5cGUgIT0gInBhcmFtZXRlciIpIHsKLSAgICAgICAgICAgICAg
ICAvLyBDaGVja2luZyBmb3Igc2hhZGVyIHVyaXMgYW5kIG90aGVyIGtleXdvcmRzLiBUaGV5IG5l
ZWQgdG8gYmUgZXhhY3RseSB0aGUgc2FtZS4KLSAgICAgICAgICAgICAgICBpZiAocGFyYW0xLnR5
cGUgIT0gcGFyYW0yLnR5cGUKLSAgICAgICAgICAgICAgICAgICAgfHwgcGFyYW0xLnZhbHVlICE9
IHBhcmFtMi52YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHBhcmFt
MS5uYW1lICE9IHBhcmFtMi5uYW1lCi0gICAgICAgICAgICAgICAgfHwgcGFyYW0xLnZhbHVlLmxl
bmd0aCAhPSBwYXJhbTIudmFsdWUubGVuZ3RoKQorICAgICAgICAgICAgaWYgKCFjdXN0b21GaWx0
ZXJQYXJhbWV0ZXJNYXRjaChwYXJhbTEsIHBhcmFtMiwgdG9sZXJhbmNlKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAvLyBGb3Igbm93IHdlIG9ubHkgc3VwcG9y
dCBmbG9hdHMuCi0gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHBhcmFtMS52YWx1ZS5s
ZW5ndGg7ICsraikgewotICAgICAgICAgICAgICAgIGlmICghaXNDbG9zZUVub3VnaChwYXJhbTEu
dmFsdWVbal0udmFsdWUsIHBhcmFtMi52YWx1ZVtqXS52YWx1ZSwgdG9sZXJhbmNlKSkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgdmFyIG1hdGNoID0gaXNDbG9zZUVub3VnaChw
YXJhbTEsIHBhcmFtMiwgdG9sZXJhbmNlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci10cmFuc2Zvcm1zLWFuaW1hdGlvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItdHJh
bnNmb3Jtcy1hbmltYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjlmYWNkNTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItdHJhbnNmb3Jtcy1hbmltYXRpb24tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNSBAQAorICAKK1BBU1MgLSAid2Via2l0RmlsdGVyIiBwcm9wZXJ0eSBm
b3IgImN1c3RvbS1taXgtc2luZ2xlLXRyYW5zZm9ybS1ib3giIGVsZW1lbnQgYXQgMXMgc2F3IHNv
bWV0aGluZyBjbG9zZSB0bzogY3VzdG9tKHVybChuby1zaGFkZXItbmVlZGVkLnZzKSBub25lLCAx
IDEgZmlsdGVyLWJveCwgdHJhbnNmb3JtIG1hdHJpeCgxNSwgMCwgMCwgMTUsIDAsIDApKQorUEFT
UyAtICJ3ZWJraXRGaWx0ZXIiIHByb3BlcnR5IGZvciAiY3VzdG9tLW1peC1kaWZmZXJlbnQtdHJh
bnNmb3Jtcy1ib3giIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogY3VzdG9t
KHVybChuby1zaGFkZXItbmVlZGVkLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgdHJhbnNmb3Jt
IG1hdHJpeCgxMDAsIDAsIDAsIDEwMCwgMCwgMCkpCitQQVNTIC0gIndlYmtpdEZpbHRlciIgcHJv
cGVydHkgZm9yICJjdXN0b20tbWl4LW11bHRpLXRyYW5zZm9ybS1ib3giIGVsZW1lbnQgYXQgMXMg
c2F3IHNvbWV0aGluZyBjbG9zZSB0bzogY3VzdG9tKHVybChuby1zaGFkZXItbmVlZGVkLnZzKSBu
b25lLCAxIDEgZmlsdGVyLWJveCwgdHJhbnNmb3JtMSBtYXRyaXgoMTUsIDAsIDAsIDE1LCAwLCAw
KSwgdHJhbnNmb3JtMiBtYXRyaXgoMTAwLCAwLCAwLCAxMDAsIDAsIDApKQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItdHJhbnNmb3Jt
cy1hbmltYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9t
LWZpbHRlci10cmFuc2Zvcm1zLWFuaW1hdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjUwMTFhOTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3Mz
L2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItdHJhbnNmb3Jtcy1hbmltYXRpb24uaHRtbApA
QCAtMCwwICsxLDY2IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKyAgICA8
c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHdp
bmRvdy50ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0Q1NTQ3VzdG9tRmlsdGVy
RW5hYmxlZCIsICIxIik7CisgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5vdmVycmlkZVBy
ZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxlZCIsICIxIik7CisgICAgICAgIH0KKyAgICA8L3Nj
cmlwdD4KKyAgICA8c3R5bGU+CisgICAgICAgIC5ib3ggeworICAgICAgICAgICAgaGVpZ2h0OiAx
MDBweDsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIG1hcmdpbjogMTBw
eDsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAgICAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgIH0KKworICAgICAgICAjY3VzdG9tLW1peC1zaW5n
bGUtdHJhbnNmb3JtLWJveCB7CisgICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogY3VzdG9t
LW1peC1zaW5nbGUtdHJhbnNmb3JtLWFuaW0gMnMgbGluZWFyOworICAgICAgICB9CisKKyAgICAg
ICAgI2N1c3RvbS1taXgtZGlmZmVyZW50LXRyYW5zZm9ybXMtYm94IHsKKyAgICAgICAgICAgIC13
ZWJraXQtYW5pbWF0aW9uOiBjdXN0b20tbWl4LWRpZmZlcmVudC10cmFuc2Zvcm1zLWFuaW0gMnMg
bGluZWFyOworICAgICAgICB9CisKKyAgICAgICAgI2N1c3RvbS1taXgtbXVsdGktdHJhbnNmb3Jt
LWJveCB7CisgICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogY3VzdG9tLW1peC1tdWx0aS10
cmFuc2Zvcm0tYW5pbSAycyBsaW5lYXI7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgQC13ZWJr
aXQta2V5ZnJhbWVzIGN1c3RvbS1taXgtc2luZ2xlLXRyYW5zZm9ybS1hbmltIHsKKyAgICAgICAg
ICAgIGZyb20geyAtd2Via2l0LWZpbHRlcjogY3VzdG9tKHVybChuby1zaGFkZXItbmVlZGVkLnZz
KSwgdHJhbnNmb3JtIHNjYWxlKDApKTsgfQorICAgICAgICAgICAgdG8gICB7IC13ZWJraXQtZmls
dGVyOiBjdXN0b20odXJsKG5vLXNoYWRlci1uZWVkZWQudnMpLCB0cmFuc2Zvcm0gc2NhbGUoMzAp
KTsgfQorICAgICAgICB9CisKKyAgICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGN1c3RvbS1taXgt
ZGlmZmVyZW50LXRyYW5zZm9ybXMtYW5pbSB7CisgICAgICAgICAgICBmcm9tIHsgLXdlYmtpdC1m
aWx0ZXI6IGN1c3RvbSh1cmwobm8tc2hhZGVyLW5lZWRlZC52cyksIHRyYW5zZm9ybSBzY2FsZSgx
MDApIHJvdGF0ZSgwZGVnKSk7IH0KKyAgICAgICAgICAgIHRvICAgeyAtd2Via2l0LWZpbHRlcjog
Y3VzdG9tKHVybChuby1zaGFkZXItbmVlZGVkLnZzKSwgdHJhbnNmb3JtIHJvdGF0ZSgwZGVnKSBz
Y2FsZSgxMDApKTsgfQorICAgICAgICB9CisKKyAgICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGN1
c3RvbS1taXgtbXVsdGktdHJhbnNmb3JtLWFuaW0geworICAgICAgICAgICAgZnJvbSB7IC13ZWJr
aXQtZmlsdGVyOiBjdXN0b20odXJsKG5vLXNoYWRlci1uZWVkZWQudnMpLCB0cmFuc2Zvcm0xIHNj
YWxlKDApLCB0cmFuc2Zvcm0yIHNjYWxlKDEwMCkgcm90YXRlKDBkZWcpKTsgfQorICAgICAgICAg
ICAgdG8gICB7IC13ZWJraXQtZmlsdGVyOiBjdXN0b20odXJsKG5vLXNoYWRlci1uZWVkZWQudnMp
LCB0cmFuc2Zvcm0xIHNjYWxlKDMwKSwgdHJhbnNmb3JtMiByb3RhdGUoMGRlZykgc2NhbGUoMTAw
KSk7IH0KKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9jdXN0b20tZmlsdGVyLXBhcnNlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2FuaW1hdGlvbnMvcmVzb3VyY2VzL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAg
Y29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAgICAgICAgICAvLyBbYW5pbWF0aW9uLW5hbWUs
IHRpbWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBleHBlY3RlZC12YWx1ZSwgdG9sZXJhbmNlXQor
ICAgICAgICAgICAgWyJjdXN0b20tbWl4LXNpbmdsZS10cmFuc2Zvcm0tYW5pbSIsICAxLCAiY3Vz
dG9tLW1peC1zaW5nbGUtdHJhbnNmb3JtLWJveCIsICJ3ZWJraXRGaWx0ZXIiLCAnY3VzdG9tKHVy
bChuby1zaGFkZXItbmVlZGVkLnZzKSBub25lLCAxIDEgZmlsdGVyLWJveCwgdHJhbnNmb3JtIG1h
dHJpeCgxNSwgMCwgMCwgMTUsIDAsIDApKScsIDJdLAorICAgICAgICAgICAgWyJjdXN0b20tbWl4
LWRpZmZlcmVudC10cmFuc2Zvcm1zLWFuaW0iLCAgMSwgImN1c3RvbS1taXgtZGlmZmVyZW50LXRy
YW5zZm9ybXMtYm94IiwgIndlYmtpdEZpbHRlciIsICdjdXN0b20odXJsKG5vLXNoYWRlci1uZWVk
ZWQudnMpIG5vbmUsIDEgMSBmaWx0ZXItYm94LCB0cmFuc2Zvcm0gbWF0cml4KDEwMCwgMCwgMCwg
MTAwLCAwLCAwKSknLCAwXSwKKyAgICAgICAgICAgIFsiY3VzdG9tLW1peC1tdWx0aS10cmFuc2Zv
cm0tYW5pbSIsICAxLCAiY3VzdG9tLW1peC1tdWx0aS10cmFuc2Zvcm0tYm94IiwgIndlYmtpdEZp
bHRlciIsICdjdXN0b20odXJsKG5vLXNoYWRlci1uZWVkZWQudnMpIG5vbmUsIDEgMSBmaWx0ZXIt
Ym94LCB0cmFuc2Zvcm0xIG1hdHJpeCgxNSwgMCwgMCwgMTUsIDAsIDApLCB0cmFuc2Zvcm0yIG1h
dHJpeCgxMDAsIDAsIDAsIDEwMCwgMCwgMCkpJywgMi41XSwKKyAgICAgICAgXTsKKyAgICAgICAg
cnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcyk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJib3giIGlkPSJjdXN0b20tbWl4LXNpbmdsZS10cmFu
c2Zvcm0tYm94Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJib3giIGlkPSJjdXN0b20tbWl4LWRp
ZmZlcmVudC10cmFuc2Zvcm1zLWJveCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iYm94IiBpZD0i
Y3VzdG9tLW1peC1tdWx0aS10cmFuc2Zvcm0tYm94Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJyZXN1
bHQiPgorICAgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY3NzMy9maWx0ZXJzL3Jlc291cmNlcy9jdXN0b20tZmlsdGVyLXBhcnNlci5qcyBiL0xheW91
dFRlc3RzL2NzczMvZmlsdGVycy9yZXNvdXJjZXMvY3VzdG9tLWZpbHRlci1wYXJzZXIuanMKaW5k
ZXggOGEzMGI2Mi4uYjhlMjQ4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJz
L3Jlc291cmNlcy9jdXN0b20tZmlsdGVyLXBhcnNlci5qcworKysgYi9MYXlvdXRUZXN0cy9jc3Mz
L2ZpbHRlcnMvcmVzb3VyY2VzL2N1c3RvbS1maWx0ZXItcGFyc2VyLmpzCkBAIC04Niw3ICs4Niw3
IEBAIFRva2VuU3RyZWFtLnByb3RvdHlwZS5haGVhZCA9IGZ1bmN0aW9uKCkKIC8vIFNraXBzIHRo
ZSBjdXJyZW50IHRva2VuIG9ubHkgaWYgaXQgbWF0Y2hlcyB0aGUgInR5cGVNYXRjaGVyIi4gT3Ro
ZXJ3aXNlIGl0IHRocm93cyBhbiBlcnJvci4KIFRva2VuU3RyZWFtLnByb3RvdHlwZS5za2lwID0g
ZnVuY3Rpb24odHlwZU1hdGNoZXIpCiB7Ci0gICAgaWYgKCF0eXBlTWF0Y2hlciB8fCB0aGlzLmFo
ZWFkKCkuaXNBKHR5cGVNYXRjaGVyKSkgeworICAgIGlmICghdHlwZU1hdGNoZXIgfHwgdGhpcy5j
dXJyZW50KCkuaXNBKHR5cGVNYXRjaGVyKSkgewogICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLmN1
cnJlbnQoKTsKICAgICAgICAgKyt0aGlzLnRva2VuSW5kZXg7CiAgICAgICAgIHJldHVybiB0b2tl
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA3MzQ5N2U1Li5jZTRmNGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTAgQEAKKzIwMTItMDktMTEgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29t
PgorCisgICAgICAgIFtDU1MgU2hhZGVyc10gSW1wbGVtZW50IHRyYW5zZm9ybSBwYXJhbWV0ZXIg
YW5pbWF0aW9ucyBmb3IgQ1NTIEN1c3RvbSBGaWx0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDk4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2VkIG9uIHBhdGNoIGZyb20gSm9zaHVhIE5ldHRl
cmZpZWxkIDxqbmV0dGVyZmllbGRAcmltLmNvbT4uCisKKyAgICAgICAgQWNjb3JkaW5nIHRvIFNl
Y3Rpb24gMzkuMiBvZiBGaWx0ZXIgRWZmZWN0cyAxLjAgRWRpdG9yJ3MgZHJhZnQKKyAgICAgICAg
KGh0dHBzOi8vZHZjcy53My5vcmcvaGcvRlhURi9yYXctZmlsZS90aXAvZmlsdGVycy9pbmRleC5o
dG1sKSwgYW5pbWF0aW9ucworICAgICAgICBvZiB0cmFuc2Zvcm1zIHNob3VsZCBiZSBoYW5kbGVk
IGZvbGxvd2luZyB0aGUgQ1NTMyB0cmFuc2Zvcm0gaW50ZXJwb2xhdGlvbgorICAgICAgICBydWxl
cy4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoaXMgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBU
ZXN0OiBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItdHJhbnNmb3Jtcy1hbmltYXRp
b24uaHRtbAorCisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFy
YW1ldGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI6
OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
ck9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEN1c3RvbUZpbHRlclBhcmFt
ZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpibGVuZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
T3BlcmF0aW9uOjpibGVuZGluZ05lZWRzUmVuZGVyZXJTaXplKTogU29tZSBmaWx0ZXJzIG5lZWQg
dGhlIGJveCBzaXplLCBzbyB0aGF0IHRoZXkgY291bGQgY29tcHV0ZQorICAgICAgICBUcmFuc2Zv
cm1zLiBSaWdodCBub3cgb25seSB0aGUgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uIG5lZWRzIHRoYXQs
IGJ1dCBJJ3ZlIGltcGxlbWVudGVkIHVzaW5nIHRoaXMgZ2VuZXJpYyBmdW5jdGlvbi4KKyAgICAg
ICAgKEN1c3RvbUZpbHRlck9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0ZXIuaDoKKyAgICAgICAgKEN1c3RvbUZpbHRlclBh
cmFtZXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIuaDoKKyAgICAgICAgKEN1c3RvbUZpbHRlclRyYW5zZm9ybVBh
cmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0
ZXI6OmJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uOjpGaWx0ZXJPcGVy
YXRpb246OmJsZW5kKToKKyAgICAgICAgKEZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJPcGVyYXRpb246OkZpbHRlck9wZXJhdGlvbjo6YmxlbmRpbmdOZWVkc1JlbmRl
cmVyU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1PcGVyYXRpb25zLmNwcDogRXh0cmFjdGVkIHRoZSBibGVuZGluZyBmdW5jdGlvbnMgZnJvbSBD
U1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKyAgICAgICAgc28gdGhhdCB0aGV5IGNvdWxkIGJlIHJl
dXNlZCBmcm9tIG90aGVyIGNsYXNzZXMuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1PcGVy
YXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmRVc2luZ01hdHJpY2Vz
SW50ZXJwb2xhdGlvbik6IFVzZWQgd2hlbiB0aGUgVHJhbnNmb3JtT3BlcmF0aW9ucyBkbyBub3Qg
bWF0Y2guCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZCk6IFVz
ZXMgd2hlbiB0aGUgY2FsbGVyIGRvZXNuJ3Qga25vdyB3aGV0aGVyIHRoZSBUcmFuc2Zvcm1PcGVy
YXRpb25zIG1hdGNoIG9yIG5vdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaDoKKyAgICAgICAgKFRyYW5zZm9ybU9wZXJhdGlvbnMp
OgorCiAyMDEyLTA5LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbVjhdIFY4SFRNTERvY3VtZW50Ojp3cml0ZSBhbmQgZnJpZW5kcyBzaG91bGQgbm90IGlu
ZGlyZWN0IHRocm91Z2ggRnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCBmNDQyNzU1Li40NDdkZmFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1h
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlB
bmltYXRpb24uY3BwCkBAIC0xMjAsNDQgKzEyMCwyMiBAQCBzdGF0aWMgaW5saW5lIFBhc3NPd25Q
dHI8U2hhZG93RGF0YT4gYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0
CiAKIHN0YXRpYyBpbmxpbmUgVHJhbnNmb3JtT3BlcmF0aW9ucyBibGVuZEZ1bmMoY29uc3QgQW5p
bWF0aW9uQmFzZSogYW5pbSwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSwgY29uc3Qg
VHJhbnNmb3JtT3BlcmF0aW9ucyYgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKLSAgICBUcmFuc2Zv
cm1PcGVyYXRpb25zIHJlc3VsdDsKLQotICAgIC8vIElmIHdlIGhhdmUgYSB0cmFuc2Zvcm0gZnVu
Y3Rpb24gbGlzdCwgdXNlIHRoYXQgdG8gZG8gYSBwZXItZnVuY3Rpb24gYW5pbWF0aW9uLiBPdGhl
cndpc2UgZG8gYSBNYXRyaXggYW5pbWF0aW9uCi0gICAgaWYgKGFuaW0tPmlzVHJhbnNmb3JtRnVu
Y3Rpb25MaXN0VmFsaWQoKSkgewotICAgICAgICB1bnNpZ25lZCBmcm9tU2l6ZSA9IGZyb20ub3Bl
cmF0aW9ucygpLnNpemUoKTsKLSAgICAgICAgdW5zaWduZWQgdG9TaXplID0gdG8ub3BlcmF0aW9u
cygpLnNpemUoKTsKLSAgICAgICAgdW5zaWduZWQgc2l6ZSA9IG1heChmcm9tU2l6ZSwgdG9TaXpl
KTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAg
ICAgICAgUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gZnJvbU9wID0gKGkgPCBmcm9tU2l6ZSkg
PyBmcm9tLm9wZXJhdGlvbnMoKVtpXS5nZXQoKSA6IDA7Ci0gICAgICAgICAgICBSZWZQdHI8VHJh
bnNmb3JtT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUpID8gdG8ub3BlcmF0aW9ucygpW2ld
LmdldCgpIDogMDsKLSAgICAgICAgICAgIFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5k
ZWRPcCA9IHRvT3AgPyB0b09wLT5ibGVuZChmcm9tT3AuZ2V0KCksIHByb2dyZXNzKSA6IChmcm9t
T3AgPyBmcm9tT3AtPmJsZW5kKDAsIHByb2dyZXNzLCB0cnVlKSA6IFBhc3NSZWZQdHI8VHJhbnNm
b3JtT3BlcmF0aW9uPigwKSk7Ci0gICAgICAgICAgICBpZiAoYmxlbmRlZE9wKQotICAgICAgICAg
ICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcCk7Ci0gICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBpZGVu
dGl0eU9wID0gSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgpOwotICAgICAgICAg
ICAgICAgIGlmIChwcm9ncmVzcyA+IDAuNSkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm9w
ZXJhdGlvbnMoKS5hcHBlbmQodG9PcCA/IHRvT3AgOiBpZGVudGl0eU9wKTsKLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5k
KGZyb21PcCA/IGZyb21PcCA6IGlkZW50aXR5T3ApOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gQ29udmVydCB0aGUgVHJhbnNmb3JtT3BlcmF0aW9u
cyBpbnRvIG1hdHJpY2VzCi0gICAgICAgIExheW91dFNpemUgc2l6ZSA9IGFuaW0tPnJlbmRlcmVy
KCktPmlzQm94KCkgPyB0b1JlbmRlckJveChhbmltLT5yZW5kZXJlcigpKS0+Ym9yZGVyQm94UmVj
dCgpLnNpemUoKSA6IExheW91dFNpemUoKTsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
ZnJvbVQ7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRvVDsKLSAgICAgICAgZnJvbS5h
cHBseShzaXplLCBmcm9tVCk7Ci0gICAgICAgIHRvLmFwcGx5KHNpemUsIHRvVCk7Ci0KLSAgICAg
ICAgdG9ULmJsZW5kKGZyb21ULCBwcm9ncmVzcyk7CisgICAgaWYgKGFuaW0tPmlzVHJhbnNmb3Jt
RnVuY3Rpb25MaXN0VmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHRvLmJsZW5kQnlNYXRjaGluZ09w
ZXJhdGlvbnMoZnJvbSwgcHJvZ3Jlc3MpOworICAgIHJldHVybiB0by5ibGVuZFVzaW5nTWF0cmlj
ZXNJbnRlcnBvbGF0aW9uKGZyb20sIHByb2dyZXNzLCBhbmltLT5yZW5kZXJlcigpLT5pc0JveCgp
ID8gdG9SZW5kZXJCb3goYW5pbS0+cmVuZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKS5zaXplKCkg
OiBMYXlvdXRTaXplKCkpOworfQogCi0gICAgICAgIC8vIEFwcGVuZCB0aGUgcmVzdWx0Ci0gICAg
ICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9u
OjpjcmVhdGUodG9UKSk7CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2Uq
IGFuaW0sIEZpbHRlck9wZXJhdGlvbiogZnJvbU9wLCBGaWx0ZXJPcGVyYXRpb24qIHRvT3AsIGRv
dWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkKK3sKKyAgICBB
U1NFUlQodG9PcCk7CisgICAgaWYgKHRvT3AtPmJsZW5kaW5nTmVlZHNSZW5kZXJlclNpemUoKSkg
eworICAgICAgICBMYXlvdXRTaXplIHNpemUgPSBhbmltLT5yZW5kZXJlcigpLT5pc0JveCgpID8g
dG9SZW5kZXJCb3goYW5pbS0+cmVuZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKS5zaXplKCkgOiBM
YXlvdXRTaXplKCk7CisgICAgICAgIHJldHVybiB0b09wLT5ibGVuZChmcm9tT3AsIHByb2dyZXNz
LCBzaXplLCBibGVuZFRvUGFzc3Rocm91Z2gpOwogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgIHJldHVybiB0b09wLT5ibGVuZChmcm9tT3AsIHByb2dyZXNzLCBibGVuZFRvUGFzc3Rocm91
Z2gpOwogfQogCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQogc3RhdGljIGlubGluZSBGaWx0ZXJP
cGVyYXRpb25zIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBmcm9tLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB0bywgZG91YmxlIHBy
b2dyZXNzKQogewogICAgIEZpbHRlck9wZXJhdGlvbnMgcmVzdWx0OwpAQCAtMTcwLDcgKzE0OCw3
IEBAIHN0YXRpYyBpbmxpbmUgRmlsdGVyT3BlcmF0aW9ucyBibGVuZEZ1bmMoY29uc3QgQW5pbWF0
aW9uQmFzZSogYW5pbSwgY29uc3QgRmlsdGVyCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBmcm9t
T3AgPSAoaSA8IGZyb21TaXplKSA/IGZyb20ub3BlcmF0aW9ucygpW2ldLmdldCgpIDogMDsKICAg
ICAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IHRvT3AgPSAoaSA8IHRvU2l6ZSkgPyB0
by5vcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOwotICAgICAgICAgICAgUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gYmxlbmRlZE9wID0gdG9PcCA/IHRvT3AtPmJsZW5kKGZyb21PcC5nZXQoKSwgcHJv
Z3Jlc3MpIDogKGZyb21PcCA/IGZyb21PcC0+YmxlbmQoMCwgcHJvZ3Jlc3MsIHRydWUpIDogUGFz
c1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+KDApKTsKKyAgICAgICAgICAgIFJlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IGJsZW5kZWRPcCA9IHRvT3AgPyBibGVuZEZ1bmMoYW5pbSwgZnJvbU9wLmdldCgp
LCB0b09wLmdldCgpLCBwcm9ncmVzcykgOiAoZnJvbU9wID8gYmxlbmRGdW5jKGFuaW0sIDAsIGZy
b21PcC5nZXQoKSwgcHJvZ3Jlc3MsIHRydWUpIDogUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+
KDApKTsKICAgICAgICAgICAgIGlmIChibGVuZGVkT3ApCiAgICAgICAgICAgICAgICAgcmVzdWx0
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoYmxlbmRlZE9wKTsKICAgICAgICAgICAgIGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyLmgKaW5kZXggMjc3MGI0Yy4uNDIz
ZWY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oCkBAIC00
OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkVmFsdWUoZG91YmxlIHZhbHVlKSB7
IG1fZGF0YS5hcHBlbmQodmFsdWUpOyB9CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1
c3RvbUZpbHRlclBhcmFtZXRlcj4gYmxlbmQoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiBm
cm9tLCBkb3VibGUgcHJvZ3Jlc3MpCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRl
clBhcmFtZXRlcj4gYmxlbmQoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmKQogICAgIHsKICAgICAgICAgaWYgKCFmcm9t
IHx8ICFpc1NhbWVUeXBlKCpmcm9tKSkKICAgICAgICAgICAgIHJldHVybiB0aGlzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwCmluZGV4IGY1YzgxNzIuLmVkNTdiNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmls
dGVyT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHAKQEAgLTY0LDcgKzY0LDggQEAgc3RhdGlj
IGJvb2wgY2hlY2tDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzT3JkZXIoY29uc3QgQ3VzdG9tRmlsdGVy
UGFyYW1ldGVyTGlzdCYgcGEKIH0KICNlbmRpZgogCi12b2lkIGJsZW5kQ3VzdG9tRmlsdGVyUGFy
YW1ldGVycyhjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBmcm9tTGlzdCwgY29uc3Qg
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgdG9MaXN0LCBkb3VibGUgcHJvZ3Jlc3MsIEN1c3Rv
bUZpbHRlclBhcmFtZXRlckxpc3QmIHJlc3VsdExpc3QpCit2b2lkIGJsZW5kQ3VzdG9tRmlsdGVy
UGFyYW1ldGVycyhjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBmcm9tTGlzdCwgY29u
c3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgdG9MaXN0LCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwg
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgcmVzdWx0TGlzdCkKIHsKICAgICAvLyBUaGlzIG1l
dGhvZCBleHBlY3RzIGJvdGggbGlzdHMgdG8gYmUgc29ydGVkIGJ5IHBhcmFtZXRlciBuYW1lIGFu
ZCB0aGUgcmVzdWx0IGxpc3QgaXMgYWxzbyBzb3J0ZWQuCiAgICAgQVNTRVJUKGNoZWNrQ3VzdG9t
RmlsdGVyUGFyYW1ldGVyc09yZGVyKGZyb21MaXN0KSk7CkBAIC03NCw3ICs3NSw3IEBAIHZvaWQg
YmxlbmRDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxp
c3QmIGZyb21MaXN0LCBjb25zCiAgICAgICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlciogcGFyYW1G
cm9tID0gZnJvbUxpc3QuYXQoZnJvbUxpc3RJbmRleCkuZ2V0KCk7CiAgICAgICAgIEN1c3RvbUZp
bHRlclBhcmFtZXRlciogcGFyYW1UbyA9IHRvTGlzdC5hdCh0b0xpc3RJbmRleCkuZ2V0KCk7CiAg
ICAgICAgIGlmIChwYXJhbUZyb20tPm5hbWUoKSA9PSBwYXJhbVRvLT5uYW1lKCkpIHsKLSAgICAg
ICAgICAgIHJlc3VsdExpc3QuYXBwZW5kKHBhcmFtVG8tPmJsZW5kKHBhcmFtRnJvbSwgcHJvZ3Jl
c3MpKTsKKyAgICAgICAgICAgIHJlc3VsdExpc3QuYXBwZW5kKHBhcmFtVG8tPmJsZW5kKHBhcmFt
RnJvbSwgcHJvZ3Jlc3MsIHNpemUpKTsKICAgICAgICAgICAgICsrZnJvbUxpc3RJbmRleDsKICAg
ICAgICAgICAgICsrdG9MaXN0SW5kZXg7CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTExMSw3
ICsxMTIsNyBAQCBDdXN0b21GaWx0ZXJPcGVyYXRpb246On5DdXN0b21GaWx0ZXJPcGVyYXRpb24o
KQogewogfQogCi1QYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywg
Ym9vbCBibGVuZFRvUGFzc3Rocm91Z2gpCitQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwgYm9vbCBibGVuZFRvUGFzc3Ro
cm91Z2gpCiB7CiAgICAgLy8gRklYTUU6IFRoZXJlJ3Mgbm8gd2F5IHRvIGRlY2lkZSB3aGF0IGlz
IHRoZSAicGFzc3Rocm91Z2ggZmlsdGVyIiBmb3Igc2hhZGVycyB1c2luZyB0aGUgY3VycmVudCBD
U1MgU3ludGF4LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04NDkwMwpAQCAtMTI4LDcgKzEyOSw3IEBAIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBD
dXN0b21GaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbioKICAgICAg
ICAgcmV0dXJuIHRoaXM7CiAgICAgCiAgICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCBhbmlt
YXRlZFBhcmFtZXRlcnM7Ci0gICAgYmxlbmRDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzKGZyb21PcC0+
bV9wYXJhbWV0ZXJzLCBtX3BhcmFtZXRlcnMsIHByb2dyZXNzLCBhbmltYXRlZFBhcmFtZXRlcnMp
OworICAgIGJsZW5kQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyhmcm9tT3AtPm1fcGFyYW1ldGVycywg
bV9wYXJhbWV0ZXJzLCBwcm9ncmVzcywgc2l6ZSwgYW5pbWF0ZWRQYXJhbWV0ZXJzKTsKICAgICBy
ZXR1cm4gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobV9wcm9ncmFtLCBhbmltYXRlZFBh
cmFtZXRlcnMsIG1fbWVzaFJvd3MsIG1fbWVzaENvbHVtbnMsIG1fbWVzaEJveFR5cGUsIG1fbWVz
aFR5cGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAppbmRleCBiNGU4YjI5
Li43ODhiM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTMzLDYgKzMz
LDcgQEAKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJv
Z3JhbS5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIkxheW91dFR5
cGVzLmgiCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDQsNyArNDUs
OCBAQCBjbGFzcyBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI7CiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiA+IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3Q7CiAKIGJv
b2wgY3VzdG9tRmlsdGVyUGFyYW1ldGVyc0VxdWFsKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRl
ckxpc3QmLCBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0Jik7Ci12b2lkIGJsZW5kQ3Vz
dG9tRmlsdGVyUGFyYW1ldGVycyhjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBsaXN0
RnJvbSwgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgbGlzdFRvLCBkb3VibGUgcHJv
Z3Jlc3MsIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHJlc3VsdExpc3QpOwordm9pZCBibGVu
ZEN1c3RvbUZpbHRlclBhcmFtZXRlcnMoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYg
bGlzdEZyb20sIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIGxpc3RUbywgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91
dFNpemUmLCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiByZXN1bHRMaXN0KTsKIAogY2xhc3Mg
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJsaWM6
CkBAIC03OSw4ICs4MSw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgYWZmZWN0
c09wYWNpdHkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIG1vdmVz
UGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBibGVuZGlu
Z05lZWRzUmVuZGVyZXJTaXplKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJh
dGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZh
bHNlKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25z
dCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgTGF5b3V0U2l6
ZSYsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpOwogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0CiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJQYXJhbWV0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUGFyYW1ldGVyLmgKaW5kZXggODI5ODBkNi4uODFlNWY4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJQYXJhbWV0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRlci5oCkBAIC01Niw3ICs1Niw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICBib29sIGlzU2FtZVR5cGUoY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVy
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gcGFyYW1ldGVyVHlwZSgpID09IG90aGVyLnBhcmFtZXRl
clR5cGUoKTsgfQogICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJh
bWV0ZXI+IGJsZW5kKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciosIGRvdWJsZSBwcm9ncmVz
cykgPSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJhbWV0ZXI+IGJs
ZW5kKGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciosIGRvdWJsZSBwcm9ncmVzcywgY29uc3Qg
TGF5b3V0U2l6ZSYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0
b21GaWx0ZXJQYXJhbWV0ZXImKSBjb25zdCA9IDA7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IEN1c3RvbUZpbHRlclBhcmFtZXRlciYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsg
fQogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1l
dGVyLmgKaW5kZXggYmQ2NmNlYy4uYTQ4NGMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlclRyYW5zZm9ybVBhcmFtZXRlci5oCkBAIC00NiwxNCArNDYsMjYgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJh
bWV0ZXIobmFtZSkpOwogICAgIH0KLSAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3VzdG9t
RmlsdGVyUGFyYW1ldGVyPiBibGVuZChjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqLCBkb3Vi
bGUpCisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBibGVu
ZChjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIqIGZyb21QYXJhbWV0ZXIsIGRvdWJsZSBwcm9n
cmVzcywgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgYW5pbWF0aW9ucyBzdXBwb3J0LgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ5ODAKLSAgICAgICAgcmV0dXJuIHRoaXM7CisgICAg
ICAgIGlmICghZnJvbVBhcmFtZXRlciB8fCAhaXNTYW1lVHlwZSgqZnJvbVBhcmFtZXRlcikpCisg
ICAgICAgICAgICByZXR1cm4gdGhpczsKKworICAgICAgICBjb25zdCBDdXN0b21GaWx0ZXJUcmFu
c2Zvcm1QYXJhbWV0ZXIqIGZyb21UcmFuc2Zvcm1QYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxjb25z
dCBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIqPihmcm9tUGFyYW1ldGVyKTsKKyAgICAg
ICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSA9IGZyb21UcmFuc2Zvcm1QYXJhbWV0
ZXItPm9wZXJhdGlvbnMoKTsKKyAgICAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdG8g
PSBvcGVyYXRpb25zKCk7CisgICAgICAgIGlmIChmcm9tID09IHRvKQorICAgICAgICAgICAgcmV0
dXJuIHRoaXM7CisgICAgICAgCisgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJUcmFuc2Zvcm1Q
YXJhbWV0ZXI+IHJldCA9IEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcjo6Y3JlYXRlKG5h
bWUoKSk7CisgICAgICAgIGlmIChmcm9tLnNpemUoKSAmJiB0by5zaXplKCkpCisgICAgICAgICAg
ICByZXQtPnNldE9wZXJhdGlvbnModG8uYmxlbmQoZnJvbSwgcHJvZ3Jlc3MsIHNpemUpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcmV0LT5zZXRPcGVyYXRpb25zKHByb2dyZXNzID4gMC41
ID8gdG8gOiBmcm9tKTsKKyAgICAgICAgcmV0dXJuIHJldDsKICAgICB9Ci0gICAgCisKICAgICB2
aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXImIG8pIGNv
bnN0CiAgICAgewogICAgICAgICBpZiAoIWlzU2FtZVR5cGUobykpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24u
aAppbmRleCBlNzI2MDBjLi42ZDI1MDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTI5LDYg
KzI5LDcgQEAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAKICNpbmNsdWRlICJDb2xvci5oIgor
I2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC03OCw3ICs3OSwx
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3Bl
cmF0aW9uJikgY29uc3QgPSAwOwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWx0ZXJPcGVy
YXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIAotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiog
Lypmcm9tKi8sIGRvdWJsZSAvKnByb2dyZXNzKi8sIGJvb2wgLypibGVuZFRvUGFzc3Rocm91Z2gq
LyA9IGZhbHNlKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiAvKmZyb20qLywgZG91YmxlIC8q
cHJvZ3Jlc3MqLywgYm9vbCAvKmJsZW5kVG9QYXNzdGhyb3VnaCovID0gZmFsc2UpCisgICAgeyAK
KyAgICAgICAgQVNTRVJUKCFibGVuZGluZ05lZWRzUmVuZGVyZXJTaXplKCkpOworICAgICAgICBy
ZXR1cm4gMDsgCisgICAgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiAvKmZyb20qLywgZG91YmxlIC8qcHJvZ3Jl
c3MqLywgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgLypibGVuZFRvUGFzc3Rocm91Z2gqLyA9IGZh
bHNlKQorICAgIHsgCisgICAgICAgIEFTU0VSVChibGVuZGluZ05lZWRzUmVuZGVyZXJTaXplKCkp
OworICAgICAgICByZXR1cm4gMDsgCisgICAgfQogCiAgICAgdmlydHVhbCBPcGVyYXRpb25UeXBl
IGdldE9wZXJhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNTYW1lVHlwZShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJu
IG8uZ2V0T3BlcmF0aW9uVHlwZSgpID09IG1fdHlwZTsgfQpAQCAtODksNiArMTAwLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBhZmZlY3RzT3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgLy8gVHJ1ZSBpZiB0aGUgdGhlIHZhbHVlIG9mIG9uZSBwaXhlbCBjYW4gYWZm
ZWN0IHRoZSB2YWx1ZSBvZiBhbm90aGVyIHBpeGVsIHVuZGVyIHRoaXMgb3BlcmF0aW9uLCBzdWNo
IGFzIGJsdXIuCiAgICAgdmlydHVhbCBib29sIG1vdmVzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICAvLyBUcnVlIGlmIHRoZSBmaWx0ZXIgbmVlZHMgdGhlIHNpemUgb2YgdGhl
IGJveCBpbiBvcmRlciB0byBjYWxjdWxhdGUgdGhlIGFuaW1hdGlvbnMuCisgICAgdmlydHVhbCBi
b29sIGJsZW5kaW5nTmVlZHNSZW5kZXJlclNpemUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CiBwcm90ZWN0ZWQ6CiAgICAgRmlsdGVyT3BlcmF0aW9uKE9wZXJhdGlvblR5cGUgdHlwZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwCmluZGV4IGM5NDJhNjEuLjlkMWEzNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcApAQCAtMjMsNiArMjMsMTAg
QEAKICNpbmNsdWRlICJUcmFuc2Zvcm1PcGVyYXRpb25zLmgiCiAKICNpbmNsdWRlICJJZGVudGl0
eVRyYW5zZm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIk1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0
aW9uLmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYxLDQgKzY1LDU4IEBAIGJvb2wgVHJhbnNmb3JtT3Bl
cmF0aW9uczo6b3BlcmF0aW9uc01hdGNoKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIG90aGVy
KSBjb25zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1RyYW5zZm9ybU9wZXJhdGlvbnMgVHJhbnNm
b3JtT3BlcmF0aW9uczo6YmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyhjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb25zJiBmcm9tLCBjb25zdCBkb3VibGUmIHByb2dyZXNzKSBjb25zdAoreworICAgIFRy
YW5zZm9ybU9wZXJhdGlvbnMgcmVzdWx0OworCisgICAgdW5zaWduZWQgZnJvbVNpemUgPSBmcm9t
Lm9wZXJhdGlvbnMoKS5zaXplKCk7CisgICAgdW5zaWduZWQgdG9TaXplID0gb3BlcmF0aW9ucygp
LnNpemUoKTsKKyAgICB1bnNpZ25lZCBzaXplID0gbWF4KGZyb21TaXplLCB0b1NpemUpOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgUmVmUHRyPFRy
YW5zZm9ybU9wZXJhdGlvbj4gZnJvbU9wID0gKGkgPCBmcm9tU2l6ZSkgPyBmcm9tLm9wZXJhdGlv
bnMoKVtpXS5nZXQoKSA6IDA7CisgICAgICAgIFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IHRv
T3AgPSAoaSA8IHRvU2l6ZSkgPyBvcGVyYXRpb25zKClbaV0uZ2V0KCkgOiAwOworICAgICAgICBS
ZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZGVkT3AgPSB0b09wID8gdG9PcC0+YmxlbmQo
ZnJvbU9wLmdldCgpLCBwcm9ncmVzcykgOiAoZnJvbU9wID8gZnJvbU9wLT5ibGVuZCgwLCBwcm9n
cmVzcywgdHJ1ZSkgOiBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4oMCkpOworICAgICAg
ICBpZiAoYmxlbmRlZE9wKQorICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQo
YmxlbmRlZE9wKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBSZWZQdHI8VHJhbnNmb3Jt
T3BlcmF0aW9uPiBpZGVudGl0eU9wID0gSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0
ZSgpOworICAgICAgICAgICAgaWYgKHByb2dyZXNzID4gMC41KQorICAgICAgICAgICAgICAgIHJl
c3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKHRvT3AgPyB0b09wIDogaWRlbnRpdHlPcCk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQo
ZnJvbU9wID8gZnJvbU9wIDogaWRlbnRpdHlPcCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitUcmFuc2Zvcm1PcGVyYXRpb25zIFRyYW5zZm9ybU9wZXJhdGlv
bnM6OmJsZW5kVXNpbmdNYXRyaWNlc0ludGVycG9sYXRpb24oY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9ucyYgZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKSBjb25z
dAoreworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgcmVzdWx0OworCisgICAgLy8gQ29udmVydCB0
aGUgVHJhbnNmb3JtT3BlcmF0aW9ucyBpbnRvIG1hdHJpY2VzCisgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggZnJvbVQ7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdG9UOworICAgIGZyb20uYXBw
bHkoc2l6ZSwgZnJvbVQpOworICAgIGFwcGx5KHNpemUsIHRvVCk7CisKKyAgICB0b1QuYmxlbmQo
ZnJvbVQsIHByb2dyZXNzKTsKKworICAgIC8vIEFwcGVuZCB0aGUgcmVzdWx0CisgICAgcmVzdWx0
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSh0
b1QpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1RyYW5zZm9ybU9wZXJhdGlvbnMgVHJh
bnNmb3JtT3BlcmF0aW9uczo6YmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSwg
ZG91YmxlIHByb2dyZXNzLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKSBjb25zdAoreworICAgIGlm
IChmcm9tID09ICp0aGlzKQorICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAgICBpZiAoZnJvbS5z
aXplKCkgJiYgZnJvbS5vcGVyYXRpb25zTWF0Y2goKnRoaXMpKQorICAgICAgICByZXR1cm4gYmxl
bmRCeU1hdGNoaW5nT3BlcmF0aW9ucyhmcm9tLCBwcm9ncmVzcyk7CisKKyAgICByZXR1cm4gYmxl
bmRVc2luZ01hdHJpY2VzSW50ZXJwb2xhdGlvbihmcm9tLCBwcm9ncmVzcywgc2l6ZSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmgK
aW5kZXggZTIzNmUxMi4uN2FjMGQ0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9u
cy5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaWZuZGVmIFRyYW5zZm9ybU9wZXJhdGlvbnNfaAogI2Rl
ZmluZSBUcmFuc2Zvcm1PcGVyYXRpb25zX2gKIAorI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAj
aW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTcxLDYgKzcyLDEwIEBAIHB1YmxpYzoKICAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW9ucy5zaXplKCk7IH0KICAgICBj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGF0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4g
aW5kZXggPCBtX29wZXJhdGlvbnMuc2l6ZSgpID8gbV9vcGVyYXRpb25zLmF0KGluZGV4KS5nZXQo
KSA6IDA7IH0KIAorICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRCeU1hdGNoaW5nT3BlcmF0
aW9ucyhjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiwgY29uc3QgZG91YmxlJiBwcm9ncmVzcykg
Y29uc3Q7CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBibGVuZFVzaW5nTWF0cmljZXNJbnRlcnBv
bGF0aW9uKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGZyb20sIGRvdWJsZSBwcm9ncmVzcywg
Y29uc3QgTGF5b3V0U2l6ZSYpIGNvbnN0OworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmQo
Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSwgZG91YmxlIHByb2dyZXNzLCBjb25zdCBM
YXlvdXRTaXplJikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxUcmFuc2Zv
cm1PcGVyYXRpb24+ID4gbV9vcGVyYXRpb25zOwogfTsK
</data>
<flag name="review"
          id="174933"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>